diff --git a/build/browser/index.js b/build/browser/index.js index fd2e2c0d..c174c431 100644 --- a/build/browser/index.js +++ b/build/browser/index.js @@ -1,2 +1,2 @@ -(()=>{var e={d:(t,n)=>{for(var o in n)e.o(n,o)&&!e.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:n[o]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};(()=>{"use strict";function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function o(e,t){for(var n=0;nUm});var a=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),r(this,"feedbackButton",null),r(this,"injectedFeedbackButton",!1),r(this,"buttonHidden",null),r(this,"lastButtonIcon",null)}var t,n,i;return t=e,i=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],(n=[{key:"destroy",value:function(){this.feedbackButton&&(this.feedbackButton.remove(),this.feedbackButton=null),this.buttonHidden=null,this.lastButtonIcon=null,this.injectedFeedbackButton=!1,this.instance=null}},{key:"toggleFeedbackButton",value:function(t){this.buttonHidden=!t,e.getInstance().updateFeedbackButtonState(),Mh.getInstance().updateContainerStyle()}},{key:"feedbackButtonPressed",value:function(){var e=Vt.getInstance();e.isOpened()?e.hideWidget():(e.setAppMode("widget"),e.showWidget())}},{key:"injectFeedbackButton",value:function(){var e=this;if(!this.injectedFeedbackButton){this.injectedFeedbackButton=!0;var t=document.createElement("div");t.addEventListener("click",(function(){e.feedbackButtonPressed()})),document.body.appendChild(t),this.feedbackButton=t,this.updateFeedbackButtonState()}}},{key:"updateNotificationBadge",value:function(e){var t=document.querySelector(".bb-notification-bubble");if(t){var n="bb-notification-bubble--hidden";e>0&&!Vt.getInstance().isOpened()?(t.classList.remove(n),t.innerText=e):t.classList.add(n)}}},{key:"refresh",value:function(){document.querySelector(".bb-feedback-button")?(this.updateFeedbackButtonText(),this.updateFeedbackButtonState()):(this.injectedFeedbackButton=!1,this.feedbackButton=null,this.buttonHidden=null,this.lastButtonIcon=null,this.injectFeedbackButton())}},{key:"updateFeedbackButtonText",value:function(){var t=dt.getInstance().getFlowConfig();if(t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC||t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC_BOTTOM||t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC_LEFT){var n=document.querySelector(".bb-feedback-button-classic");n&&(n.innerText=t.widgetButtonText)}}},{key:"updateFeedbackButtonState",value:function(){if(null!==this.feedbackButton){var t=dt.getInstance().getFlowConfig(),n="";n=t.buttonLogo?''):p("button","#fff"),this.feedbackButton.className="bb-feedback-button gleap-font gl-block",this.feedbackButton.setAttribute("dir",gh.getInstance().isRTLLayout?"rtl":"ltr"),t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC||t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC_BOTTOM||t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC_LEFT?(this.feedbackButton.classList.add("bb-feedback-button--classic-button-style"),this.feedbackButton.innerHTML='
').concat(t.widgetButtonText,"
")):n!==this.lastButtonIcon&&(this.feedbackButton.innerHTML='
'.concat(n).concat(p("arrowdown","#fff"),'
')),this.lastButtonIcon=n;var o=!1;null===e.getInstance().buttonHidden?t.feedbackButtonPosition===e.FEEDBACK_BUTTON_NONE&&(o=!0):e.getInstance().buttonHidden&&(o=!0),o&&this.feedbackButton.classList.add("bb-feedback-button--disabled"),t.feedbackButtonPosition===e.FEEDBACK_BUTTON_BOTTOM_LEFT&&this.feedbackButton.classList.add("bb-feedback-button--bottomleft"),Vt.getInstance().isOpened()&&this.feedbackButton.classList.add("bb-feedback-button--open");var r=Vt.getInstance().appMode;"survey"!==r&&"survey_full"!==r&&"survey_web"!==r||this.feedbackButton.classList.add("bb-feedback-button--survey"),!0!==t.hideForGuests||et.getInstance().isUser()||this.feedbackButton.classList.add("bb-feedback-button--hidden")}}}])&&o(t.prototype,n),i&&o(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}();function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var o,r,i,a,s=[],l=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(o=i.call(n)).done)&&(s.push(o.value),s.length!==t);l=!0);}catch(e){c=!0,r=e}finally{try{if(!l&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(c)throw r}}return s}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return c(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return c(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n=160?"#000000":"#ffffff"},p=function(e,t){return"button"===e?'':"drag"===e?'\x3c!--!Font Awesome Pro 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2025 Fonticons, Inc.--\x3e':"unmute"===e?'':"mute"===e?'':"replay"===e?'\n \n ':"dismiss"===e?'':"blur"===e?'\n \n':"pen"===e?'\n \n \n \n \n \n \n \n \n \n \n \n \n':"rect"===e?'\n \n \n \n \n \n \n \n \n \n \n':"pointer"===e?'\n \n ':"clip"===e?'\n \n \n \n \n \n':"mic"===e?'\n \n \n \n \n ':"camera"===e?'\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n':"recorderon"===e?'\n \n \n \n \n \n \n \n \n \n \n \n':"recorderoff"===e?'\n \n \n \n \n \n \n \n \n ':"arrowdown"===e?'\n \n '):"arrowleft"===e?'\n \n '):"close"===e?'\n \n '):"undo"===e?'\n \n \n \n \n \n \n \n \n \n ':"circle-dot"===e?''):"circle-question"===e?''):"circle-info"===e?''):"circle-exclamation"===e?''):"circle-up"===e?''):"circle-right"===e?''):""};function h(e){return h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},h(e)}function f(e,t){for(var n=0;n0&&(e=e.concat(this.externalRequests)),this.filters&&this.filters.length>0)for(var t=0;t-1)&&!e.find((function(e){return e.url===s.name}))&&e.push({type:"RESOURCE",date:new Date(this.startTimestamp+s.startTime),url:s.name,duration:Math.round(s.duration),initiatorType:s.initiatorType})}}}catch(u){}var l=this.blacklist.concat(this.defaultBlacklist);if(l&&l.length>0)try{e=e.filter((function(e){for(var t=0;t70&&(e=70),this.maxRequests=e}},{key:"setStopped",value:function(e){this.stopped=e}},{key:"setFilters",value:function(e){this.filters=this.filters.concat(e||[])}},{key:"setBlacklist",value:function(e){this.blacklist=this.blacklist.concat(e||[])}},{key:"cleanRequests",value:function(){var e=Object.keys(this.requests);if(e.length>this.maxRequests)for(var t=e.slice(0,e.length-this.maxRequests),n=0;n.15?"":e}},{key:"cleanupPayload",value:function(e){if(null==e)return"{}";try{if(void 0!==("undefined"==typeof TextDecoder?"undefined":h(TextDecoder))&&ArrayBuffer.isView(e))return(new TextDecoder).decode(e)}catch(t){}return e}},{key:"preparePayload",value:function(e){var t=this.cleanupPayload(e);return this.cleanupContentSize(t)}},{key:"start",value:function(){var e=this;if(!this.initialized){this.initialized=!0;var t=this;this.interceptNetworkRequests({onFetch:function(n,o){if(!e.stopped&&o&&e.requests){if(n.length>0&&void 0!==n[0]&&void 0!==n[0].url)e.requests[o]={url:n[0].url,date:new Date,request:{payload:"",headers:void 0!==n[0].headers?Object.fromEntries(n[0].headers.entries()):{}},type:void 0!==n[0].method?n[0].method:""};else if(n.length>=2&&n[1]){var r=n[1]&&n[1].method?n[1].method:"GET";e.requests[o]={request:{payload:t.preparePayload(n[1].body),headers:n[1].headers},type:r,url:n[0],date:new Date}}else e.requests[o]={url:n[0],date:new Date};e.cleanRequests()}},onFetchLoad:function(n,o){if(!e.stopped&&o&&e.requests&&e.requests[o]){try{e.requests[o].success=!0,e.requests[o].response={status:n.status,statusText:"",responseText:""},e.calcRequestTime(o)}catch(i){}try{var r="";n.headers&&void 0!==n.headers.get&&(r=n.headers.get("content-type")),e.isContentTypeSupported(r)?n.text().then((function(r){e.requests[o]&&(e.requests[o].success=!0,e.requests[o].response={status:n.status,statusText:n.statusText,responseText:t.cleanupContentSize(r)}),e.calcRequestTime(o),e.cleanRequests()})).catch((function(t){e.cleanRequests()})):(e.requests[o]&&(e.requests[o].success=!0,e.requests[o].response={status:n.status,statusText:n.statusText,responseText:""}),e.calcRequestTime(o),e.cleanRequests())}catch(i){}}},onFetchFailed:function(t,n){!e.stopped&&n&&e.requests&&e.requests[n]&&(e.requests[n].success=!1,e.calcRequestTime(n),e.cleanRequests())},onOpen:function(t,n){e.stopped||(t&&t.bbRequestId&&n.length>=2&&e.requests&&(e.requests[t.bbRequestId]={type:n[0],url:n[1],date:new Date}),e.cleanRequests())},onSend:function(t,n){e.stopped||(t&&t.bbRequestId&&e.requests&&e.requests[t.bbRequestId]&&(e.requests[t.bbRequestId].request={payload:e.preparePayload(n.length>0?n[0]:"{}"),headers:t.requestHeaders}),e.cleanRequests())},onError:function(t,n){!e.stopped&&e.requests&&t&&t.currentTarget&&t.currentTarget.bbRequestId&&e.requests[t.currentTarget.bbRequestId]&&(e.requests[t.currentTarget.bbRequestId].success=!1,e.calcRequestTime(t.bbRequestId)),e.cleanRequests()},onLoad:function(t,n){if(!e.stopped){if(t&&t.currentTarget&&t.currentTarget.bbRequestId&&e.requests&&e.requests[t.currentTarget.bbRequestId]){var o=t.currentTarget,r=o.responseType,i="<"+r+">";""!==r&&"text"!==r||(i=e.cleanupContentSize(o.responseText)),e.requests[o.bbRequestId].success=!0,e.requests[o.bbRequestId].response={status:o.status,statusText:o.statusText,responseText:i},e.calcRequestTime(o.bbRequestId)}e.cleanRequests()}}})}}},{key:"interceptNetworkRequests",value:function(e){var t,n=this,o=XMLHttpRequest.prototype.open,r=XMLHttpRequest.prototype.send;return void 0===XMLHttpRequest.prototype.gleapSetRequestHeader&&(XMLHttpRequest.prototype.gleapSetRequestHeader=XMLHttpRequest.prototype.setRequestHeader),XMLHttpRequest.prototype.gleapSetRequestHeader&&(XMLHttpRequest.prototype.setRequestHeader=function(e,t){this.requestHeaders||(this.requestHeaders={}),this.requestHeaders&&this.requestHeaders.hasOwnProperty(e)||(this.requestHeaders[e]||(this.requestHeaders[e]=[]),this.requestHeaders[e].push(t),this.gleapSetRequestHeader(e,t))}),XMLHttpRequest.prototype.open=function(){return this.bbRequestId=++n.requestId,e.onOpen&&e.onOpen(this,arguments),e.onLoad&&this.addEventListener("load",e.onLoad.bind(e)),e.onError&&this.addEventListener("error",e.onError.bind(e)),o.apply(this,arguments)},XMLHttpRequest.prototype.send=function(){return e.onSend&&e.onSend(this,arguments),r.apply(this,arguments)},window.fetch&&(t=window.fetch,window.fetch=function(){var o=++n.requestId;return e.onFetch(arguments,o),t.apply(this,arguments).then((function(t){if(t&&"function"==typeof t.clone){var n=t.clone();e.onFetchLoad(n,o)}return t})).catch((function(t){throw e.onFetchFailed(t,o),t}))}),e}},{key:"blobToTextPromise",value:function(e){return new Promise((function(t,n){var o=new FileReader;o.onload=function(e){e&&e.target&&e.target.result?t(e.target.result):n()},o.onerror=function(e){n(e)},o.readAsText(e)}))}}],o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],n&&f(t.prototype,n),o&&f(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();m(v,"instance",void 0);const y=v;var b=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:400,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:400;return new Promise((function(o,r){var i=0===e.indexOf("data:image/jpeg"),a=new Image;a.src=e,a.onerror=function(){r()},a.onload=function(){var e=document.createElement("canvas"),r=t,s=n;t>a.width/1.5&&(r=a.width/1.5),n>a.height/1.5&&(s=a.height/1.5);var l=a.width,c=a.height;l>c?l>r&&(c*=r/l,l=r):c>s&&(l*=s/c,c=s),e.width=l,e.height=c,e.getContext("2d").drawImage(a,0,0,l,c),o(i?e.toDataURL("image/jpeg",.7):e.toDataURL())}}))},w=function(){return!(!/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(navigator.userAgent)&&!/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(navigator.userAgent.substr(0,4)))},k=function(e){if("string"==typeof e||e instanceof String)try{return JSON.parse(e)}catch(t){return{}}return e},x=function(e,t){return e.length>t?e.slice(0,t)+"...":e},S=function(e){try{var t=e.split("."),n=!1,o=t[t.length-2];return"co"!==o&&"com"!==o&&"gv"!==o&&"ac"!==o&&"edu"!==o&&"gov"!==o&&"mil"!==o&&"net"!==o&&"org"!==o||(n=!0),(t=t.slice(n?-3:-2)).join(".")}catch(r){}return e},C=function(e){try{var t=localStorage.getItem("gleap-widget-".concat(e));if(t)return JSON.parse(t)}catch(n){}return null},I=function(e,t){var n="gleap-widget-".concat(e);if(t)try{localStorage.setItem(n,JSON.stringify(t))}catch(o){}else localStorage.removeItem(n)},O=function(e){"complete"===document.readyState||"loaded"===document.readyState||"interactive"===document.readyState?e():document.addEventListener("DOMContentLoaded",(function(){e()}))};function E(e){return E="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},E(e)}function T(e,t){for(var n=0;n=200&&i.status<300)try{var e=i.responseText?JSON.parse(i.responseText):null;o(e)}catch(t){r({status:i.status,statusText:"JSON Parse Error",responseText:i.responseText,error:t})}else r({status:i.status,statusText:i.statusText,responseText:i.responseText})},i.onerror=function(){r({status:0,statusText:"Network Error",responseText:null})},i.send(n?JSON.stringify(n):null)}))}},{key:"_createCacheKey",value:function(e,t){return t?"".concat(e,"::").concat(t):e}},{key:"validateChecklist",value:function(e,t){var n=this,o=this._createCacheKey(e,t),r=this.validationCache.get(o);if(r)return r.status===M?Promise.resolve(r.internalId):Promise.reject(r.error);if(this.validationRequests.has(o))return this.validationRequests.get(o);var i=this._getApiUrl();if(!i){var a=new Error("ChecklistNetworkManager: Gleap API URL not configured.");return this.validationCache.set(o,{status:R,error:a}),Promise.reject(a)}var s="".concat(i,"/outbound/checklists?").concat(this._getQueryParams()),l=this._makeRequest("POST",s,{outboundId:e,sharedKey:t}).then((function(e){if(e&&e.id)return n.validationCache.set(o,{status:M,internalId:e.id}),e.id;var t=new Error("Validation response missing checklist ID.");throw n.validationCache.set(o,{status:R,error:e||t}),t})).catch((function(e){throw n.validationCache.set(o,{status:R,error:e}),e})).finally((function(){n.validationRequests.delete(o)}));return this.validationRequests.set(o,l),l}},{key:"fetchChecklist",value:function(e){var t=this,n=this.fetchCache.get(e);if(n)return n.status===M?Promise.resolve(JSON.parse(JSON.stringify(n.data))):Promise.reject(n.error);if(this.fetchRequests.has(e))return this.fetchRequests.get(e).then((function(e){return JSON.parse(JSON.stringify(e))}));var o=this._getApiUrl();if(!o){var r=new Error("ChecklistNetworkManager: Gleap API URL not configured.");return this.fetchCache.set(e,{status:R,error:r}),Promise.reject(r)}var i="".concat(o,"/outbound/checklists/").concat(e,"?convertTipTap=true&").concat(this._getQueryParams()),a=this._makeRequest("GET",i,null).then((function(n){if(n)return t.fetchCache.set(e,{status:M,data:n}),JSON.parse(JSON.stringify(n));var o=new Error("Empty response received for checklist fetch.");throw t.fetchCache.set(e,{status:R,error:n||o}),o})).catch((function(n){throw t.fetchCache.set(e,{status:R,error:n}),n})).finally((function(){t.fetchRequests.delete(e)}));return this.fetchRequests.set(e,a),a.then((function(e){return JSON.parse(JSON.stringify(e))}))}}],o=[{key:"getInstance",value:function(){return e.instance||(e.instance=new e),e.instance}}],n&&T(t.prototype,n),o&&T(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();L(P,"instance",null);const D=P,N=Math.min,j=Math.max,F=Math.round,B=Math.floor,_=e=>({x:e,y:e}),U={left:"right",right:"left",bottom:"top",top:"bottom"},H={start:"end",end:"start"};function z(e,t,n){return j(e,N(t,n))}function q(e,t){return"function"==typeof e?e(t):e}function W(e){return e.split("-")[0]}function G(e){return e.split("-")[1]}function V(e){return"x"===e?"y":"x"}function J(e){return"y"===e?"height":"width"}function Z(e){return["top","bottom"].includes(W(e))?"y":"x"}function K(e){return V(Z(e))}function Y(e){return e.replace(/start|end/g,(e=>H[e]))}function X(e){return e.replace(/left|right|bottom|top/g,(e=>U[e]))}function $(e){return"number"!=typeof e?function(e){return{top:0,right:0,bottom:0,left:0,...e}}(e):{top:e,right:e,bottom:e,left:e}}function Q(e){return{...e,top:e.y,left:e.x,right:e.x+e.width,bottom:e.y+e.height}}function ee(e,t,n){let{reference:o,floating:r}=e;const i=Z(t),a=K(t),s=J(a),l=W(t),c="y"===i,u=o.x+o.width/2-r.width/2,d=o.y+o.height/2-r.height/2,p=o[s]/2-r[s]/2;let h;switch(l){case"top":h={x:u,y:o.y-r.height};break;case"bottom":h={x:u,y:o.y+o.height};break;case"right":h={x:o.x+o.width,y:d};break;case"left":h={x:o.x-r.width,y:d};break;default:h={x:o.x,y:o.y}}switch(G(t)){case"start":h[a]-=p*(n&&c?-1:1);break;case"end":h[a]+=p*(n&&c?-1:1)}return h}async function te(e,t){var n;void 0===t&&(t={});const{x:o,y:r,platform:i,rects:a,elements:s,strategy:l}=e,{boundary:c="clippingAncestors",rootBoundary:u="viewport",elementContext:d="floating",altBoundary:p=!1,padding:h=0}=q(t,e),f=$(h),m=s[p?"floating"===d?"reference":"floating":d],g=Q(await i.getClippingRect({element:null==(n=await(null==i.isElement?void 0:i.isElement(m)))||n?m:m.contextElement||await(null==i.getDocumentElement?void 0:i.getDocumentElement(s.floating)),boundary:c,rootBoundary:u,strategy:l})),v="floating"===d?{...a.floating,x:o,y:r}:a.reference,y=await(null==i.getOffsetParent?void 0:i.getOffsetParent(s.floating)),b=await(null==i.isElement?void 0:i.isElement(y))&&await(null==i.getScale?void 0:i.getScale(y))||{x:1,y:1},w=Q(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:s,rect:v,offsetParent:y,strategy:l}):v);return{top:(g.top-w.top+f.top)/b.y,bottom:(w.bottom-g.bottom+f.bottom)/b.y,left:(g.left-w.left+f.left)/b.x,right:(w.right-g.right+f.right)/b.x}}const ne=function(e){return void 0===e&&(e=0),{name:"offset",options:e,async fn(t){var n,o;const{x:r,y:i,placement:a,middlewareData:s}=t,l=await async function(e,t){const{placement:n,platform:o,elements:r}=e,i=await(null==o.isRTL?void 0:o.isRTL(r.floating)),a=W(n),s=G(n),l="y"===Z(n),c=["left","top"].includes(a)?-1:1,u=i&&l?-1:1,d=q(t,e);let{mainAxis:p,crossAxis:h,alignmentAxis:f}="number"==typeof d?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...d};return s&&"number"==typeof f&&(h="end"===s?-1*f:f),l?{x:h*u,y:p*c}:{x:p*c,y:h*u}}(t,e);return a===(null==(n=s.offset)?void 0:n.placement)&&null!=(o=s.arrow)&&o.alignmentOffset?{}:{x:r+l.x,y:i+l.y,data:{...l,placement:a}}}}};function oe(e){return ae(e)?(e.nodeName||"").toLowerCase():"#document"}function re(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function ie(e){var t;return null==(t=(ae(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement}function ae(e){return e instanceof Node||e instanceof re(e).Node}function se(e){return e instanceof Element||e instanceof re(e).Element}function le(e){return e instanceof HTMLElement||e instanceof re(e).HTMLElement}function ce(e){return"undefined"!=typeof ShadowRoot&&(e instanceof ShadowRoot||e instanceof re(e).ShadowRoot)}function ue(e){const{overflow:t,overflowX:n,overflowY:o,display:r}=me(e);return/auto|scroll|overlay|hidden|clip/.test(t+o+n)&&!["inline","contents"].includes(r)}function de(e){return["table","td","th"].includes(oe(e))}function pe(e){const t=he(),n=me(e);return"none"!==n.transform||"none"!==n.perspective||!!n.containerType&&"normal"!==n.containerType||!t&&!!n.backdropFilter&&"none"!==n.backdropFilter||!t&&!!n.filter&&"none"!==n.filter||["transform","perspective","filter"].some((e=>(n.willChange||"").includes(e)))||["paint","layout","strict","content"].some((e=>(n.contain||"").includes(e)))}function he(){return!("undefined"==typeof CSS||!CSS.supports)&&CSS.supports("-webkit-backdrop-filter","none")}function fe(e){return["html","body","#document"].includes(oe(e))}function me(e){return re(e).getComputedStyle(e)}function ge(e){return se(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function ve(e){if("html"===oe(e))return e;const t=e.assignedSlot||e.parentNode||ce(e)&&e.host||ie(e);return ce(t)?t.host:t}function ye(e){const t=ve(e);return fe(t)?e.ownerDocument?e.ownerDocument.body:e.body:le(t)&&ue(t)?t:ye(t)}function be(e,t,n){var o;void 0===t&&(t=[]),void 0===n&&(n=!0);const r=ye(e),i=r===(null==(o=e.ownerDocument)?void 0:o.body),a=re(r);return i?t.concat(a,a.visualViewport||[],ue(r)?r:[],a.frameElement&&n?be(a.frameElement):[]):t.concat(r,be(r,[],n))}function we(e){const t=me(e);let n=parseFloat(t.width)||0,o=parseFloat(t.height)||0;const r=le(e),i=r?e.offsetWidth:n,a=r?e.offsetHeight:o,s=F(n)!==i||F(o)!==a;return s&&(n=i,o=a),{width:n,height:o,$:s}}function ke(e){return se(e)?e:e.contextElement}function xe(e){const t=ke(e);if(!le(t))return _(1);const n=t.getBoundingClientRect(),{width:o,height:r,$:i}=we(t);let a=(i?F(n.width):n.width)/o,s=(i?F(n.height):n.height)/r;return a&&Number.isFinite(a)||(a=1),s&&Number.isFinite(s)||(s=1),{x:a,y:s}}const Se=_(0);function Ce(e){const t=re(e);return he()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:Se}function Ie(e,t,n,o){void 0===t&&(t=!1),void 0===n&&(n=!1);const r=e.getBoundingClientRect(),i=ke(e);let a=_(1);t&&(o?se(o)&&(a=xe(o)):a=xe(e));const s=function(e,t,n){return void 0===t&&(t=!1),!(!n||t&&n!==re(e))&&t}(i,n,o)?Ce(i):_(0);let l=(r.left+s.x)/a.x,c=(r.top+s.y)/a.y,u=r.width/a.x,d=r.height/a.y;if(i){const e=re(i),t=o&&se(o)?re(o):o;let n=e,r=n.frameElement;for(;r&&o&&t!==n;){const e=xe(r),t=r.getBoundingClientRect(),o=me(r),i=t.left+(r.clientLeft+parseFloat(o.paddingLeft))*e.x,a=t.top+(r.clientTop+parseFloat(o.paddingTop))*e.y;l*=e.x,c*=e.y,u*=e.x,d*=e.y,l+=i,c+=a,n=re(r),r=n.frameElement}}return Q({width:u,height:d,x:l,y:c})}const Oe=[":popover-open",":modal"];function Ee(e){return Oe.some((t=>{try{return e.matches(t)}catch(n){return!1}}))}function Te(e){return Ie(ie(e)).left+ge(e).scrollLeft}function Le(e,t,n){let o;if("viewport"===t)o=function(e,t){const n=re(e),o=ie(e),r=n.visualViewport;let i=o.clientWidth,a=o.clientHeight,s=0,l=0;if(r){i=r.width,a=r.height;const e=he();(!e||e&&"fixed"===t)&&(s=r.offsetLeft,l=r.offsetTop)}return{width:i,height:a,x:s,y:l}}(e,n);else if("document"===t)o=function(e){const t=ie(e),n=ge(e),o=e.ownerDocument.body,r=j(t.scrollWidth,t.clientWidth,o.scrollWidth,o.clientWidth),i=j(t.scrollHeight,t.clientHeight,o.scrollHeight,o.clientHeight);let a=-n.scrollLeft+Te(e);const s=-n.scrollTop;return"rtl"===me(o).direction&&(a+=j(t.clientWidth,o.clientWidth)-r),{width:r,height:i,x:a,y:s}}(ie(e));else if(se(t))o=function(e,t){const n=Ie(e,!0,"fixed"===t),o=n.top+e.clientTop,r=n.left+e.clientLeft,i=le(e)?xe(e):_(1);return{width:e.clientWidth*i.x,height:e.clientHeight*i.y,x:r*i.x,y:o*i.y}}(t,n);else{const n=Ce(e);o={...t,x:t.x-n.x,y:t.y-n.y}}return Q(o)}function Ae(e,t){const n=ve(e);return!(n===t||!se(n)||fe(n))&&("fixed"===me(n).position||Ae(n,t))}function Me(e,t,n){const o=le(t),r=ie(t),i="fixed"===n,a=Ie(e,!0,i,t);let s={scrollLeft:0,scrollTop:0};const l=_(0);if(o||!o&&!i)if(("body"!==oe(t)||ue(r))&&(s=ge(t)),o){const e=Ie(t,!0,i,t);l.x=e.x+t.clientLeft,l.y=e.y+t.clientTop}else r&&(l.x=Te(r));return{x:a.left+s.scrollLeft-l.x,y:a.top+s.scrollTop-l.y,width:a.width,height:a.height}}function Re(e,t){return le(e)&&"fixed"!==me(e).position?t?t(e):e.offsetParent:null}function Pe(e,t){const n=re(e);if(!le(e)||Ee(e))return n;let o=Re(e,t);for(;o&&de(o)&&"static"===me(o).position;)o=Re(o,t);return o&&("html"===oe(o)||"body"===oe(o)&&"static"===me(o).position&&!pe(o))?n:o||function(e){let t=ve(e);for(;le(t)&&!fe(t);){if(pe(t))return t;t=ve(t)}return null}(e)||n}const De={convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{elements:t,rect:n,offsetParent:o,strategy:r}=e;const i="fixed"===r,a=ie(o),s=!!t&&Ee(t.floating);if(o===a||s&&i)return n;let l={scrollLeft:0,scrollTop:0},c=_(1);const u=_(0),d=le(o);if((d||!d&&!i)&&(("body"!==oe(o)||ue(a))&&(l=ge(o)),le(o))){const e=Ie(o);c=xe(o),u.x=e.x+o.clientLeft,u.y=e.y+o.clientTop}return{width:n.width*c.x,height:n.height*c.y,x:n.x*c.x-l.scrollLeft*c.x+u.x,y:n.y*c.y-l.scrollTop*c.y+u.y}},getDocumentElement:ie,getClippingRect:function(e){let{element:t,boundary:n,rootBoundary:o,strategy:r}=e;const i="clippingAncestors"===n?function(e,t){const n=t.get(e);if(n)return n;let o=be(e,[],!1).filter((e=>se(e)&&"body"!==oe(e))),r=null;const i="fixed"===me(e).position;let a=i?ve(e):e;for(;se(a)&&!fe(a);){const t=me(a),n=pe(a);n||"fixed"!==t.position||(r=null),(i?!n&&!r:!n&&"static"===t.position&&r&&["absolute","fixed"].includes(r.position)||ue(a)&&!n&&Ae(e,a))?o=o.filter((e=>e!==a)):r=t,a=ve(a)}return t.set(e,o),o}(t,this._c):[].concat(n),a=[...i,o],s=a[0],l=a.reduce(((e,n)=>{const o=Le(t,n,r);return e.top=j(o.top,e.top),e.right=N(o.right,e.right),e.bottom=N(o.bottom,e.bottom),e.left=j(o.left,e.left),e}),Le(t,s,r));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}},getOffsetParent:Pe,getElementRects:async function(e){const t=this.getOffsetParent||Pe,n=this.getDimensions;return{reference:Me(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,...await n(e.floating)}}},getClientRects:function(e){return Array.from(e.getClientRects())},getDimensions:function(e){const{width:t,height:n}=we(e);return{width:t,height:n}},getScale:xe,isElement:se,isRTL:function(e){return"rtl"===me(e).direction}};function Ne(e,t,n,o){void 0===o&&(o={});const{ancestorScroll:r=!0,ancestorResize:i=!0,elementResize:a="function"==typeof ResizeObserver,layoutShift:s="function"==typeof IntersectionObserver,animationFrame:l=!1}=o,c=ke(e),u=r||i?[...c?be(c):[],...be(t)]:[];u.forEach((e=>{r&&e.addEventListener("scroll",n,{passive:!0}),i&&e.addEventListener("resize",n)}));const d=c&&s?function(e,t){let n,o=null;const r=ie(e);function i(){var e;clearTimeout(n),null==(e=o)||e.disconnect(),o=null}return function a(s,l){void 0===s&&(s=!1),void 0===l&&(l=1),i();const{left:c,top:u,width:d,height:p}=e.getBoundingClientRect();if(s||t(),!d||!p)return;const h={rootMargin:-B(u)+"px "+-B(r.clientWidth-(c+d))+"px "+-B(r.clientHeight-(u+p))+"px "+-B(c)+"px",threshold:j(0,N(1,l))||1};let f=!0;function m(e){const t=e[0].intersectionRatio;if(t!==l){if(!f)return a();t?a(!1,t):n=setTimeout((()=>{a(!1,1e-7)}),100)}f=!1}try{o=new IntersectionObserver(m,{...h,root:r.ownerDocument})}catch(g){o=new IntersectionObserver(m,h)}o.observe(e)}(!0),i}(c,n):null;let p,h=-1,f=null;a&&(f=new ResizeObserver((e=>{let[o]=e;o&&o.target===c&&f&&(f.unobserve(t),cancelAnimationFrame(h),h=requestAnimationFrame((()=>{var e;null==(e=f)||e.observe(t)}))),n()})),c&&!l&&f.observe(c),f.observe(t));let m=l?Ie(e):null;return l&&function t(){const o=Ie(e);!m||o.x===m.x&&o.y===m.y&&o.width===m.width&&o.height===m.height||n();m=o,p=requestAnimationFrame(t)}(),n(),()=>{var e;u.forEach((e=>{r&&e.removeEventListener("scroll",n),i&&e.removeEventListener("resize",n)})),null==d||d(),null==(e=f)||e.disconnect(),f=null,l&&cancelAnimationFrame(p)}}const je=function(e){return void 0===e&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:o,placement:r}=t,{mainAxis:i=!0,crossAxis:a=!1,limiter:s={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...l}=q(e,t),c={x:n,y:o},u=await te(t,l),d=Z(W(r)),p=V(d);let h=c[p],f=c[d];if(i){const e="y"===p?"bottom":"right";h=z(h+u["y"===p?"top":"left"],h,h-u[e])}if(a){const e="y"===d?"bottom":"right";f=z(f+u["y"===d?"top":"left"],f,f-u[e])}const m=s.fn({...t,[p]:h,[d]:f});return{...m,data:{x:m.x-n,y:m.y-o}}}}},Fe=function(e){return void 0===e&&(e={}),{name:"flip",options:e,async fn(t){var n,o;const{placement:r,middlewareData:i,rects:a,initialPlacement:s,platform:l,elements:c}=t,{mainAxis:u=!0,crossAxis:d=!0,fallbackPlacements:p,fallbackStrategy:h="bestFit",fallbackAxisSideDirection:f="none",flipAlignment:m=!0,...g}=q(e,t);if(null!=(n=i.arrow)&&n.alignmentOffset)return{};const v=W(r),y=W(s)===s,b=await(null==l.isRTL?void 0:l.isRTL(c.floating)),w=p||(y||!m?[X(s)]:function(e){const t=X(e);return[Y(e),t,Y(t)]}(s));p||"none"===f||w.push(...function(e,t,n,o){const r=G(e);let i=function(e,t,n){const o=["left","right"],r=["right","left"],i=["top","bottom"],a=["bottom","top"];switch(e){case"top":case"bottom":return n?t?r:o:t?o:r;case"left":case"right":return t?i:a;default:return[]}}(W(e),"start"===n,o);return r&&(i=i.map((e=>e+"-"+r)),t&&(i=i.concat(i.map(Y)))),i}(s,m,f,b));const k=[s,...w],x=await te(t,g),S=[];let C=(null==(o=i.flip)?void 0:o.overflows)||[];if(u&&S.push(x[v]),d){const e=function(e,t,n){void 0===n&&(n=!1);const o=G(e),r=K(e),i=J(r);let a="x"===r?o===(n?"end":"start")?"right":"left":"start"===o?"bottom":"top";return t.reference[i]>t.floating[i]&&(a=X(a)),[a,X(a)]}(r,a,b);S.push(x[e[0]],x[e[1]])}if(C=[...C,{placement:r,overflows:S}],!S.every((e=>e<=0))){var I,O;const e=((null==(I=i.flip)?void 0:I.index)||0)+1,t=k[e];if(t)return{data:{index:e,overflows:C},reset:{placement:t}};let n=null==(O=C.filter((e=>e.overflows[0]<=0)).sort(((e,t)=>e.overflows[1]-t.overflows[1]))[0])?void 0:O.placement;if(!n)switch(h){case"bestFit":{var E;const e=null==(E=C.map((e=>[e.placement,e.overflows.filter((e=>e>0)).reduce(((e,t)=>e+t),0)])).sort(((e,t)=>e[1]-t[1]))[0])?void 0:E[0];e&&(n=e);break}case"initialPlacement":n=s}if(r!==n)return{reset:{placement:n}}}return{}}}},Be=e=>({name:"arrow",options:e,async fn(t){const{x:n,y:o,placement:r,rects:i,platform:a,elements:s,middlewareData:l}=t,{element:c,padding:u=0}=q(e,t)||{};if(null==c)return{};const d=$(u),p={x:n,y:o},h=K(r),f=J(h),m=await a.getDimensions(c),g="y"===h,v=g?"top":"left",y=g?"bottom":"right",b=g?"clientHeight":"clientWidth",w=i.reference[f]+i.reference[h]-p[h]-i.floating[f],k=p[h]-i.reference[h],x=await(null==a.getOffsetParent?void 0:a.getOffsetParent(c));let S=x?x[b]:0;S&&await(null==a.isElement?void 0:a.isElement(x))||(S=s.floating[b]||i.floating[f]);const C=w/2-k/2,I=S/2-m[f]/2-1,O=N(d[v],I),E=N(d[y],I),T=O,L=S-m[f]-E,A=S/2-m[f]/2+C,M=z(T,A,L),R=!l.arrow&&null!=G(r)&&A!==M&&i.reference[f]/2-(A{const o=new Map,r={platform:De,...n},i={...r.platform,_c:o};return(async(e,t,n)=>{const{placement:o="bottom",strategy:r="absolute",middleware:i=[],platform:a}=n,s=i.filter(Boolean),l=await(null==a.isRTL?void 0:a.isRTL(t));let c=await a.getElementRects({reference:e,floating:t,strategy:r}),{x:u,y:d}=ee(c,o,l),p=o,h={},f=0;for(let m=0;me.length)&&(t=e.length);for(var n=0,o=new Array(t);n'):""),i.appendChild(a),t.repositionHotspot(e,n),r=a,t.elementToTooltipMap.set(e,n)}else r=e;var s=t.createTooltip(r,n.html,n);t.elementToFloatingUIMap.set(e,s)}}})),Ge(this,"updateFilteredTooltips",(function(){t.filteredTooltips=t.getFilteredTooltips(),t.checkForTooltips()})),Ge(this,"getFilteredTooltips",(function(){if(!t.tooltips)return[];var e=window.location.href;return t.tooltips.filter((function(t){return!t.page||0===t.page.length||!!Ue(e,t.page,t.pageType)}))})),Ge(this,"checkForTooltips",(function(){for(var e=0;e0&&this.filteredTooltips.forEach((function(n){n.selector&&e.matches(n.selector)&&t.linkTooltip(e,n)}))}},{key:"start",value:function(){var e=this,t=this;if(window){var n,o,r,i=(n=t.updateHotspotPositions.bind(t),o=250,r=null,function(){if(!r){var e=this,t=arguments;r=setTimeout((function(){n.call.apply(n,[e].concat(ze(t))),r=null}),o)}});window.addEventListener("resize",i),window.requestAnimationFrame((function(){e.observer=new MutationObserver((function(n){t.lastUrl!==window.location.href&&(t.lastUrl=window.location.href,t.filteredTooltips=t.getFilteredTooltips()),n.forEach((function(n){if("attributes"===n.type){var o=n.target;o.nodeType===Node.ELEMENT_NODE&&(o.querySelector("[data-gleap-tooltip-hotspot]")||o.hasAttribute("data-gleap-tooltip-mode")||o.hasAttribute("data-gleap-tooltip"))&&t.updateHotspotPositions()}n.addedNodes.forEach((function(e){e.nodeType===Node.ELEMENT_NODE&&t.processNodeInsertion(e)})),n.removedNodes.forEach((function(t){if(t.nodeType===Node.ELEMENT_NODE&&e.elementToFloatingUIMap.has(t)){var n=e.elementToFloatingUIMap.get(t);n&&(n.tooltip&&n.tooltip.remove(),n.cleanup(),e.elementToFloatingUIMap.delete(t))}e.elementToTooltipMap.has(t)&&e.elementToTooltipMap.delete(t)}))}))})),e.observer.observe(document.body,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["style","class"]})}))}}},{key:"updateHotspotPositions",value:function(){var e=this;document.querySelectorAll("[data-gleap-tooltip-mode='hotspot']").forEach((function(t){var n=e.elementToTooltipMap.get(t);n&&e.repositionHotspot(t,n)}))}},{key:"createTooltip",value:function(e,t,n){var o=document.createElement("div");o.className="gleap-tooltip",o.innerHTML='
\n '.concat(t,'\n
\n \n \n \n
\n
'),document.body.appendChild(o);var r,i=o.querySelector(".gleap-tooltip-arrow"),a=Ne(e,o,(function(){_e(e,o,{placement:"left"===n.posX?"left":"right",middleware:[ne(10),Fe(),je(),Be({element:i})]}).then((function(e){var t=e.x,n=e.y,r=e.middlewareData,a=e.placement;try{if(Object.assign(o.style,{left:"".concat(t,"px"),top:"".concat(n,"px")}),r.arrow){var s={left:"",top:"",transform:""};null!=r.arrow.x&&(s.left="".concat(r.arrow.x,"px"),"bottom"===a?(s.transform="translateY(-7px) rotate(180deg)",s.top="".concat(-20,"px")):"top"===a&&(s.transform="translateY(7px) rotate(0deg)",s.top="100%")),null!=r.arrow.y&&(s.top="".concat(r.arrow.y,"px"),"right"===a?(s.transform="translateX(-7px) rotate(90deg)",s.left="".concat(-20,"px")):"left"===a&&(s.transform="translateX(7px) rotate(270deg)",s.left="100%")),Object.assign(i.style,s)}}catch(l){}}))}));function s(){clearTimeout(r),o.style.visibility="visible",o.style.opacity="1",o.style.pointerEvents="auto"}function l(){r=setTimeout((function(){o.style.opacity="0",setTimeout((function(){o.style.visibility="hidden",o.style.pointerEvents="none"}),200)}),500)}return e.addEventListener("mouseenter",s),e.addEventListener("mouseleave",l),o.addEventListener("mouseenter",s),o.addEventListener("mouseleave",l),{cleanup:a,tooltip:o}}},{key:"canEmbed",value:function(e){var t=new Set(["area","base","br","embed","hr","img","input","source","track","wbr","canvas"]);return e&&!t.has(e.tagName.toLowerCase())}},{key:"destroy",value:function(){this.observer&&(this.observer.disconnect(),this.observer=null),this.resizeListener&&(window.removeEventListener("resize",this.resizeListener),this.resizeListener=null),document.querySelectorAll(".gleap-tooltip").forEach((function(e){return e.remove()})),document.querySelectorAll("[data-gleap-tooltip-anchor]").forEach((function(e){return e.remove()})),document.querySelectorAll("[data-gleap-tooltip-hotspot]").forEach((function(e){return e.remove()})),document.querySelectorAll("[data-gleap-tooltip]").forEach((function(e){return e.removeAttribute("data-gleap-tooltip")})),document.querySelectorAll("[data-gleap-tooltip-mode]").forEach((function(e){return e.removeAttribute("data-gleap-tooltip-mode")})),this.elementToFloatingUIMap=new WeakMap,this.elementToTooltipMap=new WeakMap,this.tooltips=[],this.filteredTooltips=[]}},{key:"repositionHotspot",value:function(e,t){if(e&&t){var n=e.getAttribute("data-gleap-tooltip");if(n){var o=document.querySelector('[data-gleap-tooltip-hotspot="'.concat(n,'"]'));if(o){t.posX||(t.posX="right"),t.posY||(t.posY="center"),t.offsetX||(t.offsetX=4),t.offsetY||(t.offsetY=0);var r=e.getBoundingClientRect();try{var i=document.createRange();i.selectNodeContents(e);var a=window.getComputedStyle(e),s=i.getBoundingClientRect().width+parseFloat(a.paddingLeft);s0&&void 0!==arguments[0]?arguments[0]:0,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];t.session&&t.session.gleapHash&&xn.notifyEvent("unregister-pushmessage-group","gleapuser-".concat(t.session.gleapHash));try{I("session-".concat(t.sdkKey),null)}catch(r){}if(t.useCookies)try{!function(e){try{var t=S(window.location.host.split(":")[0]);document.cookie=e+"=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT; Domain="+t}catch(r){}}("session-".concat(t.sdkKey))}catch(r){}if(t.ready=!1,t.session={gleapId:null,gleapHash:null,name:"",email:"",userId:"",phone:"",value:0},Vt.getInstance().sendMessage({name:"session-cleared"},!0),Mh.getInstance().clearAllNotifications(!1),Mh.getInstance().setNotificationCount(0),Bh.getInstance().removeBannerUI(),Gh.getInstance().hideModal(),n&&!isNaN(e)){var o=10*Math.pow(e,2);setTimeout((function(){t.startSession(e+1)}),1e3*o)}})),$e(this,"validateSession",(function(e){var n;if(e&&e.gleapId){var o=!1;(null===(n=t.session)||void 0===n?void 0:n.gleapId)!==(null==e?void 0:e.gleapId)&&(o=!0),t.session&&t.session.gleapHash&&xn.notifyEvent("unregister-pushmessage-group","gleapuser-".concat(t.session.gleapHash)),I("session-".concat(t.sdkKey),e),t.useCookies&&function(e,t,n){try{var o="";if(n){var r=new Date;r.setTime(r.getTime()+24*n*60*60*1e3),o="; expires="+r.toUTCString()}var i=S(window.location.host.split(":")[0]);document.cookie=e+"="+(t||"")+o+"; path=/; domain="+i}catch(a){}}("session-".concat(t.sdkKey),encodeURIComponent(JSON.stringify(e)),365),t.session=e,t.ready=!0,t.session&&t.session.gleapHash&&xn.notifyEvent("register-pushmessage-group","gleapuser-".concat(t.session.gleapHash)),o&&(setTimeout((function(){D.getInstance().clearCache(),it.getInstance().restart();var e=Je.getInstance();if(e){try{e.destroy()}catch(t){}e.load()}}),0),"function"==typeof window.dispatchEvent&&window.dispatchEvent(new CustomEvent("session-updated"))),t.notifySessionReady()}})),$e(this,"startSession",(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;try{if(t.useCookies){var n=function(e){try{for(var t=e+"=",n=document.cookie.split(";"),o=0;o0)){var r=C("session-".concat(t.sdkKey));r&&t.validateSession(r)}var i=t,a=new XMLHttpRequest;a.open("POST",i.apiUrl+"/sessions"),a.setRequestHeader("Content-Type","application/json;charset=UTF-8"),a.setRequestHeader("Api-Token",i.sdkKey);try{t.session&&t.session.gleapId&&t.session.gleapHash&&(a.setRequestHeader("Gleap-Id",t.session.gleapId),a.setRequestHeader("Gleap-Hash",t.session.gleapHash))}catch(s){}a.onreadystatechange=function(t){if(4===a.readyState)if(200===a.status||201===a.status)try{var n=JSON.parse(a.responseText);i.validateSession(n)}catch(s){}else 429!==a.status&&i.clearSession(e,!0)},a.send(JSON.stringify({lang:gh.getInstance().getActiveLanguage()}))})),$e(this,"checkIfSessionNeedsUpdate",(function(e,n){if(!t.session||!t.session.userId||!e)return!0;try{if(t.session.userId.toString()!==e.toString())return!0}catch(o){}return t.checkIfSessionDataNeedsUpdate(n)})),$e(this,"checkIfSessionDataNeedsUpdate",(function(e){if(e)for(var n=Object.keys(e),o=0;o0)for(var e=0;e2)&&0!==t.streamedEventArray.length&&t.socket&&t.socket.readyState===t.socket.OPEN){var e=t;t.streamingEvents=!0;var n=new XMLHttpRequest;n.open("POST",et.getInstance().apiUrl+"/sessions/ping"),n.setRequestHeader("Content-Type","application/json;charset=UTF-8"),et.getInstance().injectSession(n),n.onerror=function(){e.errorCount++,e.streamingEvents=!1},n.onreadystatechange=function(t){4===n.readyState&&(200===n.status||201===n.status?e.errorCount=0:e.errorCount++,e.streamingEvents=!1)};var o=Xt.getInstance().getSessionDuration();n.send(JSON.stringify({time:o,events:t.streamedEventArray,opened:Vt.getInstance().isOpened(),type:"js",sdkVersion:"14.8.11",ws:!0})),t.streamedEventArray=[]}})),this.handleOpenBound=this.handleOpen.bind(this),this.handleErrorBound=this.handleError.bind(this),this.handleMessageBound=this.handleMessage.bind(this),this.handleCloseBound=this.handleClose.bind(this)}var t,n,o;return t=e,o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],(n=[{key:"cleanupWebSocket",value:function(){this.connectionTimeout&&(clearTimeout(this.connectionTimeout),this.connectionTimeout=null),this.pingWS&&clearInterval(this.pingWS),this.socket&&(this.socket.removeEventListener("open",this.handleOpenBound),this.socket.removeEventListener("error",this.handleErrorBound),this.socket.removeEventListener("message",this.handleMessageBound),this.socket.removeEventListener("close",this.handleCloseBound),this.socket.close(),this.socket=null)}},{key:"initWebSocket",value:function(){this.cleanupWebSocket(),this.connectedWebSocketGleapId=et.getInstance().session.gleapId,et.getInstance().session&&et.getInstance().sdkKey&&(this.socket=new WebSocket("".concat(et.getInstance().wsApiUrl,"?gleapId=").concat(et.getInstance().session.gleapId,"&gleapHash=").concat(et.getInstance().session.gleapHash,"&apiKey=").concat(et.getInstance().sdkKey,"&sdkVersion=").concat("14.8.11")),this.socket.addEventListener("open",this.handleOpenBound),this.socket.addEventListener("message",this.handleMessageBound),this.socket.addEventListener("error",this.handleErrorBound),this.socket.addEventListener("close",this.handleCloseBound))}},{key:"handleOpen",value:function(e){var t=this;this.pingWS=setInterval((function(){t.socket.readyState===t.socket.OPEN&&(t.socket.send("PING"),t.socket.send(9))}),1e4),this.connectionTimeout&&(clearTimeout(this.connectionTimeout),this.connectionTimeout=null)}},{key:"handleMessage",value:function(e){this.processMessage(JSON.parse(e.data))}},{key:"handleError",value:function(e){}},{key:"handleClose",value:function(e){var t=this;setTimeout((function(){t.initWebSocket()}),5e3)}},{key:"processMessage",value:function(e){try{if("update"===e.name){var t=e.data,n=t.a,o=t.u,r=Vt.getInstance().isOpened();if(n){var i=["banner","modal"],a=n.filter((function(e){var t;return!r||i.includes(null==e||null===(t=e.actionType)||void 0===t?void 0:t.toLowerCase())}));_m.getInstance().performActions(a)}null!=o&&Mh.getInstance().setNotificationCount(o)}"checklist"===e.name&&null!=e&&e.data&&window&&"function"==typeof window.dispatchEvent&&window.dispatchEvent(new CustomEvent("checkListUpdate",{detail:e.data}))}catch(s){}}},{key:"getEventArray",value:function(){return this.eventArray}},{key:"stop",value:function(){this.cleanupMainLoop()}},{key:"resetErrorCountLoop",value:function(){var e=this;setInterval((function(){e.errorCount=0}),6e4)}},{key:"cleanupMainLoop",value:function(){this.mainLoopTimeout&&(clearInterval(this.mainLoopTimeout),this.mainLoopTimeout=null)}},{key:"restart",value:function(){this.connectedWebSocketGleapId!==et.getInstance().session.gleapId&&this.initWebSocket(),this.cleanupMainLoop(),this.trackInitialEvents(),this.runEventStreamLoop()}},{key:"start",value:function(){this.startPageListener(),this.resetErrorCountLoop()}},{key:"trackInitialEvents",value:function(){e.getInstance().logEvent("sessionStarted"),e.getInstance().logCurrentPage()}},{key:"logCurrentPage",value:function(){if(!_m.getInstance().disablePageTracking){var e=window.location.href;e&&e!==this.lastUrl&&(this.lastUrl=e,this.logEvent("pageView",{page:e}))}}},{key:"startPageListener",value:function(){var e=this;setInterval((function(){e.logCurrentPage()}),1e3)}},{key:"logEvent",value:function(e,t){var n={name:e,date:new Date};t&&(n.data=k(t)),this.eventArray.push(n),this.streamedEventArray.push(n),this.eventArray.length>this.eventMaxLength&&this.eventArray.shift(),this.streamedEventArray.length>this.eventMaxLength&&this.streamedEventArray.shift()}}])&&nt(t.prototype,n),o&&nt(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function at(e){return at="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},at(e)}function st(e,t){for(var n=0;n0)for(var e=0;e=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var l=o.call(a,"catchLoc"),c=o.call(a,"finallyLoc");if(l&&c){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&o.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),L(n),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var o=n.completion;if("throw"===o.type){var r=o.arg;L(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,o){return this.delegate={iterator:M(t),resultName:n,nextLoc:o},"next"===this.method&&(this.arg=e),g}},t}function ft(e,t,n,o,r,i,a){try{var s=e[i](a),l=s.value}catch(c){return void n(c)}s.done?t(l):Promise.resolve(l).then(o,r)}function mt(e){return function(){var t=this,n=arguments;return new Promise((function(o,r){var i=e.apply(t,n);function a(e){ft(i,o,r,a,s,"next",e)}function s(e){ft(i,o,r,a,s,"throw",e)}a(void 0)}))}}var gt=function(e){var t="",n=window.document.doctype;if(n&&(t=""),e&&e.childNodes&&e.childNodes.length>0)for(var o=0;o1?t-1:0),r=1;r0||t.scrollLeft>0)&&(s.setAttribute("bb-scrollpos",!0),s.setAttribute("bb-scrolltop",t.scrollTop),s.setAttribute("bb-scrollleft",t.scrollLeft)),"SELECT"!==d&&"TEXTAREA"!==d&&"INPUT"!==d||(h=t.value,("value"===t.getAttribute("gleap-ignore")||t.classList.contains("gl-mask"))&&(h=new Array(h.length+1).join("*")),s.setAttribute("bb-data-value",h),"checkbox"!==t.type&&"radio"!==t.type||!t.checked||s.setAttribute("bb-data-checked",!0))),r.appendChild(s),!t.shadowRoot){e.next=29;break}return f=n,n++,e.next=27,a(t.shadowRoot.firstChild,s,f);case 27:Ct(t.shadowRoot,s,f),void 0!==s.setAttribute&&s.setAttribute("bb-shadow-parent",f);case 29:return e.next=31,a(t.firstChild,s);case 31:case"end":return e.stop()}}),e,null,[[7,17]])})));return function(t,n,o){return e.apply(this,arguments)}}(),r=document.createDocumentFragment(),e.next=5,o(t,r);case 5:return(i=r.querySelector("head"))||(i=r),Ct(window.document,i),e.abrupt("return",r);case 9:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),Et=function(e){return new Promise(function(){var t=mt(ht().mark((function t(n,o){var r,i,a,s,l,c,u,d,p,h,f,m,g,v,y;return ht().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:for(r=window.document.querySelectorAll("style, link"),i=0;i0){for(c=l.childNodes;c.length>0;)l.parentNode.insertBefore(c[0],l);l.remove()}for(u=a.querySelectorAll("script, noscript"),i=0;i0?r.innerHTML=n.formatTime(e):(r.innerHTML="2:00",n.stopScreenRecording())}),1e3),this.mediaRecorder.ondataavailable=function(e){e.data.size>0&&o.push(e.data)},t.getVideoTracks()[0].onended=function(){n.prepareRecording(o)},this.mediaRecorder.onstop=function(){n.prepareRecording(o)},this.mediaRecorder.start(200),n.rerender()})),At(this,"prepareRecording",(function(e){var t=new Blob(e,{type:this.getSupportedMimeType()}),n=this.getSupportedMimeType(),o=n.includes("mp4")?"mp4":"webm";this.file=new File([t],"screen-recording.".concat(o),{type:n});var r=document.querySelector(".bb-capture-preview video");r&&(r.src=URL.createObjectURL(t),this.audioAvailable=!0,this.isRecording=!1,this.rerender())})),this.rerender=t,this.permissionErrorText=n,navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia||(this.available=!1),setTimeout((function(){o.rerender()}),100)}var t,n,o;return t=e,(n=[{key:"getSupportedMimeType",value:function(){for(var e=0,t=["video/webm","audio/webm","video/webm;codecs=vp8","video/webm;codecs=daala","video/webm;codecs=h264","audio/webm;codecs=opus","video/mp4"];e0&&(e.tags=t),this.excludeData)for(var n=Object.keys(this.excludeData),o=0;oe.length)&&(t=e.length);for(var n=0,o=new Array(t);n0)if(t){var n=window.open(e,"_blank");n&&n.focus()}else window.location.href=e})),Wt(this,"autoWhiteListCookieManager",(function(){window&&window.cmp_block_ignoredomains&&window.cmp_block_ignoredomains.concat(["messenger-app.gleap.io"])})),Wt(this,"injectFrame",(function(){t.injectedFrame||(t.injectedFrame=!0,t.autoWhiteListCookieManager(),O((function(){dt.getInstance().onConfigLoaded((function(){dt.getInstance().applyStylesFromConfig();var e=document.createElement("div");e.className="gleap-frame-container gleap-frame-container--hidden gl-block",e.innerHTML='
'),document.body.appendChild(e),t.gleapFrameContainer=e,t.gleapFrame=document.querySelector(".gleap-frame"),t.updateFrameStyle(),"widget"===t.appMode&&t.showFrameContainer(!0)}))})))})),Wt(this,"showImage",(function(e){O((function(){var t=document.createElement("div");t.className="gleap-image-view",t.innerHTML='
\n \n
'),document.body.appendChild(t);var n=function(){t.remove()};t.querySelector(".gleap-image-view-close").addEventListener("click",(function(){n()})),t.addEventListener("click",(function(e){e.target===t&&n()}))}))})),Wt(this,"updateFrameStyle",(function(){if(t.gleapFrameContainer){for(var e="gleap-frame-container--survey",n="gleap-frame-container--extended",o="gleap-frame-container--survey-full",r="gleap-frame-container--classic",i="gleap-frame-container--classic-left",s="gleap-frame-container--modern-left",l="gleap-frame-container--no-button",c=[r,i,n,s,l,e,o],u=0;u0&&void 0!==arguments[0]&&arguments[0];"survey_web"!==this.appMode&&(this.hideMarkerManager(),this.gleapFrameContainer&&(this.gleapFrameContainer.classList.add("gleap-frame-container--hidden"),this.gleapFrameContainer.classList.remove("gleap-frame-container--animate")),e&&this.sendMessage({name:"reset-routes",data:{}}),this.widgetOpened=!1,this.updateWidgetStatus(),a.getInstance().updateFeedbackButtonState(),xn.notifyEvent("close"),Mh.getInstance().reloadNotificationsFromCache(),this.unregisterEscListener(),"undefined"!=typeof window&&void 0!==window.focus&&window.focus())}},{key:"sendMessage",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];try{this.gleapFrame=document.querySelector(".gleap-frame"),this.comReady&&this.gleapFrame&&this.gleapFrame.contentWindow?this.gleapFrame.contentWindow.postMessage(JSON.stringify(e),"*"):t&&this.queue.push(e)}catch(n){}}},{key:"sendSessionUpdate",value:function(){this.sendMessage({name:"session-update",data:{sessionData:et.getInstance().getSession(),apiUrl:et.getInstance().apiUrl,sdkKey:et.getInstance().sdkKey}})}},{key:"sendConfigUpdate",value:function(){this.comReady&&(this.sendMessage({name:"config-update",data:{config:dt.getInstance().getFlowConfig(),aiTools:dt.getInstance().getAiTools(),overrideLanguage:gh.getInstance().getOverrideLanguage()}}),this.updateFrameStyle())}},{key:"showDrawingScreen",value:function(e){var t=this;this.hideWidget(),this.markerManager=new dh(e),this.markerManager.show((function(e){e||t.hideMarkerManager(),t.showWidget()}))}},{key:"workThroughQueue",value:function(){var e=Ht(this.queue);this.queue=[];for(var t=0;t0&&(n.tags=o),e.sendMessage({name:"collect-ticket-data",data:n})}if("height-update"===t.name){e.frameHeight=t.data;var r=document.querySelector(".gleap-frame-container-inner");"survey"!==e.appMode&&"survey_full"!==e.appMode&&"survey_web"!==e.appMode||!r||(r.style.maxHeight="".concat(e.frameHeight,"px"))}if("notify-event"===t.name&&xn.notifyEvent(t.data.type,t.data.data),"cleanup-drawings"===t.name&&e.hideMarkerManager(),"open-url"===t.name){var i=t.data,a=!!t.newTab;e.urlHandler(i,a)}var s;if("start-product-tour"===t.name&&_m.startProductTour(null===(s=t.data)||void 0===s?void 0:s.tourId,!0),"run-custom-action"===t.name&&Ln.triggerCustomAction(t.data,{shareToken:t.shareToken}),"close-widget"===t.name&&e.hideWidget(),"tool-execution"===t.name&&xn.notifyEvent("tool-execution",t.data),"send-feedback"===t.name){var l=t.data.formData,c=t.data.action,u=t.data.outboundId,d=t.data.spamToken;new _t(c.feedbackType,"MEDIUM",l,!1,c.excludeData,u,d).sendFeedback().then((function(t){if(e.sendMessage({name:"feedback-sent",data:t}),xn.notifyEvent("feedback-sent",l),u&&u.length>0){xn.notifyEvent("outbound-sent",{outboundId:u,outbound:c,formData:l});try{delete l.reportedBy}catch(n){}_m.trackEvent("outbound-".concat(u,"-submitted"),l)}})).catch((function(t){e.sendMessage({name:"feedback-sending-failed",data:"Something went wrong, please try again."}),xn.notifyEvent("error-while-sending")}))}"start-screen-drawing"===t.name&&e.showDrawingScreen(t.data)})),window.addEventListener("message",(function(t){if(t.origin===e.frameUrl||t.origin===Bh.getInstance().bannerUrl)try{for(var n=JSON.parse(t.data),o=0;o1&&void 0!==arguments[1]?arguments[1]:"INFO";!e||e.length<=0||(this.logArray.push({log:x(e,1e3),date:new Date,priority:t}),this.logArray.length>this.logMaxLength&&this.logArray.shift())}},{key:"addLogWithArgs",value:function(e,t){if(e&&!(e.length<=0)){var n="";try{for(var o=0;o1&&void 0!==arguments[1])||arguments[1],n=x(e.innerText||"",40).replace(/(\r\n|\n|\r)/gm,"").replace(/ +(?= )/g,""),o="",r="";if(void 0!==e.getAttribute){var i=e.getAttribute("id");i&&(o=' id="'.concat(i,'"'));var a=e.getAttribute("class");a&&(r=' class="'.concat(a,'"'))}var s=(e.tagName||"").toLowerCase(),l="<",c=">";return t||(l="[",c="]"),"".concat(l).concat(s).concat(o).concat(r).concat(c).concat(n).concat(l,"/").concat(s).concat(c)}(e.target),"CLICK")}}))}}],o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],n&&sn(t.prototype,n),o&&sn(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function hn(e){return hn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},hn(e)}function fn(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{};if("flow-started"===e){var n=_m.getInstance();n.setGlobalDataItem("webReplay",null),n.setGlobalDataItem("screenRecordingData",null),n.takeCurrentReplay()}var o=this.getInstance().eventListeners[e];if(o)for(var r=0;r((e,t,n)=>t in e?Mn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,"symbol"!=typeof t?t+"":t,n),Pn=Object.defineProperty,Dn=(e,t,n)=>((e,t,n)=>t in e?Pn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,"symbol"!=typeof t?t+"":t,n),Nn=(e=>(e[e.Document=0]="Document",e[e.DocumentType=1]="DocumentType",e[e.Element=2]="Element",e[e.Text=3]="Text",e[e.CDATA=4]="CDATA",e[e.Comment=5]="Comment",e))(Nn||{});const jn={Node:["childNodes","parentNode","parentElement","textContent"],ShadowRoot:["host","styleSheets"],Element:["shadowRoot","querySelector","querySelectorAll"],MutationObserver:[]},Fn={Node:["contains","getRootNode"],ShadowRoot:["getSelection"],Element:[],MutationObserver:["constructor"]},Bn={},_n=()=>!!globalThis.Zone;function Un(e){if(Bn[e])return Bn[e];const t=globalThis[e],n=t.prototype,o=e in jn?jn[e]:void 0,r=Boolean(o&&o.every((e=>{var t,o;return Boolean(null==(o=null==(t=Object.getOwnPropertyDescriptor(n,e))?void 0:t.get)?void 0:o.toString().includes("[native code]"))}))),i=e in Fn?Fn[e]:void 0,a=Boolean(i&&i.every((e=>{var t;return"function"==typeof n[e]&&(null==(t=n[e])?void 0:t.toString().includes("[native code]"))})));if(r&&a&&!_n())return Bn[e]=t.prototype,t.prototype;try{const o=document.createElement("iframe");document.body.appendChild(o);const r=o.contentWindow;if(!r)return t.prototype;const i=r[e].prototype;return document.body.removeChild(o),i?Bn[e]=i:n}catch{return n}}const Hn={};function zn(e,t,n){var o;const r=`${e}.${String(n)}`;if(Hn[r])return Hn[r].call(t);const i=Un(e),a=null==(o=Object.getOwnPropertyDescriptor(i,n))?void 0:o.get;return a?(Hn[r]=a,a.call(t)):t[n]}const qn={};function Wn(e,t,n){const o=`${e}.${String(n)}`;if(qn[o])return qn[o].bind(t);const r=Un(e)[n];return"function"!=typeof r?t[n]:(qn[o]=r,r.bind(t))}const Gn={childNodes:function(e){return zn("Node",e,"childNodes")},parentNode:function(e){return zn("Node",e,"parentNode")},parentElement:function(e){return zn("Node",e,"parentElement")},textContent:function(e){return zn("Node",e,"textContent")},contains:function(e,t){return Wn("Node",e,"contains")(t)},getRootNode:function(e){return Wn("Node",e,"getRootNode")()},host:function(e){return e&&"host"in e?zn("ShadowRoot",e,"host"):null},styleSheets:function(e){return e.styleSheets},shadowRoot:function(e){return e&&"shadowRoot"in e?zn("Element",e,"shadowRoot"):null},querySelector:function(e,t){return zn("Element",e,"querySelector")(t)},querySelectorAll:function(e,t){return zn("Element",e,"querySelectorAll")(t)},mutationObserver:function(){return Un("MutationObserver").constructor}};function Vn(e){return e.nodeType===e.ELEMENT_NODE}function Jn(e){const t=e&&"host"in e&&"mode"in e&&Gn.host(e)||null;return Boolean(t&&"shadowRoot"in t&&Gn.shadowRoot(t)===e)}function Zn(e){return"[object ShadowRoot]"===Object.prototype.toString.call(e)}function Kn(e){try{const n=e.rules||e.cssRules;if(!n)return null;let o=e.href;!o&&e.ownerNode&&e.ownerNode.ownerDocument&&(o=e.ownerNode.ownerDocument.location.href);const r=Array.from(n,(e=>Yn(e,o))).join("");return(t=r).includes(" background-clip: text;")&&!t.includes(" -webkit-background-clip: text;")&&(t=t.replace(/\sbackground-clip:\s*text;/g," -webkit-background-clip: text; background-clip: text;")),t}catch(n){return null}var t}function Yn(e,t){if(function(e){return"styleSheet"in e}(e)){let t;try{t=Kn(e.styleSheet)||function(e){const{cssText:t}=e;if(t.split('"').length<3)return t;const n=["@import",`url(${JSON.stringify(e.href)})`];return""===e.layerName?n.push("layer"):e.layerName&&n.push(`layer(${e.layerName})`),e.supportsText&&n.push(`supports(${e.supportsText})`),e.media.length&&n.push(e.media.mediaText),n.join(" ")+";"}(e)}catch(n){t=e.cssText}return e.styleSheet.href?so(t,e.styleSheet.href):t}{let n=e.cssText;return function(e){return"selectorText"in e}(e)&&e.selectorText.includes(":")&&(n=function(e){const t=/(\[(?:[\w-]+)[^\\])(:(?:[\w-]+)\])/gm;return e.replace(t,"$1\\$2")}(n)),t?so(n,t):n}}class Xn{constructor(){Dn(this,"idNodeMap",new Map),Dn(this,"nodeMetaMap",new WeakMap)}getId(e){var t;if(!e)return-1;return(null==(t=this.getMeta(e))?void 0:t.id)??-1}getNode(e){return this.idNodeMap.get(e)||null}getIds(){return Array.from(this.idNodeMap.keys())}getMeta(e){return this.nodeMetaMap.get(e)||null}removeNodeFromMap(e){const t=this.getId(e);this.idNodeMap.delete(t),e.childNodes&&e.childNodes.forEach((e=>this.removeNodeFromMap(e)))}has(e){return this.idNodeMap.has(e)}hasNode(e){return this.nodeMetaMap.has(e)}add(e,t){const n=t.id;this.idNodeMap.set(n,e),this.nodeMetaMap.set(e,t)}replace(e,t){const n=this.getNode(e);if(n){const e=this.nodeMetaMap.get(n);e&&this.nodeMetaMap.set(t,e)}this.idNodeMap.set(e,t)}reset(){this.idNodeMap=new Map,this.nodeMetaMap=new WeakMap}}function $n({element:e,maskInputOptions:t,tagName:n,type:o,value:r,maskInputFn:i}){let a=r||"";const s=o&&Qn(o);return(t[n.toLowerCase()]||s&&t[s])&&(a=i?i(a,e):"*".repeat(a.length)),a}function Qn(e){return e.toLowerCase()}const eo="__rrweb_original__";function to(e){const t=e.type;return e.hasAttribute("data-rr-is-password")?"password":t?Qn(t):null}function no(e,t){let n;try{n=new URL(e,t??window.location.href)}catch(r){return null}const o=n.pathname.match(/\.([0-9a-z]+)(?:$)/i);return(null==o?void 0:o[1])??null}const oo=/url\((?:(')([^']*)'|(")(.*?)"|([^)]*))\)/gm,ro=/^(?:[a-z+]+:)?\/\//i,io=/^www\..*/i,ao=/^(data:)([^,]*),(.*)/i;function so(e,t){return(e||"").replace(oo,((e,n,o,r,i,a)=>{const s=o||i||a,l=n||r||"";if(!s)return e;if(ro.test(s)||io.test(s))return`url(${l}${s}${l})`;if(ao.test(s))return`url(${l}${s}${l})`;if("/"===s[0])return`url(${l}${function(e){let t="";return t=e.indexOf("//")>-1?e.split("/").slice(0,3).join("/"):e.split("/")[0],t=t.split("?")[0],t}(t)+s}${l})`;const c=t.split("/"),u=s.split("/");c.pop();for(const t of u)"."!==t&&(".."===t?c.pop():c.push(t));return`url(${l}${c.join("/")}${l})`}))}function lo(e){return e.replace(/(\/\*[^*]*\*\/)|[\s;]/g,"")}function co(e,t){return function(e,t){const n=Array.from(t.childNodes),o=[];if(n.length>1&&e&&"string"==typeof e){const t=lo(e);for(let r=1;r=t.length);){let i=o(vo);if(","===i.slice(-1))i=wo(e,i.substring(0,i.length-1)),r.push(i);else{let o="";i=wo(e,i);let a=!1;for(;;){const e=t.charAt(n);if(""===e){r.push((i+o).trim());break}if(a)")"===e&&(a=!1);else{if(","===e){n+=1,r.push((i+o).trim());break}"("===e&&(a=!0)}o+=e,n+=1}}}return r.join(", ")}(e,o):"style"===n?so(o,xo(e)):"object"===t&&"data"===n?wo(e,o):o:wo(e,o):o}function Co(e,t,n){return("video"===e||"audio"===e)&&"autoplay"===t}function Io(e,t,n){if(!e)return!1;if(e.nodeType!==e.ELEMENT_NODE)return!!n&&Io(Gn.parentNode(e),t,n);for(let o=e.classList.length;o--;){const n=e.classList[o];if(t.test(n))return!0}return!!n&&Io(Gn.parentNode(e),t,n)}function Oo(e,t,n,o){let r;if(Vn(e)){if(r=e,!Gn.childNodes(r).length)return!1}else{if(null===Gn.parentElement(e))return!1;r=Gn.parentElement(e)}try{if("string"==typeof t){if(o){if(r.closest(`.${t}`))return!0}else if(r.classList.contains(t))return!0}else if(Io(r,t,o))return!0;if(n)if(o){if(r.closest(n))return!0}else if(r.matches(n))return!0}catch(i){}return!1}function Eo(e,t){const{doc:n,mirror:o,blockClass:r,blockSelector:i,needsMask:a,inlineStylesheet:s,maskInputOptions:l={},maskTextFn:c,maskInputFn:u,dataURLOptions:d={},inlineImages:p,recordCanvas:h,keepIframeSrcFn:f,newlyAddedElement:m=!1,cssCaptured:g=!1}=t,v=function(e,t){if(!t.hasNode(e))return;const n=t.getId(e);return 1===n?void 0:n}(n,o);switch(e.nodeType){case e.DOCUMENT_NODE:return"CSS1Compat"!==e.compatMode?{type:Nn.Document,childNodes:[],compatMode:e.compatMode}:{type:Nn.Document,childNodes:[]};case e.DOCUMENT_TYPE_NODE:return{type:Nn.DocumentType,name:e.name,publicId:e.publicId,systemId:e.systemId,rootId:v};case e.ELEMENT_NODE:return function(e,t){const{doc:n,blockClass:o,blockSelector:r,inlineStylesheet:i,maskInputOptions:a={},maskInputFn:s,dataURLOptions:l={},inlineImages:c,recordCanvas:u,keepIframeSrcFn:d,newlyAddedElement:p=!1,rootId:h}=t,f=function(e,t,n){try{if("string"==typeof t){if(e.classList.contains(t))return!0}else for(let n=e.classList.length;n--;){const o=e.classList[n];if(t.test(o))return!0}if(n)return e.matches(n)}catch(o){}return!1}(e,o,r),m=function(e){if(e instanceof HTMLFormElement)return"form";const t=Qn(e.tagName);return po.test(t)?"div":t}(e);let g={};const v=e.attributes.length;for(let w=0;wt.href===e.href));let o=null;t&&(o=Kn(t)),o&&(delete g.rel,delete g.href,g._cssText=o)}if("style"===m&&e.sheet){let t=Kn(e.sheet);t&&(e.childNodes.length>1&&(t=co(t,e)),g._cssText=t)}if("input"===m||"textarea"===m||"select"===m){const t=e.value,n=e.checked;"radio"!==g.type&&"checkbox"!==g.type&&"submit"!==g.type&&"button"!==g.type&&t?g.value=$n({element:e,type:to(e),tagName:m,value:t,maskInputOptions:a,maskInputFn:s}):n&&(g.checked=n)}"option"===m&&(e.selected&&!a.select?g.selected=!0:delete g.selected);"dialog"===m&&e.open&&(g.rr_open_mode=e.matches("dialog:modal")?"modal":"non-modal");if("canvas"===m&&u)if("2d"===e.__context)(function(e){const t=e.getContext("2d");if(!t)return!0;for(let n=0;n0!==e)))return!1}return!0})(e)||(g.rr_dataURL=e.toDataURL(l.type,l.quality));else if(!("__context"in e)){const t=e.toDataURL(l.type,l.quality),o=n.createElement("canvas");o.width=e.width,o.height=e.height;t!==o.toDataURL(l.type,l.quality)&&(g.rr_dataURL=t)}if("img"===m&&c){mo||(mo=n.createElement("canvas"),go=mo.getContext("2d"));const t=e,o=t.currentSrc||t.getAttribute("src")||"",r=t.crossOrigin,i=()=>{t.removeEventListener("load",i);try{mo.width=t.naturalWidth,mo.height=t.naturalHeight,go.drawImage(t,0,0),g.rr_dataURL=mo.toDataURL(l.type,l.quality)}catch(e){if("anonymous"!==t.crossOrigin)return t.crossOrigin="anonymous",void(t.complete&&0!==t.naturalWidth?i():t.addEventListener("load",i));console.warn(`Cannot inline img src=${o}! Error: ${e}`)}"anonymous"===t.crossOrigin&&(r?g.crossOrigin=r:t.removeAttribute("crossorigin"))};t.complete&&0!==t.naturalWidth?i():t.addEventListener("load",i)}if("audio"===m||"video"===m){const t=g;t.rr_mediaState=e.paused?"paused":"played",t.rr_mediaCurrentTime=e.currentTime,t.rr_mediaPlaybackRate=e.playbackRate,t.rr_mediaMuted=e.muted,t.rr_mediaLoop=e.loop,t.rr_mediaVolume=e.volume}p||(e.scrollLeft&&(g.rr_scrollLeft=e.scrollLeft),e.scrollTop&&(g.rr_scrollTop=e.scrollTop));if(f){const{width:t,height:n}=e.getBoundingClientRect();g={class:g.class,rr_width:`${t}px`,rr_height:`${n}px`}}"iframe"!==m||d(g.src)||(e.contentDocument||(g.rr_src=g.src),delete g.src);let y;try{customElements.get(m)&&(y=!0)}catch(b){}return{type:Nn.Element,tagName:m,attributes:g,childNodes:[],isSVG:ko(e)||void 0,needBlock:f,rootId:h,isCustom:y}}(e,{doc:n,blockClass:r,blockSelector:i,inlineStylesheet:s,maskInputOptions:l,maskInputFn:u,dataURLOptions:d,inlineImages:p,recordCanvas:h,keepIframeSrcFn:f,newlyAddedElement:m,rootId:v});case e.TEXT_NODE:return function(e,t){const{needsMask:n,maskTextFn:o,rootId:r,cssCaptured:i}=t,a=Gn.parentNode(e),s=a&&a.tagName;let l="";const c="STYLE"===s||void 0,u="SCRIPT"===s||void 0;u?l="SCRIPT_PLACEHOLDER":i||(l=Gn.textContent(e),c&&l&&(l=so(l,xo(t.doc))));!c&&!u&&l&&n&&(l=o?o(l,Gn.parentElement(e)):l.replace(/[\S]/g,"*"));return{type:Nn.Text,textContent:l||"",rootId:r}}(e,{doc:n,needsMask:a,maskTextFn:c,rootId:v,cssCaptured:g});case e.CDATA_SECTION_NODE:return{type:Nn.CDATA,textContent:"",rootId:v};case e.COMMENT_NODE:return{type:Nn.Comment,textContent:Gn.textContent(e)||"",rootId:v};default:return!1}}function To(e){return null==e?"":e.toLowerCase()}function Lo(e,t){const{doc:n,mirror:o,blockClass:r,blockSelector:i,maskTextClass:a,maskTextSelector:s,skipChild:l=!1,inlineStylesheet:c=!0,maskInputOptions:u={},maskTextFn:d,maskInputFn:p,slimDOMOptions:h,dataURLOptions:f={},inlineImages:m=!1,recordCanvas:g=!1,onSerialize:v,onIframeLoad:y,iframeLoadTimeout:b=5e3,onStylesheetLoad:w,stylesheetLoadTimeout:k=5e3,keepIframeSrcFn:x=(()=>!1),newlyAddedElement:S=!1,cssCaptured:C=!1}=t;let{needsMask:I}=t,{preserveWhiteSpace:O=!0}=t;if(!I){I=Oo(e,a,s,void 0===I)}const E=Eo(e,{doc:n,mirror:o,blockClass:r,blockSelector:i,needsMask:I,inlineStylesheet:c,maskInputOptions:u,maskTextFn:d,maskInputFn:p,dataURLOptions:f,inlineImages:m,recordCanvas:g,keepIframeSrcFn:x,newlyAddedElement:S,cssCaptured:C});if(!E)return console.warn(e,"not serialized"),null;let T;T=o.hasNode(e)?o.getId(e):function(e,t){if(t.comment&&e.type===Nn.Comment)return!0;if(e.type===Nn.Element){if(t.script&&("script"===e.tagName||"link"===e.tagName&&("preload"===e.attributes.rel||"modulepreload"===e.attributes.rel)&&"script"===e.attributes.as||"link"===e.tagName&&"prefetch"===e.attributes.rel&&"string"==typeof e.attributes.href&&"js"===no(e.attributes.href)))return!0;if(t.headFavicon&&("link"===e.tagName&&"shortcut icon"===e.attributes.rel||"meta"===e.tagName&&(To(e.attributes.name).match(/^msapplication-tile(image|color)$/)||"application-name"===To(e.attributes.name)||"icon"===To(e.attributes.rel)||"apple-touch-icon"===To(e.attributes.rel)||"shortcut icon"===To(e.attributes.rel))))return!0;if("meta"===e.tagName){if(t.headMetaDescKeywords&&To(e.attributes.name).match(/^description|keywords$/))return!0;if(t.headMetaSocial&&(To(e.attributes.property).match(/^(og|twitter|fb):/)||To(e.attributes.name).match(/^(og|twitter):/)||"pinterest"===To(e.attributes.name)))return!0;if(t.headMetaRobots&&("robots"===To(e.attributes.name)||"googlebot"===To(e.attributes.name)||"bingbot"===To(e.attributes.name)))return!0;if(t.headMetaHttpEquiv&&void 0!==e.attributes["http-equiv"])return!0;if(t.headMetaAuthorship&&("author"===To(e.attributes.name)||"generator"===To(e.attributes.name)||"framework"===To(e.attributes.name)||"publisher"===To(e.attributes.name)||"progid"===To(e.attributes.name)||To(e.attributes.property).match(/^article:/)||To(e.attributes.property).match(/^product:/)))return!0;if(t.headMetaVerification&&("google-site-verification"===To(e.attributes.name)||"yandex-verification"===To(e.attributes.name)||"csrf-token"===To(e.attributes.name)||"p:domain_verify"===To(e.attributes.name)||"verify-v1"===To(e.attributes.name)||"verification"===To(e.attributes.name)||"shopify-checkout-api-token"===To(e.attributes.name)))return!0}}return!1}(E,h)||!O&&E.type===Nn.Text&&!E.textContent.replace(/^\s+|\s+$/gm,"").length?ho:fo();const L=Object.assign(E,{id:T});if(o.add(e,L),T===ho)return null;v&&v(e);let A=!l;if(L.type===Nn.Element){A=A&&!L.needBlock,delete L.needBlock;const t=Gn.shadowRoot(e);t&&Zn(t)&&(L.isShadowHost=!0)}if((L.type===Nn.Document||L.type===Nn.Element)&&A){h.headWhitespace&&L.type===Nn.Element&&"head"===L.tagName&&(O=!1);const t={doc:n,mirror:o,blockClass:r,blockSelector:i,needsMask:I,maskTextClass:a,maskTextSelector:s,skipChild:l,inlineStylesheet:c,maskInputOptions:u,maskTextFn:d,maskInputFn:p,slimDOMOptions:h,dataURLOptions:f,inlineImages:m,recordCanvas:g,preserveWhiteSpace:O,onSerialize:v,onIframeLoad:y,iframeLoadTimeout:b,onStylesheetLoad:w,stylesheetLoadTimeout:k,keepIframeSrcFn:x,cssCaptured:!1};if(L.type===Nn.Element&&"textarea"===L.tagName&&void 0!==L.attributes.value);else{L.type===Nn.Element&&void 0!==L.attributes._cssText&&"string"==typeof L.attributes._cssText&&(t.cssCaptured=!0);for(const n of Array.from(Gn.childNodes(e))){const e=Lo(n,t);e&&L.childNodes.push(e)}}let S=null;if(Vn(e)&&(S=Gn.shadowRoot(e)))for(const e of Array.from(Gn.childNodes(S))){const n=Lo(e,t);n&&(Zn(S)&&(n.isShadow=!0),L.childNodes.push(n))}}const M=Gn.parentNode(e);return M&&Jn(M)&&Zn(M)&&(L.isShadow=!0),L.type===Nn.Element&&"iframe"===L.tagName&&function(e,t,n){const o=e.contentWindow;if(!o)return;let r,i=!1;try{r=o.document.readyState}catch(s){return}if("complete"!==r){const o=setTimeout((()=>{i||(t(),i=!0)}),n);return void e.addEventListener("load",(()=>{clearTimeout(o),i=!0,t()}))}const a="about:blank";if(o.location.href!==a||e.src===a||""===e.src)return setTimeout(t,0),e.addEventListener("load",t);e.addEventListener("load",t)}(e,(()=>{const t=e.contentDocument;if(t&&y){const n=Lo(t,{doc:t,mirror:o,blockClass:r,blockSelector:i,needsMask:I,maskTextClass:a,maskTextSelector:s,skipChild:!1,inlineStylesheet:c,maskInputOptions:u,maskTextFn:d,maskInputFn:p,slimDOMOptions:h,dataURLOptions:f,inlineImages:m,recordCanvas:g,preserveWhiteSpace:O,onSerialize:v,onIframeLoad:y,iframeLoadTimeout:b,onStylesheetLoad:w,stylesheetLoadTimeout:k,keepIframeSrcFn:x});n&&y(e,n)}}),b),L.type===Nn.Element&&"link"===L.tagName&&"string"==typeof L.attributes.rel&&("stylesheet"===L.attributes.rel||"preload"===L.attributes.rel&&"string"==typeof L.attributes.href&&"css"===no(L.attributes.href))&&function(e,t,n){let o,r=!1;try{o=e.sheet}catch(a){return}if(o)return;const i=setTimeout((()=>{r||(t(),r=!0)}),n);e.addEventListener("load",(()=>{clearTimeout(i),r=!0,t()}))}(e,(()=>{if(w){const t=Lo(e,{doc:n,mirror:o,blockClass:r,blockSelector:i,needsMask:I,maskTextClass:a,maskTextSelector:s,skipChild:!1,inlineStylesheet:c,maskInputOptions:u,maskTextFn:d,maskInputFn:p,slimDOMOptions:h,dataURLOptions:f,inlineImages:m,recordCanvas:g,preserveWhiteSpace:O,onSerialize:v,onIframeLoad:y,iframeLoadTimeout:b,onStylesheetLoad:w,stylesheetLoadTimeout:k,keepIframeSrcFn:x});t&&w(e,t)}}),k),L}function Ao(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function Mo(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var n=function e(){return this instanceof e?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,o.get?o:{enumerable:!0,get:function(){return e[t]}})})),n}var Ro={exports:{}},Po=String,Do=function(){return{isColorSupported:!1,reset:Po,bold:Po,dim:Po,italic:Po,underline:Po,inverse:Po,hidden:Po,strikethrough:Po,black:Po,red:Po,green:Po,yellow:Po,blue:Po,magenta:Po,cyan:Po,white:Po,gray:Po,bgBlack:Po,bgRed:Po,bgGreen:Po,bgYellow:Po,bgBlue:Po,bgMagenta:Po,bgCyan:Po,bgWhite:Po}};Ro.exports=Do(),Ro.exports.createColors=Do;var No=Ro.exports;const jo=Mo(Object.freeze(Object.defineProperty({__proto__:null,default:{}},Symbol.toStringTag,{value:"Module"})));let Fo=No,Bo=jo,_o=class e extends Error{constructor(t,n,o,r,i,a){super(t),this.name="CssSyntaxError",this.reason=t,i&&(this.file=i),r&&(this.source=r),a&&(this.plugin=a),void 0!==n&&void 0!==o&&("number"==typeof n?(this.line=n,this.column=o):(this.line=n.line,this.column=n.column,this.endLine=o.line,this.endColumn=o.column)),this.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(this,e)}setMessage(){this.message=this.plugin?this.plugin+": ":"",this.message+=this.file?this.file:"",void 0!==this.line&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason}showSourceCode(e){if(!this.source)return"";let t=this.source;null==e&&(e=Fo.isColorSupported),Bo&&e&&(t=Bo(t));let n,o,r=t.split(/\r?\n/),i=Math.max(this.line-3,0),a=Math.min(this.line+2,r.length),s=String(a).length;if(e){let{bold:e,gray:t,red:r}=Fo.createColors(!0);n=t=>e(r(t)),o=e=>t(e)}else n=o=e=>e;return r.slice(i,a).map(((e,t)=>{let r=i+1+t,a=" "+(" "+r).slice(-s)+" | ";if(r===this.line){let t=o(a.replace(/\d/g," "))+e.slice(0,this.column-1).replace(/[^\t]/g," ");return n(">")+o(a)+e+"\n "+t+n("^")}return" "+o(a)+e})).join("\n")}toString(){let e=this.showSourceCode();return e&&(e="\n\n"+e+"\n"),this.name+": "+this.message+e}};var Uo=_o;_o.default=_o;var Ho={};Ho.isClean=Symbol("isClean"),Ho.my=Symbol("my");const zo={after:"\n",beforeClose:"\n",beforeComment:"\n",beforeDecl:"\n",beforeOpen:" ",beforeRule:"\n",colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:!1};let qo=class{constructor(e){this.builder=e}atrule(e,t){let n="@"+e.name,o=e.params?this.rawValue(e,"params"):"";if(void 0!==e.raws.afterName?n+=e.raws.afterName:o&&(n+=" "),e.nodes)this.block(e,n+o);else{let r=(e.raws.between||"")+(t?";":"");this.builder(n+o+r,e)}}beforeAfter(e,t){let n;n="decl"===e.type?this.raw(e,null,"beforeDecl"):"comment"===e.type?this.raw(e,null,"beforeComment"):"before"===t?this.raw(e,null,"beforeRule"):this.raw(e,null,"beforeClose");let o=e.parent,r=0;for(;o&&"root"!==o.type;)r+=1,o=o.parent;if(n.includes("\n")){let t=this.raw(e,null,"indent");if(t.length)for(let e=0;e0&&"comment"===e.nodes[t].type;)t-=1;let n=this.raw(e,"semicolon");for(let o=0;o{if(o=e.raws[t],void 0!==o)return!1}))}var a;return void 0===o&&(o=zo[n]),i.rawCache[n]=o,o}rawBeforeClose(e){let t;return e.walk((e=>{if(e.nodes&&e.nodes.length>0&&void 0!==e.raws.after)return t=e.raws.after,t.includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1})),t&&(t=t.replace(/\S/g,"")),t}rawBeforeComment(e,t){let n;return e.walkComments((e=>{if(void 0!==e.raws.before)return n=e.raws.before,n.includes("\n")&&(n=n.replace(/[^\n]+$/,"")),!1})),void 0===n?n=this.raw(t,null,"beforeDecl"):n&&(n=n.replace(/\S/g,"")),n}rawBeforeDecl(e,t){let n;return e.walkDecls((e=>{if(void 0!==e.raws.before)return n=e.raws.before,n.includes("\n")&&(n=n.replace(/[^\n]+$/,"")),!1})),void 0===n?n=this.raw(t,null,"beforeRule"):n&&(n=n.replace(/\S/g,"")),n}rawBeforeOpen(e){let t;return e.walk((e=>{if("decl"!==e.type&&(t=e.raws.between,void 0!==t))return!1})),t}rawBeforeRule(e){let t;return e.walk((n=>{if(n.nodes&&(n.parent!==e||e.first!==n)&&void 0!==n.raws.before)return t=n.raws.before,t.includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1})),t&&(t=t.replace(/\S/g,"")),t}rawColon(e){let t;return e.walkDecls((e=>{if(void 0!==e.raws.between)return t=e.raws.between.replace(/[^\s:]/g,""),!1})),t}rawEmptyBody(e){let t;return e.walk((e=>{if(e.nodes&&0===e.nodes.length&&(t=e.raws.after,void 0!==t))return!1})),t}rawIndent(e){if(e.raws.indent)return e.raws.indent;let t;return e.walk((n=>{let o=n.parent;if(o&&o!==e&&o.parent&&o.parent===e&&void 0!==n.raws.before){let e=n.raws.before.split("\n");return t=e[e.length-1],t=t.replace(/\S/g,""),!1}})),t}rawSemicolon(e){let t;return e.walk((e=>{if(e.nodes&&e.nodes.length&&"decl"===e.last.type&&(t=e.raws.semicolon,void 0!==t))return!1})),t}rawValue(e,t){let n=e[t],o=e.raws[t];return o&&o.value===n?o.raw:n}root(e){this.body(e),e.raws.after&&this.builder(e.raws.after)}rule(e){this.block(e,this.rawValue(e,"selector")),e.raws.ownSemicolon&&this.builder(e.raws.ownSemicolon,e,"end")}stringify(e,t){if(!this[e.type])throw new Error("Unknown AST node type "+e.type+". Maybe you need to change PostCSS stringifier.");this[e.type](e,t)}};var Wo=qo;qo.default=qo;let Go=Wo;function Vo(e,t){new Go(t).stringify(e)}var Jo=Vo;Vo.default=Vo;let{isClean:Zo,my:Ko}=Ho,Yo=Uo,Xo=Wo,$o=Jo;function Qo(e,t){let n=new e.constructor;for(let o in e){if(!Object.prototype.hasOwnProperty.call(e,o))continue;if("proxyCache"===o)continue;let r=e[o],i=typeof r;"parent"===o&&"object"===i?t&&(n[o]=t):"source"===o?n[o]=r:Array.isArray(r)?n[o]=r.map((e=>Qo(e,n))):("object"===i&&null!==r&&(r=Qo(r)),n[o]=r)}return n}let er=class{constructor(e={}){this.raws={},this[Zo]=!1,this[Ko]=!0;for(let t in e)if("nodes"===t){this.nodes=[];for(let n of e[t])"function"==typeof n.clone?this.append(n.clone()):this.append(n)}else this[t]=e[t]}addToError(e){if(e.postcssNode=this,e.stack&&this.source&&/\n\s{4}at /.test(e.stack)){let t=this.source;e.stack=e.stack.replace(/\n\s{4}at /,`$&${t.input.from}:${t.start.line}:${t.start.column}$&`)}return e}after(e){return this.parent.insertAfter(this,e),this}assign(e={}){for(let t in e)this[t]=e[t];return this}before(e){return this.parent.insertBefore(this,e),this}cleanRaws(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between}clone(e={}){let t=Qo(this);for(let n in e)t[n]=e[n];return t}cloneAfter(e={}){let t=this.clone(e);return this.parent.insertAfter(this,t),t}cloneBefore(e={}){let t=this.clone(e);return this.parent.insertBefore(this,t),t}error(e,t={}){if(this.source){let{end:n,start:o}=this.rangeBy(t);return this.source.input.error(e,{column:o.column,line:o.line},{column:n.column,line:n.line},t)}return new Yo(e)}getProxyProcessor(){return{get:(e,t)=>"proxyOf"===t?e:"root"===t?()=>e.root().toProxy():e[t],set:(e,t,n)=>(e[t]===n||(e[t]=n,"prop"!==t&&"value"!==t&&"name"!==t&&"params"!==t&&"important"!==t&&"text"!==t||e.markDirty()),!0)}}markDirty(){if(this[Zo]){this[Zo]=!1;let e=this;for(;e=e.parent;)e[Zo]=!1}}next(){if(!this.parent)return;let e=this.parent.index(this);return this.parent.nodes[e+1]}positionBy(e,t){let n=this.source.start;if(e.index)n=this.positionInside(e.index,t);else if(e.word){let o=(t=this.toString()).indexOf(e.word);-1!==o&&(n=this.positionInside(o,t))}return n}positionInside(e,t){let n=t||this.toString(),o=this.source.start.column,r=this.source.start.line;for(let i=0;i"object"==typeof e&&e.toJSON?e.toJSON(null,t):e));else if("object"==typeof e&&e.toJSON)n[i]=e.toJSON(null,t);else if("source"===i){let o=t.get(e.input);null==o&&(o=r,t.set(e.input,r),r++),n[i]={end:e.end,inputId:o,start:e.start}}else n[i]=e}return o&&(n.inputs=[...t.keys()].map((e=>e.toJSON()))),n}toProxy(){return this.proxyCache||(this.proxyCache=new Proxy(this,this.getProxyProcessor())),this.proxyCache}toString(e=$o){e.stringify&&(e=e.stringify);let t="";return e(this,(e=>{t+=e})),t}warn(e,t,n){let o={node:this};for(let r in n)o[r]=n[r];return e.warn(t,o)}get proxyOf(){return this}};var tr=er;er.default=er;let nr=tr,or=class extends nr{constructor(e){e&&void 0!==e.value&&"string"!=typeof e.value&&(e={...e,value:String(e.value)}),super(e),this.type="decl"}get variable(){return this.prop.startsWith("--")||"$"===this.prop[0]}};var rr=or;or.default=or;var ir={nanoid:(e=21)=>{let t="",n=e;for(;n--;)t+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[64*Math.random()|0];return t},customAlphabet:(e,t=21)=>(n=t)=>{let o="",r=n;for(;r--;)o+=e[Math.random()*e.length|0];return o}};let{SourceMapConsumer:ar,SourceMapGenerator:sr}=jo,{existsSync:lr,readFileSync:cr}=jo,{dirname:ur,join:dr}=jo;let pr=class{constructor(e,t){if(!1===t.map)return;this.loadAnnotation(e),this.inline=this.startWith(this.annotation,"data:");let n=t.map?t.map.prev:void 0,o=this.loadMap(t.from,n);!this.mapFile&&t.from&&(this.mapFile=t.from),this.mapFile&&(this.root=ur(this.mapFile)),o&&(this.text=o)}consumer(){return this.consumerCache||(this.consumerCache=new ar(this.text)),this.consumerCache}decodeInline(e){if(/^data:application\/json;charset=utf-?8,/.test(e)||/^data:application\/json,/.test(e))return decodeURIComponent(e.substr(RegExp.lastMatch.length));if(/^data:application\/json;charset=utf-?8;base64,/.test(e)||/^data:application\/json;base64,/.test(e))return t=e.substr(RegExp.lastMatch.length),Buffer?Buffer.from(t,"base64").toString():window.atob(t);var t;let n=e.match(/data:application\/json;([^,]+),/)[1];throw new Error("Unsupported source map encoding "+n)}getAnnotationURL(e){return e.replace(/^\/\*\s*# sourceMappingURL=/,"").trim()}isMap(e){return"object"==typeof e&&("string"==typeof e.mappings||"string"==typeof e._mappings||Array.isArray(e.sections))}loadAnnotation(e){let t=e.match(/\/\*\s*# sourceMappingURL=/gm);if(!t)return;let n=e.lastIndexOf(t.pop()),o=e.indexOf("*/",n);n>-1&&o>-1&&(this.annotation=this.getAnnotationURL(e.substring(n,o)))}loadFile(e){if(this.root=ur(e),lr(e))return this.mapFile=e,cr(e,"utf-8").toString().trim()}loadMap(e,t){if(!1===t)return!1;if(t){if("string"==typeof t)return t;if("function"!=typeof t){if(t instanceof ar)return sr.fromSourceMap(t).toString();if(t instanceof sr)return t.toString();if(this.isMap(t))return JSON.stringify(t);throw new Error("Unsupported previous source map format: "+t.toString())}{let n=t(e);if(n){let e=this.loadFile(n);if(!e)throw new Error("Unable to load previous source map: "+n.toString());return e}}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){let t=this.annotation;return e&&(t=dr(ur(e),t)),this.loadFile(t)}}}startWith(e,t){return!!e&&e.substr(0,t.length)===t}withContent(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)}};var hr=pr;pr.default=pr;let{SourceMapConsumer:fr,SourceMapGenerator:mr}=jo,{fileURLToPath:gr,pathToFileURL:vr}=jo,{isAbsolute:yr,resolve:br}=jo,{nanoid:wr}=ir,kr=jo,xr=Uo,Sr=hr,Cr=Symbol("fromOffsetCache"),Ir=Boolean(fr&&mr),Or=Boolean(br&&yr),Er=class{constructor(e,t={}){if(null==e||"object"==typeof e&&!e.toString)throw new Error(`PostCSS received ${e} instead of CSS string`);if(this.css=e.toString(),"\ufeff"===this.css[0]||"￾"===this.css[0]?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,t.from&&(!Or||/^\w+:\/\//.test(t.from)||yr(t.from)?this.file=t.from:this.file=br(t.from)),Or&&Ir){let e=new Sr(this.css,t);if(e.text){this.map=e;let t=e.consumer().file;!this.file&&t&&(this.file=this.mapResolve(t))}}this.file||(this.id=""),this.map&&(this.map.file=this.from)}error(e,t,n,o={}){let r,i,a;if(t&&"object"==typeof t){let e=t,o=n;if("number"==typeof e.offset){let o=this.fromOffset(e.offset);t=o.line,n=o.col}else t=e.line,n=e.column;if("number"==typeof o.offset){let e=this.fromOffset(o.offset);i=e.line,a=e.col}else i=o.line,a=o.column}else if(!n){let e=this.fromOffset(t);t=e.line,n=e.col}let s=this.origin(t,n,i,a);return r=s?new xr(e,void 0===s.endLine?s.line:{column:s.column,line:s.line},void 0===s.endLine?s.column:{column:s.endColumn,line:s.endLine},s.source,s.file,o.plugin):new xr(e,void 0===i?t:{column:n,line:t},void 0===i?n:{column:a,line:i},this.css,this.file,o.plugin),r.input={column:n,endColumn:a,endLine:i,line:t,source:this.css},this.file&&(vr&&(r.input.url=vr(this.file).toString()),r.input.file=this.file),r}fromOffset(e){let t,n;if(this[Cr])n=this[Cr];else{let e=this.css.split("\n");n=new Array(e.length);let t=0;for(let o=0,r=e.length;o=t)o=n.length-1;else{let t,r=n.length-2;for(;o>1),e=n[t+1])){o=t;break}o=t+1}}return{col:e-n[o]+1,line:o+1}}mapResolve(e){return/^\w+:\/\//.test(e)?e:br(this.map.consumer().sourceRoot||this.map.root||".",e)}origin(e,t,n,o){if(!this.map)return!1;let r,i,a=this.map.consumer(),s=a.originalPositionFor({column:t,line:e});if(!s.source)return!1;"number"==typeof n&&(r=a.originalPositionFor({column:o,line:n})),i=yr(s.source)?vr(s.source):new URL(s.source,this.map.consumer().sourceRoot||vr(this.map.mapFile));let l={column:s.column,endColumn:r&&r.column,endLine:r&&r.line,line:s.line,url:i.toString()};if("file:"===i.protocol){if(!gr)throw new Error("file: protocol is not available in this PostCSS build");l.file=gr(i)}let c=a.sourceContentFor(s.source);return c&&(l.source=c),l}toJSON(){let e={};for(let t of["hasBOM","css","file","id"])null!=this[t]&&(e[t]=this[t]);return this.map&&(e.map={...this.map},e.map.consumerCache&&(e.map.consumerCache=void 0)),e}get from(){return this.file||this.id}};var Tr=Er;Er.default=Er,kr&&kr.registerInput&&kr.registerInput(Er);let{SourceMapConsumer:Lr,SourceMapGenerator:Ar}=jo,{dirname:Mr,relative:Rr,resolve:Pr,sep:Dr}=jo,{pathToFileURL:Nr}=jo,jr=Tr,Fr=Boolean(Lr&&Ar),Br=Boolean(Mr&&Pr&&Rr&&Dr);var _r=class{constructor(e,t,n,o){this.stringify=e,this.mapOpts=n.map||{},this.root=t,this.opts=n,this.css=o,this.originalCSS=o,this.usesFileUrls=!this.mapOpts.from&&this.mapOpts.absolute,this.memoizedFileURLs=new Map,this.memoizedPaths=new Map,this.memoizedURLs=new Map}addAnnotation(){let e;e=this.isInline()?"data:application/json;base64,"+this.toBase64(this.map.toString()):"string"==typeof this.mapOpts.annotation?this.mapOpts.annotation:"function"==typeof this.mapOpts.annotation?this.mapOpts.annotation(this.opts.to,this.root):this.outputFile()+".map";let t="\n";this.css.includes("\r\n")&&(t="\r\n"),this.css+=t+"/*# sourceMappingURL="+e+" */"}applyPrevMaps(){for(let e of this.previous()){let t,n=this.toUrl(this.path(e.file)),o=e.root||Mr(e.file);!1===this.mapOpts.sourcesContent?(t=new Lr(e.text),t.sourcesContent&&(t.sourcesContent=null)):t=e.consumer(),this.map.applySourceMap(t,n,this.toUrl(this.path(o)))}}clearAnnotation(){if(!1!==this.mapOpts.annotation)if(this.root){let e;for(let t=this.root.nodes.length-1;t>=0;t--)e=this.root.nodes[t],"comment"===e.type&&0===e.text.indexOf("# sourceMappingURL=")&&this.root.removeChild(t)}else this.css&&(this.css=this.css.replace(/\n*?\/\*#[\S\s]*?\*\/$/gm,""))}generate(){if(this.clearAnnotation(),Br&&Fr&&this.isMap())return this.generateMap();{let e="";return this.stringify(this.root,(t=>{e+=t})),[e]}}generateMap(){if(this.root)this.generateString();else if(1===this.previous().length){let e=this.previous()[0].consumer();e.file=this.outputFile(),this.map=Ar.fromSourceMap(e,{ignoreInvalidMapping:!0})}else this.map=new Ar({file:this.outputFile(),ignoreInvalidMapping:!0}),this.map.addMapping({generated:{column:0,line:1},original:{column:0,line:1},source:this.opts.from?this.toUrl(this.path(this.opts.from)):""});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]}generateString(){this.css="",this.map=new Ar({file:this.outputFile(),ignoreInvalidMapping:!0});let e,t,n=1,o=1,r="",i={generated:{column:0,line:0},original:{column:0,line:0},source:""};this.stringify(this.root,((a,s,l)=>{if(this.css+=a,s&&"end"!==l&&(i.generated.line=n,i.generated.column=o-1,s.source&&s.source.start?(i.source=this.sourcePath(s),i.original.line=s.source.start.line,i.original.column=s.source.start.column-1,this.map.addMapping(i)):(i.source=r,i.original.line=1,i.original.column=0,this.map.addMapping(i))),e=a.match(/\n/g),e?(n+=e.length,t=a.lastIndexOf("\n"),o=a.length-t):o+=a.length,s&&"start"!==l){let e=s.parent||{raws:{}};("decl"===s.type||"atrule"===s.type&&!s.nodes)&&s===e.last&&!e.raws.semicolon||(s.source&&s.source.end?(i.source=this.sourcePath(s),i.original.line=s.source.end.line,i.original.column=s.source.end.column-1,i.generated.line=n,i.generated.column=o-2,this.map.addMapping(i)):(i.source=r,i.original.line=1,i.original.column=0,i.generated.line=n,i.generated.column=o-1,this.map.addMapping(i)))}}))}isAnnotation(){return!!this.isInline()||(void 0!==this.mapOpts.annotation?this.mapOpts.annotation:!this.previous().length||this.previous().some((e=>e.annotation)))}isInline(){if(void 0!==this.mapOpts.inline)return this.mapOpts.inline;let e=this.mapOpts.annotation;return(void 0===e||!0===e)&&(!this.previous().length||this.previous().some((e=>e.inline)))}isMap(){return void 0!==this.opts.map?!!this.opts.map:this.previous().length>0}isSourcesContent(){return void 0!==this.mapOpts.sourcesContent?this.mapOpts.sourcesContent:!this.previous().length||this.previous().some((e=>e.withContent()))}outputFile(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"}path(e){if(this.mapOpts.absolute)return e;if(60===e.charCodeAt(0))return e;if(/^\w+:\/\//.test(e))return e;let t=this.memoizedPaths.get(e);if(t)return t;let n=this.opts.to?Mr(this.opts.to):".";"string"==typeof this.mapOpts.annotation&&(n=Mr(Pr(n,this.mapOpts.annotation)));let o=Rr(n,e);return this.memoizedPaths.set(e,o),o}previous(){if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk((e=>{if(e.source&&e.source.input.map){let t=e.source.input.map;this.previousMaps.includes(t)||this.previousMaps.push(t)}}));else{let e=new jr(this.originalCSS,this.opts);e.map&&this.previousMaps.push(e.map)}return this.previousMaps}setSourcesContent(){let e={};if(this.root)this.root.walk((t=>{if(t.source){let n=t.source.input.from;if(n&&!e[n]){e[n]=!0;let o=this.usesFileUrls?this.toFileUrl(n):this.toUrl(this.path(n));this.map.setSourceContent(o,t.source.input.css)}}}));else if(this.css){let e=this.opts.from?this.toUrl(this.path(this.opts.from)):"";this.map.setSourceContent(e,this.css)}}sourcePath(e){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(e.source.input.from):this.toUrl(this.path(e.source.input.from))}toBase64(e){return Buffer?Buffer.from(e).toString("base64"):window.btoa(unescape(encodeURIComponent(e)))}toFileUrl(e){let t=this.memoizedFileURLs.get(e);if(t)return t;if(Nr){let t=Nr(e).toString();return this.memoizedFileURLs.set(e,t),t}throw new Error("`map.absolute` option is not available in this PostCSS build")}toUrl(e){let t=this.memoizedURLs.get(e);if(t)return t;"\\"===Dr&&(e=e.replace(/\\/g,"/"));let n=encodeURI(e).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(e,n),n}};let Ur=tr,Hr=class extends Ur{constructor(e){super(e),this.type="comment"}};var zr=Hr;Hr.default=Hr;let qr,Wr,Gr,Vr,{isClean:Jr,my:Zr}=Ho,Kr=rr,Yr=zr,Xr=tr;function $r(e){return e.map((e=>(e.nodes&&(e.nodes=$r(e.nodes)),delete e.source,e)))}function Qr(e){if(e[Jr]=!1,e.proxyOf.nodes)for(let t of e.proxyOf.nodes)Qr(t)}let ei=class e extends Xr{append(...e){for(let t of e){let e=this.normalize(t,this.last);for(let t of e)this.proxyOf.nodes.push(t)}return this.markDirty(),this}cleanRaws(e){if(super.cleanRaws(e),this.nodes)for(let t of this.nodes)t.cleanRaws(e)}each(e){if(!this.proxyOf.nodes)return;let t,n,o=this.getIterator();for(;this.indexes[o]"proxyOf"===t?e:e[t]?"each"===t||"string"==typeof t&&t.startsWith("walk")?(...n)=>e[t](...n.map((e=>"function"==typeof e?(t,n)=>e(t.toProxy(),n):e))):"every"===t||"some"===t?n=>e[t](((e,...t)=>n(e.toProxy(),...t))):"root"===t?()=>e.root().toProxy():"nodes"===t?e.nodes.map((e=>e.toProxy())):"first"===t||"last"===t?e[t].toProxy():e[t]:e[t],set:(e,t,n)=>(e[t]===n||(e[t]=n,"name"!==t&&"params"!==t&&"selector"!==t||e.markDirty()),!0)}}index(e){return"number"==typeof e?e:(e.proxyOf&&(e=e.proxyOf),this.proxyOf.nodes.indexOf(e))}insertAfter(e,t){let n,o=this.index(e),r=this.normalize(t,this.proxyOf.nodes[o]).reverse();o=this.index(e);for(let i of r)this.proxyOf.nodes.splice(o+1,0,i);for(let i in this.indexes)n=this.indexes[i],o(t[Zr]||e.rebuild(t),(t=t.proxyOf).parent&&t.parent.removeChild(t),t[Jr]&&Qr(t),void 0===t.raws.before&&n&&void 0!==n.raws.before&&(t.raws.before=n.raws.before.replace(/\S/g,"")),t.parent=this.proxyOf,t)))}prepend(...e){e=e.reverse();for(let t of e){let e=this.normalize(t,this.first,"prepend").reverse();for(let t of e)this.proxyOf.nodes.unshift(t);for(let t in this.indexes)this.indexes[t]=this.indexes[t]+e.length}return this.markDirty(),this}push(e){return e.parent=this,this.proxyOf.nodes.push(e),this}removeAll(){for(let e of this.proxyOf.nodes)e.parent=void 0;return this.proxyOf.nodes=[],this.markDirty(),this}removeChild(e){let t;e=this.index(e),this.proxyOf.nodes[e].parent=void 0,this.proxyOf.nodes.splice(e,1);for(let n in this.indexes)t=this.indexes[n],t>=e&&(this.indexes[n]=t-1);return this.markDirty(),this}replaceValues(e,t,n){return n||(n=t,t={}),this.walkDecls((o=>{t.props&&!t.props.includes(o.prop)||t.fast&&!o.value.includes(t.fast)||(o.value=o.value.replace(e,n))})),this.markDirty(),this}some(e){return this.nodes.some(e)}walk(e){return this.each(((t,n)=>{let o;try{o=e(t,n)}catch(r){throw t.addToError(r)}return!1!==o&&t.walk&&(o=t.walk(e)),o}))}walkAtRules(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("atrule"===n.type&&e.test(n.name))return t(n,o)})):this.walk(((n,o)=>{if("atrule"===n.type&&n.name===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("atrule"===e.type)return t(e,n)})))}walkComments(e){return this.walk(((t,n)=>{if("comment"===t.type)return e(t,n)}))}walkDecls(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("decl"===n.type&&e.test(n.prop))return t(n,o)})):this.walk(((n,o)=>{if("decl"===n.type&&n.prop===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("decl"===e.type)return t(e,n)})))}walkRules(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("rule"===n.type&&e.test(n.selector))return t(n,o)})):this.walk(((n,o)=>{if("rule"===n.type&&n.selector===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("rule"===e.type)return t(e,n)})))}get first(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}get last(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}};ei.registerParse=e=>{qr=e},ei.registerRule=e=>{Wr=e},ei.registerAtRule=e=>{Gr=e},ei.registerRoot=e=>{Vr=e};var ti=ei;ei.default=ei,ei.rebuild=e=>{"atrule"===e.type?Object.setPrototypeOf(e,Gr.prototype):"rule"===e.type?Object.setPrototypeOf(e,Wr.prototype):"decl"===e.type?Object.setPrototypeOf(e,Kr.prototype):"comment"===e.type?Object.setPrototypeOf(e,Yr.prototype):"root"===e.type&&Object.setPrototypeOf(e,Vr.prototype),e[Zr]=!0,e.nodes&&e.nodes.forEach((e=>{ei.rebuild(e)}))};let ni,oi,ri=ti,ii=class extends ri{constructor(e){super({type:"document",...e}),this.nodes||(this.nodes=[])}toResult(e={}){return new ni(new oi,this,e).stringify()}};ii.registerLazyResult=e=>{ni=e},ii.registerProcessor=e=>{oi=e};var ai=ii;ii.default=ii;let si=class{constructor(e,t={}){if(this.type="warning",this.text=e,t.node&&t.node.source){let e=t.node.rangeBy(t);this.line=e.start.line,this.column=e.start.column,this.endLine=e.end.line,this.endColumn=e.end.column}for(let n in t)this[n]=t[n]}toString(){return this.node?this.node.error(this.text,{index:this.index,plugin:this.plugin,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text}};var li=si;si.default=si;let ci=li,ui=class{constructor(e,t,n){this.processor=e,this.messages=[],this.root=t,this.opts=n,this.css=void 0,this.map=void 0}toString(){return this.css}warn(e,t={}){t.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(t.plugin=this.lastPlugin.postcssPlugin);let n=new ci(e,t);return this.messages.push(n),n}warnings(){return this.messages.filter((e=>"warning"===e.type))}get content(){return this.css}};var di=ui;ui.default=ui;const pi="'".charCodeAt(0),hi='"'.charCodeAt(0),fi="\\".charCodeAt(0),mi="/".charCodeAt(0),gi="\n".charCodeAt(0),vi=" ".charCodeAt(0),yi="\f".charCodeAt(0),bi="\t".charCodeAt(0),wi="\r".charCodeAt(0),ki="[".charCodeAt(0),xi="]".charCodeAt(0),Si="(".charCodeAt(0),Ci=")".charCodeAt(0),Ii="{".charCodeAt(0),Oi="}".charCodeAt(0),Ei=";".charCodeAt(0),Ti="*".charCodeAt(0),Li=":".charCodeAt(0),Ai="@".charCodeAt(0),Mi=/[\t\n\f\r "#'()/;[\\\]{}]/g,Ri=/[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g,Pi=/.[\r\n"'(/\\]/,Di=/[\da-f]/i;let Ni=ti,ji=class extends Ni{constructor(e){super(e),this.type="atrule"}append(...e){return this.proxyOf.nodes||(this.nodes=[]),super.append(...e)}prepend(...e){return this.proxyOf.nodes||(this.nodes=[]),super.prepend(...e)}};var Fi=ji;ji.default=ji,Ni.registerAtRule(ji);let Bi,_i,Ui=ti,Hi=class extends Ui{constructor(e){super(e),this.type="root",this.nodes||(this.nodes=[])}normalize(e,t,n){let o=super.normalize(e);if(t)if("prepend"===n)this.nodes.length>1?t.raws.before=this.nodes[1].raws.before:delete t.raws.before;else if(this.first!==t)for(let r of o)r.raws.before=t.raws.before;return o}removeChild(e,t){let n=this.index(e);return!t&&0===n&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[n].raws.before),super.removeChild(e)}toResult(e={}){return new Bi(new _i,this,e).stringify()}};Hi.registerLazyResult=e=>{Bi=e},Hi.registerProcessor=e=>{_i=e};var zi=Hi;Hi.default=Hi,Ui.registerRoot(Hi);let qi={comma:e=>qi.split(e,[","],!0),space:e=>qi.split(e,[" ","\n","\t"]),split(e,t,n){let o=[],r="",i=!1,a=0,s=!1,l="",c=!1;for(let u of e)c?c=!1:"\\"===u?c=!0:s?u===l&&(s=!1):'"'===u||"'"===u?(s=!0,l=u):"("===u?a+=1:")"===u?a>0&&(a-=1):0===a&&t.includes(u)&&(i=!0),i?(""!==r&&o.push(r.trim()),r="",i=!1):r+=u;return(n||""!==r)&&o.push(r.trim()),o}};var Wi=qi;qi.default=qi;let Gi=ti,Vi=Wi,Ji=class extends Gi{constructor(e){super(e),this.type="rule",this.nodes||(this.nodes=[])}get selectors(){return Vi.comma(this.selector)}set selectors(e){let t=this.selector?this.selector.match(/,\s*/):null,n=t?t[0]:","+this.raw("between","beforeOpen");this.selector=e.join(n)}};var Zi=Ji;Ji.default=Ji,Gi.registerRule(Ji);let Ki=rr,Yi=function(e,t={}){let n,o,r,i,a,s,l,c,u,d,p=e.css.valueOf(),h=t.ignoreErrors,f=p.length,m=0,g=[],v=[];function y(t){throw e.error("Unclosed "+t,m)}return{back:function(e){v.push(e)},endOfFile:function(){return 0===v.length&&m>=f},nextToken:function(e){if(v.length)return v.pop();if(m>=f)return;let t=!!e&&e.ignoreUnclosed;switch(n=p.charCodeAt(m),n){case gi:case vi:case bi:case wi:case yi:o=m;do{o+=1,n=p.charCodeAt(o)}while(n===vi||n===gi||n===bi||n===wi||n===yi);d=["space",p.slice(m,o)],m=o-1;break;case ki:case xi:case Ii:case Oi:case Li:case Ei:case Ci:{let e=String.fromCharCode(n);d=[e,e,m];break}case Si:if(c=g.length?g.pop()[1]:"",u=p.charCodeAt(m+1),"url"===c&&u!==pi&&u!==hi&&u!==vi&&u!==gi&&u!==bi&&u!==yi&&u!==wi){o=m;do{if(s=!1,o=p.indexOf(")",o+1),-1===o){if(h||t){o=m;break}y("bracket")}for(l=o;p.charCodeAt(l-1)===fi;)l-=1,s=!s}while(s);d=["brackets",p.slice(m,o+1),m,o],m=o}else o=p.indexOf(")",m+1),i=p.slice(m,o+1),-1===o||Pi.test(i)?d=["(","(",m]:(d=["brackets",i,m,o],m=o);break;case pi:case hi:r=n===pi?"'":'"',o=m;do{if(s=!1,o=p.indexOf(r,o+1),-1===o){if(h||t){o=m+1;break}y("string")}for(l=o;p.charCodeAt(l-1)===fi;)l-=1,s=!s}while(s);d=["string",p.slice(m,o+1),m,o],m=o;break;case Ai:Mi.lastIndex=m+1,Mi.test(p),o=0===Mi.lastIndex?p.length-1:Mi.lastIndex-2,d=["at-word",p.slice(m,o+1),m,o],m=o;break;case fi:for(o=m,a=!0;p.charCodeAt(o+1)===fi;)o+=1,a=!a;if(n=p.charCodeAt(o+1),a&&n!==mi&&n!==vi&&n!==gi&&n!==bi&&n!==wi&&n!==yi&&(o+=1,Di.test(p.charAt(o)))){for(;Di.test(p.charAt(o+1));)o+=1;p.charCodeAt(o+1)===vi&&(o+=1)}d=["word",p.slice(m,o+1),m,o],m=o;break;default:n===mi&&p.charCodeAt(m+1)===Ti?(o=p.indexOf("*/",m+2)+1,0===o&&(h||t?o=p.length:y("comment")),d=["comment",p.slice(m,o+1),m,o],m=o):(Ri.lastIndex=m+1,Ri.test(p),o=0===Ri.lastIndex?p.length-1:Ri.lastIndex-2,d=["word",p.slice(m,o+1),m,o],g.push(d),m=o)}return m++,d},position:function(){return m}}},Xi=zr,$i=Fi,Qi=zi,ea=Zi;const ta={empty:!0,space:!0};var na=class{constructor(e){this.input=e,this.root=new Qi,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:e,start:{column:1,line:1,offset:0}}}atrule(e){let t,n,o,r=new $i;r.name=e[1].slice(1),""===r.name&&this.unnamedAtrule(r,e),this.init(r,e[2]);let i=!1,a=!1,s=[],l=[];for(;!this.tokenizer.endOfFile();){if(t=(e=this.tokenizer.nextToken())[0],"("===t||"["===t?l.push("("===t?")":"]"):"{"===t&&l.length>0?l.push("}"):t===l[l.length-1]&&l.pop(),0===l.length){if(";"===t){r.source.end=this.getPosition(e[2]),r.source.end.offset++,this.semicolon=!0;break}if("{"===t){a=!0;break}if("}"===t){if(s.length>0){for(o=s.length-1,n=s[o];n&&"space"===n[0];)n=s[--o];n&&(r.source.end=this.getPosition(n[3]||n[2]),r.source.end.offset++)}this.end(e);break}s.push(e)}else s.push(e);if(this.tokenizer.endOfFile()){i=!0;break}}r.raws.between=this.spacesAndCommentsFromEnd(s),s.length?(r.raws.afterName=this.spacesAndCommentsFromStart(s),this.raw(r,"params",s),i&&(e=s[s.length-1],r.source.end=this.getPosition(e[3]||e[2]),r.source.end.offset++,this.spaces=r.raws.between,r.raws.between="")):(r.raws.afterName="",r.params=""),a&&(r.nodes=[],this.current=r)}checkMissedSemicolon(e){let t=this.colon(e);if(!1===t)return;let n,o=0;for(let r=t-1;r>=0&&(n=e[r],"space"===n[0]||(o+=1,2!==o));r--);throw this.input.error("Missed semicolon","word"===n[0]?n[3]+1:n[2])}colon(e){let t,n,o,r=0;for(let[i,a]of e.entries()){if(t=a,n=t[0],"("===n&&(r+=1),")"===n&&(r-=1),0===r&&":"===n){if(o){if("word"===o[0]&&"progid"===o[1])continue;return i}this.doubleColon(t)}o=t}return!1}comment(e){let t=new Xi;this.init(t,e[2]),t.source.end=this.getPosition(e[3]||e[2]),t.source.end.offset++;let n=e[1].slice(2,-2);if(/^\s*$/.test(n))t.text="",t.raws.left=n,t.raws.right="";else{let e=n.match(/^(\s*)([^]*\S)(\s*)$/);t.text=e[2],t.raws.left=e[1],t.raws.right=e[3]}}createTokenizer(){this.tokenizer=Yi(this.input)}decl(e,t){let n=new Ki;this.init(n,e[0][2]);let o,r=e[e.length-1];for(";"===r[0]&&(this.semicolon=!0,e.pop()),n.source.end=this.getPosition(r[3]||r[2]||function(e){for(let t=e.length-1;t>=0;t--){let n=e[t],o=n[3]||n[2];if(o)return o}}(e)),n.source.end.offset++;"word"!==e[0][0];)1===e.length&&this.unknownWord(e),n.raws.before+=e.shift()[1];for(n.source.start=this.getPosition(e[0][2]),n.prop="";e.length;){let t=e[0][0];if(":"===t||"space"===t||"comment"===t)break;n.prop+=e.shift()[1]}for(n.raws.between="";e.length;){if(o=e.shift(),":"===o[0]){n.raws.between+=o[1];break}"word"===o[0]&&/\w/.test(o[1])&&this.unknownWord([o]),n.raws.between+=o[1]}"_"!==n.prop[0]&&"*"!==n.prop[0]||(n.raws.before+=n.prop[0],n.prop=n.prop.slice(1));let i,a=[];for(;e.length&&(i=e[0][0],"space"===i||"comment"===i);)a.push(e.shift());this.precheckMissedSemicolon(e);for(let s=e.length-1;s>=0;s--){if(o=e[s],"!important"===o[1].toLowerCase()){n.important=!0;let t=this.stringFrom(e,s);t=this.spacesFromEnd(e)+t," !important"!==t&&(n.raws.important=t);break}if("important"===o[1].toLowerCase()){let t=e.slice(0),o="";for(let e=s;e>0;e--){let n=t[e][0];if(0===o.trim().indexOf("!")&&"space"!==n)break;o=t.pop()[1]+o}0===o.trim().indexOf("!")&&(n.important=!0,n.raws.important=o,e=t)}if("space"!==o[0]&&"comment"!==o[0])break}e.some((e=>"space"!==e[0]&&"comment"!==e[0]))&&(n.raws.between+=a.map((e=>e[1])).join(""),a=[]),this.raw(n,"value",a.concat(e),t),n.value.includes(":")&&!t&&this.checkMissedSemicolon(e)}doubleColon(e){throw this.input.error("Double colon",{offset:e[2]},{offset:e[2]+e[1].length})}emptyRule(e){let t=new ea;this.init(t,e[2]),t.selector="",t.raws.between="",this.current=t}end(e){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(e[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(e)}endFile(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position())}freeSemicolon(e){if(this.spaces+=e[1],this.current.nodes){let e=this.current.nodes[this.current.nodes.length-1];e&&"rule"===e.type&&!e.raws.ownSemicolon&&(e.raws.ownSemicolon=this.spaces,this.spaces="")}}getPosition(e){let t=this.input.fromOffset(e);return{column:t.col,line:t.line,offset:e}}init(e,t){this.current.push(e),e.source={input:this.input,start:this.getPosition(t)},e.raws.before=this.spaces,this.spaces="","comment"!==e.type&&(this.semicolon=!1)}other(e){let t=!1,n=null,o=!1,r=null,i=[],a=e[1].startsWith("--"),s=[],l=e;for(;l;){if(n=l[0],s.push(l),"("===n||"["===n)r||(r=l),i.push("("===n?")":"]");else if(a&&o&&"{"===n)r||(r=l),i.push("}");else if(0===i.length){if(";"===n){if(o)return void this.decl(s,a);break}if("{"===n)return void this.rule(s);if("}"===n){this.tokenizer.back(s.pop()),t=!0;break}":"===n&&(o=!0)}else n===i[i.length-1]&&(i.pop(),0===i.length&&(r=null));l=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(t=!0),i.length>0&&this.unclosedBracket(r),t&&o){if(!a)for(;s.length&&(l=s[s.length-1][0],"space"===l||"comment"===l);)this.tokenizer.back(s.pop());this.decl(s,a)}else this.unknownWord(s)}parse(){let e;for(;!this.tokenizer.endOfFile();)switch(e=this.tokenizer.nextToken(),e[0]){case"space":this.spaces+=e[1];break;case";":this.freeSemicolon(e);break;case"}":this.end(e);break;case"comment":this.comment(e);break;case"at-word":this.atrule(e);break;case"{":this.emptyRule(e);break;default:this.other(e)}this.endFile()}precheckMissedSemicolon(){}raw(e,t,n,o){let r,i,a,s,l=n.length,c="",u=!0;for(let d=0;de+t[1]),"");e.raws[t]={raw:o,value:c}}e[t]=c}rule(e){e.pop();let t=new ea;this.init(t,e[0][2]),t.raws.between=this.spacesAndCommentsFromEnd(e),this.raw(t,"selector",e),this.current=t}spacesAndCommentsFromEnd(e){let t,n="";for(;e.length&&(t=e[e.length-1][0],"space"===t||"comment"===t);)n=e.pop()[1]+n;return n}spacesAndCommentsFromStart(e){let t,n="";for(;e.length&&(t=e[0][0],"space"===t||"comment"===t);)n+=e.shift()[1];return n}spacesFromEnd(e){let t,n="";for(;e.length&&(t=e[e.length-1][0],"space"===t);)n=e.pop()[1]+n;return n}stringFrom(e,t){let n="";for(let o=t;oCa(e))),e}let Ia={},Oa=class e{constructor(t,n,o){let r;if(this.stringified=!1,this.processed=!1,"object"!=typeof n||null===n||"root"!==n.type&&"document"!==n.type)if(n instanceof e||n instanceof fa)r=Ca(n.root),n.map&&(void 0===o.map&&(o.map={}),o.map.inline||(o.map.inline=!1),o.map.prev=n.map);else{let e=ma;o.syntax&&(e=o.syntax.parse),o.parser&&(e=o.parser),e.parse&&(e=e.parse);try{r=e(n,o)}catch(i){this.processed=!0,this.error=i}r&&!r[ca]&&pa.rebuild(r)}else r=Ca(n);this.result=new fa(t,r,o),this.helpers={...Ia,postcss:Ia,result:this.result},this.plugins=this.processor.plugins.map((e=>"object"==typeof e&&e.prepare?{...e,...e.prepare(this.result)}:e))}async(){return this.error?Promise.reject(this.error):this.processed?Promise.resolve(this.result):(this.processing||(this.processing=this.runAsync()),this.processing)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}getAsyncError(){throw new Error("Use process(css).then(cb) to work with async plugins")}handleError(e,t){let n=this.result.lastPlugin;try{t&&t.addToError(e),this.error=e,"CssSyntaxError"!==e.name||e.plugin?n.postcssVersion:(e.plugin=n.postcssPlugin,e.setMessage())}catch(o){console&&console.error&&console.error(o)}return e}prepareVisitors(){this.listeners={};let e=(e,t,n)=>{this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].push([e,n])};for(let t of this.plugins)if("object"==typeof t)for(let n in t){if(!ya[n]&&/^[A-Z]/.test(n))throw new Error(`Unknown event ${n} in ${t.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`);if(!ba[n])if("object"==typeof t[n])for(let o in t[n])e(t,"*"===o?n:n+"-"+o.toLowerCase(),t[n][o]);else"function"==typeof t[n]&&e(t,n,t[n])}this.hasListener=Object.keys(this.listeners).length>0}async runAsync(){this.plugin=0;for(let n=0;n0;){let e=this.visitTick(n);if(ka(e))try{await e}catch(t){let e=n[n.length-1].node;throw this.handleError(t,e)}}}if(this.listeners.OnceExit)for(let[n,o]of this.listeners.OnceExit){this.result.lastPlugin=n;try{if("document"===e.type){let t=e.nodes.map((e=>o(e,this.helpers)));await Promise.all(t)}else await o(e,this.helpers)}catch(t){throw this.handleError(t)}}}return this.processed=!0,this.stringify()}runOnRoot(e){this.result.lastPlugin=e;try{if("object"==typeof e&&e.Once){if("document"===this.result.root.type){let t=this.result.root.nodes.map((t=>e.Once(t,this.helpers)));return ka(t[0])?Promise.all(t):t}return e.Once(this.result.root,this.helpers)}if("function"==typeof e)return e(this.result.root,this.result)}catch(t){throw this.handleError(t)}}stringify(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();let e=this.result.opts,t=da;e.syntax&&(t=e.syntax.stringify),e.stringifier&&(t=e.stringifier),t.stringify&&(t=t.stringify);let n=new ua(t,this.result.root,this.result.opts).generate();return this.result.css=n[0],this.result.map=n[1],this.result}sync(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(let e of this.plugins){if(ka(this.runOnRoot(e)))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){let e=this.result.root;for(;!e[la];)e[la]=!0,this.walkSync(e);if(this.listeners.OnceExit)if("document"===e.type)for(let t of e.nodes)this.visitSync(this.listeners.OnceExit,t);else this.visitSync(this.listeners.OnceExit,e)}return this.result}then(e,t){return this.async().then(e,t)}toString(){return this.css}visitSync(e,t){for(let[o,r]of e){let e;this.result.lastPlugin=o;try{e=r(t,this.helpers)}catch(n){throw this.handleError(n,t.proxyOf)}if("root"!==t.type&&"document"!==t.type&&!t.parent)return!0;if(ka(e))throw this.getAsyncError()}}visitTick(e){let t=e[e.length-1],{node:n,visitors:o}=t;if("root"!==n.type&&"document"!==n.type&&!n.parent)return void e.pop();if(o.length>0&&t.visitorIndex{e[la]||this.walkSync(e)}));else{let t=this.listeners[n];if(t&&this.visitSync(t,e.toProxy()))return}}warnings(){return this.sync().warnings()}get content(){return this.stringify().content}get css(){return this.stringify().css}get map(){return this.stringify().map}get messages(){return this.sync().messages}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){return this.sync().root}get[Symbol.toStringTag](){return"LazyResult"}};Oa.registerPostcss=e=>{Ia=e};var Ea=Oa;Oa.default=Oa,ga.registerLazyResult(Oa),ha.registerLazyResult(Oa);let Ta=_r,La=Jo,Aa=sa;const Ma=di;let Ra=class{constructor(e,t,n){let o;t=t.toString(),this.stringified=!1,this._processor=e,this._css=t,this._opts=n,this._map=void 0;let r=La;this.result=new Ma(this._processor,o,this._opts),this.result.css=t;let i=this;Object.defineProperty(this.result,"root",{get:()=>i.root});let a=new Ta(r,o,this._opts,t);if(a.isMap()){let[e,t]=a.generate();e&&(this.result.css=e),t&&(this.result.map=t)}else a.clearAnnotation(),this.result.css=a.css}async(){return this.error?Promise.reject(this.error):Promise.resolve(this.result)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}sync(){if(this.error)throw this.error;return this.result}then(e,t){return this.async().then(e,t)}toString(){return this._css}warnings(){return[]}get content(){return this.result.css}get css(){return this.result.css}get map(){return this.result.map}get messages(){return[]}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){if(this._root)return this._root;let e,t=Aa;try{e=t(this._css,this._opts)}catch(n){this.error=n}if(this.error)throw this.error;return this._root=e,e}get[Symbol.toStringTag](){return"NoWorkResult"}};var Pa=Ra;Ra.default=Ra;let Da=Pa,Na=Ea,ja=ai,Fa=zi,Ba=class{constructor(e=[]){this.version="8.4.38",this.plugins=this.normalize(e)}normalize(e){let t=[];for(let n of e)if(!0===n.postcss?n=n():n.postcss&&(n=n.postcss),"object"==typeof n&&Array.isArray(n.plugins))t=t.concat(n.plugins);else if("object"==typeof n&&n.postcssPlugin)t.push(n);else if("function"==typeof n)t.push(n);else{if("object"!=typeof n||!n.parse&&!n.stringify)throw new Error(n+" is not a PostCSS plugin")}return t}process(e,t={}){return this.plugins.length||t.parser||t.stringifier||t.syntax?new Na(this,e,t):new Da(this,e,t)}use(e){return this.plugins=this.plugins.concat(this.normalize([e])),this}};var _a=Ba;Ba.default=Ba,Fa.registerProcessor(Ba),ja.registerProcessor(Ba);let Ua=rr,Ha=hr,za=zr,qa=Fi,Wa=Tr,Ga=zi,Va=Zi;function Ja(e,t){if(Array.isArray(e))return e.map((e=>Ja(e)));let{inputs:n,...o}=e;if(n){t=[];for(let e of n){let n={...e,__proto__:Wa.prototype};n.map&&(n.map={...n.map,__proto__:Ha.prototype}),t.push(n)}}if(o.nodes&&(o.nodes=e.nodes.map((e=>Ja(e,t)))),o.source){let{inputId:e,...n}=o.source;o.source=n,null!=e&&(o.source.input=t[e])}if("root"===o.type)return new Ga(o);if("decl"===o.type)return new Ua(o);if("rule"===o.type)return new Va(o);if("comment"===o.type)return new za(o);if("atrule"===o.type)return new qa(o);throw new Error("Unknown node type: "+e.type)}var Za=Ja;Ja.default=Ja;let Ka=Uo,Ya=rr,Xa=Ea,$a=ti,Qa=_a,es=Jo,ts=Za,ns=ai,os=li,rs=zr,is=Fi,as=di,ss=Tr,ls=sa,cs=Wi,us=Zi,ds=zi,ps=tr;function hs(...e){return 1===e.length&&Array.isArray(e[0])&&(e=e[0]),new Qa(e)}hs.plugin=function(e,t){let n,o=!1;function r(...n){console&&console.warn&&!o&&(o=!0,console.warn(e+": postcss.plugin was deprecated. Migration guide:\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration"),process.env.LANG&&process.env.LANG.startsWith("cn")&&console.warn(e+": 里面 postcss.plugin 被弃用. 迁移指南:\nhttps://www.w3ctech.com/topic/2226"));let r=t(...n);return r.postcssPlugin=e,r.postcssVersion=(new Qa).version,r}return Object.defineProperty(r,"postcss",{get:()=>(n||(n=r()),n)}),r.process=function(e,t,n){return hs([r(n)]).process(e,t)},r},hs.stringify=es,hs.parse=ls,hs.fromJSON=ts,hs.list=cs,hs.comment=e=>new rs(e),hs.atRule=e=>new is(e),hs.decl=e=>new Ya(e),hs.rule=e=>new us(e),hs.root=e=>new ds(e),hs.document=e=>new ns(e),hs.CssSyntaxError=Ka,hs.Declaration=Ya,hs.Container=$a,hs.Processor=Qa,hs.Document=ns,hs.Comment=rs,hs.Warning=os,hs.AtRule=is,hs.Result=as,hs.Input=ss,hs.Rule=us,hs.Root=ds,hs.Node=ps,Xa.registerPostcss(hs);var fs=hs;hs.default=hs;const ms=Ao(fs);ms.stringify,ms.fromJSON,ms.plugin,ms.parse,ms.list,ms.document,ms.comment,ms.atRule,ms.rule,ms.decl,ms.root,ms.CssSyntaxError,ms.Declaration,ms.Container,ms.Processor,ms.Document,ms.Comment,ms.Warning,ms.AtRule,ms.Result,ms.Input,ms.Rule,ms.Root,ms.Node;var gs=Object.defineProperty,vs=(e,t,n)=>((e,t,n)=>t in e?gs(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,"symbol"!=typeof t?t+"":t,n);function ys(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function bs(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var n=function e(){return this instanceof e?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,o.get?o:{enumerable:!0,get:function(){return e[t]}})})),n}var ws={exports:{}},ks=String,xs=function(){return{isColorSupported:!1,reset:ks,bold:ks,dim:ks,italic:ks,underline:ks,inverse:ks,hidden:ks,strikethrough:ks,black:ks,red:ks,green:ks,yellow:ks,blue:ks,magenta:ks,cyan:ks,white:ks,gray:ks,bgBlack:ks,bgRed:ks,bgGreen:ks,bgYellow:ks,bgBlue:ks,bgMagenta:ks,bgCyan:ks,bgWhite:ks}};ws.exports=xs(),ws.exports.createColors=xs;var Ss=ws.exports;const Cs=bs(Object.freeze(Object.defineProperty({__proto__:null,default:{}},Symbol.toStringTag,{value:"Module"})));let Is=Ss,Os=Cs,Es=class e extends Error{constructor(t,n,o,r,i,a){super(t),this.name="CssSyntaxError",this.reason=t,i&&(this.file=i),r&&(this.source=r),a&&(this.plugin=a),void 0!==n&&void 0!==o&&("number"==typeof n?(this.line=n,this.column=o):(this.line=n.line,this.column=n.column,this.endLine=o.line,this.endColumn=o.column)),this.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(this,e)}setMessage(){this.message=this.plugin?this.plugin+": ":"",this.message+=this.file?this.file:"",void 0!==this.line&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason}showSourceCode(e){if(!this.source)return"";let t=this.source;null==e&&(e=Is.isColorSupported),Os&&e&&(t=Os(t));let n,o,r=t.split(/\r?\n/),i=Math.max(this.line-3,0),a=Math.min(this.line+2,r.length),s=String(a).length;if(e){let{bold:e,gray:t,red:r}=Is.createColors(!0);n=t=>e(r(t)),o=e=>t(e)}else n=o=e=>e;return r.slice(i,a).map(((e,t)=>{let r=i+1+t,a=" "+(" "+r).slice(-s)+" | ";if(r===this.line){let t=o(a.replace(/\d/g," "))+e.slice(0,this.column-1).replace(/[^\t]/g," ");return n(">")+o(a)+e+"\n "+t+n("^")}return" "+o(a)+e})).join("\n")}toString(){let e=this.showSourceCode();return e&&(e="\n\n"+e+"\n"),this.name+": "+this.message+e}};var Ts=Es;Es.default=Es;var Ls={};Ls.isClean=Symbol("isClean"),Ls.my=Symbol("my");const As={after:"\n",beforeClose:"\n",beforeComment:"\n",beforeDecl:"\n",beforeOpen:" ",beforeRule:"\n",colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:!1};let Ms=class{constructor(e){this.builder=e}atrule(e,t){let n="@"+e.name,o=e.params?this.rawValue(e,"params"):"";if(void 0!==e.raws.afterName?n+=e.raws.afterName:o&&(n+=" "),e.nodes)this.block(e,n+o);else{let r=(e.raws.between||"")+(t?";":"");this.builder(n+o+r,e)}}beforeAfter(e,t){let n;n="decl"===e.type?this.raw(e,null,"beforeDecl"):"comment"===e.type?this.raw(e,null,"beforeComment"):"before"===t?this.raw(e,null,"beforeRule"):this.raw(e,null,"beforeClose");let o=e.parent,r=0;for(;o&&"root"!==o.type;)r+=1,o=o.parent;if(n.includes("\n")){let t=this.raw(e,null,"indent");if(t.length)for(let e=0;e0&&"comment"===e.nodes[t].type;)t-=1;let n=this.raw(e,"semicolon");for(let o=0;o{if(o=e.raws[t],void 0!==o)return!1}))}var a;return void 0===o&&(o=As[n]),i.rawCache[n]=o,o}rawBeforeClose(e){let t;return e.walk((e=>{if(e.nodes&&e.nodes.length>0&&void 0!==e.raws.after)return t=e.raws.after,t.includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1})),t&&(t=t.replace(/\S/g,"")),t}rawBeforeComment(e,t){let n;return e.walkComments((e=>{if(void 0!==e.raws.before)return n=e.raws.before,n.includes("\n")&&(n=n.replace(/[^\n]+$/,"")),!1})),void 0===n?n=this.raw(t,null,"beforeDecl"):n&&(n=n.replace(/\S/g,"")),n}rawBeforeDecl(e,t){let n;return e.walkDecls((e=>{if(void 0!==e.raws.before)return n=e.raws.before,n.includes("\n")&&(n=n.replace(/[^\n]+$/,"")),!1})),void 0===n?n=this.raw(t,null,"beforeRule"):n&&(n=n.replace(/\S/g,"")),n}rawBeforeOpen(e){let t;return e.walk((e=>{if("decl"!==e.type&&(t=e.raws.between,void 0!==t))return!1})),t}rawBeforeRule(e){let t;return e.walk((n=>{if(n.nodes&&(n.parent!==e||e.first!==n)&&void 0!==n.raws.before)return t=n.raws.before,t.includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1})),t&&(t=t.replace(/\S/g,"")),t}rawColon(e){let t;return e.walkDecls((e=>{if(void 0!==e.raws.between)return t=e.raws.between.replace(/[^\s:]/g,""),!1})),t}rawEmptyBody(e){let t;return e.walk((e=>{if(e.nodes&&0===e.nodes.length&&(t=e.raws.after,void 0!==t))return!1})),t}rawIndent(e){if(e.raws.indent)return e.raws.indent;let t;return e.walk((n=>{let o=n.parent;if(o&&o!==e&&o.parent&&o.parent===e&&void 0!==n.raws.before){let e=n.raws.before.split("\n");return t=e[e.length-1],t=t.replace(/\S/g,""),!1}})),t}rawSemicolon(e){let t;return e.walk((e=>{if(e.nodes&&e.nodes.length&&"decl"===e.last.type&&(t=e.raws.semicolon,void 0!==t))return!1})),t}rawValue(e,t){let n=e[t],o=e.raws[t];return o&&o.value===n?o.raw:n}root(e){this.body(e),e.raws.after&&this.builder(e.raws.after)}rule(e){this.block(e,this.rawValue(e,"selector")),e.raws.ownSemicolon&&this.builder(e.raws.ownSemicolon,e,"end")}stringify(e,t){if(!this[e.type])throw new Error("Unknown AST node type "+e.type+". Maybe you need to change PostCSS stringifier.");this[e.type](e,t)}};var Rs=Ms;Ms.default=Ms;let Ps=Rs;function Ds(e,t){new Ps(t).stringify(e)}var Ns=Ds;Ds.default=Ds;let{isClean:js,my:Fs}=Ls,Bs=Ts,_s=Rs,Us=Ns;function Hs(e,t){let n=new e.constructor;for(let o in e){if(!Object.prototype.hasOwnProperty.call(e,o))continue;if("proxyCache"===o)continue;let r=e[o],i=typeof r;"parent"===o&&"object"===i?t&&(n[o]=t):"source"===o?n[o]=r:Array.isArray(r)?n[o]=r.map((e=>Hs(e,n))):("object"===i&&null!==r&&(r=Hs(r)),n[o]=r)}return n}let zs=class{constructor(e={}){this.raws={},this[js]=!1,this[Fs]=!0;for(let t in e)if("nodes"===t){this.nodes=[];for(let n of e[t])"function"==typeof n.clone?this.append(n.clone()):this.append(n)}else this[t]=e[t]}addToError(e){if(e.postcssNode=this,e.stack&&this.source&&/\n\s{4}at /.test(e.stack)){let t=this.source;e.stack=e.stack.replace(/\n\s{4}at /,`$&${t.input.from}:${t.start.line}:${t.start.column}$&`)}return e}after(e){return this.parent.insertAfter(this,e),this}assign(e={}){for(let t in e)this[t]=e[t];return this}before(e){return this.parent.insertBefore(this,e),this}cleanRaws(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between}clone(e={}){let t=Hs(this);for(let n in e)t[n]=e[n];return t}cloneAfter(e={}){let t=this.clone(e);return this.parent.insertAfter(this,t),t}cloneBefore(e={}){let t=this.clone(e);return this.parent.insertBefore(this,t),t}error(e,t={}){if(this.source){let{end:n,start:o}=this.rangeBy(t);return this.source.input.error(e,{column:o.column,line:o.line},{column:n.column,line:n.line},t)}return new Bs(e)}getProxyProcessor(){return{get:(e,t)=>"proxyOf"===t?e:"root"===t?()=>e.root().toProxy():e[t],set:(e,t,n)=>(e[t]===n||(e[t]=n,"prop"!==t&&"value"!==t&&"name"!==t&&"params"!==t&&"important"!==t&&"text"!==t||e.markDirty()),!0)}}markDirty(){if(this[js]){this[js]=!1;let e=this;for(;e=e.parent;)e[js]=!1}}next(){if(!this.parent)return;let e=this.parent.index(this);return this.parent.nodes[e+1]}positionBy(e,t){let n=this.source.start;if(e.index)n=this.positionInside(e.index,t);else if(e.word){let o=(t=this.toString()).indexOf(e.word);-1!==o&&(n=this.positionInside(o,t))}return n}positionInside(e,t){let n=t||this.toString(),o=this.source.start.column,r=this.source.start.line;for(let i=0;i"object"==typeof e&&e.toJSON?e.toJSON(null,t):e));else if("object"==typeof e&&e.toJSON)n[i]=e.toJSON(null,t);else if("source"===i){let o=t.get(e.input);null==o&&(o=r,t.set(e.input,r),r++),n[i]={end:e.end,inputId:o,start:e.start}}else n[i]=e}return o&&(n.inputs=[...t.keys()].map((e=>e.toJSON()))),n}toProxy(){return this.proxyCache||(this.proxyCache=new Proxy(this,this.getProxyProcessor())),this.proxyCache}toString(e=Us){e.stringify&&(e=e.stringify);let t="";return e(this,(e=>{t+=e})),t}warn(e,t,n){let o={node:this};for(let r in n)o[r]=n[r];return e.warn(t,o)}get proxyOf(){return this}};var qs=zs;zs.default=zs;let Ws=qs,Gs=class extends Ws{constructor(e){e&&void 0!==e.value&&"string"!=typeof e.value&&(e={...e,value:String(e.value)}),super(e),this.type="decl"}get variable(){return this.prop.startsWith("--")||"$"===this.prop[0]}};var Vs=Gs;Gs.default=Gs;var Js={nanoid:(e=21)=>{let t="",n=e;for(;n--;)t+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[64*Math.random()|0];return t},customAlphabet:(e,t=21)=>(n=t)=>{let o="",r=n;for(;r--;)o+=e[Math.random()*e.length|0];return o}};let{SourceMapConsumer:Zs,SourceMapGenerator:Ks}=Cs,{existsSync:Ys,readFileSync:Xs}=Cs,{dirname:$s,join:Qs}=Cs;let el=class{constructor(e,t){if(!1===t.map)return;this.loadAnnotation(e),this.inline=this.startWith(this.annotation,"data:");let n=t.map?t.map.prev:void 0,o=this.loadMap(t.from,n);!this.mapFile&&t.from&&(this.mapFile=t.from),this.mapFile&&(this.root=$s(this.mapFile)),o&&(this.text=o)}consumer(){return this.consumerCache||(this.consumerCache=new Zs(this.text)),this.consumerCache}decodeInline(e){if(/^data:application\/json;charset=utf-?8,/.test(e)||/^data:application\/json,/.test(e))return decodeURIComponent(e.substr(RegExp.lastMatch.length));if(/^data:application\/json;charset=utf-?8;base64,/.test(e)||/^data:application\/json;base64,/.test(e))return t=e.substr(RegExp.lastMatch.length),Buffer?Buffer.from(t,"base64").toString():window.atob(t);var t;let n=e.match(/data:application\/json;([^,]+),/)[1];throw new Error("Unsupported source map encoding "+n)}getAnnotationURL(e){return e.replace(/^\/\*\s*# sourceMappingURL=/,"").trim()}isMap(e){return"object"==typeof e&&("string"==typeof e.mappings||"string"==typeof e._mappings||Array.isArray(e.sections))}loadAnnotation(e){let t=e.match(/\/\*\s*# sourceMappingURL=/gm);if(!t)return;let n=e.lastIndexOf(t.pop()),o=e.indexOf("*/",n);n>-1&&o>-1&&(this.annotation=this.getAnnotationURL(e.substring(n,o)))}loadFile(e){if(this.root=$s(e),Ys(e))return this.mapFile=e,Xs(e,"utf-8").toString().trim()}loadMap(e,t){if(!1===t)return!1;if(t){if("string"==typeof t)return t;if("function"!=typeof t){if(t instanceof Zs)return Ks.fromSourceMap(t).toString();if(t instanceof Ks)return t.toString();if(this.isMap(t))return JSON.stringify(t);throw new Error("Unsupported previous source map format: "+t.toString())}{let n=t(e);if(n){let e=this.loadFile(n);if(!e)throw new Error("Unable to load previous source map: "+n.toString());return e}}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){let t=this.annotation;return e&&(t=Qs($s(e),t)),this.loadFile(t)}}}startWith(e,t){return!!e&&e.substr(0,t.length)===t}withContent(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)}};var tl=el;el.default=el;let{SourceMapConsumer:nl,SourceMapGenerator:ol}=Cs,{fileURLToPath:rl,pathToFileURL:il}=Cs,{isAbsolute:al,resolve:sl}=Cs,{nanoid:ll}=Js,cl=Cs,ul=Ts,dl=tl,pl=Symbol("fromOffsetCache"),hl=Boolean(nl&&ol),fl=Boolean(sl&&al),ml=class{constructor(e,t={}){if(null==e||"object"==typeof e&&!e.toString)throw new Error(`PostCSS received ${e} instead of CSS string`);if(this.css=e.toString(),"\ufeff"===this.css[0]||"￾"===this.css[0]?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,t.from&&(!fl||/^\w+:\/\//.test(t.from)||al(t.from)?this.file=t.from:this.file=sl(t.from)),fl&&hl){let e=new dl(this.css,t);if(e.text){this.map=e;let t=e.consumer().file;!this.file&&t&&(this.file=this.mapResolve(t))}}this.file||(this.id=""),this.map&&(this.map.file=this.from)}error(e,t,n,o={}){let r,i,a;if(t&&"object"==typeof t){let e=t,o=n;if("number"==typeof e.offset){let o=this.fromOffset(e.offset);t=o.line,n=o.col}else t=e.line,n=e.column;if("number"==typeof o.offset){let e=this.fromOffset(o.offset);i=e.line,a=e.col}else i=o.line,a=o.column}else if(!n){let e=this.fromOffset(t);t=e.line,n=e.col}let s=this.origin(t,n,i,a);return r=s?new ul(e,void 0===s.endLine?s.line:{column:s.column,line:s.line},void 0===s.endLine?s.column:{column:s.endColumn,line:s.endLine},s.source,s.file,o.plugin):new ul(e,void 0===i?t:{column:n,line:t},void 0===i?n:{column:a,line:i},this.css,this.file,o.plugin),r.input={column:n,endColumn:a,endLine:i,line:t,source:this.css},this.file&&(il&&(r.input.url=il(this.file).toString()),r.input.file=this.file),r}fromOffset(e){let t,n;if(this[pl])n=this[pl];else{let e=this.css.split("\n");n=new Array(e.length);let t=0;for(let o=0,r=e.length;o=t)o=n.length-1;else{let t,r=n.length-2;for(;o>1),e=n[t+1])){o=t;break}o=t+1}}return{col:e-n[o]+1,line:o+1}}mapResolve(e){return/^\w+:\/\//.test(e)?e:sl(this.map.consumer().sourceRoot||this.map.root||".",e)}origin(e,t,n,o){if(!this.map)return!1;let r,i,a=this.map.consumer(),s=a.originalPositionFor({column:t,line:e});if(!s.source)return!1;"number"==typeof n&&(r=a.originalPositionFor({column:o,line:n})),i=al(s.source)?il(s.source):new URL(s.source,this.map.consumer().sourceRoot||il(this.map.mapFile));let l={column:s.column,endColumn:r&&r.column,endLine:r&&r.line,line:s.line,url:i.toString()};if("file:"===i.protocol){if(!rl)throw new Error("file: protocol is not available in this PostCSS build");l.file=rl(i)}let c=a.sourceContentFor(s.source);return c&&(l.source=c),l}toJSON(){let e={};for(let t of["hasBOM","css","file","id"])null!=this[t]&&(e[t]=this[t]);return this.map&&(e.map={...this.map},e.map.consumerCache&&(e.map.consumerCache=void 0)),e}get from(){return this.file||this.id}};var gl=ml;ml.default=ml,cl&&cl.registerInput&&cl.registerInput(ml);let{SourceMapConsumer:vl,SourceMapGenerator:yl}=Cs,{dirname:bl,relative:wl,resolve:kl,sep:xl}=Cs,{pathToFileURL:Sl}=Cs,Cl=gl,Il=Boolean(vl&&yl),Ol=Boolean(bl&&kl&&wl&&xl);var El=class{constructor(e,t,n,o){this.stringify=e,this.mapOpts=n.map||{},this.root=t,this.opts=n,this.css=o,this.originalCSS=o,this.usesFileUrls=!this.mapOpts.from&&this.mapOpts.absolute,this.memoizedFileURLs=new Map,this.memoizedPaths=new Map,this.memoizedURLs=new Map}addAnnotation(){let e;e=this.isInline()?"data:application/json;base64,"+this.toBase64(this.map.toString()):"string"==typeof this.mapOpts.annotation?this.mapOpts.annotation:"function"==typeof this.mapOpts.annotation?this.mapOpts.annotation(this.opts.to,this.root):this.outputFile()+".map";let t="\n";this.css.includes("\r\n")&&(t="\r\n"),this.css+=t+"/*# sourceMappingURL="+e+" */"}applyPrevMaps(){for(let e of this.previous()){let t,n=this.toUrl(this.path(e.file)),o=e.root||bl(e.file);!1===this.mapOpts.sourcesContent?(t=new vl(e.text),t.sourcesContent&&(t.sourcesContent=null)):t=e.consumer(),this.map.applySourceMap(t,n,this.toUrl(this.path(o)))}}clearAnnotation(){if(!1!==this.mapOpts.annotation)if(this.root){let e;for(let t=this.root.nodes.length-1;t>=0;t--)e=this.root.nodes[t],"comment"===e.type&&0===e.text.indexOf("# sourceMappingURL=")&&this.root.removeChild(t)}else this.css&&(this.css=this.css.replace(/\n*?\/\*#[\S\s]*?\*\/$/gm,""))}generate(){if(this.clearAnnotation(),Ol&&Il&&this.isMap())return this.generateMap();{let e="";return this.stringify(this.root,(t=>{e+=t})),[e]}}generateMap(){if(this.root)this.generateString();else if(1===this.previous().length){let e=this.previous()[0].consumer();e.file=this.outputFile(),this.map=yl.fromSourceMap(e,{ignoreInvalidMapping:!0})}else this.map=new yl({file:this.outputFile(),ignoreInvalidMapping:!0}),this.map.addMapping({generated:{column:0,line:1},original:{column:0,line:1},source:this.opts.from?this.toUrl(this.path(this.opts.from)):""});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]}generateString(){this.css="",this.map=new yl({file:this.outputFile(),ignoreInvalidMapping:!0});let e,t,n=1,o=1,r="",i={generated:{column:0,line:0},original:{column:0,line:0},source:""};this.stringify(this.root,((a,s,l)=>{if(this.css+=a,s&&"end"!==l&&(i.generated.line=n,i.generated.column=o-1,s.source&&s.source.start?(i.source=this.sourcePath(s),i.original.line=s.source.start.line,i.original.column=s.source.start.column-1,this.map.addMapping(i)):(i.source=r,i.original.line=1,i.original.column=0,this.map.addMapping(i))),e=a.match(/\n/g),e?(n+=e.length,t=a.lastIndexOf("\n"),o=a.length-t):o+=a.length,s&&"start"!==l){let e=s.parent||{raws:{}};("decl"===s.type||"atrule"===s.type&&!s.nodes)&&s===e.last&&!e.raws.semicolon||(s.source&&s.source.end?(i.source=this.sourcePath(s),i.original.line=s.source.end.line,i.original.column=s.source.end.column-1,i.generated.line=n,i.generated.column=o-2,this.map.addMapping(i)):(i.source=r,i.original.line=1,i.original.column=0,i.generated.line=n,i.generated.column=o-1,this.map.addMapping(i)))}}))}isAnnotation(){return!!this.isInline()||(void 0!==this.mapOpts.annotation?this.mapOpts.annotation:!this.previous().length||this.previous().some((e=>e.annotation)))}isInline(){if(void 0!==this.mapOpts.inline)return this.mapOpts.inline;let e=this.mapOpts.annotation;return(void 0===e||!0===e)&&(!this.previous().length||this.previous().some((e=>e.inline)))}isMap(){return void 0!==this.opts.map?!!this.opts.map:this.previous().length>0}isSourcesContent(){return void 0!==this.mapOpts.sourcesContent?this.mapOpts.sourcesContent:!this.previous().length||this.previous().some((e=>e.withContent()))}outputFile(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"}path(e){if(this.mapOpts.absolute)return e;if(60===e.charCodeAt(0))return e;if(/^\w+:\/\//.test(e))return e;let t=this.memoizedPaths.get(e);if(t)return t;let n=this.opts.to?bl(this.opts.to):".";"string"==typeof this.mapOpts.annotation&&(n=bl(kl(n,this.mapOpts.annotation)));let o=wl(n,e);return this.memoizedPaths.set(e,o),o}previous(){if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk((e=>{if(e.source&&e.source.input.map){let t=e.source.input.map;this.previousMaps.includes(t)||this.previousMaps.push(t)}}));else{let e=new Cl(this.originalCSS,this.opts);e.map&&this.previousMaps.push(e.map)}return this.previousMaps}setSourcesContent(){let e={};if(this.root)this.root.walk((t=>{if(t.source){let n=t.source.input.from;if(n&&!e[n]){e[n]=!0;let o=this.usesFileUrls?this.toFileUrl(n):this.toUrl(this.path(n));this.map.setSourceContent(o,t.source.input.css)}}}));else if(this.css){let e=this.opts.from?this.toUrl(this.path(this.opts.from)):"";this.map.setSourceContent(e,this.css)}}sourcePath(e){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(e.source.input.from):this.toUrl(this.path(e.source.input.from))}toBase64(e){return Buffer?Buffer.from(e).toString("base64"):window.btoa(unescape(encodeURIComponent(e)))}toFileUrl(e){let t=this.memoizedFileURLs.get(e);if(t)return t;if(Sl){let t=Sl(e).toString();return this.memoizedFileURLs.set(e,t),t}throw new Error("`map.absolute` option is not available in this PostCSS build")}toUrl(e){let t=this.memoizedURLs.get(e);if(t)return t;"\\"===xl&&(e=e.replace(/\\/g,"/"));let n=encodeURI(e).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(e,n),n}};let Tl=qs,Ll=class extends Tl{constructor(e){super(e),this.type="comment"}};var Al=Ll;Ll.default=Ll;let Ml,Rl,Pl,Dl,{isClean:Nl,my:jl}=Ls,Fl=Vs,Bl=Al,_l=qs;function Ul(e){return e.map((e=>(e.nodes&&(e.nodes=Ul(e.nodes)),delete e.source,e)))}function Hl(e){if(e[Nl]=!1,e.proxyOf.nodes)for(let t of e.proxyOf.nodes)Hl(t)}let zl=class e extends _l{append(...e){for(let t of e){let e=this.normalize(t,this.last);for(let t of e)this.proxyOf.nodes.push(t)}return this.markDirty(),this}cleanRaws(e){if(super.cleanRaws(e),this.nodes)for(let t of this.nodes)t.cleanRaws(e)}each(e){if(!this.proxyOf.nodes)return;let t,n,o=this.getIterator();for(;this.indexes[o]"proxyOf"===t?e:e[t]?"each"===t||"string"==typeof t&&t.startsWith("walk")?(...n)=>e[t](...n.map((e=>"function"==typeof e?(t,n)=>e(t.toProxy(),n):e))):"every"===t||"some"===t?n=>e[t](((e,...t)=>n(e.toProxy(),...t))):"root"===t?()=>e.root().toProxy():"nodes"===t?e.nodes.map((e=>e.toProxy())):"first"===t||"last"===t?e[t].toProxy():e[t]:e[t],set:(e,t,n)=>(e[t]===n||(e[t]=n,"name"!==t&&"params"!==t&&"selector"!==t||e.markDirty()),!0)}}index(e){return"number"==typeof e?e:(e.proxyOf&&(e=e.proxyOf),this.proxyOf.nodes.indexOf(e))}insertAfter(e,t){let n,o=this.index(e),r=this.normalize(t,this.proxyOf.nodes[o]).reverse();o=this.index(e);for(let i of r)this.proxyOf.nodes.splice(o+1,0,i);for(let i in this.indexes)n=this.indexes[i],o(t[jl]||e.rebuild(t),(t=t.proxyOf).parent&&t.parent.removeChild(t),t[Nl]&&Hl(t),void 0===t.raws.before&&n&&void 0!==n.raws.before&&(t.raws.before=n.raws.before.replace(/\S/g,"")),t.parent=this.proxyOf,t)))}prepend(...e){e=e.reverse();for(let t of e){let e=this.normalize(t,this.first,"prepend").reverse();for(let t of e)this.proxyOf.nodes.unshift(t);for(let t in this.indexes)this.indexes[t]=this.indexes[t]+e.length}return this.markDirty(),this}push(e){return e.parent=this,this.proxyOf.nodes.push(e),this}removeAll(){for(let e of this.proxyOf.nodes)e.parent=void 0;return this.proxyOf.nodes=[],this.markDirty(),this}removeChild(e){let t;e=this.index(e),this.proxyOf.nodes[e].parent=void 0,this.proxyOf.nodes.splice(e,1);for(let n in this.indexes)t=this.indexes[n],t>=e&&(this.indexes[n]=t-1);return this.markDirty(),this}replaceValues(e,t,n){return n||(n=t,t={}),this.walkDecls((o=>{t.props&&!t.props.includes(o.prop)||t.fast&&!o.value.includes(t.fast)||(o.value=o.value.replace(e,n))})),this.markDirty(),this}some(e){return this.nodes.some(e)}walk(e){return this.each(((t,n)=>{let o;try{o=e(t,n)}catch(r){throw t.addToError(r)}return!1!==o&&t.walk&&(o=t.walk(e)),o}))}walkAtRules(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("atrule"===n.type&&e.test(n.name))return t(n,o)})):this.walk(((n,o)=>{if("atrule"===n.type&&n.name===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("atrule"===e.type)return t(e,n)})))}walkComments(e){return this.walk(((t,n)=>{if("comment"===t.type)return e(t,n)}))}walkDecls(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("decl"===n.type&&e.test(n.prop))return t(n,o)})):this.walk(((n,o)=>{if("decl"===n.type&&n.prop===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("decl"===e.type)return t(e,n)})))}walkRules(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("rule"===n.type&&e.test(n.selector))return t(n,o)})):this.walk(((n,o)=>{if("rule"===n.type&&n.selector===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("rule"===e.type)return t(e,n)})))}get first(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}get last(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}};zl.registerParse=e=>{Ml=e},zl.registerRule=e=>{Rl=e},zl.registerAtRule=e=>{Pl=e},zl.registerRoot=e=>{Dl=e};var ql=zl;zl.default=zl,zl.rebuild=e=>{"atrule"===e.type?Object.setPrototypeOf(e,Pl.prototype):"rule"===e.type?Object.setPrototypeOf(e,Rl.prototype):"decl"===e.type?Object.setPrototypeOf(e,Fl.prototype):"comment"===e.type?Object.setPrototypeOf(e,Bl.prototype):"root"===e.type&&Object.setPrototypeOf(e,Dl.prototype),e[jl]=!0,e.nodes&&e.nodes.forEach((e=>{zl.rebuild(e)}))};let Wl,Gl,Vl=ql,Jl=class extends Vl{constructor(e){super({type:"document",...e}),this.nodes||(this.nodes=[])}toResult(e={}){return new Wl(new Gl,this,e).stringify()}};Jl.registerLazyResult=e=>{Wl=e},Jl.registerProcessor=e=>{Gl=e};var Zl=Jl;Jl.default=Jl;let Kl=class{constructor(e,t={}){if(this.type="warning",this.text=e,t.node&&t.node.source){let e=t.node.rangeBy(t);this.line=e.start.line,this.column=e.start.column,this.endLine=e.end.line,this.endColumn=e.end.column}for(let n in t)this[n]=t[n]}toString(){return this.node?this.node.error(this.text,{index:this.index,plugin:this.plugin,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text}};var Yl=Kl;Kl.default=Kl;let Xl=Yl,$l=class{constructor(e,t,n){this.processor=e,this.messages=[],this.root=t,this.opts=n,this.css=void 0,this.map=void 0}toString(){return this.css}warn(e,t={}){t.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(t.plugin=this.lastPlugin.postcssPlugin);let n=new Xl(e,t);return this.messages.push(n),n}warnings(){return this.messages.filter((e=>"warning"===e.type))}get content(){return this.css}};var Ql=$l;$l.default=$l;const ec="'".charCodeAt(0),tc='"'.charCodeAt(0),nc="\\".charCodeAt(0),oc="/".charCodeAt(0),rc="\n".charCodeAt(0),ic=" ".charCodeAt(0),ac="\f".charCodeAt(0),sc="\t".charCodeAt(0),lc="\r".charCodeAt(0),cc="[".charCodeAt(0),uc="]".charCodeAt(0),dc="(".charCodeAt(0),pc=")".charCodeAt(0),hc="{".charCodeAt(0),fc="}".charCodeAt(0),mc=";".charCodeAt(0),gc="*".charCodeAt(0),vc=":".charCodeAt(0),yc="@".charCodeAt(0),bc=/[\t\n\f\r "#'()/;[\\\]{}]/g,wc=/[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g,kc=/.[\r\n"'(/\\]/,xc=/[\da-f]/i;let Sc=ql,Cc=class extends Sc{constructor(e){super(e),this.type="atrule"}append(...e){return this.proxyOf.nodes||(this.nodes=[]),super.append(...e)}prepend(...e){return this.proxyOf.nodes||(this.nodes=[]),super.prepend(...e)}};var Ic=Cc;Cc.default=Cc,Sc.registerAtRule(Cc);let Oc,Ec,Tc=ql,Lc=class extends Tc{constructor(e){super(e),this.type="root",this.nodes||(this.nodes=[])}normalize(e,t,n){let o=super.normalize(e);if(t)if("prepend"===n)this.nodes.length>1?t.raws.before=this.nodes[1].raws.before:delete t.raws.before;else if(this.first!==t)for(let r of o)r.raws.before=t.raws.before;return o}removeChild(e,t){let n=this.index(e);return!t&&0===n&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[n].raws.before),super.removeChild(e)}toResult(e={}){return new Oc(new Ec,this,e).stringify()}};Lc.registerLazyResult=e=>{Oc=e},Lc.registerProcessor=e=>{Ec=e};var Ac=Lc;Lc.default=Lc,Tc.registerRoot(Lc);let Mc={comma:e=>Mc.split(e,[","],!0),space:e=>Mc.split(e,[" ","\n","\t"]),split(e,t,n){let o=[],r="",i=!1,a=0,s=!1,l="",c=!1;for(let u of e)c?c=!1:"\\"===u?c=!0:s?u===l&&(s=!1):'"'===u||"'"===u?(s=!0,l=u):"("===u?a+=1:")"===u?a>0&&(a-=1):0===a&&t.includes(u)&&(i=!0),i?(""!==r&&o.push(r.trim()),r="",i=!1):r+=u;return(n||""!==r)&&o.push(r.trim()),o}};var Rc=Mc;Mc.default=Mc;let Pc=ql,Dc=Rc,Nc=class extends Pc{constructor(e){super(e),this.type="rule",this.nodes||(this.nodes=[])}get selectors(){return Dc.comma(this.selector)}set selectors(e){let t=this.selector?this.selector.match(/,\s*/):null,n=t?t[0]:","+this.raw("between","beforeOpen");this.selector=e.join(n)}};var jc=Nc;Nc.default=Nc,Pc.registerRule(Nc);let Fc=Vs,Bc=function(e,t={}){let n,o,r,i,a,s,l,c,u,d,p=e.css.valueOf(),h=t.ignoreErrors,f=p.length,m=0,g=[],v=[];function y(t){throw e.error("Unclosed "+t,m)}return{back:function(e){v.push(e)},endOfFile:function(){return 0===v.length&&m>=f},nextToken:function(e){if(v.length)return v.pop();if(m>=f)return;let t=!!e&&e.ignoreUnclosed;switch(n=p.charCodeAt(m),n){case rc:case ic:case sc:case lc:case ac:o=m;do{o+=1,n=p.charCodeAt(o)}while(n===ic||n===rc||n===sc||n===lc||n===ac);d=["space",p.slice(m,o)],m=o-1;break;case cc:case uc:case hc:case fc:case vc:case mc:case pc:{let e=String.fromCharCode(n);d=[e,e,m];break}case dc:if(c=g.length?g.pop()[1]:"",u=p.charCodeAt(m+1),"url"===c&&u!==ec&&u!==tc&&u!==ic&&u!==rc&&u!==sc&&u!==ac&&u!==lc){o=m;do{if(s=!1,o=p.indexOf(")",o+1),-1===o){if(h||t){o=m;break}y("bracket")}for(l=o;p.charCodeAt(l-1)===nc;)l-=1,s=!s}while(s);d=["brackets",p.slice(m,o+1),m,o],m=o}else o=p.indexOf(")",m+1),i=p.slice(m,o+1),-1===o||kc.test(i)?d=["(","(",m]:(d=["brackets",i,m,o],m=o);break;case ec:case tc:r=n===ec?"'":'"',o=m;do{if(s=!1,o=p.indexOf(r,o+1),-1===o){if(h||t){o=m+1;break}y("string")}for(l=o;p.charCodeAt(l-1)===nc;)l-=1,s=!s}while(s);d=["string",p.slice(m,o+1),m,o],m=o;break;case yc:bc.lastIndex=m+1,bc.test(p),o=0===bc.lastIndex?p.length-1:bc.lastIndex-2,d=["at-word",p.slice(m,o+1),m,o],m=o;break;case nc:for(o=m,a=!0;p.charCodeAt(o+1)===nc;)o+=1,a=!a;if(n=p.charCodeAt(o+1),a&&n!==oc&&n!==ic&&n!==rc&&n!==sc&&n!==lc&&n!==ac&&(o+=1,xc.test(p.charAt(o)))){for(;xc.test(p.charAt(o+1));)o+=1;p.charCodeAt(o+1)===ic&&(o+=1)}d=["word",p.slice(m,o+1),m,o],m=o;break;default:n===oc&&p.charCodeAt(m+1)===gc?(o=p.indexOf("*/",m+2)+1,0===o&&(h||t?o=p.length:y("comment")),d=["comment",p.slice(m,o+1),m,o],m=o):(wc.lastIndex=m+1,wc.test(p),o=0===wc.lastIndex?p.length-1:wc.lastIndex-2,d=["word",p.slice(m,o+1),m,o],g.push(d),m=o)}return m++,d},position:function(){return m}}},_c=Al,Uc=Ic,Hc=Ac,zc=jc;const qc={empty:!0,space:!0};var Wc=class{constructor(e){this.input=e,this.root=new Hc,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:e,start:{column:1,line:1,offset:0}}}atrule(e){let t,n,o,r=new Uc;r.name=e[1].slice(1),""===r.name&&this.unnamedAtrule(r,e),this.init(r,e[2]);let i=!1,a=!1,s=[],l=[];for(;!this.tokenizer.endOfFile();){if(t=(e=this.tokenizer.nextToken())[0],"("===t||"["===t?l.push("("===t?")":"]"):"{"===t&&l.length>0?l.push("}"):t===l[l.length-1]&&l.pop(),0===l.length){if(";"===t){r.source.end=this.getPosition(e[2]),r.source.end.offset++,this.semicolon=!0;break}if("{"===t){a=!0;break}if("}"===t){if(s.length>0){for(o=s.length-1,n=s[o];n&&"space"===n[0];)n=s[--o];n&&(r.source.end=this.getPosition(n[3]||n[2]),r.source.end.offset++)}this.end(e);break}s.push(e)}else s.push(e);if(this.tokenizer.endOfFile()){i=!0;break}}r.raws.between=this.spacesAndCommentsFromEnd(s),s.length?(r.raws.afterName=this.spacesAndCommentsFromStart(s),this.raw(r,"params",s),i&&(e=s[s.length-1],r.source.end=this.getPosition(e[3]||e[2]),r.source.end.offset++,this.spaces=r.raws.between,r.raws.between="")):(r.raws.afterName="",r.params=""),a&&(r.nodes=[],this.current=r)}checkMissedSemicolon(e){let t=this.colon(e);if(!1===t)return;let n,o=0;for(let r=t-1;r>=0&&(n=e[r],"space"===n[0]||(o+=1,2!==o));r--);throw this.input.error("Missed semicolon","word"===n[0]?n[3]+1:n[2])}colon(e){let t,n,o,r=0;for(let[i,a]of e.entries()){if(t=a,n=t[0],"("===n&&(r+=1),")"===n&&(r-=1),0===r&&":"===n){if(o){if("word"===o[0]&&"progid"===o[1])continue;return i}this.doubleColon(t)}o=t}return!1}comment(e){let t=new _c;this.init(t,e[2]),t.source.end=this.getPosition(e[3]||e[2]),t.source.end.offset++;let n=e[1].slice(2,-2);if(/^\s*$/.test(n))t.text="",t.raws.left=n,t.raws.right="";else{let e=n.match(/^(\s*)([^]*\S)(\s*)$/);t.text=e[2],t.raws.left=e[1],t.raws.right=e[3]}}createTokenizer(){this.tokenizer=Bc(this.input)}decl(e,t){let n=new Fc;this.init(n,e[0][2]);let o,r=e[e.length-1];for(";"===r[0]&&(this.semicolon=!0,e.pop()),n.source.end=this.getPosition(r[3]||r[2]||function(e){for(let t=e.length-1;t>=0;t--){let n=e[t],o=n[3]||n[2];if(o)return o}}(e)),n.source.end.offset++;"word"!==e[0][0];)1===e.length&&this.unknownWord(e),n.raws.before+=e.shift()[1];for(n.source.start=this.getPosition(e[0][2]),n.prop="";e.length;){let t=e[0][0];if(":"===t||"space"===t||"comment"===t)break;n.prop+=e.shift()[1]}for(n.raws.between="";e.length;){if(o=e.shift(),":"===o[0]){n.raws.between+=o[1];break}"word"===o[0]&&/\w/.test(o[1])&&this.unknownWord([o]),n.raws.between+=o[1]}"_"!==n.prop[0]&&"*"!==n.prop[0]||(n.raws.before+=n.prop[0],n.prop=n.prop.slice(1));let i,a=[];for(;e.length&&(i=e[0][0],"space"===i||"comment"===i);)a.push(e.shift());this.precheckMissedSemicolon(e);for(let s=e.length-1;s>=0;s--){if(o=e[s],"!important"===o[1].toLowerCase()){n.important=!0;let t=this.stringFrom(e,s);t=this.spacesFromEnd(e)+t," !important"!==t&&(n.raws.important=t);break}if("important"===o[1].toLowerCase()){let t=e.slice(0),o="";for(let e=s;e>0;e--){let n=t[e][0];if(0===o.trim().indexOf("!")&&"space"!==n)break;o=t.pop()[1]+o}0===o.trim().indexOf("!")&&(n.important=!0,n.raws.important=o,e=t)}if("space"!==o[0]&&"comment"!==o[0])break}e.some((e=>"space"!==e[0]&&"comment"!==e[0]))&&(n.raws.between+=a.map((e=>e[1])).join(""),a=[]),this.raw(n,"value",a.concat(e),t),n.value.includes(":")&&!t&&this.checkMissedSemicolon(e)}doubleColon(e){throw this.input.error("Double colon",{offset:e[2]},{offset:e[2]+e[1].length})}emptyRule(e){let t=new zc;this.init(t,e[2]),t.selector="",t.raws.between="",this.current=t}end(e){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(e[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(e)}endFile(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position())}freeSemicolon(e){if(this.spaces+=e[1],this.current.nodes){let e=this.current.nodes[this.current.nodes.length-1];e&&"rule"===e.type&&!e.raws.ownSemicolon&&(e.raws.ownSemicolon=this.spaces,this.spaces="")}}getPosition(e){let t=this.input.fromOffset(e);return{column:t.col,line:t.line,offset:e}}init(e,t){this.current.push(e),e.source={input:this.input,start:this.getPosition(t)},e.raws.before=this.spaces,this.spaces="","comment"!==e.type&&(this.semicolon=!1)}other(e){let t=!1,n=null,o=!1,r=null,i=[],a=e[1].startsWith("--"),s=[],l=e;for(;l;){if(n=l[0],s.push(l),"("===n||"["===n)r||(r=l),i.push("("===n?")":"]");else if(a&&o&&"{"===n)r||(r=l),i.push("}");else if(0===i.length){if(";"===n){if(o)return void this.decl(s,a);break}if("{"===n)return void this.rule(s);if("}"===n){this.tokenizer.back(s.pop()),t=!0;break}":"===n&&(o=!0)}else n===i[i.length-1]&&(i.pop(),0===i.length&&(r=null));l=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(t=!0),i.length>0&&this.unclosedBracket(r),t&&o){if(!a)for(;s.length&&(l=s[s.length-1][0],"space"===l||"comment"===l);)this.tokenizer.back(s.pop());this.decl(s,a)}else this.unknownWord(s)}parse(){let e;for(;!this.tokenizer.endOfFile();)switch(e=this.tokenizer.nextToken(),e[0]){case"space":this.spaces+=e[1];break;case";":this.freeSemicolon(e);break;case"}":this.end(e);break;case"comment":this.comment(e);break;case"at-word":this.atrule(e);break;case"{":this.emptyRule(e);break;default:this.other(e)}this.endFile()}precheckMissedSemicolon(){}raw(e,t,n,o){let r,i,a,s,l=n.length,c="",u=!0;for(let d=0;de+t[1]),"");e.raws[t]={raw:o,value:c}}e[t]=c}rule(e){e.pop();let t=new zc;this.init(t,e[0][2]),t.raws.between=this.spacesAndCommentsFromEnd(e),this.raw(t,"selector",e),this.current=t}spacesAndCommentsFromEnd(e){let t,n="";for(;e.length&&(t=e[e.length-1][0],"space"===t||"comment"===t);)n=e.pop()[1]+n;return n}spacesAndCommentsFromStart(e){let t,n="";for(;e.length&&(t=e[0][0],"space"===t||"comment"===t);)n+=e.shift()[1];return n}spacesFromEnd(e){let t,n="";for(;e.length&&(t=e[e.length-1][0],"space"===t);)n=e.pop()[1]+n;return n}stringFrom(e,t){let n="";for(let o=t;opu(e))),e}let hu={},fu=class e{constructor(t,n,o){let r;if(this.stringified=!1,this.processed=!1,"object"!=typeof n||null===n||"root"!==n.type&&"document"!==n.type)if(n instanceof e||n instanceof nu)r=pu(n.root),n.map&&(void 0===o.map&&(o.map={}),o.map.inline||(o.map.inline=!1),o.map.prev=n.map);else{let e=ou;o.syntax&&(e=o.syntax.parse),o.parser&&(e=o.parser),e.parse&&(e=e.parse);try{r=e(n,o)}catch(i){this.processed=!0,this.error=i}r&&!r[Xc]&&eu.rebuild(r)}else r=pu(n);this.result=new nu(t,r,o),this.helpers={...hu,postcss:hu,result:this.result},this.plugins=this.processor.plugins.map((e=>"object"==typeof e&&e.prepare?{...e,...e.prepare(this.result)}:e))}async(){return this.error?Promise.reject(this.error):this.processed?Promise.resolve(this.result):(this.processing||(this.processing=this.runAsync()),this.processing)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}getAsyncError(){throw new Error("Use process(css).then(cb) to work with async plugins")}handleError(e,t){let n=this.result.lastPlugin;try{t&&t.addToError(e),this.error=e,"CssSyntaxError"!==e.name||e.plugin?n.postcssVersion:(e.plugin=n.postcssPlugin,e.setMessage())}catch(o){console&&console.error&&console.error(o)}return e}prepareVisitors(){this.listeners={};let e=(e,t,n)=>{this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].push([e,n])};for(let t of this.plugins)if("object"==typeof t)for(let n in t){if(!au[n]&&/^[A-Z]/.test(n))throw new Error(`Unknown event ${n} in ${t.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`);if(!su[n])if("object"==typeof t[n])for(let o in t[n])e(t,"*"===o?n:n+"-"+o.toLowerCase(),t[n][o]);else"function"==typeof t[n]&&e(t,n,t[n])}this.hasListener=Object.keys(this.listeners).length>0}async runAsync(){this.plugin=0;for(let n=0;n0;){let e=this.visitTick(n);if(cu(e))try{await e}catch(t){let e=n[n.length-1].node;throw this.handleError(t,e)}}}if(this.listeners.OnceExit)for(let[n,o]of this.listeners.OnceExit){this.result.lastPlugin=n;try{if("document"===e.type){let t=e.nodes.map((e=>o(e,this.helpers)));await Promise.all(t)}else await o(e,this.helpers)}catch(t){throw this.handleError(t)}}}return this.processed=!0,this.stringify()}runOnRoot(e){this.result.lastPlugin=e;try{if("object"==typeof e&&e.Once){if("document"===this.result.root.type){let t=this.result.root.nodes.map((t=>e.Once(t,this.helpers)));return cu(t[0])?Promise.all(t):t}return e.Once(this.result.root,this.helpers)}if("function"==typeof e)return e(this.result.root,this.result)}catch(t){throw this.handleError(t)}}stringify(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();let e=this.result.opts,t=Qc;e.syntax&&(t=e.syntax.stringify),e.stringifier&&(t=e.stringifier),t.stringify&&(t=t.stringify);let n=new $c(t,this.result.root,this.result.opts).generate();return this.result.css=n[0],this.result.map=n[1],this.result}sync(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(let e of this.plugins){if(cu(this.runOnRoot(e)))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){let e=this.result.root;for(;!e[Yc];)e[Yc]=!0,this.walkSync(e);if(this.listeners.OnceExit)if("document"===e.type)for(let t of e.nodes)this.visitSync(this.listeners.OnceExit,t);else this.visitSync(this.listeners.OnceExit,e)}return this.result}then(e,t){return this.async().then(e,t)}toString(){return this.css}visitSync(e,t){for(let[o,r]of e){let e;this.result.lastPlugin=o;try{e=r(t,this.helpers)}catch(n){throw this.handleError(n,t.proxyOf)}if("root"!==t.type&&"document"!==t.type&&!t.parent)return!0;if(cu(e))throw this.getAsyncError()}}visitTick(e){let t=e[e.length-1],{node:n,visitors:o}=t;if("root"!==n.type&&"document"!==n.type&&!n.parent)return void e.pop();if(o.length>0&&t.visitorIndex{e[Yc]||this.walkSync(e)}));else{let t=this.listeners[n];if(t&&this.visitSync(t,e.toProxy()))return}}warnings(){return this.sync().warnings()}get content(){return this.stringify().content}get css(){return this.stringify().css}get map(){return this.stringify().map}get messages(){return this.sync().messages}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){return this.sync().root}get[Symbol.toStringTag](){return"LazyResult"}};fu.registerPostcss=e=>{hu=e};var mu=fu;fu.default=fu,ru.registerLazyResult(fu),tu.registerLazyResult(fu);let gu=El,vu=Ns,yu=Kc;const bu=Ql;let wu=class{constructor(e,t,n){let o;t=t.toString(),this.stringified=!1,this._processor=e,this._css=t,this._opts=n,this._map=void 0;let r=vu;this.result=new bu(this._processor,o,this._opts),this.result.css=t;let i=this;Object.defineProperty(this.result,"root",{get:()=>i.root});let a=new gu(r,o,this._opts,t);if(a.isMap()){let[e,t]=a.generate();e&&(this.result.css=e),t&&(this.result.map=t)}else a.clearAnnotation(),this.result.css=a.css}async(){return this.error?Promise.reject(this.error):Promise.resolve(this.result)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}sync(){if(this.error)throw this.error;return this.result}then(e,t){return this.async().then(e,t)}toString(){return this._css}warnings(){return[]}get content(){return this.result.css}get css(){return this.result.css}get map(){return this.result.map}get messages(){return[]}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){if(this._root)return this._root;let e,t=yu;try{e=t(this._css,this._opts)}catch(n){this.error=n}if(this.error)throw this.error;return this._root=e,e}get[Symbol.toStringTag](){return"NoWorkResult"}};var ku=wu;wu.default=wu;let xu=ku,Su=mu,Cu=Zl,Iu=Ac,Ou=class{constructor(e=[]){this.version="8.4.38",this.plugins=this.normalize(e)}normalize(e){let t=[];for(let n of e)if(!0===n.postcss?n=n():n.postcss&&(n=n.postcss),"object"==typeof n&&Array.isArray(n.plugins))t=t.concat(n.plugins);else if("object"==typeof n&&n.postcssPlugin)t.push(n);else if("function"==typeof n)t.push(n);else{if("object"!=typeof n||!n.parse&&!n.stringify)throw new Error(n+" is not a PostCSS plugin")}return t}process(e,t={}){return this.plugins.length||t.parser||t.stringifier||t.syntax?new Su(this,e,t):new xu(this,e,t)}use(e){return this.plugins=this.plugins.concat(this.normalize([e])),this}};var Eu=Ou;Ou.default=Ou,Iu.registerProcessor(Ou),Cu.registerProcessor(Ou);let Tu=Vs,Lu=tl,Au=Al,Mu=Ic,Ru=gl,Pu=Ac,Du=jc;function Nu(e,t){if(Array.isArray(e))return e.map((e=>Nu(e)));let{inputs:n,...o}=e;if(n){t=[];for(let e of n){let n={...e,__proto__:Ru.prototype};n.map&&(n.map={...n.map,__proto__:Lu.prototype}),t.push(n)}}if(o.nodes&&(o.nodes=e.nodes.map((e=>Nu(e,t)))),o.source){let{inputId:e,...n}=o.source;o.source=n,null!=e&&(o.source.input=t[e])}if("root"===o.type)return new Pu(o);if("decl"===o.type)return new Tu(o);if("rule"===o.type)return new Du(o);if("comment"===o.type)return new Au(o);if("atrule"===o.type)return new Mu(o);throw new Error("Unknown node type: "+e.type)}var ju=Nu;Nu.default=Nu;let Fu=Ts,Bu=Vs,_u=mu,Uu=ql,Hu=Eu,zu=Ns,qu=ju,Wu=Zl,Gu=Yl,Vu=Al,Ju=Ic,Zu=Ql,Ku=gl,Yu=Kc,Xu=Rc,$u=jc,Qu=Ac,ed=qs;function td(...e){return 1===e.length&&Array.isArray(e[0])&&(e=e[0]),new Hu(e)}td.plugin=function(e,t){let n,o=!1;function r(...n){console&&console.warn&&!o&&(o=!0,console.warn(e+": postcss.plugin was deprecated. Migration guide:\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration"),process.env.LANG&&process.env.LANG.startsWith("cn")&&console.warn(e+": 里面 postcss.plugin 被弃用. 迁移指南:\nhttps://www.w3ctech.com/topic/2226"));let r=t(...n);return r.postcssPlugin=e,r.postcssVersion=(new Hu).version,r}return Object.defineProperty(r,"postcss",{get:()=>(n||(n=r()),n)}),r.process=function(e,t,n){return td([r(n)]).process(e,t)},r},td.stringify=zu,td.parse=Yu,td.fromJSON=qu,td.list=Xu,td.comment=e=>new Vu(e),td.atRule=e=>new Ju(e),td.decl=e=>new Bu(e),td.rule=e=>new $u(e),td.root=e=>new Qu(e),td.document=e=>new Wu(e),td.CssSyntaxError=Fu,td.Declaration=Bu,td.Container=Uu,td.Processor=Hu,td.Document=Wu,td.Comment=Vu,td.Warning=Gu,td.AtRule=Ju,td.Result=Zu,td.Input=Ku,td.Rule=$u,td.Root=Qu,td.Node=ed,_u.registerPostcss(td);var nd=td;td.default=td;const od=ys(nd);od.stringify,od.fromJSON,od.plugin,od.parse,od.list,od.document,od.comment,od.atRule,od.rule,od.decl,od.root,od.CssSyntaxError,od.Declaration,od.Container,od.Processor,od.Document,od.Comment,od.Warning,od.AtRule,od.Result,od.Input,od.Rule,od.Root,od.Node;class rd{constructor(...e){vs(this,"parentElement",null),vs(this,"parentNode",null),vs(this,"ownerDocument"),vs(this,"firstChild",null),vs(this,"lastChild",null),vs(this,"previousSibling",null),vs(this,"nextSibling",null),vs(this,"ELEMENT_NODE",1),vs(this,"TEXT_NODE",3),vs(this,"nodeType"),vs(this,"nodeName"),vs(this,"RRNodeType")}get childNodes(){const e=[];let t=this.firstChild;for(;t;)e.push(t),t=t.nextSibling;return e}contains(e){if(!(e instanceof rd))return!1;if(e.ownerDocument!==this.ownerDocument)return!1;if(e===this)return!0;for(;e.parentNode;){if(e.parentNode===this)return!0;e=e.parentNode}return!1}appendChild(e){throw new Error("RRDomException: Failed to execute 'appendChild' on 'RRNode': This RRNode type does not support this method.")}insertBefore(e,t){throw new Error("RRDomException: Failed to execute 'insertBefore' on 'RRNode': This RRNode type does not support this method.")}removeChild(e){throw new Error("RRDomException: Failed to execute 'removeChild' on 'RRNode': This RRNode type does not support this method.")}toString(){return"RRNode"}}const id={Node:["childNodes","parentNode","parentElement","textContent"],ShadowRoot:["host","styleSheets"],Element:["shadowRoot","querySelector","querySelectorAll"],MutationObserver:[]},ad={Node:["contains","getRootNode"],ShadowRoot:["getSelection"],Element:[],MutationObserver:["constructor"]},sd={},ld=()=>!!globalThis.Zone;function cd(e){if(sd[e])return sd[e];const t=globalThis[e],n=t.prototype,o=e in id?id[e]:void 0,r=Boolean(o&&o.every((e=>{var t,o;return Boolean(null==(o=null==(t=Object.getOwnPropertyDescriptor(n,e))?void 0:t.get)?void 0:o.toString().includes("[native code]"))}))),i=e in ad?ad[e]:void 0,a=Boolean(i&&i.every((e=>{var t;return"function"==typeof n[e]&&(null==(t=n[e])?void 0:t.toString().includes("[native code]"))})));if(r&&a&&!ld())return sd[e]=t.prototype,t.prototype;try{const o=document.createElement("iframe");document.body.appendChild(o);const r=o.contentWindow;if(!r)return t.prototype;const i=r[e].prototype;return document.body.removeChild(o),i?sd[e]=i:n}catch{return n}}const ud={};function dd(e,t,n){var o;const r=`${e}.${String(n)}`;if(ud[r])return ud[r].call(t);const i=cd(e),a=null==(o=Object.getOwnPropertyDescriptor(i,n))?void 0:o.get;return a?(ud[r]=a,a.call(t)):t[n]}const pd={};function hd(e,t,n){const o=`${e}.${String(n)}`;if(pd[o])return pd[o].bind(t);const r=cd(e)[n];return"function"!=typeof r?t[n]:(pd[o]=r,r.bind(t))}function fd(){return cd("MutationObserver").constructor}const md={childNodes:function(e){return dd("Node",e,"childNodes")},parentNode:function(e){return dd("Node",e,"parentNode")},parentElement:function(e){return dd("Node",e,"parentElement")},textContent:function(e){return dd("Node",e,"textContent")},contains:function(e,t){return hd("Node",e,"contains")(t)},getRootNode:function(e){return hd("Node",e,"getRootNode")()},host:function(e){return e&&"host"in e?dd("ShadowRoot",e,"host"):null},styleSheets:function(e){return e.styleSheets},shadowRoot:function(e){return e&&"shadowRoot"in e?dd("Element",e,"shadowRoot"):null},querySelector:function(e,t){return dd("Element",e,"querySelector")(t)},querySelectorAll:function(e,t){return dd("Element",e,"querySelectorAll")(t)},mutationObserver:fd};function gd(e,t,n=document){const o={capture:!0,passive:!0};return n.addEventListener(e,t,o),()=>n.removeEventListener(e,t,o)}const vd="Please stop import mirror directly. Instead of that,\r\nnow you can use replayer.getMirror() to access the mirror instance of a replayer,\r\nor you can use record.mirror to access the mirror instance during recording.";let yd={map:{},getId:()=>(console.error(vd),-1),getNode:()=>(console.error(vd),null),removeNodeFromMap(){console.error(vd)},has:()=>(console.error(vd),!1),reset(){console.error(vd)}};function bd(e,t,n={}){let o=null,r=0;return function(...i){const a=Date.now();r||!1!==n.leading||(r=a);const s=t-(a-r),l=this;s<=0||s>t?(o&&(clearTimeout(o),o=null),r=a,e.apply(l,i)):o||!1===n.trailing||(o=setTimeout((()=>{r=!1===n.leading?0:Date.now(),o=null,e.apply(l,i)}),s))}}function wd(e,t,n,o,r=window){const i=r.Object.getOwnPropertyDescriptor(e,t);return r.Object.defineProperty(e,t,o?n:{set(e){setTimeout((()=>{n.set.call(this,e)}),0),i&&i.set&&i.set.call(this,e)}}),()=>wd(e,t,i||{},!0)}function kd(e,t,n){try{if(!(t in e))return()=>{};const o=e[t],r=n(o);return"function"==typeof r&&(r.prototype=r.prototype||{},Object.defineProperties(r,{__rrweb_original__:{enumerable:!1,value:o}})),e[t]=r,()=>{e[t]=o}}catch{return()=>{}}}"undefined"!=typeof window&&window.Proxy&&window.Reflect&&(yd=new Proxy(yd,{get:(e,t,n)=>("map"===t&&console.error(vd),Reflect.get(e,t,n))}));let xd=Date.now;function Sd(e){var t,n,o,r;const i=e.document;return{left:i.scrollingElement?i.scrollingElement.scrollLeft:void 0!==e.pageXOffset?e.pageXOffset:i.documentElement.scrollLeft||(null==i?void 0:i.body)&&(null==(t=md.parentElement(i.body))?void 0:t.scrollLeft)||(null==(n=null==i?void 0:i.body)?void 0:n.scrollLeft)||0,top:i.scrollingElement?i.scrollingElement.scrollTop:void 0!==e.pageYOffset?e.pageYOffset:(null==i?void 0:i.documentElement.scrollTop)||(null==i?void 0:i.body)&&(null==(o=md.parentElement(i.body))?void 0:o.scrollTop)||(null==(r=null==i?void 0:i.body)?void 0:r.scrollTop)||0}}function Cd(){return window.innerHeight||document.documentElement&&document.documentElement.clientHeight||document.body&&document.body.clientHeight}function Id(){return window.innerWidth||document.documentElement&&document.documentElement.clientWidth||document.body&&document.body.clientWidth}function Od(e){if(!e)return null;return e.nodeType===e.ELEMENT_NODE?e:md.parentElement(e)}function Ed(e,t,n,o){if(!e)return!1;const r=Od(e);if(!r)return!1;try{if("string"==typeof t){if(r.classList.contains(t))return!0;if(o&&null!==r.closest("."+t))return!0}else if(Io(r,t,o))return!0}catch(i){}if(n){if(r.matches(n))return!0;if(o&&null!==r.closest(n))return!0}return!1}function Td(e,t,n){return!("TITLE"!==e.tagName||!n.headTitleMutations)||t.getId(e)===ho}function Ld(e,t){if(Jn(e))return!1;const n=t.getId(e);if(!t.has(n))return!0;const o=md.parentNode(e);return(!o||o.nodeType!==e.DOCUMENT_NODE)&&(!o||Ld(o,t))}function Ad(e){return Boolean(e.changedTouches)}function Md(e,t){return Boolean("IFRAME"===e.nodeName&&t.getMeta(e))}function Rd(e,t){return Boolean("LINK"===e.nodeName&&e.nodeType===e.ELEMENT_NODE&&e.getAttribute&&"stylesheet"===e.getAttribute("rel")&&t.getMeta(e))}function Pd(e){return!!e&&(e instanceof rd&&"shadowRoot"in e?Boolean(e.shadowRoot):Boolean(md.shadowRoot(e)))}/[1-9][0-9]{12}/.test(Date.now().toString())||(xd=()=>(new Date).getTime());class Dd{constructor(){Rn(this,"id",1),Rn(this,"styleIDMap",new WeakMap),Rn(this,"idStyleMap",new Map)}getId(e){return this.styleIDMap.get(e)??-1}has(e){return this.styleIDMap.has(e)}add(e,t){if(this.has(e))return this.getId(e);let n;return n=void 0===t?this.id++:t,this.styleIDMap.set(e,n),this.idStyleMap.set(n,e),n}getStyle(e){return this.idStyleMap.get(e)||null}reset(){this.styleIDMap=new WeakMap,this.idStyleMap=new Map,this.id=1}generateId(){return this.id++}}function Nd(e){var t;let n=null;return"getRootNode"in e&&(null==(t=md.getRootNode(e))?void 0:t.nodeType)===Node.DOCUMENT_FRAGMENT_NODE&&md.host(md.getRootNode(e))&&(n=md.host(md.getRootNode(e))),n}function jd(e){const t=e.ownerDocument;if(!t)return!1;const n=function(e){let t,n=e;for(;t=Nd(n);)n=t;return n}(e);return md.contains(t,n)}function Fd(e){const t=e.ownerDocument;return!!t&&(md.contains(t,e)||jd(e))}var Bd=(e=>(e[e.DomContentLoaded=0]="DomContentLoaded",e[e.Load=1]="Load",e[e.FullSnapshot=2]="FullSnapshot",e[e.IncrementalSnapshot=3]="IncrementalSnapshot",e[e.Meta=4]="Meta",e[e.Custom=5]="Custom",e[e.Plugin=6]="Plugin",e))(Bd||{}),_d=(e=>(e[e.Mutation=0]="Mutation",e[e.MouseMove=1]="MouseMove",e[e.MouseInteraction=2]="MouseInteraction",e[e.Scroll=3]="Scroll",e[e.ViewportResize=4]="ViewportResize",e[e.Input=5]="Input",e[e.TouchMove=6]="TouchMove",e[e.MediaInteraction=7]="MediaInteraction",e[e.StyleSheetRule=8]="StyleSheetRule",e[e.CanvasMutation=9]="CanvasMutation",e[e.Font=10]="Font",e[e.Log=11]="Log",e[e.Drag=12]="Drag",e[e.StyleDeclaration=13]="StyleDeclaration",e[e.Selection=14]="Selection",e[e.AdoptedStyleSheet=15]="AdoptedStyleSheet",e[e.CustomElement=16]="CustomElement",e))(_d||{}),Ud=(e=>(e[e.MouseUp=0]="MouseUp",e[e.MouseDown=1]="MouseDown",e[e.Click=2]="Click",e[e.ContextMenu=3]="ContextMenu",e[e.DblClick=4]="DblClick",e[e.Focus=5]="Focus",e[e.Blur=6]="Blur",e[e.TouchStart=7]="TouchStart",e[e.TouchMove_Departed=8]="TouchMove_Departed",e[e.TouchEnd=9]="TouchEnd",e[e.TouchCancel=10]="TouchCancel",e))(Ud||{}),Hd=(e=>(e[e.Mouse=0]="Mouse",e[e.Pen=1]="Pen",e[e.Touch=2]="Touch",e))(Hd||{}),zd=(e=>(e[e["2D"]=0]="2D",e[e.WebGL=1]="WebGL",e[e.WebGL2=2]="WebGL2",e))(zd||{}),qd=(e=>(e[e.Play=0]="Play",e[e.Pause=1]="Pause",e[e.Seeked=2]="Seeked",e[e.VolumeChange=3]="VolumeChange",e[e.RateChange=4]="RateChange",e))(qd||{}),Wd=(e=>(e[e.Document=0]="Document",e[e.DocumentType=1]="DocumentType",e[e.Element=2]="Element",e[e.Text=3]="Text",e[e.CDATA=4]="CDATA",e[e.Comment=5]="Comment",e))(Wd||{});function Gd(e){return"__ln"in e}class Vd{constructor(){Rn(this,"length",0),Rn(this,"head",null),Rn(this,"tail",null)}get(e){if(e>=this.length)throw new Error("Position outside of list range");let t=this.head;for(let n=0;n`${e}@${t}`;class Zd{constructor(){Rn(this,"frozen",!1),Rn(this,"locked",!1),Rn(this,"texts",[]),Rn(this,"attributes",[]),Rn(this,"attributeMap",new WeakMap),Rn(this,"removes",[]),Rn(this,"mapRemoves",[]),Rn(this,"movedMap",{}),Rn(this,"addedSet",new Set),Rn(this,"movedSet",new Set),Rn(this,"droppedSet",new Set),Rn(this,"removesSubTreeCache",new Set),Rn(this,"mutationCb"),Rn(this,"blockClass"),Rn(this,"blockSelector"),Rn(this,"maskTextClass"),Rn(this,"maskTextSelector"),Rn(this,"inlineStylesheet"),Rn(this,"maskInputOptions"),Rn(this,"maskTextFn"),Rn(this,"maskInputFn"),Rn(this,"keepIframeSrcFn"),Rn(this,"recordCanvas"),Rn(this,"inlineImages"),Rn(this,"slimDOMOptions"),Rn(this,"dataURLOptions"),Rn(this,"doc"),Rn(this,"mirror"),Rn(this,"iframeManager"),Rn(this,"stylesheetManager"),Rn(this,"shadowDomManager"),Rn(this,"canvasManager"),Rn(this,"processedNodeManager"),Rn(this,"unattachedDoc"),Rn(this,"processMutations",(e=>{e.forEach(this.processMutation),this.emit()})),Rn(this,"emit",(()=>{if(this.frozen||this.locked)return;const e=[],t=new Set,n=new Vd,o=e=>{let t=e,n=ho;for(;n===ho;)t=t&&t.nextSibling,n=t&&this.mirror.getId(t);return n},r=r=>{const i=md.parentNode(r);if(!i||!Fd(r))return;let a=!1;if(r.nodeType===Node.TEXT_NODE){const e=i.tagName;if("TEXTAREA"===e)return;"STYLE"===e&&this.addedSet.has(i)&&(a=!0)}const s=Jn(i)?this.mirror.getId(Nd(r)):this.mirror.getId(i),l=o(r);if(-1===s||-1===l)return n.addNode(r);const c=Lo(r,{doc:this.doc,mirror:this.mirror,blockClass:this.blockClass,blockSelector:this.blockSelector,maskTextClass:this.maskTextClass,maskTextSelector:this.maskTextSelector,skipChild:!0,newlyAddedElement:!0,inlineStylesheet:this.inlineStylesheet,maskInputOptions:this.maskInputOptions,maskTextFn:this.maskTextFn,maskInputFn:this.maskInputFn,slimDOMOptions:this.slimDOMOptions,dataURLOptions:this.dataURLOptions,recordCanvas:this.recordCanvas,inlineImages:this.inlineImages,onSerialize:e=>{Md(e,this.mirror)&&this.iframeManager.addIframe(e),Rd(e,this.mirror)&&this.stylesheetManager.trackLinkElement(e),Pd(r)&&this.shadowDomManager.addShadowRoot(md.shadowRoot(r),this.doc)},onIframeLoad:(e,t)=>{this.iframeManager.attachIframe(e,t),this.shadowDomManager.observeAttachShadow(e)},onStylesheetLoad:(e,t)=>{this.stylesheetManager.attachLinkElement(e,t)},cssCaptured:a});c&&(e.push({parentId:s,nextId:l,node:c}),t.add(c.id))};for(;this.mapRemoves.length;)this.mirror.removeNodeFromMap(this.mapRemoves.shift());for(const s of this.movedSet)Yd(this.removesSubTreeCache,s,this.mirror)&&!this.movedSet.has(md.parentNode(s))||r(s);for(const s of this.addedSet)Xd(this.droppedSet,s)||Yd(this.removesSubTreeCache,s,this.mirror)?Xd(this.movedSet,s)?r(s):this.droppedSet.add(s):r(s);let i=null;for(;n.length;){let e=null;if(i){const t=this.mirror.getId(md.parentNode(i.value)),n=o(i.value);-1!==t&&-1!==n&&(e=i)}if(!e){let t=n.tail;for(;t;){const n=t;if(t=t.previous,n){const t=this.mirror.getId(md.parentNode(n.value));if(-1===o(n.value))continue;if(-1!==t){e=n;break}{const t=n.value,o=md.parentNode(t);if(o&&o.nodeType===Node.DOCUMENT_FRAGMENT_NODE){const t=md.host(o);if(-1!==this.mirror.getId(t)){e=n;break}}}}}}if(!e){for(;n.head;)n.removeNode(n.head.value);break}i=e.previous,n.removeNode(e.value),r(e.value)}const a={texts:this.texts.map((e=>{const t=e.node,n=md.parentNode(t);return n&&"TEXTAREA"===n.tagName&&this.genTextAreaValueMutation(n),{id:this.mirror.getId(t),value:e.value}})).filter((e=>!t.has(e.id))).filter((e=>this.mirror.has(e.id))),attributes:this.attributes.map((e=>{const{attributes:t}=e;if("string"==typeof t.style){const n=JSON.stringify(e.styleDiff),o=JSON.stringify(e._unchangedStyles);n.length!t.has(e.id))).filter((e=>this.mirror.has(e.id))),removes:this.removes,adds:e};(a.texts.length||a.attributes.length||a.removes.length||a.adds.length)&&(this.texts=[],this.attributes=[],this.attributeMap=new WeakMap,this.removes=[],this.addedSet=new Set,this.movedSet=new Set,this.droppedSet=new Set,this.removesSubTreeCache=new Set,this.movedMap={},this.mutationCb(a))})),Rn(this,"genTextAreaValueMutation",(e=>{let t=this.attributeMap.get(e);t||(t={node:e,attributes:{},styleDiff:{},_unchangedStyles:{}},this.attributes.push(t),this.attributeMap.set(e,t)),t.attributes.value=Array.from(md.childNodes(e),(e=>md.textContent(e)||"")).join("")})),Rn(this,"processMutation",(e=>{if(!Td(e.target,this.mirror,this.slimDOMOptions))switch(e.type){case"characterData":{const t=md.textContent(e.target);Ed(e.target,this.blockClass,this.blockSelector,!1)||t===e.oldValue||this.texts.push({value:Oo(e.target,this.maskTextClass,this.maskTextSelector,!0)&&t?this.maskTextFn?this.maskTextFn(t,Od(e.target)):t.replace(/[\S]/g,"*"):t,node:e.target});break}case"attributes":{const n=e.target;let o=e.attributeName,r=e.target.getAttribute(o);if("value"===o){const e=to(n);r=$n({element:n,maskInputOptions:this.maskInputOptions,tagName:n.tagName,type:e,value:r,maskInputFn:this.maskInputFn})}if(Ed(e.target,this.blockClass,this.blockSelector,!1)||r===e.oldValue)return;let i=this.attributeMap.get(e.target);if("IFRAME"===n.tagName&&"src"===o&&!this.keepIframeSrcFn(r)){if(n.contentDocument)return;o="rr_src"}if(i||(i={node:e.target,attributes:{},styleDiff:{},_unchangedStyles:{}},this.attributes.push(i),this.attributeMap.set(e.target,i)),"type"===o&&"INPUT"===n.tagName&&"password"===(e.oldValue||"").toLowerCase()&&n.setAttribute("data-rr-is-password","true"),!Co(n.tagName,o))if(i.attributes[o]=So(this.doc,Qn(n.tagName),Qn(o),r),"style"===o){if(!this.unattachedDoc)try{this.unattachedDoc=document.implementation.createHTMLDocument()}catch(t){this.unattachedDoc=this.doc}const o=this.unattachedDoc.createElement("span");e.oldValue&&o.setAttribute("style",e.oldValue);for(const e of Array.from(n.style)){const t=n.style.getPropertyValue(e),r=n.style.getPropertyPriority(e);t!==o.style.getPropertyValue(e)||r!==o.style.getPropertyPriority(e)?i.styleDiff[e]=""===r?t:[t,r]:i._unchangedStyles[e]=[t,r]}for(const e of Array.from(o.style))""===n.style.getPropertyValue(e)&&(i.styleDiff[e]=!1)}else"open"===o&&"DIALOG"===n.tagName&&(n.matches("dialog:modal")?i.attributes.rr_open_mode="modal":i.attributes.rr_open_mode="non-modal");break}case"childList":if(Ed(e.target,this.blockClass,this.blockSelector,!0))return;if("TEXTAREA"===e.target.tagName)return void this.genTextAreaValueMutation(e.target);e.addedNodes.forEach((t=>this.genAdds(t,e.target))),e.removedNodes.forEach((t=>{const n=this.mirror.getId(t),o=Jn(e.target)?this.mirror.getId(md.host(e.target)):this.mirror.getId(e.target);Ed(e.target,this.blockClass,this.blockSelector,!1)||Td(t,this.mirror,this.slimDOMOptions)||!function(e,t){return-1!==t.getId(e)}(t,this.mirror)||(this.addedSet.has(t)?(Kd(this.addedSet,t),this.droppedSet.add(t)):this.addedSet.has(e.target)&&-1===n||Ld(e.target,this.mirror)||(this.movedSet.has(t)&&this.movedMap[Jd(n,o)]?Kd(this.movedSet,t):(this.removes.push({parentId:o,id:n,isShadow:!(!Jn(e.target)||!Zn(e.target))||void 0}),function(e,t){const n=[e];for(;n.length;){const e=n.pop();t.has(e)||(t.add(e),md.childNodes(e).forEach((e=>n.push(e))))}}(t,this.removesSubTreeCache))),this.mapRemoves.push(t))}))}})),Rn(this,"genAdds",((e,t)=>{if(!this.processedNodeManager.inOtherBuffer(e,this)&&!this.addedSet.has(e)&&!this.movedSet.has(e)){if(this.mirror.hasNode(e)){if(Td(e,this.mirror,this.slimDOMOptions))return;this.movedSet.add(e);let n=null;t&&this.mirror.hasNode(t)&&(n=this.mirror.getId(t)),n&&-1!==n&&(this.movedMap[Jd(this.mirror.getId(e),n)]=!0)}else this.addedSet.add(e),this.droppedSet.delete(e);Ed(e,this.blockClass,this.blockSelector,!1)||(md.childNodes(e).forEach((e=>this.genAdds(e))),Pd(e)&&md.childNodes(md.shadowRoot(e)).forEach((t=>{this.processedNodeManager.add(t,this),this.genAdds(t,e)})))}}))}init(e){["mutationCb","blockClass","blockSelector","maskTextClass","maskTextSelector","inlineStylesheet","maskInputOptions","maskTextFn","maskInputFn","keepIframeSrcFn","recordCanvas","inlineImages","slimDOMOptions","dataURLOptions","doc","mirror","iframeManager","stylesheetManager","shadowDomManager","canvasManager","processedNodeManager"].forEach((t=>{this[t]=e[t]}))}freeze(){this.frozen=!0,this.canvasManager.freeze()}unfreeze(){this.frozen=!1,this.canvasManager.unfreeze(),this.emit()}isFrozen(){return this.frozen}lock(){this.locked=!0,this.canvasManager.lock()}unlock(){this.locked=!1,this.canvasManager.unlock(),this.emit()}reset(){this.shadowDomManager.reset(),this.canvasManager.reset()}}function Kd(e,t){e.delete(t),md.childNodes(t).forEach((t=>Kd(e,t)))}function Yd(e,t,n){return 0!==e.size&&function(e,t,n){const o=md.parentNode(t);return!!o&&e.has(o)}(e,t)}function Xd(e,t){return 0!==e.size&&$d(e,t)}function $d(e,t){const n=md.parentNode(t);return!!n&&(!!e.has(n)||$d(e,n))}let Qd;const ep=e=>{if(!Qd)return e;return(...t)=>{try{return e(...t)}catch(n){if(Qd&&!0===Qd(n))return;throw n}}},tp=[];function np(e){try{if("composedPath"in e){const t=e.composedPath();if(t.length)return t[0]}else if("path"in e&&e.path.length)return e.path[0]}catch{}return e&&e.target}function op(e,t){const n=new Zd;tp.push(n),n.init(e);const o=new(fd())(ep(n.processMutations.bind(n)));return o.observe(t,{attributes:!0,attributeOldValue:!0,characterData:!0,characterDataOldValue:!0,childList:!0,subtree:!0}),o}function rp({mouseInteractionCb:e,doc:t,mirror:n,blockClass:o,blockSelector:r,sampling:i}){if(!1===i.mouseInteraction)return()=>{};const a=!0===i.mouseInteraction||void 0===i.mouseInteraction?{}:i.mouseInteraction,s=[];let l=null;return Object.keys(Ud).filter((e=>Number.isNaN(Number(e))&&!e.endsWith("_Departed")&&!1!==a[e])).forEach((i=>{let a=Qn(i);const c=(t=>i=>{const a=np(i);if(Ed(a,o,r,!0))return;let s=null,c=t;if("pointerType"in i){switch(i.pointerType){case"mouse":s=Hd.Mouse;break;case"touch":s=Hd.Touch;break;case"pen":s=Hd.Pen}s===Hd.Touch?Ud[t]===Ud.MouseDown?c="TouchStart":Ud[t]===Ud.MouseUp&&(c="TouchEnd"):Hd.Pen}else Ad(i)&&(s=Hd.Touch);null!==s?(l=s,(c.startsWith("Touch")&&s===Hd.Touch||c.startsWith("Mouse")&&s===Hd.Mouse)&&(s=null)):Ud[t]===Ud.Click&&(s=l,l=null);const u=Ad(i)?i.changedTouches[0]:i;if(!u)return;const d=n.getId(a),{clientX:p,clientY:h}=u;ep(e)({type:Ud[c],id:d,x:p,y:h,...null!==s&&{pointerType:s}})})(i);if(window.PointerEvent)switch(Ud[i]){case Ud.MouseDown:case Ud.MouseUp:a=a.replace("mouse","pointer");break;case Ud.TouchStart:case Ud.TouchEnd:return}s.push(gd(a,c,t))})),ep((()=>{s.forEach((e=>e()))}))}function ip({scrollCb:e,doc:t,mirror:n,blockClass:o,blockSelector:r,sampling:i}){return gd("scroll",ep(bd(ep((i=>{const a=np(i);if(!a||Ed(a,o,r,!0))return;const s=n.getId(a);if(a===t&&t.defaultView){const n=Sd(t.defaultView);e({id:s,x:n.left,y:n.top})}else e({id:s,x:a.scrollLeft,y:a.scrollTop})})),i.scroll||100)),t)}const ap=["INPUT","TEXTAREA","SELECT"],sp=new WeakMap;function lp(e){return function(e,t){if(pp("CSSGroupingRule")&&e.parentRule instanceof CSSGroupingRule||pp("CSSMediaRule")&&e.parentRule instanceof CSSMediaRule||pp("CSSSupportsRule")&&e.parentRule instanceof CSSSupportsRule||pp("CSSConditionRule")&&e.parentRule instanceof CSSConditionRule){const n=Array.from(e.parentRule.cssRules).indexOf(e);t.unshift(n)}else if(e.parentStyleSheet){const n=Array.from(e.parentStyleSheet.cssRules).indexOf(e);t.unshift(n)}return t}(e,[])}function cp(e,t,n){let o,r;return e?(e.ownerNode?o=t.getId(e.ownerNode):r=n.getId(e),{styleId:r,id:o}):{}}function up({mirror:e,stylesheetManager:t},n){var o,r,i;let a=null;a="#document"===n.nodeName?e.getId(n):e.getId(md.host(n));const s="#document"===n.nodeName?null==(o=n.defaultView)?void 0:o.Document:null==(i=null==(r=n.ownerDocument)?void 0:r.defaultView)?void 0:i.ShadowRoot,l=(null==s?void 0:s.prototype)?Object.getOwnPropertyDescriptor(null==s?void 0:s.prototype,"adoptedStyleSheets"):void 0;return null!==a&&-1!==a&&s&&l?(Object.defineProperty(n,"adoptedStyleSheets",{configurable:l.configurable,enumerable:l.enumerable,get(){var e;return null==(e=l.get)?void 0:e.call(this)},set(e){var n;const o=null==(n=l.set)?void 0:n.call(this,e);if(null!==a&&-1!==a)try{t.adoptStyleSheets(e,a)}catch(r){}return o}}),ep((()=>{Object.defineProperty(n,"adoptedStyleSheets",{configurable:l.configurable,enumerable:l.enumerable,get:l.get,set:l.set})}))):()=>{}}function dp(e,t={}){const n=e.doc.defaultView;if(!n)return()=>{};let o;!function(e,t){const{mutationCb:n,mousemoveCb:o,mouseInteractionCb:r,scrollCb:i,viewportResizeCb:a,inputCb:s,mediaInteractionCb:l,styleSheetRuleCb:c,styleDeclarationCb:u,canvasMutationCb:d,fontCb:p,selectionCb:h,customElementCb:f}=e;e.mutationCb=(...e)=>{t.mutation&&t.mutation(...e),n(...e)},e.mousemoveCb=(...e)=>{t.mousemove&&t.mousemove(...e),o(...e)},e.mouseInteractionCb=(...e)=>{t.mouseInteraction&&t.mouseInteraction(...e),r(...e)},e.scrollCb=(...e)=>{t.scroll&&t.scroll(...e),i(...e)},e.viewportResizeCb=(...e)=>{t.viewportResize&&t.viewportResize(...e),a(...e)},e.inputCb=(...e)=>{t.input&&t.input(...e),s(...e)},e.mediaInteractionCb=(...e)=>{t.mediaInteaction&&t.mediaInteaction(...e),l(...e)},e.styleSheetRuleCb=(...e)=>{t.styleSheetRule&&t.styleSheetRule(...e),c(...e)},e.styleDeclarationCb=(...e)=>{t.styleDeclaration&&t.styleDeclaration(...e),u(...e)},e.canvasMutationCb=(...e)=>{t.canvasMutation&&t.canvasMutation(...e),d(...e)},e.fontCb=(...e)=>{t.font&&t.font(...e),p(...e)},e.selectionCb=(...e)=>{t.selection&&t.selection(...e),h(...e)},e.customElementCb=(...e)=>{t.customElement&&t.customElement(...e),f(...e)}}(e,t),e.recordDOM&&(o=op(e,e.doc));const r=function({mousemoveCb:e,sampling:t,doc:n,mirror:o}){if(!1===t.mousemove)return()=>{};const r="number"==typeof t.mousemove?t.mousemove:50,i="number"==typeof t.mousemoveCallback?t.mousemoveCallback:500;let a,s=[];const l=bd(ep((t=>{const n=Date.now()-a;e(s.map((e=>(e.timeOffset-=n,e))),t),s=[],a=null})),i),c=ep(bd(ep((e=>{const t=np(e),{clientX:n,clientY:r}=Ad(e)?e.changedTouches[0]:e;a||(a=xd()),s.push({x:n,y:r,id:o.getId(t),timeOffset:xd()-a}),l("undefined"!=typeof DragEvent&&e instanceof DragEvent?_d.Drag:e instanceof MouseEvent?_d.MouseMove:_d.TouchMove)})),r,{trailing:!1})),u=[gd("mousemove",c,n),gd("touchmove",c,n),gd("drag",c,n)];return ep((()=>{u.forEach((e=>e()))}))}(e),i=rp(e),a=ip(e),s=function({viewportResizeCb:e},{win:t}){let n=-1,o=-1;return gd("resize",ep(bd(ep((()=>{const t=Cd(),r=Id();n===t&&o===r||(e({width:Number(r),height:Number(t)}),n=t,o=r)})),200)),t)}(e,{win:n}),l=function({inputCb:e,doc:t,mirror:n,blockClass:o,blockSelector:r,ignoreClass:i,ignoreSelector:a,maskInputOptions:s,maskInputFn:l,sampling:c,userTriggeredOnInput:u}){function d(e){let n=np(e);const c=e.isTrusted,d=n&&n.tagName;if(n&&"OPTION"===d&&(n=md.parentElement(n)),!n||!d||ap.indexOf(d)<0||Ed(n,o,r,!0))return;if(n.classList.contains(i)||a&&n.matches(a))return;let h=n.value,f=!1;const m=to(n)||"";"radio"===m||"checkbox"===m?f=n.checked:(s[d.toLowerCase()]||s[m])&&(h=$n({element:n,maskInputOptions:s,tagName:d,type:m,value:h,maskInputFn:l})),p(n,u?{text:h,isChecked:f,userTriggered:c}:{text:h,isChecked:f});const g=n.name;"radio"===m&&g&&f&&t.querySelectorAll(`input[type="radio"][name="${g}"]`).forEach((e=>{if(e!==n){const t=e.value;p(e,u?{text:t,isChecked:!f,userTriggered:!1}:{text:t,isChecked:!f})}}))}function p(t,o){const r=sp.get(t);if(!r||r.text!==o.text||r.isChecked!==o.isChecked){sp.set(t,o);const r=n.getId(t);ep(e)({...o,id:r})}}const h=("last"===c.input?["change"]:["input","change"]).map((e=>gd(e,ep(d),t))),f=t.defaultView;if(!f)return()=>{h.forEach((e=>e()))};const m=f.Object.getOwnPropertyDescriptor(f.HTMLInputElement.prototype,"value"),g=[[f.HTMLInputElement.prototype,"value"],[f.HTMLInputElement.prototype,"checked"],[f.HTMLSelectElement.prototype,"value"],[f.HTMLTextAreaElement.prototype,"value"],[f.HTMLSelectElement.prototype,"selectedIndex"],[f.HTMLOptionElement.prototype,"selected"]];return m&&m.set&&h.push(...g.map((e=>wd(e[0],e[1],{set(){ep(d)({target:this,isTrusted:!1})}},!1,f)))),ep((()=>{h.forEach((e=>e()))}))}(e),c=function({mediaInteractionCb:e,blockClass:t,blockSelector:n,mirror:o,sampling:r,doc:i}){const a=ep((i=>bd(ep((r=>{const a=np(r);if(!a||Ed(a,t,n,!0))return;const{currentTime:s,volume:l,muted:c,playbackRate:u,loop:d}=a;e({type:i,id:o.getId(a),currentTime:s,volume:l,muted:c,playbackRate:u,loop:d})})),r.media||500))),s=[gd("play",a(qd.Play),i),gd("pause",a(qd.Pause),i),gd("seeked",a(qd.Seeked),i),gd("volumechange",a(qd.VolumeChange),i),gd("ratechange",a(qd.RateChange),i)];return ep((()=>{s.forEach((e=>e()))}))}(e);let u=()=>{},d=()=>{},p=()=>{},h=()=>{};e.recordDOM&&(u=function({styleSheetRuleCb:e,mirror:t,stylesheetManager:n},{win:o}){if(!o.CSSStyleSheet||!o.CSSStyleSheet.prototype)return()=>{};const r=o.CSSStyleSheet.prototype.insertRule;o.CSSStyleSheet.prototype.insertRule=new Proxy(r,{apply:ep(((o,r,i)=>{const[a,s]=i,{id:l,styleId:c}=cp(r,t,n.styleMirror);return(l&&-1!==l||c&&-1!==c)&&e({id:l,styleId:c,adds:[{rule:a,index:s}]}),o.apply(r,i)}))}),o.CSSStyleSheet.prototype.addRule=function(e,t,n=this.cssRules.length){const r=`${e} { ${t} }`;return o.CSSStyleSheet.prototype.insertRule.apply(this,[r,n])};const i=o.CSSStyleSheet.prototype.deleteRule;let a,s;o.CSSStyleSheet.prototype.deleteRule=new Proxy(i,{apply:ep(((o,r,i)=>{const[a]=i,{id:s,styleId:l}=cp(r,t,n.styleMirror);return(s&&-1!==s||l&&-1!==l)&&e({id:s,styleId:l,removes:[{index:a}]}),o.apply(r,i)}))}),o.CSSStyleSheet.prototype.removeRule=function(e){return o.CSSStyleSheet.prototype.deleteRule.apply(this,[e])},o.CSSStyleSheet.prototype.replace&&(a=o.CSSStyleSheet.prototype.replace,o.CSSStyleSheet.prototype.replace=new Proxy(a,{apply:ep(((o,r,i)=>{const[a]=i,{id:s,styleId:l}=cp(r,t,n.styleMirror);return(s&&-1!==s||l&&-1!==l)&&e({id:s,styleId:l,replace:a}),o.apply(r,i)}))})),o.CSSStyleSheet.prototype.replaceSync&&(s=o.CSSStyleSheet.prototype.replaceSync,o.CSSStyleSheet.prototype.replaceSync=new Proxy(s,{apply:ep(((o,r,i)=>{const[a]=i,{id:s,styleId:l}=cp(r,t,n.styleMirror);return(s&&-1!==s||l&&-1!==l)&&e({id:s,styleId:l,replaceSync:a}),o.apply(r,i)}))}));const l={};hp("CSSGroupingRule")?l.CSSGroupingRule=o.CSSGroupingRule:(hp("CSSMediaRule")&&(l.CSSMediaRule=o.CSSMediaRule),hp("CSSConditionRule")&&(l.CSSConditionRule=o.CSSConditionRule),hp("CSSSupportsRule")&&(l.CSSSupportsRule=o.CSSSupportsRule));const c={};return Object.entries(l).forEach((([o,r])=>{c[o]={insertRule:r.prototype.insertRule,deleteRule:r.prototype.deleteRule},r.prototype.insertRule=new Proxy(c[o].insertRule,{apply:ep(((o,r,i)=>{const[a,s]=i,{id:l,styleId:c}=cp(r.parentStyleSheet,t,n.styleMirror);return(l&&-1!==l||c&&-1!==c)&&e({id:l,styleId:c,adds:[{rule:a,index:[...lp(r),s||0]}]}),o.apply(r,i)}))}),r.prototype.deleteRule=new Proxy(c[o].deleteRule,{apply:ep(((o,r,i)=>{const[a]=i,{id:s,styleId:l}=cp(r.parentStyleSheet,t,n.styleMirror);return(s&&-1!==s||l&&-1!==l)&&e({id:s,styleId:l,removes:[{index:[...lp(r),a]}]}),o.apply(r,i)}))})})),ep((()=>{o.CSSStyleSheet.prototype.insertRule=r,o.CSSStyleSheet.prototype.deleteRule=i,a&&(o.CSSStyleSheet.prototype.replace=a),s&&(o.CSSStyleSheet.prototype.replaceSync=s),Object.entries(l).forEach((([e,t])=>{t.prototype.insertRule=c[e].insertRule,t.prototype.deleteRule=c[e].deleteRule}))}))}(e,{win:n}),d=up(e,e.doc),p=function({styleDeclarationCb:e,mirror:t,ignoreCSSAttributes:n,stylesheetManager:o},{win:r}){const i=r.CSSStyleDeclaration.prototype.setProperty;r.CSSStyleDeclaration.prototype.setProperty=new Proxy(i,{apply:ep(((r,a,s)=>{var l;const[c,u,d]=s;if(n.has(c))return i.apply(a,[c,u,d]);const{id:p,styleId:h}=cp(null==(l=a.parentRule)?void 0:l.parentStyleSheet,t,o.styleMirror);return(p&&-1!==p||h&&-1!==h)&&e({id:p,styleId:h,set:{property:c,value:u,priority:d},index:lp(a.parentRule)}),r.apply(a,s)}))});const a=r.CSSStyleDeclaration.prototype.removeProperty;return r.CSSStyleDeclaration.prototype.removeProperty=new Proxy(a,{apply:ep(((r,i,s)=>{var l;const[c]=s;if(n.has(c))return a.apply(i,[c]);const{id:u,styleId:d}=cp(null==(l=i.parentRule)?void 0:l.parentStyleSheet,t,o.styleMirror);return(u&&-1!==u||d&&-1!==d)&&e({id:u,styleId:d,remove:{property:c},index:lp(i.parentRule)}),r.apply(i,s)}))}),ep((()=>{r.CSSStyleDeclaration.prototype.setProperty=i,r.CSSStyleDeclaration.prototype.removeProperty=a}))}(e,{win:n}),e.collectFonts&&(h=function({fontCb:e,doc:t}){const n=t.defaultView;if(!n)return()=>{};const o=[],r=new WeakMap,i=n.FontFace;n.FontFace=function(e,t,n){const o=new i(e,t,n);return r.set(o,{family:e,buffer:"string"!=typeof t,descriptors:n,fontSource:"string"==typeof t?t:JSON.stringify(Array.from(new Uint8Array(t)))}),o};const a=kd(t.fonts,"add",(function(t){return function(n){return setTimeout(ep((()=>{const t=r.get(n);t&&(e(t),r.delete(n))})),0),t.apply(this,[n])}}));return o.push((()=>{n.FontFace=i})),o.push(a),ep((()=>{o.forEach((e=>e()))}))}(e)));const f=function(e){const{doc:t,mirror:n,blockClass:o,blockSelector:r,selectionCb:i}=e;let a=!0;const s=ep((()=>{const e=t.getSelection();if(!e||a&&(null==e?void 0:e.isCollapsed))return;a=e.isCollapsed||!1;const s=[],l=e.rangeCount||0;for(let t=0;t{}}(e),g=[];for(const v of e.plugins)g.push(v.observer(v.callback,n,v.options));return ep((()=>{tp.forEach((e=>e.reset())),null==o||o.disconnect(),r(),i(),a(),s(),l(),c(),u(),d(),p(),h(),f(),m(),g.forEach((e=>e()))}))}function pp(e){return void 0!==window[e]}function hp(e){return Boolean(void 0!==window[e]&&window[e].prototype&&"insertRule"in window[e].prototype&&"deleteRule"in window[e].prototype)}class fp{constructor(e){Rn(this,"iframeIdToRemoteIdMap",new WeakMap),Rn(this,"iframeRemoteIdToIdMap",new WeakMap),this.generateIdFn=e}getId(e,t,n,o){const r=n||this.getIdToRemoteIdMap(e),i=o||this.getRemoteIdToIdMap(e);let a=r.get(t);return a||(a=this.generateIdFn(),r.set(t,a),i.set(a,t)),a}getIds(e,t){const n=this.getIdToRemoteIdMap(e),o=this.getRemoteIdToIdMap(e);return t.map((t=>this.getId(e,t,n,o)))}getRemoteId(e,t,n){const o=n||this.getRemoteIdToIdMap(e);if("number"!=typeof t)return t;const r=o.get(t);return r||-1}getRemoteIds(e,t){const n=this.getRemoteIdToIdMap(e);return t.map((t=>this.getRemoteId(e,t,n)))}reset(e){if(!e)return this.iframeIdToRemoteIdMap=new WeakMap,void(this.iframeRemoteIdToIdMap=new WeakMap);this.iframeIdToRemoteIdMap.delete(e),this.iframeRemoteIdToIdMap.delete(e)}getIdToRemoteIdMap(e){let t=this.iframeIdToRemoteIdMap.get(e);return t||(t=new Map,this.iframeIdToRemoteIdMap.set(e,t)),t}getRemoteIdToIdMap(e){let t=this.iframeRemoteIdToIdMap.get(e);return t||(t=new Map,this.iframeRemoteIdToIdMap.set(e,t)),t}}class mp{constructor(e){Rn(this,"iframes",new WeakMap),Rn(this,"crossOriginIframeMap",new WeakMap),Rn(this,"crossOriginIframeMirror",new fp(fo)),Rn(this,"crossOriginIframeStyleMirror"),Rn(this,"crossOriginIframeRootIdMap",new WeakMap),Rn(this,"mirror"),Rn(this,"mutationCb"),Rn(this,"wrappedEmit"),Rn(this,"loadListener"),Rn(this,"stylesheetManager"),Rn(this,"recordCrossOriginIframes"),this.mutationCb=e.mutationCb,this.wrappedEmit=e.wrappedEmit,this.stylesheetManager=e.stylesheetManager,this.recordCrossOriginIframes=e.recordCrossOriginIframes,this.crossOriginIframeStyleMirror=new fp(this.stylesheetManager.styleMirror.generateId.bind(this.stylesheetManager.styleMirror)),this.mirror=e.mirror,this.recordCrossOriginIframes&&window.addEventListener("message",this.handleMessage.bind(this))}addIframe(e){this.iframes.set(e,!0),e.contentWindow&&this.crossOriginIframeMap.set(e.contentWindow,e)}addLoadListener(e){this.loadListener=e}attachIframe(e,t){var n,o;this.mutationCb({adds:[{parentId:this.mirror.getId(e),nextId:null,node:t}],removes:[],texts:[],attributes:[],isAttachIframe:!0}),this.recordCrossOriginIframes&&(null==(n=e.contentWindow)||n.addEventListener("message",this.handleMessage.bind(this))),null==(o=this.loadListener)||o.call(this,e),e.contentDocument&&e.contentDocument.adoptedStyleSheets&&e.contentDocument.adoptedStyleSheets.length>0&&this.stylesheetManager.adoptStyleSheets(e.contentDocument.adoptedStyleSheets,this.mirror.getId(e.contentDocument))}handleMessage(e){const t=e;if("rrweb"!==t.data.type||t.origin!==t.data.origin)return;if(!e.source)return;const n=this.crossOriginIframeMap.get(e.source);if(!n)return;const o=this.transformCrossOriginEvent(n,t.data.event);o&&this.wrappedEmit(o,t.data.isCheckout)}transformCrossOriginEvent(e,t){var n;switch(t.type){case Bd.FullSnapshot:{this.crossOriginIframeMirror.reset(e),this.crossOriginIframeStyleMirror.reset(e),this.replaceIdOnNode(t.data.node,e);const n=t.data.node.id;return this.crossOriginIframeRootIdMap.set(e,n),this.patchRootIdOnNode(t.data.node,n),{timestamp:t.timestamp,type:Bd.IncrementalSnapshot,data:{source:_d.Mutation,adds:[{parentId:this.mirror.getId(e),nextId:null,node:t.data.node}],removes:[],texts:[],attributes:[],isAttachIframe:!0}}}case Bd.Meta:case Bd.Load:case Bd.DomContentLoaded:return!1;case Bd.Plugin:return t;case Bd.Custom:return this.replaceIds(t.data.payload,e,["id","parentId","previousId","nextId"]),t;case Bd.IncrementalSnapshot:switch(t.data.source){case _d.Mutation:return t.data.adds.forEach((t=>{this.replaceIds(t,e,["parentId","nextId","previousId"]),this.replaceIdOnNode(t.node,e);const n=this.crossOriginIframeRootIdMap.get(e);n&&this.patchRootIdOnNode(t.node,n)})),t.data.removes.forEach((t=>{this.replaceIds(t,e,["parentId","id"])})),t.data.attributes.forEach((t=>{this.replaceIds(t,e,["id"])})),t.data.texts.forEach((t=>{this.replaceIds(t,e,["id"])})),t;case _d.Drag:case _d.TouchMove:case _d.MouseMove:return t.data.positions.forEach((t=>{this.replaceIds(t,e,["id"])})),t;case _d.ViewportResize:return!1;case _d.MediaInteraction:case _d.MouseInteraction:case _d.Scroll:case _d.CanvasMutation:case _d.Input:return this.replaceIds(t.data,e,["id"]),t;case _d.StyleSheetRule:case _d.StyleDeclaration:return this.replaceIds(t.data,e,["id"]),this.replaceStyleIds(t.data,e,["styleId"]),t;case _d.Font:return t;case _d.Selection:return t.data.ranges.forEach((t=>{this.replaceIds(t,e,["start","end"])})),t;case _d.AdoptedStyleSheet:return this.replaceIds(t.data,e,["id"]),this.replaceStyleIds(t.data,e,["styleIds"]),null==(n=t.data.styles)||n.forEach((t=>{this.replaceStyleIds(t,e,["styleId"])})),t}}return!1}replace(e,t,n,o){for(const r of o)(Array.isArray(t[r])||"number"==typeof t[r])&&(Array.isArray(t[r])?t[r]=e.getIds(n,t[r]):t[r]=e.getId(n,t[r]));return t}replaceIds(e,t,n){return this.replace(this.crossOriginIframeMirror,e,t,n)}replaceStyleIds(e,t,n){return this.replace(this.crossOriginIframeStyleMirror,e,t,n)}replaceIdOnNode(e,t){this.replaceIds(e,t,["id","rootId"]),"childNodes"in e&&e.childNodes.forEach((e=>{this.replaceIdOnNode(e,t)}))}patchRootIdOnNode(e,t){e.type===Wd.Document||e.rootId||(e.rootId=t),"childNodes"in e&&e.childNodes.forEach((e=>{this.patchRootIdOnNode(e,t)}))}}class gp{constructor(e){Rn(this,"shadowDoms",new WeakSet),Rn(this,"mutationCb"),Rn(this,"scrollCb"),Rn(this,"bypassOptions"),Rn(this,"mirror"),Rn(this,"restoreHandlers",[]),this.mutationCb=e.mutationCb,this.scrollCb=e.scrollCb,this.bypassOptions=e.bypassOptions,this.mirror=e.mirror,this.init()}init(){this.reset(),this.patchAttachShadow(Element,document)}addShadowRoot(e,t){if(!Zn(e))return;if(this.shadowDoms.has(e))return;this.shadowDoms.add(e);const n=op({...this.bypassOptions,doc:t,mutationCb:this.mutationCb,mirror:this.mirror,shadowDomManager:this},e);this.restoreHandlers.push((()=>n.disconnect())),this.restoreHandlers.push(ip({...this.bypassOptions,scrollCb:this.scrollCb,doc:e,mirror:this.mirror})),setTimeout((()=>{e.adoptedStyleSheets&&e.adoptedStyleSheets.length>0&&this.bypassOptions.stylesheetManager.adoptStyleSheets(e.adoptedStyleSheets,this.mirror.getId(md.host(e))),this.restoreHandlers.push(up({mirror:this.mirror,stylesheetManager:this.bypassOptions.stylesheetManager},e))}),0)}observeAttachShadow(e){e.contentWindow&&e.contentDocument&&this.patchAttachShadow(e.contentWindow.Element,e.contentDocument)}patchAttachShadow(e,t){const n=this;this.restoreHandlers.push(kd(e.prototype,"attachShadow",(function(e){return function(o){const r=e.call(this,o),i=md.shadowRoot(this);return i&&Fd(this)&&n.addShadowRoot(i,t),r}})))}reset(){this.restoreHandlers.forEach((e=>{try{e()}catch(t){}})),this.restoreHandlers=[],this.shadowDoms=new WeakSet}}for(var vp="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",yp="undefined"==typeof Uint8Array?[]:new Uint8Array(256),bp=0;bp<64;bp++)yp[vp.charCodeAt(bp)]=bp;const wp=new Map;const kp=(e,t,n)=>{if(!e||!Cp(e,t)&&"object"!=typeof e)return;const o=function(e,t){let n=wp.get(e);return n||(n=new Map,wp.set(e,n)),n.has(t)||n.set(t,[]),n.get(t)}(n,e.constructor.name);let r=o.indexOf(e);return-1===r&&(r=o.length,o.push(e)),r};function xp(e,t,n){if(e instanceof Array)return e.map((e=>xp(e,t,n)));if(null===e)return e;if(e instanceof Float32Array||e instanceof Float64Array||e instanceof Int32Array||e instanceof Uint32Array||e instanceof Uint8Array||e instanceof Uint16Array||e instanceof Int16Array||e instanceof Int8Array||e instanceof Uint8ClampedArray){return{rr_type:e.constructor.name,args:[Object.values(e)]}}if(e instanceof ArrayBuffer){return{rr_type:e.constructor.name,base64:function(e){var t,n=new Uint8Array(e),o=n.length,r="";for(t=0;t>2],r+=vp[(3&n[t])<<4|n[t+1]>>4],r+=vp[(15&n[t+1])<<2|n[t+2]>>6],r+=vp[63&n[t+2]];return o%3==2?r=r.substring(0,r.length-1)+"=":o%3==1&&(r=r.substring(0,r.length-2)+"=="),r}(e)}}if(e instanceof DataView){return{rr_type:e.constructor.name,args:[xp(e.buffer,t,n),e.byteOffset,e.byteLength]}}if(e instanceof HTMLImageElement){const t=e.constructor.name,{src:n}=e;return{rr_type:t,src:n}}if(e instanceof HTMLCanvasElement){return{rr_type:"HTMLImageElement",src:e.toDataURL()}}if(e instanceof ImageData){return{rr_type:e.constructor.name,args:[xp(e.data,t,n),e.width,e.height]}}if(Cp(e,t)||"object"==typeof e){return{rr_type:e.constructor.name,index:kp(e,t,n)}}return e}const Sp=(e,t,n)=>e.map((e=>xp(e,t,n))),Cp=(e,t)=>{const n=["WebGLActiveInfo","WebGLBuffer","WebGLFramebuffer","WebGLProgram","WebGLRenderbuffer","WebGLShader","WebGLShaderPrecisionFormat","WebGLTexture","WebGLUniformLocation","WebGLVertexArrayObject","WebGLVertexArrayObjectOES"].filter((e=>"function"==typeof t[e]));return Boolean(n.find((n=>e instanceof t[n])))};function Ip(e,t,n,o){const r=[];try{const i=kd(e.HTMLCanvasElement.prototype,"getContext",(function(e){return function(r,...i){if(!Ed(this,t,n,!0)){const e=function(e){return"experimental-webgl"===e?"webgl":e}(r);if("__context"in this||(this.__context=e),o&&["webgl","webgl2"].includes(e))if(i[0]&&"object"==typeof i[0]){const e=i[0];e.preserveDrawingBuffer||(e.preserveDrawingBuffer=!0)}else i.splice(0,1,{preserveDrawingBuffer:!0})}return e.apply(this,[r,...i])}}));r.push(i)}catch{console.error("failed to patch HTMLCanvasElement.prototype.getContext")}return()=>{r.forEach((e=>e()))}}function Op(e,t,n,o,r,i){const a=[],s=Object.getOwnPropertyNames(e);for(const l of s)if(!["isContextLost","canvas","drawingBufferWidth","drawingBufferHeight"].includes(l))try{if("function"!=typeof e[l])continue;const s=kd(e,l,(function(e){return function(...a){const s=e.apply(this,a);if(kp(s,i,this),"tagName"in this.canvas&&!Ed(this.canvas,o,r,!0)){const e=Sp(a,i,this),o={type:t,property:l,args:e};n(this.canvas,o)}return s}}));a.push(s)}catch{const o=wd(e,l,{set(e){n(this.canvas,{type:t,property:l,args:[e],setter:!0})}});a.push(o)}return a}const Ep="KGZ1bmN0aW9uKCkgewogICJ1c2Ugc3RyaWN0IjsKICB2YXIgY2hhcnMgPSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7CiAgdmFyIGxvb2t1cCA9IHR5cGVvZiBVaW50OEFycmF5ID09PSAidW5kZWZpbmVkIiA/IFtdIDogbmV3IFVpbnQ4QXJyYXkoMjU2KTsKICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYXJzLmxlbmd0aDsgaSsrKSB7CiAgICBsb29rdXBbY2hhcnMuY2hhckNvZGVBdChpKV0gPSBpOwogIH0KICB2YXIgZW5jb2RlID0gZnVuY3Rpb24oYXJyYXlidWZmZXIpIHsKICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGFycmF5YnVmZmVyKSwgaTIsIGxlbiA9IGJ5dGVzLmxlbmd0aCwgYmFzZTY0ID0gIiI7CiAgICBmb3IgKGkyID0gMDsgaTIgPCBsZW47IGkyICs9IDMpIHsKICAgICAgYmFzZTY0ICs9IGNoYXJzW2J5dGVzW2kyXSA+PiAyXTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMl0gJiAzKSA8PCA0IHwgYnl0ZXNbaTIgKyAxXSA+PiA0XTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMiArIDFdICYgMTUpIDw8IDIgfCBieXRlc1tpMiArIDJdID4+IDZdOwogICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaTIgKyAyXSAmIDYzXTsKICAgIH0KICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgIj0iOwogICAgfSBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgIj09IjsKICAgIH0KICAgIHJldHVybiBiYXNlNjQ7CiAgfTsKICBjb25zdCBsYXN0QmxvYk1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7CiAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTsKICBhc3luYyBmdW5jdGlvbiBnZXRUcmFuc3BhcmVudEJsb2JGb3Iod2lkdGgsIGhlaWdodCwgZGF0YVVSTE9wdGlvbnMpIHsKICAgIGNvbnN0IGlkID0gYCR7d2lkdGh9LSR7aGVpZ2h0fWA7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBpZiAodHJhbnNwYXJlbnRCbG9iTWFwLmhhcyhpZCkpIHJldHVybiB0cmFuc3BhcmVudEJsb2JNYXAuZ2V0KGlkKTsKICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsKICAgICAgb2Zmc2NyZWVuLmdldENvbnRleHQoIjJkIik7CiAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCBvZmZzY3JlZW4uY29udmVydFRvQmxvYihkYXRhVVJMT3B0aW9ucyk7CiAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gYXdhaXQgYmxvYi5hcnJheUJ1ZmZlcigpOwogICAgICBjb25zdCBiYXNlNjQgPSBlbmNvZGUoYXJyYXlCdWZmZXIpOwogICAgICB0cmFuc3BhcmVudEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICByZXR1cm4gYmFzZTY0OwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuICIiOwogICAgfQogIH0KICBjb25zdCB3b3JrZXIgPSBzZWxmOwogIHdvcmtlci5vbm1lc3NhZ2UgPSBhc3luYyBmdW5jdGlvbihlKSB7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBjb25zdCB7IGlkLCBiaXRtYXAsIHdpZHRoLCBoZWlnaHQsIGRhdGFVUkxPcHRpb25zIH0gPSBlLmRhdGE7CiAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKAogICAgICAgIHdpZHRoLAogICAgICAgIGhlaWdodCwKICAgICAgICBkYXRhVVJMT3B0aW9ucwogICAgICApOwogICAgICBjb25zdCBvZmZzY3JlZW4gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpOwogICAgICBjb25zdCBjdHggPSBvZmZzY3JlZW4uZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgY3R4LmRyYXdJbWFnZShiaXRtYXAsIDAsIDApOwogICAgICBiaXRtYXAuY2xvc2UoKTsKICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IG9mZnNjcmVlbi5jb252ZXJ0VG9CbG9iKGRhdGFVUkxPcHRpb25zKTsKICAgICAgY29uc3QgdHlwZSA9IGJsb2IudHlwZTsKICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBhd2FpdCBibG9iLmFycmF5QnVmZmVyKCk7CiAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7CiAgICAgIGlmICghbGFzdEJsb2JNYXAuaGFzKGlkKSAmJiBhd2FpdCB0cmFuc3BhcmVudEJhc2U2NCA9PT0gYmFzZTY0KSB7CiAgICAgICAgbGFzdEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICAgIHJldHVybiB3b3JrZXIucG9zdE1lc3NhZ2UoeyBpZCB9KTsKICAgICAgfQogICAgICBpZiAobGFzdEJsb2JNYXAuZ2V0KGlkKSA9PT0gYmFzZTY0KSByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQgfSk7CiAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7CiAgICAgICAgaWQsCiAgICAgICAgdHlwZSwKICAgICAgICBiYXNlNjQsCiAgICAgICAgd2lkdGgsCiAgICAgICAgaGVpZ2h0CiAgICAgIH0pOwogICAgICBsYXN0QmxvYk1hcC5zZXQoaWQsIGJhc2U2NCk7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IGUuZGF0YS5pZCB9KTsKICAgIH0KICB9Owp9KSgpOwovLyMgc291cmNlTWFwcGluZ1VSTD1pbWFnZS1iaXRtYXAtZGF0YS11cmwtd29ya2VyLUlKcEM3Z19iLmpzLm1hcAo=",Tp="undefined"!=typeof window&&window.Blob&&new Blob([(Lp=Ep,Uint8Array.from(atob(Lp),(e=>e.charCodeAt(0))))],{type:"text/javascript;charset=utf-8"});var Lp;function Ap(e){let t;try{if(t=Tp&&(window.URL||window.webkitURL).createObjectURL(Tp),!t)throw"";const n=new Worker(t,{name:null==e?void 0:e.name});return n.addEventListener("error",(()=>{(window.URL||window.webkitURL).revokeObjectURL(t)})),n}catch(n){return new Worker("data:text/javascript;base64,"+Ep,{name:null==e?void 0:e.name})}finally{t&&(window.URL||window.webkitURL).revokeObjectURL(t)}}class Mp{constructor(e){Rn(this,"pendingCanvasMutations",new Map),Rn(this,"rafStamps",{latestId:0,invokeId:null}),Rn(this,"mirror"),Rn(this,"mutationCb"),Rn(this,"resetObservers"),Rn(this,"frozen",!1),Rn(this,"locked",!1),Rn(this,"processMutation",((e,t)=>{!(this.rafStamps.invokeId&&this.rafStamps.latestId!==this.rafStamps.invokeId)&&this.rafStamps.invokeId||(this.rafStamps.invokeId=this.rafStamps.latestId),this.pendingCanvasMutations.has(e)||this.pendingCanvasMutations.set(e,[]),this.pendingCanvasMutations.get(e).push(t)}));const{sampling:t="all",win:n,blockClass:o,blockSelector:r,recordCanvas:i,dataURLOptions:a}=e;this.mutationCb=e.mutationCb,this.mirror=e.mirror,i&&"all"===t&&this.initCanvasMutationObserver(n,o,r),i&&"number"==typeof t&&this.initCanvasFPSObserver(t,n,o,r,{dataURLOptions:a})}reset(){this.pendingCanvasMutations.clear(),this.resetObservers&&this.resetObservers()}freeze(){this.frozen=!0}unfreeze(){this.frozen=!1}lock(){this.locked=!0}unlock(){this.locked=!1}initCanvasFPSObserver(e,t,n,o,r){const i=Ip(t,n,o,!0),a=new Map,s=new Ap;s.onmessage=e=>{const{id:t}=e.data;if(a.set(t,!1),!("base64"in e.data))return;const{base64:n,type:o,width:r,height:i}=e.data;this.mutationCb({id:t,type:zd["2D"],commands:[{property:"clearRect",args:[0,0,r,i]},{property:"drawImage",args:[{rr_type:"ImageBitmap",args:[{rr_type:"Blob",data:[{rr_type:"ArrayBuffer",base64:n}],type:o}]},0,0]}]})};const l=1e3/e;let c,u=0;const d=e=>{u&&e-u{const e=[];return t.document.querySelectorAll("canvas").forEach((t=>{Ed(t,n,o,!0)||e.push(t)})),e})().forEach((async e=>{var t;const n=this.mirror.getId(e);if(a.get(n))return;if(0===e.width||0===e.height)return;if(a.set(n,!0),["webgl","webgl2"].includes(e.__context)){const n=e.getContext(e.__context);!1===(null==(t=null==n?void 0:n.getContextAttributes())?void 0:t.preserveDrawingBuffer)&&n.clear(n.COLOR_BUFFER_BIT)}const o=await createImageBitmap(e);s.postMessage({id:n,bitmap:o,width:e.width,height:e.height,dataURLOptions:r.dataURLOptions},[o])}))),c=requestAnimationFrame(d)};c=requestAnimationFrame(d),this.resetObservers=()=>{i(),cancelAnimationFrame(c)}}initCanvasMutationObserver(e,t,n){this.startRAFTimestamping(),this.startPendingCanvasMutationFlusher();const o=Ip(e,t,n,!1),r=function(e,t,n,o){const r=[],i=Object.getOwnPropertyNames(t.CanvasRenderingContext2D.prototype);for(const a of i)try{if("function"!=typeof t.CanvasRenderingContext2D.prototype[a])continue;const i=kd(t.CanvasRenderingContext2D.prototype,a,(function(r){return function(...i){return Ed(this.canvas,n,o,!0)||setTimeout((()=>{const n=Sp(i,t,this);e(this.canvas,{type:zd["2D"],property:a,args:n})}),0),r.apply(this,i)}}));r.push(i)}catch{const n=wd(t.CanvasRenderingContext2D.prototype,a,{set(t){e(this.canvas,{type:zd["2D"],property:a,args:[t],setter:!0})}});r.push(n)}return()=>{r.forEach((e=>e()))}}(this.processMutation.bind(this),e,t,n),i=function(e,t,n,o){const r=[];return r.push(...Op(t.WebGLRenderingContext.prototype,zd.WebGL,e,n,o,t)),void 0!==t.WebGL2RenderingContext&&r.push(...Op(t.WebGL2RenderingContext.prototype,zd.WebGL2,e,n,o,t)),()=>{r.forEach((e=>e()))}}(this.processMutation.bind(this),e,t,n);this.resetObservers=()=>{o(),r(),i()}}startPendingCanvasMutationFlusher(){requestAnimationFrame((()=>this.flushPendingCanvasMutations()))}startRAFTimestamping(){const e=t=>{this.rafStamps.latestId=t,requestAnimationFrame(e)};requestAnimationFrame(e)}flushPendingCanvasMutations(){this.pendingCanvasMutations.forEach(((e,t)=>{const n=this.mirror.getId(t);this.flushPendingCanvasMutationFor(t,n)})),requestAnimationFrame((()=>this.flushPendingCanvasMutations()))}flushPendingCanvasMutationFor(e,t){if(this.frozen||this.locked)return;const n=this.pendingCanvasMutations.get(e);if(!n||-1===t)return;const o=n.map((e=>{const{type:t,...n}=e;return n})),{type:r}=n[0];this.mutationCb({id:t,type:r,commands:o}),this.pendingCanvasMutations.delete(e)}}class Rp{constructor(e){Rn(this,"trackedLinkElements",new WeakSet),Rn(this,"mutationCb"),Rn(this,"adoptedStyleSheetCb"),Rn(this,"styleMirror",new Dd),this.mutationCb=e.mutationCb,this.adoptedStyleSheetCb=e.adoptedStyleSheetCb}attachLinkElement(e,t){"_cssText"in t.attributes&&this.mutationCb({adds:[],removes:[],texts:[],attributes:[{id:t.id,attributes:t.attributes}]}),this.trackLinkElement(e)}trackLinkElement(e){this.trackedLinkElements.has(e)||(this.trackedLinkElements.add(e),this.trackStylesheetInLinkElement(e))}adoptStyleSheets(e,t){if(0===e.length)return;const n={id:t,styleIds:[]},o=[];for(const r of e){let e;this.styleMirror.has(r)?e=this.styleMirror.getId(r):(e=this.styleMirror.add(r),o.push({styleId:e,rules:Array.from(r.rules||CSSRule,((e,t)=>({rule:Yn(e,r.href),index:t})))})),n.styleIds.push(e)}o.length>0&&(n.styles=o),this.adoptedStyleSheetCb(n)}reset(){this.styleMirror.reset(),this.trackedLinkElements=new WeakSet}trackStylesheetInLinkElement(e){}}class Pp{constructor(){Rn(this,"nodeMap",new WeakMap),Rn(this,"active",!1)}inOtherBuffer(e,t){const n=this.nodeMap.get(e);return n&&Array.from(n).some((e=>e!==t))}add(e,t){this.active||(this.active=!0,requestAnimationFrame((()=>{this.nodeMap=new WeakMap,this.active=!1}))),this.nodeMap.set(e,(this.nodeMap.get(e)||new Set).add(t))}destroy(){}}let Dp,Np,jp,Fp=!1;try{if(2!==Array.from([1],(e=>2*e))[0]){const e=document.createElement("iframe");document.body.appendChild(e),Array.from=(null==(An=e.contentWindow)?void 0:An.Array.from)||Array.from,document.body.removeChild(e)}}catch(Hm){console.debug("Unable to override Array.from",Hm)}const Bp=new Xn;function _p(e={}){const{emit:t,checkoutEveryNms:n,checkoutEveryNth:o,blockClass:r="rr-block",blockSelector:i=null,ignoreClass:a="rr-ignore",ignoreSelector:s=null,maskTextClass:l="rr-mask",maskTextSelector:c=null,inlineStylesheet:u=!0,maskAllInputs:d,maskInputOptions:p,slimDOMOptions:h,maskInputFn:f,maskTextFn:m,hooks:g,packFn:v,sampling:y={},dataURLOptions:b={},mousemoveWait:w,recordDOM:k=!0,recordCanvas:x=!1,recordCrossOriginIframes:S=!1,recordAfter:C=("DOMContentLoaded"===e.recordAfter?e.recordAfter:"load"),userTriggeredOnInput:I=!1,collectFonts:O=!1,inlineImages:E=!1,plugins:T,keepIframeSrcFn:L=(()=>!1),ignoreCSSAttributes:A=new Set([]),errorHandler:M}=e;Qd=M;const R=!S||window.parent===window;let P=!1;if(!R)try{window.parent.document&&(P=!1)}catch(V){P=!0}if(R&&!t)throw new Error("emit function is required");if(!R&&!P)return()=>{};void 0!==w&&void 0===y.mousemove&&(y.mousemove=w),Bp.reset();const D=!0===d?{color:!0,date:!0,"datetime-local":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0,password:!0}:void 0!==p?p:{password:!0},N=!0===h||"all"===h?{script:!0,comment:!0,headFavicon:!0,headWhitespace:!0,headMetaSocial:!0,headMetaRobots:!0,headMetaHttpEquiv:!0,headMetaVerification:!0,headMetaAuthorship:"all"===h,headMetaDescKeywords:"all"===h,headTitleMutations:"all"===h}:h||{};let j;!function(e=window){"NodeList"in e&&!e.NodeList.prototype.forEach&&(e.NodeList.prototype.forEach=Array.prototype.forEach),"DOMTokenList"in e&&!e.DOMTokenList.prototype.forEach&&(e.DOMTokenList.prototype.forEach=Array.prototype.forEach)}();let F=0;const B=e=>{for(const t of T||[])t.eventProcessor&&(e=t.eventProcessor(e));return v&&!P&&(e=v(e)),e};Dp=(e,r)=>{var i;const a=e;if(a.timestamp=xd(),!(null==(i=tp[0])?void 0:i.isFrozen())||a.type===Bd.FullSnapshot||a.type===Bd.IncrementalSnapshot&&a.data.source===_d.Mutation||tp.forEach((e=>e.unfreeze())),R)null==t||t(B(a),r);else if(P){const e={type:"rrweb",event:B(a),origin:window.location.origin,isCheckout:r};window.parent.postMessage(e,"*")}if(a.type===Bd.FullSnapshot)j=a,F=0;else if(a.type===Bd.IncrementalSnapshot){if(a.data.source===_d.Mutation&&a.data.isAttachIframe)return;F++;const e=o&&F>=o,t=n&&a.timestamp-j.timestamp>n;(e||t)&&Np(!0)}};const _=e=>{Dp({type:Bd.IncrementalSnapshot,data:{source:_d.Mutation,...e}})},U=e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.Scroll,...e}}),H=e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.CanvasMutation,...e}}),z=new Rp({mutationCb:_,adoptedStyleSheetCb:e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.AdoptedStyleSheet,...e}})}),q=new mp({mirror:Bp,mutationCb:_,stylesheetManager:z,recordCrossOriginIframes:S,wrappedEmit:Dp});for(const Z of T||[])Z.getMirror&&Z.getMirror({nodeMirror:Bp,crossOriginIframeMirror:q.crossOriginIframeMirror,crossOriginIframeStyleMirror:q.crossOriginIframeStyleMirror});const W=new Pp;jp=new Mp({recordCanvas:x,mutationCb:H,win:window,blockClass:r,blockSelector:i,mirror:Bp,sampling:y.canvas,dataURLOptions:b});const G=new gp({mutationCb:_,scrollCb:U,bypassOptions:{blockClass:r,blockSelector:i,maskTextClass:l,maskTextSelector:c,inlineStylesheet:u,maskInputOptions:D,dataURLOptions:b,maskTextFn:m,maskInputFn:f,recordCanvas:x,inlineImages:E,sampling:y,slimDOMOptions:N,iframeManager:q,stylesheetManager:z,canvasManager:jp,keepIframeSrcFn:L,processedNodeManager:W},mirror:Bp});Np=(e=!1)=>{if(!k)return;Dp({type:Bd.Meta,data:{href:window.location.href,width:Id(),height:Cd()}},e),z.reset(),G.init(),tp.forEach((e=>e.lock()));const t=function(e,t){const{mirror:n=new Xn,blockClass:o="rr-block",blockSelector:r=null,maskTextClass:i="rr-mask",maskTextSelector:a=null,inlineStylesheet:s=!0,inlineImages:l=!1,recordCanvas:c=!1,maskAllInputs:u=!1,maskTextFn:d,maskInputFn:p,slimDOM:h=!1,dataURLOptions:f,preserveWhiteSpace:m,onSerialize:g,onIframeLoad:v,iframeLoadTimeout:y,onStylesheetLoad:b,stylesheetLoadTimeout:w,keepIframeSrcFn:k=(()=>!1)}=t||{};return Lo(e,{doc:e,mirror:n,blockClass:o,blockSelector:r,maskTextClass:i,maskTextSelector:a,skipChild:!1,inlineStylesheet:s,maskInputOptions:!0===u?{color:!0,date:!0,"datetime-local":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0,password:!0}:!1===u?{password:!0}:u,maskTextFn:d,maskInputFn:p,slimDOMOptions:!0===h||"all"===h?{script:!0,comment:!0,headFavicon:!0,headWhitespace:!0,headMetaDescKeywords:"all"===h,headMetaSocial:!0,headMetaRobots:!0,headMetaHttpEquiv:!0,headMetaAuthorship:!0,headMetaVerification:!0}:!1===h?{}:h,dataURLOptions:f,inlineImages:l,recordCanvas:c,preserveWhiteSpace:m,onSerialize:g,onIframeLoad:v,iframeLoadTimeout:y,onStylesheetLoad:b,stylesheetLoadTimeout:w,keepIframeSrcFn:k,newlyAddedElement:!1})}(document,{mirror:Bp,blockClass:r,blockSelector:i,maskTextClass:l,maskTextSelector:c,inlineStylesheet:u,maskAllInputs:D,maskTextFn:m,maskInputFn:f,slimDOM:N,dataURLOptions:b,recordCanvas:x,inlineImages:E,onSerialize:e=>{Md(e,Bp)&&q.addIframe(e),Rd(e,Bp)&&z.trackLinkElement(e),Pd(e)&&G.addShadowRoot(md.shadowRoot(e),document)},onIframeLoad:(e,t)=>{q.attachIframe(e,t),G.observeAttachShadow(e)},onStylesheetLoad:(e,t)=>{z.attachLinkElement(e,t)},keepIframeSrcFn:L});if(!t)return console.warn("Failed to snapshot the document");Dp({type:Bd.FullSnapshot,data:{node:t,initialOffset:Sd(window)}},e),tp.forEach((e=>e.unlock())),document.adoptedStyleSheets&&document.adoptedStyleSheets.length>0&&z.adoptStyleSheets(document.adoptedStyleSheets,Bp.getId(document))};try{const e=[],t=e=>{var t;return ep(dp)({mutationCb:_,mousemoveCb:(e,t)=>Dp({type:Bd.IncrementalSnapshot,data:{source:t,positions:e}}),mouseInteractionCb:e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.MouseInteraction,...e}}),scrollCb:U,viewportResizeCb:e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.ViewportResize,...e}}),inputCb:e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.Input,...e}}),mediaInteractionCb:e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.MediaInteraction,...e}}),styleSheetRuleCb:e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.StyleSheetRule,...e}}),styleDeclarationCb:e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.StyleDeclaration,...e}}),canvasMutationCb:H,fontCb:e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.Font,...e}}),selectionCb:e=>{Dp({type:Bd.IncrementalSnapshot,data:{source:_d.Selection,...e}})},customElementCb:e=>{Dp({type:Bd.IncrementalSnapshot,data:{source:_d.CustomElement,...e}})},blockClass:r,ignoreClass:a,ignoreSelector:s,maskTextClass:l,maskTextSelector:c,maskInputOptions:D,inlineStylesheet:u,sampling:y,recordDOM:k,recordCanvas:x,inlineImages:E,userTriggeredOnInput:I,collectFonts:O,doc:e,maskInputFn:f,maskTextFn:m,keepIframeSrcFn:L,blockSelector:i,slimDOMOptions:N,dataURLOptions:b,mirror:Bp,iframeManager:q,stylesheetManager:z,shadowDomManager:G,processedNodeManager:W,canvasManager:jp,ignoreCSSAttributes:A,plugins:(null==(t=null==T?void 0:T.filter((e=>e.observer)))?void 0:t.map((e=>({observer:e.observer,options:e.options,callback:t=>Dp({type:Bd.Plugin,data:{plugin:e.name,payload:t}})}))))||[]},g)};q.addLoadListener((n=>{try{e.push(t(n.contentDocument))}catch(o){console.warn(o)}}));const n=()=>{Np(),e.push(t(document)),Fp=!0};return"interactive"===document.readyState||"complete"===document.readyState?n():(e.push(gd("DOMContentLoaded",(()=>{Dp({type:Bd.DomContentLoaded,data:{}}),"DOMContentLoaded"===C&&n()}))),e.push(gd("load",(()=>{Dp({type:Bd.Load,data:{}}),"load"===C&&n()}),window))),()=>{e.forEach((e=>e())),W.destroy(),Fp=!1,Qd=void 0}}catch(J){console.warn(J)}}var Up,Hp;function zp(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return qp(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return qp(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0,r=function(){};return{s:r,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){s=!0,i=e},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw i}}}}function qp(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n{if(!Fp)throw new Error("please add custom event after start recording");Dp({type:Bd.Custom,data:{tag:e,payload:t}})},_p.freezePage=()=>{tp.forEach((e=>e.freeze()))},_p.takeFullSnapshot=e=>{if(!Fp)throw new Error("please take full snapshot after start recording");Np(e)},_p.mirror=Bp,(Hp=Up||(Up={}))[Hp.NotStarted=0]="NotStarted",Hp[Hp.Running=1]="Running",Hp[Hp.Stopped=2]="Stopped";var Yp=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),Zp(this,"startDate",void 0),Zp(this,"events",[]),Zp(this,"bufferSize",0),Zp(this,"stopFunction",void 0),Zp(this,"customOptions",{})}var t,n,o;return t=e,o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],(n=[{key:"setOptions",value:function(e){this.customOptions=e}},{key:"start",value:function(){this.stop(),this.startDate=Date.now();var e=this.events;try{this.stopFunction=_p(Vp(Vp(Vp({},{inlineStylesheet:!0,blockClass:"gl-block",ignoreClass:"gl-ignore",maskTextClass:"gl-mask",dataURLOptions:{quality:.7},recordCanvas:!1,sampling:{scroll:150,mouseInteraction:{MouseUp:!1,MouseDown:!1,Click:!0,ContextMenu:!0,DblClick:!0,Focus:!0,Blur:!0,TouchStart:!0,TouchEnd:!1}},collectFonts:!1,recordCrossOriginIframes:!1}),this.customOptions),{},{emit:function(t){var n=function(e){var t=JSON.stringify(e);if(t.length>4e6){var n,o=/data:([\w\/\-\.]+);(\w+),([^)"]*)/gim,r=zp(t.matchAll(o));try{for(r.s();!(n=r.n()).done;){var i=n.value;t="image/"===i[1].toLocaleLowerCase().slice(0,6)?t.replace(i[0],"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAQSURBVHgBAQUA+v8ABRg5/wHSAVZN1mnaAAAAAElFTkSuQmCC"):t.replace(i[0],"")}}catch(Hm){r.e(Hm)}finally{r.f()}}return{event:JSON.parse(t),size:t.length}}(t).event;e.push(n)}}))}catch(t){console.error(t)}}},{key:"stop",value:function(){this.stopFunction&&this.stopFunction(),this.startDate=void 0,this.events=[],this.bufferSize=0}},{key:"getReplayData",value:function(){return{startDate:this.startDate,events:this.events,baseUrl:window.location.origin,width:window.innerWidth,height:window.innerHeight,isMobile:w(),type:"rrweb"}}}])&&Jp(t.prototype,n),o&&Jp(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Xp(e){return Xp="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Xp(e)}function $p(e,t){for(var n=0;nthis.startPoint.x&&(r=this.startPoint.x),t.y>this.startPoint.y&&(i=this.startPoint.y),this.path.setAttributeNS(null,"x",r),this.path.setAttributeNS(null,"y",i),this.path.setAttributeNS(null,"width",n),this.path.setAttributeNS(null,"height",o)}}},{key:"mouseDownRect",value:function(e){this.path=document.createElementNS("http://www.w3.org/2000/svg","rect"),this.path.setAttribute("fill","none"),this.path.setAttribute("stroke",this.color),this.path.setAttribute("stroke-linecap","round"),this.path.setAttribute("stroke-width",this.strokeWidthRect),this.startPoint=this.getMousePosition(e),this.appendPathToSvg(this.path)}},{key:"mouseDownPen",value:function(e){var t=this.color+"AA",n=this.strokeWidth;"blur"===this.tool&&(t="#000000",n=40),this.path=document.createElementNS("http://www.w3.org/2000/svg","path"),this.path.setAttribute("fill","none"),this.path.setAttribute("stroke",t),this.path.setAttribute("stroke-linecap","round"),this.path.setAttribute("stroke-width",n),this.buffer=[];var o=this.getMousePosition(e);this.appendToBuffer(o),this.strPath="M"+o.x+" "+o.y,this.path.setAttribute("d",this.strPath),this.appendPathToSvg(this.path)}},{key:"setTool",value:function(e){this.tool=e}},{key:"setColor",value:function(e){this.color=e}},{key:"getMousePosition",value:function(e){return e.touches&&e.touches.length>0?{x:e.touches[0].clientX,y:e.touches[0].clientY}:{x:e.clientX,y:e.clientY}}},{key:"getAveragePoint",value:function(e){var t=this.buffer.length;if(t%2==1||t>=this.bufferSize){var n,o,r=0,i=0,a=0;for(o=e;othis.bufferSize;)this.buffer.shift()}},{key:"appendPathToSvg",value:function(e){this.svgElement.appendChild(e),this.pathBuffer.push(e),this.rerender()}},{key:"removeLastAddedPathFromSvg",value:function(){this.pathBuffer.length<=0||!this.svgElement||(this.svgElement.removeChild(this.pathBuffer[this.pathBuffer.length-1]),this.pathBuffer.pop(),this.rerender())}},{key:"fadeOutToolbar",value:function(){var e=document.querySelector(".bb-capture-toolbar");e&&(e.style.opacity=0,e.style.pointerEvents="none")}},{key:"fadeInToolbar",value:function(){var e=document.querySelector(".bb-capture-toolbar");e&&(e.style.opacity=1,e.style.pointerEvents="auto")}}],n&&$p(t.prototype,n),o&&$p(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function nh(e){return nh="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},nh(e)}function oh(e,t){for(var n=0;n\n \n
'.concat(p("dismiss"),"
\n
").concat(p("rect"),'
\n
\n
\n ').concat(p("drag"),"\n
\n ").concat("capture"===this.type?'
\n '.concat(p("recorderon"),"\n ").concat(p("recorderoff"),'\n \n
\n
\n ').concat(p("mic"),'\n \n
\n
2:00
\n
\n
\n ').concat(p("pointer"),"\n
"):"",'\n
\n ').concat(p("rect"),'\n
\n
\n ').concat(p("pen"),'\n
\n
\n ').concat(p("blur"),'\n
\n
\n
\n ').concat(gh.translateText("pickAColor"),'\n
\n
\n ').concat(p("undo"),'\n ').concat(gh.translateText("undo"),"\n
\n ").concat("capture"!==this.type?'
'.concat(gh.translateText("next"),"
"):"",'\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
').concat(gh.translateText("retry"),'
\n
').concat(gh.translateText("next"),"
\n
\n
\n
\n "),document.body.appendChild(e),e.setAttribute("dir",gh.getInstance().isRTLLayout?"rtl":"ltr")}},{key:"unregisterListeners",value:function(){this.escListener&&document.removeEventListener("keydown",this.escListener),this.pageLeaveListener&&window.removeEventListener("beforeunload",this.pageLeaveListener)}},{key:"registerListeners",value:function(){var e=this;this.escListener=function(t){var n=!1,o=!1;"key"in(t=t||window.event)&&(n="Escape"===t.key,o="Enter"===t.key),n&&e.dismiss(),"screenshot"===e.type&&o&&e.showNextStep()},document.addEventListener("keydown",this.escListener),this.pageLeaveListener=function(e){e.preventDefault(),e.returnValue=""},window.addEventListener("beforeunload",this.pageLeaveListener)}},{key:"show",value:function(e){this.callback=e,this.registerListeners(),this.hideWidgetUI(),this.createEditorUI(),this.setupMousePointer(),"screenshot"===this.type?(_m.getInstance().setGlobalDataItem("snapshotPosition",{x:window.scrollX,y:window.scrollY}),ah.disableScroll()):this.setupScreenRecording(),this.screenDrawer=new th(this.captureScreenDrawerRerender.bind(this)),this.setupColorPicker(),this.setupToolbar()}},{key:"setupColorPicker",value:function(){for(var t=this,n=document.querySelector(".bb-capture-toolbar-item-selectedcolor"),o=document.querySelectorAll(".bb-capture-toolbar-item-color"),r=document.querySelector(".bb-capture-toolbar-item-colorpicker"),i=function(){var i=o[a],s=i.getAttribute("data-color");i.style.backgroundColor=s,i.onclick=function(){i&&(t.screenDrawer.setColor(s),r&&(r.style.display="none"),n.style.backgroundColor=i.style.backgroundColor,e.setPenColor(s))}},a=0;a0?o.classList.remove(e):o.classList.add(e))}}},{key:"captureRenderer",value:function(){if(this.screenRecorder){this.screenRecorder.file&&_m.getInstance().setGlobalDataItem("screenRecordingData",this.screenRecorder.file);var e="bb-capture-editor-item-inactive",t=document.querySelector(".bb-capture-toolbar-item-timer"),n=document.querySelectorAll(".bb-capture-toolbar-item"),o=document.querySelector(".bb-tooltip-screen-recording"),r=document.querySelector(".bb-tooltip-audio-recording"),i=document.querySelector(".bb-capture-editor"),a="bb-capture-editor-recording",s="bb-capture-editor-notrecording";this.screenRecorder.isRecording?(i.classList.add(a),i.classList.remove(s)):(i.classList.add(s),i.classList.remove(a));var l=document.querySelector(".bb-capture-toolbar");document.querySelector(".bb-capture-preview").style.display=this.screenRecorder.file?"flex":"none",l.style.display=this.screenRecorder.file?"none":"flex";for(var c=0;c0){var t=e.filter((function(e){return new Date(e.createdAt)>new Date(Date.now()-36e5)}));t.length>2?this.notifications=t.splice(0,t.length-2):this.notifications=t,this.renderNotifications()}}catch(n){}}},{key:"setNotificationCount",value:function(e){this.unreadCount=e,this.updateTabBarNotificationCount(),a.getInstance().updateNotificationBadge(this.unreadCount)}},{key:"showNotification",value:function(e){this.notificationContainer&&e&&e.data&&(this.notifications.find((function(t){return e.outbound===t.outbound}))||(this.notifications.push(e),e.sound&&Yh.ping()),this.notifications.length>2&&this.notifications.shift(),I(this.unreadNotificationsKey,this.notifications),this.renderNotifications())}},{key:"renderNotifications",value:function(){var e=this;if(this.notificationContainer){this.clearAllNotifications(!0);var t=document.createElement("div");t.onclick=function(){e.clearAllNotifications(),e.currentNewsIndex=0},t.className="gleap-notification-close",t.innerHTML=p("dismiss"),this.notificationContainer.appendChild(t);var n=this.notifications.filter((function(e){return e.data.news})).sort((function(e,t){return new Date(e.createdAt)-new Date(t.createdAt)})),o=this.notifications.filter((function(e){return!e.data.news}));if(n.length>0){var r=this.currentNewsIndex1){var m=document.createElement("div");m.className="gleap-news-pagination";var g=document.createElement("span");g.className="gleap-news-page-indicator",g.innerText="".concat(r+1," / ").concat(n.length),m.appendChild(g);var v=document.createElement("button");v.className="gleap-news-next-button",r\n
\n
\n '.concat(t.data.text,'\n
\n
\n
\n
\n
\n \n \n \n ').concat(t.data.nextStepTitle,"\n
\n
\n ")}else r.className="gleap-notification-item",r.innerHTML="\n ".concat(t.data.sender&&t.data.sender.profileImageUrl&&''),'\n
\n ').concat(t.data.sender?'
\n '.concat(t.data.sender.name,"\n
"):"",'\n
').concat(n,"
\n
");e.notificationContainer.appendChild(r)},b=0;b0||o.length>0||this.clearAllNotifications(!0)}}},{key:"openNews",value:function(e){e.data.news?_m.openNewsArticle(e.data.news.id,!0):_m.open()}},{key:"renderDescription",value:function(e){var t=e.data,n=t.previewText,o=t.sender;return n&&n.length>0?n:o?'\n
\n '.concat(o.profileImageUrl?'').concat(o.name,''):"","\n ").concat(o.name,"\n
\n "):""}},{key:"clearAllNotifications",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(this.notificationContainer)for(e||(this.notifications=[],this.currentNewsIndex=0,I(this.unreadNotificationsKey,this.notifications));this.notificationContainer.firstChild;)this.notificationContainer.removeChild(this.notificationContainer.firstChild)}},{key:"updateContainerStyle",value:function(){if(this.notificationContainer){var e=dt.getInstance().getFlowConfig(),t="gleap-notification-container--left",n="gleap-notification-container--no-button";this.notificationContainer.classList.remove(t),this.notificationContainer.classList.remove(n),e.feedbackButtonPosition!==a.FEEDBACK_BUTTON_CLASSIC_LEFT&&e.feedbackButtonPosition!==a.FEEDBACK_BUTTON_BOTTOM_LEFT||this.notificationContainer.classList.add(t),null===a.getInstance().buttonHidden?e.feedbackButtonPosition===a.FEEDBACK_BUTTON_NONE&&this.notificationContainer.classList.add(n):a.getInstance().buttonHidden&&this.notificationContainer.classList.add(n),this.notificationContainer.setAttribute("dir",gh.getInstance().isRTLLayout?"rtl":"ltr")}}}],o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],n&&Th(t.prototype,n),o&&Th(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Rh(e){return Rh="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Rh(e)}function Ph(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Dh(e){for(var t=1;t'),document.body.appendChild(t),this.bannerContainer=t}},{key:"sendMessage",value:function(e){try{var t=document.querySelector(".gleap-b-frame");t&&t.contentWindow&&t.contentWindow.postMessage(JSON.stringify(Dh(Dh({},e),{},{type:"banner"})),"*")}catch(n){}}},{key:"showBanner",value:function(e){this.injectBannerUI(e)}}])&&Nh(t.prototype,n),o&&Nh(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function _h(e){return _h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},_h(e)}function Uh(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Hh(e){for(var t=1;t\n
\n \n
\n '),document.body.appendChild(n),this.modalContainer=n,this.modalBackdropClickListener=this.modalContainer.querySelector(".gleap-modal-backdrop").addEventListener("click",(function(){var e,n;(null===(e=null===(n=t.modalData)||void 0===n?void 0:n.showCloseButton)||void 0===e||e)&&t.hideModal()})),document.body.classList.add("gleap-modal-open")}},{key:"_postMessage",value:function(e){try{var t=this.modalContainer.querySelector(".gleap-modal-frame");null!=t&&t.contentWindow&&t.contentWindow.postMessage(JSON.stringify(Hh(Hh({},e),{},{type:"modal"})),this.modalUrl)}catch(Hm){}}},{key:"showModal",value:function(e){e&&e.config&&this._injectModalUI(e.config)}},{key:"hideModal",value:function(){this.modalContainer&&(this.modalBackdropClickListener&&this.modalContainer.querySelector(".gleap-modal-backdrop").removeEventListener("click",this.modalBackdropClickListener),document.body.removeChild(this.modalContainer),this.modalContainer=null,document.body.classList.remove("gleap-modal-open"))}}])&&zh(t.prototype,n),o&&zh(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Vh(e){return Vh="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Vh(e)}function Jh(e,t){for(var n=0;n=a-i;++s)n[i]=t[s],rf(e,t,n,s+1,r,i+1,a);else e.push(n.slice(0,i).join(""))}function af(e){return function(e){if(Array.isArray(e))return sf(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return sf(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return sf(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function sf(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){s=!0,i=e},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw i}}}}function ff(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n1&&void 0!==arguments[1]?arguments[1]:["id","class","length"];return af(e.attributes).reduce((function(e,n){return t.indexOf(n.nodeName)>-1||e.push("[".concat(n.nodeName,'="').concat(n.value,'"]')),e}),[])}(e,n)},Class:of,ID:nf};return t.reduce((function(t,n){return t[n]=o[n](e),t}),{})}function gf(e,t){try{var n=e.parentNode.querySelectorAll(t);return 1===n.length&&n[0]===e}catch(o){return!1}}function vf(e,t){return t.find(gf.bind(null,e))}function yf(e,t,n){var o=function(e,t){for(var n=[],o=e.length,r=[],i=1;i<=t;++i)rf(n,e,r,0,o-1,0,i);return n}(t,3),r=vf(e,o);return Boolean(r)||Boolean(n)&&(r=vf(e,o=o.map((function(e){return n+e}))),Boolean(r))?r:null}function bf(e,t,n,o){var r,i=mf(e,t,n);o&&o instanceof RegExp&&(i.ID=o.test(i.ID)?null:i.ID,i.Class=i.Class.filter((function(e){return!o.test(e)})));var a,s=hf(t);try{for(s.s();!(a=s.n()).done;){var l=a.value,c=i.ID,u=i.Tag,d=i.Class,p=i.Attributes,h=i.NthChild;switch(l){case"ID":if(Boolean(c)&&gf(e,c))return c;break;case"Tag":if(Boolean(u)&&gf(e,u))return u;break;case"Class":if(Boolean(d)&&d.length&&(r=yf(e,d,u)))return r;break;case"Attributes":if(Boolean(p)&&p.length&&(r=yf(e,p,u)))return r;break;case"NthChild":if(Boolean(h))return h}}}catch(Hm){s.e(Hm)}finally{s.f()}return"*"}function wf(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=n.selectorTypes,r=void 0===o?["ID","Class","Tag","NthChild"]:o,i=n.attributesToIgnore,a=void 0===i?["id","class","length"]:i,s=n.excludeRegex,l=void 0===s?null:s,c=[],u=function(e){for(var t=[],n=e;cf(n);)t.push(n),n=n.parentNode;return t}(e),d=hf(u);try{for(d.s();!(t=d.n()).done;){var p=bf(t.value,r,a,l);Boolean(p)&&c.push(p)}}catch(Hm){d.e(Hm)}finally{d.f()}for(var h=[],f=0,m=c;f ");if(pf(e,v))return v}return null}function kf(e){return kf="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},kf(e)}function xf(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Sf(e,t){for(var n=0;n0&&void 0!==arguments[0]&&arguments[0])||o(t.gleapCollapseUI,e)&&o(t.gleapFrameContainer,n))&&(t.gleapCollapseUI&&t.gleapCollapseUI.classList.toggle(e),t.gleapFrameContainer&&t.gleapFrameContainer.classList.toggle(n))})),_f(this,"injectCollapseUI",(function(){if(!t.injectedCollapseUI){t.injectedCollapseUI=!0;var e=document.createElement("div");e.className="gleap-admin-collapse-ui",e.innerHTML='
\n '.concat(p("arrowdown"),"\n
"),document.body.appendChild(e),t.gleapCollapseUI=e,e.addEventListener("click",(function(e){e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t.toggleCollapseUI()}))}})),_f(this,"injectFrame",(function(){var e;if(!t.injectedFrame){t.injectedFrame=!0;var n=document.createElement("div");n.className="gleap-admin-frame-container",n.innerHTML=''),document.body.appendChild(n),t.gleapFrameContainer=n,t.gleapFrame=document.querySelector(".gleap-admin-frame")}}))}var t,n,o;return t=e,o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],(n=[{key:"logCurrentPage",value:function(){var e=window.location.href;e&&e!==this.lastUrl&&(this.lastUrl=e,this.sendMessageToTourBuilder({name:"page-changed",data:{page:e}}))}},{key:"startPageListener",value:function(){var e=this;setInterval((function(){e.logCurrentPage()}),1e3)}},{key:"initAdminHelper",value:function(){var e=this;mm.getInstance().disable(),e.adminHelper=new Df;try{e.adminHelper.onElementPicked=function(t){e.toggleCollapseUI(!0),e.sendMessageToTourBuilder({name:"element-picked",data:{selector:t}})}}catch(t){console.log(t)}e.injectFrame(),e.injectCollapseUI(),e.setFrameHeight("loading")}},{key:"setFrameHeight",value:function(e){if(this.gleapFrameContainer){var t="";t="picker"===e||"navigate"===e?"65px":"editor"===e?"100vh":"0px",this.gleapFrameContainer.style.height=t}}},{key:"start",value:function(){var e=this;if("undefined"!=typeof window&&!window.gleapAdminDisabled){var t=this;window.addEventListener("message",(function(n){if("https://app.gleap.io"===n.origin)try{var o=JSON.parse(n.data);if("admin"===o.type&&("load"===o.name&&(t.configData=o.data,t.initAdminHelper()),"smartlink-search-result"===o.name&&e.sendMessageToTourBuilder({name:"smartlink-search-result",data:o.data}),"translate-complete"===o.name&&e.sendMessageToTourBuilder({name:"translate-complete",data:o.data})),"tourbuilder"===o.type){var r;if("loaddata"===o.name&&e.sendMessageToTourBuilder({name:"data",data:Ff(Ff({},t.configData),{},{currentPage:window.location.href})}),"highlight-element"===o.name&&(document.querySelectorAll(".gleap-admin-highlight").forEach((function(e){e.classList.remove("gleap-admin-highlight")})),null!=o&&null!==(r=o.data)&&void 0!==r&&r.selector)){var i,a=document.querySelector(null==o||null===(i=o.data)||void 0===i?void 0:i.selector);a&&a.classList.add("gleap-admin-highlight")}if("smartlink-search"===o.name&&e.sendMessage({name:"smartlink-search",data:o.data}),"product-tour-started"===o.name&&e.sendMessage({name:"product-tour-started",data:o.data}),"translate"===o.name&&e.sendMessage({name:"translate",data:o.data}),"save"===o.name&&e.sendMessage({name:"save",data:o.data}),"update-steps"===o.name&&e.sendMessage({name:"update-steps",data:o.data}),"click"===o.name)try{document.querySelector(o.data.selector).click()}catch(s){console.log(s)}"status-changed"===o.name&&(t.status=o.data,e.setFrameHeight(t.status),t.adminHelper.stopPicker(),"picker"===t.status&&t.adminHelper.startPicker())}}catch(l){}})),this.sendMessage({name:"init"}),this.startPageListener()}}},{key:"sendMessage",value:function(e){try{window&&window.opener&&window.opener.postMessage(JSON.stringify(Ff(Ff({},e),{},{type:"admin"})),"*")}catch(t){}}},{key:"sendMessageToTourBuilder",value:function(e){try{this.gleapFrame&&this.gleapFrame.contentWindow&&this.gleapFrame.contentWindow.postMessage(JSON.stringify(Ff(Ff({},e),{},{type:"tourbuilder"})),"*")}catch(t){}}}])&&Bf(t.prototype,n),o&&Bf(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function zf(e){return zf="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},zf(e)}function qf(e){return function(e){if(Array.isArray(e))return Wf(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return Wf(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Wf(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Wf(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n0&&void 0!==arguments[0]?arguments[0]:{})}function n(t){return t?e[t]:e}function o(e,t,n,o){return(e/=o/2)<1?n/2*e*e+t:-n/2*(--e*(e-2)-1)+t}function r(e){var t='a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type="text"]:not([disabled]), input[type="radio"]:not([disabled]), input[type="checkbox"]:not([disabled]), select:not([disabled])';return e.flatMap((function(e){var n=e.matches(t),o=Array.from(e.querySelectorAll(t));return[].concat(qf(n?[e]:[]),o)})).filter((function(e){return"none"!==getComputedStyle(e).pointerEvents&&function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)}(e)}))}function i(e){if(e&&!function(e){var t=e.getBoundingClientRect();return t.top>=0&&t.left>=0&&t.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&t.right<=(window.innerWidth||document.documentElement.clientWidth)}(e)){var t=n("smoothScroll");e.scrollIntoView({behavior:!t||a(e)?"auto":"smooth",inline:"center",block:"center"})}}function a(e){if(e&&e.parentElement){var t=e.parentElement;return t.scrollHeight>t.clientHeight}}var s={};function l(e,t){s[e]=t}function c(e){return e?s[e]:s}function u(){s={}}var d={};function p(e,t){d[e]=t}function h(e){var t;null==(t=d[e])||t.call(d)}function f(e){if(e){var t=e.getBoundingClientRect(),n={x:t.x,y:t.y,width:t.width,height:t.height};l("__activeStagePosition",n),g(n)}}function m(e){var t=function(e){var t=window.innerWidth,o=window.innerHeight,r=document.createElementNS("http://www.w3.org/2000/svg","svg");r.classList.add("gleap-tour-overlay","gleap-tour-overlay-animated"),r.setAttribute("viewBox","0 0 ".concat(t," ").concat(o)),r.setAttribute("xmlSpace","preserve"),r.setAttribute("xmlnsXlink","http://www.w3.org/1999/xlink"),r.setAttribute("version","1.1"),r.setAttribute("preserveAspectRatio","xMinYMin slice"),r.style.fillRule="evenodd",r.style.clipRule="evenodd",r.style.strokeLinejoin="round",r.style.strokeMiterlimit="2",r.style.zIndex="10000",r.style.position="fixed",r.style.top="0",r.style.left="0",r.style.width="100%",r.style.height="100%";var i=document.createElementNS("http://www.w3.org/2000/svg","path");return i.setAttribute("d",v(e)),i.style.fill=n("overlayColor")||"rgb(0,0,0)",i.style.opacity="".concat(n("overlayOpacity")),i.style.pointerEvents="auto",i.style.cursor="auto",r.appendChild(i),r}(e);document.body.appendChild(t),S(t,(function(e){"path"===e.target.tagName&&h("overlayClick")})),l("__overlaySvg",t)}function g(e){var t=c("__overlaySvg");if(t){var n=t.firstElementChild;if("path"!==(null==n?void 0:n.tagName))throw new Error("no path element found in stage svg");n.setAttribute("d",v(e))}else m(e)}function v(e){var t=window.innerWidth,o=window.innerHeight,r=n("stagePadding")||0,i=n("stageRadius")||0,a=e.width+2*r,s=e.height+2*r,l=Math.min(i,a/2,s/2),c=Math.floor(Math.max(l,0)),u=e.x-r+c,d=e.y-r,p=a-2*c,h=s-2*c;return"M".concat(t,",0L0,0L0,").concat(o,"L").concat(t,",").concat(o,"L").concat(t,",0Z\n M").concat(u,",").concat(d," h").concat(p," a").concat(c,",").concat(c," 0 0 1 ").concat(c,",").concat(c," v").concat(h," a").concat(c,",").concat(c," 0 0 1 -").concat(c,",").concat(c," h-").concat(p," a").concat(c,",").concat(c," 0 0 1 -").concat(c,",-").concat(c," v-").concat(h," a").concat(c,",").concat(c," 0 0 1 ").concat(c,",-").concat(c," z")}function y(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:5e3,r=e.element,a=r;if("string"==typeof a)try{a=document.querySelector(r)}catch(u){var s=r.replace(/(#[^#\s]+)/g,(function(e){return e.replace(/:/g,"\\:")}));a=document.querySelector(s)}if(r&&!a&&t>=0)setTimeout((function(){C(),y(e,t-100)}),100);else{if(!a&&("INPUT"===e.mode||"CLICK"===e.mode))return n("onElementNotFound")(e);a||(a=function(){var e=document.getElementById("gleap-tour-dummy-element");if(e)return e;var t=document.createElement("div");return t.id="gleap-tour-dummy-element",t.style.width="0",t.style.height="0",t.style.pointerEvents="none",t.style.opacity="0",t.style.position="fixed",t.style.top="50%",t.style.left="50%",document.body.appendChild(t),t}()),function(e,t){var r,a,s=400,u=Date.now(),d=c("__activeStep"),p=c("__activeElement")||e,h=!p||p===e,m="gleap-tour-dummy-element"===e.id,v="gleap-tour-dummy-element"===p.id,y=n("animate"),b=t.onHighlightStarted||n("onHighlightStarted"),w=(null==t?void 0:t.onHighlighted)||n("onHighlighted"),k=(null==d?void 0:d.onDeselected)||n("onDeselected"),x=n(),S=c();!h&&k&&k(v?void 0:p,d,{config:x,state:S});b&&b(m?void 0:e,t,{config:x,state:S});var O=!h&&y,E=!1;C(),l("previousStep",d),l("previousElement",p),l("activeStep",t),l("activeElement",e);var T=function r(){if(c("__transitionCallback")===r){var i=Date.now()-u,a=s-i<=s/2;t.popover&&a&&!E&&O&&(I(e,t),E=!0),n("animate")&&i0&&P[0].focus()}function O(){var e=c("popover");if(null==e?void 0:e.wrapper){var t=e.wrapper.getBoundingClientRect(),o=n("stagePadding")||0,r=n("popoverOffset")||0;return{width:t.width+o+r,height:t.height+o+r,realWidth:t.width,realHeight:t.height}}}function E(e,t){var n=t.elementDimensions,o=t.popoverDimensions,r=t.popoverPadding,i=t.popoverArrowDimensions;return"start"===e?Math.max(Math.min(n.top-r,window.innerHeight-o.realHeight-i.width),i.width):"end"===e?Math.max(Math.min(n.top-(null==o?void 0:o.realHeight)+n.height+r,window.innerHeight-(null==o?void 0:o.realHeight)-i.width),i.width):"center"===e?Math.max(Math.min(n.top+n.height/2-(null==o?void 0:o.realHeight)/2,window.innerHeight-(null==o?void 0:o.realHeight)-i.width),i.width):0}function T(e,t){var n=t.elementDimensions,o=t.popoverDimensions,r=t.popoverPadding,i=t.popoverArrowDimensions;return"start"===e?Math.max(Math.min(n.left-r,window.innerWidth-o.realWidth-i.width),i.width):"end"===e?Math.max(Math.min(n.left-(null==o?void 0:o.realWidth)+n.width+r,window.innerWidth-(null==o?void 0:o.realWidth)-i.width),i.width):"center"===e?Math.max(Math.min(n.left+n.width/2-(null==o?void 0:o.realWidth)/2,window.innerWidth-(null==o?void 0:o.realWidth)-i.width),i.width):0}function L(e,t){var o=c("popover");if(o){var r=(null==t?void 0:t.popover)||{},i=r.align,a=void 0===i?"start":i,s=r.side,l=void 0===s?"left":s,u=a,d="gleap-tour-dummy-element"===e.id?"over":l,p=n("stagePadding")||0,h=O(),f=o.arrow.getBoundingClientRect(),m=e.getBoundingClientRect(),g=m.top-h.height,v=g>=0,y=window.innerHeight-(m.bottom+h.height),b=y>=0,w=m.left-h.width,k=w>=0,x=window.innerWidth-(m.right+h.width),S=x>=0,C=!(v||b||k||S),I=d;if("top"===d&&v?S=k=b=!1:"bottom"===d&&b?S=k=v=!1:"left"===d&&k?S=v=b=!1:"right"===d&&S&&(k=v=b=!1),"over"===d){var L=window.innerWidth/2-h.realWidth/2,A=window.innerHeight/2-h.realHeight/2;o.wrapper.style.left="".concat(L,"px"),o.wrapper.style.right="auto",o.wrapper.style.top="".concat(A,"px"),o.wrapper.style.bottom="auto"}else if(C){var M=window.innerWidth/2-(null==h?void 0:h.realWidth)/2;o.wrapper.style.left="".concat(M,"px"),o.wrapper.style.right="auto",o.wrapper.style.bottom="".concat(10,"px"),o.wrapper.style.top="auto"}else if(k){var R=Math.min(w,window.innerWidth-(null==h?void 0:h.realWidth)-f.width),P=E(u,{elementDimensions:m,popoverDimensions:h,popoverPadding:p,popoverArrowDimensions:f});o.wrapper.style.left="".concat(R,"px"),o.wrapper.style.top="".concat(P,"px"),o.wrapper.style.bottom="auto",o.wrapper.style.right="auto",I="left"}else if(S){var D=Math.min(x,window.innerWidth-(null==h?void 0:h.realWidth)-f.width),N=E(u,{elementDimensions:m,popoverDimensions:h,popoverPadding:p,popoverArrowDimensions:f});o.wrapper.style.right="".concat(D,"px"),o.wrapper.style.top="".concat(N,"px"),o.wrapper.style.bottom="auto",o.wrapper.style.left="auto",I="right"}else if(v){var j=Math.min(g,window.innerHeight-h.realHeight-f.width),F=T(u,{elementDimensions:m,popoverDimensions:h,popoverPadding:p,popoverArrowDimensions:f});o.wrapper.style.top="".concat(j,"px"),o.wrapper.style.left="".concat(F,"px"),o.wrapper.style.bottom="auto",o.wrapper.style.right="auto",I="top"}else if(b){var B=Math.min(y,window.innerHeight-(null==h?void 0:h.realHeight)-f.width),_=T(u,{elementDimensions:m,popoverDimensions:h,popoverPadding:p,popoverArrowDimensions:f});o.wrapper.style.left="".concat(_,"px"),o.wrapper.style.bottom="".concat(B,"px"),o.wrapper.style.top="auto",o.wrapper.style.right="auto",I="bottom"}C?o.arrow.classList.add("gleap-tour-popover-arrow-none"):function(e,t,n){var o=c("popover");if(!o)return;var r=n.getBoundingClientRect(),i=O(),a=o.arrow,s=i.width,l=window.innerWidth,u=r.width,d=r.left,p=i.height,h=window.innerHeight,f=r.top,m=r.height;a.className="gleap-tour-popover-arrow";var g=t,v=e;"top"===t?(d+u<=0?(g="right",v="end"):d+u-s<=0&&(g="top",v="start"),d>=l?(g="left",v="end"):d+s>=l&&(g="top",v="end")):"bottom"===t?(d+u<=0?(g="right",v="start"):d+u-s<=0&&(g="bottom",v="start"),d>=l?(g="left",v="start"):d+s>=l&&(g="bottom",v="end")):"left"===t?(f+m<=0?(g="bottom",v="end"):f+m-p<=0&&(g="left",v="start"),f>=h?(g="top",v="end"):f+p>=h&&(g="left",v="end")):"right"===t&&(f+m<=0?(g="bottom",v="start"):f+m-p<=0&&(g="right",v="start"),f>=h?(g="top",v="start"):f+p>=h&&(g="right",v="end"));g?(a.classList.add("gleap-tour-popover-arrow-side-".concat(g)),a.classList.add("gleap-tour-popover-arrow-align-".concat(v))):a.classList.add("gleap-tour-popover-arrow-none")}(u,I,e)}}return function(){function e(){n("allowClose")&&f()}function o(){var e=c("activeIndex"),t=n("steps")||[];if(void 0!==e){var o=e+1;t[o]?h(o):f()}}function r(){var e=c("activeIndex"),t=n("steps")||[];if(void 0!==e){var o=e-1;t[o]?h(o):f()}}function i(){var e;if(!c("__transitionCallback")){var t=c("activeIndex"),o=c("__activeStep"),i=c("__activeElement");if("CLICK"!==o.mode)if(void 0!==t&&void 0!==o)if(void 0!==c("activeIndex")){var a=(null==(e=o.popover)?void 0:e.onPrevClick)||n("onPrevClick");if(a)return a(i,o,{config:n(),state:c()});r()}}}function a(){var e;if(!c("__transitionCallback")){var t=c("activeIndex"),r=c("__activeStep"),i=c("__activeElement");if("CLICK"!==r.mode&&void 0!==t&&void 0!==r){var a=(null==(e=r.popover)?void 0:e.onNextClick)||n("onNextClick");if(a)return a(i,r,{config:n(),state:c()});o()}}}function s(){c("isInitialized")||(l("isInitialized",!0),document.body.classList.add("gleap-tour-active",n("animate")?"gleap-tour-fade":"gleap-tour-simple"),window.addEventListener("keyup",x,!1),window.addEventListener("keydown",k,!1),window.addEventListener("resize",w),window.addEventListener("scroll",w),p("overlayClick",e),p("escapePress",e),p("arrowLeftPress",i),p("arrowRightPress",a))}function h(){var e,t,o,r,i,a,s,c,u=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,d=n("steps");if(!d)return console.error("No steps to drive through"),void f();if(d[u]){l("__activeOnDestroyed",document.activeElement),l("activeIndex",u);var p=d[u],m=d[u+1],g=d[u-1],v=(null==(e=p.popover)?void 0:e.doneBtnText)||n("doneBtnText")||"Done",b=n("allowClose"),w=void 0!==(null==(t=p.popover)?void 0:t.showProgress)?null==(o=p.popover)?void 0:o.showProgress:n("showProgress"),k=((null==(r=p.popover)?void 0:r.progressText)||n("progressText")||"{{current}} of {{total}}").replace("{{current}}","".concat(u+1)).replace("{{total}}","".concat(d.length)),x=(null==(i=p.popover)?void 0:i.showButtons)||n("showButtons"),S=["next","previous"].concat(qf(b?["close"]:[])).filter((function(e){return!(null==x?void 0:x.length)||x.includes(e)})),C=(null==(a=p.popover)?void 0:a.onNextClick)||n("onNextClick"),I=(null==(s=p.popover)?void 0:s.onPrevClick)||n("onPrevClick"),O=(null==(c=p.popover)?void 0:c.onCloseClick)||n("onCloseClick");y(Vf(Vf({},p),{},{popover:Vf({showButtons:S,nextBtnText:m?void 0:v,disableButtons:qf(g?[]:["previous"]),showProgress:w,progressText:k,onNextClick:C||function(){m?h(u+1):f()},onPrevClick:I||function(){h(u-1)},onCloseClick:O||function(){f()}},(null==p?void 0:p.popover)||{})}))}else f()}function f(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=c("__activeElement"),o=c("__activeStep"),r=c("__activeOnDestroyed"),i=n("onDestroyStarted");if(e&&i){i(!t||"gleap-tour-dummy-element"===(null==t?void 0:t.id)?void 0:t,o,{config:n(),state:c()})}else{var a,s=(null==o?void 0:o.onDeselected)||n("onDeselected"),l=n("onDestroyed");if(document.body.classList.remove("gleap-tour-active","gleap-tour-fade","gleap-tour-simple"),window.removeEventListener("keyup",x),window.removeEventListener("resize",w),window.removeEventListener("scroll",w),function(){var e,t=c("popover");t&&(null==(e=t.wrapper.parentElement)||e.removeChild(t.wrapper))}(),function(){var e;null==(e=document.getElementById("gleap-tour-dummy-element"))||e.remove(),document.querySelectorAll(".gleap-tour-active-element").forEach((function(e){e.classList.remove("gleap-tour-active-element","gleap-tour-no-interaction"),e.removeAttribute("aria-haspopup"),e.removeAttribute("aria-expanded"),e.removeAttribute("aria-controls")}))}(),(a=c("__overlaySvg"))&&a.remove(),d={},u(),t&&o){var p="gleap-tour-dummy-element"===t.id;s&&s(p?void 0:t,o,{config:n(),state:c()}),l&&l(p?void 0:t,o,{config:n(),state:c()})}r&&r.focus()}}return t(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),{isActive:function(){return c("isInitialized")||!1},refresh:w,drive:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;s(),h(e)},setConfig:t,setSteps:function(e){u(),t(Vf(Vf({},n()),{},{steps:e}))},getConfig:n,getState:c,getActiveIndex:function(){return c("activeIndex")},isFirstStep:function(){return 0===c("activeIndex")},isLastStep:function(){var e=n("steps")||[],t=c("activeIndex");return void 0!==t&&t===e.length-1},getActiveStep:function(){return c("activeStep")},getActiveElement:function(){return c("activeElement")},getPreviousElement:function(){return c("previousElement")},getPreviousStep:function(){return c("previousStep")},moveNext:o,movePrevious:r,moveTo:function(e){(n("steps")||[])[e]?h(e):f()},hasNextStep:function(){var e=n("steps")||[],t=c("activeIndex");return void 0!==t&&e[t+1]},hasPreviousStep:function(){var e=n("steps")||[],t=c("activeIndex");return void 0!==t&&e[t-1]},highlight:function(e){s(),y(Vf(Vf({},e),{},{popover:e.popover?Vf({showButtons:[],showProgress:!1,progressText:""},e.popover):void 0}))},destroy:function(){f(!1)}}}}();const Kf=Zf;function Yf(e){return Yf="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Yf(e)}function Xf(){Xf=function(){return t};var e,t={},n=Object.prototype,o=n.hasOwnProperty,r=Object.defineProperty||function(e,t,n){e[t]=n.value},i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",s=i.asyncIterator||"@@asyncIterator",l=i.toStringTag||"@@toStringTag";function c(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,n){return e[t]=n}}function u(e,t,n,o){var i=t&&t.prototype instanceof v?t:v,a=Object.create(i.prototype),s=new A(o||[]);return r(a,"_invoke",{value:O(e,n,s)}),a}function d(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=u;var p="suspendedStart",h="suspendedYield",f="executing",m="completed",g={};function v(){}function y(){}function b(){}var w={};c(w,a,(function(){return this}));var k=Object.getPrototypeOf,x=k&&k(k(M([])));x&&x!==n&&o.call(x,a)&&(w=x);var S=b.prototype=v.prototype=Object.create(w);function C(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function I(e,t){function n(r,i,a,s){var l=d(e[r],e,i);if("throw"!==l.type){var c=l.arg,u=c.value;return u&&"object"==Yf(u)&&o.call(u,"__await")?t.resolve(u.__await).then((function(e){n("next",e,a,s)}),(function(e){n("throw",e,a,s)})):t.resolve(u).then((function(e){c.value=e,a(c)}),(function(e){return n("throw",e,a,s)}))}s(l.arg)}var i;r(this,"_invoke",{value:function(e,o){function r(){return new t((function(t,r){n(e,o,t,r)}))}return i=i?i.then(r,r):r()}})}function O(t,n,o){var r=p;return function(i,a){if(r===f)throw new Error("Generator is already running");if(r===m){if("throw"===i)throw a;return{value:e,done:!0}}for(o.method=i,o.arg=a;;){var s=o.delegate;if(s){var l=E(s,o);if(l){if(l===g)continue;return l}}if("next"===o.method)o.sent=o._sent=o.arg;else if("throw"===o.method){if(r===p)throw r=m,o.arg;o.dispatchException(o.arg)}else"return"===o.method&&o.abrupt("return",o.arg);r=f;var c=d(t,n,o);if("normal"===c.type){if(r=o.done?m:h,c.arg===g)continue;return{value:c.arg,done:o.done}}"throw"===c.type&&(r=m,o.method="throw",o.arg=c.arg)}}}function E(t,n){var o=n.method,r=t.iterator[o];if(r===e)return n.delegate=null,"throw"===o&&t.iterator.return&&(n.method="return",n.arg=e,E(t,n),"throw"===n.method)||"return"!==o&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+o+"' method")),g;var i=d(r,t.iterator,n.arg);if("throw"===i.type)return n.method="throw",n.arg=i.arg,n.delegate=null,g;var a=i.arg;return a?a.done?(n[t.resultName]=a.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,g):a:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,g)}function T(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function L(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function A(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(T,this),this.reset(!0)}function M(t){if(t||""===t){var n=t[a];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,i=function n(){for(;++r=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var l=o.call(a,"catchLoc"),c=o.call(a,"finallyLoc");if(l&&c){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&o.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),L(n),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var o=n.completion;if("throw"===o.type){var r=o.arg;L(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,o){return this.delegate={iterator:M(t),resultName:n,nextLoc:o},"next"===this.method&&(this.arg=e),g}},t}function $f(e,t){for(var n=0;n=0&&t.productTourData&&t.productTourData.steps){var e=t.productTourData.steps[t.currentActiveIndex];e&&e.selector&&""!==e.selector&&t.updatePointerPosition(document.querySelector(e.selector),e)}})))}var t,n,o;return t=e,n=[{key:"disable",value:function(){this.disabled=!0,this.cleanup()}},{key:"startWithConfig",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;"undefined"!=typeof window&&(this.productTourId||this.disabled||(this.productTourId=e,this.productTourData=t,this.currentActiveIndex=0,this.onCompleteCallback=n,this.start()))}},{key:"storeUncompletedTour",value:function(){if("undefined"!=typeof window)if(this.productTourId&&this.productTourData)try{var e=JSON.parse(JSON.stringify({tourData:this.productTourData,tourId:this.productTourId}));e.tourData.steps=e.tourData.steps.slice(this.currentActiveIndex||0,e.tourData.steps.length),localStorage.setItem(nm,JSON.stringify(e))}catch(t){}else localStorage.removeItem(nm)}},{key:"attachScrollListeners",value:function(e,t){var n=this;if("undefined"!=typeof window&&e){var o=function(e){if("undefined"!=typeof window){for(var t=[],n=e.parentElement;n;){var o=window.getComputedStyle(n);("auto"===o.overflowY||"scroll"===o.overflowY)&&n.scrollHeight>n.clientHeight&&t.push(n),n=n.parentElement}return t}}(e);o.push(window),o.forEach((function(o){var r=function(){clearTimeout(n._scrollDebounceTimer),n._scrollDebounceTimer=setTimeout((function(){n.updatePointerPosition(e,t)}),150)};o.addEventListener("scroll",r,{passive:!0}),n._scrollListeners.push({el:o,handler:r})}))}}},{key:"removeScrollListeners",value:function(){"undefined"!=typeof window&&(this._scrollListeners&&this._scrollListeners.length>0&&(this._scrollListeners.forEach((function(e){var t=e.el,n=e.handler;t.removeEventListener("scroll",n)})),this._scrollListeners=[]),this._scrollDebounceTimer&&(clearTimeout(this._scrollDebounceTimer),this._scrollDebounceTimer=null))}},{key:"updatePointerPosition",value:function(e,t){var n,o=this;if("undefined"!=typeof window)try{var r=this._pointerContainer||document.getElementById(om);if(!r)return;if(!e)return r.style.position="fixed",r.style.left="50%",r.style.top="50%",r.style.transform="translate(-50%, -50%)",function(e){if("undefined"!=typeof window){var t=e-window.innerHeight/2;window.scrollTo({top:t,behavior:"smooth"})}}(window.innerHeight/2),this.removeScrollListeners(),this._currentAnchor=null,void(this._currentStep=null);n=e,"undefined"!=typeof window&&n&&n.scrollIntoView({behavior:"smooth",block:"center",inline:"center"});var i=0;!function n(){if(function(e){if("undefined"!=typeof window){var t=e.getBoundingClientRect();return t.top>=0&&t.left>=0&&t.bottom<=window.innerHeight&&t.right<=window.innerWidth}}(e)||i>=20){var a=e.getBoundingClientRect(),s=a.left+a.width/2,l=a.top+a.height/2+10;r.style.position="fixed",r.style.left="".concat(s,"px"),r.style.top="".concat(l,"px"),r.style.transform="translate(-50%, -50%)";var c=350;c>window.innerWidth-40&&(c=window.innerWidth-40),s+c>window.innerWidth-20?r.classList.add("copilot-pointer-container-right"):r.classList.remove("copilot-pointer-container-right"),o._currentAnchor===e&&o._currentStep===t||(o.removeScrollListeners(),o._currentAnchor=e,o._currentStep=t,o.attachScrollListeners(e,t))}else i++,setTimeout(n,100)}()}catch(a){}}},{key:"cleanup",value:function(){var e=this;"undefined"!=typeof window&&(document.body.classList.add("gl-copilot-fade-out"),this.currentAudio&&this.currentAudio.pause(),setTimeout((function(){if(e._pointerContainer)e._pointerContainer.remove(),e._pointerContainer=null;else{var t=document.getElementById(om);t&&t.remove()}var n=document.getElementById(im);n&&n.remove();var o=document.getElementById(rm);o&&o.remove(),document.body.classList.remove("gl-copilot-fade-out")}),800),this.productTourId=void 0,this.productTourData=void 0,this.removeScrollListeners())}},{key:"toggleAudio",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.audioMuted=e,this.currentAudio&&(this.currentAudio.muted=this.audioMuted),document.querySelector(".".concat(im,"-mute")).innerHTML=p(this.audioMuted?"unmute":"mute")}},{key:"setupCopilotTour",value:function(){var e,t,n,o,r,i,a=this;if("undefined"!=typeof window){var s,l,c=null!==(e=null===(t=dt.getInstance().flowConfig)||void 0===t?void 0:t.color)&&void 0!==e?e:"#485BFF",u=d(c),h=document.getElementById(rm);h||((h=document.createElement("style")).id=rm,h.type="text/css",h.textContent="\n #".concat(om," {\n position: absolute;\n top: 0;\n left: 0;\n display: flex;\n align-items: flex-start;\n pointer-events: none;\n z-index: 2147483610;\n transition: all 0.5s ease;\n }\n .").concat(om,"-clickmode {\n cursor: pointer;\n pointer-events: all !important;\n }\n .").concat(om,"-clickmode #copilot-info-bubble-content {\n display: flex !important;\n }\n .").concat(om,"-clickmode svg {\n display: none !important;\n }\n #").concat(om," svg {\n width: 20px;\n height: auto;\n fill: none;\n }\n #copilot-info-bubble {\n position: relative;\n }\n #copilot-info-bubble-content-container {\n position: absolute;\n top: 0px;\n left: 0px;\n min-width: min(300px, 80vw);\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n }\n .").concat(om,"-right #copilot-info-bubble-content-container {\n left: auto !important;\n right: 0px !important;\n align-items: flex-end;\n }\n .").concat(om,"-right .copilot-info-bubble-content {\n margin-right: 5px;\n }\n .").concat(om,"-right svg {\n transform: scaleX(-1);\n }\n #copilot-info-bubble-content svg {\n width: 16px;\n height: 16px;\n display: inline-block !important;\n margin-left: 5px;\n }\n #copilot-info-bubble-content {\n margin-top: 18px;\n margin-left: 5px;\n padding: 10px 15px;\n border-radius: 20px;\n background-color: black;\n color: white;\n font-family: Arial, sans-serif;\n font-size: 14px;\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);\n max-width: 100%;\n white-space: normal;\n overflow-wrap: break-word;\n word-break: normal;\n hyphens: none;\n }\n .").concat(om,"-right #copilot-info-bubble-content {\n margin-top: 30px;\n margin-left: 0px;\n margin-right: 5px;\n }\n .click-wave {\n position: absolute;\n width: 34px;\n height: 34px;\n border-radius: 50%;\n background-color: rgba(0, 0, 0, 0.5);\n pointer-events: none;\n z-index: 2147483611;\n animation: click-wave-animation 0.8s ease forwards;\n }\n @keyframes click-wave-animation {\n 0% {\n transform: scale(0.2);\n opacity: 1;\n }\n 100% {\n transform: scale(2);\n opacity: 0;\n }\n }\n @keyframes slideInFromTop {\n 0% {\n transform: translateY(-100%);\n opacity: 0;\n }\n 100% {\n transform: translateY(0);\n opacity: 1;\n }\n }\n .").concat(im," {\n position: fixed;\n top: 20px;\n right: 20px;\n z-index: 2147483610;\n background: #fff;\n padding: 6px;\n border-radius: 10px;\n box-shadow: 0 0 20px 0 #C294F2;\n display: flex;\n align-items: center;\n gap: 8px;\n border: 1px solid rgba(192, 146, 242, 0.5);\n animation: slideInFromTop 0.5s ease-out forwards;\n }\n .").concat(im," span {\n font-size: 13px;\n color: #000;\n font-family: sans-serif;\n }\n .").concat(im,"-avatar {\n width: 24px;\n height: 24px;\n flex-shrink: 0;\n border-radius: 6px;\n }\n .").concat(im,"-mute {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n .").concat(im,"-mute svg {\n width: 20px;\n height: auto;\n cursor: pointer;\n animation: pulsate 2s infinite;\n }\n .").concat(im,"-mute svg:hover {\n opacity: 0.8;\n }\n .").concat(im,"-dismiss {\n display: flex;\n align-items: center;\n justify-content: center;\n padding-right: 3px;\n }\n .").concat(im,"-dismiss svg {\n width: 15px;\n height: auto;\n cursor: pointer;\n }\n .").concat(im,"-dismiss svg:hover {\n opacity: 0.8;\n }\n @keyframes pulsate {\n 0% {\n transform: scale(1);\n opacity: 1;\n }\n 50% {\n transform: scale(1.1);\n opacity: 0.8;\n }\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n }\n @keyframes glCoFadeIn {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n @keyframes glCoFadeOut {\n 0% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n }\n\n .gleap-audio-unmute-modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n background-color: rgba(0, 0, 0, 0.5);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 2147483620;\n }\n\n .gleap-audio-unmute-modal {\n background-color: #fff;\n padding: 20px;\n border-radius: 8px;\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);\n text-align: center;\n max-width: 90%;\n width: 400px;\n }\n\n .gleap-audio-unmute-modal p {\n margin-bottom: 20px;\n font-size: 16px;\n line-height: 22px;\n font-weight: normal;\n }\n\n .gleap-audio-unmute-button {\n background: ").concat(c,";\n color: ").concat(u,";\n outline: none;\n border: none;\n padding: 10px 14px;\n border-radius: 12px;\n font-size: 14px;\n font-weight: bold;\n cursor: pointer;\n }\n\n .gleap-audio-unmute-button:hover {\n opacity: 0.8;\n }\n\n .gleap-tour-continue-button {\n color: ").concat(c,";\n text-decoration: none;\n cursor: pointer;\n font-size: 14px;\n font-weight: bold;\n border: none;\n background: none;\n padding: 0;\n margin: 0;\n margin-left: 20px;\n }\n\n .gleap-tour-continue-button:hover {\n opacity: 0.8;\n }\n\n body.gl-copilot-fade-out::before,\n body.gl-copilot-fade-out::after,\n body.gl-copilot-fade-out #").concat(im," {\n animation: glCoFadeOut 0.8s ease-out forwards;\n }\n ").concat(null===(s=null===(l=this.productTourData)||void 0===l?void 0:l.playVoice)||void 0===s||s?"":"\n .".concat(im,"-mute {\n display: none;\n }\n "),"\n ").concat(this.productTourData.gradient?'body::before {\n content: "";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n box-sizing: border-box;\n border: 18px solid transparent;\n filter: blur(25px);\n border-image-slice: 1;\n border-image-source: linear-gradient(45deg, #ED5587, #FBE6A9, #a6e3f8, #C294F2);\n animation: glCoFadeIn 1.5s ease-out forwards;\n }\n \n body::after {\n content: "";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n opacity: 0.5;\n box-sizing: border-box;\n border: 3px solid transparent;\n border-image-slice: 1;\n border-image-source: linear-gradient(45deg, #ED5587, #FBE6A9, #a6e3f8, #C294F2);\n animation: glCoFadeIn 1.5s ease-out forwards;\n }':'body::after {\n content: "";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n opacity: 0;\n }',"\n "),document.head.appendChild(h));var f=document.createElement("div");f.id=om,f.style.opacity=0,this._pointerContainer=f;var m=document.createElementNS("http://www.w3.org/2000/svg","svg");m.setAttribute("viewBox","0 0 380 476"),m.innerHTML='';var g=document.createElement("div");g.id="copilot-info-bubble",g.innerHTML="
";var v=document.createElement("div");v.id=im,v.classList.add(im),v.innerHTML='\n \n ').concat(null===(o=this.productTourData)||void 0===o?void 0:o.kaiSlug,'\n
\n ').concat(p(this.audioMuted?"unmute":"mute"),"\n
\n ").concat(null!==(r=this.productTourData)&&void 0!==r&&r.allowClose?'
\n ').concat(p("dismiss"),"\n
"):"","\n "),document.body.appendChild(v),document.querySelector(".".concat(im,"-mute")).addEventListener("click",(function(){a.toggleAudio(!a.audioMuted)})),null!==(i=this.productTourData)&&void 0!==i&&i.allowClose&&document.querySelector(".".concat(im,"-dismiss")).addEventListener("click",(function(){a.completeTour(!1)})),f.appendChild(m),f.appendChild(g),document.body.appendChild(f)}}},{key:"start",value:function(){var e=this;if("undefined"!=typeof window&&!this.disabled){var t=this.productTourData;t&&function(){return am.apply(this,arguments)}().then((function(n){e.audioMuted=!n,e.setupCopilotTour(),e.audioMuted&&null!=t&&t.showUnmuteModal?e.showAudioUnmuteModal():setTimeout((function(){e.renderNextStep()}),1500)}))}}},{key:"showAudioUnmuteModal",value:function(){var e,t,n,o=this,r=document.createElement("div");r.classList.add("gleap-audio-unmute-modal-overlay");var i=document.createElement("div");i.classList.add("gleap-audio-unmute-modal");var a=document.createElement("p");a.textContent=null===(e=this.productTourData)||void 0===e?void 0:e.unmuteModalTitle,i.appendChild(a);var s=document.createElement("button");s.classList.add("gleap-audio-unmute-button"),s.textContent=null===(t=this.productTourData)||void 0===t?void 0:t.unmuteModalButton,s.addEventListener("click",(function(){o.toggleAudio(!1),r.parentNode&&r.parentNode.removeChild(r),setTimeout((function(){o.renderNextStep()}),1e3)})),i.appendChild(s);var l=document.createElement("button");l.classList.add("gleap-tour-continue-button"),l.textContent=null===(n=this.productTourData)||void 0===n?void 0:n.unmuteModalContinue,l.addEventListener("click",(function(){r.parentNode&&r.parentNode.removeChild(r),setTimeout((function(){o.renderNextStep()}),1e3)})),i.appendChild(l),r.appendChild(i),document.body.appendChild(r)}},{key:"completeTour",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];"undefined"!=typeof window&&(this.cleanup(),this.onCompleteCallback&&this.onCompleteCallback(e))}},{key:"renderNextStep",value:function(){var e=this;if("undefined"!=typeof window&&!this.disabled){var t=this,n=this.productTourData.steps;if(this.currentActiveIndex>=n.length)setTimeout((function(){e.completeTour()}),500);else{var o=n[this.currentActiveIndex],r=function(n){if(e._pointerContainer.style.display="flex",o.selector&&o.selector.length>0&&!n)e.completeTour(!1);else{var r=function(){if("INPUT"===o.mode&&n){var e,r=function(){document.querySelector("#".concat(om)).classList.remove("copilot-pointer-container-clickmode"),n.classList.remove("gleap-input-highlight"),document.getElementById(om).style.display="none",t.currentActiveIndex++,t.storeUncompletedTour(),t.renderNextStep()};if("default"===(null!==(e=o.inputType)&&void 0!==e?e:"default")){var i=function e(t){var o;if(0!==(null==t||null===(o=t.target)||void 0===o||null===(o=o.value)||void 0===o?void 0:o.length)){var i=document.getElementById("copilot-info-bubble-content");i&&(i.innerHTML="".concat(gh.translateText("next"),' \n \n'),i.addEventListener("click",r,{once:!0}),n.classList.add("gleap-input-highlight"),document.querySelector("#".concat(om)).classList.add("copilot-pointer-container-clickmode"),n.removeEventListener("input",e))}};n.addEventListener("input",i,{once:!1}),n.hasAttribute("contenteditable")&&n.addEventListener("keyup",i,{once:!1}),n.addEventListener("blur",(function(){n.focus()}),{once:!0}),n.focus()}else{var a,s=null!==(a=o.inputValue)&&void 0!==a?a:"",l=0;!function e(){l0})).length;return Math.ceil(t/3.6)+1}}(i),s=function(){e.currentAudio=void 0,setTimeout((function(){r()}),1e3*a)};o.voice&&o.voice.length>0?(e.currentAudio=new Audio(o.voice),e.audioMuted&&(e.currentAudio.muted=!0),e.currentAudio.addEventListener("ended",(function(){setTimeout((function(){r()}),1e3)})),e.currentAudio.play().then((function(){})).catch((function(e){s()}))):s()}},i=o.selector?function(e){if("undefined"!=typeof window){var t=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:5e3)/100,n=0;return new Promise((function(o,r){var i=setInterval((function(){var a=document.querySelector(e);a?(clearInterval(i),o(a)):n>=t&&(clearInterval(i),r(new Error("Element not found for selector: ".concat(e)))),n++}),100)}))}}(o.selector):Promise.resolve(null);i.then(r).catch((function(){return r(null)}))}}}}],o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],n&&$f(t.prototype,n),o&&$f(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function lm(e){return lm="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},lm(e)}function cm(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function um(e){for(var t=1;t2&&void 0!==arguments[2]?arguments[2]:0,r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(!this.productTourId&&!this.disabled)if(this.productTourId=e,this.productTourData=t,this.currentActiveIndex=0,r)this.start();else{var i=this;et.getInstance().validateProductTour(e).then((function(){return o>0?setTimeout((function(){i.start()}),o):n.start()})).catch((function(e){console.log("Product tour is not live. Cleaning up..."),console.error(e),i.onComplete(!1)}))}}},{key:"onComplete",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t={tourId:this.productTourId};e?(xn.notifyEvent("productTourCompleted",t),_m.trackEvent("tour-".concat(this.productTourId,"-completed"),t)):(xn.notifyEvent("productTourQuit",t),_m.trackEvent("tour-".concat(this.productTourId,"-quit"),t)),this.gleapTourObj&&this.gleapTourObj.destroy(),this.gleapTourObj=void 0,this.productTourData=void 0,this.productTourId=void 0,this.currentActiveIndex=void 0,this.clearUncompletedTour()}},{key:"loadUncompletedTour",value:function(){try{var e=JSON.parse(localStorage.getItem(fm));if(null!=e&&e.tourData&&null!=e&&e.tourId)return e}catch(t){}return null}},{key:"storeUncompletedTour",value:function(){if(this.productTourId&&this.productTourData)try{var e=JSON.parse(JSON.stringify({tourData:this.productTourData,tourId:this.productTourId}));e.tourData.steps=e.tourData.steps.slice(this.currentActiveIndex||0,e.tourData.steps.length),localStorage.setItem(fm,JSON.stringify(e))}catch(t){}else this.clearUncompletedTour()}},{key:"clearUncompletedTour",value:function(){try{localStorage.removeItem(fm)}catch(e){}}},{key:"start",value:function(){var e=this,t=this.productTourData;if(t){if("cobrowse"===t.tourType)return sm.getInstance().startWithConfig(this.productTourId,t,(function(t){e.onComplete(t)}));this.unmuted=!1;for(var n=t.steps,o=this,r=[],i=0;i\n \n
').concat(p("unmute"),"
\n ");else{var d="";t.sender&&t.sender.firstName&&(u=!0,d='
\n
\n
').concat(t.sender.firstName,"
\n
")),c="".concat(d,'
').concat(a.message,"
")}var h={disableActiveInteraction:!s&&!l,mode:a.mode,popover:um({description:c,popoverClass:"gleap-tour-popover-".concat(a.type," ").concat(!u&&"gleap-tour-popover-no-sender"," ").concat(t.allowClose&&"gleap-tour-popover-can-close")},s?{showButtons:[]}:{})};a.selector&&a.selector.length>0&&(h.element=a.selector),r.push(h)}var f=["next","close"];t.backButton&&f.push("previous"),this.gleapTourObj=Kf(pm(pm(pm(pm(pm(pm(pm(pm(pm(pm({showProgress:!0,allowKeyboardControl:!1,steps:r},"showProgress",n.length>1),"allowClose",t.allowClose),"nextBtnText",t.nextText),"doneBtnText",t.doneText),"prevBtnText",t.prevText),"showButtons",f),"onHighlightStarted",(function(t,n,o){var r;e.currentActiveIndex=null==o||null===(r=o.state)||void 0===r?void 0:r.activeIndex,e.storeUncompletedTour()})),"onElementNotFound",(function(t){document.removeEventListener("click",m),e.onComplete(!1)})),"onDestroyStarted",(function(){e.gleapTourObj.hasNextStep()?e.onComplete(!1):e.onComplete(!0),document.removeEventListener("click",m)})),"onPopoverRender",(function(t){if(t)for(var n=document.querySelectorAll(".gleap-tour-popover-description img, .gleap-tour-popover-description video"),r=function(){setTimeout((function(){e.gleapTourObj.refresh()}),500),setTimeout((function(){e.gleapTourObj.refresh()}),750)},i=0;ie.length)&&(t=e.length);for(var n=0,o=new Array(t);n1&&void 0!==arguments[1]?arguments[1]:"";return gh.translateText(e)||t}},{key:"_translateWithVars",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return gh.translateTextWithVars(e,t)||n}},{key:"getCheckIcon",value:function(){return'\n \n '}},{key:"loadChecklist",value:function(){if(this._isSessionReady&&this._networkManager){var e=this.getAttribute("checklistId");e?(this.activeStep=-1,this._initialActiveSet=!1,this.validateChecklist(e)):(this.renderResponse(),this.checklistData=null,this._hasLoaded=!1)}}},{key:"getQueryParams",value:function(){var e=this._getGleapSessionInstance();if(null==e||!e.session)return"";var t=e.session,n="en";try{void 0!==gh&&(n=gh.getInstance().getActiveLanguage()||"en")}catch(o){}return"gleapId=".concat(t.gleapId||"","&gleapHash=").concat(t.gleapHash||"","&lang=").concat(n)}},{key:"makeRequest",value:function(e,t,n,o){var r=this._getGleapSessionInstance();if(null!=r&&r.session){var i=new XMLHttpRequest;i.open(e,t);try{r.injectSession(i)}catch(a){}n&&i.setRequestHeader("Content-Type","application/json;charset=UTF-8"),i.onreadystatechange=function(){4===i.readyState&&o(i)},i.onerror=function(){o(i)},i.send(n?JSON.stringify(n):null)}else o({readyState:4,status:0,responseText:"Session unavailable",_isMock:!0})}},{key:"validateChecklist",value:function(e){var t=this;if(this._isSessionReady&&this._networkManager){this.checklistData=null,this._hasLoaded=!1,this.renderResponse();var n=this.getAttribute("sharedKey");this._networkManager.validateChecklist(e,n).then((function(e){t.isConnected&&t._isSessionReady&&e&&t.fetchChecklist(e)})).catch((function(e){t.renderResponse(),t.checklistData=null,t._hasLoaded=!1}))}}},{key:"fetchChecklist",value:function(e){var t=this;this._isSessionReady&&this._networkManager&&(this._isInitialLoad=!this._hasLoaded,this._networkManager.fetchChecklist(e).then((function(e){var n;if(!t.isConnected||!t._isSessionReady||!e)return t._hasLoaded=!1,t.checklistData=null,void t._checkSessionAndLoad();if(t.checklistData=e,t._hasLoaded=!0,"done"!==e.status){if(t._isInitialLoad&&!t._initialActiveSet){var o,r=(null===(o=e.outbound)||void 0===o||null===(o=o.config)||void 0===o?void 0:o.steps)||[],i=e.completedSteps||[],a=r.findIndex((function(e){return!i.includes(e.id)}));t.activeStep=a>=0?a:-1,-1!==t.activeStep&&(t._initialActiveSet=!0)}t.renderChecklist(t.checklistData),xn.notifyEvent("checklist-loaded",{checklistId:t.checklistData.id,outboundId:null===(n=t.checklistData.outbound)||void 0===n?void 0:n.id,completedSteps:t.checklistData.completedSteps,status:t.checklistData.status,data:t.checklistData})}else t.renderResponse()})).catch((function(e){t.renderResponse(),t.checklistData=null,t._hasLoaded=!1})))}},{key:"updateChecklist",value:function(e,t){var n,o,r=this._getGleapSessionInstance();if(null!=r&&r.session){var i=r.apiUrl;if(i){var a=r.session,s=null!==(n=null==a?void 0:a.gleapId)&&void 0!==n?n:"",l=null!==(o=null==a?void 0:a.gleapHash)&&void 0!==o?o:"",c="en";try{void 0!==gh&&(c=gh.getInstance().getActiveLanguage()||"en")}catch(d){}var u="".concat(i,"/outbound/checklists/").concat(e);t.checkedStep&&(u+="/increment/".concat(t.checkedStep)),u+="?gleapId=".concat(s,"&gleapHash=").concat(l,"&lang=").concat(c),this.makeRequest("PUT",u,t,(function(e){e._isMock||200!==e.status&&e.status}))}}}},{key:"handleChecklistUpdate",value:function(e){if(this._hasLoaded&&this.checklistData){var t=e.detail;if(t&&t.id===this.checklistData.id){var n,o=vm(this.checklistData.completedSteps||[]),r=!1,i=!1,a=this.activeStep;if(t.completedSteps&&JSON.stringify(t.completedSteps)!==JSON.stringify(o)&&(this.checklistData.completedSteps=vm(t.completedSteps),r=!0,-1!==a)){var s,l=null===(s=this.checklistData.outbound)||void 0===s||null===(s=s.config)||void 0===s||null===(s=s.steps)||void 0===s||null===(s=s[a])||void 0===s?void 0:s.id;l&&this.checklistData.completedSteps.includes(l)&&!o.includes(l)&&(i=!0)}if(t.status&&t.status!==this.checklistData.status&&(this.checklistData.status=t.status,r=!0),i){for(var c,u=(null===(c=this.checklistData.outbound)||void 0===c||null===(c=c.config)||void 0===c?void 0:c.steps)||[],d=-1,p=a+1;p1&&void 0!==arguments[1]?arguments[1]:"checklist-floating",r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=(null===(t=e.config)||void 0===t?void 0:t.steps)||[],a=(null===(n=this.checklistData)||void 0===n?void 0:n.completedSteps)||[],s=0;if(this.progressbarEnabled&&i.length>0){var l=i.length,c=a.length;s=l>0?c/l*100:0}var u,d,p=i.find((function(e){return!a.includes(e.id)})),h=i.length>0?p?p.title||this._translateWithVars("stepDefaultTitle",{index:i.indexOf(p)+1},"Step ".concat(i.indexOf(p)+1)):"":e.subject||"",f=i.length>0?p&&p.description||"":e.message||"";r&&(h=(null===(u=e.config)||void 0===u?void 0:u.successTitle)||"",f=(null===(d=e.config)||void 0===d?void 0:d.successMessage)||"",s=100);var m=2*Math.PI*7,g=m-s/100*m,v="checklist-floating-header"===o,y=v?'\n \n \n ':'\n \n ';return'\n
\n
\n
\n \n \n \n \n
\n
').concat(h,"
\n ").concat(r?"":''.concat(y,""),'\n
\n
').concat(f,"
\n
\n ")}},{key:"renderInfoSection",value:function(e){var t;if(!this.infoEnabled||!e)return"";var n=e.subject||this._translate("checklistDefaultTitle","Checklist"),o=e.message||"",r="";return null!==(t=e.sender)&&void 0!==t&&t.profileImageUrl&&(r='\n
\n ').concat(e.sender.firstName||\n ').concat(e.sender.firstName||"","\n
")),'\n
\n '.concat(n?'
'.concat(n,"
"):"","\n ").concat(o?'
'.concat(o,"
"):"","\n ").concat(r,"\n
")}},{key:"renderProgressSection",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];if(!this.progressbarEnabled||!e.length)return"";var n=e.length,o=t.length,r=n>0?o/n*100:0,i=0;e.forEach((function(e){!t.includes(e.id)&&e.duration>0&&(i+=e.duration)}));var a=this._translateWithVars("taskProgress",{a:o,b:n},"".concat(o," of ").concat(n," done")),s=i>0?this._translateWithVars("aboutMinutes",{a:i},"About ".concat(i," min left")):"";return'\n
\n
'.concat(a,"
\n ").concat(s?'
'.concat(s,"
"):"",'\n
\n
\n
\n
')}},{key:"renderTasks",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return t&&0!==t.length?t.map((function(t,o){var r=n.includes(t.id),i=e.activeStep===o,a=r?''.concat(e.getCheckIcon(),""):''.concat(o+1,""),s=t.title||e._translateWithVars("stepDefaultTitle",{index:o+1},"Step ".concat(o+1)),l=t.description||"",c=t.actionTitle||e._translate("actionDefaultTitle","Action"),u=t.action&&"none"!==t.action?'
\n \n
"):"",d=e._translate("markAsDone","Mark as done"),p=t.allowMarkDone&&!r?'
\n ').concat(e.getCheckIcon(),'\n
').concat(d,"
\n
"):"",h=["checklist-task",r?"checklist-task--done":"",i?"checklist-task--active":""].filter(Boolean).join(" ");return'\n
\n
\n ').concat(a,'\n
').concat(s,'
\n \n \n \n \n \n
\n
\n
\n ').concat(l?'
'.concat(l,"
"):"","\n ").concat(u,"\n ").concat(p,"\n
\n
\n
")})).join(""):"

".concat(this._translate("noStepsDefined","No steps defined."),"

")}},{key:"renderChecklist",value:function(e){var t;if(this._hasLoaded&&e&&e.outbound){var n=e.outbound,o=(null===(t=n.config)||void 0===t?void 0:t.steps)||[],r=e.completedSteps||[],i="";if("done"===e.status||o.length>0&&r.length>=o.length){var a,s,l=(null===(a=n.config)||void 0===a?void 0:a.successTitle)||"",c=(null===(s=n.config)||void 0===s?void 0:s.successMessage)||"";i=this.floatingEnabled?this.renderFloatingLauncher(n,"checklist-floating-launcher",!0):'\n
\n
\n '.concat(this.getCheckIcon(),'\n
\n
').concat(l,'
\n
').concat(c,"
\n
"),-1!==this.activeStep&&(this.activeStep=-1)}else i='\n
\n '.concat(this.floatingEnabled?"":this.renderInfoSection(n),"\n ").concat(this.floatingEnabled?"":this.renderProgressSection(o,r),"\n ").concat(this.floatingEnabled?this.renderFloatingLauncher(n):"",'\n
\n ').concat(this.floatingEnabled?this.renderFloatingLauncher(n,"checklist-floating-header"):"","\n ").concat(this.renderTasks(o,r),"\n
\n
");var u=dt.getInstance().getFlowConfig(),d=u.color?u.color:"#485BFF",p="\n \n ');this.shadowRoot.innerHTML=p+i,this.addTaskEventListeners(),this.floatingEnabled&&this.addFloatingClickListeners(),-1!==this.activeStep&&this.toggleTask(this.activeStep,!0)}else this._checkSessionAndLoad()}},{key:"updateActiveTaskMaxHeight",value:function(){if(-1!==this.activeStep){var e=this.shadowRoot.querySelector('.checklist-task[data-task-index="'.concat(this.activeStep,'"] .checklist-task-body-inner')),t=this.shadowRoot.querySelector('.checklist-task[data-task-index="'.concat(this.activeStep,'"] .checklist-task-body'));if(e&&t){var n=e.offsetHeight;t.style.setProperty("--task-body-active-height","".concat(n,"px"))}}}},{key:"addTaskEventListeners",value:function(){var e=this;this.shadowRoot.querySelectorAll(".checklist-task").forEach((function(t){var n=t.querySelector(".checklist-task-header"),o=parseInt(t.getAttribute("data-task-index"),10);n&&n.addEventListener("click",(function(){var t=e.activeStep===o?-1:o;e.setActiveStep(t)}));var r=t.querySelector(".checklist-task-body-markdone");r&&r.addEventListener("click",(function(t){var n;if(t.stopPropagation(),null!==(n=e.checklistData)&&void 0!==n&&null!==(n=n.outbound)&&void 0!==n&&null!==(n=n.config)&&void 0!==n&&n.steps){var r=e.checklistData.outbound.config.steps[o];if(r){var i=e.activeStep;if(e.checklistData.completedSteps||(e.checklistData.completedSteps=[]),!e.checklistData.completedSteps.includes(r.id)){var a;e.checklistData.completedSteps.push(r.id),xn.notifyEvent("checklist-step-completed",{checklistId:e.checklistData.id,outboundId:null===(a=e.checklistData.outbound)||void 0===a?void 0:a.id,stepId:r.id,stepIndex:o,step:r,completedSteps:e.checklistData.completedSteps,status:e.checklistData.status,data:e.checklistData});var s=e.checklistData.outbound.config.steps,l=-1;if(i===o){for(var c=o+1;c0&&e.checklistData.completedSteps.length>=s.length&&(e.checklistData.status="done",d.status="done",xn.notifyEvent("checklist-completed",{checklistId:e.checklistData.id,outboundId:null===(u=e.checklistData.outbound)||void 0===u?void 0:u.id,completedSteps:e.checklistData.completedSteps,status:e.checklistData.status,data:e.checklistData})),e.updateChecklist(e.checklistData.id,d)}}}}));var i=t.querySelector(".checklist-task-body-action .action-button");i&&i.addEventListener("click",(function(t){var n;if(t.stopPropagation(),null!==(n=e.checklistData)&&void 0!==n&&null!==(n=n.outbound)&&void 0!==n&&null!==(n=n.config)&&void 0!==n&&n.steps&&void 0!==_m){var r=e.checklistData.outbound.config.steps[o];if(r&&r.action&&"none"!==r.action)try{"BOT"===r.action?_m.startBot(r.botId):"CUSTOM_ACTION"===r.action?_m.triggerCustomAction(r.actionBody):"REDIRECT_URL"===r.action?(t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation(),_m.openURL(r.actionBody,!!r.actionOpenInNewTab)):"FEEDBACK_FLOW"===r.action?_m.startFeedbackFlow(r.formId):"NEWS_ARTICLE"===r.action?_m.openNewsArticle(r.articleId):"HELP_ARTICLE"===r.action?_m.openHelpCenterArticle(r.articleId):"CHECKLIST"===r.action&&_m.startChecklist(r.outboundId,!0,null==r?void 0:r.sharedKey)}catch(i){}}}))}))}},{key:"setActiveStep",value:function(e){var t=this,n=this.activeStep;this.activeStep=e;var o=[];-1!==n&&n!==this.activeStep&&o.push({index:n,open:!1}),-1!==this.activeStep&&this.activeStep!==n&&o.push({index:this.activeStep,open:!0}),o.forEach((function(e){var n=e.index,o=e.open;t.toggleTask(n,o)}))}},{key:"toggleTask",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=this.shadowRoot.querySelector('.checklist-task[data-task-index="'.concat(e,'"]'));if(n){var o=n.querySelector(".checklist-task-header");if(o){var r=n.classList.contains("checklist-task--active"),i=null!==t?t:!r;if(i&&!r){n.classList.add("checklist-task--active"),o.setAttribute("aria-expanded","true");var a=n.querySelector(".checklist-task-body-inner");if(a){var s=a.offsetHeight,l=n.querySelector(".checklist-task-body");l&&l.style.setProperty("--task-body-active-height","".concat(s,"px"))}}else!i&&r&&(n.classList.remove("checklist-task--active"),o.setAttribute("aria-expanded","false"))}}}}],r=[{key:"observedAttributes",get:function(){return["checklistId","info","progressbar","dark","floating","sharedKey"]}}],o&&bm(n.prototype,o),r&&bm(n,r),Object.defineProperty(n,"prototype",{writable:!1}),t}(xm(HTMLElement));"undefined"==typeof customElements||customElements.get("gleap-checklist")||customElements.define("gleap-checklist",e)}}();var Dm=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),Rm(this,"initialized",!1),Rm(this,"offlineMode",!1),Rm(this,"disablePageTracking",!1),Rm(this,"disableInAppNotifications",!1),Rm(this,"globalData",{screenRecordingData:null,webReplay:null,snapshotPosition:{x:0,y:0}}),"undefined"!=typeof window&&(Xt.getInstance(),rn.getInstance().start(),pn.getInstance().start(),Hf.getInstance().start())}var t,n,o;return t=e,n=[{key:"isLiveMode",value:function(){if(!0===this.offlineMode)return!1;var e=window.location.hostname;return!(["localhost","127.0.0.1","0.0.0.0","","::1"].includes(e)||e.startsWith("192.168.")||e.startsWith("10.0.")||e.endsWith(".local")||!e.includes("."))}},{key:"softReInitialize",value:function(){Vt.getInstance().destroy(),dt.getInstance().start().then((function(){a.getInstance().refresh(),Mh.getInstance().injectNotificationUI()})).catch((function(e){console.warn("Failed to initialize Gleap.")}))}},{key:"performActions",value:function(t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:"INFO";rn.getInstance().addLog(e,t)}},{key:"initialize",value:function(t){var n=this.getInstance();if(n.initialized)console.warn("Gleap already initialized.");else{n.initialized=!0;try{!function(){try{if("visualViewport"in window&&/iPad|iPhone|iPod/.test(navigator.userAgent)){var e=function(){try{var e=document.querySelector(".gleap-frame-container-inner iframe");if(!e)return;window.visualViewport.height1&&void 0!==arguments[1]&&arguments[1];Vt.getInstance().urlHandler(e,t)}},{key:"checkForUrlParams",value:function(){if("undefined"!=typeof window&&window.location.search)try{var t=new URLSearchParams(window.location.search),n=t.get("gleap_widget");n&&n.length>0&&e.open();var o=t.get("gleap_conversation");o&&o.length>0&&("true"===o?e.startConversation(!0):e.startBot(o,!0));var r=t.get("gleap_feedback");r&&r.length>0&&e.startFeedbackFlow(r);var i=t.get("gleap_survey"),a=t.get("gleap_survey_format");i&&i.length>0&&e.showSurvey(i,"survey_full"===a?"survey_full":"survey");var s=t.get("gleap_tour");if(s&&s.length>0){var l=parseInt(t.get("gleap_tour_delay"));isNaN(l)&&(l=2),setTimeout((function(){e.startProductTour(s)}),1e3*l)}}catch(c){}}},{key:"destroy",value:function(){Yp.getInstance().stop(),it.getInstance().stop(),Vt.getInstance().destroy(),a.getInstance().destroy(),Mh.getInstance().clearAllNotifications(!0),et.getInstance().clearSession(0,!1),Bh.getInstance().removeBannerUI(),this.instance=null}},{key:"closeBanner",value:function(){Bh.getInstance().removeBannerUI()}},{key:"closeModal",value:function(){Gh.getInstance().hideModal()}},{key:"setUseCookies",value:function(e){et.getInstance().useCookies=e}},{key:"identify",value:function(e,t,n){return et.getInstance().identifySession(e,k(t),n)}},{key:"updateContact",value:function(e){return et.getInstance().updateSession(k(e))}},{key:"clearIdentity",value:function(){et.getInstance().clearSession()}},{key:"getIdentity",value:function(){return et.getInstance().getSession()}},{key:"isUserIdentified",value:function(){var e=et.getInstance().session;return!!(e&&e.userId&&e.userId.length>0)}},{key:"isOpened",value:function(){return Vt.getInstance().isOpened()}},{key:"hide",value:function(){Vt.getInstance().hideWidget()}},{key:"setMaxNetworkRequests",value:function(e){y.getInstance().setMaxRequests(e)}},{key:"startNetworkLogger",value:function(){y.getInstance().start()}},{key:"setNetworkLogsBlacklist",value:function(e){y.getInstance().setBlacklist(e)}},{key:"setNetworkLogPropsToIgnore",value:function(e){y.getInstance().setFilters(e)}},{key:"setReplayOptions",value:function(e){Yp.getInstance().setOptions(e)}},{key:"close",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];Vt.getInstance().hideWidget(e)}},{key:"open",value:function(){Vt.getInstance().setAppMode("widget"),Vt.getInstance().showWidget()}},{key:"trackEvent",value:function(e,t){it.getInstance().logEvent(e,t)}},{key:"logEvent",value:function(e,t){it.getInstance().logEvent(e,t)}},{key:"preFillForm",value:function(e){var t=k(e);Oh.getInstance().formPreFill=t,Vt.getInstance().sendMessage({name:"prefill-form-data",data:t},!0)}},{key:"on",value:function(e,t){xn.on(e,t)}},{key:"enableShortcuts",value:function(e){e?kh.getInstance().start():kh.getInstance().stop()}},{key:"showFeedbackButton",value:function(e){a.getInstance().toggleFeedbackButton(e)}},{key:"setAppVersionCode",value:function(e){Xt.setAppVersionCode(e)}},{key:"setAppBuildNumber",value:function(e){Xt.setAppBuildNumber(e)}},{key:"setWSApiUrl",value:function(e){et.getInstance().wsApiUrl=e}},{key:"setApiUrl",value:function(e){et.getInstance().apiUrl=e}},{key:"setBannerUrl",value:function(e){Bh.getInstance().setBannerUrl(e)}},{key:"setModalUrl",value:function(e){Gh.getInstance().setModalUrl(e)}},{key:"setFrameUrl",value:function(e){Vt.getInstance().frameUrl=e}},{key:"setTicketAttribute",value:function(e,t){vn.getInstance().setTicketAttribute(e,t)}},{key:"unsetTicketAttribute",value:function(e){vn.getInstance().unsetTicketAttribute(e)}},{key:"clearTicketAttributes",value:function(){vn.getInstance().clearTicketAttributes()}},{key:"attachCustomData",value:function(e){vn.getInstance().attachCustomData(e)}},{key:"setCustomData",value:function(e,t){vn.getInstance().setCustomData(e,t)}},{key:"removeCustomData",value:function(e){vn.getInstance().removeCustomData(e)}},{key:"clearCustomData",value:function(){vn.getInstance().clearCustomData()}},{key:"playSound",value:function(e){Yh.playSound(e)}},{key:"showTabNotificationBadge",value:function(e){var t=Mh.getInstance();t.showNotificationBadge=e,t.updateTabBarNotificationCount()}},{key:"setLanguage",value:function(t){gh.getInstance().setOverrideLanguage(t),e.getInstance().initialized&&setTimeout((function(){e.getInstance().softReInitialize(),e.updateContact({lang:t})}),1e3)}},{key:"registerCustomAction",value:function(e){Ln.registerCustomAction(e)}},{key:"triggerCustomAction",value:function(e){Ln.triggerCustomAction(e)}},{key:"setStyles",value:function(e,t,n){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"#ffffff",r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:20,i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:20,s=arguments.length>6&&void 0!==arguments[6]?arguments[6]:20,l=arguments.length>7&&void 0!==arguments[7]?arguments[7]:a.FEEDBACK_BUTTON_BOTTOM_LEFT;O((function(){!function(e,t,n,o,r,i,s,l){var c=d(e),p=d(n),h=d(r),f=d(t),m="#ffffff"===h,g=u(t,"#ffffff"===f?-35:-15),v=u(r,m?100:-120),y=u(r,m?30:-12),b=u(r,m?80:-30),w=(o=parseInt(o,10),Math.round(1.05*o)),k=Math.round(.8*o),x=Math.round(.6*o),S=Math.round(.4*o),C=Math.round(.25*o),I=57+s;l===a.FEEDBACK_BUTTON_CLASSIC_BOTTOM?I=s+15:(l&&l.includes("CLASSIC")||l===a.FEEDBACK_BUTTON_NONE)&&(I=s);var O='\n .gleap-font, .gleap-font * {\n font-style: normal;\n font-variant-caps: normal;\n font-variant-ligatures: normal;\n font-variant-numeric: normal;\n font-variant-east-asian: normal;\n font-weight: normal;\n font-stretch: normal;\n font-size: 100%;\n line-height: 1;\n font-family: system-ui, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";\n }\n .gleap-input-highlight {\n box-shadow: 0 0 0 3px '.concat(e," !important;\n }\n .gleap-frame-container {\n right: ").concat(i,"px;\n bottom: ").concat(61+s,"px;\n width: calc(100% - 40px);\n max-width: 410px;\n position: fixed;\n z-index: ").concat(2147483631,";\n visibility: visible;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.16);\n border-radius: ").concat(k,"px;\n overflow: hidden;\n animation-duration: .3s;\n animation-fill-mode: both;\n animation-name: gleapFadeInUp;\n user-select: none;\n pointer-events: none;\n transition: max-width 0.3s ease-out;\n }\n\n .gleap-admin-highlight {\n box-shadow: 0px 0px 0px 4px red;\n }\n\n :root {\n --gleap-margin-top: 50px;\n }\n\n .gleap-tooltip-anchor {\n position: relative;\n display: inline-block;\n float: left;\n max-width: 0px;\n width: 17px;\n }\n\n .gleap-tooltip-hotspot {\n position: absolute;\n display: block;\n width: 17px;\n height: 17px;\n cursor: pointer;\n top: 0px;\n left: 0px;\n }\n\n @keyframes gleap-pulse {\n 0% {\n transform: scale(0);\n opacity: 0.25;\n }\n 45% {\n transform: scale(2.5);\n opacity: 0;\n }\n 100% {\n transform: scale(0);\n opacity: 0;\n }\n }\n\n .gleap-tooltip-hotspot-animation {\n position: absolute;\n border-radius: 17px;\n opacity: 0.25;\n display: block;\n width: 17px;\n height: 17px;\n cursor: pointer;\n top: 0px;\n left: 0px;\n animation: gleap-pulse 5s infinite;\n }\n\n .gleap-tooltip-hotspot svg {\n width: 17px;\n height: 17px;\n object-fit: contain;\n display: block;\n }\n\n .gleap-tooltip-inner {\n position: relative;\n overflow: visible;\n font-size: 14px;\n font-weight: normal;\n color: #000;\n line-height: 1.3;\n }\n\n .gleap-tooltip {\n position: absolute;\n background-color: #fff;\n color: #000;\n font-size: 15px;\n line-height: 18px;\n padding: 16px;\n padding-top: 8px;\n padding-bottom: 8px;\n border-radius: 4px;\n max-width: min(350px, 80vw);\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n opacity: 0;\n visibility: hidden;\n transition: opacity 0.2s, visibility 0.2s;\n z-index: ").concat(2147483700,";\n }\n\n .gleap-tooltip a {\n color: ").concat(e,";\n text-decoration: underline;\n display: inline !important;\n margin: 0px !important;\n padding: 0px !important;\n word-break: break-word;\n }\n\n .gleap-tooltip ul {\n padding-left: 16px;\n }\n\n .gleap-tooltip b {\n font-weight: 600;\n }\n\n .gleap-tooltip h2 {\n font-size: 18px;\n line-height: 20px;\n font-weight: 600;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip h3 {\n font-size: 16px;\n line-height: 18px;\n font-weight: 600;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip p {\n padding: 0px;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip img {\n max-width: 100%;\n max-height: 300px;\n width: 100%;\n height: auto;\n object-fit: cover;\n margin-top: 8px;\n margin-bottom: 8px;\n border-radius: 4px;\n }\n\n .gleap-tooltip iframe,\n .gleap-tooltip video {\n max-width: 100%;\n width: 100%;\n height: auto;\n min-height: 200px;\n display: block;\n border: none;\n outline: none;\n padding: 0px;\n margin-top: 8px;\n margin-bottom: 8px;\n border-radius: 4px;\n }\n\n .gleap-tooltip-arrow {\n position: absolute;\n width: 20px;\n height: 20px;\n }\n\n .gleap-tooltip-arrow svg {\n width: 20px;\n height: 20px;\n object-fit: contain;\n }\n\n .gleap-b-frame {\n width: 100%;\n height: 100%;\n border: none;\n pointer-events: auto;\n padding: 0px;\n margin: 0px;\n }\n\n .gleap-b-shown {\n transition: margin 0.3s ease-out;\n margin-top: var(--gleap-margin-top);\n position: relative;\n z-index: 10000;\n }\n\n .gleap-b-f {\n margin-top: 0px;\n }\n\n .gleap-b {\n display: none;\n position: absolute;\n top: calc(-1 * var(--gleap-margin-top));\n left: 0px;\n width: 100vw;\n height: var(--gleap-margin-top);\n z-index: ").concat(2147483699,";\n }\n\n @keyframes gleapSlideIn {\n from {\n top: calc(-1 * var(--gleap-margin-top));\n }\n to {\n top: 10px;\n }\n }\n\n .gleap-b-f .gleap-b {\n position: fixed;\n top: 10px;\n animation: gleapSlideIn .25s ease-out forwards;\n max-width: 800px;\n width: calc(100% - 20px);\n left: 50%;\n z-index: ").concat(2147483699,";\n transform: translateX(-50%);\n border-radius: ").concat(S,"px;\n overflow: hidden;\n box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.15), 0px 5px 5px rgba(0, 0, 0, 0.05);\n }\n\n .gleap-b-shown .gleap-b {\n display: block;\n }\n\n .gleap-image-view {\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n z-index: ").concat(2147483699,";\n background-color: ").concat(h,"cc;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .gleap-image-view-image {\n width: 90%;\n height: auto;\n max-width: 90%;\n max-height: 90%;\n object-fit: contain;\n }\n\n .gleap-image-view-close {\n position: fixed;\n top: 20px;\n right: 20px;\n width: 32px;\n height: 32px;\n opacity: 0.8;\n z-index: ").concat(2147483740,";\n box-shadow: 0px 5px 18px rgba(0, 0, 0, 0.16);\n cursor: pointer;\n }\n\n .gleap-image-view-close:hover {\n opacity: 1;\n }\n\n .gleap-image-view-close svg path {\n fill: ").concat(r,";\n }\n\n [dir=rtl].gleap-frame-container {\n right: auto;\n left: ").concat(i,"px;\n bottom: ").concat(61+s,'px;\n }\n\n .gleap-frame-container--loading iframe {\n opacity: 0;\n }\n\n .gleap-frame-container--loading::before {\n content: " ";\n position: fixed;\n top: 0px;\n left: 0px;\n right: 0px;\n height: 100%;\n max-height: 380px;\n background: linear-gradient(\n 130deg,\n ').concat(g," 0%,\n ").concat(t,' 100%\n );\n }\n \n .gleap-frame-container--loading::after {\n content: " ";\n position: fixed;\n top: 0px;\n left: 0px;\n right: 0px;\n height: 100%;\n height: 100%;\n max-height: 380px;\n background: linear-gradient(\n 180deg,\n transparent 60%,\n ').concat(r,"1A 70%,\n ").concat(r," 100%\n );\n }\n\n .gleap-frame-container--loading-nogradient::before {\n max-height: 340px;\n background: ").concat(t," !important;\n }\n\n .gleap-frame-container--loading-nofade::after {\n display: none !important;\n }\n\n .gleap-frame-container--survey {\n bottom: ").concat(s,"px !important;\n }\n\n .gleap-frame-container--extended {\n max-width: 690px !important;\n }\n\n .gleap-frame-container--survey-full {\n position: fixed;\n top: 0 !important;\n left: 0 !important;\n bottom: 0 !important;\n right: 0 !important;\n width: 100vw !important;\n max-width: 100vw !important;\n height: 100vh;\n height: 100dvh !important;\n background-color: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(6px);\n display: flex !important;\n justify-content: center !important;\n align-items: center !important;\n max-height: 100vh;\n max-height: 100dvh !important;\n border-radius: 0 !important;\n animation-name: none !important;\n }\n\n .gleap-frame-container--survey-full .gleap-frame-container-inner {\n max-width: 640px !important;\n width: calc(100% - 24px);\n border-radius: ").concat(k,"px;\n overflow: hidden;\n }\n\n .gleap-frame-container--classic {\n right: ").concat(i,"px;\n bottom: ").concat(s,"px;\n }\n\n [dir=rtl].gleap-frame-container--classic {\n right: auto;\n left: ").concat(i,"px;\n bottom: ").concat(s,"px;\n }\n\n .gleap-frame-container--no-button {\n bottom: ").concat(s,"px;\n }\n\n [dir=rtl].gleap-frame-container--classic-left {\n bottom: ").concat(s,"px;\n }\n\n .gleap-frame-container--classic-left {\n right: auto;\n left: ").concat(i,"px;\n bottom: ").concat(s,"px;\n }\n\n [dir=rtl].gleap-frame-container--classic-left {\n left: auto;\n right: ").concat(i,"px;\n bottom: ").concat(s,"px;\n }\n\n .gleap-frame-container--modern-left {\n right: auto;\n left: ").concat(i,"px;\n bottom: ").concat(61+s,"px;\n }\n\n [dir=rtl].gleap-frame-container--modern-left {\n left: auto;\n right: ").concat(i,"px;\n bottom: ").concat(61+s,"px;\n }\n\n .gleap-frame-container--animate {\n pointer-events: auto !important;\n }\n\n @keyframes gleapFadeInUp {\n from {\n opacity: 0;\n transform: translate3d(0, 100%, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n\n @keyframes gleapFadeInUpMobile {\n from {\n opacity: 0;\n transform: translate3d(0, 10%, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n\n .gleap-notification-container {\n position: fixed;\n bottom: ").concat(I,"px;\n right: ").concat(i,"px;\n z-index: ").concat(2147483630,";\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n width: 100%;\n max-width: min(340px, 80vw);\n }\n\n .gleap-notification-container--left {\n left: ").concat(4+i,"px;\n right: initial !important;\n }\n\n [dir=rtl].gleap-notification-container {\n left: ").concat(4+i,"px;\n right: initial !important;\n }\n\n [dir=rtl].gleap-notification-container--left {\n left: initial !important;\n right: ").concat(i,"px !important;\n align-items: flex-start !important;\n }\n\n .gleap-notification-container--no-button {\n bottom: ").concat(s,"px;\n }\n\n .gleap-notification-item {\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n\n .gleap-notification-close {\n border-radius: 100%;\n width: 28px;\n height: 28px;\n background-color: ").concat(v,";\n display: flex;\n justify-content: center;\n align-items: center;\n margin-bottom: 8px;\n cursor: pointer;\n visibility: hidden;\n pointer-events: none;\n }\n\n .gleap-notification-container:hover .gleap-notification-close {\n visibility: visible;\n pointer-events: auto;\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-notification-close {\n visibility: visible;\n pointer-events: auto;\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n }\n\n .gleap-notification-close svg {\n width: 45%;\n height: 45%;\n object-fit: contain;\n fill: ").concat(r,";\n }\n\n .gleap-notification-item-checklist-container {\n display: flex;\n animation: fadeIn;\n animation-duration: .45s;\n background-color: ").concat(r,";\n border-radius: ").concat(v,";\n box-sizing: border-box;\n cursor: pointer;\n flex-direction: column;\n overflow: hidden;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ").concat(x,"px;\n margin-bottom: 12px;\n }\n\n .gleap-notification-item-checklist-content {\n align-items: flex-start;\n display: flex;\n flex-direction: column;\n padding: 15px;\n width: 100%;\n width: min(310px, 70vw);\n max-width: min(310px, 70vw);\n }\n\n .gleap-notification-item-checklist-content-title {\n color: ").concat(h,";\n font-size: 15px;\n font-weight: 500;\n line-height: 21px;\n margin-bottom: 10px;\n max-width: 100%;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .gleap-notification-item-checklist-content-progress {\n width: 100%;\n height: 8px;\n border-radius: 8px;\n background-color: ").concat(y,";\n }\n\n .gleap-notification-item-checklist-content-progress-inner {\n height: 100%;\n border-radius: 8px;\n background-color: ").concat(e,";\n }\n\n .gleap-notification-item-checklist-content-next {\n color: ").concat(v,";\n font-size: 15px;\n font-weight: normal;\n line-height: 21px;\n margin-top: 10px;\n max-width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: flex;\n align-items: center;\n }\n\n .gleap-notification-item-checklist-content-next svg {\n height: 18px;\n margin-right: 5px;\n width: auto;\n }\n\n .gleap-notification-item-checklist-content-next b {\n font-size: 15px;\n font-weight: normal;\n color: ").concat(h,";\n }\n\n .gleap-notification-item-news {\n width: 100%;\n }\n\n .gleap-news-pagination {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 10px;\n width: 100%;\n }\n\n .gleap-news-page-indicator {\n font-size: 12px;\n color: ").concat(v,";\n }\n\n .gleap-news-next-button {\n background-color: ").concat(e,";\n color: ").concat(c,";\n border-radius: ").concat(C,"px;\n box-sizing: border-box;\n padding: 5px 10px;\n font-size: 14px;\n font-weight: bold;\n line-height: 21px;\n border: none;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: none !important;\n outline: none !important;^\n }\n\n .gleap-notification-item-news-content {\n align-items: flex-start;\n display: flex;\n flex-direction: column;\n padding: 15px;\n }\n\n .gleap-notification-item-news-preview {\n color: ").concat(v,";\n font-size: 14px;\n line-height: 21px;\n font-weight: 400;\n overflow-wrap: break-word;\n word-break: break-word;\n display: block;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .gleap-notification-item-news-sender {\n display: flex;\n align-items: center;\n color: ").concat(v,";\n font-size: 15px;\n line-height: 21px;\n font-weight: 400;\n }\n \n .gleap-notification-item-news-content-title {\n color: ").concat(h,";\n font-size: 15px;\n font-weight: 500;\n line-height: 21px;\n margin-bottom: 6px;\n max-width: 100%;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n cursor: pointer;\n }\n\n .gleap-notification-item-news-sender img {\n border-radius: 100%;\n height: 20px;\n margin-right: 8px;\n object-fit: cover;\n width: 20px;\n }\n\n [dir=rtl] .gleap-notification-item-news-sender img {\n margin-left: 8px;\n margin-right: 0px !important;\n }\n\n .gleap-notification-item-news-container {\n display: flex;\n animation: fadeIn;\n animation-duration: .45s;\n background-color: ").concat(r,";\n border-radius: ").concat(v,";\n box-sizing: border-box;\n flex-direction: column;\n overflow: hidden;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ").concat(x,"px;\n margin-bottom: 12px;\n }\n\n .gleap-notification-item-news-image {\n background-color: ").concat(v,";\n height: 170px;\n max-height: 170px;\n object-fit: cover;\n width: 100%;\n cursor: pointer;\n }\n \n .gleap-notification-item-news-content-title:hover {\n color: ").concat(e,";\n }\n\n .gleap-notification-item {\n display: flex;\n align-items: flex-end;\n cursor: pointer;\n }\n\n .gleap-notification-item img {\n width: 32px;\n height: 32px;\n min-width: 32px;\n border-radius: 100%;\n object-fit: cover;\n margin-right: 8px;\n margin-bottom: 12px;\n cursor: pointer;\n }\n\n [dir=rtl] .gleap-notification-item img {\n margin-left: 8px;\n margin-right: 0px !important;\n }\n\n .gleap-notification-item-container {\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ").concat(x,"px;\n border-bottom-left-radius: 0px;\n padding: 20px;\n background-color: ").concat(r,";\n margin-bottom: 12px;\n cursor: pointer;\n font-size: 15px;\n line-height: 21px;\n color: ").concat(h,';\n position: relative;\n }\n\n .gleap-notification-item-container::after {\n content: " ";\n position: absolute;\n bottom: 0px;\n width: 0px;\n height: 0px;\n left: -6px;\n border-style: solid;\n border-width: 0px 0px 10px 6px;\n border-color: transparent transparent ').concat(r,";\n }\n\n .gleap-notification-item-sender {\n color: ").concat(v,";\n line-height: 20px;\n }\n\n .gleap-notification-item-content {\n line-height: 20px;\n color: ").concat(h,";\n margin-top: 4px;\n min-width: min(200px, 50vw);\n word-wrap: break-word;\n word-break: break-word;\n }\n\n .gleap-frame-container-inner {\n position: relative;\n width: 100%;\n height: calc(100vh - ").concat(84+s,"px);\n max-height: ").concat(700,'px;\n }\n\n .gleap-frame-container--survey .gleap-frame-container-inner {\n height: calc(100vh - 40px);\n }\n \n .gleap-frame-container-inner:before {\n content: " ";\n position: absolute;\n width: 100%;\n height: calc(100% - ').concat(k,"px);\n top: ").concat(k,"px;\n background-color: ").concat(r,";\n z-index: -1;\n }\n \n .gleap-frame-container iframe {\n height: 100% !important;\n width: 100% !important;\n max-width: 100% !important;\n display: block !important;\n pointer-events: auto !important;\n }\n \n .gleap-frame-container--hidden {\n display: none !important;\n pointer-events: none;\n animation: none !important;\n }\n \n .bb-feedback-button {\n margin: 0px;\n position: fixed;\n bottom: ").concat(s,"px;\n right: ").concat(i,"px;\n border-radius: 30px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n background-color: transparent;\n color: #000000;\n z-index: ").concat(2147483630,";\n box-sizing: border-box;\n display: flex;\n align-items: center;\n padding: 0px;\n }\n\n [dir=rtl].bb-feedback-button {\n bottom: ").concat(s,"px;\n right: auto;\n left: ").concat(i,"px;\n }\n \n .bb-feedback-button--bottomleft {\n bottom: ").concat(s,"px;\n right: auto;\n left: ").concat(i,"px;\n }\n\n [dir=rtl].bb-feedback-button--bottomleft {\n bottom: ").concat(s,"px;\n right: ").concat(i,'px;\n left: auto;\n }\n \n .bb-feedback-button--disabled {\n display: none !important;\n }\n\n .bb-feedback-button--hidden {\n display: none !important;\n }\n \n .bb-feedback-button-text {\n padding: 8px 12px;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n background-color: #fff;\n border-radius: 8px;\n box-shadow: 0px 0px 14px 0px rgba(0, 0, 0, 0.15);\n position: relative;\n z-index: 99;\n }\n \n .bb-feedback-button-text:before {\n content: "";\n position: absolute;\n box-shadow: rgba(0, 0, 0, 0.04) 6px 6px 5px;\n transform: rotate(315deg);\n bottom: 16px;\n right: -4px;\n border-width: 10px;\n border-style: solid;\n border-color: transparent #fff #fff transparent;\n }\n \n .bb-feedback-button--bottomleft .bb-feedback-button-text:before {\n display: none;\n }\n \n .bb-feedback-button-text:after {\n content: "";\n position: absolute;\n bottom: 12px;\n right: 0px;\n background-color: #fff;\n width: 5px;\n height: 30px;\n }\n \n .bb-feedback-button-text-title {\n font-family: sans-serif;\n font-size: 14px;\n color: #666;\n line-height: 18px;\n max-width: 220px;\n }\n \n .bb-feedback-button-text-title b {\n color: #000000;\n font-weight: 600;\n }\n\n .bb-notification-bubble {\n position: absolute;\n top: -5px;\n right: -5px;\n min-width: 12px;\n padding: 0px 4px;\n height: 20px;\n min-width: 20px;\n border-radius: 20px;\n background-color: red;\n color: #fff;\n font-size: 11px;\n font-family: sans-serif;\n text-align: center;\n line-height: 20px;\n }\n\n .bb-notification-bubble--hidden {\n display: none;\n }\n \n .bb-feedback-button-icon {\n width: 48px;\n height: 48px;\n border-radius: 48px;\n background-color: #485bff;\n transition: box-shadow, transform 0.2s ease-in-out;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n position: relative;\n }\n \n .bb-feedback-button-classic {\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n top: 50%;\n right: 0px;\n position: fixed;\n transform: rotate(-90deg) translate(50%, -50%);\n transform-origin: 100% 50%;\n padding: 9px 20px;\n text-align: center;\n background-color: #485bff;\n border-top-left-radius: 8px;\n border-top-right-radius: 8px;\n font-family: sans-serif;\n font-size: 16px;\n color: #fff;\n box-shadow: 0px 0px 14px 0px rgba(0, 0, 0, 0.25);\n }\n\n [dir=rtl].bb-feedback-button .bb-feedback-button-classic {\n top: 50%;\n left: 0px;\n right: auto;\n transform: rotate(90deg) translate(-50%, -100%);\n transform-origin: 0% 0%;\n }\n \n .bb-feedback-button-classic--left {\n top: 50%;\n left: 0px;\n right: auto;\n transform: rotate(90deg) translate(-50%, -100%);\n transform-origin: 0% 0%;\n }\n\n [dir=rtl].bb-feedback-button .bb-feedback-button-classic--left {\n top: 50%;\n right: 0px;\n left: auto;\n transform: rotate(-90deg) translate(50%, -50%);\n transform-origin: 100% 50%;\n }\n \n .bb-feedback-button-classic--bottom {\n top: auto;\n bottom: 0px;\n transform: none;\n right: ').concat(i,"px;\n left: auto;\n }\n \n [dir=rtl].bb-feedback-button .bb-feedback-button-classic--bottom {\n top: auto;\n bottom: 0px;\n transform: none;\n left: ").concat(i,"px;\n right: auto;\n }\n\n .bb-feedback-button--classic-button-style {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n \n .bb-feedback-button--open.bb-feedback-button--classic-button-style {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: bbFadeOutRight;\n }\n \n .bb-feedback-button .bb-logo-logo {\n position: absolute;\n width: 30px;\n height: 30px;\n top: 9px;\n left: 9px;\n object-fit: contain;\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-name: bbZoomIn;\n }\n \n .bb-feedback-button .bb-logo-arrowdown {\n position: absolute;\n width: 14px;\n height: 14px;\n top: 17px;\n left: 17px;\n object-fit: contain;\n animation-duration: 0.3s;\n animation-fill-mode: both;\n }\n \n .bb-feedback-button .bb-logo-arrowdown {\n animation-name: bbZoomOut;\n }\n \n .bb-feedback-button--open .bb-logo-arrowdown {\n animation-name: bbZoomIn;\n }\n \n .bb-feedback-button--open .bb-logo-logo {\n animation-name: bbZoomOut;\n }\n \n .bb-feedback-button-icon:hover {\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.25), 0px 0px 20px rgba(0, 0, 0, 0.2);\n transform: scale(1.1);\n }\n \n .bb-feedback-button--open .bb-feedback-button-text {\n animation-name: bbFadeOutDown;\n }\n \n .bb-feedback-button--open .bb-feedback-button-icon {\n display: flex;\n }\n \n .bb-capture-svg {\n position: fixed;\n z-index: ").concat(2147483614,";\n top: 0px;\n left: 0px;\n right: 0px;\n width: 100%;\n height: 100%;\n padding: 0px;\n margin: 0px;\n cursor: crosshair;\n }\n\n .bb-capture-svg--preview {\n cursor: auto !important;\n }\n \n .bb-rec-on-circle {\n animation-name: bbRecIconFade;\n animation-duration: 2s;\n animation-iteration-count: infinite;\n animation-direction: alternate;\n }\n \n .bb-rec-on-cont {\n animation-name: bbRecIconContFade;\n animation-duration: 2s;\n animation-iteration-count: infinite;\n animation-direction: alternate;\n }\n \n .bb-capture-editor-drag-info {\n position: fixed;\n top: -200px;\n left: 0px;\n z-index: ").concat(2147483616,";\n transition: opacity 0.3s ease-in-out;\n }\n \n .bb-capture-editor-drag-info svg {\n width: 24px;\n height: 24px;\n }\n \n .bb-capture-editor-borderlayer {\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n border: 4px solid ").concat(e,";\n cursor: crosshair;\n z-index: ").concat(2147483610,";\n box-sizing: border-box;\n pointer-events: none;\n }\n \n .bb-capture-editor-notrecording .bb-capture-editor-borderlayer {\n background-color: rgba(0, 0, 0, 0.8);\n }\n\n .bb-capture-editor-recording .bb-capture-editor-borderlayer {\n border: 4px solid #eb144c !important;\n }\n \n .bb-capture-editor-recording .bb-capture-dismiss {\n display: none;\n }\n \n .bb-capture-editor-item-inactive {\n opacity: 0.3;\n cursor: not-allowed !important;\n }\n \n .bb-capture-editor-notrecording .bb-capture-toolbar-drawingitem {\n opacity: 0.3;\n cursor: not-allowed !important;\n }\n \n .bb-capture-editor-notrecording .bb-capture-editor-drag-info {\n display: none;\n }\n \n .bb-capture-editor-notrecording .bb-capture-svg {\n pointer-events: none !important;\n }\n \n .bb-capture-toolbar {\n position: fixed;\n top: 20px;\n left: 50%;\n transform: translateX(-50%);\n z-index: ").concat(2147483618,";\n background-color: #fff;\n padding: 5px;\n display: flex;\n align-items: center;\n border-radius: 8px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n transition: opacity 0.3s ease-in-out;\n }\n \n .bb-capture-dismiss {\n position: fixed;\n top: 0px;\n right: 0px;\n z-index: ").concat(2147483618,";\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n width: 36px;\n height: 36px;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: ").concat(e,";\n border-bottom-left-radius: ").concat(C,"px;\n }\n\n [dir=rtl] .bb-capture-dismiss {\n top: 0px;\n left: 0px;\n right: auto;\n border-bottom-left-radius: 0px !important;\n border-bottom-right-radius: ").concat(C,"px;\n }\n \n .bb-capture-dismiss svg path {\n fill: ").concat(c,';\n }\n \n .bb-capture-dismiss svg {\n width: 20px;\n height: 20px;\n object-fit: contain;\n }\n \n .bb-capture-button-next {\n font-family: sans-serif;\n box-sizing: border-box;\n font-weight: 600;\n text-align: center;\n width: auto;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n margin: 0px;\n line-height: 36px;\n padding: 0px 12px;\n font-size: 15px;\n margin-left: 12px;\n }\n\n [dir=rtl].bb-capture-editor .bb-capture-button-next {\n margin-left: auto;\n margin-right: 12px;\n }\n \n .bb-capture-toolbar-item-spacer {\n width: 1px;\n height: 38px;\n min-width: 1px;\n margin: 0px 5px;\n }\n \n .bb-capture-toolbar-item {\n width: 42px;\n height: 38px;\n min-width: 42px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n position: relative;\n margin-right: 5px;\n }\n\n .drag-handle-item {\n cursor: grab !important;\n width: 34px;\n min-width: 34px;\n }\n\n .drag-handle-item svg {\n width: 18px !important;\n height: 18px !important;\n }\n \n .bb-capture-toolbar-item svg {\n width: 23px;\n height: 23px;\n object-fit: contain;\n }\n \n .bb-capture-toolbar-item-selectedcolor {\n border-radius: 100%;\n width: 20px;\n height: 20px;\n background-color: #db4035;\n }\n \n .bb-capture-toolbar-item[data-type="undo"] svg {\n width: 18px;\n height: 18px;\n }\n \n .bb-capture-toolbar-item[data-active="true"] {\n position: relative;\n }\n \n .bb-capture-preview {\n display: none;\n background-color: rgba(0, 0, 0, 0.6);\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n justify-content: center;\n align-items: center;\n z-index: ').concat(2147483620,";\n }\n \n .bb-capture-preview-inner {\n background-color: #fff;\n padding: 0px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n border-radius: 8px;\n flex-direction: column;\n max-width: 640px;\n width: 100%;\n margin: 20px;\n }\n \n .bb-capture-preview-inner video {\n border-radius: 8px 8px 0px 0px;\n display: block;\n border: 0px;\n outline: none;\n width: 100%;\n max-height: 60vh;\n }\n \n .bb-capture-preview-buttons {\n display: flex;\n justify-content: space-between;\n padding: 14px;\n }\n \n .bb-capture-preview-retrybutton {\n font-family: sans-serif;\n border-radius: 21px;\n box-sizing: border-box;\n padding: 12px 26px;\n font-size: 16px;\n line-height: 19px;\n font-weight: 600;\n text-align: center;\n margin-top: 0px;\n margin-bottom: 0px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-preview-sendbutton {\n font-family: sans-serif;\n border-radius: 21px;\n box-sizing: border-box;\n padding: 12px 26px;\n font-size: 16px;\n line-height: 19px;\n font-weight: 600;\n text-align: center;\n margin-top: 0px;\n margin-bottom: 0px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-preview-retrybutton:hover,\n .bb-capture-preview-sendbutton:hover {\n opacity: 0.9;\n }\n \n .bb-capture-toolbar-item-recording {\n margin-right: 0px;\n }\n \n .bb-capture-toolbar-item-recording svg {\n width: 33px;\n height: 33px;\n }\n \n .bb-capture-toolbar-item-colorpicker {\n position: fixed;\n top: 70px;\n left: 50%;\n transform: translateX(-50%);\n z-index: ").concat(2147483618,';\n background-color: #fff;\n display: none;\n padding: 10px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n border-radius: 8px;\n }\n \n .bb-capture-toolbar-item-color {\n width: 20px;\n height: 20px;\n border-radius: 100%;\n margin-right: 12px;\n box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.15);\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-toolbar-item-color:hover {\n box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.25);\n }\n \n .bb-capture-toolbar-item-color:last-of-type {\n margin-right: 0px;\n }\n \n [dir=rtl].bb-capture-editor .bb-capture-toolbar-item-color {\n margin-right: auto;\n margin-left: 12px;\n }\n \n [dir=rtl].bb-capture-editor .bb-capture-toolbar-item-color:last-of-type {\n margin-right: auto;\n margin-left: 0px;\n }\n \n .bb-capture-toolbar-item-recording[data-active="true"] svg:first-of-type {\n display: none;\n }\n \n .bb-capture-toolbar-item-recording[data-active="true"] svg:nth-of-type(2) {\n display: block;\n }\n \n .bb-capture-toolbar-item-recording[data-active="false"] svg:first-of-type {\n display: block;\n }\n \n .bb-capture-toolbar-item-recording[data-active="false"] svg:nth-of-type(2) {\n display: none;\n }\n \n .bb-capture-toolbar-item--active {\n background-color: #eee;\n }\n \n .bb-capture-toolbar-item:hover svg {\n opacity: 1;\n }\n \n .bb-capture-toolbar-item--active {\n background-color: #f8f8f8;\n }\n \n .bb-capture-toolbar-item--active svg {\n opacity: 1;\n }\n \n .bb-capture-toolbar-item--inactivecross::before {\n content: "";\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n height: 3px;\n width: 26px;\n margin: auto;\n border-radius: 4px;\n background-color: #e80000;\n transform: rotate(45deg);\n }\n \n .bb-capture-toolbar-item--inactivecross svg {\n fill: #eee;\n }\n \n .bb-capture-toolbar-item-timer {\n text-align: left;\n line-height: 32px;\n font-size: 14px;\n font-family: sans-serif;\n margin: 5px;\n min-width: 40px;\n display: none;\n }\n \n .bb-capture-toolbar-item .bb-tooltip {\n background-color: #555;\n color: #fff;\n visibility: hidden;\n font-size: 14px;\n font-family: sans-serif;\n text-align: center;\n padding: 5px 10px;\n position: absolute;\n z-index: 1;\n top: 45px;\n left: 0px;\n transform: translateX(calc(-50% + 21px));\n opacity: 0;\n transition: opacity 0.3s;\n white-space: nowrap;\n }\n \n .bb-capture-toolbar-item .bb-tooltip::after {\n content: "";\n position: absolute;\n bottom: 100%;\n left: 50%;\n margin-left: -5px;\n border-width: 5px;\n border-style: solid;\n transform: rotate(180deg);\n border-color: #555 transparent transparent transparent;\n }\n \n .bb-capture-toolbar-item:hover .bb-tooltip {\n visibility: visible;\n opacity: 1;\n }\n \n .bb-capture-options {\n display: none;\n }\n \n .bb-capture-options--active {\n display: flex;\n }\n\n @keyframes bbFadeOutRight {\n from {\n opacity: 1;\n }\n \n to {\n opacity: 0;\n }\n }\n \n @keyframes bbFadeOutDown {\n from {\n opacity: 1;\n }\n \n to {\n opacity: 0;\n transform: translate3d(0, 100%, 0);\n }\n }\n \n @keyframes bbFadeInOpacity {\n from {\n opacity: 0;\n }\n \n to {\n opacity: 1;\n }\n }\n \n @keyframes bbZoomOut {\n from {\n opacity: 1;\n }\n \n 50% {\n opacity: 0;\n transform: scale3d(0.3, 0.3, 0.3);\n }\n \n to {\n opacity: 0;\n }\n }\n \n @keyframes bbZoomIn {\n from {\n opacity: 0;\n transform: scale3d(0.3, 0.3, 0.3);\n }\n \n 50% {\n opacity: 1;\n }\n }\n \n @keyframes bbRecIconContFade {\n 0% {\n fill: #b10802;\n }\n 50% {\n fill: #ff0000;\n }\n 100% {\n fill: #b10802;\n }\n } \n .bb-capture-preview-retrybutton {\n color: ').concat(h,";\n border-radius: ").concat(w,"px;\n background-color: ").concat(y,";\n }\n .bb-capture-preview-retrybutton:hover {\n background-color: ").concat(b,";\n }\n @keyframes bb-suc-fill {\n 100% {\n box-shadow: inset 0px 0px 0px 30px ").concat(e,";\n }\n }\n .bb-capture-toolbar-item-spacer {\n background-color: ").concat(y,";\n }\n .bb-tooltip {\n border-radius: ").concat(S,"px;\n }\n @keyframes bbRecIconFade {\n 0% {\n fill: transparent;\n }\n 50% {\n fill: ").concat(b,";\n }\n 100% {\n fill: transparent;\n }\n }\n .bb-capture-preview-sendbutton {\n color: ").concat(c,";\n background-color: ").concat(e,";\n border-radius: ").concat(w,"px;\n }\n .bb-capture-button-next {\n color: ").concat(c,";\n background-color: ").concat(e,";\n border-radius: ").concat(C,"px;\n }\n .bb-capture-preview-inner {\n background-color: ").concat(r,";\n border-radius: ").concat(S,"px;\n }\n .bb-capture-toolbar-item-timer {\n color: ").concat(v,";\n }\n .bb-svg-path {\n fill: ").concat(h,";\n }\n .bb-capture-toolbar-item {\n border-radius: ").concat(S,"px;\n }\n .bb-capture-toolbar {\n background-color: ").concat(r,";\n border-radius: ").concat(S,"px;\n }\n .bb-capture-toolbar-item-colorpicker {\n background-color: ").concat(r,";\n }\n .bb-capture-toolbar-item--active {\n background-color: ").concat(y,";\n }\n .bb-feedback-button-classic {\n border-top-left-radius: ").concat(S,"px;\n border-top-right-radius: ").concat(S,"px;\n }\n .bb-logo-logo--default path {\n fill: ").concat(p,";\n }\n .bb-logo-arrowdown {\n fill: ").concat(p,";\n }\n .bb-feedback-button-icon {\n background-color: ").concat(n,";\n }\n .bb-feedback-button-classic {\n background-color: ").concat(n,";\n color: ").concat(p,";\n }\n\n @media only screen and (max-width: 450px) {\n [dir=rtl].gleap-frame-container,\n .gleap-frame-container {\n left: 0px;\n right: 0px;\n width: 100vw;\n max-width: 100vw;\n min-height: 100vh;\n max-height: 100vh;\n min-height: 100dvh !important;\n max-height: 100dvh !important;\n top: 0px;\n bottom: 0px;\n border-radius: 0px;\n animation-name: gleapFadeInUpMobile;\n }\n\n .gleap-frame-container-inner {\n width: 100vw;\n height: 100%;\n }\n\n .gleap-frame-container:not(.gleap-frame-container--survey):not(.gleap-frame-container--survey-full) .gleap-frame-container-inner {\n max-height: calc(var(--glvh, 1vh) * 100) !important;\n }\n\n .gleap-frame-container--survey {\n height: auto !important;\n top: initial !important;\n bottom: 0px !important;\n min-height: initial !important;\n }\n\n .gleap-frame-container--survey .gleap-frame-container-inner {\n height: 100vh !important;\n }\n\n .bb-tooltip {\n display: none !important;\n }\n \n .bb-capture-toolbar-item-colorpicker {\n top: 75px;\n }\n \n .bb-capture-button-next {\n margin-left: auto;\n }\n \n .bb-capture-dismiss {\n display: none;\n }\n \n .bb-capture-toolbar {\n top: 15px;\n right: 15px;\n left: 15px;\n width: auto;\n transform: none;\n }\n\n .bb-capture-editor-drag-info {\n display: none;\n }\n \n .bb-capture-editor-borderlayer {\n border-width: 4px;\n }\n }\n \n @media print {\n .bb-feedback-button {\n display: none !important;\n }\n \n .gleap-frame-container {\n display: none !important;\n }\n }\n\n .gleap-tour-sender {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n margin-bottom: 10px;\n }\n\n .gleap-tour-sender-image {\n width: 32px;\n height: 32px;\n border-radius: 32px;\n margin-right: 10px;\n background-size: cover;\n background-repeat: no-repeat;\n }\n\n .gleap-tour-popover.gleap-tour-popover-post {\n min-width: 550px;\n max-width: 550px;\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-tour-popover.gleap-tour-popover-post {\n min-width: calc(100vw - 40px);\n max-width: calc(100vw - 40px);\n }\n }\n\n .gleap-tour-message,\n .gleap-tour-message p,\n .gleap-tour-message ul {\n color: ").concat(h,";\n }\n\n .gleap-tour-message h2 {\n font-weight: 600;\n font-size: 22px;\n }\n\n .gleap-tour-message h3 {\n font-weight: 600;\n font-size: 18px;\n }\n\n .gleap-tour-message p {\n line-height: 1.3;\n margin-bottom: 10px !important;\n margin-top: 10px !important;\n }\n\n .gleap-tour-message ul {\n line-height: 1.3;\n padding-left: 20px;\n margin-top: 10px !important;\n margin-bottom: 10px !important;\n }\n\n .gleap-tour-message {\n max-height: calc(80vh - 100px) !important;\n overflow-y: auto;\n min-width: 270px;\n }\n\n .gleap-tour-message::-webkit-scrollbar {\n width: 5px;\n }\n\n .gleap-tour-message::-webkit-scrollbar-track {\n border-radius: 0px;\n }\n \n .gleap-tour-message::-webkit-scrollbar-thumb {\n background: ").concat(b,"; \n border-radius: 5px;\n }\n\n .gleap-tour-message::-webkit-scrollbar-thumb:hover {\n background: ").concat(v,";\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-tour-message {\n min-width: auto !important;\n }\n }\n\n .gleap-tour-message iframe {\n width: 100%;\n height: 300px;\n margin-top: 10px;\n margin-bottom: 10px;\n border: none;\n outline: none;\n display: block;\n }\n\n .gleap-tour-sender-name {\n font-size: 15px;\n }\n\n .gleap-tour-video {\n width: 100%;\n max-width: 100%;\n }\n\n .gleap-tour-video-svg--fullscreen {\n width: 100% !important;\n height: 100% !important;\n top: 0px !important;\n left: 0px !important;\n right: 0px !important;\n bottom: 0px !important;\n }\n\n .gleap-tour-video--playing .gleap-tour-video-playpause {\n opacity: 0;\n }\n \n .gleap-tour-video--playing:hover .gleap-tour-video-playpause {\n opacity: 1;\n }\n\n .gleap-tour-popover-video-pointer {\n padding: 0px !important;\n border-radius: 8px;\n position: relative;\n background-color: transparent !important;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-footer {\n position: absolute;\n top: 0px;\n left: 20px;\n right: 20px;\n opacity: 0;\n transition: opacity 200ms ease-in-out;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-footer button {\n padding: 5px 12px;\n }\n\n .gleap-tour-popover-video-pointer.gleap-tour-popover-can-close .gleap-tour-popover-footer {\n right: 40px !important;\n }\n\n .gleap-tour-popover-video-pointer:hover .gleap-tour-popover-footer {\n opacity: 1;\n }\n\n .gleap-tour-popover-pointer.gleap-tour-popover-no-sender .gleap-tour-message {\n padding-right: 20px;\n }\n\n .gleap-tour-video video {\n width: 100%;\n max-width: 100%;\n height: auto;\n border: none;\n outline: none;\n display: block;\n border-radius: 8px;\n }\n\n .gleap-admin-collapse-ui {\n z-index: ").concat(2147483635,";\n cursor: pointer;\n position: fixed;\n bottom: 75px;\n right: 20px;\n width: 32px;\n height: 32px;\n border-radius: 100%;\n background-color: #fff;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: rgba(0, 0, 0, 0.16) 0px 10px 36px 0px, rgba(0, 0, 0, 0.06) 0px 0px 0px 1px;\n }\n\n .gleap-admin-collapse-ui svg {\n width: 20px;\n height: 14px;\n fill: #000 !important;\n }\n\n .gleap-admin-collapse-ui-active {\n bottom: 20px !important;\n }\n\n .gleap-admin-collapse-ui-active svg {\n transform: rotate(180deg);\n }\n\n .gleap-admin-frame-container-active {\n display: none !important;\n }\n\n .gleap-admin-frame-container {\n position: fixed;\n bottom: 0px;\n left: 0px;\n right: 0px;\n width: 100vw;\n z-index: ").concat(2147483640,";\n }\n\n .gleap-admin-frame {\n width: 100%;\n height: 100% !important;\n border: none;\n outline: none;\n display: block;\n }\n \n .gleap-tour-message .linktype-link {\n display: inline-block !important;\n background-color: transparent !important;\n color: ").concat(n," !important;\n }\n\n .gleap-tooltip .linktype-button,\n .gleap-tour-message .linktype-button {\n display: inline-block !important;\n border-radius: 5px;\n box-sizing: border-box;\n padding: 10px 20px !important;\n text-decoration: none !important;\n background-color: ").concat(n," !important;\n color: ").concat(p," !important;\n }\n\n .gleap-tour-message img {\n width: 100%;\n max-width: 100%;\n min-height: 260px;\n height: auto;\n margin-top: 10px;\n margin-bottom: 10px;\n object-fit: cover;\n }\n\n .gleap-tour-active .gleap-tour-overlay {\n pointer-events: none;\n }\n \n .gleap-tour-active * {\n pointer-events: none;\n }\n \n .gleap-tour-active .gleap-tour-active-element,\n .gleap-tour-active .gleap-tour-active-element *,\n .gleap-tour-popover,\n .gleap-tour-popover * {\n pointer-events: auto;\n }\n \n @keyframes animate-fade-in {\n 0% {\n opacity: 0;\n }\n \n to {\n opacity: 1;\n }\n }\n \n .gleap-tour-fade .gleap-tour-overlay {\n animation: animate-fade-in 200ms ease-in-out;\n }\n \n .gleap-tour-fade .gleap-tour-popover {\n animation: animate-fade-in 200ms;\n }\n\n .gleap-tour-video-playpause {\n position: absolute;\n bottom: 8px;\n left: 8px;\n width: 32px;\n height: 32px;\n padding: 4px;\n background-color: rgba(0,0,0,0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border-radius: 8px;\n transition: opacity 200ms ease-in-out;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-arrow {\n display: none !important;\n }\n\n .gleap-tour-video-playpause svg {\n width: 34px;\n height: auto;\n fill: #fff;\n }\n \n /* Popover styles */\n .gleap-tour-popover {\n all: unset;\n box-sizing: border-box;\n color: #2d2d2d;\n margin: 0;\n padding: 15px;\n border-radius: ").concat(S,'px;\n min-width: 250px;\n max-width: 300px;\n box-shadow: 0 1px 10px #0006;\n z-index: 1000000000;\n position: fixed;\n top: 0;\n right: 0;\n background-color: #fff;\n }\n \n .gleap-tour-popover * {\n font-family: "Helvetica Neue", Inter, ui-sans-serif, "Apple Color Emoji", Helvetica, Arial, sans-serif;\n }\n \n .gleap-tour-popover-title {\n font: 19px / normal sans-serif;\n font-weight: 700;\n display: block;\n position: relative;\n line-height: 1.5;\n zoom: 1;\n margin: 0;\n }\n \n .gleap-tour-popover-close-btn {\n all: unset;\n position: absolute;\n top: 5px;\n right: 5px;\n width: 32px;\n height: 32px;\n cursor: pointer;\n font-size: 30px;\n font-weight: 500;\n line-height: 32px;\n color: #d2d2d2;\n z-index: 1;\n text-align: center;\n transition: color;\n transition-duration: 200ms;\n }\n \n .gleap-tour-popover-close-btn:hover,\n .gleap-tour-popover-close-btn:focus {\n color: #2d2d2d;\n }\n \n .gleap-tour-popover-title[style*="block"] + .gleap-tour-popover-description {\n margin-top: 5px;\n }\n \n .gleap-tour-popover-description {\n margin-bottom: 0;\n font: 15px / normal sans-serif;\n line-height: 1.5;\n font-weight: 400;\n zoom: 1;\n }\n \n .gleap-tour-popover-footer {\n margin-top: 15px;\n text-align: right;\n zoom: 1;\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n \n .gleap-tour-popover-progress-text {\n font-size: 13px;\n font-weight: 400;\n color: #727272;\n zoom: 1;\n }\n \n .gleap-tour-popover-footer button {\n background-color: ').concat(e,";\n color: ").concat(c,";\n border-radius: ").concat(C,"px;\n box-sizing: border-box;\n padding: 10px 20px;\n font-size: 14px;\n font-weight: bold;\n line-height: 21px;\n border: none;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: none !important;\n outline: none !important;\n }\n\n .gleap-tour-popover-prev-btn {\n color: ").concat(h," !important;\n background-color: ").concat(y," !important;\n margin-right: 3px;\n }\n\n .gleap-tour-popover-prev-btn:hover {\n background-color: ").concat(e,"22 !important;\n color: ").concat(e,' !important;\n }\n \n .gleap-tour-popover-footer .gleap-tour-popover-btn-disabled {\n opacity: 0.5;\n pointer-events: none;\n }\n \n /* Disable the scrolling of parent element if it has an active element*/\n :not(body):has(> .gleap-tour-active-element) {\n overflow: hidden !important;\n }\n \n .gleap-tour-no-interaction, .gleap-tour-no-interaction * {\n pointer-events: none !important;\n }\n \n .gleap-tour-popover-navigation-btns {\n display: flex;\n flex-grow: 1;\n justify-content: flex-end;\n }\n \n .gleap-tour-popover-navigation-btns button + button {\n margin-left: 4px;\n }\n \n .gleap-tour-popover-arrow {\n content: "";\n position: absolute;\n border: 5px solid #fff;\n }\n \n .gleap-tour-popover-arrow-side-over {\n display: none;\n }\n \n /** Popover Arrow Sides **/\n .gleap-tour-popover-arrow-side-left {\n left: 100%;\n border-right-color: transparent;\n border-bottom-color: transparent;\n border-top-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-right {\n right: 100%;\n border-left-color: transparent;\n border-bottom-color: transparent;\n border-top-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-top {\n top: 100%;\n border-right-color: transparent;\n border-bottom-color: transparent;\n border-left-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-bottom {\n bottom: 100%;\n border-left-color: transparent;\n border-top-color: transparent;\n border-right-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-center {\n display: none;\n }\n \n /* Left/Start + Right/Start */\n .gleap-tour-popover-arrow-side-left.gleap-tour-popover-arrow-align-start,\n .gleap-tour-popover-arrow-side-right.gleap-tour-popover-arrow-align-start {\n top: 15px;\n }\n \n /* Top/Start + Bottom/Start */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-start,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-start {\n left: 15px;\n }\n \n /* End/Left + End/Right */\n .gleap-tour-popover-arrow-align-end.gleap-tour-popover-arrow-side-left,\n .gleap-tour-popover-arrow-align-end.gleap-tour-popover-arrow-side-right {\n bottom: 15px;\n }\n \n /* Top/End + Bottom/End */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-end,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-end {\n right: 15px;\n }\n \n /* Left/Center + Right/Center */\n .gleap-tour-popover-arrow-side-left.gleap-tour-popover-arrow-align-center,\n .gleap-tour-popover-arrow-side-right.gleap-tour-popover-arrow-align-center {\n top: 50%;\n margin-top: -5px;\n }\n \n /* Top/Center + Bottom/Center */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-center,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-center {\n left: 50%;\n margin-left: -5px;\n }\n \n /* No arrow */\n .gleap-tour-popover-arrow-none {\n display: none;\n } \n\n /* Modal styles */\n .gleap-modal-wrapper {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: ').concat(2147483640,";\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .gleap-modal-backdrop {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.5);\n z-index: ").concat(2147483641,";\n }\n\n .gleap-modal {\n position: relative;\n width: 90%;\n max-width: 600px;\n max-height: 90vh;\n z-index: ").concat(2147483700,";\n background-color: ").concat(r,";\n border-radius: ").concat(k,"px;\n overflow: hidden;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-name: gleapFadeInUp;\n }\n\n .gleap-modal-frame {\n width: 100%;\n border: none;\n display: block;\n outline: none;\n }\n\n body.gleap-modal-open {\n overflow: hidden;\n }\n\n @keyframes gleapFadeInUp {\n from {\n opacity: 0;\n transform: translate3d(0, 20px, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n "),E=document.querySelector(".gleap-styles");E&&E.remove();var T=document.createElement("style");T.innerHTML=O,T.className="gleap-styles",document.body.appendChild(T)}(e,t,n,r,o,i,s,l)}))}},{key:"sendSilentCrashReport",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"MEDIUM",o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{screenshot:!0,replays:!0,attachments:!0};return e.sendSilentCrashReportWithFormData({description:t},n,o)}},{key:"sendSilentCrashReportWithFormData",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"MEDIUM",o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{screenshot:!0,replays:!0,attachments:!0};if(!this.silentCrashReportSent){this.silentCrashReportSent=!0,setTimeout((function(){t.silentCrashReportSent=!1}),1e4);var r=o?k(o):{},i=et.getInstance();if(i.ready){var a=e||{};i.session.email&&(a.reportedBy=i.session.email),new _t("CRASH",n,a,!0,r).sendFeedback().then((function(){})).catch((function(e){}))}}}},{key:"showSurvey",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"survey";e.startFeedbackFlowWithOptions(t,{hideBackButton:!0,format:n},!0)}},{key:"startClassicForm",value:function(t,n){e.startFeedbackFlowWithOptions(t,{hideBackButton:!n})}},{key:"startFeedbackFlow",value:function(t,n){e.startFeedbackFlowWithOptions(t,{hideBackButton:!n})}},{key:"startFeedbackFlowWithOptions",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=n.autostartDrawing,i=n.hideBackButton,a=n.format;if(et.getInstance().ready){e.getInstance().setGlobalDataItem("snapshotPosition",{x:window.scrollX,y:window.scrollY});var s="start-feedbackflow";o&&(s="start-survey"),Vt.getInstance().setAppMode(o?a:"widget"),Vt.getInstance().sendMessage({name:s,data:{flow:t,hideBackButton:i,format:a}},!0),r?Vt.getInstance().showDrawingScreen("screenshot"):Vt.getInstance().showWidget()}}},{key:"openConversations",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-conversations",data:{hideBackButton:!e}},!0),Vt.getInstance().showWidget()}},{key:"openConversation",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e&&(Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-conversation",data:{shareToken:e,hideBackButton:!t}},!0),Vt.getInstance().showWidget())}},{key:"startConversation",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];e.startBot("",t)}},{key:"startBot",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"start-bot",data:{botId:e||"",hideBackButton:!t}},!0),Vt.getInstance().showWidget()}},{key:"openHelpCenterCollection",value:function(e){e&&(Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-help-collection",data:{collectionId:e}},!0),Vt.getInstance().showWidget())}},{key:"openHelpCenterArticle",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e&&(Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-help-article",data:{articleId:e,hideBackButton:!t}},!0),Vt.getInstance().showWidget())}},{key:"openHelpCenter",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-helpcenter",data:{hideBackButton:!e}},!0),Vt.getInstance().showWidget()}},{key:"searchHelpCenter",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e&&(Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-helpcenter-search",data:{term:e,hideBackButton:!t}},!0),Vt.getInstance().showWidget())}},{key:"openNewsArticle",value:function(e){e&&(Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-news-article",data:{id:e}},!0),Vt.getInstance().showWidget())}},{key:"openChecklists",value:function(){Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-checklists",data:{}},!0),Vt.getInstance().showWidget()}},{key:"startChecklist",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;return!!e&&(Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"start-checklist",data:Mm({outboundId:e,hideBackButton:!t},n?{sharedKey:n}:{})},!0),Vt.getInstance().showWidget(),!0)}},{key:"openChecklist",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e&&(Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-checklist",data:{id:e,hideBackButton:!t}},!0),Vt.getInstance().showWidget())}},{key:"getChecklistData",value:function(e,t){if(!e)return Promise.reject(new Error("outboundId is required"));var n=D.getInstance();return n.validateChecklist(e,t).then((function(e){return n.fetchChecklist(e)}))}},{key:"openNews",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-news",data:{hideBackButton:!e}},!0),Vt.getInstance().showWidget()}},{key:"openFeatureRequests",value:function(){Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-feature-requests",data:{}},!0),Vt.getInstance().showWidget()}},{key:"startProductTour",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this;et.getInstance().startProductTourConfig(e).then((function(o){var r;!t||null==o||!o.startURL||null!==(r=window)&&void 0!==r&&null!==(r=r.location)&&void 0!==r&&null!==(r=r.href)&&void 0!==r&&r.includes(null==o?void 0:o.baseURL)?n.startProductTourWithConfig(e,o,!0):window.location.href="".concat(o.startURL,"?gleap_tour=").concat(e,"&gleap_tour_delay=1")})).catch((function(e){}))}},{key:"checkForUncompletedTour",value:function(){var e=mm.getInstance().loadUncompletedTour();e&&mm.getInstance().startWithConfig(e.tourId,e.tourData,500)}},{key:"startProductTourWithConfig",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];mm.getInstance().startWithConfig(e,t,0,n)}},{key:"showBanner",value:function(e){try{Bh.getInstance().showBanner(e)}catch(t){}}},{key:"showModal",value:function(e){try{Gh.getInstance().showModal(e)}catch(t){}}},{key:"showNotification",value:function(e){Mh.getInstance().showNotification(e)}}],n&&Lm(t.prototype,n),o&&Lm(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();if(Rm(Dm,"invoked",!0),Rm(Dm,"silentCrashReportSent",!1),Rm(Dm,"instance",void 0),"undefined"!=typeof window){var Nm=window.GleapActions;if(Nm&&Nm.length>0)for(var jm=0;jm{var e={d:(t,n)=>{for(var o in n)e.o(n,o)&&!e.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:n[o]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};(()=>{"use strict";function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function o(e,t){for(var n=0;nVm});var a=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),r(this,"feedbackButton",null),r(this,"injectedFeedbackButton",!1),r(this,"buttonHidden",null),r(this,"lastButtonIcon",null)}var t,n,i;return t=e,i=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],(n=[{key:"destroy",value:function(){this.feedbackButton&&(this.feedbackButton.remove(),this.feedbackButton=null),this.buttonHidden=null,this.lastButtonIcon=null,this.injectedFeedbackButton=!1,this.instance=null}},{key:"toggleFeedbackButton",value:function(t){this.buttonHidden=!t,e.getInstance().updateFeedbackButtonState(),jh.getInstance().updateContainerStyle()}},{key:"feedbackButtonPressed",value:function(){var e=Zt.getInstance();e.isOpened()?e.hideWidget():(e.setAppMode("widget"),e.showWidget())}},{key:"injectFeedbackButton",value:function(){var e=this;if(!this.injectedFeedbackButton){this.injectedFeedbackButton=!0;var t=document.createElement("div");t.addEventListener("click",(function(){e.feedbackButtonPressed()})),document.body.appendChild(t),this.feedbackButton=t,this.updateFeedbackButtonState()}}},{key:"updateNotificationBadge",value:function(e){var t=document.querySelector(".bb-notification-bubble");if(t){var n="bb-notification-bubble--hidden";e>0&&!Zt.getInstance().isOpened()?(t.classList.remove(n),t.innerText=e):t.classList.add(n)}}},{key:"refresh",value:function(){document.querySelector(".bb-feedback-button")?(this.updateFeedbackButtonText(),this.updateFeedbackButtonState()):(this.injectedFeedbackButton=!1,this.feedbackButton=null,this.buttonHidden=null,this.lastButtonIcon=null,this.injectFeedbackButton())}},{key:"updateFeedbackButtonText",value:function(){var t=dt.getInstance().getFlowConfig();if(t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC||t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC_BOTTOM||t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC_LEFT){var n=document.querySelector(".bb-feedback-button-classic");n&&(n.innerText=t.widgetButtonText)}}},{key:"updateFeedbackButtonState",value:function(){if(null!==this.feedbackButton){var t=dt.getInstance().getFlowConfig(),n="";n=t.buttonLogo?''):p("button","#fff"),this.feedbackButton.className="bb-feedback-button gleap-font gl-block",this.feedbackButton.setAttribute("dir",kh.getInstance().isRTLLayout?"rtl":"ltr"),t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC||t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC_BOTTOM||t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC_LEFT?(this.feedbackButton.classList.add("bb-feedback-button--classic-button-style"),this.feedbackButton.innerHTML='
').concat(t.widgetButtonText,"
")):n!==this.lastButtonIcon&&(this.feedbackButton.innerHTML='
'.concat(n).concat(p("arrowdown","#fff"),'
')),this.lastButtonIcon=n;var o=!1;null===e.getInstance().buttonHidden?t.feedbackButtonPosition===e.FEEDBACK_BUTTON_NONE&&(o=!0):e.getInstance().buttonHidden&&(o=!0),o&&this.feedbackButton.classList.add("bb-feedback-button--disabled"),t.feedbackButtonPosition===e.FEEDBACK_BUTTON_BOTTOM_LEFT&&this.feedbackButton.classList.add("bb-feedback-button--bottomleft"),Zt.getInstance().isOpened()&&this.feedbackButton.classList.add("bb-feedback-button--open");var r=Zt.getInstance().appMode;"survey"!==r&&"survey_full"!==r&&"survey_web"!==r||this.feedbackButton.classList.add("bb-feedback-button--survey"),!0!==t.hideForGuests||et.getInstance().isUser()||this.feedbackButton.classList.add("bb-feedback-button--hidden")}}}])&&o(t.prototype,n),i&&o(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}();function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var o,r,i,a,s=[],l=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(o=i.call(n)).done)&&(s.push(o.value),s.length!==t);l=!0);}catch(e){c=!0,r=e}finally{try{if(!l&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(c)throw r}}return s}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return c(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return c(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n=160?"#000000":"#ffffff"},p=function(e,t){return"button"===e?'':"drag"===e?'\x3c!--!Font Awesome Pro 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2025 Fonticons, Inc.--\x3e':"unmute"===e?'':"mute"===e?'':"replay"===e?'\n \n ':"dismiss"===e?'':"blur"===e?'\n \n':"pen"===e?'\n \n \n \n \n \n \n \n \n \n \n \n \n':"rect"===e?'\n \n \n \n \n \n \n \n \n \n \n':"pointer"===e?'\n \n ':"clip"===e?'\n \n \n \n \n \n':"mic"===e?'\n \n \n \n \n ':"camera"===e?'\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n':"recorderon"===e?'\n \n \n \n \n \n \n \n \n \n \n \n':"recorderoff"===e?'\n \n \n \n \n \n \n \n \n ':"arrowdown"===e?'\n \n '):"arrowleft"===e?'\n \n '):"close"===e?'\n \n '):"undo"===e?'\n \n \n \n \n \n \n \n \n \n ':"circle-dot"===e?''):"circle-question"===e?''):"circle-info"===e?''):"circle-exclamation"===e?''):"circle-up"===e?''):"circle-right"===e?''):""};function h(e){return h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},h(e)}function f(e,t){for(var n=0;n0&&(e=e.concat(this.externalRequests)),this.filters&&this.filters.length>0)for(var t=0;t-1)&&!e.find((function(e){return e.url===s.name}))&&e.push({type:"RESOURCE",date:new Date(this.startTimestamp+s.startTime),url:s.name,duration:Math.round(s.duration),initiatorType:s.initiatorType})}}}catch(u){}var l=this.blacklist.concat(this.defaultBlacklist);if(l&&l.length>0)try{e=e.filter((function(e){for(var t=0;t70&&(e=70),this.maxRequests=e}},{key:"setStopped",value:function(e){this.stopped=e}},{key:"setFilters",value:function(e){this.filters=this.filters.concat(e||[])}},{key:"setBlacklist",value:function(e){this.blacklist=this.blacklist.concat(e||[])}},{key:"cleanRequests",value:function(){var e=Object.keys(this.requests);if(e.length>this.maxRequests)for(var t=e.slice(0,e.length-this.maxRequests),n=0;n.15?"":e}},{key:"cleanupPayload",value:function(e){if(null==e)return"{}";try{if(void 0!==("undefined"==typeof TextDecoder?"undefined":h(TextDecoder))&&ArrayBuffer.isView(e))return(new TextDecoder).decode(e)}catch(t){}return e}},{key:"preparePayload",value:function(e){var t=this.cleanupPayload(e);return this.cleanupContentSize(t)}},{key:"start",value:function(){var e=this;if(!this.initialized){this.initialized=!0;var t=this;this.interceptNetworkRequests({onFetch:function(n,o){if(!e.stopped&&o&&e.requests){if(n.length>0&&void 0!==n[0]&&void 0!==n[0].url)e.requests[o]={url:n[0].url,date:new Date,request:{payload:"",headers:void 0!==n[0].headers?Object.fromEntries(n[0].headers.entries()):{}},type:void 0!==n[0].method?n[0].method:""};else if(n.length>=2&&n[1]){var r=n[1]&&n[1].method?n[1].method:"GET";e.requests[o]={request:{payload:t.preparePayload(n[1].body),headers:n[1].headers},type:r,url:n[0],date:new Date}}else e.requests[o]={url:n[0],date:new Date};e.cleanRequests()}},onFetchLoad:function(n,o){if(!e.stopped&&o&&e.requests&&e.requests[o]){try{e.requests[o].success=!0,e.requests[o].response={status:n.status,statusText:"",responseText:""},e.calcRequestTime(o)}catch(i){}try{var r="";n.headers&&void 0!==n.headers.get&&(r=n.headers.get("content-type")),e.isContentTypeSupported(r)?n.text().then((function(r){e.requests[o]&&(e.requests[o].success=!0,e.requests[o].response={status:n.status,statusText:n.statusText,responseText:t.cleanupContentSize(r)}),e.calcRequestTime(o),e.cleanRequests()})).catch((function(t){e.cleanRequests()})):(e.requests[o]&&(e.requests[o].success=!0,e.requests[o].response={status:n.status,statusText:n.statusText,responseText:""}),e.calcRequestTime(o),e.cleanRequests())}catch(i){}}},onFetchFailed:function(t,n){!e.stopped&&n&&e.requests&&e.requests[n]&&(e.requests[n].success=!1,e.calcRequestTime(n),e.cleanRequests())},onOpen:function(t,n){e.stopped||(t&&t.bbRequestId&&n.length>=2&&e.requests&&(e.requests[t.bbRequestId]={type:n[0],url:n[1],date:new Date}),e.cleanRequests())},onSend:function(t,n){e.stopped||(t&&t.bbRequestId&&e.requests&&e.requests[t.bbRequestId]&&(e.requests[t.bbRequestId].request={payload:e.preparePayload(n.length>0?n[0]:"{}"),headers:t.requestHeaders}),e.cleanRequests())},onError:function(t,n){!e.stopped&&e.requests&&t&&t.currentTarget&&t.currentTarget.bbRequestId&&e.requests[t.currentTarget.bbRequestId]&&(e.requests[t.currentTarget.bbRequestId].success=!1,e.calcRequestTime(t.bbRequestId)),e.cleanRequests()},onLoad:function(t,n){if(!e.stopped){if(t&&t.currentTarget&&t.currentTarget.bbRequestId&&e.requests&&e.requests[t.currentTarget.bbRequestId]){var o=t.currentTarget,r=o.responseType,i="<"+r+">";""!==r&&"text"!==r||(i=e.cleanupContentSize(o.responseText)),e.requests[o.bbRequestId].success=!0,e.requests[o.bbRequestId].response={status:o.status,statusText:o.statusText,responseText:i},e.calcRequestTime(o.bbRequestId)}e.cleanRequests()}}})}}},{key:"interceptNetworkRequests",value:function(e){var t,n=this,o=XMLHttpRequest.prototype.open,r=XMLHttpRequest.prototype.send;return void 0===XMLHttpRequest.prototype.gleapSetRequestHeader&&(XMLHttpRequest.prototype.gleapSetRequestHeader=XMLHttpRequest.prototype.setRequestHeader),XMLHttpRequest.prototype.gleapSetRequestHeader&&(XMLHttpRequest.prototype.setRequestHeader=function(e,t){this.requestHeaders||(this.requestHeaders={}),this.requestHeaders&&this.requestHeaders.hasOwnProperty(e)||(this.requestHeaders[e]||(this.requestHeaders[e]=[]),this.requestHeaders[e].push(t),this.gleapSetRequestHeader(e,t))}),XMLHttpRequest.prototype.open=function(){return this.bbRequestId=++n.requestId,e.onOpen&&e.onOpen(this,arguments),e.onLoad&&this.addEventListener("load",e.onLoad.bind(e)),e.onError&&this.addEventListener("error",e.onError.bind(e)),o.apply(this,arguments)},XMLHttpRequest.prototype.send=function(){return e.onSend&&e.onSend(this,arguments),r.apply(this,arguments)},window.fetch&&(t=window.fetch,window.fetch=function(){var o=++n.requestId;return e.onFetch(arguments,o),t.apply(this,arguments).then((function(t){if(t&&"function"==typeof t.clone){var n=t.clone();e.onFetchLoad(n,o)}return t})).catch((function(t){throw e.onFetchFailed(t,o),t}))}),e}},{key:"blobToTextPromise",value:function(e){return new Promise((function(t,n){var o=new FileReader;o.onload=function(e){e&&e.target&&e.target.result?t(e.target.result):n()},o.onerror=function(e){n(e)},o.readAsText(e)}))}}],o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],n&&f(t.prototype,n),o&&f(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();m(v,"instance",void 0);const y=v;var b=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:400,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:400;return new Promise((function(o,r){var i=0===e.indexOf("data:image/jpeg"),a=new Image;a.src=e,a.onerror=function(){r()},a.onload=function(){var e=document.createElement("canvas"),r=t,s=n;t>a.width/1.5&&(r=a.width/1.5),n>a.height/1.5&&(s=a.height/1.5);var l=a.width,c=a.height;l>c?l>r&&(c*=r/l,l=r):c>s&&(l*=s/c,c=s),e.width=l,e.height=c,e.getContext("2d").drawImage(a,0,0,l,c),o(i?e.toDataURL("image/jpeg",.7):e.toDataURL())}}))},w=function(){return!(!/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(navigator.userAgent)&&!/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(navigator.userAgent.substr(0,4)))},k=function(e){if("string"==typeof e||e instanceof String)try{return JSON.parse(e)}catch(t){return{}}return e},x=function(e,t){return e.length>t?e.slice(0,t)+"...":e},S=function(e){try{var t=e.split("."),n=!1,o=t[t.length-2];return"co"!==o&&"com"!==o&&"gv"!==o&&"ac"!==o&&"edu"!==o&&"gov"!==o&&"mil"!==o&&"net"!==o&&"org"!==o||(n=!0),(t=t.slice(n?-3:-2)).join(".")}catch(r){}return e},C=function(e){try{var t=localStorage.getItem("gleap-widget-".concat(e));if(t)return JSON.parse(t)}catch(n){}return null},I=function(e,t){var n="gleap-widget-".concat(e);if(t)try{localStorage.setItem(n,JSON.stringify(t))}catch(o){}else localStorage.removeItem(n)},E=function(e){"complete"===document.readyState||"loaded"===document.readyState||"interactive"===document.readyState?e():document.addEventListener("DOMContentLoaded",(function(){e()}))};function T(e){return T="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},T(e)}function O(e,t){for(var n=0;n=200&&i.status<300)try{var e=i.responseText?JSON.parse(i.responseText):null;o(e)}catch(t){r({status:i.status,statusText:"JSON Parse Error",responseText:i.responseText,error:t})}else r({status:i.status,statusText:i.statusText,responseText:i.responseText})},i.onerror=function(){r({status:0,statusText:"Network Error",responseText:null})},i.send(n?JSON.stringify(n):null)}))}},{key:"_createCacheKey",value:function(e,t){return t?"".concat(e,"::").concat(t):e}},{key:"validateChecklist",value:function(e,t){var n=this,o=this._createCacheKey(e,t),r=this.validationCache.get(o);if(r)return r.status===M?Promise.resolve(r.internalId):Promise.reject(r.error);if(this.validationRequests.has(o))return this.validationRequests.get(o);var i=this._getApiUrl();if(!i){var a=new Error("ChecklistNetworkManager: Gleap API URL not configured.");return this.validationCache.set(o,{status:R,error:a}),Promise.reject(a)}var s="".concat(i,"/outbound/checklists?").concat(this._getQueryParams()),l=this._makeRequest("POST",s,{outboundId:e,sharedKey:t}).then((function(e){if(e&&e.id)return n.validationCache.set(o,{status:M,internalId:e.id}),e.id;var t=new Error("Validation response missing checklist ID.");throw n.validationCache.set(o,{status:R,error:e||t}),t})).catch((function(e){throw n.validationCache.set(o,{status:R,error:e}),e})).finally((function(){n.validationRequests.delete(o)}));return this.validationRequests.set(o,l),l}},{key:"fetchChecklist",value:function(e){var t=this,n=this.fetchCache.get(e);if(n)return n.status===M?Promise.resolve(JSON.parse(JSON.stringify(n.data))):Promise.reject(n.error);if(this.fetchRequests.has(e))return this.fetchRequests.get(e).then((function(e){return JSON.parse(JSON.stringify(e))}));var o=this._getApiUrl();if(!o){var r=new Error("ChecklistNetworkManager: Gleap API URL not configured.");return this.fetchCache.set(e,{status:R,error:r}),Promise.reject(r)}var i="".concat(o,"/outbound/checklists/").concat(e,"?convertTipTap=true&").concat(this._getQueryParams()),a=this._makeRequest("GET",i,null).then((function(n){if(n)return t.fetchCache.set(e,{status:M,data:n}),JSON.parse(JSON.stringify(n));var o=new Error("Empty response received for checklist fetch.");throw t.fetchCache.set(e,{status:R,error:n||o}),o})).catch((function(n){throw t.fetchCache.set(e,{status:R,error:n}),n})).finally((function(){t.fetchRequests.delete(e)}));return this.fetchRequests.set(e,a),a.then((function(e){return JSON.parse(JSON.stringify(e))}))}}],o=[{key:"getInstance",value:function(){return e.instance||(e.instance=new e),e.instance}}],n&&O(t.prototype,n),o&&O(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();L(P,"instance",null);const D=P,N=Math.min,j=Math.max,F=Math.round,B=Math.floor,_=e=>({x:e,y:e}),U={left:"right",right:"left",bottom:"top",top:"bottom"},H={start:"end",end:"start"};function z(e,t,n){return j(e,N(t,n))}function q(e,t){return"function"==typeof e?e(t):e}function W(e){return e.split("-")[0]}function V(e){return e.split("-")[1]}function G(e){return"x"===e?"y":"x"}function X(e){return"y"===e?"height":"width"}function Y(e){return["top","bottom"].includes(W(e))?"y":"x"}function J(e){return G(Y(e))}function K(e){return e.replace(/start|end/g,(e=>H[e]))}function Z(e){return e.replace(/left|right|bottom|top/g,(e=>U[e]))}function $(e){return"number"!=typeof e?function(e){return{top:0,right:0,bottom:0,left:0,...e}}(e):{top:e,right:e,bottom:e,left:e}}function Q(e){return{...e,top:e.y,left:e.x,right:e.x+e.width,bottom:e.y+e.height}}function ee(e,t,n){let{reference:o,floating:r}=e;const i=Y(t),a=J(t),s=X(a),l=W(t),c="y"===i,u=o.x+o.width/2-r.width/2,d=o.y+o.height/2-r.height/2,p=o[s]/2-r[s]/2;let h;switch(l){case"top":h={x:u,y:o.y-r.height};break;case"bottom":h={x:u,y:o.y+o.height};break;case"right":h={x:o.x+o.width,y:d};break;case"left":h={x:o.x-r.width,y:d};break;default:h={x:o.x,y:o.y}}switch(V(t)){case"start":h[a]-=p*(n&&c?-1:1);break;case"end":h[a]+=p*(n&&c?-1:1)}return h}async function te(e,t){var n;void 0===t&&(t={});const{x:o,y:r,platform:i,rects:a,elements:s,strategy:l}=e,{boundary:c="clippingAncestors",rootBoundary:u="viewport",elementContext:d="floating",altBoundary:p=!1,padding:h=0}=q(t,e),f=$(h),m=s[p?"floating"===d?"reference":"floating":d],g=Q(await i.getClippingRect({element:null==(n=await(null==i.isElement?void 0:i.isElement(m)))||n?m:m.contextElement||await(null==i.getDocumentElement?void 0:i.getDocumentElement(s.floating)),boundary:c,rootBoundary:u,strategy:l})),v="floating"===d?{...a.floating,x:o,y:r}:a.reference,y=await(null==i.getOffsetParent?void 0:i.getOffsetParent(s.floating)),b=await(null==i.isElement?void 0:i.isElement(y))&&await(null==i.getScale?void 0:i.getScale(y))||{x:1,y:1},w=Q(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:s,rect:v,offsetParent:y,strategy:l}):v);return{top:(g.top-w.top+f.top)/b.y,bottom:(w.bottom-g.bottom+f.bottom)/b.y,left:(g.left-w.left+f.left)/b.x,right:(w.right-g.right+f.right)/b.x}}const ne=function(e){return void 0===e&&(e=0),{name:"offset",options:e,async fn(t){var n,o;const{x:r,y:i,placement:a,middlewareData:s}=t,l=await async function(e,t){const{placement:n,platform:o,elements:r}=e,i=await(null==o.isRTL?void 0:o.isRTL(r.floating)),a=W(n),s=V(n),l="y"===Y(n),c=["left","top"].includes(a)?-1:1,u=i&&l?-1:1,d=q(t,e);let{mainAxis:p,crossAxis:h,alignmentAxis:f}="number"==typeof d?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...d};return s&&"number"==typeof f&&(h="end"===s?-1*f:f),l?{x:h*u,y:p*c}:{x:p*c,y:h*u}}(t,e);return a===(null==(n=s.offset)?void 0:n.placement)&&null!=(o=s.arrow)&&o.alignmentOffset?{}:{x:r+l.x,y:i+l.y,data:{...l,placement:a}}}}};function oe(e){return ae(e)?(e.nodeName||"").toLowerCase():"#document"}function re(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function ie(e){var t;return null==(t=(ae(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement}function ae(e){return e instanceof Node||e instanceof re(e).Node}function se(e){return e instanceof Element||e instanceof re(e).Element}function le(e){return e instanceof HTMLElement||e instanceof re(e).HTMLElement}function ce(e){return"undefined"!=typeof ShadowRoot&&(e instanceof ShadowRoot||e instanceof re(e).ShadowRoot)}function ue(e){const{overflow:t,overflowX:n,overflowY:o,display:r}=me(e);return/auto|scroll|overlay|hidden|clip/.test(t+o+n)&&!["inline","contents"].includes(r)}function de(e){return["table","td","th"].includes(oe(e))}function pe(e){const t=he(),n=me(e);return"none"!==n.transform||"none"!==n.perspective||!!n.containerType&&"normal"!==n.containerType||!t&&!!n.backdropFilter&&"none"!==n.backdropFilter||!t&&!!n.filter&&"none"!==n.filter||["transform","perspective","filter"].some((e=>(n.willChange||"").includes(e)))||["paint","layout","strict","content"].some((e=>(n.contain||"").includes(e)))}function he(){return!("undefined"==typeof CSS||!CSS.supports)&&CSS.supports("-webkit-backdrop-filter","none")}function fe(e){return["html","body","#document"].includes(oe(e))}function me(e){return re(e).getComputedStyle(e)}function ge(e){return se(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function ve(e){if("html"===oe(e))return e;const t=e.assignedSlot||e.parentNode||ce(e)&&e.host||ie(e);return ce(t)?t.host:t}function ye(e){const t=ve(e);return fe(t)?e.ownerDocument?e.ownerDocument.body:e.body:le(t)&&ue(t)?t:ye(t)}function be(e,t,n){var o;void 0===t&&(t=[]),void 0===n&&(n=!0);const r=ye(e),i=r===(null==(o=e.ownerDocument)?void 0:o.body),a=re(r);return i?t.concat(a,a.visualViewport||[],ue(r)?r:[],a.frameElement&&n?be(a.frameElement):[]):t.concat(r,be(r,[],n))}function we(e){const t=me(e);let n=parseFloat(t.width)||0,o=parseFloat(t.height)||0;const r=le(e),i=r?e.offsetWidth:n,a=r?e.offsetHeight:o,s=F(n)!==i||F(o)!==a;return s&&(n=i,o=a),{width:n,height:o,$:s}}function ke(e){return se(e)?e:e.contextElement}function xe(e){const t=ke(e);if(!le(t))return _(1);const n=t.getBoundingClientRect(),{width:o,height:r,$:i}=we(t);let a=(i?F(n.width):n.width)/o,s=(i?F(n.height):n.height)/r;return a&&Number.isFinite(a)||(a=1),s&&Number.isFinite(s)||(s=1),{x:a,y:s}}const Se=_(0);function Ce(e){const t=re(e);return he()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:Se}function Ie(e,t,n,o){void 0===t&&(t=!1),void 0===n&&(n=!1);const r=e.getBoundingClientRect(),i=ke(e);let a=_(1);t&&(o?se(o)&&(a=xe(o)):a=xe(e));const s=function(e,t,n){return void 0===t&&(t=!1),!(!n||t&&n!==re(e))&&t}(i,n,o)?Ce(i):_(0);let l=(r.left+s.x)/a.x,c=(r.top+s.y)/a.y,u=r.width/a.x,d=r.height/a.y;if(i){const e=re(i),t=o&&se(o)?re(o):o;let n=e,r=n.frameElement;for(;r&&o&&t!==n;){const e=xe(r),t=r.getBoundingClientRect(),o=me(r),i=t.left+(r.clientLeft+parseFloat(o.paddingLeft))*e.x,a=t.top+(r.clientTop+parseFloat(o.paddingTop))*e.y;l*=e.x,c*=e.y,u*=e.x,d*=e.y,l+=i,c+=a,n=re(r),r=n.frameElement}}return Q({width:u,height:d,x:l,y:c})}const Ee=[":popover-open",":modal"];function Te(e){return Ee.some((t=>{try{return e.matches(t)}catch(n){return!1}}))}function Oe(e){return Ie(ie(e)).left+ge(e).scrollLeft}function Le(e,t,n){let o;if("viewport"===t)o=function(e,t){const n=re(e),o=ie(e),r=n.visualViewport;let i=o.clientWidth,a=o.clientHeight,s=0,l=0;if(r){i=r.width,a=r.height;const e=he();(!e||e&&"fixed"===t)&&(s=r.offsetLeft,l=r.offsetTop)}return{width:i,height:a,x:s,y:l}}(e,n);else if("document"===t)o=function(e){const t=ie(e),n=ge(e),o=e.ownerDocument.body,r=j(t.scrollWidth,t.clientWidth,o.scrollWidth,o.clientWidth),i=j(t.scrollHeight,t.clientHeight,o.scrollHeight,o.clientHeight);let a=-n.scrollLeft+Oe(e);const s=-n.scrollTop;return"rtl"===me(o).direction&&(a+=j(t.clientWidth,o.clientWidth)-r),{width:r,height:i,x:a,y:s}}(ie(e));else if(se(t))o=function(e,t){const n=Ie(e,!0,"fixed"===t),o=n.top+e.clientTop,r=n.left+e.clientLeft,i=le(e)?xe(e):_(1);return{width:e.clientWidth*i.x,height:e.clientHeight*i.y,x:r*i.x,y:o*i.y}}(t,n);else{const n=Ce(e);o={...t,x:t.x-n.x,y:t.y-n.y}}return Q(o)}function Ae(e,t){const n=ve(e);return!(n===t||!se(n)||fe(n))&&("fixed"===me(n).position||Ae(n,t))}function Me(e,t,n){const o=le(t),r=ie(t),i="fixed"===n,a=Ie(e,!0,i,t);let s={scrollLeft:0,scrollTop:0};const l=_(0);if(o||!o&&!i)if(("body"!==oe(t)||ue(r))&&(s=ge(t)),o){const e=Ie(t,!0,i,t);l.x=e.x+t.clientLeft,l.y=e.y+t.clientTop}else r&&(l.x=Oe(r));return{x:a.left+s.scrollLeft-l.x,y:a.top+s.scrollTop-l.y,width:a.width,height:a.height}}function Re(e,t){return le(e)&&"fixed"!==me(e).position?t?t(e):e.offsetParent:null}function Pe(e,t){const n=re(e);if(!le(e)||Te(e))return n;let o=Re(e,t);for(;o&&de(o)&&"static"===me(o).position;)o=Re(o,t);return o&&("html"===oe(o)||"body"===oe(o)&&"static"===me(o).position&&!pe(o))?n:o||function(e){let t=ve(e);for(;le(t)&&!fe(t);){if(pe(t))return t;t=ve(t)}return null}(e)||n}const De={convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{elements:t,rect:n,offsetParent:o,strategy:r}=e;const i="fixed"===r,a=ie(o),s=!!t&&Te(t.floating);if(o===a||s&&i)return n;let l={scrollLeft:0,scrollTop:0},c=_(1);const u=_(0),d=le(o);if((d||!d&&!i)&&(("body"!==oe(o)||ue(a))&&(l=ge(o)),le(o))){const e=Ie(o);c=xe(o),u.x=e.x+o.clientLeft,u.y=e.y+o.clientTop}return{width:n.width*c.x,height:n.height*c.y,x:n.x*c.x-l.scrollLeft*c.x+u.x,y:n.y*c.y-l.scrollTop*c.y+u.y}},getDocumentElement:ie,getClippingRect:function(e){let{element:t,boundary:n,rootBoundary:o,strategy:r}=e;const i="clippingAncestors"===n?function(e,t){const n=t.get(e);if(n)return n;let o=be(e,[],!1).filter((e=>se(e)&&"body"!==oe(e))),r=null;const i="fixed"===me(e).position;let a=i?ve(e):e;for(;se(a)&&!fe(a);){const t=me(a),n=pe(a);n||"fixed"!==t.position||(r=null),(i?!n&&!r:!n&&"static"===t.position&&r&&["absolute","fixed"].includes(r.position)||ue(a)&&!n&&Ae(e,a))?o=o.filter((e=>e!==a)):r=t,a=ve(a)}return t.set(e,o),o}(t,this._c):[].concat(n),a=[...i,o],s=a[0],l=a.reduce(((e,n)=>{const o=Le(t,n,r);return e.top=j(o.top,e.top),e.right=N(o.right,e.right),e.bottom=N(o.bottom,e.bottom),e.left=j(o.left,e.left),e}),Le(t,s,r));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}},getOffsetParent:Pe,getElementRects:async function(e){const t=this.getOffsetParent||Pe,n=this.getDimensions;return{reference:Me(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,...await n(e.floating)}}},getClientRects:function(e){return Array.from(e.getClientRects())},getDimensions:function(e){const{width:t,height:n}=we(e);return{width:t,height:n}},getScale:xe,isElement:se,isRTL:function(e){return"rtl"===me(e).direction}};function Ne(e,t,n,o){void 0===o&&(o={});const{ancestorScroll:r=!0,ancestorResize:i=!0,elementResize:a="function"==typeof ResizeObserver,layoutShift:s="function"==typeof IntersectionObserver,animationFrame:l=!1}=o,c=ke(e),u=r||i?[...c?be(c):[],...be(t)]:[];u.forEach((e=>{r&&e.addEventListener("scroll",n,{passive:!0}),i&&e.addEventListener("resize",n)}));const d=c&&s?function(e,t){let n,o=null;const r=ie(e);function i(){var e;clearTimeout(n),null==(e=o)||e.disconnect(),o=null}return function a(s,l){void 0===s&&(s=!1),void 0===l&&(l=1),i();const{left:c,top:u,width:d,height:p}=e.getBoundingClientRect();if(s||t(),!d||!p)return;const h={rootMargin:-B(u)+"px "+-B(r.clientWidth-(c+d))+"px "+-B(r.clientHeight-(u+p))+"px "+-B(c)+"px",threshold:j(0,N(1,l))||1};let f=!0;function m(e){const t=e[0].intersectionRatio;if(t!==l){if(!f)return a();t?a(!1,t):n=setTimeout((()=>{a(!1,1e-7)}),100)}f=!1}try{o=new IntersectionObserver(m,{...h,root:r.ownerDocument})}catch(g){o=new IntersectionObserver(m,h)}o.observe(e)}(!0),i}(c,n):null;let p,h=-1,f=null;a&&(f=new ResizeObserver((e=>{let[o]=e;o&&o.target===c&&f&&(f.unobserve(t),cancelAnimationFrame(h),h=requestAnimationFrame((()=>{var e;null==(e=f)||e.observe(t)}))),n()})),c&&!l&&f.observe(c),f.observe(t));let m=l?Ie(e):null;return l&&function t(){const o=Ie(e);!m||o.x===m.x&&o.y===m.y&&o.width===m.width&&o.height===m.height||n();m=o,p=requestAnimationFrame(t)}(),n(),()=>{var e;u.forEach((e=>{r&&e.removeEventListener("scroll",n),i&&e.removeEventListener("resize",n)})),null==d||d(),null==(e=f)||e.disconnect(),f=null,l&&cancelAnimationFrame(p)}}const je=function(e){return void 0===e&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:o,placement:r}=t,{mainAxis:i=!0,crossAxis:a=!1,limiter:s={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...l}=q(e,t),c={x:n,y:o},u=await te(t,l),d=Y(W(r)),p=G(d);let h=c[p],f=c[d];if(i){const e="y"===p?"bottom":"right";h=z(h+u["y"===p?"top":"left"],h,h-u[e])}if(a){const e="y"===d?"bottom":"right";f=z(f+u["y"===d?"top":"left"],f,f-u[e])}const m=s.fn({...t,[p]:h,[d]:f});return{...m,data:{x:m.x-n,y:m.y-o}}}}},Fe=function(e){return void 0===e&&(e={}),{name:"flip",options:e,async fn(t){var n,o;const{placement:r,middlewareData:i,rects:a,initialPlacement:s,platform:l,elements:c}=t,{mainAxis:u=!0,crossAxis:d=!0,fallbackPlacements:p,fallbackStrategy:h="bestFit",fallbackAxisSideDirection:f="none",flipAlignment:m=!0,...g}=q(e,t);if(null!=(n=i.arrow)&&n.alignmentOffset)return{};const v=W(r),y=W(s)===s,b=await(null==l.isRTL?void 0:l.isRTL(c.floating)),w=p||(y||!m?[Z(s)]:function(e){const t=Z(e);return[K(e),t,K(t)]}(s));p||"none"===f||w.push(...function(e,t,n,o){const r=V(e);let i=function(e,t,n){const o=["left","right"],r=["right","left"],i=["top","bottom"],a=["bottom","top"];switch(e){case"top":case"bottom":return n?t?r:o:t?o:r;case"left":case"right":return t?i:a;default:return[]}}(W(e),"start"===n,o);return r&&(i=i.map((e=>e+"-"+r)),t&&(i=i.concat(i.map(K)))),i}(s,m,f,b));const k=[s,...w],x=await te(t,g),S=[];let C=(null==(o=i.flip)?void 0:o.overflows)||[];if(u&&S.push(x[v]),d){const e=function(e,t,n){void 0===n&&(n=!1);const o=V(e),r=J(e),i=X(r);let a="x"===r?o===(n?"end":"start")?"right":"left":"start"===o?"bottom":"top";return t.reference[i]>t.floating[i]&&(a=Z(a)),[a,Z(a)]}(r,a,b);S.push(x[e[0]],x[e[1]])}if(C=[...C,{placement:r,overflows:S}],!S.every((e=>e<=0))){var I,E;const e=((null==(I=i.flip)?void 0:I.index)||0)+1,t=k[e];if(t)return{data:{index:e,overflows:C},reset:{placement:t}};let n=null==(E=C.filter((e=>e.overflows[0]<=0)).sort(((e,t)=>e.overflows[1]-t.overflows[1]))[0])?void 0:E.placement;if(!n)switch(h){case"bestFit":{var T;const e=null==(T=C.map((e=>[e.placement,e.overflows.filter((e=>e>0)).reduce(((e,t)=>e+t),0)])).sort(((e,t)=>e[1]-t[1]))[0])?void 0:T[0];e&&(n=e);break}case"initialPlacement":n=s}if(r!==n)return{reset:{placement:n}}}return{}}}},Be=e=>({name:"arrow",options:e,async fn(t){const{x:n,y:o,placement:r,rects:i,platform:a,elements:s,middlewareData:l}=t,{element:c,padding:u=0}=q(e,t)||{};if(null==c)return{};const d=$(u),p={x:n,y:o},h=J(r),f=X(h),m=await a.getDimensions(c),g="y"===h,v=g?"top":"left",y=g?"bottom":"right",b=g?"clientHeight":"clientWidth",w=i.reference[f]+i.reference[h]-p[h]-i.floating[f],k=p[h]-i.reference[h],x=await(null==a.getOffsetParent?void 0:a.getOffsetParent(c));let S=x?x[b]:0;S&&await(null==a.isElement?void 0:a.isElement(x))||(S=s.floating[b]||i.floating[f]);const C=w/2-k/2,I=S/2-m[f]/2-1,E=N(d[v],I),T=N(d[y],I),O=E,L=S-m[f]-T,A=S/2-m[f]/2+C,M=z(O,A,L),R=!l.arrow&&null!=V(r)&&A!==M&&i.reference[f]/2-(A{const o=new Map,r={platform:De,...n},i={...r.platform,_c:o};return(async(e,t,n)=>{const{placement:o="bottom",strategy:r="absolute",middleware:i=[],platform:a}=n,s=i.filter(Boolean),l=await(null==a.isRTL?void 0:a.isRTL(t));let c=await a.getElementRects({reference:e,floating:t,strategy:r}),{x:u,y:d}=ee(c,o,l),p=o,h={},f=0;for(let m=0;me.length)&&(t=e.length);for(var n=0,o=new Array(t);n'):""),i.appendChild(a),t.repositionHotspot(e,n),r=a,t.elementToTooltipMap.set(e,n)}else r=e;var s=t.createTooltip(r,n.html,n);t.elementToFloatingUIMap.set(e,s)}}})),Ve(this,"updateFilteredTooltips",(function(){t.filteredTooltips=t.getFilteredTooltips(),t.checkForTooltips()})),Ve(this,"getFilteredTooltips",(function(){if(!t.tooltips)return[];var e=window.location.href;return t.tooltips.filter((function(t){return!t.page||0===t.page.length||!!Ue(e,t.page,t.pageType)}))})),Ve(this,"checkForTooltips",(function(){for(var e=0;e0&&this.filteredTooltips.forEach((function(n){n.selector&&e.matches(n.selector)&&t.linkTooltip(e,n)}))}},{key:"start",value:function(){var e=this,t=this;if(window){var n,o,r,i=(n=t.updateHotspotPositions.bind(t),o=250,r=null,function(){if(!r){var e=this,t=arguments;r=setTimeout((function(){n.call.apply(n,[e].concat(ze(t))),r=null}),o)}});window.addEventListener("resize",i),window.requestAnimationFrame((function(){e.observer=new MutationObserver((function(n){t.lastUrl!==window.location.href&&(t.lastUrl=window.location.href,t.filteredTooltips=t.getFilteredTooltips()),n.forEach((function(n){if("attributes"===n.type){var o=n.target;o.nodeType===Node.ELEMENT_NODE&&(o.querySelector("[data-gleap-tooltip-hotspot]")||o.hasAttribute("data-gleap-tooltip-mode")||o.hasAttribute("data-gleap-tooltip"))&&t.updateHotspotPositions()}n.addedNodes.forEach((function(e){e.nodeType===Node.ELEMENT_NODE&&t.processNodeInsertion(e)})),n.removedNodes.forEach((function(t){if(t.nodeType===Node.ELEMENT_NODE&&e.elementToFloatingUIMap.has(t)){var n=e.elementToFloatingUIMap.get(t);n&&(n.tooltip&&n.tooltip.remove(),n.cleanup(),e.elementToFloatingUIMap.delete(t))}e.elementToTooltipMap.has(t)&&e.elementToTooltipMap.delete(t)}))}))})),e.observer.observe(document.body,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["style","class"]})}))}}},{key:"updateHotspotPositions",value:function(){var e=this;document.querySelectorAll("[data-gleap-tooltip-mode='hotspot']").forEach((function(t){var n=e.elementToTooltipMap.get(t);n&&e.repositionHotspot(t,n)}))}},{key:"createTooltip",value:function(e,t,n){var o=document.createElement("div");o.className="gleap-tooltip",o.innerHTML='
\n '.concat(t,'\n
\n \n \n \n
\n
'),document.body.appendChild(o);var r,i=o.querySelector(".gleap-tooltip-arrow"),a=Ne(e,o,(function(){_e(e,o,{placement:"left"===n.posX?"left":"right",middleware:[ne(10),Fe(),je(),Be({element:i})]}).then((function(e){var t=e.x,n=e.y,r=e.middlewareData,a=e.placement;try{if(Object.assign(o.style,{left:"".concat(t,"px"),top:"".concat(n,"px")}),r.arrow){var s={left:"",top:"",transform:""};null!=r.arrow.x&&(s.left="".concat(r.arrow.x,"px"),"bottom"===a?(s.transform="translateY(-7px) rotate(180deg)",s.top="".concat(-20,"px")):"top"===a&&(s.transform="translateY(7px) rotate(0deg)",s.top="100%")),null!=r.arrow.y&&(s.top="".concat(r.arrow.y,"px"),"right"===a?(s.transform="translateX(-7px) rotate(90deg)",s.left="".concat(-20,"px")):"left"===a&&(s.transform="translateX(7px) rotate(270deg)",s.left="100%")),Object.assign(i.style,s)}}catch(l){}}))}));function s(){clearTimeout(r),o.style.visibility="visible",o.style.opacity="1",o.style.pointerEvents="auto"}function l(){r=setTimeout((function(){o.style.opacity="0",setTimeout((function(){o.style.visibility="hidden",o.style.pointerEvents="none"}),200)}),500)}return e.addEventListener("mouseenter",s),e.addEventListener("mouseleave",l),o.addEventListener("mouseenter",s),o.addEventListener("mouseleave",l),{cleanup:a,tooltip:o}}},{key:"canEmbed",value:function(e){var t=new Set(["area","base","br","embed","hr","img","input","source","track","wbr","canvas"]);return e&&!t.has(e.tagName.toLowerCase())}},{key:"destroy",value:function(){this.observer&&(this.observer.disconnect(),this.observer=null),this.resizeListener&&(window.removeEventListener("resize",this.resizeListener),this.resizeListener=null),document.querySelectorAll(".gleap-tooltip").forEach((function(e){return e.remove()})),document.querySelectorAll("[data-gleap-tooltip-anchor]").forEach((function(e){return e.remove()})),document.querySelectorAll("[data-gleap-tooltip-hotspot]").forEach((function(e){return e.remove()})),document.querySelectorAll("[data-gleap-tooltip]").forEach((function(e){return e.removeAttribute("data-gleap-tooltip")})),document.querySelectorAll("[data-gleap-tooltip-mode]").forEach((function(e){return e.removeAttribute("data-gleap-tooltip-mode")})),this.elementToFloatingUIMap=new WeakMap,this.elementToTooltipMap=new WeakMap,this.tooltips=[],this.filteredTooltips=[]}},{key:"repositionHotspot",value:function(e,t){if(e&&t){var n=e.getAttribute("data-gleap-tooltip");if(n){var o=document.querySelector('[data-gleap-tooltip-hotspot="'.concat(n,'"]'));if(o){t.posX||(t.posX="right"),t.posY||(t.posY="center"),t.offsetX||(t.offsetX=4),t.offsetY||(t.offsetY=0);var r=e.getBoundingClientRect();try{var i=document.createRange();i.selectNodeContents(e);var a=window.getComputedStyle(e),s=i.getBoundingClientRect().width+parseFloat(a.paddingLeft);s0&&void 0!==arguments[0]?arguments[0]:0,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];t.session&&t.session.gleapHash&&Tn.notifyEvent("unregister-pushmessage-group","gleapuser-".concat(t.session.gleapHash));try{I("session-".concat(t.sdkKey),null)}catch(r){}if(t.useCookies)try{!function(e){try{var t=S(window.location.host.split(":")[0]);document.cookie=e+"=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT; Domain="+t}catch(r){}}("session-".concat(t.sdkKey))}catch(r){}if(t.ready=!1,t.session={gleapId:null,gleapHash:null,name:"",email:"",userId:"",phone:"",value:0},Zt.getInstance().sendMessage({name:"session-cleared"},!0),jh.getInstance().clearAllNotifications(!1),jh.getInstance().setNotificationCount(0),qh.getInstance().removeBannerUI(),Kh.getInstance().hideModal(),n&&!isNaN(e)){var o=10*Math.pow(e,2);setTimeout((function(){t.startSession(e+1)}),1e3*o)}})),$e(this,"validateSession",(function(e){var n;if(e&&e.gleapId){var o=!1;(null===(n=t.session)||void 0===n?void 0:n.gleapId)!==(null==e?void 0:e.gleapId)&&(o=!0),t.session&&t.session.gleapHash&&Tn.notifyEvent("unregister-pushmessage-group","gleapuser-".concat(t.session.gleapHash)),I("session-".concat(t.sdkKey),e),t.useCookies&&function(e,t,n){try{var o="";if(n){var r=new Date;r.setTime(r.getTime()+24*n*60*60*1e3),o="; expires="+r.toUTCString()}var i=S(window.location.host.split(":")[0]);document.cookie=e+"="+(t||"")+o+"; path=/; domain="+i}catch(a){}}("session-".concat(t.sdkKey),encodeURIComponent(JSON.stringify(e)),365),t.session=e,t.ready=!0,t.session&&t.session.gleapHash&&Tn.notifyEvent("register-pushmessage-group","gleapuser-".concat(t.session.gleapHash)),o&&(setTimeout((function(){D.getInstance().clearCache(),it.getInstance().restart();var e=Xe.getInstance();if(e){try{e.destroy()}catch(t){}e.load()}}),0),"function"==typeof window.dispatchEvent&&window.dispatchEvent(new CustomEvent("session-updated"))),t.notifySessionReady()}})),$e(this,"startSession",(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;try{if(t.useCookies){var n=function(e){try{for(var t=e+"=",n=document.cookie.split(";"),o=0;o0)){var r=C("session-".concat(t.sdkKey));r&&t.validateSession(r)}var i=t,a=new XMLHttpRequest;a.open("POST",i.apiUrl+"/sessions"),a.setRequestHeader("Content-Type","application/json;charset=UTF-8"),a.setRequestHeader("Api-Token",i.sdkKey);try{t.session&&t.session.gleapId&&t.session.gleapHash&&(a.setRequestHeader("Gleap-Id",t.session.gleapId),a.setRequestHeader("Gleap-Hash",t.session.gleapHash))}catch(s){}a.onreadystatechange=function(t){if(4===a.readyState)if(200===a.status||201===a.status)try{var n=JSON.parse(a.responseText);i.validateSession(n)}catch(s){}else 429!==a.status&&i.clearSession(e,!0)},a.send(JSON.stringify({lang:kh.getInstance().getActiveLanguage()}))})),$e(this,"checkIfSessionNeedsUpdate",(function(e,n){if(!t.session||!t.session.userId||!e)return!0;try{if(t.session.userId.toString()!==e.toString())return!0}catch(o){}return t.checkIfSessionDataNeedsUpdate(n)})),$e(this,"checkIfSessionDataNeedsUpdate",(function(e){if(e)for(var n=Object.keys(e),o=0;o0)for(var e=0;e2)&&0!==t.streamedEventArray.length&&t.socket&&t.socket.readyState===t.socket.OPEN){var e=t;t.streamingEvents=!0;var n=new XMLHttpRequest;n.open("POST",et.getInstance().apiUrl+"/sessions/ping"),n.setRequestHeader("Content-Type","application/json;charset=UTF-8"),et.getInstance().injectSession(n),n.onerror=function(){e.errorCount++,e.streamingEvents=!1},n.onreadystatechange=function(t){4===n.readyState&&(200===n.status||201===n.status?e.errorCount=0:e.errorCount++,e.streamingEvents=!1)};var o=nn.getInstance().getSessionDuration();n.send(JSON.stringify({time:o,events:t.streamedEventArray,opened:Zt.getInstance().isOpened(),type:"js",sdkVersion:"14.8.11",ws:!0})),t.streamedEventArray=[]}})),this.handleOpenBound=this.handleOpen.bind(this),this.handleErrorBound=this.handleError.bind(this),this.handleMessageBound=this.handleMessage.bind(this),this.handleCloseBound=this.handleClose.bind(this)}var t,n,o;return t=e,o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],(n=[{key:"cleanupWebSocket",value:function(){this.connectionTimeout&&(clearTimeout(this.connectionTimeout),this.connectionTimeout=null),this.pingWS&&clearInterval(this.pingWS),this.socket&&(this.socket.removeEventListener("open",this.handleOpenBound),this.socket.removeEventListener("error",this.handleErrorBound),this.socket.removeEventListener("message",this.handleMessageBound),this.socket.removeEventListener("close",this.handleCloseBound),this.socket.close(),this.socket=null)}},{key:"initWebSocket",value:function(){this.cleanupWebSocket(),this.connectedWebSocketGleapId=et.getInstance().session.gleapId,et.getInstance().session&&et.getInstance().sdkKey&&(this.socket=new WebSocket("".concat(et.getInstance().wsApiUrl,"?gleapId=").concat(et.getInstance().session.gleapId,"&gleapHash=").concat(et.getInstance().session.gleapHash,"&apiKey=").concat(et.getInstance().sdkKey,"&sdkVersion=").concat("14.8.11")),this.socket.addEventListener("open",this.handleOpenBound),this.socket.addEventListener("message",this.handleMessageBound),this.socket.addEventListener("error",this.handleErrorBound),this.socket.addEventListener("close",this.handleCloseBound))}},{key:"handleOpen",value:function(e){var t=this;this.pingWS=setInterval((function(){t.socket.readyState===t.socket.OPEN&&(t.socket.send("PING"),t.socket.send(9))}),1e4),this.connectionTimeout&&(clearTimeout(this.connectionTimeout),this.connectionTimeout=null)}},{key:"handleMessage",value:function(e){this.processMessage(JSON.parse(e.data))}},{key:"handleError",value:function(e){}},{key:"handleClose",value:function(e){var t=this;setTimeout((function(){t.initWebSocket()}),5e3)}},{key:"processMessage",value:function(e){try{if("update"===e.name){var t=e.data,n=t.a,o=t.u,r=Zt.getInstance().isOpened();if(n){var i=["banner","modal"],a=n.filter((function(e){var t;return!r||i.includes(null==e||null===(t=e.actionType)||void 0===t?void 0:t.toLowerCase())}));Wm.getInstance().performActions(a)}null!=o&&jh.getInstance().setNotificationCount(o)}"checklist"===e.name&&null!=e&&e.data&&window&&"function"==typeof window.dispatchEvent&&window.dispatchEvent(new CustomEvent("checkListUpdate",{detail:e.data}))}catch(s){}}},{key:"getEventArray",value:function(){return this.eventArray}},{key:"stop",value:function(){this.cleanupMainLoop()}},{key:"resetErrorCountLoop",value:function(){var e=this;setInterval((function(){e.errorCount=0}),6e4)}},{key:"cleanupMainLoop",value:function(){this.mainLoopTimeout&&(clearInterval(this.mainLoopTimeout),this.mainLoopTimeout=null)}},{key:"restart",value:function(){this.connectedWebSocketGleapId!==et.getInstance().session.gleapId&&this.initWebSocket(),this.cleanupMainLoop(),this.trackInitialEvents(),this.runEventStreamLoop()}},{key:"start",value:function(){this.startPageListener(),this.resetErrorCountLoop()}},{key:"trackInitialEvents",value:function(){e.getInstance().logEvent("sessionStarted"),e.getInstance().logCurrentPage()}},{key:"logCurrentPage",value:function(){if(!Wm.getInstance().disablePageTracking){var e=window.location.href;e&&e!==this.lastUrl&&(this.lastUrl=e,this.logEvent("pageView",{page:e}))}}},{key:"startPageListener",value:function(){var e=this;setInterval((function(){e.logCurrentPage()}),1e3)}},{key:"logEvent",value:function(e,t){var n={name:e,date:new Date};t&&(n.data=k(t)),this.eventArray.push(n),this.streamedEventArray.push(n),this.eventArray.length>this.eventMaxLength&&this.eventArray.shift(),this.streamedEventArray.length>this.eventMaxLength&&this.streamedEventArray.shift()}}])&&nt(t.prototype,n),o&&nt(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function at(e){return at="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},at(e)}function st(e,t){for(var n=0;n0)for(var e=0;e=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var l=o.call(a,"catchLoc"),c=o.call(a,"finallyLoc");if(l&&c){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&o.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),L(n),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var o=n.completion;if("throw"===o.type){var r=o.arg;L(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,o){return this.delegate={iterator:M(t),resultName:n,nextLoc:o},"next"===this.method&&(this.arg=e),g}},t}function ft(e,t,n,o,r,i,a){try{var s=e[i](a),l=s.value}catch(c){return void n(c)}s.done?t(l):Promise.resolve(l).then(o,r)}function mt(e){return function(){var t=this,n=arguments;return new Promise((function(o,r){var i=e.apply(t,n);function a(e){ft(i,o,r,a,s,"next",e)}function s(e){ft(i,o,r,a,s,"throw",e)}a(void 0)}))}}var gt=function(e){var t="",n=window.document.doctype;if(n&&(t=""),e&&e.childNodes&&e.childNodes.length>0)for(var o=0;o1?t-1:0),r=1;r0||t.scrollLeft>0)&&(s.setAttribute("bb-scrollpos",!0),s.setAttribute("bb-scrolltop",t.scrollTop),s.setAttribute("bb-scrollleft",t.scrollLeft)),"SELECT"!==d&&"TEXTAREA"!==d&&"INPUT"!==d||(h=t.value,("value"===t.getAttribute("gleap-ignore")||t.classList.contains("gl-mask"))&&(h=new Array(h.length+1).join("*")),s.setAttribute("bb-data-value",h),"checkbox"!==t.type&&"radio"!==t.type||!t.checked||s.setAttribute("bb-data-checked",!0))),r.appendChild(s),!t.shadowRoot){e.next=29;break}return f=n,n++,e.next=27,a(t.shadowRoot.firstChild,s,f);case 27:Ct(t.shadowRoot,s,f),void 0!==s.setAttribute&&s.setAttribute("bb-shadow-parent",f);case 29:return e.next=31,a(t.firstChild,s);case 31:case"end":return e.stop()}}),e,null,[[7,17]])})));return function(t,n,o){return e.apply(this,arguments)}}(),r=document.createDocumentFragment(),e.next=5,o(t,r);case 5:return(i=r.querySelector("head"))||(i=r),Ct(window.document,i),e.abrupt("return",r);case 9:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),Tt=function(e){return new Promise(function(){var t=mt(ht().mark((function t(n,o){var r,i,a,s,l,c,u,d,p,h,f,m,g,v,y;return ht().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:for(r=window.document.querySelectorAll("style, link"),i=0;i0){for(c=l.childNodes;c.length>0;)l.parentNode.insertBefore(c[0],l);l.remove()}for(u=a.querySelectorAll("script, noscript"),i=0;i=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var l=o.call(a,"catchLoc"),c=o.call(a,"finallyLoc");if(l&&c){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&o.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),L(n),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var o=n.completion;if("throw"===o.type){var r=o.arg;L(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,o){return this.delegate={iterator:M(t),resultName:n,nextLoc:o},"next"===this.method&&(this.arg=e),g}},t}function At(e,t,n,o,r,i,a){try{var s=e[i](a),l=s.value}catch(c){return void n(c)}s.done?t(l):Promise.resolve(l).then(o,r)}function Mt(e){return function(){var t=this,n=arguments;return new Promise((function(o,r){var i=e.apply(t,n);function a(e){At(i,o,r,a,s,"next",e)}function s(e){At(i,o,r,a,s,"throw",e)}a(void 0)}))}}function Rt(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return Pt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Pt(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0,r=function(){};return{s:r,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){s=!0,i=e},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw i}}}}function Pt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n0?t[0]:null}},{key:"getFirstAudioTrack",value:function(e){if(!e)return null;var t=e.getAudioTracks();return t.length>0?t[0]:null}},{key:"startScreenRecording",value:(a=Mt(Lt().mark((function t(){var n,o;return Lt().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia&&!this.isRecording){t.next=4;break}return this.available=!1,this.rerender(),t.abrupt("return");case 4:return t.prev=4,t.next=7,navigator.mediaDevices.getDisplayMedia({video:{width:{ideal:Math.min(window.screen.width,e.MAX_WIDTH)},height:{ideal:Math.min(window.screen.height,e.MAX_HEIGHT)},frameRate:{ideal:e.IDEAL_FRAME_RATE,max:e.MAX_FRAME_RATE},displaySurface:"monitor"},audio:!1,selfBrowserSurface:"include"});case 7:if(n=t.sent,this._displayStream=n,this._displayVideoTrack=this.getFirstVideoTrack(n),this.audioMuted){t.next=15;break}return t.next=13,this.startAudioRecording();case 13:t.next=19;break;case 15:this.audioAvailable=!1,o=this.createMediaStream([this._displayVideoTrack]),this.stream=o,this.handleRecord({stream:o});case 19:this.rerender(),t.next=26;break;case 22:t.prev=22,t.t0=t.catch(4),window.alert(this.permissionErrorText),this.rerender();case 26:case"end":return t.stop()}}),t,this,[[4,22]])}))),function(){return a.apply(this,arguments)})},{key:"stopScreenRecording",value:function(){if(this.mediaRecorder&&this.stream&&this.isRecording){this.recordingTimer&&(clearInterval(this.recordingTimer),this.recordingTimer=null);try{this.mediaRecorder.stop()}catch(e){}this.stopStreamTracks(this.stream),this._displayStream&&(this.stopStreamTracks(this._displayStream),this._displayStream=null),this._micStream&&(this.stopStreamTracks(this._micStream),this._micStream=null),this._displayVideoTrack=null,this.rerender()}}},{key:"startAudioRecording",value:(i=Mt(Lt().mark((function e(){var t,n,o,r;return Lt().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._displayVideoTrack){e.next=2;break}return e.abrupt("return");case 2:return e.prev=2,e.next=5,navigator.mediaDevices.getUserMedia({audio:{echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0},video:!1});case 5:t=e.sent,this._micStream=t,n=this.getFirstAudioTrack(t),this.audioMuted=!1,this.audioAvailable=!!n,o=this.createMediaStream([this._displayVideoTrack,n]),this.stream=o,this.handleRecord({stream:o}),this.rerender(),e.next=23;break;case 16:e.prev=16,e.t0=e.catch(2),this.audioAvailable=!1,r=this.createMediaStream([this._displayVideoTrack]),this.stream=r,this.handleRecord({stream:r}),this.rerender();case 23:case"end":return e.stop()}}),e,this,[[2,16]])}))),function(){return i.apply(this,arguments)})},{key:"toggleAudio",value:function(){if(this.audioMuted=!this.audioMuted,this.rerender(),this.stream)for(var e=this.stream.getAudioTracks(),t=0;t0?i.innerHTML=o.formatTime(e):(i.innerHTML="2:00",o.stopScreenRecording()):e<=0&&o.stopScreenRecording()}),e.TIMER_UPDATE_INTERVAL),this.mediaRecorder.ondataavailable=function(e){e.data&&e.data.size>0&&r.push(e.data)};var a=this.getFirstVideoTrack(n);a&&(a.onended=function(){o.prepareRecording(r)}),this.mediaRecorder.onstop=function(){o.prepareRecording(r)},this.mediaRecorder.start(e.CHUNK_INTERVAL),o.rerender()}},{key:"prepareRecording",value:function(t){var n=this.getSupportedMimeType(),o=new Blob(t,{type:n}),r=n.includes("mp4")?"mp4":"webm";this.file=new File([o],"screen-recording.".concat(r),{type:n});var i=document.querySelector(e.SELECTORS.PREVIEW_VIDEO);i&&(i.src=URL.createObjectURL(o),this.audioAvailable=this.stream?this.stream.getAudioTracks().length>0:this.audioAvailable,this.isRecording=!1,this.rerender())}}],o=[{key:"uploadScreenRecording",value:(r=Mt(Lt().mark((function e(t){return Lt().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(null!=t){e.next=2;break}return e.abrupt("return",null);case 2:return e.abrupt("return",new Promise((function(e,n){var o=new XMLHttpRequest;o.open("POST",et.getInstance().apiUrl+"/uploads/sdk"),et.getInstance().injectSession(o);var r=new FormData;r.append("file",t),o.onerror=function(){n(new Error("Network error during file upload"))},o.onreadystatechange=function(){4==o.readyState&&(200==o.status?e(JSON.parse(o.response).fileUrl):n(new Error("Upload failed with status ".concat(o.status))))},o.send(r)})));case 3:case"end":return e.stop()}}),e)}))),function(e){return r.apply(this,arguments)})}],n&&Dt(t.prototype,n),o&&Dt(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Bt(e){return Bt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Bt(e)}function _t(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Ut(e){for(var t=1;t0&&(e.tags=t),this.excludeData)for(var n=Object.keys(this.excludeData),o=0;oe.length)&&(t=e.length);for(var n=0,o=new Array(t);n0)if(t){var n=window.open(e,"_blank");n&&n.focus()}else window.location.href=e})),Jt(this,"autoWhiteListCookieManager",(function(){window&&window.cmp_block_ignoredomains&&window.cmp_block_ignoredomains.concat(["messenger-app.gleap.io"])})),Jt(this,"injectFrame",(function(){t.injectedFrame||(t.injectedFrame=!0,t.autoWhiteListCookieManager(),E((function(){dt.getInstance().onConfigLoaded((function(){dt.getInstance().applyStylesFromConfig();var e=document.createElement("div");e.className="gleap-frame-container gleap-frame-container--hidden gl-block",e.innerHTML='
'),document.body.appendChild(e),t.gleapFrameContainer=e,t.gleapFrame=document.querySelector(".gleap-frame"),t.updateFrameStyle(),"widget"===t.appMode&&t.showFrameContainer(!0)}))})))})),Jt(this,"showImage",(function(e){E((function(){var t=document.createElement("div");t.className="gleap-image-view",t.innerHTML='
\n \n
'),document.body.appendChild(t);var n=function(){t.remove()};t.querySelector(".gleap-image-view-close").addEventListener("click",(function(){n()})),t.addEventListener("click",(function(e){e.target===t&&n()}))}))})),Jt(this,"updateFrameStyle",(function(){if(t.gleapFrameContainer){for(var e="gleap-frame-container--survey",n="gleap-frame-container--extended",o="gleap-frame-container--survey-full",r="gleap-frame-container--classic",i="gleap-frame-container--classic-left",s="gleap-frame-container--modern-left",l="gleap-frame-container--no-button",c=[r,i,n,s,l,e,o],u=0;u0&&void 0!==arguments[0]&&arguments[0];"survey_web"!==this.appMode&&(this.hideMarkerManager(),this.gleapFrameContainer&&(this.gleapFrameContainer.classList.add("gleap-frame-container--hidden"),this.gleapFrameContainer.classList.remove("gleap-frame-container--animate")),e&&this.sendMessage({name:"reset-routes",data:{}}),this.widgetOpened=!1,this.updateWidgetStatus(),a.getInstance().updateFeedbackButtonState(),Tn.notifyEvent("close"),jh.getInstance().reloadNotificationsFromCache(),this.unregisterEscListener(),"undefined"!=typeof window&&void 0!==window.focus&&window.focus())}},{key:"sendMessage",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];try{this.gleapFrame=document.querySelector(".gleap-frame"),this.comReady&&this.gleapFrame&&this.gleapFrame.contentWindow?this.gleapFrame.contentWindow.postMessage(JSON.stringify(e),"*"):t&&this.queue.push(e)}catch(n){}}},{key:"sendSessionUpdate",value:function(){this.sendMessage({name:"session-update",data:{sessionData:et.getInstance().getSession(),apiUrl:et.getInstance().apiUrl,sdkKey:et.getInstance().sdkKey}})}},{key:"sendConfigUpdate",value:function(){this.comReady&&(this.sendMessage({name:"config-update",data:{config:dt.getInstance().getFlowConfig(),aiTools:dt.getInstance().getAiTools(),overrideLanguage:kh.getInstance().getOverrideLanguage()}}),this.updateFrameStyle())}},{key:"showDrawingScreen",value:function(e){var t=this;this.hideWidget(),this.markerManager=new gh(e),this.markerManager.show((function(e){e||t.hideMarkerManager(),t.showWidget()}))}},{key:"workThroughQueue",value:function(){var e=Gt(this.queue);this.queue=[];for(var t=0;t0&&(n.tags=o),e.sendMessage({name:"collect-ticket-data",data:n})}if("height-update"===t.name){e.frameHeight=t.data;var r=document.querySelector(".gleap-frame-container-inner");"survey"!==e.appMode&&"survey_full"!==e.appMode&&"survey_web"!==e.appMode||!r||(r.style.maxHeight="".concat(e.frameHeight,"px"))}if("notify-event"===t.name&&Tn.notifyEvent(t.data.type,t.data.data),"cleanup-drawings"===t.name&&e.hideMarkerManager(),"open-url"===t.name){var i=t.data,a=!!t.newTab;e.urlHandler(i,a)}var s;if("start-product-tour"===t.name&&Wm.startProductTour(null===(s=t.data)||void 0===s?void 0:s.tourId,!0),"run-custom-action"===t.name&&Dn.triggerCustomAction(t.data,{shareToken:t.shareToken}),"close-widget"===t.name&&e.hideWidget(),"tool-execution"===t.name&&Tn.notifyEvent("tool-execution",t.data),"send-feedback"===t.name){var l=t.data.formData,c=t.data.action,u=t.data.outboundId,d=t.data.spamToken;new Wt(c.feedbackType,"MEDIUM",l,!1,c.excludeData,u,d).sendFeedback().then((function(t){if(e.sendMessage({name:"feedback-sent",data:t}),Tn.notifyEvent("feedback-sent",l),u&&u.length>0){Tn.notifyEvent("outbound-sent",{outboundId:u,outbound:c,formData:l});try{delete l.reportedBy}catch(n){}Wm.trackEvent("outbound-".concat(u,"-submitted"),l)}})).catch((function(t){e.sendMessage({name:"feedback-sending-failed",data:"Something went wrong, please try again."}),Tn.notifyEvent("error-while-sending")}))}"start-screen-drawing"===t.name&&e.showDrawingScreen(t.data)})),window.addEventListener("message",(function(t){if(t.origin===e.frameUrl||t.origin===qh.getInstance().bannerUrl)try{for(var n=JSON.parse(t.data),o=0;o1&&void 0!==arguments[1]?arguments[1]:"INFO";!e||e.length<=0||(this.logArray.push({log:x(e,1e3),date:new Date,priority:t}),this.logArray.length>this.logMaxLength&&this.logArray.shift())}},{key:"addLogWithArgs",value:function(e,t){if(e&&!(e.length<=0)){var n="";try{for(var o=0;o1&&void 0!==arguments[1])||arguments[1],n=x(e.innerText||"",40).replace(/(\r\n|\n|\r)/gm,"").replace(/ +(?= )/g,""),o="",r="";if(void 0!==e.getAttribute){var i=e.getAttribute("id");i&&(o=' id="'.concat(i,'"'));var a=e.getAttribute("class");a&&(r=' class="'.concat(a,'"'))}var s=(e.tagName||"").toLowerCase(),l="<",c=">";return t||(l="[",c="]"),"".concat(l).concat(s).concat(o).concat(r).concat(c).concat(n).concat(l,"/").concat(s).concat(c)}(e.target),"CLICK")}}))}}],o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],n&&pn(t.prototype,n),o&&pn(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function yn(e){return yn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},yn(e)}function bn(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{};if("flow-started"===e){var n=Wm.getInstance();n.setGlobalDataItem("webReplay",null),n.setGlobalDataItem("screenRecordingData",null),n.takeCurrentReplay()}var o=this.getInstance().eventListeners[e];if(o)for(var r=0;r((e,t,n)=>t in e?jn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,"symbol"!=typeof t?t+"":t,n),Bn=Object.defineProperty,_n=(e,t,n)=>((e,t,n)=>t in e?Bn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,"symbol"!=typeof t?t+"":t,n),Un=(e=>(e[e.Document=0]="Document",e[e.DocumentType=1]="DocumentType",e[e.Element=2]="Element",e[e.Text=3]="Text",e[e.CDATA=4]="CDATA",e[e.Comment=5]="Comment",e))(Un||{});const Hn={Node:["childNodes","parentNode","parentElement","textContent"],ShadowRoot:["host","styleSheets"],Element:["shadowRoot","querySelector","querySelectorAll"],MutationObserver:[]},zn={Node:["contains","getRootNode"],ShadowRoot:["getSelection"],Element:[],MutationObserver:["constructor"]},qn={},Wn=()=>!!globalThis.Zone;function Vn(e){if(qn[e])return qn[e];const t=globalThis[e],n=t.prototype,o=e in Hn?Hn[e]:void 0,r=Boolean(o&&o.every((e=>{var t,o;return Boolean(null==(o=null==(t=Object.getOwnPropertyDescriptor(n,e))?void 0:t.get)?void 0:o.toString().includes("[native code]"))}))),i=e in zn?zn[e]:void 0,a=Boolean(i&&i.every((e=>{var t;return"function"==typeof n[e]&&(null==(t=n[e])?void 0:t.toString().includes("[native code]"))})));if(r&&a&&!Wn())return qn[e]=t.prototype,t.prototype;try{const o=document.createElement("iframe");document.body.appendChild(o);const r=o.contentWindow;if(!r)return t.prototype;const i=r[e].prototype;return document.body.removeChild(o),i?qn[e]=i:n}catch{return n}}const Gn={};function Xn(e,t,n){var o;const r=`${e}.${String(n)}`;if(Gn[r])return Gn[r].call(t);const i=Vn(e),a=null==(o=Object.getOwnPropertyDescriptor(i,n))?void 0:o.get;return a?(Gn[r]=a,a.call(t)):t[n]}const Yn={};function Jn(e,t,n){const o=`${e}.${String(n)}`;if(Yn[o])return Yn[o].bind(t);const r=Vn(e)[n];return"function"!=typeof r?t[n]:(Yn[o]=r,r.bind(t))}const Kn={childNodes:function(e){return Xn("Node",e,"childNodes")},parentNode:function(e){return Xn("Node",e,"parentNode")},parentElement:function(e){return Xn("Node",e,"parentElement")},textContent:function(e){return Xn("Node",e,"textContent")},contains:function(e,t){return Jn("Node",e,"contains")(t)},getRootNode:function(e){return Jn("Node",e,"getRootNode")()},host:function(e){return e&&"host"in e?Xn("ShadowRoot",e,"host"):null},styleSheets:function(e){return e.styleSheets},shadowRoot:function(e){return e&&"shadowRoot"in e?Xn("Element",e,"shadowRoot"):null},querySelector:function(e,t){return Xn("Element",e,"querySelector")(t)},querySelectorAll:function(e,t){return Xn("Element",e,"querySelectorAll")(t)},mutationObserver:function(){return Vn("MutationObserver").constructor}};function Zn(e){return e.nodeType===e.ELEMENT_NODE}function $n(e){const t=e&&"host"in e&&"mode"in e&&Kn.host(e)||null;return Boolean(t&&"shadowRoot"in t&&Kn.shadowRoot(t)===e)}function Qn(e){return"[object ShadowRoot]"===Object.prototype.toString.call(e)}function eo(e){try{const n=e.rules||e.cssRules;if(!n)return null;let o=e.href;!o&&e.ownerNode&&e.ownerNode.ownerDocument&&(o=e.ownerNode.ownerDocument.location.href);const r=Array.from(n,(e=>to(e,o))).join("");return(t=r).includes(" background-clip: text;")&&!t.includes(" -webkit-background-clip: text;")&&(t=t.replace(/\sbackground-clip:\s*text;/g," -webkit-background-clip: text; background-clip: text;")),t}catch(n){return null}var t}function to(e,t){if(function(e){return"styleSheet"in e}(e)){let t;try{t=eo(e.styleSheet)||function(e){const{cssText:t}=e;if(t.split('"').length<3)return t;const n=["@import",`url(${JSON.stringify(e.href)})`];return""===e.layerName?n.push("layer"):e.layerName&&n.push(`layer(${e.layerName})`),e.supportsText&&n.push(`supports(${e.supportsText})`),e.media.length&&n.push(e.media.mediaText),n.join(" ")+";"}(e)}catch(n){t=e.cssText}return e.styleSheet.href?ho(t,e.styleSheet.href):t}{let n=e.cssText;return function(e){return"selectorText"in e}(e)&&e.selectorText.includes(":")&&(n=function(e){const t=/(\[(?:[\w-]+)[^\\])(:(?:[\w-]+)\])/gm;return e.replace(t,"$1\\$2")}(n)),t?ho(n,t):n}}class no{constructor(){_n(this,"idNodeMap",new Map),_n(this,"nodeMetaMap",new WeakMap)}getId(e){var t;if(!e)return-1;return(null==(t=this.getMeta(e))?void 0:t.id)??-1}getNode(e){return this.idNodeMap.get(e)||null}getIds(){return Array.from(this.idNodeMap.keys())}getMeta(e){return this.nodeMetaMap.get(e)||null}removeNodeFromMap(e){const t=this.getId(e);this.idNodeMap.delete(t),e.childNodes&&e.childNodes.forEach((e=>this.removeNodeFromMap(e)))}has(e){return this.idNodeMap.has(e)}hasNode(e){return this.nodeMetaMap.has(e)}add(e,t){const n=t.id;this.idNodeMap.set(n,e),this.nodeMetaMap.set(e,t)}replace(e,t){const n=this.getNode(e);if(n){const e=this.nodeMetaMap.get(n);e&&this.nodeMetaMap.set(t,e)}this.idNodeMap.set(e,t)}reset(){this.idNodeMap=new Map,this.nodeMetaMap=new WeakMap}}function oo({element:e,maskInputOptions:t,tagName:n,type:o,value:r,maskInputFn:i}){let a=r||"";const s=o&&ro(o);return(t[n.toLowerCase()]||s&&t[s])&&(a=i?i(a,e):"*".repeat(a.length)),a}function ro(e){return e.toLowerCase()}const io="__rrweb_original__";function ao(e){const t=e.type;return e.hasAttribute("data-rr-is-password")?"password":t?ro(t):null}function so(e,t){let n;try{n=new URL(e,t??window.location.href)}catch(r){return null}const o=n.pathname.match(/\.([0-9a-z]+)(?:$)/i);return(null==o?void 0:o[1])??null}const lo=/url\((?:(')([^']*)'|(")(.*?)"|([^)]*))\)/gm,co=/^(?:[a-z+]+:)?\/\//i,uo=/^www\..*/i,po=/^(data:)([^,]*),(.*)/i;function ho(e,t){return(e||"").replace(lo,((e,n,o,r,i,a)=>{const s=o||i||a,l=n||r||"";if(!s)return e;if(co.test(s)||uo.test(s))return`url(${l}${s}${l})`;if(po.test(s))return`url(${l}${s}${l})`;if("/"===s[0])return`url(${l}${function(e){let t="";return t=e.indexOf("//")>-1?e.split("/").slice(0,3).join("/"):e.split("/")[0],t=t.split("?")[0],t}(t)+s}${l})`;const c=t.split("/"),u=s.split("/");c.pop();for(const t of u)"."!==t&&(".."===t?c.pop():c.push(t));return`url(${l}${c.join("/")}${l})`}))}function fo(e){return e.replace(/(\/\*[^*]*\*\/)|[\s;]/g,"")}function mo(e,t){return function(e,t){const n=Array.from(t.childNodes),o=[];if(n.length>1&&e&&"string"==typeof e){const t=fo(e);for(let r=1;r=t.length);){let i=o(xo);if(","===i.slice(-1))i=Io(e,i.substring(0,i.length-1)),r.push(i);else{let o="";i=Io(e,i);let a=!1;for(;;){const e=t.charAt(n);if(""===e){r.push((i+o).trim());break}if(a)")"===e&&(a=!1);else{if(","===e){n+=1,r.push((i+o).trim());break}"("===e&&(a=!0)}o+=e,n+=1}}}return r.join(", ")}(e,o):"style"===n?ho(o,To(e)):"object"===t&&"data"===n?Io(e,o):o:Io(e,o):o}function Lo(e,t,n){return("video"===e||"audio"===e)&&"autoplay"===t}function Ao(e,t,n){if(!e)return!1;if(e.nodeType!==e.ELEMENT_NODE)return!!n&&Ao(Kn.parentNode(e),t,n);for(let o=e.classList.length;o--;){const n=e.classList[o];if(t.test(n))return!0}return!!n&&Ao(Kn.parentNode(e),t,n)}function Mo(e,t,n,o){let r;if(Zn(e)){if(r=e,!Kn.childNodes(r).length)return!1}else{if(null===Kn.parentElement(e))return!1;r=Kn.parentElement(e)}try{if("string"==typeof t){if(o){if(r.closest(`.${t}`))return!0}else if(r.classList.contains(t))return!0}else if(Ao(r,t,o))return!0;if(n)if(o){if(r.closest(n))return!0}else if(r.matches(n))return!0}catch(i){}return!1}function Ro(e,t){const{doc:n,mirror:o,blockClass:r,blockSelector:i,needsMask:a,inlineStylesheet:s,maskInputOptions:l={},maskTextFn:c,maskInputFn:u,dataURLOptions:d={},inlineImages:p,recordCanvas:h,keepIframeSrcFn:f,newlyAddedElement:m=!1,cssCaptured:g=!1}=t,v=function(e,t){if(!t.hasNode(e))return;const n=t.getId(e);return 1===n?void 0:n}(n,o);switch(e.nodeType){case e.DOCUMENT_NODE:return"CSS1Compat"!==e.compatMode?{type:Un.Document,childNodes:[],compatMode:e.compatMode}:{type:Un.Document,childNodes:[]};case e.DOCUMENT_TYPE_NODE:return{type:Un.DocumentType,name:e.name,publicId:e.publicId,systemId:e.systemId,rootId:v};case e.ELEMENT_NODE:return function(e,t){const{doc:n,blockClass:o,blockSelector:r,inlineStylesheet:i,maskInputOptions:a={},maskInputFn:s,dataURLOptions:l={},inlineImages:c,recordCanvas:u,keepIframeSrcFn:d,newlyAddedElement:p=!1,rootId:h}=t,f=function(e,t,n){try{if("string"==typeof t){if(e.classList.contains(t))return!0}else for(let n=e.classList.length;n--;){const o=e.classList[n];if(t.test(o))return!0}if(n)return e.matches(n)}catch(o){}return!1}(e,o,r),m=function(e){if(e instanceof HTMLFormElement)return"form";const t=ro(e.tagName);return vo.test(t)?"div":t}(e);let g={};const v=e.attributes.length;for(let w=0;wt.href===e.href));let o=null;t&&(o=eo(t)),o&&(delete g.rel,delete g.href,g._cssText=o)}if("style"===m&&e.sheet){let t=eo(e.sheet);t&&(e.childNodes.length>1&&(t=mo(t,e)),g._cssText=t)}if("input"===m||"textarea"===m||"select"===m){const t=e.value,n=e.checked;"radio"!==g.type&&"checkbox"!==g.type&&"submit"!==g.type&&"button"!==g.type&&t?g.value=oo({element:e,type:ao(e),tagName:m,value:t,maskInputOptions:a,maskInputFn:s}):n&&(g.checked=n)}"option"===m&&(e.selected&&!a.select?g.selected=!0:delete g.selected);"dialog"===m&&e.open&&(g.rr_open_mode=e.matches("dialog:modal")?"modal":"non-modal");if("canvas"===m&&u)if("2d"===e.__context)(function(e){const t=e.getContext("2d");if(!t)return!0;for(let n=0;n0!==e)))return!1}return!0})(e)||(g.rr_dataURL=e.toDataURL(l.type,l.quality));else if(!("__context"in e)){const t=e.toDataURL(l.type,l.quality),o=n.createElement("canvas");o.width=e.width,o.height=e.height;t!==o.toDataURL(l.type,l.quality)&&(g.rr_dataURL=t)}if("img"===m&&c){wo||(wo=n.createElement("canvas"),ko=wo.getContext("2d"));const t=e,o=t.currentSrc||t.getAttribute("src")||"",r=t.crossOrigin,i=()=>{t.removeEventListener("load",i);try{wo.width=t.naturalWidth,wo.height=t.naturalHeight,ko.drawImage(t,0,0),g.rr_dataURL=wo.toDataURL(l.type,l.quality)}catch(e){if("anonymous"!==t.crossOrigin)return t.crossOrigin="anonymous",void(t.complete&&0!==t.naturalWidth?i():t.addEventListener("load",i));console.warn(`Cannot inline img src=${o}! Error: ${e}`)}"anonymous"===t.crossOrigin&&(r?g.crossOrigin=r:t.removeAttribute("crossorigin"))};t.complete&&0!==t.naturalWidth?i():t.addEventListener("load",i)}if("audio"===m||"video"===m){const t=g;t.rr_mediaState=e.paused?"paused":"played",t.rr_mediaCurrentTime=e.currentTime,t.rr_mediaPlaybackRate=e.playbackRate,t.rr_mediaMuted=e.muted,t.rr_mediaLoop=e.loop,t.rr_mediaVolume=e.volume}p||(e.scrollLeft&&(g.rr_scrollLeft=e.scrollLeft),e.scrollTop&&(g.rr_scrollTop=e.scrollTop));if(f){const{width:t,height:n}=e.getBoundingClientRect();g={class:g.class,rr_width:`${t}px`,rr_height:`${n}px`}}"iframe"!==m||d(g.src)||(e.contentDocument||(g.rr_src=g.src),delete g.src);let y;try{customElements.get(m)&&(y=!0)}catch(b){}return{type:Un.Element,tagName:m,attributes:g,childNodes:[],isSVG:Eo(e)||void 0,needBlock:f,rootId:h,isCustom:y}}(e,{doc:n,blockClass:r,blockSelector:i,inlineStylesheet:s,maskInputOptions:l,maskInputFn:u,dataURLOptions:d,inlineImages:p,recordCanvas:h,keepIframeSrcFn:f,newlyAddedElement:m,rootId:v});case e.TEXT_NODE:return function(e,t){const{needsMask:n,maskTextFn:o,rootId:r,cssCaptured:i}=t,a=Kn.parentNode(e),s=a&&a.tagName;let l="";const c="STYLE"===s||void 0,u="SCRIPT"===s||void 0;u?l="SCRIPT_PLACEHOLDER":i||(l=Kn.textContent(e),c&&l&&(l=ho(l,To(t.doc))));!c&&!u&&l&&n&&(l=o?o(l,Kn.parentElement(e)):l.replace(/[\S]/g,"*"));return{type:Un.Text,textContent:l||"",rootId:r}}(e,{doc:n,needsMask:a,maskTextFn:c,rootId:v,cssCaptured:g});case e.CDATA_SECTION_NODE:return{type:Un.CDATA,textContent:"",rootId:v};case e.COMMENT_NODE:return{type:Un.Comment,textContent:Kn.textContent(e)||"",rootId:v};default:return!1}}function Po(e){return null==e?"":e.toLowerCase()}function Do(e,t){const{doc:n,mirror:o,blockClass:r,blockSelector:i,maskTextClass:a,maskTextSelector:s,skipChild:l=!1,inlineStylesheet:c=!0,maskInputOptions:u={},maskTextFn:d,maskInputFn:p,slimDOMOptions:h,dataURLOptions:f={},inlineImages:m=!1,recordCanvas:g=!1,onSerialize:v,onIframeLoad:y,iframeLoadTimeout:b=5e3,onStylesheetLoad:w,stylesheetLoadTimeout:k=5e3,keepIframeSrcFn:x=(()=>!1),newlyAddedElement:S=!1,cssCaptured:C=!1}=t;let{needsMask:I}=t,{preserveWhiteSpace:E=!0}=t;if(!I){I=Mo(e,a,s,void 0===I)}const T=Ro(e,{doc:n,mirror:o,blockClass:r,blockSelector:i,needsMask:I,inlineStylesheet:c,maskInputOptions:u,maskTextFn:d,maskInputFn:p,dataURLOptions:f,inlineImages:m,recordCanvas:g,keepIframeSrcFn:x,newlyAddedElement:S,cssCaptured:C});if(!T)return console.warn(e,"not serialized"),null;let O;O=o.hasNode(e)?o.getId(e):function(e,t){if(t.comment&&e.type===Un.Comment)return!0;if(e.type===Un.Element){if(t.script&&("script"===e.tagName||"link"===e.tagName&&("preload"===e.attributes.rel||"modulepreload"===e.attributes.rel)&&"script"===e.attributes.as||"link"===e.tagName&&"prefetch"===e.attributes.rel&&"string"==typeof e.attributes.href&&"js"===so(e.attributes.href)))return!0;if(t.headFavicon&&("link"===e.tagName&&"shortcut icon"===e.attributes.rel||"meta"===e.tagName&&(Po(e.attributes.name).match(/^msapplication-tile(image|color)$/)||"application-name"===Po(e.attributes.name)||"icon"===Po(e.attributes.rel)||"apple-touch-icon"===Po(e.attributes.rel)||"shortcut icon"===Po(e.attributes.rel))))return!0;if("meta"===e.tagName){if(t.headMetaDescKeywords&&Po(e.attributes.name).match(/^description|keywords$/))return!0;if(t.headMetaSocial&&(Po(e.attributes.property).match(/^(og|twitter|fb):/)||Po(e.attributes.name).match(/^(og|twitter):/)||"pinterest"===Po(e.attributes.name)))return!0;if(t.headMetaRobots&&("robots"===Po(e.attributes.name)||"googlebot"===Po(e.attributes.name)||"bingbot"===Po(e.attributes.name)))return!0;if(t.headMetaHttpEquiv&&void 0!==e.attributes["http-equiv"])return!0;if(t.headMetaAuthorship&&("author"===Po(e.attributes.name)||"generator"===Po(e.attributes.name)||"framework"===Po(e.attributes.name)||"publisher"===Po(e.attributes.name)||"progid"===Po(e.attributes.name)||Po(e.attributes.property).match(/^article:/)||Po(e.attributes.property).match(/^product:/)))return!0;if(t.headMetaVerification&&("google-site-verification"===Po(e.attributes.name)||"yandex-verification"===Po(e.attributes.name)||"csrf-token"===Po(e.attributes.name)||"p:domain_verify"===Po(e.attributes.name)||"verify-v1"===Po(e.attributes.name)||"verification"===Po(e.attributes.name)||"shopify-checkout-api-token"===Po(e.attributes.name)))return!0}}return!1}(T,h)||!E&&T.type===Un.Text&&!T.textContent.replace(/^\s+|\s+$/gm,"").length?yo:bo();const L=Object.assign(T,{id:O});if(o.add(e,L),O===yo)return null;v&&v(e);let A=!l;if(L.type===Un.Element){A=A&&!L.needBlock,delete L.needBlock;const t=Kn.shadowRoot(e);t&&Qn(t)&&(L.isShadowHost=!0)}if((L.type===Un.Document||L.type===Un.Element)&&A){h.headWhitespace&&L.type===Un.Element&&"head"===L.tagName&&(E=!1);const t={doc:n,mirror:o,blockClass:r,blockSelector:i,needsMask:I,maskTextClass:a,maskTextSelector:s,skipChild:l,inlineStylesheet:c,maskInputOptions:u,maskTextFn:d,maskInputFn:p,slimDOMOptions:h,dataURLOptions:f,inlineImages:m,recordCanvas:g,preserveWhiteSpace:E,onSerialize:v,onIframeLoad:y,iframeLoadTimeout:b,onStylesheetLoad:w,stylesheetLoadTimeout:k,keepIframeSrcFn:x,cssCaptured:!1};if(L.type===Un.Element&&"textarea"===L.tagName&&void 0!==L.attributes.value);else{L.type===Un.Element&&void 0!==L.attributes._cssText&&"string"==typeof L.attributes._cssText&&(t.cssCaptured=!0);for(const n of Array.from(Kn.childNodes(e))){const e=Do(n,t);e&&L.childNodes.push(e)}}let S=null;if(Zn(e)&&(S=Kn.shadowRoot(e)))for(const e of Array.from(Kn.childNodes(S))){const n=Do(e,t);n&&(Qn(S)&&(n.isShadow=!0),L.childNodes.push(n))}}const M=Kn.parentNode(e);return M&&$n(M)&&Qn(M)&&(L.isShadow=!0),L.type===Un.Element&&"iframe"===L.tagName&&function(e,t,n){const o=e.contentWindow;if(!o)return;let r,i=!1;try{r=o.document.readyState}catch(s){return}if("complete"!==r){const o=setTimeout((()=>{i||(t(),i=!0)}),n);return void e.addEventListener("load",(()=>{clearTimeout(o),i=!0,t()}))}const a="about:blank";if(o.location.href!==a||e.src===a||""===e.src)return setTimeout(t,0),e.addEventListener("load",t);e.addEventListener("load",t)}(e,(()=>{const t=e.contentDocument;if(t&&y){const n=Do(t,{doc:t,mirror:o,blockClass:r,blockSelector:i,needsMask:I,maskTextClass:a,maskTextSelector:s,skipChild:!1,inlineStylesheet:c,maskInputOptions:u,maskTextFn:d,maskInputFn:p,slimDOMOptions:h,dataURLOptions:f,inlineImages:m,recordCanvas:g,preserveWhiteSpace:E,onSerialize:v,onIframeLoad:y,iframeLoadTimeout:b,onStylesheetLoad:w,stylesheetLoadTimeout:k,keepIframeSrcFn:x});n&&y(e,n)}}),b),L.type===Un.Element&&"link"===L.tagName&&"string"==typeof L.attributes.rel&&("stylesheet"===L.attributes.rel||"preload"===L.attributes.rel&&"string"==typeof L.attributes.href&&"css"===so(L.attributes.href))&&function(e,t,n){let o,r=!1;try{o=e.sheet}catch(a){return}if(o)return;const i=setTimeout((()=>{r||(t(),r=!0)}),n);e.addEventListener("load",(()=>{clearTimeout(i),r=!0,t()}))}(e,(()=>{if(w){const t=Do(e,{doc:n,mirror:o,blockClass:r,blockSelector:i,needsMask:I,maskTextClass:a,maskTextSelector:s,skipChild:!1,inlineStylesheet:c,maskInputOptions:u,maskTextFn:d,maskInputFn:p,slimDOMOptions:h,dataURLOptions:f,inlineImages:m,recordCanvas:g,preserveWhiteSpace:E,onSerialize:v,onIframeLoad:y,iframeLoadTimeout:b,onStylesheetLoad:w,stylesheetLoadTimeout:k,keepIframeSrcFn:x});t&&w(e,t)}}),k),L}function No(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function jo(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var n=function e(){return this instanceof e?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,o.get?o:{enumerable:!0,get:function(){return e[t]}})})),n}var Fo={exports:{}},Bo=String,_o=function(){return{isColorSupported:!1,reset:Bo,bold:Bo,dim:Bo,italic:Bo,underline:Bo,inverse:Bo,hidden:Bo,strikethrough:Bo,black:Bo,red:Bo,green:Bo,yellow:Bo,blue:Bo,magenta:Bo,cyan:Bo,white:Bo,gray:Bo,bgBlack:Bo,bgRed:Bo,bgGreen:Bo,bgYellow:Bo,bgBlue:Bo,bgMagenta:Bo,bgCyan:Bo,bgWhite:Bo}};Fo.exports=_o(),Fo.exports.createColors=_o;var Uo=Fo.exports;const Ho=jo(Object.freeze(Object.defineProperty({__proto__:null,default:{}},Symbol.toStringTag,{value:"Module"})));let zo=Uo,qo=Ho,Wo=class e extends Error{constructor(t,n,o,r,i,a){super(t),this.name="CssSyntaxError",this.reason=t,i&&(this.file=i),r&&(this.source=r),a&&(this.plugin=a),void 0!==n&&void 0!==o&&("number"==typeof n?(this.line=n,this.column=o):(this.line=n.line,this.column=n.column,this.endLine=o.line,this.endColumn=o.column)),this.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(this,e)}setMessage(){this.message=this.plugin?this.plugin+": ":"",this.message+=this.file?this.file:"",void 0!==this.line&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason}showSourceCode(e){if(!this.source)return"";let t=this.source;null==e&&(e=zo.isColorSupported),qo&&e&&(t=qo(t));let n,o,r=t.split(/\r?\n/),i=Math.max(this.line-3,0),a=Math.min(this.line+2,r.length),s=String(a).length;if(e){let{bold:e,gray:t,red:r}=zo.createColors(!0);n=t=>e(r(t)),o=e=>t(e)}else n=o=e=>e;return r.slice(i,a).map(((e,t)=>{let r=i+1+t,a=" "+(" "+r).slice(-s)+" | ";if(r===this.line){let t=o(a.replace(/\d/g," "))+e.slice(0,this.column-1).replace(/[^\t]/g," ");return n(">")+o(a)+e+"\n "+t+n("^")}return" "+o(a)+e})).join("\n")}toString(){let e=this.showSourceCode();return e&&(e="\n\n"+e+"\n"),this.name+": "+this.message+e}};var Vo=Wo;Wo.default=Wo;var Go={};Go.isClean=Symbol("isClean"),Go.my=Symbol("my");const Xo={after:"\n",beforeClose:"\n",beforeComment:"\n",beforeDecl:"\n",beforeOpen:" ",beforeRule:"\n",colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:!1};let Yo=class{constructor(e){this.builder=e}atrule(e,t){let n="@"+e.name,o=e.params?this.rawValue(e,"params"):"";if(void 0!==e.raws.afterName?n+=e.raws.afterName:o&&(n+=" "),e.nodes)this.block(e,n+o);else{let r=(e.raws.between||"")+(t?";":"");this.builder(n+o+r,e)}}beforeAfter(e,t){let n;n="decl"===e.type?this.raw(e,null,"beforeDecl"):"comment"===e.type?this.raw(e,null,"beforeComment"):"before"===t?this.raw(e,null,"beforeRule"):this.raw(e,null,"beforeClose");let o=e.parent,r=0;for(;o&&"root"!==o.type;)r+=1,o=o.parent;if(n.includes("\n")){let t=this.raw(e,null,"indent");if(t.length)for(let e=0;e0&&"comment"===e.nodes[t].type;)t-=1;let n=this.raw(e,"semicolon");for(let o=0;o{if(o=e.raws[t],void 0!==o)return!1}))}var a;return void 0===o&&(o=Xo[n]),i.rawCache[n]=o,o}rawBeforeClose(e){let t;return e.walk((e=>{if(e.nodes&&e.nodes.length>0&&void 0!==e.raws.after)return t=e.raws.after,t.includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1})),t&&(t=t.replace(/\S/g,"")),t}rawBeforeComment(e,t){let n;return e.walkComments((e=>{if(void 0!==e.raws.before)return n=e.raws.before,n.includes("\n")&&(n=n.replace(/[^\n]+$/,"")),!1})),void 0===n?n=this.raw(t,null,"beforeDecl"):n&&(n=n.replace(/\S/g,"")),n}rawBeforeDecl(e,t){let n;return e.walkDecls((e=>{if(void 0!==e.raws.before)return n=e.raws.before,n.includes("\n")&&(n=n.replace(/[^\n]+$/,"")),!1})),void 0===n?n=this.raw(t,null,"beforeRule"):n&&(n=n.replace(/\S/g,"")),n}rawBeforeOpen(e){let t;return e.walk((e=>{if("decl"!==e.type&&(t=e.raws.between,void 0!==t))return!1})),t}rawBeforeRule(e){let t;return e.walk((n=>{if(n.nodes&&(n.parent!==e||e.first!==n)&&void 0!==n.raws.before)return t=n.raws.before,t.includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1})),t&&(t=t.replace(/\S/g,"")),t}rawColon(e){let t;return e.walkDecls((e=>{if(void 0!==e.raws.between)return t=e.raws.between.replace(/[^\s:]/g,""),!1})),t}rawEmptyBody(e){let t;return e.walk((e=>{if(e.nodes&&0===e.nodes.length&&(t=e.raws.after,void 0!==t))return!1})),t}rawIndent(e){if(e.raws.indent)return e.raws.indent;let t;return e.walk((n=>{let o=n.parent;if(o&&o!==e&&o.parent&&o.parent===e&&void 0!==n.raws.before){let e=n.raws.before.split("\n");return t=e[e.length-1],t=t.replace(/\S/g,""),!1}})),t}rawSemicolon(e){let t;return e.walk((e=>{if(e.nodes&&e.nodes.length&&"decl"===e.last.type&&(t=e.raws.semicolon,void 0!==t))return!1})),t}rawValue(e,t){let n=e[t],o=e.raws[t];return o&&o.value===n?o.raw:n}root(e){this.body(e),e.raws.after&&this.builder(e.raws.after)}rule(e){this.block(e,this.rawValue(e,"selector")),e.raws.ownSemicolon&&this.builder(e.raws.ownSemicolon,e,"end")}stringify(e,t){if(!this[e.type])throw new Error("Unknown AST node type "+e.type+". Maybe you need to change PostCSS stringifier.");this[e.type](e,t)}};var Jo=Yo;Yo.default=Yo;let Ko=Jo;function Zo(e,t){new Ko(t).stringify(e)}var $o=Zo;Zo.default=Zo;let{isClean:Qo,my:er}=Go,tr=Vo,nr=Jo,or=$o;function rr(e,t){let n=new e.constructor;for(let o in e){if(!Object.prototype.hasOwnProperty.call(e,o))continue;if("proxyCache"===o)continue;let r=e[o],i=typeof r;"parent"===o&&"object"===i?t&&(n[o]=t):"source"===o?n[o]=r:Array.isArray(r)?n[o]=r.map((e=>rr(e,n))):("object"===i&&null!==r&&(r=rr(r)),n[o]=r)}return n}let ir=class{constructor(e={}){this.raws={},this[Qo]=!1,this[er]=!0;for(let t in e)if("nodes"===t){this.nodes=[];for(let n of e[t])"function"==typeof n.clone?this.append(n.clone()):this.append(n)}else this[t]=e[t]}addToError(e){if(e.postcssNode=this,e.stack&&this.source&&/\n\s{4}at /.test(e.stack)){let t=this.source;e.stack=e.stack.replace(/\n\s{4}at /,`$&${t.input.from}:${t.start.line}:${t.start.column}$&`)}return e}after(e){return this.parent.insertAfter(this,e),this}assign(e={}){for(let t in e)this[t]=e[t];return this}before(e){return this.parent.insertBefore(this,e),this}cleanRaws(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between}clone(e={}){let t=rr(this);for(let n in e)t[n]=e[n];return t}cloneAfter(e={}){let t=this.clone(e);return this.parent.insertAfter(this,t),t}cloneBefore(e={}){let t=this.clone(e);return this.parent.insertBefore(this,t),t}error(e,t={}){if(this.source){let{end:n,start:o}=this.rangeBy(t);return this.source.input.error(e,{column:o.column,line:o.line},{column:n.column,line:n.line},t)}return new tr(e)}getProxyProcessor(){return{get:(e,t)=>"proxyOf"===t?e:"root"===t?()=>e.root().toProxy():e[t],set:(e,t,n)=>(e[t]===n||(e[t]=n,"prop"!==t&&"value"!==t&&"name"!==t&&"params"!==t&&"important"!==t&&"text"!==t||e.markDirty()),!0)}}markDirty(){if(this[Qo]){this[Qo]=!1;let e=this;for(;e=e.parent;)e[Qo]=!1}}next(){if(!this.parent)return;let e=this.parent.index(this);return this.parent.nodes[e+1]}positionBy(e,t){let n=this.source.start;if(e.index)n=this.positionInside(e.index,t);else if(e.word){let o=(t=this.toString()).indexOf(e.word);-1!==o&&(n=this.positionInside(o,t))}return n}positionInside(e,t){let n=t||this.toString(),o=this.source.start.column,r=this.source.start.line;for(let i=0;i"object"==typeof e&&e.toJSON?e.toJSON(null,t):e));else if("object"==typeof e&&e.toJSON)n[i]=e.toJSON(null,t);else if("source"===i){let o=t.get(e.input);null==o&&(o=r,t.set(e.input,r),r++),n[i]={end:e.end,inputId:o,start:e.start}}else n[i]=e}return o&&(n.inputs=[...t.keys()].map((e=>e.toJSON()))),n}toProxy(){return this.proxyCache||(this.proxyCache=new Proxy(this,this.getProxyProcessor())),this.proxyCache}toString(e=or){e.stringify&&(e=e.stringify);let t="";return e(this,(e=>{t+=e})),t}warn(e,t,n){let o={node:this};for(let r in n)o[r]=n[r];return e.warn(t,o)}get proxyOf(){return this}};var ar=ir;ir.default=ir;let sr=ar,lr=class extends sr{constructor(e){e&&void 0!==e.value&&"string"!=typeof e.value&&(e={...e,value:String(e.value)}),super(e),this.type="decl"}get variable(){return this.prop.startsWith("--")||"$"===this.prop[0]}};var cr=lr;lr.default=lr;var ur={nanoid:(e=21)=>{let t="",n=e;for(;n--;)t+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[64*Math.random()|0];return t},customAlphabet:(e,t=21)=>(n=t)=>{let o="",r=n;for(;r--;)o+=e[Math.random()*e.length|0];return o}};let{SourceMapConsumer:dr,SourceMapGenerator:pr}=Ho,{existsSync:hr,readFileSync:fr}=Ho,{dirname:mr,join:gr}=Ho;let vr=class{constructor(e,t){if(!1===t.map)return;this.loadAnnotation(e),this.inline=this.startWith(this.annotation,"data:");let n=t.map?t.map.prev:void 0,o=this.loadMap(t.from,n);!this.mapFile&&t.from&&(this.mapFile=t.from),this.mapFile&&(this.root=mr(this.mapFile)),o&&(this.text=o)}consumer(){return this.consumerCache||(this.consumerCache=new dr(this.text)),this.consumerCache}decodeInline(e){if(/^data:application\/json;charset=utf-?8,/.test(e)||/^data:application\/json,/.test(e))return decodeURIComponent(e.substr(RegExp.lastMatch.length));if(/^data:application\/json;charset=utf-?8;base64,/.test(e)||/^data:application\/json;base64,/.test(e))return t=e.substr(RegExp.lastMatch.length),Buffer?Buffer.from(t,"base64").toString():window.atob(t);var t;let n=e.match(/data:application\/json;([^,]+),/)[1];throw new Error("Unsupported source map encoding "+n)}getAnnotationURL(e){return e.replace(/^\/\*\s*# sourceMappingURL=/,"").trim()}isMap(e){return"object"==typeof e&&("string"==typeof e.mappings||"string"==typeof e._mappings||Array.isArray(e.sections))}loadAnnotation(e){let t=e.match(/\/\*\s*# sourceMappingURL=/gm);if(!t)return;let n=e.lastIndexOf(t.pop()),o=e.indexOf("*/",n);n>-1&&o>-1&&(this.annotation=this.getAnnotationURL(e.substring(n,o)))}loadFile(e){if(this.root=mr(e),hr(e))return this.mapFile=e,fr(e,"utf-8").toString().trim()}loadMap(e,t){if(!1===t)return!1;if(t){if("string"==typeof t)return t;if("function"!=typeof t){if(t instanceof dr)return pr.fromSourceMap(t).toString();if(t instanceof pr)return t.toString();if(this.isMap(t))return JSON.stringify(t);throw new Error("Unsupported previous source map format: "+t.toString())}{let n=t(e);if(n){let e=this.loadFile(n);if(!e)throw new Error("Unable to load previous source map: "+n.toString());return e}}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){let t=this.annotation;return e&&(t=gr(mr(e),t)),this.loadFile(t)}}}startWith(e,t){return!!e&&e.substr(0,t.length)===t}withContent(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)}};var yr=vr;vr.default=vr;let{SourceMapConsumer:br,SourceMapGenerator:wr}=Ho,{fileURLToPath:kr,pathToFileURL:xr}=Ho,{isAbsolute:Sr,resolve:Cr}=Ho,{nanoid:Ir}=ur,Er=Ho,Tr=Vo,Or=yr,Lr=Symbol("fromOffsetCache"),Ar=Boolean(br&&wr),Mr=Boolean(Cr&&Sr),Rr=class{constructor(e,t={}){if(null==e||"object"==typeof e&&!e.toString)throw new Error(`PostCSS received ${e} instead of CSS string`);if(this.css=e.toString(),"\ufeff"===this.css[0]||"￾"===this.css[0]?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,t.from&&(!Mr||/^\w+:\/\//.test(t.from)||Sr(t.from)?this.file=t.from:this.file=Cr(t.from)),Mr&&Ar){let e=new Or(this.css,t);if(e.text){this.map=e;let t=e.consumer().file;!this.file&&t&&(this.file=this.mapResolve(t))}}this.file||(this.id=""),this.map&&(this.map.file=this.from)}error(e,t,n,o={}){let r,i,a;if(t&&"object"==typeof t){let e=t,o=n;if("number"==typeof e.offset){let o=this.fromOffset(e.offset);t=o.line,n=o.col}else t=e.line,n=e.column;if("number"==typeof o.offset){let e=this.fromOffset(o.offset);i=e.line,a=e.col}else i=o.line,a=o.column}else if(!n){let e=this.fromOffset(t);t=e.line,n=e.col}let s=this.origin(t,n,i,a);return r=s?new Tr(e,void 0===s.endLine?s.line:{column:s.column,line:s.line},void 0===s.endLine?s.column:{column:s.endColumn,line:s.endLine},s.source,s.file,o.plugin):new Tr(e,void 0===i?t:{column:n,line:t},void 0===i?n:{column:a,line:i},this.css,this.file,o.plugin),r.input={column:n,endColumn:a,endLine:i,line:t,source:this.css},this.file&&(xr&&(r.input.url=xr(this.file).toString()),r.input.file=this.file),r}fromOffset(e){let t,n;if(this[Lr])n=this[Lr];else{let e=this.css.split("\n");n=new Array(e.length);let t=0;for(let o=0,r=e.length;o=t)o=n.length-1;else{let t,r=n.length-2;for(;o>1),e=n[t+1])){o=t;break}o=t+1}}return{col:e-n[o]+1,line:o+1}}mapResolve(e){return/^\w+:\/\//.test(e)?e:Cr(this.map.consumer().sourceRoot||this.map.root||".",e)}origin(e,t,n,o){if(!this.map)return!1;let r,i,a=this.map.consumer(),s=a.originalPositionFor({column:t,line:e});if(!s.source)return!1;"number"==typeof n&&(r=a.originalPositionFor({column:o,line:n})),i=Sr(s.source)?xr(s.source):new URL(s.source,this.map.consumer().sourceRoot||xr(this.map.mapFile));let l={column:s.column,endColumn:r&&r.column,endLine:r&&r.line,line:s.line,url:i.toString()};if("file:"===i.protocol){if(!kr)throw new Error("file: protocol is not available in this PostCSS build");l.file=kr(i)}let c=a.sourceContentFor(s.source);return c&&(l.source=c),l}toJSON(){let e={};for(let t of["hasBOM","css","file","id"])null!=this[t]&&(e[t]=this[t]);return this.map&&(e.map={...this.map},e.map.consumerCache&&(e.map.consumerCache=void 0)),e}get from(){return this.file||this.id}};var Pr=Rr;Rr.default=Rr,Er&&Er.registerInput&&Er.registerInput(Rr);let{SourceMapConsumer:Dr,SourceMapGenerator:Nr}=Ho,{dirname:jr,relative:Fr,resolve:Br,sep:_r}=Ho,{pathToFileURL:Ur}=Ho,Hr=Pr,zr=Boolean(Dr&&Nr),qr=Boolean(jr&&Br&&Fr&&_r);var Wr=class{constructor(e,t,n,o){this.stringify=e,this.mapOpts=n.map||{},this.root=t,this.opts=n,this.css=o,this.originalCSS=o,this.usesFileUrls=!this.mapOpts.from&&this.mapOpts.absolute,this.memoizedFileURLs=new Map,this.memoizedPaths=new Map,this.memoizedURLs=new Map}addAnnotation(){let e;e=this.isInline()?"data:application/json;base64,"+this.toBase64(this.map.toString()):"string"==typeof this.mapOpts.annotation?this.mapOpts.annotation:"function"==typeof this.mapOpts.annotation?this.mapOpts.annotation(this.opts.to,this.root):this.outputFile()+".map";let t="\n";this.css.includes("\r\n")&&(t="\r\n"),this.css+=t+"/*# sourceMappingURL="+e+" */"}applyPrevMaps(){for(let e of this.previous()){let t,n=this.toUrl(this.path(e.file)),o=e.root||jr(e.file);!1===this.mapOpts.sourcesContent?(t=new Dr(e.text),t.sourcesContent&&(t.sourcesContent=null)):t=e.consumer(),this.map.applySourceMap(t,n,this.toUrl(this.path(o)))}}clearAnnotation(){if(!1!==this.mapOpts.annotation)if(this.root){let e;for(let t=this.root.nodes.length-1;t>=0;t--)e=this.root.nodes[t],"comment"===e.type&&0===e.text.indexOf("# sourceMappingURL=")&&this.root.removeChild(t)}else this.css&&(this.css=this.css.replace(/\n*?\/\*#[\S\s]*?\*\/$/gm,""))}generate(){if(this.clearAnnotation(),qr&&zr&&this.isMap())return this.generateMap();{let e="";return this.stringify(this.root,(t=>{e+=t})),[e]}}generateMap(){if(this.root)this.generateString();else if(1===this.previous().length){let e=this.previous()[0].consumer();e.file=this.outputFile(),this.map=Nr.fromSourceMap(e,{ignoreInvalidMapping:!0})}else this.map=new Nr({file:this.outputFile(),ignoreInvalidMapping:!0}),this.map.addMapping({generated:{column:0,line:1},original:{column:0,line:1},source:this.opts.from?this.toUrl(this.path(this.opts.from)):""});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]}generateString(){this.css="",this.map=new Nr({file:this.outputFile(),ignoreInvalidMapping:!0});let e,t,n=1,o=1,r="",i={generated:{column:0,line:0},original:{column:0,line:0},source:""};this.stringify(this.root,((a,s,l)=>{if(this.css+=a,s&&"end"!==l&&(i.generated.line=n,i.generated.column=o-1,s.source&&s.source.start?(i.source=this.sourcePath(s),i.original.line=s.source.start.line,i.original.column=s.source.start.column-1,this.map.addMapping(i)):(i.source=r,i.original.line=1,i.original.column=0,this.map.addMapping(i))),e=a.match(/\n/g),e?(n+=e.length,t=a.lastIndexOf("\n"),o=a.length-t):o+=a.length,s&&"start"!==l){let e=s.parent||{raws:{}};("decl"===s.type||"atrule"===s.type&&!s.nodes)&&s===e.last&&!e.raws.semicolon||(s.source&&s.source.end?(i.source=this.sourcePath(s),i.original.line=s.source.end.line,i.original.column=s.source.end.column-1,i.generated.line=n,i.generated.column=o-2,this.map.addMapping(i)):(i.source=r,i.original.line=1,i.original.column=0,i.generated.line=n,i.generated.column=o-1,this.map.addMapping(i)))}}))}isAnnotation(){return!!this.isInline()||(void 0!==this.mapOpts.annotation?this.mapOpts.annotation:!this.previous().length||this.previous().some((e=>e.annotation)))}isInline(){if(void 0!==this.mapOpts.inline)return this.mapOpts.inline;let e=this.mapOpts.annotation;return(void 0===e||!0===e)&&(!this.previous().length||this.previous().some((e=>e.inline)))}isMap(){return void 0!==this.opts.map?!!this.opts.map:this.previous().length>0}isSourcesContent(){return void 0!==this.mapOpts.sourcesContent?this.mapOpts.sourcesContent:!this.previous().length||this.previous().some((e=>e.withContent()))}outputFile(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"}path(e){if(this.mapOpts.absolute)return e;if(60===e.charCodeAt(0))return e;if(/^\w+:\/\//.test(e))return e;let t=this.memoizedPaths.get(e);if(t)return t;let n=this.opts.to?jr(this.opts.to):".";"string"==typeof this.mapOpts.annotation&&(n=jr(Br(n,this.mapOpts.annotation)));let o=Fr(n,e);return this.memoizedPaths.set(e,o),o}previous(){if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk((e=>{if(e.source&&e.source.input.map){let t=e.source.input.map;this.previousMaps.includes(t)||this.previousMaps.push(t)}}));else{let e=new Hr(this.originalCSS,this.opts);e.map&&this.previousMaps.push(e.map)}return this.previousMaps}setSourcesContent(){let e={};if(this.root)this.root.walk((t=>{if(t.source){let n=t.source.input.from;if(n&&!e[n]){e[n]=!0;let o=this.usesFileUrls?this.toFileUrl(n):this.toUrl(this.path(n));this.map.setSourceContent(o,t.source.input.css)}}}));else if(this.css){let e=this.opts.from?this.toUrl(this.path(this.opts.from)):"";this.map.setSourceContent(e,this.css)}}sourcePath(e){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(e.source.input.from):this.toUrl(this.path(e.source.input.from))}toBase64(e){return Buffer?Buffer.from(e).toString("base64"):window.btoa(unescape(encodeURIComponent(e)))}toFileUrl(e){let t=this.memoizedFileURLs.get(e);if(t)return t;if(Ur){let t=Ur(e).toString();return this.memoizedFileURLs.set(e,t),t}throw new Error("`map.absolute` option is not available in this PostCSS build")}toUrl(e){let t=this.memoizedURLs.get(e);if(t)return t;"\\"===_r&&(e=e.replace(/\\/g,"/"));let n=encodeURI(e).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(e,n),n}};let Vr=ar,Gr=class extends Vr{constructor(e){super(e),this.type="comment"}};var Xr=Gr;Gr.default=Gr;let Yr,Jr,Kr,Zr,{isClean:$r,my:Qr}=Go,ei=cr,ti=Xr,ni=ar;function oi(e){return e.map((e=>(e.nodes&&(e.nodes=oi(e.nodes)),delete e.source,e)))}function ri(e){if(e[$r]=!1,e.proxyOf.nodes)for(let t of e.proxyOf.nodes)ri(t)}let ii=class e extends ni{append(...e){for(let t of e){let e=this.normalize(t,this.last);for(let t of e)this.proxyOf.nodes.push(t)}return this.markDirty(),this}cleanRaws(e){if(super.cleanRaws(e),this.nodes)for(let t of this.nodes)t.cleanRaws(e)}each(e){if(!this.proxyOf.nodes)return;let t,n,o=this.getIterator();for(;this.indexes[o]"proxyOf"===t?e:e[t]?"each"===t||"string"==typeof t&&t.startsWith("walk")?(...n)=>e[t](...n.map((e=>"function"==typeof e?(t,n)=>e(t.toProxy(),n):e))):"every"===t||"some"===t?n=>e[t](((e,...t)=>n(e.toProxy(),...t))):"root"===t?()=>e.root().toProxy():"nodes"===t?e.nodes.map((e=>e.toProxy())):"first"===t||"last"===t?e[t].toProxy():e[t]:e[t],set:(e,t,n)=>(e[t]===n||(e[t]=n,"name"!==t&&"params"!==t&&"selector"!==t||e.markDirty()),!0)}}index(e){return"number"==typeof e?e:(e.proxyOf&&(e=e.proxyOf),this.proxyOf.nodes.indexOf(e))}insertAfter(e,t){let n,o=this.index(e),r=this.normalize(t,this.proxyOf.nodes[o]).reverse();o=this.index(e);for(let i of r)this.proxyOf.nodes.splice(o+1,0,i);for(let i in this.indexes)n=this.indexes[i],o(t[Qr]||e.rebuild(t),(t=t.proxyOf).parent&&t.parent.removeChild(t),t[$r]&&ri(t),void 0===t.raws.before&&n&&void 0!==n.raws.before&&(t.raws.before=n.raws.before.replace(/\S/g,"")),t.parent=this.proxyOf,t)))}prepend(...e){e=e.reverse();for(let t of e){let e=this.normalize(t,this.first,"prepend").reverse();for(let t of e)this.proxyOf.nodes.unshift(t);for(let t in this.indexes)this.indexes[t]=this.indexes[t]+e.length}return this.markDirty(),this}push(e){return e.parent=this,this.proxyOf.nodes.push(e),this}removeAll(){for(let e of this.proxyOf.nodes)e.parent=void 0;return this.proxyOf.nodes=[],this.markDirty(),this}removeChild(e){let t;e=this.index(e),this.proxyOf.nodes[e].parent=void 0,this.proxyOf.nodes.splice(e,1);for(let n in this.indexes)t=this.indexes[n],t>=e&&(this.indexes[n]=t-1);return this.markDirty(),this}replaceValues(e,t,n){return n||(n=t,t={}),this.walkDecls((o=>{t.props&&!t.props.includes(o.prop)||t.fast&&!o.value.includes(t.fast)||(o.value=o.value.replace(e,n))})),this.markDirty(),this}some(e){return this.nodes.some(e)}walk(e){return this.each(((t,n)=>{let o;try{o=e(t,n)}catch(r){throw t.addToError(r)}return!1!==o&&t.walk&&(o=t.walk(e)),o}))}walkAtRules(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("atrule"===n.type&&e.test(n.name))return t(n,o)})):this.walk(((n,o)=>{if("atrule"===n.type&&n.name===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("atrule"===e.type)return t(e,n)})))}walkComments(e){return this.walk(((t,n)=>{if("comment"===t.type)return e(t,n)}))}walkDecls(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("decl"===n.type&&e.test(n.prop))return t(n,o)})):this.walk(((n,o)=>{if("decl"===n.type&&n.prop===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("decl"===e.type)return t(e,n)})))}walkRules(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("rule"===n.type&&e.test(n.selector))return t(n,o)})):this.walk(((n,o)=>{if("rule"===n.type&&n.selector===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("rule"===e.type)return t(e,n)})))}get first(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}get last(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}};ii.registerParse=e=>{Yr=e},ii.registerRule=e=>{Jr=e},ii.registerAtRule=e=>{Kr=e},ii.registerRoot=e=>{Zr=e};var ai=ii;ii.default=ii,ii.rebuild=e=>{"atrule"===e.type?Object.setPrototypeOf(e,Kr.prototype):"rule"===e.type?Object.setPrototypeOf(e,Jr.prototype):"decl"===e.type?Object.setPrototypeOf(e,ei.prototype):"comment"===e.type?Object.setPrototypeOf(e,ti.prototype):"root"===e.type&&Object.setPrototypeOf(e,Zr.prototype),e[Qr]=!0,e.nodes&&e.nodes.forEach((e=>{ii.rebuild(e)}))};let si,li,ci=ai,ui=class extends ci{constructor(e){super({type:"document",...e}),this.nodes||(this.nodes=[])}toResult(e={}){return new si(new li,this,e).stringify()}};ui.registerLazyResult=e=>{si=e},ui.registerProcessor=e=>{li=e};var di=ui;ui.default=ui;let pi=class{constructor(e,t={}){if(this.type="warning",this.text=e,t.node&&t.node.source){let e=t.node.rangeBy(t);this.line=e.start.line,this.column=e.start.column,this.endLine=e.end.line,this.endColumn=e.end.column}for(let n in t)this[n]=t[n]}toString(){return this.node?this.node.error(this.text,{index:this.index,plugin:this.plugin,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text}};var hi=pi;pi.default=pi;let fi=hi,mi=class{constructor(e,t,n){this.processor=e,this.messages=[],this.root=t,this.opts=n,this.css=void 0,this.map=void 0}toString(){return this.css}warn(e,t={}){t.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(t.plugin=this.lastPlugin.postcssPlugin);let n=new fi(e,t);return this.messages.push(n),n}warnings(){return this.messages.filter((e=>"warning"===e.type))}get content(){return this.css}};var gi=mi;mi.default=mi;const vi="'".charCodeAt(0),yi='"'.charCodeAt(0),bi="\\".charCodeAt(0),wi="/".charCodeAt(0),ki="\n".charCodeAt(0),xi=" ".charCodeAt(0),Si="\f".charCodeAt(0),Ci="\t".charCodeAt(0),Ii="\r".charCodeAt(0),Ei="[".charCodeAt(0),Ti="]".charCodeAt(0),Oi="(".charCodeAt(0),Li=")".charCodeAt(0),Ai="{".charCodeAt(0),Mi="}".charCodeAt(0),Ri=";".charCodeAt(0),Pi="*".charCodeAt(0),Di=":".charCodeAt(0),Ni="@".charCodeAt(0),ji=/[\t\n\f\r "#'()/;[\\\]{}]/g,Fi=/[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g,Bi=/.[\r\n"'(/\\]/,_i=/[\da-f]/i;let Ui=ai,Hi=class extends Ui{constructor(e){super(e),this.type="atrule"}append(...e){return this.proxyOf.nodes||(this.nodes=[]),super.append(...e)}prepend(...e){return this.proxyOf.nodes||(this.nodes=[]),super.prepend(...e)}};var zi=Hi;Hi.default=Hi,Ui.registerAtRule(Hi);let qi,Wi,Vi=ai,Gi=class extends Vi{constructor(e){super(e),this.type="root",this.nodes||(this.nodes=[])}normalize(e,t,n){let o=super.normalize(e);if(t)if("prepend"===n)this.nodes.length>1?t.raws.before=this.nodes[1].raws.before:delete t.raws.before;else if(this.first!==t)for(let r of o)r.raws.before=t.raws.before;return o}removeChild(e,t){let n=this.index(e);return!t&&0===n&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[n].raws.before),super.removeChild(e)}toResult(e={}){return new qi(new Wi,this,e).stringify()}};Gi.registerLazyResult=e=>{qi=e},Gi.registerProcessor=e=>{Wi=e};var Xi=Gi;Gi.default=Gi,Vi.registerRoot(Gi);let Yi={comma:e=>Yi.split(e,[","],!0),space:e=>Yi.split(e,[" ","\n","\t"]),split(e,t,n){let o=[],r="",i=!1,a=0,s=!1,l="",c=!1;for(let u of e)c?c=!1:"\\"===u?c=!0:s?u===l&&(s=!1):'"'===u||"'"===u?(s=!0,l=u):"("===u?a+=1:")"===u?a>0&&(a-=1):0===a&&t.includes(u)&&(i=!0),i?(""!==r&&o.push(r.trim()),r="",i=!1):r+=u;return(n||""!==r)&&o.push(r.trim()),o}};var Ji=Yi;Yi.default=Yi;let Ki=ai,Zi=Ji,$i=class extends Ki{constructor(e){super(e),this.type="rule",this.nodes||(this.nodes=[])}get selectors(){return Zi.comma(this.selector)}set selectors(e){let t=this.selector?this.selector.match(/,\s*/):null,n=t?t[0]:","+this.raw("between","beforeOpen");this.selector=e.join(n)}};var Qi=$i;$i.default=$i,Ki.registerRule($i);let ea=cr,ta=function(e,t={}){let n,o,r,i,a,s,l,c,u,d,p=e.css.valueOf(),h=t.ignoreErrors,f=p.length,m=0,g=[],v=[];function y(t){throw e.error("Unclosed "+t,m)}return{back:function(e){v.push(e)},endOfFile:function(){return 0===v.length&&m>=f},nextToken:function(e){if(v.length)return v.pop();if(m>=f)return;let t=!!e&&e.ignoreUnclosed;switch(n=p.charCodeAt(m),n){case ki:case xi:case Ci:case Ii:case Si:o=m;do{o+=1,n=p.charCodeAt(o)}while(n===xi||n===ki||n===Ci||n===Ii||n===Si);d=["space",p.slice(m,o)],m=o-1;break;case Ei:case Ti:case Ai:case Mi:case Di:case Ri:case Li:{let e=String.fromCharCode(n);d=[e,e,m];break}case Oi:if(c=g.length?g.pop()[1]:"",u=p.charCodeAt(m+1),"url"===c&&u!==vi&&u!==yi&&u!==xi&&u!==ki&&u!==Ci&&u!==Si&&u!==Ii){o=m;do{if(s=!1,o=p.indexOf(")",o+1),-1===o){if(h||t){o=m;break}y("bracket")}for(l=o;p.charCodeAt(l-1)===bi;)l-=1,s=!s}while(s);d=["brackets",p.slice(m,o+1),m,o],m=o}else o=p.indexOf(")",m+1),i=p.slice(m,o+1),-1===o||Bi.test(i)?d=["(","(",m]:(d=["brackets",i,m,o],m=o);break;case vi:case yi:r=n===vi?"'":'"',o=m;do{if(s=!1,o=p.indexOf(r,o+1),-1===o){if(h||t){o=m+1;break}y("string")}for(l=o;p.charCodeAt(l-1)===bi;)l-=1,s=!s}while(s);d=["string",p.slice(m,o+1),m,o],m=o;break;case Ni:ji.lastIndex=m+1,ji.test(p),o=0===ji.lastIndex?p.length-1:ji.lastIndex-2,d=["at-word",p.slice(m,o+1),m,o],m=o;break;case bi:for(o=m,a=!0;p.charCodeAt(o+1)===bi;)o+=1,a=!a;if(n=p.charCodeAt(o+1),a&&n!==wi&&n!==xi&&n!==ki&&n!==Ci&&n!==Ii&&n!==Si&&(o+=1,_i.test(p.charAt(o)))){for(;_i.test(p.charAt(o+1));)o+=1;p.charCodeAt(o+1)===xi&&(o+=1)}d=["word",p.slice(m,o+1),m,o],m=o;break;default:n===wi&&p.charCodeAt(m+1)===Pi?(o=p.indexOf("*/",m+2)+1,0===o&&(h||t?o=p.length:y("comment")),d=["comment",p.slice(m,o+1),m,o],m=o):(Fi.lastIndex=m+1,Fi.test(p),o=0===Fi.lastIndex?p.length-1:Fi.lastIndex-2,d=["word",p.slice(m,o+1),m,o],g.push(d),m=o)}return m++,d},position:function(){return m}}},na=Xr,oa=zi,ra=Xi,ia=Qi;const aa={empty:!0,space:!0};var sa=class{constructor(e){this.input=e,this.root=new ra,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:e,start:{column:1,line:1,offset:0}}}atrule(e){let t,n,o,r=new oa;r.name=e[1].slice(1),""===r.name&&this.unnamedAtrule(r,e),this.init(r,e[2]);let i=!1,a=!1,s=[],l=[];for(;!this.tokenizer.endOfFile();){if(t=(e=this.tokenizer.nextToken())[0],"("===t||"["===t?l.push("("===t?")":"]"):"{"===t&&l.length>0?l.push("}"):t===l[l.length-1]&&l.pop(),0===l.length){if(";"===t){r.source.end=this.getPosition(e[2]),r.source.end.offset++,this.semicolon=!0;break}if("{"===t){a=!0;break}if("}"===t){if(s.length>0){for(o=s.length-1,n=s[o];n&&"space"===n[0];)n=s[--o];n&&(r.source.end=this.getPosition(n[3]||n[2]),r.source.end.offset++)}this.end(e);break}s.push(e)}else s.push(e);if(this.tokenizer.endOfFile()){i=!0;break}}r.raws.between=this.spacesAndCommentsFromEnd(s),s.length?(r.raws.afterName=this.spacesAndCommentsFromStart(s),this.raw(r,"params",s),i&&(e=s[s.length-1],r.source.end=this.getPosition(e[3]||e[2]),r.source.end.offset++,this.spaces=r.raws.between,r.raws.between="")):(r.raws.afterName="",r.params=""),a&&(r.nodes=[],this.current=r)}checkMissedSemicolon(e){let t=this.colon(e);if(!1===t)return;let n,o=0;for(let r=t-1;r>=0&&(n=e[r],"space"===n[0]||(o+=1,2!==o));r--);throw this.input.error("Missed semicolon","word"===n[0]?n[3]+1:n[2])}colon(e){let t,n,o,r=0;for(let[i,a]of e.entries()){if(t=a,n=t[0],"("===n&&(r+=1),")"===n&&(r-=1),0===r&&":"===n){if(o){if("word"===o[0]&&"progid"===o[1])continue;return i}this.doubleColon(t)}o=t}return!1}comment(e){let t=new na;this.init(t,e[2]),t.source.end=this.getPosition(e[3]||e[2]),t.source.end.offset++;let n=e[1].slice(2,-2);if(/^\s*$/.test(n))t.text="",t.raws.left=n,t.raws.right="";else{let e=n.match(/^(\s*)([^]*\S)(\s*)$/);t.text=e[2],t.raws.left=e[1],t.raws.right=e[3]}}createTokenizer(){this.tokenizer=ta(this.input)}decl(e,t){let n=new ea;this.init(n,e[0][2]);let o,r=e[e.length-1];for(";"===r[0]&&(this.semicolon=!0,e.pop()),n.source.end=this.getPosition(r[3]||r[2]||function(e){for(let t=e.length-1;t>=0;t--){let n=e[t],o=n[3]||n[2];if(o)return o}}(e)),n.source.end.offset++;"word"!==e[0][0];)1===e.length&&this.unknownWord(e),n.raws.before+=e.shift()[1];for(n.source.start=this.getPosition(e[0][2]),n.prop="";e.length;){let t=e[0][0];if(":"===t||"space"===t||"comment"===t)break;n.prop+=e.shift()[1]}for(n.raws.between="";e.length;){if(o=e.shift(),":"===o[0]){n.raws.between+=o[1];break}"word"===o[0]&&/\w/.test(o[1])&&this.unknownWord([o]),n.raws.between+=o[1]}"_"!==n.prop[0]&&"*"!==n.prop[0]||(n.raws.before+=n.prop[0],n.prop=n.prop.slice(1));let i,a=[];for(;e.length&&(i=e[0][0],"space"===i||"comment"===i);)a.push(e.shift());this.precheckMissedSemicolon(e);for(let s=e.length-1;s>=0;s--){if(o=e[s],"!important"===o[1].toLowerCase()){n.important=!0;let t=this.stringFrom(e,s);t=this.spacesFromEnd(e)+t," !important"!==t&&(n.raws.important=t);break}if("important"===o[1].toLowerCase()){let t=e.slice(0),o="";for(let e=s;e>0;e--){let n=t[e][0];if(0===o.trim().indexOf("!")&&"space"!==n)break;o=t.pop()[1]+o}0===o.trim().indexOf("!")&&(n.important=!0,n.raws.important=o,e=t)}if("space"!==o[0]&&"comment"!==o[0])break}e.some((e=>"space"!==e[0]&&"comment"!==e[0]))&&(n.raws.between+=a.map((e=>e[1])).join(""),a=[]),this.raw(n,"value",a.concat(e),t),n.value.includes(":")&&!t&&this.checkMissedSemicolon(e)}doubleColon(e){throw this.input.error("Double colon",{offset:e[2]},{offset:e[2]+e[1].length})}emptyRule(e){let t=new ia;this.init(t,e[2]),t.selector="",t.raws.between="",this.current=t}end(e){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(e[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(e)}endFile(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position())}freeSemicolon(e){if(this.spaces+=e[1],this.current.nodes){let e=this.current.nodes[this.current.nodes.length-1];e&&"rule"===e.type&&!e.raws.ownSemicolon&&(e.raws.ownSemicolon=this.spaces,this.spaces="")}}getPosition(e){let t=this.input.fromOffset(e);return{column:t.col,line:t.line,offset:e}}init(e,t){this.current.push(e),e.source={input:this.input,start:this.getPosition(t)},e.raws.before=this.spaces,this.spaces="","comment"!==e.type&&(this.semicolon=!1)}other(e){let t=!1,n=null,o=!1,r=null,i=[],a=e[1].startsWith("--"),s=[],l=e;for(;l;){if(n=l[0],s.push(l),"("===n||"["===n)r||(r=l),i.push("("===n?")":"]");else if(a&&o&&"{"===n)r||(r=l),i.push("}");else if(0===i.length){if(";"===n){if(o)return void this.decl(s,a);break}if("{"===n)return void this.rule(s);if("}"===n){this.tokenizer.back(s.pop()),t=!0;break}":"===n&&(o=!0)}else n===i[i.length-1]&&(i.pop(),0===i.length&&(r=null));l=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(t=!0),i.length>0&&this.unclosedBracket(r),t&&o){if(!a)for(;s.length&&(l=s[s.length-1][0],"space"===l||"comment"===l);)this.tokenizer.back(s.pop());this.decl(s,a)}else this.unknownWord(s)}parse(){let e;for(;!this.tokenizer.endOfFile();)switch(e=this.tokenizer.nextToken(),e[0]){case"space":this.spaces+=e[1];break;case";":this.freeSemicolon(e);break;case"}":this.end(e);break;case"comment":this.comment(e);break;case"at-word":this.atrule(e);break;case"{":this.emptyRule(e);break;default:this.other(e)}this.endFile()}precheckMissedSemicolon(){}raw(e,t,n,o){let r,i,a,s,l=n.length,c="",u=!0;for(let d=0;de+t[1]),"");e.raws[t]={raw:o,value:c}}e[t]=c}rule(e){e.pop();let t=new ia;this.init(t,e[0][2]),t.raws.between=this.spacesAndCommentsFromEnd(e),this.raw(t,"selector",e),this.current=t}spacesAndCommentsFromEnd(e){let t,n="";for(;e.length&&(t=e[e.length-1][0],"space"===t||"comment"===t);)n=e.pop()[1]+n;return n}spacesAndCommentsFromStart(e){let t,n="";for(;e.length&&(t=e[0][0],"space"===t||"comment"===t);)n+=e.shift()[1];return n}spacesFromEnd(e){let t,n="";for(;e.length&&(t=e[e.length-1][0],"space"===t);)n=e.pop()[1]+n;return n}stringFrom(e,t){let n="";for(let o=t;oLa(e))),e}let Aa={},Ma=class e{constructor(t,n,o){let r;if(this.stringified=!1,this.processed=!1,"object"!=typeof n||null===n||"root"!==n.type&&"document"!==n.type)if(n instanceof e||n instanceof ba)r=La(n.root),n.map&&(void 0===o.map&&(o.map={}),o.map.inline||(o.map.inline=!1),o.map.prev=n.map);else{let e=wa;o.syntax&&(e=o.syntax.parse),o.parser&&(e=o.parser),e.parse&&(e=e.parse);try{r=e(n,o)}catch(i){this.processed=!0,this.error=i}r&&!r[fa]&&va.rebuild(r)}else r=La(n);this.result=new ba(t,r,o),this.helpers={...Aa,postcss:Aa,result:this.result},this.plugins=this.processor.plugins.map((e=>"object"==typeof e&&e.prepare?{...e,...e.prepare(this.result)}:e))}async(){return this.error?Promise.reject(this.error):this.processed?Promise.resolve(this.result):(this.processing||(this.processing=this.runAsync()),this.processing)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}getAsyncError(){throw new Error("Use process(css).then(cb) to work with async plugins")}handleError(e,t){let n=this.result.lastPlugin;try{t&&t.addToError(e),this.error=e,"CssSyntaxError"!==e.name||e.plugin?n.postcssVersion:(e.plugin=n.postcssPlugin,e.setMessage())}catch(o){console&&console.error&&console.error(o)}return e}prepareVisitors(){this.listeners={};let e=(e,t,n)=>{this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].push([e,n])};for(let t of this.plugins)if("object"==typeof t)for(let n in t){if(!Sa[n]&&/^[A-Z]/.test(n))throw new Error(`Unknown event ${n} in ${t.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`);if(!Ca[n])if("object"==typeof t[n])for(let o in t[n])e(t,"*"===o?n:n+"-"+o.toLowerCase(),t[n][o]);else"function"==typeof t[n]&&e(t,n,t[n])}this.hasListener=Object.keys(this.listeners).length>0}async runAsync(){this.plugin=0;for(let n=0;n0;){let e=this.visitTick(n);if(Ea(e))try{await e}catch(t){let e=n[n.length-1].node;throw this.handleError(t,e)}}}if(this.listeners.OnceExit)for(let[n,o]of this.listeners.OnceExit){this.result.lastPlugin=n;try{if("document"===e.type){let t=e.nodes.map((e=>o(e,this.helpers)));await Promise.all(t)}else await o(e,this.helpers)}catch(t){throw this.handleError(t)}}}return this.processed=!0,this.stringify()}runOnRoot(e){this.result.lastPlugin=e;try{if("object"==typeof e&&e.Once){if("document"===this.result.root.type){let t=this.result.root.nodes.map((t=>e.Once(t,this.helpers)));return Ea(t[0])?Promise.all(t):t}return e.Once(this.result.root,this.helpers)}if("function"==typeof e)return e(this.result.root,this.result)}catch(t){throw this.handleError(t)}}stringify(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();let e=this.result.opts,t=ga;e.syntax&&(t=e.syntax.stringify),e.stringifier&&(t=e.stringifier),t.stringify&&(t=t.stringify);let n=new ma(t,this.result.root,this.result.opts).generate();return this.result.css=n[0],this.result.map=n[1],this.result}sync(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(let e of this.plugins){if(Ea(this.runOnRoot(e)))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){let e=this.result.root;for(;!e[ha];)e[ha]=!0,this.walkSync(e);if(this.listeners.OnceExit)if("document"===e.type)for(let t of e.nodes)this.visitSync(this.listeners.OnceExit,t);else this.visitSync(this.listeners.OnceExit,e)}return this.result}then(e,t){return this.async().then(e,t)}toString(){return this.css}visitSync(e,t){for(let[o,r]of e){let e;this.result.lastPlugin=o;try{e=r(t,this.helpers)}catch(n){throw this.handleError(n,t.proxyOf)}if("root"!==t.type&&"document"!==t.type&&!t.parent)return!0;if(Ea(e))throw this.getAsyncError()}}visitTick(e){let t=e[e.length-1],{node:n,visitors:o}=t;if("root"!==n.type&&"document"!==n.type&&!n.parent)return void e.pop();if(o.length>0&&t.visitorIndex{e[ha]||this.walkSync(e)}));else{let t=this.listeners[n];if(t&&this.visitSync(t,e.toProxy()))return}}warnings(){return this.sync().warnings()}get content(){return this.stringify().content}get css(){return this.stringify().css}get map(){return this.stringify().map}get messages(){return this.sync().messages}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){return this.sync().root}get[Symbol.toStringTag](){return"LazyResult"}};Ma.registerPostcss=e=>{Aa=e};var Ra=Ma;Ma.default=Ma,ka.registerLazyResult(Ma),ya.registerLazyResult(Ma);let Pa=Wr,Da=$o,Na=pa;const ja=gi;let Fa=class{constructor(e,t,n){let o;t=t.toString(),this.stringified=!1,this._processor=e,this._css=t,this._opts=n,this._map=void 0;let r=Da;this.result=new ja(this._processor,o,this._opts),this.result.css=t;let i=this;Object.defineProperty(this.result,"root",{get:()=>i.root});let a=new Pa(r,o,this._opts,t);if(a.isMap()){let[e,t]=a.generate();e&&(this.result.css=e),t&&(this.result.map=t)}else a.clearAnnotation(),this.result.css=a.css}async(){return this.error?Promise.reject(this.error):Promise.resolve(this.result)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}sync(){if(this.error)throw this.error;return this.result}then(e,t){return this.async().then(e,t)}toString(){return this._css}warnings(){return[]}get content(){return this.result.css}get css(){return this.result.css}get map(){return this.result.map}get messages(){return[]}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){if(this._root)return this._root;let e,t=Na;try{e=t(this._css,this._opts)}catch(n){this.error=n}if(this.error)throw this.error;return this._root=e,e}get[Symbol.toStringTag](){return"NoWorkResult"}};var Ba=Fa;Fa.default=Fa;let _a=Ba,Ua=Ra,Ha=di,za=Xi,qa=class{constructor(e=[]){this.version="8.4.38",this.plugins=this.normalize(e)}normalize(e){let t=[];for(let n of e)if(!0===n.postcss?n=n():n.postcss&&(n=n.postcss),"object"==typeof n&&Array.isArray(n.plugins))t=t.concat(n.plugins);else if("object"==typeof n&&n.postcssPlugin)t.push(n);else if("function"==typeof n)t.push(n);else{if("object"!=typeof n||!n.parse&&!n.stringify)throw new Error(n+" is not a PostCSS plugin")}return t}process(e,t={}){return this.plugins.length||t.parser||t.stringifier||t.syntax?new Ua(this,e,t):new _a(this,e,t)}use(e){return this.plugins=this.plugins.concat(this.normalize([e])),this}};var Wa=qa;qa.default=qa,za.registerProcessor(qa),Ha.registerProcessor(qa);let Va=cr,Ga=yr,Xa=Xr,Ya=zi,Ja=Pr,Ka=Xi,Za=Qi;function $a(e,t){if(Array.isArray(e))return e.map((e=>$a(e)));let{inputs:n,...o}=e;if(n){t=[];for(let e of n){let n={...e,__proto__:Ja.prototype};n.map&&(n.map={...n.map,__proto__:Ga.prototype}),t.push(n)}}if(o.nodes&&(o.nodes=e.nodes.map((e=>$a(e,t)))),o.source){let{inputId:e,...n}=o.source;o.source=n,null!=e&&(o.source.input=t[e])}if("root"===o.type)return new Ka(o);if("decl"===o.type)return new Va(o);if("rule"===o.type)return new Za(o);if("comment"===o.type)return new Xa(o);if("atrule"===o.type)return new Ya(o);throw new Error("Unknown node type: "+e.type)}var Qa=$a;$a.default=$a;let es=Vo,ts=cr,ns=Ra,os=ai,rs=Wa,is=$o,as=Qa,ss=di,ls=hi,cs=Xr,us=zi,ds=gi,ps=Pr,hs=pa,fs=Ji,ms=Qi,gs=Xi,vs=ar;function ys(...e){return 1===e.length&&Array.isArray(e[0])&&(e=e[0]),new rs(e)}ys.plugin=function(e,t){let n,o=!1;function r(...n){console&&console.warn&&!o&&(o=!0,console.warn(e+": postcss.plugin was deprecated. Migration guide:\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration"),process.env.LANG&&process.env.LANG.startsWith("cn")&&console.warn(e+": 里面 postcss.plugin 被弃用. 迁移指南:\nhttps://www.w3ctech.com/topic/2226"));let r=t(...n);return r.postcssPlugin=e,r.postcssVersion=(new rs).version,r}return Object.defineProperty(r,"postcss",{get:()=>(n||(n=r()),n)}),r.process=function(e,t,n){return ys([r(n)]).process(e,t)},r},ys.stringify=is,ys.parse=hs,ys.fromJSON=as,ys.list=fs,ys.comment=e=>new cs(e),ys.atRule=e=>new us(e),ys.decl=e=>new ts(e),ys.rule=e=>new ms(e),ys.root=e=>new gs(e),ys.document=e=>new ss(e),ys.CssSyntaxError=es,ys.Declaration=ts,ys.Container=os,ys.Processor=rs,ys.Document=ss,ys.Comment=cs,ys.Warning=ls,ys.AtRule=us,ys.Result=ds,ys.Input=ps,ys.Rule=ms,ys.Root=gs,ys.Node=vs,ns.registerPostcss(ys);var bs=ys;ys.default=ys;const ws=No(bs);ws.stringify,ws.fromJSON,ws.plugin,ws.parse,ws.list,ws.document,ws.comment,ws.atRule,ws.rule,ws.decl,ws.root,ws.CssSyntaxError,ws.Declaration,ws.Container,ws.Processor,ws.Document,ws.Comment,ws.Warning,ws.AtRule,ws.Result,ws.Input,ws.Rule,ws.Root,ws.Node;var ks=Object.defineProperty,xs=(e,t,n)=>((e,t,n)=>t in e?ks(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,"symbol"!=typeof t?t+"":t,n);function Ss(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function Cs(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var n=function e(){return this instanceof e?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,o.get?o:{enumerable:!0,get:function(){return e[t]}})})),n}var Is={exports:{}},Es=String,Ts=function(){return{isColorSupported:!1,reset:Es,bold:Es,dim:Es,italic:Es,underline:Es,inverse:Es,hidden:Es,strikethrough:Es,black:Es,red:Es,green:Es,yellow:Es,blue:Es,magenta:Es,cyan:Es,white:Es,gray:Es,bgBlack:Es,bgRed:Es,bgGreen:Es,bgYellow:Es,bgBlue:Es,bgMagenta:Es,bgCyan:Es,bgWhite:Es}};Is.exports=Ts(),Is.exports.createColors=Ts;var Os=Is.exports;const Ls=Cs(Object.freeze(Object.defineProperty({__proto__:null,default:{}},Symbol.toStringTag,{value:"Module"})));let As=Os,Ms=Ls,Rs=class e extends Error{constructor(t,n,o,r,i,a){super(t),this.name="CssSyntaxError",this.reason=t,i&&(this.file=i),r&&(this.source=r),a&&(this.plugin=a),void 0!==n&&void 0!==o&&("number"==typeof n?(this.line=n,this.column=o):(this.line=n.line,this.column=n.column,this.endLine=o.line,this.endColumn=o.column)),this.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(this,e)}setMessage(){this.message=this.plugin?this.plugin+": ":"",this.message+=this.file?this.file:"",void 0!==this.line&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason}showSourceCode(e){if(!this.source)return"";let t=this.source;null==e&&(e=As.isColorSupported),Ms&&e&&(t=Ms(t));let n,o,r=t.split(/\r?\n/),i=Math.max(this.line-3,0),a=Math.min(this.line+2,r.length),s=String(a).length;if(e){let{bold:e,gray:t,red:r}=As.createColors(!0);n=t=>e(r(t)),o=e=>t(e)}else n=o=e=>e;return r.slice(i,a).map(((e,t)=>{let r=i+1+t,a=" "+(" "+r).slice(-s)+" | ";if(r===this.line){let t=o(a.replace(/\d/g," "))+e.slice(0,this.column-1).replace(/[^\t]/g," ");return n(">")+o(a)+e+"\n "+t+n("^")}return" "+o(a)+e})).join("\n")}toString(){let e=this.showSourceCode();return e&&(e="\n\n"+e+"\n"),this.name+": "+this.message+e}};var Ps=Rs;Rs.default=Rs;var Ds={};Ds.isClean=Symbol("isClean"),Ds.my=Symbol("my");const Ns={after:"\n",beforeClose:"\n",beforeComment:"\n",beforeDecl:"\n",beforeOpen:" ",beforeRule:"\n",colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:!1};let js=class{constructor(e){this.builder=e}atrule(e,t){let n="@"+e.name,o=e.params?this.rawValue(e,"params"):"";if(void 0!==e.raws.afterName?n+=e.raws.afterName:o&&(n+=" "),e.nodes)this.block(e,n+o);else{let r=(e.raws.between||"")+(t?";":"");this.builder(n+o+r,e)}}beforeAfter(e,t){let n;n="decl"===e.type?this.raw(e,null,"beforeDecl"):"comment"===e.type?this.raw(e,null,"beforeComment"):"before"===t?this.raw(e,null,"beforeRule"):this.raw(e,null,"beforeClose");let o=e.parent,r=0;for(;o&&"root"!==o.type;)r+=1,o=o.parent;if(n.includes("\n")){let t=this.raw(e,null,"indent");if(t.length)for(let e=0;e0&&"comment"===e.nodes[t].type;)t-=1;let n=this.raw(e,"semicolon");for(let o=0;o{if(o=e.raws[t],void 0!==o)return!1}))}var a;return void 0===o&&(o=Ns[n]),i.rawCache[n]=o,o}rawBeforeClose(e){let t;return e.walk((e=>{if(e.nodes&&e.nodes.length>0&&void 0!==e.raws.after)return t=e.raws.after,t.includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1})),t&&(t=t.replace(/\S/g,"")),t}rawBeforeComment(e,t){let n;return e.walkComments((e=>{if(void 0!==e.raws.before)return n=e.raws.before,n.includes("\n")&&(n=n.replace(/[^\n]+$/,"")),!1})),void 0===n?n=this.raw(t,null,"beforeDecl"):n&&(n=n.replace(/\S/g,"")),n}rawBeforeDecl(e,t){let n;return e.walkDecls((e=>{if(void 0!==e.raws.before)return n=e.raws.before,n.includes("\n")&&(n=n.replace(/[^\n]+$/,"")),!1})),void 0===n?n=this.raw(t,null,"beforeRule"):n&&(n=n.replace(/\S/g,"")),n}rawBeforeOpen(e){let t;return e.walk((e=>{if("decl"!==e.type&&(t=e.raws.between,void 0!==t))return!1})),t}rawBeforeRule(e){let t;return e.walk((n=>{if(n.nodes&&(n.parent!==e||e.first!==n)&&void 0!==n.raws.before)return t=n.raws.before,t.includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1})),t&&(t=t.replace(/\S/g,"")),t}rawColon(e){let t;return e.walkDecls((e=>{if(void 0!==e.raws.between)return t=e.raws.between.replace(/[^\s:]/g,""),!1})),t}rawEmptyBody(e){let t;return e.walk((e=>{if(e.nodes&&0===e.nodes.length&&(t=e.raws.after,void 0!==t))return!1})),t}rawIndent(e){if(e.raws.indent)return e.raws.indent;let t;return e.walk((n=>{let o=n.parent;if(o&&o!==e&&o.parent&&o.parent===e&&void 0!==n.raws.before){let e=n.raws.before.split("\n");return t=e[e.length-1],t=t.replace(/\S/g,""),!1}})),t}rawSemicolon(e){let t;return e.walk((e=>{if(e.nodes&&e.nodes.length&&"decl"===e.last.type&&(t=e.raws.semicolon,void 0!==t))return!1})),t}rawValue(e,t){let n=e[t],o=e.raws[t];return o&&o.value===n?o.raw:n}root(e){this.body(e),e.raws.after&&this.builder(e.raws.after)}rule(e){this.block(e,this.rawValue(e,"selector")),e.raws.ownSemicolon&&this.builder(e.raws.ownSemicolon,e,"end")}stringify(e,t){if(!this[e.type])throw new Error("Unknown AST node type "+e.type+". Maybe you need to change PostCSS stringifier.");this[e.type](e,t)}};var Fs=js;js.default=js;let Bs=Fs;function _s(e,t){new Bs(t).stringify(e)}var Us=_s;_s.default=_s;let{isClean:Hs,my:zs}=Ds,qs=Ps,Ws=Fs,Vs=Us;function Gs(e,t){let n=new e.constructor;for(let o in e){if(!Object.prototype.hasOwnProperty.call(e,o))continue;if("proxyCache"===o)continue;let r=e[o],i=typeof r;"parent"===o&&"object"===i?t&&(n[o]=t):"source"===o?n[o]=r:Array.isArray(r)?n[o]=r.map((e=>Gs(e,n))):("object"===i&&null!==r&&(r=Gs(r)),n[o]=r)}return n}let Xs=class{constructor(e={}){this.raws={},this[Hs]=!1,this[zs]=!0;for(let t in e)if("nodes"===t){this.nodes=[];for(let n of e[t])"function"==typeof n.clone?this.append(n.clone()):this.append(n)}else this[t]=e[t]}addToError(e){if(e.postcssNode=this,e.stack&&this.source&&/\n\s{4}at /.test(e.stack)){let t=this.source;e.stack=e.stack.replace(/\n\s{4}at /,`$&${t.input.from}:${t.start.line}:${t.start.column}$&`)}return e}after(e){return this.parent.insertAfter(this,e),this}assign(e={}){for(let t in e)this[t]=e[t];return this}before(e){return this.parent.insertBefore(this,e),this}cleanRaws(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between}clone(e={}){let t=Gs(this);for(let n in e)t[n]=e[n];return t}cloneAfter(e={}){let t=this.clone(e);return this.parent.insertAfter(this,t),t}cloneBefore(e={}){let t=this.clone(e);return this.parent.insertBefore(this,t),t}error(e,t={}){if(this.source){let{end:n,start:o}=this.rangeBy(t);return this.source.input.error(e,{column:o.column,line:o.line},{column:n.column,line:n.line},t)}return new qs(e)}getProxyProcessor(){return{get:(e,t)=>"proxyOf"===t?e:"root"===t?()=>e.root().toProxy():e[t],set:(e,t,n)=>(e[t]===n||(e[t]=n,"prop"!==t&&"value"!==t&&"name"!==t&&"params"!==t&&"important"!==t&&"text"!==t||e.markDirty()),!0)}}markDirty(){if(this[Hs]){this[Hs]=!1;let e=this;for(;e=e.parent;)e[Hs]=!1}}next(){if(!this.parent)return;let e=this.parent.index(this);return this.parent.nodes[e+1]}positionBy(e,t){let n=this.source.start;if(e.index)n=this.positionInside(e.index,t);else if(e.word){let o=(t=this.toString()).indexOf(e.word);-1!==o&&(n=this.positionInside(o,t))}return n}positionInside(e,t){let n=t||this.toString(),o=this.source.start.column,r=this.source.start.line;for(let i=0;i"object"==typeof e&&e.toJSON?e.toJSON(null,t):e));else if("object"==typeof e&&e.toJSON)n[i]=e.toJSON(null,t);else if("source"===i){let o=t.get(e.input);null==o&&(o=r,t.set(e.input,r),r++),n[i]={end:e.end,inputId:o,start:e.start}}else n[i]=e}return o&&(n.inputs=[...t.keys()].map((e=>e.toJSON()))),n}toProxy(){return this.proxyCache||(this.proxyCache=new Proxy(this,this.getProxyProcessor())),this.proxyCache}toString(e=Vs){e.stringify&&(e=e.stringify);let t="";return e(this,(e=>{t+=e})),t}warn(e,t,n){let o={node:this};for(let r in n)o[r]=n[r];return e.warn(t,o)}get proxyOf(){return this}};var Ys=Xs;Xs.default=Xs;let Js=Ys,Ks=class extends Js{constructor(e){e&&void 0!==e.value&&"string"!=typeof e.value&&(e={...e,value:String(e.value)}),super(e),this.type="decl"}get variable(){return this.prop.startsWith("--")||"$"===this.prop[0]}};var Zs=Ks;Ks.default=Ks;var $s={nanoid:(e=21)=>{let t="",n=e;for(;n--;)t+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[64*Math.random()|0];return t},customAlphabet:(e,t=21)=>(n=t)=>{let o="",r=n;for(;r--;)o+=e[Math.random()*e.length|0];return o}};let{SourceMapConsumer:Qs,SourceMapGenerator:el}=Ls,{existsSync:tl,readFileSync:nl}=Ls,{dirname:ol,join:rl}=Ls;let il=class{constructor(e,t){if(!1===t.map)return;this.loadAnnotation(e),this.inline=this.startWith(this.annotation,"data:");let n=t.map?t.map.prev:void 0,o=this.loadMap(t.from,n);!this.mapFile&&t.from&&(this.mapFile=t.from),this.mapFile&&(this.root=ol(this.mapFile)),o&&(this.text=o)}consumer(){return this.consumerCache||(this.consumerCache=new Qs(this.text)),this.consumerCache}decodeInline(e){if(/^data:application\/json;charset=utf-?8,/.test(e)||/^data:application\/json,/.test(e))return decodeURIComponent(e.substr(RegExp.lastMatch.length));if(/^data:application\/json;charset=utf-?8;base64,/.test(e)||/^data:application\/json;base64,/.test(e))return t=e.substr(RegExp.lastMatch.length),Buffer?Buffer.from(t,"base64").toString():window.atob(t);var t;let n=e.match(/data:application\/json;([^,]+),/)[1];throw new Error("Unsupported source map encoding "+n)}getAnnotationURL(e){return e.replace(/^\/\*\s*# sourceMappingURL=/,"").trim()}isMap(e){return"object"==typeof e&&("string"==typeof e.mappings||"string"==typeof e._mappings||Array.isArray(e.sections))}loadAnnotation(e){let t=e.match(/\/\*\s*# sourceMappingURL=/gm);if(!t)return;let n=e.lastIndexOf(t.pop()),o=e.indexOf("*/",n);n>-1&&o>-1&&(this.annotation=this.getAnnotationURL(e.substring(n,o)))}loadFile(e){if(this.root=ol(e),tl(e))return this.mapFile=e,nl(e,"utf-8").toString().trim()}loadMap(e,t){if(!1===t)return!1;if(t){if("string"==typeof t)return t;if("function"!=typeof t){if(t instanceof Qs)return el.fromSourceMap(t).toString();if(t instanceof el)return t.toString();if(this.isMap(t))return JSON.stringify(t);throw new Error("Unsupported previous source map format: "+t.toString())}{let n=t(e);if(n){let e=this.loadFile(n);if(!e)throw new Error("Unable to load previous source map: "+n.toString());return e}}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){let t=this.annotation;return e&&(t=rl(ol(e),t)),this.loadFile(t)}}}startWith(e,t){return!!e&&e.substr(0,t.length)===t}withContent(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)}};var al=il;il.default=il;let{SourceMapConsumer:sl,SourceMapGenerator:ll}=Ls,{fileURLToPath:cl,pathToFileURL:ul}=Ls,{isAbsolute:dl,resolve:pl}=Ls,{nanoid:hl}=$s,fl=Ls,ml=Ps,gl=al,vl=Symbol("fromOffsetCache"),yl=Boolean(sl&&ll),bl=Boolean(pl&&dl),wl=class{constructor(e,t={}){if(null==e||"object"==typeof e&&!e.toString)throw new Error(`PostCSS received ${e} instead of CSS string`);if(this.css=e.toString(),"\ufeff"===this.css[0]||"￾"===this.css[0]?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,t.from&&(!bl||/^\w+:\/\//.test(t.from)||dl(t.from)?this.file=t.from:this.file=pl(t.from)),bl&&yl){let e=new gl(this.css,t);if(e.text){this.map=e;let t=e.consumer().file;!this.file&&t&&(this.file=this.mapResolve(t))}}this.file||(this.id=""),this.map&&(this.map.file=this.from)}error(e,t,n,o={}){let r,i,a;if(t&&"object"==typeof t){let e=t,o=n;if("number"==typeof e.offset){let o=this.fromOffset(e.offset);t=o.line,n=o.col}else t=e.line,n=e.column;if("number"==typeof o.offset){let e=this.fromOffset(o.offset);i=e.line,a=e.col}else i=o.line,a=o.column}else if(!n){let e=this.fromOffset(t);t=e.line,n=e.col}let s=this.origin(t,n,i,a);return r=s?new ml(e,void 0===s.endLine?s.line:{column:s.column,line:s.line},void 0===s.endLine?s.column:{column:s.endColumn,line:s.endLine},s.source,s.file,o.plugin):new ml(e,void 0===i?t:{column:n,line:t},void 0===i?n:{column:a,line:i},this.css,this.file,o.plugin),r.input={column:n,endColumn:a,endLine:i,line:t,source:this.css},this.file&&(ul&&(r.input.url=ul(this.file).toString()),r.input.file=this.file),r}fromOffset(e){let t,n;if(this[vl])n=this[vl];else{let e=this.css.split("\n");n=new Array(e.length);let t=0;for(let o=0,r=e.length;o=t)o=n.length-1;else{let t,r=n.length-2;for(;o>1),e=n[t+1])){o=t;break}o=t+1}}return{col:e-n[o]+1,line:o+1}}mapResolve(e){return/^\w+:\/\//.test(e)?e:pl(this.map.consumer().sourceRoot||this.map.root||".",e)}origin(e,t,n,o){if(!this.map)return!1;let r,i,a=this.map.consumer(),s=a.originalPositionFor({column:t,line:e});if(!s.source)return!1;"number"==typeof n&&(r=a.originalPositionFor({column:o,line:n})),i=dl(s.source)?ul(s.source):new URL(s.source,this.map.consumer().sourceRoot||ul(this.map.mapFile));let l={column:s.column,endColumn:r&&r.column,endLine:r&&r.line,line:s.line,url:i.toString()};if("file:"===i.protocol){if(!cl)throw new Error("file: protocol is not available in this PostCSS build");l.file=cl(i)}let c=a.sourceContentFor(s.source);return c&&(l.source=c),l}toJSON(){let e={};for(let t of["hasBOM","css","file","id"])null!=this[t]&&(e[t]=this[t]);return this.map&&(e.map={...this.map},e.map.consumerCache&&(e.map.consumerCache=void 0)),e}get from(){return this.file||this.id}};var kl=wl;wl.default=wl,fl&&fl.registerInput&&fl.registerInput(wl);let{SourceMapConsumer:xl,SourceMapGenerator:Sl}=Ls,{dirname:Cl,relative:Il,resolve:El,sep:Tl}=Ls,{pathToFileURL:Ol}=Ls,Ll=kl,Al=Boolean(xl&&Sl),Ml=Boolean(Cl&&El&&Il&&Tl);var Rl=class{constructor(e,t,n,o){this.stringify=e,this.mapOpts=n.map||{},this.root=t,this.opts=n,this.css=o,this.originalCSS=o,this.usesFileUrls=!this.mapOpts.from&&this.mapOpts.absolute,this.memoizedFileURLs=new Map,this.memoizedPaths=new Map,this.memoizedURLs=new Map}addAnnotation(){let e;e=this.isInline()?"data:application/json;base64,"+this.toBase64(this.map.toString()):"string"==typeof this.mapOpts.annotation?this.mapOpts.annotation:"function"==typeof this.mapOpts.annotation?this.mapOpts.annotation(this.opts.to,this.root):this.outputFile()+".map";let t="\n";this.css.includes("\r\n")&&(t="\r\n"),this.css+=t+"/*# sourceMappingURL="+e+" */"}applyPrevMaps(){for(let e of this.previous()){let t,n=this.toUrl(this.path(e.file)),o=e.root||Cl(e.file);!1===this.mapOpts.sourcesContent?(t=new xl(e.text),t.sourcesContent&&(t.sourcesContent=null)):t=e.consumer(),this.map.applySourceMap(t,n,this.toUrl(this.path(o)))}}clearAnnotation(){if(!1!==this.mapOpts.annotation)if(this.root){let e;for(let t=this.root.nodes.length-1;t>=0;t--)e=this.root.nodes[t],"comment"===e.type&&0===e.text.indexOf("# sourceMappingURL=")&&this.root.removeChild(t)}else this.css&&(this.css=this.css.replace(/\n*?\/\*#[\S\s]*?\*\/$/gm,""))}generate(){if(this.clearAnnotation(),Ml&&Al&&this.isMap())return this.generateMap();{let e="";return this.stringify(this.root,(t=>{e+=t})),[e]}}generateMap(){if(this.root)this.generateString();else if(1===this.previous().length){let e=this.previous()[0].consumer();e.file=this.outputFile(),this.map=Sl.fromSourceMap(e,{ignoreInvalidMapping:!0})}else this.map=new Sl({file:this.outputFile(),ignoreInvalidMapping:!0}),this.map.addMapping({generated:{column:0,line:1},original:{column:0,line:1},source:this.opts.from?this.toUrl(this.path(this.opts.from)):""});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]}generateString(){this.css="",this.map=new Sl({file:this.outputFile(),ignoreInvalidMapping:!0});let e,t,n=1,o=1,r="",i={generated:{column:0,line:0},original:{column:0,line:0},source:""};this.stringify(this.root,((a,s,l)=>{if(this.css+=a,s&&"end"!==l&&(i.generated.line=n,i.generated.column=o-1,s.source&&s.source.start?(i.source=this.sourcePath(s),i.original.line=s.source.start.line,i.original.column=s.source.start.column-1,this.map.addMapping(i)):(i.source=r,i.original.line=1,i.original.column=0,this.map.addMapping(i))),e=a.match(/\n/g),e?(n+=e.length,t=a.lastIndexOf("\n"),o=a.length-t):o+=a.length,s&&"start"!==l){let e=s.parent||{raws:{}};("decl"===s.type||"atrule"===s.type&&!s.nodes)&&s===e.last&&!e.raws.semicolon||(s.source&&s.source.end?(i.source=this.sourcePath(s),i.original.line=s.source.end.line,i.original.column=s.source.end.column-1,i.generated.line=n,i.generated.column=o-2,this.map.addMapping(i)):(i.source=r,i.original.line=1,i.original.column=0,i.generated.line=n,i.generated.column=o-1,this.map.addMapping(i)))}}))}isAnnotation(){return!!this.isInline()||(void 0!==this.mapOpts.annotation?this.mapOpts.annotation:!this.previous().length||this.previous().some((e=>e.annotation)))}isInline(){if(void 0!==this.mapOpts.inline)return this.mapOpts.inline;let e=this.mapOpts.annotation;return(void 0===e||!0===e)&&(!this.previous().length||this.previous().some((e=>e.inline)))}isMap(){return void 0!==this.opts.map?!!this.opts.map:this.previous().length>0}isSourcesContent(){return void 0!==this.mapOpts.sourcesContent?this.mapOpts.sourcesContent:!this.previous().length||this.previous().some((e=>e.withContent()))}outputFile(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"}path(e){if(this.mapOpts.absolute)return e;if(60===e.charCodeAt(0))return e;if(/^\w+:\/\//.test(e))return e;let t=this.memoizedPaths.get(e);if(t)return t;let n=this.opts.to?Cl(this.opts.to):".";"string"==typeof this.mapOpts.annotation&&(n=Cl(El(n,this.mapOpts.annotation)));let o=Il(n,e);return this.memoizedPaths.set(e,o),o}previous(){if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk((e=>{if(e.source&&e.source.input.map){let t=e.source.input.map;this.previousMaps.includes(t)||this.previousMaps.push(t)}}));else{let e=new Ll(this.originalCSS,this.opts);e.map&&this.previousMaps.push(e.map)}return this.previousMaps}setSourcesContent(){let e={};if(this.root)this.root.walk((t=>{if(t.source){let n=t.source.input.from;if(n&&!e[n]){e[n]=!0;let o=this.usesFileUrls?this.toFileUrl(n):this.toUrl(this.path(n));this.map.setSourceContent(o,t.source.input.css)}}}));else if(this.css){let e=this.opts.from?this.toUrl(this.path(this.opts.from)):"";this.map.setSourceContent(e,this.css)}}sourcePath(e){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(e.source.input.from):this.toUrl(this.path(e.source.input.from))}toBase64(e){return Buffer?Buffer.from(e).toString("base64"):window.btoa(unescape(encodeURIComponent(e)))}toFileUrl(e){let t=this.memoizedFileURLs.get(e);if(t)return t;if(Ol){let t=Ol(e).toString();return this.memoizedFileURLs.set(e,t),t}throw new Error("`map.absolute` option is not available in this PostCSS build")}toUrl(e){let t=this.memoizedURLs.get(e);if(t)return t;"\\"===Tl&&(e=e.replace(/\\/g,"/"));let n=encodeURI(e).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(e,n),n}};let Pl=Ys,Dl=class extends Pl{constructor(e){super(e),this.type="comment"}};var Nl=Dl;Dl.default=Dl;let jl,Fl,Bl,_l,{isClean:Ul,my:Hl}=Ds,zl=Zs,ql=Nl,Wl=Ys;function Vl(e){return e.map((e=>(e.nodes&&(e.nodes=Vl(e.nodes)),delete e.source,e)))}function Gl(e){if(e[Ul]=!1,e.proxyOf.nodes)for(let t of e.proxyOf.nodes)Gl(t)}let Xl=class e extends Wl{append(...e){for(let t of e){let e=this.normalize(t,this.last);for(let t of e)this.proxyOf.nodes.push(t)}return this.markDirty(),this}cleanRaws(e){if(super.cleanRaws(e),this.nodes)for(let t of this.nodes)t.cleanRaws(e)}each(e){if(!this.proxyOf.nodes)return;let t,n,o=this.getIterator();for(;this.indexes[o]"proxyOf"===t?e:e[t]?"each"===t||"string"==typeof t&&t.startsWith("walk")?(...n)=>e[t](...n.map((e=>"function"==typeof e?(t,n)=>e(t.toProxy(),n):e))):"every"===t||"some"===t?n=>e[t](((e,...t)=>n(e.toProxy(),...t))):"root"===t?()=>e.root().toProxy():"nodes"===t?e.nodes.map((e=>e.toProxy())):"first"===t||"last"===t?e[t].toProxy():e[t]:e[t],set:(e,t,n)=>(e[t]===n||(e[t]=n,"name"!==t&&"params"!==t&&"selector"!==t||e.markDirty()),!0)}}index(e){return"number"==typeof e?e:(e.proxyOf&&(e=e.proxyOf),this.proxyOf.nodes.indexOf(e))}insertAfter(e,t){let n,o=this.index(e),r=this.normalize(t,this.proxyOf.nodes[o]).reverse();o=this.index(e);for(let i of r)this.proxyOf.nodes.splice(o+1,0,i);for(let i in this.indexes)n=this.indexes[i],o(t[Hl]||e.rebuild(t),(t=t.proxyOf).parent&&t.parent.removeChild(t),t[Ul]&&Gl(t),void 0===t.raws.before&&n&&void 0!==n.raws.before&&(t.raws.before=n.raws.before.replace(/\S/g,"")),t.parent=this.proxyOf,t)))}prepend(...e){e=e.reverse();for(let t of e){let e=this.normalize(t,this.first,"prepend").reverse();for(let t of e)this.proxyOf.nodes.unshift(t);for(let t in this.indexes)this.indexes[t]=this.indexes[t]+e.length}return this.markDirty(),this}push(e){return e.parent=this,this.proxyOf.nodes.push(e),this}removeAll(){for(let e of this.proxyOf.nodes)e.parent=void 0;return this.proxyOf.nodes=[],this.markDirty(),this}removeChild(e){let t;e=this.index(e),this.proxyOf.nodes[e].parent=void 0,this.proxyOf.nodes.splice(e,1);for(let n in this.indexes)t=this.indexes[n],t>=e&&(this.indexes[n]=t-1);return this.markDirty(),this}replaceValues(e,t,n){return n||(n=t,t={}),this.walkDecls((o=>{t.props&&!t.props.includes(o.prop)||t.fast&&!o.value.includes(t.fast)||(o.value=o.value.replace(e,n))})),this.markDirty(),this}some(e){return this.nodes.some(e)}walk(e){return this.each(((t,n)=>{let o;try{o=e(t,n)}catch(r){throw t.addToError(r)}return!1!==o&&t.walk&&(o=t.walk(e)),o}))}walkAtRules(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("atrule"===n.type&&e.test(n.name))return t(n,o)})):this.walk(((n,o)=>{if("atrule"===n.type&&n.name===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("atrule"===e.type)return t(e,n)})))}walkComments(e){return this.walk(((t,n)=>{if("comment"===t.type)return e(t,n)}))}walkDecls(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("decl"===n.type&&e.test(n.prop))return t(n,o)})):this.walk(((n,o)=>{if("decl"===n.type&&n.prop===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("decl"===e.type)return t(e,n)})))}walkRules(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("rule"===n.type&&e.test(n.selector))return t(n,o)})):this.walk(((n,o)=>{if("rule"===n.type&&n.selector===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("rule"===e.type)return t(e,n)})))}get first(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}get last(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}};Xl.registerParse=e=>{jl=e},Xl.registerRule=e=>{Fl=e},Xl.registerAtRule=e=>{Bl=e},Xl.registerRoot=e=>{_l=e};var Yl=Xl;Xl.default=Xl,Xl.rebuild=e=>{"atrule"===e.type?Object.setPrototypeOf(e,Bl.prototype):"rule"===e.type?Object.setPrototypeOf(e,Fl.prototype):"decl"===e.type?Object.setPrototypeOf(e,zl.prototype):"comment"===e.type?Object.setPrototypeOf(e,ql.prototype):"root"===e.type&&Object.setPrototypeOf(e,_l.prototype),e[Hl]=!0,e.nodes&&e.nodes.forEach((e=>{Xl.rebuild(e)}))};let Jl,Kl,Zl=Yl,$l=class extends Zl{constructor(e){super({type:"document",...e}),this.nodes||(this.nodes=[])}toResult(e={}){return new Jl(new Kl,this,e).stringify()}};$l.registerLazyResult=e=>{Jl=e},$l.registerProcessor=e=>{Kl=e};var Ql=$l;$l.default=$l;let ec=class{constructor(e,t={}){if(this.type="warning",this.text=e,t.node&&t.node.source){let e=t.node.rangeBy(t);this.line=e.start.line,this.column=e.start.column,this.endLine=e.end.line,this.endColumn=e.end.column}for(let n in t)this[n]=t[n]}toString(){return this.node?this.node.error(this.text,{index:this.index,plugin:this.plugin,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text}};var tc=ec;ec.default=ec;let nc=tc,oc=class{constructor(e,t,n){this.processor=e,this.messages=[],this.root=t,this.opts=n,this.css=void 0,this.map=void 0}toString(){return this.css}warn(e,t={}){t.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(t.plugin=this.lastPlugin.postcssPlugin);let n=new nc(e,t);return this.messages.push(n),n}warnings(){return this.messages.filter((e=>"warning"===e.type))}get content(){return this.css}};var rc=oc;oc.default=oc;const ic="'".charCodeAt(0),ac='"'.charCodeAt(0),sc="\\".charCodeAt(0),lc="/".charCodeAt(0),cc="\n".charCodeAt(0),uc=" ".charCodeAt(0),dc="\f".charCodeAt(0),pc="\t".charCodeAt(0),hc="\r".charCodeAt(0),fc="[".charCodeAt(0),mc="]".charCodeAt(0),gc="(".charCodeAt(0),vc=")".charCodeAt(0),yc="{".charCodeAt(0),bc="}".charCodeAt(0),wc=";".charCodeAt(0),kc="*".charCodeAt(0),xc=":".charCodeAt(0),Sc="@".charCodeAt(0),Cc=/[\t\n\f\r "#'()/;[\\\]{}]/g,Ic=/[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g,Ec=/.[\r\n"'(/\\]/,Tc=/[\da-f]/i;let Oc=Yl,Lc=class extends Oc{constructor(e){super(e),this.type="atrule"}append(...e){return this.proxyOf.nodes||(this.nodes=[]),super.append(...e)}prepend(...e){return this.proxyOf.nodes||(this.nodes=[]),super.prepend(...e)}};var Ac=Lc;Lc.default=Lc,Oc.registerAtRule(Lc);let Mc,Rc,Pc=Yl,Dc=class extends Pc{constructor(e){super(e),this.type="root",this.nodes||(this.nodes=[])}normalize(e,t,n){let o=super.normalize(e);if(t)if("prepend"===n)this.nodes.length>1?t.raws.before=this.nodes[1].raws.before:delete t.raws.before;else if(this.first!==t)for(let r of o)r.raws.before=t.raws.before;return o}removeChild(e,t){let n=this.index(e);return!t&&0===n&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[n].raws.before),super.removeChild(e)}toResult(e={}){return new Mc(new Rc,this,e).stringify()}};Dc.registerLazyResult=e=>{Mc=e},Dc.registerProcessor=e=>{Rc=e};var Nc=Dc;Dc.default=Dc,Pc.registerRoot(Dc);let jc={comma:e=>jc.split(e,[","],!0),space:e=>jc.split(e,[" ","\n","\t"]),split(e,t,n){let o=[],r="",i=!1,a=0,s=!1,l="",c=!1;for(let u of e)c?c=!1:"\\"===u?c=!0:s?u===l&&(s=!1):'"'===u||"'"===u?(s=!0,l=u):"("===u?a+=1:")"===u?a>0&&(a-=1):0===a&&t.includes(u)&&(i=!0),i?(""!==r&&o.push(r.trim()),r="",i=!1):r+=u;return(n||""!==r)&&o.push(r.trim()),o}};var Fc=jc;jc.default=jc;let Bc=Yl,_c=Fc,Uc=class extends Bc{constructor(e){super(e),this.type="rule",this.nodes||(this.nodes=[])}get selectors(){return _c.comma(this.selector)}set selectors(e){let t=this.selector?this.selector.match(/,\s*/):null,n=t?t[0]:","+this.raw("between","beforeOpen");this.selector=e.join(n)}};var Hc=Uc;Uc.default=Uc,Bc.registerRule(Uc);let zc=Zs,qc=function(e,t={}){let n,o,r,i,a,s,l,c,u,d,p=e.css.valueOf(),h=t.ignoreErrors,f=p.length,m=0,g=[],v=[];function y(t){throw e.error("Unclosed "+t,m)}return{back:function(e){v.push(e)},endOfFile:function(){return 0===v.length&&m>=f},nextToken:function(e){if(v.length)return v.pop();if(m>=f)return;let t=!!e&&e.ignoreUnclosed;switch(n=p.charCodeAt(m),n){case cc:case uc:case pc:case hc:case dc:o=m;do{o+=1,n=p.charCodeAt(o)}while(n===uc||n===cc||n===pc||n===hc||n===dc);d=["space",p.slice(m,o)],m=o-1;break;case fc:case mc:case yc:case bc:case xc:case wc:case vc:{let e=String.fromCharCode(n);d=[e,e,m];break}case gc:if(c=g.length?g.pop()[1]:"",u=p.charCodeAt(m+1),"url"===c&&u!==ic&&u!==ac&&u!==uc&&u!==cc&&u!==pc&&u!==dc&&u!==hc){o=m;do{if(s=!1,o=p.indexOf(")",o+1),-1===o){if(h||t){o=m;break}y("bracket")}for(l=o;p.charCodeAt(l-1)===sc;)l-=1,s=!s}while(s);d=["brackets",p.slice(m,o+1),m,o],m=o}else o=p.indexOf(")",m+1),i=p.slice(m,o+1),-1===o||Ec.test(i)?d=["(","(",m]:(d=["brackets",i,m,o],m=o);break;case ic:case ac:r=n===ic?"'":'"',o=m;do{if(s=!1,o=p.indexOf(r,o+1),-1===o){if(h||t){o=m+1;break}y("string")}for(l=o;p.charCodeAt(l-1)===sc;)l-=1,s=!s}while(s);d=["string",p.slice(m,o+1),m,o],m=o;break;case Sc:Cc.lastIndex=m+1,Cc.test(p),o=0===Cc.lastIndex?p.length-1:Cc.lastIndex-2,d=["at-word",p.slice(m,o+1),m,o],m=o;break;case sc:for(o=m,a=!0;p.charCodeAt(o+1)===sc;)o+=1,a=!a;if(n=p.charCodeAt(o+1),a&&n!==lc&&n!==uc&&n!==cc&&n!==pc&&n!==hc&&n!==dc&&(o+=1,Tc.test(p.charAt(o)))){for(;Tc.test(p.charAt(o+1));)o+=1;p.charCodeAt(o+1)===uc&&(o+=1)}d=["word",p.slice(m,o+1),m,o],m=o;break;default:n===lc&&p.charCodeAt(m+1)===kc?(o=p.indexOf("*/",m+2)+1,0===o&&(h||t?o=p.length:y("comment")),d=["comment",p.slice(m,o+1),m,o],m=o):(Ic.lastIndex=m+1,Ic.test(p),o=0===Ic.lastIndex?p.length-1:Ic.lastIndex-2,d=["word",p.slice(m,o+1),m,o],g.push(d),m=o)}return m++,d},position:function(){return m}}},Wc=Nl,Vc=Ac,Gc=Nc,Xc=Hc;const Yc={empty:!0,space:!0};var Jc=class{constructor(e){this.input=e,this.root=new Gc,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:e,start:{column:1,line:1,offset:0}}}atrule(e){let t,n,o,r=new Vc;r.name=e[1].slice(1),""===r.name&&this.unnamedAtrule(r,e),this.init(r,e[2]);let i=!1,a=!1,s=[],l=[];for(;!this.tokenizer.endOfFile();){if(t=(e=this.tokenizer.nextToken())[0],"("===t||"["===t?l.push("("===t?")":"]"):"{"===t&&l.length>0?l.push("}"):t===l[l.length-1]&&l.pop(),0===l.length){if(";"===t){r.source.end=this.getPosition(e[2]),r.source.end.offset++,this.semicolon=!0;break}if("{"===t){a=!0;break}if("}"===t){if(s.length>0){for(o=s.length-1,n=s[o];n&&"space"===n[0];)n=s[--o];n&&(r.source.end=this.getPosition(n[3]||n[2]),r.source.end.offset++)}this.end(e);break}s.push(e)}else s.push(e);if(this.tokenizer.endOfFile()){i=!0;break}}r.raws.between=this.spacesAndCommentsFromEnd(s),s.length?(r.raws.afterName=this.spacesAndCommentsFromStart(s),this.raw(r,"params",s),i&&(e=s[s.length-1],r.source.end=this.getPosition(e[3]||e[2]),r.source.end.offset++,this.spaces=r.raws.between,r.raws.between="")):(r.raws.afterName="",r.params=""),a&&(r.nodes=[],this.current=r)}checkMissedSemicolon(e){let t=this.colon(e);if(!1===t)return;let n,o=0;for(let r=t-1;r>=0&&(n=e[r],"space"===n[0]||(o+=1,2!==o));r--);throw this.input.error("Missed semicolon","word"===n[0]?n[3]+1:n[2])}colon(e){let t,n,o,r=0;for(let[i,a]of e.entries()){if(t=a,n=t[0],"("===n&&(r+=1),")"===n&&(r-=1),0===r&&":"===n){if(o){if("word"===o[0]&&"progid"===o[1])continue;return i}this.doubleColon(t)}o=t}return!1}comment(e){let t=new Wc;this.init(t,e[2]),t.source.end=this.getPosition(e[3]||e[2]),t.source.end.offset++;let n=e[1].slice(2,-2);if(/^\s*$/.test(n))t.text="",t.raws.left=n,t.raws.right="";else{let e=n.match(/^(\s*)([^]*\S)(\s*)$/);t.text=e[2],t.raws.left=e[1],t.raws.right=e[3]}}createTokenizer(){this.tokenizer=qc(this.input)}decl(e,t){let n=new zc;this.init(n,e[0][2]);let o,r=e[e.length-1];for(";"===r[0]&&(this.semicolon=!0,e.pop()),n.source.end=this.getPosition(r[3]||r[2]||function(e){for(let t=e.length-1;t>=0;t--){let n=e[t],o=n[3]||n[2];if(o)return o}}(e)),n.source.end.offset++;"word"!==e[0][0];)1===e.length&&this.unknownWord(e),n.raws.before+=e.shift()[1];for(n.source.start=this.getPosition(e[0][2]),n.prop="";e.length;){let t=e[0][0];if(":"===t||"space"===t||"comment"===t)break;n.prop+=e.shift()[1]}for(n.raws.between="";e.length;){if(o=e.shift(),":"===o[0]){n.raws.between+=o[1];break}"word"===o[0]&&/\w/.test(o[1])&&this.unknownWord([o]),n.raws.between+=o[1]}"_"!==n.prop[0]&&"*"!==n.prop[0]||(n.raws.before+=n.prop[0],n.prop=n.prop.slice(1));let i,a=[];for(;e.length&&(i=e[0][0],"space"===i||"comment"===i);)a.push(e.shift());this.precheckMissedSemicolon(e);for(let s=e.length-1;s>=0;s--){if(o=e[s],"!important"===o[1].toLowerCase()){n.important=!0;let t=this.stringFrom(e,s);t=this.spacesFromEnd(e)+t," !important"!==t&&(n.raws.important=t);break}if("important"===o[1].toLowerCase()){let t=e.slice(0),o="";for(let e=s;e>0;e--){let n=t[e][0];if(0===o.trim().indexOf("!")&&"space"!==n)break;o=t.pop()[1]+o}0===o.trim().indexOf("!")&&(n.important=!0,n.raws.important=o,e=t)}if("space"!==o[0]&&"comment"!==o[0])break}e.some((e=>"space"!==e[0]&&"comment"!==e[0]))&&(n.raws.between+=a.map((e=>e[1])).join(""),a=[]),this.raw(n,"value",a.concat(e),t),n.value.includes(":")&&!t&&this.checkMissedSemicolon(e)}doubleColon(e){throw this.input.error("Double colon",{offset:e[2]},{offset:e[2]+e[1].length})}emptyRule(e){let t=new Xc;this.init(t,e[2]),t.selector="",t.raws.between="",this.current=t}end(e){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(e[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(e)}endFile(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position())}freeSemicolon(e){if(this.spaces+=e[1],this.current.nodes){let e=this.current.nodes[this.current.nodes.length-1];e&&"rule"===e.type&&!e.raws.ownSemicolon&&(e.raws.ownSemicolon=this.spaces,this.spaces="")}}getPosition(e){let t=this.input.fromOffset(e);return{column:t.col,line:t.line,offset:e}}init(e,t){this.current.push(e),e.source={input:this.input,start:this.getPosition(t)},e.raws.before=this.spaces,this.spaces="","comment"!==e.type&&(this.semicolon=!1)}other(e){let t=!1,n=null,o=!1,r=null,i=[],a=e[1].startsWith("--"),s=[],l=e;for(;l;){if(n=l[0],s.push(l),"("===n||"["===n)r||(r=l),i.push("("===n?")":"]");else if(a&&o&&"{"===n)r||(r=l),i.push("}");else if(0===i.length){if(";"===n){if(o)return void this.decl(s,a);break}if("{"===n)return void this.rule(s);if("}"===n){this.tokenizer.back(s.pop()),t=!0;break}":"===n&&(o=!0)}else n===i[i.length-1]&&(i.pop(),0===i.length&&(r=null));l=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(t=!0),i.length>0&&this.unclosedBracket(r),t&&o){if(!a)for(;s.length&&(l=s[s.length-1][0],"space"===l||"comment"===l);)this.tokenizer.back(s.pop());this.decl(s,a)}else this.unknownWord(s)}parse(){let e;for(;!this.tokenizer.endOfFile();)switch(e=this.tokenizer.nextToken(),e[0]){case"space":this.spaces+=e[1];break;case";":this.freeSemicolon(e);break;case"}":this.end(e);break;case"comment":this.comment(e);break;case"at-word":this.atrule(e);break;case"{":this.emptyRule(e);break;default:this.other(e)}this.endFile()}precheckMissedSemicolon(){}raw(e,t,n,o){let r,i,a,s,l=n.length,c="",u=!0;for(let d=0;de+t[1]),"");e.raws[t]={raw:o,value:c}}e[t]=c}rule(e){e.pop();let t=new Xc;this.init(t,e[0][2]),t.raws.between=this.spacesAndCommentsFromEnd(e),this.raw(t,"selector",e),this.current=t}spacesAndCommentsFromEnd(e){let t,n="";for(;e.length&&(t=e[e.length-1][0],"space"===t||"comment"===t);)n=e.pop()[1]+n;return n}spacesAndCommentsFromStart(e){let t,n="";for(;e.length&&(t=e[0][0],"space"===t||"comment"===t);)n+=e.shift()[1];return n}spacesFromEnd(e){let t,n="";for(;e.length&&(t=e[e.length-1][0],"space"===t);)n=e.pop()[1]+n;return n}stringFrom(e,t){let n="";for(let o=t;ovu(e))),e}let yu={},bu=class e{constructor(t,n,o){let r;if(this.stringified=!1,this.processed=!1,"object"!=typeof n||null===n||"root"!==n.type&&"document"!==n.type)if(n instanceof e||n instanceof su)r=vu(n.root),n.map&&(void 0===o.map&&(o.map={}),o.map.inline||(o.map.inline=!1),o.map.prev=n.map);else{let e=lu;o.syntax&&(e=o.syntax.parse),o.parser&&(e=o.parser),e.parse&&(e=e.parse);try{r=e(n,o)}catch(i){this.processed=!0,this.error=i}r&&!r[nu]&&iu.rebuild(r)}else r=vu(n);this.result=new su(t,r,o),this.helpers={...yu,postcss:yu,result:this.result},this.plugins=this.processor.plugins.map((e=>"object"==typeof e&&e.prepare?{...e,...e.prepare(this.result)}:e))}async(){return this.error?Promise.reject(this.error):this.processed?Promise.resolve(this.result):(this.processing||(this.processing=this.runAsync()),this.processing)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}getAsyncError(){throw new Error("Use process(css).then(cb) to work with async plugins")}handleError(e,t){let n=this.result.lastPlugin;try{t&&t.addToError(e),this.error=e,"CssSyntaxError"!==e.name||e.plugin?n.postcssVersion:(e.plugin=n.postcssPlugin,e.setMessage())}catch(o){console&&console.error&&console.error(o)}return e}prepareVisitors(){this.listeners={};let e=(e,t,n)=>{this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].push([e,n])};for(let t of this.plugins)if("object"==typeof t)for(let n in t){if(!du[n]&&/^[A-Z]/.test(n))throw new Error(`Unknown event ${n} in ${t.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`);if(!pu[n])if("object"==typeof t[n])for(let o in t[n])e(t,"*"===o?n:n+"-"+o.toLowerCase(),t[n][o]);else"function"==typeof t[n]&&e(t,n,t[n])}this.hasListener=Object.keys(this.listeners).length>0}async runAsync(){this.plugin=0;for(let n=0;n0;){let e=this.visitTick(n);if(fu(e))try{await e}catch(t){let e=n[n.length-1].node;throw this.handleError(t,e)}}}if(this.listeners.OnceExit)for(let[n,o]of this.listeners.OnceExit){this.result.lastPlugin=n;try{if("document"===e.type){let t=e.nodes.map((e=>o(e,this.helpers)));await Promise.all(t)}else await o(e,this.helpers)}catch(t){throw this.handleError(t)}}}return this.processed=!0,this.stringify()}runOnRoot(e){this.result.lastPlugin=e;try{if("object"==typeof e&&e.Once){if("document"===this.result.root.type){let t=this.result.root.nodes.map((t=>e.Once(t,this.helpers)));return fu(t[0])?Promise.all(t):t}return e.Once(this.result.root,this.helpers)}if("function"==typeof e)return e(this.result.root,this.result)}catch(t){throw this.handleError(t)}}stringify(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();let e=this.result.opts,t=ru;e.syntax&&(t=e.syntax.stringify),e.stringifier&&(t=e.stringifier),t.stringify&&(t=t.stringify);let n=new ou(t,this.result.root,this.result.opts).generate();return this.result.css=n[0],this.result.map=n[1],this.result}sync(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(let e of this.plugins){if(fu(this.runOnRoot(e)))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){let e=this.result.root;for(;!e[tu];)e[tu]=!0,this.walkSync(e);if(this.listeners.OnceExit)if("document"===e.type)for(let t of e.nodes)this.visitSync(this.listeners.OnceExit,t);else this.visitSync(this.listeners.OnceExit,e)}return this.result}then(e,t){return this.async().then(e,t)}toString(){return this.css}visitSync(e,t){for(let[o,r]of e){let e;this.result.lastPlugin=o;try{e=r(t,this.helpers)}catch(n){throw this.handleError(n,t.proxyOf)}if("root"!==t.type&&"document"!==t.type&&!t.parent)return!0;if(fu(e))throw this.getAsyncError()}}visitTick(e){let t=e[e.length-1],{node:n,visitors:o}=t;if("root"!==n.type&&"document"!==n.type&&!n.parent)return void e.pop();if(o.length>0&&t.visitorIndex{e[tu]||this.walkSync(e)}));else{let t=this.listeners[n];if(t&&this.visitSync(t,e.toProxy()))return}}warnings(){return this.sync().warnings()}get content(){return this.stringify().content}get css(){return this.stringify().css}get map(){return this.stringify().map}get messages(){return this.sync().messages}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){return this.sync().root}get[Symbol.toStringTag](){return"LazyResult"}};bu.registerPostcss=e=>{yu=e};var wu=bu;bu.default=bu,cu.registerLazyResult(bu),au.registerLazyResult(bu);let ku=Rl,xu=Us,Su=eu;const Cu=rc;let Iu=class{constructor(e,t,n){let o;t=t.toString(),this.stringified=!1,this._processor=e,this._css=t,this._opts=n,this._map=void 0;let r=xu;this.result=new Cu(this._processor,o,this._opts),this.result.css=t;let i=this;Object.defineProperty(this.result,"root",{get:()=>i.root});let a=new ku(r,o,this._opts,t);if(a.isMap()){let[e,t]=a.generate();e&&(this.result.css=e),t&&(this.result.map=t)}else a.clearAnnotation(),this.result.css=a.css}async(){return this.error?Promise.reject(this.error):Promise.resolve(this.result)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}sync(){if(this.error)throw this.error;return this.result}then(e,t){return this.async().then(e,t)}toString(){return this._css}warnings(){return[]}get content(){return this.result.css}get css(){return this.result.css}get map(){return this.result.map}get messages(){return[]}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){if(this._root)return this._root;let e,t=Su;try{e=t(this._css,this._opts)}catch(n){this.error=n}if(this.error)throw this.error;return this._root=e,e}get[Symbol.toStringTag](){return"NoWorkResult"}};var Eu=Iu;Iu.default=Iu;let Tu=Eu,Ou=wu,Lu=Ql,Au=Nc,Mu=class{constructor(e=[]){this.version="8.4.38",this.plugins=this.normalize(e)}normalize(e){let t=[];for(let n of e)if(!0===n.postcss?n=n():n.postcss&&(n=n.postcss),"object"==typeof n&&Array.isArray(n.plugins))t=t.concat(n.plugins);else if("object"==typeof n&&n.postcssPlugin)t.push(n);else if("function"==typeof n)t.push(n);else{if("object"!=typeof n||!n.parse&&!n.stringify)throw new Error(n+" is not a PostCSS plugin")}return t}process(e,t={}){return this.plugins.length||t.parser||t.stringifier||t.syntax?new Ou(this,e,t):new Tu(this,e,t)}use(e){return this.plugins=this.plugins.concat(this.normalize([e])),this}};var Ru=Mu;Mu.default=Mu,Au.registerProcessor(Mu),Lu.registerProcessor(Mu);let Pu=Zs,Du=al,Nu=Nl,ju=Ac,Fu=kl,Bu=Nc,_u=Hc;function Uu(e,t){if(Array.isArray(e))return e.map((e=>Uu(e)));let{inputs:n,...o}=e;if(n){t=[];for(let e of n){let n={...e,__proto__:Fu.prototype};n.map&&(n.map={...n.map,__proto__:Du.prototype}),t.push(n)}}if(o.nodes&&(o.nodes=e.nodes.map((e=>Uu(e,t)))),o.source){let{inputId:e,...n}=o.source;o.source=n,null!=e&&(o.source.input=t[e])}if("root"===o.type)return new Bu(o);if("decl"===o.type)return new Pu(o);if("rule"===o.type)return new _u(o);if("comment"===o.type)return new Nu(o);if("atrule"===o.type)return new ju(o);throw new Error("Unknown node type: "+e.type)}var Hu=Uu;Uu.default=Uu;let zu=Ps,qu=Zs,Wu=wu,Vu=Yl,Gu=Ru,Xu=Us,Yu=Hu,Ju=Ql,Ku=tc,Zu=Nl,$u=Ac,Qu=rc,ed=kl,td=eu,nd=Fc,od=Hc,rd=Nc,id=Ys;function ad(...e){return 1===e.length&&Array.isArray(e[0])&&(e=e[0]),new Gu(e)}ad.plugin=function(e,t){let n,o=!1;function r(...n){console&&console.warn&&!o&&(o=!0,console.warn(e+": postcss.plugin was deprecated. Migration guide:\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration"),process.env.LANG&&process.env.LANG.startsWith("cn")&&console.warn(e+": 里面 postcss.plugin 被弃用. 迁移指南:\nhttps://www.w3ctech.com/topic/2226"));let r=t(...n);return r.postcssPlugin=e,r.postcssVersion=(new Gu).version,r}return Object.defineProperty(r,"postcss",{get:()=>(n||(n=r()),n)}),r.process=function(e,t,n){return ad([r(n)]).process(e,t)},r},ad.stringify=Xu,ad.parse=td,ad.fromJSON=Yu,ad.list=nd,ad.comment=e=>new Zu(e),ad.atRule=e=>new $u(e),ad.decl=e=>new qu(e),ad.rule=e=>new od(e),ad.root=e=>new rd(e),ad.document=e=>new Ju(e),ad.CssSyntaxError=zu,ad.Declaration=qu,ad.Container=Vu,ad.Processor=Gu,ad.Document=Ju,ad.Comment=Zu,ad.Warning=Ku,ad.AtRule=$u,ad.Result=Qu,ad.Input=ed,ad.Rule=od,ad.Root=rd,ad.Node=id,Wu.registerPostcss(ad);var sd=ad;ad.default=ad;const ld=Ss(sd);ld.stringify,ld.fromJSON,ld.plugin,ld.parse,ld.list,ld.document,ld.comment,ld.atRule,ld.rule,ld.decl,ld.root,ld.CssSyntaxError,ld.Declaration,ld.Container,ld.Processor,ld.Document,ld.Comment,ld.Warning,ld.AtRule,ld.Result,ld.Input,ld.Rule,ld.Root,ld.Node;class cd{constructor(...e){xs(this,"parentElement",null),xs(this,"parentNode",null),xs(this,"ownerDocument"),xs(this,"firstChild",null),xs(this,"lastChild",null),xs(this,"previousSibling",null),xs(this,"nextSibling",null),xs(this,"ELEMENT_NODE",1),xs(this,"TEXT_NODE",3),xs(this,"nodeType"),xs(this,"nodeName"),xs(this,"RRNodeType")}get childNodes(){const e=[];let t=this.firstChild;for(;t;)e.push(t),t=t.nextSibling;return e}contains(e){if(!(e instanceof cd))return!1;if(e.ownerDocument!==this.ownerDocument)return!1;if(e===this)return!0;for(;e.parentNode;){if(e.parentNode===this)return!0;e=e.parentNode}return!1}appendChild(e){throw new Error("RRDomException: Failed to execute 'appendChild' on 'RRNode': This RRNode type does not support this method.")}insertBefore(e,t){throw new Error("RRDomException: Failed to execute 'insertBefore' on 'RRNode': This RRNode type does not support this method.")}removeChild(e){throw new Error("RRDomException: Failed to execute 'removeChild' on 'RRNode': This RRNode type does not support this method.")}toString(){return"RRNode"}}const ud={Node:["childNodes","parentNode","parentElement","textContent"],ShadowRoot:["host","styleSheets"],Element:["shadowRoot","querySelector","querySelectorAll"],MutationObserver:[]},dd={Node:["contains","getRootNode"],ShadowRoot:["getSelection"],Element:[],MutationObserver:["constructor"]},pd={},hd=()=>!!globalThis.Zone;function fd(e){if(pd[e])return pd[e];const t=globalThis[e],n=t.prototype,o=e in ud?ud[e]:void 0,r=Boolean(o&&o.every((e=>{var t,o;return Boolean(null==(o=null==(t=Object.getOwnPropertyDescriptor(n,e))?void 0:t.get)?void 0:o.toString().includes("[native code]"))}))),i=e in dd?dd[e]:void 0,a=Boolean(i&&i.every((e=>{var t;return"function"==typeof n[e]&&(null==(t=n[e])?void 0:t.toString().includes("[native code]"))})));if(r&&a&&!hd())return pd[e]=t.prototype,t.prototype;try{const o=document.createElement("iframe");document.body.appendChild(o);const r=o.contentWindow;if(!r)return t.prototype;const i=r[e].prototype;return document.body.removeChild(o),i?pd[e]=i:n}catch{return n}}const md={};function gd(e,t,n){var o;const r=`${e}.${String(n)}`;if(md[r])return md[r].call(t);const i=fd(e),a=null==(o=Object.getOwnPropertyDescriptor(i,n))?void 0:o.get;return a?(md[r]=a,a.call(t)):t[n]}const vd={};function yd(e,t,n){const o=`${e}.${String(n)}`;if(vd[o])return vd[o].bind(t);const r=fd(e)[n];return"function"!=typeof r?t[n]:(vd[o]=r,r.bind(t))}function bd(){return fd("MutationObserver").constructor}const wd={childNodes:function(e){return gd("Node",e,"childNodes")},parentNode:function(e){return gd("Node",e,"parentNode")},parentElement:function(e){return gd("Node",e,"parentElement")},textContent:function(e){return gd("Node",e,"textContent")},contains:function(e,t){return yd("Node",e,"contains")(t)},getRootNode:function(e){return yd("Node",e,"getRootNode")()},host:function(e){return e&&"host"in e?gd("ShadowRoot",e,"host"):null},styleSheets:function(e){return e.styleSheets},shadowRoot:function(e){return e&&"shadowRoot"in e?gd("Element",e,"shadowRoot"):null},querySelector:function(e,t){return gd("Element",e,"querySelector")(t)},querySelectorAll:function(e,t){return gd("Element",e,"querySelectorAll")(t)},mutationObserver:bd};function kd(e,t,n=document){const o={capture:!0,passive:!0};return n.addEventListener(e,t,o),()=>n.removeEventListener(e,t,o)}const xd="Please stop import mirror directly. Instead of that,\r\nnow you can use replayer.getMirror() to access the mirror instance of a replayer,\r\nor you can use record.mirror to access the mirror instance during recording.";let Sd={map:{},getId:()=>(console.error(xd),-1),getNode:()=>(console.error(xd),null),removeNodeFromMap(){console.error(xd)},has:()=>(console.error(xd),!1),reset(){console.error(xd)}};function Cd(e,t,n={}){let o=null,r=0;return function(...i){const a=Date.now();r||!1!==n.leading||(r=a);const s=t-(a-r),l=this;s<=0||s>t?(o&&(clearTimeout(o),o=null),r=a,e.apply(l,i)):o||!1===n.trailing||(o=setTimeout((()=>{r=!1===n.leading?0:Date.now(),o=null,e.apply(l,i)}),s))}}function Id(e,t,n,o,r=window){const i=r.Object.getOwnPropertyDescriptor(e,t);return r.Object.defineProperty(e,t,o?n:{set(e){setTimeout((()=>{n.set.call(this,e)}),0),i&&i.set&&i.set.call(this,e)}}),()=>Id(e,t,i||{},!0)}function Ed(e,t,n){try{if(!(t in e))return()=>{};const o=e[t],r=n(o);return"function"==typeof r&&(r.prototype=r.prototype||{},Object.defineProperties(r,{__rrweb_original__:{enumerable:!1,value:o}})),e[t]=r,()=>{e[t]=o}}catch{return()=>{}}}"undefined"!=typeof window&&window.Proxy&&window.Reflect&&(Sd=new Proxy(Sd,{get:(e,t,n)=>("map"===t&&console.error(xd),Reflect.get(e,t,n))}));let Td=Date.now;function Od(e){var t,n,o,r;const i=e.document;return{left:i.scrollingElement?i.scrollingElement.scrollLeft:void 0!==e.pageXOffset?e.pageXOffset:i.documentElement.scrollLeft||(null==i?void 0:i.body)&&(null==(t=wd.parentElement(i.body))?void 0:t.scrollLeft)||(null==(n=null==i?void 0:i.body)?void 0:n.scrollLeft)||0,top:i.scrollingElement?i.scrollingElement.scrollTop:void 0!==e.pageYOffset?e.pageYOffset:(null==i?void 0:i.documentElement.scrollTop)||(null==i?void 0:i.body)&&(null==(o=wd.parentElement(i.body))?void 0:o.scrollTop)||(null==(r=null==i?void 0:i.body)?void 0:r.scrollTop)||0}}function Ld(){return window.innerHeight||document.documentElement&&document.documentElement.clientHeight||document.body&&document.body.clientHeight}function Ad(){return window.innerWidth||document.documentElement&&document.documentElement.clientWidth||document.body&&document.body.clientWidth}function Md(e){if(!e)return null;return e.nodeType===e.ELEMENT_NODE?e:wd.parentElement(e)}function Rd(e,t,n,o){if(!e)return!1;const r=Md(e);if(!r)return!1;try{if("string"==typeof t){if(r.classList.contains(t))return!0;if(o&&null!==r.closest("."+t))return!0}else if(Ao(r,t,o))return!0}catch(i){}if(n){if(r.matches(n))return!0;if(o&&null!==r.closest(n))return!0}return!1}function Pd(e,t,n){return!("TITLE"!==e.tagName||!n.headTitleMutations)||t.getId(e)===yo}function Dd(e,t){if($n(e))return!1;const n=t.getId(e);if(!t.has(n))return!0;const o=wd.parentNode(e);return(!o||o.nodeType!==e.DOCUMENT_NODE)&&(!o||Dd(o,t))}function Nd(e){return Boolean(e.changedTouches)}function jd(e,t){return Boolean("IFRAME"===e.nodeName&&t.getMeta(e))}function Fd(e,t){return Boolean("LINK"===e.nodeName&&e.nodeType===e.ELEMENT_NODE&&e.getAttribute&&"stylesheet"===e.getAttribute("rel")&&t.getMeta(e))}function Bd(e){return!!e&&(e instanceof cd&&"shadowRoot"in e?Boolean(e.shadowRoot):Boolean(wd.shadowRoot(e)))}/[1-9][0-9]{12}/.test(Date.now().toString())||(Td=()=>(new Date).getTime());class _d{constructor(){Fn(this,"id",1),Fn(this,"styleIDMap",new WeakMap),Fn(this,"idStyleMap",new Map)}getId(e){return this.styleIDMap.get(e)??-1}has(e){return this.styleIDMap.has(e)}add(e,t){if(this.has(e))return this.getId(e);let n;return n=void 0===t?this.id++:t,this.styleIDMap.set(e,n),this.idStyleMap.set(n,e),n}getStyle(e){return this.idStyleMap.get(e)||null}reset(){this.styleIDMap=new WeakMap,this.idStyleMap=new Map,this.id=1}generateId(){return this.id++}}function Ud(e){var t;let n=null;return"getRootNode"in e&&(null==(t=wd.getRootNode(e))?void 0:t.nodeType)===Node.DOCUMENT_FRAGMENT_NODE&&wd.host(wd.getRootNode(e))&&(n=wd.host(wd.getRootNode(e))),n}function Hd(e){const t=e.ownerDocument;if(!t)return!1;const n=function(e){let t,n=e;for(;t=Ud(n);)n=t;return n}(e);return wd.contains(t,n)}function zd(e){const t=e.ownerDocument;return!!t&&(wd.contains(t,e)||Hd(e))}var qd=(e=>(e[e.DomContentLoaded=0]="DomContentLoaded",e[e.Load=1]="Load",e[e.FullSnapshot=2]="FullSnapshot",e[e.IncrementalSnapshot=3]="IncrementalSnapshot",e[e.Meta=4]="Meta",e[e.Custom=5]="Custom",e[e.Plugin=6]="Plugin",e))(qd||{}),Wd=(e=>(e[e.Mutation=0]="Mutation",e[e.MouseMove=1]="MouseMove",e[e.MouseInteraction=2]="MouseInteraction",e[e.Scroll=3]="Scroll",e[e.ViewportResize=4]="ViewportResize",e[e.Input=5]="Input",e[e.TouchMove=6]="TouchMove",e[e.MediaInteraction=7]="MediaInteraction",e[e.StyleSheetRule=8]="StyleSheetRule",e[e.CanvasMutation=9]="CanvasMutation",e[e.Font=10]="Font",e[e.Log=11]="Log",e[e.Drag=12]="Drag",e[e.StyleDeclaration=13]="StyleDeclaration",e[e.Selection=14]="Selection",e[e.AdoptedStyleSheet=15]="AdoptedStyleSheet",e[e.CustomElement=16]="CustomElement",e))(Wd||{}),Vd=(e=>(e[e.MouseUp=0]="MouseUp",e[e.MouseDown=1]="MouseDown",e[e.Click=2]="Click",e[e.ContextMenu=3]="ContextMenu",e[e.DblClick=4]="DblClick",e[e.Focus=5]="Focus",e[e.Blur=6]="Blur",e[e.TouchStart=7]="TouchStart",e[e.TouchMove_Departed=8]="TouchMove_Departed",e[e.TouchEnd=9]="TouchEnd",e[e.TouchCancel=10]="TouchCancel",e))(Vd||{}),Gd=(e=>(e[e.Mouse=0]="Mouse",e[e.Pen=1]="Pen",e[e.Touch=2]="Touch",e))(Gd||{}),Xd=(e=>(e[e["2D"]=0]="2D",e[e.WebGL=1]="WebGL",e[e.WebGL2=2]="WebGL2",e))(Xd||{}),Yd=(e=>(e[e.Play=0]="Play",e[e.Pause=1]="Pause",e[e.Seeked=2]="Seeked",e[e.VolumeChange=3]="VolumeChange",e[e.RateChange=4]="RateChange",e))(Yd||{}),Jd=(e=>(e[e.Document=0]="Document",e[e.DocumentType=1]="DocumentType",e[e.Element=2]="Element",e[e.Text=3]="Text",e[e.CDATA=4]="CDATA",e[e.Comment=5]="Comment",e))(Jd||{});function Kd(e){return"__ln"in e}class Zd{constructor(){Fn(this,"length",0),Fn(this,"head",null),Fn(this,"tail",null)}get(e){if(e>=this.length)throw new Error("Position outside of list range");let t=this.head;for(let n=0;n`${e}@${t}`;class Qd{constructor(){Fn(this,"frozen",!1),Fn(this,"locked",!1),Fn(this,"texts",[]),Fn(this,"attributes",[]),Fn(this,"attributeMap",new WeakMap),Fn(this,"removes",[]),Fn(this,"mapRemoves",[]),Fn(this,"movedMap",{}),Fn(this,"addedSet",new Set),Fn(this,"movedSet",new Set),Fn(this,"droppedSet",new Set),Fn(this,"removesSubTreeCache",new Set),Fn(this,"mutationCb"),Fn(this,"blockClass"),Fn(this,"blockSelector"),Fn(this,"maskTextClass"),Fn(this,"maskTextSelector"),Fn(this,"inlineStylesheet"),Fn(this,"maskInputOptions"),Fn(this,"maskTextFn"),Fn(this,"maskInputFn"),Fn(this,"keepIframeSrcFn"),Fn(this,"recordCanvas"),Fn(this,"inlineImages"),Fn(this,"slimDOMOptions"),Fn(this,"dataURLOptions"),Fn(this,"doc"),Fn(this,"mirror"),Fn(this,"iframeManager"),Fn(this,"stylesheetManager"),Fn(this,"shadowDomManager"),Fn(this,"canvasManager"),Fn(this,"processedNodeManager"),Fn(this,"unattachedDoc"),Fn(this,"processMutations",(e=>{e.forEach(this.processMutation),this.emit()})),Fn(this,"emit",(()=>{if(this.frozen||this.locked)return;const e=[],t=new Set,n=new Zd,o=e=>{let t=e,n=yo;for(;n===yo;)t=t&&t.nextSibling,n=t&&this.mirror.getId(t);return n},r=r=>{const i=wd.parentNode(r);if(!i||!zd(r))return;let a=!1;if(r.nodeType===Node.TEXT_NODE){const e=i.tagName;if("TEXTAREA"===e)return;"STYLE"===e&&this.addedSet.has(i)&&(a=!0)}const s=$n(i)?this.mirror.getId(Ud(r)):this.mirror.getId(i),l=o(r);if(-1===s||-1===l)return n.addNode(r);const c=Do(r,{doc:this.doc,mirror:this.mirror,blockClass:this.blockClass,blockSelector:this.blockSelector,maskTextClass:this.maskTextClass,maskTextSelector:this.maskTextSelector,skipChild:!0,newlyAddedElement:!0,inlineStylesheet:this.inlineStylesheet,maskInputOptions:this.maskInputOptions,maskTextFn:this.maskTextFn,maskInputFn:this.maskInputFn,slimDOMOptions:this.slimDOMOptions,dataURLOptions:this.dataURLOptions,recordCanvas:this.recordCanvas,inlineImages:this.inlineImages,onSerialize:e=>{jd(e,this.mirror)&&this.iframeManager.addIframe(e),Fd(e,this.mirror)&&this.stylesheetManager.trackLinkElement(e),Bd(r)&&this.shadowDomManager.addShadowRoot(wd.shadowRoot(r),this.doc)},onIframeLoad:(e,t)=>{this.iframeManager.attachIframe(e,t),this.shadowDomManager.observeAttachShadow(e)},onStylesheetLoad:(e,t)=>{this.stylesheetManager.attachLinkElement(e,t)},cssCaptured:a});c&&(e.push({parentId:s,nextId:l,node:c}),t.add(c.id))};for(;this.mapRemoves.length;)this.mirror.removeNodeFromMap(this.mapRemoves.shift());for(const s of this.movedSet)tp(this.removesSubTreeCache,s,this.mirror)&&!this.movedSet.has(wd.parentNode(s))||r(s);for(const s of this.addedSet)np(this.droppedSet,s)||tp(this.removesSubTreeCache,s,this.mirror)?np(this.movedSet,s)?r(s):this.droppedSet.add(s):r(s);let i=null;for(;n.length;){let e=null;if(i){const t=this.mirror.getId(wd.parentNode(i.value)),n=o(i.value);-1!==t&&-1!==n&&(e=i)}if(!e){let t=n.tail;for(;t;){const n=t;if(t=t.previous,n){const t=this.mirror.getId(wd.parentNode(n.value));if(-1===o(n.value))continue;if(-1!==t){e=n;break}{const t=n.value,o=wd.parentNode(t);if(o&&o.nodeType===Node.DOCUMENT_FRAGMENT_NODE){const t=wd.host(o);if(-1!==this.mirror.getId(t)){e=n;break}}}}}}if(!e){for(;n.head;)n.removeNode(n.head.value);break}i=e.previous,n.removeNode(e.value),r(e.value)}const a={texts:this.texts.map((e=>{const t=e.node,n=wd.parentNode(t);return n&&"TEXTAREA"===n.tagName&&this.genTextAreaValueMutation(n),{id:this.mirror.getId(t),value:e.value}})).filter((e=>!t.has(e.id))).filter((e=>this.mirror.has(e.id))),attributes:this.attributes.map((e=>{const{attributes:t}=e;if("string"==typeof t.style){const n=JSON.stringify(e.styleDiff),o=JSON.stringify(e._unchangedStyles);n.length!t.has(e.id))).filter((e=>this.mirror.has(e.id))),removes:this.removes,adds:e};(a.texts.length||a.attributes.length||a.removes.length||a.adds.length)&&(this.texts=[],this.attributes=[],this.attributeMap=new WeakMap,this.removes=[],this.addedSet=new Set,this.movedSet=new Set,this.droppedSet=new Set,this.removesSubTreeCache=new Set,this.movedMap={},this.mutationCb(a))})),Fn(this,"genTextAreaValueMutation",(e=>{let t=this.attributeMap.get(e);t||(t={node:e,attributes:{},styleDiff:{},_unchangedStyles:{}},this.attributes.push(t),this.attributeMap.set(e,t)),t.attributes.value=Array.from(wd.childNodes(e),(e=>wd.textContent(e)||"")).join("")})),Fn(this,"processMutation",(e=>{if(!Pd(e.target,this.mirror,this.slimDOMOptions))switch(e.type){case"characterData":{const t=wd.textContent(e.target);Rd(e.target,this.blockClass,this.blockSelector,!1)||t===e.oldValue||this.texts.push({value:Mo(e.target,this.maskTextClass,this.maskTextSelector,!0)&&t?this.maskTextFn?this.maskTextFn(t,Md(e.target)):t.replace(/[\S]/g,"*"):t,node:e.target});break}case"attributes":{const n=e.target;let o=e.attributeName,r=e.target.getAttribute(o);if("value"===o){const e=ao(n);r=oo({element:n,maskInputOptions:this.maskInputOptions,tagName:n.tagName,type:e,value:r,maskInputFn:this.maskInputFn})}if(Rd(e.target,this.blockClass,this.blockSelector,!1)||r===e.oldValue)return;let i=this.attributeMap.get(e.target);if("IFRAME"===n.tagName&&"src"===o&&!this.keepIframeSrcFn(r)){if(n.contentDocument)return;o="rr_src"}if(i||(i={node:e.target,attributes:{},styleDiff:{},_unchangedStyles:{}},this.attributes.push(i),this.attributeMap.set(e.target,i)),"type"===o&&"INPUT"===n.tagName&&"password"===(e.oldValue||"").toLowerCase()&&n.setAttribute("data-rr-is-password","true"),!Lo(n.tagName,o))if(i.attributes[o]=Oo(this.doc,ro(n.tagName),ro(o),r),"style"===o){if(!this.unattachedDoc)try{this.unattachedDoc=document.implementation.createHTMLDocument()}catch(t){this.unattachedDoc=this.doc}const o=this.unattachedDoc.createElement("span");e.oldValue&&o.setAttribute("style",e.oldValue);for(const e of Array.from(n.style)){const t=n.style.getPropertyValue(e),r=n.style.getPropertyPriority(e);t!==o.style.getPropertyValue(e)||r!==o.style.getPropertyPriority(e)?i.styleDiff[e]=""===r?t:[t,r]:i._unchangedStyles[e]=[t,r]}for(const e of Array.from(o.style))""===n.style.getPropertyValue(e)&&(i.styleDiff[e]=!1)}else"open"===o&&"DIALOG"===n.tagName&&(n.matches("dialog:modal")?i.attributes.rr_open_mode="modal":i.attributes.rr_open_mode="non-modal");break}case"childList":if(Rd(e.target,this.blockClass,this.blockSelector,!0))return;if("TEXTAREA"===e.target.tagName)return void this.genTextAreaValueMutation(e.target);e.addedNodes.forEach((t=>this.genAdds(t,e.target))),e.removedNodes.forEach((t=>{const n=this.mirror.getId(t),o=$n(e.target)?this.mirror.getId(wd.host(e.target)):this.mirror.getId(e.target);Rd(e.target,this.blockClass,this.blockSelector,!1)||Pd(t,this.mirror,this.slimDOMOptions)||!function(e,t){return-1!==t.getId(e)}(t,this.mirror)||(this.addedSet.has(t)?(ep(this.addedSet,t),this.droppedSet.add(t)):this.addedSet.has(e.target)&&-1===n||Dd(e.target,this.mirror)||(this.movedSet.has(t)&&this.movedMap[$d(n,o)]?ep(this.movedSet,t):(this.removes.push({parentId:o,id:n,isShadow:!(!$n(e.target)||!Qn(e.target))||void 0}),function(e,t){const n=[e];for(;n.length;){const e=n.pop();t.has(e)||(t.add(e),wd.childNodes(e).forEach((e=>n.push(e))))}}(t,this.removesSubTreeCache))),this.mapRemoves.push(t))}))}})),Fn(this,"genAdds",((e,t)=>{if(!this.processedNodeManager.inOtherBuffer(e,this)&&!this.addedSet.has(e)&&!this.movedSet.has(e)){if(this.mirror.hasNode(e)){if(Pd(e,this.mirror,this.slimDOMOptions))return;this.movedSet.add(e);let n=null;t&&this.mirror.hasNode(t)&&(n=this.mirror.getId(t)),n&&-1!==n&&(this.movedMap[$d(this.mirror.getId(e),n)]=!0)}else this.addedSet.add(e),this.droppedSet.delete(e);Rd(e,this.blockClass,this.blockSelector,!1)||(wd.childNodes(e).forEach((e=>this.genAdds(e))),Bd(e)&&wd.childNodes(wd.shadowRoot(e)).forEach((t=>{this.processedNodeManager.add(t,this),this.genAdds(t,e)})))}}))}init(e){["mutationCb","blockClass","blockSelector","maskTextClass","maskTextSelector","inlineStylesheet","maskInputOptions","maskTextFn","maskInputFn","keepIframeSrcFn","recordCanvas","inlineImages","slimDOMOptions","dataURLOptions","doc","mirror","iframeManager","stylesheetManager","shadowDomManager","canvasManager","processedNodeManager"].forEach((t=>{this[t]=e[t]}))}freeze(){this.frozen=!0,this.canvasManager.freeze()}unfreeze(){this.frozen=!1,this.canvasManager.unfreeze(),this.emit()}isFrozen(){return this.frozen}lock(){this.locked=!0,this.canvasManager.lock()}unlock(){this.locked=!1,this.canvasManager.unlock(),this.emit()}reset(){this.shadowDomManager.reset(),this.canvasManager.reset()}}function ep(e,t){e.delete(t),wd.childNodes(t).forEach((t=>ep(e,t)))}function tp(e,t,n){return 0!==e.size&&function(e,t,n){const o=wd.parentNode(t);return!!o&&e.has(o)}(e,t)}function np(e,t){return 0!==e.size&&op(e,t)}function op(e,t){const n=wd.parentNode(t);return!!n&&(!!e.has(n)||op(e,n))}let rp;const ip=e=>{if(!rp)return e;return(...t)=>{try{return e(...t)}catch(n){if(rp&&!0===rp(n))return;throw n}}},ap=[];function sp(e){try{if("composedPath"in e){const t=e.composedPath();if(t.length)return t[0]}else if("path"in e&&e.path.length)return e.path[0]}catch{}return e&&e.target}function lp(e,t){const n=new Qd;ap.push(n),n.init(e);const o=new(bd())(ip(n.processMutations.bind(n)));return o.observe(t,{attributes:!0,attributeOldValue:!0,characterData:!0,characterDataOldValue:!0,childList:!0,subtree:!0}),o}function cp({mouseInteractionCb:e,doc:t,mirror:n,blockClass:o,blockSelector:r,sampling:i}){if(!1===i.mouseInteraction)return()=>{};const a=!0===i.mouseInteraction||void 0===i.mouseInteraction?{}:i.mouseInteraction,s=[];let l=null;return Object.keys(Vd).filter((e=>Number.isNaN(Number(e))&&!e.endsWith("_Departed")&&!1!==a[e])).forEach((i=>{let a=ro(i);const c=(t=>i=>{const a=sp(i);if(Rd(a,o,r,!0))return;let s=null,c=t;if("pointerType"in i){switch(i.pointerType){case"mouse":s=Gd.Mouse;break;case"touch":s=Gd.Touch;break;case"pen":s=Gd.Pen}s===Gd.Touch?Vd[t]===Vd.MouseDown?c="TouchStart":Vd[t]===Vd.MouseUp&&(c="TouchEnd"):Gd.Pen}else Nd(i)&&(s=Gd.Touch);null!==s?(l=s,(c.startsWith("Touch")&&s===Gd.Touch||c.startsWith("Mouse")&&s===Gd.Mouse)&&(s=null)):Vd[t]===Vd.Click&&(s=l,l=null);const u=Nd(i)?i.changedTouches[0]:i;if(!u)return;const d=n.getId(a),{clientX:p,clientY:h}=u;ip(e)({type:Vd[c],id:d,x:p,y:h,...null!==s&&{pointerType:s}})})(i);if(window.PointerEvent)switch(Vd[i]){case Vd.MouseDown:case Vd.MouseUp:a=a.replace("mouse","pointer");break;case Vd.TouchStart:case Vd.TouchEnd:return}s.push(kd(a,c,t))})),ip((()=>{s.forEach((e=>e()))}))}function up({scrollCb:e,doc:t,mirror:n,blockClass:o,blockSelector:r,sampling:i}){return kd("scroll",ip(Cd(ip((i=>{const a=sp(i);if(!a||Rd(a,o,r,!0))return;const s=n.getId(a);if(a===t&&t.defaultView){const n=Od(t.defaultView);e({id:s,x:n.left,y:n.top})}else e({id:s,x:a.scrollLeft,y:a.scrollTop})})),i.scroll||100)),t)}const dp=["INPUT","TEXTAREA","SELECT"],pp=new WeakMap;function hp(e){return function(e,t){if(vp("CSSGroupingRule")&&e.parentRule instanceof CSSGroupingRule||vp("CSSMediaRule")&&e.parentRule instanceof CSSMediaRule||vp("CSSSupportsRule")&&e.parentRule instanceof CSSSupportsRule||vp("CSSConditionRule")&&e.parentRule instanceof CSSConditionRule){const n=Array.from(e.parentRule.cssRules).indexOf(e);t.unshift(n)}else if(e.parentStyleSheet){const n=Array.from(e.parentStyleSheet.cssRules).indexOf(e);t.unshift(n)}return t}(e,[])}function fp(e,t,n){let o,r;return e?(e.ownerNode?o=t.getId(e.ownerNode):r=n.getId(e),{styleId:r,id:o}):{}}function mp({mirror:e,stylesheetManager:t},n){var o,r,i;let a=null;a="#document"===n.nodeName?e.getId(n):e.getId(wd.host(n));const s="#document"===n.nodeName?null==(o=n.defaultView)?void 0:o.Document:null==(i=null==(r=n.ownerDocument)?void 0:r.defaultView)?void 0:i.ShadowRoot,l=(null==s?void 0:s.prototype)?Object.getOwnPropertyDescriptor(null==s?void 0:s.prototype,"adoptedStyleSheets"):void 0;return null!==a&&-1!==a&&s&&l?(Object.defineProperty(n,"adoptedStyleSheets",{configurable:l.configurable,enumerable:l.enumerable,get(){var e;return null==(e=l.get)?void 0:e.call(this)},set(e){var n;const o=null==(n=l.set)?void 0:n.call(this,e);if(null!==a&&-1!==a)try{t.adoptStyleSheets(e,a)}catch(r){}return o}}),ip((()=>{Object.defineProperty(n,"adoptedStyleSheets",{configurable:l.configurable,enumerable:l.enumerable,get:l.get,set:l.set})}))):()=>{}}function gp(e,t={}){const n=e.doc.defaultView;if(!n)return()=>{};let o;!function(e,t){const{mutationCb:n,mousemoveCb:o,mouseInteractionCb:r,scrollCb:i,viewportResizeCb:a,inputCb:s,mediaInteractionCb:l,styleSheetRuleCb:c,styleDeclarationCb:u,canvasMutationCb:d,fontCb:p,selectionCb:h,customElementCb:f}=e;e.mutationCb=(...e)=>{t.mutation&&t.mutation(...e),n(...e)},e.mousemoveCb=(...e)=>{t.mousemove&&t.mousemove(...e),o(...e)},e.mouseInteractionCb=(...e)=>{t.mouseInteraction&&t.mouseInteraction(...e),r(...e)},e.scrollCb=(...e)=>{t.scroll&&t.scroll(...e),i(...e)},e.viewportResizeCb=(...e)=>{t.viewportResize&&t.viewportResize(...e),a(...e)},e.inputCb=(...e)=>{t.input&&t.input(...e),s(...e)},e.mediaInteractionCb=(...e)=>{t.mediaInteaction&&t.mediaInteaction(...e),l(...e)},e.styleSheetRuleCb=(...e)=>{t.styleSheetRule&&t.styleSheetRule(...e),c(...e)},e.styleDeclarationCb=(...e)=>{t.styleDeclaration&&t.styleDeclaration(...e),u(...e)},e.canvasMutationCb=(...e)=>{t.canvasMutation&&t.canvasMutation(...e),d(...e)},e.fontCb=(...e)=>{t.font&&t.font(...e),p(...e)},e.selectionCb=(...e)=>{t.selection&&t.selection(...e),h(...e)},e.customElementCb=(...e)=>{t.customElement&&t.customElement(...e),f(...e)}}(e,t),e.recordDOM&&(o=lp(e,e.doc));const r=function({mousemoveCb:e,sampling:t,doc:n,mirror:o}){if(!1===t.mousemove)return()=>{};const r="number"==typeof t.mousemove?t.mousemove:50,i="number"==typeof t.mousemoveCallback?t.mousemoveCallback:500;let a,s=[];const l=Cd(ip((t=>{const n=Date.now()-a;e(s.map((e=>(e.timeOffset-=n,e))),t),s=[],a=null})),i),c=ip(Cd(ip((e=>{const t=sp(e),{clientX:n,clientY:r}=Nd(e)?e.changedTouches[0]:e;a||(a=Td()),s.push({x:n,y:r,id:o.getId(t),timeOffset:Td()-a}),l("undefined"!=typeof DragEvent&&e instanceof DragEvent?Wd.Drag:e instanceof MouseEvent?Wd.MouseMove:Wd.TouchMove)})),r,{trailing:!1})),u=[kd("mousemove",c,n),kd("touchmove",c,n),kd("drag",c,n)];return ip((()=>{u.forEach((e=>e()))}))}(e),i=cp(e),a=up(e),s=function({viewportResizeCb:e},{win:t}){let n=-1,o=-1;return kd("resize",ip(Cd(ip((()=>{const t=Ld(),r=Ad();n===t&&o===r||(e({width:Number(r),height:Number(t)}),n=t,o=r)})),200)),t)}(e,{win:n}),l=function({inputCb:e,doc:t,mirror:n,blockClass:o,blockSelector:r,ignoreClass:i,ignoreSelector:a,maskInputOptions:s,maskInputFn:l,sampling:c,userTriggeredOnInput:u}){function d(e){let n=sp(e);const c=e.isTrusted,d=n&&n.tagName;if(n&&"OPTION"===d&&(n=wd.parentElement(n)),!n||!d||dp.indexOf(d)<0||Rd(n,o,r,!0))return;if(n.classList.contains(i)||a&&n.matches(a))return;let h=n.value,f=!1;const m=ao(n)||"";"radio"===m||"checkbox"===m?f=n.checked:(s[d.toLowerCase()]||s[m])&&(h=oo({element:n,maskInputOptions:s,tagName:d,type:m,value:h,maskInputFn:l})),p(n,u?{text:h,isChecked:f,userTriggered:c}:{text:h,isChecked:f});const g=n.name;"radio"===m&&g&&f&&t.querySelectorAll(`input[type="radio"][name="${g}"]`).forEach((e=>{if(e!==n){const t=e.value;p(e,u?{text:t,isChecked:!f,userTriggered:!1}:{text:t,isChecked:!f})}}))}function p(t,o){const r=pp.get(t);if(!r||r.text!==o.text||r.isChecked!==o.isChecked){pp.set(t,o);const r=n.getId(t);ip(e)({...o,id:r})}}const h=("last"===c.input?["change"]:["input","change"]).map((e=>kd(e,ip(d),t))),f=t.defaultView;if(!f)return()=>{h.forEach((e=>e()))};const m=f.Object.getOwnPropertyDescriptor(f.HTMLInputElement.prototype,"value"),g=[[f.HTMLInputElement.prototype,"value"],[f.HTMLInputElement.prototype,"checked"],[f.HTMLSelectElement.prototype,"value"],[f.HTMLTextAreaElement.prototype,"value"],[f.HTMLSelectElement.prototype,"selectedIndex"],[f.HTMLOptionElement.prototype,"selected"]];return m&&m.set&&h.push(...g.map((e=>Id(e[0],e[1],{set(){ip(d)({target:this,isTrusted:!1})}},!1,f)))),ip((()=>{h.forEach((e=>e()))}))}(e),c=function({mediaInteractionCb:e,blockClass:t,blockSelector:n,mirror:o,sampling:r,doc:i}){const a=ip((i=>Cd(ip((r=>{const a=sp(r);if(!a||Rd(a,t,n,!0))return;const{currentTime:s,volume:l,muted:c,playbackRate:u,loop:d}=a;e({type:i,id:o.getId(a),currentTime:s,volume:l,muted:c,playbackRate:u,loop:d})})),r.media||500))),s=[kd("play",a(Yd.Play),i),kd("pause",a(Yd.Pause),i),kd("seeked",a(Yd.Seeked),i),kd("volumechange",a(Yd.VolumeChange),i),kd("ratechange",a(Yd.RateChange),i)];return ip((()=>{s.forEach((e=>e()))}))}(e);let u=()=>{},d=()=>{},p=()=>{},h=()=>{};e.recordDOM&&(u=function({styleSheetRuleCb:e,mirror:t,stylesheetManager:n},{win:o}){if(!o.CSSStyleSheet||!o.CSSStyleSheet.prototype)return()=>{};const r=o.CSSStyleSheet.prototype.insertRule;o.CSSStyleSheet.prototype.insertRule=new Proxy(r,{apply:ip(((o,r,i)=>{const[a,s]=i,{id:l,styleId:c}=fp(r,t,n.styleMirror);return(l&&-1!==l||c&&-1!==c)&&e({id:l,styleId:c,adds:[{rule:a,index:s}]}),o.apply(r,i)}))}),o.CSSStyleSheet.prototype.addRule=function(e,t,n=this.cssRules.length){const r=`${e} { ${t} }`;return o.CSSStyleSheet.prototype.insertRule.apply(this,[r,n])};const i=o.CSSStyleSheet.prototype.deleteRule;let a,s;o.CSSStyleSheet.prototype.deleteRule=new Proxy(i,{apply:ip(((o,r,i)=>{const[a]=i,{id:s,styleId:l}=fp(r,t,n.styleMirror);return(s&&-1!==s||l&&-1!==l)&&e({id:s,styleId:l,removes:[{index:a}]}),o.apply(r,i)}))}),o.CSSStyleSheet.prototype.removeRule=function(e){return o.CSSStyleSheet.prototype.deleteRule.apply(this,[e])},o.CSSStyleSheet.prototype.replace&&(a=o.CSSStyleSheet.prototype.replace,o.CSSStyleSheet.prototype.replace=new Proxy(a,{apply:ip(((o,r,i)=>{const[a]=i,{id:s,styleId:l}=fp(r,t,n.styleMirror);return(s&&-1!==s||l&&-1!==l)&&e({id:s,styleId:l,replace:a}),o.apply(r,i)}))})),o.CSSStyleSheet.prototype.replaceSync&&(s=o.CSSStyleSheet.prototype.replaceSync,o.CSSStyleSheet.prototype.replaceSync=new Proxy(s,{apply:ip(((o,r,i)=>{const[a]=i,{id:s,styleId:l}=fp(r,t,n.styleMirror);return(s&&-1!==s||l&&-1!==l)&&e({id:s,styleId:l,replaceSync:a}),o.apply(r,i)}))}));const l={};yp("CSSGroupingRule")?l.CSSGroupingRule=o.CSSGroupingRule:(yp("CSSMediaRule")&&(l.CSSMediaRule=o.CSSMediaRule),yp("CSSConditionRule")&&(l.CSSConditionRule=o.CSSConditionRule),yp("CSSSupportsRule")&&(l.CSSSupportsRule=o.CSSSupportsRule));const c={};return Object.entries(l).forEach((([o,r])=>{c[o]={insertRule:r.prototype.insertRule,deleteRule:r.prototype.deleteRule},r.prototype.insertRule=new Proxy(c[o].insertRule,{apply:ip(((o,r,i)=>{const[a,s]=i,{id:l,styleId:c}=fp(r.parentStyleSheet,t,n.styleMirror);return(l&&-1!==l||c&&-1!==c)&&e({id:l,styleId:c,adds:[{rule:a,index:[...hp(r),s||0]}]}),o.apply(r,i)}))}),r.prototype.deleteRule=new Proxy(c[o].deleteRule,{apply:ip(((o,r,i)=>{const[a]=i,{id:s,styleId:l}=fp(r.parentStyleSheet,t,n.styleMirror);return(s&&-1!==s||l&&-1!==l)&&e({id:s,styleId:l,removes:[{index:[...hp(r),a]}]}),o.apply(r,i)}))})})),ip((()=>{o.CSSStyleSheet.prototype.insertRule=r,o.CSSStyleSheet.prototype.deleteRule=i,a&&(o.CSSStyleSheet.prototype.replace=a),s&&(o.CSSStyleSheet.prototype.replaceSync=s),Object.entries(l).forEach((([e,t])=>{t.prototype.insertRule=c[e].insertRule,t.prototype.deleteRule=c[e].deleteRule}))}))}(e,{win:n}),d=mp(e,e.doc),p=function({styleDeclarationCb:e,mirror:t,ignoreCSSAttributes:n,stylesheetManager:o},{win:r}){const i=r.CSSStyleDeclaration.prototype.setProperty;r.CSSStyleDeclaration.prototype.setProperty=new Proxy(i,{apply:ip(((r,a,s)=>{var l;const[c,u,d]=s;if(n.has(c))return i.apply(a,[c,u,d]);const{id:p,styleId:h}=fp(null==(l=a.parentRule)?void 0:l.parentStyleSheet,t,o.styleMirror);return(p&&-1!==p||h&&-1!==h)&&e({id:p,styleId:h,set:{property:c,value:u,priority:d},index:hp(a.parentRule)}),r.apply(a,s)}))});const a=r.CSSStyleDeclaration.prototype.removeProperty;return r.CSSStyleDeclaration.prototype.removeProperty=new Proxy(a,{apply:ip(((r,i,s)=>{var l;const[c]=s;if(n.has(c))return a.apply(i,[c]);const{id:u,styleId:d}=fp(null==(l=i.parentRule)?void 0:l.parentStyleSheet,t,o.styleMirror);return(u&&-1!==u||d&&-1!==d)&&e({id:u,styleId:d,remove:{property:c},index:hp(i.parentRule)}),r.apply(i,s)}))}),ip((()=>{r.CSSStyleDeclaration.prototype.setProperty=i,r.CSSStyleDeclaration.prototype.removeProperty=a}))}(e,{win:n}),e.collectFonts&&(h=function({fontCb:e,doc:t}){const n=t.defaultView;if(!n)return()=>{};const o=[],r=new WeakMap,i=n.FontFace;n.FontFace=function(e,t,n){const o=new i(e,t,n);return r.set(o,{family:e,buffer:"string"!=typeof t,descriptors:n,fontSource:"string"==typeof t?t:JSON.stringify(Array.from(new Uint8Array(t)))}),o};const a=Ed(t.fonts,"add",(function(t){return function(n){return setTimeout(ip((()=>{const t=r.get(n);t&&(e(t),r.delete(n))})),0),t.apply(this,[n])}}));return o.push((()=>{n.FontFace=i})),o.push(a),ip((()=>{o.forEach((e=>e()))}))}(e)));const f=function(e){const{doc:t,mirror:n,blockClass:o,blockSelector:r,selectionCb:i}=e;let a=!0;const s=ip((()=>{const e=t.getSelection();if(!e||a&&(null==e?void 0:e.isCollapsed))return;a=e.isCollapsed||!1;const s=[],l=e.rangeCount||0;for(let t=0;t{}}(e),g=[];for(const v of e.plugins)g.push(v.observer(v.callback,n,v.options));return ip((()=>{ap.forEach((e=>e.reset())),null==o||o.disconnect(),r(),i(),a(),s(),l(),c(),u(),d(),p(),h(),f(),m(),g.forEach((e=>e()))}))}function vp(e){return void 0!==window[e]}function yp(e){return Boolean(void 0!==window[e]&&window[e].prototype&&"insertRule"in window[e].prototype&&"deleteRule"in window[e].prototype)}class bp{constructor(e){Fn(this,"iframeIdToRemoteIdMap",new WeakMap),Fn(this,"iframeRemoteIdToIdMap",new WeakMap),this.generateIdFn=e}getId(e,t,n,o){const r=n||this.getIdToRemoteIdMap(e),i=o||this.getRemoteIdToIdMap(e);let a=r.get(t);return a||(a=this.generateIdFn(),r.set(t,a),i.set(a,t)),a}getIds(e,t){const n=this.getIdToRemoteIdMap(e),o=this.getRemoteIdToIdMap(e);return t.map((t=>this.getId(e,t,n,o)))}getRemoteId(e,t,n){const o=n||this.getRemoteIdToIdMap(e);if("number"!=typeof t)return t;const r=o.get(t);return r||-1}getRemoteIds(e,t){const n=this.getRemoteIdToIdMap(e);return t.map((t=>this.getRemoteId(e,t,n)))}reset(e){if(!e)return this.iframeIdToRemoteIdMap=new WeakMap,void(this.iframeRemoteIdToIdMap=new WeakMap);this.iframeIdToRemoteIdMap.delete(e),this.iframeRemoteIdToIdMap.delete(e)}getIdToRemoteIdMap(e){let t=this.iframeIdToRemoteIdMap.get(e);return t||(t=new Map,this.iframeIdToRemoteIdMap.set(e,t)),t}getRemoteIdToIdMap(e){let t=this.iframeRemoteIdToIdMap.get(e);return t||(t=new Map,this.iframeRemoteIdToIdMap.set(e,t)),t}}class wp{constructor(e){Fn(this,"iframes",new WeakMap),Fn(this,"crossOriginIframeMap",new WeakMap),Fn(this,"crossOriginIframeMirror",new bp(bo)),Fn(this,"crossOriginIframeStyleMirror"),Fn(this,"crossOriginIframeRootIdMap",new WeakMap),Fn(this,"mirror"),Fn(this,"mutationCb"),Fn(this,"wrappedEmit"),Fn(this,"loadListener"),Fn(this,"stylesheetManager"),Fn(this,"recordCrossOriginIframes"),this.mutationCb=e.mutationCb,this.wrappedEmit=e.wrappedEmit,this.stylesheetManager=e.stylesheetManager,this.recordCrossOriginIframes=e.recordCrossOriginIframes,this.crossOriginIframeStyleMirror=new bp(this.stylesheetManager.styleMirror.generateId.bind(this.stylesheetManager.styleMirror)),this.mirror=e.mirror,this.recordCrossOriginIframes&&window.addEventListener("message",this.handleMessage.bind(this))}addIframe(e){this.iframes.set(e,!0),e.contentWindow&&this.crossOriginIframeMap.set(e.contentWindow,e)}addLoadListener(e){this.loadListener=e}attachIframe(e,t){var n,o;this.mutationCb({adds:[{parentId:this.mirror.getId(e),nextId:null,node:t}],removes:[],texts:[],attributes:[],isAttachIframe:!0}),this.recordCrossOriginIframes&&(null==(n=e.contentWindow)||n.addEventListener("message",this.handleMessage.bind(this))),null==(o=this.loadListener)||o.call(this,e),e.contentDocument&&e.contentDocument.adoptedStyleSheets&&e.contentDocument.adoptedStyleSheets.length>0&&this.stylesheetManager.adoptStyleSheets(e.contentDocument.adoptedStyleSheets,this.mirror.getId(e.contentDocument))}handleMessage(e){const t=e;if("rrweb"!==t.data.type||t.origin!==t.data.origin)return;if(!e.source)return;const n=this.crossOriginIframeMap.get(e.source);if(!n)return;const o=this.transformCrossOriginEvent(n,t.data.event);o&&this.wrappedEmit(o,t.data.isCheckout)}transformCrossOriginEvent(e,t){var n;switch(t.type){case qd.FullSnapshot:{this.crossOriginIframeMirror.reset(e),this.crossOriginIframeStyleMirror.reset(e),this.replaceIdOnNode(t.data.node,e);const n=t.data.node.id;return this.crossOriginIframeRootIdMap.set(e,n),this.patchRootIdOnNode(t.data.node,n),{timestamp:t.timestamp,type:qd.IncrementalSnapshot,data:{source:Wd.Mutation,adds:[{parentId:this.mirror.getId(e),nextId:null,node:t.data.node}],removes:[],texts:[],attributes:[],isAttachIframe:!0}}}case qd.Meta:case qd.Load:case qd.DomContentLoaded:return!1;case qd.Plugin:return t;case qd.Custom:return this.replaceIds(t.data.payload,e,["id","parentId","previousId","nextId"]),t;case qd.IncrementalSnapshot:switch(t.data.source){case Wd.Mutation:return t.data.adds.forEach((t=>{this.replaceIds(t,e,["parentId","nextId","previousId"]),this.replaceIdOnNode(t.node,e);const n=this.crossOriginIframeRootIdMap.get(e);n&&this.patchRootIdOnNode(t.node,n)})),t.data.removes.forEach((t=>{this.replaceIds(t,e,["parentId","id"])})),t.data.attributes.forEach((t=>{this.replaceIds(t,e,["id"])})),t.data.texts.forEach((t=>{this.replaceIds(t,e,["id"])})),t;case Wd.Drag:case Wd.TouchMove:case Wd.MouseMove:return t.data.positions.forEach((t=>{this.replaceIds(t,e,["id"])})),t;case Wd.ViewportResize:return!1;case Wd.MediaInteraction:case Wd.MouseInteraction:case Wd.Scroll:case Wd.CanvasMutation:case Wd.Input:return this.replaceIds(t.data,e,["id"]),t;case Wd.StyleSheetRule:case Wd.StyleDeclaration:return this.replaceIds(t.data,e,["id"]),this.replaceStyleIds(t.data,e,["styleId"]),t;case Wd.Font:return t;case Wd.Selection:return t.data.ranges.forEach((t=>{this.replaceIds(t,e,["start","end"])})),t;case Wd.AdoptedStyleSheet:return this.replaceIds(t.data,e,["id"]),this.replaceStyleIds(t.data,e,["styleIds"]),null==(n=t.data.styles)||n.forEach((t=>{this.replaceStyleIds(t,e,["styleId"])})),t}}return!1}replace(e,t,n,o){for(const r of o)(Array.isArray(t[r])||"number"==typeof t[r])&&(Array.isArray(t[r])?t[r]=e.getIds(n,t[r]):t[r]=e.getId(n,t[r]));return t}replaceIds(e,t,n){return this.replace(this.crossOriginIframeMirror,e,t,n)}replaceStyleIds(e,t,n){return this.replace(this.crossOriginIframeStyleMirror,e,t,n)}replaceIdOnNode(e,t){this.replaceIds(e,t,["id","rootId"]),"childNodes"in e&&e.childNodes.forEach((e=>{this.replaceIdOnNode(e,t)}))}patchRootIdOnNode(e,t){e.type===Jd.Document||e.rootId||(e.rootId=t),"childNodes"in e&&e.childNodes.forEach((e=>{this.patchRootIdOnNode(e,t)}))}}class kp{constructor(e){Fn(this,"shadowDoms",new WeakSet),Fn(this,"mutationCb"),Fn(this,"scrollCb"),Fn(this,"bypassOptions"),Fn(this,"mirror"),Fn(this,"restoreHandlers",[]),this.mutationCb=e.mutationCb,this.scrollCb=e.scrollCb,this.bypassOptions=e.bypassOptions,this.mirror=e.mirror,this.init()}init(){this.reset(),this.patchAttachShadow(Element,document)}addShadowRoot(e,t){if(!Qn(e))return;if(this.shadowDoms.has(e))return;this.shadowDoms.add(e);const n=lp({...this.bypassOptions,doc:t,mutationCb:this.mutationCb,mirror:this.mirror,shadowDomManager:this},e);this.restoreHandlers.push((()=>n.disconnect())),this.restoreHandlers.push(up({...this.bypassOptions,scrollCb:this.scrollCb,doc:e,mirror:this.mirror})),setTimeout((()=>{e.adoptedStyleSheets&&e.adoptedStyleSheets.length>0&&this.bypassOptions.stylesheetManager.adoptStyleSheets(e.adoptedStyleSheets,this.mirror.getId(wd.host(e))),this.restoreHandlers.push(mp({mirror:this.mirror,stylesheetManager:this.bypassOptions.stylesheetManager},e))}),0)}observeAttachShadow(e){e.contentWindow&&e.contentDocument&&this.patchAttachShadow(e.contentWindow.Element,e.contentDocument)}patchAttachShadow(e,t){const n=this;this.restoreHandlers.push(Ed(e.prototype,"attachShadow",(function(e){return function(o){const r=e.call(this,o),i=wd.shadowRoot(this);return i&&zd(this)&&n.addShadowRoot(i,t),r}})))}reset(){this.restoreHandlers.forEach((e=>{try{e()}catch(t){}})),this.restoreHandlers=[],this.shadowDoms=new WeakSet}}for(var xp="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Sp="undefined"==typeof Uint8Array?[]:new Uint8Array(256),Cp=0;Cp<64;Cp++)Sp[xp.charCodeAt(Cp)]=Cp;const Ip=new Map;const Ep=(e,t,n)=>{if(!e||!Lp(e,t)&&"object"!=typeof e)return;const o=function(e,t){let n=Ip.get(e);return n||(n=new Map,Ip.set(e,n)),n.has(t)||n.set(t,[]),n.get(t)}(n,e.constructor.name);let r=o.indexOf(e);return-1===r&&(r=o.length,o.push(e)),r};function Tp(e,t,n){if(e instanceof Array)return e.map((e=>Tp(e,t,n)));if(null===e)return e;if(e instanceof Float32Array||e instanceof Float64Array||e instanceof Int32Array||e instanceof Uint32Array||e instanceof Uint8Array||e instanceof Uint16Array||e instanceof Int16Array||e instanceof Int8Array||e instanceof Uint8ClampedArray){return{rr_type:e.constructor.name,args:[Object.values(e)]}}if(e instanceof ArrayBuffer){return{rr_type:e.constructor.name,base64:function(e){var t,n=new Uint8Array(e),o=n.length,r="";for(t=0;t>2],r+=xp[(3&n[t])<<4|n[t+1]>>4],r+=xp[(15&n[t+1])<<2|n[t+2]>>6],r+=xp[63&n[t+2]];return o%3==2?r=r.substring(0,r.length-1)+"=":o%3==1&&(r=r.substring(0,r.length-2)+"=="),r}(e)}}if(e instanceof DataView){return{rr_type:e.constructor.name,args:[Tp(e.buffer,t,n),e.byteOffset,e.byteLength]}}if(e instanceof HTMLImageElement){const t=e.constructor.name,{src:n}=e;return{rr_type:t,src:n}}if(e instanceof HTMLCanvasElement){return{rr_type:"HTMLImageElement",src:e.toDataURL()}}if(e instanceof ImageData){return{rr_type:e.constructor.name,args:[Tp(e.data,t,n),e.width,e.height]}}if(Lp(e,t)||"object"==typeof e){return{rr_type:e.constructor.name,index:Ep(e,t,n)}}return e}const Op=(e,t,n)=>e.map((e=>Tp(e,t,n))),Lp=(e,t)=>{const n=["WebGLActiveInfo","WebGLBuffer","WebGLFramebuffer","WebGLProgram","WebGLRenderbuffer","WebGLShader","WebGLShaderPrecisionFormat","WebGLTexture","WebGLUniformLocation","WebGLVertexArrayObject","WebGLVertexArrayObjectOES"].filter((e=>"function"==typeof t[e]));return Boolean(n.find((n=>e instanceof t[n])))};function Ap(e,t,n,o){const r=[];try{const i=Ed(e.HTMLCanvasElement.prototype,"getContext",(function(e){return function(r,...i){if(!Rd(this,t,n,!0)){const e=function(e){return"experimental-webgl"===e?"webgl":e}(r);if("__context"in this||(this.__context=e),o&&["webgl","webgl2"].includes(e))if(i[0]&&"object"==typeof i[0]){const e=i[0];e.preserveDrawingBuffer||(e.preserveDrawingBuffer=!0)}else i.splice(0,1,{preserveDrawingBuffer:!0})}return e.apply(this,[r,...i])}}));r.push(i)}catch{console.error("failed to patch HTMLCanvasElement.prototype.getContext")}return()=>{r.forEach((e=>e()))}}function Mp(e,t,n,o,r,i){const a=[],s=Object.getOwnPropertyNames(e);for(const l of s)if(!["isContextLost","canvas","drawingBufferWidth","drawingBufferHeight"].includes(l))try{if("function"!=typeof e[l])continue;const s=Ed(e,l,(function(e){return function(...a){const s=e.apply(this,a);if(Ep(s,i,this),"tagName"in this.canvas&&!Rd(this.canvas,o,r,!0)){const e=Op(a,i,this),o={type:t,property:l,args:e};n(this.canvas,o)}return s}}));a.push(s)}catch{const o=Id(e,l,{set(e){n(this.canvas,{type:t,property:l,args:[e],setter:!0})}});a.push(o)}return a}const Rp="KGZ1bmN0aW9uKCkgewogICJ1c2Ugc3RyaWN0IjsKICB2YXIgY2hhcnMgPSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7CiAgdmFyIGxvb2t1cCA9IHR5cGVvZiBVaW50OEFycmF5ID09PSAidW5kZWZpbmVkIiA/IFtdIDogbmV3IFVpbnQ4QXJyYXkoMjU2KTsKICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYXJzLmxlbmd0aDsgaSsrKSB7CiAgICBsb29rdXBbY2hhcnMuY2hhckNvZGVBdChpKV0gPSBpOwogIH0KICB2YXIgZW5jb2RlID0gZnVuY3Rpb24oYXJyYXlidWZmZXIpIHsKICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGFycmF5YnVmZmVyKSwgaTIsIGxlbiA9IGJ5dGVzLmxlbmd0aCwgYmFzZTY0ID0gIiI7CiAgICBmb3IgKGkyID0gMDsgaTIgPCBsZW47IGkyICs9IDMpIHsKICAgICAgYmFzZTY0ICs9IGNoYXJzW2J5dGVzW2kyXSA+PiAyXTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMl0gJiAzKSA8PCA0IHwgYnl0ZXNbaTIgKyAxXSA+PiA0XTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMiArIDFdICYgMTUpIDw8IDIgfCBieXRlc1tpMiArIDJdID4+IDZdOwogICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaTIgKyAyXSAmIDYzXTsKICAgIH0KICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgIj0iOwogICAgfSBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgIj09IjsKICAgIH0KICAgIHJldHVybiBiYXNlNjQ7CiAgfTsKICBjb25zdCBsYXN0QmxvYk1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7CiAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTsKICBhc3luYyBmdW5jdGlvbiBnZXRUcmFuc3BhcmVudEJsb2JGb3Iod2lkdGgsIGhlaWdodCwgZGF0YVVSTE9wdGlvbnMpIHsKICAgIGNvbnN0IGlkID0gYCR7d2lkdGh9LSR7aGVpZ2h0fWA7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBpZiAodHJhbnNwYXJlbnRCbG9iTWFwLmhhcyhpZCkpIHJldHVybiB0cmFuc3BhcmVudEJsb2JNYXAuZ2V0KGlkKTsKICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsKICAgICAgb2Zmc2NyZWVuLmdldENvbnRleHQoIjJkIik7CiAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCBvZmZzY3JlZW4uY29udmVydFRvQmxvYihkYXRhVVJMT3B0aW9ucyk7CiAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gYXdhaXQgYmxvYi5hcnJheUJ1ZmZlcigpOwogICAgICBjb25zdCBiYXNlNjQgPSBlbmNvZGUoYXJyYXlCdWZmZXIpOwogICAgICB0cmFuc3BhcmVudEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICByZXR1cm4gYmFzZTY0OwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuICIiOwogICAgfQogIH0KICBjb25zdCB3b3JrZXIgPSBzZWxmOwogIHdvcmtlci5vbm1lc3NhZ2UgPSBhc3luYyBmdW5jdGlvbihlKSB7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBjb25zdCB7IGlkLCBiaXRtYXAsIHdpZHRoLCBoZWlnaHQsIGRhdGFVUkxPcHRpb25zIH0gPSBlLmRhdGE7CiAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKAogICAgICAgIHdpZHRoLAogICAgICAgIGhlaWdodCwKICAgICAgICBkYXRhVVJMT3B0aW9ucwogICAgICApOwogICAgICBjb25zdCBvZmZzY3JlZW4gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpOwogICAgICBjb25zdCBjdHggPSBvZmZzY3JlZW4uZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgY3R4LmRyYXdJbWFnZShiaXRtYXAsIDAsIDApOwogICAgICBiaXRtYXAuY2xvc2UoKTsKICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IG9mZnNjcmVlbi5jb252ZXJ0VG9CbG9iKGRhdGFVUkxPcHRpb25zKTsKICAgICAgY29uc3QgdHlwZSA9IGJsb2IudHlwZTsKICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBhd2FpdCBibG9iLmFycmF5QnVmZmVyKCk7CiAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7CiAgICAgIGlmICghbGFzdEJsb2JNYXAuaGFzKGlkKSAmJiBhd2FpdCB0cmFuc3BhcmVudEJhc2U2NCA9PT0gYmFzZTY0KSB7CiAgICAgICAgbGFzdEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICAgIHJldHVybiB3b3JrZXIucG9zdE1lc3NhZ2UoeyBpZCB9KTsKICAgICAgfQogICAgICBpZiAobGFzdEJsb2JNYXAuZ2V0KGlkKSA9PT0gYmFzZTY0KSByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQgfSk7CiAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7CiAgICAgICAgaWQsCiAgICAgICAgdHlwZSwKICAgICAgICBiYXNlNjQsCiAgICAgICAgd2lkdGgsCiAgICAgICAgaGVpZ2h0CiAgICAgIH0pOwogICAgICBsYXN0QmxvYk1hcC5zZXQoaWQsIGJhc2U2NCk7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IGUuZGF0YS5pZCB9KTsKICAgIH0KICB9Owp9KSgpOwovLyMgc291cmNlTWFwcGluZ1VSTD1pbWFnZS1iaXRtYXAtZGF0YS11cmwtd29ya2VyLUlKcEM3Z19iLmpzLm1hcAo=",Pp="undefined"!=typeof window&&window.Blob&&new Blob([(Dp=Rp,Uint8Array.from(atob(Dp),(e=>e.charCodeAt(0))))],{type:"text/javascript;charset=utf-8"});var Dp;function Np(e){let t;try{if(t=Pp&&(window.URL||window.webkitURL).createObjectURL(Pp),!t)throw"";const n=new Worker(t,{name:null==e?void 0:e.name});return n.addEventListener("error",(()=>{(window.URL||window.webkitURL).revokeObjectURL(t)})),n}catch(n){return new Worker("data:text/javascript;base64,"+Rp,{name:null==e?void 0:e.name})}finally{t&&(window.URL||window.webkitURL).revokeObjectURL(t)}}class jp{constructor(e){Fn(this,"pendingCanvasMutations",new Map),Fn(this,"rafStamps",{latestId:0,invokeId:null}),Fn(this,"mirror"),Fn(this,"mutationCb"),Fn(this,"resetObservers"),Fn(this,"frozen",!1),Fn(this,"locked",!1),Fn(this,"processMutation",((e,t)=>{!(this.rafStamps.invokeId&&this.rafStamps.latestId!==this.rafStamps.invokeId)&&this.rafStamps.invokeId||(this.rafStamps.invokeId=this.rafStamps.latestId),this.pendingCanvasMutations.has(e)||this.pendingCanvasMutations.set(e,[]),this.pendingCanvasMutations.get(e).push(t)}));const{sampling:t="all",win:n,blockClass:o,blockSelector:r,recordCanvas:i,dataURLOptions:a}=e;this.mutationCb=e.mutationCb,this.mirror=e.mirror,i&&"all"===t&&this.initCanvasMutationObserver(n,o,r),i&&"number"==typeof t&&this.initCanvasFPSObserver(t,n,o,r,{dataURLOptions:a})}reset(){this.pendingCanvasMutations.clear(),this.resetObservers&&this.resetObservers()}freeze(){this.frozen=!0}unfreeze(){this.frozen=!1}lock(){this.locked=!0}unlock(){this.locked=!1}initCanvasFPSObserver(e,t,n,o,r){const i=Ap(t,n,o,!0),a=new Map,s=new Np;s.onmessage=e=>{const{id:t}=e.data;if(a.set(t,!1),!("base64"in e.data))return;const{base64:n,type:o,width:r,height:i}=e.data;this.mutationCb({id:t,type:Xd["2D"],commands:[{property:"clearRect",args:[0,0,r,i]},{property:"drawImage",args:[{rr_type:"ImageBitmap",args:[{rr_type:"Blob",data:[{rr_type:"ArrayBuffer",base64:n}],type:o}]},0,0]}]})};const l=1e3/e;let c,u=0;const d=e=>{u&&e-u{const e=[];return t.document.querySelectorAll("canvas").forEach((t=>{Rd(t,n,o,!0)||e.push(t)})),e})().forEach((async e=>{var t;const n=this.mirror.getId(e);if(a.get(n))return;if(0===e.width||0===e.height)return;if(a.set(n,!0),["webgl","webgl2"].includes(e.__context)){const n=e.getContext(e.__context);!1===(null==(t=null==n?void 0:n.getContextAttributes())?void 0:t.preserveDrawingBuffer)&&n.clear(n.COLOR_BUFFER_BIT)}const o=await createImageBitmap(e);s.postMessage({id:n,bitmap:o,width:e.width,height:e.height,dataURLOptions:r.dataURLOptions},[o])}))),c=requestAnimationFrame(d)};c=requestAnimationFrame(d),this.resetObservers=()=>{i(),cancelAnimationFrame(c)}}initCanvasMutationObserver(e,t,n){this.startRAFTimestamping(),this.startPendingCanvasMutationFlusher();const o=Ap(e,t,n,!1),r=function(e,t,n,o){const r=[],i=Object.getOwnPropertyNames(t.CanvasRenderingContext2D.prototype);for(const a of i)try{if("function"!=typeof t.CanvasRenderingContext2D.prototype[a])continue;const i=Ed(t.CanvasRenderingContext2D.prototype,a,(function(r){return function(...i){return Rd(this.canvas,n,o,!0)||setTimeout((()=>{const n=Op(i,t,this);e(this.canvas,{type:Xd["2D"],property:a,args:n})}),0),r.apply(this,i)}}));r.push(i)}catch{const n=Id(t.CanvasRenderingContext2D.prototype,a,{set(t){e(this.canvas,{type:Xd["2D"],property:a,args:[t],setter:!0})}});r.push(n)}return()=>{r.forEach((e=>e()))}}(this.processMutation.bind(this),e,t,n),i=function(e,t,n,o){const r=[];return r.push(...Mp(t.WebGLRenderingContext.prototype,Xd.WebGL,e,n,o,t)),void 0!==t.WebGL2RenderingContext&&r.push(...Mp(t.WebGL2RenderingContext.prototype,Xd.WebGL2,e,n,o,t)),()=>{r.forEach((e=>e()))}}(this.processMutation.bind(this),e,t,n);this.resetObservers=()=>{o(),r(),i()}}startPendingCanvasMutationFlusher(){requestAnimationFrame((()=>this.flushPendingCanvasMutations()))}startRAFTimestamping(){const e=t=>{this.rafStamps.latestId=t,requestAnimationFrame(e)};requestAnimationFrame(e)}flushPendingCanvasMutations(){this.pendingCanvasMutations.forEach(((e,t)=>{const n=this.mirror.getId(t);this.flushPendingCanvasMutationFor(t,n)})),requestAnimationFrame((()=>this.flushPendingCanvasMutations()))}flushPendingCanvasMutationFor(e,t){if(this.frozen||this.locked)return;const n=this.pendingCanvasMutations.get(e);if(!n||-1===t)return;const o=n.map((e=>{const{type:t,...n}=e;return n})),{type:r}=n[0];this.mutationCb({id:t,type:r,commands:o}),this.pendingCanvasMutations.delete(e)}}class Fp{constructor(e){Fn(this,"trackedLinkElements",new WeakSet),Fn(this,"mutationCb"),Fn(this,"adoptedStyleSheetCb"),Fn(this,"styleMirror",new _d),this.mutationCb=e.mutationCb,this.adoptedStyleSheetCb=e.adoptedStyleSheetCb}attachLinkElement(e,t){"_cssText"in t.attributes&&this.mutationCb({adds:[],removes:[],texts:[],attributes:[{id:t.id,attributes:t.attributes}]}),this.trackLinkElement(e)}trackLinkElement(e){this.trackedLinkElements.has(e)||(this.trackedLinkElements.add(e),this.trackStylesheetInLinkElement(e))}adoptStyleSheets(e,t){if(0===e.length)return;const n={id:t,styleIds:[]},o=[];for(const r of e){let e;this.styleMirror.has(r)?e=this.styleMirror.getId(r):(e=this.styleMirror.add(r),o.push({styleId:e,rules:Array.from(r.rules||CSSRule,((e,t)=>({rule:to(e,r.href),index:t})))})),n.styleIds.push(e)}o.length>0&&(n.styles=o),this.adoptedStyleSheetCb(n)}reset(){this.styleMirror.reset(),this.trackedLinkElements=new WeakSet}trackStylesheetInLinkElement(e){}}class Bp{constructor(){Fn(this,"nodeMap",new WeakMap),Fn(this,"active",!1)}inOtherBuffer(e,t){const n=this.nodeMap.get(e);return n&&Array.from(n).some((e=>e!==t))}add(e,t){this.active||(this.active=!0,requestAnimationFrame((()=>{this.nodeMap=new WeakMap,this.active=!1}))),this.nodeMap.set(e,(this.nodeMap.get(e)||new Set).add(t))}destroy(){}}let _p,Up,Hp,zp=!1;try{if(2!==Array.from([1],(e=>2*e))[0]){const e=document.createElement("iframe");document.body.appendChild(e),Array.from=(null==(Nn=e.contentWindow)?void 0:Nn.Array.from)||Array.from,document.body.removeChild(e)}}catch(Gm){console.debug("Unable to override Array.from",Gm)}const qp=new no;function Wp(e={}){const{emit:t,checkoutEveryNms:n,checkoutEveryNth:o,blockClass:r="rr-block",blockSelector:i=null,ignoreClass:a="rr-ignore",ignoreSelector:s=null,maskTextClass:l="rr-mask",maskTextSelector:c=null,inlineStylesheet:u=!0,maskAllInputs:d,maskInputOptions:p,slimDOMOptions:h,maskInputFn:f,maskTextFn:m,hooks:g,packFn:v,sampling:y={},dataURLOptions:b={},mousemoveWait:w,recordDOM:k=!0,recordCanvas:x=!1,recordCrossOriginIframes:S=!1,recordAfter:C=("DOMContentLoaded"===e.recordAfter?e.recordAfter:"load"),userTriggeredOnInput:I=!1,collectFonts:E=!1,inlineImages:T=!1,plugins:O,keepIframeSrcFn:L=(()=>!1),ignoreCSSAttributes:A=new Set([]),errorHandler:M}=e;rp=M;const R=!S||window.parent===window;let P=!1;if(!R)try{window.parent.document&&(P=!1)}catch(G){P=!0}if(R&&!t)throw new Error("emit function is required");if(!R&&!P)return()=>{};void 0!==w&&void 0===y.mousemove&&(y.mousemove=w),qp.reset();const D=!0===d?{color:!0,date:!0,"datetime-local":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0,password:!0}:void 0!==p?p:{password:!0},N=!0===h||"all"===h?{script:!0,comment:!0,headFavicon:!0,headWhitespace:!0,headMetaSocial:!0,headMetaRobots:!0,headMetaHttpEquiv:!0,headMetaVerification:!0,headMetaAuthorship:"all"===h,headMetaDescKeywords:"all"===h,headTitleMutations:"all"===h}:h||{};let j;!function(e=window){"NodeList"in e&&!e.NodeList.prototype.forEach&&(e.NodeList.prototype.forEach=Array.prototype.forEach),"DOMTokenList"in e&&!e.DOMTokenList.prototype.forEach&&(e.DOMTokenList.prototype.forEach=Array.prototype.forEach)}();let F=0;const B=e=>{for(const t of O||[])t.eventProcessor&&(e=t.eventProcessor(e));return v&&!P&&(e=v(e)),e};_p=(e,r)=>{var i;const a=e;if(a.timestamp=Td(),!(null==(i=ap[0])?void 0:i.isFrozen())||a.type===qd.FullSnapshot||a.type===qd.IncrementalSnapshot&&a.data.source===Wd.Mutation||ap.forEach((e=>e.unfreeze())),R)null==t||t(B(a),r);else if(P){const e={type:"rrweb",event:B(a),origin:window.location.origin,isCheckout:r};window.parent.postMessage(e,"*")}if(a.type===qd.FullSnapshot)j=a,F=0;else if(a.type===qd.IncrementalSnapshot){if(a.data.source===Wd.Mutation&&a.data.isAttachIframe)return;F++;const e=o&&F>=o,t=n&&a.timestamp-j.timestamp>n;(e||t)&&Up(!0)}};const _=e=>{_p({type:qd.IncrementalSnapshot,data:{source:Wd.Mutation,...e}})},U=e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.Scroll,...e}}),H=e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.CanvasMutation,...e}}),z=new Fp({mutationCb:_,adoptedStyleSheetCb:e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.AdoptedStyleSheet,...e}})}),q=new wp({mirror:qp,mutationCb:_,stylesheetManager:z,recordCrossOriginIframes:S,wrappedEmit:_p});for(const Y of O||[])Y.getMirror&&Y.getMirror({nodeMirror:qp,crossOriginIframeMirror:q.crossOriginIframeMirror,crossOriginIframeStyleMirror:q.crossOriginIframeStyleMirror});const W=new Bp;Hp=new jp({recordCanvas:x,mutationCb:H,win:window,blockClass:r,blockSelector:i,mirror:qp,sampling:y.canvas,dataURLOptions:b});const V=new kp({mutationCb:_,scrollCb:U,bypassOptions:{blockClass:r,blockSelector:i,maskTextClass:l,maskTextSelector:c,inlineStylesheet:u,maskInputOptions:D,dataURLOptions:b,maskTextFn:m,maskInputFn:f,recordCanvas:x,inlineImages:T,sampling:y,slimDOMOptions:N,iframeManager:q,stylesheetManager:z,canvasManager:Hp,keepIframeSrcFn:L,processedNodeManager:W},mirror:qp});Up=(e=!1)=>{if(!k)return;_p({type:qd.Meta,data:{href:window.location.href,width:Ad(),height:Ld()}},e),z.reset(),V.init(),ap.forEach((e=>e.lock()));const t=function(e,t){const{mirror:n=new no,blockClass:o="rr-block",blockSelector:r=null,maskTextClass:i="rr-mask",maskTextSelector:a=null,inlineStylesheet:s=!0,inlineImages:l=!1,recordCanvas:c=!1,maskAllInputs:u=!1,maskTextFn:d,maskInputFn:p,slimDOM:h=!1,dataURLOptions:f,preserveWhiteSpace:m,onSerialize:g,onIframeLoad:v,iframeLoadTimeout:y,onStylesheetLoad:b,stylesheetLoadTimeout:w,keepIframeSrcFn:k=(()=>!1)}=t||{};return Do(e,{doc:e,mirror:n,blockClass:o,blockSelector:r,maskTextClass:i,maskTextSelector:a,skipChild:!1,inlineStylesheet:s,maskInputOptions:!0===u?{color:!0,date:!0,"datetime-local":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0,password:!0}:!1===u?{password:!0}:u,maskTextFn:d,maskInputFn:p,slimDOMOptions:!0===h||"all"===h?{script:!0,comment:!0,headFavicon:!0,headWhitespace:!0,headMetaDescKeywords:"all"===h,headMetaSocial:!0,headMetaRobots:!0,headMetaHttpEquiv:!0,headMetaAuthorship:!0,headMetaVerification:!0}:!1===h?{}:h,dataURLOptions:f,inlineImages:l,recordCanvas:c,preserveWhiteSpace:m,onSerialize:g,onIframeLoad:v,iframeLoadTimeout:y,onStylesheetLoad:b,stylesheetLoadTimeout:w,keepIframeSrcFn:k,newlyAddedElement:!1})}(document,{mirror:qp,blockClass:r,blockSelector:i,maskTextClass:l,maskTextSelector:c,inlineStylesheet:u,maskAllInputs:D,maskTextFn:m,maskInputFn:f,slimDOM:N,dataURLOptions:b,recordCanvas:x,inlineImages:T,onSerialize:e=>{jd(e,qp)&&q.addIframe(e),Fd(e,qp)&&z.trackLinkElement(e),Bd(e)&&V.addShadowRoot(wd.shadowRoot(e),document)},onIframeLoad:(e,t)=>{q.attachIframe(e,t),V.observeAttachShadow(e)},onStylesheetLoad:(e,t)=>{z.attachLinkElement(e,t)},keepIframeSrcFn:L});if(!t)return console.warn("Failed to snapshot the document");_p({type:qd.FullSnapshot,data:{node:t,initialOffset:Od(window)}},e),ap.forEach((e=>e.unlock())),document.adoptedStyleSheets&&document.adoptedStyleSheets.length>0&&z.adoptStyleSheets(document.adoptedStyleSheets,qp.getId(document))};try{const e=[],t=e=>{var t;return ip(gp)({mutationCb:_,mousemoveCb:(e,t)=>_p({type:qd.IncrementalSnapshot,data:{source:t,positions:e}}),mouseInteractionCb:e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.MouseInteraction,...e}}),scrollCb:U,viewportResizeCb:e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.ViewportResize,...e}}),inputCb:e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.Input,...e}}),mediaInteractionCb:e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.MediaInteraction,...e}}),styleSheetRuleCb:e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.StyleSheetRule,...e}}),styleDeclarationCb:e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.StyleDeclaration,...e}}),canvasMutationCb:H,fontCb:e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.Font,...e}}),selectionCb:e=>{_p({type:qd.IncrementalSnapshot,data:{source:Wd.Selection,...e}})},customElementCb:e=>{_p({type:qd.IncrementalSnapshot,data:{source:Wd.CustomElement,...e}})},blockClass:r,ignoreClass:a,ignoreSelector:s,maskTextClass:l,maskTextSelector:c,maskInputOptions:D,inlineStylesheet:u,sampling:y,recordDOM:k,recordCanvas:x,inlineImages:T,userTriggeredOnInput:I,collectFonts:E,doc:e,maskInputFn:f,maskTextFn:m,keepIframeSrcFn:L,blockSelector:i,slimDOMOptions:N,dataURLOptions:b,mirror:qp,iframeManager:q,stylesheetManager:z,shadowDomManager:V,processedNodeManager:W,canvasManager:Hp,ignoreCSSAttributes:A,plugins:(null==(t=null==O?void 0:O.filter((e=>e.observer)))?void 0:t.map((e=>({observer:e.observer,options:e.options,callback:t=>_p({type:qd.Plugin,data:{plugin:e.name,payload:t}})}))))||[]},g)};q.addLoadListener((n=>{try{e.push(t(n.contentDocument))}catch(o){console.warn(o)}}));const n=()=>{Up(),e.push(t(document)),zp=!0};return"interactive"===document.readyState||"complete"===document.readyState?n():(e.push(kd("DOMContentLoaded",(()=>{_p({type:qd.DomContentLoaded,data:{}}),"DOMContentLoaded"===C&&n()}))),e.push(kd("load",(()=>{_p({type:qd.Load,data:{}}),"load"===C&&n()}),window))),()=>{e.forEach((e=>e())),W.destroy(),zp=!1,rp=void 0}}catch(X){console.warn(X)}}var Vp,Gp;function Xp(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return Yp(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Yp(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0,r=function(){};return{s:r,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){s=!0,i=e},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw i}}}}function Yp(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n{if(!zp)throw new Error("please add custom event after start recording");_p({type:qd.Custom,data:{tag:e,payload:t}})},Wp.freezePage=()=>{ap.forEach((e=>e.freeze()))},Wp.takeFullSnapshot=e=>{if(!zp)throw new Error("please take full snapshot after start recording");Up(e)},Wp.mirror=qp,(Gp=Vp||(Vp={}))[Gp.NotStarted=0]="NotStarted",Gp[Gp.Running=1]="Running",Gp[Gp.Stopped=2]="Stopped";var th=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),Qp(this,"startDate",void 0),Qp(this,"events",[]),Qp(this,"bufferSize",0),Qp(this,"stopFunction",void 0),Qp(this,"customOptions",{})}var t,n,o;return t=e,o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],(n=[{key:"setOptions",value:function(e){this.customOptions=e}},{key:"start",value:function(){this.stop(),this.startDate=Date.now();var e=this.events;try{this.stopFunction=Wp(Zp(Zp(Zp({},{inlineStylesheet:!0,blockClass:"gl-block",ignoreClass:"gl-ignore",maskTextClass:"gl-mask",dataURLOptions:{quality:.7},recordCanvas:!1,sampling:{scroll:150,mouseInteraction:{MouseUp:!1,MouseDown:!1,Click:!0,ContextMenu:!0,DblClick:!0,Focus:!0,Blur:!0,TouchStart:!0,TouchEnd:!1}},collectFonts:!1,recordCrossOriginIframes:!1}),this.customOptions),{},{emit:function(t){var n=function(e){var t=JSON.stringify(e);if(t.length>4e6){var n,o=/data:([\w\/\-\.]+);(\w+),([^)"]*)/gim,r=Xp(t.matchAll(o));try{for(r.s();!(n=r.n()).done;){var i=n.value;t="image/"===i[1].toLocaleLowerCase().slice(0,6)?t.replace(i[0],"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAQSURBVHgBAQUA+v8ABRg5/wHSAVZN1mnaAAAAAElFTkSuQmCC"):t.replace(i[0],"")}}catch(Gm){r.e(Gm)}finally{r.f()}}return{event:JSON.parse(t),size:t.length}}(t).event;e.push(n)}}))}catch(t){console.error(t)}}},{key:"stop",value:function(){this.stopFunction&&this.stopFunction(),this.startDate=void 0,this.events=[],this.bufferSize=0}},{key:"getReplayData",value:function(){return{startDate:this.startDate,events:this.events,baseUrl:window.location.origin,width:window.innerWidth,height:window.innerHeight,isMobile:w(),type:"rrweb"}}}])&&$p(t.prototype,n),o&&$p(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function nh(e){return nh="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},nh(e)}function oh(e,t){for(var n=0;nthis.startPoint.x&&(r=this.startPoint.x),t.y>this.startPoint.y&&(i=this.startPoint.y),this.path.setAttributeNS(null,"x",r),this.path.setAttributeNS(null,"y",i),this.path.setAttributeNS(null,"width",n),this.path.setAttributeNS(null,"height",o)}}},{key:"mouseDownRect",value:function(e){this.path=document.createElementNS("http://www.w3.org/2000/svg","rect"),this.path.setAttribute("fill","none"),this.path.setAttribute("stroke",this.color),this.path.setAttribute("stroke-linecap","round"),this.path.setAttribute("stroke-width",this.strokeWidthRect),this.startPoint=this.getMousePosition(e),this.appendPathToSvg(this.path)}},{key:"mouseDownPen",value:function(e){var t=this.color+"AA",n=this.strokeWidth;"blur"===this.tool&&(t="#000000",n=40),this.path=document.createElementNS("http://www.w3.org/2000/svg","path"),this.path.setAttribute("fill","none"),this.path.setAttribute("stroke",t),this.path.setAttribute("stroke-linecap","round"),this.path.setAttribute("stroke-width",n),this.buffer=[];var o=this.getMousePosition(e);this.appendToBuffer(o),this.strPath="M"+o.x+" "+o.y,this.path.setAttribute("d",this.strPath),this.appendPathToSvg(this.path)}},{key:"setTool",value:function(e){this.tool=e}},{key:"setColor",value:function(e){this.color=e}},{key:"getMousePosition",value:function(e){return e.touches&&e.touches.length>0?{x:e.touches[0].clientX,y:e.touches[0].clientY}:{x:e.clientX,y:e.clientY}}},{key:"getAveragePoint",value:function(e){var t=this.buffer.length;if(t%2==1||t>=this.bufferSize){var n,o,r=0,i=0,a=0;for(o=e;othis.bufferSize;)this.buffer.shift()}},{key:"appendPathToSvg",value:function(e){this.svgElement.appendChild(e),this.pathBuffer.push(e),this.rerender()}},{key:"removeLastAddedPathFromSvg",value:function(){this.pathBuffer.length<=0||!this.svgElement||(this.svgElement.removeChild(this.pathBuffer[this.pathBuffer.length-1]),this.pathBuffer.pop(),this.rerender())}},{key:"fadeOutToolbar",value:function(){var e=document.querySelector(".bb-capture-toolbar");e&&(e.style.opacity=0,e.style.pointerEvents="none")}},{key:"fadeInToolbar",value:function(){var e=document.querySelector(".bb-capture-toolbar");e&&(e.style.opacity=1,e.style.pointerEvents="auto")}}],n&&oh(t.prototype,n),o&&oh(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function sh(e){return sh="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},sh(e)}function lh(e,t){for(var n=0;n\n \n
'.concat(p("dismiss"),"
\n
").concat(p("rect"),'
\n
\n
\n ').concat(p("drag"),"\n
\n ").concat("capture"===this.type?'
\n '.concat(p("recorderon"),"\n ").concat(p("recorderoff"),'\n \n
\n
\n ').concat(p("mic"),'\n \n
\n
2:00
\n
\n
\n ').concat(p("pointer"),"\n
"):"",'\n
\n ').concat(p("rect"),'\n
\n
\n ').concat(p("pen"),'\n
\n
\n ').concat(p("blur"),'\n
\n
\n
\n ').concat(kh.translateText("pickAColor"),'\n
\n
\n ').concat(p("undo"),'\n ').concat(kh.translateText("undo"),"\n
\n ").concat("capture"!==this.type?'
'.concat(kh.translateText("next"),"
"):"",'\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
').concat(kh.translateText("retry"),'
\n
').concat(kh.translateText("next"),"
\n
\n
\n
\n "),document.body.appendChild(e),e.setAttribute("dir",kh.getInstance().isRTLLayout?"rtl":"ltr")}},{key:"unregisterListeners",value:function(){this.escListener&&document.removeEventListener("keydown",this.escListener),this.pageLeaveListener&&window.removeEventListener("beforeunload",this.pageLeaveListener)}},{key:"registerListeners",value:function(){var e=this;this.escListener=function(t){var n=!1,o=!1;"key"in(t=t||window.event)&&(n="Escape"===t.key,o="Enter"===t.key),n&&e.dismiss(),"screenshot"===e.type&&o&&e.showNextStep()},document.addEventListener("keydown",this.escListener),this.pageLeaveListener=function(e){e.preventDefault(),e.returnValue=""},window.addEventListener("beforeunload",this.pageLeaveListener)}},{key:"show",value:function(e){this.callback=e,this.registerListeners(),this.hideWidgetUI(),this.createEditorUI(),this.setupMousePointer(),"screenshot"===this.type?(Wm.getInstance().setGlobalDataItem("snapshotPosition",{x:window.scrollX,y:window.scrollY}),dh.disableScroll()):this.setupScreenRecording(),this.screenDrawer=new ah(this.captureScreenDrawerRerender.bind(this)),this.setupColorPicker(),this.setupToolbar()}},{key:"setupColorPicker",value:function(){for(var t=this,n=document.querySelector(".bb-capture-toolbar-item-selectedcolor"),o=document.querySelectorAll(".bb-capture-toolbar-item-color"),r=document.querySelector(".bb-capture-toolbar-item-colorpicker"),i=function(){var i=o[a],s=i.getAttribute("data-color");i.style.backgroundColor=s,i.onclick=function(){i&&(t.screenDrawer.setColor(s),r&&(r.style.display="none"),n.style.backgroundColor=i.style.backgroundColor,e.setPenColor(s))}},a=0;a0?o.classList.remove(e):o.classList.add(e))}}},{key:"captureRenderer",value:function(){if(this.screenRecorder){this.screenRecorder.file&&Wm.getInstance().setGlobalDataItem("screenRecordingData",this.screenRecorder.file);var e="bb-capture-editor-item-inactive",t=document.querySelector(".bb-capture-toolbar-item-timer"),n=document.querySelectorAll(".bb-capture-toolbar-item"),o=document.querySelector(".bb-tooltip-screen-recording"),r=document.querySelector(".bb-tooltip-audio-recording"),i=document.querySelector(".bb-capture-editor"),a="bb-capture-editor-recording",s="bb-capture-editor-notrecording";this.screenRecorder.isRecording?(i.classList.add(a),i.classList.remove(s)):(i.classList.add(s),i.classList.remove(a));var l=document.querySelector(".bb-capture-toolbar");document.querySelector(".bb-capture-preview").style.display=this.screenRecorder.file?"flex":"none",l.style.display=this.screenRecorder.file?"none":"flex";for(var c=0;c0){var t=e.filter((function(e){return new Date(e.createdAt)>new Date(Date.now()-36e5)}));t.length>2?this.notifications=t.splice(0,t.length-2):this.notifications=t,this.renderNotifications()}}catch(n){}}},{key:"setNotificationCount",value:function(e){this.unreadCount=e,this.updateTabBarNotificationCount(),a.getInstance().updateNotificationBadge(this.unreadCount)}},{key:"showNotification",value:function(e){this.notificationContainer&&e&&e.data&&(this.notifications.find((function(t){return e.outbound===t.outbound}))||(this.notifications.push(e),e.sound&&tf.ping()),this.notifications.length>2&&this.notifications.shift(),I(this.unreadNotificationsKey,this.notifications),this.renderNotifications())}},{key:"renderNotifications",value:function(){var e=this;if(this.notificationContainer){this.clearAllNotifications(!0);var t=document.createElement("div");t.onclick=function(){e.clearAllNotifications(),e.currentNewsIndex=0},t.className="gleap-notification-close",t.innerHTML=p("dismiss"),this.notificationContainer.appendChild(t);var n=this.notifications.filter((function(e){return e.data.news})).sort((function(e,t){return new Date(e.createdAt)-new Date(t.createdAt)})),o=this.notifications.filter((function(e){return!e.data.news}));if(n.length>0){var r=this.currentNewsIndex1){var m=document.createElement("div");m.className="gleap-news-pagination";var g=document.createElement("span");g.className="gleap-news-page-indicator",g.innerText="".concat(r+1," / ").concat(n.length),m.appendChild(g);var v=document.createElement("button");v.className="gleap-news-next-button",r\n
\n
\n '.concat(t.data.text,'\n
\n
\n
\n
\n
\n \n \n \n ').concat(t.data.nextStepTitle,"\n
\n
\n ")}else r.className="gleap-notification-item",r.innerHTML="\n ".concat(t.data.sender&&t.data.sender.profileImageUrl&&''),'\n
\n ').concat(t.data.sender?'
\n '.concat(t.data.sender.name,"\n
"):"",'\n
').concat(n,"
\n
");e.notificationContainer.appendChild(r)},b=0;b0||o.length>0||this.clearAllNotifications(!0)}}},{key:"openNews",value:function(e){e.data.news?Wm.openNewsArticle(e.data.news.id,!0):Wm.open()}},{key:"renderDescription",value:function(e){var t=e.data,n=t.previewText,o=t.sender;return n&&n.length>0?n:o?'\n
\n '.concat(o.profileImageUrl?'').concat(o.name,''):"","\n ").concat(o.name,"\n
\n "):""}},{key:"clearAllNotifications",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(this.notificationContainer)for(e||(this.notifications=[],this.currentNewsIndex=0,I(this.unreadNotificationsKey,this.notifications));this.notificationContainer.firstChild;)this.notificationContainer.removeChild(this.notificationContainer.firstChild)}},{key:"updateContainerStyle",value:function(){if(this.notificationContainer){var e=dt.getInstance().getFlowConfig(),t="gleap-notification-container--left",n="gleap-notification-container--no-button";this.notificationContainer.classList.remove(t),this.notificationContainer.classList.remove(n),e.feedbackButtonPosition!==a.FEEDBACK_BUTTON_CLASSIC_LEFT&&e.feedbackButtonPosition!==a.FEEDBACK_BUTTON_BOTTOM_LEFT||this.notificationContainer.classList.add(t),null===a.getInstance().buttonHidden?e.feedbackButtonPosition===a.FEEDBACK_BUTTON_NONE&&this.notificationContainer.classList.add(n):a.getInstance().buttonHidden&&this.notificationContainer.classList.add(n),this.notificationContainer.setAttribute("dir",kh.getInstance().isRTLLayout?"rtl":"ltr")}}}],o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],n&&Ph(t.prototype,n),o&&Ph(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Fh(e){return Fh="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Fh(e)}function Bh(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function _h(e){for(var t=1;t'),document.body.appendChild(t),this.bannerContainer=t}},{key:"sendMessage",value:function(e){try{var t=document.querySelector(".gleap-b-frame");t&&t.contentWindow&&t.contentWindow.postMessage(JSON.stringify(_h(_h({},e),{},{type:"banner"})),"*")}catch(n){}}},{key:"showBanner",value:function(e){this.injectBannerUI(e)}}])&&Uh(t.prototype,n),o&&Uh(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Wh(e){return Wh="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Wh(e)}function Vh(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Gh(e){for(var t=1;t\n
\n \n
\n '),document.body.appendChild(n),this.modalContainer=n,this.modalBackdropClickListener=this.modalContainer.querySelector(".gleap-modal-backdrop").addEventListener("click",(function(){var e,n;(null===(e=null===(n=t.modalData)||void 0===n?void 0:n.showCloseButton)||void 0===e||e)&&t.hideModal()})),document.body.classList.add("gleap-modal-open")}},{key:"_postMessage",value:function(e){try{var t=this.modalContainer.querySelector(".gleap-modal-frame");null!=t&&t.contentWindow&&t.contentWindow.postMessage(JSON.stringify(Gh(Gh({},e),{},{type:"modal"})),this.modalUrl)}catch(Gm){}}},{key:"showModal",value:function(e){e&&e.config&&this._injectModalUI(e.config)}},{key:"hideModal",value:function(){this.modalContainer&&(this.modalBackdropClickListener&&this.modalContainer.querySelector(".gleap-modal-backdrop").removeEventListener("click",this.modalBackdropClickListener),document.body.removeChild(this.modalContainer),this.modalContainer=null,document.body.classList.remove("gleap-modal-open"))}}])&&Xh(t.prototype,n),o&&Xh(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Zh(e){return Zh="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Zh(e)}function $h(e,t){for(var n=0;n=a-i;++s)n[i]=t[s],uf(e,t,n,s+1,r,i+1,a);else e.push(n.slice(0,i).join(""))}function df(e){return function(e){if(Array.isArray(e))return pf(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return pf(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return pf(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function pf(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){s=!0,i=e},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw i}}}}function bf(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n1&&void 0!==arguments[1]?arguments[1]:["id","class","length"];return df(e.attributes).reduce((function(e,n){return t.indexOf(n.nodeName)>-1||e.push("[".concat(n.nodeName,'="').concat(n.value,'"]')),e}),[])}(e,n)},Class:cf,ID:lf};return t.reduce((function(t,n){return t[n]=o[n](e),t}),{})}function kf(e,t){try{var n=e.parentNode.querySelectorAll(t);return 1===n.length&&n[0]===e}catch(o){return!1}}function xf(e,t){return t.find(kf.bind(null,e))}function Sf(e,t,n){var o=function(e,t){for(var n=[],o=e.length,r=[],i=1;i<=t;++i)uf(n,e,r,0,o-1,0,i);return n}(t,3),r=xf(e,o);return Boolean(r)||Boolean(n)&&(r=xf(e,o=o.map((function(e){return n+e}))),Boolean(r))?r:null}function Cf(e,t,n,o){var r,i=wf(e,t,n);o&&o instanceof RegExp&&(i.ID=o.test(i.ID)?null:i.ID,i.Class=i.Class.filter((function(e){return!o.test(e)})));var a,s=yf(t);try{for(s.s();!(a=s.n()).done;){var l=a.value,c=i.ID,u=i.Tag,d=i.Class,p=i.Attributes,h=i.NthChild;switch(l){case"ID":if(Boolean(c)&&kf(e,c))return c;break;case"Tag":if(Boolean(u)&&kf(e,u))return u;break;case"Class":if(Boolean(d)&&d.length&&(r=Sf(e,d,u)))return r;break;case"Attributes":if(Boolean(p)&&p.length&&(r=Sf(e,p,u)))return r;break;case"NthChild":if(Boolean(h))return h}}}catch(Gm){s.e(Gm)}finally{s.f()}return"*"}function If(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=n.selectorTypes,r=void 0===o?["ID","Class","Tag","NthChild"]:o,i=n.attributesToIgnore,a=void 0===i?["id","class","length"]:i,s=n.excludeRegex,l=void 0===s?null:s,c=[],u=function(e){for(var t=[],n=e;ff(n);)t.push(n),n=n.parentNode;return t}(e),d=yf(u);try{for(d.s();!(t=d.n()).done;){var p=Cf(t.value,r,a,l);Boolean(p)&&c.push(p)}}catch(Gm){d.e(Gm)}finally{d.f()}for(var h=[],f=0,m=c;f ");if(vf(e,v))return v}return null}function Ef(e){return Ef="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ef(e)}function Tf(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Of(e,t){for(var n=0;n0&&void 0!==arguments[0]&&arguments[0])||o(t.gleapCollapseUI,e)&&o(t.gleapFrameContainer,n))&&(t.gleapCollapseUI&&t.gleapCollapseUI.classList.toggle(e),t.gleapFrameContainer&&t.gleapFrameContainer.classList.toggle(n))})),Wf(this,"injectCollapseUI",(function(){if(!t.injectedCollapseUI){t.injectedCollapseUI=!0;var e=document.createElement("div");e.className="gleap-admin-collapse-ui",e.innerHTML='
\n '.concat(p("arrowdown"),"\n
"),document.body.appendChild(e),t.gleapCollapseUI=e,e.addEventListener("click",(function(e){e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t.toggleCollapseUI()}))}})),Wf(this,"injectFrame",(function(){var e;if(!t.injectedFrame){t.injectedFrame=!0;var n=document.createElement("div");n.className="gleap-admin-frame-container",n.innerHTML=''),document.body.appendChild(n),t.gleapFrameContainer=n,t.gleapFrame=document.querySelector(".gleap-admin-frame")}}))}var t,n,o;return t=e,o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],(n=[{key:"logCurrentPage",value:function(){var e=window.location.href;e&&e!==this.lastUrl&&(this.lastUrl=e,this.sendMessageToTourBuilder({name:"page-changed",data:{page:e}}))}},{key:"startPageListener",value:function(){var e=this;setInterval((function(){e.logCurrentPage()}),1e3)}},{key:"initAdminHelper",value:function(){var e=this;wm.getInstance().disable(),e.adminHelper=new _f;try{e.adminHelper.onElementPicked=function(t){e.toggleCollapseUI(!0),e.sendMessageToTourBuilder({name:"element-picked",data:{selector:t}})}}catch(t){console.log(t)}e.injectFrame(),e.injectCollapseUI(),e.setFrameHeight("loading")}},{key:"setFrameHeight",value:function(e){if(this.gleapFrameContainer){var t="";t="picker"===e||"navigate"===e?"65px":"editor"===e?"100vh":"0px",this.gleapFrameContainer.style.height=t}}},{key:"start",value:function(){var e=this;if("undefined"!=typeof window&&!window.gleapAdminDisabled){var t=this;window.addEventListener("message",(function(n){if("https://app.gleap.io"===n.origin)try{var o=JSON.parse(n.data);if("admin"===o.type&&("load"===o.name&&(t.configData=o.data,t.initAdminHelper()),"smartlink-search-result"===o.name&&e.sendMessageToTourBuilder({name:"smartlink-search-result",data:o.data}),"translate-complete"===o.name&&e.sendMessageToTourBuilder({name:"translate-complete",data:o.data})),"tourbuilder"===o.type){var r;if("loaddata"===o.name&&e.sendMessageToTourBuilder({name:"data",data:zf(zf({},t.configData),{},{currentPage:window.location.href})}),"highlight-element"===o.name&&(document.querySelectorAll(".gleap-admin-highlight").forEach((function(e){e.classList.remove("gleap-admin-highlight")})),null!=o&&null!==(r=o.data)&&void 0!==r&&r.selector)){var i,a=document.querySelector(null==o||null===(i=o.data)||void 0===i?void 0:i.selector);a&&a.classList.add("gleap-admin-highlight")}if("smartlink-search"===o.name&&e.sendMessage({name:"smartlink-search",data:o.data}),"product-tour-started"===o.name&&e.sendMessage({name:"product-tour-started",data:o.data}),"translate"===o.name&&e.sendMessage({name:"translate",data:o.data}),"save"===o.name&&e.sendMessage({name:"save",data:o.data}),"update-steps"===o.name&&e.sendMessage({name:"update-steps",data:o.data}),"click"===o.name)try{document.querySelector(o.data.selector).click()}catch(s){console.log(s)}"status-changed"===o.name&&(t.status=o.data,e.setFrameHeight(t.status),t.adminHelper.stopPicker(),"picker"===t.status&&t.adminHelper.startPicker())}}catch(l){}})),this.sendMessage({name:"init"}),this.startPageListener()}}},{key:"sendMessage",value:function(e){try{window&&window.opener&&window.opener.postMessage(JSON.stringify(zf(zf({},e),{},{type:"admin"})),"*")}catch(t){}}},{key:"sendMessageToTourBuilder",value:function(e){try{this.gleapFrame&&this.gleapFrame.contentWindow&&this.gleapFrame.contentWindow.postMessage(JSON.stringify(zf(zf({},e),{},{type:"tourbuilder"})),"*")}catch(t){}}}])&&qf(t.prototype,n),o&&qf(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Xf(e){return Xf="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Xf(e)}function Yf(e){return function(e){if(Array.isArray(e))return Jf(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return Jf(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Jf(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Jf(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n0&&void 0!==arguments[0]?arguments[0]:{})}function n(t){return t?e[t]:e}function o(e,t,n,o){return(e/=o/2)<1?n/2*e*e+t:-n/2*(--e*(e-2)-1)+t}function r(e){var t='a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type="text"]:not([disabled]), input[type="radio"]:not([disabled]), input[type="checkbox"]:not([disabled]), select:not([disabled])';return e.flatMap((function(e){var n=e.matches(t),o=Array.from(e.querySelectorAll(t));return[].concat(Yf(n?[e]:[]),o)})).filter((function(e){return"none"!==getComputedStyle(e).pointerEvents&&function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)}(e)}))}function i(e){if(e&&!function(e){var t=e.getBoundingClientRect();return t.top>=0&&t.left>=0&&t.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&t.right<=(window.innerWidth||document.documentElement.clientWidth)}(e)){var t=n("smoothScroll");e.scrollIntoView({behavior:!t||a(e)?"auto":"smooth",inline:"center",block:"center"})}}function a(e){if(e&&e.parentElement){var t=e.parentElement;return t.scrollHeight>t.clientHeight}}var s={};function l(e,t){s[e]=t}function c(e){return e?s[e]:s}function u(){s={}}var d={};function p(e,t){d[e]=t}function h(e){var t;null==(t=d[e])||t.call(d)}function f(e){if(e){var t=e.getBoundingClientRect(),n={x:t.x,y:t.y,width:t.width,height:t.height};l("__activeStagePosition",n),g(n)}}function m(e){var t=function(e){var t=window.innerWidth,o=window.innerHeight,r=document.createElementNS("http://www.w3.org/2000/svg","svg");r.classList.add("gleap-tour-overlay","gleap-tour-overlay-animated"),r.setAttribute("viewBox","0 0 ".concat(t," ").concat(o)),r.setAttribute("xmlSpace","preserve"),r.setAttribute("xmlnsXlink","http://www.w3.org/1999/xlink"),r.setAttribute("version","1.1"),r.setAttribute("preserveAspectRatio","xMinYMin slice"),r.style.fillRule="evenodd",r.style.clipRule="evenodd",r.style.strokeLinejoin="round",r.style.strokeMiterlimit="2",r.style.zIndex="10000",r.style.position="fixed",r.style.top="0",r.style.left="0",r.style.width="100%",r.style.height="100%";var i=document.createElementNS("http://www.w3.org/2000/svg","path");return i.setAttribute("d",v(e)),i.style.fill=n("overlayColor")||"rgb(0,0,0)",i.style.opacity="".concat(n("overlayOpacity")),i.style.pointerEvents="auto",i.style.cursor="auto",r.appendChild(i),r}(e);document.body.appendChild(t),S(t,(function(e){"path"===e.target.tagName&&h("overlayClick")})),l("__overlaySvg",t)}function g(e){var t=c("__overlaySvg");if(t){var n=t.firstElementChild;if("path"!==(null==n?void 0:n.tagName))throw new Error("no path element found in stage svg");n.setAttribute("d",v(e))}else m(e)}function v(e){var t=window.innerWidth,o=window.innerHeight,r=n("stagePadding")||0,i=n("stageRadius")||0,a=e.width+2*r,s=e.height+2*r,l=Math.min(i,a/2,s/2),c=Math.floor(Math.max(l,0)),u=e.x-r+c,d=e.y-r,p=a-2*c,h=s-2*c;return"M".concat(t,",0L0,0L0,").concat(o,"L").concat(t,",").concat(o,"L").concat(t,",0Z\n M").concat(u,",").concat(d," h").concat(p," a").concat(c,",").concat(c," 0 0 1 ").concat(c,",").concat(c," v").concat(h," a").concat(c,",").concat(c," 0 0 1 -").concat(c,",").concat(c," h-").concat(p," a").concat(c,",").concat(c," 0 0 1 -").concat(c,",-").concat(c," v-").concat(h," a").concat(c,",").concat(c," 0 0 1 ").concat(c,",-").concat(c," z")}function y(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:5e3,r=e.element,a=r;if("string"==typeof a)try{a=document.querySelector(r)}catch(u){var s=r.replace(/(#[^#\s]+)/g,(function(e){return e.replace(/:/g,"\\:")}));a=document.querySelector(s)}if(r&&!a&&t>=0)setTimeout((function(){C(),y(e,t-100)}),100);else{if(!a&&("INPUT"===e.mode||"CLICK"===e.mode))return n("onElementNotFound")(e);a||(a=function(){var e=document.getElementById("gleap-tour-dummy-element");if(e)return e;var t=document.createElement("div");return t.id="gleap-tour-dummy-element",t.style.width="0",t.style.height="0",t.style.pointerEvents="none",t.style.opacity="0",t.style.position="fixed",t.style.top="50%",t.style.left="50%",document.body.appendChild(t),t}()),function(e,t){var r,a,s=400,u=Date.now(),d=c("__activeStep"),p=c("__activeElement")||e,h=!p||p===e,m="gleap-tour-dummy-element"===e.id,v="gleap-tour-dummy-element"===p.id,y=n("animate"),b=t.onHighlightStarted||n("onHighlightStarted"),w=(null==t?void 0:t.onHighlighted)||n("onHighlighted"),k=(null==d?void 0:d.onDeselected)||n("onDeselected"),x=n(),S=c();!h&&k&&k(v?void 0:p,d,{config:x,state:S});b&&b(m?void 0:e,t,{config:x,state:S});var E=!h&&y,T=!1;C(),l("previousStep",d),l("previousElement",p),l("activeStep",t),l("activeElement",e);var O=function r(){if(c("__transitionCallback")===r){var i=Date.now()-u,a=s-i<=s/2;t.popover&&a&&!T&&E&&(I(e,t),T=!0),n("animate")&&i0&&P[0].focus()}function E(){var e=c("popover");if(null==e?void 0:e.wrapper){var t=e.wrapper.getBoundingClientRect(),o=n("stagePadding")||0,r=n("popoverOffset")||0;return{width:t.width+o+r,height:t.height+o+r,realWidth:t.width,realHeight:t.height}}}function T(e,t){var n=t.elementDimensions,o=t.popoverDimensions,r=t.popoverPadding,i=t.popoverArrowDimensions;return"start"===e?Math.max(Math.min(n.top-r,window.innerHeight-o.realHeight-i.width),i.width):"end"===e?Math.max(Math.min(n.top-(null==o?void 0:o.realHeight)+n.height+r,window.innerHeight-(null==o?void 0:o.realHeight)-i.width),i.width):"center"===e?Math.max(Math.min(n.top+n.height/2-(null==o?void 0:o.realHeight)/2,window.innerHeight-(null==o?void 0:o.realHeight)-i.width),i.width):0}function O(e,t){var n=t.elementDimensions,o=t.popoverDimensions,r=t.popoverPadding,i=t.popoverArrowDimensions;return"start"===e?Math.max(Math.min(n.left-r,window.innerWidth-o.realWidth-i.width),i.width):"end"===e?Math.max(Math.min(n.left-(null==o?void 0:o.realWidth)+n.width+r,window.innerWidth-(null==o?void 0:o.realWidth)-i.width),i.width):"center"===e?Math.max(Math.min(n.left+n.width/2-(null==o?void 0:o.realWidth)/2,window.innerWidth-(null==o?void 0:o.realWidth)-i.width),i.width):0}function L(e,t){var o=c("popover");if(o){var r=(null==t?void 0:t.popover)||{},i=r.align,a=void 0===i?"start":i,s=r.side,l=void 0===s?"left":s,u=a,d="gleap-tour-dummy-element"===e.id?"over":l,p=n("stagePadding")||0,h=E(),f=o.arrow.getBoundingClientRect(),m=e.getBoundingClientRect(),g=m.top-h.height,v=g>=0,y=window.innerHeight-(m.bottom+h.height),b=y>=0,w=m.left-h.width,k=w>=0,x=window.innerWidth-(m.right+h.width),S=x>=0,C=!(v||b||k||S),I=d;if("top"===d&&v?S=k=b=!1:"bottom"===d&&b?S=k=v=!1:"left"===d&&k?S=v=b=!1:"right"===d&&S&&(k=v=b=!1),"over"===d){var L=window.innerWidth/2-h.realWidth/2,A=window.innerHeight/2-h.realHeight/2;o.wrapper.style.left="".concat(L,"px"),o.wrapper.style.right="auto",o.wrapper.style.top="".concat(A,"px"),o.wrapper.style.bottom="auto"}else if(C){var M=window.innerWidth/2-(null==h?void 0:h.realWidth)/2;o.wrapper.style.left="".concat(M,"px"),o.wrapper.style.right="auto",o.wrapper.style.bottom="".concat(10,"px"),o.wrapper.style.top="auto"}else if(k){var R=Math.min(w,window.innerWidth-(null==h?void 0:h.realWidth)-f.width),P=T(u,{elementDimensions:m,popoverDimensions:h,popoverPadding:p,popoverArrowDimensions:f});o.wrapper.style.left="".concat(R,"px"),o.wrapper.style.top="".concat(P,"px"),o.wrapper.style.bottom="auto",o.wrapper.style.right="auto",I="left"}else if(S){var D=Math.min(x,window.innerWidth-(null==h?void 0:h.realWidth)-f.width),N=T(u,{elementDimensions:m,popoverDimensions:h,popoverPadding:p,popoverArrowDimensions:f});o.wrapper.style.right="".concat(D,"px"),o.wrapper.style.top="".concat(N,"px"),o.wrapper.style.bottom="auto",o.wrapper.style.left="auto",I="right"}else if(v){var j=Math.min(g,window.innerHeight-h.realHeight-f.width),F=O(u,{elementDimensions:m,popoverDimensions:h,popoverPadding:p,popoverArrowDimensions:f});o.wrapper.style.top="".concat(j,"px"),o.wrapper.style.left="".concat(F,"px"),o.wrapper.style.bottom="auto",o.wrapper.style.right="auto",I="top"}else if(b){var B=Math.min(y,window.innerHeight-(null==h?void 0:h.realHeight)-f.width),_=O(u,{elementDimensions:m,popoverDimensions:h,popoverPadding:p,popoverArrowDimensions:f});o.wrapper.style.left="".concat(_,"px"),o.wrapper.style.bottom="".concat(B,"px"),o.wrapper.style.top="auto",o.wrapper.style.right="auto",I="bottom"}C?o.arrow.classList.add("gleap-tour-popover-arrow-none"):function(e,t,n){var o=c("popover");if(!o)return;var r=n.getBoundingClientRect(),i=E(),a=o.arrow,s=i.width,l=window.innerWidth,u=r.width,d=r.left,p=i.height,h=window.innerHeight,f=r.top,m=r.height;a.className="gleap-tour-popover-arrow";var g=t,v=e;"top"===t?(d+u<=0?(g="right",v="end"):d+u-s<=0&&(g="top",v="start"),d>=l?(g="left",v="end"):d+s>=l&&(g="top",v="end")):"bottom"===t?(d+u<=0?(g="right",v="start"):d+u-s<=0&&(g="bottom",v="start"),d>=l?(g="left",v="start"):d+s>=l&&(g="bottom",v="end")):"left"===t?(f+m<=0?(g="bottom",v="end"):f+m-p<=0&&(g="left",v="start"),f>=h?(g="top",v="end"):f+p>=h&&(g="left",v="end")):"right"===t&&(f+m<=0?(g="bottom",v="start"):f+m-p<=0&&(g="right",v="start"),f>=h?(g="top",v="start"):f+p>=h&&(g="right",v="end"));g?(a.classList.add("gleap-tour-popover-arrow-side-".concat(g)),a.classList.add("gleap-tour-popover-arrow-align-".concat(v))):a.classList.add("gleap-tour-popover-arrow-none")}(u,I,e)}}return function(){function e(){n("allowClose")&&f()}function o(){var e=c("activeIndex"),t=n("steps")||[];if(void 0!==e){var o=e+1;t[o]?h(o):f()}}function r(){var e=c("activeIndex"),t=n("steps")||[];if(void 0!==e){var o=e-1;t[o]?h(o):f()}}function i(){var e;if(!c("__transitionCallback")){var t=c("activeIndex"),o=c("__activeStep"),i=c("__activeElement");if("CLICK"!==o.mode)if(void 0!==t&&void 0!==o)if(void 0!==c("activeIndex")){var a=(null==(e=o.popover)?void 0:e.onPrevClick)||n("onPrevClick");if(a)return a(i,o,{config:n(),state:c()});r()}}}function a(){var e;if(!c("__transitionCallback")){var t=c("activeIndex"),r=c("__activeStep"),i=c("__activeElement");if("CLICK"!==r.mode&&void 0!==t&&void 0!==r){var a=(null==(e=r.popover)?void 0:e.onNextClick)||n("onNextClick");if(a)return a(i,r,{config:n(),state:c()});o()}}}function s(){c("isInitialized")||(l("isInitialized",!0),document.body.classList.add("gleap-tour-active",n("animate")?"gleap-tour-fade":"gleap-tour-simple"),window.addEventListener("keyup",x,!1),window.addEventListener("keydown",k,!1),window.addEventListener("resize",w),window.addEventListener("scroll",w),p("overlayClick",e),p("escapePress",e),p("arrowLeftPress",i),p("arrowRightPress",a))}function h(){var e,t,o,r,i,a,s,c,u=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,d=n("steps");if(!d)return console.error("No steps to drive through"),void f();if(d[u]){l("__activeOnDestroyed",document.activeElement),l("activeIndex",u);var p=d[u],m=d[u+1],g=d[u-1],v=(null==(e=p.popover)?void 0:e.doneBtnText)||n("doneBtnText")||"Done",b=n("allowClose"),w=void 0!==(null==(t=p.popover)?void 0:t.showProgress)?null==(o=p.popover)?void 0:o.showProgress:n("showProgress"),k=((null==(r=p.popover)?void 0:r.progressText)||n("progressText")||"{{current}} of {{total}}").replace("{{current}}","".concat(u+1)).replace("{{total}}","".concat(d.length)),x=(null==(i=p.popover)?void 0:i.showButtons)||n("showButtons"),S=["next","previous"].concat(Yf(b?["close"]:[])).filter((function(e){return!(null==x?void 0:x.length)||x.includes(e)})),C=(null==(a=p.popover)?void 0:a.onNextClick)||n("onNextClick"),I=(null==(s=p.popover)?void 0:s.onPrevClick)||n("onPrevClick"),E=(null==(c=p.popover)?void 0:c.onCloseClick)||n("onCloseClick");y(Zf(Zf({},p),{},{popover:Zf({showButtons:S,nextBtnText:m?void 0:v,disableButtons:Yf(g?[]:["previous"]),showProgress:w,progressText:k,onNextClick:C||function(){m?h(u+1):f()},onPrevClick:I||function(){h(u-1)},onCloseClick:E||function(){f()}},(null==p?void 0:p.popover)||{})}))}else f()}function f(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=c("__activeElement"),o=c("__activeStep"),r=c("__activeOnDestroyed"),i=n("onDestroyStarted");if(e&&i){i(!t||"gleap-tour-dummy-element"===(null==t?void 0:t.id)?void 0:t,o,{config:n(),state:c()})}else{var a,s=(null==o?void 0:o.onDeselected)||n("onDeselected"),l=n("onDestroyed");if(document.body.classList.remove("gleap-tour-active","gleap-tour-fade","gleap-tour-simple"),window.removeEventListener("keyup",x),window.removeEventListener("resize",w),window.removeEventListener("scroll",w),function(){var e,t=c("popover");t&&(null==(e=t.wrapper.parentElement)||e.removeChild(t.wrapper))}(),function(){var e;null==(e=document.getElementById("gleap-tour-dummy-element"))||e.remove(),document.querySelectorAll(".gleap-tour-active-element").forEach((function(e){e.classList.remove("gleap-tour-active-element","gleap-tour-no-interaction"),e.removeAttribute("aria-haspopup"),e.removeAttribute("aria-expanded"),e.removeAttribute("aria-controls")}))}(),(a=c("__overlaySvg"))&&a.remove(),d={},u(),t&&o){var p="gleap-tour-dummy-element"===t.id;s&&s(p?void 0:t,o,{config:n(),state:c()}),l&&l(p?void 0:t,o,{config:n(),state:c()})}r&&r.focus()}}return t(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),{isActive:function(){return c("isInitialized")||!1},refresh:w,drive:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;s(),h(e)},setConfig:t,setSteps:function(e){u(),t(Zf(Zf({},n()),{},{steps:e}))},getConfig:n,getState:c,getActiveIndex:function(){return c("activeIndex")},isFirstStep:function(){return 0===c("activeIndex")},isLastStep:function(){var e=n("steps")||[],t=c("activeIndex");return void 0!==t&&t===e.length-1},getActiveStep:function(){return c("activeStep")},getActiveElement:function(){return c("activeElement")},getPreviousElement:function(){return c("previousElement")},getPreviousStep:function(){return c("previousStep")},moveNext:o,movePrevious:r,moveTo:function(e){(n("steps")||[])[e]?h(e):f()},hasNextStep:function(){var e=n("steps")||[],t=c("activeIndex");return void 0!==t&&e[t+1]},hasPreviousStep:function(){var e=n("steps")||[],t=c("activeIndex");return void 0!==t&&e[t-1]},highlight:function(e){s(),y(Zf(Zf({},e),{},{popover:e.popover?Zf({showButtons:[],showProgress:!1,progressText:""},e.popover):void 0}))},destroy:function(){f(!1)}}}}();const em=Qf;function tm(e){return tm="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},tm(e)}function nm(){nm=function(){return t};var e,t={},n=Object.prototype,o=n.hasOwnProperty,r=Object.defineProperty||function(e,t,n){e[t]=n.value},i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",s=i.asyncIterator||"@@asyncIterator",l=i.toStringTag||"@@toStringTag";function c(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,n){return e[t]=n}}function u(e,t,n,o){var i=t&&t.prototype instanceof v?t:v,a=Object.create(i.prototype),s=new A(o||[]);return r(a,"_invoke",{value:E(e,n,s)}),a}function d(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=u;var p="suspendedStart",h="suspendedYield",f="executing",m="completed",g={};function v(){}function y(){}function b(){}var w={};c(w,a,(function(){return this}));var k=Object.getPrototypeOf,x=k&&k(k(M([])));x&&x!==n&&o.call(x,a)&&(w=x);var S=b.prototype=v.prototype=Object.create(w);function C(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function I(e,t){function n(r,i,a,s){var l=d(e[r],e,i);if("throw"!==l.type){var c=l.arg,u=c.value;return u&&"object"==tm(u)&&o.call(u,"__await")?t.resolve(u.__await).then((function(e){n("next",e,a,s)}),(function(e){n("throw",e,a,s)})):t.resolve(u).then((function(e){c.value=e,a(c)}),(function(e){return n("throw",e,a,s)}))}s(l.arg)}var i;r(this,"_invoke",{value:function(e,o){function r(){return new t((function(t,r){n(e,o,t,r)}))}return i=i?i.then(r,r):r()}})}function E(t,n,o){var r=p;return function(i,a){if(r===f)throw new Error("Generator is already running");if(r===m){if("throw"===i)throw a;return{value:e,done:!0}}for(o.method=i,o.arg=a;;){var s=o.delegate;if(s){var l=T(s,o);if(l){if(l===g)continue;return l}}if("next"===o.method)o.sent=o._sent=o.arg;else if("throw"===o.method){if(r===p)throw r=m,o.arg;o.dispatchException(o.arg)}else"return"===o.method&&o.abrupt("return",o.arg);r=f;var c=d(t,n,o);if("normal"===c.type){if(r=o.done?m:h,c.arg===g)continue;return{value:c.arg,done:o.done}}"throw"===c.type&&(r=m,o.method="throw",o.arg=c.arg)}}}function T(t,n){var o=n.method,r=t.iterator[o];if(r===e)return n.delegate=null,"throw"===o&&t.iterator.return&&(n.method="return",n.arg=e,T(t,n),"throw"===n.method)||"return"!==o&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+o+"' method")),g;var i=d(r,t.iterator,n.arg);if("throw"===i.type)return n.method="throw",n.arg=i.arg,n.delegate=null,g;var a=i.arg;return a?a.done?(n[t.resultName]=a.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,g):a:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,g)}function O(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function L(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function A(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(O,this),this.reset(!0)}function M(t){if(t||""===t){var n=t[a];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,i=function n(){for(;++r=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var l=o.call(a,"catchLoc"),c=o.call(a,"finallyLoc");if(l&&c){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&o.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),L(n),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var o=n.completion;if("throw"===o.type){var r=o.arg;L(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,o){return this.delegate={iterator:M(t),resultName:n,nextLoc:o},"next"===this.method&&(this.arg=e),g}},t}function om(e,t){for(var n=0;n=0&&t.productTourData&&t.productTourData.steps){var e=t.productTourData.steps[t.currentActiveIndex];e&&e.selector&&""!==e.selector&&t.updatePointerPosition(document.querySelector(e.selector),e)}})))}var t,n,o;return t=e,n=[{key:"disable",value:function(){this.disabled=!0,this.cleanup()}},{key:"startWithConfig",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;"undefined"!=typeof window&&(this.productTourId||this.disabled||(this.productTourId=e,this.productTourData=t,this.currentActiveIndex=0,this.onCompleteCallback=n,this.start()))}},{key:"storeUncompletedTour",value:function(){if("undefined"!=typeof window)if(this.productTourId&&this.productTourData)try{var e=JSON.parse(JSON.stringify({tourData:this.productTourData,tourId:this.productTourId}));e.tourData.steps=e.tourData.steps.slice(this.currentActiveIndex||0,e.tourData.steps.length),localStorage.setItem(sm,JSON.stringify(e))}catch(t){}else localStorage.removeItem(sm)}},{key:"attachScrollListeners",value:function(e,t){var n=this;if("undefined"!=typeof window&&e){var o=function(e){if("undefined"!=typeof window){for(var t=[],n=e.parentElement;n;){var o=window.getComputedStyle(n);("auto"===o.overflowY||"scroll"===o.overflowY)&&n.scrollHeight>n.clientHeight&&t.push(n),n=n.parentElement}return t}}(e);o.push(window),o.forEach((function(o){var r=function(){clearTimeout(n._scrollDebounceTimer),n._scrollDebounceTimer=setTimeout((function(){n.updatePointerPosition(e,t)}),150)};o.addEventListener("scroll",r,{passive:!0}),n._scrollListeners.push({el:o,handler:r})}))}}},{key:"removeScrollListeners",value:function(){"undefined"!=typeof window&&(this._scrollListeners&&this._scrollListeners.length>0&&(this._scrollListeners.forEach((function(e){var t=e.el,n=e.handler;t.removeEventListener("scroll",n)})),this._scrollListeners=[]),this._scrollDebounceTimer&&(clearTimeout(this._scrollDebounceTimer),this._scrollDebounceTimer=null))}},{key:"updatePointerPosition",value:function(e,t){var n,o=this;if("undefined"!=typeof window)try{var r=this._pointerContainer||document.getElementById(lm);if(!r)return;if(!e)return r.style.position="fixed",r.style.left="50%",r.style.top="50%",r.style.transform="translate(-50%, -50%)",function(e){if("undefined"!=typeof window){var t=e-window.innerHeight/2;window.scrollTo({top:t,behavior:"smooth"})}}(window.innerHeight/2),this.removeScrollListeners(),this._currentAnchor=null,void(this._currentStep=null);n=e,"undefined"!=typeof window&&n&&n.scrollIntoView({behavior:"smooth",block:"center",inline:"center"});var i=0;!function n(){if(function(e){if("undefined"!=typeof window){var t=e.getBoundingClientRect();return t.top>=0&&t.left>=0&&t.bottom<=window.innerHeight&&t.right<=window.innerWidth}}(e)||i>=20){var a=e.getBoundingClientRect(),s=a.left+a.width/2,l=a.top+a.height/2+10;r.style.position="fixed",r.style.left="".concat(s,"px"),r.style.top="".concat(l,"px"),r.style.transform="translate(-50%, -50%)";var c=350;c>window.innerWidth-40&&(c=window.innerWidth-40),s+c>window.innerWidth-20?r.classList.add("copilot-pointer-container-right"):r.classList.remove("copilot-pointer-container-right"),o._currentAnchor===e&&o._currentStep===t||(o.removeScrollListeners(),o._currentAnchor=e,o._currentStep=t,o.attachScrollListeners(e,t))}else i++,setTimeout(n,100)}()}catch(a){}}},{key:"cleanup",value:function(){var e=this;"undefined"!=typeof window&&(document.body.classList.add("gl-copilot-fade-out"),this.currentAudio&&this.currentAudio.pause(),setTimeout((function(){if(e._pointerContainer)e._pointerContainer.remove(),e._pointerContainer=null;else{var t=document.getElementById(lm);t&&t.remove()}var n=document.getElementById(um);n&&n.remove();var o=document.getElementById(cm);o&&o.remove(),document.body.classList.remove("gl-copilot-fade-out")}),800),this.productTourId=void 0,this.productTourData=void 0,this.removeScrollListeners())}},{key:"toggleAudio",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.audioMuted=e,this.currentAudio&&(this.currentAudio.muted=this.audioMuted),document.querySelector(".".concat(um,"-mute")).innerHTML=p(this.audioMuted?"unmute":"mute")}},{key:"setupCopilotTour",value:function(){var e,t,n,o,r,i,a=this;if("undefined"!=typeof window){var s,l,c=null!==(e=null===(t=dt.getInstance().flowConfig)||void 0===t?void 0:t.color)&&void 0!==e?e:"#485BFF",u=d(c),h=document.getElementById(cm);h||((h=document.createElement("style")).id=cm,h.type="text/css",h.textContent="\n #".concat(lm," {\n position: absolute;\n top: 0;\n left: 0;\n display: flex;\n align-items: flex-start;\n pointer-events: none;\n z-index: 2147483610;\n transition: all 0.5s ease;\n }\n .").concat(lm,"-clickmode {\n cursor: pointer;\n pointer-events: all !important;\n }\n .").concat(lm,"-clickmode #copilot-info-bubble-content {\n display: flex !important;\n }\n .").concat(lm,"-clickmode svg {\n display: none !important;\n }\n #").concat(lm," svg {\n width: 20px;\n height: auto;\n fill: none;\n }\n #copilot-info-bubble {\n position: relative;\n }\n #copilot-info-bubble-content-container {\n position: absolute;\n top: 0px;\n left: 0px;\n min-width: min(300px, 80vw);\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n }\n .").concat(lm,"-right #copilot-info-bubble-content-container {\n left: auto !important;\n right: 0px !important;\n align-items: flex-end;\n }\n .").concat(lm,"-right .copilot-info-bubble-content {\n margin-right: 5px;\n }\n .").concat(lm,"-right svg {\n transform: scaleX(-1);\n }\n #copilot-info-bubble-content svg {\n width: 16px;\n height: 16px;\n display: inline-block !important;\n margin-left: 5px;\n }\n #copilot-info-bubble-content {\n margin-top: 18px;\n margin-left: 5px;\n padding: 10px 15px;\n border-radius: 20px;\n background-color: black;\n color: white;\n font-family: Arial, sans-serif;\n font-size: 14px;\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);\n max-width: 100%;\n white-space: normal;\n overflow-wrap: break-word;\n word-break: normal;\n hyphens: none;\n }\n .").concat(lm,"-right #copilot-info-bubble-content {\n margin-top: 30px;\n margin-left: 0px;\n margin-right: 5px;\n }\n .click-wave {\n position: absolute;\n width: 34px;\n height: 34px;\n border-radius: 50%;\n background-color: rgba(0, 0, 0, 0.5);\n pointer-events: none;\n z-index: 2147483611;\n animation: click-wave-animation 0.8s ease forwards;\n }\n @keyframes click-wave-animation {\n 0% {\n transform: scale(0.2);\n opacity: 1;\n }\n 100% {\n transform: scale(2);\n opacity: 0;\n }\n }\n @keyframes slideInFromTop {\n 0% {\n transform: translateY(-100%);\n opacity: 0;\n }\n 100% {\n transform: translateY(0);\n opacity: 1;\n }\n }\n .").concat(um," {\n position: fixed;\n top: 20px;\n right: 20px;\n z-index: 2147483610;\n background: #fff;\n padding: 6px;\n border-radius: 10px;\n box-shadow: 0 0 20px 0 #C294F2;\n display: flex;\n align-items: center;\n gap: 8px;\n border: 1px solid rgba(192, 146, 242, 0.5);\n animation: slideInFromTop 0.5s ease-out forwards;\n }\n .").concat(um," span {\n font-size: 13px;\n color: #000;\n font-family: sans-serif;\n }\n .").concat(um,"-avatar {\n width: 24px;\n height: 24px;\n flex-shrink: 0;\n border-radius: 6px;\n }\n .").concat(um,"-mute {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n .").concat(um,"-mute svg {\n width: 20px;\n height: auto;\n cursor: pointer;\n animation: pulsate 2s infinite;\n }\n .").concat(um,"-mute svg:hover {\n opacity: 0.8;\n }\n .").concat(um,"-dismiss {\n display: flex;\n align-items: center;\n justify-content: center;\n padding-right: 3px;\n }\n .").concat(um,"-dismiss svg {\n width: 15px;\n height: auto;\n cursor: pointer;\n }\n .").concat(um,"-dismiss svg:hover {\n opacity: 0.8;\n }\n @keyframes pulsate {\n 0% {\n transform: scale(1);\n opacity: 1;\n }\n 50% {\n transform: scale(1.1);\n opacity: 0.8;\n }\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n }\n @keyframes glCoFadeIn {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n @keyframes glCoFadeOut {\n 0% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n }\n\n .gleap-audio-unmute-modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n background-color: rgba(0, 0, 0, 0.5);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 2147483620;\n }\n\n .gleap-audio-unmute-modal {\n background-color: #fff;\n padding: 20px;\n border-radius: 8px;\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);\n text-align: center;\n max-width: 90%;\n width: 400px;\n }\n\n .gleap-audio-unmute-modal p {\n margin-bottom: 20px;\n font-size: 16px;\n line-height: 22px;\n font-weight: normal;\n }\n\n .gleap-audio-unmute-button {\n background: ").concat(c,";\n color: ").concat(u,";\n outline: none;\n border: none;\n padding: 10px 14px;\n border-radius: 12px;\n font-size: 14px;\n font-weight: bold;\n cursor: pointer;\n }\n\n .gleap-audio-unmute-button:hover {\n opacity: 0.8;\n }\n\n .gleap-tour-continue-button {\n color: ").concat(c,";\n text-decoration: none;\n cursor: pointer;\n font-size: 14px;\n font-weight: bold;\n border: none;\n background: none;\n padding: 0;\n margin: 0;\n margin-left: 20px;\n }\n\n .gleap-tour-continue-button:hover {\n opacity: 0.8;\n }\n\n body.gl-copilot-fade-out::before,\n body.gl-copilot-fade-out::after,\n body.gl-copilot-fade-out #").concat(um," {\n animation: glCoFadeOut 0.8s ease-out forwards;\n }\n ").concat(null===(s=null===(l=this.productTourData)||void 0===l?void 0:l.playVoice)||void 0===s||s?"":"\n .".concat(um,"-mute {\n display: none;\n }\n "),"\n ").concat(this.productTourData.gradient?'body::before {\n content: "";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n box-sizing: border-box;\n border: 18px solid transparent;\n filter: blur(25px);\n border-image-slice: 1;\n border-image-source: linear-gradient(45deg, #ED5587, #FBE6A9, #a6e3f8, #C294F2);\n animation: glCoFadeIn 1.5s ease-out forwards;\n }\n \n body::after {\n content: "";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n opacity: 0.5;\n box-sizing: border-box;\n border: 3px solid transparent;\n border-image-slice: 1;\n border-image-source: linear-gradient(45deg, #ED5587, #FBE6A9, #a6e3f8, #C294F2);\n animation: glCoFadeIn 1.5s ease-out forwards;\n }':'body::after {\n content: "";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n opacity: 0;\n }',"\n "),document.head.appendChild(h));var f=document.createElement("div");f.id=lm,f.style.opacity=0,this._pointerContainer=f;var m=document.createElementNS("http://www.w3.org/2000/svg","svg");m.setAttribute("viewBox","0 0 380 476"),m.innerHTML='';var g=document.createElement("div");g.id="copilot-info-bubble",g.innerHTML="
";var v=document.createElement("div");v.id=um,v.classList.add(um),v.innerHTML='\n \n ').concat(null===(o=this.productTourData)||void 0===o?void 0:o.kaiSlug,'\n
\n ').concat(p(this.audioMuted?"unmute":"mute"),"\n
\n ").concat(null!==(r=this.productTourData)&&void 0!==r&&r.allowClose?'
\n ').concat(p("dismiss"),"\n
"):"","\n "),document.body.appendChild(v),document.querySelector(".".concat(um,"-mute")).addEventListener("click",(function(){a.toggleAudio(!a.audioMuted)})),null!==(i=this.productTourData)&&void 0!==i&&i.allowClose&&document.querySelector(".".concat(um,"-dismiss")).addEventListener("click",(function(){a.completeTour(!1)})),f.appendChild(m),f.appendChild(g),document.body.appendChild(f)}}},{key:"start",value:function(){var e=this;if("undefined"!=typeof window&&!this.disabled){var t=this.productTourData;t&&function(){return dm.apply(this,arguments)}().then((function(n){e.audioMuted=!n,e.setupCopilotTour(),e.audioMuted&&null!=t&&t.showUnmuteModal?e.showAudioUnmuteModal():setTimeout((function(){e.renderNextStep()}),1500)}))}}},{key:"showAudioUnmuteModal",value:function(){var e,t,n,o=this,r=document.createElement("div");r.classList.add("gleap-audio-unmute-modal-overlay");var i=document.createElement("div");i.classList.add("gleap-audio-unmute-modal");var a=document.createElement("p");a.textContent=null===(e=this.productTourData)||void 0===e?void 0:e.unmuteModalTitle,i.appendChild(a);var s=document.createElement("button");s.classList.add("gleap-audio-unmute-button"),s.textContent=null===(t=this.productTourData)||void 0===t?void 0:t.unmuteModalButton,s.addEventListener("click",(function(){o.toggleAudio(!1),r.parentNode&&r.parentNode.removeChild(r),setTimeout((function(){o.renderNextStep()}),1e3)})),i.appendChild(s);var l=document.createElement("button");l.classList.add("gleap-tour-continue-button"),l.textContent=null===(n=this.productTourData)||void 0===n?void 0:n.unmuteModalContinue,l.addEventListener("click",(function(){r.parentNode&&r.parentNode.removeChild(r),setTimeout((function(){o.renderNextStep()}),1e3)})),i.appendChild(l),r.appendChild(i),document.body.appendChild(r)}},{key:"completeTour",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];"undefined"!=typeof window&&(this.cleanup(),this.onCompleteCallback&&this.onCompleteCallback(e))}},{key:"renderNextStep",value:function(){var e=this;if("undefined"!=typeof window&&!this.disabled){var t=this,n=this.productTourData.steps;if(this.currentActiveIndex>=n.length)setTimeout((function(){e.completeTour()}),500);else{var o=n[this.currentActiveIndex],r=function(n){if(e._pointerContainer.style.display="flex",o.selector&&o.selector.length>0&&!n)e.completeTour(!1);else{var r=function(){if("INPUT"===o.mode&&n){var e,r=function(){document.querySelector("#".concat(lm)).classList.remove("copilot-pointer-container-clickmode"),n.classList.remove("gleap-input-highlight"),document.getElementById(lm).style.display="none",t.currentActiveIndex++,t.storeUncompletedTour(),t.renderNextStep()};if("default"===(null!==(e=o.inputType)&&void 0!==e?e:"default")){var i=function e(t){var o;if(0!==(null==t||null===(o=t.target)||void 0===o||null===(o=o.value)||void 0===o?void 0:o.length)){var i=document.getElementById("copilot-info-bubble-content");i&&(i.innerHTML="".concat(kh.translateText("next"),' \n \n'),i.addEventListener("click",r,{once:!0}),n.classList.add("gleap-input-highlight"),document.querySelector("#".concat(lm)).classList.add("copilot-pointer-container-clickmode"),n.removeEventListener("input",e))}};n.addEventListener("input",i,{once:!1}),n.hasAttribute("contenteditable")&&n.addEventListener("keyup",i,{once:!1}),n.addEventListener("blur",(function(){n.focus()}),{once:!0}),n.focus()}else{var a,s=null!==(a=o.inputValue)&&void 0!==a?a:"",l=0;!function e(){l0})).length;return Math.ceil(t/3.6)+1}}(i),s=function(){e.currentAudio=void 0,setTimeout((function(){r()}),1e3*a)};o.voice&&o.voice.length>0?(e.currentAudio=new Audio(o.voice),e.audioMuted&&(e.currentAudio.muted=!0),e.currentAudio.addEventListener("ended",(function(){setTimeout((function(){r()}),1e3)})),e.currentAudio.play().then((function(){})).catch((function(e){s()}))):s()}},i=o.selector?function(e){if("undefined"!=typeof window){var t=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:5e3)/100,n=0;return new Promise((function(o,r){var i=setInterval((function(){var a=document.querySelector(e);a?(clearInterval(i),o(a)):n>=t&&(clearInterval(i),r(new Error("Element not found for selector: ".concat(e)))),n++}),100)}))}}(o.selector):Promise.resolve(null);i.then(r).catch((function(){return r(null)}))}}}}],o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],n&&om(t.prototype,n),o&&om(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function hm(e){return hm="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},hm(e)}function fm(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function mm(e){for(var t=1;t2&&void 0!==arguments[2]?arguments[2]:0,r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(!this.productTourId&&!this.disabled)if(this.productTourId=e,this.productTourData=t,this.currentActiveIndex=0,r)this.start();else{var i=this;et.getInstance().validateProductTour(e).then((function(){return o>0?setTimeout((function(){i.start()}),o):n.start()})).catch((function(e){console.log("Product tour is not live. Cleaning up..."),console.error(e),i.onComplete(!1)}))}}},{key:"onComplete",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t={tourId:this.productTourId};e?(Tn.notifyEvent("productTourCompleted",t),Wm.trackEvent("tour-".concat(this.productTourId,"-completed"),t)):(Tn.notifyEvent("productTourQuit",t),Wm.trackEvent("tour-".concat(this.productTourId,"-quit"),t)),this.gleapTourObj&&this.gleapTourObj.destroy(),this.gleapTourObj=void 0,this.productTourData=void 0,this.productTourId=void 0,this.currentActiveIndex=void 0,this.clearUncompletedTour()}},{key:"loadUncompletedTour",value:function(){try{var e=JSON.parse(localStorage.getItem(bm));if(null!=e&&e.tourData&&null!=e&&e.tourId)return e}catch(t){}return null}},{key:"storeUncompletedTour",value:function(){if(this.productTourId&&this.productTourData)try{var e=JSON.parse(JSON.stringify({tourData:this.productTourData,tourId:this.productTourId}));e.tourData.steps=e.tourData.steps.slice(this.currentActiveIndex||0,e.tourData.steps.length),localStorage.setItem(bm,JSON.stringify(e))}catch(t){}else this.clearUncompletedTour()}},{key:"clearUncompletedTour",value:function(){try{localStorage.removeItem(bm)}catch(e){}}},{key:"start",value:function(){var e=this,t=this.productTourData;if(t){if("cobrowse"===t.tourType)return pm.getInstance().startWithConfig(this.productTourId,t,(function(t){e.onComplete(t)}));this.unmuted=!1;for(var n=t.steps,o=this,r=[],i=0;i\n \n
').concat(p("unmute"),"
\n ");else{var d="";t.sender&&t.sender.firstName&&(u=!0,d='
\n
\n
').concat(t.sender.firstName,"
\n
")),c="".concat(d,'
').concat(a.message,"
")}var h={disableActiveInteraction:!s&&!l,mode:a.mode,popover:mm({description:c,popoverClass:"gleap-tour-popover-".concat(a.type," ").concat(!u&&"gleap-tour-popover-no-sender"," ").concat(t.allowClose&&"gleap-tour-popover-can-close")},s?{showButtons:[]}:{})};a.selector&&a.selector.length>0&&(h.element=a.selector),r.push(h)}var f=["next","close"];t.backButton&&f.push("previous"),this.gleapTourObj=em(vm(vm(vm(vm(vm(vm(vm(vm(vm(vm({showProgress:!0,allowKeyboardControl:!1,steps:r},"showProgress",n.length>1),"allowClose",t.allowClose),"nextBtnText",t.nextText),"doneBtnText",t.doneText),"prevBtnText",t.prevText),"showButtons",f),"onHighlightStarted",(function(t,n,o){var r;e.currentActiveIndex=null==o||null===(r=o.state)||void 0===r?void 0:r.activeIndex,e.storeUncompletedTour()})),"onElementNotFound",(function(t){document.removeEventListener("click",m),e.onComplete(!1)})),"onDestroyStarted",(function(){e.gleapTourObj.hasNextStep()?e.onComplete(!1):e.onComplete(!0),document.removeEventListener("click",m)})),"onPopoverRender",(function(t){if(t)for(var n=document.querySelectorAll(".gleap-tour-popover-description img, .gleap-tour-popover-description video"),r=function(){setTimeout((function(){e.gleapTourObj.refresh()}),500),setTimeout((function(){e.gleapTourObj.refresh()}),750)},i=0;ie.length)&&(t=e.length);for(var n=0,o=new Array(t);n1&&void 0!==arguments[1]?arguments[1]:"";return kh.translateText(e)||t}},{key:"_translateWithVars",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return kh.translateTextWithVars(e,t)||n}},{key:"getCheckIcon",value:function(){return'\n \n '}},{key:"loadChecklist",value:function(){if(this._isSessionReady&&this._networkManager){var e=this.getAttribute("checklistId");e?(this.activeStep=-1,this._initialActiveSet=!1,this.validateChecklist(e)):(this.renderResponse(),this.checklistData=null,this._hasLoaded=!1)}}},{key:"getQueryParams",value:function(){var e=this._getGleapSessionInstance();if(null==e||!e.session)return"";var t=e.session,n="en";try{void 0!==kh&&(n=kh.getInstance().getActiveLanguage()||"en")}catch(o){}return"gleapId=".concat(t.gleapId||"","&gleapHash=").concat(t.gleapHash||"","&lang=").concat(n)}},{key:"makeRequest",value:function(e,t,n,o){var r=this._getGleapSessionInstance();if(null!=r&&r.session){var i=new XMLHttpRequest;i.open(e,t);try{r.injectSession(i)}catch(a){}n&&i.setRequestHeader("Content-Type","application/json;charset=UTF-8"),i.onreadystatechange=function(){4===i.readyState&&o(i)},i.onerror=function(){o(i)},i.send(n?JSON.stringify(n):null)}else o({readyState:4,status:0,responseText:"Session unavailable",_isMock:!0})}},{key:"validateChecklist",value:function(e){var t=this;if(this._isSessionReady&&this._networkManager){this.checklistData=null,this._hasLoaded=!1,this.renderResponse();var n=this.getAttribute("sharedKey");this._networkManager.validateChecklist(e,n).then((function(e){t.isConnected&&t._isSessionReady&&e&&t.fetchChecklist(e)})).catch((function(e){t.renderResponse(),t.checklistData=null,t._hasLoaded=!1}))}}},{key:"fetchChecklist",value:function(e){var t=this;this._isSessionReady&&this._networkManager&&(this._isInitialLoad=!this._hasLoaded,this._networkManager.fetchChecklist(e).then((function(e){var n;if(!t.isConnected||!t._isSessionReady||!e)return t._hasLoaded=!1,t.checklistData=null,void t._checkSessionAndLoad();if(t.checklistData=e,t._hasLoaded=!0,"done"!==e.status){if(t._isInitialLoad&&!t._initialActiveSet){var o,r=(null===(o=e.outbound)||void 0===o||null===(o=o.config)||void 0===o?void 0:o.steps)||[],i=e.completedSteps||[],a=r.findIndex((function(e){return!i.includes(e.id)}));t.activeStep=a>=0?a:-1,-1!==t.activeStep&&(t._initialActiveSet=!0)}t.renderChecklist(t.checklistData),Tn.notifyEvent("checklist-loaded",{checklistId:t.checklistData.id,outboundId:null===(n=t.checklistData.outbound)||void 0===n?void 0:n.id,completedSteps:t.checklistData.completedSteps,status:t.checklistData.status,data:t.checklistData})}else t.renderResponse()})).catch((function(e){t.renderResponse(),t.checklistData=null,t._hasLoaded=!1})))}},{key:"updateChecklist",value:function(e,t){var n,o,r=this._getGleapSessionInstance();if(null!=r&&r.session){var i=r.apiUrl;if(i){var a=r.session,s=null!==(n=null==a?void 0:a.gleapId)&&void 0!==n?n:"",l=null!==(o=null==a?void 0:a.gleapHash)&&void 0!==o?o:"",c="en";try{void 0!==kh&&(c=kh.getInstance().getActiveLanguage()||"en")}catch(d){}var u="".concat(i,"/outbound/checklists/").concat(e);t.checkedStep&&(u+="/increment/".concat(t.checkedStep)),u+="?gleapId=".concat(s,"&gleapHash=").concat(l,"&lang=").concat(c),this.makeRequest("PUT",u,t,(function(e){e._isMock||200!==e.status&&e.status}))}}}},{key:"handleChecklistUpdate",value:function(e){if(this._hasLoaded&&this.checklistData){var t=e.detail;if(t&&t.id===this.checklistData.id){var n,o=xm(this.checklistData.completedSteps||[]),r=!1,i=!1,a=this.activeStep;if(t.completedSteps&&JSON.stringify(t.completedSteps)!==JSON.stringify(o)&&(this.checklistData.completedSteps=xm(t.completedSteps),r=!0,-1!==a)){var s,l=null===(s=this.checklistData.outbound)||void 0===s||null===(s=s.config)||void 0===s||null===(s=s.steps)||void 0===s||null===(s=s[a])||void 0===s?void 0:s.id;l&&this.checklistData.completedSteps.includes(l)&&!o.includes(l)&&(i=!0)}if(t.status&&t.status!==this.checklistData.status&&(this.checklistData.status=t.status,r=!0),i){for(var c,u=(null===(c=this.checklistData.outbound)||void 0===c||null===(c=c.config)||void 0===c?void 0:c.steps)||[],d=-1,p=a+1;p1&&void 0!==arguments[1]?arguments[1]:"checklist-floating",r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=(null===(t=e.config)||void 0===t?void 0:t.steps)||[],a=(null===(n=this.checklistData)||void 0===n?void 0:n.completedSteps)||[],s=0;if(this.progressbarEnabled&&i.length>0){var l=i.length,c=a.length;s=l>0?c/l*100:0}var u,d,p=i.find((function(e){return!a.includes(e.id)})),h=i.length>0?p?p.title||this._translateWithVars("stepDefaultTitle",{index:i.indexOf(p)+1},"Step ".concat(i.indexOf(p)+1)):"":e.subject||"",f=i.length>0?p&&p.description||"":e.message||"";r&&(h=(null===(u=e.config)||void 0===u?void 0:u.successTitle)||"",f=(null===(d=e.config)||void 0===d?void 0:d.successMessage)||"",s=100);var m=2*Math.PI*7,g=m-s/100*m,v="checklist-floating-header"===o,y=v?'\n \n \n ':'\n \n ';return'\n
\n
\n
\n \n \n \n \n
\n
').concat(h,"
\n ").concat(r?"":''.concat(y,""),'\n
\n
').concat(f,"
\n
\n ")}},{key:"renderInfoSection",value:function(e){var t;if(!this.infoEnabled||!e)return"";var n=e.subject||this._translate("checklistDefaultTitle","Checklist"),o=e.message||"",r="";return null!==(t=e.sender)&&void 0!==t&&t.profileImageUrl&&(r='\n
\n ').concat(e.sender.firstName||\n ').concat(e.sender.firstName||"","\n
")),'\n
\n '.concat(n?'
'.concat(n,"
"):"","\n ").concat(o?'
'.concat(o,"
"):"","\n ").concat(r,"\n
")}},{key:"renderProgressSection",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];if(!this.progressbarEnabled||!e.length)return"";var n=e.length,o=t.length,r=n>0?o/n*100:0,i=0;e.forEach((function(e){!t.includes(e.id)&&e.duration>0&&(i+=e.duration)}));var a=this._translateWithVars("taskProgress",{a:o,b:n},"".concat(o," of ").concat(n," done")),s=i>0?this._translateWithVars("aboutMinutes",{a:i},"About ".concat(i," min left")):"";return'\n
\n
'.concat(a,"
\n ").concat(s?'
'.concat(s,"
"):"",'\n
\n
\n
\n
')}},{key:"renderTasks",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return t&&0!==t.length?t.map((function(t,o){var r=n.includes(t.id),i=e.activeStep===o,a=r?''.concat(e.getCheckIcon(),""):''.concat(o+1,""),s=t.title||e._translateWithVars("stepDefaultTitle",{index:o+1},"Step ".concat(o+1)),l=t.description||"",c=t.actionTitle||e._translate("actionDefaultTitle","Action"),u=t.action&&"none"!==t.action?'
\n \n
"):"",d=e._translate("markAsDone","Mark as done"),p=t.allowMarkDone&&!r?'
\n ').concat(e.getCheckIcon(),'\n
').concat(d,"
\n
"):"",h=["checklist-task",r?"checklist-task--done":"",i?"checklist-task--active":""].filter(Boolean).join(" ");return'\n
\n
\n ').concat(a,'\n
').concat(s,'
\n \n \n \n \n \n
\n
\n
\n ').concat(l?'
'.concat(l,"
"):"","\n ").concat(u,"\n ").concat(p,"\n
\n
\n
")})).join(""):"

".concat(this._translate("noStepsDefined","No steps defined."),"

")}},{key:"renderChecklist",value:function(e){var t;if(this._hasLoaded&&e&&e.outbound){var n=e.outbound,o=(null===(t=n.config)||void 0===t?void 0:t.steps)||[],r=e.completedSteps||[],i="";if("done"===e.status||o.length>0&&r.length>=o.length){var a,s,l=(null===(a=n.config)||void 0===a?void 0:a.successTitle)||"",c=(null===(s=n.config)||void 0===s?void 0:s.successMessage)||"";i=this.floatingEnabled?this.renderFloatingLauncher(n,"checklist-floating-launcher",!0):'\n
\n
\n '.concat(this.getCheckIcon(),'\n
\n
').concat(l,'
\n
').concat(c,"
\n
"),-1!==this.activeStep&&(this.activeStep=-1)}else i='\n
\n '.concat(this.floatingEnabled?"":this.renderInfoSection(n),"\n ").concat(this.floatingEnabled?"":this.renderProgressSection(o,r),"\n ").concat(this.floatingEnabled?this.renderFloatingLauncher(n):"",'\n
\n ').concat(this.floatingEnabled?this.renderFloatingLauncher(n,"checklist-floating-header"):"","\n ").concat(this.renderTasks(o,r),"\n
\n
");var u=dt.getInstance().getFlowConfig(),d=u.color?u.color:"#485BFF",p="\n \n ');this.shadowRoot.innerHTML=p+i,this.addTaskEventListeners(),this.floatingEnabled&&this.addFloatingClickListeners(),-1!==this.activeStep&&this.toggleTask(this.activeStep,!0)}else this._checkSessionAndLoad()}},{key:"updateActiveTaskMaxHeight",value:function(){if(-1!==this.activeStep){var e=this.shadowRoot.querySelector('.checklist-task[data-task-index="'.concat(this.activeStep,'"] .checklist-task-body-inner')),t=this.shadowRoot.querySelector('.checklist-task[data-task-index="'.concat(this.activeStep,'"] .checklist-task-body'));if(e&&t){var n=e.offsetHeight;t.style.setProperty("--task-body-active-height","".concat(n,"px"))}}}},{key:"addTaskEventListeners",value:function(){var e=this;this.shadowRoot.querySelectorAll(".checklist-task").forEach((function(t){var n=t.querySelector(".checklist-task-header"),o=parseInt(t.getAttribute("data-task-index"),10);n&&n.addEventListener("click",(function(){var t=e.activeStep===o?-1:o;e.setActiveStep(t)}));var r=t.querySelector(".checklist-task-body-markdone");r&&r.addEventListener("click",(function(t){var n;if(t.stopPropagation(),null!==(n=e.checklistData)&&void 0!==n&&null!==(n=n.outbound)&&void 0!==n&&null!==(n=n.config)&&void 0!==n&&n.steps){var r=e.checklistData.outbound.config.steps[o];if(r){var i=e.activeStep;if(e.checklistData.completedSteps||(e.checklistData.completedSteps=[]),!e.checklistData.completedSteps.includes(r.id)){var a;e.checklistData.completedSteps.push(r.id),Tn.notifyEvent("checklist-step-completed",{checklistId:e.checklistData.id,outboundId:null===(a=e.checklistData.outbound)||void 0===a?void 0:a.id,stepId:r.id,stepIndex:o,step:r,completedSteps:e.checklistData.completedSteps,status:e.checklistData.status,data:e.checklistData});var s=e.checklistData.outbound.config.steps,l=-1;if(i===o){for(var c=o+1;c0&&e.checklistData.completedSteps.length>=s.length&&(e.checklistData.status="done",d.status="done",Tn.notifyEvent("checklist-completed",{checklistId:e.checklistData.id,outboundId:null===(u=e.checklistData.outbound)||void 0===u?void 0:u.id,completedSteps:e.checklistData.completedSteps,status:e.checklistData.status,data:e.checklistData})),e.updateChecklist(e.checklistData.id,d)}}}}));var i=t.querySelector(".checklist-task-body-action .action-button");i&&i.addEventListener("click",(function(t){var n;if(t.stopPropagation(),null!==(n=e.checklistData)&&void 0!==n&&null!==(n=n.outbound)&&void 0!==n&&null!==(n=n.config)&&void 0!==n&&n.steps&&void 0!==Wm){var r=e.checklistData.outbound.config.steps[o];if(r&&r.action&&"none"!==r.action)try{"BOT"===r.action?Wm.startBot(r.botId):"CUSTOM_ACTION"===r.action?Wm.triggerCustomAction(r.actionBody):"REDIRECT_URL"===r.action?(t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation(),Wm.openURL(r.actionBody,!!r.actionOpenInNewTab)):"FEEDBACK_FLOW"===r.action?Wm.startFeedbackFlow(r.formId):"NEWS_ARTICLE"===r.action?Wm.openNewsArticle(r.articleId):"HELP_ARTICLE"===r.action?Wm.openHelpCenterArticle(r.articleId):"CHECKLIST"===r.action&&Wm.startChecklist(r.outboundId,!0,null==r?void 0:r.sharedKey)}catch(i){}}}))}))}},{key:"setActiveStep",value:function(e){var t=this,n=this.activeStep;this.activeStep=e;var o=[];-1!==n&&n!==this.activeStep&&o.push({index:n,open:!1}),-1!==this.activeStep&&this.activeStep!==n&&o.push({index:this.activeStep,open:!0}),o.forEach((function(e){var n=e.index,o=e.open;t.toggleTask(n,o)}))}},{key:"toggleTask",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=this.shadowRoot.querySelector('.checklist-task[data-task-index="'.concat(e,'"]'));if(n){var o=n.querySelector(".checklist-task-header");if(o){var r=n.classList.contains("checklist-task--active"),i=null!==t?t:!r;if(i&&!r){n.classList.add("checklist-task--active"),o.setAttribute("aria-expanded","true");var a=n.querySelector(".checklist-task-body-inner");if(a){var s=a.offsetHeight,l=n.querySelector(".checklist-task-body");l&&l.style.setProperty("--task-body-active-height","".concat(s,"px"))}}else!i&&r&&(n.classList.remove("checklist-task--active"),o.setAttribute("aria-expanded","false"))}}}}],r=[{key:"observedAttributes",get:function(){return["checklistId","info","progressbar","dark","floating","sharedKey"]}}],o&&Cm(n.prototype,o),r&&Cm(n,r),Object.defineProperty(n,"prototype",{writable:!1}),t}(Tm(HTMLElement));"undefined"==typeof customElements||customElements.get("gleap-checklist")||customElements.define("gleap-checklist",e)}}();var _m=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),Fm(this,"initialized",!1),Fm(this,"offlineMode",!1),Fm(this,"disablePageTracking",!1),Fm(this,"disableInAppNotifications",!1),Fm(this,"globalData",{screenRecordingData:null,webReplay:null,snapshotPosition:{x:0,y:0}}),"undefined"!=typeof window&&(nn.getInstance(),un.getInstance().start(),vn.getInstance().start(),Gf.getInstance().start())}var t,n,o;return t=e,n=[{key:"isLiveMode",value:function(){if(!0===this.offlineMode)return!1;var e=window.location.hostname;return!(["localhost","127.0.0.1","0.0.0.0","","::1"].includes(e)||e.startsWith("192.168.")||e.startsWith("10.0.")||e.endsWith(".local")||!e.includes("."))}},{key:"softReInitialize",value:function(){Zt.getInstance().destroy(),dt.getInstance().start().then((function(){a.getInstance().refresh(),jh.getInstance().injectNotificationUI()})).catch((function(e){console.warn("Failed to initialize Gleap.")}))}},{key:"performActions",value:function(t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:"INFO";un.getInstance().addLog(e,t)}},{key:"initialize",value:function(t){var n=this.getInstance();if(n.initialized)console.warn("Gleap already initialized.");else{n.initialized=!0;try{!function(){try{if("visualViewport"in window&&/iPad|iPhone|iPod/.test(navigator.userAgent)){var e=function(){try{var e=document.querySelector(".gleap-frame-container-inner iframe");if(!e)return;window.visualViewport.height1&&void 0!==arguments[1]&&arguments[1];Zt.getInstance().urlHandler(e,t)}},{key:"checkForUrlParams",value:function(){if("undefined"!=typeof window&&window.location.search)try{var t=new URLSearchParams(window.location.search),n=t.get("gleap_widget");n&&n.length>0&&e.open();var o=t.get("gleap_conversation");o&&o.length>0&&("true"===o?e.startConversation(!0):e.startBot(o,!0));var r=t.get("gleap_feedback");r&&r.length>0&&e.startFeedbackFlow(r);var i=t.get("gleap_survey"),a=t.get("gleap_survey_format");i&&i.length>0&&e.showSurvey(i,"survey_full"===a?"survey_full":"survey");var s=t.get("gleap_tour");if(s&&s.length>0){var l=parseInt(t.get("gleap_tour_delay"));isNaN(l)&&(l=2),setTimeout((function(){e.startProductTour(s)}),1e3*l)}}catch(c){}}},{key:"destroy",value:function(){th.getInstance().stop(),it.getInstance().stop(),Zt.getInstance().destroy(),a.getInstance().destroy(),jh.getInstance().clearAllNotifications(!0),et.getInstance().clearSession(0,!1),qh.getInstance().removeBannerUI(),this.instance=null}},{key:"closeBanner",value:function(){qh.getInstance().removeBannerUI()}},{key:"closeModal",value:function(){Kh.getInstance().hideModal()}},{key:"setUseCookies",value:function(e){et.getInstance().useCookies=e}},{key:"identify",value:function(e,t,n){return et.getInstance().identifySession(e,k(t),n)}},{key:"updateContact",value:function(e){return et.getInstance().updateSession(k(e))}},{key:"clearIdentity",value:function(){et.getInstance().clearSession()}},{key:"getIdentity",value:function(){return et.getInstance().getSession()}},{key:"isUserIdentified",value:function(){var e=et.getInstance().session;return!!(e&&e.userId&&e.userId.length>0)}},{key:"isOpened",value:function(){return Zt.getInstance().isOpened()}},{key:"hide",value:function(){Zt.getInstance().hideWidget()}},{key:"setMaxNetworkRequests",value:function(e){y.getInstance().setMaxRequests(e)}},{key:"startNetworkLogger",value:function(){y.getInstance().start()}},{key:"setNetworkLogsBlacklist",value:function(e){y.getInstance().setBlacklist(e)}},{key:"setNetworkLogPropsToIgnore",value:function(e){y.getInstance().setFilters(e)}},{key:"setReplayOptions",value:function(e){th.getInstance().setOptions(e)}},{key:"close",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];Zt.getInstance().hideWidget(e)}},{key:"open",value:function(){Zt.getInstance().setAppMode("widget"),Zt.getInstance().showWidget()}},{key:"trackEvent",value:function(e,t){it.getInstance().logEvent(e,t)}},{key:"logEvent",value:function(e,t){it.getInstance().logEvent(e,t)}},{key:"preFillForm",value:function(e){var t=k(e);Mh.getInstance().formPreFill=t,Zt.getInstance().sendMessage({name:"prefill-form-data",data:t},!0)}},{key:"on",value:function(e,t){Tn.on(e,t)}},{key:"enableShortcuts",value:function(e){e?Eh.getInstance().start():Eh.getInstance().stop()}},{key:"showFeedbackButton",value:function(e){a.getInstance().toggleFeedbackButton(e)}},{key:"setAppVersionCode",value:function(e){nn.setAppVersionCode(e)}},{key:"setAppBuildNumber",value:function(e){nn.setAppBuildNumber(e)}},{key:"setWSApiUrl",value:function(e){et.getInstance().wsApiUrl=e}},{key:"setApiUrl",value:function(e){et.getInstance().apiUrl=e}},{key:"setBannerUrl",value:function(e){qh.getInstance().setBannerUrl(e)}},{key:"setModalUrl",value:function(e){Kh.getInstance().setModalUrl(e)}},{key:"setFrameUrl",value:function(e){Zt.getInstance().frameUrl=e}},{key:"setTicketAttribute",value:function(e,t){xn.getInstance().setTicketAttribute(e,t)}},{key:"unsetTicketAttribute",value:function(e){xn.getInstance().unsetTicketAttribute(e)}},{key:"clearTicketAttributes",value:function(){xn.getInstance().clearTicketAttributes()}},{key:"attachCustomData",value:function(e){xn.getInstance().attachCustomData(e)}},{key:"setCustomData",value:function(e,t){xn.getInstance().setCustomData(e,t)}},{key:"removeCustomData",value:function(e){xn.getInstance().removeCustomData(e)}},{key:"clearCustomData",value:function(){xn.getInstance().clearCustomData()}},{key:"playSound",value:function(e){tf.playSound(e)}},{key:"showTabNotificationBadge",value:function(e){var t=jh.getInstance();t.showNotificationBadge=e,t.updateTabBarNotificationCount()}},{key:"setLanguage",value:function(t){kh.getInstance().setOverrideLanguage(t),e.getInstance().initialized&&setTimeout((function(){e.getInstance().softReInitialize(),e.updateContact({lang:t})}),1e3)}},{key:"registerCustomAction",value:function(e){Dn.registerCustomAction(e)}},{key:"triggerCustomAction",value:function(e){Dn.triggerCustomAction(e)}},{key:"setStyles",value:function(e,t,n){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"#ffffff",r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:20,i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:20,s=arguments.length>6&&void 0!==arguments[6]?arguments[6]:20,l=arguments.length>7&&void 0!==arguments[7]?arguments[7]:a.FEEDBACK_BUTTON_BOTTOM_LEFT;E((function(){!function(e,t,n,o,r,i,s,l){var c=d(e),p=d(n),h=d(r),f=d(t),m="#ffffff"===h,g=u(t,"#ffffff"===f?-35:-15),v=u(r,m?100:-120),y=u(r,m?30:-12),b=u(r,m?80:-30),w=(o=parseInt(o,10),Math.round(1.05*o)),k=Math.round(.8*o),x=Math.round(.6*o),S=Math.round(.4*o),C=Math.round(.25*o),I=57+s;l===a.FEEDBACK_BUTTON_CLASSIC_BOTTOM?I=s+15:(l&&l.includes("CLASSIC")||l===a.FEEDBACK_BUTTON_NONE)&&(I=s);var E='\n .gleap-font, .gleap-font * {\n font-style: normal;\n font-variant-caps: normal;\n font-variant-ligatures: normal;\n font-variant-numeric: normal;\n font-variant-east-asian: normal;\n font-weight: normal;\n font-stretch: normal;\n font-size: 100%;\n line-height: 1;\n font-family: system-ui, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";\n }\n .gleap-input-highlight {\n box-shadow: 0 0 0 3px '.concat(e," !important;\n }\n .gleap-frame-container {\n right: ").concat(i,"px;\n bottom: ").concat(61+s,"px;\n width: calc(100% - 40px);\n max-width: 410px;\n position: fixed;\n z-index: ").concat(2147483631,";\n visibility: visible;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.16);\n border-radius: ").concat(k,"px;\n overflow: hidden;\n animation-duration: .3s;\n animation-fill-mode: both;\n animation-name: gleapFadeInUp;\n user-select: none;\n pointer-events: none;\n transition: max-width 0.3s ease-out;\n }\n\n .gleap-admin-highlight {\n box-shadow: 0px 0px 0px 4px red;\n }\n\n :root {\n --gleap-margin-top: 50px;\n }\n\n .gleap-tooltip-anchor {\n position: relative;\n display: inline-block;\n float: left;\n max-width: 0px;\n width: 17px;\n }\n\n .gleap-tooltip-hotspot {\n position: absolute;\n display: block;\n width: 17px;\n height: 17px;\n cursor: pointer;\n top: 0px;\n left: 0px;\n }\n\n @keyframes gleap-pulse {\n 0% {\n transform: scale(0);\n opacity: 0.25;\n }\n 45% {\n transform: scale(2.5);\n opacity: 0;\n }\n 100% {\n transform: scale(0);\n opacity: 0;\n }\n }\n\n .gleap-tooltip-hotspot-animation {\n position: absolute;\n border-radius: 17px;\n opacity: 0.25;\n display: block;\n width: 17px;\n height: 17px;\n cursor: pointer;\n top: 0px;\n left: 0px;\n animation: gleap-pulse 5s infinite;\n }\n\n .gleap-tooltip-hotspot svg {\n width: 17px;\n height: 17px;\n object-fit: contain;\n display: block;\n }\n\n .gleap-tooltip-inner {\n position: relative;\n overflow: visible;\n font-size: 14px;\n font-weight: normal;\n color: #000;\n line-height: 1.3;\n }\n\n .gleap-tooltip {\n position: absolute;\n background-color: #fff;\n color: #000;\n font-size: 15px;\n line-height: 18px;\n padding: 16px;\n padding-top: 8px;\n padding-bottom: 8px;\n border-radius: 4px;\n max-width: min(350px, 80vw);\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n opacity: 0;\n visibility: hidden;\n transition: opacity 0.2s, visibility 0.2s;\n z-index: ").concat(2147483700,";\n }\n\n .gleap-tooltip a {\n color: ").concat(e,";\n text-decoration: underline;\n display: inline !important;\n margin: 0px !important;\n padding: 0px !important;\n word-break: break-word;\n }\n\n .gleap-tooltip ul {\n padding-left: 16px;\n }\n\n .gleap-tooltip b {\n font-weight: 600;\n }\n\n .gleap-tooltip h2 {\n font-size: 18px;\n line-height: 20px;\n font-weight: 600;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip h3 {\n font-size: 16px;\n line-height: 18px;\n font-weight: 600;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip p {\n padding: 0px;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip img {\n max-width: 100%;\n max-height: 300px;\n width: 100%;\n height: auto;\n object-fit: cover;\n margin-top: 8px;\n margin-bottom: 8px;\n border-radius: 4px;\n }\n\n .gleap-tooltip iframe,\n .gleap-tooltip video {\n max-width: 100%;\n width: 100%;\n height: auto;\n min-height: 200px;\n display: block;\n border: none;\n outline: none;\n padding: 0px;\n margin-top: 8px;\n margin-bottom: 8px;\n border-radius: 4px;\n }\n\n .gleap-tooltip-arrow {\n position: absolute;\n width: 20px;\n height: 20px;\n }\n\n .gleap-tooltip-arrow svg {\n width: 20px;\n height: 20px;\n object-fit: contain;\n }\n\n .gleap-b-frame {\n width: 100%;\n height: 100%;\n border: none;\n pointer-events: auto;\n padding: 0px;\n margin: 0px;\n }\n\n .gleap-b-shown {\n transition: margin 0.3s ease-out;\n margin-top: var(--gleap-margin-top);\n position: relative;\n z-index: 10000;\n }\n\n .gleap-b-f {\n margin-top: 0px;\n }\n\n .gleap-b {\n display: none;\n position: absolute;\n top: calc(-1 * var(--gleap-margin-top));\n left: 0px;\n width: 100vw;\n height: var(--gleap-margin-top);\n z-index: ").concat(2147483699,";\n }\n\n @keyframes gleapSlideIn {\n from {\n top: calc(-1 * var(--gleap-margin-top));\n }\n to {\n top: 10px;\n }\n }\n\n .gleap-b-f .gleap-b {\n position: fixed;\n top: 10px;\n animation: gleapSlideIn .25s ease-out forwards;\n max-width: 800px;\n width: calc(100% - 20px);\n left: 50%;\n z-index: ").concat(2147483699,";\n transform: translateX(-50%);\n border-radius: ").concat(S,"px;\n overflow: hidden;\n box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.15), 0px 5px 5px rgba(0, 0, 0, 0.05);\n }\n\n .gleap-b-shown .gleap-b {\n display: block;\n }\n\n .gleap-image-view {\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n z-index: ").concat(2147483699,";\n background-color: ").concat(h,"cc;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .gleap-image-view-image {\n width: 90%;\n height: auto;\n max-width: 90%;\n max-height: 90%;\n object-fit: contain;\n }\n\n .gleap-image-view-close {\n position: fixed;\n top: 20px;\n right: 20px;\n width: 32px;\n height: 32px;\n opacity: 0.8;\n z-index: ").concat(2147483740,";\n box-shadow: 0px 5px 18px rgba(0, 0, 0, 0.16);\n cursor: pointer;\n }\n\n .gleap-image-view-close:hover {\n opacity: 1;\n }\n\n .gleap-image-view-close svg path {\n fill: ").concat(r,";\n }\n\n [dir=rtl].gleap-frame-container {\n right: auto;\n left: ").concat(i,"px;\n bottom: ").concat(61+s,'px;\n }\n\n .gleap-frame-container--loading iframe {\n opacity: 0;\n }\n\n .gleap-frame-container--loading::before {\n content: " ";\n position: fixed;\n top: 0px;\n left: 0px;\n right: 0px;\n height: 100%;\n max-height: 380px;\n background: linear-gradient(\n 130deg,\n ').concat(g," 0%,\n ").concat(t,' 100%\n );\n }\n \n .gleap-frame-container--loading::after {\n content: " ";\n position: fixed;\n top: 0px;\n left: 0px;\n right: 0px;\n height: 100%;\n height: 100%;\n max-height: 380px;\n background: linear-gradient(\n 180deg,\n transparent 60%,\n ').concat(r,"1A 70%,\n ").concat(r," 100%\n );\n }\n\n .gleap-frame-container--loading-nogradient::before {\n max-height: 340px;\n background: ").concat(t," !important;\n }\n\n .gleap-frame-container--loading-nofade::after {\n display: none !important;\n }\n\n .gleap-frame-container--survey {\n bottom: ").concat(s,"px !important;\n }\n\n .gleap-frame-container--extended {\n max-width: 690px !important;\n }\n\n .gleap-frame-container--survey-full {\n position: fixed;\n top: 0 !important;\n left: 0 !important;\n bottom: 0 !important;\n right: 0 !important;\n width: 100vw !important;\n max-width: 100vw !important;\n height: 100vh;\n height: 100dvh !important;\n background-color: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(6px);\n display: flex !important;\n justify-content: center !important;\n align-items: center !important;\n max-height: 100vh;\n max-height: 100dvh !important;\n border-radius: 0 !important;\n animation-name: none !important;\n }\n\n .gleap-frame-container--survey-full .gleap-frame-container-inner {\n max-width: 640px !important;\n width: calc(100% - 24px);\n border-radius: ").concat(k,"px;\n overflow: hidden;\n }\n\n .gleap-frame-container--classic {\n right: ").concat(i,"px;\n bottom: ").concat(s,"px;\n }\n\n [dir=rtl].gleap-frame-container--classic {\n right: auto;\n left: ").concat(i,"px;\n bottom: ").concat(s,"px;\n }\n\n .gleap-frame-container--no-button {\n bottom: ").concat(s,"px;\n }\n\n [dir=rtl].gleap-frame-container--classic-left {\n bottom: ").concat(s,"px;\n }\n\n .gleap-frame-container--classic-left {\n right: auto;\n left: ").concat(i,"px;\n bottom: ").concat(s,"px;\n }\n\n [dir=rtl].gleap-frame-container--classic-left {\n left: auto;\n right: ").concat(i,"px;\n bottom: ").concat(s,"px;\n }\n\n .gleap-frame-container--modern-left {\n right: auto;\n left: ").concat(i,"px;\n bottom: ").concat(61+s,"px;\n }\n\n [dir=rtl].gleap-frame-container--modern-left {\n left: auto;\n right: ").concat(i,"px;\n bottom: ").concat(61+s,"px;\n }\n\n .gleap-frame-container--animate {\n pointer-events: auto !important;\n }\n\n @keyframes gleapFadeInUp {\n from {\n opacity: 0;\n transform: translate3d(0, 100%, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n\n @keyframes gleapFadeInUpMobile {\n from {\n opacity: 0;\n transform: translate3d(0, 10%, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n\n .gleap-notification-container {\n position: fixed;\n bottom: ").concat(I,"px;\n right: ").concat(i,"px;\n z-index: ").concat(2147483630,";\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n width: 100%;\n max-width: min(340px, 80vw);\n }\n\n .gleap-notification-container--left {\n left: ").concat(4+i,"px;\n right: initial !important;\n }\n\n [dir=rtl].gleap-notification-container {\n left: ").concat(4+i,"px;\n right: initial !important;\n }\n\n [dir=rtl].gleap-notification-container--left {\n left: initial !important;\n right: ").concat(i,"px !important;\n align-items: flex-start !important;\n }\n\n .gleap-notification-container--no-button {\n bottom: ").concat(s,"px;\n }\n\n .gleap-notification-item {\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n\n .gleap-notification-close {\n border-radius: 100%;\n width: 28px;\n height: 28px;\n background-color: ").concat(v,";\n display: flex;\n justify-content: center;\n align-items: center;\n margin-bottom: 8px;\n cursor: pointer;\n visibility: hidden;\n pointer-events: none;\n }\n\n .gleap-notification-container:hover .gleap-notification-close {\n visibility: visible;\n pointer-events: auto;\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-notification-close {\n visibility: visible;\n pointer-events: auto;\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n }\n\n .gleap-notification-close svg {\n width: 45%;\n height: 45%;\n object-fit: contain;\n fill: ").concat(r,";\n }\n\n .gleap-notification-item-checklist-container {\n display: flex;\n animation: fadeIn;\n animation-duration: .45s;\n background-color: ").concat(r,";\n border-radius: ").concat(v,";\n box-sizing: border-box;\n cursor: pointer;\n flex-direction: column;\n overflow: hidden;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ").concat(x,"px;\n margin-bottom: 12px;\n }\n\n .gleap-notification-item-checklist-content {\n align-items: flex-start;\n display: flex;\n flex-direction: column;\n padding: 15px;\n width: 100%;\n width: min(310px, 70vw);\n max-width: min(310px, 70vw);\n }\n\n .gleap-notification-item-checklist-content-title {\n color: ").concat(h,";\n font-size: 15px;\n font-weight: 500;\n line-height: 21px;\n margin-bottom: 10px;\n max-width: 100%;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .gleap-notification-item-checklist-content-progress {\n width: 100%;\n height: 8px;\n border-radius: 8px;\n background-color: ").concat(y,";\n }\n\n .gleap-notification-item-checklist-content-progress-inner {\n height: 100%;\n border-radius: 8px;\n background-color: ").concat(e,";\n }\n\n .gleap-notification-item-checklist-content-next {\n color: ").concat(v,";\n font-size: 15px;\n font-weight: normal;\n line-height: 21px;\n margin-top: 10px;\n max-width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: flex;\n align-items: center;\n }\n\n .gleap-notification-item-checklist-content-next svg {\n height: 18px;\n margin-right: 5px;\n width: auto;\n }\n\n .gleap-notification-item-checklist-content-next b {\n font-size: 15px;\n font-weight: normal;\n color: ").concat(h,";\n }\n\n .gleap-notification-item-news {\n width: 100%;\n }\n\n .gleap-news-pagination {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 10px;\n width: 100%;\n }\n\n .gleap-news-page-indicator {\n font-size: 12px;\n color: ").concat(v,";\n }\n\n .gleap-news-next-button {\n background-color: ").concat(e,";\n color: ").concat(c,";\n border-radius: ").concat(C,"px;\n box-sizing: border-box;\n padding: 5px 10px;\n font-size: 14px;\n font-weight: bold;\n line-height: 21px;\n border: none;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: none !important;\n outline: none !important;^\n }\n\n .gleap-notification-item-news-content {\n align-items: flex-start;\n display: flex;\n flex-direction: column;\n padding: 15px;\n }\n\n .gleap-notification-item-news-preview {\n color: ").concat(v,";\n font-size: 14px;\n line-height: 21px;\n font-weight: 400;\n overflow-wrap: break-word;\n word-break: break-word;\n display: block;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .gleap-notification-item-news-sender {\n display: flex;\n align-items: center;\n color: ").concat(v,";\n font-size: 15px;\n line-height: 21px;\n font-weight: 400;\n }\n \n .gleap-notification-item-news-content-title {\n color: ").concat(h,";\n font-size: 15px;\n font-weight: 500;\n line-height: 21px;\n margin-bottom: 6px;\n max-width: 100%;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n cursor: pointer;\n }\n\n .gleap-notification-item-news-sender img {\n border-radius: 100%;\n height: 20px;\n margin-right: 8px;\n object-fit: cover;\n width: 20px;\n }\n\n [dir=rtl] .gleap-notification-item-news-sender img {\n margin-left: 8px;\n margin-right: 0px !important;\n }\n\n .gleap-notification-item-news-container {\n display: flex;\n animation: fadeIn;\n animation-duration: .45s;\n background-color: ").concat(r,";\n border-radius: ").concat(v,";\n box-sizing: border-box;\n flex-direction: column;\n overflow: hidden;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ").concat(x,"px;\n margin-bottom: 12px;\n }\n\n .gleap-notification-item-news-image {\n background-color: ").concat(v,";\n height: 170px;\n max-height: 170px;\n object-fit: cover;\n width: 100%;\n cursor: pointer;\n }\n \n .gleap-notification-item-news-content-title:hover {\n color: ").concat(e,";\n }\n\n .gleap-notification-item {\n display: flex;\n align-items: flex-end;\n cursor: pointer;\n }\n\n .gleap-notification-item img {\n width: 32px;\n height: 32px;\n min-width: 32px;\n border-radius: 100%;\n object-fit: cover;\n margin-right: 8px;\n margin-bottom: 12px;\n cursor: pointer;\n }\n\n [dir=rtl] .gleap-notification-item img {\n margin-left: 8px;\n margin-right: 0px !important;\n }\n\n .gleap-notification-item-container {\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ").concat(x,"px;\n border-bottom-left-radius: 0px;\n padding: 20px;\n background-color: ").concat(r,";\n margin-bottom: 12px;\n cursor: pointer;\n font-size: 15px;\n line-height: 21px;\n color: ").concat(h,';\n position: relative;\n }\n\n .gleap-notification-item-container::after {\n content: " ";\n position: absolute;\n bottom: 0px;\n width: 0px;\n height: 0px;\n left: -6px;\n border-style: solid;\n border-width: 0px 0px 10px 6px;\n border-color: transparent transparent ').concat(r,";\n }\n\n .gleap-notification-item-sender {\n color: ").concat(v,";\n line-height: 20px;\n }\n\n .gleap-notification-item-content {\n line-height: 20px;\n color: ").concat(h,";\n margin-top: 4px;\n min-width: min(200px, 50vw);\n word-wrap: break-word;\n word-break: break-word;\n }\n\n .gleap-frame-container-inner {\n position: relative;\n width: 100%;\n height: calc(100vh - ").concat(84+s,"px);\n max-height: ").concat(700,'px;\n }\n\n .gleap-frame-container--survey .gleap-frame-container-inner {\n height: calc(100vh - 40px);\n }\n \n .gleap-frame-container-inner:before {\n content: " ";\n position: absolute;\n width: 100%;\n height: calc(100% - ').concat(k,"px);\n top: ").concat(k,"px;\n background-color: ").concat(r,";\n z-index: -1;\n }\n \n .gleap-frame-container iframe {\n height: 100% !important;\n width: 100% !important;\n max-width: 100% !important;\n display: block !important;\n pointer-events: auto !important;\n }\n \n .gleap-frame-container--hidden {\n display: none !important;\n pointer-events: none;\n animation: none !important;\n }\n \n .bb-feedback-button {\n margin: 0px;\n position: fixed;\n bottom: ").concat(s,"px;\n right: ").concat(i,"px;\n border-radius: 30px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n background-color: transparent;\n color: #000000;\n z-index: ").concat(2147483630,";\n box-sizing: border-box;\n display: flex;\n align-items: center;\n padding: 0px;\n }\n\n [dir=rtl].bb-feedback-button {\n bottom: ").concat(s,"px;\n right: auto;\n left: ").concat(i,"px;\n }\n \n .bb-feedback-button--bottomleft {\n bottom: ").concat(s,"px;\n right: auto;\n left: ").concat(i,"px;\n }\n\n [dir=rtl].bb-feedback-button--bottomleft {\n bottom: ").concat(s,"px;\n right: ").concat(i,'px;\n left: auto;\n }\n \n .bb-feedback-button--disabled {\n display: none !important;\n }\n\n .bb-feedback-button--hidden {\n display: none !important;\n }\n \n .bb-feedback-button-text {\n padding: 8px 12px;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n background-color: #fff;\n border-radius: 8px;\n box-shadow: 0px 0px 14px 0px rgba(0, 0, 0, 0.15);\n position: relative;\n z-index: 99;\n }\n \n .bb-feedback-button-text:before {\n content: "";\n position: absolute;\n box-shadow: rgba(0, 0, 0, 0.04) 6px 6px 5px;\n transform: rotate(315deg);\n bottom: 16px;\n right: -4px;\n border-width: 10px;\n border-style: solid;\n border-color: transparent #fff #fff transparent;\n }\n \n .bb-feedback-button--bottomleft .bb-feedback-button-text:before {\n display: none;\n }\n \n .bb-feedback-button-text:after {\n content: "";\n position: absolute;\n bottom: 12px;\n right: 0px;\n background-color: #fff;\n width: 5px;\n height: 30px;\n }\n \n .bb-feedback-button-text-title {\n font-family: sans-serif;\n font-size: 14px;\n color: #666;\n line-height: 18px;\n max-width: 220px;\n }\n \n .bb-feedback-button-text-title b {\n color: #000000;\n font-weight: 600;\n }\n\n .bb-notification-bubble {\n position: absolute;\n top: -5px;\n right: -5px;\n min-width: 12px;\n padding: 0px 4px;\n height: 20px;\n min-width: 20px;\n border-radius: 20px;\n background-color: red;\n color: #fff;\n font-size: 11px;\n font-family: sans-serif;\n text-align: center;\n line-height: 20px;\n }\n\n .bb-notification-bubble--hidden {\n display: none;\n }\n \n .bb-feedback-button-icon {\n width: 48px;\n height: 48px;\n border-radius: 48px;\n background-color: #485bff;\n transition: box-shadow, transform 0.2s ease-in-out;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n position: relative;\n }\n \n .bb-feedback-button-classic {\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n top: 50%;\n right: 0px;\n position: fixed;\n transform: rotate(-90deg) translate(50%, -50%);\n transform-origin: 100% 50%;\n padding: 9px 20px;\n text-align: center;\n background-color: #485bff;\n border-top-left-radius: 8px;\n border-top-right-radius: 8px;\n font-family: sans-serif;\n font-size: 16px;\n color: #fff;\n box-shadow: 0px 0px 14px 0px rgba(0, 0, 0, 0.25);\n }\n\n [dir=rtl].bb-feedback-button .bb-feedback-button-classic {\n top: 50%;\n left: 0px;\n right: auto;\n transform: rotate(90deg) translate(-50%, -100%);\n transform-origin: 0% 0%;\n }\n \n .bb-feedback-button-classic--left {\n top: 50%;\n left: 0px;\n right: auto;\n transform: rotate(90deg) translate(-50%, -100%);\n transform-origin: 0% 0%;\n }\n\n [dir=rtl].bb-feedback-button .bb-feedback-button-classic--left {\n top: 50%;\n right: 0px;\n left: auto;\n transform: rotate(-90deg) translate(50%, -50%);\n transform-origin: 100% 50%;\n }\n \n .bb-feedback-button-classic--bottom {\n top: auto;\n bottom: 0px;\n transform: none;\n right: ').concat(i,"px;\n left: auto;\n }\n \n [dir=rtl].bb-feedback-button .bb-feedback-button-classic--bottom {\n top: auto;\n bottom: 0px;\n transform: none;\n left: ").concat(i,"px;\n right: auto;\n }\n\n .bb-feedback-button--classic-button-style {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n \n .bb-feedback-button--open.bb-feedback-button--classic-button-style {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: bbFadeOutRight;\n }\n \n .bb-feedback-button .bb-logo-logo {\n position: absolute;\n width: 30px;\n height: 30px;\n top: 9px;\n left: 9px;\n object-fit: contain;\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-name: bbZoomIn;\n }\n \n .bb-feedback-button .bb-logo-arrowdown {\n position: absolute;\n width: 14px;\n height: 14px;\n top: 17px;\n left: 17px;\n object-fit: contain;\n animation-duration: 0.3s;\n animation-fill-mode: both;\n }\n \n .bb-feedback-button .bb-logo-arrowdown {\n animation-name: bbZoomOut;\n }\n \n .bb-feedback-button--open .bb-logo-arrowdown {\n animation-name: bbZoomIn;\n }\n \n .bb-feedback-button--open .bb-logo-logo {\n animation-name: bbZoomOut;\n }\n \n .bb-feedback-button-icon:hover {\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.25), 0px 0px 20px rgba(0, 0, 0, 0.2);\n transform: scale(1.1);\n }\n \n .bb-feedback-button--open .bb-feedback-button-text {\n animation-name: bbFadeOutDown;\n }\n \n .bb-feedback-button--open .bb-feedback-button-icon {\n display: flex;\n }\n \n .bb-capture-svg {\n position: fixed;\n z-index: ").concat(2147483614,";\n top: 0px;\n left: 0px;\n right: 0px;\n width: 100%;\n height: 100%;\n padding: 0px;\n margin: 0px;\n cursor: crosshair;\n }\n\n .bb-capture-svg--preview {\n cursor: auto !important;\n }\n \n .bb-rec-on-circle {\n animation-name: bbRecIconFade;\n animation-duration: 2s;\n animation-iteration-count: infinite;\n animation-direction: alternate;\n }\n \n .bb-rec-on-cont {\n animation-name: bbRecIconContFade;\n animation-duration: 2s;\n animation-iteration-count: infinite;\n animation-direction: alternate;\n }\n \n .bb-capture-editor-drag-info {\n position: fixed;\n top: -200px;\n left: 0px;\n z-index: ").concat(2147483616,";\n transition: opacity 0.3s ease-in-out;\n }\n \n .bb-capture-editor-drag-info svg {\n width: 24px;\n height: 24px;\n }\n \n .bb-capture-editor-borderlayer {\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n border: 4px solid ").concat(e,";\n cursor: crosshair;\n z-index: ").concat(2147483610,";\n box-sizing: border-box;\n pointer-events: none;\n }\n \n .bb-capture-editor-notrecording .bb-capture-editor-borderlayer {\n background-color: rgba(0, 0, 0, 0.8);\n }\n\n .bb-capture-editor-recording .bb-capture-editor-borderlayer {\n border: 4px solid #eb144c !important;\n }\n \n .bb-capture-editor-recording .bb-capture-dismiss {\n display: none;\n }\n \n .bb-capture-editor-item-inactive {\n opacity: 0.3;\n cursor: not-allowed !important;\n }\n \n .bb-capture-editor-notrecording .bb-capture-toolbar-drawingitem {\n opacity: 0.3;\n cursor: not-allowed !important;\n }\n \n .bb-capture-editor-notrecording .bb-capture-editor-drag-info {\n display: none;\n }\n \n .bb-capture-editor-notrecording .bb-capture-svg {\n pointer-events: none !important;\n }\n \n .bb-capture-toolbar {\n position: fixed;\n top: 20px;\n left: 50%;\n transform: translateX(-50%);\n z-index: ").concat(2147483618,";\n background-color: #fff;\n padding: 5px;\n display: flex;\n align-items: center;\n border-radius: 8px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n transition: opacity 0.3s ease-in-out;\n }\n \n .bb-capture-dismiss {\n position: fixed;\n top: 0px;\n right: 0px;\n z-index: ").concat(2147483618,";\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n width: 36px;\n height: 36px;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: ").concat(e,";\n border-bottom-left-radius: ").concat(C,"px;\n }\n\n [dir=rtl] .bb-capture-dismiss {\n top: 0px;\n left: 0px;\n right: auto;\n border-bottom-left-radius: 0px !important;\n border-bottom-right-radius: ").concat(C,"px;\n }\n \n .bb-capture-dismiss svg path {\n fill: ").concat(c,';\n }\n \n .bb-capture-dismiss svg {\n width: 20px;\n height: 20px;\n object-fit: contain;\n }\n \n .bb-capture-button-next {\n font-family: sans-serif;\n box-sizing: border-box;\n font-weight: 600;\n text-align: center;\n width: auto;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n margin: 0px;\n line-height: 36px;\n padding: 0px 12px;\n font-size: 15px;\n margin-left: 12px;\n }\n\n [dir=rtl].bb-capture-editor .bb-capture-button-next {\n margin-left: auto;\n margin-right: 12px;\n }\n \n .bb-capture-toolbar-item-spacer {\n width: 1px;\n height: 38px;\n min-width: 1px;\n margin: 0px 5px;\n }\n \n .bb-capture-toolbar-item {\n width: 42px;\n height: 38px;\n min-width: 42px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n position: relative;\n margin-right: 5px;\n }\n\n .drag-handle-item {\n cursor: grab !important;\n width: 34px;\n min-width: 34px;\n }\n\n .drag-handle-item svg {\n width: 18px !important;\n height: 18px !important;\n }\n \n .bb-capture-toolbar-item svg {\n width: 23px;\n height: 23px;\n object-fit: contain;\n }\n \n .bb-capture-toolbar-item-selectedcolor {\n border-radius: 100%;\n width: 20px;\n height: 20px;\n background-color: #db4035;\n }\n \n .bb-capture-toolbar-item[data-type="undo"] svg {\n width: 18px;\n height: 18px;\n }\n \n .bb-capture-toolbar-item[data-active="true"] {\n position: relative;\n }\n \n .bb-capture-preview {\n display: none;\n background-color: rgba(0, 0, 0, 0.6);\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n justify-content: center;\n align-items: center;\n z-index: ').concat(2147483620,";\n }\n \n .bb-capture-preview-inner {\n background-color: #fff;\n padding: 0px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n border-radius: 8px;\n flex-direction: column;\n max-width: 640px;\n width: 100%;\n margin: 20px;\n }\n \n .bb-capture-preview-inner video {\n border-radius: 8px 8px 0px 0px;\n display: block;\n border: 0px;\n outline: none;\n width: 100%;\n max-height: 60vh;\n }\n \n .bb-capture-preview-buttons {\n display: flex;\n justify-content: space-between;\n padding: 14px;\n }\n \n .bb-capture-preview-retrybutton {\n font-family: sans-serif;\n border-radius: 21px;\n box-sizing: border-box;\n padding: 12px 26px;\n font-size: 16px;\n line-height: 19px;\n font-weight: 600;\n text-align: center;\n margin-top: 0px;\n margin-bottom: 0px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-preview-sendbutton {\n font-family: sans-serif;\n border-radius: 21px;\n box-sizing: border-box;\n padding: 12px 26px;\n font-size: 16px;\n line-height: 19px;\n font-weight: 600;\n text-align: center;\n margin-top: 0px;\n margin-bottom: 0px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-preview-retrybutton:hover,\n .bb-capture-preview-sendbutton:hover {\n opacity: 0.9;\n }\n \n .bb-capture-toolbar-item-recording {\n margin-right: 0px;\n }\n \n .bb-capture-toolbar-item-recording svg {\n width: 33px;\n height: 33px;\n }\n \n .bb-capture-toolbar-item-colorpicker {\n position: fixed;\n top: 70px;\n left: 50%;\n transform: translateX(-50%);\n z-index: ").concat(2147483618,';\n background-color: #fff;\n display: none;\n padding: 10px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n border-radius: 8px;\n }\n \n .bb-capture-toolbar-item-color {\n width: 20px;\n height: 20px;\n border-radius: 100%;\n margin-right: 12px;\n box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.15);\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-toolbar-item-color:hover {\n box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.25);\n }\n \n .bb-capture-toolbar-item-color:last-of-type {\n margin-right: 0px;\n }\n \n [dir=rtl].bb-capture-editor .bb-capture-toolbar-item-color {\n margin-right: auto;\n margin-left: 12px;\n }\n \n [dir=rtl].bb-capture-editor .bb-capture-toolbar-item-color:last-of-type {\n margin-right: auto;\n margin-left: 0px;\n }\n \n .bb-capture-toolbar-item-recording[data-active="true"] svg:first-of-type {\n display: none;\n }\n \n .bb-capture-toolbar-item-recording[data-active="true"] svg:nth-of-type(2) {\n display: block;\n }\n \n .bb-capture-toolbar-item-recording[data-active="false"] svg:first-of-type {\n display: block;\n }\n \n .bb-capture-toolbar-item-recording[data-active="false"] svg:nth-of-type(2) {\n display: none;\n }\n \n .bb-capture-toolbar-item--active {\n background-color: #eee;\n }\n \n .bb-capture-toolbar-item:hover svg {\n opacity: 1;\n }\n \n .bb-capture-toolbar-item--active {\n background-color: #f8f8f8;\n }\n \n .bb-capture-toolbar-item--active svg {\n opacity: 1;\n }\n \n .bb-capture-toolbar-item--inactivecross::before {\n content: "";\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n height: 3px;\n width: 26px;\n margin: auto;\n border-radius: 4px;\n background-color: #e80000;\n transform: rotate(45deg);\n }\n \n .bb-capture-toolbar-item--inactivecross svg {\n fill: #eee;\n }\n \n .bb-capture-toolbar-item-timer {\n text-align: left;\n line-height: 32px;\n font-size: 14px;\n font-family: sans-serif;\n margin: 5px;\n min-width: 40px;\n display: none;\n }\n \n .bb-capture-toolbar-item .bb-tooltip {\n background-color: #555;\n color: #fff;\n visibility: hidden;\n font-size: 14px;\n font-family: sans-serif;\n text-align: center;\n padding: 5px 10px;\n position: absolute;\n z-index: 1;\n top: 45px;\n left: 0px;\n transform: translateX(calc(-50% + 21px));\n opacity: 0;\n transition: opacity 0.3s;\n white-space: nowrap;\n }\n \n .bb-capture-toolbar-item .bb-tooltip::after {\n content: "";\n position: absolute;\n bottom: 100%;\n left: 50%;\n margin-left: -5px;\n border-width: 5px;\n border-style: solid;\n transform: rotate(180deg);\n border-color: #555 transparent transparent transparent;\n }\n \n .bb-capture-toolbar-item:hover .bb-tooltip {\n visibility: visible;\n opacity: 1;\n }\n \n .bb-capture-options {\n display: none;\n }\n \n .bb-capture-options--active {\n display: flex;\n }\n\n @keyframes bbFadeOutRight {\n from {\n opacity: 1;\n }\n \n to {\n opacity: 0;\n }\n }\n \n @keyframes bbFadeOutDown {\n from {\n opacity: 1;\n }\n \n to {\n opacity: 0;\n transform: translate3d(0, 100%, 0);\n }\n }\n \n @keyframes bbFadeInOpacity {\n from {\n opacity: 0;\n }\n \n to {\n opacity: 1;\n }\n }\n \n @keyframes bbZoomOut {\n from {\n opacity: 1;\n }\n \n 50% {\n opacity: 0;\n transform: scale3d(0.3, 0.3, 0.3);\n }\n \n to {\n opacity: 0;\n }\n }\n \n @keyframes bbZoomIn {\n from {\n opacity: 0;\n transform: scale3d(0.3, 0.3, 0.3);\n }\n \n 50% {\n opacity: 1;\n }\n }\n \n @keyframes bbRecIconContFade {\n 0% {\n fill: #b10802;\n }\n 50% {\n fill: #ff0000;\n }\n 100% {\n fill: #b10802;\n }\n } \n .bb-capture-preview-retrybutton {\n color: ').concat(h,";\n border-radius: ").concat(w,"px;\n background-color: ").concat(y,";\n }\n .bb-capture-preview-retrybutton:hover {\n background-color: ").concat(b,";\n }\n @keyframes bb-suc-fill {\n 100% {\n box-shadow: inset 0px 0px 0px 30px ").concat(e,";\n }\n }\n .bb-capture-toolbar-item-spacer {\n background-color: ").concat(y,";\n }\n .bb-tooltip {\n border-radius: ").concat(S,"px;\n }\n @keyframes bbRecIconFade {\n 0% {\n fill: transparent;\n }\n 50% {\n fill: ").concat(b,";\n }\n 100% {\n fill: transparent;\n }\n }\n .bb-capture-preview-sendbutton {\n color: ").concat(c,";\n background-color: ").concat(e,";\n border-radius: ").concat(w,"px;\n }\n .bb-capture-button-next {\n color: ").concat(c,";\n background-color: ").concat(e,";\n border-radius: ").concat(C,"px;\n }\n .bb-capture-preview-inner {\n background-color: ").concat(r,";\n border-radius: ").concat(S,"px;\n }\n .bb-capture-toolbar-item-timer {\n color: ").concat(v,";\n }\n .bb-svg-path {\n fill: ").concat(h,";\n }\n .bb-capture-toolbar-item {\n border-radius: ").concat(S,"px;\n }\n .bb-capture-toolbar {\n background-color: ").concat(r,";\n border-radius: ").concat(S,"px;\n }\n .bb-capture-toolbar-item-colorpicker {\n background-color: ").concat(r,";\n }\n .bb-capture-toolbar-item--active {\n background-color: ").concat(y,";\n }\n .bb-feedback-button-classic {\n border-top-left-radius: ").concat(S,"px;\n border-top-right-radius: ").concat(S,"px;\n }\n .bb-logo-logo--default path {\n fill: ").concat(p,";\n }\n .bb-logo-arrowdown {\n fill: ").concat(p,";\n }\n .bb-feedback-button-icon {\n background-color: ").concat(n,";\n }\n .bb-feedback-button-classic {\n background-color: ").concat(n,";\n color: ").concat(p,";\n }\n\n @media only screen and (max-width: 450px) {\n [dir=rtl].gleap-frame-container,\n .gleap-frame-container {\n left: 0px;\n right: 0px;\n width: 100vw;\n max-width: 100vw;\n min-height: 100vh;\n max-height: 100vh;\n min-height: 100dvh !important;\n max-height: 100dvh !important;\n top: 0px;\n bottom: 0px;\n border-radius: 0px;\n animation-name: gleapFadeInUpMobile;\n }\n\n .gleap-frame-container-inner {\n width: 100vw;\n height: 100%;\n }\n\n .gleap-frame-container:not(.gleap-frame-container--survey):not(.gleap-frame-container--survey-full) .gleap-frame-container-inner {\n max-height: calc(var(--glvh, 1vh) * 100) !important;\n }\n\n .gleap-frame-container--survey {\n height: auto !important;\n top: initial !important;\n bottom: 0px !important;\n min-height: initial !important;\n }\n\n .gleap-frame-container--survey .gleap-frame-container-inner {\n height: 100vh !important;\n }\n\n .bb-tooltip {\n display: none !important;\n }\n \n .bb-capture-toolbar-item-colorpicker {\n top: 75px;\n }\n \n .bb-capture-button-next {\n margin-left: auto;\n }\n \n .bb-capture-dismiss {\n display: none;\n }\n \n .bb-capture-toolbar {\n top: 15px;\n right: 15px;\n left: 15px;\n width: auto;\n transform: none;\n }\n\n .bb-capture-editor-drag-info {\n display: none;\n }\n \n .bb-capture-editor-borderlayer {\n border-width: 4px;\n }\n }\n \n @media print {\n .bb-feedback-button {\n display: none !important;\n }\n \n .gleap-frame-container {\n display: none !important;\n }\n }\n\n .gleap-tour-sender {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n margin-bottom: 10px;\n }\n\n .gleap-tour-sender-image {\n width: 32px;\n height: 32px;\n border-radius: 32px;\n margin-right: 10px;\n background-size: cover;\n background-repeat: no-repeat;\n }\n\n .gleap-tour-popover.gleap-tour-popover-post {\n min-width: 550px;\n max-width: 550px;\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-tour-popover.gleap-tour-popover-post {\n min-width: calc(100vw - 40px);\n max-width: calc(100vw - 40px);\n }\n }\n\n .gleap-tour-message,\n .gleap-tour-message p,\n .gleap-tour-message ul {\n color: ").concat(h,";\n }\n\n .gleap-tour-message h2 {\n font-weight: 600;\n font-size: 22px;\n }\n\n .gleap-tour-message h3 {\n font-weight: 600;\n font-size: 18px;\n }\n\n .gleap-tour-message p {\n line-height: 1.3;\n margin-bottom: 10px !important;\n margin-top: 10px !important;\n }\n\n .gleap-tour-message ul {\n line-height: 1.3;\n padding-left: 20px;\n margin-top: 10px !important;\n margin-bottom: 10px !important;\n }\n\n .gleap-tour-message {\n max-height: calc(80vh - 100px) !important;\n overflow-y: auto;\n min-width: 270px;\n }\n\n .gleap-tour-message::-webkit-scrollbar {\n width: 5px;\n }\n\n .gleap-tour-message::-webkit-scrollbar-track {\n border-radius: 0px;\n }\n \n .gleap-tour-message::-webkit-scrollbar-thumb {\n background: ").concat(b,"; \n border-radius: 5px;\n }\n\n .gleap-tour-message::-webkit-scrollbar-thumb:hover {\n background: ").concat(v,";\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-tour-message {\n min-width: auto !important;\n }\n }\n\n .gleap-tour-message iframe {\n width: 100%;\n height: 300px;\n margin-top: 10px;\n margin-bottom: 10px;\n border: none;\n outline: none;\n display: block;\n }\n\n .gleap-tour-sender-name {\n font-size: 15px;\n }\n\n .gleap-tour-video {\n width: 100%;\n max-width: 100%;\n }\n\n .gleap-tour-video-svg--fullscreen {\n width: 100% !important;\n height: 100% !important;\n top: 0px !important;\n left: 0px !important;\n right: 0px !important;\n bottom: 0px !important;\n }\n\n .gleap-tour-video--playing .gleap-tour-video-playpause {\n opacity: 0;\n }\n \n .gleap-tour-video--playing:hover .gleap-tour-video-playpause {\n opacity: 1;\n }\n\n .gleap-tour-popover-video-pointer {\n padding: 0px !important;\n border-radius: 8px;\n position: relative;\n background-color: transparent !important;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-footer {\n position: absolute;\n top: 0px;\n left: 20px;\n right: 20px;\n opacity: 0;\n transition: opacity 200ms ease-in-out;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-footer button {\n padding: 5px 12px;\n }\n\n .gleap-tour-popover-video-pointer.gleap-tour-popover-can-close .gleap-tour-popover-footer {\n right: 40px !important;\n }\n\n .gleap-tour-popover-video-pointer:hover .gleap-tour-popover-footer {\n opacity: 1;\n }\n\n .gleap-tour-popover-pointer.gleap-tour-popover-no-sender .gleap-tour-message {\n padding-right: 20px;\n }\n\n .gleap-tour-video video {\n width: 100%;\n max-width: 100%;\n height: auto;\n border: none;\n outline: none;\n display: block;\n border-radius: 8px;\n }\n\n .gleap-admin-collapse-ui {\n z-index: ").concat(2147483635,";\n cursor: pointer;\n position: fixed;\n bottom: 75px;\n right: 20px;\n width: 32px;\n height: 32px;\n border-radius: 100%;\n background-color: #fff;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: rgba(0, 0, 0, 0.16) 0px 10px 36px 0px, rgba(0, 0, 0, 0.06) 0px 0px 0px 1px;\n }\n\n .gleap-admin-collapse-ui svg {\n width: 20px;\n height: 14px;\n fill: #000 !important;\n }\n\n .gleap-admin-collapse-ui-active {\n bottom: 20px !important;\n }\n\n .gleap-admin-collapse-ui-active svg {\n transform: rotate(180deg);\n }\n\n .gleap-admin-frame-container-active {\n display: none !important;\n }\n\n .gleap-admin-frame-container {\n position: fixed;\n bottom: 0px;\n left: 0px;\n right: 0px;\n width: 100vw;\n z-index: ").concat(2147483640,";\n }\n\n .gleap-admin-frame {\n width: 100%;\n height: 100% !important;\n border: none;\n outline: none;\n display: block;\n }\n \n .gleap-tour-message .linktype-link {\n display: inline-block !important;\n background-color: transparent !important;\n color: ").concat(n," !important;\n }\n\n .gleap-tooltip .linktype-button,\n .gleap-tour-message .linktype-button {\n display: inline-block !important;\n border-radius: 5px;\n box-sizing: border-box;\n padding: 10px 20px !important;\n text-decoration: none !important;\n background-color: ").concat(n," !important;\n color: ").concat(p," !important;\n }\n\n .gleap-tour-message img {\n width: 100%;\n max-width: 100%;\n min-height: 260px;\n height: auto;\n margin-top: 10px;\n margin-bottom: 10px;\n object-fit: cover;\n }\n\n .gleap-tour-active .gleap-tour-overlay {\n pointer-events: none;\n }\n \n .gleap-tour-active * {\n pointer-events: none;\n }\n \n .gleap-tour-active .gleap-tour-active-element,\n .gleap-tour-active .gleap-tour-active-element *,\n .gleap-tour-popover,\n .gleap-tour-popover * {\n pointer-events: auto;\n }\n \n @keyframes animate-fade-in {\n 0% {\n opacity: 0;\n }\n \n to {\n opacity: 1;\n }\n }\n \n .gleap-tour-fade .gleap-tour-overlay {\n animation: animate-fade-in 200ms ease-in-out;\n }\n \n .gleap-tour-fade .gleap-tour-popover {\n animation: animate-fade-in 200ms;\n }\n\n .gleap-tour-video-playpause {\n position: absolute;\n bottom: 8px;\n left: 8px;\n width: 32px;\n height: 32px;\n padding: 4px;\n background-color: rgba(0,0,0,0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border-radius: 8px;\n transition: opacity 200ms ease-in-out;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-arrow {\n display: none !important;\n }\n\n .gleap-tour-video-playpause svg {\n width: 34px;\n height: auto;\n fill: #fff;\n }\n \n /* Popover styles */\n .gleap-tour-popover {\n all: unset;\n box-sizing: border-box;\n color: #2d2d2d;\n margin: 0;\n padding: 15px;\n border-radius: ").concat(S,'px;\n min-width: 250px;\n max-width: 300px;\n box-shadow: 0 1px 10px #0006;\n z-index: 1000000000;\n position: fixed;\n top: 0;\n right: 0;\n background-color: #fff;\n }\n \n .gleap-tour-popover * {\n font-family: "Helvetica Neue", Inter, ui-sans-serif, "Apple Color Emoji", Helvetica, Arial, sans-serif;\n }\n \n .gleap-tour-popover-title {\n font: 19px / normal sans-serif;\n font-weight: 700;\n display: block;\n position: relative;\n line-height: 1.5;\n zoom: 1;\n margin: 0;\n }\n \n .gleap-tour-popover-close-btn {\n all: unset;\n position: absolute;\n top: 5px;\n right: 5px;\n width: 32px;\n height: 32px;\n cursor: pointer;\n font-size: 30px;\n font-weight: 500;\n line-height: 32px;\n color: #d2d2d2;\n z-index: 1;\n text-align: center;\n transition: color;\n transition-duration: 200ms;\n }\n \n .gleap-tour-popover-close-btn:hover,\n .gleap-tour-popover-close-btn:focus {\n color: #2d2d2d;\n }\n \n .gleap-tour-popover-title[style*="block"] + .gleap-tour-popover-description {\n margin-top: 5px;\n }\n \n .gleap-tour-popover-description {\n margin-bottom: 0;\n font: 15px / normal sans-serif;\n line-height: 1.5;\n font-weight: 400;\n zoom: 1;\n }\n \n .gleap-tour-popover-footer {\n margin-top: 15px;\n text-align: right;\n zoom: 1;\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n \n .gleap-tour-popover-progress-text {\n font-size: 13px;\n font-weight: 400;\n color: #727272;\n zoom: 1;\n }\n \n .gleap-tour-popover-footer button {\n background-color: ').concat(e,";\n color: ").concat(c,";\n border-radius: ").concat(C,"px;\n box-sizing: border-box;\n padding: 10px 20px;\n font-size: 14px;\n font-weight: bold;\n line-height: 21px;\n border: none;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: none !important;\n outline: none !important;\n }\n\n .gleap-tour-popover-prev-btn {\n color: ").concat(h," !important;\n background-color: ").concat(y," !important;\n margin-right: 3px;\n }\n\n .gleap-tour-popover-prev-btn:hover {\n background-color: ").concat(e,"22 !important;\n color: ").concat(e,' !important;\n }\n \n .gleap-tour-popover-footer .gleap-tour-popover-btn-disabled {\n opacity: 0.5;\n pointer-events: none;\n }\n \n /* Disable the scrolling of parent element if it has an active element*/\n :not(body):has(> .gleap-tour-active-element) {\n overflow: hidden !important;\n }\n \n .gleap-tour-no-interaction, .gleap-tour-no-interaction * {\n pointer-events: none !important;\n }\n \n .gleap-tour-popover-navigation-btns {\n display: flex;\n flex-grow: 1;\n justify-content: flex-end;\n }\n \n .gleap-tour-popover-navigation-btns button + button {\n margin-left: 4px;\n }\n \n .gleap-tour-popover-arrow {\n content: "";\n position: absolute;\n border: 5px solid #fff;\n }\n \n .gleap-tour-popover-arrow-side-over {\n display: none;\n }\n \n /** Popover Arrow Sides **/\n .gleap-tour-popover-arrow-side-left {\n left: 100%;\n border-right-color: transparent;\n border-bottom-color: transparent;\n border-top-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-right {\n right: 100%;\n border-left-color: transparent;\n border-bottom-color: transparent;\n border-top-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-top {\n top: 100%;\n border-right-color: transparent;\n border-bottom-color: transparent;\n border-left-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-bottom {\n bottom: 100%;\n border-left-color: transparent;\n border-top-color: transparent;\n border-right-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-center {\n display: none;\n }\n \n /* Left/Start + Right/Start */\n .gleap-tour-popover-arrow-side-left.gleap-tour-popover-arrow-align-start,\n .gleap-tour-popover-arrow-side-right.gleap-tour-popover-arrow-align-start {\n top: 15px;\n }\n \n /* Top/Start + Bottom/Start */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-start,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-start {\n left: 15px;\n }\n \n /* End/Left + End/Right */\n .gleap-tour-popover-arrow-align-end.gleap-tour-popover-arrow-side-left,\n .gleap-tour-popover-arrow-align-end.gleap-tour-popover-arrow-side-right {\n bottom: 15px;\n }\n \n /* Top/End + Bottom/End */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-end,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-end {\n right: 15px;\n }\n \n /* Left/Center + Right/Center */\n .gleap-tour-popover-arrow-side-left.gleap-tour-popover-arrow-align-center,\n .gleap-tour-popover-arrow-side-right.gleap-tour-popover-arrow-align-center {\n top: 50%;\n margin-top: -5px;\n }\n \n /* Top/Center + Bottom/Center */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-center,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-center {\n left: 50%;\n margin-left: -5px;\n }\n \n /* No arrow */\n .gleap-tour-popover-arrow-none {\n display: none;\n } \n\n /* Modal styles */\n .gleap-modal-wrapper {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: ').concat(2147483640,";\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .gleap-modal-backdrop {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.5);\n z-index: ").concat(2147483641,";\n }\n\n .gleap-modal {\n position: relative;\n width: 90%;\n max-width: 600px;\n max-height: 90vh;\n z-index: ").concat(2147483700,";\n background-color: ").concat(r,";\n border-radius: ").concat(k,"px;\n overflow: hidden;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-name: gleapFadeInUp;\n }\n\n .gleap-modal-frame {\n width: 100%;\n border: none;\n display: block;\n outline: none;\n }\n\n body.gleap-modal-open {\n overflow: hidden;\n }\n\n @keyframes gleapFadeInUp {\n from {\n opacity: 0;\n transform: translate3d(0, 20px, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n "),T=document.querySelector(".gleap-styles");T&&T.remove();var O=document.createElement("style");O.innerHTML=E,O.className="gleap-styles",document.body.appendChild(O)}(e,t,n,r,o,i,s,l)}))}},{key:"sendSilentCrashReport",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"MEDIUM",o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{screenshot:!0,replays:!0,attachments:!0};return e.sendSilentCrashReportWithFormData({description:t},n,o)}},{key:"sendSilentCrashReportWithFormData",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"MEDIUM",o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{screenshot:!0,replays:!0,attachments:!0};if(!this.silentCrashReportSent){this.silentCrashReportSent=!0,setTimeout((function(){t.silentCrashReportSent=!1}),1e4);var r=o?k(o):{},i=et.getInstance();if(i.ready){var a=e||{};i.session.email&&(a.reportedBy=i.session.email),new Wt("CRASH",n,a,!0,r).sendFeedback().then((function(){})).catch((function(e){}))}}}},{key:"showSurvey",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"survey";e.startFeedbackFlowWithOptions(t,{hideBackButton:!0,format:n},!0)}},{key:"startClassicForm",value:function(t,n){e.startFeedbackFlowWithOptions(t,{hideBackButton:!n})}},{key:"startFeedbackFlow",value:function(t,n){e.startFeedbackFlowWithOptions(t,{hideBackButton:!n})}},{key:"startFeedbackFlowWithOptions",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=n.autostartDrawing,i=n.hideBackButton,a=n.format;if(et.getInstance().ready){e.getInstance().setGlobalDataItem("snapshotPosition",{x:window.scrollX,y:window.scrollY});var s="start-feedbackflow";o&&(s="start-survey"),Zt.getInstance().setAppMode(o?a:"widget"),Zt.getInstance().sendMessage({name:s,data:{flow:t,hideBackButton:i,format:a}},!0),r?Zt.getInstance().showDrawingScreen("screenshot"):Zt.getInstance().showWidget()}}},{key:"openConversations",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-conversations",data:{hideBackButton:!e}},!0),Zt.getInstance().showWidget()}},{key:"openConversation",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e&&(Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-conversation",data:{shareToken:e,hideBackButton:!t}},!0),Zt.getInstance().showWidget())}},{key:"startConversation",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];e.startBot("",t)}},{key:"startBot",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"start-bot",data:{botId:e||"",hideBackButton:!t}},!0),Zt.getInstance().showWidget()}},{key:"openHelpCenterCollection",value:function(e){e&&(Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-help-collection",data:{collectionId:e}},!0),Zt.getInstance().showWidget())}},{key:"openHelpCenterArticle",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e&&(Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-help-article",data:{articleId:e,hideBackButton:!t}},!0),Zt.getInstance().showWidget())}},{key:"openHelpCenter",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-helpcenter",data:{hideBackButton:!e}},!0),Zt.getInstance().showWidget()}},{key:"searchHelpCenter",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e&&(Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-helpcenter-search",data:{term:e,hideBackButton:!t}},!0),Zt.getInstance().showWidget())}},{key:"openNewsArticle",value:function(e){e&&(Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-news-article",data:{id:e}},!0),Zt.getInstance().showWidget())}},{key:"openChecklists",value:function(){Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-checklists",data:{}},!0),Zt.getInstance().showWidget()}},{key:"startChecklist",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;return!!e&&(Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"start-checklist",data:jm({outboundId:e,hideBackButton:!t},n?{sharedKey:n}:{})},!0),Zt.getInstance().showWidget(),!0)}},{key:"openChecklist",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e&&(Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-checklist",data:{id:e,hideBackButton:!t}},!0),Zt.getInstance().showWidget())}},{key:"getChecklistData",value:function(e,t){if(!e)return Promise.reject(new Error("outboundId is required"));var n=D.getInstance();return n.validateChecklist(e,t).then((function(e){return n.fetchChecklist(e)}))}},{key:"openNews",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-news",data:{hideBackButton:!e}},!0),Zt.getInstance().showWidget()}},{key:"openFeatureRequests",value:function(){Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-feature-requests",data:{}},!0),Zt.getInstance().showWidget()}},{key:"startProductTour",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this;et.getInstance().startProductTourConfig(e).then((function(o){var r;!t||null==o||!o.startURL||null!==(r=window)&&void 0!==r&&null!==(r=r.location)&&void 0!==r&&null!==(r=r.href)&&void 0!==r&&r.includes(null==o?void 0:o.baseURL)?n.startProductTourWithConfig(e,o,!0):window.location.href="".concat(o.startURL,"?gleap_tour=").concat(e,"&gleap_tour_delay=1")})).catch((function(e){}))}},{key:"checkForUncompletedTour",value:function(){var e=wm.getInstance().loadUncompletedTour();e&&wm.getInstance().startWithConfig(e.tourId,e.tourData,500)}},{key:"startProductTourWithConfig",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];wm.getInstance().startWithConfig(e,t,0,n)}},{key:"showBanner",value:function(e){try{qh.getInstance().showBanner(e)}catch(t){}}},{key:"showModal",value:function(e){try{Kh.getInstance().showModal(e)}catch(t){}}},{key:"showNotification",value:function(e){jh.getInstance().showNotification(e)}}],n&&Dm(t.prototype,n),o&&Dm(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();if(Fm(_m,"invoked",!0),Fm(_m,"silentCrashReportSent",!1),Fm(_m,"instance",void 0),"undefined"!=typeof window){var Um=window.GleapActions;if(Um&&Um.length>0)for(var Hm=0;Hm {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","import {\n GleapFrameManager,\n GleapConfigManager,\n GleapNotificationManager,\n GleapTranslationManager,\n GleapSession,\n} from \"./Gleap\";\nimport { loadIcon } from \"./UI\";\n\nexport default class GleapFeedbackButtonManager {\n feedbackButton = null;\n injectedFeedbackButton = false;\n buttonHidden = null;\n lastButtonIcon = null;\n\n // Feedback button types\n static FEEDBACK_BUTTON_BOTTOM_RIGHT = \"BOTTOM_RIGHT\";\n static FEEDBACK_BUTTON_BOTTOM_LEFT = \"BOTTOM_LEFT\";\n static FEEDBACK_BUTTON_CLASSIC = \"BUTTON_CLASSIC\";\n static FEEDBACK_BUTTON_CLASSIC_LEFT = \"BUTTON_CLASSIC_LEFT\";\n static FEEDBACK_BUTTON_CLASSIC_BOTTOM = \"BUTTON_CLASSIC_BOTTOM\";\n static FEEDBACK_BUTTON_NONE = \"BUTTON_NONE\";\n\n // GleapFeedbackButtonManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapFeedbackButtonManager();\n }\n return this.instance;\n }\n\n destroy() {\n if (this.feedbackButton) {\n this.feedbackButton.remove();\n this.feedbackButton = null;\n }\n\n this.buttonHidden = null;\n this.lastButtonIcon = null;\n this.injectedFeedbackButton = false;\n this.instance = null;\n }\n\n /**\n * Toggles the feedback button visibility.\n * @param {*} show\n * @returns\n */\n toggleFeedbackButton(show) {\n this.buttonHidden = !show;\n\n GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n GleapNotificationManager.getInstance().updateContainerStyle();\n }\n\n feedbackButtonPressed() {\n var frameManager = GleapFrameManager.getInstance();\n if (frameManager.isOpened()) {\n frameManager.hideWidget();\n } else {\n frameManager.setAppMode(\"widget\");\n frameManager.showWidget();\n }\n }\n\n /**\n * Injects the feedback button into the current DOM.\n */\n injectFeedbackButton() {\n if (this.injectedFeedbackButton) {\n return;\n }\n this.injectedFeedbackButton = true;\n\n var elem = document.createElement(\"div\");\n elem.addEventListener(\"click\", () => {\n this.feedbackButtonPressed();\n });\n document.body.appendChild(elem);\n this.feedbackButton = elem;\n\n this.updateFeedbackButtonState();\n }\n\n updateNotificationBadge(count) {\n const notificationBadge = document.querySelector(\".bb-notification-bubble\");\n if (!notificationBadge) {\n return;\n }\n\n const notificationHiddenClass = \"bb-notification-bubble--hidden\";\n if (count > 0 && !GleapFrameManager.getInstance().isOpened()) {\n notificationBadge.classList.remove(notificationHiddenClass);\n notificationBadge.innerText = count;\n } else {\n notificationBadge.classList.add(notificationHiddenClass);\n }\n }\n\n refresh() {\n const feedbackButton = document.querySelector(\".bb-feedback-button\");\n if (feedbackButton) {\n this.updateFeedbackButtonText();\n this.updateFeedbackButtonState();\n } else {\n this.injectedFeedbackButton = false;\n this.feedbackButton = null;\n this.buttonHidden = null;\n this.lastButtonIcon = null;\n this.injectFeedbackButton();\n }\n }\n\n updateFeedbackButtonText() {\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n\n if (\n !(\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT\n )\n ) {\n return;\n }\n\n const feedbackButton = document.querySelector(\n \".bb-feedback-button-classic\"\n );\n if (!feedbackButton) {\n return;\n }\n\n feedbackButton.innerText = flowConfig.widgetButtonText;\n }\n\n /**\n * Updates the feedback button state\n * @returns\n */\n updateFeedbackButtonState() {\n if (this.feedbackButton === null) {\n return;\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n\n var buttonIcon = \"\";\n if (flowConfig.buttonLogo) {\n buttonIcon = `\"Feedback`;\n } else {\n buttonIcon = loadIcon(\"button\", \"#fff\");\n }\n\n this.feedbackButton.className = \"bb-feedback-button gleap-font gl-block\";\n this.feedbackButton.setAttribute(\n \"dir\",\n GleapTranslationManager.getInstance().isRTLLayout ? \"rtl\" : \"ltr\"\n );\n\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT\n ) {\n this.feedbackButton.classList.add(\n \"bb-feedback-button--classic-button-style\"\n );\n\n this.feedbackButton.innerHTML = `
${flowConfig.widgetButtonText}
`;\n } else {\n if (buttonIcon !== this.lastButtonIcon) {\n this.feedbackButton.innerHTML = `
${buttonIcon}${loadIcon(\n \"arrowdown\",\n \"#fff\"\n )}
`;\n }\n }\n\n // Prevent dom update if not needed.\n this.lastButtonIcon = buttonIcon;\n\n var hideButton = false;\n if (GleapFeedbackButtonManager.getInstance().buttonHidden === null) {\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_NONE\n ) {\n hideButton = true;\n }\n } else {\n if (GleapFeedbackButtonManager.getInstance().buttonHidden) {\n hideButton = true;\n }\n }\n if (hideButton) {\n this.feedbackButton.classList.add(\"bb-feedback-button--disabled\");\n }\n\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_BOTTOM_LEFT\n ) {\n this.feedbackButton.classList.add(\"bb-feedback-button--bottomleft\");\n }\n\n if (GleapFrameManager.getInstance().isOpened()) {\n this.feedbackButton.classList.add(\"bb-feedback-button--open\");\n }\n\n const appMode = GleapFrameManager.getInstance().appMode;\n if (\n appMode === \"survey\" ||\n appMode === \"survey_full\" ||\n appMode === \"survey_web\"\n ) {\n this.feedbackButton.classList.add(\"bb-feedback-button--survey\");\n }\n\n if (\n flowConfig.hideForGuests === true &&\n !GleapSession.getInstance().isUser()\n ) {\n this.feedbackButton.classList.add(\"bb-feedback-button--hidden\");\n }\n }\n}\n","import GleapFeedbackButtonManager from \"./GleapFeedbackButtonManager\";\n\nconst calculateShadeColor = function (col, amt) {\n col = col.replace(/^#/, \"\");\n if (col.length === 3)\n col = col[0] + col[0] + col[1] + col[1] + col[2] + col[2];\n\n let [r, g, b] = col.match(/.{2}/g);\n [r, g, b] = [\n parseInt(r, 16) + amt,\n parseInt(g, 16) + amt,\n parseInt(b, 16) + amt,\n ];\n\n r = Math.max(Math.min(255, r), 0).toString(16);\n g = Math.max(Math.min(255, g), 0).toString(16);\n b = Math.max(Math.min(255, b), 0).toString(16);\n\n const rr = (r.length < 2 ? \"0\" : \"\") + r;\n const gg = (g.length < 2 ? \"0\" : \"\") + g;\n const bb = (b.length < 2 ? \"0\" : \"\") + b;\n\n return `#${rr}${gg}${bb}`;\n};\n\nexport const calculateContrast = (hex) => {\n var r = parseInt(hex.substr(1, 2), 16),\n g = parseInt(hex.substr(3, 2), 16),\n b = parseInt(hex.substr(5, 2), 16),\n yiq = (r * 299 + g * 587 + b * 114) / 1000;\n return yiq >= 160 ? \"#000000\" : \"#ffffff\";\n};\n\nexport const widgetMaxHeight = 700;\n\nexport const injectStyledCSS = (\n primaryColor,\n headerColor,\n buttonColor,\n borderRadius,\n backgroundColor,\n buttonX,\n buttonY,\n buttonStyle\n) => {\n const contrastColor = calculateContrast(primaryColor);\n const contrastButtonColor = calculateContrast(buttonColor);\n const contrastBackgroundColor = calculateContrast(backgroundColor);\n const contrastHeaderColor = calculateContrast(headerColor);\n const isDarkMode = contrastBackgroundColor === \"#ffffff\";\n const headerDarkColor = calculateShadeColor(\n headerColor,\n contrastHeaderColor === \"#ffffff\" ? -35 : -15\n );\n const subTextColor = isDarkMode\n ? calculateShadeColor(backgroundColor, 100)\n : calculateShadeColor(backgroundColor, -120);\n const backgroundColorHover = isDarkMode\n ? calculateShadeColor(backgroundColor, 30)\n : calculateShadeColor(backgroundColor, -12);\n const hoverHoverColor = isDarkMode\n ? calculateShadeColor(backgroundColor, 80)\n : calculateShadeColor(backgroundColor, -30);\n\n var borderRadius = parseInt(borderRadius, 10);\n const buttonBorderRadius = Math.round(borderRadius * 1.05);\n const containerRadius = Math.round(borderRadius * 0.8);\n const chatRadius = Math.round(borderRadius * 0.6);\n const formItemBorderRadius = Math.round(borderRadius * 0.4);\n const formItemSmallBorderRadius = Math.round(borderRadius * 0.25);\n const zIndexBase = 2147483600;\n\n var bottomInfoOffset = 57 + buttonY;\n if (\n buttonStyle === GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM\n ) {\n bottomInfoOffset = buttonY + 15;\n } else if (buttonStyle && buttonStyle.includes(\"CLASSIC\")) {\n bottomInfoOffset = buttonY;\n } else if (buttonStyle === GleapFeedbackButtonManager.FEEDBACK_BUTTON_NONE) {\n bottomInfoOffset = buttonY;\n }\n\n const colorStyleSheet = `\n .gleap-font, .gleap-font * {\n font-style: normal;\n font-variant-caps: normal;\n font-variant-ligatures: normal;\n font-variant-numeric: normal;\n font-variant-east-asian: normal;\n font-weight: normal;\n font-stretch: normal;\n font-size: 100%;\n line-height: 1;\n font-family: system-ui, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n }\n .gleap-input-highlight {\n box-shadow: 0 0 0 3px ${primaryColor} !important;\n }\n .gleap-frame-container {\n right: ${buttonX}px;\n bottom: ${61 + buttonY}px;\n width: calc(100% - 40px);\n max-width: 410px;\n position: fixed;\n z-index: ${zIndexBase + 31};\n visibility: visible;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.16);\n border-radius: ${containerRadius}px;\n overflow: hidden;\n animation-duration: .3s;\n animation-fill-mode: both;\n animation-name: gleapFadeInUp;\n user-select: none;\n pointer-events: none;\n transition: max-width 0.3s ease-out;\n }\n\n .gleap-admin-highlight {\n box-shadow: 0px 0px 0px 4px red;\n }\n\n :root {\n --gleap-margin-top: 50px;\n }\n\n .gleap-tooltip-anchor {\n position: relative;\n display: inline-block;\n float: left;\n max-width: 0px;\n width: 17px;\n }\n\n .gleap-tooltip-hotspot {\n position: absolute;\n display: block;\n width: 17px;\n height: 17px;\n cursor: pointer;\n top: 0px;\n left: 0px;\n }\n\n @keyframes gleap-pulse {\n 0% {\n transform: scale(0);\n opacity: 0.25;\n }\n 45% {\n transform: scale(2.5);\n opacity: 0;\n }\n 100% {\n transform: scale(0);\n opacity: 0;\n }\n }\n\n .gleap-tooltip-hotspot-animation {\n position: absolute;\n border-radius: 17px;\n opacity: 0.25;\n display: block;\n width: 17px;\n height: 17px;\n cursor: pointer;\n top: 0px;\n left: 0px;\n animation: gleap-pulse 5s infinite;\n }\n\n .gleap-tooltip-hotspot svg {\n width: 17px;\n height: 17px;\n object-fit: contain;\n display: block;\n }\n\n .gleap-tooltip-inner {\n position: relative;\n overflow: visible;\n font-size: 14px;\n font-weight: normal;\n color: #000;\n line-height: 1.3;\n }\n\n .gleap-tooltip {\n position: absolute;\n background-color: #fff;\n color: #000;\n font-size: 15px;\n line-height: 18px;\n padding: 16px;\n padding-top: 8px;\n padding-bottom: 8px;\n border-radius: 4px;\n max-width: min(350px, 80vw);\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n opacity: 0;\n visibility: hidden;\n transition: opacity 0.2s, visibility 0.2s;\n z-index: ${zIndexBase + 100};\n }\n\n .gleap-tooltip a {\n color: ${primaryColor};\n text-decoration: underline;\n display: inline !important;\n margin: 0px !important;\n padding: 0px !important;\n word-break: break-word;\n }\n\n .gleap-tooltip ul {\n padding-left: 16px;\n }\n\n .gleap-tooltip b {\n font-weight: 600;\n }\n\n .gleap-tooltip h2 {\n font-size: 18px;\n line-height: 20px;\n font-weight: 600;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip h3 {\n font-size: 16px;\n line-height: 18px;\n font-weight: 600;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip p {\n padding: 0px;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip img {\n max-width: 100%;\n max-height: 300px;\n width: 100%;\n height: auto;\n object-fit: cover;\n margin-top: 8px;\n margin-bottom: 8px;\n border-radius: 4px;\n }\n\n .gleap-tooltip iframe,\n .gleap-tooltip video {\n max-width: 100%;\n width: 100%;\n height: auto;\n min-height: 200px;\n display: block;\n border: none;\n outline: none;\n padding: 0px;\n margin-top: 8px;\n margin-bottom: 8px;\n border-radius: 4px;\n }\n\n .gleap-tooltip-arrow {\n position: absolute;\n width: 20px;\n height: 20px;\n }\n\n .gleap-tooltip-arrow svg {\n width: 20px;\n height: 20px;\n object-fit: contain;\n }\n\n .gleap-b-frame {\n width: 100%;\n height: 100%;\n border: none;\n pointer-events: auto;\n padding: 0px;\n margin: 0px;\n }\n\n .gleap-b-shown {\n transition: margin 0.3s ease-out;\n margin-top: var(--gleap-margin-top);\n position: relative;\n z-index: 10000;\n }\n\n .gleap-b-f {\n margin-top: 0px;\n }\n\n .gleap-b {\n display: none;\n position: absolute;\n top: calc(-1 * var(--gleap-margin-top));\n left: 0px;\n width: 100vw;\n height: var(--gleap-margin-top);\n z-index: ${zIndexBase + 99};\n }\n\n @keyframes gleapSlideIn {\n from {\n top: calc(-1 * var(--gleap-margin-top));\n }\n to {\n top: 10px;\n }\n }\n\n .gleap-b-f .gleap-b {\n position: fixed;\n top: 10px;\n animation: gleapSlideIn .25s ease-out forwards;\n max-width: 800px;\n width: calc(100% - 20px);\n left: 50%;\n z-index: ${zIndexBase + 99};\n transform: translateX(-50%);\n border-radius: ${formItemBorderRadius}px;\n overflow: hidden;\n box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.15), 0px 5px 5px rgba(0, 0, 0, 0.05);\n }\n\n .gleap-b-shown .gleap-b {\n display: block;\n }\n\n .gleap-image-view {\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n z-index: ${zIndexBase + 99};\n background-color: ${contrastBackgroundColor}cc;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .gleap-image-view-image {\n width: 90%;\n height: auto;\n max-width: 90%;\n max-height: 90%;\n object-fit: contain;\n }\n\n .gleap-image-view-close {\n position: fixed;\n top: 20px;\n right: 20px;\n width: 32px;\n height: 32px;\n opacity: 0.8;\n z-index: ${zIndexBase + 140};\n box-shadow: 0px 5px 18px rgba(0, 0, 0, 0.16);\n cursor: pointer;\n }\n\n .gleap-image-view-close:hover {\n opacity: 1;\n }\n\n .gleap-image-view-close svg path {\n fill: ${backgroundColor};\n }\n\n [dir=rtl].gleap-frame-container {\n right: auto;\n left: ${buttonX}px;\n bottom: ${61 + buttonY}px;\n }\n\n .gleap-frame-container--loading iframe {\n opacity: 0;\n }\n\n .gleap-frame-container--loading::before {\n content: \" \";\n position: fixed;\n top: 0px;\n left: 0px;\n right: 0px;\n height: 100%;\n max-height: 380px;\n background: linear-gradient(\n 130deg,\n ${headerDarkColor} 0%,\n ${headerColor} 100%\n );\n }\n \n .gleap-frame-container--loading::after {\n content: \" \";\n position: fixed;\n top: 0px;\n left: 0px;\n right: 0px;\n height: 100%;\n height: 100%;\n max-height: 380px;\n background: linear-gradient(\n 180deg,\n transparent 60%,\n ${backgroundColor}1A 70%,\n ${backgroundColor} 100%\n );\n }\n\n .gleap-frame-container--loading-nogradient::before {\n max-height: 340px;\n background: ${headerColor} !important;\n }\n\n .gleap-frame-container--loading-nofade::after {\n display: none !important;\n }\n\n .gleap-frame-container--survey {\n bottom: ${buttonY}px !important;\n }\n\n .gleap-frame-container--extended {\n max-width: 690px !important;\n }\n\n .gleap-frame-container--survey-full {\n position: fixed;\n top: 0 !important;\n left: 0 !important;\n bottom: 0 !important;\n right: 0 !important;\n width: 100vw !important;\n max-width: 100vw !important;\n height: 100vh;\n height: 100dvh !important;\n background-color: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(6px);\n display: flex !important;\n justify-content: center !important;\n align-items: center !important;\n max-height: 100vh;\n max-height: 100dvh !important;\n border-radius: 0 !important;\n animation-name: none !important;\n }\n\n .gleap-frame-container--survey-full .gleap-frame-container-inner {\n max-width: 640px !important;\n width: calc(100% - 24px);\n border-radius: ${containerRadius}px;\n overflow: hidden;\n }\n\n .gleap-frame-container--classic {\n right: ${buttonX}px;\n bottom: ${buttonY}px;\n }\n\n [dir=rtl].gleap-frame-container--classic {\n right: auto;\n left: ${buttonX}px;\n bottom: ${buttonY}px;\n }\n\n .gleap-frame-container--no-button {\n bottom: ${buttonY}px;\n }\n\n [dir=rtl].gleap-frame-container--classic-left {\n bottom: ${buttonY}px;\n }\n\n .gleap-frame-container--classic-left {\n right: auto;\n left: ${buttonX}px;\n bottom: ${buttonY}px;\n }\n\n [dir=rtl].gleap-frame-container--classic-left {\n left: auto;\n right: ${buttonX}px;\n bottom: ${buttonY}px;\n }\n\n .gleap-frame-container--modern-left {\n right: auto;\n left: ${buttonX}px;\n bottom: ${61 + buttonY}px;\n }\n\n [dir=rtl].gleap-frame-container--modern-left {\n left: auto;\n right: ${buttonX}px;\n bottom: ${61 + buttonY}px;\n }\n\n .gleap-frame-container--animate {\n pointer-events: auto !important;\n }\n\n @keyframes gleapFadeInUp {\n from {\n opacity: 0;\n transform: translate3d(0, 100%, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n\n @keyframes gleapFadeInUpMobile {\n from {\n opacity: 0;\n transform: translate3d(0, 10%, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n\n .gleap-notification-container {\n position: fixed;\n bottom: ${bottomInfoOffset}px;\n right: ${buttonX}px;\n z-index: ${zIndexBase + 30};\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n width: 100%;\n max-width: min(340px, 80vw);\n }\n\n .gleap-notification-container--left {\n left: ${4 + buttonX}px;\n right: initial !important;\n }\n\n [dir=rtl].gleap-notification-container {\n left: ${4 + buttonX}px;\n right: initial !important;\n }\n\n [dir=rtl].gleap-notification-container--left {\n left: initial !important;\n right: ${buttonX}px !important;\n align-items: flex-start !important;\n }\n\n .gleap-notification-container--no-button {\n bottom: ${buttonY}px;\n }\n\n .gleap-notification-item {\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n\n .gleap-notification-close {\n border-radius: 100%;\n width: 28px;\n height: 28px;\n background-color: ${subTextColor};\n display: flex;\n justify-content: center;\n align-items: center;\n margin-bottom: 8px;\n cursor: pointer;\n visibility: hidden;\n pointer-events: none;\n }\n\n .gleap-notification-container:hover .gleap-notification-close {\n visibility: visible;\n pointer-events: auto;\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-notification-close {\n visibility: visible;\n pointer-events: auto;\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n }\n\n .gleap-notification-close svg {\n width: 45%;\n height: 45%;\n object-fit: contain;\n fill: ${backgroundColor};\n }\n\n .gleap-notification-item-checklist-container {\n display: flex;\n animation: fadeIn;\n animation-duration: .45s;\n background-color: ${backgroundColor};\n border-radius: ${subTextColor};\n box-sizing: border-box;\n cursor: pointer;\n flex-direction: column;\n overflow: hidden;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ${chatRadius}px;\n margin-bottom: 12px;\n }\n\n .gleap-notification-item-checklist-content {\n align-items: flex-start;\n display: flex;\n flex-direction: column;\n padding: 15px;\n width: 100%;\n width: min(310px, 70vw);\n max-width: min(310px, 70vw);\n }\n\n .gleap-notification-item-checklist-content-title {\n color: ${contrastBackgroundColor};\n font-size: 15px;\n font-weight: 500;\n line-height: 21px;\n margin-bottom: 10px;\n max-width: 100%;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .gleap-notification-item-checklist-content-progress {\n width: 100%;\n height: 8px;\n border-radius: 8px;\n background-color: ${backgroundColorHover};\n }\n\n .gleap-notification-item-checklist-content-progress-inner {\n height: 100%;\n border-radius: 8px;\n background-color: ${primaryColor};\n }\n\n .gleap-notification-item-checklist-content-next {\n color: ${subTextColor};\n font-size: 15px;\n font-weight: normal;\n line-height: 21px;\n margin-top: 10px;\n max-width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: flex;\n align-items: center;\n }\n\n .gleap-notification-item-checklist-content-next svg {\n height: 18px;\n margin-right: 5px;\n width: auto;\n }\n\n .gleap-notification-item-checklist-content-next b {\n font-size: 15px;\n font-weight: normal;\n color: ${contrastBackgroundColor};\n }\n\n .gleap-notification-item-news {\n width: 100%;\n }\n\n .gleap-news-pagination {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 10px;\n width: 100%;\n }\n\n .gleap-news-page-indicator {\n font-size: 12px;\n color: ${subTextColor};\n }\n\n .gleap-news-next-button {\n background-color: ${primaryColor};\n color: ${contrastColor};\n border-radius: ${formItemSmallBorderRadius}px;\n box-sizing: border-box;\n padding: 5px 10px;\n font-size: 14px;\n font-weight: bold;\n line-height: 21px;\n border: none;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: none !important;\n outline: none !important;^\n }\n\n .gleap-notification-item-news-content {\n align-items: flex-start;\n display: flex;\n flex-direction: column;\n padding: 15px;\n }\n\n .gleap-notification-item-news-preview {\n color: ${subTextColor};\n font-size: 14px;\n line-height: 21px;\n font-weight: 400;\n overflow-wrap: break-word;\n word-break: break-word;\n display: block;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .gleap-notification-item-news-sender {\n display: flex;\n align-items: center;\n color: ${subTextColor};\n font-size: 15px;\n line-height: 21px;\n font-weight: 400;\n }\n \n .gleap-notification-item-news-content-title {\n color: ${contrastBackgroundColor};\n font-size: 15px;\n font-weight: 500;\n line-height: 21px;\n margin-bottom: 6px;\n max-width: 100%;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n cursor: pointer;\n }\n\n .gleap-notification-item-news-sender img {\n border-radius: 100%;\n height: 20px;\n margin-right: 8px;\n object-fit: cover;\n width: 20px;\n }\n\n [dir=rtl] .gleap-notification-item-news-sender img {\n margin-left: 8px;\n margin-right: 0px !important;\n }\n\n .gleap-notification-item-news-container {\n display: flex;\n animation: fadeIn;\n animation-duration: .45s;\n background-color: ${backgroundColor};\n border-radius: ${subTextColor};\n box-sizing: border-box;\n flex-direction: column;\n overflow: hidden;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ${chatRadius}px;\n margin-bottom: 12px;\n }\n\n .gleap-notification-item-news-image {\n background-color: ${subTextColor};\n height: 170px;\n max-height: 170px;\n object-fit: cover;\n width: 100%;\n cursor: pointer;\n }\n \n .gleap-notification-item-news-content-title:hover {\n color: ${primaryColor};\n }\n\n .gleap-notification-item {\n display: flex;\n align-items: flex-end;\n cursor: pointer;\n }\n\n .gleap-notification-item img {\n width: 32px;\n height: 32px;\n min-width: 32px;\n border-radius: 100%;\n object-fit: cover;\n margin-right: 8px;\n margin-bottom: 12px;\n cursor: pointer;\n }\n\n [dir=rtl] .gleap-notification-item img {\n margin-left: 8px;\n margin-right: 0px !important;\n }\n\n .gleap-notification-item-container {\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ${chatRadius}px;\n border-bottom-left-radius: 0px;\n padding: 20px;\n background-color: ${backgroundColor};\n margin-bottom: 12px;\n cursor: pointer;\n font-size: 15px;\n line-height: 21px;\n color: ${contrastBackgroundColor};\n position: relative;\n }\n\n .gleap-notification-item-container::after {\n content: \" \";\n position: absolute;\n bottom: 0px;\n width: 0px;\n height: 0px;\n left: -6px;\n border-style: solid;\n border-width: 0px 0px 10px 6px;\n border-color: transparent transparent ${backgroundColor};\n }\n\n .gleap-notification-item-sender {\n color: ${subTextColor};\n line-height: 20px;\n }\n\n .gleap-notification-item-content {\n line-height: 20px;\n color: ${contrastBackgroundColor};\n margin-top: 4px;\n min-width: min(200px, 50vw);\n word-wrap: break-word;\n word-break: break-word;\n }\n\n .gleap-frame-container-inner {\n position: relative;\n width: 100%;\n height: calc(100vh - ${84 + buttonY}px);\n max-height: ${widgetMaxHeight}px;\n }\n\n .gleap-frame-container--survey .gleap-frame-container-inner {\n height: calc(100vh - 40px);\n }\n \n .gleap-frame-container-inner:before {\n content: \" \";\n position: absolute;\n width: 100%;\n height: calc(100% - ${containerRadius}px);\n top: ${containerRadius}px;\n background-color: ${backgroundColor};\n z-index: -1;\n }\n \n .gleap-frame-container iframe {\n height: 100% !important;\n width: 100% !important;\n max-width: 100% !important;\n display: block !important;\n pointer-events: auto !important;\n }\n \n .gleap-frame-container--hidden {\n display: none !important;\n pointer-events: none;\n animation: none !important;\n }\n \n .bb-feedback-button {\n margin: 0px;\n position: fixed;\n bottom: ${buttonY}px;\n right: ${buttonX}px;\n border-radius: 30px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n background-color: transparent;\n color: #000000;\n z-index: ${zIndexBase + 30};\n box-sizing: border-box;\n display: flex;\n align-items: center;\n padding: 0px;\n }\n\n [dir=rtl].bb-feedback-button {\n bottom: ${buttonY}px;\n right: auto;\n left: ${buttonX}px;\n }\n \n .bb-feedback-button--bottomleft {\n bottom: ${buttonY}px;\n right: auto;\n left: ${buttonX}px;\n }\n\n [dir=rtl].bb-feedback-button--bottomleft {\n bottom: ${buttonY}px;\n right: ${buttonX}px;\n left: auto;\n }\n \n .bb-feedback-button--disabled {\n display: none !important;\n }\n\n .bb-feedback-button--hidden {\n display: none !important;\n }\n \n .bb-feedback-button-text {\n padding: 8px 12px;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n background-color: #fff;\n border-radius: 8px;\n box-shadow: 0px 0px 14px 0px rgba(0, 0, 0, 0.15);\n position: relative;\n z-index: 99;\n }\n \n .bb-feedback-button-text:before {\n content: \"\";\n position: absolute;\n box-shadow: rgba(0, 0, 0, 0.04) 6px 6px 5px;\n transform: rotate(315deg);\n bottom: 16px;\n right: -4px;\n border-width: 10px;\n border-style: solid;\n border-color: transparent #fff #fff transparent;\n }\n \n .bb-feedback-button--bottomleft .bb-feedback-button-text:before {\n display: none;\n }\n \n .bb-feedback-button-text:after {\n content: \"\";\n position: absolute;\n bottom: 12px;\n right: 0px;\n background-color: #fff;\n width: 5px;\n height: 30px;\n }\n \n .bb-feedback-button-text-title {\n font-family: sans-serif;\n font-size: 14px;\n color: #666;\n line-height: 18px;\n max-width: 220px;\n }\n \n .bb-feedback-button-text-title b {\n color: #000000;\n font-weight: 600;\n }\n\n .bb-notification-bubble {\n position: absolute;\n top: -5px;\n right: -5px;\n min-width: 12px;\n padding: 0px 4px;\n height: 20px;\n min-width: 20px;\n border-radius: 20px;\n background-color: red;\n color: #fff;\n font-size: 11px;\n font-family: sans-serif;\n text-align: center;\n line-height: 20px;\n }\n\n .bb-notification-bubble--hidden {\n display: none;\n }\n \n .bb-feedback-button-icon {\n width: 48px;\n height: 48px;\n border-radius: 48px;\n background-color: #485bff;\n transition: box-shadow, transform 0.2s ease-in-out;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n position: relative;\n }\n \n .bb-feedback-button-classic {\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n top: 50%;\n right: 0px;\n position: fixed;\n transform: rotate(-90deg) translate(50%, -50%);\n transform-origin: 100% 50%;\n padding: 9px 20px;\n text-align: center;\n background-color: #485bff;\n border-top-left-radius: 8px;\n border-top-right-radius: 8px;\n font-family: sans-serif;\n font-size: 16px;\n color: #fff;\n box-shadow: 0px 0px 14px 0px rgba(0, 0, 0, 0.25);\n }\n\n [dir=rtl].bb-feedback-button .bb-feedback-button-classic {\n top: 50%;\n left: 0px;\n right: auto;\n transform: rotate(90deg) translate(-50%, -100%);\n transform-origin: 0% 0%;\n }\n \n .bb-feedback-button-classic--left {\n top: 50%;\n left: 0px;\n right: auto;\n transform: rotate(90deg) translate(-50%, -100%);\n transform-origin: 0% 0%;\n }\n\n [dir=rtl].bb-feedback-button .bb-feedback-button-classic--left {\n top: 50%;\n right: 0px;\n left: auto;\n transform: rotate(-90deg) translate(50%, -50%);\n transform-origin: 100% 50%;\n }\n \n .bb-feedback-button-classic--bottom {\n top: auto;\n bottom: 0px;\n transform: none;\n right: ${buttonX}px;\n left: auto;\n }\n \n [dir=rtl].bb-feedback-button .bb-feedback-button-classic--bottom {\n top: auto;\n bottom: 0px;\n transform: none;\n left: ${buttonX}px;\n right: auto;\n }\n\n .bb-feedback-button--classic-button-style {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n \n .bb-feedback-button--open.bb-feedback-button--classic-button-style {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: bbFadeOutRight;\n }\n \n .bb-feedback-button .bb-logo-logo {\n position: absolute;\n width: 30px;\n height: 30px;\n top: 9px;\n left: 9px;\n object-fit: contain;\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-name: bbZoomIn;\n }\n \n .bb-feedback-button .bb-logo-arrowdown {\n position: absolute;\n width: 14px;\n height: 14px;\n top: 17px;\n left: 17px;\n object-fit: contain;\n animation-duration: 0.3s;\n animation-fill-mode: both;\n }\n \n .bb-feedback-button .bb-logo-arrowdown {\n animation-name: bbZoomOut;\n }\n \n .bb-feedback-button--open .bb-logo-arrowdown {\n animation-name: bbZoomIn;\n }\n \n .bb-feedback-button--open .bb-logo-logo {\n animation-name: bbZoomOut;\n }\n \n .bb-feedback-button-icon:hover {\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.25), 0px 0px 20px rgba(0, 0, 0, 0.2);\n transform: scale(1.1);\n }\n \n .bb-feedback-button--open .bb-feedback-button-text {\n animation-name: bbFadeOutDown;\n }\n \n .bb-feedback-button--open .bb-feedback-button-icon {\n display: flex;\n }\n \n .bb-capture-svg {\n position: fixed;\n z-index: ${zIndexBase + 14};\n top: 0px;\n left: 0px;\n right: 0px;\n width: 100%;\n height: 100%;\n padding: 0px;\n margin: 0px;\n cursor: crosshair;\n }\n\n .bb-capture-svg--preview {\n cursor: auto !important;\n }\n \n .bb-rec-on-circle {\n animation-name: bbRecIconFade;\n animation-duration: 2s;\n animation-iteration-count: infinite;\n animation-direction: alternate;\n }\n \n .bb-rec-on-cont {\n animation-name: bbRecIconContFade;\n animation-duration: 2s;\n animation-iteration-count: infinite;\n animation-direction: alternate;\n }\n \n .bb-capture-editor-drag-info {\n position: fixed;\n top: -200px;\n left: 0px;\n z-index: ${zIndexBase + 16};\n transition: opacity 0.3s ease-in-out;\n }\n \n .bb-capture-editor-drag-info svg {\n width: 24px;\n height: 24px;\n }\n \n .bb-capture-editor-borderlayer {\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n border: 4px solid ${primaryColor};\n cursor: crosshair;\n z-index: ${zIndexBase + 10};\n box-sizing: border-box;\n pointer-events: none;\n }\n \n .bb-capture-editor-notrecording .bb-capture-editor-borderlayer {\n background-color: rgba(0, 0, 0, 0.8);\n }\n\n .bb-capture-editor-recording .bb-capture-editor-borderlayer {\n border: 4px solid #eb144c !important;\n }\n \n .bb-capture-editor-recording .bb-capture-dismiss {\n display: none;\n }\n \n .bb-capture-editor-item-inactive {\n opacity: 0.3;\n cursor: not-allowed !important;\n }\n \n .bb-capture-editor-notrecording .bb-capture-toolbar-drawingitem {\n opacity: 0.3;\n cursor: not-allowed !important;\n }\n \n .bb-capture-editor-notrecording .bb-capture-editor-drag-info {\n display: none;\n }\n \n .bb-capture-editor-notrecording .bb-capture-svg {\n pointer-events: none !important;\n }\n \n .bb-capture-toolbar {\n position: fixed;\n top: 20px;\n left: 50%;\n transform: translateX(-50%);\n z-index: ${zIndexBase + 18};\n background-color: #fff;\n padding: 5px;\n display: flex;\n align-items: center;\n border-radius: 8px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n transition: opacity 0.3s ease-in-out;\n }\n \n .bb-capture-dismiss {\n position: fixed;\n top: 0px;\n right: 0px;\n z-index: ${zIndexBase + 18};\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n width: 36px;\n height: 36px;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: ${primaryColor};\n border-bottom-left-radius: ${formItemSmallBorderRadius}px;\n }\n\n [dir=rtl] .bb-capture-dismiss {\n top: 0px;\n left: 0px;\n right: auto;\n border-bottom-left-radius: 0px !important;\n border-bottom-right-radius: ${formItemSmallBorderRadius}px;\n }\n \n .bb-capture-dismiss svg path {\n fill: ${contrastColor};\n }\n \n .bb-capture-dismiss svg {\n width: 20px;\n height: 20px;\n object-fit: contain;\n }\n \n .bb-capture-button-next {\n font-family: sans-serif;\n box-sizing: border-box;\n font-weight: 600;\n text-align: center;\n width: auto;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n margin: 0px;\n line-height: 36px;\n padding: 0px 12px;\n font-size: 15px;\n margin-left: 12px;\n }\n\n [dir=rtl].bb-capture-editor .bb-capture-button-next {\n margin-left: auto;\n margin-right: 12px;\n }\n \n .bb-capture-toolbar-item-spacer {\n width: 1px;\n height: 38px;\n min-width: 1px;\n margin: 0px 5px;\n }\n \n .bb-capture-toolbar-item {\n width: 42px;\n height: 38px;\n min-width: 42px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n position: relative;\n margin-right: 5px;\n }\n\n .drag-handle-item {\n cursor: grab !important;\n width: 34px;\n min-width: 34px;\n }\n\n .drag-handle-item svg {\n width: 18px !important;\n height: 18px !important;\n }\n \n .bb-capture-toolbar-item svg {\n width: 23px;\n height: 23px;\n object-fit: contain;\n }\n \n .bb-capture-toolbar-item-selectedcolor {\n border-radius: 100%;\n width: 20px;\n height: 20px;\n background-color: #db4035;\n }\n \n .bb-capture-toolbar-item[data-type=\"undo\"] svg {\n width: 18px;\n height: 18px;\n }\n \n .bb-capture-toolbar-item[data-active=\"true\"] {\n position: relative;\n }\n \n .bb-capture-preview {\n display: none;\n background-color: rgba(0, 0, 0, 0.6);\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n justify-content: center;\n align-items: center;\n z-index: ${zIndexBase + 20};\n }\n \n .bb-capture-preview-inner {\n background-color: #fff;\n padding: 0px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n border-radius: 8px;\n flex-direction: column;\n max-width: 640px;\n width: 100%;\n margin: 20px;\n }\n \n .bb-capture-preview-inner video {\n border-radius: 8px 8px 0px 0px;\n display: block;\n border: 0px;\n outline: none;\n width: 100%;\n max-height: 60vh;\n }\n \n .bb-capture-preview-buttons {\n display: flex;\n justify-content: space-between;\n padding: 14px;\n }\n \n .bb-capture-preview-retrybutton {\n font-family: sans-serif;\n border-radius: 21px;\n box-sizing: border-box;\n padding: 12px 26px;\n font-size: 16px;\n line-height: 19px;\n font-weight: 600;\n text-align: center;\n margin-top: 0px;\n margin-bottom: 0px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-preview-sendbutton {\n font-family: sans-serif;\n border-radius: 21px;\n box-sizing: border-box;\n padding: 12px 26px;\n font-size: 16px;\n line-height: 19px;\n font-weight: 600;\n text-align: center;\n margin-top: 0px;\n margin-bottom: 0px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-preview-retrybutton:hover,\n .bb-capture-preview-sendbutton:hover {\n opacity: 0.9;\n }\n \n .bb-capture-toolbar-item-recording {\n margin-right: 0px;\n }\n \n .bb-capture-toolbar-item-recording svg {\n width: 33px;\n height: 33px;\n }\n \n .bb-capture-toolbar-item-colorpicker {\n position: fixed;\n top: 70px;\n left: 50%;\n transform: translateX(-50%);\n z-index: ${zIndexBase + 18};\n background-color: #fff;\n display: none;\n padding: 10px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n border-radius: 8px;\n }\n \n .bb-capture-toolbar-item-color {\n width: 20px;\n height: 20px;\n border-radius: 100%;\n margin-right: 12px;\n box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.15);\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-toolbar-item-color:hover {\n box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.25);\n }\n \n .bb-capture-toolbar-item-color:last-of-type {\n margin-right: 0px;\n }\n \n [dir=rtl].bb-capture-editor .bb-capture-toolbar-item-color {\n margin-right: auto;\n margin-left: 12px;\n }\n \n [dir=rtl].bb-capture-editor .bb-capture-toolbar-item-color:last-of-type {\n margin-right: auto;\n margin-left: 0px;\n }\n \n .bb-capture-toolbar-item-recording[data-active=\"true\"] svg:first-of-type {\n display: none;\n }\n \n .bb-capture-toolbar-item-recording[data-active=\"true\"] svg:nth-of-type(2) {\n display: block;\n }\n \n .bb-capture-toolbar-item-recording[data-active=\"false\"] svg:first-of-type {\n display: block;\n }\n \n .bb-capture-toolbar-item-recording[data-active=\"false\"] svg:nth-of-type(2) {\n display: none;\n }\n \n .bb-capture-toolbar-item--active {\n background-color: #eee;\n }\n \n .bb-capture-toolbar-item:hover svg {\n opacity: 1;\n }\n \n .bb-capture-toolbar-item--active {\n background-color: #f8f8f8;\n }\n \n .bb-capture-toolbar-item--active svg {\n opacity: 1;\n }\n \n .bb-capture-toolbar-item--inactivecross::before {\n content: \"\";\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n height: 3px;\n width: 26px;\n margin: auto;\n border-radius: 4px;\n background-color: #e80000;\n transform: rotate(45deg);\n }\n \n .bb-capture-toolbar-item--inactivecross svg {\n fill: #eee;\n }\n \n .bb-capture-toolbar-item-timer {\n text-align: left;\n line-height: 32px;\n font-size: 14px;\n font-family: sans-serif;\n margin: 5px;\n min-width: 40px;\n display: none;\n }\n \n .bb-capture-toolbar-item .bb-tooltip {\n background-color: #555;\n color: #fff;\n visibility: hidden;\n font-size: 14px;\n font-family: sans-serif;\n text-align: center;\n padding: 5px 10px;\n position: absolute;\n z-index: 1;\n top: 45px;\n left: 0px;\n transform: translateX(calc(-50% + 21px));\n opacity: 0;\n transition: opacity 0.3s;\n white-space: nowrap;\n }\n \n .bb-capture-toolbar-item .bb-tooltip::after {\n content: \"\";\n position: absolute;\n bottom: 100%;\n left: 50%;\n margin-left: -5px;\n border-width: 5px;\n border-style: solid;\n transform: rotate(180deg);\n border-color: #555 transparent transparent transparent;\n }\n \n .bb-capture-toolbar-item:hover .bb-tooltip {\n visibility: visible;\n opacity: 1;\n }\n \n .bb-capture-options {\n display: none;\n }\n \n .bb-capture-options--active {\n display: flex;\n }\n\n @keyframes bbFadeOutRight {\n from {\n opacity: 1;\n }\n \n to {\n opacity: 0;\n }\n }\n \n @keyframes bbFadeOutDown {\n from {\n opacity: 1;\n }\n \n to {\n opacity: 0;\n transform: translate3d(0, 100%, 0);\n }\n }\n \n @keyframes bbFadeInOpacity {\n from {\n opacity: 0;\n }\n \n to {\n opacity: 1;\n }\n }\n \n @keyframes bbZoomOut {\n from {\n opacity: 1;\n }\n \n 50% {\n opacity: 0;\n transform: scale3d(0.3, 0.3, 0.3);\n }\n \n to {\n opacity: 0;\n }\n }\n \n @keyframes bbZoomIn {\n from {\n opacity: 0;\n transform: scale3d(0.3, 0.3, 0.3);\n }\n \n 50% {\n opacity: 1;\n }\n }\n \n @keyframes bbRecIconContFade {\n 0% {\n fill: #b10802;\n }\n 50% {\n fill: #ff0000;\n }\n 100% {\n fill: #b10802;\n }\n } \n .bb-capture-preview-retrybutton {\n color: ${contrastBackgroundColor};\n border-radius: ${buttonBorderRadius}px;\n background-color: ${backgroundColorHover};\n }\n .bb-capture-preview-retrybutton:hover {\n background-color: ${hoverHoverColor};\n }\n @keyframes bb-suc-fill {\n 100% {\n box-shadow: inset 0px 0px 0px 30px ${primaryColor};\n }\n }\n .bb-capture-toolbar-item-spacer {\n background-color: ${backgroundColorHover};\n }\n .bb-tooltip {\n border-radius: ${formItemBorderRadius}px;\n }\n @keyframes bbRecIconFade {\n 0% {\n fill: transparent;\n }\n 50% {\n fill: ${hoverHoverColor};\n }\n 100% {\n fill: transparent;\n }\n }\n .bb-capture-preview-sendbutton {\n color: ${contrastColor};\n background-color: ${primaryColor};\n border-radius: ${buttonBorderRadius}px;\n }\n .bb-capture-button-next {\n color: ${contrastColor};\n background-color: ${primaryColor};\n border-radius: ${formItemSmallBorderRadius}px;\n }\n .bb-capture-preview-inner {\n background-color: ${backgroundColor};\n border-radius: ${formItemBorderRadius}px;\n }\n .bb-capture-toolbar-item-timer {\n color: ${subTextColor};\n }\n .bb-svg-path {\n fill: ${contrastBackgroundColor};\n }\n .bb-capture-toolbar-item {\n border-radius: ${formItemBorderRadius}px;\n }\n .bb-capture-toolbar {\n background-color: ${backgroundColor};\n border-radius: ${formItemBorderRadius}px;\n }\n .bb-capture-toolbar-item-colorpicker {\n background-color: ${backgroundColor};\n }\n .bb-capture-toolbar-item--active {\n background-color: ${backgroundColorHover};\n }\n .bb-feedback-button-classic {\n border-top-left-radius: ${formItemBorderRadius}px;\n border-top-right-radius: ${formItemBorderRadius}px;\n }\n .bb-logo-logo--default path {\n fill: ${contrastButtonColor};\n }\n .bb-logo-arrowdown {\n fill: ${contrastButtonColor};\n }\n .bb-feedback-button-icon {\n background-color: ${buttonColor};\n }\n .bb-feedback-button-classic {\n background-color: ${buttonColor};\n color: ${contrastButtonColor};\n }\n\n @media only screen and (max-width: 450px) {\n [dir=rtl].gleap-frame-container,\n .gleap-frame-container {\n left: 0px;\n right: 0px;\n width: 100vw;\n max-width: 100vw;\n min-height: 100vh;\n max-height: 100vh;\n min-height: 100dvh !important;\n max-height: 100dvh !important;\n top: 0px;\n bottom: 0px;\n border-radius: 0px;\n animation-name: gleapFadeInUpMobile;\n }\n\n .gleap-frame-container-inner {\n width: 100vw;\n height: 100%;\n }\n\n .gleap-frame-container:not(.gleap-frame-container--survey):not(.gleap-frame-container--survey-full) .gleap-frame-container-inner {\n max-height: calc(var(--glvh, 1vh) * 100) !important;\n }\n\n .gleap-frame-container--survey {\n height: auto !important;\n top: initial !important;\n bottom: 0px !important;\n min-height: initial !important;\n }\n\n .gleap-frame-container--survey .gleap-frame-container-inner {\n height: 100vh !important;\n }\n\n .bb-tooltip {\n display: none !important;\n }\n \n .bb-capture-toolbar-item-colorpicker {\n top: 75px;\n }\n \n .bb-capture-button-next {\n margin-left: auto;\n }\n \n .bb-capture-dismiss {\n display: none;\n }\n \n .bb-capture-toolbar {\n top: 15px;\n right: 15px;\n left: 15px;\n width: auto;\n transform: none;\n }\n\n .bb-capture-editor-drag-info {\n display: none;\n }\n \n .bb-capture-editor-borderlayer {\n border-width: 4px;\n }\n }\n \n @media print {\n .bb-feedback-button {\n display: none !important;\n }\n \n .gleap-frame-container {\n display: none !important;\n }\n }\n\n .gleap-tour-sender {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n margin-bottom: 10px;\n }\n\n .gleap-tour-sender-image {\n width: 32px;\n height: 32px;\n border-radius: 32px;\n margin-right: 10px;\n background-size: cover;\n background-repeat: no-repeat;\n }\n\n .gleap-tour-popover.gleap-tour-popover-post {\n min-width: 550px;\n max-width: 550px;\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-tour-popover.gleap-tour-popover-post {\n min-width: calc(100vw - 40px);\n max-width: calc(100vw - 40px);\n }\n }\n\n .gleap-tour-message,\n .gleap-tour-message p,\n .gleap-tour-message ul {\n color: ${contrastBackgroundColor};\n }\n\n .gleap-tour-message h2 {\n font-weight: 600;\n font-size: 22px;\n }\n\n .gleap-tour-message h3 {\n font-weight: 600;\n font-size: 18px;\n }\n\n .gleap-tour-message p {\n line-height: 1.3;\n margin-bottom: 10px !important;\n margin-top: 10px !important;\n }\n\n .gleap-tour-message ul {\n line-height: 1.3;\n padding-left: 20px;\n margin-top: 10px !important;\n margin-bottom: 10px !important;\n }\n\n .gleap-tour-message {\n max-height: calc(80vh - 100px) !important;\n overflow-y: auto;\n min-width: 270px;\n }\n\n .gleap-tour-message::-webkit-scrollbar {\n width: 5px;\n }\n\n .gleap-tour-message::-webkit-scrollbar-track {\n border-radius: 0px;\n }\n \n .gleap-tour-message::-webkit-scrollbar-thumb {\n background: ${hoverHoverColor}; \n border-radius: 5px;\n }\n\n .gleap-tour-message::-webkit-scrollbar-thumb:hover {\n background: ${subTextColor};\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-tour-message {\n min-width: auto !important;\n }\n }\n\n .gleap-tour-message iframe {\n width: 100%;\n height: 300px;\n margin-top: 10px;\n margin-bottom: 10px;\n border: none;\n outline: none;\n display: block;\n }\n\n .gleap-tour-sender-name {\n font-size: 15px;\n }\n\n .gleap-tour-video {\n width: 100%;\n max-width: 100%;\n }\n\n .gleap-tour-video-svg--fullscreen {\n width: 100% !important;\n height: 100% !important;\n top: 0px !important;\n left: 0px !important;\n right: 0px !important;\n bottom: 0px !important;\n }\n\n .gleap-tour-video--playing .gleap-tour-video-playpause {\n opacity: 0;\n }\n \n .gleap-tour-video--playing:hover .gleap-tour-video-playpause {\n opacity: 1;\n }\n\n .gleap-tour-popover-video-pointer {\n padding: 0px !important;\n border-radius: 8px;\n position: relative;\n background-color: transparent !important;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-footer {\n position: absolute;\n top: 0px;\n left: 20px;\n right: 20px;\n opacity: 0;\n transition: opacity 200ms ease-in-out;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-footer button {\n padding: 5px 12px;\n }\n\n .gleap-tour-popover-video-pointer.gleap-tour-popover-can-close .gleap-tour-popover-footer {\n right: 40px !important;\n }\n\n .gleap-tour-popover-video-pointer:hover .gleap-tour-popover-footer {\n opacity: 1;\n }\n\n .gleap-tour-popover-pointer.gleap-tour-popover-no-sender .gleap-tour-message {\n padding-right: 20px;\n }\n\n .gleap-tour-video video {\n width: 100%;\n max-width: 100%;\n height: auto;\n border: none;\n outline: none;\n display: block;\n border-radius: 8px;\n }\n\n .gleap-admin-collapse-ui {\n z-index: ${zIndexBase + 35};\n cursor: pointer;\n position: fixed;\n bottom: 75px;\n right: 20px;\n width: 32px;\n height: 32px;\n border-radius: 100%;\n background-color: #fff;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: rgba(0, 0, 0, 0.16) 0px 10px 36px 0px, rgba(0, 0, 0, 0.06) 0px 0px 0px 1px;\n }\n\n .gleap-admin-collapse-ui svg {\n width: 20px;\n height: 14px;\n fill: #000 !important;\n }\n\n .gleap-admin-collapse-ui-active {\n bottom: 20px !important;\n }\n\n .gleap-admin-collapse-ui-active svg {\n transform: rotate(180deg);\n }\n\n .gleap-admin-frame-container-active {\n display: none !important;\n }\n\n .gleap-admin-frame-container {\n position: fixed;\n bottom: 0px;\n left: 0px;\n right: 0px;\n width: 100vw;\n z-index: ${zIndexBase + 40};\n }\n\n .gleap-admin-frame {\n width: 100%;\n height: 100% !important;\n border: none;\n outline: none;\n display: block;\n }\n \n .gleap-tour-message .linktype-link {\n display: inline-block !important;\n background-color: transparent !important;\n color: ${buttonColor} !important;\n }\n\n .gleap-tooltip .linktype-button,\n .gleap-tour-message .linktype-button {\n display: inline-block !important;\n border-radius: 5px;\n box-sizing: border-box;\n padding: 10px 20px !important;\n text-decoration: none !important;\n background-color: ${buttonColor} !important;\n color: ${contrastButtonColor} !important;\n }\n\n .gleap-tour-message img {\n width: 100%;\n max-width: 100%;\n min-height: 260px;\n height: auto;\n margin-top: 10px;\n margin-bottom: 10px;\n object-fit: cover;\n }\n\n .gleap-tour-active .gleap-tour-overlay {\n pointer-events: none;\n }\n \n .gleap-tour-active * {\n pointer-events: none;\n }\n \n .gleap-tour-active .gleap-tour-active-element,\n .gleap-tour-active .gleap-tour-active-element *,\n .gleap-tour-popover,\n .gleap-tour-popover * {\n pointer-events: auto;\n }\n \n @keyframes animate-fade-in {\n 0% {\n opacity: 0;\n }\n \n to {\n opacity: 1;\n }\n }\n \n .gleap-tour-fade .gleap-tour-overlay {\n animation: animate-fade-in 200ms ease-in-out;\n }\n \n .gleap-tour-fade .gleap-tour-popover {\n animation: animate-fade-in 200ms;\n }\n\n .gleap-tour-video-playpause {\n position: absolute;\n bottom: 8px;\n left: 8px;\n width: 32px;\n height: 32px;\n padding: 4px;\n background-color: rgba(0,0,0,0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border-radius: 8px;\n transition: opacity 200ms ease-in-out;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-arrow {\n display: none !important;\n }\n\n .gleap-tour-video-playpause svg {\n width: 34px;\n height: auto;\n fill: #fff;\n }\n \n /* Popover styles */\n .gleap-tour-popover {\n all: unset;\n box-sizing: border-box;\n color: #2d2d2d;\n margin: 0;\n padding: 15px;\n border-radius: ${formItemBorderRadius}px;\n min-width: 250px;\n max-width: 300px;\n box-shadow: 0 1px 10px #0006;\n z-index: 1000000000;\n position: fixed;\n top: 0;\n right: 0;\n background-color: #fff;\n }\n \n .gleap-tour-popover * {\n font-family: \"Helvetica Neue\", Inter, ui-sans-serif, \"Apple Color Emoji\", Helvetica, Arial, sans-serif;\n }\n \n .gleap-tour-popover-title {\n font: 19px / normal sans-serif;\n font-weight: 700;\n display: block;\n position: relative;\n line-height: 1.5;\n zoom: 1;\n margin: 0;\n }\n \n .gleap-tour-popover-close-btn {\n all: unset;\n position: absolute;\n top: 5px;\n right: 5px;\n width: 32px;\n height: 32px;\n cursor: pointer;\n font-size: 30px;\n font-weight: 500;\n line-height: 32px;\n color: #d2d2d2;\n z-index: 1;\n text-align: center;\n transition: color;\n transition-duration: 200ms;\n }\n \n .gleap-tour-popover-close-btn:hover,\n .gleap-tour-popover-close-btn:focus {\n color: #2d2d2d;\n }\n \n .gleap-tour-popover-title[style*=\"block\"] + .gleap-tour-popover-description {\n margin-top: 5px;\n }\n \n .gleap-tour-popover-description {\n margin-bottom: 0;\n font: 15px / normal sans-serif;\n line-height: 1.5;\n font-weight: 400;\n zoom: 1;\n }\n \n .gleap-tour-popover-footer {\n margin-top: 15px;\n text-align: right;\n zoom: 1;\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n \n .gleap-tour-popover-progress-text {\n font-size: 13px;\n font-weight: 400;\n color: #727272;\n zoom: 1;\n }\n \n .gleap-tour-popover-footer button {\n background-color: ${primaryColor};\n color: ${contrastColor};\n border-radius: ${formItemSmallBorderRadius}px;\n box-sizing: border-box;\n padding: 10px 20px;\n font-size: 14px;\n font-weight: bold;\n line-height: 21px;\n border: none;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: none !important;\n outline: none !important;\n }\n\n .gleap-tour-popover-prev-btn {\n color: ${contrastBackgroundColor} !important;\n background-color: ${backgroundColorHover} !important;\n margin-right: 3px;\n }\n\n .gleap-tour-popover-prev-btn:hover {\n background-color: ${primaryColor}22 !important;\n color: ${primaryColor} !important;\n }\n \n .gleap-tour-popover-footer .gleap-tour-popover-btn-disabled {\n opacity: 0.5;\n pointer-events: none;\n }\n \n /* Disable the scrolling of parent element if it has an active element*/\n :not(body):has(> .gleap-tour-active-element) {\n overflow: hidden !important;\n }\n \n .gleap-tour-no-interaction, .gleap-tour-no-interaction * {\n pointer-events: none !important;\n }\n \n .gleap-tour-popover-navigation-btns {\n display: flex;\n flex-grow: 1;\n justify-content: flex-end;\n }\n \n .gleap-tour-popover-navigation-btns button + button {\n margin-left: 4px;\n }\n \n .gleap-tour-popover-arrow {\n content: \"\";\n position: absolute;\n border: 5px solid #fff;\n }\n \n .gleap-tour-popover-arrow-side-over {\n display: none;\n }\n \n /** Popover Arrow Sides **/\n .gleap-tour-popover-arrow-side-left {\n left: 100%;\n border-right-color: transparent;\n border-bottom-color: transparent;\n border-top-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-right {\n right: 100%;\n border-left-color: transparent;\n border-bottom-color: transparent;\n border-top-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-top {\n top: 100%;\n border-right-color: transparent;\n border-bottom-color: transparent;\n border-left-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-bottom {\n bottom: 100%;\n border-left-color: transparent;\n border-top-color: transparent;\n border-right-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-center {\n display: none;\n }\n \n /* Left/Start + Right/Start */\n .gleap-tour-popover-arrow-side-left.gleap-tour-popover-arrow-align-start,\n .gleap-tour-popover-arrow-side-right.gleap-tour-popover-arrow-align-start {\n top: 15px;\n }\n \n /* Top/Start + Bottom/Start */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-start,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-start {\n left: 15px;\n }\n \n /* End/Left + End/Right */\n .gleap-tour-popover-arrow-align-end.gleap-tour-popover-arrow-side-left,\n .gleap-tour-popover-arrow-align-end.gleap-tour-popover-arrow-side-right {\n bottom: 15px;\n }\n \n /* Top/End + Bottom/End */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-end,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-end {\n right: 15px;\n }\n \n /* Left/Center + Right/Center */\n .gleap-tour-popover-arrow-side-left.gleap-tour-popover-arrow-align-center,\n .gleap-tour-popover-arrow-side-right.gleap-tour-popover-arrow-align-center {\n top: 50%;\n margin-top: -5px;\n }\n \n /* Top/Center + Bottom/Center */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-center,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-center {\n left: 50%;\n margin-left: -5px;\n }\n \n /* No arrow */\n .gleap-tour-popover-arrow-none {\n display: none;\n } \n\n /* Modal styles */\n .gleap-modal-wrapper {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: ${zIndexBase + 40};\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .gleap-modal-backdrop {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.5);\n z-index: ${zIndexBase + 41};\n }\n\n .gleap-modal {\n position: relative;\n width: 90%;\n max-width: 600px;\n max-height: 90vh;\n z-index: ${zIndexBase + 100};\n background-color: ${backgroundColor};\n border-radius: ${containerRadius}px;\n overflow: hidden;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-name: gleapFadeInUp;\n }\n\n .gleap-modal-frame {\n width: 100%;\n border: none;\n display: block;\n outline: none;\n }\n\n body.gleap-modal-open {\n overflow: hidden;\n }\n\n @keyframes gleapFadeInUp {\n from {\n opacity: 0;\n transform: translate3d(0, 20px, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n `;\n\n const oldNode = document.querySelector(\".gleap-styles\");\n if (oldNode) {\n oldNode.remove();\n }\n const node = document.createElement(\"style\");\n node.innerHTML = colorStyleSheet;\n node.className = \"gleap-styles\";\n document.body.appendChild(node);\n};\n\nexport const loadIcon = function (name, color) {\n if (name === \"button\") {\n return ``;\n }\n\n if (name === \"drag\") {\n return ``;\n }\n\n if (name === \"unmute\") {\n return ``;\n }\n\n if (name === \"mute\") {\n return ``;\n }\n\n if (name === \"replay\") {\n return `\n \n `;\n }\n\n if (name === \"dismiss\") {\n return ``;\n }\n\n if (name === \"blur\") {\n return `\n \n`;\n }\n\n if (name === \"pen\") {\n return `\n \n \n \n \n \n \n \n \n \n \n \n \n`;\n }\n\n if (name === \"rect\") {\n return `\n \n \n \n \n \n \n \n \n \n \n`;\n }\n\n if (name === \"pointer\") {\n return `\n \n `;\n }\n\n if (name === \"clip\") {\n return `\n \n \n \n \n \n`;\n }\n\n if (name === \"mic\") {\n return `\n \n \n \n \n `;\n }\n\n if (name === \"camera\") {\n return `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n`;\n }\n\n if (name === \"recorderon\") {\n return `\n \n \n \n \n \n \n \n \n \n \n \n`;\n }\n\n if (name === \"recorderoff\") {\n return `\n \n \n \n \n \n \n \n \n `;\n }\n\n if (name === \"arrowdown\") {\n return `\n \n `;\n }\n\n if (name === \"arrowleft\") {\n return `\n \n `;\n }\n\n if (name === \"close\") {\n return `\n \n `;\n }\n\n if (name === \"undo\") {\n return `\n \n \n \n \n \n \n \n \n \n `;\n }\n\n if (name === \"circle-dot\") {\n return ``;\n }\n\n if (name === \"circle-question\") {\n return ``;\n }\n\n if (name === \"circle-info\") {\n return ``;\n }\n\n if (name === \"circle-exclamation\") {\n return ``;\n }\n\n if (name === \"circle-up\") {\n return ``;\n }\n\n if (name === \"circle-right\") {\n return ``;\n }\n\n return \"\";\n};\n","class GleapNetworkIntercepter {\n startTimestamp = Date.now();\n requestId = 0;\n requests = {};\n externalRequests = [];\n maxRequests = 30;\n filters = [];\n defaultBlacklist = [\"gleap.io\"];\n blacklist = [];\n initialized = false;\n stopped = false;\n loadAllResources = false;\n\n // GleapNetworkIntercepter singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapNetworkIntercepter();\n }\n return this.instance;\n }\n\n setLoadAllResources(loadAllResources) {\n this.loadAllResources = loadAllResources;\n }\n\n isContentTypeSupported(contentType) {\n if (typeof contentType !== \"string\") {\n return false;\n }\n\n if (contentType === \"\") {\n return true;\n }\n\n contentType = contentType.toLocaleLowerCase();\n\n const supportedContentTypes = [\"text/\", \"xml\", \"json\"];\n for (var i = 0; i < supportedContentTypes.length; i++) {\n if (contentType.includes(supportedContentTypes[i])) {\n return true;\n }\n }\n\n return false;\n }\n\n getRequests() {\n var requests = JSON.parse(JSON.stringify(Object.values(this.requests)));\n\n // Merge external requests into internal requests.\n if (this.externalRequests && this.externalRequests.length > 0) {\n requests = requests.concat(this.externalRequests);\n }\n\n if (this.filters && this.filters.length > 0) {\n // Perform network log filtering.\n for (var i = 0; i < requests.length; i++) {\n var request = requests[i];\n\n // Headers\n if (request && request.request && request.request.headers) {\n for (var j = 0; j < this.filters.length; j++) {\n delete request.request.headers[this.filters[j]];\n }\n }\n\n // Payload\n if (request && request.request && request.request.payload) {\n var payloadObj = request.request.payload;\n try {\n payloadObj = JSON.parse(request.request.payload);\n } catch (e) { }\n\n if (payloadObj) {\n for (var j = 0; j < this.filters.length; j++) {\n delete payloadObj[this.filters[j]];\n }\n request.request.payload = JSON.stringify(payloadObj);\n }\n }\n\n // Response\n if (request && request.response && request.response.responseText) {\n try {\n var data = JSON.parse(request.response.responseText);\n for (var j = 0; j < this.filters.length; j++) {\n delete data[this.filters[j]];\n }\n request.response.responseText = JSON.stringify(data);\n } catch (e) { }\n }\n }\n }\n\n // Get static resources from performance.\n try {\n if (typeof window !== \"undefined\" && window.performance) {\n var resources = window.performance.getEntriesByType(\"resource\");\n for (var i = 0; i < resources.length; i++) {\n var resource = resources[i];\n if (resource && resource.name) {\n if ((this.loadAllResources || [\"xmlhttprequest\", \"fetch\"].indexOf(resource.initiatorType) > -1) && !requests.find(request => request.url === resource.name)) {\n requests.push({\n type: \"RESOURCE\",\n date: new Date(this.startTimestamp + resource.startTime),\n url: resource.name,\n duration: Math.round(resource.duration),\n initiatorType: resource.initiatorType\n });\n }\n }\n }\n }\n } catch (exp) { }\n\n var blacklist = this.blacklist.concat(this.defaultBlacklist);\n if (blacklist && blacklist.length > 0) {\n try {\n requests = requests.filter((request) => {\n for (var i = 0; i < blacklist.length; i++) {\n if (request && request.url && request.url.includes(blacklist[i])) {\n return false;\n }\n }\n return true;\n });\n } catch (exp) { }\n }\n\n return requests;\n }\n\n setMaxRequests(maxRequests) {\n if (maxRequests > 70) {\n maxRequests = 70;\n }\n this.maxRequests = maxRequests;\n }\n\n setStopped(stopped) {\n this.stopped = stopped;\n }\n\n setFilters(filters) {\n this.filters = this.filters.concat(filters ? filters : []);\n }\n\n setBlacklist(blacklist) {\n this.blacklist = this.blacklist.concat(blacklist ? blacklist : []);\n }\n\n cleanRequests() {\n var keys = Object.keys(this.requests);\n if (keys.length > this.maxRequests) {\n var keysToRemove = keys.slice(0, keys.length - this.maxRequests);\n for (var i = 0; i < keysToRemove.length; i++) {\n delete this.requests[keysToRemove[i]];\n }\n }\n }\n\n calcRequestTime(bbRequestId) {\n if (!bbRequestId || !this.requests || !this.requests[bbRequestId]) {\n return;\n }\n\n var startDate = this.requests[bbRequestId][\"date\"];\n if (startDate) {\n this.requests[bbRequestId][\"duration\"] =\n new Date().getTime() - startDate.getTime();\n }\n }\n\n getTextContentSize(text) {\n var size = 0;\n try {\n size = new TextEncoder().encode(text).length;\n } catch (exp) {\n try {\n size = encodeURI(s).split(/%..|./).length - 1;\n } catch (exp) {\n try {\n size = new Blob([text]).size;\n } catch (exp) {\n size = text.length;\n }\n }\n }\n\n const kiloBytes = size / 1024;\n const megaBytes = kiloBytes / 1024;\n return megaBytes;\n }\n\n cleanupContentSize(text) {\n const contentSize = this.getTextContentSize(text);\n if (contentSize > 0.15) {\n return \"\";\n }\n\n return text;\n }\n\n cleanupPayload(payload) {\n if (payload === undefined || payload === null) {\n return \"{}\";\n }\n\n try {\n if (typeof TextDecoder !== undefined && ArrayBuffer.isView(payload)) {\n let value = new TextDecoder().decode(payload);\n return value;\n }\n } catch (exp) { }\n\n return payload;\n }\n\n preparePayload(payload) {\n var payloadText = this.cleanupPayload(payload);\n return this.cleanupContentSize(payloadText);\n }\n\n start() {\n if (this.initialized) {\n return;\n }\n\n this.initialized = true;\n const self = this;\n this.interceptNetworkRequests({\n onFetch: (params, bbRequestId) => {\n if (this.stopped || !bbRequestId || !this.requests) {\n return;\n }\n\n if (\n params.length > 0 &&\n typeof params[0] !== \"undefined\" &&\n typeof params[0].url !== \"undefined\"\n ) {\n this.requests[bbRequestId] = {\n url: params[0].url,\n date: new Date(),\n request: {\n payload: \"\",\n headers:\n typeof params[0].headers !== \"undefined\"\n ? Object.fromEntries(params[0].headers.entries())\n : {},\n },\n type:\n typeof params[0].method !== \"undefined\" ? params[0].method : \"\",\n };\n } else {\n if (params.length >= 2 && params[1]) {\n var method =\n params[1] && params[1].method ? params[1].method : \"GET\";\n this.requests[bbRequestId] = {\n request: {\n payload: self.preparePayload(params[1].body),\n headers: params[1].headers,\n },\n type: method,\n url: params[0],\n date: new Date(),\n };\n } else {\n this.requests[bbRequestId] = {\n url: params[0],\n date: new Date(),\n };\n }\n }\n\n this.cleanRequests();\n },\n onFetchLoad: (req, bbRequestId) => {\n if (\n this.stopped ||\n !bbRequestId ||\n !this.requests ||\n !this.requests[bbRequestId]\n ) {\n return;\n }\n\n try {\n this.requests[bbRequestId][\"success\"] = true;\n this.requests[bbRequestId][\"response\"] = {\n status: req.status,\n statusText: \"\",\n responseText: \"\",\n };\n this.calcRequestTime(bbRequestId);\n } catch (exp) { }\n\n try {\n var contentType = \"\";\n if (req.headers && typeof req.headers.get !== \"undefined\") {\n contentType = req.headers.get(\"content-type\");\n }\n\n if (this.isContentTypeSupported(contentType)) {\n req\n .text()\n .then((responseText) => {\n if (this.requests[bbRequestId]) {\n this.requests[bbRequestId][\"success\"] = true;\n this.requests[bbRequestId][\"response\"] = {\n status: req.status,\n statusText: req.statusText,\n responseText: self.cleanupContentSize(responseText)\n };\n }\n this.calcRequestTime(bbRequestId);\n this.cleanRequests();\n })\n .catch((err) => {\n this.cleanRequests();\n });\n } else {\n if (this.requests[bbRequestId]) {\n this.requests[bbRequestId][\"success\"] = true;\n this.requests[bbRequestId][\"response\"] = {\n status: req.status,\n statusText: req.statusText,\n responseText: \"\",\n };\n }\n this.calcRequestTime(bbRequestId);\n this.cleanRequests();\n }\n } catch (exp) { }\n },\n onFetchFailed: (err, bbRequestId) => {\n if (\n this.stopped ||\n !bbRequestId ||\n !this.requests ||\n !this.requests[bbRequestId]\n ) {\n return;\n }\n\n this.requests[bbRequestId][\"success\"] = false;\n this.calcRequestTime(bbRequestId);\n this.cleanRequests();\n },\n onOpen: (request, args) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.bbRequestId &&\n args.length >= 2 &&\n this.requests\n ) {\n this.requests[request.bbRequestId] = {\n type: args[0],\n url: args[1],\n date: new Date(),\n };\n }\n\n this.cleanRequests();\n },\n onSend: (request, args) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.bbRequestId &&\n this.requests &&\n this.requests[request.bbRequestId]\n ) {\n this.requests[request.bbRequestId][\"request\"] = {\n payload: this.preparePayload(args.length > 0 ? args[0] : \"{}\"),\n headers: request.requestHeaders,\n };\n }\n\n this.cleanRequests();\n },\n onError: (request, args) => {\n if (\n !this.stopped &&\n this.requests &&\n request &&\n request.currentTarget &&\n request.currentTarget.bbRequestId &&\n this.requests[request.currentTarget.bbRequestId]\n ) {\n this.requests[request.currentTarget.bbRequestId][\"success\"] = false;\n this.calcRequestTime(request.bbRequestId);\n }\n\n this.cleanRequests();\n },\n onLoad: (request, args) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.currentTarget &&\n request.currentTarget.bbRequestId &&\n this.requests &&\n this.requests[request.currentTarget.bbRequestId]\n ) {\n var target = request.currentTarget;\n var responseType = target.responseType;\n var responseText = \"<\" + responseType + \">\";\n if (responseType === \"\" || responseType === \"text\") {\n responseText = this.cleanupContentSize(target.responseText);\n }\n\n this.requests[target.bbRequestId][\"success\"] = true;\n this.requests[target.bbRequestId][\"response\"] = {\n status: target.status,\n statusText: target.statusText,\n responseText: responseText,\n };\n\n this.calcRequestTime(target.bbRequestId);\n }\n\n this.cleanRequests();\n },\n });\n }\n\n interceptNetworkRequests(callback) {\n var self = this;\n const open = XMLHttpRequest.prototype.open;\n const send = XMLHttpRequest.prototype.send;\n\n // Only override open and send if they haven't been overridden already.\n if (XMLHttpRequest.prototype.gleapSetRequestHeader === undefined) {\n XMLHttpRequest.prototype.gleapSetRequestHeader =\n XMLHttpRequest.prototype.setRequestHeader;\n }\n\n if (XMLHttpRequest.prototype.gleapSetRequestHeader) {\n XMLHttpRequest.prototype.setRequestHeader = function (header, value) {\n if (!this.requestHeaders) {\n this.requestHeaders = {};\n }\n\n if (this.requestHeaders && this.requestHeaders.hasOwnProperty(header)) {\n return;\n }\n\n if (!this.requestHeaders[header]) {\n this.requestHeaders[header] = [];\n }\n\n this.requestHeaders[header].push(value);\n this.gleapSetRequestHeader(header, value);\n };\n }\n\n XMLHttpRequest.prototype.open = function () {\n this[\"bbRequestId\"] = ++self.requestId;\n callback.onOpen && callback.onOpen(this, arguments);\n if (callback.onLoad) {\n this.addEventListener(\"load\", callback.onLoad.bind(callback));\n }\n if (callback.onError) {\n this.addEventListener(\"error\", callback.onError.bind(callback));\n }\n return open.apply(this, arguments);\n };\n XMLHttpRequest.prototype.send = function () {\n callback.onSend && callback.onSend(this, arguments);\n return send.apply(this, arguments);\n };\n\n if (window.fetch) {\n (function () {\n var originalFetch = window.fetch;\n window.fetch = function () {\n var bbRequestId = ++self.requestId;\n callback.onFetch(arguments, bbRequestId);\n\n return originalFetch\n .apply(this, arguments)\n .then(function (response) {\n if (response && typeof response.clone === \"function\") {\n const data = response.clone();\n callback.onFetchLoad(data, bbRequestId);\n }\n\n return response;\n })\n .catch((err) => {\n callback.onFetchFailed(err, bbRequestId);\n throw err;\n });\n };\n })();\n }\n\n return callback;\n }\n\n blobToTextPromise(blob) {\n return new Promise(function (resolve, reject) {\n var fr = new FileReader();\n fr.onload = function (evt) {\n if (evt && evt.target && evt.target.result) {\n resolve(evt.target.result);\n } else {\n reject();\n }\n };\n fr.onerror = function (err) {\n reject(err);\n };\n fr.readAsText(blob);\n });\n }\n}\n\nexport default GleapNetworkIntercepter;\n","export const resizeImage = (base64Str, maxWidth = 400, maxHeight = 400) => {\n return new Promise((resolve, reject) => {\n var isJPEG = base64Str.indexOf(\"data:image/jpeg\") === 0;\n var img = new Image();\n img.src = base64Str;\n img.onerror = () => {\n reject();\n };\n img.onload = () => {\n var canvas = document.createElement(\"canvas\");\n var MAX_WIDTH = maxWidth;\n var MAX_HEIGHT = maxHeight;\n\n // Adjust max width / height based on image props\n if (maxWidth > img.width / 1.5) {\n MAX_WIDTH = img.width / 1.5;\n }\n\n if (maxHeight > img.height / 1.5) {\n MAX_HEIGHT = img.height / 1.5;\n }\n\n var width = img.width;\n var height = img.height;\n\n if (width > height) {\n if (width > MAX_WIDTH) {\n height *= MAX_WIDTH / width;\n width = MAX_WIDTH;\n }\n } else {\n if (height > MAX_HEIGHT) {\n width *= MAX_HEIGHT / height;\n height = MAX_HEIGHT;\n }\n }\n canvas.width = width;\n canvas.height = height;\n var ctx = canvas.getContext(\"2d\");\n ctx.drawImage(img, 0, 0, width, height);\n\n if (isJPEG) {\n resolve(canvas.toDataURL(\"image/jpeg\", 0.7));\n } else {\n resolve(canvas.toDataURL());\n }\n };\n });\n};\n\nexport const isMobile = () => {\n if (\n /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(\n navigator.userAgent\n ) ||\n /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(\n navigator.userAgent.substr(0, 4)\n )\n ) {\n return true;\n }\n return false;\n};\n\nexport const gleapDataParser = function (data) {\n if (typeof data === \"string\" || data instanceof String) {\n try {\n return JSON.parse(data);\n } catch (e) {\n return {};\n }\n }\n return data;\n};\n\nexport const truncateString = (str, num) => {\n if (str.length > num) {\n return str.slice(0, num) + \"...\";\n } else {\n return str;\n }\n};\n\nconst removeSubDomain = (v) => {\n try {\n var parts = v.split(\".\");\n var is2ndLevelDomain = false;\n const secondLevel = parts[parts.length - 2];\n if (\n secondLevel === \"co\" ||\n secondLevel === \"com\" ||\n secondLevel === \"gv\" ||\n secondLevel === \"ac\" ||\n secondLevel === \"edu\" ||\n secondLevel === \"gov\" ||\n secondLevel === \"mil\" ||\n secondLevel === \"net\" ||\n secondLevel === \"org\"\n ) {\n is2ndLevelDomain = true;\n }\n parts = parts.slice(is2ndLevelDomain ? -3 : -2);\n return parts.join(\".\");\n } catch (exp) {}\n return v;\n};\n\nexport const loadFromGleapCache = (key) => {\n try {\n const cachedData = localStorage.getItem(`gleap-widget-${key}`);\n if (cachedData) {\n const config = JSON.parse(cachedData);\n return config;\n }\n } catch (exp) {}\n return null;\n};\n\nexport const saveToGleapCache = (key, data) => {\n const k = `gleap-widget-${key}`;\n if (data) {\n try {\n localStorage.setItem(k, JSON.stringify(data));\n } catch (exp) {}\n } else {\n localStorage.removeItem(k);\n }\n};\n\nexport const setGleapCookie = (name, value, days) => {\n try {\n var expires = \"\";\n if (days) {\n var date = new Date();\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\n expires = \"; expires=\" + date.toUTCString();\n }\n const host = removeSubDomain(window.location.host.split(\":\")[0]);\n document.cookie =\n name + \"=\" + (value || \"\") + expires + \"; path=/; domain=\" + host;\n } catch (exp) {}\n};\n\nexport const getGleapCookie = (name) => {\n try {\n var nameEQ = name + \"=\";\n var ca = document.cookie.split(\";\");\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n while (c.charAt(0) == \" \") c = c.substring(1, c.length);\n if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);\n }\n } catch (exp) {}\n return null;\n};\n\nexport const eraseGleapCookie = (name) => {\n try {\n const host = removeSubDomain(window.location.host.split(\":\")[0]);\n document.cookie =\n name + \"=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT; Domain=\" + host;\n } catch (exp) {}\n};\n\nexport const getDOMElementDescription = (element, html = true) => {\n var innerText = truncateString(element.innerText || \"\", 40)\n .replace(/(\\r\\n|\\n|\\r)/gm, \"\")\n .replace(/ +(?= )/g, \"\");\n var elementId = \"\";\n var elementClass = \"\";\n if (typeof element.getAttribute !== \"undefined\") {\n const elemId = element.getAttribute(\"id\");\n if (elemId) {\n elementId = ` id=\"${elemId}\"`;\n }\n const elemClass = element.getAttribute(\"class\");\n if (elemClass) {\n elementClass = ` class=\"${elemClass}\"`;\n }\n }\n const elementTag = (element.tagName || \"\").toLowerCase();\n\n var htmlPre = \"<\";\n var htmlPost = \">\";\n if (!html) {\n htmlPre = \"[\";\n htmlPost = \"]\";\n }\n\n return `${htmlPre}${elementTag}${elementId}${elementClass}${htmlPost}${innerText}${htmlPre}/${elementTag}${htmlPost}`;\n};\n\nexport const runFunctionWhenDomIsReady = (callback) => {\n if (\n document.readyState === \"complete\" ||\n document.readyState === \"loaded\" ||\n document.readyState === \"interactive\"\n ) {\n callback();\n } else {\n document.addEventListener(\"DOMContentLoaded\", () => {\n callback();\n });\n }\n};\n\nexport const fixGleapHeight = () => {\n try {\n if (\n \"visualViewport\" in window &&\n /iPad|iPhone|iPod/.test(navigator.userAgent)\n ) {\n let initialHeight = window.innerHeight;\n\n function updateContainerHeight() {\n try {\n const gleapFrameContainer = document.querySelector(\n \".gleap-frame-container-inner iframe\"\n );\n\n if (!gleapFrameContainer) {\n return;\n }\n\n // Check if the keyboard is open\n if (window.visualViewport.height < initialHeight) {\n gleapFrameContainer.style.setProperty(\n \"max-height\",\n window.visualViewport.height + \"px\",\n \"important\"\n );\n } else {\n // Remove the padding bottom\n gleapFrameContainer.style.removeProperty(\"max-height\");\n }\n } catch (error) {}\n }\n\n function handleOrientationChange() {\n try {\n // Update initial dimensions\n initialHeight = window.innerHeight;\n updateContainerHeight();\n } catch (error) {}\n }\n\n // Update on resize (keyboard show/hide and viewport resize)\n window.visualViewport.addEventListener(\"resize\", updateContainerHeight);\n\n // Handle orientation changes\n window.addEventListener(\"orientationchange\", handleOrientationChange);\n\n // Update initially\n updateContainerHeight();\n }\n } catch (error) {}\n};\n","import { GleapSession, GleapTranslationManager } from \"./Gleap\"; // Adjust path if needed\n\n// Enum for request states\nconst RequestStatus = {\n PENDING: \"pending\",\n SUCCESS: \"success\",\n ERROR: \"error\",\n};\n\nclass ChecklistNetworkManager {\n static instance = null;\n\n /** @private {Map>} outboundId -> Promise */\n validationRequests = new Map();\n /** @private {Map} */\n validationCache = new Map(); // Caches final results (success/error)\n\n /** @private {Map>} internalId -> Promise */\n fetchRequests = new Map();\n /** @private {Map} */\n fetchCache = new Map(); // Caches final results (success/error)\n\n // Private constructor for Singleton\n constructor() {\n if (ChecklistNetworkManager.instance) {\n return ChecklistNetworkManager.instance;\n }\n ChecklistNetworkManager.instance = this;\n }\n\n /**\n * Gets the singleton instance of the ChecklistNetworkManager.\n * @returns {ChecklistNetworkManager} The singleton instance.\n */\n static getInstance() {\n if (!ChecklistNetworkManager.instance) {\n ChecklistNetworkManager.instance = new ChecklistNetworkManager();\n }\n return ChecklistNetworkManager.instance;\n }\n\n clearCache() {\n this.validationCache.clear();\n this.fetchCache.clear();\n this.validationRequests.clear();\n this.fetchRequests.clear();\n }\n\n /**\n * @private\n * Gets common query parameters for API requests.\n * @returns {string} Query parameter string.\n */\n _getQueryParams() {\n const gleapSessionInstance = GleapSession.getInstance();\n const session = gleapSessionInstance?.session;\n const lang =\n GleapTranslationManager.getInstance().getActiveLanguage() || \"en\";\n return `gleapId=${session?.gleapId || \"\"}&gleapHash=${\n session?.gleapHash || \"\"\n }&lang=${lang}`;\n }\n\n /**\n * @private\n * Gets the API base URL.\n * @returns {string | null} The API URL or null if not configured.\n */\n _getApiUrl() {\n const gleapSessionInstance = GleapSession.getInstance();\n return gleapSessionInstance?.apiUrl || null;\n }\n\n /**\n * @private\n * Makes an XMLHttpRequest and returns a Promise.\n * @param {string} method - HTTP method.\n * @param {string} url - The request URL.\n * @param {object|null} data - Data to send in the request body.\n * @returns {Promise} Promise resolving with parsed JSON response on success, rejecting on error.\n */\n _makeRequest(method, url, data) {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n xhr.open(method, url);\n\n const gleapSessionInstance = GleapSession.getInstance();\n gleapSessionInstance?.injectSession(xhr); // Inject session headers\n\n if (data) {\n xhr.setRequestHeader(\"Content-Type\", \"application/json;charset=UTF-8\");\n }\n\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n if (xhr.status >= 200 && xhr.status < 300) {\n try {\n // Handle potential empty success responses (e.g., 204)\n const responseData = xhr.responseText\n ? JSON.parse(xhr.responseText)\n : null;\n resolve(responseData);\n } catch (err) {\n reject({\n status: xhr.status,\n statusText: \"JSON Parse Error\",\n responseText: xhr.responseText,\n error: err,\n });\n }\n } else {\n reject({\n status: xhr.status,\n statusText: xhr.statusText,\n responseText: xhr.responseText,\n });\n }\n }\n };\n\n xhr.onerror = () => {\n reject({ status: 0, statusText: \"Network Error\", responseText: null });\n };\n\n xhr.send(data ? JSON.stringify(data) : null);\n });\n }\n\n /**\n * @private\n * Creates a cache key from outboundId and sharedKey\n * @param {string} outboundId - The public/outbound checklist ID.\n * @param {string|undefined} sharedKey - Optional shared key.\n * @returns {string} Combined cache key.\n */\n _createCacheKey(outboundId, sharedKey) {\n return sharedKey ? `${outboundId}::${sharedKey}` : outboundId;\n }\n\n /**\n * Validates an outbound checklist ID, returning a Promise for the internal ID.\n * Manages caching and deduplicates requests.\n * @param {string} outboundId - The public/outbound checklist ID.\n * @param {string} [sharedKey] - Optional shared key for the checklist.\n * @returns {Promise} A promise that resolves with the internal checklist ID.\n */\n validateChecklist(outboundId, sharedKey) {\n const cacheKey = this._createCacheKey(outboundId, sharedKey);\n\n // 1. Check cache for final result (success or error)\n const cachedResult = this.validationCache.get(cacheKey);\n if (cachedResult) {\n if (cachedResult.status === RequestStatus.SUCCESS) {\n return Promise.resolve(cachedResult.internalId);\n } else {\n return Promise.reject(cachedResult.error);\n }\n }\n\n // 2. Check for an ongoing request\n if (this.validationRequests.has(cacheKey)) {\n return this.validationRequests.get(cacheKey);\n }\n\n // 3. Start a new request\n const apiUrl = this._getApiUrl();\n if (!apiUrl) {\n const error = new Error(\n \"ChecklistNetworkManager: Gleap API URL not configured.\"\n );\n this.validationCache.set(cacheKey, {\n status: RequestStatus.ERROR,\n error,\n });\n return Promise.reject(error);\n }\n\n const url = `${apiUrl}/outbound/checklists?${this._getQueryParams()}`;\n const requestPromise = this._makeRequest(\"POST\", url, {\n outboundId,\n sharedKey,\n })\n .then((responseData) => {\n if (responseData && responseData.id) {\n this.validationCache.set(cacheKey, {\n status: RequestStatus.SUCCESS,\n internalId: responseData.id,\n });\n return responseData.id;\n } else {\n const error = new Error(\"Validation response missing checklist ID.\");\n this.validationCache.set(cacheKey, {\n status: RequestStatus.ERROR,\n error: responseData || error,\n });\n throw error; // Rethrow to be caught by catch block\n }\n })\n .catch((error) => {\n // Store the error object itself in the cache\n this.validationCache.set(cacheKey, {\n status: RequestStatus.ERROR,\n error,\n });\n throw error; // Re-throw so callers can catch it\n })\n .finally(() => {\n // Remove from pending requests map once done (success or fail)\n this.validationRequests.delete(cacheKey);\n });\n\n // Store the promise for potential concurrent requests\n this.validationRequests.set(cacheKey, requestPromise);\n return requestPromise;\n }\n\n /**\n * Fetches the full checklist data using the internal ID, returning a Promise.\n * Manages caching and deduplicates requests.\n * @param {string} internalId - The internal checklist ID.\n * @returns {Promise} A promise that resolves with the full checklist data.\n */\n fetchChecklist(internalId) {\n // 1. Check cache for final result (success or error)\n const cachedResult = this.fetchCache.get(internalId);\n if (cachedResult) {\n if (cachedResult.status === RequestStatus.SUCCESS) {\n // Return a deep copy to prevent mutation issues if multiple components use it\n return Promise.resolve(JSON.parse(JSON.stringify(cachedResult.data)));\n } else {\n return Promise.reject(cachedResult.error);\n }\n }\n\n // 2. Check for an ongoing request\n if (this.fetchRequests.has(internalId)) {\n // Return a promise that resolves with a deep copy\n return this.fetchRequests\n .get(internalId)\n .then((data) => JSON.parse(JSON.stringify(data)));\n }\n\n // 3. Start a new request\n const apiUrl = this._getApiUrl();\n if (!apiUrl) {\n const error = new Error(\n \"ChecklistNetworkManager: Gleap API URL not configured.\"\n );\n this.fetchCache.set(internalId, { status: RequestStatus.ERROR, error });\n return Promise.reject(error);\n }\n\n const url = `${apiUrl}/outbound/checklists/${internalId}?convertTipTap=true&${this._getQueryParams()}`;\n const requestPromise = this._makeRequest(\"GET\", url, null)\n .then((responseData) => {\n if (responseData) {\n // Cache the successful data\n this.fetchCache.set(internalId, {\n status: RequestStatus.SUCCESS,\n data: responseData,\n });\n // Return a deep copy of the data\n return JSON.parse(JSON.stringify(responseData));\n } else {\n // Should not happen with successful GET usually, but handle defensively\n const error = new Error(\n \"Empty response received for checklist fetch.\"\n );\n this.fetchCache.set(internalId, {\n status: RequestStatus.ERROR,\n error: responseData || error,\n });\n throw error;\n }\n })\n .catch((error) => {\n this.fetchCache.set(internalId, { status: RequestStatus.ERROR, error });\n throw error; // Re-throw so callers can catch it\n })\n .finally(() => {\n // Remove from pending requests map once done (success or fail)\n this.fetchRequests.delete(internalId);\n });\n\n this.fetchRequests.set(internalId, requestPromise);\n // Return a promise that resolves with a deep copy\n return requestPromise.then((data) => JSON.parse(JSON.stringify(data)));\n }\n}\n\nexport default ChecklistNetworkManager;\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n const lr = ['left', 'right'];\n const rl = ['right', 'left'];\n const tb = ['top', 'bottom'];\n const bt = ['bottom', 'top'];\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rl : lr;\n return isStart ? lr : rl;\n case 'left':\n case 'right':\n return isStart ? tb : bt;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n return {\n ...rect,\n top: rect.y,\n left: rect.x,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n ...rects.floating,\n x,\n y\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n if (!specifiedFallbackPlacements && fallbackAxisSideDirection !== 'none') {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$map$so;\n const placement = (_overflowsData$map$so = overflowsData.map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$map$so[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: 0,\n crossAxis: 0,\n alignmentAxis: null,\n ...rawValue\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = ['top', 'left'].includes(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const overflowAvailableHeight = height - overflow[heightSide];\n const overflowAvailableWidth = width - overflow[widthSide];\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if (isYAxis) {\n const maximumClippingWidth = width - overflow.left - overflow.right;\n availableWidth = alignment || noShift ? min(overflowAvailableWidth, maximumClippingWidth) : maximumClippingWidth;\n } else {\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n availableHeight = alignment || noShift ? min(overflowAvailableHeight, maximumClippingHeight) : maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n // Browsers without `ShadowRoot` support.\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isContainingBlock(element) {\n const webkit = isWebKit();\n const css = getComputedStyle(element);\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n return css.transform !== 'none' || css.perspective !== 'none' || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else {\n currentNode = getParentNode(currentNode);\n }\n }\n return null;\n}\nfunction isWebKit() {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nfunction isLastTraversableNode(node) {\n return ['html', 'body', '#document'].includes(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.pageXOffset,\n scrollTop: element.pageYOffset\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], win.frameElement && traverseIframes ? getOverflowAncestors(win.frameElement) : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isWebKit };\n","import { rectToClientRect, autoPlacement as autoPlacement$1, shift as shift$1, flip as flip$1, size as size$1, hide as hide$1, arrow as arrow$1, inline as inline$1, limitShift as limitShift$1, computePosition as computePosition$1 } from '@floating-ui/core';\nexport { detectOverflow, offset } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement, isElement, getWindow, isWebKit, getDocumentElement, getNodeName, isOverflowElement, getNodeScroll, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = currentWin.frameElement;\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = currentWin.frameElement;\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\nconst topLayerSelectors = [':popover-open', ':modal'];\nfunction isTopLayer(floating) {\n return topLayerSelectors.some(selector => {\n try {\n return floating.matches(selector);\n } catch (e) {\n return false;\n }\n });\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\nfunction getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n ...clippingAncestor,\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n const x = rect.left + scroll.scrollLeft - offsets.x;\n const y = rect.top + scroll.scrollTop - offsets.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n return element.offsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const window = getWindow(element);\n if (!isHTMLElement(element) || isTopLayer(element)) {\n return window;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && !isContainingBlock(offsetParent))) {\n return window;\n }\n return offsetParent || getContainingBlock(element) || window;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n ...(await getDimensionsFn(data.floating))\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const {\n left,\n top,\n width,\n height\n } = element.getBoundingClientRect();\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 100);\n } else {\n refresh(false, ratio);\n }\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle `;\n document.body.appendChild(elem);\n\n this.gleapFrameContainer = elem;\n this.gleapFrame = document.querySelector(\".gleap-frame\");\n\n this.updateFrameStyle();\n\n // Show loading preview for widget app mode.\n if (this.appMode === \"widget\") {\n this.showFrameContainer(true);\n }\n });\n });\n };\n\n showImage = (url) => {\n runFunctionWhenDomIsReady(() => {\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-image-view\";\n elem.innerHTML = `
\n \n
`;\n document.body.appendChild(elem);\n\n const closeElement = () => {\n elem.remove();\n };\n\n const close = elem.querySelector(\".gleap-image-view-close\");\n close.addEventListener(\"click\", () => {\n closeElement();\n });\n\n elem.addEventListener(\"click\", (e) => {\n if (e.target === elem) {\n closeElement();\n }\n });\n });\n };\n\n updateFrameStyle = () => {\n if (!this.gleapFrameContainer) {\n return;\n }\n\n const surveyStyle = \"gleap-frame-container--survey\";\n const extendedStyle = \"gleap-frame-container--extended\";\n const surveyFullStyle = \"gleap-frame-container--survey-full\";\n const classicStyle = \"gleap-frame-container--classic\";\n const classicStyleLeft = \"gleap-frame-container--classic-left\";\n const modernStyleLeft = \"gleap-frame-container--modern-left\";\n const noButtonStyleLeft = \"gleap-frame-container--no-button\";\n const allStyles = [\n classicStyle,\n classicStyleLeft,\n extendedStyle,\n modernStyleLeft,\n noButtonStyleLeft,\n surveyStyle,\n surveyFullStyle,\n ];\n for (let i = 0; i < allStyles.length; i++) {\n this.gleapFrameContainer.classList.remove(allStyles[i]);\n }\n\n var styleToApply = undefined;\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM\n ) {\n styleToApply = classicStyle;\n }\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT\n ) {\n styleToApply = classicStyleLeft;\n }\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_BOTTOM_LEFT\n ) {\n styleToApply = modernStyleLeft;\n }\n if (GleapFeedbackButtonManager.getInstance().buttonHidden === null) {\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_NONE\n ) {\n styleToApply = noButtonStyleLeft;\n }\n } else {\n if (GleapFeedbackButtonManager.getInstance().buttonHidden) {\n styleToApply = noButtonStyleLeft;\n }\n }\n if (styleToApply) {\n this.gleapFrameContainer.classList.add(styleToApply);\n }\n\n if (this.appMode === \"survey\") {\n this.gleapFrameContainer.classList.add(surveyStyle);\n }\n if (this.appMode === \"survey_full\" || this.appMode === \"survey_web\") {\n this.gleapFrameContainer.classList.add(surveyFullStyle);\n }\n if (this.appMode === \"extended\") {\n this.gleapFrameContainer.classList.add(extendedStyle);\n }\n\n this.gleapFrameContainer.setAttribute(\n \"dir\",\n GleapTranslationManager.getInstance().isRTLLayout ? \"rtl\" : \"ltr\"\n );\n };\n\n showFrameContainer(showLoader) {\n if (!this.gleapFrameContainer) {\n return;\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const loadingClass = \"gleap-frame-container--loading\";\n if (this.gleapFrameContainer.classList) {\n this.gleapFrameContainer.classList.remove(\n \"gleap-frame-container--hidden\"\n );\n if (showLoader) {\n this.gleapFrameContainer.classList.add(loadingClass);\n\n if (flowConfig.disableBGFade) {\n this.gleapFrameContainer.classList.add(\n \"gleap-frame-container--loading-nofade\"\n );\n }\n if (flowConfig.disableBGGradient) {\n this.gleapFrameContainer.classList.add(\n \"gleap-frame-container--loading-nogradient\"\n );\n }\n } else {\n this.gleapFrameContainer.classList.remove(loadingClass);\n }\n\n setTimeout(() => {\n this.gleapFrameContainer.classList.add(\n \"gleap-frame-container--animate\"\n );\n }, 500);\n }\n\n this.widgetOpened = true;\n this.updateUI();\n }\n\n runWidgetShouldOpenCallback() {\n if (!this.gleapFrameContainer) {\n return;\n }\n\n this.workThroughQueue();\n\n Gleap.getInstance().setGlobalDataItem(\"snapshotPosition\", {\n x: window.scrollX,\n y: window.scrollY,\n });\n\n this.showFrameContainer(false);\n this.updateWidgetStatus();\n\n GleapEventManager.notifyEvent(\"open\");\n this.registerEscListener();\n }\n\n updateUI() {\n // Clear notifications only when not opening a survey.\n GleapNotificationManager.getInstance().clearAllNotifications(\n this.isSurvey()\n );\n\n GleapFeedbackButtonManager.getInstance().updateNotificationBadge(0);\n GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n }\n\n showWidget() {\n setTimeout(() => {\n if (this.gleapFrameContainer) {\n this.runWidgetShouldOpenCallback();\n } else {\n GleapFrameManager.getInstance().injectFrame();\n }\n this.updateUI();\n }, 0);\n }\n\n updateWidgetStatus() {\n this.sendMessage({\n name: \"widget-status-update\",\n data: {\n isWidgetOpen: this.widgetOpened,\n },\n });\n }\n\n hideMarkerManager() {\n if (this.markerManager) {\n this.markerManager.clear();\n this.markerManager = null;\n }\n }\n\n hideWidget(resetRoutes = false) {\n // Prevent for survey web.\n if (this.appMode === \"survey_web\") {\n return;\n }\n\n this.hideMarkerManager();\n if (this.gleapFrameContainer) {\n this.gleapFrameContainer.classList.add(\"gleap-frame-container--hidden\");\n this.gleapFrameContainer.classList.remove(\n \"gleap-frame-container--animate\"\n );\n }\n if (resetRoutes) {\n this.sendMessage({\n name: \"reset-routes\",\n data: {},\n });\n }\n this.widgetOpened = false;\n this.updateWidgetStatus();\n GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n GleapEventManager.notifyEvent(\"close\");\n GleapNotificationManager.getInstance().reloadNotificationsFromCache();\n\n this.unregisterEscListener();\n\n if (typeof window !== \"undefined\" && typeof window.focus !== \"undefined\") {\n window.focus();\n }\n }\n\n sendMessage(data, queue = false) {\n try {\n this.gleapFrame = document.querySelector(\".gleap-frame\");\n if (this.comReady && this.gleapFrame && this.gleapFrame.contentWindow) {\n this.gleapFrame.contentWindow.postMessage(JSON.stringify(data), \"*\");\n } else {\n if (queue) {\n this.queue.push(data);\n }\n }\n } catch (e) {}\n }\n\n sendSessionUpdate() {\n this.sendMessage({\n name: \"session-update\",\n data: {\n sessionData: GleapSession.getInstance().getSession(),\n apiUrl: GleapSession.getInstance().apiUrl,\n sdkKey: GleapSession.getInstance().sdkKey,\n },\n });\n }\n\n sendConfigUpdate() {\n if (!this.comReady) {\n return;\n }\n\n this.sendMessage({\n name: \"config-update\",\n data: {\n config: GleapConfigManager.getInstance().getFlowConfig(),\n aiTools: GleapConfigManager.getInstance().getAiTools(),\n overrideLanguage:\n GleapTranslationManager.getInstance().getOverrideLanguage(),\n },\n });\n\n this.updateFrameStyle();\n }\n\n showDrawingScreen(type) {\n this.hideWidget();\n\n // Show screen drawing.\n this.markerManager = new GleapMarkerManager(type);\n this.markerManager.show((success) => {\n if (!success) {\n this.hideMarkerManager();\n }\n this.showWidget();\n });\n }\n\n workThroughQueue() {\n const workQueue = [...this.queue];\n this.queue = [];\n for (let i = 0; i < workQueue.length; i++) {\n this.sendMessage(workQueue[i], true);\n }\n }\n\n startCommunication() {\n // Listen for messages.\n this.addMessageListener((data) => {\n if (data.name === \"ping\") {\n this.comReady = true;\n this.sendConfigUpdate();\n this.sendSessionUpdate();\n this.workThroughQueue();\n setTimeout(() => {\n this.runWidgetShouldOpenCallback();\n }, 300);\n }\n\n if (data.name === \"play-ping\") {\n GleapAudioManager.ping();\n }\n\n if (data.name === \"open-image\") {\n this.showImage(data.data.url);\n }\n\n if (data.name === \"page-changed\") {\n if (\n data.data &&\n (data.data.name === \"newsdetails\" || data.data.name === \"appextended\")\n ) {\n this.setAppMode(\"extended\");\n } else {\n if (this.appMode === \"extended\") {\n this.setAppMode(\"widget\");\n }\n }\n }\n\n if (data.name === \"collect-ticket-data\") {\n var ticketData = {\n customData: GleapCustomDataManager.getInstance().getCustomData(),\n metaData: GleapMetaDataManager.getInstance().getMetaData(),\n consoleLog: GleapConsoleLogManager.getInstance().getLogs(),\n networkLogs: GleapNetworkIntercepter.getInstance().getRequests(),\n customEventLog: GleapStreamedEvent.getInstance().getEventArray(),\n formData: GleapCustomDataManager.getInstance().getTicketAttributes(),\n };\n\n // Add tags\n const tags = GleapTagManager.getInstance().getTags();\n if (tags && tags.length > 0) {\n ticketData.tags = tags;\n }\n\n this.sendMessage({\n name: \"collect-ticket-data\",\n data: ticketData,\n });\n }\n\n if (data.name === \"height-update\") {\n this.frameHeight = data.data;\n\n const innerContainer = document.querySelector(\n \".gleap-frame-container-inner\"\n );\n if (\n (this.appMode === \"survey\" ||\n this.appMode === \"survey_full\" ||\n this.appMode === \"survey_web\") &&\n innerContainer\n ) {\n innerContainer.style.maxHeight = `${this.frameHeight}px`;\n }\n }\n\n if (data.name === \"notify-event\") {\n GleapEventManager.notifyEvent(data.data.type, data.data.data);\n }\n\n if (data.name === \"cleanup-drawings\") {\n this.hideMarkerManager();\n }\n\n if (data.name === \"open-url\") {\n const url = data.data;\n const newTab = data.newTab ? true : false;\n this.urlHandler(url, newTab);\n }\n\n if (data.name === \"start-product-tour\") {\n Gleap.startProductTour(data.data?.tourId, true);\n }\n\n if (data.name === \"run-custom-action\") {\n GleapCustomActionManager.triggerCustomAction(data.data, {\n shareToken: data.shareToken,\n });\n }\n\n if (data.name === \"close-widget\") {\n this.hideWidget();\n }\n\n if (data.name === \"tool-execution\") {\n GleapEventManager.notifyEvent(\"tool-execution\", data.data);\n }\n\n if (data.name === \"send-feedback\") {\n const formData = data.data.formData;\n const action = data.data.action;\n const outboundId = data.data.outboundId;\n const spamToken = data.data.spamToken;\n\n const feedback = new GleapFeedback(\n action.feedbackType,\n \"MEDIUM\",\n formData,\n false,\n action.excludeData,\n outboundId,\n spamToken\n );\n feedback\n .sendFeedback()\n .then((feedbackData) => {\n this.sendMessage({\n name: \"feedback-sent\",\n data: feedbackData,\n });\n GleapEventManager.notifyEvent(\"feedback-sent\", formData);\n\n if (outboundId && outboundId.length > 0) {\n GleapEventManager.notifyEvent(\"outbound-sent\", {\n outboundId: outboundId,\n outbound: action,\n formData: formData,\n });\n\n try {\n delete formData.reportedBy;\n } catch (e) {}\n Gleap.trackEvent(`outbound-${outboundId}-submitted`, formData);\n }\n })\n .catch((error) => {\n this.sendMessage({\n name: \"feedback-sending-failed\",\n data: \"Something went wrong, please try again.\",\n });\n GleapEventManager.notifyEvent(\"error-while-sending\");\n });\n }\n\n if (data.name === \"start-screen-drawing\") {\n this.showDrawingScreen(data.data);\n }\n });\n\n // Add window message listener.\n window.addEventListener(\"message\", (event) => {\n if (\n event.origin !== this.frameUrl &&\n event.origin !== GleapBannerManager.getInstance().bannerUrl\n ) {\n return;\n }\n\n try {\n const data = JSON.parse(event.data);\n for (var i = 0; i < this.listeners.length; i++) {\n if (this.listeners[i]) {\n this.listeners[i](data);\n }\n }\n } catch (exp) {}\n });\n }\n\n addMessageListener(callback) {\n this.listeners.push(callback);\n }\n}\n","import { isMobile } from \"./GleapHelper\";\n\nexport default class GleapMetaDataManager {\n sessionStart = new Date();\n appBuildNumber = \"\";\n appVersionCode = \"\";\n environment = \"prod\";\n\n // GleapMetaDataManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapMetaDataManager();\n }\n return this.instance;\n }\n\n /**\n * Sets the app version code.\n * @param {string} appVersionCode\n */\n static setAppVersionCode(appVersionCode) {\n this.getInstance().appVersionCode = appVersionCode;\n }\n\n /**\n * Sets the app version code.\n * @param {string} appVersionCode\n */\n static setAppBuildNumber(appBuildNumber) {\n this.getInstance().appBuildNumber = appBuildNumber;\n }\n\n getSessionDuration() {\n const now = new Date();\n return Math.round((now.getTime() - this.sessionStart.getTime()) / 1000);\n }\n\n getMetaData() {\n var nAgt = navigator.userAgent;\n var browserName = navigator.appName;\n var fullVersion = \"\" + parseFloat(navigator.appVersion);\n var majorVersion = parseInt(navigator.appVersion, 10);\n var nameOffset, verOffset, ix;\n\n // In Opera, the true version is after \"Opera\" or after \"Version\"\n if ((verOffset = nAgt.indexOf(\"Opera\")) !== -1) {\n browserName = \"Opera\";\n fullVersion = nAgt.substring(verOffset + 6);\n if ((verOffset = nAgt.indexOf(\"Version\")) !== -1)\n fullVersion = nAgt.substring(verOffset + 8);\n }\n // In MSIE, the true version is after \"MSIE\" in userAgent\n else if ((verOffset = nAgt.indexOf(\"MSIE\")) !== -1) {\n browserName = \"Microsoft Internet Explorer\";\n fullVersion = nAgt.substring(verOffset + 5);\n }\n // In Chrome, the true version is after \"Chrome\"\n else if ((verOffset = nAgt.indexOf(\"Chrome\")) !== -1) {\n browserName = \"Chrome\";\n fullVersion = nAgt.substring(verOffset + 7);\n }\n // In Safari, the true version is after \"Safari\" or after \"Version\"\n else if ((verOffset = nAgt.indexOf(\"Safari\")) !== -1) {\n browserName = \"Safari\";\n fullVersion = nAgt.substring(verOffset + 7);\n if ((verOffset = nAgt.indexOf(\"Version\")) !== -1)\n fullVersion = nAgt.substring(verOffset + 8);\n }\n // In Firefox, the true version is after \"Firefox\"\n else if ((verOffset = nAgt.indexOf(\"Firefox\")) !== -1) {\n browserName = \"Firefox\";\n fullVersion = nAgt.substring(verOffset + 8);\n }\n // In most other browsers, \"name/version\" is at the end of userAgent\n else if (\n (nameOffset = nAgt.lastIndexOf(\" \") + 1) <\n (verOffset = nAgt.lastIndexOf(\"/\"))\n ) {\n browserName = nAgt.substring(nameOffset, verOffset);\n fullVersion = nAgt.substring(verOffset + 1);\n if (browserName.toLowerCase() === browserName.toUpperCase()) {\n browserName = navigator.appName;\n }\n }\n // trim the fullVersion string at semicolon/space if present\n if ((ix = fullVersion.indexOf(\";\")) !== -1)\n fullVersion = fullVersion.substring(0, ix);\n if ((ix = fullVersion.indexOf(\" \")) !== -1)\n fullVersion = fullVersion.substring(0, ix);\n\n majorVersion = parseInt(\"\" + fullVersion, 10);\n if (isNaN(majorVersion)) {\n fullVersion = \"\" + parseFloat(navigator.appVersion);\n majorVersion = parseInt(navigator.appVersion, 10);\n }\n\n var OSName = \"Unknown OS\";\n if (navigator.appVersion.indexOf(\"Win\") !== -1) OSName = \"Windows\";\n if (navigator.appVersion.indexOf(\"Mac\") !== -1) OSName = \"MacOS\";\n if (navigator.appVersion.indexOf(\"X11\") !== -1) OSName = \"UNIX\";\n if (navigator.appVersion.indexOf(\"Linux\") !== -1) OSName = \"Linux\";\n if (navigator.appVersion.indexOf(\"iPad\") !== -1) OSName = \"iPad\";\n if (navigator.appVersion.indexOf(\"iPhone\") !== -1) OSName = \"iPhone\";\n if (navigator.appVersion.indexOf(\"Android\") !== -1) OSName = \"Android\";\n\n return {\n browserName: browserName + \"(\" + fullVersion + \")\",\n userAgent: nAgt,\n browser: browserName,\n systemName: OSName,\n buildVersionNumber: this.appBuildNumber,\n releaseVersionNumber: this.appVersionCode,\n sessionDuration: this.getSessionDuration(),\n devicePixelRatio: window.devicePixelRatio,\n screenWidth: window.screen.width,\n screenHeight: window.screen.height,\n innerWidth: window.innerWidth,\n innerHeight: window.innerHeight,\n currentUrl: window.location.href,\n language: navigator.language || navigator.userLanguage,\n mobile: isMobile(),\n sdkVersion: SDK_VERSION,\n sdkType: \"javascript\",\n environment: this.environment,\n };\n }\n}\n","import { truncateString } from \"./GleapHelper\";\n\nexport default class GleapConsoleLogManager {\n logArray = [];\n disabled = false;\n originalConsoleLog;\n logMaxLength = 500;\n\n // GleapConsoleLogManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapConsoleLogManager();\n }\n return this.instance;\n }\n\n /**\n * Return the console logs\n * @returns {any[]} logs\n */\n getLogs() {\n return this.logArray;\n }\n\n /**\n * Revert console log overwrite.\n */\n stop() {\n this.disabled = true;\n if (this.originalConsoleLog) {\n window.console = this.originalConsoleLog;\n }\n }\n\n /**\n * Add message with log level to logs.\n * @param {*} message\n * @param {*} logLevel\n * @returns\n */\n addLog(message, logLevel = \"INFO\") {\n if (!message || message.length <= 0) {\n return;\n }\n\n this.logArray.push({\n log: truncateString(message, 1000),\n date: new Date(),\n priority: logLevel,\n });\n\n if (this.logArray.length > this.logMaxLength) {\n this.logArray.shift();\n }\n }\n\n /**\n * Add entry to logs.\n * @param {*} args\n * @param {*} logLevel\n * @returns\n */\n addLogWithArgs(args, logLevel) {\n if (!args || args.length <= 0) {\n return;\n }\n\n var log = \"\";\n try {\n for (var i = 0; i < args.length; i++) {\n log += args[i] + \" \";\n }\n } catch (exp) {}\n\n this.addLog(log, logLevel);\n }\n\n /**\n * Start console log overwrite.\n */\n start() {\n if (this.disabled) {\n return;\n }\n\n const self = this;\n window.console = (function (origConsole) {\n if (!window.console || !origConsole) {\n origConsole = {};\n }\n\n self.originalConsoleLog = origConsole;\n\n return {\n ...origConsole,\n log: function () {\n self.addLogWithArgs(arguments, \"INFO\");\n origConsole.log && origConsole.log.apply(origConsole, arguments);\n },\n warn: function () {\n self.addLogWithArgs(arguments, \"WARNING\");\n origConsole.warn && origConsole.warn.apply(origConsole, arguments);\n },\n error: function () {\n self.addLogWithArgs(arguments, \"ERROR\");\n origConsole.error && origConsole.error.apply(origConsole, arguments);\n },\n info: function (v) {\n self.addLogWithArgs(arguments, \"INFO\");\n origConsole.info && origConsole.info.apply(origConsole, arguments);\n },\n };\n })(window.console);\n }\n}\n","import { GleapConsoleLogManager, GleapFrameManager, handleGleapLink } from \"./Gleap\";\nimport { getDOMElementDescription } from \"./GleapHelper\";\n\nexport default class GleapClickListener {\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapClickListener();\n }\n return this.instance;\n }\n\n start() {\n document.addEventListener(\"click\", (e) => {\n if (!e.target) {\n return;\n }\n\n if (e.target.tagName === 'A' && e.target.protocol === 'gleap:') {\n e.preventDefault();\n\n const href = e.target.href;\n handleGleapLink(href);\n }\n\n if (!GleapFrameManager.getInstance().isOpened()) {\n GleapConsoleLogManager.getInstance().addLog(\n getDOMElementDescription(e.target),\n \"CLICK\"\n );\n }\n });\n }\n}\n","import { gleapDataParser } from \"./GleapHelper\";\n\nexport default class GleapCustomDataManager {\n customData = {};\n ticketAttributes = {};\n\n // GleapCustomDataManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapCustomDataManager();\n }\n return this.instance;\n }\n\n /**\n * Returns the custom data object\n * @returns {*}\n */\n getCustomData() {\n return this.customData;\n }\n\n /**\n * Set custom data that will be attached to the bug-report.\n * @param {*} data\n */\n attachCustomData(data) {\n this.customData = Object.assign(\n this.customData,\n gleapDataParser(data)\n );\n }\n\n /**\n * Add one key value pair to the custom data object\n * @param {*} key The key of the custom data entry you want to add.\n * @param {*} value The custom data you want to add.\n */\n setCustomData(key, value) {\n this.customData[key] = value;\n }\n\n /**\n * Remove one key value pair of the custom data object\n * @param {*} key The key of the custom data entry you want to remove.\n */\n removeCustomData(key) {\n delete this.customData[key];\n }\n\n /**\n * Clear the custom data\n */\n clearCustomData() {\n this.customData = {};\n }\n\n /**\n * This method is used to set ticket attributes programmatically.\n * @param {*} key The key of the attribute you want to add.\n * @param {*} value The value to set.\n */\n setTicketAttribute(key, value) {\n this.ticketAttributes[key] = value;\n }\n\n /**\n * This method is used to unset ticket attributes programmatically.\n * @param {*} key The key of the attribute you want to unset.\n */\n unsetTicketAttribute(key) {\n delete this.ticketAttributes[key];\n }\n\n /**\n * This method is used to clear ticket attributes programmatically.\n */\n clearTicketAttributes() {\n this.ticketAttributes = {};\n }\n\n getTicketAttributes() {\n return this.ticketAttributes;\n }\n}\n","import Gleap from \"./Gleap\";\n\nexport default class GleapEventManager {\n eventListeners = {};\n\n // GleapEventManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapEventManager();\n }\n return this.instance;\n }\n\n /**\n * Notify all registrants for event.\n */\n static notifyEvent(event, data = {}) {\n if (event === \"flow-started\") {\n\n const gleapInstance = Gleap.getInstance();\n gleapInstance.setGlobalDataItem(\"webReplay\", null);\n gleapInstance.setGlobalDataItem(\"screenRecordingData\", null);\n gleapInstance.takeCurrentReplay();\n }\n\n const eventListeners = this.getInstance().eventListeners[event];\n if (eventListeners) {\n for (var i = 0; i < eventListeners.length; i++) {\n const eventListener = eventListeners[i];\n if (eventListener) {\n eventListener(data);\n }\n }\n }\n }\n\n /**\n * Register events for Gleap.\n * @param {*} eventName\n * @param {*} callback\n */\n static on(eventName, callback) {\n const instance = this.getInstance();\n if (!instance.eventListeners[eventName]) {\n instance.eventListeners[eventName] = [];\n }\n instance.eventListeners[eventName].push(callback);\n }\n}\n","export default class GleapCustomActionManager {\n customActionCallbacks = [];\n\n // GleapCustomActionManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapCustomActionManager();\n }\n return this.instance;\n }\n\n /**\n * Register custom action\n */\n static registerCustomAction(customAction) {\n const instance = this.getInstance();\n if (instance.customActionCallbacks) {\n instance.customActionCallbacks.push(customAction);\n }\n }\n\n /**\n * Triggers a custom action\n */\n static triggerCustomAction(name, data) {\n const instance = this.getInstance();\n if (instance.customActionCallbacks) {\n for (var i = 0; i < instance.customActionCallbacks.length; i++) {\n var callback = instance.customActionCallbacks[i];\n if (callback) {\n callback({\n name,\n ...(data ? data : {}),\n });\n }\n }\n }\n }\n}\n","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar _a;\nvar __defProp$1 = Object.defineProperty;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$1 = (obj, key, value) => __defNormalProp$1(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar NodeType$3 = /* @__PURE__ */ ((NodeType2) => {\n NodeType2[NodeType2[\"Document\"] = 0] = \"Document\";\n NodeType2[NodeType2[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType2[NodeType2[\"Element\"] = 2] = \"Element\";\n NodeType2[NodeType2[\"Text\"] = 3] = \"Text\";\n NodeType2[NodeType2[\"CDATA\"] = 4] = \"CDATA\";\n NodeType2[NodeType2[\"Comment\"] = 5] = \"Comment\";\n return NodeType2;\n})(NodeType$3 || {});\nconst testableAccessors$1 = {\n Node: [\"childNodes\", \"parentNode\", \"parentElement\", \"textContent\"],\n ShadowRoot: [\"host\", \"styleSheets\"],\n Element: [\"shadowRoot\", \"querySelector\", \"querySelectorAll\"],\n MutationObserver: []\n};\nconst testableMethods$1 = {\n Node: [\"contains\", \"getRootNode\"],\n ShadowRoot: [\"getSelection\"],\n Element: [],\n MutationObserver: [\"constructor\"]\n};\nconst untaintedBasePrototype$1 = {};\nconst isAngularZonePresent$1 = () => {\n return !!globalThis.Zone;\n};\nfunction getUntaintedPrototype$1(key) {\n if (untaintedBasePrototype$1[key])\n return untaintedBasePrototype$1[key];\n const defaultObj = globalThis[key];\n const defaultPrototype = defaultObj.prototype;\n const accessorNames = key in testableAccessors$1 ? testableAccessors$1[key] : void 0;\n const isUntaintedAccessors = Boolean(\n accessorNames && // @ts-expect-error 2345\n accessorNames.every(\n (accessor) => {\n var _a2, _b;\n return Boolean(\n (_b = (_a2 = Object.getOwnPropertyDescriptor(defaultPrototype, accessor)) == null ? void 0 : _a2.get) == null ? void 0 : _b.toString().includes(\"[native code]\")\n );\n }\n )\n );\n const methodNames = key in testableMethods$1 ? testableMethods$1[key] : void 0;\n const isUntaintedMethods = Boolean(\n methodNames && methodNames.every(\n // @ts-expect-error 2345\n (method) => {\n var _a2;\n return typeof defaultPrototype[method] === \"function\" && ((_a2 = defaultPrototype[method]) == null ? void 0 : _a2.toString().includes(\"[native code]\"));\n }\n )\n );\n if (isUntaintedAccessors && isUntaintedMethods && !isAngularZonePresent$1()) {\n untaintedBasePrototype$1[key] = defaultObj.prototype;\n return defaultObj.prototype;\n }\n try {\n const iframeEl = document.createElement(\"iframe\");\n document.body.appendChild(iframeEl);\n const win = iframeEl.contentWindow;\n if (!win) return defaultObj.prototype;\n const untaintedObject = win[key].prototype;\n document.body.removeChild(iframeEl);\n if (!untaintedObject) return defaultPrototype;\n return untaintedBasePrototype$1[key] = untaintedObject;\n } catch {\n return defaultPrototype;\n }\n}\nconst untaintedAccessorCache$1 = {};\nfunction getUntaintedAccessor$1(key, instance, accessor) {\n var _a2;\n const cacheKey = `${key}.${String(accessor)}`;\n if (untaintedAccessorCache$1[cacheKey])\n return untaintedAccessorCache$1[cacheKey].call(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype$1(key);\n const untaintedAccessor = (_a2 = Object.getOwnPropertyDescriptor(\n untaintedPrototype,\n accessor\n )) == null ? void 0 : _a2.get;\n if (!untaintedAccessor) return instance[accessor];\n untaintedAccessorCache$1[cacheKey] = untaintedAccessor;\n return untaintedAccessor.call(instance);\n}\nconst untaintedMethodCache$1 = {};\nfunction getUntaintedMethod$1(key, instance, method) {\n const cacheKey = `${key}.${String(method)}`;\n if (untaintedMethodCache$1[cacheKey])\n return untaintedMethodCache$1[cacheKey].bind(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype$1(key);\n const untaintedMethod = untaintedPrototype[method];\n if (typeof untaintedMethod !== \"function\") return instance[method];\n untaintedMethodCache$1[cacheKey] = untaintedMethod;\n return untaintedMethod.bind(instance);\n}\nfunction childNodes$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"childNodes\");\n}\nfunction parentNode$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"parentNode\");\n}\nfunction parentElement$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"parentElement\");\n}\nfunction textContent$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"textContent\");\n}\nfunction contains$1(n2, other) {\n return getUntaintedMethod$1(\"Node\", n2, \"contains\")(other);\n}\nfunction getRootNode$1(n2) {\n return getUntaintedMethod$1(\"Node\", n2, \"getRootNode\")();\n}\nfunction host$1(n2) {\n if (!n2 || !(\"host\" in n2)) return null;\n return getUntaintedAccessor$1(\"ShadowRoot\", n2, \"host\");\n}\nfunction styleSheets$1(n2) {\n return n2.styleSheets;\n}\nfunction shadowRoot$1(n2) {\n if (!n2 || !(\"shadowRoot\" in n2)) return null;\n return getUntaintedAccessor$1(\"Element\", n2, \"shadowRoot\");\n}\nfunction querySelector$1(n2, selectors) {\n return getUntaintedAccessor$1(\"Element\", n2, \"querySelector\")(selectors);\n}\nfunction querySelectorAll$1(n2, selectors) {\n return getUntaintedAccessor$1(\"Element\", n2, \"querySelectorAll\")(selectors);\n}\nfunction mutationObserverCtor$1() {\n return getUntaintedPrototype$1(\"MutationObserver\").constructor;\n}\nconst index$1 = {\n childNodes: childNodes$1,\n parentNode: parentNode$1,\n parentElement: parentElement$1,\n textContent: textContent$1,\n contains: contains$1,\n getRootNode: getRootNode$1,\n host: host$1,\n styleSheets: styleSheets$1,\n shadowRoot: shadowRoot$1,\n querySelector: querySelector$1,\n querySelectorAll: querySelectorAll$1,\n mutationObserver: mutationObserverCtor$1\n};\nfunction isElement(n2) {\n return n2.nodeType === n2.ELEMENT_NODE;\n}\nfunction isShadowRoot(n2) {\n const hostEl = (\n // anchor and textarea elements also have a `host` property\n // but only shadow roots have a `mode` property\n n2 && \"host\" in n2 && \"mode\" in n2 && index$1.host(n2) || null\n );\n return Boolean(\n hostEl && \"shadowRoot\" in hostEl && index$1.shadowRoot(hostEl) === n2\n );\n}\nfunction isNativeShadowDom(shadowRoot2) {\n return Object.prototype.toString.call(shadowRoot2) === \"[object ShadowRoot]\";\n}\nfunction fixBrowserCompatibilityIssuesInCSS(cssText) {\n if (cssText.includes(\" background-clip: text;\") && !cssText.includes(\" -webkit-background-clip: text;\")) {\n cssText = cssText.replace(\n /\\sbackground-clip:\\s*text;/g,\n \" -webkit-background-clip: text; background-clip: text;\"\n );\n }\n return cssText;\n}\nfunction escapeImportStatement(rule2) {\n const { cssText } = rule2;\n if (cssText.split('\"').length < 3) return cssText;\n const statement = [\"@import\", `url(${JSON.stringify(rule2.href)})`];\n if (rule2.layerName === \"\") {\n statement.push(`layer`);\n } else if (rule2.layerName) {\n statement.push(`layer(${rule2.layerName})`);\n }\n if (rule2.supportsText) {\n statement.push(`supports(${rule2.supportsText})`);\n }\n if (rule2.media.length) {\n statement.push(rule2.media.mediaText);\n }\n return statement.join(\" \") + \";\";\n}\nfunction stringifyStylesheet(s2) {\n try {\n const rules2 = s2.rules || s2.cssRules;\n if (!rules2) {\n return null;\n }\n let sheetHref = s2.href;\n if (!sheetHref && s2.ownerNode && s2.ownerNode.ownerDocument) {\n sheetHref = s2.ownerNode.ownerDocument.location.href;\n }\n const stringifiedRules = Array.from(\n rules2,\n (rule2) => stringifyRule(rule2, sheetHref)\n ).join(\"\");\n return fixBrowserCompatibilityIssuesInCSS(stringifiedRules);\n } catch (error) {\n return null;\n }\n}\nfunction stringifyRule(rule2, sheetHref) {\n if (isCSSImportRule(rule2)) {\n let importStringified;\n try {\n importStringified = // for same-origin stylesheets,\n // we can access the imported stylesheet rules directly\n stringifyStylesheet(rule2.styleSheet) || // work around browser issues with the raw string `@import url(...)` statement\n escapeImportStatement(rule2);\n } catch (error) {\n importStringified = rule2.cssText;\n }\n if (rule2.styleSheet.href) {\n return absolutifyURLs(importStringified, rule2.styleSheet.href);\n }\n return importStringified;\n } else {\n let ruleStringified = rule2.cssText;\n if (isCSSStyleRule(rule2) && rule2.selectorText.includes(\":\")) {\n ruleStringified = fixSafariColons(ruleStringified);\n }\n if (sheetHref) {\n return absolutifyURLs(ruleStringified, sheetHref);\n }\n return ruleStringified;\n }\n}\nfunction fixSafariColons(cssStringified) {\n const regex = /(\\[(?:[\\w-]+)[^\\\\])(:(?:[\\w-]+)\\])/gm;\n return cssStringified.replace(regex, \"$1\\\\$2\");\n}\nfunction isCSSImportRule(rule2) {\n return \"styleSheet\" in rule2;\n}\nfunction isCSSStyleRule(rule2) {\n return \"selectorText\" in rule2;\n}\nclass Mirror {\n constructor() {\n __publicField$1(this, \"idNodeMap\", /* @__PURE__ */ new Map());\n __publicField$1(this, \"nodeMetaMap\", /* @__PURE__ */ new WeakMap());\n }\n getId(n2) {\n var _a2;\n if (!n2) return -1;\n const id = (_a2 = this.getMeta(n2)) == null ? void 0 : _a2.id;\n return id ?? -1;\n }\n getNode(id) {\n return this.idNodeMap.get(id) || null;\n }\n getIds() {\n return Array.from(this.idNodeMap.keys());\n }\n getMeta(n2) {\n return this.nodeMetaMap.get(n2) || null;\n }\n // removes the node from idNodeMap\n // doesn't remove the node from nodeMetaMap\n removeNodeFromMap(n2) {\n const id = this.getId(n2);\n this.idNodeMap.delete(id);\n if (n2.childNodes) {\n n2.childNodes.forEach(\n (childNode) => this.removeNodeFromMap(childNode)\n );\n }\n }\n has(id) {\n return this.idNodeMap.has(id);\n }\n hasNode(node2) {\n return this.nodeMetaMap.has(node2);\n }\n add(n2, meta) {\n const id = meta.id;\n this.idNodeMap.set(id, n2);\n this.nodeMetaMap.set(n2, meta);\n }\n replace(id, n2) {\n const oldNode = this.getNode(id);\n if (oldNode) {\n const meta = this.nodeMetaMap.get(oldNode);\n if (meta) this.nodeMetaMap.set(n2, meta);\n }\n this.idNodeMap.set(id, n2);\n }\n reset() {\n this.idNodeMap = /* @__PURE__ */ new Map();\n this.nodeMetaMap = /* @__PURE__ */ new WeakMap();\n }\n}\nfunction createMirror$2() {\n return new Mirror();\n}\nfunction maskInputValue({\n element,\n maskInputOptions,\n tagName,\n type,\n value,\n maskInputFn\n}) {\n let text = value || \"\";\n const actualType = type && toLowerCase(type);\n if (maskInputOptions[tagName.toLowerCase()] || actualType && maskInputOptions[actualType]) {\n if (maskInputFn) {\n text = maskInputFn(text, element);\n } else {\n text = \"*\".repeat(text.length);\n }\n }\n return text;\n}\nfunction toLowerCase(str) {\n return str.toLowerCase();\n}\nconst ORIGINAL_ATTRIBUTE_NAME = \"__rrweb_original__\";\nfunction is2DCanvasBlank(canvas) {\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) return true;\n const chunkSize = 50;\n for (let x2 = 0; x2 < canvas.width; x2 += chunkSize) {\n for (let y = 0; y < canvas.height; y += chunkSize) {\n const getImageData = ctx.getImageData;\n const originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData ? getImageData[ORIGINAL_ATTRIBUTE_NAME] : getImageData;\n const pixelBuffer = new Uint32Array(\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n originalGetImageData.call(\n ctx,\n x2,\n y,\n Math.min(chunkSize, canvas.width - x2),\n Math.min(chunkSize, canvas.height - y)\n ).data.buffer\n );\n if (pixelBuffer.some((pixel) => pixel !== 0)) return false;\n }\n }\n return true;\n}\nfunction getInputType(element) {\n const type = element.type;\n return element.hasAttribute(\"data-rr-is-password\") ? \"password\" : type ? (\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n toLowerCase(type)\n ) : null;\n}\nfunction extractFileExtension(path, baseURL) {\n let url;\n try {\n url = new URL(path, baseURL ?? window.location.href);\n } catch (err) {\n return null;\n }\n const regex = /\\.([0-9a-z]+)(?:$)/i;\n const match = url.pathname.match(regex);\n return (match == null ? void 0 : match[1]) ?? null;\n}\nfunction extractOrigin(url) {\n let origin = \"\";\n if (url.indexOf(\"//\") > -1) {\n origin = url.split(\"/\").slice(0, 3).join(\"/\");\n } else {\n origin = url.split(\"/\")[0];\n }\n origin = origin.split(\"?\")[0];\n return origin;\n}\nconst URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\nconst URL_PROTOCOL_MATCH = /^(?:[a-z+]+:)?\\/\\//i;\nconst URL_WWW_MATCH = /^www\\..*/i;\nconst DATA_URI = /^(data:)([^,]*),(.*)/i;\nfunction absolutifyURLs(cssText, href) {\n return (cssText || \"\").replace(\n URL_IN_CSS_REF,\n (origin, quote1, path1, quote2, path2, path3) => {\n const filePath = path1 || path2 || path3;\n const maybeQuote = quote1 || quote2 || \"\";\n if (!filePath) {\n return origin;\n }\n if (URL_PROTOCOL_MATCH.test(filePath) || URL_WWW_MATCH.test(filePath)) {\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\n }\n if (DATA_URI.test(filePath)) {\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\n }\n if (filePath[0] === \"/\") {\n return `url(${maybeQuote}${extractOrigin(href) + filePath}${maybeQuote})`;\n }\n const stack = href.split(\"/\");\n const parts = filePath.split(\"/\");\n stack.pop();\n for (const part of parts) {\n if (part === \".\") {\n continue;\n } else if (part === \"..\") {\n stack.pop();\n } else {\n stack.push(part);\n }\n }\n return `url(${maybeQuote}${stack.join(\"/\")}${maybeQuote})`;\n }\n );\n}\nfunction normalizeCssString(cssText) {\n return cssText.replace(/(\\/\\*[^*]*\\*\\/)|[\\s;]/g, \"\");\n}\nfunction splitCssText(cssText, style) {\n const childNodes2 = Array.from(style.childNodes);\n const splits = [];\n if (childNodes2.length > 1 && cssText && typeof cssText === \"string\") {\n const cssTextNorm = normalizeCssString(cssText);\n for (let i2 = 1; i2 < childNodes2.length; i2++) {\n if (childNodes2[i2].textContent && typeof childNodes2[i2].textContent === \"string\") {\n const textContentNorm = normalizeCssString(childNodes2[i2].textContent);\n for (let j = 3; j < textContentNorm.length; j++) {\n const bit = textContentNorm.substring(0, j);\n if (cssTextNorm.split(bit).length === 2) {\n const splitNorm = cssTextNorm.indexOf(bit);\n for (let k = splitNorm; k < cssText.length; k++) {\n if (normalizeCssString(cssText.substring(0, k)).length === splitNorm) {\n splits.push(cssText.substring(0, k));\n cssText = cssText.substring(k);\n break;\n }\n }\n break;\n }\n }\n }\n }\n }\n splits.push(cssText);\n return splits;\n}\nfunction markCssSplits(cssText, style) {\n return splitCssText(cssText, style).join(\"/* rr_split */\");\n}\nlet _id = 1;\nconst tagNameRegex = new RegExp(\"[^a-z0-9-_:]\");\nconst IGNORED_NODE = -2;\nfunction genId() {\n return _id++;\n}\nfunction getValidTagName$1(element) {\n if (element instanceof HTMLFormElement) {\n return \"form\";\n }\n const processedTagName = toLowerCase(element.tagName);\n if (tagNameRegex.test(processedTagName)) {\n return \"div\";\n }\n return processedTagName;\n}\nlet canvasService;\nlet canvasCtx;\nconst SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\nconst SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\n if (attributeValue.trim() === \"\") {\n return attributeValue;\n }\n let pos = 0;\n function collectCharacters(regEx) {\n let chars2;\n const match = regEx.exec(attributeValue.substring(pos));\n if (match) {\n chars2 = match[0];\n pos += chars2.length;\n return chars2;\n }\n return \"\";\n }\n const output = [];\n while (true) {\n collectCharacters(SRCSET_COMMAS_OR_SPACES);\n if (pos >= attributeValue.length) {\n break;\n }\n let url = collectCharacters(SRCSET_NOT_SPACES);\n if (url.slice(-1) === \",\") {\n url = absoluteToDoc(doc, url.substring(0, url.length - 1));\n output.push(url);\n } else {\n let descriptorsStr = \"\";\n url = absoluteToDoc(doc, url);\n let inParens = false;\n while (true) {\n const c2 = attributeValue.charAt(pos);\n if (c2 === \"\") {\n output.push((url + descriptorsStr).trim());\n break;\n } else if (!inParens) {\n if (c2 === \",\") {\n pos += 1;\n output.push((url + descriptorsStr).trim());\n break;\n } else if (c2 === \"(\") {\n inParens = true;\n }\n } else {\n if (c2 === \")\") {\n inParens = false;\n }\n }\n descriptorsStr += c2;\n pos += 1;\n }\n }\n }\n return output.join(\", \");\n}\nconst cachedDocument = /* @__PURE__ */ new WeakMap();\nfunction absoluteToDoc(doc, attributeValue) {\n if (!attributeValue || attributeValue.trim() === \"\") {\n return attributeValue;\n }\n return getHref(doc, attributeValue);\n}\nfunction isSVGElement(el) {\n return Boolean(el.tagName === \"svg\" || el.ownerSVGElement);\n}\nfunction getHref(doc, customHref) {\n let a2 = cachedDocument.get(doc);\n if (!a2) {\n a2 = doc.createElement(\"a\");\n cachedDocument.set(doc, a2);\n }\n if (!customHref) {\n customHref = \"\";\n } else if (customHref.startsWith(\"blob:\") || customHref.startsWith(\"data:\")) {\n return customHref;\n }\n a2.setAttribute(\"href\", customHref);\n return a2.href;\n}\nfunction transformAttribute(doc, tagName, name, value) {\n if (!value) {\n return value;\n }\n if (name === \"src\" || name === \"href\" && !(tagName === \"use\" && value[0] === \"#\")) {\n return absoluteToDoc(doc, value);\n } else if (name === \"xlink:href\" && value[0] !== \"#\") {\n return absoluteToDoc(doc, value);\n } else if (name === \"background\" && (tagName === \"table\" || tagName === \"td\" || tagName === \"th\")) {\n return absoluteToDoc(doc, value);\n } else if (name === \"srcset\") {\n return getAbsoluteSrcsetString(doc, value);\n } else if (name === \"style\") {\n return absolutifyURLs(value, getHref(doc));\n } else if (tagName === \"object\" && name === \"data\") {\n return absoluteToDoc(doc, value);\n }\n return value;\n}\nfunction ignoreAttribute(tagName, name, _value) {\n return (tagName === \"video\" || tagName === \"audio\") && name === \"autoplay\";\n}\nfunction _isBlockedElement(element, blockClass, blockSelector) {\n try {\n if (typeof blockClass === \"string\") {\n if (element.classList.contains(blockClass)) {\n return true;\n }\n } else {\n for (let eIndex = element.classList.length; eIndex--; ) {\n const className = element.classList[eIndex];\n if (blockClass.test(className)) {\n return true;\n }\n }\n }\n if (blockSelector) {\n return element.matches(blockSelector);\n }\n } catch (e2) {\n }\n return false;\n}\nfunction classMatchesRegex(node2, regex, checkAncestors) {\n if (!node2) return false;\n if (node2.nodeType !== node2.ELEMENT_NODE) {\n if (!checkAncestors) return false;\n return classMatchesRegex(index$1.parentNode(node2), regex, checkAncestors);\n }\n for (let eIndex = node2.classList.length; eIndex--; ) {\n const className = node2.classList[eIndex];\n if (regex.test(className)) {\n return true;\n }\n }\n if (!checkAncestors) return false;\n return classMatchesRegex(index$1.parentNode(node2), regex, checkAncestors);\n}\nfunction needMaskingText(node2, maskTextClass, maskTextSelector, checkAncestors) {\n let el;\n if (isElement(node2)) {\n el = node2;\n if (!index$1.childNodes(el).length) {\n return false;\n }\n } else if (index$1.parentElement(node2) === null) {\n return false;\n } else {\n el = index$1.parentElement(node2);\n }\n try {\n if (typeof maskTextClass === \"string\") {\n if (checkAncestors) {\n if (el.closest(`.${maskTextClass}`)) return true;\n } else {\n if (el.classList.contains(maskTextClass)) return true;\n }\n } else {\n if (classMatchesRegex(el, maskTextClass, checkAncestors)) return true;\n }\n if (maskTextSelector) {\n if (checkAncestors) {\n if (el.closest(maskTextSelector)) return true;\n } else {\n if (el.matches(maskTextSelector)) return true;\n }\n }\n } catch (e2) {\n }\n return false;\n}\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\n const win = iframeEl.contentWindow;\n if (!win) {\n return;\n }\n let fired = false;\n let readyState;\n try {\n readyState = win.document.readyState;\n } catch (error) {\n return;\n }\n if (readyState !== \"complete\") {\n const timer = setTimeout(() => {\n if (!fired) {\n listener();\n fired = true;\n }\n }, iframeLoadTimeout);\n iframeEl.addEventListener(\"load\", () => {\n clearTimeout(timer);\n fired = true;\n listener();\n });\n return;\n }\n const blankUrl = \"about:blank\";\n if (win.location.href !== blankUrl || iframeEl.src === blankUrl || iframeEl.src === \"\") {\n setTimeout(listener, 0);\n return iframeEl.addEventListener(\"load\", listener);\n }\n iframeEl.addEventListener(\"load\", listener);\n}\nfunction onceStylesheetLoaded(link, listener, styleSheetLoadTimeout) {\n let fired = false;\n let styleSheetLoaded;\n try {\n styleSheetLoaded = link.sheet;\n } catch (error) {\n return;\n }\n if (styleSheetLoaded) return;\n const timer = setTimeout(() => {\n if (!fired) {\n listener();\n fired = true;\n }\n }, styleSheetLoadTimeout);\n link.addEventListener(\"load\", () => {\n clearTimeout(timer);\n fired = true;\n listener();\n });\n}\nfunction serializeNode(n2, options) {\n const {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n inlineStylesheet,\n maskInputOptions = {},\n maskTextFn,\n maskInputFn,\n dataURLOptions = {},\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement = false,\n cssCaptured = false\n } = options;\n const rootId = getRootId(doc, mirror2);\n switch (n2.nodeType) {\n case n2.DOCUMENT_NODE:\n if (n2.compatMode !== \"CSS1Compat\") {\n return {\n type: NodeType$3.Document,\n childNodes: [],\n compatMode: n2.compatMode\n // probably \"BackCompat\"\n };\n } else {\n return {\n type: NodeType$3.Document,\n childNodes: []\n };\n }\n case n2.DOCUMENT_TYPE_NODE:\n return {\n type: NodeType$3.DocumentType,\n name: n2.name,\n publicId: n2.publicId,\n systemId: n2.systemId,\n rootId\n };\n case n2.ELEMENT_NODE:\n return serializeElementNode(n2, {\n doc,\n blockClass,\n blockSelector,\n inlineStylesheet,\n maskInputOptions,\n maskInputFn,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement,\n rootId\n });\n case n2.TEXT_NODE:\n return serializeTextNode(n2, {\n doc,\n needsMask,\n maskTextFn,\n rootId,\n cssCaptured\n });\n case n2.CDATA_SECTION_NODE:\n return {\n type: NodeType$3.CDATA,\n textContent: \"\",\n rootId\n };\n case n2.COMMENT_NODE:\n return {\n type: NodeType$3.Comment,\n textContent: index$1.textContent(n2) || \"\",\n rootId\n };\n default:\n return false;\n }\n}\nfunction getRootId(doc, mirror2) {\n if (!mirror2.hasNode(doc)) return void 0;\n const docId = mirror2.getId(doc);\n return docId === 1 ? void 0 : docId;\n}\nfunction serializeTextNode(n2, options) {\n const { needsMask, maskTextFn, rootId, cssCaptured } = options;\n const parent = index$1.parentNode(n2);\n const parentTagName = parent && parent.tagName;\n let textContent2 = \"\";\n const isStyle = parentTagName === \"STYLE\" ? true : void 0;\n const isScript = parentTagName === \"SCRIPT\" ? true : void 0;\n if (isScript) {\n textContent2 = \"SCRIPT_PLACEHOLDER\";\n } else if (!cssCaptured) {\n textContent2 = index$1.textContent(n2);\n if (isStyle && textContent2) {\n textContent2 = absolutifyURLs(textContent2, getHref(options.doc));\n }\n }\n if (!isStyle && !isScript && textContent2 && needsMask) {\n textContent2 = maskTextFn ? maskTextFn(textContent2, index$1.parentElement(n2)) : textContent2.replace(/[\\S]/g, \"*\");\n }\n return {\n type: NodeType$3.Text,\n textContent: textContent2 || \"\",\n rootId\n };\n}\nfunction serializeElementNode(n2, options) {\n const {\n doc,\n blockClass,\n blockSelector,\n inlineStylesheet,\n maskInputOptions = {},\n maskInputFn,\n dataURLOptions = {},\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement = false,\n rootId\n } = options;\n const needBlock = _isBlockedElement(n2, blockClass, blockSelector);\n const tagName = getValidTagName$1(n2);\n let attributes = {};\n const len = n2.attributes.length;\n for (let i2 = 0; i2 < len; i2++) {\n const attr = n2.attributes[i2];\n if (!ignoreAttribute(tagName, attr.name, attr.value)) {\n attributes[attr.name] = transformAttribute(\n doc,\n tagName,\n toLowerCase(attr.name),\n attr.value\n );\n }\n }\n if (tagName === \"link\" && inlineStylesheet) {\n const stylesheet = Array.from(doc.styleSheets).find((s2) => {\n return s2.href === n2.href;\n });\n let cssText = null;\n if (stylesheet) {\n cssText = stringifyStylesheet(stylesheet);\n }\n if (cssText) {\n delete attributes.rel;\n delete attributes.href;\n attributes._cssText = cssText;\n }\n }\n if (tagName === \"style\" && n2.sheet) {\n let cssText = stringifyStylesheet(\n n2.sheet\n );\n if (cssText) {\n if (n2.childNodes.length > 1) {\n cssText = markCssSplits(cssText, n2);\n }\n attributes._cssText = cssText;\n }\n }\n if (tagName === \"input\" || tagName === \"textarea\" || tagName === \"select\") {\n const value = n2.value;\n const checked = n2.checked;\n if (attributes.type !== \"radio\" && attributes.type !== \"checkbox\" && attributes.type !== \"submit\" && attributes.type !== \"button\" && value) {\n attributes.value = maskInputValue({\n element: n2,\n type: getInputType(n2),\n tagName,\n value,\n maskInputOptions,\n maskInputFn\n });\n } else if (checked) {\n attributes.checked = checked;\n }\n }\n if (tagName === \"option\") {\n if (n2.selected && !maskInputOptions[\"select\"]) {\n attributes.selected = true;\n } else {\n delete attributes.selected;\n }\n }\n if (tagName === \"dialog\" && n2.open) {\n attributes.rr_open_mode = n2.matches(\"dialog:modal\") ? \"modal\" : \"non-modal\";\n }\n if (tagName === \"canvas\" && recordCanvas) {\n if (n2.__context === \"2d\") {\n if (!is2DCanvasBlank(n2)) {\n attributes.rr_dataURL = n2.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n }\n } else if (!(\"__context\" in n2)) {\n const canvasDataURL = n2.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n const blankCanvas = doc.createElement(\"canvas\");\n blankCanvas.width = n2.width;\n blankCanvas.height = n2.height;\n const blankCanvasDataURL = blankCanvas.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n if (canvasDataURL !== blankCanvasDataURL) {\n attributes.rr_dataURL = canvasDataURL;\n }\n }\n }\n if (tagName === \"img\" && inlineImages) {\n if (!canvasService) {\n canvasService = doc.createElement(\"canvas\");\n canvasCtx = canvasService.getContext(\"2d\");\n }\n const image = n2;\n const imageSrc = image.currentSrc || image.getAttribute(\"src\") || \"\";\n const priorCrossOrigin = image.crossOrigin;\n const recordInlineImage = () => {\n image.removeEventListener(\"load\", recordInlineImage);\n try {\n canvasService.width = image.naturalWidth;\n canvasService.height = image.naturalHeight;\n canvasCtx.drawImage(image, 0, 0);\n attributes.rr_dataURL = canvasService.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n } catch (err) {\n if (image.crossOrigin !== \"anonymous\") {\n image.crossOrigin = \"anonymous\";\n if (image.complete && image.naturalWidth !== 0)\n recordInlineImage();\n else image.addEventListener(\"load\", recordInlineImage);\n return;\n } else {\n console.warn(\n `Cannot inline img src=${imageSrc}! Error: ${err}`\n );\n }\n }\n if (image.crossOrigin === \"anonymous\") {\n priorCrossOrigin ? attributes.crossOrigin = priorCrossOrigin : image.removeAttribute(\"crossorigin\");\n }\n };\n if (image.complete && image.naturalWidth !== 0) recordInlineImage();\n else image.addEventListener(\"load\", recordInlineImage);\n }\n if (tagName === \"audio\" || tagName === \"video\") {\n const mediaAttributes = attributes;\n mediaAttributes.rr_mediaState = n2.paused ? \"paused\" : \"played\";\n mediaAttributes.rr_mediaCurrentTime = n2.currentTime;\n mediaAttributes.rr_mediaPlaybackRate = n2.playbackRate;\n mediaAttributes.rr_mediaMuted = n2.muted;\n mediaAttributes.rr_mediaLoop = n2.loop;\n mediaAttributes.rr_mediaVolume = n2.volume;\n }\n if (!newlyAddedElement) {\n if (n2.scrollLeft) {\n attributes.rr_scrollLeft = n2.scrollLeft;\n }\n if (n2.scrollTop) {\n attributes.rr_scrollTop = n2.scrollTop;\n }\n }\n if (needBlock) {\n const { width, height } = n2.getBoundingClientRect();\n attributes = {\n class: attributes.class,\n rr_width: `${width}px`,\n rr_height: `${height}px`\n };\n }\n if (tagName === \"iframe\" && !keepIframeSrcFn(attributes.src)) {\n if (!n2.contentDocument) {\n attributes.rr_src = attributes.src;\n }\n delete attributes.src;\n }\n let isCustomElement;\n try {\n if (customElements.get(tagName)) isCustomElement = true;\n } catch (e2) {\n }\n return {\n type: NodeType$3.Element,\n tagName,\n attributes,\n childNodes: [],\n isSVG: isSVGElement(n2) || void 0,\n needBlock,\n rootId,\n isCustom: isCustomElement\n };\n}\nfunction lowerIfExists(maybeAttr) {\n if (maybeAttr === void 0 || maybeAttr === null) {\n return \"\";\n } else {\n return maybeAttr.toLowerCase();\n }\n}\nfunction slimDOMExcluded(sn, slimDOMOptions) {\n if (slimDOMOptions.comment && sn.type === NodeType$3.Comment) {\n return true;\n } else if (sn.type === NodeType$3.Element) {\n if (slimDOMOptions.script && // script tag\n (sn.tagName === \"script\" || // (module)preload link\n sn.tagName === \"link\" && (sn.attributes.rel === \"preload\" || sn.attributes.rel === \"modulepreload\") && sn.attributes.as === \"script\" || // prefetch link\n sn.tagName === \"link\" && sn.attributes.rel === \"prefetch\" && typeof sn.attributes.href === \"string\" && extractFileExtension(sn.attributes.href) === \"js\")) {\n return true;\n } else if (slimDOMOptions.headFavicon && (sn.tagName === \"link\" && sn.attributes.rel === \"shortcut icon\" || sn.tagName === \"meta\" && (lowerIfExists(sn.attributes.name).match(\n /^msapplication-tile(image|color)$/\n ) || lowerIfExists(sn.attributes.name) === \"application-name\" || lowerIfExists(sn.attributes.rel) === \"icon\" || lowerIfExists(sn.attributes.rel) === \"apple-touch-icon\" || lowerIfExists(sn.attributes.rel) === \"shortcut icon\"))) {\n return true;\n } else if (sn.tagName === \"meta\") {\n if (slimDOMOptions.headMetaDescKeywords && lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\n return true;\n } else if (slimDOMOptions.headMetaSocial && (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) || // og = opengraph (facebook)\n lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) || lowerIfExists(sn.attributes.name) === \"pinterest\")) {\n return true;\n } else if (slimDOMOptions.headMetaRobots && (lowerIfExists(sn.attributes.name) === \"robots\" || lowerIfExists(sn.attributes.name) === \"googlebot\" || lowerIfExists(sn.attributes.name) === \"bingbot\")) {\n return true;\n } else if (slimDOMOptions.headMetaHttpEquiv && sn.attributes[\"http-equiv\"] !== void 0) {\n return true;\n } else if (slimDOMOptions.headMetaAuthorship && (lowerIfExists(sn.attributes.name) === \"author\" || lowerIfExists(sn.attributes.name) === \"generator\" || lowerIfExists(sn.attributes.name) === \"framework\" || lowerIfExists(sn.attributes.name) === \"publisher\" || lowerIfExists(sn.attributes.name) === \"progid\" || lowerIfExists(sn.attributes.property).match(/^article:/) || lowerIfExists(sn.attributes.property).match(/^product:/))) {\n return true;\n } else if (slimDOMOptions.headMetaVerification && (lowerIfExists(sn.attributes.name) === \"google-site-verification\" || lowerIfExists(sn.attributes.name) === \"yandex-verification\" || lowerIfExists(sn.attributes.name) === \"csrf-token\" || lowerIfExists(sn.attributes.name) === \"p:domain_verify\" || lowerIfExists(sn.attributes.name) === \"verify-v1\" || lowerIfExists(sn.attributes.name) === \"verification\" || lowerIfExists(sn.attributes.name) === \"shopify-checkout-api-token\")) {\n return true;\n }\n }\n }\n return false;\n}\nfunction serializeNodeWithId(n2, options) {\n const {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n skipChild = false,\n inlineStylesheet = true,\n maskInputOptions = {},\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions = {},\n inlineImages = false,\n recordCanvas = false,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout = 5e3,\n onStylesheetLoad,\n stylesheetLoadTimeout = 5e3,\n keepIframeSrcFn = () => false,\n newlyAddedElement = false,\n cssCaptured = false\n } = options;\n let { needsMask } = options;\n let { preserveWhiteSpace = true } = options;\n if (!needsMask) {\n const checkAncestors = needsMask === void 0;\n needsMask = needMaskingText(\n n2,\n maskTextClass,\n maskTextSelector,\n checkAncestors\n );\n }\n const _serializedNode = serializeNode(n2, {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement,\n cssCaptured\n });\n if (!_serializedNode) {\n console.warn(n2, \"not serialized\");\n return null;\n }\n let id;\n if (mirror2.hasNode(n2)) {\n id = mirror2.getId(n2);\n } else if (slimDOMExcluded(_serializedNode, slimDOMOptions) || !preserveWhiteSpace && _serializedNode.type === NodeType$3.Text && !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, \"\").length) {\n id = IGNORED_NODE;\n } else {\n id = genId();\n }\n const serializedNode = Object.assign(_serializedNode, { id });\n mirror2.add(n2, serializedNode);\n if (id === IGNORED_NODE) {\n return null;\n }\n if (onSerialize) {\n onSerialize(n2);\n }\n let recordChild = !skipChild;\n if (serializedNode.type === NodeType$3.Element) {\n recordChild = recordChild && !serializedNode.needBlock;\n delete serializedNode.needBlock;\n const shadowRootEl = index$1.shadowRoot(n2);\n if (shadowRootEl && isNativeShadowDom(shadowRootEl))\n serializedNode.isShadowHost = true;\n }\n if ((serializedNode.type === NodeType$3.Document || serializedNode.type === NodeType$3.Element) && recordChild) {\n if (slimDOMOptions.headWhitespace && serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"head\") {\n preserveWhiteSpace = false;\n }\n const bypassOptions = {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n skipChild,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn,\n cssCaptured: false\n };\n if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"textarea\" && serializedNode.attributes.value !== void 0) ;\n else {\n if (serializedNode.type === NodeType$3.Element && serializedNode.attributes._cssText !== void 0 && typeof serializedNode.attributes._cssText === \"string\") {\n bypassOptions.cssCaptured = true;\n }\n for (const childN of Array.from(index$1.childNodes(n2))) {\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n }\n let shadowRootEl = null;\n if (isElement(n2) && (shadowRootEl = index$1.shadowRoot(n2))) {\n for (const childN of Array.from(index$1.childNodes(shadowRootEl))) {\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n isNativeShadowDom(shadowRootEl) && (serializedChildNode.isShadow = true);\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n }\n }\n const parent = index$1.parentNode(n2);\n if (parent && isShadowRoot(parent) && isNativeShadowDom(parent)) {\n serializedNode.isShadow = true;\n }\n if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"iframe\") {\n onceIframeLoaded(\n n2,\n () => {\n const iframeDoc = n2.contentDocument;\n if (iframeDoc && onIframeLoad) {\n const serializedIframeNode = serializeNodeWithId(iframeDoc, {\n doc: iframeDoc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn\n });\n if (serializedIframeNode) {\n onIframeLoad(\n n2,\n serializedIframeNode\n );\n }\n }\n },\n iframeLoadTimeout\n );\n }\n if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"link\" && typeof serializedNode.attributes.rel === \"string\" && (serializedNode.attributes.rel === \"stylesheet\" || serializedNode.attributes.rel === \"preload\" && typeof serializedNode.attributes.href === \"string\" && extractFileExtension(serializedNode.attributes.href) === \"css\")) {\n onceStylesheetLoaded(\n n2,\n () => {\n if (onStylesheetLoad) {\n const serializedLinkNode = serializeNodeWithId(n2, {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn\n });\n if (serializedLinkNode) {\n onStylesheetLoad(\n n2,\n serializedLinkNode\n );\n }\n }\n },\n stylesheetLoadTimeout\n );\n }\n return serializedNode;\n}\nfunction snapshot(n2, options) {\n const {\n mirror: mirror2 = new Mirror(),\n blockClass = \"rr-block\",\n blockSelector = null,\n maskTextClass = \"rr-mask\",\n maskTextSelector = null,\n inlineStylesheet = true,\n inlineImages = false,\n recordCanvas = false,\n maskAllInputs = false,\n maskTextFn,\n maskInputFn,\n slimDOM = false,\n dataURLOptions,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn = () => false\n } = options || {};\n const maskInputOptions = maskAllInputs === true ? {\n color: true,\n date: true,\n \"datetime-local\": true,\n email: true,\n month: true,\n number: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true,\n textarea: true,\n select: true,\n password: true\n } : maskAllInputs === false ? {\n password: true\n } : maskAllInputs;\n const slimDOMOptions = slimDOM === true || slimDOM === \"all\" ? (\n // if true: set of sensible options that should not throw away any information\n {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaDescKeywords: slimDOM === \"all\",\n // destructive\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaAuthorship: true,\n headMetaVerification: true\n }\n ) : slimDOM === false ? {} : slimDOM;\n return serializeNodeWithId(n2, {\n doc: n2,\n mirror: mirror2,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn,\n newlyAddedElement: false\n });\n}\nfunction getDefaultExportFromCjs$1(x2) {\n return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, \"default\") ? x2[\"default\"] : x2;\n}\nfunction getAugmentedNamespace$1(n2) {\n if (n2.__esModule) return n2;\n var f2 = n2.default;\n if (typeof f2 == \"function\") {\n var a2 = function a22() {\n if (this instanceof a22) {\n return Reflect.construct(f2, arguments, this.constructor);\n }\n return f2.apply(this, arguments);\n };\n a2.prototype = f2.prototype;\n } else a2 = {};\n Object.defineProperty(a2, \"__esModule\", { value: true });\n Object.keys(n2).forEach(function(k) {\n var d = Object.getOwnPropertyDescriptor(n2, k);\n Object.defineProperty(a2, k, d.get ? d : {\n enumerable: true,\n get: function() {\n return n2[k];\n }\n });\n });\n return a2;\n}\nvar picocolors_browser$1 = { exports: {} };\nvar x$1 = String;\nvar create$1 = function() {\n return { isColorSupported: false, reset: x$1, bold: x$1, dim: x$1, italic: x$1, underline: x$1, inverse: x$1, hidden: x$1, strikethrough: x$1, black: x$1, red: x$1, green: x$1, yellow: x$1, blue: x$1, magenta: x$1, cyan: x$1, white: x$1, gray: x$1, bgBlack: x$1, bgRed: x$1, bgGreen: x$1, bgYellow: x$1, bgBlue: x$1, bgMagenta: x$1, bgCyan: x$1, bgWhite: x$1 };\n};\npicocolors_browser$1.exports = create$1();\npicocolors_browser$1.exports.createColors = create$1;\nvar picocolors_browserExports$1 = picocolors_browser$1.exports;\nconst __viteBrowserExternal$2 = {};\nconst __viteBrowserExternal$1$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: __viteBrowserExternal$2\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst require$$2$1 = /* @__PURE__ */ getAugmentedNamespace$1(__viteBrowserExternal$1$1);\nlet pico$1 = picocolors_browserExports$1;\nlet terminalHighlight$1$1 = require$$2$1;\nlet CssSyntaxError$3$1 = class CssSyntaxError extends Error {\n constructor(message, line, column, source, file, plugin22) {\n super(message);\n this.name = \"CssSyntaxError\";\n this.reason = message;\n if (file) {\n this.file = file;\n }\n if (source) {\n this.source = source;\n }\n if (plugin22) {\n this.plugin = plugin22;\n }\n if (typeof line !== \"undefined\" && typeof column !== \"undefined\") {\n if (typeof line === \"number\") {\n this.line = line;\n this.column = column;\n } else {\n this.line = line.line;\n this.column = line.column;\n this.endLine = column.line;\n this.endColumn = column.column;\n }\n }\n this.setMessage();\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, CssSyntaxError);\n }\n }\n setMessage() {\n this.message = this.plugin ? this.plugin + \": \" : \"\";\n this.message += this.file ? this.file : \"\";\n if (typeof this.line !== \"undefined\") {\n this.message += \":\" + this.line + \":\" + this.column;\n }\n this.message += \": \" + this.reason;\n }\n showSourceCode(color) {\n if (!this.source) return \"\";\n let css = this.source;\n if (color == null) color = pico$1.isColorSupported;\n if (terminalHighlight$1$1) {\n if (color) css = terminalHighlight$1$1(css);\n }\n let lines = css.split(/\\r?\\n/);\n let start = Math.max(this.line - 3, 0);\n let end = Math.min(this.line + 2, lines.length);\n let maxWidth = String(end).length;\n let mark, aside;\n if (color) {\n let { bold, gray, red } = pico$1.createColors(true);\n mark = (text) => bold(red(text));\n aside = (text) => gray(text);\n } else {\n mark = aside = (str) => str;\n }\n return lines.slice(start, end).map((line, index2) => {\n let number = start + 1 + index2;\n let gutter = \" \" + (\" \" + number).slice(-maxWidth) + \" | \";\n if (number === this.line) {\n let spacing = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, this.column - 1).replace(/[^\\t]/g, \" \");\n return mark(\">\") + aside(gutter) + line + \"\\n \" + spacing + mark(\"^\");\n }\n return \" \" + aside(gutter) + line;\n }).join(\"\\n\");\n }\n toString() {\n let code = this.showSourceCode();\n if (code) {\n code = \"\\n\\n\" + code + \"\\n\";\n }\n return this.name + \": \" + this.message + code;\n }\n};\nvar cssSyntaxError$1 = CssSyntaxError$3$1;\nCssSyntaxError$3$1.default = CssSyntaxError$3$1;\nvar symbols$1 = {};\nsymbols$1.isClean = Symbol(\"isClean\");\nsymbols$1.my = Symbol(\"my\");\nconst DEFAULT_RAW$1 = {\n after: \"\\n\",\n beforeClose: \"\\n\",\n beforeComment: \"\\n\",\n beforeDecl: \"\\n\",\n beforeOpen: \" \",\n beforeRule: \"\\n\",\n colon: \": \",\n commentLeft: \" \",\n commentRight: \" \",\n emptyBody: \"\",\n indent: \" \",\n semicolon: false\n};\nfunction capitalize$1(str) {\n return str[0].toUpperCase() + str.slice(1);\n}\nlet Stringifier$2$1 = class Stringifier {\n constructor(builder) {\n this.builder = builder;\n }\n atrule(node2, semicolon) {\n let name = \"@\" + node2.name;\n let params = node2.params ? this.rawValue(node2, \"params\") : \"\";\n if (typeof node2.raws.afterName !== \"undefined\") {\n name += node2.raws.afterName;\n } else if (params) {\n name += \" \";\n }\n if (node2.nodes) {\n this.block(node2, name + params);\n } else {\n let end = (node2.raws.between || \"\") + (semicolon ? \";\" : \"\");\n this.builder(name + params + end, node2);\n }\n }\n beforeAfter(node2, detect) {\n let value;\n if (node2.type === \"decl\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (node2.type === \"comment\") {\n value = this.raw(node2, null, \"beforeComment\");\n } else if (detect === \"before\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else {\n value = this.raw(node2, null, \"beforeClose\");\n }\n let buf = node2.parent;\n let depth = 0;\n while (buf && buf.type !== \"root\") {\n depth += 1;\n buf = buf.parent;\n }\n if (value.includes(\"\\n\")) {\n let indent = this.raw(node2, null, \"indent\");\n if (indent.length) {\n for (let step = 0; step < depth; step++) value += indent;\n }\n }\n return value;\n }\n block(node2, start) {\n let between = this.raw(node2, \"between\", \"beforeOpen\");\n this.builder(start + between + \"{\", node2, \"start\");\n let after;\n if (node2.nodes && node2.nodes.length) {\n this.body(node2);\n after = this.raw(node2, \"after\");\n } else {\n after = this.raw(node2, \"after\", \"emptyBody\");\n }\n if (after) this.builder(after);\n this.builder(\"}\", node2, \"end\");\n }\n body(node2) {\n let last = node2.nodes.length - 1;\n while (last > 0) {\n if (node2.nodes[last].type !== \"comment\") break;\n last -= 1;\n }\n let semicolon = this.raw(node2, \"semicolon\");\n for (let i2 = 0; i2 < node2.nodes.length; i2++) {\n let child = node2.nodes[i2];\n let before = this.raw(child, \"before\");\n if (before) this.builder(before);\n this.stringify(child, last !== i2 || semicolon);\n }\n }\n comment(node2) {\n let left = this.raw(node2, \"left\", \"commentLeft\");\n let right = this.raw(node2, \"right\", \"commentRight\");\n this.builder(\"/*\" + left + node2.text + right + \"*/\", node2);\n }\n decl(node2, semicolon) {\n let between = this.raw(node2, \"between\", \"colon\");\n let string = node2.prop + between + this.rawValue(node2, \"value\");\n if (node2.important) {\n string += node2.raws.important || \" !important\";\n }\n if (semicolon) string += \";\";\n this.builder(string, node2);\n }\n document(node2) {\n this.body(node2);\n }\n raw(node2, own, detect) {\n let value;\n if (!detect) detect = own;\n if (own) {\n value = node2.raws[own];\n if (typeof value !== \"undefined\") return value;\n }\n let parent = node2.parent;\n if (detect === \"before\") {\n if (!parent || parent.type === \"root\" && parent.first === node2) {\n return \"\";\n }\n if (parent && parent.type === \"document\") {\n return \"\";\n }\n }\n if (!parent) return DEFAULT_RAW$1[detect];\n let root2 = node2.root();\n if (!root2.rawCache) root2.rawCache = {};\n if (typeof root2.rawCache[detect] !== \"undefined\") {\n return root2.rawCache[detect];\n }\n if (detect === \"before\" || detect === \"after\") {\n return this.beforeAfter(node2, detect);\n } else {\n let method = \"raw\" + capitalize$1(detect);\n if (this[method]) {\n value = this[method](root2, node2);\n } else {\n root2.walk((i2) => {\n value = i2.raws[own];\n if (typeof value !== \"undefined\") return false;\n });\n }\n }\n if (typeof value === \"undefined\") value = DEFAULT_RAW$1[detect];\n root2.rawCache[detect] = value;\n return value;\n }\n rawBeforeClose(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length > 0) {\n if (typeof i2.raws.after !== \"undefined\") {\n value = i2.raws.after;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawBeforeComment(root2, node2) {\n let value;\n root2.walkComments((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeDecl(root2, node2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeOpen(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.type !== \"decl\") {\n value = i2.raws.between;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawBeforeRule(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && (i2.parent !== root2 || root2.first !== i2)) {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawColon(root2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.between !== \"undefined\") {\n value = i2.raws.between.replace(/[^\\s:]/g, \"\");\n return false;\n }\n });\n return value;\n }\n rawEmptyBody(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length === 0) {\n value = i2.raws.after;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawIndent(root2) {\n if (root2.raws.indent) return root2.raws.indent;\n let value;\n root2.walk((i2) => {\n let p = i2.parent;\n if (p && p !== root2 && p.parent && p.parent === root2) {\n if (typeof i2.raws.before !== \"undefined\") {\n let parts = i2.raws.before.split(\"\\n\");\n value = parts[parts.length - 1];\n value = value.replace(/\\S/g, \"\");\n return false;\n }\n }\n });\n return value;\n }\n rawSemicolon(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length && i2.last.type === \"decl\") {\n value = i2.raws.semicolon;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawValue(node2, prop) {\n let value = node2[prop];\n let raw = node2.raws[prop];\n if (raw && raw.value === value) {\n return raw.raw;\n }\n return value;\n }\n root(node2) {\n this.body(node2);\n if (node2.raws.after) this.builder(node2.raws.after);\n }\n rule(node2) {\n this.block(node2, this.rawValue(node2, \"selector\"));\n if (node2.raws.ownSemicolon) {\n this.builder(node2.raws.ownSemicolon, node2, \"end\");\n }\n }\n stringify(node2, semicolon) {\n if (!this[node2.type]) {\n throw new Error(\n \"Unknown AST node type \" + node2.type + \". Maybe you need to change PostCSS stringifier.\"\n );\n }\n this[node2.type](node2, semicolon);\n }\n};\nvar stringifier$1 = Stringifier$2$1;\nStringifier$2$1.default = Stringifier$2$1;\nlet Stringifier$1$1 = stringifier$1;\nfunction stringify$4$1(node2, builder) {\n let str = new Stringifier$1$1(builder);\n str.stringify(node2);\n}\nvar stringify_1$1 = stringify$4$1;\nstringify$4$1.default = stringify$4$1;\nlet { isClean: isClean$2$1, my: my$2$1 } = symbols$1;\nlet CssSyntaxError$2$1 = cssSyntaxError$1;\nlet Stringifier2$1 = stringifier$1;\nlet stringify$3$1 = stringify_1$1;\nfunction cloneNode$1(obj, parent) {\n let cloned = new obj.constructor();\n for (let i2 in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, i2)) {\n continue;\n }\n if (i2 === \"proxyCache\") continue;\n let value = obj[i2];\n let type = typeof value;\n if (i2 === \"parent\" && type === \"object\") {\n if (parent) cloned[i2] = parent;\n } else if (i2 === \"source\") {\n cloned[i2] = value;\n } else if (Array.isArray(value)) {\n cloned[i2] = value.map((j) => cloneNode$1(j, cloned));\n } else {\n if (type === \"object\" && value !== null) value = cloneNode$1(value);\n cloned[i2] = value;\n }\n }\n return cloned;\n}\nlet Node$4$1 = class Node2 {\n constructor(defaults = {}) {\n this.raws = {};\n this[isClean$2$1] = false;\n this[my$2$1] = true;\n for (let name in defaults) {\n if (name === \"nodes\") {\n this.nodes = [];\n for (let node2 of defaults[name]) {\n if (typeof node2.clone === \"function\") {\n this.append(node2.clone());\n } else {\n this.append(node2);\n }\n }\n } else {\n this[name] = defaults[name];\n }\n }\n }\n addToError(error) {\n error.postcssNode = this;\n if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n let s2 = this.source;\n error.stack = error.stack.replace(\n /\\n\\s{4}at /,\n `$&${s2.input.from}:${s2.start.line}:${s2.start.column}$&`\n );\n }\n return error;\n }\n after(add) {\n this.parent.insertAfter(this, add);\n return this;\n }\n assign(overrides = {}) {\n for (let name in overrides) {\n this[name] = overrides[name];\n }\n return this;\n }\n before(add) {\n this.parent.insertBefore(this, add);\n return this;\n }\n cleanRaws(keepBetween) {\n delete this.raws.before;\n delete this.raws.after;\n if (!keepBetween) delete this.raws.between;\n }\n clone(overrides = {}) {\n let cloned = cloneNode$1(this);\n for (let name in overrides) {\n cloned[name] = overrides[name];\n }\n return cloned;\n }\n cloneAfter(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertAfter(this, cloned);\n return cloned;\n }\n cloneBefore(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertBefore(this, cloned);\n return cloned;\n }\n error(message, opts = {}) {\n if (this.source) {\n let { end, start } = this.rangeBy(opts);\n return this.source.input.error(\n message,\n { column: start.column, line: start.line },\n { column: end.column, line: end.line },\n opts\n );\n }\n return new CssSyntaxError$2$1(message);\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"prop\" || prop === \"value\" || prop === \"name\" || prop === \"params\" || prop === \"important\" || /* c8 ignore next */\n prop === \"text\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n markDirty() {\n if (this[isClean$2$1]) {\n this[isClean$2$1] = false;\n let next = this;\n while (next = next.parent) {\n next[isClean$2$1] = false;\n }\n }\n }\n next() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 + 1];\n }\n positionBy(opts, stringRepresentation) {\n let pos = this.source.start;\n if (opts.index) {\n pos = this.positionInside(opts.index, stringRepresentation);\n } else if (opts.word) {\n stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) pos = this.positionInside(index2, stringRepresentation);\n }\n return pos;\n }\n positionInside(index2, stringRepresentation) {\n let string = stringRepresentation || this.toString();\n let column = this.source.start.column;\n let line = this.source.start.line;\n for (let i2 = 0; i2 < index2; i2++) {\n if (string[i2] === \"\\n\") {\n column = 1;\n line += 1;\n } else {\n column += 1;\n }\n }\n return { column, line };\n }\n prev() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 - 1];\n }\n rangeBy(opts) {\n let start = {\n column: this.source.start.column,\n line: this.source.start.line\n };\n let end = this.source.end ? {\n column: this.source.end.column + 1,\n line: this.source.end.line\n } : {\n column: start.column + 1,\n line: start.line\n };\n if (opts.word) {\n let stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) {\n start = this.positionInside(index2, stringRepresentation);\n end = this.positionInside(index2 + opts.word.length, stringRepresentation);\n }\n } else {\n if (opts.start) {\n start = {\n column: opts.start.column,\n line: opts.start.line\n };\n } else if (opts.index) {\n start = this.positionInside(opts.index);\n }\n if (opts.end) {\n end = {\n column: opts.end.column,\n line: opts.end.line\n };\n } else if (typeof opts.endIndex === \"number\") {\n end = this.positionInside(opts.endIndex);\n } else if (opts.index) {\n end = this.positionInside(opts.index + 1);\n }\n }\n if (end.line < start.line || end.line === start.line && end.column <= start.column) {\n end = { column: start.column + 1, line: start.line };\n }\n return { end, start };\n }\n raw(prop, defaultType) {\n let str = new Stringifier2$1();\n return str.raw(this, prop, defaultType);\n }\n remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n this.parent = void 0;\n return this;\n }\n replaceWith(...nodes) {\n if (this.parent) {\n let bookmark = this;\n let foundSelf = false;\n for (let node2 of nodes) {\n if (node2 === this) {\n foundSelf = true;\n } else if (foundSelf) {\n this.parent.insertAfter(bookmark, node2);\n bookmark = node2;\n } else {\n this.parent.insertBefore(bookmark, node2);\n }\n }\n if (!foundSelf) {\n this.remove();\n }\n }\n return this;\n }\n root() {\n let result2 = this;\n while (result2.parent && result2.parent.type !== \"document\") {\n result2 = result2.parent;\n }\n return result2;\n }\n toJSON(_, inputs) {\n let fixed = {};\n let emitInputs = inputs == null;\n inputs = inputs || /* @__PURE__ */ new Map();\n let inputsNextIndex = 0;\n for (let name in this) {\n if (!Object.prototype.hasOwnProperty.call(this, name)) {\n continue;\n }\n if (name === \"parent\" || name === \"proxyCache\") continue;\n let value = this[name];\n if (Array.isArray(value)) {\n fixed[name] = value.map((i2) => {\n if (typeof i2 === \"object\" && i2.toJSON) {\n return i2.toJSON(null, inputs);\n } else {\n return i2;\n }\n });\n } else if (typeof value === \"object\" && value.toJSON) {\n fixed[name] = value.toJSON(null, inputs);\n } else if (name === \"source\") {\n let inputId = inputs.get(value.input);\n if (inputId == null) {\n inputId = inputsNextIndex;\n inputs.set(value.input, inputsNextIndex);\n inputsNextIndex++;\n }\n fixed[name] = {\n end: value.end,\n inputId,\n start: value.start\n };\n } else {\n fixed[name] = value;\n }\n }\n if (emitInputs) {\n fixed.inputs = [...inputs.keys()].map((input2) => input2.toJSON());\n }\n return fixed;\n }\n toProxy() {\n if (!this.proxyCache) {\n this.proxyCache = new Proxy(this, this.getProxyProcessor());\n }\n return this.proxyCache;\n }\n toString(stringifier2 = stringify$3$1) {\n if (stringifier2.stringify) stringifier2 = stringifier2.stringify;\n let result2 = \"\";\n stringifier2(this, (i2) => {\n result2 += i2;\n });\n return result2;\n }\n warn(result2, text, opts) {\n let data = { node: this };\n for (let i2 in opts) data[i2] = opts[i2];\n return result2.warn(text, data);\n }\n get proxyOf() {\n return this;\n }\n};\nvar node$1 = Node$4$1;\nNode$4$1.default = Node$4$1;\nlet Node$3$1 = node$1;\nlet Declaration$4$1 = class Declaration extends Node$3$1 {\n constructor(defaults) {\n if (defaults && typeof defaults.value !== \"undefined\" && typeof defaults.value !== \"string\") {\n defaults = { ...defaults, value: String(defaults.value) };\n }\n super(defaults);\n this.type = \"decl\";\n }\n get variable() {\n return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n }\n};\nvar declaration$1 = Declaration$4$1;\nDeclaration$4$1.default = Declaration$4$1;\nlet urlAlphabet$1 = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\nlet customAlphabet$1 = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = \"\";\n let i2 = size;\n while (i2--) {\n id += alphabet[Math.random() * alphabet.length | 0];\n }\n return id;\n };\n};\nlet nanoid$1$1 = (size = 21) => {\n let id = \"\";\n let i2 = size;\n while (i2--) {\n id += urlAlphabet$1[Math.random() * 64 | 0];\n }\n return id;\n};\nvar nonSecure$1 = { nanoid: nanoid$1$1, customAlphabet: customAlphabet$1 };\nlet { SourceMapConsumer: SourceMapConsumer$2$1, SourceMapGenerator: SourceMapGenerator$2$1 } = require$$2$1;\nlet { existsSync: existsSync$1, readFileSync: readFileSync$1 } = require$$2$1;\nlet { dirname: dirname$1$1, join: join$1 } = require$$2$1;\nfunction fromBase64$1(str) {\n if (Buffer) {\n return Buffer.from(str, \"base64\").toString();\n } else {\n return window.atob(str);\n }\n}\nlet PreviousMap$2$1 = class PreviousMap {\n constructor(css, opts) {\n if (opts.map === false) return;\n this.loadAnnotation(css);\n this.inline = this.startWith(this.annotation, \"data:\");\n let prev = opts.map ? opts.map.prev : void 0;\n let text = this.loadMap(opts.from, prev);\n if (!this.mapFile && opts.from) {\n this.mapFile = opts.from;\n }\n if (this.mapFile) this.root = dirname$1$1(this.mapFile);\n if (text) this.text = text;\n }\n consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new SourceMapConsumer$2$1(this.text);\n }\n return this.consumerCache;\n }\n decodeInline(text) {\n let baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/;\n let baseUri = /^data:application\\/json;base64,/;\n let charsetUri = /^data:application\\/json;charset=utf-?8,/;\n let uri = /^data:application\\/json,/;\n if (charsetUri.test(text) || uri.test(text)) {\n return decodeURIComponent(text.substr(RegExp.lastMatch.length));\n }\n if (baseCharsetUri.test(text) || baseUri.test(text)) {\n return fromBase64$1(text.substr(RegExp.lastMatch.length));\n }\n let encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n throw new Error(\"Unsupported source map encoding \" + encoding);\n }\n getAnnotationURL(sourceMapString) {\n return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n }\n isMap(map) {\n if (typeof map !== \"object\") return false;\n return typeof map.mappings === \"string\" || typeof map._mappings === \"string\" || Array.isArray(map.sections);\n }\n loadAnnotation(css) {\n let comments = css.match(/\\/\\*\\s*# sourceMappingURL=/gm);\n if (!comments) return;\n let start = css.lastIndexOf(comments.pop());\n let end = css.indexOf(\"*/\", start);\n if (start > -1 && end > -1) {\n this.annotation = this.getAnnotationURL(css.substring(start, end));\n }\n }\n loadFile(path) {\n this.root = dirname$1$1(path);\n if (existsSync$1(path)) {\n this.mapFile = path;\n return readFileSync$1(path, \"utf-8\").toString().trim();\n }\n }\n loadMap(file, prev) {\n if (prev === false) return false;\n if (prev) {\n if (typeof prev === \"string\") {\n return prev;\n } else if (typeof prev === \"function\") {\n let prevPath = prev(file);\n if (prevPath) {\n let map = this.loadFile(prevPath);\n if (!map) {\n throw new Error(\n \"Unable to load previous source map: \" + prevPath.toString()\n );\n }\n return map;\n }\n } else if (prev instanceof SourceMapConsumer$2$1) {\n return SourceMapGenerator$2$1.fromSourceMap(prev).toString();\n } else if (prev instanceof SourceMapGenerator$2$1) {\n return prev.toString();\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev);\n } else {\n throw new Error(\n \"Unsupported previous source map format: \" + prev.toString()\n );\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation);\n } else if (this.annotation) {\n let map = this.annotation;\n if (file) map = join$1(dirname$1$1(file), map);\n return this.loadFile(map);\n }\n }\n startWith(string, start) {\n if (!string) return false;\n return string.substr(0, start.length) === start;\n }\n withContent() {\n return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n }\n};\nvar previousMap$1 = PreviousMap$2$1;\nPreviousMap$2$1.default = PreviousMap$2$1;\nlet { SourceMapConsumer: SourceMapConsumer$1$1, SourceMapGenerator: SourceMapGenerator$1$1 } = require$$2$1;\nlet { fileURLToPath: fileURLToPath$1, pathToFileURL: pathToFileURL$1$1 } = require$$2$1;\nlet { isAbsolute: isAbsolute$1, resolve: resolve$1$1 } = require$$2$1;\nlet { nanoid: nanoid$2 } = nonSecure$1;\nlet terminalHighlight$2 = require$$2$1;\nlet CssSyntaxError$1$1 = cssSyntaxError$1;\nlet PreviousMap$1$1 = previousMap$1;\nlet fromOffsetCache$1 = Symbol(\"fromOffsetCache\");\nlet sourceMapAvailable$1$1 = Boolean(SourceMapConsumer$1$1 && SourceMapGenerator$1$1);\nlet pathAvailable$1$1 = Boolean(resolve$1$1 && isAbsolute$1);\nlet Input$4$1 = class Input {\n constructor(css, opts = {}) {\n if (css === null || typeof css === \"undefined\" || typeof css === \"object\" && !css.toString) {\n throw new Error(`PostCSS received ${css} instead of CSS string`);\n }\n this.css = css.toString();\n if (this.css[0] === \"\\uFEFF\" || this.css[0] === \"￾\") {\n this.hasBOM = true;\n this.css = this.css.slice(1);\n } else {\n this.hasBOM = false;\n }\n if (opts.from) {\n if (!pathAvailable$1$1 || /^\\w+:\\/\\//.test(opts.from) || isAbsolute$1(opts.from)) {\n this.file = opts.from;\n } else {\n this.file = resolve$1$1(opts.from);\n }\n }\n if (pathAvailable$1$1 && sourceMapAvailable$1$1) {\n let map = new PreviousMap$1$1(this.css, opts);\n if (map.text) {\n this.map = map;\n let file = map.consumer().file;\n if (!this.file && file) this.file = this.mapResolve(file);\n }\n }\n if (!this.file) {\n this.id = \"\";\n }\n if (this.map) this.map.file = this.from;\n }\n error(message, line, column, opts = {}) {\n let result2, endLine, endColumn;\n if (line && typeof line === \"object\") {\n let start = line;\n let end = column;\n if (typeof start.offset === \"number\") {\n let pos = this.fromOffset(start.offset);\n line = pos.line;\n column = pos.col;\n } else {\n line = start.line;\n column = start.column;\n }\n if (typeof end.offset === \"number\") {\n let pos = this.fromOffset(end.offset);\n endLine = pos.line;\n endColumn = pos.col;\n } else {\n endLine = end.line;\n endColumn = end.column;\n }\n } else if (!column) {\n let pos = this.fromOffset(line);\n line = pos.line;\n column = pos.col;\n }\n let origin = this.origin(line, column, endLine, endColumn);\n if (origin) {\n result2 = new CssSyntaxError$1$1(\n message,\n origin.endLine === void 0 ? origin.line : { column: origin.column, line: origin.line },\n origin.endLine === void 0 ? origin.column : { column: origin.endColumn, line: origin.endLine },\n origin.source,\n origin.file,\n opts.plugin\n );\n } else {\n result2 = new CssSyntaxError$1$1(\n message,\n endLine === void 0 ? line : { column, line },\n endLine === void 0 ? column : { column: endColumn, line: endLine },\n this.css,\n this.file,\n opts.plugin\n );\n }\n result2.input = { column, endColumn, endLine, line, source: this.css };\n if (this.file) {\n if (pathToFileURL$1$1) {\n result2.input.url = pathToFileURL$1$1(this.file).toString();\n }\n result2.input.file = this.file;\n }\n return result2;\n }\n fromOffset(offset) {\n let lastLine, lineToIndex;\n if (!this[fromOffsetCache$1]) {\n let lines = this.css.split(\"\\n\");\n lineToIndex = new Array(lines.length);\n let prevIndex = 0;\n for (let i2 = 0, l2 = lines.length; i2 < l2; i2++) {\n lineToIndex[i2] = prevIndex;\n prevIndex += lines[i2].length + 1;\n }\n this[fromOffsetCache$1] = lineToIndex;\n } else {\n lineToIndex = this[fromOffsetCache$1];\n }\n lastLine = lineToIndex[lineToIndex.length - 1];\n let min = 0;\n if (offset >= lastLine) {\n min = lineToIndex.length - 1;\n } else {\n let max = lineToIndex.length - 2;\n let mid;\n while (min < max) {\n mid = min + (max - min >> 1);\n if (offset < lineToIndex[mid]) {\n max = mid - 1;\n } else if (offset >= lineToIndex[mid + 1]) {\n min = mid + 1;\n } else {\n min = mid;\n break;\n }\n }\n }\n return {\n col: offset - lineToIndex[min] + 1,\n line: min + 1\n };\n }\n mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file;\n }\n return resolve$1$1(this.map.consumer().sourceRoot || this.map.root || \".\", file);\n }\n origin(line, column, endLine, endColumn) {\n if (!this.map) return false;\n let consumer = this.map.consumer();\n let from = consumer.originalPositionFor({ column, line });\n if (!from.source) return false;\n let to;\n if (typeof endLine === \"number\") {\n to = consumer.originalPositionFor({ column: endColumn, line: endLine });\n }\n let fromUrl;\n if (isAbsolute$1(from.source)) {\n fromUrl = pathToFileURL$1$1(from.source);\n } else {\n fromUrl = new URL(\n from.source,\n this.map.consumer().sourceRoot || pathToFileURL$1$1(this.map.mapFile)\n );\n }\n let result2 = {\n column: from.column,\n endColumn: to && to.column,\n endLine: to && to.line,\n line: from.line,\n url: fromUrl.toString()\n };\n if (fromUrl.protocol === \"file:\") {\n if (fileURLToPath$1) {\n result2.file = fileURLToPath$1(fromUrl);\n } else {\n throw new Error(`file: protocol is not available in this PostCSS build`);\n }\n }\n let source = consumer.sourceContentFor(from.source);\n if (source) result2.source = source;\n return result2;\n }\n toJSON() {\n let json = {};\n for (let name of [\"hasBOM\", \"css\", \"file\", \"id\"]) {\n if (this[name] != null) {\n json[name] = this[name];\n }\n }\n if (this.map) {\n json.map = { ...this.map };\n if (json.map.consumerCache) {\n json.map.consumerCache = void 0;\n }\n }\n return json;\n }\n get from() {\n return this.file || this.id;\n }\n};\nvar input$1 = Input$4$1;\nInput$4$1.default = Input$4$1;\nif (terminalHighlight$2 && terminalHighlight$2.registerInput) {\n terminalHighlight$2.registerInput(Input$4$1);\n}\nlet { SourceMapConsumer: SourceMapConsumer$3, SourceMapGenerator: SourceMapGenerator$3 } = require$$2$1;\nlet { dirname: dirname$2, relative: relative$1, resolve: resolve$2, sep: sep$1 } = require$$2$1;\nlet { pathToFileURL: pathToFileURL$2 } = require$$2$1;\nlet Input$3$1 = input$1;\nlet sourceMapAvailable$2 = Boolean(SourceMapConsumer$3 && SourceMapGenerator$3);\nlet pathAvailable$2 = Boolean(dirname$2 && resolve$2 && relative$1 && sep$1);\nlet MapGenerator$2$1 = class MapGenerator {\n constructor(stringify2, root2, opts, cssString) {\n this.stringify = stringify2;\n this.mapOpts = opts.map || {};\n this.root = root2;\n this.opts = opts;\n this.css = cssString;\n this.originalCSS = cssString;\n this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute;\n this.memoizedFileURLs = /* @__PURE__ */ new Map();\n this.memoizedPaths = /* @__PURE__ */ new Map();\n this.memoizedURLs = /* @__PURE__ */ new Map();\n }\n addAnnotation() {\n let content;\n if (this.isInline()) {\n content = \"data:application/json;base64,\" + this.toBase64(this.map.toString());\n } else if (typeof this.mapOpts.annotation === \"string\") {\n content = this.mapOpts.annotation;\n } else if (typeof this.mapOpts.annotation === \"function\") {\n content = this.mapOpts.annotation(this.opts.to, this.root);\n } else {\n content = this.outputFile() + \".map\";\n }\n let eol = \"\\n\";\n if (this.css.includes(\"\\r\\n\")) eol = \"\\r\\n\";\n this.css += eol + \"/*# sourceMappingURL=\" + content + \" */\";\n }\n applyPrevMaps() {\n for (let prev of this.previous()) {\n let from = this.toUrl(this.path(prev.file));\n let root2 = prev.root || dirname$2(prev.file);\n let map;\n if (this.mapOpts.sourcesContent === false) {\n map = new SourceMapConsumer$3(prev.text);\n if (map.sourcesContent) {\n map.sourcesContent = null;\n }\n } else {\n map = prev.consumer();\n }\n this.map.applySourceMap(map, from, this.toUrl(this.path(root2)));\n }\n }\n clearAnnotation() {\n if (this.mapOpts.annotation === false) return;\n if (this.root) {\n let node2;\n for (let i2 = this.root.nodes.length - 1; i2 >= 0; i2--) {\n node2 = this.root.nodes[i2];\n if (node2.type !== \"comment\") continue;\n if (node2.text.indexOf(\"# sourceMappingURL=\") === 0) {\n this.root.removeChild(i2);\n }\n }\n } else if (this.css) {\n this.css = this.css.replace(/\\n*?\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\");\n }\n }\n generate() {\n this.clearAnnotation();\n if (pathAvailable$2 && sourceMapAvailable$2 && this.isMap()) {\n return this.generateMap();\n } else {\n let result2 = \"\";\n this.stringify(this.root, (i2) => {\n result2 += i2;\n });\n return [result2];\n }\n }\n generateMap() {\n if (this.root) {\n this.generateString();\n } else if (this.previous().length === 1) {\n let prev = this.previous()[0].consumer();\n prev.file = this.outputFile();\n this.map = SourceMapGenerator$3.fromSourceMap(prev, {\n ignoreInvalidMapping: true\n });\n } else {\n this.map = new SourceMapGenerator$3({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n this.map.addMapping({\n generated: { column: 0, line: 1 },\n original: { column: 0, line: 1 },\n source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\"\n });\n }\n if (this.isSourcesContent()) this.setSourcesContent();\n if (this.root && this.previous().length > 0) this.applyPrevMaps();\n if (this.isAnnotation()) this.addAnnotation();\n if (this.isInline()) {\n return [this.css];\n } else {\n return [this.css, this.map];\n }\n }\n generateString() {\n this.css = \"\";\n this.map = new SourceMapGenerator$3({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n let line = 1;\n let column = 1;\n let noSource = \"\";\n let mapping = {\n generated: { column: 0, line: 0 },\n original: { column: 0, line: 0 },\n source: \"\"\n };\n let lines, last;\n this.stringify(this.root, (str, node2, type) => {\n this.css += str;\n if (node2 && type !== \"end\") {\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n if (node2.source && node2.source.start) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.start.line;\n mapping.original.column = node2.source.start.column - 1;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n this.map.addMapping(mapping);\n }\n }\n lines = str.match(/\\n/g);\n if (lines) {\n line += lines.length;\n last = str.lastIndexOf(\"\\n\");\n column = str.length - last;\n } else {\n column += str.length;\n }\n if (node2 && type !== \"start\") {\n let p = node2.parent || { raws: {} };\n let childless = node2.type === \"decl\" || node2.type === \"atrule\" && !node2.nodes;\n if (!childless || node2 !== p.last || p.raws.semicolon) {\n if (node2.source && node2.source.end) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.end.line;\n mapping.original.column = node2.source.end.column - 1;\n mapping.generated.line = line;\n mapping.generated.column = column - 2;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n this.map.addMapping(mapping);\n }\n }\n }\n });\n }\n isAnnotation() {\n if (this.isInline()) {\n return true;\n }\n if (typeof this.mapOpts.annotation !== \"undefined\") {\n return this.mapOpts.annotation;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.annotation);\n }\n return true;\n }\n isInline() {\n if (typeof this.mapOpts.inline !== \"undefined\") {\n return this.mapOpts.inline;\n }\n let annotation = this.mapOpts.annotation;\n if (typeof annotation !== \"undefined\" && annotation !== true) {\n return false;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.inline);\n }\n return true;\n }\n isMap() {\n if (typeof this.opts.map !== \"undefined\") {\n return !!this.opts.map;\n }\n return this.previous().length > 0;\n }\n isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== \"undefined\") {\n return this.mapOpts.sourcesContent;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.withContent());\n }\n return true;\n }\n outputFile() {\n if (this.opts.to) {\n return this.path(this.opts.to);\n } else if (this.opts.from) {\n return this.path(this.opts.from);\n } else {\n return \"to.css\";\n }\n }\n path(file) {\n if (this.mapOpts.absolute) return file;\n if (file.charCodeAt(0) === 60) return file;\n if (/^\\w+:\\/\\//.test(file)) return file;\n let cached = this.memoizedPaths.get(file);\n if (cached) return cached;\n let from = this.opts.to ? dirname$2(this.opts.to) : \".\";\n if (typeof this.mapOpts.annotation === \"string\") {\n from = dirname$2(resolve$2(from, this.mapOpts.annotation));\n }\n let path = relative$1(from, file);\n this.memoizedPaths.set(file, path);\n return path;\n }\n previous() {\n if (!this.previousMaps) {\n this.previousMaps = [];\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source && node2.source.input.map) {\n let map = node2.source.input.map;\n if (!this.previousMaps.includes(map)) {\n this.previousMaps.push(map);\n }\n }\n });\n } else {\n let input2 = new Input$3$1(this.originalCSS, this.opts);\n if (input2.map) this.previousMaps.push(input2.map);\n }\n }\n return this.previousMaps;\n }\n setSourcesContent() {\n let already = {};\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source) {\n let from = node2.source.input.from;\n if (from && !already[from]) {\n already[from] = true;\n let fromUrl = this.usesFileUrls ? this.toFileUrl(from) : this.toUrl(this.path(from));\n this.map.setSourceContent(fromUrl, node2.source.input.css);\n }\n }\n });\n } else if (this.css) {\n let from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\";\n this.map.setSourceContent(from, this.css);\n }\n }\n sourcePath(node2) {\n if (this.mapOpts.from) {\n return this.toUrl(this.mapOpts.from);\n } else if (this.usesFileUrls) {\n return this.toFileUrl(node2.source.input.from);\n } else {\n return this.toUrl(this.path(node2.source.input.from));\n }\n }\n toBase64(str) {\n if (Buffer) {\n return Buffer.from(str).toString(\"base64\");\n } else {\n return window.btoa(unescape(encodeURIComponent(str)));\n }\n }\n toFileUrl(path) {\n let cached = this.memoizedFileURLs.get(path);\n if (cached) return cached;\n if (pathToFileURL$2) {\n let fileURL = pathToFileURL$2(path).toString();\n this.memoizedFileURLs.set(path, fileURL);\n return fileURL;\n } else {\n throw new Error(\n \"`map.absolute` option is not available in this PostCSS build\"\n );\n }\n }\n toUrl(path) {\n let cached = this.memoizedURLs.get(path);\n if (cached) return cached;\n if (sep$1 === \"\\\\\") {\n path = path.replace(/\\\\/g, \"/\");\n }\n let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent);\n this.memoizedURLs.set(path, url);\n return url;\n }\n};\nvar mapGenerator$1 = MapGenerator$2$1;\nlet Node$2$1 = node$1;\nlet Comment$4$1 = class Comment extends Node$2$1 {\n constructor(defaults) {\n super(defaults);\n this.type = \"comment\";\n }\n};\nvar comment$1 = Comment$4$1;\nComment$4$1.default = Comment$4$1;\nlet { isClean: isClean$1$1, my: my$1$1 } = symbols$1;\nlet Declaration$3$1 = declaration$1;\nlet Comment$3$1 = comment$1;\nlet Node$1$1 = node$1;\nlet parse$4$1, Rule$4$1, AtRule$4$1, Root$6$1;\nfunction cleanSource$1(nodes) {\n return nodes.map((i2) => {\n if (i2.nodes) i2.nodes = cleanSource$1(i2.nodes);\n delete i2.source;\n return i2;\n });\n}\nfunction markDirtyUp$1(node2) {\n node2[isClean$1$1] = false;\n if (node2.proxyOf.nodes) {\n for (let i2 of node2.proxyOf.nodes) {\n markDirtyUp$1(i2);\n }\n }\n}\nlet Container$7$1 = class Container extends Node$1$1 {\n append(...children) {\n for (let child of children) {\n let nodes = this.normalize(child, this.last);\n for (let node2 of nodes) this.proxyOf.nodes.push(node2);\n }\n this.markDirty();\n return this;\n }\n cleanRaws(keepBetween) {\n super.cleanRaws(keepBetween);\n if (this.nodes) {\n for (let node2 of this.nodes) node2.cleanRaws(keepBetween);\n }\n }\n each(callback) {\n if (!this.proxyOf.nodes) return void 0;\n let iterator = this.getIterator();\n let index2, result2;\n while (this.indexes[iterator] < this.proxyOf.nodes.length) {\n index2 = this.indexes[iterator];\n result2 = callback(this.proxyOf.nodes[index2], index2);\n if (result2 === false) break;\n this.indexes[iterator] += 1;\n }\n delete this.indexes[iterator];\n return result2;\n }\n every(condition) {\n return this.nodes.every(condition);\n }\n getIterator() {\n if (!this.lastEach) this.lastEach = 0;\n if (!this.indexes) this.indexes = {};\n this.lastEach += 1;\n let iterator = this.lastEach;\n this.indexes[iterator] = 0;\n return iterator;\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (!node2[prop]) {\n return node2[prop];\n } else if (prop === \"each\" || typeof prop === \"string\" && prop.startsWith(\"walk\")) {\n return (...args) => {\n return node2[prop](\n ...args.map((i2) => {\n if (typeof i2 === \"function\") {\n return (child, index2) => i2(child.toProxy(), index2);\n } else {\n return i2;\n }\n })\n );\n };\n } else if (prop === \"every\" || prop === \"some\") {\n return (cb) => {\n return node2[prop](\n (child, ...other) => cb(child.toProxy(), ...other)\n );\n };\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else if (prop === \"nodes\") {\n return node2.nodes.map((i2) => i2.toProxy());\n } else if (prop === \"first\" || prop === \"last\") {\n return node2[prop].toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"name\" || prop === \"params\" || prop === \"selector\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n index(child) {\n if (typeof child === \"number\") return child;\n if (child.proxyOf) child = child.proxyOf;\n return this.proxyOf.nodes.indexOf(child);\n }\n insertAfter(exist, add) {\n let existIndex = this.index(exist);\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex < index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n insertBefore(exist, add) {\n let existIndex = this.index(exist);\n let type = existIndex === 0 ? \"prepend\" : false;\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex <= index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n normalize(nodes, sample) {\n if (typeof nodes === \"string\") {\n nodes = cleanSource$1(parse$4$1(nodes).nodes);\n } else if (typeof nodes === \"undefined\") {\n nodes = [];\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type === \"root\" && this.type !== \"document\") {\n nodes = nodes.nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type) {\n nodes = [nodes];\n } else if (nodes.prop) {\n if (typeof nodes.value === \"undefined\") {\n throw new Error(\"Value field is missed in node creation\");\n } else if (typeof nodes.value !== \"string\") {\n nodes.value = String(nodes.value);\n }\n nodes = [new Declaration$3$1(nodes)];\n } else if (nodes.selector) {\n nodes = [new Rule$4$1(nodes)];\n } else if (nodes.name) {\n nodes = [new AtRule$4$1(nodes)];\n } else if (nodes.text) {\n nodes = [new Comment$3$1(nodes)];\n } else {\n throw new Error(\"Unknown node type in node creation\");\n }\n let processed = nodes.map((i2) => {\n if (!i2[my$1$1]) Container.rebuild(i2);\n i2 = i2.proxyOf;\n if (i2.parent) i2.parent.removeChild(i2);\n if (i2[isClean$1$1]) markDirtyUp$1(i2);\n if (typeof i2.raws.before === \"undefined\") {\n if (sample && typeof sample.raws.before !== \"undefined\") {\n i2.raws.before = sample.raws.before.replace(/\\S/g, \"\");\n }\n }\n i2.parent = this.proxyOf;\n return i2;\n });\n return processed;\n }\n prepend(...children) {\n children = children.reverse();\n for (let child of children) {\n let nodes = this.normalize(child, this.first, \"prepend\").reverse();\n for (let node2 of nodes) this.proxyOf.nodes.unshift(node2);\n for (let id in this.indexes) {\n this.indexes[id] = this.indexes[id] + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n push(child) {\n child.parent = this;\n this.proxyOf.nodes.push(child);\n return this;\n }\n removeAll() {\n for (let node2 of this.proxyOf.nodes) node2.parent = void 0;\n this.proxyOf.nodes = [];\n this.markDirty();\n return this;\n }\n removeChild(child) {\n child = this.index(child);\n this.proxyOf.nodes[child].parent = void 0;\n this.proxyOf.nodes.splice(child, 1);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (index2 >= child) {\n this.indexes[id] = index2 - 1;\n }\n }\n this.markDirty();\n return this;\n }\n replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {};\n }\n this.walkDecls((decl) => {\n if (opts.props && !opts.props.includes(decl.prop)) return;\n if (opts.fast && !decl.value.includes(opts.fast)) return;\n decl.value = decl.value.replace(pattern, callback);\n });\n this.markDirty();\n return this;\n }\n some(condition) {\n return this.nodes.some(condition);\n }\n walk(callback) {\n return this.each((child, i2) => {\n let result2;\n try {\n result2 = callback(child, i2);\n } catch (e2) {\n throw child.addToError(e2);\n }\n if (result2 !== false && child.walk) {\n result2 = child.walk(callback);\n }\n return result2;\n });\n }\n walkAtRules(name, callback) {\n if (!callback) {\n callback = name;\n return this.walk((child, i2) => {\n if (child.type === \"atrule\") {\n return callback(child, i2);\n }\n });\n }\n if (name instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && name.test(child.name)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && child.name === name) {\n return callback(child, i2);\n }\n });\n }\n walkComments(callback) {\n return this.walk((child, i2) => {\n if (child.type === \"comment\") {\n return callback(child, i2);\n }\n });\n }\n walkDecls(prop, callback) {\n if (!callback) {\n callback = prop;\n return this.walk((child, i2) => {\n if (child.type === \"decl\") {\n return callback(child, i2);\n }\n });\n }\n if (prop instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && prop.test(child.prop)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && child.prop === prop) {\n return callback(child, i2);\n }\n });\n }\n walkRules(selector, callback) {\n if (!callback) {\n callback = selector;\n return this.walk((child, i2) => {\n if (child.type === \"rule\") {\n return callback(child, i2);\n }\n });\n }\n if (selector instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && selector.test(child.selector)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && child.selector === selector) {\n return callback(child, i2);\n }\n });\n }\n get first() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[0];\n }\n get last() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n }\n};\nContainer$7$1.registerParse = (dependant) => {\n parse$4$1 = dependant;\n};\nContainer$7$1.registerRule = (dependant) => {\n Rule$4$1 = dependant;\n};\nContainer$7$1.registerAtRule = (dependant) => {\n AtRule$4$1 = dependant;\n};\nContainer$7$1.registerRoot = (dependant) => {\n Root$6$1 = dependant;\n};\nvar container$1 = Container$7$1;\nContainer$7$1.default = Container$7$1;\nContainer$7$1.rebuild = (node2) => {\n if (node2.type === \"atrule\") {\n Object.setPrototypeOf(node2, AtRule$4$1.prototype);\n } else if (node2.type === \"rule\") {\n Object.setPrototypeOf(node2, Rule$4$1.prototype);\n } else if (node2.type === \"decl\") {\n Object.setPrototypeOf(node2, Declaration$3$1.prototype);\n } else if (node2.type === \"comment\") {\n Object.setPrototypeOf(node2, Comment$3$1.prototype);\n } else if (node2.type === \"root\") {\n Object.setPrototypeOf(node2, Root$6$1.prototype);\n }\n node2[my$1$1] = true;\n if (node2.nodes) {\n node2.nodes.forEach((child) => {\n Container$7$1.rebuild(child);\n });\n }\n};\nlet Container$6$1 = container$1;\nlet LazyResult$4$1, Processor$3$1;\nlet Document$3$1 = class Document2 extends Container$6$1 {\n constructor(defaults) {\n super({ type: \"document\", ...defaults });\n if (!this.nodes) {\n this.nodes = [];\n }\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$4$1(new Processor$3$1(), this, opts);\n return lazy.stringify();\n }\n};\nDocument$3$1.registerLazyResult = (dependant) => {\n LazyResult$4$1 = dependant;\n};\nDocument$3$1.registerProcessor = (dependant) => {\n Processor$3$1 = dependant;\n};\nvar document$1$1 = Document$3$1;\nDocument$3$1.default = Document$3$1;\nlet printed$1 = {};\nvar warnOnce$2$1 = function warnOnce(message) {\n if (printed$1[message]) return;\n printed$1[message] = true;\n if (typeof console !== \"undefined\" && console.warn) {\n console.warn(message);\n }\n};\nlet Warning$2$1 = class Warning {\n constructor(text, opts = {}) {\n this.type = \"warning\";\n this.text = text;\n if (opts.node && opts.node.source) {\n let range = opts.node.rangeBy(opts);\n this.line = range.start.line;\n this.column = range.start.column;\n this.endLine = range.end.line;\n this.endColumn = range.end.column;\n }\n for (let opt in opts) this[opt] = opts[opt];\n }\n toString() {\n if (this.node) {\n return this.node.error(this.text, {\n index: this.index,\n plugin: this.plugin,\n word: this.word\n }).message;\n }\n if (this.plugin) {\n return this.plugin + \": \" + this.text;\n }\n return this.text;\n }\n};\nvar warning$1 = Warning$2$1;\nWarning$2$1.default = Warning$2$1;\nlet Warning$1$1 = warning$1;\nlet Result$3$1 = class Result {\n constructor(processor2, root2, opts) {\n this.processor = processor2;\n this.messages = [];\n this.root = root2;\n this.opts = opts;\n this.css = void 0;\n this.map = void 0;\n }\n toString() {\n return this.css;\n }\n warn(text, opts = {}) {\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin;\n }\n }\n let warning2 = new Warning$1$1(text, opts);\n this.messages.push(warning2);\n return warning2;\n }\n warnings() {\n return this.messages.filter((i2) => i2.type === \"warning\");\n }\n get content() {\n return this.css;\n }\n};\nvar result$1 = Result$3$1;\nResult$3$1.default = Result$3$1;\nconst SINGLE_QUOTE$1 = \"'\".charCodeAt(0);\nconst DOUBLE_QUOTE$1 = '\"'.charCodeAt(0);\nconst BACKSLASH$1 = \"\\\\\".charCodeAt(0);\nconst SLASH$1 = \"/\".charCodeAt(0);\nconst NEWLINE$1 = \"\\n\".charCodeAt(0);\nconst SPACE$1 = \" \".charCodeAt(0);\nconst FEED$1 = \"\\f\".charCodeAt(0);\nconst TAB$1 = \"\t\".charCodeAt(0);\nconst CR$1 = \"\\r\".charCodeAt(0);\nconst OPEN_SQUARE$1 = \"[\".charCodeAt(0);\nconst CLOSE_SQUARE$1 = \"]\".charCodeAt(0);\nconst OPEN_PARENTHESES$1 = \"(\".charCodeAt(0);\nconst CLOSE_PARENTHESES$1 = \")\".charCodeAt(0);\nconst OPEN_CURLY$1 = \"{\".charCodeAt(0);\nconst CLOSE_CURLY$1 = \"}\".charCodeAt(0);\nconst SEMICOLON$1 = \";\".charCodeAt(0);\nconst ASTERISK$1 = \"*\".charCodeAt(0);\nconst COLON$1 = \":\".charCodeAt(0);\nconst AT$1 = \"@\".charCodeAt(0);\nconst RE_AT_END$1 = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g;\nconst RE_WORD_END$1 = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g;\nconst RE_BAD_BRACKET$1 = /.[\\r\\n\"'(/\\\\]/;\nconst RE_HEX_ESCAPE$1 = /[\\da-f]/i;\nvar tokenize$1 = function tokenizer(input2, options = {}) {\n let css = input2.css.valueOf();\n let ignore = options.ignoreErrors;\n let code, next, quote, content, escape;\n let escaped, escapePos, prev, n2, currentToken;\n let length = css.length;\n let pos = 0;\n let buffer = [];\n let returned = [];\n function position() {\n return pos;\n }\n function unclosed(what) {\n throw input2.error(\"Unclosed \" + what, pos);\n }\n function endOfFile() {\n return returned.length === 0 && pos >= length;\n }\n function nextToken(opts) {\n if (returned.length) return returned.pop();\n if (pos >= length) return;\n let ignoreUnclosed = opts ? opts.ignoreUnclosed : false;\n code = css.charCodeAt(pos);\n switch (code) {\n case NEWLINE$1:\n case SPACE$1:\n case TAB$1:\n case CR$1:\n case FEED$1: {\n next = pos;\n do {\n next += 1;\n code = css.charCodeAt(next);\n } while (code === SPACE$1 || code === NEWLINE$1 || code === TAB$1 || code === CR$1 || code === FEED$1);\n currentToken = [\"space\", css.slice(pos, next)];\n pos = next - 1;\n break;\n }\n case OPEN_SQUARE$1:\n case CLOSE_SQUARE$1:\n case OPEN_CURLY$1:\n case CLOSE_CURLY$1:\n case COLON$1:\n case SEMICOLON$1:\n case CLOSE_PARENTHESES$1: {\n let controlChar = String.fromCharCode(code);\n currentToken = [controlChar, controlChar, pos];\n break;\n }\n case OPEN_PARENTHESES$1: {\n prev = buffer.length ? buffer.pop()[1] : \"\";\n n2 = css.charCodeAt(pos + 1);\n if (prev === \"url\" && n2 !== SINGLE_QUOTE$1 && n2 !== DOUBLE_QUOTE$1 && n2 !== SPACE$1 && n2 !== NEWLINE$1 && n2 !== TAB$1 && n2 !== FEED$1 && n2 !== CR$1) {\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(\")\", next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos;\n break;\n } else {\n unclosed(\"bracket\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH$1) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"brackets\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n next = css.indexOf(\")\", pos + 1);\n content = css.slice(pos, next + 1);\n if (next === -1 || RE_BAD_BRACKET$1.test(content)) {\n currentToken = [\"(\", \"(\", pos];\n } else {\n currentToken = [\"brackets\", content, pos, next];\n pos = next;\n }\n }\n break;\n }\n case SINGLE_QUOTE$1:\n case DOUBLE_QUOTE$1: {\n quote = code === SINGLE_QUOTE$1 ? \"'\" : '\"';\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(quote, next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos + 1;\n break;\n } else {\n unclosed(\"string\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH$1) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"string\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case AT$1: {\n RE_AT_END$1.lastIndex = pos + 1;\n RE_AT_END$1.test(css);\n if (RE_AT_END$1.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_AT_END$1.lastIndex - 2;\n }\n currentToken = [\"at-word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case BACKSLASH$1: {\n next = pos;\n escape = true;\n while (css.charCodeAt(next + 1) === BACKSLASH$1) {\n next += 1;\n escape = !escape;\n }\n code = css.charCodeAt(next + 1);\n if (escape && code !== SLASH$1 && code !== SPACE$1 && code !== NEWLINE$1 && code !== TAB$1 && code !== CR$1 && code !== FEED$1) {\n next += 1;\n if (RE_HEX_ESCAPE$1.test(css.charAt(next))) {\n while (RE_HEX_ESCAPE$1.test(css.charAt(next + 1))) {\n next += 1;\n }\n if (css.charCodeAt(next + 1) === SPACE$1) {\n next += 1;\n }\n }\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n default: {\n if (code === SLASH$1 && css.charCodeAt(pos + 1) === ASTERISK$1) {\n next = css.indexOf(\"*/\", pos + 2) + 1;\n if (next === 0) {\n if (ignore || ignoreUnclosed) {\n next = css.length;\n } else {\n unclosed(\"comment\");\n }\n }\n currentToken = [\"comment\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n RE_WORD_END$1.lastIndex = pos + 1;\n RE_WORD_END$1.test(css);\n if (RE_WORD_END$1.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_WORD_END$1.lastIndex - 2;\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n buffer.push(currentToken);\n pos = next;\n }\n break;\n }\n }\n pos++;\n return currentToken;\n }\n function back(token) {\n returned.push(token);\n }\n return {\n back,\n endOfFile,\n nextToken,\n position\n };\n};\nlet Container$5$1 = container$1;\nlet AtRule$3$1 = class AtRule extends Container$5$1 {\n constructor(defaults) {\n super(defaults);\n this.type = \"atrule\";\n }\n append(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.append(...children);\n }\n prepend(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.prepend(...children);\n }\n};\nvar atRule$1 = AtRule$3$1;\nAtRule$3$1.default = AtRule$3$1;\nContainer$5$1.registerAtRule(AtRule$3$1);\nlet Container$4$1 = container$1;\nlet LazyResult$3$1, Processor$2$1;\nlet Root$5$1 = class Root extends Container$4$1 {\n constructor(defaults) {\n super(defaults);\n this.type = \"root\";\n if (!this.nodes) this.nodes = [];\n }\n normalize(child, sample, type) {\n let nodes = super.normalize(child);\n if (sample) {\n if (type === \"prepend\") {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before;\n } else {\n delete sample.raws.before;\n }\n } else if (this.first !== sample) {\n for (let node2 of nodes) {\n node2.raws.before = sample.raws.before;\n }\n }\n }\n return nodes;\n }\n removeChild(child, ignore) {\n let index2 = this.index(child);\n if (!ignore && index2 === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index2].raws.before;\n }\n return super.removeChild(child);\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$3$1(new Processor$2$1(), this, opts);\n return lazy.stringify();\n }\n};\nRoot$5$1.registerLazyResult = (dependant) => {\n LazyResult$3$1 = dependant;\n};\nRoot$5$1.registerProcessor = (dependant) => {\n Processor$2$1 = dependant;\n};\nvar root$1 = Root$5$1;\nRoot$5$1.default = Root$5$1;\nContainer$4$1.registerRoot(Root$5$1);\nlet list$2$1 = {\n comma(string) {\n return list$2$1.split(string, [\",\"], true);\n },\n space(string) {\n let spaces = [\" \", \"\\n\", \"\t\"];\n return list$2$1.split(string, spaces);\n },\n split(string, separators, last) {\n let array = [];\n let current = \"\";\n let split = false;\n let func = 0;\n let inQuote = false;\n let prevQuote = \"\";\n let escape = false;\n for (let letter of string) {\n if (escape) {\n escape = false;\n } else if (letter === \"\\\\\") {\n escape = true;\n } else if (inQuote) {\n if (letter === prevQuote) {\n inQuote = false;\n }\n } else if (letter === '\"' || letter === \"'\") {\n inQuote = true;\n prevQuote = letter;\n } else if (letter === \"(\") {\n func += 1;\n } else if (letter === \")\") {\n if (func > 0) func -= 1;\n } else if (func === 0) {\n if (separators.includes(letter)) split = true;\n }\n if (split) {\n if (current !== \"\") array.push(current.trim());\n current = \"\";\n split = false;\n } else {\n current += letter;\n }\n }\n if (last || current !== \"\") array.push(current.trim());\n return array;\n }\n};\nvar list_1$1 = list$2$1;\nlist$2$1.default = list$2$1;\nlet Container$3$1 = container$1;\nlet list$1$1 = list_1$1;\nlet Rule$3$1 = class Rule extends Container$3$1 {\n constructor(defaults) {\n super(defaults);\n this.type = \"rule\";\n if (!this.nodes) this.nodes = [];\n }\n get selectors() {\n return list$1$1.comma(this.selector);\n }\n set selectors(values) {\n let match = this.selector ? this.selector.match(/,\\s*/) : null;\n let sep2 = match ? match[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n this.selector = values.join(sep2);\n }\n};\nvar rule$1 = Rule$3$1;\nRule$3$1.default = Rule$3$1;\nContainer$3$1.registerRule(Rule$3$1);\nlet Declaration$2$1 = declaration$1;\nlet tokenizer2$1 = tokenize$1;\nlet Comment$2$1 = comment$1;\nlet AtRule$2$1 = atRule$1;\nlet Root$4$1 = root$1;\nlet Rule$2$1 = rule$1;\nconst SAFE_COMMENT_NEIGHBOR$1 = {\n empty: true,\n space: true\n};\nfunction findLastWithPosition$1(tokens) {\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n let token = tokens[i2];\n let pos = token[3] || token[2];\n if (pos) return pos;\n }\n}\nlet Parser$1$1 = class Parser {\n constructor(input2) {\n this.input = input2;\n this.root = new Root$4$1();\n this.current = this.root;\n this.spaces = \"\";\n this.semicolon = false;\n this.createTokenizer();\n this.root.source = { input: input2, start: { column: 1, line: 1, offset: 0 } };\n }\n atrule(token) {\n let node2 = new AtRule$2$1();\n node2.name = token[1].slice(1);\n if (node2.name === \"\") {\n this.unnamedAtrule(node2, token);\n }\n this.init(node2, token[2]);\n let type;\n let prev;\n let shift;\n let last = false;\n let open = false;\n let params = [];\n let brackets = [];\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n type = token[0];\n if (type === \"(\" || type === \"[\") {\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (type === \"{\" && brackets.length > 0) {\n brackets.push(\"}\");\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n }\n if (brackets.length === 0) {\n if (type === \";\") {\n node2.source.end = this.getPosition(token[2]);\n node2.source.end.offset++;\n this.semicolon = true;\n break;\n } else if (type === \"{\") {\n open = true;\n break;\n } else if (type === \"}\") {\n if (params.length > 0) {\n shift = params.length - 1;\n prev = params[shift];\n while (prev && prev[0] === \"space\") {\n prev = params[--shift];\n }\n if (prev) {\n node2.source.end = this.getPosition(prev[3] || prev[2]);\n node2.source.end.offset++;\n }\n }\n this.end(token);\n break;\n } else {\n params.push(token);\n }\n } else {\n params.push(token);\n }\n if (this.tokenizer.endOfFile()) {\n last = true;\n break;\n }\n }\n node2.raws.between = this.spacesAndCommentsFromEnd(params);\n if (params.length) {\n node2.raws.afterName = this.spacesAndCommentsFromStart(params);\n this.raw(node2, \"params\", params);\n if (last) {\n token = params[params.length - 1];\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n this.spaces = node2.raws.between;\n node2.raws.between = \"\";\n }\n } else {\n node2.raws.afterName = \"\";\n node2.params = \"\";\n }\n if (open) {\n node2.nodes = [];\n this.current = node2;\n }\n }\n checkMissedSemicolon(tokens) {\n let colon = this.colon(tokens);\n if (colon === false) return;\n let founded = 0;\n let token;\n for (let j = colon - 1; j >= 0; j--) {\n token = tokens[j];\n if (token[0] !== \"space\") {\n founded += 1;\n if (founded === 2) break;\n }\n }\n throw this.input.error(\n \"Missed semicolon\",\n token[0] === \"word\" ? token[3] + 1 : token[2]\n );\n }\n colon(tokens) {\n let brackets = 0;\n let token, type, prev;\n for (let [i2, element] of tokens.entries()) {\n token = element;\n type = token[0];\n if (type === \"(\") {\n brackets += 1;\n }\n if (type === \")\") {\n brackets -= 1;\n }\n if (brackets === 0 && type === \":\") {\n if (!prev) {\n this.doubleColon(token);\n } else if (prev[0] === \"word\" && prev[1] === \"progid\") {\n continue;\n } else {\n return i2;\n }\n }\n prev = token;\n }\n return false;\n }\n comment(token) {\n let node2 = new Comment$2$1();\n this.init(node2, token[2]);\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n let text = token[1].slice(2, -2);\n if (/^\\s*$/.test(text)) {\n node2.text = \"\";\n node2.raws.left = text;\n node2.raws.right = \"\";\n } else {\n let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n node2.text = match[2];\n node2.raws.left = match[1];\n node2.raws.right = match[3];\n }\n }\n createTokenizer() {\n this.tokenizer = tokenizer2$1(this.input);\n }\n decl(tokens, customProperty) {\n let node2 = new Declaration$2$1();\n this.init(node2, tokens[0][2]);\n let last = tokens[tokens.length - 1];\n if (last[0] === \";\") {\n this.semicolon = true;\n tokens.pop();\n }\n node2.source.end = this.getPosition(\n last[3] || last[2] || findLastWithPosition$1(tokens)\n );\n node2.source.end.offset++;\n while (tokens[0][0] !== \"word\") {\n if (tokens.length === 1) this.unknownWord(tokens);\n node2.raws.before += tokens.shift()[1];\n }\n node2.source.start = this.getPosition(tokens[0][2]);\n node2.prop = \"\";\n while (tokens.length) {\n let type = tokens[0][0];\n if (type === \":\" || type === \"space\" || type === \"comment\") {\n break;\n }\n node2.prop += tokens.shift()[1];\n }\n node2.raws.between = \"\";\n let token;\n while (tokens.length) {\n token = tokens.shift();\n if (token[0] === \":\") {\n node2.raws.between += token[1];\n break;\n } else {\n if (token[0] === \"word\" && /\\w/.test(token[1])) {\n this.unknownWord([token]);\n }\n node2.raws.between += token[1];\n }\n }\n if (node2.prop[0] === \"_\" || node2.prop[0] === \"*\") {\n node2.raws.before += node2.prop[0];\n node2.prop = node2.prop.slice(1);\n }\n let firstSpaces = [];\n let next;\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n firstSpaces.push(tokens.shift());\n }\n this.precheckMissedSemicolon(tokens);\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n token = tokens[i2];\n if (token[1].toLowerCase() === \"!important\") {\n node2.important = true;\n let string = this.stringFrom(tokens, i2);\n string = this.spacesFromEnd(tokens) + string;\n if (string !== \" !important\") node2.raws.important = string;\n break;\n } else if (token[1].toLowerCase() === \"important\") {\n let cache = tokens.slice(0);\n let str = \"\";\n for (let j = i2; j > 0; j--) {\n let type = cache[j][0];\n if (str.trim().indexOf(\"!\") === 0 && type !== \"space\") {\n break;\n }\n str = cache.pop()[1] + str;\n }\n if (str.trim().indexOf(\"!\") === 0) {\n node2.important = true;\n node2.raws.important = str;\n tokens = cache;\n }\n }\n if (token[0] !== \"space\" && token[0] !== \"comment\") {\n break;\n }\n }\n let hasWord = tokens.some((i2) => i2[0] !== \"space\" && i2[0] !== \"comment\");\n if (hasWord) {\n node2.raws.between += firstSpaces.map((i2) => i2[1]).join(\"\");\n firstSpaces = [];\n }\n this.raw(node2, \"value\", firstSpaces.concat(tokens), customProperty);\n if (node2.value.includes(\":\") && !customProperty) {\n this.checkMissedSemicolon(tokens);\n }\n }\n doubleColon(token) {\n throw this.input.error(\n \"Double colon\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n emptyRule(token) {\n let node2 = new Rule$2$1();\n this.init(node2, token[2]);\n node2.selector = \"\";\n node2.raws.between = \"\";\n this.current = node2;\n }\n end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.semicolon = false;\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.spaces = \"\";\n if (this.current.parent) {\n this.current.source.end = this.getPosition(token[2]);\n this.current.source.end.offset++;\n this.current = this.current.parent;\n } else {\n this.unexpectedClose(token);\n }\n }\n endFile() {\n if (this.current.parent) this.unclosedBlock();\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.root.source.end = this.getPosition(this.tokenizer.position());\n }\n freeSemicolon(token) {\n this.spaces += token[1];\n if (this.current.nodes) {\n let prev = this.current.nodes[this.current.nodes.length - 1];\n if (prev && prev.type === \"rule\" && !prev.raws.ownSemicolon) {\n prev.raws.ownSemicolon = this.spaces;\n this.spaces = \"\";\n }\n }\n }\n // Helpers\n getPosition(offset) {\n let pos = this.input.fromOffset(offset);\n return {\n column: pos.col,\n line: pos.line,\n offset\n };\n }\n init(node2, offset) {\n this.current.push(node2);\n node2.source = {\n input: this.input,\n start: this.getPosition(offset)\n };\n node2.raws.before = this.spaces;\n this.spaces = \"\";\n if (node2.type !== \"comment\") this.semicolon = false;\n }\n other(start) {\n let end = false;\n let type = null;\n let colon = false;\n let bracket = null;\n let brackets = [];\n let customProperty = start[1].startsWith(\"--\");\n let tokens = [];\n let token = start;\n while (token) {\n type = token[0];\n tokens.push(token);\n if (type === \"(\" || type === \"[\") {\n if (!bracket) bracket = token;\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (customProperty && colon && type === \"{\") {\n if (!bracket) bracket = token;\n brackets.push(\"}\");\n } else if (brackets.length === 0) {\n if (type === \";\") {\n if (colon) {\n this.decl(tokens, customProperty);\n return;\n } else {\n break;\n }\n } else if (type === \"{\") {\n this.rule(tokens);\n return;\n } else if (type === \"}\") {\n this.tokenizer.back(tokens.pop());\n end = true;\n break;\n } else if (type === \":\") {\n colon = true;\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n if (brackets.length === 0) bracket = null;\n }\n token = this.tokenizer.nextToken();\n }\n if (this.tokenizer.endOfFile()) end = true;\n if (brackets.length > 0) this.unclosedBracket(bracket);\n if (end && colon) {\n if (!customProperty) {\n while (tokens.length) {\n token = tokens[tokens.length - 1][0];\n if (token !== \"space\" && token !== \"comment\") break;\n this.tokenizer.back(tokens.pop());\n }\n }\n this.decl(tokens, customProperty);\n } else {\n this.unknownWord(tokens);\n }\n }\n parse() {\n let token;\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n switch (token[0]) {\n case \"space\":\n this.spaces += token[1];\n break;\n case \";\":\n this.freeSemicolon(token);\n break;\n case \"}\":\n this.end(token);\n break;\n case \"comment\":\n this.comment(token);\n break;\n case \"at-word\":\n this.atrule(token);\n break;\n case \"{\":\n this.emptyRule(token);\n break;\n default:\n this.other(token);\n break;\n }\n }\n this.endFile();\n }\n precheckMissedSemicolon() {\n }\n raw(node2, prop, tokens, customProperty) {\n let token, type;\n let length = tokens.length;\n let value = \"\";\n let clean = true;\n let next, prev;\n for (let i2 = 0; i2 < length; i2 += 1) {\n token = tokens[i2];\n type = token[0];\n if (type === \"space\" && i2 === length - 1 && !customProperty) {\n clean = false;\n } else if (type === \"comment\") {\n prev = tokens[i2 - 1] ? tokens[i2 - 1][0] : \"empty\";\n next = tokens[i2 + 1] ? tokens[i2 + 1][0] : \"empty\";\n if (!SAFE_COMMENT_NEIGHBOR$1[prev] && !SAFE_COMMENT_NEIGHBOR$1[next]) {\n if (value.slice(-1) === \",\") {\n clean = false;\n } else {\n value += token[1];\n }\n } else {\n clean = false;\n }\n } else {\n value += token[1];\n }\n }\n if (!clean) {\n let raw = tokens.reduce((all, i2) => all + i2[1], \"\");\n node2.raws[prop] = { raw, value };\n }\n node2[prop] = value;\n }\n rule(tokens) {\n tokens.pop();\n let node2 = new Rule$2$1();\n this.init(node2, tokens[0][2]);\n node2.raws.between = this.spacesAndCommentsFromEnd(tokens);\n this.raw(node2, \"selector\", tokens);\n this.current = node2;\n }\n spacesAndCommentsFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\" && lastTokenType !== \"comment\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n // Errors\n spacesAndCommentsFromStart(tokens) {\n let next;\n let spaces = \"\";\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n spaces += tokens.shift()[1];\n }\n return spaces;\n }\n spacesFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n stringFrom(tokens, from) {\n let result2 = \"\";\n for (let i2 = from; i2 < tokens.length; i2++) {\n result2 += tokens[i2][1];\n }\n tokens.splice(from, tokens.length - from);\n return result2;\n }\n unclosedBlock() {\n let pos = this.current.source.start;\n throw this.input.error(\"Unclosed block\", pos.line, pos.column);\n }\n unclosedBracket(bracket) {\n throw this.input.error(\n \"Unclosed bracket\",\n { offset: bracket[2] },\n { offset: bracket[2] + 1 }\n );\n }\n unexpectedClose(token) {\n throw this.input.error(\n \"Unexpected }\",\n { offset: token[2] },\n { offset: token[2] + 1 }\n );\n }\n unknownWord(tokens) {\n throw this.input.error(\n \"Unknown word\",\n { offset: tokens[0][2] },\n { offset: tokens[0][2] + tokens[0][1].length }\n );\n }\n unnamedAtrule(node2, token) {\n throw this.input.error(\n \"At-rule without name\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n};\nvar parser$1 = Parser$1$1;\nlet Container$2$1 = container$1;\nlet Parser2$1 = parser$1;\nlet Input$2$1 = input$1;\nfunction parse$3$1(css, opts) {\n let input2 = new Input$2$1(css, opts);\n let parser2 = new Parser2$1(input2);\n try {\n parser2.parse();\n } catch (e2) {\n if (process.env.NODE_ENV !== \"production\") {\n if (e2.name === \"CssSyntaxError\" && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser\";\n } else if (/\\.sass/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser\";\n } else if (/\\.less$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser\";\n }\n }\n }\n throw e2;\n }\n return parser2.root;\n}\nvar parse_1$1 = parse$3$1;\nparse$3$1.default = parse$3$1;\nContainer$2$1.registerParse(parse$3$1);\nlet { isClean: isClean$3, my: my$3 } = symbols$1;\nlet MapGenerator$1$1 = mapGenerator$1;\nlet stringify$2$1 = stringify_1$1;\nlet Container$1$1 = container$1;\nlet Document$2$1 = document$1$1;\nlet warnOnce$1$1 = warnOnce$2$1;\nlet Result$2$1 = result$1;\nlet parse$2$1 = parse_1$1;\nlet Root$3$1 = root$1;\nconst TYPE_TO_CLASS_NAME$1 = {\n atrule: \"AtRule\",\n comment: \"Comment\",\n decl: \"Declaration\",\n document: \"Document\",\n root: \"Root\",\n rule: \"Rule\"\n};\nconst PLUGIN_PROPS$1 = {\n AtRule: true,\n AtRuleExit: true,\n Comment: true,\n CommentExit: true,\n Declaration: true,\n DeclarationExit: true,\n Document: true,\n DocumentExit: true,\n Once: true,\n OnceExit: true,\n postcssPlugin: true,\n prepare: true,\n Root: true,\n RootExit: true,\n Rule: true,\n RuleExit: true\n};\nconst NOT_VISITORS$1 = {\n Once: true,\n postcssPlugin: true,\n prepare: true\n};\nconst CHILDREN$1 = 0;\nfunction isPromise$1(obj) {\n return typeof obj === \"object\" && typeof obj.then === \"function\";\n}\nfunction getEvents$1(node2) {\n let key = false;\n let type = TYPE_TO_CLASS_NAME$1[node2.type];\n if (node2.type === \"decl\") {\n key = node2.prop.toLowerCase();\n } else if (node2.type === \"atrule\") {\n key = node2.name.toLowerCase();\n }\n if (key && node2.append) {\n return [\n type,\n type + \"-\" + key,\n CHILDREN$1,\n type + \"Exit\",\n type + \"Exit-\" + key\n ];\n } else if (key) {\n return [type, type + \"-\" + key, type + \"Exit\", type + \"Exit-\" + key];\n } else if (node2.append) {\n return [type, CHILDREN$1, type + \"Exit\"];\n } else {\n return [type, type + \"Exit\"];\n }\n}\nfunction toStack$1(node2) {\n let events;\n if (node2.type === \"document\") {\n events = [\"Document\", CHILDREN$1, \"DocumentExit\"];\n } else if (node2.type === \"root\") {\n events = [\"Root\", CHILDREN$1, \"RootExit\"];\n } else {\n events = getEvents$1(node2);\n }\n return {\n eventIndex: 0,\n events,\n iterator: 0,\n node: node2,\n visitorIndex: 0,\n visitors: []\n };\n}\nfunction cleanMarks$1(node2) {\n node2[isClean$3] = false;\n if (node2.nodes) node2.nodes.forEach((i2) => cleanMarks$1(i2));\n return node2;\n}\nlet postcss$2$1 = {};\nlet LazyResult$2$1 = class LazyResult {\n constructor(processor2, css, opts) {\n this.stringified = false;\n this.processed = false;\n let root2;\n if (typeof css === \"object\" && css !== null && (css.type === \"root\" || css.type === \"document\")) {\n root2 = cleanMarks$1(css);\n } else if (css instanceof LazyResult || css instanceof Result$2$1) {\n root2 = cleanMarks$1(css.root);\n if (css.map) {\n if (typeof opts.map === \"undefined\") opts.map = {};\n if (!opts.map.inline) opts.map.inline = false;\n opts.map.prev = css.map;\n }\n } else {\n let parser2 = parse$2$1;\n if (opts.syntax) parser2 = opts.syntax.parse;\n if (opts.parser) parser2 = opts.parser;\n if (parser2.parse) parser2 = parser2.parse;\n try {\n root2 = parser2(css, opts);\n } catch (error) {\n this.processed = true;\n this.error = error;\n }\n if (root2 && !root2[my$3]) {\n Container$1$1.rebuild(root2);\n }\n }\n this.result = new Result$2$1(processor2, root2, opts);\n this.helpers = { ...postcss$2$1, postcss: postcss$2$1, result: this.result };\n this.plugins = this.processor.plugins.map((plugin22) => {\n if (typeof plugin22 === \"object\" && plugin22.prepare) {\n return { ...plugin22, ...plugin22.prepare(this.result) };\n } else {\n return plugin22;\n }\n });\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n if (this.processed) return Promise.resolve(this.result);\n if (!this.processing) {\n this.processing = this.runAsync();\n }\n return this.processing;\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n getAsyncError() {\n throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n }\n handleError(error, node2) {\n let plugin22 = this.result.lastPlugin;\n try {\n if (node2) node2.addToError(error);\n this.error = error;\n if (error.name === \"CssSyntaxError\" && !error.plugin) {\n error.plugin = plugin22.postcssPlugin;\n error.setMessage();\n } else if (plugin22.postcssVersion) {\n if (process.env.NODE_ENV !== \"production\") {\n let pluginName = plugin22.postcssPlugin;\n let pluginVer = plugin22.postcssVersion;\n let runtimeVer = this.result.processor.version;\n let a2 = pluginVer.split(\".\");\n let b = runtimeVer.split(\".\");\n if (a2[0] !== b[0] || parseInt(a2[1]) > parseInt(b[1])) {\n console.error(\n \"Unknown error from PostCSS plugin. Your current PostCSS version is \" + runtimeVer + \", but \" + pluginName + \" uses \" + pluginVer + \". Perhaps this is the source of the error below.\"\n );\n }\n }\n }\n } catch (err) {\n if (console && console.error) console.error(err);\n }\n return error;\n }\n prepareVisitors() {\n this.listeners = {};\n let add = (plugin22, type, cb) => {\n if (!this.listeners[type]) this.listeners[type] = [];\n this.listeners[type].push([plugin22, cb]);\n };\n for (let plugin22 of this.plugins) {\n if (typeof plugin22 === \"object\") {\n for (let event in plugin22) {\n if (!PLUGIN_PROPS$1[event] && /^[A-Z]/.test(event)) {\n throw new Error(\n `Unknown event ${event} in ${plugin22.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`\n );\n }\n if (!NOT_VISITORS$1[event]) {\n if (typeof plugin22[event] === \"object\") {\n for (let filter in plugin22[event]) {\n if (filter === \"*\") {\n add(plugin22, event, plugin22[event][filter]);\n } else {\n add(\n plugin22,\n event + \"-\" + filter.toLowerCase(),\n plugin22[event][filter]\n );\n }\n }\n } else if (typeof plugin22[event] === \"function\") {\n add(plugin22, event, plugin22[event]);\n }\n }\n }\n }\n }\n this.hasListener = Object.keys(this.listeners).length > 0;\n }\n async runAsync() {\n this.plugin = 0;\n for (let i2 = 0; i2 < this.plugins.length; i2++) {\n let plugin22 = this.plugins[i2];\n let promise = this.runOnRoot(plugin22);\n if (isPromise$1(promise)) {\n try {\n await promise;\n } catch (error) {\n throw this.handleError(error);\n }\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean$3]) {\n root2[isClean$3] = true;\n let stack = [toStack$1(root2)];\n while (stack.length > 0) {\n let promise = this.visitTick(stack);\n if (isPromise$1(promise)) {\n try {\n await promise;\n } catch (e2) {\n let node2 = stack[stack.length - 1].node;\n throw this.handleError(e2, node2);\n }\n }\n }\n }\n if (this.listeners.OnceExit) {\n for (let [plugin22, visitor] of this.listeners.OnceExit) {\n this.result.lastPlugin = plugin22;\n try {\n if (root2.type === \"document\") {\n let roots = root2.nodes.map(\n (subRoot) => visitor(subRoot, this.helpers)\n );\n await Promise.all(roots);\n } else {\n await visitor(root2, this.helpers);\n }\n } catch (e2) {\n throw this.handleError(e2);\n }\n }\n }\n }\n this.processed = true;\n return this.stringify();\n }\n runOnRoot(plugin22) {\n this.result.lastPlugin = plugin22;\n try {\n if (typeof plugin22 === \"object\" && plugin22.Once) {\n if (this.result.root.type === \"document\") {\n let roots = this.result.root.nodes.map(\n (root2) => plugin22.Once(root2, this.helpers)\n );\n if (isPromise$1(roots[0])) {\n return Promise.all(roots);\n }\n return roots;\n }\n return plugin22.Once(this.result.root, this.helpers);\n } else if (typeof plugin22 === \"function\") {\n return plugin22(this.result.root, this.result);\n }\n } catch (error) {\n throw this.handleError(error);\n }\n }\n stringify() {\n if (this.error) throw this.error;\n if (this.stringified) return this.result;\n this.stringified = true;\n this.sync();\n let opts = this.result.opts;\n let str = stringify$2$1;\n if (opts.syntax) str = opts.syntax.stringify;\n if (opts.stringifier) str = opts.stringifier;\n if (str.stringify) str = str.stringify;\n let map = new MapGenerator$1$1(str, this.result.root, this.result.opts);\n let data = map.generate();\n this.result.css = data[0];\n this.result.map = data[1];\n return this.result;\n }\n sync() {\n if (this.error) throw this.error;\n if (this.processed) return this.result;\n this.processed = true;\n if (this.processing) {\n throw this.getAsyncError();\n }\n for (let plugin22 of this.plugins) {\n let promise = this.runOnRoot(plugin22);\n if (isPromise$1(promise)) {\n throw this.getAsyncError();\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean$3]) {\n root2[isClean$3] = true;\n this.walkSync(root2);\n }\n if (this.listeners.OnceExit) {\n if (root2.type === \"document\") {\n for (let subRoot of root2.nodes) {\n this.visitSync(this.listeners.OnceExit, subRoot);\n }\n } else {\n this.visitSync(this.listeners.OnceExit, root2);\n }\n }\n }\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this.opts)) {\n warnOnce$1$1(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this.css;\n }\n visitSync(visitors, node2) {\n for (let [plugin22, visitor] of visitors) {\n this.result.lastPlugin = plugin22;\n let promise;\n try {\n promise = visitor(node2, this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2.proxyOf);\n }\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n return true;\n }\n if (isPromise$1(promise)) {\n throw this.getAsyncError();\n }\n }\n }\n visitTick(stack) {\n let visit2 = stack[stack.length - 1];\n let { node: node2, visitors } = visit2;\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n stack.pop();\n return;\n }\n if (visitors.length > 0 && visit2.visitorIndex < visitors.length) {\n let [plugin22, visitor] = visitors[visit2.visitorIndex];\n visit2.visitorIndex += 1;\n if (visit2.visitorIndex === visitors.length) {\n visit2.visitors = [];\n visit2.visitorIndex = 0;\n }\n this.result.lastPlugin = plugin22;\n try {\n return visitor(node2.toProxy(), this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2);\n }\n }\n if (visit2.iterator !== 0) {\n let iterator = visit2.iterator;\n let child;\n while (child = node2.nodes[node2.indexes[iterator]]) {\n node2.indexes[iterator] += 1;\n if (!child[isClean$3]) {\n child[isClean$3] = true;\n stack.push(toStack$1(child));\n return;\n }\n }\n visit2.iterator = 0;\n delete node2.indexes[iterator];\n }\n let events = visit2.events;\n while (visit2.eventIndex < events.length) {\n let event = events[visit2.eventIndex];\n visit2.eventIndex += 1;\n if (event === CHILDREN$1) {\n if (node2.nodes && node2.nodes.length) {\n node2[isClean$3] = true;\n visit2.iterator = node2.getIterator();\n }\n return;\n } else if (this.listeners[event]) {\n visit2.visitors = this.listeners[event];\n return;\n }\n }\n stack.pop();\n }\n walkSync(node2) {\n node2[isClean$3] = true;\n let events = getEvents$1(node2);\n for (let event of events) {\n if (event === CHILDREN$1) {\n if (node2.nodes) {\n node2.each((child) => {\n if (!child[isClean$3]) this.walkSync(child);\n });\n }\n } else {\n let visitors = this.listeners[event];\n if (visitors) {\n if (this.visitSync(visitors, node2.toProxy())) return;\n }\n }\n }\n }\n warnings() {\n return this.sync().warnings();\n }\n get content() {\n return this.stringify().content;\n }\n get css() {\n return this.stringify().css;\n }\n get map() {\n return this.stringify().map;\n }\n get messages() {\n return this.sync().messages;\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n return this.sync().root;\n }\n get [Symbol.toStringTag]() {\n return \"LazyResult\";\n }\n};\nLazyResult$2$1.registerPostcss = (dependant) => {\n postcss$2$1 = dependant;\n};\nvar lazyResult$1 = LazyResult$2$1;\nLazyResult$2$1.default = LazyResult$2$1;\nRoot$3$1.registerLazyResult(LazyResult$2$1);\nDocument$2$1.registerLazyResult(LazyResult$2$1);\nlet MapGenerator2$1 = mapGenerator$1;\nlet stringify$1$1 = stringify_1$1;\nlet warnOnce2$1 = warnOnce$2$1;\nlet parse$1$1 = parse_1$1;\nconst Result$1$1 = result$1;\nlet NoWorkResult$1$1 = class NoWorkResult {\n constructor(processor2, css, opts) {\n css = css.toString();\n this.stringified = false;\n this._processor = processor2;\n this._css = css;\n this._opts = opts;\n this._map = void 0;\n let root2;\n let str = stringify$1$1;\n this.result = new Result$1$1(this._processor, root2, this._opts);\n this.result.css = css;\n let self = this;\n Object.defineProperty(this.result, \"root\", {\n get() {\n return self.root;\n }\n });\n let map = new MapGenerator2$1(str, root2, this._opts, css);\n if (map.isMap()) {\n let [generatedCSS, generatedMap] = map.generate();\n if (generatedCSS) {\n this.result.css = generatedCSS;\n }\n if (generatedMap) {\n this.result.map = generatedMap;\n }\n } else {\n map.clearAnnotation();\n this.result.css = map.css;\n }\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n return Promise.resolve(this.result);\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n sync() {\n if (this.error) throw this.error;\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this._opts)) {\n warnOnce2$1(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this._css;\n }\n warnings() {\n return [];\n }\n get content() {\n return this.result.css;\n }\n get css() {\n return this.result.css;\n }\n get map() {\n return this.result.map;\n }\n get messages() {\n return [];\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n if (this._root) {\n return this._root;\n }\n let root2;\n let parser2 = parse$1$1;\n try {\n root2 = parser2(this._css, this._opts);\n } catch (error) {\n this.error = error;\n }\n if (this.error) {\n throw this.error;\n } else {\n this._root = root2;\n return root2;\n }\n }\n get [Symbol.toStringTag]() {\n return \"NoWorkResult\";\n }\n};\nvar noWorkResult$1 = NoWorkResult$1$1;\nNoWorkResult$1$1.default = NoWorkResult$1$1;\nlet NoWorkResult2$1 = noWorkResult$1;\nlet LazyResult$1$1 = lazyResult$1;\nlet Document$1$1 = document$1$1;\nlet Root$2$1 = root$1;\nlet Processor$1$1 = class Processor {\n constructor(plugins = []) {\n this.version = \"8.4.38\";\n this.plugins = this.normalize(plugins);\n }\n normalize(plugins) {\n let normalized = [];\n for (let i2 of plugins) {\n if (i2.postcss === true) {\n i2 = i2();\n } else if (i2.postcss) {\n i2 = i2.postcss;\n }\n if (typeof i2 === \"object\" && Array.isArray(i2.plugins)) {\n normalized = normalized.concat(i2.plugins);\n } else if (typeof i2 === \"object\" && i2.postcssPlugin) {\n normalized.push(i2);\n } else if (typeof i2 === \"function\") {\n normalized.push(i2);\n } else if (typeof i2 === \"object\" && (i2.parse || i2.stringify)) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error(\n \"PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.\"\n );\n }\n } else {\n throw new Error(i2 + \" is not a PostCSS plugin\");\n }\n }\n return normalized;\n }\n process(css, opts = {}) {\n if (!this.plugins.length && !opts.parser && !opts.stringifier && !opts.syntax) {\n return new NoWorkResult2$1(this, css, opts);\n } else {\n return new LazyResult$1$1(this, css, opts);\n }\n }\n use(plugin22) {\n this.plugins = this.plugins.concat(this.normalize([plugin22]));\n return this;\n }\n};\nvar processor$1 = Processor$1$1;\nProcessor$1$1.default = Processor$1$1;\nRoot$2$1.registerProcessor(Processor$1$1);\nDocument$1$1.registerProcessor(Processor$1$1);\nlet Declaration$1$1 = declaration$1;\nlet PreviousMap2$1 = previousMap$1;\nlet Comment$1$1 = comment$1;\nlet AtRule$1$1 = atRule$1;\nlet Input$1$1 = input$1;\nlet Root$1$1 = root$1;\nlet Rule$1$1 = rule$1;\nfunction fromJSON$1$1(json, inputs) {\n if (Array.isArray(json)) return json.map((n2) => fromJSON$1$1(n2));\n let { inputs: ownInputs, ...defaults } = json;\n if (ownInputs) {\n inputs = [];\n for (let input2 of ownInputs) {\n let inputHydrated = { ...input2, __proto__: Input$1$1.prototype };\n if (inputHydrated.map) {\n inputHydrated.map = {\n ...inputHydrated.map,\n __proto__: PreviousMap2$1.prototype\n };\n }\n inputs.push(inputHydrated);\n }\n }\n if (defaults.nodes) {\n defaults.nodes = json.nodes.map((n2) => fromJSON$1$1(n2, inputs));\n }\n if (defaults.source) {\n let { inputId, ...source } = defaults.source;\n defaults.source = source;\n if (inputId != null) {\n defaults.source.input = inputs[inputId];\n }\n }\n if (defaults.type === \"root\") {\n return new Root$1$1(defaults);\n } else if (defaults.type === \"decl\") {\n return new Declaration$1$1(defaults);\n } else if (defaults.type === \"rule\") {\n return new Rule$1$1(defaults);\n } else if (defaults.type === \"comment\") {\n return new Comment$1$1(defaults);\n } else if (defaults.type === \"atrule\") {\n return new AtRule$1$1(defaults);\n } else {\n throw new Error(\"Unknown node type: \" + json.type);\n }\n}\nvar fromJSON_1$1 = fromJSON$1$1;\nfromJSON$1$1.default = fromJSON$1$1;\nlet CssSyntaxError2$1 = cssSyntaxError$1;\nlet Declaration2$1 = declaration$1;\nlet LazyResult2$1 = lazyResult$1;\nlet Container2$1 = container$1;\nlet Processor2$1 = processor$1;\nlet stringify$5 = stringify_1$1;\nlet fromJSON$2 = fromJSON_1$1;\nlet Document22 = document$1$1;\nlet Warning2$1 = warning$1;\nlet Comment2$1 = comment$1;\nlet AtRule2$1 = atRule$1;\nlet Result2$1 = result$1;\nlet Input2$1 = input$1;\nlet parse$5 = parse_1$1;\nlet list$3 = list_1$1;\nlet Rule2$1 = rule$1;\nlet Root2$1 = root$1;\nlet Node2$1 = node$1;\nfunction postcss$3(...plugins) {\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0];\n }\n return new Processor2$1(plugins);\n}\npostcss$3.plugin = function plugin(name, initializer) {\n let warningPrinted = false;\n function creator(...args) {\n if (console && console.warn && !warningPrinted) {\n warningPrinted = true;\n console.warn(\n name + \": postcss.plugin was deprecated. Migration guide:\\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration\"\n );\n if (process.env.LANG && process.env.LANG.startsWith(\"cn\")) {\n console.warn(\n name + \": 里面 postcss.plugin 被弃用. 迁移指南:\\nhttps://www.w3ctech.com/topic/2226\"\n );\n }\n }\n let transformer = initializer(...args);\n transformer.postcssPlugin = name;\n transformer.postcssVersion = new Processor2$1().version;\n return transformer;\n }\n let cache;\n Object.defineProperty(creator, \"postcss\", {\n get() {\n if (!cache) cache = creator();\n return cache;\n }\n });\n creator.process = function(css, processOpts, pluginOpts) {\n return postcss$3([creator(pluginOpts)]).process(css, processOpts);\n };\n return creator;\n};\npostcss$3.stringify = stringify$5;\npostcss$3.parse = parse$5;\npostcss$3.fromJSON = fromJSON$2;\npostcss$3.list = list$3;\npostcss$3.comment = (defaults) => new Comment2$1(defaults);\npostcss$3.atRule = (defaults) => new AtRule2$1(defaults);\npostcss$3.decl = (defaults) => new Declaration2$1(defaults);\npostcss$3.rule = (defaults) => new Rule2$1(defaults);\npostcss$3.root = (defaults) => new Root2$1(defaults);\npostcss$3.document = (defaults) => new Document22(defaults);\npostcss$3.CssSyntaxError = CssSyntaxError2$1;\npostcss$3.Declaration = Declaration2$1;\npostcss$3.Container = Container2$1;\npostcss$3.Processor = Processor2$1;\npostcss$3.Document = Document22;\npostcss$3.Comment = Comment2$1;\npostcss$3.Warning = Warning2$1;\npostcss$3.AtRule = AtRule2$1;\npostcss$3.Result = Result2$1;\npostcss$3.Input = Input2$1;\npostcss$3.Rule = Rule2$1;\npostcss$3.Root = Root2$1;\npostcss$3.Node = Node2$1;\nLazyResult2$1.registerPostcss(postcss$3);\nvar postcss_1$1 = postcss$3;\npostcss$3.default = postcss$3;\nconst postcss$1$1 = /* @__PURE__ */ getDefaultExportFromCjs$1(postcss_1$1);\npostcss$1$1.stringify;\npostcss$1$1.fromJSON;\npostcss$1$1.plugin;\npostcss$1$1.parse;\npostcss$1$1.list;\npostcss$1$1.document;\npostcss$1$1.comment;\npostcss$1$1.atRule;\npostcss$1$1.rule;\npostcss$1$1.decl;\npostcss$1$1.root;\npostcss$1$1.CssSyntaxError;\npostcss$1$1.Declaration;\npostcss$1$1.Container;\npostcss$1$1.Processor;\npostcss$1$1.Document;\npostcss$1$1.Comment;\npostcss$1$1.Warning;\npostcss$1$1.AtRule;\npostcss$1$1.Result;\npostcss$1$1.Input;\npostcss$1$1.Rule;\npostcss$1$1.Root;\npostcss$1$1.Node;\nvar __defProp2 = Object.defineProperty;\nvar __defNormalProp2 = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField2 = (obj, key, value) => __defNormalProp2(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nfunction getDefaultExportFromCjs(x2) {\n return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, \"default\") ? x2[\"default\"] : x2;\n}\nfunction getAugmentedNamespace(n2) {\n if (n2.__esModule) return n2;\n var f2 = n2.default;\n if (typeof f2 == \"function\") {\n var a2 = function a22() {\n if (this instanceof a22) {\n return Reflect.construct(f2, arguments, this.constructor);\n }\n return f2.apply(this, arguments);\n };\n a2.prototype = f2.prototype;\n } else a2 = {};\n Object.defineProperty(a2, \"__esModule\", { value: true });\n Object.keys(n2).forEach(function(k) {\n var d = Object.getOwnPropertyDescriptor(n2, k);\n Object.defineProperty(a2, k, d.get ? d : {\n enumerable: true,\n get: function() {\n return n2[k];\n }\n });\n });\n return a2;\n}\nvar picocolors_browser = { exports: {} };\nvar x = String;\nvar create = function() {\n return { isColorSupported: false, reset: x, bold: x, dim: x, italic: x, underline: x, inverse: x, hidden: x, strikethrough: x, black: x, red: x, green: x, yellow: x, blue: x, magenta: x, cyan: x, white: x, gray: x, bgBlack: x, bgRed: x, bgGreen: x, bgYellow: x, bgBlue: x, bgMagenta: x, bgCyan: x, bgWhite: x };\n};\npicocolors_browser.exports = create();\npicocolors_browser.exports.createColors = create;\nvar picocolors_browserExports = picocolors_browser.exports;\nconst __viteBrowserExternal = {};\nconst __viteBrowserExternal$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: __viteBrowserExternal\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst require$$2 = /* @__PURE__ */ getAugmentedNamespace(__viteBrowserExternal$1);\nlet pico = picocolors_browserExports;\nlet terminalHighlight$1 = require$$2;\nlet CssSyntaxError$3 = class CssSyntaxError2 extends Error {\n constructor(message, line, column, source, file, plugin22) {\n super(message);\n this.name = \"CssSyntaxError\";\n this.reason = message;\n if (file) {\n this.file = file;\n }\n if (source) {\n this.source = source;\n }\n if (plugin22) {\n this.plugin = plugin22;\n }\n if (typeof line !== \"undefined\" && typeof column !== \"undefined\") {\n if (typeof line === \"number\") {\n this.line = line;\n this.column = column;\n } else {\n this.line = line.line;\n this.column = line.column;\n this.endLine = column.line;\n this.endColumn = column.column;\n }\n }\n this.setMessage();\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, CssSyntaxError2);\n }\n }\n setMessage() {\n this.message = this.plugin ? this.plugin + \": \" : \"\";\n this.message += this.file ? this.file : \"\";\n if (typeof this.line !== \"undefined\") {\n this.message += \":\" + this.line + \":\" + this.column;\n }\n this.message += \": \" + this.reason;\n }\n showSourceCode(color) {\n if (!this.source) return \"\";\n let css = this.source;\n if (color == null) color = pico.isColorSupported;\n if (terminalHighlight$1) {\n if (color) css = terminalHighlight$1(css);\n }\n let lines = css.split(/\\r?\\n/);\n let start = Math.max(this.line - 3, 0);\n let end = Math.min(this.line + 2, lines.length);\n let maxWidth = String(end).length;\n let mark, aside;\n if (color) {\n let { bold, gray, red } = pico.createColors(true);\n mark = (text) => bold(red(text));\n aside = (text) => gray(text);\n } else {\n mark = aside = (str) => str;\n }\n return lines.slice(start, end).map((line, index2) => {\n let number = start + 1 + index2;\n let gutter = \" \" + (\" \" + number).slice(-maxWidth) + \" | \";\n if (number === this.line) {\n let spacing = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, this.column - 1).replace(/[^\\t]/g, \" \");\n return mark(\">\") + aside(gutter) + line + \"\\n \" + spacing + mark(\"^\");\n }\n return \" \" + aside(gutter) + line;\n }).join(\"\\n\");\n }\n toString() {\n let code = this.showSourceCode();\n if (code) {\n code = \"\\n\\n\" + code + \"\\n\";\n }\n return this.name + \": \" + this.message + code;\n }\n};\nvar cssSyntaxError = CssSyntaxError$3;\nCssSyntaxError$3.default = CssSyntaxError$3;\nvar symbols = {};\nsymbols.isClean = Symbol(\"isClean\");\nsymbols.my = Symbol(\"my\");\nconst DEFAULT_RAW = {\n after: \"\\n\",\n beforeClose: \"\\n\",\n beforeComment: \"\\n\",\n beforeDecl: \"\\n\",\n beforeOpen: \" \",\n beforeRule: \"\\n\",\n colon: \": \",\n commentLeft: \" \",\n commentRight: \" \",\n emptyBody: \"\",\n indent: \" \",\n semicolon: false\n};\nfunction capitalize(str) {\n return str[0].toUpperCase() + str.slice(1);\n}\nlet Stringifier$2 = class Stringifier2 {\n constructor(builder) {\n this.builder = builder;\n }\n atrule(node2, semicolon) {\n let name = \"@\" + node2.name;\n let params = node2.params ? this.rawValue(node2, \"params\") : \"\";\n if (typeof node2.raws.afterName !== \"undefined\") {\n name += node2.raws.afterName;\n } else if (params) {\n name += \" \";\n }\n if (node2.nodes) {\n this.block(node2, name + params);\n } else {\n let end = (node2.raws.between || \"\") + (semicolon ? \";\" : \"\");\n this.builder(name + params + end, node2);\n }\n }\n beforeAfter(node2, detect) {\n let value;\n if (node2.type === \"decl\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (node2.type === \"comment\") {\n value = this.raw(node2, null, \"beforeComment\");\n } else if (detect === \"before\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else {\n value = this.raw(node2, null, \"beforeClose\");\n }\n let buf = node2.parent;\n let depth = 0;\n while (buf && buf.type !== \"root\") {\n depth += 1;\n buf = buf.parent;\n }\n if (value.includes(\"\\n\")) {\n let indent = this.raw(node2, null, \"indent\");\n if (indent.length) {\n for (let step = 0; step < depth; step++) value += indent;\n }\n }\n return value;\n }\n block(node2, start) {\n let between = this.raw(node2, \"between\", \"beforeOpen\");\n this.builder(start + between + \"{\", node2, \"start\");\n let after;\n if (node2.nodes && node2.nodes.length) {\n this.body(node2);\n after = this.raw(node2, \"after\");\n } else {\n after = this.raw(node2, \"after\", \"emptyBody\");\n }\n if (after) this.builder(after);\n this.builder(\"}\", node2, \"end\");\n }\n body(node2) {\n let last = node2.nodes.length - 1;\n while (last > 0) {\n if (node2.nodes[last].type !== \"comment\") break;\n last -= 1;\n }\n let semicolon = this.raw(node2, \"semicolon\");\n for (let i2 = 0; i2 < node2.nodes.length; i2++) {\n let child = node2.nodes[i2];\n let before = this.raw(child, \"before\");\n if (before) this.builder(before);\n this.stringify(child, last !== i2 || semicolon);\n }\n }\n comment(node2) {\n let left = this.raw(node2, \"left\", \"commentLeft\");\n let right = this.raw(node2, \"right\", \"commentRight\");\n this.builder(\"/*\" + left + node2.text + right + \"*/\", node2);\n }\n decl(node2, semicolon) {\n let between = this.raw(node2, \"between\", \"colon\");\n let string = node2.prop + between + this.rawValue(node2, \"value\");\n if (node2.important) {\n string += node2.raws.important || \" !important\";\n }\n if (semicolon) string += \";\";\n this.builder(string, node2);\n }\n document(node2) {\n this.body(node2);\n }\n raw(node2, own, detect) {\n let value;\n if (!detect) detect = own;\n if (own) {\n value = node2.raws[own];\n if (typeof value !== \"undefined\") return value;\n }\n let parent = node2.parent;\n if (detect === \"before\") {\n if (!parent || parent.type === \"root\" && parent.first === node2) {\n return \"\";\n }\n if (parent && parent.type === \"document\") {\n return \"\";\n }\n }\n if (!parent) return DEFAULT_RAW[detect];\n let root2 = node2.root();\n if (!root2.rawCache) root2.rawCache = {};\n if (typeof root2.rawCache[detect] !== \"undefined\") {\n return root2.rawCache[detect];\n }\n if (detect === \"before\" || detect === \"after\") {\n return this.beforeAfter(node2, detect);\n } else {\n let method = \"raw\" + capitalize(detect);\n if (this[method]) {\n value = this[method](root2, node2);\n } else {\n root2.walk((i2) => {\n value = i2.raws[own];\n if (typeof value !== \"undefined\") return false;\n });\n }\n }\n if (typeof value === \"undefined\") value = DEFAULT_RAW[detect];\n root2.rawCache[detect] = value;\n return value;\n }\n rawBeforeClose(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length > 0) {\n if (typeof i2.raws.after !== \"undefined\") {\n value = i2.raws.after;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawBeforeComment(root2, node2) {\n let value;\n root2.walkComments((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeDecl(root2, node2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeOpen(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.type !== \"decl\") {\n value = i2.raws.between;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawBeforeRule(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && (i2.parent !== root2 || root2.first !== i2)) {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawColon(root2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.between !== \"undefined\") {\n value = i2.raws.between.replace(/[^\\s:]/g, \"\");\n return false;\n }\n });\n return value;\n }\n rawEmptyBody(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length === 0) {\n value = i2.raws.after;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawIndent(root2) {\n if (root2.raws.indent) return root2.raws.indent;\n let value;\n root2.walk((i2) => {\n let p = i2.parent;\n if (p && p !== root2 && p.parent && p.parent === root2) {\n if (typeof i2.raws.before !== \"undefined\") {\n let parts = i2.raws.before.split(\"\\n\");\n value = parts[parts.length - 1];\n value = value.replace(/\\S/g, \"\");\n return false;\n }\n }\n });\n return value;\n }\n rawSemicolon(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length && i2.last.type === \"decl\") {\n value = i2.raws.semicolon;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawValue(node2, prop) {\n let value = node2[prop];\n let raw = node2.raws[prop];\n if (raw && raw.value === value) {\n return raw.raw;\n }\n return value;\n }\n root(node2) {\n this.body(node2);\n if (node2.raws.after) this.builder(node2.raws.after);\n }\n rule(node2) {\n this.block(node2, this.rawValue(node2, \"selector\"));\n if (node2.raws.ownSemicolon) {\n this.builder(node2.raws.ownSemicolon, node2, \"end\");\n }\n }\n stringify(node2, semicolon) {\n if (!this[node2.type]) {\n throw new Error(\n \"Unknown AST node type \" + node2.type + \". Maybe you need to change PostCSS stringifier.\"\n );\n }\n this[node2.type](node2, semicolon);\n }\n};\nvar stringifier = Stringifier$2;\nStringifier$2.default = Stringifier$2;\nlet Stringifier$1 = stringifier;\nfunction stringify$4(node2, builder) {\n let str = new Stringifier$1(builder);\n str.stringify(node2);\n}\nvar stringify_1 = stringify$4;\nstringify$4.default = stringify$4;\nlet { isClean: isClean$2, my: my$2 } = symbols;\nlet CssSyntaxError$2 = cssSyntaxError;\nlet Stringifier22 = stringifier;\nlet stringify$3 = stringify_1;\nfunction cloneNode(obj, parent) {\n let cloned = new obj.constructor();\n for (let i2 in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, i2)) {\n continue;\n }\n if (i2 === \"proxyCache\") continue;\n let value = obj[i2];\n let type = typeof value;\n if (i2 === \"parent\" && type === \"object\") {\n if (parent) cloned[i2] = parent;\n } else if (i2 === \"source\") {\n cloned[i2] = value;\n } else if (Array.isArray(value)) {\n cloned[i2] = value.map((j) => cloneNode(j, cloned));\n } else {\n if (type === \"object\" && value !== null) value = cloneNode(value);\n cloned[i2] = value;\n }\n }\n return cloned;\n}\nlet Node$4 = class Node3 {\n constructor(defaults = {}) {\n this.raws = {};\n this[isClean$2] = false;\n this[my$2] = true;\n for (let name in defaults) {\n if (name === \"nodes\") {\n this.nodes = [];\n for (let node2 of defaults[name]) {\n if (typeof node2.clone === \"function\") {\n this.append(node2.clone());\n } else {\n this.append(node2);\n }\n }\n } else {\n this[name] = defaults[name];\n }\n }\n }\n addToError(error) {\n error.postcssNode = this;\n if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n let s2 = this.source;\n error.stack = error.stack.replace(\n /\\n\\s{4}at /,\n `$&${s2.input.from}:${s2.start.line}:${s2.start.column}$&`\n );\n }\n return error;\n }\n after(add) {\n this.parent.insertAfter(this, add);\n return this;\n }\n assign(overrides = {}) {\n for (let name in overrides) {\n this[name] = overrides[name];\n }\n return this;\n }\n before(add) {\n this.parent.insertBefore(this, add);\n return this;\n }\n cleanRaws(keepBetween) {\n delete this.raws.before;\n delete this.raws.after;\n if (!keepBetween) delete this.raws.between;\n }\n clone(overrides = {}) {\n let cloned = cloneNode(this);\n for (let name in overrides) {\n cloned[name] = overrides[name];\n }\n return cloned;\n }\n cloneAfter(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertAfter(this, cloned);\n return cloned;\n }\n cloneBefore(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertBefore(this, cloned);\n return cloned;\n }\n error(message, opts = {}) {\n if (this.source) {\n let { end, start } = this.rangeBy(opts);\n return this.source.input.error(\n message,\n { column: start.column, line: start.line },\n { column: end.column, line: end.line },\n opts\n );\n }\n return new CssSyntaxError$2(message);\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"prop\" || prop === \"value\" || prop === \"name\" || prop === \"params\" || prop === \"important\" || /* c8 ignore next */\n prop === \"text\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n markDirty() {\n if (this[isClean$2]) {\n this[isClean$2] = false;\n let next = this;\n while (next = next.parent) {\n next[isClean$2] = false;\n }\n }\n }\n next() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 + 1];\n }\n positionBy(opts, stringRepresentation) {\n let pos = this.source.start;\n if (opts.index) {\n pos = this.positionInside(opts.index, stringRepresentation);\n } else if (opts.word) {\n stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) pos = this.positionInside(index2, stringRepresentation);\n }\n return pos;\n }\n positionInside(index2, stringRepresentation) {\n let string = stringRepresentation || this.toString();\n let column = this.source.start.column;\n let line = this.source.start.line;\n for (let i2 = 0; i2 < index2; i2++) {\n if (string[i2] === \"\\n\") {\n column = 1;\n line += 1;\n } else {\n column += 1;\n }\n }\n return { column, line };\n }\n prev() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 - 1];\n }\n rangeBy(opts) {\n let start = {\n column: this.source.start.column,\n line: this.source.start.line\n };\n let end = this.source.end ? {\n column: this.source.end.column + 1,\n line: this.source.end.line\n } : {\n column: start.column + 1,\n line: start.line\n };\n if (opts.word) {\n let stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) {\n start = this.positionInside(index2, stringRepresentation);\n end = this.positionInside(index2 + opts.word.length, stringRepresentation);\n }\n } else {\n if (opts.start) {\n start = {\n column: opts.start.column,\n line: opts.start.line\n };\n } else if (opts.index) {\n start = this.positionInside(opts.index);\n }\n if (opts.end) {\n end = {\n column: opts.end.column,\n line: opts.end.line\n };\n } else if (typeof opts.endIndex === \"number\") {\n end = this.positionInside(opts.endIndex);\n } else if (opts.index) {\n end = this.positionInside(opts.index + 1);\n }\n }\n if (end.line < start.line || end.line === start.line && end.column <= start.column) {\n end = { column: start.column + 1, line: start.line };\n }\n return { end, start };\n }\n raw(prop, defaultType) {\n let str = new Stringifier22();\n return str.raw(this, prop, defaultType);\n }\n remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n this.parent = void 0;\n return this;\n }\n replaceWith(...nodes) {\n if (this.parent) {\n let bookmark = this;\n let foundSelf = false;\n for (let node2 of nodes) {\n if (node2 === this) {\n foundSelf = true;\n } else if (foundSelf) {\n this.parent.insertAfter(bookmark, node2);\n bookmark = node2;\n } else {\n this.parent.insertBefore(bookmark, node2);\n }\n }\n if (!foundSelf) {\n this.remove();\n }\n }\n return this;\n }\n root() {\n let result2 = this;\n while (result2.parent && result2.parent.type !== \"document\") {\n result2 = result2.parent;\n }\n return result2;\n }\n toJSON(_, inputs) {\n let fixed = {};\n let emitInputs = inputs == null;\n inputs = inputs || /* @__PURE__ */ new Map();\n let inputsNextIndex = 0;\n for (let name in this) {\n if (!Object.prototype.hasOwnProperty.call(this, name)) {\n continue;\n }\n if (name === \"parent\" || name === \"proxyCache\") continue;\n let value = this[name];\n if (Array.isArray(value)) {\n fixed[name] = value.map((i2) => {\n if (typeof i2 === \"object\" && i2.toJSON) {\n return i2.toJSON(null, inputs);\n } else {\n return i2;\n }\n });\n } else if (typeof value === \"object\" && value.toJSON) {\n fixed[name] = value.toJSON(null, inputs);\n } else if (name === \"source\") {\n let inputId = inputs.get(value.input);\n if (inputId == null) {\n inputId = inputsNextIndex;\n inputs.set(value.input, inputsNextIndex);\n inputsNextIndex++;\n }\n fixed[name] = {\n end: value.end,\n inputId,\n start: value.start\n };\n } else {\n fixed[name] = value;\n }\n }\n if (emitInputs) {\n fixed.inputs = [...inputs.keys()].map((input2) => input2.toJSON());\n }\n return fixed;\n }\n toProxy() {\n if (!this.proxyCache) {\n this.proxyCache = new Proxy(this, this.getProxyProcessor());\n }\n return this.proxyCache;\n }\n toString(stringifier2 = stringify$3) {\n if (stringifier2.stringify) stringifier2 = stringifier2.stringify;\n let result2 = \"\";\n stringifier2(this, (i2) => {\n result2 += i2;\n });\n return result2;\n }\n warn(result2, text, opts) {\n let data = { node: this };\n for (let i2 in opts) data[i2] = opts[i2];\n return result2.warn(text, data);\n }\n get proxyOf() {\n return this;\n }\n};\nvar node = Node$4;\nNode$4.default = Node$4;\nlet Node$3 = node;\nlet Declaration$4 = class Declaration2 extends Node$3 {\n constructor(defaults) {\n if (defaults && typeof defaults.value !== \"undefined\" && typeof defaults.value !== \"string\") {\n defaults = { ...defaults, value: String(defaults.value) };\n }\n super(defaults);\n this.type = \"decl\";\n }\n get variable() {\n return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n }\n};\nvar declaration = Declaration$4;\nDeclaration$4.default = Declaration$4;\nlet urlAlphabet = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\nlet customAlphabet = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = \"\";\n let i2 = size;\n while (i2--) {\n id += alphabet[Math.random() * alphabet.length | 0];\n }\n return id;\n };\n};\nlet nanoid$1 = (size = 21) => {\n let id = \"\";\n let i2 = size;\n while (i2--) {\n id += urlAlphabet[Math.random() * 64 | 0];\n }\n return id;\n};\nvar nonSecure = { nanoid: nanoid$1, customAlphabet };\nlet { SourceMapConsumer: SourceMapConsumer$2, SourceMapGenerator: SourceMapGenerator$2 } = require$$2;\nlet { existsSync, readFileSync } = require$$2;\nlet { dirname: dirname$1, join } = require$$2;\nfunction fromBase64(str) {\n if (Buffer) {\n return Buffer.from(str, \"base64\").toString();\n } else {\n return window.atob(str);\n }\n}\nlet PreviousMap$2 = class PreviousMap2 {\n constructor(css, opts) {\n if (opts.map === false) return;\n this.loadAnnotation(css);\n this.inline = this.startWith(this.annotation, \"data:\");\n let prev = opts.map ? opts.map.prev : void 0;\n let text = this.loadMap(opts.from, prev);\n if (!this.mapFile && opts.from) {\n this.mapFile = opts.from;\n }\n if (this.mapFile) this.root = dirname$1(this.mapFile);\n if (text) this.text = text;\n }\n consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new SourceMapConsumer$2(this.text);\n }\n return this.consumerCache;\n }\n decodeInline(text) {\n let baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/;\n let baseUri = /^data:application\\/json;base64,/;\n let charsetUri = /^data:application\\/json;charset=utf-?8,/;\n let uri = /^data:application\\/json,/;\n if (charsetUri.test(text) || uri.test(text)) {\n return decodeURIComponent(text.substr(RegExp.lastMatch.length));\n }\n if (baseCharsetUri.test(text) || baseUri.test(text)) {\n return fromBase64(text.substr(RegExp.lastMatch.length));\n }\n let encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n throw new Error(\"Unsupported source map encoding \" + encoding);\n }\n getAnnotationURL(sourceMapString) {\n return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n }\n isMap(map) {\n if (typeof map !== \"object\") return false;\n return typeof map.mappings === \"string\" || typeof map._mappings === \"string\" || Array.isArray(map.sections);\n }\n loadAnnotation(css) {\n let comments = css.match(/\\/\\*\\s*# sourceMappingURL=/gm);\n if (!comments) return;\n let start = css.lastIndexOf(comments.pop());\n let end = css.indexOf(\"*/\", start);\n if (start > -1 && end > -1) {\n this.annotation = this.getAnnotationURL(css.substring(start, end));\n }\n }\n loadFile(path) {\n this.root = dirname$1(path);\n if (existsSync(path)) {\n this.mapFile = path;\n return readFileSync(path, \"utf-8\").toString().trim();\n }\n }\n loadMap(file, prev) {\n if (prev === false) return false;\n if (prev) {\n if (typeof prev === \"string\") {\n return prev;\n } else if (typeof prev === \"function\") {\n let prevPath = prev(file);\n if (prevPath) {\n let map = this.loadFile(prevPath);\n if (!map) {\n throw new Error(\n \"Unable to load previous source map: \" + prevPath.toString()\n );\n }\n return map;\n }\n } else if (prev instanceof SourceMapConsumer$2) {\n return SourceMapGenerator$2.fromSourceMap(prev).toString();\n } else if (prev instanceof SourceMapGenerator$2) {\n return prev.toString();\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev);\n } else {\n throw new Error(\n \"Unsupported previous source map format: \" + prev.toString()\n );\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation);\n } else if (this.annotation) {\n let map = this.annotation;\n if (file) map = join(dirname$1(file), map);\n return this.loadFile(map);\n }\n }\n startWith(string, start) {\n if (!string) return false;\n return string.substr(0, start.length) === start;\n }\n withContent() {\n return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n }\n};\nvar previousMap = PreviousMap$2;\nPreviousMap$2.default = PreviousMap$2;\nlet { SourceMapConsumer: SourceMapConsumer$1, SourceMapGenerator: SourceMapGenerator$1 } = require$$2;\nlet { fileURLToPath, pathToFileURL: pathToFileURL$1 } = require$$2;\nlet { isAbsolute, resolve: resolve$1 } = require$$2;\nlet { nanoid } = nonSecure;\nlet terminalHighlight = require$$2;\nlet CssSyntaxError$1 = cssSyntaxError;\nlet PreviousMap$1 = previousMap;\nlet fromOffsetCache = Symbol(\"fromOffsetCache\");\nlet sourceMapAvailable$1 = Boolean(SourceMapConsumer$1 && SourceMapGenerator$1);\nlet pathAvailable$1 = Boolean(resolve$1 && isAbsolute);\nlet Input$4 = class Input2 {\n constructor(css, opts = {}) {\n if (css === null || typeof css === \"undefined\" || typeof css === \"object\" && !css.toString) {\n throw new Error(`PostCSS received ${css} instead of CSS string`);\n }\n this.css = css.toString();\n if (this.css[0] === \"\\uFEFF\" || this.css[0] === \"￾\") {\n this.hasBOM = true;\n this.css = this.css.slice(1);\n } else {\n this.hasBOM = false;\n }\n if (opts.from) {\n if (!pathAvailable$1 || /^\\w+:\\/\\//.test(opts.from) || isAbsolute(opts.from)) {\n this.file = opts.from;\n } else {\n this.file = resolve$1(opts.from);\n }\n }\n if (pathAvailable$1 && sourceMapAvailable$1) {\n let map = new PreviousMap$1(this.css, opts);\n if (map.text) {\n this.map = map;\n let file = map.consumer().file;\n if (!this.file && file) this.file = this.mapResolve(file);\n }\n }\n if (!this.file) {\n this.id = \"\";\n }\n if (this.map) this.map.file = this.from;\n }\n error(message, line, column, opts = {}) {\n let result2, endLine, endColumn;\n if (line && typeof line === \"object\") {\n let start = line;\n let end = column;\n if (typeof start.offset === \"number\") {\n let pos = this.fromOffset(start.offset);\n line = pos.line;\n column = pos.col;\n } else {\n line = start.line;\n column = start.column;\n }\n if (typeof end.offset === \"number\") {\n let pos = this.fromOffset(end.offset);\n endLine = pos.line;\n endColumn = pos.col;\n } else {\n endLine = end.line;\n endColumn = end.column;\n }\n } else if (!column) {\n let pos = this.fromOffset(line);\n line = pos.line;\n column = pos.col;\n }\n let origin = this.origin(line, column, endLine, endColumn);\n if (origin) {\n result2 = new CssSyntaxError$1(\n message,\n origin.endLine === void 0 ? origin.line : { column: origin.column, line: origin.line },\n origin.endLine === void 0 ? origin.column : { column: origin.endColumn, line: origin.endLine },\n origin.source,\n origin.file,\n opts.plugin\n );\n } else {\n result2 = new CssSyntaxError$1(\n message,\n endLine === void 0 ? line : { column, line },\n endLine === void 0 ? column : { column: endColumn, line: endLine },\n this.css,\n this.file,\n opts.plugin\n );\n }\n result2.input = { column, endColumn, endLine, line, source: this.css };\n if (this.file) {\n if (pathToFileURL$1) {\n result2.input.url = pathToFileURL$1(this.file).toString();\n }\n result2.input.file = this.file;\n }\n return result2;\n }\n fromOffset(offset) {\n let lastLine, lineToIndex;\n if (!this[fromOffsetCache]) {\n let lines = this.css.split(\"\\n\");\n lineToIndex = new Array(lines.length);\n let prevIndex = 0;\n for (let i2 = 0, l2 = lines.length; i2 < l2; i2++) {\n lineToIndex[i2] = prevIndex;\n prevIndex += lines[i2].length + 1;\n }\n this[fromOffsetCache] = lineToIndex;\n } else {\n lineToIndex = this[fromOffsetCache];\n }\n lastLine = lineToIndex[lineToIndex.length - 1];\n let min = 0;\n if (offset >= lastLine) {\n min = lineToIndex.length - 1;\n } else {\n let max = lineToIndex.length - 2;\n let mid;\n while (min < max) {\n mid = min + (max - min >> 1);\n if (offset < lineToIndex[mid]) {\n max = mid - 1;\n } else if (offset >= lineToIndex[mid + 1]) {\n min = mid + 1;\n } else {\n min = mid;\n break;\n }\n }\n }\n return {\n col: offset - lineToIndex[min] + 1,\n line: min + 1\n };\n }\n mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file;\n }\n return resolve$1(this.map.consumer().sourceRoot || this.map.root || \".\", file);\n }\n origin(line, column, endLine, endColumn) {\n if (!this.map) return false;\n let consumer = this.map.consumer();\n let from = consumer.originalPositionFor({ column, line });\n if (!from.source) return false;\n let to;\n if (typeof endLine === \"number\") {\n to = consumer.originalPositionFor({ column: endColumn, line: endLine });\n }\n let fromUrl;\n if (isAbsolute(from.source)) {\n fromUrl = pathToFileURL$1(from.source);\n } else {\n fromUrl = new URL(\n from.source,\n this.map.consumer().sourceRoot || pathToFileURL$1(this.map.mapFile)\n );\n }\n let result2 = {\n column: from.column,\n endColumn: to && to.column,\n endLine: to && to.line,\n line: from.line,\n url: fromUrl.toString()\n };\n if (fromUrl.protocol === \"file:\") {\n if (fileURLToPath) {\n result2.file = fileURLToPath(fromUrl);\n } else {\n throw new Error(`file: protocol is not available in this PostCSS build`);\n }\n }\n let source = consumer.sourceContentFor(from.source);\n if (source) result2.source = source;\n return result2;\n }\n toJSON() {\n let json = {};\n for (let name of [\"hasBOM\", \"css\", \"file\", \"id\"]) {\n if (this[name] != null) {\n json[name] = this[name];\n }\n }\n if (this.map) {\n json.map = { ...this.map };\n if (json.map.consumerCache) {\n json.map.consumerCache = void 0;\n }\n }\n return json;\n }\n get from() {\n return this.file || this.id;\n }\n};\nvar input = Input$4;\nInput$4.default = Input$4;\nif (terminalHighlight && terminalHighlight.registerInput) {\n terminalHighlight.registerInput(Input$4);\n}\nlet { SourceMapConsumer, SourceMapGenerator } = require$$2;\nlet { dirname, relative, resolve, sep } = require$$2;\nlet { pathToFileURL } = require$$2;\nlet Input$3 = input;\nlet sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator);\nlet pathAvailable = Boolean(dirname && resolve && relative && sep);\nlet MapGenerator$2 = class MapGenerator2 {\n constructor(stringify2, root2, opts, cssString) {\n this.stringify = stringify2;\n this.mapOpts = opts.map || {};\n this.root = root2;\n this.opts = opts;\n this.css = cssString;\n this.originalCSS = cssString;\n this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute;\n this.memoizedFileURLs = /* @__PURE__ */ new Map();\n this.memoizedPaths = /* @__PURE__ */ new Map();\n this.memoizedURLs = /* @__PURE__ */ new Map();\n }\n addAnnotation() {\n let content;\n if (this.isInline()) {\n content = \"data:application/json;base64,\" + this.toBase64(this.map.toString());\n } else if (typeof this.mapOpts.annotation === \"string\") {\n content = this.mapOpts.annotation;\n } else if (typeof this.mapOpts.annotation === \"function\") {\n content = this.mapOpts.annotation(this.opts.to, this.root);\n } else {\n content = this.outputFile() + \".map\";\n }\n let eol = \"\\n\";\n if (this.css.includes(\"\\r\\n\")) eol = \"\\r\\n\";\n this.css += eol + \"/*# sourceMappingURL=\" + content + \" */\";\n }\n applyPrevMaps() {\n for (let prev of this.previous()) {\n let from = this.toUrl(this.path(prev.file));\n let root2 = prev.root || dirname(prev.file);\n let map;\n if (this.mapOpts.sourcesContent === false) {\n map = new SourceMapConsumer(prev.text);\n if (map.sourcesContent) {\n map.sourcesContent = null;\n }\n } else {\n map = prev.consumer();\n }\n this.map.applySourceMap(map, from, this.toUrl(this.path(root2)));\n }\n }\n clearAnnotation() {\n if (this.mapOpts.annotation === false) return;\n if (this.root) {\n let node2;\n for (let i2 = this.root.nodes.length - 1; i2 >= 0; i2--) {\n node2 = this.root.nodes[i2];\n if (node2.type !== \"comment\") continue;\n if (node2.text.indexOf(\"# sourceMappingURL=\") === 0) {\n this.root.removeChild(i2);\n }\n }\n } else if (this.css) {\n this.css = this.css.replace(/\\n*?\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\");\n }\n }\n generate() {\n this.clearAnnotation();\n if (pathAvailable && sourceMapAvailable && this.isMap()) {\n return this.generateMap();\n } else {\n let result2 = \"\";\n this.stringify(this.root, (i2) => {\n result2 += i2;\n });\n return [result2];\n }\n }\n generateMap() {\n if (this.root) {\n this.generateString();\n } else if (this.previous().length === 1) {\n let prev = this.previous()[0].consumer();\n prev.file = this.outputFile();\n this.map = SourceMapGenerator.fromSourceMap(prev, {\n ignoreInvalidMapping: true\n });\n } else {\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n this.map.addMapping({\n generated: { column: 0, line: 1 },\n original: { column: 0, line: 1 },\n source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\"\n });\n }\n if (this.isSourcesContent()) this.setSourcesContent();\n if (this.root && this.previous().length > 0) this.applyPrevMaps();\n if (this.isAnnotation()) this.addAnnotation();\n if (this.isInline()) {\n return [this.css];\n } else {\n return [this.css, this.map];\n }\n }\n generateString() {\n this.css = \"\";\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n let line = 1;\n let column = 1;\n let noSource = \"\";\n let mapping = {\n generated: { column: 0, line: 0 },\n original: { column: 0, line: 0 },\n source: \"\"\n };\n let lines, last;\n this.stringify(this.root, (str, node2, type) => {\n this.css += str;\n if (node2 && type !== \"end\") {\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n if (node2.source && node2.source.start) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.start.line;\n mapping.original.column = node2.source.start.column - 1;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n this.map.addMapping(mapping);\n }\n }\n lines = str.match(/\\n/g);\n if (lines) {\n line += lines.length;\n last = str.lastIndexOf(\"\\n\");\n column = str.length - last;\n } else {\n column += str.length;\n }\n if (node2 && type !== \"start\") {\n let p = node2.parent || { raws: {} };\n let childless = node2.type === \"decl\" || node2.type === \"atrule\" && !node2.nodes;\n if (!childless || node2 !== p.last || p.raws.semicolon) {\n if (node2.source && node2.source.end) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.end.line;\n mapping.original.column = node2.source.end.column - 1;\n mapping.generated.line = line;\n mapping.generated.column = column - 2;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n this.map.addMapping(mapping);\n }\n }\n }\n });\n }\n isAnnotation() {\n if (this.isInline()) {\n return true;\n }\n if (typeof this.mapOpts.annotation !== \"undefined\") {\n return this.mapOpts.annotation;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.annotation);\n }\n return true;\n }\n isInline() {\n if (typeof this.mapOpts.inline !== \"undefined\") {\n return this.mapOpts.inline;\n }\n let annotation = this.mapOpts.annotation;\n if (typeof annotation !== \"undefined\" && annotation !== true) {\n return false;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.inline);\n }\n return true;\n }\n isMap() {\n if (typeof this.opts.map !== \"undefined\") {\n return !!this.opts.map;\n }\n return this.previous().length > 0;\n }\n isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== \"undefined\") {\n return this.mapOpts.sourcesContent;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.withContent());\n }\n return true;\n }\n outputFile() {\n if (this.opts.to) {\n return this.path(this.opts.to);\n } else if (this.opts.from) {\n return this.path(this.opts.from);\n } else {\n return \"to.css\";\n }\n }\n path(file) {\n if (this.mapOpts.absolute) return file;\n if (file.charCodeAt(0) === 60) return file;\n if (/^\\w+:\\/\\//.test(file)) return file;\n let cached = this.memoizedPaths.get(file);\n if (cached) return cached;\n let from = this.opts.to ? dirname(this.opts.to) : \".\";\n if (typeof this.mapOpts.annotation === \"string\") {\n from = dirname(resolve(from, this.mapOpts.annotation));\n }\n let path = relative(from, file);\n this.memoizedPaths.set(file, path);\n return path;\n }\n previous() {\n if (!this.previousMaps) {\n this.previousMaps = [];\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source && node2.source.input.map) {\n let map = node2.source.input.map;\n if (!this.previousMaps.includes(map)) {\n this.previousMaps.push(map);\n }\n }\n });\n } else {\n let input2 = new Input$3(this.originalCSS, this.opts);\n if (input2.map) this.previousMaps.push(input2.map);\n }\n }\n return this.previousMaps;\n }\n setSourcesContent() {\n let already = {};\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source) {\n let from = node2.source.input.from;\n if (from && !already[from]) {\n already[from] = true;\n let fromUrl = this.usesFileUrls ? this.toFileUrl(from) : this.toUrl(this.path(from));\n this.map.setSourceContent(fromUrl, node2.source.input.css);\n }\n }\n });\n } else if (this.css) {\n let from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\";\n this.map.setSourceContent(from, this.css);\n }\n }\n sourcePath(node2) {\n if (this.mapOpts.from) {\n return this.toUrl(this.mapOpts.from);\n } else if (this.usesFileUrls) {\n return this.toFileUrl(node2.source.input.from);\n } else {\n return this.toUrl(this.path(node2.source.input.from));\n }\n }\n toBase64(str) {\n if (Buffer) {\n return Buffer.from(str).toString(\"base64\");\n } else {\n return window.btoa(unescape(encodeURIComponent(str)));\n }\n }\n toFileUrl(path) {\n let cached = this.memoizedFileURLs.get(path);\n if (cached) return cached;\n if (pathToFileURL) {\n let fileURL = pathToFileURL(path).toString();\n this.memoizedFileURLs.set(path, fileURL);\n return fileURL;\n } else {\n throw new Error(\n \"`map.absolute` option is not available in this PostCSS build\"\n );\n }\n }\n toUrl(path) {\n let cached = this.memoizedURLs.get(path);\n if (cached) return cached;\n if (sep === \"\\\\\") {\n path = path.replace(/\\\\/g, \"/\");\n }\n let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent);\n this.memoizedURLs.set(path, url);\n return url;\n }\n};\nvar mapGenerator = MapGenerator$2;\nlet Node$2 = node;\nlet Comment$4 = class Comment2 extends Node$2 {\n constructor(defaults) {\n super(defaults);\n this.type = \"comment\";\n }\n};\nvar comment = Comment$4;\nComment$4.default = Comment$4;\nlet { isClean: isClean$1, my: my$1 } = symbols;\nlet Declaration$3 = declaration;\nlet Comment$3 = comment;\nlet Node$1 = node;\nlet parse$4, Rule$4, AtRule$4, Root$6;\nfunction cleanSource(nodes) {\n return nodes.map((i2) => {\n if (i2.nodes) i2.nodes = cleanSource(i2.nodes);\n delete i2.source;\n return i2;\n });\n}\nfunction markDirtyUp(node2) {\n node2[isClean$1] = false;\n if (node2.proxyOf.nodes) {\n for (let i2 of node2.proxyOf.nodes) {\n markDirtyUp(i2);\n }\n }\n}\nlet Container$7 = class Container2 extends Node$1 {\n append(...children) {\n for (let child of children) {\n let nodes = this.normalize(child, this.last);\n for (let node2 of nodes) this.proxyOf.nodes.push(node2);\n }\n this.markDirty();\n return this;\n }\n cleanRaws(keepBetween) {\n super.cleanRaws(keepBetween);\n if (this.nodes) {\n for (let node2 of this.nodes) node2.cleanRaws(keepBetween);\n }\n }\n each(callback) {\n if (!this.proxyOf.nodes) return void 0;\n let iterator = this.getIterator();\n let index2, result2;\n while (this.indexes[iterator] < this.proxyOf.nodes.length) {\n index2 = this.indexes[iterator];\n result2 = callback(this.proxyOf.nodes[index2], index2);\n if (result2 === false) break;\n this.indexes[iterator] += 1;\n }\n delete this.indexes[iterator];\n return result2;\n }\n every(condition) {\n return this.nodes.every(condition);\n }\n getIterator() {\n if (!this.lastEach) this.lastEach = 0;\n if (!this.indexes) this.indexes = {};\n this.lastEach += 1;\n let iterator = this.lastEach;\n this.indexes[iterator] = 0;\n return iterator;\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (!node2[prop]) {\n return node2[prop];\n } else if (prop === \"each\" || typeof prop === \"string\" && prop.startsWith(\"walk\")) {\n return (...args) => {\n return node2[prop](\n ...args.map((i2) => {\n if (typeof i2 === \"function\") {\n return (child, index2) => i2(child.toProxy(), index2);\n } else {\n return i2;\n }\n })\n );\n };\n } else if (prop === \"every\" || prop === \"some\") {\n return (cb) => {\n return node2[prop](\n (child, ...other) => cb(child.toProxy(), ...other)\n );\n };\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else if (prop === \"nodes\") {\n return node2.nodes.map((i2) => i2.toProxy());\n } else if (prop === \"first\" || prop === \"last\") {\n return node2[prop].toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"name\" || prop === \"params\" || prop === \"selector\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n index(child) {\n if (typeof child === \"number\") return child;\n if (child.proxyOf) child = child.proxyOf;\n return this.proxyOf.nodes.indexOf(child);\n }\n insertAfter(exist, add) {\n let existIndex = this.index(exist);\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex < index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n insertBefore(exist, add) {\n let existIndex = this.index(exist);\n let type = existIndex === 0 ? \"prepend\" : false;\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex <= index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n normalize(nodes, sample) {\n if (typeof nodes === \"string\") {\n nodes = cleanSource(parse$4(nodes).nodes);\n } else if (typeof nodes === \"undefined\") {\n nodes = [];\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type === \"root\" && this.type !== \"document\") {\n nodes = nodes.nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type) {\n nodes = [nodes];\n } else if (nodes.prop) {\n if (typeof nodes.value === \"undefined\") {\n throw new Error(\"Value field is missed in node creation\");\n } else if (typeof nodes.value !== \"string\") {\n nodes.value = String(nodes.value);\n }\n nodes = [new Declaration$3(nodes)];\n } else if (nodes.selector) {\n nodes = [new Rule$4(nodes)];\n } else if (nodes.name) {\n nodes = [new AtRule$4(nodes)];\n } else if (nodes.text) {\n nodes = [new Comment$3(nodes)];\n } else {\n throw new Error(\"Unknown node type in node creation\");\n }\n let processed = nodes.map((i2) => {\n if (!i2[my$1]) Container2.rebuild(i2);\n i2 = i2.proxyOf;\n if (i2.parent) i2.parent.removeChild(i2);\n if (i2[isClean$1]) markDirtyUp(i2);\n if (typeof i2.raws.before === \"undefined\") {\n if (sample && typeof sample.raws.before !== \"undefined\") {\n i2.raws.before = sample.raws.before.replace(/\\S/g, \"\");\n }\n }\n i2.parent = this.proxyOf;\n return i2;\n });\n return processed;\n }\n prepend(...children) {\n children = children.reverse();\n for (let child of children) {\n let nodes = this.normalize(child, this.first, \"prepend\").reverse();\n for (let node2 of nodes) this.proxyOf.nodes.unshift(node2);\n for (let id in this.indexes) {\n this.indexes[id] = this.indexes[id] + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n push(child) {\n child.parent = this;\n this.proxyOf.nodes.push(child);\n return this;\n }\n removeAll() {\n for (let node2 of this.proxyOf.nodes) node2.parent = void 0;\n this.proxyOf.nodes = [];\n this.markDirty();\n return this;\n }\n removeChild(child) {\n child = this.index(child);\n this.proxyOf.nodes[child].parent = void 0;\n this.proxyOf.nodes.splice(child, 1);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (index2 >= child) {\n this.indexes[id] = index2 - 1;\n }\n }\n this.markDirty();\n return this;\n }\n replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {};\n }\n this.walkDecls((decl) => {\n if (opts.props && !opts.props.includes(decl.prop)) return;\n if (opts.fast && !decl.value.includes(opts.fast)) return;\n decl.value = decl.value.replace(pattern, callback);\n });\n this.markDirty();\n return this;\n }\n some(condition) {\n return this.nodes.some(condition);\n }\n walk(callback) {\n return this.each((child, i2) => {\n let result2;\n try {\n result2 = callback(child, i2);\n } catch (e2) {\n throw child.addToError(e2);\n }\n if (result2 !== false && child.walk) {\n result2 = child.walk(callback);\n }\n return result2;\n });\n }\n walkAtRules(name, callback) {\n if (!callback) {\n callback = name;\n return this.walk((child, i2) => {\n if (child.type === \"atrule\") {\n return callback(child, i2);\n }\n });\n }\n if (name instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && name.test(child.name)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && child.name === name) {\n return callback(child, i2);\n }\n });\n }\n walkComments(callback) {\n return this.walk((child, i2) => {\n if (child.type === \"comment\") {\n return callback(child, i2);\n }\n });\n }\n walkDecls(prop, callback) {\n if (!callback) {\n callback = prop;\n return this.walk((child, i2) => {\n if (child.type === \"decl\") {\n return callback(child, i2);\n }\n });\n }\n if (prop instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && prop.test(child.prop)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && child.prop === prop) {\n return callback(child, i2);\n }\n });\n }\n walkRules(selector, callback) {\n if (!callback) {\n callback = selector;\n return this.walk((child, i2) => {\n if (child.type === \"rule\") {\n return callback(child, i2);\n }\n });\n }\n if (selector instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && selector.test(child.selector)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && child.selector === selector) {\n return callback(child, i2);\n }\n });\n }\n get first() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[0];\n }\n get last() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n }\n};\nContainer$7.registerParse = (dependant) => {\n parse$4 = dependant;\n};\nContainer$7.registerRule = (dependant) => {\n Rule$4 = dependant;\n};\nContainer$7.registerAtRule = (dependant) => {\n AtRule$4 = dependant;\n};\nContainer$7.registerRoot = (dependant) => {\n Root$6 = dependant;\n};\nvar container = Container$7;\nContainer$7.default = Container$7;\nContainer$7.rebuild = (node2) => {\n if (node2.type === \"atrule\") {\n Object.setPrototypeOf(node2, AtRule$4.prototype);\n } else if (node2.type === \"rule\") {\n Object.setPrototypeOf(node2, Rule$4.prototype);\n } else if (node2.type === \"decl\") {\n Object.setPrototypeOf(node2, Declaration$3.prototype);\n } else if (node2.type === \"comment\") {\n Object.setPrototypeOf(node2, Comment$3.prototype);\n } else if (node2.type === \"root\") {\n Object.setPrototypeOf(node2, Root$6.prototype);\n }\n node2[my$1] = true;\n if (node2.nodes) {\n node2.nodes.forEach((child) => {\n Container$7.rebuild(child);\n });\n }\n};\nlet Container$6 = container;\nlet LazyResult$4, Processor$3;\nlet Document$3 = class Document23 extends Container$6 {\n constructor(defaults) {\n super({ type: \"document\", ...defaults });\n if (!this.nodes) {\n this.nodes = [];\n }\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$4(new Processor$3(), this, opts);\n return lazy.stringify();\n }\n};\nDocument$3.registerLazyResult = (dependant) => {\n LazyResult$4 = dependant;\n};\nDocument$3.registerProcessor = (dependant) => {\n Processor$3 = dependant;\n};\nvar document$1 = Document$3;\nDocument$3.default = Document$3;\nlet printed = {};\nvar warnOnce$2 = function warnOnce2(message) {\n if (printed[message]) return;\n printed[message] = true;\n if (typeof console !== \"undefined\" && console.warn) {\n console.warn(message);\n }\n};\nlet Warning$2 = class Warning2 {\n constructor(text, opts = {}) {\n this.type = \"warning\";\n this.text = text;\n if (opts.node && opts.node.source) {\n let range = opts.node.rangeBy(opts);\n this.line = range.start.line;\n this.column = range.start.column;\n this.endLine = range.end.line;\n this.endColumn = range.end.column;\n }\n for (let opt in opts) this[opt] = opts[opt];\n }\n toString() {\n if (this.node) {\n return this.node.error(this.text, {\n index: this.index,\n plugin: this.plugin,\n word: this.word\n }).message;\n }\n if (this.plugin) {\n return this.plugin + \": \" + this.text;\n }\n return this.text;\n }\n};\nvar warning = Warning$2;\nWarning$2.default = Warning$2;\nlet Warning$1 = warning;\nlet Result$3 = class Result2 {\n constructor(processor2, root2, opts) {\n this.processor = processor2;\n this.messages = [];\n this.root = root2;\n this.opts = opts;\n this.css = void 0;\n this.map = void 0;\n }\n toString() {\n return this.css;\n }\n warn(text, opts = {}) {\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin;\n }\n }\n let warning2 = new Warning$1(text, opts);\n this.messages.push(warning2);\n return warning2;\n }\n warnings() {\n return this.messages.filter((i2) => i2.type === \"warning\");\n }\n get content() {\n return this.css;\n }\n};\nvar result = Result$3;\nResult$3.default = Result$3;\nconst SINGLE_QUOTE = \"'\".charCodeAt(0);\nconst DOUBLE_QUOTE = '\"'.charCodeAt(0);\nconst BACKSLASH = \"\\\\\".charCodeAt(0);\nconst SLASH = \"/\".charCodeAt(0);\nconst NEWLINE = \"\\n\".charCodeAt(0);\nconst SPACE = \" \".charCodeAt(0);\nconst FEED = \"\\f\".charCodeAt(0);\nconst TAB = \"\t\".charCodeAt(0);\nconst CR = \"\\r\".charCodeAt(0);\nconst OPEN_SQUARE = \"[\".charCodeAt(0);\nconst CLOSE_SQUARE = \"]\".charCodeAt(0);\nconst OPEN_PARENTHESES = \"(\".charCodeAt(0);\nconst CLOSE_PARENTHESES = \")\".charCodeAt(0);\nconst OPEN_CURLY = \"{\".charCodeAt(0);\nconst CLOSE_CURLY = \"}\".charCodeAt(0);\nconst SEMICOLON = \";\".charCodeAt(0);\nconst ASTERISK = \"*\".charCodeAt(0);\nconst COLON = \":\".charCodeAt(0);\nconst AT = \"@\".charCodeAt(0);\nconst RE_AT_END = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g;\nconst RE_WORD_END = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g;\nconst RE_BAD_BRACKET = /.[\\r\\n\"'(/\\\\]/;\nconst RE_HEX_ESCAPE = /[\\da-f]/i;\nvar tokenize = function tokenizer2(input2, options = {}) {\n let css = input2.css.valueOf();\n let ignore = options.ignoreErrors;\n let code, next, quote, content, escape;\n let escaped, escapePos, prev, n2, currentToken;\n let length = css.length;\n let pos = 0;\n let buffer = [];\n let returned = [];\n function position() {\n return pos;\n }\n function unclosed(what) {\n throw input2.error(\"Unclosed \" + what, pos);\n }\n function endOfFile() {\n return returned.length === 0 && pos >= length;\n }\n function nextToken(opts) {\n if (returned.length) return returned.pop();\n if (pos >= length) return;\n let ignoreUnclosed = opts ? opts.ignoreUnclosed : false;\n code = css.charCodeAt(pos);\n switch (code) {\n case NEWLINE:\n case SPACE:\n case TAB:\n case CR:\n case FEED: {\n next = pos;\n do {\n next += 1;\n code = css.charCodeAt(next);\n } while (code === SPACE || code === NEWLINE || code === TAB || code === CR || code === FEED);\n currentToken = [\"space\", css.slice(pos, next)];\n pos = next - 1;\n break;\n }\n case OPEN_SQUARE:\n case CLOSE_SQUARE:\n case OPEN_CURLY:\n case CLOSE_CURLY:\n case COLON:\n case SEMICOLON:\n case CLOSE_PARENTHESES: {\n let controlChar = String.fromCharCode(code);\n currentToken = [controlChar, controlChar, pos];\n break;\n }\n case OPEN_PARENTHESES: {\n prev = buffer.length ? buffer.pop()[1] : \"\";\n n2 = css.charCodeAt(pos + 1);\n if (prev === \"url\" && n2 !== SINGLE_QUOTE && n2 !== DOUBLE_QUOTE && n2 !== SPACE && n2 !== NEWLINE && n2 !== TAB && n2 !== FEED && n2 !== CR) {\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(\")\", next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos;\n break;\n } else {\n unclosed(\"bracket\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"brackets\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n next = css.indexOf(\")\", pos + 1);\n content = css.slice(pos, next + 1);\n if (next === -1 || RE_BAD_BRACKET.test(content)) {\n currentToken = [\"(\", \"(\", pos];\n } else {\n currentToken = [\"brackets\", content, pos, next];\n pos = next;\n }\n }\n break;\n }\n case SINGLE_QUOTE:\n case DOUBLE_QUOTE: {\n quote = code === SINGLE_QUOTE ? \"'\" : '\"';\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(quote, next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos + 1;\n break;\n } else {\n unclosed(\"string\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"string\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case AT: {\n RE_AT_END.lastIndex = pos + 1;\n RE_AT_END.test(css);\n if (RE_AT_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_AT_END.lastIndex - 2;\n }\n currentToken = [\"at-word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case BACKSLASH: {\n next = pos;\n escape = true;\n while (css.charCodeAt(next + 1) === BACKSLASH) {\n next += 1;\n escape = !escape;\n }\n code = css.charCodeAt(next + 1);\n if (escape && code !== SLASH && code !== SPACE && code !== NEWLINE && code !== TAB && code !== CR && code !== FEED) {\n next += 1;\n if (RE_HEX_ESCAPE.test(css.charAt(next))) {\n while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {\n next += 1;\n }\n if (css.charCodeAt(next + 1) === SPACE) {\n next += 1;\n }\n }\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n default: {\n if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {\n next = css.indexOf(\"*/\", pos + 2) + 1;\n if (next === 0) {\n if (ignore || ignoreUnclosed) {\n next = css.length;\n } else {\n unclosed(\"comment\");\n }\n }\n currentToken = [\"comment\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n RE_WORD_END.lastIndex = pos + 1;\n RE_WORD_END.test(css);\n if (RE_WORD_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_WORD_END.lastIndex - 2;\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n buffer.push(currentToken);\n pos = next;\n }\n break;\n }\n }\n pos++;\n return currentToken;\n }\n function back(token) {\n returned.push(token);\n }\n return {\n back,\n endOfFile,\n nextToken,\n position\n };\n};\nlet Container$5 = container;\nlet AtRule$3 = class AtRule2 extends Container$5 {\n constructor(defaults) {\n super(defaults);\n this.type = \"atrule\";\n }\n append(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.append(...children);\n }\n prepend(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.prepend(...children);\n }\n};\nvar atRule = AtRule$3;\nAtRule$3.default = AtRule$3;\nContainer$5.registerAtRule(AtRule$3);\nlet Container$4 = container;\nlet LazyResult$3, Processor$2;\nlet Root$5 = class Root2 extends Container$4 {\n constructor(defaults) {\n super(defaults);\n this.type = \"root\";\n if (!this.nodes) this.nodes = [];\n }\n normalize(child, sample, type) {\n let nodes = super.normalize(child);\n if (sample) {\n if (type === \"prepend\") {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before;\n } else {\n delete sample.raws.before;\n }\n } else if (this.first !== sample) {\n for (let node2 of nodes) {\n node2.raws.before = sample.raws.before;\n }\n }\n }\n return nodes;\n }\n removeChild(child, ignore) {\n let index2 = this.index(child);\n if (!ignore && index2 === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index2].raws.before;\n }\n return super.removeChild(child);\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$3(new Processor$2(), this, opts);\n return lazy.stringify();\n }\n};\nRoot$5.registerLazyResult = (dependant) => {\n LazyResult$3 = dependant;\n};\nRoot$5.registerProcessor = (dependant) => {\n Processor$2 = dependant;\n};\nvar root = Root$5;\nRoot$5.default = Root$5;\nContainer$4.registerRoot(Root$5);\nlet list$2 = {\n comma(string) {\n return list$2.split(string, [\",\"], true);\n },\n space(string) {\n let spaces = [\" \", \"\\n\", \"\t\"];\n return list$2.split(string, spaces);\n },\n split(string, separators, last) {\n let array = [];\n let current = \"\";\n let split = false;\n let func = 0;\n let inQuote = false;\n let prevQuote = \"\";\n let escape = false;\n for (let letter of string) {\n if (escape) {\n escape = false;\n } else if (letter === \"\\\\\") {\n escape = true;\n } else if (inQuote) {\n if (letter === prevQuote) {\n inQuote = false;\n }\n } else if (letter === '\"' || letter === \"'\") {\n inQuote = true;\n prevQuote = letter;\n } else if (letter === \"(\") {\n func += 1;\n } else if (letter === \")\") {\n if (func > 0) func -= 1;\n } else if (func === 0) {\n if (separators.includes(letter)) split = true;\n }\n if (split) {\n if (current !== \"\") array.push(current.trim());\n current = \"\";\n split = false;\n } else {\n current += letter;\n }\n }\n if (last || current !== \"\") array.push(current.trim());\n return array;\n }\n};\nvar list_1 = list$2;\nlist$2.default = list$2;\nlet Container$3 = container;\nlet list$1 = list_1;\nlet Rule$3 = class Rule2 extends Container$3 {\n constructor(defaults) {\n super(defaults);\n this.type = \"rule\";\n if (!this.nodes) this.nodes = [];\n }\n get selectors() {\n return list$1.comma(this.selector);\n }\n set selectors(values) {\n let match = this.selector ? this.selector.match(/,\\s*/) : null;\n let sep2 = match ? match[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n this.selector = values.join(sep2);\n }\n};\nvar rule = Rule$3;\nRule$3.default = Rule$3;\nContainer$3.registerRule(Rule$3);\nlet Declaration$2 = declaration;\nlet tokenizer22 = tokenize;\nlet Comment$2 = comment;\nlet AtRule$2 = atRule;\nlet Root$4 = root;\nlet Rule$2 = rule;\nconst SAFE_COMMENT_NEIGHBOR = {\n empty: true,\n space: true\n};\nfunction findLastWithPosition(tokens) {\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n let token = tokens[i2];\n let pos = token[3] || token[2];\n if (pos) return pos;\n }\n}\nlet Parser$1 = class Parser2 {\n constructor(input2) {\n this.input = input2;\n this.root = new Root$4();\n this.current = this.root;\n this.spaces = \"\";\n this.semicolon = false;\n this.createTokenizer();\n this.root.source = { input: input2, start: { column: 1, line: 1, offset: 0 } };\n }\n atrule(token) {\n let node2 = new AtRule$2();\n node2.name = token[1].slice(1);\n if (node2.name === \"\") {\n this.unnamedAtrule(node2, token);\n }\n this.init(node2, token[2]);\n let type;\n let prev;\n let shift;\n let last = false;\n let open = false;\n let params = [];\n let brackets = [];\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n type = token[0];\n if (type === \"(\" || type === \"[\") {\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (type === \"{\" && brackets.length > 0) {\n brackets.push(\"}\");\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n }\n if (brackets.length === 0) {\n if (type === \";\") {\n node2.source.end = this.getPosition(token[2]);\n node2.source.end.offset++;\n this.semicolon = true;\n break;\n } else if (type === \"{\") {\n open = true;\n break;\n } else if (type === \"}\") {\n if (params.length > 0) {\n shift = params.length - 1;\n prev = params[shift];\n while (prev && prev[0] === \"space\") {\n prev = params[--shift];\n }\n if (prev) {\n node2.source.end = this.getPosition(prev[3] || prev[2]);\n node2.source.end.offset++;\n }\n }\n this.end(token);\n break;\n } else {\n params.push(token);\n }\n } else {\n params.push(token);\n }\n if (this.tokenizer.endOfFile()) {\n last = true;\n break;\n }\n }\n node2.raws.between = this.spacesAndCommentsFromEnd(params);\n if (params.length) {\n node2.raws.afterName = this.spacesAndCommentsFromStart(params);\n this.raw(node2, \"params\", params);\n if (last) {\n token = params[params.length - 1];\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n this.spaces = node2.raws.between;\n node2.raws.between = \"\";\n }\n } else {\n node2.raws.afterName = \"\";\n node2.params = \"\";\n }\n if (open) {\n node2.nodes = [];\n this.current = node2;\n }\n }\n checkMissedSemicolon(tokens) {\n let colon = this.colon(tokens);\n if (colon === false) return;\n let founded = 0;\n let token;\n for (let j = colon - 1; j >= 0; j--) {\n token = tokens[j];\n if (token[0] !== \"space\") {\n founded += 1;\n if (founded === 2) break;\n }\n }\n throw this.input.error(\n \"Missed semicolon\",\n token[0] === \"word\" ? token[3] + 1 : token[2]\n );\n }\n colon(tokens) {\n let brackets = 0;\n let token, type, prev;\n for (let [i2, element] of tokens.entries()) {\n token = element;\n type = token[0];\n if (type === \"(\") {\n brackets += 1;\n }\n if (type === \")\") {\n brackets -= 1;\n }\n if (brackets === 0 && type === \":\") {\n if (!prev) {\n this.doubleColon(token);\n } else if (prev[0] === \"word\" && prev[1] === \"progid\") {\n continue;\n } else {\n return i2;\n }\n }\n prev = token;\n }\n return false;\n }\n comment(token) {\n let node2 = new Comment$2();\n this.init(node2, token[2]);\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n let text = token[1].slice(2, -2);\n if (/^\\s*$/.test(text)) {\n node2.text = \"\";\n node2.raws.left = text;\n node2.raws.right = \"\";\n } else {\n let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n node2.text = match[2];\n node2.raws.left = match[1];\n node2.raws.right = match[3];\n }\n }\n createTokenizer() {\n this.tokenizer = tokenizer22(this.input);\n }\n decl(tokens, customProperty) {\n let node2 = new Declaration$2();\n this.init(node2, tokens[0][2]);\n let last = tokens[tokens.length - 1];\n if (last[0] === \";\") {\n this.semicolon = true;\n tokens.pop();\n }\n node2.source.end = this.getPosition(\n last[3] || last[2] || findLastWithPosition(tokens)\n );\n node2.source.end.offset++;\n while (tokens[0][0] !== \"word\") {\n if (tokens.length === 1) this.unknownWord(tokens);\n node2.raws.before += tokens.shift()[1];\n }\n node2.source.start = this.getPosition(tokens[0][2]);\n node2.prop = \"\";\n while (tokens.length) {\n let type = tokens[0][0];\n if (type === \":\" || type === \"space\" || type === \"comment\") {\n break;\n }\n node2.prop += tokens.shift()[1];\n }\n node2.raws.between = \"\";\n let token;\n while (tokens.length) {\n token = tokens.shift();\n if (token[0] === \":\") {\n node2.raws.between += token[1];\n break;\n } else {\n if (token[0] === \"word\" && /\\w/.test(token[1])) {\n this.unknownWord([token]);\n }\n node2.raws.between += token[1];\n }\n }\n if (node2.prop[0] === \"_\" || node2.prop[0] === \"*\") {\n node2.raws.before += node2.prop[0];\n node2.prop = node2.prop.slice(1);\n }\n let firstSpaces = [];\n let next;\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n firstSpaces.push(tokens.shift());\n }\n this.precheckMissedSemicolon(tokens);\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n token = tokens[i2];\n if (token[1].toLowerCase() === \"!important\") {\n node2.important = true;\n let string = this.stringFrom(tokens, i2);\n string = this.spacesFromEnd(tokens) + string;\n if (string !== \" !important\") node2.raws.important = string;\n break;\n } else if (token[1].toLowerCase() === \"important\") {\n let cache = tokens.slice(0);\n let str = \"\";\n for (let j = i2; j > 0; j--) {\n let type = cache[j][0];\n if (str.trim().indexOf(\"!\") === 0 && type !== \"space\") {\n break;\n }\n str = cache.pop()[1] + str;\n }\n if (str.trim().indexOf(\"!\") === 0) {\n node2.important = true;\n node2.raws.important = str;\n tokens = cache;\n }\n }\n if (token[0] !== \"space\" && token[0] !== \"comment\") {\n break;\n }\n }\n let hasWord = tokens.some((i2) => i2[0] !== \"space\" && i2[0] !== \"comment\");\n if (hasWord) {\n node2.raws.between += firstSpaces.map((i2) => i2[1]).join(\"\");\n firstSpaces = [];\n }\n this.raw(node2, \"value\", firstSpaces.concat(tokens), customProperty);\n if (node2.value.includes(\":\") && !customProperty) {\n this.checkMissedSemicolon(tokens);\n }\n }\n doubleColon(token) {\n throw this.input.error(\n \"Double colon\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n emptyRule(token) {\n let node2 = new Rule$2();\n this.init(node2, token[2]);\n node2.selector = \"\";\n node2.raws.between = \"\";\n this.current = node2;\n }\n end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.semicolon = false;\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.spaces = \"\";\n if (this.current.parent) {\n this.current.source.end = this.getPosition(token[2]);\n this.current.source.end.offset++;\n this.current = this.current.parent;\n } else {\n this.unexpectedClose(token);\n }\n }\n endFile() {\n if (this.current.parent) this.unclosedBlock();\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.root.source.end = this.getPosition(this.tokenizer.position());\n }\n freeSemicolon(token) {\n this.spaces += token[1];\n if (this.current.nodes) {\n let prev = this.current.nodes[this.current.nodes.length - 1];\n if (prev && prev.type === \"rule\" && !prev.raws.ownSemicolon) {\n prev.raws.ownSemicolon = this.spaces;\n this.spaces = \"\";\n }\n }\n }\n // Helpers\n getPosition(offset) {\n let pos = this.input.fromOffset(offset);\n return {\n column: pos.col,\n line: pos.line,\n offset\n };\n }\n init(node2, offset) {\n this.current.push(node2);\n node2.source = {\n input: this.input,\n start: this.getPosition(offset)\n };\n node2.raws.before = this.spaces;\n this.spaces = \"\";\n if (node2.type !== \"comment\") this.semicolon = false;\n }\n other(start) {\n let end = false;\n let type = null;\n let colon = false;\n let bracket = null;\n let brackets = [];\n let customProperty = start[1].startsWith(\"--\");\n let tokens = [];\n let token = start;\n while (token) {\n type = token[0];\n tokens.push(token);\n if (type === \"(\" || type === \"[\") {\n if (!bracket) bracket = token;\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (customProperty && colon && type === \"{\") {\n if (!bracket) bracket = token;\n brackets.push(\"}\");\n } else if (brackets.length === 0) {\n if (type === \";\") {\n if (colon) {\n this.decl(tokens, customProperty);\n return;\n } else {\n break;\n }\n } else if (type === \"{\") {\n this.rule(tokens);\n return;\n } else if (type === \"}\") {\n this.tokenizer.back(tokens.pop());\n end = true;\n break;\n } else if (type === \":\") {\n colon = true;\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n if (brackets.length === 0) bracket = null;\n }\n token = this.tokenizer.nextToken();\n }\n if (this.tokenizer.endOfFile()) end = true;\n if (brackets.length > 0) this.unclosedBracket(bracket);\n if (end && colon) {\n if (!customProperty) {\n while (tokens.length) {\n token = tokens[tokens.length - 1][0];\n if (token !== \"space\" && token !== \"comment\") break;\n this.tokenizer.back(tokens.pop());\n }\n }\n this.decl(tokens, customProperty);\n } else {\n this.unknownWord(tokens);\n }\n }\n parse() {\n let token;\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n switch (token[0]) {\n case \"space\":\n this.spaces += token[1];\n break;\n case \";\":\n this.freeSemicolon(token);\n break;\n case \"}\":\n this.end(token);\n break;\n case \"comment\":\n this.comment(token);\n break;\n case \"at-word\":\n this.atrule(token);\n break;\n case \"{\":\n this.emptyRule(token);\n break;\n default:\n this.other(token);\n break;\n }\n }\n this.endFile();\n }\n precheckMissedSemicolon() {\n }\n raw(node2, prop, tokens, customProperty) {\n let token, type;\n let length = tokens.length;\n let value = \"\";\n let clean = true;\n let next, prev;\n for (let i2 = 0; i2 < length; i2 += 1) {\n token = tokens[i2];\n type = token[0];\n if (type === \"space\" && i2 === length - 1 && !customProperty) {\n clean = false;\n } else if (type === \"comment\") {\n prev = tokens[i2 - 1] ? tokens[i2 - 1][0] : \"empty\";\n next = tokens[i2 + 1] ? tokens[i2 + 1][0] : \"empty\";\n if (!SAFE_COMMENT_NEIGHBOR[prev] && !SAFE_COMMENT_NEIGHBOR[next]) {\n if (value.slice(-1) === \",\") {\n clean = false;\n } else {\n value += token[1];\n }\n } else {\n clean = false;\n }\n } else {\n value += token[1];\n }\n }\n if (!clean) {\n let raw = tokens.reduce((all, i2) => all + i2[1], \"\");\n node2.raws[prop] = { raw, value };\n }\n node2[prop] = value;\n }\n rule(tokens) {\n tokens.pop();\n let node2 = new Rule$2();\n this.init(node2, tokens[0][2]);\n node2.raws.between = this.spacesAndCommentsFromEnd(tokens);\n this.raw(node2, \"selector\", tokens);\n this.current = node2;\n }\n spacesAndCommentsFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\" && lastTokenType !== \"comment\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n // Errors\n spacesAndCommentsFromStart(tokens) {\n let next;\n let spaces = \"\";\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n spaces += tokens.shift()[1];\n }\n return spaces;\n }\n spacesFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n stringFrom(tokens, from) {\n let result2 = \"\";\n for (let i2 = from; i2 < tokens.length; i2++) {\n result2 += tokens[i2][1];\n }\n tokens.splice(from, tokens.length - from);\n return result2;\n }\n unclosedBlock() {\n let pos = this.current.source.start;\n throw this.input.error(\"Unclosed block\", pos.line, pos.column);\n }\n unclosedBracket(bracket) {\n throw this.input.error(\n \"Unclosed bracket\",\n { offset: bracket[2] },\n { offset: bracket[2] + 1 }\n );\n }\n unexpectedClose(token) {\n throw this.input.error(\n \"Unexpected }\",\n { offset: token[2] },\n { offset: token[2] + 1 }\n );\n }\n unknownWord(tokens) {\n throw this.input.error(\n \"Unknown word\",\n { offset: tokens[0][2] },\n { offset: tokens[0][2] + tokens[0][1].length }\n );\n }\n unnamedAtrule(node2, token) {\n throw this.input.error(\n \"At-rule without name\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n};\nvar parser = Parser$1;\nlet Container$2 = container;\nlet Parser22 = parser;\nlet Input$2 = input;\nfunction parse$3(css, opts) {\n let input2 = new Input$2(css, opts);\n let parser2 = new Parser22(input2);\n try {\n parser2.parse();\n } catch (e2) {\n if (process.env.NODE_ENV !== \"production\") {\n if (e2.name === \"CssSyntaxError\" && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser\";\n } else if (/\\.sass/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser\";\n } else if (/\\.less$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser\";\n }\n }\n }\n throw e2;\n }\n return parser2.root;\n}\nvar parse_1 = parse$3;\nparse$3.default = parse$3;\nContainer$2.registerParse(parse$3);\nlet { isClean, my } = symbols;\nlet MapGenerator$1 = mapGenerator;\nlet stringify$2 = stringify_1;\nlet Container$1 = container;\nlet Document$2 = document$1;\nlet warnOnce$1 = warnOnce$2;\nlet Result$2 = result;\nlet parse$2 = parse_1;\nlet Root$3 = root;\nconst TYPE_TO_CLASS_NAME = {\n atrule: \"AtRule\",\n comment: \"Comment\",\n decl: \"Declaration\",\n document: \"Document\",\n root: \"Root\",\n rule: \"Rule\"\n};\nconst PLUGIN_PROPS = {\n AtRule: true,\n AtRuleExit: true,\n Comment: true,\n CommentExit: true,\n Declaration: true,\n DeclarationExit: true,\n Document: true,\n DocumentExit: true,\n Once: true,\n OnceExit: true,\n postcssPlugin: true,\n prepare: true,\n Root: true,\n RootExit: true,\n Rule: true,\n RuleExit: true\n};\nconst NOT_VISITORS = {\n Once: true,\n postcssPlugin: true,\n prepare: true\n};\nconst CHILDREN = 0;\nfunction isPromise(obj) {\n return typeof obj === \"object\" && typeof obj.then === \"function\";\n}\nfunction getEvents(node2) {\n let key = false;\n let type = TYPE_TO_CLASS_NAME[node2.type];\n if (node2.type === \"decl\") {\n key = node2.prop.toLowerCase();\n } else if (node2.type === \"atrule\") {\n key = node2.name.toLowerCase();\n }\n if (key && node2.append) {\n return [\n type,\n type + \"-\" + key,\n CHILDREN,\n type + \"Exit\",\n type + \"Exit-\" + key\n ];\n } else if (key) {\n return [type, type + \"-\" + key, type + \"Exit\", type + \"Exit-\" + key];\n } else if (node2.append) {\n return [type, CHILDREN, type + \"Exit\"];\n } else {\n return [type, type + \"Exit\"];\n }\n}\nfunction toStack(node2) {\n let events;\n if (node2.type === \"document\") {\n events = [\"Document\", CHILDREN, \"DocumentExit\"];\n } else if (node2.type === \"root\") {\n events = [\"Root\", CHILDREN, \"RootExit\"];\n } else {\n events = getEvents(node2);\n }\n return {\n eventIndex: 0,\n events,\n iterator: 0,\n node: node2,\n visitorIndex: 0,\n visitors: []\n };\n}\nfunction cleanMarks(node2) {\n node2[isClean] = false;\n if (node2.nodes) node2.nodes.forEach((i2) => cleanMarks(i2));\n return node2;\n}\nlet postcss$2 = {};\nlet LazyResult$2 = class LazyResult2 {\n constructor(processor2, css, opts) {\n this.stringified = false;\n this.processed = false;\n let root2;\n if (typeof css === \"object\" && css !== null && (css.type === \"root\" || css.type === \"document\")) {\n root2 = cleanMarks(css);\n } else if (css instanceof LazyResult2 || css instanceof Result$2) {\n root2 = cleanMarks(css.root);\n if (css.map) {\n if (typeof opts.map === \"undefined\") opts.map = {};\n if (!opts.map.inline) opts.map.inline = false;\n opts.map.prev = css.map;\n }\n } else {\n let parser2 = parse$2;\n if (opts.syntax) parser2 = opts.syntax.parse;\n if (opts.parser) parser2 = opts.parser;\n if (parser2.parse) parser2 = parser2.parse;\n try {\n root2 = parser2(css, opts);\n } catch (error) {\n this.processed = true;\n this.error = error;\n }\n if (root2 && !root2[my]) {\n Container$1.rebuild(root2);\n }\n }\n this.result = new Result$2(processor2, root2, opts);\n this.helpers = { ...postcss$2, postcss: postcss$2, result: this.result };\n this.plugins = this.processor.plugins.map((plugin22) => {\n if (typeof plugin22 === \"object\" && plugin22.prepare) {\n return { ...plugin22, ...plugin22.prepare(this.result) };\n } else {\n return plugin22;\n }\n });\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n if (this.processed) return Promise.resolve(this.result);\n if (!this.processing) {\n this.processing = this.runAsync();\n }\n return this.processing;\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n getAsyncError() {\n throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n }\n handleError(error, node2) {\n let plugin22 = this.result.lastPlugin;\n try {\n if (node2) node2.addToError(error);\n this.error = error;\n if (error.name === \"CssSyntaxError\" && !error.plugin) {\n error.plugin = plugin22.postcssPlugin;\n error.setMessage();\n } else if (plugin22.postcssVersion) {\n if (process.env.NODE_ENV !== \"production\") {\n let pluginName = plugin22.postcssPlugin;\n let pluginVer = plugin22.postcssVersion;\n let runtimeVer = this.result.processor.version;\n let a2 = pluginVer.split(\".\");\n let b = runtimeVer.split(\".\");\n if (a2[0] !== b[0] || parseInt(a2[1]) > parseInt(b[1])) {\n console.error(\n \"Unknown error from PostCSS plugin. Your current PostCSS version is \" + runtimeVer + \", but \" + pluginName + \" uses \" + pluginVer + \". Perhaps this is the source of the error below.\"\n );\n }\n }\n }\n } catch (err) {\n if (console && console.error) console.error(err);\n }\n return error;\n }\n prepareVisitors() {\n this.listeners = {};\n let add = (plugin22, type, cb) => {\n if (!this.listeners[type]) this.listeners[type] = [];\n this.listeners[type].push([plugin22, cb]);\n };\n for (let plugin22 of this.plugins) {\n if (typeof plugin22 === \"object\") {\n for (let event in plugin22) {\n if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) {\n throw new Error(\n `Unknown event ${event} in ${plugin22.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`\n );\n }\n if (!NOT_VISITORS[event]) {\n if (typeof plugin22[event] === \"object\") {\n for (let filter in plugin22[event]) {\n if (filter === \"*\") {\n add(plugin22, event, plugin22[event][filter]);\n } else {\n add(\n plugin22,\n event + \"-\" + filter.toLowerCase(),\n plugin22[event][filter]\n );\n }\n }\n } else if (typeof plugin22[event] === \"function\") {\n add(plugin22, event, plugin22[event]);\n }\n }\n }\n }\n }\n this.hasListener = Object.keys(this.listeners).length > 0;\n }\n async runAsync() {\n this.plugin = 0;\n for (let i2 = 0; i2 < this.plugins.length; i2++) {\n let plugin22 = this.plugins[i2];\n let promise = this.runOnRoot(plugin22);\n if (isPromise(promise)) {\n try {\n await promise;\n } catch (error) {\n throw this.handleError(error);\n }\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean]) {\n root2[isClean] = true;\n let stack = [toStack(root2)];\n while (stack.length > 0) {\n let promise = this.visitTick(stack);\n if (isPromise(promise)) {\n try {\n await promise;\n } catch (e2) {\n let node2 = stack[stack.length - 1].node;\n throw this.handleError(e2, node2);\n }\n }\n }\n }\n if (this.listeners.OnceExit) {\n for (let [plugin22, visitor] of this.listeners.OnceExit) {\n this.result.lastPlugin = plugin22;\n try {\n if (root2.type === \"document\") {\n let roots = root2.nodes.map(\n (subRoot) => visitor(subRoot, this.helpers)\n );\n await Promise.all(roots);\n } else {\n await visitor(root2, this.helpers);\n }\n } catch (e2) {\n throw this.handleError(e2);\n }\n }\n }\n }\n this.processed = true;\n return this.stringify();\n }\n runOnRoot(plugin22) {\n this.result.lastPlugin = plugin22;\n try {\n if (typeof plugin22 === \"object\" && plugin22.Once) {\n if (this.result.root.type === \"document\") {\n let roots = this.result.root.nodes.map(\n (root2) => plugin22.Once(root2, this.helpers)\n );\n if (isPromise(roots[0])) {\n return Promise.all(roots);\n }\n return roots;\n }\n return plugin22.Once(this.result.root, this.helpers);\n } else if (typeof plugin22 === \"function\") {\n return plugin22(this.result.root, this.result);\n }\n } catch (error) {\n throw this.handleError(error);\n }\n }\n stringify() {\n if (this.error) throw this.error;\n if (this.stringified) return this.result;\n this.stringified = true;\n this.sync();\n let opts = this.result.opts;\n let str = stringify$2;\n if (opts.syntax) str = opts.syntax.stringify;\n if (opts.stringifier) str = opts.stringifier;\n if (str.stringify) str = str.stringify;\n let map = new MapGenerator$1(str, this.result.root, this.result.opts);\n let data = map.generate();\n this.result.css = data[0];\n this.result.map = data[1];\n return this.result;\n }\n sync() {\n if (this.error) throw this.error;\n if (this.processed) return this.result;\n this.processed = true;\n if (this.processing) {\n throw this.getAsyncError();\n }\n for (let plugin22 of this.plugins) {\n let promise = this.runOnRoot(plugin22);\n if (isPromise(promise)) {\n throw this.getAsyncError();\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean]) {\n root2[isClean] = true;\n this.walkSync(root2);\n }\n if (this.listeners.OnceExit) {\n if (root2.type === \"document\") {\n for (let subRoot of root2.nodes) {\n this.visitSync(this.listeners.OnceExit, subRoot);\n }\n } else {\n this.visitSync(this.listeners.OnceExit, root2);\n }\n }\n }\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this.opts)) {\n warnOnce$1(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this.css;\n }\n visitSync(visitors, node2) {\n for (let [plugin22, visitor] of visitors) {\n this.result.lastPlugin = plugin22;\n let promise;\n try {\n promise = visitor(node2, this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2.proxyOf);\n }\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n return true;\n }\n if (isPromise(promise)) {\n throw this.getAsyncError();\n }\n }\n }\n visitTick(stack) {\n let visit2 = stack[stack.length - 1];\n let { node: node2, visitors } = visit2;\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n stack.pop();\n return;\n }\n if (visitors.length > 0 && visit2.visitorIndex < visitors.length) {\n let [plugin22, visitor] = visitors[visit2.visitorIndex];\n visit2.visitorIndex += 1;\n if (visit2.visitorIndex === visitors.length) {\n visit2.visitors = [];\n visit2.visitorIndex = 0;\n }\n this.result.lastPlugin = plugin22;\n try {\n return visitor(node2.toProxy(), this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2);\n }\n }\n if (visit2.iterator !== 0) {\n let iterator = visit2.iterator;\n let child;\n while (child = node2.nodes[node2.indexes[iterator]]) {\n node2.indexes[iterator] += 1;\n if (!child[isClean]) {\n child[isClean] = true;\n stack.push(toStack(child));\n return;\n }\n }\n visit2.iterator = 0;\n delete node2.indexes[iterator];\n }\n let events = visit2.events;\n while (visit2.eventIndex < events.length) {\n let event = events[visit2.eventIndex];\n visit2.eventIndex += 1;\n if (event === CHILDREN) {\n if (node2.nodes && node2.nodes.length) {\n node2[isClean] = true;\n visit2.iterator = node2.getIterator();\n }\n return;\n } else if (this.listeners[event]) {\n visit2.visitors = this.listeners[event];\n return;\n }\n }\n stack.pop();\n }\n walkSync(node2) {\n node2[isClean] = true;\n let events = getEvents(node2);\n for (let event of events) {\n if (event === CHILDREN) {\n if (node2.nodes) {\n node2.each((child) => {\n if (!child[isClean]) this.walkSync(child);\n });\n }\n } else {\n let visitors = this.listeners[event];\n if (visitors) {\n if (this.visitSync(visitors, node2.toProxy())) return;\n }\n }\n }\n }\n warnings() {\n return this.sync().warnings();\n }\n get content() {\n return this.stringify().content;\n }\n get css() {\n return this.stringify().css;\n }\n get map() {\n return this.stringify().map;\n }\n get messages() {\n return this.sync().messages;\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n return this.sync().root;\n }\n get [Symbol.toStringTag]() {\n return \"LazyResult\";\n }\n};\nLazyResult$2.registerPostcss = (dependant) => {\n postcss$2 = dependant;\n};\nvar lazyResult = LazyResult$2;\nLazyResult$2.default = LazyResult$2;\nRoot$3.registerLazyResult(LazyResult$2);\nDocument$2.registerLazyResult(LazyResult$2);\nlet MapGenerator22 = mapGenerator;\nlet stringify$1 = stringify_1;\nlet warnOnce22 = warnOnce$2;\nlet parse$1 = parse_1;\nconst Result$1 = result;\nlet NoWorkResult$1 = class NoWorkResult2 {\n constructor(processor2, css, opts) {\n css = css.toString();\n this.stringified = false;\n this._processor = processor2;\n this._css = css;\n this._opts = opts;\n this._map = void 0;\n let root2;\n let str = stringify$1;\n this.result = new Result$1(this._processor, root2, this._opts);\n this.result.css = css;\n let self = this;\n Object.defineProperty(this.result, \"root\", {\n get() {\n return self.root;\n }\n });\n let map = new MapGenerator22(str, root2, this._opts, css);\n if (map.isMap()) {\n let [generatedCSS, generatedMap] = map.generate();\n if (generatedCSS) {\n this.result.css = generatedCSS;\n }\n if (generatedMap) {\n this.result.map = generatedMap;\n }\n } else {\n map.clearAnnotation();\n this.result.css = map.css;\n }\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n return Promise.resolve(this.result);\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n sync() {\n if (this.error) throw this.error;\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this._opts)) {\n warnOnce22(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this._css;\n }\n warnings() {\n return [];\n }\n get content() {\n return this.result.css;\n }\n get css() {\n return this.result.css;\n }\n get map() {\n return this.result.map;\n }\n get messages() {\n return [];\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n if (this._root) {\n return this._root;\n }\n let root2;\n let parser2 = parse$1;\n try {\n root2 = parser2(this._css, this._opts);\n } catch (error) {\n this.error = error;\n }\n if (this.error) {\n throw this.error;\n } else {\n this._root = root2;\n return root2;\n }\n }\n get [Symbol.toStringTag]() {\n return \"NoWorkResult\";\n }\n};\nvar noWorkResult = NoWorkResult$1;\nNoWorkResult$1.default = NoWorkResult$1;\nlet NoWorkResult22 = noWorkResult;\nlet LazyResult$1 = lazyResult;\nlet Document$1 = document$1;\nlet Root$2 = root;\nlet Processor$1 = class Processor2 {\n constructor(plugins = []) {\n this.version = \"8.4.38\";\n this.plugins = this.normalize(plugins);\n }\n normalize(plugins) {\n let normalized = [];\n for (let i2 of plugins) {\n if (i2.postcss === true) {\n i2 = i2();\n } else if (i2.postcss) {\n i2 = i2.postcss;\n }\n if (typeof i2 === \"object\" && Array.isArray(i2.plugins)) {\n normalized = normalized.concat(i2.plugins);\n } else if (typeof i2 === \"object\" && i2.postcssPlugin) {\n normalized.push(i2);\n } else if (typeof i2 === \"function\") {\n normalized.push(i2);\n } else if (typeof i2 === \"object\" && (i2.parse || i2.stringify)) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error(\n \"PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.\"\n );\n }\n } else {\n throw new Error(i2 + \" is not a PostCSS plugin\");\n }\n }\n return normalized;\n }\n process(css, opts = {}) {\n if (!this.plugins.length && !opts.parser && !opts.stringifier && !opts.syntax) {\n return new NoWorkResult22(this, css, opts);\n } else {\n return new LazyResult$1(this, css, opts);\n }\n }\n use(plugin22) {\n this.plugins = this.plugins.concat(this.normalize([plugin22]));\n return this;\n }\n};\nvar processor = Processor$1;\nProcessor$1.default = Processor$1;\nRoot$2.registerProcessor(Processor$1);\nDocument$1.registerProcessor(Processor$1);\nlet Declaration$1 = declaration;\nlet PreviousMap22 = previousMap;\nlet Comment$1 = comment;\nlet AtRule$1 = atRule;\nlet Input$1 = input;\nlet Root$1 = root;\nlet Rule$1 = rule;\nfunction fromJSON$1(json, inputs) {\n if (Array.isArray(json)) return json.map((n2) => fromJSON$1(n2));\n let { inputs: ownInputs, ...defaults } = json;\n if (ownInputs) {\n inputs = [];\n for (let input2 of ownInputs) {\n let inputHydrated = { ...input2, __proto__: Input$1.prototype };\n if (inputHydrated.map) {\n inputHydrated.map = {\n ...inputHydrated.map,\n __proto__: PreviousMap22.prototype\n };\n }\n inputs.push(inputHydrated);\n }\n }\n if (defaults.nodes) {\n defaults.nodes = json.nodes.map((n2) => fromJSON$1(n2, inputs));\n }\n if (defaults.source) {\n let { inputId, ...source } = defaults.source;\n defaults.source = source;\n if (inputId != null) {\n defaults.source.input = inputs[inputId];\n }\n }\n if (defaults.type === \"root\") {\n return new Root$1(defaults);\n } else if (defaults.type === \"decl\") {\n return new Declaration$1(defaults);\n } else if (defaults.type === \"rule\") {\n return new Rule$1(defaults);\n } else if (defaults.type === \"comment\") {\n return new Comment$1(defaults);\n } else if (defaults.type === \"atrule\") {\n return new AtRule$1(defaults);\n } else {\n throw new Error(\"Unknown node type: \" + json.type);\n }\n}\nvar fromJSON_1 = fromJSON$1;\nfromJSON$1.default = fromJSON$1;\nlet CssSyntaxError22 = cssSyntaxError;\nlet Declaration22 = declaration;\nlet LazyResult22 = lazyResult;\nlet Container22 = container;\nlet Processor22 = processor;\nlet stringify = stringify_1;\nlet fromJSON = fromJSON_1;\nlet Document222 = document$1;\nlet Warning22 = warning;\nlet Comment22 = comment;\nlet AtRule22 = atRule;\nlet Result22 = result;\nlet Input22 = input;\nlet parse = parse_1;\nlet list = list_1;\nlet Rule22 = rule;\nlet Root22 = root;\nlet Node22 = node;\nfunction postcss(...plugins) {\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0];\n }\n return new Processor22(plugins);\n}\npostcss.plugin = function plugin2(name, initializer) {\n let warningPrinted = false;\n function creator(...args) {\n if (console && console.warn && !warningPrinted) {\n warningPrinted = true;\n console.warn(\n name + \": postcss.plugin was deprecated. Migration guide:\\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration\"\n );\n if (process.env.LANG && process.env.LANG.startsWith(\"cn\")) {\n console.warn(\n name + \": 里面 postcss.plugin 被弃用. 迁移指南:\\nhttps://www.w3ctech.com/topic/2226\"\n );\n }\n }\n let transformer = initializer(...args);\n transformer.postcssPlugin = name;\n transformer.postcssVersion = new Processor22().version;\n return transformer;\n }\n let cache;\n Object.defineProperty(creator, \"postcss\", {\n get() {\n if (!cache) cache = creator();\n return cache;\n }\n });\n creator.process = function(css, processOpts, pluginOpts) {\n return postcss([creator(pluginOpts)]).process(css, processOpts);\n };\n return creator;\n};\npostcss.stringify = stringify;\npostcss.parse = parse;\npostcss.fromJSON = fromJSON;\npostcss.list = list;\npostcss.comment = (defaults) => new Comment22(defaults);\npostcss.atRule = (defaults) => new AtRule22(defaults);\npostcss.decl = (defaults) => new Declaration22(defaults);\npostcss.rule = (defaults) => new Rule22(defaults);\npostcss.root = (defaults) => new Root22(defaults);\npostcss.document = (defaults) => new Document222(defaults);\npostcss.CssSyntaxError = CssSyntaxError22;\npostcss.Declaration = Declaration22;\npostcss.Container = Container22;\npostcss.Processor = Processor22;\npostcss.Document = Document222;\npostcss.Comment = Comment22;\npostcss.Warning = Warning22;\npostcss.AtRule = AtRule22;\npostcss.Result = Result22;\npostcss.Input = Input22;\npostcss.Rule = Rule22;\npostcss.Root = Root22;\npostcss.Node = Node22;\nLazyResult22.registerPostcss(postcss);\nvar postcss_1 = postcss;\npostcss.default = postcss;\nconst postcss$1 = /* @__PURE__ */ getDefaultExportFromCjs(postcss_1);\npostcss$1.stringify;\npostcss$1.fromJSON;\npostcss$1.plugin;\npostcss$1.parse;\npostcss$1.list;\npostcss$1.document;\npostcss$1.comment;\npostcss$1.atRule;\npostcss$1.rule;\npostcss$1.decl;\npostcss$1.root;\npostcss$1.CssSyntaxError;\npostcss$1.Declaration;\npostcss$1.Container;\npostcss$1.Processor;\npostcss$1.Document;\npostcss$1.Comment;\npostcss$1.Warning;\npostcss$1.AtRule;\npostcss$1.Result;\npostcss$1.Input;\npostcss$1.Rule;\npostcss$1.Root;\npostcss$1.Node;\nclass BaseRRNode {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any\n constructor(..._args) {\n __publicField2(this, \"parentElement\", null);\n __publicField2(this, \"parentNode\", null);\n __publicField2(this, \"ownerDocument\");\n __publicField2(this, \"firstChild\", null);\n __publicField2(this, \"lastChild\", null);\n __publicField2(this, \"previousSibling\", null);\n __publicField2(this, \"nextSibling\", null);\n __publicField2(this, \"ELEMENT_NODE\", 1);\n __publicField2(this, \"TEXT_NODE\", 3);\n __publicField2(this, \"nodeType\");\n __publicField2(this, \"nodeName\");\n __publicField2(this, \"RRNodeType\");\n }\n get childNodes() {\n const childNodes2 = [];\n let childIterator = this.firstChild;\n while (childIterator) {\n childNodes2.push(childIterator);\n childIterator = childIterator.nextSibling;\n }\n return childNodes2;\n }\n contains(node2) {\n if (!(node2 instanceof BaseRRNode)) return false;\n else if (node2.ownerDocument !== this.ownerDocument) return false;\n else if (node2 === this) return true;\n while (node2.parentNode) {\n if (node2.parentNode === this) return true;\n node2 = node2.parentNode;\n }\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n appendChild(_newChild) {\n throw new Error(\n `RRDomException: Failed to execute 'appendChild' on 'RRNode': This RRNode type does not support this method.`\n );\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n insertBefore(_newChild, _refChild) {\n throw new Error(\n `RRDomException: Failed to execute 'insertBefore' on 'RRNode': This RRNode type does not support this method.`\n );\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n removeChild(_node) {\n throw new Error(\n `RRDomException: Failed to execute 'removeChild' on 'RRNode': This RRNode type does not support this method.`\n );\n }\n toString() {\n return \"RRNode\";\n }\n}\nconst testableAccessors = {\n Node: [\"childNodes\", \"parentNode\", \"parentElement\", \"textContent\"],\n ShadowRoot: [\"host\", \"styleSheets\"],\n Element: [\"shadowRoot\", \"querySelector\", \"querySelectorAll\"],\n MutationObserver: []\n};\nconst testableMethods = {\n Node: [\"contains\", \"getRootNode\"],\n ShadowRoot: [\"getSelection\"],\n Element: [],\n MutationObserver: [\"constructor\"]\n};\nconst untaintedBasePrototype = {};\nconst isAngularZonePresent = () => {\n return !!globalThis.Zone;\n};\nfunction getUntaintedPrototype(key) {\n if (untaintedBasePrototype[key])\n return untaintedBasePrototype[key];\n const defaultObj = globalThis[key];\n const defaultPrototype = defaultObj.prototype;\n const accessorNames = key in testableAccessors ? testableAccessors[key] : void 0;\n const isUntaintedAccessors = Boolean(\n accessorNames && // @ts-expect-error 2345\n accessorNames.every(\n (accessor) => {\n var _a2, _b;\n return Boolean(\n (_b = (_a2 = Object.getOwnPropertyDescriptor(defaultPrototype, accessor)) == null ? void 0 : _a2.get) == null ? void 0 : _b.toString().includes(\"[native code]\")\n );\n }\n )\n );\n const methodNames = key in testableMethods ? testableMethods[key] : void 0;\n const isUntaintedMethods = Boolean(\n methodNames && methodNames.every(\n // @ts-expect-error 2345\n (method) => {\n var _a2;\n return typeof defaultPrototype[method] === \"function\" && ((_a2 = defaultPrototype[method]) == null ? void 0 : _a2.toString().includes(\"[native code]\"));\n }\n )\n );\n if (isUntaintedAccessors && isUntaintedMethods && !isAngularZonePresent()) {\n untaintedBasePrototype[key] = defaultObj.prototype;\n return defaultObj.prototype;\n }\n try {\n const iframeEl = document.createElement(\"iframe\");\n document.body.appendChild(iframeEl);\n const win = iframeEl.contentWindow;\n if (!win) return defaultObj.prototype;\n const untaintedObject = win[key].prototype;\n document.body.removeChild(iframeEl);\n if (!untaintedObject) return defaultPrototype;\n return untaintedBasePrototype[key] = untaintedObject;\n } catch {\n return defaultPrototype;\n }\n}\nconst untaintedAccessorCache = {};\nfunction getUntaintedAccessor(key, instance, accessor) {\n var _a2;\n const cacheKey = `${key}.${String(accessor)}`;\n if (untaintedAccessorCache[cacheKey])\n return untaintedAccessorCache[cacheKey].call(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype(key);\n const untaintedAccessor = (_a2 = Object.getOwnPropertyDescriptor(\n untaintedPrototype,\n accessor\n )) == null ? void 0 : _a2.get;\n if (!untaintedAccessor) return instance[accessor];\n untaintedAccessorCache[cacheKey] = untaintedAccessor;\n return untaintedAccessor.call(instance);\n}\nconst untaintedMethodCache = {};\nfunction getUntaintedMethod(key, instance, method) {\n const cacheKey = `${key}.${String(method)}`;\n if (untaintedMethodCache[cacheKey])\n return untaintedMethodCache[cacheKey].bind(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype(key);\n const untaintedMethod = untaintedPrototype[method];\n if (typeof untaintedMethod !== \"function\") return instance[method];\n untaintedMethodCache[cacheKey] = untaintedMethod;\n return untaintedMethod.bind(instance);\n}\nfunction childNodes(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"childNodes\");\n}\nfunction parentNode(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"parentNode\");\n}\nfunction parentElement(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"parentElement\");\n}\nfunction textContent(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"textContent\");\n}\nfunction contains(n2, other) {\n return getUntaintedMethod(\"Node\", n2, \"contains\")(other);\n}\nfunction getRootNode(n2) {\n return getUntaintedMethod(\"Node\", n2, \"getRootNode\")();\n}\nfunction host(n2) {\n if (!n2 || !(\"host\" in n2)) return null;\n return getUntaintedAccessor(\"ShadowRoot\", n2, \"host\");\n}\nfunction styleSheets(n2) {\n return n2.styleSheets;\n}\nfunction shadowRoot(n2) {\n if (!n2 || !(\"shadowRoot\" in n2)) return null;\n return getUntaintedAccessor(\"Element\", n2, \"shadowRoot\");\n}\nfunction querySelector(n2, selectors) {\n return getUntaintedAccessor(\"Element\", n2, \"querySelector\")(selectors);\n}\nfunction querySelectorAll(n2, selectors) {\n return getUntaintedAccessor(\"Element\", n2, \"querySelectorAll\")(selectors);\n}\nfunction mutationObserverCtor() {\n return getUntaintedPrototype(\"MutationObserver\").constructor;\n}\nconst index = {\n childNodes,\n parentNode,\n parentElement,\n textContent,\n contains,\n getRootNode,\n host,\n styleSheets,\n shadowRoot,\n querySelector,\n querySelectorAll,\n mutationObserver: mutationObserverCtor\n};\nfunction on(type, fn, target = document) {\n const options = { capture: true, passive: true };\n target.addEventListener(type, fn, options);\n return () => target.removeEventListener(type, fn, options);\n}\nconst DEPARTED_MIRROR_ACCESS_WARNING = \"Please stop import mirror directly. Instead of that,\\r\\nnow you can use replayer.getMirror() to access the mirror instance of a replayer,\\r\\nor you can use record.mirror to access the mirror instance during recording.\";\nlet _mirror = {\n map: {},\n getId() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return -1;\n },\n getNode() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return null;\n },\n removeNodeFromMap() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n },\n has() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return false;\n },\n reset() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n }\n};\nif (typeof window !== \"undefined\" && window.Proxy && window.Reflect) {\n _mirror = new Proxy(_mirror, {\n get(target, prop, receiver) {\n if (prop === \"map\") {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n }\n return Reflect.get(target, prop, receiver);\n }\n });\n}\nfunction throttle(func, wait, options = {}) {\n let timeout = null;\n let previous = 0;\n return function(...args) {\n const now = Date.now();\n if (!previous && options.leading === false) {\n previous = now;\n }\n const remaining = wait - (now - previous);\n const context = this;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n func.apply(context, args);\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(() => {\n previous = options.leading === false ? 0 : Date.now();\n timeout = null;\n func.apply(context, args);\n }, remaining);\n }\n };\n}\nfunction hookSetter(target, key, d, isRevoked, win = window) {\n const original = win.Object.getOwnPropertyDescriptor(target, key);\n win.Object.defineProperty(\n target,\n key,\n isRevoked ? d : {\n set(value) {\n setTimeout(() => {\n d.set.call(this, value);\n }, 0);\n if (original && original.set) {\n original.set.call(this, value);\n }\n }\n }\n );\n return () => hookSetter(target, key, original || {}, true);\n}\nfunction patch(source, name, replacement) {\n try {\n if (!(name in source)) {\n return () => {\n };\n }\n const original = source[name];\n const wrapped = replacement(original);\n if (typeof wrapped === \"function\") {\n wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __rrweb_original__: {\n enumerable: false,\n value: original\n }\n });\n }\n source[name] = wrapped;\n return () => {\n source[name] = original;\n };\n } catch {\n return () => {\n };\n }\n}\nlet nowTimestamp = Date.now;\nif (!/* @__PURE__ */ /[1-9][0-9]{12}/.test(Date.now().toString())) {\n nowTimestamp = () => (/* @__PURE__ */ new Date()).getTime();\n}\nfunction getWindowScroll(win) {\n var _a2, _b, _c, _d;\n const doc = win.document;\n return {\n left: doc.scrollingElement ? doc.scrollingElement.scrollLeft : win.pageXOffset !== void 0 ? win.pageXOffset : doc.documentElement.scrollLeft || (doc == null ? void 0 : doc.body) && ((_a2 = index.parentElement(doc.body)) == null ? void 0 : _a2.scrollLeft) || ((_b = doc == null ? void 0 : doc.body) == null ? void 0 : _b.scrollLeft) || 0,\n top: doc.scrollingElement ? doc.scrollingElement.scrollTop : win.pageYOffset !== void 0 ? win.pageYOffset : (doc == null ? void 0 : doc.documentElement.scrollTop) || (doc == null ? void 0 : doc.body) && ((_c = index.parentElement(doc.body)) == null ? void 0 : _c.scrollTop) || ((_d = doc == null ? void 0 : doc.body) == null ? void 0 : _d.scrollTop) || 0\n };\n}\nfunction getWindowHeight() {\n return window.innerHeight || document.documentElement && document.documentElement.clientHeight || document.body && document.body.clientHeight;\n}\nfunction getWindowWidth() {\n return window.innerWidth || document.documentElement && document.documentElement.clientWidth || document.body && document.body.clientWidth;\n}\nfunction closestElementOfNode(node2) {\n if (!node2) {\n return null;\n }\n const el = node2.nodeType === node2.ELEMENT_NODE ? node2 : index.parentElement(node2);\n return el;\n}\nfunction isBlocked(node2, blockClass, blockSelector, checkAncestors) {\n if (!node2) {\n return false;\n }\n const el = closestElementOfNode(node2);\n if (!el) {\n return false;\n }\n try {\n if (typeof blockClass === \"string\") {\n if (el.classList.contains(blockClass)) return true;\n if (checkAncestors && el.closest(\".\" + blockClass) !== null) return true;\n } else {\n if (classMatchesRegex(el, blockClass, checkAncestors)) return true;\n }\n } catch (e2) {\n }\n if (blockSelector) {\n if (el.matches(blockSelector)) return true;\n if (checkAncestors && el.closest(blockSelector) !== null) return true;\n }\n return false;\n}\nfunction isSerialized(n2, mirror2) {\n return mirror2.getId(n2) !== -1;\n}\nfunction isIgnored(n2, mirror2, slimDOMOptions) {\n if (n2.tagName === \"TITLE\" && slimDOMOptions.headTitleMutations) {\n return true;\n }\n return mirror2.getId(n2) === IGNORED_NODE;\n}\nfunction isAncestorRemoved(target, mirror2) {\n if (isShadowRoot(target)) {\n return false;\n }\n const id = mirror2.getId(target);\n if (!mirror2.has(id)) {\n return true;\n }\n const parent = index.parentNode(target);\n if (parent && parent.nodeType === target.DOCUMENT_NODE) {\n return false;\n }\n if (!parent) {\n return true;\n }\n return isAncestorRemoved(parent, mirror2);\n}\nfunction legacy_isTouchEvent(event) {\n return Boolean(event.changedTouches);\n}\nfunction polyfill$1(win = window) {\n if (\"NodeList\" in win && !win.NodeList.prototype.forEach) {\n win.NodeList.prototype.forEach = Array.prototype.forEach;\n }\n if (\"DOMTokenList\" in win && !win.DOMTokenList.prototype.forEach) {\n win.DOMTokenList.prototype.forEach = Array.prototype.forEach;\n }\n}\nfunction isSerializedIframe(n2, mirror2) {\n return Boolean(n2.nodeName === \"IFRAME\" && mirror2.getMeta(n2));\n}\nfunction isSerializedStylesheet(n2, mirror2) {\n return Boolean(\n n2.nodeName === \"LINK\" && n2.nodeType === n2.ELEMENT_NODE && n2.getAttribute && n2.getAttribute(\"rel\") === \"stylesheet\" && mirror2.getMeta(n2)\n );\n}\nfunction hasShadowRoot(n2) {\n if (!n2) return false;\n if (n2 instanceof BaseRRNode && \"shadowRoot\" in n2) {\n return Boolean(n2.shadowRoot);\n }\n return Boolean(index.shadowRoot(n2));\n}\nclass StyleSheetMirror {\n constructor() {\n __publicField(this, \"id\", 1);\n __publicField(this, \"styleIDMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"idStyleMap\", /* @__PURE__ */ new Map());\n }\n getId(stylesheet) {\n return this.styleIDMap.get(stylesheet) ?? -1;\n }\n has(stylesheet) {\n return this.styleIDMap.has(stylesheet);\n }\n /**\n * @returns If the stylesheet is in the mirror, returns the id of the stylesheet. If not, return the new assigned id.\n */\n add(stylesheet, id) {\n if (this.has(stylesheet)) return this.getId(stylesheet);\n let newId;\n if (id === void 0) {\n newId = this.id++;\n } else newId = id;\n this.styleIDMap.set(stylesheet, newId);\n this.idStyleMap.set(newId, stylesheet);\n return newId;\n }\n getStyle(id) {\n return this.idStyleMap.get(id) || null;\n }\n reset() {\n this.styleIDMap = /* @__PURE__ */ new WeakMap();\n this.idStyleMap = /* @__PURE__ */ new Map();\n this.id = 1;\n }\n generateId() {\n return this.id++;\n }\n}\nfunction getShadowHost(n2) {\n var _a2;\n let shadowHost = null;\n if (\"getRootNode\" in n2 && ((_a2 = index.getRootNode(n2)) == null ? void 0 : _a2.nodeType) === Node.DOCUMENT_FRAGMENT_NODE && index.host(index.getRootNode(n2)))\n shadowHost = index.host(index.getRootNode(n2));\n return shadowHost;\n}\nfunction getRootShadowHost(n2) {\n let rootShadowHost = n2;\n let shadowHost;\n while (shadowHost = getShadowHost(rootShadowHost))\n rootShadowHost = shadowHost;\n return rootShadowHost;\n}\nfunction shadowHostInDom(n2) {\n const doc = n2.ownerDocument;\n if (!doc) return false;\n const shadowHost = getRootShadowHost(n2);\n return index.contains(doc, shadowHost);\n}\nfunction inDom(n2) {\n const doc = n2.ownerDocument;\n if (!doc) return false;\n return index.contains(doc, n2) || shadowHostInDom(n2);\n}\nvar EventType = /* @__PURE__ */ ((EventType2) => {\n EventType2[EventType2[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n EventType2[EventType2[\"Load\"] = 1] = \"Load\";\n EventType2[EventType2[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n EventType2[EventType2[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n EventType2[EventType2[\"Meta\"] = 4] = \"Meta\";\n EventType2[EventType2[\"Custom\"] = 5] = \"Custom\";\n EventType2[EventType2[\"Plugin\"] = 6] = \"Plugin\";\n return EventType2;\n})(EventType || {});\nvar IncrementalSource = /* @__PURE__ */ ((IncrementalSource2) => {\n IncrementalSource2[IncrementalSource2[\"Mutation\"] = 0] = \"Mutation\";\n IncrementalSource2[IncrementalSource2[\"MouseMove\"] = 1] = \"MouseMove\";\n IncrementalSource2[IncrementalSource2[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n IncrementalSource2[IncrementalSource2[\"Scroll\"] = 3] = \"Scroll\";\n IncrementalSource2[IncrementalSource2[\"ViewportResize\"] = 4] = \"ViewportResize\";\n IncrementalSource2[IncrementalSource2[\"Input\"] = 5] = \"Input\";\n IncrementalSource2[IncrementalSource2[\"TouchMove\"] = 6] = \"TouchMove\";\n IncrementalSource2[IncrementalSource2[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n IncrementalSource2[IncrementalSource2[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n IncrementalSource2[IncrementalSource2[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n IncrementalSource2[IncrementalSource2[\"Font\"] = 10] = \"Font\";\n IncrementalSource2[IncrementalSource2[\"Log\"] = 11] = \"Log\";\n IncrementalSource2[IncrementalSource2[\"Drag\"] = 12] = \"Drag\";\n IncrementalSource2[IncrementalSource2[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n IncrementalSource2[IncrementalSource2[\"Selection\"] = 14] = \"Selection\";\n IncrementalSource2[IncrementalSource2[\"AdoptedStyleSheet\"] = 15] = \"AdoptedStyleSheet\";\n IncrementalSource2[IncrementalSource2[\"CustomElement\"] = 16] = \"CustomElement\";\n return IncrementalSource2;\n})(IncrementalSource || {});\nvar MouseInteractions = /* @__PURE__ */ ((MouseInteractions2) => {\n MouseInteractions2[MouseInteractions2[\"MouseUp\"] = 0] = \"MouseUp\";\n MouseInteractions2[MouseInteractions2[\"MouseDown\"] = 1] = \"MouseDown\";\n MouseInteractions2[MouseInteractions2[\"Click\"] = 2] = \"Click\";\n MouseInteractions2[MouseInteractions2[\"ContextMenu\"] = 3] = \"ContextMenu\";\n MouseInteractions2[MouseInteractions2[\"DblClick\"] = 4] = \"DblClick\";\n MouseInteractions2[MouseInteractions2[\"Focus\"] = 5] = \"Focus\";\n MouseInteractions2[MouseInteractions2[\"Blur\"] = 6] = \"Blur\";\n MouseInteractions2[MouseInteractions2[\"TouchStart\"] = 7] = \"TouchStart\";\n MouseInteractions2[MouseInteractions2[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n MouseInteractions2[MouseInteractions2[\"TouchEnd\"] = 9] = \"TouchEnd\";\n MouseInteractions2[MouseInteractions2[\"TouchCancel\"] = 10] = \"TouchCancel\";\n return MouseInteractions2;\n})(MouseInteractions || {});\nvar PointerTypes = /* @__PURE__ */ ((PointerTypes2) => {\n PointerTypes2[PointerTypes2[\"Mouse\"] = 0] = \"Mouse\";\n PointerTypes2[PointerTypes2[\"Pen\"] = 1] = \"Pen\";\n PointerTypes2[PointerTypes2[\"Touch\"] = 2] = \"Touch\";\n return PointerTypes2;\n})(PointerTypes || {});\nvar CanvasContext = /* @__PURE__ */ ((CanvasContext2) => {\n CanvasContext2[CanvasContext2[\"2D\"] = 0] = \"2D\";\n CanvasContext2[CanvasContext2[\"WebGL\"] = 1] = \"WebGL\";\n CanvasContext2[CanvasContext2[\"WebGL2\"] = 2] = \"WebGL2\";\n return CanvasContext2;\n})(CanvasContext || {});\nvar MediaInteractions = /* @__PURE__ */ ((MediaInteractions2) => {\n MediaInteractions2[MediaInteractions2[\"Play\"] = 0] = \"Play\";\n MediaInteractions2[MediaInteractions2[\"Pause\"] = 1] = \"Pause\";\n MediaInteractions2[MediaInteractions2[\"Seeked\"] = 2] = \"Seeked\";\n MediaInteractions2[MediaInteractions2[\"VolumeChange\"] = 3] = \"VolumeChange\";\n MediaInteractions2[MediaInteractions2[\"RateChange\"] = 4] = \"RateChange\";\n return MediaInteractions2;\n})(MediaInteractions || {});\nvar NodeType = /* @__PURE__ */ ((NodeType2) => {\n NodeType2[NodeType2[\"Document\"] = 0] = \"Document\";\n NodeType2[NodeType2[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType2[NodeType2[\"Element\"] = 2] = \"Element\";\n NodeType2[NodeType2[\"Text\"] = 3] = \"Text\";\n NodeType2[NodeType2[\"CDATA\"] = 4] = \"CDATA\";\n NodeType2[NodeType2[\"Comment\"] = 5] = \"Comment\";\n return NodeType2;\n})(NodeType || {});\nfunction isNodeInLinkedList(n2) {\n return \"__ln\" in n2;\n}\nclass DoubleLinkedList {\n constructor() {\n __publicField(this, \"length\", 0);\n __publicField(this, \"head\", null);\n __publicField(this, \"tail\", null);\n }\n get(position) {\n if (position >= this.length) {\n throw new Error(\"Position outside of list range\");\n }\n let current = this.head;\n for (let index2 = 0; index2 < position; index2++) {\n current = (current == null ? void 0 : current.next) || null;\n }\n return current;\n }\n addNode(n2) {\n const node2 = {\n value: n2,\n previous: null,\n next: null\n };\n n2.__ln = node2;\n if (n2.previousSibling && isNodeInLinkedList(n2.previousSibling)) {\n const current = n2.previousSibling.__ln.next;\n node2.next = current;\n node2.previous = n2.previousSibling.__ln;\n n2.previousSibling.__ln.next = node2;\n if (current) {\n current.previous = node2;\n }\n } else if (n2.nextSibling && isNodeInLinkedList(n2.nextSibling) && n2.nextSibling.__ln.previous) {\n const current = n2.nextSibling.__ln.previous;\n node2.previous = current;\n node2.next = n2.nextSibling.__ln;\n n2.nextSibling.__ln.previous = node2;\n if (current) {\n current.next = node2;\n }\n } else {\n if (this.head) {\n this.head.previous = node2;\n }\n node2.next = this.head;\n this.head = node2;\n }\n if (node2.next === null) {\n this.tail = node2;\n }\n this.length++;\n }\n removeNode(n2) {\n const current = n2.__ln;\n if (!this.head) {\n return;\n }\n if (!current.previous) {\n this.head = current.next;\n if (this.head) {\n this.head.previous = null;\n } else {\n this.tail = null;\n }\n } else {\n current.previous.next = current.next;\n if (current.next) {\n current.next.previous = current.previous;\n } else {\n this.tail = current.previous;\n }\n }\n if (n2.__ln) {\n delete n2.__ln;\n }\n this.length--;\n }\n}\nconst moveKey = (id, parentId) => `${id}@${parentId}`;\nclass MutationBuffer {\n constructor() {\n __publicField(this, \"frozen\", false);\n __publicField(this, \"locked\", false);\n __publicField(this, \"texts\", []);\n __publicField(this, \"attributes\", []);\n __publicField(this, \"attributeMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"removes\", []);\n __publicField(this, \"mapRemoves\", []);\n __publicField(this, \"movedMap\", {});\n __publicField(this, \"addedSet\", /* @__PURE__ */ new Set());\n __publicField(this, \"movedSet\", /* @__PURE__ */ new Set());\n __publicField(this, \"droppedSet\", /* @__PURE__ */ new Set());\n __publicField(this, \"removesSubTreeCache\", /* @__PURE__ */ new Set());\n __publicField(this, \"mutationCb\");\n __publicField(this, \"blockClass\");\n __publicField(this, \"blockSelector\");\n __publicField(this, \"maskTextClass\");\n __publicField(this, \"maskTextSelector\");\n __publicField(this, \"inlineStylesheet\");\n __publicField(this, \"maskInputOptions\");\n __publicField(this, \"maskTextFn\");\n __publicField(this, \"maskInputFn\");\n __publicField(this, \"keepIframeSrcFn\");\n __publicField(this, \"recordCanvas\");\n __publicField(this, \"inlineImages\");\n __publicField(this, \"slimDOMOptions\");\n __publicField(this, \"dataURLOptions\");\n __publicField(this, \"doc\");\n __publicField(this, \"mirror\");\n __publicField(this, \"iframeManager\");\n __publicField(this, \"stylesheetManager\");\n __publicField(this, \"shadowDomManager\");\n __publicField(this, \"canvasManager\");\n __publicField(this, \"processedNodeManager\");\n __publicField(this, \"unattachedDoc\");\n __publicField(this, \"processMutations\", (mutations) => {\n mutations.forEach(this.processMutation);\n this.emit();\n });\n __publicField(this, \"emit\", () => {\n if (this.frozen || this.locked) {\n return;\n }\n const adds = [];\n const addedIds = /* @__PURE__ */ new Set();\n const addList = new DoubleLinkedList();\n const getNextId = (n2) => {\n let ns = n2;\n let nextId = IGNORED_NODE;\n while (nextId === IGNORED_NODE) {\n ns = ns && ns.nextSibling;\n nextId = ns && this.mirror.getId(ns);\n }\n return nextId;\n };\n const pushAdd = (n2) => {\n const parent = index.parentNode(n2);\n if (!parent || !inDom(n2)) {\n return;\n }\n let cssCaptured = false;\n if (n2.nodeType === Node.TEXT_NODE) {\n const parentTag = parent.tagName;\n if (parentTag === \"TEXTAREA\") {\n return;\n } else if (parentTag === \"STYLE\" && this.addedSet.has(parent)) {\n cssCaptured = true;\n }\n }\n const parentId = isShadowRoot(parent) ? this.mirror.getId(getShadowHost(n2)) : this.mirror.getId(parent);\n const nextId = getNextId(n2);\n if (parentId === -1 || nextId === -1) {\n return addList.addNode(n2);\n }\n const sn = serializeNodeWithId(n2, {\n doc: this.doc,\n mirror: this.mirror,\n blockClass: this.blockClass,\n blockSelector: this.blockSelector,\n maskTextClass: this.maskTextClass,\n maskTextSelector: this.maskTextSelector,\n skipChild: true,\n newlyAddedElement: true,\n inlineStylesheet: this.inlineStylesheet,\n maskInputOptions: this.maskInputOptions,\n maskTextFn: this.maskTextFn,\n maskInputFn: this.maskInputFn,\n slimDOMOptions: this.slimDOMOptions,\n dataURLOptions: this.dataURLOptions,\n recordCanvas: this.recordCanvas,\n inlineImages: this.inlineImages,\n onSerialize: (currentN) => {\n if (isSerializedIframe(currentN, this.mirror)) {\n this.iframeManager.addIframe(currentN);\n }\n if (isSerializedStylesheet(currentN, this.mirror)) {\n this.stylesheetManager.trackLinkElement(\n currentN\n );\n }\n if (hasShadowRoot(n2)) {\n this.shadowDomManager.addShadowRoot(index.shadowRoot(n2), this.doc);\n }\n },\n onIframeLoad: (iframe, childSn) => {\n this.iframeManager.attachIframe(iframe, childSn);\n this.shadowDomManager.observeAttachShadow(iframe);\n },\n onStylesheetLoad: (link, childSn) => {\n this.stylesheetManager.attachLinkElement(link, childSn);\n },\n cssCaptured\n });\n if (sn) {\n adds.push({\n parentId,\n nextId,\n node: sn\n });\n addedIds.add(sn.id);\n }\n };\n while (this.mapRemoves.length) {\n this.mirror.removeNodeFromMap(this.mapRemoves.shift());\n }\n for (const n2 of this.movedSet) {\n if (isParentRemoved(this.removesSubTreeCache, n2, this.mirror) && !this.movedSet.has(index.parentNode(n2))) {\n continue;\n }\n pushAdd(n2);\n }\n for (const n2 of this.addedSet) {\n if (!isAncestorInSet(this.droppedSet, n2) && !isParentRemoved(this.removesSubTreeCache, n2, this.mirror)) {\n pushAdd(n2);\n } else if (isAncestorInSet(this.movedSet, n2)) {\n pushAdd(n2);\n } else {\n this.droppedSet.add(n2);\n }\n }\n let candidate = null;\n while (addList.length) {\n let node2 = null;\n if (candidate) {\n const parentId = this.mirror.getId(index.parentNode(candidate.value));\n const nextId = getNextId(candidate.value);\n if (parentId !== -1 && nextId !== -1) {\n node2 = candidate;\n }\n }\n if (!node2) {\n let tailNode = addList.tail;\n while (tailNode) {\n const _node = tailNode;\n tailNode = tailNode.previous;\n if (_node) {\n const parentId = this.mirror.getId(index.parentNode(_node.value));\n const nextId = getNextId(_node.value);\n if (nextId === -1) continue;\n else if (parentId !== -1) {\n node2 = _node;\n break;\n } else {\n const unhandledNode = _node.value;\n const parent = index.parentNode(unhandledNode);\n if (parent && parent.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n const shadowHost = index.host(parent);\n const parentId2 = this.mirror.getId(shadowHost);\n if (parentId2 !== -1) {\n node2 = _node;\n break;\n }\n }\n }\n }\n }\n }\n if (!node2) {\n while (addList.head) {\n addList.removeNode(addList.head.value);\n }\n break;\n }\n candidate = node2.previous;\n addList.removeNode(node2.value);\n pushAdd(node2.value);\n }\n const payload = {\n texts: this.texts.map((text) => {\n const n2 = text.node;\n const parent = index.parentNode(n2);\n if (parent && parent.tagName === \"TEXTAREA\") {\n this.genTextAreaValueMutation(parent);\n }\n return {\n id: this.mirror.getId(n2),\n value: text.value\n };\n }).filter((text) => !addedIds.has(text.id)).filter((text) => this.mirror.has(text.id)),\n attributes: this.attributes.map((attribute) => {\n const { attributes } = attribute;\n if (typeof attributes.style === \"string\") {\n const diffAsStr = JSON.stringify(attribute.styleDiff);\n const unchangedAsStr = JSON.stringify(attribute._unchangedStyles);\n if (diffAsStr.length < attributes.style.length) {\n if ((diffAsStr + unchangedAsStr).split(\"var(\").length === attributes.style.split(\"var(\").length) {\n attributes.style = attribute.styleDiff;\n }\n }\n }\n return {\n id: this.mirror.getId(attribute.node),\n attributes\n };\n }).filter((attribute) => !addedIds.has(attribute.id)).filter((attribute) => this.mirror.has(attribute.id)),\n removes: this.removes,\n adds\n };\n if (!payload.texts.length && !payload.attributes.length && !payload.removes.length && !payload.adds.length) {\n return;\n }\n this.texts = [];\n this.attributes = [];\n this.attributeMap = /* @__PURE__ */ new WeakMap();\n this.removes = [];\n this.addedSet = /* @__PURE__ */ new Set();\n this.movedSet = /* @__PURE__ */ new Set();\n this.droppedSet = /* @__PURE__ */ new Set();\n this.removesSubTreeCache = /* @__PURE__ */ new Set();\n this.movedMap = {};\n this.mutationCb(payload);\n });\n __publicField(this, \"genTextAreaValueMutation\", (textarea) => {\n let item = this.attributeMap.get(textarea);\n if (!item) {\n item = {\n node: textarea,\n attributes: {},\n styleDiff: {},\n _unchangedStyles: {}\n };\n this.attributes.push(item);\n this.attributeMap.set(textarea, item);\n }\n item.attributes.value = Array.from(\n index.childNodes(textarea),\n (cn) => index.textContent(cn) || \"\"\n ).join(\"\");\n });\n __publicField(this, \"processMutation\", (m) => {\n if (isIgnored(m.target, this.mirror, this.slimDOMOptions)) {\n return;\n }\n switch (m.type) {\n case \"characterData\": {\n const value = index.textContent(m.target);\n if (!isBlocked(m.target, this.blockClass, this.blockSelector, false) && value !== m.oldValue) {\n this.texts.push({\n value: needMaskingText(\n m.target,\n this.maskTextClass,\n this.maskTextSelector,\n true\n // checkAncestors\n ) && value ? this.maskTextFn ? this.maskTextFn(value, closestElementOfNode(m.target)) : value.replace(/[\\S]/g, \"*\") : value,\n node: m.target\n });\n }\n break;\n }\n case \"attributes\": {\n const target = m.target;\n let attributeName = m.attributeName;\n let value = m.target.getAttribute(attributeName);\n if (attributeName === \"value\") {\n const type = getInputType(target);\n value = maskInputValue({\n element: target,\n maskInputOptions: this.maskInputOptions,\n tagName: target.tagName,\n type,\n value,\n maskInputFn: this.maskInputFn\n });\n }\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) || value === m.oldValue) {\n return;\n }\n let item = this.attributeMap.get(m.target);\n if (target.tagName === \"IFRAME\" && attributeName === \"src\" && !this.keepIframeSrcFn(value)) {\n if (!target.contentDocument) {\n attributeName = \"rr_src\";\n } else {\n return;\n }\n }\n if (!item) {\n item = {\n node: m.target,\n attributes: {},\n styleDiff: {},\n _unchangedStyles: {}\n };\n this.attributes.push(item);\n this.attributeMap.set(m.target, item);\n }\n if (attributeName === \"type\" && target.tagName === \"INPUT\" && (m.oldValue || \"\").toLowerCase() === \"password\") {\n target.setAttribute(\"data-rr-is-password\", \"true\");\n }\n if (!ignoreAttribute(target.tagName, attributeName)) {\n item.attributes[attributeName] = transformAttribute(\n this.doc,\n toLowerCase(target.tagName),\n toLowerCase(attributeName),\n value\n );\n if (attributeName === \"style\") {\n if (!this.unattachedDoc) {\n try {\n this.unattachedDoc = document.implementation.createHTMLDocument();\n } catch (e2) {\n this.unattachedDoc = this.doc;\n }\n }\n const old = this.unattachedDoc.createElement(\"span\");\n if (m.oldValue) {\n old.setAttribute(\"style\", m.oldValue);\n }\n for (const pname of Array.from(target.style)) {\n const newValue = target.style.getPropertyValue(pname);\n const newPriority = target.style.getPropertyPriority(pname);\n if (newValue !== old.style.getPropertyValue(pname) || newPriority !== old.style.getPropertyPriority(pname)) {\n if (newPriority === \"\") {\n item.styleDiff[pname] = newValue;\n } else {\n item.styleDiff[pname] = [newValue, newPriority];\n }\n } else {\n item._unchangedStyles[pname] = [newValue, newPriority];\n }\n }\n for (const pname of Array.from(old.style)) {\n if (target.style.getPropertyValue(pname) === \"\") {\n item.styleDiff[pname] = false;\n }\n }\n } else if (attributeName === \"open\" && target.tagName === \"DIALOG\") {\n if (target.matches(\"dialog:modal\")) {\n item.attributes[\"rr_open_mode\"] = \"modal\";\n } else {\n item.attributes[\"rr_open_mode\"] = \"non-modal\";\n }\n }\n }\n break;\n }\n case \"childList\": {\n if (isBlocked(m.target, this.blockClass, this.blockSelector, true))\n return;\n if (m.target.tagName === \"TEXTAREA\") {\n this.genTextAreaValueMutation(m.target);\n return;\n }\n m.addedNodes.forEach((n2) => this.genAdds(n2, m.target));\n m.removedNodes.forEach((n2) => {\n const nodeId = this.mirror.getId(n2);\n const parentId = isShadowRoot(m.target) ? this.mirror.getId(index.host(m.target)) : this.mirror.getId(m.target);\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) || isIgnored(n2, this.mirror, this.slimDOMOptions) || !isSerialized(n2, this.mirror)) {\n return;\n }\n if (this.addedSet.has(n2)) {\n deepDelete(this.addedSet, n2);\n this.droppedSet.add(n2);\n } else if (this.addedSet.has(m.target) && nodeId === -1) ;\n else if (isAncestorRemoved(m.target, this.mirror)) ;\n else if (this.movedSet.has(n2) && this.movedMap[moveKey(nodeId, parentId)]) {\n deepDelete(this.movedSet, n2);\n } else {\n this.removes.push({\n parentId,\n id: nodeId,\n isShadow: isShadowRoot(m.target) && isNativeShadowDom(m.target) ? true : void 0\n });\n processRemoves(n2, this.removesSubTreeCache);\n }\n this.mapRemoves.push(n2);\n });\n break;\n }\n }\n });\n __publicField(this, \"genAdds\", (n2, target) => {\n if (this.processedNodeManager.inOtherBuffer(n2, this)) return;\n if (this.addedSet.has(n2) || this.movedSet.has(n2)) return;\n if (this.mirror.hasNode(n2)) {\n if (isIgnored(n2, this.mirror, this.slimDOMOptions)) {\n return;\n }\n this.movedSet.add(n2);\n let targetId = null;\n if (target && this.mirror.hasNode(target)) {\n targetId = this.mirror.getId(target);\n }\n if (targetId && targetId !== -1) {\n this.movedMap[moveKey(this.mirror.getId(n2), targetId)] = true;\n }\n } else {\n this.addedSet.add(n2);\n this.droppedSet.delete(n2);\n }\n if (!isBlocked(n2, this.blockClass, this.blockSelector, false)) {\n index.childNodes(n2).forEach((childN) => this.genAdds(childN));\n if (hasShadowRoot(n2)) {\n index.childNodes(index.shadowRoot(n2)).forEach((childN) => {\n this.processedNodeManager.add(childN, this);\n this.genAdds(childN, n2);\n });\n }\n }\n });\n }\n init(options) {\n [\n \"mutationCb\",\n \"blockClass\",\n \"blockSelector\",\n \"maskTextClass\",\n \"maskTextSelector\",\n \"inlineStylesheet\",\n \"maskInputOptions\",\n \"maskTextFn\",\n \"maskInputFn\",\n \"keepIframeSrcFn\",\n \"recordCanvas\",\n \"inlineImages\",\n \"slimDOMOptions\",\n \"dataURLOptions\",\n \"doc\",\n \"mirror\",\n \"iframeManager\",\n \"stylesheetManager\",\n \"shadowDomManager\",\n \"canvasManager\",\n \"processedNodeManager\"\n ].forEach((key) => {\n this[key] = options[key];\n });\n }\n freeze() {\n this.frozen = true;\n this.canvasManager.freeze();\n }\n unfreeze() {\n this.frozen = false;\n this.canvasManager.unfreeze();\n this.emit();\n }\n isFrozen() {\n return this.frozen;\n }\n lock() {\n this.locked = true;\n this.canvasManager.lock();\n }\n unlock() {\n this.locked = false;\n this.canvasManager.unlock();\n this.emit();\n }\n reset() {\n this.shadowDomManager.reset();\n this.canvasManager.reset();\n }\n}\nfunction deepDelete(addsSet, n2) {\n addsSet.delete(n2);\n index.childNodes(n2).forEach((childN) => deepDelete(addsSet, childN));\n}\nfunction processRemoves(n2, cache) {\n const queue = [n2];\n while (queue.length) {\n const next = queue.pop();\n if (cache.has(next)) continue;\n cache.add(next);\n index.childNodes(next).forEach((n22) => queue.push(n22));\n }\n return;\n}\nfunction isParentRemoved(removes, n2, mirror2) {\n if (removes.size === 0) return false;\n return _isParentRemoved(removes, n2);\n}\nfunction _isParentRemoved(removes, n2, _mirror2) {\n const node2 = index.parentNode(n2);\n if (!node2) return false;\n return removes.has(node2);\n}\nfunction isAncestorInSet(set, n2) {\n if (set.size === 0) return false;\n return _isAncestorInSet(set, n2);\n}\nfunction _isAncestorInSet(set, n2) {\n const parent = index.parentNode(n2);\n if (!parent) {\n return false;\n }\n if (set.has(parent)) {\n return true;\n }\n return _isAncestorInSet(set, parent);\n}\nlet errorHandler;\nfunction registerErrorHandler(handler) {\n errorHandler = handler;\n}\nfunction unregisterErrorHandler() {\n errorHandler = void 0;\n}\nconst callbackWrapper = (cb) => {\n if (!errorHandler) {\n return cb;\n }\n const rrwebWrapped = (...rest) => {\n try {\n return cb(...rest);\n } catch (error) {\n if (errorHandler && errorHandler(error) === true) {\n return;\n }\n throw error;\n }\n };\n return rrwebWrapped;\n};\nconst mutationBuffers = [];\nfunction getEventTarget(event) {\n try {\n if (\"composedPath\" in event) {\n const path = event.composedPath();\n if (path.length) {\n return path[0];\n }\n } else if (\"path\" in event && event.path.length) {\n return event.path[0];\n }\n } catch {\n }\n return event && event.target;\n}\nfunction initMutationObserver(options, rootEl) {\n const mutationBuffer = new MutationBuffer();\n mutationBuffers.push(mutationBuffer);\n mutationBuffer.init(options);\n const observer = new (mutationObserverCtor())(\n callbackWrapper(mutationBuffer.processMutations.bind(mutationBuffer))\n );\n observer.observe(rootEl, {\n attributes: true,\n attributeOldValue: true,\n characterData: true,\n characterDataOldValue: true,\n childList: true,\n subtree: true\n });\n return observer;\n}\nfunction initMoveObserver({\n mousemoveCb,\n sampling,\n doc,\n mirror: mirror2\n}) {\n if (sampling.mousemove === false) {\n return () => {\n };\n }\n const threshold = typeof sampling.mousemove === \"number\" ? sampling.mousemove : 50;\n const callbackThreshold = typeof sampling.mousemoveCallback === \"number\" ? sampling.mousemoveCallback : 500;\n let positions = [];\n let timeBaseline;\n const wrappedCb = throttle(\n callbackWrapper(\n (source) => {\n const totalOffset = Date.now() - timeBaseline;\n mousemoveCb(\n positions.map((p) => {\n p.timeOffset -= totalOffset;\n return p;\n }),\n source\n );\n positions = [];\n timeBaseline = null;\n }\n ),\n callbackThreshold\n );\n const updatePosition = callbackWrapper(\n throttle(\n callbackWrapper((evt) => {\n const target = getEventTarget(evt);\n const { clientX, clientY } = legacy_isTouchEvent(evt) ? evt.changedTouches[0] : evt;\n if (!timeBaseline) {\n timeBaseline = nowTimestamp();\n }\n positions.push({\n x: clientX,\n y: clientY,\n id: mirror2.getId(target),\n timeOffset: nowTimestamp() - timeBaseline\n });\n wrappedCb(\n typeof DragEvent !== \"undefined\" && evt instanceof DragEvent ? IncrementalSource.Drag : evt instanceof MouseEvent ? IncrementalSource.MouseMove : IncrementalSource.TouchMove\n );\n }),\n threshold,\n {\n trailing: false\n }\n )\n );\n const handlers = [\n on(\"mousemove\", updatePosition, doc),\n on(\"touchmove\", updatePosition, doc),\n on(\"drag\", updatePosition, doc)\n ];\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initMouseInteractionObserver({\n mouseInteractionCb,\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n sampling\n}) {\n if (sampling.mouseInteraction === false) {\n return () => {\n };\n }\n const disableMap = sampling.mouseInteraction === true || sampling.mouseInteraction === void 0 ? {} : sampling.mouseInteraction;\n const handlers = [];\n let currentPointerType = null;\n const getHandler = (eventKey) => {\n return (event) => {\n const target = getEventTarget(event);\n if (isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n let pointerType = null;\n let thisEventKey = eventKey;\n if (\"pointerType\" in event) {\n switch (event.pointerType) {\n case \"mouse\":\n pointerType = PointerTypes.Mouse;\n break;\n case \"touch\":\n pointerType = PointerTypes.Touch;\n break;\n case \"pen\":\n pointerType = PointerTypes.Pen;\n break;\n }\n if (pointerType === PointerTypes.Touch) {\n if (MouseInteractions[eventKey] === MouseInteractions.MouseDown) {\n thisEventKey = \"TouchStart\";\n } else if (MouseInteractions[eventKey] === MouseInteractions.MouseUp) {\n thisEventKey = \"TouchEnd\";\n }\n } else if (pointerType === PointerTypes.Pen) ;\n } else if (legacy_isTouchEvent(event)) {\n pointerType = PointerTypes.Touch;\n }\n if (pointerType !== null) {\n currentPointerType = pointerType;\n if (thisEventKey.startsWith(\"Touch\") && pointerType === PointerTypes.Touch || thisEventKey.startsWith(\"Mouse\") && pointerType === PointerTypes.Mouse) {\n pointerType = null;\n }\n } else if (MouseInteractions[eventKey] === MouseInteractions.Click) {\n pointerType = currentPointerType;\n currentPointerType = null;\n }\n const e2 = legacy_isTouchEvent(event) ? event.changedTouches[0] : event;\n if (!e2) {\n return;\n }\n const id = mirror2.getId(target);\n const { clientX, clientY } = e2;\n callbackWrapper(mouseInteractionCb)({\n type: MouseInteractions[thisEventKey],\n id,\n x: clientX,\n y: clientY,\n ...pointerType !== null && { pointerType }\n });\n };\n };\n Object.keys(MouseInteractions).filter(\n (key) => Number.isNaN(Number(key)) && !key.endsWith(\"_Departed\") && disableMap[key] !== false\n ).forEach((eventKey) => {\n let eventName = toLowerCase(eventKey);\n const handler = getHandler(eventKey);\n if (window.PointerEvent) {\n switch (MouseInteractions[eventKey]) {\n case MouseInteractions.MouseDown:\n case MouseInteractions.MouseUp:\n eventName = eventName.replace(\n \"mouse\",\n \"pointer\"\n );\n break;\n case MouseInteractions.TouchStart:\n case MouseInteractions.TouchEnd:\n return;\n }\n }\n handlers.push(on(eventName, handler, doc));\n });\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initScrollObserver({\n scrollCb,\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n sampling\n}) {\n const updatePosition = callbackWrapper(\n throttle(\n callbackWrapper((evt) => {\n const target = getEventTarget(evt);\n if (!target || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n const id = mirror2.getId(target);\n if (target === doc && doc.defaultView) {\n const scrollLeftTop = getWindowScroll(doc.defaultView);\n scrollCb({\n id,\n x: scrollLeftTop.left,\n y: scrollLeftTop.top\n });\n } else {\n scrollCb({\n id,\n x: target.scrollLeft,\n y: target.scrollTop\n });\n }\n }),\n sampling.scroll || 100\n )\n );\n return on(\"scroll\", updatePosition, doc);\n}\nfunction initViewportResizeObserver({ viewportResizeCb }, { win }) {\n let lastH = -1;\n let lastW = -1;\n const updateDimension = callbackWrapper(\n throttle(\n callbackWrapper(() => {\n const height = getWindowHeight();\n const width = getWindowWidth();\n if (lastH !== height || lastW !== width) {\n viewportResizeCb({\n width: Number(width),\n height: Number(height)\n });\n lastH = height;\n lastW = width;\n }\n }),\n 200\n )\n );\n return on(\"resize\", updateDimension, win);\n}\nconst INPUT_TAGS = [\"INPUT\", \"TEXTAREA\", \"SELECT\"];\nconst lastInputValueMap = /* @__PURE__ */ new WeakMap();\nfunction initInputObserver({\n inputCb,\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n ignoreClass,\n ignoreSelector,\n maskInputOptions,\n maskInputFn,\n sampling,\n userTriggeredOnInput\n}) {\n function eventHandler(event) {\n let target = getEventTarget(event);\n const userTriggered = event.isTrusted;\n const tagName = target && target.tagName;\n if (target && tagName === \"OPTION\") {\n target = index.parentElement(target);\n }\n if (!target || !tagName || INPUT_TAGS.indexOf(tagName) < 0 || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n if (target.classList.contains(ignoreClass) || ignoreSelector && target.matches(ignoreSelector)) {\n return;\n }\n let text = target.value;\n let isChecked = false;\n const type = getInputType(target) || \"\";\n if (type === \"radio\" || type === \"checkbox\") {\n isChecked = target.checked;\n } else if (maskInputOptions[tagName.toLowerCase()] || maskInputOptions[type]) {\n text = maskInputValue({\n element: target,\n maskInputOptions,\n tagName,\n type,\n value: text,\n maskInputFn\n });\n }\n cbWithDedup(\n target,\n userTriggeredOnInput ? { text, isChecked, userTriggered } : { text, isChecked }\n );\n const name = target.name;\n if (type === \"radio\" && name && isChecked) {\n doc.querySelectorAll(`input[type=\"radio\"][name=\"${name}\"]`).forEach((el) => {\n if (el !== target) {\n const text2 = el.value;\n cbWithDedup(\n el,\n userTriggeredOnInput ? { text: text2, isChecked: !isChecked, userTriggered: false } : { text: text2, isChecked: !isChecked }\n );\n }\n });\n }\n }\n function cbWithDedup(target, v2) {\n const lastInputValue = lastInputValueMap.get(target);\n if (!lastInputValue || lastInputValue.text !== v2.text || lastInputValue.isChecked !== v2.isChecked) {\n lastInputValueMap.set(target, v2);\n const id = mirror2.getId(target);\n callbackWrapper(inputCb)({\n ...v2,\n id\n });\n }\n }\n const events = sampling.input === \"last\" ? [\"change\"] : [\"input\", \"change\"];\n const handlers = events.map(\n (eventName) => on(eventName, callbackWrapper(eventHandler), doc)\n );\n const currentWindow = doc.defaultView;\n if (!currentWindow) {\n return () => {\n handlers.forEach((h) => h());\n };\n }\n const propertyDescriptor = currentWindow.Object.getOwnPropertyDescriptor(\n currentWindow.HTMLInputElement.prototype,\n \"value\"\n );\n const hookProperties = [\n [currentWindow.HTMLInputElement.prototype, \"value\"],\n [currentWindow.HTMLInputElement.prototype, \"checked\"],\n [currentWindow.HTMLSelectElement.prototype, \"value\"],\n [currentWindow.HTMLTextAreaElement.prototype, \"value\"],\n // Some UI library use selectedIndex to set select value\n [currentWindow.HTMLSelectElement.prototype, \"selectedIndex\"],\n [currentWindow.HTMLOptionElement.prototype, \"selected\"]\n ];\n if (propertyDescriptor && propertyDescriptor.set) {\n handlers.push(\n ...hookProperties.map(\n (p) => hookSetter(\n p[0],\n p[1],\n {\n set() {\n callbackWrapper(eventHandler)({\n target: this,\n isTrusted: false\n // userTriggered to false as this could well be programmatic\n });\n }\n },\n false,\n currentWindow\n )\n )\n );\n }\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction getNestedCSSRulePositions(rule2) {\n const positions = [];\n function recurse(childRule, pos) {\n if (hasNestedCSSRule(\"CSSGroupingRule\") && childRule.parentRule instanceof CSSGroupingRule || hasNestedCSSRule(\"CSSMediaRule\") && childRule.parentRule instanceof CSSMediaRule || hasNestedCSSRule(\"CSSSupportsRule\") && childRule.parentRule instanceof CSSSupportsRule || hasNestedCSSRule(\"CSSConditionRule\") && childRule.parentRule instanceof CSSConditionRule) {\n const rules2 = Array.from(\n childRule.parentRule.cssRules\n );\n const index2 = rules2.indexOf(childRule);\n pos.unshift(index2);\n } else if (childRule.parentStyleSheet) {\n const rules2 = Array.from(childRule.parentStyleSheet.cssRules);\n const index2 = rules2.indexOf(childRule);\n pos.unshift(index2);\n }\n return pos;\n }\n return recurse(rule2, positions);\n}\nfunction getIdAndStyleId(sheet, mirror2, styleMirror) {\n let id, styleId;\n if (!sheet) return {};\n if (sheet.ownerNode) id = mirror2.getId(sheet.ownerNode);\n else styleId = styleMirror.getId(sheet);\n return {\n styleId,\n id\n };\n}\nfunction initStyleSheetObserver({ styleSheetRuleCb, mirror: mirror2, stylesheetManager }, { win }) {\n if (!win.CSSStyleSheet || !win.CSSStyleSheet.prototype) {\n return () => {\n };\n }\n const insertRule = win.CSSStyleSheet.prototype.insertRule;\n win.CSSStyleSheet.prototype.insertRule = new Proxy(insertRule, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [rule2, index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n adds: [{ rule: rule2, index: index2 }]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n win.CSSStyleSheet.prototype.addRule = function(selector, styleBlock, index2 = this.cssRules.length) {\n const rule2 = `${selector} { ${styleBlock} }`;\n return win.CSSStyleSheet.prototype.insertRule.apply(this, [rule2, index2]);\n };\n const deleteRule = win.CSSStyleSheet.prototype.deleteRule;\n win.CSSStyleSheet.prototype.deleteRule = new Proxy(deleteRule, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n removes: [{ index: index2 }]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n win.CSSStyleSheet.prototype.removeRule = function(index2) {\n return win.CSSStyleSheet.prototype.deleteRule.apply(this, [index2]);\n };\n let replace;\n if (win.CSSStyleSheet.prototype.replace) {\n replace = win.CSSStyleSheet.prototype.replace;\n win.CSSStyleSheet.prototype.replace = new Proxy(replace, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [text] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n replace: text\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n }\n let replaceSync;\n if (win.CSSStyleSheet.prototype.replaceSync) {\n replaceSync = win.CSSStyleSheet.prototype.replaceSync;\n win.CSSStyleSheet.prototype.replaceSync = new Proxy(replaceSync, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [text] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n replaceSync: text\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n }\n const supportedNestedCSSRuleTypes = {};\n if (canMonkeyPatchNestedCSSRule(\"CSSGroupingRule\")) {\n supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\n } else {\n if (canMonkeyPatchNestedCSSRule(\"CSSMediaRule\")) {\n supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\n }\n if (canMonkeyPatchNestedCSSRule(\"CSSConditionRule\")) {\n supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\n }\n if (canMonkeyPatchNestedCSSRule(\"CSSSupportsRule\")) {\n supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\n }\n }\n const unmodifiedFunctions = {};\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n unmodifiedFunctions[typeKey] = {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n insertRule: type.prototype.insertRule,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n deleteRule: type.prototype.deleteRule\n };\n type.prototype.insertRule = new Proxy(\n unmodifiedFunctions[typeKey].insertRule,\n {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [rule2, index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n adds: [\n {\n rule: rule2,\n index: [\n ...getNestedCSSRulePositions(thisArg),\n index2 || 0\n // defaults to 0\n ]\n }\n ]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n }\n );\n type.prototype.deleteRule = new Proxy(\n unmodifiedFunctions[typeKey].deleteRule,\n {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n removes: [\n { index: [...getNestedCSSRulePositions(thisArg), index2] }\n ]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n }\n );\n });\n return callbackWrapper(() => {\n win.CSSStyleSheet.prototype.insertRule = insertRule;\n win.CSSStyleSheet.prototype.deleteRule = deleteRule;\n replace && (win.CSSStyleSheet.prototype.replace = replace);\n replaceSync && (win.CSSStyleSheet.prototype.replaceSync = replaceSync);\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\n type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\n });\n });\n}\nfunction initAdoptedStyleSheetObserver({\n mirror: mirror2,\n stylesheetManager\n}, host2) {\n var _a2, _b, _c;\n let hostId = null;\n if (host2.nodeName === \"#document\") hostId = mirror2.getId(host2);\n else hostId = mirror2.getId(index.host(host2));\n const patchTarget = host2.nodeName === \"#document\" ? (_a2 = host2.defaultView) == null ? void 0 : _a2.Document : (_c = (_b = host2.ownerDocument) == null ? void 0 : _b.defaultView) == null ? void 0 : _c.ShadowRoot;\n const originalPropertyDescriptor = (patchTarget == null ? void 0 : patchTarget.prototype) ? Object.getOwnPropertyDescriptor(\n patchTarget == null ? void 0 : patchTarget.prototype,\n \"adoptedStyleSheets\"\n ) : void 0;\n if (hostId === null || hostId === -1 || !patchTarget || !originalPropertyDescriptor)\n return () => {\n };\n Object.defineProperty(host2, \"adoptedStyleSheets\", {\n configurable: originalPropertyDescriptor.configurable,\n enumerable: originalPropertyDescriptor.enumerable,\n get() {\n var _a3;\n return (_a3 = originalPropertyDescriptor.get) == null ? void 0 : _a3.call(this);\n },\n set(sheets) {\n var _a3;\n const result2 = (_a3 = originalPropertyDescriptor.set) == null ? void 0 : _a3.call(this, sheets);\n if (hostId !== null && hostId !== -1) {\n try {\n stylesheetManager.adoptStyleSheets(sheets, hostId);\n } catch (e2) {\n }\n }\n return result2;\n }\n });\n return callbackWrapper(() => {\n Object.defineProperty(host2, \"adoptedStyleSheets\", {\n configurable: originalPropertyDescriptor.configurable,\n enumerable: originalPropertyDescriptor.enumerable,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n get: originalPropertyDescriptor.get,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n set: originalPropertyDescriptor.set\n });\n });\n}\nfunction initStyleDeclarationObserver({\n styleDeclarationCb,\n mirror: mirror2,\n ignoreCSSAttributes,\n stylesheetManager\n}, { win }) {\n const setProperty = win.CSSStyleDeclaration.prototype.setProperty;\n win.CSSStyleDeclaration.prototype.setProperty = new Proxy(setProperty, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n var _a2;\n const [property, value, priority] = argumentsList;\n if (ignoreCSSAttributes.has(property)) {\n return setProperty.apply(thisArg, [property, value, priority]);\n }\n const { id, styleId } = getIdAndStyleId(\n (_a2 = thisArg.parentRule) == null ? void 0 : _a2.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleDeclarationCb({\n id,\n styleId,\n set: {\n property,\n value,\n priority\n },\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n index: getNestedCSSRulePositions(thisArg.parentRule)\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n const removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = new Proxy(removeProperty, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n var _a2;\n const [property] = argumentsList;\n if (ignoreCSSAttributes.has(property)) {\n return removeProperty.apply(thisArg, [property]);\n }\n const { id, styleId } = getIdAndStyleId(\n (_a2 = thisArg.parentRule) == null ? void 0 : _a2.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleDeclarationCb({\n id,\n styleId,\n remove: {\n property\n },\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n index: getNestedCSSRulePositions(thisArg.parentRule)\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n return callbackWrapper(() => {\n win.CSSStyleDeclaration.prototype.setProperty = setProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\n });\n}\nfunction initMediaInteractionObserver({\n mediaInteractionCb,\n blockClass,\n blockSelector,\n mirror: mirror2,\n sampling,\n doc\n}) {\n const handler = callbackWrapper(\n (type) => throttle(\n callbackWrapper((event) => {\n const target = getEventTarget(event);\n if (!target || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n const { currentTime, volume, muted, playbackRate, loop } = target;\n mediaInteractionCb({\n type,\n id: mirror2.getId(target),\n currentTime,\n volume,\n muted,\n playbackRate,\n loop\n });\n }),\n sampling.media || 500\n )\n );\n const handlers = [\n on(\"play\", handler(MediaInteractions.Play), doc),\n on(\"pause\", handler(MediaInteractions.Pause), doc),\n on(\"seeked\", handler(MediaInteractions.Seeked), doc),\n on(\"volumechange\", handler(MediaInteractions.VolumeChange), doc),\n on(\"ratechange\", handler(MediaInteractions.RateChange), doc)\n ];\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initFontObserver({ fontCb, doc }) {\n const win = doc.defaultView;\n if (!win) {\n return () => {\n };\n }\n const handlers = [];\n const fontMap = /* @__PURE__ */ new WeakMap();\n const originalFontFace = win.FontFace;\n win.FontFace = function FontFace2(family, source, descriptors) {\n const fontFace = new originalFontFace(family, source, descriptors);\n fontMap.set(fontFace, {\n family,\n buffer: typeof source !== \"string\",\n descriptors,\n fontSource: typeof source === \"string\" ? source : JSON.stringify(Array.from(new Uint8Array(source)))\n });\n return fontFace;\n };\n const restoreHandler = patch(\n doc.fonts,\n \"add\",\n function(original) {\n return function(fontFace) {\n setTimeout(\n callbackWrapper(() => {\n const p = fontMap.get(fontFace);\n if (p) {\n fontCb(p);\n fontMap.delete(fontFace);\n }\n }),\n 0\n );\n return original.apply(this, [fontFace]);\n };\n }\n );\n handlers.push(() => {\n win.FontFace = originalFontFace;\n });\n handlers.push(restoreHandler);\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initSelectionObserver(param) {\n const { doc, mirror: mirror2, blockClass, blockSelector, selectionCb } = param;\n let collapsed = true;\n const updateSelection = callbackWrapper(() => {\n const selection = doc.getSelection();\n if (!selection || collapsed && (selection == null ? void 0 : selection.isCollapsed)) return;\n collapsed = selection.isCollapsed || false;\n const ranges = [];\n const count = selection.rangeCount || 0;\n for (let i2 = 0; i2 < count; i2++) {\n const range = selection.getRangeAt(i2);\n const { startContainer, startOffset, endContainer, endOffset } = range;\n const blocked = isBlocked(startContainer, blockClass, blockSelector, true) || isBlocked(endContainer, blockClass, blockSelector, true);\n if (blocked) continue;\n ranges.push({\n start: mirror2.getId(startContainer),\n startOffset,\n end: mirror2.getId(endContainer),\n endOffset\n });\n }\n selectionCb({ ranges });\n });\n updateSelection();\n return on(\"selectionchange\", updateSelection);\n}\nfunction initCustomElementObserver({\n doc,\n customElementCb\n}) {\n const win = doc.defaultView;\n if (!win || !win.customElements) return () => {\n };\n const restoreHandler = patch(\n win.customElements,\n \"define\",\n function(original) {\n return function(name, constructor, options) {\n try {\n customElementCb({\n define: {\n name\n }\n });\n } catch (e2) {\n console.warn(`Custom element callback failed for ${name}`);\n }\n return original.apply(this, [name, constructor, options]);\n };\n }\n );\n return restoreHandler;\n}\nfunction mergeHooks(o2, hooks) {\n const {\n mutationCb,\n mousemoveCb,\n mouseInteractionCb,\n scrollCb,\n viewportResizeCb,\n inputCb,\n mediaInteractionCb,\n styleSheetRuleCb,\n styleDeclarationCb,\n canvasMutationCb,\n fontCb,\n selectionCb,\n customElementCb\n } = o2;\n o2.mutationCb = (...p) => {\n if (hooks.mutation) {\n hooks.mutation(...p);\n }\n mutationCb(...p);\n };\n o2.mousemoveCb = (...p) => {\n if (hooks.mousemove) {\n hooks.mousemove(...p);\n }\n mousemoveCb(...p);\n };\n o2.mouseInteractionCb = (...p) => {\n if (hooks.mouseInteraction) {\n hooks.mouseInteraction(...p);\n }\n mouseInteractionCb(...p);\n };\n o2.scrollCb = (...p) => {\n if (hooks.scroll) {\n hooks.scroll(...p);\n }\n scrollCb(...p);\n };\n o2.viewportResizeCb = (...p) => {\n if (hooks.viewportResize) {\n hooks.viewportResize(...p);\n }\n viewportResizeCb(...p);\n };\n o2.inputCb = (...p) => {\n if (hooks.input) {\n hooks.input(...p);\n }\n inputCb(...p);\n };\n o2.mediaInteractionCb = (...p) => {\n if (hooks.mediaInteaction) {\n hooks.mediaInteaction(...p);\n }\n mediaInteractionCb(...p);\n };\n o2.styleSheetRuleCb = (...p) => {\n if (hooks.styleSheetRule) {\n hooks.styleSheetRule(...p);\n }\n styleSheetRuleCb(...p);\n };\n o2.styleDeclarationCb = (...p) => {\n if (hooks.styleDeclaration) {\n hooks.styleDeclaration(...p);\n }\n styleDeclarationCb(...p);\n };\n o2.canvasMutationCb = (...p) => {\n if (hooks.canvasMutation) {\n hooks.canvasMutation(...p);\n }\n canvasMutationCb(...p);\n };\n o2.fontCb = (...p) => {\n if (hooks.font) {\n hooks.font(...p);\n }\n fontCb(...p);\n };\n o2.selectionCb = (...p) => {\n if (hooks.selection) {\n hooks.selection(...p);\n }\n selectionCb(...p);\n };\n o2.customElementCb = (...c2) => {\n if (hooks.customElement) {\n hooks.customElement(...c2);\n }\n customElementCb(...c2);\n };\n}\nfunction initObservers(o2, hooks = {}) {\n const currentWindow = o2.doc.defaultView;\n if (!currentWindow) {\n return () => {\n };\n }\n mergeHooks(o2, hooks);\n let mutationObserver;\n if (o2.recordDOM) {\n mutationObserver = initMutationObserver(o2, o2.doc);\n }\n const mousemoveHandler = initMoveObserver(o2);\n const mouseInteractionHandler = initMouseInteractionObserver(o2);\n const scrollHandler = initScrollObserver(o2);\n const viewportResizeHandler = initViewportResizeObserver(o2, {\n win: currentWindow\n });\n const inputHandler = initInputObserver(o2);\n const mediaInteractionHandler = initMediaInteractionObserver(o2);\n let styleSheetObserver = () => {\n };\n let adoptedStyleSheetObserver = () => {\n };\n let styleDeclarationObserver = () => {\n };\n let fontObserver = () => {\n };\n if (o2.recordDOM) {\n styleSheetObserver = initStyleSheetObserver(o2, { win: currentWindow });\n adoptedStyleSheetObserver = initAdoptedStyleSheetObserver(o2, o2.doc);\n styleDeclarationObserver = initStyleDeclarationObserver(o2, {\n win: currentWindow\n });\n if (o2.collectFonts) {\n fontObserver = initFontObserver(o2);\n }\n }\n const selectionObserver = initSelectionObserver(o2);\n const customElementObserver = initCustomElementObserver(o2);\n const pluginHandlers = [];\n for (const plugin3 of o2.plugins) {\n pluginHandlers.push(\n plugin3.observer(plugin3.callback, currentWindow, plugin3.options)\n );\n }\n return callbackWrapper(() => {\n mutationBuffers.forEach((b) => b.reset());\n mutationObserver == null ? void 0 : mutationObserver.disconnect();\n mousemoveHandler();\n mouseInteractionHandler();\n scrollHandler();\n viewportResizeHandler();\n inputHandler();\n mediaInteractionHandler();\n styleSheetObserver();\n adoptedStyleSheetObserver();\n styleDeclarationObserver();\n fontObserver();\n selectionObserver();\n customElementObserver();\n pluginHandlers.forEach((h) => h());\n });\n}\nfunction hasNestedCSSRule(prop) {\n return typeof window[prop] !== \"undefined\";\n}\nfunction canMonkeyPatchNestedCSSRule(prop) {\n return Boolean(\n typeof window[prop] !== \"undefined\" && // Note: Generally, this check _shouldn't_ be necessary\n // However, in some scenarios (e.g. jsdom) this can sometimes fail, so we check for it here\n window[prop].prototype && \"insertRule\" in window[prop].prototype && \"deleteRule\" in window[prop].prototype\n );\n}\nclass CrossOriginIframeMirror {\n constructor(generateIdFn) {\n __publicField(this, \"iframeIdToRemoteIdMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"iframeRemoteIdToIdMap\", /* @__PURE__ */ new WeakMap());\n this.generateIdFn = generateIdFn;\n }\n getId(iframe, remoteId, idToRemoteMap, remoteToIdMap) {\n const idToRemoteIdMap = idToRemoteMap || this.getIdToRemoteIdMap(iframe);\n const remoteIdToIdMap = remoteToIdMap || this.getRemoteIdToIdMap(iframe);\n let id = idToRemoteIdMap.get(remoteId);\n if (!id) {\n id = this.generateIdFn();\n idToRemoteIdMap.set(remoteId, id);\n remoteIdToIdMap.set(id, remoteId);\n }\n return id;\n }\n getIds(iframe, remoteId) {\n const idToRemoteIdMap = this.getIdToRemoteIdMap(iframe);\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n return remoteId.map(\n (id) => this.getId(iframe, id, idToRemoteIdMap, remoteIdToIdMap)\n );\n }\n getRemoteId(iframe, id, map) {\n const remoteIdToIdMap = map || this.getRemoteIdToIdMap(iframe);\n if (typeof id !== \"number\") return id;\n const remoteId = remoteIdToIdMap.get(id);\n if (!remoteId) return -1;\n return remoteId;\n }\n getRemoteIds(iframe, ids) {\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n return ids.map((id) => this.getRemoteId(iframe, id, remoteIdToIdMap));\n }\n reset(iframe) {\n if (!iframe) {\n this.iframeIdToRemoteIdMap = /* @__PURE__ */ new WeakMap();\n this.iframeRemoteIdToIdMap = /* @__PURE__ */ new WeakMap();\n return;\n }\n this.iframeIdToRemoteIdMap.delete(iframe);\n this.iframeRemoteIdToIdMap.delete(iframe);\n }\n getIdToRemoteIdMap(iframe) {\n let idToRemoteIdMap = this.iframeIdToRemoteIdMap.get(iframe);\n if (!idToRemoteIdMap) {\n idToRemoteIdMap = /* @__PURE__ */ new Map();\n this.iframeIdToRemoteIdMap.set(iframe, idToRemoteIdMap);\n }\n return idToRemoteIdMap;\n }\n getRemoteIdToIdMap(iframe) {\n let remoteIdToIdMap = this.iframeRemoteIdToIdMap.get(iframe);\n if (!remoteIdToIdMap) {\n remoteIdToIdMap = /* @__PURE__ */ new Map();\n this.iframeRemoteIdToIdMap.set(iframe, remoteIdToIdMap);\n }\n return remoteIdToIdMap;\n }\n}\nclass IframeManager {\n constructor(options) {\n __publicField(this, \"iframes\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"crossOriginIframeMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"crossOriginIframeMirror\", new CrossOriginIframeMirror(genId));\n __publicField(this, \"crossOriginIframeStyleMirror\");\n __publicField(this, \"crossOriginIframeRootIdMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"mirror\");\n __publicField(this, \"mutationCb\");\n __publicField(this, \"wrappedEmit\");\n __publicField(this, \"loadListener\");\n __publicField(this, \"stylesheetManager\");\n __publicField(this, \"recordCrossOriginIframes\");\n this.mutationCb = options.mutationCb;\n this.wrappedEmit = options.wrappedEmit;\n this.stylesheetManager = options.stylesheetManager;\n this.recordCrossOriginIframes = options.recordCrossOriginIframes;\n this.crossOriginIframeStyleMirror = new CrossOriginIframeMirror(\n this.stylesheetManager.styleMirror.generateId.bind(\n this.stylesheetManager.styleMirror\n )\n );\n this.mirror = options.mirror;\n if (this.recordCrossOriginIframes) {\n window.addEventListener(\"message\", this.handleMessage.bind(this));\n }\n }\n addIframe(iframeEl) {\n this.iframes.set(iframeEl, true);\n if (iframeEl.contentWindow)\n this.crossOriginIframeMap.set(iframeEl.contentWindow, iframeEl);\n }\n addLoadListener(cb) {\n this.loadListener = cb;\n }\n attachIframe(iframeEl, childSn) {\n var _a2, _b;\n this.mutationCb({\n adds: [\n {\n parentId: this.mirror.getId(iframeEl),\n nextId: null,\n node: childSn\n }\n ],\n removes: [],\n texts: [],\n attributes: [],\n isAttachIframe: true\n });\n if (this.recordCrossOriginIframes)\n (_a2 = iframeEl.contentWindow) == null ? void 0 : _a2.addEventListener(\n \"message\",\n this.handleMessage.bind(this)\n );\n (_b = this.loadListener) == null ? void 0 : _b.call(this, iframeEl);\n if (iframeEl.contentDocument && iframeEl.contentDocument.adoptedStyleSheets && iframeEl.contentDocument.adoptedStyleSheets.length > 0)\n this.stylesheetManager.adoptStyleSheets(\n iframeEl.contentDocument.adoptedStyleSheets,\n this.mirror.getId(iframeEl.contentDocument)\n );\n }\n handleMessage(message) {\n const crossOriginMessageEvent = message;\n if (crossOriginMessageEvent.data.type !== \"rrweb\" || // To filter out the rrweb messages which are forwarded by some sites.\n crossOriginMessageEvent.origin !== crossOriginMessageEvent.data.origin)\n return;\n const iframeSourceWindow = message.source;\n if (!iframeSourceWindow) return;\n const iframeEl = this.crossOriginIframeMap.get(message.source);\n if (!iframeEl) return;\n const transformedEvent = this.transformCrossOriginEvent(\n iframeEl,\n crossOriginMessageEvent.data.event\n );\n if (transformedEvent)\n this.wrappedEmit(\n transformedEvent,\n crossOriginMessageEvent.data.isCheckout\n );\n }\n transformCrossOriginEvent(iframeEl, e2) {\n var _a2;\n switch (e2.type) {\n case EventType.FullSnapshot: {\n this.crossOriginIframeMirror.reset(iframeEl);\n this.crossOriginIframeStyleMirror.reset(iframeEl);\n this.replaceIdOnNode(e2.data.node, iframeEl);\n const rootId = e2.data.node.id;\n this.crossOriginIframeRootIdMap.set(iframeEl, rootId);\n this.patchRootIdOnNode(e2.data.node, rootId);\n return {\n timestamp: e2.timestamp,\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Mutation,\n adds: [\n {\n parentId: this.mirror.getId(iframeEl),\n nextId: null,\n node: e2.data.node\n }\n ],\n removes: [],\n texts: [],\n attributes: [],\n isAttachIframe: true\n }\n };\n }\n case EventType.Meta:\n case EventType.Load:\n case EventType.DomContentLoaded: {\n return false;\n }\n case EventType.Plugin: {\n return e2;\n }\n case EventType.Custom: {\n this.replaceIds(\n e2.data.payload,\n iframeEl,\n [\"id\", \"parentId\", \"previousId\", \"nextId\"]\n );\n return e2;\n }\n case EventType.IncrementalSnapshot: {\n switch (e2.data.source) {\n case IncrementalSource.Mutation: {\n e2.data.adds.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\n \"parentId\",\n \"nextId\",\n \"previousId\"\n ]);\n this.replaceIdOnNode(n2.node, iframeEl);\n const rootId = this.crossOriginIframeRootIdMap.get(iframeEl);\n rootId && this.patchRootIdOnNode(n2.node, rootId);\n });\n e2.data.removes.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\"parentId\", \"id\"]);\n });\n e2.data.attributes.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\"id\"]);\n });\n e2.data.texts.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\"id\"]);\n });\n return e2;\n }\n case IncrementalSource.Drag:\n case IncrementalSource.TouchMove:\n case IncrementalSource.MouseMove: {\n e2.data.positions.forEach((p) => {\n this.replaceIds(p, iframeEl, [\"id\"]);\n });\n return e2;\n }\n case IncrementalSource.ViewportResize: {\n return false;\n }\n case IncrementalSource.MediaInteraction:\n case IncrementalSource.MouseInteraction:\n case IncrementalSource.Scroll:\n case IncrementalSource.CanvasMutation:\n case IncrementalSource.Input: {\n this.replaceIds(e2.data, iframeEl, [\"id\"]);\n return e2;\n }\n case IncrementalSource.StyleSheetRule:\n case IncrementalSource.StyleDeclaration: {\n this.replaceIds(e2.data, iframeEl, [\"id\"]);\n this.replaceStyleIds(e2.data, iframeEl, [\"styleId\"]);\n return e2;\n }\n case IncrementalSource.Font: {\n return e2;\n }\n case IncrementalSource.Selection: {\n e2.data.ranges.forEach((range) => {\n this.replaceIds(range, iframeEl, [\"start\", \"end\"]);\n });\n return e2;\n }\n case IncrementalSource.AdoptedStyleSheet: {\n this.replaceIds(e2.data, iframeEl, [\"id\"]);\n this.replaceStyleIds(e2.data, iframeEl, [\"styleIds\"]);\n (_a2 = e2.data.styles) == null ? void 0 : _a2.forEach((style) => {\n this.replaceStyleIds(style, iframeEl, [\"styleId\"]);\n });\n return e2;\n }\n }\n }\n }\n return false;\n }\n replace(iframeMirror, obj, iframeEl, keys) {\n for (const key of keys) {\n if (!Array.isArray(obj[key]) && typeof obj[key] !== \"number\") continue;\n if (Array.isArray(obj[key])) {\n obj[key] = iframeMirror.getIds(\n iframeEl,\n obj[key]\n );\n } else {\n obj[key] = iframeMirror.getId(iframeEl, obj[key]);\n }\n }\n return obj;\n }\n replaceIds(obj, iframeEl, keys) {\n return this.replace(this.crossOriginIframeMirror, obj, iframeEl, keys);\n }\n replaceStyleIds(obj, iframeEl, keys) {\n return this.replace(this.crossOriginIframeStyleMirror, obj, iframeEl, keys);\n }\n replaceIdOnNode(node2, iframeEl) {\n this.replaceIds(node2, iframeEl, [\"id\", \"rootId\"]);\n if (\"childNodes\" in node2) {\n node2.childNodes.forEach((child) => {\n this.replaceIdOnNode(child, iframeEl);\n });\n }\n }\n patchRootIdOnNode(node2, rootId) {\n if (node2.type !== NodeType.Document && !node2.rootId) node2.rootId = rootId;\n if (\"childNodes\" in node2) {\n node2.childNodes.forEach((child) => {\n this.patchRootIdOnNode(child, rootId);\n });\n }\n }\n}\nclass ShadowDomManager {\n constructor(options) {\n __publicField(this, \"shadowDoms\", /* @__PURE__ */ new WeakSet());\n __publicField(this, \"mutationCb\");\n __publicField(this, \"scrollCb\");\n __publicField(this, \"bypassOptions\");\n __publicField(this, \"mirror\");\n __publicField(this, \"restoreHandlers\", []);\n this.mutationCb = options.mutationCb;\n this.scrollCb = options.scrollCb;\n this.bypassOptions = options.bypassOptions;\n this.mirror = options.mirror;\n this.init();\n }\n init() {\n this.reset();\n this.patchAttachShadow(Element, document);\n }\n addShadowRoot(shadowRoot2, doc) {\n if (!isNativeShadowDom(shadowRoot2)) return;\n if (this.shadowDoms.has(shadowRoot2)) return;\n this.shadowDoms.add(shadowRoot2);\n const observer = initMutationObserver(\n {\n ...this.bypassOptions,\n doc,\n mutationCb: this.mutationCb,\n mirror: this.mirror,\n shadowDomManager: this\n },\n shadowRoot2\n );\n this.restoreHandlers.push(() => observer.disconnect());\n this.restoreHandlers.push(\n initScrollObserver({\n ...this.bypassOptions,\n scrollCb: this.scrollCb,\n // https://gist.github.com/praveenpuglia/0832da687ed5a5d7a0907046c9ef1813\n // scroll is not allowed to pass the boundary, so we need to listen the shadow document\n doc: shadowRoot2,\n mirror: this.mirror\n })\n );\n setTimeout(() => {\n if (shadowRoot2.adoptedStyleSheets && shadowRoot2.adoptedStyleSheets.length > 0)\n this.bypassOptions.stylesheetManager.adoptStyleSheets(\n shadowRoot2.adoptedStyleSheets,\n this.mirror.getId(index.host(shadowRoot2))\n );\n this.restoreHandlers.push(\n initAdoptedStyleSheetObserver(\n {\n mirror: this.mirror,\n stylesheetManager: this.bypassOptions.stylesheetManager\n },\n shadowRoot2\n )\n );\n }, 0);\n }\n /**\n * Monkey patch 'attachShadow' of an IFrameElement to observe newly added shadow doms.\n */\n observeAttachShadow(iframeElement) {\n if (!iframeElement.contentWindow || !iframeElement.contentDocument) return;\n this.patchAttachShadow(\n iframeElement.contentWindow.Element,\n iframeElement.contentDocument\n );\n }\n /**\n * Patch 'attachShadow' to observe newly added shadow doms.\n */\n patchAttachShadow(element, doc) {\n const manager = this;\n this.restoreHandlers.push(\n patch(\n element.prototype,\n \"attachShadow\",\n function(original) {\n return function(option) {\n const sRoot = original.call(this, option);\n const shadowRootEl = index.shadowRoot(this);\n if (shadowRootEl && inDom(this))\n manager.addShadowRoot(shadowRootEl, doc);\n return sRoot;\n };\n }\n )\n );\n }\n reset() {\n this.restoreHandlers.forEach((handler) => {\n try {\n handler();\n } catch (e2) {\n }\n });\n this.restoreHandlers = [];\n this.shadowDoms = /* @__PURE__ */ new WeakSet();\n }\n}\nvar chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nvar lookup = typeof Uint8Array === \"undefined\" ? [] : new Uint8Array(256);\nfor (var i$1 = 0; i$1 < chars.length; i$1++) {\n lookup[chars.charCodeAt(i$1)] = i$1;\n}\nvar encode = function(arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i2, len = bytes.length, base64 = \"\";\n for (i2 = 0; i2 < len; i2 += 3) {\n base64 += chars[bytes[i2] >> 2];\n base64 += chars[(bytes[i2] & 3) << 4 | bytes[i2 + 1] >> 4];\n base64 += chars[(bytes[i2 + 1] & 15) << 2 | bytes[i2 + 2] >> 6];\n base64 += chars[bytes[i2 + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + \"=\";\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + \"==\";\n }\n return base64;\n};\nconst canvasVarMap = /* @__PURE__ */ new Map();\nfunction variableListFor$1(ctx, ctor) {\n let contextMap = canvasVarMap.get(ctx);\n if (!contextMap) {\n contextMap = /* @__PURE__ */ new Map();\n canvasVarMap.set(ctx, contextMap);\n }\n if (!contextMap.has(ctor)) {\n contextMap.set(ctor, []);\n }\n return contextMap.get(ctor);\n}\nconst saveWebGLVar = (value, win, ctx) => {\n if (!value || !(isInstanceOfWebGLObject(value, win) || typeof value === \"object\"))\n return;\n const name = value.constructor.name;\n const list2 = variableListFor$1(ctx, name);\n let index2 = list2.indexOf(value);\n if (index2 === -1) {\n index2 = list2.length;\n list2.push(value);\n }\n return index2;\n};\nfunction serializeArg(value, win, ctx) {\n if (value instanceof Array) {\n return value.map((arg) => serializeArg(arg, win, ctx));\n } else if (value === null) {\n return value;\n } else if (value instanceof Float32Array || value instanceof Float64Array || value instanceof Int32Array || value instanceof Uint32Array || value instanceof Uint8Array || value instanceof Uint16Array || value instanceof Int16Array || value instanceof Int8Array || value instanceof Uint8ClampedArray) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [Object.values(value)]\n };\n } else if (\n // SharedArrayBuffer disabled on most browsers due to spectre.\n // More info: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/SharedArrayBuffer\n // value instanceof SharedArrayBuffer ||\n value instanceof ArrayBuffer\n ) {\n const name = value.constructor.name;\n const base64 = encode(value);\n return {\n rr_type: name,\n base64\n };\n } else if (value instanceof DataView) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [\n serializeArg(value.buffer, win, ctx),\n value.byteOffset,\n value.byteLength\n ]\n };\n } else if (value instanceof HTMLImageElement) {\n const name = value.constructor.name;\n const { src } = value;\n return {\n rr_type: name,\n src\n };\n } else if (value instanceof HTMLCanvasElement) {\n const name = \"HTMLImageElement\";\n const src = value.toDataURL();\n return {\n rr_type: name,\n src\n };\n } else if (value instanceof ImageData) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [serializeArg(value.data, win, ctx), value.width, value.height]\n };\n } else if (isInstanceOfWebGLObject(value, win) || typeof value === \"object\") {\n const name = value.constructor.name;\n const index2 = saveWebGLVar(value, win, ctx);\n return {\n rr_type: name,\n index: index2\n };\n }\n return value;\n}\nconst serializeArgs = (args, win, ctx) => {\n return args.map((arg) => serializeArg(arg, win, ctx));\n};\nconst isInstanceOfWebGLObject = (value, win) => {\n const webGLConstructorNames = [\n \"WebGLActiveInfo\",\n \"WebGLBuffer\",\n \"WebGLFramebuffer\",\n \"WebGLProgram\",\n \"WebGLRenderbuffer\",\n \"WebGLShader\",\n \"WebGLShaderPrecisionFormat\",\n \"WebGLTexture\",\n \"WebGLUniformLocation\",\n \"WebGLVertexArrayObject\",\n // In old Chrome versions, value won't be an instanceof WebGLVertexArrayObject.\n \"WebGLVertexArrayObjectOES\"\n ];\n const supportedWebGLConstructorNames = webGLConstructorNames.filter(\n (name) => typeof win[name] === \"function\"\n );\n return Boolean(\n supportedWebGLConstructorNames.find(\n (name) => value instanceof win[name]\n )\n );\n};\nfunction initCanvas2DMutationObserver(cb, win, blockClass, blockSelector) {\n const handlers = [];\n const props2D = Object.getOwnPropertyNames(\n win.CanvasRenderingContext2D.prototype\n );\n for (const prop of props2D) {\n try {\n if (typeof win.CanvasRenderingContext2D.prototype[prop] !== \"function\") {\n continue;\n }\n const restoreHandler = patch(\n win.CanvasRenderingContext2D.prototype,\n prop,\n function(original) {\n return function(...args) {\n if (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\n setTimeout(() => {\n const recordArgs = serializeArgs(args, win, this);\n cb(this.canvas, {\n type: CanvasContext[\"2D\"],\n property: prop,\n args: recordArgs\n });\n }, 0);\n }\n return original.apply(this, args);\n };\n }\n );\n handlers.push(restoreHandler);\n } catch {\n const hookHandler = hookSetter(\n win.CanvasRenderingContext2D.prototype,\n prop,\n {\n set(v2) {\n cb(this.canvas, {\n type: CanvasContext[\"2D\"],\n property: prop,\n args: [v2],\n setter: true\n });\n }\n }\n );\n handlers.push(hookHandler);\n }\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\nfunction getNormalizedContextName(contextType) {\n return contextType === \"experimental-webgl\" ? \"webgl\" : contextType;\n}\nfunction initCanvasContextObserver(win, blockClass, blockSelector, setPreserveDrawingBufferToTrue) {\n const handlers = [];\n try {\n const restoreHandler = patch(\n win.HTMLCanvasElement.prototype,\n \"getContext\",\n function(original) {\n return function(contextType, ...args) {\n if (!isBlocked(this, blockClass, blockSelector, true)) {\n const ctxName = getNormalizedContextName(contextType);\n if (!(\"__context\" in this)) this.__context = ctxName;\n if (setPreserveDrawingBufferToTrue && [\"webgl\", \"webgl2\"].includes(ctxName)) {\n if (args[0] && typeof args[0] === \"object\") {\n const contextAttributes = args[0];\n if (!contextAttributes.preserveDrawingBuffer) {\n contextAttributes.preserveDrawingBuffer = true;\n }\n } else {\n args.splice(0, 1, {\n preserveDrawingBuffer: true\n });\n }\n }\n }\n return original.apply(this, [contextType, ...args]);\n };\n }\n );\n handlers.push(restoreHandler);\n } catch {\n console.error(\"failed to patch HTMLCanvasElement.prototype.getContext\");\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\nfunction patchGLPrototype(prototype, type, cb, blockClass, blockSelector, win) {\n const handlers = [];\n const props = Object.getOwnPropertyNames(prototype);\n for (const prop of props) {\n if (\n //prop.startsWith('get') || // e.g. getProgramParameter, but too risky\n [\n \"isContextLost\",\n \"canvas\",\n \"drawingBufferWidth\",\n \"drawingBufferHeight\"\n ].includes(prop)\n ) {\n continue;\n }\n try {\n if (typeof prototype[prop] !== \"function\") {\n continue;\n }\n const restoreHandler = patch(\n prototype,\n prop,\n function(original) {\n return function(...args) {\n const result2 = original.apply(this, args);\n saveWebGLVar(result2, win, this);\n if (\"tagName\" in this.canvas && !isBlocked(this.canvas, blockClass, blockSelector, true)) {\n const recordArgs = serializeArgs(args, win, this);\n const mutation = {\n type,\n property: prop,\n args: recordArgs\n };\n cb(this.canvas, mutation);\n }\n return result2;\n };\n }\n );\n handlers.push(restoreHandler);\n } catch {\n const hookHandler = hookSetter(prototype, prop, {\n set(v2) {\n cb(this.canvas, {\n type,\n property: prop,\n args: [v2],\n setter: true\n });\n }\n });\n handlers.push(hookHandler);\n }\n }\n return handlers;\n}\nfunction initCanvasWebGLMutationObserver(cb, win, blockClass, blockSelector) {\n const handlers = [];\n handlers.push(\n ...patchGLPrototype(\n win.WebGLRenderingContext.prototype,\n CanvasContext.WebGL,\n cb,\n blockClass,\n blockSelector,\n win\n )\n );\n if (typeof win.WebGL2RenderingContext !== \"undefined\") {\n handlers.push(\n ...patchGLPrototype(\n win.WebGL2RenderingContext.prototype,\n CanvasContext.WebGL2,\n cb,\n blockClass,\n blockSelector,\n win\n )\n );\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\nconst encodedJs = \"KGZ1bmN0aW9uKCkgewogICJ1c2Ugc3RyaWN0IjsKICB2YXIgY2hhcnMgPSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7CiAgdmFyIGxvb2t1cCA9IHR5cGVvZiBVaW50OEFycmF5ID09PSAidW5kZWZpbmVkIiA/IFtdIDogbmV3IFVpbnQ4QXJyYXkoMjU2KTsKICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYXJzLmxlbmd0aDsgaSsrKSB7CiAgICBsb29rdXBbY2hhcnMuY2hhckNvZGVBdChpKV0gPSBpOwogIH0KICB2YXIgZW5jb2RlID0gZnVuY3Rpb24oYXJyYXlidWZmZXIpIHsKICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGFycmF5YnVmZmVyKSwgaTIsIGxlbiA9IGJ5dGVzLmxlbmd0aCwgYmFzZTY0ID0gIiI7CiAgICBmb3IgKGkyID0gMDsgaTIgPCBsZW47IGkyICs9IDMpIHsKICAgICAgYmFzZTY0ICs9IGNoYXJzW2J5dGVzW2kyXSA+PiAyXTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMl0gJiAzKSA8PCA0IHwgYnl0ZXNbaTIgKyAxXSA+PiA0XTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMiArIDFdICYgMTUpIDw8IDIgfCBieXRlc1tpMiArIDJdID4+IDZdOwogICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaTIgKyAyXSAmIDYzXTsKICAgIH0KICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgIj0iOwogICAgfSBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgIj09IjsKICAgIH0KICAgIHJldHVybiBiYXNlNjQ7CiAgfTsKICBjb25zdCBsYXN0QmxvYk1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7CiAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTsKICBhc3luYyBmdW5jdGlvbiBnZXRUcmFuc3BhcmVudEJsb2JGb3Iod2lkdGgsIGhlaWdodCwgZGF0YVVSTE9wdGlvbnMpIHsKICAgIGNvbnN0IGlkID0gYCR7d2lkdGh9LSR7aGVpZ2h0fWA7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBpZiAodHJhbnNwYXJlbnRCbG9iTWFwLmhhcyhpZCkpIHJldHVybiB0cmFuc3BhcmVudEJsb2JNYXAuZ2V0KGlkKTsKICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsKICAgICAgb2Zmc2NyZWVuLmdldENvbnRleHQoIjJkIik7CiAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCBvZmZzY3JlZW4uY29udmVydFRvQmxvYihkYXRhVVJMT3B0aW9ucyk7CiAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gYXdhaXQgYmxvYi5hcnJheUJ1ZmZlcigpOwogICAgICBjb25zdCBiYXNlNjQgPSBlbmNvZGUoYXJyYXlCdWZmZXIpOwogICAgICB0cmFuc3BhcmVudEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICByZXR1cm4gYmFzZTY0OwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuICIiOwogICAgfQogIH0KICBjb25zdCB3b3JrZXIgPSBzZWxmOwogIHdvcmtlci5vbm1lc3NhZ2UgPSBhc3luYyBmdW5jdGlvbihlKSB7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBjb25zdCB7IGlkLCBiaXRtYXAsIHdpZHRoLCBoZWlnaHQsIGRhdGFVUkxPcHRpb25zIH0gPSBlLmRhdGE7CiAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKAogICAgICAgIHdpZHRoLAogICAgICAgIGhlaWdodCwKICAgICAgICBkYXRhVVJMT3B0aW9ucwogICAgICApOwogICAgICBjb25zdCBvZmZzY3JlZW4gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpOwogICAgICBjb25zdCBjdHggPSBvZmZzY3JlZW4uZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgY3R4LmRyYXdJbWFnZShiaXRtYXAsIDAsIDApOwogICAgICBiaXRtYXAuY2xvc2UoKTsKICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IG9mZnNjcmVlbi5jb252ZXJ0VG9CbG9iKGRhdGFVUkxPcHRpb25zKTsKICAgICAgY29uc3QgdHlwZSA9IGJsb2IudHlwZTsKICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBhd2FpdCBibG9iLmFycmF5QnVmZmVyKCk7CiAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7CiAgICAgIGlmICghbGFzdEJsb2JNYXAuaGFzKGlkKSAmJiBhd2FpdCB0cmFuc3BhcmVudEJhc2U2NCA9PT0gYmFzZTY0KSB7CiAgICAgICAgbGFzdEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICAgIHJldHVybiB3b3JrZXIucG9zdE1lc3NhZ2UoeyBpZCB9KTsKICAgICAgfQogICAgICBpZiAobGFzdEJsb2JNYXAuZ2V0KGlkKSA9PT0gYmFzZTY0KSByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQgfSk7CiAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7CiAgICAgICAgaWQsCiAgICAgICAgdHlwZSwKICAgICAgICBiYXNlNjQsCiAgICAgICAgd2lkdGgsCiAgICAgICAgaGVpZ2h0CiAgICAgIH0pOwogICAgICBsYXN0QmxvYk1hcC5zZXQoaWQsIGJhc2U2NCk7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IGUuZGF0YS5pZCB9KTsKICAgIH0KICB9Owp9KSgpOwovLyMgc291cmNlTWFwcGluZ1VSTD1pbWFnZS1iaXRtYXAtZGF0YS11cmwtd29ya2VyLUlKcEM3Z19iLmpzLm1hcAo=\";\nconst decodeBase64 = (base64) => Uint8Array.from(atob(base64), (c2) => c2.charCodeAt(0));\nconst blob = typeof window !== \"undefined\" && window.Blob && new Blob([decodeBase64(encodedJs)], { type: \"text/javascript;charset=utf-8\" });\nfunction WorkerWrapper(options) {\n let objURL;\n try {\n objURL = blob && (window.URL || window.webkitURL).createObjectURL(blob);\n if (!objURL) throw \"\";\n const worker = new Worker(objURL, {\n name: options == null ? void 0 : options.name\n });\n worker.addEventListener(\"error\", () => {\n (window.URL || window.webkitURL).revokeObjectURL(objURL);\n });\n return worker;\n } catch (e2) {\n return new Worker(\n \"data:text/javascript;base64,\" + encodedJs,\n {\n name: options == null ? void 0 : options.name\n }\n );\n } finally {\n objURL && (window.URL || window.webkitURL).revokeObjectURL(objURL);\n }\n}\nclass CanvasManager {\n constructor(options) {\n __publicField(this, \"pendingCanvasMutations\", /* @__PURE__ */ new Map());\n __publicField(this, \"rafStamps\", { latestId: 0, invokeId: null });\n __publicField(this, \"mirror\");\n __publicField(this, \"mutationCb\");\n __publicField(this, \"resetObservers\");\n __publicField(this, \"frozen\", false);\n __publicField(this, \"locked\", false);\n __publicField(this, \"processMutation\", (target, mutation) => {\n const newFrame = this.rafStamps.invokeId && this.rafStamps.latestId !== this.rafStamps.invokeId;\n if (newFrame || !this.rafStamps.invokeId)\n this.rafStamps.invokeId = this.rafStamps.latestId;\n if (!this.pendingCanvasMutations.has(target)) {\n this.pendingCanvasMutations.set(target, []);\n }\n this.pendingCanvasMutations.get(target).push(mutation);\n });\n const {\n sampling = \"all\",\n win,\n blockClass,\n blockSelector,\n recordCanvas,\n dataURLOptions\n } = options;\n this.mutationCb = options.mutationCb;\n this.mirror = options.mirror;\n if (recordCanvas && sampling === \"all\")\n this.initCanvasMutationObserver(win, blockClass, blockSelector);\n if (recordCanvas && typeof sampling === \"number\")\n this.initCanvasFPSObserver(sampling, win, blockClass, blockSelector, {\n dataURLOptions\n });\n }\n reset() {\n this.pendingCanvasMutations.clear();\n this.resetObservers && this.resetObservers();\n }\n freeze() {\n this.frozen = true;\n }\n unfreeze() {\n this.frozen = false;\n }\n lock() {\n this.locked = true;\n }\n unlock() {\n this.locked = false;\n }\n initCanvasFPSObserver(fps, win, blockClass, blockSelector, options) {\n const canvasContextReset = initCanvasContextObserver(\n win,\n blockClass,\n blockSelector,\n true\n );\n const snapshotInProgressMap = /* @__PURE__ */ new Map();\n const worker = new WorkerWrapper();\n worker.onmessage = (e2) => {\n const { id } = e2.data;\n snapshotInProgressMap.set(id, false);\n if (!(\"base64\" in e2.data)) return;\n const { base64, type, width, height } = e2.data;\n this.mutationCb({\n id,\n type: CanvasContext[\"2D\"],\n commands: [\n {\n property: \"clearRect\",\n // wipe canvas\n args: [0, 0, width, height]\n },\n {\n property: \"drawImage\",\n // draws (semi-transparent) image\n args: [\n {\n rr_type: \"ImageBitmap\",\n args: [\n {\n rr_type: \"Blob\",\n data: [{ rr_type: \"ArrayBuffer\", base64 }],\n type\n }\n ]\n },\n 0,\n 0\n ]\n }\n ]\n });\n };\n const timeBetweenSnapshots = 1e3 / fps;\n let lastSnapshotTime = 0;\n let rafId;\n const getCanvas = () => {\n const matchedCanvas = [];\n win.document.querySelectorAll(\"canvas\").forEach((canvas) => {\n if (!isBlocked(canvas, blockClass, blockSelector, true)) {\n matchedCanvas.push(canvas);\n }\n });\n return matchedCanvas;\n };\n const takeCanvasSnapshots = (timestamp) => {\n if (lastSnapshotTime && timestamp - lastSnapshotTime < timeBetweenSnapshots) {\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n return;\n }\n lastSnapshotTime = timestamp;\n getCanvas().forEach(async (canvas) => {\n var _a2;\n const id = this.mirror.getId(canvas);\n if (snapshotInProgressMap.get(id)) return;\n if (canvas.width === 0 || canvas.height === 0) return;\n snapshotInProgressMap.set(id, true);\n if ([\"webgl\", \"webgl2\"].includes(canvas.__context)) {\n const context = canvas.getContext(canvas.__context);\n if (((_a2 = context == null ? void 0 : context.getContextAttributes()) == null ? void 0 : _a2.preserveDrawingBuffer) === false) {\n context.clear(context.COLOR_BUFFER_BIT);\n }\n }\n const bitmap = await createImageBitmap(canvas);\n worker.postMessage(\n {\n id,\n bitmap,\n width: canvas.width,\n height: canvas.height,\n dataURLOptions: options.dataURLOptions\n },\n [bitmap]\n );\n });\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n };\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n this.resetObservers = () => {\n canvasContextReset();\n cancelAnimationFrame(rafId);\n };\n }\n initCanvasMutationObserver(win, blockClass, blockSelector) {\n this.startRAFTimestamping();\n this.startPendingCanvasMutationFlusher();\n const canvasContextReset = initCanvasContextObserver(\n win,\n blockClass,\n blockSelector,\n false\n );\n const canvas2DReset = initCanvas2DMutationObserver(\n this.processMutation.bind(this),\n win,\n blockClass,\n blockSelector\n );\n const canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(\n this.processMutation.bind(this),\n win,\n blockClass,\n blockSelector\n );\n this.resetObservers = () => {\n canvasContextReset();\n canvas2DReset();\n canvasWebGL1and2Reset();\n };\n }\n startPendingCanvasMutationFlusher() {\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\n }\n startRAFTimestamping() {\n const setLatestRAFTimestamp = (timestamp) => {\n this.rafStamps.latestId = timestamp;\n requestAnimationFrame(setLatestRAFTimestamp);\n };\n requestAnimationFrame(setLatestRAFTimestamp);\n }\n flushPendingCanvasMutations() {\n this.pendingCanvasMutations.forEach(\n (_values, canvas) => {\n const id = this.mirror.getId(canvas);\n this.flushPendingCanvasMutationFor(canvas, id);\n }\n );\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\n }\n flushPendingCanvasMutationFor(canvas, id) {\n if (this.frozen || this.locked) {\n return;\n }\n const valuesWithType = this.pendingCanvasMutations.get(canvas);\n if (!valuesWithType || id === -1) return;\n const values = valuesWithType.map((value) => {\n const { type: type2, ...rest } = value;\n return rest;\n });\n const { type } = valuesWithType[0];\n this.mutationCb({ id, type, commands: values });\n this.pendingCanvasMutations.delete(canvas);\n }\n}\nclass StylesheetManager {\n constructor(options) {\n __publicField(this, \"trackedLinkElements\", /* @__PURE__ */ new WeakSet());\n __publicField(this, \"mutationCb\");\n __publicField(this, \"adoptedStyleSheetCb\");\n __publicField(this, \"styleMirror\", new StyleSheetMirror());\n this.mutationCb = options.mutationCb;\n this.adoptedStyleSheetCb = options.adoptedStyleSheetCb;\n }\n attachLinkElement(linkEl, childSn) {\n if (\"_cssText\" in childSn.attributes)\n this.mutationCb({\n adds: [],\n removes: [],\n texts: [],\n attributes: [\n {\n id: childSn.id,\n attributes: childSn.attributes\n }\n ]\n });\n this.trackLinkElement(linkEl);\n }\n trackLinkElement(linkEl) {\n if (this.trackedLinkElements.has(linkEl)) return;\n this.trackedLinkElements.add(linkEl);\n this.trackStylesheetInLinkElement(linkEl);\n }\n adoptStyleSheets(sheets, hostId) {\n if (sheets.length === 0) return;\n const adoptedStyleSheetData = {\n id: hostId,\n styleIds: []\n };\n const styles = [];\n for (const sheet of sheets) {\n let styleId;\n if (!this.styleMirror.has(sheet)) {\n styleId = this.styleMirror.add(sheet);\n styles.push({\n styleId,\n rules: Array.from(sheet.rules || CSSRule, (r2, index2) => ({\n rule: stringifyRule(r2, sheet.href),\n index: index2\n }))\n });\n } else styleId = this.styleMirror.getId(sheet);\n adoptedStyleSheetData.styleIds.push(styleId);\n }\n if (styles.length > 0) adoptedStyleSheetData.styles = styles;\n this.adoptedStyleSheetCb(adoptedStyleSheetData);\n }\n reset() {\n this.styleMirror.reset();\n this.trackedLinkElements = /* @__PURE__ */ new WeakSet();\n }\n // TODO: take snapshot on stylesheet reload by applying event listener\n trackStylesheetInLinkElement(_linkEl) {\n }\n}\nclass ProcessedNodeManager {\n constructor() {\n __publicField(this, \"nodeMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"active\", false);\n }\n inOtherBuffer(node2, thisBuffer) {\n const buffers = this.nodeMap.get(node2);\n return buffers && Array.from(buffers).some((buffer) => buffer !== thisBuffer);\n }\n add(node2, buffer) {\n if (!this.active) {\n this.active = true;\n requestAnimationFrame(() => {\n this.nodeMap = /* @__PURE__ */ new WeakMap();\n this.active = false;\n });\n }\n this.nodeMap.set(node2, (this.nodeMap.get(node2) || /* @__PURE__ */ new Set()).add(buffer));\n }\n destroy() {\n }\n}\nlet wrappedEmit;\nlet takeFullSnapshot$1;\nlet canvasManager;\nlet recording = false;\ntry {\n if (Array.from([1], (x2) => x2 * 2)[0] !== 2) {\n const cleanFrame = document.createElement(\"iframe\");\n document.body.appendChild(cleanFrame);\n Array.from = ((_a = cleanFrame.contentWindow) == null ? void 0 : _a.Array.from) || Array.from;\n document.body.removeChild(cleanFrame);\n }\n} catch (err) {\n console.debug(\"Unable to override Array.from\", err);\n}\nconst mirror = createMirror$2();\nfunction record(options = {}) {\n const {\n emit,\n checkoutEveryNms,\n checkoutEveryNth,\n blockClass = \"rr-block\",\n blockSelector = null,\n ignoreClass = \"rr-ignore\",\n ignoreSelector = null,\n maskTextClass = \"rr-mask\",\n maskTextSelector = null,\n inlineStylesheet = true,\n maskAllInputs,\n maskInputOptions: _maskInputOptions,\n slimDOMOptions: _slimDOMOptions,\n maskInputFn,\n maskTextFn,\n hooks,\n packFn,\n sampling = {},\n dataURLOptions = {},\n mousemoveWait,\n recordDOM = true,\n recordCanvas = false,\n recordCrossOriginIframes = false,\n recordAfter = options.recordAfter === \"DOMContentLoaded\" ? options.recordAfter : \"load\",\n userTriggeredOnInput = false,\n collectFonts = false,\n inlineImages = false,\n plugins,\n keepIframeSrcFn = () => false,\n ignoreCSSAttributes = /* @__PURE__ */ new Set([]),\n errorHandler: errorHandler2\n } = options;\n registerErrorHandler(errorHandler2);\n const inEmittingFrame = recordCrossOriginIframes ? window.parent === window : true;\n let passEmitsToParent = false;\n if (!inEmittingFrame) {\n try {\n if (window.parent.document) {\n passEmitsToParent = false;\n }\n } catch (e2) {\n passEmitsToParent = true;\n }\n }\n if (inEmittingFrame && !emit) {\n throw new Error(\"emit function is required\");\n }\n if (!inEmittingFrame && !passEmitsToParent) {\n return () => {\n };\n }\n if (mousemoveWait !== void 0 && sampling.mousemove === void 0) {\n sampling.mousemove = mousemoveWait;\n }\n mirror.reset();\n const maskInputOptions = maskAllInputs === true ? {\n color: true,\n date: true,\n \"datetime-local\": true,\n email: true,\n month: true,\n number: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true,\n textarea: true,\n select: true,\n password: true\n } : _maskInputOptions !== void 0 ? _maskInputOptions : { password: true };\n const slimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === \"all\" ? {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaVerification: true,\n // the following are off for slimDOMOptions === true,\n // as they destroy some (hidden) info:\n headMetaAuthorship: _slimDOMOptions === \"all\",\n headMetaDescKeywords: _slimDOMOptions === \"all\",\n headTitleMutations: _slimDOMOptions === \"all\"\n } : _slimDOMOptions ? _slimDOMOptions : {};\n polyfill$1();\n let lastFullSnapshotEvent;\n let incrementalSnapshotCount = 0;\n const eventProcessor = (e2) => {\n for (const plugin3 of plugins || []) {\n if (plugin3.eventProcessor) {\n e2 = plugin3.eventProcessor(e2);\n }\n }\n if (packFn && // Disable packing events which will be emitted to parent frames.\n !passEmitsToParent) {\n e2 = packFn(e2);\n }\n return e2;\n };\n wrappedEmit = (r2, isCheckout) => {\n var _a2;\n const e2 = r2;\n e2.timestamp = nowTimestamp();\n if (((_a2 = mutationBuffers[0]) == null ? void 0 : _a2.isFrozen()) && e2.type !== EventType.FullSnapshot && !(e2.type === EventType.IncrementalSnapshot && e2.data.source === IncrementalSource.Mutation)) {\n mutationBuffers.forEach((buf) => buf.unfreeze());\n }\n if (inEmittingFrame) {\n emit == null ? void 0 : emit(eventProcessor(e2), isCheckout);\n } else if (passEmitsToParent) {\n const message = {\n type: \"rrweb\",\n event: eventProcessor(e2),\n origin: window.location.origin,\n isCheckout\n };\n window.parent.postMessage(message, \"*\");\n }\n if (e2.type === EventType.FullSnapshot) {\n lastFullSnapshotEvent = e2;\n incrementalSnapshotCount = 0;\n } else if (e2.type === EventType.IncrementalSnapshot) {\n if (e2.data.source === IncrementalSource.Mutation && e2.data.isAttachIframe) {\n return;\n }\n incrementalSnapshotCount++;\n const exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\n const exceedTime = checkoutEveryNms && e2.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\n if (exceedCount || exceedTime) {\n takeFullSnapshot$1(true);\n }\n }\n };\n const wrappedMutationEmit = (m) => {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Mutation,\n ...m\n }\n });\n };\n const wrappedScrollEmit = (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Scroll,\n ...p\n }\n });\n const wrappedCanvasMutationEmit = (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.CanvasMutation,\n ...p\n }\n });\n const wrappedAdoptedStyleSheetEmit = (a2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.AdoptedStyleSheet,\n ...a2\n }\n });\n const stylesheetManager = new StylesheetManager({\n mutationCb: wrappedMutationEmit,\n adoptedStyleSheetCb: wrappedAdoptedStyleSheetEmit\n });\n const iframeManager = new IframeManager({\n mirror,\n mutationCb: wrappedMutationEmit,\n stylesheetManager,\n recordCrossOriginIframes,\n wrappedEmit\n });\n for (const plugin3 of plugins || []) {\n if (plugin3.getMirror)\n plugin3.getMirror({\n nodeMirror: mirror,\n crossOriginIframeMirror: iframeManager.crossOriginIframeMirror,\n crossOriginIframeStyleMirror: iframeManager.crossOriginIframeStyleMirror\n });\n }\n const processedNodeManager = new ProcessedNodeManager();\n canvasManager = new CanvasManager({\n recordCanvas,\n mutationCb: wrappedCanvasMutationEmit,\n win: window,\n blockClass,\n blockSelector,\n mirror,\n sampling: sampling.canvas,\n dataURLOptions\n });\n const shadowDomManager = new ShadowDomManager({\n mutationCb: wrappedMutationEmit,\n scrollCb: wrappedScrollEmit,\n bypassOptions: {\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n inlineStylesheet,\n maskInputOptions,\n dataURLOptions,\n maskTextFn,\n maskInputFn,\n recordCanvas,\n inlineImages,\n sampling,\n slimDOMOptions,\n iframeManager,\n stylesheetManager,\n canvasManager,\n keepIframeSrcFn,\n processedNodeManager\n },\n mirror\n });\n takeFullSnapshot$1 = (isCheckout = false) => {\n if (!recordDOM) {\n return;\n }\n wrappedEmit(\n {\n type: EventType.Meta,\n data: {\n href: window.location.href,\n width: getWindowWidth(),\n height: getWindowHeight()\n }\n },\n isCheckout\n );\n stylesheetManager.reset();\n shadowDomManager.init();\n mutationBuffers.forEach((buf) => buf.lock());\n const node2 = snapshot(document, {\n mirror,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n inlineStylesheet,\n maskAllInputs: maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOM: slimDOMOptions,\n dataURLOptions,\n recordCanvas,\n inlineImages,\n onSerialize: (n2) => {\n if (isSerializedIframe(n2, mirror)) {\n iframeManager.addIframe(n2);\n }\n if (isSerializedStylesheet(n2, mirror)) {\n stylesheetManager.trackLinkElement(n2);\n }\n if (hasShadowRoot(n2)) {\n shadowDomManager.addShadowRoot(index.shadowRoot(n2), document);\n }\n },\n onIframeLoad: (iframe, childSn) => {\n iframeManager.attachIframe(iframe, childSn);\n shadowDomManager.observeAttachShadow(iframe);\n },\n onStylesheetLoad: (linkEl, childSn) => {\n stylesheetManager.attachLinkElement(linkEl, childSn);\n },\n keepIframeSrcFn\n });\n if (!node2) {\n return console.warn(\"Failed to snapshot the document\");\n }\n wrappedEmit(\n {\n type: EventType.FullSnapshot,\n data: {\n node: node2,\n initialOffset: getWindowScroll(window)\n }\n },\n isCheckout\n );\n mutationBuffers.forEach((buf) => buf.unlock());\n if (document.adoptedStyleSheets && document.adoptedStyleSheets.length > 0)\n stylesheetManager.adoptStyleSheets(\n document.adoptedStyleSheets,\n mirror.getId(document)\n );\n };\n try {\n const handlers = [];\n const observe = (doc) => {\n var _a2;\n return callbackWrapper(initObservers)(\n {\n mutationCb: wrappedMutationEmit,\n mousemoveCb: (positions, source) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source,\n positions\n }\n }),\n mouseInteractionCb: (d) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.MouseInteraction,\n ...d\n }\n }),\n scrollCb: wrappedScrollEmit,\n viewportResizeCb: (d) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.ViewportResize,\n ...d\n }\n }),\n inputCb: (v2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Input,\n ...v2\n }\n }),\n mediaInteractionCb: (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.MediaInteraction,\n ...p\n }\n }),\n styleSheetRuleCb: (r2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.StyleSheetRule,\n ...r2\n }\n }),\n styleDeclarationCb: (r2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.StyleDeclaration,\n ...r2\n }\n }),\n canvasMutationCb: wrappedCanvasMutationEmit,\n fontCb: (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Font,\n ...p\n }\n }),\n selectionCb: (p) => {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Selection,\n ...p\n }\n });\n },\n customElementCb: (c2) => {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.CustomElement,\n ...c2\n }\n });\n },\n blockClass,\n ignoreClass,\n ignoreSelector,\n maskTextClass,\n maskTextSelector,\n maskInputOptions,\n inlineStylesheet,\n sampling,\n recordDOM,\n recordCanvas,\n inlineImages,\n userTriggeredOnInput,\n collectFonts,\n doc,\n maskInputFn,\n maskTextFn,\n keepIframeSrcFn,\n blockSelector,\n slimDOMOptions,\n dataURLOptions,\n mirror,\n iframeManager,\n stylesheetManager,\n shadowDomManager,\n processedNodeManager,\n canvasManager,\n ignoreCSSAttributes,\n plugins: ((_a2 = plugins == null ? void 0 : plugins.filter((p) => p.observer)) == null ? void 0 : _a2.map((p) => ({\n observer: p.observer,\n options: p.options,\n callback: (payload) => wrappedEmit({\n type: EventType.Plugin,\n data: {\n plugin: p.name,\n payload\n }\n })\n }))) || []\n },\n hooks\n );\n };\n iframeManager.addLoadListener((iframeEl) => {\n try {\n handlers.push(observe(iframeEl.contentDocument));\n } catch (error) {\n console.warn(error);\n }\n });\n const init = () => {\n takeFullSnapshot$1();\n handlers.push(observe(document));\n recording = true;\n };\n if (document.readyState === \"interactive\" || document.readyState === \"complete\") {\n init();\n } else {\n handlers.push(\n on(\"DOMContentLoaded\", () => {\n wrappedEmit({\n type: EventType.DomContentLoaded,\n data: {}\n });\n if (recordAfter === \"DOMContentLoaded\") init();\n })\n );\n handlers.push(\n on(\n \"load\",\n () => {\n wrappedEmit({\n type: EventType.Load,\n data: {}\n });\n if (recordAfter === \"load\") init();\n },\n window\n )\n );\n }\n return () => {\n handlers.forEach((h) => h());\n processedNodeManager.destroy();\n recording = false;\n unregisterErrorHandler();\n };\n } catch (error) {\n console.warn(error);\n }\n}\nrecord.addCustomEvent = (tag, payload) => {\n if (!recording) {\n throw new Error(\"please add custom event after start recording\");\n }\n wrappedEmit({\n type: EventType.Custom,\n data: {\n tag,\n payload\n }\n });\n};\nrecord.freezePage = () => {\n mutationBuffers.forEach((buf) => buf.freeze());\n};\nrecord.takeFullSnapshot = (isCheckout) => {\n if (!recording) {\n throw new Error(\"please take full snapshot after start recording\");\n }\n takeFullSnapshot$1(isCheckout);\n};\nrecord.mirror = mirror;\nvar n;\n!function(t2) {\n t2[t2.NotStarted = 0] = \"NotStarted\", t2[t2.Running = 1] = \"Running\", t2[t2.Stopped = 2] = \"Stopped\";\n}(n || (n = {}));\nexport {\n record\n};\n//# sourceMappingURL=record.js.map\n","import { isMobile } from \"./GleapHelper\";\nimport { record } from \"@rrweb/record\";\n\nexport default class GleapReplayRecorder {\n startDate = undefined;\n events = [];\n bufferSize = 0;\n stopFunction = undefined;\n customOptions = {};\n\n // GleapReplayRecorder singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapReplayRecorder();\n return this.instance;\n } else {\n return this.instance;\n }\n }\n\n constructor() {}\n\n setOptions(options) {\n this.customOptions = options;\n }\n\n /**\n * Start replays\n * @returns\n */\n start() {\n this.stop();\n\n this.startDate = Date.now();\n var events = this.events;\n\n var options = {\n inlineStylesheet: true,\n blockClass: \"gl-block\",\n ignoreClass: \"gl-ignore\",\n maskTextClass: \"gl-mask\",\n dataURLOptions: {\n quality: 0.7,\n },\n recordCanvas: false,\n sampling: {\n scroll: 150,\n mouseInteraction: {\n MouseUp: false,\n MouseDown: false,\n Click: true,\n ContextMenu: true,\n DblClick: true,\n Focus: true,\n Blur: true,\n TouchStart: true,\n TouchEnd: false,\n },\n },\n collectFonts: false,\n recordCrossOriginIframes: false,\n };\n\n try {\n this.stopFunction = record({\n ...options,\n ...this.customOptions,\n emit(rrwebEvent) {\n const { event } = ensureMaxMessageSize(rrwebEvent);\n events.push(event);\n },\n });\n } catch (e) {\n console.error(e);\n }\n }\n\n /**\n * Stop replays\n * @returns\n */\n stop() {\n if (this.stopFunction) {\n this.stopFunction();\n }\n\n this.startDate = undefined;\n this.events = [];\n this.bufferSize = 0;\n }\n\n /**\n * Get the current replay data\n * @returns {Promise}\n */\n getReplayData() {\n const replayResult = {\n startDate: this.startDate,\n events: this.events,\n baseUrl: window.location.origin,\n width: window.innerWidth,\n height: window.innerHeight,\n isMobile: isMobile(),\n type: \"rrweb\",\n };\n\n return replayResult;\n }\n}\n\nexport function ensureMaxMessageSize(data) {\n let stringifiedData = JSON.stringify(data);\n if (stringifiedData.length > 4000000) {\n const dataURIRegex = /data:([\\w\\/\\-\\.]+);(\\w+),([^)\"]*)/gim;\n const matches = stringifiedData.matchAll(dataURIRegex);\n for (const match of matches) {\n if (match[1].toLocaleLowerCase().slice(0, 6) === \"image/\") {\n stringifiedData = stringifiedData.replace(\n match[0],\n \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAQSURBVHgBAQUA+v8ABRg5/wHSAVZN1mnaAAAAAElFTkSuQmCC\"\n );\n } else {\n stringifiedData = stringifiedData.replace(match[0], \"\");\n }\n }\n }\n return { event: JSON.parse(stringifiedData), size: stringifiedData.length };\n}\n","export class ScreenDrawer {\n rerender;\n svgElement = null;\n path = null;\n strPath;\n strokeWidth = 12;\n strokeWidthRect = 6;\n bufferSize = 4;\n buffer = [];\n startPoint = null;\n tool = \"rect\";\n color = \"#EB144C\";\n mouseDown = null;\n mouseMove = null;\n mouseUp = null;\n resizeListener = null;\n pathBuffer = [];\n\n constructor(rerender) {\n const self = this;\n\n this.rerender = rerender;\n\n this.svgElement = document.querySelector(\".bb-capture-svg\");\n this.svgElement.style.minHeight = `${document.documentElement.scrollHeight}px`;\n\n // Window resize listener.\n this.resizeListener = function (e) {\n self.svgElement.style.minHeight = `${document.documentElement.scrollHeight}px`;\n };\n window.addEventListener(\"resize\", this.resizeListener, true);\n\n this.mouseDown = function (e) {\n e.preventDefault();\n\n const colorpicker = document.querySelector(\n \".bb-capture-toolbar-item-colorpicker\"\n );\n if (colorpicker) {\n colorpicker.style.display = \"none\";\n }\n\n self.fadeOutToolbar();\n if (self.tool === \"pen\" || self.tool === \"blur\") {\n self.mouseDownPen(e);\n }\n if (self.tool === \"rect\") {\n self.mouseDownRect(e);\n }\n };\n\n this.mouseMove = function (e) {\n e.preventDefault();\n if (self.tool === \"pen\" || self.tool === \"blur\") {\n self.mouseMovePen(e);\n }\n if (self.tool === \"rect\") {\n self.mouseMoveRect(e);\n }\n };\n\n this.mouseUp = function (e) {\n e.preventDefault();\n self.fadeInToolbar();\n if (self.tool === \"pen\" || self.tool === \"blur\") {\n self.mouseUpPen(e);\n }\n if (self.tool === \"rect\") {\n self.mouseUpRect(e);\n }\n };\n\n this.svgElement.addEventListener(\"mousedown\", this.mouseDown);\n this.svgElement.addEventListener(\"mousemove\", this.mouseMove);\n this.svgElement.addEventListener(\"mouseup\", this.mouseUp);\n this.svgElement.addEventListener(\"touchstart\", this.mouseDown, false);\n this.svgElement.addEventListener(\"touchmove\", this.mouseMove, false);\n this.svgElement.addEventListener(\"touchend\", this.mouseUp, false);\n\n setTimeout(() => {\n this.rerender();\n }, 100);\n }\n\n clear() {\n if (this.svgElement) {\n while (this.svgElement.firstChild) {\n this.svgElement.firstChild.remove();\n }\n }\n }\n\n destroy() {\n this.svgElement.removeEventListener(\"mousedown\", this.mouseDown);\n this.svgElement.removeEventListener(\"mousemove\", this.mouseMove);\n this.svgElement.removeEventListener(\"mouseup\", this.mouseUp);\n this.svgElement.removeEventListener(\"touchstart\", this.mouseDown);\n this.svgElement.removeEventListener(\"touchmove\", this.mouseMove);\n this.svgElement.removeEventListener(\"touchend\", this.mouseUp);\n window.removeEventListener(\"resize\", this.resizeListener);\n }\n\n mouseUpPen() {\n if (this.path) {\n this.path = null;\n }\n }\n\n mouseUpRect() {\n if (this.path) {\n this.path = null;\n }\n }\n\n mouseMovePen(e) {\n if (this.path) {\n this.appendToBuffer(this.getMousePosition(e));\n this.updateSvgPath();\n }\n }\n\n mouseMoveRect(e) {\n if (this.path) {\n var p = this.getMousePosition(e);\n var w = Math.abs(p.x - this.startPoint.x);\n var h = Math.abs(p.y - this.startPoint.y);\n var x = p.x;\n var y = p.y;\n if (p.x > this.startPoint.x) {\n x = this.startPoint.x;\n }\n if (p.y > this.startPoint.y) {\n y = this.startPoint.y;\n }\n\n this.path.setAttributeNS(null, \"x\", x);\n this.path.setAttributeNS(null, \"y\", y);\n this.path.setAttributeNS(null, \"width\", w);\n this.path.setAttributeNS(null, \"height\", h);\n }\n }\n\n mouseDownRect(e) {\n this.path = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n this.path.setAttribute(\"fill\", \"none\");\n this.path.setAttribute(\"stroke\", this.color);\n this.path.setAttribute(\"stroke-linecap\", \"round\");\n this.path.setAttribute(\"stroke-width\", this.strokeWidthRect);\n\n this.startPoint = this.getMousePosition(e);\n this.appendPathToSvg(this.path);\n }\n\n mouseDownPen(e) {\n var color = this.color + \"AA\";\n var strokeWidth = this.strokeWidth;\n\n if (this.tool === \"blur\") {\n color = \"#000000\";\n strokeWidth = 40;\n }\n\n this.path = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this.path.setAttribute(\"fill\", \"none\");\n this.path.setAttribute(\"stroke\", color);\n this.path.setAttribute(\"stroke-linecap\", \"round\");\n this.path.setAttribute(\"stroke-width\", strokeWidth);\n this.buffer = [];\n var pt = this.getMousePosition(e);\n this.appendToBuffer(pt);\n this.strPath = \"M\" + pt.x + \" \" + pt.y;\n this.path.setAttribute(\"d\", this.strPath);\n this.appendPathToSvg(this.path);\n }\n\n setTool(tool) {\n this.tool = tool;\n }\n\n setColor(color) {\n this.color = color;\n }\n\n getMousePosition(e) {\n if (e.touches && e.touches.length > 0) {\n return {\n x: e.touches[0].clientX,\n y: e.touches[0].clientY,\n };\n }\n\n return {\n x: e.clientX,\n y: e.clientY,\n };\n }\n\n // Calculate the average point, starting at offset in the buffer\n getAveragePoint(offset) {\n var len = this.buffer.length;\n if (len % 2 === 1 || len >= this.bufferSize) {\n var totalX = 0;\n var totalY = 0;\n var pt, i;\n var count = 0;\n for (i = offset; i < len; i++) {\n count++;\n pt = this.buffer[i];\n totalX += pt.x;\n totalY += pt.y;\n }\n return {\n x: totalX / count,\n y: totalY / count,\n };\n }\n return null;\n }\n\n updateSvgPath() {\n var pt = this.getAveragePoint(0);\n\n if (pt) {\n // Get the smoothed part of the path that will not change\n this.strPath += \" L\" + pt.x + \" \" + pt.y;\n\n // Get the last part of the path (close to the current mouse position)\n // This part will change if the mouse moves again\n var tmpPath = \"\";\n for (var offset = 2; offset < this.buffer.length; offset += 2) {\n pt = this.getAveragePoint(offset);\n tmpPath += \" L\" + pt.x + \" \" + pt.y;\n }\n\n // Set the complete current path coordinates\n this.path.setAttribute(\"d\", this.strPath + tmpPath);\n }\n }\n\n appendToBuffer(pt) {\n this.buffer.push(pt);\n while (this.buffer.length > this.bufferSize) {\n this.buffer.shift();\n }\n }\n\n appendPathToSvg(path) {\n this.svgElement.appendChild(path);\n this.pathBuffer.push(path);\n this.rerender();\n }\n\n removeLastAddedPathFromSvg() {\n if (this.pathBuffer.length <= 0 || !this.svgElement) {\n return;\n }\n\n this.svgElement.removeChild(this.pathBuffer[this.pathBuffer.length - 1]);\n\n this.pathBuffer.pop();\n\n this.rerender();\n }\n\n fadeOutToolbar() {\n var fadeTarget = document.querySelector(\".bb-capture-toolbar\");\n if (fadeTarget) {\n fadeTarget.style.opacity = 0;\n fadeTarget.style.pointerEvents = \"none\";\n }\n }\n\n fadeInToolbar() {\n var fadeTarget = document.querySelector(\".bb-capture-toolbar\");\n if (fadeTarget) {\n fadeTarget.style.opacity = 1;\n fadeTarget.style.pointerEvents = \"auto\";\n }\n }\n}\n","export class GleapScrollStopper {\n keys = { 37: 1, 38: 1, 39: 1, 40: 1 };\n supportsPassive = false;\n wheelOpt = this.supportsPassive ? { passive: false } : false;\n wheelEvent =\n \"onwheel\" in document.createElement(\"div\") ? \"wheel\" : \"mousewheel\";\n scrollDisabled = false;\n\n // GleapScrollStopper singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapScrollStopper();\n return this.instance;\n } else {\n return this.instance;\n }\n }\n\n constructor() {\n const self = this;\n try {\n window.addEventListener(\n \"test\",\n null,\n Object.defineProperty({}, \"passive\", {\n get: function () {\n self.supportsPassive = true;\n self.wheelOpt = self.supportsPassive ? { passive: false } : false;\n },\n })\n );\n } catch (e) {}\n }\n\n preventDefault(e) {\n e.preventDefault();\n }\n\n preventDefaultForScrollKeys(e) {\n if (this.keys && this.keys[e.keyCode]) {\n this.preventDefault(e);\n return false;\n }\n }\n\n static disableScroll() {\n const instance = this.getInstance();\n if (instance.scrollDisabled) {\n return;\n }\n\n instance.scrollDisabled = true;\n\n window.addEventListener(\"DOMMouseScroll\", instance.preventDefault, false); // older FF\n window.addEventListener(\n instance.wheelEvent,\n instance.preventDefault,\n instance.wheelOpt\n ); // modern desktop\n window.addEventListener(\n \"touchmove\",\n instance.preventDefault,\n instance.wheelOpt\n ); // mobile\n window.addEventListener(\n \"keydown\",\n instance.preventDefaultForScrollKeys,\n false\n );\n }\n\n static enableScroll() {\n const instance = this.getInstance();\n if (!instance.scrollDisabled) {\n return;\n }\n\n instance.scrollDisabled = false;\n window.removeEventListener(\n \"DOMMouseScroll\",\n instance.preventDefault,\n false\n );\n window.removeEventListener(\n instance.wheelEvent,\n instance.preventDefault,\n instance.wheelOpt\n );\n window.removeEventListener(\n \"touchmove\",\n instance.preventDefault,\n instance.wheelOpt\n );\n window.removeEventListener(\n \"keydown\",\n instance.preventDefaultForScrollKeys,\n false\n );\n }\n}\n","import Gleap, { GleapTranslationManager, GleapFrameManager } from \"./Gleap\";\nimport { ScreenDrawer } from \"./ScreenDrawer\";\nimport { GleapScrollStopper } from \"./GleapScrollStopper\";\nimport { GleapScreenRecorder } from \"./GleapScreenRecorder\";\nimport { loadIcon } from \"./UI\";\n\nexport default class GleapMarkerManager {\n type = \"screenshot\";\n dragCursor = null;\n screenRecorder = null;\n callback = null;\n screenDrawer = null;\n escListener = null;\n pageLeaveListener = null;\n overrideLanguage = Gleap.getInstance().overrideLanguage;\n\n constructor(type) {\n this.type = type;\n }\n\n hideWidgetUI() {\n const feedbackButton = document.querySelector(\".bb-feedback-button\");\n if (feedbackButton) {\n feedbackButton.style.display = \"none\";\n }\n\n const dialogUI = document.querySelector(\".bb-feedback-dialog-container\");\n if (dialogUI) {\n dialogUI.style.display = \"none\";\n }\n }\n\n showWidgetUI() {\n if (this.type === \"screenshot\") {\n GleapScrollStopper.enableScroll();\n }\n\n // Stop screenrecording.\n if (this.screenRecorder) {\n this.screenRecorder.stopScreenRecording();\n }\n\n // Unregister ESC listener\n this.unregisterListeners();\n\n // Cleanup mouse pointer\n this.cleanupMousePointer();\n\n if (this.screenDrawer) {\n this.screenDrawer.destroy();\n }\n\n // Remove the toolbar UI\n const dialog = document.querySelector(\".bb-capture-toolbar\");\n if (dialog) {\n dialog.remove();\n }\n\n // Capture SVG ref\n const captureSVG = document.querySelector(\".bb-capture-svg\");\n if (captureSVG) {\n captureSVG.classList.add(\"bb-capture-svg--preview\");\n }\n\n // Remove the preview UI\n const videoPreviewContainer = document.querySelector(\".bb-capture-preview\");\n if (videoPreviewContainer) {\n videoPreviewContainer.remove();\n }\n\n // Feedback button\n const feedbackButton = document.querySelector(\".bb-feedback-button\");\n if (feedbackButton) {\n feedbackButton.style.display = \"flex\";\n }\n\n // Feedback dialog container\n const dialogUI = document.querySelector(\".bb-feedback-dialog-container\");\n if (dialogUI) {\n dialogUI.style.display = \"block\";\n }\n\n // Dismiss button\n const dismissUI = document.querySelector(\".bb-capture-dismiss\");\n if (dismissUI) {\n dismissUI.style.display = \"none\";\n }\n\n // Hide the color picker\n const colorPicker = document.querySelector(\n \".bb-capture-toolbar-item-colorpicker\"\n );\n if (colorPicker) {\n colorPicker.style.display = \"none\";\n }\n\n // Border layer\n const borderLayer = document.querySelector(\n \".bb-capture-editor-borderlayer\"\n );\n if (borderLayer) {\n borderLayer.style.display = \"none\";\n }\n }\n\n clear() {\n const captureEditor = document.querySelector(\".bb-capture-editor\");\n if (captureEditor) {\n captureEditor.remove();\n }\n }\n\n setMouseMove(x, y) {\n if (!this.dragCursor) {\n return;\n }\n\n this.dragCursor.style.left = `${x + 6}px`;\n this.dragCursor.style.top = `${y - 26}px`;\n this.dragCursor.style.right = null;\n }\n\n mouseMoveEventHandler(e) {\n const x = e.clientX;\n const y = e.clientY;\n this.setMouseMove(x, y);\n }\n\n touchMoveEventHandler(e) {\n const x = e.touches[0].clientX;\n const y = e.touches[0].clientY;\n this.setMouseMove(x, y);\n }\n\n setupMousePointer() {\n const self = this;\n this.dragCursor = document.querySelector(\".bb-capture-editor-drag-info\");\n const captureSVG = document.querySelector(\".bb-capture-svg\");\n captureSVG.addEventListener(\"mouseenter\", (e) => {\n self.dragCursor.style.opacity = 1;\n });\n\n captureSVG.addEventListener(\"mouseleave\", (e) => {\n self.dragCursor.style.opacity = 0;\n });\n\n document.documentElement.addEventListener(\n \"mousemove\",\n this.mouseMoveEventHandler.bind(this)\n );\n document.documentElement.addEventListener(\n \"touchmove\",\n this.touchMoveEventHandler.bind(this)\n );\n }\n\n cleanupMousePointer() {\n document.documentElement.removeEventListener(\n \"mousemove\",\n this.mouseMoveEventHandler\n );\n document.documentElement.removeEventListener(\n \"touchmove\",\n this.touchMoveEventHandler\n );\n\n // Clean up toolbar drag listeners\n const dragHandle = document.querySelector(\".bb-capture-toolbar-item[data-type='drag']\");\n if (dragHandle) {\n dragHandle.removeEventListener(\"mousedown\", this.dragStart);\n dragHandle.removeEventListener(\"touchstart\", this.dragStart);\n document.removeEventListener(\"mousemove\", this.drag);\n document.removeEventListener(\"touchmove\", this.drag);\n document.removeEventListener(\"mouseup\", this.dragEnd);\n document.removeEventListener(\"touchend\", this.dragEnd);\n }\n\n if (this.dragCursor) {\n this.dragCursor.remove();\n }\n }\n\n createEditorUI() {\n // Add HTML for drawing and recording\n var bugReportingEditor = document.createElement(\"div\");\n bugReportingEditor.className = \"bb-capture-editor\";\n bugReportingEditor.innerHTML = `\n
\n \n
${loadIcon(\"dismiss\")}
\n
${loadIcon(\"rect\")}
\n
\n
\n ${loadIcon(\"drag\")}\n
\n ${this.type === \"capture\"\n ? `
\n ${loadIcon(\"recorderon\")}\n ${loadIcon(\"recorderoff\")}\n \n
\n
\n ${loadIcon(\"mic\")}\n \n
\n
2:00
\n
\n
\n ${loadIcon(\"pointer\")}\n
`\n : \"\"\n }\n
\n ${loadIcon(\"rect\")}\n
\n
\n ${loadIcon(\"pen\")}\n
\n
\n ${loadIcon(\"blur\")}\n
\n
\n
\n ${GleapTranslationManager.translateText(\n `pickAColor`\n )}\n
\n
\n ${loadIcon(\"undo\")}\n ${GleapTranslationManager.translateText(\n `undo`\n )}\n
\n ${this.type !== \"capture\"\n ? `
${GleapTranslationManager.translateText(\n `next`\n )}
`\n : \"\"\n }\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
${GleapTranslationManager.translateText(\n `retry`\n )}
\n
${GleapTranslationManager.translateText(\n `next`\n )}
\n
\n
\n
\n `;\n document.body.appendChild(bugReportingEditor);\n\n // Set RTL layout\n bugReportingEditor.setAttribute(\"dir\", GleapTranslationManager.getInstance().isRTLLayout ? \"rtl\" : \"ltr\");\n }\n\n showNextStep = function () {\n // Adapt the UI\n this.showWidgetUI();\n\n if (this.callback) {\n GleapFrameManager.getInstance().sendMessage({\n name: \"set-form-data\",\n data: {\n formKey: \"capture\",\n data: {\n value: this.type,\n dirty: true,\n }\n }\n });\n this.callback(true);\n }\n };\n\n unregisterListeners() {\n if (this.escListener) {\n document.removeEventListener(\"keydown\", this.escListener);\n }\n\n if (this.pageLeaveListener) {\n window.removeEventListener(\"beforeunload\", this.pageLeaveListener);\n }\n }\n\n registerListeners() {\n const self = this;\n\n // Esc listener\n this.escListener = function (evt) {\n evt = evt || window.event;\n var isEscape = false;\n var isEnter = false;\n if (\"key\" in evt) {\n isEscape = evt.key === \"Escape\";\n isEnter = evt.key === \"Enter\";\n }\n if (isEscape) {\n self.dismiss();\n }\n if (self.type === \"screenshot\" && isEnter) {\n self.showNextStep();\n }\n };\n document.addEventListener(\"keydown\", this.escListener);\n\n // Page leave listener\n this.pageLeaveListener = function (event) {\n event.preventDefault();\n event.returnValue = \"\";\n };\n window.addEventListener(\"beforeunload\", this.pageLeaveListener);\n }\n\n show(callback) {\n this.callback = callback;\n const self = this;\n\n // Register for listeners\n this.registerListeners();\n\n // Hide widget UI\n this.hideWidgetUI();\n\n // Create the editor UI\n this.createEditorUI();\n\n // Setup the mouse pointer\n this.setupMousePointer();\n\n // Setup screenshot data\n if (this.type === \"screenshot\") {\n // Overwrite snapshot position\n Gleap.getInstance().setGlobalDataItem(\"snapshotPosition\", {\n x: window.scrollX,\n y: window.scrollY,\n });\n\n // Disable scroll\n GleapScrollStopper.disableScroll();\n } else {\n // Setup screen recording\n this.setupScreenRecording();\n }\n\n // Hook up the drawing.\n this.screenDrawer = new ScreenDrawer(\n this.captureScreenDrawerRerender.bind(this)\n );\n\n this.setupColorPicker();\n this.setupToolbar();\n }\n\n setupColorPicker() {\n const self = this;\n const selectedColor = document.querySelector(\n \".bb-capture-toolbar-item-selectedcolor\"\n );\n const colorItems = document.querySelectorAll(\n \".bb-capture-toolbar-item-color\"\n );\n const colorpicker = document.querySelector(\n \".bb-capture-toolbar-item-colorpicker\"\n );\n\n for (var i = 0; i < colorItems.length; i++) {\n const colorItem = colorItems[i];\n const hexColor = colorItem.getAttribute(\"data-color\");\n colorItem.style.backgroundColor = hexColor;\n colorItem.onclick = function () {\n if (colorItem) {\n self.screenDrawer.setColor(hexColor);\n if (colorpicker) {\n colorpicker.style.display = \"none\";\n }\n selectedColor.style.backgroundColor = colorItem.style.backgroundColor;\n GleapMarkerManager.setPenColor(hexColor);\n }\n };\n }\n }\n\n static setPenColor(hexColor) {\n const penTips = document.querySelectorAll(\".bb-pen-tip\");\n for (var j = 0; j < penTips.length; j++) {\n penTips[j].style.fill = hexColor;\n }\n }\n\n dismiss() {\n this.showWidgetUI();\n\n if (this.callback) {\n this.callback(false);\n }\n }\n\n setupToolbar() {\n const self = this;\n const toolbar = document.querySelector(\".bb-capture-toolbar\");\n let isDragging = false;\n let currentX;\n let currentY;\n let initialX;\n let initialY;\n let xOffset = 0;\n let yOffset = 0;\n\n const getTransformValues = () => {\n const transform = window.getComputedStyle(toolbar).transform;\n if (transform === 'none') return { x: 0, y: 0 };\n const matrix = new DOMMatrix(transform);\n return { x: matrix.m41, y: matrix.m42 };\n };\n\n this.dragStart = (e) => {\n const { x, y } = getTransformValues();\n xOffset = x;\n yOffset = y;\n\n if (e.type === \"mousedown\") {\n initialX = e.clientX - xOffset;\n initialY = e.clientY - yOffset;\n } else {\n initialX = e.touches[0].clientX - xOffset;\n initialY = e.touches[0].clientY - yOffset;\n }\n isDragging = true;\n };\n\n this.dragEnd = () => {\n isDragging = false;\n };\n\n this.drag = (e) => {\n if (isDragging) {\n e.preventDefault();\n if (e.type === \"mousemove\") {\n currentX = e.clientX - initialX;\n currentY = e.clientY - initialY;\n } else {\n currentX = e.touches[0].clientX - initialX;\n currentY = e.touches[0].clientY - initialY;\n }\n\n xOffset = currentX;\n yOffset = currentY;\n\n toolbar.style.transform = `translate(${currentX}px, ${currentY}px)`;\n }\n };\n\n const dragHandle = document.querySelector(\".bb-capture-toolbar-item[data-type='drag']\");\n\n dragHandle.addEventListener(\"mousedown\", this.dragStart);\n dragHandle.addEventListener(\"touchstart\", this.dragStart);\n document.addEventListener(\"mousemove\", this.drag);\n document.addEventListener(\"touchmove\", this.drag);\n document.addEventListener(\"mouseup\", this.dragEnd);\n document.addEventListener(\"touchend\", this.dragEnd);\n\n // Hook up dismiss button\n const dismissButton = document.querySelector(\".bb-capture-dismiss\");\n dismissButton.onclick = function () {\n self.dismiss();\n };\n\n // Hook up send button\n const nextButton = document.querySelector(\".bb-capture-button-next\");\n if (nextButton) {\n nextButton.onclick = this.showNextStep.bind(this);\n }\n\n const colorpicker = document.querySelector(\n \".bb-capture-toolbar-item-colorpicker\"\n );\n\n // Capture SVG ref\n const captureSVG = document.querySelector(\".bb-capture-svg\");\n\n const chooseTool = function (type, toolbarItem) {\n const toolbarTools = document.querySelectorAll(\n \".bb-capture-toolbar-item-tool\"\n );\n for (let j = 0; j < toolbarTools.length; j++) {\n toolbarTools[j].classList.remove(\"bb-capture-toolbar-item--active\");\n }\n toolbarItem.classList.add(\"bb-capture-toolbar-item--active\");\n self.screenDrawer.setTool(type);\n self.dragCursor.innerHTML = \"\";\n if (type === \"pointer\") {\n captureSVG.style.pointerEvents = \"none\";\n } else {\n captureSVG.style.pointerEvents = \"auto\";\n try {\n var svgClone = toolbarItem.querySelector(\"svg\").cloneNode(true);\n if (svgClone && self.dragCursor) {\n self.dragCursor.appendChild(svgClone);\n }\n } catch (exp) { }\n }\n }\n\n // Setup toolbar items\n var toolbarItems = document.querySelectorAll(\".bb-capture-toolbar-item\");\n for (var i = 0; i < toolbarItems.length; i++) {\n const toolbarItem = toolbarItems[i];\n toolbarItem.onclick = function () {\n const type = toolbarItem.getAttribute(\"data-type\");\n if (colorpicker && type !== \"colorpicker\") {\n colorpicker.style.display = \"none\";\n }\n\n // Mic & recording buttons\n if (type === \"mic\") {\n self.screenRecorder.toggleAudio();\n }\n if (type === \"recording\") {\n if (self.screenRecorder.isRecording) {\n self.screenRecorder.stopScreenRecording();\n } else {\n self.screenRecorder.startScreenRecording();\n chooseTool(\"pointer\", document.querySelector(\".bb-capture-toolbar-item[data-type='pointer']\"));\n }\n }\n\n // Marker buttons\n if (self.type === \"capture\" && !self.screenRecorder.isRecording) {\n // Inactivate buttons.\n return;\n }\n if (\n type === \"pen\" ||\n type === \"blur\" ||\n type === \"rect\" ||\n type === \"pointer\"\n ) {\n chooseTool(type, toolbarItem);\n }\n if (type === \"colorpicker\") {\n if (colorpicker.style.display === \"flex\") {\n colorpicker.style.display = \"none\";\n } else {\n colorpicker.style.display = \"flex\";\n }\n }\n if (type === \"undo\") {\n self.screenDrawer.removeLastAddedPathFromSvg();\n }\n };\n }\n }\n\n captureScreenDrawerRerender() {\n if (!this.screenDrawer) {\n return;\n }\n\n const itemInactiveClass = \"bb-capture-editor-item-inactive\";\n const toolbarItems = document.querySelectorAll(\".bb-capture-toolbar-item\");\n for (var i = 0; i < toolbarItems.length; i++) {\n const toolbarItem = toolbarItems[i];\n const type = toolbarItem.getAttribute(\"data-type\");\n switch (type) {\n case \"undo\":\n if (\n this.screenDrawer.pathBuffer != null &&\n this.screenDrawer.pathBuffer.length > 0\n ) {\n toolbarItem.classList.remove(itemInactiveClass);\n } else {\n toolbarItem.classList.add(itemInactiveClass);\n }\n break;\n default:\n break;\n }\n }\n }\n\n captureRenderer() {\n if (!this.screenRecorder) {\n return;\n }\n\n if (this.screenRecorder.file) {\n Gleap.getInstance().setGlobalDataItem(\"screenRecordingData\", this.screenRecorder.file);\n }\n\n const itemInactiveClass = \"bb-capture-editor-item-inactive\";\n const timerLabel = document.querySelector(\".bb-capture-toolbar-item-timer\");\n const toolbarItems = document.querySelectorAll(\".bb-capture-toolbar-item\");\n const screenRecordingTooltip = document.querySelector(\n \".bb-tooltip-screen-recording\"\n );\n const audioRecordingTooltip = document.querySelector(\n \".bb-tooltip-audio-recording\"\n );\n const captureEditor = document.querySelector(\".bb-capture-editor\");\n const recordingClass = \"bb-capture-editor-recording\";\n const notRecordingClass = \"bb-capture-editor-notrecording\";\n if (this.screenRecorder.isRecording) {\n captureEditor.classList.add(recordingClass);\n captureEditor.classList.remove(notRecordingClass);\n } else {\n captureEditor.classList.add(notRecordingClass);\n captureEditor.classList.remove(recordingClass);\n }\n \n // Update UI.\n const dialog = document.querySelector(\".bb-capture-toolbar\");\n const videoPreviewContainer = document.querySelector(\".bb-capture-preview\");\n videoPreviewContainer.style.display = this.screenRecorder.file\n ? \"flex\"\n : \"none\";\n dialog.style.display = !this.screenRecorder.file ? \"flex\" : \"none\";\n\n for (var i = 0; i < toolbarItems.length; i++) {\n const toolbarItem = toolbarItems[i];\n const type = toolbarItem.getAttribute(\"data-type\");\n switch (type) {\n case \"mic\":\n if (\n this.screenRecorder.audioAvailable &&\n this.screenRecorder.available\n ) {\n toolbarItem.classList.remove(itemInactiveClass);\n if (!this.screenRecorder.audioMuted) {\n toolbarItem.classList.remove(\n \"bb-capture-toolbar-item--inactivecross\"\n );\n audioRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"mute\"\n );\n } else {\n toolbarItem.classList.add(\n \"bb-capture-toolbar-item--inactivecross\"\n );\n audioRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"unmute\"\n );\n }\n } else {\n toolbarItem.classList.add(itemInactiveClass);\n toolbarItem.classList.add(\"bb-capture-toolbar-item--inactivecross\");\n audioRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"browserNotSupported\"\n );\n }\n break;\n\n case \"recording\":\n if (this.screenRecorder.available) {\n toolbarItem.classList.remove(itemInactiveClass);\n if (this.screenRecorder.isRecording) {\n toolbarItem.setAttribute(\"data-active\", \"true\");\n screenRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"stopRecording\"\n );\n timerLabel.style.display = \"block\";\n } else {\n toolbarItem.setAttribute(\"data-active\", \"false\");\n screenRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"startRecording\"\n );\n timerLabel.style.display = \"none\";\n }\n } else {\n // Recording is not available.\n toolbarItem.classList.add(itemInactiveClass);\n screenRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"browserNotSupported\"\n );\n }\n break;\n\n default:\n break;\n }\n }\n }\n\n setupScreenRecording() {\n const self = this;\n\n // Hook preview next button\n const nextButtonPreview = document.querySelector(\n \".bb-capture-preview-sendbutton\"\n );\n nextButtonPreview.onclick = this.showNextStep.bind(this);\n\n // Hook retry button\n const retryButton = document.querySelector(\n \".bb-capture-preview-retrybutton\"\n );\n retryButton.onclick = function () {\n self.screenRecorder.clearPreview();\n if (self.screenDrawer) {\n self.screenDrawer.clear();\n }\n };\n\n // Setup screen recorder\n this.screenRecorder = new GleapScreenRecorder(\n this.captureRenderer.bind(this),\n GleapTranslationManager.translateText(\n \"accessToScreenSharingDenied\"\n )\n );\n }\n}\n","import {\n GleapFrameManager,\n GleapFeedbackButtonManager,\n GleapConfigManager,\n} from \"./Gleap\";\n\nexport default class GleapTranslationManager {\n overrideLanguage = \"\";\n isRTLLayout = false;\n\n // GleapTranslationManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapTranslationManager();\n }\n return this.instance;\n }\n\n /**\n * Returns the language to override the default language.\n * @returns {string}\n */\n getOverrideLanguage() {\n return this.overrideLanguage;\n }\n\n /**\n * Sets the language to override the default language.\n * @param {*} language\n */\n setOverrideLanguage(language) {\n this.overrideLanguage = language;\n }\n\n updateRTLSupport() {\n // Update RTL support.\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n\n this.isRTLLayout = false;\n if (\n flowConfig &&\n flowConfig.localizationOptions &&\n flowConfig.localizationOptions.rtl\n ) {\n this.isRTLLayout = true;\n }\n\n GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n GleapFrameManager.getInstance().updateFrameStyle();\n }\n\n getActiveLanguage() {\n var language = \"en\";\n if (typeof navigator !== \"undefined\") {\n language = navigator.language.toLowerCase();\n }\n\n // Get language from HTML lang attribute if available\n if (typeof document !== \"undefined\" && document.documentElement) {\n const htmlLang = document.documentElement.lang;\n if (htmlLang && htmlLang.trim() !== \"\") {\n language = htmlLang.toLowerCase().trim();\n }\n }\n\n if (this.overrideLanguage && this.overrideLanguage !== \"\") {\n language = this.overrideLanguage.toLowerCase();\n }\n\n return language;\n }\n\n static translateText(key) {\n if (!key) {\n return \"\";\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const staticTranslation = flowConfig.staticTranslations;\n\n if (staticTranslation && staticTranslation[key]) {\n return staticTranslation[key];\n }\n\n return key;\n }\n\n static translateTextWithVars(key, vars) {\n if (!key) {\n return \"\";\n }\n\n var template = this.translateText(key);\n if (!template) {\n return \"\";\n }\n\n return template.replace(/{(\\w+)}/g, function (_, key) {\n return vars[key];\n });\n }\n}\n","import Gleap from \"./Gleap\";\n\nexport default class GleapShortcutListener {\n shortCutListener = undefined;\n\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapShortcutListener();\n }\n return this.instance;\n }\n\n start() {\n if (this.shortCutListener) {\n return;\n }\n\n const charForEvent = function (event) {\n var code;\n\n if (event.key !== undefined) {\n code = event.key;\n } else if (event.keyIdentifier !== undefined) {\n code = event.keyIdentifier;\n } else if (event.keyCode !== undefined) {\n code = event.keyCode;\n }\n\n return code;\n };\n\n this.shortCutListener = document.addEventListener(\"keyup\", function (e) {\n const char = charForEvent(e);\n if (\n e.ctrlKey &&\n (char === \"u\" || char === \"U\" || char === 85)\n ) {\n Gleap.startFeedbackFlowWithOptions(\"bugreporting\", {\n autostartDrawing: true\n });\n }\n });\n }\n\n stop() {\n if (this.shortCutListener) {\n document.removeEventListener(\"keyup\", this.shortCutListener);\n this.shortCutListener = undefined;\n }\n }\n}","\nexport default class GleapPreFillManager {\n formPreFill = {};\n \n // GleapPreFillManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapPreFillManager();\n }\n return this.instance;\n }\n }\n ","import Gleap, {\n GleapFeedbackButtonManager,\n GleapConfigManager,\n GleapFrameManager,\n GleapSession,\n GleapAudioManager,\n GleapTranslationManager,\n GleapEventManager,\n} from \"./Gleap\";\nimport { loadFromGleapCache, saveToGleapCache } from \"./GleapHelper\";\nimport { loadIcon } from \"./UI\";\n\nexport default class GleapNotificationManager {\n notificationContainer = null;\n notifications = [];\n unreadCount = 0;\n unreadNotificationsKey = \"unread-notifications\";\n isTabActive = true;\n showNotificationBadge = true;\n\n // Keep track of the current index of news being shown\n currentNewsIndex = 0;\n\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapNotificationManager();\n }\n return this.instance;\n }\n\n constructor() {}\n\n updateTabBarNotificationCount() {\n GleapEventManager.notifyEvent(\"unread-count-changed\", this.unreadCount);\n }\n\n injectNotificationUI() {\n if (this.notificationContainer) {\n return;\n }\n\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-notification-container gleap-font\";\n document.body.appendChild(elem);\n this.notificationContainer = elem;\n\n this.updateContainerStyle();\n this.reloadNotificationsFromCache();\n }\n\n reloadNotificationsFromCache() {\n try {\n const notificationsFromCache = loadFromGleapCache(\n this.unreadNotificationsKey\n );\n if (notificationsFromCache && notificationsFromCache.length > 0) {\n let nots = notificationsFromCache.filter(\n (notification) =>\n new Date(notification.createdAt) >\n new Date(Date.now() - 1 * 60 * 60 * 1000)\n );\n\n if (nots.length > 2) {\n this.notifications = nots.splice(0, nots.length - 2);\n } else {\n this.notifications = nots;\n }\n this.renderNotifications();\n }\n } catch (exp) {}\n }\n\n setNotificationCount(unreadCount) {\n this.unreadCount = unreadCount;\n this.updateTabBarNotificationCount();\n\n // Update the badge counter.\n GleapFeedbackButtonManager.getInstance().updateNotificationBadge(\n this.unreadCount\n );\n }\n\n showNotification(notification) {\n if (!(this.notificationContainer && notification && notification.data)) {\n return;\n }\n\n const notificationsForOutbound = this.notifications.find(\n (e) => notification.outbound === e.outbound\n );\n if (!notificationsForOutbound) {\n this.notifications.push(notification);\n\n // Play sound only if it's a new one\n if (notification.sound) {\n GleapAudioManager.ping();\n }\n }\n if (this.notifications.length > 2) {\n this.notifications.shift();\n }\n\n // Persist notifications.\n saveToGleapCache(this.unreadNotificationsKey, this.notifications);\n\n this.renderNotifications();\n }\n\n /**\n * Renders notifications. For news-type notifications, only show\n * one at a time if there are multiple, with a \"Next\" button to cycle.\n * The \"Next\" button + pagination are placed within the news content area.\n *\n * - Sorts news notifications by createdAt (oldest first).\n * - Shows \"Done\" on the last news item instead of \"Next\".\n */\n renderNotifications() {\n if (!this.notificationContainer) {\n return;\n }\n\n // Clear the existing notifications in the container (UI only).\n this.clearAllNotifications(true);\n\n // Append a close button (which clears everything).\n const clearElem = document.createElement(\"div\");\n clearElem.onclick = () => {\n this.clearAllNotifications();\n // Reset the news index when everything is closed\n this.currentNewsIndex = 0;\n };\n clearElem.className = \"gleap-notification-close\";\n clearElem.innerHTML = loadIcon(\"dismiss\");\n this.notificationContainer.appendChild(clearElem);\n\n // Separate out news notifications vs. others, then sort news by date ascending\n const newsNotifications = this.notifications\n .filter((n) => n.data.news)\n .sort((a, b) => new Date(a.createdAt) - new Date(b.createdAt));\n\n const otherNotifications = this.notifications.filter((n) => !n.data.news);\n\n // --- Render NEWS notifications (with pagination) ---\n if (newsNotifications.length > 0) {\n // We only show ONE news item at a time if there's more than one\n const currentIndex =\n this.currentNewsIndex < newsNotifications.length\n ? this.currentNewsIndex\n : 0;\n const currentNews = newsNotifications[currentIndex];\n\n // Main wrapper for the news notification\n const newsElem = document.createElement(\"div\");\n newsElem.className = \"gleap-notification-item-news\";\n\n // The container that holds image + content\n const newsContainerElem = document.createElement(\"div\");\n newsContainerElem.className = \"gleap-notification-item-news-container\";\n\n // Create the image element (clickable)\n if (\n currentNews.data.coverImageUrl &&\n currentNews.data.coverImageUrl !== \"\" &&\n !currentNews.data.coverImageUrl.includes(\"NewsImagePlaceholder\")\n ) {\n const newsImageElem = document.createElement(\"img\");\n newsImageElem.className = \"gleap-notification-item-news-image\";\n newsImageElem.src = currentNews.data.coverImageUrl;\n\n // Only the image is clickable\n newsImageElem.onclick = (e) => {\n e.stopPropagation();\n this.openNews(currentNews);\n };\n newsContainerElem.appendChild(newsImageElem);\n }\n\n // The content container\n const newsContentElem = document.createElement(\"div\");\n newsContentElem.className = \"gleap-notification-item-news-content\";\n\n // Title (clickable)\n const newsTitleElem = document.createElement(\"div\");\n newsTitleElem.className = \"gleap-notification-item-news-content-title\";\n\n let content = currentNews.data.text || \"\";\n content = content.replaceAll(\n \"{{name}}\",\n GleapSession.getInstance().getName()\n );\n newsTitleElem.innerText = content;\n\n // Only the title is clickable\n newsTitleElem.onclick = (e) => {\n e.stopPropagation();\n this.openNews(currentNews);\n };\n\n newsContentElem.appendChild(newsTitleElem);\n\n // Description / Sender\n const descHTML = this.renderDescription(currentNews);\n if (descHTML) {\n const descElem = document.createElement(\"div\");\n descElem.className = \"gleap-notification-item-news-preview\";\n descElem.innerHTML = descHTML;\n newsContentElem.appendChild(descElem);\n }\n\n // If there's more than one news item, show pagination + next/done button\n if (newsNotifications.length > 1) {\n // Pagination container (still inside .gleap-notification-item-news-content)\n const paginationElem = document.createElement(\"div\");\n paginationElem.className = \"gleap-news-pagination\";\n\n // Show current item / total\n const pageIndicator = document.createElement(\"span\");\n pageIndicator.className = \"gleap-news-page-indicator\";\n pageIndicator.innerText = `${currentIndex + 1} / ${\n newsNotifications.length\n }`;\n paginationElem.appendChild(pageIndicator);\n\n // Next or Done button\n const nextBtn = document.createElement(\"button\");\n nextBtn.className = \"gleap-news-next-button\";\n\n if (currentIndex < newsNotifications.length - 1) {\n nextBtn.innerText = GleapTranslationManager.translateText(`next`);\n nextBtn.onclick = (e) => {\n e.stopPropagation(); // so we can click the button freely\n this.currentNewsIndex++;\n this.renderNotifications();\n };\n } else {\n nextBtn.innerText = GleapTranslationManager.translateText(`done`);\n nextBtn.onclick = (e) => {\n e.stopPropagation();\n this.clearAllNotifications();\n this.currentNewsIndex = 0;\n };\n }\n paginationElem.appendChild(nextBtn);\n newsContentElem.appendChild(paginationElem);\n }\n\n // Append content to container\n newsContainerElem.appendChild(newsContentElem);\n // Append container to the main element\n newsElem.appendChild(newsContainerElem);\n // Finally append to the notification container\n this.notificationContainer.appendChild(newsElem);\n }\n\n // --- Render OTHER notifications normally ---\n for (let i = 0; i < otherNotifications.length; i++) {\n const notification = otherNotifications[i];\n let content = notification.data.text || \"\";\n // Replace placeholders\n content = content.replaceAll(\n \"{{name}}\",\n GleapSession.getInstance().getName()\n );\n\n const elem = document.createElement(\"div\");\n elem.onclick = () => {\n if (notification.data.conversation) {\n Gleap.openConversation(\n notification.data.conversation.shareToken,\n true\n );\n } else if (notification.data.checklist) {\n Gleap.openChecklist(notification.data.checklist.id, true);\n } else {\n Gleap.open();\n }\n };\n\n // Check if it's a checklist type\n if (notification.data.checklist) {\n let progress = Math.round(\n (notification.data.currentStep / notification.data.totalSteps) * 100\n );\n if (progress < 100) {\n progress += 4;\n }\n\n elem.className = \"gleap-notification-item-checklist\";\n elem.innerHTML = `\n
\n
\n
\n ${notification.data.text}\n
\n
\n
\n
\n
\n \n \n \n ${notification.data.nextStepTitle}\n
\n
\n
`;\n } else {\n // Standard non-news notification\n elem.className = \"gleap-notification-item\";\n elem.innerHTML = `\n ${\n notification.data.sender &&\n notification.data.sender.profileImageUrl &&\n ``\n }\n
\n ${\n notification.data.sender\n ? `
\n ${notification.data.sender.name}\n
`\n : \"\"\n }\n
${content}
\n
`;\n }\n this.notificationContainer.appendChild(elem);\n }\n\n const hasNotifications =\n newsNotifications.length > 0 || otherNotifications.length > 0;\n if (!hasNotifications) {\n // Clear the notification container\n this.clearAllNotifications(true);\n }\n }\n\n /**\n * Helper to open news from a given notification.\n */\n openNews(notification) {\n if (notification.data.news) {\n Gleap.openNewsArticle(notification.data.news.id, true);\n } else {\n Gleap.open();\n }\n }\n\n /**\n * Helper to render preview or sender info for news notifications.\n */\n renderDescription(notification) {\n const { previewText, sender } = notification.data;\n if (previewText && previewText.length > 0) {\n return previewText;\n } else if (sender) {\n // Return HTML for the sender name + optional image\n return `\n
\n ${\n sender.profileImageUrl\n ? `\"${sender.name}\"`\n : \"\"\n }\n ${sender.name}\n
\n `;\n }\n return \"\";\n }\n\n /**\n * Clears all notifications from the container.\n *\n * @param {boolean} uiOnly - Whether to only clear the UI or also the notifications.\n */\n clearAllNotifications(uiOnly = false) {\n if (!this.notificationContainer) {\n return;\n }\n\n if (!uiOnly) {\n this.notifications = [];\n // Reset currentNewsIndex whenever we clear them out\n this.currentNewsIndex = 0;\n saveToGleapCache(this.unreadNotificationsKey, this.notifications);\n }\n\n while (this.notificationContainer.firstChild) {\n this.notificationContainer.removeChild(\n this.notificationContainer.firstChild\n );\n }\n }\n\n updateContainerStyle() {\n if (!this.notificationContainer) {\n return;\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const classLeft = \"gleap-notification-container--left\";\n const classNoButton = \"gleap-notification-container--no-button\";\n this.notificationContainer.classList.remove(classLeft);\n this.notificationContainer.classList.remove(classNoButton);\n\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_BOTTOM_LEFT\n ) {\n this.notificationContainer.classList.add(classLeft);\n }\n\n if (GleapFeedbackButtonManager.getInstance().buttonHidden === null) {\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_NONE\n ) {\n this.notificationContainer.classList.add(classNoButton);\n }\n } else {\n if (GleapFeedbackButtonManager.getInstance().buttonHidden) {\n this.notificationContainer.classList.add(classNoButton);\n }\n }\n\n this.notificationContainer.setAttribute(\n \"dir\",\n GleapTranslationManager.getInstance().isRTLLayout ? \"rtl\" : \"ltr\"\n );\n }\n}\n","import Gleap, { GleapFrameManager } from \"./Gleap\";\n\nexport default class GleapBannerManager {\n bannerUrl = \"https://outboundmedia.gleap.io\";\n bannerContainer = null;\n bannerData = null;\n\n // GleapBannerManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapBannerManager();\n }\n return this.instance;\n }\n\n constructor() {\n this.startCommunication();\n }\n\n setBannerUrl(url) {\n this.bannerUrl = url;\n }\n\n startCommunication() {\n // Add window message listener.\n window.addEventListener(\"message\", (event) => {\n if (!this.bannerUrl?.includes(event.origin)) {\n return;\n }\n\n try {\n const data = JSON.parse(event.data);\n\n if (data?.type !== \"BANNER\") {\n return;\n }\n\n if (data.name === \"banner-loaded\" && this.bannerData) {\n this.sendMessage({\n name: \"banner-data\",\n data: this.bannerData,\n });\n }\n if (data.name === \"banner-height\") {\n document.documentElement.style.setProperty(\n \"--gleap-margin-top\",\n data.data.height + \"px\"\n );\n }\n if (data.name === \"banner-data-set\") {\n document.body.classList.add(\"gleap-b-shown\");\n\n if (this.bannerData?.format === \"floating\") {\n document.body.classList.add(\"gleap-b-f\");\n }\n }\n if (data.name === \"banner-close\") {\n this.removeBannerUI();\n }\n if (data.name === \"start-conversation\") {\n Gleap.startBot(data.data?.botId);\n }\n if (data.name === \"start-custom-action\") {\n Gleap.triggerCustomAction(data.data?.action);\n }\n if (data.name === \"start-product-tour\") {\n Gleap.startProductTour(data.data?.tourId, true);\n }\n if (data.name === \"open-url\") {\n const url = data.data;\n const newTab = data.newTab ? true : false;\n GleapFrameManager.getInstance().urlHandler(url, newTab);\n }\n if (data.name === \"show-form\") {\n Gleap.startFeedbackFlow(data.data?.formId);\n }\n if (data.name === \"show-survey\") {\n Gleap.showSurvey(data.data?.formId, data.data?.surveyFormat);\n }\n if (data.name === \"show-news-article\") {\n Gleap.openNewsArticle(data.data?.articleId);\n }\n if (data.name === \"show-help-article\") {\n Gleap.openHelpCenterArticle(data.data?.articleId);\n }\n if (data.name === \"show-checklist\") {\n Gleap.startChecklist(\n data.data?.checklistId,\n true,\n data.data?.sharedKey\n );\n }\n } catch (exp) {}\n });\n }\n\n removeBannerUI() {\n if (this.bannerContainer) {\n document.body.removeChild(this.bannerContainer);\n this.bannerContainer = null;\n }\n\n document.body.classList.remove(\"gleap-b-shown\");\n document.body.classList.remove(\"gleap-b-f\");\n }\n\n /**\n * Injects the feedback button into the current DOM.\n */\n injectBannerUI(bannerData) {\n if (!document.body) {\n return false;\n }\n\n if (this.bannerContainer) {\n this.removeBannerUI();\n }\n\n this.bannerData = bannerData;\n\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-b\";\n elem.innerHTML = ``;\n document.body.appendChild(elem);\n this.bannerContainer = elem;\n }\n\n sendMessage(data) {\n try {\n const gleapBFrame = document.querySelector(\".gleap-b-frame\");\n if (gleapBFrame && gleapBFrame.contentWindow) {\n gleapBFrame.contentWindow.postMessage(\n JSON.stringify({\n ...data,\n type: \"banner\",\n }),\n \"*\"\n );\n }\n } catch (e) {}\n }\n\n showBanner(bannerData) {\n this.injectBannerUI(bannerData);\n }\n}\n","import Gleap, { GleapConfigManager, GleapFrameManager } from \"./Gleap\";\n\nexport default class GleapModalManager {\n modalUrl = \"https://outboundmedia.gleap.io/modal\";\n modalContainer = null;\n modalData = null;\n modalBackdropClickListener = null;\n\n // singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapModalManager();\n }\n return this.instance;\n }\n\n constructor() {\n this._listenForMessages();\n }\n\n setModalUrl(url) {\n this.modalUrl = url;\n }\n\n _listenForMessages() {\n window.addEventListener(\"message\", (event) => {\n if (!this.modalUrl?.includes(event.origin)) {\n return;\n }\n\n try {\n const data = JSON.parse(event.data);\n\n if (data?.type !== \"MODAL\") {\n return;\n }\n\n if (data.name === \"modal-loaded\" && this.modalData) {\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const primaryColor = flowConfig.color ? flowConfig.color : \"#485BFF\";\n const backgroundColor = flowConfig.backgroundColor\n ? flowConfig.backgroundColor\n : \"#FFFFFF\";\n\n this._postMessage({\n name: \"modal-data\",\n data: {\n ...this.modalData,\n primaryColor: primaryColor,\n backgroundColor: backgroundColor,\n },\n });\n }\n if (data.name === \"modal-height\") {\n const height = data?.data?.height;\n if (height) {\n // Set the height of the modal iframe\n const iframe =\n this.modalContainer.querySelector(\".gleap-modal-frame\");\n if (iframe) {\n iframe.style.height = `${height}px`;\n }\n }\n }\n if (data.name === \"modal-data-set\") {\n // TODO: Implement\n }\n if (data.name === \"modal-close\") {\n this.hideModal();\n }\n if (data.name === \"start-conversation\") {\n Gleap.startBot(data.data?.botId);\n }\n if (data.name === \"start-custom-action\") {\n Gleap.triggerCustomAction(data.data?.action);\n }\n if (data.name === \"start-product-tour\") {\n Gleap.startProductTour(data.data?.tourId, true);\n }\n if (data.name === \"open-url\") {\n const url = data.data;\n const newTab = data.newTab ? true : false;\n GleapFrameManager.getInstance().urlHandler(url, newTab);\n }\n if (data.name === \"show-form\") {\n Gleap.startFeedbackFlow(data.data?.formId);\n }\n if (data.name === \"show-survey\") {\n Gleap.showSurvey(data.data?.formId, data.data?.surveyFormat);\n }\n if (data.name === \"show-news-article\") {\n Gleap.openNewsArticle(data.data?.articleId);\n }\n if (data.name === \"show-help-article\") {\n Gleap.openHelpCenterArticle(data.data?.articleId);\n }\n if (data.name === \"show-checklist\") {\n Gleap.startChecklist(\n data.data?.checklistId,\n true,\n data.data?.sharedKey\n );\n }\n } catch (exp) {}\n });\n }\n\n _injectModalUI(modalData) {\n if (!document.body) return false;\n\n if (this.modalContainer) {\n this.hideModal();\n }\n\n this.modalData = modalData;\n\n const wrapper = document.createElement(\"div\");\n wrapper.className = \"gleap-modal-wrapper\";\n wrapper.innerHTML = `\n
\n
\n \n
\n `;\n document.body.appendChild(wrapper);\n this.modalContainer = wrapper;\n\n // Add on backdrop click listener\n this.modalBackdropClickListener = this.modalContainer\n .querySelector(\".gleap-modal-backdrop\")\n .addEventListener(\"click\", () => {\n if (this.modalData?.showCloseButton ?? true) {\n this.hideModal();\n }\n });\n\n // lock background scroll\n document.body.classList.add(\"gleap-modal-open\");\n }\n\n _postMessage(message) {\n try {\n const frame = this.modalContainer.querySelector(\".gleap-modal-frame\");\n if (frame?.contentWindow) {\n frame.contentWindow.postMessage(\n JSON.stringify({ ...message, type: \"modal\" }),\n this.modalUrl\n );\n }\n } catch (err) {}\n }\n\n showModal(modalData) {\n if (modalData && modalData.config) {\n this._injectModalUI(modalData.config);\n }\n }\n\n hideModal() {\n if (!this.modalContainer) return;\n\n if (this.modalBackdropClickListener) {\n this.modalContainer\n .querySelector(\".gleap-modal-backdrop\")\n .removeEventListener(\"click\", this.modalBackdropClickListener);\n }\n\n document.body.removeChild(this.modalContainer);\n this.modalContainer = null;\n document.body.classList.remove(\"gleap-modal-open\");\n }\n}\n","export default class GleapAudioManager {\n static audio;\n static settings = {\n play: true\n };\n\n static playSound(play) {\n this.settings.play = play;\n }\n\n static ping() {\n try {\n if (!this.settings.play) {\n return;\n }\n\n if (!this.audio) {\n this.audio = new Audio('https://js.gleap.io/res/ping.mp3');\n }\n\n const playPromise = this.audio.play();\n if (playPromise !== undefined) {\n playPromise.then(_ => { })\n .catch(error => { });\n }\n } catch (exp) { }\n }\n}\n","export default class GleapTagManager {\n tags = [];\n\n // GleapTagManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapTagManager();\n }\n return this.instance;\n }\n\n /**\n * Returns the tags\n * @returns {*}\n */\n getTags() {\n return this.tags;\n }\n\n /**\n * Sets the tags sent with every ticket.\n * @param {*} tags Array of strings\n */\n setTags(tags) {\n this.tags = tags;\n }\n}\n","/**\n * Returns the Tag of the element\n * @param { Object } element\n * @return { String }\n */\nexport function getID( el )\n{\n const id = el.getAttribute( 'id' );\n\n if( id !== null && id !== '')\n {\n // if the ID starts with a number or contains \":\" selecting with a hash will cause a DOMException\n return id.match(/(?:^\\d|:)/) ? `[id=\"${id}\"]` : '#' + id;\n }\n return null;\n}\n","/**\n * Get class names for an element\n *\n * @pararm { Element } el\n * @return { Array }\n */\nexport function getClasses( el )\n{\n if( !el.hasAttribute( 'class' ) )\n {\n return [];\n }\n\n try {\n let classList = Array.prototype.slice.call( el.classList )\n\n // return only the valid CSS selectors based on RegEx\n return classList.filter(item => !/^[a-z_-][a-z\\d_-]*$/i.test( item ) ? null : item );\n } catch (e) {\n let className = el.getAttribute( 'class' );\n\n // remove duplicate and leading/trailing whitespaces\n className = className.trim().replace( /\\s+/g, ' ' );\n\n // split into separate classnames\n return className.split( ' ' );\n }\n}\n\n/**\n * Returns the Class selectors of the element\n * @param { Object } element\n * @return { Array }\n */\nexport function getClassSelectors( el )\n{\n const classList = getClasses( el ).filter( Boolean );\n return classList.map( cl => `.${cl}` );\n}\n","/**\n * Recursively combinate items.\n * @param { Array } result\n * @param { Array } items\n * @param { Array } data\n * @param { Number } start\n * @param { Number } end\n * @param { Number } index\n * @param { Number } k\n */\nfunction kCombinations( result, items, data, start, end, index, k )\n{\n if( index === k )\n {\n result.push( data.slice( 0, index ).join( '' ) );\n return;\n }\n\n for( let i = start; i <= end && end - i + 1 >= k - index; ++i )\n {\n data[index] = items[i];\n kCombinations( result, items, data, i + 1, end, index + 1, k );\n }\n}\n\n/**\n * Returns all the possible selector combinations\n * @param { Array } items\n * @param { Number } k\n * @return { Array }\n */\nexport function getCombinations( items, k )\n{\n const result = [],\n n = items.length,\n data = [];\n\n for( var l = 1; l <= k; ++l )\n {\n kCombinations( result, items, data, 0, n - 1, 0, l );\n }\n\n return result;\n}\n","/**\n * Determines if the passed el is a DOM element\n */\nexport function isElement( el )\n{\n let isElem;\n\n if ( typeof HTMLElement === 'object' )\n {\n isElem = el instanceof HTMLElement;\n }\n else\n {\n isElem = !!el && ( typeof el === 'object' ) && el.nodeType === 1 && typeof el.nodeName === 'string';\n }\n return isElem;\n}\n","import { isElement } from './isElement';\n\n/**\n * Returns the selectors based on the position of the element relative to its siblings\n * @param { Object } element\n * @return { Array }\n */\nexport function getNthChild( element )\n{\n let counter = 0;\n let k;\n let sibling;\n const { parentNode } = element;\n\n if( Boolean( parentNode ) )\n {\n const { childNodes } = parentNode;\n const len = childNodes.length;\n for ( k = 0; k < len; k++ )\n {\n sibling = childNodes[ k ];\n if( isElement( sibling ) )\n {\n counter++;\n if( sibling === element )\n {\n return `:nth-child(${counter})`;\n }\n }\n }\n }\n return null;\n}\n","/**\n * Returns the Tag of the element\n * @param { Object } element\n * @return { String }\n */\nexport function getTag( el )\n{\n return el.tagName.toLowerCase().replace(/:/g, '\\\\:');\n}\n","/**\n * Checks if the selector is unique\n * @param { Object } element\n * @param { String } selector\n * @return { Array }\n */\nexport function isUnique( el, selector )\n{\n if( !Boolean( selector ) ) return false;\n const elems = el.ownerDocument.querySelectorAll( selector );\n return elems.length === 1 && elems[ 0 ] === el;\n}\n","/**\n * Expose `unique`\n */\n\nimport { getID } from './getID';\nimport { getClassSelectors } from './getClasses';\nimport { getCombinations } from './getCombinations';\nimport { getAttributes } from './getAttributes';\nimport { getNthChild } from './getNthChild';\nimport { getTag } from './getTag';\nimport { isUnique } from './isUnique';\nimport { getParents } from './getParents';\n\n\n/**\n * Returns all the selectors of the elmenet\n * @param { Object } element\n * @return { Object }\n */\nfunction getAllSelectors( el, selectors, attributesToIgnore )\n{\n const funcs =\n {\n 'Tag' : getTag,\n 'NthChild' : getNthChild,\n 'Attributes' : elem => getAttributes( elem, attributesToIgnore ),\n 'Class' : getClassSelectors,\n 'ID' : getID,\n };\n\n return selectors.reduce( ( res, next ) =>\n {\n res[ next ] = funcs[ next ]( el );\n return res;\n }, {} );\n}\n\n/**\n * Tests uniqueNess of the element inside its parent\n * @param { Object } element\n * @param { String } Selectors\n * @return { Boolean }\n */\nfunction testUniqueness( element, selector )\n{\n try {\n const { parentNode } = element;\n const elements = parentNode.querySelectorAll( selector );\n return elements.length === 1 && elements[ 0 ] === element;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tests all selectors for uniqueness and returns the first unique selector.\n * @param { Object } element\n * @param { Array } selectors\n * @return { String }\n */\nfunction getFirstUnique( element, selectors )\n{\n return selectors.find( testUniqueness.bind( null, element ) );\n}\n\n/**\n * Checks all the possible selectors of an element to find one unique and return it\n * @param { Object } element\n * @param { Array } items\n * @param { String } tag\n * @return { String }\n */\nfunction getUniqueCombination( element, items, tag )\n{\n let combinations = getCombinations( items, 3 ),\n firstUnique = getFirstUnique( element, combinations );\n\n if( Boolean( firstUnique ) )\n {\n return firstUnique;\n }\n\n if( Boolean( tag ) )\n {\n combinations = combinations.map( combination => tag + combination );\n firstUnique = getFirstUnique( element, combinations );\n\n if( Boolean( firstUnique ) )\n {\n return firstUnique;\n }\n }\n\n return null;\n}\n\n/**\n * Returns a uniqueSelector based on the passed options\n * @param { DOM } element\n * @param { Array } options\n * @return { String }\n */\nfunction getUniqueSelector( element, selectorTypes, attributesToIgnore, excludeRegex )\n{\n let foundSelector;\n\n const elementSelectors = getAllSelectors( element, selectorTypes, attributesToIgnore );\n\n if( excludeRegex && excludeRegex instanceof RegExp )\n {\n elementSelectors.ID = excludeRegex.test( elementSelectors.ID ) ? null : elementSelectors.ID;\n elementSelectors.Class = elementSelectors.Class.filter( className => !excludeRegex.test( className ) );\n }\n\n for( let selectorType of selectorTypes )\n {\n const { ID, Tag, Class : Classes, Attributes, NthChild } = elementSelectors;\n switch ( selectorType )\n {\n case 'ID' :\n if ( Boolean( ID ) && testUniqueness( element, ID ) )\n {\n return ID;\n }\n break;\n\n case 'Tag':\n if ( Boolean( Tag ) && testUniqueness( element, Tag ) )\n {\n return Tag;\n }\n break;\n\n case 'Class':\n if ( Boolean( Classes ) && Classes.length )\n {\n foundSelector = getUniqueCombination( element, Classes, Tag );\n if (foundSelector) {\n return foundSelector;\n }\n }\n break;\n\n case 'Attributes':\n if ( Boolean( Attributes ) && Attributes.length )\n {\n foundSelector = getUniqueCombination( element, Attributes, Tag );\n if ( foundSelector )\n {\n return foundSelector;\n }\n }\n break;\n\n case 'NthChild':\n if ( Boolean( NthChild ) )\n {\n return NthChild\n }\n }\n }\n return '*';\n}\n\n/**\n * Generate unique CSS selector for given DOM element\n *\n * @param {Element} el\n * @return {String}\n * @api private\n */\n\nexport default function unique( el, options={} )\n{\n const {\n selectorTypes = ['ID', 'Class', 'Tag', 'NthChild'],\n attributesToIgnore = ['id', 'class', 'length'],\n excludeRegex = null,\n } = options;\n const allSelectors = [];\n const parents = getParents( el );\n\n for( let elem of parents )\n {\n const selector = getUniqueSelector( elem, selectorTypes, attributesToIgnore, excludeRegex );\n if( Boolean( selector ) )\n {\n allSelectors.push( selector );\n }\n }\n\n const selectors = [];\n for( let it of allSelectors )\n {\n selectors.unshift( it );\n const selector = selectors.join( ' > ' );\n if( isUnique( el, selector ) )\n {\n return selector;\n }\n }\n\n return null;\n}\n","/**\n * Returns the Attribute selectors of the element\n * @param { DOM Element } element\n * @param { Array } array of attributes to ignore\n * @return { Array }\n */\nexport function getAttributes( el, attributesToIgnore = ['id', 'class', 'length'] )\n{\n const { attributes } = el;\n const attrs = [ ...attributes ];\n\n return attrs.reduce( ( sum, next ) =>\n {\n if ( ! ( attributesToIgnore.indexOf( next.nodeName ) > -1 ) )\n {\n sum.push( `[${next.nodeName}=\"${next.value}\"]` );\n }\n return sum;\n }, [] );\n}\n","import { isElement } from './isElement';\n\n/**\n * Returns all the element and all of its parents\n * @param { DOM Element }\n * @return { Array of DOM elements }\n */\nexport function getParents( el )\n{\n const parents = [];\n let currentElement = el;\n while( isElement( currentElement ) )\n {\n parents.push( currentElement );\n currentElement = currentElement.parentNode;\n }\n\n return parents;\n}\n","/**\n * Utility function to get the bounding rectangle of an element.\n * @param {HTMLElement} el - The target element.\n * @returns {Object} An object containing x, y, width, and height.\n */\nfunction getElementBounds(el) {\n const rect = el.getBoundingClientRect();\n return {\n x: window.pageXOffset + rect.left,\n y: window.pageYOffset + rect.top,\n width: el.offsetWidth,\n height: el.offsetHeight,\n };\n}\n\n/**\n * Class representing an overlay element.\n */\nclass ElementOverlay {\n /**\n * Create an ElementOverlay.\n * @param {Object} options - Configuration options.\n * @param {string} [options.className] - CSS class name for the overlay.\n * @param {Object} [options.style] - Style overrides for the overlay.\n */\n constructor(options) {\n // Create and style the overlay element.\n this.overlay = document.createElement(\"div\");\n this.overlay.className = options.className || \"_ext-element-overlay\";\n this.overlay.style.background =\n (options.style && options.style.background) || \"rgba(250, 240, 202, 0.2)\";\n this.overlay.style.borderColor =\n (options.style && options.style.borderColor) || \"#F95738\";\n this.overlay.style.borderStyle =\n (options.style && options.style.borderStyle) || \"solid\";\n this.overlay.style.borderRadius =\n (options.style && options.style.borderRadius) || \"1px\";\n this.overlay.style.borderWidth =\n (options.style && options.style.borderWidth) || \"1px\";\n this.overlay.style.boxSizing =\n (options.style && options.style.boxSizing) || \"border-box\";\n this.overlay.style.cursor =\n (options.style && options.style.cursor) || \"crosshair\";\n this.overlay.style.position =\n (options.style && options.style.position) || \"absolute\";\n this.overlay.style.zIndex =\n (options.style && options.style.zIndex) || \"2147483647\";\n this.overlay.style.margin =\n (options.style && options.style.margin) || \"0px\";\n this.overlay.style.padding =\n (options.style && options.style.padding) || \"0px\";\n\n // Create a container that will host a Shadow DOM.\n this.shadowContainer = document.createElement(\"div\");\n this.shadowContainer.className = \"_ext-element-overlay-container\";\n this.shadowContainer.style.position = \"absolute\";\n this.shadowContainer.style.top = \"0px\";\n this.shadowContainer.style.left = \"0px\";\n this.shadowContainer.style.margin = \"0px\";\n this.shadowContainer.style.padding = \"0px\";\n this.shadowRoot = this.shadowContainer.attachShadow({ mode: \"open\" });\n }\n\n /**\n * Adds the overlay to the DOM.\n * @param {Node} parent - The parent element.\n * @param {boolean} useShadowDOM - Whether to use Shadow DOM.\n */\n addToDOM(parent, useShadowDOM) {\n this.usingShadowDOM = useShadowDOM;\n if (useShadowDOM) {\n parent.insertBefore(this.shadowContainer, parent.firstChild);\n this.shadowRoot.appendChild(this.overlay);\n } else {\n parent.appendChild(this.overlay);\n }\n }\n\n /**\n * Removes the overlay from the DOM.\n */\n removeFromDOM() {\n this.setBounds({ x: 0, y: 0, width: 0, height: 0 });\n if (this.overlay.remove) {\n this.overlay.remove();\n } else if (this.overlay.parentNode) {\n this.overlay.parentNode.removeChild(this.overlay);\n }\n if (this.usingShadowDOM) {\n if (this.shadowContainer.remove) {\n this.shadowContainer.remove();\n } else if (this.shadowContainer.parentNode) {\n this.shadowContainer.parentNode.removeChild(this.shadowContainer);\n }\n }\n }\n\n /**\n * Enables pointer events on the overlay.\n */\n captureCursor() {\n this.overlay.style.pointerEvents = \"auto\";\n }\n\n /**\n * Disables pointer events on the overlay.\n */\n ignoreCursor() {\n this.overlay.style.pointerEvents = \"none\";\n }\n\n /**\n * Sets the position and size of the overlay.\n * @param {Object} bounds - The bounding box.\n * @param {number} bounds.x - The x-coordinate.\n * @param {number} bounds.y - The y-coordinate.\n * @param {number} bounds.width - The width.\n * @param {number} bounds.height - The height.\n */\n setBounds(bounds) {\n const { x, y, width, height } = bounds;\n this.overlay.style.left = x + \"px\";\n this.overlay.style.top = y + \"px\";\n this.overlay.style.width = width + \"px\";\n this.overlay.style.height = height + \"px\";\n }\n}\n\n/**\n * Class representing an element picker that uses the overlay.\n */\nclass ElementPicker {\n /**\n * Create an ElementPicker.\n * @param {Object} [overlayOptions] - Options to pass to ElementOverlay.\n */\n constructor(overlayOptions) {\n this.active = false;\n this.overlay = new ElementOverlay(overlayOptions || {});\n this.handleMouseMove = this.handleMouseMove.bind(this);\n this.handleClick = this.handleClick.bind(this);\n this.tick = this.tick.bind(this);\n }\n\n /**\n * Starts the element picking process.\n * @param {Object} options - Picker options.\n * @param {Node} [options.parentElement] - Parent element to attach the overlay.\n * @param {boolean} [options.useShadowDOM=true] - Whether to use Shadow DOM.\n * @param {Function} [options.onClick] - Callback invoked on click.\n * @param {Function} [options.onHover] - Callback invoked on hover.\n * @param {Function} [options.elementFilter] - Function to filter elements.\n * @returns {boolean} True if started successfully, false if already active.\n */\n start(options) {\n if (this.active) {\n return false;\n }\n this.active = true;\n this.options = options;\n\n document.addEventListener(\"mousemove\", this.handleMouseMove, true);\n document.addEventListener(\"click\", this.handleClick, true);\n\n const parentElement = options.parentElement || document.body;\n const useShadowDOM =\n options.useShadowDOM !== undefined ? options.useShadowDOM : true;\n this.overlay.addToDOM(parentElement, useShadowDOM);\n this.tick();\n\n return true;\n }\n\n /**\n * Stops the element picking process.\n */\n stop() {\n this.active = false;\n this.options = undefined;\n\n document.removeEventListener(\"mousemove\", this.handleMouseMove, true);\n document.removeEventListener(\"click\", this.handleClick, true);\n\n this.overlay.removeFromDOM();\n this.target = undefined;\n this.mouseX = undefined;\n this.mouseY = undefined;\n\n if (this.tickReq) {\n window.cancelAnimationFrame(this.tickReq);\n }\n }\n\n /**\n * Handles mouse move events.\n * @param {MouseEvent} event - The mousemove event.\n */\n handleMouseMove(event) {\n this.mouseX = event.clientX;\n this.mouseY = event.clientY;\n }\n\n /**\n * Handles click events.\n * @param {MouseEvent} event - The click event.\n */\n handleClick(event) {\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n\n if (this.target && this.options && this.options.onClick) {\n this.options.onClick(this.target);\n }\n }\n\n /**\n * The tick function that continuously updates the target element.\n */\n tick() {\n this.updateTarget();\n this.tickReq = window.requestAnimationFrame(this.tick);\n }\n\n /**\n * Updates the target element based on the current mouse position.\n */\n updateTarget() {\n if (this.mouseX === undefined || this.mouseY === undefined) {\n return;\n }\n\n // Temporarily ignore the overlay's pointer events to detect the underlying element.\n this.overlay.ignoreCursor();\n const elAtCursor = document.elementFromPoint(this.mouseX, this.mouseY);\n const newTarget = elAtCursor;\n this.overlay.captureCursor();\n\n // If the target hasn't changed, do nothing.\n if (!newTarget || newTarget === this.target) {\n return;\n }\n\n // If an element filter is provided and the new target doesn't match, clear the target.\n if (this.options && this.options.elementFilter) {\n if (!this.options.elementFilter(newTarget)) {\n this.target = undefined;\n this.overlay.setBounds({ x: 0, y: 0, width: 0, height: 0 });\n return;\n }\n }\n\n this.target = newTarget;\n const bounds = getElementBounds(newTarget);\n this.overlay.setBounds(bounds);\n\n if (this.options && this.options.onHover) {\n this.options.onHover(newTarget);\n }\n }\n}\n\nexport default ElementPicker;\n","import unique from \"./unique-selector/src/unique-selector\";\nimport ElementPicker from \"./ElementPicker\";\n\nclass GleapAdminHelper {\n picker = null;\n onElementPicked = null;\n\n stopPicker = () => {\n if (this.picker) {\n this.picker.stop();\n this.picker = null;\n return;\n }\n };\n\n startPicker = () => {\n this.stopPicker();\n var self = this;\n\n const style = {\n borderColor: \"#2142E7\",\n background: \"transparent\",\n borderWidth: \"4px\",\n borderRadius: \"5px\",\n };\n this.picker = new ElementPicker({ style });\n this.picker.start({\n useShadowDOM: false,\n onClick: (el) => {\n try {\n let selector;\n const tourId = el.getAttribute(\"data-gleap-tour\");\n if (tourId) {\n selector = `[data-gleap-tour=\"${tourId}\"]`;\n } else {\n selector = unique(el);\n }\n\n self.onElementPicked && self.onElementPicked(selector);\n } catch (e) {\n console.error(\"Error while getting unique selector\", e);\n }\n },\n elementFilter: (el) => {\n if (\n el.classList.contains(\"gleap-admin-collapse-ui\") ||\n el.closest(\".gleap-admin-collapse-ui\")\n ) {\n return false;\n }\n return true;\n },\n });\n };\n\n setMode = (mode) => {\n this.mode = mode;\n if (mode === \"navigate\") {\n this.stopPicker();\n }\n if (mode === \"picker\") {\n this.startPicker();\n }\n };\n}\n\nexport default GleapAdminHelper;\n","import { loadIcon } from \"./UI\";\nimport GleapAdminHelper from \"./GleapAdminHelper\";\nimport { GleapProductTours } from \"./Gleap\";\n\nexport default class GleapAdminManager {\n libraryInstance = null;\n lastUrl = undefined;\n injectedFrame = false;\n gleapFrameContainer = null;\n gleapCollapseUI = null;\n injectedCollapseUI = false;\n gleapFrame = null;\n configData = null;\n adminHelper = null;\n status = \"navigate\";\n\n // GleapAdminManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapAdminManager();\n }\n\n return this.instance;\n }\n\n logCurrentPage() {\n const currentUrl = window.location.href;\n if (currentUrl && currentUrl !== this.lastUrl) {\n this.lastUrl = currentUrl;\n\n this.sendMessageToTourBuilder({\n name: \"page-changed\",\n data: {\n page: currentUrl,\n },\n });\n }\n }\n\n startPageListener() {\n const self = this;\n setInterval(function () {\n self.logCurrentPage();\n }, 1000);\n }\n\n initAdminHelper() {\n const self = this;\n\n // Disable product tours.\n GleapProductTours.getInstance().disable();\n\n self.adminHelper = new GleapAdminHelper();\n\n try {\n self.adminHelper.onElementPicked = (selector) => {\n self.toggleCollapseUI(true);\n self.sendMessageToTourBuilder({\n name: \"element-picked\",\n data: {\n selector,\n },\n });\n };\n } catch (e) {\n console.log(e);\n }\n\n self.injectFrame();\n self.injectCollapseUI();\n self.setFrameHeight(\"loading\");\n }\n\n setFrameHeight(state) {\n if (this.gleapFrameContainer) {\n var height = \"\";\n if (state === \"picker\" || state === \"navigate\") {\n height = \"65px\";\n } else if (state === \"editor\") {\n height = \"100vh\";\n } else {\n height = \"0px\";\n }\n this.gleapFrameContainer.style.height = height;\n }\n }\n\n start() {\n if (typeof window === \"undefined\") {\n return;\n }\n\n if (window.gleapAdminDisabled) {\n return;\n }\n\n var self = this;\n\n // Add window message listener.\n window.addEventListener(\"message\", (event) => {\n if (event.origin !== \"https://app.gleap.io\") {\n return;\n }\n\n try {\n const data = JSON.parse(event.data);\n\n if (data.type === \"admin\") {\n if (data.name === \"load\") {\n self.configData = data.data;\n self.initAdminHelper();\n }\n\n if (data.name === \"smartlink-search-result\") {\n this.sendMessageToTourBuilder({\n name: \"smartlink-search-result\",\n data: data.data,\n });\n }\n\n if (data.name === \"translate-complete\") {\n this.sendMessageToTourBuilder({\n name: \"translate-complete\",\n data: data.data,\n });\n }\n }\n\n if (data.type === \"tourbuilder\") {\n if (data.name === \"loaddata\") {\n this.sendMessageToTourBuilder({\n name: \"data\",\n data: {\n ...self.configData,\n currentPage: window.location.href,\n },\n });\n }\n\n if (data.name === \"highlight-element\") {\n // Cleanup.\n document\n .querySelectorAll(\".gleap-admin-highlight\")\n .forEach((el) => {\n el.classList.remove(\"gleap-admin-highlight\");\n });\n\n // Find the element and highlight it.\n if (data?.data?.selector) {\n const element = document.querySelector(data?.data?.selector);\n if (element) {\n element.classList.add(\"gleap-admin-highlight\");\n }\n }\n }\n\n if (data.name === \"smartlink-search\") {\n this.sendMessage({\n name: \"smartlink-search\",\n data: data.data,\n });\n }\n\n if (data.name === \"product-tour-started\") {\n this.sendMessage({\n name: \"product-tour-started\",\n data: data.data,\n });\n }\n\n if (data.name === \"translate\") {\n this.sendMessage({\n name: \"translate\",\n data: data.data,\n });\n }\n\n if (data.name === \"save\") {\n this.sendMessage({\n name: \"save\",\n data: data.data,\n });\n }\n\n if (data.name === \"update-steps\") {\n this.sendMessage({\n name: \"update-steps\",\n data: data.data,\n });\n }\n\n if (data.name === \"click\") {\n try {\n document.querySelector(data.data.selector).click();\n } catch (e) {\n console.log(e);\n }\n }\n\n if (data.name === \"status-changed\") {\n self.status = data.data;\n this.setFrameHeight(self.status);\n self.adminHelper.stopPicker();\n\n if (self.status === \"picker\") {\n self.adminHelper.startPicker();\n }\n }\n }\n } catch (exp) {}\n });\n\n this.sendMessage({\n name: \"init\",\n });\n\n this.startPageListener();\n }\n\n sendMessage(data) {\n try {\n if (window && window.opener) {\n window.opener.postMessage(\n JSON.stringify({\n ...data,\n type: \"admin\",\n }),\n \"*\"\n );\n }\n } catch (e) {}\n }\n\n sendMessageToTourBuilder(data) {\n try {\n if (this.gleapFrame && this.gleapFrame.contentWindow) {\n this.gleapFrame.contentWindow.postMessage(\n JSON.stringify({\n ...data,\n type: \"tourbuilder\",\n }),\n \"*\"\n );\n }\n } catch (e) {}\n }\n\n toggleCollapseUI = (onlyIfActive = false) => {\n const COLLAPSE_UI_ACTIVE_CLASS = \"gleap-admin-collapse-ui-active\";\n const FRAME_CONTAINER_ACTIVE_CLASS = \"gleap-admin-frame-container-active\";\n\n // Helper function to check if an element has an active class\n const isActive = (element, activeClass) =>\n element && element.classList.contains(activeClass);\n\n // Check if onlyIfActive is true and if the UI elements are already inactive\n if (\n onlyIfActive &&\n (!isActive(this.gleapCollapseUI, COLLAPSE_UI_ACTIVE_CLASS) ||\n !isActive(this.gleapFrameContainer, FRAME_CONTAINER_ACTIVE_CLASS))\n ) {\n return; // Return early without toggling the UI\n }\n\n // Toggle the UI elements\n if (this.gleapCollapseUI) {\n this.gleapCollapseUI.classList.toggle(COLLAPSE_UI_ACTIVE_CLASS);\n }\n if (this.gleapFrameContainer) {\n this.gleapFrameContainer.classList.toggle(FRAME_CONTAINER_ACTIVE_CLASS);\n }\n };\n\n injectCollapseUI = () => {\n if (this.injectedCollapseUI) {\n return;\n }\n this.injectedCollapseUI = true;\n\n // Inject widget HTML.\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-admin-collapse-ui\";\n elem.innerHTML = `
\n ${loadIcon(\"arrowdown\")}\n
`;\n document.body.appendChild(elem);\n\n this.gleapCollapseUI = elem;\n\n elem.addEventListener(\"click\", (e) => {\n e.stopImmediatePropagation();\n e.stopPropagation();\n e.preventDefault();\n\n this.toggleCollapseUI();\n });\n };\n\n injectFrame = () => {\n if (this.injectedFrame) {\n return;\n }\n this.injectedFrame = true;\n\n // Inject widget HTML.\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-admin-frame-container\";\n elem.innerHTML = ``;\n document.body.appendChild(elem);\n\n this.gleapFrameContainer = elem;\n this.gleapFrame = document.querySelector(\".gleap-admin-frame\");\n };\n}\n","const GleapTours = (function () {\n \"use strict\";\n let currentConfig = {};\n function configure(config = {}) {\n currentConfig = {\n animate: true,\n allowClose: true,\n overlayOpacity: 0.7,\n smoothScroll: false,\n disableActiveInteraction: false,\n showProgress: false,\n stagePadding: 10,\n stageRadius: 5,\n popoverOffset: 10,\n showButtons: [\"next\", \"previous\", \"close\"],\n disableButtons: [],\n overlayColor: \"#000\",\n ...config,\n };\n }\n function getConfig(key) {\n return key ? currentConfig[key] : currentConfig;\n }\n function easeInOutQuad(elapsed, initialValue, amountOfChange, duration) {\n if ((elapsed /= duration / 2) < 1) {\n return (amountOfChange / 2) * elapsed * elapsed + initialValue;\n }\n return (\n (-amountOfChange / 2) * (--elapsed * (elapsed - 2) - 1) + initialValue\n );\n }\n function getFocusableElements(parentEls) {\n const focusableQuery =\n 'a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type=\"text\"]:not([disabled]), input[type=\"radio\"]:not([disabled]), input[type=\"checkbox\"]:not([disabled]), select:not([disabled])';\n return parentEls\n .flatMap((parentEl) => {\n const isParentFocusable = parentEl.matches(focusableQuery);\n const focusableEls = Array.from(\n parentEl.querySelectorAll(focusableQuery)\n );\n return [...(isParentFocusable ? [parentEl] : []), ...focusableEls];\n })\n .filter((el) => {\n return (\n getComputedStyle(el).pointerEvents !== \"none\" && isElementVisible(el)\n );\n });\n }\n function bringInView(element) {\n if (!element || isElementInView(element)) {\n return;\n }\n const shouldSmoothScroll = getConfig(\"smoothScroll\");\n element.scrollIntoView({\n // Removing the smooth scrolling for elements which exist inside the scrollable parent\n // This was causing the highlight to not properly render\n behavior:\n !shouldSmoothScroll || hasScrollableParent(element) ? \"auto\" : \"smooth\",\n inline: \"center\",\n block: \"center\",\n });\n }\n function hasScrollableParent(e) {\n if (!e || !e.parentElement) {\n return;\n }\n const parent = e.parentElement;\n return parent.scrollHeight > parent.clientHeight;\n }\n function isElementInView(element) {\n const rect = element.getBoundingClientRect();\n return (\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <=\n (window.innerHeight || document.documentElement.clientHeight) &&\n rect.right <= (window.innerWidth || document.documentElement.clientWidth)\n );\n }\n function isElementVisible(el) {\n return !!(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\n }\n let currentState = {};\n function setState(key, value) {\n currentState[key] = value;\n }\n function getState(key) {\n return key ? currentState[key] : currentState;\n }\n function resetState() {\n currentState = {};\n }\n let registeredListeners = {};\n function listen(hook, callback) {\n registeredListeners[hook] = callback;\n }\n function emit(hook) {\n var _a;\n (_a = registeredListeners[hook]) == null\n ? void 0\n : _a.call(registeredListeners);\n }\n function destroyEmitter() {\n registeredListeners = {};\n }\n function transitionStage(elapsed, duration, from, to) {\n let activeStagePosition = getState(\"__activeStagePosition\");\n const fromDefinition = activeStagePosition\n ? activeStagePosition\n : from.getBoundingClientRect();\n const toDefinition = to.getBoundingClientRect();\n const x = easeInOutQuad(\n elapsed,\n fromDefinition.x,\n toDefinition.x - fromDefinition.x,\n duration\n );\n const y = easeInOutQuad(\n elapsed,\n fromDefinition.y,\n toDefinition.y - fromDefinition.y,\n duration\n );\n const width = easeInOutQuad(\n elapsed,\n fromDefinition.width,\n toDefinition.width - fromDefinition.width,\n duration\n );\n const height = easeInOutQuad(\n elapsed,\n fromDefinition.height,\n toDefinition.height - fromDefinition.height,\n duration\n );\n activeStagePosition = {\n x,\n y,\n width,\n height,\n };\n renderOverlay(activeStagePosition);\n setState(\"__activeStagePosition\", activeStagePosition);\n }\n function trackActiveElement(element) {\n if (!element) {\n return;\n }\n const definition = element.getBoundingClientRect();\n const activeStagePosition = {\n x: definition.x,\n y: definition.y,\n width: definition.width,\n height: definition.height,\n };\n setState(\"__activeStagePosition\", activeStagePosition);\n renderOverlay(activeStagePosition);\n }\n function refreshOverlay() {\n const activeStagePosition = getState(\"__activeStagePosition\");\n const overlaySvg = getState(\"__overlaySvg\");\n if (!activeStagePosition) {\n return;\n }\n if (!overlaySvg) {\n console.warn(\"No stage svg found.\");\n return;\n }\n const windowX = window.innerWidth;\n const windowY = window.innerHeight;\n overlaySvg.setAttribute(\"viewBox\", `0 0 ${windowX} ${windowY}`);\n }\n function mountOverlay(stagePosition) {\n const overlaySvg = createOverlaySvg(stagePosition);\n document.body.appendChild(overlaySvg);\n onDriverClick(overlaySvg, (e) => {\n const target = e.target;\n if (target.tagName !== \"path\") {\n return;\n }\n emit(\"overlayClick\");\n });\n setState(\"__overlaySvg\", overlaySvg);\n }\n function renderOverlay(stagePosition) {\n const overlaySvg = getState(\"__overlaySvg\");\n if (!overlaySvg) {\n mountOverlay(stagePosition);\n return;\n }\n const pathElement = overlaySvg.firstElementChild;\n if ((pathElement == null ? void 0 : pathElement.tagName) !== \"path\") {\n throw new Error(\"no path element found in stage svg\");\n }\n pathElement.setAttribute(\"d\", generateStageSvgPathString(stagePosition));\n }\n function createOverlaySvg(stage) {\n const windowX = window.innerWidth;\n const windowY = window.innerHeight;\n const svg = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n svg.classList.add(\"gleap-tour-overlay\", \"gleap-tour-overlay-animated\");\n svg.setAttribute(\"viewBox\", `0 0 ${windowX} ${windowY}`);\n svg.setAttribute(\"xmlSpace\", \"preserve\");\n svg.setAttribute(\"xmlnsXlink\", \"http://www.w3.org/1999/xlink\");\n svg.setAttribute(\"version\", \"1.1\");\n svg.setAttribute(\"preserveAspectRatio\", \"xMinYMin slice\");\n svg.style.fillRule = \"evenodd\";\n svg.style.clipRule = \"evenodd\";\n svg.style.strokeLinejoin = \"round\";\n svg.style.strokeMiterlimit = \"2\";\n svg.style.zIndex = \"10000\";\n svg.style.position = \"fixed\";\n svg.style.top = \"0\";\n svg.style.left = \"0\";\n svg.style.width = \"100%\";\n svg.style.height = \"100%\";\n const stagePath = document.createElementNS(\n \"http://www.w3.org/2000/svg\",\n \"path\"\n );\n stagePath.setAttribute(\"d\", generateStageSvgPathString(stage));\n stagePath.style.fill = getConfig(\"overlayColor\") || \"rgb(0,0,0)\";\n stagePath.style.opacity = `${getConfig(\"overlayOpacity\")}`;\n stagePath.style.pointerEvents = \"auto\";\n stagePath.style.cursor = \"auto\";\n svg.appendChild(stagePath);\n return svg;\n }\n function generateStageSvgPathString(stage) {\n const windowX = window.innerWidth;\n const windowY = window.innerHeight;\n const stagePadding = getConfig(\"stagePadding\") || 0;\n const stageRadius = getConfig(\"stageRadius\") || 0;\n const stageWidth = stage.width + stagePadding * 2;\n const stageHeight = stage.height + stagePadding * 2;\n const limitedRadius = Math.min(\n stageRadius,\n stageWidth / 2,\n stageHeight / 2\n );\n const normalizedRadius = Math.floor(Math.max(limitedRadius, 0));\n const highlightBoxX = stage.x - stagePadding + normalizedRadius;\n const highlightBoxY = stage.y - stagePadding;\n const highlightBoxWidth = stageWidth - normalizedRadius * 2;\n const highlightBoxHeight = stageHeight - normalizedRadius * 2;\n return `M${windowX},0L0,0L0,${windowY}L${windowX},${windowY}L${windowX},0Z\n M${highlightBoxX},${highlightBoxY} h${highlightBoxWidth} a${normalizedRadius},${normalizedRadius} 0 0 1 ${normalizedRadius},${normalizedRadius} v${highlightBoxHeight} a${normalizedRadius},${normalizedRadius} 0 0 1 -${normalizedRadius},${normalizedRadius} h-${highlightBoxWidth} a${normalizedRadius},${normalizedRadius} 0 0 1 -${normalizedRadius},-${normalizedRadius} v-${highlightBoxHeight} a${normalizedRadius},${normalizedRadius} 0 0 1 ${normalizedRadius},-${normalizedRadius} z`;\n }\n function destroyOverlay() {\n const overlaySvg = getState(\"__overlaySvg\");\n if (overlaySvg) {\n overlaySvg.remove();\n }\n }\n function mountDummyElement() {\n const existingDummy = document.getElementById(\"gleap-tour-dummy-element\");\n if (existingDummy) {\n return existingDummy;\n }\n let element = document.createElement(\"div\");\n element.id = \"gleap-tour-dummy-element\";\n element.style.width = \"0\";\n element.style.height = \"0\";\n element.style.pointerEvents = \"none\";\n element.style.opacity = \"0\";\n element.style.position = \"fixed\";\n element.style.top = \"50%\";\n element.style.left = \"50%\";\n document.body.appendChild(element);\n return element;\n }\n function highlight(step, attemptTime = 5000) {\n const { element } = step;\n let elemObj = element;\n if (typeof elemObj === \"string\") {\n try {\n elemObj = document.querySelector(element);\n } catch (error) {\n // This will escape colons within IDs but not affect pseudo-classes or other valid uses of colons\n let refactoredElement = element.replace(\n /(#[^#\\s]+)/g,\n function (match) {\n return match.replace(/:/g, \"\\\\:\");\n }\n );\n elemObj = document.querySelector(refactoredElement);\n }\n }\n if (element && !elemObj && attemptTime >= 0) {\n setTimeout(() => {\n hidePopover();\n highlight(step, attemptTime - 100);\n }, 100);\n\n return;\n }\n\n if (!elemObj) {\n if (step.mode === \"INPUT\" || step.mode === \"CLICK\") {\n return getConfig(\"onElementNotFound\")(step);\n }\n }\n\n if (!elemObj) {\n elemObj = mountDummyElement();\n }\n\n transferHighlight(elemObj, step);\n }\n function refreshActiveHighlight() {\n const activeHighlight = getState(\"__activeElement\");\n const activeStep = getState(\"__activeStep\");\n if (!activeHighlight) {\n return;\n }\n trackActiveElement(activeHighlight);\n refreshOverlay();\n repositionPopover(activeHighlight, activeStep);\n }\n function transferHighlight(toElement, toStep) {\n const duration = 400;\n const start = Date.now();\n const fromStep = getState(\"__activeStep\");\n const fromElement = getState(\"__activeElement\") || toElement;\n const isFirstHighlight = !fromElement || fromElement === toElement;\n const isToDummyElement = toElement.id === \"gleap-tour-dummy-element\";\n const isFromDummyElement = fromElement.id === \"gleap-tour-dummy-element\";\n const isAnimatedTour = getConfig(\"animate\");\n const highlightStartedHook =\n toStep.onHighlightStarted || getConfig(\"onHighlightStarted\");\n const highlightedHook =\n (toStep == null ? void 0 : toStep.onHighlighted) ||\n getConfig(\"onHighlighted\");\n const deselectedHook =\n (fromStep == null ? void 0 : fromStep.onDeselected) ||\n getConfig(\"onDeselected\");\n const config = getConfig();\n const state = getState();\n if (!isFirstHighlight && deselectedHook) {\n deselectedHook(isFromDummyElement ? void 0 : fromElement, fromStep, {\n config,\n state,\n });\n }\n if (highlightStartedHook) {\n highlightStartedHook(isToDummyElement ? void 0 : toElement, toStep, {\n config,\n state,\n });\n }\n const hasDelayedPopover = !isFirstHighlight && isAnimatedTour;\n let isPopoverRendered = false;\n hidePopover();\n setState(\"previousStep\", fromStep);\n setState(\"previousElement\", fromElement);\n setState(\"activeStep\", toStep);\n setState(\"activeElement\", toElement);\n const animate = () => {\n const transitionCallback = getState(\"__transitionCallback\");\n if (transitionCallback !== animate) {\n return;\n }\n const elapsed = Date.now() - start;\n const timeRemaining = duration - elapsed;\n const isHalfwayThrough = timeRemaining <= duration / 2;\n if (\n toStep.popover &&\n isHalfwayThrough &&\n !isPopoverRendered &&\n hasDelayedPopover\n ) {\n renderPopover(toElement, toStep);\n isPopoverRendered = true;\n }\n if (getConfig(\"animate\") && elapsed < duration) {\n transitionStage(elapsed, duration, fromElement, toElement);\n } else {\n trackActiveElement(toElement);\n if (highlightedHook) {\n highlightedHook(isToDummyElement ? void 0 : toElement, toStep, {\n config: getConfig(),\n state: getState(),\n });\n }\n setState(\"__transitionCallback\", void 0);\n setState(\"__previousStep\", fromStep);\n setState(\"__previousElement\", fromElement);\n setState(\"__activeStep\", toStep);\n setState(\"__activeElement\", toElement);\n }\n window.requestAnimationFrame(animate);\n };\n setState(\"__transitionCallback\", animate);\n window.requestAnimationFrame(animate);\n bringInView(toElement);\n if (!hasDelayedPopover && toStep.popover) {\n renderPopover(toElement, toStep);\n }\n fromElement.classList.remove(\n \"gleap-tour-active-element\",\n \"gleap-tour-no-interaction\"\n );\n fromElement.removeAttribute(\"aria-haspopup\");\n fromElement.removeAttribute(\"aria-expanded\");\n fromElement.removeAttribute(\"aria-controls\");\n const disableActiveInteraction =\n toStep.disableActiveInteraction ??\n getConfig(\"disableActiveInteraction\") ??\n false;\n if (disableActiveInteraction) {\n toElement.classList.add(\"gleap-tour-no-interaction\");\n }\n toElement.classList.add(\"gleap-tour-active-element\");\n toElement.setAttribute(\"aria-haspopup\", \"dialog\");\n toElement.setAttribute(\"aria-expanded\", \"true\");\n toElement.setAttribute(\"aria-controls\", \"gleap-tour-popover-content\");\n }\n function destroyHighlight() {\n var _a;\n (_a = document.getElementById(\"gleap-tour-dummy-element\")) == null\n ? void 0\n : _a.remove();\n document\n .querySelectorAll(\".gleap-tour-active-element\")\n .forEach((element) => {\n element.classList.remove(\n \"gleap-tour-active-element\",\n \"gleap-tour-no-interaction\"\n );\n element.removeAttribute(\"aria-haspopup\");\n element.removeAttribute(\"aria-expanded\");\n element.removeAttribute(\"aria-controls\");\n });\n }\n function requireRefresh() {\n const resizeTimeout = getState(\"__resizeTimeout\");\n if (resizeTimeout) {\n window.cancelAnimationFrame(resizeTimeout);\n }\n setState(\n \"__resizeTimeout\",\n window.requestAnimationFrame(refreshActiveHighlight)\n );\n }\n function trapFocus(e) {\n var _a;\n const isActivated = getState(\"isInitialized\");\n if (!isActivated) {\n return;\n }\n const isTabKey = e.key === \"Tab\" || e.keyCode === 9;\n if (!isTabKey) {\n return;\n }\n const activeElement = getState(\"__activeElement\");\n const popoverEl = (_a = getState(\"popover\")) == null ? void 0 : _a.wrapper;\n const focusableEls = getFocusableElements([\n ...(popoverEl ? [popoverEl] : []),\n ...(activeElement ? [activeElement] : []),\n ]);\n const firstFocusableEl = focusableEls[0];\n const lastFocusableEl = focusableEls[focusableEls.length - 1];\n e.preventDefault();\n if (e.shiftKey) {\n const previousFocusableEl =\n focusableEls[focusableEls.indexOf(document.activeElement) - 1] ||\n lastFocusableEl;\n previousFocusableEl == null ? void 0 : previousFocusableEl.focus();\n } else {\n const nextFocusableEl =\n focusableEls[focusableEls.indexOf(document.activeElement) + 1] ||\n firstFocusableEl;\n nextFocusableEl == null ? void 0 : nextFocusableEl.focus();\n }\n }\n function onKeyup(e) {\n var _a;\n const allowKeyboardControl =\n (_a = getConfig(\"allowKeyboardControl\")) != null ? _a : true;\n if (!allowKeyboardControl) {\n return;\n }\n if (e.key === \"Escape\") {\n emit(\"escapePress\");\n } else if (e.key === \"ArrowRight\") {\n emit(\"arrowRightPress\");\n } else if (e.key === \"ArrowLeft\") {\n emit(\"arrowLeftPress\");\n }\n }\n function onDriverClick(element, listener, shouldPreventDefault) {\n const listenerWrapper = (e, listener2) => {\n const target = e.target;\n if (!element.contains(target)) {\n return;\n }\n if (!shouldPreventDefault || shouldPreventDefault(target)) {\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n listener2 == null ? void 0 : listener2(e);\n };\n const useCapture = true;\n document.addEventListener(\"pointerdown\", listenerWrapper, useCapture);\n document.addEventListener(\"mousedown\", listenerWrapper, useCapture);\n document.addEventListener(\"pointerup\", listenerWrapper, useCapture);\n document.addEventListener(\"mouseup\", listenerWrapper, useCapture);\n document.addEventListener(\n \"click\",\n (e) => {\n listenerWrapper(e, listener);\n },\n useCapture\n );\n }\n function initEvents() {\n window.addEventListener(\"keyup\", onKeyup, false);\n window.addEventListener(\"keydown\", trapFocus, false);\n window.addEventListener(\"resize\", requireRefresh);\n window.addEventListener(\"scroll\", requireRefresh);\n }\n function destroyEvents() {\n window.removeEventListener(\"keyup\", onKeyup);\n window.removeEventListener(\"resize\", requireRefresh);\n window.removeEventListener(\"scroll\", requireRefresh);\n }\n function hidePopover() {\n const popover = getState(\"popover\");\n if (!popover) {\n return;\n }\n popover.wrapper.style.display = \"none\";\n }\n function renderPopover(element, step) {\n var _a, _b;\n let popover = getState(\"popover\");\n if (popover) {\n document.body.removeChild(popover.wrapper);\n }\n popover = createPopover();\n document.body.appendChild(popover.wrapper);\n const {\n title,\n description,\n showButtons,\n disableButtons,\n showProgress,\n nextBtnText = getConfig(\"nextBtnText\") || \"Next\",\n prevBtnText = getConfig(\"prevBtnText\") || \"Previous\",\n progressText = getConfig(\"progressText\") || \"{current} of {total}\",\n } = step.popover || {};\n popover.nextButton.innerHTML = nextBtnText;\n popover.previousButton.innerHTML = prevBtnText;\n popover.progress.innerHTML = progressText;\n if (title) {\n popover.title.innerHTML = title;\n popover.title.style.display = \"block\";\n } else {\n popover.title.style.display = \"none\";\n }\n if (description) {\n popover.description.innerHTML = description;\n popover.description.style.display = \"block\";\n } else {\n popover.description.style.display = \"none\";\n }\n const showButtonsConfig = showButtons || getConfig(\"showButtons\");\n const showProgressConfig =\n showProgress || getConfig(\"showProgress\") || false;\n const showFooter =\n (showButtonsConfig == null\n ? void 0\n : showButtonsConfig.includes(\"next\")) ||\n (showButtonsConfig == null\n ? void 0\n : showButtonsConfig.includes(\"previous\")) ||\n showProgressConfig;\n popover.closeButton.style.display = showButtonsConfig.includes(\"close\")\n ? \"block\"\n : \"none\";\n if (showFooter) {\n popover.footer.style.display = \"flex\";\n popover.progress.style.display = showProgressConfig ? \"block\" : \"none\";\n popover.nextButton.style.display = showButtonsConfig.includes(\"next\")\n ? \"block\"\n : \"none\";\n popover.previousButton.style.display = showButtonsConfig.includes(\n \"previous\"\n )\n ? \"block\"\n : \"none\";\n } else {\n popover.footer.style.display = \"none\";\n }\n const disabledButtonsConfig =\n disableButtons || getConfig(\"disableButtons\") || [];\n if (\n disabledButtonsConfig == null\n ? void 0\n : disabledButtonsConfig.includes(\"next\")\n ) {\n popover.nextButton.disabled = true;\n popover.nextButton.classList.add(\"gleap-tour-popover-btn-disabled\");\n }\n if (\n disabledButtonsConfig == null\n ? void 0\n : disabledButtonsConfig.includes(\"previous\")\n ) {\n popover.previousButton.disabled = true;\n popover.previousButton.classList.add(\"gleap-tour-popover-btn-disabled\");\n }\n if (\n disabledButtonsConfig == null\n ? void 0\n : disabledButtonsConfig.includes(\"close\")\n ) {\n popover.closeButton.disabled = true;\n popover.closeButton.classList.add(\"gleap-tour-popover-btn-disabled\");\n }\n const popoverWrapper = popover.wrapper;\n popoverWrapper.style.display = \"block\";\n popoverWrapper.style.left = \"\";\n popoverWrapper.style.top = \"\";\n popoverWrapper.style.bottom = \"\";\n popoverWrapper.style.right = \"\";\n popoverWrapper.id = \"gleap-tour-popover-content\";\n popoverWrapper.setAttribute(\"role\", \"dialog\");\n popoverWrapper.setAttribute(\"aria-labelledby\", \"gleap-tour-popover-title\");\n popoverWrapper.setAttribute(\n \"aria-describedby\",\n \"gleap-tour-popover-description\"\n );\n const popoverArrow = popover.arrow;\n popoverArrow.className = \"gleap-tour-popover-arrow\";\n const customPopoverClass =\n ((_a = step.popover) == null ? void 0 : _a.popoverClass) ||\n getConfig(\"popoverClass\") ||\n \"\";\n popoverWrapper.className =\n `gleap-tour-popover ${customPopoverClass}`.trim();\n onDriverClick(\n popover.wrapper,\n (e) => {\n var _a2, _b2, _c;\n const target = e.target;\n const onNextClick =\n ((_a2 = step.popover) == null ? void 0 : _a2.onNextClick) ||\n getConfig(\"onNextClick\");\n const onPrevClick =\n ((_b2 = step.popover) == null ? void 0 : _b2.onPrevClick) ||\n getConfig(\"onPrevClick\");\n const onCloseClick =\n ((_c = step.popover) == null ? void 0 : _c.onCloseClick) ||\n getConfig(\"onCloseClick\");\n if (target.classList.contains(\"gleap-tour-popover-next-btn\")) {\n if (onNextClick) {\n return onNextClick(element, step, {\n config: getConfig(),\n state: getState(),\n });\n } else {\n return emit(\"nextClick\");\n }\n }\n if (target.classList.contains(\"gleap-tour-popover-prev-btn\")) {\n if (onPrevClick) {\n return onPrevClick(element, step, {\n config: getConfig(),\n state: getState(),\n });\n } else {\n return emit(\"prevClick\");\n }\n }\n if (target.classList.contains(\"gleap-tour-popover-close-btn\")) {\n if (onCloseClick) {\n return onCloseClick(element, step, {\n config: getConfig(),\n state: getState(),\n });\n } else {\n return emit(\"closeClick\");\n }\n }\n return void 0;\n },\n (target) => {\n return (\n !(popover == null ? void 0 : popover.description.contains(target)) &&\n !(popover == null ? void 0 : popover.title.contains(target)) &&\n typeof target.className === \"string\" &&\n target.className.includes(\"gleap-tour-popover\")\n );\n }\n );\n setState(\"popover\", popover);\n const onPopoverRender =\n ((_b = step.popover) == null ? void 0 : _b.onPopoverRender) ||\n getConfig(\"onPopoverRender\");\n if (onPopoverRender) {\n onPopoverRender(popover, {\n config: getConfig(),\n state: getState(),\n });\n }\n repositionPopover(element, step);\n bringInView(popoverWrapper);\n const isToDummyElement = element.classList.contains(\n \"gleap-tour-dummy-element\"\n );\n const focusableElement = getFocusableElements([\n popoverWrapper,\n ...(isToDummyElement ? [] : [element]),\n ]);\n if (focusableElement.length > 0) {\n focusableElement[0].focus();\n }\n }\n function getPopoverDimensions() {\n const popover = getState(\"popover\");\n if (!(popover == null ? void 0 : popover.wrapper)) {\n return;\n }\n const boundingClientRect = popover.wrapper.getBoundingClientRect();\n const stagePadding = getConfig(\"stagePadding\") || 0;\n const popoverOffset = getConfig(\"popoverOffset\") || 0;\n return {\n width: boundingClientRect.width + stagePadding + popoverOffset,\n height: boundingClientRect.height + stagePadding + popoverOffset,\n realWidth: boundingClientRect.width,\n realHeight: boundingClientRect.height,\n };\n }\n function calculateTopForLeftRight(alignment, config) {\n const {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n } = config;\n if (alignment === \"start\") {\n return Math.max(\n Math.min(\n elementDimensions.top - popoverPadding,\n window.innerHeight -\n popoverDimensions.realHeight -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n if (alignment === \"end\") {\n return Math.max(\n Math.min(\n elementDimensions.top -\n (popoverDimensions == null\n ? void 0\n : popoverDimensions.realHeight) +\n elementDimensions.height +\n popoverPadding,\n window.innerHeight -\n (popoverDimensions == null\n ? void 0\n : popoverDimensions.realHeight) -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n if (alignment === \"center\") {\n return Math.max(\n Math.min(\n elementDimensions.top +\n elementDimensions.height / 2 -\n (popoverDimensions == null\n ? void 0\n : popoverDimensions.realHeight) /\n 2,\n window.innerHeight -\n (popoverDimensions == null\n ? void 0\n : popoverDimensions.realHeight) -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n return 0;\n }\n function calculateLeftForTopBottom(alignment, config) {\n const {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n } = config;\n if (alignment === \"start\") {\n return Math.max(\n Math.min(\n elementDimensions.left - popoverPadding,\n window.innerWidth -\n popoverDimensions.realWidth -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n if (alignment === \"end\") {\n return Math.max(\n Math.min(\n elementDimensions.left -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) +\n elementDimensions.width +\n popoverPadding,\n window.innerWidth -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n if (alignment === \"center\") {\n return Math.max(\n Math.min(\n elementDimensions.left +\n elementDimensions.width / 2 -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) /\n 2,\n window.innerWidth -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n return 0;\n }\n function repositionPopover(element, step) {\n const popover = getState(\"popover\");\n if (!popover) {\n return;\n }\n const { align = \"start\", side = \"left\" } =\n (step == null ? void 0 : step.popover) || {};\n const requiredAlignment = align;\n const requiredSide =\n element.id === \"gleap-tour-dummy-element\" ? \"over\" : side;\n const popoverPadding = getConfig(\"stagePadding\") || 0;\n const popoverDimensions = getPopoverDimensions();\n const popoverArrowDimensions = popover.arrow.getBoundingClientRect();\n const elementDimensions = element.getBoundingClientRect();\n const topValue = elementDimensions.top - popoverDimensions.height;\n let isTopOptimal = topValue >= 0;\n const bottomValue =\n window.innerHeight -\n (elementDimensions.bottom + popoverDimensions.height);\n let isBottomOptimal = bottomValue >= 0;\n const leftValue = elementDimensions.left - popoverDimensions.width;\n let isLeftOptimal = leftValue >= 0;\n const rightValue =\n window.innerWidth - (elementDimensions.right + popoverDimensions.width);\n let isRightOptimal = rightValue >= 0;\n const noneOptimal =\n !isTopOptimal && !isBottomOptimal && !isLeftOptimal && !isRightOptimal;\n let popoverRenderedSide = requiredSide;\n if (requiredSide === \"top\" && isTopOptimal) {\n isRightOptimal = isLeftOptimal = isBottomOptimal = false;\n } else if (requiredSide === \"bottom\" && isBottomOptimal) {\n isRightOptimal = isLeftOptimal = isTopOptimal = false;\n } else if (requiredSide === \"left\" && isLeftOptimal) {\n isRightOptimal = isTopOptimal = isBottomOptimal = false;\n } else if (requiredSide === \"right\" && isRightOptimal) {\n isLeftOptimal = isTopOptimal = isBottomOptimal = false;\n }\n if (requiredSide === \"over\") {\n const leftToSet = window.innerWidth / 2 - popoverDimensions.realWidth / 2;\n const topToSet =\n window.innerHeight / 2 - popoverDimensions.realHeight / 2;\n popover.wrapper.style.left = `${leftToSet}px`;\n popover.wrapper.style.right = `auto`;\n popover.wrapper.style.top = `${topToSet}px`;\n popover.wrapper.style.bottom = `auto`;\n } else if (noneOptimal) {\n const leftValue2 =\n window.innerWidth / 2 -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) / 2;\n const bottomValue2 = 10;\n popover.wrapper.style.left = `${leftValue2}px`;\n popover.wrapper.style.right = `auto`;\n popover.wrapper.style.bottom = `${bottomValue2}px`;\n popover.wrapper.style.top = `auto`;\n } else if (isLeftOptimal) {\n const leftToSet = Math.min(\n leftValue,\n window.innerWidth -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) -\n popoverArrowDimensions.width\n );\n const topToSet = calculateTopForLeftRight(requiredAlignment, {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n });\n popover.wrapper.style.left = `${leftToSet}px`;\n popover.wrapper.style.top = `${topToSet}px`;\n popover.wrapper.style.bottom = `auto`;\n popover.wrapper.style.right = \"auto\";\n popoverRenderedSide = \"left\";\n } else if (isRightOptimal) {\n const rightToSet = Math.min(\n rightValue,\n window.innerWidth -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) -\n popoverArrowDimensions.width\n );\n const topToSet = calculateTopForLeftRight(requiredAlignment, {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n });\n popover.wrapper.style.right = `${rightToSet}px`;\n popover.wrapper.style.top = `${topToSet}px`;\n popover.wrapper.style.bottom = `auto`;\n popover.wrapper.style.left = \"auto\";\n popoverRenderedSide = \"right\";\n } else if (isTopOptimal) {\n const topToSet = Math.min(\n topValue,\n window.innerHeight -\n popoverDimensions.realHeight -\n popoverArrowDimensions.width\n );\n let leftToSet = calculateLeftForTopBottom(requiredAlignment, {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n });\n popover.wrapper.style.top = `${topToSet}px`;\n popover.wrapper.style.left = `${leftToSet}px`;\n popover.wrapper.style.bottom = `auto`;\n popover.wrapper.style.right = \"auto\";\n popoverRenderedSide = \"top\";\n } else if (isBottomOptimal) {\n const bottomToSet = Math.min(\n bottomValue,\n window.innerHeight -\n (popoverDimensions == null ? void 0 : popoverDimensions.realHeight) -\n popoverArrowDimensions.width\n );\n let leftToSet = calculateLeftForTopBottom(requiredAlignment, {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n });\n popover.wrapper.style.left = `${leftToSet}px`;\n popover.wrapper.style.bottom = `${bottomToSet}px`;\n popover.wrapper.style.top = `auto`;\n popover.wrapper.style.right = \"auto\";\n popoverRenderedSide = \"bottom\";\n }\n if (!noneOptimal) {\n renderPopoverArrow(requiredAlignment, popoverRenderedSide, element);\n } else {\n popover.arrow.classList.add(\"gleap-tour-popover-arrow-none\");\n }\n }\n function renderPopoverArrow(alignment, side, element) {\n const popover = getState(\"popover\");\n if (!popover) {\n return;\n }\n const elementDimensions = element.getBoundingClientRect();\n const popoverDimensions = getPopoverDimensions();\n const popoverArrow = popover.arrow;\n const popoverWidth = popoverDimensions.width;\n const windowWidth = window.innerWidth;\n const elementWidth = elementDimensions.width;\n const elementLeft = elementDimensions.left;\n const popoverHeight = popoverDimensions.height;\n const windowHeight = window.innerHeight;\n const elementTop = elementDimensions.top;\n const elementHeight = elementDimensions.height;\n popoverArrow.className = \"gleap-tour-popover-arrow\";\n let arrowSide = side;\n let arrowAlignment = alignment;\n if (side === \"top\") {\n if (elementLeft + elementWidth <= 0) {\n arrowSide = \"right\";\n arrowAlignment = \"end\";\n } else if (elementLeft + elementWidth - popoverWidth <= 0) {\n arrowSide = \"top\";\n arrowAlignment = \"start\";\n }\n if (elementLeft >= windowWidth) {\n arrowSide = \"left\";\n arrowAlignment = \"end\";\n } else if (elementLeft + popoverWidth >= windowWidth) {\n arrowSide = \"top\";\n arrowAlignment = \"end\";\n }\n } else if (side === \"bottom\") {\n if (elementLeft + elementWidth <= 0) {\n arrowSide = \"right\";\n arrowAlignment = \"start\";\n } else if (elementLeft + elementWidth - popoverWidth <= 0) {\n arrowSide = \"bottom\";\n arrowAlignment = \"start\";\n }\n if (elementLeft >= windowWidth) {\n arrowSide = \"left\";\n arrowAlignment = \"start\";\n } else if (elementLeft + popoverWidth >= windowWidth) {\n arrowSide = \"bottom\";\n arrowAlignment = \"end\";\n }\n } else if (side === \"left\") {\n if (elementTop + elementHeight <= 0) {\n arrowSide = \"bottom\";\n arrowAlignment = \"end\";\n } else if (elementTop + elementHeight - popoverHeight <= 0) {\n arrowSide = \"left\";\n arrowAlignment = \"start\";\n }\n if (elementTop >= windowHeight) {\n arrowSide = \"top\";\n arrowAlignment = \"end\";\n } else if (elementTop + popoverHeight >= windowHeight) {\n arrowSide = \"left\";\n arrowAlignment = \"end\";\n }\n } else if (side === \"right\") {\n if (elementTop + elementHeight <= 0) {\n arrowSide = \"bottom\";\n arrowAlignment = \"start\";\n } else if (elementTop + elementHeight - popoverHeight <= 0) {\n arrowSide = \"right\";\n arrowAlignment = \"start\";\n }\n if (elementTop >= windowHeight) {\n arrowSide = \"top\";\n arrowAlignment = \"start\";\n } else if (elementTop + popoverHeight >= windowHeight) {\n arrowSide = \"right\";\n arrowAlignment = \"end\";\n }\n } else;\n if (!arrowSide) {\n popoverArrow.classList.add(\"gleap-tour-popover-arrow-none\");\n } else {\n popoverArrow.classList.add(`gleap-tour-popover-arrow-side-${arrowSide}`);\n popoverArrow.classList.add(\n `gleap-tour-popover-arrow-align-${arrowAlignment}`\n );\n }\n }\n function createPopover() {\n const wrapper = document.createElement(\"div\");\n wrapper.classList.add(\"gleap-tour-popover\");\n const arrow = document.createElement(\"div\");\n arrow.classList.add(\"gleap-tour-popover-arrow\");\n const title = document.createElement(\"div\");\n title.id = \"gleap-tour-popover-title\";\n title.classList.add(\"gleap-tour-popover-title\");\n title.style.display = \"none\";\n title.innerText = \"Popover Title\";\n const description = document.createElement(\"div\");\n description.id = \"gleap-tour-popover-description\";\n description.classList.add(\"gleap-tour-popover-description\");\n description.style.display = \"none\";\n description.innerText = \"Popover description is here\";\n const closeButton = document.createElement(\"button\");\n closeButton.type = \"button\";\n closeButton.classList.add(\"gleap-tour-popover-close-btn\");\n closeButton.setAttribute(\"aria-label\", \"Close\");\n closeButton.innerHTML = \"×\";\n const footer = document.createElement(\"div\");\n footer.classList.add(\"gleap-tour-popover-footer\");\n const progress = document.createElement(\"span\");\n progress.classList.add(\"gleap-tour-popover-progress-text\");\n progress.innerText = \"\";\n const footerButtons = document.createElement(\"span\");\n footerButtons.classList.add(\"gleap-tour-popover-navigation-btns\");\n const previousButton = document.createElement(\"button\");\n previousButton.type = \"button\";\n previousButton.classList.add(\"gleap-tour-popover-prev-btn\");\n previousButton.innerHTML = \"← Previous\";\n const nextButton = document.createElement(\"button\");\n nextButton.type = \"button\";\n nextButton.classList.add(\"gleap-tour-popover-next-btn\");\n nextButton.innerHTML = \"Next →\";\n footerButtons.appendChild(previousButton);\n footerButtons.appendChild(nextButton);\n footer.appendChild(progress);\n footer.appendChild(footerButtons);\n wrapper.appendChild(closeButton);\n wrapper.appendChild(arrow);\n wrapper.appendChild(title);\n wrapper.appendChild(description);\n wrapper.appendChild(footer);\n return {\n wrapper,\n arrow,\n title,\n description,\n footer,\n previousButton,\n nextButton,\n closeButton,\n footerButtons,\n progress,\n };\n }\n function destroyPopover() {\n var _a;\n const popover = getState(\"popover\");\n if (!popover) {\n return;\n }\n (_a = popover.wrapper.parentElement) == null\n ? void 0\n : _a.removeChild(popover.wrapper);\n }\n function driver(options = {}) {\n configure(options);\n function handleClose() {\n if (!getConfig(\"allowClose\")) {\n return;\n }\n destroy();\n }\n function moveNext() {\n const activeIndex = getState(\"activeIndex\");\n const steps = getConfig(\"steps\") || [];\n if (typeof activeIndex === \"undefined\") {\n return;\n }\n const nextStepIndex = activeIndex + 1;\n if (steps[nextStepIndex]) {\n drive(nextStepIndex);\n } else {\n destroy();\n }\n }\n function movePrevious() {\n const activeIndex = getState(\"activeIndex\");\n const steps = getConfig(\"steps\") || [];\n if (typeof activeIndex === \"undefined\") {\n return;\n }\n const previousStepIndex = activeIndex - 1;\n if (steps[previousStepIndex]) {\n drive(previousStepIndex);\n } else {\n destroy();\n }\n }\n function moveTo(index) {\n const steps = getConfig(\"steps\") || [];\n if (steps[index]) {\n drive(index);\n } else {\n destroy();\n }\n }\n function handleArrowLeft() {\n var _a;\n const isTransitioning = getState(\"__transitionCallback\");\n if (isTransitioning) {\n return;\n }\n const activeIndex = getState(\"activeIndex\");\n const activeStep = getState(\"__activeStep\");\n const activeElement = getState(\"__activeElement\");\n\n if (activeStep.mode === \"CLICK\") {\n return;\n }\n if (\n typeof activeIndex === \"undefined\" ||\n typeof activeStep === \"undefined\"\n ) {\n return;\n }\n const currentStepIndex = getState(\"activeIndex\");\n if (typeof currentStepIndex === \"undefined\") {\n return;\n }\n const onPrevClick =\n ((_a = activeStep.popover) == null ? void 0 : _a.onPrevClick) ||\n getConfig(\"onPrevClick\");\n if (onPrevClick) {\n return onPrevClick(activeElement, activeStep, {\n config: getConfig(),\n state: getState(),\n });\n }\n movePrevious();\n }\n function handleArrowRight() {\n var _a;\n const isTransitioning = getState(\"__transitionCallback\");\n if (isTransitioning) {\n return;\n }\n const activeIndex = getState(\"activeIndex\");\n const activeStep = getState(\"__activeStep\");\n const activeElement = getState(\"__activeElement\");\n\n if (activeStep.mode === \"CLICK\") {\n return;\n }\n if (\n typeof activeIndex === \"undefined\" ||\n typeof activeStep === \"undefined\"\n ) {\n return;\n }\n const onNextClick =\n ((_a = activeStep.popover) == null ? void 0 : _a.onNextClick) ||\n getConfig(\"onNextClick\");\n if (onNextClick) {\n return onNextClick(activeElement, activeStep, {\n config: getConfig(),\n state: getState(),\n });\n }\n moveNext();\n }\n function init() {\n if (getState(\"isInitialized\")) {\n return;\n }\n setState(\"isInitialized\", true);\n document.body.classList.add(\n \"gleap-tour-active\",\n getConfig(\"animate\") ? \"gleap-tour-fade\" : \"gleap-tour-simple\"\n );\n initEvents();\n listen(\"overlayClick\", handleClose);\n listen(\"escapePress\", handleClose);\n listen(\"arrowLeftPress\", handleArrowLeft);\n listen(\"arrowRightPress\", handleArrowRight);\n }\n function drive(stepIndex = 0) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n const steps = getConfig(\"steps\");\n if (!steps) {\n console.error(\"No steps to drive through\");\n destroy();\n return;\n }\n if (!steps[stepIndex]) {\n destroy();\n return;\n }\n setState(\"__activeOnDestroyed\", document.activeElement);\n setState(\"activeIndex\", stepIndex);\n const currentStep = steps[stepIndex];\n const hasNextStep = steps[stepIndex + 1];\n const hasPreviousStep = steps[stepIndex - 1];\n const doneBtnText =\n ((_a = currentStep.popover) == null ? void 0 : _a.doneBtnText) ||\n getConfig(\"doneBtnText\") ||\n \"Done\";\n const allowsClosing = getConfig(\"allowClose\");\n const showProgress =\n typeof ((_b = currentStep.popover) == null\n ? void 0\n : _b.showProgress) !== \"undefined\"\n ? (_c = currentStep.popover) == null\n ? void 0\n : _c.showProgress\n : getConfig(\"showProgress\");\n const progressText =\n ((_d = currentStep.popover) == null ? void 0 : _d.progressText) ||\n getConfig(\"progressText\") ||\n \"{{current}} of {{total}}\";\n const progressTextReplaced = progressText\n .replace(\"{{current}}\", `${stepIndex + 1}`)\n .replace(\"{{total}}\", `${steps.length}`);\n const configuredButtons =\n ((_e = currentStep.popover) == null ? void 0 : _e.showButtons) ||\n getConfig(\"showButtons\");\n const calculatedButtons = [\n \"next\",\n \"previous\",\n ...(allowsClosing ? [\"close\"] : []),\n ].filter((b) => {\n return (\n !(configuredButtons == null ? void 0 : configuredButtons.length) ||\n configuredButtons.includes(b)\n );\n });\n const onNextClick =\n ((_f = currentStep.popover) == null ? void 0 : _f.onNextClick) ||\n getConfig(\"onNextClick\");\n const onPrevClick =\n ((_g = currentStep.popover) == null ? void 0 : _g.onPrevClick) ||\n getConfig(\"onPrevClick\");\n const onCloseClick =\n ((_h = currentStep.popover) == null ? void 0 : _h.onCloseClick) ||\n getConfig(\"onCloseClick\");\n highlight({\n ...currentStep,\n popover: {\n showButtons: calculatedButtons,\n nextBtnText: !hasNextStep ? doneBtnText : void 0,\n disableButtons: [...(!hasPreviousStep ? [\"previous\"] : [])],\n showProgress,\n progressText: progressTextReplaced,\n onNextClick: onNextClick\n ? onNextClick\n : () => {\n if (!hasNextStep) {\n destroy();\n } else {\n drive(stepIndex + 1);\n }\n },\n onPrevClick: onPrevClick\n ? onPrevClick\n : () => {\n drive(stepIndex - 1);\n },\n onCloseClick: onCloseClick\n ? onCloseClick\n : () => {\n destroy();\n },\n ...((currentStep == null ? void 0 : currentStep.popover) || {}),\n },\n });\n }\n function destroy(withOnDestroyStartedHook = true) {\n const activeElement = getState(\"__activeElement\");\n const activeStep = getState(\"__activeStep\");\n const activeOnDestroyed = getState(\"__activeOnDestroyed\");\n const onDestroyStarted = getConfig(\"onDestroyStarted\");\n if (withOnDestroyStartedHook && onDestroyStarted) {\n const isActiveDummyElement =\n !activeElement ||\n (activeElement == null ? void 0 : activeElement.id) ===\n \"gleap-tour-dummy-element\";\n onDestroyStarted(\n isActiveDummyElement ? void 0 : activeElement,\n activeStep,\n {\n config: getConfig(),\n state: getState(),\n }\n );\n return;\n }\n const onDeselected =\n (activeStep == null ? void 0 : activeStep.onDeselected) ||\n getConfig(\"onDeselected\");\n const onDestroyed = getConfig(\"onDestroyed\");\n document.body.classList.remove(\n \"gleap-tour-active\",\n \"gleap-tour-fade\",\n \"gleap-tour-simple\"\n );\n destroyEvents();\n destroyPopover();\n destroyHighlight();\n destroyOverlay();\n destroyEmitter();\n resetState();\n if (activeElement && activeStep) {\n const isActiveDummyElement =\n activeElement.id === \"gleap-tour-dummy-element\";\n if (onDeselected) {\n onDeselected(\n isActiveDummyElement ? void 0 : activeElement,\n activeStep,\n {\n config: getConfig(),\n state: getState(),\n }\n );\n }\n if (onDestroyed) {\n onDestroyed(\n isActiveDummyElement ? void 0 : activeElement,\n activeStep,\n {\n config: getConfig(),\n state: getState(),\n }\n );\n }\n }\n if (activeOnDestroyed) {\n activeOnDestroyed.focus();\n }\n }\n return {\n isActive: () => getState(\"isInitialized\") || false,\n refresh: requireRefresh,\n drive: (stepIndex = 0) => {\n init();\n drive(stepIndex);\n },\n setConfig: configure,\n setSteps: (steps) => {\n resetState();\n configure({\n ...getConfig(),\n steps,\n });\n },\n getConfig,\n getState,\n getActiveIndex: () => getState(\"activeIndex\"),\n isFirstStep: () => getState(\"activeIndex\") === 0,\n isLastStep: () => {\n const steps = getConfig(\"steps\") || [];\n const activeIndex = getState(\"activeIndex\");\n return activeIndex !== void 0 && activeIndex === steps.length - 1;\n },\n getActiveStep: () => getState(\"activeStep\"),\n getActiveElement: () => getState(\"activeElement\"),\n getPreviousElement: () => getState(\"previousElement\"),\n getPreviousStep: () => getState(\"previousStep\"),\n moveNext,\n movePrevious,\n moveTo,\n hasNextStep: () => {\n const steps = getConfig(\"steps\") || [];\n const activeIndex = getState(\"activeIndex\");\n return activeIndex !== void 0 && steps[activeIndex + 1];\n },\n hasPreviousStep: () => {\n const steps = getConfig(\"steps\") || [];\n const activeIndex = getState(\"activeIndex\");\n return activeIndex !== void 0 && steps[activeIndex - 1];\n },\n highlight: (step) => {\n init();\n highlight({\n ...step,\n popover: step.popover\n ? {\n showButtons: [],\n showProgress: false,\n progressText: \"\",\n ...step.popover,\n }\n : void 0,\n });\n },\n destroy: () => {\n destroy(false);\n },\n };\n }\n return driver;\n})({});\n\nexport default GleapTours;\n","import { GleapConfigManager, GleapTranslationManager } from \"./Gleap\";\nimport { calculateContrast, loadIcon } from \"./UI\";\n\nconst localStorageKey = \"gleap-tour-data\";\nconst pointerContainerId = \"copilot-pointer-container\";\nconst styleId = \"copilot-tour-styles\";\nconst copilotJoinedContainerId = \"copilot-joined-container\";\n\nfunction estimateReadTime(text) {\n if (typeof window === \"undefined\") return;\n\n const wordsPerSecond = 3.6; // Average reading speed\n const wordCount = text.split(/\\s+/).filter((word) => word.length > 0).length;\n const readTimeInSeconds = Math.ceil(wordCount / wordsPerSecond);\n return readTimeInSeconds + 1;\n}\n\nfunction htmlToPlainText(html) {\n if (typeof window === \"undefined\") return;\n\n const tempDiv = document.createElement(\"div\");\n tempDiv.innerHTML = html;\n return tempDiv.textContent || \"\";\n}\n\nfunction scrollToElement(element) {\n if (typeof window === \"undefined\") return;\n\n if (element) {\n element.scrollIntoView({\n behavior: \"smooth\",\n block: \"center\",\n inline: \"center\",\n });\n }\n}\n\nfunction performClickAnimation(posX, posY) {\n if (typeof window === \"undefined\") return;\n\n const wave = document.createElement(\"div\");\n wave.className = \"click-wave\";\n wave.style.left = `${posX - 17}px`;\n wave.style.top = `${posY - 17}px`;\n document.body.appendChild(wave);\n setTimeout(() => {\n wave.remove();\n }, 800);\n}\n\nfunction waitForElement(selector, timeout = 5000) {\n if (typeof window === \"undefined\") return;\n\n const pollInterval = 100;\n const maxAttempts = timeout / pollInterval;\n let attempts = 0;\n return new Promise((resolve, reject) => {\n const interval = setInterval(() => {\n const element = document.querySelector(selector);\n if (element) {\n clearInterval(interval);\n resolve(element);\n } else if (attempts >= maxAttempts) {\n clearInterval(interval);\n reject(new Error(`Element not found for selector: ${selector}`));\n }\n attempts++;\n }, pollInterval);\n });\n}\n\nfunction smoothScrollToY(yPosition) {\n if (typeof window === \"undefined\") return;\n\n const viewportHeight = window.innerHeight;\n const targetScrollPosition = yPosition - viewportHeight / 2;\n window.scrollTo({\n top: targetScrollPosition,\n behavior: \"smooth\",\n });\n}\n\nasync function canPlayAudio() {\n if (typeof window === \"undefined\") return;\n\n const audio = new Audio(\n \"data:audio/wav;base64,UklGRigAAABXQVZFZm10IBAAAAABAAEARKwAABCxAgAEABAAZGF0YQAAAAA=\"\n );\n try {\n await audio.play();\n return true;\n } catch (err) {\n return false;\n }\n}\n\n// Helper: Check if an element is fully visible in the viewport.\nfunction isElementFullyVisible(el) {\n if (typeof window === \"undefined\") return;\n\n const rect = el.getBoundingClientRect();\n return (\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <= window.innerHeight &&\n rect.right <= window.innerWidth\n );\n}\n\n// Helper: Get scrollable ancestors of an element.\nfunction getScrollableAncestors(el) {\n if (typeof window === \"undefined\") return;\n\n let ancestors = [];\n let current = el.parentElement;\n while (current) {\n const style = window.getComputedStyle(current);\n if (\n (style.overflowY === \"auto\" || style.overflowY === \"scroll\") &&\n current.scrollHeight > current.clientHeight\n ) {\n ancestors.push(current);\n }\n current = current.parentElement;\n }\n return ancestors;\n}\n\nexport default class GleapCopilotTours {\n productTourData = undefined;\n productTourId = undefined;\n currentActiveIndex = undefined;\n lastArrowPositionX = undefined;\n lastArrowPositionY = undefined;\n onCompleteCallback = undefined;\n audioMuted = false;\n currentAudio = undefined;\n\n // Cached pointer container.\n _pointerContainer = null;\n // For scroll handling.\n _scrollListeners = [];\n _currentAnchor = null;\n _currentStep = null;\n _scrollDebounceTimer = null;\n\n // GleapReplayRecorder singleton.\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapCopilotTours();\n }\n return this.instance;\n }\n\n constructor() {\n const self = this;\n\n if (typeof window !== \"undefined\") {\n this._scrollListeners = [];\n this._currentAnchor = null;\n this._currentStep = null;\n this._scrollDebounceTimer = null;\n\n window.addEventListener(\"resize\", () => {\n if (\n self.productTourId &&\n self.currentActiveIndex >= 0 &&\n self.productTourData &&\n self.productTourData.steps\n ) {\n const steps = self.productTourData.steps;\n const currentStep = steps[self.currentActiveIndex];\n if (\n currentStep &&\n currentStep.selector &&\n currentStep.selector !== \"\"\n ) {\n self.updatePointerPosition(\n document.querySelector(currentStep.selector),\n currentStep\n );\n }\n }\n });\n }\n }\n\n disable() {\n this.disabled = true;\n \n this.cleanup();\n }\n\n startWithConfig(tourId, config, onCompleteCallback = undefined) {\n if (typeof window === \"undefined\") return;\n if (this.productTourId) return;\n if (this.disabled) return;\n\n this.productTourId = tourId;\n this.productTourData = config;\n this.currentActiveIndex = 0;\n this.onCompleteCallback = onCompleteCallback;\n this.start();\n }\n\n storeUncompletedTour() {\n if (typeof window === \"undefined\") return;\n if (this.productTourId && this.productTourData) {\n try {\n let data = JSON.parse(\n JSON.stringify({\n tourData: this.productTourData,\n tourId: this.productTourId,\n })\n );\n data.tourData.steps = data.tourData.steps.slice(\n this.currentActiveIndex || 0,\n data.tourData.steps.length\n );\n localStorage.setItem(localStorageKey, JSON.stringify(data));\n } catch (e) {\n // Optionally log error in development mode.\n }\n } else {\n localStorage.removeItem(localStorageKey);\n }\n }\n\n // Attach scroll listeners with a debounce to update the pointer position after scrolling stops.\n attachScrollListeners(anchor, currentStep) {\n if (typeof window === \"undefined\") return;\n if (!anchor) return;\n const scrollableAncestors = getScrollableAncestors(anchor);\n // Also include window.\n scrollableAncestors.push(window);\n scrollableAncestors.forEach((el) => {\n const handler = () => {\n clearTimeout(this._scrollDebounceTimer);\n this._scrollDebounceTimer = setTimeout(() => {\n this.updatePointerPosition(anchor, currentStep);\n }, 150);\n };\n el.addEventListener(\"scroll\", handler, { passive: true });\n this._scrollListeners.push({ el, handler });\n });\n }\n\n // Remove scroll listeners and clear debounce timer.\n removeScrollListeners() {\n if (typeof window === \"undefined\") return;\n if (this._scrollListeners && this._scrollListeners.length > 0) {\n this._scrollListeners.forEach(({ el, handler }) => {\n el.removeEventListener(\"scroll\", handler);\n });\n this._scrollListeners = [];\n }\n if (this._scrollDebounceTimer) {\n clearTimeout(this._scrollDebounceTimer);\n this._scrollDebounceTimer = null;\n }\n }\n\n // Updated pointer position:\n // 1. Scroll the element into view.\n // 2. After the element is fully visible (or after a maximum delay), update the pointer position to point towards the element.\n updatePointerPosition(anchor, currentStep) {\n if (typeof window === \"undefined\") return;\n try {\n const container =\n this._pointerContainer || document.getElementById(pointerContainerId);\n if (!container) return;\n\n if (!anchor) {\n container.style.position = \"fixed\";\n container.style.left = \"50%\";\n container.style.top = \"50%\";\n container.style.transform = \"translate(-50%, -50%)\";\n smoothScrollToY(window.innerHeight / 2);\n this.removeScrollListeners();\n this._currentAnchor = null;\n this._currentStep = null;\n return;\n }\n\n // Step 1: Scroll the element into view.\n scrollToElement(anchor);\n\n // Step 2: Poll until the element is fully visible (or after maximum polls).\n const pollInterval = 100;\n const maxPolls = 20;\n let pollCount = 0;\n const updateFinalPosition = () => {\n if (isElementFullyVisible(anchor) || pollCount >= maxPolls) {\n // Compute final target coordinates.\n const anchorRect = anchor.getBoundingClientRect();\n const targetX = anchorRect.left + anchorRect.width / 2;\n const targetY = anchorRect.top + anchorRect.height / 2 + 10; // 10px downward offset.\n container.style.position = \"fixed\";\n container.style.left = `${targetX}px`;\n container.style.top = `${targetY}px`;\n container.style.transform = \"translate(-50%, -50%)\";\n\n // Adjust container if too far right.\n let containerWidthSpace = 350;\n if (containerWidthSpace > window.innerWidth - 40) {\n containerWidthSpace = window.innerWidth - 40;\n }\n if (targetX + containerWidthSpace > window.innerWidth - 20) {\n container.classList.add(\"copilot-pointer-container-right\");\n } else {\n container.classList.remove(\"copilot-pointer-container-right\");\n }\n\n // Reattach scroll listeners if the target or step has changed.\n if (\n this._currentAnchor !== anchor ||\n this._currentStep !== currentStep\n ) {\n this.removeScrollListeners();\n this._currentAnchor = anchor;\n this._currentStep = currentStep;\n this.attachScrollListeners(anchor, currentStep);\n }\n } else {\n pollCount++;\n setTimeout(updateFinalPosition, pollInterval);\n }\n };\n updateFinalPosition();\n } catch (e) {\n // Optionally log errors.\n }\n }\n\n cleanup() {\n if (typeof window === \"undefined\") return;\n document.body.classList.add(\"gl-copilot-fade-out\");\n if (this.currentAudio) {\n this.currentAudio.pause();\n }\n setTimeout(() => {\n if (this._pointerContainer) {\n this._pointerContainer.remove();\n this._pointerContainer = null;\n } else {\n const container = document.getElementById(pointerContainerId);\n if (container) container.remove();\n }\n const copilotInfoContainer = document.getElementById(\n copilotJoinedContainerId\n );\n if (copilotInfoContainer) copilotInfoContainer.remove();\n const styleNode = document.getElementById(styleId);\n if (styleNode) styleNode.remove();\n document.body.classList.remove(\"gl-copilot-fade-out\");\n }, 800);\n\n this.productTourId = undefined;\n this.productTourData = undefined;\n \n this.removeScrollListeners();\n }\n\n toggleAudio(muted = false) {\n this.audioMuted = muted;\n if (this.currentAudio) {\n this.currentAudio.muted = this.audioMuted;\n }\n document.querySelector(`.${copilotJoinedContainerId}-mute`).innerHTML =\n loadIcon(this.audioMuted ? \"unmute\" : \"mute\");\n }\n\n setupCopilotTour() {\n if (typeof window === \"undefined\") return;\n\n const primaryColor =\n GleapConfigManager.getInstance().flowConfig?.color ?? \"#485BFF\";\n const contrastColor = calculateContrast(primaryColor);\n\n let styleNode = document.getElementById(styleId);\n if (!styleNode) {\n styleNode = document.createElement(\"style\");\n styleNode.id = styleId;\n styleNode.type = \"text/css\";\n styleNode.textContent = `\n #${pointerContainerId} {\n position: absolute;\n top: 0;\n left: 0;\n display: flex;\n align-items: flex-start;\n pointer-events: none;\n z-index: 2147483610;\n transition: all 0.5s ease;\n }\n .${pointerContainerId}-clickmode {\n cursor: pointer;\n pointer-events: all !important;\n }\n .${pointerContainerId}-clickmode #copilot-info-bubble-content {\n display: flex !important;\n }\n .${pointerContainerId}-clickmode svg {\n display: none !important;\n }\n #${pointerContainerId} svg {\n width: 20px;\n height: auto;\n fill: none;\n }\n #copilot-info-bubble {\n position: relative;\n }\n #copilot-info-bubble-content-container {\n position: absolute;\n top: 0px;\n left: 0px;\n min-width: min(300px, 80vw);\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n }\n .${pointerContainerId}-right #copilot-info-bubble-content-container {\n left: auto !important;\n right: 0px !important;\n align-items: flex-end;\n }\n .${pointerContainerId}-right .copilot-info-bubble-content {\n margin-right: 5px;\n }\n .${pointerContainerId}-right svg {\n transform: scaleX(-1);\n }\n #copilot-info-bubble-content svg {\n width: 16px;\n height: 16px;\n display: inline-block !important;\n margin-left: 5px;\n }\n #copilot-info-bubble-content {\n margin-top: 18px;\n margin-left: 5px;\n padding: 10px 15px;\n border-radius: 20px;\n background-color: black;\n color: white;\n font-family: Arial, sans-serif;\n font-size: 14px;\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);\n max-width: 100%;\n white-space: normal;\n overflow-wrap: break-word;\n word-break: normal;\n hyphens: none;\n }\n .${pointerContainerId}-right #copilot-info-bubble-content {\n margin-top: 30px;\n margin-left: 0px;\n margin-right: 5px;\n }\n .click-wave {\n position: absolute;\n width: 34px;\n height: 34px;\n border-radius: 50%;\n background-color: rgba(0, 0, 0, 0.5);\n pointer-events: none;\n z-index: 2147483611;\n animation: click-wave-animation 0.8s ease forwards;\n }\n @keyframes click-wave-animation {\n 0% {\n transform: scale(0.2);\n opacity: 1;\n }\n 100% {\n transform: scale(2);\n opacity: 0;\n }\n }\n @keyframes slideInFromTop {\n 0% {\n transform: translateY(-100%);\n opacity: 0;\n }\n 100% {\n transform: translateY(0);\n opacity: 1;\n }\n }\n .${copilotJoinedContainerId} {\n position: fixed;\n top: 20px;\n right: 20px;\n z-index: 2147483610;\n background: #fff;\n padding: 6px;\n border-radius: 10px;\n box-shadow: 0 0 20px 0 #C294F2;\n display: flex;\n align-items: center;\n gap: 8px;\n border: 1px solid rgba(192, 146, 242, 0.5);\n animation: slideInFromTop 0.5s ease-out forwards;\n }\n .${copilotJoinedContainerId} span {\n font-size: 13px;\n color: #000;\n font-family: sans-serif;\n }\n .${copilotJoinedContainerId}-avatar {\n width: 24px;\n height: 24px;\n flex-shrink: 0;\n border-radius: 6px;\n }\n .${copilotJoinedContainerId}-mute {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n .${copilotJoinedContainerId}-mute svg {\n width: 20px;\n height: auto;\n cursor: pointer;\n animation: pulsate 2s infinite;\n }\n .${copilotJoinedContainerId}-mute svg:hover {\n opacity: 0.8;\n }\n .${copilotJoinedContainerId}-dismiss {\n display: flex;\n align-items: center;\n justify-content: center;\n padding-right: 3px;\n }\n .${copilotJoinedContainerId}-dismiss svg {\n width: 15px;\n height: auto;\n cursor: pointer;\n }\n .${copilotJoinedContainerId}-dismiss svg:hover {\n opacity: 0.8;\n }\n @keyframes pulsate {\n 0% {\n transform: scale(1);\n opacity: 1;\n }\n 50% {\n transform: scale(1.1);\n opacity: 0.8;\n }\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n }\n @keyframes glCoFadeIn {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n @keyframes glCoFadeOut {\n 0% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n }\n\n .gleap-audio-unmute-modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n background-color: rgba(0, 0, 0, 0.5);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 2147483620;\n }\n\n .gleap-audio-unmute-modal {\n background-color: #fff;\n padding: 20px;\n border-radius: 8px;\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);\n text-align: center;\n max-width: 90%;\n width: 400px;\n }\n\n .gleap-audio-unmute-modal p {\n margin-bottom: 20px;\n font-size: 16px;\n line-height: 22px;\n font-weight: normal;\n }\n\n .gleap-audio-unmute-button {\n background: ${primaryColor};\n color: ${contrastColor};\n outline: none;\n border: none;\n padding: 10px 14px;\n border-radius: 12px;\n font-size: 14px;\n font-weight: bold;\n cursor: pointer;\n }\n\n .gleap-audio-unmute-button:hover {\n opacity: 0.8;\n }\n\n .gleap-tour-continue-button {\n color: ${primaryColor};\n text-decoration: none;\n cursor: pointer;\n font-size: 14px;\n font-weight: bold;\n border: none;\n background: none;\n padding: 0;\n margin: 0;\n margin-left: 20px;\n }\n\n .gleap-tour-continue-button:hover {\n opacity: 0.8;\n }\n\n body.gl-copilot-fade-out::before,\n body.gl-copilot-fade-out::after,\n body.gl-copilot-fade-out #${copilotJoinedContainerId} {\n animation: glCoFadeOut 0.8s ease-out forwards;\n }\n ${\n this.productTourData?.playVoice ?? true\n ? \"\"\n : `\n .${copilotJoinedContainerId}-mute {\n display: none;\n }\n `\n }\n ${\n this.productTourData.gradient\n ? `body::before {\n content: \"\";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n box-sizing: border-box;\n border: 18px solid transparent;\n filter: blur(25px);\n border-image-slice: 1;\n border-image-source: linear-gradient(45deg, #ED5587, #FBE6A9, #a6e3f8, #C294F2);\n animation: glCoFadeIn 1.5s ease-out forwards;\n }\n \n body::after {\n content: \"\";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n opacity: 0.5;\n box-sizing: border-box;\n border: 3px solid transparent;\n border-image-slice: 1;\n border-image-source: linear-gradient(45deg, #ED5587, #FBE6A9, #a6e3f8, #C294F2);\n animation: glCoFadeIn 1.5s ease-out forwards;\n }`\n : `body::after {\n content: \"\";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n opacity: 0;\n }`\n }\n `;\n document.head.appendChild(styleNode);\n }\n\n const container = document.createElement(\"div\");\n container.id = pointerContainerId;\n container.style.opacity = 0;\n // Cache the pointer container.\n this._pointerContainer = container;\n\n const svgMouse = document.createElementNS(\n \"http://www.w3.org/2000/svg\",\n \"svg\"\n );\n svgMouse.setAttribute(\"viewBox\", \"0 0 380 476\");\n svgMouse.innerHTML =\n '';\n\n const infoBubble = document.createElement(\"div\");\n infoBubble.id = \"copilot-info-bubble\";\n infoBubble.innerHTML = `
`;\n\n const copilotInfoContainer = document.createElement(\"div\");\n copilotInfoContainer.id = copilotJoinedContainerId;\n copilotInfoContainer.classList.add(copilotJoinedContainerId);\n copilotInfoContainer.innerHTML = `\n \n ${this.productTourData?.kaiSlug}\n
\n ${loadIcon(this.audioMuted ? \"unmute\" : \"mute\")}\n
\n ${\n this.productTourData?.allowClose\n ? `
\n ${loadIcon(\"dismiss\")}\n
`\n : \"\"\n }\n `;\n document.body.appendChild(copilotInfoContainer);\n\n const self = this;\n\n document\n .querySelector(`.${copilotJoinedContainerId}-mute`)\n .addEventListener(\"click\", () => {\n this.toggleAudio(!this.audioMuted);\n });\n\n if (this.productTourData?.allowClose) {\n document\n .querySelector(`.${copilotJoinedContainerId}-dismiss`)\n .addEventListener(\"click\", () => {\n this.completeTour(false);\n });\n }\n\n container.appendChild(svgMouse);\n container.appendChild(infoBubble);\n document.body.appendChild(container);\n }\n\n start() {\n if (typeof window === \"undefined\") return;\n if (this.disabled) return;\n\n const config = this.productTourData;\n if (!config) return;\n canPlayAudio().then((supported) => {\n this.audioMuted = !supported;\n this.setupCopilotTour();\n\n if (this.audioMuted && config?.showUnmuteModal) {\n this.showAudioUnmuteModal();\n } else {\n setTimeout(() => {\n this.renderNextStep();\n }, 1500);\n }\n });\n }\n\n showAudioUnmuteModal() {\n // Create the overlay element\n const modalOverlay = document.createElement(\"div\");\n modalOverlay.classList.add(\"gleap-audio-unmute-modal-overlay\");\n\n // Create the modal container element\n const modal = document.createElement(\"div\");\n modal.classList.add(\"gleap-audio-unmute-modal\");\n\n // Create and add the modal message\n const message = document.createElement(\"p\");\n message.textContent = this.productTourData?.unmuteModalTitle;\n modal.appendChild(message);\n\n // Create the \"Unmute Audio\" button\n const unmuteButton = document.createElement(\"button\");\n unmuteButton.classList.add(\"gleap-audio-unmute-button\");\n unmuteButton.textContent = this.productTourData?.unmuteModalButton;\n unmuteButton.addEventListener(\"click\", () => {\n this.toggleAudio(false);\n if (modalOverlay.parentNode) {\n modalOverlay.parentNode.removeChild(modalOverlay);\n }\n setTimeout(() => {\n this.renderNextStep();\n }, 1000);\n });\n modal.appendChild(unmuteButton);\n\n // Create the \"Start Anyway\" button\n const startAnywayButton = document.createElement(\"button\");\n startAnywayButton.classList.add(\"gleap-tour-continue-button\");\n startAnywayButton.textContent = this.productTourData?.unmuteModalContinue;\n startAnywayButton.addEventListener(\"click\", () => {\n if (modalOverlay.parentNode) {\n modalOverlay.parentNode.removeChild(modalOverlay);\n }\n setTimeout(() => {\n this.renderNextStep();\n }, 1000);\n });\n modal.appendChild(startAnywayButton);\n\n // Build the modal and attach it to the DOM\n modalOverlay.appendChild(modal);\n document.body.appendChild(modalOverlay);\n }\n\n completeTour(success = true) {\n if (typeof window === \"undefined\") return;\n this.cleanup();\n if (this.onCompleteCallback) {\n this.onCompleteCallback(success);\n }\n }\n\n renderNextStep() {\n if (typeof window === \"undefined\") return;\n if (this.disabled) return;\n\n const self = this;\n const config = this.productTourData;\n const steps = config.steps;\n if (this.currentActiveIndex >= steps.length) {\n setTimeout(() => {\n this.completeTour();\n }, 500);\n return;\n }\n const currentStep = steps[this.currentActiveIndex];\n const handleStep = (element) => {\n this._pointerContainer.style.display = \"flex\";\n if (currentStep.selector && currentStep.selector.length > 0 && !element) {\n this.completeTour(false);\n return;\n }\n const gotToNextStep = () => {\n if (currentStep.mode === \"INPUT\" && element) {\n function proceedClickmode() {\n document\n .querySelector(`#${pointerContainerId}`)\n .classList.remove(\"copilot-pointer-container-clickmode\");\n element.classList.remove(\"gleap-input-highlight\");\n document.getElementById(pointerContainerId).style.display = \"none\";\n self.currentActiveIndex++;\n self.storeUncompletedTour();\n self.renderNextStep();\n }\n const inputModeType = currentStep.inputType ?? \"default\";\n if (inputModeType === \"default\") {\n function handleInputEvent(e) {\n if (e?.target?.value?.length === 0) return;\n const cursor = document.getElementById(\n `copilot-info-bubble-content`\n );\n if (!cursor) return;\n cursor.innerHTML = `${GleapTranslationManager.translateText(\n \"next\"\n )} \n \n`;\n cursor.addEventListener(\"click\", proceedClickmode, {\n once: true,\n });\n element.classList.add(\"gleap-input-highlight\");\n document\n .querySelector(`#${pointerContainerId}`)\n .classList.add(\"copilot-pointer-container-clickmode\");\n element.removeEventListener(\"input\", handleInputEvent);\n }\n element.addEventListener(\"input\", handleInputEvent, {\n once: false,\n });\n if (element.hasAttribute(\"contenteditable\")) {\n element.addEventListener(\"keyup\", handleInputEvent, {\n once: false,\n });\n }\n element.addEventListener(\n \"blur\",\n () => {\n element.focus();\n },\n { once: true }\n );\n element.focus();\n } else {\n const inputValue = currentStep.inputValue ?? \"\";\n let index = 0;\n function typeCharacter() {\n if (index < inputValue.length) {\n element.value += inputValue[index];\n index++;\n setTimeout(typeCharacter, 100);\n } else {\n setTimeout(() => {\n proceedClickmode();\n }, 1200);\n }\n }\n typeCharacter();\n }\n return;\n }\n self.currentActiveIndex++;\n self.storeUncompletedTour();\n if (currentStep.mode === \"CLICK\" && element) {\n const rect = element.getBoundingClientRect();\n const scrollX = window.scrollX || 0;\n const scrollY = window.scrollY || 0;\n performClickAnimation(\n rect.left + rect.width / 2 + scrollX,\n rect.top + rect.height / 2 + scrollY\n );\n element.click();\n }\n self.renderNextStep();\n };\n\n this.updatePointerPosition(element, currentStep);\n const message = currentStep?.message\n ? htmlToPlainText(currentStep.message)\n : \"🤔\";\n document.getElementById(`copilot-info-bubble-content`).textContent =\n message;\n this._pointerContainer.style.opacity = 1;\n const readTime = estimateReadTime(message);\n const continueWithNoAudio = () => {\n this.currentAudio = undefined;\n setTimeout(() => {\n gotToNextStep();\n }, readTime * 1000);\n };\n if (currentStep.voice && currentStep.voice.length > 0) {\n this.currentAudio = new Audio(currentStep.voice);\n if (this.audioMuted) {\n this.currentAudio.muted = true;\n }\n this.currentAudio.addEventListener(\"ended\", () => {\n setTimeout(() => {\n gotToNextStep();\n }, 1000);\n });\n this.currentAudio\n .play()\n .then(() => {})\n .catch((error) => {\n continueWithNoAudio();\n });\n } else {\n continueWithNoAudio();\n }\n };\n\n const elementPromise = currentStep.selector\n ? waitForElement(currentStep.selector)\n : Promise.resolve(null);\n elementPromise.then(handleStep).catch(() => handleStep(null));\n }\n}\n","import { loadIcon } from \"./UI\";\nimport GleapTours from \"./GleapTours\";\nimport Gleap, { GleapEventManager, GleapSession } from \"./Gleap\";\nimport GleapCopilotTours from \"./GleapCopilotTours\";\n\nconst localStorageKey = \"gleap-tour-data\";\n\nexport default class GleapProductTours {\n productTourData = undefined;\n productTourId = undefined;\n unmuted = false;\n currentActiveIndex = undefined;\n gleapTourObj = undefined;\n disabled = false;\n\n // GleapReplayRecorder singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapProductTours();\n return this.instance;\n } else {\n return this.instance;\n }\n }\n\n disable() {\n if (this.gleapTourObj) {\n this.gleapTourObj.destroy();\n }\n\n // Disable copilot tours.\n GleapCopilotTours.getInstance().disable();\n\n this.gleapTourObj = undefined;\n this.disabled = true;\n }\n\n constructor() {\n const self = this;\n\n if (typeof window !== \"undefined\") {\n const beforeUnloadListener = (event) => {\n if (\n !self?.disabled &&\n self?.productTourId &&\n self?.productTourData &&\n self?.productTourData?.tourType !== \"cobrowse\"\n ) {\n self.storeUncompletedTour();\n }\n };\n\n if (typeof window !== \"undefined\") {\n window.addEventListener(\"beforeunload\", beforeUnloadListener);\n }\n }\n }\n\n startWithConfig(tourId, config, delay = 0, manually = false) {\n // Prevent multiple tours from being started.\n if (this.productTourId || this.disabled) {\n return;\n }\n\n this.productTourId = tourId;\n this.productTourData = config;\n this.currentActiveIndex = 0;\n\n if (manually) {\n this.start();\n } else {\n const self = this;\n\n // Validate product tour.\n GleapSession.getInstance()\n .validateProductTour(tourId)\n .then(() => {\n if (delay > 0) {\n return setTimeout(() => {\n self.start();\n }, delay);\n } else {\n return this.start();\n }\n })\n .catch((error) => {\n console.log(\"Product tour is not live. Cleaning up...\");\n console.error(error);\n\n self.onComplete(false);\n });\n }\n }\n\n onComplete(success = true) {\n const comData = {\n tourId: this.productTourId,\n };\n\n if (success) {\n GleapEventManager.notifyEvent(\"productTourCompleted\", comData);\n Gleap.trackEvent(`tour-${this.productTourId}-completed`, comData);\n } else {\n GleapEventManager.notifyEvent(\"productTourQuit\", comData);\n Gleap.trackEvent(`tour-${this.productTourId}-quit`, comData);\n }\n\n // Clear data.\n if (this.gleapTourObj) {\n this.gleapTourObj.destroy();\n }\n\n this.gleapTourObj = undefined;\n this.productTourData = undefined;\n this.productTourId = undefined;\n this.currentActiveIndex = undefined;\n this.clearUncompletedTour();\n }\n\n loadUncompletedTour() {\n try {\n const data = JSON.parse(localStorage.getItem(localStorageKey));\n if (data?.tourData && data?.tourId) {\n return data;\n }\n } catch (e) {}\n\n return null;\n }\n\n storeUncompletedTour() {\n if (this.productTourId && this.productTourData) {\n try {\n let data = JSON.parse(\n JSON.stringify({\n tourData: this.productTourData,\n tourId: this.productTourId,\n })\n );\n\n data.tourData.steps = data.tourData.steps.slice(\n this.currentActiveIndex || 0,\n data.tourData.steps.length\n );\n\n localStorage.setItem(localStorageKey, JSON.stringify(data));\n } catch (e) {}\n } else {\n this.clearUncompletedTour();\n }\n }\n\n clearUncompletedTour() {\n try {\n localStorage.removeItem(localStorageKey);\n } catch (e) {}\n }\n\n start() {\n const config = this.productTourData;\n if (!config) {\n return;\n }\n\n if (config.tourType === \"cobrowse\") {\n return GleapCopilotTours.getInstance().startWithConfig(\n this.productTourId,\n config,\n (success) => {\n this.onComplete(success);\n }\n );\n }\n\n this.unmuted = false;\n const steps = config.steps;\n const self = this;\n\n var driverSteps = [];\n\n for (let i = 0; i < steps.length; i++) {\n const step = steps[i];\n\n const isClickMode = step.mode === \"CLICK\";\n const isInputMode = step.mode === \"INPUT\";\n\n var message = \"\";\n var hasSender = false;\n\n if (step.type === \"video-pointer\") {\n message = `
\n \n
${loadIcon(\n \"unmute\"\n )}
\n
`;\n } else {\n var senderHTML = ``;\n\n if (config.sender && config.sender.firstName) {\n hasSender = true;\n senderHTML = `
\n
\n
${config.sender.firstName}
\n
`;\n }\n\n message = `${senderHTML}
${step.message}
`;\n }\n\n const disableInteraction = !isClickMode && !isInputMode;\n\n var driverStep = {\n disableActiveInteraction: disableInteraction,\n mode: step.mode,\n popover: {\n description: message,\n popoverClass: `gleap-tour-popover-${step.type} ${\n !hasSender && \"gleap-tour-popover-no-sender\"\n } ${config.allowClose && \"gleap-tour-popover-can-close\"}`,\n ...(isClickMode\n ? {\n showButtons: [],\n }\n : {}),\n },\n };\n if (step.selector && step.selector.length > 0) {\n driverStep.element = step.selector;\n }\n driverSteps.push(driverStep);\n }\n\n var buttons = [\"next\", \"close\"];\n\n if (config.backButton) {\n buttons.push(\"previous\");\n }\n\n function onDocumentClick(evnt) {\n try {\n var gleapTourPopover = document.querySelector(\".gleap-tour-popover\");\n if (gleapTourPopover && !gleapTourPopover.contains(evnt.target)) {\n const stepIndex = self.gleapTourObj.getActiveIndex();\n const step = steps[stepIndex];\n const element = self.gleapTourObj.getActiveElement();\n\n if (step?.mode === \"CLICK\" && evnt?.target !== element) {\n const isInsideElement = element.contains(evnt?.target);\n if (!isInsideElement) {\n // Ignore clicks outside of the actual element.\n return;\n }\n }\n\n // Store next step index.\n self.currentActiveIndex = (self.currentActiveIndex || 0) + 1;\n self.storeUncompletedTour();\n\n if (\n (element && element.tagName === \"INPUT\") ||\n step.mode === \"INPUT\" ||\n evnt?.target?.id.includes(\"tooltip-svg\")\n ) {\n // Prevent.\n } else {\n self.gleapTourObj.moveNext();\n }\n }\n } catch (e) {}\n }\n\n this.gleapTourObj = GleapTours({\n showProgress: true,\n allowKeyboardControl: false,\n steps: driverSteps,\n showProgress: steps.length > 1,\n allowClose: config.allowClose,\n nextBtnText: config.nextText,\n doneBtnText: config.doneText,\n prevBtnText: config.prevText,\n showButtons: buttons,\n onHighlightStarted: (element, step, config) => {\n this.currentActiveIndex = config?.state?.activeIndex;\n this.storeUncompletedTour();\n },\n onElementNotFound: (step) => {\n document.removeEventListener(\"click\", onDocumentClick);\n\n this.onComplete(false);\n },\n onDestroyStarted: () => {\n if (!this.gleapTourObj.hasNextStep()) {\n // Mark as completed.\n this.onComplete(true);\n } else {\n // Mark as quit.\n this.onComplete(false);\n }\n\n document.removeEventListener(\"click\", onDocumentClick);\n },\n onPopoverRender: (popoverElement) => {\n // Fix for images and videos.\n if (popoverElement) {\n const mediaElements = document.querySelectorAll(\n \".gleap-tour-popover-description img, .gleap-tour-popover-description video\"\n );\n\n const performRequentialRefresh = () => {\n setTimeout(() => {\n this.gleapTourObj.refresh();\n }, 500);\n setTimeout(() => {\n this.gleapTourObj.refresh();\n }, 750);\n };\n\n for (let i = 0; i < mediaElements.length; i++) {\n const mediaElement = mediaElements[i];\n if (mediaElement.tagName === \"IMG\") {\n mediaElement.addEventListener(\"load\", () => {\n performRequentialRefresh();\n });\n mediaElement.addEventListener(\"error\", () => {\n performRequentialRefresh();\n });\n } else if (mediaElement.tagName === \"VIDEO\") {\n mediaElement.addEventListener(\"canplaythrough\", () => {\n performRequentialRefresh();\n });\n mediaElement.addEventListener(\"error\", () => {\n performRequentialRefresh();\n });\n }\n }\n }\n\n const playingClass = \"gleap-tour-video--playing\";\n const playPauseContainer = document.querySelector(\n \".gleap-tour-video-playpause\"\n );\n\n const videoElement = document.querySelector(\".gleap-tour-video-obj\");\n if (videoElement) {\n const videoContainer = videoElement.closest(\".gleap-tour-video\");\n\n if (self.unmuted) {\n if (videoElement) {\n videoElement.pause();\n videoElement.muted = false;\n videoElement.play();\n videoContainer.classList.add(playingClass);\n }\n }\n\n videoElement.addEventListener(\"ended\", function () {\n playPauseContainer.innerHTML = loadIcon(\"replay\");\n playPauseContainer.classList.add(\n \"gleap-tour-video-svg--fullscreen\"\n );\n videoContainer.classList.remove(playingClass);\n });\n\n videoElement.addEventListener(\"play\", function () {\n playPauseContainer.classList.remove(\n \"gleap-tour-video-svg--fullscreen\"\n );\n });\n\n if (playPauseContainer) {\n playPauseContainer.addEventListener(\"click\", () => clickVideo());\n }\n\n const clickVideo = () => {\n if (videoElement.muted) {\n self.unmuted = true;\n\n videoElement.pause();\n videoElement.currentTime = 0;\n videoElement.muted = false;\n videoElement.play();\n\n playPauseContainer.innerHTML = loadIcon(\"mute\");\n videoContainer.classList.add(playingClass);\n } else if (videoElement.paused) {\n videoElement.muted = false;\n videoElement.play();\n\n playPauseContainer.innerHTML = loadIcon(\"mute\");\n videoContainer.classList.add(playingClass);\n } else {\n videoElement.pause();\n playPauseContainer.innerHTML = loadIcon(\"unmute\");\n videoContainer.classList.remove(playingClass);\n }\n };\n }\n },\n });\n this.gleapTourObj.drive();\n\n document.addEventListener(\"click\", onDocumentClick, true);\n }\n}\n","import { injectStyledCSS } from \"./UI\";\nimport GleapNetworkIntercepter from \"./GleapNetworkIntercepter\";\nimport {\n fixGleapHeight,\n gleapDataParser,\n runFunctionWhenDomIsReady,\n} from \"./GleapHelper\";\nimport GleapSession from \"./GleapSession\";\nimport GleapStreamedEvent from \"./GleapStreamedEvent\";\nimport GleapConfigManager from \"./GleapConfigManager\";\nimport GleapFeedback from \"./GleapFeedback\";\nimport GleapFrameManager from \"./GleapFrameManager\";\nimport GleapMetaDataManager from \"./GleapMetaDataManager\";\nimport GleapConsoleLogManager from \"./GleapConsoleLogManager\";\nimport GleapClickListener from \"./GleapClickListener\";\nimport GleapFeedbackButtonManager from \"./GleapFeedbackButtonManager\";\nimport GleapCustomDataManager from \"./GleapCustomDataManager\";\nimport GleapEventManager from \"./GleapEventManager\";\nimport GleapCustomActionManager from \"./GleapCustomActionManager\";\nimport GleapReplayRecorder from \"./GleapReplayRecorder\";\nimport GleapMarkerManager from \"./GleapMarkerManager\";\nimport GleapTranslationManager from \"./GleapTranslationManager\";\nimport GleapShortcutListener from \"./GleapShortcutListener\";\nimport GleapPreFillManager from \"./GleapPreFillManager\";\nimport GleapNotificationManager from \"./GleapNotificationManager\";\nimport GleapBannerManager from \"./GleapBannerManager\";\nimport GleapModalManager from \"./GleapModalManager\";\nimport GleapAudioManager from \"./GleapAudioManager\";\nimport GleapTagManager from \"./GleapTagManager\";\nimport GleapAdminManager from \"./GleapAdminManager\";\nimport GleapProductTours from \"./GleapProductTours\";\nimport { checkPageFilter } from \"./GleapPageFilter\";\nimport { registerGleapChecklist } from \"./GleapChecklist\";\nimport ChecklistNetworkManager from \"./ChecklistNetworkManager\";\n\nif (\n typeof window !== \"undefined\" &&\n typeof HTMLCanvasElement !== \"undefined\" &&\n HTMLCanvasElement.prototype &&\n HTMLCanvasElement.prototype.__originalGetContext === undefined\n) {\n HTMLCanvasElement.prototype.__originalGetContext =\n HTMLCanvasElement.prototype.getContext;\n HTMLCanvasElement.prototype.getContext = function (type, options) {\n return this.__originalGetContext(type, {\n ...options,\n preserveDrawingBuffer: true,\n });\n };\n}\n\nif (\n typeof customElements !== \"undefined\" &&\n typeof HTMLElement !== \"undefined\" &&\n typeof window !== \"undefined\"\n) {\n registerGleapChecklist();\n}\n\nclass Gleap {\n static invoked = true;\n static silentCrashReportSent = false;\n initialized = false;\n offlineMode = false;\n disablePageTracking = false;\n disableInAppNotifications = false;\n\n // Global data\n globalData = {\n screenRecordingData: null,\n webReplay: null,\n snapshotPosition: {\n x: 0,\n y: 0,\n },\n };\n\n // Gleap singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new Gleap();\n return this.instance;\n } else {\n return this.instance;\n }\n }\n\n /**\n * Main constructor\n */\n constructor() {\n if (typeof window !== \"undefined\") {\n // Make sure all instances are ready.\n GleapMetaDataManager.getInstance();\n GleapConsoleLogManager.getInstance().start();\n GleapClickListener.getInstance().start();\n GleapAdminManager.getInstance().start();\n }\n }\n\n /**\n * Sets the development environment\n * @param {*} environment\n */\n static setEnvironment(environment) {\n GleapMetaDataManager.getInstance().environment = environment;\n }\n\n /**\n * Set tags to be submitted with each ticket.\n * @param {*} tags\n */\n static setTags(tags) {\n GleapTagManager.getInstance().setTags(tags);\n }\n\n /**\n * Sets a custom URL handler.\n * @param {*} urlHandler\n */\n static setUrlHandler(urlHandler) {\n GleapFrameManager.getInstance().setUrlHandler(urlHandler);\n }\n\n /**\n * Active the Gleap offline mode.\n * @param {*} offlineMode\n */\n static setOfflineMode(offlineMode) {\n const instance = this.getInstance();\n instance.offlineMode = offlineMode;\n }\n\n /**\n * Disable the in-app notifications.\n * @param {*} disableInAppNotifications\n */\n static setDisableInAppNotifications(disableInAppNotifications) {\n const instance = this.getInstance();\n instance.disableInAppNotifications = disableInAppNotifications;\n }\n\n /**\n * Disable the default page tracking.\n * @param {*} disablePageTracking\n */\n static setDisablePageTracking(disablePageTracking) {\n const instance = this.getInstance();\n instance.disablePageTracking = disablePageTracking;\n }\n\n /**\n * Revert console log overwrite.\n */\n static disableConsoleLogOverwrite() {\n GleapConsoleLogManager.getInstance().stop();\n }\n\n /**\n * Set the AI tools.\n * @param {*} tools\n */\n static setAiTools(tools) {\n GleapConfigManager.getInstance().setAiTools(tools);\n GleapFrameManager.getInstance().sendConfigUpdate();\n }\n\n /**\n * Attaches external network logs.\n */\n static attachNetworkLogs(networkLogs) {\n GleapNetworkIntercepter.getInstance().externalRequests =\n gleapDataParser(networkLogs);\n }\n\n /**\n * Add entry to logs.\n * @param {*} message\n * @param {*} logLevel\n * @returns\n */\n static log(message, logLevel = \"INFO\") {\n GleapConsoleLogManager.getInstance().addLog(message, logLevel);\n }\n\n /**\n * Initializes the SDK\n * @param {*} sdkKey\n */\n static initialize(sdkKey) {\n const instance = this.getInstance();\n if (instance.initialized) {\n console.warn(\"Gleap already initialized.\");\n return;\n }\n\n instance.initialized = true;\n\n try {\n fixGleapHeight();\n } catch (error) {}\n\n // Start session\n const sessionInstance = GleapSession.getInstance();\n sessionInstance.sdkKey = sdkKey;\n sessionInstance.setOnSessionReady(() => {\n // Run auto configuration.\n setTimeout(() => {\n GleapConfigManager.getInstance()\n .start()\n .then(() => {\n GleapStreamedEvent.getInstance().start();\n\n runFunctionWhenDomIsReady(() => {\n // Inject the widget buttons\n GleapFeedbackButtonManager.getInstance().injectFeedbackButton();\n\n // Inject the notification container\n GleapNotificationManager.getInstance().injectNotificationUI();\n\n // Check for uncompleted tour.\n Gleap.checkForUncompletedTour();\n\n // Check for URL params.\n Gleap.checkForUrlParams();\n\n // Notify event.\n GleapEventManager.notifyEvent(\"initialized\");\n });\n })\n .catch(function (err) {\n console.warn(\"Failed to initialize Gleap.\");\n });\n }, 0);\n });\n sessionInstance.startSession();\n }\n\n static openURL(url, newTab = false) {\n GleapFrameManager.getInstance().urlHandler(url, newTab);\n }\n\n static checkForUrlParams() {\n if (typeof window === \"undefined\" || !window.location.search) {\n return;\n }\n\n try {\n const urlParams = new URLSearchParams(window.location.search);\n\n const widget = urlParams.get(\"gleap_widget\");\n if (widget && widget.length > 0) {\n Gleap.open();\n }\n\n const conversationFlow = urlParams.get(\"gleap_conversation\");\n if (conversationFlow && conversationFlow.length > 0) {\n if (conversationFlow === \"true\") {\n Gleap.startConversation(true);\n } else {\n Gleap.startBot(conversationFlow, true);\n }\n }\n\n const feedbackFlow = urlParams.get(\"gleap_feedback\");\n if (feedbackFlow && feedbackFlow.length > 0) {\n Gleap.startFeedbackFlow(feedbackFlow);\n }\n const surveyFlow = urlParams.get(\"gleap_survey\");\n const surveyFlowFormat = urlParams.get(\"gleap_survey_format\");\n if (surveyFlow && surveyFlow.length > 0) {\n Gleap.showSurvey(\n surveyFlow,\n surveyFlowFormat === \"survey_full\" ? \"survey_full\" : \"survey\"\n );\n }\n const tourId = urlParams.get(\"gleap_tour\");\n if (tourId && tourId.length > 0) {\n var tourDelay = parseInt(urlParams.get(\"gleap_tour_delay\"));\n if (isNaN(tourDelay)) {\n tourDelay = 2;\n }\n\n setTimeout(() => {\n Gleap.startProductTour(tourId);\n }, tourDelay * 1000);\n }\n } catch (exp) {}\n }\n\n /**\n * Destroy\n * @returns\n */\n static destroy() {\n GleapReplayRecorder.getInstance().stop();\n GleapStreamedEvent.getInstance().stop();\n GleapFrameManager.getInstance().destroy();\n GleapFeedbackButtonManager.getInstance().destroy();\n GleapNotificationManager.getInstance().clearAllNotifications(true);\n GleapSession.getInstance().clearSession(0, false);\n GleapBannerManager.getInstance().removeBannerUI();\n\n // Reset the initialized flag and clear the instance\n this.instance = null;\n }\n\n /**\n * Close any open banner.\n */\n static closeBanner() {\n GleapBannerManager.getInstance().removeBannerUI();\n }\n\n /**\n * Close any open modal.\n */\n static closeModal() {\n GleapModalManager.getInstance().hideModal();\n }\n\n /**\n * Enable or disable Gleap session tracking through cookies.\n * @param {*} useCookies\n */\n static setUseCookies(useCookies) {\n GleapSession.getInstance().useCookies = useCookies;\n }\n\n /**\n * Indentifies the user session\n * @param {string} userId\n * @param {*} userData\n */\n static identify(userId, userData, userHash) {\n return GleapSession.getInstance().identifySession(\n userId,\n gleapDataParser(userData),\n userHash\n );\n }\n\n /**\n * Updates the contact data.\n * @param {*} userData\n */\n static updateContact(userData) {\n return GleapSession.getInstance().updateSession(gleapDataParser(userData));\n }\n\n /**\n * Clears the current contact.\n */\n static clearIdentity() {\n GleapSession.getInstance().clearSession();\n }\n\n /**\n * Returns the current user session\n */\n static getIdentity() {\n return GleapSession.getInstance().getSession();\n }\n\n /**\n * Returns whether the user is identified or not.\n */\n static isUserIdentified() {\n const session = GleapSession.getInstance().session;\n if (session && session.userId && session.userId.length > 0) {\n return true;\n }\n return false;\n }\n\n /**\n * Widget opened status\n * @returns {boolean} isOpened\n */\n static isOpened() {\n return GleapFrameManager.getInstance().isOpened();\n }\n\n /**\n * Hides any open Gleap dialogs.\n */\n static hide() {\n GleapFrameManager.getInstance().hideWidget();\n }\n\n /**\n * Sets the maximum network request count.\n */\n static setMaxNetworkRequests(maxRequests) {\n GleapNetworkIntercepter.getInstance().setMaxRequests(maxRequests);\n }\n\n /**\n * Sets the maximum network request count.\n */\n static startNetworkLogger() {\n GleapNetworkIntercepter.getInstance().start();\n }\n\n /**\n * Sets the network logger blacklist.\n * @param {Array} networkLogBlacklist\n */\n static setNetworkLogsBlacklist(networkLogBlacklist) {\n GleapNetworkIntercepter.getInstance().setBlacklist(networkLogBlacklist);\n }\n\n /**\n * Sets the network logger props to ignore.\n * @param {Array} filters\n */\n static setNetworkLogPropsToIgnore(filters) {\n GleapNetworkIntercepter.getInstance().setFilters(filters);\n }\n\n /**\n * Set custom replay options.\n * @param {*} options\n */\n static setReplayOptions(options) {\n GleapReplayRecorder.getInstance().setOptions(options);\n }\n\n /**\n * Closes any open Gleap dialogs.\n * @param {boolean} resetRoutes\n */\n static close(resetRoutes = false) {\n GleapFrameManager.getInstance().hideWidget(resetRoutes);\n }\n\n /**\n * Starts the Gleap flow.\n */\n static open() {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Track a custom event\n * @param {string} name\n * @param {any} data\n */\n static trackEvent(name, data) {\n GleapStreamedEvent.getInstance().logEvent(name, data);\n }\n\n /**\n * Logs a custom event\n * @param {string} name\n * @param {any} data\n * @deprecated Please use trackEvent instead.\n */\n static logEvent(name, data) {\n GleapStreamedEvent.getInstance().logEvent(name, data);\n }\n\n /**\n * Prefills a specific form field.\n * @param {*} key\n * @param {*} value\n */\n static preFillForm(data) {\n const cleanedData = gleapDataParser(data);\n GleapPreFillManager.getInstance().formPreFill = cleanedData;\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"prefill-form-data\",\n data: cleanedData,\n },\n true\n );\n }\n\n /**\n * Register events for Gleap.\n * @param {*} eventName\n * @param {*} callback\n */\n static on(eventName, callback) {\n GleapEventManager.on(eventName, callback);\n }\n\n /**\n * Enable or disable shortcuts\n * @param {boolean} enabled\n */\n static enableShortcuts(enabled) {\n if (enabled) {\n GleapShortcutListener.getInstance().start();\n } else {\n GleapShortcutListener.getInstance().stop();\n }\n }\n\n /**\n * Show or hide the feedback button\n * @param {*} show\n * @returns\n */\n static showFeedbackButton(show) {\n GleapFeedbackButtonManager.getInstance().toggleFeedbackButton(show);\n }\n\n /**\n * Sets the app version code.\n * @param {string} appVersionCode\n */\n static setAppVersionCode(appVersionCode) {\n GleapMetaDataManager.setAppVersionCode(appVersionCode);\n }\n\n /**\n * Sets the app version code.\n * @param {string} appVersionCode\n */\n static setAppBuildNumber(appBuildNumber) {\n GleapMetaDataManager.setAppBuildNumber(appBuildNumber);\n }\n\n /**\n * Set a custom ws api url.\n * @param {string} wsApiUrl\n */\n static setWSApiUrl(wsApiUrl) {\n GleapSession.getInstance().wsApiUrl = wsApiUrl;\n }\n\n /**\n * Set a custom api url.\n * @param {string} apiUrl\n */\n static setApiUrl(apiUrl) {\n GleapSession.getInstance().apiUrl = apiUrl;\n }\n\n /**\n * Set a custom banner url.\n * @param {string} bannerUrl\n */\n static setBannerUrl(bannerUrl) {\n GleapBannerManager.getInstance().setBannerUrl(bannerUrl);\n }\n\n /**\n * Set a custom modal url.\n * @param {string} modalUrl\n */\n static setModalUrl(modalUrl) {\n GleapModalManager.getInstance().setModalUrl(modalUrl);\n }\n\n /**\n * Set a custom frame api url.\n * @param {string} frameUrl\n */\n static setFrameUrl(frameUrl) {\n GleapFrameManager.getInstance().frameUrl = frameUrl;\n }\n\n /**\n * This method is used to set ticket attributes programmatically.\n * @param {*} key The key of the attribute you want to add.\n * @param {*} value The value to set.\n */\n static setTicketAttribute(key, value) {\n GleapCustomDataManager.getInstance().setTicketAttribute(key, value);\n }\n\n /**\n * This method is used to unset ticket attributes programmatically.\n * @param {*} key The key of the attribute you want to unset.\n */\n static unsetTicketAttribute(key) {\n GleapCustomDataManager.getInstance().unsetTicketAttribute(key);\n }\n\n /**\n * This method is used to clear ticket attributes programmatically.\n */\n static clearTicketAttributes() {\n GleapCustomDataManager.getInstance().clearTicketAttributes();\n }\n\n /**\n * Set custom data that will be attached to the bug-report.\n * @param {*} data\n */\n static attachCustomData(data) {\n GleapCustomDataManager.getInstance().attachCustomData(data);\n }\n\n /**\n * Add one key value pair to the custom data object\n * @param {*} key The key of the custom data entry you want to add.\n * @param {*} value The custom data you want to add.\n */\n static setCustomData(key, value) {\n GleapCustomDataManager.getInstance().setCustomData(key, value);\n }\n\n /**\n * Remove one key value pair of the custom data object\n * @param {*} key The key of the custom data entry you want to remove.\n */\n static removeCustomData(key) {\n GleapCustomDataManager.getInstance().removeCustomData(key);\n }\n\n /**\n * Clear the custom data\n */\n static clearCustomData() {\n GleapCustomDataManager.getInstance().clearCustomData();\n }\n\n /**\n * Play or mute the sound.\n * @param {*} play\n */\n static playSound(play) {\n GleapAudioManager.playSound(play);\n }\n\n /**\n * Show or hide the notification badge count.\n * @param {boolean} showNotificationBadge show or hide the notification badge\n *\n */\n static showTabNotificationBadge(showNotificationBadge) {\n const notificationInstance = GleapNotificationManager.getInstance();\n notificationInstance.showNotificationBadge = showNotificationBadge;\n notificationInstance.updateTabBarNotificationCount();\n }\n\n /**\n * Override the browser language.\n * @param {string} language country code with two letters\n */\n static setLanguage(language) {\n GleapTranslationManager.getInstance().setOverrideLanguage(language);\n\n if (Gleap.getInstance().initialized) {\n setTimeout(() => {\n Gleap.getInstance().softReInitialize();\n\n // Update language for contact.\n Gleap.updateContact({\n lang: language,\n });\n }, 1000);\n }\n }\n\n /**\n * Register custom action\n * @param {*} action\n */\n static registerCustomAction(customAction) {\n GleapCustomActionManager.registerCustomAction(customAction);\n }\n\n /**\n * Triggers a custom action\n * @param {*} actionName\n */\n static triggerCustomAction(name) {\n GleapCustomActionManager.triggerCustomAction(name);\n }\n\n /**\n * Sets a custom color scheme.\n * @param {string} primaryColor\n */\n static setStyles(\n primaryColor,\n headerColor,\n buttonColor,\n backgroundColor = \"#ffffff\",\n borderRadius = 20,\n buttonX = 20,\n buttonY = 20,\n buttonStyle = GleapFeedbackButtonManager.FEEDBACK_BUTTON_BOTTOM_LEFT\n ) {\n runFunctionWhenDomIsReady(() => {\n injectStyledCSS(\n primaryColor,\n headerColor,\n buttonColor,\n borderRadius,\n backgroundColor,\n buttonX,\n buttonY,\n buttonStyle\n );\n });\n }\n\n /**\n * Sends a silent feedback report\n * @param {*} formData\n * @param {*} priority\n * @param {*} excludeData\n */\n static sendSilentCrashReport(\n description = \"\",\n priority = \"MEDIUM\",\n excludeData = {\n screenshot: true,\n replays: true,\n attachments: true,\n }\n ) {\n return Gleap.sendSilentCrashReportWithFormData(\n {\n description,\n },\n priority,\n excludeData\n );\n }\n\n /**\n * Sends a silent feedback report\n * @param {*} formData\n * @param {*} priority\n * @param {*} excludeData\n */\n static sendSilentCrashReportWithFormData(\n formData,\n priority = \"MEDIUM\",\n excludeData = {\n screenshot: true,\n replays: true,\n attachments: true,\n }\n ) {\n if (this.silentCrashReportSent) {\n return;\n }\n\n this.silentCrashReportSent = true;\n setTimeout(() => {\n this.silentCrashReportSent = false;\n }, 10000);\n\n const excludeDataCleaned = excludeData ? gleapDataParser(excludeData) : {};\n const sessionInstance = GleapSession.getInstance();\n if (!sessionInstance.ready) {\n return;\n }\n\n var newFormData = formData ? formData : {};\n if (sessionInstance.session.email) {\n newFormData.reportedBy = sessionInstance.session.email;\n }\n\n const feedback = new GleapFeedback(\n \"CRASH\",\n priority,\n newFormData,\n true,\n excludeDataCleaned\n );\n feedback\n .sendFeedback()\n .then(() => {})\n .catch((error) => {});\n }\n\n /**\n * Shows a survey manually.\n * @param {*} actionType\n * @param {*} format\n */\n static showSurvey(actionType, format = \"survey\") {\n Gleap.startFeedbackFlowWithOptions(\n actionType,\n {\n hideBackButton: true,\n format,\n },\n true\n );\n }\n\n /**\n * Starts a classic feedback form.\n */\n static startClassicForm(formId, showBackButton) {\n Gleap.startFeedbackFlowWithOptions(formId, {\n hideBackButton: !showBackButton,\n });\n }\n\n /**\n * Starts the bug reporting flow.\n */\n static startFeedbackFlow(feedbackFlow, showBackButton) {\n Gleap.startFeedbackFlowWithOptions(feedbackFlow, {\n hideBackButton: !showBackButton,\n });\n }\n\n /**\n * Starts the bug reporting flow.\n */\n static startFeedbackFlowWithOptions(\n feedbackFlow,\n options = {},\n isSurvey = false\n ) {\n const { autostartDrawing, hideBackButton, format } = options;\n const sessionInstance = GleapSession.getInstance();\n if (!sessionInstance.ready) {\n return;\n }\n\n // Initially set scroll position\n Gleap.getInstance().setGlobalDataItem(\"snapshotPosition\", {\n x: window.scrollX,\n y: window.scrollY,\n });\n\n var action = \"start-feedbackflow\";\n if (isSurvey) {\n action = \"start-survey\";\n }\n\n GleapFrameManager.getInstance().setAppMode(isSurvey ? format : \"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: action,\n data: {\n flow: feedbackFlow,\n hideBackButton: hideBackButton,\n format,\n },\n },\n true\n );\n\n if (autostartDrawing) {\n GleapFrameManager.getInstance().showDrawingScreen(\"screenshot\");\n } else {\n GleapFrameManager.getInstance().showWidget();\n }\n }\n\n /**\n * Opens the conversations overview.\n */\n static openConversations(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-conversations\",\n data: {\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens a conversation\n */\n static openConversation(shareToken, showBackButton = true) {\n if (!shareToken) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-conversation\",\n data: {\n shareToken,\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Starts a new conversation\n */\n static startConversation(showBackButton = true) {\n Gleap.startBot(\"\", showBackButton);\n }\n\n /**\n * Starts a new conversation and attaches the bot with the given id.\n */\n static startBot(botId, showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"start-bot\",\n data: {\n botId: botId ? botId : \"\",\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens a help center collection\n */\n static openHelpCenterCollection(collectionId, showBackButton = true) {\n if (!collectionId) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-help-collection\",\n data: {\n collectionId,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens a help article\n */\n static openHelpCenterArticle(articleId, showBackButton = true) {\n if (!articleId) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-help-article\",\n data: {\n articleId,\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens the help center.\n */\n static openHelpCenter(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-helpcenter\",\n data: {\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Search for news articles in the help center\n */\n static searchHelpCenter(term, showBackButton = true) {\n if (!term) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-helpcenter-search\",\n data: {\n term,\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens a news article\n */\n static openNewsArticle(id, showBackButton = true) {\n if (!id) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-news-article\",\n data: {\n id,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Open the checklists overview.\n */\n static openChecklists(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-checklists\",\n data: {},\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Starts a new checklist and opens it.\n */\n static startChecklist(\n outboundId,\n showBackButton = true,\n sharedKey = undefined\n ) {\n if (!outboundId) {\n return false;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"start-checklist\",\n data: {\n outboundId: outboundId,\n hideBackButton: !showBackButton,\n ...(sharedKey ? { sharedKey: sharedKey } : {}),\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n\n return true;\n }\n\n /**\n * Open an existing checklist.\n */\n static openChecklist(checklistId, showBackButton = true) {\n if (!checklistId) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-checklist\",\n data: {\n id: checklistId,\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Gets the full checklist data by validating the outbound ID and fetching the data.\n * @param {string} outboundId - The outbound checklist ID to get data for.\n * @param {string} [sharedKey] - Optional shared key for the checklist.\n * @returns {Promise} A promise that resolves with the full checklist data.\n *\n * Available events for checklist updates (use Gleap.on() to listen):\n * - 'checklist-loaded': Fired when a checklist is initially loaded\n * - 'checklist-update': Fired when checklist data is updated\n * - 'checklist-step-completed': Fired when a step is marked as completed\n * - 'checklist-completed': Fired when the entire checklist is completed\n */\n static getChecklistData(outboundId, sharedKey) {\n if (!outboundId) {\n return Promise.reject(new Error(\"outboundId is required\"));\n }\n\n const networkManager = ChecklistNetworkManager.getInstance();\n\n // First validate the checklist to get the internal ID\n return networkManager\n .validateChecklist(outboundId, sharedKey)\n .then((internalId) => {\n // Then fetch the full checklist data\n return networkManager.fetchChecklist(internalId);\n });\n }\n\n /**\n * Opens the news overview.\n */\n static openNews(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-news\",\n data: {\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens the feature requests overview.\n */\n static openFeatureRequests(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-feature-requests\",\n data: {},\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n isLiveMode() {\n if (this.offlineMode === true) {\n return false;\n }\n\n var hostname = window.location.hostname;\n const isLocalHost =\n [\"localhost\", \"127.0.0.1\", \"0.0.0.0\", \"\", \"::1\"].includes(hostname) ||\n hostname.startsWith(\"192.168.\") ||\n hostname.startsWith(\"10.0.\") ||\n hostname.endsWith(\".local\") ||\n !hostname.includes(\".\");\n return !isLocalHost;\n }\n\n softReInitialize() {\n GleapFrameManager.getInstance().destroy();\n GleapConfigManager.getInstance()\n .start()\n .then(() => {\n // Update the feedback button.\n GleapFeedbackButtonManager.getInstance().refresh();\n\n // Inject the notification container\n GleapNotificationManager.getInstance().injectNotificationUI();\n })\n .catch(function (err) {\n console.warn(\"Failed to initialize Gleap.\");\n });\n }\n\n /**\n * Performs an action.\n * @param {*} action\n */\n performActions(actions) {\n for (let i = 0; i < actions.length; i++) {\n const action = actions[i];\n if (action && action.actionType) {\n if (action.pageFilter && window && window.location) {\n const passed = checkPageFilter(\n window.location.href,\n action.pageFilter,\n action.pageFilterType\n );\n\n if (!passed) {\n continue;\n }\n }\n\n if (action.actionType === \"notification\") {\n if (action?.data?.checklist?.popupType === \"widget\") {\n Gleap.openChecklist(action.data.checklist.id, true);\n } else {\n if (!this.disableInAppNotifications) {\n Gleap.showNotification(action);\n }\n }\n } else if (action.actionType === \"banner\") {\n Gleap.showBanner(action);\n } else if (action.actionType === \"modal\") {\n Gleap.showModal(action);\n } else if (action.actionType === \"tour\") {\n Gleap.startProductTourWithConfig(action.outbound, action.data, false);\n } else {\n Gleap.showSurvey(action.actionType, action.format);\n }\n }\n }\n }\n\n static startProductTour(tourId, checkStartUrl = false) {\n const self = this;\n GleapSession.getInstance()\n .startProductTourConfig(tourId)\n .then((config) => {\n if (\n checkStartUrl &&\n config?.startURL &&\n !window?.location?.href?.includes(config?.baseURL)\n ) {\n window.location.href = `${config.startURL}?gleap_tour=${tourId}&gleap_tour_delay=1`;\n return;\n }\n\n self.startProductTourWithConfig(tourId, config, true);\n })\n .catch((error) => {});\n }\n\n static checkForUncompletedTour() {\n const tourData = GleapProductTours.getInstance().loadUncompletedTour();\n if (tourData) {\n GleapProductTours.getInstance().startWithConfig(\n tourData.tourId,\n tourData.tourData,\n 500\n );\n }\n }\n\n static startProductTourWithConfig(tourId, config, manually = false) {\n GleapProductTours.getInstance().startWithConfig(\n tourId,\n config,\n 0,\n manually\n );\n }\n\n static showBanner(data) {\n try {\n GleapBannerManager.getInstance().showBanner(data);\n } catch (e) {}\n }\n\n static showModal(data) {\n try {\n GleapModalManager.getInstance().showModal(data);\n } catch (e) {}\n }\n\n static showNotification(data) {\n GleapNotificationManager.getInstance().showNotification(data);\n }\n\n /**\n * Sets a global data value\n * @param {*} key\n * @param {*} value\n */\n setGlobalDataItem(key, value) {\n this.globalData[key] = value;\n }\n\n /**\n * Gets a global data value\n * @param {*} key\n * @returns\n */\n getGlobalDataItem(key) {\n return this.globalData[key];\n }\n\n /**\n * Takes the current replay and assigns it to the global data array.\n */\n takeCurrentReplay() {\n const replayData = GleapReplayRecorder.getInstance().getReplayData();\n this.setGlobalDataItem(\"webReplay\", replayData);\n }\n}\n\n// Check for unperformed Gleap actions.\nif (typeof window !== \"undefined\") {\n const GleapActions = window.GleapActions;\n if (GleapActions && GleapActions.length > 0) {\n for (var i = 0; i < GleapActions.length; i++) {\n const GLAction = GleapActions[i];\n if (GLAction && GLAction.e && Gleap[GLAction.e]) {\n Gleap[GLAction.e].apply(Gleap, GLAction.a);\n }\n }\n }\n}\n\nconst handleGleapLink = (href) => {\n try {\n const urlParts = href.split(\"/\");\n const type = urlParts[2];\n if (type === \"article\") {\n const identifier = urlParts[3];\n Gleap.openHelpCenterArticle(identifier, true);\n }\n\n if (type === \"collection\") {\n const identifier = urlParts[3];\n Gleap.openHelpCenterCollection(identifier, true);\n }\n\n if (type === \"flow\") {\n const identifier = urlParts[3];\n Gleap.startFeedbackFlow(identifier, true);\n }\n\n if (type === \"survey\") {\n const identifier = urlParts[3];\n Gleap.showSurvey(identifier);\n }\n\n if (type === \"bot\") {\n const identifier = urlParts[3];\n Gleap.startBot(identifier, true);\n }\n\n if (type === \"news\") {\n const identifier = urlParts[3];\n Gleap.openNewsArticle(identifier, true);\n }\n\n if (type === \"checklist\") {\n const identifier = urlParts[3];\n Gleap.startChecklist(identifier, true, urlParts[4]);\n }\n\n if (type === \"tour\") {\n const identifier = urlParts[3];\n Gleap.startProductTour(identifier);\n }\n } catch (e) {\n console.error(\"Failed to handle Gleap link: \", href);\n }\n};\n\nexport {\n GleapNetworkIntercepter,\n GleapAudioManager,\n GleapNotificationManager,\n GleapBannerManager,\n GleapModalManager,\n GleapPreFillManager,\n GleapShortcutListener,\n GleapMarkerManager,\n GleapTranslationManager,\n GleapReplayRecorder,\n GleapFeedback,\n GleapConsoleLogManager,\n GleapCustomActionManager,\n GleapEventManager,\n GleapCustomDataManager,\n GleapFeedbackButtonManager,\n GleapClickListener,\n GleapSession,\n GleapStreamedEvent,\n GleapConfigManager,\n GleapFrameManager,\n GleapMetaDataManager,\n GleapTagManager,\n GleapProductTours,\n handleGleapLink,\n};\n\nexport default Gleap;\n","/**\n * Gleap Checklist Web Component\n *\n * Displays an interactive checklist fetched from the Gleap API.\n * Allows users to view steps, mark them as done, trigger actions,\n * and automatically updates based on external events. Includes localization support\n * via GleapTranslationManager.\n *\n * Waits for a Gleap session to be available before initializing and\n * reloads when the session changes (via 'session-updated' event).\n *\n * @element gleap-checklist\n *\n * @attr {string} checklistId - The outbound ID of the checklist to display. Required.\n * @attr {boolean} [info=true] - Whether to display the info section (title, description, sender).\n * @attr {boolean} [progressbar=true] - Whether to display the progress bar.\n * @attr {boolean} [dark=false] - Apply dark mode styling.\n * @attr {boolean} [floating=false] - When set to \"true\", shows a small bubble that expands on click.\n *\n * @cssprop --color-bg - Background color.\n * @cssprop --color-font-title - Title text color.\n * @cssprop --color-font-text - Body text color.\n * @cssprop --color-font-light - Lighter text color.\n * @cssprop --color-primary - Primary accent color.\n * @cssprop --color-primary-light - Light primary color shade.\n * @cssprop --color-primary-contrast - Text color for primary buttons.\n * @cssprop --color-border - Border color.\n * @cssprop --color-gray-light - Light gray background/border color.\n * @cssprop --color-gray-lighter - Even lighter gray background.\n * @cssprop --color-gray-dark - Darker gray text/icon color.\n * @cssprop --color-success - Success color (e.g., for completed items).\n * @cssprop --color-success-light - Contrast color for success elements.\n * @cssprop --radius-sm - Small border radius.\n * @cssprop --radius-lg - Large border radius.\n * @cssprop --radius-full - Full (pill) border radius.\n * @cssprop --shadow-sm - Small box shadow.\n * @cssprop --shadow-md - Medium box shadow.\n * @cssprop --animation-duration - Duration for animations (e.g., accordion).\n * @cssprop --animation-timing - Timing function for animations.\n */\nimport ChecklistNetworkManager from \"./ChecklistNetworkManager\";\nimport Gleap, {\n GleapConfigManager,\n GleapSession,\n GleapTranslationManager,\n GleapEventManager,\n} from \"./Gleap\";\n\nexport const registerGleapChecklist = () => {\n if (\n typeof customElements !== \"undefined\" &&\n typeof HTMLElement !== \"undefined\" &&\n typeof window !== \"undefined\"\n ) {\n class GleapChecklist extends HTMLElement {\n /** @private {number} */\n activeStep = -1;\n /** @private {object|null} */\n checklistData = null;\n /** @private {boolean} */\n _isInitialLoad = false;\n /** @private {boolean} */\n _initialActiveSet = false;\n /** @private {boolean} Flag indicating if the component has loaded data at least once. */\n _hasLoaded = false;\n /** @private {boolean} Flag indicating if a Gleap session is currently considered active by the component. */\n _isSessionReady = false;\n\n /** @private {Function} */\n _boundHandleChecklistUpdate = this.handleChecklistUpdate.bind(this);\n /** @private {Function} */\n _boundHandleSessionUpdate = this.handleSessionUpdate.bind(this);\n\n constructor() {\n super();\n this.attachShadow({ mode: \"open\" });\n // Ensure NetworkManager instance is created only if Gleap is available\n try {\n if (\n typeof GleapSession !== \"undefined\" &&\n typeof ChecklistNetworkManager !== \"undefined\"\n ) {\n this._networkManager = ChecklistNetworkManager.getInstance();\n } else {\n this._networkManager = null;\n }\n } catch (e) {\n this._networkManager = null;\n }\n // Bind click handlers for floating mode.\n this._boundFloatingLauncherClick =\n this.handleFloatingLauncherClick.bind(this);\n this._boundFloatingCloseClick =\n this.handleFloatingCloseClick.bind(this);\n this._floatingHideTimeout = null;\n }\n\n // --- Observed Attributes ---\n static get observedAttributes() {\n return [\n \"checklistId\",\n \"info\",\n \"progressbar\",\n \"dark\",\n \"floating\",\n \"sharedKey\",\n ];\n }\n\n // --- Lifecycle Callbacks ---\n connectedCallback() {\n window.addEventListener(\n \"checkListUpdate\",\n this._boundHandleChecklistUpdate\n );\n window.addEventListener(\n \"session-updated\",\n this._boundHandleSessionUpdate\n );\n window.addEventListener(\n \"resize\",\n (this._boundResizeHandler = this.handleResize.bind(this))\n );\n this._checkSessionAndLoad();\n }\n\n disconnectedCallback() {\n window.removeEventListener(\n \"checkListUpdate\",\n this._boundHandleChecklistUpdate\n );\n window.removeEventListener(\n \"session-updated\",\n this._boundHandleSessionUpdate\n );\n window.removeEventListener(\"resize\", this._boundResizeHandler);\n this.removeFloatingClickListeners();\n if (this._floatingHideTimeout) {\n clearTimeout(this._floatingHideTimeout);\n this._floatingHideTimeout = null;\n }\n this.checklistData = null;\n this.activeStep = -1;\n this._hasLoaded = false;\n this._isSessionReady = false;\n this._initialActiveSet = false;\n this.renderResponse();\n }\n\n handleResize() {\n this.updateActiveTaskMaxHeight();\n }\n\n attributeChangedCallback(name, oldValue, newValue) {\n if (oldValue !== newValue) {\n if (name === \"checklistId\" && this._isSessionReady) {\n this.loadChecklist();\n } else if (name !== \"checklistId\" && this._hasLoaded) {\n if (this.checklistData) {\n this.renderChecklist(this.checklistData);\n }\n }\n }\n }\n\n // --- Session Handling ---\n _checkSessionAndLoad() {\n const gleapSessionInstance = this._getGleapSessionInstance();\n const hasChecklistId = this.getAttribute(\"checklistId\");\n\n if (gleapSessionInstance.ready && hasChecklistId) {\n this._isSessionReady = true;\n this._networkManager = ChecklistNetworkManager.getInstance();\n this.loadChecklist();\n } else {\n this._isSessionReady = false;\n this._hasLoaded = false;\n this.checklistData = null;\n this.activeStep = -1;\n this._initialActiveSet = false;\n this.renderResponse();\n }\n }\n\n handleSessionUpdate() {\n this._checkSessionAndLoad();\n }\n\n _getGleapSessionInstance() {\n try {\n return typeof GleapSession !== \"undefined\"\n ? GleapSession.getInstance()\n : null;\n } catch (e) {\n return null;\n }\n }\n\n // --- Getters for Configuration ---\n get infoEnabled() {\n const attr = this.getAttribute(\"info\");\n return attr === null || attr.toLowerCase() !== \"false\";\n }\n\n get progressbarEnabled() {\n const attr = this.getAttribute(\"progressbar\");\n return attr === null || attr.toLowerCase() !== \"false\";\n }\n\n get floatingEnabled() {\n return this.getAttribute(\"floating\") === \"true\";\n }\n\n // --- Translation Helpers ---\n _translate(key, defaultValue = \"\") {\n return GleapTranslationManager.translateText(key) || defaultValue;\n }\n\n _translateWithVars(key, vars, defaultValue = \"\") {\n return (\n GleapTranslationManager.translateTextWithVars(key, vars) ||\n defaultValue\n );\n }\n\n // --- SVG Icons ---\n getCheckIcon() {\n return `\n \n `;\n }\n\n // --- Data Loading and Handling ---\n loadChecklist() {\n if (!this._isSessionReady || !this._networkManager) {\n return;\n }\n const checklistId = this.getAttribute(\"checklistId\");\n if (checklistId) {\n this.activeStep = -1;\n this._initialActiveSet = false;\n this.validateChecklist(checklistId);\n } else {\n this.renderResponse();\n this.checklistData = null;\n this._hasLoaded = false;\n }\n }\n\n getQueryParams() {\n const gleapSessionInstance = this._getGleapSessionInstance();\n if (!gleapSessionInstance?.session) {\n return \"\";\n }\n const session = gleapSessionInstance.session;\n let lang = \"en\";\n try {\n if (typeof GleapTranslationManager !== \"undefined\") {\n lang =\n GleapTranslationManager.getInstance().getActiveLanguage() || \"en\";\n }\n } catch (e) {}\n return `gleapId=${session.gleapId || \"\"}&gleapHash=${\n session.gleapHash || \"\"\n }&lang=${lang}`;\n }\n\n makeRequest(method, url, data, callback) {\n const gleapSessionInstance = this._getGleapSessionInstance();\n if (!gleapSessionInstance?.session) {\n const mockXhr = {\n readyState: 4,\n status: 0,\n responseText: \"Session unavailable\",\n _isMock: true,\n };\n callback(mockXhr);\n return;\n }\n const xhr = new XMLHttpRequest();\n xhr.open(method, url);\n try {\n gleapSessionInstance.injectSession(xhr);\n } catch (e) {}\n if (data) {\n xhr.setRequestHeader(\n \"Content-Type\",\n \"application/json;charset=UTF-8\"\n );\n }\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n callback(xhr);\n }\n };\n xhr.onerror = () => {\n callback(xhr);\n };\n xhr.send(data ? JSON.stringify(data) : null);\n }\n\n validateChecklist(outboundId) {\n if (!this._isSessionReady || !this._networkManager) {\n return;\n }\n this.checklistData = null;\n this._hasLoaded = false;\n this.renderResponse();\n const sharedKey = this.getAttribute(\"sharedKey\");\n\n this._networkManager\n .validateChecklist(outboundId, sharedKey)\n .then((internalId) => {\n if (!this.isConnected || !this._isSessionReady || !internalId) {\n return;\n }\n this.fetchChecklist(internalId);\n })\n .catch((error) => {\n this.renderResponse();\n this.checklistData = null;\n this._hasLoaded = false;\n });\n }\n\n fetchChecklist(checklistId) {\n if (!this._isSessionReady || !this._networkManager) {\n return;\n }\n this._isInitialLoad = !this._hasLoaded;\n this._networkManager\n .fetchChecklist(checklistId)\n .then((data) => {\n if (!this.isConnected || !this._isSessionReady || !data) {\n this._hasLoaded = false;\n this.checklistData = null;\n this._checkSessionAndLoad();\n return;\n }\n this.checklistData = data;\n this._hasLoaded = true;\n if (data.status === \"done\") {\n this.renderResponse();\n return;\n }\n if (this._isInitialLoad && !this._initialActiveSet) {\n const steps = data.outbound?.config?.steps || [];\n const completedSteps = data.completedSteps || [];\n const firstIncompleteIndex = steps.findIndex(\n (step) => !completedSteps.includes(step.id)\n );\n this.activeStep =\n firstIncompleteIndex >= 0 ? firstIncompleteIndex : -1;\n if (this.activeStep !== -1) {\n this._initialActiveSet = true;\n }\n }\n this.renderChecklist(this.checklistData);\n \n // Notify external listeners about the initial checklist load\n GleapEventManager.notifyEvent(\"checklist-loaded\", {\n checklistId: this.checklistData.id,\n outboundId: this.checklistData.outbound?.id,\n completedSteps: this.checklistData.completedSteps,\n status: this.checklistData.status,\n data: this.checklistData\n });\n })\n .catch((error) => {\n this.renderResponse();\n this.checklistData = null;\n this._hasLoaded = false;\n });\n }\n\n updateChecklist(id, data) {\n const gleapSessionInstance = this._getGleapSessionInstance();\n if (!gleapSessionInstance?.session) {\n return;\n }\n const apiUrl = gleapSessionInstance.apiUrl;\n if (!apiUrl) {\n return;\n }\n const session = gleapSessionInstance.session;\n const gleapId = session?.gleapId ?? \"\";\n const gleapHash = session?.gleapHash ?? \"\";\n let lang = \"en\";\n try {\n if (typeof GleapTranslationManager !== \"undefined\") {\n lang =\n GleapTranslationManager.getInstance().getActiveLanguage() || \"en\";\n }\n } catch (e) {}\n let url = `${apiUrl}/outbound/checklists/${id}`;\n if (data.checkedStep) {\n url += `/increment/${data.checkedStep}`;\n }\n url += `?gleapId=${gleapId}&gleapHash=${gleapHash}&lang=${lang}`;\n this.makeRequest(\"PUT\", url, data, (xhr) => {\n if (xhr._isMock) return;\n if (!(xhr.status === 200 || xhr.status === 204)) {\n // Update failed\n }\n });\n }\n\n // --- External Update Handling ---\n handleChecklistUpdate(event) {\n if (!this._hasLoaded || !this.checklistData) {\n return;\n }\n const updateData = event.detail;\n if (!updateData || updateData.id !== this.checklistData.id) {\n return;\n }\n const previousCompletedSteps = [\n ...(this.checklistData.completedSteps || []),\n ];\n let dataChanged = false;\n let activeStepCompleted = false;\n const currentlyActiveStepIndex = this.activeStep;\n if (\n updateData.completedSteps &&\n JSON.stringify(updateData.completedSteps) !==\n JSON.stringify(previousCompletedSteps)\n ) {\n this.checklistData.completedSteps = [...updateData.completedSteps];\n dataChanged = true;\n if (currentlyActiveStepIndex !== -1) {\n const activeStepId =\n this.checklistData.outbound?.config?.steps?.[\n currentlyActiveStepIndex\n ]?.id;\n if (\n activeStepId &&\n this.checklistData.completedSteps.includes(activeStepId) &&\n !previousCompletedSteps.includes(activeStepId)\n ) {\n activeStepCompleted = true;\n }\n }\n }\n if (\n updateData.status &&\n updateData.status !== this.checklistData.status\n ) {\n this.checklistData.status = updateData.status;\n dataChanged = true;\n }\n if (activeStepCompleted) {\n const steps = this.checklistData.outbound?.config?.steps || [];\n let nextActiveStep = -1;\n for (let i = currentlyActiveStepIndex + 1; i < steps.length; i++) {\n if (!this.checklistData.completedSteps.includes(steps[i].id)) {\n nextActiveStep = i;\n break;\n }\n }\n if (this.activeStep !== nextActiveStep) {\n this.setActiveStep(nextActiveStep);\n }\n dataChanged = true;\n }\n if (dataChanged) {\n this.renderChecklist(this.checklistData);\n \n // Notify external listeners about the checklist update\n GleapEventManager.notifyEvent(\"checklist-update\", {\n checklistId: this.checklistData.id,\n outboundId: this.checklistData.outbound?.id,\n completedSteps: this.checklistData.completedSteps,\n status: this.checklistData.status,\n data: this.checklistData\n });\n }\n }\n\n // --- Floating (Click-based) Listeners ---\n handleFloatingLauncherClick(event) {\n event.stopPropagation();\n\n if (this.checklistData.status === \"done\") {\n return;\n }\n\n const tasks = this.shadowRoot.querySelector(\".checklist-tasks\");\n if (tasks) {\n tasks.style.display =\n tasks.style.display === \"block\" ? \"none\" : \"block\";\n }\n }\n\n handleFloatingCloseClick(event) {\n event.stopPropagation();\n const tasks = this.shadowRoot.querySelector(\".checklist-tasks\");\n if (tasks) {\n tasks.style.display = \"none\";\n }\n }\n\n addFloatingClickListeners() {\n const launcher = this.shadowRoot.querySelector(\n \".checklist-floating-launcher\"\n );\n if (launcher) {\n launcher.addEventListener(\"click\", this._boundFloatingLauncherClick);\n }\n const header = this.shadowRoot.querySelector(\n \".checklist-floating-header\"\n );\n if (header) {\n header.addEventListener(\"click\", this._boundFloatingCloseClick);\n }\n }\n\n removeFloatingClickListeners() {\n const launcher = this.shadowRoot.querySelector(\n \".checklist-floating-launcher\"\n );\n if (launcher) {\n launcher.removeEventListener(\n \"click\",\n this._boundFloatingLauncherClick\n );\n }\n const header = this.shadowRoot.querySelector(\n \".checklist-floating-header\"\n );\n if (header) {\n header.removeEventListener(\"click\", this._boundFloatingCloseClick);\n }\n }\n\n // --- Rendering Logic ---\n renderResponse() {\n this.shadowRoot.innerHTML = \"\";\n }\n\n /**\n * Renders the floating launcher. When called with the default class (\"checklist-floating\")\n * it shows a chevron icon; when called with \"checklist-floating-header\" it shows a close icon.\n */\n renderFloatingLauncher(\n outbound,\n className = \"checklist-floating\",\n renderDoneState = false\n ) {\n const steps = outbound.config?.steps || [];\n const completedSteps = this.checklistData?.completedSteps || [];\n let progress = 0;\n if (this.progressbarEnabled && steps.length > 0) {\n const totalSteps = steps.length;\n const doneSteps = completedSteps.length;\n progress = totalSteps > 0 ? (doneSteps / totalSteps) * 100 : 0;\n }\n\n // Determine the next incomplete step\n const nextIncompleteStep = steps.find(\n (step) => !completedSteps.includes(step.id)\n );\n let titleText =\n steps.length > 0\n ? nextIncompleteStep\n ? nextIncompleteStep.title ||\n this._translateWithVars(\n \"stepDefaultTitle\",\n { index: steps.indexOf(nextIncompleteStep) + 1 },\n `Step ${steps.indexOf(nextIncompleteStep) + 1}`\n )\n : \"\"\n : outbound.subject || \"\";\n\n let subtitleText =\n steps.length > 0\n ? nextIncompleteStep\n ? nextIncompleteStep.description || \"\"\n : \"\"\n : outbound.message || \"\";\n\n if (renderDoneState) {\n titleText = outbound.config?.successTitle || \"\";\n subtitleText = outbound.config?.successMessage || \"\";\n progress = 100;\n }\n\n const circumference = 2 * Math.PI * 7;\n const computedOffset = circumference - (progress / 100) * circumference;\n\n const isHeader = className === \"checklist-floating-header\";\n const icon = isHeader\n ? `\n \n \n `\n : `\n \n `;\n\n return `\n
\n
\n
\n \n \n \n \n
\n
${titleText}
\n ${\n renderDoneState\n ? \"\"\n : `${icon}`\n }\n
\n
${subtitleText}
\n
\n `;\n }\n\n renderInfoSection(outbound) {\n if (!this.infoEnabled || !outbound) return \"\";\n const subject =\n outbound.subject ||\n this._translate(\"checklistDefaultTitle\", \"Checklist\");\n const message = outbound.message || \"\";\n let senderHtml = \"\";\n if (outbound.sender?.profileImageUrl) {\n senderHtml = `\n
\n \"${\n\n ${outbound.sender.firstName || \"\"}\n
`;\n }\n return `\n
\n ${\n subject\n ? `
${subject}
`\n : \"\"\n }\n ${\n message\n ? `
${message}
`\n : \"\"\n }\n ${senderHtml}\n
`;\n }\n\n renderProgressSection(steps = [], completedSteps = []) {\n if (!this.progressbarEnabled || !steps.length) return \"\";\n const totalSteps = steps.length;\n const doneSteps = completedSteps.length;\n const progress = totalSteps > 0 ? (doneSteps / totalSteps) * 100 : 0;\n let duration = 0;\n steps.forEach((step) => {\n if (!completedSteps.includes(step.id) && step.duration > 0) {\n duration += step.duration;\n }\n });\n const progressLabel = this._translateWithVars(\n \"taskProgress\",\n { a: doneSteps, b: totalSteps },\n `${doneSteps} of ${totalSteps} done`\n );\n const durationLabel =\n duration > 0\n ? this._translateWithVars(\n \"aboutMinutes\",\n { a: duration },\n `About ${duration} min left`\n )\n : \"\";\n return `\n
\n
${progressLabel}
\n ${\n durationLabel\n ? `
${durationLabel}
`\n : \"\"\n }\n
\n
\n
\n
`;\n }\n\n renderTasks(steps = [], completedSteps = []) {\n if (!steps || steps.length === 0)\n return `

${this._translate(\n \"noStepsDefined\",\n \"No steps defined.\"\n )}

`;\n return steps\n .map((step, index) => {\n const isTaskDone = completedSteps.includes(step.id);\n const isActive = this.activeStep === index;\n const badge = isTaskDone\n ? `${this.getCheckIcon()}`\n : `${\n index + 1\n }`;\n const stepTitle =\n step.title ||\n this._translateWithVars(\n \"stepDefaultTitle\",\n { index: index + 1 },\n `Step ${index + 1}`\n );\n const stepDescription = step.description || \"\";\n const actionButtonText =\n step.actionTitle ||\n this._translate(\"actionDefaultTitle\", \"Action\");\n const actionHtml =\n step.action && step.action !== \"none\"\n ? `
\n \n
`\n : \"\";\n const markDoneLabel = this._translate(\"markAsDone\", \"Mark as done\");\n const markDoneHtml =\n step.allowMarkDone && !isTaskDone\n ? `
\n ${this.getCheckIcon()}\n
${markDoneLabel}
\n
`\n : \"\";\n const taskClasses = [\n \"checklist-task\",\n isTaskDone ? \"checklist-task--done\" : \"\",\n isActive ? \"checklist-task--active\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n return `\n
\n
\n ${badge}\n
${stepTitle}
\n \n \n \n \n \n
\n
\n
\n ${\n stepDescription\n ? `
${stepDescription}
`\n : \"\"\n }\n ${actionHtml}\n ${markDoneHtml}\n
\n
\n
`;\n })\n .join(\"\");\n }\n\n renderChecklist(data) {\n if (!this._hasLoaded || !data || !data.outbound) {\n this._checkSessionAndLoad();\n return;\n }\n const { outbound } = data;\n const steps = outbound.config?.steps || [];\n const completedSteps = data.completedSteps || [];\n const isDone =\n data.status === \"done\" ||\n (steps.length > 0 && completedSteps.length >= steps.length);\n let content = \"\";\n if (isDone) {\n const successTitle = outbound.config?.successTitle || \"\";\n const successMessage = outbound.config?.successMessage || \"\";\n if (this.floatingEnabled) {\n content = this.renderFloatingLauncher(\n outbound,\n \"checklist-floating-launcher\",\n true\n );\n } else {\n content = `\n
\n
\n ${this.getCheckIcon()}\n
\n
${successTitle}
\n
${successMessage}
\n
`;\n }\n if (this.activeStep !== -1) this.activeStep = -1;\n } else {\n content = `\n
\n ${!this.floatingEnabled ? this.renderInfoSection(outbound) : \"\"}\n ${\n !this.floatingEnabled\n ? this.renderProgressSection(steps, completedSteps)\n : \"\"\n }\n ${\n this.floatingEnabled\n ? this.renderFloatingLauncher(outbound)\n : \"\"\n }\n
\n ${\n this.floatingEnabled\n ? this.renderFloatingLauncher(\n outbound,\n \"checklist-floating-header\"\n )\n : \"\"\n }\n ${this.renderTasks(steps, completedSteps)}\n
\n
`;\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const primaryColor = flowConfig.color ? flowConfig.color : \"#485BFF\";\n\n const styles = `\n \n `;\n this.shadowRoot.innerHTML = styles + content;\n this.addTaskEventListeners();\n if (this.floatingEnabled) {\n this.addFloatingClickListeners();\n }\n if (this.activeStep !== -1) {\n this.toggleTask(this.activeStep, true);\n }\n }\n\n updateActiveTaskMaxHeight() {\n if (this.activeStep !== -1) {\n const taskBodyInner = this.shadowRoot.querySelector(\n `.checklist-task[data-task-index=\"${this.activeStep}\"] .checklist-task-body-inner`\n );\n const container = this.shadowRoot.querySelector(\n `.checklist-task[data-task-index=\"${this.activeStep}\"] .checklist-task-body`\n );\n if (taskBodyInner && container) {\n const height = taskBodyInner.offsetHeight;\n container.style.setProperty(\n \"--task-body-active-height\",\n `${height}px`\n );\n }\n }\n }\n\n // --- Event Listener Setup ---\n addTaskEventListeners() {\n const tasks = this.shadowRoot.querySelectorAll(\".checklist-task\");\n tasks.forEach((task) => {\n const header = task.querySelector(\".checklist-task-header\");\n const index = parseInt(task.getAttribute(\"data-task-index\"), 10);\n if (header) {\n header.addEventListener(\"click\", () => {\n const newActiveStep = this.activeStep === index ? -1 : index;\n this.setActiveStep(newActiveStep);\n });\n }\n const markDoneBtn = task.querySelector(\n \".checklist-task-body-markdone\"\n );\n if (markDoneBtn) {\n markDoneBtn.addEventListener(\"click\", (e) => {\n e.stopPropagation();\n if (!this.checklistData?.outbound?.config?.steps) return;\n const step = this.checklistData.outbound.config.steps[index];\n if (!step) return;\n const previouslyActiveStep = this.activeStep;\n if (!this.checklistData.completedSteps)\n this.checklistData.completedSteps = [];\n if (!this.checklistData.completedSteps.includes(step.id)) {\n this.checklistData.completedSteps.push(step.id);\n \n // Notify external listeners about the step completion\n GleapEventManager.notifyEvent(\"checklist-step-completed\", {\n checklistId: this.checklistData.id,\n outboundId: this.checklistData.outbound?.id,\n stepId: step.id,\n stepIndex: index,\n step: step,\n completedSteps: this.checklistData.completedSteps,\n status: this.checklistData.status,\n data: this.checklistData\n });\n const allSteps = this.checklistData.outbound.config.steps;\n let nextActiveStep = -1;\n if (previouslyActiveStep === index) {\n for (let i = index + 1; i < allSteps.length; i++) {\n if (\n !this.checklistData.completedSteps.includes(\n allSteps[i].id\n )\n ) {\n nextActiveStep = i;\n break;\n }\n }\n this.setActiveStep(nextActiveStep);\n }\n // Preserve the state of the floating modal.\n setTimeout(() => {\n let isModalOpen = false;\n if (this.floatingEnabled) {\n const tasksModal =\n this.shadowRoot.querySelector(\".checklist-tasks\");\n isModalOpen =\n tasksModal && tasksModal.style.display === \"block\";\n }\n this.renderChecklist(this.checklistData);\n if (this.floatingEnabled && isModalOpen) {\n const tasksModal =\n this.shadowRoot.querySelector(\".checklist-tasks\");\n if (tasksModal) tasksModal.style.display = \"block\";\n }\n }, 300);\n const updateData = { checkedStep: step.id };\n if (\n allSteps.length > 0 &&\n this.checklistData.completedSteps.length >= allSteps.length\n ) {\n this.checklistData.status = \"done\";\n updateData.status = \"done\";\n \n // Notify external listeners about the checklist completion\n GleapEventManager.notifyEvent(\"checklist-completed\", {\n checklistId: this.checklistData.id,\n outboundId: this.checklistData.outbound?.id,\n completedSteps: this.checklistData.completedSteps,\n status: this.checklistData.status,\n data: this.checklistData\n });\n }\n this.updateChecklist(this.checklistData.id, updateData);\n }\n });\n }\n const actionBtn = task.querySelector(\n \".checklist-task-body-action .action-button\"\n );\n if (actionBtn) {\n actionBtn.addEventListener(\"click\", (e) => {\n e.stopPropagation();\n if (\n !this.checklistData?.outbound?.config?.steps ||\n typeof Gleap === \"undefined\"\n )\n return;\n const step = this.checklistData.outbound.config.steps[index];\n if (!step || !step.action || step.action === \"none\") return;\n try {\n if (step.action === \"BOT\") Gleap.startBot(step.botId);\n else if (step.action === \"CUSTOM_ACTION\")\n Gleap.triggerCustomAction(step.actionBody);\n else if (step.action === \"REDIRECT_URL\") {\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n Gleap.openURL(step.actionBody, !!step.actionOpenInNewTab);\n } else if (step.action === \"FEEDBACK_FLOW\")\n Gleap.startFeedbackFlow(step.formId);\n else if (step.action === \"NEWS_ARTICLE\")\n Gleap.openNewsArticle(step.articleId);\n else if (step.action === \"HELP_ARTICLE\")\n Gleap.openHelpCenterArticle(step.articleId);\n else if (step.action === \"CHECKLIST\")\n Gleap.startChecklist(step.outboundId, true, step?.sharedKey);\n } catch (gleapError) {}\n });\n }\n });\n }\n\n // --- Animation and State Management ---\n setActiveStep(index) {\n const previousActiveStep = this.activeStep;\n this.activeStep = index;\n const tasksToToggle = [];\n if (\n previousActiveStep !== -1 &&\n previousActiveStep !== this.activeStep\n ) {\n tasksToToggle.push({ index: previousActiveStep, open: false });\n }\n if (this.activeStep !== -1 && this.activeStep !== previousActiveStep) {\n tasksToToggle.push({ index: this.activeStep, open: true });\n }\n tasksToToggle.forEach(({ index, open }) => {\n this.toggleTask(index, open);\n });\n }\n\n toggleTask(index, forceOpen = null) {\n const taskElement = this.shadowRoot.querySelector(\n `.checklist-task[data-task-index=\"${index}\"]`\n );\n if (!taskElement) return;\n const header = taskElement.querySelector(\".checklist-task-header\");\n if (!header) return;\n const isOpen = taskElement.classList.contains(\"checklist-task--active\");\n const shouldOpen = forceOpen !== null ? forceOpen : !isOpen;\n if (shouldOpen && !isOpen) {\n taskElement.classList.add(\"checklist-task--active\");\n header.setAttribute(\"aria-expanded\", \"true\");\n const taskBodyInner = taskElement.querySelector(\n \".checklist-task-body-inner\"\n );\n if (taskBodyInner) {\n const height = taskBodyInner.offsetHeight;\n const taskBody = taskElement.querySelector(\".checklist-task-body\");\n if (taskBody) {\n taskBody.style.setProperty(\n \"--task-body-active-height\",\n `${height}px`\n );\n }\n }\n } else if (!shouldOpen && isOpen) {\n taskElement.classList.remove(\"checklist-task--active\");\n header.setAttribute(\"aria-expanded\", \"false\");\n }\n }\n }\n\n if (\n typeof customElements !== \"undefined\" &&\n !customElements.get(\"gleap-checklist\")\n ) {\n customElements.define(\"gleap-checklist\", GleapChecklist);\n }\n }\n};\n","import Gleap from \"./Gleap\";\n\nexport default Gleap;\n"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","GleapFeedbackButtonManager","_classCallCheck","_defineProperty","value","this","instance","feedbackButton","remove","buttonHidden","lastButtonIcon","injectedFeedbackButton","show","getInstance","updateFeedbackButtonState","GleapNotificationManager","updateContainerStyle","frameManager","GleapFrameManager","isOpened","hideWidget","setAppMode","showWidget","_this","elem","document","createElement","addEventListener","feedbackButtonPressed","body","appendChild","count","notificationBadge","querySelector","notificationHiddenClass","classList","innerText","add","updateFeedbackButtonText","injectFeedbackButton","flowConfig","GleapConfigManager","getFlowConfig","feedbackButtonPosition","FEEDBACK_BUTTON_CLASSIC","FEEDBACK_BUTTON_CLASSIC_BOTTOM","FEEDBACK_BUTTON_CLASSIC_LEFT","widgetButtonText","buttonIcon","buttonLogo","concat","loadIcon","className","setAttribute","GleapTranslationManager","isRTLLayout","innerHTML","hideButton","FEEDBACK_BUTTON_NONE","FEEDBACK_BUTTON_BOTTOM_LEFT","appMode","hideForGuests","GleapSession","isUser","calculateShadeColor","col","amt","replace","length","_col$match2","_slicedToArray","match","r","g","b","_ref","parseInt","Math","max","min","toString","rr","gg","bb","calculateContrast","hex","substr","name","color","GleapNetworkIntercepter","Date","now","loadAllResources","contentType","toLocaleLowerCase","supportedContentTypes","i","includes","requests","JSON","parse","stringify","values","externalRequests","filters","request","headers","j","payload","payloadObj","e","response","responseText","data","window","performance","resources","getEntriesByType","resource","indexOf","initiatorType","find","url","push","type","date","startTimestamp","startTime","duration","round","exp","blacklist","defaultBlacklist","filter","maxRequests","stopped","keys","keysToRemove","slice","bbRequestId","startDate","getTime","text","size","TextEncoder","encode","encodeURI","s","split","Blob","getTextContentSize","undefined","TextDecoder","_typeof","ArrayBuffer","isView","decode","payloadText","cleanupPayload","cleanupContentSize","initialized","self","interceptNetworkRequests","onFetch","params","fromEntries","entries","method","preparePayload","cleanRequests","onFetchLoad","req","status","statusText","calcRequestTime","isContentTypeSupported","then","err","onFetchFailed","onOpen","args","onSend","requestHeaders","onError","currentTarget","onLoad","target","responseType","callback","originalFetch","open","XMLHttpRequest","send","gleapSetRequestHeader","setRequestHeader","header","requestId","arguments","bind","apply","fetch","clone","blob","Promise","resolve","reject","fr","FileReader","onload","evt","result","onerror","readAsText","resizeImage","base64Str","maxWidth","maxHeight","isJPEG","img","Image","src","canvas","MAX_WIDTH","MAX_HEIGHT","width","height","getContext","drawImage","toDataURL","isMobile","test","navigator","userAgent","gleapDataParser","String","truncateString","str","num","removeSubDomain","v","parts","is2ndLevelDomain","secondLevel","join","loadFromGleapCache","cachedData","localStorage","getItem","saveToGleapCache","k","setItem","removeItem","runFunctionWhenDomIsReady","readyState","RequestStatus","ChecklistNetworkManager","Map","validationCache","clear","fetchCache","validationRequests","fetchRequests","gleapSessionInstance","session","lang","getActiveLanguage","gleapId","gleapHash","apiUrl","xhr","injectSession","onreadystatechange","responseData","error","outboundId","sharedKey","cacheKey","_createCacheKey","cachedResult","internalId","has","_getApiUrl","Error","set","_getQueryParams","requestPromise","_makeRequest","id","_this2","floor","createCoords","x","y","oppositeSideMap","left","right","bottom","top","oppositeAlignmentMap","start","end","clamp","param","placement","axis","getAxisLength","getAlignmentAxis","alignment","getOppositePlacement","side","padding","expandPaddingObject","rect","computeCoordsFromPlacement","rtl","reference","floating","sideAxis","alignmentAxis","alignLength","isVertical","commonX","commonY","commonAlign","coords","async","detectOverflow","state","options","_await$platform$isEle","platform","rects","elements","strategy","boundary","rootBoundary","elementContext","altBoundary","paddingObject","element","clippingClientRect","getClippingRect","isElement","contextElement","getDocumentElement","offsetParent","getOffsetParent","offsetScale","getScale","elementClientRect","convertOffsetParentRelativeRectToViewportRelativeRect","offset","fn","_middlewareData$offse","_middlewareData$arrow","middlewareData","diffCoords","isRTL","mainAxisMulti","crossAxisMulti","rawValue","mainAxis","crossAxis","convertValueToCoords","arrow","alignmentOffset","getNodeName","node","isNode","nodeName","toLowerCase","getWindow","_node$ownerDocument","ownerDocument","defaultView","documentElement","Node","Element","isHTMLElement","HTMLElement","isShadowRoot","ShadowRoot","isOverflowElement","overflow","overflowX","overflowY","display","isTableElement","isContainingBlock","webkit","isWebKit","css","transform","perspective","containerType","backdropFilter","some","willChange","contain","CSS","supports","isLastTraversableNode","getComputedStyle","getNodeScroll","scrollLeft","scrollTop","pageXOffset","pageYOffset","getParentNode","assignedSlot","parentNode","host","getNearestOverflowAncestor","getOverflowAncestors","list","traverseIframes","_node$ownerDocument2","scrollableAncestor","isBody","win","visualViewport","frameElement","getCssDimensions","parseFloat","hasOffset","offsetWidth","offsetHeight","shouldFallback","$","unwrapElement","domElement","getBoundingClientRect","Number","isFinite","noOffsets","getVisualOffsets","offsetLeft","offsetTop","includeScale","isFixedStrategy","clientRect","scale","visualOffsets","isFixed","floatingOffsetParent","shouldAddVisualOffsets","offsetWin","currentWin","currentIFrame","iframeScale","iframeRect","clientLeft","paddingLeft","clientTop","paddingTop","topLayerSelectors","isTopLayer","selector","matches","getWindowScrollBarX","getClientRectFromClippingAncestor","clippingAncestor","html","clientWidth","clientHeight","visualViewportBased","getViewportRect","scroll","scrollWidth","scrollHeight","direction","getDocumentRect","getInnerBoundingClientRect","hasFixedPositionAncestor","stopNode","position","getRectRelativeToOffsetParent","isOffsetParentAnElement","offsets","offsetRect","getTrueOffsetParent","polyfill","currentNode","getContainingBlock","topLayer","elementClippingAncestors","cache","el","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","ancestor","getClippingElementAncestors","_c","clippingAncestors","firstClippingAncestor","clippingRect","reduce","accRect","getElementRects","getOffsetParentFn","getDimensionsFn","getDimensions","getClientRects","Array","from","autoUpdate","update","ancestorScroll","ancestorResize","elementResize","ResizeObserver","layoutShift","IntersectionObserver","animationFrame","referenceEl","ancestors","forEach","passive","cleanupIo","onMove","timeoutId","io","root","cleanup","_io","clearTimeout","disconnect","refresh","skip","threshold","rootMargin","isFirstUpdate","handleObserve","ratio","intersectionRatio","setTimeout","observe","observeMove","frameId","reobserveFrame","resizeObserver","firstEntry","unobserve","cancelAnimationFrame","requestAnimationFrame","_resizeObserver","prevRefRect","frameLoop","nextRefRect","_resizeObserver2","removeEventListener","checkMainAxis","checkCrossAxis","limiter","detectOverflowOptions","mainAxisCoord","crossAxisCoord","maxSide","limitedCoords","_middlewareData$flip","initialPlacement","fallbackPlacements","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","flipAlignment","isBasePlacement","oppositePlacement","getExpandedPlacements","isStart","lr","rl","tb","bt","getSideList","map","getOppositeAxisPlacements","placements","overflows","overflowsData","flip","sides","mainAlignmentSide","every","_middlewareData$flip2","_overflowsData$filter","nextIndex","index","nextPlacement","reset","resetPlacement","d","sort","a","_overflowsData$map$so","acc","arrowDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","min$1","center","shouldAddOffset","centerOffset","mergedOptions","platformWithCache","config","middleware","validMiddleware","Boolean","statefulPlacement","resetCount","nextX","nextY","computePosition","checkPageFilter","currentUrl","pageFilter","pageFilterType","removeTrailingSlash","isMatchingUrl","regex","regexPattern","RegExp","generateRegex","matched","startsWith","endsWith","GleapTooltipManager","WeakMap","tooltip","hasAttribute","nextId","tooltipElem","mode","hotspotContainer","canEmbed","firstChild","insertBefore","nextSibling","hotspot","icon","animated","repositionHotspot","elementToTooltipMap","floatingUIInstance","createTooltip","elementToFloatingUIMap","filteredTooltips","getFilteredTooltips","checkForTooltips","tooltips","location","href","page","pageType","querySelectorAll","linkTooltip","sessionInstance","http","sdkKey","console","updateFilteredTooltips","nodeType","ELEMENT_NODE","checkNodeTooltip","childNodes","childNode","processNodeInsertion","_this3","_this4","time","timeout","handleResizeThrottled","updateHotspotPositions","context","_toConsumableArray","observer","MutationObserver","mutations","lastUrl","mutation","addedNodes","removedNodes","floatingUI","childList","subtree","attributes","attributeFilter","_this5","tooltipText","tooltipData","hideTimeout","arrowEl","posX","shift","assign","style","arrowPos","visibility","opacity","pointerEvents","hide","voidElements","Set","tagName","resizeListener","anchor","removeAttribute","tooltipId","getAttribute","posY","offsetX","offsetY","elementRect","range","createRange","selectNodeContents","fixedWidth","anchorRect","tooltipSize","email","userId","phone","onSessionReady","ready","onSessionReadyListener","attemp","retry","GleapEventManager","notifyEvent","useCookies","cookie","eraseGleapCookie","sendMessage","clearAllNotifications","setNotificationCount","GleapBannerManager","removeBannerUI","GleapModalManager","hideModal","isNaN","newTimeout","pow","startSession","_this$session","sessionChanged","days","expires","setTime","toUTCString","setGleapCookie","encodeURIComponent","clearCache","GleapStreamedEvent","restart","tooltipManager","destroy","load","dispatchEvent","CustomEvent","notifySessionReady","sessionCookie","nameEQ","ca","c","charAt","substring","getGleapCookie","sessionData","decodeURIComponent","validateSession","cachedSession","clearSession","userData","checkIfSessionDataNeedsUpdate","userDataKeys","userDataKey","customData","setOnSessionReady","_objectSpread","sdkVersion","SDK_VERSION","ws","userHash","checkIfSessionNeedsUpdate","dataToSend","tourId","tourData","_window","passedPageFilter","sendSessionUpdate","streamEvents","mainLoopTimeout","runEventStreamLoop","streamingEvents","errorCount","streamedEventArray","socket","OPEN","sessionDuration","GleapMetaDataManager","getSessionDuration","events","opened","handleOpenBound","handleOpen","handleErrorBound","handleError","handleMessageBound","handleMessage","handleCloseBound","handleClose","connectionTimeout","pingWS","clearInterval","close","cleanupWebSocket","connectedWebSocketGleapId","WebSocket","wsApiUrl","event","setInterval","processMessage","initWebSocket","message","_message$data","u","listOfActionsWhereIgnoreOpened","filteredActions","action","_action$actionType","actionType","Gleap","performActions","detail","eventArray","cleanupMainLoop","trackInitialEvents","startPageListener","resetErrorCountLoop","logEvent","logCurrentPage","disablePageTracking","log","eventMaxLength","parseIntWithDefault","val","def","parsed","onConfigLoaded","onConfigLoadedListener","aiTools","sendConfigUpdate","cachedConfig","applyConfig","loadConfigFromServer","setStyles","headerColor","buttonColor","backgroundColor","borderRadius","buttonX","buttonY","applyStylesFromConfig","enableWebReplays","GleapReplayRecorder","stop","enableNetworkLogs","setLoadAllResources","sendNetworkResources","networkLogPropsToIgnore","setFilters","networkLogBlacklist","setBlacklist","updateRTLSupport","enableShortcuts","notifyConfigLoaded","_regeneratorRuntime","t","n","Symbol","iterator","asyncIterator","toStringTag","define","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","arg","h","l","f","GeneratorFunction","GeneratorFunctionPrototype","p","getPrototypeOf","defineIteratorMethods","_invoke","AsyncIterator","invoke","__await","callInvokeWithMethodAndArg","done","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","displayName","isGeneratorFunction","constructor","mark","setPrototypeOf","__proto__","awrap","reverse","pop","prev","rval","handle","complete","finish","delegateYield","asyncGeneratorStep","gen","_next","_throw","info","_asyncToGenerator","documentToHTML","doctype","publicId","systemId","outerHTML","loadCSSUrlResources","basePath","remote","asyncFn","matchedData","matchedUrl","replaceAll","resourcePath","URL","fetchCSSResource","resourceData","promises","_len","_key","promise","all","reader","onloadend","readAsDataURL","fetchItemResource","isBlacklisted","warn","progressResource","replaceStyleNodes","styleSheet","cssTextContent","styleId","cloneTargetNode","ownerNode","replacementNode","head","styleNode","cssText","createTextNode","linkNode","rel","media","getTextContentFromStyleSheet","cssRules","rules","cssRuleItem","downloadAllCSSUrlResources","basePathURL","_loop","styleSheets","mediaText","baseTags","getElementsByTagName","origin","lastIndexOf","replacedStyle","styletext","stylesheet","results","prepareRemoteData","dom","imgItems","imgItemsPromises","item","downloadAllImages","handleAdoptedStyleSheets","doc","shadowNodeId","adoptedStyleSheets","shadowStyleNode","firstElementChild","extractFinalCSSState","getAnimations","animations","finalCSSState","animation","_animation$effect","keyframes","effect","getKeyframes","finalKeyframe","property","deepClone","_callee3","cloneNode","fragment","clonedHead","_context3","_ref2","_callee2","parent","shadowRoot","walkTree","webAnimations","boundingRect","resizedImage","_boundingRect","rootShadowNodeId","_context2","_ref3","_callee","nextn","nextp","innerShadowRoot","_context","nextElementSibling","_x5","_x6","_x7","HTMLCanvasElement","t0","toUpperCase","contains","checked","_x2","_x3","_x4","createDocumentFragment","_x","prepareScreenshotData","_ref4","_callee4","styleTags","linkImportElems","referenceNode","scriptElems","existingBasePath","baseElems","baseUrl","newBaseUrl","baseNode","dialogElems","bbElems","_context4","innerWidth","innerHeight","_x8","_x9","GleapScreenRecorder","rerender","permissionErrorText","mediaDevices","getDisplayMedia","isRecording","available","video","ideal","screen","frameRate","displaySurface","selfBrowserSurface","audio","displayStream","stream","audioMuted","audioAvailable","handleRecord","startAudioRecording","alert","mediaRecorder","recordingTimer","getTracks","track","getUserMedia","voiceStream","getAudioTracks","addTrack","audioErr","audioTracks","enabled","file","recordedChunks","MediaRecorder","mimeType","getSupportedMimeType","recordTime","timerLabel","remainingTime","maxRecordTime","formatTime","stopScreenRecording","ondataavailable","getVideoTracks","onended","prepareRecording","onstop","completeBlob","extension","File","previewVideoElement","createObjectURL","_i","_types","isTypeSupported","screenRecordingData","formdata","FormData","append","fileUrl","GleapFeedback","priority","formData","isSilent","excludeData","spamToken","gleapInstance","GleapCustomDataManager","getCustomData","metaData","getMetaData","consoleLog","GleapConsoleLogManager","getLogs","networkLogs","getRequests","customEventLog","getEventArray","ticketAttributes","getTicketAttributes","dataPromises","webReplay","getGlobalDataItem","isLiveSite","recordingUrlPromise","uploadScreenRecording","recordingUrl","screenRecordingUrl","screenshot","screenshotDataPromise","isLiveMode","screenshotData","snapshotPosition","feedbackData","outbound","tags","GleapTagManager","getTags","keysToExclude","keyToExclude","takeSnapshot","getData","feedback","newTab","newWindow","focus","cmp_block_ignoredomains","injectedFrame","autoWhiteListCookieManager","frameUrl","gleapFrameContainer","gleapFrame","updateFrameStyle","showFrameContainer","closeElement","surveyStyle","extendedStyle","surveyFullStyle","classicStyle","classicStyleLeft","modernStyleLeft","noButtonStyleLeft","allStyles","styleToApply","startCommunication","appHeight","setProperty","handler","urlHandler","innerContainer","escListener","widgetOpened","markerManager","showLoader","loadingClass","disableBGFade","disableBGGradient","updateUI","workThroughQueue","setGlobalDataItem","scrollX","scrollY","updateWidgetStatus","registerEscListener","isSurvey","updateNotificationBadge","runWidgetShouldOpenCallback","injectFrame","isWidgetOpen","resetRoutes","hideMarkerManager","reloadNotificationsFromCache","unregisterEscListener","queue","comReady","contentWindow","postMessage","getSession","getAiTools","overrideLanguage","getOverrideLanguage","GleapMarkerManager","success","workQueue","_this6","addMessageListener","GleapAudioManager","ping","showImage","ticketData","frameHeight","_data$data","startProductTour","GleapCustomActionManager","triggerCustomAction","shareToken","feedbackType","sendFeedback","reportedBy","trackEvent","showDrawingScreen","bannerUrl","listeners","appVersionCode","appBuildNumber","sessionStart","nameOffset","verOffset","ix","nAgt","browserName","appName","fullVersion","appVersion","majorVersion","OSName","browser","systemName","buildVersionNumber","releaseVersionNumber","devicePixelRatio","screenWidth","screenHeight","language","userLanguage","mobile","sdkType","environment","logArray","disabled","originalConsoleLog","logLevel","logMaxLength","addLog","origConsole","addLogWithArgs","GleapClickListener","protocol","preventDefault","handleGleapLink","elementId","elementClass","elemId","elemClass","elementTag","htmlPre","htmlPost","getDOMElementDescription","takeCurrentReplay","eventListeners","eventListener","eventName","customAction","customActionCallbacks","_a","__defProp","__publicField","__defNormalProp","__defProp$1","__publicField$1","__defNormalProp$1","NodeType$3","NodeType2","testableAccessors$1","testableMethods$1","untaintedBasePrototype$1","isAngularZonePresent$1","globalThis","Zone","getUntaintedPrototype$1","defaultObj","defaultPrototype","accessorNames","isUntaintedAccessors","accessor","_a2","_b","getOwnPropertyDescriptor","methodNames","isUntaintedMethods","iframeEl","untaintedObject","removeChild","untaintedAccessorCache$1","getUntaintedAccessor$1","untaintedPrototype","untaintedAccessor","untaintedMethodCache$1","getUntaintedMethod$1","untaintedMethod","index$1","n2","parentElement","textContent","other","getRootNode","selectors","mutationObserver","hostEl","isNativeShadowDom","shadowRoot2","stringifyStylesheet","s2","rules2","sheetHref","stringifiedRules","rule2","stringifyRule","isCSSImportRule","importStringified","statement","layerName","supportsText","escapeImportStatement","absolutifyURLs","ruleStringified","isCSSStyleRule","selectorText","cssStringified","fixSafariColons","Mirror","getId","getMeta","getNode","idNodeMap","getIds","nodeMetaMap","removeNodeFromMap","delete","hasNode","node2","meta","oldNode","maskInputValue","maskInputOptions","maskInputFn","actualType","repeat","ORIGINAL_ATTRIBUTE_NAME","getInputType","extractFileExtension","path","baseURL","pathname","URL_IN_CSS_REF","URL_PROTOCOL_MATCH","URL_WWW_MATCH","DATA_URI","quote1","path1","quote2","path2","path3","filePath","maybeQuote","extractOrigin","stack","part","normalizeCssString","markCssSplits","childNodes2","splits","cssTextNorm","i2","textContentNorm","bit","splitNorm","splitCssText","_id","tagNameRegex","IGNORED_NODE","genId","canvasService","canvasCtx","SRCSET_NOT_SPACES","SRCSET_COMMAS_OR_SPACES","cachedDocument","absoluteToDoc","attributeValue","trim","getHref","isSVGElement","ownerSVGElement","customHref","a2","transformAttribute","pos","collectCharacters","regEx","chars2","exec","output","descriptorsStr","inParens","c2","getAbsoluteSrcsetString","ignoreAttribute","_value","classMatchesRegex","checkAncestors","eIndex","needMaskingText","maskTextClass","maskTextSelector","closest","e2","serializeNode","mirror","mirror2","blockClass","blockSelector","needsMask","inlineStylesheet","maskTextFn","dataURLOptions","inlineImages","recordCanvas","keepIframeSrcFn","newlyAddedElement","cssCaptured","rootId","docId","getRootId","DOCUMENT_NODE","compatMode","Document","DOCUMENT_TYPE_NODE","DocumentType","needBlock","_isBlockedElement","HTMLFormElement","processedTagName","getValidTagName$1","len","attr","_cssText","sheet","selected","rr_open_mode","__context","ctx","x2","getImageData","originalGetImageData","Uint32Array","buffer","pixel","is2DCanvasBlank","rr_dataURL","quality","canvasDataURL","blankCanvas","image","imageSrc","currentSrc","priorCrossOrigin","crossOrigin","recordInlineImage","naturalWidth","naturalHeight","mediaAttributes","rr_mediaState","paused","rr_mediaCurrentTime","currentTime","rr_mediaPlaybackRate","playbackRate","rr_mediaMuted","muted","rr_mediaLoop","loop","rr_mediaVolume","volume","rr_scrollLeft","rr_scrollTop","class","rr_width","rr_height","contentDocument","rr_src","isCustomElement","customElements","isSVG","isCustom","serializeElementNode","TEXT_NODE","parentTagName","textContent2","isStyle","isScript","Text","serializeTextNode","CDATA_SECTION_NODE","CDATA","COMMENT_NODE","Comment","lowerIfExists","maybeAttr","serializeNodeWithId","skipChild","slimDOMOptions","onSerialize","onIframeLoad","iframeLoadTimeout","onStylesheetLoad","stylesheetLoadTimeout","preserveWhiteSpace","_serializedNode","sn","comment","script","as","headFavicon","headMetaDescKeywords","headMetaSocial","headMetaRobots","headMetaHttpEquiv","headMetaAuthorship","headMetaVerification","slimDOMExcluded","serializedNode","recordChild","shadowRootEl","isShadowHost","headWhitespace","bypassOptions","childN","serializedChildNode","isShadow","listener","fired","timer","blankUrl","onceIframeLoaded","iframeDoc","serializedIframeNode","link","styleSheetLoadTimeout","styleSheetLoaded","onceStylesheetLoaded","serializedLinkNode","getDefaultExportFromCjs$1","__esModule","getAugmentedNamespace$1","f2","default","a22","Reflect","construct","picocolors_browser$1","x$1","create$1","isColorSupported","bold","dim","italic","underline","inverse","hidden","strikethrough","black","red","green","yellow","blue","magenta","cyan","white","gray","bgBlack","bgRed","bgGreen","bgYellow","bgBlue","bgMagenta","bgCyan","bgWhite","createColors","picocolors_browserExports$1","require$$2$1","freeze","pico$1","terminalHighlight$1$1","CssSyntaxError$3$1","CssSyntaxError","line","column","source","plugin22","super","reason","plugin","endLine","endColumn","setMessage","captureStackTrace","showSourceCode","aside","lines","index2","number","gutter","spacing","code","cssSyntaxError$1","symbols$1","isClean","my","DEFAULT_RAW$1","after","beforeClose","beforeComment","beforeDecl","beforeOpen","beforeRule","colon","commentLeft","commentRight","emptyBody","indent","semicolon","Stringifier$2$1","builder","atrule","raws","afterName","nodes","block","between","beforeAfter","detect","raw","buf","depth","step","last","child","before","decl","string","important","own","first","root2","rawCache","walk","rawBeforeClose","rawBeforeComment","walkComments","rawBeforeDecl","walkDecls","rawBeforeOpen","rawBeforeRule","rawColon","rawEmptyBody","rawIndent","rawSemicolon","rule","ownSemicolon","stringifier$1","Stringifier$1$1","stringify$4$1","stringify_1$1","isClean$2$1","my$2$1","CssSyntaxError$2$1","Stringifier2$1","stringify$3$1","cloneNode$1","cloned","isArray","Node$4$1","defaults","addToError","postcssNode","input","insertAfter","overrides","cleanRaws","keepBetween","cloneAfter","cloneBefore","opts","rangeBy","getProxyProcessor","toProxy","markDirty","positionBy","stringRepresentation","positionInside","word","endIndex","defaultType","replaceWith","bookmark","foundSelf","result2","toJSON","_","inputs","fixed","emitInputs","inputsNextIndex","inputId","input2","proxyCache","Proxy","stringifier2","proxyOf","node$1","Node$3$1","Declaration$4$1","variable","declaration$1","nonSecure$1","nanoid","random","customAlphabet","alphabet","defaultSize","SourceMapConsumer","SourceMapConsumer$2$1","SourceMapGenerator","SourceMapGenerator$2$1","existsSync","existsSync$1","readFileSync","readFileSync$1","dirname","dirname$1$1","join$1","PreviousMap$2$1","loadAnnotation","inline","startWith","annotation","loadMap","mapFile","consumer","consumerCache","decodeInline","lastMatch","Buffer","atob","encoding","getAnnotationURL","sourceMapString","isMap","mappings","_mappings","sections","comments","loadFile","fromSourceMap","prevPath","withContent","sourcesContent","previousMap$1","SourceMapConsumer$1$1","SourceMapGenerator$1$1","fileURLToPath","fileURLToPath$1","pathToFileURL","pathToFileURL$1$1","isAbsolute","isAbsolute$1","resolve$1$1","nanoid$2","terminalHighlight$2","CssSyntaxError$1$1","PreviousMap$1$1","fromOffsetCache$1","sourceMapAvailable$1$1","pathAvailable$1$1","Input$4$1","hasBOM","mapResolve","fromOffset","lastLine","lineToIndex","prevIndex","l2","mid","sourceRoot","to","fromUrl","originalPositionFor","sourceContentFor","json","input$1","registerInput","SourceMapConsumer$3","SourceMapGenerator$3","dirname$2","relative","relative$1","resolve$2","sep","sep$1","pathToFileURL$2","Input$3$1","sourceMapAvailable$2","pathAvailable$2","mapGenerator$1","stringify2","cssString","mapOpts","originalCSS","usesFileUrls","absolute","memoizedFileURLs","memoizedPaths","memoizedURLs","addAnnotation","content","isInline","toBase64","outputFile","eol","applyPrevMaps","previous","toUrl","applySourceMap","clearAnnotation","generate","generateMap","generateString","ignoreInvalidMapping","addMapping","generated","original","isSourcesContent","setSourcesContent","isAnnotation","noSource","mapping","sourcePath","charCodeAt","cached","previousMaps","already","toFileUrl","setSourceContent","btoa","unescape","fileURL","Node$2$1","Comment$4$1","comment$1","parse$4$1","Rule$4$1","AtRule$4$1","Root$6$1","isClean$1$1","my$1$1","Declaration$3$1","Comment$3$1","Node$1$1","cleanSource$1","markDirtyUp$1","Container$7$1","Container","children","normalize","each","getIterator","indexes","condition","lastEach","cb","exist","existIndex","splice","sample","rebuild","prepend","unshift","removeAll","replaceValues","pattern","props","fast","walkAtRules","walkRules","registerParse","dependant","registerRule","registerAtRule","registerRoot","container$1","LazyResult$4$1","Processor$3$1","Container$6$1","Document$3$1","toResult","registerLazyResult","registerProcessor","document$1$1","Warning$2$1","opt","warning$1","Warning$1$1","Result$3$1","processor2","processor","messages","lastPlugin","postcssPlugin","warning2","warnings","result$1","SINGLE_QUOTE$1","DOUBLE_QUOTE$1","BACKSLASH$1","SLASH$1","NEWLINE$1","SPACE$1","FEED$1","TAB$1","CR$1","OPEN_SQUARE$1","CLOSE_SQUARE$1","OPEN_PARENTHESES$1","CLOSE_PARENTHESES$1","OPEN_CURLY$1","CLOSE_CURLY$1","SEMICOLON$1","ASTERISK$1","COLON$1","AT$1","RE_AT_END$1","RE_WORD_END$1","RE_BAD_BRACKET$1","RE_HEX_ESCAPE$1","Container$5$1","AtRule$3$1","atRule$1","LazyResult$3$1","Processor$2$1","Container$4$1","Root$5$1","ignore","root$1","list$2$1","comma","space","separators","array","current","func","inQuote","prevQuote","escape","letter","list_1$1","Container$3$1","list$1$1","Rule$3$1","sep2","rule$1","Declaration$2$1","tokenizer2$1","quote","escaped","escapePos","currentToken","valueOf","ignoreErrors","returned","unclosed","what","back","token","endOfFile","nextToken","ignoreUnclosed","controlChar","fromCharCode","lastIndex","Comment$2$1","AtRule$2$1","Root$4$1","Rule$2$1","SAFE_COMMENT_NEIGHBOR$1","empty","parser$1","spaces","createTokenizer","unnamedAtrule","init","brackets","tokenizer","getPosition","spacesAndCommentsFromEnd","spacesAndCommentsFromStart","checkMissedSemicolon","tokens","founded","doubleColon","customProperty","findLastWithPosition$1","unknownWord","firstSpaces","precheckMissedSemicolon","stringFrom","spacesFromEnd","emptyRule","unexpectedClose","endFile","unclosedBlock","freeSemicolon","bracket","unclosedBracket","clean","lastTokenType","Container$2$1","Parser2$1","Input$2$1","parse$3$1","parser2","parse_1$1","isClean$3","my$3","MapGenerator$1$1","stringify$2$1","Container$1$1","Document$2$1","Result$2$1","parse$2$1","Root$3$1","TYPE_TO_CLASS_NAME$1","PLUGIN_PROPS$1","AtRule","AtRuleExit","CommentExit","Declaration","DeclarationExit","DocumentExit","Once","OnceExit","prepare","Root","RootExit","Rule","RuleExit","NOT_VISITORS$1","CHILDREN$1","isPromise$1","getEvents$1","toStack$1","eventIndex","visitorIndex","visitors","cleanMarks$1","postcss$2$1","LazyResult$2$1","LazyResult","stringified","processed","syntax","parser","helpers","postcss","plugins","processing","runAsync","onRejected","catch","onFinally","getAsyncError","postcssVersion","prepareVisitors","version","hasListener","runOnRoot","visitTick","visitor","roots","subRoot","sync","stringifier","walkSync","visitSync","onFulfilled","visit2","registerPostcss","lazyResult$1","MapGenerator2$1","stringify$1$1","parse$1$1","Result$1$1","NoWorkResult$1$1","_processor","_css","_opts","_map","generatedCSS","generatedMap","_root","noWorkResult$1","NoWorkResult2$1","LazyResult$1$1","Document$1$1","Root$2$1","Processor$1$1","normalized","process","use","processor$1","Declaration$1$1","PreviousMap2$1","Comment$1$1","AtRule$1$1","Input$1$1","Root$1$1","Rule$1$1","fromJSON$1$1","ownInputs","inputHydrated","fromJSON_1$1","CssSyntaxError2$1","Declaration2$1","LazyResult2$1","Container2$1","Processor2$1","stringify$5","fromJSON$2","Document22","Warning2$1","Comment2$1","AtRule2$1","Result2$1","Input2$1","parse$5","list$3","Rule2$1","Root2$1","Node2$1","postcss$3","initializer","warningPrinted","creator","env","LANG","transformer","processOpts","pluginOpts","fromJSON","atRule","Processor","Warning","Result","Input","postcss_1$1","postcss$1$1","__defProp2","__publicField2","__defNormalProp2","getDefaultExportFromCjs","getAugmentedNamespace","picocolors_browser","picocolors_browserExports","require$$2","pico","terminalHighlight$1","CssSyntaxError$3","CssSyntaxError2","cssSyntaxError","symbols","DEFAULT_RAW","Stringifier$2","Stringifier$1","stringify$4","stringify_1","isClean$2","my$2","CssSyntaxError$2","Stringifier22","stringify$3","Node$4","Node$3","Declaration$4","declaration","nonSecure","SourceMapConsumer$2","SourceMapGenerator$2","dirname$1","PreviousMap$2","previousMap","SourceMapConsumer$1","SourceMapGenerator$1","pathToFileURL$1","resolve$1","terminalHighlight","CssSyntaxError$1","PreviousMap$1","fromOffsetCache","sourceMapAvailable$1","pathAvailable$1","Input$4","Input$3","sourceMapAvailable","pathAvailable","mapGenerator","Node$2","Comment$4","parse$4","Rule$4","AtRule$4","Root$6","isClean$1","my$1","Declaration$3","Comment$3","Node$1","cleanSource","markDirtyUp","Container$7","Container2","container","LazyResult$4","Processor$3","Container$6","Document$3","document$1","Warning$2","warning","Warning$1","Result$3","SINGLE_QUOTE","DOUBLE_QUOTE","BACKSLASH","SLASH","NEWLINE","SPACE","FEED","TAB","CR","OPEN_SQUARE","CLOSE_SQUARE","OPEN_PARENTHESES","CLOSE_PARENTHESES","OPEN_CURLY","CLOSE_CURLY","SEMICOLON","ASTERISK","COLON","AT","RE_AT_END","RE_WORD_END","RE_BAD_BRACKET","RE_HEX_ESCAPE","Container$5","AtRule$3","LazyResult$3","Processor$2","Container$4","Root$5","list$2","list_1","Container$3","list$1","Rule$3","Declaration$2","tokenizer22","Comment$2","AtRule$2","Root$4","Rule$2","SAFE_COMMENT_NEIGHBOR","findLastWithPosition","Container$2","Parser22","Input$2","parse$3","parse_1","MapGenerator$1","stringify$2","Container$1","Document$2","Result$2","parse$2","Root$3","TYPE_TO_CLASS_NAME","PLUGIN_PROPS","NOT_VISITORS","CHILDREN","isPromise","getEvents","toStack","cleanMarks","postcss$2","LazyResult$2","LazyResult2","lazyResult","MapGenerator22","stringify$1","parse$1","Result$1","NoWorkResult$1","noWorkResult","NoWorkResult22","LazyResult$1","Document$1","Root$2","Processor$1","Declaration$1","PreviousMap22","Comment$1","AtRule$1","Input$1","Root$1","Rule$1","fromJSON$1","fromJSON_1","CssSyntaxError22","Declaration22","LazyResult22","Container22","Processor22","Document222","Warning22","Comment22","AtRule22","Result22","Input22","Rule22","Root22","Node22","postcss_1","postcss$1","BaseRRNode","_args","childIterator","_newChild","_refChild","_node","testableAccessors","testableMethods","untaintedBasePrototype","isAngularZonePresent","getUntaintedPrototype","untaintedAccessorCache","getUntaintedAccessor","untaintedMethodCache","getUntaintedMethod","mutationObserverCtor","on","capture","DEPARTED_MIRROR_ACCESS_WARNING","_mirror","throttle","wait","leading","remaining","trailing","hookSetter","isRevoked","patch","replacement","wrapped","defineProperties","__rrweb_original__","receiver","nowTimestamp","getWindowScroll","_d","scrollingElement","getWindowHeight","getWindowWidth","closestElementOfNode","isBlocked","isIgnored","headTitleMutations","isAncestorRemoved","legacy_isTouchEvent","changedTouches","isSerializedIframe","isSerializedStylesheet","hasShadowRoot","StyleSheetMirror","styleIDMap","newId","idStyleMap","getStyle","generateId","getShadowHost","shadowHost","DOCUMENT_FRAGMENT_NODE","shadowHostInDom","rootShadowHost","getRootShadowHost","inDom","EventType","EventType2","IncrementalSource","IncrementalSource2","MouseInteractions","MouseInteractions2","PointerTypes","PointerTypes2","CanvasContext","CanvasContext2","MediaInteractions","MediaInteractions2","NodeType","isNodeInLinkedList","DoubleLinkedList","addNode","__ln","previousSibling","tail","removeNode","moveKey","parentId","MutationBuffer","processMutation","emit","frozen","locked","adds","addedIds","addList","getNextId","ns","pushAdd","parentTag","addedSet","currentN","iframeManager","addIframe","stylesheetManager","trackLinkElement","shadowDomManager","addShadowRoot","iframe","childSn","attachIframe","observeAttachShadow","attachLinkElement","mapRemoves","movedSet","isParentRemoved","removesSubTreeCache","isAncestorInSet","droppedSet","candidate","tailNode","unhandledNode","texts","genTextAreaValueMutation","attribute","diffAsStr","styleDiff","unchangedAsStr","_unchangedStyles","removes","attributeMap","movedMap","mutationCb","textarea","cn","m","oldValue","attributeName","unattachedDoc","implementation","createHTMLDocument","old","pname","newValue","getPropertyValue","newPriority","getPropertyPriority","genAdds","nodeId","isSerialized","deepDelete","n22","processRemoves","processedNodeManager","inOtherBuffer","targetId","canvasManager","unfreeze","isFrozen","lock","unlock","addsSet","_mirror2","_isParentRemoved","_isAncestorInSet","errorHandler","callbackWrapper","rest","mutationBuffers","getEventTarget","composedPath","initMutationObserver","rootEl","mutationBuffer","processMutations","attributeOldValue","characterData","characterDataOldValue","initMouseInteractionObserver","mouseInteractionCb","sampling","mouseInteraction","disableMap","handlers","currentPointerType","eventKey","pointerType","thisEventKey","Mouse","Touch","Pen","MouseDown","MouseUp","Click","clientX","clientY","getHandler","PointerEvent","TouchStart","TouchEnd","initScrollObserver","scrollCb","scrollLeftTop","INPUT_TAGS","lastInputValueMap","getNestedCSSRulePositions","childRule","hasNestedCSSRule","parentRule","CSSGroupingRule","CSSMediaRule","CSSSupportsRule","CSSConditionRule","parentStyleSheet","recurse","getIdAndStyleId","styleMirror","initAdoptedStyleSheetObserver","host2","hostId","patchTarget","originalPropertyDescriptor","_a3","sheets","adoptStyleSheets","initObservers","o2","hooks","currentWindow","mousemoveCb","viewportResizeCb","inputCb","mediaInteractionCb","styleSheetRuleCb","styleDeclarationCb","canvasMutationCb","fontCb","selectionCb","customElementCb","mousemove","viewportResize","mediaInteaction","styleSheetRule","styleDeclaration","canvasMutation","font","selection","customElement","mergeHooks","recordDOM","mousemoveHandler","callbackThreshold","mousemoveCallback","timeBaseline","positions","wrappedCb","totalOffset","timeOffset","updatePosition","DragEvent","Drag","MouseEvent","MouseMove","TouchMove","initMoveObserver","mouseInteractionHandler","scrollHandler","viewportResizeHandler","lastH","lastW","initViewportResizeObserver","inputHandler","ignoreClass","ignoreSelector","userTriggeredOnInput","eventHandler","userTriggered","isTrusted","isChecked","cbWithDedup","text2","v2","lastInputValue","propertyDescriptor","HTMLInputElement","hookProperties","HTMLSelectElement","HTMLTextAreaElement","HTMLOptionElement","initInputObserver","mediaInteractionHandler","Play","Pause","Seeked","VolumeChange","RateChange","initMediaInteractionObserver","styleSheetObserver","adoptedStyleSheetObserver","styleDeclarationObserver","fontObserver","CSSStyleSheet","insertRule","thisArg","argumentsList","addRule","styleBlock","deleteRule","replaceSync","removeRule","supportedNestedCSSRuleTypes","canMonkeyPatchNestedCSSRule","unmodifiedFunctions","typeKey","initStyleSheetObserver","ignoreCSSAttributes","CSSStyleDeclaration","removeProperty","initStyleDeclarationObserver","collectFonts","fontMap","originalFontFace","FontFace","family","descriptors","fontFace","fontSource","Uint8Array","restoreHandler","fonts","initFontObserver","selectionObserver","collapsed","updateSelection","getSelection","isCollapsed","ranges","rangeCount","getRangeAt","startContainer","startOffset","endContainer","endOffset","initSelectionObserver","customElementObserver","initCustomElementObserver","pluginHandlers","plugin3","CrossOriginIframeMirror","generateIdFn","remoteId","idToRemoteMap","remoteToIdMap","idToRemoteIdMap","getIdToRemoteIdMap","remoteIdToIdMap","getRemoteIdToIdMap","getRemoteId","getRemoteIds","ids","iframeIdToRemoteIdMap","iframeRemoteIdToIdMap","IframeManager","wrappedEmit","recordCrossOriginIframes","crossOriginIframeStyleMirror","iframes","crossOriginIframeMap","addLoadListener","loadListener","isAttachIframe","crossOriginMessageEvent","transformedEvent","transformCrossOriginEvent","isCheckout","FullSnapshot","crossOriginIframeMirror","replaceIdOnNode","crossOriginIframeRootIdMap","patchRootIdOnNode","timestamp","IncrementalSnapshot","Mutation","Meta","Load","DomContentLoaded","Plugin","Custom","replaceIds","ViewportResize","MediaInteraction","MouseInteraction","Scroll","CanvasMutation","StyleSheetRule","StyleDeclaration","replaceStyleIds","Font","Selection","AdoptedStyleSheet","styles","iframeMirror","ShadowDomManager","WeakSet","patchAttachShadow","shadowDoms","restoreHandlers","iframeElement","manager","option","sRoot","chars","lookup","i$1","canvasVarMap","saveWebGLVar","isInstanceOfWebGLObject","list2","ctor","contextMap","variableListFor$1","serializeArg","Float32Array","Float64Array","Int32Array","Uint16Array","Int16Array","Int8Array","Uint8ClampedArray","rr_type","base64","arraybuffer","bytes","DataView","byteOffset","byteLength","HTMLImageElement","ImageData","serializeArgs","supportedWebGLConstructorNames","initCanvasContextObserver","setPreserveDrawingBufferToTrue","contextType","ctxName","getNormalizedContextName","contextAttributes","preserveDrawingBuffer","patchGLPrototype","getOwnPropertyNames","recordArgs","hookHandler","setter","encodedJs","WorkerWrapper","objURL","webkitURL","worker","Worker","revokeObjectURL","CanvasManager","latestId","invokeId","rafStamps","pendingCanvasMutations","initCanvasMutationObserver","initCanvasFPSObserver","resetObservers","fps","canvasContextReset","snapshotInProgressMap","onmessage","commands","timeBetweenSnapshots","rafId","lastSnapshotTime","takeCanvasSnapshots","matchedCanvas","getCanvas","getContextAttributes","COLOR_BUFFER_BIT","bitmap","createImageBitmap","startRAFTimestamping","startPendingCanvasMutationFlusher","canvas2DReset","props2D","CanvasRenderingContext2D","initCanvas2DMutationObserver","canvasWebGL1and2Reset","WebGLRenderingContext","WebGL","WebGL2RenderingContext","WebGL2","initCanvasWebGLMutationObserver","flushPendingCanvasMutations","setLatestRAFTimestamp","_values","flushPendingCanvasMutationFor","valuesWithType","type2","StylesheetManager","adoptedStyleSheetCb","linkEl","trackedLinkElements","trackStylesheetInLinkElement","adoptedStyleSheetData","styleIds","CSSRule","r2","_linkEl","ProcessedNodeManager","thisBuffer","buffers","nodeMap","active","takeFullSnapshot$1","recording","cleanFrame","debug","record","checkoutEveryNms","checkoutEveryNth","maskAllInputs","_maskInputOptions","_slimDOMOptions","packFn","mousemoveWait","recordAfter","errorHandler2","inEmittingFrame","passEmitsToParent","month","search","tel","week","select","password","lastFullSnapshotEvent","NodeList","DOMTokenList","polyfill$1","incrementalSnapshotCount","eventProcessor","exceedCount","exceedTime","wrappedMutationEmit","wrappedScrollEmit","wrappedCanvasMutationEmit","getMirror","nodeMirror","slimDOM","snapshot","initialOffset","CustomElement","t2","addCustomEvent","tag","freezePage","takeFullSnapshot","NotStarted","Running","Stopped","customOptions","stopFunction","ContextMenu","DblClick","Focus","Blur","rrwebEvent","stringifiedData","_step","dataURIRegex","_iterator","_createForOfIteratorHelper","matchAll","ensureMaxMessageSize","bufferSize","ScreenDrawer","svgElement","minHeight","mouseDown","colorpicker","fadeOutToolbar","tool","mouseDownPen","mouseDownRect","mouseMove","mouseMovePen","mouseMoveRect","mouseUp","fadeInToolbar","mouseUpPen","mouseUpRect","appendToBuffer","getMousePosition","updateSvgPath","w","abs","startPoint","setAttributeNS","createElementNS","strokeWidthRect","appendPathToSvg","strokeWidth","pt","strPath","touches","totalX","totalY","getAveragePoint","tmpPath","pathBuffer","fadeTarget","GleapScrollStopper","supportsPassive","wheelOpt","scrollDisabled","wheelEvent","preventDefaultForScrollKeys","keyCode","showWidgetUI","formKey","dirty","dialogUI","enableScroll","screenRecorder","unregisterListeners","cleanupMousePointer","screenDrawer","dialog","captureSVG","videoPreviewContainer","dismissUI","colorPicker","borderLayer","captureEditor","dragCursor","setMouseMove","mouseMoveEventHandler","touchMoveEventHandler","dragHandle","dragStart","drag","dragEnd","bugReportingEditor","translateText","pageLeaveListener","isEscape","isEnter","dismiss","showNextStep","returnValue","registerListeners","hideWidgetUI","createEditorUI","setupMousePointer","disableScroll","setupScreenRecording","captureScreenDrawerRerender","setupColorPicker","setupToolbar","selectedColor","colorItems","colorItem","hexColor","onclick","setColor","setPenColor","currentX","currentY","initialX","initialY","toolbar","isDragging","xOffset","yOffset","_getTransformValues","matrix","DOMMatrix","m41","m42","getTransformValues","nextButton","chooseTool","toolbarItem","toolbarTools","setTool","svgClone","toolbarItems","_loop2","toggleAudio","startScreenRecording","removeLastAddedPathFromSvg","itemInactiveClass","screenRecordingTooltip","audioRecordingTooltip","recordingClass","notRecordingClass","clearPreview","captureRenderer","penTips","fill","staticTranslation","staticTranslations","vars","template","localizationOptions","htmlLang","GleapShortcutListener","shortCutListener","char","keyIdentifier","ctrlKey","startFeedbackFlowWithOptions","autostartDrawing","GleapPreFillManager","unreadCount","notificationContainer","notificationsFromCache","unreadNotificationsKey","nots","notification","createdAt","notifications","renderNotifications","updateTabBarNotificationCount","sound","clearElem","currentNewsIndex","newsNotifications","news","otherNotifications","currentIndex","currentNews","newsElem","newsContainerElem","coverImageUrl","newsImageElem","stopPropagation","openNews","newsContentElem","newsTitleElem","getName","descHTML","renderDescription","descElem","paginationElem","pageIndicator","nextBtn","conversation","openConversation","checklist","openChecklist","progress","currentStep","totalSteps","nextStepTitle","sender","profileImageUrl","openNewsArticle","_notification$data","previewText","uiOnly","classLeft","classNoButton","_this$bannerUrl","_this$bannerData","_data$data2","_data$data3","_data$data4","_data$data5","_data$data6","_data$data7","_data$data8","_data$data9","_data$data10","bannerData","format","startBot","botId","startFeedbackFlow","formId","showSurvey","surveyFormat","articleId","openHelpCenterArticle","startChecklist","checklistId","bannerContainer","gleapBFrame","injectBannerUI","_listenForMessages","modalUrl","_this$modalUrl","_data$data11","modalData","primaryColor","_postMessage","modalContainer","wrapper","modalBackdropClickListener","_this2$modalData$show","_this2$modalData","showCloseButton","frame","_injectModalUI","play","settings","Audio","playPromise","getID","getClassSelectors","getClasses","cl","kCombinations","items","getNthChild","sibling","counter","getTag","isUnique","elems","getAllSelectors","attributesToIgnore","funcs","sum","getAttributes","res","testUniqueness","getFirstUnique","getUniqueCombination","combinations","getCombinations","firstUnique","combination","getUniqueSelector","selectorTypes","excludeRegex","foundSelector","elementSelectors","ID","Class","selectorType","Tag","Classes","Attributes","NthChild","unique","_step2","_options$selectorType","_options$attributesTo","_options$excludeRegex","allSelectors","parents","currentElement","getParents","_iterator2","_allSelectors","it","ElementOverlay","overlay","background","borderColor","borderStyle","borderWidth","boxSizing","cursor","zIndex","margin","shadowContainer","attachShadow","_createClass","useShadowDOM","usingShadowDOM","setBounds","bounds","ElementPicker","overlayOptions","handleMouseMove","handleClick","tick","addToDOM","removeFromDOM","mouseX","mouseY","tickReq","stopImmediatePropagation","onClick","updateTarget","ignoreCursor","newTarget","elementFromPoint","captureCursor","elementFilter","onHover","GleapAdminHelper","picker","stopPicker","onElementPicked","startPicker","GleapAdminManager","COLLAPSE_UI_ACTIVE_CLASS","FRAME_CONTAINER_ACTIVE_CLASS","isActive","activeClass","gleapCollapseUI","toggle","injectedCollapseUI","toggleCollapseUI","_this$configData","configData","sendMessageToTourBuilder","GleapProductTours","disable","adminHelper","injectCollapseUI","setFrameHeight","gleapAdminDisabled","initAdminHelper","currentPage","click","opener","GleapTours","currentConfig","configure","animate","allowClose","overlayOpacity","smoothScroll","disableActiveInteraction","showProgress","stagePadding","stageRadius","popoverOffset","showButtons","disableButtons","overlayColor","getConfig","easeInOutQuad","elapsed","initialValue","amountOfChange","getFocusableElements","parentEls","focusableQuery","flatMap","parentEl","isParentFocusable","focusableEls","isElementVisible","bringInView","isElementInView","shouldSmoothScroll","scrollIntoView","behavior","hasScrollableParent","currentState","setState","getState","resetState","registeredListeners","listen","hook","trackActiveElement","activeStagePosition","renderOverlay","mountOverlay","stagePosition","overlaySvg","stage","windowX","windowY","svg","fillRule","clipRule","strokeLinejoin","strokeMiterlimit","stagePath","generateStageSvgPathString","createOverlaySvg","onDriverClick","pathElement","stageWidth","stageHeight","limitedRadius","normalizedRadius","highlightBoxX","highlightBoxY","highlightBoxWidth","highlightBoxHeight","highlight","attemptTime","elemObj","refactoredElement","hidePopover","existingDummy","getElementById","mountDummyElement","toElement","toStep","_toStep$disableActive","fromStep","fromElement","isFirstHighlight","isToDummyElement","isFromDummyElement","isAnimatedTour","highlightStartedHook","onHighlightStarted","highlightedHook","onHighlighted","deselectedHook","onDeselected","hasDelayedPopover","isPopoverRendered","isHalfwayThrough","popover","renderPopover","fromDefinition","toDefinition","transitionStage","transferHighlight","refreshActiveHighlight","activeHighlight","activeStep","refreshOverlay","repositionPopover","requireRefresh","resizeTimeout","trapFocus","activeElement","popoverEl","firstFocusableEl","lastFocusableEl","shiftKey","previousFocusableEl","nextFocusableEl","onKeyup","shouldPreventDefault","listenerWrapper","listener2","useCapture","title","description","closeButton","footer","footerButtons","previousButton","createPopover","_ref2$nextBtnText","nextBtnText","_ref2$prevBtnText","prevBtnText","_ref2$progressText","progressText","showButtonsConfig","showProgressConfig","showFooter","disabledButtonsConfig","popoverWrapper","customPopoverClass","popoverClass","_b2","onNextClick","onPrevClick","onCloseClick","onPopoverRender","focusableElement","getPopoverDimensions","boundingClientRect","realWidth","realHeight","calculateTopForLeftRight","elementDimensions","popoverDimensions","popoverPadding","popoverArrowDimensions","calculateLeftForTopBottom","_ref3$align","align","_ref3$side","requiredAlignment","requiredSide","topValue","isTopOptimal","bottomValue","isBottomOptimal","leftValue","isLeftOptimal","rightValue","isRightOptimal","noneOptimal","popoverRenderedSide","leftToSet","topToSet","leftValue2","rightToSet","bottomToSet","popoverArrow","popoverWidth","windowWidth","elementWidth","elementLeft","popoverHeight","windowHeight","elementTop","elementHeight","arrowSide","arrowAlignment","renderPopoverArrow","moveNext","activeIndex","steps","nextStepIndex","drive","movePrevious","previousStepIndex","handleArrowLeft","handleArrowRight","_e","_f","_g","_h","stepIndex","hasNextStep","hasPreviousStep","doneBtnText","allowsClosing","progressTextReplaced","configuredButtons","calculatedButtons","withOnDestroyStartedHook","activeOnDestroyed","onDestroyStarted","onDestroyed","destroyPopover","destroyHighlight","isActiveDummyElement","setConfig","setSteps","getActiveIndex","isFirstStep","isLastStep","getActiveStep","getActiveElement","getPreviousElement","getPreviousStep","moveTo","_defineProperties","descriptor","_toPropertyKey","toPrimitive","_toPrimitive","localStorageKey","pointerContainerId","copilotJoinedContainerId","_canPlayAudio","GleapCopilotTours","Constructor","_scrollListeners","_currentAnchor","_currentStep","_scrollDebounceTimer","productTourId","currentActiveIndex","productTourData","updatePointerPosition","protoProps","staticProps","onCompleteCallback","scrollableAncestors","getScrollableAncestors","_pointerContainer","yPosition","targetScrollPosition","scrollTo","smoothScrollToY","removeScrollListeners","pollCount","updateFinalPosition","isElementFullyVisible","targetX","targetY","containerWidthSpace","attachScrollListeners","currentAudio","pause","copilotInfoContainer","_GleapConfigManager$g","_GleapConfigManager$g2","_this$productTourData3","_this$productTourData4","_this$productTourData5","_this$productTourData6","_this$productTourData","_this$productTourData2","contrastColor","playVoice","gradient","svgMouse","infoBubble","kaiAvatar","kaiSlug","completeTour","canPlayAudio","supported","setupCopilotTour","showUnmuteModal","showAudioUnmuteModal","renderNextStep","_this$productTourData7","_this$productTourData8","_this$productTourData9","modalOverlay","modal","unmuteModalTitle","unmuteButton","unmuteModalButton","startAnywayButton","unmuteModalContinue","_this7","handleStep","gotToNextStep","_currentStep$inputTyp","proceedClickmode","storeUncompletedTour","inputType","handleInputEvent","_e$target","once","_currentStep$inputVal","inputValue","typeCharacter","wave","performClickAnimation","tempDiv","htmlToPlainText","readTime","wordCount","ceil","estimateReadTime","continueWithNoAudio","voice","elementPromise","maxAttempts","attempts","interval","waitForElement","_self$productTourData","tourType","gleapTourObj","delay","manually","validateProductTour","onComplete","comData","clearUncompletedTour","startWithConfig","unmuted","driverSteps","isClickMode","isInputMode","hasSender","videoUrl","senderHTML","firstName","driverStep","buttons","backButton","allowKeyboardControl","nextText","doneText","prevText","_config$state","onDocumentClick","popoverElement","mediaElements","performRequentialRefresh","mediaElement","playingClass","playPauseContainer","videoElement","videoContainer","clickVideo","evnt","gleapTourPopover","_evnt$target","__originalGetContext","GleapChecklist","_HTMLElement","_assertThisInitialized","_callSuper","handleChecklistUpdate","handleSessionUpdate","_networkManager","_boundFloatingLauncherClick","handleFloatingLauncherClick","_boundFloatingCloseClick","handleFloatingCloseClick","_floatingHideTimeout","_inherits","_boundHandleChecklistUpdate","_boundHandleSessionUpdate","_boundResizeHandler","handleResize","_checkSessionAndLoad","removeFloatingClickListeners","checklistData","_hasLoaded","_isSessionReady","_initialActiveSet","renderResponse","updateActiveTaskMaxHeight","loadChecklist","renderChecklist","_getGleapSessionInstance","hasChecklistId","defaultValue","translateTextWithVars","validateChecklist","_isMock","isConnected","fetchChecklist","_isInitialLoad","_this3$checklistData$","_data$outbound","completedSteps","firstIncompleteIndex","findIndex","_session$gleapId","_session$gleapHash","checkedStep","makeRequest","updateData","_this$checklistData$o3","previousCompletedSteps","dataChanged","activeStepCompleted","currentlyActiveStepIndex","_this$checklistData$o","activeStepId","_this$checklistData$o2","nextActiveStep","setActiveStep","tasks","launcher","_outbound$config","_this$checklistData","renderDoneState","progressbarEnabled","doneSteps","_outbound$config2","_outbound$config3","nextIncompleteStep","titleText","_translateWithVars","subject","subtitleText","successTitle","successMessage","circumference","PI","computedOffset","isHeader","toFixed","_outbound$sender","infoEnabled","_translate","senderHtml","progressLabel","durationLabel","isTaskDone","badge","getCheckIcon","stepTitle","stepDescription","actionButtonText","actionTitle","actionHtml","markDoneLabel","markDoneHtml","allowMarkDone","taskClasses","_outbound$config4","_outbound$config5","_outbound$config6","floatingEnabled","renderFloatingLauncher","renderInfoSection","renderProgressSection","renderTasks","addTaskEventListeners","addFloatingClickListeners","toggleTask","taskBodyInner","task","newActiveStep","markDoneBtn","_this5$checklistData","previouslyActiveStep","_this5$checklistData$","stepId","allSteps","isModalOpen","tasksModal","_this5$checklistData$2","updateChecklist","actionBtn","_this5$checklistData2","actionBody","openURL","actionOpenInNewTab","gleapError","previousActiveStep","tasksToToggle","forceOpen","taskElement","isOpen","shouldOpen","taskBody","_wrapNativeSuper","registerGleapChecklist","offlineMode","hostname","injectNotificationUI","actions","_action$data","popupType","disableInAppNotifications","showNotification","showBanner","showModal","startProductTourWithConfig","globalData","replayData","getReplayData","setTags","setUrlHandler","tools","setAiTools","updateContainerHeight","initialHeight","fixGleapHeight","checkForUncompletedTour","checkForUrlParams","urlParams","URLSearchParams","widget","conversationFlow","startConversation","feedbackFlow","surveyFlow","surveyFlowFormat","tourDelay","identifySession","updateSession","setMaxRequests","setOptions","cleanedData","formPreFill","toggleFeedbackButton","setAppVersionCode","setAppBuildNumber","setBannerUrl","setModalUrl","setTicketAttribute","unsetTicketAttribute","clearTicketAttributes","attachCustomData","setCustomData","removeCustomData","clearCustomData","playSound","showNotificationBadge","notificationInstance","setOverrideLanguage","softReInitialize","updateContact","registerCustomAction","buttonStyle","contrastButtonColor","contrastBackgroundColor","contrastHeaderColor","isDarkMode","headerDarkColor","subTextColor","backgroundColorHover","hoverHoverColor","buttonBorderRadius","containerRadius","chatRadius","formItemBorderRadius","formItemSmallBorderRadius","bottomInfoOffset","colorStyleSheet","zIndexBase","injectStyledCSS","replays","attachments","sendSilentCrashReportWithFormData","silentCrashReportSent","excludeDataCleaned","newFormData","hideBackButton","showBackButton","flow","collectionId","term","networkManager","checkStartUrl","startProductTourConfig","startURL","loadUncompletedTour","GleapActions","GLAction","urlParts","identifier","openHelpCenterCollection"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"index.js","mappings":"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","sources":["webpack://Gleap/webpack/bootstrap","webpack://Gleap/webpack/runtime/define property getters","webpack://Gleap/webpack/runtime/hasOwnProperty shorthand","webpack://Gleap/./src/GleapFeedbackButtonManager.js","webpack://Gleap/./src/UI.js","webpack://Gleap/./src/GleapNetworkIntercepter.js","webpack://Gleap/./src/GleapHelper.js","webpack://Gleap/./src/ChecklistNetworkManager.js","webpack://Gleap/./node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","webpack://Gleap/./node_modules/@floating-ui/core/dist/floating-ui.core.mjs","webpack://Gleap/./node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","webpack://Gleap/./node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","webpack://Gleap/./src/GleapPageFilter.js","webpack://Gleap/./src/GleapTooltipManager.js","webpack://Gleap/./src/GleapSession.js","webpack://Gleap/./src/GleapStreamedEvent.js","webpack://Gleap/./src/GleapConfigManager.js","webpack://Gleap/./src/ScreenCapture.js","webpack://Gleap/./src/ResourceExclusionList.js","webpack://Gleap/./src/GleapScreenRecorder.js","webpack://Gleap/./src/GleapFeedback.js","webpack://Gleap/./src/GleapFrameManager.js","webpack://Gleap/./src/GleapMetaDataManager.js","webpack://Gleap/./src/GleapConsoleLogManager.js","webpack://Gleap/./src/GleapClickListener.js","webpack://Gleap/./src/GleapCustomDataManager.js","webpack://Gleap/./src/GleapEventManager.js","webpack://Gleap/./src/GleapCustomActionManager.js","webpack://Gleap/./node_modules/@rrweb/record/dist/record.js","webpack://Gleap/./src/GleapReplayRecorder.js","webpack://Gleap/./src/ScreenDrawer.js","webpack://Gleap/./src/GleapScrollStopper.js","webpack://Gleap/./src/GleapMarkerManager.js","webpack://Gleap/./src/GleapTranslationManager.js","webpack://Gleap/./src/GleapShortcutListener.js","webpack://Gleap/./src/GleapPreFillManager.js","webpack://Gleap/./src/GleapNotificationManager.js","webpack://Gleap/./src/GleapBannerManager.js","webpack://Gleap/./src/GleapModalManager.js","webpack://Gleap/./src/GleapAudioManager.js","webpack://Gleap/./src/GleapTagManager.js","webpack://Gleap/./src/unique-selector/src/getID.js","webpack://Gleap/./src/unique-selector/src/getClasses.js","webpack://Gleap/./src/unique-selector/src/getCombinations.js","webpack://Gleap/./src/unique-selector/src/isElement.js","webpack://Gleap/./src/unique-selector/src/getNthChild.js","webpack://Gleap/./src/unique-selector/src/getTag.js","webpack://Gleap/./src/unique-selector/src/isUnique.js","webpack://Gleap/./src/unique-selector/src/unique-selector.js","webpack://Gleap/./src/unique-selector/src/getAttributes.js","webpack://Gleap/./src/unique-selector/src/getParents.js","webpack://Gleap/./src/ElementPicker.js","webpack://Gleap/./src/GleapAdminHelper.js","webpack://Gleap/./src/GleapAdminManager.js","webpack://Gleap/./src/GleapTours.js","webpack://Gleap/./src/GleapCopilotTours.js","webpack://Gleap/./src/GleapProductTours.js","webpack://Gleap/./src/Gleap.js","webpack://Gleap/./src/GleapChecklist.js","webpack://Gleap/./src/index.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","import {\n GleapFrameManager,\n GleapConfigManager,\n GleapNotificationManager,\n GleapTranslationManager,\n GleapSession,\n} from \"./Gleap\";\nimport { loadIcon } from \"./UI\";\n\nexport default class GleapFeedbackButtonManager {\n feedbackButton = null;\n injectedFeedbackButton = false;\n buttonHidden = null;\n lastButtonIcon = null;\n\n // Feedback button types\n static FEEDBACK_BUTTON_BOTTOM_RIGHT = \"BOTTOM_RIGHT\";\n static FEEDBACK_BUTTON_BOTTOM_LEFT = \"BOTTOM_LEFT\";\n static FEEDBACK_BUTTON_CLASSIC = \"BUTTON_CLASSIC\";\n static FEEDBACK_BUTTON_CLASSIC_LEFT = \"BUTTON_CLASSIC_LEFT\";\n static FEEDBACK_BUTTON_CLASSIC_BOTTOM = \"BUTTON_CLASSIC_BOTTOM\";\n static FEEDBACK_BUTTON_NONE = \"BUTTON_NONE\";\n\n // GleapFeedbackButtonManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapFeedbackButtonManager();\n }\n return this.instance;\n }\n\n destroy() {\n if (this.feedbackButton) {\n this.feedbackButton.remove();\n this.feedbackButton = null;\n }\n\n this.buttonHidden = null;\n this.lastButtonIcon = null;\n this.injectedFeedbackButton = false;\n this.instance = null;\n }\n\n /**\n * Toggles the feedback button visibility.\n * @param {*} show\n * @returns\n */\n toggleFeedbackButton(show) {\n this.buttonHidden = !show;\n\n GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n GleapNotificationManager.getInstance().updateContainerStyle();\n }\n\n feedbackButtonPressed() {\n var frameManager = GleapFrameManager.getInstance();\n if (frameManager.isOpened()) {\n frameManager.hideWidget();\n } else {\n frameManager.setAppMode(\"widget\");\n frameManager.showWidget();\n }\n }\n\n /**\n * Injects the feedback button into the current DOM.\n */\n injectFeedbackButton() {\n if (this.injectedFeedbackButton) {\n return;\n }\n this.injectedFeedbackButton = true;\n\n var elem = document.createElement(\"div\");\n elem.addEventListener(\"click\", () => {\n this.feedbackButtonPressed();\n });\n document.body.appendChild(elem);\n this.feedbackButton = elem;\n\n this.updateFeedbackButtonState();\n }\n\n updateNotificationBadge(count) {\n const notificationBadge = document.querySelector(\".bb-notification-bubble\");\n if (!notificationBadge) {\n return;\n }\n\n const notificationHiddenClass = \"bb-notification-bubble--hidden\";\n if (count > 0 && !GleapFrameManager.getInstance().isOpened()) {\n notificationBadge.classList.remove(notificationHiddenClass);\n notificationBadge.innerText = count;\n } else {\n notificationBadge.classList.add(notificationHiddenClass);\n }\n }\n\n refresh() {\n const feedbackButton = document.querySelector(\".bb-feedback-button\");\n if (feedbackButton) {\n this.updateFeedbackButtonText();\n this.updateFeedbackButtonState();\n } else {\n this.injectedFeedbackButton = false;\n this.feedbackButton = null;\n this.buttonHidden = null;\n this.lastButtonIcon = null;\n this.injectFeedbackButton();\n }\n }\n\n updateFeedbackButtonText() {\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n\n if (\n !(\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT\n )\n ) {\n return;\n }\n\n const feedbackButton = document.querySelector(\n \".bb-feedback-button-classic\"\n );\n if (!feedbackButton) {\n return;\n }\n\n feedbackButton.innerText = flowConfig.widgetButtonText;\n }\n\n /**\n * Updates the feedback button state\n * @returns\n */\n updateFeedbackButtonState() {\n if (this.feedbackButton === null) {\n return;\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n\n var buttonIcon = \"\";\n if (flowConfig.buttonLogo) {\n buttonIcon = `\"Feedback`;\n } else {\n buttonIcon = loadIcon(\"button\", \"#fff\");\n }\n\n this.feedbackButton.className = \"bb-feedback-button gleap-font gl-block\";\n this.feedbackButton.setAttribute(\n \"dir\",\n GleapTranslationManager.getInstance().isRTLLayout ? \"rtl\" : \"ltr\"\n );\n\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT\n ) {\n this.feedbackButton.classList.add(\n \"bb-feedback-button--classic-button-style\"\n );\n\n this.feedbackButton.innerHTML = `
${flowConfig.widgetButtonText}
`;\n } else {\n if (buttonIcon !== this.lastButtonIcon) {\n this.feedbackButton.innerHTML = `
${buttonIcon}${loadIcon(\n \"arrowdown\",\n \"#fff\"\n )}
`;\n }\n }\n\n // Prevent dom update if not needed.\n this.lastButtonIcon = buttonIcon;\n\n var hideButton = false;\n if (GleapFeedbackButtonManager.getInstance().buttonHidden === null) {\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_NONE\n ) {\n hideButton = true;\n }\n } else {\n if (GleapFeedbackButtonManager.getInstance().buttonHidden) {\n hideButton = true;\n }\n }\n if (hideButton) {\n this.feedbackButton.classList.add(\"bb-feedback-button--disabled\");\n }\n\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_BOTTOM_LEFT\n ) {\n this.feedbackButton.classList.add(\"bb-feedback-button--bottomleft\");\n }\n\n if (GleapFrameManager.getInstance().isOpened()) {\n this.feedbackButton.classList.add(\"bb-feedback-button--open\");\n }\n\n const appMode = GleapFrameManager.getInstance().appMode;\n if (\n appMode === \"survey\" ||\n appMode === \"survey_full\" ||\n appMode === \"survey_web\"\n ) {\n this.feedbackButton.classList.add(\"bb-feedback-button--survey\");\n }\n\n if (\n flowConfig.hideForGuests === true &&\n !GleapSession.getInstance().isUser()\n ) {\n this.feedbackButton.classList.add(\"bb-feedback-button--hidden\");\n }\n }\n}\n","import GleapFeedbackButtonManager from \"./GleapFeedbackButtonManager\";\n\nconst calculateShadeColor = function (col, amt) {\n col = col.replace(/^#/, \"\");\n if (col.length === 3)\n col = col[0] + col[0] + col[1] + col[1] + col[2] + col[2];\n\n let [r, g, b] = col.match(/.{2}/g);\n [r, g, b] = [\n parseInt(r, 16) + amt,\n parseInt(g, 16) + amt,\n parseInt(b, 16) + amt,\n ];\n\n r = Math.max(Math.min(255, r), 0).toString(16);\n g = Math.max(Math.min(255, g), 0).toString(16);\n b = Math.max(Math.min(255, b), 0).toString(16);\n\n const rr = (r.length < 2 ? \"0\" : \"\") + r;\n const gg = (g.length < 2 ? \"0\" : \"\") + g;\n const bb = (b.length < 2 ? \"0\" : \"\") + b;\n\n return `#${rr}${gg}${bb}`;\n};\n\nexport const calculateContrast = (hex) => {\n var r = parseInt(hex.substr(1, 2), 16),\n g = parseInt(hex.substr(3, 2), 16),\n b = parseInt(hex.substr(5, 2), 16),\n yiq = (r * 299 + g * 587 + b * 114) / 1000;\n return yiq >= 160 ? \"#000000\" : \"#ffffff\";\n};\n\nexport const widgetMaxHeight = 700;\n\nexport const injectStyledCSS = (\n primaryColor,\n headerColor,\n buttonColor,\n borderRadius,\n backgroundColor,\n buttonX,\n buttonY,\n buttonStyle\n) => {\n const contrastColor = calculateContrast(primaryColor);\n const contrastButtonColor = calculateContrast(buttonColor);\n const contrastBackgroundColor = calculateContrast(backgroundColor);\n const contrastHeaderColor = calculateContrast(headerColor);\n const isDarkMode = contrastBackgroundColor === \"#ffffff\";\n const headerDarkColor = calculateShadeColor(\n headerColor,\n contrastHeaderColor === \"#ffffff\" ? -35 : -15\n );\n const subTextColor = isDarkMode\n ? calculateShadeColor(backgroundColor, 100)\n : calculateShadeColor(backgroundColor, -120);\n const backgroundColorHover = isDarkMode\n ? calculateShadeColor(backgroundColor, 30)\n : calculateShadeColor(backgroundColor, -12);\n const hoverHoverColor = isDarkMode\n ? calculateShadeColor(backgroundColor, 80)\n : calculateShadeColor(backgroundColor, -30);\n\n var borderRadius = parseInt(borderRadius, 10);\n const buttonBorderRadius = Math.round(borderRadius * 1.05);\n const containerRadius = Math.round(borderRadius * 0.8);\n const chatRadius = Math.round(borderRadius * 0.6);\n const formItemBorderRadius = Math.round(borderRadius * 0.4);\n const formItemSmallBorderRadius = Math.round(borderRadius * 0.25);\n const zIndexBase = 2147483600;\n\n var bottomInfoOffset = 57 + buttonY;\n if (\n buttonStyle === GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM\n ) {\n bottomInfoOffset = buttonY + 15;\n } else if (buttonStyle && buttonStyle.includes(\"CLASSIC\")) {\n bottomInfoOffset = buttonY;\n } else if (buttonStyle === GleapFeedbackButtonManager.FEEDBACK_BUTTON_NONE) {\n bottomInfoOffset = buttonY;\n }\n\n const colorStyleSheet = `\n .gleap-font, .gleap-font * {\n font-style: normal;\n font-variant-caps: normal;\n font-variant-ligatures: normal;\n font-variant-numeric: normal;\n font-variant-east-asian: normal;\n font-weight: normal;\n font-stretch: normal;\n font-size: 100%;\n line-height: 1;\n font-family: system-ui, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n }\n .gleap-input-highlight {\n box-shadow: 0 0 0 3px ${primaryColor} !important;\n }\n .gleap-frame-container {\n right: ${buttonX}px;\n bottom: ${61 + buttonY}px;\n width: calc(100% - 40px);\n max-width: 410px;\n position: fixed;\n z-index: ${zIndexBase + 31};\n visibility: visible;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.16);\n border-radius: ${containerRadius}px;\n overflow: hidden;\n animation-duration: .3s;\n animation-fill-mode: both;\n animation-name: gleapFadeInUp;\n user-select: none;\n pointer-events: none;\n transition: max-width 0.3s ease-out;\n }\n\n .gleap-admin-highlight {\n box-shadow: 0px 0px 0px 4px red;\n }\n\n :root {\n --gleap-margin-top: 50px;\n }\n\n .gleap-tooltip-anchor {\n position: relative;\n display: inline-block;\n float: left;\n max-width: 0px;\n width: 17px;\n }\n\n .gleap-tooltip-hotspot {\n position: absolute;\n display: block;\n width: 17px;\n height: 17px;\n cursor: pointer;\n top: 0px;\n left: 0px;\n }\n\n @keyframes gleap-pulse {\n 0% {\n transform: scale(0);\n opacity: 0.25;\n }\n 45% {\n transform: scale(2.5);\n opacity: 0;\n }\n 100% {\n transform: scale(0);\n opacity: 0;\n }\n }\n\n .gleap-tooltip-hotspot-animation {\n position: absolute;\n border-radius: 17px;\n opacity: 0.25;\n display: block;\n width: 17px;\n height: 17px;\n cursor: pointer;\n top: 0px;\n left: 0px;\n animation: gleap-pulse 5s infinite;\n }\n\n .gleap-tooltip-hotspot svg {\n width: 17px;\n height: 17px;\n object-fit: contain;\n display: block;\n }\n\n .gleap-tooltip-inner {\n position: relative;\n overflow: visible;\n font-size: 14px;\n font-weight: normal;\n color: #000;\n line-height: 1.3;\n }\n\n .gleap-tooltip {\n position: absolute;\n background-color: #fff;\n color: #000;\n font-size: 15px;\n line-height: 18px;\n padding: 16px;\n padding-top: 8px;\n padding-bottom: 8px;\n border-radius: 4px;\n max-width: min(350px, 80vw);\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n opacity: 0;\n visibility: hidden;\n transition: opacity 0.2s, visibility 0.2s;\n z-index: ${zIndexBase + 100};\n }\n\n .gleap-tooltip a {\n color: ${primaryColor};\n text-decoration: underline;\n display: inline !important;\n margin: 0px !important;\n padding: 0px !important;\n word-break: break-word;\n }\n\n .gleap-tooltip ul {\n padding-left: 16px;\n }\n\n .gleap-tooltip b {\n font-weight: 600;\n }\n\n .gleap-tooltip h2 {\n font-size: 18px;\n line-height: 20px;\n font-weight: 600;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip h3 {\n font-size: 16px;\n line-height: 18px;\n font-weight: 600;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip p {\n padding: 0px;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip img {\n max-width: 100%;\n max-height: 300px;\n width: 100%;\n height: auto;\n object-fit: cover;\n margin-top: 8px;\n margin-bottom: 8px;\n border-radius: 4px;\n }\n\n .gleap-tooltip iframe,\n .gleap-tooltip video {\n max-width: 100%;\n width: 100%;\n height: auto;\n min-height: 200px;\n display: block;\n border: none;\n outline: none;\n padding: 0px;\n margin-top: 8px;\n margin-bottom: 8px;\n border-radius: 4px;\n }\n\n .gleap-tooltip-arrow {\n position: absolute;\n width: 20px;\n height: 20px;\n }\n\n .gleap-tooltip-arrow svg {\n width: 20px;\n height: 20px;\n object-fit: contain;\n }\n\n .gleap-b-frame {\n width: 100%;\n height: 100%;\n border: none;\n pointer-events: auto;\n padding: 0px;\n margin: 0px;\n }\n\n .gleap-b-shown {\n transition: margin 0.3s ease-out;\n margin-top: var(--gleap-margin-top);\n position: relative;\n z-index: 10000;\n }\n\n .gleap-b-f {\n margin-top: 0px;\n }\n\n .gleap-b {\n display: none;\n position: absolute;\n top: calc(-1 * var(--gleap-margin-top));\n left: 0px;\n width: 100vw;\n height: var(--gleap-margin-top);\n z-index: ${zIndexBase + 99};\n }\n\n @keyframes gleapSlideIn {\n from {\n top: calc(-1 * var(--gleap-margin-top));\n }\n to {\n top: 10px;\n }\n }\n\n .gleap-b-f .gleap-b {\n position: fixed;\n top: 10px;\n animation: gleapSlideIn .25s ease-out forwards;\n max-width: 800px;\n width: calc(100% - 20px);\n left: 50%;\n z-index: ${zIndexBase + 99};\n transform: translateX(-50%);\n border-radius: ${formItemBorderRadius}px;\n overflow: hidden;\n box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.15), 0px 5px 5px rgba(0, 0, 0, 0.05);\n }\n\n .gleap-b-shown .gleap-b {\n display: block;\n }\n\n .gleap-image-view {\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n z-index: ${zIndexBase + 99};\n background-color: ${contrastBackgroundColor}cc;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .gleap-image-view-image {\n width: 90%;\n height: auto;\n max-width: 90%;\n max-height: 90%;\n object-fit: contain;\n }\n\n .gleap-image-view-close {\n position: fixed;\n top: 20px;\n right: 20px;\n width: 32px;\n height: 32px;\n opacity: 0.8;\n z-index: ${zIndexBase + 140};\n box-shadow: 0px 5px 18px rgba(0, 0, 0, 0.16);\n cursor: pointer;\n }\n\n .gleap-image-view-close:hover {\n opacity: 1;\n }\n\n .gleap-image-view-close svg path {\n fill: ${backgroundColor};\n }\n\n [dir=rtl].gleap-frame-container {\n right: auto;\n left: ${buttonX}px;\n bottom: ${61 + buttonY}px;\n }\n\n .gleap-frame-container--loading iframe {\n opacity: 0;\n }\n\n .gleap-frame-container--loading::before {\n content: \" \";\n position: fixed;\n top: 0px;\n left: 0px;\n right: 0px;\n height: 100%;\n max-height: 380px;\n background: linear-gradient(\n 130deg,\n ${headerDarkColor} 0%,\n ${headerColor} 100%\n );\n }\n \n .gleap-frame-container--loading::after {\n content: \" \";\n position: fixed;\n top: 0px;\n left: 0px;\n right: 0px;\n height: 100%;\n height: 100%;\n max-height: 380px;\n background: linear-gradient(\n 180deg,\n transparent 60%,\n ${backgroundColor}1A 70%,\n ${backgroundColor} 100%\n );\n }\n\n .gleap-frame-container--loading-nogradient::before {\n max-height: 340px;\n background: ${headerColor} !important;\n }\n\n .gleap-frame-container--loading-nofade::after {\n display: none !important;\n }\n\n .gleap-frame-container--survey {\n bottom: ${buttonY}px !important;\n }\n\n .gleap-frame-container--extended {\n max-width: 690px !important;\n }\n\n .gleap-frame-container--survey-full {\n position: fixed;\n top: 0 !important;\n left: 0 !important;\n bottom: 0 !important;\n right: 0 !important;\n width: 100vw !important;\n max-width: 100vw !important;\n height: 100vh;\n height: 100dvh !important;\n background-color: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(6px);\n display: flex !important;\n justify-content: center !important;\n align-items: center !important;\n max-height: 100vh;\n max-height: 100dvh !important;\n border-radius: 0 !important;\n animation-name: none !important;\n }\n\n .gleap-frame-container--survey-full .gleap-frame-container-inner {\n max-width: 640px !important;\n width: calc(100% - 24px);\n border-radius: ${containerRadius}px;\n overflow: hidden;\n }\n\n .gleap-frame-container--classic {\n right: ${buttonX}px;\n bottom: ${buttonY}px;\n }\n\n [dir=rtl].gleap-frame-container--classic {\n right: auto;\n left: ${buttonX}px;\n bottom: ${buttonY}px;\n }\n\n .gleap-frame-container--no-button {\n bottom: ${buttonY}px;\n }\n\n [dir=rtl].gleap-frame-container--classic-left {\n bottom: ${buttonY}px;\n }\n\n .gleap-frame-container--classic-left {\n right: auto;\n left: ${buttonX}px;\n bottom: ${buttonY}px;\n }\n\n [dir=rtl].gleap-frame-container--classic-left {\n left: auto;\n right: ${buttonX}px;\n bottom: ${buttonY}px;\n }\n\n .gleap-frame-container--modern-left {\n right: auto;\n left: ${buttonX}px;\n bottom: ${61 + buttonY}px;\n }\n\n [dir=rtl].gleap-frame-container--modern-left {\n left: auto;\n right: ${buttonX}px;\n bottom: ${61 + buttonY}px;\n }\n\n .gleap-frame-container--animate {\n pointer-events: auto !important;\n }\n\n @keyframes gleapFadeInUp {\n from {\n opacity: 0;\n transform: translate3d(0, 100%, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n\n @keyframes gleapFadeInUpMobile {\n from {\n opacity: 0;\n transform: translate3d(0, 10%, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n\n .gleap-notification-container {\n position: fixed;\n bottom: ${bottomInfoOffset}px;\n right: ${buttonX}px;\n z-index: ${zIndexBase + 30};\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n width: 100%;\n max-width: min(340px, 80vw);\n }\n\n .gleap-notification-container--left {\n left: ${4 + buttonX}px;\n right: initial !important;\n }\n\n [dir=rtl].gleap-notification-container {\n left: ${4 + buttonX}px;\n right: initial !important;\n }\n\n [dir=rtl].gleap-notification-container--left {\n left: initial !important;\n right: ${buttonX}px !important;\n align-items: flex-start !important;\n }\n\n .gleap-notification-container--no-button {\n bottom: ${buttonY}px;\n }\n\n .gleap-notification-item {\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n\n .gleap-notification-close {\n border-radius: 100%;\n width: 28px;\n height: 28px;\n background-color: ${subTextColor};\n display: flex;\n justify-content: center;\n align-items: center;\n margin-bottom: 8px;\n cursor: pointer;\n visibility: hidden;\n pointer-events: none;\n }\n\n .gleap-notification-container:hover .gleap-notification-close {\n visibility: visible;\n pointer-events: auto;\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-notification-close {\n visibility: visible;\n pointer-events: auto;\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n }\n\n .gleap-notification-close svg {\n width: 45%;\n height: 45%;\n object-fit: contain;\n fill: ${backgroundColor};\n }\n\n .gleap-notification-item-checklist-container {\n display: flex;\n animation: fadeIn;\n animation-duration: .45s;\n background-color: ${backgroundColor};\n border-radius: ${subTextColor};\n box-sizing: border-box;\n cursor: pointer;\n flex-direction: column;\n overflow: hidden;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ${chatRadius}px;\n margin-bottom: 12px;\n }\n\n .gleap-notification-item-checklist-content {\n align-items: flex-start;\n display: flex;\n flex-direction: column;\n padding: 15px;\n width: 100%;\n width: min(310px, 70vw);\n max-width: min(310px, 70vw);\n }\n\n .gleap-notification-item-checklist-content-title {\n color: ${contrastBackgroundColor};\n font-size: 15px;\n font-weight: 500;\n line-height: 21px;\n margin-bottom: 10px;\n max-width: 100%;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .gleap-notification-item-checklist-content-progress {\n width: 100%;\n height: 8px;\n border-radius: 8px;\n background-color: ${backgroundColorHover};\n }\n\n .gleap-notification-item-checklist-content-progress-inner {\n height: 100%;\n border-radius: 8px;\n background-color: ${primaryColor};\n }\n\n .gleap-notification-item-checklist-content-next {\n color: ${subTextColor};\n font-size: 15px;\n font-weight: normal;\n line-height: 21px;\n margin-top: 10px;\n max-width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: flex;\n align-items: center;\n }\n\n .gleap-notification-item-checklist-content-next svg {\n height: 18px;\n margin-right: 5px;\n width: auto;\n }\n\n .gleap-notification-item-checklist-content-next b {\n font-size: 15px;\n font-weight: normal;\n color: ${contrastBackgroundColor};\n }\n\n .gleap-notification-item-news {\n width: 100%;\n }\n\n .gleap-news-pagination {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 10px;\n width: 100%;\n }\n\n .gleap-news-page-indicator {\n font-size: 12px;\n color: ${subTextColor};\n }\n\n .gleap-news-next-button {\n background-color: ${primaryColor};\n color: ${contrastColor};\n border-radius: ${formItemSmallBorderRadius}px;\n box-sizing: border-box;\n padding: 5px 10px;\n font-size: 14px;\n font-weight: bold;\n line-height: 21px;\n border: none;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: none !important;\n outline: none !important;^\n }\n\n .gleap-notification-item-news-content {\n align-items: flex-start;\n display: flex;\n flex-direction: column;\n padding: 15px;\n }\n\n .gleap-notification-item-news-preview {\n color: ${subTextColor};\n font-size: 14px;\n line-height: 21px;\n font-weight: 400;\n overflow-wrap: break-word;\n word-break: break-word;\n display: block;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .gleap-notification-item-news-sender {\n display: flex;\n align-items: center;\n color: ${subTextColor};\n font-size: 15px;\n line-height: 21px;\n font-weight: 400;\n }\n \n .gleap-notification-item-news-content-title {\n color: ${contrastBackgroundColor};\n font-size: 15px;\n font-weight: 500;\n line-height: 21px;\n margin-bottom: 6px;\n max-width: 100%;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n cursor: pointer;\n }\n\n .gleap-notification-item-news-sender img {\n border-radius: 100%;\n height: 20px;\n margin-right: 8px;\n object-fit: cover;\n width: 20px;\n }\n\n [dir=rtl] .gleap-notification-item-news-sender img {\n margin-left: 8px;\n margin-right: 0px !important;\n }\n\n .gleap-notification-item-news-container {\n display: flex;\n animation: fadeIn;\n animation-duration: .45s;\n background-color: ${backgroundColor};\n border-radius: ${subTextColor};\n box-sizing: border-box;\n flex-direction: column;\n overflow: hidden;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ${chatRadius}px;\n margin-bottom: 12px;\n }\n\n .gleap-notification-item-news-image {\n background-color: ${subTextColor};\n height: 170px;\n max-height: 170px;\n object-fit: cover;\n width: 100%;\n cursor: pointer;\n }\n \n .gleap-notification-item-news-content-title:hover {\n color: ${primaryColor};\n }\n\n .gleap-notification-item {\n display: flex;\n align-items: flex-end;\n cursor: pointer;\n }\n\n .gleap-notification-item img {\n width: 32px;\n height: 32px;\n min-width: 32px;\n border-radius: 100%;\n object-fit: cover;\n margin-right: 8px;\n margin-bottom: 12px;\n cursor: pointer;\n }\n\n [dir=rtl] .gleap-notification-item img {\n margin-left: 8px;\n margin-right: 0px !important;\n }\n\n .gleap-notification-item-container {\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ${chatRadius}px;\n border-bottom-left-radius: 0px;\n padding: 20px;\n background-color: ${backgroundColor};\n margin-bottom: 12px;\n cursor: pointer;\n font-size: 15px;\n line-height: 21px;\n color: ${contrastBackgroundColor};\n position: relative;\n }\n\n .gleap-notification-item-container::after {\n content: \" \";\n position: absolute;\n bottom: 0px;\n width: 0px;\n height: 0px;\n left: -6px;\n border-style: solid;\n border-width: 0px 0px 10px 6px;\n border-color: transparent transparent ${backgroundColor};\n }\n\n .gleap-notification-item-sender {\n color: ${subTextColor};\n line-height: 20px;\n }\n\n .gleap-notification-item-content {\n line-height: 20px;\n color: ${contrastBackgroundColor};\n margin-top: 4px;\n min-width: min(200px, 50vw);\n word-wrap: break-word;\n word-break: break-word;\n }\n\n .gleap-frame-container-inner {\n position: relative;\n width: 100%;\n height: calc(100vh - ${84 + buttonY}px);\n max-height: ${widgetMaxHeight}px;\n }\n\n .gleap-frame-container--survey .gleap-frame-container-inner {\n height: calc(100vh - 40px);\n }\n \n .gleap-frame-container-inner:before {\n content: \" \";\n position: absolute;\n width: 100%;\n height: calc(100% - ${containerRadius}px);\n top: ${containerRadius}px;\n background-color: ${backgroundColor};\n z-index: -1;\n }\n \n .gleap-frame-container iframe {\n height: 100% !important;\n width: 100% !important;\n max-width: 100% !important;\n display: block !important;\n pointer-events: auto !important;\n }\n \n .gleap-frame-container--hidden {\n display: none !important;\n pointer-events: none;\n animation: none !important;\n }\n \n .bb-feedback-button {\n margin: 0px;\n position: fixed;\n bottom: ${buttonY}px;\n right: ${buttonX}px;\n border-radius: 30px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n background-color: transparent;\n color: #000000;\n z-index: ${zIndexBase + 30};\n box-sizing: border-box;\n display: flex;\n align-items: center;\n padding: 0px;\n }\n\n [dir=rtl].bb-feedback-button {\n bottom: ${buttonY}px;\n right: auto;\n left: ${buttonX}px;\n }\n \n .bb-feedback-button--bottomleft {\n bottom: ${buttonY}px;\n right: auto;\n left: ${buttonX}px;\n }\n\n [dir=rtl].bb-feedback-button--bottomleft {\n bottom: ${buttonY}px;\n right: ${buttonX}px;\n left: auto;\n }\n \n .bb-feedback-button--disabled {\n display: none !important;\n }\n\n .bb-feedback-button--hidden {\n display: none !important;\n }\n \n .bb-feedback-button-text {\n padding: 8px 12px;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n background-color: #fff;\n border-radius: 8px;\n box-shadow: 0px 0px 14px 0px rgba(0, 0, 0, 0.15);\n position: relative;\n z-index: 99;\n }\n \n .bb-feedback-button-text:before {\n content: \"\";\n position: absolute;\n box-shadow: rgba(0, 0, 0, 0.04) 6px 6px 5px;\n transform: rotate(315deg);\n bottom: 16px;\n right: -4px;\n border-width: 10px;\n border-style: solid;\n border-color: transparent #fff #fff transparent;\n }\n \n .bb-feedback-button--bottomleft .bb-feedback-button-text:before {\n display: none;\n }\n \n .bb-feedback-button-text:after {\n content: \"\";\n position: absolute;\n bottom: 12px;\n right: 0px;\n background-color: #fff;\n width: 5px;\n height: 30px;\n }\n \n .bb-feedback-button-text-title {\n font-family: sans-serif;\n font-size: 14px;\n color: #666;\n line-height: 18px;\n max-width: 220px;\n }\n \n .bb-feedback-button-text-title b {\n color: #000000;\n font-weight: 600;\n }\n\n .bb-notification-bubble {\n position: absolute;\n top: -5px;\n right: -5px;\n min-width: 12px;\n padding: 0px 4px;\n height: 20px;\n min-width: 20px;\n border-radius: 20px;\n background-color: red;\n color: #fff;\n font-size: 11px;\n font-family: sans-serif;\n text-align: center;\n line-height: 20px;\n }\n\n .bb-notification-bubble--hidden {\n display: none;\n }\n \n .bb-feedback-button-icon {\n width: 48px;\n height: 48px;\n border-radius: 48px;\n background-color: #485bff;\n transition: box-shadow, transform 0.2s ease-in-out;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n position: relative;\n }\n \n .bb-feedback-button-classic {\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n top: 50%;\n right: 0px;\n position: fixed;\n transform: rotate(-90deg) translate(50%, -50%);\n transform-origin: 100% 50%;\n padding: 9px 20px;\n text-align: center;\n background-color: #485bff;\n border-top-left-radius: 8px;\n border-top-right-radius: 8px;\n font-family: sans-serif;\n font-size: 16px;\n color: #fff;\n box-shadow: 0px 0px 14px 0px rgba(0, 0, 0, 0.25);\n }\n\n [dir=rtl].bb-feedback-button .bb-feedback-button-classic {\n top: 50%;\n left: 0px;\n right: auto;\n transform: rotate(90deg) translate(-50%, -100%);\n transform-origin: 0% 0%;\n }\n \n .bb-feedback-button-classic--left {\n top: 50%;\n left: 0px;\n right: auto;\n transform: rotate(90deg) translate(-50%, -100%);\n transform-origin: 0% 0%;\n }\n\n [dir=rtl].bb-feedback-button .bb-feedback-button-classic--left {\n top: 50%;\n right: 0px;\n left: auto;\n transform: rotate(-90deg) translate(50%, -50%);\n transform-origin: 100% 50%;\n }\n \n .bb-feedback-button-classic--bottom {\n top: auto;\n bottom: 0px;\n transform: none;\n right: ${buttonX}px;\n left: auto;\n }\n \n [dir=rtl].bb-feedback-button .bb-feedback-button-classic--bottom {\n top: auto;\n bottom: 0px;\n transform: none;\n left: ${buttonX}px;\n right: auto;\n }\n\n .bb-feedback-button--classic-button-style {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n \n .bb-feedback-button--open.bb-feedback-button--classic-button-style {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: bbFadeOutRight;\n }\n \n .bb-feedback-button .bb-logo-logo {\n position: absolute;\n width: 30px;\n height: 30px;\n top: 9px;\n left: 9px;\n object-fit: contain;\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-name: bbZoomIn;\n }\n \n .bb-feedback-button .bb-logo-arrowdown {\n position: absolute;\n width: 14px;\n height: 14px;\n top: 17px;\n left: 17px;\n object-fit: contain;\n animation-duration: 0.3s;\n animation-fill-mode: both;\n }\n \n .bb-feedback-button .bb-logo-arrowdown {\n animation-name: bbZoomOut;\n }\n \n .bb-feedback-button--open .bb-logo-arrowdown {\n animation-name: bbZoomIn;\n }\n \n .bb-feedback-button--open .bb-logo-logo {\n animation-name: bbZoomOut;\n }\n \n .bb-feedback-button-icon:hover {\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.25), 0px 0px 20px rgba(0, 0, 0, 0.2);\n transform: scale(1.1);\n }\n \n .bb-feedback-button--open .bb-feedback-button-text {\n animation-name: bbFadeOutDown;\n }\n \n .bb-feedback-button--open .bb-feedback-button-icon {\n display: flex;\n }\n \n .bb-capture-svg {\n position: fixed;\n z-index: ${zIndexBase + 14};\n top: 0px;\n left: 0px;\n right: 0px;\n width: 100%;\n height: 100%;\n padding: 0px;\n margin: 0px;\n cursor: crosshair;\n }\n\n .bb-capture-svg--preview {\n cursor: auto !important;\n }\n \n .bb-rec-on-circle {\n animation-name: bbRecIconFade;\n animation-duration: 2s;\n animation-iteration-count: infinite;\n animation-direction: alternate;\n }\n \n .bb-rec-on-cont {\n animation-name: bbRecIconContFade;\n animation-duration: 2s;\n animation-iteration-count: infinite;\n animation-direction: alternate;\n }\n \n .bb-capture-editor-drag-info {\n position: fixed;\n top: -200px;\n left: 0px;\n z-index: ${zIndexBase + 16};\n transition: opacity 0.3s ease-in-out;\n }\n \n .bb-capture-editor-drag-info svg {\n width: 24px;\n height: 24px;\n }\n \n .bb-capture-editor-borderlayer {\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n border: 4px solid ${primaryColor};\n cursor: crosshair;\n z-index: ${zIndexBase + 10};\n box-sizing: border-box;\n pointer-events: none;\n }\n \n .bb-capture-editor-notrecording .bb-capture-editor-borderlayer {\n background-color: rgba(0, 0, 0, 0.8);\n }\n\n .bb-capture-editor-recording .bb-capture-editor-borderlayer {\n border: 4px solid #eb144c !important;\n }\n \n .bb-capture-editor-recording .bb-capture-dismiss {\n display: none;\n }\n \n .bb-capture-editor-item-inactive {\n opacity: 0.3;\n cursor: not-allowed !important;\n }\n \n .bb-capture-editor-notrecording .bb-capture-toolbar-drawingitem {\n opacity: 0.3;\n cursor: not-allowed !important;\n }\n \n .bb-capture-editor-notrecording .bb-capture-editor-drag-info {\n display: none;\n }\n \n .bb-capture-editor-notrecording .bb-capture-svg {\n pointer-events: none !important;\n }\n \n .bb-capture-toolbar {\n position: fixed;\n top: 20px;\n left: 50%;\n transform: translateX(-50%);\n z-index: ${zIndexBase + 18};\n background-color: #fff;\n padding: 5px;\n display: flex;\n align-items: center;\n border-radius: 8px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n transition: opacity 0.3s ease-in-out;\n }\n \n .bb-capture-dismiss {\n position: fixed;\n top: 0px;\n right: 0px;\n z-index: ${zIndexBase + 18};\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n width: 36px;\n height: 36px;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: ${primaryColor};\n border-bottom-left-radius: ${formItemSmallBorderRadius}px;\n }\n\n [dir=rtl] .bb-capture-dismiss {\n top: 0px;\n left: 0px;\n right: auto;\n border-bottom-left-radius: 0px !important;\n border-bottom-right-radius: ${formItemSmallBorderRadius}px;\n }\n \n .bb-capture-dismiss svg path {\n fill: ${contrastColor};\n }\n \n .bb-capture-dismiss svg {\n width: 20px;\n height: 20px;\n object-fit: contain;\n }\n \n .bb-capture-button-next {\n font-family: sans-serif;\n box-sizing: border-box;\n font-weight: 600;\n text-align: center;\n width: auto;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n margin: 0px;\n line-height: 36px;\n padding: 0px 12px;\n font-size: 15px;\n margin-left: 12px;\n }\n\n [dir=rtl].bb-capture-editor .bb-capture-button-next {\n margin-left: auto;\n margin-right: 12px;\n }\n \n .bb-capture-toolbar-item-spacer {\n width: 1px;\n height: 38px;\n min-width: 1px;\n margin: 0px 5px;\n }\n \n .bb-capture-toolbar-item {\n width: 42px;\n height: 38px;\n min-width: 42px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n position: relative;\n margin-right: 5px;\n }\n\n .drag-handle-item {\n cursor: grab !important;\n width: 34px;\n min-width: 34px;\n }\n\n .drag-handle-item svg {\n width: 18px !important;\n height: 18px !important;\n }\n \n .bb-capture-toolbar-item svg {\n width: 23px;\n height: 23px;\n object-fit: contain;\n }\n \n .bb-capture-toolbar-item-selectedcolor {\n border-radius: 100%;\n width: 20px;\n height: 20px;\n background-color: #db4035;\n }\n \n .bb-capture-toolbar-item[data-type=\"undo\"] svg {\n width: 18px;\n height: 18px;\n }\n \n .bb-capture-toolbar-item[data-active=\"true\"] {\n position: relative;\n }\n \n .bb-capture-preview {\n display: none;\n background-color: rgba(0, 0, 0, 0.6);\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n justify-content: center;\n align-items: center;\n z-index: ${zIndexBase + 20};\n }\n \n .bb-capture-preview-inner {\n background-color: #fff;\n padding: 0px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n border-radius: 8px;\n flex-direction: column;\n max-width: 640px;\n width: 100%;\n margin: 20px;\n }\n \n .bb-capture-preview-inner video {\n border-radius: 8px 8px 0px 0px;\n display: block;\n border: 0px;\n outline: none;\n width: 100%;\n max-height: 60vh;\n }\n \n .bb-capture-preview-buttons {\n display: flex;\n justify-content: space-between;\n padding: 14px;\n }\n \n .bb-capture-preview-retrybutton {\n font-family: sans-serif;\n border-radius: 21px;\n box-sizing: border-box;\n padding: 12px 26px;\n font-size: 16px;\n line-height: 19px;\n font-weight: 600;\n text-align: center;\n margin-top: 0px;\n margin-bottom: 0px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-preview-sendbutton {\n font-family: sans-serif;\n border-radius: 21px;\n box-sizing: border-box;\n padding: 12px 26px;\n font-size: 16px;\n line-height: 19px;\n font-weight: 600;\n text-align: center;\n margin-top: 0px;\n margin-bottom: 0px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-preview-retrybutton:hover,\n .bb-capture-preview-sendbutton:hover {\n opacity: 0.9;\n }\n \n .bb-capture-toolbar-item-recording {\n margin-right: 0px;\n }\n \n .bb-capture-toolbar-item-recording svg {\n width: 33px;\n height: 33px;\n }\n \n .bb-capture-toolbar-item-colorpicker {\n position: fixed;\n top: 70px;\n left: 50%;\n transform: translateX(-50%);\n z-index: ${zIndexBase + 18};\n background-color: #fff;\n display: none;\n padding: 10px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n border-radius: 8px;\n }\n \n .bb-capture-toolbar-item-color {\n width: 20px;\n height: 20px;\n border-radius: 100%;\n margin-right: 12px;\n box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.15);\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-toolbar-item-color:hover {\n box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.25);\n }\n \n .bb-capture-toolbar-item-color:last-of-type {\n margin-right: 0px;\n }\n \n [dir=rtl].bb-capture-editor .bb-capture-toolbar-item-color {\n margin-right: auto;\n margin-left: 12px;\n }\n \n [dir=rtl].bb-capture-editor .bb-capture-toolbar-item-color:last-of-type {\n margin-right: auto;\n margin-left: 0px;\n }\n \n .bb-capture-toolbar-item-recording[data-active=\"true\"] svg:first-of-type {\n display: none;\n }\n \n .bb-capture-toolbar-item-recording[data-active=\"true\"] svg:nth-of-type(2) {\n display: block;\n }\n \n .bb-capture-toolbar-item-recording[data-active=\"false\"] svg:first-of-type {\n display: block;\n }\n \n .bb-capture-toolbar-item-recording[data-active=\"false\"] svg:nth-of-type(2) {\n display: none;\n }\n \n .bb-capture-toolbar-item--active {\n background-color: #eee;\n }\n \n .bb-capture-toolbar-item:hover svg {\n opacity: 1;\n }\n \n .bb-capture-toolbar-item--active {\n background-color: #f8f8f8;\n }\n \n .bb-capture-toolbar-item--active svg {\n opacity: 1;\n }\n \n .bb-capture-toolbar-item--inactivecross::before {\n content: \"\";\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n height: 3px;\n width: 26px;\n margin: auto;\n border-radius: 4px;\n background-color: #e80000;\n transform: rotate(45deg);\n }\n \n .bb-capture-toolbar-item--inactivecross svg {\n fill: #eee;\n }\n \n .bb-capture-toolbar-item-timer {\n text-align: left;\n line-height: 32px;\n font-size: 14px;\n font-family: sans-serif;\n margin: 5px;\n min-width: 40px;\n display: none;\n }\n \n .bb-capture-toolbar-item .bb-tooltip {\n background-color: #555;\n color: #fff;\n visibility: hidden;\n font-size: 14px;\n font-family: sans-serif;\n text-align: center;\n padding: 5px 10px;\n position: absolute;\n z-index: 1;\n top: 45px;\n left: 0px;\n transform: translateX(calc(-50% + 21px));\n opacity: 0;\n transition: opacity 0.3s;\n white-space: nowrap;\n }\n \n .bb-capture-toolbar-item .bb-tooltip::after {\n content: \"\";\n position: absolute;\n bottom: 100%;\n left: 50%;\n margin-left: -5px;\n border-width: 5px;\n border-style: solid;\n transform: rotate(180deg);\n border-color: #555 transparent transparent transparent;\n }\n \n .bb-capture-toolbar-item:hover .bb-tooltip {\n visibility: visible;\n opacity: 1;\n }\n \n .bb-capture-options {\n display: none;\n }\n \n .bb-capture-options--active {\n display: flex;\n }\n\n @keyframes bbFadeOutRight {\n from {\n opacity: 1;\n }\n \n to {\n opacity: 0;\n }\n }\n \n @keyframes bbFadeOutDown {\n from {\n opacity: 1;\n }\n \n to {\n opacity: 0;\n transform: translate3d(0, 100%, 0);\n }\n }\n \n @keyframes bbFadeInOpacity {\n from {\n opacity: 0;\n }\n \n to {\n opacity: 1;\n }\n }\n \n @keyframes bbZoomOut {\n from {\n opacity: 1;\n }\n \n 50% {\n opacity: 0;\n transform: scale3d(0.3, 0.3, 0.3);\n }\n \n to {\n opacity: 0;\n }\n }\n \n @keyframes bbZoomIn {\n from {\n opacity: 0;\n transform: scale3d(0.3, 0.3, 0.3);\n }\n \n 50% {\n opacity: 1;\n }\n }\n \n @keyframes bbRecIconContFade {\n 0% {\n fill: #b10802;\n }\n 50% {\n fill: #ff0000;\n }\n 100% {\n fill: #b10802;\n }\n } \n .bb-capture-preview-retrybutton {\n color: ${contrastBackgroundColor};\n border-radius: ${buttonBorderRadius}px;\n background-color: ${backgroundColorHover};\n }\n .bb-capture-preview-retrybutton:hover {\n background-color: ${hoverHoverColor};\n }\n @keyframes bb-suc-fill {\n 100% {\n box-shadow: inset 0px 0px 0px 30px ${primaryColor};\n }\n }\n .bb-capture-toolbar-item-spacer {\n background-color: ${backgroundColorHover};\n }\n .bb-tooltip {\n border-radius: ${formItemBorderRadius}px;\n }\n @keyframes bbRecIconFade {\n 0% {\n fill: transparent;\n }\n 50% {\n fill: ${hoverHoverColor};\n }\n 100% {\n fill: transparent;\n }\n }\n .bb-capture-preview-sendbutton {\n color: ${contrastColor};\n background-color: ${primaryColor};\n border-radius: ${buttonBorderRadius}px;\n }\n .bb-capture-button-next {\n color: ${contrastColor};\n background-color: ${primaryColor};\n border-radius: ${formItemSmallBorderRadius}px;\n }\n .bb-capture-preview-inner {\n background-color: ${backgroundColor};\n border-radius: ${formItemBorderRadius}px;\n }\n .bb-capture-toolbar-item-timer {\n color: ${subTextColor};\n }\n .bb-svg-path {\n fill: ${contrastBackgroundColor};\n }\n .bb-capture-toolbar-item {\n border-radius: ${formItemBorderRadius}px;\n }\n .bb-capture-toolbar {\n background-color: ${backgroundColor};\n border-radius: ${formItemBorderRadius}px;\n }\n .bb-capture-toolbar-item-colorpicker {\n background-color: ${backgroundColor};\n }\n .bb-capture-toolbar-item--active {\n background-color: ${backgroundColorHover};\n }\n .bb-feedback-button-classic {\n border-top-left-radius: ${formItemBorderRadius}px;\n border-top-right-radius: ${formItemBorderRadius}px;\n }\n .bb-logo-logo--default path {\n fill: ${contrastButtonColor};\n }\n .bb-logo-arrowdown {\n fill: ${contrastButtonColor};\n }\n .bb-feedback-button-icon {\n background-color: ${buttonColor};\n }\n .bb-feedback-button-classic {\n background-color: ${buttonColor};\n color: ${contrastButtonColor};\n }\n\n @media only screen and (max-width: 450px) {\n [dir=rtl].gleap-frame-container,\n .gleap-frame-container {\n left: 0px;\n right: 0px;\n width: 100vw;\n max-width: 100vw;\n min-height: 100vh;\n max-height: 100vh;\n min-height: 100dvh !important;\n max-height: 100dvh !important;\n top: 0px;\n bottom: 0px;\n border-radius: 0px;\n animation-name: gleapFadeInUpMobile;\n }\n\n .gleap-frame-container-inner {\n width: 100vw;\n height: 100%;\n }\n\n .gleap-frame-container:not(.gleap-frame-container--survey):not(.gleap-frame-container--survey-full) .gleap-frame-container-inner {\n max-height: calc(var(--glvh, 1vh) * 100) !important;\n }\n\n .gleap-frame-container--survey {\n height: auto !important;\n top: initial !important;\n bottom: 0px !important;\n min-height: initial !important;\n }\n\n .gleap-frame-container--survey .gleap-frame-container-inner {\n height: 100vh !important;\n }\n\n .bb-tooltip {\n display: none !important;\n }\n \n .bb-capture-toolbar-item-colorpicker {\n top: 75px;\n }\n \n .bb-capture-button-next {\n margin-left: auto;\n }\n \n .bb-capture-dismiss {\n display: none;\n }\n \n .bb-capture-toolbar {\n top: 15px;\n right: 15px;\n left: 15px;\n width: auto;\n transform: none;\n }\n\n .bb-capture-editor-drag-info {\n display: none;\n }\n \n .bb-capture-editor-borderlayer {\n border-width: 4px;\n }\n }\n \n @media print {\n .bb-feedback-button {\n display: none !important;\n }\n \n .gleap-frame-container {\n display: none !important;\n }\n }\n\n .gleap-tour-sender {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n margin-bottom: 10px;\n }\n\n .gleap-tour-sender-image {\n width: 32px;\n height: 32px;\n border-radius: 32px;\n margin-right: 10px;\n background-size: cover;\n background-repeat: no-repeat;\n }\n\n .gleap-tour-popover.gleap-tour-popover-post {\n min-width: 550px;\n max-width: 550px;\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-tour-popover.gleap-tour-popover-post {\n min-width: calc(100vw - 40px);\n max-width: calc(100vw - 40px);\n }\n }\n\n .gleap-tour-message,\n .gleap-tour-message p,\n .gleap-tour-message ul {\n color: ${contrastBackgroundColor};\n }\n\n .gleap-tour-message h2 {\n font-weight: 600;\n font-size: 22px;\n }\n\n .gleap-tour-message h3 {\n font-weight: 600;\n font-size: 18px;\n }\n\n .gleap-tour-message p {\n line-height: 1.3;\n margin-bottom: 10px !important;\n margin-top: 10px !important;\n }\n\n .gleap-tour-message ul {\n line-height: 1.3;\n padding-left: 20px;\n margin-top: 10px !important;\n margin-bottom: 10px !important;\n }\n\n .gleap-tour-message {\n max-height: calc(80vh - 100px) !important;\n overflow-y: auto;\n min-width: 270px;\n }\n\n .gleap-tour-message::-webkit-scrollbar {\n width: 5px;\n }\n\n .gleap-tour-message::-webkit-scrollbar-track {\n border-radius: 0px;\n }\n \n .gleap-tour-message::-webkit-scrollbar-thumb {\n background: ${hoverHoverColor}; \n border-radius: 5px;\n }\n\n .gleap-tour-message::-webkit-scrollbar-thumb:hover {\n background: ${subTextColor};\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-tour-message {\n min-width: auto !important;\n }\n }\n\n .gleap-tour-message iframe {\n width: 100%;\n height: 300px;\n margin-top: 10px;\n margin-bottom: 10px;\n border: none;\n outline: none;\n display: block;\n }\n\n .gleap-tour-sender-name {\n font-size: 15px;\n }\n\n .gleap-tour-video {\n width: 100%;\n max-width: 100%;\n }\n\n .gleap-tour-video-svg--fullscreen {\n width: 100% !important;\n height: 100% !important;\n top: 0px !important;\n left: 0px !important;\n right: 0px !important;\n bottom: 0px !important;\n }\n\n .gleap-tour-video--playing .gleap-tour-video-playpause {\n opacity: 0;\n }\n \n .gleap-tour-video--playing:hover .gleap-tour-video-playpause {\n opacity: 1;\n }\n\n .gleap-tour-popover-video-pointer {\n padding: 0px !important;\n border-radius: 8px;\n position: relative;\n background-color: transparent !important;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-footer {\n position: absolute;\n top: 0px;\n left: 20px;\n right: 20px;\n opacity: 0;\n transition: opacity 200ms ease-in-out;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-footer button {\n padding: 5px 12px;\n }\n\n .gleap-tour-popover-video-pointer.gleap-tour-popover-can-close .gleap-tour-popover-footer {\n right: 40px !important;\n }\n\n .gleap-tour-popover-video-pointer:hover .gleap-tour-popover-footer {\n opacity: 1;\n }\n\n .gleap-tour-popover-pointer.gleap-tour-popover-no-sender .gleap-tour-message {\n padding-right: 20px;\n }\n\n .gleap-tour-video video {\n width: 100%;\n max-width: 100%;\n height: auto;\n border: none;\n outline: none;\n display: block;\n border-radius: 8px;\n }\n\n .gleap-admin-collapse-ui {\n z-index: ${zIndexBase + 35};\n cursor: pointer;\n position: fixed;\n bottom: 75px;\n right: 20px;\n width: 32px;\n height: 32px;\n border-radius: 100%;\n background-color: #fff;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: rgba(0, 0, 0, 0.16) 0px 10px 36px 0px, rgba(0, 0, 0, 0.06) 0px 0px 0px 1px;\n }\n\n .gleap-admin-collapse-ui svg {\n width: 20px;\n height: 14px;\n fill: #000 !important;\n }\n\n .gleap-admin-collapse-ui-active {\n bottom: 20px !important;\n }\n\n .gleap-admin-collapse-ui-active svg {\n transform: rotate(180deg);\n }\n\n .gleap-admin-frame-container-active {\n display: none !important;\n }\n\n .gleap-admin-frame-container {\n position: fixed;\n bottom: 0px;\n left: 0px;\n right: 0px;\n width: 100vw;\n z-index: ${zIndexBase + 40};\n }\n\n .gleap-admin-frame {\n width: 100%;\n height: 100% !important;\n border: none;\n outline: none;\n display: block;\n }\n \n .gleap-tour-message .linktype-link {\n display: inline-block !important;\n background-color: transparent !important;\n color: ${buttonColor} !important;\n }\n\n .gleap-tooltip .linktype-button,\n .gleap-tour-message .linktype-button {\n display: inline-block !important;\n border-radius: 5px;\n box-sizing: border-box;\n padding: 10px 20px !important;\n text-decoration: none !important;\n background-color: ${buttonColor} !important;\n color: ${contrastButtonColor} !important;\n }\n\n .gleap-tour-message img {\n width: 100%;\n max-width: 100%;\n min-height: 260px;\n height: auto;\n margin-top: 10px;\n margin-bottom: 10px;\n object-fit: cover;\n }\n\n .gleap-tour-active .gleap-tour-overlay {\n pointer-events: none;\n }\n \n .gleap-tour-active * {\n pointer-events: none;\n }\n \n .gleap-tour-active .gleap-tour-active-element,\n .gleap-tour-active .gleap-tour-active-element *,\n .gleap-tour-popover,\n .gleap-tour-popover * {\n pointer-events: auto;\n }\n \n @keyframes animate-fade-in {\n 0% {\n opacity: 0;\n }\n \n to {\n opacity: 1;\n }\n }\n \n .gleap-tour-fade .gleap-tour-overlay {\n animation: animate-fade-in 200ms ease-in-out;\n }\n \n .gleap-tour-fade .gleap-tour-popover {\n animation: animate-fade-in 200ms;\n }\n\n .gleap-tour-video-playpause {\n position: absolute;\n bottom: 8px;\n left: 8px;\n width: 32px;\n height: 32px;\n padding: 4px;\n background-color: rgba(0,0,0,0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border-radius: 8px;\n transition: opacity 200ms ease-in-out;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-arrow {\n display: none !important;\n }\n\n .gleap-tour-video-playpause svg {\n width: 34px;\n height: auto;\n fill: #fff;\n }\n \n /* Popover styles */\n .gleap-tour-popover {\n all: unset;\n box-sizing: border-box;\n color: #2d2d2d;\n margin: 0;\n padding: 15px;\n border-radius: ${formItemBorderRadius}px;\n min-width: 250px;\n max-width: 300px;\n box-shadow: 0 1px 10px #0006;\n z-index: 1000000000;\n position: fixed;\n top: 0;\n right: 0;\n background-color: #fff;\n }\n \n .gleap-tour-popover * {\n font-family: \"Helvetica Neue\", Inter, ui-sans-serif, \"Apple Color Emoji\", Helvetica, Arial, sans-serif;\n }\n \n .gleap-tour-popover-title {\n font: 19px / normal sans-serif;\n font-weight: 700;\n display: block;\n position: relative;\n line-height: 1.5;\n zoom: 1;\n margin: 0;\n }\n \n .gleap-tour-popover-close-btn {\n all: unset;\n position: absolute;\n top: 5px;\n right: 5px;\n width: 32px;\n height: 32px;\n cursor: pointer;\n font-size: 30px;\n font-weight: 500;\n line-height: 32px;\n color: #d2d2d2;\n z-index: 1;\n text-align: center;\n transition: color;\n transition-duration: 200ms;\n }\n \n .gleap-tour-popover-close-btn:hover,\n .gleap-tour-popover-close-btn:focus {\n color: #2d2d2d;\n }\n \n .gleap-tour-popover-title[style*=\"block\"] + .gleap-tour-popover-description {\n margin-top: 5px;\n }\n \n .gleap-tour-popover-description {\n margin-bottom: 0;\n font: 15px / normal sans-serif;\n line-height: 1.5;\n font-weight: 400;\n zoom: 1;\n }\n \n .gleap-tour-popover-footer {\n margin-top: 15px;\n text-align: right;\n zoom: 1;\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n \n .gleap-tour-popover-progress-text {\n font-size: 13px;\n font-weight: 400;\n color: #727272;\n zoom: 1;\n }\n \n .gleap-tour-popover-footer button {\n background-color: ${primaryColor};\n color: ${contrastColor};\n border-radius: ${formItemSmallBorderRadius}px;\n box-sizing: border-box;\n padding: 10px 20px;\n font-size: 14px;\n font-weight: bold;\n line-height: 21px;\n border: none;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: none !important;\n outline: none !important;\n }\n\n .gleap-tour-popover-prev-btn {\n color: ${contrastBackgroundColor} !important;\n background-color: ${backgroundColorHover} !important;\n margin-right: 3px;\n }\n\n .gleap-tour-popover-prev-btn:hover {\n background-color: ${primaryColor}22 !important;\n color: ${primaryColor} !important;\n }\n \n .gleap-tour-popover-footer .gleap-tour-popover-btn-disabled {\n opacity: 0.5;\n pointer-events: none;\n }\n \n /* Disable the scrolling of parent element if it has an active element*/\n :not(body):has(> .gleap-tour-active-element) {\n overflow: hidden !important;\n }\n \n .gleap-tour-no-interaction, .gleap-tour-no-interaction * {\n pointer-events: none !important;\n }\n \n .gleap-tour-popover-navigation-btns {\n display: flex;\n flex-grow: 1;\n justify-content: flex-end;\n }\n \n .gleap-tour-popover-navigation-btns button + button {\n margin-left: 4px;\n }\n \n .gleap-tour-popover-arrow {\n content: \"\";\n position: absolute;\n border: 5px solid #fff;\n }\n \n .gleap-tour-popover-arrow-side-over {\n display: none;\n }\n \n /** Popover Arrow Sides **/\n .gleap-tour-popover-arrow-side-left {\n left: 100%;\n border-right-color: transparent;\n border-bottom-color: transparent;\n border-top-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-right {\n right: 100%;\n border-left-color: transparent;\n border-bottom-color: transparent;\n border-top-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-top {\n top: 100%;\n border-right-color: transparent;\n border-bottom-color: transparent;\n border-left-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-bottom {\n bottom: 100%;\n border-left-color: transparent;\n border-top-color: transparent;\n border-right-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-center {\n display: none;\n }\n \n /* Left/Start + Right/Start */\n .gleap-tour-popover-arrow-side-left.gleap-tour-popover-arrow-align-start,\n .gleap-tour-popover-arrow-side-right.gleap-tour-popover-arrow-align-start {\n top: 15px;\n }\n \n /* Top/Start + Bottom/Start */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-start,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-start {\n left: 15px;\n }\n \n /* End/Left + End/Right */\n .gleap-tour-popover-arrow-align-end.gleap-tour-popover-arrow-side-left,\n .gleap-tour-popover-arrow-align-end.gleap-tour-popover-arrow-side-right {\n bottom: 15px;\n }\n \n /* Top/End + Bottom/End */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-end,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-end {\n right: 15px;\n }\n \n /* Left/Center + Right/Center */\n .gleap-tour-popover-arrow-side-left.gleap-tour-popover-arrow-align-center,\n .gleap-tour-popover-arrow-side-right.gleap-tour-popover-arrow-align-center {\n top: 50%;\n margin-top: -5px;\n }\n \n /* Top/Center + Bottom/Center */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-center,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-center {\n left: 50%;\n margin-left: -5px;\n }\n \n /* No arrow */\n .gleap-tour-popover-arrow-none {\n display: none;\n } \n\n /* Modal styles */\n .gleap-modal-wrapper {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: ${zIndexBase + 40};\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .gleap-modal-backdrop {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.5);\n z-index: ${zIndexBase + 41};\n }\n\n .gleap-modal {\n position: relative;\n width: 90%;\n max-width: 600px;\n max-height: 90vh;\n z-index: ${zIndexBase + 100};\n background-color: ${backgroundColor};\n border-radius: ${containerRadius}px;\n overflow: hidden;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-name: gleapFadeInUp;\n }\n\n .gleap-modal-frame {\n width: 100%;\n border: none;\n display: block;\n outline: none;\n }\n\n body.gleap-modal-open {\n overflow: hidden;\n }\n\n @keyframes gleapFadeInUp {\n from {\n opacity: 0;\n transform: translate3d(0, 20px, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n `;\n\n const oldNode = document.querySelector(\".gleap-styles\");\n if (oldNode) {\n oldNode.remove();\n }\n const node = document.createElement(\"style\");\n node.innerHTML = colorStyleSheet;\n node.className = \"gleap-styles\";\n document.body.appendChild(node);\n};\n\nexport const loadIcon = function (name, color) {\n if (name === \"button\") {\n return ``;\n }\n\n if (name === \"drag\") {\n return ``;\n }\n\n if (name === \"unmute\") {\n return ``;\n }\n\n if (name === \"mute\") {\n return ``;\n }\n\n if (name === \"replay\") {\n return `\n \n `;\n }\n\n if (name === \"dismiss\") {\n return ``;\n }\n\n if (name === \"blur\") {\n return `\n \n`;\n }\n\n if (name === \"pen\") {\n return `\n \n \n \n \n \n \n \n \n \n \n \n \n`;\n }\n\n if (name === \"rect\") {\n return `\n \n \n \n \n \n \n \n \n \n \n`;\n }\n\n if (name === \"pointer\") {\n return `\n \n `;\n }\n\n if (name === \"clip\") {\n return `\n \n \n \n \n \n`;\n }\n\n if (name === \"mic\") {\n return `\n \n \n \n \n `;\n }\n\n if (name === \"camera\") {\n return `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n`;\n }\n\n if (name === \"recorderon\") {\n return `\n \n \n \n \n \n \n \n \n \n \n \n`;\n }\n\n if (name === \"recorderoff\") {\n return `\n \n \n \n \n \n \n \n \n `;\n }\n\n if (name === \"arrowdown\") {\n return `\n \n `;\n }\n\n if (name === \"arrowleft\") {\n return `\n \n `;\n }\n\n if (name === \"close\") {\n return `\n \n `;\n }\n\n if (name === \"undo\") {\n return `\n \n \n \n \n \n \n \n \n \n `;\n }\n\n if (name === \"circle-dot\") {\n return ``;\n }\n\n if (name === \"circle-question\") {\n return ``;\n }\n\n if (name === \"circle-info\") {\n return ``;\n }\n\n if (name === \"circle-exclamation\") {\n return ``;\n }\n\n if (name === \"circle-up\") {\n return ``;\n }\n\n if (name === \"circle-right\") {\n return ``;\n }\n\n return \"\";\n};\n","class GleapNetworkIntercepter {\n startTimestamp = Date.now();\n requestId = 0;\n requests = {};\n externalRequests = [];\n maxRequests = 30;\n filters = [];\n defaultBlacklist = [\"gleap.io\"];\n blacklist = [];\n initialized = false;\n stopped = false;\n loadAllResources = false;\n\n // GleapNetworkIntercepter singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapNetworkIntercepter();\n }\n return this.instance;\n }\n\n setLoadAllResources(loadAllResources) {\n this.loadAllResources = loadAllResources;\n }\n\n isContentTypeSupported(contentType) {\n if (typeof contentType !== \"string\") {\n return false;\n }\n\n if (contentType === \"\") {\n return true;\n }\n\n contentType = contentType.toLocaleLowerCase();\n\n const supportedContentTypes = [\"text/\", \"xml\", \"json\"];\n for (var i = 0; i < supportedContentTypes.length; i++) {\n if (contentType.includes(supportedContentTypes[i])) {\n return true;\n }\n }\n\n return false;\n }\n\n getRequests() {\n var requests = JSON.parse(JSON.stringify(Object.values(this.requests)));\n\n // Merge external requests into internal requests.\n if (this.externalRequests && this.externalRequests.length > 0) {\n requests = requests.concat(this.externalRequests);\n }\n\n if (this.filters && this.filters.length > 0) {\n // Perform network log filtering.\n for (var i = 0; i < requests.length; i++) {\n var request = requests[i];\n\n // Headers\n if (request && request.request && request.request.headers) {\n for (var j = 0; j < this.filters.length; j++) {\n delete request.request.headers[this.filters[j]];\n }\n }\n\n // Payload\n if (request && request.request && request.request.payload) {\n var payloadObj = request.request.payload;\n try {\n payloadObj = JSON.parse(request.request.payload);\n } catch (e) { }\n\n if (payloadObj) {\n for (var j = 0; j < this.filters.length; j++) {\n delete payloadObj[this.filters[j]];\n }\n request.request.payload = JSON.stringify(payloadObj);\n }\n }\n\n // Response\n if (request && request.response && request.response.responseText) {\n try {\n var data = JSON.parse(request.response.responseText);\n for (var j = 0; j < this.filters.length; j++) {\n delete data[this.filters[j]];\n }\n request.response.responseText = JSON.stringify(data);\n } catch (e) { }\n }\n }\n }\n\n // Get static resources from performance.\n try {\n if (typeof window !== \"undefined\" && window.performance) {\n var resources = window.performance.getEntriesByType(\"resource\");\n for (var i = 0; i < resources.length; i++) {\n var resource = resources[i];\n if (resource && resource.name) {\n if ((this.loadAllResources || [\"xmlhttprequest\", \"fetch\"].indexOf(resource.initiatorType) > -1) && !requests.find(request => request.url === resource.name)) {\n requests.push({\n type: \"RESOURCE\",\n date: new Date(this.startTimestamp + resource.startTime),\n url: resource.name,\n duration: Math.round(resource.duration),\n initiatorType: resource.initiatorType\n });\n }\n }\n }\n }\n } catch (exp) { }\n\n var blacklist = this.blacklist.concat(this.defaultBlacklist);\n if (blacklist && blacklist.length > 0) {\n try {\n requests = requests.filter((request) => {\n for (var i = 0; i < blacklist.length; i++) {\n if (request && request.url && request.url.includes(blacklist[i])) {\n return false;\n }\n }\n return true;\n });\n } catch (exp) { }\n }\n\n return requests;\n }\n\n setMaxRequests(maxRequests) {\n if (maxRequests > 70) {\n maxRequests = 70;\n }\n this.maxRequests = maxRequests;\n }\n\n setStopped(stopped) {\n this.stopped = stopped;\n }\n\n setFilters(filters) {\n this.filters = this.filters.concat(filters ? filters : []);\n }\n\n setBlacklist(blacklist) {\n this.blacklist = this.blacklist.concat(blacklist ? blacklist : []);\n }\n\n cleanRequests() {\n var keys = Object.keys(this.requests);\n if (keys.length > this.maxRequests) {\n var keysToRemove = keys.slice(0, keys.length - this.maxRequests);\n for (var i = 0; i < keysToRemove.length; i++) {\n delete this.requests[keysToRemove[i]];\n }\n }\n }\n\n calcRequestTime(bbRequestId) {\n if (!bbRequestId || !this.requests || !this.requests[bbRequestId]) {\n return;\n }\n\n var startDate = this.requests[bbRequestId][\"date\"];\n if (startDate) {\n this.requests[bbRequestId][\"duration\"] =\n new Date().getTime() - startDate.getTime();\n }\n }\n\n getTextContentSize(text) {\n var size = 0;\n try {\n size = new TextEncoder().encode(text).length;\n } catch (exp) {\n try {\n size = encodeURI(s).split(/%..|./).length - 1;\n } catch (exp) {\n try {\n size = new Blob([text]).size;\n } catch (exp) {\n size = text.length;\n }\n }\n }\n\n const kiloBytes = size / 1024;\n const megaBytes = kiloBytes / 1024;\n return megaBytes;\n }\n\n cleanupContentSize(text) {\n const contentSize = this.getTextContentSize(text);\n if (contentSize > 0.15) {\n return \"\";\n }\n\n return text;\n }\n\n cleanupPayload(payload) {\n if (payload === undefined || payload === null) {\n return \"{}\";\n }\n\n try {\n if (typeof TextDecoder !== undefined && ArrayBuffer.isView(payload)) {\n let value = new TextDecoder().decode(payload);\n return value;\n }\n } catch (exp) { }\n\n return payload;\n }\n\n preparePayload(payload) {\n var payloadText = this.cleanupPayload(payload);\n return this.cleanupContentSize(payloadText);\n }\n\n start() {\n if (this.initialized) {\n return;\n }\n\n this.initialized = true;\n const self = this;\n this.interceptNetworkRequests({\n onFetch: (params, bbRequestId) => {\n if (this.stopped || !bbRequestId || !this.requests) {\n return;\n }\n\n if (\n params.length > 0 &&\n typeof params[0] !== \"undefined\" &&\n typeof params[0].url !== \"undefined\"\n ) {\n this.requests[bbRequestId] = {\n url: params[0].url,\n date: new Date(),\n request: {\n payload: \"\",\n headers:\n typeof params[0].headers !== \"undefined\"\n ? Object.fromEntries(params[0].headers.entries())\n : {},\n },\n type:\n typeof params[0].method !== \"undefined\" ? params[0].method : \"\",\n };\n } else {\n if (params.length >= 2 && params[1]) {\n var method =\n params[1] && params[1].method ? params[1].method : \"GET\";\n this.requests[bbRequestId] = {\n request: {\n payload: self.preparePayload(params[1].body),\n headers: params[1].headers,\n },\n type: method,\n url: params[0],\n date: new Date(),\n };\n } else {\n this.requests[bbRequestId] = {\n url: params[0],\n date: new Date(),\n };\n }\n }\n\n this.cleanRequests();\n },\n onFetchLoad: (req, bbRequestId) => {\n if (\n this.stopped ||\n !bbRequestId ||\n !this.requests ||\n !this.requests[bbRequestId]\n ) {\n return;\n }\n\n try {\n this.requests[bbRequestId][\"success\"] = true;\n this.requests[bbRequestId][\"response\"] = {\n status: req.status,\n statusText: \"\",\n responseText: \"\",\n };\n this.calcRequestTime(bbRequestId);\n } catch (exp) { }\n\n try {\n var contentType = \"\";\n if (req.headers && typeof req.headers.get !== \"undefined\") {\n contentType = req.headers.get(\"content-type\");\n }\n\n if (this.isContentTypeSupported(contentType)) {\n req\n .text()\n .then((responseText) => {\n if (this.requests[bbRequestId]) {\n this.requests[bbRequestId][\"success\"] = true;\n this.requests[bbRequestId][\"response\"] = {\n status: req.status,\n statusText: req.statusText,\n responseText: self.cleanupContentSize(responseText)\n };\n }\n this.calcRequestTime(bbRequestId);\n this.cleanRequests();\n })\n .catch((err) => {\n this.cleanRequests();\n });\n } else {\n if (this.requests[bbRequestId]) {\n this.requests[bbRequestId][\"success\"] = true;\n this.requests[bbRequestId][\"response\"] = {\n status: req.status,\n statusText: req.statusText,\n responseText: \"\",\n };\n }\n this.calcRequestTime(bbRequestId);\n this.cleanRequests();\n }\n } catch (exp) { }\n },\n onFetchFailed: (err, bbRequestId) => {\n if (\n this.stopped ||\n !bbRequestId ||\n !this.requests ||\n !this.requests[bbRequestId]\n ) {\n return;\n }\n\n this.requests[bbRequestId][\"success\"] = false;\n this.calcRequestTime(bbRequestId);\n this.cleanRequests();\n },\n onOpen: (request, args) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.bbRequestId &&\n args.length >= 2 &&\n this.requests\n ) {\n this.requests[request.bbRequestId] = {\n type: args[0],\n url: args[1],\n date: new Date(),\n };\n }\n\n this.cleanRequests();\n },\n onSend: (request, args) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.bbRequestId &&\n this.requests &&\n this.requests[request.bbRequestId]\n ) {\n this.requests[request.bbRequestId][\"request\"] = {\n payload: this.preparePayload(args.length > 0 ? args[0] : \"{}\"),\n headers: request.requestHeaders,\n };\n }\n\n this.cleanRequests();\n },\n onError: (request, args) => {\n if (\n !this.stopped &&\n this.requests &&\n request &&\n request.currentTarget &&\n request.currentTarget.bbRequestId &&\n this.requests[request.currentTarget.bbRequestId]\n ) {\n this.requests[request.currentTarget.bbRequestId][\"success\"] = false;\n this.calcRequestTime(request.bbRequestId);\n }\n\n this.cleanRequests();\n },\n onLoad: (request, args) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.currentTarget &&\n request.currentTarget.bbRequestId &&\n this.requests &&\n this.requests[request.currentTarget.bbRequestId]\n ) {\n var target = request.currentTarget;\n var responseType = target.responseType;\n var responseText = \"<\" + responseType + \">\";\n if (responseType === \"\" || responseType === \"text\") {\n responseText = this.cleanupContentSize(target.responseText);\n }\n\n this.requests[target.bbRequestId][\"success\"] = true;\n this.requests[target.bbRequestId][\"response\"] = {\n status: target.status,\n statusText: target.statusText,\n responseText: responseText,\n };\n\n this.calcRequestTime(target.bbRequestId);\n }\n\n this.cleanRequests();\n },\n });\n }\n\n interceptNetworkRequests(callback) {\n var self = this;\n const open = XMLHttpRequest.prototype.open;\n const send = XMLHttpRequest.prototype.send;\n\n // Only override open and send if they haven't been overridden already.\n if (XMLHttpRequest.prototype.gleapSetRequestHeader === undefined) {\n XMLHttpRequest.prototype.gleapSetRequestHeader =\n XMLHttpRequest.prototype.setRequestHeader;\n }\n\n if (XMLHttpRequest.prototype.gleapSetRequestHeader) {\n XMLHttpRequest.prototype.setRequestHeader = function (header, value) {\n if (!this.requestHeaders) {\n this.requestHeaders = {};\n }\n\n if (this.requestHeaders && this.requestHeaders.hasOwnProperty(header)) {\n return;\n }\n\n if (!this.requestHeaders[header]) {\n this.requestHeaders[header] = [];\n }\n\n this.requestHeaders[header].push(value);\n this.gleapSetRequestHeader(header, value);\n };\n }\n\n XMLHttpRequest.prototype.open = function () {\n this[\"bbRequestId\"] = ++self.requestId;\n callback.onOpen && callback.onOpen(this, arguments);\n if (callback.onLoad) {\n this.addEventListener(\"load\", callback.onLoad.bind(callback));\n }\n if (callback.onError) {\n this.addEventListener(\"error\", callback.onError.bind(callback));\n }\n return open.apply(this, arguments);\n };\n XMLHttpRequest.prototype.send = function () {\n callback.onSend && callback.onSend(this, arguments);\n return send.apply(this, arguments);\n };\n\n if (window.fetch) {\n (function () {\n var originalFetch = window.fetch;\n window.fetch = function () {\n var bbRequestId = ++self.requestId;\n callback.onFetch(arguments, bbRequestId);\n\n return originalFetch\n .apply(this, arguments)\n .then(function (response) {\n if (response && typeof response.clone === \"function\") {\n const data = response.clone();\n callback.onFetchLoad(data, bbRequestId);\n }\n\n return response;\n })\n .catch((err) => {\n callback.onFetchFailed(err, bbRequestId);\n throw err;\n });\n };\n })();\n }\n\n return callback;\n }\n\n blobToTextPromise(blob) {\n return new Promise(function (resolve, reject) {\n var fr = new FileReader();\n fr.onload = function (evt) {\n if (evt && evt.target && evt.target.result) {\n resolve(evt.target.result);\n } else {\n reject();\n }\n };\n fr.onerror = function (err) {\n reject(err);\n };\n fr.readAsText(blob);\n });\n }\n}\n\nexport default GleapNetworkIntercepter;\n","export const resizeImage = (base64Str, maxWidth = 400, maxHeight = 400) => {\n return new Promise((resolve, reject) => {\n var isJPEG = base64Str.indexOf(\"data:image/jpeg\") === 0;\n var img = new Image();\n img.src = base64Str;\n img.onerror = () => {\n reject();\n };\n img.onload = () => {\n var canvas = document.createElement(\"canvas\");\n var MAX_WIDTH = maxWidth;\n var MAX_HEIGHT = maxHeight;\n\n // Adjust max width / height based on image props\n if (maxWidth > img.width / 1.5) {\n MAX_WIDTH = img.width / 1.5;\n }\n\n if (maxHeight > img.height / 1.5) {\n MAX_HEIGHT = img.height / 1.5;\n }\n\n var width = img.width;\n var height = img.height;\n\n if (width > height) {\n if (width > MAX_WIDTH) {\n height *= MAX_WIDTH / width;\n width = MAX_WIDTH;\n }\n } else {\n if (height > MAX_HEIGHT) {\n width *= MAX_HEIGHT / height;\n height = MAX_HEIGHT;\n }\n }\n canvas.width = width;\n canvas.height = height;\n var ctx = canvas.getContext(\"2d\");\n ctx.drawImage(img, 0, 0, width, height);\n\n if (isJPEG) {\n resolve(canvas.toDataURL(\"image/jpeg\", 0.7));\n } else {\n resolve(canvas.toDataURL());\n }\n };\n });\n};\n\nexport const isMobile = () => {\n if (\n /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(\n navigator.userAgent\n ) ||\n /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(\n navigator.userAgent.substr(0, 4)\n )\n ) {\n return true;\n }\n return false;\n};\n\nexport const gleapDataParser = function (data) {\n if (typeof data === \"string\" || data instanceof String) {\n try {\n return JSON.parse(data);\n } catch (e) {\n return {};\n }\n }\n return data;\n};\n\nexport const truncateString = (str, num) => {\n if (str.length > num) {\n return str.slice(0, num) + \"...\";\n } else {\n return str;\n }\n};\n\nconst removeSubDomain = (v) => {\n try {\n var parts = v.split(\".\");\n var is2ndLevelDomain = false;\n const secondLevel = parts[parts.length - 2];\n if (\n secondLevel === \"co\" ||\n secondLevel === \"com\" ||\n secondLevel === \"gv\" ||\n secondLevel === \"ac\" ||\n secondLevel === \"edu\" ||\n secondLevel === \"gov\" ||\n secondLevel === \"mil\" ||\n secondLevel === \"net\" ||\n secondLevel === \"org\"\n ) {\n is2ndLevelDomain = true;\n }\n parts = parts.slice(is2ndLevelDomain ? -3 : -2);\n return parts.join(\".\");\n } catch (exp) {}\n return v;\n};\n\nexport const loadFromGleapCache = (key) => {\n try {\n const cachedData = localStorage.getItem(`gleap-widget-${key}`);\n if (cachedData) {\n const config = JSON.parse(cachedData);\n return config;\n }\n } catch (exp) {}\n return null;\n};\n\nexport const saveToGleapCache = (key, data) => {\n const k = `gleap-widget-${key}`;\n if (data) {\n try {\n localStorage.setItem(k, JSON.stringify(data));\n } catch (exp) {}\n } else {\n localStorage.removeItem(k);\n }\n};\n\nexport const setGleapCookie = (name, value, days) => {\n try {\n var expires = \"\";\n if (days) {\n var date = new Date();\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\n expires = \"; expires=\" + date.toUTCString();\n }\n const host = removeSubDomain(window.location.host.split(\":\")[0]);\n document.cookie =\n name + \"=\" + (value || \"\") + expires + \"; path=/; domain=\" + host;\n } catch (exp) {}\n};\n\nexport const getGleapCookie = (name) => {\n try {\n var nameEQ = name + \"=\";\n var ca = document.cookie.split(\";\");\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n while (c.charAt(0) == \" \") c = c.substring(1, c.length);\n if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);\n }\n } catch (exp) {}\n return null;\n};\n\nexport const eraseGleapCookie = (name) => {\n try {\n const host = removeSubDomain(window.location.host.split(\":\")[0]);\n document.cookie =\n name + \"=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT; Domain=\" + host;\n } catch (exp) {}\n};\n\nexport const getDOMElementDescription = (element, html = true) => {\n var innerText = truncateString(element.innerText || \"\", 40)\n .replace(/(\\r\\n|\\n|\\r)/gm, \"\")\n .replace(/ +(?= )/g, \"\");\n var elementId = \"\";\n var elementClass = \"\";\n if (typeof element.getAttribute !== \"undefined\") {\n const elemId = element.getAttribute(\"id\");\n if (elemId) {\n elementId = ` id=\"${elemId}\"`;\n }\n const elemClass = element.getAttribute(\"class\");\n if (elemClass) {\n elementClass = ` class=\"${elemClass}\"`;\n }\n }\n const elementTag = (element.tagName || \"\").toLowerCase();\n\n var htmlPre = \"<\";\n var htmlPost = \">\";\n if (!html) {\n htmlPre = \"[\";\n htmlPost = \"]\";\n }\n\n return `${htmlPre}${elementTag}${elementId}${elementClass}${htmlPost}${innerText}${htmlPre}/${elementTag}${htmlPost}`;\n};\n\nexport const runFunctionWhenDomIsReady = (callback) => {\n if (\n document.readyState === \"complete\" ||\n document.readyState === \"loaded\" ||\n document.readyState === \"interactive\"\n ) {\n callback();\n } else {\n document.addEventListener(\"DOMContentLoaded\", () => {\n callback();\n });\n }\n};\n\nexport const fixGleapHeight = () => {\n try {\n if (\n \"visualViewport\" in window &&\n /iPad|iPhone|iPod/.test(navigator.userAgent)\n ) {\n let initialHeight = window.innerHeight;\n\n function updateContainerHeight() {\n try {\n const gleapFrameContainer = document.querySelector(\n \".gleap-frame-container-inner iframe\"\n );\n\n if (!gleapFrameContainer) {\n return;\n }\n\n // Check if the keyboard is open\n if (window.visualViewport.height < initialHeight) {\n gleapFrameContainer.style.setProperty(\n \"max-height\",\n window.visualViewport.height + \"px\",\n \"important\"\n );\n } else {\n // Remove the padding bottom\n gleapFrameContainer.style.removeProperty(\"max-height\");\n }\n } catch (error) {}\n }\n\n function handleOrientationChange() {\n try {\n // Update initial dimensions\n initialHeight = window.innerHeight;\n updateContainerHeight();\n } catch (error) {}\n }\n\n // Update on resize (keyboard show/hide and viewport resize)\n window.visualViewport.addEventListener(\"resize\", updateContainerHeight);\n\n // Handle orientation changes\n window.addEventListener(\"orientationchange\", handleOrientationChange);\n\n // Update initially\n updateContainerHeight();\n }\n } catch (error) {}\n};\n","import { GleapSession, GleapTranslationManager } from \"./Gleap\"; // Adjust path if needed\n\n// Enum for request states\nconst RequestStatus = {\n PENDING: \"pending\",\n SUCCESS: \"success\",\n ERROR: \"error\",\n};\n\nclass ChecklistNetworkManager {\n static instance = null;\n\n /** @private {Map>} outboundId -> Promise */\n validationRequests = new Map();\n /** @private {Map} */\n validationCache = new Map(); // Caches final results (success/error)\n\n /** @private {Map>} internalId -> Promise */\n fetchRequests = new Map();\n /** @private {Map} */\n fetchCache = new Map(); // Caches final results (success/error)\n\n // Private constructor for Singleton\n constructor() {\n if (ChecklistNetworkManager.instance) {\n return ChecklistNetworkManager.instance;\n }\n ChecklistNetworkManager.instance = this;\n }\n\n /**\n * Gets the singleton instance of the ChecklistNetworkManager.\n * @returns {ChecklistNetworkManager} The singleton instance.\n */\n static getInstance() {\n if (!ChecklistNetworkManager.instance) {\n ChecklistNetworkManager.instance = new ChecklistNetworkManager();\n }\n return ChecklistNetworkManager.instance;\n }\n\n clearCache() {\n this.validationCache.clear();\n this.fetchCache.clear();\n this.validationRequests.clear();\n this.fetchRequests.clear();\n }\n\n /**\n * @private\n * Gets common query parameters for API requests.\n * @returns {string} Query parameter string.\n */\n _getQueryParams() {\n const gleapSessionInstance = GleapSession.getInstance();\n const session = gleapSessionInstance?.session;\n const lang =\n GleapTranslationManager.getInstance().getActiveLanguage() || \"en\";\n return `gleapId=${session?.gleapId || \"\"}&gleapHash=${\n session?.gleapHash || \"\"\n }&lang=${lang}`;\n }\n\n /**\n * @private\n * Gets the API base URL.\n * @returns {string | null} The API URL or null if not configured.\n */\n _getApiUrl() {\n const gleapSessionInstance = GleapSession.getInstance();\n return gleapSessionInstance?.apiUrl || null;\n }\n\n /**\n * @private\n * Makes an XMLHttpRequest and returns a Promise.\n * @param {string} method - HTTP method.\n * @param {string} url - The request URL.\n * @param {object|null} data - Data to send in the request body.\n * @returns {Promise} Promise resolving with parsed JSON response on success, rejecting on error.\n */\n _makeRequest(method, url, data) {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n xhr.open(method, url);\n\n const gleapSessionInstance = GleapSession.getInstance();\n gleapSessionInstance?.injectSession(xhr); // Inject session headers\n\n if (data) {\n xhr.setRequestHeader(\"Content-Type\", \"application/json;charset=UTF-8\");\n }\n\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n if (xhr.status >= 200 && xhr.status < 300) {\n try {\n // Handle potential empty success responses (e.g., 204)\n const responseData = xhr.responseText\n ? JSON.parse(xhr.responseText)\n : null;\n resolve(responseData);\n } catch (err) {\n reject({\n status: xhr.status,\n statusText: \"JSON Parse Error\",\n responseText: xhr.responseText,\n error: err,\n });\n }\n } else {\n reject({\n status: xhr.status,\n statusText: xhr.statusText,\n responseText: xhr.responseText,\n });\n }\n }\n };\n\n xhr.onerror = () => {\n reject({ status: 0, statusText: \"Network Error\", responseText: null });\n };\n\n xhr.send(data ? JSON.stringify(data) : null);\n });\n }\n\n /**\n * @private\n * Creates a cache key from outboundId and sharedKey\n * @param {string} outboundId - The public/outbound checklist ID.\n * @param {string|undefined} sharedKey - Optional shared key.\n * @returns {string} Combined cache key.\n */\n _createCacheKey(outboundId, sharedKey) {\n return sharedKey ? `${outboundId}::${sharedKey}` : outboundId;\n }\n\n /**\n * Validates an outbound checklist ID, returning a Promise for the internal ID.\n * Manages caching and deduplicates requests.\n * @param {string} outboundId - The public/outbound checklist ID.\n * @param {string} [sharedKey] - Optional shared key for the checklist.\n * @returns {Promise} A promise that resolves with the internal checklist ID.\n */\n validateChecklist(outboundId, sharedKey) {\n const cacheKey = this._createCacheKey(outboundId, sharedKey);\n\n // 1. Check cache for final result (success or error)\n const cachedResult = this.validationCache.get(cacheKey);\n if (cachedResult) {\n if (cachedResult.status === RequestStatus.SUCCESS) {\n return Promise.resolve(cachedResult.internalId);\n } else {\n return Promise.reject(cachedResult.error);\n }\n }\n\n // 2. Check for an ongoing request\n if (this.validationRequests.has(cacheKey)) {\n return this.validationRequests.get(cacheKey);\n }\n\n // 3. Start a new request\n const apiUrl = this._getApiUrl();\n if (!apiUrl) {\n const error = new Error(\n \"ChecklistNetworkManager: Gleap API URL not configured.\"\n );\n this.validationCache.set(cacheKey, {\n status: RequestStatus.ERROR,\n error,\n });\n return Promise.reject(error);\n }\n\n const url = `${apiUrl}/outbound/checklists?${this._getQueryParams()}`;\n const requestPromise = this._makeRequest(\"POST\", url, {\n outboundId,\n sharedKey,\n })\n .then((responseData) => {\n if (responseData && responseData.id) {\n this.validationCache.set(cacheKey, {\n status: RequestStatus.SUCCESS,\n internalId: responseData.id,\n });\n return responseData.id;\n } else {\n const error = new Error(\"Validation response missing checklist ID.\");\n this.validationCache.set(cacheKey, {\n status: RequestStatus.ERROR,\n error: responseData || error,\n });\n throw error; // Rethrow to be caught by catch block\n }\n })\n .catch((error) => {\n // Store the error object itself in the cache\n this.validationCache.set(cacheKey, {\n status: RequestStatus.ERROR,\n error,\n });\n throw error; // Re-throw so callers can catch it\n })\n .finally(() => {\n // Remove from pending requests map once done (success or fail)\n this.validationRequests.delete(cacheKey);\n });\n\n // Store the promise for potential concurrent requests\n this.validationRequests.set(cacheKey, requestPromise);\n return requestPromise;\n }\n\n /**\n * Fetches the full checklist data using the internal ID, returning a Promise.\n * Manages caching and deduplicates requests.\n * @param {string} internalId - The internal checklist ID.\n * @returns {Promise} A promise that resolves with the full checklist data.\n */\n fetchChecklist(internalId) {\n // 1. Check cache for final result (success or error)\n const cachedResult = this.fetchCache.get(internalId);\n if (cachedResult) {\n if (cachedResult.status === RequestStatus.SUCCESS) {\n // Return a deep copy to prevent mutation issues if multiple components use it\n return Promise.resolve(JSON.parse(JSON.stringify(cachedResult.data)));\n } else {\n return Promise.reject(cachedResult.error);\n }\n }\n\n // 2. Check for an ongoing request\n if (this.fetchRequests.has(internalId)) {\n // Return a promise that resolves with a deep copy\n return this.fetchRequests\n .get(internalId)\n .then((data) => JSON.parse(JSON.stringify(data)));\n }\n\n // 3. Start a new request\n const apiUrl = this._getApiUrl();\n if (!apiUrl) {\n const error = new Error(\n \"ChecklistNetworkManager: Gleap API URL not configured.\"\n );\n this.fetchCache.set(internalId, { status: RequestStatus.ERROR, error });\n return Promise.reject(error);\n }\n\n const url = `${apiUrl}/outbound/checklists/${internalId}?convertTipTap=true&${this._getQueryParams()}`;\n const requestPromise = this._makeRequest(\"GET\", url, null)\n .then((responseData) => {\n if (responseData) {\n // Cache the successful data\n this.fetchCache.set(internalId, {\n status: RequestStatus.SUCCESS,\n data: responseData,\n });\n // Return a deep copy of the data\n return JSON.parse(JSON.stringify(responseData));\n } else {\n // Should not happen with successful GET usually, but handle defensively\n const error = new Error(\n \"Empty response received for checklist fetch.\"\n );\n this.fetchCache.set(internalId, {\n status: RequestStatus.ERROR,\n error: responseData || error,\n });\n throw error;\n }\n })\n .catch((error) => {\n this.fetchCache.set(internalId, { status: RequestStatus.ERROR, error });\n throw error; // Re-throw so callers can catch it\n })\n .finally(() => {\n // Remove from pending requests map once done (success or fail)\n this.fetchRequests.delete(internalId);\n });\n\n this.fetchRequests.set(internalId, requestPromise);\n // Return a promise that resolves with a deep copy\n return requestPromise.then((data) => JSON.parse(JSON.stringify(data)));\n }\n}\n\nexport default ChecklistNetworkManager;\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n const lr = ['left', 'right'];\n const rl = ['right', 'left'];\n const tb = ['top', 'bottom'];\n const bt = ['bottom', 'top'];\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rl : lr;\n return isStart ? lr : rl;\n case 'left':\n case 'right':\n return isStart ? tb : bt;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n return {\n ...rect,\n top: rect.y,\n left: rect.x,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n ...rects.floating,\n x,\n y\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n if (!specifiedFallbackPlacements && fallbackAxisSideDirection !== 'none') {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$map$so;\n const placement = (_overflowsData$map$so = overflowsData.map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$map$so[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: 0,\n crossAxis: 0,\n alignmentAxis: null,\n ...rawValue\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = ['top', 'left'].includes(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const overflowAvailableHeight = height - overflow[heightSide];\n const overflowAvailableWidth = width - overflow[widthSide];\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if (isYAxis) {\n const maximumClippingWidth = width - overflow.left - overflow.right;\n availableWidth = alignment || noShift ? min(overflowAvailableWidth, maximumClippingWidth) : maximumClippingWidth;\n } else {\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n availableHeight = alignment || noShift ? min(overflowAvailableHeight, maximumClippingHeight) : maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n // Browsers without `ShadowRoot` support.\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isContainingBlock(element) {\n const webkit = isWebKit();\n const css = getComputedStyle(element);\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n return css.transform !== 'none' || css.perspective !== 'none' || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else {\n currentNode = getParentNode(currentNode);\n }\n }\n return null;\n}\nfunction isWebKit() {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nfunction isLastTraversableNode(node) {\n return ['html', 'body', '#document'].includes(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.pageXOffset,\n scrollTop: element.pageYOffset\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], win.frameElement && traverseIframes ? getOverflowAncestors(win.frameElement) : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isWebKit };\n","import { rectToClientRect, autoPlacement as autoPlacement$1, shift as shift$1, flip as flip$1, size as size$1, hide as hide$1, arrow as arrow$1, inline as inline$1, limitShift as limitShift$1, computePosition as computePosition$1 } from '@floating-ui/core';\nexport { detectOverflow, offset } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement, isElement, getWindow, isWebKit, getDocumentElement, getNodeName, isOverflowElement, getNodeScroll, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = currentWin.frameElement;\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = currentWin.frameElement;\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\nconst topLayerSelectors = [':popover-open', ':modal'];\nfunction isTopLayer(floating) {\n return topLayerSelectors.some(selector => {\n try {\n return floating.matches(selector);\n } catch (e) {\n return false;\n }\n });\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\nfunction getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n ...clippingAncestor,\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n const x = rect.left + scroll.scrollLeft - offsets.x;\n const y = rect.top + scroll.scrollTop - offsets.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n return element.offsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const window = getWindow(element);\n if (!isHTMLElement(element) || isTopLayer(element)) {\n return window;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && !isContainingBlock(offsetParent))) {\n return window;\n }\n return offsetParent || getContainingBlock(element) || window;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n ...(await getDimensionsFn(data.floating))\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const {\n left,\n top,\n width,\n height\n } = element.getBoundingClientRect();\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 100);\n } else {\n refresh(false, ratio);\n }\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle `;\n document.body.appendChild(elem);\n\n this.gleapFrameContainer = elem;\n this.gleapFrame = document.querySelector(\".gleap-frame\");\n\n this.updateFrameStyle();\n\n // Show loading preview for widget app mode.\n if (this.appMode === \"widget\") {\n this.showFrameContainer(true);\n }\n });\n });\n };\n\n showImage = (url) => {\n runFunctionWhenDomIsReady(() => {\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-image-view\";\n elem.innerHTML = `
\n \n
`;\n document.body.appendChild(elem);\n\n const closeElement = () => {\n elem.remove();\n };\n\n const close = elem.querySelector(\".gleap-image-view-close\");\n close.addEventListener(\"click\", () => {\n closeElement();\n });\n\n elem.addEventListener(\"click\", (e) => {\n if (e.target === elem) {\n closeElement();\n }\n });\n });\n };\n\n updateFrameStyle = () => {\n if (!this.gleapFrameContainer) {\n return;\n }\n\n const surveyStyle = \"gleap-frame-container--survey\";\n const extendedStyle = \"gleap-frame-container--extended\";\n const surveyFullStyle = \"gleap-frame-container--survey-full\";\n const classicStyle = \"gleap-frame-container--classic\";\n const classicStyleLeft = \"gleap-frame-container--classic-left\";\n const modernStyleLeft = \"gleap-frame-container--modern-left\";\n const noButtonStyleLeft = \"gleap-frame-container--no-button\";\n const allStyles = [\n classicStyle,\n classicStyleLeft,\n extendedStyle,\n modernStyleLeft,\n noButtonStyleLeft,\n surveyStyle,\n surveyFullStyle,\n ];\n for (let i = 0; i < allStyles.length; i++) {\n this.gleapFrameContainer.classList.remove(allStyles[i]);\n }\n\n var styleToApply = undefined;\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM\n ) {\n styleToApply = classicStyle;\n }\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT\n ) {\n styleToApply = classicStyleLeft;\n }\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_BOTTOM_LEFT\n ) {\n styleToApply = modernStyleLeft;\n }\n if (GleapFeedbackButtonManager.getInstance().buttonHidden === null) {\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_NONE\n ) {\n styleToApply = noButtonStyleLeft;\n }\n } else {\n if (GleapFeedbackButtonManager.getInstance().buttonHidden) {\n styleToApply = noButtonStyleLeft;\n }\n }\n if (styleToApply) {\n this.gleapFrameContainer.classList.add(styleToApply);\n }\n\n if (this.appMode === \"survey\") {\n this.gleapFrameContainer.classList.add(surveyStyle);\n }\n if (this.appMode === \"survey_full\" || this.appMode === \"survey_web\") {\n this.gleapFrameContainer.classList.add(surveyFullStyle);\n }\n if (this.appMode === \"extended\") {\n this.gleapFrameContainer.classList.add(extendedStyle);\n }\n\n this.gleapFrameContainer.setAttribute(\n \"dir\",\n GleapTranslationManager.getInstance().isRTLLayout ? \"rtl\" : \"ltr\"\n );\n };\n\n showFrameContainer(showLoader) {\n if (!this.gleapFrameContainer) {\n return;\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const loadingClass = \"gleap-frame-container--loading\";\n if (this.gleapFrameContainer.classList) {\n this.gleapFrameContainer.classList.remove(\n \"gleap-frame-container--hidden\"\n );\n if (showLoader) {\n this.gleapFrameContainer.classList.add(loadingClass);\n\n if (flowConfig.disableBGFade) {\n this.gleapFrameContainer.classList.add(\n \"gleap-frame-container--loading-nofade\"\n );\n }\n if (flowConfig.disableBGGradient) {\n this.gleapFrameContainer.classList.add(\n \"gleap-frame-container--loading-nogradient\"\n );\n }\n } else {\n this.gleapFrameContainer.classList.remove(loadingClass);\n }\n\n setTimeout(() => {\n this.gleapFrameContainer.classList.add(\n \"gleap-frame-container--animate\"\n );\n }, 500);\n }\n\n this.widgetOpened = true;\n this.updateUI();\n }\n\n runWidgetShouldOpenCallback() {\n if (!this.gleapFrameContainer) {\n return;\n }\n\n this.workThroughQueue();\n\n Gleap.getInstance().setGlobalDataItem(\"snapshotPosition\", {\n x: window.scrollX,\n y: window.scrollY,\n });\n\n this.showFrameContainer(false);\n this.updateWidgetStatus();\n\n GleapEventManager.notifyEvent(\"open\");\n this.registerEscListener();\n }\n\n updateUI() {\n // Clear notifications only when not opening a survey.\n GleapNotificationManager.getInstance().clearAllNotifications(\n this.isSurvey()\n );\n\n GleapFeedbackButtonManager.getInstance().updateNotificationBadge(0);\n GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n }\n\n showWidget() {\n setTimeout(() => {\n if (this.gleapFrameContainer) {\n this.runWidgetShouldOpenCallback();\n } else {\n GleapFrameManager.getInstance().injectFrame();\n }\n this.updateUI();\n }, 0);\n }\n\n updateWidgetStatus() {\n this.sendMessage({\n name: \"widget-status-update\",\n data: {\n isWidgetOpen: this.widgetOpened,\n },\n });\n }\n\n hideMarkerManager() {\n if (this.markerManager) {\n this.markerManager.clear();\n this.markerManager = null;\n }\n }\n\n hideWidget(resetRoutes = false) {\n // Prevent for survey web.\n if (this.appMode === \"survey_web\") {\n return;\n }\n\n this.hideMarkerManager();\n if (this.gleapFrameContainer) {\n this.gleapFrameContainer.classList.add(\"gleap-frame-container--hidden\");\n this.gleapFrameContainer.classList.remove(\n \"gleap-frame-container--animate\"\n );\n }\n if (resetRoutes) {\n this.sendMessage({\n name: \"reset-routes\",\n data: {},\n });\n }\n this.widgetOpened = false;\n this.updateWidgetStatus();\n GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n GleapEventManager.notifyEvent(\"close\");\n GleapNotificationManager.getInstance().reloadNotificationsFromCache();\n\n this.unregisterEscListener();\n\n if (typeof window !== \"undefined\" && typeof window.focus !== \"undefined\") {\n window.focus();\n }\n }\n\n sendMessage(data, queue = false) {\n try {\n this.gleapFrame = document.querySelector(\".gleap-frame\");\n if (this.comReady && this.gleapFrame && this.gleapFrame.contentWindow) {\n this.gleapFrame.contentWindow.postMessage(JSON.stringify(data), \"*\");\n } else {\n if (queue) {\n this.queue.push(data);\n }\n }\n } catch (e) {}\n }\n\n sendSessionUpdate() {\n this.sendMessage({\n name: \"session-update\",\n data: {\n sessionData: GleapSession.getInstance().getSession(),\n apiUrl: GleapSession.getInstance().apiUrl,\n sdkKey: GleapSession.getInstance().sdkKey,\n },\n });\n }\n\n sendConfigUpdate() {\n if (!this.comReady) {\n return;\n }\n\n this.sendMessage({\n name: \"config-update\",\n data: {\n config: GleapConfigManager.getInstance().getFlowConfig(),\n aiTools: GleapConfigManager.getInstance().getAiTools(),\n overrideLanguage:\n GleapTranslationManager.getInstance().getOverrideLanguage(),\n },\n });\n\n this.updateFrameStyle();\n }\n\n showDrawingScreen(type) {\n this.hideWidget();\n\n // Show screen drawing.\n this.markerManager = new GleapMarkerManager(type);\n this.markerManager.show((success) => {\n if (!success) {\n this.hideMarkerManager();\n }\n this.showWidget();\n });\n }\n\n workThroughQueue() {\n const workQueue = [...this.queue];\n this.queue = [];\n for (let i = 0; i < workQueue.length; i++) {\n this.sendMessage(workQueue[i], true);\n }\n }\n\n startCommunication() {\n // Listen for messages.\n this.addMessageListener((data) => {\n if (data.name === \"ping\") {\n this.comReady = true;\n this.sendConfigUpdate();\n this.sendSessionUpdate();\n this.workThroughQueue();\n setTimeout(() => {\n this.runWidgetShouldOpenCallback();\n }, 300);\n }\n\n if (data.name === \"play-ping\") {\n GleapAudioManager.ping();\n }\n\n if (data.name === \"open-image\") {\n this.showImage(data.data.url);\n }\n\n if (data.name === \"page-changed\") {\n if (\n data.data &&\n (data.data.name === \"newsdetails\" || data.data.name === \"appextended\")\n ) {\n this.setAppMode(\"extended\");\n } else {\n if (this.appMode === \"extended\") {\n this.setAppMode(\"widget\");\n }\n }\n }\n\n if (data.name === \"collect-ticket-data\") {\n var ticketData = {\n customData: GleapCustomDataManager.getInstance().getCustomData(),\n metaData: GleapMetaDataManager.getInstance().getMetaData(),\n consoleLog: GleapConsoleLogManager.getInstance().getLogs(),\n networkLogs: GleapNetworkIntercepter.getInstance().getRequests(),\n customEventLog: GleapStreamedEvent.getInstance().getEventArray(),\n formData: GleapCustomDataManager.getInstance().getTicketAttributes(),\n };\n\n // Add tags\n const tags = GleapTagManager.getInstance().getTags();\n if (tags && tags.length > 0) {\n ticketData.tags = tags;\n }\n\n this.sendMessage({\n name: \"collect-ticket-data\",\n data: ticketData,\n });\n }\n\n if (data.name === \"height-update\") {\n this.frameHeight = data.data;\n\n const innerContainer = document.querySelector(\n \".gleap-frame-container-inner\"\n );\n if (\n (this.appMode === \"survey\" ||\n this.appMode === \"survey_full\" ||\n this.appMode === \"survey_web\") &&\n innerContainer\n ) {\n innerContainer.style.maxHeight = `${this.frameHeight}px`;\n }\n }\n\n if (data.name === \"notify-event\") {\n GleapEventManager.notifyEvent(data.data.type, data.data.data);\n }\n\n if (data.name === \"cleanup-drawings\") {\n this.hideMarkerManager();\n }\n\n if (data.name === \"open-url\") {\n const url = data.data;\n const newTab = data.newTab ? true : false;\n this.urlHandler(url, newTab);\n }\n\n if (data.name === \"start-product-tour\") {\n Gleap.startProductTour(data.data?.tourId, true);\n }\n\n if (data.name === \"run-custom-action\") {\n GleapCustomActionManager.triggerCustomAction(data.data, {\n shareToken: data.shareToken,\n });\n }\n\n if (data.name === \"close-widget\") {\n this.hideWidget();\n }\n\n if (data.name === \"tool-execution\") {\n GleapEventManager.notifyEvent(\"tool-execution\", data.data);\n }\n\n if (data.name === \"send-feedback\") {\n const formData = data.data.formData;\n const action = data.data.action;\n const outboundId = data.data.outboundId;\n const spamToken = data.data.spamToken;\n\n const feedback = new GleapFeedback(\n action.feedbackType,\n \"MEDIUM\",\n formData,\n false,\n action.excludeData,\n outboundId,\n spamToken\n );\n feedback\n .sendFeedback()\n .then((feedbackData) => {\n this.sendMessage({\n name: \"feedback-sent\",\n data: feedbackData,\n });\n GleapEventManager.notifyEvent(\"feedback-sent\", formData);\n\n if (outboundId && outboundId.length > 0) {\n GleapEventManager.notifyEvent(\"outbound-sent\", {\n outboundId: outboundId,\n outbound: action,\n formData: formData,\n });\n\n try {\n delete formData.reportedBy;\n } catch (e) {}\n Gleap.trackEvent(`outbound-${outboundId}-submitted`, formData);\n }\n })\n .catch((error) => {\n this.sendMessage({\n name: \"feedback-sending-failed\",\n data: \"Something went wrong, please try again.\",\n });\n GleapEventManager.notifyEvent(\"error-while-sending\");\n });\n }\n\n if (data.name === \"start-screen-drawing\") {\n this.showDrawingScreen(data.data);\n }\n });\n\n // Add window message listener.\n window.addEventListener(\"message\", (event) => {\n if (\n event.origin !== this.frameUrl &&\n event.origin !== GleapBannerManager.getInstance().bannerUrl\n ) {\n return;\n }\n\n try {\n const data = JSON.parse(event.data);\n for (var i = 0; i < this.listeners.length; i++) {\n if (this.listeners[i]) {\n this.listeners[i](data);\n }\n }\n } catch (exp) {}\n });\n }\n\n addMessageListener(callback) {\n this.listeners.push(callback);\n }\n}\n","import { isMobile } from \"./GleapHelper\";\n\nexport default class GleapMetaDataManager {\n sessionStart = new Date();\n appBuildNumber = \"\";\n appVersionCode = \"\";\n environment = \"prod\";\n\n // GleapMetaDataManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapMetaDataManager();\n }\n return this.instance;\n }\n\n /**\n * Sets the app version code.\n * @param {string} appVersionCode\n */\n static setAppVersionCode(appVersionCode) {\n this.getInstance().appVersionCode = appVersionCode;\n }\n\n /**\n * Sets the app version code.\n * @param {string} appVersionCode\n */\n static setAppBuildNumber(appBuildNumber) {\n this.getInstance().appBuildNumber = appBuildNumber;\n }\n\n getSessionDuration() {\n const now = new Date();\n return Math.round((now.getTime() - this.sessionStart.getTime()) / 1000);\n }\n\n getMetaData() {\n var nAgt = navigator.userAgent;\n var browserName = navigator.appName;\n var fullVersion = \"\" + parseFloat(navigator.appVersion);\n var majorVersion = parseInt(navigator.appVersion, 10);\n var nameOffset, verOffset, ix;\n\n // In Opera, the true version is after \"Opera\" or after \"Version\"\n if ((verOffset = nAgt.indexOf(\"Opera\")) !== -1) {\n browserName = \"Opera\";\n fullVersion = nAgt.substring(verOffset + 6);\n if ((verOffset = nAgt.indexOf(\"Version\")) !== -1)\n fullVersion = nAgt.substring(verOffset + 8);\n }\n // In MSIE, the true version is after \"MSIE\" in userAgent\n else if ((verOffset = nAgt.indexOf(\"MSIE\")) !== -1) {\n browserName = \"Microsoft Internet Explorer\";\n fullVersion = nAgt.substring(verOffset + 5);\n }\n // In Chrome, the true version is after \"Chrome\"\n else if ((verOffset = nAgt.indexOf(\"Chrome\")) !== -1) {\n browserName = \"Chrome\";\n fullVersion = nAgt.substring(verOffset + 7);\n }\n // In Safari, the true version is after \"Safari\" or after \"Version\"\n else if ((verOffset = nAgt.indexOf(\"Safari\")) !== -1) {\n browserName = \"Safari\";\n fullVersion = nAgt.substring(verOffset + 7);\n if ((verOffset = nAgt.indexOf(\"Version\")) !== -1)\n fullVersion = nAgt.substring(verOffset + 8);\n }\n // In Firefox, the true version is after \"Firefox\"\n else if ((verOffset = nAgt.indexOf(\"Firefox\")) !== -1) {\n browserName = \"Firefox\";\n fullVersion = nAgt.substring(verOffset + 8);\n }\n // In most other browsers, \"name/version\" is at the end of userAgent\n else if (\n (nameOffset = nAgt.lastIndexOf(\" \") + 1) <\n (verOffset = nAgt.lastIndexOf(\"/\"))\n ) {\n browserName = nAgt.substring(nameOffset, verOffset);\n fullVersion = nAgt.substring(verOffset + 1);\n if (browserName.toLowerCase() === browserName.toUpperCase()) {\n browserName = navigator.appName;\n }\n }\n // trim the fullVersion string at semicolon/space if present\n if ((ix = fullVersion.indexOf(\";\")) !== -1)\n fullVersion = fullVersion.substring(0, ix);\n if ((ix = fullVersion.indexOf(\" \")) !== -1)\n fullVersion = fullVersion.substring(0, ix);\n\n majorVersion = parseInt(\"\" + fullVersion, 10);\n if (isNaN(majorVersion)) {\n fullVersion = \"\" + parseFloat(navigator.appVersion);\n majorVersion = parseInt(navigator.appVersion, 10);\n }\n\n var OSName = \"Unknown OS\";\n if (navigator.appVersion.indexOf(\"Win\") !== -1) OSName = \"Windows\";\n if (navigator.appVersion.indexOf(\"Mac\") !== -1) OSName = \"MacOS\";\n if (navigator.appVersion.indexOf(\"X11\") !== -1) OSName = \"UNIX\";\n if (navigator.appVersion.indexOf(\"Linux\") !== -1) OSName = \"Linux\";\n if (navigator.appVersion.indexOf(\"iPad\") !== -1) OSName = \"iPad\";\n if (navigator.appVersion.indexOf(\"iPhone\") !== -1) OSName = \"iPhone\";\n if (navigator.appVersion.indexOf(\"Android\") !== -1) OSName = \"Android\";\n\n return {\n browserName: browserName + \"(\" + fullVersion + \")\",\n userAgent: nAgt,\n browser: browserName,\n systemName: OSName,\n buildVersionNumber: this.appBuildNumber,\n releaseVersionNumber: this.appVersionCode,\n sessionDuration: this.getSessionDuration(),\n devicePixelRatio: window.devicePixelRatio,\n screenWidth: window.screen.width,\n screenHeight: window.screen.height,\n innerWidth: window.innerWidth,\n innerHeight: window.innerHeight,\n currentUrl: window.location.href,\n language: navigator.language || navigator.userLanguage,\n mobile: isMobile(),\n sdkVersion: SDK_VERSION,\n sdkType: \"javascript\",\n environment: this.environment,\n };\n }\n}\n","import { truncateString } from \"./GleapHelper\";\n\nexport default class GleapConsoleLogManager {\n logArray = [];\n disabled = false;\n originalConsoleLog;\n logMaxLength = 500;\n\n // GleapConsoleLogManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapConsoleLogManager();\n }\n return this.instance;\n }\n\n /**\n * Return the console logs\n * @returns {any[]} logs\n */\n getLogs() {\n return this.logArray;\n }\n\n /**\n * Revert console log overwrite.\n */\n stop() {\n this.disabled = true;\n if (this.originalConsoleLog) {\n window.console = this.originalConsoleLog;\n }\n }\n\n /**\n * Add message with log level to logs.\n * @param {*} message\n * @param {*} logLevel\n * @returns\n */\n addLog(message, logLevel = \"INFO\") {\n if (!message || message.length <= 0) {\n return;\n }\n\n this.logArray.push({\n log: truncateString(message, 1000),\n date: new Date(),\n priority: logLevel,\n });\n\n if (this.logArray.length > this.logMaxLength) {\n this.logArray.shift();\n }\n }\n\n /**\n * Add entry to logs.\n * @param {*} args\n * @param {*} logLevel\n * @returns\n */\n addLogWithArgs(args, logLevel) {\n if (!args || args.length <= 0) {\n return;\n }\n\n var log = \"\";\n try {\n for (var i = 0; i < args.length; i++) {\n log += args[i] + \" \";\n }\n } catch (exp) {}\n\n this.addLog(log, logLevel);\n }\n\n /**\n * Start console log overwrite.\n */\n start() {\n if (this.disabled) {\n return;\n }\n\n const self = this;\n window.console = (function (origConsole) {\n if (!window.console || !origConsole) {\n origConsole = {};\n }\n\n self.originalConsoleLog = origConsole;\n\n return {\n ...origConsole,\n log: function () {\n self.addLogWithArgs(arguments, \"INFO\");\n origConsole.log && origConsole.log.apply(origConsole, arguments);\n },\n warn: function () {\n self.addLogWithArgs(arguments, \"WARNING\");\n origConsole.warn && origConsole.warn.apply(origConsole, arguments);\n },\n error: function () {\n self.addLogWithArgs(arguments, \"ERROR\");\n origConsole.error && origConsole.error.apply(origConsole, arguments);\n },\n info: function (v) {\n self.addLogWithArgs(arguments, \"INFO\");\n origConsole.info && origConsole.info.apply(origConsole, arguments);\n },\n };\n })(window.console);\n }\n}\n","import { GleapConsoleLogManager, GleapFrameManager, handleGleapLink } from \"./Gleap\";\nimport { getDOMElementDescription } from \"./GleapHelper\";\n\nexport default class GleapClickListener {\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapClickListener();\n }\n return this.instance;\n }\n\n start() {\n document.addEventListener(\"click\", (e) => {\n if (!e.target) {\n return;\n }\n\n if (e.target.tagName === 'A' && e.target.protocol === 'gleap:') {\n e.preventDefault();\n\n const href = e.target.href;\n handleGleapLink(href);\n }\n\n if (!GleapFrameManager.getInstance().isOpened()) {\n GleapConsoleLogManager.getInstance().addLog(\n getDOMElementDescription(e.target),\n \"CLICK\"\n );\n }\n });\n }\n}\n","import { gleapDataParser } from \"./GleapHelper\";\n\nexport default class GleapCustomDataManager {\n customData = {};\n ticketAttributes = {};\n\n // GleapCustomDataManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapCustomDataManager();\n }\n return this.instance;\n }\n\n /**\n * Returns the custom data object\n * @returns {*}\n */\n getCustomData() {\n return this.customData;\n }\n\n /**\n * Set custom data that will be attached to the bug-report.\n * @param {*} data\n */\n attachCustomData(data) {\n this.customData = Object.assign(\n this.customData,\n gleapDataParser(data)\n );\n }\n\n /**\n * Add one key value pair to the custom data object\n * @param {*} key The key of the custom data entry you want to add.\n * @param {*} value The custom data you want to add.\n */\n setCustomData(key, value) {\n this.customData[key] = value;\n }\n\n /**\n * Remove one key value pair of the custom data object\n * @param {*} key The key of the custom data entry you want to remove.\n */\n removeCustomData(key) {\n delete this.customData[key];\n }\n\n /**\n * Clear the custom data\n */\n clearCustomData() {\n this.customData = {};\n }\n\n /**\n * This method is used to set ticket attributes programmatically.\n * @param {*} key The key of the attribute you want to add.\n * @param {*} value The value to set.\n */\n setTicketAttribute(key, value) {\n this.ticketAttributes[key] = value;\n }\n\n /**\n * This method is used to unset ticket attributes programmatically.\n * @param {*} key The key of the attribute you want to unset.\n */\n unsetTicketAttribute(key) {\n delete this.ticketAttributes[key];\n }\n\n /**\n * This method is used to clear ticket attributes programmatically.\n */\n clearTicketAttributes() {\n this.ticketAttributes = {};\n }\n\n getTicketAttributes() {\n return this.ticketAttributes;\n }\n}\n","import Gleap from \"./Gleap\";\n\nexport default class GleapEventManager {\n eventListeners = {};\n\n // GleapEventManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapEventManager();\n }\n return this.instance;\n }\n\n /**\n * Notify all registrants for event.\n */\n static notifyEvent(event, data = {}) {\n if (event === \"flow-started\") {\n\n const gleapInstance = Gleap.getInstance();\n gleapInstance.setGlobalDataItem(\"webReplay\", null);\n gleapInstance.setGlobalDataItem(\"screenRecordingData\", null);\n gleapInstance.takeCurrentReplay();\n }\n\n const eventListeners = this.getInstance().eventListeners[event];\n if (eventListeners) {\n for (var i = 0; i < eventListeners.length; i++) {\n const eventListener = eventListeners[i];\n if (eventListener) {\n eventListener(data);\n }\n }\n }\n }\n\n /**\n * Register events for Gleap.\n * @param {*} eventName\n * @param {*} callback\n */\n static on(eventName, callback) {\n const instance = this.getInstance();\n if (!instance.eventListeners[eventName]) {\n instance.eventListeners[eventName] = [];\n }\n instance.eventListeners[eventName].push(callback);\n }\n}\n","export default class GleapCustomActionManager {\n customActionCallbacks = [];\n\n // GleapCustomActionManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapCustomActionManager();\n }\n return this.instance;\n }\n\n /**\n * Register custom action\n */\n static registerCustomAction(customAction) {\n const instance = this.getInstance();\n if (instance.customActionCallbacks) {\n instance.customActionCallbacks.push(customAction);\n }\n }\n\n /**\n * Triggers a custom action\n */\n static triggerCustomAction(name, data) {\n const instance = this.getInstance();\n if (instance.customActionCallbacks) {\n for (var i = 0; i < instance.customActionCallbacks.length; i++) {\n var callback = instance.customActionCallbacks[i];\n if (callback) {\n callback({\n name,\n ...(data ? data : {}),\n });\n }\n }\n }\n }\n}\n","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar _a;\nvar __defProp$1 = Object.defineProperty;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$1 = (obj, key, value) => __defNormalProp$1(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar NodeType$3 = /* @__PURE__ */ ((NodeType2) => {\n NodeType2[NodeType2[\"Document\"] = 0] = \"Document\";\n NodeType2[NodeType2[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType2[NodeType2[\"Element\"] = 2] = \"Element\";\n NodeType2[NodeType2[\"Text\"] = 3] = \"Text\";\n NodeType2[NodeType2[\"CDATA\"] = 4] = \"CDATA\";\n NodeType2[NodeType2[\"Comment\"] = 5] = \"Comment\";\n return NodeType2;\n})(NodeType$3 || {});\nconst testableAccessors$1 = {\n Node: [\"childNodes\", \"parentNode\", \"parentElement\", \"textContent\"],\n ShadowRoot: [\"host\", \"styleSheets\"],\n Element: [\"shadowRoot\", \"querySelector\", \"querySelectorAll\"],\n MutationObserver: []\n};\nconst testableMethods$1 = {\n Node: [\"contains\", \"getRootNode\"],\n ShadowRoot: [\"getSelection\"],\n Element: [],\n MutationObserver: [\"constructor\"]\n};\nconst untaintedBasePrototype$1 = {};\nconst isAngularZonePresent$1 = () => {\n return !!globalThis.Zone;\n};\nfunction getUntaintedPrototype$1(key) {\n if (untaintedBasePrototype$1[key])\n return untaintedBasePrototype$1[key];\n const defaultObj = globalThis[key];\n const defaultPrototype = defaultObj.prototype;\n const accessorNames = key in testableAccessors$1 ? testableAccessors$1[key] : void 0;\n const isUntaintedAccessors = Boolean(\n accessorNames && // @ts-expect-error 2345\n accessorNames.every(\n (accessor) => {\n var _a2, _b;\n return Boolean(\n (_b = (_a2 = Object.getOwnPropertyDescriptor(defaultPrototype, accessor)) == null ? void 0 : _a2.get) == null ? void 0 : _b.toString().includes(\"[native code]\")\n );\n }\n )\n );\n const methodNames = key in testableMethods$1 ? testableMethods$1[key] : void 0;\n const isUntaintedMethods = Boolean(\n methodNames && methodNames.every(\n // @ts-expect-error 2345\n (method) => {\n var _a2;\n return typeof defaultPrototype[method] === \"function\" && ((_a2 = defaultPrototype[method]) == null ? void 0 : _a2.toString().includes(\"[native code]\"));\n }\n )\n );\n if (isUntaintedAccessors && isUntaintedMethods && !isAngularZonePresent$1()) {\n untaintedBasePrototype$1[key] = defaultObj.prototype;\n return defaultObj.prototype;\n }\n try {\n const iframeEl = document.createElement(\"iframe\");\n document.body.appendChild(iframeEl);\n const win = iframeEl.contentWindow;\n if (!win) return defaultObj.prototype;\n const untaintedObject = win[key].prototype;\n document.body.removeChild(iframeEl);\n if (!untaintedObject) return defaultPrototype;\n return untaintedBasePrototype$1[key] = untaintedObject;\n } catch {\n return defaultPrototype;\n }\n}\nconst untaintedAccessorCache$1 = {};\nfunction getUntaintedAccessor$1(key, instance, accessor) {\n var _a2;\n const cacheKey = `${key}.${String(accessor)}`;\n if (untaintedAccessorCache$1[cacheKey])\n return untaintedAccessorCache$1[cacheKey].call(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype$1(key);\n const untaintedAccessor = (_a2 = Object.getOwnPropertyDescriptor(\n untaintedPrototype,\n accessor\n )) == null ? void 0 : _a2.get;\n if (!untaintedAccessor) return instance[accessor];\n untaintedAccessorCache$1[cacheKey] = untaintedAccessor;\n return untaintedAccessor.call(instance);\n}\nconst untaintedMethodCache$1 = {};\nfunction getUntaintedMethod$1(key, instance, method) {\n const cacheKey = `${key}.${String(method)}`;\n if (untaintedMethodCache$1[cacheKey])\n return untaintedMethodCache$1[cacheKey].bind(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype$1(key);\n const untaintedMethod = untaintedPrototype[method];\n if (typeof untaintedMethod !== \"function\") return instance[method];\n untaintedMethodCache$1[cacheKey] = untaintedMethod;\n return untaintedMethod.bind(instance);\n}\nfunction childNodes$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"childNodes\");\n}\nfunction parentNode$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"parentNode\");\n}\nfunction parentElement$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"parentElement\");\n}\nfunction textContent$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"textContent\");\n}\nfunction contains$1(n2, other) {\n return getUntaintedMethod$1(\"Node\", n2, \"contains\")(other);\n}\nfunction getRootNode$1(n2) {\n return getUntaintedMethod$1(\"Node\", n2, \"getRootNode\")();\n}\nfunction host$1(n2) {\n if (!n2 || !(\"host\" in n2)) return null;\n return getUntaintedAccessor$1(\"ShadowRoot\", n2, \"host\");\n}\nfunction styleSheets$1(n2) {\n return n2.styleSheets;\n}\nfunction shadowRoot$1(n2) {\n if (!n2 || !(\"shadowRoot\" in n2)) return null;\n return getUntaintedAccessor$1(\"Element\", n2, \"shadowRoot\");\n}\nfunction querySelector$1(n2, selectors) {\n return getUntaintedAccessor$1(\"Element\", n2, \"querySelector\")(selectors);\n}\nfunction querySelectorAll$1(n2, selectors) {\n return getUntaintedAccessor$1(\"Element\", n2, \"querySelectorAll\")(selectors);\n}\nfunction mutationObserverCtor$1() {\n return getUntaintedPrototype$1(\"MutationObserver\").constructor;\n}\nconst index$1 = {\n childNodes: childNodes$1,\n parentNode: parentNode$1,\n parentElement: parentElement$1,\n textContent: textContent$1,\n contains: contains$1,\n getRootNode: getRootNode$1,\n host: host$1,\n styleSheets: styleSheets$1,\n shadowRoot: shadowRoot$1,\n querySelector: querySelector$1,\n querySelectorAll: querySelectorAll$1,\n mutationObserver: mutationObserverCtor$1\n};\nfunction isElement(n2) {\n return n2.nodeType === n2.ELEMENT_NODE;\n}\nfunction isShadowRoot(n2) {\n const hostEl = (\n // anchor and textarea elements also have a `host` property\n // but only shadow roots have a `mode` property\n n2 && \"host\" in n2 && \"mode\" in n2 && index$1.host(n2) || null\n );\n return Boolean(\n hostEl && \"shadowRoot\" in hostEl && index$1.shadowRoot(hostEl) === n2\n );\n}\nfunction isNativeShadowDom(shadowRoot2) {\n return Object.prototype.toString.call(shadowRoot2) === \"[object ShadowRoot]\";\n}\nfunction fixBrowserCompatibilityIssuesInCSS(cssText) {\n if (cssText.includes(\" background-clip: text;\") && !cssText.includes(\" -webkit-background-clip: text;\")) {\n cssText = cssText.replace(\n /\\sbackground-clip:\\s*text;/g,\n \" -webkit-background-clip: text; background-clip: text;\"\n );\n }\n return cssText;\n}\nfunction escapeImportStatement(rule2) {\n const { cssText } = rule2;\n if (cssText.split('\"').length < 3) return cssText;\n const statement = [\"@import\", `url(${JSON.stringify(rule2.href)})`];\n if (rule2.layerName === \"\") {\n statement.push(`layer`);\n } else if (rule2.layerName) {\n statement.push(`layer(${rule2.layerName})`);\n }\n if (rule2.supportsText) {\n statement.push(`supports(${rule2.supportsText})`);\n }\n if (rule2.media.length) {\n statement.push(rule2.media.mediaText);\n }\n return statement.join(\" \") + \";\";\n}\nfunction stringifyStylesheet(s2) {\n try {\n const rules2 = s2.rules || s2.cssRules;\n if (!rules2) {\n return null;\n }\n let sheetHref = s2.href;\n if (!sheetHref && s2.ownerNode && s2.ownerNode.ownerDocument) {\n sheetHref = s2.ownerNode.ownerDocument.location.href;\n }\n const stringifiedRules = Array.from(\n rules2,\n (rule2) => stringifyRule(rule2, sheetHref)\n ).join(\"\");\n return fixBrowserCompatibilityIssuesInCSS(stringifiedRules);\n } catch (error) {\n return null;\n }\n}\nfunction stringifyRule(rule2, sheetHref) {\n if (isCSSImportRule(rule2)) {\n let importStringified;\n try {\n importStringified = // for same-origin stylesheets,\n // we can access the imported stylesheet rules directly\n stringifyStylesheet(rule2.styleSheet) || // work around browser issues with the raw string `@import url(...)` statement\n escapeImportStatement(rule2);\n } catch (error) {\n importStringified = rule2.cssText;\n }\n if (rule2.styleSheet.href) {\n return absolutifyURLs(importStringified, rule2.styleSheet.href);\n }\n return importStringified;\n } else {\n let ruleStringified = rule2.cssText;\n if (isCSSStyleRule(rule2) && rule2.selectorText.includes(\":\")) {\n ruleStringified = fixSafariColons(ruleStringified);\n }\n if (sheetHref) {\n return absolutifyURLs(ruleStringified, sheetHref);\n }\n return ruleStringified;\n }\n}\nfunction fixSafariColons(cssStringified) {\n const regex = /(\\[(?:[\\w-]+)[^\\\\])(:(?:[\\w-]+)\\])/gm;\n return cssStringified.replace(regex, \"$1\\\\$2\");\n}\nfunction isCSSImportRule(rule2) {\n return \"styleSheet\" in rule2;\n}\nfunction isCSSStyleRule(rule2) {\n return \"selectorText\" in rule2;\n}\nclass Mirror {\n constructor() {\n __publicField$1(this, \"idNodeMap\", /* @__PURE__ */ new Map());\n __publicField$1(this, \"nodeMetaMap\", /* @__PURE__ */ new WeakMap());\n }\n getId(n2) {\n var _a2;\n if (!n2) return -1;\n const id = (_a2 = this.getMeta(n2)) == null ? void 0 : _a2.id;\n return id ?? -1;\n }\n getNode(id) {\n return this.idNodeMap.get(id) || null;\n }\n getIds() {\n return Array.from(this.idNodeMap.keys());\n }\n getMeta(n2) {\n return this.nodeMetaMap.get(n2) || null;\n }\n // removes the node from idNodeMap\n // doesn't remove the node from nodeMetaMap\n removeNodeFromMap(n2) {\n const id = this.getId(n2);\n this.idNodeMap.delete(id);\n if (n2.childNodes) {\n n2.childNodes.forEach(\n (childNode) => this.removeNodeFromMap(childNode)\n );\n }\n }\n has(id) {\n return this.idNodeMap.has(id);\n }\n hasNode(node2) {\n return this.nodeMetaMap.has(node2);\n }\n add(n2, meta) {\n const id = meta.id;\n this.idNodeMap.set(id, n2);\n this.nodeMetaMap.set(n2, meta);\n }\n replace(id, n2) {\n const oldNode = this.getNode(id);\n if (oldNode) {\n const meta = this.nodeMetaMap.get(oldNode);\n if (meta) this.nodeMetaMap.set(n2, meta);\n }\n this.idNodeMap.set(id, n2);\n }\n reset() {\n this.idNodeMap = /* @__PURE__ */ new Map();\n this.nodeMetaMap = /* @__PURE__ */ new WeakMap();\n }\n}\nfunction createMirror$2() {\n return new Mirror();\n}\nfunction maskInputValue({\n element,\n maskInputOptions,\n tagName,\n type,\n value,\n maskInputFn\n}) {\n let text = value || \"\";\n const actualType = type && toLowerCase(type);\n if (maskInputOptions[tagName.toLowerCase()] || actualType && maskInputOptions[actualType]) {\n if (maskInputFn) {\n text = maskInputFn(text, element);\n } else {\n text = \"*\".repeat(text.length);\n }\n }\n return text;\n}\nfunction toLowerCase(str) {\n return str.toLowerCase();\n}\nconst ORIGINAL_ATTRIBUTE_NAME = \"__rrweb_original__\";\nfunction is2DCanvasBlank(canvas) {\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) return true;\n const chunkSize = 50;\n for (let x2 = 0; x2 < canvas.width; x2 += chunkSize) {\n for (let y = 0; y < canvas.height; y += chunkSize) {\n const getImageData = ctx.getImageData;\n const originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData ? getImageData[ORIGINAL_ATTRIBUTE_NAME] : getImageData;\n const pixelBuffer = new Uint32Array(\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n originalGetImageData.call(\n ctx,\n x2,\n y,\n Math.min(chunkSize, canvas.width - x2),\n Math.min(chunkSize, canvas.height - y)\n ).data.buffer\n );\n if (pixelBuffer.some((pixel) => pixel !== 0)) return false;\n }\n }\n return true;\n}\nfunction getInputType(element) {\n const type = element.type;\n return element.hasAttribute(\"data-rr-is-password\") ? \"password\" : type ? (\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n toLowerCase(type)\n ) : null;\n}\nfunction extractFileExtension(path, baseURL) {\n let url;\n try {\n url = new URL(path, baseURL ?? window.location.href);\n } catch (err) {\n return null;\n }\n const regex = /\\.([0-9a-z]+)(?:$)/i;\n const match = url.pathname.match(regex);\n return (match == null ? void 0 : match[1]) ?? null;\n}\nfunction extractOrigin(url) {\n let origin = \"\";\n if (url.indexOf(\"//\") > -1) {\n origin = url.split(\"/\").slice(0, 3).join(\"/\");\n } else {\n origin = url.split(\"/\")[0];\n }\n origin = origin.split(\"?\")[0];\n return origin;\n}\nconst URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\nconst URL_PROTOCOL_MATCH = /^(?:[a-z+]+:)?\\/\\//i;\nconst URL_WWW_MATCH = /^www\\..*/i;\nconst DATA_URI = /^(data:)([^,]*),(.*)/i;\nfunction absolutifyURLs(cssText, href) {\n return (cssText || \"\").replace(\n URL_IN_CSS_REF,\n (origin, quote1, path1, quote2, path2, path3) => {\n const filePath = path1 || path2 || path3;\n const maybeQuote = quote1 || quote2 || \"\";\n if (!filePath) {\n return origin;\n }\n if (URL_PROTOCOL_MATCH.test(filePath) || URL_WWW_MATCH.test(filePath)) {\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\n }\n if (DATA_URI.test(filePath)) {\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\n }\n if (filePath[0] === \"/\") {\n return `url(${maybeQuote}${extractOrigin(href) + filePath}${maybeQuote})`;\n }\n const stack = href.split(\"/\");\n const parts = filePath.split(\"/\");\n stack.pop();\n for (const part of parts) {\n if (part === \".\") {\n continue;\n } else if (part === \"..\") {\n stack.pop();\n } else {\n stack.push(part);\n }\n }\n return `url(${maybeQuote}${stack.join(\"/\")}${maybeQuote})`;\n }\n );\n}\nfunction normalizeCssString(cssText) {\n return cssText.replace(/(\\/\\*[^*]*\\*\\/)|[\\s;]/g, \"\");\n}\nfunction splitCssText(cssText, style) {\n const childNodes2 = Array.from(style.childNodes);\n const splits = [];\n if (childNodes2.length > 1 && cssText && typeof cssText === \"string\") {\n const cssTextNorm = normalizeCssString(cssText);\n for (let i2 = 1; i2 < childNodes2.length; i2++) {\n if (childNodes2[i2].textContent && typeof childNodes2[i2].textContent === \"string\") {\n const textContentNorm = normalizeCssString(childNodes2[i2].textContent);\n for (let j = 3; j < textContentNorm.length; j++) {\n const bit = textContentNorm.substring(0, j);\n if (cssTextNorm.split(bit).length === 2) {\n const splitNorm = cssTextNorm.indexOf(bit);\n for (let k = splitNorm; k < cssText.length; k++) {\n if (normalizeCssString(cssText.substring(0, k)).length === splitNorm) {\n splits.push(cssText.substring(0, k));\n cssText = cssText.substring(k);\n break;\n }\n }\n break;\n }\n }\n }\n }\n }\n splits.push(cssText);\n return splits;\n}\nfunction markCssSplits(cssText, style) {\n return splitCssText(cssText, style).join(\"/* rr_split */\");\n}\nlet _id = 1;\nconst tagNameRegex = new RegExp(\"[^a-z0-9-_:]\");\nconst IGNORED_NODE = -2;\nfunction genId() {\n return _id++;\n}\nfunction getValidTagName$1(element) {\n if (element instanceof HTMLFormElement) {\n return \"form\";\n }\n const processedTagName = toLowerCase(element.tagName);\n if (tagNameRegex.test(processedTagName)) {\n return \"div\";\n }\n return processedTagName;\n}\nlet canvasService;\nlet canvasCtx;\nconst SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\nconst SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\n if (attributeValue.trim() === \"\") {\n return attributeValue;\n }\n let pos = 0;\n function collectCharacters(regEx) {\n let chars2;\n const match = regEx.exec(attributeValue.substring(pos));\n if (match) {\n chars2 = match[0];\n pos += chars2.length;\n return chars2;\n }\n return \"\";\n }\n const output = [];\n while (true) {\n collectCharacters(SRCSET_COMMAS_OR_SPACES);\n if (pos >= attributeValue.length) {\n break;\n }\n let url = collectCharacters(SRCSET_NOT_SPACES);\n if (url.slice(-1) === \",\") {\n url = absoluteToDoc(doc, url.substring(0, url.length - 1));\n output.push(url);\n } else {\n let descriptorsStr = \"\";\n url = absoluteToDoc(doc, url);\n let inParens = false;\n while (true) {\n const c2 = attributeValue.charAt(pos);\n if (c2 === \"\") {\n output.push((url + descriptorsStr).trim());\n break;\n } else if (!inParens) {\n if (c2 === \",\") {\n pos += 1;\n output.push((url + descriptorsStr).trim());\n break;\n } else if (c2 === \"(\") {\n inParens = true;\n }\n } else {\n if (c2 === \")\") {\n inParens = false;\n }\n }\n descriptorsStr += c2;\n pos += 1;\n }\n }\n }\n return output.join(\", \");\n}\nconst cachedDocument = /* @__PURE__ */ new WeakMap();\nfunction absoluteToDoc(doc, attributeValue) {\n if (!attributeValue || attributeValue.trim() === \"\") {\n return attributeValue;\n }\n return getHref(doc, attributeValue);\n}\nfunction isSVGElement(el) {\n return Boolean(el.tagName === \"svg\" || el.ownerSVGElement);\n}\nfunction getHref(doc, customHref) {\n let a2 = cachedDocument.get(doc);\n if (!a2) {\n a2 = doc.createElement(\"a\");\n cachedDocument.set(doc, a2);\n }\n if (!customHref) {\n customHref = \"\";\n } else if (customHref.startsWith(\"blob:\") || customHref.startsWith(\"data:\")) {\n return customHref;\n }\n a2.setAttribute(\"href\", customHref);\n return a2.href;\n}\nfunction transformAttribute(doc, tagName, name, value) {\n if (!value) {\n return value;\n }\n if (name === \"src\" || name === \"href\" && !(tagName === \"use\" && value[0] === \"#\")) {\n return absoluteToDoc(doc, value);\n } else if (name === \"xlink:href\" && value[0] !== \"#\") {\n return absoluteToDoc(doc, value);\n } else if (name === \"background\" && (tagName === \"table\" || tagName === \"td\" || tagName === \"th\")) {\n return absoluteToDoc(doc, value);\n } else if (name === \"srcset\") {\n return getAbsoluteSrcsetString(doc, value);\n } else if (name === \"style\") {\n return absolutifyURLs(value, getHref(doc));\n } else if (tagName === \"object\" && name === \"data\") {\n return absoluteToDoc(doc, value);\n }\n return value;\n}\nfunction ignoreAttribute(tagName, name, _value) {\n return (tagName === \"video\" || tagName === \"audio\") && name === \"autoplay\";\n}\nfunction _isBlockedElement(element, blockClass, blockSelector) {\n try {\n if (typeof blockClass === \"string\") {\n if (element.classList.contains(blockClass)) {\n return true;\n }\n } else {\n for (let eIndex = element.classList.length; eIndex--; ) {\n const className = element.classList[eIndex];\n if (blockClass.test(className)) {\n return true;\n }\n }\n }\n if (blockSelector) {\n return element.matches(blockSelector);\n }\n } catch (e2) {\n }\n return false;\n}\nfunction classMatchesRegex(node2, regex, checkAncestors) {\n if (!node2) return false;\n if (node2.nodeType !== node2.ELEMENT_NODE) {\n if (!checkAncestors) return false;\n return classMatchesRegex(index$1.parentNode(node2), regex, checkAncestors);\n }\n for (let eIndex = node2.classList.length; eIndex--; ) {\n const className = node2.classList[eIndex];\n if (regex.test(className)) {\n return true;\n }\n }\n if (!checkAncestors) return false;\n return classMatchesRegex(index$1.parentNode(node2), regex, checkAncestors);\n}\nfunction needMaskingText(node2, maskTextClass, maskTextSelector, checkAncestors) {\n let el;\n if (isElement(node2)) {\n el = node2;\n if (!index$1.childNodes(el).length) {\n return false;\n }\n } else if (index$1.parentElement(node2) === null) {\n return false;\n } else {\n el = index$1.parentElement(node2);\n }\n try {\n if (typeof maskTextClass === \"string\") {\n if (checkAncestors) {\n if (el.closest(`.${maskTextClass}`)) return true;\n } else {\n if (el.classList.contains(maskTextClass)) return true;\n }\n } else {\n if (classMatchesRegex(el, maskTextClass, checkAncestors)) return true;\n }\n if (maskTextSelector) {\n if (checkAncestors) {\n if (el.closest(maskTextSelector)) return true;\n } else {\n if (el.matches(maskTextSelector)) return true;\n }\n }\n } catch (e2) {\n }\n return false;\n}\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\n const win = iframeEl.contentWindow;\n if (!win) {\n return;\n }\n let fired = false;\n let readyState;\n try {\n readyState = win.document.readyState;\n } catch (error) {\n return;\n }\n if (readyState !== \"complete\") {\n const timer = setTimeout(() => {\n if (!fired) {\n listener();\n fired = true;\n }\n }, iframeLoadTimeout);\n iframeEl.addEventListener(\"load\", () => {\n clearTimeout(timer);\n fired = true;\n listener();\n });\n return;\n }\n const blankUrl = \"about:blank\";\n if (win.location.href !== blankUrl || iframeEl.src === blankUrl || iframeEl.src === \"\") {\n setTimeout(listener, 0);\n return iframeEl.addEventListener(\"load\", listener);\n }\n iframeEl.addEventListener(\"load\", listener);\n}\nfunction onceStylesheetLoaded(link, listener, styleSheetLoadTimeout) {\n let fired = false;\n let styleSheetLoaded;\n try {\n styleSheetLoaded = link.sheet;\n } catch (error) {\n return;\n }\n if (styleSheetLoaded) return;\n const timer = setTimeout(() => {\n if (!fired) {\n listener();\n fired = true;\n }\n }, styleSheetLoadTimeout);\n link.addEventListener(\"load\", () => {\n clearTimeout(timer);\n fired = true;\n listener();\n });\n}\nfunction serializeNode(n2, options) {\n const {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n inlineStylesheet,\n maskInputOptions = {},\n maskTextFn,\n maskInputFn,\n dataURLOptions = {},\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement = false,\n cssCaptured = false\n } = options;\n const rootId = getRootId(doc, mirror2);\n switch (n2.nodeType) {\n case n2.DOCUMENT_NODE:\n if (n2.compatMode !== \"CSS1Compat\") {\n return {\n type: NodeType$3.Document,\n childNodes: [],\n compatMode: n2.compatMode\n // probably \"BackCompat\"\n };\n } else {\n return {\n type: NodeType$3.Document,\n childNodes: []\n };\n }\n case n2.DOCUMENT_TYPE_NODE:\n return {\n type: NodeType$3.DocumentType,\n name: n2.name,\n publicId: n2.publicId,\n systemId: n2.systemId,\n rootId\n };\n case n2.ELEMENT_NODE:\n return serializeElementNode(n2, {\n doc,\n blockClass,\n blockSelector,\n inlineStylesheet,\n maskInputOptions,\n maskInputFn,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement,\n rootId\n });\n case n2.TEXT_NODE:\n return serializeTextNode(n2, {\n doc,\n needsMask,\n maskTextFn,\n rootId,\n cssCaptured\n });\n case n2.CDATA_SECTION_NODE:\n return {\n type: NodeType$3.CDATA,\n textContent: \"\",\n rootId\n };\n case n2.COMMENT_NODE:\n return {\n type: NodeType$3.Comment,\n textContent: index$1.textContent(n2) || \"\",\n rootId\n };\n default:\n return false;\n }\n}\nfunction getRootId(doc, mirror2) {\n if (!mirror2.hasNode(doc)) return void 0;\n const docId = mirror2.getId(doc);\n return docId === 1 ? void 0 : docId;\n}\nfunction serializeTextNode(n2, options) {\n const { needsMask, maskTextFn, rootId, cssCaptured } = options;\n const parent = index$1.parentNode(n2);\n const parentTagName = parent && parent.tagName;\n let textContent2 = \"\";\n const isStyle = parentTagName === \"STYLE\" ? true : void 0;\n const isScript = parentTagName === \"SCRIPT\" ? true : void 0;\n if (isScript) {\n textContent2 = \"SCRIPT_PLACEHOLDER\";\n } else if (!cssCaptured) {\n textContent2 = index$1.textContent(n2);\n if (isStyle && textContent2) {\n textContent2 = absolutifyURLs(textContent2, getHref(options.doc));\n }\n }\n if (!isStyle && !isScript && textContent2 && needsMask) {\n textContent2 = maskTextFn ? maskTextFn(textContent2, index$1.parentElement(n2)) : textContent2.replace(/[\\S]/g, \"*\");\n }\n return {\n type: NodeType$3.Text,\n textContent: textContent2 || \"\",\n rootId\n };\n}\nfunction serializeElementNode(n2, options) {\n const {\n doc,\n blockClass,\n blockSelector,\n inlineStylesheet,\n maskInputOptions = {},\n maskInputFn,\n dataURLOptions = {},\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement = false,\n rootId\n } = options;\n const needBlock = _isBlockedElement(n2, blockClass, blockSelector);\n const tagName = getValidTagName$1(n2);\n let attributes = {};\n const len = n2.attributes.length;\n for (let i2 = 0; i2 < len; i2++) {\n const attr = n2.attributes[i2];\n if (!ignoreAttribute(tagName, attr.name, attr.value)) {\n attributes[attr.name] = transformAttribute(\n doc,\n tagName,\n toLowerCase(attr.name),\n attr.value\n );\n }\n }\n if (tagName === \"link\" && inlineStylesheet) {\n const stylesheet = Array.from(doc.styleSheets).find((s2) => {\n return s2.href === n2.href;\n });\n let cssText = null;\n if (stylesheet) {\n cssText = stringifyStylesheet(stylesheet);\n }\n if (cssText) {\n delete attributes.rel;\n delete attributes.href;\n attributes._cssText = cssText;\n }\n }\n if (tagName === \"style\" && n2.sheet) {\n let cssText = stringifyStylesheet(\n n2.sheet\n );\n if (cssText) {\n if (n2.childNodes.length > 1) {\n cssText = markCssSplits(cssText, n2);\n }\n attributes._cssText = cssText;\n }\n }\n if (tagName === \"input\" || tagName === \"textarea\" || tagName === \"select\") {\n const value = n2.value;\n const checked = n2.checked;\n if (attributes.type !== \"radio\" && attributes.type !== \"checkbox\" && attributes.type !== \"submit\" && attributes.type !== \"button\" && value) {\n attributes.value = maskInputValue({\n element: n2,\n type: getInputType(n2),\n tagName,\n value,\n maskInputOptions,\n maskInputFn\n });\n } else if (checked) {\n attributes.checked = checked;\n }\n }\n if (tagName === \"option\") {\n if (n2.selected && !maskInputOptions[\"select\"]) {\n attributes.selected = true;\n } else {\n delete attributes.selected;\n }\n }\n if (tagName === \"dialog\" && n2.open) {\n attributes.rr_open_mode = n2.matches(\"dialog:modal\") ? \"modal\" : \"non-modal\";\n }\n if (tagName === \"canvas\" && recordCanvas) {\n if (n2.__context === \"2d\") {\n if (!is2DCanvasBlank(n2)) {\n attributes.rr_dataURL = n2.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n }\n } else if (!(\"__context\" in n2)) {\n const canvasDataURL = n2.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n const blankCanvas = doc.createElement(\"canvas\");\n blankCanvas.width = n2.width;\n blankCanvas.height = n2.height;\n const blankCanvasDataURL = blankCanvas.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n if (canvasDataURL !== blankCanvasDataURL) {\n attributes.rr_dataURL = canvasDataURL;\n }\n }\n }\n if (tagName === \"img\" && inlineImages) {\n if (!canvasService) {\n canvasService = doc.createElement(\"canvas\");\n canvasCtx = canvasService.getContext(\"2d\");\n }\n const image = n2;\n const imageSrc = image.currentSrc || image.getAttribute(\"src\") || \"\";\n const priorCrossOrigin = image.crossOrigin;\n const recordInlineImage = () => {\n image.removeEventListener(\"load\", recordInlineImage);\n try {\n canvasService.width = image.naturalWidth;\n canvasService.height = image.naturalHeight;\n canvasCtx.drawImage(image, 0, 0);\n attributes.rr_dataURL = canvasService.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n } catch (err) {\n if (image.crossOrigin !== \"anonymous\") {\n image.crossOrigin = \"anonymous\";\n if (image.complete && image.naturalWidth !== 0)\n recordInlineImage();\n else image.addEventListener(\"load\", recordInlineImage);\n return;\n } else {\n console.warn(\n `Cannot inline img src=${imageSrc}! Error: ${err}`\n );\n }\n }\n if (image.crossOrigin === \"anonymous\") {\n priorCrossOrigin ? attributes.crossOrigin = priorCrossOrigin : image.removeAttribute(\"crossorigin\");\n }\n };\n if (image.complete && image.naturalWidth !== 0) recordInlineImage();\n else image.addEventListener(\"load\", recordInlineImage);\n }\n if (tagName === \"audio\" || tagName === \"video\") {\n const mediaAttributes = attributes;\n mediaAttributes.rr_mediaState = n2.paused ? \"paused\" : \"played\";\n mediaAttributes.rr_mediaCurrentTime = n2.currentTime;\n mediaAttributes.rr_mediaPlaybackRate = n2.playbackRate;\n mediaAttributes.rr_mediaMuted = n2.muted;\n mediaAttributes.rr_mediaLoop = n2.loop;\n mediaAttributes.rr_mediaVolume = n2.volume;\n }\n if (!newlyAddedElement) {\n if (n2.scrollLeft) {\n attributes.rr_scrollLeft = n2.scrollLeft;\n }\n if (n2.scrollTop) {\n attributes.rr_scrollTop = n2.scrollTop;\n }\n }\n if (needBlock) {\n const { width, height } = n2.getBoundingClientRect();\n attributes = {\n class: attributes.class,\n rr_width: `${width}px`,\n rr_height: `${height}px`\n };\n }\n if (tagName === \"iframe\" && !keepIframeSrcFn(attributes.src)) {\n if (!n2.contentDocument) {\n attributes.rr_src = attributes.src;\n }\n delete attributes.src;\n }\n let isCustomElement;\n try {\n if (customElements.get(tagName)) isCustomElement = true;\n } catch (e2) {\n }\n return {\n type: NodeType$3.Element,\n tagName,\n attributes,\n childNodes: [],\n isSVG: isSVGElement(n2) || void 0,\n needBlock,\n rootId,\n isCustom: isCustomElement\n };\n}\nfunction lowerIfExists(maybeAttr) {\n if (maybeAttr === void 0 || maybeAttr === null) {\n return \"\";\n } else {\n return maybeAttr.toLowerCase();\n }\n}\nfunction slimDOMExcluded(sn, slimDOMOptions) {\n if (slimDOMOptions.comment && sn.type === NodeType$3.Comment) {\n return true;\n } else if (sn.type === NodeType$3.Element) {\n if (slimDOMOptions.script && // script tag\n (sn.tagName === \"script\" || // (module)preload link\n sn.tagName === \"link\" && (sn.attributes.rel === \"preload\" || sn.attributes.rel === \"modulepreload\") && sn.attributes.as === \"script\" || // prefetch link\n sn.tagName === \"link\" && sn.attributes.rel === \"prefetch\" && typeof sn.attributes.href === \"string\" && extractFileExtension(sn.attributes.href) === \"js\")) {\n return true;\n } else if (slimDOMOptions.headFavicon && (sn.tagName === \"link\" && sn.attributes.rel === \"shortcut icon\" || sn.tagName === \"meta\" && (lowerIfExists(sn.attributes.name).match(\n /^msapplication-tile(image|color)$/\n ) || lowerIfExists(sn.attributes.name) === \"application-name\" || lowerIfExists(sn.attributes.rel) === \"icon\" || lowerIfExists(sn.attributes.rel) === \"apple-touch-icon\" || lowerIfExists(sn.attributes.rel) === \"shortcut icon\"))) {\n return true;\n } else if (sn.tagName === \"meta\") {\n if (slimDOMOptions.headMetaDescKeywords && lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\n return true;\n } else if (slimDOMOptions.headMetaSocial && (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) || // og = opengraph (facebook)\n lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) || lowerIfExists(sn.attributes.name) === \"pinterest\")) {\n return true;\n } else if (slimDOMOptions.headMetaRobots && (lowerIfExists(sn.attributes.name) === \"robots\" || lowerIfExists(sn.attributes.name) === \"googlebot\" || lowerIfExists(sn.attributes.name) === \"bingbot\")) {\n return true;\n } else if (slimDOMOptions.headMetaHttpEquiv && sn.attributes[\"http-equiv\"] !== void 0) {\n return true;\n } else if (slimDOMOptions.headMetaAuthorship && (lowerIfExists(sn.attributes.name) === \"author\" || lowerIfExists(sn.attributes.name) === \"generator\" || lowerIfExists(sn.attributes.name) === \"framework\" || lowerIfExists(sn.attributes.name) === \"publisher\" || lowerIfExists(sn.attributes.name) === \"progid\" || lowerIfExists(sn.attributes.property).match(/^article:/) || lowerIfExists(sn.attributes.property).match(/^product:/))) {\n return true;\n } else if (slimDOMOptions.headMetaVerification && (lowerIfExists(sn.attributes.name) === \"google-site-verification\" || lowerIfExists(sn.attributes.name) === \"yandex-verification\" || lowerIfExists(sn.attributes.name) === \"csrf-token\" || lowerIfExists(sn.attributes.name) === \"p:domain_verify\" || lowerIfExists(sn.attributes.name) === \"verify-v1\" || lowerIfExists(sn.attributes.name) === \"verification\" || lowerIfExists(sn.attributes.name) === \"shopify-checkout-api-token\")) {\n return true;\n }\n }\n }\n return false;\n}\nfunction serializeNodeWithId(n2, options) {\n const {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n skipChild = false,\n inlineStylesheet = true,\n maskInputOptions = {},\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions = {},\n inlineImages = false,\n recordCanvas = false,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout = 5e3,\n onStylesheetLoad,\n stylesheetLoadTimeout = 5e3,\n keepIframeSrcFn = () => false,\n newlyAddedElement = false,\n cssCaptured = false\n } = options;\n let { needsMask } = options;\n let { preserveWhiteSpace = true } = options;\n if (!needsMask) {\n const checkAncestors = needsMask === void 0;\n needsMask = needMaskingText(\n n2,\n maskTextClass,\n maskTextSelector,\n checkAncestors\n );\n }\n const _serializedNode = serializeNode(n2, {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement,\n cssCaptured\n });\n if (!_serializedNode) {\n console.warn(n2, \"not serialized\");\n return null;\n }\n let id;\n if (mirror2.hasNode(n2)) {\n id = mirror2.getId(n2);\n } else if (slimDOMExcluded(_serializedNode, slimDOMOptions) || !preserveWhiteSpace && _serializedNode.type === NodeType$3.Text && !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, \"\").length) {\n id = IGNORED_NODE;\n } else {\n id = genId();\n }\n const serializedNode = Object.assign(_serializedNode, { id });\n mirror2.add(n2, serializedNode);\n if (id === IGNORED_NODE) {\n return null;\n }\n if (onSerialize) {\n onSerialize(n2);\n }\n let recordChild = !skipChild;\n if (serializedNode.type === NodeType$3.Element) {\n recordChild = recordChild && !serializedNode.needBlock;\n delete serializedNode.needBlock;\n const shadowRootEl = index$1.shadowRoot(n2);\n if (shadowRootEl && isNativeShadowDom(shadowRootEl))\n serializedNode.isShadowHost = true;\n }\n if ((serializedNode.type === NodeType$3.Document || serializedNode.type === NodeType$3.Element) && recordChild) {\n if (slimDOMOptions.headWhitespace && serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"head\") {\n preserveWhiteSpace = false;\n }\n const bypassOptions = {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n skipChild,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn,\n cssCaptured: false\n };\n if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"textarea\" && serializedNode.attributes.value !== void 0) ;\n else {\n if (serializedNode.type === NodeType$3.Element && serializedNode.attributes._cssText !== void 0 && typeof serializedNode.attributes._cssText === \"string\") {\n bypassOptions.cssCaptured = true;\n }\n for (const childN of Array.from(index$1.childNodes(n2))) {\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n }\n let shadowRootEl = null;\n if (isElement(n2) && (shadowRootEl = index$1.shadowRoot(n2))) {\n for (const childN of Array.from(index$1.childNodes(shadowRootEl))) {\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n isNativeShadowDom(shadowRootEl) && (serializedChildNode.isShadow = true);\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n }\n }\n const parent = index$1.parentNode(n2);\n if (parent && isShadowRoot(parent) && isNativeShadowDom(parent)) {\n serializedNode.isShadow = true;\n }\n if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"iframe\") {\n onceIframeLoaded(\n n2,\n () => {\n const iframeDoc = n2.contentDocument;\n if (iframeDoc && onIframeLoad) {\n const serializedIframeNode = serializeNodeWithId(iframeDoc, {\n doc: iframeDoc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn\n });\n if (serializedIframeNode) {\n onIframeLoad(\n n2,\n serializedIframeNode\n );\n }\n }\n },\n iframeLoadTimeout\n );\n }\n if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"link\" && typeof serializedNode.attributes.rel === \"string\" && (serializedNode.attributes.rel === \"stylesheet\" || serializedNode.attributes.rel === \"preload\" && typeof serializedNode.attributes.href === \"string\" && extractFileExtension(serializedNode.attributes.href) === \"css\")) {\n onceStylesheetLoaded(\n n2,\n () => {\n if (onStylesheetLoad) {\n const serializedLinkNode = serializeNodeWithId(n2, {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn\n });\n if (serializedLinkNode) {\n onStylesheetLoad(\n n2,\n serializedLinkNode\n );\n }\n }\n },\n stylesheetLoadTimeout\n );\n }\n return serializedNode;\n}\nfunction snapshot(n2, options) {\n const {\n mirror: mirror2 = new Mirror(),\n blockClass = \"rr-block\",\n blockSelector = null,\n maskTextClass = \"rr-mask\",\n maskTextSelector = null,\n inlineStylesheet = true,\n inlineImages = false,\n recordCanvas = false,\n maskAllInputs = false,\n maskTextFn,\n maskInputFn,\n slimDOM = false,\n dataURLOptions,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn = () => false\n } = options || {};\n const maskInputOptions = maskAllInputs === true ? {\n color: true,\n date: true,\n \"datetime-local\": true,\n email: true,\n month: true,\n number: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true,\n textarea: true,\n select: true,\n password: true\n } : maskAllInputs === false ? {\n password: true\n } : maskAllInputs;\n const slimDOMOptions = slimDOM === true || slimDOM === \"all\" ? (\n // if true: set of sensible options that should not throw away any information\n {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaDescKeywords: slimDOM === \"all\",\n // destructive\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaAuthorship: true,\n headMetaVerification: true\n }\n ) : slimDOM === false ? {} : slimDOM;\n return serializeNodeWithId(n2, {\n doc: n2,\n mirror: mirror2,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn,\n newlyAddedElement: false\n });\n}\nfunction getDefaultExportFromCjs$1(x2) {\n return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, \"default\") ? x2[\"default\"] : x2;\n}\nfunction getAugmentedNamespace$1(n2) {\n if (n2.__esModule) return n2;\n var f2 = n2.default;\n if (typeof f2 == \"function\") {\n var a2 = function a22() {\n if (this instanceof a22) {\n return Reflect.construct(f2, arguments, this.constructor);\n }\n return f2.apply(this, arguments);\n };\n a2.prototype = f2.prototype;\n } else a2 = {};\n Object.defineProperty(a2, \"__esModule\", { value: true });\n Object.keys(n2).forEach(function(k) {\n var d = Object.getOwnPropertyDescriptor(n2, k);\n Object.defineProperty(a2, k, d.get ? d : {\n enumerable: true,\n get: function() {\n return n2[k];\n }\n });\n });\n return a2;\n}\nvar picocolors_browser$1 = { exports: {} };\nvar x$1 = String;\nvar create$1 = function() {\n return { isColorSupported: false, reset: x$1, bold: x$1, dim: x$1, italic: x$1, underline: x$1, inverse: x$1, hidden: x$1, strikethrough: x$1, black: x$1, red: x$1, green: x$1, yellow: x$1, blue: x$1, magenta: x$1, cyan: x$1, white: x$1, gray: x$1, bgBlack: x$1, bgRed: x$1, bgGreen: x$1, bgYellow: x$1, bgBlue: x$1, bgMagenta: x$1, bgCyan: x$1, bgWhite: x$1 };\n};\npicocolors_browser$1.exports = create$1();\npicocolors_browser$1.exports.createColors = create$1;\nvar picocolors_browserExports$1 = picocolors_browser$1.exports;\nconst __viteBrowserExternal$2 = {};\nconst __viteBrowserExternal$1$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: __viteBrowserExternal$2\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst require$$2$1 = /* @__PURE__ */ getAugmentedNamespace$1(__viteBrowserExternal$1$1);\nlet pico$1 = picocolors_browserExports$1;\nlet terminalHighlight$1$1 = require$$2$1;\nlet CssSyntaxError$3$1 = class CssSyntaxError extends Error {\n constructor(message, line, column, source, file, plugin22) {\n super(message);\n this.name = \"CssSyntaxError\";\n this.reason = message;\n if (file) {\n this.file = file;\n }\n if (source) {\n this.source = source;\n }\n if (plugin22) {\n this.plugin = plugin22;\n }\n if (typeof line !== \"undefined\" && typeof column !== \"undefined\") {\n if (typeof line === \"number\") {\n this.line = line;\n this.column = column;\n } else {\n this.line = line.line;\n this.column = line.column;\n this.endLine = column.line;\n this.endColumn = column.column;\n }\n }\n this.setMessage();\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, CssSyntaxError);\n }\n }\n setMessage() {\n this.message = this.plugin ? this.plugin + \": \" : \"\";\n this.message += this.file ? this.file : \"\";\n if (typeof this.line !== \"undefined\") {\n this.message += \":\" + this.line + \":\" + this.column;\n }\n this.message += \": \" + this.reason;\n }\n showSourceCode(color) {\n if (!this.source) return \"\";\n let css = this.source;\n if (color == null) color = pico$1.isColorSupported;\n if (terminalHighlight$1$1) {\n if (color) css = terminalHighlight$1$1(css);\n }\n let lines = css.split(/\\r?\\n/);\n let start = Math.max(this.line - 3, 0);\n let end = Math.min(this.line + 2, lines.length);\n let maxWidth = String(end).length;\n let mark, aside;\n if (color) {\n let { bold, gray, red } = pico$1.createColors(true);\n mark = (text) => bold(red(text));\n aside = (text) => gray(text);\n } else {\n mark = aside = (str) => str;\n }\n return lines.slice(start, end).map((line, index2) => {\n let number = start + 1 + index2;\n let gutter = \" \" + (\" \" + number).slice(-maxWidth) + \" | \";\n if (number === this.line) {\n let spacing = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, this.column - 1).replace(/[^\\t]/g, \" \");\n return mark(\">\") + aside(gutter) + line + \"\\n \" + spacing + mark(\"^\");\n }\n return \" \" + aside(gutter) + line;\n }).join(\"\\n\");\n }\n toString() {\n let code = this.showSourceCode();\n if (code) {\n code = \"\\n\\n\" + code + \"\\n\";\n }\n return this.name + \": \" + this.message + code;\n }\n};\nvar cssSyntaxError$1 = CssSyntaxError$3$1;\nCssSyntaxError$3$1.default = CssSyntaxError$3$1;\nvar symbols$1 = {};\nsymbols$1.isClean = Symbol(\"isClean\");\nsymbols$1.my = Symbol(\"my\");\nconst DEFAULT_RAW$1 = {\n after: \"\\n\",\n beforeClose: \"\\n\",\n beforeComment: \"\\n\",\n beforeDecl: \"\\n\",\n beforeOpen: \" \",\n beforeRule: \"\\n\",\n colon: \": \",\n commentLeft: \" \",\n commentRight: \" \",\n emptyBody: \"\",\n indent: \" \",\n semicolon: false\n};\nfunction capitalize$1(str) {\n return str[0].toUpperCase() + str.slice(1);\n}\nlet Stringifier$2$1 = class Stringifier {\n constructor(builder) {\n this.builder = builder;\n }\n atrule(node2, semicolon) {\n let name = \"@\" + node2.name;\n let params = node2.params ? this.rawValue(node2, \"params\") : \"\";\n if (typeof node2.raws.afterName !== \"undefined\") {\n name += node2.raws.afterName;\n } else if (params) {\n name += \" \";\n }\n if (node2.nodes) {\n this.block(node2, name + params);\n } else {\n let end = (node2.raws.between || \"\") + (semicolon ? \";\" : \"\");\n this.builder(name + params + end, node2);\n }\n }\n beforeAfter(node2, detect) {\n let value;\n if (node2.type === \"decl\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (node2.type === \"comment\") {\n value = this.raw(node2, null, \"beforeComment\");\n } else if (detect === \"before\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else {\n value = this.raw(node2, null, \"beforeClose\");\n }\n let buf = node2.parent;\n let depth = 0;\n while (buf && buf.type !== \"root\") {\n depth += 1;\n buf = buf.parent;\n }\n if (value.includes(\"\\n\")) {\n let indent = this.raw(node2, null, \"indent\");\n if (indent.length) {\n for (let step = 0; step < depth; step++) value += indent;\n }\n }\n return value;\n }\n block(node2, start) {\n let between = this.raw(node2, \"between\", \"beforeOpen\");\n this.builder(start + between + \"{\", node2, \"start\");\n let after;\n if (node2.nodes && node2.nodes.length) {\n this.body(node2);\n after = this.raw(node2, \"after\");\n } else {\n after = this.raw(node2, \"after\", \"emptyBody\");\n }\n if (after) this.builder(after);\n this.builder(\"}\", node2, \"end\");\n }\n body(node2) {\n let last = node2.nodes.length - 1;\n while (last > 0) {\n if (node2.nodes[last].type !== \"comment\") break;\n last -= 1;\n }\n let semicolon = this.raw(node2, \"semicolon\");\n for (let i2 = 0; i2 < node2.nodes.length; i2++) {\n let child = node2.nodes[i2];\n let before = this.raw(child, \"before\");\n if (before) this.builder(before);\n this.stringify(child, last !== i2 || semicolon);\n }\n }\n comment(node2) {\n let left = this.raw(node2, \"left\", \"commentLeft\");\n let right = this.raw(node2, \"right\", \"commentRight\");\n this.builder(\"/*\" + left + node2.text + right + \"*/\", node2);\n }\n decl(node2, semicolon) {\n let between = this.raw(node2, \"between\", \"colon\");\n let string = node2.prop + between + this.rawValue(node2, \"value\");\n if (node2.important) {\n string += node2.raws.important || \" !important\";\n }\n if (semicolon) string += \";\";\n this.builder(string, node2);\n }\n document(node2) {\n this.body(node2);\n }\n raw(node2, own, detect) {\n let value;\n if (!detect) detect = own;\n if (own) {\n value = node2.raws[own];\n if (typeof value !== \"undefined\") return value;\n }\n let parent = node2.parent;\n if (detect === \"before\") {\n if (!parent || parent.type === \"root\" && parent.first === node2) {\n return \"\";\n }\n if (parent && parent.type === \"document\") {\n return \"\";\n }\n }\n if (!parent) return DEFAULT_RAW$1[detect];\n let root2 = node2.root();\n if (!root2.rawCache) root2.rawCache = {};\n if (typeof root2.rawCache[detect] !== \"undefined\") {\n return root2.rawCache[detect];\n }\n if (detect === \"before\" || detect === \"after\") {\n return this.beforeAfter(node2, detect);\n } else {\n let method = \"raw\" + capitalize$1(detect);\n if (this[method]) {\n value = this[method](root2, node2);\n } else {\n root2.walk((i2) => {\n value = i2.raws[own];\n if (typeof value !== \"undefined\") return false;\n });\n }\n }\n if (typeof value === \"undefined\") value = DEFAULT_RAW$1[detect];\n root2.rawCache[detect] = value;\n return value;\n }\n rawBeforeClose(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length > 0) {\n if (typeof i2.raws.after !== \"undefined\") {\n value = i2.raws.after;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawBeforeComment(root2, node2) {\n let value;\n root2.walkComments((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeDecl(root2, node2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeOpen(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.type !== \"decl\") {\n value = i2.raws.between;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawBeforeRule(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && (i2.parent !== root2 || root2.first !== i2)) {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawColon(root2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.between !== \"undefined\") {\n value = i2.raws.between.replace(/[^\\s:]/g, \"\");\n return false;\n }\n });\n return value;\n }\n rawEmptyBody(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length === 0) {\n value = i2.raws.after;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawIndent(root2) {\n if (root2.raws.indent) return root2.raws.indent;\n let value;\n root2.walk((i2) => {\n let p = i2.parent;\n if (p && p !== root2 && p.parent && p.parent === root2) {\n if (typeof i2.raws.before !== \"undefined\") {\n let parts = i2.raws.before.split(\"\\n\");\n value = parts[parts.length - 1];\n value = value.replace(/\\S/g, \"\");\n return false;\n }\n }\n });\n return value;\n }\n rawSemicolon(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length && i2.last.type === \"decl\") {\n value = i2.raws.semicolon;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawValue(node2, prop) {\n let value = node2[prop];\n let raw = node2.raws[prop];\n if (raw && raw.value === value) {\n return raw.raw;\n }\n return value;\n }\n root(node2) {\n this.body(node2);\n if (node2.raws.after) this.builder(node2.raws.after);\n }\n rule(node2) {\n this.block(node2, this.rawValue(node2, \"selector\"));\n if (node2.raws.ownSemicolon) {\n this.builder(node2.raws.ownSemicolon, node2, \"end\");\n }\n }\n stringify(node2, semicolon) {\n if (!this[node2.type]) {\n throw new Error(\n \"Unknown AST node type \" + node2.type + \". Maybe you need to change PostCSS stringifier.\"\n );\n }\n this[node2.type](node2, semicolon);\n }\n};\nvar stringifier$1 = Stringifier$2$1;\nStringifier$2$1.default = Stringifier$2$1;\nlet Stringifier$1$1 = stringifier$1;\nfunction stringify$4$1(node2, builder) {\n let str = new Stringifier$1$1(builder);\n str.stringify(node2);\n}\nvar stringify_1$1 = stringify$4$1;\nstringify$4$1.default = stringify$4$1;\nlet { isClean: isClean$2$1, my: my$2$1 } = symbols$1;\nlet CssSyntaxError$2$1 = cssSyntaxError$1;\nlet Stringifier2$1 = stringifier$1;\nlet stringify$3$1 = stringify_1$1;\nfunction cloneNode$1(obj, parent) {\n let cloned = new obj.constructor();\n for (let i2 in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, i2)) {\n continue;\n }\n if (i2 === \"proxyCache\") continue;\n let value = obj[i2];\n let type = typeof value;\n if (i2 === \"parent\" && type === \"object\") {\n if (parent) cloned[i2] = parent;\n } else if (i2 === \"source\") {\n cloned[i2] = value;\n } else if (Array.isArray(value)) {\n cloned[i2] = value.map((j) => cloneNode$1(j, cloned));\n } else {\n if (type === \"object\" && value !== null) value = cloneNode$1(value);\n cloned[i2] = value;\n }\n }\n return cloned;\n}\nlet Node$4$1 = class Node2 {\n constructor(defaults = {}) {\n this.raws = {};\n this[isClean$2$1] = false;\n this[my$2$1] = true;\n for (let name in defaults) {\n if (name === \"nodes\") {\n this.nodes = [];\n for (let node2 of defaults[name]) {\n if (typeof node2.clone === \"function\") {\n this.append(node2.clone());\n } else {\n this.append(node2);\n }\n }\n } else {\n this[name] = defaults[name];\n }\n }\n }\n addToError(error) {\n error.postcssNode = this;\n if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n let s2 = this.source;\n error.stack = error.stack.replace(\n /\\n\\s{4}at /,\n `$&${s2.input.from}:${s2.start.line}:${s2.start.column}$&`\n );\n }\n return error;\n }\n after(add) {\n this.parent.insertAfter(this, add);\n return this;\n }\n assign(overrides = {}) {\n for (let name in overrides) {\n this[name] = overrides[name];\n }\n return this;\n }\n before(add) {\n this.parent.insertBefore(this, add);\n return this;\n }\n cleanRaws(keepBetween) {\n delete this.raws.before;\n delete this.raws.after;\n if (!keepBetween) delete this.raws.between;\n }\n clone(overrides = {}) {\n let cloned = cloneNode$1(this);\n for (let name in overrides) {\n cloned[name] = overrides[name];\n }\n return cloned;\n }\n cloneAfter(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertAfter(this, cloned);\n return cloned;\n }\n cloneBefore(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertBefore(this, cloned);\n return cloned;\n }\n error(message, opts = {}) {\n if (this.source) {\n let { end, start } = this.rangeBy(opts);\n return this.source.input.error(\n message,\n { column: start.column, line: start.line },\n { column: end.column, line: end.line },\n opts\n );\n }\n return new CssSyntaxError$2$1(message);\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"prop\" || prop === \"value\" || prop === \"name\" || prop === \"params\" || prop === \"important\" || /* c8 ignore next */\n prop === \"text\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n markDirty() {\n if (this[isClean$2$1]) {\n this[isClean$2$1] = false;\n let next = this;\n while (next = next.parent) {\n next[isClean$2$1] = false;\n }\n }\n }\n next() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 + 1];\n }\n positionBy(opts, stringRepresentation) {\n let pos = this.source.start;\n if (opts.index) {\n pos = this.positionInside(opts.index, stringRepresentation);\n } else if (opts.word) {\n stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) pos = this.positionInside(index2, stringRepresentation);\n }\n return pos;\n }\n positionInside(index2, stringRepresentation) {\n let string = stringRepresentation || this.toString();\n let column = this.source.start.column;\n let line = this.source.start.line;\n for (let i2 = 0; i2 < index2; i2++) {\n if (string[i2] === \"\\n\") {\n column = 1;\n line += 1;\n } else {\n column += 1;\n }\n }\n return { column, line };\n }\n prev() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 - 1];\n }\n rangeBy(opts) {\n let start = {\n column: this.source.start.column,\n line: this.source.start.line\n };\n let end = this.source.end ? {\n column: this.source.end.column + 1,\n line: this.source.end.line\n } : {\n column: start.column + 1,\n line: start.line\n };\n if (opts.word) {\n let stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) {\n start = this.positionInside(index2, stringRepresentation);\n end = this.positionInside(index2 + opts.word.length, stringRepresentation);\n }\n } else {\n if (opts.start) {\n start = {\n column: opts.start.column,\n line: opts.start.line\n };\n } else if (opts.index) {\n start = this.positionInside(opts.index);\n }\n if (opts.end) {\n end = {\n column: opts.end.column,\n line: opts.end.line\n };\n } else if (typeof opts.endIndex === \"number\") {\n end = this.positionInside(opts.endIndex);\n } else if (opts.index) {\n end = this.positionInside(opts.index + 1);\n }\n }\n if (end.line < start.line || end.line === start.line && end.column <= start.column) {\n end = { column: start.column + 1, line: start.line };\n }\n return { end, start };\n }\n raw(prop, defaultType) {\n let str = new Stringifier2$1();\n return str.raw(this, prop, defaultType);\n }\n remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n this.parent = void 0;\n return this;\n }\n replaceWith(...nodes) {\n if (this.parent) {\n let bookmark = this;\n let foundSelf = false;\n for (let node2 of nodes) {\n if (node2 === this) {\n foundSelf = true;\n } else if (foundSelf) {\n this.parent.insertAfter(bookmark, node2);\n bookmark = node2;\n } else {\n this.parent.insertBefore(bookmark, node2);\n }\n }\n if (!foundSelf) {\n this.remove();\n }\n }\n return this;\n }\n root() {\n let result2 = this;\n while (result2.parent && result2.parent.type !== \"document\") {\n result2 = result2.parent;\n }\n return result2;\n }\n toJSON(_, inputs) {\n let fixed = {};\n let emitInputs = inputs == null;\n inputs = inputs || /* @__PURE__ */ new Map();\n let inputsNextIndex = 0;\n for (let name in this) {\n if (!Object.prototype.hasOwnProperty.call(this, name)) {\n continue;\n }\n if (name === \"parent\" || name === \"proxyCache\") continue;\n let value = this[name];\n if (Array.isArray(value)) {\n fixed[name] = value.map((i2) => {\n if (typeof i2 === \"object\" && i2.toJSON) {\n return i2.toJSON(null, inputs);\n } else {\n return i2;\n }\n });\n } else if (typeof value === \"object\" && value.toJSON) {\n fixed[name] = value.toJSON(null, inputs);\n } else if (name === \"source\") {\n let inputId = inputs.get(value.input);\n if (inputId == null) {\n inputId = inputsNextIndex;\n inputs.set(value.input, inputsNextIndex);\n inputsNextIndex++;\n }\n fixed[name] = {\n end: value.end,\n inputId,\n start: value.start\n };\n } else {\n fixed[name] = value;\n }\n }\n if (emitInputs) {\n fixed.inputs = [...inputs.keys()].map((input2) => input2.toJSON());\n }\n return fixed;\n }\n toProxy() {\n if (!this.proxyCache) {\n this.proxyCache = new Proxy(this, this.getProxyProcessor());\n }\n return this.proxyCache;\n }\n toString(stringifier2 = stringify$3$1) {\n if (stringifier2.stringify) stringifier2 = stringifier2.stringify;\n let result2 = \"\";\n stringifier2(this, (i2) => {\n result2 += i2;\n });\n return result2;\n }\n warn(result2, text, opts) {\n let data = { node: this };\n for (let i2 in opts) data[i2] = opts[i2];\n return result2.warn(text, data);\n }\n get proxyOf() {\n return this;\n }\n};\nvar node$1 = Node$4$1;\nNode$4$1.default = Node$4$1;\nlet Node$3$1 = node$1;\nlet Declaration$4$1 = class Declaration extends Node$3$1 {\n constructor(defaults) {\n if (defaults && typeof defaults.value !== \"undefined\" && typeof defaults.value !== \"string\") {\n defaults = { ...defaults, value: String(defaults.value) };\n }\n super(defaults);\n this.type = \"decl\";\n }\n get variable() {\n return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n }\n};\nvar declaration$1 = Declaration$4$1;\nDeclaration$4$1.default = Declaration$4$1;\nlet urlAlphabet$1 = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\nlet customAlphabet$1 = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = \"\";\n let i2 = size;\n while (i2--) {\n id += alphabet[Math.random() * alphabet.length | 0];\n }\n return id;\n };\n};\nlet nanoid$1$1 = (size = 21) => {\n let id = \"\";\n let i2 = size;\n while (i2--) {\n id += urlAlphabet$1[Math.random() * 64 | 0];\n }\n return id;\n};\nvar nonSecure$1 = { nanoid: nanoid$1$1, customAlphabet: customAlphabet$1 };\nlet { SourceMapConsumer: SourceMapConsumer$2$1, SourceMapGenerator: SourceMapGenerator$2$1 } = require$$2$1;\nlet { existsSync: existsSync$1, readFileSync: readFileSync$1 } = require$$2$1;\nlet { dirname: dirname$1$1, join: join$1 } = require$$2$1;\nfunction fromBase64$1(str) {\n if (Buffer) {\n return Buffer.from(str, \"base64\").toString();\n } else {\n return window.atob(str);\n }\n}\nlet PreviousMap$2$1 = class PreviousMap {\n constructor(css, opts) {\n if (opts.map === false) return;\n this.loadAnnotation(css);\n this.inline = this.startWith(this.annotation, \"data:\");\n let prev = opts.map ? opts.map.prev : void 0;\n let text = this.loadMap(opts.from, prev);\n if (!this.mapFile && opts.from) {\n this.mapFile = opts.from;\n }\n if (this.mapFile) this.root = dirname$1$1(this.mapFile);\n if (text) this.text = text;\n }\n consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new SourceMapConsumer$2$1(this.text);\n }\n return this.consumerCache;\n }\n decodeInline(text) {\n let baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/;\n let baseUri = /^data:application\\/json;base64,/;\n let charsetUri = /^data:application\\/json;charset=utf-?8,/;\n let uri = /^data:application\\/json,/;\n if (charsetUri.test(text) || uri.test(text)) {\n return decodeURIComponent(text.substr(RegExp.lastMatch.length));\n }\n if (baseCharsetUri.test(text) || baseUri.test(text)) {\n return fromBase64$1(text.substr(RegExp.lastMatch.length));\n }\n let encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n throw new Error(\"Unsupported source map encoding \" + encoding);\n }\n getAnnotationURL(sourceMapString) {\n return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n }\n isMap(map) {\n if (typeof map !== \"object\") return false;\n return typeof map.mappings === \"string\" || typeof map._mappings === \"string\" || Array.isArray(map.sections);\n }\n loadAnnotation(css) {\n let comments = css.match(/\\/\\*\\s*# sourceMappingURL=/gm);\n if (!comments) return;\n let start = css.lastIndexOf(comments.pop());\n let end = css.indexOf(\"*/\", start);\n if (start > -1 && end > -1) {\n this.annotation = this.getAnnotationURL(css.substring(start, end));\n }\n }\n loadFile(path) {\n this.root = dirname$1$1(path);\n if (existsSync$1(path)) {\n this.mapFile = path;\n return readFileSync$1(path, \"utf-8\").toString().trim();\n }\n }\n loadMap(file, prev) {\n if (prev === false) return false;\n if (prev) {\n if (typeof prev === \"string\") {\n return prev;\n } else if (typeof prev === \"function\") {\n let prevPath = prev(file);\n if (prevPath) {\n let map = this.loadFile(prevPath);\n if (!map) {\n throw new Error(\n \"Unable to load previous source map: \" + prevPath.toString()\n );\n }\n return map;\n }\n } else if (prev instanceof SourceMapConsumer$2$1) {\n return SourceMapGenerator$2$1.fromSourceMap(prev).toString();\n } else if (prev instanceof SourceMapGenerator$2$1) {\n return prev.toString();\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev);\n } else {\n throw new Error(\n \"Unsupported previous source map format: \" + prev.toString()\n );\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation);\n } else if (this.annotation) {\n let map = this.annotation;\n if (file) map = join$1(dirname$1$1(file), map);\n return this.loadFile(map);\n }\n }\n startWith(string, start) {\n if (!string) return false;\n return string.substr(0, start.length) === start;\n }\n withContent() {\n return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n }\n};\nvar previousMap$1 = PreviousMap$2$1;\nPreviousMap$2$1.default = PreviousMap$2$1;\nlet { SourceMapConsumer: SourceMapConsumer$1$1, SourceMapGenerator: SourceMapGenerator$1$1 } = require$$2$1;\nlet { fileURLToPath: fileURLToPath$1, pathToFileURL: pathToFileURL$1$1 } = require$$2$1;\nlet { isAbsolute: isAbsolute$1, resolve: resolve$1$1 } = require$$2$1;\nlet { nanoid: nanoid$2 } = nonSecure$1;\nlet terminalHighlight$2 = require$$2$1;\nlet CssSyntaxError$1$1 = cssSyntaxError$1;\nlet PreviousMap$1$1 = previousMap$1;\nlet fromOffsetCache$1 = Symbol(\"fromOffsetCache\");\nlet sourceMapAvailable$1$1 = Boolean(SourceMapConsumer$1$1 && SourceMapGenerator$1$1);\nlet pathAvailable$1$1 = Boolean(resolve$1$1 && isAbsolute$1);\nlet Input$4$1 = class Input {\n constructor(css, opts = {}) {\n if (css === null || typeof css === \"undefined\" || typeof css === \"object\" && !css.toString) {\n throw new Error(`PostCSS received ${css} instead of CSS string`);\n }\n this.css = css.toString();\n if (this.css[0] === \"\\uFEFF\" || this.css[0] === \"￾\") {\n this.hasBOM = true;\n this.css = this.css.slice(1);\n } else {\n this.hasBOM = false;\n }\n if (opts.from) {\n if (!pathAvailable$1$1 || /^\\w+:\\/\\//.test(opts.from) || isAbsolute$1(opts.from)) {\n this.file = opts.from;\n } else {\n this.file = resolve$1$1(opts.from);\n }\n }\n if (pathAvailable$1$1 && sourceMapAvailable$1$1) {\n let map = new PreviousMap$1$1(this.css, opts);\n if (map.text) {\n this.map = map;\n let file = map.consumer().file;\n if (!this.file && file) this.file = this.mapResolve(file);\n }\n }\n if (!this.file) {\n this.id = \"\";\n }\n if (this.map) this.map.file = this.from;\n }\n error(message, line, column, opts = {}) {\n let result2, endLine, endColumn;\n if (line && typeof line === \"object\") {\n let start = line;\n let end = column;\n if (typeof start.offset === \"number\") {\n let pos = this.fromOffset(start.offset);\n line = pos.line;\n column = pos.col;\n } else {\n line = start.line;\n column = start.column;\n }\n if (typeof end.offset === \"number\") {\n let pos = this.fromOffset(end.offset);\n endLine = pos.line;\n endColumn = pos.col;\n } else {\n endLine = end.line;\n endColumn = end.column;\n }\n } else if (!column) {\n let pos = this.fromOffset(line);\n line = pos.line;\n column = pos.col;\n }\n let origin = this.origin(line, column, endLine, endColumn);\n if (origin) {\n result2 = new CssSyntaxError$1$1(\n message,\n origin.endLine === void 0 ? origin.line : { column: origin.column, line: origin.line },\n origin.endLine === void 0 ? origin.column : { column: origin.endColumn, line: origin.endLine },\n origin.source,\n origin.file,\n opts.plugin\n );\n } else {\n result2 = new CssSyntaxError$1$1(\n message,\n endLine === void 0 ? line : { column, line },\n endLine === void 0 ? column : { column: endColumn, line: endLine },\n this.css,\n this.file,\n opts.plugin\n );\n }\n result2.input = { column, endColumn, endLine, line, source: this.css };\n if (this.file) {\n if (pathToFileURL$1$1) {\n result2.input.url = pathToFileURL$1$1(this.file).toString();\n }\n result2.input.file = this.file;\n }\n return result2;\n }\n fromOffset(offset) {\n let lastLine, lineToIndex;\n if (!this[fromOffsetCache$1]) {\n let lines = this.css.split(\"\\n\");\n lineToIndex = new Array(lines.length);\n let prevIndex = 0;\n for (let i2 = 0, l2 = lines.length; i2 < l2; i2++) {\n lineToIndex[i2] = prevIndex;\n prevIndex += lines[i2].length + 1;\n }\n this[fromOffsetCache$1] = lineToIndex;\n } else {\n lineToIndex = this[fromOffsetCache$1];\n }\n lastLine = lineToIndex[lineToIndex.length - 1];\n let min = 0;\n if (offset >= lastLine) {\n min = lineToIndex.length - 1;\n } else {\n let max = lineToIndex.length - 2;\n let mid;\n while (min < max) {\n mid = min + (max - min >> 1);\n if (offset < lineToIndex[mid]) {\n max = mid - 1;\n } else if (offset >= lineToIndex[mid + 1]) {\n min = mid + 1;\n } else {\n min = mid;\n break;\n }\n }\n }\n return {\n col: offset - lineToIndex[min] + 1,\n line: min + 1\n };\n }\n mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file;\n }\n return resolve$1$1(this.map.consumer().sourceRoot || this.map.root || \".\", file);\n }\n origin(line, column, endLine, endColumn) {\n if (!this.map) return false;\n let consumer = this.map.consumer();\n let from = consumer.originalPositionFor({ column, line });\n if (!from.source) return false;\n let to;\n if (typeof endLine === \"number\") {\n to = consumer.originalPositionFor({ column: endColumn, line: endLine });\n }\n let fromUrl;\n if (isAbsolute$1(from.source)) {\n fromUrl = pathToFileURL$1$1(from.source);\n } else {\n fromUrl = new URL(\n from.source,\n this.map.consumer().sourceRoot || pathToFileURL$1$1(this.map.mapFile)\n );\n }\n let result2 = {\n column: from.column,\n endColumn: to && to.column,\n endLine: to && to.line,\n line: from.line,\n url: fromUrl.toString()\n };\n if (fromUrl.protocol === \"file:\") {\n if (fileURLToPath$1) {\n result2.file = fileURLToPath$1(fromUrl);\n } else {\n throw new Error(`file: protocol is not available in this PostCSS build`);\n }\n }\n let source = consumer.sourceContentFor(from.source);\n if (source) result2.source = source;\n return result2;\n }\n toJSON() {\n let json = {};\n for (let name of [\"hasBOM\", \"css\", \"file\", \"id\"]) {\n if (this[name] != null) {\n json[name] = this[name];\n }\n }\n if (this.map) {\n json.map = { ...this.map };\n if (json.map.consumerCache) {\n json.map.consumerCache = void 0;\n }\n }\n return json;\n }\n get from() {\n return this.file || this.id;\n }\n};\nvar input$1 = Input$4$1;\nInput$4$1.default = Input$4$1;\nif (terminalHighlight$2 && terminalHighlight$2.registerInput) {\n terminalHighlight$2.registerInput(Input$4$1);\n}\nlet { SourceMapConsumer: SourceMapConsumer$3, SourceMapGenerator: SourceMapGenerator$3 } = require$$2$1;\nlet { dirname: dirname$2, relative: relative$1, resolve: resolve$2, sep: sep$1 } = require$$2$1;\nlet { pathToFileURL: pathToFileURL$2 } = require$$2$1;\nlet Input$3$1 = input$1;\nlet sourceMapAvailable$2 = Boolean(SourceMapConsumer$3 && SourceMapGenerator$3);\nlet pathAvailable$2 = Boolean(dirname$2 && resolve$2 && relative$1 && sep$1);\nlet MapGenerator$2$1 = class MapGenerator {\n constructor(stringify2, root2, opts, cssString) {\n this.stringify = stringify2;\n this.mapOpts = opts.map || {};\n this.root = root2;\n this.opts = opts;\n this.css = cssString;\n this.originalCSS = cssString;\n this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute;\n this.memoizedFileURLs = /* @__PURE__ */ new Map();\n this.memoizedPaths = /* @__PURE__ */ new Map();\n this.memoizedURLs = /* @__PURE__ */ new Map();\n }\n addAnnotation() {\n let content;\n if (this.isInline()) {\n content = \"data:application/json;base64,\" + this.toBase64(this.map.toString());\n } else if (typeof this.mapOpts.annotation === \"string\") {\n content = this.mapOpts.annotation;\n } else if (typeof this.mapOpts.annotation === \"function\") {\n content = this.mapOpts.annotation(this.opts.to, this.root);\n } else {\n content = this.outputFile() + \".map\";\n }\n let eol = \"\\n\";\n if (this.css.includes(\"\\r\\n\")) eol = \"\\r\\n\";\n this.css += eol + \"/*# sourceMappingURL=\" + content + \" */\";\n }\n applyPrevMaps() {\n for (let prev of this.previous()) {\n let from = this.toUrl(this.path(prev.file));\n let root2 = prev.root || dirname$2(prev.file);\n let map;\n if (this.mapOpts.sourcesContent === false) {\n map = new SourceMapConsumer$3(prev.text);\n if (map.sourcesContent) {\n map.sourcesContent = null;\n }\n } else {\n map = prev.consumer();\n }\n this.map.applySourceMap(map, from, this.toUrl(this.path(root2)));\n }\n }\n clearAnnotation() {\n if (this.mapOpts.annotation === false) return;\n if (this.root) {\n let node2;\n for (let i2 = this.root.nodes.length - 1; i2 >= 0; i2--) {\n node2 = this.root.nodes[i2];\n if (node2.type !== \"comment\") continue;\n if (node2.text.indexOf(\"# sourceMappingURL=\") === 0) {\n this.root.removeChild(i2);\n }\n }\n } else if (this.css) {\n this.css = this.css.replace(/\\n*?\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\");\n }\n }\n generate() {\n this.clearAnnotation();\n if (pathAvailable$2 && sourceMapAvailable$2 && this.isMap()) {\n return this.generateMap();\n } else {\n let result2 = \"\";\n this.stringify(this.root, (i2) => {\n result2 += i2;\n });\n return [result2];\n }\n }\n generateMap() {\n if (this.root) {\n this.generateString();\n } else if (this.previous().length === 1) {\n let prev = this.previous()[0].consumer();\n prev.file = this.outputFile();\n this.map = SourceMapGenerator$3.fromSourceMap(prev, {\n ignoreInvalidMapping: true\n });\n } else {\n this.map = new SourceMapGenerator$3({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n this.map.addMapping({\n generated: { column: 0, line: 1 },\n original: { column: 0, line: 1 },\n source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\"\n });\n }\n if (this.isSourcesContent()) this.setSourcesContent();\n if (this.root && this.previous().length > 0) this.applyPrevMaps();\n if (this.isAnnotation()) this.addAnnotation();\n if (this.isInline()) {\n return [this.css];\n } else {\n return [this.css, this.map];\n }\n }\n generateString() {\n this.css = \"\";\n this.map = new SourceMapGenerator$3({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n let line = 1;\n let column = 1;\n let noSource = \"\";\n let mapping = {\n generated: { column: 0, line: 0 },\n original: { column: 0, line: 0 },\n source: \"\"\n };\n let lines, last;\n this.stringify(this.root, (str, node2, type) => {\n this.css += str;\n if (node2 && type !== \"end\") {\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n if (node2.source && node2.source.start) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.start.line;\n mapping.original.column = node2.source.start.column - 1;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n this.map.addMapping(mapping);\n }\n }\n lines = str.match(/\\n/g);\n if (lines) {\n line += lines.length;\n last = str.lastIndexOf(\"\\n\");\n column = str.length - last;\n } else {\n column += str.length;\n }\n if (node2 && type !== \"start\") {\n let p = node2.parent || { raws: {} };\n let childless = node2.type === \"decl\" || node2.type === \"atrule\" && !node2.nodes;\n if (!childless || node2 !== p.last || p.raws.semicolon) {\n if (node2.source && node2.source.end) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.end.line;\n mapping.original.column = node2.source.end.column - 1;\n mapping.generated.line = line;\n mapping.generated.column = column - 2;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n this.map.addMapping(mapping);\n }\n }\n }\n });\n }\n isAnnotation() {\n if (this.isInline()) {\n return true;\n }\n if (typeof this.mapOpts.annotation !== \"undefined\") {\n return this.mapOpts.annotation;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.annotation);\n }\n return true;\n }\n isInline() {\n if (typeof this.mapOpts.inline !== \"undefined\") {\n return this.mapOpts.inline;\n }\n let annotation = this.mapOpts.annotation;\n if (typeof annotation !== \"undefined\" && annotation !== true) {\n return false;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.inline);\n }\n return true;\n }\n isMap() {\n if (typeof this.opts.map !== \"undefined\") {\n return !!this.opts.map;\n }\n return this.previous().length > 0;\n }\n isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== \"undefined\") {\n return this.mapOpts.sourcesContent;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.withContent());\n }\n return true;\n }\n outputFile() {\n if (this.opts.to) {\n return this.path(this.opts.to);\n } else if (this.opts.from) {\n return this.path(this.opts.from);\n } else {\n return \"to.css\";\n }\n }\n path(file) {\n if (this.mapOpts.absolute) return file;\n if (file.charCodeAt(0) === 60) return file;\n if (/^\\w+:\\/\\//.test(file)) return file;\n let cached = this.memoizedPaths.get(file);\n if (cached) return cached;\n let from = this.opts.to ? dirname$2(this.opts.to) : \".\";\n if (typeof this.mapOpts.annotation === \"string\") {\n from = dirname$2(resolve$2(from, this.mapOpts.annotation));\n }\n let path = relative$1(from, file);\n this.memoizedPaths.set(file, path);\n return path;\n }\n previous() {\n if (!this.previousMaps) {\n this.previousMaps = [];\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source && node2.source.input.map) {\n let map = node2.source.input.map;\n if (!this.previousMaps.includes(map)) {\n this.previousMaps.push(map);\n }\n }\n });\n } else {\n let input2 = new Input$3$1(this.originalCSS, this.opts);\n if (input2.map) this.previousMaps.push(input2.map);\n }\n }\n return this.previousMaps;\n }\n setSourcesContent() {\n let already = {};\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source) {\n let from = node2.source.input.from;\n if (from && !already[from]) {\n already[from] = true;\n let fromUrl = this.usesFileUrls ? this.toFileUrl(from) : this.toUrl(this.path(from));\n this.map.setSourceContent(fromUrl, node2.source.input.css);\n }\n }\n });\n } else if (this.css) {\n let from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\";\n this.map.setSourceContent(from, this.css);\n }\n }\n sourcePath(node2) {\n if (this.mapOpts.from) {\n return this.toUrl(this.mapOpts.from);\n } else if (this.usesFileUrls) {\n return this.toFileUrl(node2.source.input.from);\n } else {\n return this.toUrl(this.path(node2.source.input.from));\n }\n }\n toBase64(str) {\n if (Buffer) {\n return Buffer.from(str).toString(\"base64\");\n } else {\n return window.btoa(unescape(encodeURIComponent(str)));\n }\n }\n toFileUrl(path) {\n let cached = this.memoizedFileURLs.get(path);\n if (cached) return cached;\n if (pathToFileURL$2) {\n let fileURL = pathToFileURL$2(path).toString();\n this.memoizedFileURLs.set(path, fileURL);\n return fileURL;\n } else {\n throw new Error(\n \"`map.absolute` option is not available in this PostCSS build\"\n );\n }\n }\n toUrl(path) {\n let cached = this.memoizedURLs.get(path);\n if (cached) return cached;\n if (sep$1 === \"\\\\\") {\n path = path.replace(/\\\\/g, \"/\");\n }\n let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent);\n this.memoizedURLs.set(path, url);\n return url;\n }\n};\nvar mapGenerator$1 = MapGenerator$2$1;\nlet Node$2$1 = node$1;\nlet Comment$4$1 = class Comment extends Node$2$1 {\n constructor(defaults) {\n super(defaults);\n this.type = \"comment\";\n }\n};\nvar comment$1 = Comment$4$1;\nComment$4$1.default = Comment$4$1;\nlet { isClean: isClean$1$1, my: my$1$1 } = symbols$1;\nlet Declaration$3$1 = declaration$1;\nlet Comment$3$1 = comment$1;\nlet Node$1$1 = node$1;\nlet parse$4$1, Rule$4$1, AtRule$4$1, Root$6$1;\nfunction cleanSource$1(nodes) {\n return nodes.map((i2) => {\n if (i2.nodes) i2.nodes = cleanSource$1(i2.nodes);\n delete i2.source;\n return i2;\n });\n}\nfunction markDirtyUp$1(node2) {\n node2[isClean$1$1] = false;\n if (node2.proxyOf.nodes) {\n for (let i2 of node2.proxyOf.nodes) {\n markDirtyUp$1(i2);\n }\n }\n}\nlet Container$7$1 = class Container extends Node$1$1 {\n append(...children) {\n for (let child of children) {\n let nodes = this.normalize(child, this.last);\n for (let node2 of nodes) this.proxyOf.nodes.push(node2);\n }\n this.markDirty();\n return this;\n }\n cleanRaws(keepBetween) {\n super.cleanRaws(keepBetween);\n if (this.nodes) {\n for (let node2 of this.nodes) node2.cleanRaws(keepBetween);\n }\n }\n each(callback) {\n if (!this.proxyOf.nodes) return void 0;\n let iterator = this.getIterator();\n let index2, result2;\n while (this.indexes[iterator] < this.proxyOf.nodes.length) {\n index2 = this.indexes[iterator];\n result2 = callback(this.proxyOf.nodes[index2], index2);\n if (result2 === false) break;\n this.indexes[iterator] += 1;\n }\n delete this.indexes[iterator];\n return result2;\n }\n every(condition) {\n return this.nodes.every(condition);\n }\n getIterator() {\n if (!this.lastEach) this.lastEach = 0;\n if (!this.indexes) this.indexes = {};\n this.lastEach += 1;\n let iterator = this.lastEach;\n this.indexes[iterator] = 0;\n return iterator;\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (!node2[prop]) {\n return node2[prop];\n } else if (prop === \"each\" || typeof prop === \"string\" && prop.startsWith(\"walk\")) {\n return (...args) => {\n return node2[prop](\n ...args.map((i2) => {\n if (typeof i2 === \"function\") {\n return (child, index2) => i2(child.toProxy(), index2);\n } else {\n return i2;\n }\n })\n );\n };\n } else if (prop === \"every\" || prop === \"some\") {\n return (cb) => {\n return node2[prop](\n (child, ...other) => cb(child.toProxy(), ...other)\n );\n };\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else if (prop === \"nodes\") {\n return node2.nodes.map((i2) => i2.toProxy());\n } else if (prop === \"first\" || prop === \"last\") {\n return node2[prop].toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"name\" || prop === \"params\" || prop === \"selector\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n index(child) {\n if (typeof child === \"number\") return child;\n if (child.proxyOf) child = child.proxyOf;\n return this.proxyOf.nodes.indexOf(child);\n }\n insertAfter(exist, add) {\n let existIndex = this.index(exist);\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex < index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n insertBefore(exist, add) {\n let existIndex = this.index(exist);\n let type = existIndex === 0 ? \"prepend\" : false;\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex <= index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n normalize(nodes, sample) {\n if (typeof nodes === \"string\") {\n nodes = cleanSource$1(parse$4$1(nodes).nodes);\n } else if (typeof nodes === \"undefined\") {\n nodes = [];\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type === \"root\" && this.type !== \"document\") {\n nodes = nodes.nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type) {\n nodes = [nodes];\n } else if (nodes.prop) {\n if (typeof nodes.value === \"undefined\") {\n throw new Error(\"Value field is missed in node creation\");\n } else if (typeof nodes.value !== \"string\") {\n nodes.value = String(nodes.value);\n }\n nodes = [new Declaration$3$1(nodes)];\n } else if (nodes.selector) {\n nodes = [new Rule$4$1(nodes)];\n } else if (nodes.name) {\n nodes = [new AtRule$4$1(nodes)];\n } else if (nodes.text) {\n nodes = [new Comment$3$1(nodes)];\n } else {\n throw new Error(\"Unknown node type in node creation\");\n }\n let processed = nodes.map((i2) => {\n if (!i2[my$1$1]) Container.rebuild(i2);\n i2 = i2.proxyOf;\n if (i2.parent) i2.parent.removeChild(i2);\n if (i2[isClean$1$1]) markDirtyUp$1(i2);\n if (typeof i2.raws.before === \"undefined\") {\n if (sample && typeof sample.raws.before !== \"undefined\") {\n i2.raws.before = sample.raws.before.replace(/\\S/g, \"\");\n }\n }\n i2.parent = this.proxyOf;\n return i2;\n });\n return processed;\n }\n prepend(...children) {\n children = children.reverse();\n for (let child of children) {\n let nodes = this.normalize(child, this.first, \"prepend\").reverse();\n for (let node2 of nodes) this.proxyOf.nodes.unshift(node2);\n for (let id in this.indexes) {\n this.indexes[id] = this.indexes[id] + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n push(child) {\n child.parent = this;\n this.proxyOf.nodes.push(child);\n return this;\n }\n removeAll() {\n for (let node2 of this.proxyOf.nodes) node2.parent = void 0;\n this.proxyOf.nodes = [];\n this.markDirty();\n return this;\n }\n removeChild(child) {\n child = this.index(child);\n this.proxyOf.nodes[child].parent = void 0;\n this.proxyOf.nodes.splice(child, 1);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (index2 >= child) {\n this.indexes[id] = index2 - 1;\n }\n }\n this.markDirty();\n return this;\n }\n replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {};\n }\n this.walkDecls((decl) => {\n if (opts.props && !opts.props.includes(decl.prop)) return;\n if (opts.fast && !decl.value.includes(opts.fast)) return;\n decl.value = decl.value.replace(pattern, callback);\n });\n this.markDirty();\n return this;\n }\n some(condition) {\n return this.nodes.some(condition);\n }\n walk(callback) {\n return this.each((child, i2) => {\n let result2;\n try {\n result2 = callback(child, i2);\n } catch (e2) {\n throw child.addToError(e2);\n }\n if (result2 !== false && child.walk) {\n result2 = child.walk(callback);\n }\n return result2;\n });\n }\n walkAtRules(name, callback) {\n if (!callback) {\n callback = name;\n return this.walk((child, i2) => {\n if (child.type === \"atrule\") {\n return callback(child, i2);\n }\n });\n }\n if (name instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && name.test(child.name)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && child.name === name) {\n return callback(child, i2);\n }\n });\n }\n walkComments(callback) {\n return this.walk((child, i2) => {\n if (child.type === \"comment\") {\n return callback(child, i2);\n }\n });\n }\n walkDecls(prop, callback) {\n if (!callback) {\n callback = prop;\n return this.walk((child, i2) => {\n if (child.type === \"decl\") {\n return callback(child, i2);\n }\n });\n }\n if (prop instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && prop.test(child.prop)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && child.prop === prop) {\n return callback(child, i2);\n }\n });\n }\n walkRules(selector, callback) {\n if (!callback) {\n callback = selector;\n return this.walk((child, i2) => {\n if (child.type === \"rule\") {\n return callback(child, i2);\n }\n });\n }\n if (selector instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && selector.test(child.selector)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && child.selector === selector) {\n return callback(child, i2);\n }\n });\n }\n get first() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[0];\n }\n get last() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n }\n};\nContainer$7$1.registerParse = (dependant) => {\n parse$4$1 = dependant;\n};\nContainer$7$1.registerRule = (dependant) => {\n Rule$4$1 = dependant;\n};\nContainer$7$1.registerAtRule = (dependant) => {\n AtRule$4$1 = dependant;\n};\nContainer$7$1.registerRoot = (dependant) => {\n Root$6$1 = dependant;\n};\nvar container$1 = Container$7$1;\nContainer$7$1.default = Container$7$1;\nContainer$7$1.rebuild = (node2) => {\n if (node2.type === \"atrule\") {\n Object.setPrototypeOf(node2, AtRule$4$1.prototype);\n } else if (node2.type === \"rule\") {\n Object.setPrototypeOf(node2, Rule$4$1.prototype);\n } else if (node2.type === \"decl\") {\n Object.setPrototypeOf(node2, Declaration$3$1.prototype);\n } else if (node2.type === \"comment\") {\n Object.setPrototypeOf(node2, Comment$3$1.prototype);\n } else if (node2.type === \"root\") {\n Object.setPrototypeOf(node2, Root$6$1.prototype);\n }\n node2[my$1$1] = true;\n if (node2.nodes) {\n node2.nodes.forEach((child) => {\n Container$7$1.rebuild(child);\n });\n }\n};\nlet Container$6$1 = container$1;\nlet LazyResult$4$1, Processor$3$1;\nlet Document$3$1 = class Document2 extends Container$6$1 {\n constructor(defaults) {\n super({ type: \"document\", ...defaults });\n if (!this.nodes) {\n this.nodes = [];\n }\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$4$1(new Processor$3$1(), this, opts);\n return lazy.stringify();\n }\n};\nDocument$3$1.registerLazyResult = (dependant) => {\n LazyResult$4$1 = dependant;\n};\nDocument$3$1.registerProcessor = (dependant) => {\n Processor$3$1 = dependant;\n};\nvar document$1$1 = Document$3$1;\nDocument$3$1.default = Document$3$1;\nlet printed$1 = {};\nvar warnOnce$2$1 = function warnOnce(message) {\n if (printed$1[message]) return;\n printed$1[message] = true;\n if (typeof console !== \"undefined\" && console.warn) {\n console.warn(message);\n }\n};\nlet Warning$2$1 = class Warning {\n constructor(text, opts = {}) {\n this.type = \"warning\";\n this.text = text;\n if (opts.node && opts.node.source) {\n let range = opts.node.rangeBy(opts);\n this.line = range.start.line;\n this.column = range.start.column;\n this.endLine = range.end.line;\n this.endColumn = range.end.column;\n }\n for (let opt in opts) this[opt] = opts[opt];\n }\n toString() {\n if (this.node) {\n return this.node.error(this.text, {\n index: this.index,\n plugin: this.plugin,\n word: this.word\n }).message;\n }\n if (this.plugin) {\n return this.plugin + \": \" + this.text;\n }\n return this.text;\n }\n};\nvar warning$1 = Warning$2$1;\nWarning$2$1.default = Warning$2$1;\nlet Warning$1$1 = warning$1;\nlet Result$3$1 = class Result {\n constructor(processor2, root2, opts) {\n this.processor = processor2;\n this.messages = [];\n this.root = root2;\n this.opts = opts;\n this.css = void 0;\n this.map = void 0;\n }\n toString() {\n return this.css;\n }\n warn(text, opts = {}) {\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin;\n }\n }\n let warning2 = new Warning$1$1(text, opts);\n this.messages.push(warning2);\n return warning2;\n }\n warnings() {\n return this.messages.filter((i2) => i2.type === \"warning\");\n }\n get content() {\n return this.css;\n }\n};\nvar result$1 = Result$3$1;\nResult$3$1.default = Result$3$1;\nconst SINGLE_QUOTE$1 = \"'\".charCodeAt(0);\nconst DOUBLE_QUOTE$1 = '\"'.charCodeAt(0);\nconst BACKSLASH$1 = \"\\\\\".charCodeAt(0);\nconst SLASH$1 = \"/\".charCodeAt(0);\nconst NEWLINE$1 = \"\\n\".charCodeAt(0);\nconst SPACE$1 = \" \".charCodeAt(0);\nconst FEED$1 = \"\\f\".charCodeAt(0);\nconst TAB$1 = \"\t\".charCodeAt(0);\nconst CR$1 = \"\\r\".charCodeAt(0);\nconst OPEN_SQUARE$1 = \"[\".charCodeAt(0);\nconst CLOSE_SQUARE$1 = \"]\".charCodeAt(0);\nconst OPEN_PARENTHESES$1 = \"(\".charCodeAt(0);\nconst CLOSE_PARENTHESES$1 = \")\".charCodeAt(0);\nconst OPEN_CURLY$1 = \"{\".charCodeAt(0);\nconst CLOSE_CURLY$1 = \"}\".charCodeAt(0);\nconst SEMICOLON$1 = \";\".charCodeAt(0);\nconst ASTERISK$1 = \"*\".charCodeAt(0);\nconst COLON$1 = \":\".charCodeAt(0);\nconst AT$1 = \"@\".charCodeAt(0);\nconst RE_AT_END$1 = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g;\nconst RE_WORD_END$1 = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g;\nconst RE_BAD_BRACKET$1 = /.[\\r\\n\"'(/\\\\]/;\nconst RE_HEX_ESCAPE$1 = /[\\da-f]/i;\nvar tokenize$1 = function tokenizer(input2, options = {}) {\n let css = input2.css.valueOf();\n let ignore = options.ignoreErrors;\n let code, next, quote, content, escape;\n let escaped, escapePos, prev, n2, currentToken;\n let length = css.length;\n let pos = 0;\n let buffer = [];\n let returned = [];\n function position() {\n return pos;\n }\n function unclosed(what) {\n throw input2.error(\"Unclosed \" + what, pos);\n }\n function endOfFile() {\n return returned.length === 0 && pos >= length;\n }\n function nextToken(opts) {\n if (returned.length) return returned.pop();\n if (pos >= length) return;\n let ignoreUnclosed = opts ? opts.ignoreUnclosed : false;\n code = css.charCodeAt(pos);\n switch (code) {\n case NEWLINE$1:\n case SPACE$1:\n case TAB$1:\n case CR$1:\n case FEED$1: {\n next = pos;\n do {\n next += 1;\n code = css.charCodeAt(next);\n } while (code === SPACE$1 || code === NEWLINE$1 || code === TAB$1 || code === CR$1 || code === FEED$1);\n currentToken = [\"space\", css.slice(pos, next)];\n pos = next - 1;\n break;\n }\n case OPEN_SQUARE$1:\n case CLOSE_SQUARE$1:\n case OPEN_CURLY$1:\n case CLOSE_CURLY$1:\n case COLON$1:\n case SEMICOLON$1:\n case CLOSE_PARENTHESES$1: {\n let controlChar = String.fromCharCode(code);\n currentToken = [controlChar, controlChar, pos];\n break;\n }\n case OPEN_PARENTHESES$1: {\n prev = buffer.length ? buffer.pop()[1] : \"\";\n n2 = css.charCodeAt(pos + 1);\n if (prev === \"url\" && n2 !== SINGLE_QUOTE$1 && n2 !== DOUBLE_QUOTE$1 && n2 !== SPACE$1 && n2 !== NEWLINE$1 && n2 !== TAB$1 && n2 !== FEED$1 && n2 !== CR$1) {\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(\")\", next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos;\n break;\n } else {\n unclosed(\"bracket\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH$1) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"brackets\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n next = css.indexOf(\")\", pos + 1);\n content = css.slice(pos, next + 1);\n if (next === -1 || RE_BAD_BRACKET$1.test(content)) {\n currentToken = [\"(\", \"(\", pos];\n } else {\n currentToken = [\"brackets\", content, pos, next];\n pos = next;\n }\n }\n break;\n }\n case SINGLE_QUOTE$1:\n case DOUBLE_QUOTE$1: {\n quote = code === SINGLE_QUOTE$1 ? \"'\" : '\"';\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(quote, next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos + 1;\n break;\n } else {\n unclosed(\"string\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH$1) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"string\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case AT$1: {\n RE_AT_END$1.lastIndex = pos + 1;\n RE_AT_END$1.test(css);\n if (RE_AT_END$1.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_AT_END$1.lastIndex - 2;\n }\n currentToken = [\"at-word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case BACKSLASH$1: {\n next = pos;\n escape = true;\n while (css.charCodeAt(next + 1) === BACKSLASH$1) {\n next += 1;\n escape = !escape;\n }\n code = css.charCodeAt(next + 1);\n if (escape && code !== SLASH$1 && code !== SPACE$1 && code !== NEWLINE$1 && code !== TAB$1 && code !== CR$1 && code !== FEED$1) {\n next += 1;\n if (RE_HEX_ESCAPE$1.test(css.charAt(next))) {\n while (RE_HEX_ESCAPE$1.test(css.charAt(next + 1))) {\n next += 1;\n }\n if (css.charCodeAt(next + 1) === SPACE$1) {\n next += 1;\n }\n }\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n default: {\n if (code === SLASH$1 && css.charCodeAt(pos + 1) === ASTERISK$1) {\n next = css.indexOf(\"*/\", pos + 2) + 1;\n if (next === 0) {\n if (ignore || ignoreUnclosed) {\n next = css.length;\n } else {\n unclosed(\"comment\");\n }\n }\n currentToken = [\"comment\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n RE_WORD_END$1.lastIndex = pos + 1;\n RE_WORD_END$1.test(css);\n if (RE_WORD_END$1.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_WORD_END$1.lastIndex - 2;\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n buffer.push(currentToken);\n pos = next;\n }\n break;\n }\n }\n pos++;\n return currentToken;\n }\n function back(token) {\n returned.push(token);\n }\n return {\n back,\n endOfFile,\n nextToken,\n position\n };\n};\nlet Container$5$1 = container$1;\nlet AtRule$3$1 = class AtRule extends Container$5$1 {\n constructor(defaults) {\n super(defaults);\n this.type = \"atrule\";\n }\n append(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.append(...children);\n }\n prepend(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.prepend(...children);\n }\n};\nvar atRule$1 = AtRule$3$1;\nAtRule$3$1.default = AtRule$3$1;\nContainer$5$1.registerAtRule(AtRule$3$1);\nlet Container$4$1 = container$1;\nlet LazyResult$3$1, Processor$2$1;\nlet Root$5$1 = class Root extends Container$4$1 {\n constructor(defaults) {\n super(defaults);\n this.type = \"root\";\n if (!this.nodes) this.nodes = [];\n }\n normalize(child, sample, type) {\n let nodes = super.normalize(child);\n if (sample) {\n if (type === \"prepend\") {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before;\n } else {\n delete sample.raws.before;\n }\n } else if (this.first !== sample) {\n for (let node2 of nodes) {\n node2.raws.before = sample.raws.before;\n }\n }\n }\n return nodes;\n }\n removeChild(child, ignore) {\n let index2 = this.index(child);\n if (!ignore && index2 === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index2].raws.before;\n }\n return super.removeChild(child);\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$3$1(new Processor$2$1(), this, opts);\n return lazy.stringify();\n }\n};\nRoot$5$1.registerLazyResult = (dependant) => {\n LazyResult$3$1 = dependant;\n};\nRoot$5$1.registerProcessor = (dependant) => {\n Processor$2$1 = dependant;\n};\nvar root$1 = Root$5$1;\nRoot$5$1.default = Root$5$1;\nContainer$4$1.registerRoot(Root$5$1);\nlet list$2$1 = {\n comma(string) {\n return list$2$1.split(string, [\",\"], true);\n },\n space(string) {\n let spaces = [\" \", \"\\n\", \"\t\"];\n return list$2$1.split(string, spaces);\n },\n split(string, separators, last) {\n let array = [];\n let current = \"\";\n let split = false;\n let func = 0;\n let inQuote = false;\n let prevQuote = \"\";\n let escape = false;\n for (let letter of string) {\n if (escape) {\n escape = false;\n } else if (letter === \"\\\\\") {\n escape = true;\n } else if (inQuote) {\n if (letter === prevQuote) {\n inQuote = false;\n }\n } else if (letter === '\"' || letter === \"'\") {\n inQuote = true;\n prevQuote = letter;\n } else if (letter === \"(\") {\n func += 1;\n } else if (letter === \")\") {\n if (func > 0) func -= 1;\n } else if (func === 0) {\n if (separators.includes(letter)) split = true;\n }\n if (split) {\n if (current !== \"\") array.push(current.trim());\n current = \"\";\n split = false;\n } else {\n current += letter;\n }\n }\n if (last || current !== \"\") array.push(current.trim());\n return array;\n }\n};\nvar list_1$1 = list$2$1;\nlist$2$1.default = list$2$1;\nlet Container$3$1 = container$1;\nlet list$1$1 = list_1$1;\nlet Rule$3$1 = class Rule extends Container$3$1 {\n constructor(defaults) {\n super(defaults);\n this.type = \"rule\";\n if (!this.nodes) this.nodes = [];\n }\n get selectors() {\n return list$1$1.comma(this.selector);\n }\n set selectors(values) {\n let match = this.selector ? this.selector.match(/,\\s*/) : null;\n let sep2 = match ? match[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n this.selector = values.join(sep2);\n }\n};\nvar rule$1 = Rule$3$1;\nRule$3$1.default = Rule$3$1;\nContainer$3$1.registerRule(Rule$3$1);\nlet Declaration$2$1 = declaration$1;\nlet tokenizer2$1 = tokenize$1;\nlet Comment$2$1 = comment$1;\nlet AtRule$2$1 = atRule$1;\nlet Root$4$1 = root$1;\nlet Rule$2$1 = rule$1;\nconst SAFE_COMMENT_NEIGHBOR$1 = {\n empty: true,\n space: true\n};\nfunction findLastWithPosition$1(tokens) {\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n let token = tokens[i2];\n let pos = token[3] || token[2];\n if (pos) return pos;\n }\n}\nlet Parser$1$1 = class Parser {\n constructor(input2) {\n this.input = input2;\n this.root = new Root$4$1();\n this.current = this.root;\n this.spaces = \"\";\n this.semicolon = false;\n this.createTokenizer();\n this.root.source = { input: input2, start: { column: 1, line: 1, offset: 0 } };\n }\n atrule(token) {\n let node2 = new AtRule$2$1();\n node2.name = token[1].slice(1);\n if (node2.name === \"\") {\n this.unnamedAtrule(node2, token);\n }\n this.init(node2, token[2]);\n let type;\n let prev;\n let shift;\n let last = false;\n let open = false;\n let params = [];\n let brackets = [];\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n type = token[0];\n if (type === \"(\" || type === \"[\") {\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (type === \"{\" && brackets.length > 0) {\n brackets.push(\"}\");\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n }\n if (brackets.length === 0) {\n if (type === \";\") {\n node2.source.end = this.getPosition(token[2]);\n node2.source.end.offset++;\n this.semicolon = true;\n break;\n } else if (type === \"{\") {\n open = true;\n break;\n } else if (type === \"}\") {\n if (params.length > 0) {\n shift = params.length - 1;\n prev = params[shift];\n while (prev && prev[0] === \"space\") {\n prev = params[--shift];\n }\n if (prev) {\n node2.source.end = this.getPosition(prev[3] || prev[2]);\n node2.source.end.offset++;\n }\n }\n this.end(token);\n break;\n } else {\n params.push(token);\n }\n } else {\n params.push(token);\n }\n if (this.tokenizer.endOfFile()) {\n last = true;\n break;\n }\n }\n node2.raws.between = this.spacesAndCommentsFromEnd(params);\n if (params.length) {\n node2.raws.afterName = this.spacesAndCommentsFromStart(params);\n this.raw(node2, \"params\", params);\n if (last) {\n token = params[params.length - 1];\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n this.spaces = node2.raws.between;\n node2.raws.between = \"\";\n }\n } else {\n node2.raws.afterName = \"\";\n node2.params = \"\";\n }\n if (open) {\n node2.nodes = [];\n this.current = node2;\n }\n }\n checkMissedSemicolon(tokens) {\n let colon = this.colon(tokens);\n if (colon === false) return;\n let founded = 0;\n let token;\n for (let j = colon - 1; j >= 0; j--) {\n token = tokens[j];\n if (token[0] !== \"space\") {\n founded += 1;\n if (founded === 2) break;\n }\n }\n throw this.input.error(\n \"Missed semicolon\",\n token[0] === \"word\" ? token[3] + 1 : token[2]\n );\n }\n colon(tokens) {\n let brackets = 0;\n let token, type, prev;\n for (let [i2, element] of tokens.entries()) {\n token = element;\n type = token[0];\n if (type === \"(\") {\n brackets += 1;\n }\n if (type === \")\") {\n brackets -= 1;\n }\n if (brackets === 0 && type === \":\") {\n if (!prev) {\n this.doubleColon(token);\n } else if (prev[0] === \"word\" && prev[1] === \"progid\") {\n continue;\n } else {\n return i2;\n }\n }\n prev = token;\n }\n return false;\n }\n comment(token) {\n let node2 = new Comment$2$1();\n this.init(node2, token[2]);\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n let text = token[1].slice(2, -2);\n if (/^\\s*$/.test(text)) {\n node2.text = \"\";\n node2.raws.left = text;\n node2.raws.right = \"\";\n } else {\n let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n node2.text = match[2];\n node2.raws.left = match[1];\n node2.raws.right = match[3];\n }\n }\n createTokenizer() {\n this.tokenizer = tokenizer2$1(this.input);\n }\n decl(tokens, customProperty) {\n let node2 = new Declaration$2$1();\n this.init(node2, tokens[0][2]);\n let last = tokens[tokens.length - 1];\n if (last[0] === \";\") {\n this.semicolon = true;\n tokens.pop();\n }\n node2.source.end = this.getPosition(\n last[3] || last[2] || findLastWithPosition$1(tokens)\n );\n node2.source.end.offset++;\n while (tokens[0][0] !== \"word\") {\n if (tokens.length === 1) this.unknownWord(tokens);\n node2.raws.before += tokens.shift()[1];\n }\n node2.source.start = this.getPosition(tokens[0][2]);\n node2.prop = \"\";\n while (tokens.length) {\n let type = tokens[0][0];\n if (type === \":\" || type === \"space\" || type === \"comment\") {\n break;\n }\n node2.prop += tokens.shift()[1];\n }\n node2.raws.between = \"\";\n let token;\n while (tokens.length) {\n token = tokens.shift();\n if (token[0] === \":\") {\n node2.raws.between += token[1];\n break;\n } else {\n if (token[0] === \"word\" && /\\w/.test(token[1])) {\n this.unknownWord([token]);\n }\n node2.raws.between += token[1];\n }\n }\n if (node2.prop[0] === \"_\" || node2.prop[0] === \"*\") {\n node2.raws.before += node2.prop[0];\n node2.prop = node2.prop.slice(1);\n }\n let firstSpaces = [];\n let next;\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n firstSpaces.push(tokens.shift());\n }\n this.precheckMissedSemicolon(tokens);\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n token = tokens[i2];\n if (token[1].toLowerCase() === \"!important\") {\n node2.important = true;\n let string = this.stringFrom(tokens, i2);\n string = this.spacesFromEnd(tokens) + string;\n if (string !== \" !important\") node2.raws.important = string;\n break;\n } else if (token[1].toLowerCase() === \"important\") {\n let cache = tokens.slice(0);\n let str = \"\";\n for (let j = i2; j > 0; j--) {\n let type = cache[j][0];\n if (str.trim().indexOf(\"!\") === 0 && type !== \"space\") {\n break;\n }\n str = cache.pop()[1] + str;\n }\n if (str.trim().indexOf(\"!\") === 0) {\n node2.important = true;\n node2.raws.important = str;\n tokens = cache;\n }\n }\n if (token[0] !== \"space\" && token[0] !== \"comment\") {\n break;\n }\n }\n let hasWord = tokens.some((i2) => i2[0] !== \"space\" && i2[0] !== \"comment\");\n if (hasWord) {\n node2.raws.between += firstSpaces.map((i2) => i2[1]).join(\"\");\n firstSpaces = [];\n }\n this.raw(node2, \"value\", firstSpaces.concat(tokens), customProperty);\n if (node2.value.includes(\":\") && !customProperty) {\n this.checkMissedSemicolon(tokens);\n }\n }\n doubleColon(token) {\n throw this.input.error(\n \"Double colon\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n emptyRule(token) {\n let node2 = new Rule$2$1();\n this.init(node2, token[2]);\n node2.selector = \"\";\n node2.raws.between = \"\";\n this.current = node2;\n }\n end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.semicolon = false;\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.spaces = \"\";\n if (this.current.parent) {\n this.current.source.end = this.getPosition(token[2]);\n this.current.source.end.offset++;\n this.current = this.current.parent;\n } else {\n this.unexpectedClose(token);\n }\n }\n endFile() {\n if (this.current.parent) this.unclosedBlock();\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.root.source.end = this.getPosition(this.tokenizer.position());\n }\n freeSemicolon(token) {\n this.spaces += token[1];\n if (this.current.nodes) {\n let prev = this.current.nodes[this.current.nodes.length - 1];\n if (prev && prev.type === \"rule\" && !prev.raws.ownSemicolon) {\n prev.raws.ownSemicolon = this.spaces;\n this.spaces = \"\";\n }\n }\n }\n // Helpers\n getPosition(offset) {\n let pos = this.input.fromOffset(offset);\n return {\n column: pos.col,\n line: pos.line,\n offset\n };\n }\n init(node2, offset) {\n this.current.push(node2);\n node2.source = {\n input: this.input,\n start: this.getPosition(offset)\n };\n node2.raws.before = this.spaces;\n this.spaces = \"\";\n if (node2.type !== \"comment\") this.semicolon = false;\n }\n other(start) {\n let end = false;\n let type = null;\n let colon = false;\n let bracket = null;\n let brackets = [];\n let customProperty = start[1].startsWith(\"--\");\n let tokens = [];\n let token = start;\n while (token) {\n type = token[0];\n tokens.push(token);\n if (type === \"(\" || type === \"[\") {\n if (!bracket) bracket = token;\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (customProperty && colon && type === \"{\") {\n if (!bracket) bracket = token;\n brackets.push(\"}\");\n } else if (brackets.length === 0) {\n if (type === \";\") {\n if (colon) {\n this.decl(tokens, customProperty);\n return;\n } else {\n break;\n }\n } else if (type === \"{\") {\n this.rule(tokens);\n return;\n } else if (type === \"}\") {\n this.tokenizer.back(tokens.pop());\n end = true;\n break;\n } else if (type === \":\") {\n colon = true;\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n if (brackets.length === 0) bracket = null;\n }\n token = this.tokenizer.nextToken();\n }\n if (this.tokenizer.endOfFile()) end = true;\n if (brackets.length > 0) this.unclosedBracket(bracket);\n if (end && colon) {\n if (!customProperty) {\n while (tokens.length) {\n token = tokens[tokens.length - 1][0];\n if (token !== \"space\" && token !== \"comment\") break;\n this.tokenizer.back(tokens.pop());\n }\n }\n this.decl(tokens, customProperty);\n } else {\n this.unknownWord(tokens);\n }\n }\n parse() {\n let token;\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n switch (token[0]) {\n case \"space\":\n this.spaces += token[1];\n break;\n case \";\":\n this.freeSemicolon(token);\n break;\n case \"}\":\n this.end(token);\n break;\n case \"comment\":\n this.comment(token);\n break;\n case \"at-word\":\n this.atrule(token);\n break;\n case \"{\":\n this.emptyRule(token);\n break;\n default:\n this.other(token);\n break;\n }\n }\n this.endFile();\n }\n precheckMissedSemicolon() {\n }\n raw(node2, prop, tokens, customProperty) {\n let token, type;\n let length = tokens.length;\n let value = \"\";\n let clean = true;\n let next, prev;\n for (let i2 = 0; i2 < length; i2 += 1) {\n token = tokens[i2];\n type = token[0];\n if (type === \"space\" && i2 === length - 1 && !customProperty) {\n clean = false;\n } else if (type === \"comment\") {\n prev = tokens[i2 - 1] ? tokens[i2 - 1][0] : \"empty\";\n next = tokens[i2 + 1] ? tokens[i2 + 1][0] : \"empty\";\n if (!SAFE_COMMENT_NEIGHBOR$1[prev] && !SAFE_COMMENT_NEIGHBOR$1[next]) {\n if (value.slice(-1) === \",\") {\n clean = false;\n } else {\n value += token[1];\n }\n } else {\n clean = false;\n }\n } else {\n value += token[1];\n }\n }\n if (!clean) {\n let raw = tokens.reduce((all, i2) => all + i2[1], \"\");\n node2.raws[prop] = { raw, value };\n }\n node2[prop] = value;\n }\n rule(tokens) {\n tokens.pop();\n let node2 = new Rule$2$1();\n this.init(node2, tokens[0][2]);\n node2.raws.between = this.spacesAndCommentsFromEnd(tokens);\n this.raw(node2, \"selector\", tokens);\n this.current = node2;\n }\n spacesAndCommentsFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\" && lastTokenType !== \"comment\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n // Errors\n spacesAndCommentsFromStart(tokens) {\n let next;\n let spaces = \"\";\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n spaces += tokens.shift()[1];\n }\n return spaces;\n }\n spacesFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n stringFrom(tokens, from) {\n let result2 = \"\";\n for (let i2 = from; i2 < tokens.length; i2++) {\n result2 += tokens[i2][1];\n }\n tokens.splice(from, tokens.length - from);\n return result2;\n }\n unclosedBlock() {\n let pos = this.current.source.start;\n throw this.input.error(\"Unclosed block\", pos.line, pos.column);\n }\n unclosedBracket(bracket) {\n throw this.input.error(\n \"Unclosed bracket\",\n { offset: bracket[2] },\n { offset: bracket[2] + 1 }\n );\n }\n unexpectedClose(token) {\n throw this.input.error(\n \"Unexpected }\",\n { offset: token[2] },\n { offset: token[2] + 1 }\n );\n }\n unknownWord(tokens) {\n throw this.input.error(\n \"Unknown word\",\n { offset: tokens[0][2] },\n { offset: tokens[0][2] + tokens[0][1].length }\n );\n }\n unnamedAtrule(node2, token) {\n throw this.input.error(\n \"At-rule without name\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n};\nvar parser$1 = Parser$1$1;\nlet Container$2$1 = container$1;\nlet Parser2$1 = parser$1;\nlet Input$2$1 = input$1;\nfunction parse$3$1(css, opts) {\n let input2 = new Input$2$1(css, opts);\n let parser2 = new Parser2$1(input2);\n try {\n parser2.parse();\n } catch (e2) {\n if (process.env.NODE_ENV !== \"production\") {\n if (e2.name === \"CssSyntaxError\" && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser\";\n } else if (/\\.sass/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser\";\n } else if (/\\.less$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser\";\n }\n }\n }\n throw e2;\n }\n return parser2.root;\n}\nvar parse_1$1 = parse$3$1;\nparse$3$1.default = parse$3$1;\nContainer$2$1.registerParse(parse$3$1);\nlet { isClean: isClean$3, my: my$3 } = symbols$1;\nlet MapGenerator$1$1 = mapGenerator$1;\nlet stringify$2$1 = stringify_1$1;\nlet Container$1$1 = container$1;\nlet Document$2$1 = document$1$1;\nlet warnOnce$1$1 = warnOnce$2$1;\nlet Result$2$1 = result$1;\nlet parse$2$1 = parse_1$1;\nlet Root$3$1 = root$1;\nconst TYPE_TO_CLASS_NAME$1 = {\n atrule: \"AtRule\",\n comment: \"Comment\",\n decl: \"Declaration\",\n document: \"Document\",\n root: \"Root\",\n rule: \"Rule\"\n};\nconst PLUGIN_PROPS$1 = {\n AtRule: true,\n AtRuleExit: true,\n Comment: true,\n CommentExit: true,\n Declaration: true,\n DeclarationExit: true,\n Document: true,\n DocumentExit: true,\n Once: true,\n OnceExit: true,\n postcssPlugin: true,\n prepare: true,\n Root: true,\n RootExit: true,\n Rule: true,\n RuleExit: true\n};\nconst NOT_VISITORS$1 = {\n Once: true,\n postcssPlugin: true,\n prepare: true\n};\nconst CHILDREN$1 = 0;\nfunction isPromise$1(obj) {\n return typeof obj === \"object\" && typeof obj.then === \"function\";\n}\nfunction getEvents$1(node2) {\n let key = false;\n let type = TYPE_TO_CLASS_NAME$1[node2.type];\n if (node2.type === \"decl\") {\n key = node2.prop.toLowerCase();\n } else if (node2.type === \"atrule\") {\n key = node2.name.toLowerCase();\n }\n if (key && node2.append) {\n return [\n type,\n type + \"-\" + key,\n CHILDREN$1,\n type + \"Exit\",\n type + \"Exit-\" + key\n ];\n } else if (key) {\n return [type, type + \"-\" + key, type + \"Exit\", type + \"Exit-\" + key];\n } else if (node2.append) {\n return [type, CHILDREN$1, type + \"Exit\"];\n } else {\n return [type, type + \"Exit\"];\n }\n}\nfunction toStack$1(node2) {\n let events;\n if (node2.type === \"document\") {\n events = [\"Document\", CHILDREN$1, \"DocumentExit\"];\n } else if (node2.type === \"root\") {\n events = [\"Root\", CHILDREN$1, \"RootExit\"];\n } else {\n events = getEvents$1(node2);\n }\n return {\n eventIndex: 0,\n events,\n iterator: 0,\n node: node2,\n visitorIndex: 0,\n visitors: []\n };\n}\nfunction cleanMarks$1(node2) {\n node2[isClean$3] = false;\n if (node2.nodes) node2.nodes.forEach((i2) => cleanMarks$1(i2));\n return node2;\n}\nlet postcss$2$1 = {};\nlet LazyResult$2$1 = class LazyResult {\n constructor(processor2, css, opts) {\n this.stringified = false;\n this.processed = false;\n let root2;\n if (typeof css === \"object\" && css !== null && (css.type === \"root\" || css.type === \"document\")) {\n root2 = cleanMarks$1(css);\n } else if (css instanceof LazyResult || css instanceof Result$2$1) {\n root2 = cleanMarks$1(css.root);\n if (css.map) {\n if (typeof opts.map === \"undefined\") opts.map = {};\n if (!opts.map.inline) opts.map.inline = false;\n opts.map.prev = css.map;\n }\n } else {\n let parser2 = parse$2$1;\n if (opts.syntax) parser2 = opts.syntax.parse;\n if (opts.parser) parser2 = opts.parser;\n if (parser2.parse) parser2 = parser2.parse;\n try {\n root2 = parser2(css, opts);\n } catch (error) {\n this.processed = true;\n this.error = error;\n }\n if (root2 && !root2[my$3]) {\n Container$1$1.rebuild(root2);\n }\n }\n this.result = new Result$2$1(processor2, root2, opts);\n this.helpers = { ...postcss$2$1, postcss: postcss$2$1, result: this.result };\n this.plugins = this.processor.plugins.map((plugin22) => {\n if (typeof plugin22 === \"object\" && plugin22.prepare) {\n return { ...plugin22, ...plugin22.prepare(this.result) };\n } else {\n return plugin22;\n }\n });\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n if (this.processed) return Promise.resolve(this.result);\n if (!this.processing) {\n this.processing = this.runAsync();\n }\n return this.processing;\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n getAsyncError() {\n throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n }\n handleError(error, node2) {\n let plugin22 = this.result.lastPlugin;\n try {\n if (node2) node2.addToError(error);\n this.error = error;\n if (error.name === \"CssSyntaxError\" && !error.plugin) {\n error.plugin = plugin22.postcssPlugin;\n error.setMessage();\n } else if (plugin22.postcssVersion) {\n if (process.env.NODE_ENV !== \"production\") {\n let pluginName = plugin22.postcssPlugin;\n let pluginVer = plugin22.postcssVersion;\n let runtimeVer = this.result.processor.version;\n let a2 = pluginVer.split(\".\");\n let b = runtimeVer.split(\".\");\n if (a2[0] !== b[0] || parseInt(a2[1]) > parseInt(b[1])) {\n console.error(\n \"Unknown error from PostCSS plugin. Your current PostCSS version is \" + runtimeVer + \", but \" + pluginName + \" uses \" + pluginVer + \". Perhaps this is the source of the error below.\"\n );\n }\n }\n }\n } catch (err) {\n if (console && console.error) console.error(err);\n }\n return error;\n }\n prepareVisitors() {\n this.listeners = {};\n let add = (plugin22, type, cb) => {\n if (!this.listeners[type]) this.listeners[type] = [];\n this.listeners[type].push([plugin22, cb]);\n };\n for (let plugin22 of this.plugins) {\n if (typeof plugin22 === \"object\") {\n for (let event in plugin22) {\n if (!PLUGIN_PROPS$1[event] && /^[A-Z]/.test(event)) {\n throw new Error(\n `Unknown event ${event} in ${plugin22.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`\n );\n }\n if (!NOT_VISITORS$1[event]) {\n if (typeof plugin22[event] === \"object\") {\n for (let filter in plugin22[event]) {\n if (filter === \"*\") {\n add(plugin22, event, plugin22[event][filter]);\n } else {\n add(\n plugin22,\n event + \"-\" + filter.toLowerCase(),\n plugin22[event][filter]\n );\n }\n }\n } else if (typeof plugin22[event] === \"function\") {\n add(plugin22, event, plugin22[event]);\n }\n }\n }\n }\n }\n this.hasListener = Object.keys(this.listeners).length > 0;\n }\n async runAsync() {\n this.plugin = 0;\n for (let i2 = 0; i2 < this.plugins.length; i2++) {\n let plugin22 = this.plugins[i2];\n let promise = this.runOnRoot(plugin22);\n if (isPromise$1(promise)) {\n try {\n await promise;\n } catch (error) {\n throw this.handleError(error);\n }\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean$3]) {\n root2[isClean$3] = true;\n let stack = [toStack$1(root2)];\n while (stack.length > 0) {\n let promise = this.visitTick(stack);\n if (isPromise$1(promise)) {\n try {\n await promise;\n } catch (e2) {\n let node2 = stack[stack.length - 1].node;\n throw this.handleError(e2, node2);\n }\n }\n }\n }\n if (this.listeners.OnceExit) {\n for (let [plugin22, visitor] of this.listeners.OnceExit) {\n this.result.lastPlugin = plugin22;\n try {\n if (root2.type === \"document\") {\n let roots = root2.nodes.map(\n (subRoot) => visitor(subRoot, this.helpers)\n );\n await Promise.all(roots);\n } else {\n await visitor(root2, this.helpers);\n }\n } catch (e2) {\n throw this.handleError(e2);\n }\n }\n }\n }\n this.processed = true;\n return this.stringify();\n }\n runOnRoot(plugin22) {\n this.result.lastPlugin = plugin22;\n try {\n if (typeof plugin22 === \"object\" && plugin22.Once) {\n if (this.result.root.type === \"document\") {\n let roots = this.result.root.nodes.map(\n (root2) => plugin22.Once(root2, this.helpers)\n );\n if (isPromise$1(roots[0])) {\n return Promise.all(roots);\n }\n return roots;\n }\n return plugin22.Once(this.result.root, this.helpers);\n } else if (typeof plugin22 === \"function\") {\n return plugin22(this.result.root, this.result);\n }\n } catch (error) {\n throw this.handleError(error);\n }\n }\n stringify() {\n if (this.error) throw this.error;\n if (this.stringified) return this.result;\n this.stringified = true;\n this.sync();\n let opts = this.result.opts;\n let str = stringify$2$1;\n if (opts.syntax) str = opts.syntax.stringify;\n if (opts.stringifier) str = opts.stringifier;\n if (str.stringify) str = str.stringify;\n let map = new MapGenerator$1$1(str, this.result.root, this.result.opts);\n let data = map.generate();\n this.result.css = data[0];\n this.result.map = data[1];\n return this.result;\n }\n sync() {\n if (this.error) throw this.error;\n if (this.processed) return this.result;\n this.processed = true;\n if (this.processing) {\n throw this.getAsyncError();\n }\n for (let plugin22 of this.plugins) {\n let promise = this.runOnRoot(plugin22);\n if (isPromise$1(promise)) {\n throw this.getAsyncError();\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean$3]) {\n root2[isClean$3] = true;\n this.walkSync(root2);\n }\n if (this.listeners.OnceExit) {\n if (root2.type === \"document\") {\n for (let subRoot of root2.nodes) {\n this.visitSync(this.listeners.OnceExit, subRoot);\n }\n } else {\n this.visitSync(this.listeners.OnceExit, root2);\n }\n }\n }\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this.opts)) {\n warnOnce$1$1(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this.css;\n }\n visitSync(visitors, node2) {\n for (let [plugin22, visitor] of visitors) {\n this.result.lastPlugin = plugin22;\n let promise;\n try {\n promise = visitor(node2, this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2.proxyOf);\n }\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n return true;\n }\n if (isPromise$1(promise)) {\n throw this.getAsyncError();\n }\n }\n }\n visitTick(stack) {\n let visit2 = stack[stack.length - 1];\n let { node: node2, visitors } = visit2;\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n stack.pop();\n return;\n }\n if (visitors.length > 0 && visit2.visitorIndex < visitors.length) {\n let [plugin22, visitor] = visitors[visit2.visitorIndex];\n visit2.visitorIndex += 1;\n if (visit2.visitorIndex === visitors.length) {\n visit2.visitors = [];\n visit2.visitorIndex = 0;\n }\n this.result.lastPlugin = plugin22;\n try {\n return visitor(node2.toProxy(), this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2);\n }\n }\n if (visit2.iterator !== 0) {\n let iterator = visit2.iterator;\n let child;\n while (child = node2.nodes[node2.indexes[iterator]]) {\n node2.indexes[iterator] += 1;\n if (!child[isClean$3]) {\n child[isClean$3] = true;\n stack.push(toStack$1(child));\n return;\n }\n }\n visit2.iterator = 0;\n delete node2.indexes[iterator];\n }\n let events = visit2.events;\n while (visit2.eventIndex < events.length) {\n let event = events[visit2.eventIndex];\n visit2.eventIndex += 1;\n if (event === CHILDREN$1) {\n if (node2.nodes && node2.nodes.length) {\n node2[isClean$3] = true;\n visit2.iterator = node2.getIterator();\n }\n return;\n } else if (this.listeners[event]) {\n visit2.visitors = this.listeners[event];\n return;\n }\n }\n stack.pop();\n }\n walkSync(node2) {\n node2[isClean$3] = true;\n let events = getEvents$1(node2);\n for (let event of events) {\n if (event === CHILDREN$1) {\n if (node2.nodes) {\n node2.each((child) => {\n if (!child[isClean$3]) this.walkSync(child);\n });\n }\n } else {\n let visitors = this.listeners[event];\n if (visitors) {\n if (this.visitSync(visitors, node2.toProxy())) return;\n }\n }\n }\n }\n warnings() {\n return this.sync().warnings();\n }\n get content() {\n return this.stringify().content;\n }\n get css() {\n return this.stringify().css;\n }\n get map() {\n return this.stringify().map;\n }\n get messages() {\n return this.sync().messages;\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n return this.sync().root;\n }\n get [Symbol.toStringTag]() {\n return \"LazyResult\";\n }\n};\nLazyResult$2$1.registerPostcss = (dependant) => {\n postcss$2$1 = dependant;\n};\nvar lazyResult$1 = LazyResult$2$1;\nLazyResult$2$1.default = LazyResult$2$1;\nRoot$3$1.registerLazyResult(LazyResult$2$1);\nDocument$2$1.registerLazyResult(LazyResult$2$1);\nlet MapGenerator2$1 = mapGenerator$1;\nlet stringify$1$1 = stringify_1$1;\nlet warnOnce2$1 = warnOnce$2$1;\nlet parse$1$1 = parse_1$1;\nconst Result$1$1 = result$1;\nlet NoWorkResult$1$1 = class NoWorkResult {\n constructor(processor2, css, opts) {\n css = css.toString();\n this.stringified = false;\n this._processor = processor2;\n this._css = css;\n this._opts = opts;\n this._map = void 0;\n let root2;\n let str = stringify$1$1;\n this.result = new Result$1$1(this._processor, root2, this._opts);\n this.result.css = css;\n let self = this;\n Object.defineProperty(this.result, \"root\", {\n get() {\n return self.root;\n }\n });\n let map = new MapGenerator2$1(str, root2, this._opts, css);\n if (map.isMap()) {\n let [generatedCSS, generatedMap] = map.generate();\n if (generatedCSS) {\n this.result.css = generatedCSS;\n }\n if (generatedMap) {\n this.result.map = generatedMap;\n }\n } else {\n map.clearAnnotation();\n this.result.css = map.css;\n }\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n return Promise.resolve(this.result);\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n sync() {\n if (this.error) throw this.error;\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this._opts)) {\n warnOnce2$1(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this._css;\n }\n warnings() {\n return [];\n }\n get content() {\n return this.result.css;\n }\n get css() {\n return this.result.css;\n }\n get map() {\n return this.result.map;\n }\n get messages() {\n return [];\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n if (this._root) {\n return this._root;\n }\n let root2;\n let parser2 = parse$1$1;\n try {\n root2 = parser2(this._css, this._opts);\n } catch (error) {\n this.error = error;\n }\n if (this.error) {\n throw this.error;\n } else {\n this._root = root2;\n return root2;\n }\n }\n get [Symbol.toStringTag]() {\n return \"NoWorkResult\";\n }\n};\nvar noWorkResult$1 = NoWorkResult$1$1;\nNoWorkResult$1$1.default = NoWorkResult$1$1;\nlet NoWorkResult2$1 = noWorkResult$1;\nlet LazyResult$1$1 = lazyResult$1;\nlet Document$1$1 = document$1$1;\nlet Root$2$1 = root$1;\nlet Processor$1$1 = class Processor {\n constructor(plugins = []) {\n this.version = \"8.4.38\";\n this.plugins = this.normalize(plugins);\n }\n normalize(plugins) {\n let normalized = [];\n for (let i2 of plugins) {\n if (i2.postcss === true) {\n i2 = i2();\n } else if (i2.postcss) {\n i2 = i2.postcss;\n }\n if (typeof i2 === \"object\" && Array.isArray(i2.plugins)) {\n normalized = normalized.concat(i2.plugins);\n } else if (typeof i2 === \"object\" && i2.postcssPlugin) {\n normalized.push(i2);\n } else if (typeof i2 === \"function\") {\n normalized.push(i2);\n } else if (typeof i2 === \"object\" && (i2.parse || i2.stringify)) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error(\n \"PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.\"\n );\n }\n } else {\n throw new Error(i2 + \" is not a PostCSS plugin\");\n }\n }\n return normalized;\n }\n process(css, opts = {}) {\n if (!this.plugins.length && !opts.parser && !opts.stringifier && !opts.syntax) {\n return new NoWorkResult2$1(this, css, opts);\n } else {\n return new LazyResult$1$1(this, css, opts);\n }\n }\n use(plugin22) {\n this.plugins = this.plugins.concat(this.normalize([plugin22]));\n return this;\n }\n};\nvar processor$1 = Processor$1$1;\nProcessor$1$1.default = Processor$1$1;\nRoot$2$1.registerProcessor(Processor$1$1);\nDocument$1$1.registerProcessor(Processor$1$1);\nlet Declaration$1$1 = declaration$1;\nlet PreviousMap2$1 = previousMap$1;\nlet Comment$1$1 = comment$1;\nlet AtRule$1$1 = atRule$1;\nlet Input$1$1 = input$1;\nlet Root$1$1 = root$1;\nlet Rule$1$1 = rule$1;\nfunction fromJSON$1$1(json, inputs) {\n if (Array.isArray(json)) return json.map((n2) => fromJSON$1$1(n2));\n let { inputs: ownInputs, ...defaults } = json;\n if (ownInputs) {\n inputs = [];\n for (let input2 of ownInputs) {\n let inputHydrated = { ...input2, __proto__: Input$1$1.prototype };\n if (inputHydrated.map) {\n inputHydrated.map = {\n ...inputHydrated.map,\n __proto__: PreviousMap2$1.prototype\n };\n }\n inputs.push(inputHydrated);\n }\n }\n if (defaults.nodes) {\n defaults.nodes = json.nodes.map((n2) => fromJSON$1$1(n2, inputs));\n }\n if (defaults.source) {\n let { inputId, ...source } = defaults.source;\n defaults.source = source;\n if (inputId != null) {\n defaults.source.input = inputs[inputId];\n }\n }\n if (defaults.type === \"root\") {\n return new Root$1$1(defaults);\n } else if (defaults.type === \"decl\") {\n return new Declaration$1$1(defaults);\n } else if (defaults.type === \"rule\") {\n return new Rule$1$1(defaults);\n } else if (defaults.type === \"comment\") {\n return new Comment$1$1(defaults);\n } else if (defaults.type === \"atrule\") {\n return new AtRule$1$1(defaults);\n } else {\n throw new Error(\"Unknown node type: \" + json.type);\n }\n}\nvar fromJSON_1$1 = fromJSON$1$1;\nfromJSON$1$1.default = fromJSON$1$1;\nlet CssSyntaxError2$1 = cssSyntaxError$1;\nlet Declaration2$1 = declaration$1;\nlet LazyResult2$1 = lazyResult$1;\nlet Container2$1 = container$1;\nlet Processor2$1 = processor$1;\nlet stringify$5 = stringify_1$1;\nlet fromJSON$2 = fromJSON_1$1;\nlet Document22 = document$1$1;\nlet Warning2$1 = warning$1;\nlet Comment2$1 = comment$1;\nlet AtRule2$1 = atRule$1;\nlet Result2$1 = result$1;\nlet Input2$1 = input$1;\nlet parse$5 = parse_1$1;\nlet list$3 = list_1$1;\nlet Rule2$1 = rule$1;\nlet Root2$1 = root$1;\nlet Node2$1 = node$1;\nfunction postcss$3(...plugins) {\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0];\n }\n return new Processor2$1(plugins);\n}\npostcss$3.plugin = function plugin(name, initializer) {\n let warningPrinted = false;\n function creator(...args) {\n if (console && console.warn && !warningPrinted) {\n warningPrinted = true;\n console.warn(\n name + \": postcss.plugin was deprecated. Migration guide:\\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration\"\n );\n if (process.env.LANG && process.env.LANG.startsWith(\"cn\")) {\n console.warn(\n name + \": 里面 postcss.plugin 被弃用. 迁移指南:\\nhttps://www.w3ctech.com/topic/2226\"\n );\n }\n }\n let transformer = initializer(...args);\n transformer.postcssPlugin = name;\n transformer.postcssVersion = new Processor2$1().version;\n return transformer;\n }\n let cache;\n Object.defineProperty(creator, \"postcss\", {\n get() {\n if (!cache) cache = creator();\n return cache;\n }\n });\n creator.process = function(css, processOpts, pluginOpts) {\n return postcss$3([creator(pluginOpts)]).process(css, processOpts);\n };\n return creator;\n};\npostcss$3.stringify = stringify$5;\npostcss$3.parse = parse$5;\npostcss$3.fromJSON = fromJSON$2;\npostcss$3.list = list$3;\npostcss$3.comment = (defaults) => new Comment2$1(defaults);\npostcss$3.atRule = (defaults) => new AtRule2$1(defaults);\npostcss$3.decl = (defaults) => new Declaration2$1(defaults);\npostcss$3.rule = (defaults) => new Rule2$1(defaults);\npostcss$3.root = (defaults) => new Root2$1(defaults);\npostcss$3.document = (defaults) => new Document22(defaults);\npostcss$3.CssSyntaxError = CssSyntaxError2$1;\npostcss$3.Declaration = Declaration2$1;\npostcss$3.Container = Container2$1;\npostcss$3.Processor = Processor2$1;\npostcss$3.Document = Document22;\npostcss$3.Comment = Comment2$1;\npostcss$3.Warning = Warning2$1;\npostcss$3.AtRule = AtRule2$1;\npostcss$3.Result = Result2$1;\npostcss$3.Input = Input2$1;\npostcss$3.Rule = Rule2$1;\npostcss$3.Root = Root2$1;\npostcss$3.Node = Node2$1;\nLazyResult2$1.registerPostcss(postcss$3);\nvar postcss_1$1 = postcss$3;\npostcss$3.default = postcss$3;\nconst postcss$1$1 = /* @__PURE__ */ getDefaultExportFromCjs$1(postcss_1$1);\npostcss$1$1.stringify;\npostcss$1$1.fromJSON;\npostcss$1$1.plugin;\npostcss$1$1.parse;\npostcss$1$1.list;\npostcss$1$1.document;\npostcss$1$1.comment;\npostcss$1$1.atRule;\npostcss$1$1.rule;\npostcss$1$1.decl;\npostcss$1$1.root;\npostcss$1$1.CssSyntaxError;\npostcss$1$1.Declaration;\npostcss$1$1.Container;\npostcss$1$1.Processor;\npostcss$1$1.Document;\npostcss$1$1.Comment;\npostcss$1$1.Warning;\npostcss$1$1.AtRule;\npostcss$1$1.Result;\npostcss$1$1.Input;\npostcss$1$1.Rule;\npostcss$1$1.Root;\npostcss$1$1.Node;\nvar __defProp2 = Object.defineProperty;\nvar __defNormalProp2 = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField2 = (obj, key, value) => __defNormalProp2(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nfunction getDefaultExportFromCjs(x2) {\n return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, \"default\") ? x2[\"default\"] : x2;\n}\nfunction getAugmentedNamespace(n2) {\n if (n2.__esModule) return n2;\n var f2 = n2.default;\n if (typeof f2 == \"function\") {\n var a2 = function a22() {\n if (this instanceof a22) {\n return Reflect.construct(f2, arguments, this.constructor);\n }\n return f2.apply(this, arguments);\n };\n a2.prototype = f2.prototype;\n } else a2 = {};\n Object.defineProperty(a2, \"__esModule\", { value: true });\n Object.keys(n2).forEach(function(k) {\n var d = Object.getOwnPropertyDescriptor(n2, k);\n Object.defineProperty(a2, k, d.get ? d : {\n enumerable: true,\n get: function() {\n return n2[k];\n }\n });\n });\n return a2;\n}\nvar picocolors_browser = { exports: {} };\nvar x = String;\nvar create = function() {\n return { isColorSupported: false, reset: x, bold: x, dim: x, italic: x, underline: x, inverse: x, hidden: x, strikethrough: x, black: x, red: x, green: x, yellow: x, blue: x, magenta: x, cyan: x, white: x, gray: x, bgBlack: x, bgRed: x, bgGreen: x, bgYellow: x, bgBlue: x, bgMagenta: x, bgCyan: x, bgWhite: x };\n};\npicocolors_browser.exports = create();\npicocolors_browser.exports.createColors = create;\nvar picocolors_browserExports = picocolors_browser.exports;\nconst __viteBrowserExternal = {};\nconst __viteBrowserExternal$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: __viteBrowserExternal\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst require$$2 = /* @__PURE__ */ getAugmentedNamespace(__viteBrowserExternal$1);\nlet pico = picocolors_browserExports;\nlet terminalHighlight$1 = require$$2;\nlet CssSyntaxError$3 = class CssSyntaxError2 extends Error {\n constructor(message, line, column, source, file, plugin22) {\n super(message);\n this.name = \"CssSyntaxError\";\n this.reason = message;\n if (file) {\n this.file = file;\n }\n if (source) {\n this.source = source;\n }\n if (plugin22) {\n this.plugin = plugin22;\n }\n if (typeof line !== \"undefined\" && typeof column !== \"undefined\") {\n if (typeof line === \"number\") {\n this.line = line;\n this.column = column;\n } else {\n this.line = line.line;\n this.column = line.column;\n this.endLine = column.line;\n this.endColumn = column.column;\n }\n }\n this.setMessage();\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, CssSyntaxError2);\n }\n }\n setMessage() {\n this.message = this.plugin ? this.plugin + \": \" : \"\";\n this.message += this.file ? this.file : \"\";\n if (typeof this.line !== \"undefined\") {\n this.message += \":\" + this.line + \":\" + this.column;\n }\n this.message += \": \" + this.reason;\n }\n showSourceCode(color) {\n if (!this.source) return \"\";\n let css = this.source;\n if (color == null) color = pico.isColorSupported;\n if (terminalHighlight$1) {\n if (color) css = terminalHighlight$1(css);\n }\n let lines = css.split(/\\r?\\n/);\n let start = Math.max(this.line - 3, 0);\n let end = Math.min(this.line + 2, lines.length);\n let maxWidth = String(end).length;\n let mark, aside;\n if (color) {\n let { bold, gray, red } = pico.createColors(true);\n mark = (text) => bold(red(text));\n aside = (text) => gray(text);\n } else {\n mark = aside = (str) => str;\n }\n return lines.slice(start, end).map((line, index2) => {\n let number = start + 1 + index2;\n let gutter = \" \" + (\" \" + number).slice(-maxWidth) + \" | \";\n if (number === this.line) {\n let spacing = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, this.column - 1).replace(/[^\\t]/g, \" \");\n return mark(\">\") + aside(gutter) + line + \"\\n \" + spacing + mark(\"^\");\n }\n return \" \" + aside(gutter) + line;\n }).join(\"\\n\");\n }\n toString() {\n let code = this.showSourceCode();\n if (code) {\n code = \"\\n\\n\" + code + \"\\n\";\n }\n return this.name + \": \" + this.message + code;\n }\n};\nvar cssSyntaxError = CssSyntaxError$3;\nCssSyntaxError$3.default = CssSyntaxError$3;\nvar symbols = {};\nsymbols.isClean = Symbol(\"isClean\");\nsymbols.my = Symbol(\"my\");\nconst DEFAULT_RAW = {\n after: \"\\n\",\n beforeClose: \"\\n\",\n beforeComment: \"\\n\",\n beforeDecl: \"\\n\",\n beforeOpen: \" \",\n beforeRule: \"\\n\",\n colon: \": \",\n commentLeft: \" \",\n commentRight: \" \",\n emptyBody: \"\",\n indent: \" \",\n semicolon: false\n};\nfunction capitalize(str) {\n return str[0].toUpperCase() + str.slice(1);\n}\nlet Stringifier$2 = class Stringifier2 {\n constructor(builder) {\n this.builder = builder;\n }\n atrule(node2, semicolon) {\n let name = \"@\" + node2.name;\n let params = node2.params ? this.rawValue(node2, \"params\") : \"\";\n if (typeof node2.raws.afterName !== \"undefined\") {\n name += node2.raws.afterName;\n } else if (params) {\n name += \" \";\n }\n if (node2.nodes) {\n this.block(node2, name + params);\n } else {\n let end = (node2.raws.between || \"\") + (semicolon ? \";\" : \"\");\n this.builder(name + params + end, node2);\n }\n }\n beforeAfter(node2, detect) {\n let value;\n if (node2.type === \"decl\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (node2.type === \"comment\") {\n value = this.raw(node2, null, \"beforeComment\");\n } else if (detect === \"before\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else {\n value = this.raw(node2, null, \"beforeClose\");\n }\n let buf = node2.parent;\n let depth = 0;\n while (buf && buf.type !== \"root\") {\n depth += 1;\n buf = buf.parent;\n }\n if (value.includes(\"\\n\")) {\n let indent = this.raw(node2, null, \"indent\");\n if (indent.length) {\n for (let step = 0; step < depth; step++) value += indent;\n }\n }\n return value;\n }\n block(node2, start) {\n let between = this.raw(node2, \"between\", \"beforeOpen\");\n this.builder(start + between + \"{\", node2, \"start\");\n let after;\n if (node2.nodes && node2.nodes.length) {\n this.body(node2);\n after = this.raw(node2, \"after\");\n } else {\n after = this.raw(node2, \"after\", \"emptyBody\");\n }\n if (after) this.builder(after);\n this.builder(\"}\", node2, \"end\");\n }\n body(node2) {\n let last = node2.nodes.length - 1;\n while (last > 0) {\n if (node2.nodes[last].type !== \"comment\") break;\n last -= 1;\n }\n let semicolon = this.raw(node2, \"semicolon\");\n for (let i2 = 0; i2 < node2.nodes.length; i2++) {\n let child = node2.nodes[i2];\n let before = this.raw(child, \"before\");\n if (before) this.builder(before);\n this.stringify(child, last !== i2 || semicolon);\n }\n }\n comment(node2) {\n let left = this.raw(node2, \"left\", \"commentLeft\");\n let right = this.raw(node2, \"right\", \"commentRight\");\n this.builder(\"/*\" + left + node2.text + right + \"*/\", node2);\n }\n decl(node2, semicolon) {\n let between = this.raw(node2, \"between\", \"colon\");\n let string = node2.prop + between + this.rawValue(node2, \"value\");\n if (node2.important) {\n string += node2.raws.important || \" !important\";\n }\n if (semicolon) string += \";\";\n this.builder(string, node2);\n }\n document(node2) {\n this.body(node2);\n }\n raw(node2, own, detect) {\n let value;\n if (!detect) detect = own;\n if (own) {\n value = node2.raws[own];\n if (typeof value !== \"undefined\") return value;\n }\n let parent = node2.parent;\n if (detect === \"before\") {\n if (!parent || parent.type === \"root\" && parent.first === node2) {\n return \"\";\n }\n if (parent && parent.type === \"document\") {\n return \"\";\n }\n }\n if (!parent) return DEFAULT_RAW[detect];\n let root2 = node2.root();\n if (!root2.rawCache) root2.rawCache = {};\n if (typeof root2.rawCache[detect] !== \"undefined\") {\n return root2.rawCache[detect];\n }\n if (detect === \"before\" || detect === \"after\") {\n return this.beforeAfter(node2, detect);\n } else {\n let method = \"raw\" + capitalize(detect);\n if (this[method]) {\n value = this[method](root2, node2);\n } else {\n root2.walk((i2) => {\n value = i2.raws[own];\n if (typeof value !== \"undefined\") return false;\n });\n }\n }\n if (typeof value === \"undefined\") value = DEFAULT_RAW[detect];\n root2.rawCache[detect] = value;\n return value;\n }\n rawBeforeClose(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length > 0) {\n if (typeof i2.raws.after !== \"undefined\") {\n value = i2.raws.after;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawBeforeComment(root2, node2) {\n let value;\n root2.walkComments((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeDecl(root2, node2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeOpen(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.type !== \"decl\") {\n value = i2.raws.between;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawBeforeRule(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && (i2.parent !== root2 || root2.first !== i2)) {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawColon(root2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.between !== \"undefined\") {\n value = i2.raws.between.replace(/[^\\s:]/g, \"\");\n return false;\n }\n });\n return value;\n }\n rawEmptyBody(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length === 0) {\n value = i2.raws.after;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawIndent(root2) {\n if (root2.raws.indent) return root2.raws.indent;\n let value;\n root2.walk((i2) => {\n let p = i2.parent;\n if (p && p !== root2 && p.parent && p.parent === root2) {\n if (typeof i2.raws.before !== \"undefined\") {\n let parts = i2.raws.before.split(\"\\n\");\n value = parts[parts.length - 1];\n value = value.replace(/\\S/g, \"\");\n return false;\n }\n }\n });\n return value;\n }\n rawSemicolon(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length && i2.last.type === \"decl\") {\n value = i2.raws.semicolon;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawValue(node2, prop) {\n let value = node2[prop];\n let raw = node2.raws[prop];\n if (raw && raw.value === value) {\n return raw.raw;\n }\n return value;\n }\n root(node2) {\n this.body(node2);\n if (node2.raws.after) this.builder(node2.raws.after);\n }\n rule(node2) {\n this.block(node2, this.rawValue(node2, \"selector\"));\n if (node2.raws.ownSemicolon) {\n this.builder(node2.raws.ownSemicolon, node2, \"end\");\n }\n }\n stringify(node2, semicolon) {\n if (!this[node2.type]) {\n throw new Error(\n \"Unknown AST node type \" + node2.type + \". Maybe you need to change PostCSS stringifier.\"\n );\n }\n this[node2.type](node2, semicolon);\n }\n};\nvar stringifier = Stringifier$2;\nStringifier$2.default = Stringifier$2;\nlet Stringifier$1 = stringifier;\nfunction stringify$4(node2, builder) {\n let str = new Stringifier$1(builder);\n str.stringify(node2);\n}\nvar stringify_1 = stringify$4;\nstringify$4.default = stringify$4;\nlet { isClean: isClean$2, my: my$2 } = symbols;\nlet CssSyntaxError$2 = cssSyntaxError;\nlet Stringifier22 = stringifier;\nlet stringify$3 = stringify_1;\nfunction cloneNode(obj, parent) {\n let cloned = new obj.constructor();\n for (let i2 in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, i2)) {\n continue;\n }\n if (i2 === \"proxyCache\") continue;\n let value = obj[i2];\n let type = typeof value;\n if (i2 === \"parent\" && type === \"object\") {\n if (parent) cloned[i2] = parent;\n } else if (i2 === \"source\") {\n cloned[i2] = value;\n } else if (Array.isArray(value)) {\n cloned[i2] = value.map((j) => cloneNode(j, cloned));\n } else {\n if (type === \"object\" && value !== null) value = cloneNode(value);\n cloned[i2] = value;\n }\n }\n return cloned;\n}\nlet Node$4 = class Node3 {\n constructor(defaults = {}) {\n this.raws = {};\n this[isClean$2] = false;\n this[my$2] = true;\n for (let name in defaults) {\n if (name === \"nodes\") {\n this.nodes = [];\n for (let node2 of defaults[name]) {\n if (typeof node2.clone === \"function\") {\n this.append(node2.clone());\n } else {\n this.append(node2);\n }\n }\n } else {\n this[name] = defaults[name];\n }\n }\n }\n addToError(error) {\n error.postcssNode = this;\n if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n let s2 = this.source;\n error.stack = error.stack.replace(\n /\\n\\s{4}at /,\n `$&${s2.input.from}:${s2.start.line}:${s2.start.column}$&`\n );\n }\n return error;\n }\n after(add) {\n this.parent.insertAfter(this, add);\n return this;\n }\n assign(overrides = {}) {\n for (let name in overrides) {\n this[name] = overrides[name];\n }\n return this;\n }\n before(add) {\n this.parent.insertBefore(this, add);\n return this;\n }\n cleanRaws(keepBetween) {\n delete this.raws.before;\n delete this.raws.after;\n if (!keepBetween) delete this.raws.between;\n }\n clone(overrides = {}) {\n let cloned = cloneNode(this);\n for (let name in overrides) {\n cloned[name] = overrides[name];\n }\n return cloned;\n }\n cloneAfter(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertAfter(this, cloned);\n return cloned;\n }\n cloneBefore(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertBefore(this, cloned);\n return cloned;\n }\n error(message, opts = {}) {\n if (this.source) {\n let { end, start } = this.rangeBy(opts);\n return this.source.input.error(\n message,\n { column: start.column, line: start.line },\n { column: end.column, line: end.line },\n opts\n );\n }\n return new CssSyntaxError$2(message);\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"prop\" || prop === \"value\" || prop === \"name\" || prop === \"params\" || prop === \"important\" || /* c8 ignore next */\n prop === \"text\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n markDirty() {\n if (this[isClean$2]) {\n this[isClean$2] = false;\n let next = this;\n while (next = next.parent) {\n next[isClean$2] = false;\n }\n }\n }\n next() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 + 1];\n }\n positionBy(opts, stringRepresentation) {\n let pos = this.source.start;\n if (opts.index) {\n pos = this.positionInside(opts.index, stringRepresentation);\n } else if (opts.word) {\n stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) pos = this.positionInside(index2, stringRepresentation);\n }\n return pos;\n }\n positionInside(index2, stringRepresentation) {\n let string = stringRepresentation || this.toString();\n let column = this.source.start.column;\n let line = this.source.start.line;\n for (let i2 = 0; i2 < index2; i2++) {\n if (string[i2] === \"\\n\") {\n column = 1;\n line += 1;\n } else {\n column += 1;\n }\n }\n return { column, line };\n }\n prev() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 - 1];\n }\n rangeBy(opts) {\n let start = {\n column: this.source.start.column,\n line: this.source.start.line\n };\n let end = this.source.end ? {\n column: this.source.end.column + 1,\n line: this.source.end.line\n } : {\n column: start.column + 1,\n line: start.line\n };\n if (opts.word) {\n let stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) {\n start = this.positionInside(index2, stringRepresentation);\n end = this.positionInside(index2 + opts.word.length, stringRepresentation);\n }\n } else {\n if (opts.start) {\n start = {\n column: opts.start.column,\n line: opts.start.line\n };\n } else if (opts.index) {\n start = this.positionInside(opts.index);\n }\n if (opts.end) {\n end = {\n column: opts.end.column,\n line: opts.end.line\n };\n } else if (typeof opts.endIndex === \"number\") {\n end = this.positionInside(opts.endIndex);\n } else if (opts.index) {\n end = this.positionInside(opts.index + 1);\n }\n }\n if (end.line < start.line || end.line === start.line && end.column <= start.column) {\n end = { column: start.column + 1, line: start.line };\n }\n return { end, start };\n }\n raw(prop, defaultType) {\n let str = new Stringifier22();\n return str.raw(this, prop, defaultType);\n }\n remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n this.parent = void 0;\n return this;\n }\n replaceWith(...nodes) {\n if (this.parent) {\n let bookmark = this;\n let foundSelf = false;\n for (let node2 of nodes) {\n if (node2 === this) {\n foundSelf = true;\n } else if (foundSelf) {\n this.parent.insertAfter(bookmark, node2);\n bookmark = node2;\n } else {\n this.parent.insertBefore(bookmark, node2);\n }\n }\n if (!foundSelf) {\n this.remove();\n }\n }\n return this;\n }\n root() {\n let result2 = this;\n while (result2.parent && result2.parent.type !== \"document\") {\n result2 = result2.parent;\n }\n return result2;\n }\n toJSON(_, inputs) {\n let fixed = {};\n let emitInputs = inputs == null;\n inputs = inputs || /* @__PURE__ */ new Map();\n let inputsNextIndex = 0;\n for (let name in this) {\n if (!Object.prototype.hasOwnProperty.call(this, name)) {\n continue;\n }\n if (name === \"parent\" || name === \"proxyCache\") continue;\n let value = this[name];\n if (Array.isArray(value)) {\n fixed[name] = value.map((i2) => {\n if (typeof i2 === \"object\" && i2.toJSON) {\n return i2.toJSON(null, inputs);\n } else {\n return i2;\n }\n });\n } else if (typeof value === \"object\" && value.toJSON) {\n fixed[name] = value.toJSON(null, inputs);\n } else if (name === \"source\") {\n let inputId = inputs.get(value.input);\n if (inputId == null) {\n inputId = inputsNextIndex;\n inputs.set(value.input, inputsNextIndex);\n inputsNextIndex++;\n }\n fixed[name] = {\n end: value.end,\n inputId,\n start: value.start\n };\n } else {\n fixed[name] = value;\n }\n }\n if (emitInputs) {\n fixed.inputs = [...inputs.keys()].map((input2) => input2.toJSON());\n }\n return fixed;\n }\n toProxy() {\n if (!this.proxyCache) {\n this.proxyCache = new Proxy(this, this.getProxyProcessor());\n }\n return this.proxyCache;\n }\n toString(stringifier2 = stringify$3) {\n if (stringifier2.stringify) stringifier2 = stringifier2.stringify;\n let result2 = \"\";\n stringifier2(this, (i2) => {\n result2 += i2;\n });\n return result2;\n }\n warn(result2, text, opts) {\n let data = { node: this };\n for (let i2 in opts) data[i2] = opts[i2];\n return result2.warn(text, data);\n }\n get proxyOf() {\n return this;\n }\n};\nvar node = Node$4;\nNode$4.default = Node$4;\nlet Node$3 = node;\nlet Declaration$4 = class Declaration2 extends Node$3 {\n constructor(defaults) {\n if (defaults && typeof defaults.value !== \"undefined\" && typeof defaults.value !== \"string\") {\n defaults = { ...defaults, value: String(defaults.value) };\n }\n super(defaults);\n this.type = \"decl\";\n }\n get variable() {\n return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n }\n};\nvar declaration = Declaration$4;\nDeclaration$4.default = Declaration$4;\nlet urlAlphabet = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\nlet customAlphabet = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = \"\";\n let i2 = size;\n while (i2--) {\n id += alphabet[Math.random() * alphabet.length | 0];\n }\n return id;\n };\n};\nlet nanoid$1 = (size = 21) => {\n let id = \"\";\n let i2 = size;\n while (i2--) {\n id += urlAlphabet[Math.random() * 64 | 0];\n }\n return id;\n};\nvar nonSecure = { nanoid: nanoid$1, customAlphabet };\nlet { SourceMapConsumer: SourceMapConsumer$2, SourceMapGenerator: SourceMapGenerator$2 } = require$$2;\nlet { existsSync, readFileSync } = require$$2;\nlet { dirname: dirname$1, join } = require$$2;\nfunction fromBase64(str) {\n if (Buffer) {\n return Buffer.from(str, \"base64\").toString();\n } else {\n return window.atob(str);\n }\n}\nlet PreviousMap$2 = class PreviousMap2 {\n constructor(css, opts) {\n if (opts.map === false) return;\n this.loadAnnotation(css);\n this.inline = this.startWith(this.annotation, \"data:\");\n let prev = opts.map ? opts.map.prev : void 0;\n let text = this.loadMap(opts.from, prev);\n if (!this.mapFile && opts.from) {\n this.mapFile = opts.from;\n }\n if (this.mapFile) this.root = dirname$1(this.mapFile);\n if (text) this.text = text;\n }\n consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new SourceMapConsumer$2(this.text);\n }\n return this.consumerCache;\n }\n decodeInline(text) {\n let baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/;\n let baseUri = /^data:application\\/json;base64,/;\n let charsetUri = /^data:application\\/json;charset=utf-?8,/;\n let uri = /^data:application\\/json,/;\n if (charsetUri.test(text) || uri.test(text)) {\n return decodeURIComponent(text.substr(RegExp.lastMatch.length));\n }\n if (baseCharsetUri.test(text) || baseUri.test(text)) {\n return fromBase64(text.substr(RegExp.lastMatch.length));\n }\n let encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n throw new Error(\"Unsupported source map encoding \" + encoding);\n }\n getAnnotationURL(sourceMapString) {\n return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n }\n isMap(map) {\n if (typeof map !== \"object\") return false;\n return typeof map.mappings === \"string\" || typeof map._mappings === \"string\" || Array.isArray(map.sections);\n }\n loadAnnotation(css) {\n let comments = css.match(/\\/\\*\\s*# sourceMappingURL=/gm);\n if (!comments) return;\n let start = css.lastIndexOf(comments.pop());\n let end = css.indexOf(\"*/\", start);\n if (start > -1 && end > -1) {\n this.annotation = this.getAnnotationURL(css.substring(start, end));\n }\n }\n loadFile(path) {\n this.root = dirname$1(path);\n if (existsSync(path)) {\n this.mapFile = path;\n return readFileSync(path, \"utf-8\").toString().trim();\n }\n }\n loadMap(file, prev) {\n if (prev === false) return false;\n if (prev) {\n if (typeof prev === \"string\") {\n return prev;\n } else if (typeof prev === \"function\") {\n let prevPath = prev(file);\n if (prevPath) {\n let map = this.loadFile(prevPath);\n if (!map) {\n throw new Error(\n \"Unable to load previous source map: \" + prevPath.toString()\n );\n }\n return map;\n }\n } else if (prev instanceof SourceMapConsumer$2) {\n return SourceMapGenerator$2.fromSourceMap(prev).toString();\n } else if (prev instanceof SourceMapGenerator$2) {\n return prev.toString();\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev);\n } else {\n throw new Error(\n \"Unsupported previous source map format: \" + prev.toString()\n );\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation);\n } else if (this.annotation) {\n let map = this.annotation;\n if (file) map = join(dirname$1(file), map);\n return this.loadFile(map);\n }\n }\n startWith(string, start) {\n if (!string) return false;\n return string.substr(0, start.length) === start;\n }\n withContent() {\n return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n }\n};\nvar previousMap = PreviousMap$2;\nPreviousMap$2.default = PreviousMap$2;\nlet { SourceMapConsumer: SourceMapConsumer$1, SourceMapGenerator: SourceMapGenerator$1 } = require$$2;\nlet { fileURLToPath, pathToFileURL: pathToFileURL$1 } = require$$2;\nlet { isAbsolute, resolve: resolve$1 } = require$$2;\nlet { nanoid } = nonSecure;\nlet terminalHighlight = require$$2;\nlet CssSyntaxError$1 = cssSyntaxError;\nlet PreviousMap$1 = previousMap;\nlet fromOffsetCache = Symbol(\"fromOffsetCache\");\nlet sourceMapAvailable$1 = Boolean(SourceMapConsumer$1 && SourceMapGenerator$1);\nlet pathAvailable$1 = Boolean(resolve$1 && isAbsolute);\nlet Input$4 = class Input2 {\n constructor(css, opts = {}) {\n if (css === null || typeof css === \"undefined\" || typeof css === \"object\" && !css.toString) {\n throw new Error(`PostCSS received ${css} instead of CSS string`);\n }\n this.css = css.toString();\n if (this.css[0] === \"\\uFEFF\" || this.css[0] === \"￾\") {\n this.hasBOM = true;\n this.css = this.css.slice(1);\n } else {\n this.hasBOM = false;\n }\n if (opts.from) {\n if (!pathAvailable$1 || /^\\w+:\\/\\//.test(opts.from) || isAbsolute(opts.from)) {\n this.file = opts.from;\n } else {\n this.file = resolve$1(opts.from);\n }\n }\n if (pathAvailable$1 && sourceMapAvailable$1) {\n let map = new PreviousMap$1(this.css, opts);\n if (map.text) {\n this.map = map;\n let file = map.consumer().file;\n if (!this.file && file) this.file = this.mapResolve(file);\n }\n }\n if (!this.file) {\n this.id = \"\";\n }\n if (this.map) this.map.file = this.from;\n }\n error(message, line, column, opts = {}) {\n let result2, endLine, endColumn;\n if (line && typeof line === \"object\") {\n let start = line;\n let end = column;\n if (typeof start.offset === \"number\") {\n let pos = this.fromOffset(start.offset);\n line = pos.line;\n column = pos.col;\n } else {\n line = start.line;\n column = start.column;\n }\n if (typeof end.offset === \"number\") {\n let pos = this.fromOffset(end.offset);\n endLine = pos.line;\n endColumn = pos.col;\n } else {\n endLine = end.line;\n endColumn = end.column;\n }\n } else if (!column) {\n let pos = this.fromOffset(line);\n line = pos.line;\n column = pos.col;\n }\n let origin = this.origin(line, column, endLine, endColumn);\n if (origin) {\n result2 = new CssSyntaxError$1(\n message,\n origin.endLine === void 0 ? origin.line : { column: origin.column, line: origin.line },\n origin.endLine === void 0 ? origin.column : { column: origin.endColumn, line: origin.endLine },\n origin.source,\n origin.file,\n opts.plugin\n );\n } else {\n result2 = new CssSyntaxError$1(\n message,\n endLine === void 0 ? line : { column, line },\n endLine === void 0 ? column : { column: endColumn, line: endLine },\n this.css,\n this.file,\n opts.plugin\n );\n }\n result2.input = { column, endColumn, endLine, line, source: this.css };\n if (this.file) {\n if (pathToFileURL$1) {\n result2.input.url = pathToFileURL$1(this.file).toString();\n }\n result2.input.file = this.file;\n }\n return result2;\n }\n fromOffset(offset) {\n let lastLine, lineToIndex;\n if (!this[fromOffsetCache]) {\n let lines = this.css.split(\"\\n\");\n lineToIndex = new Array(lines.length);\n let prevIndex = 0;\n for (let i2 = 0, l2 = lines.length; i2 < l2; i2++) {\n lineToIndex[i2] = prevIndex;\n prevIndex += lines[i2].length + 1;\n }\n this[fromOffsetCache] = lineToIndex;\n } else {\n lineToIndex = this[fromOffsetCache];\n }\n lastLine = lineToIndex[lineToIndex.length - 1];\n let min = 0;\n if (offset >= lastLine) {\n min = lineToIndex.length - 1;\n } else {\n let max = lineToIndex.length - 2;\n let mid;\n while (min < max) {\n mid = min + (max - min >> 1);\n if (offset < lineToIndex[mid]) {\n max = mid - 1;\n } else if (offset >= lineToIndex[mid + 1]) {\n min = mid + 1;\n } else {\n min = mid;\n break;\n }\n }\n }\n return {\n col: offset - lineToIndex[min] + 1,\n line: min + 1\n };\n }\n mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file;\n }\n return resolve$1(this.map.consumer().sourceRoot || this.map.root || \".\", file);\n }\n origin(line, column, endLine, endColumn) {\n if (!this.map) return false;\n let consumer = this.map.consumer();\n let from = consumer.originalPositionFor({ column, line });\n if (!from.source) return false;\n let to;\n if (typeof endLine === \"number\") {\n to = consumer.originalPositionFor({ column: endColumn, line: endLine });\n }\n let fromUrl;\n if (isAbsolute(from.source)) {\n fromUrl = pathToFileURL$1(from.source);\n } else {\n fromUrl = new URL(\n from.source,\n this.map.consumer().sourceRoot || pathToFileURL$1(this.map.mapFile)\n );\n }\n let result2 = {\n column: from.column,\n endColumn: to && to.column,\n endLine: to && to.line,\n line: from.line,\n url: fromUrl.toString()\n };\n if (fromUrl.protocol === \"file:\") {\n if (fileURLToPath) {\n result2.file = fileURLToPath(fromUrl);\n } else {\n throw new Error(`file: protocol is not available in this PostCSS build`);\n }\n }\n let source = consumer.sourceContentFor(from.source);\n if (source) result2.source = source;\n return result2;\n }\n toJSON() {\n let json = {};\n for (let name of [\"hasBOM\", \"css\", \"file\", \"id\"]) {\n if (this[name] != null) {\n json[name] = this[name];\n }\n }\n if (this.map) {\n json.map = { ...this.map };\n if (json.map.consumerCache) {\n json.map.consumerCache = void 0;\n }\n }\n return json;\n }\n get from() {\n return this.file || this.id;\n }\n};\nvar input = Input$4;\nInput$4.default = Input$4;\nif (terminalHighlight && terminalHighlight.registerInput) {\n terminalHighlight.registerInput(Input$4);\n}\nlet { SourceMapConsumer, SourceMapGenerator } = require$$2;\nlet { dirname, relative, resolve, sep } = require$$2;\nlet { pathToFileURL } = require$$2;\nlet Input$3 = input;\nlet sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator);\nlet pathAvailable = Boolean(dirname && resolve && relative && sep);\nlet MapGenerator$2 = class MapGenerator2 {\n constructor(stringify2, root2, opts, cssString) {\n this.stringify = stringify2;\n this.mapOpts = opts.map || {};\n this.root = root2;\n this.opts = opts;\n this.css = cssString;\n this.originalCSS = cssString;\n this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute;\n this.memoizedFileURLs = /* @__PURE__ */ new Map();\n this.memoizedPaths = /* @__PURE__ */ new Map();\n this.memoizedURLs = /* @__PURE__ */ new Map();\n }\n addAnnotation() {\n let content;\n if (this.isInline()) {\n content = \"data:application/json;base64,\" + this.toBase64(this.map.toString());\n } else if (typeof this.mapOpts.annotation === \"string\") {\n content = this.mapOpts.annotation;\n } else if (typeof this.mapOpts.annotation === \"function\") {\n content = this.mapOpts.annotation(this.opts.to, this.root);\n } else {\n content = this.outputFile() + \".map\";\n }\n let eol = \"\\n\";\n if (this.css.includes(\"\\r\\n\")) eol = \"\\r\\n\";\n this.css += eol + \"/*# sourceMappingURL=\" + content + \" */\";\n }\n applyPrevMaps() {\n for (let prev of this.previous()) {\n let from = this.toUrl(this.path(prev.file));\n let root2 = prev.root || dirname(prev.file);\n let map;\n if (this.mapOpts.sourcesContent === false) {\n map = new SourceMapConsumer(prev.text);\n if (map.sourcesContent) {\n map.sourcesContent = null;\n }\n } else {\n map = prev.consumer();\n }\n this.map.applySourceMap(map, from, this.toUrl(this.path(root2)));\n }\n }\n clearAnnotation() {\n if (this.mapOpts.annotation === false) return;\n if (this.root) {\n let node2;\n for (let i2 = this.root.nodes.length - 1; i2 >= 0; i2--) {\n node2 = this.root.nodes[i2];\n if (node2.type !== \"comment\") continue;\n if (node2.text.indexOf(\"# sourceMappingURL=\") === 0) {\n this.root.removeChild(i2);\n }\n }\n } else if (this.css) {\n this.css = this.css.replace(/\\n*?\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\");\n }\n }\n generate() {\n this.clearAnnotation();\n if (pathAvailable && sourceMapAvailable && this.isMap()) {\n return this.generateMap();\n } else {\n let result2 = \"\";\n this.stringify(this.root, (i2) => {\n result2 += i2;\n });\n return [result2];\n }\n }\n generateMap() {\n if (this.root) {\n this.generateString();\n } else if (this.previous().length === 1) {\n let prev = this.previous()[0].consumer();\n prev.file = this.outputFile();\n this.map = SourceMapGenerator.fromSourceMap(prev, {\n ignoreInvalidMapping: true\n });\n } else {\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n this.map.addMapping({\n generated: { column: 0, line: 1 },\n original: { column: 0, line: 1 },\n source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\"\n });\n }\n if (this.isSourcesContent()) this.setSourcesContent();\n if (this.root && this.previous().length > 0) this.applyPrevMaps();\n if (this.isAnnotation()) this.addAnnotation();\n if (this.isInline()) {\n return [this.css];\n } else {\n return [this.css, this.map];\n }\n }\n generateString() {\n this.css = \"\";\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n let line = 1;\n let column = 1;\n let noSource = \"\";\n let mapping = {\n generated: { column: 0, line: 0 },\n original: { column: 0, line: 0 },\n source: \"\"\n };\n let lines, last;\n this.stringify(this.root, (str, node2, type) => {\n this.css += str;\n if (node2 && type !== \"end\") {\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n if (node2.source && node2.source.start) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.start.line;\n mapping.original.column = node2.source.start.column - 1;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n this.map.addMapping(mapping);\n }\n }\n lines = str.match(/\\n/g);\n if (lines) {\n line += lines.length;\n last = str.lastIndexOf(\"\\n\");\n column = str.length - last;\n } else {\n column += str.length;\n }\n if (node2 && type !== \"start\") {\n let p = node2.parent || { raws: {} };\n let childless = node2.type === \"decl\" || node2.type === \"atrule\" && !node2.nodes;\n if (!childless || node2 !== p.last || p.raws.semicolon) {\n if (node2.source && node2.source.end) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.end.line;\n mapping.original.column = node2.source.end.column - 1;\n mapping.generated.line = line;\n mapping.generated.column = column - 2;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n this.map.addMapping(mapping);\n }\n }\n }\n });\n }\n isAnnotation() {\n if (this.isInline()) {\n return true;\n }\n if (typeof this.mapOpts.annotation !== \"undefined\") {\n return this.mapOpts.annotation;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.annotation);\n }\n return true;\n }\n isInline() {\n if (typeof this.mapOpts.inline !== \"undefined\") {\n return this.mapOpts.inline;\n }\n let annotation = this.mapOpts.annotation;\n if (typeof annotation !== \"undefined\" && annotation !== true) {\n return false;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.inline);\n }\n return true;\n }\n isMap() {\n if (typeof this.opts.map !== \"undefined\") {\n return !!this.opts.map;\n }\n return this.previous().length > 0;\n }\n isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== \"undefined\") {\n return this.mapOpts.sourcesContent;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.withContent());\n }\n return true;\n }\n outputFile() {\n if (this.opts.to) {\n return this.path(this.opts.to);\n } else if (this.opts.from) {\n return this.path(this.opts.from);\n } else {\n return \"to.css\";\n }\n }\n path(file) {\n if (this.mapOpts.absolute) return file;\n if (file.charCodeAt(0) === 60) return file;\n if (/^\\w+:\\/\\//.test(file)) return file;\n let cached = this.memoizedPaths.get(file);\n if (cached) return cached;\n let from = this.opts.to ? dirname(this.opts.to) : \".\";\n if (typeof this.mapOpts.annotation === \"string\") {\n from = dirname(resolve(from, this.mapOpts.annotation));\n }\n let path = relative(from, file);\n this.memoizedPaths.set(file, path);\n return path;\n }\n previous() {\n if (!this.previousMaps) {\n this.previousMaps = [];\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source && node2.source.input.map) {\n let map = node2.source.input.map;\n if (!this.previousMaps.includes(map)) {\n this.previousMaps.push(map);\n }\n }\n });\n } else {\n let input2 = new Input$3(this.originalCSS, this.opts);\n if (input2.map) this.previousMaps.push(input2.map);\n }\n }\n return this.previousMaps;\n }\n setSourcesContent() {\n let already = {};\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source) {\n let from = node2.source.input.from;\n if (from && !already[from]) {\n already[from] = true;\n let fromUrl = this.usesFileUrls ? this.toFileUrl(from) : this.toUrl(this.path(from));\n this.map.setSourceContent(fromUrl, node2.source.input.css);\n }\n }\n });\n } else if (this.css) {\n let from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\";\n this.map.setSourceContent(from, this.css);\n }\n }\n sourcePath(node2) {\n if (this.mapOpts.from) {\n return this.toUrl(this.mapOpts.from);\n } else if (this.usesFileUrls) {\n return this.toFileUrl(node2.source.input.from);\n } else {\n return this.toUrl(this.path(node2.source.input.from));\n }\n }\n toBase64(str) {\n if (Buffer) {\n return Buffer.from(str).toString(\"base64\");\n } else {\n return window.btoa(unescape(encodeURIComponent(str)));\n }\n }\n toFileUrl(path) {\n let cached = this.memoizedFileURLs.get(path);\n if (cached) return cached;\n if (pathToFileURL) {\n let fileURL = pathToFileURL(path).toString();\n this.memoizedFileURLs.set(path, fileURL);\n return fileURL;\n } else {\n throw new Error(\n \"`map.absolute` option is not available in this PostCSS build\"\n );\n }\n }\n toUrl(path) {\n let cached = this.memoizedURLs.get(path);\n if (cached) return cached;\n if (sep === \"\\\\\") {\n path = path.replace(/\\\\/g, \"/\");\n }\n let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent);\n this.memoizedURLs.set(path, url);\n return url;\n }\n};\nvar mapGenerator = MapGenerator$2;\nlet Node$2 = node;\nlet Comment$4 = class Comment2 extends Node$2 {\n constructor(defaults) {\n super(defaults);\n this.type = \"comment\";\n }\n};\nvar comment = Comment$4;\nComment$4.default = Comment$4;\nlet { isClean: isClean$1, my: my$1 } = symbols;\nlet Declaration$3 = declaration;\nlet Comment$3 = comment;\nlet Node$1 = node;\nlet parse$4, Rule$4, AtRule$4, Root$6;\nfunction cleanSource(nodes) {\n return nodes.map((i2) => {\n if (i2.nodes) i2.nodes = cleanSource(i2.nodes);\n delete i2.source;\n return i2;\n });\n}\nfunction markDirtyUp(node2) {\n node2[isClean$1] = false;\n if (node2.proxyOf.nodes) {\n for (let i2 of node2.proxyOf.nodes) {\n markDirtyUp(i2);\n }\n }\n}\nlet Container$7 = class Container2 extends Node$1 {\n append(...children) {\n for (let child of children) {\n let nodes = this.normalize(child, this.last);\n for (let node2 of nodes) this.proxyOf.nodes.push(node2);\n }\n this.markDirty();\n return this;\n }\n cleanRaws(keepBetween) {\n super.cleanRaws(keepBetween);\n if (this.nodes) {\n for (let node2 of this.nodes) node2.cleanRaws(keepBetween);\n }\n }\n each(callback) {\n if (!this.proxyOf.nodes) return void 0;\n let iterator = this.getIterator();\n let index2, result2;\n while (this.indexes[iterator] < this.proxyOf.nodes.length) {\n index2 = this.indexes[iterator];\n result2 = callback(this.proxyOf.nodes[index2], index2);\n if (result2 === false) break;\n this.indexes[iterator] += 1;\n }\n delete this.indexes[iterator];\n return result2;\n }\n every(condition) {\n return this.nodes.every(condition);\n }\n getIterator() {\n if (!this.lastEach) this.lastEach = 0;\n if (!this.indexes) this.indexes = {};\n this.lastEach += 1;\n let iterator = this.lastEach;\n this.indexes[iterator] = 0;\n return iterator;\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (!node2[prop]) {\n return node2[prop];\n } else if (prop === \"each\" || typeof prop === \"string\" && prop.startsWith(\"walk\")) {\n return (...args) => {\n return node2[prop](\n ...args.map((i2) => {\n if (typeof i2 === \"function\") {\n return (child, index2) => i2(child.toProxy(), index2);\n } else {\n return i2;\n }\n })\n );\n };\n } else if (prop === \"every\" || prop === \"some\") {\n return (cb) => {\n return node2[prop](\n (child, ...other) => cb(child.toProxy(), ...other)\n );\n };\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else if (prop === \"nodes\") {\n return node2.nodes.map((i2) => i2.toProxy());\n } else if (prop === \"first\" || prop === \"last\") {\n return node2[prop].toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"name\" || prop === \"params\" || prop === \"selector\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n index(child) {\n if (typeof child === \"number\") return child;\n if (child.proxyOf) child = child.proxyOf;\n return this.proxyOf.nodes.indexOf(child);\n }\n insertAfter(exist, add) {\n let existIndex = this.index(exist);\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex < index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n insertBefore(exist, add) {\n let existIndex = this.index(exist);\n let type = existIndex === 0 ? \"prepend\" : false;\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex <= index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n normalize(nodes, sample) {\n if (typeof nodes === \"string\") {\n nodes = cleanSource(parse$4(nodes).nodes);\n } else if (typeof nodes === \"undefined\") {\n nodes = [];\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type === \"root\" && this.type !== \"document\") {\n nodes = nodes.nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type) {\n nodes = [nodes];\n } else if (nodes.prop) {\n if (typeof nodes.value === \"undefined\") {\n throw new Error(\"Value field is missed in node creation\");\n } else if (typeof nodes.value !== \"string\") {\n nodes.value = String(nodes.value);\n }\n nodes = [new Declaration$3(nodes)];\n } else if (nodes.selector) {\n nodes = [new Rule$4(nodes)];\n } else if (nodes.name) {\n nodes = [new AtRule$4(nodes)];\n } else if (nodes.text) {\n nodes = [new Comment$3(nodes)];\n } else {\n throw new Error(\"Unknown node type in node creation\");\n }\n let processed = nodes.map((i2) => {\n if (!i2[my$1]) Container2.rebuild(i2);\n i2 = i2.proxyOf;\n if (i2.parent) i2.parent.removeChild(i2);\n if (i2[isClean$1]) markDirtyUp(i2);\n if (typeof i2.raws.before === \"undefined\") {\n if (sample && typeof sample.raws.before !== \"undefined\") {\n i2.raws.before = sample.raws.before.replace(/\\S/g, \"\");\n }\n }\n i2.parent = this.proxyOf;\n return i2;\n });\n return processed;\n }\n prepend(...children) {\n children = children.reverse();\n for (let child of children) {\n let nodes = this.normalize(child, this.first, \"prepend\").reverse();\n for (let node2 of nodes) this.proxyOf.nodes.unshift(node2);\n for (let id in this.indexes) {\n this.indexes[id] = this.indexes[id] + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n push(child) {\n child.parent = this;\n this.proxyOf.nodes.push(child);\n return this;\n }\n removeAll() {\n for (let node2 of this.proxyOf.nodes) node2.parent = void 0;\n this.proxyOf.nodes = [];\n this.markDirty();\n return this;\n }\n removeChild(child) {\n child = this.index(child);\n this.proxyOf.nodes[child].parent = void 0;\n this.proxyOf.nodes.splice(child, 1);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (index2 >= child) {\n this.indexes[id] = index2 - 1;\n }\n }\n this.markDirty();\n return this;\n }\n replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {};\n }\n this.walkDecls((decl) => {\n if (opts.props && !opts.props.includes(decl.prop)) return;\n if (opts.fast && !decl.value.includes(opts.fast)) return;\n decl.value = decl.value.replace(pattern, callback);\n });\n this.markDirty();\n return this;\n }\n some(condition) {\n return this.nodes.some(condition);\n }\n walk(callback) {\n return this.each((child, i2) => {\n let result2;\n try {\n result2 = callback(child, i2);\n } catch (e2) {\n throw child.addToError(e2);\n }\n if (result2 !== false && child.walk) {\n result2 = child.walk(callback);\n }\n return result2;\n });\n }\n walkAtRules(name, callback) {\n if (!callback) {\n callback = name;\n return this.walk((child, i2) => {\n if (child.type === \"atrule\") {\n return callback(child, i2);\n }\n });\n }\n if (name instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && name.test(child.name)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && child.name === name) {\n return callback(child, i2);\n }\n });\n }\n walkComments(callback) {\n return this.walk((child, i2) => {\n if (child.type === \"comment\") {\n return callback(child, i2);\n }\n });\n }\n walkDecls(prop, callback) {\n if (!callback) {\n callback = prop;\n return this.walk((child, i2) => {\n if (child.type === \"decl\") {\n return callback(child, i2);\n }\n });\n }\n if (prop instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && prop.test(child.prop)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && child.prop === prop) {\n return callback(child, i2);\n }\n });\n }\n walkRules(selector, callback) {\n if (!callback) {\n callback = selector;\n return this.walk((child, i2) => {\n if (child.type === \"rule\") {\n return callback(child, i2);\n }\n });\n }\n if (selector instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && selector.test(child.selector)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && child.selector === selector) {\n return callback(child, i2);\n }\n });\n }\n get first() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[0];\n }\n get last() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n }\n};\nContainer$7.registerParse = (dependant) => {\n parse$4 = dependant;\n};\nContainer$7.registerRule = (dependant) => {\n Rule$4 = dependant;\n};\nContainer$7.registerAtRule = (dependant) => {\n AtRule$4 = dependant;\n};\nContainer$7.registerRoot = (dependant) => {\n Root$6 = dependant;\n};\nvar container = Container$7;\nContainer$7.default = Container$7;\nContainer$7.rebuild = (node2) => {\n if (node2.type === \"atrule\") {\n Object.setPrototypeOf(node2, AtRule$4.prototype);\n } else if (node2.type === \"rule\") {\n Object.setPrototypeOf(node2, Rule$4.prototype);\n } else if (node2.type === \"decl\") {\n Object.setPrototypeOf(node2, Declaration$3.prototype);\n } else if (node2.type === \"comment\") {\n Object.setPrototypeOf(node2, Comment$3.prototype);\n } else if (node2.type === \"root\") {\n Object.setPrototypeOf(node2, Root$6.prototype);\n }\n node2[my$1] = true;\n if (node2.nodes) {\n node2.nodes.forEach((child) => {\n Container$7.rebuild(child);\n });\n }\n};\nlet Container$6 = container;\nlet LazyResult$4, Processor$3;\nlet Document$3 = class Document23 extends Container$6 {\n constructor(defaults) {\n super({ type: \"document\", ...defaults });\n if (!this.nodes) {\n this.nodes = [];\n }\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$4(new Processor$3(), this, opts);\n return lazy.stringify();\n }\n};\nDocument$3.registerLazyResult = (dependant) => {\n LazyResult$4 = dependant;\n};\nDocument$3.registerProcessor = (dependant) => {\n Processor$3 = dependant;\n};\nvar document$1 = Document$3;\nDocument$3.default = Document$3;\nlet printed = {};\nvar warnOnce$2 = function warnOnce2(message) {\n if (printed[message]) return;\n printed[message] = true;\n if (typeof console !== \"undefined\" && console.warn) {\n console.warn(message);\n }\n};\nlet Warning$2 = class Warning2 {\n constructor(text, opts = {}) {\n this.type = \"warning\";\n this.text = text;\n if (opts.node && opts.node.source) {\n let range = opts.node.rangeBy(opts);\n this.line = range.start.line;\n this.column = range.start.column;\n this.endLine = range.end.line;\n this.endColumn = range.end.column;\n }\n for (let opt in opts) this[opt] = opts[opt];\n }\n toString() {\n if (this.node) {\n return this.node.error(this.text, {\n index: this.index,\n plugin: this.plugin,\n word: this.word\n }).message;\n }\n if (this.plugin) {\n return this.plugin + \": \" + this.text;\n }\n return this.text;\n }\n};\nvar warning = Warning$2;\nWarning$2.default = Warning$2;\nlet Warning$1 = warning;\nlet Result$3 = class Result2 {\n constructor(processor2, root2, opts) {\n this.processor = processor2;\n this.messages = [];\n this.root = root2;\n this.opts = opts;\n this.css = void 0;\n this.map = void 0;\n }\n toString() {\n return this.css;\n }\n warn(text, opts = {}) {\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin;\n }\n }\n let warning2 = new Warning$1(text, opts);\n this.messages.push(warning2);\n return warning2;\n }\n warnings() {\n return this.messages.filter((i2) => i2.type === \"warning\");\n }\n get content() {\n return this.css;\n }\n};\nvar result = Result$3;\nResult$3.default = Result$3;\nconst SINGLE_QUOTE = \"'\".charCodeAt(0);\nconst DOUBLE_QUOTE = '\"'.charCodeAt(0);\nconst BACKSLASH = \"\\\\\".charCodeAt(0);\nconst SLASH = \"/\".charCodeAt(0);\nconst NEWLINE = \"\\n\".charCodeAt(0);\nconst SPACE = \" \".charCodeAt(0);\nconst FEED = \"\\f\".charCodeAt(0);\nconst TAB = \"\t\".charCodeAt(0);\nconst CR = \"\\r\".charCodeAt(0);\nconst OPEN_SQUARE = \"[\".charCodeAt(0);\nconst CLOSE_SQUARE = \"]\".charCodeAt(0);\nconst OPEN_PARENTHESES = \"(\".charCodeAt(0);\nconst CLOSE_PARENTHESES = \")\".charCodeAt(0);\nconst OPEN_CURLY = \"{\".charCodeAt(0);\nconst CLOSE_CURLY = \"}\".charCodeAt(0);\nconst SEMICOLON = \";\".charCodeAt(0);\nconst ASTERISK = \"*\".charCodeAt(0);\nconst COLON = \":\".charCodeAt(0);\nconst AT = \"@\".charCodeAt(0);\nconst RE_AT_END = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g;\nconst RE_WORD_END = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g;\nconst RE_BAD_BRACKET = /.[\\r\\n\"'(/\\\\]/;\nconst RE_HEX_ESCAPE = /[\\da-f]/i;\nvar tokenize = function tokenizer2(input2, options = {}) {\n let css = input2.css.valueOf();\n let ignore = options.ignoreErrors;\n let code, next, quote, content, escape;\n let escaped, escapePos, prev, n2, currentToken;\n let length = css.length;\n let pos = 0;\n let buffer = [];\n let returned = [];\n function position() {\n return pos;\n }\n function unclosed(what) {\n throw input2.error(\"Unclosed \" + what, pos);\n }\n function endOfFile() {\n return returned.length === 0 && pos >= length;\n }\n function nextToken(opts) {\n if (returned.length) return returned.pop();\n if (pos >= length) return;\n let ignoreUnclosed = opts ? opts.ignoreUnclosed : false;\n code = css.charCodeAt(pos);\n switch (code) {\n case NEWLINE:\n case SPACE:\n case TAB:\n case CR:\n case FEED: {\n next = pos;\n do {\n next += 1;\n code = css.charCodeAt(next);\n } while (code === SPACE || code === NEWLINE || code === TAB || code === CR || code === FEED);\n currentToken = [\"space\", css.slice(pos, next)];\n pos = next - 1;\n break;\n }\n case OPEN_SQUARE:\n case CLOSE_SQUARE:\n case OPEN_CURLY:\n case CLOSE_CURLY:\n case COLON:\n case SEMICOLON:\n case CLOSE_PARENTHESES: {\n let controlChar = String.fromCharCode(code);\n currentToken = [controlChar, controlChar, pos];\n break;\n }\n case OPEN_PARENTHESES: {\n prev = buffer.length ? buffer.pop()[1] : \"\";\n n2 = css.charCodeAt(pos + 1);\n if (prev === \"url\" && n2 !== SINGLE_QUOTE && n2 !== DOUBLE_QUOTE && n2 !== SPACE && n2 !== NEWLINE && n2 !== TAB && n2 !== FEED && n2 !== CR) {\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(\")\", next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos;\n break;\n } else {\n unclosed(\"bracket\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"brackets\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n next = css.indexOf(\")\", pos + 1);\n content = css.slice(pos, next + 1);\n if (next === -1 || RE_BAD_BRACKET.test(content)) {\n currentToken = [\"(\", \"(\", pos];\n } else {\n currentToken = [\"brackets\", content, pos, next];\n pos = next;\n }\n }\n break;\n }\n case SINGLE_QUOTE:\n case DOUBLE_QUOTE: {\n quote = code === SINGLE_QUOTE ? \"'\" : '\"';\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(quote, next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos + 1;\n break;\n } else {\n unclosed(\"string\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"string\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case AT: {\n RE_AT_END.lastIndex = pos + 1;\n RE_AT_END.test(css);\n if (RE_AT_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_AT_END.lastIndex - 2;\n }\n currentToken = [\"at-word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case BACKSLASH: {\n next = pos;\n escape = true;\n while (css.charCodeAt(next + 1) === BACKSLASH) {\n next += 1;\n escape = !escape;\n }\n code = css.charCodeAt(next + 1);\n if (escape && code !== SLASH && code !== SPACE && code !== NEWLINE && code !== TAB && code !== CR && code !== FEED) {\n next += 1;\n if (RE_HEX_ESCAPE.test(css.charAt(next))) {\n while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {\n next += 1;\n }\n if (css.charCodeAt(next + 1) === SPACE) {\n next += 1;\n }\n }\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n default: {\n if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {\n next = css.indexOf(\"*/\", pos + 2) + 1;\n if (next === 0) {\n if (ignore || ignoreUnclosed) {\n next = css.length;\n } else {\n unclosed(\"comment\");\n }\n }\n currentToken = [\"comment\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n RE_WORD_END.lastIndex = pos + 1;\n RE_WORD_END.test(css);\n if (RE_WORD_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_WORD_END.lastIndex - 2;\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n buffer.push(currentToken);\n pos = next;\n }\n break;\n }\n }\n pos++;\n return currentToken;\n }\n function back(token) {\n returned.push(token);\n }\n return {\n back,\n endOfFile,\n nextToken,\n position\n };\n};\nlet Container$5 = container;\nlet AtRule$3 = class AtRule2 extends Container$5 {\n constructor(defaults) {\n super(defaults);\n this.type = \"atrule\";\n }\n append(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.append(...children);\n }\n prepend(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.prepend(...children);\n }\n};\nvar atRule = AtRule$3;\nAtRule$3.default = AtRule$3;\nContainer$5.registerAtRule(AtRule$3);\nlet Container$4 = container;\nlet LazyResult$3, Processor$2;\nlet Root$5 = class Root2 extends Container$4 {\n constructor(defaults) {\n super(defaults);\n this.type = \"root\";\n if (!this.nodes) this.nodes = [];\n }\n normalize(child, sample, type) {\n let nodes = super.normalize(child);\n if (sample) {\n if (type === \"prepend\") {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before;\n } else {\n delete sample.raws.before;\n }\n } else if (this.first !== sample) {\n for (let node2 of nodes) {\n node2.raws.before = sample.raws.before;\n }\n }\n }\n return nodes;\n }\n removeChild(child, ignore) {\n let index2 = this.index(child);\n if (!ignore && index2 === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index2].raws.before;\n }\n return super.removeChild(child);\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$3(new Processor$2(), this, opts);\n return lazy.stringify();\n }\n};\nRoot$5.registerLazyResult = (dependant) => {\n LazyResult$3 = dependant;\n};\nRoot$5.registerProcessor = (dependant) => {\n Processor$2 = dependant;\n};\nvar root = Root$5;\nRoot$5.default = Root$5;\nContainer$4.registerRoot(Root$5);\nlet list$2 = {\n comma(string) {\n return list$2.split(string, [\",\"], true);\n },\n space(string) {\n let spaces = [\" \", \"\\n\", \"\t\"];\n return list$2.split(string, spaces);\n },\n split(string, separators, last) {\n let array = [];\n let current = \"\";\n let split = false;\n let func = 0;\n let inQuote = false;\n let prevQuote = \"\";\n let escape = false;\n for (let letter of string) {\n if (escape) {\n escape = false;\n } else if (letter === \"\\\\\") {\n escape = true;\n } else if (inQuote) {\n if (letter === prevQuote) {\n inQuote = false;\n }\n } else if (letter === '\"' || letter === \"'\") {\n inQuote = true;\n prevQuote = letter;\n } else if (letter === \"(\") {\n func += 1;\n } else if (letter === \")\") {\n if (func > 0) func -= 1;\n } else if (func === 0) {\n if (separators.includes(letter)) split = true;\n }\n if (split) {\n if (current !== \"\") array.push(current.trim());\n current = \"\";\n split = false;\n } else {\n current += letter;\n }\n }\n if (last || current !== \"\") array.push(current.trim());\n return array;\n }\n};\nvar list_1 = list$2;\nlist$2.default = list$2;\nlet Container$3 = container;\nlet list$1 = list_1;\nlet Rule$3 = class Rule2 extends Container$3 {\n constructor(defaults) {\n super(defaults);\n this.type = \"rule\";\n if (!this.nodes) this.nodes = [];\n }\n get selectors() {\n return list$1.comma(this.selector);\n }\n set selectors(values) {\n let match = this.selector ? this.selector.match(/,\\s*/) : null;\n let sep2 = match ? match[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n this.selector = values.join(sep2);\n }\n};\nvar rule = Rule$3;\nRule$3.default = Rule$3;\nContainer$3.registerRule(Rule$3);\nlet Declaration$2 = declaration;\nlet tokenizer22 = tokenize;\nlet Comment$2 = comment;\nlet AtRule$2 = atRule;\nlet Root$4 = root;\nlet Rule$2 = rule;\nconst SAFE_COMMENT_NEIGHBOR = {\n empty: true,\n space: true\n};\nfunction findLastWithPosition(tokens) {\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n let token = tokens[i2];\n let pos = token[3] || token[2];\n if (pos) return pos;\n }\n}\nlet Parser$1 = class Parser2 {\n constructor(input2) {\n this.input = input2;\n this.root = new Root$4();\n this.current = this.root;\n this.spaces = \"\";\n this.semicolon = false;\n this.createTokenizer();\n this.root.source = { input: input2, start: { column: 1, line: 1, offset: 0 } };\n }\n atrule(token) {\n let node2 = new AtRule$2();\n node2.name = token[1].slice(1);\n if (node2.name === \"\") {\n this.unnamedAtrule(node2, token);\n }\n this.init(node2, token[2]);\n let type;\n let prev;\n let shift;\n let last = false;\n let open = false;\n let params = [];\n let brackets = [];\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n type = token[0];\n if (type === \"(\" || type === \"[\") {\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (type === \"{\" && brackets.length > 0) {\n brackets.push(\"}\");\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n }\n if (brackets.length === 0) {\n if (type === \";\") {\n node2.source.end = this.getPosition(token[2]);\n node2.source.end.offset++;\n this.semicolon = true;\n break;\n } else if (type === \"{\") {\n open = true;\n break;\n } else if (type === \"}\") {\n if (params.length > 0) {\n shift = params.length - 1;\n prev = params[shift];\n while (prev && prev[0] === \"space\") {\n prev = params[--shift];\n }\n if (prev) {\n node2.source.end = this.getPosition(prev[3] || prev[2]);\n node2.source.end.offset++;\n }\n }\n this.end(token);\n break;\n } else {\n params.push(token);\n }\n } else {\n params.push(token);\n }\n if (this.tokenizer.endOfFile()) {\n last = true;\n break;\n }\n }\n node2.raws.between = this.spacesAndCommentsFromEnd(params);\n if (params.length) {\n node2.raws.afterName = this.spacesAndCommentsFromStart(params);\n this.raw(node2, \"params\", params);\n if (last) {\n token = params[params.length - 1];\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n this.spaces = node2.raws.between;\n node2.raws.between = \"\";\n }\n } else {\n node2.raws.afterName = \"\";\n node2.params = \"\";\n }\n if (open) {\n node2.nodes = [];\n this.current = node2;\n }\n }\n checkMissedSemicolon(tokens) {\n let colon = this.colon(tokens);\n if (colon === false) return;\n let founded = 0;\n let token;\n for (let j = colon - 1; j >= 0; j--) {\n token = tokens[j];\n if (token[0] !== \"space\") {\n founded += 1;\n if (founded === 2) break;\n }\n }\n throw this.input.error(\n \"Missed semicolon\",\n token[0] === \"word\" ? token[3] + 1 : token[2]\n );\n }\n colon(tokens) {\n let brackets = 0;\n let token, type, prev;\n for (let [i2, element] of tokens.entries()) {\n token = element;\n type = token[0];\n if (type === \"(\") {\n brackets += 1;\n }\n if (type === \")\") {\n brackets -= 1;\n }\n if (brackets === 0 && type === \":\") {\n if (!prev) {\n this.doubleColon(token);\n } else if (prev[0] === \"word\" && prev[1] === \"progid\") {\n continue;\n } else {\n return i2;\n }\n }\n prev = token;\n }\n return false;\n }\n comment(token) {\n let node2 = new Comment$2();\n this.init(node2, token[2]);\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n let text = token[1].slice(2, -2);\n if (/^\\s*$/.test(text)) {\n node2.text = \"\";\n node2.raws.left = text;\n node2.raws.right = \"\";\n } else {\n let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n node2.text = match[2];\n node2.raws.left = match[1];\n node2.raws.right = match[3];\n }\n }\n createTokenizer() {\n this.tokenizer = tokenizer22(this.input);\n }\n decl(tokens, customProperty) {\n let node2 = new Declaration$2();\n this.init(node2, tokens[0][2]);\n let last = tokens[tokens.length - 1];\n if (last[0] === \";\") {\n this.semicolon = true;\n tokens.pop();\n }\n node2.source.end = this.getPosition(\n last[3] || last[2] || findLastWithPosition(tokens)\n );\n node2.source.end.offset++;\n while (tokens[0][0] !== \"word\") {\n if (tokens.length === 1) this.unknownWord(tokens);\n node2.raws.before += tokens.shift()[1];\n }\n node2.source.start = this.getPosition(tokens[0][2]);\n node2.prop = \"\";\n while (tokens.length) {\n let type = tokens[0][0];\n if (type === \":\" || type === \"space\" || type === \"comment\") {\n break;\n }\n node2.prop += tokens.shift()[1];\n }\n node2.raws.between = \"\";\n let token;\n while (tokens.length) {\n token = tokens.shift();\n if (token[0] === \":\") {\n node2.raws.between += token[1];\n break;\n } else {\n if (token[0] === \"word\" && /\\w/.test(token[1])) {\n this.unknownWord([token]);\n }\n node2.raws.between += token[1];\n }\n }\n if (node2.prop[0] === \"_\" || node2.prop[0] === \"*\") {\n node2.raws.before += node2.prop[0];\n node2.prop = node2.prop.slice(1);\n }\n let firstSpaces = [];\n let next;\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n firstSpaces.push(tokens.shift());\n }\n this.precheckMissedSemicolon(tokens);\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n token = tokens[i2];\n if (token[1].toLowerCase() === \"!important\") {\n node2.important = true;\n let string = this.stringFrom(tokens, i2);\n string = this.spacesFromEnd(tokens) + string;\n if (string !== \" !important\") node2.raws.important = string;\n break;\n } else if (token[1].toLowerCase() === \"important\") {\n let cache = tokens.slice(0);\n let str = \"\";\n for (let j = i2; j > 0; j--) {\n let type = cache[j][0];\n if (str.trim().indexOf(\"!\") === 0 && type !== \"space\") {\n break;\n }\n str = cache.pop()[1] + str;\n }\n if (str.trim().indexOf(\"!\") === 0) {\n node2.important = true;\n node2.raws.important = str;\n tokens = cache;\n }\n }\n if (token[0] !== \"space\" && token[0] !== \"comment\") {\n break;\n }\n }\n let hasWord = tokens.some((i2) => i2[0] !== \"space\" && i2[0] !== \"comment\");\n if (hasWord) {\n node2.raws.between += firstSpaces.map((i2) => i2[1]).join(\"\");\n firstSpaces = [];\n }\n this.raw(node2, \"value\", firstSpaces.concat(tokens), customProperty);\n if (node2.value.includes(\":\") && !customProperty) {\n this.checkMissedSemicolon(tokens);\n }\n }\n doubleColon(token) {\n throw this.input.error(\n \"Double colon\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n emptyRule(token) {\n let node2 = new Rule$2();\n this.init(node2, token[2]);\n node2.selector = \"\";\n node2.raws.between = \"\";\n this.current = node2;\n }\n end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.semicolon = false;\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.spaces = \"\";\n if (this.current.parent) {\n this.current.source.end = this.getPosition(token[2]);\n this.current.source.end.offset++;\n this.current = this.current.parent;\n } else {\n this.unexpectedClose(token);\n }\n }\n endFile() {\n if (this.current.parent) this.unclosedBlock();\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.root.source.end = this.getPosition(this.tokenizer.position());\n }\n freeSemicolon(token) {\n this.spaces += token[1];\n if (this.current.nodes) {\n let prev = this.current.nodes[this.current.nodes.length - 1];\n if (prev && prev.type === \"rule\" && !prev.raws.ownSemicolon) {\n prev.raws.ownSemicolon = this.spaces;\n this.spaces = \"\";\n }\n }\n }\n // Helpers\n getPosition(offset) {\n let pos = this.input.fromOffset(offset);\n return {\n column: pos.col,\n line: pos.line,\n offset\n };\n }\n init(node2, offset) {\n this.current.push(node2);\n node2.source = {\n input: this.input,\n start: this.getPosition(offset)\n };\n node2.raws.before = this.spaces;\n this.spaces = \"\";\n if (node2.type !== \"comment\") this.semicolon = false;\n }\n other(start) {\n let end = false;\n let type = null;\n let colon = false;\n let bracket = null;\n let brackets = [];\n let customProperty = start[1].startsWith(\"--\");\n let tokens = [];\n let token = start;\n while (token) {\n type = token[0];\n tokens.push(token);\n if (type === \"(\" || type === \"[\") {\n if (!bracket) bracket = token;\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (customProperty && colon && type === \"{\") {\n if (!bracket) bracket = token;\n brackets.push(\"}\");\n } else if (brackets.length === 0) {\n if (type === \";\") {\n if (colon) {\n this.decl(tokens, customProperty);\n return;\n } else {\n break;\n }\n } else if (type === \"{\") {\n this.rule(tokens);\n return;\n } else if (type === \"}\") {\n this.tokenizer.back(tokens.pop());\n end = true;\n break;\n } else if (type === \":\") {\n colon = true;\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n if (brackets.length === 0) bracket = null;\n }\n token = this.tokenizer.nextToken();\n }\n if (this.tokenizer.endOfFile()) end = true;\n if (brackets.length > 0) this.unclosedBracket(bracket);\n if (end && colon) {\n if (!customProperty) {\n while (tokens.length) {\n token = tokens[tokens.length - 1][0];\n if (token !== \"space\" && token !== \"comment\") break;\n this.tokenizer.back(tokens.pop());\n }\n }\n this.decl(tokens, customProperty);\n } else {\n this.unknownWord(tokens);\n }\n }\n parse() {\n let token;\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n switch (token[0]) {\n case \"space\":\n this.spaces += token[1];\n break;\n case \";\":\n this.freeSemicolon(token);\n break;\n case \"}\":\n this.end(token);\n break;\n case \"comment\":\n this.comment(token);\n break;\n case \"at-word\":\n this.atrule(token);\n break;\n case \"{\":\n this.emptyRule(token);\n break;\n default:\n this.other(token);\n break;\n }\n }\n this.endFile();\n }\n precheckMissedSemicolon() {\n }\n raw(node2, prop, tokens, customProperty) {\n let token, type;\n let length = tokens.length;\n let value = \"\";\n let clean = true;\n let next, prev;\n for (let i2 = 0; i2 < length; i2 += 1) {\n token = tokens[i2];\n type = token[0];\n if (type === \"space\" && i2 === length - 1 && !customProperty) {\n clean = false;\n } else if (type === \"comment\") {\n prev = tokens[i2 - 1] ? tokens[i2 - 1][0] : \"empty\";\n next = tokens[i2 + 1] ? tokens[i2 + 1][0] : \"empty\";\n if (!SAFE_COMMENT_NEIGHBOR[prev] && !SAFE_COMMENT_NEIGHBOR[next]) {\n if (value.slice(-1) === \",\") {\n clean = false;\n } else {\n value += token[1];\n }\n } else {\n clean = false;\n }\n } else {\n value += token[1];\n }\n }\n if (!clean) {\n let raw = tokens.reduce((all, i2) => all + i2[1], \"\");\n node2.raws[prop] = { raw, value };\n }\n node2[prop] = value;\n }\n rule(tokens) {\n tokens.pop();\n let node2 = new Rule$2();\n this.init(node2, tokens[0][2]);\n node2.raws.between = this.spacesAndCommentsFromEnd(tokens);\n this.raw(node2, \"selector\", tokens);\n this.current = node2;\n }\n spacesAndCommentsFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\" && lastTokenType !== \"comment\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n // Errors\n spacesAndCommentsFromStart(tokens) {\n let next;\n let spaces = \"\";\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n spaces += tokens.shift()[1];\n }\n return spaces;\n }\n spacesFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n stringFrom(tokens, from) {\n let result2 = \"\";\n for (let i2 = from; i2 < tokens.length; i2++) {\n result2 += tokens[i2][1];\n }\n tokens.splice(from, tokens.length - from);\n return result2;\n }\n unclosedBlock() {\n let pos = this.current.source.start;\n throw this.input.error(\"Unclosed block\", pos.line, pos.column);\n }\n unclosedBracket(bracket) {\n throw this.input.error(\n \"Unclosed bracket\",\n { offset: bracket[2] },\n { offset: bracket[2] + 1 }\n );\n }\n unexpectedClose(token) {\n throw this.input.error(\n \"Unexpected }\",\n { offset: token[2] },\n { offset: token[2] + 1 }\n );\n }\n unknownWord(tokens) {\n throw this.input.error(\n \"Unknown word\",\n { offset: tokens[0][2] },\n { offset: tokens[0][2] + tokens[0][1].length }\n );\n }\n unnamedAtrule(node2, token) {\n throw this.input.error(\n \"At-rule without name\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n};\nvar parser = Parser$1;\nlet Container$2 = container;\nlet Parser22 = parser;\nlet Input$2 = input;\nfunction parse$3(css, opts) {\n let input2 = new Input$2(css, opts);\n let parser2 = new Parser22(input2);\n try {\n parser2.parse();\n } catch (e2) {\n if (process.env.NODE_ENV !== \"production\") {\n if (e2.name === \"CssSyntaxError\" && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser\";\n } else if (/\\.sass/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser\";\n } else if (/\\.less$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser\";\n }\n }\n }\n throw e2;\n }\n return parser2.root;\n}\nvar parse_1 = parse$3;\nparse$3.default = parse$3;\nContainer$2.registerParse(parse$3);\nlet { isClean, my } = symbols;\nlet MapGenerator$1 = mapGenerator;\nlet stringify$2 = stringify_1;\nlet Container$1 = container;\nlet Document$2 = document$1;\nlet warnOnce$1 = warnOnce$2;\nlet Result$2 = result;\nlet parse$2 = parse_1;\nlet Root$3 = root;\nconst TYPE_TO_CLASS_NAME = {\n atrule: \"AtRule\",\n comment: \"Comment\",\n decl: \"Declaration\",\n document: \"Document\",\n root: \"Root\",\n rule: \"Rule\"\n};\nconst PLUGIN_PROPS = {\n AtRule: true,\n AtRuleExit: true,\n Comment: true,\n CommentExit: true,\n Declaration: true,\n DeclarationExit: true,\n Document: true,\n DocumentExit: true,\n Once: true,\n OnceExit: true,\n postcssPlugin: true,\n prepare: true,\n Root: true,\n RootExit: true,\n Rule: true,\n RuleExit: true\n};\nconst NOT_VISITORS = {\n Once: true,\n postcssPlugin: true,\n prepare: true\n};\nconst CHILDREN = 0;\nfunction isPromise(obj) {\n return typeof obj === \"object\" && typeof obj.then === \"function\";\n}\nfunction getEvents(node2) {\n let key = false;\n let type = TYPE_TO_CLASS_NAME[node2.type];\n if (node2.type === \"decl\") {\n key = node2.prop.toLowerCase();\n } else if (node2.type === \"atrule\") {\n key = node2.name.toLowerCase();\n }\n if (key && node2.append) {\n return [\n type,\n type + \"-\" + key,\n CHILDREN,\n type + \"Exit\",\n type + \"Exit-\" + key\n ];\n } else if (key) {\n return [type, type + \"-\" + key, type + \"Exit\", type + \"Exit-\" + key];\n } else if (node2.append) {\n return [type, CHILDREN, type + \"Exit\"];\n } else {\n return [type, type + \"Exit\"];\n }\n}\nfunction toStack(node2) {\n let events;\n if (node2.type === \"document\") {\n events = [\"Document\", CHILDREN, \"DocumentExit\"];\n } else if (node2.type === \"root\") {\n events = [\"Root\", CHILDREN, \"RootExit\"];\n } else {\n events = getEvents(node2);\n }\n return {\n eventIndex: 0,\n events,\n iterator: 0,\n node: node2,\n visitorIndex: 0,\n visitors: []\n };\n}\nfunction cleanMarks(node2) {\n node2[isClean] = false;\n if (node2.nodes) node2.nodes.forEach((i2) => cleanMarks(i2));\n return node2;\n}\nlet postcss$2 = {};\nlet LazyResult$2 = class LazyResult2 {\n constructor(processor2, css, opts) {\n this.stringified = false;\n this.processed = false;\n let root2;\n if (typeof css === \"object\" && css !== null && (css.type === \"root\" || css.type === \"document\")) {\n root2 = cleanMarks(css);\n } else if (css instanceof LazyResult2 || css instanceof Result$2) {\n root2 = cleanMarks(css.root);\n if (css.map) {\n if (typeof opts.map === \"undefined\") opts.map = {};\n if (!opts.map.inline) opts.map.inline = false;\n opts.map.prev = css.map;\n }\n } else {\n let parser2 = parse$2;\n if (opts.syntax) parser2 = opts.syntax.parse;\n if (opts.parser) parser2 = opts.parser;\n if (parser2.parse) parser2 = parser2.parse;\n try {\n root2 = parser2(css, opts);\n } catch (error) {\n this.processed = true;\n this.error = error;\n }\n if (root2 && !root2[my]) {\n Container$1.rebuild(root2);\n }\n }\n this.result = new Result$2(processor2, root2, opts);\n this.helpers = { ...postcss$2, postcss: postcss$2, result: this.result };\n this.plugins = this.processor.plugins.map((plugin22) => {\n if (typeof plugin22 === \"object\" && plugin22.prepare) {\n return { ...plugin22, ...plugin22.prepare(this.result) };\n } else {\n return plugin22;\n }\n });\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n if (this.processed) return Promise.resolve(this.result);\n if (!this.processing) {\n this.processing = this.runAsync();\n }\n return this.processing;\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n getAsyncError() {\n throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n }\n handleError(error, node2) {\n let plugin22 = this.result.lastPlugin;\n try {\n if (node2) node2.addToError(error);\n this.error = error;\n if (error.name === \"CssSyntaxError\" && !error.plugin) {\n error.plugin = plugin22.postcssPlugin;\n error.setMessage();\n } else if (plugin22.postcssVersion) {\n if (process.env.NODE_ENV !== \"production\") {\n let pluginName = plugin22.postcssPlugin;\n let pluginVer = plugin22.postcssVersion;\n let runtimeVer = this.result.processor.version;\n let a2 = pluginVer.split(\".\");\n let b = runtimeVer.split(\".\");\n if (a2[0] !== b[0] || parseInt(a2[1]) > parseInt(b[1])) {\n console.error(\n \"Unknown error from PostCSS plugin. Your current PostCSS version is \" + runtimeVer + \", but \" + pluginName + \" uses \" + pluginVer + \". Perhaps this is the source of the error below.\"\n );\n }\n }\n }\n } catch (err) {\n if (console && console.error) console.error(err);\n }\n return error;\n }\n prepareVisitors() {\n this.listeners = {};\n let add = (plugin22, type, cb) => {\n if (!this.listeners[type]) this.listeners[type] = [];\n this.listeners[type].push([plugin22, cb]);\n };\n for (let plugin22 of this.plugins) {\n if (typeof plugin22 === \"object\") {\n for (let event in plugin22) {\n if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) {\n throw new Error(\n `Unknown event ${event} in ${plugin22.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`\n );\n }\n if (!NOT_VISITORS[event]) {\n if (typeof plugin22[event] === \"object\") {\n for (let filter in plugin22[event]) {\n if (filter === \"*\") {\n add(plugin22, event, plugin22[event][filter]);\n } else {\n add(\n plugin22,\n event + \"-\" + filter.toLowerCase(),\n plugin22[event][filter]\n );\n }\n }\n } else if (typeof plugin22[event] === \"function\") {\n add(plugin22, event, plugin22[event]);\n }\n }\n }\n }\n }\n this.hasListener = Object.keys(this.listeners).length > 0;\n }\n async runAsync() {\n this.plugin = 0;\n for (let i2 = 0; i2 < this.plugins.length; i2++) {\n let plugin22 = this.plugins[i2];\n let promise = this.runOnRoot(plugin22);\n if (isPromise(promise)) {\n try {\n await promise;\n } catch (error) {\n throw this.handleError(error);\n }\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean]) {\n root2[isClean] = true;\n let stack = [toStack(root2)];\n while (stack.length > 0) {\n let promise = this.visitTick(stack);\n if (isPromise(promise)) {\n try {\n await promise;\n } catch (e2) {\n let node2 = stack[stack.length - 1].node;\n throw this.handleError(e2, node2);\n }\n }\n }\n }\n if (this.listeners.OnceExit) {\n for (let [plugin22, visitor] of this.listeners.OnceExit) {\n this.result.lastPlugin = plugin22;\n try {\n if (root2.type === \"document\") {\n let roots = root2.nodes.map(\n (subRoot) => visitor(subRoot, this.helpers)\n );\n await Promise.all(roots);\n } else {\n await visitor(root2, this.helpers);\n }\n } catch (e2) {\n throw this.handleError(e2);\n }\n }\n }\n }\n this.processed = true;\n return this.stringify();\n }\n runOnRoot(plugin22) {\n this.result.lastPlugin = plugin22;\n try {\n if (typeof plugin22 === \"object\" && plugin22.Once) {\n if (this.result.root.type === \"document\") {\n let roots = this.result.root.nodes.map(\n (root2) => plugin22.Once(root2, this.helpers)\n );\n if (isPromise(roots[0])) {\n return Promise.all(roots);\n }\n return roots;\n }\n return plugin22.Once(this.result.root, this.helpers);\n } else if (typeof plugin22 === \"function\") {\n return plugin22(this.result.root, this.result);\n }\n } catch (error) {\n throw this.handleError(error);\n }\n }\n stringify() {\n if (this.error) throw this.error;\n if (this.stringified) return this.result;\n this.stringified = true;\n this.sync();\n let opts = this.result.opts;\n let str = stringify$2;\n if (opts.syntax) str = opts.syntax.stringify;\n if (opts.stringifier) str = opts.stringifier;\n if (str.stringify) str = str.stringify;\n let map = new MapGenerator$1(str, this.result.root, this.result.opts);\n let data = map.generate();\n this.result.css = data[0];\n this.result.map = data[1];\n return this.result;\n }\n sync() {\n if (this.error) throw this.error;\n if (this.processed) return this.result;\n this.processed = true;\n if (this.processing) {\n throw this.getAsyncError();\n }\n for (let plugin22 of this.plugins) {\n let promise = this.runOnRoot(plugin22);\n if (isPromise(promise)) {\n throw this.getAsyncError();\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean]) {\n root2[isClean] = true;\n this.walkSync(root2);\n }\n if (this.listeners.OnceExit) {\n if (root2.type === \"document\") {\n for (let subRoot of root2.nodes) {\n this.visitSync(this.listeners.OnceExit, subRoot);\n }\n } else {\n this.visitSync(this.listeners.OnceExit, root2);\n }\n }\n }\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this.opts)) {\n warnOnce$1(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this.css;\n }\n visitSync(visitors, node2) {\n for (let [plugin22, visitor] of visitors) {\n this.result.lastPlugin = plugin22;\n let promise;\n try {\n promise = visitor(node2, this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2.proxyOf);\n }\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n return true;\n }\n if (isPromise(promise)) {\n throw this.getAsyncError();\n }\n }\n }\n visitTick(stack) {\n let visit2 = stack[stack.length - 1];\n let { node: node2, visitors } = visit2;\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n stack.pop();\n return;\n }\n if (visitors.length > 0 && visit2.visitorIndex < visitors.length) {\n let [plugin22, visitor] = visitors[visit2.visitorIndex];\n visit2.visitorIndex += 1;\n if (visit2.visitorIndex === visitors.length) {\n visit2.visitors = [];\n visit2.visitorIndex = 0;\n }\n this.result.lastPlugin = plugin22;\n try {\n return visitor(node2.toProxy(), this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2);\n }\n }\n if (visit2.iterator !== 0) {\n let iterator = visit2.iterator;\n let child;\n while (child = node2.nodes[node2.indexes[iterator]]) {\n node2.indexes[iterator] += 1;\n if (!child[isClean]) {\n child[isClean] = true;\n stack.push(toStack(child));\n return;\n }\n }\n visit2.iterator = 0;\n delete node2.indexes[iterator];\n }\n let events = visit2.events;\n while (visit2.eventIndex < events.length) {\n let event = events[visit2.eventIndex];\n visit2.eventIndex += 1;\n if (event === CHILDREN) {\n if (node2.nodes && node2.nodes.length) {\n node2[isClean] = true;\n visit2.iterator = node2.getIterator();\n }\n return;\n } else if (this.listeners[event]) {\n visit2.visitors = this.listeners[event];\n return;\n }\n }\n stack.pop();\n }\n walkSync(node2) {\n node2[isClean] = true;\n let events = getEvents(node2);\n for (let event of events) {\n if (event === CHILDREN) {\n if (node2.nodes) {\n node2.each((child) => {\n if (!child[isClean]) this.walkSync(child);\n });\n }\n } else {\n let visitors = this.listeners[event];\n if (visitors) {\n if (this.visitSync(visitors, node2.toProxy())) return;\n }\n }\n }\n }\n warnings() {\n return this.sync().warnings();\n }\n get content() {\n return this.stringify().content;\n }\n get css() {\n return this.stringify().css;\n }\n get map() {\n return this.stringify().map;\n }\n get messages() {\n return this.sync().messages;\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n return this.sync().root;\n }\n get [Symbol.toStringTag]() {\n return \"LazyResult\";\n }\n};\nLazyResult$2.registerPostcss = (dependant) => {\n postcss$2 = dependant;\n};\nvar lazyResult = LazyResult$2;\nLazyResult$2.default = LazyResult$2;\nRoot$3.registerLazyResult(LazyResult$2);\nDocument$2.registerLazyResult(LazyResult$2);\nlet MapGenerator22 = mapGenerator;\nlet stringify$1 = stringify_1;\nlet warnOnce22 = warnOnce$2;\nlet parse$1 = parse_1;\nconst Result$1 = result;\nlet NoWorkResult$1 = class NoWorkResult2 {\n constructor(processor2, css, opts) {\n css = css.toString();\n this.stringified = false;\n this._processor = processor2;\n this._css = css;\n this._opts = opts;\n this._map = void 0;\n let root2;\n let str = stringify$1;\n this.result = new Result$1(this._processor, root2, this._opts);\n this.result.css = css;\n let self = this;\n Object.defineProperty(this.result, \"root\", {\n get() {\n return self.root;\n }\n });\n let map = new MapGenerator22(str, root2, this._opts, css);\n if (map.isMap()) {\n let [generatedCSS, generatedMap] = map.generate();\n if (generatedCSS) {\n this.result.css = generatedCSS;\n }\n if (generatedMap) {\n this.result.map = generatedMap;\n }\n } else {\n map.clearAnnotation();\n this.result.css = map.css;\n }\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n return Promise.resolve(this.result);\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n sync() {\n if (this.error) throw this.error;\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this._opts)) {\n warnOnce22(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this._css;\n }\n warnings() {\n return [];\n }\n get content() {\n return this.result.css;\n }\n get css() {\n return this.result.css;\n }\n get map() {\n return this.result.map;\n }\n get messages() {\n return [];\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n if (this._root) {\n return this._root;\n }\n let root2;\n let parser2 = parse$1;\n try {\n root2 = parser2(this._css, this._opts);\n } catch (error) {\n this.error = error;\n }\n if (this.error) {\n throw this.error;\n } else {\n this._root = root2;\n return root2;\n }\n }\n get [Symbol.toStringTag]() {\n return \"NoWorkResult\";\n }\n};\nvar noWorkResult = NoWorkResult$1;\nNoWorkResult$1.default = NoWorkResult$1;\nlet NoWorkResult22 = noWorkResult;\nlet LazyResult$1 = lazyResult;\nlet Document$1 = document$1;\nlet Root$2 = root;\nlet Processor$1 = class Processor2 {\n constructor(plugins = []) {\n this.version = \"8.4.38\";\n this.plugins = this.normalize(plugins);\n }\n normalize(plugins) {\n let normalized = [];\n for (let i2 of plugins) {\n if (i2.postcss === true) {\n i2 = i2();\n } else if (i2.postcss) {\n i2 = i2.postcss;\n }\n if (typeof i2 === \"object\" && Array.isArray(i2.plugins)) {\n normalized = normalized.concat(i2.plugins);\n } else if (typeof i2 === \"object\" && i2.postcssPlugin) {\n normalized.push(i2);\n } else if (typeof i2 === \"function\") {\n normalized.push(i2);\n } else if (typeof i2 === \"object\" && (i2.parse || i2.stringify)) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error(\n \"PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.\"\n );\n }\n } else {\n throw new Error(i2 + \" is not a PostCSS plugin\");\n }\n }\n return normalized;\n }\n process(css, opts = {}) {\n if (!this.plugins.length && !opts.parser && !opts.stringifier && !opts.syntax) {\n return new NoWorkResult22(this, css, opts);\n } else {\n return new LazyResult$1(this, css, opts);\n }\n }\n use(plugin22) {\n this.plugins = this.plugins.concat(this.normalize([plugin22]));\n return this;\n }\n};\nvar processor = Processor$1;\nProcessor$1.default = Processor$1;\nRoot$2.registerProcessor(Processor$1);\nDocument$1.registerProcessor(Processor$1);\nlet Declaration$1 = declaration;\nlet PreviousMap22 = previousMap;\nlet Comment$1 = comment;\nlet AtRule$1 = atRule;\nlet Input$1 = input;\nlet Root$1 = root;\nlet Rule$1 = rule;\nfunction fromJSON$1(json, inputs) {\n if (Array.isArray(json)) return json.map((n2) => fromJSON$1(n2));\n let { inputs: ownInputs, ...defaults } = json;\n if (ownInputs) {\n inputs = [];\n for (let input2 of ownInputs) {\n let inputHydrated = { ...input2, __proto__: Input$1.prototype };\n if (inputHydrated.map) {\n inputHydrated.map = {\n ...inputHydrated.map,\n __proto__: PreviousMap22.prototype\n };\n }\n inputs.push(inputHydrated);\n }\n }\n if (defaults.nodes) {\n defaults.nodes = json.nodes.map((n2) => fromJSON$1(n2, inputs));\n }\n if (defaults.source) {\n let { inputId, ...source } = defaults.source;\n defaults.source = source;\n if (inputId != null) {\n defaults.source.input = inputs[inputId];\n }\n }\n if (defaults.type === \"root\") {\n return new Root$1(defaults);\n } else if (defaults.type === \"decl\") {\n return new Declaration$1(defaults);\n } else if (defaults.type === \"rule\") {\n return new Rule$1(defaults);\n } else if (defaults.type === \"comment\") {\n return new Comment$1(defaults);\n } else if (defaults.type === \"atrule\") {\n return new AtRule$1(defaults);\n } else {\n throw new Error(\"Unknown node type: \" + json.type);\n }\n}\nvar fromJSON_1 = fromJSON$1;\nfromJSON$1.default = fromJSON$1;\nlet CssSyntaxError22 = cssSyntaxError;\nlet Declaration22 = declaration;\nlet LazyResult22 = lazyResult;\nlet Container22 = container;\nlet Processor22 = processor;\nlet stringify = stringify_1;\nlet fromJSON = fromJSON_1;\nlet Document222 = document$1;\nlet Warning22 = warning;\nlet Comment22 = comment;\nlet AtRule22 = atRule;\nlet Result22 = result;\nlet Input22 = input;\nlet parse = parse_1;\nlet list = list_1;\nlet Rule22 = rule;\nlet Root22 = root;\nlet Node22 = node;\nfunction postcss(...plugins) {\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0];\n }\n return new Processor22(plugins);\n}\npostcss.plugin = function plugin2(name, initializer) {\n let warningPrinted = false;\n function creator(...args) {\n if (console && console.warn && !warningPrinted) {\n warningPrinted = true;\n console.warn(\n name + \": postcss.plugin was deprecated. Migration guide:\\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration\"\n );\n if (process.env.LANG && process.env.LANG.startsWith(\"cn\")) {\n console.warn(\n name + \": 里面 postcss.plugin 被弃用. 迁移指南:\\nhttps://www.w3ctech.com/topic/2226\"\n );\n }\n }\n let transformer = initializer(...args);\n transformer.postcssPlugin = name;\n transformer.postcssVersion = new Processor22().version;\n return transformer;\n }\n let cache;\n Object.defineProperty(creator, \"postcss\", {\n get() {\n if (!cache) cache = creator();\n return cache;\n }\n });\n creator.process = function(css, processOpts, pluginOpts) {\n return postcss([creator(pluginOpts)]).process(css, processOpts);\n };\n return creator;\n};\npostcss.stringify = stringify;\npostcss.parse = parse;\npostcss.fromJSON = fromJSON;\npostcss.list = list;\npostcss.comment = (defaults) => new Comment22(defaults);\npostcss.atRule = (defaults) => new AtRule22(defaults);\npostcss.decl = (defaults) => new Declaration22(defaults);\npostcss.rule = (defaults) => new Rule22(defaults);\npostcss.root = (defaults) => new Root22(defaults);\npostcss.document = (defaults) => new Document222(defaults);\npostcss.CssSyntaxError = CssSyntaxError22;\npostcss.Declaration = Declaration22;\npostcss.Container = Container22;\npostcss.Processor = Processor22;\npostcss.Document = Document222;\npostcss.Comment = Comment22;\npostcss.Warning = Warning22;\npostcss.AtRule = AtRule22;\npostcss.Result = Result22;\npostcss.Input = Input22;\npostcss.Rule = Rule22;\npostcss.Root = Root22;\npostcss.Node = Node22;\nLazyResult22.registerPostcss(postcss);\nvar postcss_1 = postcss;\npostcss.default = postcss;\nconst postcss$1 = /* @__PURE__ */ getDefaultExportFromCjs(postcss_1);\npostcss$1.stringify;\npostcss$1.fromJSON;\npostcss$1.plugin;\npostcss$1.parse;\npostcss$1.list;\npostcss$1.document;\npostcss$1.comment;\npostcss$1.atRule;\npostcss$1.rule;\npostcss$1.decl;\npostcss$1.root;\npostcss$1.CssSyntaxError;\npostcss$1.Declaration;\npostcss$1.Container;\npostcss$1.Processor;\npostcss$1.Document;\npostcss$1.Comment;\npostcss$1.Warning;\npostcss$1.AtRule;\npostcss$1.Result;\npostcss$1.Input;\npostcss$1.Rule;\npostcss$1.Root;\npostcss$1.Node;\nclass BaseRRNode {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any\n constructor(..._args) {\n __publicField2(this, \"parentElement\", null);\n __publicField2(this, \"parentNode\", null);\n __publicField2(this, \"ownerDocument\");\n __publicField2(this, \"firstChild\", null);\n __publicField2(this, \"lastChild\", null);\n __publicField2(this, \"previousSibling\", null);\n __publicField2(this, \"nextSibling\", null);\n __publicField2(this, \"ELEMENT_NODE\", 1);\n __publicField2(this, \"TEXT_NODE\", 3);\n __publicField2(this, \"nodeType\");\n __publicField2(this, \"nodeName\");\n __publicField2(this, \"RRNodeType\");\n }\n get childNodes() {\n const childNodes2 = [];\n let childIterator = this.firstChild;\n while (childIterator) {\n childNodes2.push(childIterator);\n childIterator = childIterator.nextSibling;\n }\n return childNodes2;\n }\n contains(node2) {\n if (!(node2 instanceof BaseRRNode)) return false;\n else if (node2.ownerDocument !== this.ownerDocument) return false;\n else if (node2 === this) return true;\n while (node2.parentNode) {\n if (node2.parentNode === this) return true;\n node2 = node2.parentNode;\n }\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n appendChild(_newChild) {\n throw new Error(\n `RRDomException: Failed to execute 'appendChild' on 'RRNode': This RRNode type does not support this method.`\n );\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n insertBefore(_newChild, _refChild) {\n throw new Error(\n `RRDomException: Failed to execute 'insertBefore' on 'RRNode': This RRNode type does not support this method.`\n );\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n removeChild(_node) {\n throw new Error(\n `RRDomException: Failed to execute 'removeChild' on 'RRNode': This RRNode type does not support this method.`\n );\n }\n toString() {\n return \"RRNode\";\n }\n}\nconst testableAccessors = {\n Node: [\"childNodes\", \"parentNode\", \"parentElement\", \"textContent\"],\n ShadowRoot: [\"host\", \"styleSheets\"],\n Element: [\"shadowRoot\", \"querySelector\", \"querySelectorAll\"],\n MutationObserver: []\n};\nconst testableMethods = {\n Node: [\"contains\", \"getRootNode\"],\n ShadowRoot: [\"getSelection\"],\n Element: [],\n MutationObserver: [\"constructor\"]\n};\nconst untaintedBasePrototype = {};\nconst isAngularZonePresent = () => {\n return !!globalThis.Zone;\n};\nfunction getUntaintedPrototype(key) {\n if (untaintedBasePrototype[key])\n return untaintedBasePrototype[key];\n const defaultObj = globalThis[key];\n const defaultPrototype = defaultObj.prototype;\n const accessorNames = key in testableAccessors ? testableAccessors[key] : void 0;\n const isUntaintedAccessors = Boolean(\n accessorNames && // @ts-expect-error 2345\n accessorNames.every(\n (accessor) => {\n var _a2, _b;\n return Boolean(\n (_b = (_a2 = Object.getOwnPropertyDescriptor(defaultPrototype, accessor)) == null ? void 0 : _a2.get) == null ? void 0 : _b.toString().includes(\"[native code]\")\n );\n }\n )\n );\n const methodNames = key in testableMethods ? testableMethods[key] : void 0;\n const isUntaintedMethods = Boolean(\n methodNames && methodNames.every(\n // @ts-expect-error 2345\n (method) => {\n var _a2;\n return typeof defaultPrototype[method] === \"function\" && ((_a2 = defaultPrototype[method]) == null ? void 0 : _a2.toString().includes(\"[native code]\"));\n }\n )\n );\n if (isUntaintedAccessors && isUntaintedMethods && !isAngularZonePresent()) {\n untaintedBasePrototype[key] = defaultObj.prototype;\n return defaultObj.prototype;\n }\n try {\n const iframeEl = document.createElement(\"iframe\");\n document.body.appendChild(iframeEl);\n const win = iframeEl.contentWindow;\n if (!win) return defaultObj.prototype;\n const untaintedObject = win[key].prototype;\n document.body.removeChild(iframeEl);\n if (!untaintedObject) return defaultPrototype;\n return untaintedBasePrototype[key] = untaintedObject;\n } catch {\n return defaultPrototype;\n }\n}\nconst untaintedAccessorCache = {};\nfunction getUntaintedAccessor(key, instance, accessor) {\n var _a2;\n const cacheKey = `${key}.${String(accessor)}`;\n if (untaintedAccessorCache[cacheKey])\n return untaintedAccessorCache[cacheKey].call(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype(key);\n const untaintedAccessor = (_a2 = Object.getOwnPropertyDescriptor(\n untaintedPrototype,\n accessor\n )) == null ? void 0 : _a2.get;\n if (!untaintedAccessor) return instance[accessor];\n untaintedAccessorCache[cacheKey] = untaintedAccessor;\n return untaintedAccessor.call(instance);\n}\nconst untaintedMethodCache = {};\nfunction getUntaintedMethod(key, instance, method) {\n const cacheKey = `${key}.${String(method)}`;\n if (untaintedMethodCache[cacheKey])\n return untaintedMethodCache[cacheKey].bind(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype(key);\n const untaintedMethod = untaintedPrototype[method];\n if (typeof untaintedMethod !== \"function\") return instance[method];\n untaintedMethodCache[cacheKey] = untaintedMethod;\n return untaintedMethod.bind(instance);\n}\nfunction childNodes(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"childNodes\");\n}\nfunction parentNode(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"parentNode\");\n}\nfunction parentElement(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"parentElement\");\n}\nfunction textContent(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"textContent\");\n}\nfunction contains(n2, other) {\n return getUntaintedMethod(\"Node\", n2, \"contains\")(other);\n}\nfunction getRootNode(n2) {\n return getUntaintedMethod(\"Node\", n2, \"getRootNode\")();\n}\nfunction host(n2) {\n if (!n2 || !(\"host\" in n2)) return null;\n return getUntaintedAccessor(\"ShadowRoot\", n2, \"host\");\n}\nfunction styleSheets(n2) {\n return n2.styleSheets;\n}\nfunction shadowRoot(n2) {\n if (!n2 || !(\"shadowRoot\" in n2)) return null;\n return getUntaintedAccessor(\"Element\", n2, \"shadowRoot\");\n}\nfunction querySelector(n2, selectors) {\n return getUntaintedAccessor(\"Element\", n2, \"querySelector\")(selectors);\n}\nfunction querySelectorAll(n2, selectors) {\n return getUntaintedAccessor(\"Element\", n2, \"querySelectorAll\")(selectors);\n}\nfunction mutationObserverCtor() {\n return getUntaintedPrototype(\"MutationObserver\").constructor;\n}\nconst index = {\n childNodes,\n parentNode,\n parentElement,\n textContent,\n contains,\n getRootNode,\n host,\n styleSheets,\n shadowRoot,\n querySelector,\n querySelectorAll,\n mutationObserver: mutationObserverCtor\n};\nfunction on(type, fn, target = document) {\n const options = { capture: true, passive: true };\n target.addEventListener(type, fn, options);\n return () => target.removeEventListener(type, fn, options);\n}\nconst DEPARTED_MIRROR_ACCESS_WARNING = \"Please stop import mirror directly. Instead of that,\\r\\nnow you can use replayer.getMirror() to access the mirror instance of a replayer,\\r\\nor you can use record.mirror to access the mirror instance during recording.\";\nlet _mirror = {\n map: {},\n getId() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return -1;\n },\n getNode() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return null;\n },\n removeNodeFromMap() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n },\n has() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return false;\n },\n reset() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n }\n};\nif (typeof window !== \"undefined\" && window.Proxy && window.Reflect) {\n _mirror = new Proxy(_mirror, {\n get(target, prop, receiver) {\n if (prop === \"map\") {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n }\n return Reflect.get(target, prop, receiver);\n }\n });\n}\nfunction throttle(func, wait, options = {}) {\n let timeout = null;\n let previous = 0;\n return function(...args) {\n const now = Date.now();\n if (!previous && options.leading === false) {\n previous = now;\n }\n const remaining = wait - (now - previous);\n const context = this;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n func.apply(context, args);\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(() => {\n previous = options.leading === false ? 0 : Date.now();\n timeout = null;\n func.apply(context, args);\n }, remaining);\n }\n };\n}\nfunction hookSetter(target, key, d, isRevoked, win = window) {\n const original = win.Object.getOwnPropertyDescriptor(target, key);\n win.Object.defineProperty(\n target,\n key,\n isRevoked ? d : {\n set(value) {\n setTimeout(() => {\n d.set.call(this, value);\n }, 0);\n if (original && original.set) {\n original.set.call(this, value);\n }\n }\n }\n );\n return () => hookSetter(target, key, original || {}, true);\n}\nfunction patch(source, name, replacement) {\n try {\n if (!(name in source)) {\n return () => {\n };\n }\n const original = source[name];\n const wrapped = replacement(original);\n if (typeof wrapped === \"function\") {\n wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __rrweb_original__: {\n enumerable: false,\n value: original\n }\n });\n }\n source[name] = wrapped;\n return () => {\n source[name] = original;\n };\n } catch {\n return () => {\n };\n }\n}\nlet nowTimestamp = Date.now;\nif (!/* @__PURE__ */ /[1-9][0-9]{12}/.test(Date.now().toString())) {\n nowTimestamp = () => (/* @__PURE__ */ new Date()).getTime();\n}\nfunction getWindowScroll(win) {\n var _a2, _b, _c, _d;\n const doc = win.document;\n return {\n left: doc.scrollingElement ? doc.scrollingElement.scrollLeft : win.pageXOffset !== void 0 ? win.pageXOffset : doc.documentElement.scrollLeft || (doc == null ? void 0 : doc.body) && ((_a2 = index.parentElement(doc.body)) == null ? void 0 : _a2.scrollLeft) || ((_b = doc == null ? void 0 : doc.body) == null ? void 0 : _b.scrollLeft) || 0,\n top: doc.scrollingElement ? doc.scrollingElement.scrollTop : win.pageYOffset !== void 0 ? win.pageYOffset : (doc == null ? void 0 : doc.documentElement.scrollTop) || (doc == null ? void 0 : doc.body) && ((_c = index.parentElement(doc.body)) == null ? void 0 : _c.scrollTop) || ((_d = doc == null ? void 0 : doc.body) == null ? void 0 : _d.scrollTop) || 0\n };\n}\nfunction getWindowHeight() {\n return window.innerHeight || document.documentElement && document.documentElement.clientHeight || document.body && document.body.clientHeight;\n}\nfunction getWindowWidth() {\n return window.innerWidth || document.documentElement && document.documentElement.clientWidth || document.body && document.body.clientWidth;\n}\nfunction closestElementOfNode(node2) {\n if (!node2) {\n return null;\n }\n const el = node2.nodeType === node2.ELEMENT_NODE ? node2 : index.parentElement(node2);\n return el;\n}\nfunction isBlocked(node2, blockClass, blockSelector, checkAncestors) {\n if (!node2) {\n return false;\n }\n const el = closestElementOfNode(node2);\n if (!el) {\n return false;\n }\n try {\n if (typeof blockClass === \"string\") {\n if (el.classList.contains(blockClass)) return true;\n if (checkAncestors && el.closest(\".\" + blockClass) !== null) return true;\n } else {\n if (classMatchesRegex(el, blockClass, checkAncestors)) return true;\n }\n } catch (e2) {\n }\n if (blockSelector) {\n if (el.matches(blockSelector)) return true;\n if (checkAncestors && el.closest(blockSelector) !== null) return true;\n }\n return false;\n}\nfunction isSerialized(n2, mirror2) {\n return mirror2.getId(n2) !== -1;\n}\nfunction isIgnored(n2, mirror2, slimDOMOptions) {\n if (n2.tagName === \"TITLE\" && slimDOMOptions.headTitleMutations) {\n return true;\n }\n return mirror2.getId(n2) === IGNORED_NODE;\n}\nfunction isAncestorRemoved(target, mirror2) {\n if (isShadowRoot(target)) {\n return false;\n }\n const id = mirror2.getId(target);\n if (!mirror2.has(id)) {\n return true;\n }\n const parent = index.parentNode(target);\n if (parent && parent.nodeType === target.DOCUMENT_NODE) {\n return false;\n }\n if (!parent) {\n return true;\n }\n return isAncestorRemoved(parent, mirror2);\n}\nfunction legacy_isTouchEvent(event) {\n return Boolean(event.changedTouches);\n}\nfunction polyfill$1(win = window) {\n if (\"NodeList\" in win && !win.NodeList.prototype.forEach) {\n win.NodeList.prototype.forEach = Array.prototype.forEach;\n }\n if (\"DOMTokenList\" in win && !win.DOMTokenList.prototype.forEach) {\n win.DOMTokenList.prototype.forEach = Array.prototype.forEach;\n }\n}\nfunction isSerializedIframe(n2, mirror2) {\n return Boolean(n2.nodeName === \"IFRAME\" && mirror2.getMeta(n2));\n}\nfunction isSerializedStylesheet(n2, mirror2) {\n return Boolean(\n n2.nodeName === \"LINK\" && n2.nodeType === n2.ELEMENT_NODE && n2.getAttribute && n2.getAttribute(\"rel\") === \"stylesheet\" && mirror2.getMeta(n2)\n );\n}\nfunction hasShadowRoot(n2) {\n if (!n2) return false;\n if (n2 instanceof BaseRRNode && \"shadowRoot\" in n2) {\n return Boolean(n2.shadowRoot);\n }\n return Boolean(index.shadowRoot(n2));\n}\nclass StyleSheetMirror {\n constructor() {\n __publicField(this, \"id\", 1);\n __publicField(this, \"styleIDMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"idStyleMap\", /* @__PURE__ */ new Map());\n }\n getId(stylesheet) {\n return this.styleIDMap.get(stylesheet) ?? -1;\n }\n has(stylesheet) {\n return this.styleIDMap.has(stylesheet);\n }\n /**\n * @returns If the stylesheet is in the mirror, returns the id of the stylesheet. If not, return the new assigned id.\n */\n add(stylesheet, id) {\n if (this.has(stylesheet)) return this.getId(stylesheet);\n let newId;\n if (id === void 0) {\n newId = this.id++;\n } else newId = id;\n this.styleIDMap.set(stylesheet, newId);\n this.idStyleMap.set(newId, stylesheet);\n return newId;\n }\n getStyle(id) {\n return this.idStyleMap.get(id) || null;\n }\n reset() {\n this.styleIDMap = /* @__PURE__ */ new WeakMap();\n this.idStyleMap = /* @__PURE__ */ new Map();\n this.id = 1;\n }\n generateId() {\n return this.id++;\n }\n}\nfunction getShadowHost(n2) {\n var _a2;\n let shadowHost = null;\n if (\"getRootNode\" in n2 && ((_a2 = index.getRootNode(n2)) == null ? void 0 : _a2.nodeType) === Node.DOCUMENT_FRAGMENT_NODE && index.host(index.getRootNode(n2)))\n shadowHost = index.host(index.getRootNode(n2));\n return shadowHost;\n}\nfunction getRootShadowHost(n2) {\n let rootShadowHost = n2;\n let shadowHost;\n while (shadowHost = getShadowHost(rootShadowHost))\n rootShadowHost = shadowHost;\n return rootShadowHost;\n}\nfunction shadowHostInDom(n2) {\n const doc = n2.ownerDocument;\n if (!doc) return false;\n const shadowHost = getRootShadowHost(n2);\n return index.contains(doc, shadowHost);\n}\nfunction inDom(n2) {\n const doc = n2.ownerDocument;\n if (!doc) return false;\n return index.contains(doc, n2) || shadowHostInDom(n2);\n}\nvar EventType = /* @__PURE__ */ ((EventType2) => {\n EventType2[EventType2[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n EventType2[EventType2[\"Load\"] = 1] = \"Load\";\n EventType2[EventType2[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n EventType2[EventType2[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n EventType2[EventType2[\"Meta\"] = 4] = \"Meta\";\n EventType2[EventType2[\"Custom\"] = 5] = \"Custom\";\n EventType2[EventType2[\"Plugin\"] = 6] = \"Plugin\";\n return EventType2;\n})(EventType || {});\nvar IncrementalSource = /* @__PURE__ */ ((IncrementalSource2) => {\n IncrementalSource2[IncrementalSource2[\"Mutation\"] = 0] = \"Mutation\";\n IncrementalSource2[IncrementalSource2[\"MouseMove\"] = 1] = \"MouseMove\";\n IncrementalSource2[IncrementalSource2[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n IncrementalSource2[IncrementalSource2[\"Scroll\"] = 3] = \"Scroll\";\n IncrementalSource2[IncrementalSource2[\"ViewportResize\"] = 4] = \"ViewportResize\";\n IncrementalSource2[IncrementalSource2[\"Input\"] = 5] = \"Input\";\n IncrementalSource2[IncrementalSource2[\"TouchMove\"] = 6] = \"TouchMove\";\n IncrementalSource2[IncrementalSource2[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n IncrementalSource2[IncrementalSource2[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n IncrementalSource2[IncrementalSource2[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n IncrementalSource2[IncrementalSource2[\"Font\"] = 10] = \"Font\";\n IncrementalSource2[IncrementalSource2[\"Log\"] = 11] = \"Log\";\n IncrementalSource2[IncrementalSource2[\"Drag\"] = 12] = \"Drag\";\n IncrementalSource2[IncrementalSource2[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n IncrementalSource2[IncrementalSource2[\"Selection\"] = 14] = \"Selection\";\n IncrementalSource2[IncrementalSource2[\"AdoptedStyleSheet\"] = 15] = \"AdoptedStyleSheet\";\n IncrementalSource2[IncrementalSource2[\"CustomElement\"] = 16] = \"CustomElement\";\n return IncrementalSource2;\n})(IncrementalSource || {});\nvar MouseInteractions = /* @__PURE__ */ ((MouseInteractions2) => {\n MouseInteractions2[MouseInteractions2[\"MouseUp\"] = 0] = \"MouseUp\";\n MouseInteractions2[MouseInteractions2[\"MouseDown\"] = 1] = \"MouseDown\";\n MouseInteractions2[MouseInteractions2[\"Click\"] = 2] = \"Click\";\n MouseInteractions2[MouseInteractions2[\"ContextMenu\"] = 3] = \"ContextMenu\";\n MouseInteractions2[MouseInteractions2[\"DblClick\"] = 4] = \"DblClick\";\n MouseInteractions2[MouseInteractions2[\"Focus\"] = 5] = \"Focus\";\n MouseInteractions2[MouseInteractions2[\"Blur\"] = 6] = \"Blur\";\n MouseInteractions2[MouseInteractions2[\"TouchStart\"] = 7] = \"TouchStart\";\n MouseInteractions2[MouseInteractions2[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n MouseInteractions2[MouseInteractions2[\"TouchEnd\"] = 9] = \"TouchEnd\";\n MouseInteractions2[MouseInteractions2[\"TouchCancel\"] = 10] = \"TouchCancel\";\n return MouseInteractions2;\n})(MouseInteractions || {});\nvar PointerTypes = /* @__PURE__ */ ((PointerTypes2) => {\n PointerTypes2[PointerTypes2[\"Mouse\"] = 0] = \"Mouse\";\n PointerTypes2[PointerTypes2[\"Pen\"] = 1] = \"Pen\";\n PointerTypes2[PointerTypes2[\"Touch\"] = 2] = \"Touch\";\n return PointerTypes2;\n})(PointerTypes || {});\nvar CanvasContext = /* @__PURE__ */ ((CanvasContext2) => {\n CanvasContext2[CanvasContext2[\"2D\"] = 0] = \"2D\";\n CanvasContext2[CanvasContext2[\"WebGL\"] = 1] = \"WebGL\";\n CanvasContext2[CanvasContext2[\"WebGL2\"] = 2] = \"WebGL2\";\n return CanvasContext2;\n})(CanvasContext || {});\nvar MediaInteractions = /* @__PURE__ */ ((MediaInteractions2) => {\n MediaInteractions2[MediaInteractions2[\"Play\"] = 0] = \"Play\";\n MediaInteractions2[MediaInteractions2[\"Pause\"] = 1] = \"Pause\";\n MediaInteractions2[MediaInteractions2[\"Seeked\"] = 2] = \"Seeked\";\n MediaInteractions2[MediaInteractions2[\"VolumeChange\"] = 3] = \"VolumeChange\";\n MediaInteractions2[MediaInteractions2[\"RateChange\"] = 4] = \"RateChange\";\n return MediaInteractions2;\n})(MediaInteractions || {});\nvar NodeType = /* @__PURE__ */ ((NodeType2) => {\n NodeType2[NodeType2[\"Document\"] = 0] = \"Document\";\n NodeType2[NodeType2[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType2[NodeType2[\"Element\"] = 2] = \"Element\";\n NodeType2[NodeType2[\"Text\"] = 3] = \"Text\";\n NodeType2[NodeType2[\"CDATA\"] = 4] = \"CDATA\";\n NodeType2[NodeType2[\"Comment\"] = 5] = \"Comment\";\n return NodeType2;\n})(NodeType || {});\nfunction isNodeInLinkedList(n2) {\n return \"__ln\" in n2;\n}\nclass DoubleLinkedList {\n constructor() {\n __publicField(this, \"length\", 0);\n __publicField(this, \"head\", null);\n __publicField(this, \"tail\", null);\n }\n get(position) {\n if (position >= this.length) {\n throw new Error(\"Position outside of list range\");\n }\n let current = this.head;\n for (let index2 = 0; index2 < position; index2++) {\n current = (current == null ? void 0 : current.next) || null;\n }\n return current;\n }\n addNode(n2) {\n const node2 = {\n value: n2,\n previous: null,\n next: null\n };\n n2.__ln = node2;\n if (n2.previousSibling && isNodeInLinkedList(n2.previousSibling)) {\n const current = n2.previousSibling.__ln.next;\n node2.next = current;\n node2.previous = n2.previousSibling.__ln;\n n2.previousSibling.__ln.next = node2;\n if (current) {\n current.previous = node2;\n }\n } else if (n2.nextSibling && isNodeInLinkedList(n2.nextSibling) && n2.nextSibling.__ln.previous) {\n const current = n2.nextSibling.__ln.previous;\n node2.previous = current;\n node2.next = n2.nextSibling.__ln;\n n2.nextSibling.__ln.previous = node2;\n if (current) {\n current.next = node2;\n }\n } else {\n if (this.head) {\n this.head.previous = node2;\n }\n node2.next = this.head;\n this.head = node2;\n }\n if (node2.next === null) {\n this.tail = node2;\n }\n this.length++;\n }\n removeNode(n2) {\n const current = n2.__ln;\n if (!this.head) {\n return;\n }\n if (!current.previous) {\n this.head = current.next;\n if (this.head) {\n this.head.previous = null;\n } else {\n this.tail = null;\n }\n } else {\n current.previous.next = current.next;\n if (current.next) {\n current.next.previous = current.previous;\n } else {\n this.tail = current.previous;\n }\n }\n if (n2.__ln) {\n delete n2.__ln;\n }\n this.length--;\n }\n}\nconst moveKey = (id, parentId) => `${id}@${parentId}`;\nclass MutationBuffer {\n constructor() {\n __publicField(this, \"frozen\", false);\n __publicField(this, \"locked\", false);\n __publicField(this, \"texts\", []);\n __publicField(this, \"attributes\", []);\n __publicField(this, \"attributeMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"removes\", []);\n __publicField(this, \"mapRemoves\", []);\n __publicField(this, \"movedMap\", {});\n __publicField(this, \"addedSet\", /* @__PURE__ */ new Set());\n __publicField(this, \"movedSet\", /* @__PURE__ */ new Set());\n __publicField(this, \"droppedSet\", /* @__PURE__ */ new Set());\n __publicField(this, \"removesSubTreeCache\", /* @__PURE__ */ new Set());\n __publicField(this, \"mutationCb\");\n __publicField(this, \"blockClass\");\n __publicField(this, \"blockSelector\");\n __publicField(this, \"maskTextClass\");\n __publicField(this, \"maskTextSelector\");\n __publicField(this, \"inlineStylesheet\");\n __publicField(this, \"maskInputOptions\");\n __publicField(this, \"maskTextFn\");\n __publicField(this, \"maskInputFn\");\n __publicField(this, \"keepIframeSrcFn\");\n __publicField(this, \"recordCanvas\");\n __publicField(this, \"inlineImages\");\n __publicField(this, \"slimDOMOptions\");\n __publicField(this, \"dataURLOptions\");\n __publicField(this, \"doc\");\n __publicField(this, \"mirror\");\n __publicField(this, \"iframeManager\");\n __publicField(this, \"stylesheetManager\");\n __publicField(this, \"shadowDomManager\");\n __publicField(this, \"canvasManager\");\n __publicField(this, \"processedNodeManager\");\n __publicField(this, \"unattachedDoc\");\n __publicField(this, \"processMutations\", (mutations) => {\n mutations.forEach(this.processMutation);\n this.emit();\n });\n __publicField(this, \"emit\", () => {\n if (this.frozen || this.locked) {\n return;\n }\n const adds = [];\n const addedIds = /* @__PURE__ */ new Set();\n const addList = new DoubleLinkedList();\n const getNextId = (n2) => {\n let ns = n2;\n let nextId = IGNORED_NODE;\n while (nextId === IGNORED_NODE) {\n ns = ns && ns.nextSibling;\n nextId = ns && this.mirror.getId(ns);\n }\n return nextId;\n };\n const pushAdd = (n2) => {\n const parent = index.parentNode(n2);\n if (!parent || !inDom(n2)) {\n return;\n }\n let cssCaptured = false;\n if (n2.nodeType === Node.TEXT_NODE) {\n const parentTag = parent.tagName;\n if (parentTag === \"TEXTAREA\") {\n return;\n } else if (parentTag === \"STYLE\" && this.addedSet.has(parent)) {\n cssCaptured = true;\n }\n }\n const parentId = isShadowRoot(parent) ? this.mirror.getId(getShadowHost(n2)) : this.mirror.getId(parent);\n const nextId = getNextId(n2);\n if (parentId === -1 || nextId === -1) {\n return addList.addNode(n2);\n }\n const sn = serializeNodeWithId(n2, {\n doc: this.doc,\n mirror: this.mirror,\n blockClass: this.blockClass,\n blockSelector: this.blockSelector,\n maskTextClass: this.maskTextClass,\n maskTextSelector: this.maskTextSelector,\n skipChild: true,\n newlyAddedElement: true,\n inlineStylesheet: this.inlineStylesheet,\n maskInputOptions: this.maskInputOptions,\n maskTextFn: this.maskTextFn,\n maskInputFn: this.maskInputFn,\n slimDOMOptions: this.slimDOMOptions,\n dataURLOptions: this.dataURLOptions,\n recordCanvas: this.recordCanvas,\n inlineImages: this.inlineImages,\n onSerialize: (currentN) => {\n if (isSerializedIframe(currentN, this.mirror)) {\n this.iframeManager.addIframe(currentN);\n }\n if (isSerializedStylesheet(currentN, this.mirror)) {\n this.stylesheetManager.trackLinkElement(\n currentN\n );\n }\n if (hasShadowRoot(n2)) {\n this.shadowDomManager.addShadowRoot(index.shadowRoot(n2), this.doc);\n }\n },\n onIframeLoad: (iframe, childSn) => {\n this.iframeManager.attachIframe(iframe, childSn);\n this.shadowDomManager.observeAttachShadow(iframe);\n },\n onStylesheetLoad: (link, childSn) => {\n this.stylesheetManager.attachLinkElement(link, childSn);\n },\n cssCaptured\n });\n if (sn) {\n adds.push({\n parentId,\n nextId,\n node: sn\n });\n addedIds.add(sn.id);\n }\n };\n while (this.mapRemoves.length) {\n this.mirror.removeNodeFromMap(this.mapRemoves.shift());\n }\n for (const n2 of this.movedSet) {\n if (isParentRemoved(this.removesSubTreeCache, n2, this.mirror) && !this.movedSet.has(index.parentNode(n2))) {\n continue;\n }\n pushAdd(n2);\n }\n for (const n2 of this.addedSet) {\n if (!isAncestorInSet(this.droppedSet, n2) && !isParentRemoved(this.removesSubTreeCache, n2, this.mirror)) {\n pushAdd(n2);\n } else if (isAncestorInSet(this.movedSet, n2)) {\n pushAdd(n2);\n } else {\n this.droppedSet.add(n2);\n }\n }\n let candidate = null;\n while (addList.length) {\n let node2 = null;\n if (candidate) {\n const parentId = this.mirror.getId(index.parentNode(candidate.value));\n const nextId = getNextId(candidate.value);\n if (parentId !== -1 && nextId !== -1) {\n node2 = candidate;\n }\n }\n if (!node2) {\n let tailNode = addList.tail;\n while (tailNode) {\n const _node = tailNode;\n tailNode = tailNode.previous;\n if (_node) {\n const parentId = this.mirror.getId(index.parentNode(_node.value));\n const nextId = getNextId(_node.value);\n if (nextId === -1) continue;\n else if (parentId !== -1) {\n node2 = _node;\n break;\n } else {\n const unhandledNode = _node.value;\n const parent = index.parentNode(unhandledNode);\n if (parent && parent.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n const shadowHost = index.host(parent);\n const parentId2 = this.mirror.getId(shadowHost);\n if (parentId2 !== -1) {\n node2 = _node;\n break;\n }\n }\n }\n }\n }\n }\n if (!node2) {\n while (addList.head) {\n addList.removeNode(addList.head.value);\n }\n break;\n }\n candidate = node2.previous;\n addList.removeNode(node2.value);\n pushAdd(node2.value);\n }\n const payload = {\n texts: this.texts.map((text) => {\n const n2 = text.node;\n const parent = index.parentNode(n2);\n if (parent && parent.tagName === \"TEXTAREA\") {\n this.genTextAreaValueMutation(parent);\n }\n return {\n id: this.mirror.getId(n2),\n value: text.value\n };\n }).filter((text) => !addedIds.has(text.id)).filter((text) => this.mirror.has(text.id)),\n attributes: this.attributes.map((attribute) => {\n const { attributes } = attribute;\n if (typeof attributes.style === \"string\") {\n const diffAsStr = JSON.stringify(attribute.styleDiff);\n const unchangedAsStr = JSON.stringify(attribute._unchangedStyles);\n if (diffAsStr.length < attributes.style.length) {\n if ((diffAsStr + unchangedAsStr).split(\"var(\").length === attributes.style.split(\"var(\").length) {\n attributes.style = attribute.styleDiff;\n }\n }\n }\n return {\n id: this.mirror.getId(attribute.node),\n attributes\n };\n }).filter((attribute) => !addedIds.has(attribute.id)).filter((attribute) => this.mirror.has(attribute.id)),\n removes: this.removes,\n adds\n };\n if (!payload.texts.length && !payload.attributes.length && !payload.removes.length && !payload.adds.length) {\n return;\n }\n this.texts = [];\n this.attributes = [];\n this.attributeMap = /* @__PURE__ */ new WeakMap();\n this.removes = [];\n this.addedSet = /* @__PURE__ */ new Set();\n this.movedSet = /* @__PURE__ */ new Set();\n this.droppedSet = /* @__PURE__ */ new Set();\n this.removesSubTreeCache = /* @__PURE__ */ new Set();\n this.movedMap = {};\n this.mutationCb(payload);\n });\n __publicField(this, \"genTextAreaValueMutation\", (textarea) => {\n let item = this.attributeMap.get(textarea);\n if (!item) {\n item = {\n node: textarea,\n attributes: {},\n styleDiff: {},\n _unchangedStyles: {}\n };\n this.attributes.push(item);\n this.attributeMap.set(textarea, item);\n }\n item.attributes.value = Array.from(\n index.childNodes(textarea),\n (cn) => index.textContent(cn) || \"\"\n ).join(\"\");\n });\n __publicField(this, \"processMutation\", (m) => {\n if (isIgnored(m.target, this.mirror, this.slimDOMOptions)) {\n return;\n }\n switch (m.type) {\n case \"characterData\": {\n const value = index.textContent(m.target);\n if (!isBlocked(m.target, this.blockClass, this.blockSelector, false) && value !== m.oldValue) {\n this.texts.push({\n value: needMaskingText(\n m.target,\n this.maskTextClass,\n this.maskTextSelector,\n true\n // checkAncestors\n ) && value ? this.maskTextFn ? this.maskTextFn(value, closestElementOfNode(m.target)) : value.replace(/[\\S]/g, \"*\") : value,\n node: m.target\n });\n }\n break;\n }\n case \"attributes\": {\n const target = m.target;\n let attributeName = m.attributeName;\n let value = m.target.getAttribute(attributeName);\n if (attributeName === \"value\") {\n const type = getInputType(target);\n value = maskInputValue({\n element: target,\n maskInputOptions: this.maskInputOptions,\n tagName: target.tagName,\n type,\n value,\n maskInputFn: this.maskInputFn\n });\n }\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) || value === m.oldValue) {\n return;\n }\n let item = this.attributeMap.get(m.target);\n if (target.tagName === \"IFRAME\" && attributeName === \"src\" && !this.keepIframeSrcFn(value)) {\n if (!target.contentDocument) {\n attributeName = \"rr_src\";\n } else {\n return;\n }\n }\n if (!item) {\n item = {\n node: m.target,\n attributes: {},\n styleDiff: {},\n _unchangedStyles: {}\n };\n this.attributes.push(item);\n this.attributeMap.set(m.target, item);\n }\n if (attributeName === \"type\" && target.tagName === \"INPUT\" && (m.oldValue || \"\").toLowerCase() === \"password\") {\n target.setAttribute(\"data-rr-is-password\", \"true\");\n }\n if (!ignoreAttribute(target.tagName, attributeName)) {\n item.attributes[attributeName] = transformAttribute(\n this.doc,\n toLowerCase(target.tagName),\n toLowerCase(attributeName),\n value\n );\n if (attributeName === \"style\") {\n if (!this.unattachedDoc) {\n try {\n this.unattachedDoc = document.implementation.createHTMLDocument();\n } catch (e2) {\n this.unattachedDoc = this.doc;\n }\n }\n const old = this.unattachedDoc.createElement(\"span\");\n if (m.oldValue) {\n old.setAttribute(\"style\", m.oldValue);\n }\n for (const pname of Array.from(target.style)) {\n const newValue = target.style.getPropertyValue(pname);\n const newPriority = target.style.getPropertyPriority(pname);\n if (newValue !== old.style.getPropertyValue(pname) || newPriority !== old.style.getPropertyPriority(pname)) {\n if (newPriority === \"\") {\n item.styleDiff[pname] = newValue;\n } else {\n item.styleDiff[pname] = [newValue, newPriority];\n }\n } else {\n item._unchangedStyles[pname] = [newValue, newPriority];\n }\n }\n for (const pname of Array.from(old.style)) {\n if (target.style.getPropertyValue(pname) === \"\") {\n item.styleDiff[pname] = false;\n }\n }\n } else if (attributeName === \"open\" && target.tagName === \"DIALOG\") {\n if (target.matches(\"dialog:modal\")) {\n item.attributes[\"rr_open_mode\"] = \"modal\";\n } else {\n item.attributes[\"rr_open_mode\"] = \"non-modal\";\n }\n }\n }\n break;\n }\n case \"childList\": {\n if (isBlocked(m.target, this.blockClass, this.blockSelector, true))\n return;\n if (m.target.tagName === \"TEXTAREA\") {\n this.genTextAreaValueMutation(m.target);\n return;\n }\n m.addedNodes.forEach((n2) => this.genAdds(n2, m.target));\n m.removedNodes.forEach((n2) => {\n const nodeId = this.mirror.getId(n2);\n const parentId = isShadowRoot(m.target) ? this.mirror.getId(index.host(m.target)) : this.mirror.getId(m.target);\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) || isIgnored(n2, this.mirror, this.slimDOMOptions) || !isSerialized(n2, this.mirror)) {\n return;\n }\n if (this.addedSet.has(n2)) {\n deepDelete(this.addedSet, n2);\n this.droppedSet.add(n2);\n } else if (this.addedSet.has(m.target) && nodeId === -1) ;\n else if (isAncestorRemoved(m.target, this.mirror)) ;\n else if (this.movedSet.has(n2) && this.movedMap[moveKey(nodeId, parentId)]) {\n deepDelete(this.movedSet, n2);\n } else {\n this.removes.push({\n parentId,\n id: nodeId,\n isShadow: isShadowRoot(m.target) && isNativeShadowDom(m.target) ? true : void 0\n });\n processRemoves(n2, this.removesSubTreeCache);\n }\n this.mapRemoves.push(n2);\n });\n break;\n }\n }\n });\n __publicField(this, \"genAdds\", (n2, target) => {\n if (this.processedNodeManager.inOtherBuffer(n2, this)) return;\n if (this.addedSet.has(n2) || this.movedSet.has(n2)) return;\n if (this.mirror.hasNode(n2)) {\n if (isIgnored(n2, this.mirror, this.slimDOMOptions)) {\n return;\n }\n this.movedSet.add(n2);\n let targetId = null;\n if (target && this.mirror.hasNode(target)) {\n targetId = this.mirror.getId(target);\n }\n if (targetId && targetId !== -1) {\n this.movedMap[moveKey(this.mirror.getId(n2), targetId)] = true;\n }\n } else {\n this.addedSet.add(n2);\n this.droppedSet.delete(n2);\n }\n if (!isBlocked(n2, this.blockClass, this.blockSelector, false)) {\n index.childNodes(n2).forEach((childN) => this.genAdds(childN));\n if (hasShadowRoot(n2)) {\n index.childNodes(index.shadowRoot(n2)).forEach((childN) => {\n this.processedNodeManager.add(childN, this);\n this.genAdds(childN, n2);\n });\n }\n }\n });\n }\n init(options) {\n [\n \"mutationCb\",\n \"blockClass\",\n \"blockSelector\",\n \"maskTextClass\",\n \"maskTextSelector\",\n \"inlineStylesheet\",\n \"maskInputOptions\",\n \"maskTextFn\",\n \"maskInputFn\",\n \"keepIframeSrcFn\",\n \"recordCanvas\",\n \"inlineImages\",\n \"slimDOMOptions\",\n \"dataURLOptions\",\n \"doc\",\n \"mirror\",\n \"iframeManager\",\n \"stylesheetManager\",\n \"shadowDomManager\",\n \"canvasManager\",\n \"processedNodeManager\"\n ].forEach((key) => {\n this[key] = options[key];\n });\n }\n freeze() {\n this.frozen = true;\n this.canvasManager.freeze();\n }\n unfreeze() {\n this.frozen = false;\n this.canvasManager.unfreeze();\n this.emit();\n }\n isFrozen() {\n return this.frozen;\n }\n lock() {\n this.locked = true;\n this.canvasManager.lock();\n }\n unlock() {\n this.locked = false;\n this.canvasManager.unlock();\n this.emit();\n }\n reset() {\n this.shadowDomManager.reset();\n this.canvasManager.reset();\n }\n}\nfunction deepDelete(addsSet, n2) {\n addsSet.delete(n2);\n index.childNodes(n2).forEach((childN) => deepDelete(addsSet, childN));\n}\nfunction processRemoves(n2, cache) {\n const queue = [n2];\n while (queue.length) {\n const next = queue.pop();\n if (cache.has(next)) continue;\n cache.add(next);\n index.childNodes(next).forEach((n22) => queue.push(n22));\n }\n return;\n}\nfunction isParentRemoved(removes, n2, mirror2) {\n if (removes.size === 0) return false;\n return _isParentRemoved(removes, n2);\n}\nfunction _isParentRemoved(removes, n2, _mirror2) {\n const node2 = index.parentNode(n2);\n if (!node2) return false;\n return removes.has(node2);\n}\nfunction isAncestorInSet(set, n2) {\n if (set.size === 0) return false;\n return _isAncestorInSet(set, n2);\n}\nfunction _isAncestorInSet(set, n2) {\n const parent = index.parentNode(n2);\n if (!parent) {\n return false;\n }\n if (set.has(parent)) {\n return true;\n }\n return _isAncestorInSet(set, parent);\n}\nlet errorHandler;\nfunction registerErrorHandler(handler) {\n errorHandler = handler;\n}\nfunction unregisterErrorHandler() {\n errorHandler = void 0;\n}\nconst callbackWrapper = (cb) => {\n if (!errorHandler) {\n return cb;\n }\n const rrwebWrapped = (...rest) => {\n try {\n return cb(...rest);\n } catch (error) {\n if (errorHandler && errorHandler(error) === true) {\n return;\n }\n throw error;\n }\n };\n return rrwebWrapped;\n};\nconst mutationBuffers = [];\nfunction getEventTarget(event) {\n try {\n if (\"composedPath\" in event) {\n const path = event.composedPath();\n if (path.length) {\n return path[0];\n }\n } else if (\"path\" in event && event.path.length) {\n return event.path[0];\n }\n } catch {\n }\n return event && event.target;\n}\nfunction initMutationObserver(options, rootEl) {\n const mutationBuffer = new MutationBuffer();\n mutationBuffers.push(mutationBuffer);\n mutationBuffer.init(options);\n const observer = new (mutationObserverCtor())(\n callbackWrapper(mutationBuffer.processMutations.bind(mutationBuffer))\n );\n observer.observe(rootEl, {\n attributes: true,\n attributeOldValue: true,\n characterData: true,\n characterDataOldValue: true,\n childList: true,\n subtree: true\n });\n return observer;\n}\nfunction initMoveObserver({\n mousemoveCb,\n sampling,\n doc,\n mirror: mirror2\n}) {\n if (sampling.mousemove === false) {\n return () => {\n };\n }\n const threshold = typeof sampling.mousemove === \"number\" ? sampling.mousemove : 50;\n const callbackThreshold = typeof sampling.mousemoveCallback === \"number\" ? sampling.mousemoveCallback : 500;\n let positions = [];\n let timeBaseline;\n const wrappedCb = throttle(\n callbackWrapper(\n (source) => {\n const totalOffset = Date.now() - timeBaseline;\n mousemoveCb(\n positions.map((p) => {\n p.timeOffset -= totalOffset;\n return p;\n }),\n source\n );\n positions = [];\n timeBaseline = null;\n }\n ),\n callbackThreshold\n );\n const updatePosition = callbackWrapper(\n throttle(\n callbackWrapper((evt) => {\n const target = getEventTarget(evt);\n const { clientX, clientY } = legacy_isTouchEvent(evt) ? evt.changedTouches[0] : evt;\n if (!timeBaseline) {\n timeBaseline = nowTimestamp();\n }\n positions.push({\n x: clientX,\n y: clientY,\n id: mirror2.getId(target),\n timeOffset: nowTimestamp() - timeBaseline\n });\n wrappedCb(\n typeof DragEvent !== \"undefined\" && evt instanceof DragEvent ? IncrementalSource.Drag : evt instanceof MouseEvent ? IncrementalSource.MouseMove : IncrementalSource.TouchMove\n );\n }),\n threshold,\n {\n trailing: false\n }\n )\n );\n const handlers = [\n on(\"mousemove\", updatePosition, doc),\n on(\"touchmove\", updatePosition, doc),\n on(\"drag\", updatePosition, doc)\n ];\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initMouseInteractionObserver({\n mouseInteractionCb,\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n sampling\n}) {\n if (sampling.mouseInteraction === false) {\n return () => {\n };\n }\n const disableMap = sampling.mouseInteraction === true || sampling.mouseInteraction === void 0 ? {} : sampling.mouseInteraction;\n const handlers = [];\n let currentPointerType = null;\n const getHandler = (eventKey) => {\n return (event) => {\n const target = getEventTarget(event);\n if (isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n let pointerType = null;\n let thisEventKey = eventKey;\n if (\"pointerType\" in event) {\n switch (event.pointerType) {\n case \"mouse\":\n pointerType = PointerTypes.Mouse;\n break;\n case \"touch\":\n pointerType = PointerTypes.Touch;\n break;\n case \"pen\":\n pointerType = PointerTypes.Pen;\n break;\n }\n if (pointerType === PointerTypes.Touch) {\n if (MouseInteractions[eventKey] === MouseInteractions.MouseDown) {\n thisEventKey = \"TouchStart\";\n } else if (MouseInteractions[eventKey] === MouseInteractions.MouseUp) {\n thisEventKey = \"TouchEnd\";\n }\n } else if (pointerType === PointerTypes.Pen) ;\n } else if (legacy_isTouchEvent(event)) {\n pointerType = PointerTypes.Touch;\n }\n if (pointerType !== null) {\n currentPointerType = pointerType;\n if (thisEventKey.startsWith(\"Touch\") && pointerType === PointerTypes.Touch || thisEventKey.startsWith(\"Mouse\") && pointerType === PointerTypes.Mouse) {\n pointerType = null;\n }\n } else if (MouseInteractions[eventKey] === MouseInteractions.Click) {\n pointerType = currentPointerType;\n currentPointerType = null;\n }\n const e2 = legacy_isTouchEvent(event) ? event.changedTouches[0] : event;\n if (!e2) {\n return;\n }\n const id = mirror2.getId(target);\n const { clientX, clientY } = e2;\n callbackWrapper(mouseInteractionCb)({\n type: MouseInteractions[thisEventKey],\n id,\n x: clientX,\n y: clientY,\n ...pointerType !== null && { pointerType }\n });\n };\n };\n Object.keys(MouseInteractions).filter(\n (key) => Number.isNaN(Number(key)) && !key.endsWith(\"_Departed\") && disableMap[key] !== false\n ).forEach((eventKey) => {\n let eventName = toLowerCase(eventKey);\n const handler = getHandler(eventKey);\n if (window.PointerEvent) {\n switch (MouseInteractions[eventKey]) {\n case MouseInteractions.MouseDown:\n case MouseInteractions.MouseUp:\n eventName = eventName.replace(\n \"mouse\",\n \"pointer\"\n );\n break;\n case MouseInteractions.TouchStart:\n case MouseInteractions.TouchEnd:\n return;\n }\n }\n handlers.push(on(eventName, handler, doc));\n });\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initScrollObserver({\n scrollCb,\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n sampling\n}) {\n const updatePosition = callbackWrapper(\n throttle(\n callbackWrapper((evt) => {\n const target = getEventTarget(evt);\n if (!target || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n const id = mirror2.getId(target);\n if (target === doc && doc.defaultView) {\n const scrollLeftTop = getWindowScroll(doc.defaultView);\n scrollCb({\n id,\n x: scrollLeftTop.left,\n y: scrollLeftTop.top\n });\n } else {\n scrollCb({\n id,\n x: target.scrollLeft,\n y: target.scrollTop\n });\n }\n }),\n sampling.scroll || 100\n )\n );\n return on(\"scroll\", updatePosition, doc);\n}\nfunction initViewportResizeObserver({ viewportResizeCb }, { win }) {\n let lastH = -1;\n let lastW = -1;\n const updateDimension = callbackWrapper(\n throttle(\n callbackWrapper(() => {\n const height = getWindowHeight();\n const width = getWindowWidth();\n if (lastH !== height || lastW !== width) {\n viewportResizeCb({\n width: Number(width),\n height: Number(height)\n });\n lastH = height;\n lastW = width;\n }\n }),\n 200\n )\n );\n return on(\"resize\", updateDimension, win);\n}\nconst INPUT_TAGS = [\"INPUT\", \"TEXTAREA\", \"SELECT\"];\nconst lastInputValueMap = /* @__PURE__ */ new WeakMap();\nfunction initInputObserver({\n inputCb,\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n ignoreClass,\n ignoreSelector,\n maskInputOptions,\n maskInputFn,\n sampling,\n userTriggeredOnInput\n}) {\n function eventHandler(event) {\n let target = getEventTarget(event);\n const userTriggered = event.isTrusted;\n const tagName = target && target.tagName;\n if (target && tagName === \"OPTION\") {\n target = index.parentElement(target);\n }\n if (!target || !tagName || INPUT_TAGS.indexOf(tagName) < 0 || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n if (target.classList.contains(ignoreClass) || ignoreSelector && target.matches(ignoreSelector)) {\n return;\n }\n let text = target.value;\n let isChecked = false;\n const type = getInputType(target) || \"\";\n if (type === \"radio\" || type === \"checkbox\") {\n isChecked = target.checked;\n } else if (maskInputOptions[tagName.toLowerCase()] || maskInputOptions[type]) {\n text = maskInputValue({\n element: target,\n maskInputOptions,\n tagName,\n type,\n value: text,\n maskInputFn\n });\n }\n cbWithDedup(\n target,\n userTriggeredOnInput ? { text, isChecked, userTriggered } : { text, isChecked }\n );\n const name = target.name;\n if (type === \"radio\" && name && isChecked) {\n doc.querySelectorAll(`input[type=\"radio\"][name=\"${name}\"]`).forEach((el) => {\n if (el !== target) {\n const text2 = el.value;\n cbWithDedup(\n el,\n userTriggeredOnInput ? { text: text2, isChecked: !isChecked, userTriggered: false } : { text: text2, isChecked: !isChecked }\n );\n }\n });\n }\n }\n function cbWithDedup(target, v2) {\n const lastInputValue = lastInputValueMap.get(target);\n if (!lastInputValue || lastInputValue.text !== v2.text || lastInputValue.isChecked !== v2.isChecked) {\n lastInputValueMap.set(target, v2);\n const id = mirror2.getId(target);\n callbackWrapper(inputCb)({\n ...v2,\n id\n });\n }\n }\n const events = sampling.input === \"last\" ? [\"change\"] : [\"input\", \"change\"];\n const handlers = events.map(\n (eventName) => on(eventName, callbackWrapper(eventHandler), doc)\n );\n const currentWindow = doc.defaultView;\n if (!currentWindow) {\n return () => {\n handlers.forEach((h) => h());\n };\n }\n const propertyDescriptor = currentWindow.Object.getOwnPropertyDescriptor(\n currentWindow.HTMLInputElement.prototype,\n \"value\"\n );\n const hookProperties = [\n [currentWindow.HTMLInputElement.prototype, \"value\"],\n [currentWindow.HTMLInputElement.prototype, \"checked\"],\n [currentWindow.HTMLSelectElement.prototype, \"value\"],\n [currentWindow.HTMLTextAreaElement.prototype, \"value\"],\n // Some UI library use selectedIndex to set select value\n [currentWindow.HTMLSelectElement.prototype, \"selectedIndex\"],\n [currentWindow.HTMLOptionElement.prototype, \"selected\"]\n ];\n if (propertyDescriptor && propertyDescriptor.set) {\n handlers.push(\n ...hookProperties.map(\n (p) => hookSetter(\n p[0],\n p[1],\n {\n set() {\n callbackWrapper(eventHandler)({\n target: this,\n isTrusted: false\n // userTriggered to false as this could well be programmatic\n });\n }\n },\n false,\n currentWindow\n )\n )\n );\n }\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction getNestedCSSRulePositions(rule2) {\n const positions = [];\n function recurse(childRule, pos) {\n if (hasNestedCSSRule(\"CSSGroupingRule\") && childRule.parentRule instanceof CSSGroupingRule || hasNestedCSSRule(\"CSSMediaRule\") && childRule.parentRule instanceof CSSMediaRule || hasNestedCSSRule(\"CSSSupportsRule\") && childRule.parentRule instanceof CSSSupportsRule || hasNestedCSSRule(\"CSSConditionRule\") && childRule.parentRule instanceof CSSConditionRule) {\n const rules2 = Array.from(\n childRule.parentRule.cssRules\n );\n const index2 = rules2.indexOf(childRule);\n pos.unshift(index2);\n } else if (childRule.parentStyleSheet) {\n const rules2 = Array.from(childRule.parentStyleSheet.cssRules);\n const index2 = rules2.indexOf(childRule);\n pos.unshift(index2);\n }\n return pos;\n }\n return recurse(rule2, positions);\n}\nfunction getIdAndStyleId(sheet, mirror2, styleMirror) {\n let id, styleId;\n if (!sheet) return {};\n if (sheet.ownerNode) id = mirror2.getId(sheet.ownerNode);\n else styleId = styleMirror.getId(sheet);\n return {\n styleId,\n id\n };\n}\nfunction initStyleSheetObserver({ styleSheetRuleCb, mirror: mirror2, stylesheetManager }, { win }) {\n if (!win.CSSStyleSheet || !win.CSSStyleSheet.prototype) {\n return () => {\n };\n }\n const insertRule = win.CSSStyleSheet.prototype.insertRule;\n win.CSSStyleSheet.prototype.insertRule = new Proxy(insertRule, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [rule2, index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n adds: [{ rule: rule2, index: index2 }]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n win.CSSStyleSheet.prototype.addRule = function(selector, styleBlock, index2 = this.cssRules.length) {\n const rule2 = `${selector} { ${styleBlock} }`;\n return win.CSSStyleSheet.prototype.insertRule.apply(this, [rule2, index2]);\n };\n const deleteRule = win.CSSStyleSheet.prototype.deleteRule;\n win.CSSStyleSheet.prototype.deleteRule = new Proxy(deleteRule, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n removes: [{ index: index2 }]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n win.CSSStyleSheet.prototype.removeRule = function(index2) {\n return win.CSSStyleSheet.prototype.deleteRule.apply(this, [index2]);\n };\n let replace;\n if (win.CSSStyleSheet.prototype.replace) {\n replace = win.CSSStyleSheet.prototype.replace;\n win.CSSStyleSheet.prototype.replace = new Proxy(replace, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [text] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n replace: text\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n }\n let replaceSync;\n if (win.CSSStyleSheet.prototype.replaceSync) {\n replaceSync = win.CSSStyleSheet.prototype.replaceSync;\n win.CSSStyleSheet.prototype.replaceSync = new Proxy(replaceSync, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [text] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n replaceSync: text\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n }\n const supportedNestedCSSRuleTypes = {};\n if (canMonkeyPatchNestedCSSRule(\"CSSGroupingRule\")) {\n supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\n } else {\n if (canMonkeyPatchNestedCSSRule(\"CSSMediaRule\")) {\n supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\n }\n if (canMonkeyPatchNestedCSSRule(\"CSSConditionRule\")) {\n supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\n }\n if (canMonkeyPatchNestedCSSRule(\"CSSSupportsRule\")) {\n supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\n }\n }\n const unmodifiedFunctions = {};\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n unmodifiedFunctions[typeKey] = {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n insertRule: type.prototype.insertRule,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n deleteRule: type.prototype.deleteRule\n };\n type.prototype.insertRule = new Proxy(\n unmodifiedFunctions[typeKey].insertRule,\n {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [rule2, index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n adds: [\n {\n rule: rule2,\n index: [\n ...getNestedCSSRulePositions(thisArg),\n index2 || 0\n // defaults to 0\n ]\n }\n ]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n }\n );\n type.prototype.deleteRule = new Proxy(\n unmodifiedFunctions[typeKey].deleteRule,\n {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n removes: [\n { index: [...getNestedCSSRulePositions(thisArg), index2] }\n ]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n }\n );\n });\n return callbackWrapper(() => {\n win.CSSStyleSheet.prototype.insertRule = insertRule;\n win.CSSStyleSheet.prototype.deleteRule = deleteRule;\n replace && (win.CSSStyleSheet.prototype.replace = replace);\n replaceSync && (win.CSSStyleSheet.prototype.replaceSync = replaceSync);\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\n type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\n });\n });\n}\nfunction initAdoptedStyleSheetObserver({\n mirror: mirror2,\n stylesheetManager\n}, host2) {\n var _a2, _b, _c;\n let hostId = null;\n if (host2.nodeName === \"#document\") hostId = mirror2.getId(host2);\n else hostId = mirror2.getId(index.host(host2));\n const patchTarget = host2.nodeName === \"#document\" ? (_a2 = host2.defaultView) == null ? void 0 : _a2.Document : (_c = (_b = host2.ownerDocument) == null ? void 0 : _b.defaultView) == null ? void 0 : _c.ShadowRoot;\n const originalPropertyDescriptor = (patchTarget == null ? void 0 : patchTarget.prototype) ? Object.getOwnPropertyDescriptor(\n patchTarget == null ? void 0 : patchTarget.prototype,\n \"adoptedStyleSheets\"\n ) : void 0;\n if (hostId === null || hostId === -1 || !patchTarget || !originalPropertyDescriptor)\n return () => {\n };\n Object.defineProperty(host2, \"adoptedStyleSheets\", {\n configurable: originalPropertyDescriptor.configurable,\n enumerable: originalPropertyDescriptor.enumerable,\n get() {\n var _a3;\n return (_a3 = originalPropertyDescriptor.get) == null ? void 0 : _a3.call(this);\n },\n set(sheets) {\n var _a3;\n const result2 = (_a3 = originalPropertyDescriptor.set) == null ? void 0 : _a3.call(this, sheets);\n if (hostId !== null && hostId !== -1) {\n try {\n stylesheetManager.adoptStyleSheets(sheets, hostId);\n } catch (e2) {\n }\n }\n return result2;\n }\n });\n return callbackWrapper(() => {\n Object.defineProperty(host2, \"adoptedStyleSheets\", {\n configurable: originalPropertyDescriptor.configurable,\n enumerable: originalPropertyDescriptor.enumerable,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n get: originalPropertyDescriptor.get,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n set: originalPropertyDescriptor.set\n });\n });\n}\nfunction initStyleDeclarationObserver({\n styleDeclarationCb,\n mirror: mirror2,\n ignoreCSSAttributes,\n stylesheetManager\n}, { win }) {\n const setProperty = win.CSSStyleDeclaration.prototype.setProperty;\n win.CSSStyleDeclaration.prototype.setProperty = new Proxy(setProperty, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n var _a2;\n const [property, value, priority] = argumentsList;\n if (ignoreCSSAttributes.has(property)) {\n return setProperty.apply(thisArg, [property, value, priority]);\n }\n const { id, styleId } = getIdAndStyleId(\n (_a2 = thisArg.parentRule) == null ? void 0 : _a2.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleDeclarationCb({\n id,\n styleId,\n set: {\n property,\n value,\n priority\n },\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n index: getNestedCSSRulePositions(thisArg.parentRule)\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n const removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = new Proxy(removeProperty, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n var _a2;\n const [property] = argumentsList;\n if (ignoreCSSAttributes.has(property)) {\n return removeProperty.apply(thisArg, [property]);\n }\n const { id, styleId } = getIdAndStyleId(\n (_a2 = thisArg.parentRule) == null ? void 0 : _a2.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleDeclarationCb({\n id,\n styleId,\n remove: {\n property\n },\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n index: getNestedCSSRulePositions(thisArg.parentRule)\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n return callbackWrapper(() => {\n win.CSSStyleDeclaration.prototype.setProperty = setProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\n });\n}\nfunction initMediaInteractionObserver({\n mediaInteractionCb,\n blockClass,\n blockSelector,\n mirror: mirror2,\n sampling,\n doc\n}) {\n const handler = callbackWrapper(\n (type) => throttle(\n callbackWrapper((event) => {\n const target = getEventTarget(event);\n if (!target || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n const { currentTime, volume, muted, playbackRate, loop } = target;\n mediaInteractionCb({\n type,\n id: mirror2.getId(target),\n currentTime,\n volume,\n muted,\n playbackRate,\n loop\n });\n }),\n sampling.media || 500\n )\n );\n const handlers = [\n on(\"play\", handler(MediaInteractions.Play), doc),\n on(\"pause\", handler(MediaInteractions.Pause), doc),\n on(\"seeked\", handler(MediaInteractions.Seeked), doc),\n on(\"volumechange\", handler(MediaInteractions.VolumeChange), doc),\n on(\"ratechange\", handler(MediaInteractions.RateChange), doc)\n ];\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initFontObserver({ fontCb, doc }) {\n const win = doc.defaultView;\n if (!win) {\n return () => {\n };\n }\n const handlers = [];\n const fontMap = /* @__PURE__ */ new WeakMap();\n const originalFontFace = win.FontFace;\n win.FontFace = function FontFace2(family, source, descriptors) {\n const fontFace = new originalFontFace(family, source, descriptors);\n fontMap.set(fontFace, {\n family,\n buffer: typeof source !== \"string\",\n descriptors,\n fontSource: typeof source === \"string\" ? source : JSON.stringify(Array.from(new Uint8Array(source)))\n });\n return fontFace;\n };\n const restoreHandler = patch(\n doc.fonts,\n \"add\",\n function(original) {\n return function(fontFace) {\n setTimeout(\n callbackWrapper(() => {\n const p = fontMap.get(fontFace);\n if (p) {\n fontCb(p);\n fontMap.delete(fontFace);\n }\n }),\n 0\n );\n return original.apply(this, [fontFace]);\n };\n }\n );\n handlers.push(() => {\n win.FontFace = originalFontFace;\n });\n handlers.push(restoreHandler);\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initSelectionObserver(param) {\n const { doc, mirror: mirror2, blockClass, blockSelector, selectionCb } = param;\n let collapsed = true;\n const updateSelection = callbackWrapper(() => {\n const selection = doc.getSelection();\n if (!selection || collapsed && (selection == null ? void 0 : selection.isCollapsed)) return;\n collapsed = selection.isCollapsed || false;\n const ranges = [];\n const count = selection.rangeCount || 0;\n for (let i2 = 0; i2 < count; i2++) {\n const range = selection.getRangeAt(i2);\n const { startContainer, startOffset, endContainer, endOffset } = range;\n const blocked = isBlocked(startContainer, blockClass, blockSelector, true) || isBlocked(endContainer, blockClass, blockSelector, true);\n if (blocked) continue;\n ranges.push({\n start: mirror2.getId(startContainer),\n startOffset,\n end: mirror2.getId(endContainer),\n endOffset\n });\n }\n selectionCb({ ranges });\n });\n updateSelection();\n return on(\"selectionchange\", updateSelection);\n}\nfunction initCustomElementObserver({\n doc,\n customElementCb\n}) {\n const win = doc.defaultView;\n if (!win || !win.customElements) return () => {\n };\n const restoreHandler = patch(\n win.customElements,\n \"define\",\n function(original) {\n return function(name, constructor, options) {\n try {\n customElementCb({\n define: {\n name\n }\n });\n } catch (e2) {\n console.warn(`Custom element callback failed for ${name}`);\n }\n return original.apply(this, [name, constructor, options]);\n };\n }\n );\n return restoreHandler;\n}\nfunction mergeHooks(o2, hooks) {\n const {\n mutationCb,\n mousemoveCb,\n mouseInteractionCb,\n scrollCb,\n viewportResizeCb,\n inputCb,\n mediaInteractionCb,\n styleSheetRuleCb,\n styleDeclarationCb,\n canvasMutationCb,\n fontCb,\n selectionCb,\n customElementCb\n } = o2;\n o2.mutationCb = (...p) => {\n if (hooks.mutation) {\n hooks.mutation(...p);\n }\n mutationCb(...p);\n };\n o2.mousemoveCb = (...p) => {\n if (hooks.mousemove) {\n hooks.mousemove(...p);\n }\n mousemoveCb(...p);\n };\n o2.mouseInteractionCb = (...p) => {\n if (hooks.mouseInteraction) {\n hooks.mouseInteraction(...p);\n }\n mouseInteractionCb(...p);\n };\n o2.scrollCb = (...p) => {\n if (hooks.scroll) {\n hooks.scroll(...p);\n }\n scrollCb(...p);\n };\n o2.viewportResizeCb = (...p) => {\n if (hooks.viewportResize) {\n hooks.viewportResize(...p);\n }\n viewportResizeCb(...p);\n };\n o2.inputCb = (...p) => {\n if (hooks.input) {\n hooks.input(...p);\n }\n inputCb(...p);\n };\n o2.mediaInteractionCb = (...p) => {\n if (hooks.mediaInteaction) {\n hooks.mediaInteaction(...p);\n }\n mediaInteractionCb(...p);\n };\n o2.styleSheetRuleCb = (...p) => {\n if (hooks.styleSheetRule) {\n hooks.styleSheetRule(...p);\n }\n styleSheetRuleCb(...p);\n };\n o2.styleDeclarationCb = (...p) => {\n if (hooks.styleDeclaration) {\n hooks.styleDeclaration(...p);\n }\n styleDeclarationCb(...p);\n };\n o2.canvasMutationCb = (...p) => {\n if (hooks.canvasMutation) {\n hooks.canvasMutation(...p);\n }\n canvasMutationCb(...p);\n };\n o2.fontCb = (...p) => {\n if (hooks.font) {\n hooks.font(...p);\n }\n fontCb(...p);\n };\n o2.selectionCb = (...p) => {\n if (hooks.selection) {\n hooks.selection(...p);\n }\n selectionCb(...p);\n };\n o2.customElementCb = (...c2) => {\n if (hooks.customElement) {\n hooks.customElement(...c2);\n }\n customElementCb(...c2);\n };\n}\nfunction initObservers(o2, hooks = {}) {\n const currentWindow = o2.doc.defaultView;\n if (!currentWindow) {\n return () => {\n };\n }\n mergeHooks(o2, hooks);\n let mutationObserver;\n if (o2.recordDOM) {\n mutationObserver = initMutationObserver(o2, o2.doc);\n }\n const mousemoveHandler = initMoveObserver(o2);\n const mouseInteractionHandler = initMouseInteractionObserver(o2);\n const scrollHandler = initScrollObserver(o2);\n const viewportResizeHandler = initViewportResizeObserver(o2, {\n win: currentWindow\n });\n const inputHandler = initInputObserver(o2);\n const mediaInteractionHandler = initMediaInteractionObserver(o2);\n let styleSheetObserver = () => {\n };\n let adoptedStyleSheetObserver = () => {\n };\n let styleDeclarationObserver = () => {\n };\n let fontObserver = () => {\n };\n if (o2.recordDOM) {\n styleSheetObserver = initStyleSheetObserver(o2, { win: currentWindow });\n adoptedStyleSheetObserver = initAdoptedStyleSheetObserver(o2, o2.doc);\n styleDeclarationObserver = initStyleDeclarationObserver(o2, {\n win: currentWindow\n });\n if (o2.collectFonts) {\n fontObserver = initFontObserver(o2);\n }\n }\n const selectionObserver = initSelectionObserver(o2);\n const customElementObserver = initCustomElementObserver(o2);\n const pluginHandlers = [];\n for (const plugin3 of o2.plugins) {\n pluginHandlers.push(\n plugin3.observer(plugin3.callback, currentWindow, plugin3.options)\n );\n }\n return callbackWrapper(() => {\n mutationBuffers.forEach((b) => b.reset());\n mutationObserver == null ? void 0 : mutationObserver.disconnect();\n mousemoveHandler();\n mouseInteractionHandler();\n scrollHandler();\n viewportResizeHandler();\n inputHandler();\n mediaInteractionHandler();\n styleSheetObserver();\n adoptedStyleSheetObserver();\n styleDeclarationObserver();\n fontObserver();\n selectionObserver();\n customElementObserver();\n pluginHandlers.forEach((h) => h());\n });\n}\nfunction hasNestedCSSRule(prop) {\n return typeof window[prop] !== \"undefined\";\n}\nfunction canMonkeyPatchNestedCSSRule(prop) {\n return Boolean(\n typeof window[prop] !== \"undefined\" && // Note: Generally, this check _shouldn't_ be necessary\n // However, in some scenarios (e.g. jsdom) this can sometimes fail, so we check for it here\n window[prop].prototype && \"insertRule\" in window[prop].prototype && \"deleteRule\" in window[prop].prototype\n );\n}\nclass CrossOriginIframeMirror {\n constructor(generateIdFn) {\n __publicField(this, \"iframeIdToRemoteIdMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"iframeRemoteIdToIdMap\", /* @__PURE__ */ new WeakMap());\n this.generateIdFn = generateIdFn;\n }\n getId(iframe, remoteId, idToRemoteMap, remoteToIdMap) {\n const idToRemoteIdMap = idToRemoteMap || this.getIdToRemoteIdMap(iframe);\n const remoteIdToIdMap = remoteToIdMap || this.getRemoteIdToIdMap(iframe);\n let id = idToRemoteIdMap.get(remoteId);\n if (!id) {\n id = this.generateIdFn();\n idToRemoteIdMap.set(remoteId, id);\n remoteIdToIdMap.set(id, remoteId);\n }\n return id;\n }\n getIds(iframe, remoteId) {\n const idToRemoteIdMap = this.getIdToRemoteIdMap(iframe);\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n return remoteId.map(\n (id) => this.getId(iframe, id, idToRemoteIdMap, remoteIdToIdMap)\n );\n }\n getRemoteId(iframe, id, map) {\n const remoteIdToIdMap = map || this.getRemoteIdToIdMap(iframe);\n if (typeof id !== \"number\") return id;\n const remoteId = remoteIdToIdMap.get(id);\n if (!remoteId) return -1;\n return remoteId;\n }\n getRemoteIds(iframe, ids) {\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n return ids.map((id) => this.getRemoteId(iframe, id, remoteIdToIdMap));\n }\n reset(iframe) {\n if (!iframe) {\n this.iframeIdToRemoteIdMap = /* @__PURE__ */ new WeakMap();\n this.iframeRemoteIdToIdMap = /* @__PURE__ */ new WeakMap();\n return;\n }\n this.iframeIdToRemoteIdMap.delete(iframe);\n this.iframeRemoteIdToIdMap.delete(iframe);\n }\n getIdToRemoteIdMap(iframe) {\n let idToRemoteIdMap = this.iframeIdToRemoteIdMap.get(iframe);\n if (!idToRemoteIdMap) {\n idToRemoteIdMap = /* @__PURE__ */ new Map();\n this.iframeIdToRemoteIdMap.set(iframe, idToRemoteIdMap);\n }\n return idToRemoteIdMap;\n }\n getRemoteIdToIdMap(iframe) {\n let remoteIdToIdMap = this.iframeRemoteIdToIdMap.get(iframe);\n if (!remoteIdToIdMap) {\n remoteIdToIdMap = /* @__PURE__ */ new Map();\n this.iframeRemoteIdToIdMap.set(iframe, remoteIdToIdMap);\n }\n return remoteIdToIdMap;\n }\n}\nclass IframeManager {\n constructor(options) {\n __publicField(this, \"iframes\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"crossOriginIframeMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"crossOriginIframeMirror\", new CrossOriginIframeMirror(genId));\n __publicField(this, \"crossOriginIframeStyleMirror\");\n __publicField(this, \"crossOriginIframeRootIdMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"mirror\");\n __publicField(this, \"mutationCb\");\n __publicField(this, \"wrappedEmit\");\n __publicField(this, \"loadListener\");\n __publicField(this, \"stylesheetManager\");\n __publicField(this, \"recordCrossOriginIframes\");\n this.mutationCb = options.mutationCb;\n this.wrappedEmit = options.wrappedEmit;\n this.stylesheetManager = options.stylesheetManager;\n this.recordCrossOriginIframes = options.recordCrossOriginIframes;\n this.crossOriginIframeStyleMirror = new CrossOriginIframeMirror(\n this.stylesheetManager.styleMirror.generateId.bind(\n this.stylesheetManager.styleMirror\n )\n );\n this.mirror = options.mirror;\n if (this.recordCrossOriginIframes) {\n window.addEventListener(\"message\", this.handleMessage.bind(this));\n }\n }\n addIframe(iframeEl) {\n this.iframes.set(iframeEl, true);\n if (iframeEl.contentWindow)\n this.crossOriginIframeMap.set(iframeEl.contentWindow, iframeEl);\n }\n addLoadListener(cb) {\n this.loadListener = cb;\n }\n attachIframe(iframeEl, childSn) {\n var _a2, _b;\n this.mutationCb({\n adds: [\n {\n parentId: this.mirror.getId(iframeEl),\n nextId: null,\n node: childSn\n }\n ],\n removes: [],\n texts: [],\n attributes: [],\n isAttachIframe: true\n });\n if (this.recordCrossOriginIframes)\n (_a2 = iframeEl.contentWindow) == null ? void 0 : _a2.addEventListener(\n \"message\",\n this.handleMessage.bind(this)\n );\n (_b = this.loadListener) == null ? void 0 : _b.call(this, iframeEl);\n if (iframeEl.contentDocument && iframeEl.contentDocument.adoptedStyleSheets && iframeEl.contentDocument.adoptedStyleSheets.length > 0)\n this.stylesheetManager.adoptStyleSheets(\n iframeEl.contentDocument.adoptedStyleSheets,\n this.mirror.getId(iframeEl.contentDocument)\n );\n }\n handleMessage(message) {\n const crossOriginMessageEvent = message;\n if (crossOriginMessageEvent.data.type !== \"rrweb\" || // To filter out the rrweb messages which are forwarded by some sites.\n crossOriginMessageEvent.origin !== crossOriginMessageEvent.data.origin)\n return;\n const iframeSourceWindow = message.source;\n if (!iframeSourceWindow) return;\n const iframeEl = this.crossOriginIframeMap.get(message.source);\n if (!iframeEl) return;\n const transformedEvent = this.transformCrossOriginEvent(\n iframeEl,\n crossOriginMessageEvent.data.event\n );\n if (transformedEvent)\n this.wrappedEmit(\n transformedEvent,\n crossOriginMessageEvent.data.isCheckout\n );\n }\n transformCrossOriginEvent(iframeEl, e2) {\n var _a2;\n switch (e2.type) {\n case EventType.FullSnapshot: {\n this.crossOriginIframeMirror.reset(iframeEl);\n this.crossOriginIframeStyleMirror.reset(iframeEl);\n this.replaceIdOnNode(e2.data.node, iframeEl);\n const rootId = e2.data.node.id;\n this.crossOriginIframeRootIdMap.set(iframeEl, rootId);\n this.patchRootIdOnNode(e2.data.node, rootId);\n return {\n timestamp: e2.timestamp,\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Mutation,\n adds: [\n {\n parentId: this.mirror.getId(iframeEl),\n nextId: null,\n node: e2.data.node\n }\n ],\n removes: [],\n texts: [],\n attributes: [],\n isAttachIframe: true\n }\n };\n }\n case EventType.Meta:\n case EventType.Load:\n case EventType.DomContentLoaded: {\n return false;\n }\n case EventType.Plugin: {\n return e2;\n }\n case EventType.Custom: {\n this.replaceIds(\n e2.data.payload,\n iframeEl,\n [\"id\", \"parentId\", \"previousId\", \"nextId\"]\n );\n return e2;\n }\n case EventType.IncrementalSnapshot: {\n switch (e2.data.source) {\n case IncrementalSource.Mutation: {\n e2.data.adds.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\n \"parentId\",\n \"nextId\",\n \"previousId\"\n ]);\n this.replaceIdOnNode(n2.node, iframeEl);\n const rootId = this.crossOriginIframeRootIdMap.get(iframeEl);\n rootId && this.patchRootIdOnNode(n2.node, rootId);\n });\n e2.data.removes.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\"parentId\", \"id\"]);\n });\n e2.data.attributes.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\"id\"]);\n });\n e2.data.texts.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\"id\"]);\n });\n return e2;\n }\n case IncrementalSource.Drag:\n case IncrementalSource.TouchMove:\n case IncrementalSource.MouseMove: {\n e2.data.positions.forEach((p) => {\n this.replaceIds(p, iframeEl, [\"id\"]);\n });\n return e2;\n }\n case IncrementalSource.ViewportResize: {\n return false;\n }\n case IncrementalSource.MediaInteraction:\n case IncrementalSource.MouseInteraction:\n case IncrementalSource.Scroll:\n case IncrementalSource.CanvasMutation:\n case IncrementalSource.Input: {\n this.replaceIds(e2.data, iframeEl, [\"id\"]);\n return e2;\n }\n case IncrementalSource.StyleSheetRule:\n case IncrementalSource.StyleDeclaration: {\n this.replaceIds(e2.data, iframeEl, [\"id\"]);\n this.replaceStyleIds(e2.data, iframeEl, [\"styleId\"]);\n return e2;\n }\n case IncrementalSource.Font: {\n return e2;\n }\n case IncrementalSource.Selection: {\n e2.data.ranges.forEach((range) => {\n this.replaceIds(range, iframeEl, [\"start\", \"end\"]);\n });\n return e2;\n }\n case IncrementalSource.AdoptedStyleSheet: {\n this.replaceIds(e2.data, iframeEl, [\"id\"]);\n this.replaceStyleIds(e2.data, iframeEl, [\"styleIds\"]);\n (_a2 = e2.data.styles) == null ? void 0 : _a2.forEach((style) => {\n this.replaceStyleIds(style, iframeEl, [\"styleId\"]);\n });\n return e2;\n }\n }\n }\n }\n return false;\n }\n replace(iframeMirror, obj, iframeEl, keys) {\n for (const key of keys) {\n if (!Array.isArray(obj[key]) && typeof obj[key] !== \"number\") continue;\n if (Array.isArray(obj[key])) {\n obj[key] = iframeMirror.getIds(\n iframeEl,\n obj[key]\n );\n } else {\n obj[key] = iframeMirror.getId(iframeEl, obj[key]);\n }\n }\n return obj;\n }\n replaceIds(obj, iframeEl, keys) {\n return this.replace(this.crossOriginIframeMirror, obj, iframeEl, keys);\n }\n replaceStyleIds(obj, iframeEl, keys) {\n return this.replace(this.crossOriginIframeStyleMirror, obj, iframeEl, keys);\n }\n replaceIdOnNode(node2, iframeEl) {\n this.replaceIds(node2, iframeEl, [\"id\", \"rootId\"]);\n if (\"childNodes\" in node2) {\n node2.childNodes.forEach((child) => {\n this.replaceIdOnNode(child, iframeEl);\n });\n }\n }\n patchRootIdOnNode(node2, rootId) {\n if (node2.type !== NodeType.Document && !node2.rootId) node2.rootId = rootId;\n if (\"childNodes\" in node2) {\n node2.childNodes.forEach((child) => {\n this.patchRootIdOnNode(child, rootId);\n });\n }\n }\n}\nclass ShadowDomManager {\n constructor(options) {\n __publicField(this, \"shadowDoms\", /* @__PURE__ */ new WeakSet());\n __publicField(this, \"mutationCb\");\n __publicField(this, \"scrollCb\");\n __publicField(this, \"bypassOptions\");\n __publicField(this, \"mirror\");\n __publicField(this, \"restoreHandlers\", []);\n this.mutationCb = options.mutationCb;\n this.scrollCb = options.scrollCb;\n this.bypassOptions = options.bypassOptions;\n this.mirror = options.mirror;\n this.init();\n }\n init() {\n this.reset();\n this.patchAttachShadow(Element, document);\n }\n addShadowRoot(shadowRoot2, doc) {\n if (!isNativeShadowDom(shadowRoot2)) return;\n if (this.shadowDoms.has(shadowRoot2)) return;\n this.shadowDoms.add(shadowRoot2);\n const observer = initMutationObserver(\n {\n ...this.bypassOptions,\n doc,\n mutationCb: this.mutationCb,\n mirror: this.mirror,\n shadowDomManager: this\n },\n shadowRoot2\n );\n this.restoreHandlers.push(() => observer.disconnect());\n this.restoreHandlers.push(\n initScrollObserver({\n ...this.bypassOptions,\n scrollCb: this.scrollCb,\n // https://gist.github.com/praveenpuglia/0832da687ed5a5d7a0907046c9ef1813\n // scroll is not allowed to pass the boundary, so we need to listen the shadow document\n doc: shadowRoot2,\n mirror: this.mirror\n })\n );\n setTimeout(() => {\n if (shadowRoot2.adoptedStyleSheets && shadowRoot2.adoptedStyleSheets.length > 0)\n this.bypassOptions.stylesheetManager.adoptStyleSheets(\n shadowRoot2.adoptedStyleSheets,\n this.mirror.getId(index.host(shadowRoot2))\n );\n this.restoreHandlers.push(\n initAdoptedStyleSheetObserver(\n {\n mirror: this.mirror,\n stylesheetManager: this.bypassOptions.stylesheetManager\n },\n shadowRoot2\n )\n );\n }, 0);\n }\n /**\n * Monkey patch 'attachShadow' of an IFrameElement to observe newly added shadow doms.\n */\n observeAttachShadow(iframeElement) {\n if (!iframeElement.contentWindow || !iframeElement.contentDocument) return;\n this.patchAttachShadow(\n iframeElement.contentWindow.Element,\n iframeElement.contentDocument\n );\n }\n /**\n * Patch 'attachShadow' to observe newly added shadow doms.\n */\n patchAttachShadow(element, doc) {\n const manager = this;\n this.restoreHandlers.push(\n patch(\n element.prototype,\n \"attachShadow\",\n function(original) {\n return function(option) {\n const sRoot = original.call(this, option);\n const shadowRootEl = index.shadowRoot(this);\n if (shadowRootEl && inDom(this))\n manager.addShadowRoot(shadowRootEl, doc);\n return sRoot;\n };\n }\n )\n );\n }\n reset() {\n this.restoreHandlers.forEach((handler) => {\n try {\n handler();\n } catch (e2) {\n }\n });\n this.restoreHandlers = [];\n this.shadowDoms = /* @__PURE__ */ new WeakSet();\n }\n}\nvar chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nvar lookup = typeof Uint8Array === \"undefined\" ? [] : new Uint8Array(256);\nfor (var i$1 = 0; i$1 < chars.length; i$1++) {\n lookup[chars.charCodeAt(i$1)] = i$1;\n}\nvar encode = function(arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i2, len = bytes.length, base64 = \"\";\n for (i2 = 0; i2 < len; i2 += 3) {\n base64 += chars[bytes[i2] >> 2];\n base64 += chars[(bytes[i2] & 3) << 4 | bytes[i2 + 1] >> 4];\n base64 += chars[(bytes[i2 + 1] & 15) << 2 | bytes[i2 + 2] >> 6];\n base64 += chars[bytes[i2 + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + \"=\";\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + \"==\";\n }\n return base64;\n};\nconst canvasVarMap = /* @__PURE__ */ new Map();\nfunction variableListFor$1(ctx, ctor) {\n let contextMap = canvasVarMap.get(ctx);\n if (!contextMap) {\n contextMap = /* @__PURE__ */ new Map();\n canvasVarMap.set(ctx, contextMap);\n }\n if (!contextMap.has(ctor)) {\n contextMap.set(ctor, []);\n }\n return contextMap.get(ctor);\n}\nconst saveWebGLVar = (value, win, ctx) => {\n if (!value || !(isInstanceOfWebGLObject(value, win) || typeof value === \"object\"))\n return;\n const name = value.constructor.name;\n const list2 = variableListFor$1(ctx, name);\n let index2 = list2.indexOf(value);\n if (index2 === -1) {\n index2 = list2.length;\n list2.push(value);\n }\n return index2;\n};\nfunction serializeArg(value, win, ctx) {\n if (value instanceof Array) {\n return value.map((arg) => serializeArg(arg, win, ctx));\n } else if (value === null) {\n return value;\n } else if (value instanceof Float32Array || value instanceof Float64Array || value instanceof Int32Array || value instanceof Uint32Array || value instanceof Uint8Array || value instanceof Uint16Array || value instanceof Int16Array || value instanceof Int8Array || value instanceof Uint8ClampedArray) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [Object.values(value)]\n };\n } else if (\n // SharedArrayBuffer disabled on most browsers due to spectre.\n // More info: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/SharedArrayBuffer\n // value instanceof SharedArrayBuffer ||\n value instanceof ArrayBuffer\n ) {\n const name = value.constructor.name;\n const base64 = encode(value);\n return {\n rr_type: name,\n base64\n };\n } else if (value instanceof DataView) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [\n serializeArg(value.buffer, win, ctx),\n value.byteOffset,\n value.byteLength\n ]\n };\n } else if (value instanceof HTMLImageElement) {\n const name = value.constructor.name;\n const { src } = value;\n return {\n rr_type: name,\n src\n };\n } else if (value instanceof HTMLCanvasElement) {\n const name = \"HTMLImageElement\";\n const src = value.toDataURL();\n return {\n rr_type: name,\n src\n };\n } else if (value instanceof ImageData) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [serializeArg(value.data, win, ctx), value.width, value.height]\n };\n } else if (isInstanceOfWebGLObject(value, win) || typeof value === \"object\") {\n const name = value.constructor.name;\n const index2 = saveWebGLVar(value, win, ctx);\n return {\n rr_type: name,\n index: index2\n };\n }\n return value;\n}\nconst serializeArgs = (args, win, ctx) => {\n return args.map((arg) => serializeArg(arg, win, ctx));\n};\nconst isInstanceOfWebGLObject = (value, win) => {\n const webGLConstructorNames = [\n \"WebGLActiveInfo\",\n \"WebGLBuffer\",\n \"WebGLFramebuffer\",\n \"WebGLProgram\",\n \"WebGLRenderbuffer\",\n \"WebGLShader\",\n \"WebGLShaderPrecisionFormat\",\n \"WebGLTexture\",\n \"WebGLUniformLocation\",\n \"WebGLVertexArrayObject\",\n // In old Chrome versions, value won't be an instanceof WebGLVertexArrayObject.\n \"WebGLVertexArrayObjectOES\"\n ];\n const supportedWebGLConstructorNames = webGLConstructorNames.filter(\n (name) => typeof win[name] === \"function\"\n );\n return Boolean(\n supportedWebGLConstructorNames.find(\n (name) => value instanceof win[name]\n )\n );\n};\nfunction initCanvas2DMutationObserver(cb, win, blockClass, blockSelector) {\n const handlers = [];\n const props2D = Object.getOwnPropertyNames(\n win.CanvasRenderingContext2D.prototype\n );\n for (const prop of props2D) {\n try {\n if (typeof win.CanvasRenderingContext2D.prototype[prop] !== \"function\") {\n continue;\n }\n const restoreHandler = patch(\n win.CanvasRenderingContext2D.prototype,\n prop,\n function(original) {\n return function(...args) {\n if (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\n setTimeout(() => {\n const recordArgs = serializeArgs(args, win, this);\n cb(this.canvas, {\n type: CanvasContext[\"2D\"],\n property: prop,\n args: recordArgs\n });\n }, 0);\n }\n return original.apply(this, args);\n };\n }\n );\n handlers.push(restoreHandler);\n } catch {\n const hookHandler = hookSetter(\n win.CanvasRenderingContext2D.prototype,\n prop,\n {\n set(v2) {\n cb(this.canvas, {\n type: CanvasContext[\"2D\"],\n property: prop,\n args: [v2],\n setter: true\n });\n }\n }\n );\n handlers.push(hookHandler);\n }\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\nfunction getNormalizedContextName(contextType) {\n return contextType === \"experimental-webgl\" ? \"webgl\" : contextType;\n}\nfunction initCanvasContextObserver(win, blockClass, blockSelector, setPreserveDrawingBufferToTrue) {\n const handlers = [];\n try {\n const restoreHandler = patch(\n win.HTMLCanvasElement.prototype,\n \"getContext\",\n function(original) {\n return function(contextType, ...args) {\n if (!isBlocked(this, blockClass, blockSelector, true)) {\n const ctxName = getNormalizedContextName(contextType);\n if (!(\"__context\" in this)) this.__context = ctxName;\n if (setPreserveDrawingBufferToTrue && [\"webgl\", \"webgl2\"].includes(ctxName)) {\n if (args[0] && typeof args[0] === \"object\") {\n const contextAttributes = args[0];\n if (!contextAttributes.preserveDrawingBuffer) {\n contextAttributes.preserveDrawingBuffer = true;\n }\n } else {\n args.splice(0, 1, {\n preserveDrawingBuffer: true\n });\n }\n }\n }\n return original.apply(this, [contextType, ...args]);\n };\n }\n );\n handlers.push(restoreHandler);\n } catch {\n console.error(\"failed to patch HTMLCanvasElement.prototype.getContext\");\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\nfunction patchGLPrototype(prototype, type, cb, blockClass, blockSelector, win) {\n const handlers = [];\n const props = Object.getOwnPropertyNames(prototype);\n for (const prop of props) {\n if (\n //prop.startsWith('get') || // e.g. getProgramParameter, but too risky\n [\n \"isContextLost\",\n \"canvas\",\n \"drawingBufferWidth\",\n \"drawingBufferHeight\"\n ].includes(prop)\n ) {\n continue;\n }\n try {\n if (typeof prototype[prop] !== \"function\") {\n continue;\n }\n const restoreHandler = patch(\n prototype,\n prop,\n function(original) {\n return function(...args) {\n const result2 = original.apply(this, args);\n saveWebGLVar(result2, win, this);\n if (\"tagName\" in this.canvas && !isBlocked(this.canvas, blockClass, blockSelector, true)) {\n const recordArgs = serializeArgs(args, win, this);\n const mutation = {\n type,\n property: prop,\n args: recordArgs\n };\n cb(this.canvas, mutation);\n }\n return result2;\n };\n }\n );\n handlers.push(restoreHandler);\n } catch {\n const hookHandler = hookSetter(prototype, prop, {\n set(v2) {\n cb(this.canvas, {\n type,\n property: prop,\n args: [v2],\n setter: true\n });\n }\n });\n handlers.push(hookHandler);\n }\n }\n return handlers;\n}\nfunction initCanvasWebGLMutationObserver(cb, win, blockClass, blockSelector) {\n const handlers = [];\n handlers.push(\n ...patchGLPrototype(\n win.WebGLRenderingContext.prototype,\n CanvasContext.WebGL,\n cb,\n blockClass,\n blockSelector,\n win\n )\n );\n if (typeof win.WebGL2RenderingContext !== \"undefined\") {\n handlers.push(\n ...patchGLPrototype(\n win.WebGL2RenderingContext.prototype,\n CanvasContext.WebGL2,\n cb,\n blockClass,\n blockSelector,\n win\n )\n );\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\nconst encodedJs = \"KGZ1bmN0aW9uKCkgewogICJ1c2Ugc3RyaWN0IjsKICB2YXIgY2hhcnMgPSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7CiAgdmFyIGxvb2t1cCA9IHR5cGVvZiBVaW50OEFycmF5ID09PSAidW5kZWZpbmVkIiA/IFtdIDogbmV3IFVpbnQ4QXJyYXkoMjU2KTsKICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYXJzLmxlbmd0aDsgaSsrKSB7CiAgICBsb29rdXBbY2hhcnMuY2hhckNvZGVBdChpKV0gPSBpOwogIH0KICB2YXIgZW5jb2RlID0gZnVuY3Rpb24oYXJyYXlidWZmZXIpIHsKICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGFycmF5YnVmZmVyKSwgaTIsIGxlbiA9IGJ5dGVzLmxlbmd0aCwgYmFzZTY0ID0gIiI7CiAgICBmb3IgKGkyID0gMDsgaTIgPCBsZW47IGkyICs9IDMpIHsKICAgICAgYmFzZTY0ICs9IGNoYXJzW2J5dGVzW2kyXSA+PiAyXTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMl0gJiAzKSA8PCA0IHwgYnl0ZXNbaTIgKyAxXSA+PiA0XTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMiArIDFdICYgMTUpIDw8IDIgfCBieXRlc1tpMiArIDJdID4+IDZdOwogICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaTIgKyAyXSAmIDYzXTsKICAgIH0KICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgIj0iOwogICAgfSBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgIj09IjsKICAgIH0KICAgIHJldHVybiBiYXNlNjQ7CiAgfTsKICBjb25zdCBsYXN0QmxvYk1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7CiAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTsKICBhc3luYyBmdW5jdGlvbiBnZXRUcmFuc3BhcmVudEJsb2JGb3Iod2lkdGgsIGhlaWdodCwgZGF0YVVSTE9wdGlvbnMpIHsKICAgIGNvbnN0IGlkID0gYCR7d2lkdGh9LSR7aGVpZ2h0fWA7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBpZiAodHJhbnNwYXJlbnRCbG9iTWFwLmhhcyhpZCkpIHJldHVybiB0cmFuc3BhcmVudEJsb2JNYXAuZ2V0KGlkKTsKICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsKICAgICAgb2Zmc2NyZWVuLmdldENvbnRleHQoIjJkIik7CiAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCBvZmZzY3JlZW4uY29udmVydFRvQmxvYihkYXRhVVJMT3B0aW9ucyk7CiAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gYXdhaXQgYmxvYi5hcnJheUJ1ZmZlcigpOwogICAgICBjb25zdCBiYXNlNjQgPSBlbmNvZGUoYXJyYXlCdWZmZXIpOwogICAgICB0cmFuc3BhcmVudEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICByZXR1cm4gYmFzZTY0OwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuICIiOwogICAgfQogIH0KICBjb25zdCB3b3JrZXIgPSBzZWxmOwogIHdvcmtlci5vbm1lc3NhZ2UgPSBhc3luYyBmdW5jdGlvbihlKSB7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBjb25zdCB7IGlkLCBiaXRtYXAsIHdpZHRoLCBoZWlnaHQsIGRhdGFVUkxPcHRpb25zIH0gPSBlLmRhdGE7CiAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKAogICAgICAgIHdpZHRoLAogICAgICAgIGhlaWdodCwKICAgICAgICBkYXRhVVJMT3B0aW9ucwogICAgICApOwogICAgICBjb25zdCBvZmZzY3JlZW4gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpOwogICAgICBjb25zdCBjdHggPSBvZmZzY3JlZW4uZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgY3R4LmRyYXdJbWFnZShiaXRtYXAsIDAsIDApOwogICAgICBiaXRtYXAuY2xvc2UoKTsKICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IG9mZnNjcmVlbi5jb252ZXJ0VG9CbG9iKGRhdGFVUkxPcHRpb25zKTsKICAgICAgY29uc3QgdHlwZSA9IGJsb2IudHlwZTsKICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBhd2FpdCBibG9iLmFycmF5QnVmZmVyKCk7CiAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7CiAgICAgIGlmICghbGFzdEJsb2JNYXAuaGFzKGlkKSAmJiBhd2FpdCB0cmFuc3BhcmVudEJhc2U2NCA9PT0gYmFzZTY0KSB7CiAgICAgICAgbGFzdEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICAgIHJldHVybiB3b3JrZXIucG9zdE1lc3NhZ2UoeyBpZCB9KTsKICAgICAgfQogICAgICBpZiAobGFzdEJsb2JNYXAuZ2V0KGlkKSA9PT0gYmFzZTY0KSByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQgfSk7CiAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7CiAgICAgICAgaWQsCiAgICAgICAgdHlwZSwKICAgICAgICBiYXNlNjQsCiAgICAgICAgd2lkdGgsCiAgICAgICAgaGVpZ2h0CiAgICAgIH0pOwogICAgICBsYXN0QmxvYk1hcC5zZXQoaWQsIGJhc2U2NCk7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IGUuZGF0YS5pZCB9KTsKICAgIH0KICB9Owp9KSgpOwovLyMgc291cmNlTWFwcGluZ1VSTD1pbWFnZS1iaXRtYXAtZGF0YS11cmwtd29ya2VyLUlKcEM3Z19iLmpzLm1hcAo=\";\nconst decodeBase64 = (base64) => Uint8Array.from(atob(base64), (c2) => c2.charCodeAt(0));\nconst blob = typeof window !== \"undefined\" && window.Blob && new Blob([decodeBase64(encodedJs)], { type: \"text/javascript;charset=utf-8\" });\nfunction WorkerWrapper(options) {\n let objURL;\n try {\n objURL = blob && (window.URL || window.webkitURL).createObjectURL(blob);\n if (!objURL) throw \"\";\n const worker = new Worker(objURL, {\n name: options == null ? void 0 : options.name\n });\n worker.addEventListener(\"error\", () => {\n (window.URL || window.webkitURL).revokeObjectURL(objURL);\n });\n return worker;\n } catch (e2) {\n return new Worker(\n \"data:text/javascript;base64,\" + encodedJs,\n {\n name: options == null ? void 0 : options.name\n }\n );\n } finally {\n objURL && (window.URL || window.webkitURL).revokeObjectURL(objURL);\n }\n}\nclass CanvasManager {\n constructor(options) {\n __publicField(this, \"pendingCanvasMutations\", /* @__PURE__ */ new Map());\n __publicField(this, \"rafStamps\", { latestId: 0, invokeId: null });\n __publicField(this, \"mirror\");\n __publicField(this, \"mutationCb\");\n __publicField(this, \"resetObservers\");\n __publicField(this, \"frozen\", false);\n __publicField(this, \"locked\", false);\n __publicField(this, \"processMutation\", (target, mutation) => {\n const newFrame = this.rafStamps.invokeId && this.rafStamps.latestId !== this.rafStamps.invokeId;\n if (newFrame || !this.rafStamps.invokeId)\n this.rafStamps.invokeId = this.rafStamps.latestId;\n if (!this.pendingCanvasMutations.has(target)) {\n this.pendingCanvasMutations.set(target, []);\n }\n this.pendingCanvasMutations.get(target).push(mutation);\n });\n const {\n sampling = \"all\",\n win,\n blockClass,\n blockSelector,\n recordCanvas,\n dataURLOptions\n } = options;\n this.mutationCb = options.mutationCb;\n this.mirror = options.mirror;\n if (recordCanvas && sampling === \"all\")\n this.initCanvasMutationObserver(win, blockClass, blockSelector);\n if (recordCanvas && typeof sampling === \"number\")\n this.initCanvasFPSObserver(sampling, win, blockClass, blockSelector, {\n dataURLOptions\n });\n }\n reset() {\n this.pendingCanvasMutations.clear();\n this.resetObservers && this.resetObservers();\n }\n freeze() {\n this.frozen = true;\n }\n unfreeze() {\n this.frozen = false;\n }\n lock() {\n this.locked = true;\n }\n unlock() {\n this.locked = false;\n }\n initCanvasFPSObserver(fps, win, blockClass, blockSelector, options) {\n const canvasContextReset = initCanvasContextObserver(\n win,\n blockClass,\n blockSelector,\n true\n );\n const snapshotInProgressMap = /* @__PURE__ */ new Map();\n const worker = new WorkerWrapper();\n worker.onmessage = (e2) => {\n const { id } = e2.data;\n snapshotInProgressMap.set(id, false);\n if (!(\"base64\" in e2.data)) return;\n const { base64, type, width, height } = e2.data;\n this.mutationCb({\n id,\n type: CanvasContext[\"2D\"],\n commands: [\n {\n property: \"clearRect\",\n // wipe canvas\n args: [0, 0, width, height]\n },\n {\n property: \"drawImage\",\n // draws (semi-transparent) image\n args: [\n {\n rr_type: \"ImageBitmap\",\n args: [\n {\n rr_type: \"Blob\",\n data: [{ rr_type: \"ArrayBuffer\", base64 }],\n type\n }\n ]\n },\n 0,\n 0\n ]\n }\n ]\n });\n };\n const timeBetweenSnapshots = 1e3 / fps;\n let lastSnapshotTime = 0;\n let rafId;\n const getCanvas = () => {\n const matchedCanvas = [];\n win.document.querySelectorAll(\"canvas\").forEach((canvas) => {\n if (!isBlocked(canvas, blockClass, blockSelector, true)) {\n matchedCanvas.push(canvas);\n }\n });\n return matchedCanvas;\n };\n const takeCanvasSnapshots = (timestamp) => {\n if (lastSnapshotTime && timestamp - lastSnapshotTime < timeBetweenSnapshots) {\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n return;\n }\n lastSnapshotTime = timestamp;\n getCanvas().forEach(async (canvas) => {\n var _a2;\n const id = this.mirror.getId(canvas);\n if (snapshotInProgressMap.get(id)) return;\n if (canvas.width === 0 || canvas.height === 0) return;\n snapshotInProgressMap.set(id, true);\n if ([\"webgl\", \"webgl2\"].includes(canvas.__context)) {\n const context = canvas.getContext(canvas.__context);\n if (((_a2 = context == null ? void 0 : context.getContextAttributes()) == null ? void 0 : _a2.preserveDrawingBuffer) === false) {\n context.clear(context.COLOR_BUFFER_BIT);\n }\n }\n const bitmap = await createImageBitmap(canvas);\n worker.postMessage(\n {\n id,\n bitmap,\n width: canvas.width,\n height: canvas.height,\n dataURLOptions: options.dataURLOptions\n },\n [bitmap]\n );\n });\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n };\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n this.resetObservers = () => {\n canvasContextReset();\n cancelAnimationFrame(rafId);\n };\n }\n initCanvasMutationObserver(win, blockClass, blockSelector) {\n this.startRAFTimestamping();\n this.startPendingCanvasMutationFlusher();\n const canvasContextReset = initCanvasContextObserver(\n win,\n blockClass,\n blockSelector,\n false\n );\n const canvas2DReset = initCanvas2DMutationObserver(\n this.processMutation.bind(this),\n win,\n blockClass,\n blockSelector\n );\n const canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(\n this.processMutation.bind(this),\n win,\n blockClass,\n blockSelector\n );\n this.resetObservers = () => {\n canvasContextReset();\n canvas2DReset();\n canvasWebGL1and2Reset();\n };\n }\n startPendingCanvasMutationFlusher() {\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\n }\n startRAFTimestamping() {\n const setLatestRAFTimestamp = (timestamp) => {\n this.rafStamps.latestId = timestamp;\n requestAnimationFrame(setLatestRAFTimestamp);\n };\n requestAnimationFrame(setLatestRAFTimestamp);\n }\n flushPendingCanvasMutations() {\n this.pendingCanvasMutations.forEach(\n (_values, canvas) => {\n const id = this.mirror.getId(canvas);\n this.flushPendingCanvasMutationFor(canvas, id);\n }\n );\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\n }\n flushPendingCanvasMutationFor(canvas, id) {\n if (this.frozen || this.locked) {\n return;\n }\n const valuesWithType = this.pendingCanvasMutations.get(canvas);\n if (!valuesWithType || id === -1) return;\n const values = valuesWithType.map((value) => {\n const { type: type2, ...rest } = value;\n return rest;\n });\n const { type } = valuesWithType[0];\n this.mutationCb({ id, type, commands: values });\n this.pendingCanvasMutations.delete(canvas);\n }\n}\nclass StylesheetManager {\n constructor(options) {\n __publicField(this, \"trackedLinkElements\", /* @__PURE__ */ new WeakSet());\n __publicField(this, \"mutationCb\");\n __publicField(this, \"adoptedStyleSheetCb\");\n __publicField(this, \"styleMirror\", new StyleSheetMirror());\n this.mutationCb = options.mutationCb;\n this.adoptedStyleSheetCb = options.adoptedStyleSheetCb;\n }\n attachLinkElement(linkEl, childSn) {\n if (\"_cssText\" in childSn.attributes)\n this.mutationCb({\n adds: [],\n removes: [],\n texts: [],\n attributes: [\n {\n id: childSn.id,\n attributes: childSn.attributes\n }\n ]\n });\n this.trackLinkElement(linkEl);\n }\n trackLinkElement(linkEl) {\n if (this.trackedLinkElements.has(linkEl)) return;\n this.trackedLinkElements.add(linkEl);\n this.trackStylesheetInLinkElement(linkEl);\n }\n adoptStyleSheets(sheets, hostId) {\n if (sheets.length === 0) return;\n const adoptedStyleSheetData = {\n id: hostId,\n styleIds: []\n };\n const styles = [];\n for (const sheet of sheets) {\n let styleId;\n if (!this.styleMirror.has(sheet)) {\n styleId = this.styleMirror.add(sheet);\n styles.push({\n styleId,\n rules: Array.from(sheet.rules || CSSRule, (r2, index2) => ({\n rule: stringifyRule(r2, sheet.href),\n index: index2\n }))\n });\n } else styleId = this.styleMirror.getId(sheet);\n adoptedStyleSheetData.styleIds.push(styleId);\n }\n if (styles.length > 0) adoptedStyleSheetData.styles = styles;\n this.adoptedStyleSheetCb(adoptedStyleSheetData);\n }\n reset() {\n this.styleMirror.reset();\n this.trackedLinkElements = /* @__PURE__ */ new WeakSet();\n }\n // TODO: take snapshot on stylesheet reload by applying event listener\n trackStylesheetInLinkElement(_linkEl) {\n }\n}\nclass ProcessedNodeManager {\n constructor() {\n __publicField(this, \"nodeMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"active\", false);\n }\n inOtherBuffer(node2, thisBuffer) {\n const buffers = this.nodeMap.get(node2);\n return buffers && Array.from(buffers).some((buffer) => buffer !== thisBuffer);\n }\n add(node2, buffer) {\n if (!this.active) {\n this.active = true;\n requestAnimationFrame(() => {\n this.nodeMap = /* @__PURE__ */ new WeakMap();\n this.active = false;\n });\n }\n this.nodeMap.set(node2, (this.nodeMap.get(node2) || /* @__PURE__ */ new Set()).add(buffer));\n }\n destroy() {\n }\n}\nlet wrappedEmit;\nlet takeFullSnapshot$1;\nlet canvasManager;\nlet recording = false;\ntry {\n if (Array.from([1], (x2) => x2 * 2)[0] !== 2) {\n const cleanFrame = document.createElement(\"iframe\");\n document.body.appendChild(cleanFrame);\n Array.from = ((_a = cleanFrame.contentWindow) == null ? void 0 : _a.Array.from) || Array.from;\n document.body.removeChild(cleanFrame);\n }\n} catch (err) {\n console.debug(\"Unable to override Array.from\", err);\n}\nconst mirror = createMirror$2();\nfunction record(options = {}) {\n const {\n emit,\n checkoutEveryNms,\n checkoutEveryNth,\n blockClass = \"rr-block\",\n blockSelector = null,\n ignoreClass = \"rr-ignore\",\n ignoreSelector = null,\n maskTextClass = \"rr-mask\",\n maskTextSelector = null,\n inlineStylesheet = true,\n maskAllInputs,\n maskInputOptions: _maskInputOptions,\n slimDOMOptions: _slimDOMOptions,\n maskInputFn,\n maskTextFn,\n hooks,\n packFn,\n sampling = {},\n dataURLOptions = {},\n mousemoveWait,\n recordDOM = true,\n recordCanvas = false,\n recordCrossOriginIframes = false,\n recordAfter = options.recordAfter === \"DOMContentLoaded\" ? options.recordAfter : \"load\",\n userTriggeredOnInput = false,\n collectFonts = false,\n inlineImages = false,\n plugins,\n keepIframeSrcFn = () => false,\n ignoreCSSAttributes = /* @__PURE__ */ new Set([]),\n errorHandler: errorHandler2\n } = options;\n registerErrorHandler(errorHandler2);\n const inEmittingFrame = recordCrossOriginIframes ? window.parent === window : true;\n let passEmitsToParent = false;\n if (!inEmittingFrame) {\n try {\n if (window.parent.document) {\n passEmitsToParent = false;\n }\n } catch (e2) {\n passEmitsToParent = true;\n }\n }\n if (inEmittingFrame && !emit) {\n throw new Error(\"emit function is required\");\n }\n if (!inEmittingFrame && !passEmitsToParent) {\n return () => {\n };\n }\n if (mousemoveWait !== void 0 && sampling.mousemove === void 0) {\n sampling.mousemove = mousemoveWait;\n }\n mirror.reset();\n const maskInputOptions = maskAllInputs === true ? {\n color: true,\n date: true,\n \"datetime-local\": true,\n email: true,\n month: true,\n number: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true,\n textarea: true,\n select: true,\n password: true\n } : _maskInputOptions !== void 0 ? _maskInputOptions : { password: true };\n const slimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === \"all\" ? {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaVerification: true,\n // the following are off for slimDOMOptions === true,\n // as they destroy some (hidden) info:\n headMetaAuthorship: _slimDOMOptions === \"all\",\n headMetaDescKeywords: _slimDOMOptions === \"all\",\n headTitleMutations: _slimDOMOptions === \"all\"\n } : _slimDOMOptions ? _slimDOMOptions : {};\n polyfill$1();\n let lastFullSnapshotEvent;\n let incrementalSnapshotCount = 0;\n const eventProcessor = (e2) => {\n for (const plugin3 of plugins || []) {\n if (plugin3.eventProcessor) {\n e2 = plugin3.eventProcessor(e2);\n }\n }\n if (packFn && // Disable packing events which will be emitted to parent frames.\n !passEmitsToParent) {\n e2 = packFn(e2);\n }\n return e2;\n };\n wrappedEmit = (r2, isCheckout) => {\n var _a2;\n const e2 = r2;\n e2.timestamp = nowTimestamp();\n if (((_a2 = mutationBuffers[0]) == null ? void 0 : _a2.isFrozen()) && e2.type !== EventType.FullSnapshot && !(e2.type === EventType.IncrementalSnapshot && e2.data.source === IncrementalSource.Mutation)) {\n mutationBuffers.forEach((buf) => buf.unfreeze());\n }\n if (inEmittingFrame) {\n emit == null ? void 0 : emit(eventProcessor(e2), isCheckout);\n } else if (passEmitsToParent) {\n const message = {\n type: \"rrweb\",\n event: eventProcessor(e2),\n origin: window.location.origin,\n isCheckout\n };\n window.parent.postMessage(message, \"*\");\n }\n if (e2.type === EventType.FullSnapshot) {\n lastFullSnapshotEvent = e2;\n incrementalSnapshotCount = 0;\n } else if (e2.type === EventType.IncrementalSnapshot) {\n if (e2.data.source === IncrementalSource.Mutation && e2.data.isAttachIframe) {\n return;\n }\n incrementalSnapshotCount++;\n const exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\n const exceedTime = checkoutEveryNms && e2.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\n if (exceedCount || exceedTime) {\n takeFullSnapshot$1(true);\n }\n }\n };\n const wrappedMutationEmit = (m) => {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Mutation,\n ...m\n }\n });\n };\n const wrappedScrollEmit = (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Scroll,\n ...p\n }\n });\n const wrappedCanvasMutationEmit = (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.CanvasMutation,\n ...p\n }\n });\n const wrappedAdoptedStyleSheetEmit = (a2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.AdoptedStyleSheet,\n ...a2\n }\n });\n const stylesheetManager = new StylesheetManager({\n mutationCb: wrappedMutationEmit,\n adoptedStyleSheetCb: wrappedAdoptedStyleSheetEmit\n });\n const iframeManager = new IframeManager({\n mirror,\n mutationCb: wrappedMutationEmit,\n stylesheetManager,\n recordCrossOriginIframes,\n wrappedEmit\n });\n for (const plugin3 of plugins || []) {\n if (plugin3.getMirror)\n plugin3.getMirror({\n nodeMirror: mirror,\n crossOriginIframeMirror: iframeManager.crossOriginIframeMirror,\n crossOriginIframeStyleMirror: iframeManager.crossOriginIframeStyleMirror\n });\n }\n const processedNodeManager = new ProcessedNodeManager();\n canvasManager = new CanvasManager({\n recordCanvas,\n mutationCb: wrappedCanvasMutationEmit,\n win: window,\n blockClass,\n blockSelector,\n mirror,\n sampling: sampling.canvas,\n dataURLOptions\n });\n const shadowDomManager = new ShadowDomManager({\n mutationCb: wrappedMutationEmit,\n scrollCb: wrappedScrollEmit,\n bypassOptions: {\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n inlineStylesheet,\n maskInputOptions,\n dataURLOptions,\n maskTextFn,\n maskInputFn,\n recordCanvas,\n inlineImages,\n sampling,\n slimDOMOptions,\n iframeManager,\n stylesheetManager,\n canvasManager,\n keepIframeSrcFn,\n processedNodeManager\n },\n mirror\n });\n takeFullSnapshot$1 = (isCheckout = false) => {\n if (!recordDOM) {\n return;\n }\n wrappedEmit(\n {\n type: EventType.Meta,\n data: {\n href: window.location.href,\n width: getWindowWidth(),\n height: getWindowHeight()\n }\n },\n isCheckout\n );\n stylesheetManager.reset();\n shadowDomManager.init();\n mutationBuffers.forEach((buf) => buf.lock());\n const node2 = snapshot(document, {\n mirror,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n inlineStylesheet,\n maskAllInputs: maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOM: slimDOMOptions,\n dataURLOptions,\n recordCanvas,\n inlineImages,\n onSerialize: (n2) => {\n if (isSerializedIframe(n2, mirror)) {\n iframeManager.addIframe(n2);\n }\n if (isSerializedStylesheet(n2, mirror)) {\n stylesheetManager.trackLinkElement(n2);\n }\n if (hasShadowRoot(n2)) {\n shadowDomManager.addShadowRoot(index.shadowRoot(n2), document);\n }\n },\n onIframeLoad: (iframe, childSn) => {\n iframeManager.attachIframe(iframe, childSn);\n shadowDomManager.observeAttachShadow(iframe);\n },\n onStylesheetLoad: (linkEl, childSn) => {\n stylesheetManager.attachLinkElement(linkEl, childSn);\n },\n keepIframeSrcFn\n });\n if (!node2) {\n return console.warn(\"Failed to snapshot the document\");\n }\n wrappedEmit(\n {\n type: EventType.FullSnapshot,\n data: {\n node: node2,\n initialOffset: getWindowScroll(window)\n }\n },\n isCheckout\n );\n mutationBuffers.forEach((buf) => buf.unlock());\n if (document.adoptedStyleSheets && document.adoptedStyleSheets.length > 0)\n stylesheetManager.adoptStyleSheets(\n document.adoptedStyleSheets,\n mirror.getId(document)\n );\n };\n try {\n const handlers = [];\n const observe = (doc) => {\n var _a2;\n return callbackWrapper(initObservers)(\n {\n mutationCb: wrappedMutationEmit,\n mousemoveCb: (positions, source) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source,\n positions\n }\n }),\n mouseInteractionCb: (d) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.MouseInteraction,\n ...d\n }\n }),\n scrollCb: wrappedScrollEmit,\n viewportResizeCb: (d) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.ViewportResize,\n ...d\n }\n }),\n inputCb: (v2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Input,\n ...v2\n }\n }),\n mediaInteractionCb: (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.MediaInteraction,\n ...p\n }\n }),\n styleSheetRuleCb: (r2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.StyleSheetRule,\n ...r2\n }\n }),\n styleDeclarationCb: (r2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.StyleDeclaration,\n ...r2\n }\n }),\n canvasMutationCb: wrappedCanvasMutationEmit,\n fontCb: (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Font,\n ...p\n }\n }),\n selectionCb: (p) => {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Selection,\n ...p\n }\n });\n },\n customElementCb: (c2) => {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.CustomElement,\n ...c2\n }\n });\n },\n blockClass,\n ignoreClass,\n ignoreSelector,\n maskTextClass,\n maskTextSelector,\n maskInputOptions,\n inlineStylesheet,\n sampling,\n recordDOM,\n recordCanvas,\n inlineImages,\n userTriggeredOnInput,\n collectFonts,\n doc,\n maskInputFn,\n maskTextFn,\n keepIframeSrcFn,\n blockSelector,\n slimDOMOptions,\n dataURLOptions,\n mirror,\n iframeManager,\n stylesheetManager,\n shadowDomManager,\n processedNodeManager,\n canvasManager,\n ignoreCSSAttributes,\n plugins: ((_a2 = plugins == null ? void 0 : plugins.filter((p) => p.observer)) == null ? void 0 : _a2.map((p) => ({\n observer: p.observer,\n options: p.options,\n callback: (payload) => wrappedEmit({\n type: EventType.Plugin,\n data: {\n plugin: p.name,\n payload\n }\n })\n }))) || []\n },\n hooks\n );\n };\n iframeManager.addLoadListener((iframeEl) => {\n try {\n handlers.push(observe(iframeEl.contentDocument));\n } catch (error) {\n console.warn(error);\n }\n });\n const init = () => {\n takeFullSnapshot$1();\n handlers.push(observe(document));\n recording = true;\n };\n if (document.readyState === \"interactive\" || document.readyState === \"complete\") {\n init();\n } else {\n handlers.push(\n on(\"DOMContentLoaded\", () => {\n wrappedEmit({\n type: EventType.DomContentLoaded,\n data: {}\n });\n if (recordAfter === \"DOMContentLoaded\") init();\n })\n );\n handlers.push(\n on(\n \"load\",\n () => {\n wrappedEmit({\n type: EventType.Load,\n data: {}\n });\n if (recordAfter === \"load\") init();\n },\n window\n )\n );\n }\n return () => {\n handlers.forEach((h) => h());\n processedNodeManager.destroy();\n recording = false;\n unregisterErrorHandler();\n };\n } catch (error) {\n console.warn(error);\n }\n}\nrecord.addCustomEvent = (tag, payload) => {\n if (!recording) {\n throw new Error(\"please add custom event after start recording\");\n }\n wrappedEmit({\n type: EventType.Custom,\n data: {\n tag,\n payload\n }\n });\n};\nrecord.freezePage = () => {\n mutationBuffers.forEach((buf) => buf.freeze());\n};\nrecord.takeFullSnapshot = (isCheckout) => {\n if (!recording) {\n throw new Error(\"please take full snapshot after start recording\");\n }\n takeFullSnapshot$1(isCheckout);\n};\nrecord.mirror = mirror;\nvar n;\n!function(t2) {\n t2[t2.NotStarted = 0] = \"NotStarted\", t2[t2.Running = 1] = \"Running\", t2[t2.Stopped = 2] = \"Stopped\";\n}(n || (n = {}));\nexport {\n record\n};\n//# sourceMappingURL=record.js.map\n","import { isMobile } from \"./GleapHelper\";\nimport { record } from \"@rrweb/record\";\n\nexport default class GleapReplayRecorder {\n startDate = undefined;\n events = [];\n bufferSize = 0;\n stopFunction = undefined;\n customOptions = {};\n\n // GleapReplayRecorder singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapReplayRecorder();\n return this.instance;\n } else {\n return this.instance;\n }\n }\n\n constructor() {}\n\n setOptions(options) {\n this.customOptions = options;\n }\n\n /**\n * Start replays\n * @returns\n */\n start() {\n this.stop();\n\n this.startDate = Date.now();\n var events = this.events;\n\n var options = {\n inlineStylesheet: true,\n blockClass: \"gl-block\",\n ignoreClass: \"gl-ignore\",\n maskTextClass: \"gl-mask\",\n dataURLOptions: {\n quality: 0.7,\n },\n recordCanvas: false,\n sampling: {\n scroll: 150,\n mouseInteraction: {\n MouseUp: false,\n MouseDown: false,\n Click: true,\n ContextMenu: true,\n DblClick: true,\n Focus: true,\n Blur: true,\n TouchStart: true,\n TouchEnd: false,\n },\n },\n collectFonts: false,\n recordCrossOriginIframes: false,\n };\n\n try {\n this.stopFunction = record({\n ...options,\n ...this.customOptions,\n emit(rrwebEvent) {\n const { event } = ensureMaxMessageSize(rrwebEvent);\n events.push(event);\n },\n });\n } catch (e) {\n console.error(e);\n }\n }\n\n /**\n * Stop replays\n * @returns\n */\n stop() {\n if (this.stopFunction) {\n this.stopFunction();\n }\n\n this.startDate = undefined;\n this.events = [];\n this.bufferSize = 0;\n }\n\n /**\n * Get the current replay data\n * @returns {Promise}\n */\n getReplayData() {\n const replayResult = {\n startDate: this.startDate,\n events: this.events,\n baseUrl: window.location.origin,\n width: window.innerWidth,\n height: window.innerHeight,\n isMobile: isMobile(),\n type: \"rrweb\",\n };\n\n return replayResult;\n }\n}\n\nexport function ensureMaxMessageSize(data) {\n let stringifiedData = JSON.stringify(data);\n if (stringifiedData.length > 4000000) {\n const dataURIRegex = /data:([\\w\\/\\-\\.]+);(\\w+),([^)\"]*)/gim;\n const matches = stringifiedData.matchAll(dataURIRegex);\n for (const match of matches) {\n if (match[1].toLocaleLowerCase().slice(0, 6) === \"image/\") {\n stringifiedData = stringifiedData.replace(\n match[0],\n \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAQSURBVHgBAQUA+v8ABRg5/wHSAVZN1mnaAAAAAElFTkSuQmCC\"\n );\n } else {\n stringifiedData = stringifiedData.replace(match[0], \"\");\n }\n }\n }\n return { event: JSON.parse(stringifiedData), size: stringifiedData.length };\n}\n","export class ScreenDrawer {\n rerender;\n svgElement = null;\n path = null;\n strPath;\n strokeWidth = 12;\n strokeWidthRect = 6;\n bufferSize = 4;\n buffer = [];\n startPoint = null;\n tool = \"rect\";\n color = \"#EB144C\";\n mouseDown = null;\n mouseMove = null;\n mouseUp = null;\n resizeListener = null;\n pathBuffer = [];\n\n constructor(rerender) {\n const self = this;\n\n this.rerender = rerender;\n\n this.svgElement = document.querySelector(\".bb-capture-svg\");\n this.svgElement.style.minHeight = `${document.documentElement.scrollHeight}px`;\n\n // Window resize listener.\n this.resizeListener = function (e) {\n self.svgElement.style.minHeight = `${document.documentElement.scrollHeight}px`;\n };\n window.addEventListener(\"resize\", this.resizeListener, true);\n\n this.mouseDown = function (e) {\n e.preventDefault();\n\n const colorpicker = document.querySelector(\n \".bb-capture-toolbar-item-colorpicker\"\n );\n if (colorpicker) {\n colorpicker.style.display = \"none\";\n }\n\n self.fadeOutToolbar();\n if (self.tool === \"pen\" || self.tool === \"blur\") {\n self.mouseDownPen(e);\n }\n if (self.tool === \"rect\") {\n self.mouseDownRect(e);\n }\n };\n\n this.mouseMove = function (e) {\n e.preventDefault();\n if (self.tool === \"pen\" || self.tool === \"blur\") {\n self.mouseMovePen(e);\n }\n if (self.tool === \"rect\") {\n self.mouseMoveRect(e);\n }\n };\n\n this.mouseUp = function (e) {\n e.preventDefault();\n self.fadeInToolbar();\n if (self.tool === \"pen\" || self.tool === \"blur\") {\n self.mouseUpPen(e);\n }\n if (self.tool === \"rect\") {\n self.mouseUpRect(e);\n }\n };\n\n this.svgElement.addEventListener(\"mousedown\", this.mouseDown);\n this.svgElement.addEventListener(\"mousemove\", this.mouseMove);\n this.svgElement.addEventListener(\"mouseup\", this.mouseUp);\n this.svgElement.addEventListener(\"touchstart\", this.mouseDown, false);\n this.svgElement.addEventListener(\"touchmove\", this.mouseMove, false);\n this.svgElement.addEventListener(\"touchend\", this.mouseUp, false);\n\n setTimeout(() => {\n this.rerender();\n }, 100);\n }\n\n clear() {\n if (this.svgElement) {\n while (this.svgElement.firstChild) {\n this.svgElement.firstChild.remove();\n }\n }\n }\n\n destroy() {\n this.svgElement.removeEventListener(\"mousedown\", this.mouseDown);\n this.svgElement.removeEventListener(\"mousemove\", this.mouseMove);\n this.svgElement.removeEventListener(\"mouseup\", this.mouseUp);\n this.svgElement.removeEventListener(\"touchstart\", this.mouseDown);\n this.svgElement.removeEventListener(\"touchmove\", this.mouseMove);\n this.svgElement.removeEventListener(\"touchend\", this.mouseUp);\n window.removeEventListener(\"resize\", this.resizeListener);\n }\n\n mouseUpPen() {\n if (this.path) {\n this.path = null;\n }\n }\n\n mouseUpRect() {\n if (this.path) {\n this.path = null;\n }\n }\n\n mouseMovePen(e) {\n if (this.path) {\n this.appendToBuffer(this.getMousePosition(e));\n this.updateSvgPath();\n }\n }\n\n mouseMoveRect(e) {\n if (this.path) {\n var p = this.getMousePosition(e);\n var w = Math.abs(p.x - this.startPoint.x);\n var h = Math.abs(p.y - this.startPoint.y);\n var x = p.x;\n var y = p.y;\n if (p.x > this.startPoint.x) {\n x = this.startPoint.x;\n }\n if (p.y > this.startPoint.y) {\n y = this.startPoint.y;\n }\n\n this.path.setAttributeNS(null, \"x\", x);\n this.path.setAttributeNS(null, \"y\", y);\n this.path.setAttributeNS(null, \"width\", w);\n this.path.setAttributeNS(null, \"height\", h);\n }\n }\n\n mouseDownRect(e) {\n this.path = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n this.path.setAttribute(\"fill\", \"none\");\n this.path.setAttribute(\"stroke\", this.color);\n this.path.setAttribute(\"stroke-linecap\", \"round\");\n this.path.setAttribute(\"stroke-width\", this.strokeWidthRect);\n\n this.startPoint = this.getMousePosition(e);\n this.appendPathToSvg(this.path);\n }\n\n mouseDownPen(e) {\n var color = this.color + \"AA\";\n var strokeWidth = this.strokeWidth;\n\n if (this.tool === \"blur\") {\n color = \"#000000\";\n strokeWidth = 40;\n }\n\n this.path = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this.path.setAttribute(\"fill\", \"none\");\n this.path.setAttribute(\"stroke\", color);\n this.path.setAttribute(\"stroke-linecap\", \"round\");\n this.path.setAttribute(\"stroke-width\", strokeWidth);\n this.buffer = [];\n var pt = this.getMousePosition(e);\n this.appendToBuffer(pt);\n this.strPath = \"M\" + pt.x + \" \" + pt.y;\n this.path.setAttribute(\"d\", this.strPath);\n this.appendPathToSvg(this.path);\n }\n\n setTool(tool) {\n this.tool = tool;\n }\n\n setColor(color) {\n this.color = color;\n }\n\n getMousePosition(e) {\n if (e.touches && e.touches.length > 0) {\n return {\n x: e.touches[0].clientX,\n y: e.touches[0].clientY,\n };\n }\n\n return {\n x: e.clientX,\n y: e.clientY,\n };\n }\n\n // Calculate the average point, starting at offset in the buffer\n getAveragePoint(offset) {\n var len = this.buffer.length;\n if (len % 2 === 1 || len >= this.bufferSize) {\n var totalX = 0;\n var totalY = 0;\n var pt, i;\n var count = 0;\n for (i = offset; i < len; i++) {\n count++;\n pt = this.buffer[i];\n totalX += pt.x;\n totalY += pt.y;\n }\n return {\n x: totalX / count,\n y: totalY / count,\n };\n }\n return null;\n }\n\n updateSvgPath() {\n var pt = this.getAveragePoint(0);\n\n if (pt) {\n // Get the smoothed part of the path that will not change\n this.strPath += \" L\" + pt.x + \" \" + pt.y;\n\n // Get the last part of the path (close to the current mouse position)\n // This part will change if the mouse moves again\n var tmpPath = \"\";\n for (var offset = 2; offset < this.buffer.length; offset += 2) {\n pt = this.getAveragePoint(offset);\n tmpPath += \" L\" + pt.x + \" \" + pt.y;\n }\n\n // Set the complete current path coordinates\n this.path.setAttribute(\"d\", this.strPath + tmpPath);\n }\n }\n\n appendToBuffer(pt) {\n this.buffer.push(pt);\n while (this.buffer.length > this.bufferSize) {\n this.buffer.shift();\n }\n }\n\n appendPathToSvg(path) {\n this.svgElement.appendChild(path);\n this.pathBuffer.push(path);\n this.rerender();\n }\n\n removeLastAddedPathFromSvg() {\n if (this.pathBuffer.length <= 0 || !this.svgElement) {\n return;\n }\n\n this.svgElement.removeChild(this.pathBuffer[this.pathBuffer.length - 1]);\n\n this.pathBuffer.pop();\n\n this.rerender();\n }\n\n fadeOutToolbar() {\n var fadeTarget = document.querySelector(\".bb-capture-toolbar\");\n if (fadeTarget) {\n fadeTarget.style.opacity = 0;\n fadeTarget.style.pointerEvents = \"none\";\n }\n }\n\n fadeInToolbar() {\n var fadeTarget = document.querySelector(\".bb-capture-toolbar\");\n if (fadeTarget) {\n fadeTarget.style.opacity = 1;\n fadeTarget.style.pointerEvents = \"auto\";\n }\n }\n}\n","export class GleapScrollStopper {\n keys = { 37: 1, 38: 1, 39: 1, 40: 1 };\n supportsPassive = false;\n wheelOpt = this.supportsPassive ? { passive: false } : false;\n wheelEvent =\n \"onwheel\" in document.createElement(\"div\") ? \"wheel\" : \"mousewheel\";\n scrollDisabled = false;\n\n // GleapScrollStopper singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapScrollStopper();\n return this.instance;\n } else {\n return this.instance;\n }\n }\n\n constructor() {\n const self = this;\n try {\n window.addEventListener(\n \"test\",\n null,\n Object.defineProperty({}, \"passive\", {\n get: function () {\n self.supportsPassive = true;\n self.wheelOpt = self.supportsPassive ? { passive: false } : false;\n },\n })\n );\n } catch (e) {}\n }\n\n preventDefault(e) {\n e.preventDefault();\n }\n\n preventDefaultForScrollKeys(e) {\n if (this.keys && this.keys[e.keyCode]) {\n this.preventDefault(e);\n return false;\n }\n }\n\n static disableScroll() {\n const instance = this.getInstance();\n if (instance.scrollDisabled) {\n return;\n }\n\n instance.scrollDisabled = true;\n\n window.addEventListener(\"DOMMouseScroll\", instance.preventDefault, false); // older FF\n window.addEventListener(\n instance.wheelEvent,\n instance.preventDefault,\n instance.wheelOpt\n ); // modern desktop\n window.addEventListener(\n \"touchmove\",\n instance.preventDefault,\n instance.wheelOpt\n ); // mobile\n window.addEventListener(\n \"keydown\",\n instance.preventDefaultForScrollKeys,\n false\n );\n }\n\n static enableScroll() {\n const instance = this.getInstance();\n if (!instance.scrollDisabled) {\n return;\n }\n\n instance.scrollDisabled = false;\n window.removeEventListener(\n \"DOMMouseScroll\",\n instance.preventDefault,\n false\n );\n window.removeEventListener(\n instance.wheelEvent,\n instance.preventDefault,\n instance.wheelOpt\n );\n window.removeEventListener(\n \"touchmove\",\n instance.preventDefault,\n instance.wheelOpt\n );\n window.removeEventListener(\n \"keydown\",\n instance.preventDefaultForScrollKeys,\n false\n );\n }\n}\n","import Gleap, { GleapTranslationManager, GleapFrameManager } from \"./Gleap\";\nimport { ScreenDrawer } from \"./ScreenDrawer\";\nimport { GleapScrollStopper } from \"./GleapScrollStopper\";\nimport { GleapScreenRecorder } from \"./GleapScreenRecorder\";\nimport { loadIcon } from \"./UI\";\n\nexport default class GleapMarkerManager {\n type = \"screenshot\";\n dragCursor = null;\n screenRecorder = null;\n callback = null;\n screenDrawer = null;\n escListener = null;\n pageLeaveListener = null;\n overrideLanguage = Gleap.getInstance().overrideLanguage;\n\n constructor(type) {\n this.type = type;\n }\n\n hideWidgetUI() {\n const feedbackButton = document.querySelector(\".bb-feedback-button\");\n if (feedbackButton) {\n feedbackButton.style.display = \"none\";\n }\n\n const dialogUI = document.querySelector(\".bb-feedback-dialog-container\");\n if (dialogUI) {\n dialogUI.style.display = \"none\";\n }\n }\n\n showWidgetUI() {\n if (this.type === \"screenshot\") {\n GleapScrollStopper.enableScroll();\n }\n\n // Stop screenrecording.\n if (this.screenRecorder) {\n this.screenRecorder.stopScreenRecording();\n }\n\n // Unregister ESC listener\n this.unregisterListeners();\n\n // Cleanup mouse pointer\n this.cleanupMousePointer();\n\n if (this.screenDrawer) {\n this.screenDrawer.destroy();\n }\n\n // Remove the toolbar UI\n const dialog = document.querySelector(\".bb-capture-toolbar\");\n if (dialog) {\n dialog.remove();\n }\n\n // Capture SVG ref\n const captureSVG = document.querySelector(\".bb-capture-svg\");\n if (captureSVG) {\n captureSVG.classList.add(\"bb-capture-svg--preview\");\n }\n\n // Remove the preview UI\n const videoPreviewContainer = document.querySelector(\".bb-capture-preview\");\n if (videoPreviewContainer) {\n videoPreviewContainer.remove();\n }\n\n // Feedback button\n const feedbackButton = document.querySelector(\".bb-feedback-button\");\n if (feedbackButton) {\n feedbackButton.style.display = \"flex\";\n }\n\n // Feedback dialog container\n const dialogUI = document.querySelector(\".bb-feedback-dialog-container\");\n if (dialogUI) {\n dialogUI.style.display = \"block\";\n }\n\n // Dismiss button\n const dismissUI = document.querySelector(\".bb-capture-dismiss\");\n if (dismissUI) {\n dismissUI.style.display = \"none\";\n }\n\n // Hide the color picker\n const colorPicker = document.querySelector(\n \".bb-capture-toolbar-item-colorpicker\"\n );\n if (colorPicker) {\n colorPicker.style.display = \"none\";\n }\n\n // Border layer\n const borderLayer = document.querySelector(\n \".bb-capture-editor-borderlayer\"\n );\n if (borderLayer) {\n borderLayer.style.display = \"none\";\n }\n }\n\n clear() {\n const captureEditor = document.querySelector(\".bb-capture-editor\");\n if (captureEditor) {\n captureEditor.remove();\n }\n }\n\n setMouseMove(x, y) {\n if (!this.dragCursor) {\n return;\n }\n\n this.dragCursor.style.left = `${x + 6}px`;\n this.dragCursor.style.top = `${y - 26}px`;\n this.dragCursor.style.right = null;\n }\n\n mouseMoveEventHandler(e) {\n const x = e.clientX;\n const y = e.clientY;\n this.setMouseMove(x, y);\n }\n\n touchMoveEventHandler(e) {\n const x = e.touches[0].clientX;\n const y = e.touches[0].clientY;\n this.setMouseMove(x, y);\n }\n\n setupMousePointer() {\n const self = this;\n this.dragCursor = document.querySelector(\".bb-capture-editor-drag-info\");\n const captureSVG = document.querySelector(\".bb-capture-svg\");\n captureSVG.addEventListener(\"mouseenter\", (e) => {\n self.dragCursor.style.opacity = 1;\n });\n\n captureSVG.addEventListener(\"mouseleave\", (e) => {\n self.dragCursor.style.opacity = 0;\n });\n\n document.documentElement.addEventListener(\n \"mousemove\",\n this.mouseMoveEventHandler.bind(this)\n );\n document.documentElement.addEventListener(\n \"touchmove\",\n this.touchMoveEventHandler.bind(this)\n );\n }\n\n cleanupMousePointer() {\n document.documentElement.removeEventListener(\n \"mousemove\",\n this.mouseMoveEventHandler\n );\n document.documentElement.removeEventListener(\n \"touchmove\",\n this.touchMoveEventHandler\n );\n\n // Clean up toolbar drag listeners\n const dragHandle = document.querySelector(\".bb-capture-toolbar-item[data-type='drag']\");\n if (dragHandle) {\n dragHandle.removeEventListener(\"mousedown\", this.dragStart);\n dragHandle.removeEventListener(\"touchstart\", this.dragStart);\n document.removeEventListener(\"mousemove\", this.drag);\n document.removeEventListener(\"touchmove\", this.drag);\n document.removeEventListener(\"mouseup\", this.dragEnd);\n document.removeEventListener(\"touchend\", this.dragEnd);\n }\n\n if (this.dragCursor) {\n this.dragCursor.remove();\n }\n }\n\n createEditorUI() {\n // Add HTML for drawing and recording\n var bugReportingEditor = document.createElement(\"div\");\n bugReportingEditor.className = \"bb-capture-editor\";\n bugReportingEditor.innerHTML = `\n
\n \n
${loadIcon(\"dismiss\")}
\n
${loadIcon(\"rect\")}
\n
\n
\n ${loadIcon(\"drag\")}\n
\n ${this.type === \"capture\"\n ? `
\n ${loadIcon(\"recorderon\")}\n ${loadIcon(\"recorderoff\")}\n \n
\n
\n ${loadIcon(\"mic\")}\n \n
\n
2:00
\n
\n
\n ${loadIcon(\"pointer\")}\n
`\n : \"\"\n }\n
\n ${loadIcon(\"rect\")}\n
\n
\n ${loadIcon(\"pen\")}\n
\n
\n ${loadIcon(\"blur\")}\n
\n
\n
\n ${GleapTranslationManager.translateText(\n `pickAColor`\n )}\n
\n
\n ${loadIcon(\"undo\")}\n ${GleapTranslationManager.translateText(\n `undo`\n )}\n
\n ${this.type !== \"capture\"\n ? `
${GleapTranslationManager.translateText(\n `next`\n )}
`\n : \"\"\n }\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
${GleapTranslationManager.translateText(\n `retry`\n )}
\n
${GleapTranslationManager.translateText(\n `next`\n )}
\n
\n
\n
\n `;\n document.body.appendChild(bugReportingEditor);\n\n // Set RTL layout\n bugReportingEditor.setAttribute(\"dir\", GleapTranslationManager.getInstance().isRTLLayout ? \"rtl\" : \"ltr\");\n }\n\n showNextStep = function () {\n // Adapt the UI\n this.showWidgetUI();\n\n if (this.callback) {\n GleapFrameManager.getInstance().sendMessage({\n name: \"set-form-data\",\n data: {\n formKey: \"capture\",\n data: {\n value: this.type,\n dirty: true,\n }\n }\n });\n this.callback(true);\n }\n };\n\n unregisterListeners() {\n if (this.escListener) {\n document.removeEventListener(\"keydown\", this.escListener);\n }\n\n if (this.pageLeaveListener) {\n window.removeEventListener(\"beforeunload\", this.pageLeaveListener);\n }\n }\n\n registerListeners() {\n const self = this;\n\n // Esc listener\n this.escListener = function (evt) {\n evt = evt || window.event;\n var isEscape = false;\n var isEnter = false;\n if (\"key\" in evt) {\n isEscape = evt.key === \"Escape\";\n isEnter = evt.key === \"Enter\";\n }\n if (isEscape) {\n self.dismiss();\n }\n if (self.type === \"screenshot\" && isEnter) {\n self.showNextStep();\n }\n };\n document.addEventListener(\"keydown\", this.escListener);\n\n // Page leave listener\n this.pageLeaveListener = function (event) {\n event.preventDefault();\n event.returnValue = \"\";\n };\n window.addEventListener(\"beforeunload\", this.pageLeaveListener);\n }\n\n show(callback) {\n this.callback = callback;\n const self = this;\n\n // Register for listeners\n this.registerListeners();\n\n // Hide widget UI\n this.hideWidgetUI();\n\n // Create the editor UI\n this.createEditorUI();\n\n // Setup the mouse pointer\n this.setupMousePointer();\n\n // Setup screenshot data\n if (this.type === \"screenshot\") {\n // Overwrite snapshot position\n Gleap.getInstance().setGlobalDataItem(\"snapshotPosition\", {\n x: window.scrollX,\n y: window.scrollY,\n });\n\n // Disable scroll\n GleapScrollStopper.disableScroll();\n } else {\n // Setup screen recording\n this.setupScreenRecording();\n }\n\n // Hook up the drawing.\n this.screenDrawer = new ScreenDrawer(\n this.captureScreenDrawerRerender.bind(this)\n );\n\n this.setupColorPicker();\n this.setupToolbar();\n }\n\n setupColorPicker() {\n const self = this;\n const selectedColor = document.querySelector(\n \".bb-capture-toolbar-item-selectedcolor\"\n );\n const colorItems = document.querySelectorAll(\n \".bb-capture-toolbar-item-color\"\n );\n const colorpicker = document.querySelector(\n \".bb-capture-toolbar-item-colorpicker\"\n );\n\n for (var i = 0; i < colorItems.length; i++) {\n const colorItem = colorItems[i];\n const hexColor = colorItem.getAttribute(\"data-color\");\n colorItem.style.backgroundColor = hexColor;\n colorItem.onclick = function () {\n if (colorItem) {\n self.screenDrawer.setColor(hexColor);\n if (colorpicker) {\n colorpicker.style.display = \"none\";\n }\n selectedColor.style.backgroundColor = colorItem.style.backgroundColor;\n GleapMarkerManager.setPenColor(hexColor);\n }\n };\n }\n }\n\n static setPenColor(hexColor) {\n const penTips = document.querySelectorAll(\".bb-pen-tip\");\n for (var j = 0; j < penTips.length; j++) {\n penTips[j].style.fill = hexColor;\n }\n }\n\n dismiss() {\n this.showWidgetUI();\n\n if (this.callback) {\n this.callback(false);\n }\n }\n\n setupToolbar() {\n const self = this;\n const toolbar = document.querySelector(\".bb-capture-toolbar\");\n let isDragging = false;\n let currentX;\n let currentY;\n let initialX;\n let initialY;\n let xOffset = 0;\n let yOffset = 0;\n\n const getTransformValues = () => {\n const transform = window.getComputedStyle(toolbar).transform;\n if (transform === 'none') return { x: 0, y: 0 };\n const matrix = new DOMMatrix(transform);\n return { x: matrix.m41, y: matrix.m42 };\n };\n\n this.dragStart = (e) => {\n const { x, y } = getTransformValues();\n xOffset = x;\n yOffset = y;\n\n if (e.type === \"mousedown\") {\n initialX = e.clientX - xOffset;\n initialY = e.clientY - yOffset;\n } else {\n initialX = e.touches[0].clientX - xOffset;\n initialY = e.touches[0].clientY - yOffset;\n }\n isDragging = true;\n };\n\n this.dragEnd = () => {\n isDragging = false;\n };\n\n this.drag = (e) => {\n if (isDragging) {\n e.preventDefault();\n if (e.type === \"mousemove\") {\n currentX = e.clientX - initialX;\n currentY = e.clientY - initialY;\n } else {\n currentX = e.touches[0].clientX - initialX;\n currentY = e.touches[0].clientY - initialY;\n }\n\n xOffset = currentX;\n yOffset = currentY;\n\n toolbar.style.transform = `translate(${currentX}px, ${currentY}px)`;\n }\n };\n\n const dragHandle = document.querySelector(\".bb-capture-toolbar-item[data-type='drag']\");\n\n dragHandle.addEventListener(\"mousedown\", this.dragStart);\n dragHandle.addEventListener(\"touchstart\", this.dragStart);\n document.addEventListener(\"mousemove\", this.drag);\n document.addEventListener(\"touchmove\", this.drag);\n document.addEventListener(\"mouseup\", this.dragEnd);\n document.addEventListener(\"touchend\", this.dragEnd);\n\n // Hook up dismiss button\n const dismissButton = document.querySelector(\".bb-capture-dismiss\");\n dismissButton.onclick = function () {\n self.dismiss();\n };\n\n // Hook up send button\n const nextButton = document.querySelector(\".bb-capture-button-next\");\n if (nextButton) {\n nextButton.onclick = this.showNextStep.bind(this);\n }\n\n const colorpicker = document.querySelector(\n \".bb-capture-toolbar-item-colorpicker\"\n );\n\n // Capture SVG ref\n const captureSVG = document.querySelector(\".bb-capture-svg\");\n\n const chooseTool = function (type, toolbarItem) {\n const toolbarTools = document.querySelectorAll(\n \".bb-capture-toolbar-item-tool\"\n );\n for (let j = 0; j < toolbarTools.length; j++) {\n toolbarTools[j].classList.remove(\"bb-capture-toolbar-item--active\");\n }\n toolbarItem.classList.add(\"bb-capture-toolbar-item--active\");\n self.screenDrawer.setTool(type);\n self.dragCursor.innerHTML = \"\";\n if (type === \"pointer\") {\n captureSVG.style.pointerEvents = \"none\";\n } else {\n captureSVG.style.pointerEvents = \"auto\";\n try {\n var svgClone = toolbarItem.querySelector(\"svg\").cloneNode(true);\n if (svgClone && self.dragCursor) {\n self.dragCursor.appendChild(svgClone);\n }\n } catch (exp) { }\n }\n }\n\n // Setup toolbar items\n var toolbarItems = document.querySelectorAll(\".bb-capture-toolbar-item\");\n for (var i = 0; i < toolbarItems.length; i++) {\n const toolbarItem = toolbarItems[i];\n toolbarItem.onclick = function () {\n const type = toolbarItem.getAttribute(\"data-type\");\n if (colorpicker && type !== \"colorpicker\") {\n colorpicker.style.display = \"none\";\n }\n\n // Mic & recording buttons\n if (type === \"mic\") {\n self.screenRecorder.toggleAudio();\n }\n if (type === \"recording\") {\n if (self.screenRecorder.isRecording) {\n self.screenRecorder.stopScreenRecording();\n } else {\n self.screenRecorder.startScreenRecording();\n chooseTool(\"pointer\", document.querySelector(\".bb-capture-toolbar-item[data-type='pointer']\"));\n }\n }\n\n // Marker buttons\n if (self.type === \"capture\" && !self.screenRecorder.isRecording) {\n // Inactivate buttons.\n return;\n }\n if (\n type === \"pen\" ||\n type === \"blur\" ||\n type === \"rect\" ||\n type === \"pointer\"\n ) {\n chooseTool(type, toolbarItem);\n }\n if (type === \"colorpicker\") {\n if (colorpicker.style.display === \"flex\") {\n colorpicker.style.display = \"none\";\n } else {\n colorpicker.style.display = \"flex\";\n }\n }\n if (type === \"undo\") {\n self.screenDrawer.removeLastAddedPathFromSvg();\n }\n };\n }\n }\n\n captureScreenDrawerRerender() {\n if (!this.screenDrawer) {\n return;\n }\n\n const itemInactiveClass = \"bb-capture-editor-item-inactive\";\n const toolbarItems = document.querySelectorAll(\".bb-capture-toolbar-item\");\n for (var i = 0; i < toolbarItems.length; i++) {\n const toolbarItem = toolbarItems[i];\n const type = toolbarItem.getAttribute(\"data-type\");\n switch (type) {\n case \"undo\":\n if (\n this.screenDrawer.pathBuffer != null &&\n this.screenDrawer.pathBuffer.length > 0\n ) {\n toolbarItem.classList.remove(itemInactiveClass);\n } else {\n toolbarItem.classList.add(itemInactiveClass);\n }\n break;\n default:\n break;\n }\n }\n }\n\n captureRenderer() {\n if (!this.screenRecorder) {\n return;\n }\n\n if (this.screenRecorder.file) {\n Gleap.getInstance().setGlobalDataItem(\"screenRecordingData\", this.screenRecorder.file);\n }\n\n const itemInactiveClass = \"bb-capture-editor-item-inactive\";\n const timerLabel = document.querySelector(\".bb-capture-toolbar-item-timer\");\n const toolbarItems = document.querySelectorAll(\".bb-capture-toolbar-item\");\n const screenRecordingTooltip = document.querySelector(\n \".bb-tooltip-screen-recording\"\n );\n const audioRecordingTooltip = document.querySelector(\n \".bb-tooltip-audio-recording\"\n );\n const captureEditor = document.querySelector(\".bb-capture-editor\");\n const recordingClass = \"bb-capture-editor-recording\";\n const notRecordingClass = \"bb-capture-editor-notrecording\";\n if (this.screenRecorder.isRecording) {\n captureEditor.classList.add(recordingClass);\n captureEditor.classList.remove(notRecordingClass);\n } else {\n captureEditor.classList.add(notRecordingClass);\n captureEditor.classList.remove(recordingClass);\n }\n \n // Update UI.\n const dialog = document.querySelector(\".bb-capture-toolbar\");\n const videoPreviewContainer = document.querySelector(\".bb-capture-preview\");\n videoPreviewContainer.style.display = this.screenRecorder.file\n ? \"flex\"\n : \"none\";\n dialog.style.display = !this.screenRecorder.file ? \"flex\" : \"none\";\n\n for (var i = 0; i < toolbarItems.length; i++) {\n const toolbarItem = toolbarItems[i];\n const type = toolbarItem.getAttribute(\"data-type\");\n switch (type) {\n case \"mic\":\n if (\n this.screenRecorder.audioAvailable &&\n this.screenRecorder.available\n ) {\n toolbarItem.classList.remove(itemInactiveClass);\n if (!this.screenRecorder.audioMuted) {\n toolbarItem.classList.remove(\n \"bb-capture-toolbar-item--inactivecross\"\n );\n audioRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"mute\"\n );\n } else {\n toolbarItem.classList.add(\n \"bb-capture-toolbar-item--inactivecross\"\n );\n audioRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"unmute\"\n );\n }\n } else {\n toolbarItem.classList.add(itemInactiveClass);\n toolbarItem.classList.add(\"bb-capture-toolbar-item--inactivecross\");\n audioRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"browserNotSupported\"\n );\n }\n break;\n\n case \"recording\":\n if (this.screenRecorder.available) {\n toolbarItem.classList.remove(itemInactiveClass);\n if (this.screenRecorder.isRecording) {\n toolbarItem.setAttribute(\"data-active\", \"true\");\n screenRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"stopRecording\"\n );\n timerLabel.style.display = \"block\";\n } else {\n toolbarItem.setAttribute(\"data-active\", \"false\");\n screenRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"startRecording\"\n );\n timerLabel.style.display = \"none\";\n }\n } else {\n // Recording is not available.\n toolbarItem.classList.add(itemInactiveClass);\n screenRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"browserNotSupported\"\n );\n }\n break;\n\n default:\n break;\n }\n }\n }\n\n setupScreenRecording() {\n const self = this;\n\n // Hook preview next button\n const nextButtonPreview = document.querySelector(\n \".bb-capture-preview-sendbutton\"\n );\n nextButtonPreview.onclick = this.showNextStep.bind(this);\n\n // Hook retry button\n const retryButton = document.querySelector(\n \".bb-capture-preview-retrybutton\"\n );\n retryButton.onclick = function () {\n self.screenRecorder.clearPreview();\n if (self.screenDrawer) {\n self.screenDrawer.clear();\n }\n };\n\n // Setup screen recorder\n this.screenRecorder = new GleapScreenRecorder(\n this.captureRenderer.bind(this),\n GleapTranslationManager.translateText(\n \"accessToScreenSharingDenied\"\n )\n );\n }\n}\n","import {\n GleapFrameManager,\n GleapFeedbackButtonManager,\n GleapConfigManager,\n} from \"./Gleap\";\n\nexport default class GleapTranslationManager {\n overrideLanguage = \"\";\n isRTLLayout = false;\n\n // GleapTranslationManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapTranslationManager();\n }\n return this.instance;\n }\n\n /**\n * Returns the language to override the default language.\n * @returns {string}\n */\n getOverrideLanguage() {\n return this.overrideLanguage;\n }\n\n /**\n * Sets the language to override the default language.\n * @param {*} language\n */\n setOverrideLanguage(language) {\n this.overrideLanguage = language;\n }\n\n updateRTLSupport() {\n // Update RTL support.\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n\n this.isRTLLayout = false;\n if (\n flowConfig &&\n flowConfig.localizationOptions &&\n flowConfig.localizationOptions.rtl\n ) {\n this.isRTLLayout = true;\n }\n\n GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n GleapFrameManager.getInstance().updateFrameStyle();\n }\n\n getActiveLanguage() {\n var language = \"en\";\n if (typeof navigator !== \"undefined\") {\n language = navigator.language.toLowerCase();\n }\n\n // Get language from HTML lang attribute if available\n if (typeof document !== \"undefined\" && document.documentElement) {\n const htmlLang = document.documentElement.lang;\n if (htmlLang && htmlLang.trim() !== \"\") {\n language = htmlLang.toLowerCase().trim();\n }\n }\n\n if (this.overrideLanguage && this.overrideLanguage !== \"\") {\n language = this.overrideLanguage.toLowerCase();\n }\n\n return language;\n }\n\n static translateText(key) {\n if (!key) {\n return \"\";\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const staticTranslation = flowConfig.staticTranslations;\n\n if (staticTranslation && staticTranslation[key]) {\n return staticTranslation[key];\n }\n\n return key;\n }\n\n static translateTextWithVars(key, vars) {\n if (!key) {\n return \"\";\n }\n\n var template = this.translateText(key);\n if (!template) {\n return \"\";\n }\n\n return template.replace(/{(\\w+)}/g, function (_, key) {\n return vars[key];\n });\n }\n}\n","import Gleap from \"./Gleap\";\n\nexport default class GleapShortcutListener {\n shortCutListener = undefined;\n\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapShortcutListener();\n }\n return this.instance;\n }\n\n start() {\n if (this.shortCutListener) {\n return;\n }\n\n const charForEvent = function (event) {\n var code;\n\n if (event.key !== undefined) {\n code = event.key;\n } else if (event.keyIdentifier !== undefined) {\n code = event.keyIdentifier;\n } else if (event.keyCode !== undefined) {\n code = event.keyCode;\n }\n\n return code;\n };\n\n this.shortCutListener = document.addEventListener(\"keyup\", function (e) {\n const char = charForEvent(e);\n if (\n e.ctrlKey &&\n (char === \"u\" || char === \"U\" || char === 85)\n ) {\n Gleap.startFeedbackFlowWithOptions(\"bugreporting\", {\n autostartDrawing: true\n });\n }\n });\n }\n\n stop() {\n if (this.shortCutListener) {\n document.removeEventListener(\"keyup\", this.shortCutListener);\n this.shortCutListener = undefined;\n }\n }\n}","\nexport default class GleapPreFillManager {\n formPreFill = {};\n \n // GleapPreFillManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapPreFillManager();\n }\n return this.instance;\n }\n }\n ","import Gleap, {\n GleapFeedbackButtonManager,\n GleapConfigManager,\n GleapFrameManager,\n GleapSession,\n GleapAudioManager,\n GleapTranslationManager,\n GleapEventManager,\n} from \"./Gleap\";\nimport { loadFromGleapCache, saveToGleapCache } from \"./GleapHelper\";\nimport { loadIcon } from \"./UI\";\n\nexport default class GleapNotificationManager {\n notificationContainer = null;\n notifications = [];\n unreadCount = 0;\n unreadNotificationsKey = \"unread-notifications\";\n isTabActive = true;\n showNotificationBadge = true;\n\n // Keep track of the current index of news being shown\n currentNewsIndex = 0;\n\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapNotificationManager();\n }\n return this.instance;\n }\n\n constructor() {}\n\n updateTabBarNotificationCount() {\n GleapEventManager.notifyEvent(\"unread-count-changed\", this.unreadCount);\n }\n\n injectNotificationUI() {\n if (this.notificationContainer) {\n return;\n }\n\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-notification-container gleap-font\";\n document.body.appendChild(elem);\n this.notificationContainer = elem;\n\n this.updateContainerStyle();\n this.reloadNotificationsFromCache();\n }\n\n reloadNotificationsFromCache() {\n try {\n const notificationsFromCache = loadFromGleapCache(\n this.unreadNotificationsKey\n );\n if (notificationsFromCache && notificationsFromCache.length > 0) {\n let nots = notificationsFromCache.filter(\n (notification) =>\n new Date(notification.createdAt) >\n new Date(Date.now() - 1 * 60 * 60 * 1000)\n );\n\n if (nots.length > 2) {\n this.notifications = nots.splice(0, nots.length - 2);\n } else {\n this.notifications = nots;\n }\n this.renderNotifications();\n }\n } catch (exp) {}\n }\n\n setNotificationCount(unreadCount) {\n this.unreadCount = unreadCount;\n this.updateTabBarNotificationCount();\n\n // Update the badge counter.\n GleapFeedbackButtonManager.getInstance().updateNotificationBadge(\n this.unreadCount\n );\n }\n\n showNotification(notification) {\n if (!(this.notificationContainer && notification && notification.data)) {\n return;\n }\n\n const notificationsForOutbound = this.notifications.find(\n (e) => notification.outbound === e.outbound\n );\n if (!notificationsForOutbound) {\n this.notifications.push(notification);\n\n // Play sound only if it's a new one\n if (notification.sound) {\n GleapAudioManager.ping();\n }\n }\n if (this.notifications.length > 2) {\n this.notifications.shift();\n }\n\n // Persist notifications.\n saveToGleapCache(this.unreadNotificationsKey, this.notifications);\n\n this.renderNotifications();\n }\n\n /**\n * Renders notifications. For news-type notifications, only show\n * one at a time if there are multiple, with a \"Next\" button to cycle.\n * The \"Next\" button + pagination are placed within the news content area.\n *\n * - Sorts news notifications by createdAt (oldest first).\n * - Shows \"Done\" on the last news item instead of \"Next\".\n */\n renderNotifications() {\n if (!this.notificationContainer) {\n return;\n }\n\n // Clear the existing notifications in the container (UI only).\n this.clearAllNotifications(true);\n\n // Append a close button (which clears everything).\n const clearElem = document.createElement(\"div\");\n clearElem.onclick = () => {\n this.clearAllNotifications();\n // Reset the news index when everything is closed\n this.currentNewsIndex = 0;\n };\n clearElem.className = \"gleap-notification-close\";\n clearElem.innerHTML = loadIcon(\"dismiss\");\n this.notificationContainer.appendChild(clearElem);\n\n // Separate out news notifications vs. others, then sort news by date ascending\n const newsNotifications = this.notifications\n .filter((n) => n.data.news)\n .sort((a, b) => new Date(a.createdAt) - new Date(b.createdAt));\n\n const otherNotifications = this.notifications.filter((n) => !n.data.news);\n\n // --- Render NEWS notifications (with pagination) ---\n if (newsNotifications.length > 0) {\n // We only show ONE news item at a time if there's more than one\n const currentIndex =\n this.currentNewsIndex < newsNotifications.length\n ? this.currentNewsIndex\n : 0;\n const currentNews = newsNotifications[currentIndex];\n\n // Main wrapper for the news notification\n const newsElem = document.createElement(\"div\");\n newsElem.className = \"gleap-notification-item-news\";\n\n // The container that holds image + content\n const newsContainerElem = document.createElement(\"div\");\n newsContainerElem.className = \"gleap-notification-item-news-container\";\n\n // Create the image element (clickable)\n if (\n currentNews.data.coverImageUrl &&\n currentNews.data.coverImageUrl !== \"\" &&\n !currentNews.data.coverImageUrl.includes(\"NewsImagePlaceholder\")\n ) {\n const newsImageElem = document.createElement(\"img\");\n newsImageElem.className = \"gleap-notification-item-news-image\";\n newsImageElem.src = currentNews.data.coverImageUrl;\n\n // Only the image is clickable\n newsImageElem.onclick = (e) => {\n e.stopPropagation();\n this.openNews(currentNews);\n };\n newsContainerElem.appendChild(newsImageElem);\n }\n\n // The content container\n const newsContentElem = document.createElement(\"div\");\n newsContentElem.className = \"gleap-notification-item-news-content\";\n\n // Title (clickable)\n const newsTitleElem = document.createElement(\"div\");\n newsTitleElem.className = \"gleap-notification-item-news-content-title\";\n\n let content = currentNews.data.text || \"\";\n content = content.replaceAll(\n \"{{name}}\",\n GleapSession.getInstance().getName()\n );\n newsTitleElem.innerText = content;\n\n // Only the title is clickable\n newsTitleElem.onclick = (e) => {\n e.stopPropagation();\n this.openNews(currentNews);\n };\n\n newsContentElem.appendChild(newsTitleElem);\n\n // Description / Sender\n const descHTML = this.renderDescription(currentNews);\n if (descHTML) {\n const descElem = document.createElement(\"div\");\n descElem.className = \"gleap-notification-item-news-preview\";\n descElem.innerHTML = descHTML;\n newsContentElem.appendChild(descElem);\n }\n\n // If there's more than one news item, show pagination + next/done button\n if (newsNotifications.length > 1) {\n // Pagination container (still inside .gleap-notification-item-news-content)\n const paginationElem = document.createElement(\"div\");\n paginationElem.className = \"gleap-news-pagination\";\n\n // Show current item / total\n const pageIndicator = document.createElement(\"span\");\n pageIndicator.className = \"gleap-news-page-indicator\";\n pageIndicator.innerText = `${currentIndex + 1} / ${\n newsNotifications.length\n }`;\n paginationElem.appendChild(pageIndicator);\n\n // Next or Done button\n const nextBtn = document.createElement(\"button\");\n nextBtn.className = \"gleap-news-next-button\";\n\n if (currentIndex < newsNotifications.length - 1) {\n nextBtn.innerText = GleapTranslationManager.translateText(`next`);\n nextBtn.onclick = (e) => {\n e.stopPropagation(); // so we can click the button freely\n this.currentNewsIndex++;\n this.renderNotifications();\n };\n } else {\n nextBtn.innerText = GleapTranslationManager.translateText(`done`);\n nextBtn.onclick = (e) => {\n e.stopPropagation();\n this.clearAllNotifications();\n this.currentNewsIndex = 0;\n };\n }\n paginationElem.appendChild(nextBtn);\n newsContentElem.appendChild(paginationElem);\n }\n\n // Append content to container\n newsContainerElem.appendChild(newsContentElem);\n // Append container to the main element\n newsElem.appendChild(newsContainerElem);\n // Finally append to the notification container\n this.notificationContainer.appendChild(newsElem);\n }\n\n // --- Render OTHER notifications normally ---\n for (let i = 0; i < otherNotifications.length; i++) {\n const notification = otherNotifications[i];\n let content = notification.data.text || \"\";\n // Replace placeholders\n content = content.replaceAll(\n \"{{name}}\",\n GleapSession.getInstance().getName()\n );\n\n const elem = document.createElement(\"div\");\n elem.onclick = () => {\n if (notification.data.conversation) {\n Gleap.openConversation(\n notification.data.conversation.shareToken,\n true\n );\n } else if (notification.data.checklist) {\n Gleap.openChecklist(notification.data.checklist.id, true);\n } else {\n Gleap.open();\n }\n };\n\n // Check if it's a checklist type\n if (notification.data.checklist) {\n let progress = Math.round(\n (notification.data.currentStep / notification.data.totalSteps) * 100\n );\n if (progress < 100) {\n progress += 4;\n }\n\n elem.className = \"gleap-notification-item-checklist\";\n elem.innerHTML = `\n
\n
\n
\n ${notification.data.text}\n
\n
\n
\n
\n
\n \n \n \n ${notification.data.nextStepTitle}\n
\n
\n
`;\n } else {\n // Standard non-news notification\n elem.className = \"gleap-notification-item\";\n elem.innerHTML = `\n ${\n notification.data.sender &&\n notification.data.sender.profileImageUrl &&\n ``\n }\n
\n ${\n notification.data.sender\n ? `
\n ${notification.data.sender.name}\n
`\n : \"\"\n }\n
${content}
\n
`;\n }\n this.notificationContainer.appendChild(elem);\n }\n\n const hasNotifications =\n newsNotifications.length > 0 || otherNotifications.length > 0;\n if (!hasNotifications) {\n // Clear the notification container\n this.clearAllNotifications(true);\n }\n }\n\n /**\n * Helper to open news from a given notification.\n */\n openNews(notification) {\n if (notification.data.news) {\n Gleap.openNewsArticle(notification.data.news.id, true);\n } else {\n Gleap.open();\n }\n }\n\n /**\n * Helper to render preview or sender info for news notifications.\n */\n renderDescription(notification) {\n const { previewText, sender } = notification.data;\n if (previewText && previewText.length > 0) {\n return previewText;\n } else if (sender) {\n // Return HTML for the sender name + optional image\n return `\n
\n ${\n sender.profileImageUrl\n ? `\"${sender.name}\"`\n : \"\"\n }\n ${sender.name}\n
\n `;\n }\n return \"\";\n }\n\n /**\n * Clears all notifications from the container.\n *\n * @param {boolean} uiOnly - Whether to only clear the UI or also the notifications.\n */\n clearAllNotifications(uiOnly = false) {\n if (!this.notificationContainer) {\n return;\n }\n\n if (!uiOnly) {\n this.notifications = [];\n // Reset currentNewsIndex whenever we clear them out\n this.currentNewsIndex = 0;\n saveToGleapCache(this.unreadNotificationsKey, this.notifications);\n }\n\n while (this.notificationContainer.firstChild) {\n this.notificationContainer.removeChild(\n this.notificationContainer.firstChild\n );\n }\n }\n\n updateContainerStyle() {\n if (!this.notificationContainer) {\n return;\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const classLeft = \"gleap-notification-container--left\";\n const classNoButton = \"gleap-notification-container--no-button\";\n this.notificationContainer.classList.remove(classLeft);\n this.notificationContainer.classList.remove(classNoButton);\n\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_BOTTOM_LEFT\n ) {\n this.notificationContainer.classList.add(classLeft);\n }\n\n if (GleapFeedbackButtonManager.getInstance().buttonHidden === null) {\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_NONE\n ) {\n this.notificationContainer.classList.add(classNoButton);\n }\n } else {\n if (GleapFeedbackButtonManager.getInstance().buttonHidden) {\n this.notificationContainer.classList.add(classNoButton);\n }\n }\n\n this.notificationContainer.setAttribute(\n \"dir\",\n GleapTranslationManager.getInstance().isRTLLayout ? \"rtl\" : \"ltr\"\n );\n }\n}\n","import Gleap, { GleapFrameManager } from \"./Gleap\";\n\nexport default class GleapBannerManager {\n bannerUrl = \"https://outboundmedia.gleap.io\";\n bannerContainer = null;\n bannerData = null;\n\n // GleapBannerManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapBannerManager();\n }\n return this.instance;\n }\n\n constructor() {\n this.startCommunication();\n }\n\n setBannerUrl(url) {\n this.bannerUrl = url;\n }\n\n startCommunication() {\n // Add window message listener.\n window.addEventListener(\"message\", (event) => {\n if (!this.bannerUrl?.includes(event.origin)) {\n return;\n }\n\n try {\n const data = JSON.parse(event.data);\n\n if (data?.type !== \"BANNER\") {\n return;\n }\n\n if (data.name === \"banner-loaded\" && this.bannerData) {\n this.sendMessage({\n name: \"banner-data\",\n data: this.bannerData,\n });\n }\n if (data.name === \"banner-height\") {\n document.documentElement.style.setProperty(\n \"--gleap-margin-top\",\n data.data.height + \"px\"\n );\n }\n if (data.name === \"banner-data-set\") {\n document.body.classList.add(\"gleap-b-shown\");\n\n if (this.bannerData?.format === \"floating\") {\n document.body.classList.add(\"gleap-b-f\");\n }\n }\n if (data.name === \"banner-close\") {\n this.removeBannerUI();\n }\n if (data.name === \"start-conversation\") {\n Gleap.startBot(data.data?.botId);\n }\n if (data.name === \"start-custom-action\") {\n Gleap.triggerCustomAction(data.data?.action);\n }\n if (data.name === \"start-product-tour\") {\n Gleap.startProductTour(data.data?.tourId, true);\n }\n if (data.name === \"open-url\") {\n const url = data.data;\n const newTab = data.newTab ? true : false;\n GleapFrameManager.getInstance().urlHandler(url, newTab);\n }\n if (data.name === \"show-form\") {\n Gleap.startFeedbackFlow(data.data?.formId);\n }\n if (data.name === \"show-survey\") {\n Gleap.showSurvey(data.data?.formId, data.data?.surveyFormat);\n }\n if (data.name === \"show-news-article\") {\n Gleap.openNewsArticle(data.data?.articleId);\n }\n if (data.name === \"show-help-article\") {\n Gleap.openHelpCenterArticle(data.data?.articleId);\n }\n if (data.name === \"show-checklist\") {\n Gleap.startChecklist(\n data.data?.checklistId,\n true,\n data.data?.sharedKey\n );\n }\n } catch (exp) {}\n });\n }\n\n removeBannerUI() {\n if (this.bannerContainer) {\n document.body.removeChild(this.bannerContainer);\n this.bannerContainer = null;\n }\n\n document.body.classList.remove(\"gleap-b-shown\");\n document.body.classList.remove(\"gleap-b-f\");\n }\n\n /**\n * Injects the feedback button into the current DOM.\n */\n injectBannerUI(bannerData) {\n if (!document.body) {\n return false;\n }\n\n if (this.bannerContainer) {\n this.removeBannerUI();\n }\n\n this.bannerData = bannerData;\n\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-b\";\n elem.innerHTML = ``;\n document.body.appendChild(elem);\n this.bannerContainer = elem;\n }\n\n sendMessage(data) {\n try {\n const gleapBFrame = document.querySelector(\".gleap-b-frame\");\n if (gleapBFrame && gleapBFrame.contentWindow) {\n gleapBFrame.contentWindow.postMessage(\n JSON.stringify({\n ...data,\n type: \"banner\",\n }),\n \"*\"\n );\n }\n } catch (e) {}\n }\n\n showBanner(bannerData) {\n this.injectBannerUI(bannerData);\n }\n}\n","import Gleap, { GleapConfigManager, GleapFrameManager } from \"./Gleap\";\n\nexport default class GleapModalManager {\n modalUrl = \"https://outboundmedia.gleap.io/modal\";\n modalContainer = null;\n modalData = null;\n modalBackdropClickListener = null;\n\n // singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapModalManager();\n }\n return this.instance;\n }\n\n constructor() {\n this._listenForMessages();\n }\n\n setModalUrl(url) {\n this.modalUrl = url;\n }\n\n _listenForMessages() {\n window.addEventListener(\"message\", (event) => {\n if (!this.modalUrl?.includes(event.origin)) {\n return;\n }\n\n try {\n const data = JSON.parse(event.data);\n\n if (data?.type !== \"MODAL\") {\n return;\n }\n\n if (data.name === \"modal-loaded\" && this.modalData) {\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const primaryColor = flowConfig.color ? flowConfig.color : \"#485BFF\";\n const backgroundColor = flowConfig.backgroundColor\n ? flowConfig.backgroundColor\n : \"#FFFFFF\";\n\n this._postMessage({\n name: \"modal-data\",\n data: {\n ...this.modalData,\n primaryColor: primaryColor,\n backgroundColor: backgroundColor,\n },\n });\n }\n if (data.name === \"modal-height\") {\n const height = data?.data?.height;\n if (height) {\n // Set the height of the modal iframe\n const iframe =\n this.modalContainer.querySelector(\".gleap-modal-frame\");\n if (iframe) {\n iframe.style.height = `${height}px`;\n }\n }\n }\n if (data.name === \"modal-data-set\") {\n // TODO: Implement\n }\n if (data.name === \"modal-close\") {\n this.hideModal();\n }\n if (data.name === \"start-conversation\") {\n Gleap.startBot(data.data?.botId);\n }\n if (data.name === \"start-custom-action\") {\n Gleap.triggerCustomAction(data.data?.action);\n }\n if (data.name === \"start-product-tour\") {\n Gleap.startProductTour(data.data?.tourId, true);\n }\n if (data.name === \"open-url\") {\n const url = data.data;\n const newTab = data.newTab ? true : false;\n GleapFrameManager.getInstance().urlHandler(url, newTab);\n }\n if (data.name === \"show-form\") {\n Gleap.startFeedbackFlow(data.data?.formId);\n }\n if (data.name === \"show-survey\") {\n Gleap.showSurvey(data.data?.formId, data.data?.surveyFormat);\n }\n if (data.name === \"show-news-article\") {\n Gleap.openNewsArticle(data.data?.articleId);\n }\n if (data.name === \"show-help-article\") {\n Gleap.openHelpCenterArticle(data.data?.articleId);\n }\n if (data.name === \"show-checklist\") {\n Gleap.startChecklist(\n data.data?.checklistId,\n true,\n data.data?.sharedKey\n );\n }\n } catch (exp) {}\n });\n }\n\n _injectModalUI(modalData) {\n if (!document.body) return false;\n\n if (this.modalContainer) {\n this.hideModal();\n }\n\n this.modalData = modalData;\n\n const wrapper = document.createElement(\"div\");\n wrapper.className = \"gleap-modal-wrapper\";\n wrapper.innerHTML = `\n
\n
\n \n
\n `;\n document.body.appendChild(wrapper);\n this.modalContainer = wrapper;\n\n // Add on backdrop click listener\n this.modalBackdropClickListener = this.modalContainer\n .querySelector(\".gleap-modal-backdrop\")\n .addEventListener(\"click\", () => {\n if (this.modalData?.showCloseButton ?? true) {\n this.hideModal();\n }\n });\n\n // lock background scroll\n document.body.classList.add(\"gleap-modal-open\");\n }\n\n _postMessage(message) {\n try {\n const frame = this.modalContainer.querySelector(\".gleap-modal-frame\");\n if (frame?.contentWindow) {\n frame.contentWindow.postMessage(\n JSON.stringify({ ...message, type: \"modal\" }),\n this.modalUrl\n );\n }\n } catch (err) {}\n }\n\n showModal(modalData) {\n if (modalData && modalData.config) {\n this._injectModalUI(modalData.config);\n }\n }\n\n hideModal() {\n if (!this.modalContainer) return;\n\n if (this.modalBackdropClickListener) {\n this.modalContainer\n .querySelector(\".gleap-modal-backdrop\")\n .removeEventListener(\"click\", this.modalBackdropClickListener);\n }\n\n document.body.removeChild(this.modalContainer);\n this.modalContainer = null;\n document.body.classList.remove(\"gleap-modal-open\");\n }\n}\n","export default class GleapAudioManager {\n static audio;\n static settings = {\n play: true\n };\n\n static playSound(play) {\n this.settings.play = play;\n }\n\n static ping() {\n try {\n if (!this.settings.play) {\n return;\n }\n\n if (!this.audio) {\n this.audio = new Audio('https://js.gleap.io/res/ping.mp3');\n }\n\n const playPromise = this.audio.play();\n if (playPromise !== undefined) {\n playPromise.then(_ => { })\n .catch(error => { });\n }\n } catch (exp) { }\n }\n}\n","export default class GleapTagManager {\n tags = [];\n\n // GleapTagManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapTagManager();\n }\n return this.instance;\n }\n\n /**\n * Returns the tags\n * @returns {*}\n */\n getTags() {\n return this.tags;\n }\n\n /**\n * Sets the tags sent with every ticket.\n * @param {*} tags Array of strings\n */\n setTags(tags) {\n this.tags = tags;\n }\n}\n","/**\n * Returns the Tag of the element\n * @param { Object } element\n * @return { String }\n */\nexport function getID( el )\n{\n const id = el.getAttribute( 'id' );\n\n if( id !== null && id !== '')\n {\n // if the ID starts with a number or contains \":\" selecting with a hash will cause a DOMException\n return id.match(/(?:^\\d|:)/) ? `[id=\"${id}\"]` : '#' + id;\n }\n return null;\n}\n","/**\n * Get class names for an element\n *\n * @pararm { Element } el\n * @return { Array }\n */\nexport function getClasses( el )\n{\n if( !el.hasAttribute( 'class' ) )\n {\n return [];\n }\n\n try {\n let classList = Array.prototype.slice.call( el.classList )\n\n // return only the valid CSS selectors based on RegEx\n return classList.filter(item => !/^[a-z_-][a-z\\d_-]*$/i.test( item ) ? null : item );\n } catch (e) {\n let className = el.getAttribute( 'class' );\n\n // remove duplicate and leading/trailing whitespaces\n className = className.trim().replace( /\\s+/g, ' ' );\n\n // split into separate classnames\n return className.split( ' ' );\n }\n}\n\n/**\n * Returns the Class selectors of the element\n * @param { Object } element\n * @return { Array }\n */\nexport function getClassSelectors( el )\n{\n const classList = getClasses( el ).filter( Boolean );\n return classList.map( cl => `.${cl}` );\n}\n","/**\n * Recursively combinate items.\n * @param { Array } result\n * @param { Array } items\n * @param { Array } data\n * @param { Number } start\n * @param { Number } end\n * @param { Number } index\n * @param { Number } k\n */\nfunction kCombinations( result, items, data, start, end, index, k )\n{\n if( index === k )\n {\n result.push( data.slice( 0, index ).join( '' ) );\n return;\n }\n\n for( let i = start; i <= end && end - i + 1 >= k - index; ++i )\n {\n data[index] = items[i];\n kCombinations( result, items, data, i + 1, end, index + 1, k );\n }\n}\n\n/**\n * Returns all the possible selector combinations\n * @param { Array } items\n * @param { Number } k\n * @return { Array }\n */\nexport function getCombinations( items, k )\n{\n const result = [],\n n = items.length,\n data = [];\n\n for( var l = 1; l <= k; ++l )\n {\n kCombinations( result, items, data, 0, n - 1, 0, l );\n }\n\n return result;\n}\n","/**\n * Determines if the passed el is a DOM element\n */\nexport function isElement( el )\n{\n let isElem;\n\n if ( typeof HTMLElement === 'object' )\n {\n isElem = el instanceof HTMLElement;\n }\n else\n {\n isElem = !!el && ( typeof el === 'object' ) && el.nodeType === 1 && typeof el.nodeName === 'string';\n }\n return isElem;\n}\n","import { isElement } from './isElement';\n\n/**\n * Returns the selectors based on the position of the element relative to its siblings\n * @param { Object } element\n * @return { Array }\n */\nexport function getNthChild( element )\n{\n let counter = 0;\n let k;\n let sibling;\n const { parentNode } = element;\n\n if( Boolean( parentNode ) )\n {\n const { childNodes } = parentNode;\n const len = childNodes.length;\n for ( k = 0; k < len; k++ )\n {\n sibling = childNodes[ k ];\n if( isElement( sibling ) )\n {\n counter++;\n if( sibling === element )\n {\n return `:nth-child(${counter})`;\n }\n }\n }\n }\n return null;\n}\n","/**\n * Returns the Tag of the element\n * @param { Object } element\n * @return { String }\n */\nexport function getTag( el )\n{\n return el.tagName.toLowerCase().replace(/:/g, '\\\\:');\n}\n","/**\n * Checks if the selector is unique\n * @param { Object } element\n * @param { String } selector\n * @return { Array }\n */\nexport function isUnique( el, selector )\n{\n if( !Boolean( selector ) ) return false;\n const elems = el.ownerDocument.querySelectorAll( selector );\n return elems.length === 1 && elems[ 0 ] === el;\n}\n","/**\n * Expose `unique`\n */\n\nimport { getID } from './getID';\nimport { getClassSelectors } from './getClasses';\nimport { getCombinations } from './getCombinations';\nimport { getAttributes } from './getAttributes';\nimport { getNthChild } from './getNthChild';\nimport { getTag } from './getTag';\nimport { isUnique } from './isUnique';\nimport { getParents } from './getParents';\n\n\n/**\n * Returns all the selectors of the elmenet\n * @param { Object } element\n * @return { Object }\n */\nfunction getAllSelectors( el, selectors, attributesToIgnore )\n{\n const funcs =\n {\n 'Tag' : getTag,\n 'NthChild' : getNthChild,\n 'Attributes' : elem => getAttributes( elem, attributesToIgnore ),\n 'Class' : getClassSelectors,\n 'ID' : getID,\n };\n\n return selectors.reduce( ( res, next ) =>\n {\n res[ next ] = funcs[ next ]( el );\n return res;\n }, {} );\n}\n\n/**\n * Tests uniqueNess of the element inside its parent\n * @param { Object } element\n * @param { String } Selectors\n * @return { Boolean }\n */\nfunction testUniqueness( element, selector )\n{\n try {\n const { parentNode } = element;\n const elements = parentNode.querySelectorAll( selector );\n return elements.length === 1 && elements[ 0 ] === element;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tests all selectors for uniqueness and returns the first unique selector.\n * @param { Object } element\n * @param { Array } selectors\n * @return { String }\n */\nfunction getFirstUnique( element, selectors )\n{\n return selectors.find( testUniqueness.bind( null, element ) );\n}\n\n/**\n * Checks all the possible selectors of an element to find one unique and return it\n * @param { Object } element\n * @param { Array } items\n * @param { String } tag\n * @return { String }\n */\nfunction getUniqueCombination( element, items, tag )\n{\n let combinations = getCombinations( items, 3 ),\n firstUnique = getFirstUnique( element, combinations );\n\n if( Boolean( firstUnique ) )\n {\n return firstUnique;\n }\n\n if( Boolean( tag ) )\n {\n combinations = combinations.map( combination => tag + combination );\n firstUnique = getFirstUnique( element, combinations );\n\n if( Boolean( firstUnique ) )\n {\n return firstUnique;\n }\n }\n\n return null;\n}\n\n/**\n * Returns a uniqueSelector based on the passed options\n * @param { DOM } element\n * @param { Array } options\n * @return { String }\n */\nfunction getUniqueSelector( element, selectorTypes, attributesToIgnore, excludeRegex )\n{\n let foundSelector;\n\n const elementSelectors = getAllSelectors( element, selectorTypes, attributesToIgnore );\n\n if( excludeRegex && excludeRegex instanceof RegExp )\n {\n elementSelectors.ID = excludeRegex.test( elementSelectors.ID ) ? null : elementSelectors.ID;\n elementSelectors.Class = elementSelectors.Class.filter( className => !excludeRegex.test( className ) );\n }\n\n for( let selectorType of selectorTypes )\n {\n const { ID, Tag, Class : Classes, Attributes, NthChild } = elementSelectors;\n switch ( selectorType )\n {\n case 'ID' :\n if ( Boolean( ID ) && testUniqueness( element, ID ) )\n {\n return ID;\n }\n break;\n\n case 'Tag':\n if ( Boolean( Tag ) && testUniqueness( element, Tag ) )\n {\n return Tag;\n }\n break;\n\n case 'Class':\n if ( Boolean( Classes ) && Classes.length )\n {\n foundSelector = getUniqueCombination( element, Classes, Tag );\n if (foundSelector) {\n return foundSelector;\n }\n }\n break;\n\n case 'Attributes':\n if ( Boolean( Attributes ) && Attributes.length )\n {\n foundSelector = getUniqueCombination( element, Attributes, Tag );\n if ( foundSelector )\n {\n return foundSelector;\n }\n }\n break;\n\n case 'NthChild':\n if ( Boolean( NthChild ) )\n {\n return NthChild\n }\n }\n }\n return '*';\n}\n\n/**\n * Generate unique CSS selector for given DOM element\n *\n * @param {Element} el\n * @return {String}\n * @api private\n */\n\nexport default function unique( el, options={} )\n{\n const {\n selectorTypes = ['ID', 'Class', 'Tag', 'NthChild'],\n attributesToIgnore = ['id', 'class', 'length'],\n excludeRegex = null,\n } = options;\n const allSelectors = [];\n const parents = getParents( el );\n\n for( let elem of parents )\n {\n const selector = getUniqueSelector( elem, selectorTypes, attributesToIgnore, excludeRegex );\n if( Boolean( selector ) )\n {\n allSelectors.push( selector );\n }\n }\n\n const selectors = [];\n for( let it of allSelectors )\n {\n selectors.unshift( it );\n const selector = selectors.join( ' > ' );\n if( isUnique( el, selector ) )\n {\n return selector;\n }\n }\n\n return null;\n}\n","/**\n * Returns the Attribute selectors of the element\n * @param { DOM Element } element\n * @param { Array } array of attributes to ignore\n * @return { Array }\n */\nexport function getAttributes( el, attributesToIgnore = ['id', 'class', 'length'] )\n{\n const { attributes } = el;\n const attrs = [ ...attributes ];\n\n return attrs.reduce( ( sum, next ) =>\n {\n if ( ! ( attributesToIgnore.indexOf( next.nodeName ) > -1 ) )\n {\n sum.push( `[${next.nodeName}=\"${next.value}\"]` );\n }\n return sum;\n }, [] );\n}\n","import { isElement } from './isElement';\n\n/**\n * Returns all the element and all of its parents\n * @param { DOM Element }\n * @return { Array of DOM elements }\n */\nexport function getParents( el )\n{\n const parents = [];\n let currentElement = el;\n while( isElement( currentElement ) )\n {\n parents.push( currentElement );\n currentElement = currentElement.parentNode;\n }\n\n return parents;\n}\n","/**\n * Utility function to get the bounding rectangle of an element.\n * @param {HTMLElement} el - The target element.\n * @returns {Object} An object containing x, y, width, and height.\n */\nfunction getElementBounds(el) {\n const rect = el.getBoundingClientRect();\n return {\n x: window.pageXOffset + rect.left,\n y: window.pageYOffset + rect.top,\n width: el.offsetWidth,\n height: el.offsetHeight,\n };\n}\n\n/**\n * Class representing an overlay element.\n */\nclass ElementOverlay {\n /**\n * Create an ElementOverlay.\n * @param {Object} options - Configuration options.\n * @param {string} [options.className] - CSS class name for the overlay.\n * @param {Object} [options.style] - Style overrides for the overlay.\n */\n constructor(options) {\n // Create and style the overlay element.\n this.overlay = document.createElement(\"div\");\n this.overlay.className = options.className || \"_ext-element-overlay\";\n this.overlay.style.background =\n (options.style && options.style.background) || \"rgba(250, 240, 202, 0.2)\";\n this.overlay.style.borderColor =\n (options.style && options.style.borderColor) || \"#F95738\";\n this.overlay.style.borderStyle =\n (options.style && options.style.borderStyle) || \"solid\";\n this.overlay.style.borderRadius =\n (options.style && options.style.borderRadius) || \"1px\";\n this.overlay.style.borderWidth =\n (options.style && options.style.borderWidth) || \"1px\";\n this.overlay.style.boxSizing =\n (options.style && options.style.boxSizing) || \"border-box\";\n this.overlay.style.cursor =\n (options.style && options.style.cursor) || \"crosshair\";\n this.overlay.style.position =\n (options.style && options.style.position) || \"absolute\";\n this.overlay.style.zIndex =\n (options.style && options.style.zIndex) || \"2147483647\";\n this.overlay.style.margin =\n (options.style && options.style.margin) || \"0px\";\n this.overlay.style.padding =\n (options.style && options.style.padding) || \"0px\";\n\n // Create a container that will host a Shadow DOM.\n this.shadowContainer = document.createElement(\"div\");\n this.shadowContainer.className = \"_ext-element-overlay-container\";\n this.shadowContainer.style.position = \"absolute\";\n this.shadowContainer.style.top = \"0px\";\n this.shadowContainer.style.left = \"0px\";\n this.shadowContainer.style.margin = \"0px\";\n this.shadowContainer.style.padding = \"0px\";\n this.shadowRoot = this.shadowContainer.attachShadow({ mode: \"open\" });\n }\n\n /**\n * Adds the overlay to the DOM.\n * @param {Node} parent - The parent element.\n * @param {boolean} useShadowDOM - Whether to use Shadow DOM.\n */\n addToDOM(parent, useShadowDOM) {\n this.usingShadowDOM = useShadowDOM;\n if (useShadowDOM) {\n parent.insertBefore(this.shadowContainer, parent.firstChild);\n this.shadowRoot.appendChild(this.overlay);\n } else {\n parent.appendChild(this.overlay);\n }\n }\n\n /**\n * Removes the overlay from the DOM.\n */\n removeFromDOM() {\n this.setBounds({ x: 0, y: 0, width: 0, height: 0 });\n if (this.overlay.remove) {\n this.overlay.remove();\n } else if (this.overlay.parentNode) {\n this.overlay.parentNode.removeChild(this.overlay);\n }\n if (this.usingShadowDOM) {\n if (this.shadowContainer.remove) {\n this.shadowContainer.remove();\n } else if (this.shadowContainer.parentNode) {\n this.shadowContainer.parentNode.removeChild(this.shadowContainer);\n }\n }\n }\n\n /**\n * Enables pointer events on the overlay.\n */\n captureCursor() {\n this.overlay.style.pointerEvents = \"auto\";\n }\n\n /**\n * Disables pointer events on the overlay.\n */\n ignoreCursor() {\n this.overlay.style.pointerEvents = \"none\";\n }\n\n /**\n * Sets the position and size of the overlay.\n * @param {Object} bounds - The bounding box.\n * @param {number} bounds.x - The x-coordinate.\n * @param {number} bounds.y - The y-coordinate.\n * @param {number} bounds.width - The width.\n * @param {number} bounds.height - The height.\n */\n setBounds(bounds) {\n const { x, y, width, height } = bounds;\n this.overlay.style.left = x + \"px\";\n this.overlay.style.top = y + \"px\";\n this.overlay.style.width = width + \"px\";\n this.overlay.style.height = height + \"px\";\n }\n}\n\n/**\n * Class representing an element picker that uses the overlay.\n */\nclass ElementPicker {\n /**\n * Create an ElementPicker.\n * @param {Object} [overlayOptions] - Options to pass to ElementOverlay.\n */\n constructor(overlayOptions) {\n this.active = false;\n this.overlay = new ElementOverlay(overlayOptions || {});\n this.handleMouseMove = this.handleMouseMove.bind(this);\n this.handleClick = this.handleClick.bind(this);\n this.tick = this.tick.bind(this);\n }\n\n /**\n * Starts the element picking process.\n * @param {Object} options - Picker options.\n * @param {Node} [options.parentElement] - Parent element to attach the overlay.\n * @param {boolean} [options.useShadowDOM=true] - Whether to use Shadow DOM.\n * @param {Function} [options.onClick] - Callback invoked on click.\n * @param {Function} [options.onHover] - Callback invoked on hover.\n * @param {Function} [options.elementFilter] - Function to filter elements.\n * @returns {boolean} True if started successfully, false if already active.\n */\n start(options) {\n if (this.active) {\n return false;\n }\n this.active = true;\n this.options = options;\n\n document.addEventListener(\"mousemove\", this.handleMouseMove, true);\n document.addEventListener(\"click\", this.handleClick, true);\n\n const parentElement = options.parentElement || document.body;\n const useShadowDOM =\n options.useShadowDOM !== undefined ? options.useShadowDOM : true;\n this.overlay.addToDOM(parentElement, useShadowDOM);\n this.tick();\n\n return true;\n }\n\n /**\n * Stops the element picking process.\n */\n stop() {\n this.active = false;\n this.options = undefined;\n\n document.removeEventListener(\"mousemove\", this.handleMouseMove, true);\n document.removeEventListener(\"click\", this.handleClick, true);\n\n this.overlay.removeFromDOM();\n this.target = undefined;\n this.mouseX = undefined;\n this.mouseY = undefined;\n\n if (this.tickReq) {\n window.cancelAnimationFrame(this.tickReq);\n }\n }\n\n /**\n * Handles mouse move events.\n * @param {MouseEvent} event - The mousemove event.\n */\n handleMouseMove(event) {\n this.mouseX = event.clientX;\n this.mouseY = event.clientY;\n }\n\n /**\n * Handles click events.\n * @param {MouseEvent} event - The click event.\n */\n handleClick(event) {\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n\n if (this.target && this.options && this.options.onClick) {\n this.options.onClick(this.target);\n }\n }\n\n /**\n * The tick function that continuously updates the target element.\n */\n tick() {\n this.updateTarget();\n this.tickReq = window.requestAnimationFrame(this.tick);\n }\n\n /**\n * Updates the target element based on the current mouse position.\n */\n updateTarget() {\n if (this.mouseX === undefined || this.mouseY === undefined) {\n return;\n }\n\n // Temporarily ignore the overlay's pointer events to detect the underlying element.\n this.overlay.ignoreCursor();\n const elAtCursor = document.elementFromPoint(this.mouseX, this.mouseY);\n const newTarget = elAtCursor;\n this.overlay.captureCursor();\n\n // If the target hasn't changed, do nothing.\n if (!newTarget || newTarget === this.target) {\n return;\n }\n\n // If an element filter is provided and the new target doesn't match, clear the target.\n if (this.options && this.options.elementFilter) {\n if (!this.options.elementFilter(newTarget)) {\n this.target = undefined;\n this.overlay.setBounds({ x: 0, y: 0, width: 0, height: 0 });\n return;\n }\n }\n\n this.target = newTarget;\n const bounds = getElementBounds(newTarget);\n this.overlay.setBounds(bounds);\n\n if (this.options && this.options.onHover) {\n this.options.onHover(newTarget);\n }\n }\n}\n\nexport default ElementPicker;\n","import unique from \"./unique-selector/src/unique-selector\";\nimport ElementPicker from \"./ElementPicker\";\n\nclass GleapAdminHelper {\n picker = null;\n onElementPicked = null;\n\n stopPicker = () => {\n if (this.picker) {\n this.picker.stop();\n this.picker = null;\n return;\n }\n };\n\n startPicker = () => {\n this.stopPicker();\n var self = this;\n\n const style = {\n borderColor: \"#2142E7\",\n background: \"transparent\",\n borderWidth: \"4px\",\n borderRadius: \"5px\",\n };\n this.picker = new ElementPicker({ style });\n this.picker.start({\n useShadowDOM: false,\n onClick: (el) => {\n try {\n let selector;\n const tourId = el.getAttribute(\"data-gleap-tour\");\n if (tourId) {\n selector = `[data-gleap-tour=\"${tourId}\"]`;\n } else {\n selector = unique(el);\n }\n\n self.onElementPicked && self.onElementPicked(selector);\n } catch (e) {\n console.error(\"Error while getting unique selector\", e);\n }\n },\n elementFilter: (el) => {\n if (\n el.classList.contains(\"gleap-admin-collapse-ui\") ||\n el.closest(\".gleap-admin-collapse-ui\")\n ) {\n return false;\n }\n return true;\n },\n });\n };\n\n setMode = (mode) => {\n this.mode = mode;\n if (mode === \"navigate\") {\n this.stopPicker();\n }\n if (mode === \"picker\") {\n this.startPicker();\n }\n };\n}\n\nexport default GleapAdminHelper;\n","import { loadIcon } from \"./UI\";\nimport GleapAdminHelper from \"./GleapAdminHelper\";\nimport { GleapProductTours } from \"./Gleap\";\n\nexport default class GleapAdminManager {\n libraryInstance = null;\n lastUrl = undefined;\n injectedFrame = false;\n gleapFrameContainer = null;\n gleapCollapseUI = null;\n injectedCollapseUI = false;\n gleapFrame = null;\n configData = null;\n adminHelper = null;\n status = \"navigate\";\n\n // GleapAdminManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapAdminManager();\n }\n\n return this.instance;\n }\n\n logCurrentPage() {\n const currentUrl = window.location.href;\n if (currentUrl && currentUrl !== this.lastUrl) {\n this.lastUrl = currentUrl;\n\n this.sendMessageToTourBuilder({\n name: \"page-changed\",\n data: {\n page: currentUrl,\n },\n });\n }\n }\n\n startPageListener() {\n const self = this;\n setInterval(function () {\n self.logCurrentPage();\n }, 1000);\n }\n\n initAdminHelper() {\n const self = this;\n\n // Disable product tours.\n GleapProductTours.getInstance().disable();\n\n self.adminHelper = new GleapAdminHelper();\n\n try {\n self.adminHelper.onElementPicked = (selector) => {\n self.toggleCollapseUI(true);\n self.sendMessageToTourBuilder({\n name: \"element-picked\",\n data: {\n selector,\n },\n });\n };\n } catch (e) {\n console.log(e);\n }\n\n self.injectFrame();\n self.injectCollapseUI();\n self.setFrameHeight(\"loading\");\n }\n\n setFrameHeight(state) {\n if (this.gleapFrameContainer) {\n var height = \"\";\n if (state === \"picker\" || state === \"navigate\") {\n height = \"65px\";\n } else if (state === \"editor\") {\n height = \"100vh\";\n } else {\n height = \"0px\";\n }\n this.gleapFrameContainer.style.height = height;\n }\n }\n\n start() {\n if (typeof window === \"undefined\") {\n return;\n }\n\n if (window.gleapAdminDisabled) {\n return;\n }\n\n var self = this;\n\n // Add window message listener.\n window.addEventListener(\"message\", (event) => {\n if (event.origin !== \"https://app.gleap.io\") {\n return;\n }\n\n try {\n const data = JSON.parse(event.data);\n\n if (data.type === \"admin\") {\n if (data.name === \"load\") {\n self.configData = data.data;\n self.initAdminHelper();\n }\n\n if (data.name === \"smartlink-search-result\") {\n this.sendMessageToTourBuilder({\n name: \"smartlink-search-result\",\n data: data.data,\n });\n }\n\n if (data.name === \"translate-complete\") {\n this.sendMessageToTourBuilder({\n name: \"translate-complete\",\n data: data.data,\n });\n }\n }\n\n if (data.type === \"tourbuilder\") {\n if (data.name === \"loaddata\") {\n this.sendMessageToTourBuilder({\n name: \"data\",\n data: {\n ...self.configData,\n currentPage: window.location.href,\n },\n });\n }\n\n if (data.name === \"highlight-element\") {\n // Cleanup.\n document\n .querySelectorAll(\".gleap-admin-highlight\")\n .forEach((el) => {\n el.classList.remove(\"gleap-admin-highlight\");\n });\n\n // Find the element and highlight it.\n if (data?.data?.selector) {\n const element = document.querySelector(data?.data?.selector);\n if (element) {\n element.classList.add(\"gleap-admin-highlight\");\n }\n }\n }\n\n if (data.name === \"smartlink-search\") {\n this.sendMessage({\n name: \"smartlink-search\",\n data: data.data,\n });\n }\n\n if (data.name === \"product-tour-started\") {\n this.sendMessage({\n name: \"product-tour-started\",\n data: data.data,\n });\n }\n\n if (data.name === \"translate\") {\n this.sendMessage({\n name: \"translate\",\n data: data.data,\n });\n }\n\n if (data.name === \"save\") {\n this.sendMessage({\n name: \"save\",\n data: data.data,\n });\n }\n\n if (data.name === \"update-steps\") {\n this.sendMessage({\n name: \"update-steps\",\n data: data.data,\n });\n }\n\n if (data.name === \"click\") {\n try {\n document.querySelector(data.data.selector).click();\n } catch (e) {\n console.log(e);\n }\n }\n\n if (data.name === \"status-changed\") {\n self.status = data.data;\n this.setFrameHeight(self.status);\n self.adminHelper.stopPicker();\n\n if (self.status === \"picker\") {\n self.adminHelper.startPicker();\n }\n }\n }\n } catch (exp) {}\n });\n\n this.sendMessage({\n name: \"init\",\n });\n\n this.startPageListener();\n }\n\n sendMessage(data) {\n try {\n if (window && window.opener) {\n window.opener.postMessage(\n JSON.stringify({\n ...data,\n type: \"admin\",\n }),\n \"*\"\n );\n }\n } catch (e) {}\n }\n\n sendMessageToTourBuilder(data) {\n try {\n if (this.gleapFrame && this.gleapFrame.contentWindow) {\n this.gleapFrame.contentWindow.postMessage(\n JSON.stringify({\n ...data,\n type: \"tourbuilder\",\n }),\n \"*\"\n );\n }\n } catch (e) {}\n }\n\n toggleCollapseUI = (onlyIfActive = false) => {\n const COLLAPSE_UI_ACTIVE_CLASS = \"gleap-admin-collapse-ui-active\";\n const FRAME_CONTAINER_ACTIVE_CLASS = \"gleap-admin-frame-container-active\";\n\n // Helper function to check if an element has an active class\n const isActive = (element, activeClass) =>\n element && element.classList.contains(activeClass);\n\n // Check if onlyIfActive is true and if the UI elements are already inactive\n if (\n onlyIfActive &&\n (!isActive(this.gleapCollapseUI, COLLAPSE_UI_ACTIVE_CLASS) ||\n !isActive(this.gleapFrameContainer, FRAME_CONTAINER_ACTIVE_CLASS))\n ) {\n return; // Return early without toggling the UI\n }\n\n // Toggle the UI elements\n if (this.gleapCollapseUI) {\n this.gleapCollapseUI.classList.toggle(COLLAPSE_UI_ACTIVE_CLASS);\n }\n if (this.gleapFrameContainer) {\n this.gleapFrameContainer.classList.toggle(FRAME_CONTAINER_ACTIVE_CLASS);\n }\n };\n\n injectCollapseUI = () => {\n if (this.injectedCollapseUI) {\n return;\n }\n this.injectedCollapseUI = true;\n\n // Inject widget HTML.\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-admin-collapse-ui\";\n elem.innerHTML = `
\n ${loadIcon(\"arrowdown\")}\n
`;\n document.body.appendChild(elem);\n\n this.gleapCollapseUI = elem;\n\n elem.addEventListener(\"click\", (e) => {\n e.stopImmediatePropagation();\n e.stopPropagation();\n e.preventDefault();\n\n this.toggleCollapseUI();\n });\n };\n\n injectFrame = () => {\n if (this.injectedFrame) {\n return;\n }\n this.injectedFrame = true;\n\n // Inject widget HTML.\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-admin-frame-container\";\n elem.innerHTML = ``;\n document.body.appendChild(elem);\n\n this.gleapFrameContainer = elem;\n this.gleapFrame = document.querySelector(\".gleap-admin-frame\");\n };\n}\n","const GleapTours = (function () {\n \"use strict\";\n let currentConfig = {};\n function configure(config = {}) {\n currentConfig = {\n animate: true,\n allowClose: true,\n overlayOpacity: 0.7,\n smoothScroll: false,\n disableActiveInteraction: false,\n showProgress: false,\n stagePadding: 10,\n stageRadius: 5,\n popoverOffset: 10,\n showButtons: [\"next\", \"previous\", \"close\"],\n disableButtons: [],\n overlayColor: \"#000\",\n ...config,\n };\n }\n function getConfig(key) {\n return key ? currentConfig[key] : currentConfig;\n }\n function easeInOutQuad(elapsed, initialValue, amountOfChange, duration) {\n if ((elapsed /= duration / 2) < 1) {\n return (amountOfChange / 2) * elapsed * elapsed + initialValue;\n }\n return (\n (-amountOfChange / 2) * (--elapsed * (elapsed - 2) - 1) + initialValue\n );\n }\n function getFocusableElements(parentEls) {\n const focusableQuery =\n 'a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type=\"text\"]:not([disabled]), input[type=\"radio\"]:not([disabled]), input[type=\"checkbox\"]:not([disabled]), select:not([disabled])';\n return parentEls\n .flatMap((parentEl) => {\n const isParentFocusable = parentEl.matches(focusableQuery);\n const focusableEls = Array.from(\n parentEl.querySelectorAll(focusableQuery)\n );\n return [...(isParentFocusable ? [parentEl] : []), ...focusableEls];\n })\n .filter((el) => {\n return (\n getComputedStyle(el).pointerEvents !== \"none\" && isElementVisible(el)\n );\n });\n }\n function bringInView(element) {\n if (!element || isElementInView(element)) {\n return;\n }\n const shouldSmoothScroll = getConfig(\"smoothScroll\");\n element.scrollIntoView({\n // Removing the smooth scrolling for elements which exist inside the scrollable parent\n // This was causing the highlight to not properly render\n behavior:\n !shouldSmoothScroll || hasScrollableParent(element) ? \"auto\" : \"smooth\",\n inline: \"center\",\n block: \"center\",\n });\n }\n function hasScrollableParent(e) {\n if (!e || !e.parentElement) {\n return;\n }\n const parent = e.parentElement;\n return parent.scrollHeight > parent.clientHeight;\n }\n function isElementInView(element) {\n const rect = element.getBoundingClientRect();\n return (\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <=\n (window.innerHeight || document.documentElement.clientHeight) &&\n rect.right <= (window.innerWidth || document.documentElement.clientWidth)\n );\n }\n function isElementVisible(el) {\n return !!(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\n }\n let currentState = {};\n function setState(key, value) {\n currentState[key] = value;\n }\n function getState(key) {\n return key ? currentState[key] : currentState;\n }\n function resetState() {\n currentState = {};\n }\n let registeredListeners = {};\n function listen(hook, callback) {\n registeredListeners[hook] = callback;\n }\n function emit(hook) {\n var _a;\n (_a = registeredListeners[hook]) == null\n ? void 0\n : _a.call(registeredListeners);\n }\n function destroyEmitter() {\n registeredListeners = {};\n }\n function transitionStage(elapsed, duration, from, to) {\n let activeStagePosition = getState(\"__activeStagePosition\");\n const fromDefinition = activeStagePosition\n ? activeStagePosition\n : from.getBoundingClientRect();\n const toDefinition = to.getBoundingClientRect();\n const x = easeInOutQuad(\n elapsed,\n fromDefinition.x,\n toDefinition.x - fromDefinition.x,\n duration\n );\n const y = easeInOutQuad(\n elapsed,\n fromDefinition.y,\n toDefinition.y - fromDefinition.y,\n duration\n );\n const width = easeInOutQuad(\n elapsed,\n fromDefinition.width,\n toDefinition.width - fromDefinition.width,\n duration\n );\n const height = easeInOutQuad(\n elapsed,\n fromDefinition.height,\n toDefinition.height - fromDefinition.height,\n duration\n );\n activeStagePosition = {\n x,\n y,\n width,\n height,\n };\n renderOverlay(activeStagePosition);\n setState(\"__activeStagePosition\", activeStagePosition);\n }\n function trackActiveElement(element) {\n if (!element) {\n return;\n }\n const definition = element.getBoundingClientRect();\n const activeStagePosition = {\n x: definition.x,\n y: definition.y,\n width: definition.width,\n height: definition.height,\n };\n setState(\"__activeStagePosition\", activeStagePosition);\n renderOverlay(activeStagePosition);\n }\n function refreshOverlay() {\n const activeStagePosition = getState(\"__activeStagePosition\");\n const overlaySvg = getState(\"__overlaySvg\");\n if (!activeStagePosition) {\n return;\n }\n if (!overlaySvg) {\n console.warn(\"No stage svg found.\");\n return;\n }\n const windowX = window.innerWidth;\n const windowY = window.innerHeight;\n overlaySvg.setAttribute(\"viewBox\", `0 0 ${windowX} ${windowY}`);\n }\n function mountOverlay(stagePosition) {\n const overlaySvg = createOverlaySvg(stagePosition);\n document.body.appendChild(overlaySvg);\n onDriverClick(overlaySvg, (e) => {\n const target = e.target;\n if (target.tagName !== \"path\") {\n return;\n }\n emit(\"overlayClick\");\n });\n setState(\"__overlaySvg\", overlaySvg);\n }\n function renderOverlay(stagePosition) {\n const overlaySvg = getState(\"__overlaySvg\");\n if (!overlaySvg) {\n mountOverlay(stagePosition);\n return;\n }\n const pathElement = overlaySvg.firstElementChild;\n if ((pathElement == null ? void 0 : pathElement.tagName) !== \"path\") {\n throw new Error(\"no path element found in stage svg\");\n }\n pathElement.setAttribute(\"d\", generateStageSvgPathString(stagePosition));\n }\n function createOverlaySvg(stage) {\n const windowX = window.innerWidth;\n const windowY = window.innerHeight;\n const svg = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n svg.classList.add(\"gleap-tour-overlay\", \"gleap-tour-overlay-animated\");\n svg.setAttribute(\"viewBox\", `0 0 ${windowX} ${windowY}`);\n svg.setAttribute(\"xmlSpace\", \"preserve\");\n svg.setAttribute(\"xmlnsXlink\", \"http://www.w3.org/1999/xlink\");\n svg.setAttribute(\"version\", \"1.1\");\n svg.setAttribute(\"preserveAspectRatio\", \"xMinYMin slice\");\n svg.style.fillRule = \"evenodd\";\n svg.style.clipRule = \"evenodd\";\n svg.style.strokeLinejoin = \"round\";\n svg.style.strokeMiterlimit = \"2\";\n svg.style.zIndex = \"10000\";\n svg.style.position = \"fixed\";\n svg.style.top = \"0\";\n svg.style.left = \"0\";\n svg.style.width = \"100%\";\n svg.style.height = \"100%\";\n const stagePath = document.createElementNS(\n \"http://www.w3.org/2000/svg\",\n \"path\"\n );\n stagePath.setAttribute(\"d\", generateStageSvgPathString(stage));\n stagePath.style.fill = getConfig(\"overlayColor\") || \"rgb(0,0,0)\";\n stagePath.style.opacity = `${getConfig(\"overlayOpacity\")}`;\n stagePath.style.pointerEvents = \"auto\";\n stagePath.style.cursor = \"auto\";\n svg.appendChild(stagePath);\n return svg;\n }\n function generateStageSvgPathString(stage) {\n const windowX = window.innerWidth;\n const windowY = window.innerHeight;\n const stagePadding = getConfig(\"stagePadding\") || 0;\n const stageRadius = getConfig(\"stageRadius\") || 0;\n const stageWidth = stage.width + stagePadding * 2;\n const stageHeight = stage.height + stagePadding * 2;\n const limitedRadius = Math.min(\n stageRadius,\n stageWidth / 2,\n stageHeight / 2\n );\n const normalizedRadius = Math.floor(Math.max(limitedRadius, 0));\n const highlightBoxX = stage.x - stagePadding + normalizedRadius;\n const highlightBoxY = stage.y - stagePadding;\n const highlightBoxWidth = stageWidth - normalizedRadius * 2;\n const highlightBoxHeight = stageHeight - normalizedRadius * 2;\n return `M${windowX},0L0,0L0,${windowY}L${windowX},${windowY}L${windowX},0Z\n M${highlightBoxX},${highlightBoxY} h${highlightBoxWidth} a${normalizedRadius},${normalizedRadius} 0 0 1 ${normalizedRadius},${normalizedRadius} v${highlightBoxHeight} a${normalizedRadius},${normalizedRadius} 0 0 1 -${normalizedRadius},${normalizedRadius} h-${highlightBoxWidth} a${normalizedRadius},${normalizedRadius} 0 0 1 -${normalizedRadius},-${normalizedRadius} v-${highlightBoxHeight} a${normalizedRadius},${normalizedRadius} 0 0 1 ${normalizedRadius},-${normalizedRadius} z`;\n }\n function destroyOverlay() {\n const overlaySvg = getState(\"__overlaySvg\");\n if (overlaySvg) {\n overlaySvg.remove();\n }\n }\n function mountDummyElement() {\n const existingDummy = document.getElementById(\"gleap-tour-dummy-element\");\n if (existingDummy) {\n return existingDummy;\n }\n let element = document.createElement(\"div\");\n element.id = \"gleap-tour-dummy-element\";\n element.style.width = \"0\";\n element.style.height = \"0\";\n element.style.pointerEvents = \"none\";\n element.style.opacity = \"0\";\n element.style.position = \"fixed\";\n element.style.top = \"50%\";\n element.style.left = \"50%\";\n document.body.appendChild(element);\n return element;\n }\n function highlight(step, attemptTime = 5000) {\n const { element } = step;\n let elemObj = element;\n if (typeof elemObj === \"string\") {\n try {\n elemObj = document.querySelector(element);\n } catch (error) {\n // This will escape colons within IDs but not affect pseudo-classes or other valid uses of colons\n let refactoredElement = element.replace(\n /(#[^#\\s]+)/g,\n function (match) {\n return match.replace(/:/g, \"\\\\:\");\n }\n );\n elemObj = document.querySelector(refactoredElement);\n }\n }\n if (element && !elemObj && attemptTime >= 0) {\n setTimeout(() => {\n hidePopover();\n highlight(step, attemptTime - 100);\n }, 100);\n\n return;\n }\n\n if (!elemObj) {\n if (step.mode === \"INPUT\" || step.mode === \"CLICK\") {\n return getConfig(\"onElementNotFound\")(step);\n }\n }\n\n if (!elemObj) {\n elemObj = mountDummyElement();\n }\n\n transferHighlight(elemObj, step);\n }\n function refreshActiveHighlight() {\n const activeHighlight = getState(\"__activeElement\");\n const activeStep = getState(\"__activeStep\");\n if (!activeHighlight) {\n return;\n }\n trackActiveElement(activeHighlight);\n refreshOverlay();\n repositionPopover(activeHighlight, activeStep);\n }\n function transferHighlight(toElement, toStep) {\n const duration = 400;\n const start = Date.now();\n const fromStep = getState(\"__activeStep\");\n const fromElement = getState(\"__activeElement\") || toElement;\n const isFirstHighlight = !fromElement || fromElement === toElement;\n const isToDummyElement = toElement.id === \"gleap-tour-dummy-element\";\n const isFromDummyElement = fromElement.id === \"gleap-tour-dummy-element\";\n const isAnimatedTour = getConfig(\"animate\");\n const highlightStartedHook =\n toStep.onHighlightStarted || getConfig(\"onHighlightStarted\");\n const highlightedHook =\n (toStep == null ? void 0 : toStep.onHighlighted) ||\n getConfig(\"onHighlighted\");\n const deselectedHook =\n (fromStep == null ? void 0 : fromStep.onDeselected) ||\n getConfig(\"onDeselected\");\n const config = getConfig();\n const state = getState();\n if (!isFirstHighlight && deselectedHook) {\n deselectedHook(isFromDummyElement ? void 0 : fromElement, fromStep, {\n config,\n state,\n });\n }\n if (highlightStartedHook) {\n highlightStartedHook(isToDummyElement ? void 0 : toElement, toStep, {\n config,\n state,\n });\n }\n const hasDelayedPopover = !isFirstHighlight && isAnimatedTour;\n let isPopoverRendered = false;\n hidePopover();\n setState(\"previousStep\", fromStep);\n setState(\"previousElement\", fromElement);\n setState(\"activeStep\", toStep);\n setState(\"activeElement\", toElement);\n const animate = () => {\n const transitionCallback = getState(\"__transitionCallback\");\n if (transitionCallback !== animate) {\n return;\n }\n const elapsed = Date.now() - start;\n const timeRemaining = duration - elapsed;\n const isHalfwayThrough = timeRemaining <= duration / 2;\n if (\n toStep.popover &&\n isHalfwayThrough &&\n !isPopoverRendered &&\n hasDelayedPopover\n ) {\n renderPopover(toElement, toStep);\n isPopoverRendered = true;\n }\n if (getConfig(\"animate\") && elapsed < duration) {\n transitionStage(elapsed, duration, fromElement, toElement);\n } else {\n trackActiveElement(toElement);\n if (highlightedHook) {\n highlightedHook(isToDummyElement ? void 0 : toElement, toStep, {\n config: getConfig(),\n state: getState(),\n });\n }\n setState(\"__transitionCallback\", void 0);\n setState(\"__previousStep\", fromStep);\n setState(\"__previousElement\", fromElement);\n setState(\"__activeStep\", toStep);\n setState(\"__activeElement\", toElement);\n }\n window.requestAnimationFrame(animate);\n };\n setState(\"__transitionCallback\", animate);\n window.requestAnimationFrame(animate);\n bringInView(toElement);\n if (!hasDelayedPopover && toStep.popover) {\n renderPopover(toElement, toStep);\n }\n fromElement.classList.remove(\n \"gleap-tour-active-element\",\n \"gleap-tour-no-interaction\"\n );\n fromElement.removeAttribute(\"aria-haspopup\");\n fromElement.removeAttribute(\"aria-expanded\");\n fromElement.removeAttribute(\"aria-controls\");\n const disableActiveInteraction =\n toStep.disableActiveInteraction ??\n getConfig(\"disableActiveInteraction\") ??\n false;\n if (disableActiveInteraction) {\n toElement.classList.add(\"gleap-tour-no-interaction\");\n }\n toElement.classList.add(\"gleap-tour-active-element\");\n toElement.setAttribute(\"aria-haspopup\", \"dialog\");\n toElement.setAttribute(\"aria-expanded\", \"true\");\n toElement.setAttribute(\"aria-controls\", \"gleap-tour-popover-content\");\n }\n function destroyHighlight() {\n var _a;\n (_a = document.getElementById(\"gleap-tour-dummy-element\")) == null\n ? void 0\n : _a.remove();\n document\n .querySelectorAll(\".gleap-tour-active-element\")\n .forEach((element) => {\n element.classList.remove(\n \"gleap-tour-active-element\",\n \"gleap-tour-no-interaction\"\n );\n element.removeAttribute(\"aria-haspopup\");\n element.removeAttribute(\"aria-expanded\");\n element.removeAttribute(\"aria-controls\");\n });\n }\n function requireRefresh() {\n const resizeTimeout = getState(\"__resizeTimeout\");\n if (resizeTimeout) {\n window.cancelAnimationFrame(resizeTimeout);\n }\n setState(\n \"__resizeTimeout\",\n window.requestAnimationFrame(refreshActiveHighlight)\n );\n }\n function trapFocus(e) {\n var _a;\n const isActivated = getState(\"isInitialized\");\n if (!isActivated) {\n return;\n }\n const isTabKey = e.key === \"Tab\" || e.keyCode === 9;\n if (!isTabKey) {\n return;\n }\n const activeElement = getState(\"__activeElement\");\n const popoverEl = (_a = getState(\"popover\")) == null ? void 0 : _a.wrapper;\n const focusableEls = getFocusableElements([\n ...(popoverEl ? [popoverEl] : []),\n ...(activeElement ? [activeElement] : []),\n ]);\n const firstFocusableEl = focusableEls[0];\n const lastFocusableEl = focusableEls[focusableEls.length - 1];\n e.preventDefault();\n if (e.shiftKey) {\n const previousFocusableEl =\n focusableEls[focusableEls.indexOf(document.activeElement) - 1] ||\n lastFocusableEl;\n previousFocusableEl == null ? void 0 : previousFocusableEl.focus();\n } else {\n const nextFocusableEl =\n focusableEls[focusableEls.indexOf(document.activeElement) + 1] ||\n firstFocusableEl;\n nextFocusableEl == null ? void 0 : nextFocusableEl.focus();\n }\n }\n function onKeyup(e) {\n var _a;\n const allowKeyboardControl =\n (_a = getConfig(\"allowKeyboardControl\")) != null ? _a : true;\n if (!allowKeyboardControl) {\n return;\n }\n if (e.key === \"Escape\") {\n emit(\"escapePress\");\n } else if (e.key === \"ArrowRight\") {\n emit(\"arrowRightPress\");\n } else if (e.key === \"ArrowLeft\") {\n emit(\"arrowLeftPress\");\n }\n }\n function onDriverClick(element, listener, shouldPreventDefault) {\n const listenerWrapper = (e, listener2) => {\n const target = e.target;\n if (!element.contains(target)) {\n return;\n }\n if (!shouldPreventDefault || shouldPreventDefault(target)) {\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n listener2 == null ? void 0 : listener2(e);\n };\n const useCapture = true;\n document.addEventListener(\"pointerdown\", listenerWrapper, useCapture);\n document.addEventListener(\"mousedown\", listenerWrapper, useCapture);\n document.addEventListener(\"pointerup\", listenerWrapper, useCapture);\n document.addEventListener(\"mouseup\", listenerWrapper, useCapture);\n document.addEventListener(\n \"click\",\n (e) => {\n listenerWrapper(e, listener);\n },\n useCapture\n );\n }\n function initEvents() {\n window.addEventListener(\"keyup\", onKeyup, false);\n window.addEventListener(\"keydown\", trapFocus, false);\n window.addEventListener(\"resize\", requireRefresh);\n window.addEventListener(\"scroll\", requireRefresh);\n }\n function destroyEvents() {\n window.removeEventListener(\"keyup\", onKeyup);\n window.removeEventListener(\"resize\", requireRefresh);\n window.removeEventListener(\"scroll\", requireRefresh);\n }\n function hidePopover() {\n const popover = getState(\"popover\");\n if (!popover) {\n return;\n }\n popover.wrapper.style.display = \"none\";\n }\n function renderPopover(element, step) {\n var _a, _b;\n let popover = getState(\"popover\");\n if (popover) {\n document.body.removeChild(popover.wrapper);\n }\n popover = createPopover();\n document.body.appendChild(popover.wrapper);\n const {\n title,\n description,\n showButtons,\n disableButtons,\n showProgress,\n nextBtnText = getConfig(\"nextBtnText\") || \"Next\",\n prevBtnText = getConfig(\"prevBtnText\") || \"Previous\",\n progressText = getConfig(\"progressText\") || \"{current} of {total}\",\n } = step.popover || {};\n popover.nextButton.innerHTML = nextBtnText;\n popover.previousButton.innerHTML = prevBtnText;\n popover.progress.innerHTML = progressText;\n if (title) {\n popover.title.innerHTML = title;\n popover.title.style.display = \"block\";\n } else {\n popover.title.style.display = \"none\";\n }\n if (description) {\n popover.description.innerHTML = description;\n popover.description.style.display = \"block\";\n } else {\n popover.description.style.display = \"none\";\n }\n const showButtonsConfig = showButtons || getConfig(\"showButtons\");\n const showProgressConfig =\n showProgress || getConfig(\"showProgress\") || false;\n const showFooter =\n (showButtonsConfig == null\n ? void 0\n : showButtonsConfig.includes(\"next\")) ||\n (showButtonsConfig == null\n ? void 0\n : showButtonsConfig.includes(\"previous\")) ||\n showProgressConfig;\n popover.closeButton.style.display = showButtonsConfig.includes(\"close\")\n ? \"block\"\n : \"none\";\n if (showFooter) {\n popover.footer.style.display = \"flex\";\n popover.progress.style.display = showProgressConfig ? \"block\" : \"none\";\n popover.nextButton.style.display = showButtonsConfig.includes(\"next\")\n ? \"block\"\n : \"none\";\n popover.previousButton.style.display = showButtonsConfig.includes(\n \"previous\"\n )\n ? \"block\"\n : \"none\";\n } else {\n popover.footer.style.display = \"none\";\n }\n const disabledButtonsConfig =\n disableButtons || getConfig(\"disableButtons\") || [];\n if (\n disabledButtonsConfig == null\n ? void 0\n : disabledButtonsConfig.includes(\"next\")\n ) {\n popover.nextButton.disabled = true;\n popover.nextButton.classList.add(\"gleap-tour-popover-btn-disabled\");\n }\n if (\n disabledButtonsConfig == null\n ? void 0\n : disabledButtonsConfig.includes(\"previous\")\n ) {\n popover.previousButton.disabled = true;\n popover.previousButton.classList.add(\"gleap-tour-popover-btn-disabled\");\n }\n if (\n disabledButtonsConfig == null\n ? void 0\n : disabledButtonsConfig.includes(\"close\")\n ) {\n popover.closeButton.disabled = true;\n popover.closeButton.classList.add(\"gleap-tour-popover-btn-disabled\");\n }\n const popoverWrapper = popover.wrapper;\n popoverWrapper.style.display = \"block\";\n popoverWrapper.style.left = \"\";\n popoverWrapper.style.top = \"\";\n popoverWrapper.style.bottom = \"\";\n popoverWrapper.style.right = \"\";\n popoverWrapper.id = \"gleap-tour-popover-content\";\n popoverWrapper.setAttribute(\"role\", \"dialog\");\n popoverWrapper.setAttribute(\"aria-labelledby\", \"gleap-tour-popover-title\");\n popoverWrapper.setAttribute(\n \"aria-describedby\",\n \"gleap-tour-popover-description\"\n );\n const popoverArrow = popover.arrow;\n popoverArrow.className = \"gleap-tour-popover-arrow\";\n const customPopoverClass =\n ((_a = step.popover) == null ? void 0 : _a.popoverClass) ||\n getConfig(\"popoverClass\") ||\n \"\";\n popoverWrapper.className =\n `gleap-tour-popover ${customPopoverClass}`.trim();\n onDriverClick(\n popover.wrapper,\n (e) => {\n var _a2, _b2, _c;\n const target = e.target;\n const onNextClick =\n ((_a2 = step.popover) == null ? void 0 : _a2.onNextClick) ||\n getConfig(\"onNextClick\");\n const onPrevClick =\n ((_b2 = step.popover) == null ? void 0 : _b2.onPrevClick) ||\n getConfig(\"onPrevClick\");\n const onCloseClick =\n ((_c = step.popover) == null ? void 0 : _c.onCloseClick) ||\n getConfig(\"onCloseClick\");\n if (target.classList.contains(\"gleap-tour-popover-next-btn\")) {\n if (onNextClick) {\n return onNextClick(element, step, {\n config: getConfig(),\n state: getState(),\n });\n } else {\n return emit(\"nextClick\");\n }\n }\n if (target.classList.contains(\"gleap-tour-popover-prev-btn\")) {\n if (onPrevClick) {\n return onPrevClick(element, step, {\n config: getConfig(),\n state: getState(),\n });\n } else {\n return emit(\"prevClick\");\n }\n }\n if (target.classList.contains(\"gleap-tour-popover-close-btn\")) {\n if (onCloseClick) {\n return onCloseClick(element, step, {\n config: getConfig(),\n state: getState(),\n });\n } else {\n return emit(\"closeClick\");\n }\n }\n return void 0;\n },\n (target) => {\n return (\n !(popover == null ? void 0 : popover.description.contains(target)) &&\n !(popover == null ? void 0 : popover.title.contains(target)) &&\n typeof target.className === \"string\" &&\n target.className.includes(\"gleap-tour-popover\")\n );\n }\n );\n setState(\"popover\", popover);\n const onPopoverRender =\n ((_b = step.popover) == null ? void 0 : _b.onPopoverRender) ||\n getConfig(\"onPopoverRender\");\n if (onPopoverRender) {\n onPopoverRender(popover, {\n config: getConfig(),\n state: getState(),\n });\n }\n repositionPopover(element, step);\n bringInView(popoverWrapper);\n const isToDummyElement = element.classList.contains(\n \"gleap-tour-dummy-element\"\n );\n const focusableElement = getFocusableElements([\n popoverWrapper,\n ...(isToDummyElement ? [] : [element]),\n ]);\n if (focusableElement.length > 0) {\n focusableElement[0].focus();\n }\n }\n function getPopoverDimensions() {\n const popover = getState(\"popover\");\n if (!(popover == null ? void 0 : popover.wrapper)) {\n return;\n }\n const boundingClientRect = popover.wrapper.getBoundingClientRect();\n const stagePadding = getConfig(\"stagePadding\") || 0;\n const popoverOffset = getConfig(\"popoverOffset\") || 0;\n return {\n width: boundingClientRect.width + stagePadding + popoverOffset,\n height: boundingClientRect.height + stagePadding + popoverOffset,\n realWidth: boundingClientRect.width,\n realHeight: boundingClientRect.height,\n };\n }\n function calculateTopForLeftRight(alignment, config) {\n const {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n } = config;\n if (alignment === \"start\") {\n return Math.max(\n Math.min(\n elementDimensions.top - popoverPadding,\n window.innerHeight -\n popoverDimensions.realHeight -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n if (alignment === \"end\") {\n return Math.max(\n Math.min(\n elementDimensions.top -\n (popoverDimensions == null\n ? void 0\n : popoverDimensions.realHeight) +\n elementDimensions.height +\n popoverPadding,\n window.innerHeight -\n (popoverDimensions == null\n ? void 0\n : popoverDimensions.realHeight) -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n if (alignment === \"center\") {\n return Math.max(\n Math.min(\n elementDimensions.top +\n elementDimensions.height / 2 -\n (popoverDimensions == null\n ? void 0\n : popoverDimensions.realHeight) /\n 2,\n window.innerHeight -\n (popoverDimensions == null\n ? void 0\n : popoverDimensions.realHeight) -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n return 0;\n }\n function calculateLeftForTopBottom(alignment, config) {\n const {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n } = config;\n if (alignment === \"start\") {\n return Math.max(\n Math.min(\n elementDimensions.left - popoverPadding,\n window.innerWidth -\n popoverDimensions.realWidth -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n if (alignment === \"end\") {\n return Math.max(\n Math.min(\n elementDimensions.left -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) +\n elementDimensions.width +\n popoverPadding,\n window.innerWidth -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n if (alignment === \"center\") {\n return Math.max(\n Math.min(\n elementDimensions.left +\n elementDimensions.width / 2 -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) /\n 2,\n window.innerWidth -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n return 0;\n }\n function repositionPopover(element, step) {\n const popover = getState(\"popover\");\n if (!popover) {\n return;\n }\n const { align = \"start\", side = \"left\" } =\n (step == null ? void 0 : step.popover) || {};\n const requiredAlignment = align;\n const requiredSide =\n element.id === \"gleap-tour-dummy-element\" ? \"over\" : side;\n const popoverPadding = getConfig(\"stagePadding\") || 0;\n const popoverDimensions = getPopoverDimensions();\n const popoverArrowDimensions = popover.arrow.getBoundingClientRect();\n const elementDimensions = element.getBoundingClientRect();\n const topValue = elementDimensions.top - popoverDimensions.height;\n let isTopOptimal = topValue >= 0;\n const bottomValue =\n window.innerHeight -\n (elementDimensions.bottom + popoverDimensions.height);\n let isBottomOptimal = bottomValue >= 0;\n const leftValue = elementDimensions.left - popoverDimensions.width;\n let isLeftOptimal = leftValue >= 0;\n const rightValue =\n window.innerWidth - (elementDimensions.right + popoverDimensions.width);\n let isRightOptimal = rightValue >= 0;\n const noneOptimal =\n !isTopOptimal && !isBottomOptimal && !isLeftOptimal && !isRightOptimal;\n let popoverRenderedSide = requiredSide;\n if (requiredSide === \"top\" && isTopOptimal) {\n isRightOptimal = isLeftOptimal = isBottomOptimal = false;\n } else if (requiredSide === \"bottom\" && isBottomOptimal) {\n isRightOptimal = isLeftOptimal = isTopOptimal = false;\n } else if (requiredSide === \"left\" && isLeftOptimal) {\n isRightOptimal = isTopOptimal = isBottomOptimal = false;\n } else if (requiredSide === \"right\" && isRightOptimal) {\n isLeftOptimal = isTopOptimal = isBottomOptimal = false;\n }\n if (requiredSide === \"over\") {\n const leftToSet = window.innerWidth / 2 - popoverDimensions.realWidth / 2;\n const topToSet =\n window.innerHeight / 2 - popoverDimensions.realHeight / 2;\n popover.wrapper.style.left = `${leftToSet}px`;\n popover.wrapper.style.right = `auto`;\n popover.wrapper.style.top = `${topToSet}px`;\n popover.wrapper.style.bottom = `auto`;\n } else if (noneOptimal) {\n const leftValue2 =\n window.innerWidth / 2 -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) / 2;\n const bottomValue2 = 10;\n popover.wrapper.style.left = `${leftValue2}px`;\n popover.wrapper.style.right = `auto`;\n popover.wrapper.style.bottom = `${bottomValue2}px`;\n popover.wrapper.style.top = `auto`;\n } else if (isLeftOptimal) {\n const leftToSet = Math.min(\n leftValue,\n window.innerWidth -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) -\n popoverArrowDimensions.width\n );\n const topToSet = calculateTopForLeftRight(requiredAlignment, {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n });\n popover.wrapper.style.left = `${leftToSet}px`;\n popover.wrapper.style.top = `${topToSet}px`;\n popover.wrapper.style.bottom = `auto`;\n popover.wrapper.style.right = \"auto\";\n popoverRenderedSide = \"left\";\n } else if (isRightOptimal) {\n const rightToSet = Math.min(\n rightValue,\n window.innerWidth -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) -\n popoverArrowDimensions.width\n );\n const topToSet = calculateTopForLeftRight(requiredAlignment, {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n });\n popover.wrapper.style.right = `${rightToSet}px`;\n popover.wrapper.style.top = `${topToSet}px`;\n popover.wrapper.style.bottom = `auto`;\n popover.wrapper.style.left = \"auto\";\n popoverRenderedSide = \"right\";\n } else if (isTopOptimal) {\n const topToSet = Math.min(\n topValue,\n window.innerHeight -\n popoverDimensions.realHeight -\n popoverArrowDimensions.width\n );\n let leftToSet = calculateLeftForTopBottom(requiredAlignment, {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n });\n popover.wrapper.style.top = `${topToSet}px`;\n popover.wrapper.style.left = `${leftToSet}px`;\n popover.wrapper.style.bottom = `auto`;\n popover.wrapper.style.right = \"auto\";\n popoverRenderedSide = \"top\";\n } else if (isBottomOptimal) {\n const bottomToSet = Math.min(\n bottomValue,\n window.innerHeight -\n (popoverDimensions == null ? void 0 : popoverDimensions.realHeight) -\n popoverArrowDimensions.width\n );\n let leftToSet = calculateLeftForTopBottom(requiredAlignment, {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n });\n popover.wrapper.style.left = `${leftToSet}px`;\n popover.wrapper.style.bottom = `${bottomToSet}px`;\n popover.wrapper.style.top = `auto`;\n popover.wrapper.style.right = \"auto\";\n popoverRenderedSide = \"bottom\";\n }\n if (!noneOptimal) {\n renderPopoverArrow(requiredAlignment, popoverRenderedSide, element);\n } else {\n popover.arrow.classList.add(\"gleap-tour-popover-arrow-none\");\n }\n }\n function renderPopoverArrow(alignment, side, element) {\n const popover = getState(\"popover\");\n if (!popover) {\n return;\n }\n const elementDimensions = element.getBoundingClientRect();\n const popoverDimensions = getPopoverDimensions();\n const popoverArrow = popover.arrow;\n const popoverWidth = popoverDimensions.width;\n const windowWidth = window.innerWidth;\n const elementWidth = elementDimensions.width;\n const elementLeft = elementDimensions.left;\n const popoverHeight = popoverDimensions.height;\n const windowHeight = window.innerHeight;\n const elementTop = elementDimensions.top;\n const elementHeight = elementDimensions.height;\n popoverArrow.className = \"gleap-tour-popover-arrow\";\n let arrowSide = side;\n let arrowAlignment = alignment;\n if (side === \"top\") {\n if (elementLeft + elementWidth <= 0) {\n arrowSide = \"right\";\n arrowAlignment = \"end\";\n } else if (elementLeft + elementWidth - popoverWidth <= 0) {\n arrowSide = \"top\";\n arrowAlignment = \"start\";\n }\n if (elementLeft >= windowWidth) {\n arrowSide = \"left\";\n arrowAlignment = \"end\";\n } else if (elementLeft + popoverWidth >= windowWidth) {\n arrowSide = \"top\";\n arrowAlignment = \"end\";\n }\n } else if (side === \"bottom\") {\n if (elementLeft + elementWidth <= 0) {\n arrowSide = \"right\";\n arrowAlignment = \"start\";\n } else if (elementLeft + elementWidth - popoverWidth <= 0) {\n arrowSide = \"bottom\";\n arrowAlignment = \"start\";\n }\n if (elementLeft >= windowWidth) {\n arrowSide = \"left\";\n arrowAlignment = \"start\";\n } else if (elementLeft + popoverWidth >= windowWidth) {\n arrowSide = \"bottom\";\n arrowAlignment = \"end\";\n }\n } else if (side === \"left\") {\n if (elementTop + elementHeight <= 0) {\n arrowSide = \"bottom\";\n arrowAlignment = \"end\";\n } else if (elementTop + elementHeight - popoverHeight <= 0) {\n arrowSide = \"left\";\n arrowAlignment = \"start\";\n }\n if (elementTop >= windowHeight) {\n arrowSide = \"top\";\n arrowAlignment = \"end\";\n } else if (elementTop + popoverHeight >= windowHeight) {\n arrowSide = \"left\";\n arrowAlignment = \"end\";\n }\n } else if (side === \"right\") {\n if (elementTop + elementHeight <= 0) {\n arrowSide = \"bottom\";\n arrowAlignment = \"start\";\n } else if (elementTop + elementHeight - popoverHeight <= 0) {\n arrowSide = \"right\";\n arrowAlignment = \"start\";\n }\n if (elementTop >= windowHeight) {\n arrowSide = \"top\";\n arrowAlignment = \"start\";\n } else if (elementTop + popoverHeight >= windowHeight) {\n arrowSide = \"right\";\n arrowAlignment = \"end\";\n }\n } else;\n if (!arrowSide) {\n popoverArrow.classList.add(\"gleap-tour-popover-arrow-none\");\n } else {\n popoverArrow.classList.add(`gleap-tour-popover-arrow-side-${arrowSide}`);\n popoverArrow.classList.add(\n `gleap-tour-popover-arrow-align-${arrowAlignment}`\n );\n }\n }\n function createPopover() {\n const wrapper = document.createElement(\"div\");\n wrapper.classList.add(\"gleap-tour-popover\");\n const arrow = document.createElement(\"div\");\n arrow.classList.add(\"gleap-tour-popover-arrow\");\n const title = document.createElement(\"div\");\n title.id = \"gleap-tour-popover-title\";\n title.classList.add(\"gleap-tour-popover-title\");\n title.style.display = \"none\";\n title.innerText = \"Popover Title\";\n const description = document.createElement(\"div\");\n description.id = \"gleap-tour-popover-description\";\n description.classList.add(\"gleap-tour-popover-description\");\n description.style.display = \"none\";\n description.innerText = \"Popover description is here\";\n const closeButton = document.createElement(\"button\");\n closeButton.type = \"button\";\n closeButton.classList.add(\"gleap-tour-popover-close-btn\");\n closeButton.setAttribute(\"aria-label\", \"Close\");\n closeButton.innerHTML = \"×\";\n const footer = document.createElement(\"div\");\n footer.classList.add(\"gleap-tour-popover-footer\");\n const progress = document.createElement(\"span\");\n progress.classList.add(\"gleap-tour-popover-progress-text\");\n progress.innerText = \"\";\n const footerButtons = document.createElement(\"span\");\n footerButtons.classList.add(\"gleap-tour-popover-navigation-btns\");\n const previousButton = document.createElement(\"button\");\n previousButton.type = \"button\";\n previousButton.classList.add(\"gleap-tour-popover-prev-btn\");\n previousButton.innerHTML = \"← Previous\";\n const nextButton = document.createElement(\"button\");\n nextButton.type = \"button\";\n nextButton.classList.add(\"gleap-tour-popover-next-btn\");\n nextButton.innerHTML = \"Next →\";\n footerButtons.appendChild(previousButton);\n footerButtons.appendChild(nextButton);\n footer.appendChild(progress);\n footer.appendChild(footerButtons);\n wrapper.appendChild(closeButton);\n wrapper.appendChild(arrow);\n wrapper.appendChild(title);\n wrapper.appendChild(description);\n wrapper.appendChild(footer);\n return {\n wrapper,\n arrow,\n title,\n description,\n footer,\n previousButton,\n nextButton,\n closeButton,\n footerButtons,\n progress,\n };\n }\n function destroyPopover() {\n var _a;\n const popover = getState(\"popover\");\n if (!popover) {\n return;\n }\n (_a = popover.wrapper.parentElement) == null\n ? void 0\n : _a.removeChild(popover.wrapper);\n }\n function driver(options = {}) {\n configure(options);\n function handleClose() {\n if (!getConfig(\"allowClose\")) {\n return;\n }\n destroy();\n }\n function moveNext() {\n const activeIndex = getState(\"activeIndex\");\n const steps = getConfig(\"steps\") || [];\n if (typeof activeIndex === \"undefined\") {\n return;\n }\n const nextStepIndex = activeIndex + 1;\n if (steps[nextStepIndex]) {\n drive(nextStepIndex);\n } else {\n destroy();\n }\n }\n function movePrevious() {\n const activeIndex = getState(\"activeIndex\");\n const steps = getConfig(\"steps\") || [];\n if (typeof activeIndex === \"undefined\") {\n return;\n }\n const previousStepIndex = activeIndex - 1;\n if (steps[previousStepIndex]) {\n drive(previousStepIndex);\n } else {\n destroy();\n }\n }\n function moveTo(index) {\n const steps = getConfig(\"steps\") || [];\n if (steps[index]) {\n drive(index);\n } else {\n destroy();\n }\n }\n function handleArrowLeft() {\n var _a;\n const isTransitioning = getState(\"__transitionCallback\");\n if (isTransitioning) {\n return;\n }\n const activeIndex = getState(\"activeIndex\");\n const activeStep = getState(\"__activeStep\");\n const activeElement = getState(\"__activeElement\");\n\n if (activeStep.mode === \"CLICK\") {\n return;\n }\n if (\n typeof activeIndex === \"undefined\" ||\n typeof activeStep === \"undefined\"\n ) {\n return;\n }\n const currentStepIndex = getState(\"activeIndex\");\n if (typeof currentStepIndex === \"undefined\") {\n return;\n }\n const onPrevClick =\n ((_a = activeStep.popover) == null ? void 0 : _a.onPrevClick) ||\n getConfig(\"onPrevClick\");\n if (onPrevClick) {\n return onPrevClick(activeElement, activeStep, {\n config: getConfig(),\n state: getState(),\n });\n }\n movePrevious();\n }\n function handleArrowRight() {\n var _a;\n const isTransitioning = getState(\"__transitionCallback\");\n if (isTransitioning) {\n return;\n }\n const activeIndex = getState(\"activeIndex\");\n const activeStep = getState(\"__activeStep\");\n const activeElement = getState(\"__activeElement\");\n\n if (activeStep.mode === \"CLICK\") {\n return;\n }\n if (\n typeof activeIndex === \"undefined\" ||\n typeof activeStep === \"undefined\"\n ) {\n return;\n }\n const onNextClick =\n ((_a = activeStep.popover) == null ? void 0 : _a.onNextClick) ||\n getConfig(\"onNextClick\");\n if (onNextClick) {\n return onNextClick(activeElement, activeStep, {\n config: getConfig(),\n state: getState(),\n });\n }\n moveNext();\n }\n function init() {\n if (getState(\"isInitialized\")) {\n return;\n }\n setState(\"isInitialized\", true);\n document.body.classList.add(\n \"gleap-tour-active\",\n getConfig(\"animate\") ? \"gleap-tour-fade\" : \"gleap-tour-simple\"\n );\n initEvents();\n listen(\"overlayClick\", handleClose);\n listen(\"escapePress\", handleClose);\n listen(\"arrowLeftPress\", handleArrowLeft);\n listen(\"arrowRightPress\", handleArrowRight);\n }\n function drive(stepIndex = 0) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n const steps = getConfig(\"steps\");\n if (!steps) {\n console.error(\"No steps to drive through\");\n destroy();\n return;\n }\n if (!steps[stepIndex]) {\n destroy();\n return;\n }\n setState(\"__activeOnDestroyed\", document.activeElement);\n setState(\"activeIndex\", stepIndex);\n const currentStep = steps[stepIndex];\n const hasNextStep = steps[stepIndex + 1];\n const hasPreviousStep = steps[stepIndex - 1];\n const doneBtnText =\n ((_a = currentStep.popover) == null ? void 0 : _a.doneBtnText) ||\n getConfig(\"doneBtnText\") ||\n \"Done\";\n const allowsClosing = getConfig(\"allowClose\");\n const showProgress =\n typeof ((_b = currentStep.popover) == null\n ? void 0\n : _b.showProgress) !== \"undefined\"\n ? (_c = currentStep.popover) == null\n ? void 0\n : _c.showProgress\n : getConfig(\"showProgress\");\n const progressText =\n ((_d = currentStep.popover) == null ? void 0 : _d.progressText) ||\n getConfig(\"progressText\") ||\n \"{{current}} of {{total}}\";\n const progressTextReplaced = progressText\n .replace(\"{{current}}\", `${stepIndex + 1}`)\n .replace(\"{{total}}\", `${steps.length}`);\n const configuredButtons =\n ((_e = currentStep.popover) == null ? void 0 : _e.showButtons) ||\n getConfig(\"showButtons\");\n const calculatedButtons = [\n \"next\",\n \"previous\",\n ...(allowsClosing ? [\"close\"] : []),\n ].filter((b) => {\n return (\n !(configuredButtons == null ? void 0 : configuredButtons.length) ||\n configuredButtons.includes(b)\n );\n });\n const onNextClick =\n ((_f = currentStep.popover) == null ? void 0 : _f.onNextClick) ||\n getConfig(\"onNextClick\");\n const onPrevClick =\n ((_g = currentStep.popover) == null ? void 0 : _g.onPrevClick) ||\n getConfig(\"onPrevClick\");\n const onCloseClick =\n ((_h = currentStep.popover) == null ? void 0 : _h.onCloseClick) ||\n getConfig(\"onCloseClick\");\n highlight({\n ...currentStep,\n popover: {\n showButtons: calculatedButtons,\n nextBtnText: !hasNextStep ? doneBtnText : void 0,\n disableButtons: [...(!hasPreviousStep ? [\"previous\"] : [])],\n showProgress,\n progressText: progressTextReplaced,\n onNextClick: onNextClick\n ? onNextClick\n : () => {\n if (!hasNextStep) {\n destroy();\n } else {\n drive(stepIndex + 1);\n }\n },\n onPrevClick: onPrevClick\n ? onPrevClick\n : () => {\n drive(stepIndex - 1);\n },\n onCloseClick: onCloseClick\n ? onCloseClick\n : () => {\n destroy();\n },\n ...((currentStep == null ? void 0 : currentStep.popover) || {}),\n },\n });\n }\n function destroy(withOnDestroyStartedHook = true) {\n const activeElement = getState(\"__activeElement\");\n const activeStep = getState(\"__activeStep\");\n const activeOnDestroyed = getState(\"__activeOnDestroyed\");\n const onDestroyStarted = getConfig(\"onDestroyStarted\");\n if (withOnDestroyStartedHook && onDestroyStarted) {\n const isActiveDummyElement =\n !activeElement ||\n (activeElement == null ? void 0 : activeElement.id) ===\n \"gleap-tour-dummy-element\";\n onDestroyStarted(\n isActiveDummyElement ? void 0 : activeElement,\n activeStep,\n {\n config: getConfig(),\n state: getState(),\n }\n );\n return;\n }\n const onDeselected =\n (activeStep == null ? void 0 : activeStep.onDeselected) ||\n getConfig(\"onDeselected\");\n const onDestroyed = getConfig(\"onDestroyed\");\n document.body.classList.remove(\n \"gleap-tour-active\",\n \"gleap-tour-fade\",\n \"gleap-tour-simple\"\n );\n destroyEvents();\n destroyPopover();\n destroyHighlight();\n destroyOverlay();\n destroyEmitter();\n resetState();\n if (activeElement && activeStep) {\n const isActiveDummyElement =\n activeElement.id === \"gleap-tour-dummy-element\";\n if (onDeselected) {\n onDeselected(\n isActiveDummyElement ? void 0 : activeElement,\n activeStep,\n {\n config: getConfig(),\n state: getState(),\n }\n );\n }\n if (onDestroyed) {\n onDestroyed(\n isActiveDummyElement ? void 0 : activeElement,\n activeStep,\n {\n config: getConfig(),\n state: getState(),\n }\n );\n }\n }\n if (activeOnDestroyed) {\n activeOnDestroyed.focus();\n }\n }\n return {\n isActive: () => getState(\"isInitialized\") || false,\n refresh: requireRefresh,\n drive: (stepIndex = 0) => {\n init();\n drive(stepIndex);\n },\n setConfig: configure,\n setSteps: (steps) => {\n resetState();\n configure({\n ...getConfig(),\n steps,\n });\n },\n getConfig,\n getState,\n getActiveIndex: () => getState(\"activeIndex\"),\n isFirstStep: () => getState(\"activeIndex\") === 0,\n isLastStep: () => {\n const steps = getConfig(\"steps\") || [];\n const activeIndex = getState(\"activeIndex\");\n return activeIndex !== void 0 && activeIndex === steps.length - 1;\n },\n getActiveStep: () => getState(\"activeStep\"),\n getActiveElement: () => getState(\"activeElement\"),\n getPreviousElement: () => getState(\"previousElement\"),\n getPreviousStep: () => getState(\"previousStep\"),\n moveNext,\n movePrevious,\n moveTo,\n hasNextStep: () => {\n const steps = getConfig(\"steps\") || [];\n const activeIndex = getState(\"activeIndex\");\n return activeIndex !== void 0 && steps[activeIndex + 1];\n },\n hasPreviousStep: () => {\n const steps = getConfig(\"steps\") || [];\n const activeIndex = getState(\"activeIndex\");\n return activeIndex !== void 0 && steps[activeIndex - 1];\n },\n highlight: (step) => {\n init();\n highlight({\n ...step,\n popover: step.popover\n ? {\n showButtons: [],\n showProgress: false,\n progressText: \"\",\n ...step.popover,\n }\n : void 0,\n });\n },\n destroy: () => {\n destroy(false);\n },\n };\n }\n return driver;\n})({});\n\nexport default GleapTours;\n","import { GleapConfigManager, GleapTranslationManager } from \"./Gleap\";\nimport { calculateContrast, loadIcon } from \"./UI\";\n\nconst localStorageKey = \"gleap-tour-data\";\nconst pointerContainerId = \"copilot-pointer-container\";\nconst styleId = \"copilot-tour-styles\";\nconst copilotJoinedContainerId = \"copilot-joined-container\";\n\nfunction estimateReadTime(text) {\n if (typeof window === \"undefined\") return;\n\n const wordsPerSecond = 3.6; // Average reading speed\n const wordCount = text.split(/\\s+/).filter((word) => word.length > 0).length;\n const readTimeInSeconds = Math.ceil(wordCount / wordsPerSecond);\n return readTimeInSeconds + 1;\n}\n\nfunction htmlToPlainText(html) {\n if (typeof window === \"undefined\") return;\n\n const tempDiv = document.createElement(\"div\");\n tempDiv.innerHTML = html;\n return tempDiv.textContent || \"\";\n}\n\nfunction scrollToElement(element) {\n if (typeof window === \"undefined\") return;\n\n if (element) {\n element.scrollIntoView({\n behavior: \"smooth\",\n block: \"center\",\n inline: \"center\",\n });\n }\n}\n\nfunction performClickAnimation(posX, posY) {\n if (typeof window === \"undefined\") return;\n\n const wave = document.createElement(\"div\");\n wave.className = \"click-wave\";\n wave.style.left = `${posX - 17}px`;\n wave.style.top = `${posY - 17}px`;\n document.body.appendChild(wave);\n setTimeout(() => {\n wave.remove();\n }, 800);\n}\n\nfunction waitForElement(selector, timeout = 5000) {\n if (typeof window === \"undefined\") return;\n\n const pollInterval = 100;\n const maxAttempts = timeout / pollInterval;\n let attempts = 0;\n return new Promise((resolve, reject) => {\n const interval = setInterval(() => {\n const element = document.querySelector(selector);\n if (element) {\n clearInterval(interval);\n resolve(element);\n } else if (attempts >= maxAttempts) {\n clearInterval(interval);\n reject(new Error(`Element not found for selector: ${selector}`));\n }\n attempts++;\n }, pollInterval);\n });\n}\n\nfunction smoothScrollToY(yPosition) {\n if (typeof window === \"undefined\") return;\n\n const viewportHeight = window.innerHeight;\n const targetScrollPosition = yPosition - viewportHeight / 2;\n window.scrollTo({\n top: targetScrollPosition,\n behavior: \"smooth\",\n });\n}\n\nasync function canPlayAudio() {\n if (typeof window === \"undefined\") return;\n\n const audio = new Audio(\n \"data:audio/wav;base64,UklGRigAAABXQVZFZm10IBAAAAABAAEARKwAABCxAgAEABAAZGF0YQAAAAA=\"\n );\n try {\n await audio.play();\n return true;\n } catch (err) {\n return false;\n }\n}\n\n// Helper: Check if an element is fully visible in the viewport.\nfunction isElementFullyVisible(el) {\n if (typeof window === \"undefined\") return;\n\n const rect = el.getBoundingClientRect();\n return (\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <= window.innerHeight &&\n rect.right <= window.innerWidth\n );\n}\n\n// Helper: Get scrollable ancestors of an element.\nfunction getScrollableAncestors(el) {\n if (typeof window === \"undefined\") return;\n\n let ancestors = [];\n let current = el.parentElement;\n while (current) {\n const style = window.getComputedStyle(current);\n if (\n (style.overflowY === \"auto\" || style.overflowY === \"scroll\") &&\n current.scrollHeight > current.clientHeight\n ) {\n ancestors.push(current);\n }\n current = current.parentElement;\n }\n return ancestors;\n}\n\nexport default class GleapCopilotTours {\n productTourData = undefined;\n productTourId = undefined;\n currentActiveIndex = undefined;\n lastArrowPositionX = undefined;\n lastArrowPositionY = undefined;\n onCompleteCallback = undefined;\n audioMuted = false;\n currentAudio = undefined;\n\n // Cached pointer container.\n _pointerContainer = null;\n // For scroll handling.\n _scrollListeners = [];\n _currentAnchor = null;\n _currentStep = null;\n _scrollDebounceTimer = null;\n\n // GleapReplayRecorder singleton.\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapCopilotTours();\n }\n return this.instance;\n }\n\n constructor() {\n const self = this;\n\n if (typeof window !== \"undefined\") {\n this._scrollListeners = [];\n this._currentAnchor = null;\n this._currentStep = null;\n this._scrollDebounceTimer = null;\n\n window.addEventListener(\"resize\", () => {\n if (\n self.productTourId &&\n self.currentActiveIndex >= 0 &&\n self.productTourData &&\n self.productTourData.steps\n ) {\n const steps = self.productTourData.steps;\n const currentStep = steps[self.currentActiveIndex];\n if (\n currentStep &&\n currentStep.selector &&\n currentStep.selector !== \"\"\n ) {\n self.updatePointerPosition(\n document.querySelector(currentStep.selector),\n currentStep\n );\n }\n }\n });\n }\n }\n\n disable() {\n this.disabled = true;\n \n this.cleanup();\n }\n\n startWithConfig(tourId, config, onCompleteCallback = undefined) {\n if (typeof window === \"undefined\") return;\n if (this.productTourId) return;\n if (this.disabled) return;\n\n this.productTourId = tourId;\n this.productTourData = config;\n this.currentActiveIndex = 0;\n this.onCompleteCallback = onCompleteCallback;\n this.start();\n }\n\n storeUncompletedTour() {\n if (typeof window === \"undefined\") return;\n if (this.productTourId && this.productTourData) {\n try {\n let data = JSON.parse(\n JSON.stringify({\n tourData: this.productTourData,\n tourId: this.productTourId,\n })\n );\n data.tourData.steps = data.tourData.steps.slice(\n this.currentActiveIndex || 0,\n data.tourData.steps.length\n );\n localStorage.setItem(localStorageKey, JSON.stringify(data));\n } catch (e) {\n // Optionally log error in development mode.\n }\n } else {\n localStorage.removeItem(localStorageKey);\n }\n }\n\n // Attach scroll listeners with a debounce to update the pointer position after scrolling stops.\n attachScrollListeners(anchor, currentStep) {\n if (typeof window === \"undefined\") return;\n if (!anchor) return;\n const scrollableAncestors = getScrollableAncestors(anchor);\n // Also include window.\n scrollableAncestors.push(window);\n scrollableAncestors.forEach((el) => {\n const handler = () => {\n clearTimeout(this._scrollDebounceTimer);\n this._scrollDebounceTimer = setTimeout(() => {\n this.updatePointerPosition(anchor, currentStep);\n }, 150);\n };\n el.addEventListener(\"scroll\", handler, { passive: true });\n this._scrollListeners.push({ el, handler });\n });\n }\n\n // Remove scroll listeners and clear debounce timer.\n removeScrollListeners() {\n if (typeof window === \"undefined\") return;\n if (this._scrollListeners && this._scrollListeners.length > 0) {\n this._scrollListeners.forEach(({ el, handler }) => {\n el.removeEventListener(\"scroll\", handler);\n });\n this._scrollListeners = [];\n }\n if (this._scrollDebounceTimer) {\n clearTimeout(this._scrollDebounceTimer);\n this._scrollDebounceTimer = null;\n }\n }\n\n // Updated pointer position:\n // 1. Scroll the element into view.\n // 2. After the element is fully visible (or after a maximum delay), update the pointer position to point towards the element.\n updatePointerPosition(anchor, currentStep) {\n if (typeof window === \"undefined\") return;\n try {\n const container =\n this._pointerContainer || document.getElementById(pointerContainerId);\n if (!container) return;\n\n if (!anchor) {\n container.style.position = \"fixed\";\n container.style.left = \"50%\";\n container.style.top = \"50%\";\n container.style.transform = \"translate(-50%, -50%)\";\n smoothScrollToY(window.innerHeight / 2);\n this.removeScrollListeners();\n this._currentAnchor = null;\n this._currentStep = null;\n return;\n }\n\n // Step 1: Scroll the element into view.\n scrollToElement(anchor);\n\n // Step 2: Poll until the element is fully visible (or after maximum polls).\n const pollInterval = 100;\n const maxPolls = 20;\n let pollCount = 0;\n const updateFinalPosition = () => {\n if (isElementFullyVisible(anchor) || pollCount >= maxPolls) {\n // Compute final target coordinates.\n const anchorRect = anchor.getBoundingClientRect();\n const targetX = anchorRect.left + anchorRect.width / 2;\n const targetY = anchorRect.top + anchorRect.height / 2 + 10; // 10px downward offset.\n container.style.position = \"fixed\";\n container.style.left = `${targetX}px`;\n container.style.top = `${targetY}px`;\n container.style.transform = \"translate(-50%, -50%)\";\n\n // Adjust container if too far right.\n let containerWidthSpace = 350;\n if (containerWidthSpace > window.innerWidth - 40) {\n containerWidthSpace = window.innerWidth - 40;\n }\n if (targetX + containerWidthSpace > window.innerWidth - 20) {\n container.classList.add(\"copilot-pointer-container-right\");\n } else {\n container.classList.remove(\"copilot-pointer-container-right\");\n }\n\n // Reattach scroll listeners if the target or step has changed.\n if (\n this._currentAnchor !== anchor ||\n this._currentStep !== currentStep\n ) {\n this.removeScrollListeners();\n this._currentAnchor = anchor;\n this._currentStep = currentStep;\n this.attachScrollListeners(anchor, currentStep);\n }\n } else {\n pollCount++;\n setTimeout(updateFinalPosition, pollInterval);\n }\n };\n updateFinalPosition();\n } catch (e) {\n // Optionally log errors.\n }\n }\n\n cleanup() {\n if (typeof window === \"undefined\") return;\n document.body.classList.add(\"gl-copilot-fade-out\");\n if (this.currentAudio) {\n this.currentAudio.pause();\n }\n setTimeout(() => {\n if (this._pointerContainer) {\n this._pointerContainer.remove();\n this._pointerContainer = null;\n } else {\n const container = document.getElementById(pointerContainerId);\n if (container) container.remove();\n }\n const copilotInfoContainer = document.getElementById(\n copilotJoinedContainerId\n );\n if (copilotInfoContainer) copilotInfoContainer.remove();\n const styleNode = document.getElementById(styleId);\n if (styleNode) styleNode.remove();\n document.body.classList.remove(\"gl-copilot-fade-out\");\n }, 800);\n\n this.productTourId = undefined;\n this.productTourData = undefined;\n \n this.removeScrollListeners();\n }\n\n toggleAudio(muted = false) {\n this.audioMuted = muted;\n if (this.currentAudio) {\n this.currentAudio.muted = this.audioMuted;\n }\n document.querySelector(`.${copilotJoinedContainerId}-mute`).innerHTML =\n loadIcon(this.audioMuted ? \"unmute\" : \"mute\");\n }\n\n setupCopilotTour() {\n if (typeof window === \"undefined\") return;\n\n const primaryColor =\n GleapConfigManager.getInstance().flowConfig?.color ?? \"#485BFF\";\n const contrastColor = calculateContrast(primaryColor);\n\n let styleNode = document.getElementById(styleId);\n if (!styleNode) {\n styleNode = document.createElement(\"style\");\n styleNode.id = styleId;\n styleNode.type = \"text/css\";\n styleNode.textContent = `\n #${pointerContainerId} {\n position: absolute;\n top: 0;\n left: 0;\n display: flex;\n align-items: flex-start;\n pointer-events: none;\n z-index: 2147483610;\n transition: all 0.5s ease;\n }\n .${pointerContainerId}-clickmode {\n cursor: pointer;\n pointer-events: all !important;\n }\n .${pointerContainerId}-clickmode #copilot-info-bubble-content {\n display: flex !important;\n }\n .${pointerContainerId}-clickmode svg {\n display: none !important;\n }\n #${pointerContainerId} svg {\n width: 20px;\n height: auto;\n fill: none;\n }\n #copilot-info-bubble {\n position: relative;\n }\n #copilot-info-bubble-content-container {\n position: absolute;\n top: 0px;\n left: 0px;\n min-width: min(300px, 80vw);\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n }\n .${pointerContainerId}-right #copilot-info-bubble-content-container {\n left: auto !important;\n right: 0px !important;\n align-items: flex-end;\n }\n .${pointerContainerId}-right .copilot-info-bubble-content {\n margin-right: 5px;\n }\n .${pointerContainerId}-right svg {\n transform: scaleX(-1);\n }\n #copilot-info-bubble-content svg {\n width: 16px;\n height: 16px;\n display: inline-block !important;\n margin-left: 5px;\n }\n #copilot-info-bubble-content {\n margin-top: 18px;\n margin-left: 5px;\n padding: 10px 15px;\n border-radius: 20px;\n background-color: black;\n color: white;\n font-family: Arial, sans-serif;\n font-size: 14px;\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);\n max-width: 100%;\n white-space: normal;\n overflow-wrap: break-word;\n word-break: normal;\n hyphens: none;\n }\n .${pointerContainerId}-right #copilot-info-bubble-content {\n margin-top: 30px;\n margin-left: 0px;\n margin-right: 5px;\n }\n .click-wave {\n position: absolute;\n width: 34px;\n height: 34px;\n border-radius: 50%;\n background-color: rgba(0, 0, 0, 0.5);\n pointer-events: none;\n z-index: 2147483611;\n animation: click-wave-animation 0.8s ease forwards;\n }\n @keyframes click-wave-animation {\n 0% {\n transform: scale(0.2);\n opacity: 1;\n }\n 100% {\n transform: scale(2);\n opacity: 0;\n }\n }\n @keyframes slideInFromTop {\n 0% {\n transform: translateY(-100%);\n opacity: 0;\n }\n 100% {\n transform: translateY(0);\n opacity: 1;\n }\n }\n .${copilotJoinedContainerId} {\n position: fixed;\n top: 20px;\n right: 20px;\n z-index: 2147483610;\n background: #fff;\n padding: 6px;\n border-radius: 10px;\n box-shadow: 0 0 20px 0 #C294F2;\n display: flex;\n align-items: center;\n gap: 8px;\n border: 1px solid rgba(192, 146, 242, 0.5);\n animation: slideInFromTop 0.5s ease-out forwards;\n }\n .${copilotJoinedContainerId} span {\n font-size: 13px;\n color: #000;\n font-family: sans-serif;\n }\n .${copilotJoinedContainerId}-avatar {\n width: 24px;\n height: 24px;\n flex-shrink: 0;\n border-radius: 6px;\n }\n .${copilotJoinedContainerId}-mute {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n .${copilotJoinedContainerId}-mute svg {\n width: 20px;\n height: auto;\n cursor: pointer;\n animation: pulsate 2s infinite;\n }\n .${copilotJoinedContainerId}-mute svg:hover {\n opacity: 0.8;\n }\n .${copilotJoinedContainerId}-dismiss {\n display: flex;\n align-items: center;\n justify-content: center;\n padding-right: 3px;\n }\n .${copilotJoinedContainerId}-dismiss svg {\n width: 15px;\n height: auto;\n cursor: pointer;\n }\n .${copilotJoinedContainerId}-dismiss svg:hover {\n opacity: 0.8;\n }\n @keyframes pulsate {\n 0% {\n transform: scale(1);\n opacity: 1;\n }\n 50% {\n transform: scale(1.1);\n opacity: 0.8;\n }\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n }\n @keyframes glCoFadeIn {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n @keyframes glCoFadeOut {\n 0% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n }\n\n .gleap-audio-unmute-modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n background-color: rgba(0, 0, 0, 0.5);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 2147483620;\n }\n\n .gleap-audio-unmute-modal {\n background-color: #fff;\n padding: 20px;\n border-radius: 8px;\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);\n text-align: center;\n max-width: 90%;\n width: 400px;\n }\n\n .gleap-audio-unmute-modal p {\n margin-bottom: 20px;\n font-size: 16px;\n line-height: 22px;\n font-weight: normal;\n }\n\n .gleap-audio-unmute-button {\n background: ${primaryColor};\n color: ${contrastColor};\n outline: none;\n border: none;\n padding: 10px 14px;\n border-radius: 12px;\n font-size: 14px;\n font-weight: bold;\n cursor: pointer;\n }\n\n .gleap-audio-unmute-button:hover {\n opacity: 0.8;\n }\n\n .gleap-tour-continue-button {\n color: ${primaryColor};\n text-decoration: none;\n cursor: pointer;\n font-size: 14px;\n font-weight: bold;\n border: none;\n background: none;\n padding: 0;\n margin: 0;\n margin-left: 20px;\n }\n\n .gleap-tour-continue-button:hover {\n opacity: 0.8;\n }\n\n body.gl-copilot-fade-out::before,\n body.gl-copilot-fade-out::after,\n body.gl-copilot-fade-out #${copilotJoinedContainerId} {\n animation: glCoFadeOut 0.8s ease-out forwards;\n }\n ${\n this.productTourData?.playVoice ?? true\n ? \"\"\n : `\n .${copilotJoinedContainerId}-mute {\n display: none;\n }\n `\n }\n ${\n this.productTourData.gradient\n ? `body::before {\n content: \"\";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n box-sizing: border-box;\n border: 18px solid transparent;\n filter: blur(25px);\n border-image-slice: 1;\n border-image-source: linear-gradient(45deg, #ED5587, #FBE6A9, #a6e3f8, #C294F2);\n animation: glCoFadeIn 1.5s ease-out forwards;\n }\n \n body::after {\n content: \"\";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n opacity: 0.5;\n box-sizing: border-box;\n border: 3px solid transparent;\n border-image-slice: 1;\n border-image-source: linear-gradient(45deg, #ED5587, #FBE6A9, #a6e3f8, #C294F2);\n animation: glCoFadeIn 1.5s ease-out forwards;\n }`\n : `body::after {\n content: \"\";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n opacity: 0;\n }`\n }\n `;\n document.head.appendChild(styleNode);\n }\n\n const container = document.createElement(\"div\");\n container.id = pointerContainerId;\n container.style.opacity = 0;\n // Cache the pointer container.\n this._pointerContainer = container;\n\n const svgMouse = document.createElementNS(\n \"http://www.w3.org/2000/svg\",\n \"svg\"\n );\n svgMouse.setAttribute(\"viewBox\", \"0 0 380 476\");\n svgMouse.innerHTML =\n '';\n\n const infoBubble = document.createElement(\"div\");\n infoBubble.id = \"copilot-info-bubble\";\n infoBubble.innerHTML = `
`;\n\n const copilotInfoContainer = document.createElement(\"div\");\n copilotInfoContainer.id = copilotJoinedContainerId;\n copilotInfoContainer.classList.add(copilotJoinedContainerId);\n copilotInfoContainer.innerHTML = `\n \n ${this.productTourData?.kaiSlug}\n
\n ${loadIcon(this.audioMuted ? \"unmute\" : \"mute\")}\n
\n ${\n this.productTourData?.allowClose\n ? `
\n ${loadIcon(\"dismiss\")}\n
`\n : \"\"\n }\n `;\n document.body.appendChild(copilotInfoContainer);\n\n const self = this;\n\n document\n .querySelector(`.${copilotJoinedContainerId}-mute`)\n .addEventListener(\"click\", () => {\n this.toggleAudio(!this.audioMuted);\n });\n\n if (this.productTourData?.allowClose) {\n document\n .querySelector(`.${copilotJoinedContainerId}-dismiss`)\n .addEventListener(\"click\", () => {\n this.completeTour(false);\n });\n }\n\n container.appendChild(svgMouse);\n container.appendChild(infoBubble);\n document.body.appendChild(container);\n }\n\n start() {\n if (typeof window === \"undefined\") return;\n if (this.disabled) return;\n\n const config = this.productTourData;\n if (!config) return;\n canPlayAudio().then((supported) => {\n this.audioMuted = !supported;\n this.setupCopilotTour();\n\n if (this.audioMuted && config?.showUnmuteModal) {\n this.showAudioUnmuteModal();\n } else {\n setTimeout(() => {\n this.renderNextStep();\n }, 1500);\n }\n });\n }\n\n showAudioUnmuteModal() {\n // Create the overlay element\n const modalOverlay = document.createElement(\"div\");\n modalOverlay.classList.add(\"gleap-audio-unmute-modal-overlay\");\n\n // Create the modal container element\n const modal = document.createElement(\"div\");\n modal.classList.add(\"gleap-audio-unmute-modal\");\n\n // Create and add the modal message\n const message = document.createElement(\"p\");\n message.textContent = this.productTourData?.unmuteModalTitle;\n modal.appendChild(message);\n\n // Create the \"Unmute Audio\" button\n const unmuteButton = document.createElement(\"button\");\n unmuteButton.classList.add(\"gleap-audio-unmute-button\");\n unmuteButton.textContent = this.productTourData?.unmuteModalButton;\n unmuteButton.addEventListener(\"click\", () => {\n this.toggleAudio(false);\n if (modalOverlay.parentNode) {\n modalOverlay.parentNode.removeChild(modalOverlay);\n }\n setTimeout(() => {\n this.renderNextStep();\n }, 1000);\n });\n modal.appendChild(unmuteButton);\n\n // Create the \"Start Anyway\" button\n const startAnywayButton = document.createElement(\"button\");\n startAnywayButton.classList.add(\"gleap-tour-continue-button\");\n startAnywayButton.textContent = this.productTourData?.unmuteModalContinue;\n startAnywayButton.addEventListener(\"click\", () => {\n if (modalOverlay.parentNode) {\n modalOverlay.parentNode.removeChild(modalOverlay);\n }\n setTimeout(() => {\n this.renderNextStep();\n }, 1000);\n });\n modal.appendChild(startAnywayButton);\n\n // Build the modal and attach it to the DOM\n modalOverlay.appendChild(modal);\n document.body.appendChild(modalOverlay);\n }\n\n completeTour(success = true) {\n if (typeof window === \"undefined\") return;\n this.cleanup();\n if (this.onCompleteCallback) {\n this.onCompleteCallback(success);\n }\n }\n\n renderNextStep() {\n if (typeof window === \"undefined\") return;\n if (this.disabled) return;\n\n const self = this;\n const config = this.productTourData;\n const steps = config.steps;\n if (this.currentActiveIndex >= steps.length) {\n setTimeout(() => {\n this.completeTour();\n }, 500);\n return;\n }\n const currentStep = steps[this.currentActiveIndex];\n const handleStep = (element) => {\n this._pointerContainer.style.display = \"flex\";\n if (currentStep.selector && currentStep.selector.length > 0 && !element) {\n this.completeTour(false);\n return;\n }\n const gotToNextStep = () => {\n if (currentStep.mode === \"INPUT\" && element) {\n function proceedClickmode() {\n document\n .querySelector(`#${pointerContainerId}`)\n .classList.remove(\"copilot-pointer-container-clickmode\");\n element.classList.remove(\"gleap-input-highlight\");\n document.getElementById(pointerContainerId).style.display = \"none\";\n self.currentActiveIndex++;\n self.storeUncompletedTour();\n self.renderNextStep();\n }\n const inputModeType = currentStep.inputType ?? \"default\";\n if (inputModeType === \"default\") {\n function handleInputEvent(e) {\n if (e?.target?.value?.length === 0) return;\n const cursor = document.getElementById(\n `copilot-info-bubble-content`\n );\n if (!cursor) return;\n cursor.innerHTML = `${GleapTranslationManager.translateText(\n \"next\"\n )} \n \n`;\n cursor.addEventListener(\"click\", proceedClickmode, {\n once: true,\n });\n element.classList.add(\"gleap-input-highlight\");\n document\n .querySelector(`#${pointerContainerId}`)\n .classList.add(\"copilot-pointer-container-clickmode\");\n element.removeEventListener(\"input\", handleInputEvent);\n }\n element.addEventListener(\"input\", handleInputEvent, {\n once: false,\n });\n if (element.hasAttribute(\"contenteditable\")) {\n element.addEventListener(\"keyup\", handleInputEvent, {\n once: false,\n });\n }\n element.addEventListener(\n \"blur\",\n () => {\n element.focus();\n },\n { once: true }\n );\n element.focus();\n } else {\n const inputValue = currentStep.inputValue ?? \"\";\n let index = 0;\n function typeCharacter() {\n if (index < inputValue.length) {\n element.value += inputValue[index];\n index++;\n setTimeout(typeCharacter, 100);\n } else {\n setTimeout(() => {\n proceedClickmode();\n }, 1200);\n }\n }\n typeCharacter();\n }\n return;\n }\n self.currentActiveIndex++;\n self.storeUncompletedTour();\n if (currentStep.mode === \"CLICK\" && element) {\n const rect = element.getBoundingClientRect();\n const scrollX = window.scrollX || 0;\n const scrollY = window.scrollY || 0;\n performClickAnimation(\n rect.left + rect.width / 2 + scrollX,\n rect.top + rect.height / 2 + scrollY\n );\n element.click();\n }\n self.renderNextStep();\n };\n\n this.updatePointerPosition(element, currentStep);\n const message = currentStep?.message\n ? htmlToPlainText(currentStep.message)\n : \"🤔\";\n document.getElementById(`copilot-info-bubble-content`).textContent =\n message;\n this._pointerContainer.style.opacity = 1;\n const readTime = estimateReadTime(message);\n const continueWithNoAudio = () => {\n this.currentAudio = undefined;\n setTimeout(() => {\n gotToNextStep();\n }, readTime * 1000);\n };\n if (currentStep.voice && currentStep.voice.length > 0) {\n this.currentAudio = new Audio(currentStep.voice);\n if (this.audioMuted) {\n this.currentAudio.muted = true;\n }\n this.currentAudio.addEventListener(\"ended\", () => {\n setTimeout(() => {\n gotToNextStep();\n }, 1000);\n });\n this.currentAudio\n .play()\n .then(() => {})\n .catch((error) => {\n continueWithNoAudio();\n });\n } else {\n continueWithNoAudio();\n }\n };\n\n const elementPromise = currentStep.selector\n ? waitForElement(currentStep.selector)\n : Promise.resolve(null);\n elementPromise.then(handleStep).catch(() => handleStep(null));\n }\n}\n","import { loadIcon } from \"./UI\";\nimport GleapTours from \"./GleapTours\";\nimport Gleap, { GleapEventManager, GleapSession } from \"./Gleap\";\nimport GleapCopilotTours from \"./GleapCopilotTours\";\n\nconst localStorageKey = \"gleap-tour-data\";\n\nexport default class GleapProductTours {\n productTourData = undefined;\n productTourId = undefined;\n unmuted = false;\n currentActiveIndex = undefined;\n gleapTourObj = undefined;\n disabled = false;\n\n // GleapReplayRecorder singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapProductTours();\n return this.instance;\n } else {\n return this.instance;\n }\n }\n\n disable() {\n if (this.gleapTourObj) {\n this.gleapTourObj.destroy();\n }\n\n // Disable copilot tours.\n GleapCopilotTours.getInstance().disable();\n\n this.gleapTourObj = undefined;\n this.disabled = true;\n }\n\n constructor() {\n const self = this;\n\n if (typeof window !== \"undefined\") {\n const beforeUnloadListener = (event) => {\n if (\n !self?.disabled &&\n self?.productTourId &&\n self?.productTourData &&\n self?.productTourData?.tourType !== \"cobrowse\"\n ) {\n self.storeUncompletedTour();\n }\n };\n\n if (typeof window !== \"undefined\") {\n window.addEventListener(\"beforeunload\", beforeUnloadListener);\n }\n }\n }\n\n startWithConfig(tourId, config, delay = 0, manually = false) {\n // Prevent multiple tours from being started.\n if (this.productTourId || this.disabled) {\n return;\n }\n\n this.productTourId = tourId;\n this.productTourData = config;\n this.currentActiveIndex = 0;\n\n if (manually) {\n this.start();\n } else {\n const self = this;\n\n // Validate product tour.\n GleapSession.getInstance()\n .validateProductTour(tourId)\n .then(() => {\n if (delay > 0) {\n return setTimeout(() => {\n self.start();\n }, delay);\n } else {\n return this.start();\n }\n })\n .catch((error) => {\n console.log(\"Product tour is not live. Cleaning up...\");\n console.error(error);\n\n self.onComplete(false);\n });\n }\n }\n\n onComplete(success = true) {\n const comData = {\n tourId: this.productTourId,\n };\n\n if (success) {\n GleapEventManager.notifyEvent(\"productTourCompleted\", comData);\n Gleap.trackEvent(`tour-${this.productTourId}-completed`, comData);\n } else {\n GleapEventManager.notifyEvent(\"productTourQuit\", comData);\n Gleap.trackEvent(`tour-${this.productTourId}-quit`, comData);\n }\n\n // Clear data.\n if (this.gleapTourObj) {\n this.gleapTourObj.destroy();\n }\n\n this.gleapTourObj = undefined;\n this.productTourData = undefined;\n this.productTourId = undefined;\n this.currentActiveIndex = undefined;\n this.clearUncompletedTour();\n }\n\n loadUncompletedTour() {\n try {\n const data = JSON.parse(localStorage.getItem(localStorageKey));\n if (data?.tourData && data?.tourId) {\n return data;\n }\n } catch (e) {}\n\n return null;\n }\n\n storeUncompletedTour() {\n if (this.productTourId && this.productTourData) {\n try {\n let data = JSON.parse(\n JSON.stringify({\n tourData: this.productTourData,\n tourId: this.productTourId,\n })\n );\n\n data.tourData.steps = data.tourData.steps.slice(\n this.currentActiveIndex || 0,\n data.tourData.steps.length\n );\n\n localStorage.setItem(localStorageKey, JSON.stringify(data));\n } catch (e) {}\n } else {\n this.clearUncompletedTour();\n }\n }\n\n clearUncompletedTour() {\n try {\n localStorage.removeItem(localStorageKey);\n } catch (e) {}\n }\n\n start() {\n const config = this.productTourData;\n if (!config) {\n return;\n }\n\n if (config.tourType === \"cobrowse\") {\n return GleapCopilotTours.getInstance().startWithConfig(\n this.productTourId,\n config,\n (success) => {\n this.onComplete(success);\n }\n );\n }\n\n this.unmuted = false;\n const steps = config.steps;\n const self = this;\n\n var driverSteps = [];\n\n for (let i = 0; i < steps.length; i++) {\n const step = steps[i];\n\n const isClickMode = step.mode === \"CLICK\";\n const isInputMode = step.mode === \"INPUT\";\n\n var message = \"\";\n var hasSender = false;\n\n if (step.type === \"video-pointer\") {\n message = `
\n \n
${loadIcon(\n \"unmute\"\n )}
\n
`;\n } else {\n var senderHTML = ``;\n\n if (config.sender && config.sender.firstName) {\n hasSender = true;\n senderHTML = `
\n
\n
${config.sender.firstName}
\n
`;\n }\n\n message = `${senderHTML}
${step.message}
`;\n }\n\n const disableInteraction = !isClickMode && !isInputMode;\n\n var driverStep = {\n disableActiveInteraction: disableInteraction,\n mode: step.mode,\n popover: {\n description: message,\n popoverClass: `gleap-tour-popover-${step.type} ${\n !hasSender && \"gleap-tour-popover-no-sender\"\n } ${config.allowClose && \"gleap-tour-popover-can-close\"}`,\n ...(isClickMode\n ? {\n showButtons: [],\n }\n : {}),\n },\n };\n if (step.selector && step.selector.length > 0) {\n driverStep.element = step.selector;\n }\n driverSteps.push(driverStep);\n }\n\n var buttons = [\"next\", \"close\"];\n\n if (config.backButton) {\n buttons.push(\"previous\");\n }\n\n function onDocumentClick(evnt) {\n try {\n var gleapTourPopover = document.querySelector(\".gleap-tour-popover\");\n if (gleapTourPopover && !gleapTourPopover.contains(evnt.target)) {\n const stepIndex = self.gleapTourObj.getActiveIndex();\n const step = steps[stepIndex];\n const element = self.gleapTourObj.getActiveElement();\n\n if (step?.mode === \"CLICK\" && evnt?.target !== element) {\n const isInsideElement = element.contains(evnt?.target);\n if (!isInsideElement) {\n // Ignore clicks outside of the actual element.\n return;\n }\n }\n\n // Store next step index.\n self.currentActiveIndex = (self.currentActiveIndex || 0) + 1;\n self.storeUncompletedTour();\n\n if (\n (element && element.tagName === \"INPUT\") ||\n step.mode === \"INPUT\" ||\n evnt?.target?.id.includes(\"tooltip-svg\")\n ) {\n // Prevent.\n } else {\n self.gleapTourObj.moveNext();\n }\n }\n } catch (e) {}\n }\n\n this.gleapTourObj = GleapTours({\n showProgress: true,\n allowKeyboardControl: false,\n steps: driverSteps,\n showProgress: steps.length > 1,\n allowClose: config.allowClose,\n nextBtnText: config.nextText,\n doneBtnText: config.doneText,\n prevBtnText: config.prevText,\n showButtons: buttons,\n onHighlightStarted: (element, step, config) => {\n this.currentActiveIndex = config?.state?.activeIndex;\n this.storeUncompletedTour();\n },\n onElementNotFound: (step) => {\n document.removeEventListener(\"click\", onDocumentClick);\n\n this.onComplete(false);\n },\n onDestroyStarted: () => {\n if (!this.gleapTourObj.hasNextStep()) {\n // Mark as completed.\n this.onComplete(true);\n } else {\n // Mark as quit.\n this.onComplete(false);\n }\n\n document.removeEventListener(\"click\", onDocumentClick);\n },\n onPopoverRender: (popoverElement) => {\n // Fix for images and videos.\n if (popoverElement) {\n const mediaElements = document.querySelectorAll(\n \".gleap-tour-popover-description img, .gleap-tour-popover-description video\"\n );\n\n const performRequentialRefresh = () => {\n setTimeout(() => {\n this.gleapTourObj.refresh();\n }, 500);\n setTimeout(() => {\n this.gleapTourObj.refresh();\n }, 750);\n };\n\n for (let i = 0; i < mediaElements.length; i++) {\n const mediaElement = mediaElements[i];\n if (mediaElement.tagName === \"IMG\") {\n mediaElement.addEventListener(\"load\", () => {\n performRequentialRefresh();\n });\n mediaElement.addEventListener(\"error\", () => {\n performRequentialRefresh();\n });\n } else if (mediaElement.tagName === \"VIDEO\") {\n mediaElement.addEventListener(\"canplaythrough\", () => {\n performRequentialRefresh();\n });\n mediaElement.addEventListener(\"error\", () => {\n performRequentialRefresh();\n });\n }\n }\n }\n\n const playingClass = \"gleap-tour-video--playing\";\n const playPauseContainer = document.querySelector(\n \".gleap-tour-video-playpause\"\n );\n\n const videoElement = document.querySelector(\".gleap-tour-video-obj\");\n if (videoElement) {\n const videoContainer = videoElement.closest(\".gleap-tour-video\");\n\n if (self.unmuted) {\n if (videoElement) {\n videoElement.pause();\n videoElement.muted = false;\n videoElement.play();\n videoContainer.classList.add(playingClass);\n }\n }\n\n videoElement.addEventListener(\"ended\", function () {\n playPauseContainer.innerHTML = loadIcon(\"replay\");\n playPauseContainer.classList.add(\n \"gleap-tour-video-svg--fullscreen\"\n );\n videoContainer.classList.remove(playingClass);\n });\n\n videoElement.addEventListener(\"play\", function () {\n playPauseContainer.classList.remove(\n \"gleap-tour-video-svg--fullscreen\"\n );\n });\n\n if (playPauseContainer) {\n playPauseContainer.addEventListener(\"click\", () => clickVideo());\n }\n\n const clickVideo = () => {\n if (videoElement.muted) {\n self.unmuted = true;\n\n videoElement.pause();\n videoElement.currentTime = 0;\n videoElement.muted = false;\n videoElement.play();\n\n playPauseContainer.innerHTML = loadIcon(\"mute\");\n videoContainer.classList.add(playingClass);\n } else if (videoElement.paused) {\n videoElement.muted = false;\n videoElement.play();\n\n playPauseContainer.innerHTML = loadIcon(\"mute\");\n videoContainer.classList.add(playingClass);\n } else {\n videoElement.pause();\n playPauseContainer.innerHTML = loadIcon(\"unmute\");\n videoContainer.classList.remove(playingClass);\n }\n };\n }\n },\n });\n this.gleapTourObj.drive();\n\n document.addEventListener(\"click\", onDocumentClick, true);\n }\n}\n","import { injectStyledCSS } from \"./UI\";\nimport GleapNetworkIntercepter from \"./GleapNetworkIntercepter\";\nimport {\n fixGleapHeight,\n gleapDataParser,\n runFunctionWhenDomIsReady,\n} from \"./GleapHelper\";\nimport GleapSession from \"./GleapSession\";\nimport GleapStreamedEvent from \"./GleapStreamedEvent\";\nimport GleapConfigManager from \"./GleapConfigManager\";\nimport GleapFeedback from \"./GleapFeedback\";\nimport GleapFrameManager from \"./GleapFrameManager\";\nimport GleapMetaDataManager from \"./GleapMetaDataManager\";\nimport GleapConsoleLogManager from \"./GleapConsoleLogManager\";\nimport GleapClickListener from \"./GleapClickListener\";\nimport GleapFeedbackButtonManager from \"./GleapFeedbackButtonManager\";\nimport GleapCustomDataManager from \"./GleapCustomDataManager\";\nimport GleapEventManager from \"./GleapEventManager\";\nimport GleapCustomActionManager from \"./GleapCustomActionManager\";\nimport GleapReplayRecorder from \"./GleapReplayRecorder\";\nimport GleapMarkerManager from \"./GleapMarkerManager\";\nimport GleapTranslationManager from \"./GleapTranslationManager\";\nimport GleapShortcutListener from \"./GleapShortcutListener\";\nimport GleapPreFillManager from \"./GleapPreFillManager\";\nimport GleapNotificationManager from \"./GleapNotificationManager\";\nimport GleapBannerManager from \"./GleapBannerManager\";\nimport GleapModalManager from \"./GleapModalManager\";\nimport GleapAudioManager from \"./GleapAudioManager\";\nimport GleapTagManager from \"./GleapTagManager\";\nimport GleapAdminManager from \"./GleapAdminManager\";\nimport GleapProductTours from \"./GleapProductTours\";\nimport { checkPageFilter } from \"./GleapPageFilter\";\nimport { registerGleapChecklist } from \"./GleapChecklist\";\nimport ChecklistNetworkManager from \"./ChecklistNetworkManager\";\n\nif (\n typeof window !== \"undefined\" &&\n typeof HTMLCanvasElement !== \"undefined\" &&\n HTMLCanvasElement.prototype &&\n HTMLCanvasElement.prototype.__originalGetContext === undefined\n) {\n HTMLCanvasElement.prototype.__originalGetContext =\n HTMLCanvasElement.prototype.getContext;\n HTMLCanvasElement.prototype.getContext = function (type, options) {\n return this.__originalGetContext(type, {\n ...options,\n preserveDrawingBuffer: true,\n });\n };\n}\n\nif (\n typeof customElements !== \"undefined\" &&\n typeof HTMLElement !== \"undefined\" &&\n typeof window !== \"undefined\"\n) {\n registerGleapChecklist();\n}\n\nclass Gleap {\n static invoked = true;\n static silentCrashReportSent = false;\n initialized = false;\n offlineMode = false;\n disablePageTracking = false;\n disableInAppNotifications = false;\n\n // Global data\n globalData = {\n screenRecordingData: null,\n webReplay: null,\n snapshotPosition: {\n x: 0,\n y: 0,\n },\n };\n\n // Gleap singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new Gleap();\n return this.instance;\n } else {\n return this.instance;\n }\n }\n\n /**\n * Main constructor\n */\n constructor() {\n if (typeof window !== \"undefined\") {\n // Make sure all instances are ready.\n GleapMetaDataManager.getInstance();\n GleapConsoleLogManager.getInstance().start();\n GleapClickListener.getInstance().start();\n GleapAdminManager.getInstance().start();\n }\n }\n\n /**\n * Sets the development environment\n * @param {*} environment\n */\n static setEnvironment(environment) {\n GleapMetaDataManager.getInstance().environment = environment;\n }\n\n /**\n * Set tags to be submitted with each ticket.\n * @param {*} tags\n */\n static setTags(tags) {\n GleapTagManager.getInstance().setTags(tags);\n }\n\n /**\n * Sets a custom URL handler.\n * @param {*} urlHandler\n */\n static setUrlHandler(urlHandler) {\n GleapFrameManager.getInstance().setUrlHandler(urlHandler);\n }\n\n /**\n * Active the Gleap offline mode.\n * @param {*} offlineMode\n */\n static setOfflineMode(offlineMode) {\n const instance = this.getInstance();\n instance.offlineMode = offlineMode;\n }\n\n /**\n * Disable the in-app notifications.\n * @param {*} disableInAppNotifications\n */\n static setDisableInAppNotifications(disableInAppNotifications) {\n const instance = this.getInstance();\n instance.disableInAppNotifications = disableInAppNotifications;\n }\n\n /**\n * Disable the default page tracking.\n * @param {*} disablePageTracking\n */\n static setDisablePageTracking(disablePageTracking) {\n const instance = this.getInstance();\n instance.disablePageTracking = disablePageTracking;\n }\n\n /**\n * Revert console log overwrite.\n */\n static disableConsoleLogOverwrite() {\n GleapConsoleLogManager.getInstance().stop();\n }\n\n /**\n * Set the AI tools.\n * @param {*} tools\n */\n static setAiTools(tools) {\n GleapConfigManager.getInstance().setAiTools(tools);\n GleapFrameManager.getInstance().sendConfigUpdate();\n }\n\n /**\n * Attaches external network logs.\n */\n static attachNetworkLogs(networkLogs) {\n GleapNetworkIntercepter.getInstance().externalRequests =\n gleapDataParser(networkLogs);\n }\n\n /**\n * Add entry to logs.\n * @param {*} message\n * @param {*} logLevel\n * @returns\n */\n static log(message, logLevel = \"INFO\") {\n GleapConsoleLogManager.getInstance().addLog(message, logLevel);\n }\n\n /**\n * Initializes the SDK\n * @param {*} sdkKey\n */\n static initialize(sdkKey) {\n const instance = this.getInstance();\n if (instance.initialized) {\n console.warn(\"Gleap already initialized.\");\n return;\n }\n\n instance.initialized = true;\n\n try {\n fixGleapHeight();\n } catch (error) {}\n\n // Start session\n const sessionInstance = GleapSession.getInstance();\n sessionInstance.sdkKey = sdkKey;\n sessionInstance.setOnSessionReady(() => {\n // Run auto configuration.\n setTimeout(() => {\n GleapConfigManager.getInstance()\n .start()\n .then(() => {\n GleapStreamedEvent.getInstance().start();\n\n runFunctionWhenDomIsReady(() => {\n // Inject the widget buttons\n GleapFeedbackButtonManager.getInstance().injectFeedbackButton();\n\n // Inject the notification container\n GleapNotificationManager.getInstance().injectNotificationUI();\n\n // Check for uncompleted tour.\n Gleap.checkForUncompletedTour();\n\n // Check for URL params.\n Gleap.checkForUrlParams();\n\n // Notify event.\n GleapEventManager.notifyEvent(\"initialized\");\n });\n })\n .catch(function (err) {\n console.warn(\"Failed to initialize Gleap.\");\n });\n }, 0);\n });\n sessionInstance.startSession();\n }\n\n static openURL(url, newTab = false) {\n GleapFrameManager.getInstance().urlHandler(url, newTab);\n }\n\n static checkForUrlParams() {\n if (typeof window === \"undefined\" || !window.location.search) {\n return;\n }\n\n try {\n const urlParams = new URLSearchParams(window.location.search);\n\n const widget = urlParams.get(\"gleap_widget\");\n if (widget && widget.length > 0) {\n Gleap.open();\n }\n\n const conversationFlow = urlParams.get(\"gleap_conversation\");\n if (conversationFlow && conversationFlow.length > 0) {\n if (conversationFlow === \"true\") {\n Gleap.startConversation(true);\n } else {\n Gleap.startBot(conversationFlow, true);\n }\n }\n\n const feedbackFlow = urlParams.get(\"gleap_feedback\");\n if (feedbackFlow && feedbackFlow.length > 0) {\n Gleap.startFeedbackFlow(feedbackFlow);\n }\n const surveyFlow = urlParams.get(\"gleap_survey\");\n const surveyFlowFormat = urlParams.get(\"gleap_survey_format\");\n if (surveyFlow && surveyFlow.length > 0) {\n Gleap.showSurvey(\n surveyFlow,\n surveyFlowFormat === \"survey_full\" ? \"survey_full\" : \"survey\"\n );\n }\n const tourId = urlParams.get(\"gleap_tour\");\n if (tourId && tourId.length > 0) {\n var tourDelay = parseInt(urlParams.get(\"gleap_tour_delay\"));\n if (isNaN(tourDelay)) {\n tourDelay = 2;\n }\n\n setTimeout(() => {\n Gleap.startProductTour(tourId);\n }, tourDelay * 1000);\n }\n } catch (exp) {}\n }\n\n /**\n * Destroy\n * @returns\n */\n static destroy() {\n GleapReplayRecorder.getInstance().stop();\n GleapStreamedEvent.getInstance().stop();\n GleapFrameManager.getInstance().destroy();\n GleapFeedbackButtonManager.getInstance().destroy();\n GleapNotificationManager.getInstance().clearAllNotifications(true);\n GleapSession.getInstance().clearSession(0, false);\n GleapBannerManager.getInstance().removeBannerUI();\n\n // Reset the initialized flag and clear the instance\n this.instance = null;\n }\n\n /**\n * Close any open banner.\n */\n static closeBanner() {\n GleapBannerManager.getInstance().removeBannerUI();\n }\n\n /**\n * Close any open modal.\n */\n static closeModal() {\n GleapModalManager.getInstance().hideModal();\n }\n\n /**\n * Enable or disable Gleap session tracking through cookies.\n * @param {*} useCookies\n */\n static setUseCookies(useCookies) {\n GleapSession.getInstance().useCookies = useCookies;\n }\n\n /**\n * Indentifies the user session\n * @param {string} userId\n * @param {*} userData\n */\n static identify(userId, userData, userHash) {\n return GleapSession.getInstance().identifySession(\n userId,\n gleapDataParser(userData),\n userHash\n );\n }\n\n /**\n * Updates the contact data.\n * @param {*} userData\n */\n static updateContact(userData) {\n return GleapSession.getInstance().updateSession(gleapDataParser(userData));\n }\n\n /**\n * Clears the current contact.\n */\n static clearIdentity() {\n GleapSession.getInstance().clearSession();\n }\n\n /**\n * Returns the current user session\n */\n static getIdentity() {\n return GleapSession.getInstance().getSession();\n }\n\n /**\n * Returns whether the user is identified or not.\n */\n static isUserIdentified() {\n const session = GleapSession.getInstance().session;\n if (session && session.userId && session.userId.length > 0) {\n return true;\n }\n return false;\n }\n\n /**\n * Widget opened status\n * @returns {boolean} isOpened\n */\n static isOpened() {\n return GleapFrameManager.getInstance().isOpened();\n }\n\n /**\n * Hides any open Gleap dialogs.\n */\n static hide() {\n GleapFrameManager.getInstance().hideWidget();\n }\n\n /**\n * Sets the maximum network request count.\n */\n static setMaxNetworkRequests(maxRequests) {\n GleapNetworkIntercepter.getInstance().setMaxRequests(maxRequests);\n }\n\n /**\n * Sets the maximum network request count.\n */\n static startNetworkLogger() {\n GleapNetworkIntercepter.getInstance().start();\n }\n\n /**\n * Sets the network logger blacklist.\n * @param {Array} networkLogBlacklist\n */\n static setNetworkLogsBlacklist(networkLogBlacklist) {\n GleapNetworkIntercepter.getInstance().setBlacklist(networkLogBlacklist);\n }\n\n /**\n * Sets the network logger props to ignore.\n * @param {Array} filters\n */\n static setNetworkLogPropsToIgnore(filters) {\n GleapNetworkIntercepter.getInstance().setFilters(filters);\n }\n\n /**\n * Set custom replay options.\n * @param {*} options\n */\n static setReplayOptions(options) {\n GleapReplayRecorder.getInstance().setOptions(options);\n }\n\n /**\n * Closes any open Gleap dialogs.\n * @param {boolean} resetRoutes\n */\n static close(resetRoutes = false) {\n GleapFrameManager.getInstance().hideWidget(resetRoutes);\n }\n\n /**\n * Starts the Gleap flow.\n */\n static open() {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Track a custom event\n * @param {string} name\n * @param {any} data\n */\n static trackEvent(name, data) {\n GleapStreamedEvent.getInstance().logEvent(name, data);\n }\n\n /**\n * Logs a custom event\n * @param {string} name\n * @param {any} data\n * @deprecated Please use trackEvent instead.\n */\n static logEvent(name, data) {\n GleapStreamedEvent.getInstance().logEvent(name, data);\n }\n\n /**\n * Prefills a specific form field.\n * @param {*} key\n * @param {*} value\n */\n static preFillForm(data) {\n const cleanedData = gleapDataParser(data);\n GleapPreFillManager.getInstance().formPreFill = cleanedData;\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"prefill-form-data\",\n data: cleanedData,\n },\n true\n );\n }\n\n /**\n * Register events for Gleap.\n * @param {*} eventName\n * @param {*} callback\n */\n static on(eventName, callback) {\n GleapEventManager.on(eventName, callback);\n }\n\n /**\n * Enable or disable shortcuts\n * @param {boolean} enabled\n */\n static enableShortcuts(enabled) {\n if (enabled) {\n GleapShortcutListener.getInstance().start();\n } else {\n GleapShortcutListener.getInstance().stop();\n }\n }\n\n /**\n * Show or hide the feedback button\n * @param {*} show\n * @returns\n */\n static showFeedbackButton(show) {\n GleapFeedbackButtonManager.getInstance().toggleFeedbackButton(show);\n }\n\n /**\n * Sets the app version code.\n * @param {string} appVersionCode\n */\n static setAppVersionCode(appVersionCode) {\n GleapMetaDataManager.setAppVersionCode(appVersionCode);\n }\n\n /**\n * Sets the app version code.\n * @param {string} appVersionCode\n */\n static setAppBuildNumber(appBuildNumber) {\n GleapMetaDataManager.setAppBuildNumber(appBuildNumber);\n }\n\n /**\n * Set a custom ws api url.\n * @param {string} wsApiUrl\n */\n static setWSApiUrl(wsApiUrl) {\n GleapSession.getInstance().wsApiUrl = wsApiUrl;\n }\n\n /**\n * Set a custom api url.\n * @param {string} apiUrl\n */\n static setApiUrl(apiUrl) {\n GleapSession.getInstance().apiUrl = apiUrl;\n }\n\n /**\n * Set a custom banner url.\n * @param {string} bannerUrl\n */\n static setBannerUrl(bannerUrl) {\n GleapBannerManager.getInstance().setBannerUrl(bannerUrl);\n }\n\n /**\n * Set a custom modal url.\n * @param {string} modalUrl\n */\n static setModalUrl(modalUrl) {\n GleapModalManager.getInstance().setModalUrl(modalUrl);\n }\n\n /**\n * Set a custom frame api url.\n * @param {string} frameUrl\n */\n static setFrameUrl(frameUrl) {\n GleapFrameManager.getInstance().frameUrl = frameUrl;\n }\n\n /**\n * This method is used to set ticket attributes programmatically.\n * @param {*} key The key of the attribute you want to add.\n * @param {*} value The value to set.\n */\n static setTicketAttribute(key, value) {\n GleapCustomDataManager.getInstance().setTicketAttribute(key, value);\n }\n\n /**\n * This method is used to unset ticket attributes programmatically.\n * @param {*} key The key of the attribute you want to unset.\n */\n static unsetTicketAttribute(key) {\n GleapCustomDataManager.getInstance().unsetTicketAttribute(key);\n }\n\n /**\n * This method is used to clear ticket attributes programmatically.\n */\n static clearTicketAttributes() {\n GleapCustomDataManager.getInstance().clearTicketAttributes();\n }\n\n /**\n * Set custom data that will be attached to the bug-report.\n * @param {*} data\n */\n static attachCustomData(data) {\n GleapCustomDataManager.getInstance().attachCustomData(data);\n }\n\n /**\n * Add one key value pair to the custom data object\n * @param {*} key The key of the custom data entry you want to add.\n * @param {*} value The custom data you want to add.\n */\n static setCustomData(key, value) {\n GleapCustomDataManager.getInstance().setCustomData(key, value);\n }\n\n /**\n * Remove one key value pair of the custom data object\n * @param {*} key The key of the custom data entry you want to remove.\n */\n static removeCustomData(key) {\n GleapCustomDataManager.getInstance().removeCustomData(key);\n }\n\n /**\n * Clear the custom data\n */\n static clearCustomData() {\n GleapCustomDataManager.getInstance().clearCustomData();\n }\n\n /**\n * Play or mute the sound.\n * @param {*} play\n */\n static playSound(play) {\n GleapAudioManager.playSound(play);\n }\n\n /**\n * Show or hide the notification badge count.\n * @param {boolean} showNotificationBadge show or hide the notification badge\n *\n */\n static showTabNotificationBadge(showNotificationBadge) {\n const notificationInstance = GleapNotificationManager.getInstance();\n notificationInstance.showNotificationBadge = showNotificationBadge;\n notificationInstance.updateTabBarNotificationCount();\n }\n\n /**\n * Override the browser language.\n * @param {string} language country code with two letters\n */\n static setLanguage(language) {\n GleapTranslationManager.getInstance().setOverrideLanguage(language);\n\n if (Gleap.getInstance().initialized) {\n setTimeout(() => {\n Gleap.getInstance().softReInitialize();\n\n // Update language for contact.\n Gleap.updateContact({\n lang: language,\n });\n }, 1000);\n }\n }\n\n /**\n * Register custom action\n * @param {*} action\n */\n static registerCustomAction(customAction) {\n GleapCustomActionManager.registerCustomAction(customAction);\n }\n\n /**\n * Triggers a custom action\n * @param {*} actionName\n */\n static triggerCustomAction(name) {\n GleapCustomActionManager.triggerCustomAction(name);\n }\n\n /**\n * Sets a custom color scheme.\n * @param {string} primaryColor\n */\n static setStyles(\n primaryColor,\n headerColor,\n buttonColor,\n backgroundColor = \"#ffffff\",\n borderRadius = 20,\n buttonX = 20,\n buttonY = 20,\n buttonStyle = GleapFeedbackButtonManager.FEEDBACK_BUTTON_BOTTOM_LEFT\n ) {\n runFunctionWhenDomIsReady(() => {\n injectStyledCSS(\n primaryColor,\n headerColor,\n buttonColor,\n borderRadius,\n backgroundColor,\n buttonX,\n buttonY,\n buttonStyle\n );\n });\n }\n\n /**\n * Sends a silent feedback report\n * @param {*} formData\n * @param {*} priority\n * @param {*} excludeData\n */\n static sendSilentCrashReport(\n description = \"\",\n priority = \"MEDIUM\",\n excludeData = {\n screenshot: true,\n replays: true,\n attachments: true,\n }\n ) {\n return Gleap.sendSilentCrashReportWithFormData(\n {\n description,\n },\n priority,\n excludeData\n );\n }\n\n /**\n * Sends a silent feedback report\n * @param {*} formData\n * @param {*} priority\n * @param {*} excludeData\n */\n static sendSilentCrashReportWithFormData(\n formData,\n priority = \"MEDIUM\",\n excludeData = {\n screenshot: true,\n replays: true,\n attachments: true,\n }\n ) {\n if (this.silentCrashReportSent) {\n return;\n }\n\n this.silentCrashReportSent = true;\n setTimeout(() => {\n this.silentCrashReportSent = false;\n }, 10000);\n\n const excludeDataCleaned = excludeData ? gleapDataParser(excludeData) : {};\n const sessionInstance = GleapSession.getInstance();\n if (!sessionInstance.ready) {\n return;\n }\n\n var newFormData = formData ? formData : {};\n if (sessionInstance.session.email) {\n newFormData.reportedBy = sessionInstance.session.email;\n }\n\n const feedback = new GleapFeedback(\n \"CRASH\",\n priority,\n newFormData,\n true,\n excludeDataCleaned\n );\n feedback\n .sendFeedback()\n .then(() => {})\n .catch((error) => {});\n }\n\n /**\n * Shows a survey manually.\n * @param {*} actionType\n * @param {*} format\n */\n static showSurvey(actionType, format = \"survey\") {\n Gleap.startFeedbackFlowWithOptions(\n actionType,\n {\n hideBackButton: true,\n format,\n },\n true\n );\n }\n\n /**\n * Starts a classic feedback form.\n */\n static startClassicForm(formId, showBackButton) {\n Gleap.startFeedbackFlowWithOptions(formId, {\n hideBackButton: !showBackButton,\n });\n }\n\n /**\n * Starts the bug reporting flow.\n */\n static startFeedbackFlow(feedbackFlow, showBackButton) {\n Gleap.startFeedbackFlowWithOptions(feedbackFlow, {\n hideBackButton: !showBackButton,\n });\n }\n\n /**\n * Starts the bug reporting flow.\n */\n static startFeedbackFlowWithOptions(\n feedbackFlow,\n options = {},\n isSurvey = false\n ) {\n const { autostartDrawing, hideBackButton, format } = options;\n const sessionInstance = GleapSession.getInstance();\n if (!sessionInstance.ready) {\n return;\n }\n\n // Initially set scroll position\n Gleap.getInstance().setGlobalDataItem(\"snapshotPosition\", {\n x: window.scrollX,\n y: window.scrollY,\n });\n\n var action = \"start-feedbackflow\";\n if (isSurvey) {\n action = \"start-survey\";\n }\n\n GleapFrameManager.getInstance().setAppMode(isSurvey ? format : \"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: action,\n data: {\n flow: feedbackFlow,\n hideBackButton: hideBackButton,\n format,\n },\n },\n true\n );\n\n if (autostartDrawing) {\n GleapFrameManager.getInstance().showDrawingScreen(\"screenshot\");\n } else {\n GleapFrameManager.getInstance().showWidget();\n }\n }\n\n /**\n * Opens the conversations overview.\n */\n static openConversations(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-conversations\",\n data: {\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens a conversation\n */\n static openConversation(shareToken, showBackButton = true) {\n if (!shareToken) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-conversation\",\n data: {\n shareToken,\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Starts a new conversation\n */\n static startConversation(showBackButton = true) {\n Gleap.startBot(\"\", showBackButton);\n }\n\n /**\n * Starts a new conversation and attaches the bot with the given id.\n */\n static startBot(botId, showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"start-bot\",\n data: {\n botId: botId ? botId : \"\",\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens a help center collection\n */\n static openHelpCenterCollection(collectionId, showBackButton = true) {\n if (!collectionId) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-help-collection\",\n data: {\n collectionId,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens a help article\n */\n static openHelpCenterArticle(articleId, showBackButton = true) {\n if (!articleId) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-help-article\",\n data: {\n articleId,\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens the help center.\n */\n static openHelpCenter(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-helpcenter\",\n data: {\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Search for news articles in the help center\n */\n static searchHelpCenter(term, showBackButton = true) {\n if (!term) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-helpcenter-search\",\n data: {\n term,\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens a news article\n */\n static openNewsArticle(id, showBackButton = true) {\n if (!id) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-news-article\",\n data: {\n id,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Open the checklists overview.\n */\n static openChecklists(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-checklists\",\n data: {},\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Starts a new checklist and opens it.\n */\n static startChecklist(\n outboundId,\n showBackButton = true,\n sharedKey = undefined\n ) {\n if (!outboundId) {\n return false;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"start-checklist\",\n data: {\n outboundId: outboundId,\n hideBackButton: !showBackButton,\n ...(sharedKey ? { sharedKey: sharedKey } : {}),\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n\n return true;\n }\n\n /**\n * Open an existing checklist.\n */\n static openChecklist(checklistId, showBackButton = true) {\n if (!checklistId) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-checklist\",\n data: {\n id: checklistId,\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Gets the full checklist data by validating the outbound ID and fetching the data.\n * @param {string} outboundId - The outbound checklist ID to get data for.\n * @param {string} [sharedKey] - Optional shared key for the checklist.\n * @returns {Promise} A promise that resolves with the full checklist data.\n *\n * Available events for checklist updates (use Gleap.on() to listen):\n * - 'checklist-loaded': Fired when a checklist is initially loaded\n * - 'checklist-update': Fired when checklist data is updated\n * - 'checklist-step-completed': Fired when a step is marked as completed\n * - 'checklist-completed': Fired when the entire checklist is completed\n */\n static getChecklistData(outboundId, sharedKey) {\n if (!outboundId) {\n return Promise.reject(new Error(\"outboundId is required\"));\n }\n\n const networkManager = ChecklistNetworkManager.getInstance();\n\n // First validate the checklist to get the internal ID\n return networkManager\n .validateChecklist(outboundId, sharedKey)\n .then((internalId) => {\n // Then fetch the full checklist data\n return networkManager.fetchChecklist(internalId);\n });\n }\n\n /**\n * Opens the news overview.\n */\n static openNews(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-news\",\n data: {\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens the feature requests overview.\n */\n static openFeatureRequests(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-feature-requests\",\n data: {},\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n isLiveMode() {\n if (this.offlineMode === true) {\n return false;\n }\n\n var hostname = window.location.hostname;\n const isLocalHost =\n [\"localhost\", \"127.0.0.1\", \"0.0.0.0\", \"\", \"::1\"].includes(hostname) ||\n hostname.startsWith(\"192.168.\") ||\n hostname.startsWith(\"10.0.\") ||\n hostname.endsWith(\".local\") ||\n !hostname.includes(\".\");\n return !isLocalHost;\n }\n\n softReInitialize() {\n GleapFrameManager.getInstance().destroy();\n GleapConfigManager.getInstance()\n .start()\n .then(() => {\n // Update the feedback button.\n GleapFeedbackButtonManager.getInstance().refresh();\n\n // Inject the notification container\n GleapNotificationManager.getInstance().injectNotificationUI();\n })\n .catch(function (err) {\n console.warn(\"Failed to initialize Gleap.\");\n });\n }\n\n /**\n * Performs an action.\n * @param {*} action\n */\n performActions(actions) {\n for (let i = 0; i < actions.length; i++) {\n const action = actions[i];\n if (action && action.actionType) {\n if (action.pageFilter && window && window.location) {\n const passed = checkPageFilter(\n window.location.href,\n action.pageFilter,\n action.pageFilterType\n );\n\n if (!passed) {\n continue;\n }\n }\n\n if (action.actionType === \"notification\") {\n if (action?.data?.checklist?.popupType === \"widget\") {\n Gleap.openChecklist(action.data.checklist.id, true);\n } else {\n if (!this.disableInAppNotifications) {\n Gleap.showNotification(action);\n }\n }\n } else if (action.actionType === \"banner\") {\n Gleap.showBanner(action);\n } else if (action.actionType === \"modal\") {\n Gleap.showModal(action);\n } else if (action.actionType === \"tour\") {\n Gleap.startProductTourWithConfig(action.outbound, action.data, false);\n } else {\n Gleap.showSurvey(action.actionType, action.format);\n }\n }\n }\n }\n\n static startProductTour(tourId, checkStartUrl = false) {\n const self = this;\n GleapSession.getInstance()\n .startProductTourConfig(tourId)\n .then((config) => {\n if (\n checkStartUrl &&\n config?.startURL &&\n !window?.location?.href?.includes(config?.baseURL)\n ) {\n window.location.href = `${config.startURL}?gleap_tour=${tourId}&gleap_tour_delay=1`;\n return;\n }\n\n self.startProductTourWithConfig(tourId, config, true);\n })\n .catch((error) => {});\n }\n\n static checkForUncompletedTour() {\n const tourData = GleapProductTours.getInstance().loadUncompletedTour();\n if (tourData) {\n GleapProductTours.getInstance().startWithConfig(\n tourData.tourId,\n tourData.tourData,\n 500\n );\n }\n }\n\n static startProductTourWithConfig(tourId, config, manually = false) {\n GleapProductTours.getInstance().startWithConfig(\n tourId,\n config,\n 0,\n manually\n );\n }\n\n static showBanner(data) {\n try {\n GleapBannerManager.getInstance().showBanner(data);\n } catch (e) {}\n }\n\n static showModal(data) {\n try {\n GleapModalManager.getInstance().showModal(data);\n } catch (e) {}\n }\n\n static showNotification(data) {\n GleapNotificationManager.getInstance().showNotification(data);\n }\n\n /**\n * Sets a global data value\n * @param {*} key\n * @param {*} value\n */\n setGlobalDataItem(key, value) {\n this.globalData[key] = value;\n }\n\n /**\n * Gets a global data value\n * @param {*} key\n * @returns\n */\n getGlobalDataItem(key) {\n return this.globalData[key];\n }\n\n /**\n * Takes the current replay and assigns it to the global data array.\n */\n takeCurrentReplay() {\n const replayData = GleapReplayRecorder.getInstance().getReplayData();\n this.setGlobalDataItem(\"webReplay\", replayData);\n }\n}\n\n// Check for unperformed Gleap actions.\nif (typeof window !== \"undefined\") {\n const GleapActions = window.GleapActions;\n if (GleapActions && GleapActions.length > 0) {\n for (var i = 0; i < GleapActions.length; i++) {\n const GLAction = GleapActions[i];\n if (GLAction && GLAction.e && Gleap[GLAction.e]) {\n Gleap[GLAction.e].apply(Gleap, GLAction.a);\n }\n }\n }\n}\n\nconst handleGleapLink = (href) => {\n try {\n const urlParts = href.split(\"/\");\n const type = urlParts[2];\n if (type === \"article\") {\n const identifier = urlParts[3];\n Gleap.openHelpCenterArticle(identifier, true);\n }\n\n if (type === \"collection\") {\n const identifier = urlParts[3];\n Gleap.openHelpCenterCollection(identifier, true);\n }\n\n if (type === \"flow\") {\n const identifier = urlParts[3];\n Gleap.startFeedbackFlow(identifier, true);\n }\n\n if (type === \"survey\") {\n const identifier = urlParts[3];\n Gleap.showSurvey(identifier);\n }\n\n if (type === \"bot\") {\n const identifier = urlParts[3];\n Gleap.startBot(identifier, true);\n }\n\n if (type === \"news\") {\n const identifier = urlParts[3];\n Gleap.openNewsArticle(identifier, true);\n }\n\n if (type === \"checklist\") {\n const identifier = urlParts[3];\n Gleap.startChecklist(identifier, true, urlParts[4]);\n }\n\n if (type === \"tour\") {\n const identifier = urlParts[3];\n Gleap.startProductTour(identifier);\n }\n } catch (e) {\n console.error(\"Failed to handle Gleap link: \", href);\n }\n};\n\nexport {\n GleapNetworkIntercepter,\n GleapAudioManager,\n GleapNotificationManager,\n GleapBannerManager,\n GleapModalManager,\n GleapPreFillManager,\n GleapShortcutListener,\n GleapMarkerManager,\n GleapTranslationManager,\n GleapReplayRecorder,\n GleapFeedback,\n GleapConsoleLogManager,\n GleapCustomActionManager,\n GleapEventManager,\n GleapCustomDataManager,\n GleapFeedbackButtonManager,\n GleapClickListener,\n GleapSession,\n GleapStreamedEvent,\n GleapConfigManager,\n GleapFrameManager,\n GleapMetaDataManager,\n GleapTagManager,\n GleapProductTours,\n handleGleapLink,\n};\n\nexport default Gleap;\n","/**\n * Gleap Checklist Web Component\n *\n * Displays an interactive checklist fetched from the Gleap API.\n * Allows users to view steps, mark them as done, trigger actions,\n * and automatically updates based on external events. Includes localization support\n * via GleapTranslationManager.\n *\n * Waits for a Gleap session to be available before initializing and\n * reloads when the session changes (via 'session-updated' event).\n *\n * @element gleap-checklist\n *\n * @attr {string} checklistId - The outbound ID of the checklist to display. Required.\n * @attr {boolean} [info=true] - Whether to display the info section (title, description, sender).\n * @attr {boolean} [progressbar=true] - Whether to display the progress bar.\n * @attr {boolean} [dark=false] - Apply dark mode styling.\n * @attr {boolean} [floating=false] - When set to \"true\", shows a small bubble that expands on click.\n *\n * @cssprop --color-bg - Background color.\n * @cssprop --color-font-title - Title text color.\n * @cssprop --color-font-text - Body text color.\n * @cssprop --color-font-light - Lighter text color.\n * @cssprop --color-primary - Primary accent color.\n * @cssprop --color-primary-light - Light primary color shade.\n * @cssprop --color-primary-contrast - Text color for primary buttons.\n * @cssprop --color-border - Border color.\n * @cssprop --color-gray-light - Light gray background/border color.\n * @cssprop --color-gray-lighter - Even lighter gray background.\n * @cssprop --color-gray-dark - Darker gray text/icon color.\n * @cssprop --color-success - Success color (e.g., for completed items).\n * @cssprop --color-success-light - Contrast color for success elements.\n * @cssprop --radius-sm - Small border radius.\n * @cssprop --radius-lg - Large border radius.\n * @cssprop --radius-full - Full (pill) border radius.\n * @cssprop --shadow-sm - Small box shadow.\n * @cssprop --shadow-md - Medium box shadow.\n * @cssprop --animation-duration - Duration for animations (e.g., accordion).\n * @cssprop --animation-timing - Timing function for animations.\n */\nimport ChecklistNetworkManager from \"./ChecklistNetworkManager\";\nimport Gleap, {\n GleapConfigManager,\n GleapSession,\n GleapTranslationManager,\n GleapEventManager,\n} from \"./Gleap\";\n\nexport const registerGleapChecklist = () => {\n if (\n typeof customElements !== \"undefined\" &&\n typeof HTMLElement !== \"undefined\" &&\n typeof window !== \"undefined\"\n ) {\n class GleapChecklist extends HTMLElement {\n /** @private {number} */\n activeStep = -1;\n /** @private {object|null} */\n checklistData = null;\n /** @private {boolean} */\n _isInitialLoad = false;\n /** @private {boolean} */\n _initialActiveSet = false;\n /** @private {boolean} Flag indicating if the component has loaded data at least once. */\n _hasLoaded = false;\n /** @private {boolean} Flag indicating if a Gleap session is currently considered active by the component. */\n _isSessionReady = false;\n\n /** @private {Function} */\n _boundHandleChecklistUpdate = this.handleChecklistUpdate.bind(this);\n /** @private {Function} */\n _boundHandleSessionUpdate = this.handleSessionUpdate.bind(this);\n\n constructor() {\n super();\n this.attachShadow({ mode: \"open\" });\n // Ensure NetworkManager instance is created only if Gleap is available\n try {\n if (\n typeof GleapSession !== \"undefined\" &&\n typeof ChecklistNetworkManager !== \"undefined\"\n ) {\n this._networkManager = ChecklistNetworkManager.getInstance();\n } else {\n this._networkManager = null;\n }\n } catch (e) {\n this._networkManager = null;\n }\n // Bind click handlers for floating mode.\n this._boundFloatingLauncherClick =\n this.handleFloatingLauncherClick.bind(this);\n this._boundFloatingCloseClick =\n this.handleFloatingCloseClick.bind(this);\n this._floatingHideTimeout = null;\n }\n\n // --- Observed Attributes ---\n static get observedAttributes() {\n return [\n \"checklistId\",\n \"info\",\n \"progressbar\",\n \"dark\",\n \"floating\",\n \"sharedKey\",\n ];\n }\n\n // --- Lifecycle Callbacks ---\n connectedCallback() {\n window.addEventListener(\n \"checkListUpdate\",\n this._boundHandleChecklistUpdate\n );\n window.addEventListener(\n \"session-updated\",\n this._boundHandleSessionUpdate\n );\n window.addEventListener(\n \"resize\",\n (this._boundResizeHandler = this.handleResize.bind(this))\n );\n this._checkSessionAndLoad();\n }\n\n disconnectedCallback() {\n window.removeEventListener(\n \"checkListUpdate\",\n this._boundHandleChecklistUpdate\n );\n window.removeEventListener(\n \"session-updated\",\n this._boundHandleSessionUpdate\n );\n window.removeEventListener(\"resize\", this._boundResizeHandler);\n this.removeFloatingClickListeners();\n if (this._floatingHideTimeout) {\n clearTimeout(this._floatingHideTimeout);\n this._floatingHideTimeout = null;\n }\n this.checklistData = null;\n this.activeStep = -1;\n this._hasLoaded = false;\n this._isSessionReady = false;\n this._initialActiveSet = false;\n this.renderResponse();\n }\n\n handleResize() {\n this.updateActiveTaskMaxHeight();\n }\n\n attributeChangedCallback(name, oldValue, newValue) {\n if (oldValue !== newValue) {\n if (name === \"checklistId\" && this._isSessionReady) {\n this.loadChecklist();\n } else if (name !== \"checklistId\" && this._hasLoaded) {\n if (this.checklistData) {\n this.renderChecklist(this.checklistData);\n }\n }\n }\n }\n\n // --- Session Handling ---\n _checkSessionAndLoad() {\n const gleapSessionInstance = this._getGleapSessionInstance();\n const hasChecklistId = this.getAttribute(\"checklistId\");\n\n if (gleapSessionInstance.ready && hasChecklistId) {\n this._isSessionReady = true;\n this._networkManager = ChecklistNetworkManager.getInstance();\n this.loadChecklist();\n } else {\n this._isSessionReady = false;\n this._hasLoaded = false;\n this.checklistData = null;\n this.activeStep = -1;\n this._initialActiveSet = false;\n this.renderResponse();\n }\n }\n\n handleSessionUpdate() {\n this._checkSessionAndLoad();\n }\n\n _getGleapSessionInstance() {\n try {\n return typeof GleapSession !== \"undefined\"\n ? GleapSession.getInstance()\n : null;\n } catch (e) {\n return null;\n }\n }\n\n // --- Getters for Configuration ---\n get infoEnabled() {\n const attr = this.getAttribute(\"info\");\n return attr === null || attr.toLowerCase() !== \"false\";\n }\n\n get progressbarEnabled() {\n const attr = this.getAttribute(\"progressbar\");\n return attr === null || attr.toLowerCase() !== \"false\";\n }\n\n get floatingEnabled() {\n return this.getAttribute(\"floating\") === \"true\";\n }\n\n // --- Translation Helpers ---\n _translate(key, defaultValue = \"\") {\n return GleapTranslationManager.translateText(key) || defaultValue;\n }\n\n _translateWithVars(key, vars, defaultValue = \"\") {\n return (\n GleapTranslationManager.translateTextWithVars(key, vars) ||\n defaultValue\n );\n }\n\n // --- SVG Icons ---\n getCheckIcon() {\n return `\n \n `;\n }\n\n // --- Data Loading and Handling ---\n loadChecklist() {\n if (!this._isSessionReady || !this._networkManager) {\n return;\n }\n const checklistId = this.getAttribute(\"checklistId\");\n if (checklistId) {\n this.activeStep = -1;\n this._initialActiveSet = false;\n this.validateChecklist(checklistId);\n } else {\n this.renderResponse();\n this.checklistData = null;\n this._hasLoaded = false;\n }\n }\n\n getQueryParams() {\n const gleapSessionInstance = this._getGleapSessionInstance();\n if (!gleapSessionInstance?.session) {\n return \"\";\n }\n const session = gleapSessionInstance.session;\n let lang = \"en\";\n try {\n if (typeof GleapTranslationManager !== \"undefined\") {\n lang =\n GleapTranslationManager.getInstance().getActiveLanguage() || \"en\";\n }\n } catch (e) {}\n return `gleapId=${session.gleapId || \"\"}&gleapHash=${\n session.gleapHash || \"\"\n }&lang=${lang}`;\n }\n\n makeRequest(method, url, data, callback) {\n const gleapSessionInstance = this._getGleapSessionInstance();\n if (!gleapSessionInstance?.session) {\n const mockXhr = {\n readyState: 4,\n status: 0,\n responseText: \"Session unavailable\",\n _isMock: true,\n };\n callback(mockXhr);\n return;\n }\n const xhr = new XMLHttpRequest();\n xhr.open(method, url);\n try {\n gleapSessionInstance.injectSession(xhr);\n } catch (e) {}\n if (data) {\n xhr.setRequestHeader(\n \"Content-Type\",\n \"application/json;charset=UTF-8\"\n );\n }\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n callback(xhr);\n }\n };\n xhr.onerror = () => {\n callback(xhr);\n };\n xhr.send(data ? JSON.stringify(data) : null);\n }\n\n validateChecklist(outboundId) {\n if (!this._isSessionReady || !this._networkManager) {\n return;\n }\n this.checklistData = null;\n this._hasLoaded = false;\n this.renderResponse();\n const sharedKey = this.getAttribute(\"sharedKey\");\n\n this._networkManager\n .validateChecklist(outboundId, sharedKey)\n .then((internalId) => {\n if (!this.isConnected || !this._isSessionReady || !internalId) {\n return;\n }\n this.fetchChecklist(internalId);\n })\n .catch((error) => {\n this.renderResponse();\n this.checklistData = null;\n this._hasLoaded = false;\n });\n }\n\n fetchChecklist(checklistId) {\n if (!this._isSessionReady || !this._networkManager) {\n return;\n }\n this._isInitialLoad = !this._hasLoaded;\n this._networkManager\n .fetchChecklist(checklistId)\n .then((data) => {\n if (!this.isConnected || !this._isSessionReady || !data) {\n this._hasLoaded = false;\n this.checklistData = null;\n this._checkSessionAndLoad();\n return;\n }\n this.checklistData = data;\n this._hasLoaded = true;\n if (data.status === \"done\") {\n this.renderResponse();\n return;\n }\n if (this._isInitialLoad && !this._initialActiveSet) {\n const steps = data.outbound?.config?.steps || [];\n const completedSteps = data.completedSteps || [];\n const firstIncompleteIndex = steps.findIndex(\n (step) => !completedSteps.includes(step.id)\n );\n this.activeStep =\n firstIncompleteIndex >= 0 ? firstIncompleteIndex : -1;\n if (this.activeStep !== -1) {\n this._initialActiveSet = true;\n }\n }\n this.renderChecklist(this.checklistData);\n \n // Notify external listeners about the initial checklist load\n GleapEventManager.notifyEvent(\"checklist-loaded\", {\n checklistId: this.checklistData.id,\n outboundId: this.checklistData.outbound?.id,\n completedSteps: this.checklistData.completedSteps,\n status: this.checklistData.status,\n data: this.checklistData\n });\n })\n .catch((error) => {\n this.renderResponse();\n this.checklistData = null;\n this._hasLoaded = false;\n });\n }\n\n updateChecklist(id, data) {\n const gleapSessionInstance = this._getGleapSessionInstance();\n if (!gleapSessionInstance?.session) {\n return;\n }\n const apiUrl = gleapSessionInstance.apiUrl;\n if (!apiUrl) {\n return;\n }\n const session = gleapSessionInstance.session;\n const gleapId = session?.gleapId ?? \"\";\n const gleapHash = session?.gleapHash ?? \"\";\n let lang = \"en\";\n try {\n if (typeof GleapTranslationManager !== \"undefined\") {\n lang =\n GleapTranslationManager.getInstance().getActiveLanguage() || \"en\";\n }\n } catch (e) {}\n let url = `${apiUrl}/outbound/checklists/${id}`;\n if (data.checkedStep) {\n url += `/increment/${data.checkedStep}`;\n }\n url += `?gleapId=${gleapId}&gleapHash=${gleapHash}&lang=${lang}`;\n this.makeRequest(\"PUT\", url, data, (xhr) => {\n if (xhr._isMock) return;\n if (!(xhr.status === 200 || xhr.status === 204)) {\n // Update failed\n }\n });\n }\n\n // --- External Update Handling ---\n handleChecklistUpdate(event) {\n if (!this._hasLoaded || !this.checklistData) {\n return;\n }\n const updateData = event.detail;\n if (!updateData || updateData.id !== this.checklistData.id) {\n return;\n }\n const previousCompletedSteps = [\n ...(this.checklistData.completedSteps || []),\n ];\n let dataChanged = false;\n let activeStepCompleted = false;\n const currentlyActiveStepIndex = this.activeStep;\n if (\n updateData.completedSteps &&\n JSON.stringify(updateData.completedSteps) !==\n JSON.stringify(previousCompletedSteps)\n ) {\n this.checklistData.completedSteps = [...updateData.completedSteps];\n dataChanged = true;\n if (currentlyActiveStepIndex !== -1) {\n const activeStepId =\n this.checklistData.outbound?.config?.steps?.[\n currentlyActiveStepIndex\n ]?.id;\n if (\n activeStepId &&\n this.checklistData.completedSteps.includes(activeStepId) &&\n !previousCompletedSteps.includes(activeStepId)\n ) {\n activeStepCompleted = true;\n }\n }\n }\n if (\n updateData.status &&\n updateData.status !== this.checklistData.status\n ) {\n this.checklistData.status = updateData.status;\n dataChanged = true;\n }\n if (activeStepCompleted) {\n const steps = this.checklistData.outbound?.config?.steps || [];\n let nextActiveStep = -1;\n for (let i = currentlyActiveStepIndex + 1; i < steps.length; i++) {\n if (!this.checklistData.completedSteps.includes(steps[i].id)) {\n nextActiveStep = i;\n break;\n }\n }\n if (this.activeStep !== nextActiveStep) {\n this.setActiveStep(nextActiveStep);\n }\n dataChanged = true;\n }\n if (dataChanged) {\n this.renderChecklist(this.checklistData);\n \n // Notify external listeners about the checklist update\n GleapEventManager.notifyEvent(\"checklist-update\", {\n checklistId: this.checklistData.id,\n outboundId: this.checklistData.outbound?.id,\n completedSteps: this.checklistData.completedSteps,\n status: this.checklistData.status,\n data: this.checklistData\n });\n }\n }\n\n // --- Floating (Click-based) Listeners ---\n handleFloatingLauncherClick(event) {\n event.stopPropagation();\n\n if (this.checklistData.status === \"done\") {\n return;\n }\n\n const tasks = this.shadowRoot.querySelector(\".checklist-tasks\");\n if (tasks) {\n tasks.style.display =\n tasks.style.display === \"block\" ? \"none\" : \"block\";\n }\n }\n\n handleFloatingCloseClick(event) {\n event.stopPropagation();\n const tasks = this.shadowRoot.querySelector(\".checklist-tasks\");\n if (tasks) {\n tasks.style.display = \"none\";\n }\n }\n\n addFloatingClickListeners() {\n const launcher = this.shadowRoot.querySelector(\n \".checklist-floating-launcher\"\n );\n if (launcher) {\n launcher.addEventListener(\"click\", this._boundFloatingLauncherClick);\n }\n const header = this.shadowRoot.querySelector(\n \".checklist-floating-header\"\n );\n if (header) {\n header.addEventListener(\"click\", this._boundFloatingCloseClick);\n }\n }\n\n removeFloatingClickListeners() {\n const launcher = this.shadowRoot.querySelector(\n \".checklist-floating-launcher\"\n );\n if (launcher) {\n launcher.removeEventListener(\n \"click\",\n this._boundFloatingLauncherClick\n );\n }\n const header = this.shadowRoot.querySelector(\n \".checklist-floating-header\"\n );\n if (header) {\n header.removeEventListener(\"click\", this._boundFloatingCloseClick);\n }\n }\n\n // --- Rendering Logic ---\n renderResponse() {\n this.shadowRoot.innerHTML = \"\";\n }\n\n /**\n * Renders the floating launcher. When called with the default class (\"checklist-floating\")\n * it shows a chevron icon; when called with \"checklist-floating-header\" it shows a close icon.\n */\n renderFloatingLauncher(\n outbound,\n className = \"checklist-floating\",\n renderDoneState = false\n ) {\n const steps = outbound.config?.steps || [];\n const completedSteps = this.checklistData?.completedSteps || [];\n let progress = 0;\n if (this.progressbarEnabled && steps.length > 0) {\n const totalSteps = steps.length;\n const doneSteps = completedSteps.length;\n progress = totalSteps > 0 ? (doneSteps / totalSteps) * 100 : 0;\n }\n\n // Determine the next incomplete step\n const nextIncompleteStep = steps.find(\n (step) => !completedSteps.includes(step.id)\n );\n let titleText =\n steps.length > 0\n ? nextIncompleteStep\n ? nextIncompleteStep.title ||\n this._translateWithVars(\n \"stepDefaultTitle\",\n { index: steps.indexOf(nextIncompleteStep) + 1 },\n `Step ${steps.indexOf(nextIncompleteStep) + 1}`\n )\n : \"\"\n : outbound.subject || \"\";\n\n let subtitleText =\n steps.length > 0\n ? nextIncompleteStep\n ? nextIncompleteStep.description || \"\"\n : \"\"\n : outbound.message || \"\";\n\n if (renderDoneState) {\n titleText = outbound.config?.successTitle || \"\";\n subtitleText = outbound.config?.successMessage || \"\";\n progress = 100;\n }\n\n const circumference = 2 * Math.PI * 7;\n const computedOffset = circumference - (progress / 100) * circumference;\n\n const isHeader = className === \"checklist-floating-header\";\n const icon = isHeader\n ? `\n \n \n `\n : `\n \n `;\n\n return `\n
\n
\n
\n \n \n \n \n
\n
${titleText}
\n ${\n renderDoneState\n ? \"\"\n : `${icon}`\n }\n
\n
${subtitleText}
\n
\n `;\n }\n\n renderInfoSection(outbound) {\n if (!this.infoEnabled || !outbound) return \"\";\n const subject =\n outbound.subject ||\n this._translate(\"checklistDefaultTitle\", \"Checklist\");\n const message = outbound.message || \"\";\n let senderHtml = \"\";\n if (outbound.sender?.profileImageUrl) {\n senderHtml = `\n
\n \"${\n\n ${outbound.sender.firstName || \"\"}\n
`;\n }\n return `\n
\n ${\n subject\n ? `
${subject}
`\n : \"\"\n }\n ${\n message\n ? `
${message}
`\n : \"\"\n }\n ${senderHtml}\n
`;\n }\n\n renderProgressSection(steps = [], completedSteps = []) {\n if (!this.progressbarEnabled || !steps.length) return \"\";\n const totalSteps = steps.length;\n const doneSteps = completedSteps.length;\n const progress = totalSteps > 0 ? (doneSteps / totalSteps) * 100 : 0;\n let duration = 0;\n steps.forEach((step) => {\n if (!completedSteps.includes(step.id) && step.duration > 0) {\n duration += step.duration;\n }\n });\n const progressLabel = this._translateWithVars(\n \"taskProgress\",\n { a: doneSteps, b: totalSteps },\n `${doneSteps} of ${totalSteps} done`\n );\n const durationLabel =\n duration > 0\n ? this._translateWithVars(\n \"aboutMinutes\",\n { a: duration },\n `About ${duration} min left`\n )\n : \"\";\n return `\n
\n
${progressLabel}
\n ${\n durationLabel\n ? `
${durationLabel}
`\n : \"\"\n }\n
\n
\n
\n
`;\n }\n\n renderTasks(steps = [], completedSteps = []) {\n if (!steps || steps.length === 0)\n return `

${this._translate(\n \"noStepsDefined\",\n \"No steps defined.\"\n )}

`;\n return steps\n .map((step, index) => {\n const isTaskDone = completedSteps.includes(step.id);\n const isActive = this.activeStep === index;\n const badge = isTaskDone\n ? `${this.getCheckIcon()}`\n : `${\n index + 1\n }`;\n const stepTitle =\n step.title ||\n this._translateWithVars(\n \"stepDefaultTitle\",\n { index: index + 1 },\n `Step ${index + 1}`\n );\n const stepDescription = step.description || \"\";\n const actionButtonText =\n step.actionTitle ||\n this._translate(\"actionDefaultTitle\", \"Action\");\n const actionHtml =\n step.action && step.action !== \"none\"\n ? `
\n \n
`\n : \"\";\n const markDoneLabel = this._translate(\"markAsDone\", \"Mark as done\");\n const markDoneHtml =\n step.allowMarkDone && !isTaskDone\n ? `
\n ${this.getCheckIcon()}\n
${markDoneLabel}
\n
`\n : \"\";\n const taskClasses = [\n \"checklist-task\",\n isTaskDone ? \"checklist-task--done\" : \"\",\n isActive ? \"checklist-task--active\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n return `\n
\n
\n ${badge}\n
${stepTitle}
\n \n \n \n \n \n
\n
\n
\n ${\n stepDescription\n ? `
${stepDescription}
`\n : \"\"\n }\n ${actionHtml}\n ${markDoneHtml}\n
\n
\n
`;\n })\n .join(\"\");\n }\n\n renderChecklist(data) {\n if (!this._hasLoaded || !data || !data.outbound) {\n this._checkSessionAndLoad();\n return;\n }\n const { outbound } = data;\n const steps = outbound.config?.steps || [];\n const completedSteps = data.completedSteps || [];\n const isDone =\n data.status === \"done\" ||\n (steps.length > 0 && completedSteps.length >= steps.length);\n let content = \"\";\n if (isDone) {\n const successTitle = outbound.config?.successTitle || \"\";\n const successMessage = outbound.config?.successMessage || \"\";\n if (this.floatingEnabled) {\n content = this.renderFloatingLauncher(\n outbound,\n \"checklist-floating-launcher\",\n true\n );\n } else {\n content = `\n
\n
\n ${this.getCheckIcon()}\n
\n
${successTitle}
\n
${successMessage}
\n
`;\n }\n if (this.activeStep !== -1) this.activeStep = -1;\n } else {\n content = `\n
\n ${!this.floatingEnabled ? this.renderInfoSection(outbound) : \"\"}\n ${\n !this.floatingEnabled\n ? this.renderProgressSection(steps, completedSteps)\n : \"\"\n }\n ${\n this.floatingEnabled\n ? this.renderFloatingLauncher(outbound)\n : \"\"\n }\n
\n ${\n this.floatingEnabled\n ? this.renderFloatingLauncher(\n outbound,\n \"checklist-floating-header\"\n )\n : \"\"\n }\n ${this.renderTasks(steps, completedSteps)}\n
\n
`;\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const primaryColor = flowConfig.color ? flowConfig.color : \"#485BFF\";\n\n const styles = `\n \n `;\n this.shadowRoot.innerHTML = styles + content;\n this.addTaskEventListeners();\n if (this.floatingEnabled) {\n this.addFloatingClickListeners();\n }\n if (this.activeStep !== -1) {\n this.toggleTask(this.activeStep, true);\n }\n }\n\n updateActiveTaskMaxHeight() {\n if (this.activeStep !== -1) {\n const taskBodyInner = this.shadowRoot.querySelector(\n `.checklist-task[data-task-index=\"${this.activeStep}\"] .checklist-task-body-inner`\n );\n const container = this.shadowRoot.querySelector(\n `.checklist-task[data-task-index=\"${this.activeStep}\"] .checklist-task-body`\n );\n if (taskBodyInner && container) {\n const height = taskBodyInner.offsetHeight;\n container.style.setProperty(\n \"--task-body-active-height\",\n `${height}px`\n );\n }\n }\n }\n\n // --- Event Listener Setup ---\n addTaskEventListeners() {\n const tasks = this.shadowRoot.querySelectorAll(\".checklist-task\");\n tasks.forEach((task) => {\n const header = task.querySelector(\".checklist-task-header\");\n const index = parseInt(task.getAttribute(\"data-task-index\"), 10);\n if (header) {\n header.addEventListener(\"click\", () => {\n const newActiveStep = this.activeStep === index ? -1 : index;\n this.setActiveStep(newActiveStep);\n });\n }\n const markDoneBtn = task.querySelector(\n \".checklist-task-body-markdone\"\n );\n if (markDoneBtn) {\n markDoneBtn.addEventListener(\"click\", (e) => {\n e.stopPropagation();\n if (!this.checklistData?.outbound?.config?.steps) return;\n const step = this.checklistData.outbound.config.steps[index];\n if (!step) return;\n const previouslyActiveStep = this.activeStep;\n if (!this.checklistData.completedSteps)\n this.checklistData.completedSteps = [];\n if (!this.checklistData.completedSteps.includes(step.id)) {\n this.checklistData.completedSteps.push(step.id);\n \n // Notify external listeners about the step completion\n GleapEventManager.notifyEvent(\"checklist-step-completed\", {\n checklistId: this.checklistData.id,\n outboundId: this.checklistData.outbound?.id,\n stepId: step.id,\n stepIndex: index,\n step: step,\n completedSteps: this.checklistData.completedSteps,\n status: this.checklistData.status,\n data: this.checklistData\n });\n const allSteps = this.checklistData.outbound.config.steps;\n let nextActiveStep = -1;\n if (previouslyActiveStep === index) {\n for (let i = index + 1; i < allSteps.length; i++) {\n if (\n !this.checklistData.completedSteps.includes(\n allSteps[i].id\n )\n ) {\n nextActiveStep = i;\n break;\n }\n }\n this.setActiveStep(nextActiveStep);\n }\n // Preserve the state of the floating modal.\n setTimeout(() => {\n let isModalOpen = false;\n if (this.floatingEnabled) {\n const tasksModal =\n this.shadowRoot.querySelector(\".checklist-tasks\");\n isModalOpen =\n tasksModal && tasksModal.style.display === \"block\";\n }\n this.renderChecklist(this.checklistData);\n if (this.floatingEnabled && isModalOpen) {\n const tasksModal =\n this.shadowRoot.querySelector(\".checklist-tasks\");\n if (tasksModal) tasksModal.style.display = \"block\";\n }\n }, 300);\n const updateData = { checkedStep: step.id };\n if (\n allSteps.length > 0 &&\n this.checklistData.completedSteps.length >= allSteps.length\n ) {\n this.checklistData.status = \"done\";\n updateData.status = \"done\";\n \n // Notify external listeners about the checklist completion\n GleapEventManager.notifyEvent(\"checklist-completed\", {\n checklistId: this.checklistData.id,\n outboundId: this.checklistData.outbound?.id,\n completedSteps: this.checklistData.completedSteps,\n status: this.checklistData.status,\n data: this.checklistData\n });\n }\n this.updateChecklist(this.checklistData.id, updateData);\n }\n });\n }\n const actionBtn = task.querySelector(\n \".checklist-task-body-action .action-button\"\n );\n if (actionBtn) {\n actionBtn.addEventListener(\"click\", (e) => {\n e.stopPropagation();\n if (\n !this.checklistData?.outbound?.config?.steps ||\n typeof Gleap === \"undefined\"\n )\n return;\n const step = this.checklistData.outbound.config.steps[index];\n if (!step || !step.action || step.action === \"none\") return;\n try {\n if (step.action === \"BOT\") Gleap.startBot(step.botId);\n else if (step.action === \"CUSTOM_ACTION\")\n Gleap.triggerCustomAction(step.actionBody);\n else if (step.action === \"REDIRECT_URL\") {\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n Gleap.openURL(step.actionBody, !!step.actionOpenInNewTab);\n } else if (step.action === \"FEEDBACK_FLOW\")\n Gleap.startFeedbackFlow(step.formId);\n else if (step.action === \"NEWS_ARTICLE\")\n Gleap.openNewsArticle(step.articleId);\n else if (step.action === \"HELP_ARTICLE\")\n Gleap.openHelpCenterArticle(step.articleId);\n else if (step.action === \"CHECKLIST\")\n Gleap.startChecklist(step.outboundId, true, step?.sharedKey);\n } catch (gleapError) {}\n });\n }\n });\n }\n\n // --- Animation and State Management ---\n setActiveStep(index) {\n const previousActiveStep = this.activeStep;\n this.activeStep = index;\n const tasksToToggle = [];\n if (\n previousActiveStep !== -1 &&\n previousActiveStep !== this.activeStep\n ) {\n tasksToToggle.push({ index: previousActiveStep, open: false });\n }\n if (this.activeStep !== -1 && this.activeStep !== previousActiveStep) {\n tasksToToggle.push({ index: this.activeStep, open: true });\n }\n tasksToToggle.forEach(({ index, open }) => {\n this.toggleTask(index, open);\n });\n }\n\n toggleTask(index, forceOpen = null) {\n const taskElement = this.shadowRoot.querySelector(\n `.checklist-task[data-task-index=\"${index}\"]`\n );\n if (!taskElement) return;\n const header = taskElement.querySelector(\".checklist-task-header\");\n if (!header) return;\n const isOpen = taskElement.classList.contains(\"checklist-task--active\");\n const shouldOpen = forceOpen !== null ? forceOpen : !isOpen;\n if (shouldOpen && !isOpen) {\n taskElement.classList.add(\"checklist-task--active\");\n header.setAttribute(\"aria-expanded\", \"true\");\n const taskBodyInner = taskElement.querySelector(\n \".checklist-task-body-inner\"\n );\n if (taskBodyInner) {\n const height = taskBodyInner.offsetHeight;\n const taskBody = taskElement.querySelector(\".checklist-task-body\");\n if (taskBody) {\n taskBody.style.setProperty(\n \"--task-body-active-height\",\n `${height}px`\n );\n }\n }\n } else if (!shouldOpen && isOpen) {\n taskElement.classList.remove(\"checklist-task--active\");\n header.setAttribute(\"aria-expanded\", \"false\");\n }\n }\n }\n\n if (\n typeof customElements !== \"undefined\" &&\n !customElements.get(\"gleap-checklist\")\n ) {\n customElements.define(\"gleap-checklist\", GleapChecklist);\n }\n }\n};\n","import Gleap from \"./Gleap\";\n\nexport default Gleap;\n"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","GleapFeedbackButtonManager","_classCallCheck","_defineProperty","value","this","instance","feedbackButton","remove","buttonHidden","lastButtonIcon","injectedFeedbackButton","show","getInstance","updateFeedbackButtonState","GleapNotificationManager","updateContainerStyle","frameManager","GleapFrameManager","isOpened","hideWidget","setAppMode","showWidget","_this","elem","document","createElement","addEventListener","feedbackButtonPressed","body","appendChild","count","notificationBadge","querySelector","notificationHiddenClass","classList","innerText","add","updateFeedbackButtonText","injectFeedbackButton","flowConfig","GleapConfigManager","getFlowConfig","feedbackButtonPosition","FEEDBACK_BUTTON_CLASSIC","FEEDBACK_BUTTON_CLASSIC_BOTTOM","FEEDBACK_BUTTON_CLASSIC_LEFT","widgetButtonText","buttonIcon","buttonLogo","concat","loadIcon","className","setAttribute","GleapTranslationManager","isRTLLayout","innerHTML","hideButton","FEEDBACK_BUTTON_NONE","FEEDBACK_BUTTON_BOTTOM_LEFT","appMode","hideForGuests","GleapSession","isUser","calculateShadeColor","col","amt","replace","length","_col$match2","_slicedToArray","match","r","g","b","_ref","parseInt","Math","max","min","toString","rr","gg","bb","calculateContrast","hex","substr","name","color","GleapNetworkIntercepter","Date","now","loadAllResources","contentType","toLocaleLowerCase","supportedContentTypes","i","includes","requests","JSON","parse","stringify","values","externalRequests","filters","request","headers","j","payload","payloadObj","e","response","responseText","data","window","performance","resources","getEntriesByType","resource","indexOf","initiatorType","find","url","push","type","date","startTimestamp","startTime","duration","round","exp","blacklist","defaultBlacklist","filter","maxRequests","stopped","keys","keysToRemove","slice","bbRequestId","startDate","getTime","text","size","TextEncoder","encode","encodeURI","s","split","Blob","getTextContentSize","undefined","TextDecoder","_typeof","ArrayBuffer","isView","decode","payloadText","cleanupPayload","cleanupContentSize","initialized","self","interceptNetworkRequests","onFetch","params","fromEntries","entries","method","preparePayload","cleanRequests","onFetchLoad","req","status","statusText","calcRequestTime","isContentTypeSupported","then","err","onFetchFailed","onOpen","args","onSend","requestHeaders","onError","currentTarget","onLoad","target","responseType","callback","originalFetch","open","XMLHttpRequest","send","gleapSetRequestHeader","setRequestHeader","header","requestId","arguments","bind","apply","fetch","clone","blob","Promise","resolve","reject","fr","FileReader","onload","evt","result","onerror","readAsText","resizeImage","base64Str","maxWidth","maxHeight","isJPEG","img","Image","src","canvas","MAX_WIDTH","MAX_HEIGHT","width","height","getContext","drawImage","toDataURL","isMobile","test","navigator","userAgent","gleapDataParser","String","truncateString","str","num","removeSubDomain","v","parts","is2ndLevelDomain","secondLevel","join","loadFromGleapCache","cachedData","localStorage","getItem","saveToGleapCache","k","setItem","removeItem","runFunctionWhenDomIsReady","readyState","RequestStatus","ChecklistNetworkManager","Map","validationCache","clear","fetchCache","validationRequests","fetchRequests","gleapSessionInstance","session","lang","getActiveLanguage","gleapId","gleapHash","apiUrl","xhr","injectSession","onreadystatechange","responseData","error","outboundId","sharedKey","cacheKey","_createCacheKey","cachedResult","internalId","has","_getApiUrl","Error","set","_getQueryParams","requestPromise","_makeRequest","id","_this2","floor","createCoords","x","y","oppositeSideMap","left","right","bottom","top","oppositeAlignmentMap","start","end","clamp","param","placement","axis","getAxisLength","getAlignmentAxis","alignment","getOppositePlacement","side","padding","expandPaddingObject","rect","computeCoordsFromPlacement","rtl","reference","floating","sideAxis","alignmentAxis","alignLength","isVertical","commonX","commonY","commonAlign","coords","async","detectOverflow","state","options","_await$platform$isEle","platform","rects","elements","strategy","boundary","rootBoundary","elementContext","altBoundary","paddingObject","element","clippingClientRect","getClippingRect","isElement","contextElement","getDocumentElement","offsetParent","getOffsetParent","offsetScale","getScale","elementClientRect","convertOffsetParentRelativeRectToViewportRelativeRect","offset","fn","_middlewareData$offse","_middlewareData$arrow","middlewareData","diffCoords","isRTL","mainAxisMulti","crossAxisMulti","rawValue","mainAxis","crossAxis","convertValueToCoords","arrow","alignmentOffset","getNodeName","node","isNode","nodeName","toLowerCase","getWindow","_node$ownerDocument","ownerDocument","defaultView","documentElement","Node","Element","isHTMLElement","HTMLElement","isShadowRoot","ShadowRoot","isOverflowElement","overflow","overflowX","overflowY","display","isTableElement","isContainingBlock","webkit","isWebKit","css","transform","perspective","containerType","backdropFilter","some","willChange","contain","CSS","supports","isLastTraversableNode","getComputedStyle","getNodeScroll","scrollLeft","scrollTop","pageXOffset","pageYOffset","getParentNode","assignedSlot","parentNode","host","getNearestOverflowAncestor","getOverflowAncestors","list","traverseIframes","_node$ownerDocument2","scrollableAncestor","isBody","win","visualViewport","frameElement","getCssDimensions","parseFloat","hasOffset","offsetWidth","offsetHeight","shouldFallback","$","unwrapElement","domElement","getBoundingClientRect","Number","isFinite","noOffsets","getVisualOffsets","offsetLeft","offsetTop","includeScale","isFixedStrategy","clientRect","scale","visualOffsets","isFixed","floatingOffsetParent","shouldAddVisualOffsets","offsetWin","currentWin","currentIFrame","iframeScale","iframeRect","clientLeft","paddingLeft","clientTop","paddingTop","topLayerSelectors","isTopLayer","selector","matches","getWindowScrollBarX","getClientRectFromClippingAncestor","clippingAncestor","html","clientWidth","clientHeight","visualViewportBased","getViewportRect","scroll","scrollWidth","scrollHeight","direction","getDocumentRect","getInnerBoundingClientRect","hasFixedPositionAncestor","stopNode","position","getRectRelativeToOffsetParent","isOffsetParentAnElement","offsets","offsetRect","getTrueOffsetParent","polyfill","currentNode","getContainingBlock","topLayer","elementClippingAncestors","cache","el","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","ancestor","getClippingElementAncestors","_c","clippingAncestors","firstClippingAncestor","clippingRect","reduce","accRect","getElementRects","getOffsetParentFn","getDimensionsFn","getDimensions","getClientRects","Array","from","autoUpdate","update","ancestorScroll","ancestorResize","elementResize","ResizeObserver","layoutShift","IntersectionObserver","animationFrame","referenceEl","ancestors","forEach","passive","cleanupIo","onMove","timeoutId","io","root","cleanup","_io","clearTimeout","disconnect","refresh","skip","threshold","rootMargin","isFirstUpdate","handleObserve","ratio","intersectionRatio","setTimeout","observe","observeMove","frameId","reobserveFrame","resizeObserver","firstEntry","unobserve","cancelAnimationFrame","requestAnimationFrame","_resizeObserver","prevRefRect","frameLoop","nextRefRect","_resizeObserver2","removeEventListener","checkMainAxis","checkCrossAxis","limiter","detectOverflowOptions","mainAxisCoord","crossAxisCoord","maxSide","limitedCoords","_middlewareData$flip","initialPlacement","fallbackPlacements","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","flipAlignment","isBasePlacement","oppositePlacement","getExpandedPlacements","isStart","lr","rl","tb","bt","getSideList","map","getOppositeAxisPlacements","placements","overflows","overflowsData","flip","sides","mainAlignmentSide","every","_middlewareData$flip2","_overflowsData$filter","nextIndex","index","nextPlacement","reset","resetPlacement","d","sort","a","_overflowsData$map$so","acc","arrowDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","min$1","center","shouldAddOffset","centerOffset","mergedOptions","platformWithCache","config","middleware","validMiddleware","Boolean","statefulPlacement","resetCount","nextX","nextY","computePosition","checkPageFilter","currentUrl","pageFilter","pageFilterType","removeTrailingSlash","isMatchingUrl","regex","regexPattern","RegExp","generateRegex","matched","startsWith","endsWith","GleapTooltipManager","WeakMap","tooltip","hasAttribute","nextId","tooltipElem","mode","hotspotContainer","canEmbed","firstChild","insertBefore","nextSibling","hotspot","icon","animated","repositionHotspot","elementToTooltipMap","floatingUIInstance","createTooltip","elementToFloatingUIMap","filteredTooltips","getFilteredTooltips","checkForTooltips","tooltips","location","href","page","pageType","querySelectorAll","linkTooltip","sessionInstance","http","sdkKey","console","updateFilteredTooltips","nodeType","ELEMENT_NODE","checkNodeTooltip","childNodes","childNode","processNodeInsertion","_this3","_this4","time","timeout","handleResizeThrottled","updateHotspotPositions","context","_toConsumableArray","observer","MutationObserver","mutations","lastUrl","mutation","addedNodes","removedNodes","floatingUI","childList","subtree","attributes","attributeFilter","_this5","tooltipText","tooltipData","hideTimeout","arrowEl","posX","shift","assign","style","arrowPos","visibility","opacity","pointerEvents","hide","voidElements","Set","tagName","resizeListener","anchor","removeAttribute","tooltipId","getAttribute","posY","offsetX","offsetY","elementRect","range","createRange","selectNodeContents","fixedWidth","anchorRect","tooltipSize","email","userId","phone","onSessionReady","ready","onSessionReadyListener","attemp","retry","GleapEventManager","notifyEvent","useCookies","cookie","eraseGleapCookie","sendMessage","clearAllNotifications","setNotificationCount","GleapBannerManager","removeBannerUI","GleapModalManager","hideModal","isNaN","newTimeout","pow","startSession","_this$session","sessionChanged","days","expires","setTime","toUTCString","setGleapCookie","encodeURIComponent","clearCache","GleapStreamedEvent","restart","tooltipManager","destroy","load","dispatchEvent","CustomEvent","notifySessionReady","sessionCookie","nameEQ","ca","c","charAt","substring","getGleapCookie","sessionData","decodeURIComponent","validateSession","cachedSession","clearSession","userData","checkIfSessionDataNeedsUpdate","userDataKeys","userDataKey","customData","setOnSessionReady","_objectSpread","sdkVersion","SDK_VERSION","ws","userHash","checkIfSessionNeedsUpdate","dataToSend","tourId","tourData","_window","passedPageFilter","sendSessionUpdate","streamEvents","mainLoopTimeout","runEventStreamLoop","streamingEvents","errorCount","streamedEventArray","socket","OPEN","sessionDuration","GleapMetaDataManager","getSessionDuration","events","opened","handleOpenBound","handleOpen","handleErrorBound","handleError","handleMessageBound","handleMessage","handleCloseBound","handleClose","connectionTimeout","pingWS","clearInterval","close","cleanupWebSocket","connectedWebSocketGleapId","WebSocket","wsApiUrl","event","setInterval","processMessage","initWebSocket","message","_message$data","u","listOfActionsWhereIgnoreOpened","filteredActions","action","_action$actionType","actionType","Gleap","performActions","detail","eventArray","cleanupMainLoop","trackInitialEvents","startPageListener","resetErrorCountLoop","logEvent","logCurrentPage","disablePageTracking","log","eventMaxLength","parseIntWithDefault","val","def","parsed","onConfigLoaded","onConfigLoadedListener","aiTools","sendConfigUpdate","cachedConfig","applyConfig","loadConfigFromServer","setStyles","headerColor","buttonColor","backgroundColor","borderRadius","buttonX","buttonY","applyStylesFromConfig","enableWebReplays","GleapReplayRecorder","stop","enableNetworkLogs","setLoadAllResources","sendNetworkResources","networkLogPropsToIgnore","setFilters","networkLogBlacklist","setBlacklist","updateRTLSupport","enableShortcuts","notifyConfigLoaded","_regeneratorRuntime","t","n","Symbol","iterator","asyncIterator","toStringTag","define","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","arg","h","l","f","GeneratorFunction","GeneratorFunctionPrototype","p","getPrototypeOf","defineIteratorMethods","_invoke","AsyncIterator","invoke","__await","callInvokeWithMethodAndArg","done","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","displayName","isGeneratorFunction","constructor","mark","setPrototypeOf","__proto__","awrap","reverse","pop","prev","rval","handle","complete","finish","delegateYield","asyncGeneratorStep","gen","_next","_throw","info","_asyncToGenerator","documentToHTML","doctype","publicId","systemId","outerHTML","loadCSSUrlResources","basePath","remote","asyncFn","matchedData","matchedUrl","replaceAll","resourcePath","URL","fetchCSSResource","resourceData","promises","_len","_key","promise","all","reader","onloadend","readAsDataURL","fetchItemResource","isBlacklisted","warn","progressResource","replaceStyleNodes","styleSheet","cssTextContent","styleId","cloneTargetNode","ownerNode","replacementNode","head","styleNode","cssText","createTextNode","linkNode","rel","media","getTextContentFromStyleSheet","cssRules","rules","cssRuleItem","downloadAllCSSUrlResources","basePathURL","_loop","styleSheets","mediaText","baseTags","getElementsByTagName","origin","lastIndexOf","replacedStyle","styletext","stylesheet","results","prepareRemoteData","dom","imgItems","imgItemsPromises","item","downloadAllImages","handleAdoptedStyleSheets","doc","shadowNodeId","adoptedStyleSheets","shadowStyleNode","firstElementChild","extractFinalCSSState","getAnimations","animations","finalCSSState","animation","_animation$effect","keyframes","effect","getKeyframes","finalKeyframe","property","deepClone","_callee3","cloneNode","fragment","clonedHead","_context3","_ref2","_callee2","parent","shadowRoot","walkTree","webAnimations","boundingRect","resizedImage","_boundingRect","rootShadowNodeId","_context2","_ref3","_callee","nextn","nextp","innerShadowRoot","_context","nextElementSibling","_x5","_x6","_x7","HTMLCanvasElement","t0","toUpperCase","contains","checked","_x2","_x3","_x4","createDocumentFragment","_x","prepareScreenshotData","_ref4","_callee4","styleTags","linkImportElems","referenceNode","scriptElems","existingBasePath","baseElems","baseUrl","newBaseUrl","baseNode","dialogElems","bbElems","_context4","innerWidth","innerHeight","_x8","_x9","_createForOfIteratorHelper","allowArrayLike","it","isArray","minLen","_arrayLikeToArray","_unsupportedIterableToArray","F","_e","normalCompletion","didErr","step","_e2","arr","len","arr2","_defineProperties","props","descriptor","_toPropertyKey","toPrimitive","_toPrimitive","GleapScreenRecorder","rerender","permissionErrorText","Constructor","MAX_RECORD_TIME","mediaDevices","getDisplayMedia","available","RERENDER_DELAY","protoProps","staticProps","_uploadScreenRecording","_startAudioRecording","_startScreenRecording","_step","_iterator","MIME_TYPES","MediaRecorder","isTypeSupported","stream","getTracks","track","_","tracks","validTracks","MediaStream","videoTracks","getVideoTracks","audioTracks","getAudioTracks","displayStream","composed","isRecording","video","ideal","screen","frameRate","IDEAL_FRAME_RATE","MAX_FRAME_RATE","displaySurface","audio","selfBrowserSurface","_displayStream","_displayVideoTrack","getFirstVideoTrack","audioMuted","startAudioRecording","audioAvailable","createMediaStream","handleRecord","alert","mediaRecorder","recordingTimer","stopStreamTracks","_micStream","voiceStream","micTrack","_composed","getUserMedia","echoCancellation","noiseSuppression","autoGainControl","getFirstAudioTrack","enabled","videoEl","SELECTORS","PREVIEW_VIDEO","file","recordedChunks","mimeType","getSupportedMimeType","recordTime","timerLabel","TIMER_LABEL","remainingTime","maxRecordTime","formatTime","stopScreenRecording","TIMER_UPDATE_INTERVAL","ondataavailable","videoTrack","onended","prepareRecording","onstop","CHUNK_INTERVAL","completeBlob","extension","File","previewVideoElement","createObjectURL","screenRecordingData","formData","FormData","append","fileUrl","GleapFeedback","priority","isSilent","excludeData","spamToken","gleapInstance","GleapCustomDataManager","getCustomData","metaData","getMetaData","consoleLog","GleapConsoleLogManager","getLogs","networkLogs","getRequests","customEventLog","getEventArray","ticketAttributes","getTicketAttributes","dataPromises","webReplay","getGlobalDataItem","isLiveSite","recordingUrlPromise","uploadScreenRecording","recordingUrl","screenRecordingUrl","screenshot","screenshotDataPromise","isLiveMode","screenshotData","snapshotPosition","feedbackData","outbound","tags","GleapTagManager","getTags","keysToExclude","keyToExclude","takeSnapshot","getData","feedback","newTab","newWindow","focus","cmp_block_ignoredomains","injectedFrame","autoWhiteListCookieManager","frameUrl","gleapFrameContainer","gleapFrame","updateFrameStyle","showFrameContainer","closeElement","surveyStyle","extendedStyle","surveyFullStyle","classicStyle","classicStyleLeft","modernStyleLeft","noButtonStyleLeft","allStyles","styleToApply","startCommunication","appHeight","setProperty","handler","urlHandler","innerContainer","escListener","widgetOpened","markerManager","showLoader","loadingClass","disableBGFade","disableBGGradient","updateUI","workThroughQueue","setGlobalDataItem","scrollX","scrollY","updateWidgetStatus","registerEscListener","isSurvey","updateNotificationBadge","runWidgetShouldOpenCallback","injectFrame","isWidgetOpen","resetRoutes","hideMarkerManager","reloadNotificationsFromCache","unregisterEscListener","queue","comReady","contentWindow","postMessage","getSession","getAiTools","overrideLanguage","getOverrideLanguage","GleapMarkerManager","success","workQueue","_this6","addMessageListener","GleapAudioManager","ping","showImage","ticketData","frameHeight","_data$data","startProductTour","GleapCustomActionManager","triggerCustomAction","shareToken","feedbackType","sendFeedback","reportedBy","trackEvent","showDrawingScreen","bannerUrl","listeners","appVersionCode","appBuildNumber","sessionStart","nameOffset","verOffset","ix","nAgt","browserName","appName","fullVersion","appVersion","majorVersion","OSName","browser","systemName","buildVersionNumber","releaseVersionNumber","devicePixelRatio","screenWidth","screenHeight","language","userLanguage","mobile","sdkType","environment","logArray","disabled","originalConsoleLog","logLevel","logMaxLength","addLog","origConsole","addLogWithArgs","GleapClickListener","protocol","preventDefault","handleGleapLink","elementId","elementClass","elemId","elemClass","elementTag","htmlPre","htmlPost","getDOMElementDescription","takeCurrentReplay","eventListeners","eventListener","eventName","customAction","customActionCallbacks","_a","__defProp","__publicField","__defNormalProp","__defProp$1","__publicField$1","__defNormalProp$1","NodeType$3","NodeType2","testableAccessors$1","testableMethods$1","untaintedBasePrototype$1","isAngularZonePresent$1","globalThis","Zone","getUntaintedPrototype$1","defaultObj","defaultPrototype","accessorNames","isUntaintedAccessors","accessor","_a2","_b","getOwnPropertyDescriptor","methodNames","isUntaintedMethods","iframeEl","untaintedObject","removeChild","untaintedAccessorCache$1","getUntaintedAccessor$1","untaintedPrototype","untaintedAccessor","untaintedMethodCache$1","getUntaintedMethod$1","untaintedMethod","index$1","n2","parentElement","textContent","other","getRootNode","selectors","mutationObserver","hostEl","isNativeShadowDom","shadowRoot2","stringifyStylesheet","s2","rules2","sheetHref","stringifiedRules","rule2","stringifyRule","isCSSImportRule","importStringified","statement","layerName","supportsText","escapeImportStatement","absolutifyURLs","ruleStringified","isCSSStyleRule","selectorText","cssStringified","fixSafariColons","Mirror","getId","getMeta","getNode","idNodeMap","getIds","nodeMetaMap","removeNodeFromMap","delete","hasNode","node2","meta","oldNode","maskInputValue","maskInputOptions","maskInputFn","actualType","repeat","ORIGINAL_ATTRIBUTE_NAME","getInputType","extractFileExtension","path","baseURL","pathname","URL_IN_CSS_REF","URL_PROTOCOL_MATCH","URL_WWW_MATCH","DATA_URI","quote1","path1","quote2","path2","path3","filePath","maybeQuote","extractOrigin","stack","part","normalizeCssString","markCssSplits","childNodes2","splits","cssTextNorm","i2","textContentNorm","bit","splitNorm","splitCssText","_id","tagNameRegex","IGNORED_NODE","genId","canvasService","canvasCtx","SRCSET_NOT_SPACES","SRCSET_COMMAS_OR_SPACES","cachedDocument","absoluteToDoc","attributeValue","trim","getHref","isSVGElement","ownerSVGElement","customHref","a2","transformAttribute","pos","collectCharacters","regEx","chars2","exec","output","descriptorsStr","inParens","c2","getAbsoluteSrcsetString","ignoreAttribute","_value","classMatchesRegex","checkAncestors","eIndex","needMaskingText","maskTextClass","maskTextSelector","closest","e2","serializeNode","mirror","mirror2","blockClass","blockSelector","needsMask","inlineStylesheet","maskTextFn","dataURLOptions","inlineImages","recordCanvas","keepIframeSrcFn","newlyAddedElement","cssCaptured","rootId","docId","getRootId","DOCUMENT_NODE","compatMode","Document","DOCUMENT_TYPE_NODE","DocumentType","needBlock","_isBlockedElement","HTMLFormElement","processedTagName","getValidTagName$1","attr","_cssText","sheet","selected","rr_open_mode","__context","ctx","x2","getImageData","originalGetImageData","Uint32Array","buffer","pixel","is2DCanvasBlank","rr_dataURL","quality","canvasDataURL","blankCanvas","image","imageSrc","currentSrc","priorCrossOrigin","crossOrigin","recordInlineImage","naturalWidth","naturalHeight","mediaAttributes","rr_mediaState","paused","rr_mediaCurrentTime","currentTime","rr_mediaPlaybackRate","playbackRate","rr_mediaMuted","muted","rr_mediaLoop","loop","rr_mediaVolume","volume","rr_scrollLeft","rr_scrollTop","class","rr_width","rr_height","contentDocument","rr_src","isCustomElement","customElements","isSVG","isCustom","serializeElementNode","TEXT_NODE","parentTagName","textContent2","isStyle","isScript","Text","serializeTextNode","CDATA_SECTION_NODE","CDATA","COMMENT_NODE","Comment","lowerIfExists","maybeAttr","serializeNodeWithId","skipChild","slimDOMOptions","onSerialize","onIframeLoad","iframeLoadTimeout","onStylesheetLoad","stylesheetLoadTimeout","preserveWhiteSpace","_serializedNode","sn","comment","script","as","headFavicon","headMetaDescKeywords","headMetaSocial","headMetaRobots","headMetaHttpEquiv","headMetaAuthorship","headMetaVerification","slimDOMExcluded","serializedNode","recordChild","shadowRootEl","isShadowHost","headWhitespace","bypassOptions","childN","serializedChildNode","isShadow","listener","fired","timer","blankUrl","onceIframeLoaded","iframeDoc","serializedIframeNode","link","styleSheetLoadTimeout","styleSheetLoaded","onceStylesheetLoaded","serializedLinkNode","getDefaultExportFromCjs$1","__esModule","getAugmentedNamespace$1","f2","default","a22","Reflect","construct","picocolors_browser$1","x$1","create$1","isColorSupported","bold","dim","italic","underline","inverse","hidden","strikethrough","black","red","green","yellow","blue","magenta","cyan","white","gray","bgBlack","bgRed","bgGreen","bgYellow","bgBlue","bgMagenta","bgCyan","bgWhite","createColors","picocolors_browserExports$1","require$$2$1","freeze","pico$1","terminalHighlight$1$1","CssSyntaxError$3$1","CssSyntaxError","line","column","source","plugin22","super","reason","plugin","endLine","endColumn","setMessage","captureStackTrace","showSourceCode","aside","lines","index2","number","gutter","spacing","code","cssSyntaxError$1","symbols$1","isClean","my","DEFAULT_RAW$1","after","beforeClose","beforeComment","beforeDecl","beforeOpen","beforeRule","colon","commentLeft","commentRight","emptyBody","indent","semicolon","Stringifier$2$1","builder","atrule","raws","afterName","nodes","block","between","beforeAfter","detect","raw","buf","depth","last","child","before","decl","string","important","own","first","root2","rawCache","walk","rawBeforeClose","rawBeforeComment","walkComments","rawBeforeDecl","walkDecls","rawBeforeOpen","rawBeforeRule","rawColon","rawEmptyBody","rawIndent","rawSemicolon","rule","ownSemicolon","stringifier$1","Stringifier$1$1","stringify$4$1","stringify_1$1","isClean$2$1","my$2$1","CssSyntaxError$2$1","Stringifier2$1","stringify$3$1","cloneNode$1","cloned","Node$4$1","defaults","addToError","postcssNode","input","insertAfter","overrides","cleanRaws","keepBetween","cloneAfter","cloneBefore","opts","rangeBy","getProxyProcessor","toProxy","markDirty","positionBy","stringRepresentation","positionInside","word","endIndex","defaultType","replaceWith","bookmark","foundSelf","result2","toJSON","inputs","fixed","emitInputs","inputsNextIndex","inputId","input2","proxyCache","Proxy","stringifier2","proxyOf","node$1","Node$3$1","Declaration$4$1","variable","declaration$1","nonSecure$1","nanoid","random","customAlphabet","alphabet","defaultSize","SourceMapConsumer","SourceMapConsumer$2$1","SourceMapGenerator","SourceMapGenerator$2$1","existsSync","existsSync$1","readFileSync","readFileSync$1","dirname","dirname$1$1","join$1","PreviousMap$2$1","loadAnnotation","inline","startWith","annotation","loadMap","mapFile","consumer","consumerCache","decodeInline","lastMatch","Buffer","atob","encoding","getAnnotationURL","sourceMapString","isMap","mappings","_mappings","sections","comments","loadFile","fromSourceMap","prevPath","withContent","sourcesContent","previousMap$1","SourceMapConsumer$1$1","SourceMapGenerator$1$1","fileURLToPath","fileURLToPath$1","pathToFileURL","pathToFileURL$1$1","isAbsolute","isAbsolute$1","resolve$1$1","nanoid$2","terminalHighlight$2","CssSyntaxError$1$1","PreviousMap$1$1","fromOffsetCache$1","sourceMapAvailable$1$1","pathAvailable$1$1","Input$4$1","hasBOM","mapResolve","fromOffset","lastLine","lineToIndex","prevIndex","l2","mid","sourceRoot","to","fromUrl","originalPositionFor","sourceContentFor","json","input$1","registerInput","SourceMapConsumer$3","SourceMapGenerator$3","dirname$2","relative","relative$1","resolve$2","sep","sep$1","pathToFileURL$2","Input$3$1","sourceMapAvailable$2","pathAvailable$2","mapGenerator$1","stringify2","cssString","mapOpts","originalCSS","usesFileUrls","absolute","memoizedFileURLs","memoizedPaths","memoizedURLs","addAnnotation","content","isInline","toBase64","outputFile","eol","applyPrevMaps","previous","toUrl","applySourceMap","clearAnnotation","generate","generateMap","generateString","ignoreInvalidMapping","addMapping","generated","original","isSourcesContent","setSourcesContent","isAnnotation","noSource","mapping","sourcePath","charCodeAt","cached","previousMaps","already","toFileUrl","setSourceContent","btoa","unescape","fileURL","Node$2$1","Comment$4$1","comment$1","parse$4$1","Rule$4$1","AtRule$4$1","Root$6$1","isClean$1$1","my$1$1","Declaration$3$1","Comment$3$1","Node$1$1","cleanSource$1","markDirtyUp$1","Container$7$1","Container","children","normalize","each","getIterator","indexes","condition","lastEach","cb","exist","existIndex","splice","sample","rebuild","prepend","unshift","removeAll","replaceValues","pattern","fast","walkAtRules","walkRules","registerParse","dependant","registerRule","registerAtRule","registerRoot","container$1","LazyResult$4$1","Processor$3$1","Container$6$1","Document$3$1","toResult","registerLazyResult","registerProcessor","document$1$1","Warning$2$1","opt","warning$1","Warning$1$1","Result$3$1","processor2","processor","messages","lastPlugin","postcssPlugin","warning2","warnings","result$1","SINGLE_QUOTE$1","DOUBLE_QUOTE$1","BACKSLASH$1","SLASH$1","NEWLINE$1","SPACE$1","FEED$1","TAB$1","CR$1","OPEN_SQUARE$1","CLOSE_SQUARE$1","OPEN_PARENTHESES$1","CLOSE_PARENTHESES$1","OPEN_CURLY$1","CLOSE_CURLY$1","SEMICOLON$1","ASTERISK$1","COLON$1","AT$1","RE_AT_END$1","RE_WORD_END$1","RE_BAD_BRACKET$1","RE_HEX_ESCAPE$1","Container$5$1","AtRule$3$1","atRule$1","LazyResult$3$1","Processor$2$1","Container$4$1","Root$5$1","ignore","root$1","list$2$1","comma","space","separators","array","current","func","inQuote","prevQuote","escape","letter","list_1$1","Container$3$1","list$1$1","Rule$3$1","sep2","rule$1","Declaration$2$1","tokenizer2$1","quote","escaped","escapePos","currentToken","valueOf","ignoreErrors","returned","unclosed","what","back","token","endOfFile","nextToken","ignoreUnclosed","controlChar","fromCharCode","lastIndex","Comment$2$1","AtRule$2$1","Root$4$1","Rule$2$1","SAFE_COMMENT_NEIGHBOR$1","empty","parser$1","spaces","createTokenizer","unnamedAtrule","init","brackets","tokenizer","getPosition","spacesAndCommentsFromEnd","spacesAndCommentsFromStart","checkMissedSemicolon","tokens","founded","doubleColon","customProperty","findLastWithPosition$1","unknownWord","firstSpaces","precheckMissedSemicolon","stringFrom","spacesFromEnd","emptyRule","unexpectedClose","endFile","unclosedBlock","freeSemicolon","bracket","unclosedBracket","clean","lastTokenType","Container$2$1","Parser2$1","Input$2$1","parse$3$1","parser2","parse_1$1","isClean$3","my$3","MapGenerator$1$1","stringify$2$1","Container$1$1","Document$2$1","Result$2$1","parse$2$1","Root$3$1","TYPE_TO_CLASS_NAME$1","PLUGIN_PROPS$1","AtRule","AtRuleExit","CommentExit","Declaration","DeclarationExit","DocumentExit","Once","OnceExit","prepare","Root","RootExit","Rule","RuleExit","NOT_VISITORS$1","CHILDREN$1","isPromise$1","getEvents$1","toStack$1","eventIndex","visitorIndex","visitors","cleanMarks$1","postcss$2$1","LazyResult$2$1","LazyResult","stringified","processed","syntax","parser","helpers","postcss","plugins","processing","runAsync","onRejected","catch","onFinally","getAsyncError","postcssVersion","prepareVisitors","version","hasListener","runOnRoot","visitTick","visitor","roots","subRoot","sync","stringifier","walkSync","visitSync","onFulfilled","visit2","registerPostcss","lazyResult$1","MapGenerator2$1","stringify$1$1","parse$1$1","Result$1$1","NoWorkResult$1$1","_processor","_css","_opts","_map","generatedCSS","generatedMap","_root","noWorkResult$1","NoWorkResult2$1","LazyResult$1$1","Document$1$1","Root$2$1","Processor$1$1","normalized","process","use","processor$1","Declaration$1$1","PreviousMap2$1","Comment$1$1","AtRule$1$1","Input$1$1","Root$1$1","Rule$1$1","fromJSON$1$1","ownInputs","inputHydrated","fromJSON_1$1","CssSyntaxError2$1","Declaration2$1","LazyResult2$1","Container2$1","Processor2$1","stringify$5","fromJSON$2","Document22","Warning2$1","Comment2$1","AtRule2$1","Result2$1","Input2$1","parse$5","list$3","Rule2$1","Root2$1","Node2$1","postcss$3","initializer","warningPrinted","creator","env","LANG","transformer","processOpts","pluginOpts","fromJSON","atRule","Processor","Warning","Result","Input","postcss_1$1","postcss$1$1","__defProp2","__publicField2","__defNormalProp2","getDefaultExportFromCjs","getAugmentedNamespace","picocolors_browser","picocolors_browserExports","require$$2","pico","terminalHighlight$1","CssSyntaxError$3","CssSyntaxError2","cssSyntaxError","symbols","DEFAULT_RAW","Stringifier$2","Stringifier$1","stringify$4","stringify_1","isClean$2","my$2","CssSyntaxError$2","Stringifier22","stringify$3","Node$4","Node$3","Declaration$4","declaration","nonSecure","SourceMapConsumer$2","SourceMapGenerator$2","dirname$1","PreviousMap$2","previousMap","SourceMapConsumer$1","SourceMapGenerator$1","pathToFileURL$1","resolve$1","terminalHighlight","CssSyntaxError$1","PreviousMap$1","fromOffsetCache","sourceMapAvailable$1","pathAvailable$1","Input$4","Input$3","sourceMapAvailable","pathAvailable","mapGenerator","Node$2","Comment$4","parse$4","Rule$4","AtRule$4","Root$6","isClean$1","my$1","Declaration$3","Comment$3","Node$1","cleanSource","markDirtyUp","Container$7","Container2","container","LazyResult$4","Processor$3","Container$6","Document$3","document$1","Warning$2","warning","Warning$1","Result$3","SINGLE_QUOTE","DOUBLE_QUOTE","BACKSLASH","SLASH","NEWLINE","SPACE","FEED","TAB","CR","OPEN_SQUARE","CLOSE_SQUARE","OPEN_PARENTHESES","CLOSE_PARENTHESES","OPEN_CURLY","CLOSE_CURLY","SEMICOLON","ASTERISK","COLON","AT","RE_AT_END","RE_WORD_END","RE_BAD_BRACKET","RE_HEX_ESCAPE","Container$5","AtRule$3","LazyResult$3","Processor$2","Container$4","Root$5","list$2","list_1","Container$3","list$1","Rule$3","Declaration$2","tokenizer22","Comment$2","AtRule$2","Root$4","Rule$2","SAFE_COMMENT_NEIGHBOR","findLastWithPosition","Container$2","Parser22","Input$2","parse$3","parse_1","MapGenerator$1","stringify$2","Container$1","Document$2","Result$2","parse$2","Root$3","TYPE_TO_CLASS_NAME","PLUGIN_PROPS","NOT_VISITORS","CHILDREN","isPromise","getEvents","toStack","cleanMarks","postcss$2","LazyResult$2","LazyResult2","lazyResult","MapGenerator22","stringify$1","parse$1","Result$1","NoWorkResult$1","noWorkResult","NoWorkResult22","LazyResult$1","Document$1","Root$2","Processor$1","Declaration$1","PreviousMap22","Comment$1","AtRule$1","Input$1","Root$1","Rule$1","fromJSON$1","fromJSON_1","CssSyntaxError22","Declaration22","LazyResult22","Container22","Processor22","Document222","Warning22","Comment22","AtRule22","Result22","Input22","Rule22","Root22","Node22","postcss_1","postcss$1","BaseRRNode","_args","childIterator","_newChild","_refChild","_node","testableAccessors","testableMethods","untaintedBasePrototype","isAngularZonePresent","getUntaintedPrototype","untaintedAccessorCache","getUntaintedAccessor","untaintedMethodCache","getUntaintedMethod","mutationObserverCtor","on","capture","DEPARTED_MIRROR_ACCESS_WARNING","_mirror","throttle","wait","leading","remaining","trailing","hookSetter","isRevoked","patch","replacement","wrapped","defineProperties","__rrweb_original__","receiver","nowTimestamp","getWindowScroll","_d","scrollingElement","getWindowHeight","getWindowWidth","closestElementOfNode","isBlocked","isIgnored","headTitleMutations","isAncestorRemoved","legacy_isTouchEvent","changedTouches","isSerializedIframe","isSerializedStylesheet","hasShadowRoot","StyleSheetMirror","styleIDMap","newId","idStyleMap","getStyle","generateId","getShadowHost","shadowHost","DOCUMENT_FRAGMENT_NODE","shadowHostInDom","rootShadowHost","getRootShadowHost","inDom","EventType","EventType2","IncrementalSource","IncrementalSource2","MouseInteractions","MouseInteractions2","PointerTypes","PointerTypes2","CanvasContext","CanvasContext2","MediaInteractions","MediaInteractions2","NodeType","isNodeInLinkedList","DoubleLinkedList","addNode","__ln","previousSibling","tail","removeNode","moveKey","parentId","MutationBuffer","processMutation","emit","frozen","locked","adds","addedIds","addList","getNextId","ns","pushAdd","parentTag","addedSet","currentN","iframeManager","addIframe","stylesheetManager","trackLinkElement","shadowDomManager","addShadowRoot","iframe","childSn","attachIframe","observeAttachShadow","attachLinkElement","mapRemoves","movedSet","isParentRemoved","removesSubTreeCache","isAncestorInSet","droppedSet","candidate","tailNode","unhandledNode","texts","genTextAreaValueMutation","attribute","diffAsStr","styleDiff","unchangedAsStr","_unchangedStyles","removes","attributeMap","movedMap","mutationCb","textarea","cn","m","oldValue","attributeName","unattachedDoc","implementation","createHTMLDocument","old","pname","newValue","getPropertyValue","newPriority","getPropertyPriority","genAdds","nodeId","isSerialized","deepDelete","n22","processRemoves","processedNodeManager","inOtherBuffer","targetId","canvasManager","unfreeze","isFrozen","lock","unlock","addsSet","_mirror2","_isParentRemoved","_isAncestorInSet","errorHandler","callbackWrapper","rest","mutationBuffers","getEventTarget","composedPath","initMutationObserver","rootEl","mutationBuffer","processMutations","attributeOldValue","characterData","characterDataOldValue","initMouseInteractionObserver","mouseInteractionCb","sampling","mouseInteraction","disableMap","handlers","currentPointerType","eventKey","pointerType","thisEventKey","Mouse","Touch","Pen","MouseDown","MouseUp","Click","clientX","clientY","getHandler","PointerEvent","TouchStart","TouchEnd","initScrollObserver","scrollCb","scrollLeftTop","INPUT_TAGS","lastInputValueMap","getNestedCSSRulePositions","childRule","hasNestedCSSRule","parentRule","CSSGroupingRule","CSSMediaRule","CSSSupportsRule","CSSConditionRule","parentStyleSheet","recurse","getIdAndStyleId","styleMirror","initAdoptedStyleSheetObserver","host2","hostId","patchTarget","originalPropertyDescriptor","_a3","sheets","adoptStyleSheets","initObservers","o2","hooks","currentWindow","mousemoveCb","viewportResizeCb","inputCb","mediaInteractionCb","styleSheetRuleCb","styleDeclarationCb","canvasMutationCb","fontCb","selectionCb","customElementCb","mousemove","viewportResize","mediaInteaction","styleSheetRule","styleDeclaration","canvasMutation","font","selection","customElement","mergeHooks","recordDOM","mousemoveHandler","callbackThreshold","mousemoveCallback","timeBaseline","positions","wrappedCb","totalOffset","timeOffset","updatePosition","DragEvent","Drag","MouseEvent","MouseMove","TouchMove","initMoveObserver","mouseInteractionHandler","scrollHandler","viewportResizeHandler","lastH","lastW","initViewportResizeObserver","inputHandler","ignoreClass","ignoreSelector","userTriggeredOnInput","eventHandler","userTriggered","isTrusted","isChecked","cbWithDedup","text2","v2","lastInputValue","propertyDescriptor","HTMLInputElement","hookProperties","HTMLSelectElement","HTMLTextAreaElement","HTMLOptionElement","initInputObserver","mediaInteractionHandler","Play","Pause","Seeked","VolumeChange","RateChange","initMediaInteractionObserver","styleSheetObserver","adoptedStyleSheetObserver","styleDeclarationObserver","fontObserver","CSSStyleSheet","insertRule","thisArg","argumentsList","addRule","styleBlock","deleteRule","replaceSync","removeRule","supportedNestedCSSRuleTypes","canMonkeyPatchNestedCSSRule","unmodifiedFunctions","typeKey","initStyleSheetObserver","ignoreCSSAttributes","CSSStyleDeclaration","removeProperty","initStyleDeclarationObserver","collectFonts","fontMap","originalFontFace","FontFace","family","descriptors","fontFace","fontSource","Uint8Array","restoreHandler","fonts","initFontObserver","selectionObserver","collapsed","updateSelection","getSelection","isCollapsed","ranges","rangeCount","getRangeAt","startContainer","startOffset","endContainer","endOffset","initSelectionObserver","customElementObserver","initCustomElementObserver","pluginHandlers","plugin3","CrossOriginIframeMirror","generateIdFn","remoteId","idToRemoteMap","remoteToIdMap","idToRemoteIdMap","getIdToRemoteIdMap","remoteIdToIdMap","getRemoteIdToIdMap","getRemoteId","getRemoteIds","ids","iframeIdToRemoteIdMap","iframeRemoteIdToIdMap","IframeManager","wrappedEmit","recordCrossOriginIframes","crossOriginIframeStyleMirror","iframes","crossOriginIframeMap","addLoadListener","loadListener","isAttachIframe","crossOriginMessageEvent","transformedEvent","transformCrossOriginEvent","isCheckout","FullSnapshot","crossOriginIframeMirror","replaceIdOnNode","crossOriginIframeRootIdMap","patchRootIdOnNode","timestamp","IncrementalSnapshot","Mutation","Meta","Load","DomContentLoaded","Plugin","Custom","replaceIds","ViewportResize","MediaInteraction","MouseInteraction","Scroll","CanvasMutation","StyleSheetRule","StyleDeclaration","replaceStyleIds","Font","Selection","AdoptedStyleSheet","styles","iframeMirror","ShadowDomManager","WeakSet","patchAttachShadow","shadowDoms","restoreHandlers","iframeElement","manager","option","sRoot","chars","lookup","i$1","canvasVarMap","saveWebGLVar","isInstanceOfWebGLObject","list2","ctor","contextMap","variableListFor$1","serializeArg","Float32Array","Float64Array","Int32Array","Uint16Array","Int16Array","Int8Array","Uint8ClampedArray","rr_type","base64","arraybuffer","bytes","DataView","byteOffset","byteLength","HTMLImageElement","ImageData","serializeArgs","supportedWebGLConstructorNames","initCanvasContextObserver","setPreserveDrawingBufferToTrue","contextType","ctxName","getNormalizedContextName","contextAttributes","preserveDrawingBuffer","patchGLPrototype","getOwnPropertyNames","recordArgs","hookHandler","setter","encodedJs","WorkerWrapper","objURL","webkitURL","worker","Worker","revokeObjectURL","CanvasManager","latestId","invokeId","rafStamps","pendingCanvasMutations","initCanvasMutationObserver","initCanvasFPSObserver","resetObservers","fps","canvasContextReset","snapshotInProgressMap","onmessage","commands","timeBetweenSnapshots","rafId","lastSnapshotTime","takeCanvasSnapshots","matchedCanvas","getCanvas","getContextAttributes","COLOR_BUFFER_BIT","bitmap","createImageBitmap","startRAFTimestamping","startPendingCanvasMutationFlusher","canvas2DReset","props2D","CanvasRenderingContext2D","initCanvas2DMutationObserver","canvasWebGL1and2Reset","WebGLRenderingContext","WebGL","WebGL2RenderingContext","WebGL2","initCanvasWebGLMutationObserver","flushPendingCanvasMutations","setLatestRAFTimestamp","_values","flushPendingCanvasMutationFor","valuesWithType","type2","StylesheetManager","adoptedStyleSheetCb","linkEl","trackedLinkElements","trackStylesheetInLinkElement","adoptedStyleSheetData","styleIds","CSSRule","r2","_linkEl","ProcessedNodeManager","thisBuffer","buffers","nodeMap","active","takeFullSnapshot$1","recording","cleanFrame","debug","record","checkoutEveryNms","checkoutEveryNth","maskAllInputs","_maskInputOptions","_slimDOMOptions","packFn","mousemoveWait","recordAfter","errorHandler2","inEmittingFrame","passEmitsToParent","month","search","tel","week","select","password","lastFullSnapshotEvent","NodeList","DOMTokenList","polyfill$1","incrementalSnapshotCount","eventProcessor","exceedCount","exceedTime","wrappedMutationEmit","wrappedScrollEmit","wrappedCanvasMutationEmit","getMirror","nodeMirror","slimDOM","snapshot","initialOffset","CustomElement","t2","addCustomEvent","tag","freezePage","takeFullSnapshot","NotStarted","Running","Stopped","customOptions","stopFunction","ContextMenu","DblClick","Focus","Blur","rrwebEvent","stringifiedData","dataURIRegex","matchAll","ensureMaxMessageSize","bufferSize","ScreenDrawer","svgElement","minHeight","mouseDown","colorpicker","fadeOutToolbar","tool","mouseDownPen","mouseDownRect","mouseMove","mouseMovePen","mouseMoveRect","mouseUp","fadeInToolbar","mouseUpPen","mouseUpRect","appendToBuffer","getMousePosition","updateSvgPath","w","abs","startPoint","setAttributeNS","createElementNS","strokeWidthRect","appendPathToSvg","strokeWidth","pt","strPath","touches","totalX","totalY","getAveragePoint","tmpPath","pathBuffer","fadeTarget","GleapScrollStopper","supportsPassive","wheelOpt","scrollDisabled","wheelEvent","preventDefaultForScrollKeys","keyCode","showWidgetUI","formKey","dirty","dialogUI","enableScroll","screenRecorder","unregisterListeners","cleanupMousePointer","screenDrawer","dialog","captureSVG","videoPreviewContainer","dismissUI","colorPicker","borderLayer","captureEditor","dragCursor","setMouseMove","mouseMoveEventHandler","touchMoveEventHandler","dragHandle","dragStart","drag","dragEnd","bugReportingEditor","translateText","pageLeaveListener","isEscape","isEnter","dismiss","showNextStep","returnValue","registerListeners","hideWidgetUI","createEditorUI","setupMousePointer","disableScroll","setupScreenRecording","captureScreenDrawerRerender","setupColorPicker","setupToolbar","selectedColor","colorItems","colorItem","hexColor","onclick","setColor","setPenColor","currentX","currentY","initialX","initialY","toolbar","isDragging","xOffset","yOffset","_getTransformValues","matrix","DOMMatrix","m41","m42","getTransformValues","nextButton","chooseTool","toolbarItem","toolbarTools","setTool","svgClone","toolbarItems","_loop2","toggleAudio","startScreenRecording","removeLastAddedPathFromSvg","itemInactiveClass","screenRecordingTooltip","audioRecordingTooltip","recordingClass","notRecordingClass","clearPreview","captureRenderer","penTips","fill","staticTranslation","staticTranslations","vars","template","localizationOptions","htmlLang","GleapShortcutListener","shortCutListener","char","keyIdentifier","ctrlKey","startFeedbackFlowWithOptions","autostartDrawing","GleapPreFillManager","unreadCount","notificationContainer","notificationsFromCache","unreadNotificationsKey","nots","notification","createdAt","notifications","renderNotifications","updateTabBarNotificationCount","sound","clearElem","currentNewsIndex","newsNotifications","news","otherNotifications","currentIndex","currentNews","newsElem","newsContainerElem","coverImageUrl","newsImageElem","stopPropagation","openNews","newsContentElem","newsTitleElem","getName","descHTML","renderDescription","descElem","paginationElem","pageIndicator","nextBtn","conversation","openConversation","checklist","openChecklist","progress","currentStep","totalSteps","nextStepTitle","sender","profileImageUrl","openNewsArticle","_notification$data","previewText","uiOnly","classLeft","classNoButton","_this$bannerUrl","_this$bannerData","_data$data2","_data$data3","_data$data4","_data$data5","_data$data6","_data$data7","_data$data8","_data$data9","_data$data10","bannerData","format","startBot","botId","startFeedbackFlow","formId","showSurvey","surveyFormat","articleId","openHelpCenterArticle","startChecklist","checklistId","bannerContainer","gleapBFrame","injectBannerUI","_listenForMessages","modalUrl","_this$modalUrl","_data$data11","modalData","primaryColor","_postMessage","modalContainer","wrapper","modalBackdropClickListener","_this2$modalData$show","_this2$modalData","showCloseButton","frame","_injectModalUI","play","settings","Audio","playPromise","getID","getClassSelectors","getClasses","cl","kCombinations","items","getNthChild","sibling","counter","getTag","isUnique","elems","getAllSelectors","attributesToIgnore","funcs","sum","getAttributes","res","testUniqueness","getFirstUnique","getUniqueCombination","combinations","getCombinations","firstUnique","combination","getUniqueSelector","selectorTypes","excludeRegex","foundSelector","elementSelectors","ID","Class","selectorType","Tag","Classes","Attributes","NthChild","unique","_step2","_options$selectorType","_options$attributesTo","_options$excludeRegex","allSelectors","parents","currentElement","getParents","_iterator2","_i","_allSelectors","ElementOverlay","overlay","background","borderColor","borderStyle","borderWidth","boxSizing","cursor","zIndex","margin","shadowContainer","attachShadow","_createClass","useShadowDOM","usingShadowDOM","setBounds","bounds","ElementPicker","overlayOptions","handleMouseMove","handleClick","tick","addToDOM","removeFromDOM","mouseX","mouseY","tickReq","stopImmediatePropagation","onClick","updateTarget","ignoreCursor","newTarget","elementFromPoint","captureCursor","elementFilter","onHover","GleapAdminHelper","picker","stopPicker","onElementPicked","startPicker","GleapAdminManager","COLLAPSE_UI_ACTIVE_CLASS","FRAME_CONTAINER_ACTIVE_CLASS","isActive","activeClass","gleapCollapseUI","toggle","injectedCollapseUI","toggleCollapseUI","_this$configData","configData","sendMessageToTourBuilder","GleapProductTours","disable","adminHelper","injectCollapseUI","setFrameHeight","gleapAdminDisabled","initAdminHelper","currentPage","click","opener","GleapTours","currentConfig","configure","animate","allowClose","overlayOpacity","smoothScroll","disableActiveInteraction","showProgress","stagePadding","stageRadius","popoverOffset","showButtons","disableButtons","overlayColor","getConfig","easeInOutQuad","elapsed","initialValue","amountOfChange","getFocusableElements","parentEls","focusableQuery","flatMap","parentEl","isParentFocusable","focusableEls","isElementVisible","bringInView","isElementInView","shouldSmoothScroll","scrollIntoView","behavior","hasScrollableParent","currentState","setState","getState","resetState","registeredListeners","listen","hook","trackActiveElement","activeStagePosition","renderOverlay","mountOverlay","stagePosition","overlaySvg","stage","windowX","windowY","svg","fillRule","clipRule","strokeLinejoin","strokeMiterlimit","stagePath","generateStageSvgPathString","createOverlaySvg","onDriverClick","pathElement","stageWidth","stageHeight","limitedRadius","normalizedRadius","highlightBoxX","highlightBoxY","highlightBoxWidth","highlightBoxHeight","highlight","attemptTime","elemObj","refactoredElement","hidePopover","existingDummy","getElementById","mountDummyElement","toElement","toStep","_toStep$disableActive","fromStep","fromElement","isFirstHighlight","isToDummyElement","isFromDummyElement","isAnimatedTour","highlightStartedHook","onHighlightStarted","highlightedHook","onHighlighted","deselectedHook","onDeselected","hasDelayedPopover","isPopoverRendered","isHalfwayThrough","popover","renderPopover","fromDefinition","toDefinition","transitionStage","transferHighlight","refreshActiveHighlight","activeHighlight","activeStep","refreshOverlay","repositionPopover","requireRefresh","resizeTimeout","trapFocus","activeElement","popoverEl","firstFocusableEl","lastFocusableEl","shiftKey","previousFocusableEl","nextFocusableEl","onKeyup","shouldPreventDefault","listenerWrapper","listener2","useCapture","title","description","closeButton","footer","footerButtons","previousButton","createPopover","_ref2$nextBtnText","nextBtnText","_ref2$prevBtnText","prevBtnText","_ref2$progressText","progressText","showButtonsConfig","showProgressConfig","showFooter","disabledButtonsConfig","popoverWrapper","customPopoverClass","popoverClass","_b2","onNextClick","onPrevClick","onCloseClick","onPopoverRender","focusableElement","getPopoverDimensions","boundingClientRect","realWidth","realHeight","calculateTopForLeftRight","elementDimensions","popoverDimensions","popoverPadding","popoverArrowDimensions","calculateLeftForTopBottom","_ref3$align","align","_ref3$side","requiredAlignment","requiredSide","topValue","isTopOptimal","bottomValue","isBottomOptimal","leftValue","isLeftOptimal","rightValue","isRightOptimal","noneOptimal","popoverRenderedSide","leftToSet","topToSet","leftValue2","rightToSet","bottomToSet","popoverArrow","popoverWidth","windowWidth","elementWidth","elementLeft","popoverHeight","windowHeight","elementTop","elementHeight","arrowSide","arrowAlignment","renderPopoverArrow","moveNext","activeIndex","steps","nextStepIndex","drive","movePrevious","previousStepIndex","handleArrowLeft","handleArrowRight","_f","_g","_h","stepIndex","hasNextStep","hasPreviousStep","doneBtnText","allowsClosing","progressTextReplaced","configuredButtons","calculatedButtons","withOnDestroyStartedHook","activeOnDestroyed","onDestroyStarted","onDestroyed","destroyPopover","destroyHighlight","isActiveDummyElement","setConfig","setSteps","getActiveIndex","isFirstStep","isLastStep","getActiveStep","getActiveElement","getPreviousElement","getPreviousStep","moveTo","localStorageKey","pointerContainerId","copilotJoinedContainerId","_canPlayAudio","GleapCopilotTours","_scrollListeners","_currentAnchor","_currentStep","_scrollDebounceTimer","productTourId","currentActiveIndex","productTourData","updatePointerPosition","onCompleteCallback","scrollableAncestors","getScrollableAncestors","_pointerContainer","yPosition","targetScrollPosition","scrollTo","smoothScrollToY","removeScrollListeners","pollCount","updateFinalPosition","isElementFullyVisible","targetX","targetY","containerWidthSpace","attachScrollListeners","currentAudio","pause","copilotInfoContainer","_GleapConfigManager$g","_GleapConfigManager$g2","_this$productTourData3","_this$productTourData4","_this$productTourData5","_this$productTourData6","_this$productTourData","_this$productTourData2","contrastColor","playVoice","gradient","svgMouse","infoBubble","kaiAvatar","kaiSlug","completeTour","canPlayAudio","supported","setupCopilotTour","showUnmuteModal","showAudioUnmuteModal","renderNextStep","_this$productTourData7","_this$productTourData8","_this$productTourData9","modalOverlay","modal","unmuteModalTitle","unmuteButton","unmuteModalButton","startAnywayButton","unmuteModalContinue","_this7","handleStep","gotToNextStep","_currentStep$inputTyp","proceedClickmode","storeUncompletedTour","inputType","handleInputEvent","_e$target","once","_currentStep$inputVal","inputValue","typeCharacter","wave","performClickAnimation","tempDiv","htmlToPlainText","readTime","wordCount","ceil","estimateReadTime","continueWithNoAudio","voice","elementPromise","maxAttempts","attempts","interval","waitForElement","_self$productTourData","tourType","gleapTourObj","delay","manually","validateProductTour","onComplete","comData","clearUncompletedTour","startWithConfig","unmuted","driverSteps","isClickMode","isInputMode","hasSender","videoUrl","senderHTML","firstName","driverStep","buttons","backButton","allowKeyboardControl","nextText","doneText","prevText","_config$state","onDocumentClick","popoverElement","mediaElements","performRequentialRefresh","mediaElement","playingClass","playPauseContainer","videoElement","videoContainer","clickVideo","evnt","gleapTourPopover","_evnt$target","__originalGetContext","GleapChecklist","_HTMLElement","_assertThisInitialized","_callSuper","handleChecklistUpdate","handleSessionUpdate","_networkManager","_boundFloatingLauncherClick","handleFloatingLauncherClick","_boundFloatingCloseClick","handleFloatingCloseClick","_floatingHideTimeout","_inherits","_boundHandleChecklistUpdate","_boundHandleSessionUpdate","_boundResizeHandler","handleResize","_checkSessionAndLoad","removeFloatingClickListeners","checklistData","_hasLoaded","_isSessionReady","_initialActiveSet","renderResponse","updateActiveTaskMaxHeight","loadChecklist","renderChecklist","_getGleapSessionInstance","hasChecklistId","defaultValue","translateTextWithVars","validateChecklist","_isMock","isConnected","fetchChecklist","_isInitialLoad","_this3$checklistData$","_data$outbound","completedSteps","firstIncompleteIndex","findIndex","_session$gleapId","_session$gleapHash","checkedStep","makeRequest","updateData","_this$checklistData$o3","previousCompletedSteps","dataChanged","activeStepCompleted","currentlyActiveStepIndex","_this$checklistData$o","activeStepId","_this$checklistData$o2","nextActiveStep","setActiveStep","tasks","launcher","_outbound$config","_this$checklistData","renderDoneState","progressbarEnabled","doneSteps","_outbound$config2","_outbound$config3","nextIncompleteStep","titleText","_translateWithVars","subject","subtitleText","successTitle","successMessage","circumference","PI","computedOffset","isHeader","toFixed","_outbound$sender","infoEnabled","_translate","senderHtml","progressLabel","durationLabel","isTaskDone","badge","getCheckIcon","stepTitle","stepDescription","actionButtonText","actionTitle","actionHtml","markDoneLabel","markDoneHtml","allowMarkDone","taskClasses","_outbound$config4","_outbound$config5","_outbound$config6","floatingEnabled","renderFloatingLauncher","renderInfoSection","renderProgressSection","renderTasks","addTaskEventListeners","addFloatingClickListeners","toggleTask","taskBodyInner","task","newActiveStep","markDoneBtn","_this5$checklistData","previouslyActiveStep","_this5$checklistData$","stepId","allSteps","isModalOpen","tasksModal","_this5$checklistData$2","updateChecklist","actionBtn","_this5$checklistData2","actionBody","openURL","actionOpenInNewTab","gleapError","previousActiveStep","tasksToToggle","forceOpen","taskElement","isOpen","shouldOpen","taskBody","_wrapNativeSuper","registerGleapChecklist","offlineMode","hostname","injectNotificationUI","actions","_action$data","popupType","disableInAppNotifications","showNotification","showBanner","showModal","startProductTourWithConfig","globalData","replayData","getReplayData","setTags","setUrlHandler","tools","setAiTools","updateContainerHeight","initialHeight","fixGleapHeight","checkForUncompletedTour","checkForUrlParams","urlParams","URLSearchParams","widget","conversationFlow","startConversation","feedbackFlow","surveyFlow","surveyFlowFormat","tourDelay","identifySession","updateSession","setMaxRequests","setOptions","cleanedData","formPreFill","toggleFeedbackButton","setAppVersionCode","setAppBuildNumber","setBannerUrl","setModalUrl","setTicketAttribute","unsetTicketAttribute","clearTicketAttributes","attachCustomData","setCustomData","removeCustomData","clearCustomData","playSound","showNotificationBadge","notificationInstance","setOverrideLanguage","softReInitialize","updateContact","registerCustomAction","buttonStyle","contrastButtonColor","contrastBackgroundColor","contrastHeaderColor","isDarkMode","headerDarkColor","subTextColor","backgroundColorHover","hoverHoverColor","buttonBorderRadius","containerRadius","chatRadius","formItemBorderRadius","formItemSmallBorderRadius","bottomInfoOffset","colorStyleSheet","zIndexBase","injectStyledCSS","replays","attachments","sendSilentCrashReportWithFormData","silentCrashReportSent","excludeDataCleaned","newFormData","hideBackButton","showBackButton","flow","collectionId","term","networkManager","checkStartUrl","startProductTourConfig","startURL","loadUncompletedTour","GleapActions","GLAction","urlParts","identifier","openHelpCenterCollection"],"sourceRoot":""} \ No newline at end of file diff --git a/build/cjs/index.js b/build/cjs/index.js index f1dc8771..22c3998a 100644 --- a/build/cjs/index.js +++ b/build/cjs/index.js @@ -1,2 +1,2 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.Gleap=t():e.Gleap=t()}(this,(()=>(()=>{"use strict";var e={d:(t,n)=>{for(var o in n)e.o(n,o)&&!e.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:n[o]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function o(e,t){for(var n=0;nUm});var a=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),r(this,"feedbackButton",null),r(this,"injectedFeedbackButton",!1),r(this,"buttonHidden",null),r(this,"lastButtonIcon",null)}var t,n,i;return t=e,i=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],(n=[{key:"destroy",value:function(){this.feedbackButton&&(this.feedbackButton.remove(),this.feedbackButton=null),this.buttonHidden=null,this.lastButtonIcon=null,this.injectedFeedbackButton=!1,this.instance=null}},{key:"toggleFeedbackButton",value:function(t){this.buttonHidden=!t,e.getInstance().updateFeedbackButtonState(),Mh.getInstance().updateContainerStyle()}},{key:"feedbackButtonPressed",value:function(){var e=Vt.getInstance();e.isOpened()?e.hideWidget():(e.setAppMode("widget"),e.showWidget())}},{key:"injectFeedbackButton",value:function(){var e=this;if(!this.injectedFeedbackButton){this.injectedFeedbackButton=!0;var t=document.createElement("div");t.addEventListener("click",(function(){e.feedbackButtonPressed()})),document.body.appendChild(t),this.feedbackButton=t,this.updateFeedbackButtonState()}}},{key:"updateNotificationBadge",value:function(e){var t=document.querySelector(".bb-notification-bubble");if(t){var n="bb-notification-bubble--hidden";e>0&&!Vt.getInstance().isOpened()?(t.classList.remove(n),t.innerText=e):t.classList.add(n)}}},{key:"refresh",value:function(){document.querySelector(".bb-feedback-button")?(this.updateFeedbackButtonText(),this.updateFeedbackButtonState()):(this.injectedFeedbackButton=!1,this.feedbackButton=null,this.buttonHidden=null,this.lastButtonIcon=null,this.injectFeedbackButton())}},{key:"updateFeedbackButtonText",value:function(){var t=dt.getInstance().getFlowConfig();if(t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC||t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC_BOTTOM||t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC_LEFT){var n=document.querySelector(".bb-feedback-button-classic");n&&(n.innerText=t.widgetButtonText)}}},{key:"updateFeedbackButtonState",value:function(){if(null!==this.feedbackButton){var t=dt.getInstance().getFlowConfig(),n="";n=t.buttonLogo?''):p("button","#fff"),this.feedbackButton.className="bb-feedback-button gleap-font gl-block",this.feedbackButton.setAttribute("dir",gh.getInstance().isRTLLayout?"rtl":"ltr"),t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC||t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC_BOTTOM||t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC_LEFT?(this.feedbackButton.classList.add("bb-feedback-button--classic-button-style"),this.feedbackButton.innerHTML='
').concat(t.widgetButtonText,"
")):n!==this.lastButtonIcon&&(this.feedbackButton.innerHTML='
'.concat(n).concat(p("arrowdown","#fff"),'
')),this.lastButtonIcon=n;var o=!1;null===e.getInstance().buttonHidden?t.feedbackButtonPosition===e.FEEDBACK_BUTTON_NONE&&(o=!0):e.getInstance().buttonHidden&&(o=!0),o&&this.feedbackButton.classList.add("bb-feedback-button--disabled"),t.feedbackButtonPosition===e.FEEDBACK_BUTTON_BOTTOM_LEFT&&this.feedbackButton.classList.add("bb-feedback-button--bottomleft"),Vt.getInstance().isOpened()&&this.feedbackButton.classList.add("bb-feedback-button--open");var r=Vt.getInstance().appMode;"survey"!==r&&"survey_full"!==r&&"survey_web"!==r||this.feedbackButton.classList.add("bb-feedback-button--survey"),!0!==t.hideForGuests||et.getInstance().isUser()||this.feedbackButton.classList.add("bb-feedback-button--hidden")}}}])&&o(t.prototype,n),i&&o(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}();function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var o,r,i,a,s=[],l=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(o=i.call(n)).done)&&(s.push(o.value),s.length!==t);l=!0);}catch(e){c=!0,r=e}finally{try{if(!l&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(c)throw r}}return s}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return c(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return c(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n=160?"#000000":"#ffffff"},p=function(e,t){return"button"===e?'':"drag"===e?'\x3c!--!Font Awesome Pro 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2025 Fonticons, Inc.--\x3e':"unmute"===e?'':"mute"===e?'':"replay"===e?'\n \n ':"dismiss"===e?'':"blur"===e?'\n \n':"pen"===e?'\n \n \n \n \n \n \n \n \n \n \n \n \n':"rect"===e?'\n \n \n \n \n \n \n \n \n \n \n':"pointer"===e?'\n \n ':"clip"===e?'\n \n \n \n \n \n':"mic"===e?'\n \n \n \n \n ':"camera"===e?'\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n':"recorderon"===e?'\n \n \n \n \n \n \n \n \n \n \n \n':"recorderoff"===e?'\n \n \n \n \n \n \n \n \n ':"arrowdown"===e?'\n \n '):"arrowleft"===e?'\n \n '):"close"===e?'\n \n '):"undo"===e?'\n \n \n \n \n \n \n \n \n \n ':"circle-dot"===e?''):"circle-question"===e?''):"circle-info"===e?''):"circle-exclamation"===e?''):"circle-up"===e?''):"circle-right"===e?''):""};function h(e){return h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},h(e)}function f(e,t){for(var n=0;n0&&(e=e.concat(this.externalRequests)),this.filters&&this.filters.length>0)for(var t=0;t-1)&&!e.find((function(e){return e.url===s.name}))&&e.push({type:"RESOURCE",date:new Date(this.startTimestamp+s.startTime),url:s.name,duration:Math.round(s.duration),initiatorType:s.initiatorType})}}}catch(u){}var l=this.blacklist.concat(this.defaultBlacklist);if(l&&l.length>0)try{e=e.filter((function(e){for(var t=0;t70&&(e=70),this.maxRequests=e}},{key:"setStopped",value:function(e){this.stopped=e}},{key:"setFilters",value:function(e){this.filters=this.filters.concat(e||[])}},{key:"setBlacklist",value:function(e){this.blacklist=this.blacklist.concat(e||[])}},{key:"cleanRequests",value:function(){var e=Object.keys(this.requests);if(e.length>this.maxRequests)for(var t=e.slice(0,e.length-this.maxRequests),n=0;n.15?"":e}},{key:"cleanupPayload",value:function(e){if(null==e)return"{}";try{if(void 0!==("undefined"==typeof TextDecoder?"undefined":h(TextDecoder))&&ArrayBuffer.isView(e))return(new TextDecoder).decode(e)}catch(t){}return e}},{key:"preparePayload",value:function(e){var t=this.cleanupPayload(e);return this.cleanupContentSize(t)}},{key:"start",value:function(){var e=this;if(!this.initialized){this.initialized=!0;var t=this;this.interceptNetworkRequests({onFetch:function(n,o){if(!e.stopped&&o&&e.requests){if(n.length>0&&void 0!==n[0]&&void 0!==n[0].url)e.requests[o]={url:n[0].url,date:new Date,request:{payload:"",headers:void 0!==n[0].headers?Object.fromEntries(n[0].headers.entries()):{}},type:void 0!==n[0].method?n[0].method:""};else if(n.length>=2&&n[1]){var r=n[1]&&n[1].method?n[1].method:"GET";e.requests[o]={request:{payload:t.preparePayload(n[1].body),headers:n[1].headers},type:r,url:n[0],date:new Date}}else e.requests[o]={url:n[0],date:new Date};e.cleanRequests()}},onFetchLoad:function(n,o){if(!e.stopped&&o&&e.requests&&e.requests[o]){try{e.requests[o].success=!0,e.requests[o].response={status:n.status,statusText:"",responseText:""},e.calcRequestTime(o)}catch(i){}try{var r="";n.headers&&void 0!==n.headers.get&&(r=n.headers.get("content-type")),e.isContentTypeSupported(r)?n.text().then((function(r){e.requests[o]&&(e.requests[o].success=!0,e.requests[o].response={status:n.status,statusText:n.statusText,responseText:t.cleanupContentSize(r)}),e.calcRequestTime(o),e.cleanRequests()})).catch((function(t){e.cleanRequests()})):(e.requests[o]&&(e.requests[o].success=!0,e.requests[o].response={status:n.status,statusText:n.statusText,responseText:""}),e.calcRequestTime(o),e.cleanRequests())}catch(i){}}},onFetchFailed:function(t,n){!e.stopped&&n&&e.requests&&e.requests[n]&&(e.requests[n].success=!1,e.calcRequestTime(n),e.cleanRequests())},onOpen:function(t,n){e.stopped||(t&&t.bbRequestId&&n.length>=2&&e.requests&&(e.requests[t.bbRequestId]={type:n[0],url:n[1],date:new Date}),e.cleanRequests())},onSend:function(t,n){e.stopped||(t&&t.bbRequestId&&e.requests&&e.requests[t.bbRequestId]&&(e.requests[t.bbRequestId].request={payload:e.preparePayload(n.length>0?n[0]:"{}"),headers:t.requestHeaders}),e.cleanRequests())},onError:function(t,n){!e.stopped&&e.requests&&t&&t.currentTarget&&t.currentTarget.bbRequestId&&e.requests[t.currentTarget.bbRequestId]&&(e.requests[t.currentTarget.bbRequestId].success=!1,e.calcRequestTime(t.bbRequestId)),e.cleanRequests()},onLoad:function(t,n){if(!e.stopped){if(t&&t.currentTarget&&t.currentTarget.bbRequestId&&e.requests&&e.requests[t.currentTarget.bbRequestId]){var o=t.currentTarget,r=o.responseType,i="<"+r+">";""!==r&&"text"!==r||(i=e.cleanupContentSize(o.responseText)),e.requests[o.bbRequestId].success=!0,e.requests[o.bbRequestId].response={status:o.status,statusText:o.statusText,responseText:i},e.calcRequestTime(o.bbRequestId)}e.cleanRequests()}}})}}},{key:"interceptNetworkRequests",value:function(e){var t,n=this,o=XMLHttpRequest.prototype.open,r=XMLHttpRequest.prototype.send;return void 0===XMLHttpRequest.prototype.gleapSetRequestHeader&&(XMLHttpRequest.prototype.gleapSetRequestHeader=XMLHttpRequest.prototype.setRequestHeader),XMLHttpRequest.prototype.gleapSetRequestHeader&&(XMLHttpRequest.prototype.setRequestHeader=function(e,t){this.requestHeaders||(this.requestHeaders={}),this.requestHeaders&&this.requestHeaders.hasOwnProperty(e)||(this.requestHeaders[e]||(this.requestHeaders[e]=[]),this.requestHeaders[e].push(t),this.gleapSetRequestHeader(e,t))}),XMLHttpRequest.prototype.open=function(){return this.bbRequestId=++n.requestId,e.onOpen&&e.onOpen(this,arguments),e.onLoad&&this.addEventListener("load",e.onLoad.bind(e)),e.onError&&this.addEventListener("error",e.onError.bind(e)),o.apply(this,arguments)},XMLHttpRequest.prototype.send=function(){return e.onSend&&e.onSend(this,arguments),r.apply(this,arguments)},window.fetch&&(t=window.fetch,window.fetch=function(){var o=++n.requestId;return e.onFetch(arguments,o),t.apply(this,arguments).then((function(t){if(t&&"function"==typeof t.clone){var n=t.clone();e.onFetchLoad(n,o)}return t})).catch((function(t){throw e.onFetchFailed(t,o),t}))}),e}},{key:"blobToTextPromise",value:function(e){return new Promise((function(t,n){var o=new FileReader;o.onload=function(e){e&&e.target&&e.target.result?t(e.target.result):n()},o.onerror=function(e){n(e)},o.readAsText(e)}))}}],o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],n&&f(t.prototype,n),o&&f(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();m(v,"instance",void 0);const y=v;var b=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:400,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:400;return new Promise((function(o,r){var i=0===e.indexOf("data:image/jpeg"),a=new Image;a.src=e,a.onerror=function(){r()},a.onload=function(){var e=document.createElement("canvas"),r=t,s=n;t>a.width/1.5&&(r=a.width/1.5),n>a.height/1.5&&(s=a.height/1.5);var l=a.width,c=a.height;l>c?l>r&&(c*=r/l,l=r):c>s&&(l*=s/c,c=s),e.width=l,e.height=c,e.getContext("2d").drawImage(a,0,0,l,c),o(i?e.toDataURL("image/jpeg",.7):e.toDataURL())}}))},w=function(){return!(!/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(navigator.userAgent)&&!/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(navigator.userAgent.substr(0,4)))},k=function(e){if("string"==typeof e||e instanceof String)try{return JSON.parse(e)}catch(t){return{}}return e},x=function(e,t){return e.length>t?e.slice(0,t)+"...":e},S=function(e){try{var t=e.split("."),n=!1,o=t[t.length-2];return"co"!==o&&"com"!==o&&"gv"!==o&&"ac"!==o&&"edu"!==o&&"gov"!==o&&"mil"!==o&&"net"!==o&&"org"!==o||(n=!0),(t=t.slice(n?-3:-2)).join(".")}catch(r){}return e},C=function(e){try{var t=localStorage.getItem("gleap-widget-".concat(e));if(t)return JSON.parse(t)}catch(n){}return null},I=function(e,t){var n="gleap-widget-".concat(e);if(t)try{localStorage.setItem(n,JSON.stringify(t))}catch(o){}else localStorage.removeItem(n)},O=function(e){"complete"===document.readyState||"loaded"===document.readyState||"interactive"===document.readyState?e():document.addEventListener("DOMContentLoaded",(function(){e()}))};function E(e){return E="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},E(e)}function T(e,t){for(var n=0;n=200&&i.status<300)try{var e=i.responseText?JSON.parse(i.responseText):null;o(e)}catch(t){r({status:i.status,statusText:"JSON Parse Error",responseText:i.responseText,error:t})}else r({status:i.status,statusText:i.statusText,responseText:i.responseText})},i.onerror=function(){r({status:0,statusText:"Network Error",responseText:null})},i.send(n?JSON.stringify(n):null)}))}},{key:"_createCacheKey",value:function(e,t){return t?"".concat(e,"::").concat(t):e}},{key:"validateChecklist",value:function(e,t){var n=this,o=this._createCacheKey(e,t),r=this.validationCache.get(o);if(r)return r.status===M?Promise.resolve(r.internalId):Promise.reject(r.error);if(this.validationRequests.has(o))return this.validationRequests.get(o);var i=this._getApiUrl();if(!i){var a=new Error("ChecklistNetworkManager: Gleap API URL not configured.");return this.validationCache.set(o,{status:R,error:a}),Promise.reject(a)}var s="".concat(i,"/outbound/checklists?").concat(this._getQueryParams()),l=this._makeRequest("POST",s,{outboundId:e,sharedKey:t}).then((function(e){if(e&&e.id)return n.validationCache.set(o,{status:M,internalId:e.id}),e.id;var t=new Error("Validation response missing checklist ID.");throw n.validationCache.set(o,{status:R,error:e||t}),t})).catch((function(e){throw n.validationCache.set(o,{status:R,error:e}),e})).finally((function(){n.validationRequests.delete(o)}));return this.validationRequests.set(o,l),l}},{key:"fetchChecklist",value:function(e){var t=this,n=this.fetchCache.get(e);if(n)return n.status===M?Promise.resolve(JSON.parse(JSON.stringify(n.data))):Promise.reject(n.error);if(this.fetchRequests.has(e))return this.fetchRequests.get(e).then((function(e){return JSON.parse(JSON.stringify(e))}));var o=this._getApiUrl();if(!o){var r=new Error("ChecklistNetworkManager: Gleap API URL not configured.");return this.fetchCache.set(e,{status:R,error:r}),Promise.reject(r)}var i="".concat(o,"/outbound/checklists/").concat(e,"?convertTipTap=true&").concat(this._getQueryParams()),a=this._makeRequest("GET",i,null).then((function(n){if(n)return t.fetchCache.set(e,{status:M,data:n}),JSON.parse(JSON.stringify(n));var o=new Error("Empty response received for checklist fetch.");throw t.fetchCache.set(e,{status:R,error:n||o}),o})).catch((function(n){throw t.fetchCache.set(e,{status:R,error:n}),n})).finally((function(){t.fetchRequests.delete(e)}));return this.fetchRequests.set(e,a),a.then((function(e){return JSON.parse(JSON.stringify(e))}))}}],o=[{key:"getInstance",value:function(){return e.instance||(e.instance=new e),e.instance}}],n&&T(t.prototype,n),o&&T(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();L(P,"instance",null);const D=P,N=Math.min,j=Math.max,F=Math.round,B=Math.floor,_=e=>({x:e,y:e}),U={left:"right",right:"left",bottom:"top",top:"bottom"},H={start:"end",end:"start"};function z(e,t,n){return j(e,N(t,n))}function q(e,t){return"function"==typeof e?e(t):e}function W(e){return e.split("-")[0]}function G(e){return e.split("-")[1]}function V(e){return"x"===e?"y":"x"}function J(e){return"y"===e?"height":"width"}function Z(e){return["top","bottom"].includes(W(e))?"y":"x"}function K(e){return V(Z(e))}function Y(e){return e.replace(/start|end/g,(e=>H[e]))}function X(e){return e.replace(/left|right|bottom|top/g,(e=>U[e]))}function $(e){return"number"!=typeof e?function(e){return{top:0,right:0,bottom:0,left:0,...e}}(e):{top:e,right:e,bottom:e,left:e}}function Q(e){return{...e,top:e.y,left:e.x,right:e.x+e.width,bottom:e.y+e.height}}function ee(e,t,n){let{reference:o,floating:r}=e;const i=Z(t),a=K(t),s=J(a),l=W(t),c="y"===i,u=o.x+o.width/2-r.width/2,d=o.y+o.height/2-r.height/2,p=o[s]/2-r[s]/2;let h;switch(l){case"top":h={x:u,y:o.y-r.height};break;case"bottom":h={x:u,y:o.y+o.height};break;case"right":h={x:o.x+o.width,y:d};break;case"left":h={x:o.x-r.width,y:d};break;default:h={x:o.x,y:o.y}}switch(G(t)){case"start":h[a]-=p*(n&&c?-1:1);break;case"end":h[a]+=p*(n&&c?-1:1)}return h}async function te(e,t){var n;void 0===t&&(t={});const{x:o,y:r,platform:i,rects:a,elements:s,strategy:l}=e,{boundary:c="clippingAncestors",rootBoundary:u="viewport",elementContext:d="floating",altBoundary:p=!1,padding:h=0}=q(t,e),f=$(h),m=s[p?"floating"===d?"reference":"floating":d],g=Q(await i.getClippingRect({element:null==(n=await(null==i.isElement?void 0:i.isElement(m)))||n?m:m.contextElement||await(null==i.getDocumentElement?void 0:i.getDocumentElement(s.floating)),boundary:c,rootBoundary:u,strategy:l})),v="floating"===d?{...a.floating,x:o,y:r}:a.reference,y=await(null==i.getOffsetParent?void 0:i.getOffsetParent(s.floating)),b=await(null==i.isElement?void 0:i.isElement(y))&&await(null==i.getScale?void 0:i.getScale(y))||{x:1,y:1},w=Q(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:s,rect:v,offsetParent:y,strategy:l}):v);return{top:(g.top-w.top+f.top)/b.y,bottom:(w.bottom-g.bottom+f.bottom)/b.y,left:(g.left-w.left+f.left)/b.x,right:(w.right-g.right+f.right)/b.x}}const ne=function(e){return void 0===e&&(e=0),{name:"offset",options:e,async fn(t){var n,o;const{x:r,y:i,placement:a,middlewareData:s}=t,l=await async function(e,t){const{placement:n,platform:o,elements:r}=e,i=await(null==o.isRTL?void 0:o.isRTL(r.floating)),a=W(n),s=G(n),l="y"===Z(n),c=["left","top"].includes(a)?-1:1,u=i&&l?-1:1,d=q(t,e);let{mainAxis:p,crossAxis:h,alignmentAxis:f}="number"==typeof d?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...d};return s&&"number"==typeof f&&(h="end"===s?-1*f:f),l?{x:h*u,y:p*c}:{x:p*c,y:h*u}}(t,e);return a===(null==(n=s.offset)?void 0:n.placement)&&null!=(o=s.arrow)&&o.alignmentOffset?{}:{x:r+l.x,y:i+l.y,data:{...l,placement:a}}}}};function oe(e){return ae(e)?(e.nodeName||"").toLowerCase():"#document"}function re(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function ie(e){var t;return null==(t=(ae(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement}function ae(e){return e instanceof Node||e instanceof re(e).Node}function se(e){return e instanceof Element||e instanceof re(e).Element}function le(e){return e instanceof HTMLElement||e instanceof re(e).HTMLElement}function ce(e){return"undefined"!=typeof ShadowRoot&&(e instanceof ShadowRoot||e instanceof re(e).ShadowRoot)}function ue(e){const{overflow:t,overflowX:n,overflowY:o,display:r}=me(e);return/auto|scroll|overlay|hidden|clip/.test(t+o+n)&&!["inline","contents"].includes(r)}function de(e){return["table","td","th"].includes(oe(e))}function pe(e){const t=he(),n=me(e);return"none"!==n.transform||"none"!==n.perspective||!!n.containerType&&"normal"!==n.containerType||!t&&!!n.backdropFilter&&"none"!==n.backdropFilter||!t&&!!n.filter&&"none"!==n.filter||["transform","perspective","filter"].some((e=>(n.willChange||"").includes(e)))||["paint","layout","strict","content"].some((e=>(n.contain||"").includes(e)))}function he(){return!("undefined"==typeof CSS||!CSS.supports)&&CSS.supports("-webkit-backdrop-filter","none")}function fe(e){return["html","body","#document"].includes(oe(e))}function me(e){return re(e).getComputedStyle(e)}function ge(e){return se(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function ve(e){if("html"===oe(e))return e;const t=e.assignedSlot||e.parentNode||ce(e)&&e.host||ie(e);return ce(t)?t.host:t}function ye(e){const t=ve(e);return fe(t)?e.ownerDocument?e.ownerDocument.body:e.body:le(t)&&ue(t)?t:ye(t)}function be(e,t,n){var o;void 0===t&&(t=[]),void 0===n&&(n=!0);const r=ye(e),i=r===(null==(o=e.ownerDocument)?void 0:o.body),a=re(r);return i?t.concat(a,a.visualViewport||[],ue(r)?r:[],a.frameElement&&n?be(a.frameElement):[]):t.concat(r,be(r,[],n))}function we(e){const t=me(e);let n=parseFloat(t.width)||0,o=parseFloat(t.height)||0;const r=le(e),i=r?e.offsetWidth:n,a=r?e.offsetHeight:o,s=F(n)!==i||F(o)!==a;return s&&(n=i,o=a),{width:n,height:o,$:s}}function ke(e){return se(e)?e:e.contextElement}function xe(e){const t=ke(e);if(!le(t))return _(1);const n=t.getBoundingClientRect(),{width:o,height:r,$:i}=we(t);let a=(i?F(n.width):n.width)/o,s=(i?F(n.height):n.height)/r;return a&&Number.isFinite(a)||(a=1),s&&Number.isFinite(s)||(s=1),{x:a,y:s}}const Se=_(0);function Ce(e){const t=re(e);return he()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:Se}function Ie(e,t,n,o){void 0===t&&(t=!1),void 0===n&&(n=!1);const r=e.getBoundingClientRect(),i=ke(e);let a=_(1);t&&(o?se(o)&&(a=xe(o)):a=xe(e));const s=function(e,t,n){return void 0===t&&(t=!1),!(!n||t&&n!==re(e))&&t}(i,n,o)?Ce(i):_(0);let l=(r.left+s.x)/a.x,c=(r.top+s.y)/a.y,u=r.width/a.x,d=r.height/a.y;if(i){const e=re(i),t=o&&se(o)?re(o):o;let n=e,r=n.frameElement;for(;r&&o&&t!==n;){const e=xe(r),t=r.getBoundingClientRect(),o=me(r),i=t.left+(r.clientLeft+parseFloat(o.paddingLeft))*e.x,a=t.top+(r.clientTop+parseFloat(o.paddingTop))*e.y;l*=e.x,c*=e.y,u*=e.x,d*=e.y,l+=i,c+=a,n=re(r),r=n.frameElement}}return Q({width:u,height:d,x:l,y:c})}const Oe=[":popover-open",":modal"];function Ee(e){return Oe.some((t=>{try{return e.matches(t)}catch(n){return!1}}))}function Te(e){return Ie(ie(e)).left+ge(e).scrollLeft}function Le(e,t,n){let o;if("viewport"===t)o=function(e,t){const n=re(e),o=ie(e),r=n.visualViewport;let i=o.clientWidth,a=o.clientHeight,s=0,l=0;if(r){i=r.width,a=r.height;const e=he();(!e||e&&"fixed"===t)&&(s=r.offsetLeft,l=r.offsetTop)}return{width:i,height:a,x:s,y:l}}(e,n);else if("document"===t)o=function(e){const t=ie(e),n=ge(e),o=e.ownerDocument.body,r=j(t.scrollWidth,t.clientWidth,o.scrollWidth,o.clientWidth),i=j(t.scrollHeight,t.clientHeight,o.scrollHeight,o.clientHeight);let a=-n.scrollLeft+Te(e);const s=-n.scrollTop;return"rtl"===me(o).direction&&(a+=j(t.clientWidth,o.clientWidth)-r),{width:r,height:i,x:a,y:s}}(ie(e));else if(se(t))o=function(e,t){const n=Ie(e,!0,"fixed"===t),o=n.top+e.clientTop,r=n.left+e.clientLeft,i=le(e)?xe(e):_(1);return{width:e.clientWidth*i.x,height:e.clientHeight*i.y,x:r*i.x,y:o*i.y}}(t,n);else{const n=Ce(e);o={...t,x:t.x-n.x,y:t.y-n.y}}return Q(o)}function Ae(e,t){const n=ve(e);return!(n===t||!se(n)||fe(n))&&("fixed"===me(n).position||Ae(n,t))}function Me(e,t,n){const o=le(t),r=ie(t),i="fixed"===n,a=Ie(e,!0,i,t);let s={scrollLeft:0,scrollTop:0};const l=_(0);if(o||!o&&!i)if(("body"!==oe(t)||ue(r))&&(s=ge(t)),o){const e=Ie(t,!0,i,t);l.x=e.x+t.clientLeft,l.y=e.y+t.clientTop}else r&&(l.x=Te(r));return{x:a.left+s.scrollLeft-l.x,y:a.top+s.scrollTop-l.y,width:a.width,height:a.height}}function Re(e,t){return le(e)&&"fixed"!==me(e).position?t?t(e):e.offsetParent:null}function Pe(e,t){const n=re(e);if(!le(e)||Ee(e))return n;let o=Re(e,t);for(;o&&de(o)&&"static"===me(o).position;)o=Re(o,t);return o&&("html"===oe(o)||"body"===oe(o)&&"static"===me(o).position&&!pe(o))?n:o||function(e){let t=ve(e);for(;le(t)&&!fe(t);){if(pe(t))return t;t=ve(t)}return null}(e)||n}const De={convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{elements:t,rect:n,offsetParent:o,strategy:r}=e;const i="fixed"===r,a=ie(o),s=!!t&&Ee(t.floating);if(o===a||s&&i)return n;let l={scrollLeft:0,scrollTop:0},c=_(1);const u=_(0),d=le(o);if((d||!d&&!i)&&(("body"!==oe(o)||ue(a))&&(l=ge(o)),le(o))){const e=Ie(o);c=xe(o),u.x=e.x+o.clientLeft,u.y=e.y+o.clientTop}return{width:n.width*c.x,height:n.height*c.y,x:n.x*c.x-l.scrollLeft*c.x+u.x,y:n.y*c.y-l.scrollTop*c.y+u.y}},getDocumentElement:ie,getClippingRect:function(e){let{element:t,boundary:n,rootBoundary:o,strategy:r}=e;const i="clippingAncestors"===n?function(e,t){const n=t.get(e);if(n)return n;let o=be(e,[],!1).filter((e=>se(e)&&"body"!==oe(e))),r=null;const i="fixed"===me(e).position;let a=i?ve(e):e;for(;se(a)&&!fe(a);){const t=me(a),n=pe(a);n||"fixed"!==t.position||(r=null),(i?!n&&!r:!n&&"static"===t.position&&r&&["absolute","fixed"].includes(r.position)||ue(a)&&!n&&Ae(e,a))?o=o.filter((e=>e!==a)):r=t,a=ve(a)}return t.set(e,o),o}(t,this._c):[].concat(n),a=[...i,o],s=a[0],l=a.reduce(((e,n)=>{const o=Le(t,n,r);return e.top=j(o.top,e.top),e.right=N(o.right,e.right),e.bottom=N(o.bottom,e.bottom),e.left=j(o.left,e.left),e}),Le(t,s,r));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}},getOffsetParent:Pe,getElementRects:async function(e){const t=this.getOffsetParent||Pe,n=this.getDimensions;return{reference:Me(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,...await n(e.floating)}}},getClientRects:function(e){return Array.from(e.getClientRects())},getDimensions:function(e){const{width:t,height:n}=we(e);return{width:t,height:n}},getScale:xe,isElement:se,isRTL:function(e){return"rtl"===me(e).direction}};function Ne(e,t,n,o){void 0===o&&(o={});const{ancestorScroll:r=!0,ancestorResize:i=!0,elementResize:a="function"==typeof ResizeObserver,layoutShift:s="function"==typeof IntersectionObserver,animationFrame:l=!1}=o,c=ke(e),u=r||i?[...c?be(c):[],...be(t)]:[];u.forEach((e=>{r&&e.addEventListener("scroll",n,{passive:!0}),i&&e.addEventListener("resize",n)}));const d=c&&s?function(e,t){let n,o=null;const r=ie(e);function i(){var e;clearTimeout(n),null==(e=o)||e.disconnect(),o=null}return function a(s,l){void 0===s&&(s=!1),void 0===l&&(l=1),i();const{left:c,top:u,width:d,height:p}=e.getBoundingClientRect();if(s||t(),!d||!p)return;const h={rootMargin:-B(u)+"px "+-B(r.clientWidth-(c+d))+"px "+-B(r.clientHeight-(u+p))+"px "+-B(c)+"px",threshold:j(0,N(1,l))||1};let f=!0;function m(e){const t=e[0].intersectionRatio;if(t!==l){if(!f)return a();t?a(!1,t):n=setTimeout((()=>{a(!1,1e-7)}),100)}f=!1}try{o=new IntersectionObserver(m,{...h,root:r.ownerDocument})}catch(g){o=new IntersectionObserver(m,h)}o.observe(e)}(!0),i}(c,n):null;let p,h=-1,f=null;a&&(f=new ResizeObserver((e=>{let[o]=e;o&&o.target===c&&f&&(f.unobserve(t),cancelAnimationFrame(h),h=requestAnimationFrame((()=>{var e;null==(e=f)||e.observe(t)}))),n()})),c&&!l&&f.observe(c),f.observe(t));let m=l?Ie(e):null;return l&&function t(){const o=Ie(e);!m||o.x===m.x&&o.y===m.y&&o.width===m.width&&o.height===m.height||n();m=o,p=requestAnimationFrame(t)}(),n(),()=>{var e;u.forEach((e=>{r&&e.removeEventListener("scroll",n),i&&e.removeEventListener("resize",n)})),null==d||d(),null==(e=f)||e.disconnect(),f=null,l&&cancelAnimationFrame(p)}}const je=function(e){return void 0===e&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:o,placement:r}=t,{mainAxis:i=!0,crossAxis:a=!1,limiter:s={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...l}=q(e,t),c={x:n,y:o},u=await te(t,l),d=Z(W(r)),p=V(d);let h=c[p],f=c[d];if(i){const e="y"===p?"bottom":"right";h=z(h+u["y"===p?"top":"left"],h,h-u[e])}if(a){const e="y"===d?"bottom":"right";f=z(f+u["y"===d?"top":"left"],f,f-u[e])}const m=s.fn({...t,[p]:h,[d]:f});return{...m,data:{x:m.x-n,y:m.y-o}}}}},Fe=function(e){return void 0===e&&(e={}),{name:"flip",options:e,async fn(t){var n,o;const{placement:r,middlewareData:i,rects:a,initialPlacement:s,platform:l,elements:c}=t,{mainAxis:u=!0,crossAxis:d=!0,fallbackPlacements:p,fallbackStrategy:h="bestFit",fallbackAxisSideDirection:f="none",flipAlignment:m=!0,...g}=q(e,t);if(null!=(n=i.arrow)&&n.alignmentOffset)return{};const v=W(r),y=W(s)===s,b=await(null==l.isRTL?void 0:l.isRTL(c.floating)),w=p||(y||!m?[X(s)]:function(e){const t=X(e);return[Y(e),t,Y(t)]}(s));p||"none"===f||w.push(...function(e,t,n,o){const r=G(e);let i=function(e,t,n){const o=["left","right"],r=["right","left"],i=["top","bottom"],a=["bottom","top"];switch(e){case"top":case"bottom":return n?t?r:o:t?o:r;case"left":case"right":return t?i:a;default:return[]}}(W(e),"start"===n,o);return r&&(i=i.map((e=>e+"-"+r)),t&&(i=i.concat(i.map(Y)))),i}(s,m,f,b));const k=[s,...w],x=await te(t,g),S=[];let C=(null==(o=i.flip)?void 0:o.overflows)||[];if(u&&S.push(x[v]),d){const e=function(e,t,n){void 0===n&&(n=!1);const o=G(e),r=K(e),i=J(r);let a="x"===r?o===(n?"end":"start")?"right":"left":"start"===o?"bottom":"top";return t.reference[i]>t.floating[i]&&(a=X(a)),[a,X(a)]}(r,a,b);S.push(x[e[0]],x[e[1]])}if(C=[...C,{placement:r,overflows:S}],!S.every((e=>e<=0))){var I,O;const e=((null==(I=i.flip)?void 0:I.index)||0)+1,t=k[e];if(t)return{data:{index:e,overflows:C},reset:{placement:t}};let n=null==(O=C.filter((e=>e.overflows[0]<=0)).sort(((e,t)=>e.overflows[1]-t.overflows[1]))[0])?void 0:O.placement;if(!n)switch(h){case"bestFit":{var E;const e=null==(E=C.map((e=>[e.placement,e.overflows.filter((e=>e>0)).reduce(((e,t)=>e+t),0)])).sort(((e,t)=>e[1]-t[1]))[0])?void 0:E[0];e&&(n=e);break}case"initialPlacement":n=s}if(r!==n)return{reset:{placement:n}}}return{}}}},Be=e=>({name:"arrow",options:e,async fn(t){const{x:n,y:o,placement:r,rects:i,platform:a,elements:s,middlewareData:l}=t,{element:c,padding:u=0}=q(e,t)||{};if(null==c)return{};const d=$(u),p={x:n,y:o},h=K(r),f=J(h),m=await a.getDimensions(c),g="y"===h,v=g?"top":"left",y=g?"bottom":"right",b=g?"clientHeight":"clientWidth",w=i.reference[f]+i.reference[h]-p[h]-i.floating[f],k=p[h]-i.reference[h],x=await(null==a.getOffsetParent?void 0:a.getOffsetParent(c));let S=x?x[b]:0;S&&await(null==a.isElement?void 0:a.isElement(x))||(S=s.floating[b]||i.floating[f]);const C=w/2-k/2,I=S/2-m[f]/2-1,O=N(d[v],I),E=N(d[y],I),T=O,L=S-m[f]-E,A=S/2-m[f]/2+C,M=z(T,A,L),R=!l.arrow&&null!=G(r)&&A!==M&&i.reference[f]/2-(A{const o=new Map,r={platform:De,...n},i={...r.platform,_c:o};return(async(e,t,n)=>{const{placement:o="bottom",strategy:r="absolute",middleware:i=[],platform:a}=n,s=i.filter(Boolean),l=await(null==a.isRTL?void 0:a.isRTL(t));let c=await a.getElementRects({reference:e,floating:t,strategy:r}),{x:u,y:d}=ee(c,o,l),p=o,h={},f=0;for(let m=0;me.length)&&(t=e.length);for(var n=0,o=new Array(t);n'):""),i.appendChild(a),t.repositionHotspot(e,n),r=a,t.elementToTooltipMap.set(e,n)}else r=e;var s=t.createTooltip(r,n.html,n);t.elementToFloatingUIMap.set(e,s)}}})),Ge(this,"updateFilteredTooltips",(function(){t.filteredTooltips=t.getFilteredTooltips(),t.checkForTooltips()})),Ge(this,"getFilteredTooltips",(function(){if(!t.tooltips)return[];var e=window.location.href;return t.tooltips.filter((function(t){return!t.page||0===t.page.length||!!Ue(e,t.page,t.pageType)}))})),Ge(this,"checkForTooltips",(function(){for(var e=0;e0&&this.filteredTooltips.forEach((function(n){n.selector&&e.matches(n.selector)&&t.linkTooltip(e,n)}))}},{key:"start",value:function(){var e=this,t=this;if(window){var n,o,r,i=(n=t.updateHotspotPositions.bind(t),o=250,r=null,function(){if(!r){var e=this,t=arguments;r=setTimeout((function(){n.call.apply(n,[e].concat(ze(t))),r=null}),o)}});window.addEventListener("resize",i),window.requestAnimationFrame((function(){e.observer=new MutationObserver((function(n){t.lastUrl!==window.location.href&&(t.lastUrl=window.location.href,t.filteredTooltips=t.getFilteredTooltips()),n.forEach((function(n){if("attributes"===n.type){var o=n.target;o.nodeType===Node.ELEMENT_NODE&&(o.querySelector("[data-gleap-tooltip-hotspot]")||o.hasAttribute("data-gleap-tooltip-mode")||o.hasAttribute("data-gleap-tooltip"))&&t.updateHotspotPositions()}n.addedNodes.forEach((function(e){e.nodeType===Node.ELEMENT_NODE&&t.processNodeInsertion(e)})),n.removedNodes.forEach((function(t){if(t.nodeType===Node.ELEMENT_NODE&&e.elementToFloatingUIMap.has(t)){var n=e.elementToFloatingUIMap.get(t);n&&(n.tooltip&&n.tooltip.remove(),n.cleanup(),e.elementToFloatingUIMap.delete(t))}e.elementToTooltipMap.has(t)&&e.elementToTooltipMap.delete(t)}))}))})),e.observer.observe(document.body,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["style","class"]})}))}}},{key:"updateHotspotPositions",value:function(){var e=this;document.querySelectorAll("[data-gleap-tooltip-mode='hotspot']").forEach((function(t){var n=e.elementToTooltipMap.get(t);n&&e.repositionHotspot(t,n)}))}},{key:"createTooltip",value:function(e,t,n){var o=document.createElement("div");o.className="gleap-tooltip",o.innerHTML='
\n '.concat(t,'\n
\n \n \n \n
\n
'),document.body.appendChild(o);var r,i=o.querySelector(".gleap-tooltip-arrow"),a=Ne(e,o,(function(){_e(e,o,{placement:"left"===n.posX?"left":"right",middleware:[ne(10),Fe(),je(),Be({element:i})]}).then((function(e){var t=e.x,n=e.y,r=e.middlewareData,a=e.placement;try{if(Object.assign(o.style,{left:"".concat(t,"px"),top:"".concat(n,"px")}),r.arrow){var s={left:"",top:"",transform:""};null!=r.arrow.x&&(s.left="".concat(r.arrow.x,"px"),"bottom"===a?(s.transform="translateY(-7px) rotate(180deg)",s.top="".concat(-20,"px")):"top"===a&&(s.transform="translateY(7px) rotate(0deg)",s.top="100%")),null!=r.arrow.y&&(s.top="".concat(r.arrow.y,"px"),"right"===a?(s.transform="translateX(-7px) rotate(90deg)",s.left="".concat(-20,"px")):"left"===a&&(s.transform="translateX(7px) rotate(270deg)",s.left="100%")),Object.assign(i.style,s)}}catch(l){}}))}));function s(){clearTimeout(r),o.style.visibility="visible",o.style.opacity="1",o.style.pointerEvents="auto"}function l(){r=setTimeout((function(){o.style.opacity="0",setTimeout((function(){o.style.visibility="hidden",o.style.pointerEvents="none"}),200)}),500)}return e.addEventListener("mouseenter",s),e.addEventListener("mouseleave",l),o.addEventListener("mouseenter",s),o.addEventListener("mouseleave",l),{cleanup:a,tooltip:o}}},{key:"canEmbed",value:function(e){var t=new Set(["area","base","br","embed","hr","img","input","source","track","wbr","canvas"]);return e&&!t.has(e.tagName.toLowerCase())}},{key:"destroy",value:function(){this.observer&&(this.observer.disconnect(),this.observer=null),this.resizeListener&&(window.removeEventListener("resize",this.resizeListener),this.resizeListener=null),document.querySelectorAll(".gleap-tooltip").forEach((function(e){return e.remove()})),document.querySelectorAll("[data-gleap-tooltip-anchor]").forEach((function(e){return e.remove()})),document.querySelectorAll("[data-gleap-tooltip-hotspot]").forEach((function(e){return e.remove()})),document.querySelectorAll("[data-gleap-tooltip]").forEach((function(e){return e.removeAttribute("data-gleap-tooltip")})),document.querySelectorAll("[data-gleap-tooltip-mode]").forEach((function(e){return e.removeAttribute("data-gleap-tooltip-mode")})),this.elementToFloatingUIMap=new WeakMap,this.elementToTooltipMap=new WeakMap,this.tooltips=[],this.filteredTooltips=[]}},{key:"repositionHotspot",value:function(e,t){if(e&&t){var n=e.getAttribute("data-gleap-tooltip");if(n){var o=document.querySelector('[data-gleap-tooltip-hotspot="'.concat(n,'"]'));if(o){t.posX||(t.posX="right"),t.posY||(t.posY="center"),t.offsetX||(t.offsetX=4),t.offsetY||(t.offsetY=0);var r=e.getBoundingClientRect();try{var i=document.createRange();i.selectNodeContents(e);var a=window.getComputedStyle(e),s=i.getBoundingClientRect().width+parseFloat(a.paddingLeft);s0&&void 0!==arguments[0]?arguments[0]:0,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];t.session&&t.session.gleapHash&&xn.notifyEvent("unregister-pushmessage-group","gleapuser-".concat(t.session.gleapHash));try{I("session-".concat(t.sdkKey),null)}catch(r){}if(t.useCookies)try{!function(e){try{var t=S(window.location.host.split(":")[0]);document.cookie=e+"=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT; Domain="+t}catch(r){}}("session-".concat(t.sdkKey))}catch(r){}if(t.ready=!1,t.session={gleapId:null,gleapHash:null,name:"",email:"",userId:"",phone:"",value:0},Vt.getInstance().sendMessage({name:"session-cleared"},!0),Mh.getInstance().clearAllNotifications(!1),Mh.getInstance().setNotificationCount(0),Bh.getInstance().removeBannerUI(),Gh.getInstance().hideModal(),n&&!isNaN(e)){var o=10*Math.pow(e,2);setTimeout((function(){t.startSession(e+1)}),1e3*o)}})),$e(this,"validateSession",(function(e){var n;if(e&&e.gleapId){var o=!1;(null===(n=t.session)||void 0===n?void 0:n.gleapId)!==(null==e?void 0:e.gleapId)&&(o=!0),t.session&&t.session.gleapHash&&xn.notifyEvent("unregister-pushmessage-group","gleapuser-".concat(t.session.gleapHash)),I("session-".concat(t.sdkKey),e),t.useCookies&&function(e,t,n){try{var o="";if(n){var r=new Date;r.setTime(r.getTime()+24*n*60*60*1e3),o="; expires="+r.toUTCString()}var i=S(window.location.host.split(":")[0]);document.cookie=e+"="+(t||"")+o+"; path=/; domain="+i}catch(a){}}("session-".concat(t.sdkKey),encodeURIComponent(JSON.stringify(e)),365),t.session=e,t.ready=!0,t.session&&t.session.gleapHash&&xn.notifyEvent("register-pushmessage-group","gleapuser-".concat(t.session.gleapHash)),o&&(setTimeout((function(){D.getInstance().clearCache(),it.getInstance().restart();var e=Je.getInstance();if(e){try{e.destroy()}catch(t){}e.load()}}),0),"function"==typeof window.dispatchEvent&&window.dispatchEvent(new CustomEvent("session-updated"))),t.notifySessionReady()}})),$e(this,"startSession",(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;try{if(t.useCookies){var n=function(e){try{for(var t=e+"=",n=document.cookie.split(";"),o=0;o0)){var r=C("session-".concat(t.sdkKey));r&&t.validateSession(r)}var i=t,a=new XMLHttpRequest;a.open("POST",i.apiUrl+"/sessions"),a.setRequestHeader("Content-Type","application/json;charset=UTF-8"),a.setRequestHeader("Api-Token",i.sdkKey);try{t.session&&t.session.gleapId&&t.session.gleapHash&&(a.setRequestHeader("Gleap-Id",t.session.gleapId),a.setRequestHeader("Gleap-Hash",t.session.gleapHash))}catch(s){}a.onreadystatechange=function(t){if(4===a.readyState)if(200===a.status||201===a.status)try{var n=JSON.parse(a.responseText);i.validateSession(n)}catch(s){}else 429!==a.status&&i.clearSession(e,!0)},a.send(JSON.stringify({lang:gh.getInstance().getActiveLanguage()}))})),$e(this,"checkIfSessionNeedsUpdate",(function(e,n){if(!t.session||!t.session.userId||!e)return!0;try{if(t.session.userId.toString()!==e.toString())return!0}catch(o){}return t.checkIfSessionDataNeedsUpdate(n)})),$e(this,"checkIfSessionDataNeedsUpdate",(function(e){if(e)for(var n=Object.keys(e),o=0;o0)for(var e=0;e2)&&0!==t.streamedEventArray.length&&t.socket&&t.socket.readyState===t.socket.OPEN){var e=t;t.streamingEvents=!0;var n=new XMLHttpRequest;n.open("POST",et.getInstance().apiUrl+"/sessions/ping"),n.setRequestHeader("Content-Type","application/json;charset=UTF-8"),et.getInstance().injectSession(n),n.onerror=function(){e.errorCount++,e.streamingEvents=!1},n.onreadystatechange=function(t){4===n.readyState&&(200===n.status||201===n.status?e.errorCount=0:e.errorCount++,e.streamingEvents=!1)};var o=Xt.getInstance().getSessionDuration();n.send(JSON.stringify({time:o,events:t.streamedEventArray,opened:Vt.getInstance().isOpened(),type:"js",sdkVersion:"14.8.11",ws:!0})),t.streamedEventArray=[]}})),this.handleOpenBound=this.handleOpen.bind(this),this.handleErrorBound=this.handleError.bind(this),this.handleMessageBound=this.handleMessage.bind(this),this.handleCloseBound=this.handleClose.bind(this)}var t,n,o;return t=e,o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],(n=[{key:"cleanupWebSocket",value:function(){this.connectionTimeout&&(clearTimeout(this.connectionTimeout),this.connectionTimeout=null),this.pingWS&&clearInterval(this.pingWS),this.socket&&(this.socket.removeEventListener("open",this.handleOpenBound),this.socket.removeEventListener("error",this.handleErrorBound),this.socket.removeEventListener("message",this.handleMessageBound),this.socket.removeEventListener("close",this.handleCloseBound),this.socket.close(),this.socket=null)}},{key:"initWebSocket",value:function(){this.cleanupWebSocket(),this.connectedWebSocketGleapId=et.getInstance().session.gleapId,et.getInstance().session&&et.getInstance().sdkKey&&(this.socket=new WebSocket("".concat(et.getInstance().wsApiUrl,"?gleapId=").concat(et.getInstance().session.gleapId,"&gleapHash=").concat(et.getInstance().session.gleapHash,"&apiKey=").concat(et.getInstance().sdkKey,"&sdkVersion=").concat("14.8.11")),this.socket.addEventListener("open",this.handleOpenBound),this.socket.addEventListener("message",this.handleMessageBound),this.socket.addEventListener("error",this.handleErrorBound),this.socket.addEventListener("close",this.handleCloseBound))}},{key:"handleOpen",value:function(e){var t=this;this.pingWS=setInterval((function(){t.socket.readyState===t.socket.OPEN&&(t.socket.send("PING"),t.socket.send(9))}),1e4),this.connectionTimeout&&(clearTimeout(this.connectionTimeout),this.connectionTimeout=null)}},{key:"handleMessage",value:function(e){this.processMessage(JSON.parse(e.data))}},{key:"handleError",value:function(e){}},{key:"handleClose",value:function(e){var t=this;setTimeout((function(){t.initWebSocket()}),5e3)}},{key:"processMessage",value:function(e){try{if("update"===e.name){var t=e.data,n=t.a,o=t.u,r=Vt.getInstance().isOpened();if(n){var i=["banner","modal"],a=n.filter((function(e){var t;return!r||i.includes(null==e||null===(t=e.actionType)||void 0===t?void 0:t.toLowerCase())}));_m.getInstance().performActions(a)}null!=o&&Mh.getInstance().setNotificationCount(o)}"checklist"===e.name&&null!=e&&e.data&&window&&"function"==typeof window.dispatchEvent&&window.dispatchEvent(new CustomEvent("checkListUpdate",{detail:e.data}))}catch(s){}}},{key:"getEventArray",value:function(){return this.eventArray}},{key:"stop",value:function(){this.cleanupMainLoop()}},{key:"resetErrorCountLoop",value:function(){var e=this;setInterval((function(){e.errorCount=0}),6e4)}},{key:"cleanupMainLoop",value:function(){this.mainLoopTimeout&&(clearInterval(this.mainLoopTimeout),this.mainLoopTimeout=null)}},{key:"restart",value:function(){this.connectedWebSocketGleapId!==et.getInstance().session.gleapId&&this.initWebSocket(),this.cleanupMainLoop(),this.trackInitialEvents(),this.runEventStreamLoop()}},{key:"start",value:function(){this.startPageListener(),this.resetErrorCountLoop()}},{key:"trackInitialEvents",value:function(){e.getInstance().logEvent("sessionStarted"),e.getInstance().logCurrentPage()}},{key:"logCurrentPage",value:function(){if(!_m.getInstance().disablePageTracking){var e=window.location.href;e&&e!==this.lastUrl&&(this.lastUrl=e,this.logEvent("pageView",{page:e}))}}},{key:"startPageListener",value:function(){var e=this;setInterval((function(){e.logCurrentPage()}),1e3)}},{key:"logEvent",value:function(e,t){var n={name:e,date:new Date};t&&(n.data=k(t)),this.eventArray.push(n),this.streamedEventArray.push(n),this.eventArray.length>this.eventMaxLength&&this.eventArray.shift(),this.streamedEventArray.length>this.eventMaxLength&&this.streamedEventArray.shift()}}])&&nt(t.prototype,n),o&&nt(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function at(e){return at="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},at(e)}function st(e,t){for(var n=0;n0)for(var e=0;e=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var l=o.call(a,"catchLoc"),c=o.call(a,"finallyLoc");if(l&&c){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&o.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),L(n),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var o=n.completion;if("throw"===o.type){var r=o.arg;L(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,o){return this.delegate={iterator:M(t),resultName:n,nextLoc:o},"next"===this.method&&(this.arg=e),g}},t}function ft(e,t,n,o,r,i,a){try{var s=e[i](a),l=s.value}catch(c){return void n(c)}s.done?t(l):Promise.resolve(l).then(o,r)}function mt(e){return function(){var t=this,n=arguments;return new Promise((function(o,r){var i=e.apply(t,n);function a(e){ft(i,o,r,a,s,"next",e)}function s(e){ft(i,o,r,a,s,"throw",e)}a(void 0)}))}}var gt=function(e){var t="",n=window.document.doctype;if(n&&(t=""),e&&e.childNodes&&e.childNodes.length>0)for(var o=0;o1?t-1:0),r=1;r0||t.scrollLeft>0)&&(s.setAttribute("bb-scrollpos",!0),s.setAttribute("bb-scrolltop",t.scrollTop),s.setAttribute("bb-scrollleft",t.scrollLeft)),"SELECT"!==d&&"TEXTAREA"!==d&&"INPUT"!==d||(h=t.value,("value"===t.getAttribute("gleap-ignore")||t.classList.contains("gl-mask"))&&(h=new Array(h.length+1).join("*")),s.setAttribute("bb-data-value",h),"checkbox"!==t.type&&"radio"!==t.type||!t.checked||s.setAttribute("bb-data-checked",!0))),r.appendChild(s),!t.shadowRoot){e.next=29;break}return f=n,n++,e.next=27,a(t.shadowRoot.firstChild,s,f);case 27:Ct(t.shadowRoot,s,f),void 0!==s.setAttribute&&s.setAttribute("bb-shadow-parent",f);case 29:return e.next=31,a(t.firstChild,s);case 31:case"end":return e.stop()}}),e,null,[[7,17]])})));return function(t,n,o){return e.apply(this,arguments)}}(),r=document.createDocumentFragment(),e.next=5,o(t,r);case 5:return(i=r.querySelector("head"))||(i=r),Ct(window.document,i),e.abrupt("return",r);case 9:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),Et=function(e){return new Promise(function(){var t=mt(ht().mark((function t(n,o){var r,i,a,s,l,c,u,d,p,h,f,m,g,v,y;return ht().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:for(r=window.document.querySelectorAll("style, link"),i=0;i0){for(c=l.childNodes;c.length>0;)l.parentNode.insertBefore(c[0],l);l.remove()}for(u=a.querySelectorAll("script, noscript"),i=0;i0?r.innerHTML=n.formatTime(e):(r.innerHTML="2:00",n.stopScreenRecording())}),1e3),this.mediaRecorder.ondataavailable=function(e){e.data.size>0&&o.push(e.data)},t.getVideoTracks()[0].onended=function(){n.prepareRecording(o)},this.mediaRecorder.onstop=function(){n.prepareRecording(o)},this.mediaRecorder.start(200),n.rerender()})),At(this,"prepareRecording",(function(e){var t=new Blob(e,{type:this.getSupportedMimeType()}),n=this.getSupportedMimeType(),o=n.includes("mp4")?"mp4":"webm";this.file=new File([t],"screen-recording.".concat(o),{type:n});var r=document.querySelector(".bb-capture-preview video");r&&(r.src=URL.createObjectURL(t),this.audioAvailable=!0,this.isRecording=!1,this.rerender())})),this.rerender=t,this.permissionErrorText=n,navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia||(this.available=!1),setTimeout((function(){o.rerender()}),100)}var t,n,o;return t=e,(n=[{key:"getSupportedMimeType",value:function(){for(var e=0,t=["video/webm","audio/webm","video/webm;codecs=vp8","video/webm;codecs=daala","video/webm;codecs=h264","audio/webm;codecs=opus","video/mp4"];e0&&(e.tags=t),this.excludeData)for(var n=Object.keys(this.excludeData),o=0;oe.length)&&(t=e.length);for(var n=0,o=new Array(t);n0)if(t){var n=window.open(e,"_blank");n&&n.focus()}else window.location.href=e})),Wt(this,"autoWhiteListCookieManager",(function(){window&&window.cmp_block_ignoredomains&&window.cmp_block_ignoredomains.concat(["messenger-app.gleap.io"])})),Wt(this,"injectFrame",(function(){t.injectedFrame||(t.injectedFrame=!0,t.autoWhiteListCookieManager(),O((function(){dt.getInstance().onConfigLoaded((function(){dt.getInstance().applyStylesFromConfig();var e=document.createElement("div");e.className="gleap-frame-container gleap-frame-container--hidden gl-block",e.innerHTML='
'),document.body.appendChild(e),t.gleapFrameContainer=e,t.gleapFrame=document.querySelector(".gleap-frame"),t.updateFrameStyle(),"widget"===t.appMode&&t.showFrameContainer(!0)}))})))})),Wt(this,"showImage",(function(e){O((function(){var t=document.createElement("div");t.className="gleap-image-view",t.innerHTML='
\n \n
'),document.body.appendChild(t);var n=function(){t.remove()};t.querySelector(".gleap-image-view-close").addEventListener("click",(function(){n()})),t.addEventListener("click",(function(e){e.target===t&&n()}))}))})),Wt(this,"updateFrameStyle",(function(){if(t.gleapFrameContainer){for(var e="gleap-frame-container--survey",n="gleap-frame-container--extended",o="gleap-frame-container--survey-full",r="gleap-frame-container--classic",i="gleap-frame-container--classic-left",s="gleap-frame-container--modern-left",l="gleap-frame-container--no-button",c=[r,i,n,s,l,e,o],u=0;u0&&void 0!==arguments[0]&&arguments[0];"survey_web"!==this.appMode&&(this.hideMarkerManager(),this.gleapFrameContainer&&(this.gleapFrameContainer.classList.add("gleap-frame-container--hidden"),this.gleapFrameContainer.classList.remove("gleap-frame-container--animate")),e&&this.sendMessage({name:"reset-routes",data:{}}),this.widgetOpened=!1,this.updateWidgetStatus(),a.getInstance().updateFeedbackButtonState(),xn.notifyEvent("close"),Mh.getInstance().reloadNotificationsFromCache(),this.unregisterEscListener(),"undefined"!=typeof window&&void 0!==window.focus&&window.focus())}},{key:"sendMessage",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];try{this.gleapFrame=document.querySelector(".gleap-frame"),this.comReady&&this.gleapFrame&&this.gleapFrame.contentWindow?this.gleapFrame.contentWindow.postMessage(JSON.stringify(e),"*"):t&&this.queue.push(e)}catch(n){}}},{key:"sendSessionUpdate",value:function(){this.sendMessage({name:"session-update",data:{sessionData:et.getInstance().getSession(),apiUrl:et.getInstance().apiUrl,sdkKey:et.getInstance().sdkKey}})}},{key:"sendConfigUpdate",value:function(){this.comReady&&(this.sendMessage({name:"config-update",data:{config:dt.getInstance().getFlowConfig(),aiTools:dt.getInstance().getAiTools(),overrideLanguage:gh.getInstance().getOverrideLanguage()}}),this.updateFrameStyle())}},{key:"showDrawingScreen",value:function(e){var t=this;this.hideWidget(),this.markerManager=new dh(e),this.markerManager.show((function(e){e||t.hideMarkerManager(),t.showWidget()}))}},{key:"workThroughQueue",value:function(){var e=Ht(this.queue);this.queue=[];for(var t=0;t0&&(n.tags=o),e.sendMessage({name:"collect-ticket-data",data:n})}if("height-update"===t.name){e.frameHeight=t.data;var r=document.querySelector(".gleap-frame-container-inner");"survey"!==e.appMode&&"survey_full"!==e.appMode&&"survey_web"!==e.appMode||!r||(r.style.maxHeight="".concat(e.frameHeight,"px"))}if("notify-event"===t.name&&xn.notifyEvent(t.data.type,t.data.data),"cleanup-drawings"===t.name&&e.hideMarkerManager(),"open-url"===t.name){var i=t.data,a=!!t.newTab;e.urlHandler(i,a)}var s;if("start-product-tour"===t.name&&_m.startProductTour(null===(s=t.data)||void 0===s?void 0:s.tourId,!0),"run-custom-action"===t.name&&Ln.triggerCustomAction(t.data,{shareToken:t.shareToken}),"close-widget"===t.name&&e.hideWidget(),"tool-execution"===t.name&&xn.notifyEvent("tool-execution",t.data),"send-feedback"===t.name){var l=t.data.formData,c=t.data.action,u=t.data.outboundId,d=t.data.spamToken;new _t(c.feedbackType,"MEDIUM",l,!1,c.excludeData,u,d).sendFeedback().then((function(t){if(e.sendMessage({name:"feedback-sent",data:t}),xn.notifyEvent("feedback-sent",l),u&&u.length>0){xn.notifyEvent("outbound-sent",{outboundId:u,outbound:c,formData:l});try{delete l.reportedBy}catch(n){}_m.trackEvent("outbound-".concat(u,"-submitted"),l)}})).catch((function(t){e.sendMessage({name:"feedback-sending-failed",data:"Something went wrong, please try again."}),xn.notifyEvent("error-while-sending")}))}"start-screen-drawing"===t.name&&e.showDrawingScreen(t.data)})),window.addEventListener("message",(function(t){if(t.origin===e.frameUrl||t.origin===Bh.getInstance().bannerUrl)try{for(var n=JSON.parse(t.data),o=0;o1&&void 0!==arguments[1]?arguments[1]:"INFO";!e||e.length<=0||(this.logArray.push({log:x(e,1e3),date:new Date,priority:t}),this.logArray.length>this.logMaxLength&&this.logArray.shift())}},{key:"addLogWithArgs",value:function(e,t){if(e&&!(e.length<=0)){var n="";try{for(var o=0;o1&&void 0!==arguments[1])||arguments[1],n=x(e.innerText||"",40).replace(/(\r\n|\n|\r)/gm,"").replace(/ +(?= )/g,""),o="",r="";if(void 0!==e.getAttribute){var i=e.getAttribute("id");i&&(o=' id="'.concat(i,'"'));var a=e.getAttribute("class");a&&(r=' class="'.concat(a,'"'))}var s=(e.tagName||"").toLowerCase(),l="<",c=">";return t||(l="[",c="]"),"".concat(l).concat(s).concat(o).concat(r).concat(c).concat(n).concat(l,"/").concat(s).concat(c)}(e.target),"CLICK")}}))}}],o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],n&&sn(t.prototype,n),o&&sn(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function hn(e){return hn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},hn(e)}function fn(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{};if("flow-started"===e){var n=_m.getInstance();n.setGlobalDataItem("webReplay",null),n.setGlobalDataItem("screenRecordingData",null),n.takeCurrentReplay()}var o=this.getInstance().eventListeners[e];if(o)for(var r=0;r((e,t,n)=>t in e?Mn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,"symbol"!=typeof t?t+"":t,n),Pn=Object.defineProperty,Dn=(e,t,n)=>((e,t,n)=>t in e?Pn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,"symbol"!=typeof t?t+"":t,n),Nn=(e=>(e[e.Document=0]="Document",e[e.DocumentType=1]="DocumentType",e[e.Element=2]="Element",e[e.Text=3]="Text",e[e.CDATA=4]="CDATA",e[e.Comment=5]="Comment",e))(Nn||{});const jn={Node:["childNodes","parentNode","parentElement","textContent"],ShadowRoot:["host","styleSheets"],Element:["shadowRoot","querySelector","querySelectorAll"],MutationObserver:[]},Fn={Node:["contains","getRootNode"],ShadowRoot:["getSelection"],Element:[],MutationObserver:["constructor"]},Bn={},_n=()=>!!globalThis.Zone;function Un(e){if(Bn[e])return Bn[e];const t=globalThis[e],n=t.prototype,o=e in jn?jn[e]:void 0,r=Boolean(o&&o.every((e=>{var t,o;return Boolean(null==(o=null==(t=Object.getOwnPropertyDescriptor(n,e))?void 0:t.get)?void 0:o.toString().includes("[native code]"))}))),i=e in Fn?Fn[e]:void 0,a=Boolean(i&&i.every((e=>{var t;return"function"==typeof n[e]&&(null==(t=n[e])?void 0:t.toString().includes("[native code]"))})));if(r&&a&&!_n())return Bn[e]=t.prototype,t.prototype;try{const o=document.createElement("iframe");document.body.appendChild(o);const r=o.contentWindow;if(!r)return t.prototype;const i=r[e].prototype;return document.body.removeChild(o),i?Bn[e]=i:n}catch{return n}}const Hn={};function zn(e,t,n){var o;const r=`${e}.${String(n)}`;if(Hn[r])return Hn[r].call(t);const i=Un(e),a=null==(o=Object.getOwnPropertyDescriptor(i,n))?void 0:o.get;return a?(Hn[r]=a,a.call(t)):t[n]}const qn={};function Wn(e,t,n){const o=`${e}.${String(n)}`;if(qn[o])return qn[o].bind(t);const r=Un(e)[n];return"function"!=typeof r?t[n]:(qn[o]=r,r.bind(t))}const Gn={childNodes:function(e){return zn("Node",e,"childNodes")},parentNode:function(e){return zn("Node",e,"parentNode")},parentElement:function(e){return zn("Node",e,"parentElement")},textContent:function(e){return zn("Node",e,"textContent")},contains:function(e,t){return Wn("Node",e,"contains")(t)},getRootNode:function(e){return Wn("Node",e,"getRootNode")()},host:function(e){return e&&"host"in e?zn("ShadowRoot",e,"host"):null},styleSheets:function(e){return e.styleSheets},shadowRoot:function(e){return e&&"shadowRoot"in e?zn("Element",e,"shadowRoot"):null},querySelector:function(e,t){return zn("Element",e,"querySelector")(t)},querySelectorAll:function(e,t){return zn("Element",e,"querySelectorAll")(t)},mutationObserver:function(){return Un("MutationObserver").constructor}};function Vn(e){return e.nodeType===e.ELEMENT_NODE}function Jn(e){const t=e&&"host"in e&&"mode"in e&&Gn.host(e)||null;return Boolean(t&&"shadowRoot"in t&&Gn.shadowRoot(t)===e)}function Zn(e){return"[object ShadowRoot]"===Object.prototype.toString.call(e)}function Kn(e){try{const n=e.rules||e.cssRules;if(!n)return null;let o=e.href;!o&&e.ownerNode&&e.ownerNode.ownerDocument&&(o=e.ownerNode.ownerDocument.location.href);const r=Array.from(n,(e=>Yn(e,o))).join("");return(t=r).includes(" background-clip: text;")&&!t.includes(" -webkit-background-clip: text;")&&(t=t.replace(/\sbackground-clip:\s*text;/g," -webkit-background-clip: text; background-clip: text;")),t}catch(n){return null}var t}function Yn(e,t){if(function(e){return"styleSheet"in e}(e)){let t;try{t=Kn(e.styleSheet)||function(e){const{cssText:t}=e;if(t.split('"').length<3)return t;const n=["@import",`url(${JSON.stringify(e.href)})`];return""===e.layerName?n.push("layer"):e.layerName&&n.push(`layer(${e.layerName})`),e.supportsText&&n.push(`supports(${e.supportsText})`),e.media.length&&n.push(e.media.mediaText),n.join(" ")+";"}(e)}catch(n){t=e.cssText}return e.styleSheet.href?so(t,e.styleSheet.href):t}{let n=e.cssText;return function(e){return"selectorText"in e}(e)&&e.selectorText.includes(":")&&(n=function(e){const t=/(\[(?:[\w-]+)[^\\])(:(?:[\w-]+)\])/gm;return e.replace(t,"$1\\$2")}(n)),t?so(n,t):n}}class Xn{constructor(){Dn(this,"idNodeMap",new Map),Dn(this,"nodeMetaMap",new WeakMap)}getId(e){var t;if(!e)return-1;return(null==(t=this.getMeta(e))?void 0:t.id)??-1}getNode(e){return this.idNodeMap.get(e)||null}getIds(){return Array.from(this.idNodeMap.keys())}getMeta(e){return this.nodeMetaMap.get(e)||null}removeNodeFromMap(e){const t=this.getId(e);this.idNodeMap.delete(t),e.childNodes&&e.childNodes.forEach((e=>this.removeNodeFromMap(e)))}has(e){return this.idNodeMap.has(e)}hasNode(e){return this.nodeMetaMap.has(e)}add(e,t){const n=t.id;this.idNodeMap.set(n,e),this.nodeMetaMap.set(e,t)}replace(e,t){const n=this.getNode(e);if(n){const e=this.nodeMetaMap.get(n);e&&this.nodeMetaMap.set(t,e)}this.idNodeMap.set(e,t)}reset(){this.idNodeMap=new Map,this.nodeMetaMap=new WeakMap}}function $n({element:e,maskInputOptions:t,tagName:n,type:o,value:r,maskInputFn:i}){let a=r||"";const s=o&&Qn(o);return(t[n.toLowerCase()]||s&&t[s])&&(a=i?i(a,e):"*".repeat(a.length)),a}function Qn(e){return e.toLowerCase()}const eo="__rrweb_original__";function to(e){const t=e.type;return e.hasAttribute("data-rr-is-password")?"password":t?Qn(t):null}function no(e,t){let n;try{n=new URL(e,t??window.location.href)}catch(r){return null}const o=n.pathname.match(/\.([0-9a-z]+)(?:$)/i);return(null==o?void 0:o[1])??null}const oo=/url\((?:(')([^']*)'|(")(.*?)"|([^)]*))\)/gm,ro=/^(?:[a-z+]+:)?\/\//i,io=/^www\..*/i,ao=/^(data:)([^,]*),(.*)/i;function so(e,t){return(e||"").replace(oo,((e,n,o,r,i,a)=>{const s=o||i||a,l=n||r||"";if(!s)return e;if(ro.test(s)||io.test(s))return`url(${l}${s}${l})`;if(ao.test(s))return`url(${l}${s}${l})`;if("/"===s[0])return`url(${l}${function(e){let t="";return t=e.indexOf("//")>-1?e.split("/").slice(0,3).join("/"):e.split("/")[0],t=t.split("?")[0],t}(t)+s}${l})`;const c=t.split("/"),u=s.split("/");c.pop();for(const t of u)"."!==t&&(".."===t?c.pop():c.push(t));return`url(${l}${c.join("/")}${l})`}))}function lo(e){return e.replace(/(\/\*[^*]*\*\/)|[\s;]/g,"")}function co(e,t){return function(e,t){const n=Array.from(t.childNodes),o=[];if(n.length>1&&e&&"string"==typeof e){const t=lo(e);for(let r=1;r=t.length);){let i=o(vo);if(","===i.slice(-1))i=wo(e,i.substring(0,i.length-1)),r.push(i);else{let o="";i=wo(e,i);let a=!1;for(;;){const e=t.charAt(n);if(""===e){r.push((i+o).trim());break}if(a)")"===e&&(a=!1);else{if(","===e){n+=1,r.push((i+o).trim());break}"("===e&&(a=!0)}o+=e,n+=1}}}return r.join(", ")}(e,o):"style"===n?so(o,xo(e)):"object"===t&&"data"===n?wo(e,o):o:wo(e,o):o}function Co(e,t,n){return("video"===e||"audio"===e)&&"autoplay"===t}function Io(e,t,n){if(!e)return!1;if(e.nodeType!==e.ELEMENT_NODE)return!!n&&Io(Gn.parentNode(e),t,n);for(let o=e.classList.length;o--;){const n=e.classList[o];if(t.test(n))return!0}return!!n&&Io(Gn.parentNode(e),t,n)}function Oo(e,t,n,o){let r;if(Vn(e)){if(r=e,!Gn.childNodes(r).length)return!1}else{if(null===Gn.parentElement(e))return!1;r=Gn.parentElement(e)}try{if("string"==typeof t){if(o){if(r.closest(`.${t}`))return!0}else if(r.classList.contains(t))return!0}else if(Io(r,t,o))return!0;if(n)if(o){if(r.closest(n))return!0}else if(r.matches(n))return!0}catch(i){}return!1}function Eo(e,t){const{doc:n,mirror:o,blockClass:r,blockSelector:i,needsMask:a,inlineStylesheet:s,maskInputOptions:l={},maskTextFn:c,maskInputFn:u,dataURLOptions:d={},inlineImages:p,recordCanvas:h,keepIframeSrcFn:f,newlyAddedElement:m=!1,cssCaptured:g=!1}=t,v=function(e,t){if(!t.hasNode(e))return;const n=t.getId(e);return 1===n?void 0:n}(n,o);switch(e.nodeType){case e.DOCUMENT_NODE:return"CSS1Compat"!==e.compatMode?{type:Nn.Document,childNodes:[],compatMode:e.compatMode}:{type:Nn.Document,childNodes:[]};case e.DOCUMENT_TYPE_NODE:return{type:Nn.DocumentType,name:e.name,publicId:e.publicId,systemId:e.systemId,rootId:v};case e.ELEMENT_NODE:return function(e,t){const{doc:n,blockClass:o,blockSelector:r,inlineStylesheet:i,maskInputOptions:a={},maskInputFn:s,dataURLOptions:l={},inlineImages:c,recordCanvas:u,keepIframeSrcFn:d,newlyAddedElement:p=!1,rootId:h}=t,f=function(e,t,n){try{if("string"==typeof t){if(e.classList.contains(t))return!0}else for(let n=e.classList.length;n--;){const o=e.classList[n];if(t.test(o))return!0}if(n)return e.matches(n)}catch(o){}return!1}(e,o,r),m=function(e){if(e instanceof HTMLFormElement)return"form";const t=Qn(e.tagName);return po.test(t)?"div":t}(e);let g={};const v=e.attributes.length;for(let w=0;wt.href===e.href));let o=null;t&&(o=Kn(t)),o&&(delete g.rel,delete g.href,g._cssText=o)}if("style"===m&&e.sheet){let t=Kn(e.sheet);t&&(e.childNodes.length>1&&(t=co(t,e)),g._cssText=t)}if("input"===m||"textarea"===m||"select"===m){const t=e.value,n=e.checked;"radio"!==g.type&&"checkbox"!==g.type&&"submit"!==g.type&&"button"!==g.type&&t?g.value=$n({element:e,type:to(e),tagName:m,value:t,maskInputOptions:a,maskInputFn:s}):n&&(g.checked=n)}"option"===m&&(e.selected&&!a.select?g.selected=!0:delete g.selected);"dialog"===m&&e.open&&(g.rr_open_mode=e.matches("dialog:modal")?"modal":"non-modal");if("canvas"===m&&u)if("2d"===e.__context)(function(e){const t=e.getContext("2d");if(!t)return!0;for(let n=0;n0!==e)))return!1}return!0})(e)||(g.rr_dataURL=e.toDataURL(l.type,l.quality));else if(!("__context"in e)){const t=e.toDataURL(l.type,l.quality),o=n.createElement("canvas");o.width=e.width,o.height=e.height;t!==o.toDataURL(l.type,l.quality)&&(g.rr_dataURL=t)}if("img"===m&&c){mo||(mo=n.createElement("canvas"),go=mo.getContext("2d"));const t=e,o=t.currentSrc||t.getAttribute("src")||"",r=t.crossOrigin,i=()=>{t.removeEventListener("load",i);try{mo.width=t.naturalWidth,mo.height=t.naturalHeight,go.drawImage(t,0,0),g.rr_dataURL=mo.toDataURL(l.type,l.quality)}catch(e){if("anonymous"!==t.crossOrigin)return t.crossOrigin="anonymous",void(t.complete&&0!==t.naturalWidth?i():t.addEventListener("load",i));console.warn(`Cannot inline img src=${o}! Error: ${e}`)}"anonymous"===t.crossOrigin&&(r?g.crossOrigin=r:t.removeAttribute("crossorigin"))};t.complete&&0!==t.naturalWidth?i():t.addEventListener("load",i)}if("audio"===m||"video"===m){const t=g;t.rr_mediaState=e.paused?"paused":"played",t.rr_mediaCurrentTime=e.currentTime,t.rr_mediaPlaybackRate=e.playbackRate,t.rr_mediaMuted=e.muted,t.rr_mediaLoop=e.loop,t.rr_mediaVolume=e.volume}p||(e.scrollLeft&&(g.rr_scrollLeft=e.scrollLeft),e.scrollTop&&(g.rr_scrollTop=e.scrollTop));if(f){const{width:t,height:n}=e.getBoundingClientRect();g={class:g.class,rr_width:`${t}px`,rr_height:`${n}px`}}"iframe"!==m||d(g.src)||(e.contentDocument||(g.rr_src=g.src),delete g.src);let y;try{customElements.get(m)&&(y=!0)}catch(b){}return{type:Nn.Element,tagName:m,attributes:g,childNodes:[],isSVG:ko(e)||void 0,needBlock:f,rootId:h,isCustom:y}}(e,{doc:n,blockClass:r,blockSelector:i,inlineStylesheet:s,maskInputOptions:l,maskInputFn:u,dataURLOptions:d,inlineImages:p,recordCanvas:h,keepIframeSrcFn:f,newlyAddedElement:m,rootId:v});case e.TEXT_NODE:return function(e,t){const{needsMask:n,maskTextFn:o,rootId:r,cssCaptured:i}=t,a=Gn.parentNode(e),s=a&&a.tagName;let l="";const c="STYLE"===s||void 0,u="SCRIPT"===s||void 0;u?l="SCRIPT_PLACEHOLDER":i||(l=Gn.textContent(e),c&&l&&(l=so(l,xo(t.doc))));!c&&!u&&l&&n&&(l=o?o(l,Gn.parentElement(e)):l.replace(/[\S]/g,"*"));return{type:Nn.Text,textContent:l||"",rootId:r}}(e,{doc:n,needsMask:a,maskTextFn:c,rootId:v,cssCaptured:g});case e.CDATA_SECTION_NODE:return{type:Nn.CDATA,textContent:"",rootId:v};case e.COMMENT_NODE:return{type:Nn.Comment,textContent:Gn.textContent(e)||"",rootId:v};default:return!1}}function To(e){return null==e?"":e.toLowerCase()}function Lo(e,t){const{doc:n,mirror:o,blockClass:r,blockSelector:i,maskTextClass:a,maskTextSelector:s,skipChild:l=!1,inlineStylesheet:c=!0,maskInputOptions:u={},maskTextFn:d,maskInputFn:p,slimDOMOptions:h,dataURLOptions:f={},inlineImages:m=!1,recordCanvas:g=!1,onSerialize:v,onIframeLoad:y,iframeLoadTimeout:b=5e3,onStylesheetLoad:w,stylesheetLoadTimeout:k=5e3,keepIframeSrcFn:x=(()=>!1),newlyAddedElement:S=!1,cssCaptured:C=!1}=t;let{needsMask:I}=t,{preserveWhiteSpace:O=!0}=t;if(!I){I=Oo(e,a,s,void 0===I)}const E=Eo(e,{doc:n,mirror:o,blockClass:r,blockSelector:i,needsMask:I,inlineStylesheet:c,maskInputOptions:u,maskTextFn:d,maskInputFn:p,dataURLOptions:f,inlineImages:m,recordCanvas:g,keepIframeSrcFn:x,newlyAddedElement:S,cssCaptured:C});if(!E)return console.warn(e,"not serialized"),null;let T;T=o.hasNode(e)?o.getId(e):function(e,t){if(t.comment&&e.type===Nn.Comment)return!0;if(e.type===Nn.Element){if(t.script&&("script"===e.tagName||"link"===e.tagName&&("preload"===e.attributes.rel||"modulepreload"===e.attributes.rel)&&"script"===e.attributes.as||"link"===e.tagName&&"prefetch"===e.attributes.rel&&"string"==typeof e.attributes.href&&"js"===no(e.attributes.href)))return!0;if(t.headFavicon&&("link"===e.tagName&&"shortcut icon"===e.attributes.rel||"meta"===e.tagName&&(To(e.attributes.name).match(/^msapplication-tile(image|color)$/)||"application-name"===To(e.attributes.name)||"icon"===To(e.attributes.rel)||"apple-touch-icon"===To(e.attributes.rel)||"shortcut icon"===To(e.attributes.rel))))return!0;if("meta"===e.tagName){if(t.headMetaDescKeywords&&To(e.attributes.name).match(/^description|keywords$/))return!0;if(t.headMetaSocial&&(To(e.attributes.property).match(/^(og|twitter|fb):/)||To(e.attributes.name).match(/^(og|twitter):/)||"pinterest"===To(e.attributes.name)))return!0;if(t.headMetaRobots&&("robots"===To(e.attributes.name)||"googlebot"===To(e.attributes.name)||"bingbot"===To(e.attributes.name)))return!0;if(t.headMetaHttpEquiv&&void 0!==e.attributes["http-equiv"])return!0;if(t.headMetaAuthorship&&("author"===To(e.attributes.name)||"generator"===To(e.attributes.name)||"framework"===To(e.attributes.name)||"publisher"===To(e.attributes.name)||"progid"===To(e.attributes.name)||To(e.attributes.property).match(/^article:/)||To(e.attributes.property).match(/^product:/)))return!0;if(t.headMetaVerification&&("google-site-verification"===To(e.attributes.name)||"yandex-verification"===To(e.attributes.name)||"csrf-token"===To(e.attributes.name)||"p:domain_verify"===To(e.attributes.name)||"verify-v1"===To(e.attributes.name)||"verification"===To(e.attributes.name)||"shopify-checkout-api-token"===To(e.attributes.name)))return!0}}return!1}(E,h)||!O&&E.type===Nn.Text&&!E.textContent.replace(/^\s+|\s+$/gm,"").length?ho:fo();const L=Object.assign(E,{id:T});if(o.add(e,L),T===ho)return null;v&&v(e);let A=!l;if(L.type===Nn.Element){A=A&&!L.needBlock,delete L.needBlock;const t=Gn.shadowRoot(e);t&&Zn(t)&&(L.isShadowHost=!0)}if((L.type===Nn.Document||L.type===Nn.Element)&&A){h.headWhitespace&&L.type===Nn.Element&&"head"===L.tagName&&(O=!1);const t={doc:n,mirror:o,blockClass:r,blockSelector:i,needsMask:I,maskTextClass:a,maskTextSelector:s,skipChild:l,inlineStylesheet:c,maskInputOptions:u,maskTextFn:d,maskInputFn:p,slimDOMOptions:h,dataURLOptions:f,inlineImages:m,recordCanvas:g,preserveWhiteSpace:O,onSerialize:v,onIframeLoad:y,iframeLoadTimeout:b,onStylesheetLoad:w,stylesheetLoadTimeout:k,keepIframeSrcFn:x,cssCaptured:!1};if(L.type===Nn.Element&&"textarea"===L.tagName&&void 0!==L.attributes.value);else{L.type===Nn.Element&&void 0!==L.attributes._cssText&&"string"==typeof L.attributes._cssText&&(t.cssCaptured=!0);for(const n of Array.from(Gn.childNodes(e))){const e=Lo(n,t);e&&L.childNodes.push(e)}}let S=null;if(Vn(e)&&(S=Gn.shadowRoot(e)))for(const e of Array.from(Gn.childNodes(S))){const n=Lo(e,t);n&&(Zn(S)&&(n.isShadow=!0),L.childNodes.push(n))}}const M=Gn.parentNode(e);return M&&Jn(M)&&Zn(M)&&(L.isShadow=!0),L.type===Nn.Element&&"iframe"===L.tagName&&function(e,t,n){const o=e.contentWindow;if(!o)return;let r,i=!1;try{r=o.document.readyState}catch(s){return}if("complete"!==r){const o=setTimeout((()=>{i||(t(),i=!0)}),n);return void e.addEventListener("load",(()=>{clearTimeout(o),i=!0,t()}))}const a="about:blank";if(o.location.href!==a||e.src===a||""===e.src)return setTimeout(t,0),e.addEventListener("load",t);e.addEventListener("load",t)}(e,(()=>{const t=e.contentDocument;if(t&&y){const n=Lo(t,{doc:t,mirror:o,blockClass:r,blockSelector:i,needsMask:I,maskTextClass:a,maskTextSelector:s,skipChild:!1,inlineStylesheet:c,maskInputOptions:u,maskTextFn:d,maskInputFn:p,slimDOMOptions:h,dataURLOptions:f,inlineImages:m,recordCanvas:g,preserveWhiteSpace:O,onSerialize:v,onIframeLoad:y,iframeLoadTimeout:b,onStylesheetLoad:w,stylesheetLoadTimeout:k,keepIframeSrcFn:x});n&&y(e,n)}}),b),L.type===Nn.Element&&"link"===L.tagName&&"string"==typeof L.attributes.rel&&("stylesheet"===L.attributes.rel||"preload"===L.attributes.rel&&"string"==typeof L.attributes.href&&"css"===no(L.attributes.href))&&function(e,t,n){let o,r=!1;try{o=e.sheet}catch(a){return}if(o)return;const i=setTimeout((()=>{r||(t(),r=!0)}),n);e.addEventListener("load",(()=>{clearTimeout(i),r=!0,t()}))}(e,(()=>{if(w){const t=Lo(e,{doc:n,mirror:o,blockClass:r,blockSelector:i,needsMask:I,maskTextClass:a,maskTextSelector:s,skipChild:!1,inlineStylesheet:c,maskInputOptions:u,maskTextFn:d,maskInputFn:p,slimDOMOptions:h,dataURLOptions:f,inlineImages:m,recordCanvas:g,preserveWhiteSpace:O,onSerialize:v,onIframeLoad:y,iframeLoadTimeout:b,onStylesheetLoad:w,stylesheetLoadTimeout:k,keepIframeSrcFn:x});t&&w(e,t)}}),k),L}function Ao(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function Mo(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var n=function e(){return this instanceof e?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,o.get?o:{enumerable:!0,get:function(){return e[t]}})})),n}var Ro={exports:{}},Po=String,Do=function(){return{isColorSupported:!1,reset:Po,bold:Po,dim:Po,italic:Po,underline:Po,inverse:Po,hidden:Po,strikethrough:Po,black:Po,red:Po,green:Po,yellow:Po,blue:Po,magenta:Po,cyan:Po,white:Po,gray:Po,bgBlack:Po,bgRed:Po,bgGreen:Po,bgYellow:Po,bgBlue:Po,bgMagenta:Po,bgCyan:Po,bgWhite:Po}};Ro.exports=Do(),Ro.exports.createColors=Do;var No=Ro.exports;const jo=Mo(Object.freeze(Object.defineProperty({__proto__:null,default:{}},Symbol.toStringTag,{value:"Module"})));let Fo=No,Bo=jo,_o=class e extends Error{constructor(t,n,o,r,i,a){super(t),this.name="CssSyntaxError",this.reason=t,i&&(this.file=i),r&&(this.source=r),a&&(this.plugin=a),void 0!==n&&void 0!==o&&("number"==typeof n?(this.line=n,this.column=o):(this.line=n.line,this.column=n.column,this.endLine=o.line,this.endColumn=o.column)),this.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(this,e)}setMessage(){this.message=this.plugin?this.plugin+": ":"",this.message+=this.file?this.file:"",void 0!==this.line&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason}showSourceCode(e){if(!this.source)return"";let t=this.source;null==e&&(e=Fo.isColorSupported),Bo&&e&&(t=Bo(t));let n,o,r=t.split(/\r?\n/),i=Math.max(this.line-3,0),a=Math.min(this.line+2,r.length),s=String(a).length;if(e){let{bold:e,gray:t,red:r}=Fo.createColors(!0);n=t=>e(r(t)),o=e=>t(e)}else n=o=e=>e;return r.slice(i,a).map(((e,t)=>{let r=i+1+t,a=" "+(" "+r).slice(-s)+" | ";if(r===this.line){let t=o(a.replace(/\d/g," "))+e.slice(0,this.column-1).replace(/[^\t]/g," ");return n(">")+o(a)+e+"\n "+t+n("^")}return" "+o(a)+e})).join("\n")}toString(){let e=this.showSourceCode();return e&&(e="\n\n"+e+"\n"),this.name+": "+this.message+e}};var Uo=_o;_o.default=_o;var Ho={};Ho.isClean=Symbol("isClean"),Ho.my=Symbol("my");const zo={after:"\n",beforeClose:"\n",beforeComment:"\n",beforeDecl:"\n",beforeOpen:" ",beforeRule:"\n",colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:!1};let qo=class{constructor(e){this.builder=e}atrule(e,t){let n="@"+e.name,o=e.params?this.rawValue(e,"params"):"";if(void 0!==e.raws.afterName?n+=e.raws.afterName:o&&(n+=" "),e.nodes)this.block(e,n+o);else{let r=(e.raws.between||"")+(t?";":"");this.builder(n+o+r,e)}}beforeAfter(e,t){let n;n="decl"===e.type?this.raw(e,null,"beforeDecl"):"comment"===e.type?this.raw(e,null,"beforeComment"):"before"===t?this.raw(e,null,"beforeRule"):this.raw(e,null,"beforeClose");let o=e.parent,r=0;for(;o&&"root"!==o.type;)r+=1,o=o.parent;if(n.includes("\n")){let t=this.raw(e,null,"indent");if(t.length)for(let e=0;e0&&"comment"===e.nodes[t].type;)t-=1;let n=this.raw(e,"semicolon");for(let o=0;o{if(o=e.raws[t],void 0!==o)return!1}))}var a;return void 0===o&&(o=zo[n]),i.rawCache[n]=o,o}rawBeforeClose(e){let t;return e.walk((e=>{if(e.nodes&&e.nodes.length>0&&void 0!==e.raws.after)return t=e.raws.after,t.includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1})),t&&(t=t.replace(/\S/g,"")),t}rawBeforeComment(e,t){let n;return e.walkComments((e=>{if(void 0!==e.raws.before)return n=e.raws.before,n.includes("\n")&&(n=n.replace(/[^\n]+$/,"")),!1})),void 0===n?n=this.raw(t,null,"beforeDecl"):n&&(n=n.replace(/\S/g,"")),n}rawBeforeDecl(e,t){let n;return e.walkDecls((e=>{if(void 0!==e.raws.before)return n=e.raws.before,n.includes("\n")&&(n=n.replace(/[^\n]+$/,"")),!1})),void 0===n?n=this.raw(t,null,"beforeRule"):n&&(n=n.replace(/\S/g,"")),n}rawBeforeOpen(e){let t;return e.walk((e=>{if("decl"!==e.type&&(t=e.raws.between,void 0!==t))return!1})),t}rawBeforeRule(e){let t;return e.walk((n=>{if(n.nodes&&(n.parent!==e||e.first!==n)&&void 0!==n.raws.before)return t=n.raws.before,t.includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1})),t&&(t=t.replace(/\S/g,"")),t}rawColon(e){let t;return e.walkDecls((e=>{if(void 0!==e.raws.between)return t=e.raws.between.replace(/[^\s:]/g,""),!1})),t}rawEmptyBody(e){let t;return e.walk((e=>{if(e.nodes&&0===e.nodes.length&&(t=e.raws.after,void 0!==t))return!1})),t}rawIndent(e){if(e.raws.indent)return e.raws.indent;let t;return e.walk((n=>{let o=n.parent;if(o&&o!==e&&o.parent&&o.parent===e&&void 0!==n.raws.before){let e=n.raws.before.split("\n");return t=e[e.length-1],t=t.replace(/\S/g,""),!1}})),t}rawSemicolon(e){let t;return e.walk((e=>{if(e.nodes&&e.nodes.length&&"decl"===e.last.type&&(t=e.raws.semicolon,void 0!==t))return!1})),t}rawValue(e,t){let n=e[t],o=e.raws[t];return o&&o.value===n?o.raw:n}root(e){this.body(e),e.raws.after&&this.builder(e.raws.after)}rule(e){this.block(e,this.rawValue(e,"selector")),e.raws.ownSemicolon&&this.builder(e.raws.ownSemicolon,e,"end")}stringify(e,t){if(!this[e.type])throw new Error("Unknown AST node type "+e.type+". Maybe you need to change PostCSS stringifier.");this[e.type](e,t)}};var Wo=qo;qo.default=qo;let Go=Wo;function Vo(e,t){new Go(t).stringify(e)}var Jo=Vo;Vo.default=Vo;let{isClean:Zo,my:Ko}=Ho,Yo=Uo,Xo=Wo,$o=Jo;function Qo(e,t){let n=new e.constructor;for(let o in e){if(!Object.prototype.hasOwnProperty.call(e,o))continue;if("proxyCache"===o)continue;let r=e[o],i=typeof r;"parent"===o&&"object"===i?t&&(n[o]=t):"source"===o?n[o]=r:Array.isArray(r)?n[o]=r.map((e=>Qo(e,n))):("object"===i&&null!==r&&(r=Qo(r)),n[o]=r)}return n}let er=class{constructor(e={}){this.raws={},this[Zo]=!1,this[Ko]=!0;for(let t in e)if("nodes"===t){this.nodes=[];for(let n of e[t])"function"==typeof n.clone?this.append(n.clone()):this.append(n)}else this[t]=e[t]}addToError(e){if(e.postcssNode=this,e.stack&&this.source&&/\n\s{4}at /.test(e.stack)){let t=this.source;e.stack=e.stack.replace(/\n\s{4}at /,`$&${t.input.from}:${t.start.line}:${t.start.column}$&`)}return e}after(e){return this.parent.insertAfter(this,e),this}assign(e={}){for(let t in e)this[t]=e[t];return this}before(e){return this.parent.insertBefore(this,e),this}cleanRaws(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between}clone(e={}){let t=Qo(this);for(let n in e)t[n]=e[n];return t}cloneAfter(e={}){let t=this.clone(e);return this.parent.insertAfter(this,t),t}cloneBefore(e={}){let t=this.clone(e);return this.parent.insertBefore(this,t),t}error(e,t={}){if(this.source){let{end:n,start:o}=this.rangeBy(t);return this.source.input.error(e,{column:o.column,line:o.line},{column:n.column,line:n.line},t)}return new Yo(e)}getProxyProcessor(){return{get:(e,t)=>"proxyOf"===t?e:"root"===t?()=>e.root().toProxy():e[t],set:(e,t,n)=>(e[t]===n||(e[t]=n,"prop"!==t&&"value"!==t&&"name"!==t&&"params"!==t&&"important"!==t&&"text"!==t||e.markDirty()),!0)}}markDirty(){if(this[Zo]){this[Zo]=!1;let e=this;for(;e=e.parent;)e[Zo]=!1}}next(){if(!this.parent)return;let e=this.parent.index(this);return this.parent.nodes[e+1]}positionBy(e,t){let n=this.source.start;if(e.index)n=this.positionInside(e.index,t);else if(e.word){let o=(t=this.toString()).indexOf(e.word);-1!==o&&(n=this.positionInside(o,t))}return n}positionInside(e,t){let n=t||this.toString(),o=this.source.start.column,r=this.source.start.line;for(let i=0;i"object"==typeof e&&e.toJSON?e.toJSON(null,t):e));else if("object"==typeof e&&e.toJSON)n[i]=e.toJSON(null,t);else if("source"===i){let o=t.get(e.input);null==o&&(o=r,t.set(e.input,r),r++),n[i]={end:e.end,inputId:o,start:e.start}}else n[i]=e}return o&&(n.inputs=[...t.keys()].map((e=>e.toJSON()))),n}toProxy(){return this.proxyCache||(this.proxyCache=new Proxy(this,this.getProxyProcessor())),this.proxyCache}toString(e=$o){e.stringify&&(e=e.stringify);let t="";return e(this,(e=>{t+=e})),t}warn(e,t,n){let o={node:this};for(let r in n)o[r]=n[r];return e.warn(t,o)}get proxyOf(){return this}};var tr=er;er.default=er;let nr=tr,or=class extends nr{constructor(e){e&&void 0!==e.value&&"string"!=typeof e.value&&(e={...e,value:String(e.value)}),super(e),this.type="decl"}get variable(){return this.prop.startsWith("--")||"$"===this.prop[0]}};var rr=or;or.default=or;var ir={nanoid:(e=21)=>{let t="",n=e;for(;n--;)t+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[64*Math.random()|0];return t},customAlphabet:(e,t=21)=>(n=t)=>{let o="",r=n;for(;r--;)o+=e[Math.random()*e.length|0];return o}};let{SourceMapConsumer:ar,SourceMapGenerator:sr}=jo,{existsSync:lr,readFileSync:cr}=jo,{dirname:ur,join:dr}=jo;let pr=class{constructor(e,t){if(!1===t.map)return;this.loadAnnotation(e),this.inline=this.startWith(this.annotation,"data:");let n=t.map?t.map.prev:void 0,o=this.loadMap(t.from,n);!this.mapFile&&t.from&&(this.mapFile=t.from),this.mapFile&&(this.root=ur(this.mapFile)),o&&(this.text=o)}consumer(){return this.consumerCache||(this.consumerCache=new ar(this.text)),this.consumerCache}decodeInline(e){if(/^data:application\/json;charset=utf-?8,/.test(e)||/^data:application\/json,/.test(e))return decodeURIComponent(e.substr(RegExp.lastMatch.length));if(/^data:application\/json;charset=utf-?8;base64,/.test(e)||/^data:application\/json;base64,/.test(e))return t=e.substr(RegExp.lastMatch.length),Buffer?Buffer.from(t,"base64").toString():window.atob(t);var t;let n=e.match(/data:application\/json;([^,]+),/)[1];throw new Error("Unsupported source map encoding "+n)}getAnnotationURL(e){return e.replace(/^\/\*\s*# sourceMappingURL=/,"").trim()}isMap(e){return"object"==typeof e&&("string"==typeof e.mappings||"string"==typeof e._mappings||Array.isArray(e.sections))}loadAnnotation(e){let t=e.match(/\/\*\s*# sourceMappingURL=/gm);if(!t)return;let n=e.lastIndexOf(t.pop()),o=e.indexOf("*/",n);n>-1&&o>-1&&(this.annotation=this.getAnnotationURL(e.substring(n,o)))}loadFile(e){if(this.root=ur(e),lr(e))return this.mapFile=e,cr(e,"utf-8").toString().trim()}loadMap(e,t){if(!1===t)return!1;if(t){if("string"==typeof t)return t;if("function"!=typeof t){if(t instanceof ar)return sr.fromSourceMap(t).toString();if(t instanceof sr)return t.toString();if(this.isMap(t))return JSON.stringify(t);throw new Error("Unsupported previous source map format: "+t.toString())}{let n=t(e);if(n){let e=this.loadFile(n);if(!e)throw new Error("Unable to load previous source map: "+n.toString());return e}}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){let t=this.annotation;return e&&(t=dr(ur(e),t)),this.loadFile(t)}}}startWith(e,t){return!!e&&e.substr(0,t.length)===t}withContent(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)}};var hr=pr;pr.default=pr;let{SourceMapConsumer:fr,SourceMapGenerator:mr}=jo,{fileURLToPath:gr,pathToFileURL:vr}=jo,{isAbsolute:yr,resolve:br}=jo,{nanoid:wr}=ir,kr=jo,xr=Uo,Sr=hr,Cr=Symbol("fromOffsetCache"),Ir=Boolean(fr&&mr),Or=Boolean(br&&yr),Er=class{constructor(e,t={}){if(null==e||"object"==typeof e&&!e.toString)throw new Error(`PostCSS received ${e} instead of CSS string`);if(this.css=e.toString(),"\ufeff"===this.css[0]||"￾"===this.css[0]?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,t.from&&(!Or||/^\w+:\/\//.test(t.from)||yr(t.from)?this.file=t.from:this.file=br(t.from)),Or&&Ir){let e=new Sr(this.css,t);if(e.text){this.map=e;let t=e.consumer().file;!this.file&&t&&(this.file=this.mapResolve(t))}}this.file||(this.id=""),this.map&&(this.map.file=this.from)}error(e,t,n,o={}){let r,i,a;if(t&&"object"==typeof t){let e=t,o=n;if("number"==typeof e.offset){let o=this.fromOffset(e.offset);t=o.line,n=o.col}else t=e.line,n=e.column;if("number"==typeof o.offset){let e=this.fromOffset(o.offset);i=e.line,a=e.col}else i=o.line,a=o.column}else if(!n){let e=this.fromOffset(t);t=e.line,n=e.col}let s=this.origin(t,n,i,a);return r=s?new xr(e,void 0===s.endLine?s.line:{column:s.column,line:s.line},void 0===s.endLine?s.column:{column:s.endColumn,line:s.endLine},s.source,s.file,o.plugin):new xr(e,void 0===i?t:{column:n,line:t},void 0===i?n:{column:a,line:i},this.css,this.file,o.plugin),r.input={column:n,endColumn:a,endLine:i,line:t,source:this.css},this.file&&(vr&&(r.input.url=vr(this.file).toString()),r.input.file=this.file),r}fromOffset(e){let t,n;if(this[Cr])n=this[Cr];else{let e=this.css.split("\n");n=new Array(e.length);let t=0;for(let o=0,r=e.length;o=t)o=n.length-1;else{let t,r=n.length-2;for(;o>1),e=n[t+1])){o=t;break}o=t+1}}return{col:e-n[o]+1,line:o+1}}mapResolve(e){return/^\w+:\/\//.test(e)?e:br(this.map.consumer().sourceRoot||this.map.root||".",e)}origin(e,t,n,o){if(!this.map)return!1;let r,i,a=this.map.consumer(),s=a.originalPositionFor({column:t,line:e});if(!s.source)return!1;"number"==typeof n&&(r=a.originalPositionFor({column:o,line:n})),i=yr(s.source)?vr(s.source):new URL(s.source,this.map.consumer().sourceRoot||vr(this.map.mapFile));let l={column:s.column,endColumn:r&&r.column,endLine:r&&r.line,line:s.line,url:i.toString()};if("file:"===i.protocol){if(!gr)throw new Error("file: protocol is not available in this PostCSS build");l.file=gr(i)}let c=a.sourceContentFor(s.source);return c&&(l.source=c),l}toJSON(){let e={};for(let t of["hasBOM","css","file","id"])null!=this[t]&&(e[t]=this[t]);return this.map&&(e.map={...this.map},e.map.consumerCache&&(e.map.consumerCache=void 0)),e}get from(){return this.file||this.id}};var Tr=Er;Er.default=Er,kr&&kr.registerInput&&kr.registerInput(Er);let{SourceMapConsumer:Lr,SourceMapGenerator:Ar}=jo,{dirname:Mr,relative:Rr,resolve:Pr,sep:Dr}=jo,{pathToFileURL:Nr}=jo,jr=Tr,Fr=Boolean(Lr&&Ar),Br=Boolean(Mr&&Pr&&Rr&&Dr);var _r=class{constructor(e,t,n,o){this.stringify=e,this.mapOpts=n.map||{},this.root=t,this.opts=n,this.css=o,this.originalCSS=o,this.usesFileUrls=!this.mapOpts.from&&this.mapOpts.absolute,this.memoizedFileURLs=new Map,this.memoizedPaths=new Map,this.memoizedURLs=new Map}addAnnotation(){let e;e=this.isInline()?"data:application/json;base64,"+this.toBase64(this.map.toString()):"string"==typeof this.mapOpts.annotation?this.mapOpts.annotation:"function"==typeof this.mapOpts.annotation?this.mapOpts.annotation(this.opts.to,this.root):this.outputFile()+".map";let t="\n";this.css.includes("\r\n")&&(t="\r\n"),this.css+=t+"/*# sourceMappingURL="+e+" */"}applyPrevMaps(){for(let e of this.previous()){let t,n=this.toUrl(this.path(e.file)),o=e.root||Mr(e.file);!1===this.mapOpts.sourcesContent?(t=new Lr(e.text),t.sourcesContent&&(t.sourcesContent=null)):t=e.consumer(),this.map.applySourceMap(t,n,this.toUrl(this.path(o)))}}clearAnnotation(){if(!1!==this.mapOpts.annotation)if(this.root){let e;for(let t=this.root.nodes.length-1;t>=0;t--)e=this.root.nodes[t],"comment"===e.type&&0===e.text.indexOf("# sourceMappingURL=")&&this.root.removeChild(t)}else this.css&&(this.css=this.css.replace(/\n*?\/\*#[\S\s]*?\*\/$/gm,""))}generate(){if(this.clearAnnotation(),Br&&Fr&&this.isMap())return this.generateMap();{let e="";return this.stringify(this.root,(t=>{e+=t})),[e]}}generateMap(){if(this.root)this.generateString();else if(1===this.previous().length){let e=this.previous()[0].consumer();e.file=this.outputFile(),this.map=Ar.fromSourceMap(e,{ignoreInvalidMapping:!0})}else this.map=new Ar({file:this.outputFile(),ignoreInvalidMapping:!0}),this.map.addMapping({generated:{column:0,line:1},original:{column:0,line:1},source:this.opts.from?this.toUrl(this.path(this.opts.from)):""});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]}generateString(){this.css="",this.map=new Ar({file:this.outputFile(),ignoreInvalidMapping:!0});let e,t,n=1,o=1,r="",i={generated:{column:0,line:0},original:{column:0,line:0},source:""};this.stringify(this.root,((a,s,l)=>{if(this.css+=a,s&&"end"!==l&&(i.generated.line=n,i.generated.column=o-1,s.source&&s.source.start?(i.source=this.sourcePath(s),i.original.line=s.source.start.line,i.original.column=s.source.start.column-1,this.map.addMapping(i)):(i.source=r,i.original.line=1,i.original.column=0,this.map.addMapping(i))),e=a.match(/\n/g),e?(n+=e.length,t=a.lastIndexOf("\n"),o=a.length-t):o+=a.length,s&&"start"!==l){let e=s.parent||{raws:{}};("decl"===s.type||"atrule"===s.type&&!s.nodes)&&s===e.last&&!e.raws.semicolon||(s.source&&s.source.end?(i.source=this.sourcePath(s),i.original.line=s.source.end.line,i.original.column=s.source.end.column-1,i.generated.line=n,i.generated.column=o-2,this.map.addMapping(i)):(i.source=r,i.original.line=1,i.original.column=0,i.generated.line=n,i.generated.column=o-1,this.map.addMapping(i)))}}))}isAnnotation(){return!!this.isInline()||(void 0!==this.mapOpts.annotation?this.mapOpts.annotation:!this.previous().length||this.previous().some((e=>e.annotation)))}isInline(){if(void 0!==this.mapOpts.inline)return this.mapOpts.inline;let e=this.mapOpts.annotation;return(void 0===e||!0===e)&&(!this.previous().length||this.previous().some((e=>e.inline)))}isMap(){return void 0!==this.opts.map?!!this.opts.map:this.previous().length>0}isSourcesContent(){return void 0!==this.mapOpts.sourcesContent?this.mapOpts.sourcesContent:!this.previous().length||this.previous().some((e=>e.withContent()))}outputFile(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"}path(e){if(this.mapOpts.absolute)return e;if(60===e.charCodeAt(0))return e;if(/^\w+:\/\//.test(e))return e;let t=this.memoizedPaths.get(e);if(t)return t;let n=this.opts.to?Mr(this.opts.to):".";"string"==typeof this.mapOpts.annotation&&(n=Mr(Pr(n,this.mapOpts.annotation)));let o=Rr(n,e);return this.memoizedPaths.set(e,o),o}previous(){if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk((e=>{if(e.source&&e.source.input.map){let t=e.source.input.map;this.previousMaps.includes(t)||this.previousMaps.push(t)}}));else{let e=new jr(this.originalCSS,this.opts);e.map&&this.previousMaps.push(e.map)}return this.previousMaps}setSourcesContent(){let e={};if(this.root)this.root.walk((t=>{if(t.source){let n=t.source.input.from;if(n&&!e[n]){e[n]=!0;let o=this.usesFileUrls?this.toFileUrl(n):this.toUrl(this.path(n));this.map.setSourceContent(o,t.source.input.css)}}}));else if(this.css){let e=this.opts.from?this.toUrl(this.path(this.opts.from)):"";this.map.setSourceContent(e,this.css)}}sourcePath(e){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(e.source.input.from):this.toUrl(this.path(e.source.input.from))}toBase64(e){return Buffer?Buffer.from(e).toString("base64"):window.btoa(unescape(encodeURIComponent(e)))}toFileUrl(e){let t=this.memoizedFileURLs.get(e);if(t)return t;if(Nr){let t=Nr(e).toString();return this.memoizedFileURLs.set(e,t),t}throw new Error("`map.absolute` option is not available in this PostCSS build")}toUrl(e){let t=this.memoizedURLs.get(e);if(t)return t;"\\"===Dr&&(e=e.replace(/\\/g,"/"));let n=encodeURI(e).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(e,n),n}};let Ur=tr,Hr=class extends Ur{constructor(e){super(e),this.type="comment"}};var zr=Hr;Hr.default=Hr;let qr,Wr,Gr,Vr,{isClean:Jr,my:Zr}=Ho,Kr=rr,Yr=zr,Xr=tr;function $r(e){return e.map((e=>(e.nodes&&(e.nodes=$r(e.nodes)),delete e.source,e)))}function Qr(e){if(e[Jr]=!1,e.proxyOf.nodes)for(let t of e.proxyOf.nodes)Qr(t)}let ei=class e extends Xr{append(...e){for(let t of e){let e=this.normalize(t,this.last);for(let t of e)this.proxyOf.nodes.push(t)}return this.markDirty(),this}cleanRaws(e){if(super.cleanRaws(e),this.nodes)for(let t of this.nodes)t.cleanRaws(e)}each(e){if(!this.proxyOf.nodes)return;let t,n,o=this.getIterator();for(;this.indexes[o]"proxyOf"===t?e:e[t]?"each"===t||"string"==typeof t&&t.startsWith("walk")?(...n)=>e[t](...n.map((e=>"function"==typeof e?(t,n)=>e(t.toProxy(),n):e))):"every"===t||"some"===t?n=>e[t](((e,...t)=>n(e.toProxy(),...t))):"root"===t?()=>e.root().toProxy():"nodes"===t?e.nodes.map((e=>e.toProxy())):"first"===t||"last"===t?e[t].toProxy():e[t]:e[t],set:(e,t,n)=>(e[t]===n||(e[t]=n,"name"!==t&&"params"!==t&&"selector"!==t||e.markDirty()),!0)}}index(e){return"number"==typeof e?e:(e.proxyOf&&(e=e.proxyOf),this.proxyOf.nodes.indexOf(e))}insertAfter(e,t){let n,o=this.index(e),r=this.normalize(t,this.proxyOf.nodes[o]).reverse();o=this.index(e);for(let i of r)this.proxyOf.nodes.splice(o+1,0,i);for(let i in this.indexes)n=this.indexes[i],o(t[Zr]||e.rebuild(t),(t=t.proxyOf).parent&&t.parent.removeChild(t),t[Jr]&&Qr(t),void 0===t.raws.before&&n&&void 0!==n.raws.before&&(t.raws.before=n.raws.before.replace(/\S/g,"")),t.parent=this.proxyOf,t)))}prepend(...e){e=e.reverse();for(let t of e){let e=this.normalize(t,this.first,"prepend").reverse();for(let t of e)this.proxyOf.nodes.unshift(t);for(let t in this.indexes)this.indexes[t]=this.indexes[t]+e.length}return this.markDirty(),this}push(e){return e.parent=this,this.proxyOf.nodes.push(e),this}removeAll(){for(let e of this.proxyOf.nodes)e.parent=void 0;return this.proxyOf.nodes=[],this.markDirty(),this}removeChild(e){let t;e=this.index(e),this.proxyOf.nodes[e].parent=void 0,this.proxyOf.nodes.splice(e,1);for(let n in this.indexes)t=this.indexes[n],t>=e&&(this.indexes[n]=t-1);return this.markDirty(),this}replaceValues(e,t,n){return n||(n=t,t={}),this.walkDecls((o=>{t.props&&!t.props.includes(o.prop)||t.fast&&!o.value.includes(t.fast)||(o.value=o.value.replace(e,n))})),this.markDirty(),this}some(e){return this.nodes.some(e)}walk(e){return this.each(((t,n)=>{let o;try{o=e(t,n)}catch(r){throw t.addToError(r)}return!1!==o&&t.walk&&(o=t.walk(e)),o}))}walkAtRules(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("atrule"===n.type&&e.test(n.name))return t(n,o)})):this.walk(((n,o)=>{if("atrule"===n.type&&n.name===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("atrule"===e.type)return t(e,n)})))}walkComments(e){return this.walk(((t,n)=>{if("comment"===t.type)return e(t,n)}))}walkDecls(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("decl"===n.type&&e.test(n.prop))return t(n,o)})):this.walk(((n,o)=>{if("decl"===n.type&&n.prop===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("decl"===e.type)return t(e,n)})))}walkRules(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("rule"===n.type&&e.test(n.selector))return t(n,o)})):this.walk(((n,o)=>{if("rule"===n.type&&n.selector===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("rule"===e.type)return t(e,n)})))}get first(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}get last(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}};ei.registerParse=e=>{qr=e},ei.registerRule=e=>{Wr=e},ei.registerAtRule=e=>{Gr=e},ei.registerRoot=e=>{Vr=e};var ti=ei;ei.default=ei,ei.rebuild=e=>{"atrule"===e.type?Object.setPrototypeOf(e,Gr.prototype):"rule"===e.type?Object.setPrototypeOf(e,Wr.prototype):"decl"===e.type?Object.setPrototypeOf(e,Kr.prototype):"comment"===e.type?Object.setPrototypeOf(e,Yr.prototype):"root"===e.type&&Object.setPrototypeOf(e,Vr.prototype),e[Zr]=!0,e.nodes&&e.nodes.forEach((e=>{ei.rebuild(e)}))};let ni,oi,ri=ti,ii=class extends ri{constructor(e){super({type:"document",...e}),this.nodes||(this.nodes=[])}toResult(e={}){return new ni(new oi,this,e).stringify()}};ii.registerLazyResult=e=>{ni=e},ii.registerProcessor=e=>{oi=e};var ai=ii;ii.default=ii;let si=class{constructor(e,t={}){if(this.type="warning",this.text=e,t.node&&t.node.source){let e=t.node.rangeBy(t);this.line=e.start.line,this.column=e.start.column,this.endLine=e.end.line,this.endColumn=e.end.column}for(let n in t)this[n]=t[n]}toString(){return this.node?this.node.error(this.text,{index:this.index,plugin:this.plugin,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text}};var li=si;si.default=si;let ci=li,ui=class{constructor(e,t,n){this.processor=e,this.messages=[],this.root=t,this.opts=n,this.css=void 0,this.map=void 0}toString(){return this.css}warn(e,t={}){t.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(t.plugin=this.lastPlugin.postcssPlugin);let n=new ci(e,t);return this.messages.push(n),n}warnings(){return this.messages.filter((e=>"warning"===e.type))}get content(){return this.css}};var di=ui;ui.default=ui;const pi="'".charCodeAt(0),hi='"'.charCodeAt(0),fi="\\".charCodeAt(0),mi="/".charCodeAt(0),gi="\n".charCodeAt(0),vi=" ".charCodeAt(0),yi="\f".charCodeAt(0),bi="\t".charCodeAt(0),wi="\r".charCodeAt(0),ki="[".charCodeAt(0),xi="]".charCodeAt(0),Si="(".charCodeAt(0),Ci=")".charCodeAt(0),Ii="{".charCodeAt(0),Oi="}".charCodeAt(0),Ei=";".charCodeAt(0),Ti="*".charCodeAt(0),Li=":".charCodeAt(0),Ai="@".charCodeAt(0),Mi=/[\t\n\f\r "#'()/;[\\\]{}]/g,Ri=/[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g,Pi=/.[\r\n"'(/\\]/,Di=/[\da-f]/i;let Ni=ti,ji=class extends Ni{constructor(e){super(e),this.type="atrule"}append(...e){return this.proxyOf.nodes||(this.nodes=[]),super.append(...e)}prepend(...e){return this.proxyOf.nodes||(this.nodes=[]),super.prepend(...e)}};var Fi=ji;ji.default=ji,Ni.registerAtRule(ji);let Bi,_i,Ui=ti,Hi=class extends Ui{constructor(e){super(e),this.type="root",this.nodes||(this.nodes=[])}normalize(e,t,n){let o=super.normalize(e);if(t)if("prepend"===n)this.nodes.length>1?t.raws.before=this.nodes[1].raws.before:delete t.raws.before;else if(this.first!==t)for(let r of o)r.raws.before=t.raws.before;return o}removeChild(e,t){let n=this.index(e);return!t&&0===n&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[n].raws.before),super.removeChild(e)}toResult(e={}){return new Bi(new _i,this,e).stringify()}};Hi.registerLazyResult=e=>{Bi=e},Hi.registerProcessor=e=>{_i=e};var zi=Hi;Hi.default=Hi,Ui.registerRoot(Hi);let qi={comma:e=>qi.split(e,[","],!0),space:e=>qi.split(e,[" ","\n","\t"]),split(e,t,n){let o=[],r="",i=!1,a=0,s=!1,l="",c=!1;for(let u of e)c?c=!1:"\\"===u?c=!0:s?u===l&&(s=!1):'"'===u||"'"===u?(s=!0,l=u):"("===u?a+=1:")"===u?a>0&&(a-=1):0===a&&t.includes(u)&&(i=!0),i?(""!==r&&o.push(r.trim()),r="",i=!1):r+=u;return(n||""!==r)&&o.push(r.trim()),o}};var Wi=qi;qi.default=qi;let Gi=ti,Vi=Wi,Ji=class extends Gi{constructor(e){super(e),this.type="rule",this.nodes||(this.nodes=[])}get selectors(){return Vi.comma(this.selector)}set selectors(e){let t=this.selector?this.selector.match(/,\s*/):null,n=t?t[0]:","+this.raw("between","beforeOpen");this.selector=e.join(n)}};var Zi=Ji;Ji.default=Ji,Gi.registerRule(Ji);let Ki=rr,Yi=function(e,t={}){let n,o,r,i,a,s,l,c,u,d,p=e.css.valueOf(),h=t.ignoreErrors,f=p.length,m=0,g=[],v=[];function y(t){throw e.error("Unclosed "+t,m)}return{back:function(e){v.push(e)},endOfFile:function(){return 0===v.length&&m>=f},nextToken:function(e){if(v.length)return v.pop();if(m>=f)return;let t=!!e&&e.ignoreUnclosed;switch(n=p.charCodeAt(m),n){case gi:case vi:case bi:case wi:case yi:o=m;do{o+=1,n=p.charCodeAt(o)}while(n===vi||n===gi||n===bi||n===wi||n===yi);d=["space",p.slice(m,o)],m=o-1;break;case ki:case xi:case Ii:case Oi:case Li:case Ei:case Ci:{let e=String.fromCharCode(n);d=[e,e,m];break}case Si:if(c=g.length?g.pop()[1]:"",u=p.charCodeAt(m+1),"url"===c&&u!==pi&&u!==hi&&u!==vi&&u!==gi&&u!==bi&&u!==yi&&u!==wi){o=m;do{if(s=!1,o=p.indexOf(")",o+1),-1===o){if(h||t){o=m;break}y("bracket")}for(l=o;p.charCodeAt(l-1)===fi;)l-=1,s=!s}while(s);d=["brackets",p.slice(m,o+1),m,o],m=o}else o=p.indexOf(")",m+1),i=p.slice(m,o+1),-1===o||Pi.test(i)?d=["(","(",m]:(d=["brackets",i,m,o],m=o);break;case pi:case hi:r=n===pi?"'":'"',o=m;do{if(s=!1,o=p.indexOf(r,o+1),-1===o){if(h||t){o=m+1;break}y("string")}for(l=o;p.charCodeAt(l-1)===fi;)l-=1,s=!s}while(s);d=["string",p.slice(m,o+1),m,o],m=o;break;case Ai:Mi.lastIndex=m+1,Mi.test(p),o=0===Mi.lastIndex?p.length-1:Mi.lastIndex-2,d=["at-word",p.slice(m,o+1),m,o],m=o;break;case fi:for(o=m,a=!0;p.charCodeAt(o+1)===fi;)o+=1,a=!a;if(n=p.charCodeAt(o+1),a&&n!==mi&&n!==vi&&n!==gi&&n!==bi&&n!==wi&&n!==yi&&(o+=1,Di.test(p.charAt(o)))){for(;Di.test(p.charAt(o+1));)o+=1;p.charCodeAt(o+1)===vi&&(o+=1)}d=["word",p.slice(m,o+1),m,o],m=o;break;default:n===mi&&p.charCodeAt(m+1)===Ti?(o=p.indexOf("*/",m+2)+1,0===o&&(h||t?o=p.length:y("comment")),d=["comment",p.slice(m,o+1),m,o],m=o):(Ri.lastIndex=m+1,Ri.test(p),o=0===Ri.lastIndex?p.length-1:Ri.lastIndex-2,d=["word",p.slice(m,o+1),m,o],g.push(d),m=o)}return m++,d},position:function(){return m}}},Xi=zr,$i=Fi,Qi=zi,ea=Zi;const ta={empty:!0,space:!0};var na=class{constructor(e){this.input=e,this.root=new Qi,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:e,start:{column:1,line:1,offset:0}}}atrule(e){let t,n,o,r=new $i;r.name=e[1].slice(1),""===r.name&&this.unnamedAtrule(r,e),this.init(r,e[2]);let i=!1,a=!1,s=[],l=[];for(;!this.tokenizer.endOfFile();){if(t=(e=this.tokenizer.nextToken())[0],"("===t||"["===t?l.push("("===t?")":"]"):"{"===t&&l.length>0?l.push("}"):t===l[l.length-1]&&l.pop(),0===l.length){if(";"===t){r.source.end=this.getPosition(e[2]),r.source.end.offset++,this.semicolon=!0;break}if("{"===t){a=!0;break}if("}"===t){if(s.length>0){for(o=s.length-1,n=s[o];n&&"space"===n[0];)n=s[--o];n&&(r.source.end=this.getPosition(n[3]||n[2]),r.source.end.offset++)}this.end(e);break}s.push(e)}else s.push(e);if(this.tokenizer.endOfFile()){i=!0;break}}r.raws.between=this.spacesAndCommentsFromEnd(s),s.length?(r.raws.afterName=this.spacesAndCommentsFromStart(s),this.raw(r,"params",s),i&&(e=s[s.length-1],r.source.end=this.getPosition(e[3]||e[2]),r.source.end.offset++,this.spaces=r.raws.between,r.raws.between="")):(r.raws.afterName="",r.params=""),a&&(r.nodes=[],this.current=r)}checkMissedSemicolon(e){let t=this.colon(e);if(!1===t)return;let n,o=0;for(let r=t-1;r>=0&&(n=e[r],"space"===n[0]||(o+=1,2!==o));r--);throw this.input.error("Missed semicolon","word"===n[0]?n[3]+1:n[2])}colon(e){let t,n,o,r=0;for(let[i,a]of e.entries()){if(t=a,n=t[0],"("===n&&(r+=1),")"===n&&(r-=1),0===r&&":"===n){if(o){if("word"===o[0]&&"progid"===o[1])continue;return i}this.doubleColon(t)}o=t}return!1}comment(e){let t=new Xi;this.init(t,e[2]),t.source.end=this.getPosition(e[3]||e[2]),t.source.end.offset++;let n=e[1].slice(2,-2);if(/^\s*$/.test(n))t.text="",t.raws.left=n,t.raws.right="";else{let e=n.match(/^(\s*)([^]*\S)(\s*)$/);t.text=e[2],t.raws.left=e[1],t.raws.right=e[3]}}createTokenizer(){this.tokenizer=Yi(this.input)}decl(e,t){let n=new Ki;this.init(n,e[0][2]);let o,r=e[e.length-1];for(";"===r[0]&&(this.semicolon=!0,e.pop()),n.source.end=this.getPosition(r[3]||r[2]||function(e){for(let t=e.length-1;t>=0;t--){let n=e[t],o=n[3]||n[2];if(o)return o}}(e)),n.source.end.offset++;"word"!==e[0][0];)1===e.length&&this.unknownWord(e),n.raws.before+=e.shift()[1];for(n.source.start=this.getPosition(e[0][2]),n.prop="";e.length;){let t=e[0][0];if(":"===t||"space"===t||"comment"===t)break;n.prop+=e.shift()[1]}for(n.raws.between="";e.length;){if(o=e.shift(),":"===o[0]){n.raws.between+=o[1];break}"word"===o[0]&&/\w/.test(o[1])&&this.unknownWord([o]),n.raws.between+=o[1]}"_"!==n.prop[0]&&"*"!==n.prop[0]||(n.raws.before+=n.prop[0],n.prop=n.prop.slice(1));let i,a=[];for(;e.length&&(i=e[0][0],"space"===i||"comment"===i);)a.push(e.shift());this.precheckMissedSemicolon(e);for(let s=e.length-1;s>=0;s--){if(o=e[s],"!important"===o[1].toLowerCase()){n.important=!0;let t=this.stringFrom(e,s);t=this.spacesFromEnd(e)+t," !important"!==t&&(n.raws.important=t);break}if("important"===o[1].toLowerCase()){let t=e.slice(0),o="";for(let e=s;e>0;e--){let n=t[e][0];if(0===o.trim().indexOf("!")&&"space"!==n)break;o=t.pop()[1]+o}0===o.trim().indexOf("!")&&(n.important=!0,n.raws.important=o,e=t)}if("space"!==o[0]&&"comment"!==o[0])break}e.some((e=>"space"!==e[0]&&"comment"!==e[0]))&&(n.raws.between+=a.map((e=>e[1])).join(""),a=[]),this.raw(n,"value",a.concat(e),t),n.value.includes(":")&&!t&&this.checkMissedSemicolon(e)}doubleColon(e){throw this.input.error("Double colon",{offset:e[2]},{offset:e[2]+e[1].length})}emptyRule(e){let t=new ea;this.init(t,e[2]),t.selector="",t.raws.between="",this.current=t}end(e){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(e[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(e)}endFile(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position())}freeSemicolon(e){if(this.spaces+=e[1],this.current.nodes){let e=this.current.nodes[this.current.nodes.length-1];e&&"rule"===e.type&&!e.raws.ownSemicolon&&(e.raws.ownSemicolon=this.spaces,this.spaces="")}}getPosition(e){let t=this.input.fromOffset(e);return{column:t.col,line:t.line,offset:e}}init(e,t){this.current.push(e),e.source={input:this.input,start:this.getPosition(t)},e.raws.before=this.spaces,this.spaces="","comment"!==e.type&&(this.semicolon=!1)}other(e){let t=!1,n=null,o=!1,r=null,i=[],a=e[1].startsWith("--"),s=[],l=e;for(;l;){if(n=l[0],s.push(l),"("===n||"["===n)r||(r=l),i.push("("===n?")":"]");else if(a&&o&&"{"===n)r||(r=l),i.push("}");else if(0===i.length){if(";"===n){if(o)return void this.decl(s,a);break}if("{"===n)return void this.rule(s);if("}"===n){this.tokenizer.back(s.pop()),t=!0;break}":"===n&&(o=!0)}else n===i[i.length-1]&&(i.pop(),0===i.length&&(r=null));l=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(t=!0),i.length>0&&this.unclosedBracket(r),t&&o){if(!a)for(;s.length&&(l=s[s.length-1][0],"space"===l||"comment"===l);)this.tokenizer.back(s.pop());this.decl(s,a)}else this.unknownWord(s)}parse(){let e;for(;!this.tokenizer.endOfFile();)switch(e=this.tokenizer.nextToken(),e[0]){case"space":this.spaces+=e[1];break;case";":this.freeSemicolon(e);break;case"}":this.end(e);break;case"comment":this.comment(e);break;case"at-word":this.atrule(e);break;case"{":this.emptyRule(e);break;default:this.other(e)}this.endFile()}precheckMissedSemicolon(){}raw(e,t,n,o){let r,i,a,s,l=n.length,c="",u=!0;for(let d=0;de+t[1]),"");e.raws[t]={raw:o,value:c}}e[t]=c}rule(e){e.pop();let t=new ea;this.init(t,e[0][2]),t.raws.between=this.spacesAndCommentsFromEnd(e),this.raw(t,"selector",e),this.current=t}spacesAndCommentsFromEnd(e){let t,n="";for(;e.length&&(t=e[e.length-1][0],"space"===t||"comment"===t);)n=e.pop()[1]+n;return n}spacesAndCommentsFromStart(e){let t,n="";for(;e.length&&(t=e[0][0],"space"===t||"comment"===t);)n+=e.shift()[1];return n}spacesFromEnd(e){let t,n="";for(;e.length&&(t=e[e.length-1][0],"space"===t);)n=e.pop()[1]+n;return n}stringFrom(e,t){let n="";for(let o=t;oCa(e))),e}let Ia={},Oa=class e{constructor(t,n,o){let r;if(this.stringified=!1,this.processed=!1,"object"!=typeof n||null===n||"root"!==n.type&&"document"!==n.type)if(n instanceof e||n instanceof fa)r=Ca(n.root),n.map&&(void 0===o.map&&(o.map={}),o.map.inline||(o.map.inline=!1),o.map.prev=n.map);else{let e=ma;o.syntax&&(e=o.syntax.parse),o.parser&&(e=o.parser),e.parse&&(e=e.parse);try{r=e(n,o)}catch(i){this.processed=!0,this.error=i}r&&!r[ca]&&pa.rebuild(r)}else r=Ca(n);this.result=new fa(t,r,o),this.helpers={...Ia,postcss:Ia,result:this.result},this.plugins=this.processor.plugins.map((e=>"object"==typeof e&&e.prepare?{...e,...e.prepare(this.result)}:e))}async(){return this.error?Promise.reject(this.error):this.processed?Promise.resolve(this.result):(this.processing||(this.processing=this.runAsync()),this.processing)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}getAsyncError(){throw new Error("Use process(css).then(cb) to work with async plugins")}handleError(e,t){let n=this.result.lastPlugin;try{t&&t.addToError(e),this.error=e,"CssSyntaxError"!==e.name||e.plugin?n.postcssVersion:(e.plugin=n.postcssPlugin,e.setMessage())}catch(o){console&&console.error&&console.error(o)}return e}prepareVisitors(){this.listeners={};let e=(e,t,n)=>{this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].push([e,n])};for(let t of this.plugins)if("object"==typeof t)for(let n in t){if(!ya[n]&&/^[A-Z]/.test(n))throw new Error(`Unknown event ${n} in ${t.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`);if(!ba[n])if("object"==typeof t[n])for(let o in t[n])e(t,"*"===o?n:n+"-"+o.toLowerCase(),t[n][o]);else"function"==typeof t[n]&&e(t,n,t[n])}this.hasListener=Object.keys(this.listeners).length>0}async runAsync(){this.plugin=0;for(let n=0;n0;){let e=this.visitTick(n);if(ka(e))try{await e}catch(t){let e=n[n.length-1].node;throw this.handleError(t,e)}}}if(this.listeners.OnceExit)for(let[n,o]of this.listeners.OnceExit){this.result.lastPlugin=n;try{if("document"===e.type){let t=e.nodes.map((e=>o(e,this.helpers)));await Promise.all(t)}else await o(e,this.helpers)}catch(t){throw this.handleError(t)}}}return this.processed=!0,this.stringify()}runOnRoot(e){this.result.lastPlugin=e;try{if("object"==typeof e&&e.Once){if("document"===this.result.root.type){let t=this.result.root.nodes.map((t=>e.Once(t,this.helpers)));return ka(t[0])?Promise.all(t):t}return e.Once(this.result.root,this.helpers)}if("function"==typeof e)return e(this.result.root,this.result)}catch(t){throw this.handleError(t)}}stringify(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();let e=this.result.opts,t=da;e.syntax&&(t=e.syntax.stringify),e.stringifier&&(t=e.stringifier),t.stringify&&(t=t.stringify);let n=new ua(t,this.result.root,this.result.opts).generate();return this.result.css=n[0],this.result.map=n[1],this.result}sync(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(let e of this.plugins){if(ka(this.runOnRoot(e)))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){let e=this.result.root;for(;!e[la];)e[la]=!0,this.walkSync(e);if(this.listeners.OnceExit)if("document"===e.type)for(let t of e.nodes)this.visitSync(this.listeners.OnceExit,t);else this.visitSync(this.listeners.OnceExit,e)}return this.result}then(e,t){return this.async().then(e,t)}toString(){return this.css}visitSync(e,t){for(let[o,r]of e){let e;this.result.lastPlugin=o;try{e=r(t,this.helpers)}catch(n){throw this.handleError(n,t.proxyOf)}if("root"!==t.type&&"document"!==t.type&&!t.parent)return!0;if(ka(e))throw this.getAsyncError()}}visitTick(e){let t=e[e.length-1],{node:n,visitors:o}=t;if("root"!==n.type&&"document"!==n.type&&!n.parent)return void e.pop();if(o.length>0&&t.visitorIndex{e[la]||this.walkSync(e)}));else{let t=this.listeners[n];if(t&&this.visitSync(t,e.toProxy()))return}}warnings(){return this.sync().warnings()}get content(){return this.stringify().content}get css(){return this.stringify().css}get map(){return this.stringify().map}get messages(){return this.sync().messages}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){return this.sync().root}get[Symbol.toStringTag](){return"LazyResult"}};Oa.registerPostcss=e=>{Ia=e};var Ea=Oa;Oa.default=Oa,ga.registerLazyResult(Oa),ha.registerLazyResult(Oa);let Ta=_r,La=Jo,Aa=sa;const Ma=di;let Ra=class{constructor(e,t,n){let o;t=t.toString(),this.stringified=!1,this._processor=e,this._css=t,this._opts=n,this._map=void 0;let r=La;this.result=new Ma(this._processor,o,this._opts),this.result.css=t;let i=this;Object.defineProperty(this.result,"root",{get:()=>i.root});let a=new Ta(r,o,this._opts,t);if(a.isMap()){let[e,t]=a.generate();e&&(this.result.css=e),t&&(this.result.map=t)}else a.clearAnnotation(),this.result.css=a.css}async(){return this.error?Promise.reject(this.error):Promise.resolve(this.result)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}sync(){if(this.error)throw this.error;return this.result}then(e,t){return this.async().then(e,t)}toString(){return this._css}warnings(){return[]}get content(){return this.result.css}get css(){return this.result.css}get map(){return this.result.map}get messages(){return[]}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){if(this._root)return this._root;let e,t=Aa;try{e=t(this._css,this._opts)}catch(n){this.error=n}if(this.error)throw this.error;return this._root=e,e}get[Symbol.toStringTag](){return"NoWorkResult"}};var Pa=Ra;Ra.default=Ra;let Da=Pa,Na=Ea,ja=ai,Fa=zi,Ba=class{constructor(e=[]){this.version="8.4.38",this.plugins=this.normalize(e)}normalize(e){let t=[];for(let n of e)if(!0===n.postcss?n=n():n.postcss&&(n=n.postcss),"object"==typeof n&&Array.isArray(n.plugins))t=t.concat(n.plugins);else if("object"==typeof n&&n.postcssPlugin)t.push(n);else if("function"==typeof n)t.push(n);else{if("object"!=typeof n||!n.parse&&!n.stringify)throw new Error(n+" is not a PostCSS plugin")}return t}process(e,t={}){return this.plugins.length||t.parser||t.stringifier||t.syntax?new Na(this,e,t):new Da(this,e,t)}use(e){return this.plugins=this.plugins.concat(this.normalize([e])),this}};var _a=Ba;Ba.default=Ba,Fa.registerProcessor(Ba),ja.registerProcessor(Ba);let Ua=rr,Ha=hr,za=zr,qa=Fi,Wa=Tr,Ga=zi,Va=Zi;function Ja(e,t){if(Array.isArray(e))return e.map((e=>Ja(e)));let{inputs:n,...o}=e;if(n){t=[];for(let e of n){let n={...e,__proto__:Wa.prototype};n.map&&(n.map={...n.map,__proto__:Ha.prototype}),t.push(n)}}if(o.nodes&&(o.nodes=e.nodes.map((e=>Ja(e,t)))),o.source){let{inputId:e,...n}=o.source;o.source=n,null!=e&&(o.source.input=t[e])}if("root"===o.type)return new Ga(o);if("decl"===o.type)return new Ua(o);if("rule"===o.type)return new Va(o);if("comment"===o.type)return new za(o);if("atrule"===o.type)return new qa(o);throw new Error("Unknown node type: "+e.type)}var Za=Ja;Ja.default=Ja;let Ka=Uo,Ya=rr,Xa=Ea,$a=ti,Qa=_a,es=Jo,ts=Za,ns=ai,os=li,rs=zr,is=Fi,as=di,ss=Tr,ls=sa,cs=Wi,us=Zi,ds=zi,ps=tr;function hs(...e){return 1===e.length&&Array.isArray(e[0])&&(e=e[0]),new Qa(e)}hs.plugin=function(e,t){let n,o=!1;function r(...n){console&&console.warn&&!o&&(o=!0,console.warn(e+": postcss.plugin was deprecated. Migration guide:\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration"),process.env.LANG&&process.env.LANG.startsWith("cn")&&console.warn(e+": 里面 postcss.plugin 被弃用. 迁移指南:\nhttps://www.w3ctech.com/topic/2226"));let r=t(...n);return r.postcssPlugin=e,r.postcssVersion=(new Qa).version,r}return Object.defineProperty(r,"postcss",{get:()=>(n||(n=r()),n)}),r.process=function(e,t,n){return hs([r(n)]).process(e,t)},r},hs.stringify=es,hs.parse=ls,hs.fromJSON=ts,hs.list=cs,hs.comment=e=>new rs(e),hs.atRule=e=>new is(e),hs.decl=e=>new Ya(e),hs.rule=e=>new us(e),hs.root=e=>new ds(e),hs.document=e=>new ns(e),hs.CssSyntaxError=Ka,hs.Declaration=Ya,hs.Container=$a,hs.Processor=Qa,hs.Document=ns,hs.Comment=rs,hs.Warning=os,hs.AtRule=is,hs.Result=as,hs.Input=ss,hs.Rule=us,hs.Root=ds,hs.Node=ps,Xa.registerPostcss(hs);var fs=hs;hs.default=hs;const ms=Ao(fs);ms.stringify,ms.fromJSON,ms.plugin,ms.parse,ms.list,ms.document,ms.comment,ms.atRule,ms.rule,ms.decl,ms.root,ms.CssSyntaxError,ms.Declaration,ms.Container,ms.Processor,ms.Document,ms.Comment,ms.Warning,ms.AtRule,ms.Result,ms.Input,ms.Rule,ms.Root,ms.Node;var gs=Object.defineProperty,vs=(e,t,n)=>((e,t,n)=>t in e?gs(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,"symbol"!=typeof t?t+"":t,n);function ys(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function bs(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var n=function e(){return this instanceof e?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,o.get?o:{enumerable:!0,get:function(){return e[t]}})})),n}var ws={exports:{}},ks=String,xs=function(){return{isColorSupported:!1,reset:ks,bold:ks,dim:ks,italic:ks,underline:ks,inverse:ks,hidden:ks,strikethrough:ks,black:ks,red:ks,green:ks,yellow:ks,blue:ks,magenta:ks,cyan:ks,white:ks,gray:ks,bgBlack:ks,bgRed:ks,bgGreen:ks,bgYellow:ks,bgBlue:ks,bgMagenta:ks,bgCyan:ks,bgWhite:ks}};ws.exports=xs(),ws.exports.createColors=xs;var Ss=ws.exports;const Cs=bs(Object.freeze(Object.defineProperty({__proto__:null,default:{}},Symbol.toStringTag,{value:"Module"})));let Is=Ss,Os=Cs,Es=class e extends Error{constructor(t,n,o,r,i,a){super(t),this.name="CssSyntaxError",this.reason=t,i&&(this.file=i),r&&(this.source=r),a&&(this.plugin=a),void 0!==n&&void 0!==o&&("number"==typeof n?(this.line=n,this.column=o):(this.line=n.line,this.column=n.column,this.endLine=o.line,this.endColumn=o.column)),this.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(this,e)}setMessage(){this.message=this.plugin?this.plugin+": ":"",this.message+=this.file?this.file:"",void 0!==this.line&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason}showSourceCode(e){if(!this.source)return"";let t=this.source;null==e&&(e=Is.isColorSupported),Os&&e&&(t=Os(t));let n,o,r=t.split(/\r?\n/),i=Math.max(this.line-3,0),a=Math.min(this.line+2,r.length),s=String(a).length;if(e){let{bold:e,gray:t,red:r}=Is.createColors(!0);n=t=>e(r(t)),o=e=>t(e)}else n=o=e=>e;return r.slice(i,a).map(((e,t)=>{let r=i+1+t,a=" "+(" "+r).slice(-s)+" | ";if(r===this.line){let t=o(a.replace(/\d/g," "))+e.slice(0,this.column-1).replace(/[^\t]/g," ");return n(">")+o(a)+e+"\n "+t+n("^")}return" "+o(a)+e})).join("\n")}toString(){let e=this.showSourceCode();return e&&(e="\n\n"+e+"\n"),this.name+": "+this.message+e}};var Ts=Es;Es.default=Es;var Ls={};Ls.isClean=Symbol("isClean"),Ls.my=Symbol("my");const As={after:"\n",beforeClose:"\n",beforeComment:"\n",beforeDecl:"\n",beforeOpen:" ",beforeRule:"\n",colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:!1};let Ms=class{constructor(e){this.builder=e}atrule(e,t){let n="@"+e.name,o=e.params?this.rawValue(e,"params"):"";if(void 0!==e.raws.afterName?n+=e.raws.afterName:o&&(n+=" "),e.nodes)this.block(e,n+o);else{let r=(e.raws.between||"")+(t?";":"");this.builder(n+o+r,e)}}beforeAfter(e,t){let n;n="decl"===e.type?this.raw(e,null,"beforeDecl"):"comment"===e.type?this.raw(e,null,"beforeComment"):"before"===t?this.raw(e,null,"beforeRule"):this.raw(e,null,"beforeClose");let o=e.parent,r=0;for(;o&&"root"!==o.type;)r+=1,o=o.parent;if(n.includes("\n")){let t=this.raw(e,null,"indent");if(t.length)for(let e=0;e0&&"comment"===e.nodes[t].type;)t-=1;let n=this.raw(e,"semicolon");for(let o=0;o{if(o=e.raws[t],void 0!==o)return!1}))}var a;return void 0===o&&(o=As[n]),i.rawCache[n]=o,o}rawBeforeClose(e){let t;return e.walk((e=>{if(e.nodes&&e.nodes.length>0&&void 0!==e.raws.after)return t=e.raws.after,t.includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1})),t&&(t=t.replace(/\S/g,"")),t}rawBeforeComment(e,t){let n;return e.walkComments((e=>{if(void 0!==e.raws.before)return n=e.raws.before,n.includes("\n")&&(n=n.replace(/[^\n]+$/,"")),!1})),void 0===n?n=this.raw(t,null,"beforeDecl"):n&&(n=n.replace(/\S/g,"")),n}rawBeforeDecl(e,t){let n;return e.walkDecls((e=>{if(void 0!==e.raws.before)return n=e.raws.before,n.includes("\n")&&(n=n.replace(/[^\n]+$/,"")),!1})),void 0===n?n=this.raw(t,null,"beforeRule"):n&&(n=n.replace(/\S/g,"")),n}rawBeforeOpen(e){let t;return e.walk((e=>{if("decl"!==e.type&&(t=e.raws.between,void 0!==t))return!1})),t}rawBeforeRule(e){let t;return e.walk((n=>{if(n.nodes&&(n.parent!==e||e.first!==n)&&void 0!==n.raws.before)return t=n.raws.before,t.includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1})),t&&(t=t.replace(/\S/g,"")),t}rawColon(e){let t;return e.walkDecls((e=>{if(void 0!==e.raws.between)return t=e.raws.between.replace(/[^\s:]/g,""),!1})),t}rawEmptyBody(e){let t;return e.walk((e=>{if(e.nodes&&0===e.nodes.length&&(t=e.raws.after,void 0!==t))return!1})),t}rawIndent(e){if(e.raws.indent)return e.raws.indent;let t;return e.walk((n=>{let o=n.parent;if(o&&o!==e&&o.parent&&o.parent===e&&void 0!==n.raws.before){let e=n.raws.before.split("\n");return t=e[e.length-1],t=t.replace(/\S/g,""),!1}})),t}rawSemicolon(e){let t;return e.walk((e=>{if(e.nodes&&e.nodes.length&&"decl"===e.last.type&&(t=e.raws.semicolon,void 0!==t))return!1})),t}rawValue(e,t){let n=e[t],o=e.raws[t];return o&&o.value===n?o.raw:n}root(e){this.body(e),e.raws.after&&this.builder(e.raws.after)}rule(e){this.block(e,this.rawValue(e,"selector")),e.raws.ownSemicolon&&this.builder(e.raws.ownSemicolon,e,"end")}stringify(e,t){if(!this[e.type])throw new Error("Unknown AST node type "+e.type+". Maybe you need to change PostCSS stringifier.");this[e.type](e,t)}};var Rs=Ms;Ms.default=Ms;let Ps=Rs;function Ds(e,t){new Ps(t).stringify(e)}var Ns=Ds;Ds.default=Ds;let{isClean:js,my:Fs}=Ls,Bs=Ts,_s=Rs,Us=Ns;function Hs(e,t){let n=new e.constructor;for(let o in e){if(!Object.prototype.hasOwnProperty.call(e,o))continue;if("proxyCache"===o)continue;let r=e[o],i=typeof r;"parent"===o&&"object"===i?t&&(n[o]=t):"source"===o?n[o]=r:Array.isArray(r)?n[o]=r.map((e=>Hs(e,n))):("object"===i&&null!==r&&(r=Hs(r)),n[o]=r)}return n}let zs=class{constructor(e={}){this.raws={},this[js]=!1,this[Fs]=!0;for(let t in e)if("nodes"===t){this.nodes=[];for(let n of e[t])"function"==typeof n.clone?this.append(n.clone()):this.append(n)}else this[t]=e[t]}addToError(e){if(e.postcssNode=this,e.stack&&this.source&&/\n\s{4}at /.test(e.stack)){let t=this.source;e.stack=e.stack.replace(/\n\s{4}at /,`$&${t.input.from}:${t.start.line}:${t.start.column}$&`)}return e}after(e){return this.parent.insertAfter(this,e),this}assign(e={}){for(let t in e)this[t]=e[t];return this}before(e){return this.parent.insertBefore(this,e),this}cleanRaws(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between}clone(e={}){let t=Hs(this);for(let n in e)t[n]=e[n];return t}cloneAfter(e={}){let t=this.clone(e);return this.parent.insertAfter(this,t),t}cloneBefore(e={}){let t=this.clone(e);return this.parent.insertBefore(this,t),t}error(e,t={}){if(this.source){let{end:n,start:o}=this.rangeBy(t);return this.source.input.error(e,{column:o.column,line:o.line},{column:n.column,line:n.line},t)}return new Bs(e)}getProxyProcessor(){return{get:(e,t)=>"proxyOf"===t?e:"root"===t?()=>e.root().toProxy():e[t],set:(e,t,n)=>(e[t]===n||(e[t]=n,"prop"!==t&&"value"!==t&&"name"!==t&&"params"!==t&&"important"!==t&&"text"!==t||e.markDirty()),!0)}}markDirty(){if(this[js]){this[js]=!1;let e=this;for(;e=e.parent;)e[js]=!1}}next(){if(!this.parent)return;let e=this.parent.index(this);return this.parent.nodes[e+1]}positionBy(e,t){let n=this.source.start;if(e.index)n=this.positionInside(e.index,t);else if(e.word){let o=(t=this.toString()).indexOf(e.word);-1!==o&&(n=this.positionInside(o,t))}return n}positionInside(e,t){let n=t||this.toString(),o=this.source.start.column,r=this.source.start.line;for(let i=0;i"object"==typeof e&&e.toJSON?e.toJSON(null,t):e));else if("object"==typeof e&&e.toJSON)n[i]=e.toJSON(null,t);else if("source"===i){let o=t.get(e.input);null==o&&(o=r,t.set(e.input,r),r++),n[i]={end:e.end,inputId:o,start:e.start}}else n[i]=e}return o&&(n.inputs=[...t.keys()].map((e=>e.toJSON()))),n}toProxy(){return this.proxyCache||(this.proxyCache=new Proxy(this,this.getProxyProcessor())),this.proxyCache}toString(e=Us){e.stringify&&(e=e.stringify);let t="";return e(this,(e=>{t+=e})),t}warn(e,t,n){let o={node:this};for(let r in n)o[r]=n[r];return e.warn(t,o)}get proxyOf(){return this}};var qs=zs;zs.default=zs;let Ws=qs,Gs=class extends Ws{constructor(e){e&&void 0!==e.value&&"string"!=typeof e.value&&(e={...e,value:String(e.value)}),super(e),this.type="decl"}get variable(){return this.prop.startsWith("--")||"$"===this.prop[0]}};var Vs=Gs;Gs.default=Gs;var Js={nanoid:(e=21)=>{let t="",n=e;for(;n--;)t+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[64*Math.random()|0];return t},customAlphabet:(e,t=21)=>(n=t)=>{let o="",r=n;for(;r--;)o+=e[Math.random()*e.length|0];return o}};let{SourceMapConsumer:Zs,SourceMapGenerator:Ks}=Cs,{existsSync:Ys,readFileSync:Xs}=Cs,{dirname:$s,join:Qs}=Cs;let el=class{constructor(e,t){if(!1===t.map)return;this.loadAnnotation(e),this.inline=this.startWith(this.annotation,"data:");let n=t.map?t.map.prev:void 0,o=this.loadMap(t.from,n);!this.mapFile&&t.from&&(this.mapFile=t.from),this.mapFile&&(this.root=$s(this.mapFile)),o&&(this.text=o)}consumer(){return this.consumerCache||(this.consumerCache=new Zs(this.text)),this.consumerCache}decodeInline(e){if(/^data:application\/json;charset=utf-?8,/.test(e)||/^data:application\/json,/.test(e))return decodeURIComponent(e.substr(RegExp.lastMatch.length));if(/^data:application\/json;charset=utf-?8;base64,/.test(e)||/^data:application\/json;base64,/.test(e))return t=e.substr(RegExp.lastMatch.length),Buffer?Buffer.from(t,"base64").toString():window.atob(t);var t;let n=e.match(/data:application\/json;([^,]+),/)[1];throw new Error("Unsupported source map encoding "+n)}getAnnotationURL(e){return e.replace(/^\/\*\s*# sourceMappingURL=/,"").trim()}isMap(e){return"object"==typeof e&&("string"==typeof e.mappings||"string"==typeof e._mappings||Array.isArray(e.sections))}loadAnnotation(e){let t=e.match(/\/\*\s*# sourceMappingURL=/gm);if(!t)return;let n=e.lastIndexOf(t.pop()),o=e.indexOf("*/",n);n>-1&&o>-1&&(this.annotation=this.getAnnotationURL(e.substring(n,o)))}loadFile(e){if(this.root=$s(e),Ys(e))return this.mapFile=e,Xs(e,"utf-8").toString().trim()}loadMap(e,t){if(!1===t)return!1;if(t){if("string"==typeof t)return t;if("function"!=typeof t){if(t instanceof Zs)return Ks.fromSourceMap(t).toString();if(t instanceof Ks)return t.toString();if(this.isMap(t))return JSON.stringify(t);throw new Error("Unsupported previous source map format: "+t.toString())}{let n=t(e);if(n){let e=this.loadFile(n);if(!e)throw new Error("Unable to load previous source map: "+n.toString());return e}}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){let t=this.annotation;return e&&(t=Qs($s(e),t)),this.loadFile(t)}}}startWith(e,t){return!!e&&e.substr(0,t.length)===t}withContent(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)}};var tl=el;el.default=el;let{SourceMapConsumer:nl,SourceMapGenerator:ol}=Cs,{fileURLToPath:rl,pathToFileURL:il}=Cs,{isAbsolute:al,resolve:sl}=Cs,{nanoid:ll}=Js,cl=Cs,ul=Ts,dl=tl,pl=Symbol("fromOffsetCache"),hl=Boolean(nl&&ol),fl=Boolean(sl&&al),ml=class{constructor(e,t={}){if(null==e||"object"==typeof e&&!e.toString)throw new Error(`PostCSS received ${e} instead of CSS string`);if(this.css=e.toString(),"\ufeff"===this.css[0]||"￾"===this.css[0]?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,t.from&&(!fl||/^\w+:\/\//.test(t.from)||al(t.from)?this.file=t.from:this.file=sl(t.from)),fl&&hl){let e=new dl(this.css,t);if(e.text){this.map=e;let t=e.consumer().file;!this.file&&t&&(this.file=this.mapResolve(t))}}this.file||(this.id=""),this.map&&(this.map.file=this.from)}error(e,t,n,o={}){let r,i,a;if(t&&"object"==typeof t){let e=t,o=n;if("number"==typeof e.offset){let o=this.fromOffset(e.offset);t=o.line,n=o.col}else t=e.line,n=e.column;if("number"==typeof o.offset){let e=this.fromOffset(o.offset);i=e.line,a=e.col}else i=o.line,a=o.column}else if(!n){let e=this.fromOffset(t);t=e.line,n=e.col}let s=this.origin(t,n,i,a);return r=s?new ul(e,void 0===s.endLine?s.line:{column:s.column,line:s.line},void 0===s.endLine?s.column:{column:s.endColumn,line:s.endLine},s.source,s.file,o.plugin):new ul(e,void 0===i?t:{column:n,line:t},void 0===i?n:{column:a,line:i},this.css,this.file,o.plugin),r.input={column:n,endColumn:a,endLine:i,line:t,source:this.css},this.file&&(il&&(r.input.url=il(this.file).toString()),r.input.file=this.file),r}fromOffset(e){let t,n;if(this[pl])n=this[pl];else{let e=this.css.split("\n");n=new Array(e.length);let t=0;for(let o=0,r=e.length;o=t)o=n.length-1;else{let t,r=n.length-2;for(;o>1),e=n[t+1])){o=t;break}o=t+1}}return{col:e-n[o]+1,line:o+1}}mapResolve(e){return/^\w+:\/\//.test(e)?e:sl(this.map.consumer().sourceRoot||this.map.root||".",e)}origin(e,t,n,o){if(!this.map)return!1;let r,i,a=this.map.consumer(),s=a.originalPositionFor({column:t,line:e});if(!s.source)return!1;"number"==typeof n&&(r=a.originalPositionFor({column:o,line:n})),i=al(s.source)?il(s.source):new URL(s.source,this.map.consumer().sourceRoot||il(this.map.mapFile));let l={column:s.column,endColumn:r&&r.column,endLine:r&&r.line,line:s.line,url:i.toString()};if("file:"===i.protocol){if(!rl)throw new Error("file: protocol is not available in this PostCSS build");l.file=rl(i)}let c=a.sourceContentFor(s.source);return c&&(l.source=c),l}toJSON(){let e={};for(let t of["hasBOM","css","file","id"])null!=this[t]&&(e[t]=this[t]);return this.map&&(e.map={...this.map},e.map.consumerCache&&(e.map.consumerCache=void 0)),e}get from(){return this.file||this.id}};var gl=ml;ml.default=ml,cl&&cl.registerInput&&cl.registerInput(ml);let{SourceMapConsumer:vl,SourceMapGenerator:yl}=Cs,{dirname:bl,relative:wl,resolve:kl,sep:xl}=Cs,{pathToFileURL:Sl}=Cs,Cl=gl,Il=Boolean(vl&&yl),Ol=Boolean(bl&&kl&&wl&&xl);var El=class{constructor(e,t,n,o){this.stringify=e,this.mapOpts=n.map||{},this.root=t,this.opts=n,this.css=o,this.originalCSS=o,this.usesFileUrls=!this.mapOpts.from&&this.mapOpts.absolute,this.memoizedFileURLs=new Map,this.memoizedPaths=new Map,this.memoizedURLs=new Map}addAnnotation(){let e;e=this.isInline()?"data:application/json;base64,"+this.toBase64(this.map.toString()):"string"==typeof this.mapOpts.annotation?this.mapOpts.annotation:"function"==typeof this.mapOpts.annotation?this.mapOpts.annotation(this.opts.to,this.root):this.outputFile()+".map";let t="\n";this.css.includes("\r\n")&&(t="\r\n"),this.css+=t+"/*# sourceMappingURL="+e+" */"}applyPrevMaps(){for(let e of this.previous()){let t,n=this.toUrl(this.path(e.file)),o=e.root||bl(e.file);!1===this.mapOpts.sourcesContent?(t=new vl(e.text),t.sourcesContent&&(t.sourcesContent=null)):t=e.consumer(),this.map.applySourceMap(t,n,this.toUrl(this.path(o)))}}clearAnnotation(){if(!1!==this.mapOpts.annotation)if(this.root){let e;for(let t=this.root.nodes.length-1;t>=0;t--)e=this.root.nodes[t],"comment"===e.type&&0===e.text.indexOf("# sourceMappingURL=")&&this.root.removeChild(t)}else this.css&&(this.css=this.css.replace(/\n*?\/\*#[\S\s]*?\*\/$/gm,""))}generate(){if(this.clearAnnotation(),Ol&&Il&&this.isMap())return this.generateMap();{let e="";return this.stringify(this.root,(t=>{e+=t})),[e]}}generateMap(){if(this.root)this.generateString();else if(1===this.previous().length){let e=this.previous()[0].consumer();e.file=this.outputFile(),this.map=yl.fromSourceMap(e,{ignoreInvalidMapping:!0})}else this.map=new yl({file:this.outputFile(),ignoreInvalidMapping:!0}),this.map.addMapping({generated:{column:0,line:1},original:{column:0,line:1},source:this.opts.from?this.toUrl(this.path(this.opts.from)):""});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]}generateString(){this.css="",this.map=new yl({file:this.outputFile(),ignoreInvalidMapping:!0});let e,t,n=1,o=1,r="",i={generated:{column:0,line:0},original:{column:0,line:0},source:""};this.stringify(this.root,((a,s,l)=>{if(this.css+=a,s&&"end"!==l&&(i.generated.line=n,i.generated.column=o-1,s.source&&s.source.start?(i.source=this.sourcePath(s),i.original.line=s.source.start.line,i.original.column=s.source.start.column-1,this.map.addMapping(i)):(i.source=r,i.original.line=1,i.original.column=0,this.map.addMapping(i))),e=a.match(/\n/g),e?(n+=e.length,t=a.lastIndexOf("\n"),o=a.length-t):o+=a.length,s&&"start"!==l){let e=s.parent||{raws:{}};("decl"===s.type||"atrule"===s.type&&!s.nodes)&&s===e.last&&!e.raws.semicolon||(s.source&&s.source.end?(i.source=this.sourcePath(s),i.original.line=s.source.end.line,i.original.column=s.source.end.column-1,i.generated.line=n,i.generated.column=o-2,this.map.addMapping(i)):(i.source=r,i.original.line=1,i.original.column=0,i.generated.line=n,i.generated.column=o-1,this.map.addMapping(i)))}}))}isAnnotation(){return!!this.isInline()||(void 0!==this.mapOpts.annotation?this.mapOpts.annotation:!this.previous().length||this.previous().some((e=>e.annotation)))}isInline(){if(void 0!==this.mapOpts.inline)return this.mapOpts.inline;let e=this.mapOpts.annotation;return(void 0===e||!0===e)&&(!this.previous().length||this.previous().some((e=>e.inline)))}isMap(){return void 0!==this.opts.map?!!this.opts.map:this.previous().length>0}isSourcesContent(){return void 0!==this.mapOpts.sourcesContent?this.mapOpts.sourcesContent:!this.previous().length||this.previous().some((e=>e.withContent()))}outputFile(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"}path(e){if(this.mapOpts.absolute)return e;if(60===e.charCodeAt(0))return e;if(/^\w+:\/\//.test(e))return e;let t=this.memoizedPaths.get(e);if(t)return t;let n=this.opts.to?bl(this.opts.to):".";"string"==typeof this.mapOpts.annotation&&(n=bl(kl(n,this.mapOpts.annotation)));let o=wl(n,e);return this.memoizedPaths.set(e,o),o}previous(){if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk((e=>{if(e.source&&e.source.input.map){let t=e.source.input.map;this.previousMaps.includes(t)||this.previousMaps.push(t)}}));else{let e=new Cl(this.originalCSS,this.opts);e.map&&this.previousMaps.push(e.map)}return this.previousMaps}setSourcesContent(){let e={};if(this.root)this.root.walk((t=>{if(t.source){let n=t.source.input.from;if(n&&!e[n]){e[n]=!0;let o=this.usesFileUrls?this.toFileUrl(n):this.toUrl(this.path(n));this.map.setSourceContent(o,t.source.input.css)}}}));else if(this.css){let e=this.opts.from?this.toUrl(this.path(this.opts.from)):"";this.map.setSourceContent(e,this.css)}}sourcePath(e){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(e.source.input.from):this.toUrl(this.path(e.source.input.from))}toBase64(e){return Buffer?Buffer.from(e).toString("base64"):window.btoa(unescape(encodeURIComponent(e)))}toFileUrl(e){let t=this.memoizedFileURLs.get(e);if(t)return t;if(Sl){let t=Sl(e).toString();return this.memoizedFileURLs.set(e,t),t}throw new Error("`map.absolute` option is not available in this PostCSS build")}toUrl(e){let t=this.memoizedURLs.get(e);if(t)return t;"\\"===xl&&(e=e.replace(/\\/g,"/"));let n=encodeURI(e).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(e,n),n}};let Tl=qs,Ll=class extends Tl{constructor(e){super(e),this.type="comment"}};var Al=Ll;Ll.default=Ll;let Ml,Rl,Pl,Dl,{isClean:Nl,my:jl}=Ls,Fl=Vs,Bl=Al,_l=qs;function Ul(e){return e.map((e=>(e.nodes&&(e.nodes=Ul(e.nodes)),delete e.source,e)))}function Hl(e){if(e[Nl]=!1,e.proxyOf.nodes)for(let t of e.proxyOf.nodes)Hl(t)}let zl=class e extends _l{append(...e){for(let t of e){let e=this.normalize(t,this.last);for(let t of e)this.proxyOf.nodes.push(t)}return this.markDirty(),this}cleanRaws(e){if(super.cleanRaws(e),this.nodes)for(let t of this.nodes)t.cleanRaws(e)}each(e){if(!this.proxyOf.nodes)return;let t,n,o=this.getIterator();for(;this.indexes[o]"proxyOf"===t?e:e[t]?"each"===t||"string"==typeof t&&t.startsWith("walk")?(...n)=>e[t](...n.map((e=>"function"==typeof e?(t,n)=>e(t.toProxy(),n):e))):"every"===t||"some"===t?n=>e[t](((e,...t)=>n(e.toProxy(),...t))):"root"===t?()=>e.root().toProxy():"nodes"===t?e.nodes.map((e=>e.toProxy())):"first"===t||"last"===t?e[t].toProxy():e[t]:e[t],set:(e,t,n)=>(e[t]===n||(e[t]=n,"name"!==t&&"params"!==t&&"selector"!==t||e.markDirty()),!0)}}index(e){return"number"==typeof e?e:(e.proxyOf&&(e=e.proxyOf),this.proxyOf.nodes.indexOf(e))}insertAfter(e,t){let n,o=this.index(e),r=this.normalize(t,this.proxyOf.nodes[o]).reverse();o=this.index(e);for(let i of r)this.proxyOf.nodes.splice(o+1,0,i);for(let i in this.indexes)n=this.indexes[i],o(t[jl]||e.rebuild(t),(t=t.proxyOf).parent&&t.parent.removeChild(t),t[Nl]&&Hl(t),void 0===t.raws.before&&n&&void 0!==n.raws.before&&(t.raws.before=n.raws.before.replace(/\S/g,"")),t.parent=this.proxyOf,t)))}prepend(...e){e=e.reverse();for(let t of e){let e=this.normalize(t,this.first,"prepend").reverse();for(let t of e)this.proxyOf.nodes.unshift(t);for(let t in this.indexes)this.indexes[t]=this.indexes[t]+e.length}return this.markDirty(),this}push(e){return e.parent=this,this.proxyOf.nodes.push(e),this}removeAll(){for(let e of this.proxyOf.nodes)e.parent=void 0;return this.proxyOf.nodes=[],this.markDirty(),this}removeChild(e){let t;e=this.index(e),this.proxyOf.nodes[e].parent=void 0,this.proxyOf.nodes.splice(e,1);for(let n in this.indexes)t=this.indexes[n],t>=e&&(this.indexes[n]=t-1);return this.markDirty(),this}replaceValues(e,t,n){return n||(n=t,t={}),this.walkDecls((o=>{t.props&&!t.props.includes(o.prop)||t.fast&&!o.value.includes(t.fast)||(o.value=o.value.replace(e,n))})),this.markDirty(),this}some(e){return this.nodes.some(e)}walk(e){return this.each(((t,n)=>{let o;try{o=e(t,n)}catch(r){throw t.addToError(r)}return!1!==o&&t.walk&&(o=t.walk(e)),o}))}walkAtRules(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("atrule"===n.type&&e.test(n.name))return t(n,o)})):this.walk(((n,o)=>{if("atrule"===n.type&&n.name===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("atrule"===e.type)return t(e,n)})))}walkComments(e){return this.walk(((t,n)=>{if("comment"===t.type)return e(t,n)}))}walkDecls(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("decl"===n.type&&e.test(n.prop))return t(n,o)})):this.walk(((n,o)=>{if("decl"===n.type&&n.prop===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("decl"===e.type)return t(e,n)})))}walkRules(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("rule"===n.type&&e.test(n.selector))return t(n,o)})):this.walk(((n,o)=>{if("rule"===n.type&&n.selector===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("rule"===e.type)return t(e,n)})))}get first(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}get last(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}};zl.registerParse=e=>{Ml=e},zl.registerRule=e=>{Rl=e},zl.registerAtRule=e=>{Pl=e},zl.registerRoot=e=>{Dl=e};var ql=zl;zl.default=zl,zl.rebuild=e=>{"atrule"===e.type?Object.setPrototypeOf(e,Pl.prototype):"rule"===e.type?Object.setPrototypeOf(e,Rl.prototype):"decl"===e.type?Object.setPrototypeOf(e,Fl.prototype):"comment"===e.type?Object.setPrototypeOf(e,Bl.prototype):"root"===e.type&&Object.setPrototypeOf(e,Dl.prototype),e[jl]=!0,e.nodes&&e.nodes.forEach((e=>{zl.rebuild(e)}))};let Wl,Gl,Vl=ql,Jl=class extends Vl{constructor(e){super({type:"document",...e}),this.nodes||(this.nodes=[])}toResult(e={}){return new Wl(new Gl,this,e).stringify()}};Jl.registerLazyResult=e=>{Wl=e},Jl.registerProcessor=e=>{Gl=e};var Zl=Jl;Jl.default=Jl;let Kl=class{constructor(e,t={}){if(this.type="warning",this.text=e,t.node&&t.node.source){let e=t.node.rangeBy(t);this.line=e.start.line,this.column=e.start.column,this.endLine=e.end.line,this.endColumn=e.end.column}for(let n in t)this[n]=t[n]}toString(){return this.node?this.node.error(this.text,{index:this.index,plugin:this.plugin,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text}};var Yl=Kl;Kl.default=Kl;let Xl=Yl,$l=class{constructor(e,t,n){this.processor=e,this.messages=[],this.root=t,this.opts=n,this.css=void 0,this.map=void 0}toString(){return this.css}warn(e,t={}){t.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(t.plugin=this.lastPlugin.postcssPlugin);let n=new Xl(e,t);return this.messages.push(n),n}warnings(){return this.messages.filter((e=>"warning"===e.type))}get content(){return this.css}};var Ql=$l;$l.default=$l;const ec="'".charCodeAt(0),tc='"'.charCodeAt(0),nc="\\".charCodeAt(0),oc="/".charCodeAt(0),rc="\n".charCodeAt(0),ic=" ".charCodeAt(0),ac="\f".charCodeAt(0),sc="\t".charCodeAt(0),lc="\r".charCodeAt(0),cc="[".charCodeAt(0),uc="]".charCodeAt(0),dc="(".charCodeAt(0),pc=")".charCodeAt(0),hc="{".charCodeAt(0),fc="}".charCodeAt(0),mc=";".charCodeAt(0),gc="*".charCodeAt(0),vc=":".charCodeAt(0),yc="@".charCodeAt(0),bc=/[\t\n\f\r "#'()/;[\\\]{}]/g,wc=/[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g,kc=/.[\r\n"'(/\\]/,xc=/[\da-f]/i;let Sc=ql,Cc=class extends Sc{constructor(e){super(e),this.type="atrule"}append(...e){return this.proxyOf.nodes||(this.nodes=[]),super.append(...e)}prepend(...e){return this.proxyOf.nodes||(this.nodes=[]),super.prepend(...e)}};var Ic=Cc;Cc.default=Cc,Sc.registerAtRule(Cc);let Oc,Ec,Tc=ql,Lc=class extends Tc{constructor(e){super(e),this.type="root",this.nodes||(this.nodes=[])}normalize(e,t,n){let o=super.normalize(e);if(t)if("prepend"===n)this.nodes.length>1?t.raws.before=this.nodes[1].raws.before:delete t.raws.before;else if(this.first!==t)for(let r of o)r.raws.before=t.raws.before;return o}removeChild(e,t){let n=this.index(e);return!t&&0===n&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[n].raws.before),super.removeChild(e)}toResult(e={}){return new Oc(new Ec,this,e).stringify()}};Lc.registerLazyResult=e=>{Oc=e},Lc.registerProcessor=e=>{Ec=e};var Ac=Lc;Lc.default=Lc,Tc.registerRoot(Lc);let Mc={comma:e=>Mc.split(e,[","],!0),space:e=>Mc.split(e,[" ","\n","\t"]),split(e,t,n){let o=[],r="",i=!1,a=0,s=!1,l="",c=!1;for(let u of e)c?c=!1:"\\"===u?c=!0:s?u===l&&(s=!1):'"'===u||"'"===u?(s=!0,l=u):"("===u?a+=1:")"===u?a>0&&(a-=1):0===a&&t.includes(u)&&(i=!0),i?(""!==r&&o.push(r.trim()),r="",i=!1):r+=u;return(n||""!==r)&&o.push(r.trim()),o}};var Rc=Mc;Mc.default=Mc;let Pc=ql,Dc=Rc,Nc=class extends Pc{constructor(e){super(e),this.type="rule",this.nodes||(this.nodes=[])}get selectors(){return Dc.comma(this.selector)}set selectors(e){let t=this.selector?this.selector.match(/,\s*/):null,n=t?t[0]:","+this.raw("between","beforeOpen");this.selector=e.join(n)}};var jc=Nc;Nc.default=Nc,Pc.registerRule(Nc);let Fc=Vs,Bc=function(e,t={}){let n,o,r,i,a,s,l,c,u,d,p=e.css.valueOf(),h=t.ignoreErrors,f=p.length,m=0,g=[],v=[];function y(t){throw e.error("Unclosed "+t,m)}return{back:function(e){v.push(e)},endOfFile:function(){return 0===v.length&&m>=f},nextToken:function(e){if(v.length)return v.pop();if(m>=f)return;let t=!!e&&e.ignoreUnclosed;switch(n=p.charCodeAt(m),n){case rc:case ic:case sc:case lc:case ac:o=m;do{o+=1,n=p.charCodeAt(o)}while(n===ic||n===rc||n===sc||n===lc||n===ac);d=["space",p.slice(m,o)],m=o-1;break;case cc:case uc:case hc:case fc:case vc:case mc:case pc:{let e=String.fromCharCode(n);d=[e,e,m];break}case dc:if(c=g.length?g.pop()[1]:"",u=p.charCodeAt(m+1),"url"===c&&u!==ec&&u!==tc&&u!==ic&&u!==rc&&u!==sc&&u!==ac&&u!==lc){o=m;do{if(s=!1,o=p.indexOf(")",o+1),-1===o){if(h||t){o=m;break}y("bracket")}for(l=o;p.charCodeAt(l-1)===nc;)l-=1,s=!s}while(s);d=["brackets",p.slice(m,o+1),m,o],m=o}else o=p.indexOf(")",m+1),i=p.slice(m,o+1),-1===o||kc.test(i)?d=["(","(",m]:(d=["brackets",i,m,o],m=o);break;case ec:case tc:r=n===ec?"'":'"',o=m;do{if(s=!1,o=p.indexOf(r,o+1),-1===o){if(h||t){o=m+1;break}y("string")}for(l=o;p.charCodeAt(l-1)===nc;)l-=1,s=!s}while(s);d=["string",p.slice(m,o+1),m,o],m=o;break;case yc:bc.lastIndex=m+1,bc.test(p),o=0===bc.lastIndex?p.length-1:bc.lastIndex-2,d=["at-word",p.slice(m,o+1),m,o],m=o;break;case nc:for(o=m,a=!0;p.charCodeAt(o+1)===nc;)o+=1,a=!a;if(n=p.charCodeAt(o+1),a&&n!==oc&&n!==ic&&n!==rc&&n!==sc&&n!==lc&&n!==ac&&(o+=1,xc.test(p.charAt(o)))){for(;xc.test(p.charAt(o+1));)o+=1;p.charCodeAt(o+1)===ic&&(o+=1)}d=["word",p.slice(m,o+1),m,o],m=o;break;default:n===oc&&p.charCodeAt(m+1)===gc?(o=p.indexOf("*/",m+2)+1,0===o&&(h||t?o=p.length:y("comment")),d=["comment",p.slice(m,o+1),m,o],m=o):(wc.lastIndex=m+1,wc.test(p),o=0===wc.lastIndex?p.length-1:wc.lastIndex-2,d=["word",p.slice(m,o+1),m,o],g.push(d),m=o)}return m++,d},position:function(){return m}}},_c=Al,Uc=Ic,Hc=Ac,zc=jc;const qc={empty:!0,space:!0};var Wc=class{constructor(e){this.input=e,this.root=new Hc,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:e,start:{column:1,line:1,offset:0}}}atrule(e){let t,n,o,r=new Uc;r.name=e[1].slice(1),""===r.name&&this.unnamedAtrule(r,e),this.init(r,e[2]);let i=!1,a=!1,s=[],l=[];for(;!this.tokenizer.endOfFile();){if(t=(e=this.tokenizer.nextToken())[0],"("===t||"["===t?l.push("("===t?")":"]"):"{"===t&&l.length>0?l.push("}"):t===l[l.length-1]&&l.pop(),0===l.length){if(";"===t){r.source.end=this.getPosition(e[2]),r.source.end.offset++,this.semicolon=!0;break}if("{"===t){a=!0;break}if("}"===t){if(s.length>0){for(o=s.length-1,n=s[o];n&&"space"===n[0];)n=s[--o];n&&(r.source.end=this.getPosition(n[3]||n[2]),r.source.end.offset++)}this.end(e);break}s.push(e)}else s.push(e);if(this.tokenizer.endOfFile()){i=!0;break}}r.raws.between=this.spacesAndCommentsFromEnd(s),s.length?(r.raws.afterName=this.spacesAndCommentsFromStart(s),this.raw(r,"params",s),i&&(e=s[s.length-1],r.source.end=this.getPosition(e[3]||e[2]),r.source.end.offset++,this.spaces=r.raws.between,r.raws.between="")):(r.raws.afterName="",r.params=""),a&&(r.nodes=[],this.current=r)}checkMissedSemicolon(e){let t=this.colon(e);if(!1===t)return;let n,o=0;for(let r=t-1;r>=0&&(n=e[r],"space"===n[0]||(o+=1,2!==o));r--);throw this.input.error("Missed semicolon","word"===n[0]?n[3]+1:n[2])}colon(e){let t,n,o,r=0;for(let[i,a]of e.entries()){if(t=a,n=t[0],"("===n&&(r+=1),")"===n&&(r-=1),0===r&&":"===n){if(o){if("word"===o[0]&&"progid"===o[1])continue;return i}this.doubleColon(t)}o=t}return!1}comment(e){let t=new _c;this.init(t,e[2]),t.source.end=this.getPosition(e[3]||e[2]),t.source.end.offset++;let n=e[1].slice(2,-2);if(/^\s*$/.test(n))t.text="",t.raws.left=n,t.raws.right="";else{let e=n.match(/^(\s*)([^]*\S)(\s*)$/);t.text=e[2],t.raws.left=e[1],t.raws.right=e[3]}}createTokenizer(){this.tokenizer=Bc(this.input)}decl(e,t){let n=new Fc;this.init(n,e[0][2]);let o,r=e[e.length-1];for(";"===r[0]&&(this.semicolon=!0,e.pop()),n.source.end=this.getPosition(r[3]||r[2]||function(e){for(let t=e.length-1;t>=0;t--){let n=e[t],o=n[3]||n[2];if(o)return o}}(e)),n.source.end.offset++;"word"!==e[0][0];)1===e.length&&this.unknownWord(e),n.raws.before+=e.shift()[1];for(n.source.start=this.getPosition(e[0][2]),n.prop="";e.length;){let t=e[0][0];if(":"===t||"space"===t||"comment"===t)break;n.prop+=e.shift()[1]}for(n.raws.between="";e.length;){if(o=e.shift(),":"===o[0]){n.raws.between+=o[1];break}"word"===o[0]&&/\w/.test(o[1])&&this.unknownWord([o]),n.raws.between+=o[1]}"_"!==n.prop[0]&&"*"!==n.prop[0]||(n.raws.before+=n.prop[0],n.prop=n.prop.slice(1));let i,a=[];for(;e.length&&(i=e[0][0],"space"===i||"comment"===i);)a.push(e.shift());this.precheckMissedSemicolon(e);for(let s=e.length-1;s>=0;s--){if(o=e[s],"!important"===o[1].toLowerCase()){n.important=!0;let t=this.stringFrom(e,s);t=this.spacesFromEnd(e)+t," !important"!==t&&(n.raws.important=t);break}if("important"===o[1].toLowerCase()){let t=e.slice(0),o="";for(let e=s;e>0;e--){let n=t[e][0];if(0===o.trim().indexOf("!")&&"space"!==n)break;o=t.pop()[1]+o}0===o.trim().indexOf("!")&&(n.important=!0,n.raws.important=o,e=t)}if("space"!==o[0]&&"comment"!==o[0])break}e.some((e=>"space"!==e[0]&&"comment"!==e[0]))&&(n.raws.between+=a.map((e=>e[1])).join(""),a=[]),this.raw(n,"value",a.concat(e),t),n.value.includes(":")&&!t&&this.checkMissedSemicolon(e)}doubleColon(e){throw this.input.error("Double colon",{offset:e[2]},{offset:e[2]+e[1].length})}emptyRule(e){let t=new zc;this.init(t,e[2]),t.selector="",t.raws.between="",this.current=t}end(e){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(e[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(e)}endFile(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position())}freeSemicolon(e){if(this.spaces+=e[1],this.current.nodes){let e=this.current.nodes[this.current.nodes.length-1];e&&"rule"===e.type&&!e.raws.ownSemicolon&&(e.raws.ownSemicolon=this.spaces,this.spaces="")}}getPosition(e){let t=this.input.fromOffset(e);return{column:t.col,line:t.line,offset:e}}init(e,t){this.current.push(e),e.source={input:this.input,start:this.getPosition(t)},e.raws.before=this.spaces,this.spaces="","comment"!==e.type&&(this.semicolon=!1)}other(e){let t=!1,n=null,o=!1,r=null,i=[],a=e[1].startsWith("--"),s=[],l=e;for(;l;){if(n=l[0],s.push(l),"("===n||"["===n)r||(r=l),i.push("("===n?")":"]");else if(a&&o&&"{"===n)r||(r=l),i.push("}");else if(0===i.length){if(";"===n){if(o)return void this.decl(s,a);break}if("{"===n)return void this.rule(s);if("}"===n){this.tokenizer.back(s.pop()),t=!0;break}":"===n&&(o=!0)}else n===i[i.length-1]&&(i.pop(),0===i.length&&(r=null));l=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(t=!0),i.length>0&&this.unclosedBracket(r),t&&o){if(!a)for(;s.length&&(l=s[s.length-1][0],"space"===l||"comment"===l);)this.tokenizer.back(s.pop());this.decl(s,a)}else this.unknownWord(s)}parse(){let e;for(;!this.tokenizer.endOfFile();)switch(e=this.tokenizer.nextToken(),e[0]){case"space":this.spaces+=e[1];break;case";":this.freeSemicolon(e);break;case"}":this.end(e);break;case"comment":this.comment(e);break;case"at-word":this.atrule(e);break;case"{":this.emptyRule(e);break;default:this.other(e)}this.endFile()}precheckMissedSemicolon(){}raw(e,t,n,o){let r,i,a,s,l=n.length,c="",u=!0;for(let d=0;de+t[1]),"");e.raws[t]={raw:o,value:c}}e[t]=c}rule(e){e.pop();let t=new zc;this.init(t,e[0][2]),t.raws.between=this.spacesAndCommentsFromEnd(e),this.raw(t,"selector",e),this.current=t}spacesAndCommentsFromEnd(e){let t,n="";for(;e.length&&(t=e[e.length-1][0],"space"===t||"comment"===t);)n=e.pop()[1]+n;return n}spacesAndCommentsFromStart(e){let t,n="";for(;e.length&&(t=e[0][0],"space"===t||"comment"===t);)n+=e.shift()[1];return n}spacesFromEnd(e){let t,n="";for(;e.length&&(t=e[e.length-1][0],"space"===t);)n=e.pop()[1]+n;return n}stringFrom(e,t){let n="";for(let o=t;opu(e))),e}let hu={},fu=class e{constructor(t,n,o){let r;if(this.stringified=!1,this.processed=!1,"object"!=typeof n||null===n||"root"!==n.type&&"document"!==n.type)if(n instanceof e||n instanceof nu)r=pu(n.root),n.map&&(void 0===o.map&&(o.map={}),o.map.inline||(o.map.inline=!1),o.map.prev=n.map);else{let e=ou;o.syntax&&(e=o.syntax.parse),o.parser&&(e=o.parser),e.parse&&(e=e.parse);try{r=e(n,o)}catch(i){this.processed=!0,this.error=i}r&&!r[Xc]&&eu.rebuild(r)}else r=pu(n);this.result=new nu(t,r,o),this.helpers={...hu,postcss:hu,result:this.result},this.plugins=this.processor.plugins.map((e=>"object"==typeof e&&e.prepare?{...e,...e.prepare(this.result)}:e))}async(){return this.error?Promise.reject(this.error):this.processed?Promise.resolve(this.result):(this.processing||(this.processing=this.runAsync()),this.processing)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}getAsyncError(){throw new Error("Use process(css).then(cb) to work with async plugins")}handleError(e,t){let n=this.result.lastPlugin;try{t&&t.addToError(e),this.error=e,"CssSyntaxError"!==e.name||e.plugin?n.postcssVersion:(e.plugin=n.postcssPlugin,e.setMessage())}catch(o){console&&console.error&&console.error(o)}return e}prepareVisitors(){this.listeners={};let e=(e,t,n)=>{this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].push([e,n])};for(let t of this.plugins)if("object"==typeof t)for(let n in t){if(!au[n]&&/^[A-Z]/.test(n))throw new Error(`Unknown event ${n} in ${t.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`);if(!su[n])if("object"==typeof t[n])for(let o in t[n])e(t,"*"===o?n:n+"-"+o.toLowerCase(),t[n][o]);else"function"==typeof t[n]&&e(t,n,t[n])}this.hasListener=Object.keys(this.listeners).length>0}async runAsync(){this.plugin=0;for(let n=0;n0;){let e=this.visitTick(n);if(cu(e))try{await e}catch(t){let e=n[n.length-1].node;throw this.handleError(t,e)}}}if(this.listeners.OnceExit)for(let[n,o]of this.listeners.OnceExit){this.result.lastPlugin=n;try{if("document"===e.type){let t=e.nodes.map((e=>o(e,this.helpers)));await Promise.all(t)}else await o(e,this.helpers)}catch(t){throw this.handleError(t)}}}return this.processed=!0,this.stringify()}runOnRoot(e){this.result.lastPlugin=e;try{if("object"==typeof e&&e.Once){if("document"===this.result.root.type){let t=this.result.root.nodes.map((t=>e.Once(t,this.helpers)));return cu(t[0])?Promise.all(t):t}return e.Once(this.result.root,this.helpers)}if("function"==typeof e)return e(this.result.root,this.result)}catch(t){throw this.handleError(t)}}stringify(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();let e=this.result.opts,t=Qc;e.syntax&&(t=e.syntax.stringify),e.stringifier&&(t=e.stringifier),t.stringify&&(t=t.stringify);let n=new $c(t,this.result.root,this.result.opts).generate();return this.result.css=n[0],this.result.map=n[1],this.result}sync(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(let e of this.plugins){if(cu(this.runOnRoot(e)))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){let e=this.result.root;for(;!e[Yc];)e[Yc]=!0,this.walkSync(e);if(this.listeners.OnceExit)if("document"===e.type)for(let t of e.nodes)this.visitSync(this.listeners.OnceExit,t);else this.visitSync(this.listeners.OnceExit,e)}return this.result}then(e,t){return this.async().then(e,t)}toString(){return this.css}visitSync(e,t){for(let[o,r]of e){let e;this.result.lastPlugin=o;try{e=r(t,this.helpers)}catch(n){throw this.handleError(n,t.proxyOf)}if("root"!==t.type&&"document"!==t.type&&!t.parent)return!0;if(cu(e))throw this.getAsyncError()}}visitTick(e){let t=e[e.length-1],{node:n,visitors:o}=t;if("root"!==n.type&&"document"!==n.type&&!n.parent)return void e.pop();if(o.length>0&&t.visitorIndex{e[Yc]||this.walkSync(e)}));else{let t=this.listeners[n];if(t&&this.visitSync(t,e.toProxy()))return}}warnings(){return this.sync().warnings()}get content(){return this.stringify().content}get css(){return this.stringify().css}get map(){return this.stringify().map}get messages(){return this.sync().messages}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){return this.sync().root}get[Symbol.toStringTag](){return"LazyResult"}};fu.registerPostcss=e=>{hu=e};var mu=fu;fu.default=fu,ru.registerLazyResult(fu),tu.registerLazyResult(fu);let gu=El,vu=Ns,yu=Kc;const bu=Ql;let wu=class{constructor(e,t,n){let o;t=t.toString(),this.stringified=!1,this._processor=e,this._css=t,this._opts=n,this._map=void 0;let r=vu;this.result=new bu(this._processor,o,this._opts),this.result.css=t;let i=this;Object.defineProperty(this.result,"root",{get:()=>i.root});let a=new gu(r,o,this._opts,t);if(a.isMap()){let[e,t]=a.generate();e&&(this.result.css=e),t&&(this.result.map=t)}else a.clearAnnotation(),this.result.css=a.css}async(){return this.error?Promise.reject(this.error):Promise.resolve(this.result)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}sync(){if(this.error)throw this.error;return this.result}then(e,t){return this.async().then(e,t)}toString(){return this._css}warnings(){return[]}get content(){return this.result.css}get css(){return this.result.css}get map(){return this.result.map}get messages(){return[]}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){if(this._root)return this._root;let e,t=yu;try{e=t(this._css,this._opts)}catch(n){this.error=n}if(this.error)throw this.error;return this._root=e,e}get[Symbol.toStringTag](){return"NoWorkResult"}};var ku=wu;wu.default=wu;let xu=ku,Su=mu,Cu=Zl,Iu=Ac,Ou=class{constructor(e=[]){this.version="8.4.38",this.plugins=this.normalize(e)}normalize(e){let t=[];for(let n of e)if(!0===n.postcss?n=n():n.postcss&&(n=n.postcss),"object"==typeof n&&Array.isArray(n.plugins))t=t.concat(n.plugins);else if("object"==typeof n&&n.postcssPlugin)t.push(n);else if("function"==typeof n)t.push(n);else{if("object"!=typeof n||!n.parse&&!n.stringify)throw new Error(n+" is not a PostCSS plugin")}return t}process(e,t={}){return this.plugins.length||t.parser||t.stringifier||t.syntax?new Su(this,e,t):new xu(this,e,t)}use(e){return this.plugins=this.plugins.concat(this.normalize([e])),this}};var Eu=Ou;Ou.default=Ou,Iu.registerProcessor(Ou),Cu.registerProcessor(Ou);let Tu=Vs,Lu=tl,Au=Al,Mu=Ic,Ru=gl,Pu=Ac,Du=jc;function Nu(e,t){if(Array.isArray(e))return e.map((e=>Nu(e)));let{inputs:n,...o}=e;if(n){t=[];for(let e of n){let n={...e,__proto__:Ru.prototype};n.map&&(n.map={...n.map,__proto__:Lu.prototype}),t.push(n)}}if(o.nodes&&(o.nodes=e.nodes.map((e=>Nu(e,t)))),o.source){let{inputId:e,...n}=o.source;o.source=n,null!=e&&(o.source.input=t[e])}if("root"===o.type)return new Pu(o);if("decl"===o.type)return new Tu(o);if("rule"===o.type)return new Du(o);if("comment"===o.type)return new Au(o);if("atrule"===o.type)return new Mu(o);throw new Error("Unknown node type: "+e.type)}var ju=Nu;Nu.default=Nu;let Fu=Ts,Bu=Vs,_u=mu,Uu=ql,Hu=Eu,zu=Ns,qu=ju,Wu=Zl,Gu=Yl,Vu=Al,Ju=Ic,Zu=Ql,Ku=gl,Yu=Kc,Xu=Rc,$u=jc,Qu=Ac,ed=qs;function td(...e){return 1===e.length&&Array.isArray(e[0])&&(e=e[0]),new Hu(e)}td.plugin=function(e,t){let n,o=!1;function r(...n){console&&console.warn&&!o&&(o=!0,console.warn(e+": postcss.plugin was deprecated. Migration guide:\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration"),process.env.LANG&&process.env.LANG.startsWith("cn")&&console.warn(e+": 里面 postcss.plugin 被弃用. 迁移指南:\nhttps://www.w3ctech.com/topic/2226"));let r=t(...n);return r.postcssPlugin=e,r.postcssVersion=(new Hu).version,r}return Object.defineProperty(r,"postcss",{get:()=>(n||(n=r()),n)}),r.process=function(e,t,n){return td([r(n)]).process(e,t)},r},td.stringify=zu,td.parse=Yu,td.fromJSON=qu,td.list=Xu,td.comment=e=>new Vu(e),td.atRule=e=>new Ju(e),td.decl=e=>new Bu(e),td.rule=e=>new $u(e),td.root=e=>new Qu(e),td.document=e=>new Wu(e),td.CssSyntaxError=Fu,td.Declaration=Bu,td.Container=Uu,td.Processor=Hu,td.Document=Wu,td.Comment=Vu,td.Warning=Gu,td.AtRule=Ju,td.Result=Zu,td.Input=Ku,td.Rule=$u,td.Root=Qu,td.Node=ed,_u.registerPostcss(td);var nd=td;td.default=td;const od=ys(nd);od.stringify,od.fromJSON,od.plugin,od.parse,od.list,od.document,od.comment,od.atRule,od.rule,od.decl,od.root,od.CssSyntaxError,od.Declaration,od.Container,od.Processor,od.Document,od.Comment,od.Warning,od.AtRule,od.Result,od.Input,od.Rule,od.Root,od.Node;class rd{constructor(...e){vs(this,"parentElement",null),vs(this,"parentNode",null),vs(this,"ownerDocument"),vs(this,"firstChild",null),vs(this,"lastChild",null),vs(this,"previousSibling",null),vs(this,"nextSibling",null),vs(this,"ELEMENT_NODE",1),vs(this,"TEXT_NODE",3),vs(this,"nodeType"),vs(this,"nodeName"),vs(this,"RRNodeType")}get childNodes(){const e=[];let t=this.firstChild;for(;t;)e.push(t),t=t.nextSibling;return e}contains(e){if(!(e instanceof rd))return!1;if(e.ownerDocument!==this.ownerDocument)return!1;if(e===this)return!0;for(;e.parentNode;){if(e.parentNode===this)return!0;e=e.parentNode}return!1}appendChild(e){throw new Error("RRDomException: Failed to execute 'appendChild' on 'RRNode': This RRNode type does not support this method.")}insertBefore(e,t){throw new Error("RRDomException: Failed to execute 'insertBefore' on 'RRNode': This RRNode type does not support this method.")}removeChild(e){throw new Error("RRDomException: Failed to execute 'removeChild' on 'RRNode': This RRNode type does not support this method.")}toString(){return"RRNode"}}const id={Node:["childNodes","parentNode","parentElement","textContent"],ShadowRoot:["host","styleSheets"],Element:["shadowRoot","querySelector","querySelectorAll"],MutationObserver:[]},ad={Node:["contains","getRootNode"],ShadowRoot:["getSelection"],Element:[],MutationObserver:["constructor"]},sd={},ld=()=>!!globalThis.Zone;function cd(e){if(sd[e])return sd[e];const t=globalThis[e],n=t.prototype,o=e in id?id[e]:void 0,r=Boolean(o&&o.every((e=>{var t,o;return Boolean(null==(o=null==(t=Object.getOwnPropertyDescriptor(n,e))?void 0:t.get)?void 0:o.toString().includes("[native code]"))}))),i=e in ad?ad[e]:void 0,a=Boolean(i&&i.every((e=>{var t;return"function"==typeof n[e]&&(null==(t=n[e])?void 0:t.toString().includes("[native code]"))})));if(r&&a&&!ld())return sd[e]=t.prototype,t.prototype;try{const o=document.createElement("iframe");document.body.appendChild(o);const r=o.contentWindow;if(!r)return t.prototype;const i=r[e].prototype;return document.body.removeChild(o),i?sd[e]=i:n}catch{return n}}const ud={};function dd(e,t,n){var o;const r=`${e}.${String(n)}`;if(ud[r])return ud[r].call(t);const i=cd(e),a=null==(o=Object.getOwnPropertyDescriptor(i,n))?void 0:o.get;return a?(ud[r]=a,a.call(t)):t[n]}const pd={};function hd(e,t,n){const o=`${e}.${String(n)}`;if(pd[o])return pd[o].bind(t);const r=cd(e)[n];return"function"!=typeof r?t[n]:(pd[o]=r,r.bind(t))}function fd(){return cd("MutationObserver").constructor}const md={childNodes:function(e){return dd("Node",e,"childNodes")},parentNode:function(e){return dd("Node",e,"parentNode")},parentElement:function(e){return dd("Node",e,"parentElement")},textContent:function(e){return dd("Node",e,"textContent")},contains:function(e,t){return hd("Node",e,"contains")(t)},getRootNode:function(e){return hd("Node",e,"getRootNode")()},host:function(e){return e&&"host"in e?dd("ShadowRoot",e,"host"):null},styleSheets:function(e){return e.styleSheets},shadowRoot:function(e){return e&&"shadowRoot"in e?dd("Element",e,"shadowRoot"):null},querySelector:function(e,t){return dd("Element",e,"querySelector")(t)},querySelectorAll:function(e,t){return dd("Element",e,"querySelectorAll")(t)},mutationObserver:fd};function gd(e,t,n=document){const o={capture:!0,passive:!0};return n.addEventListener(e,t,o),()=>n.removeEventListener(e,t,o)}const vd="Please stop import mirror directly. Instead of that,\r\nnow you can use replayer.getMirror() to access the mirror instance of a replayer,\r\nor you can use record.mirror to access the mirror instance during recording.";let yd={map:{},getId:()=>(console.error(vd),-1),getNode:()=>(console.error(vd),null),removeNodeFromMap(){console.error(vd)},has:()=>(console.error(vd),!1),reset(){console.error(vd)}};function bd(e,t,n={}){let o=null,r=0;return function(...i){const a=Date.now();r||!1!==n.leading||(r=a);const s=t-(a-r),l=this;s<=0||s>t?(o&&(clearTimeout(o),o=null),r=a,e.apply(l,i)):o||!1===n.trailing||(o=setTimeout((()=>{r=!1===n.leading?0:Date.now(),o=null,e.apply(l,i)}),s))}}function wd(e,t,n,o,r=window){const i=r.Object.getOwnPropertyDescriptor(e,t);return r.Object.defineProperty(e,t,o?n:{set(e){setTimeout((()=>{n.set.call(this,e)}),0),i&&i.set&&i.set.call(this,e)}}),()=>wd(e,t,i||{},!0)}function kd(e,t,n){try{if(!(t in e))return()=>{};const o=e[t],r=n(o);return"function"==typeof r&&(r.prototype=r.prototype||{},Object.defineProperties(r,{__rrweb_original__:{enumerable:!1,value:o}})),e[t]=r,()=>{e[t]=o}}catch{return()=>{}}}"undefined"!=typeof window&&window.Proxy&&window.Reflect&&(yd=new Proxy(yd,{get:(e,t,n)=>("map"===t&&console.error(vd),Reflect.get(e,t,n))}));let xd=Date.now;function Sd(e){var t,n,o,r;const i=e.document;return{left:i.scrollingElement?i.scrollingElement.scrollLeft:void 0!==e.pageXOffset?e.pageXOffset:i.documentElement.scrollLeft||(null==i?void 0:i.body)&&(null==(t=md.parentElement(i.body))?void 0:t.scrollLeft)||(null==(n=null==i?void 0:i.body)?void 0:n.scrollLeft)||0,top:i.scrollingElement?i.scrollingElement.scrollTop:void 0!==e.pageYOffset?e.pageYOffset:(null==i?void 0:i.documentElement.scrollTop)||(null==i?void 0:i.body)&&(null==(o=md.parentElement(i.body))?void 0:o.scrollTop)||(null==(r=null==i?void 0:i.body)?void 0:r.scrollTop)||0}}function Cd(){return window.innerHeight||document.documentElement&&document.documentElement.clientHeight||document.body&&document.body.clientHeight}function Id(){return window.innerWidth||document.documentElement&&document.documentElement.clientWidth||document.body&&document.body.clientWidth}function Od(e){if(!e)return null;return e.nodeType===e.ELEMENT_NODE?e:md.parentElement(e)}function Ed(e,t,n,o){if(!e)return!1;const r=Od(e);if(!r)return!1;try{if("string"==typeof t){if(r.classList.contains(t))return!0;if(o&&null!==r.closest("."+t))return!0}else if(Io(r,t,o))return!0}catch(i){}if(n){if(r.matches(n))return!0;if(o&&null!==r.closest(n))return!0}return!1}function Td(e,t,n){return!("TITLE"!==e.tagName||!n.headTitleMutations)||t.getId(e)===ho}function Ld(e,t){if(Jn(e))return!1;const n=t.getId(e);if(!t.has(n))return!0;const o=md.parentNode(e);return(!o||o.nodeType!==e.DOCUMENT_NODE)&&(!o||Ld(o,t))}function Ad(e){return Boolean(e.changedTouches)}function Md(e,t){return Boolean("IFRAME"===e.nodeName&&t.getMeta(e))}function Rd(e,t){return Boolean("LINK"===e.nodeName&&e.nodeType===e.ELEMENT_NODE&&e.getAttribute&&"stylesheet"===e.getAttribute("rel")&&t.getMeta(e))}function Pd(e){return!!e&&(e instanceof rd&&"shadowRoot"in e?Boolean(e.shadowRoot):Boolean(md.shadowRoot(e)))}/[1-9][0-9]{12}/.test(Date.now().toString())||(xd=()=>(new Date).getTime());class Dd{constructor(){Rn(this,"id",1),Rn(this,"styleIDMap",new WeakMap),Rn(this,"idStyleMap",new Map)}getId(e){return this.styleIDMap.get(e)??-1}has(e){return this.styleIDMap.has(e)}add(e,t){if(this.has(e))return this.getId(e);let n;return n=void 0===t?this.id++:t,this.styleIDMap.set(e,n),this.idStyleMap.set(n,e),n}getStyle(e){return this.idStyleMap.get(e)||null}reset(){this.styleIDMap=new WeakMap,this.idStyleMap=new Map,this.id=1}generateId(){return this.id++}}function Nd(e){var t;let n=null;return"getRootNode"in e&&(null==(t=md.getRootNode(e))?void 0:t.nodeType)===Node.DOCUMENT_FRAGMENT_NODE&&md.host(md.getRootNode(e))&&(n=md.host(md.getRootNode(e))),n}function jd(e){const t=e.ownerDocument;if(!t)return!1;const n=function(e){let t,n=e;for(;t=Nd(n);)n=t;return n}(e);return md.contains(t,n)}function Fd(e){const t=e.ownerDocument;return!!t&&(md.contains(t,e)||jd(e))}var Bd=(e=>(e[e.DomContentLoaded=0]="DomContentLoaded",e[e.Load=1]="Load",e[e.FullSnapshot=2]="FullSnapshot",e[e.IncrementalSnapshot=3]="IncrementalSnapshot",e[e.Meta=4]="Meta",e[e.Custom=5]="Custom",e[e.Plugin=6]="Plugin",e))(Bd||{}),_d=(e=>(e[e.Mutation=0]="Mutation",e[e.MouseMove=1]="MouseMove",e[e.MouseInteraction=2]="MouseInteraction",e[e.Scroll=3]="Scroll",e[e.ViewportResize=4]="ViewportResize",e[e.Input=5]="Input",e[e.TouchMove=6]="TouchMove",e[e.MediaInteraction=7]="MediaInteraction",e[e.StyleSheetRule=8]="StyleSheetRule",e[e.CanvasMutation=9]="CanvasMutation",e[e.Font=10]="Font",e[e.Log=11]="Log",e[e.Drag=12]="Drag",e[e.StyleDeclaration=13]="StyleDeclaration",e[e.Selection=14]="Selection",e[e.AdoptedStyleSheet=15]="AdoptedStyleSheet",e[e.CustomElement=16]="CustomElement",e))(_d||{}),Ud=(e=>(e[e.MouseUp=0]="MouseUp",e[e.MouseDown=1]="MouseDown",e[e.Click=2]="Click",e[e.ContextMenu=3]="ContextMenu",e[e.DblClick=4]="DblClick",e[e.Focus=5]="Focus",e[e.Blur=6]="Blur",e[e.TouchStart=7]="TouchStart",e[e.TouchMove_Departed=8]="TouchMove_Departed",e[e.TouchEnd=9]="TouchEnd",e[e.TouchCancel=10]="TouchCancel",e))(Ud||{}),Hd=(e=>(e[e.Mouse=0]="Mouse",e[e.Pen=1]="Pen",e[e.Touch=2]="Touch",e))(Hd||{}),zd=(e=>(e[e["2D"]=0]="2D",e[e.WebGL=1]="WebGL",e[e.WebGL2=2]="WebGL2",e))(zd||{}),qd=(e=>(e[e.Play=0]="Play",e[e.Pause=1]="Pause",e[e.Seeked=2]="Seeked",e[e.VolumeChange=3]="VolumeChange",e[e.RateChange=4]="RateChange",e))(qd||{}),Wd=(e=>(e[e.Document=0]="Document",e[e.DocumentType=1]="DocumentType",e[e.Element=2]="Element",e[e.Text=3]="Text",e[e.CDATA=4]="CDATA",e[e.Comment=5]="Comment",e))(Wd||{});function Gd(e){return"__ln"in e}class Vd{constructor(){Rn(this,"length",0),Rn(this,"head",null),Rn(this,"tail",null)}get(e){if(e>=this.length)throw new Error("Position outside of list range");let t=this.head;for(let n=0;n`${e}@${t}`;class Zd{constructor(){Rn(this,"frozen",!1),Rn(this,"locked",!1),Rn(this,"texts",[]),Rn(this,"attributes",[]),Rn(this,"attributeMap",new WeakMap),Rn(this,"removes",[]),Rn(this,"mapRemoves",[]),Rn(this,"movedMap",{}),Rn(this,"addedSet",new Set),Rn(this,"movedSet",new Set),Rn(this,"droppedSet",new Set),Rn(this,"removesSubTreeCache",new Set),Rn(this,"mutationCb"),Rn(this,"blockClass"),Rn(this,"blockSelector"),Rn(this,"maskTextClass"),Rn(this,"maskTextSelector"),Rn(this,"inlineStylesheet"),Rn(this,"maskInputOptions"),Rn(this,"maskTextFn"),Rn(this,"maskInputFn"),Rn(this,"keepIframeSrcFn"),Rn(this,"recordCanvas"),Rn(this,"inlineImages"),Rn(this,"slimDOMOptions"),Rn(this,"dataURLOptions"),Rn(this,"doc"),Rn(this,"mirror"),Rn(this,"iframeManager"),Rn(this,"stylesheetManager"),Rn(this,"shadowDomManager"),Rn(this,"canvasManager"),Rn(this,"processedNodeManager"),Rn(this,"unattachedDoc"),Rn(this,"processMutations",(e=>{e.forEach(this.processMutation),this.emit()})),Rn(this,"emit",(()=>{if(this.frozen||this.locked)return;const e=[],t=new Set,n=new Vd,o=e=>{let t=e,n=ho;for(;n===ho;)t=t&&t.nextSibling,n=t&&this.mirror.getId(t);return n},r=r=>{const i=md.parentNode(r);if(!i||!Fd(r))return;let a=!1;if(r.nodeType===Node.TEXT_NODE){const e=i.tagName;if("TEXTAREA"===e)return;"STYLE"===e&&this.addedSet.has(i)&&(a=!0)}const s=Jn(i)?this.mirror.getId(Nd(r)):this.mirror.getId(i),l=o(r);if(-1===s||-1===l)return n.addNode(r);const c=Lo(r,{doc:this.doc,mirror:this.mirror,blockClass:this.blockClass,blockSelector:this.blockSelector,maskTextClass:this.maskTextClass,maskTextSelector:this.maskTextSelector,skipChild:!0,newlyAddedElement:!0,inlineStylesheet:this.inlineStylesheet,maskInputOptions:this.maskInputOptions,maskTextFn:this.maskTextFn,maskInputFn:this.maskInputFn,slimDOMOptions:this.slimDOMOptions,dataURLOptions:this.dataURLOptions,recordCanvas:this.recordCanvas,inlineImages:this.inlineImages,onSerialize:e=>{Md(e,this.mirror)&&this.iframeManager.addIframe(e),Rd(e,this.mirror)&&this.stylesheetManager.trackLinkElement(e),Pd(r)&&this.shadowDomManager.addShadowRoot(md.shadowRoot(r),this.doc)},onIframeLoad:(e,t)=>{this.iframeManager.attachIframe(e,t),this.shadowDomManager.observeAttachShadow(e)},onStylesheetLoad:(e,t)=>{this.stylesheetManager.attachLinkElement(e,t)},cssCaptured:a});c&&(e.push({parentId:s,nextId:l,node:c}),t.add(c.id))};for(;this.mapRemoves.length;)this.mirror.removeNodeFromMap(this.mapRemoves.shift());for(const s of this.movedSet)Yd(this.removesSubTreeCache,s,this.mirror)&&!this.movedSet.has(md.parentNode(s))||r(s);for(const s of this.addedSet)Xd(this.droppedSet,s)||Yd(this.removesSubTreeCache,s,this.mirror)?Xd(this.movedSet,s)?r(s):this.droppedSet.add(s):r(s);let i=null;for(;n.length;){let e=null;if(i){const t=this.mirror.getId(md.parentNode(i.value)),n=o(i.value);-1!==t&&-1!==n&&(e=i)}if(!e){let t=n.tail;for(;t;){const n=t;if(t=t.previous,n){const t=this.mirror.getId(md.parentNode(n.value));if(-1===o(n.value))continue;if(-1!==t){e=n;break}{const t=n.value,o=md.parentNode(t);if(o&&o.nodeType===Node.DOCUMENT_FRAGMENT_NODE){const t=md.host(o);if(-1!==this.mirror.getId(t)){e=n;break}}}}}}if(!e){for(;n.head;)n.removeNode(n.head.value);break}i=e.previous,n.removeNode(e.value),r(e.value)}const a={texts:this.texts.map((e=>{const t=e.node,n=md.parentNode(t);return n&&"TEXTAREA"===n.tagName&&this.genTextAreaValueMutation(n),{id:this.mirror.getId(t),value:e.value}})).filter((e=>!t.has(e.id))).filter((e=>this.mirror.has(e.id))),attributes:this.attributes.map((e=>{const{attributes:t}=e;if("string"==typeof t.style){const n=JSON.stringify(e.styleDiff),o=JSON.stringify(e._unchangedStyles);n.length!t.has(e.id))).filter((e=>this.mirror.has(e.id))),removes:this.removes,adds:e};(a.texts.length||a.attributes.length||a.removes.length||a.adds.length)&&(this.texts=[],this.attributes=[],this.attributeMap=new WeakMap,this.removes=[],this.addedSet=new Set,this.movedSet=new Set,this.droppedSet=new Set,this.removesSubTreeCache=new Set,this.movedMap={},this.mutationCb(a))})),Rn(this,"genTextAreaValueMutation",(e=>{let t=this.attributeMap.get(e);t||(t={node:e,attributes:{},styleDiff:{},_unchangedStyles:{}},this.attributes.push(t),this.attributeMap.set(e,t)),t.attributes.value=Array.from(md.childNodes(e),(e=>md.textContent(e)||"")).join("")})),Rn(this,"processMutation",(e=>{if(!Td(e.target,this.mirror,this.slimDOMOptions))switch(e.type){case"characterData":{const t=md.textContent(e.target);Ed(e.target,this.blockClass,this.blockSelector,!1)||t===e.oldValue||this.texts.push({value:Oo(e.target,this.maskTextClass,this.maskTextSelector,!0)&&t?this.maskTextFn?this.maskTextFn(t,Od(e.target)):t.replace(/[\S]/g,"*"):t,node:e.target});break}case"attributes":{const n=e.target;let o=e.attributeName,r=e.target.getAttribute(o);if("value"===o){const e=to(n);r=$n({element:n,maskInputOptions:this.maskInputOptions,tagName:n.tagName,type:e,value:r,maskInputFn:this.maskInputFn})}if(Ed(e.target,this.blockClass,this.blockSelector,!1)||r===e.oldValue)return;let i=this.attributeMap.get(e.target);if("IFRAME"===n.tagName&&"src"===o&&!this.keepIframeSrcFn(r)){if(n.contentDocument)return;o="rr_src"}if(i||(i={node:e.target,attributes:{},styleDiff:{},_unchangedStyles:{}},this.attributes.push(i),this.attributeMap.set(e.target,i)),"type"===o&&"INPUT"===n.tagName&&"password"===(e.oldValue||"").toLowerCase()&&n.setAttribute("data-rr-is-password","true"),!Co(n.tagName,o))if(i.attributes[o]=So(this.doc,Qn(n.tagName),Qn(o),r),"style"===o){if(!this.unattachedDoc)try{this.unattachedDoc=document.implementation.createHTMLDocument()}catch(t){this.unattachedDoc=this.doc}const o=this.unattachedDoc.createElement("span");e.oldValue&&o.setAttribute("style",e.oldValue);for(const e of Array.from(n.style)){const t=n.style.getPropertyValue(e),r=n.style.getPropertyPriority(e);t!==o.style.getPropertyValue(e)||r!==o.style.getPropertyPriority(e)?i.styleDiff[e]=""===r?t:[t,r]:i._unchangedStyles[e]=[t,r]}for(const e of Array.from(o.style))""===n.style.getPropertyValue(e)&&(i.styleDiff[e]=!1)}else"open"===o&&"DIALOG"===n.tagName&&(n.matches("dialog:modal")?i.attributes.rr_open_mode="modal":i.attributes.rr_open_mode="non-modal");break}case"childList":if(Ed(e.target,this.blockClass,this.blockSelector,!0))return;if("TEXTAREA"===e.target.tagName)return void this.genTextAreaValueMutation(e.target);e.addedNodes.forEach((t=>this.genAdds(t,e.target))),e.removedNodes.forEach((t=>{const n=this.mirror.getId(t),o=Jn(e.target)?this.mirror.getId(md.host(e.target)):this.mirror.getId(e.target);Ed(e.target,this.blockClass,this.blockSelector,!1)||Td(t,this.mirror,this.slimDOMOptions)||!function(e,t){return-1!==t.getId(e)}(t,this.mirror)||(this.addedSet.has(t)?(Kd(this.addedSet,t),this.droppedSet.add(t)):this.addedSet.has(e.target)&&-1===n||Ld(e.target,this.mirror)||(this.movedSet.has(t)&&this.movedMap[Jd(n,o)]?Kd(this.movedSet,t):(this.removes.push({parentId:o,id:n,isShadow:!(!Jn(e.target)||!Zn(e.target))||void 0}),function(e,t){const n=[e];for(;n.length;){const e=n.pop();t.has(e)||(t.add(e),md.childNodes(e).forEach((e=>n.push(e))))}}(t,this.removesSubTreeCache))),this.mapRemoves.push(t))}))}})),Rn(this,"genAdds",((e,t)=>{if(!this.processedNodeManager.inOtherBuffer(e,this)&&!this.addedSet.has(e)&&!this.movedSet.has(e)){if(this.mirror.hasNode(e)){if(Td(e,this.mirror,this.slimDOMOptions))return;this.movedSet.add(e);let n=null;t&&this.mirror.hasNode(t)&&(n=this.mirror.getId(t)),n&&-1!==n&&(this.movedMap[Jd(this.mirror.getId(e),n)]=!0)}else this.addedSet.add(e),this.droppedSet.delete(e);Ed(e,this.blockClass,this.blockSelector,!1)||(md.childNodes(e).forEach((e=>this.genAdds(e))),Pd(e)&&md.childNodes(md.shadowRoot(e)).forEach((t=>{this.processedNodeManager.add(t,this),this.genAdds(t,e)})))}}))}init(e){["mutationCb","blockClass","blockSelector","maskTextClass","maskTextSelector","inlineStylesheet","maskInputOptions","maskTextFn","maskInputFn","keepIframeSrcFn","recordCanvas","inlineImages","slimDOMOptions","dataURLOptions","doc","mirror","iframeManager","stylesheetManager","shadowDomManager","canvasManager","processedNodeManager"].forEach((t=>{this[t]=e[t]}))}freeze(){this.frozen=!0,this.canvasManager.freeze()}unfreeze(){this.frozen=!1,this.canvasManager.unfreeze(),this.emit()}isFrozen(){return this.frozen}lock(){this.locked=!0,this.canvasManager.lock()}unlock(){this.locked=!1,this.canvasManager.unlock(),this.emit()}reset(){this.shadowDomManager.reset(),this.canvasManager.reset()}}function Kd(e,t){e.delete(t),md.childNodes(t).forEach((t=>Kd(e,t)))}function Yd(e,t,n){return 0!==e.size&&function(e,t,n){const o=md.parentNode(t);return!!o&&e.has(o)}(e,t)}function Xd(e,t){return 0!==e.size&&$d(e,t)}function $d(e,t){const n=md.parentNode(t);return!!n&&(!!e.has(n)||$d(e,n))}let Qd;const ep=e=>{if(!Qd)return e;return(...t)=>{try{return e(...t)}catch(n){if(Qd&&!0===Qd(n))return;throw n}}},tp=[];function np(e){try{if("composedPath"in e){const t=e.composedPath();if(t.length)return t[0]}else if("path"in e&&e.path.length)return e.path[0]}catch{}return e&&e.target}function op(e,t){const n=new Zd;tp.push(n),n.init(e);const o=new(fd())(ep(n.processMutations.bind(n)));return o.observe(t,{attributes:!0,attributeOldValue:!0,characterData:!0,characterDataOldValue:!0,childList:!0,subtree:!0}),o}function rp({mouseInteractionCb:e,doc:t,mirror:n,blockClass:o,blockSelector:r,sampling:i}){if(!1===i.mouseInteraction)return()=>{};const a=!0===i.mouseInteraction||void 0===i.mouseInteraction?{}:i.mouseInteraction,s=[];let l=null;return Object.keys(Ud).filter((e=>Number.isNaN(Number(e))&&!e.endsWith("_Departed")&&!1!==a[e])).forEach((i=>{let a=Qn(i);const c=(t=>i=>{const a=np(i);if(Ed(a,o,r,!0))return;let s=null,c=t;if("pointerType"in i){switch(i.pointerType){case"mouse":s=Hd.Mouse;break;case"touch":s=Hd.Touch;break;case"pen":s=Hd.Pen}s===Hd.Touch?Ud[t]===Ud.MouseDown?c="TouchStart":Ud[t]===Ud.MouseUp&&(c="TouchEnd"):Hd.Pen}else Ad(i)&&(s=Hd.Touch);null!==s?(l=s,(c.startsWith("Touch")&&s===Hd.Touch||c.startsWith("Mouse")&&s===Hd.Mouse)&&(s=null)):Ud[t]===Ud.Click&&(s=l,l=null);const u=Ad(i)?i.changedTouches[0]:i;if(!u)return;const d=n.getId(a),{clientX:p,clientY:h}=u;ep(e)({type:Ud[c],id:d,x:p,y:h,...null!==s&&{pointerType:s}})})(i);if(window.PointerEvent)switch(Ud[i]){case Ud.MouseDown:case Ud.MouseUp:a=a.replace("mouse","pointer");break;case Ud.TouchStart:case Ud.TouchEnd:return}s.push(gd(a,c,t))})),ep((()=>{s.forEach((e=>e()))}))}function ip({scrollCb:e,doc:t,mirror:n,blockClass:o,blockSelector:r,sampling:i}){return gd("scroll",ep(bd(ep((i=>{const a=np(i);if(!a||Ed(a,o,r,!0))return;const s=n.getId(a);if(a===t&&t.defaultView){const n=Sd(t.defaultView);e({id:s,x:n.left,y:n.top})}else e({id:s,x:a.scrollLeft,y:a.scrollTop})})),i.scroll||100)),t)}const ap=["INPUT","TEXTAREA","SELECT"],sp=new WeakMap;function lp(e){return function(e,t){if(pp("CSSGroupingRule")&&e.parentRule instanceof CSSGroupingRule||pp("CSSMediaRule")&&e.parentRule instanceof CSSMediaRule||pp("CSSSupportsRule")&&e.parentRule instanceof CSSSupportsRule||pp("CSSConditionRule")&&e.parentRule instanceof CSSConditionRule){const n=Array.from(e.parentRule.cssRules).indexOf(e);t.unshift(n)}else if(e.parentStyleSheet){const n=Array.from(e.parentStyleSheet.cssRules).indexOf(e);t.unshift(n)}return t}(e,[])}function cp(e,t,n){let o,r;return e?(e.ownerNode?o=t.getId(e.ownerNode):r=n.getId(e),{styleId:r,id:o}):{}}function up({mirror:e,stylesheetManager:t},n){var o,r,i;let a=null;a="#document"===n.nodeName?e.getId(n):e.getId(md.host(n));const s="#document"===n.nodeName?null==(o=n.defaultView)?void 0:o.Document:null==(i=null==(r=n.ownerDocument)?void 0:r.defaultView)?void 0:i.ShadowRoot,l=(null==s?void 0:s.prototype)?Object.getOwnPropertyDescriptor(null==s?void 0:s.prototype,"adoptedStyleSheets"):void 0;return null!==a&&-1!==a&&s&&l?(Object.defineProperty(n,"adoptedStyleSheets",{configurable:l.configurable,enumerable:l.enumerable,get(){var e;return null==(e=l.get)?void 0:e.call(this)},set(e){var n;const o=null==(n=l.set)?void 0:n.call(this,e);if(null!==a&&-1!==a)try{t.adoptStyleSheets(e,a)}catch(r){}return o}}),ep((()=>{Object.defineProperty(n,"adoptedStyleSheets",{configurable:l.configurable,enumerable:l.enumerable,get:l.get,set:l.set})}))):()=>{}}function dp(e,t={}){const n=e.doc.defaultView;if(!n)return()=>{};let o;!function(e,t){const{mutationCb:n,mousemoveCb:o,mouseInteractionCb:r,scrollCb:i,viewportResizeCb:a,inputCb:s,mediaInteractionCb:l,styleSheetRuleCb:c,styleDeclarationCb:u,canvasMutationCb:d,fontCb:p,selectionCb:h,customElementCb:f}=e;e.mutationCb=(...e)=>{t.mutation&&t.mutation(...e),n(...e)},e.mousemoveCb=(...e)=>{t.mousemove&&t.mousemove(...e),o(...e)},e.mouseInteractionCb=(...e)=>{t.mouseInteraction&&t.mouseInteraction(...e),r(...e)},e.scrollCb=(...e)=>{t.scroll&&t.scroll(...e),i(...e)},e.viewportResizeCb=(...e)=>{t.viewportResize&&t.viewportResize(...e),a(...e)},e.inputCb=(...e)=>{t.input&&t.input(...e),s(...e)},e.mediaInteractionCb=(...e)=>{t.mediaInteaction&&t.mediaInteaction(...e),l(...e)},e.styleSheetRuleCb=(...e)=>{t.styleSheetRule&&t.styleSheetRule(...e),c(...e)},e.styleDeclarationCb=(...e)=>{t.styleDeclaration&&t.styleDeclaration(...e),u(...e)},e.canvasMutationCb=(...e)=>{t.canvasMutation&&t.canvasMutation(...e),d(...e)},e.fontCb=(...e)=>{t.font&&t.font(...e),p(...e)},e.selectionCb=(...e)=>{t.selection&&t.selection(...e),h(...e)},e.customElementCb=(...e)=>{t.customElement&&t.customElement(...e),f(...e)}}(e,t),e.recordDOM&&(o=op(e,e.doc));const r=function({mousemoveCb:e,sampling:t,doc:n,mirror:o}){if(!1===t.mousemove)return()=>{};const r="number"==typeof t.mousemove?t.mousemove:50,i="number"==typeof t.mousemoveCallback?t.mousemoveCallback:500;let a,s=[];const l=bd(ep((t=>{const n=Date.now()-a;e(s.map((e=>(e.timeOffset-=n,e))),t),s=[],a=null})),i),c=ep(bd(ep((e=>{const t=np(e),{clientX:n,clientY:r}=Ad(e)?e.changedTouches[0]:e;a||(a=xd()),s.push({x:n,y:r,id:o.getId(t),timeOffset:xd()-a}),l("undefined"!=typeof DragEvent&&e instanceof DragEvent?_d.Drag:e instanceof MouseEvent?_d.MouseMove:_d.TouchMove)})),r,{trailing:!1})),u=[gd("mousemove",c,n),gd("touchmove",c,n),gd("drag",c,n)];return ep((()=>{u.forEach((e=>e()))}))}(e),i=rp(e),a=ip(e),s=function({viewportResizeCb:e},{win:t}){let n=-1,o=-1;return gd("resize",ep(bd(ep((()=>{const t=Cd(),r=Id();n===t&&o===r||(e({width:Number(r),height:Number(t)}),n=t,o=r)})),200)),t)}(e,{win:n}),l=function({inputCb:e,doc:t,mirror:n,blockClass:o,blockSelector:r,ignoreClass:i,ignoreSelector:a,maskInputOptions:s,maskInputFn:l,sampling:c,userTriggeredOnInput:u}){function d(e){let n=np(e);const c=e.isTrusted,d=n&&n.tagName;if(n&&"OPTION"===d&&(n=md.parentElement(n)),!n||!d||ap.indexOf(d)<0||Ed(n,o,r,!0))return;if(n.classList.contains(i)||a&&n.matches(a))return;let h=n.value,f=!1;const m=to(n)||"";"radio"===m||"checkbox"===m?f=n.checked:(s[d.toLowerCase()]||s[m])&&(h=$n({element:n,maskInputOptions:s,tagName:d,type:m,value:h,maskInputFn:l})),p(n,u?{text:h,isChecked:f,userTriggered:c}:{text:h,isChecked:f});const g=n.name;"radio"===m&&g&&f&&t.querySelectorAll(`input[type="radio"][name="${g}"]`).forEach((e=>{if(e!==n){const t=e.value;p(e,u?{text:t,isChecked:!f,userTriggered:!1}:{text:t,isChecked:!f})}}))}function p(t,o){const r=sp.get(t);if(!r||r.text!==o.text||r.isChecked!==o.isChecked){sp.set(t,o);const r=n.getId(t);ep(e)({...o,id:r})}}const h=("last"===c.input?["change"]:["input","change"]).map((e=>gd(e,ep(d),t))),f=t.defaultView;if(!f)return()=>{h.forEach((e=>e()))};const m=f.Object.getOwnPropertyDescriptor(f.HTMLInputElement.prototype,"value"),g=[[f.HTMLInputElement.prototype,"value"],[f.HTMLInputElement.prototype,"checked"],[f.HTMLSelectElement.prototype,"value"],[f.HTMLTextAreaElement.prototype,"value"],[f.HTMLSelectElement.prototype,"selectedIndex"],[f.HTMLOptionElement.prototype,"selected"]];return m&&m.set&&h.push(...g.map((e=>wd(e[0],e[1],{set(){ep(d)({target:this,isTrusted:!1})}},!1,f)))),ep((()=>{h.forEach((e=>e()))}))}(e),c=function({mediaInteractionCb:e,blockClass:t,blockSelector:n,mirror:o,sampling:r,doc:i}){const a=ep((i=>bd(ep((r=>{const a=np(r);if(!a||Ed(a,t,n,!0))return;const{currentTime:s,volume:l,muted:c,playbackRate:u,loop:d}=a;e({type:i,id:o.getId(a),currentTime:s,volume:l,muted:c,playbackRate:u,loop:d})})),r.media||500))),s=[gd("play",a(qd.Play),i),gd("pause",a(qd.Pause),i),gd("seeked",a(qd.Seeked),i),gd("volumechange",a(qd.VolumeChange),i),gd("ratechange",a(qd.RateChange),i)];return ep((()=>{s.forEach((e=>e()))}))}(e);let u=()=>{},d=()=>{},p=()=>{},h=()=>{};e.recordDOM&&(u=function({styleSheetRuleCb:e,mirror:t,stylesheetManager:n},{win:o}){if(!o.CSSStyleSheet||!o.CSSStyleSheet.prototype)return()=>{};const r=o.CSSStyleSheet.prototype.insertRule;o.CSSStyleSheet.prototype.insertRule=new Proxy(r,{apply:ep(((o,r,i)=>{const[a,s]=i,{id:l,styleId:c}=cp(r,t,n.styleMirror);return(l&&-1!==l||c&&-1!==c)&&e({id:l,styleId:c,adds:[{rule:a,index:s}]}),o.apply(r,i)}))}),o.CSSStyleSheet.prototype.addRule=function(e,t,n=this.cssRules.length){const r=`${e} { ${t} }`;return o.CSSStyleSheet.prototype.insertRule.apply(this,[r,n])};const i=o.CSSStyleSheet.prototype.deleteRule;let a,s;o.CSSStyleSheet.prototype.deleteRule=new Proxy(i,{apply:ep(((o,r,i)=>{const[a]=i,{id:s,styleId:l}=cp(r,t,n.styleMirror);return(s&&-1!==s||l&&-1!==l)&&e({id:s,styleId:l,removes:[{index:a}]}),o.apply(r,i)}))}),o.CSSStyleSheet.prototype.removeRule=function(e){return o.CSSStyleSheet.prototype.deleteRule.apply(this,[e])},o.CSSStyleSheet.prototype.replace&&(a=o.CSSStyleSheet.prototype.replace,o.CSSStyleSheet.prototype.replace=new Proxy(a,{apply:ep(((o,r,i)=>{const[a]=i,{id:s,styleId:l}=cp(r,t,n.styleMirror);return(s&&-1!==s||l&&-1!==l)&&e({id:s,styleId:l,replace:a}),o.apply(r,i)}))})),o.CSSStyleSheet.prototype.replaceSync&&(s=o.CSSStyleSheet.prototype.replaceSync,o.CSSStyleSheet.prototype.replaceSync=new Proxy(s,{apply:ep(((o,r,i)=>{const[a]=i,{id:s,styleId:l}=cp(r,t,n.styleMirror);return(s&&-1!==s||l&&-1!==l)&&e({id:s,styleId:l,replaceSync:a}),o.apply(r,i)}))}));const l={};hp("CSSGroupingRule")?l.CSSGroupingRule=o.CSSGroupingRule:(hp("CSSMediaRule")&&(l.CSSMediaRule=o.CSSMediaRule),hp("CSSConditionRule")&&(l.CSSConditionRule=o.CSSConditionRule),hp("CSSSupportsRule")&&(l.CSSSupportsRule=o.CSSSupportsRule));const c={};return Object.entries(l).forEach((([o,r])=>{c[o]={insertRule:r.prototype.insertRule,deleteRule:r.prototype.deleteRule},r.prototype.insertRule=new Proxy(c[o].insertRule,{apply:ep(((o,r,i)=>{const[a,s]=i,{id:l,styleId:c}=cp(r.parentStyleSheet,t,n.styleMirror);return(l&&-1!==l||c&&-1!==c)&&e({id:l,styleId:c,adds:[{rule:a,index:[...lp(r),s||0]}]}),o.apply(r,i)}))}),r.prototype.deleteRule=new Proxy(c[o].deleteRule,{apply:ep(((o,r,i)=>{const[a]=i,{id:s,styleId:l}=cp(r.parentStyleSheet,t,n.styleMirror);return(s&&-1!==s||l&&-1!==l)&&e({id:s,styleId:l,removes:[{index:[...lp(r),a]}]}),o.apply(r,i)}))})})),ep((()=>{o.CSSStyleSheet.prototype.insertRule=r,o.CSSStyleSheet.prototype.deleteRule=i,a&&(o.CSSStyleSheet.prototype.replace=a),s&&(o.CSSStyleSheet.prototype.replaceSync=s),Object.entries(l).forEach((([e,t])=>{t.prototype.insertRule=c[e].insertRule,t.prototype.deleteRule=c[e].deleteRule}))}))}(e,{win:n}),d=up(e,e.doc),p=function({styleDeclarationCb:e,mirror:t,ignoreCSSAttributes:n,stylesheetManager:o},{win:r}){const i=r.CSSStyleDeclaration.prototype.setProperty;r.CSSStyleDeclaration.prototype.setProperty=new Proxy(i,{apply:ep(((r,a,s)=>{var l;const[c,u,d]=s;if(n.has(c))return i.apply(a,[c,u,d]);const{id:p,styleId:h}=cp(null==(l=a.parentRule)?void 0:l.parentStyleSheet,t,o.styleMirror);return(p&&-1!==p||h&&-1!==h)&&e({id:p,styleId:h,set:{property:c,value:u,priority:d},index:lp(a.parentRule)}),r.apply(a,s)}))});const a=r.CSSStyleDeclaration.prototype.removeProperty;return r.CSSStyleDeclaration.prototype.removeProperty=new Proxy(a,{apply:ep(((r,i,s)=>{var l;const[c]=s;if(n.has(c))return a.apply(i,[c]);const{id:u,styleId:d}=cp(null==(l=i.parentRule)?void 0:l.parentStyleSheet,t,o.styleMirror);return(u&&-1!==u||d&&-1!==d)&&e({id:u,styleId:d,remove:{property:c},index:lp(i.parentRule)}),r.apply(i,s)}))}),ep((()=>{r.CSSStyleDeclaration.prototype.setProperty=i,r.CSSStyleDeclaration.prototype.removeProperty=a}))}(e,{win:n}),e.collectFonts&&(h=function({fontCb:e,doc:t}){const n=t.defaultView;if(!n)return()=>{};const o=[],r=new WeakMap,i=n.FontFace;n.FontFace=function(e,t,n){const o=new i(e,t,n);return r.set(o,{family:e,buffer:"string"!=typeof t,descriptors:n,fontSource:"string"==typeof t?t:JSON.stringify(Array.from(new Uint8Array(t)))}),o};const a=kd(t.fonts,"add",(function(t){return function(n){return setTimeout(ep((()=>{const t=r.get(n);t&&(e(t),r.delete(n))})),0),t.apply(this,[n])}}));return o.push((()=>{n.FontFace=i})),o.push(a),ep((()=>{o.forEach((e=>e()))}))}(e)));const f=function(e){const{doc:t,mirror:n,blockClass:o,blockSelector:r,selectionCb:i}=e;let a=!0;const s=ep((()=>{const e=t.getSelection();if(!e||a&&(null==e?void 0:e.isCollapsed))return;a=e.isCollapsed||!1;const s=[],l=e.rangeCount||0;for(let t=0;t{}}(e),g=[];for(const v of e.plugins)g.push(v.observer(v.callback,n,v.options));return ep((()=>{tp.forEach((e=>e.reset())),null==o||o.disconnect(),r(),i(),a(),s(),l(),c(),u(),d(),p(),h(),f(),m(),g.forEach((e=>e()))}))}function pp(e){return void 0!==window[e]}function hp(e){return Boolean(void 0!==window[e]&&window[e].prototype&&"insertRule"in window[e].prototype&&"deleteRule"in window[e].prototype)}class fp{constructor(e){Rn(this,"iframeIdToRemoteIdMap",new WeakMap),Rn(this,"iframeRemoteIdToIdMap",new WeakMap),this.generateIdFn=e}getId(e,t,n,o){const r=n||this.getIdToRemoteIdMap(e),i=o||this.getRemoteIdToIdMap(e);let a=r.get(t);return a||(a=this.generateIdFn(),r.set(t,a),i.set(a,t)),a}getIds(e,t){const n=this.getIdToRemoteIdMap(e),o=this.getRemoteIdToIdMap(e);return t.map((t=>this.getId(e,t,n,o)))}getRemoteId(e,t,n){const o=n||this.getRemoteIdToIdMap(e);if("number"!=typeof t)return t;const r=o.get(t);return r||-1}getRemoteIds(e,t){const n=this.getRemoteIdToIdMap(e);return t.map((t=>this.getRemoteId(e,t,n)))}reset(e){if(!e)return this.iframeIdToRemoteIdMap=new WeakMap,void(this.iframeRemoteIdToIdMap=new WeakMap);this.iframeIdToRemoteIdMap.delete(e),this.iframeRemoteIdToIdMap.delete(e)}getIdToRemoteIdMap(e){let t=this.iframeIdToRemoteIdMap.get(e);return t||(t=new Map,this.iframeIdToRemoteIdMap.set(e,t)),t}getRemoteIdToIdMap(e){let t=this.iframeRemoteIdToIdMap.get(e);return t||(t=new Map,this.iframeRemoteIdToIdMap.set(e,t)),t}}class mp{constructor(e){Rn(this,"iframes",new WeakMap),Rn(this,"crossOriginIframeMap",new WeakMap),Rn(this,"crossOriginIframeMirror",new fp(fo)),Rn(this,"crossOriginIframeStyleMirror"),Rn(this,"crossOriginIframeRootIdMap",new WeakMap),Rn(this,"mirror"),Rn(this,"mutationCb"),Rn(this,"wrappedEmit"),Rn(this,"loadListener"),Rn(this,"stylesheetManager"),Rn(this,"recordCrossOriginIframes"),this.mutationCb=e.mutationCb,this.wrappedEmit=e.wrappedEmit,this.stylesheetManager=e.stylesheetManager,this.recordCrossOriginIframes=e.recordCrossOriginIframes,this.crossOriginIframeStyleMirror=new fp(this.stylesheetManager.styleMirror.generateId.bind(this.stylesheetManager.styleMirror)),this.mirror=e.mirror,this.recordCrossOriginIframes&&window.addEventListener("message",this.handleMessage.bind(this))}addIframe(e){this.iframes.set(e,!0),e.contentWindow&&this.crossOriginIframeMap.set(e.contentWindow,e)}addLoadListener(e){this.loadListener=e}attachIframe(e,t){var n,o;this.mutationCb({adds:[{parentId:this.mirror.getId(e),nextId:null,node:t}],removes:[],texts:[],attributes:[],isAttachIframe:!0}),this.recordCrossOriginIframes&&(null==(n=e.contentWindow)||n.addEventListener("message",this.handleMessage.bind(this))),null==(o=this.loadListener)||o.call(this,e),e.contentDocument&&e.contentDocument.adoptedStyleSheets&&e.contentDocument.adoptedStyleSheets.length>0&&this.stylesheetManager.adoptStyleSheets(e.contentDocument.adoptedStyleSheets,this.mirror.getId(e.contentDocument))}handleMessage(e){const t=e;if("rrweb"!==t.data.type||t.origin!==t.data.origin)return;if(!e.source)return;const n=this.crossOriginIframeMap.get(e.source);if(!n)return;const o=this.transformCrossOriginEvent(n,t.data.event);o&&this.wrappedEmit(o,t.data.isCheckout)}transformCrossOriginEvent(e,t){var n;switch(t.type){case Bd.FullSnapshot:{this.crossOriginIframeMirror.reset(e),this.crossOriginIframeStyleMirror.reset(e),this.replaceIdOnNode(t.data.node,e);const n=t.data.node.id;return this.crossOriginIframeRootIdMap.set(e,n),this.patchRootIdOnNode(t.data.node,n),{timestamp:t.timestamp,type:Bd.IncrementalSnapshot,data:{source:_d.Mutation,adds:[{parentId:this.mirror.getId(e),nextId:null,node:t.data.node}],removes:[],texts:[],attributes:[],isAttachIframe:!0}}}case Bd.Meta:case Bd.Load:case Bd.DomContentLoaded:return!1;case Bd.Plugin:return t;case Bd.Custom:return this.replaceIds(t.data.payload,e,["id","parentId","previousId","nextId"]),t;case Bd.IncrementalSnapshot:switch(t.data.source){case _d.Mutation:return t.data.adds.forEach((t=>{this.replaceIds(t,e,["parentId","nextId","previousId"]),this.replaceIdOnNode(t.node,e);const n=this.crossOriginIframeRootIdMap.get(e);n&&this.patchRootIdOnNode(t.node,n)})),t.data.removes.forEach((t=>{this.replaceIds(t,e,["parentId","id"])})),t.data.attributes.forEach((t=>{this.replaceIds(t,e,["id"])})),t.data.texts.forEach((t=>{this.replaceIds(t,e,["id"])})),t;case _d.Drag:case _d.TouchMove:case _d.MouseMove:return t.data.positions.forEach((t=>{this.replaceIds(t,e,["id"])})),t;case _d.ViewportResize:return!1;case _d.MediaInteraction:case _d.MouseInteraction:case _d.Scroll:case _d.CanvasMutation:case _d.Input:return this.replaceIds(t.data,e,["id"]),t;case _d.StyleSheetRule:case _d.StyleDeclaration:return this.replaceIds(t.data,e,["id"]),this.replaceStyleIds(t.data,e,["styleId"]),t;case _d.Font:return t;case _d.Selection:return t.data.ranges.forEach((t=>{this.replaceIds(t,e,["start","end"])})),t;case _d.AdoptedStyleSheet:return this.replaceIds(t.data,e,["id"]),this.replaceStyleIds(t.data,e,["styleIds"]),null==(n=t.data.styles)||n.forEach((t=>{this.replaceStyleIds(t,e,["styleId"])})),t}}return!1}replace(e,t,n,o){for(const r of o)(Array.isArray(t[r])||"number"==typeof t[r])&&(Array.isArray(t[r])?t[r]=e.getIds(n,t[r]):t[r]=e.getId(n,t[r]));return t}replaceIds(e,t,n){return this.replace(this.crossOriginIframeMirror,e,t,n)}replaceStyleIds(e,t,n){return this.replace(this.crossOriginIframeStyleMirror,e,t,n)}replaceIdOnNode(e,t){this.replaceIds(e,t,["id","rootId"]),"childNodes"in e&&e.childNodes.forEach((e=>{this.replaceIdOnNode(e,t)}))}patchRootIdOnNode(e,t){e.type===Wd.Document||e.rootId||(e.rootId=t),"childNodes"in e&&e.childNodes.forEach((e=>{this.patchRootIdOnNode(e,t)}))}}class gp{constructor(e){Rn(this,"shadowDoms",new WeakSet),Rn(this,"mutationCb"),Rn(this,"scrollCb"),Rn(this,"bypassOptions"),Rn(this,"mirror"),Rn(this,"restoreHandlers",[]),this.mutationCb=e.mutationCb,this.scrollCb=e.scrollCb,this.bypassOptions=e.bypassOptions,this.mirror=e.mirror,this.init()}init(){this.reset(),this.patchAttachShadow(Element,document)}addShadowRoot(e,t){if(!Zn(e))return;if(this.shadowDoms.has(e))return;this.shadowDoms.add(e);const n=op({...this.bypassOptions,doc:t,mutationCb:this.mutationCb,mirror:this.mirror,shadowDomManager:this},e);this.restoreHandlers.push((()=>n.disconnect())),this.restoreHandlers.push(ip({...this.bypassOptions,scrollCb:this.scrollCb,doc:e,mirror:this.mirror})),setTimeout((()=>{e.adoptedStyleSheets&&e.adoptedStyleSheets.length>0&&this.bypassOptions.stylesheetManager.adoptStyleSheets(e.adoptedStyleSheets,this.mirror.getId(md.host(e))),this.restoreHandlers.push(up({mirror:this.mirror,stylesheetManager:this.bypassOptions.stylesheetManager},e))}),0)}observeAttachShadow(e){e.contentWindow&&e.contentDocument&&this.patchAttachShadow(e.contentWindow.Element,e.contentDocument)}patchAttachShadow(e,t){const n=this;this.restoreHandlers.push(kd(e.prototype,"attachShadow",(function(e){return function(o){const r=e.call(this,o),i=md.shadowRoot(this);return i&&Fd(this)&&n.addShadowRoot(i,t),r}})))}reset(){this.restoreHandlers.forEach((e=>{try{e()}catch(t){}})),this.restoreHandlers=[],this.shadowDoms=new WeakSet}}for(var vp="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",yp="undefined"==typeof Uint8Array?[]:new Uint8Array(256),bp=0;bp<64;bp++)yp[vp.charCodeAt(bp)]=bp;const wp=new Map;const kp=(e,t,n)=>{if(!e||!Cp(e,t)&&"object"!=typeof e)return;const o=function(e,t){let n=wp.get(e);return n||(n=new Map,wp.set(e,n)),n.has(t)||n.set(t,[]),n.get(t)}(n,e.constructor.name);let r=o.indexOf(e);return-1===r&&(r=o.length,o.push(e)),r};function xp(e,t,n){if(e instanceof Array)return e.map((e=>xp(e,t,n)));if(null===e)return e;if(e instanceof Float32Array||e instanceof Float64Array||e instanceof Int32Array||e instanceof Uint32Array||e instanceof Uint8Array||e instanceof Uint16Array||e instanceof Int16Array||e instanceof Int8Array||e instanceof Uint8ClampedArray){return{rr_type:e.constructor.name,args:[Object.values(e)]}}if(e instanceof ArrayBuffer){return{rr_type:e.constructor.name,base64:function(e){var t,n=new Uint8Array(e),o=n.length,r="";for(t=0;t>2],r+=vp[(3&n[t])<<4|n[t+1]>>4],r+=vp[(15&n[t+1])<<2|n[t+2]>>6],r+=vp[63&n[t+2]];return o%3==2?r=r.substring(0,r.length-1)+"=":o%3==1&&(r=r.substring(0,r.length-2)+"=="),r}(e)}}if(e instanceof DataView){return{rr_type:e.constructor.name,args:[xp(e.buffer,t,n),e.byteOffset,e.byteLength]}}if(e instanceof HTMLImageElement){const t=e.constructor.name,{src:n}=e;return{rr_type:t,src:n}}if(e instanceof HTMLCanvasElement){return{rr_type:"HTMLImageElement",src:e.toDataURL()}}if(e instanceof ImageData){return{rr_type:e.constructor.name,args:[xp(e.data,t,n),e.width,e.height]}}if(Cp(e,t)||"object"==typeof e){return{rr_type:e.constructor.name,index:kp(e,t,n)}}return e}const Sp=(e,t,n)=>e.map((e=>xp(e,t,n))),Cp=(e,t)=>{const n=["WebGLActiveInfo","WebGLBuffer","WebGLFramebuffer","WebGLProgram","WebGLRenderbuffer","WebGLShader","WebGLShaderPrecisionFormat","WebGLTexture","WebGLUniformLocation","WebGLVertexArrayObject","WebGLVertexArrayObjectOES"].filter((e=>"function"==typeof t[e]));return Boolean(n.find((n=>e instanceof t[n])))};function Ip(e,t,n,o){const r=[];try{const i=kd(e.HTMLCanvasElement.prototype,"getContext",(function(e){return function(r,...i){if(!Ed(this,t,n,!0)){const e=function(e){return"experimental-webgl"===e?"webgl":e}(r);if("__context"in this||(this.__context=e),o&&["webgl","webgl2"].includes(e))if(i[0]&&"object"==typeof i[0]){const e=i[0];e.preserveDrawingBuffer||(e.preserveDrawingBuffer=!0)}else i.splice(0,1,{preserveDrawingBuffer:!0})}return e.apply(this,[r,...i])}}));r.push(i)}catch{console.error("failed to patch HTMLCanvasElement.prototype.getContext")}return()=>{r.forEach((e=>e()))}}function Op(e,t,n,o,r,i){const a=[],s=Object.getOwnPropertyNames(e);for(const l of s)if(!["isContextLost","canvas","drawingBufferWidth","drawingBufferHeight"].includes(l))try{if("function"!=typeof e[l])continue;const s=kd(e,l,(function(e){return function(...a){const s=e.apply(this,a);if(kp(s,i,this),"tagName"in this.canvas&&!Ed(this.canvas,o,r,!0)){const e=Sp(a,i,this),o={type:t,property:l,args:e};n(this.canvas,o)}return s}}));a.push(s)}catch{const o=wd(e,l,{set(e){n(this.canvas,{type:t,property:l,args:[e],setter:!0})}});a.push(o)}return a}const Ep="KGZ1bmN0aW9uKCkgewogICJ1c2Ugc3RyaWN0IjsKICB2YXIgY2hhcnMgPSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7CiAgdmFyIGxvb2t1cCA9IHR5cGVvZiBVaW50OEFycmF5ID09PSAidW5kZWZpbmVkIiA/IFtdIDogbmV3IFVpbnQ4QXJyYXkoMjU2KTsKICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYXJzLmxlbmd0aDsgaSsrKSB7CiAgICBsb29rdXBbY2hhcnMuY2hhckNvZGVBdChpKV0gPSBpOwogIH0KICB2YXIgZW5jb2RlID0gZnVuY3Rpb24oYXJyYXlidWZmZXIpIHsKICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGFycmF5YnVmZmVyKSwgaTIsIGxlbiA9IGJ5dGVzLmxlbmd0aCwgYmFzZTY0ID0gIiI7CiAgICBmb3IgKGkyID0gMDsgaTIgPCBsZW47IGkyICs9IDMpIHsKICAgICAgYmFzZTY0ICs9IGNoYXJzW2J5dGVzW2kyXSA+PiAyXTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMl0gJiAzKSA8PCA0IHwgYnl0ZXNbaTIgKyAxXSA+PiA0XTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMiArIDFdICYgMTUpIDw8IDIgfCBieXRlc1tpMiArIDJdID4+IDZdOwogICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaTIgKyAyXSAmIDYzXTsKICAgIH0KICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgIj0iOwogICAgfSBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgIj09IjsKICAgIH0KICAgIHJldHVybiBiYXNlNjQ7CiAgfTsKICBjb25zdCBsYXN0QmxvYk1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7CiAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTsKICBhc3luYyBmdW5jdGlvbiBnZXRUcmFuc3BhcmVudEJsb2JGb3Iod2lkdGgsIGhlaWdodCwgZGF0YVVSTE9wdGlvbnMpIHsKICAgIGNvbnN0IGlkID0gYCR7d2lkdGh9LSR7aGVpZ2h0fWA7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBpZiAodHJhbnNwYXJlbnRCbG9iTWFwLmhhcyhpZCkpIHJldHVybiB0cmFuc3BhcmVudEJsb2JNYXAuZ2V0KGlkKTsKICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsKICAgICAgb2Zmc2NyZWVuLmdldENvbnRleHQoIjJkIik7CiAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCBvZmZzY3JlZW4uY29udmVydFRvQmxvYihkYXRhVVJMT3B0aW9ucyk7CiAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gYXdhaXQgYmxvYi5hcnJheUJ1ZmZlcigpOwogICAgICBjb25zdCBiYXNlNjQgPSBlbmNvZGUoYXJyYXlCdWZmZXIpOwogICAgICB0cmFuc3BhcmVudEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICByZXR1cm4gYmFzZTY0OwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuICIiOwogICAgfQogIH0KICBjb25zdCB3b3JrZXIgPSBzZWxmOwogIHdvcmtlci5vbm1lc3NhZ2UgPSBhc3luYyBmdW5jdGlvbihlKSB7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBjb25zdCB7IGlkLCBiaXRtYXAsIHdpZHRoLCBoZWlnaHQsIGRhdGFVUkxPcHRpb25zIH0gPSBlLmRhdGE7CiAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKAogICAgICAgIHdpZHRoLAogICAgICAgIGhlaWdodCwKICAgICAgICBkYXRhVVJMT3B0aW9ucwogICAgICApOwogICAgICBjb25zdCBvZmZzY3JlZW4gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpOwogICAgICBjb25zdCBjdHggPSBvZmZzY3JlZW4uZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgY3R4LmRyYXdJbWFnZShiaXRtYXAsIDAsIDApOwogICAgICBiaXRtYXAuY2xvc2UoKTsKICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IG9mZnNjcmVlbi5jb252ZXJ0VG9CbG9iKGRhdGFVUkxPcHRpb25zKTsKICAgICAgY29uc3QgdHlwZSA9IGJsb2IudHlwZTsKICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBhd2FpdCBibG9iLmFycmF5QnVmZmVyKCk7CiAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7CiAgICAgIGlmICghbGFzdEJsb2JNYXAuaGFzKGlkKSAmJiBhd2FpdCB0cmFuc3BhcmVudEJhc2U2NCA9PT0gYmFzZTY0KSB7CiAgICAgICAgbGFzdEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICAgIHJldHVybiB3b3JrZXIucG9zdE1lc3NhZ2UoeyBpZCB9KTsKICAgICAgfQogICAgICBpZiAobGFzdEJsb2JNYXAuZ2V0KGlkKSA9PT0gYmFzZTY0KSByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQgfSk7CiAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7CiAgICAgICAgaWQsCiAgICAgICAgdHlwZSwKICAgICAgICBiYXNlNjQsCiAgICAgICAgd2lkdGgsCiAgICAgICAgaGVpZ2h0CiAgICAgIH0pOwogICAgICBsYXN0QmxvYk1hcC5zZXQoaWQsIGJhc2U2NCk7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IGUuZGF0YS5pZCB9KTsKICAgIH0KICB9Owp9KSgpOwovLyMgc291cmNlTWFwcGluZ1VSTD1pbWFnZS1iaXRtYXAtZGF0YS11cmwtd29ya2VyLUlKcEM3Z19iLmpzLm1hcAo=",Tp="undefined"!=typeof window&&window.Blob&&new Blob([(Lp=Ep,Uint8Array.from(atob(Lp),(e=>e.charCodeAt(0))))],{type:"text/javascript;charset=utf-8"});var Lp;function Ap(e){let t;try{if(t=Tp&&(window.URL||window.webkitURL).createObjectURL(Tp),!t)throw"";const n=new Worker(t,{name:null==e?void 0:e.name});return n.addEventListener("error",(()=>{(window.URL||window.webkitURL).revokeObjectURL(t)})),n}catch(n){return new Worker("data:text/javascript;base64,"+Ep,{name:null==e?void 0:e.name})}finally{t&&(window.URL||window.webkitURL).revokeObjectURL(t)}}class Mp{constructor(e){Rn(this,"pendingCanvasMutations",new Map),Rn(this,"rafStamps",{latestId:0,invokeId:null}),Rn(this,"mirror"),Rn(this,"mutationCb"),Rn(this,"resetObservers"),Rn(this,"frozen",!1),Rn(this,"locked",!1),Rn(this,"processMutation",((e,t)=>{!(this.rafStamps.invokeId&&this.rafStamps.latestId!==this.rafStamps.invokeId)&&this.rafStamps.invokeId||(this.rafStamps.invokeId=this.rafStamps.latestId),this.pendingCanvasMutations.has(e)||this.pendingCanvasMutations.set(e,[]),this.pendingCanvasMutations.get(e).push(t)}));const{sampling:t="all",win:n,blockClass:o,blockSelector:r,recordCanvas:i,dataURLOptions:a}=e;this.mutationCb=e.mutationCb,this.mirror=e.mirror,i&&"all"===t&&this.initCanvasMutationObserver(n,o,r),i&&"number"==typeof t&&this.initCanvasFPSObserver(t,n,o,r,{dataURLOptions:a})}reset(){this.pendingCanvasMutations.clear(),this.resetObservers&&this.resetObservers()}freeze(){this.frozen=!0}unfreeze(){this.frozen=!1}lock(){this.locked=!0}unlock(){this.locked=!1}initCanvasFPSObserver(e,t,n,o,r){const i=Ip(t,n,o,!0),a=new Map,s=new Ap;s.onmessage=e=>{const{id:t}=e.data;if(a.set(t,!1),!("base64"in e.data))return;const{base64:n,type:o,width:r,height:i}=e.data;this.mutationCb({id:t,type:zd["2D"],commands:[{property:"clearRect",args:[0,0,r,i]},{property:"drawImage",args:[{rr_type:"ImageBitmap",args:[{rr_type:"Blob",data:[{rr_type:"ArrayBuffer",base64:n}],type:o}]},0,0]}]})};const l=1e3/e;let c,u=0;const d=e=>{u&&e-u{const e=[];return t.document.querySelectorAll("canvas").forEach((t=>{Ed(t,n,o,!0)||e.push(t)})),e})().forEach((async e=>{var t;const n=this.mirror.getId(e);if(a.get(n))return;if(0===e.width||0===e.height)return;if(a.set(n,!0),["webgl","webgl2"].includes(e.__context)){const n=e.getContext(e.__context);!1===(null==(t=null==n?void 0:n.getContextAttributes())?void 0:t.preserveDrawingBuffer)&&n.clear(n.COLOR_BUFFER_BIT)}const o=await createImageBitmap(e);s.postMessage({id:n,bitmap:o,width:e.width,height:e.height,dataURLOptions:r.dataURLOptions},[o])}))),c=requestAnimationFrame(d)};c=requestAnimationFrame(d),this.resetObservers=()=>{i(),cancelAnimationFrame(c)}}initCanvasMutationObserver(e,t,n){this.startRAFTimestamping(),this.startPendingCanvasMutationFlusher();const o=Ip(e,t,n,!1),r=function(e,t,n,o){const r=[],i=Object.getOwnPropertyNames(t.CanvasRenderingContext2D.prototype);for(const a of i)try{if("function"!=typeof t.CanvasRenderingContext2D.prototype[a])continue;const i=kd(t.CanvasRenderingContext2D.prototype,a,(function(r){return function(...i){return Ed(this.canvas,n,o,!0)||setTimeout((()=>{const n=Sp(i,t,this);e(this.canvas,{type:zd["2D"],property:a,args:n})}),0),r.apply(this,i)}}));r.push(i)}catch{const n=wd(t.CanvasRenderingContext2D.prototype,a,{set(t){e(this.canvas,{type:zd["2D"],property:a,args:[t],setter:!0})}});r.push(n)}return()=>{r.forEach((e=>e()))}}(this.processMutation.bind(this),e,t,n),i=function(e,t,n,o){const r=[];return r.push(...Op(t.WebGLRenderingContext.prototype,zd.WebGL,e,n,o,t)),void 0!==t.WebGL2RenderingContext&&r.push(...Op(t.WebGL2RenderingContext.prototype,zd.WebGL2,e,n,o,t)),()=>{r.forEach((e=>e()))}}(this.processMutation.bind(this),e,t,n);this.resetObservers=()=>{o(),r(),i()}}startPendingCanvasMutationFlusher(){requestAnimationFrame((()=>this.flushPendingCanvasMutations()))}startRAFTimestamping(){const e=t=>{this.rafStamps.latestId=t,requestAnimationFrame(e)};requestAnimationFrame(e)}flushPendingCanvasMutations(){this.pendingCanvasMutations.forEach(((e,t)=>{const n=this.mirror.getId(t);this.flushPendingCanvasMutationFor(t,n)})),requestAnimationFrame((()=>this.flushPendingCanvasMutations()))}flushPendingCanvasMutationFor(e,t){if(this.frozen||this.locked)return;const n=this.pendingCanvasMutations.get(e);if(!n||-1===t)return;const o=n.map((e=>{const{type:t,...n}=e;return n})),{type:r}=n[0];this.mutationCb({id:t,type:r,commands:o}),this.pendingCanvasMutations.delete(e)}}class Rp{constructor(e){Rn(this,"trackedLinkElements",new WeakSet),Rn(this,"mutationCb"),Rn(this,"adoptedStyleSheetCb"),Rn(this,"styleMirror",new Dd),this.mutationCb=e.mutationCb,this.adoptedStyleSheetCb=e.adoptedStyleSheetCb}attachLinkElement(e,t){"_cssText"in t.attributes&&this.mutationCb({adds:[],removes:[],texts:[],attributes:[{id:t.id,attributes:t.attributes}]}),this.trackLinkElement(e)}trackLinkElement(e){this.trackedLinkElements.has(e)||(this.trackedLinkElements.add(e),this.trackStylesheetInLinkElement(e))}adoptStyleSheets(e,t){if(0===e.length)return;const n={id:t,styleIds:[]},o=[];for(const r of e){let e;this.styleMirror.has(r)?e=this.styleMirror.getId(r):(e=this.styleMirror.add(r),o.push({styleId:e,rules:Array.from(r.rules||CSSRule,((e,t)=>({rule:Yn(e,r.href),index:t})))})),n.styleIds.push(e)}o.length>0&&(n.styles=o),this.adoptedStyleSheetCb(n)}reset(){this.styleMirror.reset(),this.trackedLinkElements=new WeakSet}trackStylesheetInLinkElement(e){}}class Pp{constructor(){Rn(this,"nodeMap",new WeakMap),Rn(this,"active",!1)}inOtherBuffer(e,t){const n=this.nodeMap.get(e);return n&&Array.from(n).some((e=>e!==t))}add(e,t){this.active||(this.active=!0,requestAnimationFrame((()=>{this.nodeMap=new WeakMap,this.active=!1}))),this.nodeMap.set(e,(this.nodeMap.get(e)||new Set).add(t))}destroy(){}}let Dp,Np,jp,Fp=!1;try{if(2!==Array.from([1],(e=>2*e))[0]){const e=document.createElement("iframe");document.body.appendChild(e),Array.from=(null==(An=e.contentWindow)?void 0:An.Array.from)||Array.from,document.body.removeChild(e)}}catch(Hm){console.debug("Unable to override Array.from",Hm)}const Bp=new Xn;function _p(e={}){const{emit:t,checkoutEveryNms:n,checkoutEveryNth:o,blockClass:r="rr-block",blockSelector:i=null,ignoreClass:a="rr-ignore",ignoreSelector:s=null,maskTextClass:l="rr-mask",maskTextSelector:c=null,inlineStylesheet:u=!0,maskAllInputs:d,maskInputOptions:p,slimDOMOptions:h,maskInputFn:f,maskTextFn:m,hooks:g,packFn:v,sampling:y={},dataURLOptions:b={},mousemoveWait:w,recordDOM:k=!0,recordCanvas:x=!1,recordCrossOriginIframes:S=!1,recordAfter:C=("DOMContentLoaded"===e.recordAfter?e.recordAfter:"load"),userTriggeredOnInput:I=!1,collectFonts:O=!1,inlineImages:E=!1,plugins:T,keepIframeSrcFn:L=(()=>!1),ignoreCSSAttributes:A=new Set([]),errorHandler:M}=e;Qd=M;const R=!S||window.parent===window;let P=!1;if(!R)try{window.parent.document&&(P=!1)}catch(V){P=!0}if(R&&!t)throw new Error("emit function is required");if(!R&&!P)return()=>{};void 0!==w&&void 0===y.mousemove&&(y.mousemove=w),Bp.reset();const D=!0===d?{color:!0,date:!0,"datetime-local":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0,password:!0}:void 0!==p?p:{password:!0},N=!0===h||"all"===h?{script:!0,comment:!0,headFavicon:!0,headWhitespace:!0,headMetaSocial:!0,headMetaRobots:!0,headMetaHttpEquiv:!0,headMetaVerification:!0,headMetaAuthorship:"all"===h,headMetaDescKeywords:"all"===h,headTitleMutations:"all"===h}:h||{};let j;!function(e=window){"NodeList"in e&&!e.NodeList.prototype.forEach&&(e.NodeList.prototype.forEach=Array.prototype.forEach),"DOMTokenList"in e&&!e.DOMTokenList.prototype.forEach&&(e.DOMTokenList.prototype.forEach=Array.prototype.forEach)}();let F=0;const B=e=>{for(const t of T||[])t.eventProcessor&&(e=t.eventProcessor(e));return v&&!P&&(e=v(e)),e};Dp=(e,r)=>{var i;const a=e;if(a.timestamp=xd(),!(null==(i=tp[0])?void 0:i.isFrozen())||a.type===Bd.FullSnapshot||a.type===Bd.IncrementalSnapshot&&a.data.source===_d.Mutation||tp.forEach((e=>e.unfreeze())),R)null==t||t(B(a),r);else if(P){const e={type:"rrweb",event:B(a),origin:window.location.origin,isCheckout:r};window.parent.postMessage(e,"*")}if(a.type===Bd.FullSnapshot)j=a,F=0;else if(a.type===Bd.IncrementalSnapshot){if(a.data.source===_d.Mutation&&a.data.isAttachIframe)return;F++;const e=o&&F>=o,t=n&&a.timestamp-j.timestamp>n;(e||t)&&Np(!0)}};const _=e=>{Dp({type:Bd.IncrementalSnapshot,data:{source:_d.Mutation,...e}})},U=e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.Scroll,...e}}),H=e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.CanvasMutation,...e}}),z=new Rp({mutationCb:_,adoptedStyleSheetCb:e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.AdoptedStyleSheet,...e}})}),q=new mp({mirror:Bp,mutationCb:_,stylesheetManager:z,recordCrossOriginIframes:S,wrappedEmit:Dp});for(const Z of T||[])Z.getMirror&&Z.getMirror({nodeMirror:Bp,crossOriginIframeMirror:q.crossOriginIframeMirror,crossOriginIframeStyleMirror:q.crossOriginIframeStyleMirror});const W=new Pp;jp=new Mp({recordCanvas:x,mutationCb:H,win:window,blockClass:r,blockSelector:i,mirror:Bp,sampling:y.canvas,dataURLOptions:b});const G=new gp({mutationCb:_,scrollCb:U,bypassOptions:{blockClass:r,blockSelector:i,maskTextClass:l,maskTextSelector:c,inlineStylesheet:u,maskInputOptions:D,dataURLOptions:b,maskTextFn:m,maskInputFn:f,recordCanvas:x,inlineImages:E,sampling:y,slimDOMOptions:N,iframeManager:q,stylesheetManager:z,canvasManager:jp,keepIframeSrcFn:L,processedNodeManager:W},mirror:Bp});Np=(e=!1)=>{if(!k)return;Dp({type:Bd.Meta,data:{href:window.location.href,width:Id(),height:Cd()}},e),z.reset(),G.init(),tp.forEach((e=>e.lock()));const t=function(e,t){const{mirror:n=new Xn,blockClass:o="rr-block",blockSelector:r=null,maskTextClass:i="rr-mask",maskTextSelector:a=null,inlineStylesheet:s=!0,inlineImages:l=!1,recordCanvas:c=!1,maskAllInputs:u=!1,maskTextFn:d,maskInputFn:p,slimDOM:h=!1,dataURLOptions:f,preserveWhiteSpace:m,onSerialize:g,onIframeLoad:v,iframeLoadTimeout:y,onStylesheetLoad:b,stylesheetLoadTimeout:w,keepIframeSrcFn:k=(()=>!1)}=t||{};return Lo(e,{doc:e,mirror:n,blockClass:o,blockSelector:r,maskTextClass:i,maskTextSelector:a,skipChild:!1,inlineStylesheet:s,maskInputOptions:!0===u?{color:!0,date:!0,"datetime-local":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0,password:!0}:!1===u?{password:!0}:u,maskTextFn:d,maskInputFn:p,slimDOMOptions:!0===h||"all"===h?{script:!0,comment:!0,headFavicon:!0,headWhitespace:!0,headMetaDescKeywords:"all"===h,headMetaSocial:!0,headMetaRobots:!0,headMetaHttpEquiv:!0,headMetaAuthorship:!0,headMetaVerification:!0}:!1===h?{}:h,dataURLOptions:f,inlineImages:l,recordCanvas:c,preserveWhiteSpace:m,onSerialize:g,onIframeLoad:v,iframeLoadTimeout:y,onStylesheetLoad:b,stylesheetLoadTimeout:w,keepIframeSrcFn:k,newlyAddedElement:!1})}(document,{mirror:Bp,blockClass:r,blockSelector:i,maskTextClass:l,maskTextSelector:c,inlineStylesheet:u,maskAllInputs:D,maskTextFn:m,maskInputFn:f,slimDOM:N,dataURLOptions:b,recordCanvas:x,inlineImages:E,onSerialize:e=>{Md(e,Bp)&&q.addIframe(e),Rd(e,Bp)&&z.trackLinkElement(e),Pd(e)&&G.addShadowRoot(md.shadowRoot(e),document)},onIframeLoad:(e,t)=>{q.attachIframe(e,t),G.observeAttachShadow(e)},onStylesheetLoad:(e,t)=>{z.attachLinkElement(e,t)},keepIframeSrcFn:L});if(!t)return console.warn("Failed to snapshot the document");Dp({type:Bd.FullSnapshot,data:{node:t,initialOffset:Sd(window)}},e),tp.forEach((e=>e.unlock())),document.adoptedStyleSheets&&document.adoptedStyleSheets.length>0&&z.adoptStyleSheets(document.adoptedStyleSheets,Bp.getId(document))};try{const e=[],t=e=>{var t;return ep(dp)({mutationCb:_,mousemoveCb:(e,t)=>Dp({type:Bd.IncrementalSnapshot,data:{source:t,positions:e}}),mouseInteractionCb:e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.MouseInteraction,...e}}),scrollCb:U,viewportResizeCb:e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.ViewportResize,...e}}),inputCb:e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.Input,...e}}),mediaInteractionCb:e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.MediaInteraction,...e}}),styleSheetRuleCb:e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.StyleSheetRule,...e}}),styleDeclarationCb:e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.StyleDeclaration,...e}}),canvasMutationCb:H,fontCb:e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.Font,...e}}),selectionCb:e=>{Dp({type:Bd.IncrementalSnapshot,data:{source:_d.Selection,...e}})},customElementCb:e=>{Dp({type:Bd.IncrementalSnapshot,data:{source:_d.CustomElement,...e}})},blockClass:r,ignoreClass:a,ignoreSelector:s,maskTextClass:l,maskTextSelector:c,maskInputOptions:D,inlineStylesheet:u,sampling:y,recordDOM:k,recordCanvas:x,inlineImages:E,userTriggeredOnInput:I,collectFonts:O,doc:e,maskInputFn:f,maskTextFn:m,keepIframeSrcFn:L,blockSelector:i,slimDOMOptions:N,dataURLOptions:b,mirror:Bp,iframeManager:q,stylesheetManager:z,shadowDomManager:G,processedNodeManager:W,canvasManager:jp,ignoreCSSAttributes:A,plugins:(null==(t=null==T?void 0:T.filter((e=>e.observer)))?void 0:t.map((e=>({observer:e.observer,options:e.options,callback:t=>Dp({type:Bd.Plugin,data:{plugin:e.name,payload:t}})}))))||[]},g)};q.addLoadListener((n=>{try{e.push(t(n.contentDocument))}catch(o){console.warn(o)}}));const n=()=>{Np(),e.push(t(document)),Fp=!0};return"interactive"===document.readyState||"complete"===document.readyState?n():(e.push(gd("DOMContentLoaded",(()=>{Dp({type:Bd.DomContentLoaded,data:{}}),"DOMContentLoaded"===C&&n()}))),e.push(gd("load",(()=>{Dp({type:Bd.Load,data:{}}),"load"===C&&n()}),window))),()=>{e.forEach((e=>e())),W.destroy(),Fp=!1,Qd=void 0}}catch(J){console.warn(J)}}var Up,Hp;function zp(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return qp(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return qp(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0,r=function(){};return{s:r,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){s=!0,i=e},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw i}}}}function qp(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n{if(!Fp)throw new Error("please add custom event after start recording");Dp({type:Bd.Custom,data:{tag:e,payload:t}})},_p.freezePage=()=>{tp.forEach((e=>e.freeze()))},_p.takeFullSnapshot=e=>{if(!Fp)throw new Error("please take full snapshot after start recording");Np(e)},_p.mirror=Bp,(Hp=Up||(Up={}))[Hp.NotStarted=0]="NotStarted",Hp[Hp.Running=1]="Running",Hp[Hp.Stopped=2]="Stopped";var Yp=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),Zp(this,"startDate",void 0),Zp(this,"events",[]),Zp(this,"bufferSize",0),Zp(this,"stopFunction",void 0),Zp(this,"customOptions",{})}var t,n,o;return t=e,o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],(n=[{key:"setOptions",value:function(e){this.customOptions=e}},{key:"start",value:function(){this.stop(),this.startDate=Date.now();var e=this.events;try{this.stopFunction=_p(Vp(Vp(Vp({},{inlineStylesheet:!0,blockClass:"gl-block",ignoreClass:"gl-ignore",maskTextClass:"gl-mask",dataURLOptions:{quality:.7},recordCanvas:!1,sampling:{scroll:150,mouseInteraction:{MouseUp:!1,MouseDown:!1,Click:!0,ContextMenu:!0,DblClick:!0,Focus:!0,Blur:!0,TouchStart:!0,TouchEnd:!1}},collectFonts:!1,recordCrossOriginIframes:!1}),this.customOptions),{},{emit:function(t){var n=function(e){var t=JSON.stringify(e);if(t.length>4e6){var n,o=/data:([\w\/\-\.]+);(\w+),([^)"]*)/gim,r=zp(t.matchAll(o));try{for(r.s();!(n=r.n()).done;){var i=n.value;t="image/"===i[1].toLocaleLowerCase().slice(0,6)?t.replace(i[0],"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAQSURBVHgBAQUA+v8ABRg5/wHSAVZN1mnaAAAAAElFTkSuQmCC"):t.replace(i[0],"")}}catch(Hm){r.e(Hm)}finally{r.f()}}return{event:JSON.parse(t),size:t.length}}(t).event;e.push(n)}}))}catch(t){console.error(t)}}},{key:"stop",value:function(){this.stopFunction&&this.stopFunction(),this.startDate=void 0,this.events=[],this.bufferSize=0}},{key:"getReplayData",value:function(){return{startDate:this.startDate,events:this.events,baseUrl:window.location.origin,width:window.innerWidth,height:window.innerHeight,isMobile:w(),type:"rrweb"}}}])&&Jp(t.prototype,n),o&&Jp(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Xp(e){return Xp="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Xp(e)}function $p(e,t){for(var n=0;nthis.startPoint.x&&(r=this.startPoint.x),t.y>this.startPoint.y&&(i=this.startPoint.y),this.path.setAttributeNS(null,"x",r),this.path.setAttributeNS(null,"y",i),this.path.setAttributeNS(null,"width",n),this.path.setAttributeNS(null,"height",o)}}},{key:"mouseDownRect",value:function(e){this.path=document.createElementNS("http://www.w3.org/2000/svg","rect"),this.path.setAttribute("fill","none"),this.path.setAttribute("stroke",this.color),this.path.setAttribute("stroke-linecap","round"),this.path.setAttribute("stroke-width",this.strokeWidthRect),this.startPoint=this.getMousePosition(e),this.appendPathToSvg(this.path)}},{key:"mouseDownPen",value:function(e){var t=this.color+"AA",n=this.strokeWidth;"blur"===this.tool&&(t="#000000",n=40),this.path=document.createElementNS("http://www.w3.org/2000/svg","path"),this.path.setAttribute("fill","none"),this.path.setAttribute("stroke",t),this.path.setAttribute("stroke-linecap","round"),this.path.setAttribute("stroke-width",n),this.buffer=[];var o=this.getMousePosition(e);this.appendToBuffer(o),this.strPath="M"+o.x+" "+o.y,this.path.setAttribute("d",this.strPath),this.appendPathToSvg(this.path)}},{key:"setTool",value:function(e){this.tool=e}},{key:"setColor",value:function(e){this.color=e}},{key:"getMousePosition",value:function(e){return e.touches&&e.touches.length>0?{x:e.touches[0].clientX,y:e.touches[0].clientY}:{x:e.clientX,y:e.clientY}}},{key:"getAveragePoint",value:function(e){var t=this.buffer.length;if(t%2==1||t>=this.bufferSize){var n,o,r=0,i=0,a=0;for(o=e;othis.bufferSize;)this.buffer.shift()}},{key:"appendPathToSvg",value:function(e){this.svgElement.appendChild(e),this.pathBuffer.push(e),this.rerender()}},{key:"removeLastAddedPathFromSvg",value:function(){this.pathBuffer.length<=0||!this.svgElement||(this.svgElement.removeChild(this.pathBuffer[this.pathBuffer.length-1]),this.pathBuffer.pop(),this.rerender())}},{key:"fadeOutToolbar",value:function(){var e=document.querySelector(".bb-capture-toolbar");e&&(e.style.opacity=0,e.style.pointerEvents="none")}},{key:"fadeInToolbar",value:function(){var e=document.querySelector(".bb-capture-toolbar");e&&(e.style.opacity=1,e.style.pointerEvents="auto")}}],n&&$p(t.prototype,n),o&&$p(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function nh(e){return nh="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},nh(e)}function oh(e,t){for(var n=0;n\n \n
'.concat(p("dismiss"),"
\n
").concat(p("rect"),'
\n
\n
\n ').concat(p("drag"),"\n
\n ").concat("capture"===this.type?'
\n '.concat(p("recorderon"),"\n ").concat(p("recorderoff"),'\n \n
\n
\n ').concat(p("mic"),'\n \n
\n
2:00
\n
\n
\n ').concat(p("pointer"),"\n
"):"",'\n
\n ').concat(p("rect"),'\n
\n
\n ').concat(p("pen"),'\n
\n
\n ').concat(p("blur"),'\n
\n
\n
\n ').concat(gh.translateText("pickAColor"),'\n
\n
\n ').concat(p("undo"),'\n ').concat(gh.translateText("undo"),"\n
\n ").concat("capture"!==this.type?'
'.concat(gh.translateText("next"),"
"):"",'\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
').concat(gh.translateText("retry"),'
\n
').concat(gh.translateText("next"),"
\n
\n
\n
\n "),document.body.appendChild(e),e.setAttribute("dir",gh.getInstance().isRTLLayout?"rtl":"ltr")}},{key:"unregisterListeners",value:function(){this.escListener&&document.removeEventListener("keydown",this.escListener),this.pageLeaveListener&&window.removeEventListener("beforeunload",this.pageLeaveListener)}},{key:"registerListeners",value:function(){var e=this;this.escListener=function(t){var n=!1,o=!1;"key"in(t=t||window.event)&&(n="Escape"===t.key,o="Enter"===t.key),n&&e.dismiss(),"screenshot"===e.type&&o&&e.showNextStep()},document.addEventListener("keydown",this.escListener),this.pageLeaveListener=function(e){e.preventDefault(),e.returnValue=""},window.addEventListener("beforeunload",this.pageLeaveListener)}},{key:"show",value:function(e){this.callback=e,this.registerListeners(),this.hideWidgetUI(),this.createEditorUI(),this.setupMousePointer(),"screenshot"===this.type?(_m.getInstance().setGlobalDataItem("snapshotPosition",{x:window.scrollX,y:window.scrollY}),ah.disableScroll()):this.setupScreenRecording(),this.screenDrawer=new th(this.captureScreenDrawerRerender.bind(this)),this.setupColorPicker(),this.setupToolbar()}},{key:"setupColorPicker",value:function(){for(var t=this,n=document.querySelector(".bb-capture-toolbar-item-selectedcolor"),o=document.querySelectorAll(".bb-capture-toolbar-item-color"),r=document.querySelector(".bb-capture-toolbar-item-colorpicker"),i=function(){var i=o[a],s=i.getAttribute("data-color");i.style.backgroundColor=s,i.onclick=function(){i&&(t.screenDrawer.setColor(s),r&&(r.style.display="none"),n.style.backgroundColor=i.style.backgroundColor,e.setPenColor(s))}},a=0;a0?o.classList.remove(e):o.classList.add(e))}}},{key:"captureRenderer",value:function(){if(this.screenRecorder){this.screenRecorder.file&&_m.getInstance().setGlobalDataItem("screenRecordingData",this.screenRecorder.file);var e="bb-capture-editor-item-inactive",t=document.querySelector(".bb-capture-toolbar-item-timer"),n=document.querySelectorAll(".bb-capture-toolbar-item"),o=document.querySelector(".bb-tooltip-screen-recording"),r=document.querySelector(".bb-tooltip-audio-recording"),i=document.querySelector(".bb-capture-editor"),a="bb-capture-editor-recording",s="bb-capture-editor-notrecording";this.screenRecorder.isRecording?(i.classList.add(a),i.classList.remove(s)):(i.classList.add(s),i.classList.remove(a));var l=document.querySelector(".bb-capture-toolbar");document.querySelector(".bb-capture-preview").style.display=this.screenRecorder.file?"flex":"none",l.style.display=this.screenRecorder.file?"none":"flex";for(var c=0;c0){var t=e.filter((function(e){return new Date(e.createdAt)>new Date(Date.now()-36e5)}));t.length>2?this.notifications=t.splice(0,t.length-2):this.notifications=t,this.renderNotifications()}}catch(n){}}},{key:"setNotificationCount",value:function(e){this.unreadCount=e,this.updateTabBarNotificationCount(),a.getInstance().updateNotificationBadge(this.unreadCount)}},{key:"showNotification",value:function(e){this.notificationContainer&&e&&e.data&&(this.notifications.find((function(t){return e.outbound===t.outbound}))||(this.notifications.push(e),e.sound&&Yh.ping()),this.notifications.length>2&&this.notifications.shift(),I(this.unreadNotificationsKey,this.notifications),this.renderNotifications())}},{key:"renderNotifications",value:function(){var e=this;if(this.notificationContainer){this.clearAllNotifications(!0);var t=document.createElement("div");t.onclick=function(){e.clearAllNotifications(),e.currentNewsIndex=0},t.className="gleap-notification-close",t.innerHTML=p("dismiss"),this.notificationContainer.appendChild(t);var n=this.notifications.filter((function(e){return e.data.news})).sort((function(e,t){return new Date(e.createdAt)-new Date(t.createdAt)})),o=this.notifications.filter((function(e){return!e.data.news}));if(n.length>0){var r=this.currentNewsIndex1){var m=document.createElement("div");m.className="gleap-news-pagination";var g=document.createElement("span");g.className="gleap-news-page-indicator",g.innerText="".concat(r+1," / ").concat(n.length),m.appendChild(g);var v=document.createElement("button");v.className="gleap-news-next-button",r\n
\n
\n '.concat(t.data.text,'\n
\n
\n
\n
\n
\n \n \n \n ').concat(t.data.nextStepTitle,"\n
\n
\n ")}else r.className="gleap-notification-item",r.innerHTML="\n ".concat(t.data.sender&&t.data.sender.profileImageUrl&&''),'\n
\n ').concat(t.data.sender?'
\n '.concat(t.data.sender.name,"\n
"):"",'\n
').concat(n,"
\n
");e.notificationContainer.appendChild(r)},b=0;b0||o.length>0||this.clearAllNotifications(!0)}}},{key:"openNews",value:function(e){e.data.news?_m.openNewsArticle(e.data.news.id,!0):_m.open()}},{key:"renderDescription",value:function(e){var t=e.data,n=t.previewText,o=t.sender;return n&&n.length>0?n:o?'\n
\n '.concat(o.profileImageUrl?'').concat(o.name,''):"","\n ").concat(o.name,"\n
\n "):""}},{key:"clearAllNotifications",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(this.notificationContainer)for(e||(this.notifications=[],this.currentNewsIndex=0,I(this.unreadNotificationsKey,this.notifications));this.notificationContainer.firstChild;)this.notificationContainer.removeChild(this.notificationContainer.firstChild)}},{key:"updateContainerStyle",value:function(){if(this.notificationContainer){var e=dt.getInstance().getFlowConfig(),t="gleap-notification-container--left",n="gleap-notification-container--no-button";this.notificationContainer.classList.remove(t),this.notificationContainer.classList.remove(n),e.feedbackButtonPosition!==a.FEEDBACK_BUTTON_CLASSIC_LEFT&&e.feedbackButtonPosition!==a.FEEDBACK_BUTTON_BOTTOM_LEFT||this.notificationContainer.classList.add(t),null===a.getInstance().buttonHidden?e.feedbackButtonPosition===a.FEEDBACK_BUTTON_NONE&&this.notificationContainer.classList.add(n):a.getInstance().buttonHidden&&this.notificationContainer.classList.add(n),this.notificationContainer.setAttribute("dir",gh.getInstance().isRTLLayout?"rtl":"ltr")}}}],o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],n&&Th(t.prototype,n),o&&Th(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Rh(e){return Rh="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Rh(e)}function Ph(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Dh(e){for(var t=1;t'),document.body.appendChild(t),this.bannerContainer=t}},{key:"sendMessage",value:function(e){try{var t=document.querySelector(".gleap-b-frame");t&&t.contentWindow&&t.contentWindow.postMessage(JSON.stringify(Dh(Dh({},e),{},{type:"banner"})),"*")}catch(n){}}},{key:"showBanner",value:function(e){this.injectBannerUI(e)}}])&&Nh(t.prototype,n),o&&Nh(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function _h(e){return _h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},_h(e)}function Uh(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Hh(e){for(var t=1;t\n
\n \n
\n '),document.body.appendChild(n),this.modalContainer=n,this.modalBackdropClickListener=this.modalContainer.querySelector(".gleap-modal-backdrop").addEventListener("click",(function(){var e,n;(null===(e=null===(n=t.modalData)||void 0===n?void 0:n.showCloseButton)||void 0===e||e)&&t.hideModal()})),document.body.classList.add("gleap-modal-open")}},{key:"_postMessage",value:function(e){try{var t=this.modalContainer.querySelector(".gleap-modal-frame");null!=t&&t.contentWindow&&t.contentWindow.postMessage(JSON.stringify(Hh(Hh({},e),{},{type:"modal"})),this.modalUrl)}catch(Hm){}}},{key:"showModal",value:function(e){e&&e.config&&this._injectModalUI(e.config)}},{key:"hideModal",value:function(){this.modalContainer&&(this.modalBackdropClickListener&&this.modalContainer.querySelector(".gleap-modal-backdrop").removeEventListener("click",this.modalBackdropClickListener),document.body.removeChild(this.modalContainer),this.modalContainer=null,document.body.classList.remove("gleap-modal-open"))}}])&&zh(t.prototype,n),o&&zh(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Vh(e){return Vh="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Vh(e)}function Jh(e,t){for(var n=0;n=a-i;++s)n[i]=t[s],rf(e,t,n,s+1,r,i+1,a);else e.push(n.slice(0,i).join(""))}function af(e){return function(e){if(Array.isArray(e))return sf(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return sf(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return sf(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function sf(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){s=!0,i=e},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw i}}}}function ff(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n1&&void 0!==arguments[1]?arguments[1]:["id","class","length"];return af(e.attributes).reduce((function(e,n){return t.indexOf(n.nodeName)>-1||e.push("[".concat(n.nodeName,'="').concat(n.value,'"]')),e}),[])}(e,n)},Class:of,ID:nf};return t.reduce((function(t,n){return t[n]=o[n](e),t}),{})}function gf(e,t){try{var n=e.parentNode.querySelectorAll(t);return 1===n.length&&n[0]===e}catch(o){return!1}}function vf(e,t){return t.find(gf.bind(null,e))}function yf(e,t,n){var o=function(e,t){for(var n=[],o=e.length,r=[],i=1;i<=t;++i)rf(n,e,r,0,o-1,0,i);return n}(t,3),r=vf(e,o);return Boolean(r)||Boolean(n)&&(r=vf(e,o=o.map((function(e){return n+e}))),Boolean(r))?r:null}function bf(e,t,n,o){var r,i=mf(e,t,n);o&&o instanceof RegExp&&(i.ID=o.test(i.ID)?null:i.ID,i.Class=i.Class.filter((function(e){return!o.test(e)})));var a,s=hf(t);try{for(s.s();!(a=s.n()).done;){var l=a.value,c=i.ID,u=i.Tag,d=i.Class,p=i.Attributes,h=i.NthChild;switch(l){case"ID":if(Boolean(c)&&gf(e,c))return c;break;case"Tag":if(Boolean(u)&&gf(e,u))return u;break;case"Class":if(Boolean(d)&&d.length&&(r=yf(e,d,u)))return r;break;case"Attributes":if(Boolean(p)&&p.length&&(r=yf(e,p,u)))return r;break;case"NthChild":if(Boolean(h))return h}}}catch(Hm){s.e(Hm)}finally{s.f()}return"*"}function wf(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=n.selectorTypes,r=void 0===o?["ID","Class","Tag","NthChild"]:o,i=n.attributesToIgnore,a=void 0===i?["id","class","length"]:i,s=n.excludeRegex,l=void 0===s?null:s,c=[],u=function(e){for(var t=[],n=e;cf(n);)t.push(n),n=n.parentNode;return t}(e),d=hf(u);try{for(d.s();!(t=d.n()).done;){var p=bf(t.value,r,a,l);Boolean(p)&&c.push(p)}}catch(Hm){d.e(Hm)}finally{d.f()}for(var h=[],f=0,m=c;f ");if(pf(e,v))return v}return null}function kf(e){return kf="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},kf(e)}function xf(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Sf(e,t){for(var n=0;n0&&void 0!==arguments[0]&&arguments[0])||o(t.gleapCollapseUI,e)&&o(t.gleapFrameContainer,n))&&(t.gleapCollapseUI&&t.gleapCollapseUI.classList.toggle(e),t.gleapFrameContainer&&t.gleapFrameContainer.classList.toggle(n))})),_f(this,"injectCollapseUI",(function(){if(!t.injectedCollapseUI){t.injectedCollapseUI=!0;var e=document.createElement("div");e.className="gleap-admin-collapse-ui",e.innerHTML='
\n '.concat(p("arrowdown"),"\n
"),document.body.appendChild(e),t.gleapCollapseUI=e,e.addEventListener("click",(function(e){e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t.toggleCollapseUI()}))}})),_f(this,"injectFrame",(function(){var e;if(!t.injectedFrame){t.injectedFrame=!0;var n=document.createElement("div");n.className="gleap-admin-frame-container",n.innerHTML=''),document.body.appendChild(n),t.gleapFrameContainer=n,t.gleapFrame=document.querySelector(".gleap-admin-frame")}}))}var t,n,o;return t=e,o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],(n=[{key:"logCurrentPage",value:function(){var e=window.location.href;e&&e!==this.lastUrl&&(this.lastUrl=e,this.sendMessageToTourBuilder({name:"page-changed",data:{page:e}}))}},{key:"startPageListener",value:function(){var e=this;setInterval((function(){e.logCurrentPage()}),1e3)}},{key:"initAdminHelper",value:function(){var e=this;mm.getInstance().disable(),e.adminHelper=new Df;try{e.adminHelper.onElementPicked=function(t){e.toggleCollapseUI(!0),e.sendMessageToTourBuilder({name:"element-picked",data:{selector:t}})}}catch(t){console.log(t)}e.injectFrame(),e.injectCollapseUI(),e.setFrameHeight("loading")}},{key:"setFrameHeight",value:function(e){if(this.gleapFrameContainer){var t="";t="picker"===e||"navigate"===e?"65px":"editor"===e?"100vh":"0px",this.gleapFrameContainer.style.height=t}}},{key:"start",value:function(){var e=this;if("undefined"!=typeof window&&!window.gleapAdminDisabled){var t=this;window.addEventListener("message",(function(n){if("https://app.gleap.io"===n.origin)try{var o=JSON.parse(n.data);if("admin"===o.type&&("load"===o.name&&(t.configData=o.data,t.initAdminHelper()),"smartlink-search-result"===o.name&&e.sendMessageToTourBuilder({name:"smartlink-search-result",data:o.data}),"translate-complete"===o.name&&e.sendMessageToTourBuilder({name:"translate-complete",data:o.data})),"tourbuilder"===o.type){var r;if("loaddata"===o.name&&e.sendMessageToTourBuilder({name:"data",data:Ff(Ff({},t.configData),{},{currentPage:window.location.href})}),"highlight-element"===o.name&&(document.querySelectorAll(".gleap-admin-highlight").forEach((function(e){e.classList.remove("gleap-admin-highlight")})),null!=o&&null!==(r=o.data)&&void 0!==r&&r.selector)){var i,a=document.querySelector(null==o||null===(i=o.data)||void 0===i?void 0:i.selector);a&&a.classList.add("gleap-admin-highlight")}if("smartlink-search"===o.name&&e.sendMessage({name:"smartlink-search",data:o.data}),"product-tour-started"===o.name&&e.sendMessage({name:"product-tour-started",data:o.data}),"translate"===o.name&&e.sendMessage({name:"translate",data:o.data}),"save"===o.name&&e.sendMessage({name:"save",data:o.data}),"update-steps"===o.name&&e.sendMessage({name:"update-steps",data:o.data}),"click"===o.name)try{document.querySelector(o.data.selector).click()}catch(s){console.log(s)}"status-changed"===o.name&&(t.status=o.data,e.setFrameHeight(t.status),t.adminHelper.stopPicker(),"picker"===t.status&&t.adminHelper.startPicker())}}catch(l){}})),this.sendMessage({name:"init"}),this.startPageListener()}}},{key:"sendMessage",value:function(e){try{window&&window.opener&&window.opener.postMessage(JSON.stringify(Ff(Ff({},e),{},{type:"admin"})),"*")}catch(t){}}},{key:"sendMessageToTourBuilder",value:function(e){try{this.gleapFrame&&this.gleapFrame.contentWindow&&this.gleapFrame.contentWindow.postMessage(JSON.stringify(Ff(Ff({},e),{},{type:"tourbuilder"})),"*")}catch(t){}}}])&&Bf(t.prototype,n),o&&Bf(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function zf(e){return zf="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},zf(e)}function qf(e){return function(e){if(Array.isArray(e))return Wf(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return Wf(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Wf(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Wf(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n0&&void 0!==arguments[0]?arguments[0]:{})}function n(t){return t?e[t]:e}function o(e,t,n,o){return(e/=o/2)<1?n/2*e*e+t:-n/2*(--e*(e-2)-1)+t}function r(e){var t='a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type="text"]:not([disabled]), input[type="radio"]:not([disabled]), input[type="checkbox"]:not([disabled]), select:not([disabled])';return e.flatMap((function(e){var n=e.matches(t),o=Array.from(e.querySelectorAll(t));return[].concat(qf(n?[e]:[]),o)})).filter((function(e){return"none"!==getComputedStyle(e).pointerEvents&&function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)}(e)}))}function i(e){if(e&&!function(e){var t=e.getBoundingClientRect();return t.top>=0&&t.left>=0&&t.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&t.right<=(window.innerWidth||document.documentElement.clientWidth)}(e)){var t=n("smoothScroll");e.scrollIntoView({behavior:!t||a(e)?"auto":"smooth",inline:"center",block:"center"})}}function a(e){if(e&&e.parentElement){var t=e.parentElement;return t.scrollHeight>t.clientHeight}}var s={};function l(e,t){s[e]=t}function c(e){return e?s[e]:s}function u(){s={}}var d={};function p(e,t){d[e]=t}function h(e){var t;null==(t=d[e])||t.call(d)}function f(e){if(e){var t=e.getBoundingClientRect(),n={x:t.x,y:t.y,width:t.width,height:t.height};l("__activeStagePosition",n),g(n)}}function m(e){var t=function(e){var t=window.innerWidth,o=window.innerHeight,r=document.createElementNS("http://www.w3.org/2000/svg","svg");r.classList.add("gleap-tour-overlay","gleap-tour-overlay-animated"),r.setAttribute("viewBox","0 0 ".concat(t," ").concat(o)),r.setAttribute("xmlSpace","preserve"),r.setAttribute("xmlnsXlink","http://www.w3.org/1999/xlink"),r.setAttribute("version","1.1"),r.setAttribute("preserveAspectRatio","xMinYMin slice"),r.style.fillRule="evenodd",r.style.clipRule="evenodd",r.style.strokeLinejoin="round",r.style.strokeMiterlimit="2",r.style.zIndex="10000",r.style.position="fixed",r.style.top="0",r.style.left="0",r.style.width="100%",r.style.height="100%";var i=document.createElementNS("http://www.w3.org/2000/svg","path");return i.setAttribute("d",v(e)),i.style.fill=n("overlayColor")||"rgb(0,0,0)",i.style.opacity="".concat(n("overlayOpacity")),i.style.pointerEvents="auto",i.style.cursor="auto",r.appendChild(i),r}(e);document.body.appendChild(t),S(t,(function(e){"path"===e.target.tagName&&h("overlayClick")})),l("__overlaySvg",t)}function g(e){var t=c("__overlaySvg");if(t){var n=t.firstElementChild;if("path"!==(null==n?void 0:n.tagName))throw new Error("no path element found in stage svg");n.setAttribute("d",v(e))}else m(e)}function v(e){var t=window.innerWidth,o=window.innerHeight,r=n("stagePadding")||0,i=n("stageRadius")||0,a=e.width+2*r,s=e.height+2*r,l=Math.min(i,a/2,s/2),c=Math.floor(Math.max(l,0)),u=e.x-r+c,d=e.y-r,p=a-2*c,h=s-2*c;return"M".concat(t,",0L0,0L0,").concat(o,"L").concat(t,",").concat(o,"L").concat(t,",0Z\n M").concat(u,",").concat(d," h").concat(p," a").concat(c,",").concat(c," 0 0 1 ").concat(c,",").concat(c," v").concat(h," a").concat(c,",").concat(c," 0 0 1 -").concat(c,",").concat(c," h-").concat(p," a").concat(c,",").concat(c," 0 0 1 -").concat(c,",-").concat(c," v-").concat(h," a").concat(c,",").concat(c," 0 0 1 ").concat(c,",-").concat(c," z")}function y(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:5e3,r=e.element,a=r;if("string"==typeof a)try{a=document.querySelector(r)}catch(u){var s=r.replace(/(#[^#\s]+)/g,(function(e){return e.replace(/:/g,"\\:")}));a=document.querySelector(s)}if(r&&!a&&t>=0)setTimeout((function(){C(),y(e,t-100)}),100);else{if(!a&&("INPUT"===e.mode||"CLICK"===e.mode))return n("onElementNotFound")(e);a||(a=function(){var e=document.getElementById("gleap-tour-dummy-element");if(e)return e;var t=document.createElement("div");return t.id="gleap-tour-dummy-element",t.style.width="0",t.style.height="0",t.style.pointerEvents="none",t.style.opacity="0",t.style.position="fixed",t.style.top="50%",t.style.left="50%",document.body.appendChild(t),t}()),function(e,t){var r,a,s=400,u=Date.now(),d=c("__activeStep"),p=c("__activeElement")||e,h=!p||p===e,m="gleap-tour-dummy-element"===e.id,v="gleap-tour-dummy-element"===p.id,y=n("animate"),b=t.onHighlightStarted||n("onHighlightStarted"),w=(null==t?void 0:t.onHighlighted)||n("onHighlighted"),k=(null==d?void 0:d.onDeselected)||n("onDeselected"),x=n(),S=c();!h&&k&&k(v?void 0:p,d,{config:x,state:S});b&&b(m?void 0:e,t,{config:x,state:S});var O=!h&&y,E=!1;C(),l("previousStep",d),l("previousElement",p),l("activeStep",t),l("activeElement",e);var T=function r(){if(c("__transitionCallback")===r){var i=Date.now()-u,a=s-i<=s/2;t.popover&&a&&!E&&O&&(I(e,t),E=!0),n("animate")&&i0&&P[0].focus()}function O(){var e=c("popover");if(null==e?void 0:e.wrapper){var t=e.wrapper.getBoundingClientRect(),o=n("stagePadding")||0,r=n("popoverOffset")||0;return{width:t.width+o+r,height:t.height+o+r,realWidth:t.width,realHeight:t.height}}}function E(e,t){var n=t.elementDimensions,o=t.popoverDimensions,r=t.popoverPadding,i=t.popoverArrowDimensions;return"start"===e?Math.max(Math.min(n.top-r,window.innerHeight-o.realHeight-i.width),i.width):"end"===e?Math.max(Math.min(n.top-(null==o?void 0:o.realHeight)+n.height+r,window.innerHeight-(null==o?void 0:o.realHeight)-i.width),i.width):"center"===e?Math.max(Math.min(n.top+n.height/2-(null==o?void 0:o.realHeight)/2,window.innerHeight-(null==o?void 0:o.realHeight)-i.width),i.width):0}function T(e,t){var n=t.elementDimensions,o=t.popoverDimensions,r=t.popoverPadding,i=t.popoverArrowDimensions;return"start"===e?Math.max(Math.min(n.left-r,window.innerWidth-o.realWidth-i.width),i.width):"end"===e?Math.max(Math.min(n.left-(null==o?void 0:o.realWidth)+n.width+r,window.innerWidth-(null==o?void 0:o.realWidth)-i.width),i.width):"center"===e?Math.max(Math.min(n.left+n.width/2-(null==o?void 0:o.realWidth)/2,window.innerWidth-(null==o?void 0:o.realWidth)-i.width),i.width):0}function L(e,t){var o=c("popover");if(o){var r=(null==t?void 0:t.popover)||{},i=r.align,a=void 0===i?"start":i,s=r.side,l=void 0===s?"left":s,u=a,d="gleap-tour-dummy-element"===e.id?"over":l,p=n("stagePadding")||0,h=O(),f=o.arrow.getBoundingClientRect(),m=e.getBoundingClientRect(),g=m.top-h.height,v=g>=0,y=window.innerHeight-(m.bottom+h.height),b=y>=0,w=m.left-h.width,k=w>=0,x=window.innerWidth-(m.right+h.width),S=x>=0,C=!(v||b||k||S),I=d;if("top"===d&&v?S=k=b=!1:"bottom"===d&&b?S=k=v=!1:"left"===d&&k?S=v=b=!1:"right"===d&&S&&(k=v=b=!1),"over"===d){var L=window.innerWidth/2-h.realWidth/2,A=window.innerHeight/2-h.realHeight/2;o.wrapper.style.left="".concat(L,"px"),o.wrapper.style.right="auto",o.wrapper.style.top="".concat(A,"px"),o.wrapper.style.bottom="auto"}else if(C){var M=window.innerWidth/2-(null==h?void 0:h.realWidth)/2;o.wrapper.style.left="".concat(M,"px"),o.wrapper.style.right="auto",o.wrapper.style.bottom="".concat(10,"px"),o.wrapper.style.top="auto"}else if(k){var R=Math.min(w,window.innerWidth-(null==h?void 0:h.realWidth)-f.width),P=E(u,{elementDimensions:m,popoverDimensions:h,popoverPadding:p,popoverArrowDimensions:f});o.wrapper.style.left="".concat(R,"px"),o.wrapper.style.top="".concat(P,"px"),o.wrapper.style.bottom="auto",o.wrapper.style.right="auto",I="left"}else if(S){var D=Math.min(x,window.innerWidth-(null==h?void 0:h.realWidth)-f.width),N=E(u,{elementDimensions:m,popoverDimensions:h,popoverPadding:p,popoverArrowDimensions:f});o.wrapper.style.right="".concat(D,"px"),o.wrapper.style.top="".concat(N,"px"),o.wrapper.style.bottom="auto",o.wrapper.style.left="auto",I="right"}else if(v){var j=Math.min(g,window.innerHeight-h.realHeight-f.width),F=T(u,{elementDimensions:m,popoverDimensions:h,popoverPadding:p,popoverArrowDimensions:f});o.wrapper.style.top="".concat(j,"px"),o.wrapper.style.left="".concat(F,"px"),o.wrapper.style.bottom="auto",o.wrapper.style.right="auto",I="top"}else if(b){var B=Math.min(y,window.innerHeight-(null==h?void 0:h.realHeight)-f.width),_=T(u,{elementDimensions:m,popoverDimensions:h,popoverPadding:p,popoverArrowDimensions:f});o.wrapper.style.left="".concat(_,"px"),o.wrapper.style.bottom="".concat(B,"px"),o.wrapper.style.top="auto",o.wrapper.style.right="auto",I="bottom"}C?o.arrow.classList.add("gleap-tour-popover-arrow-none"):function(e,t,n){var o=c("popover");if(!o)return;var r=n.getBoundingClientRect(),i=O(),a=o.arrow,s=i.width,l=window.innerWidth,u=r.width,d=r.left,p=i.height,h=window.innerHeight,f=r.top,m=r.height;a.className="gleap-tour-popover-arrow";var g=t,v=e;"top"===t?(d+u<=0?(g="right",v="end"):d+u-s<=0&&(g="top",v="start"),d>=l?(g="left",v="end"):d+s>=l&&(g="top",v="end")):"bottom"===t?(d+u<=0?(g="right",v="start"):d+u-s<=0&&(g="bottom",v="start"),d>=l?(g="left",v="start"):d+s>=l&&(g="bottom",v="end")):"left"===t?(f+m<=0?(g="bottom",v="end"):f+m-p<=0&&(g="left",v="start"),f>=h?(g="top",v="end"):f+p>=h&&(g="left",v="end")):"right"===t&&(f+m<=0?(g="bottom",v="start"):f+m-p<=0&&(g="right",v="start"),f>=h?(g="top",v="start"):f+p>=h&&(g="right",v="end"));g?(a.classList.add("gleap-tour-popover-arrow-side-".concat(g)),a.classList.add("gleap-tour-popover-arrow-align-".concat(v))):a.classList.add("gleap-tour-popover-arrow-none")}(u,I,e)}}return function(){function e(){n("allowClose")&&f()}function o(){var e=c("activeIndex"),t=n("steps")||[];if(void 0!==e){var o=e+1;t[o]?h(o):f()}}function r(){var e=c("activeIndex"),t=n("steps")||[];if(void 0!==e){var o=e-1;t[o]?h(o):f()}}function i(){var e;if(!c("__transitionCallback")){var t=c("activeIndex"),o=c("__activeStep"),i=c("__activeElement");if("CLICK"!==o.mode)if(void 0!==t&&void 0!==o)if(void 0!==c("activeIndex")){var a=(null==(e=o.popover)?void 0:e.onPrevClick)||n("onPrevClick");if(a)return a(i,o,{config:n(),state:c()});r()}}}function a(){var e;if(!c("__transitionCallback")){var t=c("activeIndex"),r=c("__activeStep"),i=c("__activeElement");if("CLICK"!==r.mode&&void 0!==t&&void 0!==r){var a=(null==(e=r.popover)?void 0:e.onNextClick)||n("onNextClick");if(a)return a(i,r,{config:n(),state:c()});o()}}}function s(){c("isInitialized")||(l("isInitialized",!0),document.body.classList.add("gleap-tour-active",n("animate")?"gleap-tour-fade":"gleap-tour-simple"),window.addEventListener("keyup",x,!1),window.addEventListener("keydown",k,!1),window.addEventListener("resize",w),window.addEventListener("scroll",w),p("overlayClick",e),p("escapePress",e),p("arrowLeftPress",i),p("arrowRightPress",a))}function h(){var e,t,o,r,i,a,s,c,u=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,d=n("steps");if(!d)return console.error("No steps to drive through"),void f();if(d[u]){l("__activeOnDestroyed",document.activeElement),l("activeIndex",u);var p=d[u],m=d[u+1],g=d[u-1],v=(null==(e=p.popover)?void 0:e.doneBtnText)||n("doneBtnText")||"Done",b=n("allowClose"),w=void 0!==(null==(t=p.popover)?void 0:t.showProgress)?null==(o=p.popover)?void 0:o.showProgress:n("showProgress"),k=((null==(r=p.popover)?void 0:r.progressText)||n("progressText")||"{{current}} of {{total}}").replace("{{current}}","".concat(u+1)).replace("{{total}}","".concat(d.length)),x=(null==(i=p.popover)?void 0:i.showButtons)||n("showButtons"),S=["next","previous"].concat(qf(b?["close"]:[])).filter((function(e){return!(null==x?void 0:x.length)||x.includes(e)})),C=(null==(a=p.popover)?void 0:a.onNextClick)||n("onNextClick"),I=(null==(s=p.popover)?void 0:s.onPrevClick)||n("onPrevClick"),O=(null==(c=p.popover)?void 0:c.onCloseClick)||n("onCloseClick");y(Vf(Vf({},p),{},{popover:Vf({showButtons:S,nextBtnText:m?void 0:v,disableButtons:qf(g?[]:["previous"]),showProgress:w,progressText:k,onNextClick:C||function(){m?h(u+1):f()},onPrevClick:I||function(){h(u-1)},onCloseClick:O||function(){f()}},(null==p?void 0:p.popover)||{})}))}else f()}function f(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=c("__activeElement"),o=c("__activeStep"),r=c("__activeOnDestroyed"),i=n("onDestroyStarted");if(e&&i){i(!t||"gleap-tour-dummy-element"===(null==t?void 0:t.id)?void 0:t,o,{config:n(),state:c()})}else{var a,s=(null==o?void 0:o.onDeselected)||n("onDeselected"),l=n("onDestroyed");if(document.body.classList.remove("gleap-tour-active","gleap-tour-fade","gleap-tour-simple"),window.removeEventListener("keyup",x),window.removeEventListener("resize",w),window.removeEventListener("scroll",w),function(){var e,t=c("popover");t&&(null==(e=t.wrapper.parentElement)||e.removeChild(t.wrapper))}(),function(){var e;null==(e=document.getElementById("gleap-tour-dummy-element"))||e.remove(),document.querySelectorAll(".gleap-tour-active-element").forEach((function(e){e.classList.remove("gleap-tour-active-element","gleap-tour-no-interaction"),e.removeAttribute("aria-haspopup"),e.removeAttribute("aria-expanded"),e.removeAttribute("aria-controls")}))}(),(a=c("__overlaySvg"))&&a.remove(),d={},u(),t&&o){var p="gleap-tour-dummy-element"===t.id;s&&s(p?void 0:t,o,{config:n(),state:c()}),l&&l(p?void 0:t,o,{config:n(),state:c()})}r&&r.focus()}}return t(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),{isActive:function(){return c("isInitialized")||!1},refresh:w,drive:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;s(),h(e)},setConfig:t,setSteps:function(e){u(),t(Vf(Vf({},n()),{},{steps:e}))},getConfig:n,getState:c,getActiveIndex:function(){return c("activeIndex")},isFirstStep:function(){return 0===c("activeIndex")},isLastStep:function(){var e=n("steps")||[],t=c("activeIndex");return void 0!==t&&t===e.length-1},getActiveStep:function(){return c("activeStep")},getActiveElement:function(){return c("activeElement")},getPreviousElement:function(){return c("previousElement")},getPreviousStep:function(){return c("previousStep")},moveNext:o,movePrevious:r,moveTo:function(e){(n("steps")||[])[e]?h(e):f()},hasNextStep:function(){var e=n("steps")||[],t=c("activeIndex");return void 0!==t&&e[t+1]},hasPreviousStep:function(){var e=n("steps")||[],t=c("activeIndex");return void 0!==t&&e[t-1]},highlight:function(e){s(),y(Vf(Vf({},e),{},{popover:e.popover?Vf({showButtons:[],showProgress:!1,progressText:""},e.popover):void 0}))},destroy:function(){f(!1)}}}}();const Kf=Zf;function Yf(e){return Yf="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Yf(e)}function Xf(){Xf=function(){return t};var e,t={},n=Object.prototype,o=n.hasOwnProperty,r=Object.defineProperty||function(e,t,n){e[t]=n.value},i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",s=i.asyncIterator||"@@asyncIterator",l=i.toStringTag||"@@toStringTag";function c(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,n){return e[t]=n}}function u(e,t,n,o){var i=t&&t.prototype instanceof v?t:v,a=Object.create(i.prototype),s=new A(o||[]);return r(a,"_invoke",{value:O(e,n,s)}),a}function d(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=u;var p="suspendedStart",h="suspendedYield",f="executing",m="completed",g={};function v(){}function y(){}function b(){}var w={};c(w,a,(function(){return this}));var k=Object.getPrototypeOf,x=k&&k(k(M([])));x&&x!==n&&o.call(x,a)&&(w=x);var S=b.prototype=v.prototype=Object.create(w);function C(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function I(e,t){function n(r,i,a,s){var l=d(e[r],e,i);if("throw"!==l.type){var c=l.arg,u=c.value;return u&&"object"==Yf(u)&&o.call(u,"__await")?t.resolve(u.__await).then((function(e){n("next",e,a,s)}),(function(e){n("throw",e,a,s)})):t.resolve(u).then((function(e){c.value=e,a(c)}),(function(e){return n("throw",e,a,s)}))}s(l.arg)}var i;r(this,"_invoke",{value:function(e,o){function r(){return new t((function(t,r){n(e,o,t,r)}))}return i=i?i.then(r,r):r()}})}function O(t,n,o){var r=p;return function(i,a){if(r===f)throw new Error("Generator is already running");if(r===m){if("throw"===i)throw a;return{value:e,done:!0}}for(o.method=i,o.arg=a;;){var s=o.delegate;if(s){var l=E(s,o);if(l){if(l===g)continue;return l}}if("next"===o.method)o.sent=o._sent=o.arg;else if("throw"===o.method){if(r===p)throw r=m,o.arg;o.dispatchException(o.arg)}else"return"===o.method&&o.abrupt("return",o.arg);r=f;var c=d(t,n,o);if("normal"===c.type){if(r=o.done?m:h,c.arg===g)continue;return{value:c.arg,done:o.done}}"throw"===c.type&&(r=m,o.method="throw",o.arg=c.arg)}}}function E(t,n){var o=n.method,r=t.iterator[o];if(r===e)return n.delegate=null,"throw"===o&&t.iterator.return&&(n.method="return",n.arg=e,E(t,n),"throw"===n.method)||"return"!==o&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+o+"' method")),g;var i=d(r,t.iterator,n.arg);if("throw"===i.type)return n.method="throw",n.arg=i.arg,n.delegate=null,g;var a=i.arg;return a?a.done?(n[t.resultName]=a.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,g):a:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,g)}function T(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function L(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function A(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(T,this),this.reset(!0)}function M(t){if(t||""===t){var n=t[a];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,i=function n(){for(;++r=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var l=o.call(a,"catchLoc"),c=o.call(a,"finallyLoc");if(l&&c){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&o.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),L(n),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var o=n.completion;if("throw"===o.type){var r=o.arg;L(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,o){return this.delegate={iterator:M(t),resultName:n,nextLoc:o},"next"===this.method&&(this.arg=e),g}},t}function $f(e,t){for(var n=0;n=0&&t.productTourData&&t.productTourData.steps){var e=t.productTourData.steps[t.currentActiveIndex];e&&e.selector&&""!==e.selector&&t.updatePointerPosition(document.querySelector(e.selector),e)}})))}var t,n,o;return t=e,n=[{key:"disable",value:function(){this.disabled=!0,this.cleanup()}},{key:"startWithConfig",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;"undefined"!=typeof window&&(this.productTourId||this.disabled||(this.productTourId=e,this.productTourData=t,this.currentActiveIndex=0,this.onCompleteCallback=n,this.start()))}},{key:"storeUncompletedTour",value:function(){if("undefined"!=typeof window)if(this.productTourId&&this.productTourData)try{var e=JSON.parse(JSON.stringify({tourData:this.productTourData,tourId:this.productTourId}));e.tourData.steps=e.tourData.steps.slice(this.currentActiveIndex||0,e.tourData.steps.length),localStorage.setItem(nm,JSON.stringify(e))}catch(t){}else localStorage.removeItem(nm)}},{key:"attachScrollListeners",value:function(e,t){var n=this;if("undefined"!=typeof window&&e){var o=function(e){if("undefined"!=typeof window){for(var t=[],n=e.parentElement;n;){var o=window.getComputedStyle(n);("auto"===o.overflowY||"scroll"===o.overflowY)&&n.scrollHeight>n.clientHeight&&t.push(n),n=n.parentElement}return t}}(e);o.push(window),o.forEach((function(o){var r=function(){clearTimeout(n._scrollDebounceTimer),n._scrollDebounceTimer=setTimeout((function(){n.updatePointerPosition(e,t)}),150)};o.addEventListener("scroll",r,{passive:!0}),n._scrollListeners.push({el:o,handler:r})}))}}},{key:"removeScrollListeners",value:function(){"undefined"!=typeof window&&(this._scrollListeners&&this._scrollListeners.length>0&&(this._scrollListeners.forEach((function(e){var t=e.el,n=e.handler;t.removeEventListener("scroll",n)})),this._scrollListeners=[]),this._scrollDebounceTimer&&(clearTimeout(this._scrollDebounceTimer),this._scrollDebounceTimer=null))}},{key:"updatePointerPosition",value:function(e,t){var n,o=this;if("undefined"!=typeof window)try{var r=this._pointerContainer||document.getElementById(om);if(!r)return;if(!e)return r.style.position="fixed",r.style.left="50%",r.style.top="50%",r.style.transform="translate(-50%, -50%)",function(e){if("undefined"!=typeof window){var t=e-window.innerHeight/2;window.scrollTo({top:t,behavior:"smooth"})}}(window.innerHeight/2),this.removeScrollListeners(),this._currentAnchor=null,void(this._currentStep=null);n=e,"undefined"!=typeof window&&n&&n.scrollIntoView({behavior:"smooth",block:"center",inline:"center"});var i=0;!function n(){if(function(e){if("undefined"!=typeof window){var t=e.getBoundingClientRect();return t.top>=0&&t.left>=0&&t.bottom<=window.innerHeight&&t.right<=window.innerWidth}}(e)||i>=20){var a=e.getBoundingClientRect(),s=a.left+a.width/2,l=a.top+a.height/2+10;r.style.position="fixed",r.style.left="".concat(s,"px"),r.style.top="".concat(l,"px"),r.style.transform="translate(-50%, -50%)";var c=350;c>window.innerWidth-40&&(c=window.innerWidth-40),s+c>window.innerWidth-20?r.classList.add("copilot-pointer-container-right"):r.classList.remove("copilot-pointer-container-right"),o._currentAnchor===e&&o._currentStep===t||(o.removeScrollListeners(),o._currentAnchor=e,o._currentStep=t,o.attachScrollListeners(e,t))}else i++,setTimeout(n,100)}()}catch(a){}}},{key:"cleanup",value:function(){var e=this;"undefined"!=typeof window&&(document.body.classList.add("gl-copilot-fade-out"),this.currentAudio&&this.currentAudio.pause(),setTimeout((function(){if(e._pointerContainer)e._pointerContainer.remove(),e._pointerContainer=null;else{var t=document.getElementById(om);t&&t.remove()}var n=document.getElementById(im);n&&n.remove();var o=document.getElementById(rm);o&&o.remove(),document.body.classList.remove("gl-copilot-fade-out")}),800),this.productTourId=void 0,this.productTourData=void 0,this.removeScrollListeners())}},{key:"toggleAudio",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.audioMuted=e,this.currentAudio&&(this.currentAudio.muted=this.audioMuted),document.querySelector(".".concat(im,"-mute")).innerHTML=p(this.audioMuted?"unmute":"mute")}},{key:"setupCopilotTour",value:function(){var e,t,n,o,r,i,a=this;if("undefined"!=typeof window){var s,l,c=null!==(e=null===(t=dt.getInstance().flowConfig)||void 0===t?void 0:t.color)&&void 0!==e?e:"#485BFF",u=d(c),h=document.getElementById(rm);h||((h=document.createElement("style")).id=rm,h.type="text/css",h.textContent="\n #".concat(om," {\n position: absolute;\n top: 0;\n left: 0;\n display: flex;\n align-items: flex-start;\n pointer-events: none;\n z-index: 2147483610;\n transition: all 0.5s ease;\n }\n .").concat(om,"-clickmode {\n cursor: pointer;\n pointer-events: all !important;\n }\n .").concat(om,"-clickmode #copilot-info-bubble-content {\n display: flex !important;\n }\n .").concat(om,"-clickmode svg {\n display: none !important;\n }\n #").concat(om," svg {\n width: 20px;\n height: auto;\n fill: none;\n }\n #copilot-info-bubble {\n position: relative;\n }\n #copilot-info-bubble-content-container {\n position: absolute;\n top: 0px;\n left: 0px;\n min-width: min(300px, 80vw);\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n }\n .").concat(om,"-right #copilot-info-bubble-content-container {\n left: auto !important;\n right: 0px !important;\n align-items: flex-end;\n }\n .").concat(om,"-right .copilot-info-bubble-content {\n margin-right: 5px;\n }\n .").concat(om,"-right svg {\n transform: scaleX(-1);\n }\n #copilot-info-bubble-content svg {\n width: 16px;\n height: 16px;\n display: inline-block !important;\n margin-left: 5px;\n }\n #copilot-info-bubble-content {\n margin-top: 18px;\n margin-left: 5px;\n padding: 10px 15px;\n border-radius: 20px;\n background-color: black;\n color: white;\n font-family: Arial, sans-serif;\n font-size: 14px;\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);\n max-width: 100%;\n white-space: normal;\n overflow-wrap: break-word;\n word-break: normal;\n hyphens: none;\n }\n .").concat(om,"-right #copilot-info-bubble-content {\n margin-top: 30px;\n margin-left: 0px;\n margin-right: 5px;\n }\n .click-wave {\n position: absolute;\n width: 34px;\n height: 34px;\n border-radius: 50%;\n background-color: rgba(0, 0, 0, 0.5);\n pointer-events: none;\n z-index: 2147483611;\n animation: click-wave-animation 0.8s ease forwards;\n }\n @keyframes click-wave-animation {\n 0% {\n transform: scale(0.2);\n opacity: 1;\n }\n 100% {\n transform: scale(2);\n opacity: 0;\n }\n }\n @keyframes slideInFromTop {\n 0% {\n transform: translateY(-100%);\n opacity: 0;\n }\n 100% {\n transform: translateY(0);\n opacity: 1;\n }\n }\n .").concat(im," {\n position: fixed;\n top: 20px;\n right: 20px;\n z-index: 2147483610;\n background: #fff;\n padding: 6px;\n border-radius: 10px;\n box-shadow: 0 0 20px 0 #C294F2;\n display: flex;\n align-items: center;\n gap: 8px;\n border: 1px solid rgba(192, 146, 242, 0.5);\n animation: slideInFromTop 0.5s ease-out forwards;\n }\n .").concat(im," span {\n font-size: 13px;\n color: #000;\n font-family: sans-serif;\n }\n .").concat(im,"-avatar {\n width: 24px;\n height: 24px;\n flex-shrink: 0;\n border-radius: 6px;\n }\n .").concat(im,"-mute {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n .").concat(im,"-mute svg {\n width: 20px;\n height: auto;\n cursor: pointer;\n animation: pulsate 2s infinite;\n }\n .").concat(im,"-mute svg:hover {\n opacity: 0.8;\n }\n .").concat(im,"-dismiss {\n display: flex;\n align-items: center;\n justify-content: center;\n padding-right: 3px;\n }\n .").concat(im,"-dismiss svg {\n width: 15px;\n height: auto;\n cursor: pointer;\n }\n .").concat(im,"-dismiss svg:hover {\n opacity: 0.8;\n }\n @keyframes pulsate {\n 0% {\n transform: scale(1);\n opacity: 1;\n }\n 50% {\n transform: scale(1.1);\n opacity: 0.8;\n }\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n }\n @keyframes glCoFadeIn {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n @keyframes glCoFadeOut {\n 0% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n }\n\n .gleap-audio-unmute-modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n background-color: rgba(0, 0, 0, 0.5);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 2147483620;\n }\n\n .gleap-audio-unmute-modal {\n background-color: #fff;\n padding: 20px;\n border-radius: 8px;\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);\n text-align: center;\n max-width: 90%;\n width: 400px;\n }\n\n .gleap-audio-unmute-modal p {\n margin-bottom: 20px;\n font-size: 16px;\n line-height: 22px;\n font-weight: normal;\n }\n\n .gleap-audio-unmute-button {\n background: ").concat(c,";\n color: ").concat(u,";\n outline: none;\n border: none;\n padding: 10px 14px;\n border-radius: 12px;\n font-size: 14px;\n font-weight: bold;\n cursor: pointer;\n }\n\n .gleap-audio-unmute-button:hover {\n opacity: 0.8;\n }\n\n .gleap-tour-continue-button {\n color: ").concat(c,";\n text-decoration: none;\n cursor: pointer;\n font-size: 14px;\n font-weight: bold;\n border: none;\n background: none;\n padding: 0;\n margin: 0;\n margin-left: 20px;\n }\n\n .gleap-tour-continue-button:hover {\n opacity: 0.8;\n }\n\n body.gl-copilot-fade-out::before,\n body.gl-copilot-fade-out::after,\n body.gl-copilot-fade-out #").concat(im," {\n animation: glCoFadeOut 0.8s ease-out forwards;\n }\n ").concat(null===(s=null===(l=this.productTourData)||void 0===l?void 0:l.playVoice)||void 0===s||s?"":"\n .".concat(im,"-mute {\n display: none;\n }\n "),"\n ").concat(this.productTourData.gradient?'body::before {\n content: "";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n box-sizing: border-box;\n border: 18px solid transparent;\n filter: blur(25px);\n border-image-slice: 1;\n border-image-source: linear-gradient(45deg, #ED5587, #FBE6A9, #a6e3f8, #C294F2);\n animation: glCoFadeIn 1.5s ease-out forwards;\n }\n \n body::after {\n content: "";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n opacity: 0.5;\n box-sizing: border-box;\n border: 3px solid transparent;\n border-image-slice: 1;\n border-image-source: linear-gradient(45deg, #ED5587, #FBE6A9, #a6e3f8, #C294F2);\n animation: glCoFadeIn 1.5s ease-out forwards;\n }':'body::after {\n content: "";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n opacity: 0;\n }',"\n "),document.head.appendChild(h));var f=document.createElement("div");f.id=om,f.style.opacity=0,this._pointerContainer=f;var m=document.createElementNS("http://www.w3.org/2000/svg","svg");m.setAttribute("viewBox","0 0 380 476"),m.innerHTML='';var g=document.createElement("div");g.id="copilot-info-bubble",g.innerHTML="
";var v=document.createElement("div");v.id=im,v.classList.add(im),v.innerHTML='\n \n ').concat(null===(o=this.productTourData)||void 0===o?void 0:o.kaiSlug,'\n
\n ').concat(p(this.audioMuted?"unmute":"mute"),"\n
\n ").concat(null!==(r=this.productTourData)&&void 0!==r&&r.allowClose?'
\n ').concat(p("dismiss"),"\n
"):"","\n "),document.body.appendChild(v),document.querySelector(".".concat(im,"-mute")).addEventListener("click",(function(){a.toggleAudio(!a.audioMuted)})),null!==(i=this.productTourData)&&void 0!==i&&i.allowClose&&document.querySelector(".".concat(im,"-dismiss")).addEventListener("click",(function(){a.completeTour(!1)})),f.appendChild(m),f.appendChild(g),document.body.appendChild(f)}}},{key:"start",value:function(){var e=this;if("undefined"!=typeof window&&!this.disabled){var t=this.productTourData;t&&function(){return am.apply(this,arguments)}().then((function(n){e.audioMuted=!n,e.setupCopilotTour(),e.audioMuted&&null!=t&&t.showUnmuteModal?e.showAudioUnmuteModal():setTimeout((function(){e.renderNextStep()}),1500)}))}}},{key:"showAudioUnmuteModal",value:function(){var e,t,n,o=this,r=document.createElement("div");r.classList.add("gleap-audio-unmute-modal-overlay");var i=document.createElement("div");i.classList.add("gleap-audio-unmute-modal");var a=document.createElement("p");a.textContent=null===(e=this.productTourData)||void 0===e?void 0:e.unmuteModalTitle,i.appendChild(a);var s=document.createElement("button");s.classList.add("gleap-audio-unmute-button"),s.textContent=null===(t=this.productTourData)||void 0===t?void 0:t.unmuteModalButton,s.addEventListener("click",(function(){o.toggleAudio(!1),r.parentNode&&r.parentNode.removeChild(r),setTimeout((function(){o.renderNextStep()}),1e3)})),i.appendChild(s);var l=document.createElement("button");l.classList.add("gleap-tour-continue-button"),l.textContent=null===(n=this.productTourData)||void 0===n?void 0:n.unmuteModalContinue,l.addEventListener("click",(function(){r.parentNode&&r.parentNode.removeChild(r),setTimeout((function(){o.renderNextStep()}),1e3)})),i.appendChild(l),r.appendChild(i),document.body.appendChild(r)}},{key:"completeTour",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];"undefined"!=typeof window&&(this.cleanup(),this.onCompleteCallback&&this.onCompleteCallback(e))}},{key:"renderNextStep",value:function(){var e=this;if("undefined"!=typeof window&&!this.disabled){var t=this,n=this.productTourData.steps;if(this.currentActiveIndex>=n.length)setTimeout((function(){e.completeTour()}),500);else{var o=n[this.currentActiveIndex],r=function(n){if(e._pointerContainer.style.display="flex",o.selector&&o.selector.length>0&&!n)e.completeTour(!1);else{var r=function(){if("INPUT"===o.mode&&n){var e,r=function(){document.querySelector("#".concat(om)).classList.remove("copilot-pointer-container-clickmode"),n.classList.remove("gleap-input-highlight"),document.getElementById(om).style.display="none",t.currentActiveIndex++,t.storeUncompletedTour(),t.renderNextStep()};if("default"===(null!==(e=o.inputType)&&void 0!==e?e:"default")){var i=function e(t){var o;if(0!==(null==t||null===(o=t.target)||void 0===o||null===(o=o.value)||void 0===o?void 0:o.length)){var i=document.getElementById("copilot-info-bubble-content");i&&(i.innerHTML="".concat(gh.translateText("next"),' \n \n'),i.addEventListener("click",r,{once:!0}),n.classList.add("gleap-input-highlight"),document.querySelector("#".concat(om)).classList.add("copilot-pointer-container-clickmode"),n.removeEventListener("input",e))}};n.addEventListener("input",i,{once:!1}),n.hasAttribute("contenteditable")&&n.addEventListener("keyup",i,{once:!1}),n.addEventListener("blur",(function(){n.focus()}),{once:!0}),n.focus()}else{var a,s=null!==(a=o.inputValue)&&void 0!==a?a:"",l=0;!function e(){l0})).length;return Math.ceil(t/3.6)+1}}(i),s=function(){e.currentAudio=void 0,setTimeout((function(){r()}),1e3*a)};o.voice&&o.voice.length>0?(e.currentAudio=new Audio(o.voice),e.audioMuted&&(e.currentAudio.muted=!0),e.currentAudio.addEventListener("ended",(function(){setTimeout((function(){r()}),1e3)})),e.currentAudio.play().then((function(){})).catch((function(e){s()}))):s()}},i=o.selector?function(e){if("undefined"!=typeof window){var t=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:5e3)/100,n=0;return new Promise((function(o,r){var i=setInterval((function(){var a=document.querySelector(e);a?(clearInterval(i),o(a)):n>=t&&(clearInterval(i),r(new Error("Element not found for selector: ".concat(e)))),n++}),100)}))}}(o.selector):Promise.resolve(null);i.then(r).catch((function(){return r(null)}))}}}}],o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],n&&$f(t.prototype,n),o&&$f(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function lm(e){return lm="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},lm(e)}function cm(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function um(e){for(var t=1;t2&&void 0!==arguments[2]?arguments[2]:0,r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(!this.productTourId&&!this.disabled)if(this.productTourId=e,this.productTourData=t,this.currentActiveIndex=0,r)this.start();else{var i=this;et.getInstance().validateProductTour(e).then((function(){return o>0?setTimeout((function(){i.start()}),o):n.start()})).catch((function(e){console.log("Product tour is not live. Cleaning up..."),console.error(e),i.onComplete(!1)}))}}},{key:"onComplete",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t={tourId:this.productTourId};e?(xn.notifyEvent("productTourCompleted",t),_m.trackEvent("tour-".concat(this.productTourId,"-completed"),t)):(xn.notifyEvent("productTourQuit",t),_m.trackEvent("tour-".concat(this.productTourId,"-quit"),t)),this.gleapTourObj&&this.gleapTourObj.destroy(),this.gleapTourObj=void 0,this.productTourData=void 0,this.productTourId=void 0,this.currentActiveIndex=void 0,this.clearUncompletedTour()}},{key:"loadUncompletedTour",value:function(){try{var e=JSON.parse(localStorage.getItem(fm));if(null!=e&&e.tourData&&null!=e&&e.tourId)return e}catch(t){}return null}},{key:"storeUncompletedTour",value:function(){if(this.productTourId&&this.productTourData)try{var e=JSON.parse(JSON.stringify({tourData:this.productTourData,tourId:this.productTourId}));e.tourData.steps=e.tourData.steps.slice(this.currentActiveIndex||0,e.tourData.steps.length),localStorage.setItem(fm,JSON.stringify(e))}catch(t){}else this.clearUncompletedTour()}},{key:"clearUncompletedTour",value:function(){try{localStorage.removeItem(fm)}catch(e){}}},{key:"start",value:function(){var e=this,t=this.productTourData;if(t){if("cobrowse"===t.tourType)return sm.getInstance().startWithConfig(this.productTourId,t,(function(t){e.onComplete(t)}));this.unmuted=!1;for(var n=t.steps,o=this,r=[],i=0;i\n \n
').concat(p("unmute"),"
\n ");else{var d="";t.sender&&t.sender.firstName&&(u=!0,d='
\n
\n
').concat(t.sender.firstName,"
\n
")),c="".concat(d,'
').concat(a.message,"
")}var h={disableActiveInteraction:!s&&!l,mode:a.mode,popover:um({description:c,popoverClass:"gleap-tour-popover-".concat(a.type," ").concat(!u&&"gleap-tour-popover-no-sender"," ").concat(t.allowClose&&"gleap-tour-popover-can-close")},s?{showButtons:[]}:{})};a.selector&&a.selector.length>0&&(h.element=a.selector),r.push(h)}var f=["next","close"];t.backButton&&f.push("previous"),this.gleapTourObj=Kf(pm(pm(pm(pm(pm(pm(pm(pm(pm(pm({showProgress:!0,allowKeyboardControl:!1,steps:r},"showProgress",n.length>1),"allowClose",t.allowClose),"nextBtnText",t.nextText),"doneBtnText",t.doneText),"prevBtnText",t.prevText),"showButtons",f),"onHighlightStarted",(function(t,n,o){var r;e.currentActiveIndex=null==o||null===(r=o.state)||void 0===r?void 0:r.activeIndex,e.storeUncompletedTour()})),"onElementNotFound",(function(t){document.removeEventListener("click",m),e.onComplete(!1)})),"onDestroyStarted",(function(){e.gleapTourObj.hasNextStep()?e.onComplete(!1):e.onComplete(!0),document.removeEventListener("click",m)})),"onPopoverRender",(function(t){if(t)for(var n=document.querySelectorAll(".gleap-tour-popover-description img, .gleap-tour-popover-description video"),r=function(){setTimeout((function(){e.gleapTourObj.refresh()}),500),setTimeout((function(){e.gleapTourObj.refresh()}),750)},i=0;ie.length)&&(t=e.length);for(var n=0,o=new Array(t);n1&&void 0!==arguments[1]?arguments[1]:"";return gh.translateText(e)||t}},{key:"_translateWithVars",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return gh.translateTextWithVars(e,t)||n}},{key:"getCheckIcon",value:function(){return'\n \n '}},{key:"loadChecklist",value:function(){if(this._isSessionReady&&this._networkManager){var e=this.getAttribute("checklistId");e?(this.activeStep=-1,this._initialActiveSet=!1,this.validateChecklist(e)):(this.renderResponse(),this.checklistData=null,this._hasLoaded=!1)}}},{key:"getQueryParams",value:function(){var e=this._getGleapSessionInstance();if(null==e||!e.session)return"";var t=e.session,n="en";try{void 0!==gh&&(n=gh.getInstance().getActiveLanguage()||"en")}catch(o){}return"gleapId=".concat(t.gleapId||"","&gleapHash=").concat(t.gleapHash||"","&lang=").concat(n)}},{key:"makeRequest",value:function(e,t,n,o){var r=this._getGleapSessionInstance();if(null!=r&&r.session){var i=new XMLHttpRequest;i.open(e,t);try{r.injectSession(i)}catch(a){}n&&i.setRequestHeader("Content-Type","application/json;charset=UTF-8"),i.onreadystatechange=function(){4===i.readyState&&o(i)},i.onerror=function(){o(i)},i.send(n?JSON.stringify(n):null)}else o({readyState:4,status:0,responseText:"Session unavailable",_isMock:!0})}},{key:"validateChecklist",value:function(e){var t=this;if(this._isSessionReady&&this._networkManager){this.checklistData=null,this._hasLoaded=!1,this.renderResponse();var n=this.getAttribute("sharedKey");this._networkManager.validateChecklist(e,n).then((function(e){t.isConnected&&t._isSessionReady&&e&&t.fetchChecklist(e)})).catch((function(e){t.renderResponse(),t.checklistData=null,t._hasLoaded=!1}))}}},{key:"fetchChecklist",value:function(e){var t=this;this._isSessionReady&&this._networkManager&&(this._isInitialLoad=!this._hasLoaded,this._networkManager.fetchChecklist(e).then((function(e){var n;if(!t.isConnected||!t._isSessionReady||!e)return t._hasLoaded=!1,t.checklistData=null,void t._checkSessionAndLoad();if(t.checklistData=e,t._hasLoaded=!0,"done"!==e.status){if(t._isInitialLoad&&!t._initialActiveSet){var o,r=(null===(o=e.outbound)||void 0===o||null===(o=o.config)||void 0===o?void 0:o.steps)||[],i=e.completedSteps||[],a=r.findIndex((function(e){return!i.includes(e.id)}));t.activeStep=a>=0?a:-1,-1!==t.activeStep&&(t._initialActiveSet=!0)}t.renderChecklist(t.checklistData),xn.notifyEvent("checklist-loaded",{checklistId:t.checklistData.id,outboundId:null===(n=t.checklistData.outbound)||void 0===n?void 0:n.id,completedSteps:t.checklistData.completedSteps,status:t.checklistData.status,data:t.checklistData})}else t.renderResponse()})).catch((function(e){t.renderResponse(),t.checklistData=null,t._hasLoaded=!1})))}},{key:"updateChecklist",value:function(e,t){var n,o,r=this._getGleapSessionInstance();if(null!=r&&r.session){var i=r.apiUrl;if(i){var a=r.session,s=null!==(n=null==a?void 0:a.gleapId)&&void 0!==n?n:"",l=null!==(o=null==a?void 0:a.gleapHash)&&void 0!==o?o:"",c="en";try{void 0!==gh&&(c=gh.getInstance().getActiveLanguage()||"en")}catch(d){}var u="".concat(i,"/outbound/checklists/").concat(e);t.checkedStep&&(u+="/increment/".concat(t.checkedStep)),u+="?gleapId=".concat(s,"&gleapHash=").concat(l,"&lang=").concat(c),this.makeRequest("PUT",u,t,(function(e){e._isMock||200!==e.status&&e.status}))}}}},{key:"handleChecklistUpdate",value:function(e){if(this._hasLoaded&&this.checklistData){var t=e.detail;if(t&&t.id===this.checklistData.id){var n,o=vm(this.checklistData.completedSteps||[]),r=!1,i=!1,a=this.activeStep;if(t.completedSteps&&JSON.stringify(t.completedSteps)!==JSON.stringify(o)&&(this.checklistData.completedSteps=vm(t.completedSteps),r=!0,-1!==a)){var s,l=null===(s=this.checklistData.outbound)||void 0===s||null===(s=s.config)||void 0===s||null===(s=s.steps)||void 0===s||null===(s=s[a])||void 0===s?void 0:s.id;l&&this.checklistData.completedSteps.includes(l)&&!o.includes(l)&&(i=!0)}if(t.status&&t.status!==this.checklistData.status&&(this.checklistData.status=t.status,r=!0),i){for(var c,u=(null===(c=this.checklistData.outbound)||void 0===c||null===(c=c.config)||void 0===c?void 0:c.steps)||[],d=-1,p=a+1;p1&&void 0!==arguments[1]?arguments[1]:"checklist-floating",r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=(null===(t=e.config)||void 0===t?void 0:t.steps)||[],a=(null===(n=this.checklistData)||void 0===n?void 0:n.completedSteps)||[],s=0;if(this.progressbarEnabled&&i.length>0){var l=i.length,c=a.length;s=l>0?c/l*100:0}var u,d,p=i.find((function(e){return!a.includes(e.id)})),h=i.length>0?p?p.title||this._translateWithVars("stepDefaultTitle",{index:i.indexOf(p)+1},"Step ".concat(i.indexOf(p)+1)):"":e.subject||"",f=i.length>0?p&&p.description||"":e.message||"";r&&(h=(null===(u=e.config)||void 0===u?void 0:u.successTitle)||"",f=(null===(d=e.config)||void 0===d?void 0:d.successMessage)||"",s=100);var m=2*Math.PI*7,g=m-s/100*m,v="checklist-floating-header"===o,y=v?'\n \n \n ':'\n \n ';return'\n
\n
\n
\n \n \n \n \n
\n
').concat(h,"
\n ").concat(r?"":''.concat(y,""),'\n
\n
').concat(f,"
\n
\n ")}},{key:"renderInfoSection",value:function(e){var t;if(!this.infoEnabled||!e)return"";var n=e.subject||this._translate("checklistDefaultTitle","Checklist"),o=e.message||"",r="";return null!==(t=e.sender)&&void 0!==t&&t.profileImageUrl&&(r='\n
\n ').concat(e.sender.firstName||\n ').concat(e.sender.firstName||"","\n
")),'\n
\n '.concat(n?'
'.concat(n,"
"):"","\n ").concat(o?'
'.concat(o,"
"):"","\n ").concat(r,"\n
")}},{key:"renderProgressSection",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];if(!this.progressbarEnabled||!e.length)return"";var n=e.length,o=t.length,r=n>0?o/n*100:0,i=0;e.forEach((function(e){!t.includes(e.id)&&e.duration>0&&(i+=e.duration)}));var a=this._translateWithVars("taskProgress",{a:o,b:n},"".concat(o," of ").concat(n," done")),s=i>0?this._translateWithVars("aboutMinutes",{a:i},"About ".concat(i," min left")):"";return'\n
\n
'.concat(a,"
\n ").concat(s?'
'.concat(s,"
"):"",'\n
\n
\n
\n
')}},{key:"renderTasks",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return t&&0!==t.length?t.map((function(t,o){var r=n.includes(t.id),i=e.activeStep===o,a=r?''.concat(e.getCheckIcon(),""):''.concat(o+1,""),s=t.title||e._translateWithVars("stepDefaultTitle",{index:o+1},"Step ".concat(o+1)),l=t.description||"",c=t.actionTitle||e._translate("actionDefaultTitle","Action"),u=t.action&&"none"!==t.action?'
\n \n
"):"",d=e._translate("markAsDone","Mark as done"),p=t.allowMarkDone&&!r?'
\n ').concat(e.getCheckIcon(),'\n
').concat(d,"
\n
"):"",h=["checklist-task",r?"checklist-task--done":"",i?"checklist-task--active":""].filter(Boolean).join(" ");return'\n
\n
\n ').concat(a,'\n
').concat(s,'
\n \n \n \n \n \n
\n
\n
\n ').concat(l?'
'.concat(l,"
"):"","\n ").concat(u,"\n ").concat(p,"\n
\n
\n
")})).join(""):"

".concat(this._translate("noStepsDefined","No steps defined."),"

")}},{key:"renderChecklist",value:function(e){var t;if(this._hasLoaded&&e&&e.outbound){var n=e.outbound,o=(null===(t=n.config)||void 0===t?void 0:t.steps)||[],r=e.completedSteps||[],i="";if("done"===e.status||o.length>0&&r.length>=o.length){var a,s,l=(null===(a=n.config)||void 0===a?void 0:a.successTitle)||"",c=(null===(s=n.config)||void 0===s?void 0:s.successMessage)||"";i=this.floatingEnabled?this.renderFloatingLauncher(n,"checklist-floating-launcher",!0):'\n
\n
\n '.concat(this.getCheckIcon(),'\n
\n
').concat(l,'
\n
').concat(c,"
\n
"),-1!==this.activeStep&&(this.activeStep=-1)}else i='\n
\n '.concat(this.floatingEnabled?"":this.renderInfoSection(n),"\n ").concat(this.floatingEnabled?"":this.renderProgressSection(o,r),"\n ").concat(this.floatingEnabled?this.renderFloatingLauncher(n):"",'\n
\n ').concat(this.floatingEnabled?this.renderFloatingLauncher(n,"checklist-floating-header"):"","\n ").concat(this.renderTasks(o,r),"\n
\n
");var u=dt.getInstance().getFlowConfig(),d=u.color?u.color:"#485BFF",p="\n \n ');this.shadowRoot.innerHTML=p+i,this.addTaskEventListeners(),this.floatingEnabled&&this.addFloatingClickListeners(),-1!==this.activeStep&&this.toggleTask(this.activeStep,!0)}else this._checkSessionAndLoad()}},{key:"updateActiveTaskMaxHeight",value:function(){if(-1!==this.activeStep){var e=this.shadowRoot.querySelector('.checklist-task[data-task-index="'.concat(this.activeStep,'"] .checklist-task-body-inner')),t=this.shadowRoot.querySelector('.checklist-task[data-task-index="'.concat(this.activeStep,'"] .checklist-task-body'));if(e&&t){var n=e.offsetHeight;t.style.setProperty("--task-body-active-height","".concat(n,"px"))}}}},{key:"addTaskEventListeners",value:function(){var e=this;this.shadowRoot.querySelectorAll(".checklist-task").forEach((function(t){var n=t.querySelector(".checklist-task-header"),o=parseInt(t.getAttribute("data-task-index"),10);n&&n.addEventListener("click",(function(){var t=e.activeStep===o?-1:o;e.setActiveStep(t)}));var r=t.querySelector(".checklist-task-body-markdone");r&&r.addEventListener("click",(function(t){var n;if(t.stopPropagation(),null!==(n=e.checklistData)&&void 0!==n&&null!==(n=n.outbound)&&void 0!==n&&null!==(n=n.config)&&void 0!==n&&n.steps){var r=e.checklistData.outbound.config.steps[o];if(r){var i=e.activeStep;if(e.checklistData.completedSteps||(e.checklistData.completedSteps=[]),!e.checklistData.completedSteps.includes(r.id)){var a;e.checklistData.completedSteps.push(r.id),xn.notifyEvent("checklist-step-completed",{checklistId:e.checklistData.id,outboundId:null===(a=e.checklistData.outbound)||void 0===a?void 0:a.id,stepId:r.id,stepIndex:o,step:r,completedSteps:e.checklistData.completedSteps,status:e.checklistData.status,data:e.checklistData});var s=e.checklistData.outbound.config.steps,l=-1;if(i===o){for(var c=o+1;c0&&e.checklistData.completedSteps.length>=s.length&&(e.checklistData.status="done",d.status="done",xn.notifyEvent("checklist-completed",{checklistId:e.checklistData.id,outboundId:null===(u=e.checklistData.outbound)||void 0===u?void 0:u.id,completedSteps:e.checklistData.completedSteps,status:e.checklistData.status,data:e.checklistData})),e.updateChecklist(e.checklistData.id,d)}}}}));var i=t.querySelector(".checklist-task-body-action .action-button");i&&i.addEventListener("click",(function(t){var n;if(t.stopPropagation(),null!==(n=e.checklistData)&&void 0!==n&&null!==(n=n.outbound)&&void 0!==n&&null!==(n=n.config)&&void 0!==n&&n.steps&&void 0!==_m){var r=e.checklistData.outbound.config.steps[o];if(r&&r.action&&"none"!==r.action)try{"BOT"===r.action?_m.startBot(r.botId):"CUSTOM_ACTION"===r.action?_m.triggerCustomAction(r.actionBody):"REDIRECT_URL"===r.action?(t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation(),_m.openURL(r.actionBody,!!r.actionOpenInNewTab)):"FEEDBACK_FLOW"===r.action?_m.startFeedbackFlow(r.formId):"NEWS_ARTICLE"===r.action?_m.openNewsArticle(r.articleId):"HELP_ARTICLE"===r.action?_m.openHelpCenterArticle(r.articleId):"CHECKLIST"===r.action&&_m.startChecklist(r.outboundId,!0,null==r?void 0:r.sharedKey)}catch(i){}}}))}))}},{key:"setActiveStep",value:function(e){var t=this,n=this.activeStep;this.activeStep=e;var o=[];-1!==n&&n!==this.activeStep&&o.push({index:n,open:!1}),-1!==this.activeStep&&this.activeStep!==n&&o.push({index:this.activeStep,open:!0}),o.forEach((function(e){var n=e.index,o=e.open;t.toggleTask(n,o)}))}},{key:"toggleTask",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=this.shadowRoot.querySelector('.checklist-task[data-task-index="'.concat(e,'"]'));if(n){var o=n.querySelector(".checklist-task-header");if(o){var r=n.classList.contains("checklist-task--active"),i=null!==t?t:!r;if(i&&!r){n.classList.add("checklist-task--active"),o.setAttribute("aria-expanded","true");var a=n.querySelector(".checklist-task-body-inner");if(a){var s=a.offsetHeight,l=n.querySelector(".checklist-task-body");l&&l.style.setProperty("--task-body-active-height","".concat(s,"px"))}}else!i&&r&&(n.classList.remove("checklist-task--active"),o.setAttribute("aria-expanded","false"))}}}}],r=[{key:"observedAttributes",get:function(){return["checklistId","info","progressbar","dark","floating","sharedKey"]}}],o&&bm(n.prototype,o),r&&bm(n,r),Object.defineProperty(n,"prototype",{writable:!1}),t}(xm(HTMLElement));"undefined"==typeof customElements||customElements.get("gleap-checklist")||customElements.define("gleap-checklist",e)}}();var Dm=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),Rm(this,"initialized",!1),Rm(this,"offlineMode",!1),Rm(this,"disablePageTracking",!1),Rm(this,"disableInAppNotifications",!1),Rm(this,"globalData",{screenRecordingData:null,webReplay:null,snapshotPosition:{x:0,y:0}}),"undefined"!=typeof window&&(Xt.getInstance(),rn.getInstance().start(),pn.getInstance().start(),Hf.getInstance().start())}var t,n,o;return t=e,n=[{key:"isLiveMode",value:function(){if(!0===this.offlineMode)return!1;var e=window.location.hostname;return!(["localhost","127.0.0.1","0.0.0.0","","::1"].includes(e)||e.startsWith("192.168.")||e.startsWith("10.0.")||e.endsWith(".local")||!e.includes("."))}},{key:"softReInitialize",value:function(){Vt.getInstance().destroy(),dt.getInstance().start().then((function(){a.getInstance().refresh(),Mh.getInstance().injectNotificationUI()})).catch((function(e){console.warn("Failed to initialize Gleap.")}))}},{key:"performActions",value:function(t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:"INFO";rn.getInstance().addLog(e,t)}},{key:"initialize",value:function(t){var n=this.getInstance();if(n.initialized)console.warn("Gleap already initialized.");else{n.initialized=!0;try{!function(){try{if("visualViewport"in window&&/iPad|iPhone|iPod/.test(navigator.userAgent)){var e=function(){try{var e=document.querySelector(".gleap-frame-container-inner iframe");if(!e)return;window.visualViewport.height1&&void 0!==arguments[1]&&arguments[1];Vt.getInstance().urlHandler(e,t)}},{key:"checkForUrlParams",value:function(){if("undefined"!=typeof window&&window.location.search)try{var t=new URLSearchParams(window.location.search),n=t.get("gleap_widget");n&&n.length>0&&e.open();var o=t.get("gleap_conversation");o&&o.length>0&&("true"===o?e.startConversation(!0):e.startBot(o,!0));var r=t.get("gleap_feedback");r&&r.length>0&&e.startFeedbackFlow(r);var i=t.get("gleap_survey"),a=t.get("gleap_survey_format");i&&i.length>0&&e.showSurvey(i,"survey_full"===a?"survey_full":"survey");var s=t.get("gleap_tour");if(s&&s.length>0){var l=parseInt(t.get("gleap_tour_delay"));isNaN(l)&&(l=2),setTimeout((function(){e.startProductTour(s)}),1e3*l)}}catch(c){}}},{key:"destroy",value:function(){Yp.getInstance().stop(),it.getInstance().stop(),Vt.getInstance().destroy(),a.getInstance().destroy(),Mh.getInstance().clearAllNotifications(!0),et.getInstance().clearSession(0,!1),Bh.getInstance().removeBannerUI(),this.instance=null}},{key:"closeBanner",value:function(){Bh.getInstance().removeBannerUI()}},{key:"closeModal",value:function(){Gh.getInstance().hideModal()}},{key:"setUseCookies",value:function(e){et.getInstance().useCookies=e}},{key:"identify",value:function(e,t,n){return et.getInstance().identifySession(e,k(t),n)}},{key:"updateContact",value:function(e){return et.getInstance().updateSession(k(e))}},{key:"clearIdentity",value:function(){et.getInstance().clearSession()}},{key:"getIdentity",value:function(){return et.getInstance().getSession()}},{key:"isUserIdentified",value:function(){var e=et.getInstance().session;return!!(e&&e.userId&&e.userId.length>0)}},{key:"isOpened",value:function(){return Vt.getInstance().isOpened()}},{key:"hide",value:function(){Vt.getInstance().hideWidget()}},{key:"setMaxNetworkRequests",value:function(e){y.getInstance().setMaxRequests(e)}},{key:"startNetworkLogger",value:function(){y.getInstance().start()}},{key:"setNetworkLogsBlacklist",value:function(e){y.getInstance().setBlacklist(e)}},{key:"setNetworkLogPropsToIgnore",value:function(e){y.getInstance().setFilters(e)}},{key:"setReplayOptions",value:function(e){Yp.getInstance().setOptions(e)}},{key:"close",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];Vt.getInstance().hideWidget(e)}},{key:"open",value:function(){Vt.getInstance().setAppMode("widget"),Vt.getInstance().showWidget()}},{key:"trackEvent",value:function(e,t){it.getInstance().logEvent(e,t)}},{key:"logEvent",value:function(e,t){it.getInstance().logEvent(e,t)}},{key:"preFillForm",value:function(e){var t=k(e);Oh.getInstance().formPreFill=t,Vt.getInstance().sendMessage({name:"prefill-form-data",data:t},!0)}},{key:"on",value:function(e,t){xn.on(e,t)}},{key:"enableShortcuts",value:function(e){e?kh.getInstance().start():kh.getInstance().stop()}},{key:"showFeedbackButton",value:function(e){a.getInstance().toggleFeedbackButton(e)}},{key:"setAppVersionCode",value:function(e){Xt.setAppVersionCode(e)}},{key:"setAppBuildNumber",value:function(e){Xt.setAppBuildNumber(e)}},{key:"setWSApiUrl",value:function(e){et.getInstance().wsApiUrl=e}},{key:"setApiUrl",value:function(e){et.getInstance().apiUrl=e}},{key:"setBannerUrl",value:function(e){Bh.getInstance().setBannerUrl(e)}},{key:"setModalUrl",value:function(e){Gh.getInstance().setModalUrl(e)}},{key:"setFrameUrl",value:function(e){Vt.getInstance().frameUrl=e}},{key:"setTicketAttribute",value:function(e,t){vn.getInstance().setTicketAttribute(e,t)}},{key:"unsetTicketAttribute",value:function(e){vn.getInstance().unsetTicketAttribute(e)}},{key:"clearTicketAttributes",value:function(){vn.getInstance().clearTicketAttributes()}},{key:"attachCustomData",value:function(e){vn.getInstance().attachCustomData(e)}},{key:"setCustomData",value:function(e,t){vn.getInstance().setCustomData(e,t)}},{key:"removeCustomData",value:function(e){vn.getInstance().removeCustomData(e)}},{key:"clearCustomData",value:function(){vn.getInstance().clearCustomData()}},{key:"playSound",value:function(e){Yh.playSound(e)}},{key:"showTabNotificationBadge",value:function(e){var t=Mh.getInstance();t.showNotificationBadge=e,t.updateTabBarNotificationCount()}},{key:"setLanguage",value:function(t){gh.getInstance().setOverrideLanguage(t),e.getInstance().initialized&&setTimeout((function(){e.getInstance().softReInitialize(),e.updateContact({lang:t})}),1e3)}},{key:"registerCustomAction",value:function(e){Ln.registerCustomAction(e)}},{key:"triggerCustomAction",value:function(e){Ln.triggerCustomAction(e)}},{key:"setStyles",value:function(e,t,n){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"#ffffff",r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:20,i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:20,s=arguments.length>6&&void 0!==arguments[6]?arguments[6]:20,l=arguments.length>7&&void 0!==arguments[7]?arguments[7]:a.FEEDBACK_BUTTON_BOTTOM_LEFT;O((function(){!function(e,t,n,o,r,i,s,l){var c=d(e),p=d(n),h=d(r),f=d(t),m="#ffffff"===h,g=u(t,"#ffffff"===f?-35:-15),v=u(r,m?100:-120),y=u(r,m?30:-12),b=u(r,m?80:-30),w=(o=parseInt(o,10),Math.round(1.05*o)),k=Math.round(.8*o),x=Math.round(.6*o),S=Math.round(.4*o),C=Math.round(.25*o),I=57+s;l===a.FEEDBACK_BUTTON_CLASSIC_BOTTOM?I=s+15:(l&&l.includes("CLASSIC")||l===a.FEEDBACK_BUTTON_NONE)&&(I=s);var O='\n .gleap-font, .gleap-font * {\n font-style: normal;\n font-variant-caps: normal;\n font-variant-ligatures: normal;\n font-variant-numeric: normal;\n font-variant-east-asian: normal;\n font-weight: normal;\n font-stretch: normal;\n font-size: 100%;\n line-height: 1;\n font-family: system-ui, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";\n }\n .gleap-input-highlight {\n box-shadow: 0 0 0 3px '.concat(e," !important;\n }\n .gleap-frame-container {\n right: ").concat(i,"px;\n bottom: ").concat(61+s,"px;\n width: calc(100% - 40px);\n max-width: 410px;\n position: fixed;\n z-index: ").concat(2147483631,";\n visibility: visible;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.16);\n border-radius: ").concat(k,"px;\n overflow: hidden;\n animation-duration: .3s;\n animation-fill-mode: both;\n animation-name: gleapFadeInUp;\n user-select: none;\n pointer-events: none;\n transition: max-width 0.3s ease-out;\n }\n\n .gleap-admin-highlight {\n box-shadow: 0px 0px 0px 4px red;\n }\n\n :root {\n --gleap-margin-top: 50px;\n }\n\n .gleap-tooltip-anchor {\n position: relative;\n display: inline-block;\n float: left;\n max-width: 0px;\n width: 17px;\n }\n\n .gleap-tooltip-hotspot {\n position: absolute;\n display: block;\n width: 17px;\n height: 17px;\n cursor: pointer;\n top: 0px;\n left: 0px;\n }\n\n @keyframes gleap-pulse {\n 0% {\n transform: scale(0);\n opacity: 0.25;\n }\n 45% {\n transform: scale(2.5);\n opacity: 0;\n }\n 100% {\n transform: scale(0);\n opacity: 0;\n }\n }\n\n .gleap-tooltip-hotspot-animation {\n position: absolute;\n border-radius: 17px;\n opacity: 0.25;\n display: block;\n width: 17px;\n height: 17px;\n cursor: pointer;\n top: 0px;\n left: 0px;\n animation: gleap-pulse 5s infinite;\n }\n\n .gleap-tooltip-hotspot svg {\n width: 17px;\n height: 17px;\n object-fit: contain;\n display: block;\n }\n\n .gleap-tooltip-inner {\n position: relative;\n overflow: visible;\n font-size: 14px;\n font-weight: normal;\n color: #000;\n line-height: 1.3;\n }\n\n .gleap-tooltip {\n position: absolute;\n background-color: #fff;\n color: #000;\n font-size: 15px;\n line-height: 18px;\n padding: 16px;\n padding-top: 8px;\n padding-bottom: 8px;\n border-radius: 4px;\n max-width: min(350px, 80vw);\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n opacity: 0;\n visibility: hidden;\n transition: opacity 0.2s, visibility 0.2s;\n z-index: ").concat(2147483700,";\n }\n\n .gleap-tooltip a {\n color: ").concat(e,";\n text-decoration: underline;\n display: inline !important;\n margin: 0px !important;\n padding: 0px !important;\n word-break: break-word;\n }\n\n .gleap-tooltip ul {\n padding-left: 16px;\n }\n\n .gleap-tooltip b {\n font-weight: 600;\n }\n\n .gleap-tooltip h2 {\n font-size: 18px;\n line-height: 20px;\n font-weight: 600;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip h3 {\n font-size: 16px;\n line-height: 18px;\n font-weight: 600;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip p {\n padding: 0px;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip img {\n max-width: 100%;\n max-height: 300px;\n width: 100%;\n height: auto;\n object-fit: cover;\n margin-top: 8px;\n margin-bottom: 8px;\n border-radius: 4px;\n }\n\n .gleap-tooltip iframe,\n .gleap-tooltip video {\n max-width: 100%;\n width: 100%;\n height: auto;\n min-height: 200px;\n display: block;\n border: none;\n outline: none;\n padding: 0px;\n margin-top: 8px;\n margin-bottom: 8px;\n border-radius: 4px;\n }\n\n .gleap-tooltip-arrow {\n position: absolute;\n width: 20px;\n height: 20px;\n }\n\n .gleap-tooltip-arrow svg {\n width: 20px;\n height: 20px;\n object-fit: contain;\n }\n\n .gleap-b-frame {\n width: 100%;\n height: 100%;\n border: none;\n pointer-events: auto;\n padding: 0px;\n margin: 0px;\n }\n\n .gleap-b-shown {\n transition: margin 0.3s ease-out;\n margin-top: var(--gleap-margin-top);\n position: relative;\n z-index: 10000;\n }\n\n .gleap-b-f {\n margin-top: 0px;\n }\n\n .gleap-b {\n display: none;\n position: absolute;\n top: calc(-1 * var(--gleap-margin-top));\n left: 0px;\n width: 100vw;\n height: var(--gleap-margin-top);\n z-index: ").concat(2147483699,";\n }\n\n @keyframes gleapSlideIn {\n from {\n top: calc(-1 * var(--gleap-margin-top));\n }\n to {\n top: 10px;\n }\n }\n\n .gleap-b-f .gleap-b {\n position: fixed;\n top: 10px;\n animation: gleapSlideIn .25s ease-out forwards;\n max-width: 800px;\n width: calc(100% - 20px);\n left: 50%;\n z-index: ").concat(2147483699,";\n transform: translateX(-50%);\n border-radius: ").concat(S,"px;\n overflow: hidden;\n box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.15), 0px 5px 5px rgba(0, 0, 0, 0.05);\n }\n\n .gleap-b-shown .gleap-b {\n display: block;\n }\n\n .gleap-image-view {\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n z-index: ").concat(2147483699,";\n background-color: ").concat(h,"cc;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .gleap-image-view-image {\n width: 90%;\n height: auto;\n max-width: 90%;\n max-height: 90%;\n object-fit: contain;\n }\n\n .gleap-image-view-close {\n position: fixed;\n top: 20px;\n right: 20px;\n width: 32px;\n height: 32px;\n opacity: 0.8;\n z-index: ").concat(2147483740,";\n box-shadow: 0px 5px 18px rgba(0, 0, 0, 0.16);\n cursor: pointer;\n }\n\n .gleap-image-view-close:hover {\n opacity: 1;\n }\n\n .gleap-image-view-close svg path {\n fill: ").concat(r,";\n }\n\n [dir=rtl].gleap-frame-container {\n right: auto;\n left: ").concat(i,"px;\n bottom: ").concat(61+s,'px;\n }\n\n .gleap-frame-container--loading iframe {\n opacity: 0;\n }\n\n .gleap-frame-container--loading::before {\n content: " ";\n position: fixed;\n top: 0px;\n left: 0px;\n right: 0px;\n height: 100%;\n max-height: 380px;\n background: linear-gradient(\n 130deg,\n ').concat(g," 0%,\n ").concat(t,' 100%\n );\n }\n \n .gleap-frame-container--loading::after {\n content: " ";\n position: fixed;\n top: 0px;\n left: 0px;\n right: 0px;\n height: 100%;\n height: 100%;\n max-height: 380px;\n background: linear-gradient(\n 180deg,\n transparent 60%,\n ').concat(r,"1A 70%,\n ").concat(r," 100%\n );\n }\n\n .gleap-frame-container--loading-nogradient::before {\n max-height: 340px;\n background: ").concat(t," !important;\n }\n\n .gleap-frame-container--loading-nofade::after {\n display: none !important;\n }\n\n .gleap-frame-container--survey {\n bottom: ").concat(s,"px !important;\n }\n\n .gleap-frame-container--extended {\n max-width: 690px !important;\n }\n\n .gleap-frame-container--survey-full {\n position: fixed;\n top: 0 !important;\n left: 0 !important;\n bottom: 0 !important;\n right: 0 !important;\n width: 100vw !important;\n max-width: 100vw !important;\n height: 100vh;\n height: 100dvh !important;\n background-color: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(6px);\n display: flex !important;\n justify-content: center !important;\n align-items: center !important;\n max-height: 100vh;\n max-height: 100dvh !important;\n border-radius: 0 !important;\n animation-name: none !important;\n }\n\n .gleap-frame-container--survey-full .gleap-frame-container-inner {\n max-width: 640px !important;\n width: calc(100% - 24px);\n border-radius: ").concat(k,"px;\n overflow: hidden;\n }\n\n .gleap-frame-container--classic {\n right: ").concat(i,"px;\n bottom: ").concat(s,"px;\n }\n\n [dir=rtl].gleap-frame-container--classic {\n right: auto;\n left: ").concat(i,"px;\n bottom: ").concat(s,"px;\n }\n\n .gleap-frame-container--no-button {\n bottom: ").concat(s,"px;\n }\n\n [dir=rtl].gleap-frame-container--classic-left {\n bottom: ").concat(s,"px;\n }\n\n .gleap-frame-container--classic-left {\n right: auto;\n left: ").concat(i,"px;\n bottom: ").concat(s,"px;\n }\n\n [dir=rtl].gleap-frame-container--classic-left {\n left: auto;\n right: ").concat(i,"px;\n bottom: ").concat(s,"px;\n }\n\n .gleap-frame-container--modern-left {\n right: auto;\n left: ").concat(i,"px;\n bottom: ").concat(61+s,"px;\n }\n\n [dir=rtl].gleap-frame-container--modern-left {\n left: auto;\n right: ").concat(i,"px;\n bottom: ").concat(61+s,"px;\n }\n\n .gleap-frame-container--animate {\n pointer-events: auto !important;\n }\n\n @keyframes gleapFadeInUp {\n from {\n opacity: 0;\n transform: translate3d(0, 100%, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n\n @keyframes gleapFadeInUpMobile {\n from {\n opacity: 0;\n transform: translate3d(0, 10%, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n\n .gleap-notification-container {\n position: fixed;\n bottom: ").concat(I,"px;\n right: ").concat(i,"px;\n z-index: ").concat(2147483630,";\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n width: 100%;\n max-width: min(340px, 80vw);\n }\n\n .gleap-notification-container--left {\n left: ").concat(4+i,"px;\n right: initial !important;\n }\n\n [dir=rtl].gleap-notification-container {\n left: ").concat(4+i,"px;\n right: initial !important;\n }\n\n [dir=rtl].gleap-notification-container--left {\n left: initial !important;\n right: ").concat(i,"px !important;\n align-items: flex-start !important;\n }\n\n .gleap-notification-container--no-button {\n bottom: ").concat(s,"px;\n }\n\n .gleap-notification-item {\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n\n .gleap-notification-close {\n border-radius: 100%;\n width: 28px;\n height: 28px;\n background-color: ").concat(v,";\n display: flex;\n justify-content: center;\n align-items: center;\n margin-bottom: 8px;\n cursor: pointer;\n visibility: hidden;\n pointer-events: none;\n }\n\n .gleap-notification-container:hover .gleap-notification-close {\n visibility: visible;\n pointer-events: auto;\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-notification-close {\n visibility: visible;\n pointer-events: auto;\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n }\n\n .gleap-notification-close svg {\n width: 45%;\n height: 45%;\n object-fit: contain;\n fill: ").concat(r,";\n }\n\n .gleap-notification-item-checklist-container {\n display: flex;\n animation: fadeIn;\n animation-duration: .45s;\n background-color: ").concat(r,";\n border-radius: ").concat(v,";\n box-sizing: border-box;\n cursor: pointer;\n flex-direction: column;\n overflow: hidden;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ").concat(x,"px;\n margin-bottom: 12px;\n }\n\n .gleap-notification-item-checklist-content {\n align-items: flex-start;\n display: flex;\n flex-direction: column;\n padding: 15px;\n width: 100%;\n width: min(310px, 70vw);\n max-width: min(310px, 70vw);\n }\n\n .gleap-notification-item-checklist-content-title {\n color: ").concat(h,";\n font-size: 15px;\n font-weight: 500;\n line-height: 21px;\n margin-bottom: 10px;\n max-width: 100%;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .gleap-notification-item-checklist-content-progress {\n width: 100%;\n height: 8px;\n border-radius: 8px;\n background-color: ").concat(y,";\n }\n\n .gleap-notification-item-checklist-content-progress-inner {\n height: 100%;\n border-radius: 8px;\n background-color: ").concat(e,";\n }\n\n .gleap-notification-item-checklist-content-next {\n color: ").concat(v,";\n font-size: 15px;\n font-weight: normal;\n line-height: 21px;\n margin-top: 10px;\n max-width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: flex;\n align-items: center;\n }\n\n .gleap-notification-item-checklist-content-next svg {\n height: 18px;\n margin-right: 5px;\n width: auto;\n }\n\n .gleap-notification-item-checklist-content-next b {\n font-size: 15px;\n font-weight: normal;\n color: ").concat(h,";\n }\n\n .gleap-notification-item-news {\n width: 100%;\n }\n\n .gleap-news-pagination {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 10px;\n width: 100%;\n }\n\n .gleap-news-page-indicator {\n font-size: 12px;\n color: ").concat(v,";\n }\n\n .gleap-news-next-button {\n background-color: ").concat(e,";\n color: ").concat(c,";\n border-radius: ").concat(C,"px;\n box-sizing: border-box;\n padding: 5px 10px;\n font-size: 14px;\n font-weight: bold;\n line-height: 21px;\n border: none;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: none !important;\n outline: none !important;^\n }\n\n .gleap-notification-item-news-content {\n align-items: flex-start;\n display: flex;\n flex-direction: column;\n padding: 15px;\n }\n\n .gleap-notification-item-news-preview {\n color: ").concat(v,";\n font-size: 14px;\n line-height: 21px;\n font-weight: 400;\n overflow-wrap: break-word;\n word-break: break-word;\n display: block;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .gleap-notification-item-news-sender {\n display: flex;\n align-items: center;\n color: ").concat(v,";\n font-size: 15px;\n line-height: 21px;\n font-weight: 400;\n }\n \n .gleap-notification-item-news-content-title {\n color: ").concat(h,";\n font-size: 15px;\n font-weight: 500;\n line-height: 21px;\n margin-bottom: 6px;\n max-width: 100%;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n cursor: pointer;\n }\n\n .gleap-notification-item-news-sender img {\n border-radius: 100%;\n height: 20px;\n margin-right: 8px;\n object-fit: cover;\n width: 20px;\n }\n\n [dir=rtl] .gleap-notification-item-news-sender img {\n margin-left: 8px;\n margin-right: 0px !important;\n }\n\n .gleap-notification-item-news-container {\n display: flex;\n animation: fadeIn;\n animation-duration: .45s;\n background-color: ").concat(r,";\n border-radius: ").concat(v,";\n box-sizing: border-box;\n flex-direction: column;\n overflow: hidden;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ").concat(x,"px;\n margin-bottom: 12px;\n }\n\n .gleap-notification-item-news-image {\n background-color: ").concat(v,";\n height: 170px;\n max-height: 170px;\n object-fit: cover;\n width: 100%;\n cursor: pointer;\n }\n \n .gleap-notification-item-news-content-title:hover {\n color: ").concat(e,";\n }\n\n .gleap-notification-item {\n display: flex;\n align-items: flex-end;\n cursor: pointer;\n }\n\n .gleap-notification-item img {\n width: 32px;\n height: 32px;\n min-width: 32px;\n border-radius: 100%;\n object-fit: cover;\n margin-right: 8px;\n margin-bottom: 12px;\n cursor: pointer;\n }\n\n [dir=rtl] .gleap-notification-item img {\n margin-left: 8px;\n margin-right: 0px !important;\n }\n\n .gleap-notification-item-container {\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ").concat(x,"px;\n border-bottom-left-radius: 0px;\n padding: 20px;\n background-color: ").concat(r,";\n margin-bottom: 12px;\n cursor: pointer;\n font-size: 15px;\n line-height: 21px;\n color: ").concat(h,';\n position: relative;\n }\n\n .gleap-notification-item-container::after {\n content: " ";\n position: absolute;\n bottom: 0px;\n width: 0px;\n height: 0px;\n left: -6px;\n border-style: solid;\n border-width: 0px 0px 10px 6px;\n border-color: transparent transparent ').concat(r,";\n }\n\n .gleap-notification-item-sender {\n color: ").concat(v,";\n line-height: 20px;\n }\n\n .gleap-notification-item-content {\n line-height: 20px;\n color: ").concat(h,";\n margin-top: 4px;\n min-width: min(200px, 50vw);\n word-wrap: break-word;\n word-break: break-word;\n }\n\n .gleap-frame-container-inner {\n position: relative;\n width: 100%;\n height: calc(100vh - ").concat(84+s,"px);\n max-height: ").concat(700,'px;\n }\n\n .gleap-frame-container--survey .gleap-frame-container-inner {\n height: calc(100vh - 40px);\n }\n \n .gleap-frame-container-inner:before {\n content: " ";\n position: absolute;\n width: 100%;\n height: calc(100% - ').concat(k,"px);\n top: ").concat(k,"px;\n background-color: ").concat(r,";\n z-index: -1;\n }\n \n .gleap-frame-container iframe {\n height: 100% !important;\n width: 100% !important;\n max-width: 100% !important;\n display: block !important;\n pointer-events: auto !important;\n }\n \n .gleap-frame-container--hidden {\n display: none !important;\n pointer-events: none;\n animation: none !important;\n }\n \n .bb-feedback-button {\n margin: 0px;\n position: fixed;\n bottom: ").concat(s,"px;\n right: ").concat(i,"px;\n border-radius: 30px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n background-color: transparent;\n color: #000000;\n z-index: ").concat(2147483630,";\n box-sizing: border-box;\n display: flex;\n align-items: center;\n padding: 0px;\n }\n\n [dir=rtl].bb-feedback-button {\n bottom: ").concat(s,"px;\n right: auto;\n left: ").concat(i,"px;\n }\n \n .bb-feedback-button--bottomleft {\n bottom: ").concat(s,"px;\n right: auto;\n left: ").concat(i,"px;\n }\n\n [dir=rtl].bb-feedback-button--bottomleft {\n bottom: ").concat(s,"px;\n right: ").concat(i,'px;\n left: auto;\n }\n \n .bb-feedback-button--disabled {\n display: none !important;\n }\n\n .bb-feedback-button--hidden {\n display: none !important;\n }\n \n .bb-feedback-button-text {\n padding: 8px 12px;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n background-color: #fff;\n border-radius: 8px;\n box-shadow: 0px 0px 14px 0px rgba(0, 0, 0, 0.15);\n position: relative;\n z-index: 99;\n }\n \n .bb-feedback-button-text:before {\n content: "";\n position: absolute;\n box-shadow: rgba(0, 0, 0, 0.04) 6px 6px 5px;\n transform: rotate(315deg);\n bottom: 16px;\n right: -4px;\n border-width: 10px;\n border-style: solid;\n border-color: transparent #fff #fff transparent;\n }\n \n .bb-feedback-button--bottomleft .bb-feedback-button-text:before {\n display: none;\n }\n \n .bb-feedback-button-text:after {\n content: "";\n position: absolute;\n bottom: 12px;\n right: 0px;\n background-color: #fff;\n width: 5px;\n height: 30px;\n }\n \n .bb-feedback-button-text-title {\n font-family: sans-serif;\n font-size: 14px;\n color: #666;\n line-height: 18px;\n max-width: 220px;\n }\n \n .bb-feedback-button-text-title b {\n color: #000000;\n font-weight: 600;\n }\n\n .bb-notification-bubble {\n position: absolute;\n top: -5px;\n right: -5px;\n min-width: 12px;\n padding: 0px 4px;\n height: 20px;\n min-width: 20px;\n border-radius: 20px;\n background-color: red;\n color: #fff;\n font-size: 11px;\n font-family: sans-serif;\n text-align: center;\n line-height: 20px;\n }\n\n .bb-notification-bubble--hidden {\n display: none;\n }\n \n .bb-feedback-button-icon {\n width: 48px;\n height: 48px;\n border-radius: 48px;\n background-color: #485bff;\n transition: box-shadow, transform 0.2s ease-in-out;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n position: relative;\n }\n \n .bb-feedback-button-classic {\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n top: 50%;\n right: 0px;\n position: fixed;\n transform: rotate(-90deg) translate(50%, -50%);\n transform-origin: 100% 50%;\n padding: 9px 20px;\n text-align: center;\n background-color: #485bff;\n border-top-left-radius: 8px;\n border-top-right-radius: 8px;\n font-family: sans-serif;\n font-size: 16px;\n color: #fff;\n box-shadow: 0px 0px 14px 0px rgba(0, 0, 0, 0.25);\n }\n\n [dir=rtl].bb-feedback-button .bb-feedback-button-classic {\n top: 50%;\n left: 0px;\n right: auto;\n transform: rotate(90deg) translate(-50%, -100%);\n transform-origin: 0% 0%;\n }\n \n .bb-feedback-button-classic--left {\n top: 50%;\n left: 0px;\n right: auto;\n transform: rotate(90deg) translate(-50%, -100%);\n transform-origin: 0% 0%;\n }\n\n [dir=rtl].bb-feedback-button .bb-feedback-button-classic--left {\n top: 50%;\n right: 0px;\n left: auto;\n transform: rotate(-90deg) translate(50%, -50%);\n transform-origin: 100% 50%;\n }\n \n .bb-feedback-button-classic--bottom {\n top: auto;\n bottom: 0px;\n transform: none;\n right: ').concat(i,"px;\n left: auto;\n }\n \n [dir=rtl].bb-feedback-button .bb-feedback-button-classic--bottom {\n top: auto;\n bottom: 0px;\n transform: none;\n left: ").concat(i,"px;\n right: auto;\n }\n\n .bb-feedback-button--classic-button-style {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n \n .bb-feedback-button--open.bb-feedback-button--classic-button-style {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: bbFadeOutRight;\n }\n \n .bb-feedback-button .bb-logo-logo {\n position: absolute;\n width: 30px;\n height: 30px;\n top: 9px;\n left: 9px;\n object-fit: contain;\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-name: bbZoomIn;\n }\n \n .bb-feedback-button .bb-logo-arrowdown {\n position: absolute;\n width: 14px;\n height: 14px;\n top: 17px;\n left: 17px;\n object-fit: contain;\n animation-duration: 0.3s;\n animation-fill-mode: both;\n }\n \n .bb-feedback-button .bb-logo-arrowdown {\n animation-name: bbZoomOut;\n }\n \n .bb-feedback-button--open .bb-logo-arrowdown {\n animation-name: bbZoomIn;\n }\n \n .bb-feedback-button--open .bb-logo-logo {\n animation-name: bbZoomOut;\n }\n \n .bb-feedback-button-icon:hover {\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.25), 0px 0px 20px rgba(0, 0, 0, 0.2);\n transform: scale(1.1);\n }\n \n .bb-feedback-button--open .bb-feedback-button-text {\n animation-name: bbFadeOutDown;\n }\n \n .bb-feedback-button--open .bb-feedback-button-icon {\n display: flex;\n }\n \n .bb-capture-svg {\n position: fixed;\n z-index: ").concat(2147483614,";\n top: 0px;\n left: 0px;\n right: 0px;\n width: 100%;\n height: 100%;\n padding: 0px;\n margin: 0px;\n cursor: crosshair;\n }\n\n .bb-capture-svg--preview {\n cursor: auto !important;\n }\n \n .bb-rec-on-circle {\n animation-name: bbRecIconFade;\n animation-duration: 2s;\n animation-iteration-count: infinite;\n animation-direction: alternate;\n }\n \n .bb-rec-on-cont {\n animation-name: bbRecIconContFade;\n animation-duration: 2s;\n animation-iteration-count: infinite;\n animation-direction: alternate;\n }\n \n .bb-capture-editor-drag-info {\n position: fixed;\n top: -200px;\n left: 0px;\n z-index: ").concat(2147483616,";\n transition: opacity 0.3s ease-in-out;\n }\n \n .bb-capture-editor-drag-info svg {\n width: 24px;\n height: 24px;\n }\n \n .bb-capture-editor-borderlayer {\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n border: 4px solid ").concat(e,";\n cursor: crosshair;\n z-index: ").concat(2147483610,";\n box-sizing: border-box;\n pointer-events: none;\n }\n \n .bb-capture-editor-notrecording .bb-capture-editor-borderlayer {\n background-color: rgba(0, 0, 0, 0.8);\n }\n\n .bb-capture-editor-recording .bb-capture-editor-borderlayer {\n border: 4px solid #eb144c !important;\n }\n \n .bb-capture-editor-recording .bb-capture-dismiss {\n display: none;\n }\n \n .bb-capture-editor-item-inactive {\n opacity: 0.3;\n cursor: not-allowed !important;\n }\n \n .bb-capture-editor-notrecording .bb-capture-toolbar-drawingitem {\n opacity: 0.3;\n cursor: not-allowed !important;\n }\n \n .bb-capture-editor-notrecording .bb-capture-editor-drag-info {\n display: none;\n }\n \n .bb-capture-editor-notrecording .bb-capture-svg {\n pointer-events: none !important;\n }\n \n .bb-capture-toolbar {\n position: fixed;\n top: 20px;\n left: 50%;\n transform: translateX(-50%);\n z-index: ").concat(2147483618,";\n background-color: #fff;\n padding: 5px;\n display: flex;\n align-items: center;\n border-radius: 8px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n transition: opacity 0.3s ease-in-out;\n }\n \n .bb-capture-dismiss {\n position: fixed;\n top: 0px;\n right: 0px;\n z-index: ").concat(2147483618,";\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n width: 36px;\n height: 36px;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: ").concat(e,";\n border-bottom-left-radius: ").concat(C,"px;\n }\n\n [dir=rtl] .bb-capture-dismiss {\n top: 0px;\n left: 0px;\n right: auto;\n border-bottom-left-radius: 0px !important;\n border-bottom-right-radius: ").concat(C,"px;\n }\n \n .bb-capture-dismiss svg path {\n fill: ").concat(c,';\n }\n \n .bb-capture-dismiss svg {\n width: 20px;\n height: 20px;\n object-fit: contain;\n }\n \n .bb-capture-button-next {\n font-family: sans-serif;\n box-sizing: border-box;\n font-weight: 600;\n text-align: center;\n width: auto;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n margin: 0px;\n line-height: 36px;\n padding: 0px 12px;\n font-size: 15px;\n margin-left: 12px;\n }\n\n [dir=rtl].bb-capture-editor .bb-capture-button-next {\n margin-left: auto;\n margin-right: 12px;\n }\n \n .bb-capture-toolbar-item-spacer {\n width: 1px;\n height: 38px;\n min-width: 1px;\n margin: 0px 5px;\n }\n \n .bb-capture-toolbar-item {\n width: 42px;\n height: 38px;\n min-width: 42px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n position: relative;\n margin-right: 5px;\n }\n\n .drag-handle-item {\n cursor: grab !important;\n width: 34px;\n min-width: 34px;\n }\n\n .drag-handle-item svg {\n width: 18px !important;\n height: 18px !important;\n }\n \n .bb-capture-toolbar-item svg {\n width: 23px;\n height: 23px;\n object-fit: contain;\n }\n \n .bb-capture-toolbar-item-selectedcolor {\n border-radius: 100%;\n width: 20px;\n height: 20px;\n background-color: #db4035;\n }\n \n .bb-capture-toolbar-item[data-type="undo"] svg {\n width: 18px;\n height: 18px;\n }\n \n .bb-capture-toolbar-item[data-active="true"] {\n position: relative;\n }\n \n .bb-capture-preview {\n display: none;\n background-color: rgba(0, 0, 0, 0.6);\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n justify-content: center;\n align-items: center;\n z-index: ').concat(2147483620,";\n }\n \n .bb-capture-preview-inner {\n background-color: #fff;\n padding: 0px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n border-radius: 8px;\n flex-direction: column;\n max-width: 640px;\n width: 100%;\n margin: 20px;\n }\n \n .bb-capture-preview-inner video {\n border-radius: 8px 8px 0px 0px;\n display: block;\n border: 0px;\n outline: none;\n width: 100%;\n max-height: 60vh;\n }\n \n .bb-capture-preview-buttons {\n display: flex;\n justify-content: space-between;\n padding: 14px;\n }\n \n .bb-capture-preview-retrybutton {\n font-family: sans-serif;\n border-radius: 21px;\n box-sizing: border-box;\n padding: 12px 26px;\n font-size: 16px;\n line-height: 19px;\n font-weight: 600;\n text-align: center;\n margin-top: 0px;\n margin-bottom: 0px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-preview-sendbutton {\n font-family: sans-serif;\n border-radius: 21px;\n box-sizing: border-box;\n padding: 12px 26px;\n font-size: 16px;\n line-height: 19px;\n font-weight: 600;\n text-align: center;\n margin-top: 0px;\n margin-bottom: 0px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-preview-retrybutton:hover,\n .bb-capture-preview-sendbutton:hover {\n opacity: 0.9;\n }\n \n .bb-capture-toolbar-item-recording {\n margin-right: 0px;\n }\n \n .bb-capture-toolbar-item-recording svg {\n width: 33px;\n height: 33px;\n }\n \n .bb-capture-toolbar-item-colorpicker {\n position: fixed;\n top: 70px;\n left: 50%;\n transform: translateX(-50%);\n z-index: ").concat(2147483618,';\n background-color: #fff;\n display: none;\n padding: 10px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n border-radius: 8px;\n }\n \n .bb-capture-toolbar-item-color {\n width: 20px;\n height: 20px;\n border-radius: 100%;\n margin-right: 12px;\n box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.15);\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-toolbar-item-color:hover {\n box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.25);\n }\n \n .bb-capture-toolbar-item-color:last-of-type {\n margin-right: 0px;\n }\n \n [dir=rtl].bb-capture-editor .bb-capture-toolbar-item-color {\n margin-right: auto;\n margin-left: 12px;\n }\n \n [dir=rtl].bb-capture-editor .bb-capture-toolbar-item-color:last-of-type {\n margin-right: auto;\n margin-left: 0px;\n }\n \n .bb-capture-toolbar-item-recording[data-active="true"] svg:first-of-type {\n display: none;\n }\n \n .bb-capture-toolbar-item-recording[data-active="true"] svg:nth-of-type(2) {\n display: block;\n }\n \n .bb-capture-toolbar-item-recording[data-active="false"] svg:first-of-type {\n display: block;\n }\n \n .bb-capture-toolbar-item-recording[data-active="false"] svg:nth-of-type(2) {\n display: none;\n }\n \n .bb-capture-toolbar-item--active {\n background-color: #eee;\n }\n \n .bb-capture-toolbar-item:hover svg {\n opacity: 1;\n }\n \n .bb-capture-toolbar-item--active {\n background-color: #f8f8f8;\n }\n \n .bb-capture-toolbar-item--active svg {\n opacity: 1;\n }\n \n .bb-capture-toolbar-item--inactivecross::before {\n content: "";\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n height: 3px;\n width: 26px;\n margin: auto;\n border-radius: 4px;\n background-color: #e80000;\n transform: rotate(45deg);\n }\n \n .bb-capture-toolbar-item--inactivecross svg {\n fill: #eee;\n }\n \n .bb-capture-toolbar-item-timer {\n text-align: left;\n line-height: 32px;\n font-size: 14px;\n font-family: sans-serif;\n margin: 5px;\n min-width: 40px;\n display: none;\n }\n \n .bb-capture-toolbar-item .bb-tooltip {\n background-color: #555;\n color: #fff;\n visibility: hidden;\n font-size: 14px;\n font-family: sans-serif;\n text-align: center;\n padding: 5px 10px;\n position: absolute;\n z-index: 1;\n top: 45px;\n left: 0px;\n transform: translateX(calc(-50% + 21px));\n opacity: 0;\n transition: opacity 0.3s;\n white-space: nowrap;\n }\n \n .bb-capture-toolbar-item .bb-tooltip::after {\n content: "";\n position: absolute;\n bottom: 100%;\n left: 50%;\n margin-left: -5px;\n border-width: 5px;\n border-style: solid;\n transform: rotate(180deg);\n border-color: #555 transparent transparent transparent;\n }\n \n .bb-capture-toolbar-item:hover .bb-tooltip {\n visibility: visible;\n opacity: 1;\n }\n \n .bb-capture-options {\n display: none;\n }\n \n .bb-capture-options--active {\n display: flex;\n }\n\n @keyframes bbFadeOutRight {\n from {\n opacity: 1;\n }\n \n to {\n opacity: 0;\n }\n }\n \n @keyframes bbFadeOutDown {\n from {\n opacity: 1;\n }\n \n to {\n opacity: 0;\n transform: translate3d(0, 100%, 0);\n }\n }\n \n @keyframes bbFadeInOpacity {\n from {\n opacity: 0;\n }\n \n to {\n opacity: 1;\n }\n }\n \n @keyframes bbZoomOut {\n from {\n opacity: 1;\n }\n \n 50% {\n opacity: 0;\n transform: scale3d(0.3, 0.3, 0.3);\n }\n \n to {\n opacity: 0;\n }\n }\n \n @keyframes bbZoomIn {\n from {\n opacity: 0;\n transform: scale3d(0.3, 0.3, 0.3);\n }\n \n 50% {\n opacity: 1;\n }\n }\n \n @keyframes bbRecIconContFade {\n 0% {\n fill: #b10802;\n }\n 50% {\n fill: #ff0000;\n }\n 100% {\n fill: #b10802;\n }\n } \n .bb-capture-preview-retrybutton {\n color: ').concat(h,";\n border-radius: ").concat(w,"px;\n background-color: ").concat(y,";\n }\n .bb-capture-preview-retrybutton:hover {\n background-color: ").concat(b,";\n }\n @keyframes bb-suc-fill {\n 100% {\n box-shadow: inset 0px 0px 0px 30px ").concat(e,";\n }\n }\n .bb-capture-toolbar-item-spacer {\n background-color: ").concat(y,";\n }\n .bb-tooltip {\n border-radius: ").concat(S,"px;\n }\n @keyframes bbRecIconFade {\n 0% {\n fill: transparent;\n }\n 50% {\n fill: ").concat(b,";\n }\n 100% {\n fill: transparent;\n }\n }\n .bb-capture-preview-sendbutton {\n color: ").concat(c,";\n background-color: ").concat(e,";\n border-radius: ").concat(w,"px;\n }\n .bb-capture-button-next {\n color: ").concat(c,";\n background-color: ").concat(e,";\n border-radius: ").concat(C,"px;\n }\n .bb-capture-preview-inner {\n background-color: ").concat(r,";\n border-radius: ").concat(S,"px;\n }\n .bb-capture-toolbar-item-timer {\n color: ").concat(v,";\n }\n .bb-svg-path {\n fill: ").concat(h,";\n }\n .bb-capture-toolbar-item {\n border-radius: ").concat(S,"px;\n }\n .bb-capture-toolbar {\n background-color: ").concat(r,";\n border-radius: ").concat(S,"px;\n }\n .bb-capture-toolbar-item-colorpicker {\n background-color: ").concat(r,";\n }\n .bb-capture-toolbar-item--active {\n background-color: ").concat(y,";\n }\n .bb-feedback-button-classic {\n border-top-left-radius: ").concat(S,"px;\n border-top-right-radius: ").concat(S,"px;\n }\n .bb-logo-logo--default path {\n fill: ").concat(p,";\n }\n .bb-logo-arrowdown {\n fill: ").concat(p,";\n }\n .bb-feedback-button-icon {\n background-color: ").concat(n,";\n }\n .bb-feedback-button-classic {\n background-color: ").concat(n,";\n color: ").concat(p,";\n }\n\n @media only screen and (max-width: 450px) {\n [dir=rtl].gleap-frame-container,\n .gleap-frame-container {\n left: 0px;\n right: 0px;\n width: 100vw;\n max-width: 100vw;\n min-height: 100vh;\n max-height: 100vh;\n min-height: 100dvh !important;\n max-height: 100dvh !important;\n top: 0px;\n bottom: 0px;\n border-radius: 0px;\n animation-name: gleapFadeInUpMobile;\n }\n\n .gleap-frame-container-inner {\n width: 100vw;\n height: 100%;\n }\n\n .gleap-frame-container:not(.gleap-frame-container--survey):not(.gleap-frame-container--survey-full) .gleap-frame-container-inner {\n max-height: calc(var(--glvh, 1vh) * 100) !important;\n }\n\n .gleap-frame-container--survey {\n height: auto !important;\n top: initial !important;\n bottom: 0px !important;\n min-height: initial !important;\n }\n\n .gleap-frame-container--survey .gleap-frame-container-inner {\n height: 100vh !important;\n }\n\n .bb-tooltip {\n display: none !important;\n }\n \n .bb-capture-toolbar-item-colorpicker {\n top: 75px;\n }\n \n .bb-capture-button-next {\n margin-left: auto;\n }\n \n .bb-capture-dismiss {\n display: none;\n }\n \n .bb-capture-toolbar {\n top: 15px;\n right: 15px;\n left: 15px;\n width: auto;\n transform: none;\n }\n\n .bb-capture-editor-drag-info {\n display: none;\n }\n \n .bb-capture-editor-borderlayer {\n border-width: 4px;\n }\n }\n \n @media print {\n .bb-feedback-button {\n display: none !important;\n }\n \n .gleap-frame-container {\n display: none !important;\n }\n }\n\n .gleap-tour-sender {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n margin-bottom: 10px;\n }\n\n .gleap-tour-sender-image {\n width: 32px;\n height: 32px;\n border-radius: 32px;\n margin-right: 10px;\n background-size: cover;\n background-repeat: no-repeat;\n }\n\n .gleap-tour-popover.gleap-tour-popover-post {\n min-width: 550px;\n max-width: 550px;\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-tour-popover.gleap-tour-popover-post {\n min-width: calc(100vw - 40px);\n max-width: calc(100vw - 40px);\n }\n }\n\n .gleap-tour-message,\n .gleap-tour-message p,\n .gleap-tour-message ul {\n color: ").concat(h,";\n }\n\n .gleap-tour-message h2 {\n font-weight: 600;\n font-size: 22px;\n }\n\n .gleap-tour-message h3 {\n font-weight: 600;\n font-size: 18px;\n }\n\n .gleap-tour-message p {\n line-height: 1.3;\n margin-bottom: 10px !important;\n margin-top: 10px !important;\n }\n\n .gleap-tour-message ul {\n line-height: 1.3;\n padding-left: 20px;\n margin-top: 10px !important;\n margin-bottom: 10px !important;\n }\n\n .gleap-tour-message {\n max-height: calc(80vh - 100px) !important;\n overflow-y: auto;\n min-width: 270px;\n }\n\n .gleap-tour-message::-webkit-scrollbar {\n width: 5px;\n }\n\n .gleap-tour-message::-webkit-scrollbar-track {\n border-radius: 0px;\n }\n \n .gleap-tour-message::-webkit-scrollbar-thumb {\n background: ").concat(b,"; \n border-radius: 5px;\n }\n\n .gleap-tour-message::-webkit-scrollbar-thumb:hover {\n background: ").concat(v,";\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-tour-message {\n min-width: auto !important;\n }\n }\n\n .gleap-tour-message iframe {\n width: 100%;\n height: 300px;\n margin-top: 10px;\n margin-bottom: 10px;\n border: none;\n outline: none;\n display: block;\n }\n\n .gleap-tour-sender-name {\n font-size: 15px;\n }\n\n .gleap-tour-video {\n width: 100%;\n max-width: 100%;\n }\n\n .gleap-tour-video-svg--fullscreen {\n width: 100% !important;\n height: 100% !important;\n top: 0px !important;\n left: 0px !important;\n right: 0px !important;\n bottom: 0px !important;\n }\n\n .gleap-tour-video--playing .gleap-tour-video-playpause {\n opacity: 0;\n }\n \n .gleap-tour-video--playing:hover .gleap-tour-video-playpause {\n opacity: 1;\n }\n\n .gleap-tour-popover-video-pointer {\n padding: 0px !important;\n border-radius: 8px;\n position: relative;\n background-color: transparent !important;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-footer {\n position: absolute;\n top: 0px;\n left: 20px;\n right: 20px;\n opacity: 0;\n transition: opacity 200ms ease-in-out;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-footer button {\n padding: 5px 12px;\n }\n\n .gleap-tour-popover-video-pointer.gleap-tour-popover-can-close .gleap-tour-popover-footer {\n right: 40px !important;\n }\n\n .gleap-tour-popover-video-pointer:hover .gleap-tour-popover-footer {\n opacity: 1;\n }\n\n .gleap-tour-popover-pointer.gleap-tour-popover-no-sender .gleap-tour-message {\n padding-right: 20px;\n }\n\n .gleap-tour-video video {\n width: 100%;\n max-width: 100%;\n height: auto;\n border: none;\n outline: none;\n display: block;\n border-radius: 8px;\n }\n\n .gleap-admin-collapse-ui {\n z-index: ").concat(2147483635,";\n cursor: pointer;\n position: fixed;\n bottom: 75px;\n right: 20px;\n width: 32px;\n height: 32px;\n border-radius: 100%;\n background-color: #fff;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: rgba(0, 0, 0, 0.16) 0px 10px 36px 0px, rgba(0, 0, 0, 0.06) 0px 0px 0px 1px;\n }\n\n .gleap-admin-collapse-ui svg {\n width: 20px;\n height: 14px;\n fill: #000 !important;\n }\n\n .gleap-admin-collapse-ui-active {\n bottom: 20px !important;\n }\n\n .gleap-admin-collapse-ui-active svg {\n transform: rotate(180deg);\n }\n\n .gleap-admin-frame-container-active {\n display: none !important;\n }\n\n .gleap-admin-frame-container {\n position: fixed;\n bottom: 0px;\n left: 0px;\n right: 0px;\n width: 100vw;\n z-index: ").concat(2147483640,";\n }\n\n .gleap-admin-frame {\n width: 100%;\n height: 100% !important;\n border: none;\n outline: none;\n display: block;\n }\n \n .gleap-tour-message .linktype-link {\n display: inline-block !important;\n background-color: transparent !important;\n color: ").concat(n," !important;\n }\n\n .gleap-tooltip .linktype-button,\n .gleap-tour-message .linktype-button {\n display: inline-block !important;\n border-radius: 5px;\n box-sizing: border-box;\n padding: 10px 20px !important;\n text-decoration: none !important;\n background-color: ").concat(n," !important;\n color: ").concat(p," !important;\n }\n\n .gleap-tour-message img {\n width: 100%;\n max-width: 100%;\n min-height: 260px;\n height: auto;\n margin-top: 10px;\n margin-bottom: 10px;\n object-fit: cover;\n }\n\n .gleap-tour-active .gleap-tour-overlay {\n pointer-events: none;\n }\n \n .gleap-tour-active * {\n pointer-events: none;\n }\n \n .gleap-tour-active .gleap-tour-active-element,\n .gleap-tour-active .gleap-tour-active-element *,\n .gleap-tour-popover,\n .gleap-tour-popover * {\n pointer-events: auto;\n }\n \n @keyframes animate-fade-in {\n 0% {\n opacity: 0;\n }\n \n to {\n opacity: 1;\n }\n }\n \n .gleap-tour-fade .gleap-tour-overlay {\n animation: animate-fade-in 200ms ease-in-out;\n }\n \n .gleap-tour-fade .gleap-tour-popover {\n animation: animate-fade-in 200ms;\n }\n\n .gleap-tour-video-playpause {\n position: absolute;\n bottom: 8px;\n left: 8px;\n width: 32px;\n height: 32px;\n padding: 4px;\n background-color: rgba(0,0,0,0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border-radius: 8px;\n transition: opacity 200ms ease-in-out;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-arrow {\n display: none !important;\n }\n\n .gleap-tour-video-playpause svg {\n width: 34px;\n height: auto;\n fill: #fff;\n }\n \n /* Popover styles */\n .gleap-tour-popover {\n all: unset;\n box-sizing: border-box;\n color: #2d2d2d;\n margin: 0;\n padding: 15px;\n border-radius: ").concat(S,'px;\n min-width: 250px;\n max-width: 300px;\n box-shadow: 0 1px 10px #0006;\n z-index: 1000000000;\n position: fixed;\n top: 0;\n right: 0;\n background-color: #fff;\n }\n \n .gleap-tour-popover * {\n font-family: "Helvetica Neue", Inter, ui-sans-serif, "Apple Color Emoji", Helvetica, Arial, sans-serif;\n }\n \n .gleap-tour-popover-title {\n font: 19px / normal sans-serif;\n font-weight: 700;\n display: block;\n position: relative;\n line-height: 1.5;\n zoom: 1;\n margin: 0;\n }\n \n .gleap-tour-popover-close-btn {\n all: unset;\n position: absolute;\n top: 5px;\n right: 5px;\n width: 32px;\n height: 32px;\n cursor: pointer;\n font-size: 30px;\n font-weight: 500;\n line-height: 32px;\n color: #d2d2d2;\n z-index: 1;\n text-align: center;\n transition: color;\n transition-duration: 200ms;\n }\n \n .gleap-tour-popover-close-btn:hover,\n .gleap-tour-popover-close-btn:focus {\n color: #2d2d2d;\n }\n \n .gleap-tour-popover-title[style*="block"] + .gleap-tour-popover-description {\n margin-top: 5px;\n }\n \n .gleap-tour-popover-description {\n margin-bottom: 0;\n font: 15px / normal sans-serif;\n line-height: 1.5;\n font-weight: 400;\n zoom: 1;\n }\n \n .gleap-tour-popover-footer {\n margin-top: 15px;\n text-align: right;\n zoom: 1;\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n \n .gleap-tour-popover-progress-text {\n font-size: 13px;\n font-weight: 400;\n color: #727272;\n zoom: 1;\n }\n \n .gleap-tour-popover-footer button {\n background-color: ').concat(e,";\n color: ").concat(c,";\n border-radius: ").concat(C,"px;\n box-sizing: border-box;\n padding: 10px 20px;\n font-size: 14px;\n font-weight: bold;\n line-height: 21px;\n border: none;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: none !important;\n outline: none !important;\n }\n\n .gleap-tour-popover-prev-btn {\n color: ").concat(h," !important;\n background-color: ").concat(y," !important;\n margin-right: 3px;\n }\n\n .gleap-tour-popover-prev-btn:hover {\n background-color: ").concat(e,"22 !important;\n color: ").concat(e,' !important;\n }\n \n .gleap-tour-popover-footer .gleap-tour-popover-btn-disabled {\n opacity: 0.5;\n pointer-events: none;\n }\n \n /* Disable the scrolling of parent element if it has an active element*/\n :not(body):has(> .gleap-tour-active-element) {\n overflow: hidden !important;\n }\n \n .gleap-tour-no-interaction, .gleap-tour-no-interaction * {\n pointer-events: none !important;\n }\n \n .gleap-tour-popover-navigation-btns {\n display: flex;\n flex-grow: 1;\n justify-content: flex-end;\n }\n \n .gleap-tour-popover-navigation-btns button + button {\n margin-left: 4px;\n }\n \n .gleap-tour-popover-arrow {\n content: "";\n position: absolute;\n border: 5px solid #fff;\n }\n \n .gleap-tour-popover-arrow-side-over {\n display: none;\n }\n \n /** Popover Arrow Sides **/\n .gleap-tour-popover-arrow-side-left {\n left: 100%;\n border-right-color: transparent;\n border-bottom-color: transparent;\n border-top-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-right {\n right: 100%;\n border-left-color: transparent;\n border-bottom-color: transparent;\n border-top-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-top {\n top: 100%;\n border-right-color: transparent;\n border-bottom-color: transparent;\n border-left-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-bottom {\n bottom: 100%;\n border-left-color: transparent;\n border-top-color: transparent;\n border-right-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-center {\n display: none;\n }\n \n /* Left/Start + Right/Start */\n .gleap-tour-popover-arrow-side-left.gleap-tour-popover-arrow-align-start,\n .gleap-tour-popover-arrow-side-right.gleap-tour-popover-arrow-align-start {\n top: 15px;\n }\n \n /* Top/Start + Bottom/Start */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-start,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-start {\n left: 15px;\n }\n \n /* End/Left + End/Right */\n .gleap-tour-popover-arrow-align-end.gleap-tour-popover-arrow-side-left,\n .gleap-tour-popover-arrow-align-end.gleap-tour-popover-arrow-side-right {\n bottom: 15px;\n }\n \n /* Top/End + Bottom/End */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-end,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-end {\n right: 15px;\n }\n \n /* Left/Center + Right/Center */\n .gleap-tour-popover-arrow-side-left.gleap-tour-popover-arrow-align-center,\n .gleap-tour-popover-arrow-side-right.gleap-tour-popover-arrow-align-center {\n top: 50%;\n margin-top: -5px;\n }\n \n /* Top/Center + Bottom/Center */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-center,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-center {\n left: 50%;\n margin-left: -5px;\n }\n \n /* No arrow */\n .gleap-tour-popover-arrow-none {\n display: none;\n } \n\n /* Modal styles */\n .gleap-modal-wrapper {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: ').concat(2147483640,";\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .gleap-modal-backdrop {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.5);\n z-index: ").concat(2147483641,";\n }\n\n .gleap-modal {\n position: relative;\n width: 90%;\n max-width: 600px;\n max-height: 90vh;\n z-index: ").concat(2147483700,";\n background-color: ").concat(r,";\n border-radius: ").concat(k,"px;\n overflow: hidden;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-name: gleapFadeInUp;\n }\n\n .gleap-modal-frame {\n width: 100%;\n border: none;\n display: block;\n outline: none;\n }\n\n body.gleap-modal-open {\n overflow: hidden;\n }\n\n @keyframes gleapFadeInUp {\n from {\n opacity: 0;\n transform: translate3d(0, 20px, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n "),E=document.querySelector(".gleap-styles");E&&E.remove();var T=document.createElement("style");T.innerHTML=O,T.className="gleap-styles",document.body.appendChild(T)}(e,t,n,r,o,i,s,l)}))}},{key:"sendSilentCrashReport",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"MEDIUM",o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{screenshot:!0,replays:!0,attachments:!0};return e.sendSilentCrashReportWithFormData({description:t},n,o)}},{key:"sendSilentCrashReportWithFormData",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"MEDIUM",o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{screenshot:!0,replays:!0,attachments:!0};if(!this.silentCrashReportSent){this.silentCrashReportSent=!0,setTimeout((function(){t.silentCrashReportSent=!1}),1e4);var r=o?k(o):{},i=et.getInstance();if(i.ready){var a=e||{};i.session.email&&(a.reportedBy=i.session.email),new _t("CRASH",n,a,!0,r).sendFeedback().then((function(){})).catch((function(e){}))}}}},{key:"showSurvey",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"survey";e.startFeedbackFlowWithOptions(t,{hideBackButton:!0,format:n},!0)}},{key:"startClassicForm",value:function(t,n){e.startFeedbackFlowWithOptions(t,{hideBackButton:!n})}},{key:"startFeedbackFlow",value:function(t,n){e.startFeedbackFlowWithOptions(t,{hideBackButton:!n})}},{key:"startFeedbackFlowWithOptions",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=n.autostartDrawing,i=n.hideBackButton,a=n.format;if(et.getInstance().ready){e.getInstance().setGlobalDataItem("snapshotPosition",{x:window.scrollX,y:window.scrollY});var s="start-feedbackflow";o&&(s="start-survey"),Vt.getInstance().setAppMode(o?a:"widget"),Vt.getInstance().sendMessage({name:s,data:{flow:t,hideBackButton:i,format:a}},!0),r?Vt.getInstance().showDrawingScreen("screenshot"):Vt.getInstance().showWidget()}}},{key:"openConversations",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-conversations",data:{hideBackButton:!e}},!0),Vt.getInstance().showWidget()}},{key:"openConversation",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e&&(Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-conversation",data:{shareToken:e,hideBackButton:!t}},!0),Vt.getInstance().showWidget())}},{key:"startConversation",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];e.startBot("",t)}},{key:"startBot",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"start-bot",data:{botId:e||"",hideBackButton:!t}},!0),Vt.getInstance().showWidget()}},{key:"openHelpCenterCollection",value:function(e){e&&(Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-help-collection",data:{collectionId:e}},!0),Vt.getInstance().showWidget())}},{key:"openHelpCenterArticle",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e&&(Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-help-article",data:{articleId:e,hideBackButton:!t}},!0),Vt.getInstance().showWidget())}},{key:"openHelpCenter",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-helpcenter",data:{hideBackButton:!e}},!0),Vt.getInstance().showWidget()}},{key:"searchHelpCenter",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e&&(Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-helpcenter-search",data:{term:e,hideBackButton:!t}},!0),Vt.getInstance().showWidget())}},{key:"openNewsArticle",value:function(e){e&&(Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-news-article",data:{id:e}},!0),Vt.getInstance().showWidget())}},{key:"openChecklists",value:function(){Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-checklists",data:{}},!0),Vt.getInstance().showWidget()}},{key:"startChecklist",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;return!!e&&(Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"start-checklist",data:Mm({outboundId:e,hideBackButton:!t},n?{sharedKey:n}:{})},!0),Vt.getInstance().showWidget(),!0)}},{key:"openChecklist",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e&&(Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-checklist",data:{id:e,hideBackButton:!t}},!0),Vt.getInstance().showWidget())}},{key:"getChecklistData",value:function(e,t){if(!e)return Promise.reject(new Error("outboundId is required"));var n=D.getInstance();return n.validateChecklist(e,t).then((function(e){return n.fetchChecklist(e)}))}},{key:"openNews",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-news",data:{hideBackButton:!e}},!0),Vt.getInstance().showWidget()}},{key:"openFeatureRequests",value:function(){Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-feature-requests",data:{}},!0),Vt.getInstance().showWidget()}},{key:"startProductTour",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this;et.getInstance().startProductTourConfig(e).then((function(o){var r;!t||null==o||!o.startURL||null!==(r=window)&&void 0!==r&&null!==(r=r.location)&&void 0!==r&&null!==(r=r.href)&&void 0!==r&&r.includes(null==o?void 0:o.baseURL)?n.startProductTourWithConfig(e,o,!0):window.location.href="".concat(o.startURL,"?gleap_tour=").concat(e,"&gleap_tour_delay=1")})).catch((function(e){}))}},{key:"checkForUncompletedTour",value:function(){var e=mm.getInstance().loadUncompletedTour();e&&mm.getInstance().startWithConfig(e.tourId,e.tourData,500)}},{key:"startProductTourWithConfig",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];mm.getInstance().startWithConfig(e,t,0,n)}},{key:"showBanner",value:function(e){try{Bh.getInstance().showBanner(e)}catch(t){}}},{key:"showModal",value:function(e){try{Gh.getInstance().showModal(e)}catch(t){}}},{key:"showNotification",value:function(e){Mh.getInstance().showNotification(e)}}],n&&Lm(t.prototype,n),o&&Lm(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();if(Rm(Dm,"invoked",!0),Rm(Dm,"silentCrashReportSent",!1),Rm(Dm,"instance",void 0),"undefined"!=typeof window){var Nm=window.GleapActions;if(Nm&&Nm.length>0)for(var jm=0;jm(()=>{"use strict";var e={d:(t,n)=>{for(var o in n)e.o(n,o)&&!e.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:n[o]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function o(e,t){for(var n=0;nVm});var a=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),r(this,"feedbackButton",null),r(this,"injectedFeedbackButton",!1),r(this,"buttonHidden",null),r(this,"lastButtonIcon",null)}var t,n,i;return t=e,i=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],(n=[{key:"destroy",value:function(){this.feedbackButton&&(this.feedbackButton.remove(),this.feedbackButton=null),this.buttonHidden=null,this.lastButtonIcon=null,this.injectedFeedbackButton=!1,this.instance=null}},{key:"toggleFeedbackButton",value:function(t){this.buttonHidden=!t,e.getInstance().updateFeedbackButtonState(),jh.getInstance().updateContainerStyle()}},{key:"feedbackButtonPressed",value:function(){var e=Zt.getInstance();e.isOpened()?e.hideWidget():(e.setAppMode("widget"),e.showWidget())}},{key:"injectFeedbackButton",value:function(){var e=this;if(!this.injectedFeedbackButton){this.injectedFeedbackButton=!0;var t=document.createElement("div");t.addEventListener("click",(function(){e.feedbackButtonPressed()})),document.body.appendChild(t),this.feedbackButton=t,this.updateFeedbackButtonState()}}},{key:"updateNotificationBadge",value:function(e){var t=document.querySelector(".bb-notification-bubble");if(t){var n="bb-notification-bubble--hidden";e>0&&!Zt.getInstance().isOpened()?(t.classList.remove(n),t.innerText=e):t.classList.add(n)}}},{key:"refresh",value:function(){document.querySelector(".bb-feedback-button")?(this.updateFeedbackButtonText(),this.updateFeedbackButtonState()):(this.injectedFeedbackButton=!1,this.feedbackButton=null,this.buttonHidden=null,this.lastButtonIcon=null,this.injectFeedbackButton())}},{key:"updateFeedbackButtonText",value:function(){var t=dt.getInstance().getFlowConfig();if(t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC||t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC_BOTTOM||t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC_LEFT){var n=document.querySelector(".bb-feedback-button-classic");n&&(n.innerText=t.widgetButtonText)}}},{key:"updateFeedbackButtonState",value:function(){if(null!==this.feedbackButton){var t=dt.getInstance().getFlowConfig(),n="";n=t.buttonLogo?''):p("button","#fff"),this.feedbackButton.className="bb-feedback-button gleap-font gl-block",this.feedbackButton.setAttribute("dir",kh.getInstance().isRTLLayout?"rtl":"ltr"),t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC||t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC_BOTTOM||t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC_LEFT?(this.feedbackButton.classList.add("bb-feedback-button--classic-button-style"),this.feedbackButton.innerHTML='
').concat(t.widgetButtonText,"
")):n!==this.lastButtonIcon&&(this.feedbackButton.innerHTML='
'.concat(n).concat(p("arrowdown","#fff"),'
')),this.lastButtonIcon=n;var o=!1;null===e.getInstance().buttonHidden?t.feedbackButtonPosition===e.FEEDBACK_BUTTON_NONE&&(o=!0):e.getInstance().buttonHidden&&(o=!0),o&&this.feedbackButton.classList.add("bb-feedback-button--disabled"),t.feedbackButtonPosition===e.FEEDBACK_BUTTON_BOTTOM_LEFT&&this.feedbackButton.classList.add("bb-feedback-button--bottomleft"),Zt.getInstance().isOpened()&&this.feedbackButton.classList.add("bb-feedback-button--open");var r=Zt.getInstance().appMode;"survey"!==r&&"survey_full"!==r&&"survey_web"!==r||this.feedbackButton.classList.add("bb-feedback-button--survey"),!0!==t.hideForGuests||et.getInstance().isUser()||this.feedbackButton.classList.add("bb-feedback-button--hidden")}}}])&&o(t.prototype,n),i&&o(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}();function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var o,r,i,a,s=[],l=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(o=i.call(n)).done)&&(s.push(o.value),s.length!==t);l=!0);}catch(e){c=!0,r=e}finally{try{if(!l&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(c)throw r}}return s}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return c(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return c(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n=160?"#000000":"#ffffff"},p=function(e,t){return"button"===e?'':"drag"===e?'\x3c!--!Font Awesome Pro 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2025 Fonticons, Inc.--\x3e':"unmute"===e?'':"mute"===e?'':"replay"===e?'\n \n ':"dismiss"===e?'':"blur"===e?'\n \n':"pen"===e?'\n \n \n \n \n \n \n \n \n \n \n \n \n':"rect"===e?'\n \n \n \n \n \n \n \n \n \n \n':"pointer"===e?'\n \n ':"clip"===e?'\n \n \n \n \n \n':"mic"===e?'\n \n \n \n \n ':"camera"===e?'\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n':"recorderon"===e?'\n \n \n \n \n \n \n \n \n \n \n \n':"recorderoff"===e?'\n \n \n \n \n \n \n \n \n ':"arrowdown"===e?'\n \n '):"arrowleft"===e?'\n \n '):"close"===e?'\n \n '):"undo"===e?'\n \n \n \n \n \n \n \n \n \n ':"circle-dot"===e?''):"circle-question"===e?''):"circle-info"===e?''):"circle-exclamation"===e?''):"circle-up"===e?''):"circle-right"===e?''):""};function h(e){return h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},h(e)}function f(e,t){for(var n=0;n0&&(e=e.concat(this.externalRequests)),this.filters&&this.filters.length>0)for(var t=0;t-1)&&!e.find((function(e){return e.url===s.name}))&&e.push({type:"RESOURCE",date:new Date(this.startTimestamp+s.startTime),url:s.name,duration:Math.round(s.duration),initiatorType:s.initiatorType})}}}catch(u){}var l=this.blacklist.concat(this.defaultBlacklist);if(l&&l.length>0)try{e=e.filter((function(e){for(var t=0;t70&&(e=70),this.maxRequests=e}},{key:"setStopped",value:function(e){this.stopped=e}},{key:"setFilters",value:function(e){this.filters=this.filters.concat(e||[])}},{key:"setBlacklist",value:function(e){this.blacklist=this.blacklist.concat(e||[])}},{key:"cleanRequests",value:function(){var e=Object.keys(this.requests);if(e.length>this.maxRequests)for(var t=e.slice(0,e.length-this.maxRequests),n=0;n.15?"":e}},{key:"cleanupPayload",value:function(e){if(null==e)return"{}";try{if(void 0!==("undefined"==typeof TextDecoder?"undefined":h(TextDecoder))&&ArrayBuffer.isView(e))return(new TextDecoder).decode(e)}catch(t){}return e}},{key:"preparePayload",value:function(e){var t=this.cleanupPayload(e);return this.cleanupContentSize(t)}},{key:"start",value:function(){var e=this;if(!this.initialized){this.initialized=!0;var t=this;this.interceptNetworkRequests({onFetch:function(n,o){if(!e.stopped&&o&&e.requests){if(n.length>0&&void 0!==n[0]&&void 0!==n[0].url)e.requests[o]={url:n[0].url,date:new Date,request:{payload:"",headers:void 0!==n[0].headers?Object.fromEntries(n[0].headers.entries()):{}},type:void 0!==n[0].method?n[0].method:""};else if(n.length>=2&&n[1]){var r=n[1]&&n[1].method?n[1].method:"GET";e.requests[o]={request:{payload:t.preparePayload(n[1].body),headers:n[1].headers},type:r,url:n[0],date:new Date}}else e.requests[o]={url:n[0],date:new Date};e.cleanRequests()}},onFetchLoad:function(n,o){if(!e.stopped&&o&&e.requests&&e.requests[o]){try{e.requests[o].success=!0,e.requests[o].response={status:n.status,statusText:"",responseText:""},e.calcRequestTime(o)}catch(i){}try{var r="";n.headers&&void 0!==n.headers.get&&(r=n.headers.get("content-type")),e.isContentTypeSupported(r)?n.text().then((function(r){e.requests[o]&&(e.requests[o].success=!0,e.requests[o].response={status:n.status,statusText:n.statusText,responseText:t.cleanupContentSize(r)}),e.calcRequestTime(o),e.cleanRequests()})).catch((function(t){e.cleanRequests()})):(e.requests[o]&&(e.requests[o].success=!0,e.requests[o].response={status:n.status,statusText:n.statusText,responseText:""}),e.calcRequestTime(o),e.cleanRequests())}catch(i){}}},onFetchFailed:function(t,n){!e.stopped&&n&&e.requests&&e.requests[n]&&(e.requests[n].success=!1,e.calcRequestTime(n),e.cleanRequests())},onOpen:function(t,n){e.stopped||(t&&t.bbRequestId&&n.length>=2&&e.requests&&(e.requests[t.bbRequestId]={type:n[0],url:n[1],date:new Date}),e.cleanRequests())},onSend:function(t,n){e.stopped||(t&&t.bbRequestId&&e.requests&&e.requests[t.bbRequestId]&&(e.requests[t.bbRequestId].request={payload:e.preparePayload(n.length>0?n[0]:"{}"),headers:t.requestHeaders}),e.cleanRequests())},onError:function(t,n){!e.stopped&&e.requests&&t&&t.currentTarget&&t.currentTarget.bbRequestId&&e.requests[t.currentTarget.bbRequestId]&&(e.requests[t.currentTarget.bbRequestId].success=!1,e.calcRequestTime(t.bbRequestId)),e.cleanRequests()},onLoad:function(t,n){if(!e.stopped){if(t&&t.currentTarget&&t.currentTarget.bbRequestId&&e.requests&&e.requests[t.currentTarget.bbRequestId]){var o=t.currentTarget,r=o.responseType,i="<"+r+">";""!==r&&"text"!==r||(i=e.cleanupContentSize(o.responseText)),e.requests[o.bbRequestId].success=!0,e.requests[o.bbRequestId].response={status:o.status,statusText:o.statusText,responseText:i},e.calcRequestTime(o.bbRequestId)}e.cleanRequests()}}})}}},{key:"interceptNetworkRequests",value:function(e){var t,n=this,o=XMLHttpRequest.prototype.open,r=XMLHttpRequest.prototype.send;return void 0===XMLHttpRequest.prototype.gleapSetRequestHeader&&(XMLHttpRequest.prototype.gleapSetRequestHeader=XMLHttpRequest.prototype.setRequestHeader),XMLHttpRequest.prototype.gleapSetRequestHeader&&(XMLHttpRequest.prototype.setRequestHeader=function(e,t){this.requestHeaders||(this.requestHeaders={}),this.requestHeaders&&this.requestHeaders.hasOwnProperty(e)||(this.requestHeaders[e]||(this.requestHeaders[e]=[]),this.requestHeaders[e].push(t),this.gleapSetRequestHeader(e,t))}),XMLHttpRequest.prototype.open=function(){return this.bbRequestId=++n.requestId,e.onOpen&&e.onOpen(this,arguments),e.onLoad&&this.addEventListener("load",e.onLoad.bind(e)),e.onError&&this.addEventListener("error",e.onError.bind(e)),o.apply(this,arguments)},XMLHttpRequest.prototype.send=function(){return e.onSend&&e.onSend(this,arguments),r.apply(this,arguments)},window.fetch&&(t=window.fetch,window.fetch=function(){var o=++n.requestId;return e.onFetch(arguments,o),t.apply(this,arguments).then((function(t){if(t&&"function"==typeof t.clone){var n=t.clone();e.onFetchLoad(n,o)}return t})).catch((function(t){throw e.onFetchFailed(t,o),t}))}),e}},{key:"blobToTextPromise",value:function(e){return new Promise((function(t,n){var o=new FileReader;o.onload=function(e){e&&e.target&&e.target.result?t(e.target.result):n()},o.onerror=function(e){n(e)},o.readAsText(e)}))}}],o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],n&&f(t.prototype,n),o&&f(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();m(v,"instance",void 0);const y=v;var b=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:400,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:400;return new Promise((function(o,r){var i=0===e.indexOf("data:image/jpeg"),a=new Image;a.src=e,a.onerror=function(){r()},a.onload=function(){var e=document.createElement("canvas"),r=t,s=n;t>a.width/1.5&&(r=a.width/1.5),n>a.height/1.5&&(s=a.height/1.5);var l=a.width,c=a.height;l>c?l>r&&(c*=r/l,l=r):c>s&&(l*=s/c,c=s),e.width=l,e.height=c,e.getContext("2d").drawImage(a,0,0,l,c),o(i?e.toDataURL("image/jpeg",.7):e.toDataURL())}}))},w=function(){return!(!/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(navigator.userAgent)&&!/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(navigator.userAgent.substr(0,4)))},k=function(e){if("string"==typeof e||e instanceof String)try{return JSON.parse(e)}catch(t){return{}}return e},x=function(e,t){return e.length>t?e.slice(0,t)+"...":e},S=function(e){try{var t=e.split("."),n=!1,o=t[t.length-2];return"co"!==o&&"com"!==o&&"gv"!==o&&"ac"!==o&&"edu"!==o&&"gov"!==o&&"mil"!==o&&"net"!==o&&"org"!==o||(n=!0),(t=t.slice(n?-3:-2)).join(".")}catch(r){}return e},C=function(e){try{var t=localStorage.getItem("gleap-widget-".concat(e));if(t)return JSON.parse(t)}catch(n){}return null},I=function(e,t){var n="gleap-widget-".concat(e);if(t)try{localStorage.setItem(n,JSON.stringify(t))}catch(o){}else localStorage.removeItem(n)},E=function(e){"complete"===document.readyState||"loaded"===document.readyState||"interactive"===document.readyState?e():document.addEventListener("DOMContentLoaded",(function(){e()}))};function T(e){return T="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},T(e)}function O(e,t){for(var n=0;n=200&&i.status<300)try{var e=i.responseText?JSON.parse(i.responseText):null;o(e)}catch(t){r({status:i.status,statusText:"JSON Parse Error",responseText:i.responseText,error:t})}else r({status:i.status,statusText:i.statusText,responseText:i.responseText})},i.onerror=function(){r({status:0,statusText:"Network Error",responseText:null})},i.send(n?JSON.stringify(n):null)}))}},{key:"_createCacheKey",value:function(e,t){return t?"".concat(e,"::").concat(t):e}},{key:"validateChecklist",value:function(e,t){var n=this,o=this._createCacheKey(e,t),r=this.validationCache.get(o);if(r)return r.status===M?Promise.resolve(r.internalId):Promise.reject(r.error);if(this.validationRequests.has(o))return this.validationRequests.get(o);var i=this._getApiUrl();if(!i){var a=new Error("ChecklistNetworkManager: Gleap API URL not configured.");return this.validationCache.set(o,{status:R,error:a}),Promise.reject(a)}var s="".concat(i,"/outbound/checklists?").concat(this._getQueryParams()),l=this._makeRequest("POST",s,{outboundId:e,sharedKey:t}).then((function(e){if(e&&e.id)return n.validationCache.set(o,{status:M,internalId:e.id}),e.id;var t=new Error("Validation response missing checklist ID.");throw n.validationCache.set(o,{status:R,error:e||t}),t})).catch((function(e){throw n.validationCache.set(o,{status:R,error:e}),e})).finally((function(){n.validationRequests.delete(o)}));return this.validationRequests.set(o,l),l}},{key:"fetchChecklist",value:function(e){var t=this,n=this.fetchCache.get(e);if(n)return n.status===M?Promise.resolve(JSON.parse(JSON.stringify(n.data))):Promise.reject(n.error);if(this.fetchRequests.has(e))return this.fetchRequests.get(e).then((function(e){return JSON.parse(JSON.stringify(e))}));var o=this._getApiUrl();if(!o){var r=new Error("ChecklistNetworkManager: Gleap API URL not configured.");return this.fetchCache.set(e,{status:R,error:r}),Promise.reject(r)}var i="".concat(o,"/outbound/checklists/").concat(e,"?convertTipTap=true&").concat(this._getQueryParams()),a=this._makeRequest("GET",i,null).then((function(n){if(n)return t.fetchCache.set(e,{status:M,data:n}),JSON.parse(JSON.stringify(n));var o=new Error("Empty response received for checklist fetch.");throw t.fetchCache.set(e,{status:R,error:n||o}),o})).catch((function(n){throw t.fetchCache.set(e,{status:R,error:n}),n})).finally((function(){t.fetchRequests.delete(e)}));return this.fetchRequests.set(e,a),a.then((function(e){return JSON.parse(JSON.stringify(e))}))}}],o=[{key:"getInstance",value:function(){return e.instance||(e.instance=new e),e.instance}}],n&&O(t.prototype,n),o&&O(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();L(P,"instance",null);const D=P,N=Math.min,j=Math.max,F=Math.round,B=Math.floor,_=e=>({x:e,y:e}),U={left:"right",right:"left",bottom:"top",top:"bottom"},H={start:"end",end:"start"};function z(e,t,n){return j(e,N(t,n))}function q(e,t){return"function"==typeof e?e(t):e}function W(e){return e.split("-")[0]}function V(e){return e.split("-")[1]}function G(e){return"x"===e?"y":"x"}function X(e){return"y"===e?"height":"width"}function Y(e){return["top","bottom"].includes(W(e))?"y":"x"}function J(e){return G(Y(e))}function K(e){return e.replace(/start|end/g,(e=>H[e]))}function Z(e){return e.replace(/left|right|bottom|top/g,(e=>U[e]))}function $(e){return"number"!=typeof e?function(e){return{top:0,right:0,bottom:0,left:0,...e}}(e):{top:e,right:e,bottom:e,left:e}}function Q(e){return{...e,top:e.y,left:e.x,right:e.x+e.width,bottom:e.y+e.height}}function ee(e,t,n){let{reference:o,floating:r}=e;const i=Y(t),a=J(t),s=X(a),l=W(t),c="y"===i,u=o.x+o.width/2-r.width/2,d=o.y+o.height/2-r.height/2,p=o[s]/2-r[s]/2;let h;switch(l){case"top":h={x:u,y:o.y-r.height};break;case"bottom":h={x:u,y:o.y+o.height};break;case"right":h={x:o.x+o.width,y:d};break;case"left":h={x:o.x-r.width,y:d};break;default:h={x:o.x,y:o.y}}switch(V(t)){case"start":h[a]-=p*(n&&c?-1:1);break;case"end":h[a]+=p*(n&&c?-1:1)}return h}async function te(e,t){var n;void 0===t&&(t={});const{x:o,y:r,platform:i,rects:a,elements:s,strategy:l}=e,{boundary:c="clippingAncestors",rootBoundary:u="viewport",elementContext:d="floating",altBoundary:p=!1,padding:h=0}=q(t,e),f=$(h),m=s[p?"floating"===d?"reference":"floating":d],g=Q(await i.getClippingRect({element:null==(n=await(null==i.isElement?void 0:i.isElement(m)))||n?m:m.contextElement||await(null==i.getDocumentElement?void 0:i.getDocumentElement(s.floating)),boundary:c,rootBoundary:u,strategy:l})),v="floating"===d?{...a.floating,x:o,y:r}:a.reference,y=await(null==i.getOffsetParent?void 0:i.getOffsetParent(s.floating)),b=await(null==i.isElement?void 0:i.isElement(y))&&await(null==i.getScale?void 0:i.getScale(y))||{x:1,y:1},w=Q(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:s,rect:v,offsetParent:y,strategy:l}):v);return{top:(g.top-w.top+f.top)/b.y,bottom:(w.bottom-g.bottom+f.bottom)/b.y,left:(g.left-w.left+f.left)/b.x,right:(w.right-g.right+f.right)/b.x}}const ne=function(e){return void 0===e&&(e=0),{name:"offset",options:e,async fn(t){var n,o;const{x:r,y:i,placement:a,middlewareData:s}=t,l=await async function(e,t){const{placement:n,platform:o,elements:r}=e,i=await(null==o.isRTL?void 0:o.isRTL(r.floating)),a=W(n),s=V(n),l="y"===Y(n),c=["left","top"].includes(a)?-1:1,u=i&&l?-1:1,d=q(t,e);let{mainAxis:p,crossAxis:h,alignmentAxis:f}="number"==typeof d?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...d};return s&&"number"==typeof f&&(h="end"===s?-1*f:f),l?{x:h*u,y:p*c}:{x:p*c,y:h*u}}(t,e);return a===(null==(n=s.offset)?void 0:n.placement)&&null!=(o=s.arrow)&&o.alignmentOffset?{}:{x:r+l.x,y:i+l.y,data:{...l,placement:a}}}}};function oe(e){return ae(e)?(e.nodeName||"").toLowerCase():"#document"}function re(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function ie(e){var t;return null==(t=(ae(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement}function ae(e){return e instanceof Node||e instanceof re(e).Node}function se(e){return e instanceof Element||e instanceof re(e).Element}function le(e){return e instanceof HTMLElement||e instanceof re(e).HTMLElement}function ce(e){return"undefined"!=typeof ShadowRoot&&(e instanceof ShadowRoot||e instanceof re(e).ShadowRoot)}function ue(e){const{overflow:t,overflowX:n,overflowY:o,display:r}=me(e);return/auto|scroll|overlay|hidden|clip/.test(t+o+n)&&!["inline","contents"].includes(r)}function de(e){return["table","td","th"].includes(oe(e))}function pe(e){const t=he(),n=me(e);return"none"!==n.transform||"none"!==n.perspective||!!n.containerType&&"normal"!==n.containerType||!t&&!!n.backdropFilter&&"none"!==n.backdropFilter||!t&&!!n.filter&&"none"!==n.filter||["transform","perspective","filter"].some((e=>(n.willChange||"").includes(e)))||["paint","layout","strict","content"].some((e=>(n.contain||"").includes(e)))}function he(){return!("undefined"==typeof CSS||!CSS.supports)&&CSS.supports("-webkit-backdrop-filter","none")}function fe(e){return["html","body","#document"].includes(oe(e))}function me(e){return re(e).getComputedStyle(e)}function ge(e){return se(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function ve(e){if("html"===oe(e))return e;const t=e.assignedSlot||e.parentNode||ce(e)&&e.host||ie(e);return ce(t)?t.host:t}function ye(e){const t=ve(e);return fe(t)?e.ownerDocument?e.ownerDocument.body:e.body:le(t)&&ue(t)?t:ye(t)}function be(e,t,n){var o;void 0===t&&(t=[]),void 0===n&&(n=!0);const r=ye(e),i=r===(null==(o=e.ownerDocument)?void 0:o.body),a=re(r);return i?t.concat(a,a.visualViewport||[],ue(r)?r:[],a.frameElement&&n?be(a.frameElement):[]):t.concat(r,be(r,[],n))}function we(e){const t=me(e);let n=parseFloat(t.width)||0,o=parseFloat(t.height)||0;const r=le(e),i=r?e.offsetWidth:n,a=r?e.offsetHeight:o,s=F(n)!==i||F(o)!==a;return s&&(n=i,o=a),{width:n,height:o,$:s}}function ke(e){return se(e)?e:e.contextElement}function xe(e){const t=ke(e);if(!le(t))return _(1);const n=t.getBoundingClientRect(),{width:o,height:r,$:i}=we(t);let a=(i?F(n.width):n.width)/o,s=(i?F(n.height):n.height)/r;return a&&Number.isFinite(a)||(a=1),s&&Number.isFinite(s)||(s=1),{x:a,y:s}}const Se=_(0);function Ce(e){const t=re(e);return he()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:Se}function Ie(e,t,n,o){void 0===t&&(t=!1),void 0===n&&(n=!1);const r=e.getBoundingClientRect(),i=ke(e);let a=_(1);t&&(o?se(o)&&(a=xe(o)):a=xe(e));const s=function(e,t,n){return void 0===t&&(t=!1),!(!n||t&&n!==re(e))&&t}(i,n,o)?Ce(i):_(0);let l=(r.left+s.x)/a.x,c=(r.top+s.y)/a.y,u=r.width/a.x,d=r.height/a.y;if(i){const e=re(i),t=o&&se(o)?re(o):o;let n=e,r=n.frameElement;for(;r&&o&&t!==n;){const e=xe(r),t=r.getBoundingClientRect(),o=me(r),i=t.left+(r.clientLeft+parseFloat(o.paddingLeft))*e.x,a=t.top+(r.clientTop+parseFloat(o.paddingTop))*e.y;l*=e.x,c*=e.y,u*=e.x,d*=e.y,l+=i,c+=a,n=re(r),r=n.frameElement}}return Q({width:u,height:d,x:l,y:c})}const Ee=[":popover-open",":modal"];function Te(e){return Ee.some((t=>{try{return e.matches(t)}catch(n){return!1}}))}function Oe(e){return Ie(ie(e)).left+ge(e).scrollLeft}function Le(e,t,n){let o;if("viewport"===t)o=function(e,t){const n=re(e),o=ie(e),r=n.visualViewport;let i=o.clientWidth,a=o.clientHeight,s=0,l=0;if(r){i=r.width,a=r.height;const e=he();(!e||e&&"fixed"===t)&&(s=r.offsetLeft,l=r.offsetTop)}return{width:i,height:a,x:s,y:l}}(e,n);else if("document"===t)o=function(e){const t=ie(e),n=ge(e),o=e.ownerDocument.body,r=j(t.scrollWidth,t.clientWidth,o.scrollWidth,o.clientWidth),i=j(t.scrollHeight,t.clientHeight,o.scrollHeight,o.clientHeight);let a=-n.scrollLeft+Oe(e);const s=-n.scrollTop;return"rtl"===me(o).direction&&(a+=j(t.clientWidth,o.clientWidth)-r),{width:r,height:i,x:a,y:s}}(ie(e));else if(se(t))o=function(e,t){const n=Ie(e,!0,"fixed"===t),o=n.top+e.clientTop,r=n.left+e.clientLeft,i=le(e)?xe(e):_(1);return{width:e.clientWidth*i.x,height:e.clientHeight*i.y,x:r*i.x,y:o*i.y}}(t,n);else{const n=Ce(e);o={...t,x:t.x-n.x,y:t.y-n.y}}return Q(o)}function Ae(e,t){const n=ve(e);return!(n===t||!se(n)||fe(n))&&("fixed"===me(n).position||Ae(n,t))}function Me(e,t,n){const o=le(t),r=ie(t),i="fixed"===n,a=Ie(e,!0,i,t);let s={scrollLeft:0,scrollTop:0};const l=_(0);if(o||!o&&!i)if(("body"!==oe(t)||ue(r))&&(s=ge(t)),o){const e=Ie(t,!0,i,t);l.x=e.x+t.clientLeft,l.y=e.y+t.clientTop}else r&&(l.x=Oe(r));return{x:a.left+s.scrollLeft-l.x,y:a.top+s.scrollTop-l.y,width:a.width,height:a.height}}function Re(e,t){return le(e)&&"fixed"!==me(e).position?t?t(e):e.offsetParent:null}function Pe(e,t){const n=re(e);if(!le(e)||Te(e))return n;let o=Re(e,t);for(;o&&de(o)&&"static"===me(o).position;)o=Re(o,t);return o&&("html"===oe(o)||"body"===oe(o)&&"static"===me(o).position&&!pe(o))?n:o||function(e){let t=ve(e);for(;le(t)&&!fe(t);){if(pe(t))return t;t=ve(t)}return null}(e)||n}const De={convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{elements:t,rect:n,offsetParent:o,strategy:r}=e;const i="fixed"===r,a=ie(o),s=!!t&&Te(t.floating);if(o===a||s&&i)return n;let l={scrollLeft:0,scrollTop:0},c=_(1);const u=_(0),d=le(o);if((d||!d&&!i)&&(("body"!==oe(o)||ue(a))&&(l=ge(o)),le(o))){const e=Ie(o);c=xe(o),u.x=e.x+o.clientLeft,u.y=e.y+o.clientTop}return{width:n.width*c.x,height:n.height*c.y,x:n.x*c.x-l.scrollLeft*c.x+u.x,y:n.y*c.y-l.scrollTop*c.y+u.y}},getDocumentElement:ie,getClippingRect:function(e){let{element:t,boundary:n,rootBoundary:o,strategy:r}=e;const i="clippingAncestors"===n?function(e,t){const n=t.get(e);if(n)return n;let o=be(e,[],!1).filter((e=>se(e)&&"body"!==oe(e))),r=null;const i="fixed"===me(e).position;let a=i?ve(e):e;for(;se(a)&&!fe(a);){const t=me(a),n=pe(a);n||"fixed"!==t.position||(r=null),(i?!n&&!r:!n&&"static"===t.position&&r&&["absolute","fixed"].includes(r.position)||ue(a)&&!n&&Ae(e,a))?o=o.filter((e=>e!==a)):r=t,a=ve(a)}return t.set(e,o),o}(t,this._c):[].concat(n),a=[...i,o],s=a[0],l=a.reduce(((e,n)=>{const o=Le(t,n,r);return e.top=j(o.top,e.top),e.right=N(o.right,e.right),e.bottom=N(o.bottom,e.bottom),e.left=j(o.left,e.left),e}),Le(t,s,r));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}},getOffsetParent:Pe,getElementRects:async function(e){const t=this.getOffsetParent||Pe,n=this.getDimensions;return{reference:Me(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,...await n(e.floating)}}},getClientRects:function(e){return Array.from(e.getClientRects())},getDimensions:function(e){const{width:t,height:n}=we(e);return{width:t,height:n}},getScale:xe,isElement:se,isRTL:function(e){return"rtl"===me(e).direction}};function Ne(e,t,n,o){void 0===o&&(o={});const{ancestorScroll:r=!0,ancestorResize:i=!0,elementResize:a="function"==typeof ResizeObserver,layoutShift:s="function"==typeof IntersectionObserver,animationFrame:l=!1}=o,c=ke(e),u=r||i?[...c?be(c):[],...be(t)]:[];u.forEach((e=>{r&&e.addEventListener("scroll",n,{passive:!0}),i&&e.addEventListener("resize",n)}));const d=c&&s?function(e,t){let n,o=null;const r=ie(e);function i(){var e;clearTimeout(n),null==(e=o)||e.disconnect(),o=null}return function a(s,l){void 0===s&&(s=!1),void 0===l&&(l=1),i();const{left:c,top:u,width:d,height:p}=e.getBoundingClientRect();if(s||t(),!d||!p)return;const h={rootMargin:-B(u)+"px "+-B(r.clientWidth-(c+d))+"px "+-B(r.clientHeight-(u+p))+"px "+-B(c)+"px",threshold:j(0,N(1,l))||1};let f=!0;function m(e){const t=e[0].intersectionRatio;if(t!==l){if(!f)return a();t?a(!1,t):n=setTimeout((()=>{a(!1,1e-7)}),100)}f=!1}try{o=new IntersectionObserver(m,{...h,root:r.ownerDocument})}catch(g){o=new IntersectionObserver(m,h)}o.observe(e)}(!0),i}(c,n):null;let p,h=-1,f=null;a&&(f=new ResizeObserver((e=>{let[o]=e;o&&o.target===c&&f&&(f.unobserve(t),cancelAnimationFrame(h),h=requestAnimationFrame((()=>{var e;null==(e=f)||e.observe(t)}))),n()})),c&&!l&&f.observe(c),f.observe(t));let m=l?Ie(e):null;return l&&function t(){const o=Ie(e);!m||o.x===m.x&&o.y===m.y&&o.width===m.width&&o.height===m.height||n();m=o,p=requestAnimationFrame(t)}(),n(),()=>{var e;u.forEach((e=>{r&&e.removeEventListener("scroll",n),i&&e.removeEventListener("resize",n)})),null==d||d(),null==(e=f)||e.disconnect(),f=null,l&&cancelAnimationFrame(p)}}const je=function(e){return void 0===e&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:o,placement:r}=t,{mainAxis:i=!0,crossAxis:a=!1,limiter:s={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...l}=q(e,t),c={x:n,y:o},u=await te(t,l),d=Y(W(r)),p=G(d);let h=c[p],f=c[d];if(i){const e="y"===p?"bottom":"right";h=z(h+u["y"===p?"top":"left"],h,h-u[e])}if(a){const e="y"===d?"bottom":"right";f=z(f+u["y"===d?"top":"left"],f,f-u[e])}const m=s.fn({...t,[p]:h,[d]:f});return{...m,data:{x:m.x-n,y:m.y-o}}}}},Fe=function(e){return void 0===e&&(e={}),{name:"flip",options:e,async fn(t){var n,o;const{placement:r,middlewareData:i,rects:a,initialPlacement:s,platform:l,elements:c}=t,{mainAxis:u=!0,crossAxis:d=!0,fallbackPlacements:p,fallbackStrategy:h="bestFit",fallbackAxisSideDirection:f="none",flipAlignment:m=!0,...g}=q(e,t);if(null!=(n=i.arrow)&&n.alignmentOffset)return{};const v=W(r),y=W(s)===s,b=await(null==l.isRTL?void 0:l.isRTL(c.floating)),w=p||(y||!m?[Z(s)]:function(e){const t=Z(e);return[K(e),t,K(t)]}(s));p||"none"===f||w.push(...function(e,t,n,o){const r=V(e);let i=function(e,t,n){const o=["left","right"],r=["right","left"],i=["top","bottom"],a=["bottom","top"];switch(e){case"top":case"bottom":return n?t?r:o:t?o:r;case"left":case"right":return t?i:a;default:return[]}}(W(e),"start"===n,o);return r&&(i=i.map((e=>e+"-"+r)),t&&(i=i.concat(i.map(K)))),i}(s,m,f,b));const k=[s,...w],x=await te(t,g),S=[];let C=(null==(o=i.flip)?void 0:o.overflows)||[];if(u&&S.push(x[v]),d){const e=function(e,t,n){void 0===n&&(n=!1);const o=V(e),r=J(e),i=X(r);let a="x"===r?o===(n?"end":"start")?"right":"left":"start"===o?"bottom":"top";return t.reference[i]>t.floating[i]&&(a=Z(a)),[a,Z(a)]}(r,a,b);S.push(x[e[0]],x[e[1]])}if(C=[...C,{placement:r,overflows:S}],!S.every((e=>e<=0))){var I,E;const e=((null==(I=i.flip)?void 0:I.index)||0)+1,t=k[e];if(t)return{data:{index:e,overflows:C},reset:{placement:t}};let n=null==(E=C.filter((e=>e.overflows[0]<=0)).sort(((e,t)=>e.overflows[1]-t.overflows[1]))[0])?void 0:E.placement;if(!n)switch(h){case"bestFit":{var T;const e=null==(T=C.map((e=>[e.placement,e.overflows.filter((e=>e>0)).reduce(((e,t)=>e+t),0)])).sort(((e,t)=>e[1]-t[1]))[0])?void 0:T[0];e&&(n=e);break}case"initialPlacement":n=s}if(r!==n)return{reset:{placement:n}}}return{}}}},Be=e=>({name:"arrow",options:e,async fn(t){const{x:n,y:o,placement:r,rects:i,platform:a,elements:s,middlewareData:l}=t,{element:c,padding:u=0}=q(e,t)||{};if(null==c)return{};const d=$(u),p={x:n,y:o},h=J(r),f=X(h),m=await a.getDimensions(c),g="y"===h,v=g?"top":"left",y=g?"bottom":"right",b=g?"clientHeight":"clientWidth",w=i.reference[f]+i.reference[h]-p[h]-i.floating[f],k=p[h]-i.reference[h],x=await(null==a.getOffsetParent?void 0:a.getOffsetParent(c));let S=x?x[b]:0;S&&await(null==a.isElement?void 0:a.isElement(x))||(S=s.floating[b]||i.floating[f]);const C=w/2-k/2,I=S/2-m[f]/2-1,E=N(d[v],I),T=N(d[y],I),O=E,L=S-m[f]-T,A=S/2-m[f]/2+C,M=z(O,A,L),R=!l.arrow&&null!=V(r)&&A!==M&&i.reference[f]/2-(A{const o=new Map,r={platform:De,...n},i={...r.platform,_c:o};return(async(e,t,n)=>{const{placement:o="bottom",strategy:r="absolute",middleware:i=[],platform:a}=n,s=i.filter(Boolean),l=await(null==a.isRTL?void 0:a.isRTL(t));let c=await a.getElementRects({reference:e,floating:t,strategy:r}),{x:u,y:d}=ee(c,o,l),p=o,h={},f=0;for(let m=0;me.length)&&(t=e.length);for(var n=0,o=new Array(t);n'):""),i.appendChild(a),t.repositionHotspot(e,n),r=a,t.elementToTooltipMap.set(e,n)}else r=e;var s=t.createTooltip(r,n.html,n);t.elementToFloatingUIMap.set(e,s)}}})),Ve(this,"updateFilteredTooltips",(function(){t.filteredTooltips=t.getFilteredTooltips(),t.checkForTooltips()})),Ve(this,"getFilteredTooltips",(function(){if(!t.tooltips)return[];var e=window.location.href;return t.tooltips.filter((function(t){return!t.page||0===t.page.length||!!Ue(e,t.page,t.pageType)}))})),Ve(this,"checkForTooltips",(function(){for(var e=0;e0&&this.filteredTooltips.forEach((function(n){n.selector&&e.matches(n.selector)&&t.linkTooltip(e,n)}))}},{key:"start",value:function(){var e=this,t=this;if(window){var n,o,r,i=(n=t.updateHotspotPositions.bind(t),o=250,r=null,function(){if(!r){var e=this,t=arguments;r=setTimeout((function(){n.call.apply(n,[e].concat(ze(t))),r=null}),o)}});window.addEventListener("resize",i),window.requestAnimationFrame((function(){e.observer=new MutationObserver((function(n){t.lastUrl!==window.location.href&&(t.lastUrl=window.location.href,t.filteredTooltips=t.getFilteredTooltips()),n.forEach((function(n){if("attributes"===n.type){var o=n.target;o.nodeType===Node.ELEMENT_NODE&&(o.querySelector("[data-gleap-tooltip-hotspot]")||o.hasAttribute("data-gleap-tooltip-mode")||o.hasAttribute("data-gleap-tooltip"))&&t.updateHotspotPositions()}n.addedNodes.forEach((function(e){e.nodeType===Node.ELEMENT_NODE&&t.processNodeInsertion(e)})),n.removedNodes.forEach((function(t){if(t.nodeType===Node.ELEMENT_NODE&&e.elementToFloatingUIMap.has(t)){var n=e.elementToFloatingUIMap.get(t);n&&(n.tooltip&&n.tooltip.remove(),n.cleanup(),e.elementToFloatingUIMap.delete(t))}e.elementToTooltipMap.has(t)&&e.elementToTooltipMap.delete(t)}))}))})),e.observer.observe(document.body,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["style","class"]})}))}}},{key:"updateHotspotPositions",value:function(){var e=this;document.querySelectorAll("[data-gleap-tooltip-mode='hotspot']").forEach((function(t){var n=e.elementToTooltipMap.get(t);n&&e.repositionHotspot(t,n)}))}},{key:"createTooltip",value:function(e,t,n){var o=document.createElement("div");o.className="gleap-tooltip",o.innerHTML='
\n '.concat(t,'\n
\n \n \n \n
\n
'),document.body.appendChild(o);var r,i=o.querySelector(".gleap-tooltip-arrow"),a=Ne(e,o,(function(){_e(e,o,{placement:"left"===n.posX?"left":"right",middleware:[ne(10),Fe(),je(),Be({element:i})]}).then((function(e){var t=e.x,n=e.y,r=e.middlewareData,a=e.placement;try{if(Object.assign(o.style,{left:"".concat(t,"px"),top:"".concat(n,"px")}),r.arrow){var s={left:"",top:"",transform:""};null!=r.arrow.x&&(s.left="".concat(r.arrow.x,"px"),"bottom"===a?(s.transform="translateY(-7px) rotate(180deg)",s.top="".concat(-20,"px")):"top"===a&&(s.transform="translateY(7px) rotate(0deg)",s.top="100%")),null!=r.arrow.y&&(s.top="".concat(r.arrow.y,"px"),"right"===a?(s.transform="translateX(-7px) rotate(90deg)",s.left="".concat(-20,"px")):"left"===a&&(s.transform="translateX(7px) rotate(270deg)",s.left="100%")),Object.assign(i.style,s)}}catch(l){}}))}));function s(){clearTimeout(r),o.style.visibility="visible",o.style.opacity="1",o.style.pointerEvents="auto"}function l(){r=setTimeout((function(){o.style.opacity="0",setTimeout((function(){o.style.visibility="hidden",o.style.pointerEvents="none"}),200)}),500)}return e.addEventListener("mouseenter",s),e.addEventListener("mouseleave",l),o.addEventListener("mouseenter",s),o.addEventListener("mouseleave",l),{cleanup:a,tooltip:o}}},{key:"canEmbed",value:function(e){var t=new Set(["area","base","br","embed","hr","img","input","source","track","wbr","canvas"]);return e&&!t.has(e.tagName.toLowerCase())}},{key:"destroy",value:function(){this.observer&&(this.observer.disconnect(),this.observer=null),this.resizeListener&&(window.removeEventListener("resize",this.resizeListener),this.resizeListener=null),document.querySelectorAll(".gleap-tooltip").forEach((function(e){return e.remove()})),document.querySelectorAll("[data-gleap-tooltip-anchor]").forEach((function(e){return e.remove()})),document.querySelectorAll("[data-gleap-tooltip-hotspot]").forEach((function(e){return e.remove()})),document.querySelectorAll("[data-gleap-tooltip]").forEach((function(e){return e.removeAttribute("data-gleap-tooltip")})),document.querySelectorAll("[data-gleap-tooltip-mode]").forEach((function(e){return e.removeAttribute("data-gleap-tooltip-mode")})),this.elementToFloatingUIMap=new WeakMap,this.elementToTooltipMap=new WeakMap,this.tooltips=[],this.filteredTooltips=[]}},{key:"repositionHotspot",value:function(e,t){if(e&&t){var n=e.getAttribute("data-gleap-tooltip");if(n){var o=document.querySelector('[data-gleap-tooltip-hotspot="'.concat(n,'"]'));if(o){t.posX||(t.posX="right"),t.posY||(t.posY="center"),t.offsetX||(t.offsetX=4),t.offsetY||(t.offsetY=0);var r=e.getBoundingClientRect();try{var i=document.createRange();i.selectNodeContents(e);var a=window.getComputedStyle(e),s=i.getBoundingClientRect().width+parseFloat(a.paddingLeft);s0&&void 0!==arguments[0]?arguments[0]:0,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];t.session&&t.session.gleapHash&&Tn.notifyEvent("unregister-pushmessage-group","gleapuser-".concat(t.session.gleapHash));try{I("session-".concat(t.sdkKey),null)}catch(r){}if(t.useCookies)try{!function(e){try{var t=S(window.location.host.split(":")[0]);document.cookie=e+"=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT; Domain="+t}catch(r){}}("session-".concat(t.sdkKey))}catch(r){}if(t.ready=!1,t.session={gleapId:null,gleapHash:null,name:"",email:"",userId:"",phone:"",value:0},Zt.getInstance().sendMessage({name:"session-cleared"},!0),jh.getInstance().clearAllNotifications(!1),jh.getInstance().setNotificationCount(0),qh.getInstance().removeBannerUI(),Kh.getInstance().hideModal(),n&&!isNaN(e)){var o=10*Math.pow(e,2);setTimeout((function(){t.startSession(e+1)}),1e3*o)}})),$e(this,"validateSession",(function(e){var n;if(e&&e.gleapId){var o=!1;(null===(n=t.session)||void 0===n?void 0:n.gleapId)!==(null==e?void 0:e.gleapId)&&(o=!0),t.session&&t.session.gleapHash&&Tn.notifyEvent("unregister-pushmessage-group","gleapuser-".concat(t.session.gleapHash)),I("session-".concat(t.sdkKey),e),t.useCookies&&function(e,t,n){try{var o="";if(n){var r=new Date;r.setTime(r.getTime()+24*n*60*60*1e3),o="; expires="+r.toUTCString()}var i=S(window.location.host.split(":")[0]);document.cookie=e+"="+(t||"")+o+"; path=/; domain="+i}catch(a){}}("session-".concat(t.sdkKey),encodeURIComponent(JSON.stringify(e)),365),t.session=e,t.ready=!0,t.session&&t.session.gleapHash&&Tn.notifyEvent("register-pushmessage-group","gleapuser-".concat(t.session.gleapHash)),o&&(setTimeout((function(){D.getInstance().clearCache(),it.getInstance().restart();var e=Xe.getInstance();if(e){try{e.destroy()}catch(t){}e.load()}}),0),"function"==typeof window.dispatchEvent&&window.dispatchEvent(new CustomEvent("session-updated"))),t.notifySessionReady()}})),$e(this,"startSession",(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;try{if(t.useCookies){var n=function(e){try{for(var t=e+"=",n=document.cookie.split(";"),o=0;o0)){var r=C("session-".concat(t.sdkKey));r&&t.validateSession(r)}var i=t,a=new XMLHttpRequest;a.open("POST",i.apiUrl+"/sessions"),a.setRequestHeader("Content-Type","application/json;charset=UTF-8"),a.setRequestHeader("Api-Token",i.sdkKey);try{t.session&&t.session.gleapId&&t.session.gleapHash&&(a.setRequestHeader("Gleap-Id",t.session.gleapId),a.setRequestHeader("Gleap-Hash",t.session.gleapHash))}catch(s){}a.onreadystatechange=function(t){if(4===a.readyState)if(200===a.status||201===a.status)try{var n=JSON.parse(a.responseText);i.validateSession(n)}catch(s){}else 429!==a.status&&i.clearSession(e,!0)},a.send(JSON.stringify({lang:kh.getInstance().getActiveLanguage()}))})),$e(this,"checkIfSessionNeedsUpdate",(function(e,n){if(!t.session||!t.session.userId||!e)return!0;try{if(t.session.userId.toString()!==e.toString())return!0}catch(o){}return t.checkIfSessionDataNeedsUpdate(n)})),$e(this,"checkIfSessionDataNeedsUpdate",(function(e){if(e)for(var n=Object.keys(e),o=0;o0)for(var e=0;e2)&&0!==t.streamedEventArray.length&&t.socket&&t.socket.readyState===t.socket.OPEN){var e=t;t.streamingEvents=!0;var n=new XMLHttpRequest;n.open("POST",et.getInstance().apiUrl+"/sessions/ping"),n.setRequestHeader("Content-Type","application/json;charset=UTF-8"),et.getInstance().injectSession(n),n.onerror=function(){e.errorCount++,e.streamingEvents=!1},n.onreadystatechange=function(t){4===n.readyState&&(200===n.status||201===n.status?e.errorCount=0:e.errorCount++,e.streamingEvents=!1)};var o=nn.getInstance().getSessionDuration();n.send(JSON.stringify({time:o,events:t.streamedEventArray,opened:Zt.getInstance().isOpened(),type:"js",sdkVersion:"14.8.11",ws:!0})),t.streamedEventArray=[]}})),this.handleOpenBound=this.handleOpen.bind(this),this.handleErrorBound=this.handleError.bind(this),this.handleMessageBound=this.handleMessage.bind(this),this.handleCloseBound=this.handleClose.bind(this)}var t,n,o;return t=e,o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],(n=[{key:"cleanupWebSocket",value:function(){this.connectionTimeout&&(clearTimeout(this.connectionTimeout),this.connectionTimeout=null),this.pingWS&&clearInterval(this.pingWS),this.socket&&(this.socket.removeEventListener("open",this.handleOpenBound),this.socket.removeEventListener("error",this.handleErrorBound),this.socket.removeEventListener("message",this.handleMessageBound),this.socket.removeEventListener("close",this.handleCloseBound),this.socket.close(),this.socket=null)}},{key:"initWebSocket",value:function(){this.cleanupWebSocket(),this.connectedWebSocketGleapId=et.getInstance().session.gleapId,et.getInstance().session&&et.getInstance().sdkKey&&(this.socket=new WebSocket("".concat(et.getInstance().wsApiUrl,"?gleapId=").concat(et.getInstance().session.gleapId,"&gleapHash=").concat(et.getInstance().session.gleapHash,"&apiKey=").concat(et.getInstance().sdkKey,"&sdkVersion=").concat("14.8.11")),this.socket.addEventListener("open",this.handleOpenBound),this.socket.addEventListener("message",this.handleMessageBound),this.socket.addEventListener("error",this.handleErrorBound),this.socket.addEventListener("close",this.handleCloseBound))}},{key:"handleOpen",value:function(e){var t=this;this.pingWS=setInterval((function(){t.socket.readyState===t.socket.OPEN&&(t.socket.send("PING"),t.socket.send(9))}),1e4),this.connectionTimeout&&(clearTimeout(this.connectionTimeout),this.connectionTimeout=null)}},{key:"handleMessage",value:function(e){this.processMessage(JSON.parse(e.data))}},{key:"handleError",value:function(e){}},{key:"handleClose",value:function(e){var t=this;setTimeout((function(){t.initWebSocket()}),5e3)}},{key:"processMessage",value:function(e){try{if("update"===e.name){var t=e.data,n=t.a,o=t.u,r=Zt.getInstance().isOpened();if(n){var i=["banner","modal"],a=n.filter((function(e){var t;return!r||i.includes(null==e||null===(t=e.actionType)||void 0===t?void 0:t.toLowerCase())}));Wm.getInstance().performActions(a)}null!=o&&jh.getInstance().setNotificationCount(o)}"checklist"===e.name&&null!=e&&e.data&&window&&"function"==typeof window.dispatchEvent&&window.dispatchEvent(new CustomEvent("checkListUpdate",{detail:e.data}))}catch(s){}}},{key:"getEventArray",value:function(){return this.eventArray}},{key:"stop",value:function(){this.cleanupMainLoop()}},{key:"resetErrorCountLoop",value:function(){var e=this;setInterval((function(){e.errorCount=0}),6e4)}},{key:"cleanupMainLoop",value:function(){this.mainLoopTimeout&&(clearInterval(this.mainLoopTimeout),this.mainLoopTimeout=null)}},{key:"restart",value:function(){this.connectedWebSocketGleapId!==et.getInstance().session.gleapId&&this.initWebSocket(),this.cleanupMainLoop(),this.trackInitialEvents(),this.runEventStreamLoop()}},{key:"start",value:function(){this.startPageListener(),this.resetErrorCountLoop()}},{key:"trackInitialEvents",value:function(){e.getInstance().logEvent("sessionStarted"),e.getInstance().logCurrentPage()}},{key:"logCurrentPage",value:function(){if(!Wm.getInstance().disablePageTracking){var e=window.location.href;e&&e!==this.lastUrl&&(this.lastUrl=e,this.logEvent("pageView",{page:e}))}}},{key:"startPageListener",value:function(){var e=this;setInterval((function(){e.logCurrentPage()}),1e3)}},{key:"logEvent",value:function(e,t){var n={name:e,date:new Date};t&&(n.data=k(t)),this.eventArray.push(n),this.streamedEventArray.push(n),this.eventArray.length>this.eventMaxLength&&this.eventArray.shift(),this.streamedEventArray.length>this.eventMaxLength&&this.streamedEventArray.shift()}}])&&nt(t.prototype,n),o&&nt(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function at(e){return at="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},at(e)}function st(e,t){for(var n=0;n0)for(var e=0;e=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var l=o.call(a,"catchLoc"),c=o.call(a,"finallyLoc");if(l&&c){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&o.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),L(n),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var o=n.completion;if("throw"===o.type){var r=o.arg;L(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,o){return this.delegate={iterator:M(t),resultName:n,nextLoc:o},"next"===this.method&&(this.arg=e),g}},t}function ft(e,t,n,o,r,i,a){try{var s=e[i](a),l=s.value}catch(c){return void n(c)}s.done?t(l):Promise.resolve(l).then(o,r)}function mt(e){return function(){var t=this,n=arguments;return new Promise((function(o,r){var i=e.apply(t,n);function a(e){ft(i,o,r,a,s,"next",e)}function s(e){ft(i,o,r,a,s,"throw",e)}a(void 0)}))}}var gt=function(e){var t="",n=window.document.doctype;if(n&&(t=""),e&&e.childNodes&&e.childNodes.length>0)for(var o=0;o1?t-1:0),r=1;r0||t.scrollLeft>0)&&(s.setAttribute("bb-scrollpos",!0),s.setAttribute("bb-scrolltop",t.scrollTop),s.setAttribute("bb-scrollleft",t.scrollLeft)),"SELECT"!==d&&"TEXTAREA"!==d&&"INPUT"!==d||(h=t.value,("value"===t.getAttribute("gleap-ignore")||t.classList.contains("gl-mask"))&&(h=new Array(h.length+1).join("*")),s.setAttribute("bb-data-value",h),"checkbox"!==t.type&&"radio"!==t.type||!t.checked||s.setAttribute("bb-data-checked",!0))),r.appendChild(s),!t.shadowRoot){e.next=29;break}return f=n,n++,e.next=27,a(t.shadowRoot.firstChild,s,f);case 27:Ct(t.shadowRoot,s,f),void 0!==s.setAttribute&&s.setAttribute("bb-shadow-parent",f);case 29:return e.next=31,a(t.firstChild,s);case 31:case"end":return e.stop()}}),e,null,[[7,17]])})));return function(t,n,o){return e.apply(this,arguments)}}(),r=document.createDocumentFragment(),e.next=5,o(t,r);case 5:return(i=r.querySelector("head"))||(i=r),Ct(window.document,i),e.abrupt("return",r);case 9:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),Tt=function(e){return new Promise(function(){var t=mt(ht().mark((function t(n,o){var r,i,a,s,l,c,u,d,p,h,f,m,g,v,y;return ht().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:for(r=window.document.querySelectorAll("style, link"),i=0;i0){for(c=l.childNodes;c.length>0;)l.parentNode.insertBefore(c[0],l);l.remove()}for(u=a.querySelectorAll("script, noscript"),i=0;i=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var l=o.call(a,"catchLoc"),c=o.call(a,"finallyLoc");if(l&&c){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&o.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),L(n),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var o=n.completion;if("throw"===o.type){var r=o.arg;L(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,o){return this.delegate={iterator:M(t),resultName:n,nextLoc:o},"next"===this.method&&(this.arg=e),g}},t}function At(e,t,n,o,r,i,a){try{var s=e[i](a),l=s.value}catch(c){return void n(c)}s.done?t(l):Promise.resolve(l).then(o,r)}function Mt(e){return function(){var t=this,n=arguments;return new Promise((function(o,r){var i=e.apply(t,n);function a(e){At(i,o,r,a,s,"next",e)}function s(e){At(i,o,r,a,s,"throw",e)}a(void 0)}))}}function Rt(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return Pt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Pt(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0,r=function(){};return{s:r,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){s=!0,i=e},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw i}}}}function Pt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n0?t[0]:null}},{key:"getFirstAudioTrack",value:function(e){if(!e)return null;var t=e.getAudioTracks();return t.length>0?t[0]:null}},{key:"startScreenRecording",value:(a=Mt(Lt().mark((function t(){var n,o;return Lt().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia&&!this.isRecording){t.next=4;break}return this.available=!1,this.rerender(),t.abrupt("return");case 4:return t.prev=4,t.next=7,navigator.mediaDevices.getDisplayMedia({video:{width:{ideal:Math.min(window.screen.width,e.MAX_WIDTH)},height:{ideal:Math.min(window.screen.height,e.MAX_HEIGHT)},frameRate:{ideal:e.IDEAL_FRAME_RATE,max:e.MAX_FRAME_RATE},displaySurface:"monitor"},audio:!1,selfBrowserSurface:"include"});case 7:if(n=t.sent,this._displayStream=n,this._displayVideoTrack=this.getFirstVideoTrack(n),this.audioMuted){t.next=15;break}return t.next=13,this.startAudioRecording();case 13:t.next=19;break;case 15:this.audioAvailable=!1,o=this.createMediaStream([this._displayVideoTrack]),this.stream=o,this.handleRecord({stream:o});case 19:this.rerender(),t.next=26;break;case 22:t.prev=22,t.t0=t.catch(4),window.alert(this.permissionErrorText),this.rerender();case 26:case"end":return t.stop()}}),t,this,[[4,22]])}))),function(){return a.apply(this,arguments)})},{key:"stopScreenRecording",value:function(){if(this.mediaRecorder&&this.stream&&this.isRecording){this.recordingTimer&&(clearInterval(this.recordingTimer),this.recordingTimer=null);try{this.mediaRecorder.stop()}catch(e){}this.stopStreamTracks(this.stream),this._displayStream&&(this.stopStreamTracks(this._displayStream),this._displayStream=null),this._micStream&&(this.stopStreamTracks(this._micStream),this._micStream=null),this._displayVideoTrack=null,this.rerender()}}},{key:"startAudioRecording",value:(i=Mt(Lt().mark((function e(){var t,n,o,r;return Lt().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._displayVideoTrack){e.next=2;break}return e.abrupt("return");case 2:return e.prev=2,e.next=5,navigator.mediaDevices.getUserMedia({audio:{echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0},video:!1});case 5:t=e.sent,this._micStream=t,n=this.getFirstAudioTrack(t),this.audioMuted=!1,this.audioAvailable=!!n,o=this.createMediaStream([this._displayVideoTrack,n]),this.stream=o,this.handleRecord({stream:o}),this.rerender(),e.next=23;break;case 16:e.prev=16,e.t0=e.catch(2),this.audioAvailable=!1,r=this.createMediaStream([this._displayVideoTrack]),this.stream=r,this.handleRecord({stream:r}),this.rerender();case 23:case"end":return e.stop()}}),e,this,[[2,16]])}))),function(){return i.apply(this,arguments)})},{key:"toggleAudio",value:function(){if(this.audioMuted=!this.audioMuted,this.rerender(),this.stream)for(var e=this.stream.getAudioTracks(),t=0;t0?i.innerHTML=o.formatTime(e):(i.innerHTML="2:00",o.stopScreenRecording()):e<=0&&o.stopScreenRecording()}),e.TIMER_UPDATE_INTERVAL),this.mediaRecorder.ondataavailable=function(e){e.data&&e.data.size>0&&r.push(e.data)};var a=this.getFirstVideoTrack(n);a&&(a.onended=function(){o.prepareRecording(r)}),this.mediaRecorder.onstop=function(){o.prepareRecording(r)},this.mediaRecorder.start(e.CHUNK_INTERVAL),o.rerender()}},{key:"prepareRecording",value:function(t){var n=this.getSupportedMimeType(),o=new Blob(t,{type:n}),r=n.includes("mp4")?"mp4":"webm";this.file=new File([o],"screen-recording.".concat(r),{type:n});var i=document.querySelector(e.SELECTORS.PREVIEW_VIDEO);i&&(i.src=URL.createObjectURL(o),this.audioAvailable=this.stream?this.stream.getAudioTracks().length>0:this.audioAvailable,this.isRecording=!1,this.rerender())}}],o=[{key:"uploadScreenRecording",value:(r=Mt(Lt().mark((function e(t){return Lt().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(null!=t){e.next=2;break}return e.abrupt("return",null);case 2:return e.abrupt("return",new Promise((function(e,n){var o=new XMLHttpRequest;o.open("POST",et.getInstance().apiUrl+"/uploads/sdk"),et.getInstance().injectSession(o);var r=new FormData;r.append("file",t),o.onerror=function(){n(new Error("Network error during file upload"))},o.onreadystatechange=function(){4==o.readyState&&(200==o.status?e(JSON.parse(o.response).fileUrl):n(new Error("Upload failed with status ".concat(o.status))))},o.send(r)})));case 3:case"end":return e.stop()}}),e)}))),function(e){return r.apply(this,arguments)})}],n&&Dt(t.prototype,n),o&&Dt(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Bt(e){return Bt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Bt(e)}function _t(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Ut(e){for(var t=1;t0&&(e.tags=t),this.excludeData)for(var n=Object.keys(this.excludeData),o=0;oe.length)&&(t=e.length);for(var n=0,o=new Array(t);n0)if(t){var n=window.open(e,"_blank");n&&n.focus()}else window.location.href=e})),Jt(this,"autoWhiteListCookieManager",(function(){window&&window.cmp_block_ignoredomains&&window.cmp_block_ignoredomains.concat(["messenger-app.gleap.io"])})),Jt(this,"injectFrame",(function(){t.injectedFrame||(t.injectedFrame=!0,t.autoWhiteListCookieManager(),E((function(){dt.getInstance().onConfigLoaded((function(){dt.getInstance().applyStylesFromConfig();var e=document.createElement("div");e.className="gleap-frame-container gleap-frame-container--hidden gl-block",e.innerHTML='
'),document.body.appendChild(e),t.gleapFrameContainer=e,t.gleapFrame=document.querySelector(".gleap-frame"),t.updateFrameStyle(),"widget"===t.appMode&&t.showFrameContainer(!0)}))})))})),Jt(this,"showImage",(function(e){E((function(){var t=document.createElement("div");t.className="gleap-image-view",t.innerHTML='
\n \n
'),document.body.appendChild(t);var n=function(){t.remove()};t.querySelector(".gleap-image-view-close").addEventListener("click",(function(){n()})),t.addEventListener("click",(function(e){e.target===t&&n()}))}))})),Jt(this,"updateFrameStyle",(function(){if(t.gleapFrameContainer){for(var e="gleap-frame-container--survey",n="gleap-frame-container--extended",o="gleap-frame-container--survey-full",r="gleap-frame-container--classic",i="gleap-frame-container--classic-left",s="gleap-frame-container--modern-left",l="gleap-frame-container--no-button",c=[r,i,n,s,l,e,o],u=0;u0&&void 0!==arguments[0]&&arguments[0];"survey_web"!==this.appMode&&(this.hideMarkerManager(),this.gleapFrameContainer&&(this.gleapFrameContainer.classList.add("gleap-frame-container--hidden"),this.gleapFrameContainer.classList.remove("gleap-frame-container--animate")),e&&this.sendMessage({name:"reset-routes",data:{}}),this.widgetOpened=!1,this.updateWidgetStatus(),a.getInstance().updateFeedbackButtonState(),Tn.notifyEvent("close"),jh.getInstance().reloadNotificationsFromCache(),this.unregisterEscListener(),"undefined"!=typeof window&&void 0!==window.focus&&window.focus())}},{key:"sendMessage",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];try{this.gleapFrame=document.querySelector(".gleap-frame"),this.comReady&&this.gleapFrame&&this.gleapFrame.contentWindow?this.gleapFrame.contentWindow.postMessage(JSON.stringify(e),"*"):t&&this.queue.push(e)}catch(n){}}},{key:"sendSessionUpdate",value:function(){this.sendMessage({name:"session-update",data:{sessionData:et.getInstance().getSession(),apiUrl:et.getInstance().apiUrl,sdkKey:et.getInstance().sdkKey}})}},{key:"sendConfigUpdate",value:function(){this.comReady&&(this.sendMessage({name:"config-update",data:{config:dt.getInstance().getFlowConfig(),aiTools:dt.getInstance().getAiTools(),overrideLanguage:kh.getInstance().getOverrideLanguage()}}),this.updateFrameStyle())}},{key:"showDrawingScreen",value:function(e){var t=this;this.hideWidget(),this.markerManager=new gh(e),this.markerManager.show((function(e){e||t.hideMarkerManager(),t.showWidget()}))}},{key:"workThroughQueue",value:function(){var e=Gt(this.queue);this.queue=[];for(var t=0;t0&&(n.tags=o),e.sendMessage({name:"collect-ticket-data",data:n})}if("height-update"===t.name){e.frameHeight=t.data;var r=document.querySelector(".gleap-frame-container-inner");"survey"!==e.appMode&&"survey_full"!==e.appMode&&"survey_web"!==e.appMode||!r||(r.style.maxHeight="".concat(e.frameHeight,"px"))}if("notify-event"===t.name&&Tn.notifyEvent(t.data.type,t.data.data),"cleanup-drawings"===t.name&&e.hideMarkerManager(),"open-url"===t.name){var i=t.data,a=!!t.newTab;e.urlHandler(i,a)}var s;if("start-product-tour"===t.name&&Wm.startProductTour(null===(s=t.data)||void 0===s?void 0:s.tourId,!0),"run-custom-action"===t.name&&Dn.triggerCustomAction(t.data,{shareToken:t.shareToken}),"close-widget"===t.name&&e.hideWidget(),"tool-execution"===t.name&&Tn.notifyEvent("tool-execution",t.data),"send-feedback"===t.name){var l=t.data.formData,c=t.data.action,u=t.data.outboundId,d=t.data.spamToken;new Wt(c.feedbackType,"MEDIUM",l,!1,c.excludeData,u,d).sendFeedback().then((function(t){if(e.sendMessage({name:"feedback-sent",data:t}),Tn.notifyEvent("feedback-sent",l),u&&u.length>0){Tn.notifyEvent("outbound-sent",{outboundId:u,outbound:c,formData:l});try{delete l.reportedBy}catch(n){}Wm.trackEvent("outbound-".concat(u,"-submitted"),l)}})).catch((function(t){e.sendMessage({name:"feedback-sending-failed",data:"Something went wrong, please try again."}),Tn.notifyEvent("error-while-sending")}))}"start-screen-drawing"===t.name&&e.showDrawingScreen(t.data)})),window.addEventListener("message",(function(t){if(t.origin===e.frameUrl||t.origin===qh.getInstance().bannerUrl)try{for(var n=JSON.parse(t.data),o=0;o1&&void 0!==arguments[1]?arguments[1]:"INFO";!e||e.length<=0||(this.logArray.push({log:x(e,1e3),date:new Date,priority:t}),this.logArray.length>this.logMaxLength&&this.logArray.shift())}},{key:"addLogWithArgs",value:function(e,t){if(e&&!(e.length<=0)){var n="";try{for(var o=0;o1&&void 0!==arguments[1])||arguments[1],n=x(e.innerText||"",40).replace(/(\r\n|\n|\r)/gm,"").replace(/ +(?= )/g,""),o="",r="";if(void 0!==e.getAttribute){var i=e.getAttribute("id");i&&(o=' id="'.concat(i,'"'));var a=e.getAttribute("class");a&&(r=' class="'.concat(a,'"'))}var s=(e.tagName||"").toLowerCase(),l="<",c=">";return t||(l="[",c="]"),"".concat(l).concat(s).concat(o).concat(r).concat(c).concat(n).concat(l,"/").concat(s).concat(c)}(e.target),"CLICK")}}))}}],o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],n&&pn(t.prototype,n),o&&pn(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function yn(e){return yn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},yn(e)}function bn(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{};if("flow-started"===e){var n=Wm.getInstance();n.setGlobalDataItem("webReplay",null),n.setGlobalDataItem("screenRecordingData",null),n.takeCurrentReplay()}var o=this.getInstance().eventListeners[e];if(o)for(var r=0;r((e,t,n)=>t in e?jn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,"symbol"!=typeof t?t+"":t,n),Bn=Object.defineProperty,_n=(e,t,n)=>((e,t,n)=>t in e?Bn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,"symbol"!=typeof t?t+"":t,n),Un=(e=>(e[e.Document=0]="Document",e[e.DocumentType=1]="DocumentType",e[e.Element=2]="Element",e[e.Text=3]="Text",e[e.CDATA=4]="CDATA",e[e.Comment=5]="Comment",e))(Un||{});const Hn={Node:["childNodes","parentNode","parentElement","textContent"],ShadowRoot:["host","styleSheets"],Element:["shadowRoot","querySelector","querySelectorAll"],MutationObserver:[]},zn={Node:["contains","getRootNode"],ShadowRoot:["getSelection"],Element:[],MutationObserver:["constructor"]},qn={},Wn=()=>!!globalThis.Zone;function Vn(e){if(qn[e])return qn[e];const t=globalThis[e],n=t.prototype,o=e in Hn?Hn[e]:void 0,r=Boolean(o&&o.every((e=>{var t,o;return Boolean(null==(o=null==(t=Object.getOwnPropertyDescriptor(n,e))?void 0:t.get)?void 0:o.toString().includes("[native code]"))}))),i=e in zn?zn[e]:void 0,a=Boolean(i&&i.every((e=>{var t;return"function"==typeof n[e]&&(null==(t=n[e])?void 0:t.toString().includes("[native code]"))})));if(r&&a&&!Wn())return qn[e]=t.prototype,t.prototype;try{const o=document.createElement("iframe");document.body.appendChild(o);const r=o.contentWindow;if(!r)return t.prototype;const i=r[e].prototype;return document.body.removeChild(o),i?qn[e]=i:n}catch{return n}}const Gn={};function Xn(e,t,n){var o;const r=`${e}.${String(n)}`;if(Gn[r])return Gn[r].call(t);const i=Vn(e),a=null==(o=Object.getOwnPropertyDescriptor(i,n))?void 0:o.get;return a?(Gn[r]=a,a.call(t)):t[n]}const Yn={};function Jn(e,t,n){const o=`${e}.${String(n)}`;if(Yn[o])return Yn[o].bind(t);const r=Vn(e)[n];return"function"!=typeof r?t[n]:(Yn[o]=r,r.bind(t))}const Kn={childNodes:function(e){return Xn("Node",e,"childNodes")},parentNode:function(e){return Xn("Node",e,"parentNode")},parentElement:function(e){return Xn("Node",e,"parentElement")},textContent:function(e){return Xn("Node",e,"textContent")},contains:function(e,t){return Jn("Node",e,"contains")(t)},getRootNode:function(e){return Jn("Node",e,"getRootNode")()},host:function(e){return e&&"host"in e?Xn("ShadowRoot",e,"host"):null},styleSheets:function(e){return e.styleSheets},shadowRoot:function(e){return e&&"shadowRoot"in e?Xn("Element",e,"shadowRoot"):null},querySelector:function(e,t){return Xn("Element",e,"querySelector")(t)},querySelectorAll:function(e,t){return Xn("Element",e,"querySelectorAll")(t)},mutationObserver:function(){return Vn("MutationObserver").constructor}};function Zn(e){return e.nodeType===e.ELEMENT_NODE}function $n(e){const t=e&&"host"in e&&"mode"in e&&Kn.host(e)||null;return Boolean(t&&"shadowRoot"in t&&Kn.shadowRoot(t)===e)}function Qn(e){return"[object ShadowRoot]"===Object.prototype.toString.call(e)}function eo(e){try{const n=e.rules||e.cssRules;if(!n)return null;let o=e.href;!o&&e.ownerNode&&e.ownerNode.ownerDocument&&(o=e.ownerNode.ownerDocument.location.href);const r=Array.from(n,(e=>to(e,o))).join("");return(t=r).includes(" background-clip: text;")&&!t.includes(" -webkit-background-clip: text;")&&(t=t.replace(/\sbackground-clip:\s*text;/g," -webkit-background-clip: text; background-clip: text;")),t}catch(n){return null}var t}function to(e,t){if(function(e){return"styleSheet"in e}(e)){let t;try{t=eo(e.styleSheet)||function(e){const{cssText:t}=e;if(t.split('"').length<3)return t;const n=["@import",`url(${JSON.stringify(e.href)})`];return""===e.layerName?n.push("layer"):e.layerName&&n.push(`layer(${e.layerName})`),e.supportsText&&n.push(`supports(${e.supportsText})`),e.media.length&&n.push(e.media.mediaText),n.join(" ")+";"}(e)}catch(n){t=e.cssText}return e.styleSheet.href?ho(t,e.styleSheet.href):t}{let n=e.cssText;return function(e){return"selectorText"in e}(e)&&e.selectorText.includes(":")&&(n=function(e){const t=/(\[(?:[\w-]+)[^\\])(:(?:[\w-]+)\])/gm;return e.replace(t,"$1\\$2")}(n)),t?ho(n,t):n}}class no{constructor(){_n(this,"idNodeMap",new Map),_n(this,"nodeMetaMap",new WeakMap)}getId(e){var t;if(!e)return-1;return(null==(t=this.getMeta(e))?void 0:t.id)??-1}getNode(e){return this.idNodeMap.get(e)||null}getIds(){return Array.from(this.idNodeMap.keys())}getMeta(e){return this.nodeMetaMap.get(e)||null}removeNodeFromMap(e){const t=this.getId(e);this.idNodeMap.delete(t),e.childNodes&&e.childNodes.forEach((e=>this.removeNodeFromMap(e)))}has(e){return this.idNodeMap.has(e)}hasNode(e){return this.nodeMetaMap.has(e)}add(e,t){const n=t.id;this.idNodeMap.set(n,e),this.nodeMetaMap.set(e,t)}replace(e,t){const n=this.getNode(e);if(n){const e=this.nodeMetaMap.get(n);e&&this.nodeMetaMap.set(t,e)}this.idNodeMap.set(e,t)}reset(){this.idNodeMap=new Map,this.nodeMetaMap=new WeakMap}}function oo({element:e,maskInputOptions:t,tagName:n,type:o,value:r,maskInputFn:i}){let a=r||"";const s=o&&ro(o);return(t[n.toLowerCase()]||s&&t[s])&&(a=i?i(a,e):"*".repeat(a.length)),a}function ro(e){return e.toLowerCase()}const io="__rrweb_original__";function ao(e){const t=e.type;return e.hasAttribute("data-rr-is-password")?"password":t?ro(t):null}function so(e,t){let n;try{n=new URL(e,t??window.location.href)}catch(r){return null}const o=n.pathname.match(/\.([0-9a-z]+)(?:$)/i);return(null==o?void 0:o[1])??null}const lo=/url\((?:(')([^']*)'|(")(.*?)"|([^)]*))\)/gm,co=/^(?:[a-z+]+:)?\/\//i,uo=/^www\..*/i,po=/^(data:)([^,]*),(.*)/i;function ho(e,t){return(e||"").replace(lo,((e,n,o,r,i,a)=>{const s=o||i||a,l=n||r||"";if(!s)return e;if(co.test(s)||uo.test(s))return`url(${l}${s}${l})`;if(po.test(s))return`url(${l}${s}${l})`;if("/"===s[0])return`url(${l}${function(e){let t="";return t=e.indexOf("//")>-1?e.split("/").slice(0,3).join("/"):e.split("/")[0],t=t.split("?")[0],t}(t)+s}${l})`;const c=t.split("/"),u=s.split("/");c.pop();for(const t of u)"."!==t&&(".."===t?c.pop():c.push(t));return`url(${l}${c.join("/")}${l})`}))}function fo(e){return e.replace(/(\/\*[^*]*\*\/)|[\s;]/g,"")}function mo(e,t){return function(e,t){const n=Array.from(t.childNodes),o=[];if(n.length>1&&e&&"string"==typeof e){const t=fo(e);for(let r=1;r=t.length);){let i=o(xo);if(","===i.slice(-1))i=Io(e,i.substring(0,i.length-1)),r.push(i);else{let o="";i=Io(e,i);let a=!1;for(;;){const e=t.charAt(n);if(""===e){r.push((i+o).trim());break}if(a)")"===e&&(a=!1);else{if(","===e){n+=1,r.push((i+o).trim());break}"("===e&&(a=!0)}o+=e,n+=1}}}return r.join(", ")}(e,o):"style"===n?ho(o,To(e)):"object"===t&&"data"===n?Io(e,o):o:Io(e,o):o}function Lo(e,t,n){return("video"===e||"audio"===e)&&"autoplay"===t}function Ao(e,t,n){if(!e)return!1;if(e.nodeType!==e.ELEMENT_NODE)return!!n&&Ao(Kn.parentNode(e),t,n);for(let o=e.classList.length;o--;){const n=e.classList[o];if(t.test(n))return!0}return!!n&&Ao(Kn.parentNode(e),t,n)}function Mo(e,t,n,o){let r;if(Zn(e)){if(r=e,!Kn.childNodes(r).length)return!1}else{if(null===Kn.parentElement(e))return!1;r=Kn.parentElement(e)}try{if("string"==typeof t){if(o){if(r.closest(`.${t}`))return!0}else if(r.classList.contains(t))return!0}else if(Ao(r,t,o))return!0;if(n)if(o){if(r.closest(n))return!0}else if(r.matches(n))return!0}catch(i){}return!1}function Ro(e,t){const{doc:n,mirror:o,blockClass:r,blockSelector:i,needsMask:a,inlineStylesheet:s,maskInputOptions:l={},maskTextFn:c,maskInputFn:u,dataURLOptions:d={},inlineImages:p,recordCanvas:h,keepIframeSrcFn:f,newlyAddedElement:m=!1,cssCaptured:g=!1}=t,v=function(e,t){if(!t.hasNode(e))return;const n=t.getId(e);return 1===n?void 0:n}(n,o);switch(e.nodeType){case e.DOCUMENT_NODE:return"CSS1Compat"!==e.compatMode?{type:Un.Document,childNodes:[],compatMode:e.compatMode}:{type:Un.Document,childNodes:[]};case e.DOCUMENT_TYPE_NODE:return{type:Un.DocumentType,name:e.name,publicId:e.publicId,systemId:e.systemId,rootId:v};case e.ELEMENT_NODE:return function(e,t){const{doc:n,blockClass:o,blockSelector:r,inlineStylesheet:i,maskInputOptions:a={},maskInputFn:s,dataURLOptions:l={},inlineImages:c,recordCanvas:u,keepIframeSrcFn:d,newlyAddedElement:p=!1,rootId:h}=t,f=function(e,t,n){try{if("string"==typeof t){if(e.classList.contains(t))return!0}else for(let n=e.classList.length;n--;){const o=e.classList[n];if(t.test(o))return!0}if(n)return e.matches(n)}catch(o){}return!1}(e,o,r),m=function(e){if(e instanceof HTMLFormElement)return"form";const t=ro(e.tagName);return vo.test(t)?"div":t}(e);let g={};const v=e.attributes.length;for(let w=0;wt.href===e.href));let o=null;t&&(o=eo(t)),o&&(delete g.rel,delete g.href,g._cssText=o)}if("style"===m&&e.sheet){let t=eo(e.sheet);t&&(e.childNodes.length>1&&(t=mo(t,e)),g._cssText=t)}if("input"===m||"textarea"===m||"select"===m){const t=e.value,n=e.checked;"radio"!==g.type&&"checkbox"!==g.type&&"submit"!==g.type&&"button"!==g.type&&t?g.value=oo({element:e,type:ao(e),tagName:m,value:t,maskInputOptions:a,maskInputFn:s}):n&&(g.checked=n)}"option"===m&&(e.selected&&!a.select?g.selected=!0:delete g.selected);"dialog"===m&&e.open&&(g.rr_open_mode=e.matches("dialog:modal")?"modal":"non-modal");if("canvas"===m&&u)if("2d"===e.__context)(function(e){const t=e.getContext("2d");if(!t)return!0;for(let n=0;n0!==e)))return!1}return!0})(e)||(g.rr_dataURL=e.toDataURL(l.type,l.quality));else if(!("__context"in e)){const t=e.toDataURL(l.type,l.quality),o=n.createElement("canvas");o.width=e.width,o.height=e.height;t!==o.toDataURL(l.type,l.quality)&&(g.rr_dataURL=t)}if("img"===m&&c){wo||(wo=n.createElement("canvas"),ko=wo.getContext("2d"));const t=e,o=t.currentSrc||t.getAttribute("src")||"",r=t.crossOrigin,i=()=>{t.removeEventListener("load",i);try{wo.width=t.naturalWidth,wo.height=t.naturalHeight,ko.drawImage(t,0,0),g.rr_dataURL=wo.toDataURL(l.type,l.quality)}catch(e){if("anonymous"!==t.crossOrigin)return t.crossOrigin="anonymous",void(t.complete&&0!==t.naturalWidth?i():t.addEventListener("load",i));console.warn(`Cannot inline img src=${o}! Error: ${e}`)}"anonymous"===t.crossOrigin&&(r?g.crossOrigin=r:t.removeAttribute("crossorigin"))};t.complete&&0!==t.naturalWidth?i():t.addEventListener("load",i)}if("audio"===m||"video"===m){const t=g;t.rr_mediaState=e.paused?"paused":"played",t.rr_mediaCurrentTime=e.currentTime,t.rr_mediaPlaybackRate=e.playbackRate,t.rr_mediaMuted=e.muted,t.rr_mediaLoop=e.loop,t.rr_mediaVolume=e.volume}p||(e.scrollLeft&&(g.rr_scrollLeft=e.scrollLeft),e.scrollTop&&(g.rr_scrollTop=e.scrollTop));if(f){const{width:t,height:n}=e.getBoundingClientRect();g={class:g.class,rr_width:`${t}px`,rr_height:`${n}px`}}"iframe"!==m||d(g.src)||(e.contentDocument||(g.rr_src=g.src),delete g.src);let y;try{customElements.get(m)&&(y=!0)}catch(b){}return{type:Un.Element,tagName:m,attributes:g,childNodes:[],isSVG:Eo(e)||void 0,needBlock:f,rootId:h,isCustom:y}}(e,{doc:n,blockClass:r,blockSelector:i,inlineStylesheet:s,maskInputOptions:l,maskInputFn:u,dataURLOptions:d,inlineImages:p,recordCanvas:h,keepIframeSrcFn:f,newlyAddedElement:m,rootId:v});case e.TEXT_NODE:return function(e,t){const{needsMask:n,maskTextFn:o,rootId:r,cssCaptured:i}=t,a=Kn.parentNode(e),s=a&&a.tagName;let l="";const c="STYLE"===s||void 0,u="SCRIPT"===s||void 0;u?l="SCRIPT_PLACEHOLDER":i||(l=Kn.textContent(e),c&&l&&(l=ho(l,To(t.doc))));!c&&!u&&l&&n&&(l=o?o(l,Kn.parentElement(e)):l.replace(/[\S]/g,"*"));return{type:Un.Text,textContent:l||"",rootId:r}}(e,{doc:n,needsMask:a,maskTextFn:c,rootId:v,cssCaptured:g});case e.CDATA_SECTION_NODE:return{type:Un.CDATA,textContent:"",rootId:v};case e.COMMENT_NODE:return{type:Un.Comment,textContent:Kn.textContent(e)||"",rootId:v};default:return!1}}function Po(e){return null==e?"":e.toLowerCase()}function Do(e,t){const{doc:n,mirror:o,blockClass:r,blockSelector:i,maskTextClass:a,maskTextSelector:s,skipChild:l=!1,inlineStylesheet:c=!0,maskInputOptions:u={},maskTextFn:d,maskInputFn:p,slimDOMOptions:h,dataURLOptions:f={},inlineImages:m=!1,recordCanvas:g=!1,onSerialize:v,onIframeLoad:y,iframeLoadTimeout:b=5e3,onStylesheetLoad:w,stylesheetLoadTimeout:k=5e3,keepIframeSrcFn:x=(()=>!1),newlyAddedElement:S=!1,cssCaptured:C=!1}=t;let{needsMask:I}=t,{preserveWhiteSpace:E=!0}=t;if(!I){I=Mo(e,a,s,void 0===I)}const T=Ro(e,{doc:n,mirror:o,blockClass:r,blockSelector:i,needsMask:I,inlineStylesheet:c,maskInputOptions:u,maskTextFn:d,maskInputFn:p,dataURLOptions:f,inlineImages:m,recordCanvas:g,keepIframeSrcFn:x,newlyAddedElement:S,cssCaptured:C});if(!T)return console.warn(e,"not serialized"),null;let O;O=o.hasNode(e)?o.getId(e):function(e,t){if(t.comment&&e.type===Un.Comment)return!0;if(e.type===Un.Element){if(t.script&&("script"===e.tagName||"link"===e.tagName&&("preload"===e.attributes.rel||"modulepreload"===e.attributes.rel)&&"script"===e.attributes.as||"link"===e.tagName&&"prefetch"===e.attributes.rel&&"string"==typeof e.attributes.href&&"js"===so(e.attributes.href)))return!0;if(t.headFavicon&&("link"===e.tagName&&"shortcut icon"===e.attributes.rel||"meta"===e.tagName&&(Po(e.attributes.name).match(/^msapplication-tile(image|color)$/)||"application-name"===Po(e.attributes.name)||"icon"===Po(e.attributes.rel)||"apple-touch-icon"===Po(e.attributes.rel)||"shortcut icon"===Po(e.attributes.rel))))return!0;if("meta"===e.tagName){if(t.headMetaDescKeywords&&Po(e.attributes.name).match(/^description|keywords$/))return!0;if(t.headMetaSocial&&(Po(e.attributes.property).match(/^(og|twitter|fb):/)||Po(e.attributes.name).match(/^(og|twitter):/)||"pinterest"===Po(e.attributes.name)))return!0;if(t.headMetaRobots&&("robots"===Po(e.attributes.name)||"googlebot"===Po(e.attributes.name)||"bingbot"===Po(e.attributes.name)))return!0;if(t.headMetaHttpEquiv&&void 0!==e.attributes["http-equiv"])return!0;if(t.headMetaAuthorship&&("author"===Po(e.attributes.name)||"generator"===Po(e.attributes.name)||"framework"===Po(e.attributes.name)||"publisher"===Po(e.attributes.name)||"progid"===Po(e.attributes.name)||Po(e.attributes.property).match(/^article:/)||Po(e.attributes.property).match(/^product:/)))return!0;if(t.headMetaVerification&&("google-site-verification"===Po(e.attributes.name)||"yandex-verification"===Po(e.attributes.name)||"csrf-token"===Po(e.attributes.name)||"p:domain_verify"===Po(e.attributes.name)||"verify-v1"===Po(e.attributes.name)||"verification"===Po(e.attributes.name)||"shopify-checkout-api-token"===Po(e.attributes.name)))return!0}}return!1}(T,h)||!E&&T.type===Un.Text&&!T.textContent.replace(/^\s+|\s+$/gm,"").length?yo:bo();const L=Object.assign(T,{id:O});if(o.add(e,L),O===yo)return null;v&&v(e);let A=!l;if(L.type===Un.Element){A=A&&!L.needBlock,delete L.needBlock;const t=Kn.shadowRoot(e);t&&Qn(t)&&(L.isShadowHost=!0)}if((L.type===Un.Document||L.type===Un.Element)&&A){h.headWhitespace&&L.type===Un.Element&&"head"===L.tagName&&(E=!1);const t={doc:n,mirror:o,blockClass:r,blockSelector:i,needsMask:I,maskTextClass:a,maskTextSelector:s,skipChild:l,inlineStylesheet:c,maskInputOptions:u,maskTextFn:d,maskInputFn:p,slimDOMOptions:h,dataURLOptions:f,inlineImages:m,recordCanvas:g,preserveWhiteSpace:E,onSerialize:v,onIframeLoad:y,iframeLoadTimeout:b,onStylesheetLoad:w,stylesheetLoadTimeout:k,keepIframeSrcFn:x,cssCaptured:!1};if(L.type===Un.Element&&"textarea"===L.tagName&&void 0!==L.attributes.value);else{L.type===Un.Element&&void 0!==L.attributes._cssText&&"string"==typeof L.attributes._cssText&&(t.cssCaptured=!0);for(const n of Array.from(Kn.childNodes(e))){const e=Do(n,t);e&&L.childNodes.push(e)}}let S=null;if(Zn(e)&&(S=Kn.shadowRoot(e)))for(const e of Array.from(Kn.childNodes(S))){const n=Do(e,t);n&&(Qn(S)&&(n.isShadow=!0),L.childNodes.push(n))}}const M=Kn.parentNode(e);return M&&$n(M)&&Qn(M)&&(L.isShadow=!0),L.type===Un.Element&&"iframe"===L.tagName&&function(e,t,n){const o=e.contentWindow;if(!o)return;let r,i=!1;try{r=o.document.readyState}catch(s){return}if("complete"!==r){const o=setTimeout((()=>{i||(t(),i=!0)}),n);return void e.addEventListener("load",(()=>{clearTimeout(o),i=!0,t()}))}const a="about:blank";if(o.location.href!==a||e.src===a||""===e.src)return setTimeout(t,0),e.addEventListener("load",t);e.addEventListener("load",t)}(e,(()=>{const t=e.contentDocument;if(t&&y){const n=Do(t,{doc:t,mirror:o,blockClass:r,blockSelector:i,needsMask:I,maskTextClass:a,maskTextSelector:s,skipChild:!1,inlineStylesheet:c,maskInputOptions:u,maskTextFn:d,maskInputFn:p,slimDOMOptions:h,dataURLOptions:f,inlineImages:m,recordCanvas:g,preserveWhiteSpace:E,onSerialize:v,onIframeLoad:y,iframeLoadTimeout:b,onStylesheetLoad:w,stylesheetLoadTimeout:k,keepIframeSrcFn:x});n&&y(e,n)}}),b),L.type===Un.Element&&"link"===L.tagName&&"string"==typeof L.attributes.rel&&("stylesheet"===L.attributes.rel||"preload"===L.attributes.rel&&"string"==typeof L.attributes.href&&"css"===so(L.attributes.href))&&function(e,t,n){let o,r=!1;try{o=e.sheet}catch(a){return}if(o)return;const i=setTimeout((()=>{r||(t(),r=!0)}),n);e.addEventListener("load",(()=>{clearTimeout(i),r=!0,t()}))}(e,(()=>{if(w){const t=Do(e,{doc:n,mirror:o,blockClass:r,blockSelector:i,needsMask:I,maskTextClass:a,maskTextSelector:s,skipChild:!1,inlineStylesheet:c,maskInputOptions:u,maskTextFn:d,maskInputFn:p,slimDOMOptions:h,dataURLOptions:f,inlineImages:m,recordCanvas:g,preserveWhiteSpace:E,onSerialize:v,onIframeLoad:y,iframeLoadTimeout:b,onStylesheetLoad:w,stylesheetLoadTimeout:k,keepIframeSrcFn:x});t&&w(e,t)}}),k),L}function No(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function jo(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var n=function e(){return this instanceof e?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,o.get?o:{enumerable:!0,get:function(){return e[t]}})})),n}var Fo={exports:{}},Bo=String,_o=function(){return{isColorSupported:!1,reset:Bo,bold:Bo,dim:Bo,italic:Bo,underline:Bo,inverse:Bo,hidden:Bo,strikethrough:Bo,black:Bo,red:Bo,green:Bo,yellow:Bo,blue:Bo,magenta:Bo,cyan:Bo,white:Bo,gray:Bo,bgBlack:Bo,bgRed:Bo,bgGreen:Bo,bgYellow:Bo,bgBlue:Bo,bgMagenta:Bo,bgCyan:Bo,bgWhite:Bo}};Fo.exports=_o(),Fo.exports.createColors=_o;var Uo=Fo.exports;const Ho=jo(Object.freeze(Object.defineProperty({__proto__:null,default:{}},Symbol.toStringTag,{value:"Module"})));let zo=Uo,qo=Ho,Wo=class e extends Error{constructor(t,n,o,r,i,a){super(t),this.name="CssSyntaxError",this.reason=t,i&&(this.file=i),r&&(this.source=r),a&&(this.plugin=a),void 0!==n&&void 0!==o&&("number"==typeof n?(this.line=n,this.column=o):(this.line=n.line,this.column=n.column,this.endLine=o.line,this.endColumn=o.column)),this.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(this,e)}setMessage(){this.message=this.plugin?this.plugin+": ":"",this.message+=this.file?this.file:"",void 0!==this.line&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason}showSourceCode(e){if(!this.source)return"";let t=this.source;null==e&&(e=zo.isColorSupported),qo&&e&&(t=qo(t));let n,o,r=t.split(/\r?\n/),i=Math.max(this.line-3,0),a=Math.min(this.line+2,r.length),s=String(a).length;if(e){let{bold:e,gray:t,red:r}=zo.createColors(!0);n=t=>e(r(t)),o=e=>t(e)}else n=o=e=>e;return r.slice(i,a).map(((e,t)=>{let r=i+1+t,a=" "+(" "+r).slice(-s)+" | ";if(r===this.line){let t=o(a.replace(/\d/g," "))+e.slice(0,this.column-1).replace(/[^\t]/g," ");return n(">")+o(a)+e+"\n "+t+n("^")}return" "+o(a)+e})).join("\n")}toString(){let e=this.showSourceCode();return e&&(e="\n\n"+e+"\n"),this.name+": "+this.message+e}};var Vo=Wo;Wo.default=Wo;var Go={};Go.isClean=Symbol("isClean"),Go.my=Symbol("my");const Xo={after:"\n",beforeClose:"\n",beforeComment:"\n",beforeDecl:"\n",beforeOpen:" ",beforeRule:"\n",colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:!1};let Yo=class{constructor(e){this.builder=e}atrule(e,t){let n="@"+e.name,o=e.params?this.rawValue(e,"params"):"";if(void 0!==e.raws.afterName?n+=e.raws.afterName:o&&(n+=" "),e.nodes)this.block(e,n+o);else{let r=(e.raws.between||"")+(t?";":"");this.builder(n+o+r,e)}}beforeAfter(e,t){let n;n="decl"===e.type?this.raw(e,null,"beforeDecl"):"comment"===e.type?this.raw(e,null,"beforeComment"):"before"===t?this.raw(e,null,"beforeRule"):this.raw(e,null,"beforeClose");let o=e.parent,r=0;for(;o&&"root"!==o.type;)r+=1,o=o.parent;if(n.includes("\n")){let t=this.raw(e,null,"indent");if(t.length)for(let e=0;e0&&"comment"===e.nodes[t].type;)t-=1;let n=this.raw(e,"semicolon");for(let o=0;o{if(o=e.raws[t],void 0!==o)return!1}))}var a;return void 0===o&&(o=Xo[n]),i.rawCache[n]=o,o}rawBeforeClose(e){let t;return e.walk((e=>{if(e.nodes&&e.nodes.length>0&&void 0!==e.raws.after)return t=e.raws.after,t.includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1})),t&&(t=t.replace(/\S/g,"")),t}rawBeforeComment(e,t){let n;return e.walkComments((e=>{if(void 0!==e.raws.before)return n=e.raws.before,n.includes("\n")&&(n=n.replace(/[^\n]+$/,"")),!1})),void 0===n?n=this.raw(t,null,"beforeDecl"):n&&(n=n.replace(/\S/g,"")),n}rawBeforeDecl(e,t){let n;return e.walkDecls((e=>{if(void 0!==e.raws.before)return n=e.raws.before,n.includes("\n")&&(n=n.replace(/[^\n]+$/,"")),!1})),void 0===n?n=this.raw(t,null,"beforeRule"):n&&(n=n.replace(/\S/g,"")),n}rawBeforeOpen(e){let t;return e.walk((e=>{if("decl"!==e.type&&(t=e.raws.between,void 0!==t))return!1})),t}rawBeforeRule(e){let t;return e.walk((n=>{if(n.nodes&&(n.parent!==e||e.first!==n)&&void 0!==n.raws.before)return t=n.raws.before,t.includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1})),t&&(t=t.replace(/\S/g,"")),t}rawColon(e){let t;return e.walkDecls((e=>{if(void 0!==e.raws.between)return t=e.raws.between.replace(/[^\s:]/g,""),!1})),t}rawEmptyBody(e){let t;return e.walk((e=>{if(e.nodes&&0===e.nodes.length&&(t=e.raws.after,void 0!==t))return!1})),t}rawIndent(e){if(e.raws.indent)return e.raws.indent;let t;return e.walk((n=>{let o=n.parent;if(o&&o!==e&&o.parent&&o.parent===e&&void 0!==n.raws.before){let e=n.raws.before.split("\n");return t=e[e.length-1],t=t.replace(/\S/g,""),!1}})),t}rawSemicolon(e){let t;return e.walk((e=>{if(e.nodes&&e.nodes.length&&"decl"===e.last.type&&(t=e.raws.semicolon,void 0!==t))return!1})),t}rawValue(e,t){let n=e[t],o=e.raws[t];return o&&o.value===n?o.raw:n}root(e){this.body(e),e.raws.after&&this.builder(e.raws.after)}rule(e){this.block(e,this.rawValue(e,"selector")),e.raws.ownSemicolon&&this.builder(e.raws.ownSemicolon,e,"end")}stringify(e,t){if(!this[e.type])throw new Error("Unknown AST node type "+e.type+". Maybe you need to change PostCSS stringifier.");this[e.type](e,t)}};var Jo=Yo;Yo.default=Yo;let Ko=Jo;function Zo(e,t){new Ko(t).stringify(e)}var $o=Zo;Zo.default=Zo;let{isClean:Qo,my:er}=Go,tr=Vo,nr=Jo,or=$o;function rr(e,t){let n=new e.constructor;for(let o in e){if(!Object.prototype.hasOwnProperty.call(e,o))continue;if("proxyCache"===o)continue;let r=e[o],i=typeof r;"parent"===o&&"object"===i?t&&(n[o]=t):"source"===o?n[o]=r:Array.isArray(r)?n[o]=r.map((e=>rr(e,n))):("object"===i&&null!==r&&(r=rr(r)),n[o]=r)}return n}let ir=class{constructor(e={}){this.raws={},this[Qo]=!1,this[er]=!0;for(let t in e)if("nodes"===t){this.nodes=[];for(let n of e[t])"function"==typeof n.clone?this.append(n.clone()):this.append(n)}else this[t]=e[t]}addToError(e){if(e.postcssNode=this,e.stack&&this.source&&/\n\s{4}at /.test(e.stack)){let t=this.source;e.stack=e.stack.replace(/\n\s{4}at /,`$&${t.input.from}:${t.start.line}:${t.start.column}$&`)}return e}after(e){return this.parent.insertAfter(this,e),this}assign(e={}){for(let t in e)this[t]=e[t];return this}before(e){return this.parent.insertBefore(this,e),this}cleanRaws(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between}clone(e={}){let t=rr(this);for(let n in e)t[n]=e[n];return t}cloneAfter(e={}){let t=this.clone(e);return this.parent.insertAfter(this,t),t}cloneBefore(e={}){let t=this.clone(e);return this.parent.insertBefore(this,t),t}error(e,t={}){if(this.source){let{end:n,start:o}=this.rangeBy(t);return this.source.input.error(e,{column:o.column,line:o.line},{column:n.column,line:n.line},t)}return new tr(e)}getProxyProcessor(){return{get:(e,t)=>"proxyOf"===t?e:"root"===t?()=>e.root().toProxy():e[t],set:(e,t,n)=>(e[t]===n||(e[t]=n,"prop"!==t&&"value"!==t&&"name"!==t&&"params"!==t&&"important"!==t&&"text"!==t||e.markDirty()),!0)}}markDirty(){if(this[Qo]){this[Qo]=!1;let e=this;for(;e=e.parent;)e[Qo]=!1}}next(){if(!this.parent)return;let e=this.parent.index(this);return this.parent.nodes[e+1]}positionBy(e,t){let n=this.source.start;if(e.index)n=this.positionInside(e.index,t);else if(e.word){let o=(t=this.toString()).indexOf(e.word);-1!==o&&(n=this.positionInside(o,t))}return n}positionInside(e,t){let n=t||this.toString(),o=this.source.start.column,r=this.source.start.line;for(let i=0;i"object"==typeof e&&e.toJSON?e.toJSON(null,t):e));else if("object"==typeof e&&e.toJSON)n[i]=e.toJSON(null,t);else if("source"===i){let o=t.get(e.input);null==o&&(o=r,t.set(e.input,r),r++),n[i]={end:e.end,inputId:o,start:e.start}}else n[i]=e}return o&&(n.inputs=[...t.keys()].map((e=>e.toJSON()))),n}toProxy(){return this.proxyCache||(this.proxyCache=new Proxy(this,this.getProxyProcessor())),this.proxyCache}toString(e=or){e.stringify&&(e=e.stringify);let t="";return e(this,(e=>{t+=e})),t}warn(e,t,n){let o={node:this};for(let r in n)o[r]=n[r];return e.warn(t,o)}get proxyOf(){return this}};var ar=ir;ir.default=ir;let sr=ar,lr=class extends sr{constructor(e){e&&void 0!==e.value&&"string"!=typeof e.value&&(e={...e,value:String(e.value)}),super(e),this.type="decl"}get variable(){return this.prop.startsWith("--")||"$"===this.prop[0]}};var cr=lr;lr.default=lr;var ur={nanoid:(e=21)=>{let t="",n=e;for(;n--;)t+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[64*Math.random()|0];return t},customAlphabet:(e,t=21)=>(n=t)=>{let o="",r=n;for(;r--;)o+=e[Math.random()*e.length|0];return o}};let{SourceMapConsumer:dr,SourceMapGenerator:pr}=Ho,{existsSync:hr,readFileSync:fr}=Ho,{dirname:mr,join:gr}=Ho;let vr=class{constructor(e,t){if(!1===t.map)return;this.loadAnnotation(e),this.inline=this.startWith(this.annotation,"data:");let n=t.map?t.map.prev:void 0,o=this.loadMap(t.from,n);!this.mapFile&&t.from&&(this.mapFile=t.from),this.mapFile&&(this.root=mr(this.mapFile)),o&&(this.text=o)}consumer(){return this.consumerCache||(this.consumerCache=new dr(this.text)),this.consumerCache}decodeInline(e){if(/^data:application\/json;charset=utf-?8,/.test(e)||/^data:application\/json,/.test(e))return decodeURIComponent(e.substr(RegExp.lastMatch.length));if(/^data:application\/json;charset=utf-?8;base64,/.test(e)||/^data:application\/json;base64,/.test(e))return t=e.substr(RegExp.lastMatch.length),Buffer?Buffer.from(t,"base64").toString():window.atob(t);var t;let n=e.match(/data:application\/json;([^,]+),/)[1];throw new Error("Unsupported source map encoding "+n)}getAnnotationURL(e){return e.replace(/^\/\*\s*# sourceMappingURL=/,"").trim()}isMap(e){return"object"==typeof e&&("string"==typeof e.mappings||"string"==typeof e._mappings||Array.isArray(e.sections))}loadAnnotation(e){let t=e.match(/\/\*\s*# sourceMappingURL=/gm);if(!t)return;let n=e.lastIndexOf(t.pop()),o=e.indexOf("*/",n);n>-1&&o>-1&&(this.annotation=this.getAnnotationURL(e.substring(n,o)))}loadFile(e){if(this.root=mr(e),hr(e))return this.mapFile=e,fr(e,"utf-8").toString().trim()}loadMap(e,t){if(!1===t)return!1;if(t){if("string"==typeof t)return t;if("function"!=typeof t){if(t instanceof dr)return pr.fromSourceMap(t).toString();if(t instanceof pr)return t.toString();if(this.isMap(t))return JSON.stringify(t);throw new Error("Unsupported previous source map format: "+t.toString())}{let n=t(e);if(n){let e=this.loadFile(n);if(!e)throw new Error("Unable to load previous source map: "+n.toString());return e}}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){let t=this.annotation;return e&&(t=gr(mr(e),t)),this.loadFile(t)}}}startWith(e,t){return!!e&&e.substr(0,t.length)===t}withContent(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)}};var yr=vr;vr.default=vr;let{SourceMapConsumer:br,SourceMapGenerator:wr}=Ho,{fileURLToPath:kr,pathToFileURL:xr}=Ho,{isAbsolute:Sr,resolve:Cr}=Ho,{nanoid:Ir}=ur,Er=Ho,Tr=Vo,Or=yr,Lr=Symbol("fromOffsetCache"),Ar=Boolean(br&&wr),Mr=Boolean(Cr&&Sr),Rr=class{constructor(e,t={}){if(null==e||"object"==typeof e&&!e.toString)throw new Error(`PostCSS received ${e} instead of CSS string`);if(this.css=e.toString(),"\ufeff"===this.css[0]||"￾"===this.css[0]?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,t.from&&(!Mr||/^\w+:\/\//.test(t.from)||Sr(t.from)?this.file=t.from:this.file=Cr(t.from)),Mr&&Ar){let e=new Or(this.css,t);if(e.text){this.map=e;let t=e.consumer().file;!this.file&&t&&(this.file=this.mapResolve(t))}}this.file||(this.id=""),this.map&&(this.map.file=this.from)}error(e,t,n,o={}){let r,i,a;if(t&&"object"==typeof t){let e=t,o=n;if("number"==typeof e.offset){let o=this.fromOffset(e.offset);t=o.line,n=o.col}else t=e.line,n=e.column;if("number"==typeof o.offset){let e=this.fromOffset(o.offset);i=e.line,a=e.col}else i=o.line,a=o.column}else if(!n){let e=this.fromOffset(t);t=e.line,n=e.col}let s=this.origin(t,n,i,a);return r=s?new Tr(e,void 0===s.endLine?s.line:{column:s.column,line:s.line},void 0===s.endLine?s.column:{column:s.endColumn,line:s.endLine},s.source,s.file,o.plugin):new Tr(e,void 0===i?t:{column:n,line:t},void 0===i?n:{column:a,line:i},this.css,this.file,o.plugin),r.input={column:n,endColumn:a,endLine:i,line:t,source:this.css},this.file&&(xr&&(r.input.url=xr(this.file).toString()),r.input.file=this.file),r}fromOffset(e){let t,n;if(this[Lr])n=this[Lr];else{let e=this.css.split("\n");n=new Array(e.length);let t=0;for(let o=0,r=e.length;o=t)o=n.length-1;else{let t,r=n.length-2;for(;o>1),e=n[t+1])){o=t;break}o=t+1}}return{col:e-n[o]+1,line:o+1}}mapResolve(e){return/^\w+:\/\//.test(e)?e:Cr(this.map.consumer().sourceRoot||this.map.root||".",e)}origin(e,t,n,o){if(!this.map)return!1;let r,i,a=this.map.consumer(),s=a.originalPositionFor({column:t,line:e});if(!s.source)return!1;"number"==typeof n&&(r=a.originalPositionFor({column:o,line:n})),i=Sr(s.source)?xr(s.source):new URL(s.source,this.map.consumer().sourceRoot||xr(this.map.mapFile));let l={column:s.column,endColumn:r&&r.column,endLine:r&&r.line,line:s.line,url:i.toString()};if("file:"===i.protocol){if(!kr)throw new Error("file: protocol is not available in this PostCSS build");l.file=kr(i)}let c=a.sourceContentFor(s.source);return c&&(l.source=c),l}toJSON(){let e={};for(let t of["hasBOM","css","file","id"])null!=this[t]&&(e[t]=this[t]);return this.map&&(e.map={...this.map},e.map.consumerCache&&(e.map.consumerCache=void 0)),e}get from(){return this.file||this.id}};var Pr=Rr;Rr.default=Rr,Er&&Er.registerInput&&Er.registerInput(Rr);let{SourceMapConsumer:Dr,SourceMapGenerator:Nr}=Ho,{dirname:jr,relative:Fr,resolve:Br,sep:_r}=Ho,{pathToFileURL:Ur}=Ho,Hr=Pr,zr=Boolean(Dr&&Nr),qr=Boolean(jr&&Br&&Fr&&_r);var Wr=class{constructor(e,t,n,o){this.stringify=e,this.mapOpts=n.map||{},this.root=t,this.opts=n,this.css=o,this.originalCSS=o,this.usesFileUrls=!this.mapOpts.from&&this.mapOpts.absolute,this.memoizedFileURLs=new Map,this.memoizedPaths=new Map,this.memoizedURLs=new Map}addAnnotation(){let e;e=this.isInline()?"data:application/json;base64,"+this.toBase64(this.map.toString()):"string"==typeof this.mapOpts.annotation?this.mapOpts.annotation:"function"==typeof this.mapOpts.annotation?this.mapOpts.annotation(this.opts.to,this.root):this.outputFile()+".map";let t="\n";this.css.includes("\r\n")&&(t="\r\n"),this.css+=t+"/*# sourceMappingURL="+e+" */"}applyPrevMaps(){for(let e of this.previous()){let t,n=this.toUrl(this.path(e.file)),o=e.root||jr(e.file);!1===this.mapOpts.sourcesContent?(t=new Dr(e.text),t.sourcesContent&&(t.sourcesContent=null)):t=e.consumer(),this.map.applySourceMap(t,n,this.toUrl(this.path(o)))}}clearAnnotation(){if(!1!==this.mapOpts.annotation)if(this.root){let e;for(let t=this.root.nodes.length-1;t>=0;t--)e=this.root.nodes[t],"comment"===e.type&&0===e.text.indexOf("# sourceMappingURL=")&&this.root.removeChild(t)}else this.css&&(this.css=this.css.replace(/\n*?\/\*#[\S\s]*?\*\/$/gm,""))}generate(){if(this.clearAnnotation(),qr&&zr&&this.isMap())return this.generateMap();{let e="";return this.stringify(this.root,(t=>{e+=t})),[e]}}generateMap(){if(this.root)this.generateString();else if(1===this.previous().length){let e=this.previous()[0].consumer();e.file=this.outputFile(),this.map=Nr.fromSourceMap(e,{ignoreInvalidMapping:!0})}else this.map=new Nr({file:this.outputFile(),ignoreInvalidMapping:!0}),this.map.addMapping({generated:{column:0,line:1},original:{column:0,line:1},source:this.opts.from?this.toUrl(this.path(this.opts.from)):""});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]}generateString(){this.css="",this.map=new Nr({file:this.outputFile(),ignoreInvalidMapping:!0});let e,t,n=1,o=1,r="",i={generated:{column:0,line:0},original:{column:0,line:0},source:""};this.stringify(this.root,((a,s,l)=>{if(this.css+=a,s&&"end"!==l&&(i.generated.line=n,i.generated.column=o-1,s.source&&s.source.start?(i.source=this.sourcePath(s),i.original.line=s.source.start.line,i.original.column=s.source.start.column-1,this.map.addMapping(i)):(i.source=r,i.original.line=1,i.original.column=0,this.map.addMapping(i))),e=a.match(/\n/g),e?(n+=e.length,t=a.lastIndexOf("\n"),o=a.length-t):o+=a.length,s&&"start"!==l){let e=s.parent||{raws:{}};("decl"===s.type||"atrule"===s.type&&!s.nodes)&&s===e.last&&!e.raws.semicolon||(s.source&&s.source.end?(i.source=this.sourcePath(s),i.original.line=s.source.end.line,i.original.column=s.source.end.column-1,i.generated.line=n,i.generated.column=o-2,this.map.addMapping(i)):(i.source=r,i.original.line=1,i.original.column=0,i.generated.line=n,i.generated.column=o-1,this.map.addMapping(i)))}}))}isAnnotation(){return!!this.isInline()||(void 0!==this.mapOpts.annotation?this.mapOpts.annotation:!this.previous().length||this.previous().some((e=>e.annotation)))}isInline(){if(void 0!==this.mapOpts.inline)return this.mapOpts.inline;let e=this.mapOpts.annotation;return(void 0===e||!0===e)&&(!this.previous().length||this.previous().some((e=>e.inline)))}isMap(){return void 0!==this.opts.map?!!this.opts.map:this.previous().length>0}isSourcesContent(){return void 0!==this.mapOpts.sourcesContent?this.mapOpts.sourcesContent:!this.previous().length||this.previous().some((e=>e.withContent()))}outputFile(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"}path(e){if(this.mapOpts.absolute)return e;if(60===e.charCodeAt(0))return e;if(/^\w+:\/\//.test(e))return e;let t=this.memoizedPaths.get(e);if(t)return t;let n=this.opts.to?jr(this.opts.to):".";"string"==typeof this.mapOpts.annotation&&(n=jr(Br(n,this.mapOpts.annotation)));let o=Fr(n,e);return this.memoizedPaths.set(e,o),o}previous(){if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk((e=>{if(e.source&&e.source.input.map){let t=e.source.input.map;this.previousMaps.includes(t)||this.previousMaps.push(t)}}));else{let e=new Hr(this.originalCSS,this.opts);e.map&&this.previousMaps.push(e.map)}return this.previousMaps}setSourcesContent(){let e={};if(this.root)this.root.walk((t=>{if(t.source){let n=t.source.input.from;if(n&&!e[n]){e[n]=!0;let o=this.usesFileUrls?this.toFileUrl(n):this.toUrl(this.path(n));this.map.setSourceContent(o,t.source.input.css)}}}));else if(this.css){let e=this.opts.from?this.toUrl(this.path(this.opts.from)):"";this.map.setSourceContent(e,this.css)}}sourcePath(e){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(e.source.input.from):this.toUrl(this.path(e.source.input.from))}toBase64(e){return Buffer?Buffer.from(e).toString("base64"):window.btoa(unescape(encodeURIComponent(e)))}toFileUrl(e){let t=this.memoizedFileURLs.get(e);if(t)return t;if(Ur){let t=Ur(e).toString();return this.memoizedFileURLs.set(e,t),t}throw new Error("`map.absolute` option is not available in this PostCSS build")}toUrl(e){let t=this.memoizedURLs.get(e);if(t)return t;"\\"===_r&&(e=e.replace(/\\/g,"/"));let n=encodeURI(e).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(e,n),n}};let Vr=ar,Gr=class extends Vr{constructor(e){super(e),this.type="comment"}};var Xr=Gr;Gr.default=Gr;let Yr,Jr,Kr,Zr,{isClean:$r,my:Qr}=Go,ei=cr,ti=Xr,ni=ar;function oi(e){return e.map((e=>(e.nodes&&(e.nodes=oi(e.nodes)),delete e.source,e)))}function ri(e){if(e[$r]=!1,e.proxyOf.nodes)for(let t of e.proxyOf.nodes)ri(t)}let ii=class e extends ni{append(...e){for(let t of e){let e=this.normalize(t,this.last);for(let t of e)this.proxyOf.nodes.push(t)}return this.markDirty(),this}cleanRaws(e){if(super.cleanRaws(e),this.nodes)for(let t of this.nodes)t.cleanRaws(e)}each(e){if(!this.proxyOf.nodes)return;let t,n,o=this.getIterator();for(;this.indexes[o]"proxyOf"===t?e:e[t]?"each"===t||"string"==typeof t&&t.startsWith("walk")?(...n)=>e[t](...n.map((e=>"function"==typeof e?(t,n)=>e(t.toProxy(),n):e))):"every"===t||"some"===t?n=>e[t](((e,...t)=>n(e.toProxy(),...t))):"root"===t?()=>e.root().toProxy():"nodes"===t?e.nodes.map((e=>e.toProxy())):"first"===t||"last"===t?e[t].toProxy():e[t]:e[t],set:(e,t,n)=>(e[t]===n||(e[t]=n,"name"!==t&&"params"!==t&&"selector"!==t||e.markDirty()),!0)}}index(e){return"number"==typeof e?e:(e.proxyOf&&(e=e.proxyOf),this.proxyOf.nodes.indexOf(e))}insertAfter(e,t){let n,o=this.index(e),r=this.normalize(t,this.proxyOf.nodes[o]).reverse();o=this.index(e);for(let i of r)this.proxyOf.nodes.splice(o+1,0,i);for(let i in this.indexes)n=this.indexes[i],o(t[Qr]||e.rebuild(t),(t=t.proxyOf).parent&&t.parent.removeChild(t),t[$r]&&ri(t),void 0===t.raws.before&&n&&void 0!==n.raws.before&&(t.raws.before=n.raws.before.replace(/\S/g,"")),t.parent=this.proxyOf,t)))}prepend(...e){e=e.reverse();for(let t of e){let e=this.normalize(t,this.first,"prepend").reverse();for(let t of e)this.proxyOf.nodes.unshift(t);for(let t in this.indexes)this.indexes[t]=this.indexes[t]+e.length}return this.markDirty(),this}push(e){return e.parent=this,this.proxyOf.nodes.push(e),this}removeAll(){for(let e of this.proxyOf.nodes)e.parent=void 0;return this.proxyOf.nodes=[],this.markDirty(),this}removeChild(e){let t;e=this.index(e),this.proxyOf.nodes[e].parent=void 0,this.proxyOf.nodes.splice(e,1);for(let n in this.indexes)t=this.indexes[n],t>=e&&(this.indexes[n]=t-1);return this.markDirty(),this}replaceValues(e,t,n){return n||(n=t,t={}),this.walkDecls((o=>{t.props&&!t.props.includes(o.prop)||t.fast&&!o.value.includes(t.fast)||(o.value=o.value.replace(e,n))})),this.markDirty(),this}some(e){return this.nodes.some(e)}walk(e){return this.each(((t,n)=>{let o;try{o=e(t,n)}catch(r){throw t.addToError(r)}return!1!==o&&t.walk&&(o=t.walk(e)),o}))}walkAtRules(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("atrule"===n.type&&e.test(n.name))return t(n,o)})):this.walk(((n,o)=>{if("atrule"===n.type&&n.name===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("atrule"===e.type)return t(e,n)})))}walkComments(e){return this.walk(((t,n)=>{if("comment"===t.type)return e(t,n)}))}walkDecls(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("decl"===n.type&&e.test(n.prop))return t(n,o)})):this.walk(((n,o)=>{if("decl"===n.type&&n.prop===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("decl"===e.type)return t(e,n)})))}walkRules(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("rule"===n.type&&e.test(n.selector))return t(n,o)})):this.walk(((n,o)=>{if("rule"===n.type&&n.selector===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("rule"===e.type)return t(e,n)})))}get first(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}get last(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}};ii.registerParse=e=>{Yr=e},ii.registerRule=e=>{Jr=e},ii.registerAtRule=e=>{Kr=e},ii.registerRoot=e=>{Zr=e};var ai=ii;ii.default=ii,ii.rebuild=e=>{"atrule"===e.type?Object.setPrototypeOf(e,Kr.prototype):"rule"===e.type?Object.setPrototypeOf(e,Jr.prototype):"decl"===e.type?Object.setPrototypeOf(e,ei.prototype):"comment"===e.type?Object.setPrototypeOf(e,ti.prototype):"root"===e.type&&Object.setPrototypeOf(e,Zr.prototype),e[Qr]=!0,e.nodes&&e.nodes.forEach((e=>{ii.rebuild(e)}))};let si,li,ci=ai,ui=class extends ci{constructor(e){super({type:"document",...e}),this.nodes||(this.nodes=[])}toResult(e={}){return new si(new li,this,e).stringify()}};ui.registerLazyResult=e=>{si=e},ui.registerProcessor=e=>{li=e};var di=ui;ui.default=ui;let pi=class{constructor(e,t={}){if(this.type="warning",this.text=e,t.node&&t.node.source){let e=t.node.rangeBy(t);this.line=e.start.line,this.column=e.start.column,this.endLine=e.end.line,this.endColumn=e.end.column}for(let n in t)this[n]=t[n]}toString(){return this.node?this.node.error(this.text,{index:this.index,plugin:this.plugin,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text}};var hi=pi;pi.default=pi;let fi=hi,mi=class{constructor(e,t,n){this.processor=e,this.messages=[],this.root=t,this.opts=n,this.css=void 0,this.map=void 0}toString(){return this.css}warn(e,t={}){t.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(t.plugin=this.lastPlugin.postcssPlugin);let n=new fi(e,t);return this.messages.push(n),n}warnings(){return this.messages.filter((e=>"warning"===e.type))}get content(){return this.css}};var gi=mi;mi.default=mi;const vi="'".charCodeAt(0),yi='"'.charCodeAt(0),bi="\\".charCodeAt(0),wi="/".charCodeAt(0),ki="\n".charCodeAt(0),xi=" ".charCodeAt(0),Si="\f".charCodeAt(0),Ci="\t".charCodeAt(0),Ii="\r".charCodeAt(0),Ei="[".charCodeAt(0),Ti="]".charCodeAt(0),Oi="(".charCodeAt(0),Li=")".charCodeAt(0),Ai="{".charCodeAt(0),Mi="}".charCodeAt(0),Ri=";".charCodeAt(0),Pi="*".charCodeAt(0),Di=":".charCodeAt(0),Ni="@".charCodeAt(0),ji=/[\t\n\f\r "#'()/;[\\\]{}]/g,Fi=/[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g,Bi=/.[\r\n"'(/\\]/,_i=/[\da-f]/i;let Ui=ai,Hi=class extends Ui{constructor(e){super(e),this.type="atrule"}append(...e){return this.proxyOf.nodes||(this.nodes=[]),super.append(...e)}prepend(...e){return this.proxyOf.nodes||(this.nodes=[]),super.prepend(...e)}};var zi=Hi;Hi.default=Hi,Ui.registerAtRule(Hi);let qi,Wi,Vi=ai,Gi=class extends Vi{constructor(e){super(e),this.type="root",this.nodes||(this.nodes=[])}normalize(e,t,n){let o=super.normalize(e);if(t)if("prepend"===n)this.nodes.length>1?t.raws.before=this.nodes[1].raws.before:delete t.raws.before;else if(this.first!==t)for(let r of o)r.raws.before=t.raws.before;return o}removeChild(e,t){let n=this.index(e);return!t&&0===n&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[n].raws.before),super.removeChild(e)}toResult(e={}){return new qi(new Wi,this,e).stringify()}};Gi.registerLazyResult=e=>{qi=e},Gi.registerProcessor=e=>{Wi=e};var Xi=Gi;Gi.default=Gi,Vi.registerRoot(Gi);let Yi={comma:e=>Yi.split(e,[","],!0),space:e=>Yi.split(e,[" ","\n","\t"]),split(e,t,n){let o=[],r="",i=!1,a=0,s=!1,l="",c=!1;for(let u of e)c?c=!1:"\\"===u?c=!0:s?u===l&&(s=!1):'"'===u||"'"===u?(s=!0,l=u):"("===u?a+=1:")"===u?a>0&&(a-=1):0===a&&t.includes(u)&&(i=!0),i?(""!==r&&o.push(r.trim()),r="",i=!1):r+=u;return(n||""!==r)&&o.push(r.trim()),o}};var Ji=Yi;Yi.default=Yi;let Ki=ai,Zi=Ji,$i=class extends Ki{constructor(e){super(e),this.type="rule",this.nodes||(this.nodes=[])}get selectors(){return Zi.comma(this.selector)}set selectors(e){let t=this.selector?this.selector.match(/,\s*/):null,n=t?t[0]:","+this.raw("between","beforeOpen");this.selector=e.join(n)}};var Qi=$i;$i.default=$i,Ki.registerRule($i);let ea=cr,ta=function(e,t={}){let n,o,r,i,a,s,l,c,u,d,p=e.css.valueOf(),h=t.ignoreErrors,f=p.length,m=0,g=[],v=[];function y(t){throw e.error("Unclosed "+t,m)}return{back:function(e){v.push(e)},endOfFile:function(){return 0===v.length&&m>=f},nextToken:function(e){if(v.length)return v.pop();if(m>=f)return;let t=!!e&&e.ignoreUnclosed;switch(n=p.charCodeAt(m),n){case ki:case xi:case Ci:case Ii:case Si:o=m;do{o+=1,n=p.charCodeAt(o)}while(n===xi||n===ki||n===Ci||n===Ii||n===Si);d=["space",p.slice(m,o)],m=o-1;break;case Ei:case Ti:case Ai:case Mi:case Di:case Ri:case Li:{let e=String.fromCharCode(n);d=[e,e,m];break}case Oi:if(c=g.length?g.pop()[1]:"",u=p.charCodeAt(m+1),"url"===c&&u!==vi&&u!==yi&&u!==xi&&u!==ki&&u!==Ci&&u!==Si&&u!==Ii){o=m;do{if(s=!1,o=p.indexOf(")",o+1),-1===o){if(h||t){o=m;break}y("bracket")}for(l=o;p.charCodeAt(l-1)===bi;)l-=1,s=!s}while(s);d=["brackets",p.slice(m,o+1),m,o],m=o}else o=p.indexOf(")",m+1),i=p.slice(m,o+1),-1===o||Bi.test(i)?d=["(","(",m]:(d=["brackets",i,m,o],m=o);break;case vi:case yi:r=n===vi?"'":'"',o=m;do{if(s=!1,o=p.indexOf(r,o+1),-1===o){if(h||t){o=m+1;break}y("string")}for(l=o;p.charCodeAt(l-1)===bi;)l-=1,s=!s}while(s);d=["string",p.slice(m,o+1),m,o],m=o;break;case Ni:ji.lastIndex=m+1,ji.test(p),o=0===ji.lastIndex?p.length-1:ji.lastIndex-2,d=["at-word",p.slice(m,o+1),m,o],m=o;break;case bi:for(o=m,a=!0;p.charCodeAt(o+1)===bi;)o+=1,a=!a;if(n=p.charCodeAt(o+1),a&&n!==wi&&n!==xi&&n!==ki&&n!==Ci&&n!==Ii&&n!==Si&&(o+=1,_i.test(p.charAt(o)))){for(;_i.test(p.charAt(o+1));)o+=1;p.charCodeAt(o+1)===xi&&(o+=1)}d=["word",p.slice(m,o+1),m,o],m=o;break;default:n===wi&&p.charCodeAt(m+1)===Pi?(o=p.indexOf("*/",m+2)+1,0===o&&(h||t?o=p.length:y("comment")),d=["comment",p.slice(m,o+1),m,o],m=o):(Fi.lastIndex=m+1,Fi.test(p),o=0===Fi.lastIndex?p.length-1:Fi.lastIndex-2,d=["word",p.slice(m,o+1),m,o],g.push(d),m=o)}return m++,d},position:function(){return m}}},na=Xr,oa=zi,ra=Xi,ia=Qi;const aa={empty:!0,space:!0};var sa=class{constructor(e){this.input=e,this.root=new ra,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:e,start:{column:1,line:1,offset:0}}}atrule(e){let t,n,o,r=new oa;r.name=e[1].slice(1),""===r.name&&this.unnamedAtrule(r,e),this.init(r,e[2]);let i=!1,a=!1,s=[],l=[];for(;!this.tokenizer.endOfFile();){if(t=(e=this.tokenizer.nextToken())[0],"("===t||"["===t?l.push("("===t?")":"]"):"{"===t&&l.length>0?l.push("}"):t===l[l.length-1]&&l.pop(),0===l.length){if(";"===t){r.source.end=this.getPosition(e[2]),r.source.end.offset++,this.semicolon=!0;break}if("{"===t){a=!0;break}if("}"===t){if(s.length>0){for(o=s.length-1,n=s[o];n&&"space"===n[0];)n=s[--o];n&&(r.source.end=this.getPosition(n[3]||n[2]),r.source.end.offset++)}this.end(e);break}s.push(e)}else s.push(e);if(this.tokenizer.endOfFile()){i=!0;break}}r.raws.between=this.spacesAndCommentsFromEnd(s),s.length?(r.raws.afterName=this.spacesAndCommentsFromStart(s),this.raw(r,"params",s),i&&(e=s[s.length-1],r.source.end=this.getPosition(e[3]||e[2]),r.source.end.offset++,this.spaces=r.raws.between,r.raws.between="")):(r.raws.afterName="",r.params=""),a&&(r.nodes=[],this.current=r)}checkMissedSemicolon(e){let t=this.colon(e);if(!1===t)return;let n,o=0;for(let r=t-1;r>=0&&(n=e[r],"space"===n[0]||(o+=1,2!==o));r--);throw this.input.error("Missed semicolon","word"===n[0]?n[3]+1:n[2])}colon(e){let t,n,o,r=0;for(let[i,a]of e.entries()){if(t=a,n=t[0],"("===n&&(r+=1),")"===n&&(r-=1),0===r&&":"===n){if(o){if("word"===o[0]&&"progid"===o[1])continue;return i}this.doubleColon(t)}o=t}return!1}comment(e){let t=new na;this.init(t,e[2]),t.source.end=this.getPosition(e[3]||e[2]),t.source.end.offset++;let n=e[1].slice(2,-2);if(/^\s*$/.test(n))t.text="",t.raws.left=n,t.raws.right="";else{let e=n.match(/^(\s*)([^]*\S)(\s*)$/);t.text=e[2],t.raws.left=e[1],t.raws.right=e[3]}}createTokenizer(){this.tokenizer=ta(this.input)}decl(e,t){let n=new ea;this.init(n,e[0][2]);let o,r=e[e.length-1];for(";"===r[0]&&(this.semicolon=!0,e.pop()),n.source.end=this.getPosition(r[3]||r[2]||function(e){for(let t=e.length-1;t>=0;t--){let n=e[t],o=n[3]||n[2];if(o)return o}}(e)),n.source.end.offset++;"word"!==e[0][0];)1===e.length&&this.unknownWord(e),n.raws.before+=e.shift()[1];for(n.source.start=this.getPosition(e[0][2]),n.prop="";e.length;){let t=e[0][0];if(":"===t||"space"===t||"comment"===t)break;n.prop+=e.shift()[1]}for(n.raws.between="";e.length;){if(o=e.shift(),":"===o[0]){n.raws.between+=o[1];break}"word"===o[0]&&/\w/.test(o[1])&&this.unknownWord([o]),n.raws.between+=o[1]}"_"!==n.prop[0]&&"*"!==n.prop[0]||(n.raws.before+=n.prop[0],n.prop=n.prop.slice(1));let i,a=[];for(;e.length&&(i=e[0][0],"space"===i||"comment"===i);)a.push(e.shift());this.precheckMissedSemicolon(e);for(let s=e.length-1;s>=0;s--){if(o=e[s],"!important"===o[1].toLowerCase()){n.important=!0;let t=this.stringFrom(e,s);t=this.spacesFromEnd(e)+t," !important"!==t&&(n.raws.important=t);break}if("important"===o[1].toLowerCase()){let t=e.slice(0),o="";for(let e=s;e>0;e--){let n=t[e][0];if(0===o.trim().indexOf("!")&&"space"!==n)break;o=t.pop()[1]+o}0===o.trim().indexOf("!")&&(n.important=!0,n.raws.important=o,e=t)}if("space"!==o[0]&&"comment"!==o[0])break}e.some((e=>"space"!==e[0]&&"comment"!==e[0]))&&(n.raws.between+=a.map((e=>e[1])).join(""),a=[]),this.raw(n,"value",a.concat(e),t),n.value.includes(":")&&!t&&this.checkMissedSemicolon(e)}doubleColon(e){throw this.input.error("Double colon",{offset:e[2]},{offset:e[2]+e[1].length})}emptyRule(e){let t=new ia;this.init(t,e[2]),t.selector="",t.raws.between="",this.current=t}end(e){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(e[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(e)}endFile(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position())}freeSemicolon(e){if(this.spaces+=e[1],this.current.nodes){let e=this.current.nodes[this.current.nodes.length-1];e&&"rule"===e.type&&!e.raws.ownSemicolon&&(e.raws.ownSemicolon=this.spaces,this.spaces="")}}getPosition(e){let t=this.input.fromOffset(e);return{column:t.col,line:t.line,offset:e}}init(e,t){this.current.push(e),e.source={input:this.input,start:this.getPosition(t)},e.raws.before=this.spaces,this.spaces="","comment"!==e.type&&(this.semicolon=!1)}other(e){let t=!1,n=null,o=!1,r=null,i=[],a=e[1].startsWith("--"),s=[],l=e;for(;l;){if(n=l[0],s.push(l),"("===n||"["===n)r||(r=l),i.push("("===n?")":"]");else if(a&&o&&"{"===n)r||(r=l),i.push("}");else if(0===i.length){if(";"===n){if(o)return void this.decl(s,a);break}if("{"===n)return void this.rule(s);if("}"===n){this.tokenizer.back(s.pop()),t=!0;break}":"===n&&(o=!0)}else n===i[i.length-1]&&(i.pop(),0===i.length&&(r=null));l=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(t=!0),i.length>0&&this.unclosedBracket(r),t&&o){if(!a)for(;s.length&&(l=s[s.length-1][0],"space"===l||"comment"===l);)this.tokenizer.back(s.pop());this.decl(s,a)}else this.unknownWord(s)}parse(){let e;for(;!this.tokenizer.endOfFile();)switch(e=this.tokenizer.nextToken(),e[0]){case"space":this.spaces+=e[1];break;case";":this.freeSemicolon(e);break;case"}":this.end(e);break;case"comment":this.comment(e);break;case"at-word":this.atrule(e);break;case"{":this.emptyRule(e);break;default:this.other(e)}this.endFile()}precheckMissedSemicolon(){}raw(e,t,n,o){let r,i,a,s,l=n.length,c="",u=!0;for(let d=0;de+t[1]),"");e.raws[t]={raw:o,value:c}}e[t]=c}rule(e){e.pop();let t=new ia;this.init(t,e[0][2]),t.raws.between=this.spacesAndCommentsFromEnd(e),this.raw(t,"selector",e),this.current=t}spacesAndCommentsFromEnd(e){let t,n="";for(;e.length&&(t=e[e.length-1][0],"space"===t||"comment"===t);)n=e.pop()[1]+n;return n}spacesAndCommentsFromStart(e){let t,n="";for(;e.length&&(t=e[0][0],"space"===t||"comment"===t);)n+=e.shift()[1];return n}spacesFromEnd(e){let t,n="";for(;e.length&&(t=e[e.length-1][0],"space"===t);)n=e.pop()[1]+n;return n}stringFrom(e,t){let n="";for(let o=t;oLa(e))),e}let Aa={},Ma=class e{constructor(t,n,o){let r;if(this.stringified=!1,this.processed=!1,"object"!=typeof n||null===n||"root"!==n.type&&"document"!==n.type)if(n instanceof e||n instanceof ba)r=La(n.root),n.map&&(void 0===o.map&&(o.map={}),o.map.inline||(o.map.inline=!1),o.map.prev=n.map);else{let e=wa;o.syntax&&(e=o.syntax.parse),o.parser&&(e=o.parser),e.parse&&(e=e.parse);try{r=e(n,o)}catch(i){this.processed=!0,this.error=i}r&&!r[fa]&&va.rebuild(r)}else r=La(n);this.result=new ba(t,r,o),this.helpers={...Aa,postcss:Aa,result:this.result},this.plugins=this.processor.plugins.map((e=>"object"==typeof e&&e.prepare?{...e,...e.prepare(this.result)}:e))}async(){return this.error?Promise.reject(this.error):this.processed?Promise.resolve(this.result):(this.processing||(this.processing=this.runAsync()),this.processing)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}getAsyncError(){throw new Error("Use process(css).then(cb) to work with async plugins")}handleError(e,t){let n=this.result.lastPlugin;try{t&&t.addToError(e),this.error=e,"CssSyntaxError"!==e.name||e.plugin?n.postcssVersion:(e.plugin=n.postcssPlugin,e.setMessage())}catch(o){console&&console.error&&console.error(o)}return e}prepareVisitors(){this.listeners={};let e=(e,t,n)=>{this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].push([e,n])};for(let t of this.plugins)if("object"==typeof t)for(let n in t){if(!Sa[n]&&/^[A-Z]/.test(n))throw new Error(`Unknown event ${n} in ${t.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`);if(!Ca[n])if("object"==typeof t[n])for(let o in t[n])e(t,"*"===o?n:n+"-"+o.toLowerCase(),t[n][o]);else"function"==typeof t[n]&&e(t,n,t[n])}this.hasListener=Object.keys(this.listeners).length>0}async runAsync(){this.plugin=0;for(let n=0;n0;){let e=this.visitTick(n);if(Ea(e))try{await e}catch(t){let e=n[n.length-1].node;throw this.handleError(t,e)}}}if(this.listeners.OnceExit)for(let[n,o]of this.listeners.OnceExit){this.result.lastPlugin=n;try{if("document"===e.type){let t=e.nodes.map((e=>o(e,this.helpers)));await Promise.all(t)}else await o(e,this.helpers)}catch(t){throw this.handleError(t)}}}return this.processed=!0,this.stringify()}runOnRoot(e){this.result.lastPlugin=e;try{if("object"==typeof e&&e.Once){if("document"===this.result.root.type){let t=this.result.root.nodes.map((t=>e.Once(t,this.helpers)));return Ea(t[0])?Promise.all(t):t}return e.Once(this.result.root,this.helpers)}if("function"==typeof e)return e(this.result.root,this.result)}catch(t){throw this.handleError(t)}}stringify(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();let e=this.result.opts,t=ga;e.syntax&&(t=e.syntax.stringify),e.stringifier&&(t=e.stringifier),t.stringify&&(t=t.stringify);let n=new ma(t,this.result.root,this.result.opts).generate();return this.result.css=n[0],this.result.map=n[1],this.result}sync(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(let e of this.plugins){if(Ea(this.runOnRoot(e)))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){let e=this.result.root;for(;!e[ha];)e[ha]=!0,this.walkSync(e);if(this.listeners.OnceExit)if("document"===e.type)for(let t of e.nodes)this.visitSync(this.listeners.OnceExit,t);else this.visitSync(this.listeners.OnceExit,e)}return this.result}then(e,t){return this.async().then(e,t)}toString(){return this.css}visitSync(e,t){for(let[o,r]of e){let e;this.result.lastPlugin=o;try{e=r(t,this.helpers)}catch(n){throw this.handleError(n,t.proxyOf)}if("root"!==t.type&&"document"!==t.type&&!t.parent)return!0;if(Ea(e))throw this.getAsyncError()}}visitTick(e){let t=e[e.length-1],{node:n,visitors:o}=t;if("root"!==n.type&&"document"!==n.type&&!n.parent)return void e.pop();if(o.length>0&&t.visitorIndex{e[ha]||this.walkSync(e)}));else{let t=this.listeners[n];if(t&&this.visitSync(t,e.toProxy()))return}}warnings(){return this.sync().warnings()}get content(){return this.stringify().content}get css(){return this.stringify().css}get map(){return this.stringify().map}get messages(){return this.sync().messages}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){return this.sync().root}get[Symbol.toStringTag](){return"LazyResult"}};Ma.registerPostcss=e=>{Aa=e};var Ra=Ma;Ma.default=Ma,ka.registerLazyResult(Ma),ya.registerLazyResult(Ma);let Pa=Wr,Da=$o,Na=pa;const ja=gi;let Fa=class{constructor(e,t,n){let o;t=t.toString(),this.stringified=!1,this._processor=e,this._css=t,this._opts=n,this._map=void 0;let r=Da;this.result=new ja(this._processor,o,this._opts),this.result.css=t;let i=this;Object.defineProperty(this.result,"root",{get:()=>i.root});let a=new Pa(r,o,this._opts,t);if(a.isMap()){let[e,t]=a.generate();e&&(this.result.css=e),t&&(this.result.map=t)}else a.clearAnnotation(),this.result.css=a.css}async(){return this.error?Promise.reject(this.error):Promise.resolve(this.result)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}sync(){if(this.error)throw this.error;return this.result}then(e,t){return this.async().then(e,t)}toString(){return this._css}warnings(){return[]}get content(){return this.result.css}get css(){return this.result.css}get map(){return this.result.map}get messages(){return[]}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){if(this._root)return this._root;let e,t=Na;try{e=t(this._css,this._opts)}catch(n){this.error=n}if(this.error)throw this.error;return this._root=e,e}get[Symbol.toStringTag](){return"NoWorkResult"}};var Ba=Fa;Fa.default=Fa;let _a=Ba,Ua=Ra,Ha=di,za=Xi,qa=class{constructor(e=[]){this.version="8.4.38",this.plugins=this.normalize(e)}normalize(e){let t=[];for(let n of e)if(!0===n.postcss?n=n():n.postcss&&(n=n.postcss),"object"==typeof n&&Array.isArray(n.plugins))t=t.concat(n.plugins);else if("object"==typeof n&&n.postcssPlugin)t.push(n);else if("function"==typeof n)t.push(n);else{if("object"!=typeof n||!n.parse&&!n.stringify)throw new Error(n+" is not a PostCSS plugin")}return t}process(e,t={}){return this.plugins.length||t.parser||t.stringifier||t.syntax?new Ua(this,e,t):new _a(this,e,t)}use(e){return this.plugins=this.plugins.concat(this.normalize([e])),this}};var Wa=qa;qa.default=qa,za.registerProcessor(qa),Ha.registerProcessor(qa);let Va=cr,Ga=yr,Xa=Xr,Ya=zi,Ja=Pr,Ka=Xi,Za=Qi;function $a(e,t){if(Array.isArray(e))return e.map((e=>$a(e)));let{inputs:n,...o}=e;if(n){t=[];for(let e of n){let n={...e,__proto__:Ja.prototype};n.map&&(n.map={...n.map,__proto__:Ga.prototype}),t.push(n)}}if(o.nodes&&(o.nodes=e.nodes.map((e=>$a(e,t)))),o.source){let{inputId:e,...n}=o.source;o.source=n,null!=e&&(o.source.input=t[e])}if("root"===o.type)return new Ka(o);if("decl"===o.type)return new Va(o);if("rule"===o.type)return new Za(o);if("comment"===o.type)return new Xa(o);if("atrule"===o.type)return new Ya(o);throw new Error("Unknown node type: "+e.type)}var Qa=$a;$a.default=$a;let es=Vo,ts=cr,ns=Ra,os=ai,rs=Wa,is=$o,as=Qa,ss=di,ls=hi,cs=Xr,us=zi,ds=gi,ps=Pr,hs=pa,fs=Ji,ms=Qi,gs=Xi,vs=ar;function ys(...e){return 1===e.length&&Array.isArray(e[0])&&(e=e[0]),new rs(e)}ys.plugin=function(e,t){let n,o=!1;function r(...n){console&&console.warn&&!o&&(o=!0,console.warn(e+": postcss.plugin was deprecated. Migration guide:\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration"),process.env.LANG&&process.env.LANG.startsWith("cn")&&console.warn(e+": 里面 postcss.plugin 被弃用. 迁移指南:\nhttps://www.w3ctech.com/topic/2226"));let r=t(...n);return r.postcssPlugin=e,r.postcssVersion=(new rs).version,r}return Object.defineProperty(r,"postcss",{get:()=>(n||(n=r()),n)}),r.process=function(e,t,n){return ys([r(n)]).process(e,t)},r},ys.stringify=is,ys.parse=hs,ys.fromJSON=as,ys.list=fs,ys.comment=e=>new cs(e),ys.atRule=e=>new us(e),ys.decl=e=>new ts(e),ys.rule=e=>new ms(e),ys.root=e=>new gs(e),ys.document=e=>new ss(e),ys.CssSyntaxError=es,ys.Declaration=ts,ys.Container=os,ys.Processor=rs,ys.Document=ss,ys.Comment=cs,ys.Warning=ls,ys.AtRule=us,ys.Result=ds,ys.Input=ps,ys.Rule=ms,ys.Root=gs,ys.Node=vs,ns.registerPostcss(ys);var bs=ys;ys.default=ys;const ws=No(bs);ws.stringify,ws.fromJSON,ws.plugin,ws.parse,ws.list,ws.document,ws.comment,ws.atRule,ws.rule,ws.decl,ws.root,ws.CssSyntaxError,ws.Declaration,ws.Container,ws.Processor,ws.Document,ws.Comment,ws.Warning,ws.AtRule,ws.Result,ws.Input,ws.Rule,ws.Root,ws.Node;var ks=Object.defineProperty,xs=(e,t,n)=>((e,t,n)=>t in e?ks(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,"symbol"!=typeof t?t+"":t,n);function Ss(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function Cs(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var n=function e(){return this instanceof e?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,o.get?o:{enumerable:!0,get:function(){return e[t]}})})),n}var Is={exports:{}},Es=String,Ts=function(){return{isColorSupported:!1,reset:Es,bold:Es,dim:Es,italic:Es,underline:Es,inverse:Es,hidden:Es,strikethrough:Es,black:Es,red:Es,green:Es,yellow:Es,blue:Es,magenta:Es,cyan:Es,white:Es,gray:Es,bgBlack:Es,bgRed:Es,bgGreen:Es,bgYellow:Es,bgBlue:Es,bgMagenta:Es,bgCyan:Es,bgWhite:Es}};Is.exports=Ts(),Is.exports.createColors=Ts;var Os=Is.exports;const Ls=Cs(Object.freeze(Object.defineProperty({__proto__:null,default:{}},Symbol.toStringTag,{value:"Module"})));let As=Os,Ms=Ls,Rs=class e extends Error{constructor(t,n,o,r,i,a){super(t),this.name="CssSyntaxError",this.reason=t,i&&(this.file=i),r&&(this.source=r),a&&(this.plugin=a),void 0!==n&&void 0!==o&&("number"==typeof n?(this.line=n,this.column=o):(this.line=n.line,this.column=n.column,this.endLine=o.line,this.endColumn=o.column)),this.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(this,e)}setMessage(){this.message=this.plugin?this.plugin+": ":"",this.message+=this.file?this.file:"",void 0!==this.line&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason}showSourceCode(e){if(!this.source)return"";let t=this.source;null==e&&(e=As.isColorSupported),Ms&&e&&(t=Ms(t));let n,o,r=t.split(/\r?\n/),i=Math.max(this.line-3,0),a=Math.min(this.line+2,r.length),s=String(a).length;if(e){let{bold:e,gray:t,red:r}=As.createColors(!0);n=t=>e(r(t)),o=e=>t(e)}else n=o=e=>e;return r.slice(i,a).map(((e,t)=>{let r=i+1+t,a=" "+(" "+r).slice(-s)+" | ";if(r===this.line){let t=o(a.replace(/\d/g," "))+e.slice(0,this.column-1).replace(/[^\t]/g," ");return n(">")+o(a)+e+"\n "+t+n("^")}return" "+o(a)+e})).join("\n")}toString(){let e=this.showSourceCode();return e&&(e="\n\n"+e+"\n"),this.name+": "+this.message+e}};var Ps=Rs;Rs.default=Rs;var Ds={};Ds.isClean=Symbol("isClean"),Ds.my=Symbol("my");const Ns={after:"\n",beforeClose:"\n",beforeComment:"\n",beforeDecl:"\n",beforeOpen:" ",beforeRule:"\n",colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:!1};let js=class{constructor(e){this.builder=e}atrule(e,t){let n="@"+e.name,o=e.params?this.rawValue(e,"params"):"";if(void 0!==e.raws.afterName?n+=e.raws.afterName:o&&(n+=" "),e.nodes)this.block(e,n+o);else{let r=(e.raws.between||"")+(t?";":"");this.builder(n+o+r,e)}}beforeAfter(e,t){let n;n="decl"===e.type?this.raw(e,null,"beforeDecl"):"comment"===e.type?this.raw(e,null,"beforeComment"):"before"===t?this.raw(e,null,"beforeRule"):this.raw(e,null,"beforeClose");let o=e.parent,r=0;for(;o&&"root"!==o.type;)r+=1,o=o.parent;if(n.includes("\n")){let t=this.raw(e,null,"indent");if(t.length)for(let e=0;e0&&"comment"===e.nodes[t].type;)t-=1;let n=this.raw(e,"semicolon");for(let o=0;o{if(o=e.raws[t],void 0!==o)return!1}))}var a;return void 0===o&&(o=Ns[n]),i.rawCache[n]=o,o}rawBeforeClose(e){let t;return e.walk((e=>{if(e.nodes&&e.nodes.length>0&&void 0!==e.raws.after)return t=e.raws.after,t.includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1})),t&&(t=t.replace(/\S/g,"")),t}rawBeforeComment(e,t){let n;return e.walkComments((e=>{if(void 0!==e.raws.before)return n=e.raws.before,n.includes("\n")&&(n=n.replace(/[^\n]+$/,"")),!1})),void 0===n?n=this.raw(t,null,"beforeDecl"):n&&(n=n.replace(/\S/g,"")),n}rawBeforeDecl(e,t){let n;return e.walkDecls((e=>{if(void 0!==e.raws.before)return n=e.raws.before,n.includes("\n")&&(n=n.replace(/[^\n]+$/,"")),!1})),void 0===n?n=this.raw(t,null,"beforeRule"):n&&(n=n.replace(/\S/g,"")),n}rawBeforeOpen(e){let t;return e.walk((e=>{if("decl"!==e.type&&(t=e.raws.between,void 0!==t))return!1})),t}rawBeforeRule(e){let t;return e.walk((n=>{if(n.nodes&&(n.parent!==e||e.first!==n)&&void 0!==n.raws.before)return t=n.raws.before,t.includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1})),t&&(t=t.replace(/\S/g,"")),t}rawColon(e){let t;return e.walkDecls((e=>{if(void 0!==e.raws.between)return t=e.raws.between.replace(/[^\s:]/g,""),!1})),t}rawEmptyBody(e){let t;return e.walk((e=>{if(e.nodes&&0===e.nodes.length&&(t=e.raws.after,void 0!==t))return!1})),t}rawIndent(e){if(e.raws.indent)return e.raws.indent;let t;return e.walk((n=>{let o=n.parent;if(o&&o!==e&&o.parent&&o.parent===e&&void 0!==n.raws.before){let e=n.raws.before.split("\n");return t=e[e.length-1],t=t.replace(/\S/g,""),!1}})),t}rawSemicolon(e){let t;return e.walk((e=>{if(e.nodes&&e.nodes.length&&"decl"===e.last.type&&(t=e.raws.semicolon,void 0!==t))return!1})),t}rawValue(e,t){let n=e[t],o=e.raws[t];return o&&o.value===n?o.raw:n}root(e){this.body(e),e.raws.after&&this.builder(e.raws.after)}rule(e){this.block(e,this.rawValue(e,"selector")),e.raws.ownSemicolon&&this.builder(e.raws.ownSemicolon,e,"end")}stringify(e,t){if(!this[e.type])throw new Error("Unknown AST node type "+e.type+". Maybe you need to change PostCSS stringifier.");this[e.type](e,t)}};var Fs=js;js.default=js;let Bs=Fs;function _s(e,t){new Bs(t).stringify(e)}var Us=_s;_s.default=_s;let{isClean:Hs,my:zs}=Ds,qs=Ps,Ws=Fs,Vs=Us;function Gs(e,t){let n=new e.constructor;for(let o in e){if(!Object.prototype.hasOwnProperty.call(e,o))continue;if("proxyCache"===o)continue;let r=e[o],i=typeof r;"parent"===o&&"object"===i?t&&(n[o]=t):"source"===o?n[o]=r:Array.isArray(r)?n[o]=r.map((e=>Gs(e,n))):("object"===i&&null!==r&&(r=Gs(r)),n[o]=r)}return n}let Xs=class{constructor(e={}){this.raws={},this[Hs]=!1,this[zs]=!0;for(let t in e)if("nodes"===t){this.nodes=[];for(let n of e[t])"function"==typeof n.clone?this.append(n.clone()):this.append(n)}else this[t]=e[t]}addToError(e){if(e.postcssNode=this,e.stack&&this.source&&/\n\s{4}at /.test(e.stack)){let t=this.source;e.stack=e.stack.replace(/\n\s{4}at /,`$&${t.input.from}:${t.start.line}:${t.start.column}$&`)}return e}after(e){return this.parent.insertAfter(this,e),this}assign(e={}){for(let t in e)this[t]=e[t];return this}before(e){return this.parent.insertBefore(this,e),this}cleanRaws(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between}clone(e={}){let t=Gs(this);for(let n in e)t[n]=e[n];return t}cloneAfter(e={}){let t=this.clone(e);return this.parent.insertAfter(this,t),t}cloneBefore(e={}){let t=this.clone(e);return this.parent.insertBefore(this,t),t}error(e,t={}){if(this.source){let{end:n,start:o}=this.rangeBy(t);return this.source.input.error(e,{column:o.column,line:o.line},{column:n.column,line:n.line},t)}return new qs(e)}getProxyProcessor(){return{get:(e,t)=>"proxyOf"===t?e:"root"===t?()=>e.root().toProxy():e[t],set:(e,t,n)=>(e[t]===n||(e[t]=n,"prop"!==t&&"value"!==t&&"name"!==t&&"params"!==t&&"important"!==t&&"text"!==t||e.markDirty()),!0)}}markDirty(){if(this[Hs]){this[Hs]=!1;let e=this;for(;e=e.parent;)e[Hs]=!1}}next(){if(!this.parent)return;let e=this.parent.index(this);return this.parent.nodes[e+1]}positionBy(e,t){let n=this.source.start;if(e.index)n=this.positionInside(e.index,t);else if(e.word){let o=(t=this.toString()).indexOf(e.word);-1!==o&&(n=this.positionInside(o,t))}return n}positionInside(e,t){let n=t||this.toString(),o=this.source.start.column,r=this.source.start.line;for(let i=0;i"object"==typeof e&&e.toJSON?e.toJSON(null,t):e));else if("object"==typeof e&&e.toJSON)n[i]=e.toJSON(null,t);else if("source"===i){let o=t.get(e.input);null==o&&(o=r,t.set(e.input,r),r++),n[i]={end:e.end,inputId:o,start:e.start}}else n[i]=e}return o&&(n.inputs=[...t.keys()].map((e=>e.toJSON()))),n}toProxy(){return this.proxyCache||(this.proxyCache=new Proxy(this,this.getProxyProcessor())),this.proxyCache}toString(e=Vs){e.stringify&&(e=e.stringify);let t="";return e(this,(e=>{t+=e})),t}warn(e,t,n){let o={node:this};for(let r in n)o[r]=n[r];return e.warn(t,o)}get proxyOf(){return this}};var Ys=Xs;Xs.default=Xs;let Js=Ys,Ks=class extends Js{constructor(e){e&&void 0!==e.value&&"string"!=typeof e.value&&(e={...e,value:String(e.value)}),super(e),this.type="decl"}get variable(){return this.prop.startsWith("--")||"$"===this.prop[0]}};var Zs=Ks;Ks.default=Ks;var $s={nanoid:(e=21)=>{let t="",n=e;for(;n--;)t+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[64*Math.random()|0];return t},customAlphabet:(e,t=21)=>(n=t)=>{let o="",r=n;for(;r--;)o+=e[Math.random()*e.length|0];return o}};let{SourceMapConsumer:Qs,SourceMapGenerator:el}=Ls,{existsSync:tl,readFileSync:nl}=Ls,{dirname:ol,join:rl}=Ls;let il=class{constructor(e,t){if(!1===t.map)return;this.loadAnnotation(e),this.inline=this.startWith(this.annotation,"data:");let n=t.map?t.map.prev:void 0,o=this.loadMap(t.from,n);!this.mapFile&&t.from&&(this.mapFile=t.from),this.mapFile&&(this.root=ol(this.mapFile)),o&&(this.text=o)}consumer(){return this.consumerCache||(this.consumerCache=new Qs(this.text)),this.consumerCache}decodeInline(e){if(/^data:application\/json;charset=utf-?8,/.test(e)||/^data:application\/json,/.test(e))return decodeURIComponent(e.substr(RegExp.lastMatch.length));if(/^data:application\/json;charset=utf-?8;base64,/.test(e)||/^data:application\/json;base64,/.test(e))return t=e.substr(RegExp.lastMatch.length),Buffer?Buffer.from(t,"base64").toString():window.atob(t);var t;let n=e.match(/data:application\/json;([^,]+),/)[1];throw new Error("Unsupported source map encoding "+n)}getAnnotationURL(e){return e.replace(/^\/\*\s*# sourceMappingURL=/,"").trim()}isMap(e){return"object"==typeof e&&("string"==typeof e.mappings||"string"==typeof e._mappings||Array.isArray(e.sections))}loadAnnotation(e){let t=e.match(/\/\*\s*# sourceMappingURL=/gm);if(!t)return;let n=e.lastIndexOf(t.pop()),o=e.indexOf("*/",n);n>-1&&o>-1&&(this.annotation=this.getAnnotationURL(e.substring(n,o)))}loadFile(e){if(this.root=ol(e),tl(e))return this.mapFile=e,nl(e,"utf-8").toString().trim()}loadMap(e,t){if(!1===t)return!1;if(t){if("string"==typeof t)return t;if("function"!=typeof t){if(t instanceof Qs)return el.fromSourceMap(t).toString();if(t instanceof el)return t.toString();if(this.isMap(t))return JSON.stringify(t);throw new Error("Unsupported previous source map format: "+t.toString())}{let n=t(e);if(n){let e=this.loadFile(n);if(!e)throw new Error("Unable to load previous source map: "+n.toString());return e}}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){let t=this.annotation;return e&&(t=rl(ol(e),t)),this.loadFile(t)}}}startWith(e,t){return!!e&&e.substr(0,t.length)===t}withContent(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)}};var al=il;il.default=il;let{SourceMapConsumer:sl,SourceMapGenerator:ll}=Ls,{fileURLToPath:cl,pathToFileURL:ul}=Ls,{isAbsolute:dl,resolve:pl}=Ls,{nanoid:hl}=$s,fl=Ls,ml=Ps,gl=al,vl=Symbol("fromOffsetCache"),yl=Boolean(sl&&ll),bl=Boolean(pl&&dl),wl=class{constructor(e,t={}){if(null==e||"object"==typeof e&&!e.toString)throw new Error(`PostCSS received ${e} instead of CSS string`);if(this.css=e.toString(),"\ufeff"===this.css[0]||"￾"===this.css[0]?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,t.from&&(!bl||/^\w+:\/\//.test(t.from)||dl(t.from)?this.file=t.from:this.file=pl(t.from)),bl&&yl){let e=new gl(this.css,t);if(e.text){this.map=e;let t=e.consumer().file;!this.file&&t&&(this.file=this.mapResolve(t))}}this.file||(this.id=""),this.map&&(this.map.file=this.from)}error(e,t,n,o={}){let r,i,a;if(t&&"object"==typeof t){let e=t,o=n;if("number"==typeof e.offset){let o=this.fromOffset(e.offset);t=o.line,n=o.col}else t=e.line,n=e.column;if("number"==typeof o.offset){let e=this.fromOffset(o.offset);i=e.line,a=e.col}else i=o.line,a=o.column}else if(!n){let e=this.fromOffset(t);t=e.line,n=e.col}let s=this.origin(t,n,i,a);return r=s?new ml(e,void 0===s.endLine?s.line:{column:s.column,line:s.line},void 0===s.endLine?s.column:{column:s.endColumn,line:s.endLine},s.source,s.file,o.plugin):new ml(e,void 0===i?t:{column:n,line:t},void 0===i?n:{column:a,line:i},this.css,this.file,o.plugin),r.input={column:n,endColumn:a,endLine:i,line:t,source:this.css},this.file&&(ul&&(r.input.url=ul(this.file).toString()),r.input.file=this.file),r}fromOffset(e){let t,n;if(this[vl])n=this[vl];else{let e=this.css.split("\n");n=new Array(e.length);let t=0;for(let o=0,r=e.length;o=t)o=n.length-1;else{let t,r=n.length-2;for(;o>1),e=n[t+1])){o=t;break}o=t+1}}return{col:e-n[o]+1,line:o+1}}mapResolve(e){return/^\w+:\/\//.test(e)?e:pl(this.map.consumer().sourceRoot||this.map.root||".",e)}origin(e,t,n,o){if(!this.map)return!1;let r,i,a=this.map.consumer(),s=a.originalPositionFor({column:t,line:e});if(!s.source)return!1;"number"==typeof n&&(r=a.originalPositionFor({column:o,line:n})),i=dl(s.source)?ul(s.source):new URL(s.source,this.map.consumer().sourceRoot||ul(this.map.mapFile));let l={column:s.column,endColumn:r&&r.column,endLine:r&&r.line,line:s.line,url:i.toString()};if("file:"===i.protocol){if(!cl)throw new Error("file: protocol is not available in this PostCSS build");l.file=cl(i)}let c=a.sourceContentFor(s.source);return c&&(l.source=c),l}toJSON(){let e={};for(let t of["hasBOM","css","file","id"])null!=this[t]&&(e[t]=this[t]);return this.map&&(e.map={...this.map},e.map.consumerCache&&(e.map.consumerCache=void 0)),e}get from(){return this.file||this.id}};var kl=wl;wl.default=wl,fl&&fl.registerInput&&fl.registerInput(wl);let{SourceMapConsumer:xl,SourceMapGenerator:Sl}=Ls,{dirname:Cl,relative:Il,resolve:El,sep:Tl}=Ls,{pathToFileURL:Ol}=Ls,Ll=kl,Al=Boolean(xl&&Sl),Ml=Boolean(Cl&&El&&Il&&Tl);var Rl=class{constructor(e,t,n,o){this.stringify=e,this.mapOpts=n.map||{},this.root=t,this.opts=n,this.css=o,this.originalCSS=o,this.usesFileUrls=!this.mapOpts.from&&this.mapOpts.absolute,this.memoizedFileURLs=new Map,this.memoizedPaths=new Map,this.memoizedURLs=new Map}addAnnotation(){let e;e=this.isInline()?"data:application/json;base64,"+this.toBase64(this.map.toString()):"string"==typeof this.mapOpts.annotation?this.mapOpts.annotation:"function"==typeof this.mapOpts.annotation?this.mapOpts.annotation(this.opts.to,this.root):this.outputFile()+".map";let t="\n";this.css.includes("\r\n")&&(t="\r\n"),this.css+=t+"/*# sourceMappingURL="+e+" */"}applyPrevMaps(){for(let e of this.previous()){let t,n=this.toUrl(this.path(e.file)),o=e.root||Cl(e.file);!1===this.mapOpts.sourcesContent?(t=new xl(e.text),t.sourcesContent&&(t.sourcesContent=null)):t=e.consumer(),this.map.applySourceMap(t,n,this.toUrl(this.path(o)))}}clearAnnotation(){if(!1!==this.mapOpts.annotation)if(this.root){let e;for(let t=this.root.nodes.length-1;t>=0;t--)e=this.root.nodes[t],"comment"===e.type&&0===e.text.indexOf("# sourceMappingURL=")&&this.root.removeChild(t)}else this.css&&(this.css=this.css.replace(/\n*?\/\*#[\S\s]*?\*\/$/gm,""))}generate(){if(this.clearAnnotation(),Ml&&Al&&this.isMap())return this.generateMap();{let e="";return this.stringify(this.root,(t=>{e+=t})),[e]}}generateMap(){if(this.root)this.generateString();else if(1===this.previous().length){let e=this.previous()[0].consumer();e.file=this.outputFile(),this.map=Sl.fromSourceMap(e,{ignoreInvalidMapping:!0})}else this.map=new Sl({file:this.outputFile(),ignoreInvalidMapping:!0}),this.map.addMapping({generated:{column:0,line:1},original:{column:0,line:1},source:this.opts.from?this.toUrl(this.path(this.opts.from)):""});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]}generateString(){this.css="",this.map=new Sl({file:this.outputFile(),ignoreInvalidMapping:!0});let e,t,n=1,o=1,r="",i={generated:{column:0,line:0},original:{column:0,line:0},source:""};this.stringify(this.root,((a,s,l)=>{if(this.css+=a,s&&"end"!==l&&(i.generated.line=n,i.generated.column=o-1,s.source&&s.source.start?(i.source=this.sourcePath(s),i.original.line=s.source.start.line,i.original.column=s.source.start.column-1,this.map.addMapping(i)):(i.source=r,i.original.line=1,i.original.column=0,this.map.addMapping(i))),e=a.match(/\n/g),e?(n+=e.length,t=a.lastIndexOf("\n"),o=a.length-t):o+=a.length,s&&"start"!==l){let e=s.parent||{raws:{}};("decl"===s.type||"atrule"===s.type&&!s.nodes)&&s===e.last&&!e.raws.semicolon||(s.source&&s.source.end?(i.source=this.sourcePath(s),i.original.line=s.source.end.line,i.original.column=s.source.end.column-1,i.generated.line=n,i.generated.column=o-2,this.map.addMapping(i)):(i.source=r,i.original.line=1,i.original.column=0,i.generated.line=n,i.generated.column=o-1,this.map.addMapping(i)))}}))}isAnnotation(){return!!this.isInline()||(void 0!==this.mapOpts.annotation?this.mapOpts.annotation:!this.previous().length||this.previous().some((e=>e.annotation)))}isInline(){if(void 0!==this.mapOpts.inline)return this.mapOpts.inline;let e=this.mapOpts.annotation;return(void 0===e||!0===e)&&(!this.previous().length||this.previous().some((e=>e.inline)))}isMap(){return void 0!==this.opts.map?!!this.opts.map:this.previous().length>0}isSourcesContent(){return void 0!==this.mapOpts.sourcesContent?this.mapOpts.sourcesContent:!this.previous().length||this.previous().some((e=>e.withContent()))}outputFile(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"}path(e){if(this.mapOpts.absolute)return e;if(60===e.charCodeAt(0))return e;if(/^\w+:\/\//.test(e))return e;let t=this.memoizedPaths.get(e);if(t)return t;let n=this.opts.to?Cl(this.opts.to):".";"string"==typeof this.mapOpts.annotation&&(n=Cl(El(n,this.mapOpts.annotation)));let o=Il(n,e);return this.memoizedPaths.set(e,o),o}previous(){if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk((e=>{if(e.source&&e.source.input.map){let t=e.source.input.map;this.previousMaps.includes(t)||this.previousMaps.push(t)}}));else{let e=new Ll(this.originalCSS,this.opts);e.map&&this.previousMaps.push(e.map)}return this.previousMaps}setSourcesContent(){let e={};if(this.root)this.root.walk((t=>{if(t.source){let n=t.source.input.from;if(n&&!e[n]){e[n]=!0;let o=this.usesFileUrls?this.toFileUrl(n):this.toUrl(this.path(n));this.map.setSourceContent(o,t.source.input.css)}}}));else if(this.css){let e=this.opts.from?this.toUrl(this.path(this.opts.from)):"";this.map.setSourceContent(e,this.css)}}sourcePath(e){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(e.source.input.from):this.toUrl(this.path(e.source.input.from))}toBase64(e){return Buffer?Buffer.from(e).toString("base64"):window.btoa(unescape(encodeURIComponent(e)))}toFileUrl(e){let t=this.memoizedFileURLs.get(e);if(t)return t;if(Ol){let t=Ol(e).toString();return this.memoizedFileURLs.set(e,t),t}throw new Error("`map.absolute` option is not available in this PostCSS build")}toUrl(e){let t=this.memoizedURLs.get(e);if(t)return t;"\\"===Tl&&(e=e.replace(/\\/g,"/"));let n=encodeURI(e).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(e,n),n}};let Pl=Ys,Dl=class extends Pl{constructor(e){super(e),this.type="comment"}};var Nl=Dl;Dl.default=Dl;let jl,Fl,Bl,_l,{isClean:Ul,my:Hl}=Ds,zl=Zs,ql=Nl,Wl=Ys;function Vl(e){return e.map((e=>(e.nodes&&(e.nodes=Vl(e.nodes)),delete e.source,e)))}function Gl(e){if(e[Ul]=!1,e.proxyOf.nodes)for(let t of e.proxyOf.nodes)Gl(t)}let Xl=class e extends Wl{append(...e){for(let t of e){let e=this.normalize(t,this.last);for(let t of e)this.proxyOf.nodes.push(t)}return this.markDirty(),this}cleanRaws(e){if(super.cleanRaws(e),this.nodes)for(let t of this.nodes)t.cleanRaws(e)}each(e){if(!this.proxyOf.nodes)return;let t,n,o=this.getIterator();for(;this.indexes[o]"proxyOf"===t?e:e[t]?"each"===t||"string"==typeof t&&t.startsWith("walk")?(...n)=>e[t](...n.map((e=>"function"==typeof e?(t,n)=>e(t.toProxy(),n):e))):"every"===t||"some"===t?n=>e[t](((e,...t)=>n(e.toProxy(),...t))):"root"===t?()=>e.root().toProxy():"nodes"===t?e.nodes.map((e=>e.toProxy())):"first"===t||"last"===t?e[t].toProxy():e[t]:e[t],set:(e,t,n)=>(e[t]===n||(e[t]=n,"name"!==t&&"params"!==t&&"selector"!==t||e.markDirty()),!0)}}index(e){return"number"==typeof e?e:(e.proxyOf&&(e=e.proxyOf),this.proxyOf.nodes.indexOf(e))}insertAfter(e,t){let n,o=this.index(e),r=this.normalize(t,this.proxyOf.nodes[o]).reverse();o=this.index(e);for(let i of r)this.proxyOf.nodes.splice(o+1,0,i);for(let i in this.indexes)n=this.indexes[i],o(t[Hl]||e.rebuild(t),(t=t.proxyOf).parent&&t.parent.removeChild(t),t[Ul]&&Gl(t),void 0===t.raws.before&&n&&void 0!==n.raws.before&&(t.raws.before=n.raws.before.replace(/\S/g,"")),t.parent=this.proxyOf,t)))}prepend(...e){e=e.reverse();for(let t of e){let e=this.normalize(t,this.first,"prepend").reverse();for(let t of e)this.proxyOf.nodes.unshift(t);for(let t in this.indexes)this.indexes[t]=this.indexes[t]+e.length}return this.markDirty(),this}push(e){return e.parent=this,this.proxyOf.nodes.push(e),this}removeAll(){for(let e of this.proxyOf.nodes)e.parent=void 0;return this.proxyOf.nodes=[],this.markDirty(),this}removeChild(e){let t;e=this.index(e),this.proxyOf.nodes[e].parent=void 0,this.proxyOf.nodes.splice(e,1);for(let n in this.indexes)t=this.indexes[n],t>=e&&(this.indexes[n]=t-1);return this.markDirty(),this}replaceValues(e,t,n){return n||(n=t,t={}),this.walkDecls((o=>{t.props&&!t.props.includes(o.prop)||t.fast&&!o.value.includes(t.fast)||(o.value=o.value.replace(e,n))})),this.markDirty(),this}some(e){return this.nodes.some(e)}walk(e){return this.each(((t,n)=>{let o;try{o=e(t,n)}catch(r){throw t.addToError(r)}return!1!==o&&t.walk&&(o=t.walk(e)),o}))}walkAtRules(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("atrule"===n.type&&e.test(n.name))return t(n,o)})):this.walk(((n,o)=>{if("atrule"===n.type&&n.name===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("atrule"===e.type)return t(e,n)})))}walkComments(e){return this.walk(((t,n)=>{if("comment"===t.type)return e(t,n)}))}walkDecls(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("decl"===n.type&&e.test(n.prop))return t(n,o)})):this.walk(((n,o)=>{if("decl"===n.type&&n.prop===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("decl"===e.type)return t(e,n)})))}walkRules(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("rule"===n.type&&e.test(n.selector))return t(n,o)})):this.walk(((n,o)=>{if("rule"===n.type&&n.selector===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("rule"===e.type)return t(e,n)})))}get first(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}get last(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}};Xl.registerParse=e=>{jl=e},Xl.registerRule=e=>{Fl=e},Xl.registerAtRule=e=>{Bl=e},Xl.registerRoot=e=>{_l=e};var Yl=Xl;Xl.default=Xl,Xl.rebuild=e=>{"atrule"===e.type?Object.setPrototypeOf(e,Bl.prototype):"rule"===e.type?Object.setPrototypeOf(e,Fl.prototype):"decl"===e.type?Object.setPrototypeOf(e,zl.prototype):"comment"===e.type?Object.setPrototypeOf(e,ql.prototype):"root"===e.type&&Object.setPrototypeOf(e,_l.prototype),e[Hl]=!0,e.nodes&&e.nodes.forEach((e=>{Xl.rebuild(e)}))};let Jl,Kl,Zl=Yl,$l=class extends Zl{constructor(e){super({type:"document",...e}),this.nodes||(this.nodes=[])}toResult(e={}){return new Jl(new Kl,this,e).stringify()}};$l.registerLazyResult=e=>{Jl=e},$l.registerProcessor=e=>{Kl=e};var Ql=$l;$l.default=$l;let ec=class{constructor(e,t={}){if(this.type="warning",this.text=e,t.node&&t.node.source){let e=t.node.rangeBy(t);this.line=e.start.line,this.column=e.start.column,this.endLine=e.end.line,this.endColumn=e.end.column}for(let n in t)this[n]=t[n]}toString(){return this.node?this.node.error(this.text,{index:this.index,plugin:this.plugin,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text}};var tc=ec;ec.default=ec;let nc=tc,oc=class{constructor(e,t,n){this.processor=e,this.messages=[],this.root=t,this.opts=n,this.css=void 0,this.map=void 0}toString(){return this.css}warn(e,t={}){t.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(t.plugin=this.lastPlugin.postcssPlugin);let n=new nc(e,t);return this.messages.push(n),n}warnings(){return this.messages.filter((e=>"warning"===e.type))}get content(){return this.css}};var rc=oc;oc.default=oc;const ic="'".charCodeAt(0),ac='"'.charCodeAt(0),sc="\\".charCodeAt(0),lc="/".charCodeAt(0),cc="\n".charCodeAt(0),uc=" ".charCodeAt(0),dc="\f".charCodeAt(0),pc="\t".charCodeAt(0),hc="\r".charCodeAt(0),fc="[".charCodeAt(0),mc="]".charCodeAt(0),gc="(".charCodeAt(0),vc=")".charCodeAt(0),yc="{".charCodeAt(0),bc="}".charCodeAt(0),wc=";".charCodeAt(0),kc="*".charCodeAt(0),xc=":".charCodeAt(0),Sc="@".charCodeAt(0),Cc=/[\t\n\f\r "#'()/;[\\\]{}]/g,Ic=/[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g,Ec=/.[\r\n"'(/\\]/,Tc=/[\da-f]/i;let Oc=Yl,Lc=class extends Oc{constructor(e){super(e),this.type="atrule"}append(...e){return this.proxyOf.nodes||(this.nodes=[]),super.append(...e)}prepend(...e){return this.proxyOf.nodes||(this.nodes=[]),super.prepend(...e)}};var Ac=Lc;Lc.default=Lc,Oc.registerAtRule(Lc);let Mc,Rc,Pc=Yl,Dc=class extends Pc{constructor(e){super(e),this.type="root",this.nodes||(this.nodes=[])}normalize(e,t,n){let o=super.normalize(e);if(t)if("prepend"===n)this.nodes.length>1?t.raws.before=this.nodes[1].raws.before:delete t.raws.before;else if(this.first!==t)for(let r of o)r.raws.before=t.raws.before;return o}removeChild(e,t){let n=this.index(e);return!t&&0===n&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[n].raws.before),super.removeChild(e)}toResult(e={}){return new Mc(new Rc,this,e).stringify()}};Dc.registerLazyResult=e=>{Mc=e},Dc.registerProcessor=e=>{Rc=e};var Nc=Dc;Dc.default=Dc,Pc.registerRoot(Dc);let jc={comma:e=>jc.split(e,[","],!0),space:e=>jc.split(e,[" ","\n","\t"]),split(e,t,n){let o=[],r="",i=!1,a=0,s=!1,l="",c=!1;for(let u of e)c?c=!1:"\\"===u?c=!0:s?u===l&&(s=!1):'"'===u||"'"===u?(s=!0,l=u):"("===u?a+=1:")"===u?a>0&&(a-=1):0===a&&t.includes(u)&&(i=!0),i?(""!==r&&o.push(r.trim()),r="",i=!1):r+=u;return(n||""!==r)&&o.push(r.trim()),o}};var Fc=jc;jc.default=jc;let Bc=Yl,_c=Fc,Uc=class extends Bc{constructor(e){super(e),this.type="rule",this.nodes||(this.nodes=[])}get selectors(){return _c.comma(this.selector)}set selectors(e){let t=this.selector?this.selector.match(/,\s*/):null,n=t?t[0]:","+this.raw("between","beforeOpen");this.selector=e.join(n)}};var Hc=Uc;Uc.default=Uc,Bc.registerRule(Uc);let zc=Zs,qc=function(e,t={}){let n,o,r,i,a,s,l,c,u,d,p=e.css.valueOf(),h=t.ignoreErrors,f=p.length,m=0,g=[],v=[];function y(t){throw e.error("Unclosed "+t,m)}return{back:function(e){v.push(e)},endOfFile:function(){return 0===v.length&&m>=f},nextToken:function(e){if(v.length)return v.pop();if(m>=f)return;let t=!!e&&e.ignoreUnclosed;switch(n=p.charCodeAt(m),n){case cc:case uc:case pc:case hc:case dc:o=m;do{o+=1,n=p.charCodeAt(o)}while(n===uc||n===cc||n===pc||n===hc||n===dc);d=["space",p.slice(m,o)],m=o-1;break;case fc:case mc:case yc:case bc:case xc:case wc:case vc:{let e=String.fromCharCode(n);d=[e,e,m];break}case gc:if(c=g.length?g.pop()[1]:"",u=p.charCodeAt(m+1),"url"===c&&u!==ic&&u!==ac&&u!==uc&&u!==cc&&u!==pc&&u!==dc&&u!==hc){o=m;do{if(s=!1,o=p.indexOf(")",o+1),-1===o){if(h||t){o=m;break}y("bracket")}for(l=o;p.charCodeAt(l-1)===sc;)l-=1,s=!s}while(s);d=["brackets",p.slice(m,o+1),m,o],m=o}else o=p.indexOf(")",m+1),i=p.slice(m,o+1),-1===o||Ec.test(i)?d=["(","(",m]:(d=["brackets",i,m,o],m=o);break;case ic:case ac:r=n===ic?"'":'"',o=m;do{if(s=!1,o=p.indexOf(r,o+1),-1===o){if(h||t){o=m+1;break}y("string")}for(l=o;p.charCodeAt(l-1)===sc;)l-=1,s=!s}while(s);d=["string",p.slice(m,o+1),m,o],m=o;break;case Sc:Cc.lastIndex=m+1,Cc.test(p),o=0===Cc.lastIndex?p.length-1:Cc.lastIndex-2,d=["at-word",p.slice(m,o+1),m,o],m=o;break;case sc:for(o=m,a=!0;p.charCodeAt(o+1)===sc;)o+=1,a=!a;if(n=p.charCodeAt(o+1),a&&n!==lc&&n!==uc&&n!==cc&&n!==pc&&n!==hc&&n!==dc&&(o+=1,Tc.test(p.charAt(o)))){for(;Tc.test(p.charAt(o+1));)o+=1;p.charCodeAt(o+1)===uc&&(o+=1)}d=["word",p.slice(m,o+1),m,o],m=o;break;default:n===lc&&p.charCodeAt(m+1)===kc?(o=p.indexOf("*/",m+2)+1,0===o&&(h||t?o=p.length:y("comment")),d=["comment",p.slice(m,o+1),m,o],m=o):(Ic.lastIndex=m+1,Ic.test(p),o=0===Ic.lastIndex?p.length-1:Ic.lastIndex-2,d=["word",p.slice(m,o+1),m,o],g.push(d),m=o)}return m++,d},position:function(){return m}}},Wc=Nl,Vc=Ac,Gc=Nc,Xc=Hc;const Yc={empty:!0,space:!0};var Jc=class{constructor(e){this.input=e,this.root=new Gc,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:e,start:{column:1,line:1,offset:0}}}atrule(e){let t,n,o,r=new Vc;r.name=e[1].slice(1),""===r.name&&this.unnamedAtrule(r,e),this.init(r,e[2]);let i=!1,a=!1,s=[],l=[];for(;!this.tokenizer.endOfFile();){if(t=(e=this.tokenizer.nextToken())[0],"("===t||"["===t?l.push("("===t?")":"]"):"{"===t&&l.length>0?l.push("}"):t===l[l.length-1]&&l.pop(),0===l.length){if(";"===t){r.source.end=this.getPosition(e[2]),r.source.end.offset++,this.semicolon=!0;break}if("{"===t){a=!0;break}if("}"===t){if(s.length>0){for(o=s.length-1,n=s[o];n&&"space"===n[0];)n=s[--o];n&&(r.source.end=this.getPosition(n[3]||n[2]),r.source.end.offset++)}this.end(e);break}s.push(e)}else s.push(e);if(this.tokenizer.endOfFile()){i=!0;break}}r.raws.between=this.spacesAndCommentsFromEnd(s),s.length?(r.raws.afterName=this.spacesAndCommentsFromStart(s),this.raw(r,"params",s),i&&(e=s[s.length-1],r.source.end=this.getPosition(e[3]||e[2]),r.source.end.offset++,this.spaces=r.raws.between,r.raws.between="")):(r.raws.afterName="",r.params=""),a&&(r.nodes=[],this.current=r)}checkMissedSemicolon(e){let t=this.colon(e);if(!1===t)return;let n,o=0;for(let r=t-1;r>=0&&(n=e[r],"space"===n[0]||(o+=1,2!==o));r--);throw this.input.error("Missed semicolon","word"===n[0]?n[3]+1:n[2])}colon(e){let t,n,o,r=0;for(let[i,a]of e.entries()){if(t=a,n=t[0],"("===n&&(r+=1),")"===n&&(r-=1),0===r&&":"===n){if(o){if("word"===o[0]&&"progid"===o[1])continue;return i}this.doubleColon(t)}o=t}return!1}comment(e){let t=new Wc;this.init(t,e[2]),t.source.end=this.getPosition(e[3]||e[2]),t.source.end.offset++;let n=e[1].slice(2,-2);if(/^\s*$/.test(n))t.text="",t.raws.left=n,t.raws.right="";else{let e=n.match(/^(\s*)([^]*\S)(\s*)$/);t.text=e[2],t.raws.left=e[1],t.raws.right=e[3]}}createTokenizer(){this.tokenizer=qc(this.input)}decl(e,t){let n=new zc;this.init(n,e[0][2]);let o,r=e[e.length-1];for(";"===r[0]&&(this.semicolon=!0,e.pop()),n.source.end=this.getPosition(r[3]||r[2]||function(e){for(let t=e.length-1;t>=0;t--){let n=e[t],o=n[3]||n[2];if(o)return o}}(e)),n.source.end.offset++;"word"!==e[0][0];)1===e.length&&this.unknownWord(e),n.raws.before+=e.shift()[1];for(n.source.start=this.getPosition(e[0][2]),n.prop="";e.length;){let t=e[0][0];if(":"===t||"space"===t||"comment"===t)break;n.prop+=e.shift()[1]}for(n.raws.between="";e.length;){if(o=e.shift(),":"===o[0]){n.raws.between+=o[1];break}"word"===o[0]&&/\w/.test(o[1])&&this.unknownWord([o]),n.raws.between+=o[1]}"_"!==n.prop[0]&&"*"!==n.prop[0]||(n.raws.before+=n.prop[0],n.prop=n.prop.slice(1));let i,a=[];for(;e.length&&(i=e[0][0],"space"===i||"comment"===i);)a.push(e.shift());this.precheckMissedSemicolon(e);for(let s=e.length-1;s>=0;s--){if(o=e[s],"!important"===o[1].toLowerCase()){n.important=!0;let t=this.stringFrom(e,s);t=this.spacesFromEnd(e)+t," !important"!==t&&(n.raws.important=t);break}if("important"===o[1].toLowerCase()){let t=e.slice(0),o="";for(let e=s;e>0;e--){let n=t[e][0];if(0===o.trim().indexOf("!")&&"space"!==n)break;o=t.pop()[1]+o}0===o.trim().indexOf("!")&&(n.important=!0,n.raws.important=o,e=t)}if("space"!==o[0]&&"comment"!==o[0])break}e.some((e=>"space"!==e[0]&&"comment"!==e[0]))&&(n.raws.between+=a.map((e=>e[1])).join(""),a=[]),this.raw(n,"value",a.concat(e),t),n.value.includes(":")&&!t&&this.checkMissedSemicolon(e)}doubleColon(e){throw this.input.error("Double colon",{offset:e[2]},{offset:e[2]+e[1].length})}emptyRule(e){let t=new Xc;this.init(t,e[2]),t.selector="",t.raws.between="",this.current=t}end(e){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(e[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(e)}endFile(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position())}freeSemicolon(e){if(this.spaces+=e[1],this.current.nodes){let e=this.current.nodes[this.current.nodes.length-1];e&&"rule"===e.type&&!e.raws.ownSemicolon&&(e.raws.ownSemicolon=this.spaces,this.spaces="")}}getPosition(e){let t=this.input.fromOffset(e);return{column:t.col,line:t.line,offset:e}}init(e,t){this.current.push(e),e.source={input:this.input,start:this.getPosition(t)},e.raws.before=this.spaces,this.spaces="","comment"!==e.type&&(this.semicolon=!1)}other(e){let t=!1,n=null,o=!1,r=null,i=[],a=e[1].startsWith("--"),s=[],l=e;for(;l;){if(n=l[0],s.push(l),"("===n||"["===n)r||(r=l),i.push("("===n?")":"]");else if(a&&o&&"{"===n)r||(r=l),i.push("}");else if(0===i.length){if(";"===n){if(o)return void this.decl(s,a);break}if("{"===n)return void this.rule(s);if("}"===n){this.tokenizer.back(s.pop()),t=!0;break}":"===n&&(o=!0)}else n===i[i.length-1]&&(i.pop(),0===i.length&&(r=null));l=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(t=!0),i.length>0&&this.unclosedBracket(r),t&&o){if(!a)for(;s.length&&(l=s[s.length-1][0],"space"===l||"comment"===l);)this.tokenizer.back(s.pop());this.decl(s,a)}else this.unknownWord(s)}parse(){let e;for(;!this.tokenizer.endOfFile();)switch(e=this.tokenizer.nextToken(),e[0]){case"space":this.spaces+=e[1];break;case";":this.freeSemicolon(e);break;case"}":this.end(e);break;case"comment":this.comment(e);break;case"at-word":this.atrule(e);break;case"{":this.emptyRule(e);break;default:this.other(e)}this.endFile()}precheckMissedSemicolon(){}raw(e,t,n,o){let r,i,a,s,l=n.length,c="",u=!0;for(let d=0;de+t[1]),"");e.raws[t]={raw:o,value:c}}e[t]=c}rule(e){e.pop();let t=new Xc;this.init(t,e[0][2]),t.raws.between=this.spacesAndCommentsFromEnd(e),this.raw(t,"selector",e),this.current=t}spacesAndCommentsFromEnd(e){let t,n="";for(;e.length&&(t=e[e.length-1][0],"space"===t||"comment"===t);)n=e.pop()[1]+n;return n}spacesAndCommentsFromStart(e){let t,n="";for(;e.length&&(t=e[0][0],"space"===t||"comment"===t);)n+=e.shift()[1];return n}spacesFromEnd(e){let t,n="";for(;e.length&&(t=e[e.length-1][0],"space"===t);)n=e.pop()[1]+n;return n}stringFrom(e,t){let n="";for(let o=t;ovu(e))),e}let yu={},bu=class e{constructor(t,n,o){let r;if(this.stringified=!1,this.processed=!1,"object"!=typeof n||null===n||"root"!==n.type&&"document"!==n.type)if(n instanceof e||n instanceof su)r=vu(n.root),n.map&&(void 0===o.map&&(o.map={}),o.map.inline||(o.map.inline=!1),o.map.prev=n.map);else{let e=lu;o.syntax&&(e=o.syntax.parse),o.parser&&(e=o.parser),e.parse&&(e=e.parse);try{r=e(n,o)}catch(i){this.processed=!0,this.error=i}r&&!r[nu]&&iu.rebuild(r)}else r=vu(n);this.result=new su(t,r,o),this.helpers={...yu,postcss:yu,result:this.result},this.plugins=this.processor.plugins.map((e=>"object"==typeof e&&e.prepare?{...e,...e.prepare(this.result)}:e))}async(){return this.error?Promise.reject(this.error):this.processed?Promise.resolve(this.result):(this.processing||(this.processing=this.runAsync()),this.processing)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}getAsyncError(){throw new Error("Use process(css).then(cb) to work with async plugins")}handleError(e,t){let n=this.result.lastPlugin;try{t&&t.addToError(e),this.error=e,"CssSyntaxError"!==e.name||e.plugin?n.postcssVersion:(e.plugin=n.postcssPlugin,e.setMessage())}catch(o){console&&console.error&&console.error(o)}return e}prepareVisitors(){this.listeners={};let e=(e,t,n)=>{this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].push([e,n])};for(let t of this.plugins)if("object"==typeof t)for(let n in t){if(!du[n]&&/^[A-Z]/.test(n))throw new Error(`Unknown event ${n} in ${t.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`);if(!pu[n])if("object"==typeof t[n])for(let o in t[n])e(t,"*"===o?n:n+"-"+o.toLowerCase(),t[n][o]);else"function"==typeof t[n]&&e(t,n,t[n])}this.hasListener=Object.keys(this.listeners).length>0}async runAsync(){this.plugin=0;for(let n=0;n0;){let e=this.visitTick(n);if(fu(e))try{await e}catch(t){let e=n[n.length-1].node;throw this.handleError(t,e)}}}if(this.listeners.OnceExit)for(let[n,o]of this.listeners.OnceExit){this.result.lastPlugin=n;try{if("document"===e.type){let t=e.nodes.map((e=>o(e,this.helpers)));await Promise.all(t)}else await o(e,this.helpers)}catch(t){throw this.handleError(t)}}}return this.processed=!0,this.stringify()}runOnRoot(e){this.result.lastPlugin=e;try{if("object"==typeof e&&e.Once){if("document"===this.result.root.type){let t=this.result.root.nodes.map((t=>e.Once(t,this.helpers)));return fu(t[0])?Promise.all(t):t}return e.Once(this.result.root,this.helpers)}if("function"==typeof e)return e(this.result.root,this.result)}catch(t){throw this.handleError(t)}}stringify(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();let e=this.result.opts,t=ru;e.syntax&&(t=e.syntax.stringify),e.stringifier&&(t=e.stringifier),t.stringify&&(t=t.stringify);let n=new ou(t,this.result.root,this.result.opts).generate();return this.result.css=n[0],this.result.map=n[1],this.result}sync(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(let e of this.plugins){if(fu(this.runOnRoot(e)))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){let e=this.result.root;for(;!e[tu];)e[tu]=!0,this.walkSync(e);if(this.listeners.OnceExit)if("document"===e.type)for(let t of e.nodes)this.visitSync(this.listeners.OnceExit,t);else this.visitSync(this.listeners.OnceExit,e)}return this.result}then(e,t){return this.async().then(e,t)}toString(){return this.css}visitSync(e,t){for(let[o,r]of e){let e;this.result.lastPlugin=o;try{e=r(t,this.helpers)}catch(n){throw this.handleError(n,t.proxyOf)}if("root"!==t.type&&"document"!==t.type&&!t.parent)return!0;if(fu(e))throw this.getAsyncError()}}visitTick(e){let t=e[e.length-1],{node:n,visitors:o}=t;if("root"!==n.type&&"document"!==n.type&&!n.parent)return void e.pop();if(o.length>0&&t.visitorIndex{e[tu]||this.walkSync(e)}));else{let t=this.listeners[n];if(t&&this.visitSync(t,e.toProxy()))return}}warnings(){return this.sync().warnings()}get content(){return this.stringify().content}get css(){return this.stringify().css}get map(){return this.stringify().map}get messages(){return this.sync().messages}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){return this.sync().root}get[Symbol.toStringTag](){return"LazyResult"}};bu.registerPostcss=e=>{yu=e};var wu=bu;bu.default=bu,cu.registerLazyResult(bu),au.registerLazyResult(bu);let ku=Rl,xu=Us,Su=eu;const Cu=rc;let Iu=class{constructor(e,t,n){let o;t=t.toString(),this.stringified=!1,this._processor=e,this._css=t,this._opts=n,this._map=void 0;let r=xu;this.result=new Cu(this._processor,o,this._opts),this.result.css=t;let i=this;Object.defineProperty(this.result,"root",{get:()=>i.root});let a=new ku(r,o,this._opts,t);if(a.isMap()){let[e,t]=a.generate();e&&(this.result.css=e),t&&(this.result.map=t)}else a.clearAnnotation(),this.result.css=a.css}async(){return this.error?Promise.reject(this.error):Promise.resolve(this.result)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}sync(){if(this.error)throw this.error;return this.result}then(e,t){return this.async().then(e,t)}toString(){return this._css}warnings(){return[]}get content(){return this.result.css}get css(){return this.result.css}get map(){return this.result.map}get messages(){return[]}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){if(this._root)return this._root;let e,t=Su;try{e=t(this._css,this._opts)}catch(n){this.error=n}if(this.error)throw this.error;return this._root=e,e}get[Symbol.toStringTag](){return"NoWorkResult"}};var Eu=Iu;Iu.default=Iu;let Tu=Eu,Ou=wu,Lu=Ql,Au=Nc,Mu=class{constructor(e=[]){this.version="8.4.38",this.plugins=this.normalize(e)}normalize(e){let t=[];for(let n of e)if(!0===n.postcss?n=n():n.postcss&&(n=n.postcss),"object"==typeof n&&Array.isArray(n.plugins))t=t.concat(n.plugins);else if("object"==typeof n&&n.postcssPlugin)t.push(n);else if("function"==typeof n)t.push(n);else{if("object"!=typeof n||!n.parse&&!n.stringify)throw new Error(n+" is not a PostCSS plugin")}return t}process(e,t={}){return this.plugins.length||t.parser||t.stringifier||t.syntax?new Ou(this,e,t):new Tu(this,e,t)}use(e){return this.plugins=this.plugins.concat(this.normalize([e])),this}};var Ru=Mu;Mu.default=Mu,Au.registerProcessor(Mu),Lu.registerProcessor(Mu);let Pu=Zs,Du=al,Nu=Nl,ju=Ac,Fu=kl,Bu=Nc,_u=Hc;function Uu(e,t){if(Array.isArray(e))return e.map((e=>Uu(e)));let{inputs:n,...o}=e;if(n){t=[];for(let e of n){let n={...e,__proto__:Fu.prototype};n.map&&(n.map={...n.map,__proto__:Du.prototype}),t.push(n)}}if(o.nodes&&(o.nodes=e.nodes.map((e=>Uu(e,t)))),o.source){let{inputId:e,...n}=o.source;o.source=n,null!=e&&(o.source.input=t[e])}if("root"===o.type)return new Bu(o);if("decl"===o.type)return new Pu(o);if("rule"===o.type)return new _u(o);if("comment"===o.type)return new Nu(o);if("atrule"===o.type)return new ju(o);throw new Error("Unknown node type: "+e.type)}var Hu=Uu;Uu.default=Uu;let zu=Ps,qu=Zs,Wu=wu,Vu=Yl,Gu=Ru,Xu=Us,Yu=Hu,Ju=Ql,Ku=tc,Zu=Nl,$u=Ac,Qu=rc,ed=kl,td=eu,nd=Fc,od=Hc,rd=Nc,id=Ys;function ad(...e){return 1===e.length&&Array.isArray(e[0])&&(e=e[0]),new Gu(e)}ad.plugin=function(e,t){let n,o=!1;function r(...n){console&&console.warn&&!o&&(o=!0,console.warn(e+": postcss.plugin was deprecated. Migration guide:\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration"),process.env.LANG&&process.env.LANG.startsWith("cn")&&console.warn(e+": 里面 postcss.plugin 被弃用. 迁移指南:\nhttps://www.w3ctech.com/topic/2226"));let r=t(...n);return r.postcssPlugin=e,r.postcssVersion=(new Gu).version,r}return Object.defineProperty(r,"postcss",{get:()=>(n||(n=r()),n)}),r.process=function(e,t,n){return ad([r(n)]).process(e,t)},r},ad.stringify=Xu,ad.parse=td,ad.fromJSON=Yu,ad.list=nd,ad.comment=e=>new Zu(e),ad.atRule=e=>new $u(e),ad.decl=e=>new qu(e),ad.rule=e=>new od(e),ad.root=e=>new rd(e),ad.document=e=>new Ju(e),ad.CssSyntaxError=zu,ad.Declaration=qu,ad.Container=Vu,ad.Processor=Gu,ad.Document=Ju,ad.Comment=Zu,ad.Warning=Ku,ad.AtRule=$u,ad.Result=Qu,ad.Input=ed,ad.Rule=od,ad.Root=rd,ad.Node=id,Wu.registerPostcss(ad);var sd=ad;ad.default=ad;const ld=Ss(sd);ld.stringify,ld.fromJSON,ld.plugin,ld.parse,ld.list,ld.document,ld.comment,ld.atRule,ld.rule,ld.decl,ld.root,ld.CssSyntaxError,ld.Declaration,ld.Container,ld.Processor,ld.Document,ld.Comment,ld.Warning,ld.AtRule,ld.Result,ld.Input,ld.Rule,ld.Root,ld.Node;class cd{constructor(...e){xs(this,"parentElement",null),xs(this,"parentNode",null),xs(this,"ownerDocument"),xs(this,"firstChild",null),xs(this,"lastChild",null),xs(this,"previousSibling",null),xs(this,"nextSibling",null),xs(this,"ELEMENT_NODE",1),xs(this,"TEXT_NODE",3),xs(this,"nodeType"),xs(this,"nodeName"),xs(this,"RRNodeType")}get childNodes(){const e=[];let t=this.firstChild;for(;t;)e.push(t),t=t.nextSibling;return e}contains(e){if(!(e instanceof cd))return!1;if(e.ownerDocument!==this.ownerDocument)return!1;if(e===this)return!0;for(;e.parentNode;){if(e.parentNode===this)return!0;e=e.parentNode}return!1}appendChild(e){throw new Error("RRDomException: Failed to execute 'appendChild' on 'RRNode': This RRNode type does not support this method.")}insertBefore(e,t){throw new Error("RRDomException: Failed to execute 'insertBefore' on 'RRNode': This RRNode type does not support this method.")}removeChild(e){throw new Error("RRDomException: Failed to execute 'removeChild' on 'RRNode': This RRNode type does not support this method.")}toString(){return"RRNode"}}const ud={Node:["childNodes","parentNode","parentElement","textContent"],ShadowRoot:["host","styleSheets"],Element:["shadowRoot","querySelector","querySelectorAll"],MutationObserver:[]},dd={Node:["contains","getRootNode"],ShadowRoot:["getSelection"],Element:[],MutationObserver:["constructor"]},pd={},hd=()=>!!globalThis.Zone;function fd(e){if(pd[e])return pd[e];const t=globalThis[e],n=t.prototype,o=e in ud?ud[e]:void 0,r=Boolean(o&&o.every((e=>{var t,o;return Boolean(null==(o=null==(t=Object.getOwnPropertyDescriptor(n,e))?void 0:t.get)?void 0:o.toString().includes("[native code]"))}))),i=e in dd?dd[e]:void 0,a=Boolean(i&&i.every((e=>{var t;return"function"==typeof n[e]&&(null==(t=n[e])?void 0:t.toString().includes("[native code]"))})));if(r&&a&&!hd())return pd[e]=t.prototype,t.prototype;try{const o=document.createElement("iframe");document.body.appendChild(o);const r=o.contentWindow;if(!r)return t.prototype;const i=r[e].prototype;return document.body.removeChild(o),i?pd[e]=i:n}catch{return n}}const md={};function gd(e,t,n){var o;const r=`${e}.${String(n)}`;if(md[r])return md[r].call(t);const i=fd(e),a=null==(o=Object.getOwnPropertyDescriptor(i,n))?void 0:o.get;return a?(md[r]=a,a.call(t)):t[n]}const vd={};function yd(e,t,n){const o=`${e}.${String(n)}`;if(vd[o])return vd[o].bind(t);const r=fd(e)[n];return"function"!=typeof r?t[n]:(vd[o]=r,r.bind(t))}function bd(){return fd("MutationObserver").constructor}const wd={childNodes:function(e){return gd("Node",e,"childNodes")},parentNode:function(e){return gd("Node",e,"parentNode")},parentElement:function(e){return gd("Node",e,"parentElement")},textContent:function(e){return gd("Node",e,"textContent")},contains:function(e,t){return yd("Node",e,"contains")(t)},getRootNode:function(e){return yd("Node",e,"getRootNode")()},host:function(e){return e&&"host"in e?gd("ShadowRoot",e,"host"):null},styleSheets:function(e){return e.styleSheets},shadowRoot:function(e){return e&&"shadowRoot"in e?gd("Element",e,"shadowRoot"):null},querySelector:function(e,t){return gd("Element",e,"querySelector")(t)},querySelectorAll:function(e,t){return gd("Element",e,"querySelectorAll")(t)},mutationObserver:bd};function kd(e,t,n=document){const o={capture:!0,passive:!0};return n.addEventListener(e,t,o),()=>n.removeEventListener(e,t,o)}const xd="Please stop import mirror directly. Instead of that,\r\nnow you can use replayer.getMirror() to access the mirror instance of a replayer,\r\nor you can use record.mirror to access the mirror instance during recording.";let Sd={map:{},getId:()=>(console.error(xd),-1),getNode:()=>(console.error(xd),null),removeNodeFromMap(){console.error(xd)},has:()=>(console.error(xd),!1),reset(){console.error(xd)}};function Cd(e,t,n={}){let o=null,r=0;return function(...i){const a=Date.now();r||!1!==n.leading||(r=a);const s=t-(a-r),l=this;s<=0||s>t?(o&&(clearTimeout(o),o=null),r=a,e.apply(l,i)):o||!1===n.trailing||(o=setTimeout((()=>{r=!1===n.leading?0:Date.now(),o=null,e.apply(l,i)}),s))}}function Id(e,t,n,o,r=window){const i=r.Object.getOwnPropertyDescriptor(e,t);return r.Object.defineProperty(e,t,o?n:{set(e){setTimeout((()=>{n.set.call(this,e)}),0),i&&i.set&&i.set.call(this,e)}}),()=>Id(e,t,i||{},!0)}function Ed(e,t,n){try{if(!(t in e))return()=>{};const o=e[t],r=n(o);return"function"==typeof r&&(r.prototype=r.prototype||{},Object.defineProperties(r,{__rrweb_original__:{enumerable:!1,value:o}})),e[t]=r,()=>{e[t]=o}}catch{return()=>{}}}"undefined"!=typeof window&&window.Proxy&&window.Reflect&&(Sd=new Proxy(Sd,{get:(e,t,n)=>("map"===t&&console.error(xd),Reflect.get(e,t,n))}));let Td=Date.now;function Od(e){var t,n,o,r;const i=e.document;return{left:i.scrollingElement?i.scrollingElement.scrollLeft:void 0!==e.pageXOffset?e.pageXOffset:i.documentElement.scrollLeft||(null==i?void 0:i.body)&&(null==(t=wd.parentElement(i.body))?void 0:t.scrollLeft)||(null==(n=null==i?void 0:i.body)?void 0:n.scrollLeft)||0,top:i.scrollingElement?i.scrollingElement.scrollTop:void 0!==e.pageYOffset?e.pageYOffset:(null==i?void 0:i.documentElement.scrollTop)||(null==i?void 0:i.body)&&(null==(o=wd.parentElement(i.body))?void 0:o.scrollTop)||(null==(r=null==i?void 0:i.body)?void 0:r.scrollTop)||0}}function Ld(){return window.innerHeight||document.documentElement&&document.documentElement.clientHeight||document.body&&document.body.clientHeight}function Ad(){return window.innerWidth||document.documentElement&&document.documentElement.clientWidth||document.body&&document.body.clientWidth}function Md(e){if(!e)return null;return e.nodeType===e.ELEMENT_NODE?e:wd.parentElement(e)}function Rd(e,t,n,o){if(!e)return!1;const r=Md(e);if(!r)return!1;try{if("string"==typeof t){if(r.classList.contains(t))return!0;if(o&&null!==r.closest("."+t))return!0}else if(Ao(r,t,o))return!0}catch(i){}if(n){if(r.matches(n))return!0;if(o&&null!==r.closest(n))return!0}return!1}function Pd(e,t,n){return!("TITLE"!==e.tagName||!n.headTitleMutations)||t.getId(e)===yo}function Dd(e,t){if($n(e))return!1;const n=t.getId(e);if(!t.has(n))return!0;const o=wd.parentNode(e);return(!o||o.nodeType!==e.DOCUMENT_NODE)&&(!o||Dd(o,t))}function Nd(e){return Boolean(e.changedTouches)}function jd(e,t){return Boolean("IFRAME"===e.nodeName&&t.getMeta(e))}function Fd(e,t){return Boolean("LINK"===e.nodeName&&e.nodeType===e.ELEMENT_NODE&&e.getAttribute&&"stylesheet"===e.getAttribute("rel")&&t.getMeta(e))}function Bd(e){return!!e&&(e instanceof cd&&"shadowRoot"in e?Boolean(e.shadowRoot):Boolean(wd.shadowRoot(e)))}/[1-9][0-9]{12}/.test(Date.now().toString())||(Td=()=>(new Date).getTime());class _d{constructor(){Fn(this,"id",1),Fn(this,"styleIDMap",new WeakMap),Fn(this,"idStyleMap",new Map)}getId(e){return this.styleIDMap.get(e)??-1}has(e){return this.styleIDMap.has(e)}add(e,t){if(this.has(e))return this.getId(e);let n;return n=void 0===t?this.id++:t,this.styleIDMap.set(e,n),this.idStyleMap.set(n,e),n}getStyle(e){return this.idStyleMap.get(e)||null}reset(){this.styleIDMap=new WeakMap,this.idStyleMap=new Map,this.id=1}generateId(){return this.id++}}function Ud(e){var t;let n=null;return"getRootNode"in e&&(null==(t=wd.getRootNode(e))?void 0:t.nodeType)===Node.DOCUMENT_FRAGMENT_NODE&&wd.host(wd.getRootNode(e))&&(n=wd.host(wd.getRootNode(e))),n}function Hd(e){const t=e.ownerDocument;if(!t)return!1;const n=function(e){let t,n=e;for(;t=Ud(n);)n=t;return n}(e);return wd.contains(t,n)}function zd(e){const t=e.ownerDocument;return!!t&&(wd.contains(t,e)||Hd(e))}var qd=(e=>(e[e.DomContentLoaded=0]="DomContentLoaded",e[e.Load=1]="Load",e[e.FullSnapshot=2]="FullSnapshot",e[e.IncrementalSnapshot=3]="IncrementalSnapshot",e[e.Meta=4]="Meta",e[e.Custom=5]="Custom",e[e.Plugin=6]="Plugin",e))(qd||{}),Wd=(e=>(e[e.Mutation=0]="Mutation",e[e.MouseMove=1]="MouseMove",e[e.MouseInteraction=2]="MouseInteraction",e[e.Scroll=3]="Scroll",e[e.ViewportResize=4]="ViewportResize",e[e.Input=5]="Input",e[e.TouchMove=6]="TouchMove",e[e.MediaInteraction=7]="MediaInteraction",e[e.StyleSheetRule=8]="StyleSheetRule",e[e.CanvasMutation=9]="CanvasMutation",e[e.Font=10]="Font",e[e.Log=11]="Log",e[e.Drag=12]="Drag",e[e.StyleDeclaration=13]="StyleDeclaration",e[e.Selection=14]="Selection",e[e.AdoptedStyleSheet=15]="AdoptedStyleSheet",e[e.CustomElement=16]="CustomElement",e))(Wd||{}),Vd=(e=>(e[e.MouseUp=0]="MouseUp",e[e.MouseDown=1]="MouseDown",e[e.Click=2]="Click",e[e.ContextMenu=3]="ContextMenu",e[e.DblClick=4]="DblClick",e[e.Focus=5]="Focus",e[e.Blur=6]="Blur",e[e.TouchStart=7]="TouchStart",e[e.TouchMove_Departed=8]="TouchMove_Departed",e[e.TouchEnd=9]="TouchEnd",e[e.TouchCancel=10]="TouchCancel",e))(Vd||{}),Gd=(e=>(e[e.Mouse=0]="Mouse",e[e.Pen=1]="Pen",e[e.Touch=2]="Touch",e))(Gd||{}),Xd=(e=>(e[e["2D"]=0]="2D",e[e.WebGL=1]="WebGL",e[e.WebGL2=2]="WebGL2",e))(Xd||{}),Yd=(e=>(e[e.Play=0]="Play",e[e.Pause=1]="Pause",e[e.Seeked=2]="Seeked",e[e.VolumeChange=3]="VolumeChange",e[e.RateChange=4]="RateChange",e))(Yd||{}),Jd=(e=>(e[e.Document=0]="Document",e[e.DocumentType=1]="DocumentType",e[e.Element=2]="Element",e[e.Text=3]="Text",e[e.CDATA=4]="CDATA",e[e.Comment=5]="Comment",e))(Jd||{});function Kd(e){return"__ln"in e}class Zd{constructor(){Fn(this,"length",0),Fn(this,"head",null),Fn(this,"tail",null)}get(e){if(e>=this.length)throw new Error("Position outside of list range");let t=this.head;for(let n=0;n`${e}@${t}`;class Qd{constructor(){Fn(this,"frozen",!1),Fn(this,"locked",!1),Fn(this,"texts",[]),Fn(this,"attributes",[]),Fn(this,"attributeMap",new WeakMap),Fn(this,"removes",[]),Fn(this,"mapRemoves",[]),Fn(this,"movedMap",{}),Fn(this,"addedSet",new Set),Fn(this,"movedSet",new Set),Fn(this,"droppedSet",new Set),Fn(this,"removesSubTreeCache",new Set),Fn(this,"mutationCb"),Fn(this,"blockClass"),Fn(this,"blockSelector"),Fn(this,"maskTextClass"),Fn(this,"maskTextSelector"),Fn(this,"inlineStylesheet"),Fn(this,"maskInputOptions"),Fn(this,"maskTextFn"),Fn(this,"maskInputFn"),Fn(this,"keepIframeSrcFn"),Fn(this,"recordCanvas"),Fn(this,"inlineImages"),Fn(this,"slimDOMOptions"),Fn(this,"dataURLOptions"),Fn(this,"doc"),Fn(this,"mirror"),Fn(this,"iframeManager"),Fn(this,"stylesheetManager"),Fn(this,"shadowDomManager"),Fn(this,"canvasManager"),Fn(this,"processedNodeManager"),Fn(this,"unattachedDoc"),Fn(this,"processMutations",(e=>{e.forEach(this.processMutation),this.emit()})),Fn(this,"emit",(()=>{if(this.frozen||this.locked)return;const e=[],t=new Set,n=new Zd,o=e=>{let t=e,n=yo;for(;n===yo;)t=t&&t.nextSibling,n=t&&this.mirror.getId(t);return n},r=r=>{const i=wd.parentNode(r);if(!i||!zd(r))return;let a=!1;if(r.nodeType===Node.TEXT_NODE){const e=i.tagName;if("TEXTAREA"===e)return;"STYLE"===e&&this.addedSet.has(i)&&(a=!0)}const s=$n(i)?this.mirror.getId(Ud(r)):this.mirror.getId(i),l=o(r);if(-1===s||-1===l)return n.addNode(r);const c=Do(r,{doc:this.doc,mirror:this.mirror,blockClass:this.blockClass,blockSelector:this.blockSelector,maskTextClass:this.maskTextClass,maskTextSelector:this.maskTextSelector,skipChild:!0,newlyAddedElement:!0,inlineStylesheet:this.inlineStylesheet,maskInputOptions:this.maskInputOptions,maskTextFn:this.maskTextFn,maskInputFn:this.maskInputFn,slimDOMOptions:this.slimDOMOptions,dataURLOptions:this.dataURLOptions,recordCanvas:this.recordCanvas,inlineImages:this.inlineImages,onSerialize:e=>{jd(e,this.mirror)&&this.iframeManager.addIframe(e),Fd(e,this.mirror)&&this.stylesheetManager.trackLinkElement(e),Bd(r)&&this.shadowDomManager.addShadowRoot(wd.shadowRoot(r),this.doc)},onIframeLoad:(e,t)=>{this.iframeManager.attachIframe(e,t),this.shadowDomManager.observeAttachShadow(e)},onStylesheetLoad:(e,t)=>{this.stylesheetManager.attachLinkElement(e,t)},cssCaptured:a});c&&(e.push({parentId:s,nextId:l,node:c}),t.add(c.id))};for(;this.mapRemoves.length;)this.mirror.removeNodeFromMap(this.mapRemoves.shift());for(const s of this.movedSet)tp(this.removesSubTreeCache,s,this.mirror)&&!this.movedSet.has(wd.parentNode(s))||r(s);for(const s of this.addedSet)np(this.droppedSet,s)||tp(this.removesSubTreeCache,s,this.mirror)?np(this.movedSet,s)?r(s):this.droppedSet.add(s):r(s);let i=null;for(;n.length;){let e=null;if(i){const t=this.mirror.getId(wd.parentNode(i.value)),n=o(i.value);-1!==t&&-1!==n&&(e=i)}if(!e){let t=n.tail;for(;t;){const n=t;if(t=t.previous,n){const t=this.mirror.getId(wd.parentNode(n.value));if(-1===o(n.value))continue;if(-1!==t){e=n;break}{const t=n.value,o=wd.parentNode(t);if(o&&o.nodeType===Node.DOCUMENT_FRAGMENT_NODE){const t=wd.host(o);if(-1!==this.mirror.getId(t)){e=n;break}}}}}}if(!e){for(;n.head;)n.removeNode(n.head.value);break}i=e.previous,n.removeNode(e.value),r(e.value)}const a={texts:this.texts.map((e=>{const t=e.node,n=wd.parentNode(t);return n&&"TEXTAREA"===n.tagName&&this.genTextAreaValueMutation(n),{id:this.mirror.getId(t),value:e.value}})).filter((e=>!t.has(e.id))).filter((e=>this.mirror.has(e.id))),attributes:this.attributes.map((e=>{const{attributes:t}=e;if("string"==typeof t.style){const n=JSON.stringify(e.styleDiff),o=JSON.stringify(e._unchangedStyles);n.length!t.has(e.id))).filter((e=>this.mirror.has(e.id))),removes:this.removes,adds:e};(a.texts.length||a.attributes.length||a.removes.length||a.adds.length)&&(this.texts=[],this.attributes=[],this.attributeMap=new WeakMap,this.removes=[],this.addedSet=new Set,this.movedSet=new Set,this.droppedSet=new Set,this.removesSubTreeCache=new Set,this.movedMap={},this.mutationCb(a))})),Fn(this,"genTextAreaValueMutation",(e=>{let t=this.attributeMap.get(e);t||(t={node:e,attributes:{},styleDiff:{},_unchangedStyles:{}},this.attributes.push(t),this.attributeMap.set(e,t)),t.attributes.value=Array.from(wd.childNodes(e),(e=>wd.textContent(e)||"")).join("")})),Fn(this,"processMutation",(e=>{if(!Pd(e.target,this.mirror,this.slimDOMOptions))switch(e.type){case"characterData":{const t=wd.textContent(e.target);Rd(e.target,this.blockClass,this.blockSelector,!1)||t===e.oldValue||this.texts.push({value:Mo(e.target,this.maskTextClass,this.maskTextSelector,!0)&&t?this.maskTextFn?this.maskTextFn(t,Md(e.target)):t.replace(/[\S]/g,"*"):t,node:e.target});break}case"attributes":{const n=e.target;let o=e.attributeName,r=e.target.getAttribute(o);if("value"===o){const e=ao(n);r=oo({element:n,maskInputOptions:this.maskInputOptions,tagName:n.tagName,type:e,value:r,maskInputFn:this.maskInputFn})}if(Rd(e.target,this.blockClass,this.blockSelector,!1)||r===e.oldValue)return;let i=this.attributeMap.get(e.target);if("IFRAME"===n.tagName&&"src"===o&&!this.keepIframeSrcFn(r)){if(n.contentDocument)return;o="rr_src"}if(i||(i={node:e.target,attributes:{},styleDiff:{},_unchangedStyles:{}},this.attributes.push(i),this.attributeMap.set(e.target,i)),"type"===o&&"INPUT"===n.tagName&&"password"===(e.oldValue||"").toLowerCase()&&n.setAttribute("data-rr-is-password","true"),!Lo(n.tagName,o))if(i.attributes[o]=Oo(this.doc,ro(n.tagName),ro(o),r),"style"===o){if(!this.unattachedDoc)try{this.unattachedDoc=document.implementation.createHTMLDocument()}catch(t){this.unattachedDoc=this.doc}const o=this.unattachedDoc.createElement("span");e.oldValue&&o.setAttribute("style",e.oldValue);for(const e of Array.from(n.style)){const t=n.style.getPropertyValue(e),r=n.style.getPropertyPriority(e);t!==o.style.getPropertyValue(e)||r!==o.style.getPropertyPriority(e)?i.styleDiff[e]=""===r?t:[t,r]:i._unchangedStyles[e]=[t,r]}for(const e of Array.from(o.style))""===n.style.getPropertyValue(e)&&(i.styleDiff[e]=!1)}else"open"===o&&"DIALOG"===n.tagName&&(n.matches("dialog:modal")?i.attributes.rr_open_mode="modal":i.attributes.rr_open_mode="non-modal");break}case"childList":if(Rd(e.target,this.blockClass,this.blockSelector,!0))return;if("TEXTAREA"===e.target.tagName)return void this.genTextAreaValueMutation(e.target);e.addedNodes.forEach((t=>this.genAdds(t,e.target))),e.removedNodes.forEach((t=>{const n=this.mirror.getId(t),o=$n(e.target)?this.mirror.getId(wd.host(e.target)):this.mirror.getId(e.target);Rd(e.target,this.blockClass,this.blockSelector,!1)||Pd(t,this.mirror,this.slimDOMOptions)||!function(e,t){return-1!==t.getId(e)}(t,this.mirror)||(this.addedSet.has(t)?(ep(this.addedSet,t),this.droppedSet.add(t)):this.addedSet.has(e.target)&&-1===n||Dd(e.target,this.mirror)||(this.movedSet.has(t)&&this.movedMap[$d(n,o)]?ep(this.movedSet,t):(this.removes.push({parentId:o,id:n,isShadow:!(!$n(e.target)||!Qn(e.target))||void 0}),function(e,t){const n=[e];for(;n.length;){const e=n.pop();t.has(e)||(t.add(e),wd.childNodes(e).forEach((e=>n.push(e))))}}(t,this.removesSubTreeCache))),this.mapRemoves.push(t))}))}})),Fn(this,"genAdds",((e,t)=>{if(!this.processedNodeManager.inOtherBuffer(e,this)&&!this.addedSet.has(e)&&!this.movedSet.has(e)){if(this.mirror.hasNode(e)){if(Pd(e,this.mirror,this.slimDOMOptions))return;this.movedSet.add(e);let n=null;t&&this.mirror.hasNode(t)&&(n=this.mirror.getId(t)),n&&-1!==n&&(this.movedMap[$d(this.mirror.getId(e),n)]=!0)}else this.addedSet.add(e),this.droppedSet.delete(e);Rd(e,this.blockClass,this.blockSelector,!1)||(wd.childNodes(e).forEach((e=>this.genAdds(e))),Bd(e)&&wd.childNodes(wd.shadowRoot(e)).forEach((t=>{this.processedNodeManager.add(t,this),this.genAdds(t,e)})))}}))}init(e){["mutationCb","blockClass","blockSelector","maskTextClass","maskTextSelector","inlineStylesheet","maskInputOptions","maskTextFn","maskInputFn","keepIframeSrcFn","recordCanvas","inlineImages","slimDOMOptions","dataURLOptions","doc","mirror","iframeManager","stylesheetManager","shadowDomManager","canvasManager","processedNodeManager"].forEach((t=>{this[t]=e[t]}))}freeze(){this.frozen=!0,this.canvasManager.freeze()}unfreeze(){this.frozen=!1,this.canvasManager.unfreeze(),this.emit()}isFrozen(){return this.frozen}lock(){this.locked=!0,this.canvasManager.lock()}unlock(){this.locked=!1,this.canvasManager.unlock(),this.emit()}reset(){this.shadowDomManager.reset(),this.canvasManager.reset()}}function ep(e,t){e.delete(t),wd.childNodes(t).forEach((t=>ep(e,t)))}function tp(e,t,n){return 0!==e.size&&function(e,t,n){const o=wd.parentNode(t);return!!o&&e.has(o)}(e,t)}function np(e,t){return 0!==e.size&&op(e,t)}function op(e,t){const n=wd.parentNode(t);return!!n&&(!!e.has(n)||op(e,n))}let rp;const ip=e=>{if(!rp)return e;return(...t)=>{try{return e(...t)}catch(n){if(rp&&!0===rp(n))return;throw n}}},ap=[];function sp(e){try{if("composedPath"in e){const t=e.composedPath();if(t.length)return t[0]}else if("path"in e&&e.path.length)return e.path[0]}catch{}return e&&e.target}function lp(e,t){const n=new Qd;ap.push(n),n.init(e);const o=new(bd())(ip(n.processMutations.bind(n)));return o.observe(t,{attributes:!0,attributeOldValue:!0,characterData:!0,characterDataOldValue:!0,childList:!0,subtree:!0}),o}function cp({mouseInteractionCb:e,doc:t,mirror:n,blockClass:o,blockSelector:r,sampling:i}){if(!1===i.mouseInteraction)return()=>{};const a=!0===i.mouseInteraction||void 0===i.mouseInteraction?{}:i.mouseInteraction,s=[];let l=null;return Object.keys(Vd).filter((e=>Number.isNaN(Number(e))&&!e.endsWith("_Departed")&&!1!==a[e])).forEach((i=>{let a=ro(i);const c=(t=>i=>{const a=sp(i);if(Rd(a,o,r,!0))return;let s=null,c=t;if("pointerType"in i){switch(i.pointerType){case"mouse":s=Gd.Mouse;break;case"touch":s=Gd.Touch;break;case"pen":s=Gd.Pen}s===Gd.Touch?Vd[t]===Vd.MouseDown?c="TouchStart":Vd[t]===Vd.MouseUp&&(c="TouchEnd"):Gd.Pen}else Nd(i)&&(s=Gd.Touch);null!==s?(l=s,(c.startsWith("Touch")&&s===Gd.Touch||c.startsWith("Mouse")&&s===Gd.Mouse)&&(s=null)):Vd[t]===Vd.Click&&(s=l,l=null);const u=Nd(i)?i.changedTouches[0]:i;if(!u)return;const d=n.getId(a),{clientX:p,clientY:h}=u;ip(e)({type:Vd[c],id:d,x:p,y:h,...null!==s&&{pointerType:s}})})(i);if(window.PointerEvent)switch(Vd[i]){case Vd.MouseDown:case Vd.MouseUp:a=a.replace("mouse","pointer");break;case Vd.TouchStart:case Vd.TouchEnd:return}s.push(kd(a,c,t))})),ip((()=>{s.forEach((e=>e()))}))}function up({scrollCb:e,doc:t,mirror:n,blockClass:o,blockSelector:r,sampling:i}){return kd("scroll",ip(Cd(ip((i=>{const a=sp(i);if(!a||Rd(a,o,r,!0))return;const s=n.getId(a);if(a===t&&t.defaultView){const n=Od(t.defaultView);e({id:s,x:n.left,y:n.top})}else e({id:s,x:a.scrollLeft,y:a.scrollTop})})),i.scroll||100)),t)}const dp=["INPUT","TEXTAREA","SELECT"],pp=new WeakMap;function hp(e){return function(e,t){if(vp("CSSGroupingRule")&&e.parentRule instanceof CSSGroupingRule||vp("CSSMediaRule")&&e.parentRule instanceof CSSMediaRule||vp("CSSSupportsRule")&&e.parentRule instanceof CSSSupportsRule||vp("CSSConditionRule")&&e.parentRule instanceof CSSConditionRule){const n=Array.from(e.parentRule.cssRules).indexOf(e);t.unshift(n)}else if(e.parentStyleSheet){const n=Array.from(e.parentStyleSheet.cssRules).indexOf(e);t.unshift(n)}return t}(e,[])}function fp(e,t,n){let o,r;return e?(e.ownerNode?o=t.getId(e.ownerNode):r=n.getId(e),{styleId:r,id:o}):{}}function mp({mirror:e,stylesheetManager:t},n){var o,r,i;let a=null;a="#document"===n.nodeName?e.getId(n):e.getId(wd.host(n));const s="#document"===n.nodeName?null==(o=n.defaultView)?void 0:o.Document:null==(i=null==(r=n.ownerDocument)?void 0:r.defaultView)?void 0:i.ShadowRoot,l=(null==s?void 0:s.prototype)?Object.getOwnPropertyDescriptor(null==s?void 0:s.prototype,"adoptedStyleSheets"):void 0;return null!==a&&-1!==a&&s&&l?(Object.defineProperty(n,"adoptedStyleSheets",{configurable:l.configurable,enumerable:l.enumerable,get(){var e;return null==(e=l.get)?void 0:e.call(this)},set(e){var n;const o=null==(n=l.set)?void 0:n.call(this,e);if(null!==a&&-1!==a)try{t.adoptStyleSheets(e,a)}catch(r){}return o}}),ip((()=>{Object.defineProperty(n,"adoptedStyleSheets",{configurable:l.configurable,enumerable:l.enumerable,get:l.get,set:l.set})}))):()=>{}}function gp(e,t={}){const n=e.doc.defaultView;if(!n)return()=>{};let o;!function(e,t){const{mutationCb:n,mousemoveCb:o,mouseInteractionCb:r,scrollCb:i,viewportResizeCb:a,inputCb:s,mediaInteractionCb:l,styleSheetRuleCb:c,styleDeclarationCb:u,canvasMutationCb:d,fontCb:p,selectionCb:h,customElementCb:f}=e;e.mutationCb=(...e)=>{t.mutation&&t.mutation(...e),n(...e)},e.mousemoveCb=(...e)=>{t.mousemove&&t.mousemove(...e),o(...e)},e.mouseInteractionCb=(...e)=>{t.mouseInteraction&&t.mouseInteraction(...e),r(...e)},e.scrollCb=(...e)=>{t.scroll&&t.scroll(...e),i(...e)},e.viewportResizeCb=(...e)=>{t.viewportResize&&t.viewportResize(...e),a(...e)},e.inputCb=(...e)=>{t.input&&t.input(...e),s(...e)},e.mediaInteractionCb=(...e)=>{t.mediaInteaction&&t.mediaInteaction(...e),l(...e)},e.styleSheetRuleCb=(...e)=>{t.styleSheetRule&&t.styleSheetRule(...e),c(...e)},e.styleDeclarationCb=(...e)=>{t.styleDeclaration&&t.styleDeclaration(...e),u(...e)},e.canvasMutationCb=(...e)=>{t.canvasMutation&&t.canvasMutation(...e),d(...e)},e.fontCb=(...e)=>{t.font&&t.font(...e),p(...e)},e.selectionCb=(...e)=>{t.selection&&t.selection(...e),h(...e)},e.customElementCb=(...e)=>{t.customElement&&t.customElement(...e),f(...e)}}(e,t),e.recordDOM&&(o=lp(e,e.doc));const r=function({mousemoveCb:e,sampling:t,doc:n,mirror:o}){if(!1===t.mousemove)return()=>{};const r="number"==typeof t.mousemove?t.mousemove:50,i="number"==typeof t.mousemoveCallback?t.mousemoveCallback:500;let a,s=[];const l=Cd(ip((t=>{const n=Date.now()-a;e(s.map((e=>(e.timeOffset-=n,e))),t),s=[],a=null})),i),c=ip(Cd(ip((e=>{const t=sp(e),{clientX:n,clientY:r}=Nd(e)?e.changedTouches[0]:e;a||(a=Td()),s.push({x:n,y:r,id:o.getId(t),timeOffset:Td()-a}),l("undefined"!=typeof DragEvent&&e instanceof DragEvent?Wd.Drag:e instanceof MouseEvent?Wd.MouseMove:Wd.TouchMove)})),r,{trailing:!1})),u=[kd("mousemove",c,n),kd("touchmove",c,n),kd("drag",c,n)];return ip((()=>{u.forEach((e=>e()))}))}(e),i=cp(e),a=up(e),s=function({viewportResizeCb:e},{win:t}){let n=-1,o=-1;return kd("resize",ip(Cd(ip((()=>{const t=Ld(),r=Ad();n===t&&o===r||(e({width:Number(r),height:Number(t)}),n=t,o=r)})),200)),t)}(e,{win:n}),l=function({inputCb:e,doc:t,mirror:n,blockClass:o,blockSelector:r,ignoreClass:i,ignoreSelector:a,maskInputOptions:s,maskInputFn:l,sampling:c,userTriggeredOnInput:u}){function d(e){let n=sp(e);const c=e.isTrusted,d=n&&n.tagName;if(n&&"OPTION"===d&&(n=wd.parentElement(n)),!n||!d||dp.indexOf(d)<0||Rd(n,o,r,!0))return;if(n.classList.contains(i)||a&&n.matches(a))return;let h=n.value,f=!1;const m=ao(n)||"";"radio"===m||"checkbox"===m?f=n.checked:(s[d.toLowerCase()]||s[m])&&(h=oo({element:n,maskInputOptions:s,tagName:d,type:m,value:h,maskInputFn:l})),p(n,u?{text:h,isChecked:f,userTriggered:c}:{text:h,isChecked:f});const g=n.name;"radio"===m&&g&&f&&t.querySelectorAll(`input[type="radio"][name="${g}"]`).forEach((e=>{if(e!==n){const t=e.value;p(e,u?{text:t,isChecked:!f,userTriggered:!1}:{text:t,isChecked:!f})}}))}function p(t,o){const r=pp.get(t);if(!r||r.text!==o.text||r.isChecked!==o.isChecked){pp.set(t,o);const r=n.getId(t);ip(e)({...o,id:r})}}const h=("last"===c.input?["change"]:["input","change"]).map((e=>kd(e,ip(d),t))),f=t.defaultView;if(!f)return()=>{h.forEach((e=>e()))};const m=f.Object.getOwnPropertyDescriptor(f.HTMLInputElement.prototype,"value"),g=[[f.HTMLInputElement.prototype,"value"],[f.HTMLInputElement.prototype,"checked"],[f.HTMLSelectElement.prototype,"value"],[f.HTMLTextAreaElement.prototype,"value"],[f.HTMLSelectElement.prototype,"selectedIndex"],[f.HTMLOptionElement.prototype,"selected"]];return m&&m.set&&h.push(...g.map((e=>Id(e[0],e[1],{set(){ip(d)({target:this,isTrusted:!1})}},!1,f)))),ip((()=>{h.forEach((e=>e()))}))}(e),c=function({mediaInteractionCb:e,blockClass:t,blockSelector:n,mirror:o,sampling:r,doc:i}){const a=ip((i=>Cd(ip((r=>{const a=sp(r);if(!a||Rd(a,t,n,!0))return;const{currentTime:s,volume:l,muted:c,playbackRate:u,loop:d}=a;e({type:i,id:o.getId(a),currentTime:s,volume:l,muted:c,playbackRate:u,loop:d})})),r.media||500))),s=[kd("play",a(Yd.Play),i),kd("pause",a(Yd.Pause),i),kd("seeked",a(Yd.Seeked),i),kd("volumechange",a(Yd.VolumeChange),i),kd("ratechange",a(Yd.RateChange),i)];return ip((()=>{s.forEach((e=>e()))}))}(e);let u=()=>{},d=()=>{},p=()=>{},h=()=>{};e.recordDOM&&(u=function({styleSheetRuleCb:e,mirror:t,stylesheetManager:n},{win:o}){if(!o.CSSStyleSheet||!o.CSSStyleSheet.prototype)return()=>{};const r=o.CSSStyleSheet.prototype.insertRule;o.CSSStyleSheet.prototype.insertRule=new Proxy(r,{apply:ip(((o,r,i)=>{const[a,s]=i,{id:l,styleId:c}=fp(r,t,n.styleMirror);return(l&&-1!==l||c&&-1!==c)&&e({id:l,styleId:c,adds:[{rule:a,index:s}]}),o.apply(r,i)}))}),o.CSSStyleSheet.prototype.addRule=function(e,t,n=this.cssRules.length){const r=`${e} { ${t} }`;return o.CSSStyleSheet.prototype.insertRule.apply(this,[r,n])};const i=o.CSSStyleSheet.prototype.deleteRule;let a,s;o.CSSStyleSheet.prototype.deleteRule=new Proxy(i,{apply:ip(((o,r,i)=>{const[a]=i,{id:s,styleId:l}=fp(r,t,n.styleMirror);return(s&&-1!==s||l&&-1!==l)&&e({id:s,styleId:l,removes:[{index:a}]}),o.apply(r,i)}))}),o.CSSStyleSheet.prototype.removeRule=function(e){return o.CSSStyleSheet.prototype.deleteRule.apply(this,[e])},o.CSSStyleSheet.prototype.replace&&(a=o.CSSStyleSheet.prototype.replace,o.CSSStyleSheet.prototype.replace=new Proxy(a,{apply:ip(((o,r,i)=>{const[a]=i,{id:s,styleId:l}=fp(r,t,n.styleMirror);return(s&&-1!==s||l&&-1!==l)&&e({id:s,styleId:l,replace:a}),o.apply(r,i)}))})),o.CSSStyleSheet.prototype.replaceSync&&(s=o.CSSStyleSheet.prototype.replaceSync,o.CSSStyleSheet.prototype.replaceSync=new Proxy(s,{apply:ip(((o,r,i)=>{const[a]=i,{id:s,styleId:l}=fp(r,t,n.styleMirror);return(s&&-1!==s||l&&-1!==l)&&e({id:s,styleId:l,replaceSync:a}),o.apply(r,i)}))}));const l={};yp("CSSGroupingRule")?l.CSSGroupingRule=o.CSSGroupingRule:(yp("CSSMediaRule")&&(l.CSSMediaRule=o.CSSMediaRule),yp("CSSConditionRule")&&(l.CSSConditionRule=o.CSSConditionRule),yp("CSSSupportsRule")&&(l.CSSSupportsRule=o.CSSSupportsRule));const c={};return Object.entries(l).forEach((([o,r])=>{c[o]={insertRule:r.prototype.insertRule,deleteRule:r.prototype.deleteRule},r.prototype.insertRule=new Proxy(c[o].insertRule,{apply:ip(((o,r,i)=>{const[a,s]=i,{id:l,styleId:c}=fp(r.parentStyleSheet,t,n.styleMirror);return(l&&-1!==l||c&&-1!==c)&&e({id:l,styleId:c,adds:[{rule:a,index:[...hp(r),s||0]}]}),o.apply(r,i)}))}),r.prototype.deleteRule=new Proxy(c[o].deleteRule,{apply:ip(((o,r,i)=>{const[a]=i,{id:s,styleId:l}=fp(r.parentStyleSheet,t,n.styleMirror);return(s&&-1!==s||l&&-1!==l)&&e({id:s,styleId:l,removes:[{index:[...hp(r),a]}]}),o.apply(r,i)}))})})),ip((()=>{o.CSSStyleSheet.prototype.insertRule=r,o.CSSStyleSheet.prototype.deleteRule=i,a&&(o.CSSStyleSheet.prototype.replace=a),s&&(o.CSSStyleSheet.prototype.replaceSync=s),Object.entries(l).forEach((([e,t])=>{t.prototype.insertRule=c[e].insertRule,t.prototype.deleteRule=c[e].deleteRule}))}))}(e,{win:n}),d=mp(e,e.doc),p=function({styleDeclarationCb:e,mirror:t,ignoreCSSAttributes:n,stylesheetManager:o},{win:r}){const i=r.CSSStyleDeclaration.prototype.setProperty;r.CSSStyleDeclaration.prototype.setProperty=new Proxy(i,{apply:ip(((r,a,s)=>{var l;const[c,u,d]=s;if(n.has(c))return i.apply(a,[c,u,d]);const{id:p,styleId:h}=fp(null==(l=a.parentRule)?void 0:l.parentStyleSheet,t,o.styleMirror);return(p&&-1!==p||h&&-1!==h)&&e({id:p,styleId:h,set:{property:c,value:u,priority:d},index:hp(a.parentRule)}),r.apply(a,s)}))});const a=r.CSSStyleDeclaration.prototype.removeProperty;return r.CSSStyleDeclaration.prototype.removeProperty=new Proxy(a,{apply:ip(((r,i,s)=>{var l;const[c]=s;if(n.has(c))return a.apply(i,[c]);const{id:u,styleId:d}=fp(null==(l=i.parentRule)?void 0:l.parentStyleSheet,t,o.styleMirror);return(u&&-1!==u||d&&-1!==d)&&e({id:u,styleId:d,remove:{property:c},index:hp(i.parentRule)}),r.apply(i,s)}))}),ip((()=>{r.CSSStyleDeclaration.prototype.setProperty=i,r.CSSStyleDeclaration.prototype.removeProperty=a}))}(e,{win:n}),e.collectFonts&&(h=function({fontCb:e,doc:t}){const n=t.defaultView;if(!n)return()=>{};const o=[],r=new WeakMap,i=n.FontFace;n.FontFace=function(e,t,n){const o=new i(e,t,n);return r.set(o,{family:e,buffer:"string"!=typeof t,descriptors:n,fontSource:"string"==typeof t?t:JSON.stringify(Array.from(new Uint8Array(t)))}),o};const a=Ed(t.fonts,"add",(function(t){return function(n){return setTimeout(ip((()=>{const t=r.get(n);t&&(e(t),r.delete(n))})),0),t.apply(this,[n])}}));return o.push((()=>{n.FontFace=i})),o.push(a),ip((()=>{o.forEach((e=>e()))}))}(e)));const f=function(e){const{doc:t,mirror:n,blockClass:o,blockSelector:r,selectionCb:i}=e;let a=!0;const s=ip((()=>{const e=t.getSelection();if(!e||a&&(null==e?void 0:e.isCollapsed))return;a=e.isCollapsed||!1;const s=[],l=e.rangeCount||0;for(let t=0;t{}}(e),g=[];for(const v of e.plugins)g.push(v.observer(v.callback,n,v.options));return ip((()=>{ap.forEach((e=>e.reset())),null==o||o.disconnect(),r(),i(),a(),s(),l(),c(),u(),d(),p(),h(),f(),m(),g.forEach((e=>e()))}))}function vp(e){return void 0!==window[e]}function yp(e){return Boolean(void 0!==window[e]&&window[e].prototype&&"insertRule"in window[e].prototype&&"deleteRule"in window[e].prototype)}class bp{constructor(e){Fn(this,"iframeIdToRemoteIdMap",new WeakMap),Fn(this,"iframeRemoteIdToIdMap",new WeakMap),this.generateIdFn=e}getId(e,t,n,o){const r=n||this.getIdToRemoteIdMap(e),i=o||this.getRemoteIdToIdMap(e);let a=r.get(t);return a||(a=this.generateIdFn(),r.set(t,a),i.set(a,t)),a}getIds(e,t){const n=this.getIdToRemoteIdMap(e),o=this.getRemoteIdToIdMap(e);return t.map((t=>this.getId(e,t,n,o)))}getRemoteId(e,t,n){const o=n||this.getRemoteIdToIdMap(e);if("number"!=typeof t)return t;const r=o.get(t);return r||-1}getRemoteIds(e,t){const n=this.getRemoteIdToIdMap(e);return t.map((t=>this.getRemoteId(e,t,n)))}reset(e){if(!e)return this.iframeIdToRemoteIdMap=new WeakMap,void(this.iframeRemoteIdToIdMap=new WeakMap);this.iframeIdToRemoteIdMap.delete(e),this.iframeRemoteIdToIdMap.delete(e)}getIdToRemoteIdMap(e){let t=this.iframeIdToRemoteIdMap.get(e);return t||(t=new Map,this.iframeIdToRemoteIdMap.set(e,t)),t}getRemoteIdToIdMap(e){let t=this.iframeRemoteIdToIdMap.get(e);return t||(t=new Map,this.iframeRemoteIdToIdMap.set(e,t)),t}}class wp{constructor(e){Fn(this,"iframes",new WeakMap),Fn(this,"crossOriginIframeMap",new WeakMap),Fn(this,"crossOriginIframeMirror",new bp(bo)),Fn(this,"crossOriginIframeStyleMirror"),Fn(this,"crossOriginIframeRootIdMap",new WeakMap),Fn(this,"mirror"),Fn(this,"mutationCb"),Fn(this,"wrappedEmit"),Fn(this,"loadListener"),Fn(this,"stylesheetManager"),Fn(this,"recordCrossOriginIframes"),this.mutationCb=e.mutationCb,this.wrappedEmit=e.wrappedEmit,this.stylesheetManager=e.stylesheetManager,this.recordCrossOriginIframes=e.recordCrossOriginIframes,this.crossOriginIframeStyleMirror=new bp(this.stylesheetManager.styleMirror.generateId.bind(this.stylesheetManager.styleMirror)),this.mirror=e.mirror,this.recordCrossOriginIframes&&window.addEventListener("message",this.handleMessage.bind(this))}addIframe(e){this.iframes.set(e,!0),e.contentWindow&&this.crossOriginIframeMap.set(e.contentWindow,e)}addLoadListener(e){this.loadListener=e}attachIframe(e,t){var n,o;this.mutationCb({adds:[{parentId:this.mirror.getId(e),nextId:null,node:t}],removes:[],texts:[],attributes:[],isAttachIframe:!0}),this.recordCrossOriginIframes&&(null==(n=e.contentWindow)||n.addEventListener("message",this.handleMessage.bind(this))),null==(o=this.loadListener)||o.call(this,e),e.contentDocument&&e.contentDocument.adoptedStyleSheets&&e.contentDocument.adoptedStyleSheets.length>0&&this.stylesheetManager.adoptStyleSheets(e.contentDocument.adoptedStyleSheets,this.mirror.getId(e.contentDocument))}handleMessage(e){const t=e;if("rrweb"!==t.data.type||t.origin!==t.data.origin)return;if(!e.source)return;const n=this.crossOriginIframeMap.get(e.source);if(!n)return;const o=this.transformCrossOriginEvent(n,t.data.event);o&&this.wrappedEmit(o,t.data.isCheckout)}transformCrossOriginEvent(e,t){var n;switch(t.type){case qd.FullSnapshot:{this.crossOriginIframeMirror.reset(e),this.crossOriginIframeStyleMirror.reset(e),this.replaceIdOnNode(t.data.node,e);const n=t.data.node.id;return this.crossOriginIframeRootIdMap.set(e,n),this.patchRootIdOnNode(t.data.node,n),{timestamp:t.timestamp,type:qd.IncrementalSnapshot,data:{source:Wd.Mutation,adds:[{parentId:this.mirror.getId(e),nextId:null,node:t.data.node}],removes:[],texts:[],attributes:[],isAttachIframe:!0}}}case qd.Meta:case qd.Load:case qd.DomContentLoaded:return!1;case qd.Plugin:return t;case qd.Custom:return this.replaceIds(t.data.payload,e,["id","parentId","previousId","nextId"]),t;case qd.IncrementalSnapshot:switch(t.data.source){case Wd.Mutation:return t.data.adds.forEach((t=>{this.replaceIds(t,e,["parentId","nextId","previousId"]),this.replaceIdOnNode(t.node,e);const n=this.crossOriginIframeRootIdMap.get(e);n&&this.patchRootIdOnNode(t.node,n)})),t.data.removes.forEach((t=>{this.replaceIds(t,e,["parentId","id"])})),t.data.attributes.forEach((t=>{this.replaceIds(t,e,["id"])})),t.data.texts.forEach((t=>{this.replaceIds(t,e,["id"])})),t;case Wd.Drag:case Wd.TouchMove:case Wd.MouseMove:return t.data.positions.forEach((t=>{this.replaceIds(t,e,["id"])})),t;case Wd.ViewportResize:return!1;case Wd.MediaInteraction:case Wd.MouseInteraction:case Wd.Scroll:case Wd.CanvasMutation:case Wd.Input:return this.replaceIds(t.data,e,["id"]),t;case Wd.StyleSheetRule:case Wd.StyleDeclaration:return this.replaceIds(t.data,e,["id"]),this.replaceStyleIds(t.data,e,["styleId"]),t;case Wd.Font:return t;case Wd.Selection:return t.data.ranges.forEach((t=>{this.replaceIds(t,e,["start","end"])})),t;case Wd.AdoptedStyleSheet:return this.replaceIds(t.data,e,["id"]),this.replaceStyleIds(t.data,e,["styleIds"]),null==(n=t.data.styles)||n.forEach((t=>{this.replaceStyleIds(t,e,["styleId"])})),t}}return!1}replace(e,t,n,o){for(const r of o)(Array.isArray(t[r])||"number"==typeof t[r])&&(Array.isArray(t[r])?t[r]=e.getIds(n,t[r]):t[r]=e.getId(n,t[r]));return t}replaceIds(e,t,n){return this.replace(this.crossOriginIframeMirror,e,t,n)}replaceStyleIds(e,t,n){return this.replace(this.crossOriginIframeStyleMirror,e,t,n)}replaceIdOnNode(e,t){this.replaceIds(e,t,["id","rootId"]),"childNodes"in e&&e.childNodes.forEach((e=>{this.replaceIdOnNode(e,t)}))}patchRootIdOnNode(e,t){e.type===Jd.Document||e.rootId||(e.rootId=t),"childNodes"in e&&e.childNodes.forEach((e=>{this.patchRootIdOnNode(e,t)}))}}class kp{constructor(e){Fn(this,"shadowDoms",new WeakSet),Fn(this,"mutationCb"),Fn(this,"scrollCb"),Fn(this,"bypassOptions"),Fn(this,"mirror"),Fn(this,"restoreHandlers",[]),this.mutationCb=e.mutationCb,this.scrollCb=e.scrollCb,this.bypassOptions=e.bypassOptions,this.mirror=e.mirror,this.init()}init(){this.reset(),this.patchAttachShadow(Element,document)}addShadowRoot(e,t){if(!Qn(e))return;if(this.shadowDoms.has(e))return;this.shadowDoms.add(e);const n=lp({...this.bypassOptions,doc:t,mutationCb:this.mutationCb,mirror:this.mirror,shadowDomManager:this},e);this.restoreHandlers.push((()=>n.disconnect())),this.restoreHandlers.push(up({...this.bypassOptions,scrollCb:this.scrollCb,doc:e,mirror:this.mirror})),setTimeout((()=>{e.adoptedStyleSheets&&e.adoptedStyleSheets.length>0&&this.bypassOptions.stylesheetManager.adoptStyleSheets(e.adoptedStyleSheets,this.mirror.getId(wd.host(e))),this.restoreHandlers.push(mp({mirror:this.mirror,stylesheetManager:this.bypassOptions.stylesheetManager},e))}),0)}observeAttachShadow(e){e.contentWindow&&e.contentDocument&&this.patchAttachShadow(e.contentWindow.Element,e.contentDocument)}patchAttachShadow(e,t){const n=this;this.restoreHandlers.push(Ed(e.prototype,"attachShadow",(function(e){return function(o){const r=e.call(this,o),i=wd.shadowRoot(this);return i&&zd(this)&&n.addShadowRoot(i,t),r}})))}reset(){this.restoreHandlers.forEach((e=>{try{e()}catch(t){}})),this.restoreHandlers=[],this.shadowDoms=new WeakSet}}for(var xp="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Sp="undefined"==typeof Uint8Array?[]:new Uint8Array(256),Cp=0;Cp<64;Cp++)Sp[xp.charCodeAt(Cp)]=Cp;const Ip=new Map;const Ep=(e,t,n)=>{if(!e||!Lp(e,t)&&"object"!=typeof e)return;const o=function(e,t){let n=Ip.get(e);return n||(n=new Map,Ip.set(e,n)),n.has(t)||n.set(t,[]),n.get(t)}(n,e.constructor.name);let r=o.indexOf(e);return-1===r&&(r=o.length,o.push(e)),r};function Tp(e,t,n){if(e instanceof Array)return e.map((e=>Tp(e,t,n)));if(null===e)return e;if(e instanceof Float32Array||e instanceof Float64Array||e instanceof Int32Array||e instanceof Uint32Array||e instanceof Uint8Array||e instanceof Uint16Array||e instanceof Int16Array||e instanceof Int8Array||e instanceof Uint8ClampedArray){return{rr_type:e.constructor.name,args:[Object.values(e)]}}if(e instanceof ArrayBuffer){return{rr_type:e.constructor.name,base64:function(e){var t,n=new Uint8Array(e),o=n.length,r="";for(t=0;t>2],r+=xp[(3&n[t])<<4|n[t+1]>>4],r+=xp[(15&n[t+1])<<2|n[t+2]>>6],r+=xp[63&n[t+2]];return o%3==2?r=r.substring(0,r.length-1)+"=":o%3==1&&(r=r.substring(0,r.length-2)+"=="),r}(e)}}if(e instanceof DataView){return{rr_type:e.constructor.name,args:[Tp(e.buffer,t,n),e.byteOffset,e.byteLength]}}if(e instanceof HTMLImageElement){const t=e.constructor.name,{src:n}=e;return{rr_type:t,src:n}}if(e instanceof HTMLCanvasElement){return{rr_type:"HTMLImageElement",src:e.toDataURL()}}if(e instanceof ImageData){return{rr_type:e.constructor.name,args:[Tp(e.data,t,n),e.width,e.height]}}if(Lp(e,t)||"object"==typeof e){return{rr_type:e.constructor.name,index:Ep(e,t,n)}}return e}const Op=(e,t,n)=>e.map((e=>Tp(e,t,n))),Lp=(e,t)=>{const n=["WebGLActiveInfo","WebGLBuffer","WebGLFramebuffer","WebGLProgram","WebGLRenderbuffer","WebGLShader","WebGLShaderPrecisionFormat","WebGLTexture","WebGLUniformLocation","WebGLVertexArrayObject","WebGLVertexArrayObjectOES"].filter((e=>"function"==typeof t[e]));return Boolean(n.find((n=>e instanceof t[n])))};function Ap(e,t,n,o){const r=[];try{const i=Ed(e.HTMLCanvasElement.prototype,"getContext",(function(e){return function(r,...i){if(!Rd(this,t,n,!0)){const e=function(e){return"experimental-webgl"===e?"webgl":e}(r);if("__context"in this||(this.__context=e),o&&["webgl","webgl2"].includes(e))if(i[0]&&"object"==typeof i[0]){const e=i[0];e.preserveDrawingBuffer||(e.preserveDrawingBuffer=!0)}else i.splice(0,1,{preserveDrawingBuffer:!0})}return e.apply(this,[r,...i])}}));r.push(i)}catch{console.error("failed to patch HTMLCanvasElement.prototype.getContext")}return()=>{r.forEach((e=>e()))}}function Mp(e,t,n,o,r,i){const a=[],s=Object.getOwnPropertyNames(e);for(const l of s)if(!["isContextLost","canvas","drawingBufferWidth","drawingBufferHeight"].includes(l))try{if("function"!=typeof e[l])continue;const s=Ed(e,l,(function(e){return function(...a){const s=e.apply(this,a);if(Ep(s,i,this),"tagName"in this.canvas&&!Rd(this.canvas,o,r,!0)){const e=Op(a,i,this),o={type:t,property:l,args:e};n(this.canvas,o)}return s}}));a.push(s)}catch{const o=Id(e,l,{set(e){n(this.canvas,{type:t,property:l,args:[e],setter:!0})}});a.push(o)}return a}const Rp="KGZ1bmN0aW9uKCkgewogICJ1c2Ugc3RyaWN0IjsKICB2YXIgY2hhcnMgPSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7CiAgdmFyIGxvb2t1cCA9IHR5cGVvZiBVaW50OEFycmF5ID09PSAidW5kZWZpbmVkIiA/IFtdIDogbmV3IFVpbnQ4QXJyYXkoMjU2KTsKICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYXJzLmxlbmd0aDsgaSsrKSB7CiAgICBsb29rdXBbY2hhcnMuY2hhckNvZGVBdChpKV0gPSBpOwogIH0KICB2YXIgZW5jb2RlID0gZnVuY3Rpb24oYXJyYXlidWZmZXIpIHsKICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGFycmF5YnVmZmVyKSwgaTIsIGxlbiA9IGJ5dGVzLmxlbmd0aCwgYmFzZTY0ID0gIiI7CiAgICBmb3IgKGkyID0gMDsgaTIgPCBsZW47IGkyICs9IDMpIHsKICAgICAgYmFzZTY0ICs9IGNoYXJzW2J5dGVzW2kyXSA+PiAyXTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMl0gJiAzKSA8PCA0IHwgYnl0ZXNbaTIgKyAxXSA+PiA0XTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMiArIDFdICYgMTUpIDw8IDIgfCBieXRlc1tpMiArIDJdID4+IDZdOwogICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaTIgKyAyXSAmIDYzXTsKICAgIH0KICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgIj0iOwogICAgfSBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgIj09IjsKICAgIH0KICAgIHJldHVybiBiYXNlNjQ7CiAgfTsKICBjb25zdCBsYXN0QmxvYk1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7CiAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTsKICBhc3luYyBmdW5jdGlvbiBnZXRUcmFuc3BhcmVudEJsb2JGb3Iod2lkdGgsIGhlaWdodCwgZGF0YVVSTE9wdGlvbnMpIHsKICAgIGNvbnN0IGlkID0gYCR7d2lkdGh9LSR7aGVpZ2h0fWA7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBpZiAodHJhbnNwYXJlbnRCbG9iTWFwLmhhcyhpZCkpIHJldHVybiB0cmFuc3BhcmVudEJsb2JNYXAuZ2V0KGlkKTsKICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsKICAgICAgb2Zmc2NyZWVuLmdldENvbnRleHQoIjJkIik7CiAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCBvZmZzY3JlZW4uY29udmVydFRvQmxvYihkYXRhVVJMT3B0aW9ucyk7CiAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gYXdhaXQgYmxvYi5hcnJheUJ1ZmZlcigpOwogICAgICBjb25zdCBiYXNlNjQgPSBlbmNvZGUoYXJyYXlCdWZmZXIpOwogICAgICB0cmFuc3BhcmVudEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICByZXR1cm4gYmFzZTY0OwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuICIiOwogICAgfQogIH0KICBjb25zdCB3b3JrZXIgPSBzZWxmOwogIHdvcmtlci5vbm1lc3NhZ2UgPSBhc3luYyBmdW5jdGlvbihlKSB7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBjb25zdCB7IGlkLCBiaXRtYXAsIHdpZHRoLCBoZWlnaHQsIGRhdGFVUkxPcHRpb25zIH0gPSBlLmRhdGE7CiAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKAogICAgICAgIHdpZHRoLAogICAgICAgIGhlaWdodCwKICAgICAgICBkYXRhVVJMT3B0aW9ucwogICAgICApOwogICAgICBjb25zdCBvZmZzY3JlZW4gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpOwogICAgICBjb25zdCBjdHggPSBvZmZzY3JlZW4uZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgY3R4LmRyYXdJbWFnZShiaXRtYXAsIDAsIDApOwogICAgICBiaXRtYXAuY2xvc2UoKTsKICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IG9mZnNjcmVlbi5jb252ZXJ0VG9CbG9iKGRhdGFVUkxPcHRpb25zKTsKICAgICAgY29uc3QgdHlwZSA9IGJsb2IudHlwZTsKICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBhd2FpdCBibG9iLmFycmF5QnVmZmVyKCk7CiAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7CiAgICAgIGlmICghbGFzdEJsb2JNYXAuaGFzKGlkKSAmJiBhd2FpdCB0cmFuc3BhcmVudEJhc2U2NCA9PT0gYmFzZTY0KSB7CiAgICAgICAgbGFzdEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICAgIHJldHVybiB3b3JrZXIucG9zdE1lc3NhZ2UoeyBpZCB9KTsKICAgICAgfQogICAgICBpZiAobGFzdEJsb2JNYXAuZ2V0KGlkKSA9PT0gYmFzZTY0KSByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQgfSk7CiAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7CiAgICAgICAgaWQsCiAgICAgICAgdHlwZSwKICAgICAgICBiYXNlNjQsCiAgICAgICAgd2lkdGgsCiAgICAgICAgaGVpZ2h0CiAgICAgIH0pOwogICAgICBsYXN0QmxvYk1hcC5zZXQoaWQsIGJhc2U2NCk7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IGUuZGF0YS5pZCB9KTsKICAgIH0KICB9Owp9KSgpOwovLyMgc291cmNlTWFwcGluZ1VSTD1pbWFnZS1iaXRtYXAtZGF0YS11cmwtd29ya2VyLUlKcEM3Z19iLmpzLm1hcAo=",Pp="undefined"!=typeof window&&window.Blob&&new Blob([(Dp=Rp,Uint8Array.from(atob(Dp),(e=>e.charCodeAt(0))))],{type:"text/javascript;charset=utf-8"});var Dp;function Np(e){let t;try{if(t=Pp&&(window.URL||window.webkitURL).createObjectURL(Pp),!t)throw"";const n=new Worker(t,{name:null==e?void 0:e.name});return n.addEventListener("error",(()=>{(window.URL||window.webkitURL).revokeObjectURL(t)})),n}catch(n){return new Worker("data:text/javascript;base64,"+Rp,{name:null==e?void 0:e.name})}finally{t&&(window.URL||window.webkitURL).revokeObjectURL(t)}}class jp{constructor(e){Fn(this,"pendingCanvasMutations",new Map),Fn(this,"rafStamps",{latestId:0,invokeId:null}),Fn(this,"mirror"),Fn(this,"mutationCb"),Fn(this,"resetObservers"),Fn(this,"frozen",!1),Fn(this,"locked",!1),Fn(this,"processMutation",((e,t)=>{!(this.rafStamps.invokeId&&this.rafStamps.latestId!==this.rafStamps.invokeId)&&this.rafStamps.invokeId||(this.rafStamps.invokeId=this.rafStamps.latestId),this.pendingCanvasMutations.has(e)||this.pendingCanvasMutations.set(e,[]),this.pendingCanvasMutations.get(e).push(t)}));const{sampling:t="all",win:n,blockClass:o,blockSelector:r,recordCanvas:i,dataURLOptions:a}=e;this.mutationCb=e.mutationCb,this.mirror=e.mirror,i&&"all"===t&&this.initCanvasMutationObserver(n,o,r),i&&"number"==typeof t&&this.initCanvasFPSObserver(t,n,o,r,{dataURLOptions:a})}reset(){this.pendingCanvasMutations.clear(),this.resetObservers&&this.resetObservers()}freeze(){this.frozen=!0}unfreeze(){this.frozen=!1}lock(){this.locked=!0}unlock(){this.locked=!1}initCanvasFPSObserver(e,t,n,o,r){const i=Ap(t,n,o,!0),a=new Map,s=new Np;s.onmessage=e=>{const{id:t}=e.data;if(a.set(t,!1),!("base64"in e.data))return;const{base64:n,type:o,width:r,height:i}=e.data;this.mutationCb({id:t,type:Xd["2D"],commands:[{property:"clearRect",args:[0,0,r,i]},{property:"drawImage",args:[{rr_type:"ImageBitmap",args:[{rr_type:"Blob",data:[{rr_type:"ArrayBuffer",base64:n}],type:o}]},0,0]}]})};const l=1e3/e;let c,u=0;const d=e=>{u&&e-u{const e=[];return t.document.querySelectorAll("canvas").forEach((t=>{Rd(t,n,o,!0)||e.push(t)})),e})().forEach((async e=>{var t;const n=this.mirror.getId(e);if(a.get(n))return;if(0===e.width||0===e.height)return;if(a.set(n,!0),["webgl","webgl2"].includes(e.__context)){const n=e.getContext(e.__context);!1===(null==(t=null==n?void 0:n.getContextAttributes())?void 0:t.preserveDrawingBuffer)&&n.clear(n.COLOR_BUFFER_BIT)}const o=await createImageBitmap(e);s.postMessage({id:n,bitmap:o,width:e.width,height:e.height,dataURLOptions:r.dataURLOptions},[o])}))),c=requestAnimationFrame(d)};c=requestAnimationFrame(d),this.resetObservers=()=>{i(),cancelAnimationFrame(c)}}initCanvasMutationObserver(e,t,n){this.startRAFTimestamping(),this.startPendingCanvasMutationFlusher();const o=Ap(e,t,n,!1),r=function(e,t,n,o){const r=[],i=Object.getOwnPropertyNames(t.CanvasRenderingContext2D.prototype);for(const a of i)try{if("function"!=typeof t.CanvasRenderingContext2D.prototype[a])continue;const i=Ed(t.CanvasRenderingContext2D.prototype,a,(function(r){return function(...i){return Rd(this.canvas,n,o,!0)||setTimeout((()=>{const n=Op(i,t,this);e(this.canvas,{type:Xd["2D"],property:a,args:n})}),0),r.apply(this,i)}}));r.push(i)}catch{const n=Id(t.CanvasRenderingContext2D.prototype,a,{set(t){e(this.canvas,{type:Xd["2D"],property:a,args:[t],setter:!0})}});r.push(n)}return()=>{r.forEach((e=>e()))}}(this.processMutation.bind(this),e,t,n),i=function(e,t,n,o){const r=[];return r.push(...Mp(t.WebGLRenderingContext.prototype,Xd.WebGL,e,n,o,t)),void 0!==t.WebGL2RenderingContext&&r.push(...Mp(t.WebGL2RenderingContext.prototype,Xd.WebGL2,e,n,o,t)),()=>{r.forEach((e=>e()))}}(this.processMutation.bind(this),e,t,n);this.resetObservers=()=>{o(),r(),i()}}startPendingCanvasMutationFlusher(){requestAnimationFrame((()=>this.flushPendingCanvasMutations()))}startRAFTimestamping(){const e=t=>{this.rafStamps.latestId=t,requestAnimationFrame(e)};requestAnimationFrame(e)}flushPendingCanvasMutations(){this.pendingCanvasMutations.forEach(((e,t)=>{const n=this.mirror.getId(t);this.flushPendingCanvasMutationFor(t,n)})),requestAnimationFrame((()=>this.flushPendingCanvasMutations()))}flushPendingCanvasMutationFor(e,t){if(this.frozen||this.locked)return;const n=this.pendingCanvasMutations.get(e);if(!n||-1===t)return;const o=n.map((e=>{const{type:t,...n}=e;return n})),{type:r}=n[0];this.mutationCb({id:t,type:r,commands:o}),this.pendingCanvasMutations.delete(e)}}class Fp{constructor(e){Fn(this,"trackedLinkElements",new WeakSet),Fn(this,"mutationCb"),Fn(this,"adoptedStyleSheetCb"),Fn(this,"styleMirror",new _d),this.mutationCb=e.mutationCb,this.adoptedStyleSheetCb=e.adoptedStyleSheetCb}attachLinkElement(e,t){"_cssText"in t.attributes&&this.mutationCb({adds:[],removes:[],texts:[],attributes:[{id:t.id,attributes:t.attributes}]}),this.trackLinkElement(e)}trackLinkElement(e){this.trackedLinkElements.has(e)||(this.trackedLinkElements.add(e),this.trackStylesheetInLinkElement(e))}adoptStyleSheets(e,t){if(0===e.length)return;const n={id:t,styleIds:[]},o=[];for(const r of e){let e;this.styleMirror.has(r)?e=this.styleMirror.getId(r):(e=this.styleMirror.add(r),o.push({styleId:e,rules:Array.from(r.rules||CSSRule,((e,t)=>({rule:to(e,r.href),index:t})))})),n.styleIds.push(e)}o.length>0&&(n.styles=o),this.adoptedStyleSheetCb(n)}reset(){this.styleMirror.reset(),this.trackedLinkElements=new WeakSet}trackStylesheetInLinkElement(e){}}class Bp{constructor(){Fn(this,"nodeMap",new WeakMap),Fn(this,"active",!1)}inOtherBuffer(e,t){const n=this.nodeMap.get(e);return n&&Array.from(n).some((e=>e!==t))}add(e,t){this.active||(this.active=!0,requestAnimationFrame((()=>{this.nodeMap=new WeakMap,this.active=!1}))),this.nodeMap.set(e,(this.nodeMap.get(e)||new Set).add(t))}destroy(){}}let _p,Up,Hp,zp=!1;try{if(2!==Array.from([1],(e=>2*e))[0]){const e=document.createElement("iframe");document.body.appendChild(e),Array.from=(null==(Nn=e.contentWindow)?void 0:Nn.Array.from)||Array.from,document.body.removeChild(e)}}catch(Gm){console.debug("Unable to override Array.from",Gm)}const qp=new no;function Wp(e={}){const{emit:t,checkoutEveryNms:n,checkoutEveryNth:o,blockClass:r="rr-block",blockSelector:i=null,ignoreClass:a="rr-ignore",ignoreSelector:s=null,maskTextClass:l="rr-mask",maskTextSelector:c=null,inlineStylesheet:u=!0,maskAllInputs:d,maskInputOptions:p,slimDOMOptions:h,maskInputFn:f,maskTextFn:m,hooks:g,packFn:v,sampling:y={},dataURLOptions:b={},mousemoveWait:w,recordDOM:k=!0,recordCanvas:x=!1,recordCrossOriginIframes:S=!1,recordAfter:C=("DOMContentLoaded"===e.recordAfter?e.recordAfter:"load"),userTriggeredOnInput:I=!1,collectFonts:E=!1,inlineImages:T=!1,plugins:O,keepIframeSrcFn:L=(()=>!1),ignoreCSSAttributes:A=new Set([]),errorHandler:M}=e;rp=M;const R=!S||window.parent===window;let P=!1;if(!R)try{window.parent.document&&(P=!1)}catch(G){P=!0}if(R&&!t)throw new Error("emit function is required");if(!R&&!P)return()=>{};void 0!==w&&void 0===y.mousemove&&(y.mousemove=w),qp.reset();const D=!0===d?{color:!0,date:!0,"datetime-local":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0,password:!0}:void 0!==p?p:{password:!0},N=!0===h||"all"===h?{script:!0,comment:!0,headFavicon:!0,headWhitespace:!0,headMetaSocial:!0,headMetaRobots:!0,headMetaHttpEquiv:!0,headMetaVerification:!0,headMetaAuthorship:"all"===h,headMetaDescKeywords:"all"===h,headTitleMutations:"all"===h}:h||{};let j;!function(e=window){"NodeList"in e&&!e.NodeList.prototype.forEach&&(e.NodeList.prototype.forEach=Array.prototype.forEach),"DOMTokenList"in e&&!e.DOMTokenList.prototype.forEach&&(e.DOMTokenList.prototype.forEach=Array.prototype.forEach)}();let F=0;const B=e=>{for(const t of O||[])t.eventProcessor&&(e=t.eventProcessor(e));return v&&!P&&(e=v(e)),e};_p=(e,r)=>{var i;const a=e;if(a.timestamp=Td(),!(null==(i=ap[0])?void 0:i.isFrozen())||a.type===qd.FullSnapshot||a.type===qd.IncrementalSnapshot&&a.data.source===Wd.Mutation||ap.forEach((e=>e.unfreeze())),R)null==t||t(B(a),r);else if(P){const e={type:"rrweb",event:B(a),origin:window.location.origin,isCheckout:r};window.parent.postMessage(e,"*")}if(a.type===qd.FullSnapshot)j=a,F=0;else if(a.type===qd.IncrementalSnapshot){if(a.data.source===Wd.Mutation&&a.data.isAttachIframe)return;F++;const e=o&&F>=o,t=n&&a.timestamp-j.timestamp>n;(e||t)&&Up(!0)}};const _=e=>{_p({type:qd.IncrementalSnapshot,data:{source:Wd.Mutation,...e}})},U=e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.Scroll,...e}}),H=e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.CanvasMutation,...e}}),z=new Fp({mutationCb:_,adoptedStyleSheetCb:e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.AdoptedStyleSheet,...e}})}),q=new wp({mirror:qp,mutationCb:_,stylesheetManager:z,recordCrossOriginIframes:S,wrappedEmit:_p});for(const Y of O||[])Y.getMirror&&Y.getMirror({nodeMirror:qp,crossOriginIframeMirror:q.crossOriginIframeMirror,crossOriginIframeStyleMirror:q.crossOriginIframeStyleMirror});const W=new Bp;Hp=new jp({recordCanvas:x,mutationCb:H,win:window,blockClass:r,blockSelector:i,mirror:qp,sampling:y.canvas,dataURLOptions:b});const V=new kp({mutationCb:_,scrollCb:U,bypassOptions:{blockClass:r,blockSelector:i,maskTextClass:l,maskTextSelector:c,inlineStylesheet:u,maskInputOptions:D,dataURLOptions:b,maskTextFn:m,maskInputFn:f,recordCanvas:x,inlineImages:T,sampling:y,slimDOMOptions:N,iframeManager:q,stylesheetManager:z,canvasManager:Hp,keepIframeSrcFn:L,processedNodeManager:W},mirror:qp});Up=(e=!1)=>{if(!k)return;_p({type:qd.Meta,data:{href:window.location.href,width:Ad(),height:Ld()}},e),z.reset(),V.init(),ap.forEach((e=>e.lock()));const t=function(e,t){const{mirror:n=new no,blockClass:o="rr-block",blockSelector:r=null,maskTextClass:i="rr-mask",maskTextSelector:a=null,inlineStylesheet:s=!0,inlineImages:l=!1,recordCanvas:c=!1,maskAllInputs:u=!1,maskTextFn:d,maskInputFn:p,slimDOM:h=!1,dataURLOptions:f,preserveWhiteSpace:m,onSerialize:g,onIframeLoad:v,iframeLoadTimeout:y,onStylesheetLoad:b,stylesheetLoadTimeout:w,keepIframeSrcFn:k=(()=>!1)}=t||{};return Do(e,{doc:e,mirror:n,blockClass:o,blockSelector:r,maskTextClass:i,maskTextSelector:a,skipChild:!1,inlineStylesheet:s,maskInputOptions:!0===u?{color:!0,date:!0,"datetime-local":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0,password:!0}:!1===u?{password:!0}:u,maskTextFn:d,maskInputFn:p,slimDOMOptions:!0===h||"all"===h?{script:!0,comment:!0,headFavicon:!0,headWhitespace:!0,headMetaDescKeywords:"all"===h,headMetaSocial:!0,headMetaRobots:!0,headMetaHttpEquiv:!0,headMetaAuthorship:!0,headMetaVerification:!0}:!1===h?{}:h,dataURLOptions:f,inlineImages:l,recordCanvas:c,preserveWhiteSpace:m,onSerialize:g,onIframeLoad:v,iframeLoadTimeout:y,onStylesheetLoad:b,stylesheetLoadTimeout:w,keepIframeSrcFn:k,newlyAddedElement:!1})}(document,{mirror:qp,blockClass:r,blockSelector:i,maskTextClass:l,maskTextSelector:c,inlineStylesheet:u,maskAllInputs:D,maskTextFn:m,maskInputFn:f,slimDOM:N,dataURLOptions:b,recordCanvas:x,inlineImages:T,onSerialize:e=>{jd(e,qp)&&q.addIframe(e),Fd(e,qp)&&z.trackLinkElement(e),Bd(e)&&V.addShadowRoot(wd.shadowRoot(e),document)},onIframeLoad:(e,t)=>{q.attachIframe(e,t),V.observeAttachShadow(e)},onStylesheetLoad:(e,t)=>{z.attachLinkElement(e,t)},keepIframeSrcFn:L});if(!t)return console.warn("Failed to snapshot the document");_p({type:qd.FullSnapshot,data:{node:t,initialOffset:Od(window)}},e),ap.forEach((e=>e.unlock())),document.adoptedStyleSheets&&document.adoptedStyleSheets.length>0&&z.adoptStyleSheets(document.adoptedStyleSheets,qp.getId(document))};try{const e=[],t=e=>{var t;return ip(gp)({mutationCb:_,mousemoveCb:(e,t)=>_p({type:qd.IncrementalSnapshot,data:{source:t,positions:e}}),mouseInteractionCb:e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.MouseInteraction,...e}}),scrollCb:U,viewportResizeCb:e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.ViewportResize,...e}}),inputCb:e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.Input,...e}}),mediaInteractionCb:e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.MediaInteraction,...e}}),styleSheetRuleCb:e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.StyleSheetRule,...e}}),styleDeclarationCb:e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.StyleDeclaration,...e}}),canvasMutationCb:H,fontCb:e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.Font,...e}}),selectionCb:e=>{_p({type:qd.IncrementalSnapshot,data:{source:Wd.Selection,...e}})},customElementCb:e=>{_p({type:qd.IncrementalSnapshot,data:{source:Wd.CustomElement,...e}})},blockClass:r,ignoreClass:a,ignoreSelector:s,maskTextClass:l,maskTextSelector:c,maskInputOptions:D,inlineStylesheet:u,sampling:y,recordDOM:k,recordCanvas:x,inlineImages:T,userTriggeredOnInput:I,collectFonts:E,doc:e,maskInputFn:f,maskTextFn:m,keepIframeSrcFn:L,blockSelector:i,slimDOMOptions:N,dataURLOptions:b,mirror:qp,iframeManager:q,stylesheetManager:z,shadowDomManager:V,processedNodeManager:W,canvasManager:Hp,ignoreCSSAttributes:A,plugins:(null==(t=null==O?void 0:O.filter((e=>e.observer)))?void 0:t.map((e=>({observer:e.observer,options:e.options,callback:t=>_p({type:qd.Plugin,data:{plugin:e.name,payload:t}})}))))||[]},g)};q.addLoadListener((n=>{try{e.push(t(n.contentDocument))}catch(o){console.warn(o)}}));const n=()=>{Up(),e.push(t(document)),zp=!0};return"interactive"===document.readyState||"complete"===document.readyState?n():(e.push(kd("DOMContentLoaded",(()=>{_p({type:qd.DomContentLoaded,data:{}}),"DOMContentLoaded"===C&&n()}))),e.push(kd("load",(()=>{_p({type:qd.Load,data:{}}),"load"===C&&n()}),window))),()=>{e.forEach((e=>e())),W.destroy(),zp=!1,rp=void 0}}catch(X){console.warn(X)}}var Vp,Gp;function Xp(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return Yp(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Yp(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0,r=function(){};return{s:r,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){s=!0,i=e},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw i}}}}function Yp(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n{if(!zp)throw new Error("please add custom event after start recording");_p({type:qd.Custom,data:{tag:e,payload:t}})},Wp.freezePage=()=>{ap.forEach((e=>e.freeze()))},Wp.takeFullSnapshot=e=>{if(!zp)throw new Error("please take full snapshot after start recording");Up(e)},Wp.mirror=qp,(Gp=Vp||(Vp={}))[Gp.NotStarted=0]="NotStarted",Gp[Gp.Running=1]="Running",Gp[Gp.Stopped=2]="Stopped";var th=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),Qp(this,"startDate",void 0),Qp(this,"events",[]),Qp(this,"bufferSize",0),Qp(this,"stopFunction",void 0),Qp(this,"customOptions",{})}var t,n,o;return t=e,o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],(n=[{key:"setOptions",value:function(e){this.customOptions=e}},{key:"start",value:function(){this.stop(),this.startDate=Date.now();var e=this.events;try{this.stopFunction=Wp(Zp(Zp(Zp({},{inlineStylesheet:!0,blockClass:"gl-block",ignoreClass:"gl-ignore",maskTextClass:"gl-mask",dataURLOptions:{quality:.7},recordCanvas:!1,sampling:{scroll:150,mouseInteraction:{MouseUp:!1,MouseDown:!1,Click:!0,ContextMenu:!0,DblClick:!0,Focus:!0,Blur:!0,TouchStart:!0,TouchEnd:!1}},collectFonts:!1,recordCrossOriginIframes:!1}),this.customOptions),{},{emit:function(t){var n=function(e){var t=JSON.stringify(e);if(t.length>4e6){var n,o=/data:([\w\/\-\.]+);(\w+),([^)"]*)/gim,r=Xp(t.matchAll(o));try{for(r.s();!(n=r.n()).done;){var i=n.value;t="image/"===i[1].toLocaleLowerCase().slice(0,6)?t.replace(i[0],"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAQSURBVHgBAQUA+v8ABRg5/wHSAVZN1mnaAAAAAElFTkSuQmCC"):t.replace(i[0],"")}}catch(Gm){r.e(Gm)}finally{r.f()}}return{event:JSON.parse(t),size:t.length}}(t).event;e.push(n)}}))}catch(t){console.error(t)}}},{key:"stop",value:function(){this.stopFunction&&this.stopFunction(),this.startDate=void 0,this.events=[],this.bufferSize=0}},{key:"getReplayData",value:function(){return{startDate:this.startDate,events:this.events,baseUrl:window.location.origin,width:window.innerWidth,height:window.innerHeight,isMobile:w(),type:"rrweb"}}}])&&$p(t.prototype,n),o&&$p(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function nh(e){return nh="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},nh(e)}function oh(e,t){for(var n=0;nthis.startPoint.x&&(r=this.startPoint.x),t.y>this.startPoint.y&&(i=this.startPoint.y),this.path.setAttributeNS(null,"x",r),this.path.setAttributeNS(null,"y",i),this.path.setAttributeNS(null,"width",n),this.path.setAttributeNS(null,"height",o)}}},{key:"mouseDownRect",value:function(e){this.path=document.createElementNS("http://www.w3.org/2000/svg","rect"),this.path.setAttribute("fill","none"),this.path.setAttribute("stroke",this.color),this.path.setAttribute("stroke-linecap","round"),this.path.setAttribute("stroke-width",this.strokeWidthRect),this.startPoint=this.getMousePosition(e),this.appendPathToSvg(this.path)}},{key:"mouseDownPen",value:function(e){var t=this.color+"AA",n=this.strokeWidth;"blur"===this.tool&&(t="#000000",n=40),this.path=document.createElementNS("http://www.w3.org/2000/svg","path"),this.path.setAttribute("fill","none"),this.path.setAttribute("stroke",t),this.path.setAttribute("stroke-linecap","round"),this.path.setAttribute("stroke-width",n),this.buffer=[];var o=this.getMousePosition(e);this.appendToBuffer(o),this.strPath="M"+o.x+" "+o.y,this.path.setAttribute("d",this.strPath),this.appendPathToSvg(this.path)}},{key:"setTool",value:function(e){this.tool=e}},{key:"setColor",value:function(e){this.color=e}},{key:"getMousePosition",value:function(e){return e.touches&&e.touches.length>0?{x:e.touches[0].clientX,y:e.touches[0].clientY}:{x:e.clientX,y:e.clientY}}},{key:"getAveragePoint",value:function(e){var t=this.buffer.length;if(t%2==1||t>=this.bufferSize){var n,o,r=0,i=0,a=0;for(o=e;othis.bufferSize;)this.buffer.shift()}},{key:"appendPathToSvg",value:function(e){this.svgElement.appendChild(e),this.pathBuffer.push(e),this.rerender()}},{key:"removeLastAddedPathFromSvg",value:function(){this.pathBuffer.length<=0||!this.svgElement||(this.svgElement.removeChild(this.pathBuffer[this.pathBuffer.length-1]),this.pathBuffer.pop(),this.rerender())}},{key:"fadeOutToolbar",value:function(){var e=document.querySelector(".bb-capture-toolbar");e&&(e.style.opacity=0,e.style.pointerEvents="none")}},{key:"fadeInToolbar",value:function(){var e=document.querySelector(".bb-capture-toolbar");e&&(e.style.opacity=1,e.style.pointerEvents="auto")}}],n&&oh(t.prototype,n),o&&oh(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function sh(e){return sh="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},sh(e)}function lh(e,t){for(var n=0;n\n \n
'.concat(p("dismiss"),"
\n
").concat(p("rect"),'
\n
\n
\n ').concat(p("drag"),"\n
\n ").concat("capture"===this.type?'
\n '.concat(p("recorderon"),"\n ").concat(p("recorderoff"),'\n \n
\n
\n ').concat(p("mic"),'\n \n
\n
2:00
\n
\n
\n ').concat(p("pointer"),"\n
"):"",'\n
\n ').concat(p("rect"),'\n
\n
\n ').concat(p("pen"),'\n
\n
\n ').concat(p("blur"),'\n
\n
\n
\n ').concat(kh.translateText("pickAColor"),'\n
\n
\n ').concat(p("undo"),'\n ').concat(kh.translateText("undo"),"\n
\n ").concat("capture"!==this.type?'
'.concat(kh.translateText("next"),"
"):"",'\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
').concat(kh.translateText("retry"),'
\n
').concat(kh.translateText("next"),"
\n
\n
\n
\n "),document.body.appendChild(e),e.setAttribute("dir",kh.getInstance().isRTLLayout?"rtl":"ltr")}},{key:"unregisterListeners",value:function(){this.escListener&&document.removeEventListener("keydown",this.escListener),this.pageLeaveListener&&window.removeEventListener("beforeunload",this.pageLeaveListener)}},{key:"registerListeners",value:function(){var e=this;this.escListener=function(t){var n=!1,o=!1;"key"in(t=t||window.event)&&(n="Escape"===t.key,o="Enter"===t.key),n&&e.dismiss(),"screenshot"===e.type&&o&&e.showNextStep()},document.addEventListener("keydown",this.escListener),this.pageLeaveListener=function(e){e.preventDefault(),e.returnValue=""},window.addEventListener("beforeunload",this.pageLeaveListener)}},{key:"show",value:function(e){this.callback=e,this.registerListeners(),this.hideWidgetUI(),this.createEditorUI(),this.setupMousePointer(),"screenshot"===this.type?(Wm.getInstance().setGlobalDataItem("snapshotPosition",{x:window.scrollX,y:window.scrollY}),dh.disableScroll()):this.setupScreenRecording(),this.screenDrawer=new ah(this.captureScreenDrawerRerender.bind(this)),this.setupColorPicker(),this.setupToolbar()}},{key:"setupColorPicker",value:function(){for(var t=this,n=document.querySelector(".bb-capture-toolbar-item-selectedcolor"),o=document.querySelectorAll(".bb-capture-toolbar-item-color"),r=document.querySelector(".bb-capture-toolbar-item-colorpicker"),i=function(){var i=o[a],s=i.getAttribute("data-color");i.style.backgroundColor=s,i.onclick=function(){i&&(t.screenDrawer.setColor(s),r&&(r.style.display="none"),n.style.backgroundColor=i.style.backgroundColor,e.setPenColor(s))}},a=0;a0?o.classList.remove(e):o.classList.add(e))}}},{key:"captureRenderer",value:function(){if(this.screenRecorder){this.screenRecorder.file&&Wm.getInstance().setGlobalDataItem("screenRecordingData",this.screenRecorder.file);var e="bb-capture-editor-item-inactive",t=document.querySelector(".bb-capture-toolbar-item-timer"),n=document.querySelectorAll(".bb-capture-toolbar-item"),o=document.querySelector(".bb-tooltip-screen-recording"),r=document.querySelector(".bb-tooltip-audio-recording"),i=document.querySelector(".bb-capture-editor"),a="bb-capture-editor-recording",s="bb-capture-editor-notrecording";this.screenRecorder.isRecording?(i.classList.add(a),i.classList.remove(s)):(i.classList.add(s),i.classList.remove(a));var l=document.querySelector(".bb-capture-toolbar");document.querySelector(".bb-capture-preview").style.display=this.screenRecorder.file?"flex":"none",l.style.display=this.screenRecorder.file?"none":"flex";for(var c=0;c0){var t=e.filter((function(e){return new Date(e.createdAt)>new Date(Date.now()-36e5)}));t.length>2?this.notifications=t.splice(0,t.length-2):this.notifications=t,this.renderNotifications()}}catch(n){}}},{key:"setNotificationCount",value:function(e){this.unreadCount=e,this.updateTabBarNotificationCount(),a.getInstance().updateNotificationBadge(this.unreadCount)}},{key:"showNotification",value:function(e){this.notificationContainer&&e&&e.data&&(this.notifications.find((function(t){return e.outbound===t.outbound}))||(this.notifications.push(e),e.sound&&tf.ping()),this.notifications.length>2&&this.notifications.shift(),I(this.unreadNotificationsKey,this.notifications),this.renderNotifications())}},{key:"renderNotifications",value:function(){var e=this;if(this.notificationContainer){this.clearAllNotifications(!0);var t=document.createElement("div");t.onclick=function(){e.clearAllNotifications(),e.currentNewsIndex=0},t.className="gleap-notification-close",t.innerHTML=p("dismiss"),this.notificationContainer.appendChild(t);var n=this.notifications.filter((function(e){return e.data.news})).sort((function(e,t){return new Date(e.createdAt)-new Date(t.createdAt)})),o=this.notifications.filter((function(e){return!e.data.news}));if(n.length>0){var r=this.currentNewsIndex1){var m=document.createElement("div");m.className="gleap-news-pagination";var g=document.createElement("span");g.className="gleap-news-page-indicator",g.innerText="".concat(r+1," / ").concat(n.length),m.appendChild(g);var v=document.createElement("button");v.className="gleap-news-next-button",r\n
\n
\n '.concat(t.data.text,'\n
\n
\n
\n
\n
\n \n \n \n ').concat(t.data.nextStepTitle,"\n
\n
\n ")}else r.className="gleap-notification-item",r.innerHTML="\n ".concat(t.data.sender&&t.data.sender.profileImageUrl&&''),'\n
\n ').concat(t.data.sender?'
\n '.concat(t.data.sender.name,"\n
"):"",'\n
').concat(n,"
\n
");e.notificationContainer.appendChild(r)},b=0;b0||o.length>0||this.clearAllNotifications(!0)}}},{key:"openNews",value:function(e){e.data.news?Wm.openNewsArticle(e.data.news.id,!0):Wm.open()}},{key:"renderDescription",value:function(e){var t=e.data,n=t.previewText,o=t.sender;return n&&n.length>0?n:o?'\n
\n '.concat(o.profileImageUrl?'').concat(o.name,''):"","\n ").concat(o.name,"\n
\n "):""}},{key:"clearAllNotifications",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(this.notificationContainer)for(e||(this.notifications=[],this.currentNewsIndex=0,I(this.unreadNotificationsKey,this.notifications));this.notificationContainer.firstChild;)this.notificationContainer.removeChild(this.notificationContainer.firstChild)}},{key:"updateContainerStyle",value:function(){if(this.notificationContainer){var e=dt.getInstance().getFlowConfig(),t="gleap-notification-container--left",n="gleap-notification-container--no-button";this.notificationContainer.classList.remove(t),this.notificationContainer.classList.remove(n),e.feedbackButtonPosition!==a.FEEDBACK_BUTTON_CLASSIC_LEFT&&e.feedbackButtonPosition!==a.FEEDBACK_BUTTON_BOTTOM_LEFT||this.notificationContainer.classList.add(t),null===a.getInstance().buttonHidden?e.feedbackButtonPosition===a.FEEDBACK_BUTTON_NONE&&this.notificationContainer.classList.add(n):a.getInstance().buttonHidden&&this.notificationContainer.classList.add(n),this.notificationContainer.setAttribute("dir",kh.getInstance().isRTLLayout?"rtl":"ltr")}}}],o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],n&&Ph(t.prototype,n),o&&Ph(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Fh(e){return Fh="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Fh(e)}function Bh(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function _h(e){for(var t=1;t'),document.body.appendChild(t),this.bannerContainer=t}},{key:"sendMessage",value:function(e){try{var t=document.querySelector(".gleap-b-frame");t&&t.contentWindow&&t.contentWindow.postMessage(JSON.stringify(_h(_h({},e),{},{type:"banner"})),"*")}catch(n){}}},{key:"showBanner",value:function(e){this.injectBannerUI(e)}}])&&Uh(t.prototype,n),o&&Uh(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Wh(e){return Wh="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Wh(e)}function Vh(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Gh(e){for(var t=1;t\n
\n \n
\n '),document.body.appendChild(n),this.modalContainer=n,this.modalBackdropClickListener=this.modalContainer.querySelector(".gleap-modal-backdrop").addEventListener("click",(function(){var e,n;(null===(e=null===(n=t.modalData)||void 0===n?void 0:n.showCloseButton)||void 0===e||e)&&t.hideModal()})),document.body.classList.add("gleap-modal-open")}},{key:"_postMessage",value:function(e){try{var t=this.modalContainer.querySelector(".gleap-modal-frame");null!=t&&t.contentWindow&&t.contentWindow.postMessage(JSON.stringify(Gh(Gh({},e),{},{type:"modal"})),this.modalUrl)}catch(Gm){}}},{key:"showModal",value:function(e){e&&e.config&&this._injectModalUI(e.config)}},{key:"hideModal",value:function(){this.modalContainer&&(this.modalBackdropClickListener&&this.modalContainer.querySelector(".gleap-modal-backdrop").removeEventListener("click",this.modalBackdropClickListener),document.body.removeChild(this.modalContainer),this.modalContainer=null,document.body.classList.remove("gleap-modal-open"))}}])&&Xh(t.prototype,n),o&&Xh(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Zh(e){return Zh="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Zh(e)}function $h(e,t){for(var n=0;n=a-i;++s)n[i]=t[s],uf(e,t,n,s+1,r,i+1,a);else e.push(n.slice(0,i).join(""))}function df(e){return function(e){if(Array.isArray(e))return pf(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return pf(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return pf(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function pf(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){s=!0,i=e},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw i}}}}function bf(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n1&&void 0!==arguments[1]?arguments[1]:["id","class","length"];return df(e.attributes).reduce((function(e,n){return t.indexOf(n.nodeName)>-1||e.push("[".concat(n.nodeName,'="').concat(n.value,'"]')),e}),[])}(e,n)},Class:cf,ID:lf};return t.reduce((function(t,n){return t[n]=o[n](e),t}),{})}function kf(e,t){try{var n=e.parentNode.querySelectorAll(t);return 1===n.length&&n[0]===e}catch(o){return!1}}function xf(e,t){return t.find(kf.bind(null,e))}function Sf(e,t,n){var o=function(e,t){for(var n=[],o=e.length,r=[],i=1;i<=t;++i)uf(n,e,r,0,o-1,0,i);return n}(t,3),r=xf(e,o);return Boolean(r)||Boolean(n)&&(r=xf(e,o=o.map((function(e){return n+e}))),Boolean(r))?r:null}function Cf(e,t,n,o){var r,i=wf(e,t,n);o&&o instanceof RegExp&&(i.ID=o.test(i.ID)?null:i.ID,i.Class=i.Class.filter((function(e){return!o.test(e)})));var a,s=yf(t);try{for(s.s();!(a=s.n()).done;){var l=a.value,c=i.ID,u=i.Tag,d=i.Class,p=i.Attributes,h=i.NthChild;switch(l){case"ID":if(Boolean(c)&&kf(e,c))return c;break;case"Tag":if(Boolean(u)&&kf(e,u))return u;break;case"Class":if(Boolean(d)&&d.length&&(r=Sf(e,d,u)))return r;break;case"Attributes":if(Boolean(p)&&p.length&&(r=Sf(e,p,u)))return r;break;case"NthChild":if(Boolean(h))return h}}}catch(Gm){s.e(Gm)}finally{s.f()}return"*"}function If(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=n.selectorTypes,r=void 0===o?["ID","Class","Tag","NthChild"]:o,i=n.attributesToIgnore,a=void 0===i?["id","class","length"]:i,s=n.excludeRegex,l=void 0===s?null:s,c=[],u=function(e){for(var t=[],n=e;ff(n);)t.push(n),n=n.parentNode;return t}(e),d=yf(u);try{for(d.s();!(t=d.n()).done;){var p=Cf(t.value,r,a,l);Boolean(p)&&c.push(p)}}catch(Gm){d.e(Gm)}finally{d.f()}for(var h=[],f=0,m=c;f ");if(vf(e,v))return v}return null}function Ef(e){return Ef="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ef(e)}function Tf(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Of(e,t){for(var n=0;n0&&void 0!==arguments[0]&&arguments[0])||o(t.gleapCollapseUI,e)&&o(t.gleapFrameContainer,n))&&(t.gleapCollapseUI&&t.gleapCollapseUI.classList.toggle(e),t.gleapFrameContainer&&t.gleapFrameContainer.classList.toggle(n))})),Wf(this,"injectCollapseUI",(function(){if(!t.injectedCollapseUI){t.injectedCollapseUI=!0;var e=document.createElement("div");e.className="gleap-admin-collapse-ui",e.innerHTML='
\n '.concat(p("arrowdown"),"\n
"),document.body.appendChild(e),t.gleapCollapseUI=e,e.addEventListener("click",(function(e){e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t.toggleCollapseUI()}))}})),Wf(this,"injectFrame",(function(){var e;if(!t.injectedFrame){t.injectedFrame=!0;var n=document.createElement("div");n.className="gleap-admin-frame-container",n.innerHTML=''),document.body.appendChild(n),t.gleapFrameContainer=n,t.gleapFrame=document.querySelector(".gleap-admin-frame")}}))}var t,n,o;return t=e,o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],(n=[{key:"logCurrentPage",value:function(){var e=window.location.href;e&&e!==this.lastUrl&&(this.lastUrl=e,this.sendMessageToTourBuilder({name:"page-changed",data:{page:e}}))}},{key:"startPageListener",value:function(){var e=this;setInterval((function(){e.logCurrentPage()}),1e3)}},{key:"initAdminHelper",value:function(){var e=this;wm.getInstance().disable(),e.adminHelper=new _f;try{e.adminHelper.onElementPicked=function(t){e.toggleCollapseUI(!0),e.sendMessageToTourBuilder({name:"element-picked",data:{selector:t}})}}catch(t){console.log(t)}e.injectFrame(),e.injectCollapseUI(),e.setFrameHeight("loading")}},{key:"setFrameHeight",value:function(e){if(this.gleapFrameContainer){var t="";t="picker"===e||"navigate"===e?"65px":"editor"===e?"100vh":"0px",this.gleapFrameContainer.style.height=t}}},{key:"start",value:function(){var e=this;if("undefined"!=typeof window&&!window.gleapAdminDisabled){var t=this;window.addEventListener("message",(function(n){if("https://app.gleap.io"===n.origin)try{var o=JSON.parse(n.data);if("admin"===o.type&&("load"===o.name&&(t.configData=o.data,t.initAdminHelper()),"smartlink-search-result"===o.name&&e.sendMessageToTourBuilder({name:"smartlink-search-result",data:o.data}),"translate-complete"===o.name&&e.sendMessageToTourBuilder({name:"translate-complete",data:o.data})),"tourbuilder"===o.type){var r;if("loaddata"===o.name&&e.sendMessageToTourBuilder({name:"data",data:zf(zf({},t.configData),{},{currentPage:window.location.href})}),"highlight-element"===o.name&&(document.querySelectorAll(".gleap-admin-highlight").forEach((function(e){e.classList.remove("gleap-admin-highlight")})),null!=o&&null!==(r=o.data)&&void 0!==r&&r.selector)){var i,a=document.querySelector(null==o||null===(i=o.data)||void 0===i?void 0:i.selector);a&&a.classList.add("gleap-admin-highlight")}if("smartlink-search"===o.name&&e.sendMessage({name:"smartlink-search",data:o.data}),"product-tour-started"===o.name&&e.sendMessage({name:"product-tour-started",data:o.data}),"translate"===o.name&&e.sendMessage({name:"translate",data:o.data}),"save"===o.name&&e.sendMessage({name:"save",data:o.data}),"update-steps"===o.name&&e.sendMessage({name:"update-steps",data:o.data}),"click"===o.name)try{document.querySelector(o.data.selector).click()}catch(s){console.log(s)}"status-changed"===o.name&&(t.status=o.data,e.setFrameHeight(t.status),t.adminHelper.stopPicker(),"picker"===t.status&&t.adminHelper.startPicker())}}catch(l){}})),this.sendMessage({name:"init"}),this.startPageListener()}}},{key:"sendMessage",value:function(e){try{window&&window.opener&&window.opener.postMessage(JSON.stringify(zf(zf({},e),{},{type:"admin"})),"*")}catch(t){}}},{key:"sendMessageToTourBuilder",value:function(e){try{this.gleapFrame&&this.gleapFrame.contentWindow&&this.gleapFrame.contentWindow.postMessage(JSON.stringify(zf(zf({},e),{},{type:"tourbuilder"})),"*")}catch(t){}}}])&&qf(t.prototype,n),o&&qf(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Xf(e){return Xf="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Xf(e)}function Yf(e){return function(e){if(Array.isArray(e))return Jf(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return Jf(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Jf(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Jf(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n0&&void 0!==arguments[0]?arguments[0]:{})}function n(t){return t?e[t]:e}function o(e,t,n,o){return(e/=o/2)<1?n/2*e*e+t:-n/2*(--e*(e-2)-1)+t}function r(e){var t='a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type="text"]:not([disabled]), input[type="radio"]:not([disabled]), input[type="checkbox"]:not([disabled]), select:not([disabled])';return e.flatMap((function(e){var n=e.matches(t),o=Array.from(e.querySelectorAll(t));return[].concat(Yf(n?[e]:[]),o)})).filter((function(e){return"none"!==getComputedStyle(e).pointerEvents&&function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)}(e)}))}function i(e){if(e&&!function(e){var t=e.getBoundingClientRect();return t.top>=0&&t.left>=0&&t.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&t.right<=(window.innerWidth||document.documentElement.clientWidth)}(e)){var t=n("smoothScroll");e.scrollIntoView({behavior:!t||a(e)?"auto":"smooth",inline:"center",block:"center"})}}function a(e){if(e&&e.parentElement){var t=e.parentElement;return t.scrollHeight>t.clientHeight}}var s={};function l(e,t){s[e]=t}function c(e){return e?s[e]:s}function u(){s={}}var d={};function p(e,t){d[e]=t}function h(e){var t;null==(t=d[e])||t.call(d)}function f(e){if(e){var t=e.getBoundingClientRect(),n={x:t.x,y:t.y,width:t.width,height:t.height};l("__activeStagePosition",n),g(n)}}function m(e){var t=function(e){var t=window.innerWidth,o=window.innerHeight,r=document.createElementNS("http://www.w3.org/2000/svg","svg");r.classList.add("gleap-tour-overlay","gleap-tour-overlay-animated"),r.setAttribute("viewBox","0 0 ".concat(t," ").concat(o)),r.setAttribute("xmlSpace","preserve"),r.setAttribute("xmlnsXlink","http://www.w3.org/1999/xlink"),r.setAttribute("version","1.1"),r.setAttribute("preserveAspectRatio","xMinYMin slice"),r.style.fillRule="evenodd",r.style.clipRule="evenodd",r.style.strokeLinejoin="round",r.style.strokeMiterlimit="2",r.style.zIndex="10000",r.style.position="fixed",r.style.top="0",r.style.left="0",r.style.width="100%",r.style.height="100%";var i=document.createElementNS("http://www.w3.org/2000/svg","path");return i.setAttribute("d",v(e)),i.style.fill=n("overlayColor")||"rgb(0,0,0)",i.style.opacity="".concat(n("overlayOpacity")),i.style.pointerEvents="auto",i.style.cursor="auto",r.appendChild(i),r}(e);document.body.appendChild(t),S(t,(function(e){"path"===e.target.tagName&&h("overlayClick")})),l("__overlaySvg",t)}function g(e){var t=c("__overlaySvg");if(t){var n=t.firstElementChild;if("path"!==(null==n?void 0:n.tagName))throw new Error("no path element found in stage svg");n.setAttribute("d",v(e))}else m(e)}function v(e){var t=window.innerWidth,o=window.innerHeight,r=n("stagePadding")||0,i=n("stageRadius")||0,a=e.width+2*r,s=e.height+2*r,l=Math.min(i,a/2,s/2),c=Math.floor(Math.max(l,0)),u=e.x-r+c,d=e.y-r,p=a-2*c,h=s-2*c;return"M".concat(t,",0L0,0L0,").concat(o,"L").concat(t,",").concat(o,"L").concat(t,",0Z\n M").concat(u,",").concat(d," h").concat(p," a").concat(c,",").concat(c," 0 0 1 ").concat(c,",").concat(c," v").concat(h," a").concat(c,",").concat(c," 0 0 1 -").concat(c,",").concat(c," h-").concat(p," a").concat(c,",").concat(c," 0 0 1 -").concat(c,",-").concat(c," v-").concat(h," a").concat(c,",").concat(c," 0 0 1 ").concat(c,",-").concat(c," z")}function y(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:5e3,r=e.element,a=r;if("string"==typeof a)try{a=document.querySelector(r)}catch(u){var s=r.replace(/(#[^#\s]+)/g,(function(e){return e.replace(/:/g,"\\:")}));a=document.querySelector(s)}if(r&&!a&&t>=0)setTimeout((function(){C(),y(e,t-100)}),100);else{if(!a&&("INPUT"===e.mode||"CLICK"===e.mode))return n("onElementNotFound")(e);a||(a=function(){var e=document.getElementById("gleap-tour-dummy-element");if(e)return e;var t=document.createElement("div");return t.id="gleap-tour-dummy-element",t.style.width="0",t.style.height="0",t.style.pointerEvents="none",t.style.opacity="0",t.style.position="fixed",t.style.top="50%",t.style.left="50%",document.body.appendChild(t),t}()),function(e,t){var r,a,s=400,u=Date.now(),d=c("__activeStep"),p=c("__activeElement")||e,h=!p||p===e,m="gleap-tour-dummy-element"===e.id,v="gleap-tour-dummy-element"===p.id,y=n("animate"),b=t.onHighlightStarted||n("onHighlightStarted"),w=(null==t?void 0:t.onHighlighted)||n("onHighlighted"),k=(null==d?void 0:d.onDeselected)||n("onDeselected"),x=n(),S=c();!h&&k&&k(v?void 0:p,d,{config:x,state:S});b&&b(m?void 0:e,t,{config:x,state:S});var E=!h&&y,T=!1;C(),l("previousStep",d),l("previousElement",p),l("activeStep",t),l("activeElement",e);var O=function r(){if(c("__transitionCallback")===r){var i=Date.now()-u,a=s-i<=s/2;t.popover&&a&&!T&&E&&(I(e,t),T=!0),n("animate")&&i0&&P[0].focus()}function E(){var e=c("popover");if(null==e?void 0:e.wrapper){var t=e.wrapper.getBoundingClientRect(),o=n("stagePadding")||0,r=n("popoverOffset")||0;return{width:t.width+o+r,height:t.height+o+r,realWidth:t.width,realHeight:t.height}}}function T(e,t){var n=t.elementDimensions,o=t.popoverDimensions,r=t.popoverPadding,i=t.popoverArrowDimensions;return"start"===e?Math.max(Math.min(n.top-r,window.innerHeight-o.realHeight-i.width),i.width):"end"===e?Math.max(Math.min(n.top-(null==o?void 0:o.realHeight)+n.height+r,window.innerHeight-(null==o?void 0:o.realHeight)-i.width),i.width):"center"===e?Math.max(Math.min(n.top+n.height/2-(null==o?void 0:o.realHeight)/2,window.innerHeight-(null==o?void 0:o.realHeight)-i.width),i.width):0}function O(e,t){var n=t.elementDimensions,o=t.popoverDimensions,r=t.popoverPadding,i=t.popoverArrowDimensions;return"start"===e?Math.max(Math.min(n.left-r,window.innerWidth-o.realWidth-i.width),i.width):"end"===e?Math.max(Math.min(n.left-(null==o?void 0:o.realWidth)+n.width+r,window.innerWidth-(null==o?void 0:o.realWidth)-i.width),i.width):"center"===e?Math.max(Math.min(n.left+n.width/2-(null==o?void 0:o.realWidth)/2,window.innerWidth-(null==o?void 0:o.realWidth)-i.width),i.width):0}function L(e,t){var o=c("popover");if(o){var r=(null==t?void 0:t.popover)||{},i=r.align,a=void 0===i?"start":i,s=r.side,l=void 0===s?"left":s,u=a,d="gleap-tour-dummy-element"===e.id?"over":l,p=n("stagePadding")||0,h=E(),f=o.arrow.getBoundingClientRect(),m=e.getBoundingClientRect(),g=m.top-h.height,v=g>=0,y=window.innerHeight-(m.bottom+h.height),b=y>=0,w=m.left-h.width,k=w>=0,x=window.innerWidth-(m.right+h.width),S=x>=0,C=!(v||b||k||S),I=d;if("top"===d&&v?S=k=b=!1:"bottom"===d&&b?S=k=v=!1:"left"===d&&k?S=v=b=!1:"right"===d&&S&&(k=v=b=!1),"over"===d){var L=window.innerWidth/2-h.realWidth/2,A=window.innerHeight/2-h.realHeight/2;o.wrapper.style.left="".concat(L,"px"),o.wrapper.style.right="auto",o.wrapper.style.top="".concat(A,"px"),o.wrapper.style.bottom="auto"}else if(C){var M=window.innerWidth/2-(null==h?void 0:h.realWidth)/2;o.wrapper.style.left="".concat(M,"px"),o.wrapper.style.right="auto",o.wrapper.style.bottom="".concat(10,"px"),o.wrapper.style.top="auto"}else if(k){var R=Math.min(w,window.innerWidth-(null==h?void 0:h.realWidth)-f.width),P=T(u,{elementDimensions:m,popoverDimensions:h,popoverPadding:p,popoverArrowDimensions:f});o.wrapper.style.left="".concat(R,"px"),o.wrapper.style.top="".concat(P,"px"),o.wrapper.style.bottom="auto",o.wrapper.style.right="auto",I="left"}else if(S){var D=Math.min(x,window.innerWidth-(null==h?void 0:h.realWidth)-f.width),N=T(u,{elementDimensions:m,popoverDimensions:h,popoverPadding:p,popoverArrowDimensions:f});o.wrapper.style.right="".concat(D,"px"),o.wrapper.style.top="".concat(N,"px"),o.wrapper.style.bottom="auto",o.wrapper.style.left="auto",I="right"}else if(v){var j=Math.min(g,window.innerHeight-h.realHeight-f.width),F=O(u,{elementDimensions:m,popoverDimensions:h,popoverPadding:p,popoverArrowDimensions:f});o.wrapper.style.top="".concat(j,"px"),o.wrapper.style.left="".concat(F,"px"),o.wrapper.style.bottom="auto",o.wrapper.style.right="auto",I="top"}else if(b){var B=Math.min(y,window.innerHeight-(null==h?void 0:h.realHeight)-f.width),_=O(u,{elementDimensions:m,popoverDimensions:h,popoverPadding:p,popoverArrowDimensions:f});o.wrapper.style.left="".concat(_,"px"),o.wrapper.style.bottom="".concat(B,"px"),o.wrapper.style.top="auto",o.wrapper.style.right="auto",I="bottom"}C?o.arrow.classList.add("gleap-tour-popover-arrow-none"):function(e,t,n){var o=c("popover");if(!o)return;var r=n.getBoundingClientRect(),i=E(),a=o.arrow,s=i.width,l=window.innerWidth,u=r.width,d=r.left,p=i.height,h=window.innerHeight,f=r.top,m=r.height;a.className="gleap-tour-popover-arrow";var g=t,v=e;"top"===t?(d+u<=0?(g="right",v="end"):d+u-s<=0&&(g="top",v="start"),d>=l?(g="left",v="end"):d+s>=l&&(g="top",v="end")):"bottom"===t?(d+u<=0?(g="right",v="start"):d+u-s<=0&&(g="bottom",v="start"),d>=l?(g="left",v="start"):d+s>=l&&(g="bottom",v="end")):"left"===t?(f+m<=0?(g="bottom",v="end"):f+m-p<=0&&(g="left",v="start"),f>=h?(g="top",v="end"):f+p>=h&&(g="left",v="end")):"right"===t&&(f+m<=0?(g="bottom",v="start"):f+m-p<=0&&(g="right",v="start"),f>=h?(g="top",v="start"):f+p>=h&&(g="right",v="end"));g?(a.classList.add("gleap-tour-popover-arrow-side-".concat(g)),a.classList.add("gleap-tour-popover-arrow-align-".concat(v))):a.classList.add("gleap-tour-popover-arrow-none")}(u,I,e)}}return function(){function e(){n("allowClose")&&f()}function o(){var e=c("activeIndex"),t=n("steps")||[];if(void 0!==e){var o=e+1;t[o]?h(o):f()}}function r(){var e=c("activeIndex"),t=n("steps")||[];if(void 0!==e){var o=e-1;t[o]?h(o):f()}}function i(){var e;if(!c("__transitionCallback")){var t=c("activeIndex"),o=c("__activeStep"),i=c("__activeElement");if("CLICK"!==o.mode)if(void 0!==t&&void 0!==o)if(void 0!==c("activeIndex")){var a=(null==(e=o.popover)?void 0:e.onPrevClick)||n("onPrevClick");if(a)return a(i,o,{config:n(),state:c()});r()}}}function a(){var e;if(!c("__transitionCallback")){var t=c("activeIndex"),r=c("__activeStep"),i=c("__activeElement");if("CLICK"!==r.mode&&void 0!==t&&void 0!==r){var a=(null==(e=r.popover)?void 0:e.onNextClick)||n("onNextClick");if(a)return a(i,r,{config:n(),state:c()});o()}}}function s(){c("isInitialized")||(l("isInitialized",!0),document.body.classList.add("gleap-tour-active",n("animate")?"gleap-tour-fade":"gleap-tour-simple"),window.addEventListener("keyup",x,!1),window.addEventListener("keydown",k,!1),window.addEventListener("resize",w),window.addEventListener("scroll",w),p("overlayClick",e),p("escapePress",e),p("arrowLeftPress",i),p("arrowRightPress",a))}function h(){var e,t,o,r,i,a,s,c,u=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,d=n("steps");if(!d)return console.error("No steps to drive through"),void f();if(d[u]){l("__activeOnDestroyed",document.activeElement),l("activeIndex",u);var p=d[u],m=d[u+1],g=d[u-1],v=(null==(e=p.popover)?void 0:e.doneBtnText)||n("doneBtnText")||"Done",b=n("allowClose"),w=void 0!==(null==(t=p.popover)?void 0:t.showProgress)?null==(o=p.popover)?void 0:o.showProgress:n("showProgress"),k=((null==(r=p.popover)?void 0:r.progressText)||n("progressText")||"{{current}} of {{total}}").replace("{{current}}","".concat(u+1)).replace("{{total}}","".concat(d.length)),x=(null==(i=p.popover)?void 0:i.showButtons)||n("showButtons"),S=["next","previous"].concat(Yf(b?["close"]:[])).filter((function(e){return!(null==x?void 0:x.length)||x.includes(e)})),C=(null==(a=p.popover)?void 0:a.onNextClick)||n("onNextClick"),I=(null==(s=p.popover)?void 0:s.onPrevClick)||n("onPrevClick"),E=(null==(c=p.popover)?void 0:c.onCloseClick)||n("onCloseClick");y(Zf(Zf({},p),{},{popover:Zf({showButtons:S,nextBtnText:m?void 0:v,disableButtons:Yf(g?[]:["previous"]),showProgress:w,progressText:k,onNextClick:C||function(){m?h(u+1):f()},onPrevClick:I||function(){h(u-1)},onCloseClick:E||function(){f()}},(null==p?void 0:p.popover)||{})}))}else f()}function f(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=c("__activeElement"),o=c("__activeStep"),r=c("__activeOnDestroyed"),i=n("onDestroyStarted");if(e&&i){i(!t||"gleap-tour-dummy-element"===(null==t?void 0:t.id)?void 0:t,o,{config:n(),state:c()})}else{var a,s=(null==o?void 0:o.onDeselected)||n("onDeselected"),l=n("onDestroyed");if(document.body.classList.remove("gleap-tour-active","gleap-tour-fade","gleap-tour-simple"),window.removeEventListener("keyup",x),window.removeEventListener("resize",w),window.removeEventListener("scroll",w),function(){var e,t=c("popover");t&&(null==(e=t.wrapper.parentElement)||e.removeChild(t.wrapper))}(),function(){var e;null==(e=document.getElementById("gleap-tour-dummy-element"))||e.remove(),document.querySelectorAll(".gleap-tour-active-element").forEach((function(e){e.classList.remove("gleap-tour-active-element","gleap-tour-no-interaction"),e.removeAttribute("aria-haspopup"),e.removeAttribute("aria-expanded"),e.removeAttribute("aria-controls")}))}(),(a=c("__overlaySvg"))&&a.remove(),d={},u(),t&&o){var p="gleap-tour-dummy-element"===t.id;s&&s(p?void 0:t,o,{config:n(),state:c()}),l&&l(p?void 0:t,o,{config:n(),state:c()})}r&&r.focus()}}return t(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),{isActive:function(){return c("isInitialized")||!1},refresh:w,drive:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;s(),h(e)},setConfig:t,setSteps:function(e){u(),t(Zf(Zf({},n()),{},{steps:e}))},getConfig:n,getState:c,getActiveIndex:function(){return c("activeIndex")},isFirstStep:function(){return 0===c("activeIndex")},isLastStep:function(){var e=n("steps")||[],t=c("activeIndex");return void 0!==t&&t===e.length-1},getActiveStep:function(){return c("activeStep")},getActiveElement:function(){return c("activeElement")},getPreviousElement:function(){return c("previousElement")},getPreviousStep:function(){return c("previousStep")},moveNext:o,movePrevious:r,moveTo:function(e){(n("steps")||[])[e]?h(e):f()},hasNextStep:function(){var e=n("steps")||[],t=c("activeIndex");return void 0!==t&&e[t+1]},hasPreviousStep:function(){var e=n("steps")||[],t=c("activeIndex");return void 0!==t&&e[t-1]},highlight:function(e){s(),y(Zf(Zf({},e),{},{popover:e.popover?Zf({showButtons:[],showProgress:!1,progressText:""},e.popover):void 0}))},destroy:function(){f(!1)}}}}();const em=Qf;function tm(e){return tm="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},tm(e)}function nm(){nm=function(){return t};var e,t={},n=Object.prototype,o=n.hasOwnProperty,r=Object.defineProperty||function(e,t,n){e[t]=n.value},i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",s=i.asyncIterator||"@@asyncIterator",l=i.toStringTag||"@@toStringTag";function c(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,n){return e[t]=n}}function u(e,t,n,o){var i=t&&t.prototype instanceof v?t:v,a=Object.create(i.prototype),s=new A(o||[]);return r(a,"_invoke",{value:E(e,n,s)}),a}function d(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=u;var p="suspendedStart",h="suspendedYield",f="executing",m="completed",g={};function v(){}function y(){}function b(){}var w={};c(w,a,(function(){return this}));var k=Object.getPrototypeOf,x=k&&k(k(M([])));x&&x!==n&&o.call(x,a)&&(w=x);var S=b.prototype=v.prototype=Object.create(w);function C(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function I(e,t){function n(r,i,a,s){var l=d(e[r],e,i);if("throw"!==l.type){var c=l.arg,u=c.value;return u&&"object"==tm(u)&&o.call(u,"__await")?t.resolve(u.__await).then((function(e){n("next",e,a,s)}),(function(e){n("throw",e,a,s)})):t.resolve(u).then((function(e){c.value=e,a(c)}),(function(e){return n("throw",e,a,s)}))}s(l.arg)}var i;r(this,"_invoke",{value:function(e,o){function r(){return new t((function(t,r){n(e,o,t,r)}))}return i=i?i.then(r,r):r()}})}function E(t,n,o){var r=p;return function(i,a){if(r===f)throw new Error("Generator is already running");if(r===m){if("throw"===i)throw a;return{value:e,done:!0}}for(o.method=i,o.arg=a;;){var s=o.delegate;if(s){var l=T(s,o);if(l){if(l===g)continue;return l}}if("next"===o.method)o.sent=o._sent=o.arg;else if("throw"===o.method){if(r===p)throw r=m,o.arg;o.dispatchException(o.arg)}else"return"===o.method&&o.abrupt("return",o.arg);r=f;var c=d(t,n,o);if("normal"===c.type){if(r=o.done?m:h,c.arg===g)continue;return{value:c.arg,done:o.done}}"throw"===c.type&&(r=m,o.method="throw",o.arg=c.arg)}}}function T(t,n){var o=n.method,r=t.iterator[o];if(r===e)return n.delegate=null,"throw"===o&&t.iterator.return&&(n.method="return",n.arg=e,T(t,n),"throw"===n.method)||"return"!==o&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+o+"' method")),g;var i=d(r,t.iterator,n.arg);if("throw"===i.type)return n.method="throw",n.arg=i.arg,n.delegate=null,g;var a=i.arg;return a?a.done?(n[t.resultName]=a.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,g):a:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,g)}function O(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function L(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function A(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(O,this),this.reset(!0)}function M(t){if(t||""===t){var n=t[a];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,i=function n(){for(;++r=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var l=o.call(a,"catchLoc"),c=o.call(a,"finallyLoc");if(l&&c){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&o.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),L(n),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var o=n.completion;if("throw"===o.type){var r=o.arg;L(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,o){return this.delegate={iterator:M(t),resultName:n,nextLoc:o},"next"===this.method&&(this.arg=e),g}},t}function om(e,t){for(var n=0;n=0&&t.productTourData&&t.productTourData.steps){var e=t.productTourData.steps[t.currentActiveIndex];e&&e.selector&&""!==e.selector&&t.updatePointerPosition(document.querySelector(e.selector),e)}})))}var t,n,o;return t=e,n=[{key:"disable",value:function(){this.disabled=!0,this.cleanup()}},{key:"startWithConfig",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;"undefined"!=typeof window&&(this.productTourId||this.disabled||(this.productTourId=e,this.productTourData=t,this.currentActiveIndex=0,this.onCompleteCallback=n,this.start()))}},{key:"storeUncompletedTour",value:function(){if("undefined"!=typeof window)if(this.productTourId&&this.productTourData)try{var e=JSON.parse(JSON.stringify({tourData:this.productTourData,tourId:this.productTourId}));e.tourData.steps=e.tourData.steps.slice(this.currentActiveIndex||0,e.tourData.steps.length),localStorage.setItem(sm,JSON.stringify(e))}catch(t){}else localStorage.removeItem(sm)}},{key:"attachScrollListeners",value:function(e,t){var n=this;if("undefined"!=typeof window&&e){var o=function(e){if("undefined"!=typeof window){for(var t=[],n=e.parentElement;n;){var o=window.getComputedStyle(n);("auto"===o.overflowY||"scroll"===o.overflowY)&&n.scrollHeight>n.clientHeight&&t.push(n),n=n.parentElement}return t}}(e);o.push(window),o.forEach((function(o){var r=function(){clearTimeout(n._scrollDebounceTimer),n._scrollDebounceTimer=setTimeout((function(){n.updatePointerPosition(e,t)}),150)};o.addEventListener("scroll",r,{passive:!0}),n._scrollListeners.push({el:o,handler:r})}))}}},{key:"removeScrollListeners",value:function(){"undefined"!=typeof window&&(this._scrollListeners&&this._scrollListeners.length>0&&(this._scrollListeners.forEach((function(e){var t=e.el,n=e.handler;t.removeEventListener("scroll",n)})),this._scrollListeners=[]),this._scrollDebounceTimer&&(clearTimeout(this._scrollDebounceTimer),this._scrollDebounceTimer=null))}},{key:"updatePointerPosition",value:function(e,t){var n,o=this;if("undefined"!=typeof window)try{var r=this._pointerContainer||document.getElementById(lm);if(!r)return;if(!e)return r.style.position="fixed",r.style.left="50%",r.style.top="50%",r.style.transform="translate(-50%, -50%)",function(e){if("undefined"!=typeof window){var t=e-window.innerHeight/2;window.scrollTo({top:t,behavior:"smooth"})}}(window.innerHeight/2),this.removeScrollListeners(),this._currentAnchor=null,void(this._currentStep=null);n=e,"undefined"!=typeof window&&n&&n.scrollIntoView({behavior:"smooth",block:"center",inline:"center"});var i=0;!function n(){if(function(e){if("undefined"!=typeof window){var t=e.getBoundingClientRect();return t.top>=0&&t.left>=0&&t.bottom<=window.innerHeight&&t.right<=window.innerWidth}}(e)||i>=20){var a=e.getBoundingClientRect(),s=a.left+a.width/2,l=a.top+a.height/2+10;r.style.position="fixed",r.style.left="".concat(s,"px"),r.style.top="".concat(l,"px"),r.style.transform="translate(-50%, -50%)";var c=350;c>window.innerWidth-40&&(c=window.innerWidth-40),s+c>window.innerWidth-20?r.classList.add("copilot-pointer-container-right"):r.classList.remove("copilot-pointer-container-right"),o._currentAnchor===e&&o._currentStep===t||(o.removeScrollListeners(),o._currentAnchor=e,o._currentStep=t,o.attachScrollListeners(e,t))}else i++,setTimeout(n,100)}()}catch(a){}}},{key:"cleanup",value:function(){var e=this;"undefined"!=typeof window&&(document.body.classList.add("gl-copilot-fade-out"),this.currentAudio&&this.currentAudio.pause(),setTimeout((function(){if(e._pointerContainer)e._pointerContainer.remove(),e._pointerContainer=null;else{var t=document.getElementById(lm);t&&t.remove()}var n=document.getElementById(um);n&&n.remove();var o=document.getElementById(cm);o&&o.remove(),document.body.classList.remove("gl-copilot-fade-out")}),800),this.productTourId=void 0,this.productTourData=void 0,this.removeScrollListeners())}},{key:"toggleAudio",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.audioMuted=e,this.currentAudio&&(this.currentAudio.muted=this.audioMuted),document.querySelector(".".concat(um,"-mute")).innerHTML=p(this.audioMuted?"unmute":"mute")}},{key:"setupCopilotTour",value:function(){var e,t,n,o,r,i,a=this;if("undefined"!=typeof window){var s,l,c=null!==(e=null===(t=dt.getInstance().flowConfig)||void 0===t?void 0:t.color)&&void 0!==e?e:"#485BFF",u=d(c),h=document.getElementById(cm);h||((h=document.createElement("style")).id=cm,h.type="text/css",h.textContent="\n #".concat(lm," {\n position: absolute;\n top: 0;\n left: 0;\n display: flex;\n align-items: flex-start;\n pointer-events: none;\n z-index: 2147483610;\n transition: all 0.5s ease;\n }\n .").concat(lm,"-clickmode {\n cursor: pointer;\n pointer-events: all !important;\n }\n .").concat(lm,"-clickmode #copilot-info-bubble-content {\n display: flex !important;\n }\n .").concat(lm,"-clickmode svg {\n display: none !important;\n }\n #").concat(lm," svg {\n width: 20px;\n height: auto;\n fill: none;\n }\n #copilot-info-bubble {\n position: relative;\n }\n #copilot-info-bubble-content-container {\n position: absolute;\n top: 0px;\n left: 0px;\n min-width: min(300px, 80vw);\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n }\n .").concat(lm,"-right #copilot-info-bubble-content-container {\n left: auto !important;\n right: 0px !important;\n align-items: flex-end;\n }\n .").concat(lm,"-right .copilot-info-bubble-content {\n margin-right: 5px;\n }\n .").concat(lm,"-right svg {\n transform: scaleX(-1);\n }\n #copilot-info-bubble-content svg {\n width: 16px;\n height: 16px;\n display: inline-block !important;\n margin-left: 5px;\n }\n #copilot-info-bubble-content {\n margin-top: 18px;\n margin-left: 5px;\n padding: 10px 15px;\n border-radius: 20px;\n background-color: black;\n color: white;\n font-family: Arial, sans-serif;\n font-size: 14px;\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);\n max-width: 100%;\n white-space: normal;\n overflow-wrap: break-word;\n word-break: normal;\n hyphens: none;\n }\n .").concat(lm,"-right #copilot-info-bubble-content {\n margin-top: 30px;\n margin-left: 0px;\n margin-right: 5px;\n }\n .click-wave {\n position: absolute;\n width: 34px;\n height: 34px;\n border-radius: 50%;\n background-color: rgba(0, 0, 0, 0.5);\n pointer-events: none;\n z-index: 2147483611;\n animation: click-wave-animation 0.8s ease forwards;\n }\n @keyframes click-wave-animation {\n 0% {\n transform: scale(0.2);\n opacity: 1;\n }\n 100% {\n transform: scale(2);\n opacity: 0;\n }\n }\n @keyframes slideInFromTop {\n 0% {\n transform: translateY(-100%);\n opacity: 0;\n }\n 100% {\n transform: translateY(0);\n opacity: 1;\n }\n }\n .").concat(um," {\n position: fixed;\n top: 20px;\n right: 20px;\n z-index: 2147483610;\n background: #fff;\n padding: 6px;\n border-radius: 10px;\n box-shadow: 0 0 20px 0 #C294F2;\n display: flex;\n align-items: center;\n gap: 8px;\n border: 1px solid rgba(192, 146, 242, 0.5);\n animation: slideInFromTop 0.5s ease-out forwards;\n }\n .").concat(um," span {\n font-size: 13px;\n color: #000;\n font-family: sans-serif;\n }\n .").concat(um,"-avatar {\n width: 24px;\n height: 24px;\n flex-shrink: 0;\n border-radius: 6px;\n }\n .").concat(um,"-mute {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n .").concat(um,"-mute svg {\n width: 20px;\n height: auto;\n cursor: pointer;\n animation: pulsate 2s infinite;\n }\n .").concat(um,"-mute svg:hover {\n opacity: 0.8;\n }\n .").concat(um,"-dismiss {\n display: flex;\n align-items: center;\n justify-content: center;\n padding-right: 3px;\n }\n .").concat(um,"-dismiss svg {\n width: 15px;\n height: auto;\n cursor: pointer;\n }\n .").concat(um,"-dismiss svg:hover {\n opacity: 0.8;\n }\n @keyframes pulsate {\n 0% {\n transform: scale(1);\n opacity: 1;\n }\n 50% {\n transform: scale(1.1);\n opacity: 0.8;\n }\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n }\n @keyframes glCoFadeIn {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n @keyframes glCoFadeOut {\n 0% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n }\n\n .gleap-audio-unmute-modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n background-color: rgba(0, 0, 0, 0.5);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 2147483620;\n }\n\n .gleap-audio-unmute-modal {\n background-color: #fff;\n padding: 20px;\n border-radius: 8px;\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);\n text-align: center;\n max-width: 90%;\n width: 400px;\n }\n\n .gleap-audio-unmute-modal p {\n margin-bottom: 20px;\n font-size: 16px;\n line-height: 22px;\n font-weight: normal;\n }\n\n .gleap-audio-unmute-button {\n background: ").concat(c,";\n color: ").concat(u,";\n outline: none;\n border: none;\n padding: 10px 14px;\n border-radius: 12px;\n font-size: 14px;\n font-weight: bold;\n cursor: pointer;\n }\n\n .gleap-audio-unmute-button:hover {\n opacity: 0.8;\n }\n\n .gleap-tour-continue-button {\n color: ").concat(c,";\n text-decoration: none;\n cursor: pointer;\n font-size: 14px;\n font-weight: bold;\n border: none;\n background: none;\n padding: 0;\n margin: 0;\n margin-left: 20px;\n }\n\n .gleap-tour-continue-button:hover {\n opacity: 0.8;\n }\n\n body.gl-copilot-fade-out::before,\n body.gl-copilot-fade-out::after,\n body.gl-copilot-fade-out #").concat(um," {\n animation: glCoFadeOut 0.8s ease-out forwards;\n }\n ").concat(null===(s=null===(l=this.productTourData)||void 0===l?void 0:l.playVoice)||void 0===s||s?"":"\n .".concat(um,"-mute {\n display: none;\n }\n "),"\n ").concat(this.productTourData.gradient?'body::before {\n content: "";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n box-sizing: border-box;\n border: 18px solid transparent;\n filter: blur(25px);\n border-image-slice: 1;\n border-image-source: linear-gradient(45deg, #ED5587, #FBE6A9, #a6e3f8, #C294F2);\n animation: glCoFadeIn 1.5s ease-out forwards;\n }\n \n body::after {\n content: "";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n opacity: 0.5;\n box-sizing: border-box;\n border: 3px solid transparent;\n border-image-slice: 1;\n border-image-source: linear-gradient(45deg, #ED5587, #FBE6A9, #a6e3f8, #C294F2);\n animation: glCoFadeIn 1.5s ease-out forwards;\n }':'body::after {\n content: "";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n opacity: 0;\n }',"\n "),document.head.appendChild(h));var f=document.createElement("div");f.id=lm,f.style.opacity=0,this._pointerContainer=f;var m=document.createElementNS("http://www.w3.org/2000/svg","svg");m.setAttribute("viewBox","0 0 380 476"),m.innerHTML='';var g=document.createElement("div");g.id="copilot-info-bubble",g.innerHTML="
";var v=document.createElement("div");v.id=um,v.classList.add(um),v.innerHTML='\n \n ').concat(null===(o=this.productTourData)||void 0===o?void 0:o.kaiSlug,'\n
\n ').concat(p(this.audioMuted?"unmute":"mute"),"\n
\n ").concat(null!==(r=this.productTourData)&&void 0!==r&&r.allowClose?'
\n ').concat(p("dismiss"),"\n
"):"","\n "),document.body.appendChild(v),document.querySelector(".".concat(um,"-mute")).addEventListener("click",(function(){a.toggleAudio(!a.audioMuted)})),null!==(i=this.productTourData)&&void 0!==i&&i.allowClose&&document.querySelector(".".concat(um,"-dismiss")).addEventListener("click",(function(){a.completeTour(!1)})),f.appendChild(m),f.appendChild(g),document.body.appendChild(f)}}},{key:"start",value:function(){var e=this;if("undefined"!=typeof window&&!this.disabled){var t=this.productTourData;t&&function(){return dm.apply(this,arguments)}().then((function(n){e.audioMuted=!n,e.setupCopilotTour(),e.audioMuted&&null!=t&&t.showUnmuteModal?e.showAudioUnmuteModal():setTimeout((function(){e.renderNextStep()}),1500)}))}}},{key:"showAudioUnmuteModal",value:function(){var e,t,n,o=this,r=document.createElement("div");r.classList.add("gleap-audio-unmute-modal-overlay");var i=document.createElement("div");i.classList.add("gleap-audio-unmute-modal");var a=document.createElement("p");a.textContent=null===(e=this.productTourData)||void 0===e?void 0:e.unmuteModalTitle,i.appendChild(a);var s=document.createElement("button");s.classList.add("gleap-audio-unmute-button"),s.textContent=null===(t=this.productTourData)||void 0===t?void 0:t.unmuteModalButton,s.addEventListener("click",(function(){o.toggleAudio(!1),r.parentNode&&r.parentNode.removeChild(r),setTimeout((function(){o.renderNextStep()}),1e3)})),i.appendChild(s);var l=document.createElement("button");l.classList.add("gleap-tour-continue-button"),l.textContent=null===(n=this.productTourData)||void 0===n?void 0:n.unmuteModalContinue,l.addEventListener("click",(function(){r.parentNode&&r.parentNode.removeChild(r),setTimeout((function(){o.renderNextStep()}),1e3)})),i.appendChild(l),r.appendChild(i),document.body.appendChild(r)}},{key:"completeTour",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];"undefined"!=typeof window&&(this.cleanup(),this.onCompleteCallback&&this.onCompleteCallback(e))}},{key:"renderNextStep",value:function(){var e=this;if("undefined"!=typeof window&&!this.disabled){var t=this,n=this.productTourData.steps;if(this.currentActiveIndex>=n.length)setTimeout((function(){e.completeTour()}),500);else{var o=n[this.currentActiveIndex],r=function(n){if(e._pointerContainer.style.display="flex",o.selector&&o.selector.length>0&&!n)e.completeTour(!1);else{var r=function(){if("INPUT"===o.mode&&n){var e,r=function(){document.querySelector("#".concat(lm)).classList.remove("copilot-pointer-container-clickmode"),n.classList.remove("gleap-input-highlight"),document.getElementById(lm).style.display="none",t.currentActiveIndex++,t.storeUncompletedTour(),t.renderNextStep()};if("default"===(null!==(e=o.inputType)&&void 0!==e?e:"default")){var i=function e(t){var o;if(0!==(null==t||null===(o=t.target)||void 0===o||null===(o=o.value)||void 0===o?void 0:o.length)){var i=document.getElementById("copilot-info-bubble-content");i&&(i.innerHTML="".concat(kh.translateText("next"),' \n \n'),i.addEventListener("click",r,{once:!0}),n.classList.add("gleap-input-highlight"),document.querySelector("#".concat(lm)).classList.add("copilot-pointer-container-clickmode"),n.removeEventListener("input",e))}};n.addEventListener("input",i,{once:!1}),n.hasAttribute("contenteditable")&&n.addEventListener("keyup",i,{once:!1}),n.addEventListener("blur",(function(){n.focus()}),{once:!0}),n.focus()}else{var a,s=null!==(a=o.inputValue)&&void 0!==a?a:"",l=0;!function e(){l0})).length;return Math.ceil(t/3.6)+1}}(i),s=function(){e.currentAudio=void 0,setTimeout((function(){r()}),1e3*a)};o.voice&&o.voice.length>0?(e.currentAudio=new Audio(o.voice),e.audioMuted&&(e.currentAudio.muted=!0),e.currentAudio.addEventListener("ended",(function(){setTimeout((function(){r()}),1e3)})),e.currentAudio.play().then((function(){})).catch((function(e){s()}))):s()}},i=o.selector?function(e){if("undefined"!=typeof window){var t=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:5e3)/100,n=0;return new Promise((function(o,r){var i=setInterval((function(){var a=document.querySelector(e);a?(clearInterval(i),o(a)):n>=t&&(clearInterval(i),r(new Error("Element not found for selector: ".concat(e)))),n++}),100)}))}}(o.selector):Promise.resolve(null);i.then(r).catch((function(){return r(null)}))}}}}],o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],n&&om(t.prototype,n),o&&om(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function hm(e){return hm="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},hm(e)}function fm(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function mm(e){for(var t=1;t2&&void 0!==arguments[2]?arguments[2]:0,r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(!this.productTourId&&!this.disabled)if(this.productTourId=e,this.productTourData=t,this.currentActiveIndex=0,r)this.start();else{var i=this;et.getInstance().validateProductTour(e).then((function(){return o>0?setTimeout((function(){i.start()}),o):n.start()})).catch((function(e){console.log("Product tour is not live. Cleaning up..."),console.error(e),i.onComplete(!1)}))}}},{key:"onComplete",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t={tourId:this.productTourId};e?(Tn.notifyEvent("productTourCompleted",t),Wm.trackEvent("tour-".concat(this.productTourId,"-completed"),t)):(Tn.notifyEvent("productTourQuit",t),Wm.trackEvent("tour-".concat(this.productTourId,"-quit"),t)),this.gleapTourObj&&this.gleapTourObj.destroy(),this.gleapTourObj=void 0,this.productTourData=void 0,this.productTourId=void 0,this.currentActiveIndex=void 0,this.clearUncompletedTour()}},{key:"loadUncompletedTour",value:function(){try{var e=JSON.parse(localStorage.getItem(bm));if(null!=e&&e.tourData&&null!=e&&e.tourId)return e}catch(t){}return null}},{key:"storeUncompletedTour",value:function(){if(this.productTourId&&this.productTourData)try{var e=JSON.parse(JSON.stringify({tourData:this.productTourData,tourId:this.productTourId}));e.tourData.steps=e.tourData.steps.slice(this.currentActiveIndex||0,e.tourData.steps.length),localStorage.setItem(bm,JSON.stringify(e))}catch(t){}else this.clearUncompletedTour()}},{key:"clearUncompletedTour",value:function(){try{localStorage.removeItem(bm)}catch(e){}}},{key:"start",value:function(){var e=this,t=this.productTourData;if(t){if("cobrowse"===t.tourType)return pm.getInstance().startWithConfig(this.productTourId,t,(function(t){e.onComplete(t)}));this.unmuted=!1;for(var n=t.steps,o=this,r=[],i=0;i\n \n
').concat(p("unmute"),"
\n ");else{var d="";t.sender&&t.sender.firstName&&(u=!0,d='
\n
\n
').concat(t.sender.firstName,"
\n
")),c="".concat(d,'
').concat(a.message,"
")}var h={disableActiveInteraction:!s&&!l,mode:a.mode,popover:mm({description:c,popoverClass:"gleap-tour-popover-".concat(a.type," ").concat(!u&&"gleap-tour-popover-no-sender"," ").concat(t.allowClose&&"gleap-tour-popover-can-close")},s?{showButtons:[]}:{})};a.selector&&a.selector.length>0&&(h.element=a.selector),r.push(h)}var f=["next","close"];t.backButton&&f.push("previous"),this.gleapTourObj=em(vm(vm(vm(vm(vm(vm(vm(vm(vm(vm({showProgress:!0,allowKeyboardControl:!1,steps:r},"showProgress",n.length>1),"allowClose",t.allowClose),"nextBtnText",t.nextText),"doneBtnText",t.doneText),"prevBtnText",t.prevText),"showButtons",f),"onHighlightStarted",(function(t,n,o){var r;e.currentActiveIndex=null==o||null===(r=o.state)||void 0===r?void 0:r.activeIndex,e.storeUncompletedTour()})),"onElementNotFound",(function(t){document.removeEventListener("click",m),e.onComplete(!1)})),"onDestroyStarted",(function(){e.gleapTourObj.hasNextStep()?e.onComplete(!1):e.onComplete(!0),document.removeEventListener("click",m)})),"onPopoverRender",(function(t){if(t)for(var n=document.querySelectorAll(".gleap-tour-popover-description img, .gleap-tour-popover-description video"),r=function(){setTimeout((function(){e.gleapTourObj.refresh()}),500),setTimeout((function(){e.gleapTourObj.refresh()}),750)},i=0;ie.length)&&(t=e.length);for(var n=0,o=new Array(t);n1&&void 0!==arguments[1]?arguments[1]:"";return kh.translateText(e)||t}},{key:"_translateWithVars",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return kh.translateTextWithVars(e,t)||n}},{key:"getCheckIcon",value:function(){return'\n \n '}},{key:"loadChecklist",value:function(){if(this._isSessionReady&&this._networkManager){var e=this.getAttribute("checklistId");e?(this.activeStep=-1,this._initialActiveSet=!1,this.validateChecklist(e)):(this.renderResponse(),this.checklistData=null,this._hasLoaded=!1)}}},{key:"getQueryParams",value:function(){var e=this._getGleapSessionInstance();if(null==e||!e.session)return"";var t=e.session,n="en";try{void 0!==kh&&(n=kh.getInstance().getActiveLanguage()||"en")}catch(o){}return"gleapId=".concat(t.gleapId||"","&gleapHash=").concat(t.gleapHash||"","&lang=").concat(n)}},{key:"makeRequest",value:function(e,t,n,o){var r=this._getGleapSessionInstance();if(null!=r&&r.session){var i=new XMLHttpRequest;i.open(e,t);try{r.injectSession(i)}catch(a){}n&&i.setRequestHeader("Content-Type","application/json;charset=UTF-8"),i.onreadystatechange=function(){4===i.readyState&&o(i)},i.onerror=function(){o(i)},i.send(n?JSON.stringify(n):null)}else o({readyState:4,status:0,responseText:"Session unavailable",_isMock:!0})}},{key:"validateChecklist",value:function(e){var t=this;if(this._isSessionReady&&this._networkManager){this.checklistData=null,this._hasLoaded=!1,this.renderResponse();var n=this.getAttribute("sharedKey");this._networkManager.validateChecklist(e,n).then((function(e){t.isConnected&&t._isSessionReady&&e&&t.fetchChecklist(e)})).catch((function(e){t.renderResponse(),t.checklistData=null,t._hasLoaded=!1}))}}},{key:"fetchChecklist",value:function(e){var t=this;this._isSessionReady&&this._networkManager&&(this._isInitialLoad=!this._hasLoaded,this._networkManager.fetchChecklist(e).then((function(e){var n;if(!t.isConnected||!t._isSessionReady||!e)return t._hasLoaded=!1,t.checklistData=null,void t._checkSessionAndLoad();if(t.checklistData=e,t._hasLoaded=!0,"done"!==e.status){if(t._isInitialLoad&&!t._initialActiveSet){var o,r=(null===(o=e.outbound)||void 0===o||null===(o=o.config)||void 0===o?void 0:o.steps)||[],i=e.completedSteps||[],a=r.findIndex((function(e){return!i.includes(e.id)}));t.activeStep=a>=0?a:-1,-1!==t.activeStep&&(t._initialActiveSet=!0)}t.renderChecklist(t.checklistData),Tn.notifyEvent("checklist-loaded",{checklistId:t.checklistData.id,outboundId:null===(n=t.checklistData.outbound)||void 0===n?void 0:n.id,completedSteps:t.checklistData.completedSteps,status:t.checklistData.status,data:t.checklistData})}else t.renderResponse()})).catch((function(e){t.renderResponse(),t.checklistData=null,t._hasLoaded=!1})))}},{key:"updateChecklist",value:function(e,t){var n,o,r=this._getGleapSessionInstance();if(null!=r&&r.session){var i=r.apiUrl;if(i){var a=r.session,s=null!==(n=null==a?void 0:a.gleapId)&&void 0!==n?n:"",l=null!==(o=null==a?void 0:a.gleapHash)&&void 0!==o?o:"",c="en";try{void 0!==kh&&(c=kh.getInstance().getActiveLanguage()||"en")}catch(d){}var u="".concat(i,"/outbound/checklists/").concat(e);t.checkedStep&&(u+="/increment/".concat(t.checkedStep)),u+="?gleapId=".concat(s,"&gleapHash=").concat(l,"&lang=").concat(c),this.makeRequest("PUT",u,t,(function(e){e._isMock||200!==e.status&&e.status}))}}}},{key:"handleChecklistUpdate",value:function(e){if(this._hasLoaded&&this.checklistData){var t=e.detail;if(t&&t.id===this.checklistData.id){var n,o=xm(this.checklistData.completedSteps||[]),r=!1,i=!1,a=this.activeStep;if(t.completedSteps&&JSON.stringify(t.completedSteps)!==JSON.stringify(o)&&(this.checklistData.completedSteps=xm(t.completedSteps),r=!0,-1!==a)){var s,l=null===(s=this.checklistData.outbound)||void 0===s||null===(s=s.config)||void 0===s||null===(s=s.steps)||void 0===s||null===(s=s[a])||void 0===s?void 0:s.id;l&&this.checklistData.completedSteps.includes(l)&&!o.includes(l)&&(i=!0)}if(t.status&&t.status!==this.checklistData.status&&(this.checklistData.status=t.status,r=!0),i){for(var c,u=(null===(c=this.checklistData.outbound)||void 0===c||null===(c=c.config)||void 0===c?void 0:c.steps)||[],d=-1,p=a+1;p1&&void 0!==arguments[1]?arguments[1]:"checklist-floating",r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=(null===(t=e.config)||void 0===t?void 0:t.steps)||[],a=(null===(n=this.checklistData)||void 0===n?void 0:n.completedSteps)||[],s=0;if(this.progressbarEnabled&&i.length>0){var l=i.length,c=a.length;s=l>0?c/l*100:0}var u,d,p=i.find((function(e){return!a.includes(e.id)})),h=i.length>0?p?p.title||this._translateWithVars("stepDefaultTitle",{index:i.indexOf(p)+1},"Step ".concat(i.indexOf(p)+1)):"":e.subject||"",f=i.length>0?p&&p.description||"":e.message||"";r&&(h=(null===(u=e.config)||void 0===u?void 0:u.successTitle)||"",f=(null===(d=e.config)||void 0===d?void 0:d.successMessage)||"",s=100);var m=2*Math.PI*7,g=m-s/100*m,v="checklist-floating-header"===o,y=v?'\n \n \n ':'\n \n ';return'\n
\n
\n
\n \n \n \n \n
\n
').concat(h,"
\n ").concat(r?"":''.concat(y,""),'\n
\n
').concat(f,"
\n
\n ")}},{key:"renderInfoSection",value:function(e){var t;if(!this.infoEnabled||!e)return"";var n=e.subject||this._translate("checklistDefaultTitle","Checklist"),o=e.message||"",r="";return null!==(t=e.sender)&&void 0!==t&&t.profileImageUrl&&(r='\n
\n ').concat(e.sender.firstName||\n ').concat(e.sender.firstName||"","\n
")),'\n
\n '.concat(n?'
'.concat(n,"
"):"","\n ").concat(o?'
'.concat(o,"
"):"","\n ").concat(r,"\n
")}},{key:"renderProgressSection",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];if(!this.progressbarEnabled||!e.length)return"";var n=e.length,o=t.length,r=n>0?o/n*100:0,i=0;e.forEach((function(e){!t.includes(e.id)&&e.duration>0&&(i+=e.duration)}));var a=this._translateWithVars("taskProgress",{a:o,b:n},"".concat(o," of ").concat(n," done")),s=i>0?this._translateWithVars("aboutMinutes",{a:i},"About ".concat(i," min left")):"";return'\n
\n
'.concat(a,"
\n ").concat(s?'
'.concat(s,"
"):"",'\n
\n
\n
\n
')}},{key:"renderTasks",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return t&&0!==t.length?t.map((function(t,o){var r=n.includes(t.id),i=e.activeStep===o,a=r?''.concat(e.getCheckIcon(),""):''.concat(o+1,""),s=t.title||e._translateWithVars("stepDefaultTitle",{index:o+1},"Step ".concat(o+1)),l=t.description||"",c=t.actionTitle||e._translate("actionDefaultTitle","Action"),u=t.action&&"none"!==t.action?'
\n \n
"):"",d=e._translate("markAsDone","Mark as done"),p=t.allowMarkDone&&!r?'
\n ').concat(e.getCheckIcon(),'\n
').concat(d,"
\n
"):"",h=["checklist-task",r?"checklist-task--done":"",i?"checklist-task--active":""].filter(Boolean).join(" ");return'\n
\n
\n ').concat(a,'\n
').concat(s,'
\n \n \n \n \n \n
\n
\n
\n ').concat(l?'
'.concat(l,"
"):"","\n ").concat(u,"\n ").concat(p,"\n
\n
\n
")})).join(""):"

".concat(this._translate("noStepsDefined","No steps defined."),"

")}},{key:"renderChecklist",value:function(e){var t;if(this._hasLoaded&&e&&e.outbound){var n=e.outbound,o=(null===(t=n.config)||void 0===t?void 0:t.steps)||[],r=e.completedSteps||[],i="";if("done"===e.status||o.length>0&&r.length>=o.length){var a,s,l=(null===(a=n.config)||void 0===a?void 0:a.successTitle)||"",c=(null===(s=n.config)||void 0===s?void 0:s.successMessage)||"";i=this.floatingEnabled?this.renderFloatingLauncher(n,"checklist-floating-launcher",!0):'\n
\n
\n '.concat(this.getCheckIcon(),'\n
\n
').concat(l,'
\n
').concat(c,"
\n
"),-1!==this.activeStep&&(this.activeStep=-1)}else i='\n
\n '.concat(this.floatingEnabled?"":this.renderInfoSection(n),"\n ").concat(this.floatingEnabled?"":this.renderProgressSection(o,r),"\n ").concat(this.floatingEnabled?this.renderFloatingLauncher(n):"",'\n
\n ').concat(this.floatingEnabled?this.renderFloatingLauncher(n,"checklist-floating-header"):"","\n ").concat(this.renderTasks(o,r),"\n
\n
");var u=dt.getInstance().getFlowConfig(),d=u.color?u.color:"#485BFF",p="\n \n ');this.shadowRoot.innerHTML=p+i,this.addTaskEventListeners(),this.floatingEnabled&&this.addFloatingClickListeners(),-1!==this.activeStep&&this.toggleTask(this.activeStep,!0)}else this._checkSessionAndLoad()}},{key:"updateActiveTaskMaxHeight",value:function(){if(-1!==this.activeStep){var e=this.shadowRoot.querySelector('.checklist-task[data-task-index="'.concat(this.activeStep,'"] .checklist-task-body-inner')),t=this.shadowRoot.querySelector('.checklist-task[data-task-index="'.concat(this.activeStep,'"] .checklist-task-body'));if(e&&t){var n=e.offsetHeight;t.style.setProperty("--task-body-active-height","".concat(n,"px"))}}}},{key:"addTaskEventListeners",value:function(){var e=this;this.shadowRoot.querySelectorAll(".checklist-task").forEach((function(t){var n=t.querySelector(".checklist-task-header"),o=parseInt(t.getAttribute("data-task-index"),10);n&&n.addEventListener("click",(function(){var t=e.activeStep===o?-1:o;e.setActiveStep(t)}));var r=t.querySelector(".checklist-task-body-markdone");r&&r.addEventListener("click",(function(t){var n;if(t.stopPropagation(),null!==(n=e.checklistData)&&void 0!==n&&null!==(n=n.outbound)&&void 0!==n&&null!==(n=n.config)&&void 0!==n&&n.steps){var r=e.checklistData.outbound.config.steps[o];if(r){var i=e.activeStep;if(e.checklistData.completedSteps||(e.checklistData.completedSteps=[]),!e.checklistData.completedSteps.includes(r.id)){var a;e.checklistData.completedSteps.push(r.id),Tn.notifyEvent("checklist-step-completed",{checklistId:e.checklistData.id,outboundId:null===(a=e.checklistData.outbound)||void 0===a?void 0:a.id,stepId:r.id,stepIndex:o,step:r,completedSteps:e.checklistData.completedSteps,status:e.checklistData.status,data:e.checklistData});var s=e.checklistData.outbound.config.steps,l=-1;if(i===o){for(var c=o+1;c0&&e.checklistData.completedSteps.length>=s.length&&(e.checklistData.status="done",d.status="done",Tn.notifyEvent("checklist-completed",{checklistId:e.checklistData.id,outboundId:null===(u=e.checklistData.outbound)||void 0===u?void 0:u.id,completedSteps:e.checklistData.completedSteps,status:e.checklistData.status,data:e.checklistData})),e.updateChecklist(e.checklistData.id,d)}}}}));var i=t.querySelector(".checklist-task-body-action .action-button");i&&i.addEventListener("click",(function(t){var n;if(t.stopPropagation(),null!==(n=e.checklistData)&&void 0!==n&&null!==(n=n.outbound)&&void 0!==n&&null!==(n=n.config)&&void 0!==n&&n.steps&&void 0!==Wm){var r=e.checklistData.outbound.config.steps[o];if(r&&r.action&&"none"!==r.action)try{"BOT"===r.action?Wm.startBot(r.botId):"CUSTOM_ACTION"===r.action?Wm.triggerCustomAction(r.actionBody):"REDIRECT_URL"===r.action?(t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation(),Wm.openURL(r.actionBody,!!r.actionOpenInNewTab)):"FEEDBACK_FLOW"===r.action?Wm.startFeedbackFlow(r.formId):"NEWS_ARTICLE"===r.action?Wm.openNewsArticle(r.articleId):"HELP_ARTICLE"===r.action?Wm.openHelpCenterArticle(r.articleId):"CHECKLIST"===r.action&&Wm.startChecklist(r.outboundId,!0,null==r?void 0:r.sharedKey)}catch(i){}}}))}))}},{key:"setActiveStep",value:function(e){var t=this,n=this.activeStep;this.activeStep=e;var o=[];-1!==n&&n!==this.activeStep&&o.push({index:n,open:!1}),-1!==this.activeStep&&this.activeStep!==n&&o.push({index:this.activeStep,open:!0}),o.forEach((function(e){var n=e.index,o=e.open;t.toggleTask(n,o)}))}},{key:"toggleTask",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=this.shadowRoot.querySelector('.checklist-task[data-task-index="'.concat(e,'"]'));if(n){var o=n.querySelector(".checklist-task-header");if(o){var r=n.classList.contains("checklist-task--active"),i=null!==t?t:!r;if(i&&!r){n.classList.add("checklist-task--active"),o.setAttribute("aria-expanded","true");var a=n.querySelector(".checklist-task-body-inner");if(a){var s=a.offsetHeight,l=n.querySelector(".checklist-task-body");l&&l.style.setProperty("--task-body-active-height","".concat(s,"px"))}}else!i&&r&&(n.classList.remove("checklist-task--active"),o.setAttribute("aria-expanded","false"))}}}}],r=[{key:"observedAttributes",get:function(){return["checklistId","info","progressbar","dark","floating","sharedKey"]}}],o&&Cm(n.prototype,o),r&&Cm(n,r),Object.defineProperty(n,"prototype",{writable:!1}),t}(Tm(HTMLElement));"undefined"==typeof customElements||customElements.get("gleap-checklist")||customElements.define("gleap-checklist",e)}}();var _m=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),Fm(this,"initialized",!1),Fm(this,"offlineMode",!1),Fm(this,"disablePageTracking",!1),Fm(this,"disableInAppNotifications",!1),Fm(this,"globalData",{screenRecordingData:null,webReplay:null,snapshotPosition:{x:0,y:0}}),"undefined"!=typeof window&&(nn.getInstance(),un.getInstance().start(),vn.getInstance().start(),Gf.getInstance().start())}var t,n,o;return t=e,n=[{key:"isLiveMode",value:function(){if(!0===this.offlineMode)return!1;var e=window.location.hostname;return!(["localhost","127.0.0.1","0.0.0.0","","::1"].includes(e)||e.startsWith("192.168.")||e.startsWith("10.0.")||e.endsWith(".local")||!e.includes("."))}},{key:"softReInitialize",value:function(){Zt.getInstance().destroy(),dt.getInstance().start().then((function(){a.getInstance().refresh(),jh.getInstance().injectNotificationUI()})).catch((function(e){console.warn("Failed to initialize Gleap.")}))}},{key:"performActions",value:function(t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:"INFO";un.getInstance().addLog(e,t)}},{key:"initialize",value:function(t){var n=this.getInstance();if(n.initialized)console.warn("Gleap already initialized.");else{n.initialized=!0;try{!function(){try{if("visualViewport"in window&&/iPad|iPhone|iPod/.test(navigator.userAgent)){var e=function(){try{var e=document.querySelector(".gleap-frame-container-inner iframe");if(!e)return;window.visualViewport.height1&&void 0!==arguments[1]&&arguments[1];Zt.getInstance().urlHandler(e,t)}},{key:"checkForUrlParams",value:function(){if("undefined"!=typeof window&&window.location.search)try{var t=new URLSearchParams(window.location.search),n=t.get("gleap_widget");n&&n.length>0&&e.open();var o=t.get("gleap_conversation");o&&o.length>0&&("true"===o?e.startConversation(!0):e.startBot(o,!0));var r=t.get("gleap_feedback");r&&r.length>0&&e.startFeedbackFlow(r);var i=t.get("gleap_survey"),a=t.get("gleap_survey_format");i&&i.length>0&&e.showSurvey(i,"survey_full"===a?"survey_full":"survey");var s=t.get("gleap_tour");if(s&&s.length>0){var l=parseInt(t.get("gleap_tour_delay"));isNaN(l)&&(l=2),setTimeout((function(){e.startProductTour(s)}),1e3*l)}}catch(c){}}},{key:"destroy",value:function(){th.getInstance().stop(),it.getInstance().stop(),Zt.getInstance().destroy(),a.getInstance().destroy(),jh.getInstance().clearAllNotifications(!0),et.getInstance().clearSession(0,!1),qh.getInstance().removeBannerUI(),this.instance=null}},{key:"closeBanner",value:function(){qh.getInstance().removeBannerUI()}},{key:"closeModal",value:function(){Kh.getInstance().hideModal()}},{key:"setUseCookies",value:function(e){et.getInstance().useCookies=e}},{key:"identify",value:function(e,t,n){return et.getInstance().identifySession(e,k(t),n)}},{key:"updateContact",value:function(e){return et.getInstance().updateSession(k(e))}},{key:"clearIdentity",value:function(){et.getInstance().clearSession()}},{key:"getIdentity",value:function(){return et.getInstance().getSession()}},{key:"isUserIdentified",value:function(){var e=et.getInstance().session;return!!(e&&e.userId&&e.userId.length>0)}},{key:"isOpened",value:function(){return Zt.getInstance().isOpened()}},{key:"hide",value:function(){Zt.getInstance().hideWidget()}},{key:"setMaxNetworkRequests",value:function(e){y.getInstance().setMaxRequests(e)}},{key:"startNetworkLogger",value:function(){y.getInstance().start()}},{key:"setNetworkLogsBlacklist",value:function(e){y.getInstance().setBlacklist(e)}},{key:"setNetworkLogPropsToIgnore",value:function(e){y.getInstance().setFilters(e)}},{key:"setReplayOptions",value:function(e){th.getInstance().setOptions(e)}},{key:"close",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];Zt.getInstance().hideWidget(e)}},{key:"open",value:function(){Zt.getInstance().setAppMode("widget"),Zt.getInstance().showWidget()}},{key:"trackEvent",value:function(e,t){it.getInstance().logEvent(e,t)}},{key:"logEvent",value:function(e,t){it.getInstance().logEvent(e,t)}},{key:"preFillForm",value:function(e){var t=k(e);Mh.getInstance().formPreFill=t,Zt.getInstance().sendMessage({name:"prefill-form-data",data:t},!0)}},{key:"on",value:function(e,t){Tn.on(e,t)}},{key:"enableShortcuts",value:function(e){e?Eh.getInstance().start():Eh.getInstance().stop()}},{key:"showFeedbackButton",value:function(e){a.getInstance().toggleFeedbackButton(e)}},{key:"setAppVersionCode",value:function(e){nn.setAppVersionCode(e)}},{key:"setAppBuildNumber",value:function(e){nn.setAppBuildNumber(e)}},{key:"setWSApiUrl",value:function(e){et.getInstance().wsApiUrl=e}},{key:"setApiUrl",value:function(e){et.getInstance().apiUrl=e}},{key:"setBannerUrl",value:function(e){qh.getInstance().setBannerUrl(e)}},{key:"setModalUrl",value:function(e){Kh.getInstance().setModalUrl(e)}},{key:"setFrameUrl",value:function(e){Zt.getInstance().frameUrl=e}},{key:"setTicketAttribute",value:function(e,t){xn.getInstance().setTicketAttribute(e,t)}},{key:"unsetTicketAttribute",value:function(e){xn.getInstance().unsetTicketAttribute(e)}},{key:"clearTicketAttributes",value:function(){xn.getInstance().clearTicketAttributes()}},{key:"attachCustomData",value:function(e){xn.getInstance().attachCustomData(e)}},{key:"setCustomData",value:function(e,t){xn.getInstance().setCustomData(e,t)}},{key:"removeCustomData",value:function(e){xn.getInstance().removeCustomData(e)}},{key:"clearCustomData",value:function(){xn.getInstance().clearCustomData()}},{key:"playSound",value:function(e){tf.playSound(e)}},{key:"showTabNotificationBadge",value:function(e){var t=jh.getInstance();t.showNotificationBadge=e,t.updateTabBarNotificationCount()}},{key:"setLanguage",value:function(t){kh.getInstance().setOverrideLanguage(t),e.getInstance().initialized&&setTimeout((function(){e.getInstance().softReInitialize(),e.updateContact({lang:t})}),1e3)}},{key:"registerCustomAction",value:function(e){Dn.registerCustomAction(e)}},{key:"triggerCustomAction",value:function(e){Dn.triggerCustomAction(e)}},{key:"setStyles",value:function(e,t,n){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"#ffffff",r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:20,i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:20,s=arguments.length>6&&void 0!==arguments[6]?arguments[6]:20,l=arguments.length>7&&void 0!==arguments[7]?arguments[7]:a.FEEDBACK_BUTTON_BOTTOM_LEFT;E((function(){!function(e,t,n,o,r,i,s,l){var c=d(e),p=d(n),h=d(r),f=d(t),m="#ffffff"===h,g=u(t,"#ffffff"===f?-35:-15),v=u(r,m?100:-120),y=u(r,m?30:-12),b=u(r,m?80:-30),w=(o=parseInt(o,10),Math.round(1.05*o)),k=Math.round(.8*o),x=Math.round(.6*o),S=Math.round(.4*o),C=Math.round(.25*o),I=57+s;l===a.FEEDBACK_BUTTON_CLASSIC_BOTTOM?I=s+15:(l&&l.includes("CLASSIC")||l===a.FEEDBACK_BUTTON_NONE)&&(I=s);var E='\n .gleap-font, .gleap-font * {\n font-style: normal;\n font-variant-caps: normal;\n font-variant-ligatures: normal;\n font-variant-numeric: normal;\n font-variant-east-asian: normal;\n font-weight: normal;\n font-stretch: normal;\n font-size: 100%;\n line-height: 1;\n font-family: system-ui, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";\n }\n .gleap-input-highlight {\n box-shadow: 0 0 0 3px '.concat(e," !important;\n }\n .gleap-frame-container {\n right: ").concat(i,"px;\n bottom: ").concat(61+s,"px;\n width: calc(100% - 40px);\n max-width: 410px;\n position: fixed;\n z-index: ").concat(2147483631,";\n visibility: visible;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.16);\n border-radius: ").concat(k,"px;\n overflow: hidden;\n animation-duration: .3s;\n animation-fill-mode: both;\n animation-name: gleapFadeInUp;\n user-select: none;\n pointer-events: none;\n transition: max-width 0.3s ease-out;\n }\n\n .gleap-admin-highlight {\n box-shadow: 0px 0px 0px 4px red;\n }\n\n :root {\n --gleap-margin-top: 50px;\n }\n\n .gleap-tooltip-anchor {\n position: relative;\n display: inline-block;\n float: left;\n max-width: 0px;\n width: 17px;\n }\n\n .gleap-tooltip-hotspot {\n position: absolute;\n display: block;\n width: 17px;\n height: 17px;\n cursor: pointer;\n top: 0px;\n left: 0px;\n }\n\n @keyframes gleap-pulse {\n 0% {\n transform: scale(0);\n opacity: 0.25;\n }\n 45% {\n transform: scale(2.5);\n opacity: 0;\n }\n 100% {\n transform: scale(0);\n opacity: 0;\n }\n }\n\n .gleap-tooltip-hotspot-animation {\n position: absolute;\n border-radius: 17px;\n opacity: 0.25;\n display: block;\n width: 17px;\n height: 17px;\n cursor: pointer;\n top: 0px;\n left: 0px;\n animation: gleap-pulse 5s infinite;\n }\n\n .gleap-tooltip-hotspot svg {\n width: 17px;\n height: 17px;\n object-fit: contain;\n display: block;\n }\n\n .gleap-tooltip-inner {\n position: relative;\n overflow: visible;\n font-size: 14px;\n font-weight: normal;\n color: #000;\n line-height: 1.3;\n }\n\n .gleap-tooltip {\n position: absolute;\n background-color: #fff;\n color: #000;\n font-size: 15px;\n line-height: 18px;\n padding: 16px;\n padding-top: 8px;\n padding-bottom: 8px;\n border-radius: 4px;\n max-width: min(350px, 80vw);\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n opacity: 0;\n visibility: hidden;\n transition: opacity 0.2s, visibility 0.2s;\n z-index: ").concat(2147483700,";\n }\n\n .gleap-tooltip a {\n color: ").concat(e,";\n text-decoration: underline;\n display: inline !important;\n margin: 0px !important;\n padding: 0px !important;\n word-break: break-word;\n }\n\n .gleap-tooltip ul {\n padding-left: 16px;\n }\n\n .gleap-tooltip b {\n font-weight: 600;\n }\n\n .gleap-tooltip h2 {\n font-size: 18px;\n line-height: 20px;\n font-weight: 600;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip h3 {\n font-size: 16px;\n line-height: 18px;\n font-weight: 600;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip p {\n padding: 0px;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip img {\n max-width: 100%;\n max-height: 300px;\n width: 100%;\n height: auto;\n object-fit: cover;\n margin-top: 8px;\n margin-bottom: 8px;\n border-radius: 4px;\n }\n\n .gleap-tooltip iframe,\n .gleap-tooltip video {\n max-width: 100%;\n width: 100%;\n height: auto;\n min-height: 200px;\n display: block;\n border: none;\n outline: none;\n padding: 0px;\n margin-top: 8px;\n margin-bottom: 8px;\n border-radius: 4px;\n }\n\n .gleap-tooltip-arrow {\n position: absolute;\n width: 20px;\n height: 20px;\n }\n\n .gleap-tooltip-arrow svg {\n width: 20px;\n height: 20px;\n object-fit: contain;\n }\n\n .gleap-b-frame {\n width: 100%;\n height: 100%;\n border: none;\n pointer-events: auto;\n padding: 0px;\n margin: 0px;\n }\n\n .gleap-b-shown {\n transition: margin 0.3s ease-out;\n margin-top: var(--gleap-margin-top);\n position: relative;\n z-index: 10000;\n }\n\n .gleap-b-f {\n margin-top: 0px;\n }\n\n .gleap-b {\n display: none;\n position: absolute;\n top: calc(-1 * var(--gleap-margin-top));\n left: 0px;\n width: 100vw;\n height: var(--gleap-margin-top);\n z-index: ").concat(2147483699,";\n }\n\n @keyframes gleapSlideIn {\n from {\n top: calc(-1 * var(--gleap-margin-top));\n }\n to {\n top: 10px;\n }\n }\n\n .gleap-b-f .gleap-b {\n position: fixed;\n top: 10px;\n animation: gleapSlideIn .25s ease-out forwards;\n max-width: 800px;\n width: calc(100% - 20px);\n left: 50%;\n z-index: ").concat(2147483699,";\n transform: translateX(-50%);\n border-radius: ").concat(S,"px;\n overflow: hidden;\n box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.15), 0px 5px 5px rgba(0, 0, 0, 0.05);\n }\n\n .gleap-b-shown .gleap-b {\n display: block;\n }\n\n .gleap-image-view {\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n z-index: ").concat(2147483699,";\n background-color: ").concat(h,"cc;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .gleap-image-view-image {\n width: 90%;\n height: auto;\n max-width: 90%;\n max-height: 90%;\n object-fit: contain;\n }\n\n .gleap-image-view-close {\n position: fixed;\n top: 20px;\n right: 20px;\n width: 32px;\n height: 32px;\n opacity: 0.8;\n z-index: ").concat(2147483740,";\n box-shadow: 0px 5px 18px rgba(0, 0, 0, 0.16);\n cursor: pointer;\n }\n\n .gleap-image-view-close:hover {\n opacity: 1;\n }\n\n .gleap-image-view-close svg path {\n fill: ").concat(r,";\n }\n\n [dir=rtl].gleap-frame-container {\n right: auto;\n left: ").concat(i,"px;\n bottom: ").concat(61+s,'px;\n }\n\n .gleap-frame-container--loading iframe {\n opacity: 0;\n }\n\n .gleap-frame-container--loading::before {\n content: " ";\n position: fixed;\n top: 0px;\n left: 0px;\n right: 0px;\n height: 100%;\n max-height: 380px;\n background: linear-gradient(\n 130deg,\n ').concat(g," 0%,\n ").concat(t,' 100%\n );\n }\n \n .gleap-frame-container--loading::after {\n content: " ";\n position: fixed;\n top: 0px;\n left: 0px;\n right: 0px;\n height: 100%;\n height: 100%;\n max-height: 380px;\n background: linear-gradient(\n 180deg,\n transparent 60%,\n ').concat(r,"1A 70%,\n ").concat(r," 100%\n );\n }\n\n .gleap-frame-container--loading-nogradient::before {\n max-height: 340px;\n background: ").concat(t," !important;\n }\n\n .gleap-frame-container--loading-nofade::after {\n display: none !important;\n }\n\n .gleap-frame-container--survey {\n bottom: ").concat(s,"px !important;\n }\n\n .gleap-frame-container--extended {\n max-width: 690px !important;\n }\n\n .gleap-frame-container--survey-full {\n position: fixed;\n top: 0 !important;\n left: 0 !important;\n bottom: 0 !important;\n right: 0 !important;\n width: 100vw !important;\n max-width: 100vw !important;\n height: 100vh;\n height: 100dvh !important;\n background-color: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(6px);\n display: flex !important;\n justify-content: center !important;\n align-items: center !important;\n max-height: 100vh;\n max-height: 100dvh !important;\n border-radius: 0 !important;\n animation-name: none !important;\n }\n\n .gleap-frame-container--survey-full .gleap-frame-container-inner {\n max-width: 640px !important;\n width: calc(100% - 24px);\n border-radius: ").concat(k,"px;\n overflow: hidden;\n }\n\n .gleap-frame-container--classic {\n right: ").concat(i,"px;\n bottom: ").concat(s,"px;\n }\n\n [dir=rtl].gleap-frame-container--classic {\n right: auto;\n left: ").concat(i,"px;\n bottom: ").concat(s,"px;\n }\n\n .gleap-frame-container--no-button {\n bottom: ").concat(s,"px;\n }\n\n [dir=rtl].gleap-frame-container--classic-left {\n bottom: ").concat(s,"px;\n }\n\n .gleap-frame-container--classic-left {\n right: auto;\n left: ").concat(i,"px;\n bottom: ").concat(s,"px;\n }\n\n [dir=rtl].gleap-frame-container--classic-left {\n left: auto;\n right: ").concat(i,"px;\n bottom: ").concat(s,"px;\n }\n\n .gleap-frame-container--modern-left {\n right: auto;\n left: ").concat(i,"px;\n bottom: ").concat(61+s,"px;\n }\n\n [dir=rtl].gleap-frame-container--modern-left {\n left: auto;\n right: ").concat(i,"px;\n bottom: ").concat(61+s,"px;\n }\n\n .gleap-frame-container--animate {\n pointer-events: auto !important;\n }\n\n @keyframes gleapFadeInUp {\n from {\n opacity: 0;\n transform: translate3d(0, 100%, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n\n @keyframes gleapFadeInUpMobile {\n from {\n opacity: 0;\n transform: translate3d(0, 10%, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n\n .gleap-notification-container {\n position: fixed;\n bottom: ").concat(I,"px;\n right: ").concat(i,"px;\n z-index: ").concat(2147483630,";\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n width: 100%;\n max-width: min(340px, 80vw);\n }\n\n .gleap-notification-container--left {\n left: ").concat(4+i,"px;\n right: initial !important;\n }\n\n [dir=rtl].gleap-notification-container {\n left: ").concat(4+i,"px;\n right: initial !important;\n }\n\n [dir=rtl].gleap-notification-container--left {\n left: initial !important;\n right: ").concat(i,"px !important;\n align-items: flex-start !important;\n }\n\n .gleap-notification-container--no-button {\n bottom: ").concat(s,"px;\n }\n\n .gleap-notification-item {\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n\n .gleap-notification-close {\n border-radius: 100%;\n width: 28px;\n height: 28px;\n background-color: ").concat(v,";\n display: flex;\n justify-content: center;\n align-items: center;\n margin-bottom: 8px;\n cursor: pointer;\n visibility: hidden;\n pointer-events: none;\n }\n\n .gleap-notification-container:hover .gleap-notification-close {\n visibility: visible;\n pointer-events: auto;\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-notification-close {\n visibility: visible;\n pointer-events: auto;\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n }\n\n .gleap-notification-close svg {\n width: 45%;\n height: 45%;\n object-fit: contain;\n fill: ").concat(r,";\n }\n\n .gleap-notification-item-checklist-container {\n display: flex;\n animation: fadeIn;\n animation-duration: .45s;\n background-color: ").concat(r,";\n border-radius: ").concat(v,";\n box-sizing: border-box;\n cursor: pointer;\n flex-direction: column;\n overflow: hidden;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ").concat(x,"px;\n margin-bottom: 12px;\n }\n\n .gleap-notification-item-checklist-content {\n align-items: flex-start;\n display: flex;\n flex-direction: column;\n padding: 15px;\n width: 100%;\n width: min(310px, 70vw);\n max-width: min(310px, 70vw);\n }\n\n .gleap-notification-item-checklist-content-title {\n color: ").concat(h,";\n font-size: 15px;\n font-weight: 500;\n line-height: 21px;\n margin-bottom: 10px;\n max-width: 100%;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .gleap-notification-item-checklist-content-progress {\n width: 100%;\n height: 8px;\n border-radius: 8px;\n background-color: ").concat(y,";\n }\n\n .gleap-notification-item-checklist-content-progress-inner {\n height: 100%;\n border-radius: 8px;\n background-color: ").concat(e,";\n }\n\n .gleap-notification-item-checklist-content-next {\n color: ").concat(v,";\n font-size: 15px;\n font-weight: normal;\n line-height: 21px;\n margin-top: 10px;\n max-width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: flex;\n align-items: center;\n }\n\n .gleap-notification-item-checklist-content-next svg {\n height: 18px;\n margin-right: 5px;\n width: auto;\n }\n\n .gleap-notification-item-checklist-content-next b {\n font-size: 15px;\n font-weight: normal;\n color: ").concat(h,";\n }\n\n .gleap-notification-item-news {\n width: 100%;\n }\n\n .gleap-news-pagination {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 10px;\n width: 100%;\n }\n\n .gleap-news-page-indicator {\n font-size: 12px;\n color: ").concat(v,";\n }\n\n .gleap-news-next-button {\n background-color: ").concat(e,";\n color: ").concat(c,";\n border-radius: ").concat(C,"px;\n box-sizing: border-box;\n padding: 5px 10px;\n font-size: 14px;\n font-weight: bold;\n line-height: 21px;\n border: none;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: none !important;\n outline: none !important;^\n }\n\n .gleap-notification-item-news-content {\n align-items: flex-start;\n display: flex;\n flex-direction: column;\n padding: 15px;\n }\n\n .gleap-notification-item-news-preview {\n color: ").concat(v,";\n font-size: 14px;\n line-height: 21px;\n font-weight: 400;\n overflow-wrap: break-word;\n word-break: break-word;\n display: block;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .gleap-notification-item-news-sender {\n display: flex;\n align-items: center;\n color: ").concat(v,";\n font-size: 15px;\n line-height: 21px;\n font-weight: 400;\n }\n \n .gleap-notification-item-news-content-title {\n color: ").concat(h,";\n font-size: 15px;\n font-weight: 500;\n line-height: 21px;\n margin-bottom: 6px;\n max-width: 100%;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n cursor: pointer;\n }\n\n .gleap-notification-item-news-sender img {\n border-radius: 100%;\n height: 20px;\n margin-right: 8px;\n object-fit: cover;\n width: 20px;\n }\n\n [dir=rtl] .gleap-notification-item-news-sender img {\n margin-left: 8px;\n margin-right: 0px !important;\n }\n\n .gleap-notification-item-news-container {\n display: flex;\n animation: fadeIn;\n animation-duration: .45s;\n background-color: ").concat(r,";\n border-radius: ").concat(v,";\n box-sizing: border-box;\n flex-direction: column;\n overflow: hidden;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ").concat(x,"px;\n margin-bottom: 12px;\n }\n\n .gleap-notification-item-news-image {\n background-color: ").concat(v,";\n height: 170px;\n max-height: 170px;\n object-fit: cover;\n width: 100%;\n cursor: pointer;\n }\n \n .gleap-notification-item-news-content-title:hover {\n color: ").concat(e,";\n }\n\n .gleap-notification-item {\n display: flex;\n align-items: flex-end;\n cursor: pointer;\n }\n\n .gleap-notification-item img {\n width: 32px;\n height: 32px;\n min-width: 32px;\n border-radius: 100%;\n object-fit: cover;\n margin-right: 8px;\n margin-bottom: 12px;\n cursor: pointer;\n }\n\n [dir=rtl] .gleap-notification-item img {\n margin-left: 8px;\n margin-right: 0px !important;\n }\n\n .gleap-notification-item-container {\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ").concat(x,"px;\n border-bottom-left-radius: 0px;\n padding: 20px;\n background-color: ").concat(r,";\n margin-bottom: 12px;\n cursor: pointer;\n font-size: 15px;\n line-height: 21px;\n color: ").concat(h,';\n position: relative;\n }\n\n .gleap-notification-item-container::after {\n content: " ";\n position: absolute;\n bottom: 0px;\n width: 0px;\n height: 0px;\n left: -6px;\n border-style: solid;\n border-width: 0px 0px 10px 6px;\n border-color: transparent transparent ').concat(r,";\n }\n\n .gleap-notification-item-sender {\n color: ").concat(v,";\n line-height: 20px;\n }\n\n .gleap-notification-item-content {\n line-height: 20px;\n color: ").concat(h,";\n margin-top: 4px;\n min-width: min(200px, 50vw);\n word-wrap: break-word;\n word-break: break-word;\n }\n\n .gleap-frame-container-inner {\n position: relative;\n width: 100%;\n height: calc(100vh - ").concat(84+s,"px);\n max-height: ").concat(700,'px;\n }\n\n .gleap-frame-container--survey .gleap-frame-container-inner {\n height: calc(100vh - 40px);\n }\n \n .gleap-frame-container-inner:before {\n content: " ";\n position: absolute;\n width: 100%;\n height: calc(100% - ').concat(k,"px);\n top: ").concat(k,"px;\n background-color: ").concat(r,";\n z-index: -1;\n }\n \n .gleap-frame-container iframe {\n height: 100% !important;\n width: 100% !important;\n max-width: 100% !important;\n display: block !important;\n pointer-events: auto !important;\n }\n \n .gleap-frame-container--hidden {\n display: none !important;\n pointer-events: none;\n animation: none !important;\n }\n \n .bb-feedback-button {\n margin: 0px;\n position: fixed;\n bottom: ").concat(s,"px;\n right: ").concat(i,"px;\n border-radius: 30px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n background-color: transparent;\n color: #000000;\n z-index: ").concat(2147483630,";\n box-sizing: border-box;\n display: flex;\n align-items: center;\n padding: 0px;\n }\n\n [dir=rtl].bb-feedback-button {\n bottom: ").concat(s,"px;\n right: auto;\n left: ").concat(i,"px;\n }\n \n .bb-feedback-button--bottomleft {\n bottom: ").concat(s,"px;\n right: auto;\n left: ").concat(i,"px;\n }\n\n [dir=rtl].bb-feedback-button--bottomleft {\n bottom: ").concat(s,"px;\n right: ").concat(i,'px;\n left: auto;\n }\n \n .bb-feedback-button--disabled {\n display: none !important;\n }\n\n .bb-feedback-button--hidden {\n display: none !important;\n }\n \n .bb-feedback-button-text {\n padding: 8px 12px;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n background-color: #fff;\n border-radius: 8px;\n box-shadow: 0px 0px 14px 0px rgba(0, 0, 0, 0.15);\n position: relative;\n z-index: 99;\n }\n \n .bb-feedback-button-text:before {\n content: "";\n position: absolute;\n box-shadow: rgba(0, 0, 0, 0.04) 6px 6px 5px;\n transform: rotate(315deg);\n bottom: 16px;\n right: -4px;\n border-width: 10px;\n border-style: solid;\n border-color: transparent #fff #fff transparent;\n }\n \n .bb-feedback-button--bottomleft .bb-feedback-button-text:before {\n display: none;\n }\n \n .bb-feedback-button-text:after {\n content: "";\n position: absolute;\n bottom: 12px;\n right: 0px;\n background-color: #fff;\n width: 5px;\n height: 30px;\n }\n \n .bb-feedback-button-text-title {\n font-family: sans-serif;\n font-size: 14px;\n color: #666;\n line-height: 18px;\n max-width: 220px;\n }\n \n .bb-feedback-button-text-title b {\n color: #000000;\n font-weight: 600;\n }\n\n .bb-notification-bubble {\n position: absolute;\n top: -5px;\n right: -5px;\n min-width: 12px;\n padding: 0px 4px;\n height: 20px;\n min-width: 20px;\n border-radius: 20px;\n background-color: red;\n color: #fff;\n font-size: 11px;\n font-family: sans-serif;\n text-align: center;\n line-height: 20px;\n }\n\n .bb-notification-bubble--hidden {\n display: none;\n }\n \n .bb-feedback-button-icon {\n width: 48px;\n height: 48px;\n border-radius: 48px;\n background-color: #485bff;\n transition: box-shadow, transform 0.2s ease-in-out;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n position: relative;\n }\n \n .bb-feedback-button-classic {\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n top: 50%;\n right: 0px;\n position: fixed;\n transform: rotate(-90deg) translate(50%, -50%);\n transform-origin: 100% 50%;\n padding: 9px 20px;\n text-align: center;\n background-color: #485bff;\n border-top-left-radius: 8px;\n border-top-right-radius: 8px;\n font-family: sans-serif;\n font-size: 16px;\n color: #fff;\n box-shadow: 0px 0px 14px 0px rgba(0, 0, 0, 0.25);\n }\n\n [dir=rtl].bb-feedback-button .bb-feedback-button-classic {\n top: 50%;\n left: 0px;\n right: auto;\n transform: rotate(90deg) translate(-50%, -100%);\n transform-origin: 0% 0%;\n }\n \n .bb-feedback-button-classic--left {\n top: 50%;\n left: 0px;\n right: auto;\n transform: rotate(90deg) translate(-50%, -100%);\n transform-origin: 0% 0%;\n }\n\n [dir=rtl].bb-feedback-button .bb-feedback-button-classic--left {\n top: 50%;\n right: 0px;\n left: auto;\n transform: rotate(-90deg) translate(50%, -50%);\n transform-origin: 100% 50%;\n }\n \n .bb-feedback-button-classic--bottom {\n top: auto;\n bottom: 0px;\n transform: none;\n right: ').concat(i,"px;\n left: auto;\n }\n \n [dir=rtl].bb-feedback-button .bb-feedback-button-classic--bottom {\n top: auto;\n bottom: 0px;\n transform: none;\n left: ").concat(i,"px;\n right: auto;\n }\n\n .bb-feedback-button--classic-button-style {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n \n .bb-feedback-button--open.bb-feedback-button--classic-button-style {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: bbFadeOutRight;\n }\n \n .bb-feedback-button .bb-logo-logo {\n position: absolute;\n width: 30px;\n height: 30px;\n top: 9px;\n left: 9px;\n object-fit: contain;\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-name: bbZoomIn;\n }\n \n .bb-feedback-button .bb-logo-arrowdown {\n position: absolute;\n width: 14px;\n height: 14px;\n top: 17px;\n left: 17px;\n object-fit: contain;\n animation-duration: 0.3s;\n animation-fill-mode: both;\n }\n \n .bb-feedback-button .bb-logo-arrowdown {\n animation-name: bbZoomOut;\n }\n \n .bb-feedback-button--open .bb-logo-arrowdown {\n animation-name: bbZoomIn;\n }\n \n .bb-feedback-button--open .bb-logo-logo {\n animation-name: bbZoomOut;\n }\n \n .bb-feedback-button-icon:hover {\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.25), 0px 0px 20px rgba(0, 0, 0, 0.2);\n transform: scale(1.1);\n }\n \n .bb-feedback-button--open .bb-feedback-button-text {\n animation-name: bbFadeOutDown;\n }\n \n .bb-feedback-button--open .bb-feedback-button-icon {\n display: flex;\n }\n \n .bb-capture-svg {\n position: fixed;\n z-index: ").concat(2147483614,";\n top: 0px;\n left: 0px;\n right: 0px;\n width: 100%;\n height: 100%;\n padding: 0px;\n margin: 0px;\n cursor: crosshair;\n }\n\n .bb-capture-svg--preview {\n cursor: auto !important;\n }\n \n .bb-rec-on-circle {\n animation-name: bbRecIconFade;\n animation-duration: 2s;\n animation-iteration-count: infinite;\n animation-direction: alternate;\n }\n \n .bb-rec-on-cont {\n animation-name: bbRecIconContFade;\n animation-duration: 2s;\n animation-iteration-count: infinite;\n animation-direction: alternate;\n }\n \n .bb-capture-editor-drag-info {\n position: fixed;\n top: -200px;\n left: 0px;\n z-index: ").concat(2147483616,";\n transition: opacity 0.3s ease-in-out;\n }\n \n .bb-capture-editor-drag-info svg {\n width: 24px;\n height: 24px;\n }\n \n .bb-capture-editor-borderlayer {\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n border: 4px solid ").concat(e,";\n cursor: crosshair;\n z-index: ").concat(2147483610,";\n box-sizing: border-box;\n pointer-events: none;\n }\n \n .bb-capture-editor-notrecording .bb-capture-editor-borderlayer {\n background-color: rgba(0, 0, 0, 0.8);\n }\n\n .bb-capture-editor-recording .bb-capture-editor-borderlayer {\n border: 4px solid #eb144c !important;\n }\n \n .bb-capture-editor-recording .bb-capture-dismiss {\n display: none;\n }\n \n .bb-capture-editor-item-inactive {\n opacity: 0.3;\n cursor: not-allowed !important;\n }\n \n .bb-capture-editor-notrecording .bb-capture-toolbar-drawingitem {\n opacity: 0.3;\n cursor: not-allowed !important;\n }\n \n .bb-capture-editor-notrecording .bb-capture-editor-drag-info {\n display: none;\n }\n \n .bb-capture-editor-notrecording .bb-capture-svg {\n pointer-events: none !important;\n }\n \n .bb-capture-toolbar {\n position: fixed;\n top: 20px;\n left: 50%;\n transform: translateX(-50%);\n z-index: ").concat(2147483618,";\n background-color: #fff;\n padding: 5px;\n display: flex;\n align-items: center;\n border-radius: 8px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n transition: opacity 0.3s ease-in-out;\n }\n \n .bb-capture-dismiss {\n position: fixed;\n top: 0px;\n right: 0px;\n z-index: ").concat(2147483618,";\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n width: 36px;\n height: 36px;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: ").concat(e,";\n border-bottom-left-radius: ").concat(C,"px;\n }\n\n [dir=rtl] .bb-capture-dismiss {\n top: 0px;\n left: 0px;\n right: auto;\n border-bottom-left-radius: 0px !important;\n border-bottom-right-radius: ").concat(C,"px;\n }\n \n .bb-capture-dismiss svg path {\n fill: ").concat(c,';\n }\n \n .bb-capture-dismiss svg {\n width: 20px;\n height: 20px;\n object-fit: contain;\n }\n \n .bb-capture-button-next {\n font-family: sans-serif;\n box-sizing: border-box;\n font-weight: 600;\n text-align: center;\n width: auto;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n margin: 0px;\n line-height: 36px;\n padding: 0px 12px;\n font-size: 15px;\n margin-left: 12px;\n }\n\n [dir=rtl].bb-capture-editor .bb-capture-button-next {\n margin-left: auto;\n margin-right: 12px;\n }\n \n .bb-capture-toolbar-item-spacer {\n width: 1px;\n height: 38px;\n min-width: 1px;\n margin: 0px 5px;\n }\n \n .bb-capture-toolbar-item {\n width: 42px;\n height: 38px;\n min-width: 42px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n position: relative;\n margin-right: 5px;\n }\n\n .drag-handle-item {\n cursor: grab !important;\n width: 34px;\n min-width: 34px;\n }\n\n .drag-handle-item svg {\n width: 18px !important;\n height: 18px !important;\n }\n \n .bb-capture-toolbar-item svg {\n width: 23px;\n height: 23px;\n object-fit: contain;\n }\n \n .bb-capture-toolbar-item-selectedcolor {\n border-radius: 100%;\n width: 20px;\n height: 20px;\n background-color: #db4035;\n }\n \n .bb-capture-toolbar-item[data-type="undo"] svg {\n width: 18px;\n height: 18px;\n }\n \n .bb-capture-toolbar-item[data-active="true"] {\n position: relative;\n }\n \n .bb-capture-preview {\n display: none;\n background-color: rgba(0, 0, 0, 0.6);\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n justify-content: center;\n align-items: center;\n z-index: ').concat(2147483620,";\n }\n \n .bb-capture-preview-inner {\n background-color: #fff;\n padding: 0px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n border-radius: 8px;\n flex-direction: column;\n max-width: 640px;\n width: 100%;\n margin: 20px;\n }\n \n .bb-capture-preview-inner video {\n border-radius: 8px 8px 0px 0px;\n display: block;\n border: 0px;\n outline: none;\n width: 100%;\n max-height: 60vh;\n }\n \n .bb-capture-preview-buttons {\n display: flex;\n justify-content: space-between;\n padding: 14px;\n }\n \n .bb-capture-preview-retrybutton {\n font-family: sans-serif;\n border-radius: 21px;\n box-sizing: border-box;\n padding: 12px 26px;\n font-size: 16px;\n line-height: 19px;\n font-weight: 600;\n text-align: center;\n margin-top: 0px;\n margin-bottom: 0px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-preview-sendbutton {\n font-family: sans-serif;\n border-radius: 21px;\n box-sizing: border-box;\n padding: 12px 26px;\n font-size: 16px;\n line-height: 19px;\n font-weight: 600;\n text-align: center;\n margin-top: 0px;\n margin-bottom: 0px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-preview-retrybutton:hover,\n .bb-capture-preview-sendbutton:hover {\n opacity: 0.9;\n }\n \n .bb-capture-toolbar-item-recording {\n margin-right: 0px;\n }\n \n .bb-capture-toolbar-item-recording svg {\n width: 33px;\n height: 33px;\n }\n \n .bb-capture-toolbar-item-colorpicker {\n position: fixed;\n top: 70px;\n left: 50%;\n transform: translateX(-50%);\n z-index: ").concat(2147483618,';\n background-color: #fff;\n display: none;\n padding: 10px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n border-radius: 8px;\n }\n \n .bb-capture-toolbar-item-color {\n width: 20px;\n height: 20px;\n border-radius: 100%;\n margin-right: 12px;\n box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.15);\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-toolbar-item-color:hover {\n box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.25);\n }\n \n .bb-capture-toolbar-item-color:last-of-type {\n margin-right: 0px;\n }\n \n [dir=rtl].bb-capture-editor .bb-capture-toolbar-item-color {\n margin-right: auto;\n margin-left: 12px;\n }\n \n [dir=rtl].bb-capture-editor .bb-capture-toolbar-item-color:last-of-type {\n margin-right: auto;\n margin-left: 0px;\n }\n \n .bb-capture-toolbar-item-recording[data-active="true"] svg:first-of-type {\n display: none;\n }\n \n .bb-capture-toolbar-item-recording[data-active="true"] svg:nth-of-type(2) {\n display: block;\n }\n \n .bb-capture-toolbar-item-recording[data-active="false"] svg:first-of-type {\n display: block;\n }\n \n .bb-capture-toolbar-item-recording[data-active="false"] svg:nth-of-type(2) {\n display: none;\n }\n \n .bb-capture-toolbar-item--active {\n background-color: #eee;\n }\n \n .bb-capture-toolbar-item:hover svg {\n opacity: 1;\n }\n \n .bb-capture-toolbar-item--active {\n background-color: #f8f8f8;\n }\n \n .bb-capture-toolbar-item--active svg {\n opacity: 1;\n }\n \n .bb-capture-toolbar-item--inactivecross::before {\n content: "";\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n height: 3px;\n width: 26px;\n margin: auto;\n border-radius: 4px;\n background-color: #e80000;\n transform: rotate(45deg);\n }\n \n .bb-capture-toolbar-item--inactivecross svg {\n fill: #eee;\n }\n \n .bb-capture-toolbar-item-timer {\n text-align: left;\n line-height: 32px;\n font-size: 14px;\n font-family: sans-serif;\n margin: 5px;\n min-width: 40px;\n display: none;\n }\n \n .bb-capture-toolbar-item .bb-tooltip {\n background-color: #555;\n color: #fff;\n visibility: hidden;\n font-size: 14px;\n font-family: sans-serif;\n text-align: center;\n padding: 5px 10px;\n position: absolute;\n z-index: 1;\n top: 45px;\n left: 0px;\n transform: translateX(calc(-50% + 21px));\n opacity: 0;\n transition: opacity 0.3s;\n white-space: nowrap;\n }\n \n .bb-capture-toolbar-item .bb-tooltip::after {\n content: "";\n position: absolute;\n bottom: 100%;\n left: 50%;\n margin-left: -5px;\n border-width: 5px;\n border-style: solid;\n transform: rotate(180deg);\n border-color: #555 transparent transparent transparent;\n }\n \n .bb-capture-toolbar-item:hover .bb-tooltip {\n visibility: visible;\n opacity: 1;\n }\n \n .bb-capture-options {\n display: none;\n }\n \n .bb-capture-options--active {\n display: flex;\n }\n\n @keyframes bbFadeOutRight {\n from {\n opacity: 1;\n }\n \n to {\n opacity: 0;\n }\n }\n \n @keyframes bbFadeOutDown {\n from {\n opacity: 1;\n }\n \n to {\n opacity: 0;\n transform: translate3d(0, 100%, 0);\n }\n }\n \n @keyframes bbFadeInOpacity {\n from {\n opacity: 0;\n }\n \n to {\n opacity: 1;\n }\n }\n \n @keyframes bbZoomOut {\n from {\n opacity: 1;\n }\n \n 50% {\n opacity: 0;\n transform: scale3d(0.3, 0.3, 0.3);\n }\n \n to {\n opacity: 0;\n }\n }\n \n @keyframes bbZoomIn {\n from {\n opacity: 0;\n transform: scale3d(0.3, 0.3, 0.3);\n }\n \n 50% {\n opacity: 1;\n }\n }\n \n @keyframes bbRecIconContFade {\n 0% {\n fill: #b10802;\n }\n 50% {\n fill: #ff0000;\n }\n 100% {\n fill: #b10802;\n }\n } \n .bb-capture-preview-retrybutton {\n color: ').concat(h,";\n border-radius: ").concat(w,"px;\n background-color: ").concat(y,";\n }\n .bb-capture-preview-retrybutton:hover {\n background-color: ").concat(b,";\n }\n @keyframes bb-suc-fill {\n 100% {\n box-shadow: inset 0px 0px 0px 30px ").concat(e,";\n }\n }\n .bb-capture-toolbar-item-spacer {\n background-color: ").concat(y,";\n }\n .bb-tooltip {\n border-radius: ").concat(S,"px;\n }\n @keyframes bbRecIconFade {\n 0% {\n fill: transparent;\n }\n 50% {\n fill: ").concat(b,";\n }\n 100% {\n fill: transparent;\n }\n }\n .bb-capture-preview-sendbutton {\n color: ").concat(c,";\n background-color: ").concat(e,";\n border-radius: ").concat(w,"px;\n }\n .bb-capture-button-next {\n color: ").concat(c,";\n background-color: ").concat(e,";\n border-radius: ").concat(C,"px;\n }\n .bb-capture-preview-inner {\n background-color: ").concat(r,";\n border-radius: ").concat(S,"px;\n }\n .bb-capture-toolbar-item-timer {\n color: ").concat(v,";\n }\n .bb-svg-path {\n fill: ").concat(h,";\n }\n .bb-capture-toolbar-item {\n border-radius: ").concat(S,"px;\n }\n .bb-capture-toolbar {\n background-color: ").concat(r,";\n border-radius: ").concat(S,"px;\n }\n .bb-capture-toolbar-item-colorpicker {\n background-color: ").concat(r,";\n }\n .bb-capture-toolbar-item--active {\n background-color: ").concat(y,";\n }\n .bb-feedback-button-classic {\n border-top-left-radius: ").concat(S,"px;\n border-top-right-radius: ").concat(S,"px;\n }\n .bb-logo-logo--default path {\n fill: ").concat(p,";\n }\n .bb-logo-arrowdown {\n fill: ").concat(p,";\n }\n .bb-feedback-button-icon {\n background-color: ").concat(n,";\n }\n .bb-feedback-button-classic {\n background-color: ").concat(n,";\n color: ").concat(p,";\n }\n\n @media only screen and (max-width: 450px) {\n [dir=rtl].gleap-frame-container,\n .gleap-frame-container {\n left: 0px;\n right: 0px;\n width: 100vw;\n max-width: 100vw;\n min-height: 100vh;\n max-height: 100vh;\n min-height: 100dvh !important;\n max-height: 100dvh !important;\n top: 0px;\n bottom: 0px;\n border-radius: 0px;\n animation-name: gleapFadeInUpMobile;\n }\n\n .gleap-frame-container-inner {\n width: 100vw;\n height: 100%;\n }\n\n .gleap-frame-container:not(.gleap-frame-container--survey):not(.gleap-frame-container--survey-full) .gleap-frame-container-inner {\n max-height: calc(var(--glvh, 1vh) * 100) !important;\n }\n\n .gleap-frame-container--survey {\n height: auto !important;\n top: initial !important;\n bottom: 0px !important;\n min-height: initial !important;\n }\n\n .gleap-frame-container--survey .gleap-frame-container-inner {\n height: 100vh !important;\n }\n\n .bb-tooltip {\n display: none !important;\n }\n \n .bb-capture-toolbar-item-colorpicker {\n top: 75px;\n }\n \n .bb-capture-button-next {\n margin-left: auto;\n }\n \n .bb-capture-dismiss {\n display: none;\n }\n \n .bb-capture-toolbar {\n top: 15px;\n right: 15px;\n left: 15px;\n width: auto;\n transform: none;\n }\n\n .bb-capture-editor-drag-info {\n display: none;\n }\n \n .bb-capture-editor-borderlayer {\n border-width: 4px;\n }\n }\n \n @media print {\n .bb-feedback-button {\n display: none !important;\n }\n \n .gleap-frame-container {\n display: none !important;\n }\n }\n\n .gleap-tour-sender {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n margin-bottom: 10px;\n }\n\n .gleap-tour-sender-image {\n width: 32px;\n height: 32px;\n border-radius: 32px;\n margin-right: 10px;\n background-size: cover;\n background-repeat: no-repeat;\n }\n\n .gleap-tour-popover.gleap-tour-popover-post {\n min-width: 550px;\n max-width: 550px;\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-tour-popover.gleap-tour-popover-post {\n min-width: calc(100vw - 40px);\n max-width: calc(100vw - 40px);\n }\n }\n\n .gleap-tour-message,\n .gleap-tour-message p,\n .gleap-tour-message ul {\n color: ").concat(h,";\n }\n\n .gleap-tour-message h2 {\n font-weight: 600;\n font-size: 22px;\n }\n\n .gleap-tour-message h3 {\n font-weight: 600;\n font-size: 18px;\n }\n\n .gleap-tour-message p {\n line-height: 1.3;\n margin-bottom: 10px !important;\n margin-top: 10px !important;\n }\n\n .gleap-tour-message ul {\n line-height: 1.3;\n padding-left: 20px;\n margin-top: 10px !important;\n margin-bottom: 10px !important;\n }\n\n .gleap-tour-message {\n max-height: calc(80vh - 100px) !important;\n overflow-y: auto;\n min-width: 270px;\n }\n\n .gleap-tour-message::-webkit-scrollbar {\n width: 5px;\n }\n\n .gleap-tour-message::-webkit-scrollbar-track {\n border-radius: 0px;\n }\n \n .gleap-tour-message::-webkit-scrollbar-thumb {\n background: ").concat(b,"; \n border-radius: 5px;\n }\n\n .gleap-tour-message::-webkit-scrollbar-thumb:hover {\n background: ").concat(v,";\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-tour-message {\n min-width: auto !important;\n }\n }\n\n .gleap-tour-message iframe {\n width: 100%;\n height: 300px;\n margin-top: 10px;\n margin-bottom: 10px;\n border: none;\n outline: none;\n display: block;\n }\n\n .gleap-tour-sender-name {\n font-size: 15px;\n }\n\n .gleap-tour-video {\n width: 100%;\n max-width: 100%;\n }\n\n .gleap-tour-video-svg--fullscreen {\n width: 100% !important;\n height: 100% !important;\n top: 0px !important;\n left: 0px !important;\n right: 0px !important;\n bottom: 0px !important;\n }\n\n .gleap-tour-video--playing .gleap-tour-video-playpause {\n opacity: 0;\n }\n \n .gleap-tour-video--playing:hover .gleap-tour-video-playpause {\n opacity: 1;\n }\n\n .gleap-tour-popover-video-pointer {\n padding: 0px !important;\n border-radius: 8px;\n position: relative;\n background-color: transparent !important;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-footer {\n position: absolute;\n top: 0px;\n left: 20px;\n right: 20px;\n opacity: 0;\n transition: opacity 200ms ease-in-out;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-footer button {\n padding: 5px 12px;\n }\n\n .gleap-tour-popover-video-pointer.gleap-tour-popover-can-close .gleap-tour-popover-footer {\n right: 40px !important;\n }\n\n .gleap-tour-popover-video-pointer:hover .gleap-tour-popover-footer {\n opacity: 1;\n }\n\n .gleap-tour-popover-pointer.gleap-tour-popover-no-sender .gleap-tour-message {\n padding-right: 20px;\n }\n\n .gleap-tour-video video {\n width: 100%;\n max-width: 100%;\n height: auto;\n border: none;\n outline: none;\n display: block;\n border-radius: 8px;\n }\n\n .gleap-admin-collapse-ui {\n z-index: ").concat(2147483635,";\n cursor: pointer;\n position: fixed;\n bottom: 75px;\n right: 20px;\n width: 32px;\n height: 32px;\n border-radius: 100%;\n background-color: #fff;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: rgba(0, 0, 0, 0.16) 0px 10px 36px 0px, rgba(0, 0, 0, 0.06) 0px 0px 0px 1px;\n }\n\n .gleap-admin-collapse-ui svg {\n width: 20px;\n height: 14px;\n fill: #000 !important;\n }\n\n .gleap-admin-collapse-ui-active {\n bottom: 20px !important;\n }\n\n .gleap-admin-collapse-ui-active svg {\n transform: rotate(180deg);\n }\n\n .gleap-admin-frame-container-active {\n display: none !important;\n }\n\n .gleap-admin-frame-container {\n position: fixed;\n bottom: 0px;\n left: 0px;\n right: 0px;\n width: 100vw;\n z-index: ").concat(2147483640,";\n }\n\n .gleap-admin-frame {\n width: 100%;\n height: 100% !important;\n border: none;\n outline: none;\n display: block;\n }\n \n .gleap-tour-message .linktype-link {\n display: inline-block !important;\n background-color: transparent !important;\n color: ").concat(n," !important;\n }\n\n .gleap-tooltip .linktype-button,\n .gleap-tour-message .linktype-button {\n display: inline-block !important;\n border-radius: 5px;\n box-sizing: border-box;\n padding: 10px 20px !important;\n text-decoration: none !important;\n background-color: ").concat(n," !important;\n color: ").concat(p," !important;\n }\n\n .gleap-tour-message img {\n width: 100%;\n max-width: 100%;\n min-height: 260px;\n height: auto;\n margin-top: 10px;\n margin-bottom: 10px;\n object-fit: cover;\n }\n\n .gleap-tour-active .gleap-tour-overlay {\n pointer-events: none;\n }\n \n .gleap-tour-active * {\n pointer-events: none;\n }\n \n .gleap-tour-active .gleap-tour-active-element,\n .gleap-tour-active .gleap-tour-active-element *,\n .gleap-tour-popover,\n .gleap-tour-popover * {\n pointer-events: auto;\n }\n \n @keyframes animate-fade-in {\n 0% {\n opacity: 0;\n }\n \n to {\n opacity: 1;\n }\n }\n \n .gleap-tour-fade .gleap-tour-overlay {\n animation: animate-fade-in 200ms ease-in-out;\n }\n \n .gleap-tour-fade .gleap-tour-popover {\n animation: animate-fade-in 200ms;\n }\n\n .gleap-tour-video-playpause {\n position: absolute;\n bottom: 8px;\n left: 8px;\n width: 32px;\n height: 32px;\n padding: 4px;\n background-color: rgba(0,0,0,0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border-radius: 8px;\n transition: opacity 200ms ease-in-out;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-arrow {\n display: none !important;\n }\n\n .gleap-tour-video-playpause svg {\n width: 34px;\n height: auto;\n fill: #fff;\n }\n \n /* Popover styles */\n .gleap-tour-popover {\n all: unset;\n box-sizing: border-box;\n color: #2d2d2d;\n margin: 0;\n padding: 15px;\n border-radius: ").concat(S,'px;\n min-width: 250px;\n max-width: 300px;\n box-shadow: 0 1px 10px #0006;\n z-index: 1000000000;\n position: fixed;\n top: 0;\n right: 0;\n background-color: #fff;\n }\n \n .gleap-tour-popover * {\n font-family: "Helvetica Neue", Inter, ui-sans-serif, "Apple Color Emoji", Helvetica, Arial, sans-serif;\n }\n \n .gleap-tour-popover-title {\n font: 19px / normal sans-serif;\n font-weight: 700;\n display: block;\n position: relative;\n line-height: 1.5;\n zoom: 1;\n margin: 0;\n }\n \n .gleap-tour-popover-close-btn {\n all: unset;\n position: absolute;\n top: 5px;\n right: 5px;\n width: 32px;\n height: 32px;\n cursor: pointer;\n font-size: 30px;\n font-weight: 500;\n line-height: 32px;\n color: #d2d2d2;\n z-index: 1;\n text-align: center;\n transition: color;\n transition-duration: 200ms;\n }\n \n .gleap-tour-popover-close-btn:hover,\n .gleap-tour-popover-close-btn:focus {\n color: #2d2d2d;\n }\n \n .gleap-tour-popover-title[style*="block"] + .gleap-tour-popover-description {\n margin-top: 5px;\n }\n \n .gleap-tour-popover-description {\n margin-bottom: 0;\n font: 15px / normal sans-serif;\n line-height: 1.5;\n font-weight: 400;\n zoom: 1;\n }\n \n .gleap-tour-popover-footer {\n margin-top: 15px;\n text-align: right;\n zoom: 1;\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n \n .gleap-tour-popover-progress-text {\n font-size: 13px;\n font-weight: 400;\n color: #727272;\n zoom: 1;\n }\n \n .gleap-tour-popover-footer button {\n background-color: ').concat(e,";\n color: ").concat(c,";\n border-radius: ").concat(C,"px;\n box-sizing: border-box;\n padding: 10px 20px;\n font-size: 14px;\n font-weight: bold;\n line-height: 21px;\n border: none;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: none !important;\n outline: none !important;\n }\n\n .gleap-tour-popover-prev-btn {\n color: ").concat(h," !important;\n background-color: ").concat(y," !important;\n margin-right: 3px;\n }\n\n .gleap-tour-popover-prev-btn:hover {\n background-color: ").concat(e,"22 !important;\n color: ").concat(e,' !important;\n }\n \n .gleap-tour-popover-footer .gleap-tour-popover-btn-disabled {\n opacity: 0.5;\n pointer-events: none;\n }\n \n /* Disable the scrolling of parent element if it has an active element*/\n :not(body):has(> .gleap-tour-active-element) {\n overflow: hidden !important;\n }\n \n .gleap-tour-no-interaction, .gleap-tour-no-interaction * {\n pointer-events: none !important;\n }\n \n .gleap-tour-popover-navigation-btns {\n display: flex;\n flex-grow: 1;\n justify-content: flex-end;\n }\n \n .gleap-tour-popover-navigation-btns button + button {\n margin-left: 4px;\n }\n \n .gleap-tour-popover-arrow {\n content: "";\n position: absolute;\n border: 5px solid #fff;\n }\n \n .gleap-tour-popover-arrow-side-over {\n display: none;\n }\n \n /** Popover Arrow Sides **/\n .gleap-tour-popover-arrow-side-left {\n left: 100%;\n border-right-color: transparent;\n border-bottom-color: transparent;\n border-top-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-right {\n right: 100%;\n border-left-color: transparent;\n border-bottom-color: transparent;\n border-top-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-top {\n top: 100%;\n border-right-color: transparent;\n border-bottom-color: transparent;\n border-left-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-bottom {\n bottom: 100%;\n border-left-color: transparent;\n border-top-color: transparent;\n border-right-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-center {\n display: none;\n }\n \n /* Left/Start + Right/Start */\n .gleap-tour-popover-arrow-side-left.gleap-tour-popover-arrow-align-start,\n .gleap-tour-popover-arrow-side-right.gleap-tour-popover-arrow-align-start {\n top: 15px;\n }\n \n /* Top/Start + Bottom/Start */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-start,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-start {\n left: 15px;\n }\n \n /* End/Left + End/Right */\n .gleap-tour-popover-arrow-align-end.gleap-tour-popover-arrow-side-left,\n .gleap-tour-popover-arrow-align-end.gleap-tour-popover-arrow-side-right {\n bottom: 15px;\n }\n \n /* Top/End + Bottom/End */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-end,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-end {\n right: 15px;\n }\n \n /* Left/Center + Right/Center */\n .gleap-tour-popover-arrow-side-left.gleap-tour-popover-arrow-align-center,\n .gleap-tour-popover-arrow-side-right.gleap-tour-popover-arrow-align-center {\n top: 50%;\n margin-top: -5px;\n }\n \n /* Top/Center + Bottom/Center */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-center,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-center {\n left: 50%;\n margin-left: -5px;\n }\n \n /* No arrow */\n .gleap-tour-popover-arrow-none {\n display: none;\n } \n\n /* Modal styles */\n .gleap-modal-wrapper {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: ').concat(2147483640,";\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .gleap-modal-backdrop {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.5);\n z-index: ").concat(2147483641,";\n }\n\n .gleap-modal {\n position: relative;\n width: 90%;\n max-width: 600px;\n max-height: 90vh;\n z-index: ").concat(2147483700,";\n background-color: ").concat(r,";\n border-radius: ").concat(k,"px;\n overflow: hidden;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-name: gleapFadeInUp;\n }\n\n .gleap-modal-frame {\n width: 100%;\n border: none;\n display: block;\n outline: none;\n }\n\n body.gleap-modal-open {\n overflow: hidden;\n }\n\n @keyframes gleapFadeInUp {\n from {\n opacity: 0;\n transform: translate3d(0, 20px, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n "),T=document.querySelector(".gleap-styles");T&&T.remove();var O=document.createElement("style");O.innerHTML=E,O.className="gleap-styles",document.body.appendChild(O)}(e,t,n,r,o,i,s,l)}))}},{key:"sendSilentCrashReport",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"MEDIUM",o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{screenshot:!0,replays:!0,attachments:!0};return e.sendSilentCrashReportWithFormData({description:t},n,o)}},{key:"sendSilentCrashReportWithFormData",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"MEDIUM",o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{screenshot:!0,replays:!0,attachments:!0};if(!this.silentCrashReportSent){this.silentCrashReportSent=!0,setTimeout((function(){t.silentCrashReportSent=!1}),1e4);var r=o?k(o):{},i=et.getInstance();if(i.ready){var a=e||{};i.session.email&&(a.reportedBy=i.session.email),new Wt("CRASH",n,a,!0,r).sendFeedback().then((function(){})).catch((function(e){}))}}}},{key:"showSurvey",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"survey";e.startFeedbackFlowWithOptions(t,{hideBackButton:!0,format:n},!0)}},{key:"startClassicForm",value:function(t,n){e.startFeedbackFlowWithOptions(t,{hideBackButton:!n})}},{key:"startFeedbackFlow",value:function(t,n){e.startFeedbackFlowWithOptions(t,{hideBackButton:!n})}},{key:"startFeedbackFlowWithOptions",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=n.autostartDrawing,i=n.hideBackButton,a=n.format;if(et.getInstance().ready){e.getInstance().setGlobalDataItem("snapshotPosition",{x:window.scrollX,y:window.scrollY});var s="start-feedbackflow";o&&(s="start-survey"),Zt.getInstance().setAppMode(o?a:"widget"),Zt.getInstance().sendMessage({name:s,data:{flow:t,hideBackButton:i,format:a}},!0),r?Zt.getInstance().showDrawingScreen("screenshot"):Zt.getInstance().showWidget()}}},{key:"openConversations",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-conversations",data:{hideBackButton:!e}},!0),Zt.getInstance().showWidget()}},{key:"openConversation",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e&&(Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-conversation",data:{shareToken:e,hideBackButton:!t}},!0),Zt.getInstance().showWidget())}},{key:"startConversation",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];e.startBot("",t)}},{key:"startBot",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"start-bot",data:{botId:e||"",hideBackButton:!t}},!0),Zt.getInstance().showWidget()}},{key:"openHelpCenterCollection",value:function(e){e&&(Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-help-collection",data:{collectionId:e}},!0),Zt.getInstance().showWidget())}},{key:"openHelpCenterArticle",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e&&(Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-help-article",data:{articleId:e,hideBackButton:!t}},!0),Zt.getInstance().showWidget())}},{key:"openHelpCenter",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-helpcenter",data:{hideBackButton:!e}},!0),Zt.getInstance().showWidget()}},{key:"searchHelpCenter",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e&&(Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-helpcenter-search",data:{term:e,hideBackButton:!t}},!0),Zt.getInstance().showWidget())}},{key:"openNewsArticle",value:function(e){e&&(Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-news-article",data:{id:e}},!0),Zt.getInstance().showWidget())}},{key:"openChecklists",value:function(){Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-checklists",data:{}},!0),Zt.getInstance().showWidget()}},{key:"startChecklist",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;return!!e&&(Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"start-checklist",data:jm({outboundId:e,hideBackButton:!t},n?{sharedKey:n}:{})},!0),Zt.getInstance().showWidget(),!0)}},{key:"openChecklist",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e&&(Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-checklist",data:{id:e,hideBackButton:!t}},!0),Zt.getInstance().showWidget())}},{key:"getChecklistData",value:function(e,t){if(!e)return Promise.reject(new Error("outboundId is required"));var n=D.getInstance();return n.validateChecklist(e,t).then((function(e){return n.fetchChecklist(e)}))}},{key:"openNews",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-news",data:{hideBackButton:!e}},!0),Zt.getInstance().showWidget()}},{key:"openFeatureRequests",value:function(){Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-feature-requests",data:{}},!0),Zt.getInstance().showWidget()}},{key:"startProductTour",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this;et.getInstance().startProductTourConfig(e).then((function(o){var r;!t||null==o||!o.startURL||null!==(r=window)&&void 0!==r&&null!==(r=r.location)&&void 0!==r&&null!==(r=r.href)&&void 0!==r&&r.includes(null==o?void 0:o.baseURL)?n.startProductTourWithConfig(e,o,!0):window.location.href="".concat(o.startURL,"?gleap_tour=").concat(e,"&gleap_tour_delay=1")})).catch((function(e){}))}},{key:"checkForUncompletedTour",value:function(){var e=wm.getInstance().loadUncompletedTour();e&&wm.getInstance().startWithConfig(e.tourId,e.tourData,500)}},{key:"startProductTourWithConfig",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];wm.getInstance().startWithConfig(e,t,0,n)}},{key:"showBanner",value:function(e){try{qh.getInstance().showBanner(e)}catch(t){}}},{key:"showModal",value:function(e){try{Kh.getInstance().showModal(e)}catch(t){}}},{key:"showNotification",value:function(e){jh.getInstance().showNotification(e)}}],n&&Dm(t.prototype,n),o&&Dm(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();if(Fm(_m,"invoked",!0),Fm(_m,"silentCrashReportSent",!1),Fm(_m,"instance",void 0),"undefined"!=typeof window){var Um=window.GleapActions;if(Um&&Um.length>0)for(var Hm=0;Hm {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","import {\n GleapFrameManager,\n GleapConfigManager,\n GleapNotificationManager,\n GleapTranslationManager,\n GleapSession,\n} from \"./Gleap\";\nimport { loadIcon } from \"./UI\";\n\nexport default class GleapFeedbackButtonManager {\n feedbackButton = null;\n injectedFeedbackButton = false;\n buttonHidden = null;\n lastButtonIcon = null;\n\n // Feedback button types\n static FEEDBACK_BUTTON_BOTTOM_RIGHT = \"BOTTOM_RIGHT\";\n static FEEDBACK_BUTTON_BOTTOM_LEFT = \"BOTTOM_LEFT\";\n static FEEDBACK_BUTTON_CLASSIC = \"BUTTON_CLASSIC\";\n static FEEDBACK_BUTTON_CLASSIC_LEFT = \"BUTTON_CLASSIC_LEFT\";\n static FEEDBACK_BUTTON_CLASSIC_BOTTOM = \"BUTTON_CLASSIC_BOTTOM\";\n static FEEDBACK_BUTTON_NONE = \"BUTTON_NONE\";\n\n // GleapFeedbackButtonManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapFeedbackButtonManager();\n }\n return this.instance;\n }\n\n destroy() {\n if (this.feedbackButton) {\n this.feedbackButton.remove();\n this.feedbackButton = null;\n }\n\n this.buttonHidden = null;\n this.lastButtonIcon = null;\n this.injectedFeedbackButton = false;\n this.instance = null;\n }\n\n /**\n * Toggles the feedback button visibility.\n * @param {*} show\n * @returns\n */\n toggleFeedbackButton(show) {\n this.buttonHidden = !show;\n\n GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n GleapNotificationManager.getInstance().updateContainerStyle();\n }\n\n feedbackButtonPressed() {\n var frameManager = GleapFrameManager.getInstance();\n if (frameManager.isOpened()) {\n frameManager.hideWidget();\n } else {\n frameManager.setAppMode(\"widget\");\n frameManager.showWidget();\n }\n }\n\n /**\n * Injects the feedback button into the current DOM.\n */\n injectFeedbackButton() {\n if (this.injectedFeedbackButton) {\n return;\n }\n this.injectedFeedbackButton = true;\n\n var elem = document.createElement(\"div\");\n elem.addEventListener(\"click\", () => {\n this.feedbackButtonPressed();\n });\n document.body.appendChild(elem);\n this.feedbackButton = elem;\n\n this.updateFeedbackButtonState();\n }\n\n updateNotificationBadge(count) {\n const notificationBadge = document.querySelector(\".bb-notification-bubble\");\n if (!notificationBadge) {\n return;\n }\n\n const notificationHiddenClass = \"bb-notification-bubble--hidden\";\n if (count > 0 && !GleapFrameManager.getInstance().isOpened()) {\n notificationBadge.classList.remove(notificationHiddenClass);\n notificationBadge.innerText = count;\n } else {\n notificationBadge.classList.add(notificationHiddenClass);\n }\n }\n\n refresh() {\n const feedbackButton = document.querySelector(\".bb-feedback-button\");\n if (feedbackButton) {\n this.updateFeedbackButtonText();\n this.updateFeedbackButtonState();\n } else {\n this.injectedFeedbackButton = false;\n this.feedbackButton = null;\n this.buttonHidden = null;\n this.lastButtonIcon = null;\n this.injectFeedbackButton();\n }\n }\n\n updateFeedbackButtonText() {\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n\n if (\n !(\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT\n )\n ) {\n return;\n }\n\n const feedbackButton = document.querySelector(\n \".bb-feedback-button-classic\"\n );\n if (!feedbackButton) {\n return;\n }\n\n feedbackButton.innerText = flowConfig.widgetButtonText;\n }\n\n /**\n * Updates the feedback button state\n * @returns\n */\n updateFeedbackButtonState() {\n if (this.feedbackButton === null) {\n return;\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n\n var buttonIcon = \"\";\n if (flowConfig.buttonLogo) {\n buttonIcon = `\"Feedback`;\n } else {\n buttonIcon = loadIcon(\"button\", \"#fff\");\n }\n\n this.feedbackButton.className = \"bb-feedback-button gleap-font gl-block\";\n this.feedbackButton.setAttribute(\n \"dir\",\n GleapTranslationManager.getInstance().isRTLLayout ? \"rtl\" : \"ltr\"\n );\n\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT\n ) {\n this.feedbackButton.classList.add(\n \"bb-feedback-button--classic-button-style\"\n );\n\n this.feedbackButton.innerHTML = `
${flowConfig.widgetButtonText}
`;\n } else {\n if (buttonIcon !== this.lastButtonIcon) {\n this.feedbackButton.innerHTML = `
${buttonIcon}${loadIcon(\n \"arrowdown\",\n \"#fff\"\n )}
`;\n }\n }\n\n // Prevent dom update if not needed.\n this.lastButtonIcon = buttonIcon;\n\n var hideButton = false;\n if (GleapFeedbackButtonManager.getInstance().buttonHidden === null) {\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_NONE\n ) {\n hideButton = true;\n }\n } else {\n if (GleapFeedbackButtonManager.getInstance().buttonHidden) {\n hideButton = true;\n }\n }\n if (hideButton) {\n this.feedbackButton.classList.add(\"bb-feedback-button--disabled\");\n }\n\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_BOTTOM_LEFT\n ) {\n this.feedbackButton.classList.add(\"bb-feedback-button--bottomleft\");\n }\n\n if (GleapFrameManager.getInstance().isOpened()) {\n this.feedbackButton.classList.add(\"bb-feedback-button--open\");\n }\n\n const appMode = GleapFrameManager.getInstance().appMode;\n if (\n appMode === \"survey\" ||\n appMode === \"survey_full\" ||\n appMode === \"survey_web\"\n ) {\n this.feedbackButton.classList.add(\"bb-feedback-button--survey\");\n }\n\n if (\n flowConfig.hideForGuests === true &&\n !GleapSession.getInstance().isUser()\n ) {\n this.feedbackButton.classList.add(\"bb-feedback-button--hidden\");\n }\n }\n}\n","import GleapFeedbackButtonManager from \"./GleapFeedbackButtonManager\";\n\nconst calculateShadeColor = function (col, amt) {\n col = col.replace(/^#/, \"\");\n if (col.length === 3)\n col = col[0] + col[0] + col[1] + col[1] + col[2] + col[2];\n\n let [r, g, b] = col.match(/.{2}/g);\n [r, g, b] = [\n parseInt(r, 16) + amt,\n parseInt(g, 16) + amt,\n parseInt(b, 16) + amt,\n ];\n\n r = Math.max(Math.min(255, r), 0).toString(16);\n g = Math.max(Math.min(255, g), 0).toString(16);\n b = Math.max(Math.min(255, b), 0).toString(16);\n\n const rr = (r.length < 2 ? \"0\" : \"\") + r;\n const gg = (g.length < 2 ? \"0\" : \"\") + g;\n const bb = (b.length < 2 ? \"0\" : \"\") + b;\n\n return `#${rr}${gg}${bb}`;\n};\n\nexport const calculateContrast = (hex) => {\n var r = parseInt(hex.substr(1, 2), 16),\n g = parseInt(hex.substr(3, 2), 16),\n b = parseInt(hex.substr(5, 2), 16),\n yiq = (r * 299 + g * 587 + b * 114) / 1000;\n return yiq >= 160 ? \"#000000\" : \"#ffffff\";\n};\n\nexport const widgetMaxHeight = 700;\n\nexport const injectStyledCSS = (\n primaryColor,\n headerColor,\n buttonColor,\n borderRadius,\n backgroundColor,\n buttonX,\n buttonY,\n buttonStyle\n) => {\n const contrastColor = calculateContrast(primaryColor);\n const contrastButtonColor = calculateContrast(buttonColor);\n const contrastBackgroundColor = calculateContrast(backgroundColor);\n const contrastHeaderColor = calculateContrast(headerColor);\n const isDarkMode = contrastBackgroundColor === \"#ffffff\";\n const headerDarkColor = calculateShadeColor(\n headerColor,\n contrastHeaderColor === \"#ffffff\" ? -35 : -15\n );\n const subTextColor = isDarkMode\n ? calculateShadeColor(backgroundColor, 100)\n : calculateShadeColor(backgroundColor, -120);\n const backgroundColorHover = isDarkMode\n ? calculateShadeColor(backgroundColor, 30)\n : calculateShadeColor(backgroundColor, -12);\n const hoverHoverColor = isDarkMode\n ? calculateShadeColor(backgroundColor, 80)\n : calculateShadeColor(backgroundColor, -30);\n\n var borderRadius = parseInt(borderRadius, 10);\n const buttonBorderRadius = Math.round(borderRadius * 1.05);\n const containerRadius = Math.round(borderRadius * 0.8);\n const chatRadius = Math.round(borderRadius * 0.6);\n const formItemBorderRadius = Math.round(borderRadius * 0.4);\n const formItemSmallBorderRadius = Math.round(borderRadius * 0.25);\n const zIndexBase = 2147483600;\n\n var bottomInfoOffset = 57 + buttonY;\n if (\n buttonStyle === GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM\n ) {\n bottomInfoOffset = buttonY + 15;\n } else if (buttonStyle && buttonStyle.includes(\"CLASSIC\")) {\n bottomInfoOffset = buttonY;\n } else if (buttonStyle === GleapFeedbackButtonManager.FEEDBACK_BUTTON_NONE) {\n bottomInfoOffset = buttonY;\n }\n\n const colorStyleSheet = `\n .gleap-font, .gleap-font * {\n font-style: normal;\n font-variant-caps: normal;\n font-variant-ligatures: normal;\n font-variant-numeric: normal;\n font-variant-east-asian: normal;\n font-weight: normal;\n font-stretch: normal;\n font-size: 100%;\n line-height: 1;\n font-family: system-ui, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n }\n .gleap-input-highlight {\n box-shadow: 0 0 0 3px ${primaryColor} !important;\n }\n .gleap-frame-container {\n right: ${buttonX}px;\n bottom: ${61 + buttonY}px;\n width: calc(100% - 40px);\n max-width: 410px;\n position: fixed;\n z-index: ${zIndexBase + 31};\n visibility: visible;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.16);\n border-radius: ${containerRadius}px;\n overflow: hidden;\n animation-duration: .3s;\n animation-fill-mode: both;\n animation-name: gleapFadeInUp;\n user-select: none;\n pointer-events: none;\n transition: max-width 0.3s ease-out;\n }\n\n .gleap-admin-highlight {\n box-shadow: 0px 0px 0px 4px red;\n }\n\n :root {\n --gleap-margin-top: 50px;\n }\n\n .gleap-tooltip-anchor {\n position: relative;\n display: inline-block;\n float: left;\n max-width: 0px;\n width: 17px;\n }\n\n .gleap-tooltip-hotspot {\n position: absolute;\n display: block;\n width: 17px;\n height: 17px;\n cursor: pointer;\n top: 0px;\n left: 0px;\n }\n\n @keyframes gleap-pulse {\n 0% {\n transform: scale(0);\n opacity: 0.25;\n }\n 45% {\n transform: scale(2.5);\n opacity: 0;\n }\n 100% {\n transform: scale(0);\n opacity: 0;\n }\n }\n\n .gleap-tooltip-hotspot-animation {\n position: absolute;\n border-radius: 17px;\n opacity: 0.25;\n display: block;\n width: 17px;\n height: 17px;\n cursor: pointer;\n top: 0px;\n left: 0px;\n animation: gleap-pulse 5s infinite;\n }\n\n .gleap-tooltip-hotspot svg {\n width: 17px;\n height: 17px;\n object-fit: contain;\n display: block;\n }\n\n .gleap-tooltip-inner {\n position: relative;\n overflow: visible;\n font-size: 14px;\n font-weight: normal;\n color: #000;\n line-height: 1.3;\n }\n\n .gleap-tooltip {\n position: absolute;\n background-color: #fff;\n color: #000;\n font-size: 15px;\n line-height: 18px;\n padding: 16px;\n padding-top: 8px;\n padding-bottom: 8px;\n border-radius: 4px;\n max-width: min(350px, 80vw);\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n opacity: 0;\n visibility: hidden;\n transition: opacity 0.2s, visibility 0.2s;\n z-index: ${zIndexBase + 100};\n }\n\n .gleap-tooltip a {\n color: ${primaryColor};\n text-decoration: underline;\n display: inline !important;\n margin: 0px !important;\n padding: 0px !important;\n word-break: break-word;\n }\n\n .gleap-tooltip ul {\n padding-left: 16px;\n }\n\n .gleap-tooltip b {\n font-weight: 600;\n }\n\n .gleap-tooltip h2 {\n font-size: 18px;\n line-height: 20px;\n font-weight: 600;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip h3 {\n font-size: 16px;\n line-height: 18px;\n font-weight: 600;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip p {\n padding: 0px;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip img {\n max-width: 100%;\n max-height: 300px;\n width: 100%;\n height: auto;\n object-fit: cover;\n margin-top: 8px;\n margin-bottom: 8px;\n border-radius: 4px;\n }\n\n .gleap-tooltip iframe,\n .gleap-tooltip video {\n max-width: 100%;\n width: 100%;\n height: auto;\n min-height: 200px;\n display: block;\n border: none;\n outline: none;\n padding: 0px;\n margin-top: 8px;\n margin-bottom: 8px;\n border-radius: 4px;\n }\n\n .gleap-tooltip-arrow {\n position: absolute;\n width: 20px;\n height: 20px;\n }\n\n .gleap-tooltip-arrow svg {\n width: 20px;\n height: 20px;\n object-fit: contain;\n }\n\n .gleap-b-frame {\n width: 100%;\n height: 100%;\n border: none;\n pointer-events: auto;\n padding: 0px;\n margin: 0px;\n }\n\n .gleap-b-shown {\n transition: margin 0.3s ease-out;\n margin-top: var(--gleap-margin-top);\n position: relative;\n z-index: 10000;\n }\n\n .gleap-b-f {\n margin-top: 0px;\n }\n\n .gleap-b {\n display: none;\n position: absolute;\n top: calc(-1 * var(--gleap-margin-top));\n left: 0px;\n width: 100vw;\n height: var(--gleap-margin-top);\n z-index: ${zIndexBase + 99};\n }\n\n @keyframes gleapSlideIn {\n from {\n top: calc(-1 * var(--gleap-margin-top));\n }\n to {\n top: 10px;\n }\n }\n\n .gleap-b-f .gleap-b {\n position: fixed;\n top: 10px;\n animation: gleapSlideIn .25s ease-out forwards;\n max-width: 800px;\n width: calc(100% - 20px);\n left: 50%;\n z-index: ${zIndexBase + 99};\n transform: translateX(-50%);\n border-radius: ${formItemBorderRadius}px;\n overflow: hidden;\n box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.15), 0px 5px 5px rgba(0, 0, 0, 0.05);\n }\n\n .gleap-b-shown .gleap-b {\n display: block;\n }\n\n .gleap-image-view {\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n z-index: ${zIndexBase + 99};\n background-color: ${contrastBackgroundColor}cc;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .gleap-image-view-image {\n width: 90%;\n height: auto;\n max-width: 90%;\n max-height: 90%;\n object-fit: contain;\n }\n\n .gleap-image-view-close {\n position: fixed;\n top: 20px;\n right: 20px;\n width: 32px;\n height: 32px;\n opacity: 0.8;\n z-index: ${zIndexBase + 140};\n box-shadow: 0px 5px 18px rgba(0, 0, 0, 0.16);\n cursor: pointer;\n }\n\n .gleap-image-view-close:hover {\n opacity: 1;\n }\n\n .gleap-image-view-close svg path {\n fill: ${backgroundColor};\n }\n\n [dir=rtl].gleap-frame-container {\n right: auto;\n left: ${buttonX}px;\n bottom: ${61 + buttonY}px;\n }\n\n .gleap-frame-container--loading iframe {\n opacity: 0;\n }\n\n .gleap-frame-container--loading::before {\n content: \" \";\n position: fixed;\n top: 0px;\n left: 0px;\n right: 0px;\n height: 100%;\n max-height: 380px;\n background: linear-gradient(\n 130deg,\n ${headerDarkColor} 0%,\n ${headerColor} 100%\n );\n }\n \n .gleap-frame-container--loading::after {\n content: \" \";\n position: fixed;\n top: 0px;\n left: 0px;\n right: 0px;\n height: 100%;\n height: 100%;\n max-height: 380px;\n background: linear-gradient(\n 180deg,\n transparent 60%,\n ${backgroundColor}1A 70%,\n ${backgroundColor} 100%\n );\n }\n\n .gleap-frame-container--loading-nogradient::before {\n max-height: 340px;\n background: ${headerColor} !important;\n }\n\n .gleap-frame-container--loading-nofade::after {\n display: none !important;\n }\n\n .gleap-frame-container--survey {\n bottom: ${buttonY}px !important;\n }\n\n .gleap-frame-container--extended {\n max-width: 690px !important;\n }\n\n .gleap-frame-container--survey-full {\n position: fixed;\n top: 0 !important;\n left: 0 !important;\n bottom: 0 !important;\n right: 0 !important;\n width: 100vw !important;\n max-width: 100vw !important;\n height: 100vh;\n height: 100dvh !important;\n background-color: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(6px);\n display: flex !important;\n justify-content: center !important;\n align-items: center !important;\n max-height: 100vh;\n max-height: 100dvh !important;\n border-radius: 0 !important;\n animation-name: none !important;\n }\n\n .gleap-frame-container--survey-full .gleap-frame-container-inner {\n max-width: 640px !important;\n width: calc(100% - 24px);\n border-radius: ${containerRadius}px;\n overflow: hidden;\n }\n\n .gleap-frame-container--classic {\n right: ${buttonX}px;\n bottom: ${buttonY}px;\n }\n\n [dir=rtl].gleap-frame-container--classic {\n right: auto;\n left: ${buttonX}px;\n bottom: ${buttonY}px;\n }\n\n .gleap-frame-container--no-button {\n bottom: ${buttonY}px;\n }\n\n [dir=rtl].gleap-frame-container--classic-left {\n bottom: ${buttonY}px;\n }\n\n .gleap-frame-container--classic-left {\n right: auto;\n left: ${buttonX}px;\n bottom: ${buttonY}px;\n }\n\n [dir=rtl].gleap-frame-container--classic-left {\n left: auto;\n right: ${buttonX}px;\n bottom: ${buttonY}px;\n }\n\n .gleap-frame-container--modern-left {\n right: auto;\n left: ${buttonX}px;\n bottom: ${61 + buttonY}px;\n }\n\n [dir=rtl].gleap-frame-container--modern-left {\n left: auto;\n right: ${buttonX}px;\n bottom: ${61 + buttonY}px;\n }\n\n .gleap-frame-container--animate {\n pointer-events: auto !important;\n }\n\n @keyframes gleapFadeInUp {\n from {\n opacity: 0;\n transform: translate3d(0, 100%, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n\n @keyframes gleapFadeInUpMobile {\n from {\n opacity: 0;\n transform: translate3d(0, 10%, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n\n .gleap-notification-container {\n position: fixed;\n bottom: ${bottomInfoOffset}px;\n right: ${buttonX}px;\n z-index: ${zIndexBase + 30};\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n width: 100%;\n max-width: min(340px, 80vw);\n }\n\n .gleap-notification-container--left {\n left: ${4 + buttonX}px;\n right: initial !important;\n }\n\n [dir=rtl].gleap-notification-container {\n left: ${4 + buttonX}px;\n right: initial !important;\n }\n\n [dir=rtl].gleap-notification-container--left {\n left: initial !important;\n right: ${buttonX}px !important;\n align-items: flex-start !important;\n }\n\n .gleap-notification-container--no-button {\n bottom: ${buttonY}px;\n }\n\n .gleap-notification-item {\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n\n .gleap-notification-close {\n border-radius: 100%;\n width: 28px;\n height: 28px;\n background-color: ${subTextColor};\n display: flex;\n justify-content: center;\n align-items: center;\n margin-bottom: 8px;\n cursor: pointer;\n visibility: hidden;\n pointer-events: none;\n }\n\n .gleap-notification-container:hover .gleap-notification-close {\n visibility: visible;\n pointer-events: auto;\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-notification-close {\n visibility: visible;\n pointer-events: auto;\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n }\n\n .gleap-notification-close svg {\n width: 45%;\n height: 45%;\n object-fit: contain;\n fill: ${backgroundColor};\n }\n\n .gleap-notification-item-checklist-container {\n display: flex;\n animation: fadeIn;\n animation-duration: .45s;\n background-color: ${backgroundColor};\n border-radius: ${subTextColor};\n box-sizing: border-box;\n cursor: pointer;\n flex-direction: column;\n overflow: hidden;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ${chatRadius}px;\n margin-bottom: 12px;\n }\n\n .gleap-notification-item-checklist-content {\n align-items: flex-start;\n display: flex;\n flex-direction: column;\n padding: 15px;\n width: 100%;\n width: min(310px, 70vw);\n max-width: min(310px, 70vw);\n }\n\n .gleap-notification-item-checklist-content-title {\n color: ${contrastBackgroundColor};\n font-size: 15px;\n font-weight: 500;\n line-height: 21px;\n margin-bottom: 10px;\n max-width: 100%;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .gleap-notification-item-checklist-content-progress {\n width: 100%;\n height: 8px;\n border-radius: 8px;\n background-color: ${backgroundColorHover};\n }\n\n .gleap-notification-item-checklist-content-progress-inner {\n height: 100%;\n border-radius: 8px;\n background-color: ${primaryColor};\n }\n\n .gleap-notification-item-checklist-content-next {\n color: ${subTextColor};\n font-size: 15px;\n font-weight: normal;\n line-height: 21px;\n margin-top: 10px;\n max-width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: flex;\n align-items: center;\n }\n\n .gleap-notification-item-checklist-content-next svg {\n height: 18px;\n margin-right: 5px;\n width: auto;\n }\n\n .gleap-notification-item-checklist-content-next b {\n font-size: 15px;\n font-weight: normal;\n color: ${contrastBackgroundColor};\n }\n\n .gleap-notification-item-news {\n width: 100%;\n }\n\n .gleap-news-pagination {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 10px;\n width: 100%;\n }\n\n .gleap-news-page-indicator {\n font-size: 12px;\n color: ${subTextColor};\n }\n\n .gleap-news-next-button {\n background-color: ${primaryColor};\n color: ${contrastColor};\n border-radius: ${formItemSmallBorderRadius}px;\n box-sizing: border-box;\n padding: 5px 10px;\n font-size: 14px;\n font-weight: bold;\n line-height: 21px;\n border: none;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: none !important;\n outline: none !important;^\n }\n\n .gleap-notification-item-news-content {\n align-items: flex-start;\n display: flex;\n flex-direction: column;\n padding: 15px;\n }\n\n .gleap-notification-item-news-preview {\n color: ${subTextColor};\n font-size: 14px;\n line-height: 21px;\n font-weight: 400;\n overflow-wrap: break-word;\n word-break: break-word;\n display: block;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .gleap-notification-item-news-sender {\n display: flex;\n align-items: center;\n color: ${subTextColor};\n font-size: 15px;\n line-height: 21px;\n font-weight: 400;\n }\n \n .gleap-notification-item-news-content-title {\n color: ${contrastBackgroundColor};\n font-size: 15px;\n font-weight: 500;\n line-height: 21px;\n margin-bottom: 6px;\n max-width: 100%;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n cursor: pointer;\n }\n\n .gleap-notification-item-news-sender img {\n border-radius: 100%;\n height: 20px;\n margin-right: 8px;\n object-fit: cover;\n width: 20px;\n }\n\n [dir=rtl] .gleap-notification-item-news-sender img {\n margin-left: 8px;\n margin-right: 0px !important;\n }\n\n .gleap-notification-item-news-container {\n display: flex;\n animation: fadeIn;\n animation-duration: .45s;\n background-color: ${backgroundColor};\n border-radius: ${subTextColor};\n box-sizing: border-box;\n flex-direction: column;\n overflow: hidden;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ${chatRadius}px;\n margin-bottom: 12px;\n }\n\n .gleap-notification-item-news-image {\n background-color: ${subTextColor};\n height: 170px;\n max-height: 170px;\n object-fit: cover;\n width: 100%;\n cursor: pointer;\n }\n \n .gleap-notification-item-news-content-title:hover {\n color: ${primaryColor};\n }\n\n .gleap-notification-item {\n display: flex;\n align-items: flex-end;\n cursor: pointer;\n }\n\n .gleap-notification-item img {\n width: 32px;\n height: 32px;\n min-width: 32px;\n border-radius: 100%;\n object-fit: cover;\n margin-right: 8px;\n margin-bottom: 12px;\n cursor: pointer;\n }\n\n [dir=rtl] .gleap-notification-item img {\n margin-left: 8px;\n margin-right: 0px !important;\n }\n\n .gleap-notification-item-container {\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ${chatRadius}px;\n border-bottom-left-radius: 0px;\n padding: 20px;\n background-color: ${backgroundColor};\n margin-bottom: 12px;\n cursor: pointer;\n font-size: 15px;\n line-height: 21px;\n color: ${contrastBackgroundColor};\n position: relative;\n }\n\n .gleap-notification-item-container::after {\n content: \" \";\n position: absolute;\n bottom: 0px;\n width: 0px;\n height: 0px;\n left: -6px;\n border-style: solid;\n border-width: 0px 0px 10px 6px;\n border-color: transparent transparent ${backgroundColor};\n }\n\n .gleap-notification-item-sender {\n color: ${subTextColor};\n line-height: 20px;\n }\n\n .gleap-notification-item-content {\n line-height: 20px;\n color: ${contrastBackgroundColor};\n margin-top: 4px;\n min-width: min(200px, 50vw);\n word-wrap: break-word;\n word-break: break-word;\n }\n\n .gleap-frame-container-inner {\n position: relative;\n width: 100%;\n height: calc(100vh - ${84 + buttonY}px);\n max-height: ${widgetMaxHeight}px;\n }\n\n .gleap-frame-container--survey .gleap-frame-container-inner {\n height: calc(100vh - 40px);\n }\n \n .gleap-frame-container-inner:before {\n content: \" \";\n position: absolute;\n width: 100%;\n height: calc(100% - ${containerRadius}px);\n top: ${containerRadius}px;\n background-color: ${backgroundColor};\n z-index: -1;\n }\n \n .gleap-frame-container iframe {\n height: 100% !important;\n width: 100% !important;\n max-width: 100% !important;\n display: block !important;\n pointer-events: auto !important;\n }\n \n .gleap-frame-container--hidden {\n display: none !important;\n pointer-events: none;\n animation: none !important;\n }\n \n .bb-feedback-button {\n margin: 0px;\n position: fixed;\n bottom: ${buttonY}px;\n right: ${buttonX}px;\n border-radius: 30px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n background-color: transparent;\n color: #000000;\n z-index: ${zIndexBase + 30};\n box-sizing: border-box;\n display: flex;\n align-items: center;\n padding: 0px;\n }\n\n [dir=rtl].bb-feedback-button {\n bottom: ${buttonY}px;\n right: auto;\n left: ${buttonX}px;\n }\n \n .bb-feedback-button--bottomleft {\n bottom: ${buttonY}px;\n right: auto;\n left: ${buttonX}px;\n }\n\n [dir=rtl].bb-feedback-button--bottomleft {\n bottom: ${buttonY}px;\n right: ${buttonX}px;\n left: auto;\n }\n \n .bb-feedback-button--disabled {\n display: none !important;\n }\n\n .bb-feedback-button--hidden {\n display: none !important;\n }\n \n .bb-feedback-button-text {\n padding: 8px 12px;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n background-color: #fff;\n border-radius: 8px;\n box-shadow: 0px 0px 14px 0px rgba(0, 0, 0, 0.15);\n position: relative;\n z-index: 99;\n }\n \n .bb-feedback-button-text:before {\n content: \"\";\n position: absolute;\n box-shadow: rgba(0, 0, 0, 0.04) 6px 6px 5px;\n transform: rotate(315deg);\n bottom: 16px;\n right: -4px;\n border-width: 10px;\n border-style: solid;\n border-color: transparent #fff #fff transparent;\n }\n \n .bb-feedback-button--bottomleft .bb-feedback-button-text:before {\n display: none;\n }\n \n .bb-feedback-button-text:after {\n content: \"\";\n position: absolute;\n bottom: 12px;\n right: 0px;\n background-color: #fff;\n width: 5px;\n height: 30px;\n }\n \n .bb-feedback-button-text-title {\n font-family: sans-serif;\n font-size: 14px;\n color: #666;\n line-height: 18px;\n max-width: 220px;\n }\n \n .bb-feedback-button-text-title b {\n color: #000000;\n font-weight: 600;\n }\n\n .bb-notification-bubble {\n position: absolute;\n top: -5px;\n right: -5px;\n min-width: 12px;\n padding: 0px 4px;\n height: 20px;\n min-width: 20px;\n border-radius: 20px;\n background-color: red;\n color: #fff;\n font-size: 11px;\n font-family: sans-serif;\n text-align: center;\n line-height: 20px;\n }\n\n .bb-notification-bubble--hidden {\n display: none;\n }\n \n .bb-feedback-button-icon {\n width: 48px;\n height: 48px;\n border-radius: 48px;\n background-color: #485bff;\n transition: box-shadow, transform 0.2s ease-in-out;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n position: relative;\n }\n \n .bb-feedback-button-classic {\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n top: 50%;\n right: 0px;\n position: fixed;\n transform: rotate(-90deg) translate(50%, -50%);\n transform-origin: 100% 50%;\n padding: 9px 20px;\n text-align: center;\n background-color: #485bff;\n border-top-left-radius: 8px;\n border-top-right-radius: 8px;\n font-family: sans-serif;\n font-size: 16px;\n color: #fff;\n box-shadow: 0px 0px 14px 0px rgba(0, 0, 0, 0.25);\n }\n\n [dir=rtl].bb-feedback-button .bb-feedback-button-classic {\n top: 50%;\n left: 0px;\n right: auto;\n transform: rotate(90deg) translate(-50%, -100%);\n transform-origin: 0% 0%;\n }\n \n .bb-feedback-button-classic--left {\n top: 50%;\n left: 0px;\n right: auto;\n transform: rotate(90deg) translate(-50%, -100%);\n transform-origin: 0% 0%;\n }\n\n [dir=rtl].bb-feedback-button .bb-feedback-button-classic--left {\n top: 50%;\n right: 0px;\n left: auto;\n transform: rotate(-90deg) translate(50%, -50%);\n transform-origin: 100% 50%;\n }\n \n .bb-feedback-button-classic--bottom {\n top: auto;\n bottom: 0px;\n transform: none;\n right: ${buttonX}px;\n left: auto;\n }\n \n [dir=rtl].bb-feedback-button .bb-feedback-button-classic--bottom {\n top: auto;\n bottom: 0px;\n transform: none;\n left: ${buttonX}px;\n right: auto;\n }\n\n .bb-feedback-button--classic-button-style {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n \n .bb-feedback-button--open.bb-feedback-button--classic-button-style {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: bbFadeOutRight;\n }\n \n .bb-feedback-button .bb-logo-logo {\n position: absolute;\n width: 30px;\n height: 30px;\n top: 9px;\n left: 9px;\n object-fit: contain;\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-name: bbZoomIn;\n }\n \n .bb-feedback-button .bb-logo-arrowdown {\n position: absolute;\n width: 14px;\n height: 14px;\n top: 17px;\n left: 17px;\n object-fit: contain;\n animation-duration: 0.3s;\n animation-fill-mode: both;\n }\n \n .bb-feedback-button .bb-logo-arrowdown {\n animation-name: bbZoomOut;\n }\n \n .bb-feedback-button--open .bb-logo-arrowdown {\n animation-name: bbZoomIn;\n }\n \n .bb-feedback-button--open .bb-logo-logo {\n animation-name: bbZoomOut;\n }\n \n .bb-feedback-button-icon:hover {\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.25), 0px 0px 20px rgba(0, 0, 0, 0.2);\n transform: scale(1.1);\n }\n \n .bb-feedback-button--open .bb-feedback-button-text {\n animation-name: bbFadeOutDown;\n }\n \n .bb-feedback-button--open .bb-feedback-button-icon {\n display: flex;\n }\n \n .bb-capture-svg {\n position: fixed;\n z-index: ${zIndexBase + 14};\n top: 0px;\n left: 0px;\n right: 0px;\n width: 100%;\n height: 100%;\n padding: 0px;\n margin: 0px;\n cursor: crosshair;\n }\n\n .bb-capture-svg--preview {\n cursor: auto !important;\n }\n \n .bb-rec-on-circle {\n animation-name: bbRecIconFade;\n animation-duration: 2s;\n animation-iteration-count: infinite;\n animation-direction: alternate;\n }\n \n .bb-rec-on-cont {\n animation-name: bbRecIconContFade;\n animation-duration: 2s;\n animation-iteration-count: infinite;\n animation-direction: alternate;\n }\n \n .bb-capture-editor-drag-info {\n position: fixed;\n top: -200px;\n left: 0px;\n z-index: ${zIndexBase + 16};\n transition: opacity 0.3s ease-in-out;\n }\n \n .bb-capture-editor-drag-info svg {\n width: 24px;\n height: 24px;\n }\n \n .bb-capture-editor-borderlayer {\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n border: 4px solid ${primaryColor};\n cursor: crosshair;\n z-index: ${zIndexBase + 10};\n box-sizing: border-box;\n pointer-events: none;\n }\n \n .bb-capture-editor-notrecording .bb-capture-editor-borderlayer {\n background-color: rgba(0, 0, 0, 0.8);\n }\n\n .bb-capture-editor-recording .bb-capture-editor-borderlayer {\n border: 4px solid #eb144c !important;\n }\n \n .bb-capture-editor-recording .bb-capture-dismiss {\n display: none;\n }\n \n .bb-capture-editor-item-inactive {\n opacity: 0.3;\n cursor: not-allowed !important;\n }\n \n .bb-capture-editor-notrecording .bb-capture-toolbar-drawingitem {\n opacity: 0.3;\n cursor: not-allowed !important;\n }\n \n .bb-capture-editor-notrecording .bb-capture-editor-drag-info {\n display: none;\n }\n \n .bb-capture-editor-notrecording .bb-capture-svg {\n pointer-events: none !important;\n }\n \n .bb-capture-toolbar {\n position: fixed;\n top: 20px;\n left: 50%;\n transform: translateX(-50%);\n z-index: ${zIndexBase + 18};\n background-color: #fff;\n padding: 5px;\n display: flex;\n align-items: center;\n border-radius: 8px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n transition: opacity 0.3s ease-in-out;\n }\n \n .bb-capture-dismiss {\n position: fixed;\n top: 0px;\n right: 0px;\n z-index: ${zIndexBase + 18};\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n width: 36px;\n height: 36px;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: ${primaryColor};\n border-bottom-left-radius: ${formItemSmallBorderRadius}px;\n }\n\n [dir=rtl] .bb-capture-dismiss {\n top: 0px;\n left: 0px;\n right: auto;\n border-bottom-left-radius: 0px !important;\n border-bottom-right-radius: ${formItemSmallBorderRadius}px;\n }\n \n .bb-capture-dismiss svg path {\n fill: ${contrastColor};\n }\n \n .bb-capture-dismiss svg {\n width: 20px;\n height: 20px;\n object-fit: contain;\n }\n \n .bb-capture-button-next {\n font-family: sans-serif;\n box-sizing: border-box;\n font-weight: 600;\n text-align: center;\n width: auto;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n margin: 0px;\n line-height: 36px;\n padding: 0px 12px;\n font-size: 15px;\n margin-left: 12px;\n }\n\n [dir=rtl].bb-capture-editor .bb-capture-button-next {\n margin-left: auto;\n margin-right: 12px;\n }\n \n .bb-capture-toolbar-item-spacer {\n width: 1px;\n height: 38px;\n min-width: 1px;\n margin: 0px 5px;\n }\n \n .bb-capture-toolbar-item {\n width: 42px;\n height: 38px;\n min-width: 42px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n position: relative;\n margin-right: 5px;\n }\n\n .drag-handle-item {\n cursor: grab !important;\n width: 34px;\n min-width: 34px;\n }\n\n .drag-handle-item svg {\n width: 18px !important;\n height: 18px !important;\n }\n \n .bb-capture-toolbar-item svg {\n width: 23px;\n height: 23px;\n object-fit: contain;\n }\n \n .bb-capture-toolbar-item-selectedcolor {\n border-radius: 100%;\n width: 20px;\n height: 20px;\n background-color: #db4035;\n }\n \n .bb-capture-toolbar-item[data-type=\"undo\"] svg {\n width: 18px;\n height: 18px;\n }\n \n .bb-capture-toolbar-item[data-active=\"true\"] {\n position: relative;\n }\n \n .bb-capture-preview {\n display: none;\n background-color: rgba(0, 0, 0, 0.6);\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n justify-content: center;\n align-items: center;\n z-index: ${zIndexBase + 20};\n }\n \n .bb-capture-preview-inner {\n background-color: #fff;\n padding: 0px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n border-radius: 8px;\n flex-direction: column;\n max-width: 640px;\n width: 100%;\n margin: 20px;\n }\n \n .bb-capture-preview-inner video {\n border-radius: 8px 8px 0px 0px;\n display: block;\n border: 0px;\n outline: none;\n width: 100%;\n max-height: 60vh;\n }\n \n .bb-capture-preview-buttons {\n display: flex;\n justify-content: space-between;\n padding: 14px;\n }\n \n .bb-capture-preview-retrybutton {\n font-family: sans-serif;\n border-radius: 21px;\n box-sizing: border-box;\n padding: 12px 26px;\n font-size: 16px;\n line-height: 19px;\n font-weight: 600;\n text-align: center;\n margin-top: 0px;\n margin-bottom: 0px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-preview-sendbutton {\n font-family: sans-serif;\n border-radius: 21px;\n box-sizing: border-box;\n padding: 12px 26px;\n font-size: 16px;\n line-height: 19px;\n font-weight: 600;\n text-align: center;\n margin-top: 0px;\n margin-bottom: 0px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-preview-retrybutton:hover,\n .bb-capture-preview-sendbutton:hover {\n opacity: 0.9;\n }\n \n .bb-capture-toolbar-item-recording {\n margin-right: 0px;\n }\n \n .bb-capture-toolbar-item-recording svg {\n width: 33px;\n height: 33px;\n }\n \n .bb-capture-toolbar-item-colorpicker {\n position: fixed;\n top: 70px;\n left: 50%;\n transform: translateX(-50%);\n z-index: ${zIndexBase + 18};\n background-color: #fff;\n display: none;\n padding: 10px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n border-radius: 8px;\n }\n \n .bb-capture-toolbar-item-color {\n width: 20px;\n height: 20px;\n border-radius: 100%;\n margin-right: 12px;\n box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.15);\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-toolbar-item-color:hover {\n box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.25);\n }\n \n .bb-capture-toolbar-item-color:last-of-type {\n margin-right: 0px;\n }\n \n [dir=rtl].bb-capture-editor .bb-capture-toolbar-item-color {\n margin-right: auto;\n margin-left: 12px;\n }\n \n [dir=rtl].bb-capture-editor .bb-capture-toolbar-item-color:last-of-type {\n margin-right: auto;\n margin-left: 0px;\n }\n \n .bb-capture-toolbar-item-recording[data-active=\"true\"] svg:first-of-type {\n display: none;\n }\n \n .bb-capture-toolbar-item-recording[data-active=\"true\"] svg:nth-of-type(2) {\n display: block;\n }\n \n .bb-capture-toolbar-item-recording[data-active=\"false\"] svg:first-of-type {\n display: block;\n }\n \n .bb-capture-toolbar-item-recording[data-active=\"false\"] svg:nth-of-type(2) {\n display: none;\n }\n \n .bb-capture-toolbar-item--active {\n background-color: #eee;\n }\n \n .bb-capture-toolbar-item:hover svg {\n opacity: 1;\n }\n \n .bb-capture-toolbar-item--active {\n background-color: #f8f8f8;\n }\n \n .bb-capture-toolbar-item--active svg {\n opacity: 1;\n }\n \n .bb-capture-toolbar-item--inactivecross::before {\n content: \"\";\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n height: 3px;\n width: 26px;\n margin: auto;\n border-radius: 4px;\n background-color: #e80000;\n transform: rotate(45deg);\n }\n \n .bb-capture-toolbar-item--inactivecross svg {\n fill: #eee;\n }\n \n .bb-capture-toolbar-item-timer {\n text-align: left;\n line-height: 32px;\n font-size: 14px;\n font-family: sans-serif;\n margin: 5px;\n min-width: 40px;\n display: none;\n }\n \n .bb-capture-toolbar-item .bb-tooltip {\n background-color: #555;\n color: #fff;\n visibility: hidden;\n font-size: 14px;\n font-family: sans-serif;\n text-align: center;\n padding: 5px 10px;\n position: absolute;\n z-index: 1;\n top: 45px;\n left: 0px;\n transform: translateX(calc(-50% + 21px));\n opacity: 0;\n transition: opacity 0.3s;\n white-space: nowrap;\n }\n \n .bb-capture-toolbar-item .bb-tooltip::after {\n content: \"\";\n position: absolute;\n bottom: 100%;\n left: 50%;\n margin-left: -5px;\n border-width: 5px;\n border-style: solid;\n transform: rotate(180deg);\n border-color: #555 transparent transparent transparent;\n }\n \n .bb-capture-toolbar-item:hover .bb-tooltip {\n visibility: visible;\n opacity: 1;\n }\n \n .bb-capture-options {\n display: none;\n }\n \n .bb-capture-options--active {\n display: flex;\n }\n\n @keyframes bbFadeOutRight {\n from {\n opacity: 1;\n }\n \n to {\n opacity: 0;\n }\n }\n \n @keyframes bbFadeOutDown {\n from {\n opacity: 1;\n }\n \n to {\n opacity: 0;\n transform: translate3d(0, 100%, 0);\n }\n }\n \n @keyframes bbFadeInOpacity {\n from {\n opacity: 0;\n }\n \n to {\n opacity: 1;\n }\n }\n \n @keyframes bbZoomOut {\n from {\n opacity: 1;\n }\n \n 50% {\n opacity: 0;\n transform: scale3d(0.3, 0.3, 0.3);\n }\n \n to {\n opacity: 0;\n }\n }\n \n @keyframes bbZoomIn {\n from {\n opacity: 0;\n transform: scale3d(0.3, 0.3, 0.3);\n }\n \n 50% {\n opacity: 1;\n }\n }\n \n @keyframes bbRecIconContFade {\n 0% {\n fill: #b10802;\n }\n 50% {\n fill: #ff0000;\n }\n 100% {\n fill: #b10802;\n }\n } \n .bb-capture-preview-retrybutton {\n color: ${contrastBackgroundColor};\n border-radius: ${buttonBorderRadius}px;\n background-color: ${backgroundColorHover};\n }\n .bb-capture-preview-retrybutton:hover {\n background-color: ${hoverHoverColor};\n }\n @keyframes bb-suc-fill {\n 100% {\n box-shadow: inset 0px 0px 0px 30px ${primaryColor};\n }\n }\n .bb-capture-toolbar-item-spacer {\n background-color: ${backgroundColorHover};\n }\n .bb-tooltip {\n border-radius: ${formItemBorderRadius}px;\n }\n @keyframes bbRecIconFade {\n 0% {\n fill: transparent;\n }\n 50% {\n fill: ${hoverHoverColor};\n }\n 100% {\n fill: transparent;\n }\n }\n .bb-capture-preview-sendbutton {\n color: ${contrastColor};\n background-color: ${primaryColor};\n border-radius: ${buttonBorderRadius}px;\n }\n .bb-capture-button-next {\n color: ${contrastColor};\n background-color: ${primaryColor};\n border-radius: ${formItemSmallBorderRadius}px;\n }\n .bb-capture-preview-inner {\n background-color: ${backgroundColor};\n border-radius: ${formItemBorderRadius}px;\n }\n .bb-capture-toolbar-item-timer {\n color: ${subTextColor};\n }\n .bb-svg-path {\n fill: ${contrastBackgroundColor};\n }\n .bb-capture-toolbar-item {\n border-radius: ${formItemBorderRadius}px;\n }\n .bb-capture-toolbar {\n background-color: ${backgroundColor};\n border-radius: ${formItemBorderRadius}px;\n }\n .bb-capture-toolbar-item-colorpicker {\n background-color: ${backgroundColor};\n }\n .bb-capture-toolbar-item--active {\n background-color: ${backgroundColorHover};\n }\n .bb-feedback-button-classic {\n border-top-left-radius: ${formItemBorderRadius}px;\n border-top-right-radius: ${formItemBorderRadius}px;\n }\n .bb-logo-logo--default path {\n fill: ${contrastButtonColor};\n }\n .bb-logo-arrowdown {\n fill: ${contrastButtonColor};\n }\n .bb-feedback-button-icon {\n background-color: ${buttonColor};\n }\n .bb-feedback-button-classic {\n background-color: ${buttonColor};\n color: ${contrastButtonColor};\n }\n\n @media only screen and (max-width: 450px) {\n [dir=rtl].gleap-frame-container,\n .gleap-frame-container {\n left: 0px;\n right: 0px;\n width: 100vw;\n max-width: 100vw;\n min-height: 100vh;\n max-height: 100vh;\n min-height: 100dvh !important;\n max-height: 100dvh !important;\n top: 0px;\n bottom: 0px;\n border-radius: 0px;\n animation-name: gleapFadeInUpMobile;\n }\n\n .gleap-frame-container-inner {\n width: 100vw;\n height: 100%;\n }\n\n .gleap-frame-container:not(.gleap-frame-container--survey):not(.gleap-frame-container--survey-full) .gleap-frame-container-inner {\n max-height: calc(var(--glvh, 1vh) * 100) !important;\n }\n\n .gleap-frame-container--survey {\n height: auto !important;\n top: initial !important;\n bottom: 0px !important;\n min-height: initial !important;\n }\n\n .gleap-frame-container--survey .gleap-frame-container-inner {\n height: 100vh !important;\n }\n\n .bb-tooltip {\n display: none !important;\n }\n \n .bb-capture-toolbar-item-colorpicker {\n top: 75px;\n }\n \n .bb-capture-button-next {\n margin-left: auto;\n }\n \n .bb-capture-dismiss {\n display: none;\n }\n \n .bb-capture-toolbar {\n top: 15px;\n right: 15px;\n left: 15px;\n width: auto;\n transform: none;\n }\n\n .bb-capture-editor-drag-info {\n display: none;\n }\n \n .bb-capture-editor-borderlayer {\n border-width: 4px;\n }\n }\n \n @media print {\n .bb-feedback-button {\n display: none !important;\n }\n \n .gleap-frame-container {\n display: none !important;\n }\n }\n\n .gleap-tour-sender {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n margin-bottom: 10px;\n }\n\n .gleap-tour-sender-image {\n width: 32px;\n height: 32px;\n border-radius: 32px;\n margin-right: 10px;\n background-size: cover;\n background-repeat: no-repeat;\n }\n\n .gleap-tour-popover.gleap-tour-popover-post {\n min-width: 550px;\n max-width: 550px;\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-tour-popover.gleap-tour-popover-post {\n min-width: calc(100vw - 40px);\n max-width: calc(100vw - 40px);\n }\n }\n\n .gleap-tour-message,\n .gleap-tour-message p,\n .gleap-tour-message ul {\n color: ${contrastBackgroundColor};\n }\n\n .gleap-tour-message h2 {\n font-weight: 600;\n font-size: 22px;\n }\n\n .gleap-tour-message h3 {\n font-weight: 600;\n font-size: 18px;\n }\n\n .gleap-tour-message p {\n line-height: 1.3;\n margin-bottom: 10px !important;\n margin-top: 10px !important;\n }\n\n .gleap-tour-message ul {\n line-height: 1.3;\n padding-left: 20px;\n margin-top: 10px !important;\n margin-bottom: 10px !important;\n }\n\n .gleap-tour-message {\n max-height: calc(80vh - 100px) !important;\n overflow-y: auto;\n min-width: 270px;\n }\n\n .gleap-tour-message::-webkit-scrollbar {\n width: 5px;\n }\n\n .gleap-tour-message::-webkit-scrollbar-track {\n border-radius: 0px;\n }\n \n .gleap-tour-message::-webkit-scrollbar-thumb {\n background: ${hoverHoverColor}; \n border-radius: 5px;\n }\n\n .gleap-tour-message::-webkit-scrollbar-thumb:hover {\n background: ${subTextColor};\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-tour-message {\n min-width: auto !important;\n }\n }\n\n .gleap-tour-message iframe {\n width: 100%;\n height: 300px;\n margin-top: 10px;\n margin-bottom: 10px;\n border: none;\n outline: none;\n display: block;\n }\n\n .gleap-tour-sender-name {\n font-size: 15px;\n }\n\n .gleap-tour-video {\n width: 100%;\n max-width: 100%;\n }\n\n .gleap-tour-video-svg--fullscreen {\n width: 100% !important;\n height: 100% !important;\n top: 0px !important;\n left: 0px !important;\n right: 0px !important;\n bottom: 0px !important;\n }\n\n .gleap-tour-video--playing .gleap-tour-video-playpause {\n opacity: 0;\n }\n \n .gleap-tour-video--playing:hover .gleap-tour-video-playpause {\n opacity: 1;\n }\n\n .gleap-tour-popover-video-pointer {\n padding: 0px !important;\n border-radius: 8px;\n position: relative;\n background-color: transparent !important;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-footer {\n position: absolute;\n top: 0px;\n left: 20px;\n right: 20px;\n opacity: 0;\n transition: opacity 200ms ease-in-out;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-footer button {\n padding: 5px 12px;\n }\n\n .gleap-tour-popover-video-pointer.gleap-tour-popover-can-close .gleap-tour-popover-footer {\n right: 40px !important;\n }\n\n .gleap-tour-popover-video-pointer:hover .gleap-tour-popover-footer {\n opacity: 1;\n }\n\n .gleap-tour-popover-pointer.gleap-tour-popover-no-sender .gleap-tour-message {\n padding-right: 20px;\n }\n\n .gleap-tour-video video {\n width: 100%;\n max-width: 100%;\n height: auto;\n border: none;\n outline: none;\n display: block;\n border-radius: 8px;\n }\n\n .gleap-admin-collapse-ui {\n z-index: ${zIndexBase + 35};\n cursor: pointer;\n position: fixed;\n bottom: 75px;\n right: 20px;\n width: 32px;\n height: 32px;\n border-radius: 100%;\n background-color: #fff;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: rgba(0, 0, 0, 0.16) 0px 10px 36px 0px, rgba(0, 0, 0, 0.06) 0px 0px 0px 1px;\n }\n\n .gleap-admin-collapse-ui svg {\n width: 20px;\n height: 14px;\n fill: #000 !important;\n }\n\n .gleap-admin-collapse-ui-active {\n bottom: 20px !important;\n }\n\n .gleap-admin-collapse-ui-active svg {\n transform: rotate(180deg);\n }\n\n .gleap-admin-frame-container-active {\n display: none !important;\n }\n\n .gleap-admin-frame-container {\n position: fixed;\n bottom: 0px;\n left: 0px;\n right: 0px;\n width: 100vw;\n z-index: ${zIndexBase + 40};\n }\n\n .gleap-admin-frame {\n width: 100%;\n height: 100% !important;\n border: none;\n outline: none;\n display: block;\n }\n \n .gleap-tour-message .linktype-link {\n display: inline-block !important;\n background-color: transparent !important;\n color: ${buttonColor} !important;\n }\n\n .gleap-tooltip .linktype-button,\n .gleap-tour-message .linktype-button {\n display: inline-block !important;\n border-radius: 5px;\n box-sizing: border-box;\n padding: 10px 20px !important;\n text-decoration: none !important;\n background-color: ${buttonColor} !important;\n color: ${contrastButtonColor} !important;\n }\n\n .gleap-tour-message img {\n width: 100%;\n max-width: 100%;\n min-height: 260px;\n height: auto;\n margin-top: 10px;\n margin-bottom: 10px;\n object-fit: cover;\n }\n\n .gleap-tour-active .gleap-tour-overlay {\n pointer-events: none;\n }\n \n .gleap-tour-active * {\n pointer-events: none;\n }\n \n .gleap-tour-active .gleap-tour-active-element,\n .gleap-tour-active .gleap-tour-active-element *,\n .gleap-tour-popover,\n .gleap-tour-popover * {\n pointer-events: auto;\n }\n \n @keyframes animate-fade-in {\n 0% {\n opacity: 0;\n }\n \n to {\n opacity: 1;\n }\n }\n \n .gleap-tour-fade .gleap-tour-overlay {\n animation: animate-fade-in 200ms ease-in-out;\n }\n \n .gleap-tour-fade .gleap-tour-popover {\n animation: animate-fade-in 200ms;\n }\n\n .gleap-tour-video-playpause {\n position: absolute;\n bottom: 8px;\n left: 8px;\n width: 32px;\n height: 32px;\n padding: 4px;\n background-color: rgba(0,0,0,0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border-radius: 8px;\n transition: opacity 200ms ease-in-out;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-arrow {\n display: none !important;\n }\n\n .gleap-tour-video-playpause svg {\n width: 34px;\n height: auto;\n fill: #fff;\n }\n \n /* Popover styles */\n .gleap-tour-popover {\n all: unset;\n box-sizing: border-box;\n color: #2d2d2d;\n margin: 0;\n padding: 15px;\n border-radius: ${formItemBorderRadius}px;\n min-width: 250px;\n max-width: 300px;\n box-shadow: 0 1px 10px #0006;\n z-index: 1000000000;\n position: fixed;\n top: 0;\n right: 0;\n background-color: #fff;\n }\n \n .gleap-tour-popover * {\n font-family: \"Helvetica Neue\", Inter, ui-sans-serif, \"Apple Color Emoji\", Helvetica, Arial, sans-serif;\n }\n \n .gleap-tour-popover-title {\n font: 19px / normal sans-serif;\n font-weight: 700;\n display: block;\n position: relative;\n line-height: 1.5;\n zoom: 1;\n margin: 0;\n }\n \n .gleap-tour-popover-close-btn {\n all: unset;\n position: absolute;\n top: 5px;\n right: 5px;\n width: 32px;\n height: 32px;\n cursor: pointer;\n font-size: 30px;\n font-weight: 500;\n line-height: 32px;\n color: #d2d2d2;\n z-index: 1;\n text-align: center;\n transition: color;\n transition-duration: 200ms;\n }\n \n .gleap-tour-popover-close-btn:hover,\n .gleap-tour-popover-close-btn:focus {\n color: #2d2d2d;\n }\n \n .gleap-tour-popover-title[style*=\"block\"] + .gleap-tour-popover-description {\n margin-top: 5px;\n }\n \n .gleap-tour-popover-description {\n margin-bottom: 0;\n font: 15px / normal sans-serif;\n line-height: 1.5;\n font-weight: 400;\n zoom: 1;\n }\n \n .gleap-tour-popover-footer {\n margin-top: 15px;\n text-align: right;\n zoom: 1;\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n \n .gleap-tour-popover-progress-text {\n font-size: 13px;\n font-weight: 400;\n color: #727272;\n zoom: 1;\n }\n \n .gleap-tour-popover-footer button {\n background-color: ${primaryColor};\n color: ${contrastColor};\n border-radius: ${formItemSmallBorderRadius}px;\n box-sizing: border-box;\n padding: 10px 20px;\n font-size: 14px;\n font-weight: bold;\n line-height: 21px;\n border: none;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: none !important;\n outline: none !important;\n }\n\n .gleap-tour-popover-prev-btn {\n color: ${contrastBackgroundColor} !important;\n background-color: ${backgroundColorHover} !important;\n margin-right: 3px;\n }\n\n .gleap-tour-popover-prev-btn:hover {\n background-color: ${primaryColor}22 !important;\n color: ${primaryColor} !important;\n }\n \n .gleap-tour-popover-footer .gleap-tour-popover-btn-disabled {\n opacity: 0.5;\n pointer-events: none;\n }\n \n /* Disable the scrolling of parent element if it has an active element*/\n :not(body):has(> .gleap-tour-active-element) {\n overflow: hidden !important;\n }\n \n .gleap-tour-no-interaction, .gleap-tour-no-interaction * {\n pointer-events: none !important;\n }\n \n .gleap-tour-popover-navigation-btns {\n display: flex;\n flex-grow: 1;\n justify-content: flex-end;\n }\n \n .gleap-tour-popover-navigation-btns button + button {\n margin-left: 4px;\n }\n \n .gleap-tour-popover-arrow {\n content: \"\";\n position: absolute;\n border: 5px solid #fff;\n }\n \n .gleap-tour-popover-arrow-side-over {\n display: none;\n }\n \n /** Popover Arrow Sides **/\n .gleap-tour-popover-arrow-side-left {\n left: 100%;\n border-right-color: transparent;\n border-bottom-color: transparent;\n border-top-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-right {\n right: 100%;\n border-left-color: transparent;\n border-bottom-color: transparent;\n border-top-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-top {\n top: 100%;\n border-right-color: transparent;\n border-bottom-color: transparent;\n border-left-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-bottom {\n bottom: 100%;\n border-left-color: transparent;\n border-top-color: transparent;\n border-right-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-center {\n display: none;\n }\n \n /* Left/Start + Right/Start */\n .gleap-tour-popover-arrow-side-left.gleap-tour-popover-arrow-align-start,\n .gleap-tour-popover-arrow-side-right.gleap-tour-popover-arrow-align-start {\n top: 15px;\n }\n \n /* Top/Start + Bottom/Start */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-start,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-start {\n left: 15px;\n }\n \n /* End/Left + End/Right */\n .gleap-tour-popover-arrow-align-end.gleap-tour-popover-arrow-side-left,\n .gleap-tour-popover-arrow-align-end.gleap-tour-popover-arrow-side-right {\n bottom: 15px;\n }\n \n /* Top/End + Bottom/End */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-end,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-end {\n right: 15px;\n }\n \n /* Left/Center + Right/Center */\n .gleap-tour-popover-arrow-side-left.gleap-tour-popover-arrow-align-center,\n .gleap-tour-popover-arrow-side-right.gleap-tour-popover-arrow-align-center {\n top: 50%;\n margin-top: -5px;\n }\n \n /* Top/Center + Bottom/Center */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-center,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-center {\n left: 50%;\n margin-left: -5px;\n }\n \n /* No arrow */\n .gleap-tour-popover-arrow-none {\n display: none;\n } \n\n /* Modal styles */\n .gleap-modal-wrapper {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: ${zIndexBase + 40};\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .gleap-modal-backdrop {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.5);\n z-index: ${zIndexBase + 41};\n }\n\n .gleap-modal {\n position: relative;\n width: 90%;\n max-width: 600px;\n max-height: 90vh;\n z-index: ${zIndexBase + 100};\n background-color: ${backgroundColor};\n border-radius: ${containerRadius}px;\n overflow: hidden;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-name: gleapFadeInUp;\n }\n\n .gleap-modal-frame {\n width: 100%;\n border: none;\n display: block;\n outline: none;\n }\n\n body.gleap-modal-open {\n overflow: hidden;\n }\n\n @keyframes gleapFadeInUp {\n from {\n opacity: 0;\n transform: translate3d(0, 20px, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n `;\n\n const oldNode = document.querySelector(\".gleap-styles\");\n if (oldNode) {\n oldNode.remove();\n }\n const node = document.createElement(\"style\");\n node.innerHTML = colorStyleSheet;\n node.className = \"gleap-styles\";\n document.body.appendChild(node);\n};\n\nexport const loadIcon = function (name, color) {\n if (name === \"button\") {\n return ``;\n }\n\n if (name === \"drag\") {\n return ``;\n }\n\n if (name === \"unmute\") {\n return ``;\n }\n\n if (name === \"mute\") {\n return ``;\n }\n\n if (name === \"replay\") {\n return `\n \n `;\n }\n\n if (name === \"dismiss\") {\n return ``;\n }\n\n if (name === \"blur\") {\n return `\n \n`;\n }\n\n if (name === \"pen\") {\n return `\n \n \n \n \n \n \n \n \n \n \n \n \n`;\n }\n\n if (name === \"rect\") {\n return `\n \n \n \n \n \n \n \n \n \n \n`;\n }\n\n if (name === \"pointer\") {\n return `\n \n `;\n }\n\n if (name === \"clip\") {\n return `\n \n \n \n \n \n`;\n }\n\n if (name === \"mic\") {\n return `\n \n \n \n \n `;\n }\n\n if (name === \"camera\") {\n return `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n`;\n }\n\n if (name === \"recorderon\") {\n return `\n \n \n \n \n \n \n \n \n \n \n \n`;\n }\n\n if (name === \"recorderoff\") {\n return `\n \n \n \n \n \n \n \n \n `;\n }\n\n if (name === \"arrowdown\") {\n return `\n \n `;\n }\n\n if (name === \"arrowleft\") {\n return `\n \n `;\n }\n\n if (name === \"close\") {\n return `\n \n `;\n }\n\n if (name === \"undo\") {\n return `\n \n \n \n \n \n \n \n \n \n `;\n }\n\n if (name === \"circle-dot\") {\n return ``;\n }\n\n if (name === \"circle-question\") {\n return ``;\n }\n\n if (name === \"circle-info\") {\n return ``;\n }\n\n if (name === \"circle-exclamation\") {\n return ``;\n }\n\n if (name === \"circle-up\") {\n return ``;\n }\n\n if (name === \"circle-right\") {\n return ``;\n }\n\n return \"\";\n};\n","class GleapNetworkIntercepter {\n startTimestamp = Date.now();\n requestId = 0;\n requests = {};\n externalRequests = [];\n maxRequests = 30;\n filters = [];\n defaultBlacklist = [\"gleap.io\"];\n blacklist = [];\n initialized = false;\n stopped = false;\n loadAllResources = false;\n\n // GleapNetworkIntercepter singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapNetworkIntercepter();\n }\n return this.instance;\n }\n\n setLoadAllResources(loadAllResources) {\n this.loadAllResources = loadAllResources;\n }\n\n isContentTypeSupported(contentType) {\n if (typeof contentType !== \"string\") {\n return false;\n }\n\n if (contentType === \"\") {\n return true;\n }\n\n contentType = contentType.toLocaleLowerCase();\n\n const supportedContentTypes = [\"text/\", \"xml\", \"json\"];\n for (var i = 0; i < supportedContentTypes.length; i++) {\n if (contentType.includes(supportedContentTypes[i])) {\n return true;\n }\n }\n\n return false;\n }\n\n getRequests() {\n var requests = JSON.parse(JSON.stringify(Object.values(this.requests)));\n\n // Merge external requests into internal requests.\n if (this.externalRequests && this.externalRequests.length > 0) {\n requests = requests.concat(this.externalRequests);\n }\n\n if (this.filters && this.filters.length > 0) {\n // Perform network log filtering.\n for (var i = 0; i < requests.length; i++) {\n var request = requests[i];\n\n // Headers\n if (request && request.request && request.request.headers) {\n for (var j = 0; j < this.filters.length; j++) {\n delete request.request.headers[this.filters[j]];\n }\n }\n\n // Payload\n if (request && request.request && request.request.payload) {\n var payloadObj = request.request.payload;\n try {\n payloadObj = JSON.parse(request.request.payload);\n } catch (e) { }\n\n if (payloadObj) {\n for (var j = 0; j < this.filters.length; j++) {\n delete payloadObj[this.filters[j]];\n }\n request.request.payload = JSON.stringify(payloadObj);\n }\n }\n\n // Response\n if (request && request.response && request.response.responseText) {\n try {\n var data = JSON.parse(request.response.responseText);\n for (var j = 0; j < this.filters.length; j++) {\n delete data[this.filters[j]];\n }\n request.response.responseText = JSON.stringify(data);\n } catch (e) { }\n }\n }\n }\n\n // Get static resources from performance.\n try {\n if (typeof window !== \"undefined\" && window.performance) {\n var resources = window.performance.getEntriesByType(\"resource\");\n for (var i = 0; i < resources.length; i++) {\n var resource = resources[i];\n if (resource && resource.name) {\n if ((this.loadAllResources || [\"xmlhttprequest\", \"fetch\"].indexOf(resource.initiatorType) > -1) && !requests.find(request => request.url === resource.name)) {\n requests.push({\n type: \"RESOURCE\",\n date: new Date(this.startTimestamp + resource.startTime),\n url: resource.name,\n duration: Math.round(resource.duration),\n initiatorType: resource.initiatorType\n });\n }\n }\n }\n }\n } catch (exp) { }\n\n var blacklist = this.blacklist.concat(this.defaultBlacklist);\n if (blacklist && blacklist.length > 0) {\n try {\n requests = requests.filter((request) => {\n for (var i = 0; i < blacklist.length; i++) {\n if (request && request.url && request.url.includes(blacklist[i])) {\n return false;\n }\n }\n return true;\n });\n } catch (exp) { }\n }\n\n return requests;\n }\n\n setMaxRequests(maxRequests) {\n if (maxRequests > 70) {\n maxRequests = 70;\n }\n this.maxRequests = maxRequests;\n }\n\n setStopped(stopped) {\n this.stopped = stopped;\n }\n\n setFilters(filters) {\n this.filters = this.filters.concat(filters ? filters : []);\n }\n\n setBlacklist(blacklist) {\n this.blacklist = this.blacklist.concat(blacklist ? blacklist : []);\n }\n\n cleanRequests() {\n var keys = Object.keys(this.requests);\n if (keys.length > this.maxRequests) {\n var keysToRemove = keys.slice(0, keys.length - this.maxRequests);\n for (var i = 0; i < keysToRemove.length; i++) {\n delete this.requests[keysToRemove[i]];\n }\n }\n }\n\n calcRequestTime(bbRequestId) {\n if (!bbRequestId || !this.requests || !this.requests[bbRequestId]) {\n return;\n }\n\n var startDate = this.requests[bbRequestId][\"date\"];\n if (startDate) {\n this.requests[bbRequestId][\"duration\"] =\n new Date().getTime() - startDate.getTime();\n }\n }\n\n getTextContentSize(text) {\n var size = 0;\n try {\n size = new TextEncoder().encode(text).length;\n } catch (exp) {\n try {\n size = encodeURI(s).split(/%..|./).length - 1;\n } catch (exp) {\n try {\n size = new Blob([text]).size;\n } catch (exp) {\n size = text.length;\n }\n }\n }\n\n const kiloBytes = size / 1024;\n const megaBytes = kiloBytes / 1024;\n return megaBytes;\n }\n\n cleanupContentSize(text) {\n const contentSize = this.getTextContentSize(text);\n if (contentSize > 0.15) {\n return \"\";\n }\n\n return text;\n }\n\n cleanupPayload(payload) {\n if (payload === undefined || payload === null) {\n return \"{}\";\n }\n\n try {\n if (typeof TextDecoder !== undefined && ArrayBuffer.isView(payload)) {\n let value = new TextDecoder().decode(payload);\n return value;\n }\n } catch (exp) { }\n\n return payload;\n }\n\n preparePayload(payload) {\n var payloadText = this.cleanupPayload(payload);\n return this.cleanupContentSize(payloadText);\n }\n\n start() {\n if (this.initialized) {\n return;\n }\n\n this.initialized = true;\n const self = this;\n this.interceptNetworkRequests({\n onFetch: (params, bbRequestId) => {\n if (this.stopped || !bbRequestId || !this.requests) {\n return;\n }\n\n if (\n params.length > 0 &&\n typeof params[0] !== \"undefined\" &&\n typeof params[0].url !== \"undefined\"\n ) {\n this.requests[bbRequestId] = {\n url: params[0].url,\n date: new Date(),\n request: {\n payload: \"\",\n headers:\n typeof params[0].headers !== \"undefined\"\n ? Object.fromEntries(params[0].headers.entries())\n : {},\n },\n type:\n typeof params[0].method !== \"undefined\" ? params[0].method : \"\",\n };\n } else {\n if (params.length >= 2 && params[1]) {\n var method =\n params[1] && params[1].method ? params[1].method : \"GET\";\n this.requests[bbRequestId] = {\n request: {\n payload: self.preparePayload(params[1].body),\n headers: params[1].headers,\n },\n type: method,\n url: params[0],\n date: new Date(),\n };\n } else {\n this.requests[bbRequestId] = {\n url: params[0],\n date: new Date(),\n };\n }\n }\n\n this.cleanRequests();\n },\n onFetchLoad: (req, bbRequestId) => {\n if (\n this.stopped ||\n !bbRequestId ||\n !this.requests ||\n !this.requests[bbRequestId]\n ) {\n return;\n }\n\n try {\n this.requests[bbRequestId][\"success\"] = true;\n this.requests[bbRequestId][\"response\"] = {\n status: req.status,\n statusText: \"\",\n responseText: \"\",\n };\n this.calcRequestTime(bbRequestId);\n } catch (exp) { }\n\n try {\n var contentType = \"\";\n if (req.headers && typeof req.headers.get !== \"undefined\") {\n contentType = req.headers.get(\"content-type\");\n }\n\n if (this.isContentTypeSupported(contentType)) {\n req\n .text()\n .then((responseText) => {\n if (this.requests[bbRequestId]) {\n this.requests[bbRequestId][\"success\"] = true;\n this.requests[bbRequestId][\"response\"] = {\n status: req.status,\n statusText: req.statusText,\n responseText: self.cleanupContentSize(responseText)\n };\n }\n this.calcRequestTime(bbRequestId);\n this.cleanRequests();\n })\n .catch((err) => {\n this.cleanRequests();\n });\n } else {\n if (this.requests[bbRequestId]) {\n this.requests[bbRequestId][\"success\"] = true;\n this.requests[bbRequestId][\"response\"] = {\n status: req.status,\n statusText: req.statusText,\n responseText: \"\",\n };\n }\n this.calcRequestTime(bbRequestId);\n this.cleanRequests();\n }\n } catch (exp) { }\n },\n onFetchFailed: (err, bbRequestId) => {\n if (\n this.stopped ||\n !bbRequestId ||\n !this.requests ||\n !this.requests[bbRequestId]\n ) {\n return;\n }\n\n this.requests[bbRequestId][\"success\"] = false;\n this.calcRequestTime(bbRequestId);\n this.cleanRequests();\n },\n onOpen: (request, args) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.bbRequestId &&\n args.length >= 2 &&\n this.requests\n ) {\n this.requests[request.bbRequestId] = {\n type: args[0],\n url: args[1],\n date: new Date(),\n };\n }\n\n this.cleanRequests();\n },\n onSend: (request, args) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.bbRequestId &&\n this.requests &&\n this.requests[request.bbRequestId]\n ) {\n this.requests[request.bbRequestId][\"request\"] = {\n payload: this.preparePayload(args.length > 0 ? args[0] : \"{}\"),\n headers: request.requestHeaders,\n };\n }\n\n this.cleanRequests();\n },\n onError: (request, args) => {\n if (\n !this.stopped &&\n this.requests &&\n request &&\n request.currentTarget &&\n request.currentTarget.bbRequestId &&\n this.requests[request.currentTarget.bbRequestId]\n ) {\n this.requests[request.currentTarget.bbRequestId][\"success\"] = false;\n this.calcRequestTime(request.bbRequestId);\n }\n\n this.cleanRequests();\n },\n onLoad: (request, args) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.currentTarget &&\n request.currentTarget.bbRequestId &&\n this.requests &&\n this.requests[request.currentTarget.bbRequestId]\n ) {\n var target = request.currentTarget;\n var responseType = target.responseType;\n var responseText = \"<\" + responseType + \">\";\n if (responseType === \"\" || responseType === \"text\") {\n responseText = this.cleanupContentSize(target.responseText);\n }\n\n this.requests[target.bbRequestId][\"success\"] = true;\n this.requests[target.bbRequestId][\"response\"] = {\n status: target.status,\n statusText: target.statusText,\n responseText: responseText,\n };\n\n this.calcRequestTime(target.bbRequestId);\n }\n\n this.cleanRequests();\n },\n });\n }\n\n interceptNetworkRequests(callback) {\n var self = this;\n const open = XMLHttpRequest.prototype.open;\n const send = XMLHttpRequest.prototype.send;\n\n // Only override open and send if they haven't been overridden already.\n if (XMLHttpRequest.prototype.gleapSetRequestHeader === undefined) {\n XMLHttpRequest.prototype.gleapSetRequestHeader =\n XMLHttpRequest.prototype.setRequestHeader;\n }\n\n if (XMLHttpRequest.prototype.gleapSetRequestHeader) {\n XMLHttpRequest.prototype.setRequestHeader = function (header, value) {\n if (!this.requestHeaders) {\n this.requestHeaders = {};\n }\n\n if (this.requestHeaders && this.requestHeaders.hasOwnProperty(header)) {\n return;\n }\n\n if (!this.requestHeaders[header]) {\n this.requestHeaders[header] = [];\n }\n\n this.requestHeaders[header].push(value);\n this.gleapSetRequestHeader(header, value);\n };\n }\n\n XMLHttpRequest.prototype.open = function () {\n this[\"bbRequestId\"] = ++self.requestId;\n callback.onOpen && callback.onOpen(this, arguments);\n if (callback.onLoad) {\n this.addEventListener(\"load\", callback.onLoad.bind(callback));\n }\n if (callback.onError) {\n this.addEventListener(\"error\", callback.onError.bind(callback));\n }\n return open.apply(this, arguments);\n };\n XMLHttpRequest.prototype.send = function () {\n callback.onSend && callback.onSend(this, arguments);\n return send.apply(this, arguments);\n };\n\n if (window.fetch) {\n (function () {\n var originalFetch = window.fetch;\n window.fetch = function () {\n var bbRequestId = ++self.requestId;\n callback.onFetch(arguments, bbRequestId);\n\n return originalFetch\n .apply(this, arguments)\n .then(function (response) {\n if (response && typeof response.clone === \"function\") {\n const data = response.clone();\n callback.onFetchLoad(data, bbRequestId);\n }\n\n return response;\n })\n .catch((err) => {\n callback.onFetchFailed(err, bbRequestId);\n throw err;\n });\n };\n })();\n }\n\n return callback;\n }\n\n blobToTextPromise(blob) {\n return new Promise(function (resolve, reject) {\n var fr = new FileReader();\n fr.onload = function (evt) {\n if (evt && evt.target && evt.target.result) {\n resolve(evt.target.result);\n } else {\n reject();\n }\n };\n fr.onerror = function (err) {\n reject(err);\n };\n fr.readAsText(blob);\n });\n }\n}\n\nexport default GleapNetworkIntercepter;\n","export const resizeImage = (base64Str, maxWidth = 400, maxHeight = 400) => {\n return new Promise((resolve, reject) => {\n var isJPEG = base64Str.indexOf(\"data:image/jpeg\") === 0;\n var img = new Image();\n img.src = base64Str;\n img.onerror = () => {\n reject();\n };\n img.onload = () => {\n var canvas = document.createElement(\"canvas\");\n var MAX_WIDTH = maxWidth;\n var MAX_HEIGHT = maxHeight;\n\n // Adjust max width / height based on image props\n if (maxWidth > img.width / 1.5) {\n MAX_WIDTH = img.width / 1.5;\n }\n\n if (maxHeight > img.height / 1.5) {\n MAX_HEIGHT = img.height / 1.5;\n }\n\n var width = img.width;\n var height = img.height;\n\n if (width > height) {\n if (width > MAX_WIDTH) {\n height *= MAX_WIDTH / width;\n width = MAX_WIDTH;\n }\n } else {\n if (height > MAX_HEIGHT) {\n width *= MAX_HEIGHT / height;\n height = MAX_HEIGHT;\n }\n }\n canvas.width = width;\n canvas.height = height;\n var ctx = canvas.getContext(\"2d\");\n ctx.drawImage(img, 0, 0, width, height);\n\n if (isJPEG) {\n resolve(canvas.toDataURL(\"image/jpeg\", 0.7));\n } else {\n resolve(canvas.toDataURL());\n }\n };\n });\n};\n\nexport const isMobile = () => {\n if (\n /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(\n navigator.userAgent\n ) ||\n /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(\n navigator.userAgent.substr(0, 4)\n )\n ) {\n return true;\n }\n return false;\n};\n\nexport const gleapDataParser = function (data) {\n if (typeof data === \"string\" || data instanceof String) {\n try {\n return JSON.parse(data);\n } catch (e) {\n return {};\n }\n }\n return data;\n};\n\nexport const truncateString = (str, num) => {\n if (str.length > num) {\n return str.slice(0, num) + \"...\";\n } else {\n return str;\n }\n};\n\nconst removeSubDomain = (v) => {\n try {\n var parts = v.split(\".\");\n var is2ndLevelDomain = false;\n const secondLevel = parts[parts.length - 2];\n if (\n secondLevel === \"co\" ||\n secondLevel === \"com\" ||\n secondLevel === \"gv\" ||\n secondLevel === \"ac\" ||\n secondLevel === \"edu\" ||\n secondLevel === \"gov\" ||\n secondLevel === \"mil\" ||\n secondLevel === \"net\" ||\n secondLevel === \"org\"\n ) {\n is2ndLevelDomain = true;\n }\n parts = parts.slice(is2ndLevelDomain ? -3 : -2);\n return parts.join(\".\");\n } catch (exp) {}\n return v;\n};\n\nexport const loadFromGleapCache = (key) => {\n try {\n const cachedData = localStorage.getItem(`gleap-widget-${key}`);\n if (cachedData) {\n const config = JSON.parse(cachedData);\n return config;\n }\n } catch (exp) {}\n return null;\n};\n\nexport const saveToGleapCache = (key, data) => {\n const k = `gleap-widget-${key}`;\n if (data) {\n try {\n localStorage.setItem(k, JSON.stringify(data));\n } catch (exp) {}\n } else {\n localStorage.removeItem(k);\n }\n};\n\nexport const setGleapCookie = (name, value, days) => {\n try {\n var expires = \"\";\n if (days) {\n var date = new Date();\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\n expires = \"; expires=\" + date.toUTCString();\n }\n const host = removeSubDomain(window.location.host.split(\":\")[0]);\n document.cookie =\n name + \"=\" + (value || \"\") + expires + \"; path=/; domain=\" + host;\n } catch (exp) {}\n};\n\nexport const getGleapCookie = (name) => {\n try {\n var nameEQ = name + \"=\";\n var ca = document.cookie.split(\";\");\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n while (c.charAt(0) == \" \") c = c.substring(1, c.length);\n if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);\n }\n } catch (exp) {}\n return null;\n};\n\nexport const eraseGleapCookie = (name) => {\n try {\n const host = removeSubDomain(window.location.host.split(\":\")[0]);\n document.cookie =\n name + \"=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT; Domain=\" + host;\n } catch (exp) {}\n};\n\nexport const getDOMElementDescription = (element, html = true) => {\n var innerText = truncateString(element.innerText || \"\", 40)\n .replace(/(\\r\\n|\\n|\\r)/gm, \"\")\n .replace(/ +(?= )/g, \"\");\n var elementId = \"\";\n var elementClass = \"\";\n if (typeof element.getAttribute !== \"undefined\") {\n const elemId = element.getAttribute(\"id\");\n if (elemId) {\n elementId = ` id=\"${elemId}\"`;\n }\n const elemClass = element.getAttribute(\"class\");\n if (elemClass) {\n elementClass = ` class=\"${elemClass}\"`;\n }\n }\n const elementTag = (element.tagName || \"\").toLowerCase();\n\n var htmlPre = \"<\";\n var htmlPost = \">\";\n if (!html) {\n htmlPre = \"[\";\n htmlPost = \"]\";\n }\n\n return `${htmlPre}${elementTag}${elementId}${elementClass}${htmlPost}${innerText}${htmlPre}/${elementTag}${htmlPost}`;\n};\n\nexport const runFunctionWhenDomIsReady = (callback) => {\n if (\n document.readyState === \"complete\" ||\n document.readyState === \"loaded\" ||\n document.readyState === \"interactive\"\n ) {\n callback();\n } else {\n document.addEventListener(\"DOMContentLoaded\", () => {\n callback();\n });\n }\n};\n\nexport const fixGleapHeight = () => {\n try {\n if (\n \"visualViewport\" in window &&\n /iPad|iPhone|iPod/.test(navigator.userAgent)\n ) {\n let initialHeight = window.innerHeight;\n\n function updateContainerHeight() {\n try {\n const gleapFrameContainer = document.querySelector(\n \".gleap-frame-container-inner iframe\"\n );\n\n if (!gleapFrameContainer) {\n return;\n }\n\n // Check if the keyboard is open\n if (window.visualViewport.height < initialHeight) {\n gleapFrameContainer.style.setProperty(\n \"max-height\",\n window.visualViewport.height + \"px\",\n \"important\"\n );\n } else {\n // Remove the padding bottom\n gleapFrameContainer.style.removeProperty(\"max-height\");\n }\n } catch (error) {}\n }\n\n function handleOrientationChange() {\n try {\n // Update initial dimensions\n initialHeight = window.innerHeight;\n updateContainerHeight();\n } catch (error) {}\n }\n\n // Update on resize (keyboard show/hide and viewport resize)\n window.visualViewport.addEventListener(\"resize\", updateContainerHeight);\n\n // Handle orientation changes\n window.addEventListener(\"orientationchange\", handleOrientationChange);\n\n // Update initially\n updateContainerHeight();\n }\n } catch (error) {}\n};\n","import { GleapSession, GleapTranslationManager } from \"./Gleap\"; // Adjust path if needed\n\n// Enum for request states\nconst RequestStatus = {\n PENDING: \"pending\",\n SUCCESS: \"success\",\n ERROR: \"error\",\n};\n\nclass ChecklistNetworkManager {\n static instance = null;\n\n /** @private {Map>} outboundId -> Promise */\n validationRequests = new Map();\n /** @private {Map} */\n validationCache = new Map(); // Caches final results (success/error)\n\n /** @private {Map>} internalId -> Promise */\n fetchRequests = new Map();\n /** @private {Map} */\n fetchCache = new Map(); // Caches final results (success/error)\n\n // Private constructor for Singleton\n constructor() {\n if (ChecklistNetworkManager.instance) {\n return ChecklistNetworkManager.instance;\n }\n ChecklistNetworkManager.instance = this;\n }\n\n /**\n * Gets the singleton instance of the ChecklistNetworkManager.\n * @returns {ChecklistNetworkManager} The singleton instance.\n */\n static getInstance() {\n if (!ChecklistNetworkManager.instance) {\n ChecklistNetworkManager.instance = new ChecklistNetworkManager();\n }\n return ChecklistNetworkManager.instance;\n }\n\n clearCache() {\n this.validationCache.clear();\n this.fetchCache.clear();\n this.validationRequests.clear();\n this.fetchRequests.clear();\n }\n\n /**\n * @private\n * Gets common query parameters for API requests.\n * @returns {string} Query parameter string.\n */\n _getQueryParams() {\n const gleapSessionInstance = GleapSession.getInstance();\n const session = gleapSessionInstance?.session;\n const lang =\n GleapTranslationManager.getInstance().getActiveLanguage() || \"en\";\n return `gleapId=${session?.gleapId || \"\"}&gleapHash=${\n session?.gleapHash || \"\"\n }&lang=${lang}`;\n }\n\n /**\n * @private\n * Gets the API base URL.\n * @returns {string | null} The API URL or null if not configured.\n */\n _getApiUrl() {\n const gleapSessionInstance = GleapSession.getInstance();\n return gleapSessionInstance?.apiUrl || null;\n }\n\n /**\n * @private\n * Makes an XMLHttpRequest and returns a Promise.\n * @param {string} method - HTTP method.\n * @param {string} url - The request URL.\n * @param {object|null} data - Data to send in the request body.\n * @returns {Promise} Promise resolving with parsed JSON response on success, rejecting on error.\n */\n _makeRequest(method, url, data) {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n xhr.open(method, url);\n\n const gleapSessionInstance = GleapSession.getInstance();\n gleapSessionInstance?.injectSession(xhr); // Inject session headers\n\n if (data) {\n xhr.setRequestHeader(\"Content-Type\", \"application/json;charset=UTF-8\");\n }\n\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n if (xhr.status >= 200 && xhr.status < 300) {\n try {\n // Handle potential empty success responses (e.g., 204)\n const responseData = xhr.responseText\n ? JSON.parse(xhr.responseText)\n : null;\n resolve(responseData);\n } catch (err) {\n reject({\n status: xhr.status,\n statusText: \"JSON Parse Error\",\n responseText: xhr.responseText,\n error: err,\n });\n }\n } else {\n reject({\n status: xhr.status,\n statusText: xhr.statusText,\n responseText: xhr.responseText,\n });\n }\n }\n };\n\n xhr.onerror = () => {\n reject({ status: 0, statusText: \"Network Error\", responseText: null });\n };\n\n xhr.send(data ? JSON.stringify(data) : null);\n });\n }\n\n /**\n * @private\n * Creates a cache key from outboundId and sharedKey\n * @param {string} outboundId - The public/outbound checklist ID.\n * @param {string|undefined} sharedKey - Optional shared key.\n * @returns {string} Combined cache key.\n */\n _createCacheKey(outboundId, sharedKey) {\n return sharedKey ? `${outboundId}::${sharedKey}` : outboundId;\n }\n\n /**\n * Validates an outbound checklist ID, returning a Promise for the internal ID.\n * Manages caching and deduplicates requests.\n * @param {string} outboundId - The public/outbound checklist ID.\n * @param {string} [sharedKey] - Optional shared key for the checklist.\n * @returns {Promise} A promise that resolves with the internal checklist ID.\n */\n validateChecklist(outboundId, sharedKey) {\n const cacheKey = this._createCacheKey(outboundId, sharedKey);\n\n // 1. Check cache for final result (success or error)\n const cachedResult = this.validationCache.get(cacheKey);\n if (cachedResult) {\n if (cachedResult.status === RequestStatus.SUCCESS) {\n return Promise.resolve(cachedResult.internalId);\n } else {\n return Promise.reject(cachedResult.error);\n }\n }\n\n // 2. Check for an ongoing request\n if (this.validationRequests.has(cacheKey)) {\n return this.validationRequests.get(cacheKey);\n }\n\n // 3. Start a new request\n const apiUrl = this._getApiUrl();\n if (!apiUrl) {\n const error = new Error(\n \"ChecklistNetworkManager: Gleap API URL not configured.\"\n );\n this.validationCache.set(cacheKey, {\n status: RequestStatus.ERROR,\n error,\n });\n return Promise.reject(error);\n }\n\n const url = `${apiUrl}/outbound/checklists?${this._getQueryParams()}`;\n const requestPromise = this._makeRequest(\"POST\", url, {\n outboundId,\n sharedKey,\n })\n .then((responseData) => {\n if (responseData && responseData.id) {\n this.validationCache.set(cacheKey, {\n status: RequestStatus.SUCCESS,\n internalId: responseData.id,\n });\n return responseData.id;\n } else {\n const error = new Error(\"Validation response missing checklist ID.\");\n this.validationCache.set(cacheKey, {\n status: RequestStatus.ERROR,\n error: responseData || error,\n });\n throw error; // Rethrow to be caught by catch block\n }\n })\n .catch((error) => {\n // Store the error object itself in the cache\n this.validationCache.set(cacheKey, {\n status: RequestStatus.ERROR,\n error,\n });\n throw error; // Re-throw so callers can catch it\n })\n .finally(() => {\n // Remove from pending requests map once done (success or fail)\n this.validationRequests.delete(cacheKey);\n });\n\n // Store the promise for potential concurrent requests\n this.validationRequests.set(cacheKey, requestPromise);\n return requestPromise;\n }\n\n /**\n * Fetches the full checklist data using the internal ID, returning a Promise.\n * Manages caching and deduplicates requests.\n * @param {string} internalId - The internal checklist ID.\n * @returns {Promise} A promise that resolves with the full checklist data.\n */\n fetchChecklist(internalId) {\n // 1. Check cache for final result (success or error)\n const cachedResult = this.fetchCache.get(internalId);\n if (cachedResult) {\n if (cachedResult.status === RequestStatus.SUCCESS) {\n // Return a deep copy to prevent mutation issues if multiple components use it\n return Promise.resolve(JSON.parse(JSON.stringify(cachedResult.data)));\n } else {\n return Promise.reject(cachedResult.error);\n }\n }\n\n // 2. Check for an ongoing request\n if (this.fetchRequests.has(internalId)) {\n // Return a promise that resolves with a deep copy\n return this.fetchRequests\n .get(internalId)\n .then((data) => JSON.parse(JSON.stringify(data)));\n }\n\n // 3. Start a new request\n const apiUrl = this._getApiUrl();\n if (!apiUrl) {\n const error = new Error(\n \"ChecklistNetworkManager: Gleap API URL not configured.\"\n );\n this.fetchCache.set(internalId, { status: RequestStatus.ERROR, error });\n return Promise.reject(error);\n }\n\n const url = `${apiUrl}/outbound/checklists/${internalId}?convertTipTap=true&${this._getQueryParams()}`;\n const requestPromise = this._makeRequest(\"GET\", url, null)\n .then((responseData) => {\n if (responseData) {\n // Cache the successful data\n this.fetchCache.set(internalId, {\n status: RequestStatus.SUCCESS,\n data: responseData,\n });\n // Return a deep copy of the data\n return JSON.parse(JSON.stringify(responseData));\n } else {\n // Should not happen with successful GET usually, but handle defensively\n const error = new Error(\n \"Empty response received for checklist fetch.\"\n );\n this.fetchCache.set(internalId, {\n status: RequestStatus.ERROR,\n error: responseData || error,\n });\n throw error;\n }\n })\n .catch((error) => {\n this.fetchCache.set(internalId, { status: RequestStatus.ERROR, error });\n throw error; // Re-throw so callers can catch it\n })\n .finally(() => {\n // Remove from pending requests map once done (success or fail)\n this.fetchRequests.delete(internalId);\n });\n\n this.fetchRequests.set(internalId, requestPromise);\n // Return a promise that resolves with a deep copy\n return requestPromise.then((data) => JSON.parse(JSON.stringify(data)));\n }\n}\n\nexport default ChecklistNetworkManager;\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n const lr = ['left', 'right'];\n const rl = ['right', 'left'];\n const tb = ['top', 'bottom'];\n const bt = ['bottom', 'top'];\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rl : lr;\n return isStart ? lr : rl;\n case 'left':\n case 'right':\n return isStart ? tb : bt;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n return {\n ...rect,\n top: rect.y,\n left: rect.x,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n ...rects.floating,\n x,\n y\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n if (!specifiedFallbackPlacements && fallbackAxisSideDirection !== 'none') {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$map$so;\n const placement = (_overflowsData$map$so = overflowsData.map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$map$so[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: 0,\n crossAxis: 0,\n alignmentAxis: null,\n ...rawValue\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = ['top', 'left'].includes(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const overflowAvailableHeight = height - overflow[heightSide];\n const overflowAvailableWidth = width - overflow[widthSide];\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if (isYAxis) {\n const maximumClippingWidth = width - overflow.left - overflow.right;\n availableWidth = alignment || noShift ? min(overflowAvailableWidth, maximumClippingWidth) : maximumClippingWidth;\n } else {\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n availableHeight = alignment || noShift ? min(overflowAvailableHeight, maximumClippingHeight) : maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n // Browsers without `ShadowRoot` support.\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isContainingBlock(element) {\n const webkit = isWebKit();\n const css = getComputedStyle(element);\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n return css.transform !== 'none' || css.perspective !== 'none' || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else {\n currentNode = getParentNode(currentNode);\n }\n }\n return null;\n}\nfunction isWebKit() {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nfunction isLastTraversableNode(node) {\n return ['html', 'body', '#document'].includes(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.pageXOffset,\n scrollTop: element.pageYOffset\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], win.frameElement && traverseIframes ? getOverflowAncestors(win.frameElement) : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isWebKit };\n","import { rectToClientRect, autoPlacement as autoPlacement$1, shift as shift$1, flip as flip$1, size as size$1, hide as hide$1, arrow as arrow$1, inline as inline$1, limitShift as limitShift$1, computePosition as computePosition$1 } from '@floating-ui/core';\nexport { detectOverflow, offset } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement, isElement, getWindow, isWebKit, getDocumentElement, getNodeName, isOverflowElement, getNodeScroll, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = currentWin.frameElement;\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = currentWin.frameElement;\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\nconst topLayerSelectors = [':popover-open', ':modal'];\nfunction isTopLayer(floating) {\n return topLayerSelectors.some(selector => {\n try {\n return floating.matches(selector);\n } catch (e) {\n return false;\n }\n });\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\nfunction getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n ...clippingAncestor,\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n const x = rect.left + scroll.scrollLeft - offsets.x;\n const y = rect.top + scroll.scrollTop - offsets.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n return element.offsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const window = getWindow(element);\n if (!isHTMLElement(element) || isTopLayer(element)) {\n return window;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && !isContainingBlock(offsetParent))) {\n return window;\n }\n return offsetParent || getContainingBlock(element) || window;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n ...(await getDimensionsFn(data.floating))\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const {\n left,\n top,\n width,\n height\n } = element.getBoundingClientRect();\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 100);\n } else {\n refresh(false, ratio);\n }\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle `;\n document.body.appendChild(elem);\n\n this.gleapFrameContainer = elem;\n this.gleapFrame = document.querySelector(\".gleap-frame\");\n\n this.updateFrameStyle();\n\n // Show loading preview for widget app mode.\n if (this.appMode === \"widget\") {\n this.showFrameContainer(true);\n }\n });\n });\n };\n\n showImage = (url) => {\n runFunctionWhenDomIsReady(() => {\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-image-view\";\n elem.innerHTML = `
\n \n
`;\n document.body.appendChild(elem);\n\n const closeElement = () => {\n elem.remove();\n };\n\n const close = elem.querySelector(\".gleap-image-view-close\");\n close.addEventListener(\"click\", () => {\n closeElement();\n });\n\n elem.addEventListener(\"click\", (e) => {\n if (e.target === elem) {\n closeElement();\n }\n });\n });\n };\n\n updateFrameStyle = () => {\n if (!this.gleapFrameContainer) {\n return;\n }\n\n const surveyStyle = \"gleap-frame-container--survey\";\n const extendedStyle = \"gleap-frame-container--extended\";\n const surveyFullStyle = \"gleap-frame-container--survey-full\";\n const classicStyle = \"gleap-frame-container--classic\";\n const classicStyleLeft = \"gleap-frame-container--classic-left\";\n const modernStyleLeft = \"gleap-frame-container--modern-left\";\n const noButtonStyleLeft = \"gleap-frame-container--no-button\";\n const allStyles = [\n classicStyle,\n classicStyleLeft,\n extendedStyle,\n modernStyleLeft,\n noButtonStyleLeft,\n surveyStyle,\n surveyFullStyle,\n ];\n for (let i = 0; i < allStyles.length; i++) {\n this.gleapFrameContainer.classList.remove(allStyles[i]);\n }\n\n var styleToApply = undefined;\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM\n ) {\n styleToApply = classicStyle;\n }\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT\n ) {\n styleToApply = classicStyleLeft;\n }\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_BOTTOM_LEFT\n ) {\n styleToApply = modernStyleLeft;\n }\n if (GleapFeedbackButtonManager.getInstance().buttonHidden === null) {\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_NONE\n ) {\n styleToApply = noButtonStyleLeft;\n }\n } else {\n if (GleapFeedbackButtonManager.getInstance().buttonHidden) {\n styleToApply = noButtonStyleLeft;\n }\n }\n if (styleToApply) {\n this.gleapFrameContainer.classList.add(styleToApply);\n }\n\n if (this.appMode === \"survey\") {\n this.gleapFrameContainer.classList.add(surveyStyle);\n }\n if (this.appMode === \"survey_full\" || this.appMode === \"survey_web\") {\n this.gleapFrameContainer.classList.add(surveyFullStyle);\n }\n if (this.appMode === \"extended\") {\n this.gleapFrameContainer.classList.add(extendedStyle);\n }\n\n this.gleapFrameContainer.setAttribute(\n \"dir\",\n GleapTranslationManager.getInstance().isRTLLayout ? \"rtl\" : \"ltr\"\n );\n };\n\n showFrameContainer(showLoader) {\n if (!this.gleapFrameContainer) {\n return;\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const loadingClass = \"gleap-frame-container--loading\";\n if (this.gleapFrameContainer.classList) {\n this.gleapFrameContainer.classList.remove(\n \"gleap-frame-container--hidden\"\n );\n if (showLoader) {\n this.gleapFrameContainer.classList.add(loadingClass);\n\n if (flowConfig.disableBGFade) {\n this.gleapFrameContainer.classList.add(\n \"gleap-frame-container--loading-nofade\"\n );\n }\n if (flowConfig.disableBGGradient) {\n this.gleapFrameContainer.classList.add(\n \"gleap-frame-container--loading-nogradient\"\n );\n }\n } else {\n this.gleapFrameContainer.classList.remove(loadingClass);\n }\n\n setTimeout(() => {\n this.gleapFrameContainer.classList.add(\n \"gleap-frame-container--animate\"\n );\n }, 500);\n }\n\n this.widgetOpened = true;\n this.updateUI();\n }\n\n runWidgetShouldOpenCallback() {\n if (!this.gleapFrameContainer) {\n return;\n }\n\n this.workThroughQueue();\n\n Gleap.getInstance().setGlobalDataItem(\"snapshotPosition\", {\n x: window.scrollX,\n y: window.scrollY,\n });\n\n this.showFrameContainer(false);\n this.updateWidgetStatus();\n\n GleapEventManager.notifyEvent(\"open\");\n this.registerEscListener();\n }\n\n updateUI() {\n // Clear notifications only when not opening a survey.\n GleapNotificationManager.getInstance().clearAllNotifications(\n this.isSurvey()\n );\n\n GleapFeedbackButtonManager.getInstance().updateNotificationBadge(0);\n GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n }\n\n showWidget() {\n setTimeout(() => {\n if (this.gleapFrameContainer) {\n this.runWidgetShouldOpenCallback();\n } else {\n GleapFrameManager.getInstance().injectFrame();\n }\n this.updateUI();\n }, 0);\n }\n\n updateWidgetStatus() {\n this.sendMessage({\n name: \"widget-status-update\",\n data: {\n isWidgetOpen: this.widgetOpened,\n },\n });\n }\n\n hideMarkerManager() {\n if (this.markerManager) {\n this.markerManager.clear();\n this.markerManager = null;\n }\n }\n\n hideWidget(resetRoutes = false) {\n // Prevent for survey web.\n if (this.appMode === \"survey_web\") {\n return;\n }\n\n this.hideMarkerManager();\n if (this.gleapFrameContainer) {\n this.gleapFrameContainer.classList.add(\"gleap-frame-container--hidden\");\n this.gleapFrameContainer.classList.remove(\n \"gleap-frame-container--animate\"\n );\n }\n if (resetRoutes) {\n this.sendMessage({\n name: \"reset-routes\",\n data: {},\n });\n }\n this.widgetOpened = false;\n this.updateWidgetStatus();\n GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n GleapEventManager.notifyEvent(\"close\");\n GleapNotificationManager.getInstance().reloadNotificationsFromCache();\n\n this.unregisterEscListener();\n\n if (typeof window !== \"undefined\" && typeof window.focus !== \"undefined\") {\n window.focus();\n }\n }\n\n sendMessage(data, queue = false) {\n try {\n this.gleapFrame = document.querySelector(\".gleap-frame\");\n if (this.comReady && this.gleapFrame && this.gleapFrame.contentWindow) {\n this.gleapFrame.contentWindow.postMessage(JSON.stringify(data), \"*\");\n } else {\n if (queue) {\n this.queue.push(data);\n }\n }\n } catch (e) {}\n }\n\n sendSessionUpdate() {\n this.sendMessage({\n name: \"session-update\",\n data: {\n sessionData: GleapSession.getInstance().getSession(),\n apiUrl: GleapSession.getInstance().apiUrl,\n sdkKey: GleapSession.getInstance().sdkKey,\n },\n });\n }\n\n sendConfigUpdate() {\n if (!this.comReady) {\n return;\n }\n\n this.sendMessage({\n name: \"config-update\",\n data: {\n config: GleapConfigManager.getInstance().getFlowConfig(),\n aiTools: GleapConfigManager.getInstance().getAiTools(),\n overrideLanguage:\n GleapTranslationManager.getInstance().getOverrideLanguage(),\n },\n });\n\n this.updateFrameStyle();\n }\n\n showDrawingScreen(type) {\n this.hideWidget();\n\n // Show screen drawing.\n this.markerManager = new GleapMarkerManager(type);\n this.markerManager.show((success) => {\n if (!success) {\n this.hideMarkerManager();\n }\n this.showWidget();\n });\n }\n\n workThroughQueue() {\n const workQueue = [...this.queue];\n this.queue = [];\n for (let i = 0; i < workQueue.length; i++) {\n this.sendMessage(workQueue[i], true);\n }\n }\n\n startCommunication() {\n // Listen for messages.\n this.addMessageListener((data) => {\n if (data.name === \"ping\") {\n this.comReady = true;\n this.sendConfigUpdate();\n this.sendSessionUpdate();\n this.workThroughQueue();\n setTimeout(() => {\n this.runWidgetShouldOpenCallback();\n }, 300);\n }\n\n if (data.name === \"play-ping\") {\n GleapAudioManager.ping();\n }\n\n if (data.name === \"open-image\") {\n this.showImage(data.data.url);\n }\n\n if (data.name === \"page-changed\") {\n if (\n data.data &&\n (data.data.name === \"newsdetails\" || data.data.name === \"appextended\")\n ) {\n this.setAppMode(\"extended\");\n } else {\n if (this.appMode === \"extended\") {\n this.setAppMode(\"widget\");\n }\n }\n }\n\n if (data.name === \"collect-ticket-data\") {\n var ticketData = {\n customData: GleapCustomDataManager.getInstance().getCustomData(),\n metaData: GleapMetaDataManager.getInstance().getMetaData(),\n consoleLog: GleapConsoleLogManager.getInstance().getLogs(),\n networkLogs: GleapNetworkIntercepter.getInstance().getRequests(),\n customEventLog: GleapStreamedEvent.getInstance().getEventArray(),\n formData: GleapCustomDataManager.getInstance().getTicketAttributes(),\n };\n\n // Add tags\n const tags = GleapTagManager.getInstance().getTags();\n if (tags && tags.length > 0) {\n ticketData.tags = tags;\n }\n\n this.sendMessage({\n name: \"collect-ticket-data\",\n data: ticketData,\n });\n }\n\n if (data.name === \"height-update\") {\n this.frameHeight = data.data;\n\n const innerContainer = document.querySelector(\n \".gleap-frame-container-inner\"\n );\n if (\n (this.appMode === \"survey\" ||\n this.appMode === \"survey_full\" ||\n this.appMode === \"survey_web\") &&\n innerContainer\n ) {\n innerContainer.style.maxHeight = `${this.frameHeight}px`;\n }\n }\n\n if (data.name === \"notify-event\") {\n GleapEventManager.notifyEvent(data.data.type, data.data.data);\n }\n\n if (data.name === \"cleanup-drawings\") {\n this.hideMarkerManager();\n }\n\n if (data.name === \"open-url\") {\n const url = data.data;\n const newTab = data.newTab ? true : false;\n this.urlHandler(url, newTab);\n }\n\n if (data.name === \"start-product-tour\") {\n Gleap.startProductTour(data.data?.tourId, true);\n }\n\n if (data.name === \"run-custom-action\") {\n GleapCustomActionManager.triggerCustomAction(data.data, {\n shareToken: data.shareToken,\n });\n }\n\n if (data.name === \"close-widget\") {\n this.hideWidget();\n }\n\n if (data.name === \"tool-execution\") {\n GleapEventManager.notifyEvent(\"tool-execution\", data.data);\n }\n\n if (data.name === \"send-feedback\") {\n const formData = data.data.formData;\n const action = data.data.action;\n const outboundId = data.data.outboundId;\n const spamToken = data.data.spamToken;\n\n const feedback = new GleapFeedback(\n action.feedbackType,\n \"MEDIUM\",\n formData,\n false,\n action.excludeData,\n outboundId,\n spamToken\n );\n feedback\n .sendFeedback()\n .then((feedbackData) => {\n this.sendMessage({\n name: \"feedback-sent\",\n data: feedbackData,\n });\n GleapEventManager.notifyEvent(\"feedback-sent\", formData);\n\n if (outboundId && outboundId.length > 0) {\n GleapEventManager.notifyEvent(\"outbound-sent\", {\n outboundId: outboundId,\n outbound: action,\n formData: formData,\n });\n\n try {\n delete formData.reportedBy;\n } catch (e) {}\n Gleap.trackEvent(`outbound-${outboundId}-submitted`, formData);\n }\n })\n .catch((error) => {\n this.sendMessage({\n name: \"feedback-sending-failed\",\n data: \"Something went wrong, please try again.\",\n });\n GleapEventManager.notifyEvent(\"error-while-sending\");\n });\n }\n\n if (data.name === \"start-screen-drawing\") {\n this.showDrawingScreen(data.data);\n }\n });\n\n // Add window message listener.\n window.addEventListener(\"message\", (event) => {\n if (\n event.origin !== this.frameUrl &&\n event.origin !== GleapBannerManager.getInstance().bannerUrl\n ) {\n return;\n }\n\n try {\n const data = JSON.parse(event.data);\n for (var i = 0; i < this.listeners.length; i++) {\n if (this.listeners[i]) {\n this.listeners[i](data);\n }\n }\n } catch (exp) {}\n });\n }\n\n addMessageListener(callback) {\n this.listeners.push(callback);\n }\n}\n","import { isMobile } from \"./GleapHelper\";\n\nexport default class GleapMetaDataManager {\n sessionStart = new Date();\n appBuildNumber = \"\";\n appVersionCode = \"\";\n environment = \"prod\";\n\n // GleapMetaDataManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapMetaDataManager();\n }\n return this.instance;\n }\n\n /**\n * Sets the app version code.\n * @param {string} appVersionCode\n */\n static setAppVersionCode(appVersionCode) {\n this.getInstance().appVersionCode = appVersionCode;\n }\n\n /**\n * Sets the app version code.\n * @param {string} appVersionCode\n */\n static setAppBuildNumber(appBuildNumber) {\n this.getInstance().appBuildNumber = appBuildNumber;\n }\n\n getSessionDuration() {\n const now = new Date();\n return Math.round((now.getTime() - this.sessionStart.getTime()) / 1000);\n }\n\n getMetaData() {\n var nAgt = navigator.userAgent;\n var browserName = navigator.appName;\n var fullVersion = \"\" + parseFloat(navigator.appVersion);\n var majorVersion = parseInt(navigator.appVersion, 10);\n var nameOffset, verOffset, ix;\n\n // In Opera, the true version is after \"Opera\" or after \"Version\"\n if ((verOffset = nAgt.indexOf(\"Opera\")) !== -1) {\n browserName = \"Opera\";\n fullVersion = nAgt.substring(verOffset + 6);\n if ((verOffset = nAgt.indexOf(\"Version\")) !== -1)\n fullVersion = nAgt.substring(verOffset + 8);\n }\n // In MSIE, the true version is after \"MSIE\" in userAgent\n else if ((verOffset = nAgt.indexOf(\"MSIE\")) !== -1) {\n browserName = \"Microsoft Internet Explorer\";\n fullVersion = nAgt.substring(verOffset + 5);\n }\n // In Chrome, the true version is after \"Chrome\"\n else if ((verOffset = nAgt.indexOf(\"Chrome\")) !== -1) {\n browserName = \"Chrome\";\n fullVersion = nAgt.substring(verOffset + 7);\n }\n // In Safari, the true version is after \"Safari\" or after \"Version\"\n else if ((verOffset = nAgt.indexOf(\"Safari\")) !== -1) {\n browserName = \"Safari\";\n fullVersion = nAgt.substring(verOffset + 7);\n if ((verOffset = nAgt.indexOf(\"Version\")) !== -1)\n fullVersion = nAgt.substring(verOffset + 8);\n }\n // In Firefox, the true version is after \"Firefox\"\n else if ((verOffset = nAgt.indexOf(\"Firefox\")) !== -1) {\n browserName = \"Firefox\";\n fullVersion = nAgt.substring(verOffset + 8);\n }\n // In most other browsers, \"name/version\" is at the end of userAgent\n else if (\n (nameOffset = nAgt.lastIndexOf(\" \") + 1) <\n (verOffset = nAgt.lastIndexOf(\"/\"))\n ) {\n browserName = nAgt.substring(nameOffset, verOffset);\n fullVersion = nAgt.substring(verOffset + 1);\n if (browserName.toLowerCase() === browserName.toUpperCase()) {\n browserName = navigator.appName;\n }\n }\n // trim the fullVersion string at semicolon/space if present\n if ((ix = fullVersion.indexOf(\";\")) !== -1)\n fullVersion = fullVersion.substring(0, ix);\n if ((ix = fullVersion.indexOf(\" \")) !== -1)\n fullVersion = fullVersion.substring(0, ix);\n\n majorVersion = parseInt(\"\" + fullVersion, 10);\n if (isNaN(majorVersion)) {\n fullVersion = \"\" + parseFloat(navigator.appVersion);\n majorVersion = parseInt(navigator.appVersion, 10);\n }\n\n var OSName = \"Unknown OS\";\n if (navigator.appVersion.indexOf(\"Win\") !== -1) OSName = \"Windows\";\n if (navigator.appVersion.indexOf(\"Mac\") !== -1) OSName = \"MacOS\";\n if (navigator.appVersion.indexOf(\"X11\") !== -1) OSName = \"UNIX\";\n if (navigator.appVersion.indexOf(\"Linux\") !== -1) OSName = \"Linux\";\n if (navigator.appVersion.indexOf(\"iPad\") !== -1) OSName = \"iPad\";\n if (navigator.appVersion.indexOf(\"iPhone\") !== -1) OSName = \"iPhone\";\n if (navigator.appVersion.indexOf(\"Android\") !== -1) OSName = \"Android\";\n\n return {\n browserName: browserName + \"(\" + fullVersion + \")\",\n userAgent: nAgt,\n browser: browserName,\n systemName: OSName,\n buildVersionNumber: this.appBuildNumber,\n releaseVersionNumber: this.appVersionCode,\n sessionDuration: this.getSessionDuration(),\n devicePixelRatio: window.devicePixelRatio,\n screenWidth: window.screen.width,\n screenHeight: window.screen.height,\n innerWidth: window.innerWidth,\n innerHeight: window.innerHeight,\n currentUrl: window.location.href,\n language: navigator.language || navigator.userLanguage,\n mobile: isMobile(),\n sdkVersion: SDK_VERSION,\n sdkType: \"javascript\",\n environment: this.environment,\n };\n }\n}\n","import { truncateString } from \"./GleapHelper\";\n\nexport default class GleapConsoleLogManager {\n logArray = [];\n disabled = false;\n originalConsoleLog;\n logMaxLength = 500;\n\n // GleapConsoleLogManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapConsoleLogManager();\n }\n return this.instance;\n }\n\n /**\n * Return the console logs\n * @returns {any[]} logs\n */\n getLogs() {\n return this.logArray;\n }\n\n /**\n * Revert console log overwrite.\n */\n stop() {\n this.disabled = true;\n if (this.originalConsoleLog) {\n window.console = this.originalConsoleLog;\n }\n }\n\n /**\n * Add message with log level to logs.\n * @param {*} message\n * @param {*} logLevel\n * @returns\n */\n addLog(message, logLevel = \"INFO\") {\n if (!message || message.length <= 0) {\n return;\n }\n\n this.logArray.push({\n log: truncateString(message, 1000),\n date: new Date(),\n priority: logLevel,\n });\n\n if (this.logArray.length > this.logMaxLength) {\n this.logArray.shift();\n }\n }\n\n /**\n * Add entry to logs.\n * @param {*} args\n * @param {*} logLevel\n * @returns\n */\n addLogWithArgs(args, logLevel) {\n if (!args || args.length <= 0) {\n return;\n }\n\n var log = \"\";\n try {\n for (var i = 0; i < args.length; i++) {\n log += args[i] + \" \";\n }\n } catch (exp) {}\n\n this.addLog(log, logLevel);\n }\n\n /**\n * Start console log overwrite.\n */\n start() {\n if (this.disabled) {\n return;\n }\n\n const self = this;\n window.console = (function (origConsole) {\n if (!window.console || !origConsole) {\n origConsole = {};\n }\n\n self.originalConsoleLog = origConsole;\n\n return {\n ...origConsole,\n log: function () {\n self.addLogWithArgs(arguments, \"INFO\");\n origConsole.log && origConsole.log.apply(origConsole, arguments);\n },\n warn: function () {\n self.addLogWithArgs(arguments, \"WARNING\");\n origConsole.warn && origConsole.warn.apply(origConsole, arguments);\n },\n error: function () {\n self.addLogWithArgs(arguments, \"ERROR\");\n origConsole.error && origConsole.error.apply(origConsole, arguments);\n },\n info: function (v) {\n self.addLogWithArgs(arguments, \"INFO\");\n origConsole.info && origConsole.info.apply(origConsole, arguments);\n },\n };\n })(window.console);\n }\n}\n","import { GleapConsoleLogManager, GleapFrameManager, handleGleapLink } from \"./Gleap\";\nimport { getDOMElementDescription } from \"./GleapHelper\";\n\nexport default class GleapClickListener {\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapClickListener();\n }\n return this.instance;\n }\n\n start() {\n document.addEventListener(\"click\", (e) => {\n if (!e.target) {\n return;\n }\n\n if (e.target.tagName === 'A' && e.target.protocol === 'gleap:') {\n e.preventDefault();\n\n const href = e.target.href;\n handleGleapLink(href);\n }\n\n if (!GleapFrameManager.getInstance().isOpened()) {\n GleapConsoleLogManager.getInstance().addLog(\n getDOMElementDescription(e.target),\n \"CLICK\"\n );\n }\n });\n }\n}\n","import { gleapDataParser } from \"./GleapHelper\";\n\nexport default class GleapCustomDataManager {\n customData = {};\n ticketAttributes = {};\n\n // GleapCustomDataManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapCustomDataManager();\n }\n return this.instance;\n }\n\n /**\n * Returns the custom data object\n * @returns {*}\n */\n getCustomData() {\n return this.customData;\n }\n\n /**\n * Set custom data that will be attached to the bug-report.\n * @param {*} data\n */\n attachCustomData(data) {\n this.customData = Object.assign(\n this.customData,\n gleapDataParser(data)\n );\n }\n\n /**\n * Add one key value pair to the custom data object\n * @param {*} key The key of the custom data entry you want to add.\n * @param {*} value The custom data you want to add.\n */\n setCustomData(key, value) {\n this.customData[key] = value;\n }\n\n /**\n * Remove one key value pair of the custom data object\n * @param {*} key The key of the custom data entry you want to remove.\n */\n removeCustomData(key) {\n delete this.customData[key];\n }\n\n /**\n * Clear the custom data\n */\n clearCustomData() {\n this.customData = {};\n }\n\n /**\n * This method is used to set ticket attributes programmatically.\n * @param {*} key The key of the attribute you want to add.\n * @param {*} value The value to set.\n */\n setTicketAttribute(key, value) {\n this.ticketAttributes[key] = value;\n }\n\n /**\n * This method is used to unset ticket attributes programmatically.\n * @param {*} key The key of the attribute you want to unset.\n */\n unsetTicketAttribute(key) {\n delete this.ticketAttributes[key];\n }\n\n /**\n * This method is used to clear ticket attributes programmatically.\n */\n clearTicketAttributes() {\n this.ticketAttributes = {};\n }\n\n getTicketAttributes() {\n return this.ticketAttributes;\n }\n}\n","import Gleap from \"./Gleap\";\n\nexport default class GleapEventManager {\n eventListeners = {};\n\n // GleapEventManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapEventManager();\n }\n return this.instance;\n }\n\n /**\n * Notify all registrants for event.\n */\n static notifyEvent(event, data = {}) {\n if (event === \"flow-started\") {\n\n const gleapInstance = Gleap.getInstance();\n gleapInstance.setGlobalDataItem(\"webReplay\", null);\n gleapInstance.setGlobalDataItem(\"screenRecordingData\", null);\n gleapInstance.takeCurrentReplay();\n }\n\n const eventListeners = this.getInstance().eventListeners[event];\n if (eventListeners) {\n for (var i = 0; i < eventListeners.length; i++) {\n const eventListener = eventListeners[i];\n if (eventListener) {\n eventListener(data);\n }\n }\n }\n }\n\n /**\n * Register events for Gleap.\n * @param {*} eventName\n * @param {*} callback\n */\n static on(eventName, callback) {\n const instance = this.getInstance();\n if (!instance.eventListeners[eventName]) {\n instance.eventListeners[eventName] = [];\n }\n instance.eventListeners[eventName].push(callback);\n }\n}\n","export default class GleapCustomActionManager {\n customActionCallbacks = [];\n\n // GleapCustomActionManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapCustomActionManager();\n }\n return this.instance;\n }\n\n /**\n * Register custom action\n */\n static registerCustomAction(customAction) {\n const instance = this.getInstance();\n if (instance.customActionCallbacks) {\n instance.customActionCallbacks.push(customAction);\n }\n }\n\n /**\n * Triggers a custom action\n */\n static triggerCustomAction(name, data) {\n const instance = this.getInstance();\n if (instance.customActionCallbacks) {\n for (var i = 0; i < instance.customActionCallbacks.length; i++) {\n var callback = instance.customActionCallbacks[i];\n if (callback) {\n callback({\n name,\n ...(data ? data : {}),\n });\n }\n }\n }\n }\n}\n","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar _a;\nvar __defProp$1 = Object.defineProperty;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$1 = (obj, key, value) => __defNormalProp$1(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar NodeType$3 = /* @__PURE__ */ ((NodeType2) => {\n NodeType2[NodeType2[\"Document\"] = 0] = \"Document\";\n NodeType2[NodeType2[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType2[NodeType2[\"Element\"] = 2] = \"Element\";\n NodeType2[NodeType2[\"Text\"] = 3] = \"Text\";\n NodeType2[NodeType2[\"CDATA\"] = 4] = \"CDATA\";\n NodeType2[NodeType2[\"Comment\"] = 5] = \"Comment\";\n return NodeType2;\n})(NodeType$3 || {});\nconst testableAccessors$1 = {\n Node: [\"childNodes\", \"parentNode\", \"parentElement\", \"textContent\"],\n ShadowRoot: [\"host\", \"styleSheets\"],\n Element: [\"shadowRoot\", \"querySelector\", \"querySelectorAll\"],\n MutationObserver: []\n};\nconst testableMethods$1 = {\n Node: [\"contains\", \"getRootNode\"],\n ShadowRoot: [\"getSelection\"],\n Element: [],\n MutationObserver: [\"constructor\"]\n};\nconst untaintedBasePrototype$1 = {};\nconst isAngularZonePresent$1 = () => {\n return !!globalThis.Zone;\n};\nfunction getUntaintedPrototype$1(key) {\n if (untaintedBasePrototype$1[key])\n return untaintedBasePrototype$1[key];\n const defaultObj = globalThis[key];\n const defaultPrototype = defaultObj.prototype;\n const accessorNames = key in testableAccessors$1 ? testableAccessors$1[key] : void 0;\n const isUntaintedAccessors = Boolean(\n accessorNames && // @ts-expect-error 2345\n accessorNames.every(\n (accessor) => {\n var _a2, _b;\n return Boolean(\n (_b = (_a2 = Object.getOwnPropertyDescriptor(defaultPrototype, accessor)) == null ? void 0 : _a2.get) == null ? void 0 : _b.toString().includes(\"[native code]\")\n );\n }\n )\n );\n const methodNames = key in testableMethods$1 ? testableMethods$1[key] : void 0;\n const isUntaintedMethods = Boolean(\n methodNames && methodNames.every(\n // @ts-expect-error 2345\n (method) => {\n var _a2;\n return typeof defaultPrototype[method] === \"function\" && ((_a2 = defaultPrototype[method]) == null ? void 0 : _a2.toString().includes(\"[native code]\"));\n }\n )\n );\n if (isUntaintedAccessors && isUntaintedMethods && !isAngularZonePresent$1()) {\n untaintedBasePrototype$1[key] = defaultObj.prototype;\n return defaultObj.prototype;\n }\n try {\n const iframeEl = document.createElement(\"iframe\");\n document.body.appendChild(iframeEl);\n const win = iframeEl.contentWindow;\n if (!win) return defaultObj.prototype;\n const untaintedObject = win[key].prototype;\n document.body.removeChild(iframeEl);\n if (!untaintedObject) return defaultPrototype;\n return untaintedBasePrototype$1[key] = untaintedObject;\n } catch {\n return defaultPrototype;\n }\n}\nconst untaintedAccessorCache$1 = {};\nfunction getUntaintedAccessor$1(key, instance, accessor) {\n var _a2;\n const cacheKey = `${key}.${String(accessor)}`;\n if (untaintedAccessorCache$1[cacheKey])\n return untaintedAccessorCache$1[cacheKey].call(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype$1(key);\n const untaintedAccessor = (_a2 = Object.getOwnPropertyDescriptor(\n untaintedPrototype,\n accessor\n )) == null ? void 0 : _a2.get;\n if (!untaintedAccessor) return instance[accessor];\n untaintedAccessorCache$1[cacheKey] = untaintedAccessor;\n return untaintedAccessor.call(instance);\n}\nconst untaintedMethodCache$1 = {};\nfunction getUntaintedMethod$1(key, instance, method) {\n const cacheKey = `${key}.${String(method)}`;\n if (untaintedMethodCache$1[cacheKey])\n return untaintedMethodCache$1[cacheKey].bind(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype$1(key);\n const untaintedMethod = untaintedPrototype[method];\n if (typeof untaintedMethod !== \"function\") return instance[method];\n untaintedMethodCache$1[cacheKey] = untaintedMethod;\n return untaintedMethod.bind(instance);\n}\nfunction childNodes$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"childNodes\");\n}\nfunction parentNode$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"parentNode\");\n}\nfunction parentElement$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"parentElement\");\n}\nfunction textContent$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"textContent\");\n}\nfunction contains$1(n2, other) {\n return getUntaintedMethod$1(\"Node\", n2, \"contains\")(other);\n}\nfunction getRootNode$1(n2) {\n return getUntaintedMethod$1(\"Node\", n2, \"getRootNode\")();\n}\nfunction host$1(n2) {\n if (!n2 || !(\"host\" in n2)) return null;\n return getUntaintedAccessor$1(\"ShadowRoot\", n2, \"host\");\n}\nfunction styleSheets$1(n2) {\n return n2.styleSheets;\n}\nfunction shadowRoot$1(n2) {\n if (!n2 || !(\"shadowRoot\" in n2)) return null;\n return getUntaintedAccessor$1(\"Element\", n2, \"shadowRoot\");\n}\nfunction querySelector$1(n2, selectors) {\n return getUntaintedAccessor$1(\"Element\", n2, \"querySelector\")(selectors);\n}\nfunction querySelectorAll$1(n2, selectors) {\n return getUntaintedAccessor$1(\"Element\", n2, \"querySelectorAll\")(selectors);\n}\nfunction mutationObserverCtor$1() {\n return getUntaintedPrototype$1(\"MutationObserver\").constructor;\n}\nconst index$1 = {\n childNodes: childNodes$1,\n parentNode: parentNode$1,\n parentElement: parentElement$1,\n textContent: textContent$1,\n contains: contains$1,\n getRootNode: getRootNode$1,\n host: host$1,\n styleSheets: styleSheets$1,\n shadowRoot: shadowRoot$1,\n querySelector: querySelector$1,\n querySelectorAll: querySelectorAll$1,\n mutationObserver: mutationObserverCtor$1\n};\nfunction isElement(n2) {\n return n2.nodeType === n2.ELEMENT_NODE;\n}\nfunction isShadowRoot(n2) {\n const hostEl = (\n // anchor and textarea elements also have a `host` property\n // but only shadow roots have a `mode` property\n n2 && \"host\" in n2 && \"mode\" in n2 && index$1.host(n2) || null\n );\n return Boolean(\n hostEl && \"shadowRoot\" in hostEl && index$1.shadowRoot(hostEl) === n2\n );\n}\nfunction isNativeShadowDom(shadowRoot2) {\n return Object.prototype.toString.call(shadowRoot2) === \"[object ShadowRoot]\";\n}\nfunction fixBrowserCompatibilityIssuesInCSS(cssText) {\n if (cssText.includes(\" background-clip: text;\") && !cssText.includes(\" -webkit-background-clip: text;\")) {\n cssText = cssText.replace(\n /\\sbackground-clip:\\s*text;/g,\n \" -webkit-background-clip: text; background-clip: text;\"\n );\n }\n return cssText;\n}\nfunction escapeImportStatement(rule2) {\n const { cssText } = rule2;\n if (cssText.split('\"').length < 3) return cssText;\n const statement = [\"@import\", `url(${JSON.stringify(rule2.href)})`];\n if (rule2.layerName === \"\") {\n statement.push(`layer`);\n } else if (rule2.layerName) {\n statement.push(`layer(${rule2.layerName})`);\n }\n if (rule2.supportsText) {\n statement.push(`supports(${rule2.supportsText})`);\n }\n if (rule2.media.length) {\n statement.push(rule2.media.mediaText);\n }\n return statement.join(\" \") + \";\";\n}\nfunction stringifyStylesheet(s2) {\n try {\n const rules2 = s2.rules || s2.cssRules;\n if (!rules2) {\n return null;\n }\n let sheetHref = s2.href;\n if (!sheetHref && s2.ownerNode && s2.ownerNode.ownerDocument) {\n sheetHref = s2.ownerNode.ownerDocument.location.href;\n }\n const stringifiedRules = Array.from(\n rules2,\n (rule2) => stringifyRule(rule2, sheetHref)\n ).join(\"\");\n return fixBrowserCompatibilityIssuesInCSS(stringifiedRules);\n } catch (error) {\n return null;\n }\n}\nfunction stringifyRule(rule2, sheetHref) {\n if (isCSSImportRule(rule2)) {\n let importStringified;\n try {\n importStringified = // for same-origin stylesheets,\n // we can access the imported stylesheet rules directly\n stringifyStylesheet(rule2.styleSheet) || // work around browser issues with the raw string `@import url(...)` statement\n escapeImportStatement(rule2);\n } catch (error) {\n importStringified = rule2.cssText;\n }\n if (rule2.styleSheet.href) {\n return absolutifyURLs(importStringified, rule2.styleSheet.href);\n }\n return importStringified;\n } else {\n let ruleStringified = rule2.cssText;\n if (isCSSStyleRule(rule2) && rule2.selectorText.includes(\":\")) {\n ruleStringified = fixSafariColons(ruleStringified);\n }\n if (sheetHref) {\n return absolutifyURLs(ruleStringified, sheetHref);\n }\n return ruleStringified;\n }\n}\nfunction fixSafariColons(cssStringified) {\n const regex = /(\\[(?:[\\w-]+)[^\\\\])(:(?:[\\w-]+)\\])/gm;\n return cssStringified.replace(regex, \"$1\\\\$2\");\n}\nfunction isCSSImportRule(rule2) {\n return \"styleSheet\" in rule2;\n}\nfunction isCSSStyleRule(rule2) {\n return \"selectorText\" in rule2;\n}\nclass Mirror {\n constructor() {\n __publicField$1(this, \"idNodeMap\", /* @__PURE__ */ new Map());\n __publicField$1(this, \"nodeMetaMap\", /* @__PURE__ */ new WeakMap());\n }\n getId(n2) {\n var _a2;\n if (!n2) return -1;\n const id = (_a2 = this.getMeta(n2)) == null ? void 0 : _a2.id;\n return id ?? -1;\n }\n getNode(id) {\n return this.idNodeMap.get(id) || null;\n }\n getIds() {\n return Array.from(this.idNodeMap.keys());\n }\n getMeta(n2) {\n return this.nodeMetaMap.get(n2) || null;\n }\n // removes the node from idNodeMap\n // doesn't remove the node from nodeMetaMap\n removeNodeFromMap(n2) {\n const id = this.getId(n2);\n this.idNodeMap.delete(id);\n if (n2.childNodes) {\n n2.childNodes.forEach(\n (childNode) => this.removeNodeFromMap(childNode)\n );\n }\n }\n has(id) {\n return this.idNodeMap.has(id);\n }\n hasNode(node2) {\n return this.nodeMetaMap.has(node2);\n }\n add(n2, meta) {\n const id = meta.id;\n this.idNodeMap.set(id, n2);\n this.nodeMetaMap.set(n2, meta);\n }\n replace(id, n2) {\n const oldNode = this.getNode(id);\n if (oldNode) {\n const meta = this.nodeMetaMap.get(oldNode);\n if (meta) this.nodeMetaMap.set(n2, meta);\n }\n this.idNodeMap.set(id, n2);\n }\n reset() {\n this.idNodeMap = /* @__PURE__ */ new Map();\n this.nodeMetaMap = /* @__PURE__ */ new WeakMap();\n }\n}\nfunction createMirror$2() {\n return new Mirror();\n}\nfunction maskInputValue({\n element,\n maskInputOptions,\n tagName,\n type,\n value,\n maskInputFn\n}) {\n let text = value || \"\";\n const actualType = type && toLowerCase(type);\n if (maskInputOptions[tagName.toLowerCase()] || actualType && maskInputOptions[actualType]) {\n if (maskInputFn) {\n text = maskInputFn(text, element);\n } else {\n text = \"*\".repeat(text.length);\n }\n }\n return text;\n}\nfunction toLowerCase(str) {\n return str.toLowerCase();\n}\nconst ORIGINAL_ATTRIBUTE_NAME = \"__rrweb_original__\";\nfunction is2DCanvasBlank(canvas) {\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) return true;\n const chunkSize = 50;\n for (let x2 = 0; x2 < canvas.width; x2 += chunkSize) {\n for (let y = 0; y < canvas.height; y += chunkSize) {\n const getImageData = ctx.getImageData;\n const originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData ? getImageData[ORIGINAL_ATTRIBUTE_NAME] : getImageData;\n const pixelBuffer = new Uint32Array(\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n originalGetImageData.call(\n ctx,\n x2,\n y,\n Math.min(chunkSize, canvas.width - x2),\n Math.min(chunkSize, canvas.height - y)\n ).data.buffer\n );\n if (pixelBuffer.some((pixel) => pixel !== 0)) return false;\n }\n }\n return true;\n}\nfunction getInputType(element) {\n const type = element.type;\n return element.hasAttribute(\"data-rr-is-password\") ? \"password\" : type ? (\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n toLowerCase(type)\n ) : null;\n}\nfunction extractFileExtension(path, baseURL) {\n let url;\n try {\n url = new URL(path, baseURL ?? window.location.href);\n } catch (err) {\n return null;\n }\n const regex = /\\.([0-9a-z]+)(?:$)/i;\n const match = url.pathname.match(regex);\n return (match == null ? void 0 : match[1]) ?? null;\n}\nfunction extractOrigin(url) {\n let origin = \"\";\n if (url.indexOf(\"//\") > -1) {\n origin = url.split(\"/\").slice(0, 3).join(\"/\");\n } else {\n origin = url.split(\"/\")[0];\n }\n origin = origin.split(\"?\")[0];\n return origin;\n}\nconst URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\nconst URL_PROTOCOL_MATCH = /^(?:[a-z+]+:)?\\/\\//i;\nconst URL_WWW_MATCH = /^www\\..*/i;\nconst DATA_URI = /^(data:)([^,]*),(.*)/i;\nfunction absolutifyURLs(cssText, href) {\n return (cssText || \"\").replace(\n URL_IN_CSS_REF,\n (origin, quote1, path1, quote2, path2, path3) => {\n const filePath = path1 || path2 || path3;\n const maybeQuote = quote1 || quote2 || \"\";\n if (!filePath) {\n return origin;\n }\n if (URL_PROTOCOL_MATCH.test(filePath) || URL_WWW_MATCH.test(filePath)) {\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\n }\n if (DATA_URI.test(filePath)) {\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\n }\n if (filePath[0] === \"/\") {\n return `url(${maybeQuote}${extractOrigin(href) + filePath}${maybeQuote})`;\n }\n const stack = href.split(\"/\");\n const parts = filePath.split(\"/\");\n stack.pop();\n for (const part of parts) {\n if (part === \".\") {\n continue;\n } else if (part === \"..\") {\n stack.pop();\n } else {\n stack.push(part);\n }\n }\n return `url(${maybeQuote}${stack.join(\"/\")}${maybeQuote})`;\n }\n );\n}\nfunction normalizeCssString(cssText) {\n return cssText.replace(/(\\/\\*[^*]*\\*\\/)|[\\s;]/g, \"\");\n}\nfunction splitCssText(cssText, style) {\n const childNodes2 = Array.from(style.childNodes);\n const splits = [];\n if (childNodes2.length > 1 && cssText && typeof cssText === \"string\") {\n const cssTextNorm = normalizeCssString(cssText);\n for (let i2 = 1; i2 < childNodes2.length; i2++) {\n if (childNodes2[i2].textContent && typeof childNodes2[i2].textContent === \"string\") {\n const textContentNorm = normalizeCssString(childNodes2[i2].textContent);\n for (let j = 3; j < textContentNorm.length; j++) {\n const bit = textContentNorm.substring(0, j);\n if (cssTextNorm.split(bit).length === 2) {\n const splitNorm = cssTextNorm.indexOf(bit);\n for (let k = splitNorm; k < cssText.length; k++) {\n if (normalizeCssString(cssText.substring(0, k)).length === splitNorm) {\n splits.push(cssText.substring(0, k));\n cssText = cssText.substring(k);\n break;\n }\n }\n break;\n }\n }\n }\n }\n }\n splits.push(cssText);\n return splits;\n}\nfunction markCssSplits(cssText, style) {\n return splitCssText(cssText, style).join(\"/* rr_split */\");\n}\nlet _id = 1;\nconst tagNameRegex = new RegExp(\"[^a-z0-9-_:]\");\nconst IGNORED_NODE = -2;\nfunction genId() {\n return _id++;\n}\nfunction getValidTagName$1(element) {\n if (element instanceof HTMLFormElement) {\n return \"form\";\n }\n const processedTagName = toLowerCase(element.tagName);\n if (tagNameRegex.test(processedTagName)) {\n return \"div\";\n }\n return processedTagName;\n}\nlet canvasService;\nlet canvasCtx;\nconst SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\nconst SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\n if (attributeValue.trim() === \"\") {\n return attributeValue;\n }\n let pos = 0;\n function collectCharacters(regEx) {\n let chars2;\n const match = regEx.exec(attributeValue.substring(pos));\n if (match) {\n chars2 = match[0];\n pos += chars2.length;\n return chars2;\n }\n return \"\";\n }\n const output = [];\n while (true) {\n collectCharacters(SRCSET_COMMAS_OR_SPACES);\n if (pos >= attributeValue.length) {\n break;\n }\n let url = collectCharacters(SRCSET_NOT_SPACES);\n if (url.slice(-1) === \",\") {\n url = absoluteToDoc(doc, url.substring(0, url.length - 1));\n output.push(url);\n } else {\n let descriptorsStr = \"\";\n url = absoluteToDoc(doc, url);\n let inParens = false;\n while (true) {\n const c2 = attributeValue.charAt(pos);\n if (c2 === \"\") {\n output.push((url + descriptorsStr).trim());\n break;\n } else if (!inParens) {\n if (c2 === \",\") {\n pos += 1;\n output.push((url + descriptorsStr).trim());\n break;\n } else if (c2 === \"(\") {\n inParens = true;\n }\n } else {\n if (c2 === \")\") {\n inParens = false;\n }\n }\n descriptorsStr += c2;\n pos += 1;\n }\n }\n }\n return output.join(\", \");\n}\nconst cachedDocument = /* @__PURE__ */ new WeakMap();\nfunction absoluteToDoc(doc, attributeValue) {\n if (!attributeValue || attributeValue.trim() === \"\") {\n return attributeValue;\n }\n return getHref(doc, attributeValue);\n}\nfunction isSVGElement(el) {\n return Boolean(el.tagName === \"svg\" || el.ownerSVGElement);\n}\nfunction getHref(doc, customHref) {\n let a2 = cachedDocument.get(doc);\n if (!a2) {\n a2 = doc.createElement(\"a\");\n cachedDocument.set(doc, a2);\n }\n if (!customHref) {\n customHref = \"\";\n } else if (customHref.startsWith(\"blob:\") || customHref.startsWith(\"data:\")) {\n return customHref;\n }\n a2.setAttribute(\"href\", customHref);\n return a2.href;\n}\nfunction transformAttribute(doc, tagName, name, value) {\n if (!value) {\n return value;\n }\n if (name === \"src\" || name === \"href\" && !(tagName === \"use\" && value[0] === \"#\")) {\n return absoluteToDoc(doc, value);\n } else if (name === \"xlink:href\" && value[0] !== \"#\") {\n return absoluteToDoc(doc, value);\n } else if (name === \"background\" && (tagName === \"table\" || tagName === \"td\" || tagName === \"th\")) {\n return absoluteToDoc(doc, value);\n } else if (name === \"srcset\") {\n return getAbsoluteSrcsetString(doc, value);\n } else if (name === \"style\") {\n return absolutifyURLs(value, getHref(doc));\n } else if (tagName === \"object\" && name === \"data\") {\n return absoluteToDoc(doc, value);\n }\n return value;\n}\nfunction ignoreAttribute(tagName, name, _value) {\n return (tagName === \"video\" || tagName === \"audio\") && name === \"autoplay\";\n}\nfunction _isBlockedElement(element, blockClass, blockSelector) {\n try {\n if (typeof blockClass === \"string\") {\n if (element.classList.contains(blockClass)) {\n return true;\n }\n } else {\n for (let eIndex = element.classList.length; eIndex--; ) {\n const className = element.classList[eIndex];\n if (blockClass.test(className)) {\n return true;\n }\n }\n }\n if (blockSelector) {\n return element.matches(blockSelector);\n }\n } catch (e2) {\n }\n return false;\n}\nfunction classMatchesRegex(node2, regex, checkAncestors) {\n if (!node2) return false;\n if (node2.nodeType !== node2.ELEMENT_NODE) {\n if (!checkAncestors) return false;\n return classMatchesRegex(index$1.parentNode(node2), regex, checkAncestors);\n }\n for (let eIndex = node2.classList.length; eIndex--; ) {\n const className = node2.classList[eIndex];\n if (regex.test(className)) {\n return true;\n }\n }\n if (!checkAncestors) return false;\n return classMatchesRegex(index$1.parentNode(node2), regex, checkAncestors);\n}\nfunction needMaskingText(node2, maskTextClass, maskTextSelector, checkAncestors) {\n let el;\n if (isElement(node2)) {\n el = node2;\n if (!index$1.childNodes(el).length) {\n return false;\n }\n } else if (index$1.parentElement(node2) === null) {\n return false;\n } else {\n el = index$1.parentElement(node2);\n }\n try {\n if (typeof maskTextClass === \"string\") {\n if (checkAncestors) {\n if (el.closest(`.${maskTextClass}`)) return true;\n } else {\n if (el.classList.contains(maskTextClass)) return true;\n }\n } else {\n if (classMatchesRegex(el, maskTextClass, checkAncestors)) return true;\n }\n if (maskTextSelector) {\n if (checkAncestors) {\n if (el.closest(maskTextSelector)) return true;\n } else {\n if (el.matches(maskTextSelector)) return true;\n }\n }\n } catch (e2) {\n }\n return false;\n}\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\n const win = iframeEl.contentWindow;\n if (!win) {\n return;\n }\n let fired = false;\n let readyState;\n try {\n readyState = win.document.readyState;\n } catch (error) {\n return;\n }\n if (readyState !== \"complete\") {\n const timer = setTimeout(() => {\n if (!fired) {\n listener();\n fired = true;\n }\n }, iframeLoadTimeout);\n iframeEl.addEventListener(\"load\", () => {\n clearTimeout(timer);\n fired = true;\n listener();\n });\n return;\n }\n const blankUrl = \"about:blank\";\n if (win.location.href !== blankUrl || iframeEl.src === blankUrl || iframeEl.src === \"\") {\n setTimeout(listener, 0);\n return iframeEl.addEventListener(\"load\", listener);\n }\n iframeEl.addEventListener(\"load\", listener);\n}\nfunction onceStylesheetLoaded(link, listener, styleSheetLoadTimeout) {\n let fired = false;\n let styleSheetLoaded;\n try {\n styleSheetLoaded = link.sheet;\n } catch (error) {\n return;\n }\n if (styleSheetLoaded) return;\n const timer = setTimeout(() => {\n if (!fired) {\n listener();\n fired = true;\n }\n }, styleSheetLoadTimeout);\n link.addEventListener(\"load\", () => {\n clearTimeout(timer);\n fired = true;\n listener();\n });\n}\nfunction serializeNode(n2, options) {\n const {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n inlineStylesheet,\n maskInputOptions = {},\n maskTextFn,\n maskInputFn,\n dataURLOptions = {},\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement = false,\n cssCaptured = false\n } = options;\n const rootId = getRootId(doc, mirror2);\n switch (n2.nodeType) {\n case n2.DOCUMENT_NODE:\n if (n2.compatMode !== \"CSS1Compat\") {\n return {\n type: NodeType$3.Document,\n childNodes: [],\n compatMode: n2.compatMode\n // probably \"BackCompat\"\n };\n } else {\n return {\n type: NodeType$3.Document,\n childNodes: []\n };\n }\n case n2.DOCUMENT_TYPE_NODE:\n return {\n type: NodeType$3.DocumentType,\n name: n2.name,\n publicId: n2.publicId,\n systemId: n2.systemId,\n rootId\n };\n case n2.ELEMENT_NODE:\n return serializeElementNode(n2, {\n doc,\n blockClass,\n blockSelector,\n inlineStylesheet,\n maskInputOptions,\n maskInputFn,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement,\n rootId\n });\n case n2.TEXT_NODE:\n return serializeTextNode(n2, {\n doc,\n needsMask,\n maskTextFn,\n rootId,\n cssCaptured\n });\n case n2.CDATA_SECTION_NODE:\n return {\n type: NodeType$3.CDATA,\n textContent: \"\",\n rootId\n };\n case n2.COMMENT_NODE:\n return {\n type: NodeType$3.Comment,\n textContent: index$1.textContent(n2) || \"\",\n rootId\n };\n default:\n return false;\n }\n}\nfunction getRootId(doc, mirror2) {\n if (!mirror2.hasNode(doc)) return void 0;\n const docId = mirror2.getId(doc);\n return docId === 1 ? void 0 : docId;\n}\nfunction serializeTextNode(n2, options) {\n const { needsMask, maskTextFn, rootId, cssCaptured } = options;\n const parent = index$1.parentNode(n2);\n const parentTagName = parent && parent.tagName;\n let textContent2 = \"\";\n const isStyle = parentTagName === \"STYLE\" ? true : void 0;\n const isScript = parentTagName === \"SCRIPT\" ? true : void 0;\n if (isScript) {\n textContent2 = \"SCRIPT_PLACEHOLDER\";\n } else if (!cssCaptured) {\n textContent2 = index$1.textContent(n2);\n if (isStyle && textContent2) {\n textContent2 = absolutifyURLs(textContent2, getHref(options.doc));\n }\n }\n if (!isStyle && !isScript && textContent2 && needsMask) {\n textContent2 = maskTextFn ? maskTextFn(textContent2, index$1.parentElement(n2)) : textContent2.replace(/[\\S]/g, \"*\");\n }\n return {\n type: NodeType$3.Text,\n textContent: textContent2 || \"\",\n rootId\n };\n}\nfunction serializeElementNode(n2, options) {\n const {\n doc,\n blockClass,\n blockSelector,\n inlineStylesheet,\n maskInputOptions = {},\n maskInputFn,\n dataURLOptions = {},\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement = false,\n rootId\n } = options;\n const needBlock = _isBlockedElement(n2, blockClass, blockSelector);\n const tagName = getValidTagName$1(n2);\n let attributes = {};\n const len = n2.attributes.length;\n for (let i2 = 0; i2 < len; i2++) {\n const attr = n2.attributes[i2];\n if (!ignoreAttribute(tagName, attr.name, attr.value)) {\n attributes[attr.name] = transformAttribute(\n doc,\n tagName,\n toLowerCase(attr.name),\n attr.value\n );\n }\n }\n if (tagName === \"link\" && inlineStylesheet) {\n const stylesheet = Array.from(doc.styleSheets).find((s2) => {\n return s2.href === n2.href;\n });\n let cssText = null;\n if (stylesheet) {\n cssText = stringifyStylesheet(stylesheet);\n }\n if (cssText) {\n delete attributes.rel;\n delete attributes.href;\n attributes._cssText = cssText;\n }\n }\n if (tagName === \"style\" && n2.sheet) {\n let cssText = stringifyStylesheet(\n n2.sheet\n );\n if (cssText) {\n if (n2.childNodes.length > 1) {\n cssText = markCssSplits(cssText, n2);\n }\n attributes._cssText = cssText;\n }\n }\n if (tagName === \"input\" || tagName === \"textarea\" || tagName === \"select\") {\n const value = n2.value;\n const checked = n2.checked;\n if (attributes.type !== \"radio\" && attributes.type !== \"checkbox\" && attributes.type !== \"submit\" && attributes.type !== \"button\" && value) {\n attributes.value = maskInputValue({\n element: n2,\n type: getInputType(n2),\n tagName,\n value,\n maskInputOptions,\n maskInputFn\n });\n } else if (checked) {\n attributes.checked = checked;\n }\n }\n if (tagName === \"option\") {\n if (n2.selected && !maskInputOptions[\"select\"]) {\n attributes.selected = true;\n } else {\n delete attributes.selected;\n }\n }\n if (tagName === \"dialog\" && n2.open) {\n attributes.rr_open_mode = n2.matches(\"dialog:modal\") ? \"modal\" : \"non-modal\";\n }\n if (tagName === \"canvas\" && recordCanvas) {\n if (n2.__context === \"2d\") {\n if (!is2DCanvasBlank(n2)) {\n attributes.rr_dataURL = n2.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n }\n } else if (!(\"__context\" in n2)) {\n const canvasDataURL = n2.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n const blankCanvas = doc.createElement(\"canvas\");\n blankCanvas.width = n2.width;\n blankCanvas.height = n2.height;\n const blankCanvasDataURL = blankCanvas.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n if (canvasDataURL !== blankCanvasDataURL) {\n attributes.rr_dataURL = canvasDataURL;\n }\n }\n }\n if (tagName === \"img\" && inlineImages) {\n if (!canvasService) {\n canvasService = doc.createElement(\"canvas\");\n canvasCtx = canvasService.getContext(\"2d\");\n }\n const image = n2;\n const imageSrc = image.currentSrc || image.getAttribute(\"src\") || \"\";\n const priorCrossOrigin = image.crossOrigin;\n const recordInlineImage = () => {\n image.removeEventListener(\"load\", recordInlineImage);\n try {\n canvasService.width = image.naturalWidth;\n canvasService.height = image.naturalHeight;\n canvasCtx.drawImage(image, 0, 0);\n attributes.rr_dataURL = canvasService.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n } catch (err) {\n if (image.crossOrigin !== \"anonymous\") {\n image.crossOrigin = \"anonymous\";\n if (image.complete && image.naturalWidth !== 0)\n recordInlineImage();\n else image.addEventListener(\"load\", recordInlineImage);\n return;\n } else {\n console.warn(\n `Cannot inline img src=${imageSrc}! Error: ${err}`\n );\n }\n }\n if (image.crossOrigin === \"anonymous\") {\n priorCrossOrigin ? attributes.crossOrigin = priorCrossOrigin : image.removeAttribute(\"crossorigin\");\n }\n };\n if (image.complete && image.naturalWidth !== 0) recordInlineImage();\n else image.addEventListener(\"load\", recordInlineImage);\n }\n if (tagName === \"audio\" || tagName === \"video\") {\n const mediaAttributes = attributes;\n mediaAttributes.rr_mediaState = n2.paused ? \"paused\" : \"played\";\n mediaAttributes.rr_mediaCurrentTime = n2.currentTime;\n mediaAttributes.rr_mediaPlaybackRate = n2.playbackRate;\n mediaAttributes.rr_mediaMuted = n2.muted;\n mediaAttributes.rr_mediaLoop = n2.loop;\n mediaAttributes.rr_mediaVolume = n2.volume;\n }\n if (!newlyAddedElement) {\n if (n2.scrollLeft) {\n attributes.rr_scrollLeft = n2.scrollLeft;\n }\n if (n2.scrollTop) {\n attributes.rr_scrollTop = n2.scrollTop;\n }\n }\n if (needBlock) {\n const { width, height } = n2.getBoundingClientRect();\n attributes = {\n class: attributes.class,\n rr_width: `${width}px`,\n rr_height: `${height}px`\n };\n }\n if (tagName === \"iframe\" && !keepIframeSrcFn(attributes.src)) {\n if (!n2.contentDocument) {\n attributes.rr_src = attributes.src;\n }\n delete attributes.src;\n }\n let isCustomElement;\n try {\n if (customElements.get(tagName)) isCustomElement = true;\n } catch (e2) {\n }\n return {\n type: NodeType$3.Element,\n tagName,\n attributes,\n childNodes: [],\n isSVG: isSVGElement(n2) || void 0,\n needBlock,\n rootId,\n isCustom: isCustomElement\n };\n}\nfunction lowerIfExists(maybeAttr) {\n if (maybeAttr === void 0 || maybeAttr === null) {\n return \"\";\n } else {\n return maybeAttr.toLowerCase();\n }\n}\nfunction slimDOMExcluded(sn, slimDOMOptions) {\n if (slimDOMOptions.comment && sn.type === NodeType$3.Comment) {\n return true;\n } else if (sn.type === NodeType$3.Element) {\n if (slimDOMOptions.script && // script tag\n (sn.tagName === \"script\" || // (module)preload link\n sn.tagName === \"link\" && (sn.attributes.rel === \"preload\" || sn.attributes.rel === \"modulepreload\") && sn.attributes.as === \"script\" || // prefetch link\n sn.tagName === \"link\" && sn.attributes.rel === \"prefetch\" && typeof sn.attributes.href === \"string\" && extractFileExtension(sn.attributes.href) === \"js\")) {\n return true;\n } else if (slimDOMOptions.headFavicon && (sn.tagName === \"link\" && sn.attributes.rel === \"shortcut icon\" || sn.tagName === \"meta\" && (lowerIfExists(sn.attributes.name).match(\n /^msapplication-tile(image|color)$/\n ) || lowerIfExists(sn.attributes.name) === \"application-name\" || lowerIfExists(sn.attributes.rel) === \"icon\" || lowerIfExists(sn.attributes.rel) === \"apple-touch-icon\" || lowerIfExists(sn.attributes.rel) === \"shortcut icon\"))) {\n return true;\n } else if (sn.tagName === \"meta\") {\n if (slimDOMOptions.headMetaDescKeywords && lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\n return true;\n } else if (slimDOMOptions.headMetaSocial && (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) || // og = opengraph (facebook)\n lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) || lowerIfExists(sn.attributes.name) === \"pinterest\")) {\n return true;\n } else if (slimDOMOptions.headMetaRobots && (lowerIfExists(sn.attributes.name) === \"robots\" || lowerIfExists(sn.attributes.name) === \"googlebot\" || lowerIfExists(sn.attributes.name) === \"bingbot\")) {\n return true;\n } else if (slimDOMOptions.headMetaHttpEquiv && sn.attributes[\"http-equiv\"] !== void 0) {\n return true;\n } else if (slimDOMOptions.headMetaAuthorship && (lowerIfExists(sn.attributes.name) === \"author\" || lowerIfExists(sn.attributes.name) === \"generator\" || lowerIfExists(sn.attributes.name) === \"framework\" || lowerIfExists(sn.attributes.name) === \"publisher\" || lowerIfExists(sn.attributes.name) === \"progid\" || lowerIfExists(sn.attributes.property).match(/^article:/) || lowerIfExists(sn.attributes.property).match(/^product:/))) {\n return true;\n } else if (slimDOMOptions.headMetaVerification && (lowerIfExists(sn.attributes.name) === \"google-site-verification\" || lowerIfExists(sn.attributes.name) === \"yandex-verification\" || lowerIfExists(sn.attributes.name) === \"csrf-token\" || lowerIfExists(sn.attributes.name) === \"p:domain_verify\" || lowerIfExists(sn.attributes.name) === \"verify-v1\" || lowerIfExists(sn.attributes.name) === \"verification\" || lowerIfExists(sn.attributes.name) === \"shopify-checkout-api-token\")) {\n return true;\n }\n }\n }\n return false;\n}\nfunction serializeNodeWithId(n2, options) {\n const {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n skipChild = false,\n inlineStylesheet = true,\n maskInputOptions = {},\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions = {},\n inlineImages = false,\n recordCanvas = false,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout = 5e3,\n onStylesheetLoad,\n stylesheetLoadTimeout = 5e3,\n keepIframeSrcFn = () => false,\n newlyAddedElement = false,\n cssCaptured = false\n } = options;\n let { needsMask } = options;\n let { preserveWhiteSpace = true } = options;\n if (!needsMask) {\n const checkAncestors = needsMask === void 0;\n needsMask = needMaskingText(\n n2,\n maskTextClass,\n maskTextSelector,\n checkAncestors\n );\n }\n const _serializedNode = serializeNode(n2, {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement,\n cssCaptured\n });\n if (!_serializedNode) {\n console.warn(n2, \"not serialized\");\n return null;\n }\n let id;\n if (mirror2.hasNode(n2)) {\n id = mirror2.getId(n2);\n } else if (slimDOMExcluded(_serializedNode, slimDOMOptions) || !preserveWhiteSpace && _serializedNode.type === NodeType$3.Text && !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, \"\").length) {\n id = IGNORED_NODE;\n } else {\n id = genId();\n }\n const serializedNode = Object.assign(_serializedNode, { id });\n mirror2.add(n2, serializedNode);\n if (id === IGNORED_NODE) {\n return null;\n }\n if (onSerialize) {\n onSerialize(n2);\n }\n let recordChild = !skipChild;\n if (serializedNode.type === NodeType$3.Element) {\n recordChild = recordChild && !serializedNode.needBlock;\n delete serializedNode.needBlock;\n const shadowRootEl = index$1.shadowRoot(n2);\n if (shadowRootEl && isNativeShadowDom(shadowRootEl))\n serializedNode.isShadowHost = true;\n }\n if ((serializedNode.type === NodeType$3.Document || serializedNode.type === NodeType$3.Element) && recordChild) {\n if (slimDOMOptions.headWhitespace && serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"head\") {\n preserveWhiteSpace = false;\n }\n const bypassOptions = {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n skipChild,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn,\n cssCaptured: false\n };\n if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"textarea\" && serializedNode.attributes.value !== void 0) ;\n else {\n if (serializedNode.type === NodeType$3.Element && serializedNode.attributes._cssText !== void 0 && typeof serializedNode.attributes._cssText === \"string\") {\n bypassOptions.cssCaptured = true;\n }\n for (const childN of Array.from(index$1.childNodes(n2))) {\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n }\n let shadowRootEl = null;\n if (isElement(n2) && (shadowRootEl = index$1.shadowRoot(n2))) {\n for (const childN of Array.from(index$1.childNodes(shadowRootEl))) {\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n isNativeShadowDom(shadowRootEl) && (serializedChildNode.isShadow = true);\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n }\n }\n const parent = index$1.parentNode(n2);\n if (parent && isShadowRoot(parent) && isNativeShadowDom(parent)) {\n serializedNode.isShadow = true;\n }\n if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"iframe\") {\n onceIframeLoaded(\n n2,\n () => {\n const iframeDoc = n2.contentDocument;\n if (iframeDoc && onIframeLoad) {\n const serializedIframeNode = serializeNodeWithId(iframeDoc, {\n doc: iframeDoc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn\n });\n if (serializedIframeNode) {\n onIframeLoad(\n n2,\n serializedIframeNode\n );\n }\n }\n },\n iframeLoadTimeout\n );\n }\n if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"link\" && typeof serializedNode.attributes.rel === \"string\" && (serializedNode.attributes.rel === \"stylesheet\" || serializedNode.attributes.rel === \"preload\" && typeof serializedNode.attributes.href === \"string\" && extractFileExtension(serializedNode.attributes.href) === \"css\")) {\n onceStylesheetLoaded(\n n2,\n () => {\n if (onStylesheetLoad) {\n const serializedLinkNode = serializeNodeWithId(n2, {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn\n });\n if (serializedLinkNode) {\n onStylesheetLoad(\n n2,\n serializedLinkNode\n );\n }\n }\n },\n stylesheetLoadTimeout\n );\n }\n return serializedNode;\n}\nfunction snapshot(n2, options) {\n const {\n mirror: mirror2 = new Mirror(),\n blockClass = \"rr-block\",\n blockSelector = null,\n maskTextClass = \"rr-mask\",\n maskTextSelector = null,\n inlineStylesheet = true,\n inlineImages = false,\n recordCanvas = false,\n maskAllInputs = false,\n maskTextFn,\n maskInputFn,\n slimDOM = false,\n dataURLOptions,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn = () => false\n } = options || {};\n const maskInputOptions = maskAllInputs === true ? {\n color: true,\n date: true,\n \"datetime-local\": true,\n email: true,\n month: true,\n number: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true,\n textarea: true,\n select: true,\n password: true\n } : maskAllInputs === false ? {\n password: true\n } : maskAllInputs;\n const slimDOMOptions = slimDOM === true || slimDOM === \"all\" ? (\n // if true: set of sensible options that should not throw away any information\n {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaDescKeywords: slimDOM === \"all\",\n // destructive\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaAuthorship: true,\n headMetaVerification: true\n }\n ) : slimDOM === false ? {} : slimDOM;\n return serializeNodeWithId(n2, {\n doc: n2,\n mirror: mirror2,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn,\n newlyAddedElement: false\n });\n}\nfunction getDefaultExportFromCjs$1(x2) {\n return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, \"default\") ? x2[\"default\"] : x2;\n}\nfunction getAugmentedNamespace$1(n2) {\n if (n2.__esModule) return n2;\n var f2 = n2.default;\n if (typeof f2 == \"function\") {\n var a2 = function a22() {\n if (this instanceof a22) {\n return Reflect.construct(f2, arguments, this.constructor);\n }\n return f2.apply(this, arguments);\n };\n a2.prototype = f2.prototype;\n } else a2 = {};\n Object.defineProperty(a2, \"__esModule\", { value: true });\n Object.keys(n2).forEach(function(k) {\n var d = Object.getOwnPropertyDescriptor(n2, k);\n Object.defineProperty(a2, k, d.get ? d : {\n enumerable: true,\n get: function() {\n return n2[k];\n }\n });\n });\n return a2;\n}\nvar picocolors_browser$1 = { exports: {} };\nvar x$1 = String;\nvar create$1 = function() {\n return { isColorSupported: false, reset: x$1, bold: x$1, dim: x$1, italic: x$1, underline: x$1, inverse: x$1, hidden: x$1, strikethrough: x$1, black: x$1, red: x$1, green: x$1, yellow: x$1, blue: x$1, magenta: x$1, cyan: x$1, white: x$1, gray: x$1, bgBlack: x$1, bgRed: x$1, bgGreen: x$1, bgYellow: x$1, bgBlue: x$1, bgMagenta: x$1, bgCyan: x$1, bgWhite: x$1 };\n};\npicocolors_browser$1.exports = create$1();\npicocolors_browser$1.exports.createColors = create$1;\nvar picocolors_browserExports$1 = picocolors_browser$1.exports;\nconst __viteBrowserExternal$2 = {};\nconst __viteBrowserExternal$1$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: __viteBrowserExternal$2\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst require$$2$1 = /* @__PURE__ */ getAugmentedNamespace$1(__viteBrowserExternal$1$1);\nlet pico$1 = picocolors_browserExports$1;\nlet terminalHighlight$1$1 = require$$2$1;\nlet CssSyntaxError$3$1 = class CssSyntaxError extends Error {\n constructor(message, line, column, source, file, plugin22) {\n super(message);\n this.name = \"CssSyntaxError\";\n this.reason = message;\n if (file) {\n this.file = file;\n }\n if (source) {\n this.source = source;\n }\n if (plugin22) {\n this.plugin = plugin22;\n }\n if (typeof line !== \"undefined\" && typeof column !== \"undefined\") {\n if (typeof line === \"number\") {\n this.line = line;\n this.column = column;\n } else {\n this.line = line.line;\n this.column = line.column;\n this.endLine = column.line;\n this.endColumn = column.column;\n }\n }\n this.setMessage();\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, CssSyntaxError);\n }\n }\n setMessage() {\n this.message = this.plugin ? this.plugin + \": \" : \"\";\n this.message += this.file ? this.file : \"\";\n if (typeof this.line !== \"undefined\") {\n this.message += \":\" + this.line + \":\" + this.column;\n }\n this.message += \": \" + this.reason;\n }\n showSourceCode(color) {\n if (!this.source) return \"\";\n let css = this.source;\n if (color == null) color = pico$1.isColorSupported;\n if (terminalHighlight$1$1) {\n if (color) css = terminalHighlight$1$1(css);\n }\n let lines = css.split(/\\r?\\n/);\n let start = Math.max(this.line - 3, 0);\n let end = Math.min(this.line + 2, lines.length);\n let maxWidth = String(end).length;\n let mark, aside;\n if (color) {\n let { bold, gray, red } = pico$1.createColors(true);\n mark = (text) => bold(red(text));\n aside = (text) => gray(text);\n } else {\n mark = aside = (str) => str;\n }\n return lines.slice(start, end).map((line, index2) => {\n let number = start + 1 + index2;\n let gutter = \" \" + (\" \" + number).slice(-maxWidth) + \" | \";\n if (number === this.line) {\n let spacing = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, this.column - 1).replace(/[^\\t]/g, \" \");\n return mark(\">\") + aside(gutter) + line + \"\\n \" + spacing + mark(\"^\");\n }\n return \" \" + aside(gutter) + line;\n }).join(\"\\n\");\n }\n toString() {\n let code = this.showSourceCode();\n if (code) {\n code = \"\\n\\n\" + code + \"\\n\";\n }\n return this.name + \": \" + this.message + code;\n }\n};\nvar cssSyntaxError$1 = CssSyntaxError$3$1;\nCssSyntaxError$3$1.default = CssSyntaxError$3$1;\nvar symbols$1 = {};\nsymbols$1.isClean = Symbol(\"isClean\");\nsymbols$1.my = Symbol(\"my\");\nconst DEFAULT_RAW$1 = {\n after: \"\\n\",\n beforeClose: \"\\n\",\n beforeComment: \"\\n\",\n beforeDecl: \"\\n\",\n beforeOpen: \" \",\n beforeRule: \"\\n\",\n colon: \": \",\n commentLeft: \" \",\n commentRight: \" \",\n emptyBody: \"\",\n indent: \" \",\n semicolon: false\n};\nfunction capitalize$1(str) {\n return str[0].toUpperCase() + str.slice(1);\n}\nlet Stringifier$2$1 = class Stringifier {\n constructor(builder) {\n this.builder = builder;\n }\n atrule(node2, semicolon) {\n let name = \"@\" + node2.name;\n let params = node2.params ? this.rawValue(node2, \"params\") : \"\";\n if (typeof node2.raws.afterName !== \"undefined\") {\n name += node2.raws.afterName;\n } else if (params) {\n name += \" \";\n }\n if (node2.nodes) {\n this.block(node2, name + params);\n } else {\n let end = (node2.raws.between || \"\") + (semicolon ? \";\" : \"\");\n this.builder(name + params + end, node2);\n }\n }\n beforeAfter(node2, detect) {\n let value;\n if (node2.type === \"decl\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (node2.type === \"comment\") {\n value = this.raw(node2, null, \"beforeComment\");\n } else if (detect === \"before\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else {\n value = this.raw(node2, null, \"beforeClose\");\n }\n let buf = node2.parent;\n let depth = 0;\n while (buf && buf.type !== \"root\") {\n depth += 1;\n buf = buf.parent;\n }\n if (value.includes(\"\\n\")) {\n let indent = this.raw(node2, null, \"indent\");\n if (indent.length) {\n for (let step = 0; step < depth; step++) value += indent;\n }\n }\n return value;\n }\n block(node2, start) {\n let between = this.raw(node2, \"between\", \"beforeOpen\");\n this.builder(start + between + \"{\", node2, \"start\");\n let after;\n if (node2.nodes && node2.nodes.length) {\n this.body(node2);\n after = this.raw(node2, \"after\");\n } else {\n after = this.raw(node2, \"after\", \"emptyBody\");\n }\n if (after) this.builder(after);\n this.builder(\"}\", node2, \"end\");\n }\n body(node2) {\n let last = node2.nodes.length - 1;\n while (last > 0) {\n if (node2.nodes[last].type !== \"comment\") break;\n last -= 1;\n }\n let semicolon = this.raw(node2, \"semicolon\");\n for (let i2 = 0; i2 < node2.nodes.length; i2++) {\n let child = node2.nodes[i2];\n let before = this.raw(child, \"before\");\n if (before) this.builder(before);\n this.stringify(child, last !== i2 || semicolon);\n }\n }\n comment(node2) {\n let left = this.raw(node2, \"left\", \"commentLeft\");\n let right = this.raw(node2, \"right\", \"commentRight\");\n this.builder(\"/*\" + left + node2.text + right + \"*/\", node2);\n }\n decl(node2, semicolon) {\n let between = this.raw(node2, \"between\", \"colon\");\n let string = node2.prop + between + this.rawValue(node2, \"value\");\n if (node2.important) {\n string += node2.raws.important || \" !important\";\n }\n if (semicolon) string += \";\";\n this.builder(string, node2);\n }\n document(node2) {\n this.body(node2);\n }\n raw(node2, own, detect) {\n let value;\n if (!detect) detect = own;\n if (own) {\n value = node2.raws[own];\n if (typeof value !== \"undefined\") return value;\n }\n let parent = node2.parent;\n if (detect === \"before\") {\n if (!parent || parent.type === \"root\" && parent.first === node2) {\n return \"\";\n }\n if (parent && parent.type === \"document\") {\n return \"\";\n }\n }\n if (!parent) return DEFAULT_RAW$1[detect];\n let root2 = node2.root();\n if (!root2.rawCache) root2.rawCache = {};\n if (typeof root2.rawCache[detect] !== \"undefined\") {\n return root2.rawCache[detect];\n }\n if (detect === \"before\" || detect === \"after\") {\n return this.beforeAfter(node2, detect);\n } else {\n let method = \"raw\" + capitalize$1(detect);\n if (this[method]) {\n value = this[method](root2, node2);\n } else {\n root2.walk((i2) => {\n value = i2.raws[own];\n if (typeof value !== \"undefined\") return false;\n });\n }\n }\n if (typeof value === \"undefined\") value = DEFAULT_RAW$1[detect];\n root2.rawCache[detect] = value;\n return value;\n }\n rawBeforeClose(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length > 0) {\n if (typeof i2.raws.after !== \"undefined\") {\n value = i2.raws.after;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawBeforeComment(root2, node2) {\n let value;\n root2.walkComments((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeDecl(root2, node2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeOpen(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.type !== \"decl\") {\n value = i2.raws.between;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawBeforeRule(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && (i2.parent !== root2 || root2.first !== i2)) {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawColon(root2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.between !== \"undefined\") {\n value = i2.raws.between.replace(/[^\\s:]/g, \"\");\n return false;\n }\n });\n return value;\n }\n rawEmptyBody(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length === 0) {\n value = i2.raws.after;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawIndent(root2) {\n if (root2.raws.indent) return root2.raws.indent;\n let value;\n root2.walk((i2) => {\n let p = i2.parent;\n if (p && p !== root2 && p.parent && p.parent === root2) {\n if (typeof i2.raws.before !== \"undefined\") {\n let parts = i2.raws.before.split(\"\\n\");\n value = parts[parts.length - 1];\n value = value.replace(/\\S/g, \"\");\n return false;\n }\n }\n });\n return value;\n }\n rawSemicolon(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length && i2.last.type === \"decl\") {\n value = i2.raws.semicolon;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawValue(node2, prop) {\n let value = node2[prop];\n let raw = node2.raws[prop];\n if (raw && raw.value === value) {\n return raw.raw;\n }\n return value;\n }\n root(node2) {\n this.body(node2);\n if (node2.raws.after) this.builder(node2.raws.after);\n }\n rule(node2) {\n this.block(node2, this.rawValue(node2, \"selector\"));\n if (node2.raws.ownSemicolon) {\n this.builder(node2.raws.ownSemicolon, node2, \"end\");\n }\n }\n stringify(node2, semicolon) {\n if (!this[node2.type]) {\n throw new Error(\n \"Unknown AST node type \" + node2.type + \". Maybe you need to change PostCSS stringifier.\"\n );\n }\n this[node2.type](node2, semicolon);\n }\n};\nvar stringifier$1 = Stringifier$2$1;\nStringifier$2$1.default = Stringifier$2$1;\nlet Stringifier$1$1 = stringifier$1;\nfunction stringify$4$1(node2, builder) {\n let str = new Stringifier$1$1(builder);\n str.stringify(node2);\n}\nvar stringify_1$1 = stringify$4$1;\nstringify$4$1.default = stringify$4$1;\nlet { isClean: isClean$2$1, my: my$2$1 } = symbols$1;\nlet CssSyntaxError$2$1 = cssSyntaxError$1;\nlet Stringifier2$1 = stringifier$1;\nlet stringify$3$1 = stringify_1$1;\nfunction cloneNode$1(obj, parent) {\n let cloned = new obj.constructor();\n for (let i2 in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, i2)) {\n continue;\n }\n if (i2 === \"proxyCache\") continue;\n let value = obj[i2];\n let type = typeof value;\n if (i2 === \"parent\" && type === \"object\") {\n if (parent) cloned[i2] = parent;\n } else if (i2 === \"source\") {\n cloned[i2] = value;\n } else if (Array.isArray(value)) {\n cloned[i2] = value.map((j) => cloneNode$1(j, cloned));\n } else {\n if (type === \"object\" && value !== null) value = cloneNode$1(value);\n cloned[i2] = value;\n }\n }\n return cloned;\n}\nlet Node$4$1 = class Node2 {\n constructor(defaults = {}) {\n this.raws = {};\n this[isClean$2$1] = false;\n this[my$2$1] = true;\n for (let name in defaults) {\n if (name === \"nodes\") {\n this.nodes = [];\n for (let node2 of defaults[name]) {\n if (typeof node2.clone === \"function\") {\n this.append(node2.clone());\n } else {\n this.append(node2);\n }\n }\n } else {\n this[name] = defaults[name];\n }\n }\n }\n addToError(error) {\n error.postcssNode = this;\n if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n let s2 = this.source;\n error.stack = error.stack.replace(\n /\\n\\s{4}at /,\n `$&${s2.input.from}:${s2.start.line}:${s2.start.column}$&`\n );\n }\n return error;\n }\n after(add) {\n this.parent.insertAfter(this, add);\n return this;\n }\n assign(overrides = {}) {\n for (let name in overrides) {\n this[name] = overrides[name];\n }\n return this;\n }\n before(add) {\n this.parent.insertBefore(this, add);\n return this;\n }\n cleanRaws(keepBetween) {\n delete this.raws.before;\n delete this.raws.after;\n if (!keepBetween) delete this.raws.between;\n }\n clone(overrides = {}) {\n let cloned = cloneNode$1(this);\n for (let name in overrides) {\n cloned[name] = overrides[name];\n }\n return cloned;\n }\n cloneAfter(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertAfter(this, cloned);\n return cloned;\n }\n cloneBefore(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertBefore(this, cloned);\n return cloned;\n }\n error(message, opts = {}) {\n if (this.source) {\n let { end, start } = this.rangeBy(opts);\n return this.source.input.error(\n message,\n { column: start.column, line: start.line },\n { column: end.column, line: end.line },\n opts\n );\n }\n return new CssSyntaxError$2$1(message);\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"prop\" || prop === \"value\" || prop === \"name\" || prop === \"params\" || prop === \"important\" || /* c8 ignore next */\n prop === \"text\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n markDirty() {\n if (this[isClean$2$1]) {\n this[isClean$2$1] = false;\n let next = this;\n while (next = next.parent) {\n next[isClean$2$1] = false;\n }\n }\n }\n next() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 + 1];\n }\n positionBy(opts, stringRepresentation) {\n let pos = this.source.start;\n if (opts.index) {\n pos = this.positionInside(opts.index, stringRepresentation);\n } else if (opts.word) {\n stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) pos = this.positionInside(index2, stringRepresentation);\n }\n return pos;\n }\n positionInside(index2, stringRepresentation) {\n let string = stringRepresentation || this.toString();\n let column = this.source.start.column;\n let line = this.source.start.line;\n for (let i2 = 0; i2 < index2; i2++) {\n if (string[i2] === \"\\n\") {\n column = 1;\n line += 1;\n } else {\n column += 1;\n }\n }\n return { column, line };\n }\n prev() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 - 1];\n }\n rangeBy(opts) {\n let start = {\n column: this.source.start.column,\n line: this.source.start.line\n };\n let end = this.source.end ? {\n column: this.source.end.column + 1,\n line: this.source.end.line\n } : {\n column: start.column + 1,\n line: start.line\n };\n if (opts.word) {\n let stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) {\n start = this.positionInside(index2, stringRepresentation);\n end = this.positionInside(index2 + opts.word.length, stringRepresentation);\n }\n } else {\n if (opts.start) {\n start = {\n column: opts.start.column,\n line: opts.start.line\n };\n } else if (opts.index) {\n start = this.positionInside(opts.index);\n }\n if (opts.end) {\n end = {\n column: opts.end.column,\n line: opts.end.line\n };\n } else if (typeof opts.endIndex === \"number\") {\n end = this.positionInside(opts.endIndex);\n } else if (opts.index) {\n end = this.positionInside(opts.index + 1);\n }\n }\n if (end.line < start.line || end.line === start.line && end.column <= start.column) {\n end = { column: start.column + 1, line: start.line };\n }\n return { end, start };\n }\n raw(prop, defaultType) {\n let str = new Stringifier2$1();\n return str.raw(this, prop, defaultType);\n }\n remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n this.parent = void 0;\n return this;\n }\n replaceWith(...nodes) {\n if (this.parent) {\n let bookmark = this;\n let foundSelf = false;\n for (let node2 of nodes) {\n if (node2 === this) {\n foundSelf = true;\n } else if (foundSelf) {\n this.parent.insertAfter(bookmark, node2);\n bookmark = node2;\n } else {\n this.parent.insertBefore(bookmark, node2);\n }\n }\n if (!foundSelf) {\n this.remove();\n }\n }\n return this;\n }\n root() {\n let result2 = this;\n while (result2.parent && result2.parent.type !== \"document\") {\n result2 = result2.parent;\n }\n return result2;\n }\n toJSON(_, inputs) {\n let fixed = {};\n let emitInputs = inputs == null;\n inputs = inputs || /* @__PURE__ */ new Map();\n let inputsNextIndex = 0;\n for (let name in this) {\n if (!Object.prototype.hasOwnProperty.call(this, name)) {\n continue;\n }\n if (name === \"parent\" || name === \"proxyCache\") continue;\n let value = this[name];\n if (Array.isArray(value)) {\n fixed[name] = value.map((i2) => {\n if (typeof i2 === \"object\" && i2.toJSON) {\n return i2.toJSON(null, inputs);\n } else {\n return i2;\n }\n });\n } else if (typeof value === \"object\" && value.toJSON) {\n fixed[name] = value.toJSON(null, inputs);\n } else if (name === \"source\") {\n let inputId = inputs.get(value.input);\n if (inputId == null) {\n inputId = inputsNextIndex;\n inputs.set(value.input, inputsNextIndex);\n inputsNextIndex++;\n }\n fixed[name] = {\n end: value.end,\n inputId,\n start: value.start\n };\n } else {\n fixed[name] = value;\n }\n }\n if (emitInputs) {\n fixed.inputs = [...inputs.keys()].map((input2) => input2.toJSON());\n }\n return fixed;\n }\n toProxy() {\n if (!this.proxyCache) {\n this.proxyCache = new Proxy(this, this.getProxyProcessor());\n }\n return this.proxyCache;\n }\n toString(stringifier2 = stringify$3$1) {\n if (stringifier2.stringify) stringifier2 = stringifier2.stringify;\n let result2 = \"\";\n stringifier2(this, (i2) => {\n result2 += i2;\n });\n return result2;\n }\n warn(result2, text, opts) {\n let data = { node: this };\n for (let i2 in opts) data[i2] = opts[i2];\n return result2.warn(text, data);\n }\n get proxyOf() {\n return this;\n }\n};\nvar node$1 = Node$4$1;\nNode$4$1.default = Node$4$1;\nlet Node$3$1 = node$1;\nlet Declaration$4$1 = class Declaration extends Node$3$1 {\n constructor(defaults) {\n if (defaults && typeof defaults.value !== \"undefined\" && typeof defaults.value !== \"string\") {\n defaults = { ...defaults, value: String(defaults.value) };\n }\n super(defaults);\n this.type = \"decl\";\n }\n get variable() {\n return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n }\n};\nvar declaration$1 = Declaration$4$1;\nDeclaration$4$1.default = Declaration$4$1;\nlet urlAlphabet$1 = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\nlet customAlphabet$1 = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = \"\";\n let i2 = size;\n while (i2--) {\n id += alphabet[Math.random() * alphabet.length | 0];\n }\n return id;\n };\n};\nlet nanoid$1$1 = (size = 21) => {\n let id = \"\";\n let i2 = size;\n while (i2--) {\n id += urlAlphabet$1[Math.random() * 64 | 0];\n }\n return id;\n};\nvar nonSecure$1 = { nanoid: nanoid$1$1, customAlphabet: customAlphabet$1 };\nlet { SourceMapConsumer: SourceMapConsumer$2$1, SourceMapGenerator: SourceMapGenerator$2$1 } = require$$2$1;\nlet { existsSync: existsSync$1, readFileSync: readFileSync$1 } = require$$2$1;\nlet { dirname: dirname$1$1, join: join$1 } = require$$2$1;\nfunction fromBase64$1(str) {\n if (Buffer) {\n return Buffer.from(str, \"base64\").toString();\n } else {\n return window.atob(str);\n }\n}\nlet PreviousMap$2$1 = class PreviousMap {\n constructor(css, opts) {\n if (opts.map === false) return;\n this.loadAnnotation(css);\n this.inline = this.startWith(this.annotation, \"data:\");\n let prev = opts.map ? opts.map.prev : void 0;\n let text = this.loadMap(opts.from, prev);\n if (!this.mapFile && opts.from) {\n this.mapFile = opts.from;\n }\n if (this.mapFile) this.root = dirname$1$1(this.mapFile);\n if (text) this.text = text;\n }\n consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new SourceMapConsumer$2$1(this.text);\n }\n return this.consumerCache;\n }\n decodeInline(text) {\n let baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/;\n let baseUri = /^data:application\\/json;base64,/;\n let charsetUri = /^data:application\\/json;charset=utf-?8,/;\n let uri = /^data:application\\/json,/;\n if (charsetUri.test(text) || uri.test(text)) {\n return decodeURIComponent(text.substr(RegExp.lastMatch.length));\n }\n if (baseCharsetUri.test(text) || baseUri.test(text)) {\n return fromBase64$1(text.substr(RegExp.lastMatch.length));\n }\n let encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n throw new Error(\"Unsupported source map encoding \" + encoding);\n }\n getAnnotationURL(sourceMapString) {\n return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n }\n isMap(map) {\n if (typeof map !== \"object\") return false;\n return typeof map.mappings === \"string\" || typeof map._mappings === \"string\" || Array.isArray(map.sections);\n }\n loadAnnotation(css) {\n let comments = css.match(/\\/\\*\\s*# sourceMappingURL=/gm);\n if (!comments) return;\n let start = css.lastIndexOf(comments.pop());\n let end = css.indexOf(\"*/\", start);\n if (start > -1 && end > -1) {\n this.annotation = this.getAnnotationURL(css.substring(start, end));\n }\n }\n loadFile(path) {\n this.root = dirname$1$1(path);\n if (existsSync$1(path)) {\n this.mapFile = path;\n return readFileSync$1(path, \"utf-8\").toString().trim();\n }\n }\n loadMap(file, prev) {\n if (prev === false) return false;\n if (prev) {\n if (typeof prev === \"string\") {\n return prev;\n } else if (typeof prev === \"function\") {\n let prevPath = prev(file);\n if (prevPath) {\n let map = this.loadFile(prevPath);\n if (!map) {\n throw new Error(\n \"Unable to load previous source map: \" + prevPath.toString()\n );\n }\n return map;\n }\n } else if (prev instanceof SourceMapConsumer$2$1) {\n return SourceMapGenerator$2$1.fromSourceMap(prev).toString();\n } else if (prev instanceof SourceMapGenerator$2$1) {\n return prev.toString();\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev);\n } else {\n throw new Error(\n \"Unsupported previous source map format: \" + prev.toString()\n );\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation);\n } else if (this.annotation) {\n let map = this.annotation;\n if (file) map = join$1(dirname$1$1(file), map);\n return this.loadFile(map);\n }\n }\n startWith(string, start) {\n if (!string) return false;\n return string.substr(0, start.length) === start;\n }\n withContent() {\n return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n }\n};\nvar previousMap$1 = PreviousMap$2$1;\nPreviousMap$2$1.default = PreviousMap$2$1;\nlet { SourceMapConsumer: SourceMapConsumer$1$1, SourceMapGenerator: SourceMapGenerator$1$1 } = require$$2$1;\nlet { fileURLToPath: fileURLToPath$1, pathToFileURL: pathToFileURL$1$1 } = require$$2$1;\nlet { isAbsolute: isAbsolute$1, resolve: resolve$1$1 } = require$$2$1;\nlet { nanoid: nanoid$2 } = nonSecure$1;\nlet terminalHighlight$2 = require$$2$1;\nlet CssSyntaxError$1$1 = cssSyntaxError$1;\nlet PreviousMap$1$1 = previousMap$1;\nlet fromOffsetCache$1 = Symbol(\"fromOffsetCache\");\nlet sourceMapAvailable$1$1 = Boolean(SourceMapConsumer$1$1 && SourceMapGenerator$1$1);\nlet pathAvailable$1$1 = Boolean(resolve$1$1 && isAbsolute$1);\nlet Input$4$1 = class Input {\n constructor(css, opts = {}) {\n if (css === null || typeof css === \"undefined\" || typeof css === \"object\" && !css.toString) {\n throw new Error(`PostCSS received ${css} instead of CSS string`);\n }\n this.css = css.toString();\n if (this.css[0] === \"\\uFEFF\" || this.css[0] === \"￾\") {\n this.hasBOM = true;\n this.css = this.css.slice(1);\n } else {\n this.hasBOM = false;\n }\n if (opts.from) {\n if (!pathAvailable$1$1 || /^\\w+:\\/\\//.test(opts.from) || isAbsolute$1(opts.from)) {\n this.file = opts.from;\n } else {\n this.file = resolve$1$1(opts.from);\n }\n }\n if (pathAvailable$1$1 && sourceMapAvailable$1$1) {\n let map = new PreviousMap$1$1(this.css, opts);\n if (map.text) {\n this.map = map;\n let file = map.consumer().file;\n if (!this.file && file) this.file = this.mapResolve(file);\n }\n }\n if (!this.file) {\n this.id = \"\";\n }\n if (this.map) this.map.file = this.from;\n }\n error(message, line, column, opts = {}) {\n let result2, endLine, endColumn;\n if (line && typeof line === \"object\") {\n let start = line;\n let end = column;\n if (typeof start.offset === \"number\") {\n let pos = this.fromOffset(start.offset);\n line = pos.line;\n column = pos.col;\n } else {\n line = start.line;\n column = start.column;\n }\n if (typeof end.offset === \"number\") {\n let pos = this.fromOffset(end.offset);\n endLine = pos.line;\n endColumn = pos.col;\n } else {\n endLine = end.line;\n endColumn = end.column;\n }\n } else if (!column) {\n let pos = this.fromOffset(line);\n line = pos.line;\n column = pos.col;\n }\n let origin = this.origin(line, column, endLine, endColumn);\n if (origin) {\n result2 = new CssSyntaxError$1$1(\n message,\n origin.endLine === void 0 ? origin.line : { column: origin.column, line: origin.line },\n origin.endLine === void 0 ? origin.column : { column: origin.endColumn, line: origin.endLine },\n origin.source,\n origin.file,\n opts.plugin\n );\n } else {\n result2 = new CssSyntaxError$1$1(\n message,\n endLine === void 0 ? line : { column, line },\n endLine === void 0 ? column : { column: endColumn, line: endLine },\n this.css,\n this.file,\n opts.plugin\n );\n }\n result2.input = { column, endColumn, endLine, line, source: this.css };\n if (this.file) {\n if (pathToFileURL$1$1) {\n result2.input.url = pathToFileURL$1$1(this.file).toString();\n }\n result2.input.file = this.file;\n }\n return result2;\n }\n fromOffset(offset) {\n let lastLine, lineToIndex;\n if (!this[fromOffsetCache$1]) {\n let lines = this.css.split(\"\\n\");\n lineToIndex = new Array(lines.length);\n let prevIndex = 0;\n for (let i2 = 0, l2 = lines.length; i2 < l2; i2++) {\n lineToIndex[i2] = prevIndex;\n prevIndex += lines[i2].length + 1;\n }\n this[fromOffsetCache$1] = lineToIndex;\n } else {\n lineToIndex = this[fromOffsetCache$1];\n }\n lastLine = lineToIndex[lineToIndex.length - 1];\n let min = 0;\n if (offset >= lastLine) {\n min = lineToIndex.length - 1;\n } else {\n let max = lineToIndex.length - 2;\n let mid;\n while (min < max) {\n mid = min + (max - min >> 1);\n if (offset < lineToIndex[mid]) {\n max = mid - 1;\n } else if (offset >= lineToIndex[mid + 1]) {\n min = mid + 1;\n } else {\n min = mid;\n break;\n }\n }\n }\n return {\n col: offset - lineToIndex[min] + 1,\n line: min + 1\n };\n }\n mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file;\n }\n return resolve$1$1(this.map.consumer().sourceRoot || this.map.root || \".\", file);\n }\n origin(line, column, endLine, endColumn) {\n if (!this.map) return false;\n let consumer = this.map.consumer();\n let from = consumer.originalPositionFor({ column, line });\n if (!from.source) return false;\n let to;\n if (typeof endLine === \"number\") {\n to = consumer.originalPositionFor({ column: endColumn, line: endLine });\n }\n let fromUrl;\n if (isAbsolute$1(from.source)) {\n fromUrl = pathToFileURL$1$1(from.source);\n } else {\n fromUrl = new URL(\n from.source,\n this.map.consumer().sourceRoot || pathToFileURL$1$1(this.map.mapFile)\n );\n }\n let result2 = {\n column: from.column,\n endColumn: to && to.column,\n endLine: to && to.line,\n line: from.line,\n url: fromUrl.toString()\n };\n if (fromUrl.protocol === \"file:\") {\n if (fileURLToPath$1) {\n result2.file = fileURLToPath$1(fromUrl);\n } else {\n throw new Error(`file: protocol is not available in this PostCSS build`);\n }\n }\n let source = consumer.sourceContentFor(from.source);\n if (source) result2.source = source;\n return result2;\n }\n toJSON() {\n let json = {};\n for (let name of [\"hasBOM\", \"css\", \"file\", \"id\"]) {\n if (this[name] != null) {\n json[name] = this[name];\n }\n }\n if (this.map) {\n json.map = { ...this.map };\n if (json.map.consumerCache) {\n json.map.consumerCache = void 0;\n }\n }\n return json;\n }\n get from() {\n return this.file || this.id;\n }\n};\nvar input$1 = Input$4$1;\nInput$4$1.default = Input$4$1;\nif (terminalHighlight$2 && terminalHighlight$2.registerInput) {\n terminalHighlight$2.registerInput(Input$4$1);\n}\nlet { SourceMapConsumer: SourceMapConsumer$3, SourceMapGenerator: SourceMapGenerator$3 } = require$$2$1;\nlet { dirname: dirname$2, relative: relative$1, resolve: resolve$2, sep: sep$1 } = require$$2$1;\nlet { pathToFileURL: pathToFileURL$2 } = require$$2$1;\nlet Input$3$1 = input$1;\nlet sourceMapAvailable$2 = Boolean(SourceMapConsumer$3 && SourceMapGenerator$3);\nlet pathAvailable$2 = Boolean(dirname$2 && resolve$2 && relative$1 && sep$1);\nlet MapGenerator$2$1 = class MapGenerator {\n constructor(stringify2, root2, opts, cssString) {\n this.stringify = stringify2;\n this.mapOpts = opts.map || {};\n this.root = root2;\n this.opts = opts;\n this.css = cssString;\n this.originalCSS = cssString;\n this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute;\n this.memoizedFileURLs = /* @__PURE__ */ new Map();\n this.memoizedPaths = /* @__PURE__ */ new Map();\n this.memoizedURLs = /* @__PURE__ */ new Map();\n }\n addAnnotation() {\n let content;\n if (this.isInline()) {\n content = \"data:application/json;base64,\" + this.toBase64(this.map.toString());\n } else if (typeof this.mapOpts.annotation === \"string\") {\n content = this.mapOpts.annotation;\n } else if (typeof this.mapOpts.annotation === \"function\") {\n content = this.mapOpts.annotation(this.opts.to, this.root);\n } else {\n content = this.outputFile() + \".map\";\n }\n let eol = \"\\n\";\n if (this.css.includes(\"\\r\\n\")) eol = \"\\r\\n\";\n this.css += eol + \"/*# sourceMappingURL=\" + content + \" */\";\n }\n applyPrevMaps() {\n for (let prev of this.previous()) {\n let from = this.toUrl(this.path(prev.file));\n let root2 = prev.root || dirname$2(prev.file);\n let map;\n if (this.mapOpts.sourcesContent === false) {\n map = new SourceMapConsumer$3(prev.text);\n if (map.sourcesContent) {\n map.sourcesContent = null;\n }\n } else {\n map = prev.consumer();\n }\n this.map.applySourceMap(map, from, this.toUrl(this.path(root2)));\n }\n }\n clearAnnotation() {\n if (this.mapOpts.annotation === false) return;\n if (this.root) {\n let node2;\n for (let i2 = this.root.nodes.length - 1; i2 >= 0; i2--) {\n node2 = this.root.nodes[i2];\n if (node2.type !== \"comment\") continue;\n if (node2.text.indexOf(\"# sourceMappingURL=\") === 0) {\n this.root.removeChild(i2);\n }\n }\n } else if (this.css) {\n this.css = this.css.replace(/\\n*?\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\");\n }\n }\n generate() {\n this.clearAnnotation();\n if (pathAvailable$2 && sourceMapAvailable$2 && this.isMap()) {\n return this.generateMap();\n } else {\n let result2 = \"\";\n this.stringify(this.root, (i2) => {\n result2 += i2;\n });\n return [result2];\n }\n }\n generateMap() {\n if (this.root) {\n this.generateString();\n } else if (this.previous().length === 1) {\n let prev = this.previous()[0].consumer();\n prev.file = this.outputFile();\n this.map = SourceMapGenerator$3.fromSourceMap(prev, {\n ignoreInvalidMapping: true\n });\n } else {\n this.map = new SourceMapGenerator$3({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n this.map.addMapping({\n generated: { column: 0, line: 1 },\n original: { column: 0, line: 1 },\n source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\"\n });\n }\n if (this.isSourcesContent()) this.setSourcesContent();\n if (this.root && this.previous().length > 0) this.applyPrevMaps();\n if (this.isAnnotation()) this.addAnnotation();\n if (this.isInline()) {\n return [this.css];\n } else {\n return [this.css, this.map];\n }\n }\n generateString() {\n this.css = \"\";\n this.map = new SourceMapGenerator$3({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n let line = 1;\n let column = 1;\n let noSource = \"\";\n let mapping = {\n generated: { column: 0, line: 0 },\n original: { column: 0, line: 0 },\n source: \"\"\n };\n let lines, last;\n this.stringify(this.root, (str, node2, type) => {\n this.css += str;\n if (node2 && type !== \"end\") {\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n if (node2.source && node2.source.start) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.start.line;\n mapping.original.column = node2.source.start.column - 1;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n this.map.addMapping(mapping);\n }\n }\n lines = str.match(/\\n/g);\n if (lines) {\n line += lines.length;\n last = str.lastIndexOf(\"\\n\");\n column = str.length - last;\n } else {\n column += str.length;\n }\n if (node2 && type !== \"start\") {\n let p = node2.parent || { raws: {} };\n let childless = node2.type === \"decl\" || node2.type === \"atrule\" && !node2.nodes;\n if (!childless || node2 !== p.last || p.raws.semicolon) {\n if (node2.source && node2.source.end) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.end.line;\n mapping.original.column = node2.source.end.column - 1;\n mapping.generated.line = line;\n mapping.generated.column = column - 2;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n this.map.addMapping(mapping);\n }\n }\n }\n });\n }\n isAnnotation() {\n if (this.isInline()) {\n return true;\n }\n if (typeof this.mapOpts.annotation !== \"undefined\") {\n return this.mapOpts.annotation;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.annotation);\n }\n return true;\n }\n isInline() {\n if (typeof this.mapOpts.inline !== \"undefined\") {\n return this.mapOpts.inline;\n }\n let annotation = this.mapOpts.annotation;\n if (typeof annotation !== \"undefined\" && annotation !== true) {\n return false;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.inline);\n }\n return true;\n }\n isMap() {\n if (typeof this.opts.map !== \"undefined\") {\n return !!this.opts.map;\n }\n return this.previous().length > 0;\n }\n isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== \"undefined\") {\n return this.mapOpts.sourcesContent;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.withContent());\n }\n return true;\n }\n outputFile() {\n if (this.opts.to) {\n return this.path(this.opts.to);\n } else if (this.opts.from) {\n return this.path(this.opts.from);\n } else {\n return \"to.css\";\n }\n }\n path(file) {\n if (this.mapOpts.absolute) return file;\n if (file.charCodeAt(0) === 60) return file;\n if (/^\\w+:\\/\\//.test(file)) return file;\n let cached = this.memoizedPaths.get(file);\n if (cached) return cached;\n let from = this.opts.to ? dirname$2(this.opts.to) : \".\";\n if (typeof this.mapOpts.annotation === \"string\") {\n from = dirname$2(resolve$2(from, this.mapOpts.annotation));\n }\n let path = relative$1(from, file);\n this.memoizedPaths.set(file, path);\n return path;\n }\n previous() {\n if (!this.previousMaps) {\n this.previousMaps = [];\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source && node2.source.input.map) {\n let map = node2.source.input.map;\n if (!this.previousMaps.includes(map)) {\n this.previousMaps.push(map);\n }\n }\n });\n } else {\n let input2 = new Input$3$1(this.originalCSS, this.opts);\n if (input2.map) this.previousMaps.push(input2.map);\n }\n }\n return this.previousMaps;\n }\n setSourcesContent() {\n let already = {};\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source) {\n let from = node2.source.input.from;\n if (from && !already[from]) {\n already[from] = true;\n let fromUrl = this.usesFileUrls ? this.toFileUrl(from) : this.toUrl(this.path(from));\n this.map.setSourceContent(fromUrl, node2.source.input.css);\n }\n }\n });\n } else if (this.css) {\n let from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\";\n this.map.setSourceContent(from, this.css);\n }\n }\n sourcePath(node2) {\n if (this.mapOpts.from) {\n return this.toUrl(this.mapOpts.from);\n } else if (this.usesFileUrls) {\n return this.toFileUrl(node2.source.input.from);\n } else {\n return this.toUrl(this.path(node2.source.input.from));\n }\n }\n toBase64(str) {\n if (Buffer) {\n return Buffer.from(str).toString(\"base64\");\n } else {\n return window.btoa(unescape(encodeURIComponent(str)));\n }\n }\n toFileUrl(path) {\n let cached = this.memoizedFileURLs.get(path);\n if (cached) return cached;\n if (pathToFileURL$2) {\n let fileURL = pathToFileURL$2(path).toString();\n this.memoizedFileURLs.set(path, fileURL);\n return fileURL;\n } else {\n throw new Error(\n \"`map.absolute` option is not available in this PostCSS build\"\n );\n }\n }\n toUrl(path) {\n let cached = this.memoizedURLs.get(path);\n if (cached) return cached;\n if (sep$1 === \"\\\\\") {\n path = path.replace(/\\\\/g, \"/\");\n }\n let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent);\n this.memoizedURLs.set(path, url);\n return url;\n }\n};\nvar mapGenerator$1 = MapGenerator$2$1;\nlet Node$2$1 = node$1;\nlet Comment$4$1 = class Comment extends Node$2$1 {\n constructor(defaults) {\n super(defaults);\n this.type = \"comment\";\n }\n};\nvar comment$1 = Comment$4$1;\nComment$4$1.default = Comment$4$1;\nlet { isClean: isClean$1$1, my: my$1$1 } = symbols$1;\nlet Declaration$3$1 = declaration$1;\nlet Comment$3$1 = comment$1;\nlet Node$1$1 = node$1;\nlet parse$4$1, Rule$4$1, AtRule$4$1, Root$6$1;\nfunction cleanSource$1(nodes) {\n return nodes.map((i2) => {\n if (i2.nodes) i2.nodes = cleanSource$1(i2.nodes);\n delete i2.source;\n return i2;\n });\n}\nfunction markDirtyUp$1(node2) {\n node2[isClean$1$1] = false;\n if (node2.proxyOf.nodes) {\n for (let i2 of node2.proxyOf.nodes) {\n markDirtyUp$1(i2);\n }\n }\n}\nlet Container$7$1 = class Container extends Node$1$1 {\n append(...children) {\n for (let child of children) {\n let nodes = this.normalize(child, this.last);\n for (let node2 of nodes) this.proxyOf.nodes.push(node2);\n }\n this.markDirty();\n return this;\n }\n cleanRaws(keepBetween) {\n super.cleanRaws(keepBetween);\n if (this.nodes) {\n for (let node2 of this.nodes) node2.cleanRaws(keepBetween);\n }\n }\n each(callback) {\n if (!this.proxyOf.nodes) return void 0;\n let iterator = this.getIterator();\n let index2, result2;\n while (this.indexes[iterator] < this.proxyOf.nodes.length) {\n index2 = this.indexes[iterator];\n result2 = callback(this.proxyOf.nodes[index2], index2);\n if (result2 === false) break;\n this.indexes[iterator] += 1;\n }\n delete this.indexes[iterator];\n return result2;\n }\n every(condition) {\n return this.nodes.every(condition);\n }\n getIterator() {\n if (!this.lastEach) this.lastEach = 0;\n if (!this.indexes) this.indexes = {};\n this.lastEach += 1;\n let iterator = this.lastEach;\n this.indexes[iterator] = 0;\n return iterator;\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (!node2[prop]) {\n return node2[prop];\n } else if (prop === \"each\" || typeof prop === \"string\" && prop.startsWith(\"walk\")) {\n return (...args) => {\n return node2[prop](\n ...args.map((i2) => {\n if (typeof i2 === \"function\") {\n return (child, index2) => i2(child.toProxy(), index2);\n } else {\n return i2;\n }\n })\n );\n };\n } else if (prop === \"every\" || prop === \"some\") {\n return (cb) => {\n return node2[prop](\n (child, ...other) => cb(child.toProxy(), ...other)\n );\n };\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else if (prop === \"nodes\") {\n return node2.nodes.map((i2) => i2.toProxy());\n } else if (prop === \"first\" || prop === \"last\") {\n return node2[prop].toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"name\" || prop === \"params\" || prop === \"selector\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n index(child) {\n if (typeof child === \"number\") return child;\n if (child.proxyOf) child = child.proxyOf;\n return this.proxyOf.nodes.indexOf(child);\n }\n insertAfter(exist, add) {\n let existIndex = this.index(exist);\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex < index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n insertBefore(exist, add) {\n let existIndex = this.index(exist);\n let type = existIndex === 0 ? \"prepend\" : false;\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex <= index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n normalize(nodes, sample) {\n if (typeof nodes === \"string\") {\n nodes = cleanSource$1(parse$4$1(nodes).nodes);\n } else if (typeof nodes === \"undefined\") {\n nodes = [];\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type === \"root\" && this.type !== \"document\") {\n nodes = nodes.nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type) {\n nodes = [nodes];\n } else if (nodes.prop) {\n if (typeof nodes.value === \"undefined\") {\n throw new Error(\"Value field is missed in node creation\");\n } else if (typeof nodes.value !== \"string\") {\n nodes.value = String(nodes.value);\n }\n nodes = [new Declaration$3$1(nodes)];\n } else if (nodes.selector) {\n nodes = [new Rule$4$1(nodes)];\n } else if (nodes.name) {\n nodes = [new AtRule$4$1(nodes)];\n } else if (nodes.text) {\n nodes = [new Comment$3$1(nodes)];\n } else {\n throw new Error(\"Unknown node type in node creation\");\n }\n let processed = nodes.map((i2) => {\n if (!i2[my$1$1]) Container.rebuild(i2);\n i2 = i2.proxyOf;\n if (i2.parent) i2.parent.removeChild(i2);\n if (i2[isClean$1$1]) markDirtyUp$1(i2);\n if (typeof i2.raws.before === \"undefined\") {\n if (sample && typeof sample.raws.before !== \"undefined\") {\n i2.raws.before = sample.raws.before.replace(/\\S/g, \"\");\n }\n }\n i2.parent = this.proxyOf;\n return i2;\n });\n return processed;\n }\n prepend(...children) {\n children = children.reverse();\n for (let child of children) {\n let nodes = this.normalize(child, this.first, \"prepend\").reverse();\n for (let node2 of nodes) this.proxyOf.nodes.unshift(node2);\n for (let id in this.indexes) {\n this.indexes[id] = this.indexes[id] + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n push(child) {\n child.parent = this;\n this.proxyOf.nodes.push(child);\n return this;\n }\n removeAll() {\n for (let node2 of this.proxyOf.nodes) node2.parent = void 0;\n this.proxyOf.nodes = [];\n this.markDirty();\n return this;\n }\n removeChild(child) {\n child = this.index(child);\n this.proxyOf.nodes[child].parent = void 0;\n this.proxyOf.nodes.splice(child, 1);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (index2 >= child) {\n this.indexes[id] = index2 - 1;\n }\n }\n this.markDirty();\n return this;\n }\n replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {};\n }\n this.walkDecls((decl) => {\n if (opts.props && !opts.props.includes(decl.prop)) return;\n if (opts.fast && !decl.value.includes(opts.fast)) return;\n decl.value = decl.value.replace(pattern, callback);\n });\n this.markDirty();\n return this;\n }\n some(condition) {\n return this.nodes.some(condition);\n }\n walk(callback) {\n return this.each((child, i2) => {\n let result2;\n try {\n result2 = callback(child, i2);\n } catch (e2) {\n throw child.addToError(e2);\n }\n if (result2 !== false && child.walk) {\n result2 = child.walk(callback);\n }\n return result2;\n });\n }\n walkAtRules(name, callback) {\n if (!callback) {\n callback = name;\n return this.walk((child, i2) => {\n if (child.type === \"atrule\") {\n return callback(child, i2);\n }\n });\n }\n if (name instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && name.test(child.name)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && child.name === name) {\n return callback(child, i2);\n }\n });\n }\n walkComments(callback) {\n return this.walk((child, i2) => {\n if (child.type === \"comment\") {\n return callback(child, i2);\n }\n });\n }\n walkDecls(prop, callback) {\n if (!callback) {\n callback = prop;\n return this.walk((child, i2) => {\n if (child.type === \"decl\") {\n return callback(child, i2);\n }\n });\n }\n if (prop instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && prop.test(child.prop)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && child.prop === prop) {\n return callback(child, i2);\n }\n });\n }\n walkRules(selector, callback) {\n if (!callback) {\n callback = selector;\n return this.walk((child, i2) => {\n if (child.type === \"rule\") {\n return callback(child, i2);\n }\n });\n }\n if (selector instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && selector.test(child.selector)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && child.selector === selector) {\n return callback(child, i2);\n }\n });\n }\n get first() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[0];\n }\n get last() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n }\n};\nContainer$7$1.registerParse = (dependant) => {\n parse$4$1 = dependant;\n};\nContainer$7$1.registerRule = (dependant) => {\n Rule$4$1 = dependant;\n};\nContainer$7$1.registerAtRule = (dependant) => {\n AtRule$4$1 = dependant;\n};\nContainer$7$1.registerRoot = (dependant) => {\n Root$6$1 = dependant;\n};\nvar container$1 = Container$7$1;\nContainer$7$1.default = Container$7$1;\nContainer$7$1.rebuild = (node2) => {\n if (node2.type === \"atrule\") {\n Object.setPrototypeOf(node2, AtRule$4$1.prototype);\n } else if (node2.type === \"rule\") {\n Object.setPrototypeOf(node2, Rule$4$1.prototype);\n } else if (node2.type === \"decl\") {\n Object.setPrototypeOf(node2, Declaration$3$1.prototype);\n } else if (node2.type === \"comment\") {\n Object.setPrototypeOf(node2, Comment$3$1.prototype);\n } else if (node2.type === \"root\") {\n Object.setPrototypeOf(node2, Root$6$1.prototype);\n }\n node2[my$1$1] = true;\n if (node2.nodes) {\n node2.nodes.forEach((child) => {\n Container$7$1.rebuild(child);\n });\n }\n};\nlet Container$6$1 = container$1;\nlet LazyResult$4$1, Processor$3$1;\nlet Document$3$1 = class Document2 extends Container$6$1 {\n constructor(defaults) {\n super({ type: \"document\", ...defaults });\n if (!this.nodes) {\n this.nodes = [];\n }\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$4$1(new Processor$3$1(), this, opts);\n return lazy.stringify();\n }\n};\nDocument$3$1.registerLazyResult = (dependant) => {\n LazyResult$4$1 = dependant;\n};\nDocument$3$1.registerProcessor = (dependant) => {\n Processor$3$1 = dependant;\n};\nvar document$1$1 = Document$3$1;\nDocument$3$1.default = Document$3$1;\nlet printed$1 = {};\nvar warnOnce$2$1 = function warnOnce(message) {\n if (printed$1[message]) return;\n printed$1[message] = true;\n if (typeof console !== \"undefined\" && console.warn) {\n console.warn(message);\n }\n};\nlet Warning$2$1 = class Warning {\n constructor(text, opts = {}) {\n this.type = \"warning\";\n this.text = text;\n if (opts.node && opts.node.source) {\n let range = opts.node.rangeBy(opts);\n this.line = range.start.line;\n this.column = range.start.column;\n this.endLine = range.end.line;\n this.endColumn = range.end.column;\n }\n for (let opt in opts) this[opt] = opts[opt];\n }\n toString() {\n if (this.node) {\n return this.node.error(this.text, {\n index: this.index,\n plugin: this.plugin,\n word: this.word\n }).message;\n }\n if (this.plugin) {\n return this.plugin + \": \" + this.text;\n }\n return this.text;\n }\n};\nvar warning$1 = Warning$2$1;\nWarning$2$1.default = Warning$2$1;\nlet Warning$1$1 = warning$1;\nlet Result$3$1 = class Result {\n constructor(processor2, root2, opts) {\n this.processor = processor2;\n this.messages = [];\n this.root = root2;\n this.opts = opts;\n this.css = void 0;\n this.map = void 0;\n }\n toString() {\n return this.css;\n }\n warn(text, opts = {}) {\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin;\n }\n }\n let warning2 = new Warning$1$1(text, opts);\n this.messages.push(warning2);\n return warning2;\n }\n warnings() {\n return this.messages.filter((i2) => i2.type === \"warning\");\n }\n get content() {\n return this.css;\n }\n};\nvar result$1 = Result$3$1;\nResult$3$1.default = Result$3$1;\nconst SINGLE_QUOTE$1 = \"'\".charCodeAt(0);\nconst DOUBLE_QUOTE$1 = '\"'.charCodeAt(0);\nconst BACKSLASH$1 = \"\\\\\".charCodeAt(0);\nconst SLASH$1 = \"/\".charCodeAt(0);\nconst NEWLINE$1 = \"\\n\".charCodeAt(0);\nconst SPACE$1 = \" \".charCodeAt(0);\nconst FEED$1 = \"\\f\".charCodeAt(0);\nconst TAB$1 = \"\t\".charCodeAt(0);\nconst CR$1 = \"\\r\".charCodeAt(0);\nconst OPEN_SQUARE$1 = \"[\".charCodeAt(0);\nconst CLOSE_SQUARE$1 = \"]\".charCodeAt(0);\nconst OPEN_PARENTHESES$1 = \"(\".charCodeAt(0);\nconst CLOSE_PARENTHESES$1 = \")\".charCodeAt(0);\nconst OPEN_CURLY$1 = \"{\".charCodeAt(0);\nconst CLOSE_CURLY$1 = \"}\".charCodeAt(0);\nconst SEMICOLON$1 = \";\".charCodeAt(0);\nconst ASTERISK$1 = \"*\".charCodeAt(0);\nconst COLON$1 = \":\".charCodeAt(0);\nconst AT$1 = \"@\".charCodeAt(0);\nconst RE_AT_END$1 = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g;\nconst RE_WORD_END$1 = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g;\nconst RE_BAD_BRACKET$1 = /.[\\r\\n\"'(/\\\\]/;\nconst RE_HEX_ESCAPE$1 = /[\\da-f]/i;\nvar tokenize$1 = function tokenizer(input2, options = {}) {\n let css = input2.css.valueOf();\n let ignore = options.ignoreErrors;\n let code, next, quote, content, escape;\n let escaped, escapePos, prev, n2, currentToken;\n let length = css.length;\n let pos = 0;\n let buffer = [];\n let returned = [];\n function position() {\n return pos;\n }\n function unclosed(what) {\n throw input2.error(\"Unclosed \" + what, pos);\n }\n function endOfFile() {\n return returned.length === 0 && pos >= length;\n }\n function nextToken(opts) {\n if (returned.length) return returned.pop();\n if (pos >= length) return;\n let ignoreUnclosed = opts ? opts.ignoreUnclosed : false;\n code = css.charCodeAt(pos);\n switch (code) {\n case NEWLINE$1:\n case SPACE$1:\n case TAB$1:\n case CR$1:\n case FEED$1: {\n next = pos;\n do {\n next += 1;\n code = css.charCodeAt(next);\n } while (code === SPACE$1 || code === NEWLINE$1 || code === TAB$1 || code === CR$1 || code === FEED$1);\n currentToken = [\"space\", css.slice(pos, next)];\n pos = next - 1;\n break;\n }\n case OPEN_SQUARE$1:\n case CLOSE_SQUARE$1:\n case OPEN_CURLY$1:\n case CLOSE_CURLY$1:\n case COLON$1:\n case SEMICOLON$1:\n case CLOSE_PARENTHESES$1: {\n let controlChar = String.fromCharCode(code);\n currentToken = [controlChar, controlChar, pos];\n break;\n }\n case OPEN_PARENTHESES$1: {\n prev = buffer.length ? buffer.pop()[1] : \"\";\n n2 = css.charCodeAt(pos + 1);\n if (prev === \"url\" && n2 !== SINGLE_QUOTE$1 && n2 !== DOUBLE_QUOTE$1 && n2 !== SPACE$1 && n2 !== NEWLINE$1 && n2 !== TAB$1 && n2 !== FEED$1 && n2 !== CR$1) {\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(\")\", next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos;\n break;\n } else {\n unclosed(\"bracket\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH$1) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"brackets\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n next = css.indexOf(\")\", pos + 1);\n content = css.slice(pos, next + 1);\n if (next === -1 || RE_BAD_BRACKET$1.test(content)) {\n currentToken = [\"(\", \"(\", pos];\n } else {\n currentToken = [\"brackets\", content, pos, next];\n pos = next;\n }\n }\n break;\n }\n case SINGLE_QUOTE$1:\n case DOUBLE_QUOTE$1: {\n quote = code === SINGLE_QUOTE$1 ? \"'\" : '\"';\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(quote, next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos + 1;\n break;\n } else {\n unclosed(\"string\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH$1) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"string\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case AT$1: {\n RE_AT_END$1.lastIndex = pos + 1;\n RE_AT_END$1.test(css);\n if (RE_AT_END$1.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_AT_END$1.lastIndex - 2;\n }\n currentToken = [\"at-word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case BACKSLASH$1: {\n next = pos;\n escape = true;\n while (css.charCodeAt(next + 1) === BACKSLASH$1) {\n next += 1;\n escape = !escape;\n }\n code = css.charCodeAt(next + 1);\n if (escape && code !== SLASH$1 && code !== SPACE$1 && code !== NEWLINE$1 && code !== TAB$1 && code !== CR$1 && code !== FEED$1) {\n next += 1;\n if (RE_HEX_ESCAPE$1.test(css.charAt(next))) {\n while (RE_HEX_ESCAPE$1.test(css.charAt(next + 1))) {\n next += 1;\n }\n if (css.charCodeAt(next + 1) === SPACE$1) {\n next += 1;\n }\n }\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n default: {\n if (code === SLASH$1 && css.charCodeAt(pos + 1) === ASTERISK$1) {\n next = css.indexOf(\"*/\", pos + 2) + 1;\n if (next === 0) {\n if (ignore || ignoreUnclosed) {\n next = css.length;\n } else {\n unclosed(\"comment\");\n }\n }\n currentToken = [\"comment\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n RE_WORD_END$1.lastIndex = pos + 1;\n RE_WORD_END$1.test(css);\n if (RE_WORD_END$1.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_WORD_END$1.lastIndex - 2;\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n buffer.push(currentToken);\n pos = next;\n }\n break;\n }\n }\n pos++;\n return currentToken;\n }\n function back(token) {\n returned.push(token);\n }\n return {\n back,\n endOfFile,\n nextToken,\n position\n };\n};\nlet Container$5$1 = container$1;\nlet AtRule$3$1 = class AtRule extends Container$5$1 {\n constructor(defaults) {\n super(defaults);\n this.type = \"atrule\";\n }\n append(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.append(...children);\n }\n prepend(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.prepend(...children);\n }\n};\nvar atRule$1 = AtRule$3$1;\nAtRule$3$1.default = AtRule$3$1;\nContainer$5$1.registerAtRule(AtRule$3$1);\nlet Container$4$1 = container$1;\nlet LazyResult$3$1, Processor$2$1;\nlet Root$5$1 = class Root extends Container$4$1 {\n constructor(defaults) {\n super(defaults);\n this.type = \"root\";\n if (!this.nodes) this.nodes = [];\n }\n normalize(child, sample, type) {\n let nodes = super.normalize(child);\n if (sample) {\n if (type === \"prepend\") {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before;\n } else {\n delete sample.raws.before;\n }\n } else if (this.first !== sample) {\n for (let node2 of nodes) {\n node2.raws.before = sample.raws.before;\n }\n }\n }\n return nodes;\n }\n removeChild(child, ignore) {\n let index2 = this.index(child);\n if (!ignore && index2 === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index2].raws.before;\n }\n return super.removeChild(child);\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$3$1(new Processor$2$1(), this, opts);\n return lazy.stringify();\n }\n};\nRoot$5$1.registerLazyResult = (dependant) => {\n LazyResult$3$1 = dependant;\n};\nRoot$5$1.registerProcessor = (dependant) => {\n Processor$2$1 = dependant;\n};\nvar root$1 = Root$5$1;\nRoot$5$1.default = Root$5$1;\nContainer$4$1.registerRoot(Root$5$1);\nlet list$2$1 = {\n comma(string) {\n return list$2$1.split(string, [\",\"], true);\n },\n space(string) {\n let spaces = [\" \", \"\\n\", \"\t\"];\n return list$2$1.split(string, spaces);\n },\n split(string, separators, last) {\n let array = [];\n let current = \"\";\n let split = false;\n let func = 0;\n let inQuote = false;\n let prevQuote = \"\";\n let escape = false;\n for (let letter of string) {\n if (escape) {\n escape = false;\n } else if (letter === \"\\\\\") {\n escape = true;\n } else if (inQuote) {\n if (letter === prevQuote) {\n inQuote = false;\n }\n } else if (letter === '\"' || letter === \"'\") {\n inQuote = true;\n prevQuote = letter;\n } else if (letter === \"(\") {\n func += 1;\n } else if (letter === \")\") {\n if (func > 0) func -= 1;\n } else if (func === 0) {\n if (separators.includes(letter)) split = true;\n }\n if (split) {\n if (current !== \"\") array.push(current.trim());\n current = \"\";\n split = false;\n } else {\n current += letter;\n }\n }\n if (last || current !== \"\") array.push(current.trim());\n return array;\n }\n};\nvar list_1$1 = list$2$1;\nlist$2$1.default = list$2$1;\nlet Container$3$1 = container$1;\nlet list$1$1 = list_1$1;\nlet Rule$3$1 = class Rule extends Container$3$1 {\n constructor(defaults) {\n super(defaults);\n this.type = \"rule\";\n if (!this.nodes) this.nodes = [];\n }\n get selectors() {\n return list$1$1.comma(this.selector);\n }\n set selectors(values) {\n let match = this.selector ? this.selector.match(/,\\s*/) : null;\n let sep2 = match ? match[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n this.selector = values.join(sep2);\n }\n};\nvar rule$1 = Rule$3$1;\nRule$3$1.default = Rule$3$1;\nContainer$3$1.registerRule(Rule$3$1);\nlet Declaration$2$1 = declaration$1;\nlet tokenizer2$1 = tokenize$1;\nlet Comment$2$1 = comment$1;\nlet AtRule$2$1 = atRule$1;\nlet Root$4$1 = root$1;\nlet Rule$2$1 = rule$1;\nconst SAFE_COMMENT_NEIGHBOR$1 = {\n empty: true,\n space: true\n};\nfunction findLastWithPosition$1(tokens) {\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n let token = tokens[i2];\n let pos = token[3] || token[2];\n if (pos) return pos;\n }\n}\nlet Parser$1$1 = class Parser {\n constructor(input2) {\n this.input = input2;\n this.root = new Root$4$1();\n this.current = this.root;\n this.spaces = \"\";\n this.semicolon = false;\n this.createTokenizer();\n this.root.source = { input: input2, start: { column: 1, line: 1, offset: 0 } };\n }\n atrule(token) {\n let node2 = new AtRule$2$1();\n node2.name = token[1].slice(1);\n if (node2.name === \"\") {\n this.unnamedAtrule(node2, token);\n }\n this.init(node2, token[2]);\n let type;\n let prev;\n let shift;\n let last = false;\n let open = false;\n let params = [];\n let brackets = [];\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n type = token[0];\n if (type === \"(\" || type === \"[\") {\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (type === \"{\" && brackets.length > 0) {\n brackets.push(\"}\");\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n }\n if (brackets.length === 0) {\n if (type === \";\") {\n node2.source.end = this.getPosition(token[2]);\n node2.source.end.offset++;\n this.semicolon = true;\n break;\n } else if (type === \"{\") {\n open = true;\n break;\n } else if (type === \"}\") {\n if (params.length > 0) {\n shift = params.length - 1;\n prev = params[shift];\n while (prev && prev[0] === \"space\") {\n prev = params[--shift];\n }\n if (prev) {\n node2.source.end = this.getPosition(prev[3] || prev[2]);\n node2.source.end.offset++;\n }\n }\n this.end(token);\n break;\n } else {\n params.push(token);\n }\n } else {\n params.push(token);\n }\n if (this.tokenizer.endOfFile()) {\n last = true;\n break;\n }\n }\n node2.raws.between = this.spacesAndCommentsFromEnd(params);\n if (params.length) {\n node2.raws.afterName = this.spacesAndCommentsFromStart(params);\n this.raw(node2, \"params\", params);\n if (last) {\n token = params[params.length - 1];\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n this.spaces = node2.raws.between;\n node2.raws.between = \"\";\n }\n } else {\n node2.raws.afterName = \"\";\n node2.params = \"\";\n }\n if (open) {\n node2.nodes = [];\n this.current = node2;\n }\n }\n checkMissedSemicolon(tokens) {\n let colon = this.colon(tokens);\n if (colon === false) return;\n let founded = 0;\n let token;\n for (let j = colon - 1; j >= 0; j--) {\n token = tokens[j];\n if (token[0] !== \"space\") {\n founded += 1;\n if (founded === 2) break;\n }\n }\n throw this.input.error(\n \"Missed semicolon\",\n token[0] === \"word\" ? token[3] + 1 : token[2]\n );\n }\n colon(tokens) {\n let brackets = 0;\n let token, type, prev;\n for (let [i2, element] of tokens.entries()) {\n token = element;\n type = token[0];\n if (type === \"(\") {\n brackets += 1;\n }\n if (type === \")\") {\n brackets -= 1;\n }\n if (brackets === 0 && type === \":\") {\n if (!prev) {\n this.doubleColon(token);\n } else if (prev[0] === \"word\" && prev[1] === \"progid\") {\n continue;\n } else {\n return i2;\n }\n }\n prev = token;\n }\n return false;\n }\n comment(token) {\n let node2 = new Comment$2$1();\n this.init(node2, token[2]);\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n let text = token[1].slice(2, -2);\n if (/^\\s*$/.test(text)) {\n node2.text = \"\";\n node2.raws.left = text;\n node2.raws.right = \"\";\n } else {\n let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n node2.text = match[2];\n node2.raws.left = match[1];\n node2.raws.right = match[3];\n }\n }\n createTokenizer() {\n this.tokenizer = tokenizer2$1(this.input);\n }\n decl(tokens, customProperty) {\n let node2 = new Declaration$2$1();\n this.init(node2, tokens[0][2]);\n let last = tokens[tokens.length - 1];\n if (last[0] === \";\") {\n this.semicolon = true;\n tokens.pop();\n }\n node2.source.end = this.getPosition(\n last[3] || last[2] || findLastWithPosition$1(tokens)\n );\n node2.source.end.offset++;\n while (tokens[0][0] !== \"word\") {\n if (tokens.length === 1) this.unknownWord(tokens);\n node2.raws.before += tokens.shift()[1];\n }\n node2.source.start = this.getPosition(tokens[0][2]);\n node2.prop = \"\";\n while (tokens.length) {\n let type = tokens[0][0];\n if (type === \":\" || type === \"space\" || type === \"comment\") {\n break;\n }\n node2.prop += tokens.shift()[1];\n }\n node2.raws.between = \"\";\n let token;\n while (tokens.length) {\n token = tokens.shift();\n if (token[0] === \":\") {\n node2.raws.between += token[1];\n break;\n } else {\n if (token[0] === \"word\" && /\\w/.test(token[1])) {\n this.unknownWord([token]);\n }\n node2.raws.between += token[1];\n }\n }\n if (node2.prop[0] === \"_\" || node2.prop[0] === \"*\") {\n node2.raws.before += node2.prop[0];\n node2.prop = node2.prop.slice(1);\n }\n let firstSpaces = [];\n let next;\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n firstSpaces.push(tokens.shift());\n }\n this.precheckMissedSemicolon(tokens);\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n token = tokens[i2];\n if (token[1].toLowerCase() === \"!important\") {\n node2.important = true;\n let string = this.stringFrom(tokens, i2);\n string = this.spacesFromEnd(tokens) + string;\n if (string !== \" !important\") node2.raws.important = string;\n break;\n } else if (token[1].toLowerCase() === \"important\") {\n let cache = tokens.slice(0);\n let str = \"\";\n for (let j = i2; j > 0; j--) {\n let type = cache[j][0];\n if (str.trim().indexOf(\"!\") === 0 && type !== \"space\") {\n break;\n }\n str = cache.pop()[1] + str;\n }\n if (str.trim().indexOf(\"!\") === 0) {\n node2.important = true;\n node2.raws.important = str;\n tokens = cache;\n }\n }\n if (token[0] !== \"space\" && token[0] !== \"comment\") {\n break;\n }\n }\n let hasWord = tokens.some((i2) => i2[0] !== \"space\" && i2[0] !== \"comment\");\n if (hasWord) {\n node2.raws.between += firstSpaces.map((i2) => i2[1]).join(\"\");\n firstSpaces = [];\n }\n this.raw(node2, \"value\", firstSpaces.concat(tokens), customProperty);\n if (node2.value.includes(\":\") && !customProperty) {\n this.checkMissedSemicolon(tokens);\n }\n }\n doubleColon(token) {\n throw this.input.error(\n \"Double colon\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n emptyRule(token) {\n let node2 = new Rule$2$1();\n this.init(node2, token[2]);\n node2.selector = \"\";\n node2.raws.between = \"\";\n this.current = node2;\n }\n end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.semicolon = false;\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.spaces = \"\";\n if (this.current.parent) {\n this.current.source.end = this.getPosition(token[2]);\n this.current.source.end.offset++;\n this.current = this.current.parent;\n } else {\n this.unexpectedClose(token);\n }\n }\n endFile() {\n if (this.current.parent) this.unclosedBlock();\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.root.source.end = this.getPosition(this.tokenizer.position());\n }\n freeSemicolon(token) {\n this.spaces += token[1];\n if (this.current.nodes) {\n let prev = this.current.nodes[this.current.nodes.length - 1];\n if (prev && prev.type === \"rule\" && !prev.raws.ownSemicolon) {\n prev.raws.ownSemicolon = this.spaces;\n this.spaces = \"\";\n }\n }\n }\n // Helpers\n getPosition(offset) {\n let pos = this.input.fromOffset(offset);\n return {\n column: pos.col,\n line: pos.line,\n offset\n };\n }\n init(node2, offset) {\n this.current.push(node2);\n node2.source = {\n input: this.input,\n start: this.getPosition(offset)\n };\n node2.raws.before = this.spaces;\n this.spaces = \"\";\n if (node2.type !== \"comment\") this.semicolon = false;\n }\n other(start) {\n let end = false;\n let type = null;\n let colon = false;\n let bracket = null;\n let brackets = [];\n let customProperty = start[1].startsWith(\"--\");\n let tokens = [];\n let token = start;\n while (token) {\n type = token[0];\n tokens.push(token);\n if (type === \"(\" || type === \"[\") {\n if (!bracket) bracket = token;\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (customProperty && colon && type === \"{\") {\n if (!bracket) bracket = token;\n brackets.push(\"}\");\n } else if (brackets.length === 0) {\n if (type === \";\") {\n if (colon) {\n this.decl(tokens, customProperty);\n return;\n } else {\n break;\n }\n } else if (type === \"{\") {\n this.rule(tokens);\n return;\n } else if (type === \"}\") {\n this.tokenizer.back(tokens.pop());\n end = true;\n break;\n } else if (type === \":\") {\n colon = true;\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n if (brackets.length === 0) bracket = null;\n }\n token = this.tokenizer.nextToken();\n }\n if (this.tokenizer.endOfFile()) end = true;\n if (brackets.length > 0) this.unclosedBracket(bracket);\n if (end && colon) {\n if (!customProperty) {\n while (tokens.length) {\n token = tokens[tokens.length - 1][0];\n if (token !== \"space\" && token !== \"comment\") break;\n this.tokenizer.back(tokens.pop());\n }\n }\n this.decl(tokens, customProperty);\n } else {\n this.unknownWord(tokens);\n }\n }\n parse() {\n let token;\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n switch (token[0]) {\n case \"space\":\n this.spaces += token[1];\n break;\n case \";\":\n this.freeSemicolon(token);\n break;\n case \"}\":\n this.end(token);\n break;\n case \"comment\":\n this.comment(token);\n break;\n case \"at-word\":\n this.atrule(token);\n break;\n case \"{\":\n this.emptyRule(token);\n break;\n default:\n this.other(token);\n break;\n }\n }\n this.endFile();\n }\n precheckMissedSemicolon() {\n }\n raw(node2, prop, tokens, customProperty) {\n let token, type;\n let length = tokens.length;\n let value = \"\";\n let clean = true;\n let next, prev;\n for (let i2 = 0; i2 < length; i2 += 1) {\n token = tokens[i2];\n type = token[0];\n if (type === \"space\" && i2 === length - 1 && !customProperty) {\n clean = false;\n } else if (type === \"comment\") {\n prev = tokens[i2 - 1] ? tokens[i2 - 1][0] : \"empty\";\n next = tokens[i2 + 1] ? tokens[i2 + 1][0] : \"empty\";\n if (!SAFE_COMMENT_NEIGHBOR$1[prev] && !SAFE_COMMENT_NEIGHBOR$1[next]) {\n if (value.slice(-1) === \",\") {\n clean = false;\n } else {\n value += token[1];\n }\n } else {\n clean = false;\n }\n } else {\n value += token[1];\n }\n }\n if (!clean) {\n let raw = tokens.reduce((all, i2) => all + i2[1], \"\");\n node2.raws[prop] = { raw, value };\n }\n node2[prop] = value;\n }\n rule(tokens) {\n tokens.pop();\n let node2 = new Rule$2$1();\n this.init(node2, tokens[0][2]);\n node2.raws.between = this.spacesAndCommentsFromEnd(tokens);\n this.raw(node2, \"selector\", tokens);\n this.current = node2;\n }\n spacesAndCommentsFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\" && lastTokenType !== \"comment\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n // Errors\n spacesAndCommentsFromStart(tokens) {\n let next;\n let spaces = \"\";\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n spaces += tokens.shift()[1];\n }\n return spaces;\n }\n spacesFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n stringFrom(tokens, from) {\n let result2 = \"\";\n for (let i2 = from; i2 < tokens.length; i2++) {\n result2 += tokens[i2][1];\n }\n tokens.splice(from, tokens.length - from);\n return result2;\n }\n unclosedBlock() {\n let pos = this.current.source.start;\n throw this.input.error(\"Unclosed block\", pos.line, pos.column);\n }\n unclosedBracket(bracket) {\n throw this.input.error(\n \"Unclosed bracket\",\n { offset: bracket[2] },\n { offset: bracket[2] + 1 }\n );\n }\n unexpectedClose(token) {\n throw this.input.error(\n \"Unexpected }\",\n { offset: token[2] },\n { offset: token[2] + 1 }\n );\n }\n unknownWord(tokens) {\n throw this.input.error(\n \"Unknown word\",\n { offset: tokens[0][2] },\n { offset: tokens[0][2] + tokens[0][1].length }\n );\n }\n unnamedAtrule(node2, token) {\n throw this.input.error(\n \"At-rule without name\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n};\nvar parser$1 = Parser$1$1;\nlet Container$2$1 = container$1;\nlet Parser2$1 = parser$1;\nlet Input$2$1 = input$1;\nfunction parse$3$1(css, opts) {\n let input2 = new Input$2$1(css, opts);\n let parser2 = new Parser2$1(input2);\n try {\n parser2.parse();\n } catch (e2) {\n if (process.env.NODE_ENV !== \"production\") {\n if (e2.name === \"CssSyntaxError\" && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser\";\n } else if (/\\.sass/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser\";\n } else if (/\\.less$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser\";\n }\n }\n }\n throw e2;\n }\n return parser2.root;\n}\nvar parse_1$1 = parse$3$1;\nparse$3$1.default = parse$3$1;\nContainer$2$1.registerParse(parse$3$1);\nlet { isClean: isClean$3, my: my$3 } = symbols$1;\nlet MapGenerator$1$1 = mapGenerator$1;\nlet stringify$2$1 = stringify_1$1;\nlet Container$1$1 = container$1;\nlet Document$2$1 = document$1$1;\nlet warnOnce$1$1 = warnOnce$2$1;\nlet Result$2$1 = result$1;\nlet parse$2$1 = parse_1$1;\nlet Root$3$1 = root$1;\nconst TYPE_TO_CLASS_NAME$1 = {\n atrule: \"AtRule\",\n comment: \"Comment\",\n decl: \"Declaration\",\n document: \"Document\",\n root: \"Root\",\n rule: \"Rule\"\n};\nconst PLUGIN_PROPS$1 = {\n AtRule: true,\n AtRuleExit: true,\n Comment: true,\n CommentExit: true,\n Declaration: true,\n DeclarationExit: true,\n Document: true,\n DocumentExit: true,\n Once: true,\n OnceExit: true,\n postcssPlugin: true,\n prepare: true,\n Root: true,\n RootExit: true,\n Rule: true,\n RuleExit: true\n};\nconst NOT_VISITORS$1 = {\n Once: true,\n postcssPlugin: true,\n prepare: true\n};\nconst CHILDREN$1 = 0;\nfunction isPromise$1(obj) {\n return typeof obj === \"object\" && typeof obj.then === \"function\";\n}\nfunction getEvents$1(node2) {\n let key = false;\n let type = TYPE_TO_CLASS_NAME$1[node2.type];\n if (node2.type === \"decl\") {\n key = node2.prop.toLowerCase();\n } else if (node2.type === \"atrule\") {\n key = node2.name.toLowerCase();\n }\n if (key && node2.append) {\n return [\n type,\n type + \"-\" + key,\n CHILDREN$1,\n type + \"Exit\",\n type + \"Exit-\" + key\n ];\n } else if (key) {\n return [type, type + \"-\" + key, type + \"Exit\", type + \"Exit-\" + key];\n } else if (node2.append) {\n return [type, CHILDREN$1, type + \"Exit\"];\n } else {\n return [type, type + \"Exit\"];\n }\n}\nfunction toStack$1(node2) {\n let events;\n if (node2.type === \"document\") {\n events = [\"Document\", CHILDREN$1, \"DocumentExit\"];\n } else if (node2.type === \"root\") {\n events = [\"Root\", CHILDREN$1, \"RootExit\"];\n } else {\n events = getEvents$1(node2);\n }\n return {\n eventIndex: 0,\n events,\n iterator: 0,\n node: node2,\n visitorIndex: 0,\n visitors: []\n };\n}\nfunction cleanMarks$1(node2) {\n node2[isClean$3] = false;\n if (node2.nodes) node2.nodes.forEach((i2) => cleanMarks$1(i2));\n return node2;\n}\nlet postcss$2$1 = {};\nlet LazyResult$2$1 = class LazyResult {\n constructor(processor2, css, opts) {\n this.stringified = false;\n this.processed = false;\n let root2;\n if (typeof css === \"object\" && css !== null && (css.type === \"root\" || css.type === \"document\")) {\n root2 = cleanMarks$1(css);\n } else if (css instanceof LazyResult || css instanceof Result$2$1) {\n root2 = cleanMarks$1(css.root);\n if (css.map) {\n if (typeof opts.map === \"undefined\") opts.map = {};\n if (!opts.map.inline) opts.map.inline = false;\n opts.map.prev = css.map;\n }\n } else {\n let parser2 = parse$2$1;\n if (opts.syntax) parser2 = opts.syntax.parse;\n if (opts.parser) parser2 = opts.parser;\n if (parser2.parse) parser2 = parser2.parse;\n try {\n root2 = parser2(css, opts);\n } catch (error) {\n this.processed = true;\n this.error = error;\n }\n if (root2 && !root2[my$3]) {\n Container$1$1.rebuild(root2);\n }\n }\n this.result = new Result$2$1(processor2, root2, opts);\n this.helpers = { ...postcss$2$1, postcss: postcss$2$1, result: this.result };\n this.plugins = this.processor.plugins.map((plugin22) => {\n if (typeof plugin22 === \"object\" && plugin22.prepare) {\n return { ...plugin22, ...plugin22.prepare(this.result) };\n } else {\n return plugin22;\n }\n });\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n if (this.processed) return Promise.resolve(this.result);\n if (!this.processing) {\n this.processing = this.runAsync();\n }\n return this.processing;\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n getAsyncError() {\n throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n }\n handleError(error, node2) {\n let plugin22 = this.result.lastPlugin;\n try {\n if (node2) node2.addToError(error);\n this.error = error;\n if (error.name === \"CssSyntaxError\" && !error.plugin) {\n error.plugin = plugin22.postcssPlugin;\n error.setMessage();\n } else if (plugin22.postcssVersion) {\n if (process.env.NODE_ENV !== \"production\") {\n let pluginName = plugin22.postcssPlugin;\n let pluginVer = plugin22.postcssVersion;\n let runtimeVer = this.result.processor.version;\n let a2 = pluginVer.split(\".\");\n let b = runtimeVer.split(\".\");\n if (a2[0] !== b[0] || parseInt(a2[1]) > parseInt(b[1])) {\n console.error(\n \"Unknown error from PostCSS plugin. Your current PostCSS version is \" + runtimeVer + \", but \" + pluginName + \" uses \" + pluginVer + \". Perhaps this is the source of the error below.\"\n );\n }\n }\n }\n } catch (err) {\n if (console && console.error) console.error(err);\n }\n return error;\n }\n prepareVisitors() {\n this.listeners = {};\n let add = (plugin22, type, cb) => {\n if (!this.listeners[type]) this.listeners[type] = [];\n this.listeners[type].push([plugin22, cb]);\n };\n for (let plugin22 of this.plugins) {\n if (typeof plugin22 === \"object\") {\n for (let event in plugin22) {\n if (!PLUGIN_PROPS$1[event] && /^[A-Z]/.test(event)) {\n throw new Error(\n `Unknown event ${event} in ${plugin22.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`\n );\n }\n if (!NOT_VISITORS$1[event]) {\n if (typeof plugin22[event] === \"object\") {\n for (let filter in plugin22[event]) {\n if (filter === \"*\") {\n add(plugin22, event, plugin22[event][filter]);\n } else {\n add(\n plugin22,\n event + \"-\" + filter.toLowerCase(),\n plugin22[event][filter]\n );\n }\n }\n } else if (typeof plugin22[event] === \"function\") {\n add(plugin22, event, plugin22[event]);\n }\n }\n }\n }\n }\n this.hasListener = Object.keys(this.listeners).length > 0;\n }\n async runAsync() {\n this.plugin = 0;\n for (let i2 = 0; i2 < this.plugins.length; i2++) {\n let plugin22 = this.plugins[i2];\n let promise = this.runOnRoot(plugin22);\n if (isPromise$1(promise)) {\n try {\n await promise;\n } catch (error) {\n throw this.handleError(error);\n }\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean$3]) {\n root2[isClean$3] = true;\n let stack = [toStack$1(root2)];\n while (stack.length > 0) {\n let promise = this.visitTick(stack);\n if (isPromise$1(promise)) {\n try {\n await promise;\n } catch (e2) {\n let node2 = stack[stack.length - 1].node;\n throw this.handleError(e2, node2);\n }\n }\n }\n }\n if (this.listeners.OnceExit) {\n for (let [plugin22, visitor] of this.listeners.OnceExit) {\n this.result.lastPlugin = plugin22;\n try {\n if (root2.type === \"document\") {\n let roots = root2.nodes.map(\n (subRoot) => visitor(subRoot, this.helpers)\n );\n await Promise.all(roots);\n } else {\n await visitor(root2, this.helpers);\n }\n } catch (e2) {\n throw this.handleError(e2);\n }\n }\n }\n }\n this.processed = true;\n return this.stringify();\n }\n runOnRoot(plugin22) {\n this.result.lastPlugin = plugin22;\n try {\n if (typeof plugin22 === \"object\" && plugin22.Once) {\n if (this.result.root.type === \"document\") {\n let roots = this.result.root.nodes.map(\n (root2) => plugin22.Once(root2, this.helpers)\n );\n if (isPromise$1(roots[0])) {\n return Promise.all(roots);\n }\n return roots;\n }\n return plugin22.Once(this.result.root, this.helpers);\n } else if (typeof plugin22 === \"function\") {\n return plugin22(this.result.root, this.result);\n }\n } catch (error) {\n throw this.handleError(error);\n }\n }\n stringify() {\n if (this.error) throw this.error;\n if (this.stringified) return this.result;\n this.stringified = true;\n this.sync();\n let opts = this.result.opts;\n let str = stringify$2$1;\n if (opts.syntax) str = opts.syntax.stringify;\n if (opts.stringifier) str = opts.stringifier;\n if (str.stringify) str = str.stringify;\n let map = new MapGenerator$1$1(str, this.result.root, this.result.opts);\n let data = map.generate();\n this.result.css = data[0];\n this.result.map = data[1];\n return this.result;\n }\n sync() {\n if (this.error) throw this.error;\n if (this.processed) return this.result;\n this.processed = true;\n if (this.processing) {\n throw this.getAsyncError();\n }\n for (let plugin22 of this.plugins) {\n let promise = this.runOnRoot(plugin22);\n if (isPromise$1(promise)) {\n throw this.getAsyncError();\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean$3]) {\n root2[isClean$3] = true;\n this.walkSync(root2);\n }\n if (this.listeners.OnceExit) {\n if (root2.type === \"document\") {\n for (let subRoot of root2.nodes) {\n this.visitSync(this.listeners.OnceExit, subRoot);\n }\n } else {\n this.visitSync(this.listeners.OnceExit, root2);\n }\n }\n }\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this.opts)) {\n warnOnce$1$1(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this.css;\n }\n visitSync(visitors, node2) {\n for (let [plugin22, visitor] of visitors) {\n this.result.lastPlugin = plugin22;\n let promise;\n try {\n promise = visitor(node2, this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2.proxyOf);\n }\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n return true;\n }\n if (isPromise$1(promise)) {\n throw this.getAsyncError();\n }\n }\n }\n visitTick(stack) {\n let visit2 = stack[stack.length - 1];\n let { node: node2, visitors } = visit2;\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n stack.pop();\n return;\n }\n if (visitors.length > 0 && visit2.visitorIndex < visitors.length) {\n let [plugin22, visitor] = visitors[visit2.visitorIndex];\n visit2.visitorIndex += 1;\n if (visit2.visitorIndex === visitors.length) {\n visit2.visitors = [];\n visit2.visitorIndex = 0;\n }\n this.result.lastPlugin = plugin22;\n try {\n return visitor(node2.toProxy(), this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2);\n }\n }\n if (visit2.iterator !== 0) {\n let iterator = visit2.iterator;\n let child;\n while (child = node2.nodes[node2.indexes[iterator]]) {\n node2.indexes[iterator] += 1;\n if (!child[isClean$3]) {\n child[isClean$3] = true;\n stack.push(toStack$1(child));\n return;\n }\n }\n visit2.iterator = 0;\n delete node2.indexes[iterator];\n }\n let events = visit2.events;\n while (visit2.eventIndex < events.length) {\n let event = events[visit2.eventIndex];\n visit2.eventIndex += 1;\n if (event === CHILDREN$1) {\n if (node2.nodes && node2.nodes.length) {\n node2[isClean$3] = true;\n visit2.iterator = node2.getIterator();\n }\n return;\n } else if (this.listeners[event]) {\n visit2.visitors = this.listeners[event];\n return;\n }\n }\n stack.pop();\n }\n walkSync(node2) {\n node2[isClean$3] = true;\n let events = getEvents$1(node2);\n for (let event of events) {\n if (event === CHILDREN$1) {\n if (node2.nodes) {\n node2.each((child) => {\n if (!child[isClean$3]) this.walkSync(child);\n });\n }\n } else {\n let visitors = this.listeners[event];\n if (visitors) {\n if (this.visitSync(visitors, node2.toProxy())) return;\n }\n }\n }\n }\n warnings() {\n return this.sync().warnings();\n }\n get content() {\n return this.stringify().content;\n }\n get css() {\n return this.stringify().css;\n }\n get map() {\n return this.stringify().map;\n }\n get messages() {\n return this.sync().messages;\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n return this.sync().root;\n }\n get [Symbol.toStringTag]() {\n return \"LazyResult\";\n }\n};\nLazyResult$2$1.registerPostcss = (dependant) => {\n postcss$2$1 = dependant;\n};\nvar lazyResult$1 = LazyResult$2$1;\nLazyResult$2$1.default = LazyResult$2$1;\nRoot$3$1.registerLazyResult(LazyResult$2$1);\nDocument$2$1.registerLazyResult(LazyResult$2$1);\nlet MapGenerator2$1 = mapGenerator$1;\nlet stringify$1$1 = stringify_1$1;\nlet warnOnce2$1 = warnOnce$2$1;\nlet parse$1$1 = parse_1$1;\nconst Result$1$1 = result$1;\nlet NoWorkResult$1$1 = class NoWorkResult {\n constructor(processor2, css, opts) {\n css = css.toString();\n this.stringified = false;\n this._processor = processor2;\n this._css = css;\n this._opts = opts;\n this._map = void 0;\n let root2;\n let str = stringify$1$1;\n this.result = new Result$1$1(this._processor, root2, this._opts);\n this.result.css = css;\n let self = this;\n Object.defineProperty(this.result, \"root\", {\n get() {\n return self.root;\n }\n });\n let map = new MapGenerator2$1(str, root2, this._opts, css);\n if (map.isMap()) {\n let [generatedCSS, generatedMap] = map.generate();\n if (generatedCSS) {\n this.result.css = generatedCSS;\n }\n if (generatedMap) {\n this.result.map = generatedMap;\n }\n } else {\n map.clearAnnotation();\n this.result.css = map.css;\n }\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n return Promise.resolve(this.result);\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n sync() {\n if (this.error) throw this.error;\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this._opts)) {\n warnOnce2$1(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this._css;\n }\n warnings() {\n return [];\n }\n get content() {\n return this.result.css;\n }\n get css() {\n return this.result.css;\n }\n get map() {\n return this.result.map;\n }\n get messages() {\n return [];\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n if (this._root) {\n return this._root;\n }\n let root2;\n let parser2 = parse$1$1;\n try {\n root2 = parser2(this._css, this._opts);\n } catch (error) {\n this.error = error;\n }\n if (this.error) {\n throw this.error;\n } else {\n this._root = root2;\n return root2;\n }\n }\n get [Symbol.toStringTag]() {\n return \"NoWorkResult\";\n }\n};\nvar noWorkResult$1 = NoWorkResult$1$1;\nNoWorkResult$1$1.default = NoWorkResult$1$1;\nlet NoWorkResult2$1 = noWorkResult$1;\nlet LazyResult$1$1 = lazyResult$1;\nlet Document$1$1 = document$1$1;\nlet Root$2$1 = root$1;\nlet Processor$1$1 = class Processor {\n constructor(plugins = []) {\n this.version = \"8.4.38\";\n this.plugins = this.normalize(plugins);\n }\n normalize(plugins) {\n let normalized = [];\n for (let i2 of plugins) {\n if (i2.postcss === true) {\n i2 = i2();\n } else if (i2.postcss) {\n i2 = i2.postcss;\n }\n if (typeof i2 === \"object\" && Array.isArray(i2.plugins)) {\n normalized = normalized.concat(i2.plugins);\n } else if (typeof i2 === \"object\" && i2.postcssPlugin) {\n normalized.push(i2);\n } else if (typeof i2 === \"function\") {\n normalized.push(i2);\n } else if (typeof i2 === \"object\" && (i2.parse || i2.stringify)) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error(\n \"PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.\"\n );\n }\n } else {\n throw new Error(i2 + \" is not a PostCSS plugin\");\n }\n }\n return normalized;\n }\n process(css, opts = {}) {\n if (!this.plugins.length && !opts.parser && !opts.stringifier && !opts.syntax) {\n return new NoWorkResult2$1(this, css, opts);\n } else {\n return new LazyResult$1$1(this, css, opts);\n }\n }\n use(plugin22) {\n this.plugins = this.plugins.concat(this.normalize([plugin22]));\n return this;\n }\n};\nvar processor$1 = Processor$1$1;\nProcessor$1$1.default = Processor$1$1;\nRoot$2$1.registerProcessor(Processor$1$1);\nDocument$1$1.registerProcessor(Processor$1$1);\nlet Declaration$1$1 = declaration$1;\nlet PreviousMap2$1 = previousMap$1;\nlet Comment$1$1 = comment$1;\nlet AtRule$1$1 = atRule$1;\nlet Input$1$1 = input$1;\nlet Root$1$1 = root$1;\nlet Rule$1$1 = rule$1;\nfunction fromJSON$1$1(json, inputs) {\n if (Array.isArray(json)) return json.map((n2) => fromJSON$1$1(n2));\n let { inputs: ownInputs, ...defaults } = json;\n if (ownInputs) {\n inputs = [];\n for (let input2 of ownInputs) {\n let inputHydrated = { ...input2, __proto__: Input$1$1.prototype };\n if (inputHydrated.map) {\n inputHydrated.map = {\n ...inputHydrated.map,\n __proto__: PreviousMap2$1.prototype\n };\n }\n inputs.push(inputHydrated);\n }\n }\n if (defaults.nodes) {\n defaults.nodes = json.nodes.map((n2) => fromJSON$1$1(n2, inputs));\n }\n if (defaults.source) {\n let { inputId, ...source } = defaults.source;\n defaults.source = source;\n if (inputId != null) {\n defaults.source.input = inputs[inputId];\n }\n }\n if (defaults.type === \"root\") {\n return new Root$1$1(defaults);\n } else if (defaults.type === \"decl\") {\n return new Declaration$1$1(defaults);\n } else if (defaults.type === \"rule\") {\n return new Rule$1$1(defaults);\n } else if (defaults.type === \"comment\") {\n return new Comment$1$1(defaults);\n } else if (defaults.type === \"atrule\") {\n return new AtRule$1$1(defaults);\n } else {\n throw new Error(\"Unknown node type: \" + json.type);\n }\n}\nvar fromJSON_1$1 = fromJSON$1$1;\nfromJSON$1$1.default = fromJSON$1$1;\nlet CssSyntaxError2$1 = cssSyntaxError$1;\nlet Declaration2$1 = declaration$1;\nlet LazyResult2$1 = lazyResult$1;\nlet Container2$1 = container$1;\nlet Processor2$1 = processor$1;\nlet stringify$5 = stringify_1$1;\nlet fromJSON$2 = fromJSON_1$1;\nlet Document22 = document$1$1;\nlet Warning2$1 = warning$1;\nlet Comment2$1 = comment$1;\nlet AtRule2$1 = atRule$1;\nlet Result2$1 = result$1;\nlet Input2$1 = input$1;\nlet parse$5 = parse_1$1;\nlet list$3 = list_1$1;\nlet Rule2$1 = rule$1;\nlet Root2$1 = root$1;\nlet Node2$1 = node$1;\nfunction postcss$3(...plugins) {\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0];\n }\n return new Processor2$1(plugins);\n}\npostcss$3.plugin = function plugin(name, initializer) {\n let warningPrinted = false;\n function creator(...args) {\n if (console && console.warn && !warningPrinted) {\n warningPrinted = true;\n console.warn(\n name + \": postcss.plugin was deprecated. Migration guide:\\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration\"\n );\n if (process.env.LANG && process.env.LANG.startsWith(\"cn\")) {\n console.warn(\n name + \": 里面 postcss.plugin 被弃用. 迁移指南:\\nhttps://www.w3ctech.com/topic/2226\"\n );\n }\n }\n let transformer = initializer(...args);\n transformer.postcssPlugin = name;\n transformer.postcssVersion = new Processor2$1().version;\n return transformer;\n }\n let cache;\n Object.defineProperty(creator, \"postcss\", {\n get() {\n if (!cache) cache = creator();\n return cache;\n }\n });\n creator.process = function(css, processOpts, pluginOpts) {\n return postcss$3([creator(pluginOpts)]).process(css, processOpts);\n };\n return creator;\n};\npostcss$3.stringify = stringify$5;\npostcss$3.parse = parse$5;\npostcss$3.fromJSON = fromJSON$2;\npostcss$3.list = list$3;\npostcss$3.comment = (defaults) => new Comment2$1(defaults);\npostcss$3.atRule = (defaults) => new AtRule2$1(defaults);\npostcss$3.decl = (defaults) => new Declaration2$1(defaults);\npostcss$3.rule = (defaults) => new Rule2$1(defaults);\npostcss$3.root = (defaults) => new Root2$1(defaults);\npostcss$3.document = (defaults) => new Document22(defaults);\npostcss$3.CssSyntaxError = CssSyntaxError2$1;\npostcss$3.Declaration = Declaration2$1;\npostcss$3.Container = Container2$1;\npostcss$3.Processor = Processor2$1;\npostcss$3.Document = Document22;\npostcss$3.Comment = Comment2$1;\npostcss$3.Warning = Warning2$1;\npostcss$3.AtRule = AtRule2$1;\npostcss$3.Result = Result2$1;\npostcss$3.Input = Input2$1;\npostcss$3.Rule = Rule2$1;\npostcss$3.Root = Root2$1;\npostcss$3.Node = Node2$1;\nLazyResult2$1.registerPostcss(postcss$3);\nvar postcss_1$1 = postcss$3;\npostcss$3.default = postcss$3;\nconst postcss$1$1 = /* @__PURE__ */ getDefaultExportFromCjs$1(postcss_1$1);\npostcss$1$1.stringify;\npostcss$1$1.fromJSON;\npostcss$1$1.plugin;\npostcss$1$1.parse;\npostcss$1$1.list;\npostcss$1$1.document;\npostcss$1$1.comment;\npostcss$1$1.atRule;\npostcss$1$1.rule;\npostcss$1$1.decl;\npostcss$1$1.root;\npostcss$1$1.CssSyntaxError;\npostcss$1$1.Declaration;\npostcss$1$1.Container;\npostcss$1$1.Processor;\npostcss$1$1.Document;\npostcss$1$1.Comment;\npostcss$1$1.Warning;\npostcss$1$1.AtRule;\npostcss$1$1.Result;\npostcss$1$1.Input;\npostcss$1$1.Rule;\npostcss$1$1.Root;\npostcss$1$1.Node;\nvar __defProp2 = Object.defineProperty;\nvar __defNormalProp2 = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField2 = (obj, key, value) => __defNormalProp2(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nfunction getDefaultExportFromCjs(x2) {\n return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, \"default\") ? x2[\"default\"] : x2;\n}\nfunction getAugmentedNamespace(n2) {\n if (n2.__esModule) return n2;\n var f2 = n2.default;\n if (typeof f2 == \"function\") {\n var a2 = function a22() {\n if (this instanceof a22) {\n return Reflect.construct(f2, arguments, this.constructor);\n }\n return f2.apply(this, arguments);\n };\n a2.prototype = f2.prototype;\n } else a2 = {};\n Object.defineProperty(a2, \"__esModule\", { value: true });\n Object.keys(n2).forEach(function(k) {\n var d = Object.getOwnPropertyDescriptor(n2, k);\n Object.defineProperty(a2, k, d.get ? d : {\n enumerable: true,\n get: function() {\n return n2[k];\n }\n });\n });\n return a2;\n}\nvar picocolors_browser = { exports: {} };\nvar x = String;\nvar create = function() {\n return { isColorSupported: false, reset: x, bold: x, dim: x, italic: x, underline: x, inverse: x, hidden: x, strikethrough: x, black: x, red: x, green: x, yellow: x, blue: x, magenta: x, cyan: x, white: x, gray: x, bgBlack: x, bgRed: x, bgGreen: x, bgYellow: x, bgBlue: x, bgMagenta: x, bgCyan: x, bgWhite: x };\n};\npicocolors_browser.exports = create();\npicocolors_browser.exports.createColors = create;\nvar picocolors_browserExports = picocolors_browser.exports;\nconst __viteBrowserExternal = {};\nconst __viteBrowserExternal$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: __viteBrowserExternal\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst require$$2 = /* @__PURE__ */ getAugmentedNamespace(__viteBrowserExternal$1);\nlet pico = picocolors_browserExports;\nlet terminalHighlight$1 = require$$2;\nlet CssSyntaxError$3 = class CssSyntaxError2 extends Error {\n constructor(message, line, column, source, file, plugin22) {\n super(message);\n this.name = \"CssSyntaxError\";\n this.reason = message;\n if (file) {\n this.file = file;\n }\n if (source) {\n this.source = source;\n }\n if (plugin22) {\n this.plugin = plugin22;\n }\n if (typeof line !== \"undefined\" && typeof column !== \"undefined\") {\n if (typeof line === \"number\") {\n this.line = line;\n this.column = column;\n } else {\n this.line = line.line;\n this.column = line.column;\n this.endLine = column.line;\n this.endColumn = column.column;\n }\n }\n this.setMessage();\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, CssSyntaxError2);\n }\n }\n setMessage() {\n this.message = this.plugin ? this.plugin + \": \" : \"\";\n this.message += this.file ? this.file : \"\";\n if (typeof this.line !== \"undefined\") {\n this.message += \":\" + this.line + \":\" + this.column;\n }\n this.message += \": \" + this.reason;\n }\n showSourceCode(color) {\n if (!this.source) return \"\";\n let css = this.source;\n if (color == null) color = pico.isColorSupported;\n if (terminalHighlight$1) {\n if (color) css = terminalHighlight$1(css);\n }\n let lines = css.split(/\\r?\\n/);\n let start = Math.max(this.line - 3, 0);\n let end = Math.min(this.line + 2, lines.length);\n let maxWidth = String(end).length;\n let mark, aside;\n if (color) {\n let { bold, gray, red } = pico.createColors(true);\n mark = (text) => bold(red(text));\n aside = (text) => gray(text);\n } else {\n mark = aside = (str) => str;\n }\n return lines.slice(start, end).map((line, index2) => {\n let number = start + 1 + index2;\n let gutter = \" \" + (\" \" + number).slice(-maxWidth) + \" | \";\n if (number === this.line) {\n let spacing = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, this.column - 1).replace(/[^\\t]/g, \" \");\n return mark(\">\") + aside(gutter) + line + \"\\n \" + spacing + mark(\"^\");\n }\n return \" \" + aside(gutter) + line;\n }).join(\"\\n\");\n }\n toString() {\n let code = this.showSourceCode();\n if (code) {\n code = \"\\n\\n\" + code + \"\\n\";\n }\n return this.name + \": \" + this.message + code;\n }\n};\nvar cssSyntaxError = CssSyntaxError$3;\nCssSyntaxError$3.default = CssSyntaxError$3;\nvar symbols = {};\nsymbols.isClean = Symbol(\"isClean\");\nsymbols.my = Symbol(\"my\");\nconst DEFAULT_RAW = {\n after: \"\\n\",\n beforeClose: \"\\n\",\n beforeComment: \"\\n\",\n beforeDecl: \"\\n\",\n beforeOpen: \" \",\n beforeRule: \"\\n\",\n colon: \": \",\n commentLeft: \" \",\n commentRight: \" \",\n emptyBody: \"\",\n indent: \" \",\n semicolon: false\n};\nfunction capitalize(str) {\n return str[0].toUpperCase() + str.slice(1);\n}\nlet Stringifier$2 = class Stringifier2 {\n constructor(builder) {\n this.builder = builder;\n }\n atrule(node2, semicolon) {\n let name = \"@\" + node2.name;\n let params = node2.params ? this.rawValue(node2, \"params\") : \"\";\n if (typeof node2.raws.afterName !== \"undefined\") {\n name += node2.raws.afterName;\n } else if (params) {\n name += \" \";\n }\n if (node2.nodes) {\n this.block(node2, name + params);\n } else {\n let end = (node2.raws.between || \"\") + (semicolon ? \";\" : \"\");\n this.builder(name + params + end, node2);\n }\n }\n beforeAfter(node2, detect) {\n let value;\n if (node2.type === \"decl\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (node2.type === \"comment\") {\n value = this.raw(node2, null, \"beforeComment\");\n } else if (detect === \"before\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else {\n value = this.raw(node2, null, \"beforeClose\");\n }\n let buf = node2.parent;\n let depth = 0;\n while (buf && buf.type !== \"root\") {\n depth += 1;\n buf = buf.parent;\n }\n if (value.includes(\"\\n\")) {\n let indent = this.raw(node2, null, \"indent\");\n if (indent.length) {\n for (let step = 0; step < depth; step++) value += indent;\n }\n }\n return value;\n }\n block(node2, start) {\n let between = this.raw(node2, \"between\", \"beforeOpen\");\n this.builder(start + between + \"{\", node2, \"start\");\n let after;\n if (node2.nodes && node2.nodes.length) {\n this.body(node2);\n after = this.raw(node2, \"after\");\n } else {\n after = this.raw(node2, \"after\", \"emptyBody\");\n }\n if (after) this.builder(after);\n this.builder(\"}\", node2, \"end\");\n }\n body(node2) {\n let last = node2.nodes.length - 1;\n while (last > 0) {\n if (node2.nodes[last].type !== \"comment\") break;\n last -= 1;\n }\n let semicolon = this.raw(node2, \"semicolon\");\n for (let i2 = 0; i2 < node2.nodes.length; i2++) {\n let child = node2.nodes[i2];\n let before = this.raw(child, \"before\");\n if (before) this.builder(before);\n this.stringify(child, last !== i2 || semicolon);\n }\n }\n comment(node2) {\n let left = this.raw(node2, \"left\", \"commentLeft\");\n let right = this.raw(node2, \"right\", \"commentRight\");\n this.builder(\"/*\" + left + node2.text + right + \"*/\", node2);\n }\n decl(node2, semicolon) {\n let between = this.raw(node2, \"between\", \"colon\");\n let string = node2.prop + between + this.rawValue(node2, \"value\");\n if (node2.important) {\n string += node2.raws.important || \" !important\";\n }\n if (semicolon) string += \";\";\n this.builder(string, node2);\n }\n document(node2) {\n this.body(node2);\n }\n raw(node2, own, detect) {\n let value;\n if (!detect) detect = own;\n if (own) {\n value = node2.raws[own];\n if (typeof value !== \"undefined\") return value;\n }\n let parent = node2.parent;\n if (detect === \"before\") {\n if (!parent || parent.type === \"root\" && parent.first === node2) {\n return \"\";\n }\n if (parent && parent.type === \"document\") {\n return \"\";\n }\n }\n if (!parent) return DEFAULT_RAW[detect];\n let root2 = node2.root();\n if (!root2.rawCache) root2.rawCache = {};\n if (typeof root2.rawCache[detect] !== \"undefined\") {\n return root2.rawCache[detect];\n }\n if (detect === \"before\" || detect === \"after\") {\n return this.beforeAfter(node2, detect);\n } else {\n let method = \"raw\" + capitalize(detect);\n if (this[method]) {\n value = this[method](root2, node2);\n } else {\n root2.walk((i2) => {\n value = i2.raws[own];\n if (typeof value !== \"undefined\") return false;\n });\n }\n }\n if (typeof value === \"undefined\") value = DEFAULT_RAW[detect];\n root2.rawCache[detect] = value;\n return value;\n }\n rawBeforeClose(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length > 0) {\n if (typeof i2.raws.after !== \"undefined\") {\n value = i2.raws.after;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawBeforeComment(root2, node2) {\n let value;\n root2.walkComments((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeDecl(root2, node2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeOpen(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.type !== \"decl\") {\n value = i2.raws.between;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawBeforeRule(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && (i2.parent !== root2 || root2.first !== i2)) {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawColon(root2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.between !== \"undefined\") {\n value = i2.raws.between.replace(/[^\\s:]/g, \"\");\n return false;\n }\n });\n return value;\n }\n rawEmptyBody(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length === 0) {\n value = i2.raws.after;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawIndent(root2) {\n if (root2.raws.indent) return root2.raws.indent;\n let value;\n root2.walk((i2) => {\n let p = i2.parent;\n if (p && p !== root2 && p.parent && p.parent === root2) {\n if (typeof i2.raws.before !== \"undefined\") {\n let parts = i2.raws.before.split(\"\\n\");\n value = parts[parts.length - 1];\n value = value.replace(/\\S/g, \"\");\n return false;\n }\n }\n });\n return value;\n }\n rawSemicolon(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length && i2.last.type === \"decl\") {\n value = i2.raws.semicolon;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawValue(node2, prop) {\n let value = node2[prop];\n let raw = node2.raws[prop];\n if (raw && raw.value === value) {\n return raw.raw;\n }\n return value;\n }\n root(node2) {\n this.body(node2);\n if (node2.raws.after) this.builder(node2.raws.after);\n }\n rule(node2) {\n this.block(node2, this.rawValue(node2, \"selector\"));\n if (node2.raws.ownSemicolon) {\n this.builder(node2.raws.ownSemicolon, node2, \"end\");\n }\n }\n stringify(node2, semicolon) {\n if (!this[node2.type]) {\n throw new Error(\n \"Unknown AST node type \" + node2.type + \". Maybe you need to change PostCSS stringifier.\"\n );\n }\n this[node2.type](node2, semicolon);\n }\n};\nvar stringifier = Stringifier$2;\nStringifier$2.default = Stringifier$2;\nlet Stringifier$1 = stringifier;\nfunction stringify$4(node2, builder) {\n let str = new Stringifier$1(builder);\n str.stringify(node2);\n}\nvar stringify_1 = stringify$4;\nstringify$4.default = stringify$4;\nlet { isClean: isClean$2, my: my$2 } = symbols;\nlet CssSyntaxError$2 = cssSyntaxError;\nlet Stringifier22 = stringifier;\nlet stringify$3 = stringify_1;\nfunction cloneNode(obj, parent) {\n let cloned = new obj.constructor();\n for (let i2 in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, i2)) {\n continue;\n }\n if (i2 === \"proxyCache\") continue;\n let value = obj[i2];\n let type = typeof value;\n if (i2 === \"parent\" && type === \"object\") {\n if (parent) cloned[i2] = parent;\n } else if (i2 === \"source\") {\n cloned[i2] = value;\n } else if (Array.isArray(value)) {\n cloned[i2] = value.map((j) => cloneNode(j, cloned));\n } else {\n if (type === \"object\" && value !== null) value = cloneNode(value);\n cloned[i2] = value;\n }\n }\n return cloned;\n}\nlet Node$4 = class Node3 {\n constructor(defaults = {}) {\n this.raws = {};\n this[isClean$2] = false;\n this[my$2] = true;\n for (let name in defaults) {\n if (name === \"nodes\") {\n this.nodes = [];\n for (let node2 of defaults[name]) {\n if (typeof node2.clone === \"function\") {\n this.append(node2.clone());\n } else {\n this.append(node2);\n }\n }\n } else {\n this[name] = defaults[name];\n }\n }\n }\n addToError(error) {\n error.postcssNode = this;\n if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n let s2 = this.source;\n error.stack = error.stack.replace(\n /\\n\\s{4}at /,\n `$&${s2.input.from}:${s2.start.line}:${s2.start.column}$&`\n );\n }\n return error;\n }\n after(add) {\n this.parent.insertAfter(this, add);\n return this;\n }\n assign(overrides = {}) {\n for (let name in overrides) {\n this[name] = overrides[name];\n }\n return this;\n }\n before(add) {\n this.parent.insertBefore(this, add);\n return this;\n }\n cleanRaws(keepBetween) {\n delete this.raws.before;\n delete this.raws.after;\n if (!keepBetween) delete this.raws.between;\n }\n clone(overrides = {}) {\n let cloned = cloneNode(this);\n for (let name in overrides) {\n cloned[name] = overrides[name];\n }\n return cloned;\n }\n cloneAfter(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertAfter(this, cloned);\n return cloned;\n }\n cloneBefore(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertBefore(this, cloned);\n return cloned;\n }\n error(message, opts = {}) {\n if (this.source) {\n let { end, start } = this.rangeBy(opts);\n return this.source.input.error(\n message,\n { column: start.column, line: start.line },\n { column: end.column, line: end.line },\n opts\n );\n }\n return new CssSyntaxError$2(message);\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"prop\" || prop === \"value\" || prop === \"name\" || prop === \"params\" || prop === \"important\" || /* c8 ignore next */\n prop === \"text\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n markDirty() {\n if (this[isClean$2]) {\n this[isClean$2] = false;\n let next = this;\n while (next = next.parent) {\n next[isClean$2] = false;\n }\n }\n }\n next() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 + 1];\n }\n positionBy(opts, stringRepresentation) {\n let pos = this.source.start;\n if (opts.index) {\n pos = this.positionInside(opts.index, stringRepresentation);\n } else if (opts.word) {\n stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) pos = this.positionInside(index2, stringRepresentation);\n }\n return pos;\n }\n positionInside(index2, stringRepresentation) {\n let string = stringRepresentation || this.toString();\n let column = this.source.start.column;\n let line = this.source.start.line;\n for (let i2 = 0; i2 < index2; i2++) {\n if (string[i2] === \"\\n\") {\n column = 1;\n line += 1;\n } else {\n column += 1;\n }\n }\n return { column, line };\n }\n prev() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 - 1];\n }\n rangeBy(opts) {\n let start = {\n column: this.source.start.column,\n line: this.source.start.line\n };\n let end = this.source.end ? {\n column: this.source.end.column + 1,\n line: this.source.end.line\n } : {\n column: start.column + 1,\n line: start.line\n };\n if (opts.word) {\n let stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) {\n start = this.positionInside(index2, stringRepresentation);\n end = this.positionInside(index2 + opts.word.length, stringRepresentation);\n }\n } else {\n if (opts.start) {\n start = {\n column: opts.start.column,\n line: opts.start.line\n };\n } else if (opts.index) {\n start = this.positionInside(opts.index);\n }\n if (opts.end) {\n end = {\n column: opts.end.column,\n line: opts.end.line\n };\n } else if (typeof opts.endIndex === \"number\") {\n end = this.positionInside(opts.endIndex);\n } else if (opts.index) {\n end = this.positionInside(opts.index + 1);\n }\n }\n if (end.line < start.line || end.line === start.line && end.column <= start.column) {\n end = { column: start.column + 1, line: start.line };\n }\n return { end, start };\n }\n raw(prop, defaultType) {\n let str = new Stringifier22();\n return str.raw(this, prop, defaultType);\n }\n remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n this.parent = void 0;\n return this;\n }\n replaceWith(...nodes) {\n if (this.parent) {\n let bookmark = this;\n let foundSelf = false;\n for (let node2 of nodes) {\n if (node2 === this) {\n foundSelf = true;\n } else if (foundSelf) {\n this.parent.insertAfter(bookmark, node2);\n bookmark = node2;\n } else {\n this.parent.insertBefore(bookmark, node2);\n }\n }\n if (!foundSelf) {\n this.remove();\n }\n }\n return this;\n }\n root() {\n let result2 = this;\n while (result2.parent && result2.parent.type !== \"document\") {\n result2 = result2.parent;\n }\n return result2;\n }\n toJSON(_, inputs) {\n let fixed = {};\n let emitInputs = inputs == null;\n inputs = inputs || /* @__PURE__ */ new Map();\n let inputsNextIndex = 0;\n for (let name in this) {\n if (!Object.prototype.hasOwnProperty.call(this, name)) {\n continue;\n }\n if (name === \"parent\" || name === \"proxyCache\") continue;\n let value = this[name];\n if (Array.isArray(value)) {\n fixed[name] = value.map((i2) => {\n if (typeof i2 === \"object\" && i2.toJSON) {\n return i2.toJSON(null, inputs);\n } else {\n return i2;\n }\n });\n } else if (typeof value === \"object\" && value.toJSON) {\n fixed[name] = value.toJSON(null, inputs);\n } else if (name === \"source\") {\n let inputId = inputs.get(value.input);\n if (inputId == null) {\n inputId = inputsNextIndex;\n inputs.set(value.input, inputsNextIndex);\n inputsNextIndex++;\n }\n fixed[name] = {\n end: value.end,\n inputId,\n start: value.start\n };\n } else {\n fixed[name] = value;\n }\n }\n if (emitInputs) {\n fixed.inputs = [...inputs.keys()].map((input2) => input2.toJSON());\n }\n return fixed;\n }\n toProxy() {\n if (!this.proxyCache) {\n this.proxyCache = new Proxy(this, this.getProxyProcessor());\n }\n return this.proxyCache;\n }\n toString(stringifier2 = stringify$3) {\n if (stringifier2.stringify) stringifier2 = stringifier2.stringify;\n let result2 = \"\";\n stringifier2(this, (i2) => {\n result2 += i2;\n });\n return result2;\n }\n warn(result2, text, opts) {\n let data = { node: this };\n for (let i2 in opts) data[i2] = opts[i2];\n return result2.warn(text, data);\n }\n get proxyOf() {\n return this;\n }\n};\nvar node = Node$4;\nNode$4.default = Node$4;\nlet Node$3 = node;\nlet Declaration$4 = class Declaration2 extends Node$3 {\n constructor(defaults) {\n if (defaults && typeof defaults.value !== \"undefined\" && typeof defaults.value !== \"string\") {\n defaults = { ...defaults, value: String(defaults.value) };\n }\n super(defaults);\n this.type = \"decl\";\n }\n get variable() {\n return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n }\n};\nvar declaration = Declaration$4;\nDeclaration$4.default = Declaration$4;\nlet urlAlphabet = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\nlet customAlphabet = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = \"\";\n let i2 = size;\n while (i2--) {\n id += alphabet[Math.random() * alphabet.length | 0];\n }\n return id;\n };\n};\nlet nanoid$1 = (size = 21) => {\n let id = \"\";\n let i2 = size;\n while (i2--) {\n id += urlAlphabet[Math.random() * 64 | 0];\n }\n return id;\n};\nvar nonSecure = { nanoid: nanoid$1, customAlphabet };\nlet { SourceMapConsumer: SourceMapConsumer$2, SourceMapGenerator: SourceMapGenerator$2 } = require$$2;\nlet { existsSync, readFileSync } = require$$2;\nlet { dirname: dirname$1, join } = require$$2;\nfunction fromBase64(str) {\n if (Buffer) {\n return Buffer.from(str, \"base64\").toString();\n } else {\n return window.atob(str);\n }\n}\nlet PreviousMap$2 = class PreviousMap2 {\n constructor(css, opts) {\n if (opts.map === false) return;\n this.loadAnnotation(css);\n this.inline = this.startWith(this.annotation, \"data:\");\n let prev = opts.map ? opts.map.prev : void 0;\n let text = this.loadMap(opts.from, prev);\n if (!this.mapFile && opts.from) {\n this.mapFile = opts.from;\n }\n if (this.mapFile) this.root = dirname$1(this.mapFile);\n if (text) this.text = text;\n }\n consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new SourceMapConsumer$2(this.text);\n }\n return this.consumerCache;\n }\n decodeInline(text) {\n let baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/;\n let baseUri = /^data:application\\/json;base64,/;\n let charsetUri = /^data:application\\/json;charset=utf-?8,/;\n let uri = /^data:application\\/json,/;\n if (charsetUri.test(text) || uri.test(text)) {\n return decodeURIComponent(text.substr(RegExp.lastMatch.length));\n }\n if (baseCharsetUri.test(text) || baseUri.test(text)) {\n return fromBase64(text.substr(RegExp.lastMatch.length));\n }\n let encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n throw new Error(\"Unsupported source map encoding \" + encoding);\n }\n getAnnotationURL(sourceMapString) {\n return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n }\n isMap(map) {\n if (typeof map !== \"object\") return false;\n return typeof map.mappings === \"string\" || typeof map._mappings === \"string\" || Array.isArray(map.sections);\n }\n loadAnnotation(css) {\n let comments = css.match(/\\/\\*\\s*# sourceMappingURL=/gm);\n if (!comments) return;\n let start = css.lastIndexOf(comments.pop());\n let end = css.indexOf(\"*/\", start);\n if (start > -1 && end > -1) {\n this.annotation = this.getAnnotationURL(css.substring(start, end));\n }\n }\n loadFile(path) {\n this.root = dirname$1(path);\n if (existsSync(path)) {\n this.mapFile = path;\n return readFileSync(path, \"utf-8\").toString().trim();\n }\n }\n loadMap(file, prev) {\n if (prev === false) return false;\n if (prev) {\n if (typeof prev === \"string\") {\n return prev;\n } else if (typeof prev === \"function\") {\n let prevPath = prev(file);\n if (prevPath) {\n let map = this.loadFile(prevPath);\n if (!map) {\n throw new Error(\n \"Unable to load previous source map: \" + prevPath.toString()\n );\n }\n return map;\n }\n } else if (prev instanceof SourceMapConsumer$2) {\n return SourceMapGenerator$2.fromSourceMap(prev).toString();\n } else if (prev instanceof SourceMapGenerator$2) {\n return prev.toString();\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev);\n } else {\n throw new Error(\n \"Unsupported previous source map format: \" + prev.toString()\n );\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation);\n } else if (this.annotation) {\n let map = this.annotation;\n if (file) map = join(dirname$1(file), map);\n return this.loadFile(map);\n }\n }\n startWith(string, start) {\n if (!string) return false;\n return string.substr(0, start.length) === start;\n }\n withContent() {\n return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n }\n};\nvar previousMap = PreviousMap$2;\nPreviousMap$2.default = PreviousMap$2;\nlet { SourceMapConsumer: SourceMapConsumer$1, SourceMapGenerator: SourceMapGenerator$1 } = require$$2;\nlet { fileURLToPath, pathToFileURL: pathToFileURL$1 } = require$$2;\nlet { isAbsolute, resolve: resolve$1 } = require$$2;\nlet { nanoid } = nonSecure;\nlet terminalHighlight = require$$2;\nlet CssSyntaxError$1 = cssSyntaxError;\nlet PreviousMap$1 = previousMap;\nlet fromOffsetCache = Symbol(\"fromOffsetCache\");\nlet sourceMapAvailable$1 = Boolean(SourceMapConsumer$1 && SourceMapGenerator$1);\nlet pathAvailable$1 = Boolean(resolve$1 && isAbsolute);\nlet Input$4 = class Input2 {\n constructor(css, opts = {}) {\n if (css === null || typeof css === \"undefined\" || typeof css === \"object\" && !css.toString) {\n throw new Error(`PostCSS received ${css} instead of CSS string`);\n }\n this.css = css.toString();\n if (this.css[0] === \"\\uFEFF\" || this.css[0] === \"￾\") {\n this.hasBOM = true;\n this.css = this.css.slice(1);\n } else {\n this.hasBOM = false;\n }\n if (opts.from) {\n if (!pathAvailable$1 || /^\\w+:\\/\\//.test(opts.from) || isAbsolute(opts.from)) {\n this.file = opts.from;\n } else {\n this.file = resolve$1(opts.from);\n }\n }\n if (pathAvailable$1 && sourceMapAvailable$1) {\n let map = new PreviousMap$1(this.css, opts);\n if (map.text) {\n this.map = map;\n let file = map.consumer().file;\n if (!this.file && file) this.file = this.mapResolve(file);\n }\n }\n if (!this.file) {\n this.id = \"\";\n }\n if (this.map) this.map.file = this.from;\n }\n error(message, line, column, opts = {}) {\n let result2, endLine, endColumn;\n if (line && typeof line === \"object\") {\n let start = line;\n let end = column;\n if (typeof start.offset === \"number\") {\n let pos = this.fromOffset(start.offset);\n line = pos.line;\n column = pos.col;\n } else {\n line = start.line;\n column = start.column;\n }\n if (typeof end.offset === \"number\") {\n let pos = this.fromOffset(end.offset);\n endLine = pos.line;\n endColumn = pos.col;\n } else {\n endLine = end.line;\n endColumn = end.column;\n }\n } else if (!column) {\n let pos = this.fromOffset(line);\n line = pos.line;\n column = pos.col;\n }\n let origin = this.origin(line, column, endLine, endColumn);\n if (origin) {\n result2 = new CssSyntaxError$1(\n message,\n origin.endLine === void 0 ? origin.line : { column: origin.column, line: origin.line },\n origin.endLine === void 0 ? origin.column : { column: origin.endColumn, line: origin.endLine },\n origin.source,\n origin.file,\n opts.plugin\n );\n } else {\n result2 = new CssSyntaxError$1(\n message,\n endLine === void 0 ? line : { column, line },\n endLine === void 0 ? column : { column: endColumn, line: endLine },\n this.css,\n this.file,\n opts.plugin\n );\n }\n result2.input = { column, endColumn, endLine, line, source: this.css };\n if (this.file) {\n if (pathToFileURL$1) {\n result2.input.url = pathToFileURL$1(this.file).toString();\n }\n result2.input.file = this.file;\n }\n return result2;\n }\n fromOffset(offset) {\n let lastLine, lineToIndex;\n if (!this[fromOffsetCache]) {\n let lines = this.css.split(\"\\n\");\n lineToIndex = new Array(lines.length);\n let prevIndex = 0;\n for (let i2 = 0, l2 = lines.length; i2 < l2; i2++) {\n lineToIndex[i2] = prevIndex;\n prevIndex += lines[i2].length + 1;\n }\n this[fromOffsetCache] = lineToIndex;\n } else {\n lineToIndex = this[fromOffsetCache];\n }\n lastLine = lineToIndex[lineToIndex.length - 1];\n let min = 0;\n if (offset >= lastLine) {\n min = lineToIndex.length - 1;\n } else {\n let max = lineToIndex.length - 2;\n let mid;\n while (min < max) {\n mid = min + (max - min >> 1);\n if (offset < lineToIndex[mid]) {\n max = mid - 1;\n } else if (offset >= lineToIndex[mid + 1]) {\n min = mid + 1;\n } else {\n min = mid;\n break;\n }\n }\n }\n return {\n col: offset - lineToIndex[min] + 1,\n line: min + 1\n };\n }\n mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file;\n }\n return resolve$1(this.map.consumer().sourceRoot || this.map.root || \".\", file);\n }\n origin(line, column, endLine, endColumn) {\n if (!this.map) return false;\n let consumer = this.map.consumer();\n let from = consumer.originalPositionFor({ column, line });\n if (!from.source) return false;\n let to;\n if (typeof endLine === \"number\") {\n to = consumer.originalPositionFor({ column: endColumn, line: endLine });\n }\n let fromUrl;\n if (isAbsolute(from.source)) {\n fromUrl = pathToFileURL$1(from.source);\n } else {\n fromUrl = new URL(\n from.source,\n this.map.consumer().sourceRoot || pathToFileURL$1(this.map.mapFile)\n );\n }\n let result2 = {\n column: from.column,\n endColumn: to && to.column,\n endLine: to && to.line,\n line: from.line,\n url: fromUrl.toString()\n };\n if (fromUrl.protocol === \"file:\") {\n if (fileURLToPath) {\n result2.file = fileURLToPath(fromUrl);\n } else {\n throw new Error(`file: protocol is not available in this PostCSS build`);\n }\n }\n let source = consumer.sourceContentFor(from.source);\n if (source) result2.source = source;\n return result2;\n }\n toJSON() {\n let json = {};\n for (let name of [\"hasBOM\", \"css\", \"file\", \"id\"]) {\n if (this[name] != null) {\n json[name] = this[name];\n }\n }\n if (this.map) {\n json.map = { ...this.map };\n if (json.map.consumerCache) {\n json.map.consumerCache = void 0;\n }\n }\n return json;\n }\n get from() {\n return this.file || this.id;\n }\n};\nvar input = Input$4;\nInput$4.default = Input$4;\nif (terminalHighlight && terminalHighlight.registerInput) {\n terminalHighlight.registerInput(Input$4);\n}\nlet { SourceMapConsumer, SourceMapGenerator } = require$$2;\nlet { dirname, relative, resolve, sep } = require$$2;\nlet { pathToFileURL } = require$$2;\nlet Input$3 = input;\nlet sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator);\nlet pathAvailable = Boolean(dirname && resolve && relative && sep);\nlet MapGenerator$2 = class MapGenerator2 {\n constructor(stringify2, root2, opts, cssString) {\n this.stringify = stringify2;\n this.mapOpts = opts.map || {};\n this.root = root2;\n this.opts = opts;\n this.css = cssString;\n this.originalCSS = cssString;\n this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute;\n this.memoizedFileURLs = /* @__PURE__ */ new Map();\n this.memoizedPaths = /* @__PURE__ */ new Map();\n this.memoizedURLs = /* @__PURE__ */ new Map();\n }\n addAnnotation() {\n let content;\n if (this.isInline()) {\n content = \"data:application/json;base64,\" + this.toBase64(this.map.toString());\n } else if (typeof this.mapOpts.annotation === \"string\") {\n content = this.mapOpts.annotation;\n } else if (typeof this.mapOpts.annotation === \"function\") {\n content = this.mapOpts.annotation(this.opts.to, this.root);\n } else {\n content = this.outputFile() + \".map\";\n }\n let eol = \"\\n\";\n if (this.css.includes(\"\\r\\n\")) eol = \"\\r\\n\";\n this.css += eol + \"/*# sourceMappingURL=\" + content + \" */\";\n }\n applyPrevMaps() {\n for (let prev of this.previous()) {\n let from = this.toUrl(this.path(prev.file));\n let root2 = prev.root || dirname(prev.file);\n let map;\n if (this.mapOpts.sourcesContent === false) {\n map = new SourceMapConsumer(prev.text);\n if (map.sourcesContent) {\n map.sourcesContent = null;\n }\n } else {\n map = prev.consumer();\n }\n this.map.applySourceMap(map, from, this.toUrl(this.path(root2)));\n }\n }\n clearAnnotation() {\n if (this.mapOpts.annotation === false) return;\n if (this.root) {\n let node2;\n for (let i2 = this.root.nodes.length - 1; i2 >= 0; i2--) {\n node2 = this.root.nodes[i2];\n if (node2.type !== \"comment\") continue;\n if (node2.text.indexOf(\"# sourceMappingURL=\") === 0) {\n this.root.removeChild(i2);\n }\n }\n } else if (this.css) {\n this.css = this.css.replace(/\\n*?\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\");\n }\n }\n generate() {\n this.clearAnnotation();\n if (pathAvailable && sourceMapAvailable && this.isMap()) {\n return this.generateMap();\n } else {\n let result2 = \"\";\n this.stringify(this.root, (i2) => {\n result2 += i2;\n });\n return [result2];\n }\n }\n generateMap() {\n if (this.root) {\n this.generateString();\n } else if (this.previous().length === 1) {\n let prev = this.previous()[0].consumer();\n prev.file = this.outputFile();\n this.map = SourceMapGenerator.fromSourceMap(prev, {\n ignoreInvalidMapping: true\n });\n } else {\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n this.map.addMapping({\n generated: { column: 0, line: 1 },\n original: { column: 0, line: 1 },\n source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\"\n });\n }\n if (this.isSourcesContent()) this.setSourcesContent();\n if (this.root && this.previous().length > 0) this.applyPrevMaps();\n if (this.isAnnotation()) this.addAnnotation();\n if (this.isInline()) {\n return [this.css];\n } else {\n return [this.css, this.map];\n }\n }\n generateString() {\n this.css = \"\";\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n let line = 1;\n let column = 1;\n let noSource = \"\";\n let mapping = {\n generated: { column: 0, line: 0 },\n original: { column: 0, line: 0 },\n source: \"\"\n };\n let lines, last;\n this.stringify(this.root, (str, node2, type) => {\n this.css += str;\n if (node2 && type !== \"end\") {\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n if (node2.source && node2.source.start) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.start.line;\n mapping.original.column = node2.source.start.column - 1;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n this.map.addMapping(mapping);\n }\n }\n lines = str.match(/\\n/g);\n if (lines) {\n line += lines.length;\n last = str.lastIndexOf(\"\\n\");\n column = str.length - last;\n } else {\n column += str.length;\n }\n if (node2 && type !== \"start\") {\n let p = node2.parent || { raws: {} };\n let childless = node2.type === \"decl\" || node2.type === \"atrule\" && !node2.nodes;\n if (!childless || node2 !== p.last || p.raws.semicolon) {\n if (node2.source && node2.source.end) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.end.line;\n mapping.original.column = node2.source.end.column - 1;\n mapping.generated.line = line;\n mapping.generated.column = column - 2;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n this.map.addMapping(mapping);\n }\n }\n }\n });\n }\n isAnnotation() {\n if (this.isInline()) {\n return true;\n }\n if (typeof this.mapOpts.annotation !== \"undefined\") {\n return this.mapOpts.annotation;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.annotation);\n }\n return true;\n }\n isInline() {\n if (typeof this.mapOpts.inline !== \"undefined\") {\n return this.mapOpts.inline;\n }\n let annotation = this.mapOpts.annotation;\n if (typeof annotation !== \"undefined\" && annotation !== true) {\n return false;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.inline);\n }\n return true;\n }\n isMap() {\n if (typeof this.opts.map !== \"undefined\") {\n return !!this.opts.map;\n }\n return this.previous().length > 0;\n }\n isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== \"undefined\") {\n return this.mapOpts.sourcesContent;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.withContent());\n }\n return true;\n }\n outputFile() {\n if (this.opts.to) {\n return this.path(this.opts.to);\n } else if (this.opts.from) {\n return this.path(this.opts.from);\n } else {\n return \"to.css\";\n }\n }\n path(file) {\n if (this.mapOpts.absolute) return file;\n if (file.charCodeAt(0) === 60) return file;\n if (/^\\w+:\\/\\//.test(file)) return file;\n let cached = this.memoizedPaths.get(file);\n if (cached) return cached;\n let from = this.opts.to ? dirname(this.opts.to) : \".\";\n if (typeof this.mapOpts.annotation === \"string\") {\n from = dirname(resolve(from, this.mapOpts.annotation));\n }\n let path = relative(from, file);\n this.memoizedPaths.set(file, path);\n return path;\n }\n previous() {\n if (!this.previousMaps) {\n this.previousMaps = [];\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source && node2.source.input.map) {\n let map = node2.source.input.map;\n if (!this.previousMaps.includes(map)) {\n this.previousMaps.push(map);\n }\n }\n });\n } else {\n let input2 = new Input$3(this.originalCSS, this.opts);\n if (input2.map) this.previousMaps.push(input2.map);\n }\n }\n return this.previousMaps;\n }\n setSourcesContent() {\n let already = {};\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source) {\n let from = node2.source.input.from;\n if (from && !already[from]) {\n already[from] = true;\n let fromUrl = this.usesFileUrls ? this.toFileUrl(from) : this.toUrl(this.path(from));\n this.map.setSourceContent(fromUrl, node2.source.input.css);\n }\n }\n });\n } else if (this.css) {\n let from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\";\n this.map.setSourceContent(from, this.css);\n }\n }\n sourcePath(node2) {\n if (this.mapOpts.from) {\n return this.toUrl(this.mapOpts.from);\n } else if (this.usesFileUrls) {\n return this.toFileUrl(node2.source.input.from);\n } else {\n return this.toUrl(this.path(node2.source.input.from));\n }\n }\n toBase64(str) {\n if (Buffer) {\n return Buffer.from(str).toString(\"base64\");\n } else {\n return window.btoa(unescape(encodeURIComponent(str)));\n }\n }\n toFileUrl(path) {\n let cached = this.memoizedFileURLs.get(path);\n if (cached) return cached;\n if (pathToFileURL) {\n let fileURL = pathToFileURL(path).toString();\n this.memoizedFileURLs.set(path, fileURL);\n return fileURL;\n } else {\n throw new Error(\n \"`map.absolute` option is not available in this PostCSS build\"\n );\n }\n }\n toUrl(path) {\n let cached = this.memoizedURLs.get(path);\n if (cached) return cached;\n if (sep === \"\\\\\") {\n path = path.replace(/\\\\/g, \"/\");\n }\n let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent);\n this.memoizedURLs.set(path, url);\n return url;\n }\n};\nvar mapGenerator = MapGenerator$2;\nlet Node$2 = node;\nlet Comment$4 = class Comment2 extends Node$2 {\n constructor(defaults) {\n super(defaults);\n this.type = \"comment\";\n }\n};\nvar comment = Comment$4;\nComment$4.default = Comment$4;\nlet { isClean: isClean$1, my: my$1 } = symbols;\nlet Declaration$3 = declaration;\nlet Comment$3 = comment;\nlet Node$1 = node;\nlet parse$4, Rule$4, AtRule$4, Root$6;\nfunction cleanSource(nodes) {\n return nodes.map((i2) => {\n if (i2.nodes) i2.nodes = cleanSource(i2.nodes);\n delete i2.source;\n return i2;\n });\n}\nfunction markDirtyUp(node2) {\n node2[isClean$1] = false;\n if (node2.proxyOf.nodes) {\n for (let i2 of node2.proxyOf.nodes) {\n markDirtyUp(i2);\n }\n }\n}\nlet Container$7 = class Container2 extends Node$1 {\n append(...children) {\n for (let child of children) {\n let nodes = this.normalize(child, this.last);\n for (let node2 of nodes) this.proxyOf.nodes.push(node2);\n }\n this.markDirty();\n return this;\n }\n cleanRaws(keepBetween) {\n super.cleanRaws(keepBetween);\n if (this.nodes) {\n for (let node2 of this.nodes) node2.cleanRaws(keepBetween);\n }\n }\n each(callback) {\n if (!this.proxyOf.nodes) return void 0;\n let iterator = this.getIterator();\n let index2, result2;\n while (this.indexes[iterator] < this.proxyOf.nodes.length) {\n index2 = this.indexes[iterator];\n result2 = callback(this.proxyOf.nodes[index2], index2);\n if (result2 === false) break;\n this.indexes[iterator] += 1;\n }\n delete this.indexes[iterator];\n return result2;\n }\n every(condition) {\n return this.nodes.every(condition);\n }\n getIterator() {\n if (!this.lastEach) this.lastEach = 0;\n if (!this.indexes) this.indexes = {};\n this.lastEach += 1;\n let iterator = this.lastEach;\n this.indexes[iterator] = 0;\n return iterator;\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (!node2[prop]) {\n return node2[prop];\n } else if (prop === \"each\" || typeof prop === \"string\" && prop.startsWith(\"walk\")) {\n return (...args) => {\n return node2[prop](\n ...args.map((i2) => {\n if (typeof i2 === \"function\") {\n return (child, index2) => i2(child.toProxy(), index2);\n } else {\n return i2;\n }\n })\n );\n };\n } else if (prop === \"every\" || prop === \"some\") {\n return (cb) => {\n return node2[prop](\n (child, ...other) => cb(child.toProxy(), ...other)\n );\n };\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else if (prop === \"nodes\") {\n return node2.nodes.map((i2) => i2.toProxy());\n } else if (prop === \"first\" || prop === \"last\") {\n return node2[prop].toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"name\" || prop === \"params\" || prop === \"selector\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n index(child) {\n if (typeof child === \"number\") return child;\n if (child.proxyOf) child = child.proxyOf;\n return this.proxyOf.nodes.indexOf(child);\n }\n insertAfter(exist, add) {\n let existIndex = this.index(exist);\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex < index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n insertBefore(exist, add) {\n let existIndex = this.index(exist);\n let type = existIndex === 0 ? \"prepend\" : false;\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex <= index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n normalize(nodes, sample) {\n if (typeof nodes === \"string\") {\n nodes = cleanSource(parse$4(nodes).nodes);\n } else if (typeof nodes === \"undefined\") {\n nodes = [];\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type === \"root\" && this.type !== \"document\") {\n nodes = nodes.nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type) {\n nodes = [nodes];\n } else if (nodes.prop) {\n if (typeof nodes.value === \"undefined\") {\n throw new Error(\"Value field is missed in node creation\");\n } else if (typeof nodes.value !== \"string\") {\n nodes.value = String(nodes.value);\n }\n nodes = [new Declaration$3(nodes)];\n } else if (nodes.selector) {\n nodes = [new Rule$4(nodes)];\n } else if (nodes.name) {\n nodes = [new AtRule$4(nodes)];\n } else if (nodes.text) {\n nodes = [new Comment$3(nodes)];\n } else {\n throw new Error(\"Unknown node type in node creation\");\n }\n let processed = nodes.map((i2) => {\n if (!i2[my$1]) Container2.rebuild(i2);\n i2 = i2.proxyOf;\n if (i2.parent) i2.parent.removeChild(i2);\n if (i2[isClean$1]) markDirtyUp(i2);\n if (typeof i2.raws.before === \"undefined\") {\n if (sample && typeof sample.raws.before !== \"undefined\") {\n i2.raws.before = sample.raws.before.replace(/\\S/g, \"\");\n }\n }\n i2.parent = this.proxyOf;\n return i2;\n });\n return processed;\n }\n prepend(...children) {\n children = children.reverse();\n for (let child of children) {\n let nodes = this.normalize(child, this.first, \"prepend\").reverse();\n for (let node2 of nodes) this.proxyOf.nodes.unshift(node2);\n for (let id in this.indexes) {\n this.indexes[id] = this.indexes[id] + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n push(child) {\n child.parent = this;\n this.proxyOf.nodes.push(child);\n return this;\n }\n removeAll() {\n for (let node2 of this.proxyOf.nodes) node2.parent = void 0;\n this.proxyOf.nodes = [];\n this.markDirty();\n return this;\n }\n removeChild(child) {\n child = this.index(child);\n this.proxyOf.nodes[child].parent = void 0;\n this.proxyOf.nodes.splice(child, 1);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (index2 >= child) {\n this.indexes[id] = index2 - 1;\n }\n }\n this.markDirty();\n return this;\n }\n replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {};\n }\n this.walkDecls((decl) => {\n if (opts.props && !opts.props.includes(decl.prop)) return;\n if (opts.fast && !decl.value.includes(opts.fast)) return;\n decl.value = decl.value.replace(pattern, callback);\n });\n this.markDirty();\n return this;\n }\n some(condition) {\n return this.nodes.some(condition);\n }\n walk(callback) {\n return this.each((child, i2) => {\n let result2;\n try {\n result2 = callback(child, i2);\n } catch (e2) {\n throw child.addToError(e2);\n }\n if (result2 !== false && child.walk) {\n result2 = child.walk(callback);\n }\n return result2;\n });\n }\n walkAtRules(name, callback) {\n if (!callback) {\n callback = name;\n return this.walk((child, i2) => {\n if (child.type === \"atrule\") {\n return callback(child, i2);\n }\n });\n }\n if (name instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && name.test(child.name)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && child.name === name) {\n return callback(child, i2);\n }\n });\n }\n walkComments(callback) {\n return this.walk((child, i2) => {\n if (child.type === \"comment\") {\n return callback(child, i2);\n }\n });\n }\n walkDecls(prop, callback) {\n if (!callback) {\n callback = prop;\n return this.walk((child, i2) => {\n if (child.type === \"decl\") {\n return callback(child, i2);\n }\n });\n }\n if (prop instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && prop.test(child.prop)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && child.prop === prop) {\n return callback(child, i2);\n }\n });\n }\n walkRules(selector, callback) {\n if (!callback) {\n callback = selector;\n return this.walk((child, i2) => {\n if (child.type === \"rule\") {\n return callback(child, i2);\n }\n });\n }\n if (selector instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && selector.test(child.selector)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && child.selector === selector) {\n return callback(child, i2);\n }\n });\n }\n get first() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[0];\n }\n get last() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n }\n};\nContainer$7.registerParse = (dependant) => {\n parse$4 = dependant;\n};\nContainer$7.registerRule = (dependant) => {\n Rule$4 = dependant;\n};\nContainer$7.registerAtRule = (dependant) => {\n AtRule$4 = dependant;\n};\nContainer$7.registerRoot = (dependant) => {\n Root$6 = dependant;\n};\nvar container = Container$7;\nContainer$7.default = Container$7;\nContainer$7.rebuild = (node2) => {\n if (node2.type === \"atrule\") {\n Object.setPrototypeOf(node2, AtRule$4.prototype);\n } else if (node2.type === \"rule\") {\n Object.setPrototypeOf(node2, Rule$4.prototype);\n } else if (node2.type === \"decl\") {\n Object.setPrototypeOf(node2, Declaration$3.prototype);\n } else if (node2.type === \"comment\") {\n Object.setPrototypeOf(node2, Comment$3.prototype);\n } else if (node2.type === \"root\") {\n Object.setPrototypeOf(node2, Root$6.prototype);\n }\n node2[my$1] = true;\n if (node2.nodes) {\n node2.nodes.forEach((child) => {\n Container$7.rebuild(child);\n });\n }\n};\nlet Container$6 = container;\nlet LazyResult$4, Processor$3;\nlet Document$3 = class Document23 extends Container$6 {\n constructor(defaults) {\n super({ type: \"document\", ...defaults });\n if (!this.nodes) {\n this.nodes = [];\n }\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$4(new Processor$3(), this, opts);\n return lazy.stringify();\n }\n};\nDocument$3.registerLazyResult = (dependant) => {\n LazyResult$4 = dependant;\n};\nDocument$3.registerProcessor = (dependant) => {\n Processor$3 = dependant;\n};\nvar document$1 = Document$3;\nDocument$3.default = Document$3;\nlet printed = {};\nvar warnOnce$2 = function warnOnce2(message) {\n if (printed[message]) return;\n printed[message] = true;\n if (typeof console !== \"undefined\" && console.warn) {\n console.warn(message);\n }\n};\nlet Warning$2 = class Warning2 {\n constructor(text, opts = {}) {\n this.type = \"warning\";\n this.text = text;\n if (opts.node && opts.node.source) {\n let range = opts.node.rangeBy(opts);\n this.line = range.start.line;\n this.column = range.start.column;\n this.endLine = range.end.line;\n this.endColumn = range.end.column;\n }\n for (let opt in opts) this[opt] = opts[opt];\n }\n toString() {\n if (this.node) {\n return this.node.error(this.text, {\n index: this.index,\n plugin: this.plugin,\n word: this.word\n }).message;\n }\n if (this.plugin) {\n return this.plugin + \": \" + this.text;\n }\n return this.text;\n }\n};\nvar warning = Warning$2;\nWarning$2.default = Warning$2;\nlet Warning$1 = warning;\nlet Result$3 = class Result2 {\n constructor(processor2, root2, opts) {\n this.processor = processor2;\n this.messages = [];\n this.root = root2;\n this.opts = opts;\n this.css = void 0;\n this.map = void 0;\n }\n toString() {\n return this.css;\n }\n warn(text, opts = {}) {\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin;\n }\n }\n let warning2 = new Warning$1(text, opts);\n this.messages.push(warning2);\n return warning2;\n }\n warnings() {\n return this.messages.filter((i2) => i2.type === \"warning\");\n }\n get content() {\n return this.css;\n }\n};\nvar result = Result$3;\nResult$3.default = Result$3;\nconst SINGLE_QUOTE = \"'\".charCodeAt(0);\nconst DOUBLE_QUOTE = '\"'.charCodeAt(0);\nconst BACKSLASH = \"\\\\\".charCodeAt(0);\nconst SLASH = \"/\".charCodeAt(0);\nconst NEWLINE = \"\\n\".charCodeAt(0);\nconst SPACE = \" \".charCodeAt(0);\nconst FEED = \"\\f\".charCodeAt(0);\nconst TAB = \"\t\".charCodeAt(0);\nconst CR = \"\\r\".charCodeAt(0);\nconst OPEN_SQUARE = \"[\".charCodeAt(0);\nconst CLOSE_SQUARE = \"]\".charCodeAt(0);\nconst OPEN_PARENTHESES = \"(\".charCodeAt(0);\nconst CLOSE_PARENTHESES = \")\".charCodeAt(0);\nconst OPEN_CURLY = \"{\".charCodeAt(0);\nconst CLOSE_CURLY = \"}\".charCodeAt(0);\nconst SEMICOLON = \";\".charCodeAt(0);\nconst ASTERISK = \"*\".charCodeAt(0);\nconst COLON = \":\".charCodeAt(0);\nconst AT = \"@\".charCodeAt(0);\nconst RE_AT_END = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g;\nconst RE_WORD_END = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g;\nconst RE_BAD_BRACKET = /.[\\r\\n\"'(/\\\\]/;\nconst RE_HEX_ESCAPE = /[\\da-f]/i;\nvar tokenize = function tokenizer2(input2, options = {}) {\n let css = input2.css.valueOf();\n let ignore = options.ignoreErrors;\n let code, next, quote, content, escape;\n let escaped, escapePos, prev, n2, currentToken;\n let length = css.length;\n let pos = 0;\n let buffer = [];\n let returned = [];\n function position() {\n return pos;\n }\n function unclosed(what) {\n throw input2.error(\"Unclosed \" + what, pos);\n }\n function endOfFile() {\n return returned.length === 0 && pos >= length;\n }\n function nextToken(opts) {\n if (returned.length) return returned.pop();\n if (pos >= length) return;\n let ignoreUnclosed = opts ? opts.ignoreUnclosed : false;\n code = css.charCodeAt(pos);\n switch (code) {\n case NEWLINE:\n case SPACE:\n case TAB:\n case CR:\n case FEED: {\n next = pos;\n do {\n next += 1;\n code = css.charCodeAt(next);\n } while (code === SPACE || code === NEWLINE || code === TAB || code === CR || code === FEED);\n currentToken = [\"space\", css.slice(pos, next)];\n pos = next - 1;\n break;\n }\n case OPEN_SQUARE:\n case CLOSE_SQUARE:\n case OPEN_CURLY:\n case CLOSE_CURLY:\n case COLON:\n case SEMICOLON:\n case CLOSE_PARENTHESES: {\n let controlChar = String.fromCharCode(code);\n currentToken = [controlChar, controlChar, pos];\n break;\n }\n case OPEN_PARENTHESES: {\n prev = buffer.length ? buffer.pop()[1] : \"\";\n n2 = css.charCodeAt(pos + 1);\n if (prev === \"url\" && n2 !== SINGLE_QUOTE && n2 !== DOUBLE_QUOTE && n2 !== SPACE && n2 !== NEWLINE && n2 !== TAB && n2 !== FEED && n2 !== CR) {\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(\")\", next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos;\n break;\n } else {\n unclosed(\"bracket\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"brackets\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n next = css.indexOf(\")\", pos + 1);\n content = css.slice(pos, next + 1);\n if (next === -1 || RE_BAD_BRACKET.test(content)) {\n currentToken = [\"(\", \"(\", pos];\n } else {\n currentToken = [\"brackets\", content, pos, next];\n pos = next;\n }\n }\n break;\n }\n case SINGLE_QUOTE:\n case DOUBLE_QUOTE: {\n quote = code === SINGLE_QUOTE ? \"'\" : '\"';\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(quote, next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos + 1;\n break;\n } else {\n unclosed(\"string\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"string\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case AT: {\n RE_AT_END.lastIndex = pos + 1;\n RE_AT_END.test(css);\n if (RE_AT_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_AT_END.lastIndex - 2;\n }\n currentToken = [\"at-word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case BACKSLASH: {\n next = pos;\n escape = true;\n while (css.charCodeAt(next + 1) === BACKSLASH) {\n next += 1;\n escape = !escape;\n }\n code = css.charCodeAt(next + 1);\n if (escape && code !== SLASH && code !== SPACE && code !== NEWLINE && code !== TAB && code !== CR && code !== FEED) {\n next += 1;\n if (RE_HEX_ESCAPE.test(css.charAt(next))) {\n while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {\n next += 1;\n }\n if (css.charCodeAt(next + 1) === SPACE) {\n next += 1;\n }\n }\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n default: {\n if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {\n next = css.indexOf(\"*/\", pos + 2) + 1;\n if (next === 0) {\n if (ignore || ignoreUnclosed) {\n next = css.length;\n } else {\n unclosed(\"comment\");\n }\n }\n currentToken = [\"comment\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n RE_WORD_END.lastIndex = pos + 1;\n RE_WORD_END.test(css);\n if (RE_WORD_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_WORD_END.lastIndex - 2;\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n buffer.push(currentToken);\n pos = next;\n }\n break;\n }\n }\n pos++;\n return currentToken;\n }\n function back(token) {\n returned.push(token);\n }\n return {\n back,\n endOfFile,\n nextToken,\n position\n };\n};\nlet Container$5 = container;\nlet AtRule$3 = class AtRule2 extends Container$5 {\n constructor(defaults) {\n super(defaults);\n this.type = \"atrule\";\n }\n append(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.append(...children);\n }\n prepend(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.prepend(...children);\n }\n};\nvar atRule = AtRule$3;\nAtRule$3.default = AtRule$3;\nContainer$5.registerAtRule(AtRule$3);\nlet Container$4 = container;\nlet LazyResult$3, Processor$2;\nlet Root$5 = class Root2 extends Container$4 {\n constructor(defaults) {\n super(defaults);\n this.type = \"root\";\n if (!this.nodes) this.nodes = [];\n }\n normalize(child, sample, type) {\n let nodes = super.normalize(child);\n if (sample) {\n if (type === \"prepend\") {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before;\n } else {\n delete sample.raws.before;\n }\n } else if (this.first !== sample) {\n for (let node2 of nodes) {\n node2.raws.before = sample.raws.before;\n }\n }\n }\n return nodes;\n }\n removeChild(child, ignore) {\n let index2 = this.index(child);\n if (!ignore && index2 === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index2].raws.before;\n }\n return super.removeChild(child);\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$3(new Processor$2(), this, opts);\n return lazy.stringify();\n }\n};\nRoot$5.registerLazyResult = (dependant) => {\n LazyResult$3 = dependant;\n};\nRoot$5.registerProcessor = (dependant) => {\n Processor$2 = dependant;\n};\nvar root = Root$5;\nRoot$5.default = Root$5;\nContainer$4.registerRoot(Root$5);\nlet list$2 = {\n comma(string) {\n return list$2.split(string, [\",\"], true);\n },\n space(string) {\n let spaces = [\" \", \"\\n\", \"\t\"];\n return list$2.split(string, spaces);\n },\n split(string, separators, last) {\n let array = [];\n let current = \"\";\n let split = false;\n let func = 0;\n let inQuote = false;\n let prevQuote = \"\";\n let escape = false;\n for (let letter of string) {\n if (escape) {\n escape = false;\n } else if (letter === \"\\\\\") {\n escape = true;\n } else if (inQuote) {\n if (letter === prevQuote) {\n inQuote = false;\n }\n } else if (letter === '\"' || letter === \"'\") {\n inQuote = true;\n prevQuote = letter;\n } else if (letter === \"(\") {\n func += 1;\n } else if (letter === \")\") {\n if (func > 0) func -= 1;\n } else if (func === 0) {\n if (separators.includes(letter)) split = true;\n }\n if (split) {\n if (current !== \"\") array.push(current.trim());\n current = \"\";\n split = false;\n } else {\n current += letter;\n }\n }\n if (last || current !== \"\") array.push(current.trim());\n return array;\n }\n};\nvar list_1 = list$2;\nlist$2.default = list$2;\nlet Container$3 = container;\nlet list$1 = list_1;\nlet Rule$3 = class Rule2 extends Container$3 {\n constructor(defaults) {\n super(defaults);\n this.type = \"rule\";\n if (!this.nodes) this.nodes = [];\n }\n get selectors() {\n return list$1.comma(this.selector);\n }\n set selectors(values) {\n let match = this.selector ? this.selector.match(/,\\s*/) : null;\n let sep2 = match ? match[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n this.selector = values.join(sep2);\n }\n};\nvar rule = Rule$3;\nRule$3.default = Rule$3;\nContainer$3.registerRule(Rule$3);\nlet Declaration$2 = declaration;\nlet tokenizer22 = tokenize;\nlet Comment$2 = comment;\nlet AtRule$2 = atRule;\nlet Root$4 = root;\nlet Rule$2 = rule;\nconst SAFE_COMMENT_NEIGHBOR = {\n empty: true,\n space: true\n};\nfunction findLastWithPosition(tokens) {\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n let token = tokens[i2];\n let pos = token[3] || token[2];\n if (pos) return pos;\n }\n}\nlet Parser$1 = class Parser2 {\n constructor(input2) {\n this.input = input2;\n this.root = new Root$4();\n this.current = this.root;\n this.spaces = \"\";\n this.semicolon = false;\n this.createTokenizer();\n this.root.source = { input: input2, start: { column: 1, line: 1, offset: 0 } };\n }\n atrule(token) {\n let node2 = new AtRule$2();\n node2.name = token[1].slice(1);\n if (node2.name === \"\") {\n this.unnamedAtrule(node2, token);\n }\n this.init(node2, token[2]);\n let type;\n let prev;\n let shift;\n let last = false;\n let open = false;\n let params = [];\n let brackets = [];\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n type = token[0];\n if (type === \"(\" || type === \"[\") {\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (type === \"{\" && brackets.length > 0) {\n brackets.push(\"}\");\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n }\n if (brackets.length === 0) {\n if (type === \";\") {\n node2.source.end = this.getPosition(token[2]);\n node2.source.end.offset++;\n this.semicolon = true;\n break;\n } else if (type === \"{\") {\n open = true;\n break;\n } else if (type === \"}\") {\n if (params.length > 0) {\n shift = params.length - 1;\n prev = params[shift];\n while (prev && prev[0] === \"space\") {\n prev = params[--shift];\n }\n if (prev) {\n node2.source.end = this.getPosition(prev[3] || prev[2]);\n node2.source.end.offset++;\n }\n }\n this.end(token);\n break;\n } else {\n params.push(token);\n }\n } else {\n params.push(token);\n }\n if (this.tokenizer.endOfFile()) {\n last = true;\n break;\n }\n }\n node2.raws.between = this.spacesAndCommentsFromEnd(params);\n if (params.length) {\n node2.raws.afterName = this.spacesAndCommentsFromStart(params);\n this.raw(node2, \"params\", params);\n if (last) {\n token = params[params.length - 1];\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n this.spaces = node2.raws.between;\n node2.raws.between = \"\";\n }\n } else {\n node2.raws.afterName = \"\";\n node2.params = \"\";\n }\n if (open) {\n node2.nodes = [];\n this.current = node2;\n }\n }\n checkMissedSemicolon(tokens) {\n let colon = this.colon(tokens);\n if (colon === false) return;\n let founded = 0;\n let token;\n for (let j = colon - 1; j >= 0; j--) {\n token = tokens[j];\n if (token[0] !== \"space\") {\n founded += 1;\n if (founded === 2) break;\n }\n }\n throw this.input.error(\n \"Missed semicolon\",\n token[0] === \"word\" ? token[3] + 1 : token[2]\n );\n }\n colon(tokens) {\n let brackets = 0;\n let token, type, prev;\n for (let [i2, element] of tokens.entries()) {\n token = element;\n type = token[0];\n if (type === \"(\") {\n brackets += 1;\n }\n if (type === \")\") {\n brackets -= 1;\n }\n if (brackets === 0 && type === \":\") {\n if (!prev) {\n this.doubleColon(token);\n } else if (prev[0] === \"word\" && prev[1] === \"progid\") {\n continue;\n } else {\n return i2;\n }\n }\n prev = token;\n }\n return false;\n }\n comment(token) {\n let node2 = new Comment$2();\n this.init(node2, token[2]);\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n let text = token[1].slice(2, -2);\n if (/^\\s*$/.test(text)) {\n node2.text = \"\";\n node2.raws.left = text;\n node2.raws.right = \"\";\n } else {\n let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n node2.text = match[2];\n node2.raws.left = match[1];\n node2.raws.right = match[3];\n }\n }\n createTokenizer() {\n this.tokenizer = tokenizer22(this.input);\n }\n decl(tokens, customProperty) {\n let node2 = new Declaration$2();\n this.init(node2, tokens[0][2]);\n let last = tokens[tokens.length - 1];\n if (last[0] === \";\") {\n this.semicolon = true;\n tokens.pop();\n }\n node2.source.end = this.getPosition(\n last[3] || last[2] || findLastWithPosition(tokens)\n );\n node2.source.end.offset++;\n while (tokens[0][0] !== \"word\") {\n if (tokens.length === 1) this.unknownWord(tokens);\n node2.raws.before += tokens.shift()[1];\n }\n node2.source.start = this.getPosition(tokens[0][2]);\n node2.prop = \"\";\n while (tokens.length) {\n let type = tokens[0][0];\n if (type === \":\" || type === \"space\" || type === \"comment\") {\n break;\n }\n node2.prop += tokens.shift()[1];\n }\n node2.raws.between = \"\";\n let token;\n while (tokens.length) {\n token = tokens.shift();\n if (token[0] === \":\") {\n node2.raws.between += token[1];\n break;\n } else {\n if (token[0] === \"word\" && /\\w/.test(token[1])) {\n this.unknownWord([token]);\n }\n node2.raws.between += token[1];\n }\n }\n if (node2.prop[0] === \"_\" || node2.prop[0] === \"*\") {\n node2.raws.before += node2.prop[0];\n node2.prop = node2.prop.slice(1);\n }\n let firstSpaces = [];\n let next;\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n firstSpaces.push(tokens.shift());\n }\n this.precheckMissedSemicolon(tokens);\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n token = tokens[i2];\n if (token[1].toLowerCase() === \"!important\") {\n node2.important = true;\n let string = this.stringFrom(tokens, i2);\n string = this.spacesFromEnd(tokens) + string;\n if (string !== \" !important\") node2.raws.important = string;\n break;\n } else if (token[1].toLowerCase() === \"important\") {\n let cache = tokens.slice(0);\n let str = \"\";\n for (let j = i2; j > 0; j--) {\n let type = cache[j][0];\n if (str.trim().indexOf(\"!\") === 0 && type !== \"space\") {\n break;\n }\n str = cache.pop()[1] + str;\n }\n if (str.trim().indexOf(\"!\") === 0) {\n node2.important = true;\n node2.raws.important = str;\n tokens = cache;\n }\n }\n if (token[0] !== \"space\" && token[0] !== \"comment\") {\n break;\n }\n }\n let hasWord = tokens.some((i2) => i2[0] !== \"space\" && i2[0] !== \"comment\");\n if (hasWord) {\n node2.raws.between += firstSpaces.map((i2) => i2[1]).join(\"\");\n firstSpaces = [];\n }\n this.raw(node2, \"value\", firstSpaces.concat(tokens), customProperty);\n if (node2.value.includes(\":\") && !customProperty) {\n this.checkMissedSemicolon(tokens);\n }\n }\n doubleColon(token) {\n throw this.input.error(\n \"Double colon\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n emptyRule(token) {\n let node2 = new Rule$2();\n this.init(node2, token[2]);\n node2.selector = \"\";\n node2.raws.between = \"\";\n this.current = node2;\n }\n end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.semicolon = false;\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.spaces = \"\";\n if (this.current.parent) {\n this.current.source.end = this.getPosition(token[2]);\n this.current.source.end.offset++;\n this.current = this.current.parent;\n } else {\n this.unexpectedClose(token);\n }\n }\n endFile() {\n if (this.current.parent) this.unclosedBlock();\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.root.source.end = this.getPosition(this.tokenizer.position());\n }\n freeSemicolon(token) {\n this.spaces += token[1];\n if (this.current.nodes) {\n let prev = this.current.nodes[this.current.nodes.length - 1];\n if (prev && prev.type === \"rule\" && !prev.raws.ownSemicolon) {\n prev.raws.ownSemicolon = this.spaces;\n this.spaces = \"\";\n }\n }\n }\n // Helpers\n getPosition(offset) {\n let pos = this.input.fromOffset(offset);\n return {\n column: pos.col,\n line: pos.line,\n offset\n };\n }\n init(node2, offset) {\n this.current.push(node2);\n node2.source = {\n input: this.input,\n start: this.getPosition(offset)\n };\n node2.raws.before = this.spaces;\n this.spaces = \"\";\n if (node2.type !== \"comment\") this.semicolon = false;\n }\n other(start) {\n let end = false;\n let type = null;\n let colon = false;\n let bracket = null;\n let brackets = [];\n let customProperty = start[1].startsWith(\"--\");\n let tokens = [];\n let token = start;\n while (token) {\n type = token[0];\n tokens.push(token);\n if (type === \"(\" || type === \"[\") {\n if (!bracket) bracket = token;\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (customProperty && colon && type === \"{\") {\n if (!bracket) bracket = token;\n brackets.push(\"}\");\n } else if (brackets.length === 0) {\n if (type === \";\") {\n if (colon) {\n this.decl(tokens, customProperty);\n return;\n } else {\n break;\n }\n } else if (type === \"{\") {\n this.rule(tokens);\n return;\n } else if (type === \"}\") {\n this.tokenizer.back(tokens.pop());\n end = true;\n break;\n } else if (type === \":\") {\n colon = true;\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n if (brackets.length === 0) bracket = null;\n }\n token = this.tokenizer.nextToken();\n }\n if (this.tokenizer.endOfFile()) end = true;\n if (brackets.length > 0) this.unclosedBracket(bracket);\n if (end && colon) {\n if (!customProperty) {\n while (tokens.length) {\n token = tokens[tokens.length - 1][0];\n if (token !== \"space\" && token !== \"comment\") break;\n this.tokenizer.back(tokens.pop());\n }\n }\n this.decl(tokens, customProperty);\n } else {\n this.unknownWord(tokens);\n }\n }\n parse() {\n let token;\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n switch (token[0]) {\n case \"space\":\n this.spaces += token[1];\n break;\n case \";\":\n this.freeSemicolon(token);\n break;\n case \"}\":\n this.end(token);\n break;\n case \"comment\":\n this.comment(token);\n break;\n case \"at-word\":\n this.atrule(token);\n break;\n case \"{\":\n this.emptyRule(token);\n break;\n default:\n this.other(token);\n break;\n }\n }\n this.endFile();\n }\n precheckMissedSemicolon() {\n }\n raw(node2, prop, tokens, customProperty) {\n let token, type;\n let length = tokens.length;\n let value = \"\";\n let clean = true;\n let next, prev;\n for (let i2 = 0; i2 < length; i2 += 1) {\n token = tokens[i2];\n type = token[0];\n if (type === \"space\" && i2 === length - 1 && !customProperty) {\n clean = false;\n } else if (type === \"comment\") {\n prev = tokens[i2 - 1] ? tokens[i2 - 1][0] : \"empty\";\n next = tokens[i2 + 1] ? tokens[i2 + 1][0] : \"empty\";\n if (!SAFE_COMMENT_NEIGHBOR[prev] && !SAFE_COMMENT_NEIGHBOR[next]) {\n if (value.slice(-1) === \",\") {\n clean = false;\n } else {\n value += token[1];\n }\n } else {\n clean = false;\n }\n } else {\n value += token[1];\n }\n }\n if (!clean) {\n let raw = tokens.reduce((all, i2) => all + i2[1], \"\");\n node2.raws[prop] = { raw, value };\n }\n node2[prop] = value;\n }\n rule(tokens) {\n tokens.pop();\n let node2 = new Rule$2();\n this.init(node2, tokens[0][2]);\n node2.raws.between = this.spacesAndCommentsFromEnd(tokens);\n this.raw(node2, \"selector\", tokens);\n this.current = node2;\n }\n spacesAndCommentsFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\" && lastTokenType !== \"comment\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n // Errors\n spacesAndCommentsFromStart(tokens) {\n let next;\n let spaces = \"\";\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n spaces += tokens.shift()[1];\n }\n return spaces;\n }\n spacesFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n stringFrom(tokens, from) {\n let result2 = \"\";\n for (let i2 = from; i2 < tokens.length; i2++) {\n result2 += tokens[i2][1];\n }\n tokens.splice(from, tokens.length - from);\n return result2;\n }\n unclosedBlock() {\n let pos = this.current.source.start;\n throw this.input.error(\"Unclosed block\", pos.line, pos.column);\n }\n unclosedBracket(bracket) {\n throw this.input.error(\n \"Unclosed bracket\",\n { offset: bracket[2] },\n { offset: bracket[2] + 1 }\n );\n }\n unexpectedClose(token) {\n throw this.input.error(\n \"Unexpected }\",\n { offset: token[2] },\n { offset: token[2] + 1 }\n );\n }\n unknownWord(tokens) {\n throw this.input.error(\n \"Unknown word\",\n { offset: tokens[0][2] },\n { offset: tokens[0][2] + tokens[0][1].length }\n );\n }\n unnamedAtrule(node2, token) {\n throw this.input.error(\n \"At-rule without name\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n};\nvar parser = Parser$1;\nlet Container$2 = container;\nlet Parser22 = parser;\nlet Input$2 = input;\nfunction parse$3(css, opts) {\n let input2 = new Input$2(css, opts);\n let parser2 = new Parser22(input2);\n try {\n parser2.parse();\n } catch (e2) {\n if (process.env.NODE_ENV !== \"production\") {\n if (e2.name === \"CssSyntaxError\" && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser\";\n } else if (/\\.sass/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser\";\n } else if (/\\.less$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser\";\n }\n }\n }\n throw e2;\n }\n return parser2.root;\n}\nvar parse_1 = parse$3;\nparse$3.default = parse$3;\nContainer$2.registerParse(parse$3);\nlet { isClean, my } = symbols;\nlet MapGenerator$1 = mapGenerator;\nlet stringify$2 = stringify_1;\nlet Container$1 = container;\nlet Document$2 = document$1;\nlet warnOnce$1 = warnOnce$2;\nlet Result$2 = result;\nlet parse$2 = parse_1;\nlet Root$3 = root;\nconst TYPE_TO_CLASS_NAME = {\n atrule: \"AtRule\",\n comment: \"Comment\",\n decl: \"Declaration\",\n document: \"Document\",\n root: \"Root\",\n rule: \"Rule\"\n};\nconst PLUGIN_PROPS = {\n AtRule: true,\n AtRuleExit: true,\n Comment: true,\n CommentExit: true,\n Declaration: true,\n DeclarationExit: true,\n Document: true,\n DocumentExit: true,\n Once: true,\n OnceExit: true,\n postcssPlugin: true,\n prepare: true,\n Root: true,\n RootExit: true,\n Rule: true,\n RuleExit: true\n};\nconst NOT_VISITORS = {\n Once: true,\n postcssPlugin: true,\n prepare: true\n};\nconst CHILDREN = 0;\nfunction isPromise(obj) {\n return typeof obj === \"object\" && typeof obj.then === \"function\";\n}\nfunction getEvents(node2) {\n let key = false;\n let type = TYPE_TO_CLASS_NAME[node2.type];\n if (node2.type === \"decl\") {\n key = node2.prop.toLowerCase();\n } else if (node2.type === \"atrule\") {\n key = node2.name.toLowerCase();\n }\n if (key && node2.append) {\n return [\n type,\n type + \"-\" + key,\n CHILDREN,\n type + \"Exit\",\n type + \"Exit-\" + key\n ];\n } else if (key) {\n return [type, type + \"-\" + key, type + \"Exit\", type + \"Exit-\" + key];\n } else if (node2.append) {\n return [type, CHILDREN, type + \"Exit\"];\n } else {\n return [type, type + \"Exit\"];\n }\n}\nfunction toStack(node2) {\n let events;\n if (node2.type === \"document\") {\n events = [\"Document\", CHILDREN, \"DocumentExit\"];\n } else if (node2.type === \"root\") {\n events = [\"Root\", CHILDREN, \"RootExit\"];\n } else {\n events = getEvents(node2);\n }\n return {\n eventIndex: 0,\n events,\n iterator: 0,\n node: node2,\n visitorIndex: 0,\n visitors: []\n };\n}\nfunction cleanMarks(node2) {\n node2[isClean] = false;\n if (node2.nodes) node2.nodes.forEach((i2) => cleanMarks(i2));\n return node2;\n}\nlet postcss$2 = {};\nlet LazyResult$2 = class LazyResult2 {\n constructor(processor2, css, opts) {\n this.stringified = false;\n this.processed = false;\n let root2;\n if (typeof css === \"object\" && css !== null && (css.type === \"root\" || css.type === \"document\")) {\n root2 = cleanMarks(css);\n } else if (css instanceof LazyResult2 || css instanceof Result$2) {\n root2 = cleanMarks(css.root);\n if (css.map) {\n if (typeof opts.map === \"undefined\") opts.map = {};\n if (!opts.map.inline) opts.map.inline = false;\n opts.map.prev = css.map;\n }\n } else {\n let parser2 = parse$2;\n if (opts.syntax) parser2 = opts.syntax.parse;\n if (opts.parser) parser2 = opts.parser;\n if (parser2.parse) parser2 = parser2.parse;\n try {\n root2 = parser2(css, opts);\n } catch (error) {\n this.processed = true;\n this.error = error;\n }\n if (root2 && !root2[my]) {\n Container$1.rebuild(root2);\n }\n }\n this.result = new Result$2(processor2, root2, opts);\n this.helpers = { ...postcss$2, postcss: postcss$2, result: this.result };\n this.plugins = this.processor.plugins.map((plugin22) => {\n if (typeof plugin22 === \"object\" && plugin22.prepare) {\n return { ...plugin22, ...plugin22.prepare(this.result) };\n } else {\n return plugin22;\n }\n });\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n if (this.processed) return Promise.resolve(this.result);\n if (!this.processing) {\n this.processing = this.runAsync();\n }\n return this.processing;\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n getAsyncError() {\n throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n }\n handleError(error, node2) {\n let plugin22 = this.result.lastPlugin;\n try {\n if (node2) node2.addToError(error);\n this.error = error;\n if (error.name === \"CssSyntaxError\" && !error.plugin) {\n error.plugin = plugin22.postcssPlugin;\n error.setMessage();\n } else if (plugin22.postcssVersion) {\n if (process.env.NODE_ENV !== \"production\") {\n let pluginName = plugin22.postcssPlugin;\n let pluginVer = plugin22.postcssVersion;\n let runtimeVer = this.result.processor.version;\n let a2 = pluginVer.split(\".\");\n let b = runtimeVer.split(\".\");\n if (a2[0] !== b[0] || parseInt(a2[1]) > parseInt(b[1])) {\n console.error(\n \"Unknown error from PostCSS plugin. Your current PostCSS version is \" + runtimeVer + \", but \" + pluginName + \" uses \" + pluginVer + \". Perhaps this is the source of the error below.\"\n );\n }\n }\n }\n } catch (err) {\n if (console && console.error) console.error(err);\n }\n return error;\n }\n prepareVisitors() {\n this.listeners = {};\n let add = (plugin22, type, cb) => {\n if (!this.listeners[type]) this.listeners[type] = [];\n this.listeners[type].push([plugin22, cb]);\n };\n for (let plugin22 of this.plugins) {\n if (typeof plugin22 === \"object\") {\n for (let event in plugin22) {\n if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) {\n throw new Error(\n `Unknown event ${event} in ${plugin22.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`\n );\n }\n if (!NOT_VISITORS[event]) {\n if (typeof plugin22[event] === \"object\") {\n for (let filter in plugin22[event]) {\n if (filter === \"*\") {\n add(plugin22, event, plugin22[event][filter]);\n } else {\n add(\n plugin22,\n event + \"-\" + filter.toLowerCase(),\n plugin22[event][filter]\n );\n }\n }\n } else if (typeof plugin22[event] === \"function\") {\n add(plugin22, event, plugin22[event]);\n }\n }\n }\n }\n }\n this.hasListener = Object.keys(this.listeners).length > 0;\n }\n async runAsync() {\n this.plugin = 0;\n for (let i2 = 0; i2 < this.plugins.length; i2++) {\n let plugin22 = this.plugins[i2];\n let promise = this.runOnRoot(plugin22);\n if (isPromise(promise)) {\n try {\n await promise;\n } catch (error) {\n throw this.handleError(error);\n }\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean]) {\n root2[isClean] = true;\n let stack = [toStack(root2)];\n while (stack.length > 0) {\n let promise = this.visitTick(stack);\n if (isPromise(promise)) {\n try {\n await promise;\n } catch (e2) {\n let node2 = stack[stack.length - 1].node;\n throw this.handleError(e2, node2);\n }\n }\n }\n }\n if (this.listeners.OnceExit) {\n for (let [plugin22, visitor] of this.listeners.OnceExit) {\n this.result.lastPlugin = plugin22;\n try {\n if (root2.type === \"document\") {\n let roots = root2.nodes.map(\n (subRoot) => visitor(subRoot, this.helpers)\n );\n await Promise.all(roots);\n } else {\n await visitor(root2, this.helpers);\n }\n } catch (e2) {\n throw this.handleError(e2);\n }\n }\n }\n }\n this.processed = true;\n return this.stringify();\n }\n runOnRoot(plugin22) {\n this.result.lastPlugin = plugin22;\n try {\n if (typeof plugin22 === \"object\" && plugin22.Once) {\n if (this.result.root.type === \"document\") {\n let roots = this.result.root.nodes.map(\n (root2) => plugin22.Once(root2, this.helpers)\n );\n if (isPromise(roots[0])) {\n return Promise.all(roots);\n }\n return roots;\n }\n return plugin22.Once(this.result.root, this.helpers);\n } else if (typeof plugin22 === \"function\") {\n return plugin22(this.result.root, this.result);\n }\n } catch (error) {\n throw this.handleError(error);\n }\n }\n stringify() {\n if (this.error) throw this.error;\n if (this.stringified) return this.result;\n this.stringified = true;\n this.sync();\n let opts = this.result.opts;\n let str = stringify$2;\n if (opts.syntax) str = opts.syntax.stringify;\n if (opts.stringifier) str = opts.stringifier;\n if (str.stringify) str = str.stringify;\n let map = new MapGenerator$1(str, this.result.root, this.result.opts);\n let data = map.generate();\n this.result.css = data[0];\n this.result.map = data[1];\n return this.result;\n }\n sync() {\n if (this.error) throw this.error;\n if (this.processed) return this.result;\n this.processed = true;\n if (this.processing) {\n throw this.getAsyncError();\n }\n for (let plugin22 of this.plugins) {\n let promise = this.runOnRoot(plugin22);\n if (isPromise(promise)) {\n throw this.getAsyncError();\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean]) {\n root2[isClean] = true;\n this.walkSync(root2);\n }\n if (this.listeners.OnceExit) {\n if (root2.type === \"document\") {\n for (let subRoot of root2.nodes) {\n this.visitSync(this.listeners.OnceExit, subRoot);\n }\n } else {\n this.visitSync(this.listeners.OnceExit, root2);\n }\n }\n }\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this.opts)) {\n warnOnce$1(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this.css;\n }\n visitSync(visitors, node2) {\n for (let [plugin22, visitor] of visitors) {\n this.result.lastPlugin = plugin22;\n let promise;\n try {\n promise = visitor(node2, this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2.proxyOf);\n }\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n return true;\n }\n if (isPromise(promise)) {\n throw this.getAsyncError();\n }\n }\n }\n visitTick(stack) {\n let visit2 = stack[stack.length - 1];\n let { node: node2, visitors } = visit2;\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n stack.pop();\n return;\n }\n if (visitors.length > 0 && visit2.visitorIndex < visitors.length) {\n let [plugin22, visitor] = visitors[visit2.visitorIndex];\n visit2.visitorIndex += 1;\n if (visit2.visitorIndex === visitors.length) {\n visit2.visitors = [];\n visit2.visitorIndex = 0;\n }\n this.result.lastPlugin = plugin22;\n try {\n return visitor(node2.toProxy(), this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2);\n }\n }\n if (visit2.iterator !== 0) {\n let iterator = visit2.iterator;\n let child;\n while (child = node2.nodes[node2.indexes[iterator]]) {\n node2.indexes[iterator] += 1;\n if (!child[isClean]) {\n child[isClean] = true;\n stack.push(toStack(child));\n return;\n }\n }\n visit2.iterator = 0;\n delete node2.indexes[iterator];\n }\n let events = visit2.events;\n while (visit2.eventIndex < events.length) {\n let event = events[visit2.eventIndex];\n visit2.eventIndex += 1;\n if (event === CHILDREN) {\n if (node2.nodes && node2.nodes.length) {\n node2[isClean] = true;\n visit2.iterator = node2.getIterator();\n }\n return;\n } else if (this.listeners[event]) {\n visit2.visitors = this.listeners[event];\n return;\n }\n }\n stack.pop();\n }\n walkSync(node2) {\n node2[isClean] = true;\n let events = getEvents(node2);\n for (let event of events) {\n if (event === CHILDREN) {\n if (node2.nodes) {\n node2.each((child) => {\n if (!child[isClean]) this.walkSync(child);\n });\n }\n } else {\n let visitors = this.listeners[event];\n if (visitors) {\n if (this.visitSync(visitors, node2.toProxy())) return;\n }\n }\n }\n }\n warnings() {\n return this.sync().warnings();\n }\n get content() {\n return this.stringify().content;\n }\n get css() {\n return this.stringify().css;\n }\n get map() {\n return this.stringify().map;\n }\n get messages() {\n return this.sync().messages;\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n return this.sync().root;\n }\n get [Symbol.toStringTag]() {\n return \"LazyResult\";\n }\n};\nLazyResult$2.registerPostcss = (dependant) => {\n postcss$2 = dependant;\n};\nvar lazyResult = LazyResult$2;\nLazyResult$2.default = LazyResult$2;\nRoot$3.registerLazyResult(LazyResult$2);\nDocument$2.registerLazyResult(LazyResult$2);\nlet MapGenerator22 = mapGenerator;\nlet stringify$1 = stringify_1;\nlet warnOnce22 = warnOnce$2;\nlet parse$1 = parse_1;\nconst Result$1 = result;\nlet NoWorkResult$1 = class NoWorkResult2 {\n constructor(processor2, css, opts) {\n css = css.toString();\n this.stringified = false;\n this._processor = processor2;\n this._css = css;\n this._opts = opts;\n this._map = void 0;\n let root2;\n let str = stringify$1;\n this.result = new Result$1(this._processor, root2, this._opts);\n this.result.css = css;\n let self = this;\n Object.defineProperty(this.result, \"root\", {\n get() {\n return self.root;\n }\n });\n let map = new MapGenerator22(str, root2, this._opts, css);\n if (map.isMap()) {\n let [generatedCSS, generatedMap] = map.generate();\n if (generatedCSS) {\n this.result.css = generatedCSS;\n }\n if (generatedMap) {\n this.result.map = generatedMap;\n }\n } else {\n map.clearAnnotation();\n this.result.css = map.css;\n }\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n return Promise.resolve(this.result);\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n sync() {\n if (this.error) throw this.error;\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this._opts)) {\n warnOnce22(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this._css;\n }\n warnings() {\n return [];\n }\n get content() {\n return this.result.css;\n }\n get css() {\n return this.result.css;\n }\n get map() {\n return this.result.map;\n }\n get messages() {\n return [];\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n if (this._root) {\n return this._root;\n }\n let root2;\n let parser2 = parse$1;\n try {\n root2 = parser2(this._css, this._opts);\n } catch (error) {\n this.error = error;\n }\n if (this.error) {\n throw this.error;\n } else {\n this._root = root2;\n return root2;\n }\n }\n get [Symbol.toStringTag]() {\n return \"NoWorkResult\";\n }\n};\nvar noWorkResult = NoWorkResult$1;\nNoWorkResult$1.default = NoWorkResult$1;\nlet NoWorkResult22 = noWorkResult;\nlet LazyResult$1 = lazyResult;\nlet Document$1 = document$1;\nlet Root$2 = root;\nlet Processor$1 = class Processor2 {\n constructor(plugins = []) {\n this.version = \"8.4.38\";\n this.plugins = this.normalize(plugins);\n }\n normalize(plugins) {\n let normalized = [];\n for (let i2 of plugins) {\n if (i2.postcss === true) {\n i2 = i2();\n } else if (i2.postcss) {\n i2 = i2.postcss;\n }\n if (typeof i2 === \"object\" && Array.isArray(i2.plugins)) {\n normalized = normalized.concat(i2.plugins);\n } else if (typeof i2 === \"object\" && i2.postcssPlugin) {\n normalized.push(i2);\n } else if (typeof i2 === \"function\") {\n normalized.push(i2);\n } else if (typeof i2 === \"object\" && (i2.parse || i2.stringify)) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error(\n \"PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.\"\n );\n }\n } else {\n throw new Error(i2 + \" is not a PostCSS plugin\");\n }\n }\n return normalized;\n }\n process(css, opts = {}) {\n if (!this.plugins.length && !opts.parser && !opts.stringifier && !opts.syntax) {\n return new NoWorkResult22(this, css, opts);\n } else {\n return new LazyResult$1(this, css, opts);\n }\n }\n use(plugin22) {\n this.plugins = this.plugins.concat(this.normalize([plugin22]));\n return this;\n }\n};\nvar processor = Processor$1;\nProcessor$1.default = Processor$1;\nRoot$2.registerProcessor(Processor$1);\nDocument$1.registerProcessor(Processor$1);\nlet Declaration$1 = declaration;\nlet PreviousMap22 = previousMap;\nlet Comment$1 = comment;\nlet AtRule$1 = atRule;\nlet Input$1 = input;\nlet Root$1 = root;\nlet Rule$1 = rule;\nfunction fromJSON$1(json, inputs) {\n if (Array.isArray(json)) return json.map((n2) => fromJSON$1(n2));\n let { inputs: ownInputs, ...defaults } = json;\n if (ownInputs) {\n inputs = [];\n for (let input2 of ownInputs) {\n let inputHydrated = { ...input2, __proto__: Input$1.prototype };\n if (inputHydrated.map) {\n inputHydrated.map = {\n ...inputHydrated.map,\n __proto__: PreviousMap22.prototype\n };\n }\n inputs.push(inputHydrated);\n }\n }\n if (defaults.nodes) {\n defaults.nodes = json.nodes.map((n2) => fromJSON$1(n2, inputs));\n }\n if (defaults.source) {\n let { inputId, ...source } = defaults.source;\n defaults.source = source;\n if (inputId != null) {\n defaults.source.input = inputs[inputId];\n }\n }\n if (defaults.type === \"root\") {\n return new Root$1(defaults);\n } else if (defaults.type === \"decl\") {\n return new Declaration$1(defaults);\n } else if (defaults.type === \"rule\") {\n return new Rule$1(defaults);\n } else if (defaults.type === \"comment\") {\n return new Comment$1(defaults);\n } else if (defaults.type === \"atrule\") {\n return new AtRule$1(defaults);\n } else {\n throw new Error(\"Unknown node type: \" + json.type);\n }\n}\nvar fromJSON_1 = fromJSON$1;\nfromJSON$1.default = fromJSON$1;\nlet CssSyntaxError22 = cssSyntaxError;\nlet Declaration22 = declaration;\nlet LazyResult22 = lazyResult;\nlet Container22 = container;\nlet Processor22 = processor;\nlet stringify = stringify_1;\nlet fromJSON = fromJSON_1;\nlet Document222 = document$1;\nlet Warning22 = warning;\nlet Comment22 = comment;\nlet AtRule22 = atRule;\nlet Result22 = result;\nlet Input22 = input;\nlet parse = parse_1;\nlet list = list_1;\nlet Rule22 = rule;\nlet Root22 = root;\nlet Node22 = node;\nfunction postcss(...plugins) {\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0];\n }\n return new Processor22(plugins);\n}\npostcss.plugin = function plugin2(name, initializer) {\n let warningPrinted = false;\n function creator(...args) {\n if (console && console.warn && !warningPrinted) {\n warningPrinted = true;\n console.warn(\n name + \": postcss.plugin was deprecated. Migration guide:\\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration\"\n );\n if (process.env.LANG && process.env.LANG.startsWith(\"cn\")) {\n console.warn(\n name + \": 里面 postcss.plugin 被弃用. 迁移指南:\\nhttps://www.w3ctech.com/topic/2226\"\n );\n }\n }\n let transformer = initializer(...args);\n transformer.postcssPlugin = name;\n transformer.postcssVersion = new Processor22().version;\n return transformer;\n }\n let cache;\n Object.defineProperty(creator, \"postcss\", {\n get() {\n if (!cache) cache = creator();\n return cache;\n }\n });\n creator.process = function(css, processOpts, pluginOpts) {\n return postcss([creator(pluginOpts)]).process(css, processOpts);\n };\n return creator;\n};\npostcss.stringify = stringify;\npostcss.parse = parse;\npostcss.fromJSON = fromJSON;\npostcss.list = list;\npostcss.comment = (defaults) => new Comment22(defaults);\npostcss.atRule = (defaults) => new AtRule22(defaults);\npostcss.decl = (defaults) => new Declaration22(defaults);\npostcss.rule = (defaults) => new Rule22(defaults);\npostcss.root = (defaults) => new Root22(defaults);\npostcss.document = (defaults) => new Document222(defaults);\npostcss.CssSyntaxError = CssSyntaxError22;\npostcss.Declaration = Declaration22;\npostcss.Container = Container22;\npostcss.Processor = Processor22;\npostcss.Document = Document222;\npostcss.Comment = Comment22;\npostcss.Warning = Warning22;\npostcss.AtRule = AtRule22;\npostcss.Result = Result22;\npostcss.Input = Input22;\npostcss.Rule = Rule22;\npostcss.Root = Root22;\npostcss.Node = Node22;\nLazyResult22.registerPostcss(postcss);\nvar postcss_1 = postcss;\npostcss.default = postcss;\nconst postcss$1 = /* @__PURE__ */ getDefaultExportFromCjs(postcss_1);\npostcss$1.stringify;\npostcss$1.fromJSON;\npostcss$1.plugin;\npostcss$1.parse;\npostcss$1.list;\npostcss$1.document;\npostcss$1.comment;\npostcss$1.atRule;\npostcss$1.rule;\npostcss$1.decl;\npostcss$1.root;\npostcss$1.CssSyntaxError;\npostcss$1.Declaration;\npostcss$1.Container;\npostcss$1.Processor;\npostcss$1.Document;\npostcss$1.Comment;\npostcss$1.Warning;\npostcss$1.AtRule;\npostcss$1.Result;\npostcss$1.Input;\npostcss$1.Rule;\npostcss$1.Root;\npostcss$1.Node;\nclass BaseRRNode {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any\n constructor(..._args) {\n __publicField2(this, \"parentElement\", null);\n __publicField2(this, \"parentNode\", null);\n __publicField2(this, \"ownerDocument\");\n __publicField2(this, \"firstChild\", null);\n __publicField2(this, \"lastChild\", null);\n __publicField2(this, \"previousSibling\", null);\n __publicField2(this, \"nextSibling\", null);\n __publicField2(this, \"ELEMENT_NODE\", 1);\n __publicField2(this, \"TEXT_NODE\", 3);\n __publicField2(this, \"nodeType\");\n __publicField2(this, \"nodeName\");\n __publicField2(this, \"RRNodeType\");\n }\n get childNodes() {\n const childNodes2 = [];\n let childIterator = this.firstChild;\n while (childIterator) {\n childNodes2.push(childIterator);\n childIterator = childIterator.nextSibling;\n }\n return childNodes2;\n }\n contains(node2) {\n if (!(node2 instanceof BaseRRNode)) return false;\n else if (node2.ownerDocument !== this.ownerDocument) return false;\n else if (node2 === this) return true;\n while (node2.parentNode) {\n if (node2.parentNode === this) return true;\n node2 = node2.parentNode;\n }\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n appendChild(_newChild) {\n throw new Error(\n `RRDomException: Failed to execute 'appendChild' on 'RRNode': This RRNode type does not support this method.`\n );\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n insertBefore(_newChild, _refChild) {\n throw new Error(\n `RRDomException: Failed to execute 'insertBefore' on 'RRNode': This RRNode type does not support this method.`\n );\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n removeChild(_node) {\n throw new Error(\n `RRDomException: Failed to execute 'removeChild' on 'RRNode': This RRNode type does not support this method.`\n );\n }\n toString() {\n return \"RRNode\";\n }\n}\nconst testableAccessors = {\n Node: [\"childNodes\", \"parentNode\", \"parentElement\", \"textContent\"],\n ShadowRoot: [\"host\", \"styleSheets\"],\n Element: [\"shadowRoot\", \"querySelector\", \"querySelectorAll\"],\n MutationObserver: []\n};\nconst testableMethods = {\n Node: [\"contains\", \"getRootNode\"],\n ShadowRoot: [\"getSelection\"],\n Element: [],\n MutationObserver: [\"constructor\"]\n};\nconst untaintedBasePrototype = {};\nconst isAngularZonePresent = () => {\n return !!globalThis.Zone;\n};\nfunction getUntaintedPrototype(key) {\n if (untaintedBasePrototype[key])\n return untaintedBasePrototype[key];\n const defaultObj = globalThis[key];\n const defaultPrototype = defaultObj.prototype;\n const accessorNames = key in testableAccessors ? testableAccessors[key] : void 0;\n const isUntaintedAccessors = Boolean(\n accessorNames && // @ts-expect-error 2345\n accessorNames.every(\n (accessor) => {\n var _a2, _b;\n return Boolean(\n (_b = (_a2 = Object.getOwnPropertyDescriptor(defaultPrototype, accessor)) == null ? void 0 : _a2.get) == null ? void 0 : _b.toString().includes(\"[native code]\")\n );\n }\n )\n );\n const methodNames = key in testableMethods ? testableMethods[key] : void 0;\n const isUntaintedMethods = Boolean(\n methodNames && methodNames.every(\n // @ts-expect-error 2345\n (method) => {\n var _a2;\n return typeof defaultPrototype[method] === \"function\" && ((_a2 = defaultPrototype[method]) == null ? void 0 : _a2.toString().includes(\"[native code]\"));\n }\n )\n );\n if (isUntaintedAccessors && isUntaintedMethods && !isAngularZonePresent()) {\n untaintedBasePrototype[key] = defaultObj.prototype;\n return defaultObj.prototype;\n }\n try {\n const iframeEl = document.createElement(\"iframe\");\n document.body.appendChild(iframeEl);\n const win = iframeEl.contentWindow;\n if (!win) return defaultObj.prototype;\n const untaintedObject = win[key].prototype;\n document.body.removeChild(iframeEl);\n if (!untaintedObject) return defaultPrototype;\n return untaintedBasePrototype[key] = untaintedObject;\n } catch {\n return defaultPrototype;\n }\n}\nconst untaintedAccessorCache = {};\nfunction getUntaintedAccessor(key, instance, accessor) {\n var _a2;\n const cacheKey = `${key}.${String(accessor)}`;\n if (untaintedAccessorCache[cacheKey])\n return untaintedAccessorCache[cacheKey].call(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype(key);\n const untaintedAccessor = (_a2 = Object.getOwnPropertyDescriptor(\n untaintedPrototype,\n accessor\n )) == null ? void 0 : _a2.get;\n if (!untaintedAccessor) return instance[accessor];\n untaintedAccessorCache[cacheKey] = untaintedAccessor;\n return untaintedAccessor.call(instance);\n}\nconst untaintedMethodCache = {};\nfunction getUntaintedMethod(key, instance, method) {\n const cacheKey = `${key}.${String(method)}`;\n if (untaintedMethodCache[cacheKey])\n return untaintedMethodCache[cacheKey].bind(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype(key);\n const untaintedMethod = untaintedPrototype[method];\n if (typeof untaintedMethod !== \"function\") return instance[method];\n untaintedMethodCache[cacheKey] = untaintedMethod;\n return untaintedMethod.bind(instance);\n}\nfunction childNodes(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"childNodes\");\n}\nfunction parentNode(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"parentNode\");\n}\nfunction parentElement(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"parentElement\");\n}\nfunction textContent(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"textContent\");\n}\nfunction contains(n2, other) {\n return getUntaintedMethod(\"Node\", n2, \"contains\")(other);\n}\nfunction getRootNode(n2) {\n return getUntaintedMethod(\"Node\", n2, \"getRootNode\")();\n}\nfunction host(n2) {\n if (!n2 || !(\"host\" in n2)) return null;\n return getUntaintedAccessor(\"ShadowRoot\", n2, \"host\");\n}\nfunction styleSheets(n2) {\n return n2.styleSheets;\n}\nfunction shadowRoot(n2) {\n if (!n2 || !(\"shadowRoot\" in n2)) return null;\n return getUntaintedAccessor(\"Element\", n2, \"shadowRoot\");\n}\nfunction querySelector(n2, selectors) {\n return getUntaintedAccessor(\"Element\", n2, \"querySelector\")(selectors);\n}\nfunction querySelectorAll(n2, selectors) {\n return getUntaintedAccessor(\"Element\", n2, \"querySelectorAll\")(selectors);\n}\nfunction mutationObserverCtor() {\n return getUntaintedPrototype(\"MutationObserver\").constructor;\n}\nconst index = {\n childNodes,\n parentNode,\n parentElement,\n textContent,\n contains,\n getRootNode,\n host,\n styleSheets,\n shadowRoot,\n querySelector,\n querySelectorAll,\n mutationObserver: mutationObserverCtor\n};\nfunction on(type, fn, target = document) {\n const options = { capture: true, passive: true };\n target.addEventListener(type, fn, options);\n return () => target.removeEventListener(type, fn, options);\n}\nconst DEPARTED_MIRROR_ACCESS_WARNING = \"Please stop import mirror directly. Instead of that,\\r\\nnow you can use replayer.getMirror() to access the mirror instance of a replayer,\\r\\nor you can use record.mirror to access the mirror instance during recording.\";\nlet _mirror = {\n map: {},\n getId() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return -1;\n },\n getNode() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return null;\n },\n removeNodeFromMap() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n },\n has() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return false;\n },\n reset() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n }\n};\nif (typeof window !== \"undefined\" && window.Proxy && window.Reflect) {\n _mirror = new Proxy(_mirror, {\n get(target, prop, receiver) {\n if (prop === \"map\") {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n }\n return Reflect.get(target, prop, receiver);\n }\n });\n}\nfunction throttle(func, wait, options = {}) {\n let timeout = null;\n let previous = 0;\n return function(...args) {\n const now = Date.now();\n if (!previous && options.leading === false) {\n previous = now;\n }\n const remaining = wait - (now - previous);\n const context = this;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n func.apply(context, args);\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(() => {\n previous = options.leading === false ? 0 : Date.now();\n timeout = null;\n func.apply(context, args);\n }, remaining);\n }\n };\n}\nfunction hookSetter(target, key, d, isRevoked, win = window) {\n const original = win.Object.getOwnPropertyDescriptor(target, key);\n win.Object.defineProperty(\n target,\n key,\n isRevoked ? d : {\n set(value) {\n setTimeout(() => {\n d.set.call(this, value);\n }, 0);\n if (original && original.set) {\n original.set.call(this, value);\n }\n }\n }\n );\n return () => hookSetter(target, key, original || {}, true);\n}\nfunction patch(source, name, replacement) {\n try {\n if (!(name in source)) {\n return () => {\n };\n }\n const original = source[name];\n const wrapped = replacement(original);\n if (typeof wrapped === \"function\") {\n wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __rrweb_original__: {\n enumerable: false,\n value: original\n }\n });\n }\n source[name] = wrapped;\n return () => {\n source[name] = original;\n };\n } catch {\n return () => {\n };\n }\n}\nlet nowTimestamp = Date.now;\nif (!/* @__PURE__ */ /[1-9][0-9]{12}/.test(Date.now().toString())) {\n nowTimestamp = () => (/* @__PURE__ */ new Date()).getTime();\n}\nfunction getWindowScroll(win) {\n var _a2, _b, _c, _d;\n const doc = win.document;\n return {\n left: doc.scrollingElement ? doc.scrollingElement.scrollLeft : win.pageXOffset !== void 0 ? win.pageXOffset : doc.documentElement.scrollLeft || (doc == null ? void 0 : doc.body) && ((_a2 = index.parentElement(doc.body)) == null ? void 0 : _a2.scrollLeft) || ((_b = doc == null ? void 0 : doc.body) == null ? void 0 : _b.scrollLeft) || 0,\n top: doc.scrollingElement ? doc.scrollingElement.scrollTop : win.pageYOffset !== void 0 ? win.pageYOffset : (doc == null ? void 0 : doc.documentElement.scrollTop) || (doc == null ? void 0 : doc.body) && ((_c = index.parentElement(doc.body)) == null ? void 0 : _c.scrollTop) || ((_d = doc == null ? void 0 : doc.body) == null ? void 0 : _d.scrollTop) || 0\n };\n}\nfunction getWindowHeight() {\n return window.innerHeight || document.documentElement && document.documentElement.clientHeight || document.body && document.body.clientHeight;\n}\nfunction getWindowWidth() {\n return window.innerWidth || document.documentElement && document.documentElement.clientWidth || document.body && document.body.clientWidth;\n}\nfunction closestElementOfNode(node2) {\n if (!node2) {\n return null;\n }\n const el = node2.nodeType === node2.ELEMENT_NODE ? node2 : index.parentElement(node2);\n return el;\n}\nfunction isBlocked(node2, blockClass, blockSelector, checkAncestors) {\n if (!node2) {\n return false;\n }\n const el = closestElementOfNode(node2);\n if (!el) {\n return false;\n }\n try {\n if (typeof blockClass === \"string\") {\n if (el.classList.contains(blockClass)) return true;\n if (checkAncestors && el.closest(\".\" + blockClass) !== null) return true;\n } else {\n if (classMatchesRegex(el, blockClass, checkAncestors)) return true;\n }\n } catch (e2) {\n }\n if (blockSelector) {\n if (el.matches(blockSelector)) return true;\n if (checkAncestors && el.closest(blockSelector) !== null) return true;\n }\n return false;\n}\nfunction isSerialized(n2, mirror2) {\n return mirror2.getId(n2) !== -1;\n}\nfunction isIgnored(n2, mirror2, slimDOMOptions) {\n if (n2.tagName === \"TITLE\" && slimDOMOptions.headTitleMutations) {\n return true;\n }\n return mirror2.getId(n2) === IGNORED_NODE;\n}\nfunction isAncestorRemoved(target, mirror2) {\n if (isShadowRoot(target)) {\n return false;\n }\n const id = mirror2.getId(target);\n if (!mirror2.has(id)) {\n return true;\n }\n const parent = index.parentNode(target);\n if (parent && parent.nodeType === target.DOCUMENT_NODE) {\n return false;\n }\n if (!parent) {\n return true;\n }\n return isAncestorRemoved(parent, mirror2);\n}\nfunction legacy_isTouchEvent(event) {\n return Boolean(event.changedTouches);\n}\nfunction polyfill$1(win = window) {\n if (\"NodeList\" in win && !win.NodeList.prototype.forEach) {\n win.NodeList.prototype.forEach = Array.prototype.forEach;\n }\n if (\"DOMTokenList\" in win && !win.DOMTokenList.prototype.forEach) {\n win.DOMTokenList.prototype.forEach = Array.prototype.forEach;\n }\n}\nfunction isSerializedIframe(n2, mirror2) {\n return Boolean(n2.nodeName === \"IFRAME\" && mirror2.getMeta(n2));\n}\nfunction isSerializedStylesheet(n2, mirror2) {\n return Boolean(\n n2.nodeName === \"LINK\" && n2.nodeType === n2.ELEMENT_NODE && n2.getAttribute && n2.getAttribute(\"rel\") === \"stylesheet\" && mirror2.getMeta(n2)\n );\n}\nfunction hasShadowRoot(n2) {\n if (!n2) return false;\n if (n2 instanceof BaseRRNode && \"shadowRoot\" in n2) {\n return Boolean(n2.shadowRoot);\n }\n return Boolean(index.shadowRoot(n2));\n}\nclass StyleSheetMirror {\n constructor() {\n __publicField(this, \"id\", 1);\n __publicField(this, \"styleIDMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"idStyleMap\", /* @__PURE__ */ new Map());\n }\n getId(stylesheet) {\n return this.styleIDMap.get(stylesheet) ?? -1;\n }\n has(stylesheet) {\n return this.styleIDMap.has(stylesheet);\n }\n /**\n * @returns If the stylesheet is in the mirror, returns the id of the stylesheet. If not, return the new assigned id.\n */\n add(stylesheet, id) {\n if (this.has(stylesheet)) return this.getId(stylesheet);\n let newId;\n if (id === void 0) {\n newId = this.id++;\n } else newId = id;\n this.styleIDMap.set(stylesheet, newId);\n this.idStyleMap.set(newId, stylesheet);\n return newId;\n }\n getStyle(id) {\n return this.idStyleMap.get(id) || null;\n }\n reset() {\n this.styleIDMap = /* @__PURE__ */ new WeakMap();\n this.idStyleMap = /* @__PURE__ */ new Map();\n this.id = 1;\n }\n generateId() {\n return this.id++;\n }\n}\nfunction getShadowHost(n2) {\n var _a2;\n let shadowHost = null;\n if (\"getRootNode\" in n2 && ((_a2 = index.getRootNode(n2)) == null ? void 0 : _a2.nodeType) === Node.DOCUMENT_FRAGMENT_NODE && index.host(index.getRootNode(n2)))\n shadowHost = index.host(index.getRootNode(n2));\n return shadowHost;\n}\nfunction getRootShadowHost(n2) {\n let rootShadowHost = n2;\n let shadowHost;\n while (shadowHost = getShadowHost(rootShadowHost))\n rootShadowHost = shadowHost;\n return rootShadowHost;\n}\nfunction shadowHostInDom(n2) {\n const doc = n2.ownerDocument;\n if (!doc) return false;\n const shadowHost = getRootShadowHost(n2);\n return index.contains(doc, shadowHost);\n}\nfunction inDom(n2) {\n const doc = n2.ownerDocument;\n if (!doc) return false;\n return index.contains(doc, n2) || shadowHostInDom(n2);\n}\nvar EventType = /* @__PURE__ */ ((EventType2) => {\n EventType2[EventType2[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n EventType2[EventType2[\"Load\"] = 1] = \"Load\";\n EventType2[EventType2[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n EventType2[EventType2[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n EventType2[EventType2[\"Meta\"] = 4] = \"Meta\";\n EventType2[EventType2[\"Custom\"] = 5] = \"Custom\";\n EventType2[EventType2[\"Plugin\"] = 6] = \"Plugin\";\n return EventType2;\n})(EventType || {});\nvar IncrementalSource = /* @__PURE__ */ ((IncrementalSource2) => {\n IncrementalSource2[IncrementalSource2[\"Mutation\"] = 0] = \"Mutation\";\n IncrementalSource2[IncrementalSource2[\"MouseMove\"] = 1] = \"MouseMove\";\n IncrementalSource2[IncrementalSource2[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n IncrementalSource2[IncrementalSource2[\"Scroll\"] = 3] = \"Scroll\";\n IncrementalSource2[IncrementalSource2[\"ViewportResize\"] = 4] = \"ViewportResize\";\n IncrementalSource2[IncrementalSource2[\"Input\"] = 5] = \"Input\";\n IncrementalSource2[IncrementalSource2[\"TouchMove\"] = 6] = \"TouchMove\";\n IncrementalSource2[IncrementalSource2[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n IncrementalSource2[IncrementalSource2[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n IncrementalSource2[IncrementalSource2[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n IncrementalSource2[IncrementalSource2[\"Font\"] = 10] = \"Font\";\n IncrementalSource2[IncrementalSource2[\"Log\"] = 11] = \"Log\";\n IncrementalSource2[IncrementalSource2[\"Drag\"] = 12] = \"Drag\";\n IncrementalSource2[IncrementalSource2[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n IncrementalSource2[IncrementalSource2[\"Selection\"] = 14] = \"Selection\";\n IncrementalSource2[IncrementalSource2[\"AdoptedStyleSheet\"] = 15] = \"AdoptedStyleSheet\";\n IncrementalSource2[IncrementalSource2[\"CustomElement\"] = 16] = \"CustomElement\";\n return IncrementalSource2;\n})(IncrementalSource || {});\nvar MouseInteractions = /* @__PURE__ */ ((MouseInteractions2) => {\n MouseInteractions2[MouseInteractions2[\"MouseUp\"] = 0] = \"MouseUp\";\n MouseInteractions2[MouseInteractions2[\"MouseDown\"] = 1] = \"MouseDown\";\n MouseInteractions2[MouseInteractions2[\"Click\"] = 2] = \"Click\";\n MouseInteractions2[MouseInteractions2[\"ContextMenu\"] = 3] = \"ContextMenu\";\n MouseInteractions2[MouseInteractions2[\"DblClick\"] = 4] = \"DblClick\";\n MouseInteractions2[MouseInteractions2[\"Focus\"] = 5] = \"Focus\";\n MouseInteractions2[MouseInteractions2[\"Blur\"] = 6] = \"Blur\";\n MouseInteractions2[MouseInteractions2[\"TouchStart\"] = 7] = \"TouchStart\";\n MouseInteractions2[MouseInteractions2[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n MouseInteractions2[MouseInteractions2[\"TouchEnd\"] = 9] = \"TouchEnd\";\n MouseInteractions2[MouseInteractions2[\"TouchCancel\"] = 10] = \"TouchCancel\";\n return MouseInteractions2;\n})(MouseInteractions || {});\nvar PointerTypes = /* @__PURE__ */ ((PointerTypes2) => {\n PointerTypes2[PointerTypes2[\"Mouse\"] = 0] = \"Mouse\";\n PointerTypes2[PointerTypes2[\"Pen\"] = 1] = \"Pen\";\n PointerTypes2[PointerTypes2[\"Touch\"] = 2] = \"Touch\";\n return PointerTypes2;\n})(PointerTypes || {});\nvar CanvasContext = /* @__PURE__ */ ((CanvasContext2) => {\n CanvasContext2[CanvasContext2[\"2D\"] = 0] = \"2D\";\n CanvasContext2[CanvasContext2[\"WebGL\"] = 1] = \"WebGL\";\n CanvasContext2[CanvasContext2[\"WebGL2\"] = 2] = \"WebGL2\";\n return CanvasContext2;\n})(CanvasContext || {});\nvar MediaInteractions = /* @__PURE__ */ ((MediaInteractions2) => {\n MediaInteractions2[MediaInteractions2[\"Play\"] = 0] = \"Play\";\n MediaInteractions2[MediaInteractions2[\"Pause\"] = 1] = \"Pause\";\n MediaInteractions2[MediaInteractions2[\"Seeked\"] = 2] = \"Seeked\";\n MediaInteractions2[MediaInteractions2[\"VolumeChange\"] = 3] = \"VolumeChange\";\n MediaInteractions2[MediaInteractions2[\"RateChange\"] = 4] = \"RateChange\";\n return MediaInteractions2;\n})(MediaInteractions || {});\nvar NodeType = /* @__PURE__ */ ((NodeType2) => {\n NodeType2[NodeType2[\"Document\"] = 0] = \"Document\";\n NodeType2[NodeType2[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType2[NodeType2[\"Element\"] = 2] = \"Element\";\n NodeType2[NodeType2[\"Text\"] = 3] = \"Text\";\n NodeType2[NodeType2[\"CDATA\"] = 4] = \"CDATA\";\n NodeType2[NodeType2[\"Comment\"] = 5] = \"Comment\";\n return NodeType2;\n})(NodeType || {});\nfunction isNodeInLinkedList(n2) {\n return \"__ln\" in n2;\n}\nclass DoubleLinkedList {\n constructor() {\n __publicField(this, \"length\", 0);\n __publicField(this, \"head\", null);\n __publicField(this, \"tail\", null);\n }\n get(position) {\n if (position >= this.length) {\n throw new Error(\"Position outside of list range\");\n }\n let current = this.head;\n for (let index2 = 0; index2 < position; index2++) {\n current = (current == null ? void 0 : current.next) || null;\n }\n return current;\n }\n addNode(n2) {\n const node2 = {\n value: n2,\n previous: null,\n next: null\n };\n n2.__ln = node2;\n if (n2.previousSibling && isNodeInLinkedList(n2.previousSibling)) {\n const current = n2.previousSibling.__ln.next;\n node2.next = current;\n node2.previous = n2.previousSibling.__ln;\n n2.previousSibling.__ln.next = node2;\n if (current) {\n current.previous = node2;\n }\n } else if (n2.nextSibling && isNodeInLinkedList(n2.nextSibling) && n2.nextSibling.__ln.previous) {\n const current = n2.nextSibling.__ln.previous;\n node2.previous = current;\n node2.next = n2.nextSibling.__ln;\n n2.nextSibling.__ln.previous = node2;\n if (current) {\n current.next = node2;\n }\n } else {\n if (this.head) {\n this.head.previous = node2;\n }\n node2.next = this.head;\n this.head = node2;\n }\n if (node2.next === null) {\n this.tail = node2;\n }\n this.length++;\n }\n removeNode(n2) {\n const current = n2.__ln;\n if (!this.head) {\n return;\n }\n if (!current.previous) {\n this.head = current.next;\n if (this.head) {\n this.head.previous = null;\n } else {\n this.tail = null;\n }\n } else {\n current.previous.next = current.next;\n if (current.next) {\n current.next.previous = current.previous;\n } else {\n this.tail = current.previous;\n }\n }\n if (n2.__ln) {\n delete n2.__ln;\n }\n this.length--;\n }\n}\nconst moveKey = (id, parentId) => `${id}@${parentId}`;\nclass MutationBuffer {\n constructor() {\n __publicField(this, \"frozen\", false);\n __publicField(this, \"locked\", false);\n __publicField(this, \"texts\", []);\n __publicField(this, \"attributes\", []);\n __publicField(this, \"attributeMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"removes\", []);\n __publicField(this, \"mapRemoves\", []);\n __publicField(this, \"movedMap\", {});\n __publicField(this, \"addedSet\", /* @__PURE__ */ new Set());\n __publicField(this, \"movedSet\", /* @__PURE__ */ new Set());\n __publicField(this, \"droppedSet\", /* @__PURE__ */ new Set());\n __publicField(this, \"removesSubTreeCache\", /* @__PURE__ */ new Set());\n __publicField(this, \"mutationCb\");\n __publicField(this, \"blockClass\");\n __publicField(this, \"blockSelector\");\n __publicField(this, \"maskTextClass\");\n __publicField(this, \"maskTextSelector\");\n __publicField(this, \"inlineStylesheet\");\n __publicField(this, \"maskInputOptions\");\n __publicField(this, \"maskTextFn\");\n __publicField(this, \"maskInputFn\");\n __publicField(this, \"keepIframeSrcFn\");\n __publicField(this, \"recordCanvas\");\n __publicField(this, \"inlineImages\");\n __publicField(this, \"slimDOMOptions\");\n __publicField(this, \"dataURLOptions\");\n __publicField(this, \"doc\");\n __publicField(this, \"mirror\");\n __publicField(this, \"iframeManager\");\n __publicField(this, \"stylesheetManager\");\n __publicField(this, \"shadowDomManager\");\n __publicField(this, \"canvasManager\");\n __publicField(this, \"processedNodeManager\");\n __publicField(this, \"unattachedDoc\");\n __publicField(this, \"processMutations\", (mutations) => {\n mutations.forEach(this.processMutation);\n this.emit();\n });\n __publicField(this, \"emit\", () => {\n if (this.frozen || this.locked) {\n return;\n }\n const adds = [];\n const addedIds = /* @__PURE__ */ new Set();\n const addList = new DoubleLinkedList();\n const getNextId = (n2) => {\n let ns = n2;\n let nextId = IGNORED_NODE;\n while (nextId === IGNORED_NODE) {\n ns = ns && ns.nextSibling;\n nextId = ns && this.mirror.getId(ns);\n }\n return nextId;\n };\n const pushAdd = (n2) => {\n const parent = index.parentNode(n2);\n if (!parent || !inDom(n2)) {\n return;\n }\n let cssCaptured = false;\n if (n2.nodeType === Node.TEXT_NODE) {\n const parentTag = parent.tagName;\n if (parentTag === \"TEXTAREA\") {\n return;\n } else if (parentTag === \"STYLE\" && this.addedSet.has(parent)) {\n cssCaptured = true;\n }\n }\n const parentId = isShadowRoot(parent) ? this.mirror.getId(getShadowHost(n2)) : this.mirror.getId(parent);\n const nextId = getNextId(n2);\n if (parentId === -1 || nextId === -1) {\n return addList.addNode(n2);\n }\n const sn = serializeNodeWithId(n2, {\n doc: this.doc,\n mirror: this.mirror,\n blockClass: this.blockClass,\n blockSelector: this.blockSelector,\n maskTextClass: this.maskTextClass,\n maskTextSelector: this.maskTextSelector,\n skipChild: true,\n newlyAddedElement: true,\n inlineStylesheet: this.inlineStylesheet,\n maskInputOptions: this.maskInputOptions,\n maskTextFn: this.maskTextFn,\n maskInputFn: this.maskInputFn,\n slimDOMOptions: this.slimDOMOptions,\n dataURLOptions: this.dataURLOptions,\n recordCanvas: this.recordCanvas,\n inlineImages: this.inlineImages,\n onSerialize: (currentN) => {\n if (isSerializedIframe(currentN, this.mirror)) {\n this.iframeManager.addIframe(currentN);\n }\n if (isSerializedStylesheet(currentN, this.mirror)) {\n this.stylesheetManager.trackLinkElement(\n currentN\n );\n }\n if (hasShadowRoot(n2)) {\n this.shadowDomManager.addShadowRoot(index.shadowRoot(n2), this.doc);\n }\n },\n onIframeLoad: (iframe, childSn) => {\n this.iframeManager.attachIframe(iframe, childSn);\n this.shadowDomManager.observeAttachShadow(iframe);\n },\n onStylesheetLoad: (link, childSn) => {\n this.stylesheetManager.attachLinkElement(link, childSn);\n },\n cssCaptured\n });\n if (sn) {\n adds.push({\n parentId,\n nextId,\n node: sn\n });\n addedIds.add(sn.id);\n }\n };\n while (this.mapRemoves.length) {\n this.mirror.removeNodeFromMap(this.mapRemoves.shift());\n }\n for (const n2 of this.movedSet) {\n if (isParentRemoved(this.removesSubTreeCache, n2, this.mirror) && !this.movedSet.has(index.parentNode(n2))) {\n continue;\n }\n pushAdd(n2);\n }\n for (const n2 of this.addedSet) {\n if (!isAncestorInSet(this.droppedSet, n2) && !isParentRemoved(this.removesSubTreeCache, n2, this.mirror)) {\n pushAdd(n2);\n } else if (isAncestorInSet(this.movedSet, n2)) {\n pushAdd(n2);\n } else {\n this.droppedSet.add(n2);\n }\n }\n let candidate = null;\n while (addList.length) {\n let node2 = null;\n if (candidate) {\n const parentId = this.mirror.getId(index.parentNode(candidate.value));\n const nextId = getNextId(candidate.value);\n if (parentId !== -1 && nextId !== -1) {\n node2 = candidate;\n }\n }\n if (!node2) {\n let tailNode = addList.tail;\n while (tailNode) {\n const _node = tailNode;\n tailNode = tailNode.previous;\n if (_node) {\n const parentId = this.mirror.getId(index.parentNode(_node.value));\n const nextId = getNextId(_node.value);\n if (nextId === -1) continue;\n else if (parentId !== -1) {\n node2 = _node;\n break;\n } else {\n const unhandledNode = _node.value;\n const parent = index.parentNode(unhandledNode);\n if (parent && parent.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n const shadowHost = index.host(parent);\n const parentId2 = this.mirror.getId(shadowHost);\n if (parentId2 !== -1) {\n node2 = _node;\n break;\n }\n }\n }\n }\n }\n }\n if (!node2) {\n while (addList.head) {\n addList.removeNode(addList.head.value);\n }\n break;\n }\n candidate = node2.previous;\n addList.removeNode(node2.value);\n pushAdd(node2.value);\n }\n const payload = {\n texts: this.texts.map((text) => {\n const n2 = text.node;\n const parent = index.parentNode(n2);\n if (parent && parent.tagName === \"TEXTAREA\") {\n this.genTextAreaValueMutation(parent);\n }\n return {\n id: this.mirror.getId(n2),\n value: text.value\n };\n }).filter((text) => !addedIds.has(text.id)).filter((text) => this.mirror.has(text.id)),\n attributes: this.attributes.map((attribute) => {\n const { attributes } = attribute;\n if (typeof attributes.style === \"string\") {\n const diffAsStr = JSON.stringify(attribute.styleDiff);\n const unchangedAsStr = JSON.stringify(attribute._unchangedStyles);\n if (diffAsStr.length < attributes.style.length) {\n if ((diffAsStr + unchangedAsStr).split(\"var(\").length === attributes.style.split(\"var(\").length) {\n attributes.style = attribute.styleDiff;\n }\n }\n }\n return {\n id: this.mirror.getId(attribute.node),\n attributes\n };\n }).filter((attribute) => !addedIds.has(attribute.id)).filter((attribute) => this.mirror.has(attribute.id)),\n removes: this.removes,\n adds\n };\n if (!payload.texts.length && !payload.attributes.length && !payload.removes.length && !payload.adds.length) {\n return;\n }\n this.texts = [];\n this.attributes = [];\n this.attributeMap = /* @__PURE__ */ new WeakMap();\n this.removes = [];\n this.addedSet = /* @__PURE__ */ new Set();\n this.movedSet = /* @__PURE__ */ new Set();\n this.droppedSet = /* @__PURE__ */ new Set();\n this.removesSubTreeCache = /* @__PURE__ */ new Set();\n this.movedMap = {};\n this.mutationCb(payload);\n });\n __publicField(this, \"genTextAreaValueMutation\", (textarea) => {\n let item = this.attributeMap.get(textarea);\n if (!item) {\n item = {\n node: textarea,\n attributes: {},\n styleDiff: {},\n _unchangedStyles: {}\n };\n this.attributes.push(item);\n this.attributeMap.set(textarea, item);\n }\n item.attributes.value = Array.from(\n index.childNodes(textarea),\n (cn) => index.textContent(cn) || \"\"\n ).join(\"\");\n });\n __publicField(this, \"processMutation\", (m) => {\n if (isIgnored(m.target, this.mirror, this.slimDOMOptions)) {\n return;\n }\n switch (m.type) {\n case \"characterData\": {\n const value = index.textContent(m.target);\n if (!isBlocked(m.target, this.blockClass, this.blockSelector, false) && value !== m.oldValue) {\n this.texts.push({\n value: needMaskingText(\n m.target,\n this.maskTextClass,\n this.maskTextSelector,\n true\n // checkAncestors\n ) && value ? this.maskTextFn ? this.maskTextFn(value, closestElementOfNode(m.target)) : value.replace(/[\\S]/g, \"*\") : value,\n node: m.target\n });\n }\n break;\n }\n case \"attributes\": {\n const target = m.target;\n let attributeName = m.attributeName;\n let value = m.target.getAttribute(attributeName);\n if (attributeName === \"value\") {\n const type = getInputType(target);\n value = maskInputValue({\n element: target,\n maskInputOptions: this.maskInputOptions,\n tagName: target.tagName,\n type,\n value,\n maskInputFn: this.maskInputFn\n });\n }\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) || value === m.oldValue) {\n return;\n }\n let item = this.attributeMap.get(m.target);\n if (target.tagName === \"IFRAME\" && attributeName === \"src\" && !this.keepIframeSrcFn(value)) {\n if (!target.contentDocument) {\n attributeName = \"rr_src\";\n } else {\n return;\n }\n }\n if (!item) {\n item = {\n node: m.target,\n attributes: {},\n styleDiff: {},\n _unchangedStyles: {}\n };\n this.attributes.push(item);\n this.attributeMap.set(m.target, item);\n }\n if (attributeName === \"type\" && target.tagName === \"INPUT\" && (m.oldValue || \"\").toLowerCase() === \"password\") {\n target.setAttribute(\"data-rr-is-password\", \"true\");\n }\n if (!ignoreAttribute(target.tagName, attributeName)) {\n item.attributes[attributeName] = transformAttribute(\n this.doc,\n toLowerCase(target.tagName),\n toLowerCase(attributeName),\n value\n );\n if (attributeName === \"style\") {\n if (!this.unattachedDoc) {\n try {\n this.unattachedDoc = document.implementation.createHTMLDocument();\n } catch (e2) {\n this.unattachedDoc = this.doc;\n }\n }\n const old = this.unattachedDoc.createElement(\"span\");\n if (m.oldValue) {\n old.setAttribute(\"style\", m.oldValue);\n }\n for (const pname of Array.from(target.style)) {\n const newValue = target.style.getPropertyValue(pname);\n const newPriority = target.style.getPropertyPriority(pname);\n if (newValue !== old.style.getPropertyValue(pname) || newPriority !== old.style.getPropertyPriority(pname)) {\n if (newPriority === \"\") {\n item.styleDiff[pname] = newValue;\n } else {\n item.styleDiff[pname] = [newValue, newPriority];\n }\n } else {\n item._unchangedStyles[pname] = [newValue, newPriority];\n }\n }\n for (const pname of Array.from(old.style)) {\n if (target.style.getPropertyValue(pname) === \"\") {\n item.styleDiff[pname] = false;\n }\n }\n } else if (attributeName === \"open\" && target.tagName === \"DIALOG\") {\n if (target.matches(\"dialog:modal\")) {\n item.attributes[\"rr_open_mode\"] = \"modal\";\n } else {\n item.attributes[\"rr_open_mode\"] = \"non-modal\";\n }\n }\n }\n break;\n }\n case \"childList\": {\n if (isBlocked(m.target, this.blockClass, this.blockSelector, true))\n return;\n if (m.target.tagName === \"TEXTAREA\") {\n this.genTextAreaValueMutation(m.target);\n return;\n }\n m.addedNodes.forEach((n2) => this.genAdds(n2, m.target));\n m.removedNodes.forEach((n2) => {\n const nodeId = this.mirror.getId(n2);\n const parentId = isShadowRoot(m.target) ? this.mirror.getId(index.host(m.target)) : this.mirror.getId(m.target);\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) || isIgnored(n2, this.mirror, this.slimDOMOptions) || !isSerialized(n2, this.mirror)) {\n return;\n }\n if (this.addedSet.has(n2)) {\n deepDelete(this.addedSet, n2);\n this.droppedSet.add(n2);\n } else if (this.addedSet.has(m.target) && nodeId === -1) ;\n else if (isAncestorRemoved(m.target, this.mirror)) ;\n else if (this.movedSet.has(n2) && this.movedMap[moveKey(nodeId, parentId)]) {\n deepDelete(this.movedSet, n2);\n } else {\n this.removes.push({\n parentId,\n id: nodeId,\n isShadow: isShadowRoot(m.target) && isNativeShadowDom(m.target) ? true : void 0\n });\n processRemoves(n2, this.removesSubTreeCache);\n }\n this.mapRemoves.push(n2);\n });\n break;\n }\n }\n });\n __publicField(this, \"genAdds\", (n2, target) => {\n if (this.processedNodeManager.inOtherBuffer(n2, this)) return;\n if (this.addedSet.has(n2) || this.movedSet.has(n2)) return;\n if (this.mirror.hasNode(n2)) {\n if (isIgnored(n2, this.mirror, this.slimDOMOptions)) {\n return;\n }\n this.movedSet.add(n2);\n let targetId = null;\n if (target && this.mirror.hasNode(target)) {\n targetId = this.mirror.getId(target);\n }\n if (targetId && targetId !== -1) {\n this.movedMap[moveKey(this.mirror.getId(n2), targetId)] = true;\n }\n } else {\n this.addedSet.add(n2);\n this.droppedSet.delete(n2);\n }\n if (!isBlocked(n2, this.blockClass, this.blockSelector, false)) {\n index.childNodes(n2).forEach((childN) => this.genAdds(childN));\n if (hasShadowRoot(n2)) {\n index.childNodes(index.shadowRoot(n2)).forEach((childN) => {\n this.processedNodeManager.add(childN, this);\n this.genAdds(childN, n2);\n });\n }\n }\n });\n }\n init(options) {\n [\n \"mutationCb\",\n \"blockClass\",\n \"blockSelector\",\n \"maskTextClass\",\n \"maskTextSelector\",\n \"inlineStylesheet\",\n \"maskInputOptions\",\n \"maskTextFn\",\n \"maskInputFn\",\n \"keepIframeSrcFn\",\n \"recordCanvas\",\n \"inlineImages\",\n \"slimDOMOptions\",\n \"dataURLOptions\",\n \"doc\",\n \"mirror\",\n \"iframeManager\",\n \"stylesheetManager\",\n \"shadowDomManager\",\n \"canvasManager\",\n \"processedNodeManager\"\n ].forEach((key) => {\n this[key] = options[key];\n });\n }\n freeze() {\n this.frozen = true;\n this.canvasManager.freeze();\n }\n unfreeze() {\n this.frozen = false;\n this.canvasManager.unfreeze();\n this.emit();\n }\n isFrozen() {\n return this.frozen;\n }\n lock() {\n this.locked = true;\n this.canvasManager.lock();\n }\n unlock() {\n this.locked = false;\n this.canvasManager.unlock();\n this.emit();\n }\n reset() {\n this.shadowDomManager.reset();\n this.canvasManager.reset();\n }\n}\nfunction deepDelete(addsSet, n2) {\n addsSet.delete(n2);\n index.childNodes(n2).forEach((childN) => deepDelete(addsSet, childN));\n}\nfunction processRemoves(n2, cache) {\n const queue = [n2];\n while (queue.length) {\n const next = queue.pop();\n if (cache.has(next)) continue;\n cache.add(next);\n index.childNodes(next).forEach((n22) => queue.push(n22));\n }\n return;\n}\nfunction isParentRemoved(removes, n2, mirror2) {\n if (removes.size === 0) return false;\n return _isParentRemoved(removes, n2);\n}\nfunction _isParentRemoved(removes, n2, _mirror2) {\n const node2 = index.parentNode(n2);\n if (!node2) return false;\n return removes.has(node2);\n}\nfunction isAncestorInSet(set, n2) {\n if (set.size === 0) return false;\n return _isAncestorInSet(set, n2);\n}\nfunction _isAncestorInSet(set, n2) {\n const parent = index.parentNode(n2);\n if (!parent) {\n return false;\n }\n if (set.has(parent)) {\n return true;\n }\n return _isAncestorInSet(set, parent);\n}\nlet errorHandler;\nfunction registerErrorHandler(handler) {\n errorHandler = handler;\n}\nfunction unregisterErrorHandler() {\n errorHandler = void 0;\n}\nconst callbackWrapper = (cb) => {\n if (!errorHandler) {\n return cb;\n }\n const rrwebWrapped = (...rest) => {\n try {\n return cb(...rest);\n } catch (error) {\n if (errorHandler && errorHandler(error) === true) {\n return;\n }\n throw error;\n }\n };\n return rrwebWrapped;\n};\nconst mutationBuffers = [];\nfunction getEventTarget(event) {\n try {\n if (\"composedPath\" in event) {\n const path = event.composedPath();\n if (path.length) {\n return path[0];\n }\n } else if (\"path\" in event && event.path.length) {\n return event.path[0];\n }\n } catch {\n }\n return event && event.target;\n}\nfunction initMutationObserver(options, rootEl) {\n const mutationBuffer = new MutationBuffer();\n mutationBuffers.push(mutationBuffer);\n mutationBuffer.init(options);\n const observer = new (mutationObserverCtor())(\n callbackWrapper(mutationBuffer.processMutations.bind(mutationBuffer))\n );\n observer.observe(rootEl, {\n attributes: true,\n attributeOldValue: true,\n characterData: true,\n characterDataOldValue: true,\n childList: true,\n subtree: true\n });\n return observer;\n}\nfunction initMoveObserver({\n mousemoveCb,\n sampling,\n doc,\n mirror: mirror2\n}) {\n if (sampling.mousemove === false) {\n return () => {\n };\n }\n const threshold = typeof sampling.mousemove === \"number\" ? sampling.mousemove : 50;\n const callbackThreshold = typeof sampling.mousemoveCallback === \"number\" ? sampling.mousemoveCallback : 500;\n let positions = [];\n let timeBaseline;\n const wrappedCb = throttle(\n callbackWrapper(\n (source) => {\n const totalOffset = Date.now() - timeBaseline;\n mousemoveCb(\n positions.map((p) => {\n p.timeOffset -= totalOffset;\n return p;\n }),\n source\n );\n positions = [];\n timeBaseline = null;\n }\n ),\n callbackThreshold\n );\n const updatePosition = callbackWrapper(\n throttle(\n callbackWrapper((evt) => {\n const target = getEventTarget(evt);\n const { clientX, clientY } = legacy_isTouchEvent(evt) ? evt.changedTouches[0] : evt;\n if (!timeBaseline) {\n timeBaseline = nowTimestamp();\n }\n positions.push({\n x: clientX,\n y: clientY,\n id: mirror2.getId(target),\n timeOffset: nowTimestamp() - timeBaseline\n });\n wrappedCb(\n typeof DragEvent !== \"undefined\" && evt instanceof DragEvent ? IncrementalSource.Drag : evt instanceof MouseEvent ? IncrementalSource.MouseMove : IncrementalSource.TouchMove\n );\n }),\n threshold,\n {\n trailing: false\n }\n )\n );\n const handlers = [\n on(\"mousemove\", updatePosition, doc),\n on(\"touchmove\", updatePosition, doc),\n on(\"drag\", updatePosition, doc)\n ];\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initMouseInteractionObserver({\n mouseInteractionCb,\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n sampling\n}) {\n if (sampling.mouseInteraction === false) {\n return () => {\n };\n }\n const disableMap = sampling.mouseInteraction === true || sampling.mouseInteraction === void 0 ? {} : sampling.mouseInteraction;\n const handlers = [];\n let currentPointerType = null;\n const getHandler = (eventKey) => {\n return (event) => {\n const target = getEventTarget(event);\n if (isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n let pointerType = null;\n let thisEventKey = eventKey;\n if (\"pointerType\" in event) {\n switch (event.pointerType) {\n case \"mouse\":\n pointerType = PointerTypes.Mouse;\n break;\n case \"touch\":\n pointerType = PointerTypes.Touch;\n break;\n case \"pen\":\n pointerType = PointerTypes.Pen;\n break;\n }\n if (pointerType === PointerTypes.Touch) {\n if (MouseInteractions[eventKey] === MouseInteractions.MouseDown) {\n thisEventKey = \"TouchStart\";\n } else if (MouseInteractions[eventKey] === MouseInteractions.MouseUp) {\n thisEventKey = \"TouchEnd\";\n }\n } else if (pointerType === PointerTypes.Pen) ;\n } else if (legacy_isTouchEvent(event)) {\n pointerType = PointerTypes.Touch;\n }\n if (pointerType !== null) {\n currentPointerType = pointerType;\n if (thisEventKey.startsWith(\"Touch\") && pointerType === PointerTypes.Touch || thisEventKey.startsWith(\"Mouse\") && pointerType === PointerTypes.Mouse) {\n pointerType = null;\n }\n } else if (MouseInteractions[eventKey] === MouseInteractions.Click) {\n pointerType = currentPointerType;\n currentPointerType = null;\n }\n const e2 = legacy_isTouchEvent(event) ? event.changedTouches[0] : event;\n if (!e2) {\n return;\n }\n const id = mirror2.getId(target);\n const { clientX, clientY } = e2;\n callbackWrapper(mouseInteractionCb)({\n type: MouseInteractions[thisEventKey],\n id,\n x: clientX,\n y: clientY,\n ...pointerType !== null && { pointerType }\n });\n };\n };\n Object.keys(MouseInteractions).filter(\n (key) => Number.isNaN(Number(key)) && !key.endsWith(\"_Departed\") && disableMap[key] !== false\n ).forEach((eventKey) => {\n let eventName = toLowerCase(eventKey);\n const handler = getHandler(eventKey);\n if (window.PointerEvent) {\n switch (MouseInteractions[eventKey]) {\n case MouseInteractions.MouseDown:\n case MouseInteractions.MouseUp:\n eventName = eventName.replace(\n \"mouse\",\n \"pointer\"\n );\n break;\n case MouseInteractions.TouchStart:\n case MouseInteractions.TouchEnd:\n return;\n }\n }\n handlers.push(on(eventName, handler, doc));\n });\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initScrollObserver({\n scrollCb,\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n sampling\n}) {\n const updatePosition = callbackWrapper(\n throttle(\n callbackWrapper((evt) => {\n const target = getEventTarget(evt);\n if (!target || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n const id = mirror2.getId(target);\n if (target === doc && doc.defaultView) {\n const scrollLeftTop = getWindowScroll(doc.defaultView);\n scrollCb({\n id,\n x: scrollLeftTop.left,\n y: scrollLeftTop.top\n });\n } else {\n scrollCb({\n id,\n x: target.scrollLeft,\n y: target.scrollTop\n });\n }\n }),\n sampling.scroll || 100\n )\n );\n return on(\"scroll\", updatePosition, doc);\n}\nfunction initViewportResizeObserver({ viewportResizeCb }, { win }) {\n let lastH = -1;\n let lastW = -1;\n const updateDimension = callbackWrapper(\n throttle(\n callbackWrapper(() => {\n const height = getWindowHeight();\n const width = getWindowWidth();\n if (lastH !== height || lastW !== width) {\n viewportResizeCb({\n width: Number(width),\n height: Number(height)\n });\n lastH = height;\n lastW = width;\n }\n }),\n 200\n )\n );\n return on(\"resize\", updateDimension, win);\n}\nconst INPUT_TAGS = [\"INPUT\", \"TEXTAREA\", \"SELECT\"];\nconst lastInputValueMap = /* @__PURE__ */ new WeakMap();\nfunction initInputObserver({\n inputCb,\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n ignoreClass,\n ignoreSelector,\n maskInputOptions,\n maskInputFn,\n sampling,\n userTriggeredOnInput\n}) {\n function eventHandler(event) {\n let target = getEventTarget(event);\n const userTriggered = event.isTrusted;\n const tagName = target && target.tagName;\n if (target && tagName === \"OPTION\") {\n target = index.parentElement(target);\n }\n if (!target || !tagName || INPUT_TAGS.indexOf(tagName) < 0 || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n if (target.classList.contains(ignoreClass) || ignoreSelector && target.matches(ignoreSelector)) {\n return;\n }\n let text = target.value;\n let isChecked = false;\n const type = getInputType(target) || \"\";\n if (type === \"radio\" || type === \"checkbox\") {\n isChecked = target.checked;\n } else if (maskInputOptions[tagName.toLowerCase()] || maskInputOptions[type]) {\n text = maskInputValue({\n element: target,\n maskInputOptions,\n tagName,\n type,\n value: text,\n maskInputFn\n });\n }\n cbWithDedup(\n target,\n userTriggeredOnInput ? { text, isChecked, userTriggered } : { text, isChecked }\n );\n const name = target.name;\n if (type === \"radio\" && name && isChecked) {\n doc.querySelectorAll(`input[type=\"radio\"][name=\"${name}\"]`).forEach((el) => {\n if (el !== target) {\n const text2 = el.value;\n cbWithDedup(\n el,\n userTriggeredOnInput ? { text: text2, isChecked: !isChecked, userTriggered: false } : { text: text2, isChecked: !isChecked }\n );\n }\n });\n }\n }\n function cbWithDedup(target, v2) {\n const lastInputValue = lastInputValueMap.get(target);\n if (!lastInputValue || lastInputValue.text !== v2.text || lastInputValue.isChecked !== v2.isChecked) {\n lastInputValueMap.set(target, v2);\n const id = mirror2.getId(target);\n callbackWrapper(inputCb)({\n ...v2,\n id\n });\n }\n }\n const events = sampling.input === \"last\" ? [\"change\"] : [\"input\", \"change\"];\n const handlers = events.map(\n (eventName) => on(eventName, callbackWrapper(eventHandler), doc)\n );\n const currentWindow = doc.defaultView;\n if (!currentWindow) {\n return () => {\n handlers.forEach((h) => h());\n };\n }\n const propertyDescriptor = currentWindow.Object.getOwnPropertyDescriptor(\n currentWindow.HTMLInputElement.prototype,\n \"value\"\n );\n const hookProperties = [\n [currentWindow.HTMLInputElement.prototype, \"value\"],\n [currentWindow.HTMLInputElement.prototype, \"checked\"],\n [currentWindow.HTMLSelectElement.prototype, \"value\"],\n [currentWindow.HTMLTextAreaElement.prototype, \"value\"],\n // Some UI library use selectedIndex to set select value\n [currentWindow.HTMLSelectElement.prototype, \"selectedIndex\"],\n [currentWindow.HTMLOptionElement.prototype, \"selected\"]\n ];\n if (propertyDescriptor && propertyDescriptor.set) {\n handlers.push(\n ...hookProperties.map(\n (p) => hookSetter(\n p[0],\n p[1],\n {\n set() {\n callbackWrapper(eventHandler)({\n target: this,\n isTrusted: false\n // userTriggered to false as this could well be programmatic\n });\n }\n },\n false,\n currentWindow\n )\n )\n );\n }\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction getNestedCSSRulePositions(rule2) {\n const positions = [];\n function recurse(childRule, pos) {\n if (hasNestedCSSRule(\"CSSGroupingRule\") && childRule.parentRule instanceof CSSGroupingRule || hasNestedCSSRule(\"CSSMediaRule\") && childRule.parentRule instanceof CSSMediaRule || hasNestedCSSRule(\"CSSSupportsRule\") && childRule.parentRule instanceof CSSSupportsRule || hasNestedCSSRule(\"CSSConditionRule\") && childRule.parentRule instanceof CSSConditionRule) {\n const rules2 = Array.from(\n childRule.parentRule.cssRules\n );\n const index2 = rules2.indexOf(childRule);\n pos.unshift(index2);\n } else if (childRule.parentStyleSheet) {\n const rules2 = Array.from(childRule.parentStyleSheet.cssRules);\n const index2 = rules2.indexOf(childRule);\n pos.unshift(index2);\n }\n return pos;\n }\n return recurse(rule2, positions);\n}\nfunction getIdAndStyleId(sheet, mirror2, styleMirror) {\n let id, styleId;\n if (!sheet) return {};\n if (sheet.ownerNode) id = mirror2.getId(sheet.ownerNode);\n else styleId = styleMirror.getId(sheet);\n return {\n styleId,\n id\n };\n}\nfunction initStyleSheetObserver({ styleSheetRuleCb, mirror: mirror2, stylesheetManager }, { win }) {\n if (!win.CSSStyleSheet || !win.CSSStyleSheet.prototype) {\n return () => {\n };\n }\n const insertRule = win.CSSStyleSheet.prototype.insertRule;\n win.CSSStyleSheet.prototype.insertRule = new Proxy(insertRule, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [rule2, index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n adds: [{ rule: rule2, index: index2 }]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n win.CSSStyleSheet.prototype.addRule = function(selector, styleBlock, index2 = this.cssRules.length) {\n const rule2 = `${selector} { ${styleBlock} }`;\n return win.CSSStyleSheet.prototype.insertRule.apply(this, [rule2, index2]);\n };\n const deleteRule = win.CSSStyleSheet.prototype.deleteRule;\n win.CSSStyleSheet.prototype.deleteRule = new Proxy(deleteRule, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n removes: [{ index: index2 }]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n win.CSSStyleSheet.prototype.removeRule = function(index2) {\n return win.CSSStyleSheet.prototype.deleteRule.apply(this, [index2]);\n };\n let replace;\n if (win.CSSStyleSheet.prototype.replace) {\n replace = win.CSSStyleSheet.prototype.replace;\n win.CSSStyleSheet.prototype.replace = new Proxy(replace, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [text] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n replace: text\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n }\n let replaceSync;\n if (win.CSSStyleSheet.prototype.replaceSync) {\n replaceSync = win.CSSStyleSheet.prototype.replaceSync;\n win.CSSStyleSheet.prototype.replaceSync = new Proxy(replaceSync, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [text] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n replaceSync: text\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n }\n const supportedNestedCSSRuleTypes = {};\n if (canMonkeyPatchNestedCSSRule(\"CSSGroupingRule\")) {\n supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\n } else {\n if (canMonkeyPatchNestedCSSRule(\"CSSMediaRule\")) {\n supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\n }\n if (canMonkeyPatchNestedCSSRule(\"CSSConditionRule\")) {\n supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\n }\n if (canMonkeyPatchNestedCSSRule(\"CSSSupportsRule\")) {\n supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\n }\n }\n const unmodifiedFunctions = {};\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n unmodifiedFunctions[typeKey] = {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n insertRule: type.prototype.insertRule,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n deleteRule: type.prototype.deleteRule\n };\n type.prototype.insertRule = new Proxy(\n unmodifiedFunctions[typeKey].insertRule,\n {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [rule2, index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n adds: [\n {\n rule: rule2,\n index: [\n ...getNestedCSSRulePositions(thisArg),\n index2 || 0\n // defaults to 0\n ]\n }\n ]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n }\n );\n type.prototype.deleteRule = new Proxy(\n unmodifiedFunctions[typeKey].deleteRule,\n {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n removes: [\n { index: [...getNestedCSSRulePositions(thisArg), index2] }\n ]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n }\n );\n });\n return callbackWrapper(() => {\n win.CSSStyleSheet.prototype.insertRule = insertRule;\n win.CSSStyleSheet.prototype.deleteRule = deleteRule;\n replace && (win.CSSStyleSheet.prototype.replace = replace);\n replaceSync && (win.CSSStyleSheet.prototype.replaceSync = replaceSync);\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\n type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\n });\n });\n}\nfunction initAdoptedStyleSheetObserver({\n mirror: mirror2,\n stylesheetManager\n}, host2) {\n var _a2, _b, _c;\n let hostId = null;\n if (host2.nodeName === \"#document\") hostId = mirror2.getId(host2);\n else hostId = mirror2.getId(index.host(host2));\n const patchTarget = host2.nodeName === \"#document\" ? (_a2 = host2.defaultView) == null ? void 0 : _a2.Document : (_c = (_b = host2.ownerDocument) == null ? void 0 : _b.defaultView) == null ? void 0 : _c.ShadowRoot;\n const originalPropertyDescriptor = (patchTarget == null ? void 0 : patchTarget.prototype) ? Object.getOwnPropertyDescriptor(\n patchTarget == null ? void 0 : patchTarget.prototype,\n \"adoptedStyleSheets\"\n ) : void 0;\n if (hostId === null || hostId === -1 || !patchTarget || !originalPropertyDescriptor)\n return () => {\n };\n Object.defineProperty(host2, \"adoptedStyleSheets\", {\n configurable: originalPropertyDescriptor.configurable,\n enumerable: originalPropertyDescriptor.enumerable,\n get() {\n var _a3;\n return (_a3 = originalPropertyDescriptor.get) == null ? void 0 : _a3.call(this);\n },\n set(sheets) {\n var _a3;\n const result2 = (_a3 = originalPropertyDescriptor.set) == null ? void 0 : _a3.call(this, sheets);\n if (hostId !== null && hostId !== -1) {\n try {\n stylesheetManager.adoptStyleSheets(sheets, hostId);\n } catch (e2) {\n }\n }\n return result2;\n }\n });\n return callbackWrapper(() => {\n Object.defineProperty(host2, \"adoptedStyleSheets\", {\n configurable: originalPropertyDescriptor.configurable,\n enumerable: originalPropertyDescriptor.enumerable,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n get: originalPropertyDescriptor.get,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n set: originalPropertyDescriptor.set\n });\n });\n}\nfunction initStyleDeclarationObserver({\n styleDeclarationCb,\n mirror: mirror2,\n ignoreCSSAttributes,\n stylesheetManager\n}, { win }) {\n const setProperty = win.CSSStyleDeclaration.prototype.setProperty;\n win.CSSStyleDeclaration.prototype.setProperty = new Proxy(setProperty, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n var _a2;\n const [property, value, priority] = argumentsList;\n if (ignoreCSSAttributes.has(property)) {\n return setProperty.apply(thisArg, [property, value, priority]);\n }\n const { id, styleId } = getIdAndStyleId(\n (_a2 = thisArg.parentRule) == null ? void 0 : _a2.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleDeclarationCb({\n id,\n styleId,\n set: {\n property,\n value,\n priority\n },\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n index: getNestedCSSRulePositions(thisArg.parentRule)\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n const removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = new Proxy(removeProperty, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n var _a2;\n const [property] = argumentsList;\n if (ignoreCSSAttributes.has(property)) {\n return removeProperty.apply(thisArg, [property]);\n }\n const { id, styleId } = getIdAndStyleId(\n (_a2 = thisArg.parentRule) == null ? void 0 : _a2.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleDeclarationCb({\n id,\n styleId,\n remove: {\n property\n },\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n index: getNestedCSSRulePositions(thisArg.parentRule)\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n return callbackWrapper(() => {\n win.CSSStyleDeclaration.prototype.setProperty = setProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\n });\n}\nfunction initMediaInteractionObserver({\n mediaInteractionCb,\n blockClass,\n blockSelector,\n mirror: mirror2,\n sampling,\n doc\n}) {\n const handler = callbackWrapper(\n (type) => throttle(\n callbackWrapper((event) => {\n const target = getEventTarget(event);\n if (!target || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n const { currentTime, volume, muted, playbackRate, loop } = target;\n mediaInteractionCb({\n type,\n id: mirror2.getId(target),\n currentTime,\n volume,\n muted,\n playbackRate,\n loop\n });\n }),\n sampling.media || 500\n )\n );\n const handlers = [\n on(\"play\", handler(MediaInteractions.Play), doc),\n on(\"pause\", handler(MediaInteractions.Pause), doc),\n on(\"seeked\", handler(MediaInteractions.Seeked), doc),\n on(\"volumechange\", handler(MediaInteractions.VolumeChange), doc),\n on(\"ratechange\", handler(MediaInteractions.RateChange), doc)\n ];\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initFontObserver({ fontCb, doc }) {\n const win = doc.defaultView;\n if (!win) {\n return () => {\n };\n }\n const handlers = [];\n const fontMap = /* @__PURE__ */ new WeakMap();\n const originalFontFace = win.FontFace;\n win.FontFace = function FontFace2(family, source, descriptors) {\n const fontFace = new originalFontFace(family, source, descriptors);\n fontMap.set(fontFace, {\n family,\n buffer: typeof source !== \"string\",\n descriptors,\n fontSource: typeof source === \"string\" ? source : JSON.stringify(Array.from(new Uint8Array(source)))\n });\n return fontFace;\n };\n const restoreHandler = patch(\n doc.fonts,\n \"add\",\n function(original) {\n return function(fontFace) {\n setTimeout(\n callbackWrapper(() => {\n const p = fontMap.get(fontFace);\n if (p) {\n fontCb(p);\n fontMap.delete(fontFace);\n }\n }),\n 0\n );\n return original.apply(this, [fontFace]);\n };\n }\n );\n handlers.push(() => {\n win.FontFace = originalFontFace;\n });\n handlers.push(restoreHandler);\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initSelectionObserver(param) {\n const { doc, mirror: mirror2, blockClass, blockSelector, selectionCb } = param;\n let collapsed = true;\n const updateSelection = callbackWrapper(() => {\n const selection = doc.getSelection();\n if (!selection || collapsed && (selection == null ? void 0 : selection.isCollapsed)) return;\n collapsed = selection.isCollapsed || false;\n const ranges = [];\n const count = selection.rangeCount || 0;\n for (let i2 = 0; i2 < count; i2++) {\n const range = selection.getRangeAt(i2);\n const { startContainer, startOffset, endContainer, endOffset } = range;\n const blocked = isBlocked(startContainer, blockClass, blockSelector, true) || isBlocked(endContainer, blockClass, blockSelector, true);\n if (blocked) continue;\n ranges.push({\n start: mirror2.getId(startContainer),\n startOffset,\n end: mirror2.getId(endContainer),\n endOffset\n });\n }\n selectionCb({ ranges });\n });\n updateSelection();\n return on(\"selectionchange\", updateSelection);\n}\nfunction initCustomElementObserver({\n doc,\n customElementCb\n}) {\n const win = doc.defaultView;\n if (!win || !win.customElements) return () => {\n };\n const restoreHandler = patch(\n win.customElements,\n \"define\",\n function(original) {\n return function(name, constructor, options) {\n try {\n customElementCb({\n define: {\n name\n }\n });\n } catch (e2) {\n console.warn(`Custom element callback failed for ${name}`);\n }\n return original.apply(this, [name, constructor, options]);\n };\n }\n );\n return restoreHandler;\n}\nfunction mergeHooks(o2, hooks) {\n const {\n mutationCb,\n mousemoveCb,\n mouseInteractionCb,\n scrollCb,\n viewportResizeCb,\n inputCb,\n mediaInteractionCb,\n styleSheetRuleCb,\n styleDeclarationCb,\n canvasMutationCb,\n fontCb,\n selectionCb,\n customElementCb\n } = o2;\n o2.mutationCb = (...p) => {\n if (hooks.mutation) {\n hooks.mutation(...p);\n }\n mutationCb(...p);\n };\n o2.mousemoveCb = (...p) => {\n if (hooks.mousemove) {\n hooks.mousemove(...p);\n }\n mousemoveCb(...p);\n };\n o2.mouseInteractionCb = (...p) => {\n if (hooks.mouseInteraction) {\n hooks.mouseInteraction(...p);\n }\n mouseInteractionCb(...p);\n };\n o2.scrollCb = (...p) => {\n if (hooks.scroll) {\n hooks.scroll(...p);\n }\n scrollCb(...p);\n };\n o2.viewportResizeCb = (...p) => {\n if (hooks.viewportResize) {\n hooks.viewportResize(...p);\n }\n viewportResizeCb(...p);\n };\n o2.inputCb = (...p) => {\n if (hooks.input) {\n hooks.input(...p);\n }\n inputCb(...p);\n };\n o2.mediaInteractionCb = (...p) => {\n if (hooks.mediaInteaction) {\n hooks.mediaInteaction(...p);\n }\n mediaInteractionCb(...p);\n };\n o2.styleSheetRuleCb = (...p) => {\n if (hooks.styleSheetRule) {\n hooks.styleSheetRule(...p);\n }\n styleSheetRuleCb(...p);\n };\n o2.styleDeclarationCb = (...p) => {\n if (hooks.styleDeclaration) {\n hooks.styleDeclaration(...p);\n }\n styleDeclarationCb(...p);\n };\n o2.canvasMutationCb = (...p) => {\n if (hooks.canvasMutation) {\n hooks.canvasMutation(...p);\n }\n canvasMutationCb(...p);\n };\n o2.fontCb = (...p) => {\n if (hooks.font) {\n hooks.font(...p);\n }\n fontCb(...p);\n };\n o2.selectionCb = (...p) => {\n if (hooks.selection) {\n hooks.selection(...p);\n }\n selectionCb(...p);\n };\n o2.customElementCb = (...c2) => {\n if (hooks.customElement) {\n hooks.customElement(...c2);\n }\n customElementCb(...c2);\n };\n}\nfunction initObservers(o2, hooks = {}) {\n const currentWindow = o2.doc.defaultView;\n if (!currentWindow) {\n return () => {\n };\n }\n mergeHooks(o2, hooks);\n let mutationObserver;\n if (o2.recordDOM) {\n mutationObserver = initMutationObserver(o2, o2.doc);\n }\n const mousemoveHandler = initMoveObserver(o2);\n const mouseInteractionHandler = initMouseInteractionObserver(o2);\n const scrollHandler = initScrollObserver(o2);\n const viewportResizeHandler = initViewportResizeObserver(o2, {\n win: currentWindow\n });\n const inputHandler = initInputObserver(o2);\n const mediaInteractionHandler = initMediaInteractionObserver(o2);\n let styleSheetObserver = () => {\n };\n let adoptedStyleSheetObserver = () => {\n };\n let styleDeclarationObserver = () => {\n };\n let fontObserver = () => {\n };\n if (o2.recordDOM) {\n styleSheetObserver = initStyleSheetObserver(o2, { win: currentWindow });\n adoptedStyleSheetObserver = initAdoptedStyleSheetObserver(o2, o2.doc);\n styleDeclarationObserver = initStyleDeclarationObserver(o2, {\n win: currentWindow\n });\n if (o2.collectFonts) {\n fontObserver = initFontObserver(o2);\n }\n }\n const selectionObserver = initSelectionObserver(o2);\n const customElementObserver = initCustomElementObserver(o2);\n const pluginHandlers = [];\n for (const plugin3 of o2.plugins) {\n pluginHandlers.push(\n plugin3.observer(plugin3.callback, currentWindow, plugin3.options)\n );\n }\n return callbackWrapper(() => {\n mutationBuffers.forEach((b) => b.reset());\n mutationObserver == null ? void 0 : mutationObserver.disconnect();\n mousemoveHandler();\n mouseInteractionHandler();\n scrollHandler();\n viewportResizeHandler();\n inputHandler();\n mediaInteractionHandler();\n styleSheetObserver();\n adoptedStyleSheetObserver();\n styleDeclarationObserver();\n fontObserver();\n selectionObserver();\n customElementObserver();\n pluginHandlers.forEach((h) => h());\n });\n}\nfunction hasNestedCSSRule(prop) {\n return typeof window[prop] !== \"undefined\";\n}\nfunction canMonkeyPatchNestedCSSRule(prop) {\n return Boolean(\n typeof window[prop] !== \"undefined\" && // Note: Generally, this check _shouldn't_ be necessary\n // However, in some scenarios (e.g. jsdom) this can sometimes fail, so we check for it here\n window[prop].prototype && \"insertRule\" in window[prop].prototype && \"deleteRule\" in window[prop].prototype\n );\n}\nclass CrossOriginIframeMirror {\n constructor(generateIdFn) {\n __publicField(this, \"iframeIdToRemoteIdMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"iframeRemoteIdToIdMap\", /* @__PURE__ */ new WeakMap());\n this.generateIdFn = generateIdFn;\n }\n getId(iframe, remoteId, idToRemoteMap, remoteToIdMap) {\n const idToRemoteIdMap = idToRemoteMap || this.getIdToRemoteIdMap(iframe);\n const remoteIdToIdMap = remoteToIdMap || this.getRemoteIdToIdMap(iframe);\n let id = idToRemoteIdMap.get(remoteId);\n if (!id) {\n id = this.generateIdFn();\n idToRemoteIdMap.set(remoteId, id);\n remoteIdToIdMap.set(id, remoteId);\n }\n return id;\n }\n getIds(iframe, remoteId) {\n const idToRemoteIdMap = this.getIdToRemoteIdMap(iframe);\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n return remoteId.map(\n (id) => this.getId(iframe, id, idToRemoteIdMap, remoteIdToIdMap)\n );\n }\n getRemoteId(iframe, id, map) {\n const remoteIdToIdMap = map || this.getRemoteIdToIdMap(iframe);\n if (typeof id !== \"number\") return id;\n const remoteId = remoteIdToIdMap.get(id);\n if (!remoteId) return -1;\n return remoteId;\n }\n getRemoteIds(iframe, ids) {\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n return ids.map((id) => this.getRemoteId(iframe, id, remoteIdToIdMap));\n }\n reset(iframe) {\n if (!iframe) {\n this.iframeIdToRemoteIdMap = /* @__PURE__ */ new WeakMap();\n this.iframeRemoteIdToIdMap = /* @__PURE__ */ new WeakMap();\n return;\n }\n this.iframeIdToRemoteIdMap.delete(iframe);\n this.iframeRemoteIdToIdMap.delete(iframe);\n }\n getIdToRemoteIdMap(iframe) {\n let idToRemoteIdMap = this.iframeIdToRemoteIdMap.get(iframe);\n if (!idToRemoteIdMap) {\n idToRemoteIdMap = /* @__PURE__ */ new Map();\n this.iframeIdToRemoteIdMap.set(iframe, idToRemoteIdMap);\n }\n return idToRemoteIdMap;\n }\n getRemoteIdToIdMap(iframe) {\n let remoteIdToIdMap = this.iframeRemoteIdToIdMap.get(iframe);\n if (!remoteIdToIdMap) {\n remoteIdToIdMap = /* @__PURE__ */ new Map();\n this.iframeRemoteIdToIdMap.set(iframe, remoteIdToIdMap);\n }\n return remoteIdToIdMap;\n }\n}\nclass IframeManager {\n constructor(options) {\n __publicField(this, \"iframes\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"crossOriginIframeMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"crossOriginIframeMirror\", new CrossOriginIframeMirror(genId));\n __publicField(this, \"crossOriginIframeStyleMirror\");\n __publicField(this, \"crossOriginIframeRootIdMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"mirror\");\n __publicField(this, \"mutationCb\");\n __publicField(this, \"wrappedEmit\");\n __publicField(this, \"loadListener\");\n __publicField(this, \"stylesheetManager\");\n __publicField(this, \"recordCrossOriginIframes\");\n this.mutationCb = options.mutationCb;\n this.wrappedEmit = options.wrappedEmit;\n this.stylesheetManager = options.stylesheetManager;\n this.recordCrossOriginIframes = options.recordCrossOriginIframes;\n this.crossOriginIframeStyleMirror = new CrossOriginIframeMirror(\n this.stylesheetManager.styleMirror.generateId.bind(\n this.stylesheetManager.styleMirror\n )\n );\n this.mirror = options.mirror;\n if (this.recordCrossOriginIframes) {\n window.addEventListener(\"message\", this.handleMessage.bind(this));\n }\n }\n addIframe(iframeEl) {\n this.iframes.set(iframeEl, true);\n if (iframeEl.contentWindow)\n this.crossOriginIframeMap.set(iframeEl.contentWindow, iframeEl);\n }\n addLoadListener(cb) {\n this.loadListener = cb;\n }\n attachIframe(iframeEl, childSn) {\n var _a2, _b;\n this.mutationCb({\n adds: [\n {\n parentId: this.mirror.getId(iframeEl),\n nextId: null,\n node: childSn\n }\n ],\n removes: [],\n texts: [],\n attributes: [],\n isAttachIframe: true\n });\n if (this.recordCrossOriginIframes)\n (_a2 = iframeEl.contentWindow) == null ? void 0 : _a2.addEventListener(\n \"message\",\n this.handleMessage.bind(this)\n );\n (_b = this.loadListener) == null ? void 0 : _b.call(this, iframeEl);\n if (iframeEl.contentDocument && iframeEl.contentDocument.adoptedStyleSheets && iframeEl.contentDocument.adoptedStyleSheets.length > 0)\n this.stylesheetManager.adoptStyleSheets(\n iframeEl.contentDocument.adoptedStyleSheets,\n this.mirror.getId(iframeEl.contentDocument)\n );\n }\n handleMessage(message) {\n const crossOriginMessageEvent = message;\n if (crossOriginMessageEvent.data.type !== \"rrweb\" || // To filter out the rrweb messages which are forwarded by some sites.\n crossOriginMessageEvent.origin !== crossOriginMessageEvent.data.origin)\n return;\n const iframeSourceWindow = message.source;\n if (!iframeSourceWindow) return;\n const iframeEl = this.crossOriginIframeMap.get(message.source);\n if (!iframeEl) return;\n const transformedEvent = this.transformCrossOriginEvent(\n iframeEl,\n crossOriginMessageEvent.data.event\n );\n if (transformedEvent)\n this.wrappedEmit(\n transformedEvent,\n crossOriginMessageEvent.data.isCheckout\n );\n }\n transformCrossOriginEvent(iframeEl, e2) {\n var _a2;\n switch (e2.type) {\n case EventType.FullSnapshot: {\n this.crossOriginIframeMirror.reset(iframeEl);\n this.crossOriginIframeStyleMirror.reset(iframeEl);\n this.replaceIdOnNode(e2.data.node, iframeEl);\n const rootId = e2.data.node.id;\n this.crossOriginIframeRootIdMap.set(iframeEl, rootId);\n this.patchRootIdOnNode(e2.data.node, rootId);\n return {\n timestamp: e2.timestamp,\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Mutation,\n adds: [\n {\n parentId: this.mirror.getId(iframeEl),\n nextId: null,\n node: e2.data.node\n }\n ],\n removes: [],\n texts: [],\n attributes: [],\n isAttachIframe: true\n }\n };\n }\n case EventType.Meta:\n case EventType.Load:\n case EventType.DomContentLoaded: {\n return false;\n }\n case EventType.Plugin: {\n return e2;\n }\n case EventType.Custom: {\n this.replaceIds(\n e2.data.payload,\n iframeEl,\n [\"id\", \"parentId\", \"previousId\", \"nextId\"]\n );\n return e2;\n }\n case EventType.IncrementalSnapshot: {\n switch (e2.data.source) {\n case IncrementalSource.Mutation: {\n e2.data.adds.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\n \"parentId\",\n \"nextId\",\n \"previousId\"\n ]);\n this.replaceIdOnNode(n2.node, iframeEl);\n const rootId = this.crossOriginIframeRootIdMap.get(iframeEl);\n rootId && this.patchRootIdOnNode(n2.node, rootId);\n });\n e2.data.removes.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\"parentId\", \"id\"]);\n });\n e2.data.attributes.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\"id\"]);\n });\n e2.data.texts.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\"id\"]);\n });\n return e2;\n }\n case IncrementalSource.Drag:\n case IncrementalSource.TouchMove:\n case IncrementalSource.MouseMove: {\n e2.data.positions.forEach((p) => {\n this.replaceIds(p, iframeEl, [\"id\"]);\n });\n return e2;\n }\n case IncrementalSource.ViewportResize: {\n return false;\n }\n case IncrementalSource.MediaInteraction:\n case IncrementalSource.MouseInteraction:\n case IncrementalSource.Scroll:\n case IncrementalSource.CanvasMutation:\n case IncrementalSource.Input: {\n this.replaceIds(e2.data, iframeEl, [\"id\"]);\n return e2;\n }\n case IncrementalSource.StyleSheetRule:\n case IncrementalSource.StyleDeclaration: {\n this.replaceIds(e2.data, iframeEl, [\"id\"]);\n this.replaceStyleIds(e2.data, iframeEl, [\"styleId\"]);\n return e2;\n }\n case IncrementalSource.Font: {\n return e2;\n }\n case IncrementalSource.Selection: {\n e2.data.ranges.forEach((range) => {\n this.replaceIds(range, iframeEl, [\"start\", \"end\"]);\n });\n return e2;\n }\n case IncrementalSource.AdoptedStyleSheet: {\n this.replaceIds(e2.data, iframeEl, [\"id\"]);\n this.replaceStyleIds(e2.data, iframeEl, [\"styleIds\"]);\n (_a2 = e2.data.styles) == null ? void 0 : _a2.forEach((style) => {\n this.replaceStyleIds(style, iframeEl, [\"styleId\"]);\n });\n return e2;\n }\n }\n }\n }\n return false;\n }\n replace(iframeMirror, obj, iframeEl, keys) {\n for (const key of keys) {\n if (!Array.isArray(obj[key]) && typeof obj[key] !== \"number\") continue;\n if (Array.isArray(obj[key])) {\n obj[key] = iframeMirror.getIds(\n iframeEl,\n obj[key]\n );\n } else {\n obj[key] = iframeMirror.getId(iframeEl, obj[key]);\n }\n }\n return obj;\n }\n replaceIds(obj, iframeEl, keys) {\n return this.replace(this.crossOriginIframeMirror, obj, iframeEl, keys);\n }\n replaceStyleIds(obj, iframeEl, keys) {\n return this.replace(this.crossOriginIframeStyleMirror, obj, iframeEl, keys);\n }\n replaceIdOnNode(node2, iframeEl) {\n this.replaceIds(node2, iframeEl, [\"id\", \"rootId\"]);\n if (\"childNodes\" in node2) {\n node2.childNodes.forEach((child) => {\n this.replaceIdOnNode(child, iframeEl);\n });\n }\n }\n patchRootIdOnNode(node2, rootId) {\n if (node2.type !== NodeType.Document && !node2.rootId) node2.rootId = rootId;\n if (\"childNodes\" in node2) {\n node2.childNodes.forEach((child) => {\n this.patchRootIdOnNode(child, rootId);\n });\n }\n }\n}\nclass ShadowDomManager {\n constructor(options) {\n __publicField(this, \"shadowDoms\", /* @__PURE__ */ new WeakSet());\n __publicField(this, \"mutationCb\");\n __publicField(this, \"scrollCb\");\n __publicField(this, \"bypassOptions\");\n __publicField(this, \"mirror\");\n __publicField(this, \"restoreHandlers\", []);\n this.mutationCb = options.mutationCb;\n this.scrollCb = options.scrollCb;\n this.bypassOptions = options.bypassOptions;\n this.mirror = options.mirror;\n this.init();\n }\n init() {\n this.reset();\n this.patchAttachShadow(Element, document);\n }\n addShadowRoot(shadowRoot2, doc) {\n if (!isNativeShadowDom(shadowRoot2)) return;\n if (this.shadowDoms.has(shadowRoot2)) return;\n this.shadowDoms.add(shadowRoot2);\n const observer = initMutationObserver(\n {\n ...this.bypassOptions,\n doc,\n mutationCb: this.mutationCb,\n mirror: this.mirror,\n shadowDomManager: this\n },\n shadowRoot2\n );\n this.restoreHandlers.push(() => observer.disconnect());\n this.restoreHandlers.push(\n initScrollObserver({\n ...this.bypassOptions,\n scrollCb: this.scrollCb,\n // https://gist.github.com/praveenpuglia/0832da687ed5a5d7a0907046c9ef1813\n // scroll is not allowed to pass the boundary, so we need to listen the shadow document\n doc: shadowRoot2,\n mirror: this.mirror\n })\n );\n setTimeout(() => {\n if (shadowRoot2.adoptedStyleSheets && shadowRoot2.adoptedStyleSheets.length > 0)\n this.bypassOptions.stylesheetManager.adoptStyleSheets(\n shadowRoot2.adoptedStyleSheets,\n this.mirror.getId(index.host(shadowRoot2))\n );\n this.restoreHandlers.push(\n initAdoptedStyleSheetObserver(\n {\n mirror: this.mirror,\n stylesheetManager: this.bypassOptions.stylesheetManager\n },\n shadowRoot2\n )\n );\n }, 0);\n }\n /**\n * Monkey patch 'attachShadow' of an IFrameElement to observe newly added shadow doms.\n */\n observeAttachShadow(iframeElement) {\n if (!iframeElement.contentWindow || !iframeElement.contentDocument) return;\n this.patchAttachShadow(\n iframeElement.contentWindow.Element,\n iframeElement.contentDocument\n );\n }\n /**\n * Patch 'attachShadow' to observe newly added shadow doms.\n */\n patchAttachShadow(element, doc) {\n const manager = this;\n this.restoreHandlers.push(\n patch(\n element.prototype,\n \"attachShadow\",\n function(original) {\n return function(option) {\n const sRoot = original.call(this, option);\n const shadowRootEl = index.shadowRoot(this);\n if (shadowRootEl && inDom(this))\n manager.addShadowRoot(shadowRootEl, doc);\n return sRoot;\n };\n }\n )\n );\n }\n reset() {\n this.restoreHandlers.forEach((handler) => {\n try {\n handler();\n } catch (e2) {\n }\n });\n this.restoreHandlers = [];\n this.shadowDoms = /* @__PURE__ */ new WeakSet();\n }\n}\nvar chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nvar lookup = typeof Uint8Array === \"undefined\" ? [] : new Uint8Array(256);\nfor (var i$1 = 0; i$1 < chars.length; i$1++) {\n lookup[chars.charCodeAt(i$1)] = i$1;\n}\nvar encode = function(arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i2, len = bytes.length, base64 = \"\";\n for (i2 = 0; i2 < len; i2 += 3) {\n base64 += chars[bytes[i2] >> 2];\n base64 += chars[(bytes[i2] & 3) << 4 | bytes[i2 + 1] >> 4];\n base64 += chars[(bytes[i2 + 1] & 15) << 2 | bytes[i2 + 2] >> 6];\n base64 += chars[bytes[i2 + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + \"=\";\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + \"==\";\n }\n return base64;\n};\nconst canvasVarMap = /* @__PURE__ */ new Map();\nfunction variableListFor$1(ctx, ctor) {\n let contextMap = canvasVarMap.get(ctx);\n if (!contextMap) {\n contextMap = /* @__PURE__ */ new Map();\n canvasVarMap.set(ctx, contextMap);\n }\n if (!contextMap.has(ctor)) {\n contextMap.set(ctor, []);\n }\n return contextMap.get(ctor);\n}\nconst saveWebGLVar = (value, win, ctx) => {\n if (!value || !(isInstanceOfWebGLObject(value, win) || typeof value === \"object\"))\n return;\n const name = value.constructor.name;\n const list2 = variableListFor$1(ctx, name);\n let index2 = list2.indexOf(value);\n if (index2 === -1) {\n index2 = list2.length;\n list2.push(value);\n }\n return index2;\n};\nfunction serializeArg(value, win, ctx) {\n if (value instanceof Array) {\n return value.map((arg) => serializeArg(arg, win, ctx));\n } else if (value === null) {\n return value;\n } else if (value instanceof Float32Array || value instanceof Float64Array || value instanceof Int32Array || value instanceof Uint32Array || value instanceof Uint8Array || value instanceof Uint16Array || value instanceof Int16Array || value instanceof Int8Array || value instanceof Uint8ClampedArray) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [Object.values(value)]\n };\n } else if (\n // SharedArrayBuffer disabled on most browsers due to spectre.\n // More info: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/SharedArrayBuffer\n // value instanceof SharedArrayBuffer ||\n value instanceof ArrayBuffer\n ) {\n const name = value.constructor.name;\n const base64 = encode(value);\n return {\n rr_type: name,\n base64\n };\n } else if (value instanceof DataView) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [\n serializeArg(value.buffer, win, ctx),\n value.byteOffset,\n value.byteLength\n ]\n };\n } else if (value instanceof HTMLImageElement) {\n const name = value.constructor.name;\n const { src } = value;\n return {\n rr_type: name,\n src\n };\n } else if (value instanceof HTMLCanvasElement) {\n const name = \"HTMLImageElement\";\n const src = value.toDataURL();\n return {\n rr_type: name,\n src\n };\n } else if (value instanceof ImageData) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [serializeArg(value.data, win, ctx), value.width, value.height]\n };\n } else if (isInstanceOfWebGLObject(value, win) || typeof value === \"object\") {\n const name = value.constructor.name;\n const index2 = saveWebGLVar(value, win, ctx);\n return {\n rr_type: name,\n index: index2\n };\n }\n return value;\n}\nconst serializeArgs = (args, win, ctx) => {\n return args.map((arg) => serializeArg(arg, win, ctx));\n};\nconst isInstanceOfWebGLObject = (value, win) => {\n const webGLConstructorNames = [\n \"WebGLActiveInfo\",\n \"WebGLBuffer\",\n \"WebGLFramebuffer\",\n \"WebGLProgram\",\n \"WebGLRenderbuffer\",\n \"WebGLShader\",\n \"WebGLShaderPrecisionFormat\",\n \"WebGLTexture\",\n \"WebGLUniformLocation\",\n \"WebGLVertexArrayObject\",\n // In old Chrome versions, value won't be an instanceof WebGLVertexArrayObject.\n \"WebGLVertexArrayObjectOES\"\n ];\n const supportedWebGLConstructorNames = webGLConstructorNames.filter(\n (name) => typeof win[name] === \"function\"\n );\n return Boolean(\n supportedWebGLConstructorNames.find(\n (name) => value instanceof win[name]\n )\n );\n};\nfunction initCanvas2DMutationObserver(cb, win, blockClass, blockSelector) {\n const handlers = [];\n const props2D = Object.getOwnPropertyNames(\n win.CanvasRenderingContext2D.prototype\n );\n for (const prop of props2D) {\n try {\n if (typeof win.CanvasRenderingContext2D.prototype[prop] !== \"function\") {\n continue;\n }\n const restoreHandler = patch(\n win.CanvasRenderingContext2D.prototype,\n prop,\n function(original) {\n return function(...args) {\n if (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\n setTimeout(() => {\n const recordArgs = serializeArgs(args, win, this);\n cb(this.canvas, {\n type: CanvasContext[\"2D\"],\n property: prop,\n args: recordArgs\n });\n }, 0);\n }\n return original.apply(this, args);\n };\n }\n );\n handlers.push(restoreHandler);\n } catch {\n const hookHandler = hookSetter(\n win.CanvasRenderingContext2D.prototype,\n prop,\n {\n set(v2) {\n cb(this.canvas, {\n type: CanvasContext[\"2D\"],\n property: prop,\n args: [v2],\n setter: true\n });\n }\n }\n );\n handlers.push(hookHandler);\n }\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\nfunction getNormalizedContextName(contextType) {\n return contextType === \"experimental-webgl\" ? \"webgl\" : contextType;\n}\nfunction initCanvasContextObserver(win, blockClass, blockSelector, setPreserveDrawingBufferToTrue) {\n const handlers = [];\n try {\n const restoreHandler = patch(\n win.HTMLCanvasElement.prototype,\n \"getContext\",\n function(original) {\n return function(contextType, ...args) {\n if (!isBlocked(this, blockClass, blockSelector, true)) {\n const ctxName = getNormalizedContextName(contextType);\n if (!(\"__context\" in this)) this.__context = ctxName;\n if (setPreserveDrawingBufferToTrue && [\"webgl\", \"webgl2\"].includes(ctxName)) {\n if (args[0] && typeof args[0] === \"object\") {\n const contextAttributes = args[0];\n if (!contextAttributes.preserveDrawingBuffer) {\n contextAttributes.preserveDrawingBuffer = true;\n }\n } else {\n args.splice(0, 1, {\n preserveDrawingBuffer: true\n });\n }\n }\n }\n return original.apply(this, [contextType, ...args]);\n };\n }\n );\n handlers.push(restoreHandler);\n } catch {\n console.error(\"failed to patch HTMLCanvasElement.prototype.getContext\");\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\nfunction patchGLPrototype(prototype, type, cb, blockClass, blockSelector, win) {\n const handlers = [];\n const props = Object.getOwnPropertyNames(prototype);\n for (const prop of props) {\n if (\n //prop.startsWith('get') || // e.g. getProgramParameter, but too risky\n [\n \"isContextLost\",\n \"canvas\",\n \"drawingBufferWidth\",\n \"drawingBufferHeight\"\n ].includes(prop)\n ) {\n continue;\n }\n try {\n if (typeof prototype[prop] !== \"function\") {\n continue;\n }\n const restoreHandler = patch(\n prototype,\n prop,\n function(original) {\n return function(...args) {\n const result2 = original.apply(this, args);\n saveWebGLVar(result2, win, this);\n if (\"tagName\" in this.canvas && !isBlocked(this.canvas, blockClass, blockSelector, true)) {\n const recordArgs = serializeArgs(args, win, this);\n const mutation = {\n type,\n property: prop,\n args: recordArgs\n };\n cb(this.canvas, mutation);\n }\n return result2;\n };\n }\n );\n handlers.push(restoreHandler);\n } catch {\n const hookHandler = hookSetter(prototype, prop, {\n set(v2) {\n cb(this.canvas, {\n type,\n property: prop,\n args: [v2],\n setter: true\n });\n }\n });\n handlers.push(hookHandler);\n }\n }\n return handlers;\n}\nfunction initCanvasWebGLMutationObserver(cb, win, blockClass, blockSelector) {\n const handlers = [];\n handlers.push(\n ...patchGLPrototype(\n win.WebGLRenderingContext.prototype,\n CanvasContext.WebGL,\n cb,\n blockClass,\n blockSelector,\n win\n )\n );\n if (typeof win.WebGL2RenderingContext !== \"undefined\") {\n handlers.push(\n ...patchGLPrototype(\n win.WebGL2RenderingContext.prototype,\n CanvasContext.WebGL2,\n cb,\n blockClass,\n blockSelector,\n win\n )\n );\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\nconst encodedJs = \"KGZ1bmN0aW9uKCkgewogICJ1c2Ugc3RyaWN0IjsKICB2YXIgY2hhcnMgPSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7CiAgdmFyIGxvb2t1cCA9IHR5cGVvZiBVaW50OEFycmF5ID09PSAidW5kZWZpbmVkIiA/IFtdIDogbmV3IFVpbnQ4QXJyYXkoMjU2KTsKICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYXJzLmxlbmd0aDsgaSsrKSB7CiAgICBsb29rdXBbY2hhcnMuY2hhckNvZGVBdChpKV0gPSBpOwogIH0KICB2YXIgZW5jb2RlID0gZnVuY3Rpb24oYXJyYXlidWZmZXIpIHsKICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGFycmF5YnVmZmVyKSwgaTIsIGxlbiA9IGJ5dGVzLmxlbmd0aCwgYmFzZTY0ID0gIiI7CiAgICBmb3IgKGkyID0gMDsgaTIgPCBsZW47IGkyICs9IDMpIHsKICAgICAgYmFzZTY0ICs9IGNoYXJzW2J5dGVzW2kyXSA+PiAyXTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMl0gJiAzKSA8PCA0IHwgYnl0ZXNbaTIgKyAxXSA+PiA0XTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMiArIDFdICYgMTUpIDw8IDIgfCBieXRlc1tpMiArIDJdID4+IDZdOwogICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaTIgKyAyXSAmIDYzXTsKICAgIH0KICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgIj0iOwogICAgfSBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgIj09IjsKICAgIH0KICAgIHJldHVybiBiYXNlNjQ7CiAgfTsKICBjb25zdCBsYXN0QmxvYk1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7CiAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTsKICBhc3luYyBmdW5jdGlvbiBnZXRUcmFuc3BhcmVudEJsb2JGb3Iod2lkdGgsIGhlaWdodCwgZGF0YVVSTE9wdGlvbnMpIHsKICAgIGNvbnN0IGlkID0gYCR7d2lkdGh9LSR7aGVpZ2h0fWA7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBpZiAodHJhbnNwYXJlbnRCbG9iTWFwLmhhcyhpZCkpIHJldHVybiB0cmFuc3BhcmVudEJsb2JNYXAuZ2V0KGlkKTsKICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsKICAgICAgb2Zmc2NyZWVuLmdldENvbnRleHQoIjJkIik7CiAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCBvZmZzY3JlZW4uY29udmVydFRvQmxvYihkYXRhVVJMT3B0aW9ucyk7CiAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gYXdhaXQgYmxvYi5hcnJheUJ1ZmZlcigpOwogICAgICBjb25zdCBiYXNlNjQgPSBlbmNvZGUoYXJyYXlCdWZmZXIpOwogICAgICB0cmFuc3BhcmVudEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICByZXR1cm4gYmFzZTY0OwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuICIiOwogICAgfQogIH0KICBjb25zdCB3b3JrZXIgPSBzZWxmOwogIHdvcmtlci5vbm1lc3NhZ2UgPSBhc3luYyBmdW5jdGlvbihlKSB7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBjb25zdCB7IGlkLCBiaXRtYXAsIHdpZHRoLCBoZWlnaHQsIGRhdGFVUkxPcHRpb25zIH0gPSBlLmRhdGE7CiAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKAogICAgICAgIHdpZHRoLAogICAgICAgIGhlaWdodCwKICAgICAgICBkYXRhVVJMT3B0aW9ucwogICAgICApOwogICAgICBjb25zdCBvZmZzY3JlZW4gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpOwogICAgICBjb25zdCBjdHggPSBvZmZzY3JlZW4uZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgY3R4LmRyYXdJbWFnZShiaXRtYXAsIDAsIDApOwogICAgICBiaXRtYXAuY2xvc2UoKTsKICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IG9mZnNjcmVlbi5jb252ZXJ0VG9CbG9iKGRhdGFVUkxPcHRpb25zKTsKICAgICAgY29uc3QgdHlwZSA9IGJsb2IudHlwZTsKICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBhd2FpdCBibG9iLmFycmF5QnVmZmVyKCk7CiAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7CiAgICAgIGlmICghbGFzdEJsb2JNYXAuaGFzKGlkKSAmJiBhd2FpdCB0cmFuc3BhcmVudEJhc2U2NCA9PT0gYmFzZTY0KSB7CiAgICAgICAgbGFzdEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICAgIHJldHVybiB3b3JrZXIucG9zdE1lc3NhZ2UoeyBpZCB9KTsKICAgICAgfQogICAgICBpZiAobGFzdEJsb2JNYXAuZ2V0KGlkKSA9PT0gYmFzZTY0KSByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQgfSk7CiAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7CiAgICAgICAgaWQsCiAgICAgICAgdHlwZSwKICAgICAgICBiYXNlNjQsCiAgICAgICAgd2lkdGgsCiAgICAgICAgaGVpZ2h0CiAgICAgIH0pOwogICAgICBsYXN0QmxvYk1hcC5zZXQoaWQsIGJhc2U2NCk7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IGUuZGF0YS5pZCB9KTsKICAgIH0KICB9Owp9KSgpOwovLyMgc291cmNlTWFwcGluZ1VSTD1pbWFnZS1iaXRtYXAtZGF0YS11cmwtd29ya2VyLUlKcEM3Z19iLmpzLm1hcAo=\";\nconst decodeBase64 = (base64) => Uint8Array.from(atob(base64), (c2) => c2.charCodeAt(0));\nconst blob = typeof window !== \"undefined\" && window.Blob && new Blob([decodeBase64(encodedJs)], { type: \"text/javascript;charset=utf-8\" });\nfunction WorkerWrapper(options) {\n let objURL;\n try {\n objURL = blob && (window.URL || window.webkitURL).createObjectURL(blob);\n if (!objURL) throw \"\";\n const worker = new Worker(objURL, {\n name: options == null ? void 0 : options.name\n });\n worker.addEventListener(\"error\", () => {\n (window.URL || window.webkitURL).revokeObjectURL(objURL);\n });\n return worker;\n } catch (e2) {\n return new Worker(\n \"data:text/javascript;base64,\" + encodedJs,\n {\n name: options == null ? void 0 : options.name\n }\n );\n } finally {\n objURL && (window.URL || window.webkitURL).revokeObjectURL(objURL);\n }\n}\nclass CanvasManager {\n constructor(options) {\n __publicField(this, \"pendingCanvasMutations\", /* @__PURE__ */ new Map());\n __publicField(this, \"rafStamps\", { latestId: 0, invokeId: null });\n __publicField(this, \"mirror\");\n __publicField(this, \"mutationCb\");\n __publicField(this, \"resetObservers\");\n __publicField(this, \"frozen\", false);\n __publicField(this, \"locked\", false);\n __publicField(this, \"processMutation\", (target, mutation) => {\n const newFrame = this.rafStamps.invokeId && this.rafStamps.latestId !== this.rafStamps.invokeId;\n if (newFrame || !this.rafStamps.invokeId)\n this.rafStamps.invokeId = this.rafStamps.latestId;\n if (!this.pendingCanvasMutations.has(target)) {\n this.pendingCanvasMutations.set(target, []);\n }\n this.pendingCanvasMutations.get(target).push(mutation);\n });\n const {\n sampling = \"all\",\n win,\n blockClass,\n blockSelector,\n recordCanvas,\n dataURLOptions\n } = options;\n this.mutationCb = options.mutationCb;\n this.mirror = options.mirror;\n if (recordCanvas && sampling === \"all\")\n this.initCanvasMutationObserver(win, blockClass, blockSelector);\n if (recordCanvas && typeof sampling === \"number\")\n this.initCanvasFPSObserver(sampling, win, blockClass, blockSelector, {\n dataURLOptions\n });\n }\n reset() {\n this.pendingCanvasMutations.clear();\n this.resetObservers && this.resetObservers();\n }\n freeze() {\n this.frozen = true;\n }\n unfreeze() {\n this.frozen = false;\n }\n lock() {\n this.locked = true;\n }\n unlock() {\n this.locked = false;\n }\n initCanvasFPSObserver(fps, win, blockClass, blockSelector, options) {\n const canvasContextReset = initCanvasContextObserver(\n win,\n blockClass,\n blockSelector,\n true\n );\n const snapshotInProgressMap = /* @__PURE__ */ new Map();\n const worker = new WorkerWrapper();\n worker.onmessage = (e2) => {\n const { id } = e2.data;\n snapshotInProgressMap.set(id, false);\n if (!(\"base64\" in e2.data)) return;\n const { base64, type, width, height } = e2.data;\n this.mutationCb({\n id,\n type: CanvasContext[\"2D\"],\n commands: [\n {\n property: \"clearRect\",\n // wipe canvas\n args: [0, 0, width, height]\n },\n {\n property: \"drawImage\",\n // draws (semi-transparent) image\n args: [\n {\n rr_type: \"ImageBitmap\",\n args: [\n {\n rr_type: \"Blob\",\n data: [{ rr_type: \"ArrayBuffer\", base64 }],\n type\n }\n ]\n },\n 0,\n 0\n ]\n }\n ]\n });\n };\n const timeBetweenSnapshots = 1e3 / fps;\n let lastSnapshotTime = 0;\n let rafId;\n const getCanvas = () => {\n const matchedCanvas = [];\n win.document.querySelectorAll(\"canvas\").forEach((canvas) => {\n if (!isBlocked(canvas, blockClass, blockSelector, true)) {\n matchedCanvas.push(canvas);\n }\n });\n return matchedCanvas;\n };\n const takeCanvasSnapshots = (timestamp) => {\n if (lastSnapshotTime && timestamp - lastSnapshotTime < timeBetweenSnapshots) {\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n return;\n }\n lastSnapshotTime = timestamp;\n getCanvas().forEach(async (canvas) => {\n var _a2;\n const id = this.mirror.getId(canvas);\n if (snapshotInProgressMap.get(id)) return;\n if (canvas.width === 0 || canvas.height === 0) return;\n snapshotInProgressMap.set(id, true);\n if ([\"webgl\", \"webgl2\"].includes(canvas.__context)) {\n const context = canvas.getContext(canvas.__context);\n if (((_a2 = context == null ? void 0 : context.getContextAttributes()) == null ? void 0 : _a2.preserveDrawingBuffer) === false) {\n context.clear(context.COLOR_BUFFER_BIT);\n }\n }\n const bitmap = await createImageBitmap(canvas);\n worker.postMessage(\n {\n id,\n bitmap,\n width: canvas.width,\n height: canvas.height,\n dataURLOptions: options.dataURLOptions\n },\n [bitmap]\n );\n });\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n };\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n this.resetObservers = () => {\n canvasContextReset();\n cancelAnimationFrame(rafId);\n };\n }\n initCanvasMutationObserver(win, blockClass, blockSelector) {\n this.startRAFTimestamping();\n this.startPendingCanvasMutationFlusher();\n const canvasContextReset = initCanvasContextObserver(\n win,\n blockClass,\n blockSelector,\n false\n );\n const canvas2DReset = initCanvas2DMutationObserver(\n this.processMutation.bind(this),\n win,\n blockClass,\n blockSelector\n );\n const canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(\n this.processMutation.bind(this),\n win,\n blockClass,\n blockSelector\n );\n this.resetObservers = () => {\n canvasContextReset();\n canvas2DReset();\n canvasWebGL1and2Reset();\n };\n }\n startPendingCanvasMutationFlusher() {\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\n }\n startRAFTimestamping() {\n const setLatestRAFTimestamp = (timestamp) => {\n this.rafStamps.latestId = timestamp;\n requestAnimationFrame(setLatestRAFTimestamp);\n };\n requestAnimationFrame(setLatestRAFTimestamp);\n }\n flushPendingCanvasMutations() {\n this.pendingCanvasMutations.forEach(\n (_values, canvas) => {\n const id = this.mirror.getId(canvas);\n this.flushPendingCanvasMutationFor(canvas, id);\n }\n );\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\n }\n flushPendingCanvasMutationFor(canvas, id) {\n if (this.frozen || this.locked) {\n return;\n }\n const valuesWithType = this.pendingCanvasMutations.get(canvas);\n if (!valuesWithType || id === -1) return;\n const values = valuesWithType.map((value) => {\n const { type: type2, ...rest } = value;\n return rest;\n });\n const { type } = valuesWithType[0];\n this.mutationCb({ id, type, commands: values });\n this.pendingCanvasMutations.delete(canvas);\n }\n}\nclass StylesheetManager {\n constructor(options) {\n __publicField(this, \"trackedLinkElements\", /* @__PURE__ */ new WeakSet());\n __publicField(this, \"mutationCb\");\n __publicField(this, \"adoptedStyleSheetCb\");\n __publicField(this, \"styleMirror\", new StyleSheetMirror());\n this.mutationCb = options.mutationCb;\n this.adoptedStyleSheetCb = options.adoptedStyleSheetCb;\n }\n attachLinkElement(linkEl, childSn) {\n if (\"_cssText\" in childSn.attributes)\n this.mutationCb({\n adds: [],\n removes: [],\n texts: [],\n attributes: [\n {\n id: childSn.id,\n attributes: childSn.attributes\n }\n ]\n });\n this.trackLinkElement(linkEl);\n }\n trackLinkElement(linkEl) {\n if (this.trackedLinkElements.has(linkEl)) return;\n this.trackedLinkElements.add(linkEl);\n this.trackStylesheetInLinkElement(linkEl);\n }\n adoptStyleSheets(sheets, hostId) {\n if (sheets.length === 0) return;\n const adoptedStyleSheetData = {\n id: hostId,\n styleIds: []\n };\n const styles = [];\n for (const sheet of sheets) {\n let styleId;\n if (!this.styleMirror.has(sheet)) {\n styleId = this.styleMirror.add(sheet);\n styles.push({\n styleId,\n rules: Array.from(sheet.rules || CSSRule, (r2, index2) => ({\n rule: stringifyRule(r2, sheet.href),\n index: index2\n }))\n });\n } else styleId = this.styleMirror.getId(sheet);\n adoptedStyleSheetData.styleIds.push(styleId);\n }\n if (styles.length > 0) adoptedStyleSheetData.styles = styles;\n this.adoptedStyleSheetCb(adoptedStyleSheetData);\n }\n reset() {\n this.styleMirror.reset();\n this.trackedLinkElements = /* @__PURE__ */ new WeakSet();\n }\n // TODO: take snapshot on stylesheet reload by applying event listener\n trackStylesheetInLinkElement(_linkEl) {\n }\n}\nclass ProcessedNodeManager {\n constructor() {\n __publicField(this, \"nodeMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"active\", false);\n }\n inOtherBuffer(node2, thisBuffer) {\n const buffers = this.nodeMap.get(node2);\n return buffers && Array.from(buffers).some((buffer) => buffer !== thisBuffer);\n }\n add(node2, buffer) {\n if (!this.active) {\n this.active = true;\n requestAnimationFrame(() => {\n this.nodeMap = /* @__PURE__ */ new WeakMap();\n this.active = false;\n });\n }\n this.nodeMap.set(node2, (this.nodeMap.get(node2) || /* @__PURE__ */ new Set()).add(buffer));\n }\n destroy() {\n }\n}\nlet wrappedEmit;\nlet takeFullSnapshot$1;\nlet canvasManager;\nlet recording = false;\ntry {\n if (Array.from([1], (x2) => x2 * 2)[0] !== 2) {\n const cleanFrame = document.createElement(\"iframe\");\n document.body.appendChild(cleanFrame);\n Array.from = ((_a = cleanFrame.contentWindow) == null ? void 0 : _a.Array.from) || Array.from;\n document.body.removeChild(cleanFrame);\n }\n} catch (err) {\n console.debug(\"Unable to override Array.from\", err);\n}\nconst mirror = createMirror$2();\nfunction record(options = {}) {\n const {\n emit,\n checkoutEveryNms,\n checkoutEveryNth,\n blockClass = \"rr-block\",\n blockSelector = null,\n ignoreClass = \"rr-ignore\",\n ignoreSelector = null,\n maskTextClass = \"rr-mask\",\n maskTextSelector = null,\n inlineStylesheet = true,\n maskAllInputs,\n maskInputOptions: _maskInputOptions,\n slimDOMOptions: _slimDOMOptions,\n maskInputFn,\n maskTextFn,\n hooks,\n packFn,\n sampling = {},\n dataURLOptions = {},\n mousemoveWait,\n recordDOM = true,\n recordCanvas = false,\n recordCrossOriginIframes = false,\n recordAfter = options.recordAfter === \"DOMContentLoaded\" ? options.recordAfter : \"load\",\n userTriggeredOnInput = false,\n collectFonts = false,\n inlineImages = false,\n plugins,\n keepIframeSrcFn = () => false,\n ignoreCSSAttributes = /* @__PURE__ */ new Set([]),\n errorHandler: errorHandler2\n } = options;\n registerErrorHandler(errorHandler2);\n const inEmittingFrame = recordCrossOriginIframes ? window.parent === window : true;\n let passEmitsToParent = false;\n if (!inEmittingFrame) {\n try {\n if (window.parent.document) {\n passEmitsToParent = false;\n }\n } catch (e2) {\n passEmitsToParent = true;\n }\n }\n if (inEmittingFrame && !emit) {\n throw new Error(\"emit function is required\");\n }\n if (!inEmittingFrame && !passEmitsToParent) {\n return () => {\n };\n }\n if (mousemoveWait !== void 0 && sampling.mousemove === void 0) {\n sampling.mousemove = mousemoveWait;\n }\n mirror.reset();\n const maskInputOptions = maskAllInputs === true ? {\n color: true,\n date: true,\n \"datetime-local\": true,\n email: true,\n month: true,\n number: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true,\n textarea: true,\n select: true,\n password: true\n } : _maskInputOptions !== void 0 ? _maskInputOptions : { password: true };\n const slimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === \"all\" ? {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaVerification: true,\n // the following are off for slimDOMOptions === true,\n // as they destroy some (hidden) info:\n headMetaAuthorship: _slimDOMOptions === \"all\",\n headMetaDescKeywords: _slimDOMOptions === \"all\",\n headTitleMutations: _slimDOMOptions === \"all\"\n } : _slimDOMOptions ? _slimDOMOptions : {};\n polyfill$1();\n let lastFullSnapshotEvent;\n let incrementalSnapshotCount = 0;\n const eventProcessor = (e2) => {\n for (const plugin3 of plugins || []) {\n if (plugin3.eventProcessor) {\n e2 = plugin3.eventProcessor(e2);\n }\n }\n if (packFn && // Disable packing events which will be emitted to parent frames.\n !passEmitsToParent) {\n e2 = packFn(e2);\n }\n return e2;\n };\n wrappedEmit = (r2, isCheckout) => {\n var _a2;\n const e2 = r2;\n e2.timestamp = nowTimestamp();\n if (((_a2 = mutationBuffers[0]) == null ? void 0 : _a2.isFrozen()) && e2.type !== EventType.FullSnapshot && !(e2.type === EventType.IncrementalSnapshot && e2.data.source === IncrementalSource.Mutation)) {\n mutationBuffers.forEach((buf) => buf.unfreeze());\n }\n if (inEmittingFrame) {\n emit == null ? void 0 : emit(eventProcessor(e2), isCheckout);\n } else if (passEmitsToParent) {\n const message = {\n type: \"rrweb\",\n event: eventProcessor(e2),\n origin: window.location.origin,\n isCheckout\n };\n window.parent.postMessage(message, \"*\");\n }\n if (e2.type === EventType.FullSnapshot) {\n lastFullSnapshotEvent = e2;\n incrementalSnapshotCount = 0;\n } else if (e2.type === EventType.IncrementalSnapshot) {\n if (e2.data.source === IncrementalSource.Mutation && e2.data.isAttachIframe) {\n return;\n }\n incrementalSnapshotCount++;\n const exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\n const exceedTime = checkoutEveryNms && e2.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\n if (exceedCount || exceedTime) {\n takeFullSnapshot$1(true);\n }\n }\n };\n const wrappedMutationEmit = (m) => {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Mutation,\n ...m\n }\n });\n };\n const wrappedScrollEmit = (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Scroll,\n ...p\n }\n });\n const wrappedCanvasMutationEmit = (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.CanvasMutation,\n ...p\n }\n });\n const wrappedAdoptedStyleSheetEmit = (a2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.AdoptedStyleSheet,\n ...a2\n }\n });\n const stylesheetManager = new StylesheetManager({\n mutationCb: wrappedMutationEmit,\n adoptedStyleSheetCb: wrappedAdoptedStyleSheetEmit\n });\n const iframeManager = new IframeManager({\n mirror,\n mutationCb: wrappedMutationEmit,\n stylesheetManager,\n recordCrossOriginIframes,\n wrappedEmit\n });\n for (const plugin3 of plugins || []) {\n if (plugin3.getMirror)\n plugin3.getMirror({\n nodeMirror: mirror,\n crossOriginIframeMirror: iframeManager.crossOriginIframeMirror,\n crossOriginIframeStyleMirror: iframeManager.crossOriginIframeStyleMirror\n });\n }\n const processedNodeManager = new ProcessedNodeManager();\n canvasManager = new CanvasManager({\n recordCanvas,\n mutationCb: wrappedCanvasMutationEmit,\n win: window,\n blockClass,\n blockSelector,\n mirror,\n sampling: sampling.canvas,\n dataURLOptions\n });\n const shadowDomManager = new ShadowDomManager({\n mutationCb: wrappedMutationEmit,\n scrollCb: wrappedScrollEmit,\n bypassOptions: {\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n inlineStylesheet,\n maskInputOptions,\n dataURLOptions,\n maskTextFn,\n maskInputFn,\n recordCanvas,\n inlineImages,\n sampling,\n slimDOMOptions,\n iframeManager,\n stylesheetManager,\n canvasManager,\n keepIframeSrcFn,\n processedNodeManager\n },\n mirror\n });\n takeFullSnapshot$1 = (isCheckout = false) => {\n if (!recordDOM) {\n return;\n }\n wrappedEmit(\n {\n type: EventType.Meta,\n data: {\n href: window.location.href,\n width: getWindowWidth(),\n height: getWindowHeight()\n }\n },\n isCheckout\n );\n stylesheetManager.reset();\n shadowDomManager.init();\n mutationBuffers.forEach((buf) => buf.lock());\n const node2 = snapshot(document, {\n mirror,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n inlineStylesheet,\n maskAllInputs: maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOM: slimDOMOptions,\n dataURLOptions,\n recordCanvas,\n inlineImages,\n onSerialize: (n2) => {\n if (isSerializedIframe(n2, mirror)) {\n iframeManager.addIframe(n2);\n }\n if (isSerializedStylesheet(n2, mirror)) {\n stylesheetManager.trackLinkElement(n2);\n }\n if (hasShadowRoot(n2)) {\n shadowDomManager.addShadowRoot(index.shadowRoot(n2), document);\n }\n },\n onIframeLoad: (iframe, childSn) => {\n iframeManager.attachIframe(iframe, childSn);\n shadowDomManager.observeAttachShadow(iframe);\n },\n onStylesheetLoad: (linkEl, childSn) => {\n stylesheetManager.attachLinkElement(linkEl, childSn);\n },\n keepIframeSrcFn\n });\n if (!node2) {\n return console.warn(\"Failed to snapshot the document\");\n }\n wrappedEmit(\n {\n type: EventType.FullSnapshot,\n data: {\n node: node2,\n initialOffset: getWindowScroll(window)\n }\n },\n isCheckout\n );\n mutationBuffers.forEach((buf) => buf.unlock());\n if (document.adoptedStyleSheets && document.adoptedStyleSheets.length > 0)\n stylesheetManager.adoptStyleSheets(\n document.adoptedStyleSheets,\n mirror.getId(document)\n );\n };\n try {\n const handlers = [];\n const observe = (doc) => {\n var _a2;\n return callbackWrapper(initObservers)(\n {\n mutationCb: wrappedMutationEmit,\n mousemoveCb: (positions, source) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source,\n positions\n }\n }),\n mouseInteractionCb: (d) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.MouseInteraction,\n ...d\n }\n }),\n scrollCb: wrappedScrollEmit,\n viewportResizeCb: (d) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.ViewportResize,\n ...d\n }\n }),\n inputCb: (v2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Input,\n ...v2\n }\n }),\n mediaInteractionCb: (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.MediaInteraction,\n ...p\n }\n }),\n styleSheetRuleCb: (r2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.StyleSheetRule,\n ...r2\n }\n }),\n styleDeclarationCb: (r2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.StyleDeclaration,\n ...r2\n }\n }),\n canvasMutationCb: wrappedCanvasMutationEmit,\n fontCb: (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Font,\n ...p\n }\n }),\n selectionCb: (p) => {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Selection,\n ...p\n }\n });\n },\n customElementCb: (c2) => {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.CustomElement,\n ...c2\n }\n });\n },\n blockClass,\n ignoreClass,\n ignoreSelector,\n maskTextClass,\n maskTextSelector,\n maskInputOptions,\n inlineStylesheet,\n sampling,\n recordDOM,\n recordCanvas,\n inlineImages,\n userTriggeredOnInput,\n collectFonts,\n doc,\n maskInputFn,\n maskTextFn,\n keepIframeSrcFn,\n blockSelector,\n slimDOMOptions,\n dataURLOptions,\n mirror,\n iframeManager,\n stylesheetManager,\n shadowDomManager,\n processedNodeManager,\n canvasManager,\n ignoreCSSAttributes,\n plugins: ((_a2 = plugins == null ? void 0 : plugins.filter((p) => p.observer)) == null ? void 0 : _a2.map((p) => ({\n observer: p.observer,\n options: p.options,\n callback: (payload) => wrappedEmit({\n type: EventType.Plugin,\n data: {\n plugin: p.name,\n payload\n }\n })\n }))) || []\n },\n hooks\n );\n };\n iframeManager.addLoadListener((iframeEl) => {\n try {\n handlers.push(observe(iframeEl.contentDocument));\n } catch (error) {\n console.warn(error);\n }\n });\n const init = () => {\n takeFullSnapshot$1();\n handlers.push(observe(document));\n recording = true;\n };\n if (document.readyState === \"interactive\" || document.readyState === \"complete\") {\n init();\n } else {\n handlers.push(\n on(\"DOMContentLoaded\", () => {\n wrappedEmit({\n type: EventType.DomContentLoaded,\n data: {}\n });\n if (recordAfter === \"DOMContentLoaded\") init();\n })\n );\n handlers.push(\n on(\n \"load\",\n () => {\n wrappedEmit({\n type: EventType.Load,\n data: {}\n });\n if (recordAfter === \"load\") init();\n },\n window\n )\n );\n }\n return () => {\n handlers.forEach((h) => h());\n processedNodeManager.destroy();\n recording = false;\n unregisterErrorHandler();\n };\n } catch (error) {\n console.warn(error);\n }\n}\nrecord.addCustomEvent = (tag, payload) => {\n if (!recording) {\n throw new Error(\"please add custom event after start recording\");\n }\n wrappedEmit({\n type: EventType.Custom,\n data: {\n tag,\n payload\n }\n });\n};\nrecord.freezePage = () => {\n mutationBuffers.forEach((buf) => buf.freeze());\n};\nrecord.takeFullSnapshot = (isCheckout) => {\n if (!recording) {\n throw new Error(\"please take full snapshot after start recording\");\n }\n takeFullSnapshot$1(isCheckout);\n};\nrecord.mirror = mirror;\nvar n;\n!function(t2) {\n t2[t2.NotStarted = 0] = \"NotStarted\", t2[t2.Running = 1] = \"Running\", t2[t2.Stopped = 2] = \"Stopped\";\n}(n || (n = {}));\nexport {\n record\n};\n//# sourceMappingURL=record.js.map\n","import { isMobile } from \"./GleapHelper\";\nimport { record } from \"@rrweb/record\";\n\nexport default class GleapReplayRecorder {\n startDate = undefined;\n events = [];\n bufferSize = 0;\n stopFunction = undefined;\n customOptions = {};\n\n // GleapReplayRecorder singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapReplayRecorder();\n return this.instance;\n } else {\n return this.instance;\n }\n }\n\n constructor() {}\n\n setOptions(options) {\n this.customOptions = options;\n }\n\n /**\n * Start replays\n * @returns\n */\n start() {\n this.stop();\n\n this.startDate = Date.now();\n var events = this.events;\n\n var options = {\n inlineStylesheet: true,\n blockClass: \"gl-block\",\n ignoreClass: \"gl-ignore\",\n maskTextClass: \"gl-mask\",\n dataURLOptions: {\n quality: 0.7,\n },\n recordCanvas: false,\n sampling: {\n scroll: 150,\n mouseInteraction: {\n MouseUp: false,\n MouseDown: false,\n Click: true,\n ContextMenu: true,\n DblClick: true,\n Focus: true,\n Blur: true,\n TouchStart: true,\n TouchEnd: false,\n },\n },\n collectFonts: false,\n recordCrossOriginIframes: false,\n };\n\n try {\n this.stopFunction = record({\n ...options,\n ...this.customOptions,\n emit(rrwebEvent) {\n const { event } = ensureMaxMessageSize(rrwebEvent);\n events.push(event);\n },\n });\n } catch (e) {\n console.error(e);\n }\n }\n\n /**\n * Stop replays\n * @returns\n */\n stop() {\n if (this.stopFunction) {\n this.stopFunction();\n }\n\n this.startDate = undefined;\n this.events = [];\n this.bufferSize = 0;\n }\n\n /**\n * Get the current replay data\n * @returns {Promise}\n */\n getReplayData() {\n const replayResult = {\n startDate: this.startDate,\n events: this.events,\n baseUrl: window.location.origin,\n width: window.innerWidth,\n height: window.innerHeight,\n isMobile: isMobile(),\n type: \"rrweb\",\n };\n\n return replayResult;\n }\n}\n\nexport function ensureMaxMessageSize(data) {\n let stringifiedData = JSON.stringify(data);\n if (stringifiedData.length > 4000000) {\n const dataURIRegex = /data:([\\w\\/\\-\\.]+);(\\w+),([^)\"]*)/gim;\n const matches = stringifiedData.matchAll(dataURIRegex);\n for (const match of matches) {\n if (match[1].toLocaleLowerCase().slice(0, 6) === \"image/\") {\n stringifiedData = stringifiedData.replace(\n match[0],\n \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAQSURBVHgBAQUA+v8ABRg5/wHSAVZN1mnaAAAAAElFTkSuQmCC\"\n );\n } else {\n stringifiedData = stringifiedData.replace(match[0], \"\");\n }\n }\n }\n return { event: JSON.parse(stringifiedData), size: stringifiedData.length };\n}\n","export class ScreenDrawer {\n rerender;\n svgElement = null;\n path = null;\n strPath;\n strokeWidth = 12;\n strokeWidthRect = 6;\n bufferSize = 4;\n buffer = [];\n startPoint = null;\n tool = \"rect\";\n color = \"#EB144C\";\n mouseDown = null;\n mouseMove = null;\n mouseUp = null;\n resizeListener = null;\n pathBuffer = [];\n\n constructor(rerender) {\n const self = this;\n\n this.rerender = rerender;\n\n this.svgElement = document.querySelector(\".bb-capture-svg\");\n this.svgElement.style.minHeight = `${document.documentElement.scrollHeight}px`;\n\n // Window resize listener.\n this.resizeListener = function (e) {\n self.svgElement.style.minHeight = `${document.documentElement.scrollHeight}px`;\n };\n window.addEventListener(\"resize\", this.resizeListener, true);\n\n this.mouseDown = function (e) {\n e.preventDefault();\n\n const colorpicker = document.querySelector(\n \".bb-capture-toolbar-item-colorpicker\"\n );\n if (colorpicker) {\n colorpicker.style.display = \"none\";\n }\n\n self.fadeOutToolbar();\n if (self.tool === \"pen\" || self.tool === \"blur\") {\n self.mouseDownPen(e);\n }\n if (self.tool === \"rect\") {\n self.mouseDownRect(e);\n }\n };\n\n this.mouseMove = function (e) {\n e.preventDefault();\n if (self.tool === \"pen\" || self.tool === \"blur\") {\n self.mouseMovePen(e);\n }\n if (self.tool === \"rect\") {\n self.mouseMoveRect(e);\n }\n };\n\n this.mouseUp = function (e) {\n e.preventDefault();\n self.fadeInToolbar();\n if (self.tool === \"pen\" || self.tool === \"blur\") {\n self.mouseUpPen(e);\n }\n if (self.tool === \"rect\") {\n self.mouseUpRect(e);\n }\n };\n\n this.svgElement.addEventListener(\"mousedown\", this.mouseDown);\n this.svgElement.addEventListener(\"mousemove\", this.mouseMove);\n this.svgElement.addEventListener(\"mouseup\", this.mouseUp);\n this.svgElement.addEventListener(\"touchstart\", this.mouseDown, false);\n this.svgElement.addEventListener(\"touchmove\", this.mouseMove, false);\n this.svgElement.addEventListener(\"touchend\", this.mouseUp, false);\n\n setTimeout(() => {\n this.rerender();\n }, 100);\n }\n\n clear() {\n if (this.svgElement) {\n while (this.svgElement.firstChild) {\n this.svgElement.firstChild.remove();\n }\n }\n }\n\n destroy() {\n this.svgElement.removeEventListener(\"mousedown\", this.mouseDown);\n this.svgElement.removeEventListener(\"mousemove\", this.mouseMove);\n this.svgElement.removeEventListener(\"mouseup\", this.mouseUp);\n this.svgElement.removeEventListener(\"touchstart\", this.mouseDown);\n this.svgElement.removeEventListener(\"touchmove\", this.mouseMove);\n this.svgElement.removeEventListener(\"touchend\", this.mouseUp);\n window.removeEventListener(\"resize\", this.resizeListener);\n }\n\n mouseUpPen() {\n if (this.path) {\n this.path = null;\n }\n }\n\n mouseUpRect() {\n if (this.path) {\n this.path = null;\n }\n }\n\n mouseMovePen(e) {\n if (this.path) {\n this.appendToBuffer(this.getMousePosition(e));\n this.updateSvgPath();\n }\n }\n\n mouseMoveRect(e) {\n if (this.path) {\n var p = this.getMousePosition(e);\n var w = Math.abs(p.x - this.startPoint.x);\n var h = Math.abs(p.y - this.startPoint.y);\n var x = p.x;\n var y = p.y;\n if (p.x > this.startPoint.x) {\n x = this.startPoint.x;\n }\n if (p.y > this.startPoint.y) {\n y = this.startPoint.y;\n }\n\n this.path.setAttributeNS(null, \"x\", x);\n this.path.setAttributeNS(null, \"y\", y);\n this.path.setAttributeNS(null, \"width\", w);\n this.path.setAttributeNS(null, \"height\", h);\n }\n }\n\n mouseDownRect(e) {\n this.path = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n this.path.setAttribute(\"fill\", \"none\");\n this.path.setAttribute(\"stroke\", this.color);\n this.path.setAttribute(\"stroke-linecap\", \"round\");\n this.path.setAttribute(\"stroke-width\", this.strokeWidthRect);\n\n this.startPoint = this.getMousePosition(e);\n this.appendPathToSvg(this.path);\n }\n\n mouseDownPen(e) {\n var color = this.color + \"AA\";\n var strokeWidth = this.strokeWidth;\n\n if (this.tool === \"blur\") {\n color = \"#000000\";\n strokeWidth = 40;\n }\n\n this.path = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this.path.setAttribute(\"fill\", \"none\");\n this.path.setAttribute(\"stroke\", color);\n this.path.setAttribute(\"stroke-linecap\", \"round\");\n this.path.setAttribute(\"stroke-width\", strokeWidth);\n this.buffer = [];\n var pt = this.getMousePosition(e);\n this.appendToBuffer(pt);\n this.strPath = \"M\" + pt.x + \" \" + pt.y;\n this.path.setAttribute(\"d\", this.strPath);\n this.appendPathToSvg(this.path);\n }\n\n setTool(tool) {\n this.tool = tool;\n }\n\n setColor(color) {\n this.color = color;\n }\n\n getMousePosition(e) {\n if (e.touches && e.touches.length > 0) {\n return {\n x: e.touches[0].clientX,\n y: e.touches[0].clientY,\n };\n }\n\n return {\n x: e.clientX,\n y: e.clientY,\n };\n }\n\n // Calculate the average point, starting at offset in the buffer\n getAveragePoint(offset) {\n var len = this.buffer.length;\n if (len % 2 === 1 || len >= this.bufferSize) {\n var totalX = 0;\n var totalY = 0;\n var pt, i;\n var count = 0;\n for (i = offset; i < len; i++) {\n count++;\n pt = this.buffer[i];\n totalX += pt.x;\n totalY += pt.y;\n }\n return {\n x: totalX / count,\n y: totalY / count,\n };\n }\n return null;\n }\n\n updateSvgPath() {\n var pt = this.getAveragePoint(0);\n\n if (pt) {\n // Get the smoothed part of the path that will not change\n this.strPath += \" L\" + pt.x + \" \" + pt.y;\n\n // Get the last part of the path (close to the current mouse position)\n // This part will change if the mouse moves again\n var tmpPath = \"\";\n for (var offset = 2; offset < this.buffer.length; offset += 2) {\n pt = this.getAveragePoint(offset);\n tmpPath += \" L\" + pt.x + \" \" + pt.y;\n }\n\n // Set the complete current path coordinates\n this.path.setAttribute(\"d\", this.strPath + tmpPath);\n }\n }\n\n appendToBuffer(pt) {\n this.buffer.push(pt);\n while (this.buffer.length > this.bufferSize) {\n this.buffer.shift();\n }\n }\n\n appendPathToSvg(path) {\n this.svgElement.appendChild(path);\n this.pathBuffer.push(path);\n this.rerender();\n }\n\n removeLastAddedPathFromSvg() {\n if (this.pathBuffer.length <= 0 || !this.svgElement) {\n return;\n }\n\n this.svgElement.removeChild(this.pathBuffer[this.pathBuffer.length - 1]);\n\n this.pathBuffer.pop();\n\n this.rerender();\n }\n\n fadeOutToolbar() {\n var fadeTarget = document.querySelector(\".bb-capture-toolbar\");\n if (fadeTarget) {\n fadeTarget.style.opacity = 0;\n fadeTarget.style.pointerEvents = \"none\";\n }\n }\n\n fadeInToolbar() {\n var fadeTarget = document.querySelector(\".bb-capture-toolbar\");\n if (fadeTarget) {\n fadeTarget.style.opacity = 1;\n fadeTarget.style.pointerEvents = \"auto\";\n }\n }\n}\n","export class GleapScrollStopper {\n keys = { 37: 1, 38: 1, 39: 1, 40: 1 };\n supportsPassive = false;\n wheelOpt = this.supportsPassive ? { passive: false } : false;\n wheelEvent =\n \"onwheel\" in document.createElement(\"div\") ? \"wheel\" : \"mousewheel\";\n scrollDisabled = false;\n\n // GleapScrollStopper singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapScrollStopper();\n return this.instance;\n } else {\n return this.instance;\n }\n }\n\n constructor() {\n const self = this;\n try {\n window.addEventListener(\n \"test\",\n null,\n Object.defineProperty({}, \"passive\", {\n get: function () {\n self.supportsPassive = true;\n self.wheelOpt = self.supportsPassive ? { passive: false } : false;\n },\n })\n );\n } catch (e) {}\n }\n\n preventDefault(e) {\n e.preventDefault();\n }\n\n preventDefaultForScrollKeys(e) {\n if (this.keys && this.keys[e.keyCode]) {\n this.preventDefault(e);\n return false;\n }\n }\n\n static disableScroll() {\n const instance = this.getInstance();\n if (instance.scrollDisabled) {\n return;\n }\n\n instance.scrollDisabled = true;\n\n window.addEventListener(\"DOMMouseScroll\", instance.preventDefault, false); // older FF\n window.addEventListener(\n instance.wheelEvent,\n instance.preventDefault,\n instance.wheelOpt\n ); // modern desktop\n window.addEventListener(\n \"touchmove\",\n instance.preventDefault,\n instance.wheelOpt\n ); // mobile\n window.addEventListener(\n \"keydown\",\n instance.preventDefaultForScrollKeys,\n false\n );\n }\n\n static enableScroll() {\n const instance = this.getInstance();\n if (!instance.scrollDisabled) {\n return;\n }\n\n instance.scrollDisabled = false;\n window.removeEventListener(\n \"DOMMouseScroll\",\n instance.preventDefault,\n false\n );\n window.removeEventListener(\n instance.wheelEvent,\n instance.preventDefault,\n instance.wheelOpt\n );\n window.removeEventListener(\n \"touchmove\",\n instance.preventDefault,\n instance.wheelOpt\n );\n window.removeEventListener(\n \"keydown\",\n instance.preventDefaultForScrollKeys,\n false\n );\n }\n}\n","import Gleap, { GleapTranslationManager, GleapFrameManager } from \"./Gleap\";\nimport { ScreenDrawer } from \"./ScreenDrawer\";\nimport { GleapScrollStopper } from \"./GleapScrollStopper\";\nimport { GleapScreenRecorder } from \"./GleapScreenRecorder\";\nimport { loadIcon } from \"./UI\";\n\nexport default class GleapMarkerManager {\n type = \"screenshot\";\n dragCursor = null;\n screenRecorder = null;\n callback = null;\n screenDrawer = null;\n escListener = null;\n pageLeaveListener = null;\n overrideLanguage = Gleap.getInstance().overrideLanguage;\n\n constructor(type) {\n this.type = type;\n }\n\n hideWidgetUI() {\n const feedbackButton = document.querySelector(\".bb-feedback-button\");\n if (feedbackButton) {\n feedbackButton.style.display = \"none\";\n }\n\n const dialogUI = document.querySelector(\".bb-feedback-dialog-container\");\n if (dialogUI) {\n dialogUI.style.display = \"none\";\n }\n }\n\n showWidgetUI() {\n if (this.type === \"screenshot\") {\n GleapScrollStopper.enableScroll();\n }\n\n // Stop screenrecording.\n if (this.screenRecorder) {\n this.screenRecorder.stopScreenRecording();\n }\n\n // Unregister ESC listener\n this.unregisterListeners();\n\n // Cleanup mouse pointer\n this.cleanupMousePointer();\n\n if (this.screenDrawer) {\n this.screenDrawer.destroy();\n }\n\n // Remove the toolbar UI\n const dialog = document.querySelector(\".bb-capture-toolbar\");\n if (dialog) {\n dialog.remove();\n }\n\n // Capture SVG ref\n const captureSVG = document.querySelector(\".bb-capture-svg\");\n if (captureSVG) {\n captureSVG.classList.add(\"bb-capture-svg--preview\");\n }\n\n // Remove the preview UI\n const videoPreviewContainer = document.querySelector(\".bb-capture-preview\");\n if (videoPreviewContainer) {\n videoPreviewContainer.remove();\n }\n\n // Feedback button\n const feedbackButton = document.querySelector(\".bb-feedback-button\");\n if (feedbackButton) {\n feedbackButton.style.display = \"flex\";\n }\n\n // Feedback dialog container\n const dialogUI = document.querySelector(\".bb-feedback-dialog-container\");\n if (dialogUI) {\n dialogUI.style.display = \"block\";\n }\n\n // Dismiss button\n const dismissUI = document.querySelector(\".bb-capture-dismiss\");\n if (dismissUI) {\n dismissUI.style.display = \"none\";\n }\n\n // Hide the color picker\n const colorPicker = document.querySelector(\n \".bb-capture-toolbar-item-colorpicker\"\n );\n if (colorPicker) {\n colorPicker.style.display = \"none\";\n }\n\n // Border layer\n const borderLayer = document.querySelector(\n \".bb-capture-editor-borderlayer\"\n );\n if (borderLayer) {\n borderLayer.style.display = \"none\";\n }\n }\n\n clear() {\n const captureEditor = document.querySelector(\".bb-capture-editor\");\n if (captureEditor) {\n captureEditor.remove();\n }\n }\n\n setMouseMove(x, y) {\n if (!this.dragCursor) {\n return;\n }\n\n this.dragCursor.style.left = `${x + 6}px`;\n this.dragCursor.style.top = `${y - 26}px`;\n this.dragCursor.style.right = null;\n }\n\n mouseMoveEventHandler(e) {\n const x = e.clientX;\n const y = e.clientY;\n this.setMouseMove(x, y);\n }\n\n touchMoveEventHandler(e) {\n const x = e.touches[0].clientX;\n const y = e.touches[0].clientY;\n this.setMouseMove(x, y);\n }\n\n setupMousePointer() {\n const self = this;\n this.dragCursor = document.querySelector(\".bb-capture-editor-drag-info\");\n const captureSVG = document.querySelector(\".bb-capture-svg\");\n captureSVG.addEventListener(\"mouseenter\", (e) => {\n self.dragCursor.style.opacity = 1;\n });\n\n captureSVG.addEventListener(\"mouseleave\", (e) => {\n self.dragCursor.style.opacity = 0;\n });\n\n document.documentElement.addEventListener(\n \"mousemove\",\n this.mouseMoveEventHandler.bind(this)\n );\n document.documentElement.addEventListener(\n \"touchmove\",\n this.touchMoveEventHandler.bind(this)\n );\n }\n\n cleanupMousePointer() {\n document.documentElement.removeEventListener(\n \"mousemove\",\n this.mouseMoveEventHandler\n );\n document.documentElement.removeEventListener(\n \"touchmove\",\n this.touchMoveEventHandler\n );\n\n // Clean up toolbar drag listeners\n const dragHandle = document.querySelector(\".bb-capture-toolbar-item[data-type='drag']\");\n if (dragHandle) {\n dragHandle.removeEventListener(\"mousedown\", this.dragStart);\n dragHandle.removeEventListener(\"touchstart\", this.dragStart);\n document.removeEventListener(\"mousemove\", this.drag);\n document.removeEventListener(\"touchmove\", this.drag);\n document.removeEventListener(\"mouseup\", this.dragEnd);\n document.removeEventListener(\"touchend\", this.dragEnd);\n }\n\n if (this.dragCursor) {\n this.dragCursor.remove();\n }\n }\n\n createEditorUI() {\n // Add HTML for drawing and recording\n var bugReportingEditor = document.createElement(\"div\");\n bugReportingEditor.className = \"bb-capture-editor\";\n bugReportingEditor.innerHTML = `\n
\n \n
${loadIcon(\"dismiss\")}
\n
${loadIcon(\"rect\")}
\n
\n
\n ${loadIcon(\"drag\")}\n
\n ${this.type === \"capture\"\n ? `
\n ${loadIcon(\"recorderon\")}\n ${loadIcon(\"recorderoff\")}\n \n
\n
\n ${loadIcon(\"mic\")}\n \n
\n
2:00
\n
\n
\n ${loadIcon(\"pointer\")}\n
`\n : \"\"\n }\n
\n ${loadIcon(\"rect\")}\n
\n
\n ${loadIcon(\"pen\")}\n
\n
\n ${loadIcon(\"blur\")}\n
\n
\n
\n ${GleapTranslationManager.translateText(\n `pickAColor`\n )}\n
\n
\n ${loadIcon(\"undo\")}\n ${GleapTranslationManager.translateText(\n `undo`\n )}\n
\n ${this.type !== \"capture\"\n ? `
${GleapTranslationManager.translateText(\n `next`\n )}
`\n : \"\"\n }\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
${GleapTranslationManager.translateText(\n `retry`\n )}
\n
${GleapTranslationManager.translateText(\n `next`\n )}
\n
\n
\n
\n `;\n document.body.appendChild(bugReportingEditor);\n\n // Set RTL layout\n bugReportingEditor.setAttribute(\"dir\", GleapTranslationManager.getInstance().isRTLLayout ? \"rtl\" : \"ltr\");\n }\n\n showNextStep = function () {\n // Adapt the UI\n this.showWidgetUI();\n\n if (this.callback) {\n GleapFrameManager.getInstance().sendMessage({\n name: \"set-form-data\",\n data: {\n formKey: \"capture\",\n data: {\n value: this.type,\n dirty: true,\n }\n }\n });\n this.callback(true);\n }\n };\n\n unregisterListeners() {\n if (this.escListener) {\n document.removeEventListener(\"keydown\", this.escListener);\n }\n\n if (this.pageLeaveListener) {\n window.removeEventListener(\"beforeunload\", this.pageLeaveListener);\n }\n }\n\n registerListeners() {\n const self = this;\n\n // Esc listener\n this.escListener = function (evt) {\n evt = evt || window.event;\n var isEscape = false;\n var isEnter = false;\n if (\"key\" in evt) {\n isEscape = evt.key === \"Escape\";\n isEnter = evt.key === \"Enter\";\n }\n if (isEscape) {\n self.dismiss();\n }\n if (self.type === \"screenshot\" && isEnter) {\n self.showNextStep();\n }\n };\n document.addEventListener(\"keydown\", this.escListener);\n\n // Page leave listener\n this.pageLeaveListener = function (event) {\n event.preventDefault();\n event.returnValue = \"\";\n };\n window.addEventListener(\"beforeunload\", this.pageLeaveListener);\n }\n\n show(callback) {\n this.callback = callback;\n const self = this;\n\n // Register for listeners\n this.registerListeners();\n\n // Hide widget UI\n this.hideWidgetUI();\n\n // Create the editor UI\n this.createEditorUI();\n\n // Setup the mouse pointer\n this.setupMousePointer();\n\n // Setup screenshot data\n if (this.type === \"screenshot\") {\n // Overwrite snapshot position\n Gleap.getInstance().setGlobalDataItem(\"snapshotPosition\", {\n x: window.scrollX,\n y: window.scrollY,\n });\n\n // Disable scroll\n GleapScrollStopper.disableScroll();\n } else {\n // Setup screen recording\n this.setupScreenRecording();\n }\n\n // Hook up the drawing.\n this.screenDrawer = new ScreenDrawer(\n this.captureScreenDrawerRerender.bind(this)\n );\n\n this.setupColorPicker();\n this.setupToolbar();\n }\n\n setupColorPicker() {\n const self = this;\n const selectedColor = document.querySelector(\n \".bb-capture-toolbar-item-selectedcolor\"\n );\n const colorItems = document.querySelectorAll(\n \".bb-capture-toolbar-item-color\"\n );\n const colorpicker = document.querySelector(\n \".bb-capture-toolbar-item-colorpicker\"\n );\n\n for (var i = 0; i < colorItems.length; i++) {\n const colorItem = colorItems[i];\n const hexColor = colorItem.getAttribute(\"data-color\");\n colorItem.style.backgroundColor = hexColor;\n colorItem.onclick = function () {\n if (colorItem) {\n self.screenDrawer.setColor(hexColor);\n if (colorpicker) {\n colorpicker.style.display = \"none\";\n }\n selectedColor.style.backgroundColor = colorItem.style.backgroundColor;\n GleapMarkerManager.setPenColor(hexColor);\n }\n };\n }\n }\n\n static setPenColor(hexColor) {\n const penTips = document.querySelectorAll(\".bb-pen-tip\");\n for (var j = 0; j < penTips.length; j++) {\n penTips[j].style.fill = hexColor;\n }\n }\n\n dismiss() {\n this.showWidgetUI();\n\n if (this.callback) {\n this.callback(false);\n }\n }\n\n setupToolbar() {\n const self = this;\n const toolbar = document.querySelector(\".bb-capture-toolbar\");\n let isDragging = false;\n let currentX;\n let currentY;\n let initialX;\n let initialY;\n let xOffset = 0;\n let yOffset = 0;\n\n const getTransformValues = () => {\n const transform = window.getComputedStyle(toolbar).transform;\n if (transform === 'none') return { x: 0, y: 0 };\n const matrix = new DOMMatrix(transform);\n return { x: matrix.m41, y: matrix.m42 };\n };\n\n this.dragStart = (e) => {\n const { x, y } = getTransformValues();\n xOffset = x;\n yOffset = y;\n\n if (e.type === \"mousedown\") {\n initialX = e.clientX - xOffset;\n initialY = e.clientY - yOffset;\n } else {\n initialX = e.touches[0].clientX - xOffset;\n initialY = e.touches[0].clientY - yOffset;\n }\n isDragging = true;\n };\n\n this.dragEnd = () => {\n isDragging = false;\n };\n\n this.drag = (e) => {\n if (isDragging) {\n e.preventDefault();\n if (e.type === \"mousemove\") {\n currentX = e.clientX - initialX;\n currentY = e.clientY - initialY;\n } else {\n currentX = e.touches[0].clientX - initialX;\n currentY = e.touches[0].clientY - initialY;\n }\n\n xOffset = currentX;\n yOffset = currentY;\n\n toolbar.style.transform = `translate(${currentX}px, ${currentY}px)`;\n }\n };\n\n const dragHandle = document.querySelector(\".bb-capture-toolbar-item[data-type='drag']\");\n\n dragHandle.addEventListener(\"mousedown\", this.dragStart);\n dragHandle.addEventListener(\"touchstart\", this.dragStart);\n document.addEventListener(\"mousemove\", this.drag);\n document.addEventListener(\"touchmove\", this.drag);\n document.addEventListener(\"mouseup\", this.dragEnd);\n document.addEventListener(\"touchend\", this.dragEnd);\n\n // Hook up dismiss button\n const dismissButton = document.querySelector(\".bb-capture-dismiss\");\n dismissButton.onclick = function () {\n self.dismiss();\n };\n\n // Hook up send button\n const nextButton = document.querySelector(\".bb-capture-button-next\");\n if (nextButton) {\n nextButton.onclick = this.showNextStep.bind(this);\n }\n\n const colorpicker = document.querySelector(\n \".bb-capture-toolbar-item-colorpicker\"\n );\n\n // Capture SVG ref\n const captureSVG = document.querySelector(\".bb-capture-svg\");\n\n const chooseTool = function (type, toolbarItem) {\n const toolbarTools = document.querySelectorAll(\n \".bb-capture-toolbar-item-tool\"\n );\n for (let j = 0; j < toolbarTools.length; j++) {\n toolbarTools[j].classList.remove(\"bb-capture-toolbar-item--active\");\n }\n toolbarItem.classList.add(\"bb-capture-toolbar-item--active\");\n self.screenDrawer.setTool(type);\n self.dragCursor.innerHTML = \"\";\n if (type === \"pointer\") {\n captureSVG.style.pointerEvents = \"none\";\n } else {\n captureSVG.style.pointerEvents = \"auto\";\n try {\n var svgClone = toolbarItem.querySelector(\"svg\").cloneNode(true);\n if (svgClone && self.dragCursor) {\n self.dragCursor.appendChild(svgClone);\n }\n } catch (exp) { }\n }\n }\n\n // Setup toolbar items\n var toolbarItems = document.querySelectorAll(\".bb-capture-toolbar-item\");\n for (var i = 0; i < toolbarItems.length; i++) {\n const toolbarItem = toolbarItems[i];\n toolbarItem.onclick = function () {\n const type = toolbarItem.getAttribute(\"data-type\");\n if (colorpicker && type !== \"colorpicker\") {\n colorpicker.style.display = \"none\";\n }\n\n // Mic & recording buttons\n if (type === \"mic\") {\n self.screenRecorder.toggleAudio();\n }\n if (type === \"recording\") {\n if (self.screenRecorder.isRecording) {\n self.screenRecorder.stopScreenRecording();\n } else {\n self.screenRecorder.startScreenRecording();\n chooseTool(\"pointer\", document.querySelector(\".bb-capture-toolbar-item[data-type='pointer']\"));\n }\n }\n\n // Marker buttons\n if (self.type === \"capture\" && !self.screenRecorder.isRecording) {\n // Inactivate buttons.\n return;\n }\n if (\n type === \"pen\" ||\n type === \"blur\" ||\n type === \"rect\" ||\n type === \"pointer\"\n ) {\n chooseTool(type, toolbarItem);\n }\n if (type === \"colorpicker\") {\n if (colorpicker.style.display === \"flex\") {\n colorpicker.style.display = \"none\";\n } else {\n colorpicker.style.display = \"flex\";\n }\n }\n if (type === \"undo\") {\n self.screenDrawer.removeLastAddedPathFromSvg();\n }\n };\n }\n }\n\n captureScreenDrawerRerender() {\n if (!this.screenDrawer) {\n return;\n }\n\n const itemInactiveClass = \"bb-capture-editor-item-inactive\";\n const toolbarItems = document.querySelectorAll(\".bb-capture-toolbar-item\");\n for (var i = 0; i < toolbarItems.length; i++) {\n const toolbarItem = toolbarItems[i];\n const type = toolbarItem.getAttribute(\"data-type\");\n switch (type) {\n case \"undo\":\n if (\n this.screenDrawer.pathBuffer != null &&\n this.screenDrawer.pathBuffer.length > 0\n ) {\n toolbarItem.classList.remove(itemInactiveClass);\n } else {\n toolbarItem.classList.add(itemInactiveClass);\n }\n break;\n default:\n break;\n }\n }\n }\n\n captureRenderer() {\n if (!this.screenRecorder) {\n return;\n }\n\n if (this.screenRecorder.file) {\n Gleap.getInstance().setGlobalDataItem(\"screenRecordingData\", this.screenRecorder.file);\n }\n\n const itemInactiveClass = \"bb-capture-editor-item-inactive\";\n const timerLabel = document.querySelector(\".bb-capture-toolbar-item-timer\");\n const toolbarItems = document.querySelectorAll(\".bb-capture-toolbar-item\");\n const screenRecordingTooltip = document.querySelector(\n \".bb-tooltip-screen-recording\"\n );\n const audioRecordingTooltip = document.querySelector(\n \".bb-tooltip-audio-recording\"\n );\n const captureEditor = document.querySelector(\".bb-capture-editor\");\n const recordingClass = \"bb-capture-editor-recording\";\n const notRecordingClass = \"bb-capture-editor-notrecording\";\n if (this.screenRecorder.isRecording) {\n captureEditor.classList.add(recordingClass);\n captureEditor.classList.remove(notRecordingClass);\n } else {\n captureEditor.classList.add(notRecordingClass);\n captureEditor.classList.remove(recordingClass);\n }\n \n // Update UI.\n const dialog = document.querySelector(\".bb-capture-toolbar\");\n const videoPreviewContainer = document.querySelector(\".bb-capture-preview\");\n videoPreviewContainer.style.display = this.screenRecorder.file\n ? \"flex\"\n : \"none\";\n dialog.style.display = !this.screenRecorder.file ? \"flex\" : \"none\";\n\n for (var i = 0; i < toolbarItems.length; i++) {\n const toolbarItem = toolbarItems[i];\n const type = toolbarItem.getAttribute(\"data-type\");\n switch (type) {\n case \"mic\":\n if (\n this.screenRecorder.audioAvailable &&\n this.screenRecorder.available\n ) {\n toolbarItem.classList.remove(itemInactiveClass);\n if (!this.screenRecorder.audioMuted) {\n toolbarItem.classList.remove(\n \"bb-capture-toolbar-item--inactivecross\"\n );\n audioRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"mute\"\n );\n } else {\n toolbarItem.classList.add(\n \"bb-capture-toolbar-item--inactivecross\"\n );\n audioRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"unmute\"\n );\n }\n } else {\n toolbarItem.classList.add(itemInactiveClass);\n toolbarItem.classList.add(\"bb-capture-toolbar-item--inactivecross\");\n audioRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"browserNotSupported\"\n );\n }\n break;\n\n case \"recording\":\n if (this.screenRecorder.available) {\n toolbarItem.classList.remove(itemInactiveClass);\n if (this.screenRecorder.isRecording) {\n toolbarItem.setAttribute(\"data-active\", \"true\");\n screenRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"stopRecording\"\n );\n timerLabel.style.display = \"block\";\n } else {\n toolbarItem.setAttribute(\"data-active\", \"false\");\n screenRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"startRecording\"\n );\n timerLabel.style.display = \"none\";\n }\n } else {\n // Recording is not available.\n toolbarItem.classList.add(itemInactiveClass);\n screenRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"browserNotSupported\"\n );\n }\n break;\n\n default:\n break;\n }\n }\n }\n\n setupScreenRecording() {\n const self = this;\n\n // Hook preview next button\n const nextButtonPreview = document.querySelector(\n \".bb-capture-preview-sendbutton\"\n );\n nextButtonPreview.onclick = this.showNextStep.bind(this);\n\n // Hook retry button\n const retryButton = document.querySelector(\n \".bb-capture-preview-retrybutton\"\n );\n retryButton.onclick = function () {\n self.screenRecorder.clearPreview();\n if (self.screenDrawer) {\n self.screenDrawer.clear();\n }\n };\n\n // Setup screen recorder\n this.screenRecorder = new GleapScreenRecorder(\n this.captureRenderer.bind(this),\n GleapTranslationManager.translateText(\n \"accessToScreenSharingDenied\"\n )\n );\n }\n}\n","import {\n GleapFrameManager,\n GleapFeedbackButtonManager,\n GleapConfigManager,\n} from \"./Gleap\";\n\nexport default class GleapTranslationManager {\n overrideLanguage = \"\";\n isRTLLayout = false;\n\n // GleapTranslationManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapTranslationManager();\n }\n return this.instance;\n }\n\n /**\n * Returns the language to override the default language.\n * @returns {string}\n */\n getOverrideLanguage() {\n return this.overrideLanguage;\n }\n\n /**\n * Sets the language to override the default language.\n * @param {*} language\n */\n setOverrideLanguage(language) {\n this.overrideLanguage = language;\n }\n\n updateRTLSupport() {\n // Update RTL support.\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n\n this.isRTLLayout = false;\n if (\n flowConfig &&\n flowConfig.localizationOptions &&\n flowConfig.localizationOptions.rtl\n ) {\n this.isRTLLayout = true;\n }\n\n GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n GleapFrameManager.getInstance().updateFrameStyle();\n }\n\n getActiveLanguage() {\n var language = \"en\";\n if (typeof navigator !== \"undefined\") {\n language = navigator.language.toLowerCase();\n }\n\n // Get language from HTML lang attribute if available\n if (typeof document !== \"undefined\" && document.documentElement) {\n const htmlLang = document.documentElement.lang;\n if (htmlLang && htmlLang.trim() !== \"\") {\n language = htmlLang.toLowerCase().trim();\n }\n }\n\n if (this.overrideLanguage && this.overrideLanguage !== \"\") {\n language = this.overrideLanguage.toLowerCase();\n }\n\n return language;\n }\n\n static translateText(key) {\n if (!key) {\n return \"\";\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const staticTranslation = flowConfig.staticTranslations;\n\n if (staticTranslation && staticTranslation[key]) {\n return staticTranslation[key];\n }\n\n return key;\n }\n\n static translateTextWithVars(key, vars) {\n if (!key) {\n return \"\";\n }\n\n var template = this.translateText(key);\n if (!template) {\n return \"\";\n }\n\n return template.replace(/{(\\w+)}/g, function (_, key) {\n return vars[key];\n });\n }\n}\n","import Gleap from \"./Gleap\";\n\nexport default class GleapShortcutListener {\n shortCutListener = undefined;\n\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapShortcutListener();\n }\n return this.instance;\n }\n\n start() {\n if (this.shortCutListener) {\n return;\n }\n\n const charForEvent = function (event) {\n var code;\n\n if (event.key !== undefined) {\n code = event.key;\n } else if (event.keyIdentifier !== undefined) {\n code = event.keyIdentifier;\n } else if (event.keyCode !== undefined) {\n code = event.keyCode;\n }\n\n return code;\n };\n\n this.shortCutListener = document.addEventListener(\"keyup\", function (e) {\n const char = charForEvent(e);\n if (\n e.ctrlKey &&\n (char === \"u\" || char === \"U\" || char === 85)\n ) {\n Gleap.startFeedbackFlowWithOptions(\"bugreporting\", {\n autostartDrawing: true\n });\n }\n });\n }\n\n stop() {\n if (this.shortCutListener) {\n document.removeEventListener(\"keyup\", this.shortCutListener);\n this.shortCutListener = undefined;\n }\n }\n}","\nexport default class GleapPreFillManager {\n formPreFill = {};\n \n // GleapPreFillManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapPreFillManager();\n }\n return this.instance;\n }\n }\n ","import Gleap, {\n GleapFeedbackButtonManager,\n GleapConfigManager,\n GleapFrameManager,\n GleapSession,\n GleapAudioManager,\n GleapTranslationManager,\n GleapEventManager,\n} from \"./Gleap\";\nimport { loadFromGleapCache, saveToGleapCache } from \"./GleapHelper\";\nimport { loadIcon } from \"./UI\";\n\nexport default class GleapNotificationManager {\n notificationContainer = null;\n notifications = [];\n unreadCount = 0;\n unreadNotificationsKey = \"unread-notifications\";\n isTabActive = true;\n showNotificationBadge = true;\n\n // Keep track of the current index of news being shown\n currentNewsIndex = 0;\n\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapNotificationManager();\n }\n return this.instance;\n }\n\n constructor() {}\n\n updateTabBarNotificationCount() {\n GleapEventManager.notifyEvent(\"unread-count-changed\", this.unreadCount);\n }\n\n injectNotificationUI() {\n if (this.notificationContainer) {\n return;\n }\n\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-notification-container gleap-font\";\n document.body.appendChild(elem);\n this.notificationContainer = elem;\n\n this.updateContainerStyle();\n this.reloadNotificationsFromCache();\n }\n\n reloadNotificationsFromCache() {\n try {\n const notificationsFromCache = loadFromGleapCache(\n this.unreadNotificationsKey\n );\n if (notificationsFromCache && notificationsFromCache.length > 0) {\n let nots = notificationsFromCache.filter(\n (notification) =>\n new Date(notification.createdAt) >\n new Date(Date.now() - 1 * 60 * 60 * 1000)\n );\n\n if (nots.length > 2) {\n this.notifications = nots.splice(0, nots.length - 2);\n } else {\n this.notifications = nots;\n }\n this.renderNotifications();\n }\n } catch (exp) {}\n }\n\n setNotificationCount(unreadCount) {\n this.unreadCount = unreadCount;\n this.updateTabBarNotificationCount();\n\n // Update the badge counter.\n GleapFeedbackButtonManager.getInstance().updateNotificationBadge(\n this.unreadCount\n );\n }\n\n showNotification(notification) {\n if (!(this.notificationContainer && notification && notification.data)) {\n return;\n }\n\n const notificationsForOutbound = this.notifications.find(\n (e) => notification.outbound === e.outbound\n );\n if (!notificationsForOutbound) {\n this.notifications.push(notification);\n\n // Play sound only if it's a new one\n if (notification.sound) {\n GleapAudioManager.ping();\n }\n }\n if (this.notifications.length > 2) {\n this.notifications.shift();\n }\n\n // Persist notifications.\n saveToGleapCache(this.unreadNotificationsKey, this.notifications);\n\n this.renderNotifications();\n }\n\n /**\n * Renders notifications. For news-type notifications, only show\n * one at a time if there are multiple, with a \"Next\" button to cycle.\n * The \"Next\" button + pagination are placed within the news content area.\n *\n * - Sorts news notifications by createdAt (oldest first).\n * - Shows \"Done\" on the last news item instead of \"Next\".\n */\n renderNotifications() {\n if (!this.notificationContainer) {\n return;\n }\n\n // Clear the existing notifications in the container (UI only).\n this.clearAllNotifications(true);\n\n // Append a close button (which clears everything).\n const clearElem = document.createElement(\"div\");\n clearElem.onclick = () => {\n this.clearAllNotifications();\n // Reset the news index when everything is closed\n this.currentNewsIndex = 0;\n };\n clearElem.className = \"gleap-notification-close\";\n clearElem.innerHTML = loadIcon(\"dismiss\");\n this.notificationContainer.appendChild(clearElem);\n\n // Separate out news notifications vs. others, then sort news by date ascending\n const newsNotifications = this.notifications\n .filter((n) => n.data.news)\n .sort((a, b) => new Date(a.createdAt) - new Date(b.createdAt));\n\n const otherNotifications = this.notifications.filter((n) => !n.data.news);\n\n // --- Render NEWS notifications (with pagination) ---\n if (newsNotifications.length > 0) {\n // We only show ONE news item at a time if there's more than one\n const currentIndex =\n this.currentNewsIndex < newsNotifications.length\n ? this.currentNewsIndex\n : 0;\n const currentNews = newsNotifications[currentIndex];\n\n // Main wrapper for the news notification\n const newsElem = document.createElement(\"div\");\n newsElem.className = \"gleap-notification-item-news\";\n\n // The container that holds image + content\n const newsContainerElem = document.createElement(\"div\");\n newsContainerElem.className = \"gleap-notification-item-news-container\";\n\n // Create the image element (clickable)\n if (\n currentNews.data.coverImageUrl &&\n currentNews.data.coverImageUrl !== \"\" &&\n !currentNews.data.coverImageUrl.includes(\"NewsImagePlaceholder\")\n ) {\n const newsImageElem = document.createElement(\"img\");\n newsImageElem.className = \"gleap-notification-item-news-image\";\n newsImageElem.src = currentNews.data.coverImageUrl;\n\n // Only the image is clickable\n newsImageElem.onclick = (e) => {\n e.stopPropagation();\n this.openNews(currentNews);\n };\n newsContainerElem.appendChild(newsImageElem);\n }\n\n // The content container\n const newsContentElem = document.createElement(\"div\");\n newsContentElem.className = \"gleap-notification-item-news-content\";\n\n // Title (clickable)\n const newsTitleElem = document.createElement(\"div\");\n newsTitleElem.className = \"gleap-notification-item-news-content-title\";\n\n let content = currentNews.data.text || \"\";\n content = content.replaceAll(\n \"{{name}}\",\n GleapSession.getInstance().getName()\n );\n newsTitleElem.innerText = content;\n\n // Only the title is clickable\n newsTitleElem.onclick = (e) => {\n e.stopPropagation();\n this.openNews(currentNews);\n };\n\n newsContentElem.appendChild(newsTitleElem);\n\n // Description / Sender\n const descHTML = this.renderDescription(currentNews);\n if (descHTML) {\n const descElem = document.createElement(\"div\");\n descElem.className = \"gleap-notification-item-news-preview\";\n descElem.innerHTML = descHTML;\n newsContentElem.appendChild(descElem);\n }\n\n // If there's more than one news item, show pagination + next/done button\n if (newsNotifications.length > 1) {\n // Pagination container (still inside .gleap-notification-item-news-content)\n const paginationElem = document.createElement(\"div\");\n paginationElem.className = \"gleap-news-pagination\";\n\n // Show current item / total\n const pageIndicator = document.createElement(\"span\");\n pageIndicator.className = \"gleap-news-page-indicator\";\n pageIndicator.innerText = `${currentIndex + 1} / ${\n newsNotifications.length\n }`;\n paginationElem.appendChild(pageIndicator);\n\n // Next or Done button\n const nextBtn = document.createElement(\"button\");\n nextBtn.className = \"gleap-news-next-button\";\n\n if (currentIndex < newsNotifications.length - 1) {\n nextBtn.innerText = GleapTranslationManager.translateText(`next`);\n nextBtn.onclick = (e) => {\n e.stopPropagation(); // so we can click the button freely\n this.currentNewsIndex++;\n this.renderNotifications();\n };\n } else {\n nextBtn.innerText = GleapTranslationManager.translateText(`done`);\n nextBtn.onclick = (e) => {\n e.stopPropagation();\n this.clearAllNotifications();\n this.currentNewsIndex = 0;\n };\n }\n paginationElem.appendChild(nextBtn);\n newsContentElem.appendChild(paginationElem);\n }\n\n // Append content to container\n newsContainerElem.appendChild(newsContentElem);\n // Append container to the main element\n newsElem.appendChild(newsContainerElem);\n // Finally append to the notification container\n this.notificationContainer.appendChild(newsElem);\n }\n\n // --- Render OTHER notifications normally ---\n for (let i = 0; i < otherNotifications.length; i++) {\n const notification = otherNotifications[i];\n let content = notification.data.text || \"\";\n // Replace placeholders\n content = content.replaceAll(\n \"{{name}}\",\n GleapSession.getInstance().getName()\n );\n\n const elem = document.createElement(\"div\");\n elem.onclick = () => {\n if (notification.data.conversation) {\n Gleap.openConversation(\n notification.data.conversation.shareToken,\n true\n );\n } else if (notification.data.checklist) {\n Gleap.openChecklist(notification.data.checklist.id, true);\n } else {\n Gleap.open();\n }\n };\n\n // Check if it's a checklist type\n if (notification.data.checklist) {\n let progress = Math.round(\n (notification.data.currentStep / notification.data.totalSteps) * 100\n );\n if (progress < 100) {\n progress += 4;\n }\n\n elem.className = \"gleap-notification-item-checklist\";\n elem.innerHTML = `\n
\n
\n
\n ${notification.data.text}\n
\n
\n
\n
\n
\n \n \n \n ${notification.data.nextStepTitle}\n
\n
\n
`;\n } else {\n // Standard non-news notification\n elem.className = \"gleap-notification-item\";\n elem.innerHTML = `\n ${\n notification.data.sender &&\n notification.data.sender.profileImageUrl &&\n ``\n }\n
\n ${\n notification.data.sender\n ? `
\n ${notification.data.sender.name}\n
`\n : \"\"\n }\n
${content}
\n
`;\n }\n this.notificationContainer.appendChild(elem);\n }\n\n const hasNotifications =\n newsNotifications.length > 0 || otherNotifications.length > 0;\n if (!hasNotifications) {\n // Clear the notification container\n this.clearAllNotifications(true);\n }\n }\n\n /**\n * Helper to open news from a given notification.\n */\n openNews(notification) {\n if (notification.data.news) {\n Gleap.openNewsArticle(notification.data.news.id, true);\n } else {\n Gleap.open();\n }\n }\n\n /**\n * Helper to render preview or sender info for news notifications.\n */\n renderDescription(notification) {\n const { previewText, sender } = notification.data;\n if (previewText && previewText.length > 0) {\n return previewText;\n } else if (sender) {\n // Return HTML for the sender name + optional image\n return `\n
\n ${\n sender.profileImageUrl\n ? `\"${sender.name}\"`\n : \"\"\n }\n ${sender.name}\n
\n `;\n }\n return \"\";\n }\n\n /**\n * Clears all notifications from the container.\n *\n * @param {boolean} uiOnly - Whether to only clear the UI or also the notifications.\n */\n clearAllNotifications(uiOnly = false) {\n if (!this.notificationContainer) {\n return;\n }\n\n if (!uiOnly) {\n this.notifications = [];\n // Reset currentNewsIndex whenever we clear them out\n this.currentNewsIndex = 0;\n saveToGleapCache(this.unreadNotificationsKey, this.notifications);\n }\n\n while (this.notificationContainer.firstChild) {\n this.notificationContainer.removeChild(\n this.notificationContainer.firstChild\n );\n }\n }\n\n updateContainerStyle() {\n if (!this.notificationContainer) {\n return;\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const classLeft = \"gleap-notification-container--left\";\n const classNoButton = \"gleap-notification-container--no-button\";\n this.notificationContainer.classList.remove(classLeft);\n this.notificationContainer.classList.remove(classNoButton);\n\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_BOTTOM_LEFT\n ) {\n this.notificationContainer.classList.add(classLeft);\n }\n\n if (GleapFeedbackButtonManager.getInstance().buttonHidden === null) {\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_NONE\n ) {\n this.notificationContainer.classList.add(classNoButton);\n }\n } else {\n if (GleapFeedbackButtonManager.getInstance().buttonHidden) {\n this.notificationContainer.classList.add(classNoButton);\n }\n }\n\n this.notificationContainer.setAttribute(\n \"dir\",\n GleapTranslationManager.getInstance().isRTLLayout ? \"rtl\" : \"ltr\"\n );\n }\n}\n","import Gleap, { GleapFrameManager } from \"./Gleap\";\n\nexport default class GleapBannerManager {\n bannerUrl = \"https://outboundmedia.gleap.io\";\n bannerContainer = null;\n bannerData = null;\n\n // GleapBannerManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapBannerManager();\n }\n return this.instance;\n }\n\n constructor() {\n this.startCommunication();\n }\n\n setBannerUrl(url) {\n this.bannerUrl = url;\n }\n\n startCommunication() {\n // Add window message listener.\n window.addEventListener(\"message\", (event) => {\n if (!this.bannerUrl?.includes(event.origin)) {\n return;\n }\n\n try {\n const data = JSON.parse(event.data);\n\n if (data?.type !== \"BANNER\") {\n return;\n }\n\n if (data.name === \"banner-loaded\" && this.bannerData) {\n this.sendMessage({\n name: \"banner-data\",\n data: this.bannerData,\n });\n }\n if (data.name === \"banner-height\") {\n document.documentElement.style.setProperty(\n \"--gleap-margin-top\",\n data.data.height + \"px\"\n );\n }\n if (data.name === \"banner-data-set\") {\n document.body.classList.add(\"gleap-b-shown\");\n\n if (this.bannerData?.format === \"floating\") {\n document.body.classList.add(\"gleap-b-f\");\n }\n }\n if (data.name === \"banner-close\") {\n this.removeBannerUI();\n }\n if (data.name === \"start-conversation\") {\n Gleap.startBot(data.data?.botId);\n }\n if (data.name === \"start-custom-action\") {\n Gleap.triggerCustomAction(data.data?.action);\n }\n if (data.name === \"start-product-tour\") {\n Gleap.startProductTour(data.data?.tourId, true);\n }\n if (data.name === \"open-url\") {\n const url = data.data;\n const newTab = data.newTab ? true : false;\n GleapFrameManager.getInstance().urlHandler(url, newTab);\n }\n if (data.name === \"show-form\") {\n Gleap.startFeedbackFlow(data.data?.formId);\n }\n if (data.name === \"show-survey\") {\n Gleap.showSurvey(data.data?.formId, data.data?.surveyFormat);\n }\n if (data.name === \"show-news-article\") {\n Gleap.openNewsArticle(data.data?.articleId);\n }\n if (data.name === \"show-help-article\") {\n Gleap.openHelpCenterArticle(data.data?.articleId);\n }\n if (data.name === \"show-checklist\") {\n Gleap.startChecklist(\n data.data?.checklistId,\n true,\n data.data?.sharedKey\n );\n }\n } catch (exp) {}\n });\n }\n\n removeBannerUI() {\n if (this.bannerContainer) {\n document.body.removeChild(this.bannerContainer);\n this.bannerContainer = null;\n }\n\n document.body.classList.remove(\"gleap-b-shown\");\n document.body.classList.remove(\"gleap-b-f\");\n }\n\n /**\n * Injects the feedback button into the current DOM.\n */\n injectBannerUI(bannerData) {\n if (!document.body) {\n return false;\n }\n\n if (this.bannerContainer) {\n this.removeBannerUI();\n }\n\n this.bannerData = bannerData;\n\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-b\";\n elem.innerHTML = ``;\n document.body.appendChild(elem);\n this.bannerContainer = elem;\n }\n\n sendMessage(data) {\n try {\n const gleapBFrame = document.querySelector(\".gleap-b-frame\");\n if (gleapBFrame && gleapBFrame.contentWindow) {\n gleapBFrame.contentWindow.postMessage(\n JSON.stringify({\n ...data,\n type: \"banner\",\n }),\n \"*\"\n );\n }\n } catch (e) {}\n }\n\n showBanner(bannerData) {\n this.injectBannerUI(bannerData);\n }\n}\n","import Gleap, { GleapConfigManager, GleapFrameManager } from \"./Gleap\";\n\nexport default class GleapModalManager {\n modalUrl = \"https://outboundmedia.gleap.io/modal\";\n modalContainer = null;\n modalData = null;\n modalBackdropClickListener = null;\n\n // singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapModalManager();\n }\n return this.instance;\n }\n\n constructor() {\n this._listenForMessages();\n }\n\n setModalUrl(url) {\n this.modalUrl = url;\n }\n\n _listenForMessages() {\n window.addEventListener(\"message\", (event) => {\n if (!this.modalUrl?.includes(event.origin)) {\n return;\n }\n\n try {\n const data = JSON.parse(event.data);\n\n if (data?.type !== \"MODAL\") {\n return;\n }\n\n if (data.name === \"modal-loaded\" && this.modalData) {\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const primaryColor = flowConfig.color ? flowConfig.color : \"#485BFF\";\n const backgroundColor = flowConfig.backgroundColor\n ? flowConfig.backgroundColor\n : \"#FFFFFF\";\n\n this._postMessage({\n name: \"modal-data\",\n data: {\n ...this.modalData,\n primaryColor: primaryColor,\n backgroundColor: backgroundColor,\n },\n });\n }\n if (data.name === \"modal-height\") {\n const height = data?.data?.height;\n if (height) {\n // Set the height of the modal iframe\n const iframe =\n this.modalContainer.querySelector(\".gleap-modal-frame\");\n if (iframe) {\n iframe.style.height = `${height}px`;\n }\n }\n }\n if (data.name === \"modal-data-set\") {\n // TODO: Implement\n }\n if (data.name === \"modal-close\") {\n this.hideModal();\n }\n if (data.name === \"start-conversation\") {\n Gleap.startBot(data.data?.botId);\n }\n if (data.name === \"start-custom-action\") {\n Gleap.triggerCustomAction(data.data?.action);\n }\n if (data.name === \"start-product-tour\") {\n Gleap.startProductTour(data.data?.tourId, true);\n }\n if (data.name === \"open-url\") {\n const url = data.data;\n const newTab = data.newTab ? true : false;\n GleapFrameManager.getInstance().urlHandler(url, newTab);\n }\n if (data.name === \"show-form\") {\n Gleap.startFeedbackFlow(data.data?.formId);\n }\n if (data.name === \"show-survey\") {\n Gleap.showSurvey(data.data?.formId, data.data?.surveyFormat);\n }\n if (data.name === \"show-news-article\") {\n Gleap.openNewsArticle(data.data?.articleId);\n }\n if (data.name === \"show-help-article\") {\n Gleap.openHelpCenterArticle(data.data?.articleId);\n }\n if (data.name === \"show-checklist\") {\n Gleap.startChecklist(\n data.data?.checklistId,\n true,\n data.data?.sharedKey\n );\n }\n } catch (exp) {}\n });\n }\n\n _injectModalUI(modalData) {\n if (!document.body) return false;\n\n if (this.modalContainer) {\n this.hideModal();\n }\n\n this.modalData = modalData;\n\n const wrapper = document.createElement(\"div\");\n wrapper.className = \"gleap-modal-wrapper\";\n wrapper.innerHTML = `\n
\n
\n \n
\n `;\n document.body.appendChild(wrapper);\n this.modalContainer = wrapper;\n\n // Add on backdrop click listener\n this.modalBackdropClickListener = this.modalContainer\n .querySelector(\".gleap-modal-backdrop\")\n .addEventListener(\"click\", () => {\n if (this.modalData?.showCloseButton ?? true) {\n this.hideModal();\n }\n });\n\n // lock background scroll\n document.body.classList.add(\"gleap-modal-open\");\n }\n\n _postMessage(message) {\n try {\n const frame = this.modalContainer.querySelector(\".gleap-modal-frame\");\n if (frame?.contentWindow) {\n frame.contentWindow.postMessage(\n JSON.stringify({ ...message, type: \"modal\" }),\n this.modalUrl\n );\n }\n } catch (err) {}\n }\n\n showModal(modalData) {\n if (modalData && modalData.config) {\n this._injectModalUI(modalData.config);\n }\n }\n\n hideModal() {\n if (!this.modalContainer) return;\n\n if (this.modalBackdropClickListener) {\n this.modalContainer\n .querySelector(\".gleap-modal-backdrop\")\n .removeEventListener(\"click\", this.modalBackdropClickListener);\n }\n\n document.body.removeChild(this.modalContainer);\n this.modalContainer = null;\n document.body.classList.remove(\"gleap-modal-open\");\n }\n}\n","export default class GleapAudioManager {\n static audio;\n static settings = {\n play: true\n };\n\n static playSound(play) {\n this.settings.play = play;\n }\n\n static ping() {\n try {\n if (!this.settings.play) {\n return;\n }\n\n if (!this.audio) {\n this.audio = new Audio('https://js.gleap.io/res/ping.mp3');\n }\n\n const playPromise = this.audio.play();\n if (playPromise !== undefined) {\n playPromise.then(_ => { })\n .catch(error => { });\n }\n } catch (exp) { }\n }\n}\n","export default class GleapTagManager {\n tags = [];\n\n // GleapTagManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapTagManager();\n }\n return this.instance;\n }\n\n /**\n * Returns the tags\n * @returns {*}\n */\n getTags() {\n return this.tags;\n }\n\n /**\n * Sets the tags sent with every ticket.\n * @param {*} tags Array of strings\n */\n setTags(tags) {\n this.tags = tags;\n }\n}\n","/**\n * Returns the Tag of the element\n * @param { Object } element\n * @return { String }\n */\nexport function getID( el )\n{\n const id = el.getAttribute( 'id' );\n\n if( id !== null && id !== '')\n {\n // if the ID starts with a number or contains \":\" selecting with a hash will cause a DOMException\n return id.match(/(?:^\\d|:)/) ? `[id=\"${id}\"]` : '#' + id;\n }\n return null;\n}\n","/**\n * Get class names for an element\n *\n * @pararm { Element } el\n * @return { Array }\n */\nexport function getClasses( el )\n{\n if( !el.hasAttribute( 'class' ) )\n {\n return [];\n }\n\n try {\n let classList = Array.prototype.slice.call( el.classList )\n\n // return only the valid CSS selectors based on RegEx\n return classList.filter(item => !/^[a-z_-][a-z\\d_-]*$/i.test( item ) ? null : item );\n } catch (e) {\n let className = el.getAttribute( 'class' );\n\n // remove duplicate and leading/trailing whitespaces\n className = className.trim().replace( /\\s+/g, ' ' );\n\n // split into separate classnames\n return className.split( ' ' );\n }\n}\n\n/**\n * Returns the Class selectors of the element\n * @param { Object } element\n * @return { Array }\n */\nexport function getClassSelectors( el )\n{\n const classList = getClasses( el ).filter( Boolean );\n return classList.map( cl => `.${cl}` );\n}\n","/**\n * Recursively combinate items.\n * @param { Array } result\n * @param { Array } items\n * @param { Array } data\n * @param { Number } start\n * @param { Number } end\n * @param { Number } index\n * @param { Number } k\n */\nfunction kCombinations( result, items, data, start, end, index, k )\n{\n if( index === k )\n {\n result.push( data.slice( 0, index ).join( '' ) );\n return;\n }\n\n for( let i = start; i <= end && end - i + 1 >= k - index; ++i )\n {\n data[index] = items[i];\n kCombinations( result, items, data, i + 1, end, index + 1, k );\n }\n}\n\n/**\n * Returns all the possible selector combinations\n * @param { Array } items\n * @param { Number } k\n * @return { Array }\n */\nexport function getCombinations( items, k )\n{\n const result = [],\n n = items.length,\n data = [];\n\n for( var l = 1; l <= k; ++l )\n {\n kCombinations( result, items, data, 0, n - 1, 0, l );\n }\n\n return result;\n}\n","/**\n * Determines if the passed el is a DOM element\n */\nexport function isElement( el )\n{\n let isElem;\n\n if ( typeof HTMLElement === 'object' )\n {\n isElem = el instanceof HTMLElement;\n }\n else\n {\n isElem = !!el && ( typeof el === 'object' ) && el.nodeType === 1 && typeof el.nodeName === 'string';\n }\n return isElem;\n}\n","import { isElement } from './isElement';\n\n/**\n * Returns the selectors based on the position of the element relative to its siblings\n * @param { Object } element\n * @return { Array }\n */\nexport function getNthChild( element )\n{\n let counter = 0;\n let k;\n let sibling;\n const { parentNode } = element;\n\n if( Boolean( parentNode ) )\n {\n const { childNodes } = parentNode;\n const len = childNodes.length;\n for ( k = 0; k < len; k++ )\n {\n sibling = childNodes[ k ];\n if( isElement( sibling ) )\n {\n counter++;\n if( sibling === element )\n {\n return `:nth-child(${counter})`;\n }\n }\n }\n }\n return null;\n}\n","/**\n * Returns the Tag of the element\n * @param { Object } element\n * @return { String }\n */\nexport function getTag( el )\n{\n return el.tagName.toLowerCase().replace(/:/g, '\\\\:');\n}\n","/**\n * Checks if the selector is unique\n * @param { Object } element\n * @param { String } selector\n * @return { Array }\n */\nexport function isUnique( el, selector )\n{\n if( !Boolean( selector ) ) return false;\n const elems = el.ownerDocument.querySelectorAll( selector );\n return elems.length === 1 && elems[ 0 ] === el;\n}\n","/**\n * Expose `unique`\n */\n\nimport { getID } from './getID';\nimport { getClassSelectors } from './getClasses';\nimport { getCombinations } from './getCombinations';\nimport { getAttributes } from './getAttributes';\nimport { getNthChild } from './getNthChild';\nimport { getTag } from './getTag';\nimport { isUnique } from './isUnique';\nimport { getParents } from './getParents';\n\n\n/**\n * Returns all the selectors of the elmenet\n * @param { Object } element\n * @return { Object }\n */\nfunction getAllSelectors( el, selectors, attributesToIgnore )\n{\n const funcs =\n {\n 'Tag' : getTag,\n 'NthChild' : getNthChild,\n 'Attributes' : elem => getAttributes( elem, attributesToIgnore ),\n 'Class' : getClassSelectors,\n 'ID' : getID,\n };\n\n return selectors.reduce( ( res, next ) =>\n {\n res[ next ] = funcs[ next ]( el );\n return res;\n }, {} );\n}\n\n/**\n * Tests uniqueNess of the element inside its parent\n * @param { Object } element\n * @param { String } Selectors\n * @return { Boolean }\n */\nfunction testUniqueness( element, selector )\n{\n try {\n const { parentNode } = element;\n const elements = parentNode.querySelectorAll( selector );\n return elements.length === 1 && elements[ 0 ] === element;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tests all selectors for uniqueness and returns the first unique selector.\n * @param { Object } element\n * @param { Array } selectors\n * @return { String }\n */\nfunction getFirstUnique( element, selectors )\n{\n return selectors.find( testUniqueness.bind( null, element ) );\n}\n\n/**\n * Checks all the possible selectors of an element to find one unique and return it\n * @param { Object } element\n * @param { Array } items\n * @param { String } tag\n * @return { String }\n */\nfunction getUniqueCombination( element, items, tag )\n{\n let combinations = getCombinations( items, 3 ),\n firstUnique = getFirstUnique( element, combinations );\n\n if( Boolean( firstUnique ) )\n {\n return firstUnique;\n }\n\n if( Boolean( tag ) )\n {\n combinations = combinations.map( combination => tag + combination );\n firstUnique = getFirstUnique( element, combinations );\n\n if( Boolean( firstUnique ) )\n {\n return firstUnique;\n }\n }\n\n return null;\n}\n\n/**\n * Returns a uniqueSelector based on the passed options\n * @param { DOM } element\n * @param { Array } options\n * @return { String }\n */\nfunction getUniqueSelector( element, selectorTypes, attributesToIgnore, excludeRegex )\n{\n let foundSelector;\n\n const elementSelectors = getAllSelectors( element, selectorTypes, attributesToIgnore );\n\n if( excludeRegex && excludeRegex instanceof RegExp )\n {\n elementSelectors.ID = excludeRegex.test( elementSelectors.ID ) ? null : elementSelectors.ID;\n elementSelectors.Class = elementSelectors.Class.filter( className => !excludeRegex.test( className ) );\n }\n\n for( let selectorType of selectorTypes )\n {\n const { ID, Tag, Class : Classes, Attributes, NthChild } = elementSelectors;\n switch ( selectorType )\n {\n case 'ID' :\n if ( Boolean( ID ) && testUniqueness( element, ID ) )\n {\n return ID;\n }\n break;\n\n case 'Tag':\n if ( Boolean( Tag ) && testUniqueness( element, Tag ) )\n {\n return Tag;\n }\n break;\n\n case 'Class':\n if ( Boolean( Classes ) && Classes.length )\n {\n foundSelector = getUniqueCombination( element, Classes, Tag );\n if (foundSelector) {\n return foundSelector;\n }\n }\n break;\n\n case 'Attributes':\n if ( Boolean( Attributes ) && Attributes.length )\n {\n foundSelector = getUniqueCombination( element, Attributes, Tag );\n if ( foundSelector )\n {\n return foundSelector;\n }\n }\n break;\n\n case 'NthChild':\n if ( Boolean( NthChild ) )\n {\n return NthChild\n }\n }\n }\n return '*';\n}\n\n/**\n * Generate unique CSS selector for given DOM element\n *\n * @param {Element} el\n * @return {String}\n * @api private\n */\n\nexport default function unique( el, options={} )\n{\n const {\n selectorTypes = ['ID', 'Class', 'Tag', 'NthChild'],\n attributesToIgnore = ['id', 'class', 'length'],\n excludeRegex = null,\n } = options;\n const allSelectors = [];\n const parents = getParents( el );\n\n for( let elem of parents )\n {\n const selector = getUniqueSelector( elem, selectorTypes, attributesToIgnore, excludeRegex );\n if( Boolean( selector ) )\n {\n allSelectors.push( selector );\n }\n }\n\n const selectors = [];\n for( let it of allSelectors )\n {\n selectors.unshift( it );\n const selector = selectors.join( ' > ' );\n if( isUnique( el, selector ) )\n {\n return selector;\n }\n }\n\n return null;\n}\n","/**\n * Returns the Attribute selectors of the element\n * @param { DOM Element } element\n * @param { Array } array of attributes to ignore\n * @return { Array }\n */\nexport function getAttributes( el, attributesToIgnore = ['id', 'class', 'length'] )\n{\n const { attributes } = el;\n const attrs = [ ...attributes ];\n\n return attrs.reduce( ( sum, next ) =>\n {\n if ( ! ( attributesToIgnore.indexOf( next.nodeName ) > -1 ) )\n {\n sum.push( `[${next.nodeName}=\"${next.value}\"]` );\n }\n return sum;\n }, [] );\n}\n","import { isElement } from './isElement';\n\n/**\n * Returns all the element and all of its parents\n * @param { DOM Element }\n * @return { Array of DOM elements }\n */\nexport function getParents( el )\n{\n const parents = [];\n let currentElement = el;\n while( isElement( currentElement ) )\n {\n parents.push( currentElement );\n currentElement = currentElement.parentNode;\n }\n\n return parents;\n}\n","/**\n * Utility function to get the bounding rectangle of an element.\n * @param {HTMLElement} el - The target element.\n * @returns {Object} An object containing x, y, width, and height.\n */\nfunction getElementBounds(el) {\n const rect = el.getBoundingClientRect();\n return {\n x: window.pageXOffset + rect.left,\n y: window.pageYOffset + rect.top,\n width: el.offsetWidth,\n height: el.offsetHeight,\n };\n}\n\n/**\n * Class representing an overlay element.\n */\nclass ElementOverlay {\n /**\n * Create an ElementOverlay.\n * @param {Object} options - Configuration options.\n * @param {string} [options.className] - CSS class name for the overlay.\n * @param {Object} [options.style] - Style overrides for the overlay.\n */\n constructor(options) {\n // Create and style the overlay element.\n this.overlay = document.createElement(\"div\");\n this.overlay.className = options.className || \"_ext-element-overlay\";\n this.overlay.style.background =\n (options.style && options.style.background) || \"rgba(250, 240, 202, 0.2)\";\n this.overlay.style.borderColor =\n (options.style && options.style.borderColor) || \"#F95738\";\n this.overlay.style.borderStyle =\n (options.style && options.style.borderStyle) || \"solid\";\n this.overlay.style.borderRadius =\n (options.style && options.style.borderRadius) || \"1px\";\n this.overlay.style.borderWidth =\n (options.style && options.style.borderWidth) || \"1px\";\n this.overlay.style.boxSizing =\n (options.style && options.style.boxSizing) || \"border-box\";\n this.overlay.style.cursor =\n (options.style && options.style.cursor) || \"crosshair\";\n this.overlay.style.position =\n (options.style && options.style.position) || \"absolute\";\n this.overlay.style.zIndex =\n (options.style && options.style.zIndex) || \"2147483647\";\n this.overlay.style.margin =\n (options.style && options.style.margin) || \"0px\";\n this.overlay.style.padding =\n (options.style && options.style.padding) || \"0px\";\n\n // Create a container that will host a Shadow DOM.\n this.shadowContainer = document.createElement(\"div\");\n this.shadowContainer.className = \"_ext-element-overlay-container\";\n this.shadowContainer.style.position = \"absolute\";\n this.shadowContainer.style.top = \"0px\";\n this.shadowContainer.style.left = \"0px\";\n this.shadowContainer.style.margin = \"0px\";\n this.shadowContainer.style.padding = \"0px\";\n this.shadowRoot = this.shadowContainer.attachShadow({ mode: \"open\" });\n }\n\n /**\n * Adds the overlay to the DOM.\n * @param {Node} parent - The parent element.\n * @param {boolean} useShadowDOM - Whether to use Shadow DOM.\n */\n addToDOM(parent, useShadowDOM) {\n this.usingShadowDOM = useShadowDOM;\n if (useShadowDOM) {\n parent.insertBefore(this.shadowContainer, parent.firstChild);\n this.shadowRoot.appendChild(this.overlay);\n } else {\n parent.appendChild(this.overlay);\n }\n }\n\n /**\n * Removes the overlay from the DOM.\n */\n removeFromDOM() {\n this.setBounds({ x: 0, y: 0, width: 0, height: 0 });\n if (this.overlay.remove) {\n this.overlay.remove();\n } else if (this.overlay.parentNode) {\n this.overlay.parentNode.removeChild(this.overlay);\n }\n if (this.usingShadowDOM) {\n if (this.shadowContainer.remove) {\n this.shadowContainer.remove();\n } else if (this.shadowContainer.parentNode) {\n this.shadowContainer.parentNode.removeChild(this.shadowContainer);\n }\n }\n }\n\n /**\n * Enables pointer events on the overlay.\n */\n captureCursor() {\n this.overlay.style.pointerEvents = \"auto\";\n }\n\n /**\n * Disables pointer events on the overlay.\n */\n ignoreCursor() {\n this.overlay.style.pointerEvents = \"none\";\n }\n\n /**\n * Sets the position and size of the overlay.\n * @param {Object} bounds - The bounding box.\n * @param {number} bounds.x - The x-coordinate.\n * @param {number} bounds.y - The y-coordinate.\n * @param {number} bounds.width - The width.\n * @param {number} bounds.height - The height.\n */\n setBounds(bounds) {\n const { x, y, width, height } = bounds;\n this.overlay.style.left = x + \"px\";\n this.overlay.style.top = y + \"px\";\n this.overlay.style.width = width + \"px\";\n this.overlay.style.height = height + \"px\";\n }\n}\n\n/**\n * Class representing an element picker that uses the overlay.\n */\nclass ElementPicker {\n /**\n * Create an ElementPicker.\n * @param {Object} [overlayOptions] - Options to pass to ElementOverlay.\n */\n constructor(overlayOptions) {\n this.active = false;\n this.overlay = new ElementOverlay(overlayOptions || {});\n this.handleMouseMove = this.handleMouseMove.bind(this);\n this.handleClick = this.handleClick.bind(this);\n this.tick = this.tick.bind(this);\n }\n\n /**\n * Starts the element picking process.\n * @param {Object} options - Picker options.\n * @param {Node} [options.parentElement] - Parent element to attach the overlay.\n * @param {boolean} [options.useShadowDOM=true] - Whether to use Shadow DOM.\n * @param {Function} [options.onClick] - Callback invoked on click.\n * @param {Function} [options.onHover] - Callback invoked on hover.\n * @param {Function} [options.elementFilter] - Function to filter elements.\n * @returns {boolean} True if started successfully, false if already active.\n */\n start(options) {\n if (this.active) {\n return false;\n }\n this.active = true;\n this.options = options;\n\n document.addEventListener(\"mousemove\", this.handleMouseMove, true);\n document.addEventListener(\"click\", this.handleClick, true);\n\n const parentElement = options.parentElement || document.body;\n const useShadowDOM =\n options.useShadowDOM !== undefined ? options.useShadowDOM : true;\n this.overlay.addToDOM(parentElement, useShadowDOM);\n this.tick();\n\n return true;\n }\n\n /**\n * Stops the element picking process.\n */\n stop() {\n this.active = false;\n this.options = undefined;\n\n document.removeEventListener(\"mousemove\", this.handleMouseMove, true);\n document.removeEventListener(\"click\", this.handleClick, true);\n\n this.overlay.removeFromDOM();\n this.target = undefined;\n this.mouseX = undefined;\n this.mouseY = undefined;\n\n if (this.tickReq) {\n window.cancelAnimationFrame(this.tickReq);\n }\n }\n\n /**\n * Handles mouse move events.\n * @param {MouseEvent} event - The mousemove event.\n */\n handleMouseMove(event) {\n this.mouseX = event.clientX;\n this.mouseY = event.clientY;\n }\n\n /**\n * Handles click events.\n * @param {MouseEvent} event - The click event.\n */\n handleClick(event) {\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n\n if (this.target && this.options && this.options.onClick) {\n this.options.onClick(this.target);\n }\n }\n\n /**\n * The tick function that continuously updates the target element.\n */\n tick() {\n this.updateTarget();\n this.tickReq = window.requestAnimationFrame(this.tick);\n }\n\n /**\n * Updates the target element based on the current mouse position.\n */\n updateTarget() {\n if (this.mouseX === undefined || this.mouseY === undefined) {\n return;\n }\n\n // Temporarily ignore the overlay's pointer events to detect the underlying element.\n this.overlay.ignoreCursor();\n const elAtCursor = document.elementFromPoint(this.mouseX, this.mouseY);\n const newTarget = elAtCursor;\n this.overlay.captureCursor();\n\n // If the target hasn't changed, do nothing.\n if (!newTarget || newTarget === this.target) {\n return;\n }\n\n // If an element filter is provided and the new target doesn't match, clear the target.\n if (this.options && this.options.elementFilter) {\n if (!this.options.elementFilter(newTarget)) {\n this.target = undefined;\n this.overlay.setBounds({ x: 0, y: 0, width: 0, height: 0 });\n return;\n }\n }\n\n this.target = newTarget;\n const bounds = getElementBounds(newTarget);\n this.overlay.setBounds(bounds);\n\n if (this.options && this.options.onHover) {\n this.options.onHover(newTarget);\n }\n }\n}\n\nexport default ElementPicker;\n","import unique from \"./unique-selector/src/unique-selector\";\nimport ElementPicker from \"./ElementPicker\";\n\nclass GleapAdminHelper {\n picker = null;\n onElementPicked = null;\n\n stopPicker = () => {\n if (this.picker) {\n this.picker.stop();\n this.picker = null;\n return;\n }\n };\n\n startPicker = () => {\n this.stopPicker();\n var self = this;\n\n const style = {\n borderColor: \"#2142E7\",\n background: \"transparent\",\n borderWidth: \"4px\",\n borderRadius: \"5px\",\n };\n this.picker = new ElementPicker({ style });\n this.picker.start({\n useShadowDOM: false,\n onClick: (el) => {\n try {\n let selector;\n const tourId = el.getAttribute(\"data-gleap-tour\");\n if (tourId) {\n selector = `[data-gleap-tour=\"${tourId}\"]`;\n } else {\n selector = unique(el);\n }\n\n self.onElementPicked && self.onElementPicked(selector);\n } catch (e) {\n console.error(\"Error while getting unique selector\", e);\n }\n },\n elementFilter: (el) => {\n if (\n el.classList.contains(\"gleap-admin-collapse-ui\") ||\n el.closest(\".gleap-admin-collapse-ui\")\n ) {\n return false;\n }\n return true;\n },\n });\n };\n\n setMode = (mode) => {\n this.mode = mode;\n if (mode === \"navigate\") {\n this.stopPicker();\n }\n if (mode === \"picker\") {\n this.startPicker();\n }\n };\n}\n\nexport default GleapAdminHelper;\n","import { loadIcon } from \"./UI\";\nimport GleapAdminHelper from \"./GleapAdminHelper\";\nimport { GleapProductTours } from \"./Gleap\";\n\nexport default class GleapAdminManager {\n libraryInstance = null;\n lastUrl = undefined;\n injectedFrame = false;\n gleapFrameContainer = null;\n gleapCollapseUI = null;\n injectedCollapseUI = false;\n gleapFrame = null;\n configData = null;\n adminHelper = null;\n status = \"navigate\";\n\n // GleapAdminManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapAdminManager();\n }\n\n return this.instance;\n }\n\n logCurrentPage() {\n const currentUrl = window.location.href;\n if (currentUrl && currentUrl !== this.lastUrl) {\n this.lastUrl = currentUrl;\n\n this.sendMessageToTourBuilder({\n name: \"page-changed\",\n data: {\n page: currentUrl,\n },\n });\n }\n }\n\n startPageListener() {\n const self = this;\n setInterval(function () {\n self.logCurrentPage();\n }, 1000);\n }\n\n initAdminHelper() {\n const self = this;\n\n // Disable product tours.\n GleapProductTours.getInstance().disable();\n\n self.adminHelper = new GleapAdminHelper();\n\n try {\n self.adminHelper.onElementPicked = (selector) => {\n self.toggleCollapseUI(true);\n self.sendMessageToTourBuilder({\n name: \"element-picked\",\n data: {\n selector,\n },\n });\n };\n } catch (e) {\n console.log(e);\n }\n\n self.injectFrame();\n self.injectCollapseUI();\n self.setFrameHeight(\"loading\");\n }\n\n setFrameHeight(state) {\n if (this.gleapFrameContainer) {\n var height = \"\";\n if (state === \"picker\" || state === \"navigate\") {\n height = \"65px\";\n } else if (state === \"editor\") {\n height = \"100vh\";\n } else {\n height = \"0px\";\n }\n this.gleapFrameContainer.style.height = height;\n }\n }\n\n start() {\n if (typeof window === \"undefined\") {\n return;\n }\n\n if (window.gleapAdminDisabled) {\n return;\n }\n\n var self = this;\n\n // Add window message listener.\n window.addEventListener(\"message\", (event) => {\n if (event.origin !== \"https://app.gleap.io\") {\n return;\n }\n\n try {\n const data = JSON.parse(event.data);\n\n if (data.type === \"admin\") {\n if (data.name === \"load\") {\n self.configData = data.data;\n self.initAdminHelper();\n }\n\n if (data.name === \"smartlink-search-result\") {\n this.sendMessageToTourBuilder({\n name: \"smartlink-search-result\",\n data: data.data,\n });\n }\n\n if (data.name === \"translate-complete\") {\n this.sendMessageToTourBuilder({\n name: \"translate-complete\",\n data: data.data,\n });\n }\n }\n\n if (data.type === \"tourbuilder\") {\n if (data.name === \"loaddata\") {\n this.sendMessageToTourBuilder({\n name: \"data\",\n data: {\n ...self.configData,\n currentPage: window.location.href,\n },\n });\n }\n\n if (data.name === \"highlight-element\") {\n // Cleanup.\n document\n .querySelectorAll(\".gleap-admin-highlight\")\n .forEach((el) => {\n el.classList.remove(\"gleap-admin-highlight\");\n });\n\n // Find the element and highlight it.\n if (data?.data?.selector) {\n const element = document.querySelector(data?.data?.selector);\n if (element) {\n element.classList.add(\"gleap-admin-highlight\");\n }\n }\n }\n\n if (data.name === \"smartlink-search\") {\n this.sendMessage({\n name: \"smartlink-search\",\n data: data.data,\n });\n }\n\n if (data.name === \"product-tour-started\") {\n this.sendMessage({\n name: \"product-tour-started\",\n data: data.data,\n });\n }\n\n if (data.name === \"translate\") {\n this.sendMessage({\n name: \"translate\",\n data: data.data,\n });\n }\n\n if (data.name === \"save\") {\n this.sendMessage({\n name: \"save\",\n data: data.data,\n });\n }\n\n if (data.name === \"update-steps\") {\n this.sendMessage({\n name: \"update-steps\",\n data: data.data,\n });\n }\n\n if (data.name === \"click\") {\n try {\n document.querySelector(data.data.selector).click();\n } catch (e) {\n console.log(e);\n }\n }\n\n if (data.name === \"status-changed\") {\n self.status = data.data;\n this.setFrameHeight(self.status);\n self.adminHelper.stopPicker();\n\n if (self.status === \"picker\") {\n self.adminHelper.startPicker();\n }\n }\n }\n } catch (exp) {}\n });\n\n this.sendMessage({\n name: \"init\",\n });\n\n this.startPageListener();\n }\n\n sendMessage(data) {\n try {\n if (window && window.opener) {\n window.opener.postMessage(\n JSON.stringify({\n ...data,\n type: \"admin\",\n }),\n \"*\"\n );\n }\n } catch (e) {}\n }\n\n sendMessageToTourBuilder(data) {\n try {\n if (this.gleapFrame && this.gleapFrame.contentWindow) {\n this.gleapFrame.contentWindow.postMessage(\n JSON.stringify({\n ...data,\n type: \"tourbuilder\",\n }),\n \"*\"\n );\n }\n } catch (e) {}\n }\n\n toggleCollapseUI = (onlyIfActive = false) => {\n const COLLAPSE_UI_ACTIVE_CLASS = \"gleap-admin-collapse-ui-active\";\n const FRAME_CONTAINER_ACTIVE_CLASS = \"gleap-admin-frame-container-active\";\n\n // Helper function to check if an element has an active class\n const isActive = (element, activeClass) =>\n element && element.classList.contains(activeClass);\n\n // Check if onlyIfActive is true and if the UI elements are already inactive\n if (\n onlyIfActive &&\n (!isActive(this.gleapCollapseUI, COLLAPSE_UI_ACTIVE_CLASS) ||\n !isActive(this.gleapFrameContainer, FRAME_CONTAINER_ACTIVE_CLASS))\n ) {\n return; // Return early without toggling the UI\n }\n\n // Toggle the UI elements\n if (this.gleapCollapseUI) {\n this.gleapCollapseUI.classList.toggle(COLLAPSE_UI_ACTIVE_CLASS);\n }\n if (this.gleapFrameContainer) {\n this.gleapFrameContainer.classList.toggle(FRAME_CONTAINER_ACTIVE_CLASS);\n }\n };\n\n injectCollapseUI = () => {\n if (this.injectedCollapseUI) {\n return;\n }\n this.injectedCollapseUI = true;\n\n // Inject widget HTML.\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-admin-collapse-ui\";\n elem.innerHTML = `
\n ${loadIcon(\"arrowdown\")}\n
`;\n document.body.appendChild(elem);\n\n this.gleapCollapseUI = elem;\n\n elem.addEventListener(\"click\", (e) => {\n e.stopImmediatePropagation();\n e.stopPropagation();\n e.preventDefault();\n\n this.toggleCollapseUI();\n });\n };\n\n injectFrame = () => {\n if (this.injectedFrame) {\n return;\n }\n this.injectedFrame = true;\n\n // Inject widget HTML.\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-admin-frame-container\";\n elem.innerHTML = ``;\n document.body.appendChild(elem);\n\n this.gleapFrameContainer = elem;\n this.gleapFrame = document.querySelector(\".gleap-admin-frame\");\n };\n}\n","const GleapTours = (function () {\n \"use strict\";\n let currentConfig = {};\n function configure(config = {}) {\n currentConfig = {\n animate: true,\n allowClose: true,\n overlayOpacity: 0.7,\n smoothScroll: false,\n disableActiveInteraction: false,\n showProgress: false,\n stagePadding: 10,\n stageRadius: 5,\n popoverOffset: 10,\n showButtons: [\"next\", \"previous\", \"close\"],\n disableButtons: [],\n overlayColor: \"#000\",\n ...config,\n };\n }\n function getConfig(key) {\n return key ? currentConfig[key] : currentConfig;\n }\n function easeInOutQuad(elapsed, initialValue, amountOfChange, duration) {\n if ((elapsed /= duration / 2) < 1) {\n return (amountOfChange / 2) * elapsed * elapsed + initialValue;\n }\n return (\n (-amountOfChange / 2) * (--elapsed * (elapsed - 2) - 1) + initialValue\n );\n }\n function getFocusableElements(parentEls) {\n const focusableQuery =\n 'a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type=\"text\"]:not([disabled]), input[type=\"radio\"]:not([disabled]), input[type=\"checkbox\"]:not([disabled]), select:not([disabled])';\n return parentEls\n .flatMap((parentEl) => {\n const isParentFocusable = parentEl.matches(focusableQuery);\n const focusableEls = Array.from(\n parentEl.querySelectorAll(focusableQuery)\n );\n return [...(isParentFocusable ? [parentEl] : []), ...focusableEls];\n })\n .filter((el) => {\n return (\n getComputedStyle(el).pointerEvents !== \"none\" && isElementVisible(el)\n );\n });\n }\n function bringInView(element) {\n if (!element || isElementInView(element)) {\n return;\n }\n const shouldSmoothScroll = getConfig(\"smoothScroll\");\n element.scrollIntoView({\n // Removing the smooth scrolling for elements which exist inside the scrollable parent\n // This was causing the highlight to not properly render\n behavior:\n !shouldSmoothScroll || hasScrollableParent(element) ? \"auto\" : \"smooth\",\n inline: \"center\",\n block: \"center\",\n });\n }\n function hasScrollableParent(e) {\n if (!e || !e.parentElement) {\n return;\n }\n const parent = e.parentElement;\n return parent.scrollHeight > parent.clientHeight;\n }\n function isElementInView(element) {\n const rect = element.getBoundingClientRect();\n return (\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <=\n (window.innerHeight || document.documentElement.clientHeight) &&\n rect.right <= (window.innerWidth || document.documentElement.clientWidth)\n );\n }\n function isElementVisible(el) {\n return !!(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\n }\n let currentState = {};\n function setState(key, value) {\n currentState[key] = value;\n }\n function getState(key) {\n return key ? currentState[key] : currentState;\n }\n function resetState() {\n currentState = {};\n }\n let registeredListeners = {};\n function listen(hook, callback) {\n registeredListeners[hook] = callback;\n }\n function emit(hook) {\n var _a;\n (_a = registeredListeners[hook]) == null\n ? void 0\n : _a.call(registeredListeners);\n }\n function destroyEmitter() {\n registeredListeners = {};\n }\n function transitionStage(elapsed, duration, from, to) {\n let activeStagePosition = getState(\"__activeStagePosition\");\n const fromDefinition = activeStagePosition\n ? activeStagePosition\n : from.getBoundingClientRect();\n const toDefinition = to.getBoundingClientRect();\n const x = easeInOutQuad(\n elapsed,\n fromDefinition.x,\n toDefinition.x - fromDefinition.x,\n duration\n );\n const y = easeInOutQuad(\n elapsed,\n fromDefinition.y,\n toDefinition.y - fromDefinition.y,\n duration\n );\n const width = easeInOutQuad(\n elapsed,\n fromDefinition.width,\n toDefinition.width - fromDefinition.width,\n duration\n );\n const height = easeInOutQuad(\n elapsed,\n fromDefinition.height,\n toDefinition.height - fromDefinition.height,\n duration\n );\n activeStagePosition = {\n x,\n y,\n width,\n height,\n };\n renderOverlay(activeStagePosition);\n setState(\"__activeStagePosition\", activeStagePosition);\n }\n function trackActiveElement(element) {\n if (!element) {\n return;\n }\n const definition = element.getBoundingClientRect();\n const activeStagePosition = {\n x: definition.x,\n y: definition.y,\n width: definition.width,\n height: definition.height,\n };\n setState(\"__activeStagePosition\", activeStagePosition);\n renderOverlay(activeStagePosition);\n }\n function refreshOverlay() {\n const activeStagePosition = getState(\"__activeStagePosition\");\n const overlaySvg = getState(\"__overlaySvg\");\n if (!activeStagePosition) {\n return;\n }\n if (!overlaySvg) {\n console.warn(\"No stage svg found.\");\n return;\n }\n const windowX = window.innerWidth;\n const windowY = window.innerHeight;\n overlaySvg.setAttribute(\"viewBox\", `0 0 ${windowX} ${windowY}`);\n }\n function mountOverlay(stagePosition) {\n const overlaySvg = createOverlaySvg(stagePosition);\n document.body.appendChild(overlaySvg);\n onDriverClick(overlaySvg, (e) => {\n const target = e.target;\n if (target.tagName !== \"path\") {\n return;\n }\n emit(\"overlayClick\");\n });\n setState(\"__overlaySvg\", overlaySvg);\n }\n function renderOverlay(stagePosition) {\n const overlaySvg = getState(\"__overlaySvg\");\n if (!overlaySvg) {\n mountOverlay(stagePosition);\n return;\n }\n const pathElement = overlaySvg.firstElementChild;\n if ((pathElement == null ? void 0 : pathElement.tagName) !== \"path\") {\n throw new Error(\"no path element found in stage svg\");\n }\n pathElement.setAttribute(\"d\", generateStageSvgPathString(stagePosition));\n }\n function createOverlaySvg(stage) {\n const windowX = window.innerWidth;\n const windowY = window.innerHeight;\n const svg = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n svg.classList.add(\"gleap-tour-overlay\", \"gleap-tour-overlay-animated\");\n svg.setAttribute(\"viewBox\", `0 0 ${windowX} ${windowY}`);\n svg.setAttribute(\"xmlSpace\", \"preserve\");\n svg.setAttribute(\"xmlnsXlink\", \"http://www.w3.org/1999/xlink\");\n svg.setAttribute(\"version\", \"1.1\");\n svg.setAttribute(\"preserveAspectRatio\", \"xMinYMin slice\");\n svg.style.fillRule = \"evenodd\";\n svg.style.clipRule = \"evenodd\";\n svg.style.strokeLinejoin = \"round\";\n svg.style.strokeMiterlimit = \"2\";\n svg.style.zIndex = \"10000\";\n svg.style.position = \"fixed\";\n svg.style.top = \"0\";\n svg.style.left = \"0\";\n svg.style.width = \"100%\";\n svg.style.height = \"100%\";\n const stagePath = document.createElementNS(\n \"http://www.w3.org/2000/svg\",\n \"path\"\n );\n stagePath.setAttribute(\"d\", generateStageSvgPathString(stage));\n stagePath.style.fill = getConfig(\"overlayColor\") || \"rgb(0,0,0)\";\n stagePath.style.opacity = `${getConfig(\"overlayOpacity\")}`;\n stagePath.style.pointerEvents = \"auto\";\n stagePath.style.cursor = \"auto\";\n svg.appendChild(stagePath);\n return svg;\n }\n function generateStageSvgPathString(stage) {\n const windowX = window.innerWidth;\n const windowY = window.innerHeight;\n const stagePadding = getConfig(\"stagePadding\") || 0;\n const stageRadius = getConfig(\"stageRadius\") || 0;\n const stageWidth = stage.width + stagePadding * 2;\n const stageHeight = stage.height + stagePadding * 2;\n const limitedRadius = Math.min(\n stageRadius,\n stageWidth / 2,\n stageHeight / 2\n );\n const normalizedRadius = Math.floor(Math.max(limitedRadius, 0));\n const highlightBoxX = stage.x - stagePadding + normalizedRadius;\n const highlightBoxY = stage.y - stagePadding;\n const highlightBoxWidth = stageWidth - normalizedRadius * 2;\n const highlightBoxHeight = stageHeight - normalizedRadius * 2;\n return `M${windowX},0L0,0L0,${windowY}L${windowX},${windowY}L${windowX},0Z\n M${highlightBoxX},${highlightBoxY} h${highlightBoxWidth} a${normalizedRadius},${normalizedRadius} 0 0 1 ${normalizedRadius},${normalizedRadius} v${highlightBoxHeight} a${normalizedRadius},${normalizedRadius} 0 0 1 -${normalizedRadius},${normalizedRadius} h-${highlightBoxWidth} a${normalizedRadius},${normalizedRadius} 0 0 1 -${normalizedRadius},-${normalizedRadius} v-${highlightBoxHeight} a${normalizedRadius},${normalizedRadius} 0 0 1 ${normalizedRadius},-${normalizedRadius} z`;\n }\n function destroyOverlay() {\n const overlaySvg = getState(\"__overlaySvg\");\n if (overlaySvg) {\n overlaySvg.remove();\n }\n }\n function mountDummyElement() {\n const existingDummy = document.getElementById(\"gleap-tour-dummy-element\");\n if (existingDummy) {\n return existingDummy;\n }\n let element = document.createElement(\"div\");\n element.id = \"gleap-tour-dummy-element\";\n element.style.width = \"0\";\n element.style.height = \"0\";\n element.style.pointerEvents = \"none\";\n element.style.opacity = \"0\";\n element.style.position = \"fixed\";\n element.style.top = \"50%\";\n element.style.left = \"50%\";\n document.body.appendChild(element);\n return element;\n }\n function highlight(step, attemptTime = 5000) {\n const { element } = step;\n let elemObj = element;\n if (typeof elemObj === \"string\") {\n try {\n elemObj = document.querySelector(element);\n } catch (error) {\n // This will escape colons within IDs but not affect pseudo-classes or other valid uses of colons\n let refactoredElement = element.replace(\n /(#[^#\\s]+)/g,\n function (match) {\n return match.replace(/:/g, \"\\\\:\");\n }\n );\n elemObj = document.querySelector(refactoredElement);\n }\n }\n if (element && !elemObj && attemptTime >= 0) {\n setTimeout(() => {\n hidePopover();\n highlight(step, attemptTime - 100);\n }, 100);\n\n return;\n }\n\n if (!elemObj) {\n if (step.mode === \"INPUT\" || step.mode === \"CLICK\") {\n return getConfig(\"onElementNotFound\")(step);\n }\n }\n\n if (!elemObj) {\n elemObj = mountDummyElement();\n }\n\n transferHighlight(elemObj, step);\n }\n function refreshActiveHighlight() {\n const activeHighlight = getState(\"__activeElement\");\n const activeStep = getState(\"__activeStep\");\n if (!activeHighlight) {\n return;\n }\n trackActiveElement(activeHighlight);\n refreshOverlay();\n repositionPopover(activeHighlight, activeStep);\n }\n function transferHighlight(toElement, toStep) {\n const duration = 400;\n const start = Date.now();\n const fromStep = getState(\"__activeStep\");\n const fromElement = getState(\"__activeElement\") || toElement;\n const isFirstHighlight = !fromElement || fromElement === toElement;\n const isToDummyElement = toElement.id === \"gleap-tour-dummy-element\";\n const isFromDummyElement = fromElement.id === \"gleap-tour-dummy-element\";\n const isAnimatedTour = getConfig(\"animate\");\n const highlightStartedHook =\n toStep.onHighlightStarted || getConfig(\"onHighlightStarted\");\n const highlightedHook =\n (toStep == null ? void 0 : toStep.onHighlighted) ||\n getConfig(\"onHighlighted\");\n const deselectedHook =\n (fromStep == null ? void 0 : fromStep.onDeselected) ||\n getConfig(\"onDeselected\");\n const config = getConfig();\n const state = getState();\n if (!isFirstHighlight && deselectedHook) {\n deselectedHook(isFromDummyElement ? void 0 : fromElement, fromStep, {\n config,\n state,\n });\n }\n if (highlightStartedHook) {\n highlightStartedHook(isToDummyElement ? void 0 : toElement, toStep, {\n config,\n state,\n });\n }\n const hasDelayedPopover = !isFirstHighlight && isAnimatedTour;\n let isPopoverRendered = false;\n hidePopover();\n setState(\"previousStep\", fromStep);\n setState(\"previousElement\", fromElement);\n setState(\"activeStep\", toStep);\n setState(\"activeElement\", toElement);\n const animate = () => {\n const transitionCallback = getState(\"__transitionCallback\");\n if (transitionCallback !== animate) {\n return;\n }\n const elapsed = Date.now() - start;\n const timeRemaining = duration - elapsed;\n const isHalfwayThrough = timeRemaining <= duration / 2;\n if (\n toStep.popover &&\n isHalfwayThrough &&\n !isPopoverRendered &&\n hasDelayedPopover\n ) {\n renderPopover(toElement, toStep);\n isPopoverRendered = true;\n }\n if (getConfig(\"animate\") && elapsed < duration) {\n transitionStage(elapsed, duration, fromElement, toElement);\n } else {\n trackActiveElement(toElement);\n if (highlightedHook) {\n highlightedHook(isToDummyElement ? void 0 : toElement, toStep, {\n config: getConfig(),\n state: getState(),\n });\n }\n setState(\"__transitionCallback\", void 0);\n setState(\"__previousStep\", fromStep);\n setState(\"__previousElement\", fromElement);\n setState(\"__activeStep\", toStep);\n setState(\"__activeElement\", toElement);\n }\n window.requestAnimationFrame(animate);\n };\n setState(\"__transitionCallback\", animate);\n window.requestAnimationFrame(animate);\n bringInView(toElement);\n if (!hasDelayedPopover && toStep.popover) {\n renderPopover(toElement, toStep);\n }\n fromElement.classList.remove(\n \"gleap-tour-active-element\",\n \"gleap-tour-no-interaction\"\n );\n fromElement.removeAttribute(\"aria-haspopup\");\n fromElement.removeAttribute(\"aria-expanded\");\n fromElement.removeAttribute(\"aria-controls\");\n const disableActiveInteraction =\n toStep.disableActiveInteraction ??\n getConfig(\"disableActiveInteraction\") ??\n false;\n if (disableActiveInteraction) {\n toElement.classList.add(\"gleap-tour-no-interaction\");\n }\n toElement.classList.add(\"gleap-tour-active-element\");\n toElement.setAttribute(\"aria-haspopup\", \"dialog\");\n toElement.setAttribute(\"aria-expanded\", \"true\");\n toElement.setAttribute(\"aria-controls\", \"gleap-tour-popover-content\");\n }\n function destroyHighlight() {\n var _a;\n (_a = document.getElementById(\"gleap-tour-dummy-element\")) == null\n ? void 0\n : _a.remove();\n document\n .querySelectorAll(\".gleap-tour-active-element\")\n .forEach((element) => {\n element.classList.remove(\n \"gleap-tour-active-element\",\n \"gleap-tour-no-interaction\"\n );\n element.removeAttribute(\"aria-haspopup\");\n element.removeAttribute(\"aria-expanded\");\n element.removeAttribute(\"aria-controls\");\n });\n }\n function requireRefresh() {\n const resizeTimeout = getState(\"__resizeTimeout\");\n if (resizeTimeout) {\n window.cancelAnimationFrame(resizeTimeout);\n }\n setState(\n \"__resizeTimeout\",\n window.requestAnimationFrame(refreshActiveHighlight)\n );\n }\n function trapFocus(e) {\n var _a;\n const isActivated = getState(\"isInitialized\");\n if (!isActivated) {\n return;\n }\n const isTabKey = e.key === \"Tab\" || e.keyCode === 9;\n if (!isTabKey) {\n return;\n }\n const activeElement = getState(\"__activeElement\");\n const popoverEl = (_a = getState(\"popover\")) == null ? void 0 : _a.wrapper;\n const focusableEls = getFocusableElements([\n ...(popoverEl ? [popoverEl] : []),\n ...(activeElement ? [activeElement] : []),\n ]);\n const firstFocusableEl = focusableEls[0];\n const lastFocusableEl = focusableEls[focusableEls.length - 1];\n e.preventDefault();\n if (e.shiftKey) {\n const previousFocusableEl =\n focusableEls[focusableEls.indexOf(document.activeElement) - 1] ||\n lastFocusableEl;\n previousFocusableEl == null ? void 0 : previousFocusableEl.focus();\n } else {\n const nextFocusableEl =\n focusableEls[focusableEls.indexOf(document.activeElement) + 1] ||\n firstFocusableEl;\n nextFocusableEl == null ? void 0 : nextFocusableEl.focus();\n }\n }\n function onKeyup(e) {\n var _a;\n const allowKeyboardControl =\n (_a = getConfig(\"allowKeyboardControl\")) != null ? _a : true;\n if (!allowKeyboardControl) {\n return;\n }\n if (e.key === \"Escape\") {\n emit(\"escapePress\");\n } else if (e.key === \"ArrowRight\") {\n emit(\"arrowRightPress\");\n } else if (e.key === \"ArrowLeft\") {\n emit(\"arrowLeftPress\");\n }\n }\n function onDriverClick(element, listener, shouldPreventDefault) {\n const listenerWrapper = (e, listener2) => {\n const target = e.target;\n if (!element.contains(target)) {\n return;\n }\n if (!shouldPreventDefault || shouldPreventDefault(target)) {\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n listener2 == null ? void 0 : listener2(e);\n };\n const useCapture = true;\n document.addEventListener(\"pointerdown\", listenerWrapper, useCapture);\n document.addEventListener(\"mousedown\", listenerWrapper, useCapture);\n document.addEventListener(\"pointerup\", listenerWrapper, useCapture);\n document.addEventListener(\"mouseup\", listenerWrapper, useCapture);\n document.addEventListener(\n \"click\",\n (e) => {\n listenerWrapper(e, listener);\n },\n useCapture\n );\n }\n function initEvents() {\n window.addEventListener(\"keyup\", onKeyup, false);\n window.addEventListener(\"keydown\", trapFocus, false);\n window.addEventListener(\"resize\", requireRefresh);\n window.addEventListener(\"scroll\", requireRefresh);\n }\n function destroyEvents() {\n window.removeEventListener(\"keyup\", onKeyup);\n window.removeEventListener(\"resize\", requireRefresh);\n window.removeEventListener(\"scroll\", requireRefresh);\n }\n function hidePopover() {\n const popover = getState(\"popover\");\n if (!popover) {\n return;\n }\n popover.wrapper.style.display = \"none\";\n }\n function renderPopover(element, step) {\n var _a, _b;\n let popover = getState(\"popover\");\n if (popover) {\n document.body.removeChild(popover.wrapper);\n }\n popover = createPopover();\n document.body.appendChild(popover.wrapper);\n const {\n title,\n description,\n showButtons,\n disableButtons,\n showProgress,\n nextBtnText = getConfig(\"nextBtnText\") || \"Next\",\n prevBtnText = getConfig(\"prevBtnText\") || \"Previous\",\n progressText = getConfig(\"progressText\") || \"{current} of {total}\",\n } = step.popover || {};\n popover.nextButton.innerHTML = nextBtnText;\n popover.previousButton.innerHTML = prevBtnText;\n popover.progress.innerHTML = progressText;\n if (title) {\n popover.title.innerHTML = title;\n popover.title.style.display = \"block\";\n } else {\n popover.title.style.display = \"none\";\n }\n if (description) {\n popover.description.innerHTML = description;\n popover.description.style.display = \"block\";\n } else {\n popover.description.style.display = \"none\";\n }\n const showButtonsConfig = showButtons || getConfig(\"showButtons\");\n const showProgressConfig =\n showProgress || getConfig(\"showProgress\") || false;\n const showFooter =\n (showButtonsConfig == null\n ? void 0\n : showButtonsConfig.includes(\"next\")) ||\n (showButtonsConfig == null\n ? void 0\n : showButtonsConfig.includes(\"previous\")) ||\n showProgressConfig;\n popover.closeButton.style.display = showButtonsConfig.includes(\"close\")\n ? \"block\"\n : \"none\";\n if (showFooter) {\n popover.footer.style.display = \"flex\";\n popover.progress.style.display = showProgressConfig ? \"block\" : \"none\";\n popover.nextButton.style.display = showButtonsConfig.includes(\"next\")\n ? \"block\"\n : \"none\";\n popover.previousButton.style.display = showButtonsConfig.includes(\n \"previous\"\n )\n ? \"block\"\n : \"none\";\n } else {\n popover.footer.style.display = \"none\";\n }\n const disabledButtonsConfig =\n disableButtons || getConfig(\"disableButtons\") || [];\n if (\n disabledButtonsConfig == null\n ? void 0\n : disabledButtonsConfig.includes(\"next\")\n ) {\n popover.nextButton.disabled = true;\n popover.nextButton.classList.add(\"gleap-tour-popover-btn-disabled\");\n }\n if (\n disabledButtonsConfig == null\n ? void 0\n : disabledButtonsConfig.includes(\"previous\")\n ) {\n popover.previousButton.disabled = true;\n popover.previousButton.classList.add(\"gleap-tour-popover-btn-disabled\");\n }\n if (\n disabledButtonsConfig == null\n ? void 0\n : disabledButtonsConfig.includes(\"close\")\n ) {\n popover.closeButton.disabled = true;\n popover.closeButton.classList.add(\"gleap-tour-popover-btn-disabled\");\n }\n const popoverWrapper = popover.wrapper;\n popoverWrapper.style.display = \"block\";\n popoverWrapper.style.left = \"\";\n popoverWrapper.style.top = \"\";\n popoverWrapper.style.bottom = \"\";\n popoverWrapper.style.right = \"\";\n popoverWrapper.id = \"gleap-tour-popover-content\";\n popoverWrapper.setAttribute(\"role\", \"dialog\");\n popoverWrapper.setAttribute(\"aria-labelledby\", \"gleap-tour-popover-title\");\n popoverWrapper.setAttribute(\n \"aria-describedby\",\n \"gleap-tour-popover-description\"\n );\n const popoverArrow = popover.arrow;\n popoverArrow.className = \"gleap-tour-popover-arrow\";\n const customPopoverClass =\n ((_a = step.popover) == null ? void 0 : _a.popoverClass) ||\n getConfig(\"popoverClass\") ||\n \"\";\n popoverWrapper.className =\n `gleap-tour-popover ${customPopoverClass}`.trim();\n onDriverClick(\n popover.wrapper,\n (e) => {\n var _a2, _b2, _c;\n const target = e.target;\n const onNextClick =\n ((_a2 = step.popover) == null ? void 0 : _a2.onNextClick) ||\n getConfig(\"onNextClick\");\n const onPrevClick =\n ((_b2 = step.popover) == null ? void 0 : _b2.onPrevClick) ||\n getConfig(\"onPrevClick\");\n const onCloseClick =\n ((_c = step.popover) == null ? void 0 : _c.onCloseClick) ||\n getConfig(\"onCloseClick\");\n if (target.classList.contains(\"gleap-tour-popover-next-btn\")) {\n if (onNextClick) {\n return onNextClick(element, step, {\n config: getConfig(),\n state: getState(),\n });\n } else {\n return emit(\"nextClick\");\n }\n }\n if (target.classList.contains(\"gleap-tour-popover-prev-btn\")) {\n if (onPrevClick) {\n return onPrevClick(element, step, {\n config: getConfig(),\n state: getState(),\n });\n } else {\n return emit(\"prevClick\");\n }\n }\n if (target.classList.contains(\"gleap-tour-popover-close-btn\")) {\n if (onCloseClick) {\n return onCloseClick(element, step, {\n config: getConfig(),\n state: getState(),\n });\n } else {\n return emit(\"closeClick\");\n }\n }\n return void 0;\n },\n (target) => {\n return (\n !(popover == null ? void 0 : popover.description.contains(target)) &&\n !(popover == null ? void 0 : popover.title.contains(target)) &&\n typeof target.className === \"string\" &&\n target.className.includes(\"gleap-tour-popover\")\n );\n }\n );\n setState(\"popover\", popover);\n const onPopoverRender =\n ((_b = step.popover) == null ? void 0 : _b.onPopoverRender) ||\n getConfig(\"onPopoverRender\");\n if (onPopoverRender) {\n onPopoverRender(popover, {\n config: getConfig(),\n state: getState(),\n });\n }\n repositionPopover(element, step);\n bringInView(popoverWrapper);\n const isToDummyElement = element.classList.contains(\n \"gleap-tour-dummy-element\"\n );\n const focusableElement = getFocusableElements([\n popoverWrapper,\n ...(isToDummyElement ? [] : [element]),\n ]);\n if (focusableElement.length > 0) {\n focusableElement[0].focus();\n }\n }\n function getPopoverDimensions() {\n const popover = getState(\"popover\");\n if (!(popover == null ? void 0 : popover.wrapper)) {\n return;\n }\n const boundingClientRect = popover.wrapper.getBoundingClientRect();\n const stagePadding = getConfig(\"stagePadding\") || 0;\n const popoverOffset = getConfig(\"popoverOffset\") || 0;\n return {\n width: boundingClientRect.width + stagePadding + popoverOffset,\n height: boundingClientRect.height + stagePadding + popoverOffset,\n realWidth: boundingClientRect.width,\n realHeight: boundingClientRect.height,\n };\n }\n function calculateTopForLeftRight(alignment, config) {\n const {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n } = config;\n if (alignment === \"start\") {\n return Math.max(\n Math.min(\n elementDimensions.top - popoverPadding,\n window.innerHeight -\n popoverDimensions.realHeight -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n if (alignment === \"end\") {\n return Math.max(\n Math.min(\n elementDimensions.top -\n (popoverDimensions == null\n ? void 0\n : popoverDimensions.realHeight) +\n elementDimensions.height +\n popoverPadding,\n window.innerHeight -\n (popoverDimensions == null\n ? void 0\n : popoverDimensions.realHeight) -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n if (alignment === \"center\") {\n return Math.max(\n Math.min(\n elementDimensions.top +\n elementDimensions.height / 2 -\n (popoverDimensions == null\n ? void 0\n : popoverDimensions.realHeight) /\n 2,\n window.innerHeight -\n (popoverDimensions == null\n ? void 0\n : popoverDimensions.realHeight) -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n return 0;\n }\n function calculateLeftForTopBottom(alignment, config) {\n const {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n } = config;\n if (alignment === \"start\") {\n return Math.max(\n Math.min(\n elementDimensions.left - popoverPadding,\n window.innerWidth -\n popoverDimensions.realWidth -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n if (alignment === \"end\") {\n return Math.max(\n Math.min(\n elementDimensions.left -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) +\n elementDimensions.width +\n popoverPadding,\n window.innerWidth -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n if (alignment === \"center\") {\n return Math.max(\n Math.min(\n elementDimensions.left +\n elementDimensions.width / 2 -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) /\n 2,\n window.innerWidth -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n return 0;\n }\n function repositionPopover(element, step) {\n const popover = getState(\"popover\");\n if (!popover) {\n return;\n }\n const { align = \"start\", side = \"left\" } =\n (step == null ? void 0 : step.popover) || {};\n const requiredAlignment = align;\n const requiredSide =\n element.id === \"gleap-tour-dummy-element\" ? \"over\" : side;\n const popoverPadding = getConfig(\"stagePadding\") || 0;\n const popoverDimensions = getPopoverDimensions();\n const popoverArrowDimensions = popover.arrow.getBoundingClientRect();\n const elementDimensions = element.getBoundingClientRect();\n const topValue = elementDimensions.top - popoverDimensions.height;\n let isTopOptimal = topValue >= 0;\n const bottomValue =\n window.innerHeight -\n (elementDimensions.bottom + popoverDimensions.height);\n let isBottomOptimal = bottomValue >= 0;\n const leftValue = elementDimensions.left - popoverDimensions.width;\n let isLeftOptimal = leftValue >= 0;\n const rightValue =\n window.innerWidth - (elementDimensions.right + popoverDimensions.width);\n let isRightOptimal = rightValue >= 0;\n const noneOptimal =\n !isTopOptimal && !isBottomOptimal && !isLeftOptimal && !isRightOptimal;\n let popoverRenderedSide = requiredSide;\n if (requiredSide === \"top\" && isTopOptimal) {\n isRightOptimal = isLeftOptimal = isBottomOptimal = false;\n } else if (requiredSide === \"bottom\" && isBottomOptimal) {\n isRightOptimal = isLeftOptimal = isTopOptimal = false;\n } else if (requiredSide === \"left\" && isLeftOptimal) {\n isRightOptimal = isTopOptimal = isBottomOptimal = false;\n } else if (requiredSide === \"right\" && isRightOptimal) {\n isLeftOptimal = isTopOptimal = isBottomOptimal = false;\n }\n if (requiredSide === \"over\") {\n const leftToSet = window.innerWidth / 2 - popoverDimensions.realWidth / 2;\n const topToSet =\n window.innerHeight / 2 - popoverDimensions.realHeight / 2;\n popover.wrapper.style.left = `${leftToSet}px`;\n popover.wrapper.style.right = `auto`;\n popover.wrapper.style.top = `${topToSet}px`;\n popover.wrapper.style.bottom = `auto`;\n } else if (noneOptimal) {\n const leftValue2 =\n window.innerWidth / 2 -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) / 2;\n const bottomValue2 = 10;\n popover.wrapper.style.left = `${leftValue2}px`;\n popover.wrapper.style.right = `auto`;\n popover.wrapper.style.bottom = `${bottomValue2}px`;\n popover.wrapper.style.top = `auto`;\n } else if (isLeftOptimal) {\n const leftToSet = Math.min(\n leftValue,\n window.innerWidth -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) -\n popoverArrowDimensions.width\n );\n const topToSet = calculateTopForLeftRight(requiredAlignment, {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n });\n popover.wrapper.style.left = `${leftToSet}px`;\n popover.wrapper.style.top = `${topToSet}px`;\n popover.wrapper.style.bottom = `auto`;\n popover.wrapper.style.right = \"auto\";\n popoverRenderedSide = \"left\";\n } else if (isRightOptimal) {\n const rightToSet = Math.min(\n rightValue,\n window.innerWidth -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) -\n popoverArrowDimensions.width\n );\n const topToSet = calculateTopForLeftRight(requiredAlignment, {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n });\n popover.wrapper.style.right = `${rightToSet}px`;\n popover.wrapper.style.top = `${topToSet}px`;\n popover.wrapper.style.bottom = `auto`;\n popover.wrapper.style.left = \"auto\";\n popoverRenderedSide = \"right\";\n } else if (isTopOptimal) {\n const topToSet = Math.min(\n topValue,\n window.innerHeight -\n popoverDimensions.realHeight -\n popoverArrowDimensions.width\n );\n let leftToSet = calculateLeftForTopBottom(requiredAlignment, {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n });\n popover.wrapper.style.top = `${topToSet}px`;\n popover.wrapper.style.left = `${leftToSet}px`;\n popover.wrapper.style.bottom = `auto`;\n popover.wrapper.style.right = \"auto\";\n popoverRenderedSide = \"top\";\n } else if (isBottomOptimal) {\n const bottomToSet = Math.min(\n bottomValue,\n window.innerHeight -\n (popoverDimensions == null ? void 0 : popoverDimensions.realHeight) -\n popoverArrowDimensions.width\n );\n let leftToSet = calculateLeftForTopBottom(requiredAlignment, {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n });\n popover.wrapper.style.left = `${leftToSet}px`;\n popover.wrapper.style.bottom = `${bottomToSet}px`;\n popover.wrapper.style.top = `auto`;\n popover.wrapper.style.right = \"auto\";\n popoverRenderedSide = \"bottom\";\n }\n if (!noneOptimal) {\n renderPopoverArrow(requiredAlignment, popoverRenderedSide, element);\n } else {\n popover.arrow.classList.add(\"gleap-tour-popover-arrow-none\");\n }\n }\n function renderPopoverArrow(alignment, side, element) {\n const popover = getState(\"popover\");\n if (!popover) {\n return;\n }\n const elementDimensions = element.getBoundingClientRect();\n const popoverDimensions = getPopoverDimensions();\n const popoverArrow = popover.arrow;\n const popoverWidth = popoverDimensions.width;\n const windowWidth = window.innerWidth;\n const elementWidth = elementDimensions.width;\n const elementLeft = elementDimensions.left;\n const popoverHeight = popoverDimensions.height;\n const windowHeight = window.innerHeight;\n const elementTop = elementDimensions.top;\n const elementHeight = elementDimensions.height;\n popoverArrow.className = \"gleap-tour-popover-arrow\";\n let arrowSide = side;\n let arrowAlignment = alignment;\n if (side === \"top\") {\n if (elementLeft + elementWidth <= 0) {\n arrowSide = \"right\";\n arrowAlignment = \"end\";\n } else if (elementLeft + elementWidth - popoverWidth <= 0) {\n arrowSide = \"top\";\n arrowAlignment = \"start\";\n }\n if (elementLeft >= windowWidth) {\n arrowSide = \"left\";\n arrowAlignment = \"end\";\n } else if (elementLeft + popoverWidth >= windowWidth) {\n arrowSide = \"top\";\n arrowAlignment = \"end\";\n }\n } else if (side === \"bottom\") {\n if (elementLeft + elementWidth <= 0) {\n arrowSide = \"right\";\n arrowAlignment = \"start\";\n } else if (elementLeft + elementWidth - popoverWidth <= 0) {\n arrowSide = \"bottom\";\n arrowAlignment = \"start\";\n }\n if (elementLeft >= windowWidth) {\n arrowSide = \"left\";\n arrowAlignment = \"start\";\n } else if (elementLeft + popoverWidth >= windowWidth) {\n arrowSide = \"bottom\";\n arrowAlignment = \"end\";\n }\n } else if (side === \"left\") {\n if (elementTop + elementHeight <= 0) {\n arrowSide = \"bottom\";\n arrowAlignment = \"end\";\n } else if (elementTop + elementHeight - popoverHeight <= 0) {\n arrowSide = \"left\";\n arrowAlignment = \"start\";\n }\n if (elementTop >= windowHeight) {\n arrowSide = \"top\";\n arrowAlignment = \"end\";\n } else if (elementTop + popoverHeight >= windowHeight) {\n arrowSide = \"left\";\n arrowAlignment = \"end\";\n }\n } else if (side === \"right\") {\n if (elementTop + elementHeight <= 0) {\n arrowSide = \"bottom\";\n arrowAlignment = \"start\";\n } else if (elementTop + elementHeight - popoverHeight <= 0) {\n arrowSide = \"right\";\n arrowAlignment = \"start\";\n }\n if (elementTop >= windowHeight) {\n arrowSide = \"top\";\n arrowAlignment = \"start\";\n } else if (elementTop + popoverHeight >= windowHeight) {\n arrowSide = \"right\";\n arrowAlignment = \"end\";\n }\n } else;\n if (!arrowSide) {\n popoverArrow.classList.add(\"gleap-tour-popover-arrow-none\");\n } else {\n popoverArrow.classList.add(`gleap-tour-popover-arrow-side-${arrowSide}`);\n popoverArrow.classList.add(\n `gleap-tour-popover-arrow-align-${arrowAlignment}`\n );\n }\n }\n function createPopover() {\n const wrapper = document.createElement(\"div\");\n wrapper.classList.add(\"gleap-tour-popover\");\n const arrow = document.createElement(\"div\");\n arrow.classList.add(\"gleap-tour-popover-arrow\");\n const title = document.createElement(\"div\");\n title.id = \"gleap-tour-popover-title\";\n title.classList.add(\"gleap-tour-popover-title\");\n title.style.display = \"none\";\n title.innerText = \"Popover Title\";\n const description = document.createElement(\"div\");\n description.id = \"gleap-tour-popover-description\";\n description.classList.add(\"gleap-tour-popover-description\");\n description.style.display = \"none\";\n description.innerText = \"Popover description is here\";\n const closeButton = document.createElement(\"button\");\n closeButton.type = \"button\";\n closeButton.classList.add(\"gleap-tour-popover-close-btn\");\n closeButton.setAttribute(\"aria-label\", \"Close\");\n closeButton.innerHTML = \"×\";\n const footer = document.createElement(\"div\");\n footer.classList.add(\"gleap-tour-popover-footer\");\n const progress = document.createElement(\"span\");\n progress.classList.add(\"gleap-tour-popover-progress-text\");\n progress.innerText = \"\";\n const footerButtons = document.createElement(\"span\");\n footerButtons.classList.add(\"gleap-tour-popover-navigation-btns\");\n const previousButton = document.createElement(\"button\");\n previousButton.type = \"button\";\n previousButton.classList.add(\"gleap-tour-popover-prev-btn\");\n previousButton.innerHTML = \"← Previous\";\n const nextButton = document.createElement(\"button\");\n nextButton.type = \"button\";\n nextButton.classList.add(\"gleap-tour-popover-next-btn\");\n nextButton.innerHTML = \"Next →\";\n footerButtons.appendChild(previousButton);\n footerButtons.appendChild(nextButton);\n footer.appendChild(progress);\n footer.appendChild(footerButtons);\n wrapper.appendChild(closeButton);\n wrapper.appendChild(arrow);\n wrapper.appendChild(title);\n wrapper.appendChild(description);\n wrapper.appendChild(footer);\n return {\n wrapper,\n arrow,\n title,\n description,\n footer,\n previousButton,\n nextButton,\n closeButton,\n footerButtons,\n progress,\n };\n }\n function destroyPopover() {\n var _a;\n const popover = getState(\"popover\");\n if (!popover) {\n return;\n }\n (_a = popover.wrapper.parentElement) == null\n ? void 0\n : _a.removeChild(popover.wrapper);\n }\n function driver(options = {}) {\n configure(options);\n function handleClose() {\n if (!getConfig(\"allowClose\")) {\n return;\n }\n destroy();\n }\n function moveNext() {\n const activeIndex = getState(\"activeIndex\");\n const steps = getConfig(\"steps\") || [];\n if (typeof activeIndex === \"undefined\") {\n return;\n }\n const nextStepIndex = activeIndex + 1;\n if (steps[nextStepIndex]) {\n drive(nextStepIndex);\n } else {\n destroy();\n }\n }\n function movePrevious() {\n const activeIndex = getState(\"activeIndex\");\n const steps = getConfig(\"steps\") || [];\n if (typeof activeIndex === \"undefined\") {\n return;\n }\n const previousStepIndex = activeIndex - 1;\n if (steps[previousStepIndex]) {\n drive(previousStepIndex);\n } else {\n destroy();\n }\n }\n function moveTo(index) {\n const steps = getConfig(\"steps\") || [];\n if (steps[index]) {\n drive(index);\n } else {\n destroy();\n }\n }\n function handleArrowLeft() {\n var _a;\n const isTransitioning = getState(\"__transitionCallback\");\n if (isTransitioning) {\n return;\n }\n const activeIndex = getState(\"activeIndex\");\n const activeStep = getState(\"__activeStep\");\n const activeElement = getState(\"__activeElement\");\n\n if (activeStep.mode === \"CLICK\") {\n return;\n }\n if (\n typeof activeIndex === \"undefined\" ||\n typeof activeStep === \"undefined\"\n ) {\n return;\n }\n const currentStepIndex = getState(\"activeIndex\");\n if (typeof currentStepIndex === \"undefined\") {\n return;\n }\n const onPrevClick =\n ((_a = activeStep.popover) == null ? void 0 : _a.onPrevClick) ||\n getConfig(\"onPrevClick\");\n if (onPrevClick) {\n return onPrevClick(activeElement, activeStep, {\n config: getConfig(),\n state: getState(),\n });\n }\n movePrevious();\n }\n function handleArrowRight() {\n var _a;\n const isTransitioning = getState(\"__transitionCallback\");\n if (isTransitioning) {\n return;\n }\n const activeIndex = getState(\"activeIndex\");\n const activeStep = getState(\"__activeStep\");\n const activeElement = getState(\"__activeElement\");\n\n if (activeStep.mode === \"CLICK\") {\n return;\n }\n if (\n typeof activeIndex === \"undefined\" ||\n typeof activeStep === \"undefined\"\n ) {\n return;\n }\n const onNextClick =\n ((_a = activeStep.popover) == null ? void 0 : _a.onNextClick) ||\n getConfig(\"onNextClick\");\n if (onNextClick) {\n return onNextClick(activeElement, activeStep, {\n config: getConfig(),\n state: getState(),\n });\n }\n moveNext();\n }\n function init() {\n if (getState(\"isInitialized\")) {\n return;\n }\n setState(\"isInitialized\", true);\n document.body.classList.add(\n \"gleap-tour-active\",\n getConfig(\"animate\") ? \"gleap-tour-fade\" : \"gleap-tour-simple\"\n );\n initEvents();\n listen(\"overlayClick\", handleClose);\n listen(\"escapePress\", handleClose);\n listen(\"arrowLeftPress\", handleArrowLeft);\n listen(\"arrowRightPress\", handleArrowRight);\n }\n function drive(stepIndex = 0) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n const steps = getConfig(\"steps\");\n if (!steps) {\n console.error(\"No steps to drive through\");\n destroy();\n return;\n }\n if (!steps[stepIndex]) {\n destroy();\n return;\n }\n setState(\"__activeOnDestroyed\", document.activeElement);\n setState(\"activeIndex\", stepIndex);\n const currentStep = steps[stepIndex];\n const hasNextStep = steps[stepIndex + 1];\n const hasPreviousStep = steps[stepIndex - 1];\n const doneBtnText =\n ((_a = currentStep.popover) == null ? void 0 : _a.doneBtnText) ||\n getConfig(\"doneBtnText\") ||\n \"Done\";\n const allowsClosing = getConfig(\"allowClose\");\n const showProgress =\n typeof ((_b = currentStep.popover) == null\n ? void 0\n : _b.showProgress) !== \"undefined\"\n ? (_c = currentStep.popover) == null\n ? void 0\n : _c.showProgress\n : getConfig(\"showProgress\");\n const progressText =\n ((_d = currentStep.popover) == null ? void 0 : _d.progressText) ||\n getConfig(\"progressText\") ||\n \"{{current}} of {{total}}\";\n const progressTextReplaced = progressText\n .replace(\"{{current}}\", `${stepIndex + 1}`)\n .replace(\"{{total}}\", `${steps.length}`);\n const configuredButtons =\n ((_e = currentStep.popover) == null ? void 0 : _e.showButtons) ||\n getConfig(\"showButtons\");\n const calculatedButtons = [\n \"next\",\n \"previous\",\n ...(allowsClosing ? [\"close\"] : []),\n ].filter((b) => {\n return (\n !(configuredButtons == null ? void 0 : configuredButtons.length) ||\n configuredButtons.includes(b)\n );\n });\n const onNextClick =\n ((_f = currentStep.popover) == null ? void 0 : _f.onNextClick) ||\n getConfig(\"onNextClick\");\n const onPrevClick =\n ((_g = currentStep.popover) == null ? void 0 : _g.onPrevClick) ||\n getConfig(\"onPrevClick\");\n const onCloseClick =\n ((_h = currentStep.popover) == null ? void 0 : _h.onCloseClick) ||\n getConfig(\"onCloseClick\");\n highlight({\n ...currentStep,\n popover: {\n showButtons: calculatedButtons,\n nextBtnText: !hasNextStep ? doneBtnText : void 0,\n disableButtons: [...(!hasPreviousStep ? [\"previous\"] : [])],\n showProgress,\n progressText: progressTextReplaced,\n onNextClick: onNextClick\n ? onNextClick\n : () => {\n if (!hasNextStep) {\n destroy();\n } else {\n drive(stepIndex + 1);\n }\n },\n onPrevClick: onPrevClick\n ? onPrevClick\n : () => {\n drive(stepIndex - 1);\n },\n onCloseClick: onCloseClick\n ? onCloseClick\n : () => {\n destroy();\n },\n ...((currentStep == null ? void 0 : currentStep.popover) || {}),\n },\n });\n }\n function destroy(withOnDestroyStartedHook = true) {\n const activeElement = getState(\"__activeElement\");\n const activeStep = getState(\"__activeStep\");\n const activeOnDestroyed = getState(\"__activeOnDestroyed\");\n const onDestroyStarted = getConfig(\"onDestroyStarted\");\n if (withOnDestroyStartedHook && onDestroyStarted) {\n const isActiveDummyElement =\n !activeElement ||\n (activeElement == null ? void 0 : activeElement.id) ===\n \"gleap-tour-dummy-element\";\n onDestroyStarted(\n isActiveDummyElement ? void 0 : activeElement,\n activeStep,\n {\n config: getConfig(),\n state: getState(),\n }\n );\n return;\n }\n const onDeselected =\n (activeStep == null ? void 0 : activeStep.onDeselected) ||\n getConfig(\"onDeselected\");\n const onDestroyed = getConfig(\"onDestroyed\");\n document.body.classList.remove(\n \"gleap-tour-active\",\n \"gleap-tour-fade\",\n \"gleap-tour-simple\"\n );\n destroyEvents();\n destroyPopover();\n destroyHighlight();\n destroyOverlay();\n destroyEmitter();\n resetState();\n if (activeElement && activeStep) {\n const isActiveDummyElement =\n activeElement.id === \"gleap-tour-dummy-element\";\n if (onDeselected) {\n onDeselected(\n isActiveDummyElement ? void 0 : activeElement,\n activeStep,\n {\n config: getConfig(),\n state: getState(),\n }\n );\n }\n if (onDestroyed) {\n onDestroyed(\n isActiveDummyElement ? void 0 : activeElement,\n activeStep,\n {\n config: getConfig(),\n state: getState(),\n }\n );\n }\n }\n if (activeOnDestroyed) {\n activeOnDestroyed.focus();\n }\n }\n return {\n isActive: () => getState(\"isInitialized\") || false,\n refresh: requireRefresh,\n drive: (stepIndex = 0) => {\n init();\n drive(stepIndex);\n },\n setConfig: configure,\n setSteps: (steps) => {\n resetState();\n configure({\n ...getConfig(),\n steps,\n });\n },\n getConfig,\n getState,\n getActiveIndex: () => getState(\"activeIndex\"),\n isFirstStep: () => getState(\"activeIndex\") === 0,\n isLastStep: () => {\n const steps = getConfig(\"steps\") || [];\n const activeIndex = getState(\"activeIndex\");\n return activeIndex !== void 0 && activeIndex === steps.length - 1;\n },\n getActiveStep: () => getState(\"activeStep\"),\n getActiveElement: () => getState(\"activeElement\"),\n getPreviousElement: () => getState(\"previousElement\"),\n getPreviousStep: () => getState(\"previousStep\"),\n moveNext,\n movePrevious,\n moveTo,\n hasNextStep: () => {\n const steps = getConfig(\"steps\") || [];\n const activeIndex = getState(\"activeIndex\");\n return activeIndex !== void 0 && steps[activeIndex + 1];\n },\n hasPreviousStep: () => {\n const steps = getConfig(\"steps\") || [];\n const activeIndex = getState(\"activeIndex\");\n return activeIndex !== void 0 && steps[activeIndex - 1];\n },\n highlight: (step) => {\n init();\n highlight({\n ...step,\n popover: step.popover\n ? {\n showButtons: [],\n showProgress: false,\n progressText: \"\",\n ...step.popover,\n }\n : void 0,\n });\n },\n destroy: () => {\n destroy(false);\n },\n };\n }\n return driver;\n})({});\n\nexport default GleapTours;\n","import { GleapConfigManager, GleapTranslationManager } from \"./Gleap\";\nimport { calculateContrast, loadIcon } from \"./UI\";\n\nconst localStorageKey = \"gleap-tour-data\";\nconst pointerContainerId = \"copilot-pointer-container\";\nconst styleId = \"copilot-tour-styles\";\nconst copilotJoinedContainerId = \"copilot-joined-container\";\n\nfunction estimateReadTime(text) {\n if (typeof window === \"undefined\") return;\n\n const wordsPerSecond = 3.6; // Average reading speed\n const wordCount = text.split(/\\s+/).filter((word) => word.length > 0).length;\n const readTimeInSeconds = Math.ceil(wordCount / wordsPerSecond);\n return readTimeInSeconds + 1;\n}\n\nfunction htmlToPlainText(html) {\n if (typeof window === \"undefined\") return;\n\n const tempDiv = document.createElement(\"div\");\n tempDiv.innerHTML = html;\n return tempDiv.textContent || \"\";\n}\n\nfunction scrollToElement(element) {\n if (typeof window === \"undefined\") return;\n\n if (element) {\n element.scrollIntoView({\n behavior: \"smooth\",\n block: \"center\",\n inline: \"center\",\n });\n }\n}\n\nfunction performClickAnimation(posX, posY) {\n if (typeof window === \"undefined\") return;\n\n const wave = document.createElement(\"div\");\n wave.className = \"click-wave\";\n wave.style.left = `${posX - 17}px`;\n wave.style.top = `${posY - 17}px`;\n document.body.appendChild(wave);\n setTimeout(() => {\n wave.remove();\n }, 800);\n}\n\nfunction waitForElement(selector, timeout = 5000) {\n if (typeof window === \"undefined\") return;\n\n const pollInterval = 100;\n const maxAttempts = timeout / pollInterval;\n let attempts = 0;\n return new Promise((resolve, reject) => {\n const interval = setInterval(() => {\n const element = document.querySelector(selector);\n if (element) {\n clearInterval(interval);\n resolve(element);\n } else if (attempts >= maxAttempts) {\n clearInterval(interval);\n reject(new Error(`Element not found for selector: ${selector}`));\n }\n attempts++;\n }, pollInterval);\n });\n}\n\nfunction smoothScrollToY(yPosition) {\n if (typeof window === \"undefined\") return;\n\n const viewportHeight = window.innerHeight;\n const targetScrollPosition = yPosition - viewportHeight / 2;\n window.scrollTo({\n top: targetScrollPosition,\n behavior: \"smooth\",\n });\n}\n\nasync function canPlayAudio() {\n if (typeof window === \"undefined\") return;\n\n const audio = new Audio(\n \"data:audio/wav;base64,UklGRigAAABXQVZFZm10IBAAAAABAAEARKwAABCxAgAEABAAZGF0YQAAAAA=\"\n );\n try {\n await audio.play();\n return true;\n } catch (err) {\n return false;\n }\n}\n\n// Helper: Check if an element is fully visible in the viewport.\nfunction isElementFullyVisible(el) {\n if (typeof window === \"undefined\") return;\n\n const rect = el.getBoundingClientRect();\n return (\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <= window.innerHeight &&\n rect.right <= window.innerWidth\n );\n}\n\n// Helper: Get scrollable ancestors of an element.\nfunction getScrollableAncestors(el) {\n if (typeof window === \"undefined\") return;\n\n let ancestors = [];\n let current = el.parentElement;\n while (current) {\n const style = window.getComputedStyle(current);\n if (\n (style.overflowY === \"auto\" || style.overflowY === \"scroll\") &&\n current.scrollHeight > current.clientHeight\n ) {\n ancestors.push(current);\n }\n current = current.parentElement;\n }\n return ancestors;\n}\n\nexport default class GleapCopilotTours {\n productTourData = undefined;\n productTourId = undefined;\n currentActiveIndex = undefined;\n lastArrowPositionX = undefined;\n lastArrowPositionY = undefined;\n onCompleteCallback = undefined;\n audioMuted = false;\n currentAudio = undefined;\n\n // Cached pointer container.\n _pointerContainer = null;\n // For scroll handling.\n _scrollListeners = [];\n _currentAnchor = null;\n _currentStep = null;\n _scrollDebounceTimer = null;\n\n // GleapReplayRecorder singleton.\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapCopilotTours();\n }\n return this.instance;\n }\n\n constructor() {\n const self = this;\n\n if (typeof window !== \"undefined\") {\n this._scrollListeners = [];\n this._currentAnchor = null;\n this._currentStep = null;\n this._scrollDebounceTimer = null;\n\n window.addEventListener(\"resize\", () => {\n if (\n self.productTourId &&\n self.currentActiveIndex >= 0 &&\n self.productTourData &&\n self.productTourData.steps\n ) {\n const steps = self.productTourData.steps;\n const currentStep = steps[self.currentActiveIndex];\n if (\n currentStep &&\n currentStep.selector &&\n currentStep.selector !== \"\"\n ) {\n self.updatePointerPosition(\n document.querySelector(currentStep.selector),\n currentStep\n );\n }\n }\n });\n }\n }\n\n disable() {\n this.disabled = true;\n \n this.cleanup();\n }\n\n startWithConfig(tourId, config, onCompleteCallback = undefined) {\n if (typeof window === \"undefined\") return;\n if (this.productTourId) return;\n if (this.disabled) return;\n\n this.productTourId = tourId;\n this.productTourData = config;\n this.currentActiveIndex = 0;\n this.onCompleteCallback = onCompleteCallback;\n this.start();\n }\n\n storeUncompletedTour() {\n if (typeof window === \"undefined\") return;\n if (this.productTourId && this.productTourData) {\n try {\n let data = JSON.parse(\n JSON.stringify({\n tourData: this.productTourData,\n tourId: this.productTourId,\n })\n );\n data.tourData.steps = data.tourData.steps.slice(\n this.currentActiveIndex || 0,\n data.tourData.steps.length\n );\n localStorage.setItem(localStorageKey, JSON.stringify(data));\n } catch (e) {\n // Optionally log error in development mode.\n }\n } else {\n localStorage.removeItem(localStorageKey);\n }\n }\n\n // Attach scroll listeners with a debounce to update the pointer position after scrolling stops.\n attachScrollListeners(anchor, currentStep) {\n if (typeof window === \"undefined\") return;\n if (!anchor) return;\n const scrollableAncestors = getScrollableAncestors(anchor);\n // Also include window.\n scrollableAncestors.push(window);\n scrollableAncestors.forEach((el) => {\n const handler = () => {\n clearTimeout(this._scrollDebounceTimer);\n this._scrollDebounceTimer = setTimeout(() => {\n this.updatePointerPosition(anchor, currentStep);\n }, 150);\n };\n el.addEventListener(\"scroll\", handler, { passive: true });\n this._scrollListeners.push({ el, handler });\n });\n }\n\n // Remove scroll listeners and clear debounce timer.\n removeScrollListeners() {\n if (typeof window === \"undefined\") return;\n if (this._scrollListeners && this._scrollListeners.length > 0) {\n this._scrollListeners.forEach(({ el, handler }) => {\n el.removeEventListener(\"scroll\", handler);\n });\n this._scrollListeners = [];\n }\n if (this._scrollDebounceTimer) {\n clearTimeout(this._scrollDebounceTimer);\n this._scrollDebounceTimer = null;\n }\n }\n\n // Updated pointer position:\n // 1. Scroll the element into view.\n // 2. After the element is fully visible (or after a maximum delay), update the pointer position to point towards the element.\n updatePointerPosition(anchor, currentStep) {\n if (typeof window === \"undefined\") return;\n try {\n const container =\n this._pointerContainer || document.getElementById(pointerContainerId);\n if (!container) return;\n\n if (!anchor) {\n container.style.position = \"fixed\";\n container.style.left = \"50%\";\n container.style.top = \"50%\";\n container.style.transform = \"translate(-50%, -50%)\";\n smoothScrollToY(window.innerHeight / 2);\n this.removeScrollListeners();\n this._currentAnchor = null;\n this._currentStep = null;\n return;\n }\n\n // Step 1: Scroll the element into view.\n scrollToElement(anchor);\n\n // Step 2: Poll until the element is fully visible (or after maximum polls).\n const pollInterval = 100;\n const maxPolls = 20;\n let pollCount = 0;\n const updateFinalPosition = () => {\n if (isElementFullyVisible(anchor) || pollCount >= maxPolls) {\n // Compute final target coordinates.\n const anchorRect = anchor.getBoundingClientRect();\n const targetX = anchorRect.left + anchorRect.width / 2;\n const targetY = anchorRect.top + anchorRect.height / 2 + 10; // 10px downward offset.\n container.style.position = \"fixed\";\n container.style.left = `${targetX}px`;\n container.style.top = `${targetY}px`;\n container.style.transform = \"translate(-50%, -50%)\";\n\n // Adjust container if too far right.\n let containerWidthSpace = 350;\n if (containerWidthSpace > window.innerWidth - 40) {\n containerWidthSpace = window.innerWidth - 40;\n }\n if (targetX + containerWidthSpace > window.innerWidth - 20) {\n container.classList.add(\"copilot-pointer-container-right\");\n } else {\n container.classList.remove(\"copilot-pointer-container-right\");\n }\n\n // Reattach scroll listeners if the target or step has changed.\n if (\n this._currentAnchor !== anchor ||\n this._currentStep !== currentStep\n ) {\n this.removeScrollListeners();\n this._currentAnchor = anchor;\n this._currentStep = currentStep;\n this.attachScrollListeners(anchor, currentStep);\n }\n } else {\n pollCount++;\n setTimeout(updateFinalPosition, pollInterval);\n }\n };\n updateFinalPosition();\n } catch (e) {\n // Optionally log errors.\n }\n }\n\n cleanup() {\n if (typeof window === \"undefined\") return;\n document.body.classList.add(\"gl-copilot-fade-out\");\n if (this.currentAudio) {\n this.currentAudio.pause();\n }\n setTimeout(() => {\n if (this._pointerContainer) {\n this._pointerContainer.remove();\n this._pointerContainer = null;\n } else {\n const container = document.getElementById(pointerContainerId);\n if (container) container.remove();\n }\n const copilotInfoContainer = document.getElementById(\n copilotJoinedContainerId\n );\n if (copilotInfoContainer) copilotInfoContainer.remove();\n const styleNode = document.getElementById(styleId);\n if (styleNode) styleNode.remove();\n document.body.classList.remove(\"gl-copilot-fade-out\");\n }, 800);\n\n this.productTourId = undefined;\n this.productTourData = undefined;\n \n this.removeScrollListeners();\n }\n\n toggleAudio(muted = false) {\n this.audioMuted = muted;\n if (this.currentAudio) {\n this.currentAudio.muted = this.audioMuted;\n }\n document.querySelector(`.${copilotJoinedContainerId}-mute`).innerHTML =\n loadIcon(this.audioMuted ? \"unmute\" : \"mute\");\n }\n\n setupCopilotTour() {\n if (typeof window === \"undefined\") return;\n\n const primaryColor =\n GleapConfigManager.getInstance().flowConfig?.color ?? \"#485BFF\";\n const contrastColor = calculateContrast(primaryColor);\n\n let styleNode = document.getElementById(styleId);\n if (!styleNode) {\n styleNode = document.createElement(\"style\");\n styleNode.id = styleId;\n styleNode.type = \"text/css\";\n styleNode.textContent = `\n #${pointerContainerId} {\n position: absolute;\n top: 0;\n left: 0;\n display: flex;\n align-items: flex-start;\n pointer-events: none;\n z-index: 2147483610;\n transition: all 0.5s ease;\n }\n .${pointerContainerId}-clickmode {\n cursor: pointer;\n pointer-events: all !important;\n }\n .${pointerContainerId}-clickmode #copilot-info-bubble-content {\n display: flex !important;\n }\n .${pointerContainerId}-clickmode svg {\n display: none !important;\n }\n #${pointerContainerId} svg {\n width: 20px;\n height: auto;\n fill: none;\n }\n #copilot-info-bubble {\n position: relative;\n }\n #copilot-info-bubble-content-container {\n position: absolute;\n top: 0px;\n left: 0px;\n min-width: min(300px, 80vw);\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n }\n .${pointerContainerId}-right #copilot-info-bubble-content-container {\n left: auto !important;\n right: 0px !important;\n align-items: flex-end;\n }\n .${pointerContainerId}-right .copilot-info-bubble-content {\n margin-right: 5px;\n }\n .${pointerContainerId}-right svg {\n transform: scaleX(-1);\n }\n #copilot-info-bubble-content svg {\n width: 16px;\n height: 16px;\n display: inline-block !important;\n margin-left: 5px;\n }\n #copilot-info-bubble-content {\n margin-top: 18px;\n margin-left: 5px;\n padding: 10px 15px;\n border-radius: 20px;\n background-color: black;\n color: white;\n font-family: Arial, sans-serif;\n font-size: 14px;\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);\n max-width: 100%;\n white-space: normal;\n overflow-wrap: break-word;\n word-break: normal;\n hyphens: none;\n }\n .${pointerContainerId}-right #copilot-info-bubble-content {\n margin-top: 30px;\n margin-left: 0px;\n margin-right: 5px;\n }\n .click-wave {\n position: absolute;\n width: 34px;\n height: 34px;\n border-radius: 50%;\n background-color: rgba(0, 0, 0, 0.5);\n pointer-events: none;\n z-index: 2147483611;\n animation: click-wave-animation 0.8s ease forwards;\n }\n @keyframes click-wave-animation {\n 0% {\n transform: scale(0.2);\n opacity: 1;\n }\n 100% {\n transform: scale(2);\n opacity: 0;\n }\n }\n @keyframes slideInFromTop {\n 0% {\n transform: translateY(-100%);\n opacity: 0;\n }\n 100% {\n transform: translateY(0);\n opacity: 1;\n }\n }\n .${copilotJoinedContainerId} {\n position: fixed;\n top: 20px;\n right: 20px;\n z-index: 2147483610;\n background: #fff;\n padding: 6px;\n border-radius: 10px;\n box-shadow: 0 0 20px 0 #C294F2;\n display: flex;\n align-items: center;\n gap: 8px;\n border: 1px solid rgba(192, 146, 242, 0.5);\n animation: slideInFromTop 0.5s ease-out forwards;\n }\n .${copilotJoinedContainerId} span {\n font-size: 13px;\n color: #000;\n font-family: sans-serif;\n }\n .${copilotJoinedContainerId}-avatar {\n width: 24px;\n height: 24px;\n flex-shrink: 0;\n border-radius: 6px;\n }\n .${copilotJoinedContainerId}-mute {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n .${copilotJoinedContainerId}-mute svg {\n width: 20px;\n height: auto;\n cursor: pointer;\n animation: pulsate 2s infinite;\n }\n .${copilotJoinedContainerId}-mute svg:hover {\n opacity: 0.8;\n }\n .${copilotJoinedContainerId}-dismiss {\n display: flex;\n align-items: center;\n justify-content: center;\n padding-right: 3px;\n }\n .${copilotJoinedContainerId}-dismiss svg {\n width: 15px;\n height: auto;\n cursor: pointer;\n }\n .${copilotJoinedContainerId}-dismiss svg:hover {\n opacity: 0.8;\n }\n @keyframes pulsate {\n 0% {\n transform: scale(1);\n opacity: 1;\n }\n 50% {\n transform: scale(1.1);\n opacity: 0.8;\n }\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n }\n @keyframes glCoFadeIn {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n @keyframes glCoFadeOut {\n 0% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n }\n\n .gleap-audio-unmute-modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n background-color: rgba(0, 0, 0, 0.5);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 2147483620;\n }\n\n .gleap-audio-unmute-modal {\n background-color: #fff;\n padding: 20px;\n border-radius: 8px;\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);\n text-align: center;\n max-width: 90%;\n width: 400px;\n }\n\n .gleap-audio-unmute-modal p {\n margin-bottom: 20px;\n font-size: 16px;\n line-height: 22px;\n font-weight: normal;\n }\n\n .gleap-audio-unmute-button {\n background: ${primaryColor};\n color: ${contrastColor};\n outline: none;\n border: none;\n padding: 10px 14px;\n border-radius: 12px;\n font-size: 14px;\n font-weight: bold;\n cursor: pointer;\n }\n\n .gleap-audio-unmute-button:hover {\n opacity: 0.8;\n }\n\n .gleap-tour-continue-button {\n color: ${primaryColor};\n text-decoration: none;\n cursor: pointer;\n font-size: 14px;\n font-weight: bold;\n border: none;\n background: none;\n padding: 0;\n margin: 0;\n margin-left: 20px;\n }\n\n .gleap-tour-continue-button:hover {\n opacity: 0.8;\n }\n\n body.gl-copilot-fade-out::before,\n body.gl-copilot-fade-out::after,\n body.gl-copilot-fade-out #${copilotJoinedContainerId} {\n animation: glCoFadeOut 0.8s ease-out forwards;\n }\n ${\n this.productTourData?.playVoice ?? true\n ? \"\"\n : `\n .${copilotJoinedContainerId}-mute {\n display: none;\n }\n `\n }\n ${\n this.productTourData.gradient\n ? `body::before {\n content: \"\";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n box-sizing: border-box;\n border: 18px solid transparent;\n filter: blur(25px);\n border-image-slice: 1;\n border-image-source: linear-gradient(45deg, #ED5587, #FBE6A9, #a6e3f8, #C294F2);\n animation: glCoFadeIn 1.5s ease-out forwards;\n }\n \n body::after {\n content: \"\";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n opacity: 0.5;\n box-sizing: border-box;\n border: 3px solid transparent;\n border-image-slice: 1;\n border-image-source: linear-gradient(45deg, #ED5587, #FBE6A9, #a6e3f8, #C294F2);\n animation: glCoFadeIn 1.5s ease-out forwards;\n }`\n : `body::after {\n content: \"\";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n opacity: 0;\n }`\n }\n `;\n document.head.appendChild(styleNode);\n }\n\n const container = document.createElement(\"div\");\n container.id = pointerContainerId;\n container.style.opacity = 0;\n // Cache the pointer container.\n this._pointerContainer = container;\n\n const svgMouse = document.createElementNS(\n \"http://www.w3.org/2000/svg\",\n \"svg\"\n );\n svgMouse.setAttribute(\"viewBox\", \"0 0 380 476\");\n svgMouse.innerHTML =\n '';\n\n const infoBubble = document.createElement(\"div\");\n infoBubble.id = \"copilot-info-bubble\";\n infoBubble.innerHTML = `
`;\n\n const copilotInfoContainer = document.createElement(\"div\");\n copilotInfoContainer.id = copilotJoinedContainerId;\n copilotInfoContainer.classList.add(copilotJoinedContainerId);\n copilotInfoContainer.innerHTML = `\n \n ${this.productTourData?.kaiSlug}\n
\n ${loadIcon(this.audioMuted ? \"unmute\" : \"mute\")}\n
\n ${\n this.productTourData?.allowClose\n ? `
\n ${loadIcon(\"dismiss\")}\n
`\n : \"\"\n }\n `;\n document.body.appendChild(copilotInfoContainer);\n\n const self = this;\n\n document\n .querySelector(`.${copilotJoinedContainerId}-mute`)\n .addEventListener(\"click\", () => {\n this.toggleAudio(!this.audioMuted);\n });\n\n if (this.productTourData?.allowClose) {\n document\n .querySelector(`.${copilotJoinedContainerId}-dismiss`)\n .addEventListener(\"click\", () => {\n this.completeTour(false);\n });\n }\n\n container.appendChild(svgMouse);\n container.appendChild(infoBubble);\n document.body.appendChild(container);\n }\n\n start() {\n if (typeof window === \"undefined\") return;\n if (this.disabled) return;\n\n const config = this.productTourData;\n if (!config) return;\n canPlayAudio().then((supported) => {\n this.audioMuted = !supported;\n this.setupCopilotTour();\n\n if (this.audioMuted && config?.showUnmuteModal) {\n this.showAudioUnmuteModal();\n } else {\n setTimeout(() => {\n this.renderNextStep();\n }, 1500);\n }\n });\n }\n\n showAudioUnmuteModal() {\n // Create the overlay element\n const modalOverlay = document.createElement(\"div\");\n modalOverlay.classList.add(\"gleap-audio-unmute-modal-overlay\");\n\n // Create the modal container element\n const modal = document.createElement(\"div\");\n modal.classList.add(\"gleap-audio-unmute-modal\");\n\n // Create and add the modal message\n const message = document.createElement(\"p\");\n message.textContent = this.productTourData?.unmuteModalTitle;\n modal.appendChild(message);\n\n // Create the \"Unmute Audio\" button\n const unmuteButton = document.createElement(\"button\");\n unmuteButton.classList.add(\"gleap-audio-unmute-button\");\n unmuteButton.textContent = this.productTourData?.unmuteModalButton;\n unmuteButton.addEventListener(\"click\", () => {\n this.toggleAudio(false);\n if (modalOverlay.parentNode) {\n modalOverlay.parentNode.removeChild(modalOverlay);\n }\n setTimeout(() => {\n this.renderNextStep();\n }, 1000);\n });\n modal.appendChild(unmuteButton);\n\n // Create the \"Start Anyway\" button\n const startAnywayButton = document.createElement(\"button\");\n startAnywayButton.classList.add(\"gleap-tour-continue-button\");\n startAnywayButton.textContent = this.productTourData?.unmuteModalContinue;\n startAnywayButton.addEventListener(\"click\", () => {\n if (modalOverlay.parentNode) {\n modalOverlay.parentNode.removeChild(modalOverlay);\n }\n setTimeout(() => {\n this.renderNextStep();\n }, 1000);\n });\n modal.appendChild(startAnywayButton);\n\n // Build the modal and attach it to the DOM\n modalOverlay.appendChild(modal);\n document.body.appendChild(modalOverlay);\n }\n\n completeTour(success = true) {\n if (typeof window === \"undefined\") return;\n this.cleanup();\n if (this.onCompleteCallback) {\n this.onCompleteCallback(success);\n }\n }\n\n renderNextStep() {\n if (typeof window === \"undefined\") return;\n if (this.disabled) return;\n\n const self = this;\n const config = this.productTourData;\n const steps = config.steps;\n if (this.currentActiveIndex >= steps.length) {\n setTimeout(() => {\n this.completeTour();\n }, 500);\n return;\n }\n const currentStep = steps[this.currentActiveIndex];\n const handleStep = (element) => {\n this._pointerContainer.style.display = \"flex\";\n if (currentStep.selector && currentStep.selector.length > 0 && !element) {\n this.completeTour(false);\n return;\n }\n const gotToNextStep = () => {\n if (currentStep.mode === \"INPUT\" && element) {\n function proceedClickmode() {\n document\n .querySelector(`#${pointerContainerId}`)\n .classList.remove(\"copilot-pointer-container-clickmode\");\n element.classList.remove(\"gleap-input-highlight\");\n document.getElementById(pointerContainerId).style.display = \"none\";\n self.currentActiveIndex++;\n self.storeUncompletedTour();\n self.renderNextStep();\n }\n const inputModeType = currentStep.inputType ?? \"default\";\n if (inputModeType === \"default\") {\n function handleInputEvent(e) {\n if (e?.target?.value?.length === 0) return;\n const cursor = document.getElementById(\n `copilot-info-bubble-content`\n );\n if (!cursor) return;\n cursor.innerHTML = `${GleapTranslationManager.translateText(\n \"next\"\n )} \n \n`;\n cursor.addEventListener(\"click\", proceedClickmode, {\n once: true,\n });\n element.classList.add(\"gleap-input-highlight\");\n document\n .querySelector(`#${pointerContainerId}`)\n .classList.add(\"copilot-pointer-container-clickmode\");\n element.removeEventListener(\"input\", handleInputEvent);\n }\n element.addEventListener(\"input\", handleInputEvent, {\n once: false,\n });\n if (element.hasAttribute(\"contenteditable\")) {\n element.addEventListener(\"keyup\", handleInputEvent, {\n once: false,\n });\n }\n element.addEventListener(\n \"blur\",\n () => {\n element.focus();\n },\n { once: true }\n );\n element.focus();\n } else {\n const inputValue = currentStep.inputValue ?? \"\";\n let index = 0;\n function typeCharacter() {\n if (index < inputValue.length) {\n element.value += inputValue[index];\n index++;\n setTimeout(typeCharacter, 100);\n } else {\n setTimeout(() => {\n proceedClickmode();\n }, 1200);\n }\n }\n typeCharacter();\n }\n return;\n }\n self.currentActiveIndex++;\n self.storeUncompletedTour();\n if (currentStep.mode === \"CLICK\" && element) {\n const rect = element.getBoundingClientRect();\n const scrollX = window.scrollX || 0;\n const scrollY = window.scrollY || 0;\n performClickAnimation(\n rect.left + rect.width / 2 + scrollX,\n rect.top + rect.height / 2 + scrollY\n );\n element.click();\n }\n self.renderNextStep();\n };\n\n this.updatePointerPosition(element, currentStep);\n const message = currentStep?.message\n ? htmlToPlainText(currentStep.message)\n : \"🤔\";\n document.getElementById(`copilot-info-bubble-content`).textContent =\n message;\n this._pointerContainer.style.opacity = 1;\n const readTime = estimateReadTime(message);\n const continueWithNoAudio = () => {\n this.currentAudio = undefined;\n setTimeout(() => {\n gotToNextStep();\n }, readTime * 1000);\n };\n if (currentStep.voice && currentStep.voice.length > 0) {\n this.currentAudio = new Audio(currentStep.voice);\n if (this.audioMuted) {\n this.currentAudio.muted = true;\n }\n this.currentAudio.addEventListener(\"ended\", () => {\n setTimeout(() => {\n gotToNextStep();\n }, 1000);\n });\n this.currentAudio\n .play()\n .then(() => {})\n .catch((error) => {\n continueWithNoAudio();\n });\n } else {\n continueWithNoAudio();\n }\n };\n\n const elementPromise = currentStep.selector\n ? waitForElement(currentStep.selector)\n : Promise.resolve(null);\n elementPromise.then(handleStep).catch(() => handleStep(null));\n }\n}\n","import { loadIcon } from \"./UI\";\nimport GleapTours from \"./GleapTours\";\nimport Gleap, { GleapEventManager, GleapSession } from \"./Gleap\";\nimport GleapCopilotTours from \"./GleapCopilotTours\";\n\nconst localStorageKey = \"gleap-tour-data\";\n\nexport default class GleapProductTours {\n productTourData = undefined;\n productTourId = undefined;\n unmuted = false;\n currentActiveIndex = undefined;\n gleapTourObj = undefined;\n disabled = false;\n\n // GleapReplayRecorder singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapProductTours();\n return this.instance;\n } else {\n return this.instance;\n }\n }\n\n disable() {\n if (this.gleapTourObj) {\n this.gleapTourObj.destroy();\n }\n\n // Disable copilot tours.\n GleapCopilotTours.getInstance().disable();\n\n this.gleapTourObj = undefined;\n this.disabled = true;\n }\n\n constructor() {\n const self = this;\n\n if (typeof window !== \"undefined\") {\n const beforeUnloadListener = (event) => {\n if (\n !self?.disabled &&\n self?.productTourId &&\n self?.productTourData &&\n self?.productTourData?.tourType !== \"cobrowse\"\n ) {\n self.storeUncompletedTour();\n }\n };\n\n if (typeof window !== \"undefined\") {\n window.addEventListener(\"beforeunload\", beforeUnloadListener);\n }\n }\n }\n\n startWithConfig(tourId, config, delay = 0, manually = false) {\n // Prevent multiple tours from being started.\n if (this.productTourId || this.disabled) {\n return;\n }\n\n this.productTourId = tourId;\n this.productTourData = config;\n this.currentActiveIndex = 0;\n\n if (manually) {\n this.start();\n } else {\n const self = this;\n\n // Validate product tour.\n GleapSession.getInstance()\n .validateProductTour(tourId)\n .then(() => {\n if (delay > 0) {\n return setTimeout(() => {\n self.start();\n }, delay);\n } else {\n return this.start();\n }\n })\n .catch((error) => {\n console.log(\"Product tour is not live. Cleaning up...\");\n console.error(error);\n\n self.onComplete(false);\n });\n }\n }\n\n onComplete(success = true) {\n const comData = {\n tourId: this.productTourId,\n };\n\n if (success) {\n GleapEventManager.notifyEvent(\"productTourCompleted\", comData);\n Gleap.trackEvent(`tour-${this.productTourId}-completed`, comData);\n } else {\n GleapEventManager.notifyEvent(\"productTourQuit\", comData);\n Gleap.trackEvent(`tour-${this.productTourId}-quit`, comData);\n }\n\n // Clear data.\n if (this.gleapTourObj) {\n this.gleapTourObj.destroy();\n }\n\n this.gleapTourObj = undefined;\n this.productTourData = undefined;\n this.productTourId = undefined;\n this.currentActiveIndex = undefined;\n this.clearUncompletedTour();\n }\n\n loadUncompletedTour() {\n try {\n const data = JSON.parse(localStorage.getItem(localStorageKey));\n if (data?.tourData && data?.tourId) {\n return data;\n }\n } catch (e) {}\n\n return null;\n }\n\n storeUncompletedTour() {\n if (this.productTourId && this.productTourData) {\n try {\n let data = JSON.parse(\n JSON.stringify({\n tourData: this.productTourData,\n tourId: this.productTourId,\n })\n );\n\n data.tourData.steps = data.tourData.steps.slice(\n this.currentActiveIndex || 0,\n data.tourData.steps.length\n );\n\n localStorage.setItem(localStorageKey, JSON.stringify(data));\n } catch (e) {}\n } else {\n this.clearUncompletedTour();\n }\n }\n\n clearUncompletedTour() {\n try {\n localStorage.removeItem(localStorageKey);\n } catch (e) {}\n }\n\n start() {\n const config = this.productTourData;\n if (!config) {\n return;\n }\n\n if (config.tourType === \"cobrowse\") {\n return GleapCopilotTours.getInstance().startWithConfig(\n this.productTourId,\n config,\n (success) => {\n this.onComplete(success);\n }\n );\n }\n\n this.unmuted = false;\n const steps = config.steps;\n const self = this;\n\n var driverSteps = [];\n\n for (let i = 0; i < steps.length; i++) {\n const step = steps[i];\n\n const isClickMode = step.mode === \"CLICK\";\n const isInputMode = step.mode === \"INPUT\";\n\n var message = \"\";\n var hasSender = false;\n\n if (step.type === \"video-pointer\") {\n message = `
\n \n
${loadIcon(\n \"unmute\"\n )}
\n
`;\n } else {\n var senderHTML = ``;\n\n if (config.sender && config.sender.firstName) {\n hasSender = true;\n senderHTML = `
\n
\n
${config.sender.firstName}
\n
`;\n }\n\n message = `${senderHTML}
${step.message}
`;\n }\n\n const disableInteraction = !isClickMode && !isInputMode;\n\n var driverStep = {\n disableActiveInteraction: disableInteraction,\n mode: step.mode,\n popover: {\n description: message,\n popoverClass: `gleap-tour-popover-${step.type} ${\n !hasSender && \"gleap-tour-popover-no-sender\"\n } ${config.allowClose && \"gleap-tour-popover-can-close\"}`,\n ...(isClickMode\n ? {\n showButtons: [],\n }\n : {}),\n },\n };\n if (step.selector && step.selector.length > 0) {\n driverStep.element = step.selector;\n }\n driverSteps.push(driverStep);\n }\n\n var buttons = [\"next\", \"close\"];\n\n if (config.backButton) {\n buttons.push(\"previous\");\n }\n\n function onDocumentClick(evnt) {\n try {\n var gleapTourPopover = document.querySelector(\".gleap-tour-popover\");\n if (gleapTourPopover && !gleapTourPopover.contains(evnt.target)) {\n const stepIndex = self.gleapTourObj.getActiveIndex();\n const step = steps[stepIndex];\n const element = self.gleapTourObj.getActiveElement();\n\n if (step?.mode === \"CLICK\" && evnt?.target !== element) {\n const isInsideElement = element.contains(evnt?.target);\n if (!isInsideElement) {\n // Ignore clicks outside of the actual element.\n return;\n }\n }\n\n // Store next step index.\n self.currentActiveIndex = (self.currentActiveIndex || 0) + 1;\n self.storeUncompletedTour();\n\n if (\n (element && element.tagName === \"INPUT\") ||\n step.mode === \"INPUT\" ||\n evnt?.target?.id.includes(\"tooltip-svg\")\n ) {\n // Prevent.\n } else {\n self.gleapTourObj.moveNext();\n }\n }\n } catch (e) {}\n }\n\n this.gleapTourObj = GleapTours({\n showProgress: true,\n allowKeyboardControl: false,\n steps: driverSteps,\n showProgress: steps.length > 1,\n allowClose: config.allowClose,\n nextBtnText: config.nextText,\n doneBtnText: config.doneText,\n prevBtnText: config.prevText,\n showButtons: buttons,\n onHighlightStarted: (element, step, config) => {\n this.currentActiveIndex = config?.state?.activeIndex;\n this.storeUncompletedTour();\n },\n onElementNotFound: (step) => {\n document.removeEventListener(\"click\", onDocumentClick);\n\n this.onComplete(false);\n },\n onDestroyStarted: () => {\n if (!this.gleapTourObj.hasNextStep()) {\n // Mark as completed.\n this.onComplete(true);\n } else {\n // Mark as quit.\n this.onComplete(false);\n }\n\n document.removeEventListener(\"click\", onDocumentClick);\n },\n onPopoverRender: (popoverElement) => {\n // Fix for images and videos.\n if (popoverElement) {\n const mediaElements = document.querySelectorAll(\n \".gleap-tour-popover-description img, .gleap-tour-popover-description video\"\n );\n\n const performRequentialRefresh = () => {\n setTimeout(() => {\n this.gleapTourObj.refresh();\n }, 500);\n setTimeout(() => {\n this.gleapTourObj.refresh();\n }, 750);\n };\n\n for (let i = 0; i < mediaElements.length; i++) {\n const mediaElement = mediaElements[i];\n if (mediaElement.tagName === \"IMG\") {\n mediaElement.addEventListener(\"load\", () => {\n performRequentialRefresh();\n });\n mediaElement.addEventListener(\"error\", () => {\n performRequentialRefresh();\n });\n } else if (mediaElement.tagName === \"VIDEO\") {\n mediaElement.addEventListener(\"canplaythrough\", () => {\n performRequentialRefresh();\n });\n mediaElement.addEventListener(\"error\", () => {\n performRequentialRefresh();\n });\n }\n }\n }\n\n const playingClass = \"gleap-tour-video--playing\";\n const playPauseContainer = document.querySelector(\n \".gleap-tour-video-playpause\"\n );\n\n const videoElement = document.querySelector(\".gleap-tour-video-obj\");\n if (videoElement) {\n const videoContainer = videoElement.closest(\".gleap-tour-video\");\n\n if (self.unmuted) {\n if (videoElement) {\n videoElement.pause();\n videoElement.muted = false;\n videoElement.play();\n videoContainer.classList.add(playingClass);\n }\n }\n\n videoElement.addEventListener(\"ended\", function () {\n playPauseContainer.innerHTML = loadIcon(\"replay\");\n playPauseContainer.classList.add(\n \"gleap-tour-video-svg--fullscreen\"\n );\n videoContainer.classList.remove(playingClass);\n });\n\n videoElement.addEventListener(\"play\", function () {\n playPauseContainer.classList.remove(\n \"gleap-tour-video-svg--fullscreen\"\n );\n });\n\n if (playPauseContainer) {\n playPauseContainer.addEventListener(\"click\", () => clickVideo());\n }\n\n const clickVideo = () => {\n if (videoElement.muted) {\n self.unmuted = true;\n\n videoElement.pause();\n videoElement.currentTime = 0;\n videoElement.muted = false;\n videoElement.play();\n\n playPauseContainer.innerHTML = loadIcon(\"mute\");\n videoContainer.classList.add(playingClass);\n } else if (videoElement.paused) {\n videoElement.muted = false;\n videoElement.play();\n\n playPauseContainer.innerHTML = loadIcon(\"mute\");\n videoContainer.classList.add(playingClass);\n } else {\n videoElement.pause();\n playPauseContainer.innerHTML = loadIcon(\"unmute\");\n videoContainer.classList.remove(playingClass);\n }\n };\n }\n },\n });\n this.gleapTourObj.drive();\n\n document.addEventListener(\"click\", onDocumentClick, true);\n }\n}\n","import { injectStyledCSS } from \"./UI\";\nimport GleapNetworkIntercepter from \"./GleapNetworkIntercepter\";\nimport {\n fixGleapHeight,\n gleapDataParser,\n runFunctionWhenDomIsReady,\n} from \"./GleapHelper\";\nimport GleapSession from \"./GleapSession\";\nimport GleapStreamedEvent from \"./GleapStreamedEvent\";\nimport GleapConfigManager from \"./GleapConfigManager\";\nimport GleapFeedback from \"./GleapFeedback\";\nimport GleapFrameManager from \"./GleapFrameManager\";\nimport GleapMetaDataManager from \"./GleapMetaDataManager\";\nimport GleapConsoleLogManager from \"./GleapConsoleLogManager\";\nimport GleapClickListener from \"./GleapClickListener\";\nimport GleapFeedbackButtonManager from \"./GleapFeedbackButtonManager\";\nimport GleapCustomDataManager from \"./GleapCustomDataManager\";\nimport GleapEventManager from \"./GleapEventManager\";\nimport GleapCustomActionManager from \"./GleapCustomActionManager\";\nimport GleapReplayRecorder from \"./GleapReplayRecorder\";\nimport GleapMarkerManager from \"./GleapMarkerManager\";\nimport GleapTranslationManager from \"./GleapTranslationManager\";\nimport GleapShortcutListener from \"./GleapShortcutListener\";\nimport GleapPreFillManager from \"./GleapPreFillManager\";\nimport GleapNotificationManager from \"./GleapNotificationManager\";\nimport GleapBannerManager from \"./GleapBannerManager\";\nimport GleapModalManager from \"./GleapModalManager\";\nimport GleapAudioManager from \"./GleapAudioManager\";\nimport GleapTagManager from \"./GleapTagManager\";\nimport GleapAdminManager from \"./GleapAdminManager\";\nimport GleapProductTours from \"./GleapProductTours\";\nimport { checkPageFilter } from \"./GleapPageFilter\";\nimport { registerGleapChecklist } from \"./GleapChecklist\";\nimport ChecklistNetworkManager from \"./ChecklistNetworkManager\";\n\nif (\n typeof window !== \"undefined\" &&\n typeof HTMLCanvasElement !== \"undefined\" &&\n HTMLCanvasElement.prototype &&\n HTMLCanvasElement.prototype.__originalGetContext === undefined\n) {\n HTMLCanvasElement.prototype.__originalGetContext =\n HTMLCanvasElement.prototype.getContext;\n HTMLCanvasElement.prototype.getContext = function (type, options) {\n return this.__originalGetContext(type, {\n ...options,\n preserveDrawingBuffer: true,\n });\n };\n}\n\nif (\n typeof customElements !== \"undefined\" &&\n typeof HTMLElement !== \"undefined\" &&\n typeof window !== \"undefined\"\n) {\n registerGleapChecklist();\n}\n\nclass Gleap {\n static invoked = true;\n static silentCrashReportSent = false;\n initialized = false;\n offlineMode = false;\n disablePageTracking = false;\n disableInAppNotifications = false;\n\n // Global data\n globalData = {\n screenRecordingData: null,\n webReplay: null,\n snapshotPosition: {\n x: 0,\n y: 0,\n },\n };\n\n // Gleap singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new Gleap();\n return this.instance;\n } else {\n return this.instance;\n }\n }\n\n /**\n * Main constructor\n */\n constructor() {\n if (typeof window !== \"undefined\") {\n // Make sure all instances are ready.\n GleapMetaDataManager.getInstance();\n GleapConsoleLogManager.getInstance().start();\n GleapClickListener.getInstance().start();\n GleapAdminManager.getInstance().start();\n }\n }\n\n /**\n * Sets the development environment\n * @param {*} environment\n */\n static setEnvironment(environment) {\n GleapMetaDataManager.getInstance().environment = environment;\n }\n\n /**\n * Set tags to be submitted with each ticket.\n * @param {*} tags\n */\n static setTags(tags) {\n GleapTagManager.getInstance().setTags(tags);\n }\n\n /**\n * Sets a custom URL handler.\n * @param {*} urlHandler\n */\n static setUrlHandler(urlHandler) {\n GleapFrameManager.getInstance().setUrlHandler(urlHandler);\n }\n\n /**\n * Active the Gleap offline mode.\n * @param {*} offlineMode\n */\n static setOfflineMode(offlineMode) {\n const instance = this.getInstance();\n instance.offlineMode = offlineMode;\n }\n\n /**\n * Disable the in-app notifications.\n * @param {*} disableInAppNotifications\n */\n static setDisableInAppNotifications(disableInAppNotifications) {\n const instance = this.getInstance();\n instance.disableInAppNotifications = disableInAppNotifications;\n }\n\n /**\n * Disable the default page tracking.\n * @param {*} disablePageTracking\n */\n static setDisablePageTracking(disablePageTracking) {\n const instance = this.getInstance();\n instance.disablePageTracking = disablePageTracking;\n }\n\n /**\n * Revert console log overwrite.\n */\n static disableConsoleLogOverwrite() {\n GleapConsoleLogManager.getInstance().stop();\n }\n\n /**\n * Set the AI tools.\n * @param {*} tools\n */\n static setAiTools(tools) {\n GleapConfigManager.getInstance().setAiTools(tools);\n GleapFrameManager.getInstance().sendConfigUpdate();\n }\n\n /**\n * Attaches external network logs.\n */\n static attachNetworkLogs(networkLogs) {\n GleapNetworkIntercepter.getInstance().externalRequests =\n gleapDataParser(networkLogs);\n }\n\n /**\n * Add entry to logs.\n * @param {*} message\n * @param {*} logLevel\n * @returns\n */\n static log(message, logLevel = \"INFO\") {\n GleapConsoleLogManager.getInstance().addLog(message, logLevel);\n }\n\n /**\n * Initializes the SDK\n * @param {*} sdkKey\n */\n static initialize(sdkKey) {\n const instance = this.getInstance();\n if (instance.initialized) {\n console.warn(\"Gleap already initialized.\");\n return;\n }\n\n instance.initialized = true;\n\n try {\n fixGleapHeight();\n } catch (error) {}\n\n // Start session\n const sessionInstance = GleapSession.getInstance();\n sessionInstance.sdkKey = sdkKey;\n sessionInstance.setOnSessionReady(() => {\n // Run auto configuration.\n setTimeout(() => {\n GleapConfigManager.getInstance()\n .start()\n .then(() => {\n GleapStreamedEvent.getInstance().start();\n\n runFunctionWhenDomIsReady(() => {\n // Inject the widget buttons\n GleapFeedbackButtonManager.getInstance().injectFeedbackButton();\n\n // Inject the notification container\n GleapNotificationManager.getInstance().injectNotificationUI();\n\n // Check for uncompleted tour.\n Gleap.checkForUncompletedTour();\n\n // Check for URL params.\n Gleap.checkForUrlParams();\n\n // Notify event.\n GleapEventManager.notifyEvent(\"initialized\");\n });\n })\n .catch(function (err) {\n console.warn(\"Failed to initialize Gleap.\");\n });\n }, 0);\n });\n sessionInstance.startSession();\n }\n\n static openURL(url, newTab = false) {\n GleapFrameManager.getInstance().urlHandler(url, newTab);\n }\n\n static checkForUrlParams() {\n if (typeof window === \"undefined\" || !window.location.search) {\n return;\n }\n\n try {\n const urlParams = new URLSearchParams(window.location.search);\n\n const widget = urlParams.get(\"gleap_widget\");\n if (widget && widget.length > 0) {\n Gleap.open();\n }\n\n const conversationFlow = urlParams.get(\"gleap_conversation\");\n if (conversationFlow && conversationFlow.length > 0) {\n if (conversationFlow === \"true\") {\n Gleap.startConversation(true);\n } else {\n Gleap.startBot(conversationFlow, true);\n }\n }\n\n const feedbackFlow = urlParams.get(\"gleap_feedback\");\n if (feedbackFlow && feedbackFlow.length > 0) {\n Gleap.startFeedbackFlow(feedbackFlow);\n }\n const surveyFlow = urlParams.get(\"gleap_survey\");\n const surveyFlowFormat = urlParams.get(\"gleap_survey_format\");\n if (surveyFlow && surveyFlow.length > 0) {\n Gleap.showSurvey(\n surveyFlow,\n surveyFlowFormat === \"survey_full\" ? \"survey_full\" : \"survey\"\n );\n }\n const tourId = urlParams.get(\"gleap_tour\");\n if (tourId && tourId.length > 0) {\n var tourDelay = parseInt(urlParams.get(\"gleap_tour_delay\"));\n if (isNaN(tourDelay)) {\n tourDelay = 2;\n }\n\n setTimeout(() => {\n Gleap.startProductTour(tourId);\n }, tourDelay * 1000);\n }\n } catch (exp) {}\n }\n\n /**\n * Destroy\n * @returns\n */\n static destroy() {\n GleapReplayRecorder.getInstance().stop();\n GleapStreamedEvent.getInstance().stop();\n GleapFrameManager.getInstance().destroy();\n GleapFeedbackButtonManager.getInstance().destroy();\n GleapNotificationManager.getInstance().clearAllNotifications(true);\n GleapSession.getInstance().clearSession(0, false);\n GleapBannerManager.getInstance().removeBannerUI();\n\n // Reset the initialized flag and clear the instance\n this.instance = null;\n }\n\n /**\n * Close any open banner.\n */\n static closeBanner() {\n GleapBannerManager.getInstance().removeBannerUI();\n }\n\n /**\n * Close any open modal.\n */\n static closeModal() {\n GleapModalManager.getInstance().hideModal();\n }\n\n /**\n * Enable or disable Gleap session tracking through cookies.\n * @param {*} useCookies\n */\n static setUseCookies(useCookies) {\n GleapSession.getInstance().useCookies = useCookies;\n }\n\n /**\n * Indentifies the user session\n * @param {string} userId\n * @param {*} userData\n */\n static identify(userId, userData, userHash) {\n return GleapSession.getInstance().identifySession(\n userId,\n gleapDataParser(userData),\n userHash\n );\n }\n\n /**\n * Updates the contact data.\n * @param {*} userData\n */\n static updateContact(userData) {\n return GleapSession.getInstance().updateSession(gleapDataParser(userData));\n }\n\n /**\n * Clears the current contact.\n */\n static clearIdentity() {\n GleapSession.getInstance().clearSession();\n }\n\n /**\n * Returns the current user session\n */\n static getIdentity() {\n return GleapSession.getInstance().getSession();\n }\n\n /**\n * Returns whether the user is identified or not.\n */\n static isUserIdentified() {\n const session = GleapSession.getInstance().session;\n if (session && session.userId && session.userId.length > 0) {\n return true;\n }\n return false;\n }\n\n /**\n * Widget opened status\n * @returns {boolean} isOpened\n */\n static isOpened() {\n return GleapFrameManager.getInstance().isOpened();\n }\n\n /**\n * Hides any open Gleap dialogs.\n */\n static hide() {\n GleapFrameManager.getInstance().hideWidget();\n }\n\n /**\n * Sets the maximum network request count.\n */\n static setMaxNetworkRequests(maxRequests) {\n GleapNetworkIntercepter.getInstance().setMaxRequests(maxRequests);\n }\n\n /**\n * Sets the maximum network request count.\n */\n static startNetworkLogger() {\n GleapNetworkIntercepter.getInstance().start();\n }\n\n /**\n * Sets the network logger blacklist.\n * @param {Array} networkLogBlacklist\n */\n static setNetworkLogsBlacklist(networkLogBlacklist) {\n GleapNetworkIntercepter.getInstance().setBlacklist(networkLogBlacklist);\n }\n\n /**\n * Sets the network logger props to ignore.\n * @param {Array} filters\n */\n static setNetworkLogPropsToIgnore(filters) {\n GleapNetworkIntercepter.getInstance().setFilters(filters);\n }\n\n /**\n * Set custom replay options.\n * @param {*} options\n */\n static setReplayOptions(options) {\n GleapReplayRecorder.getInstance().setOptions(options);\n }\n\n /**\n * Closes any open Gleap dialogs.\n * @param {boolean} resetRoutes\n */\n static close(resetRoutes = false) {\n GleapFrameManager.getInstance().hideWidget(resetRoutes);\n }\n\n /**\n * Starts the Gleap flow.\n */\n static open() {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Track a custom event\n * @param {string} name\n * @param {any} data\n */\n static trackEvent(name, data) {\n GleapStreamedEvent.getInstance().logEvent(name, data);\n }\n\n /**\n * Logs a custom event\n * @param {string} name\n * @param {any} data\n * @deprecated Please use trackEvent instead.\n */\n static logEvent(name, data) {\n GleapStreamedEvent.getInstance().logEvent(name, data);\n }\n\n /**\n * Prefills a specific form field.\n * @param {*} key\n * @param {*} value\n */\n static preFillForm(data) {\n const cleanedData = gleapDataParser(data);\n GleapPreFillManager.getInstance().formPreFill = cleanedData;\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"prefill-form-data\",\n data: cleanedData,\n },\n true\n );\n }\n\n /**\n * Register events for Gleap.\n * @param {*} eventName\n * @param {*} callback\n */\n static on(eventName, callback) {\n GleapEventManager.on(eventName, callback);\n }\n\n /**\n * Enable or disable shortcuts\n * @param {boolean} enabled\n */\n static enableShortcuts(enabled) {\n if (enabled) {\n GleapShortcutListener.getInstance().start();\n } else {\n GleapShortcutListener.getInstance().stop();\n }\n }\n\n /**\n * Show or hide the feedback button\n * @param {*} show\n * @returns\n */\n static showFeedbackButton(show) {\n GleapFeedbackButtonManager.getInstance().toggleFeedbackButton(show);\n }\n\n /**\n * Sets the app version code.\n * @param {string} appVersionCode\n */\n static setAppVersionCode(appVersionCode) {\n GleapMetaDataManager.setAppVersionCode(appVersionCode);\n }\n\n /**\n * Sets the app version code.\n * @param {string} appVersionCode\n */\n static setAppBuildNumber(appBuildNumber) {\n GleapMetaDataManager.setAppBuildNumber(appBuildNumber);\n }\n\n /**\n * Set a custom ws api url.\n * @param {string} wsApiUrl\n */\n static setWSApiUrl(wsApiUrl) {\n GleapSession.getInstance().wsApiUrl = wsApiUrl;\n }\n\n /**\n * Set a custom api url.\n * @param {string} apiUrl\n */\n static setApiUrl(apiUrl) {\n GleapSession.getInstance().apiUrl = apiUrl;\n }\n\n /**\n * Set a custom banner url.\n * @param {string} bannerUrl\n */\n static setBannerUrl(bannerUrl) {\n GleapBannerManager.getInstance().setBannerUrl(bannerUrl);\n }\n\n /**\n * Set a custom modal url.\n * @param {string} modalUrl\n */\n static setModalUrl(modalUrl) {\n GleapModalManager.getInstance().setModalUrl(modalUrl);\n }\n\n /**\n * Set a custom frame api url.\n * @param {string} frameUrl\n */\n static setFrameUrl(frameUrl) {\n GleapFrameManager.getInstance().frameUrl = frameUrl;\n }\n\n /**\n * This method is used to set ticket attributes programmatically.\n * @param {*} key The key of the attribute you want to add.\n * @param {*} value The value to set.\n */\n static setTicketAttribute(key, value) {\n GleapCustomDataManager.getInstance().setTicketAttribute(key, value);\n }\n\n /**\n * This method is used to unset ticket attributes programmatically.\n * @param {*} key The key of the attribute you want to unset.\n */\n static unsetTicketAttribute(key) {\n GleapCustomDataManager.getInstance().unsetTicketAttribute(key);\n }\n\n /**\n * This method is used to clear ticket attributes programmatically.\n */\n static clearTicketAttributes() {\n GleapCustomDataManager.getInstance().clearTicketAttributes();\n }\n\n /**\n * Set custom data that will be attached to the bug-report.\n * @param {*} data\n */\n static attachCustomData(data) {\n GleapCustomDataManager.getInstance().attachCustomData(data);\n }\n\n /**\n * Add one key value pair to the custom data object\n * @param {*} key The key of the custom data entry you want to add.\n * @param {*} value The custom data you want to add.\n */\n static setCustomData(key, value) {\n GleapCustomDataManager.getInstance().setCustomData(key, value);\n }\n\n /**\n * Remove one key value pair of the custom data object\n * @param {*} key The key of the custom data entry you want to remove.\n */\n static removeCustomData(key) {\n GleapCustomDataManager.getInstance().removeCustomData(key);\n }\n\n /**\n * Clear the custom data\n */\n static clearCustomData() {\n GleapCustomDataManager.getInstance().clearCustomData();\n }\n\n /**\n * Play or mute the sound.\n * @param {*} play\n */\n static playSound(play) {\n GleapAudioManager.playSound(play);\n }\n\n /**\n * Show or hide the notification badge count.\n * @param {boolean} showNotificationBadge show or hide the notification badge\n *\n */\n static showTabNotificationBadge(showNotificationBadge) {\n const notificationInstance = GleapNotificationManager.getInstance();\n notificationInstance.showNotificationBadge = showNotificationBadge;\n notificationInstance.updateTabBarNotificationCount();\n }\n\n /**\n * Override the browser language.\n * @param {string} language country code with two letters\n */\n static setLanguage(language) {\n GleapTranslationManager.getInstance().setOverrideLanguage(language);\n\n if (Gleap.getInstance().initialized) {\n setTimeout(() => {\n Gleap.getInstance().softReInitialize();\n\n // Update language for contact.\n Gleap.updateContact({\n lang: language,\n });\n }, 1000);\n }\n }\n\n /**\n * Register custom action\n * @param {*} action\n */\n static registerCustomAction(customAction) {\n GleapCustomActionManager.registerCustomAction(customAction);\n }\n\n /**\n * Triggers a custom action\n * @param {*} actionName\n */\n static triggerCustomAction(name) {\n GleapCustomActionManager.triggerCustomAction(name);\n }\n\n /**\n * Sets a custom color scheme.\n * @param {string} primaryColor\n */\n static setStyles(\n primaryColor,\n headerColor,\n buttonColor,\n backgroundColor = \"#ffffff\",\n borderRadius = 20,\n buttonX = 20,\n buttonY = 20,\n buttonStyle = GleapFeedbackButtonManager.FEEDBACK_BUTTON_BOTTOM_LEFT\n ) {\n runFunctionWhenDomIsReady(() => {\n injectStyledCSS(\n primaryColor,\n headerColor,\n buttonColor,\n borderRadius,\n backgroundColor,\n buttonX,\n buttonY,\n buttonStyle\n );\n });\n }\n\n /**\n * Sends a silent feedback report\n * @param {*} formData\n * @param {*} priority\n * @param {*} excludeData\n */\n static sendSilentCrashReport(\n description = \"\",\n priority = \"MEDIUM\",\n excludeData = {\n screenshot: true,\n replays: true,\n attachments: true,\n }\n ) {\n return Gleap.sendSilentCrashReportWithFormData(\n {\n description,\n },\n priority,\n excludeData\n );\n }\n\n /**\n * Sends a silent feedback report\n * @param {*} formData\n * @param {*} priority\n * @param {*} excludeData\n */\n static sendSilentCrashReportWithFormData(\n formData,\n priority = \"MEDIUM\",\n excludeData = {\n screenshot: true,\n replays: true,\n attachments: true,\n }\n ) {\n if (this.silentCrashReportSent) {\n return;\n }\n\n this.silentCrashReportSent = true;\n setTimeout(() => {\n this.silentCrashReportSent = false;\n }, 10000);\n\n const excludeDataCleaned = excludeData ? gleapDataParser(excludeData) : {};\n const sessionInstance = GleapSession.getInstance();\n if (!sessionInstance.ready) {\n return;\n }\n\n var newFormData = formData ? formData : {};\n if (sessionInstance.session.email) {\n newFormData.reportedBy = sessionInstance.session.email;\n }\n\n const feedback = new GleapFeedback(\n \"CRASH\",\n priority,\n newFormData,\n true,\n excludeDataCleaned\n );\n feedback\n .sendFeedback()\n .then(() => {})\n .catch((error) => {});\n }\n\n /**\n * Shows a survey manually.\n * @param {*} actionType\n * @param {*} format\n */\n static showSurvey(actionType, format = \"survey\") {\n Gleap.startFeedbackFlowWithOptions(\n actionType,\n {\n hideBackButton: true,\n format,\n },\n true\n );\n }\n\n /**\n * Starts a classic feedback form.\n */\n static startClassicForm(formId, showBackButton) {\n Gleap.startFeedbackFlowWithOptions(formId, {\n hideBackButton: !showBackButton,\n });\n }\n\n /**\n * Starts the bug reporting flow.\n */\n static startFeedbackFlow(feedbackFlow, showBackButton) {\n Gleap.startFeedbackFlowWithOptions(feedbackFlow, {\n hideBackButton: !showBackButton,\n });\n }\n\n /**\n * Starts the bug reporting flow.\n */\n static startFeedbackFlowWithOptions(\n feedbackFlow,\n options = {},\n isSurvey = false\n ) {\n const { autostartDrawing, hideBackButton, format } = options;\n const sessionInstance = GleapSession.getInstance();\n if (!sessionInstance.ready) {\n return;\n }\n\n // Initially set scroll position\n Gleap.getInstance().setGlobalDataItem(\"snapshotPosition\", {\n x: window.scrollX,\n y: window.scrollY,\n });\n\n var action = \"start-feedbackflow\";\n if (isSurvey) {\n action = \"start-survey\";\n }\n\n GleapFrameManager.getInstance().setAppMode(isSurvey ? format : \"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: action,\n data: {\n flow: feedbackFlow,\n hideBackButton: hideBackButton,\n format,\n },\n },\n true\n );\n\n if (autostartDrawing) {\n GleapFrameManager.getInstance().showDrawingScreen(\"screenshot\");\n } else {\n GleapFrameManager.getInstance().showWidget();\n }\n }\n\n /**\n * Opens the conversations overview.\n */\n static openConversations(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-conversations\",\n data: {\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens a conversation\n */\n static openConversation(shareToken, showBackButton = true) {\n if (!shareToken) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-conversation\",\n data: {\n shareToken,\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Starts a new conversation\n */\n static startConversation(showBackButton = true) {\n Gleap.startBot(\"\", showBackButton);\n }\n\n /**\n * Starts a new conversation and attaches the bot with the given id.\n */\n static startBot(botId, showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"start-bot\",\n data: {\n botId: botId ? botId : \"\",\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens a help center collection\n */\n static openHelpCenterCollection(collectionId, showBackButton = true) {\n if (!collectionId) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-help-collection\",\n data: {\n collectionId,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens a help article\n */\n static openHelpCenterArticle(articleId, showBackButton = true) {\n if (!articleId) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-help-article\",\n data: {\n articleId,\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens the help center.\n */\n static openHelpCenter(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-helpcenter\",\n data: {\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Search for news articles in the help center\n */\n static searchHelpCenter(term, showBackButton = true) {\n if (!term) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-helpcenter-search\",\n data: {\n term,\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens a news article\n */\n static openNewsArticle(id, showBackButton = true) {\n if (!id) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-news-article\",\n data: {\n id,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Open the checklists overview.\n */\n static openChecklists(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-checklists\",\n data: {},\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Starts a new checklist and opens it.\n */\n static startChecklist(\n outboundId,\n showBackButton = true,\n sharedKey = undefined\n ) {\n if (!outboundId) {\n return false;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"start-checklist\",\n data: {\n outboundId: outboundId,\n hideBackButton: !showBackButton,\n ...(sharedKey ? { sharedKey: sharedKey } : {}),\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n\n return true;\n }\n\n /**\n * Open an existing checklist.\n */\n static openChecklist(checklistId, showBackButton = true) {\n if (!checklistId) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-checklist\",\n data: {\n id: checklistId,\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Gets the full checklist data by validating the outbound ID and fetching the data.\n * @param {string} outboundId - The outbound checklist ID to get data for.\n * @param {string} [sharedKey] - Optional shared key for the checklist.\n * @returns {Promise} A promise that resolves with the full checklist data.\n *\n * Available events for checklist updates (use Gleap.on() to listen):\n * - 'checklist-loaded': Fired when a checklist is initially loaded\n * - 'checklist-update': Fired when checklist data is updated\n * - 'checklist-step-completed': Fired when a step is marked as completed\n * - 'checklist-completed': Fired when the entire checklist is completed\n */\n static getChecklistData(outboundId, sharedKey) {\n if (!outboundId) {\n return Promise.reject(new Error(\"outboundId is required\"));\n }\n\n const networkManager = ChecklistNetworkManager.getInstance();\n\n // First validate the checklist to get the internal ID\n return networkManager\n .validateChecklist(outboundId, sharedKey)\n .then((internalId) => {\n // Then fetch the full checklist data\n return networkManager.fetchChecklist(internalId);\n });\n }\n\n /**\n * Opens the news overview.\n */\n static openNews(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-news\",\n data: {\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens the feature requests overview.\n */\n static openFeatureRequests(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-feature-requests\",\n data: {},\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n isLiveMode() {\n if (this.offlineMode === true) {\n return false;\n }\n\n var hostname = window.location.hostname;\n const isLocalHost =\n [\"localhost\", \"127.0.0.1\", \"0.0.0.0\", \"\", \"::1\"].includes(hostname) ||\n hostname.startsWith(\"192.168.\") ||\n hostname.startsWith(\"10.0.\") ||\n hostname.endsWith(\".local\") ||\n !hostname.includes(\".\");\n return !isLocalHost;\n }\n\n softReInitialize() {\n GleapFrameManager.getInstance().destroy();\n GleapConfigManager.getInstance()\n .start()\n .then(() => {\n // Update the feedback button.\n GleapFeedbackButtonManager.getInstance().refresh();\n\n // Inject the notification container\n GleapNotificationManager.getInstance().injectNotificationUI();\n })\n .catch(function (err) {\n console.warn(\"Failed to initialize Gleap.\");\n });\n }\n\n /**\n * Performs an action.\n * @param {*} action\n */\n performActions(actions) {\n for (let i = 0; i < actions.length; i++) {\n const action = actions[i];\n if (action && action.actionType) {\n if (action.pageFilter && window && window.location) {\n const passed = checkPageFilter(\n window.location.href,\n action.pageFilter,\n action.pageFilterType\n );\n\n if (!passed) {\n continue;\n }\n }\n\n if (action.actionType === \"notification\") {\n if (action?.data?.checklist?.popupType === \"widget\") {\n Gleap.openChecklist(action.data.checklist.id, true);\n } else {\n if (!this.disableInAppNotifications) {\n Gleap.showNotification(action);\n }\n }\n } else if (action.actionType === \"banner\") {\n Gleap.showBanner(action);\n } else if (action.actionType === \"modal\") {\n Gleap.showModal(action);\n } else if (action.actionType === \"tour\") {\n Gleap.startProductTourWithConfig(action.outbound, action.data, false);\n } else {\n Gleap.showSurvey(action.actionType, action.format);\n }\n }\n }\n }\n\n static startProductTour(tourId, checkStartUrl = false) {\n const self = this;\n GleapSession.getInstance()\n .startProductTourConfig(tourId)\n .then((config) => {\n if (\n checkStartUrl &&\n config?.startURL &&\n !window?.location?.href?.includes(config?.baseURL)\n ) {\n window.location.href = `${config.startURL}?gleap_tour=${tourId}&gleap_tour_delay=1`;\n return;\n }\n\n self.startProductTourWithConfig(tourId, config, true);\n })\n .catch((error) => {});\n }\n\n static checkForUncompletedTour() {\n const tourData = GleapProductTours.getInstance().loadUncompletedTour();\n if (tourData) {\n GleapProductTours.getInstance().startWithConfig(\n tourData.tourId,\n tourData.tourData,\n 500\n );\n }\n }\n\n static startProductTourWithConfig(tourId, config, manually = false) {\n GleapProductTours.getInstance().startWithConfig(\n tourId,\n config,\n 0,\n manually\n );\n }\n\n static showBanner(data) {\n try {\n GleapBannerManager.getInstance().showBanner(data);\n } catch (e) {}\n }\n\n static showModal(data) {\n try {\n GleapModalManager.getInstance().showModal(data);\n } catch (e) {}\n }\n\n static showNotification(data) {\n GleapNotificationManager.getInstance().showNotification(data);\n }\n\n /**\n * Sets a global data value\n * @param {*} key\n * @param {*} value\n */\n setGlobalDataItem(key, value) {\n this.globalData[key] = value;\n }\n\n /**\n * Gets a global data value\n * @param {*} key\n * @returns\n */\n getGlobalDataItem(key) {\n return this.globalData[key];\n }\n\n /**\n * Takes the current replay and assigns it to the global data array.\n */\n takeCurrentReplay() {\n const replayData = GleapReplayRecorder.getInstance().getReplayData();\n this.setGlobalDataItem(\"webReplay\", replayData);\n }\n}\n\n// Check for unperformed Gleap actions.\nif (typeof window !== \"undefined\") {\n const GleapActions = window.GleapActions;\n if (GleapActions && GleapActions.length > 0) {\n for (var i = 0; i < GleapActions.length; i++) {\n const GLAction = GleapActions[i];\n if (GLAction && GLAction.e && Gleap[GLAction.e]) {\n Gleap[GLAction.e].apply(Gleap, GLAction.a);\n }\n }\n }\n}\n\nconst handleGleapLink = (href) => {\n try {\n const urlParts = href.split(\"/\");\n const type = urlParts[2];\n if (type === \"article\") {\n const identifier = urlParts[3];\n Gleap.openHelpCenterArticle(identifier, true);\n }\n\n if (type === \"collection\") {\n const identifier = urlParts[3];\n Gleap.openHelpCenterCollection(identifier, true);\n }\n\n if (type === \"flow\") {\n const identifier = urlParts[3];\n Gleap.startFeedbackFlow(identifier, true);\n }\n\n if (type === \"survey\") {\n const identifier = urlParts[3];\n Gleap.showSurvey(identifier);\n }\n\n if (type === \"bot\") {\n const identifier = urlParts[3];\n Gleap.startBot(identifier, true);\n }\n\n if (type === \"news\") {\n const identifier = urlParts[3];\n Gleap.openNewsArticle(identifier, true);\n }\n\n if (type === \"checklist\") {\n const identifier = urlParts[3];\n Gleap.startChecklist(identifier, true, urlParts[4]);\n }\n\n if (type === \"tour\") {\n const identifier = urlParts[3];\n Gleap.startProductTour(identifier);\n }\n } catch (e) {\n console.error(\"Failed to handle Gleap link: \", href);\n }\n};\n\nexport {\n GleapNetworkIntercepter,\n GleapAudioManager,\n GleapNotificationManager,\n GleapBannerManager,\n GleapModalManager,\n GleapPreFillManager,\n GleapShortcutListener,\n GleapMarkerManager,\n GleapTranslationManager,\n GleapReplayRecorder,\n GleapFeedback,\n GleapConsoleLogManager,\n GleapCustomActionManager,\n GleapEventManager,\n GleapCustomDataManager,\n GleapFeedbackButtonManager,\n GleapClickListener,\n GleapSession,\n GleapStreamedEvent,\n GleapConfigManager,\n GleapFrameManager,\n GleapMetaDataManager,\n GleapTagManager,\n GleapProductTours,\n handleGleapLink,\n};\n\nexport default Gleap;\n","/**\n * Gleap Checklist Web Component\n *\n * Displays an interactive checklist fetched from the Gleap API.\n * Allows users to view steps, mark them as done, trigger actions,\n * and automatically updates based on external events. Includes localization support\n * via GleapTranslationManager.\n *\n * Waits for a Gleap session to be available before initializing and\n * reloads when the session changes (via 'session-updated' event).\n *\n * @element gleap-checklist\n *\n * @attr {string} checklistId - The outbound ID of the checklist to display. Required.\n * @attr {boolean} [info=true] - Whether to display the info section (title, description, sender).\n * @attr {boolean} [progressbar=true] - Whether to display the progress bar.\n * @attr {boolean} [dark=false] - Apply dark mode styling.\n * @attr {boolean} [floating=false] - When set to \"true\", shows a small bubble that expands on click.\n *\n * @cssprop --color-bg - Background color.\n * @cssprop --color-font-title - Title text color.\n * @cssprop --color-font-text - Body text color.\n * @cssprop --color-font-light - Lighter text color.\n * @cssprop --color-primary - Primary accent color.\n * @cssprop --color-primary-light - Light primary color shade.\n * @cssprop --color-primary-contrast - Text color for primary buttons.\n * @cssprop --color-border - Border color.\n * @cssprop --color-gray-light - Light gray background/border color.\n * @cssprop --color-gray-lighter - Even lighter gray background.\n * @cssprop --color-gray-dark - Darker gray text/icon color.\n * @cssprop --color-success - Success color (e.g., for completed items).\n * @cssprop --color-success-light - Contrast color for success elements.\n * @cssprop --radius-sm - Small border radius.\n * @cssprop --radius-lg - Large border radius.\n * @cssprop --radius-full - Full (pill) border radius.\n * @cssprop --shadow-sm - Small box shadow.\n * @cssprop --shadow-md - Medium box shadow.\n * @cssprop --animation-duration - Duration for animations (e.g., accordion).\n * @cssprop --animation-timing - Timing function for animations.\n */\nimport ChecklistNetworkManager from \"./ChecklistNetworkManager\";\nimport Gleap, {\n GleapConfigManager,\n GleapSession,\n GleapTranslationManager,\n GleapEventManager,\n} from \"./Gleap\";\n\nexport const registerGleapChecklist = () => {\n if (\n typeof customElements !== \"undefined\" &&\n typeof HTMLElement !== \"undefined\" &&\n typeof window !== \"undefined\"\n ) {\n class GleapChecklist extends HTMLElement {\n /** @private {number} */\n activeStep = -1;\n /** @private {object|null} */\n checklistData = null;\n /** @private {boolean} */\n _isInitialLoad = false;\n /** @private {boolean} */\n _initialActiveSet = false;\n /** @private {boolean} Flag indicating if the component has loaded data at least once. */\n _hasLoaded = false;\n /** @private {boolean} Flag indicating if a Gleap session is currently considered active by the component. */\n _isSessionReady = false;\n\n /** @private {Function} */\n _boundHandleChecklistUpdate = this.handleChecklistUpdate.bind(this);\n /** @private {Function} */\n _boundHandleSessionUpdate = this.handleSessionUpdate.bind(this);\n\n constructor() {\n super();\n this.attachShadow({ mode: \"open\" });\n // Ensure NetworkManager instance is created only if Gleap is available\n try {\n if (\n typeof GleapSession !== \"undefined\" &&\n typeof ChecklistNetworkManager !== \"undefined\"\n ) {\n this._networkManager = ChecklistNetworkManager.getInstance();\n } else {\n this._networkManager = null;\n }\n } catch (e) {\n this._networkManager = null;\n }\n // Bind click handlers for floating mode.\n this._boundFloatingLauncherClick =\n this.handleFloatingLauncherClick.bind(this);\n this._boundFloatingCloseClick =\n this.handleFloatingCloseClick.bind(this);\n this._floatingHideTimeout = null;\n }\n\n // --- Observed Attributes ---\n static get observedAttributes() {\n return [\n \"checklistId\",\n \"info\",\n \"progressbar\",\n \"dark\",\n \"floating\",\n \"sharedKey\",\n ];\n }\n\n // --- Lifecycle Callbacks ---\n connectedCallback() {\n window.addEventListener(\n \"checkListUpdate\",\n this._boundHandleChecklistUpdate\n );\n window.addEventListener(\n \"session-updated\",\n this._boundHandleSessionUpdate\n );\n window.addEventListener(\n \"resize\",\n (this._boundResizeHandler = this.handleResize.bind(this))\n );\n this._checkSessionAndLoad();\n }\n\n disconnectedCallback() {\n window.removeEventListener(\n \"checkListUpdate\",\n this._boundHandleChecklistUpdate\n );\n window.removeEventListener(\n \"session-updated\",\n this._boundHandleSessionUpdate\n );\n window.removeEventListener(\"resize\", this._boundResizeHandler);\n this.removeFloatingClickListeners();\n if (this._floatingHideTimeout) {\n clearTimeout(this._floatingHideTimeout);\n this._floatingHideTimeout = null;\n }\n this.checklistData = null;\n this.activeStep = -1;\n this._hasLoaded = false;\n this._isSessionReady = false;\n this._initialActiveSet = false;\n this.renderResponse();\n }\n\n handleResize() {\n this.updateActiveTaskMaxHeight();\n }\n\n attributeChangedCallback(name, oldValue, newValue) {\n if (oldValue !== newValue) {\n if (name === \"checklistId\" && this._isSessionReady) {\n this.loadChecklist();\n } else if (name !== \"checklistId\" && this._hasLoaded) {\n if (this.checklistData) {\n this.renderChecklist(this.checklistData);\n }\n }\n }\n }\n\n // --- Session Handling ---\n _checkSessionAndLoad() {\n const gleapSessionInstance = this._getGleapSessionInstance();\n const hasChecklistId = this.getAttribute(\"checklistId\");\n\n if (gleapSessionInstance.ready && hasChecklistId) {\n this._isSessionReady = true;\n this._networkManager = ChecklistNetworkManager.getInstance();\n this.loadChecklist();\n } else {\n this._isSessionReady = false;\n this._hasLoaded = false;\n this.checklistData = null;\n this.activeStep = -1;\n this._initialActiveSet = false;\n this.renderResponse();\n }\n }\n\n handleSessionUpdate() {\n this._checkSessionAndLoad();\n }\n\n _getGleapSessionInstance() {\n try {\n return typeof GleapSession !== \"undefined\"\n ? GleapSession.getInstance()\n : null;\n } catch (e) {\n return null;\n }\n }\n\n // --- Getters for Configuration ---\n get infoEnabled() {\n const attr = this.getAttribute(\"info\");\n return attr === null || attr.toLowerCase() !== \"false\";\n }\n\n get progressbarEnabled() {\n const attr = this.getAttribute(\"progressbar\");\n return attr === null || attr.toLowerCase() !== \"false\";\n }\n\n get floatingEnabled() {\n return this.getAttribute(\"floating\") === \"true\";\n }\n\n // --- Translation Helpers ---\n _translate(key, defaultValue = \"\") {\n return GleapTranslationManager.translateText(key) || defaultValue;\n }\n\n _translateWithVars(key, vars, defaultValue = \"\") {\n return (\n GleapTranslationManager.translateTextWithVars(key, vars) ||\n defaultValue\n );\n }\n\n // --- SVG Icons ---\n getCheckIcon() {\n return `\n \n `;\n }\n\n // --- Data Loading and Handling ---\n loadChecklist() {\n if (!this._isSessionReady || !this._networkManager) {\n return;\n }\n const checklistId = this.getAttribute(\"checklistId\");\n if (checklistId) {\n this.activeStep = -1;\n this._initialActiveSet = false;\n this.validateChecklist(checklistId);\n } else {\n this.renderResponse();\n this.checklistData = null;\n this._hasLoaded = false;\n }\n }\n\n getQueryParams() {\n const gleapSessionInstance = this._getGleapSessionInstance();\n if (!gleapSessionInstance?.session) {\n return \"\";\n }\n const session = gleapSessionInstance.session;\n let lang = \"en\";\n try {\n if (typeof GleapTranslationManager !== \"undefined\") {\n lang =\n GleapTranslationManager.getInstance().getActiveLanguage() || \"en\";\n }\n } catch (e) {}\n return `gleapId=${session.gleapId || \"\"}&gleapHash=${\n session.gleapHash || \"\"\n }&lang=${lang}`;\n }\n\n makeRequest(method, url, data, callback) {\n const gleapSessionInstance = this._getGleapSessionInstance();\n if (!gleapSessionInstance?.session) {\n const mockXhr = {\n readyState: 4,\n status: 0,\n responseText: \"Session unavailable\",\n _isMock: true,\n };\n callback(mockXhr);\n return;\n }\n const xhr = new XMLHttpRequest();\n xhr.open(method, url);\n try {\n gleapSessionInstance.injectSession(xhr);\n } catch (e) {}\n if (data) {\n xhr.setRequestHeader(\n \"Content-Type\",\n \"application/json;charset=UTF-8\"\n );\n }\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n callback(xhr);\n }\n };\n xhr.onerror = () => {\n callback(xhr);\n };\n xhr.send(data ? JSON.stringify(data) : null);\n }\n\n validateChecklist(outboundId) {\n if (!this._isSessionReady || !this._networkManager) {\n return;\n }\n this.checklistData = null;\n this._hasLoaded = false;\n this.renderResponse();\n const sharedKey = this.getAttribute(\"sharedKey\");\n\n this._networkManager\n .validateChecklist(outboundId, sharedKey)\n .then((internalId) => {\n if (!this.isConnected || !this._isSessionReady || !internalId) {\n return;\n }\n this.fetchChecklist(internalId);\n })\n .catch((error) => {\n this.renderResponse();\n this.checklistData = null;\n this._hasLoaded = false;\n });\n }\n\n fetchChecklist(checklistId) {\n if (!this._isSessionReady || !this._networkManager) {\n return;\n }\n this._isInitialLoad = !this._hasLoaded;\n this._networkManager\n .fetchChecklist(checklistId)\n .then((data) => {\n if (!this.isConnected || !this._isSessionReady || !data) {\n this._hasLoaded = false;\n this.checklistData = null;\n this._checkSessionAndLoad();\n return;\n }\n this.checklistData = data;\n this._hasLoaded = true;\n if (data.status === \"done\") {\n this.renderResponse();\n return;\n }\n if (this._isInitialLoad && !this._initialActiveSet) {\n const steps = data.outbound?.config?.steps || [];\n const completedSteps = data.completedSteps || [];\n const firstIncompleteIndex = steps.findIndex(\n (step) => !completedSteps.includes(step.id)\n );\n this.activeStep =\n firstIncompleteIndex >= 0 ? firstIncompleteIndex : -1;\n if (this.activeStep !== -1) {\n this._initialActiveSet = true;\n }\n }\n this.renderChecklist(this.checklistData);\n \n // Notify external listeners about the initial checklist load\n GleapEventManager.notifyEvent(\"checklist-loaded\", {\n checklistId: this.checklistData.id,\n outboundId: this.checklistData.outbound?.id,\n completedSteps: this.checklistData.completedSteps,\n status: this.checklistData.status,\n data: this.checklistData\n });\n })\n .catch((error) => {\n this.renderResponse();\n this.checklistData = null;\n this._hasLoaded = false;\n });\n }\n\n updateChecklist(id, data) {\n const gleapSessionInstance = this._getGleapSessionInstance();\n if (!gleapSessionInstance?.session) {\n return;\n }\n const apiUrl = gleapSessionInstance.apiUrl;\n if (!apiUrl) {\n return;\n }\n const session = gleapSessionInstance.session;\n const gleapId = session?.gleapId ?? \"\";\n const gleapHash = session?.gleapHash ?? \"\";\n let lang = \"en\";\n try {\n if (typeof GleapTranslationManager !== \"undefined\") {\n lang =\n GleapTranslationManager.getInstance().getActiveLanguage() || \"en\";\n }\n } catch (e) {}\n let url = `${apiUrl}/outbound/checklists/${id}`;\n if (data.checkedStep) {\n url += `/increment/${data.checkedStep}`;\n }\n url += `?gleapId=${gleapId}&gleapHash=${gleapHash}&lang=${lang}`;\n this.makeRequest(\"PUT\", url, data, (xhr) => {\n if (xhr._isMock) return;\n if (!(xhr.status === 200 || xhr.status === 204)) {\n // Update failed\n }\n });\n }\n\n // --- External Update Handling ---\n handleChecklistUpdate(event) {\n if (!this._hasLoaded || !this.checklistData) {\n return;\n }\n const updateData = event.detail;\n if (!updateData || updateData.id !== this.checklistData.id) {\n return;\n }\n const previousCompletedSteps = [\n ...(this.checklistData.completedSteps || []),\n ];\n let dataChanged = false;\n let activeStepCompleted = false;\n const currentlyActiveStepIndex = this.activeStep;\n if (\n updateData.completedSteps &&\n JSON.stringify(updateData.completedSteps) !==\n JSON.stringify(previousCompletedSteps)\n ) {\n this.checklistData.completedSteps = [...updateData.completedSteps];\n dataChanged = true;\n if (currentlyActiveStepIndex !== -1) {\n const activeStepId =\n this.checklistData.outbound?.config?.steps?.[\n currentlyActiveStepIndex\n ]?.id;\n if (\n activeStepId &&\n this.checklistData.completedSteps.includes(activeStepId) &&\n !previousCompletedSteps.includes(activeStepId)\n ) {\n activeStepCompleted = true;\n }\n }\n }\n if (\n updateData.status &&\n updateData.status !== this.checklistData.status\n ) {\n this.checklistData.status = updateData.status;\n dataChanged = true;\n }\n if (activeStepCompleted) {\n const steps = this.checklistData.outbound?.config?.steps || [];\n let nextActiveStep = -1;\n for (let i = currentlyActiveStepIndex + 1; i < steps.length; i++) {\n if (!this.checklistData.completedSteps.includes(steps[i].id)) {\n nextActiveStep = i;\n break;\n }\n }\n if (this.activeStep !== nextActiveStep) {\n this.setActiveStep(nextActiveStep);\n }\n dataChanged = true;\n }\n if (dataChanged) {\n this.renderChecklist(this.checklistData);\n \n // Notify external listeners about the checklist update\n GleapEventManager.notifyEvent(\"checklist-update\", {\n checklistId: this.checklistData.id,\n outboundId: this.checklistData.outbound?.id,\n completedSteps: this.checklistData.completedSteps,\n status: this.checklistData.status,\n data: this.checklistData\n });\n }\n }\n\n // --- Floating (Click-based) Listeners ---\n handleFloatingLauncherClick(event) {\n event.stopPropagation();\n\n if (this.checklistData.status === \"done\") {\n return;\n }\n\n const tasks = this.shadowRoot.querySelector(\".checklist-tasks\");\n if (tasks) {\n tasks.style.display =\n tasks.style.display === \"block\" ? \"none\" : \"block\";\n }\n }\n\n handleFloatingCloseClick(event) {\n event.stopPropagation();\n const tasks = this.shadowRoot.querySelector(\".checklist-tasks\");\n if (tasks) {\n tasks.style.display = \"none\";\n }\n }\n\n addFloatingClickListeners() {\n const launcher = this.shadowRoot.querySelector(\n \".checklist-floating-launcher\"\n );\n if (launcher) {\n launcher.addEventListener(\"click\", this._boundFloatingLauncherClick);\n }\n const header = this.shadowRoot.querySelector(\n \".checklist-floating-header\"\n );\n if (header) {\n header.addEventListener(\"click\", this._boundFloatingCloseClick);\n }\n }\n\n removeFloatingClickListeners() {\n const launcher = this.shadowRoot.querySelector(\n \".checklist-floating-launcher\"\n );\n if (launcher) {\n launcher.removeEventListener(\n \"click\",\n this._boundFloatingLauncherClick\n );\n }\n const header = this.shadowRoot.querySelector(\n \".checklist-floating-header\"\n );\n if (header) {\n header.removeEventListener(\"click\", this._boundFloatingCloseClick);\n }\n }\n\n // --- Rendering Logic ---\n renderResponse() {\n this.shadowRoot.innerHTML = \"\";\n }\n\n /**\n * Renders the floating launcher. When called with the default class (\"checklist-floating\")\n * it shows a chevron icon; when called with \"checklist-floating-header\" it shows a close icon.\n */\n renderFloatingLauncher(\n outbound,\n className = \"checklist-floating\",\n renderDoneState = false\n ) {\n const steps = outbound.config?.steps || [];\n const completedSteps = this.checklistData?.completedSteps || [];\n let progress = 0;\n if (this.progressbarEnabled && steps.length > 0) {\n const totalSteps = steps.length;\n const doneSteps = completedSteps.length;\n progress = totalSteps > 0 ? (doneSteps / totalSteps) * 100 : 0;\n }\n\n // Determine the next incomplete step\n const nextIncompleteStep = steps.find(\n (step) => !completedSteps.includes(step.id)\n );\n let titleText =\n steps.length > 0\n ? nextIncompleteStep\n ? nextIncompleteStep.title ||\n this._translateWithVars(\n \"stepDefaultTitle\",\n { index: steps.indexOf(nextIncompleteStep) + 1 },\n `Step ${steps.indexOf(nextIncompleteStep) + 1}`\n )\n : \"\"\n : outbound.subject || \"\";\n\n let subtitleText =\n steps.length > 0\n ? nextIncompleteStep\n ? nextIncompleteStep.description || \"\"\n : \"\"\n : outbound.message || \"\";\n\n if (renderDoneState) {\n titleText = outbound.config?.successTitle || \"\";\n subtitleText = outbound.config?.successMessage || \"\";\n progress = 100;\n }\n\n const circumference = 2 * Math.PI * 7;\n const computedOffset = circumference - (progress / 100) * circumference;\n\n const isHeader = className === \"checklist-floating-header\";\n const icon = isHeader\n ? `\n \n \n `\n : `\n \n `;\n\n return `\n
\n
\n
\n \n \n \n \n
\n
${titleText}
\n ${\n renderDoneState\n ? \"\"\n : `${icon}`\n }\n
\n
${subtitleText}
\n
\n `;\n }\n\n renderInfoSection(outbound) {\n if (!this.infoEnabled || !outbound) return \"\";\n const subject =\n outbound.subject ||\n this._translate(\"checklistDefaultTitle\", \"Checklist\");\n const message = outbound.message || \"\";\n let senderHtml = \"\";\n if (outbound.sender?.profileImageUrl) {\n senderHtml = `\n
\n \"${\n\n ${outbound.sender.firstName || \"\"}\n
`;\n }\n return `\n
\n ${\n subject\n ? `
${subject}
`\n : \"\"\n }\n ${\n message\n ? `
${message}
`\n : \"\"\n }\n ${senderHtml}\n
`;\n }\n\n renderProgressSection(steps = [], completedSteps = []) {\n if (!this.progressbarEnabled || !steps.length) return \"\";\n const totalSteps = steps.length;\n const doneSteps = completedSteps.length;\n const progress = totalSteps > 0 ? (doneSteps / totalSteps) * 100 : 0;\n let duration = 0;\n steps.forEach((step) => {\n if (!completedSteps.includes(step.id) && step.duration > 0) {\n duration += step.duration;\n }\n });\n const progressLabel = this._translateWithVars(\n \"taskProgress\",\n { a: doneSteps, b: totalSteps },\n `${doneSteps} of ${totalSteps} done`\n );\n const durationLabel =\n duration > 0\n ? this._translateWithVars(\n \"aboutMinutes\",\n { a: duration },\n `About ${duration} min left`\n )\n : \"\";\n return `\n
\n
${progressLabel}
\n ${\n durationLabel\n ? `
${durationLabel}
`\n : \"\"\n }\n
\n
\n
\n
`;\n }\n\n renderTasks(steps = [], completedSteps = []) {\n if (!steps || steps.length === 0)\n return `

${this._translate(\n \"noStepsDefined\",\n \"No steps defined.\"\n )}

`;\n return steps\n .map((step, index) => {\n const isTaskDone = completedSteps.includes(step.id);\n const isActive = this.activeStep === index;\n const badge = isTaskDone\n ? `${this.getCheckIcon()}`\n : `${\n index + 1\n }`;\n const stepTitle =\n step.title ||\n this._translateWithVars(\n \"stepDefaultTitle\",\n { index: index + 1 },\n `Step ${index + 1}`\n );\n const stepDescription = step.description || \"\";\n const actionButtonText =\n step.actionTitle ||\n this._translate(\"actionDefaultTitle\", \"Action\");\n const actionHtml =\n step.action && step.action !== \"none\"\n ? `
\n \n
`\n : \"\";\n const markDoneLabel = this._translate(\"markAsDone\", \"Mark as done\");\n const markDoneHtml =\n step.allowMarkDone && !isTaskDone\n ? `
\n ${this.getCheckIcon()}\n
${markDoneLabel}
\n
`\n : \"\";\n const taskClasses = [\n \"checklist-task\",\n isTaskDone ? \"checklist-task--done\" : \"\",\n isActive ? \"checklist-task--active\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n return `\n
\n
\n ${badge}\n
${stepTitle}
\n \n \n \n \n \n
\n
\n
\n ${\n stepDescription\n ? `
${stepDescription}
`\n : \"\"\n }\n ${actionHtml}\n ${markDoneHtml}\n
\n
\n
`;\n })\n .join(\"\");\n }\n\n renderChecklist(data) {\n if (!this._hasLoaded || !data || !data.outbound) {\n this._checkSessionAndLoad();\n return;\n }\n const { outbound } = data;\n const steps = outbound.config?.steps || [];\n const completedSteps = data.completedSteps || [];\n const isDone =\n data.status === \"done\" ||\n (steps.length > 0 && completedSteps.length >= steps.length);\n let content = \"\";\n if (isDone) {\n const successTitle = outbound.config?.successTitle || \"\";\n const successMessage = outbound.config?.successMessage || \"\";\n if (this.floatingEnabled) {\n content = this.renderFloatingLauncher(\n outbound,\n \"checklist-floating-launcher\",\n true\n );\n } else {\n content = `\n
\n
\n ${this.getCheckIcon()}\n
\n
${successTitle}
\n
${successMessage}
\n
`;\n }\n if (this.activeStep !== -1) this.activeStep = -1;\n } else {\n content = `\n
\n ${!this.floatingEnabled ? this.renderInfoSection(outbound) : \"\"}\n ${\n !this.floatingEnabled\n ? this.renderProgressSection(steps, completedSteps)\n : \"\"\n }\n ${\n this.floatingEnabled\n ? this.renderFloatingLauncher(outbound)\n : \"\"\n }\n
\n ${\n this.floatingEnabled\n ? this.renderFloatingLauncher(\n outbound,\n \"checklist-floating-header\"\n )\n : \"\"\n }\n ${this.renderTasks(steps, completedSteps)}\n
\n
`;\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const primaryColor = flowConfig.color ? flowConfig.color : \"#485BFF\";\n\n const styles = `\n \n `;\n this.shadowRoot.innerHTML = styles + content;\n this.addTaskEventListeners();\n if (this.floatingEnabled) {\n this.addFloatingClickListeners();\n }\n if (this.activeStep !== -1) {\n this.toggleTask(this.activeStep, true);\n }\n }\n\n updateActiveTaskMaxHeight() {\n if (this.activeStep !== -1) {\n const taskBodyInner = this.shadowRoot.querySelector(\n `.checklist-task[data-task-index=\"${this.activeStep}\"] .checklist-task-body-inner`\n );\n const container = this.shadowRoot.querySelector(\n `.checklist-task[data-task-index=\"${this.activeStep}\"] .checklist-task-body`\n );\n if (taskBodyInner && container) {\n const height = taskBodyInner.offsetHeight;\n container.style.setProperty(\n \"--task-body-active-height\",\n `${height}px`\n );\n }\n }\n }\n\n // --- Event Listener Setup ---\n addTaskEventListeners() {\n const tasks = this.shadowRoot.querySelectorAll(\".checklist-task\");\n tasks.forEach((task) => {\n const header = task.querySelector(\".checklist-task-header\");\n const index = parseInt(task.getAttribute(\"data-task-index\"), 10);\n if (header) {\n header.addEventListener(\"click\", () => {\n const newActiveStep = this.activeStep === index ? -1 : index;\n this.setActiveStep(newActiveStep);\n });\n }\n const markDoneBtn = task.querySelector(\n \".checklist-task-body-markdone\"\n );\n if (markDoneBtn) {\n markDoneBtn.addEventListener(\"click\", (e) => {\n e.stopPropagation();\n if (!this.checklistData?.outbound?.config?.steps) return;\n const step = this.checklistData.outbound.config.steps[index];\n if (!step) return;\n const previouslyActiveStep = this.activeStep;\n if (!this.checklistData.completedSteps)\n this.checklistData.completedSteps = [];\n if (!this.checklistData.completedSteps.includes(step.id)) {\n this.checklistData.completedSteps.push(step.id);\n \n // Notify external listeners about the step completion\n GleapEventManager.notifyEvent(\"checklist-step-completed\", {\n checklistId: this.checklistData.id,\n outboundId: this.checklistData.outbound?.id,\n stepId: step.id,\n stepIndex: index,\n step: step,\n completedSteps: this.checklistData.completedSteps,\n status: this.checklistData.status,\n data: this.checklistData\n });\n const allSteps = this.checklistData.outbound.config.steps;\n let nextActiveStep = -1;\n if (previouslyActiveStep === index) {\n for (let i = index + 1; i < allSteps.length; i++) {\n if (\n !this.checklistData.completedSteps.includes(\n allSteps[i].id\n )\n ) {\n nextActiveStep = i;\n break;\n }\n }\n this.setActiveStep(nextActiveStep);\n }\n // Preserve the state of the floating modal.\n setTimeout(() => {\n let isModalOpen = false;\n if (this.floatingEnabled) {\n const tasksModal =\n this.shadowRoot.querySelector(\".checklist-tasks\");\n isModalOpen =\n tasksModal && tasksModal.style.display === \"block\";\n }\n this.renderChecklist(this.checklistData);\n if (this.floatingEnabled && isModalOpen) {\n const tasksModal =\n this.shadowRoot.querySelector(\".checklist-tasks\");\n if (tasksModal) tasksModal.style.display = \"block\";\n }\n }, 300);\n const updateData = { checkedStep: step.id };\n if (\n allSteps.length > 0 &&\n this.checklistData.completedSteps.length >= allSteps.length\n ) {\n this.checklistData.status = \"done\";\n updateData.status = \"done\";\n \n // Notify external listeners about the checklist completion\n GleapEventManager.notifyEvent(\"checklist-completed\", {\n checklistId: this.checklistData.id,\n outboundId: this.checklistData.outbound?.id,\n completedSteps: this.checklistData.completedSteps,\n status: this.checklistData.status,\n data: this.checklistData\n });\n }\n this.updateChecklist(this.checklistData.id, updateData);\n }\n });\n }\n const actionBtn = task.querySelector(\n \".checklist-task-body-action .action-button\"\n );\n if (actionBtn) {\n actionBtn.addEventListener(\"click\", (e) => {\n e.stopPropagation();\n if (\n !this.checklistData?.outbound?.config?.steps ||\n typeof Gleap === \"undefined\"\n )\n return;\n const step = this.checklistData.outbound.config.steps[index];\n if (!step || !step.action || step.action === \"none\") return;\n try {\n if (step.action === \"BOT\") Gleap.startBot(step.botId);\n else if (step.action === \"CUSTOM_ACTION\")\n Gleap.triggerCustomAction(step.actionBody);\n else if (step.action === \"REDIRECT_URL\") {\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n Gleap.openURL(step.actionBody, !!step.actionOpenInNewTab);\n } else if (step.action === \"FEEDBACK_FLOW\")\n Gleap.startFeedbackFlow(step.formId);\n else if (step.action === \"NEWS_ARTICLE\")\n Gleap.openNewsArticle(step.articleId);\n else if (step.action === \"HELP_ARTICLE\")\n Gleap.openHelpCenterArticle(step.articleId);\n else if (step.action === \"CHECKLIST\")\n Gleap.startChecklist(step.outboundId, true, step?.sharedKey);\n } catch (gleapError) {}\n });\n }\n });\n }\n\n // --- Animation and State Management ---\n setActiveStep(index) {\n const previousActiveStep = this.activeStep;\n this.activeStep = index;\n const tasksToToggle = [];\n if (\n previousActiveStep !== -1 &&\n previousActiveStep !== this.activeStep\n ) {\n tasksToToggle.push({ index: previousActiveStep, open: false });\n }\n if (this.activeStep !== -1 && this.activeStep !== previousActiveStep) {\n tasksToToggle.push({ index: this.activeStep, open: true });\n }\n tasksToToggle.forEach(({ index, open }) => {\n this.toggleTask(index, open);\n });\n }\n\n toggleTask(index, forceOpen = null) {\n const taskElement = this.shadowRoot.querySelector(\n `.checklist-task[data-task-index=\"${index}\"]`\n );\n if (!taskElement) return;\n const header = taskElement.querySelector(\".checklist-task-header\");\n if (!header) return;\n const isOpen = taskElement.classList.contains(\"checklist-task--active\");\n const shouldOpen = forceOpen !== null ? forceOpen : !isOpen;\n if (shouldOpen && !isOpen) {\n taskElement.classList.add(\"checklist-task--active\");\n header.setAttribute(\"aria-expanded\", \"true\");\n const taskBodyInner = taskElement.querySelector(\n \".checklist-task-body-inner\"\n );\n if (taskBodyInner) {\n const height = taskBodyInner.offsetHeight;\n const taskBody = taskElement.querySelector(\".checklist-task-body\");\n if (taskBody) {\n taskBody.style.setProperty(\n \"--task-body-active-height\",\n `${height}px`\n );\n }\n }\n } else if (!shouldOpen && isOpen) {\n taskElement.classList.remove(\"checklist-task--active\");\n header.setAttribute(\"aria-expanded\", \"false\");\n }\n }\n }\n\n if (\n typeof customElements !== \"undefined\" &&\n !customElements.get(\"gleap-checklist\")\n ) {\n customElements.define(\"gleap-checklist\", GleapChecklist);\n }\n }\n};\n","import Gleap from \"./Gleap\";\n\nexport default Gleap;\n"],"names":["root","factory","exports","module","define","amd","this","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","GleapFeedbackButtonManager","_classCallCheck","_defineProperty","value","instance","feedbackButton","remove","buttonHidden","lastButtonIcon","injectedFeedbackButton","show","getInstance","updateFeedbackButtonState","GleapNotificationManager","updateContainerStyle","frameManager","GleapFrameManager","isOpened","hideWidget","setAppMode","showWidget","_this","elem","document","createElement","addEventListener","feedbackButtonPressed","body","appendChild","count","notificationBadge","querySelector","notificationHiddenClass","classList","innerText","add","updateFeedbackButtonText","injectFeedbackButton","flowConfig","GleapConfigManager","getFlowConfig","feedbackButtonPosition","FEEDBACK_BUTTON_CLASSIC","FEEDBACK_BUTTON_CLASSIC_BOTTOM","FEEDBACK_BUTTON_CLASSIC_LEFT","widgetButtonText","buttonIcon","buttonLogo","concat","loadIcon","className","setAttribute","GleapTranslationManager","isRTLLayout","innerHTML","hideButton","FEEDBACK_BUTTON_NONE","FEEDBACK_BUTTON_BOTTOM_LEFT","appMode","hideForGuests","GleapSession","isUser","calculateShadeColor","col","amt","replace","length","_col$match2","_slicedToArray","match","r","g","b","_ref","parseInt","Math","max","min","toString","rr","gg","bb","calculateContrast","hex","substr","name","color","GleapNetworkIntercepter","Date","now","loadAllResources","contentType","toLocaleLowerCase","supportedContentTypes","i","includes","requests","JSON","parse","stringify","values","externalRequests","filters","request","headers","j","payload","payloadObj","e","response","responseText","data","window","performance","resources","getEntriesByType","resource","indexOf","initiatorType","find","url","push","type","date","startTimestamp","startTime","duration","round","exp","blacklist","defaultBlacklist","filter","maxRequests","stopped","keys","keysToRemove","slice","bbRequestId","startDate","getTime","text","size","TextEncoder","encode","encodeURI","s","split","Blob","getTextContentSize","undefined","TextDecoder","_typeof","ArrayBuffer","isView","decode","payloadText","cleanupPayload","cleanupContentSize","initialized","self","interceptNetworkRequests","onFetch","params","fromEntries","entries","method","preparePayload","cleanRequests","onFetchLoad","req","status","statusText","calcRequestTime","isContentTypeSupported","then","err","onFetchFailed","onOpen","args","onSend","requestHeaders","onError","currentTarget","onLoad","target","responseType","callback","originalFetch","open","XMLHttpRequest","send","gleapSetRequestHeader","setRequestHeader","header","requestId","arguments","bind","apply","fetch","clone","blob","Promise","resolve","reject","fr","FileReader","onload","evt","result","onerror","readAsText","resizeImage","base64Str","maxWidth","maxHeight","isJPEG","img","Image","src","canvas","MAX_WIDTH","MAX_HEIGHT","width","height","getContext","drawImage","toDataURL","isMobile","test","navigator","userAgent","gleapDataParser","String","truncateString","str","num","removeSubDomain","v","parts","is2ndLevelDomain","secondLevel","join","loadFromGleapCache","cachedData","localStorage","getItem","saveToGleapCache","k","setItem","removeItem","runFunctionWhenDomIsReady","readyState","RequestStatus","ChecklistNetworkManager","Map","validationCache","clear","fetchCache","validationRequests","fetchRequests","gleapSessionInstance","session","lang","getActiveLanguage","gleapId","gleapHash","apiUrl","xhr","injectSession","onreadystatechange","responseData","error","outboundId","sharedKey","cacheKey","_createCacheKey","cachedResult","internalId","has","_getApiUrl","Error","set","_getQueryParams","requestPromise","_makeRequest","id","_this2","floor","createCoords","x","y","oppositeSideMap","left","right","bottom","top","oppositeAlignmentMap","start","end","clamp","param","placement","axis","getAxisLength","getAlignmentAxis","alignment","getOppositePlacement","side","padding","expandPaddingObject","rect","computeCoordsFromPlacement","rtl","reference","floating","sideAxis","alignmentAxis","alignLength","isVertical","commonX","commonY","commonAlign","coords","async","detectOverflow","state","options","_await$platform$isEle","platform","rects","elements","strategy","boundary","rootBoundary","elementContext","altBoundary","paddingObject","element","clippingClientRect","getClippingRect","isElement","contextElement","getDocumentElement","offsetParent","getOffsetParent","offsetScale","getScale","elementClientRect","convertOffsetParentRelativeRectToViewportRelativeRect","offset","fn","_middlewareData$offse","_middlewareData$arrow","middlewareData","diffCoords","isRTL","mainAxisMulti","crossAxisMulti","rawValue","mainAxis","crossAxis","convertValueToCoords","arrow","alignmentOffset","getNodeName","node","isNode","nodeName","toLowerCase","getWindow","_node$ownerDocument","ownerDocument","defaultView","documentElement","Node","Element","isHTMLElement","HTMLElement","isShadowRoot","ShadowRoot","isOverflowElement","overflow","overflowX","overflowY","display","isTableElement","isContainingBlock","webkit","isWebKit","css","transform","perspective","containerType","backdropFilter","some","willChange","contain","CSS","supports","isLastTraversableNode","getComputedStyle","getNodeScroll","scrollLeft","scrollTop","pageXOffset","pageYOffset","getParentNode","assignedSlot","parentNode","host","getNearestOverflowAncestor","getOverflowAncestors","list","traverseIframes","_node$ownerDocument2","scrollableAncestor","isBody","win","visualViewport","frameElement","getCssDimensions","parseFloat","hasOffset","offsetWidth","offsetHeight","shouldFallback","$","unwrapElement","domElement","getBoundingClientRect","Number","isFinite","noOffsets","getVisualOffsets","offsetLeft","offsetTop","includeScale","isFixedStrategy","clientRect","scale","visualOffsets","isFixed","floatingOffsetParent","shouldAddVisualOffsets","offsetWin","currentWin","currentIFrame","iframeScale","iframeRect","clientLeft","paddingLeft","clientTop","paddingTop","topLayerSelectors","isTopLayer","selector","matches","getWindowScrollBarX","getClientRectFromClippingAncestor","clippingAncestor","html","clientWidth","clientHeight","visualViewportBased","getViewportRect","scroll","scrollWidth","scrollHeight","direction","getDocumentRect","getInnerBoundingClientRect","hasFixedPositionAncestor","stopNode","position","getRectRelativeToOffsetParent","isOffsetParentAnElement","offsets","offsetRect","getTrueOffsetParent","polyfill","currentNode","getContainingBlock","topLayer","elementClippingAncestors","cache","el","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","ancestor","getClippingElementAncestors","_c","clippingAncestors","firstClippingAncestor","clippingRect","reduce","accRect","getElementRects","getOffsetParentFn","getDimensionsFn","getDimensions","getClientRects","Array","from","autoUpdate","update","ancestorScroll","ancestorResize","elementResize","ResizeObserver","layoutShift","IntersectionObserver","animationFrame","referenceEl","ancestors","forEach","passive","cleanupIo","onMove","timeoutId","io","cleanup","_io","clearTimeout","disconnect","refresh","skip","threshold","rootMargin","isFirstUpdate","handleObserve","ratio","intersectionRatio","setTimeout","observe","observeMove","frameId","reobserveFrame","resizeObserver","firstEntry","unobserve","cancelAnimationFrame","requestAnimationFrame","_resizeObserver","prevRefRect","frameLoop","nextRefRect","_resizeObserver2","removeEventListener","checkMainAxis","checkCrossAxis","limiter","detectOverflowOptions","mainAxisCoord","crossAxisCoord","maxSide","limitedCoords","_middlewareData$flip","initialPlacement","fallbackPlacements","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","flipAlignment","isBasePlacement","oppositePlacement","getExpandedPlacements","isStart","lr","rl","tb","bt","getSideList","map","getOppositeAxisPlacements","placements","overflows","overflowsData","flip","sides","mainAlignmentSide","every","_middlewareData$flip2","_overflowsData$filter","nextIndex","index","nextPlacement","reset","resetPlacement","d","sort","a","_overflowsData$map$so","acc","arrowDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","min$1","center","shouldAddOffset","centerOffset","mergedOptions","platformWithCache","config","middleware","validMiddleware","Boolean","statefulPlacement","resetCount","nextX","nextY","computePosition","checkPageFilter","currentUrl","pageFilter","pageFilterType","removeTrailingSlash","isMatchingUrl","regex","regexPattern","RegExp","generateRegex","matched","startsWith","endsWith","GleapTooltipManager","WeakMap","tooltip","hasAttribute","nextId","tooltipElem","mode","hotspotContainer","canEmbed","firstChild","insertBefore","nextSibling","hotspot","icon","animated","repositionHotspot","elementToTooltipMap","floatingUIInstance","createTooltip","elementToFloatingUIMap","filteredTooltips","getFilteredTooltips","checkForTooltips","tooltips","location","href","page","pageType","querySelectorAll","linkTooltip","sessionInstance","http","sdkKey","console","updateFilteredTooltips","nodeType","ELEMENT_NODE","checkNodeTooltip","childNodes","childNode","processNodeInsertion","_this3","_this4","time","timeout","handleResizeThrottled","updateHotspotPositions","context","_toConsumableArray","observer","MutationObserver","mutations","lastUrl","mutation","addedNodes","removedNodes","floatingUI","childList","subtree","attributes","attributeFilter","_this5","tooltipText","tooltipData","hideTimeout","arrowEl","posX","shift","assign","style","arrowPos","visibility","opacity","pointerEvents","hide","voidElements","Set","tagName","resizeListener","anchor","removeAttribute","tooltipId","getAttribute","posY","offsetX","offsetY","elementRect","range","createRange","selectNodeContents","fixedWidth","anchorRect","tooltipSize","email","userId","phone","onSessionReady","ready","onSessionReadyListener","attemp","retry","GleapEventManager","notifyEvent","useCookies","cookie","eraseGleapCookie","sendMessage","clearAllNotifications","setNotificationCount","GleapBannerManager","removeBannerUI","GleapModalManager","hideModal","isNaN","newTimeout","pow","startSession","_this$session","sessionChanged","days","expires","setTime","toUTCString","setGleapCookie","encodeURIComponent","clearCache","GleapStreamedEvent","restart","tooltipManager","destroy","load","dispatchEvent","CustomEvent","notifySessionReady","sessionCookie","nameEQ","ca","c","charAt","substring","getGleapCookie","sessionData","decodeURIComponent","validateSession","cachedSession","clearSession","userData","checkIfSessionDataNeedsUpdate","userDataKeys","userDataKey","customData","setOnSessionReady","_objectSpread","sdkVersion","SDK_VERSION","ws","userHash","checkIfSessionNeedsUpdate","dataToSend","tourId","tourData","_window","passedPageFilter","sendSessionUpdate","streamEvents","mainLoopTimeout","runEventStreamLoop","streamingEvents","errorCount","streamedEventArray","socket","OPEN","sessionDuration","GleapMetaDataManager","getSessionDuration","events","opened","handleOpenBound","handleOpen","handleErrorBound","handleError","handleMessageBound","handleMessage","handleCloseBound","handleClose","connectionTimeout","pingWS","clearInterval","close","cleanupWebSocket","connectedWebSocketGleapId","WebSocket","wsApiUrl","event","setInterval","processMessage","initWebSocket","message","_message$data","u","listOfActionsWhereIgnoreOpened","filteredActions","action","_action$actionType","actionType","Gleap","performActions","detail","eventArray","cleanupMainLoop","trackInitialEvents","startPageListener","resetErrorCountLoop","logEvent","logCurrentPage","disablePageTracking","log","eventMaxLength","parseIntWithDefault","val","def","parsed","onConfigLoaded","onConfigLoadedListener","aiTools","sendConfigUpdate","cachedConfig","applyConfig","loadConfigFromServer","setStyles","headerColor","buttonColor","backgroundColor","borderRadius","buttonX","buttonY","applyStylesFromConfig","enableWebReplays","GleapReplayRecorder","stop","enableNetworkLogs","setLoadAllResources","sendNetworkResources","networkLogPropsToIgnore","setFilters","networkLogBlacklist","setBlacklist","updateRTLSupport","enableShortcuts","notifyConfigLoaded","_regeneratorRuntime","t","n","Symbol","iterator","asyncIterator","toStringTag","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","arg","h","l","f","GeneratorFunction","GeneratorFunctionPrototype","p","getPrototypeOf","defineIteratorMethods","_invoke","AsyncIterator","invoke","__await","callInvokeWithMethodAndArg","done","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","displayName","isGeneratorFunction","constructor","mark","setPrototypeOf","__proto__","awrap","reverse","pop","prev","rval","handle","complete","finish","delegateYield","asyncGeneratorStep","gen","_next","_throw","info","_asyncToGenerator","documentToHTML","doctype","publicId","systemId","outerHTML","loadCSSUrlResources","basePath","remote","asyncFn","matchedData","matchedUrl","replaceAll","resourcePath","URL","fetchCSSResource","resourceData","promises","_len","_key","promise","all","reader","onloadend","readAsDataURL","fetchItemResource","isBlacklisted","warn","progressResource","replaceStyleNodes","styleSheet","cssTextContent","styleId","cloneTargetNode","ownerNode","replacementNode","head","styleNode","cssText","createTextNode","linkNode","rel","media","getTextContentFromStyleSheet","cssRules","rules","cssRuleItem","downloadAllCSSUrlResources","basePathURL","_loop","styleSheets","mediaText","baseTags","getElementsByTagName","origin","lastIndexOf","replacedStyle","styletext","stylesheet","results","prepareRemoteData","dom","imgItems","imgItemsPromises","item","downloadAllImages","handleAdoptedStyleSheets","doc","shadowNodeId","adoptedStyleSheets","shadowStyleNode","firstElementChild","extractFinalCSSState","getAnimations","animations","finalCSSState","animation","_animation$effect","keyframes","effect","getKeyframes","finalKeyframe","property","deepClone","_callee3","cloneNode","fragment","clonedHead","_context3","_ref2","_callee2","parent","shadowRoot","walkTree","webAnimations","boundingRect","resizedImage","_boundingRect","rootShadowNodeId","_context2","_ref3","_callee","nextn","nextp","innerShadowRoot","_context","nextElementSibling","_x5","_x6","_x7","HTMLCanvasElement","t0","toUpperCase","contains","checked","_x2","_x3","_x4","createDocumentFragment","_x","prepareScreenshotData","_ref4","_callee4","styleTags","linkImportElems","referenceNode","scriptElems","existingBasePath","baseElems","baseUrl","newBaseUrl","baseNode","dialogElems","bbElems","_context4","innerWidth","innerHeight","_x8","_x9","GleapScreenRecorder","rerender","permissionErrorText","mediaDevices","getDisplayMedia","isRecording","available","video","ideal","screen","frameRate","displaySurface","selfBrowserSurface","audio","displayStream","stream","audioMuted","audioAvailable","handleRecord","startAudioRecording","alert","mediaRecorder","recordingTimer","getTracks","track","getUserMedia","voiceStream","getAudioTracks","addTrack","audioErr","audioTracks","enabled","file","recordedChunks","MediaRecorder","mimeType","getSupportedMimeType","recordTime","timerLabel","remainingTime","maxRecordTime","formatTime","stopScreenRecording","ondataavailable","getVideoTracks","onended","prepareRecording","onstop","completeBlob","extension","File","previewVideoElement","createObjectURL","_i","_types","isTypeSupported","screenRecordingData","formdata","FormData","append","fileUrl","GleapFeedback","priority","formData","isSilent","excludeData","spamToken","gleapInstance","GleapCustomDataManager","getCustomData","metaData","getMetaData","consoleLog","GleapConsoleLogManager","getLogs","networkLogs","getRequests","customEventLog","getEventArray","ticketAttributes","getTicketAttributes","dataPromises","webReplay","getGlobalDataItem","isLiveSite","recordingUrlPromise","uploadScreenRecording","recordingUrl","screenRecordingUrl","screenshot","screenshotDataPromise","isLiveMode","screenshotData","snapshotPosition","feedbackData","outbound","tags","GleapTagManager","getTags","keysToExclude","keyToExclude","takeSnapshot","getData","feedback","newTab","newWindow","focus","cmp_block_ignoredomains","injectedFrame","autoWhiteListCookieManager","frameUrl","gleapFrameContainer","gleapFrame","updateFrameStyle","showFrameContainer","closeElement","surveyStyle","extendedStyle","surveyFullStyle","classicStyle","classicStyleLeft","modernStyleLeft","noButtonStyleLeft","allStyles","styleToApply","startCommunication","appHeight","setProperty","handler","urlHandler","innerContainer","escListener","widgetOpened","markerManager","showLoader","loadingClass","disableBGFade","disableBGGradient","updateUI","workThroughQueue","setGlobalDataItem","scrollX","scrollY","updateWidgetStatus","registerEscListener","isSurvey","updateNotificationBadge","runWidgetShouldOpenCallback","injectFrame","isWidgetOpen","resetRoutes","hideMarkerManager","reloadNotificationsFromCache","unregisterEscListener","queue","comReady","contentWindow","postMessage","getSession","getAiTools","overrideLanguage","getOverrideLanguage","GleapMarkerManager","success","workQueue","_this6","addMessageListener","GleapAudioManager","ping","showImage","ticketData","frameHeight","_data$data","startProductTour","GleapCustomActionManager","triggerCustomAction","shareToken","feedbackType","sendFeedback","reportedBy","trackEvent","showDrawingScreen","bannerUrl","listeners","appVersionCode","appBuildNumber","sessionStart","nameOffset","verOffset","ix","nAgt","browserName","appName","fullVersion","appVersion","majorVersion","OSName","browser","systemName","buildVersionNumber","releaseVersionNumber","devicePixelRatio","screenWidth","screenHeight","language","userLanguage","mobile","sdkType","environment","logArray","disabled","originalConsoleLog","logLevel","logMaxLength","addLog","origConsole","addLogWithArgs","GleapClickListener","protocol","preventDefault","handleGleapLink","elementId","elementClass","elemId","elemClass","elementTag","htmlPre","htmlPost","getDOMElementDescription","takeCurrentReplay","eventListeners","eventListener","eventName","customAction","customActionCallbacks","_a","__defProp","__publicField","__defNormalProp","__defProp$1","__publicField$1","__defNormalProp$1","NodeType$3","NodeType2","testableAccessors$1","testableMethods$1","untaintedBasePrototype$1","isAngularZonePresent$1","globalThis","Zone","getUntaintedPrototype$1","defaultObj","defaultPrototype","accessorNames","isUntaintedAccessors","accessor","_a2","_b","getOwnPropertyDescriptor","methodNames","isUntaintedMethods","iframeEl","untaintedObject","removeChild","untaintedAccessorCache$1","getUntaintedAccessor$1","untaintedPrototype","untaintedAccessor","untaintedMethodCache$1","getUntaintedMethod$1","untaintedMethod","index$1","n2","parentElement","textContent","other","getRootNode","selectors","mutationObserver","hostEl","isNativeShadowDom","shadowRoot2","stringifyStylesheet","s2","rules2","sheetHref","stringifiedRules","rule2","stringifyRule","isCSSImportRule","importStringified","statement","layerName","supportsText","escapeImportStatement","absolutifyURLs","ruleStringified","isCSSStyleRule","selectorText","cssStringified","fixSafariColons","Mirror","getId","getMeta","getNode","idNodeMap","getIds","nodeMetaMap","removeNodeFromMap","delete","hasNode","node2","meta","oldNode","maskInputValue","maskInputOptions","maskInputFn","actualType","repeat","ORIGINAL_ATTRIBUTE_NAME","getInputType","extractFileExtension","path","baseURL","pathname","URL_IN_CSS_REF","URL_PROTOCOL_MATCH","URL_WWW_MATCH","DATA_URI","quote1","path1","quote2","path2","path3","filePath","maybeQuote","extractOrigin","stack","part","normalizeCssString","markCssSplits","childNodes2","splits","cssTextNorm","i2","textContentNorm","bit","splitNorm","splitCssText","_id","tagNameRegex","IGNORED_NODE","genId","canvasService","canvasCtx","SRCSET_NOT_SPACES","SRCSET_COMMAS_OR_SPACES","cachedDocument","absoluteToDoc","attributeValue","trim","getHref","isSVGElement","ownerSVGElement","customHref","a2","transformAttribute","pos","collectCharacters","regEx","chars2","exec","output","descriptorsStr","inParens","c2","getAbsoluteSrcsetString","ignoreAttribute","_value","classMatchesRegex","checkAncestors","eIndex","needMaskingText","maskTextClass","maskTextSelector","closest","e2","serializeNode","mirror","mirror2","blockClass","blockSelector","needsMask","inlineStylesheet","maskTextFn","dataURLOptions","inlineImages","recordCanvas","keepIframeSrcFn","newlyAddedElement","cssCaptured","rootId","docId","getRootId","DOCUMENT_NODE","compatMode","Document","DOCUMENT_TYPE_NODE","DocumentType","needBlock","_isBlockedElement","HTMLFormElement","processedTagName","getValidTagName$1","len","attr","_cssText","sheet","selected","rr_open_mode","__context","ctx","x2","getImageData","originalGetImageData","Uint32Array","buffer","pixel","is2DCanvasBlank","rr_dataURL","quality","canvasDataURL","blankCanvas","image","imageSrc","currentSrc","priorCrossOrigin","crossOrigin","recordInlineImage","naturalWidth","naturalHeight","mediaAttributes","rr_mediaState","paused","rr_mediaCurrentTime","currentTime","rr_mediaPlaybackRate","playbackRate","rr_mediaMuted","muted","rr_mediaLoop","loop","rr_mediaVolume","volume","rr_scrollLeft","rr_scrollTop","class","rr_width","rr_height","contentDocument","rr_src","isCustomElement","customElements","isSVG","isCustom","serializeElementNode","TEXT_NODE","parentTagName","textContent2","isStyle","isScript","Text","serializeTextNode","CDATA_SECTION_NODE","CDATA","COMMENT_NODE","Comment","lowerIfExists","maybeAttr","serializeNodeWithId","skipChild","slimDOMOptions","onSerialize","onIframeLoad","iframeLoadTimeout","onStylesheetLoad","stylesheetLoadTimeout","preserveWhiteSpace","_serializedNode","sn","comment","script","as","headFavicon","headMetaDescKeywords","headMetaSocial","headMetaRobots","headMetaHttpEquiv","headMetaAuthorship","headMetaVerification","slimDOMExcluded","serializedNode","recordChild","shadowRootEl","isShadowHost","headWhitespace","bypassOptions","childN","serializedChildNode","isShadow","listener","fired","timer","blankUrl","onceIframeLoaded","iframeDoc","serializedIframeNode","link","styleSheetLoadTimeout","styleSheetLoaded","onceStylesheetLoaded","serializedLinkNode","getDefaultExportFromCjs$1","__esModule","getAugmentedNamespace$1","f2","default","a22","Reflect","construct","picocolors_browser$1","x$1","create$1","isColorSupported","bold","dim","italic","underline","inverse","hidden","strikethrough","black","red","green","yellow","blue","magenta","cyan","white","gray","bgBlack","bgRed","bgGreen","bgYellow","bgBlue","bgMagenta","bgCyan","bgWhite","createColors","picocolors_browserExports$1","require$$2$1","freeze","pico$1","terminalHighlight$1$1","CssSyntaxError$3$1","CssSyntaxError","line","column","source","plugin22","super","reason","plugin","endLine","endColumn","setMessage","captureStackTrace","showSourceCode","aside","lines","index2","number","gutter","spacing","code","cssSyntaxError$1","symbols$1","isClean","my","DEFAULT_RAW$1","after","beforeClose","beforeComment","beforeDecl","beforeOpen","beforeRule","colon","commentLeft","commentRight","emptyBody","indent","semicolon","Stringifier$2$1","builder","atrule","raws","afterName","nodes","block","between","beforeAfter","detect","raw","buf","depth","step","last","child","before","decl","string","important","own","first","root2","rawCache","walk","rawBeforeClose","rawBeforeComment","walkComments","rawBeforeDecl","walkDecls","rawBeforeOpen","rawBeforeRule","rawColon","rawEmptyBody","rawIndent","rawSemicolon","rule","ownSemicolon","stringifier$1","Stringifier$1$1","stringify$4$1","stringify_1$1","isClean$2$1","my$2$1","CssSyntaxError$2$1","Stringifier2$1","stringify$3$1","cloneNode$1","cloned","isArray","Node$4$1","defaults","addToError","postcssNode","input","insertAfter","overrides","cleanRaws","keepBetween","cloneAfter","cloneBefore","opts","rangeBy","getProxyProcessor","toProxy","markDirty","positionBy","stringRepresentation","positionInside","word","endIndex","defaultType","replaceWith","bookmark","foundSelf","result2","toJSON","_","inputs","fixed","emitInputs","inputsNextIndex","inputId","input2","proxyCache","Proxy","stringifier2","proxyOf","node$1","Node$3$1","Declaration$4$1","variable","declaration$1","nonSecure$1","nanoid","random","customAlphabet","alphabet","defaultSize","SourceMapConsumer","SourceMapConsumer$2$1","SourceMapGenerator","SourceMapGenerator$2$1","existsSync","existsSync$1","readFileSync","readFileSync$1","dirname","dirname$1$1","join$1","PreviousMap$2$1","loadAnnotation","inline","startWith","annotation","loadMap","mapFile","consumer","consumerCache","decodeInline","lastMatch","Buffer","atob","encoding","getAnnotationURL","sourceMapString","isMap","mappings","_mappings","sections","comments","loadFile","fromSourceMap","prevPath","withContent","sourcesContent","previousMap$1","SourceMapConsumer$1$1","SourceMapGenerator$1$1","fileURLToPath","fileURLToPath$1","pathToFileURL","pathToFileURL$1$1","isAbsolute","isAbsolute$1","resolve$1$1","nanoid$2","terminalHighlight$2","CssSyntaxError$1$1","PreviousMap$1$1","fromOffsetCache$1","sourceMapAvailable$1$1","pathAvailable$1$1","Input$4$1","hasBOM","mapResolve","fromOffset","lastLine","lineToIndex","prevIndex","l2","mid","sourceRoot","to","fromUrl","originalPositionFor","sourceContentFor","json","input$1","registerInput","SourceMapConsumer$3","SourceMapGenerator$3","dirname$2","relative","relative$1","resolve$2","sep","sep$1","pathToFileURL$2","Input$3$1","sourceMapAvailable$2","pathAvailable$2","mapGenerator$1","stringify2","cssString","mapOpts","originalCSS","usesFileUrls","absolute","memoizedFileURLs","memoizedPaths","memoizedURLs","addAnnotation","content","isInline","toBase64","outputFile","eol","applyPrevMaps","previous","toUrl","applySourceMap","clearAnnotation","generate","generateMap","generateString","ignoreInvalidMapping","addMapping","generated","original","isSourcesContent","setSourcesContent","isAnnotation","noSource","mapping","sourcePath","charCodeAt","cached","previousMaps","already","toFileUrl","setSourceContent","btoa","unescape","fileURL","Node$2$1","Comment$4$1","comment$1","parse$4$1","Rule$4$1","AtRule$4$1","Root$6$1","isClean$1$1","my$1$1","Declaration$3$1","Comment$3$1","Node$1$1","cleanSource$1","markDirtyUp$1","Container$7$1","Container","children","normalize","each","getIterator","indexes","condition","lastEach","cb","exist","existIndex","splice","sample","rebuild","prepend","unshift","removeAll","replaceValues","pattern","props","fast","walkAtRules","walkRules","registerParse","dependant","registerRule","registerAtRule","registerRoot","container$1","LazyResult$4$1","Processor$3$1","Container$6$1","Document$3$1","toResult","registerLazyResult","registerProcessor","document$1$1","Warning$2$1","opt","warning$1","Warning$1$1","Result$3$1","processor2","processor","messages","lastPlugin","postcssPlugin","warning2","warnings","result$1","SINGLE_QUOTE$1","DOUBLE_QUOTE$1","BACKSLASH$1","SLASH$1","NEWLINE$1","SPACE$1","FEED$1","TAB$1","CR$1","OPEN_SQUARE$1","CLOSE_SQUARE$1","OPEN_PARENTHESES$1","CLOSE_PARENTHESES$1","OPEN_CURLY$1","CLOSE_CURLY$1","SEMICOLON$1","ASTERISK$1","COLON$1","AT$1","RE_AT_END$1","RE_WORD_END$1","RE_BAD_BRACKET$1","RE_HEX_ESCAPE$1","Container$5$1","AtRule$3$1","atRule$1","LazyResult$3$1","Processor$2$1","Container$4$1","Root$5$1","ignore","root$1","list$2$1","comma","space","separators","array","current","func","inQuote","prevQuote","escape","letter","list_1$1","Container$3$1","list$1$1","Rule$3$1","sep2","rule$1","Declaration$2$1","tokenizer2$1","quote","escaped","escapePos","currentToken","valueOf","ignoreErrors","returned","unclosed","what","back","token","endOfFile","nextToken","ignoreUnclosed","controlChar","fromCharCode","lastIndex","Comment$2$1","AtRule$2$1","Root$4$1","Rule$2$1","SAFE_COMMENT_NEIGHBOR$1","empty","parser$1","spaces","createTokenizer","unnamedAtrule","init","brackets","tokenizer","getPosition","spacesAndCommentsFromEnd","spacesAndCommentsFromStart","checkMissedSemicolon","tokens","founded","doubleColon","customProperty","findLastWithPosition$1","unknownWord","firstSpaces","precheckMissedSemicolon","stringFrom","spacesFromEnd","emptyRule","unexpectedClose","endFile","unclosedBlock","freeSemicolon","bracket","unclosedBracket","clean","lastTokenType","Container$2$1","Parser2$1","Input$2$1","parse$3$1","parser2","parse_1$1","isClean$3","my$3","MapGenerator$1$1","stringify$2$1","Container$1$1","Document$2$1","Result$2$1","parse$2$1","Root$3$1","TYPE_TO_CLASS_NAME$1","PLUGIN_PROPS$1","AtRule","AtRuleExit","CommentExit","Declaration","DeclarationExit","DocumentExit","Once","OnceExit","prepare","Root","RootExit","Rule","RuleExit","NOT_VISITORS$1","CHILDREN$1","isPromise$1","getEvents$1","toStack$1","eventIndex","visitorIndex","visitors","cleanMarks$1","postcss$2$1","LazyResult$2$1","LazyResult","stringified","processed","syntax","parser","helpers","postcss","plugins","processing","runAsync","onRejected","catch","onFinally","getAsyncError","postcssVersion","prepareVisitors","version","hasListener","runOnRoot","visitTick","visitor","roots","subRoot","sync","stringifier","walkSync","visitSync","onFulfilled","visit2","registerPostcss","lazyResult$1","MapGenerator2$1","stringify$1$1","parse$1$1","Result$1$1","NoWorkResult$1$1","_processor","_css","_opts","_map","generatedCSS","generatedMap","_root","noWorkResult$1","NoWorkResult2$1","LazyResult$1$1","Document$1$1","Root$2$1","Processor$1$1","normalized","process","use","processor$1","Declaration$1$1","PreviousMap2$1","Comment$1$1","AtRule$1$1","Input$1$1","Root$1$1","Rule$1$1","fromJSON$1$1","ownInputs","inputHydrated","fromJSON_1$1","CssSyntaxError2$1","Declaration2$1","LazyResult2$1","Container2$1","Processor2$1","stringify$5","fromJSON$2","Document22","Warning2$1","Comment2$1","AtRule2$1","Result2$1","Input2$1","parse$5","list$3","Rule2$1","Root2$1","Node2$1","postcss$3","initializer","warningPrinted","creator","env","LANG","transformer","processOpts","pluginOpts","fromJSON","atRule","Processor","Warning","Result","Input","postcss_1$1","postcss$1$1","__defProp2","__publicField2","__defNormalProp2","getDefaultExportFromCjs","getAugmentedNamespace","picocolors_browser","picocolors_browserExports","require$$2","pico","terminalHighlight$1","CssSyntaxError$3","CssSyntaxError2","cssSyntaxError","symbols","DEFAULT_RAW","Stringifier$2","Stringifier$1","stringify$4","stringify_1","isClean$2","my$2","CssSyntaxError$2","Stringifier22","stringify$3","Node$4","Node$3","Declaration$4","declaration","nonSecure","SourceMapConsumer$2","SourceMapGenerator$2","dirname$1","PreviousMap$2","previousMap","SourceMapConsumer$1","SourceMapGenerator$1","pathToFileURL$1","resolve$1","terminalHighlight","CssSyntaxError$1","PreviousMap$1","fromOffsetCache","sourceMapAvailable$1","pathAvailable$1","Input$4","Input$3","sourceMapAvailable","pathAvailable","mapGenerator","Node$2","Comment$4","parse$4","Rule$4","AtRule$4","Root$6","isClean$1","my$1","Declaration$3","Comment$3","Node$1","cleanSource","markDirtyUp","Container$7","Container2","container","LazyResult$4","Processor$3","Container$6","Document$3","document$1","Warning$2","warning","Warning$1","Result$3","SINGLE_QUOTE","DOUBLE_QUOTE","BACKSLASH","SLASH","NEWLINE","SPACE","FEED","TAB","CR","OPEN_SQUARE","CLOSE_SQUARE","OPEN_PARENTHESES","CLOSE_PARENTHESES","OPEN_CURLY","CLOSE_CURLY","SEMICOLON","ASTERISK","COLON","AT","RE_AT_END","RE_WORD_END","RE_BAD_BRACKET","RE_HEX_ESCAPE","Container$5","AtRule$3","LazyResult$3","Processor$2","Container$4","Root$5","list$2","list_1","Container$3","list$1","Rule$3","Declaration$2","tokenizer22","Comment$2","AtRule$2","Root$4","Rule$2","SAFE_COMMENT_NEIGHBOR","findLastWithPosition","Container$2","Parser22","Input$2","parse$3","parse_1","MapGenerator$1","stringify$2","Container$1","Document$2","Result$2","parse$2","Root$3","TYPE_TO_CLASS_NAME","PLUGIN_PROPS","NOT_VISITORS","CHILDREN","isPromise","getEvents","toStack","cleanMarks","postcss$2","LazyResult$2","LazyResult2","lazyResult","MapGenerator22","stringify$1","parse$1","Result$1","NoWorkResult$1","noWorkResult","NoWorkResult22","LazyResult$1","Document$1","Root$2","Processor$1","Declaration$1","PreviousMap22","Comment$1","AtRule$1","Input$1","Root$1","Rule$1","fromJSON$1","fromJSON_1","CssSyntaxError22","Declaration22","LazyResult22","Container22","Processor22","Document222","Warning22","Comment22","AtRule22","Result22","Input22","Rule22","Root22","Node22","postcss_1","postcss$1","BaseRRNode","_args","childIterator","_newChild","_refChild","_node","testableAccessors","testableMethods","untaintedBasePrototype","isAngularZonePresent","getUntaintedPrototype","untaintedAccessorCache","getUntaintedAccessor","untaintedMethodCache","getUntaintedMethod","mutationObserverCtor","on","capture","DEPARTED_MIRROR_ACCESS_WARNING","_mirror","throttle","wait","leading","remaining","trailing","hookSetter","isRevoked","patch","replacement","wrapped","defineProperties","__rrweb_original__","receiver","nowTimestamp","getWindowScroll","_d","scrollingElement","getWindowHeight","getWindowWidth","closestElementOfNode","isBlocked","isIgnored","headTitleMutations","isAncestorRemoved","legacy_isTouchEvent","changedTouches","isSerializedIframe","isSerializedStylesheet","hasShadowRoot","StyleSheetMirror","styleIDMap","newId","idStyleMap","getStyle","generateId","getShadowHost","shadowHost","DOCUMENT_FRAGMENT_NODE","shadowHostInDom","rootShadowHost","getRootShadowHost","inDom","EventType","EventType2","IncrementalSource","IncrementalSource2","MouseInteractions","MouseInteractions2","PointerTypes","PointerTypes2","CanvasContext","CanvasContext2","MediaInteractions","MediaInteractions2","NodeType","isNodeInLinkedList","DoubleLinkedList","addNode","__ln","previousSibling","tail","removeNode","moveKey","parentId","MutationBuffer","processMutation","emit","frozen","locked","adds","addedIds","addList","getNextId","ns","pushAdd","parentTag","addedSet","currentN","iframeManager","addIframe","stylesheetManager","trackLinkElement","shadowDomManager","addShadowRoot","iframe","childSn","attachIframe","observeAttachShadow","attachLinkElement","mapRemoves","movedSet","isParentRemoved","removesSubTreeCache","isAncestorInSet","droppedSet","candidate","tailNode","unhandledNode","texts","genTextAreaValueMutation","attribute","diffAsStr","styleDiff","unchangedAsStr","_unchangedStyles","removes","attributeMap","movedMap","mutationCb","textarea","cn","m","oldValue","attributeName","unattachedDoc","implementation","createHTMLDocument","old","pname","newValue","getPropertyValue","newPriority","getPropertyPriority","genAdds","nodeId","isSerialized","deepDelete","n22","processRemoves","processedNodeManager","inOtherBuffer","targetId","canvasManager","unfreeze","isFrozen","lock","unlock","addsSet","_mirror2","_isParentRemoved","_isAncestorInSet","errorHandler","callbackWrapper","rest","mutationBuffers","getEventTarget","composedPath","initMutationObserver","rootEl","mutationBuffer","processMutations","attributeOldValue","characterData","characterDataOldValue","initMouseInteractionObserver","mouseInteractionCb","sampling","mouseInteraction","disableMap","handlers","currentPointerType","eventKey","pointerType","thisEventKey","Mouse","Touch","Pen","MouseDown","MouseUp","Click","clientX","clientY","getHandler","PointerEvent","TouchStart","TouchEnd","initScrollObserver","scrollCb","scrollLeftTop","INPUT_TAGS","lastInputValueMap","getNestedCSSRulePositions","childRule","hasNestedCSSRule","parentRule","CSSGroupingRule","CSSMediaRule","CSSSupportsRule","CSSConditionRule","parentStyleSheet","recurse","getIdAndStyleId","styleMirror","initAdoptedStyleSheetObserver","host2","hostId","patchTarget","originalPropertyDescriptor","_a3","sheets","adoptStyleSheets","initObservers","o2","hooks","currentWindow","mousemoveCb","viewportResizeCb","inputCb","mediaInteractionCb","styleSheetRuleCb","styleDeclarationCb","canvasMutationCb","fontCb","selectionCb","customElementCb","mousemove","viewportResize","mediaInteaction","styleSheetRule","styleDeclaration","canvasMutation","font","selection","customElement","mergeHooks","recordDOM","mousemoveHandler","callbackThreshold","mousemoveCallback","timeBaseline","positions","wrappedCb","totalOffset","timeOffset","updatePosition","DragEvent","Drag","MouseEvent","MouseMove","TouchMove","initMoveObserver","mouseInteractionHandler","scrollHandler","viewportResizeHandler","lastH","lastW","initViewportResizeObserver","inputHandler","ignoreClass","ignoreSelector","userTriggeredOnInput","eventHandler","userTriggered","isTrusted","isChecked","cbWithDedup","text2","v2","lastInputValue","propertyDescriptor","HTMLInputElement","hookProperties","HTMLSelectElement","HTMLTextAreaElement","HTMLOptionElement","initInputObserver","mediaInteractionHandler","Play","Pause","Seeked","VolumeChange","RateChange","initMediaInteractionObserver","styleSheetObserver","adoptedStyleSheetObserver","styleDeclarationObserver","fontObserver","CSSStyleSheet","insertRule","thisArg","argumentsList","addRule","styleBlock","deleteRule","replaceSync","removeRule","supportedNestedCSSRuleTypes","canMonkeyPatchNestedCSSRule","unmodifiedFunctions","typeKey","initStyleSheetObserver","ignoreCSSAttributes","CSSStyleDeclaration","removeProperty","initStyleDeclarationObserver","collectFonts","fontMap","originalFontFace","FontFace","family","descriptors","fontFace","fontSource","Uint8Array","restoreHandler","fonts","initFontObserver","selectionObserver","collapsed","updateSelection","getSelection","isCollapsed","ranges","rangeCount","getRangeAt","startContainer","startOffset","endContainer","endOffset","initSelectionObserver","customElementObserver","initCustomElementObserver","pluginHandlers","plugin3","CrossOriginIframeMirror","generateIdFn","remoteId","idToRemoteMap","remoteToIdMap","idToRemoteIdMap","getIdToRemoteIdMap","remoteIdToIdMap","getRemoteIdToIdMap","getRemoteId","getRemoteIds","ids","iframeIdToRemoteIdMap","iframeRemoteIdToIdMap","IframeManager","wrappedEmit","recordCrossOriginIframes","crossOriginIframeStyleMirror","iframes","crossOriginIframeMap","addLoadListener","loadListener","isAttachIframe","crossOriginMessageEvent","transformedEvent","transformCrossOriginEvent","isCheckout","FullSnapshot","crossOriginIframeMirror","replaceIdOnNode","crossOriginIframeRootIdMap","patchRootIdOnNode","timestamp","IncrementalSnapshot","Mutation","Meta","Load","DomContentLoaded","Plugin","Custom","replaceIds","ViewportResize","MediaInteraction","MouseInteraction","Scroll","CanvasMutation","StyleSheetRule","StyleDeclaration","replaceStyleIds","Font","Selection","AdoptedStyleSheet","styles","iframeMirror","ShadowDomManager","WeakSet","patchAttachShadow","shadowDoms","restoreHandlers","iframeElement","manager","option","sRoot","chars","lookup","i$1","canvasVarMap","saveWebGLVar","isInstanceOfWebGLObject","list2","ctor","contextMap","variableListFor$1","serializeArg","Float32Array","Float64Array","Int32Array","Uint16Array","Int16Array","Int8Array","Uint8ClampedArray","rr_type","base64","arraybuffer","bytes","DataView","byteOffset","byteLength","HTMLImageElement","ImageData","serializeArgs","supportedWebGLConstructorNames","initCanvasContextObserver","setPreserveDrawingBufferToTrue","contextType","ctxName","getNormalizedContextName","contextAttributes","preserveDrawingBuffer","patchGLPrototype","getOwnPropertyNames","recordArgs","hookHandler","setter","encodedJs","WorkerWrapper","objURL","webkitURL","worker","Worker","revokeObjectURL","CanvasManager","latestId","invokeId","rafStamps","pendingCanvasMutations","initCanvasMutationObserver","initCanvasFPSObserver","resetObservers","fps","canvasContextReset","snapshotInProgressMap","onmessage","commands","timeBetweenSnapshots","rafId","lastSnapshotTime","takeCanvasSnapshots","matchedCanvas","getCanvas","getContextAttributes","COLOR_BUFFER_BIT","bitmap","createImageBitmap","startRAFTimestamping","startPendingCanvasMutationFlusher","canvas2DReset","props2D","CanvasRenderingContext2D","initCanvas2DMutationObserver","canvasWebGL1and2Reset","WebGLRenderingContext","WebGL","WebGL2RenderingContext","WebGL2","initCanvasWebGLMutationObserver","flushPendingCanvasMutations","setLatestRAFTimestamp","_values","flushPendingCanvasMutationFor","valuesWithType","type2","StylesheetManager","adoptedStyleSheetCb","linkEl","trackedLinkElements","trackStylesheetInLinkElement","adoptedStyleSheetData","styleIds","CSSRule","r2","_linkEl","ProcessedNodeManager","thisBuffer","buffers","nodeMap","active","takeFullSnapshot$1","recording","cleanFrame","debug","record","checkoutEveryNms","checkoutEveryNth","maskAllInputs","_maskInputOptions","_slimDOMOptions","packFn","mousemoveWait","recordAfter","errorHandler2","inEmittingFrame","passEmitsToParent","month","search","tel","week","select","password","lastFullSnapshotEvent","NodeList","DOMTokenList","polyfill$1","incrementalSnapshotCount","eventProcessor","exceedCount","exceedTime","wrappedMutationEmit","wrappedScrollEmit","wrappedCanvasMutationEmit","getMirror","nodeMirror","slimDOM","snapshot","initialOffset","CustomElement","t2","addCustomEvent","tag","freezePage","takeFullSnapshot","NotStarted","Running","Stopped","customOptions","stopFunction","ContextMenu","DblClick","Focus","Blur","rrwebEvent","stringifiedData","_step","dataURIRegex","_iterator","_createForOfIteratorHelper","matchAll","ensureMaxMessageSize","bufferSize","ScreenDrawer","svgElement","minHeight","mouseDown","colorpicker","fadeOutToolbar","tool","mouseDownPen","mouseDownRect","mouseMove","mouseMovePen","mouseMoveRect","mouseUp","fadeInToolbar","mouseUpPen","mouseUpRect","appendToBuffer","getMousePosition","updateSvgPath","w","abs","startPoint","setAttributeNS","createElementNS","strokeWidthRect","appendPathToSvg","strokeWidth","pt","strPath","touches","totalX","totalY","getAveragePoint","tmpPath","pathBuffer","fadeTarget","GleapScrollStopper","supportsPassive","wheelOpt","scrollDisabled","wheelEvent","preventDefaultForScrollKeys","keyCode","showWidgetUI","formKey","dirty","dialogUI","enableScroll","screenRecorder","unregisterListeners","cleanupMousePointer","screenDrawer","dialog","captureSVG","videoPreviewContainer","dismissUI","colorPicker","borderLayer","captureEditor","dragCursor","setMouseMove","mouseMoveEventHandler","touchMoveEventHandler","dragHandle","dragStart","drag","dragEnd","bugReportingEditor","translateText","pageLeaveListener","isEscape","isEnter","dismiss","showNextStep","returnValue","registerListeners","hideWidgetUI","createEditorUI","setupMousePointer","disableScroll","setupScreenRecording","captureScreenDrawerRerender","setupColorPicker","setupToolbar","selectedColor","colorItems","colorItem","hexColor","onclick","setColor","setPenColor","currentX","currentY","initialX","initialY","toolbar","isDragging","xOffset","yOffset","_getTransformValues","matrix","DOMMatrix","m41","m42","getTransformValues","nextButton","chooseTool","toolbarItem","toolbarTools","setTool","svgClone","toolbarItems","_loop2","toggleAudio","startScreenRecording","removeLastAddedPathFromSvg","itemInactiveClass","screenRecordingTooltip","audioRecordingTooltip","recordingClass","notRecordingClass","clearPreview","captureRenderer","penTips","fill","staticTranslation","staticTranslations","vars","template","localizationOptions","htmlLang","GleapShortcutListener","shortCutListener","char","keyIdentifier","ctrlKey","startFeedbackFlowWithOptions","autostartDrawing","GleapPreFillManager","unreadCount","notificationContainer","notificationsFromCache","unreadNotificationsKey","nots","notification","createdAt","notifications","renderNotifications","updateTabBarNotificationCount","sound","clearElem","currentNewsIndex","newsNotifications","news","otherNotifications","currentIndex","currentNews","newsElem","newsContainerElem","coverImageUrl","newsImageElem","stopPropagation","openNews","newsContentElem","newsTitleElem","getName","descHTML","renderDescription","descElem","paginationElem","pageIndicator","nextBtn","conversation","openConversation","checklist","openChecklist","progress","currentStep","totalSteps","nextStepTitle","sender","profileImageUrl","openNewsArticle","_notification$data","previewText","uiOnly","classLeft","classNoButton","_this$bannerUrl","_this$bannerData","_data$data2","_data$data3","_data$data4","_data$data5","_data$data6","_data$data7","_data$data8","_data$data9","_data$data10","bannerData","format","startBot","botId","startFeedbackFlow","formId","showSurvey","surveyFormat","articleId","openHelpCenterArticle","startChecklist","checklistId","bannerContainer","gleapBFrame","injectBannerUI","_listenForMessages","modalUrl","_this$modalUrl","_data$data11","modalData","primaryColor","_postMessage","modalContainer","wrapper","modalBackdropClickListener","_this2$modalData$show","_this2$modalData","showCloseButton","frame","_injectModalUI","play","settings","Audio","playPromise","getID","getClassSelectors","getClasses","cl","kCombinations","items","getNthChild","sibling","counter","getTag","isUnique","elems","getAllSelectors","attributesToIgnore","funcs","sum","getAttributes","res","testUniqueness","getFirstUnique","getUniqueCombination","combinations","getCombinations","firstUnique","combination","getUniqueSelector","selectorTypes","excludeRegex","foundSelector","elementSelectors","ID","Class","selectorType","Tag","Classes","Attributes","NthChild","unique","_step2","_options$selectorType","_options$attributesTo","_options$excludeRegex","allSelectors","parents","currentElement","getParents","_iterator2","_allSelectors","it","ElementOverlay","overlay","background","borderColor","borderStyle","borderWidth","boxSizing","cursor","zIndex","margin","shadowContainer","attachShadow","_createClass","useShadowDOM","usingShadowDOM","setBounds","bounds","ElementPicker","overlayOptions","handleMouseMove","handleClick","tick","addToDOM","removeFromDOM","mouseX","mouseY","tickReq","stopImmediatePropagation","onClick","updateTarget","ignoreCursor","newTarget","elementFromPoint","captureCursor","elementFilter","onHover","GleapAdminHelper","picker","stopPicker","onElementPicked","startPicker","GleapAdminManager","COLLAPSE_UI_ACTIVE_CLASS","FRAME_CONTAINER_ACTIVE_CLASS","isActive","activeClass","gleapCollapseUI","toggle","injectedCollapseUI","toggleCollapseUI","_this$configData","configData","sendMessageToTourBuilder","GleapProductTours","disable","adminHelper","injectCollapseUI","setFrameHeight","gleapAdminDisabled","initAdminHelper","currentPage","click","opener","GleapTours","currentConfig","configure","animate","allowClose","overlayOpacity","smoothScroll","disableActiveInteraction","showProgress","stagePadding","stageRadius","popoverOffset","showButtons","disableButtons","overlayColor","getConfig","easeInOutQuad","elapsed","initialValue","amountOfChange","getFocusableElements","parentEls","focusableQuery","flatMap","parentEl","isParentFocusable","focusableEls","isElementVisible","bringInView","isElementInView","shouldSmoothScroll","scrollIntoView","behavior","hasScrollableParent","currentState","setState","getState","resetState","registeredListeners","listen","hook","trackActiveElement","activeStagePosition","renderOverlay","mountOverlay","stagePosition","overlaySvg","stage","windowX","windowY","svg","fillRule","clipRule","strokeLinejoin","strokeMiterlimit","stagePath","generateStageSvgPathString","createOverlaySvg","onDriverClick","pathElement","stageWidth","stageHeight","limitedRadius","normalizedRadius","highlightBoxX","highlightBoxY","highlightBoxWidth","highlightBoxHeight","highlight","attemptTime","elemObj","refactoredElement","hidePopover","existingDummy","getElementById","mountDummyElement","toElement","toStep","_toStep$disableActive","fromStep","fromElement","isFirstHighlight","isToDummyElement","isFromDummyElement","isAnimatedTour","highlightStartedHook","onHighlightStarted","highlightedHook","onHighlighted","deselectedHook","onDeselected","hasDelayedPopover","isPopoverRendered","isHalfwayThrough","popover","renderPopover","fromDefinition","toDefinition","transitionStage","transferHighlight","refreshActiveHighlight","activeHighlight","activeStep","refreshOverlay","repositionPopover","requireRefresh","resizeTimeout","trapFocus","activeElement","popoverEl","firstFocusableEl","lastFocusableEl","shiftKey","previousFocusableEl","nextFocusableEl","onKeyup","shouldPreventDefault","listenerWrapper","listener2","useCapture","title","description","closeButton","footer","footerButtons","previousButton","createPopover","_ref2$nextBtnText","nextBtnText","_ref2$prevBtnText","prevBtnText","_ref2$progressText","progressText","showButtonsConfig","showProgressConfig","showFooter","disabledButtonsConfig","popoverWrapper","customPopoverClass","popoverClass","_b2","onNextClick","onPrevClick","onCloseClick","onPopoverRender","focusableElement","getPopoverDimensions","boundingClientRect","realWidth","realHeight","calculateTopForLeftRight","elementDimensions","popoverDimensions","popoverPadding","popoverArrowDimensions","calculateLeftForTopBottom","_ref3$align","align","_ref3$side","requiredAlignment","requiredSide","topValue","isTopOptimal","bottomValue","isBottomOptimal","leftValue","isLeftOptimal","rightValue","isRightOptimal","noneOptimal","popoverRenderedSide","leftToSet","topToSet","leftValue2","rightToSet","bottomToSet","popoverArrow","popoverWidth","windowWidth","elementWidth","elementLeft","popoverHeight","windowHeight","elementTop","elementHeight","arrowSide","arrowAlignment","renderPopoverArrow","moveNext","activeIndex","steps","nextStepIndex","drive","movePrevious","previousStepIndex","handleArrowLeft","handleArrowRight","_e","_f","_g","_h","stepIndex","hasNextStep","hasPreviousStep","doneBtnText","allowsClosing","progressTextReplaced","configuredButtons","calculatedButtons","withOnDestroyStartedHook","activeOnDestroyed","onDestroyStarted","onDestroyed","destroyPopover","destroyHighlight","isActiveDummyElement","setConfig","setSteps","getActiveIndex","isFirstStep","isLastStep","getActiveStep","getActiveElement","getPreviousElement","getPreviousStep","moveTo","_defineProperties","descriptor","_toPropertyKey","toPrimitive","_toPrimitive","localStorageKey","pointerContainerId","copilotJoinedContainerId","_canPlayAudio","GleapCopilotTours","Constructor","_scrollListeners","_currentAnchor","_currentStep","_scrollDebounceTimer","productTourId","currentActiveIndex","productTourData","updatePointerPosition","protoProps","staticProps","onCompleteCallback","scrollableAncestors","getScrollableAncestors","_pointerContainer","yPosition","targetScrollPosition","scrollTo","smoothScrollToY","removeScrollListeners","pollCount","updateFinalPosition","isElementFullyVisible","targetX","targetY","containerWidthSpace","attachScrollListeners","currentAudio","pause","copilotInfoContainer","_GleapConfigManager$g","_GleapConfigManager$g2","_this$productTourData3","_this$productTourData4","_this$productTourData5","_this$productTourData6","_this$productTourData","_this$productTourData2","contrastColor","playVoice","gradient","svgMouse","infoBubble","kaiAvatar","kaiSlug","completeTour","canPlayAudio","supported","setupCopilotTour","showUnmuteModal","showAudioUnmuteModal","renderNextStep","_this$productTourData7","_this$productTourData8","_this$productTourData9","modalOverlay","modal","unmuteModalTitle","unmuteButton","unmuteModalButton","startAnywayButton","unmuteModalContinue","_this7","handleStep","gotToNextStep","_currentStep$inputTyp","proceedClickmode","storeUncompletedTour","inputType","handleInputEvent","_e$target","once","_currentStep$inputVal","inputValue","typeCharacter","wave","performClickAnimation","tempDiv","htmlToPlainText","readTime","wordCount","ceil","estimateReadTime","continueWithNoAudio","voice","elementPromise","maxAttempts","attempts","interval","waitForElement","_self$productTourData","tourType","gleapTourObj","delay","manually","validateProductTour","onComplete","comData","clearUncompletedTour","startWithConfig","unmuted","driverSteps","isClickMode","isInputMode","hasSender","videoUrl","senderHTML","firstName","driverStep","buttons","backButton","allowKeyboardControl","nextText","doneText","prevText","_config$state","onDocumentClick","popoverElement","mediaElements","performRequentialRefresh","mediaElement","playingClass","playPauseContainer","videoElement","videoContainer","clickVideo","evnt","gleapTourPopover","_evnt$target","__originalGetContext","GleapChecklist","_HTMLElement","_assertThisInitialized","_callSuper","handleChecklistUpdate","handleSessionUpdate","_networkManager","_boundFloatingLauncherClick","handleFloatingLauncherClick","_boundFloatingCloseClick","handleFloatingCloseClick","_floatingHideTimeout","_inherits","_boundHandleChecklistUpdate","_boundHandleSessionUpdate","_boundResizeHandler","handleResize","_checkSessionAndLoad","removeFloatingClickListeners","checklistData","_hasLoaded","_isSessionReady","_initialActiveSet","renderResponse","updateActiveTaskMaxHeight","loadChecklist","renderChecklist","_getGleapSessionInstance","hasChecklistId","defaultValue","translateTextWithVars","validateChecklist","_isMock","isConnected","fetchChecklist","_isInitialLoad","_this3$checklistData$","_data$outbound","completedSteps","firstIncompleteIndex","findIndex","_session$gleapId","_session$gleapHash","checkedStep","makeRequest","updateData","_this$checklistData$o3","previousCompletedSteps","dataChanged","activeStepCompleted","currentlyActiveStepIndex","_this$checklistData$o","activeStepId","_this$checklistData$o2","nextActiveStep","setActiveStep","tasks","launcher","_outbound$config","_this$checklistData","renderDoneState","progressbarEnabled","doneSteps","_outbound$config2","_outbound$config3","nextIncompleteStep","titleText","_translateWithVars","subject","subtitleText","successTitle","successMessage","circumference","PI","computedOffset","isHeader","toFixed","_outbound$sender","infoEnabled","_translate","senderHtml","progressLabel","durationLabel","isTaskDone","badge","getCheckIcon","stepTitle","stepDescription","actionButtonText","actionTitle","actionHtml","markDoneLabel","markDoneHtml","allowMarkDone","taskClasses","_outbound$config4","_outbound$config5","_outbound$config6","floatingEnabled","renderFloatingLauncher","renderInfoSection","renderProgressSection","renderTasks","addTaskEventListeners","addFloatingClickListeners","toggleTask","taskBodyInner","task","newActiveStep","markDoneBtn","_this5$checklistData","previouslyActiveStep","_this5$checklistData$","stepId","allSteps","isModalOpen","tasksModal","_this5$checklistData$2","updateChecklist","actionBtn","_this5$checklistData2","actionBody","openURL","actionOpenInNewTab","gleapError","previousActiveStep","tasksToToggle","forceOpen","taskElement","isOpen","shouldOpen","taskBody","_wrapNativeSuper","registerGleapChecklist","offlineMode","hostname","injectNotificationUI","actions","_action$data","popupType","disableInAppNotifications","showNotification","showBanner","showModal","startProductTourWithConfig","globalData","replayData","getReplayData","setTags","setUrlHandler","tools","setAiTools","updateContainerHeight","initialHeight","fixGleapHeight","checkForUncompletedTour","checkForUrlParams","urlParams","URLSearchParams","widget","conversationFlow","startConversation","feedbackFlow","surveyFlow","surveyFlowFormat","tourDelay","identifySession","updateSession","setMaxRequests","setOptions","cleanedData","formPreFill","toggleFeedbackButton","setAppVersionCode","setAppBuildNumber","setBannerUrl","setModalUrl","setTicketAttribute","unsetTicketAttribute","clearTicketAttributes","attachCustomData","setCustomData","removeCustomData","clearCustomData","playSound","showNotificationBadge","notificationInstance","setOverrideLanguage","softReInitialize","updateContact","registerCustomAction","buttonStyle","contrastButtonColor","contrastBackgroundColor","contrastHeaderColor","isDarkMode","headerDarkColor","subTextColor","backgroundColorHover","hoverHoverColor","buttonBorderRadius","containerRadius","chatRadius","formItemBorderRadius","formItemSmallBorderRadius","bottomInfoOffset","colorStyleSheet","zIndexBase","injectStyledCSS","replays","attachments","sendSilentCrashReportWithFormData","silentCrashReportSent","excludeDataCleaned","newFormData","hideBackButton","showBackButton","flow","collectionId","term","networkManager","checkStartUrl","startProductTourConfig","startURL","loadUncompletedTour","GleapActions","GLAction","urlParts","identifier","openHelpCenterCollection"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"index.js","mappings":"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","sources":["webpack://Gleap/webpack/universalModuleDefinition","webpack://Gleap/webpack/bootstrap","webpack://Gleap/webpack/runtime/define property getters","webpack://Gleap/webpack/runtime/hasOwnProperty shorthand","webpack://Gleap/./src/GleapFeedbackButtonManager.js","webpack://Gleap/./src/UI.js","webpack://Gleap/./src/GleapNetworkIntercepter.js","webpack://Gleap/./src/GleapHelper.js","webpack://Gleap/./src/ChecklistNetworkManager.js","webpack://Gleap/./node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","webpack://Gleap/./node_modules/@floating-ui/core/dist/floating-ui.core.mjs","webpack://Gleap/./node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","webpack://Gleap/./node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","webpack://Gleap/./src/GleapPageFilter.js","webpack://Gleap/./src/GleapTooltipManager.js","webpack://Gleap/./src/GleapSession.js","webpack://Gleap/./src/GleapStreamedEvent.js","webpack://Gleap/./src/GleapConfigManager.js","webpack://Gleap/./src/ScreenCapture.js","webpack://Gleap/./src/ResourceExclusionList.js","webpack://Gleap/./src/GleapScreenRecorder.js","webpack://Gleap/./src/GleapFeedback.js","webpack://Gleap/./src/GleapFrameManager.js","webpack://Gleap/./src/GleapMetaDataManager.js","webpack://Gleap/./src/GleapConsoleLogManager.js","webpack://Gleap/./src/GleapClickListener.js","webpack://Gleap/./src/GleapCustomDataManager.js","webpack://Gleap/./src/GleapEventManager.js","webpack://Gleap/./src/GleapCustomActionManager.js","webpack://Gleap/./node_modules/@rrweb/record/dist/record.js","webpack://Gleap/./src/GleapReplayRecorder.js","webpack://Gleap/./src/ScreenDrawer.js","webpack://Gleap/./src/GleapScrollStopper.js","webpack://Gleap/./src/GleapMarkerManager.js","webpack://Gleap/./src/GleapTranslationManager.js","webpack://Gleap/./src/GleapShortcutListener.js","webpack://Gleap/./src/GleapPreFillManager.js","webpack://Gleap/./src/GleapNotificationManager.js","webpack://Gleap/./src/GleapBannerManager.js","webpack://Gleap/./src/GleapModalManager.js","webpack://Gleap/./src/GleapAudioManager.js","webpack://Gleap/./src/GleapTagManager.js","webpack://Gleap/./src/unique-selector/src/getID.js","webpack://Gleap/./src/unique-selector/src/getClasses.js","webpack://Gleap/./src/unique-selector/src/getCombinations.js","webpack://Gleap/./src/unique-selector/src/isElement.js","webpack://Gleap/./src/unique-selector/src/getNthChild.js","webpack://Gleap/./src/unique-selector/src/getTag.js","webpack://Gleap/./src/unique-selector/src/isUnique.js","webpack://Gleap/./src/unique-selector/src/unique-selector.js","webpack://Gleap/./src/unique-selector/src/getAttributes.js","webpack://Gleap/./src/unique-selector/src/getParents.js","webpack://Gleap/./src/ElementPicker.js","webpack://Gleap/./src/GleapAdminHelper.js","webpack://Gleap/./src/GleapAdminManager.js","webpack://Gleap/./src/GleapTours.js","webpack://Gleap/./src/GleapCopilotTours.js","webpack://Gleap/./src/GleapProductTours.js","webpack://Gleap/./src/Gleap.js","webpack://Gleap/./src/GleapChecklist.js","webpack://Gleap/./src/index.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Gleap\"] = factory();\n\telse\n\t\troot[\"Gleap\"] = factory();\n})(this, () => {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","import {\n GleapFrameManager,\n GleapConfigManager,\n GleapNotificationManager,\n GleapTranslationManager,\n GleapSession,\n} from \"./Gleap\";\nimport { loadIcon } from \"./UI\";\n\nexport default class GleapFeedbackButtonManager {\n feedbackButton = null;\n injectedFeedbackButton = false;\n buttonHidden = null;\n lastButtonIcon = null;\n\n // Feedback button types\n static FEEDBACK_BUTTON_BOTTOM_RIGHT = \"BOTTOM_RIGHT\";\n static FEEDBACK_BUTTON_BOTTOM_LEFT = \"BOTTOM_LEFT\";\n static FEEDBACK_BUTTON_CLASSIC = \"BUTTON_CLASSIC\";\n static FEEDBACK_BUTTON_CLASSIC_LEFT = \"BUTTON_CLASSIC_LEFT\";\n static FEEDBACK_BUTTON_CLASSIC_BOTTOM = \"BUTTON_CLASSIC_BOTTOM\";\n static FEEDBACK_BUTTON_NONE = \"BUTTON_NONE\";\n\n // GleapFeedbackButtonManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapFeedbackButtonManager();\n }\n return this.instance;\n }\n\n destroy() {\n if (this.feedbackButton) {\n this.feedbackButton.remove();\n this.feedbackButton = null;\n }\n\n this.buttonHidden = null;\n this.lastButtonIcon = null;\n this.injectedFeedbackButton = false;\n this.instance = null;\n }\n\n /**\n * Toggles the feedback button visibility.\n * @param {*} show\n * @returns\n */\n toggleFeedbackButton(show) {\n this.buttonHidden = !show;\n\n GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n GleapNotificationManager.getInstance().updateContainerStyle();\n }\n\n feedbackButtonPressed() {\n var frameManager = GleapFrameManager.getInstance();\n if (frameManager.isOpened()) {\n frameManager.hideWidget();\n } else {\n frameManager.setAppMode(\"widget\");\n frameManager.showWidget();\n }\n }\n\n /**\n * Injects the feedback button into the current DOM.\n */\n injectFeedbackButton() {\n if (this.injectedFeedbackButton) {\n return;\n }\n this.injectedFeedbackButton = true;\n\n var elem = document.createElement(\"div\");\n elem.addEventListener(\"click\", () => {\n this.feedbackButtonPressed();\n });\n document.body.appendChild(elem);\n this.feedbackButton = elem;\n\n this.updateFeedbackButtonState();\n }\n\n updateNotificationBadge(count) {\n const notificationBadge = document.querySelector(\".bb-notification-bubble\");\n if (!notificationBadge) {\n return;\n }\n\n const notificationHiddenClass = \"bb-notification-bubble--hidden\";\n if (count > 0 && !GleapFrameManager.getInstance().isOpened()) {\n notificationBadge.classList.remove(notificationHiddenClass);\n notificationBadge.innerText = count;\n } else {\n notificationBadge.classList.add(notificationHiddenClass);\n }\n }\n\n refresh() {\n const feedbackButton = document.querySelector(\".bb-feedback-button\");\n if (feedbackButton) {\n this.updateFeedbackButtonText();\n this.updateFeedbackButtonState();\n } else {\n this.injectedFeedbackButton = false;\n this.feedbackButton = null;\n this.buttonHidden = null;\n this.lastButtonIcon = null;\n this.injectFeedbackButton();\n }\n }\n\n updateFeedbackButtonText() {\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n\n if (\n !(\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT\n )\n ) {\n return;\n }\n\n const feedbackButton = document.querySelector(\n \".bb-feedback-button-classic\"\n );\n if (!feedbackButton) {\n return;\n }\n\n feedbackButton.innerText = flowConfig.widgetButtonText;\n }\n\n /**\n * Updates the feedback button state\n * @returns\n */\n updateFeedbackButtonState() {\n if (this.feedbackButton === null) {\n return;\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n\n var buttonIcon = \"\";\n if (flowConfig.buttonLogo) {\n buttonIcon = `\"Feedback`;\n } else {\n buttonIcon = loadIcon(\"button\", \"#fff\");\n }\n\n this.feedbackButton.className = \"bb-feedback-button gleap-font gl-block\";\n this.feedbackButton.setAttribute(\n \"dir\",\n GleapTranslationManager.getInstance().isRTLLayout ? \"rtl\" : \"ltr\"\n );\n\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT\n ) {\n this.feedbackButton.classList.add(\n \"bb-feedback-button--classic-button-style\"\n );\n\n this.feedbackButton.innerHTML = `
${flowConfig.widgetButtonText}
`;\n } else {\n if (buttonIcon !== this.lastButtonIcon) {\n this.feedbackButton.innerHTML = `
${buttonIcon}${loadIcon(\n \"arrowdown\",\n \"#fff\"\n )}
`;\n }\n }\n\n // Prevent dom update if not needed.\n this.lastButtonIcon = buttonIcon;\n\n var hideButton = false;\n if (GleapFeedbackButtonManager.getInstance().buttonHidden === null) {\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_NONE\n ) {\n hideButton = true;\n }\n } else {\n if (GleapFeedbackButtonManager.getInstance().buttonHidden) {\n hideButton = true;\n }\n }\n if (hideButton) {\n this.feedbackButton.classList.add(\"bb-feedback-button--disabled\");\n }\n\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_BOTTOM_LEFT\n ) {\n this.feedbackButton.classList.add(\"bb-feedback-button--bottomleft\");\n }\n\n if (GleapFrameManager.getInstance().isOpened()) {\n this.feedbackButton.classList.add(\"bb-feedback-button--open\");\n }\n\n const appMode = GleapFrameManager.getInstance().appMode;\n if (\n appMode === \"survey\" ||\n appMode === \"survey_full\" ||\n appMode === \"survey_web\"\n ) {\n this.feedbackButton.classList.add(\"bb-feedback-button--survey\");\n }\n\n if (\n flowConfig.hideForGuests === true &&\n !GleapSession.getInstance().isUser()\n ) {\n this.feedbackButton.classList.add(\"bb-feedback-button--hidden\");\n }\n }\n}\n","import GleapFeedbackButtonManager from \"./GleapFeedbackButtonManager\";\n\nconst calculateShadeColor = function (col, amt) {\n col = col.replace(/^#/, \"\");\n if (col.length === 3)\n col = col[0] + col[0] + col[1] + col[1] + col[2] + col[2];\n\n let [r, g, b] = col.match(/.{2}/g);\n [r, g, b] = [\n parseInt(r, 16) + amt,\n parseInt(g, 16) + amt,\n parseInt(b, 16) + amt,\n ];\n\n r = Math.max(Math.min(255, r), 0).toString(16);\n g = Math.max(Math.min(255, g), 0).toString(16);\n b = Math.max(Math.min(255, b), 0).toString(16);\n\n const rr = (r.length < 2 ? \"0\" : \"\") + r;\n const gg = (g.length < 2 ? \"0\" : \"\") + g;\n const bb = (b.length < 2 ? \"0\" : \"\") + b;\n\n return `#${rr}${gg}${bb}`;\n};\n\nexport const calculateContrast = (hex) => {\n var r = parseInt(hex.substr(1, 2), 16),\n g = parseInt(hex.substr(3, 2), 16),\n b = parseInt(hex.substr(5, 2), 16),\n yiq = (r * 299 + g * 587 + b * 114) / 1000;\n return yiq >= 160 ? \"#000000\" : \"#ffffff\";\n};\n\nexport const widgetMaxHeight = 700;\n\nexport const injectStyledCSS = (\n primaryColor,\n headerColor,\n buttonColor,\n borderRadius,\n backgroundColor,\n buttonX,\n buttonY,\n buttonStyle\n) => {\n const contrastColor = calculateContrast(primaryColor);\n const contrastButtonColor = calculateContrast(buttonColor);\n const contrastBackgroundColor = calculateContrast(backgroundColor);\n const contrastHeaderColor = calculateContrast(headerColor);\n const isDarkMode = contrastBackgroundColor === \"#ffffff\";\n const headerDarkColor = calculateShadeColor(\n headerColor,\n contrastHeaderColor === \"#ffffff\" ? -35 : -15\n );\n const subTextColor = isDarkMode\n ? calculateShadeColor(backgroundColor, 100)\n : calculateShadeColor(backgroundColor, -120);\n const backgroundColorHover = isDarkMode\n ? calculateShadeColor(backgroundColor, 30)\n : calculateShadeColor(backgroundColor, -12);\n const hoverHoverColor = isDarkMode\n ? calculateShadeColor(backgroundColor, 80)\n : calculateShadeColor(backgroundColor, -30);\n\n var borderRadius = parseInt(borderRadius, 10);\n const buttonBorderRadius = Math.round(borderRadius * 1.05);\n const containerRadius = Math.round(borderRadius * 0.8);\n const chatRadius = Math.round(borderRadius * 0.6);\n const formItemBorderRadius = Math.round(borderRadius * 0.4);\n const formItemSmallBorderRadius = Math.round(borderRadius * 0.25);\n const zIndexBase = 2147483600;\n\n var bottomInfoOffset = 57 + buttonY;\n if (\n buttonStyle === GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM\n ) {\n bottomInfoOffset = buttonY + 15;\n } else if (buttonStyle && buttonStyle.includes(\"CLASSIC\")) {\n bottomInfoOffset = buttonY;\n } else if (buttonStyle === GleapFeedbackButtonManager.FEEDBACK_BUTTON_NONE) {\n bottomInfoOffset = buttonY;\n }\n\n const colorStyleSheet = `\n .gleap-font, .gleap-font * {\n font-style: normal;\n font-variant-caps: normal;\n font-variant-ligatures: normal;\n font-variant-numeric: normal;\n font-variant-east-asian: normal;\n font-weight: normal;\n font-stretch: normal;\n font-size: 100%;\n line-height: 1;\n font-family: system-ui, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n }\n .gleap-input-highlight {\n box-shadow: 0 0 0 3px ${primaryColor} !important;\n }\n .gleap-frame-container {\n right: ${buttonX}px;\n bottom: ${61 + buttonY}px;\n width: calc(100% - 40px);\n max-width: 410px;\n position: fixed;\n z-index: ${zIndexBase + 31};\n visibility: visible;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.16);\n border-radius: ${containerRadius}px;\n overflow: hidden;\n animation-duration: .3s;\n animation-fill-mode: both;\n animation-name: gleapFadeInUp;\n user-select: none;\n pointer-events: none;\n transition: max-width 0.3s ease-out;\n }\n\n .gleap-admin-highlight {\n box-shadow: 0px 0px 0px 4px red;\n }\n\n :root {\n --gleap-margin-top: 50px;\n }\n\n .gleap-tooltip-anchor {\n position: relative;\n display: inline-block;\n float: left;\n max-width: 0px;\n width: 17px;\n }\n\n .gleap-tooltip-hotspot {\n position: absolute;\n display: block;\n width: 17px;\n height: 17px;\n cursor: pointer;\n top: 0px;\n left: 0px;\n }\n\n @keyframes gleap-pulse {\n 0% {\n transform: scale(0);\n opacity: 0.25;\n }\n 45% {\n transform: scale(2.5);\n opacity: 0;\n }\n 100% {\n transform: scale(0);\n opacity: 0;\n }\n }\n\n .gleap-tooltip-hotspot-animation {\n position: absolute;\n border-radius: 17px;\n opacity: 0.25;\n display: block;\n width: 17px;\n height: 17px;\n cursor: pointer;\n top: 0px;\n left: 0px;\n animation: gleap-pulse 5s infinite;\n }\n\n .gleap-tooltip-hotspot svg {\n width: 17px;\n height: 17px;\n object-fit: contain;\n display: block;\n }\n\n .gleap-tooltip-inner {\n position: relative;\n overflow: visible;\n font-size: 14px;\n font-weight: normal;\n color: #000;\n line-height: 1.3;\n }\n\n .gleap-tooltip {\n position: absolute;\n background-color: #fff;\n color: #000;\n font-size: 15px;\n line-height: 18px;\n padding: 16px;\n padding-top: 8px;\n padding-bottom: 8px;\n border-radius: 4px;\n max-width: min(350px, 80vw);\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n opacity: 0;\n visibility: hidden;\n transition: opacity 0.2s, visibility 0.2s;\n z-index: ${zIndexBase + 100};\n }\n\n .gleap-tooltip a {\n color: ${primaryColor};\n text-decoration: underline;\n display: inline !important;\n margin: 0px !important;\n padding: 0px !important;\n word-break: break-word;\n }\n\n .gleap-tooltip ul {\n padding-left: 16px;\n }\n\n .gleap-tooltip b {\n font-weight: 600;\n }\n\n .gleap-tooltip h2 {\n font-size: 18px;\n line-height: 20px;\n font-weight: 600;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip h3 {\n font-size: 16px;\n line-height: 18px;\n font-weight: 600;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip p {\n padding: 0px;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip img {\n max-width: 100%;\n max-height: 300px;\n width: 100%;\n height: auto;\n object-fit: cover;\n margin-top: 8px;\n margin-bottom: 8px;\n border-radius: 4px;\n }\n\n .gleap-tooltip iframe,\n .gleap-tooltip video {\n max-width: 100%;\n width: 100%;\n height: auto;\n min-height: 200px;\n display: block;\n border: none;\n outline: none;\n padding: 0px;\n margin-top: 8px;\n margin-bottom: 8px;\n border-radius: 4px;\n }\n\n .gleap-tooltip-arrow {\n position: absolute;\n width: 20px;\n height: 20px;\n }\n\n .gleap-tooltip-arrow svg {\n width: 20px;\n height: 20px;\n object-fit: contain;\n }\n\n .gleap-b-frame {\n width: 100%;\n height: 100%;\n border: none;\n pointer-events: auto;\n padding: 0px;\n margin: 0px;\n }\n\n .gleap-b-shown {\n transition: margin 0.3s ease-out;\n margin-top: var(--gleap-margin-top);\n position: relative;\n z-index: 10000;\n }\n\n .gleap-b-f {\n margin-top: 0px;\n }\n\n .gleap-b {\n display: none;\n position: absolute;\n top: calc(-1 * var(--gleap-margin-top));\n left: 0px;\n width: 100vw;\n height: var(--gleap-margin-top);\n z-index: ${zIndexBase + 99};\n }\n\n @keyframes gleapSlideIn {\n from {\n top: calc(-1 * var(--gleap-margin-top));\n }\n to {\n top: 10px;\n }\n }\n\n .gleap-b-f .gleap-b {\n position: fixed;\n top: 10px;\n animation: gleapSlideIn .25s ease-out forwards;\n max-width: 800px;\n width: calc(100% - 20px);\n left: 50%;\n z-index: ${zIndexBase + 99};\n transform: translateX(-50%);\n border-radius: ${formItemBorderRadius}px;\n overflow: hidden;\n box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.15), 0px 5px 5px rgba(0, 0, 0, 0.05);\n }\n\n .gleap-b-shown .gleap-b {\n display: block;\n }\n\n .gleap-image-view {\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n z-index: ${zIndexBase + 99};\n background-color: ${contrastBackgroundColor}cc;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .gleap-image-view-image {\n width: 90%;\n height: auto;\n max-width: 90%;\n max-height: 90%;\n object-fit: contain;\n }\n\n .gleap-image-view-close {\n position: fixed;\n top: 20px;\n right: 20px;\n width: 32px;\n height: 32px;\n opacity: 0.8;\n z-index: ${zIndexBase + 140};\n box-shadow: 0px 5px 18px rgba(0, 0, 0, 0.16);\n cursor: pointer;\n }\n\n .gleap-image-view-close:hover {\n opacity: 1;\n }\n\n .gleap-image-view-close svg path {\n fill: ${backgroundColor};\n }\n\n [dir=rtl].gleap-frame-container {\n right: auto;\n left: ${buttonX}px;\n bottom: ${61 + buttonY}px;\n }\n\n .gleap-frame-container--loading iframe {\n opacity: 0;\n }\n\n .gleap-frame-container--loading::before {\n content: \" \";\n position: fixed;\n top: 0px;\n left: 0px;\n right: 0px;\n height: 100%;\n max-height: 380px;\n background: linear-gradient(\n 130deg,\n ${headerDarkColor} 0%,\n ${headerColor} 100%\n );\n }\n \n .gleap-frame-container--loading::after {\n content: \" \";\n position: fixed;\n top: 0px;\n left: 0px;\n right: 0px;\n height: 100%;\n height: 100%;\n max-height: 380px;\n background: linear-gradient(\n 180deg,\n transparent 60%,\n ${backgroundColor}1A 70%,\n ${backgroundColor} 100%\n );\n }\n\n .gleap-frame-container--loading-nogradient::before {\n max-height: 340px;\n background: ${headerColor} !important;\n }\n\n .gleap-frame-container--loading-nofade::after {\n display: none !important;\n }\n\n .gleap-frame-container--survey {\n bottom: ${buttonY}px !important;\n }\n\n .gleap-frame-container--extended {\n max-width: 690px !important;\n }\n\n .gleap-frame-container--survey-full {\n position: fixed;\n top: 0 !important;\n left: 0 !important;\n bottom: 0 !important;\n right: 0 !important;\n width: 100vw !important;\n max-width: 100vw !important;\n height: 100vh;\n height: 100dvh !important;\n background-color: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(6px);\n display: flex !important;\n justify-content: center !important;\n align-items: center !important;\n max-height: 100vh;\n max-height: 100dvh !important;\n border-radius: 0 !important;\n animation-name: none !important;\n }\n\n .gleap-frame-container--survey-full .gleap-frame-container-inner {\n max-width: 640px !important;\n width: calc(100% - 24px);\n border-radius: ${containerRadius}px;\n overflow: hidden;\n }\n\n .gleap-frame-container--classic {\n right: ${buttonX}px;\n bottom: ${buttonY}px;\n }\n\n [dir=rtl].gleap-frame-container--classic {\n right: auto;\n left: ${buttonX}px;\n bottom: ${buttonY}px;\n }\n\n .gleap-frame-container--no-button {\n bottom: ${buttonY}px;\n }\n\n [dir=rtl].gleap-frame-container--classic-left {\n bottom: ${buttonY}px;\n }\n\n .gleap-frame-container--classic-left {\n right: auto;\n left: ${buttonX}px;\n bottom: ${buttonY}px;\n }\n\n [dir=rtl].gleap-frame-container--classic-left {\n left: auto;\n right: ${buttonX}px;\n bottom: ${buttonY}px;\n }\n\n .gleap-frame-container--modern-left {\n right: auto;\n left: ${buttonX}px;\n bottom: ${61 + buttonY}px;\n }\n\n [dir=rtl].gleap-frame-container--modern-left {\n left: auto;\n right: ${buttonX}px;\n bottom: ${61 + buttonY}px;\n }\n\n .gleap-frame-container--animate {\n pointer-events: auto !important;\n }\n\n @keyframes gleapFadeInUp {\n from {\n opacity: 0;\n transform: translate3d(0, 100%, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n\n @keyframes gleapFadeInUpMobile {\n from {\n opacity: 0;\n transform: translate3d(0, 10%, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n\n .gleap-notification-container {\n position: fixed;\n bottom: ${bottomInfoOffset}px;\n right: ${buttonX}px;\n z-index: ${zIndexBase + 30};\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n width: 100%;\n max-width: min(340px, 80vw);\n }\n\n .gleap-notification-container--left {\n left: ${4 + buttonX}px;\n right: initial !important;\n }\n\n [dir=rtl].gleap-notification-container {\n left: ${4 + buttonX}px;\n right: initial !important;\n }\n\n [dir=rtl].gleap-notification-container--left {\n left: initial !important;\n right: ${buttonX}px !important;\n align-items: flex-start !important;\n }\n\n .gleap-notification-container--no-button {\n bottom: ${buttonY}px;\n }\n\n .gleap-notification-item {\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n\n .gleap-notification-close {\n border-radius: 100%;\n width: 28px;\n height: 28px;\n background-color: ${subTextColor};\n display: flex;\n justify-content: center;\n align-items: center;\n margin-bottom: 8px;\n cursor: pointer;\n visibility: hidden;\n pointer-events: none;\n }\n\n .gleap-notification-container:hover .gleap-notification-close {\n visibility: visible;\n pointer-events: auto;\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-notification-close {\n visibility: visible;\n pointer-events: auto;\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n }\n\n .gleap-notification-close svg {\n width: 45%;\n height: 45%;\n object-fit: contain;\n fill: ${backgroundColor};\n }\n\n .gleap-notification-item-checklist-container {\n display: flex;\n animation: fadeIn;\n animation-duration: .45s;\n background-color: ${backgroundColor};\n border-radius: ${subTextColor};\n box-sizing: border-box;\n cursor: pointer;\n flex-direction: column;\n overflow: hidden;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ${chatRadius}px;\n margin-bottom: 12px;\n }\n\n .gleap-notification-item-checklist-content {\n align-items: flex-start;\n display: flex;\n flex-direction: column;\n padding: 15px;\n width: 100%;\n width: min(310px, 70vw);\n max-width: min(310px, 70vw);\n }\n\n .gleap-notification-item-checklist-content-title {\n color: ${contrastBackgroundColor};\n font-size: 15px;\n font-weight: 500;\n line-height: 21px;\n margin-bottom: 10px;\n max-width: 100%;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .gleap-notification-item-checklist-content-progress {\n width: 100%;\n height: 8px;\n border-radius: 8px;\n background-color: ${backgroundColorHover};\n }\n\n .gleap-notification-item-checklist-content-progress-inner {\n height: 100%;\n border-radius: 8px;\n background-color: ${primaryColor};\n }\n\n .gleap-notification-item-checklist-content-next {\n color: ${subTextColor};\n font-size: 15px;\n font-weight: normal;\n line-height: 21px;\n margin-top: 10px;\n max-width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: flex;\n align-items: center;\n }\n\n .gleap-notification-item-checklist-content-next svg {\n height: 18px;\n margin-right: 5px;\n width: auto;\n }\n\n .gleap-notification-item-checklist-content-next b {\n font-size: 15px;\n font-weight: normal;\n color: ${contrastBackgroundColor};\n }\n\n .gleap-notification-item-news {\n width: 100%;\n }\n\n .gleap-news-pagination {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 10px;\n width: 100%;\n }\n\n .gleap-news-page-indicator {\n font-size: 12px;\n color: ${subTextColor};\n }\n\n .gleap-news-next-button {\n background-color: ${primaryColor};\n color: ${contrastColor};\n border-radius: ${formItemSmallBorderRadius}px;\n box-sizing: border-box;\n padding: 5px 10px;\n font-size: 14px;\n font-weight: bold;\n line-height: 21px;\n border: none;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: none !important;\n outline: none !important;^\n }\n\n .gleap-notification-item-news-content {\n align-items: flex-start;\n display: flex;\n flex-direction: column;\n padding: 15px;\n }\n\n .gleap-notification-item-news-preview {\n color: ${subTextColor};\n font-size: 14px;\n line-height: 21px;\n font-weight: 400;\n overflow-wrap: break-word;\n word-break: break-word;\n display: block;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .gleap-notification-item-news-sender {\n display: flex;\n align-items: center;\n color: ${subTextColor};\n font-size: 15px;\n line-height: 21px;\n font-weight: 400;\n }\n \n .gleap-notification-item-news-content-title {\n color: ${contrastBackgroundColor};\n font-size: 15px;\n font-weight: 500;\n line-height: 21px;\n margin-bottom: 6px;\n max-width: 100%;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n cursor: pointer;\n }\n\n .gleap-notification-item-news-sender img {\n border-radius: 100%;\n height: 20px;\n margin-right: 8px;\n object-fit: cover;\n width: 20px;\n }\n\n [dir=rtl] .gleap-notification-item-news-sender img {\n margin-left: 8px;\n margin-right: 0px !important;\n }\n\n .gleap-notification-item-news-container {\n display: flex;\n animation: fadeIn;\n animation-duration: .45s;\n background-color: ${backgroundColor};\n border-radius: ${subTextColor};\n box-sizing: border-box;\n flex-direction: column;\n overflow: hidden;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ${chatRadius}px;\n margin-bottom: 12px;\n }\n\n .gleap-notification-item-news-image {\n background-color: ${subTextColor};\n height: 170px;\n max-height: 170px;\n object-fit: cover;\n width: 100%;\n cursor: pointer;\n }\n \n .gleap-notification-item-news-content-title:hover {\n color: ${primaryColor};\n }\n\n .gleap-notification-item {\n display: flex;\n align-items: flex-end;\n cursor: pointer;\n }\n\n .gleap-notification-item img {\n width: 32px;\n height: 32px;\n min-width: 32px;\n border-radius: 100%;\n object-fit: cover;\n margin-right: 8px;\n margin-bottom: 12px;\n cursor: pointer;\n }\n\n [dir=rtl] .gleap-notification-item img {\n margin-left: 8px;\n margin-right: 0px !important;\n }\n\n .gleap-notification-item-container {\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ${chatRadius}px;\n border-bottom-left-radius: 0px;\n padding: 20px;\n background-color: ${backgroundColor};\n margin-bottom: 12px;\n cursor: pointer;\n font-size: 15px;\n line-height: 21px;\n color: ${contrastBackgroundColor};\n position: relative;\n }\n\n .gleap-notification-item-container::after {\n content: \" \";\n position: absolute;\n bottom: 0px;\n width: 0px;\n height: 0px;\n left: -6px;\n border-style: solid;\n border-width: 0px 0px 10px 6px;\n border-color: transparent transparent ${backgroundColor};\n }\n\n .gleap-notification-item-sender {\n color: ${subTextColor};\n line-height: 20px;\n }\n\n .gleap-notification-item-content {\n line-height: 20px;\n color: ${contrastBackgroundColor};\n margin-top: 4px;\n min-width: min(200px, 50vw);\n word-wrap: break-word;\n word-break: break-word;\n }\n\n .gleap-frame-container-inner {\n position: relative;\n width: 100%;\n height: calc(100vh - ${84 + buttonY}px);\n max-height: ${widgetMaxHeight}px;\n }\n\n .gleap-frame-container--survey .gleap-frame-container-inner {\n height: calc(100vh - 40px);\n }\n \n .gleap-frame-container-inner:before {\n content: \" \";\n position: absolute;\n width: 100%;\n height: calc(100% - ${containerRadius}px);\n top: ${containerRadius}px;\n background-color: ${backgroundColor};\n z-index: -1;\n }\n \n .gleap-frame-container iframe {\n height: 100% !important;\n width: 100% !important;\n max-width: 100% !important;\n display: block !important;\n pointer-events: auto !important;\n }\n \n .gleap-frame-container--hidden {\n display: none !important;\n pointer-events: none;\n animation: none !important;\n }\n \n .bb-feedback-button {\n margin: 0px;\n position: fixed;\n bottom: ${buttonY}px;\n right: ${buttonX}px;\n border-radius: 30px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n background-color: transparent;\n color: #000000;\n z-index: ${zIndexBase + 30};\n box-sizing: border-box;\n display: flex;\n align-items: center;\n padding: 0px;\n }\n\n [dir=rtl].bb-feedback-button {\n bottom: ${buttonY}px;\n right: auto;\n left: ${buttonX}px;\n }\n \n .bb-feedback-button--bottomleft {\n bottom: ${buttonY}px;\n right: auto;\n left: ${buttonX}px;\n }\n\n [dir=rtl].bb-feedback-button--bottomleft {\n bottom: ${buttonY}px;\n right: ${buttonX}px;\n left: auto;\n }\n \n .bb-feedback-button--disabled {\n display: none !important;\n }\n\n .bb-feedback-button--hidden {\n display: none !important;\n }\n \n .bb-feedback-button-text {\n padding: 8px 12px;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n background-color: #fff;\n border-radius: 8px;\n box-shadow: 0px 0px 14px 0px rgba(0, 0, 0, 0.15);\n position: relative;\n z-index: 99;\n }\n \n .bb-feedback-button-text:before {\n content: \"\";\n position: absolute;\n box-shadow: rgba(0, 0, 0, 0.04) 6px 6px 5px;\n transform: rotate(315deg);\n bottom: 16px;\n right: -4px;\n border-width: 10px;\n border-style: solid;\n border-color: transparent #fff #fff transparent;\n }\n \n .bb-feedback-button--bottomleft .bb-feedback-button-text:before {\n display: none;\n }\n \n .bb-feedback-button-text:after {\n content: \"\";\n position: absolute;\n bottom: 12px;\n right: 0px;\n background-color: #fff;\n width: 5px;\n height: 30px;\n }\n \n .bb-feedback-button-text-title {\n font-family: sans-serif;\n font-size: 14px;\n color: #666;\n line-height: 18px;\n max-width: 220px;\n }\n \n .bb-feedback-button-text-title b {\n color: #000000;\n font-weight: 600;\n }\n\n .bb-notification-bubble {\n position: absolute;\n top: -5px;\n right: -5px;\n min-width: 12px;\n padding: 0px 4px;\n height: 20px;\n min-width: 20px;\n border-radius: 20px;\n background-color: red;\n color: #fff;\n font-size: 11px;\n font-family: sans-serif;\n text-align: center;\n line-height: 20px;\n }\n\n .bb-notification-bubble--hidden {\n display: none;\n }\n \n .bb-feedback-button-icon {\n width: 48px;\n height: 48px;\n border-radius: 48px;\n background-color: #485bff;\n transition: box-shadow, transform 0.2s ease-in-out;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n position: relative;\n }\n \n .bb-feedback-button-classic {\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n top: 50%;\n right: 0px;\n position: fixed;\n transform: rotate(-90deg) translate(50%, -50%);\n transform-origin: 100% 50%;\n padding: 9px 20px;\n text-align: center;\n background-color: #485bff;\n border-top-left-radius: 8px;\n border-top-right-radius: 8px;\n font-family: sans-serif;\n font-size: 16px;\n color: #fff;\n box-shadow: 0px 0px 14px 0px rgba(0, 0, 0, 0.25);\n }\n\n [dir=rtl].bb-feedback-button .bb-feedback-button-classic {\n top: 50%;\n left: 0px;\n right: auto;\n transform: rotate(90deg) translate(-50%, -100%);\n transform-origin: 0% 0%;\n }\n \n .bb-feedback-button-classic--left {\n top: 50%;\n left: 0px;\n right: auto;\n transform: rotate(90deg) translate(-50%, -100%);\n transform-origin: 0% 0%;\n }\n\n [dir=rtl].bb-feedback-button .bb-feedback-button-classic--left {\n top: 50%;\n right: 0px;\n left: auto;\n transform: rotate(-90deg) translate(50%, -50%);\n transform-origin: 100% 50%;\n }\n \n .bb-feedback-button-classic--bottom {\n top: auto;\n bottom: 0px;\n transform: none;\n right: ${buttonX}px;\n left: auto;\n }\n \n [dir=rtl].bb-feedback-button .bb-feedback-button-classic--bottom {\n top: auto;\n bottom: 0px;\n transform: none;\n left: ${buttonX}px;\n right: auto;\n }\n\n .bb-feedback-button--classic-button-style {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n \n .bb-feedback-button--open.bb-feedback-button--classic-button-style {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: bbFadeOutRight;\n }\n \n .bb-feedback-button .bb-logo-logo {\n position: absolute;\n width: 30px;\n height: 30px;\n top: 9px;\n left: 9px;\n object-fit: contain;\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-name: bbZoomIn;\n }\n \n .bb-feedback-button .bb-logo-arrowdown {\n position: absolute;\n width: 14px;\n height: 14px;\n top: 17px;\n left: 17px;\n object-fit: contain;\n animation-duration: 0.3s;\n animation-fill-mode: both;\n }\n \n .bb-feedback-button .bb-logo-arrowdown {\n animation-name: bbZoomOut;\n }\n \n .bb-feedback-button--open .bb-logo-arrowdown {\n animation-name: bbZoomIn;\n }\n \n .bb-feedback-button--open .bb-logo-logo {\n animation-name: bbZoomOut;\n }\n \n .bb-feedback-button-icon:hover {\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.25), 0px 0px 20px rgba(0, 0, 0, 0.2);\n transform: scale(1.1);\n }\n \n .bb-feedback-button--open .bb-feedback-button-text {\n animation-name: bbFadeOutDown;\n }\n \n .bb-feedback-button--open .bb-feedback-button-icon {\n display: flex;\n }\n \n .bb-capture-svg {\n position: fixed;\n z-index: ${zIndexBase + 14};\n top: 0px;\n left: 0px;\n right: 0px;\n width: 100%;\n height: 100%;\n padding: 0px;\n margin: 0px;\n cursor: crosshair;\n }\n\n .bb-capture-svg--preview {\n cursor: auto !important;\n }\n \n .bb-rec-on-circle {\n animation-name: bbRecIconFade;\n animation-duration: 2s;\n animation-iteration-count: infinite;\n animation-direction: alternate;\n }\n \n .bb-rec-on-cont {\n animation-name: bbRecIconContFade;\n animation-duration: 2s;\n animation-iteration-count: infinite;\n animation-direction: alternate;\n }\n \n .bb-capture-editor-drag-info {\n position: fixed;\n top: -200px;\n left: 0px;\n z-index: ${zIndexBase + 16};\n transition: opacity 0.3s ease-in-out;\n }\n \n .bb-capture-editor-drag-info svg {\n width: 24px;\n height: 24px;\n }\n \n .bb-capture-editor-borderlayer {\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n border: 4px solid ${primaryColor};\n cursor: crosshair;\n z-index: ${zIndexBase + 10};\n box-sizing: border-box;\n pointer-events: none;\n }\n \n .bb-capture-editor-notrecording .bb-capture-editor-borderlayer {\n background-color: rgba(0, 0, 0, 0.8);\n }\n\n .bb-capture-editor-recording .bb-capture-editor-borderlayer {\n border: 4px solid #eb144c !important;\n }\n \n .bb-capture-editor-recording .bb-capture-dismiss {\n display: none;\n }\n \n .bb-capture-editor-item-inactive {\n opacity: 0.3;\n cursor: not-allowed !important;\n }\n \n .bb-capture-editor-notrecording .bb-capture-toolbar-drawingitem {\n opacity: 0.3;\n cursor: not-allowed !important;\n }\n \n .bb-capture-editor-notrecording .bb-capture-editor-drag-info {\n display: none;\n }\n \n .bb-capture-editor-notrecording .bb-capture-svg {\n pointer-events: none !important;\n }\n \n .bb-capture-toolbar {\n position: fixed;\n top: 20px;\n left: 50%;\n transform: translateX(-50%);\n z-index: ${zIndexBase + 18};\n background-color: #fff;\n padding: 5px;\n display: flex;\n align-items: center;\n border-radius: 8px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n transition: opacity 0.3s ease-in-out;\n }\n \n .bb-capture-dismiss {\n position: fixed;\n top: 0px;\n right: 0px;\n z-index: ${zIndexBase + 18};\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n width: 36px;\n height: 36px;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: ${primaryColor};\n border-bottom-left-radius: ${formItemSmallBorderRadius}px;\n }\n\n [dir=rtl] .bb-capture-dismiss {\n top: 0px;\n left: 0px;\n right: auto;\n border-bottom-left-radius: 0px !important;\n border-bottom-right-radius: ${formItemSmallBorderRadius}px;\n }\n \n .bb-capture-dismiss svg path {\n fill: ${contrastColor};\n }\n \n .bb-capture-dismiss svg {\n width: 20px;\n height: 20px;\n object-fit: contain;\n }\n \n .bb-capture-button-next {\n font-family: sans-serif;\n box-sizing: border-box;\n font-weight: 600;\n text-align: center;\n width: auto;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n margin: 0px;\n line-height: 36px;\n padding: 0px 12px;\n font-size: 15px;\n margin-left: 12px;\n }\n\n [dir=rtl].bb-capture-editor .bb-capture-button-next {\n margin-left: auto;\n margin-right: 12px;\n }\n \n .bb-capture-toolbar-item-spacer {\n width: 1px;\n height: 38px;\n min-width: 1px;\n margin: 0px 5px;\n }\n \n .bb-capture-toolbar-item {\n width: 42px;\n height: 38px;\n min-width: 42px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n position: relative;\n margin-right: 5px;\n }\n\n .drag-handle-item {\n cursor: grab !important;\n width: 34px;\n min-width: 34px;\n }\n\n .drag-handle-item svg {\n width: 18px !important;\n height: 18px !important;\n }\n \n .bb-capture-toolbar-item svg {\n width: 23px;\n height: 23px;\n object-fit: contain;\n }\n \n .bb-capture-toolbar-item-selectedcolor {\n border-radius: 100%;\n width: 20px;\n height: 20px;\n background-color: #db4035;\n }\n \n .bb-capture-toolbar-item[data-type=\"undo\"] svg {\n width: 18px;\n height: 18px;\n }\n \n .bb-capture-toolbar-item[data-active=\"true\"] {\n position: relative;\n }\n \n .bb-capture-preview {\n display: none;\n background-color: rgba(0, 0, 0, 0.6);\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n justify-content: center;\n align-items: center;\n z-index: ${zIndexBase + 20};\n }\n \n .bb-capture-preview-inner {\n background-color: #fff;\n padding: 0px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n border-radius: 8px;\n flex-direction: column;\n max-width: 640px;\n width: 100%;\n margin: 20px;\n }\n \n .bb-capture-preview-inner video {\n border-radius: 8px 8px 0px 0px;\n display: block;\n border: 0px;\n outline: none;\n width: 100%;\n max-height: 60vh;\n }\n \n .bb-capture-preview-buttons {\n display: flex;\n justify-content: space-between;\n padding: 14px;\n }\n \n .bb-capture-preview-retrybutton {\n font-family: sans-serif;\n border-radius: 21px;\n box-sizing: border-box;\n padding: 12px 26px;\n font-size: 16px;\n line-height: 19px;\n font-weight: 600;\n text-align: center;\n margin-top: 0px;\n margin-bottom: 0px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-preview-sendbutton {\n font-family: sans-serif;\n border-radius: 21px;\n box-sizing: border-box;\n padding: 12px 26px;\n font-size: 16px;\n line-height: 19px;\n font-weight: 600;\n text-align: center;\n margin-top: 0px;\n margin-bottom: 0px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-preview-retrybutton:hover,\n .bb-capture-preview-sendbutton:hover {\n opacity: 0.9;\n }\n \n .bb-capture-toolbar-item-recording {\n margin-right: 0px;\n }\n \n .bb-capture-toolbar-item-recording svg {\n width: 33px;\n height: 33px;\n }\n \n .bb-capture-toolbar-item-colorpicker {\n position: fixed;\n top: 70px;\n left: 50%;\n transform: translateX(-50%);\n z-index: ${zIndexBase + 18};\n background-color: #fff;\n display: none;\n padding: 10px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n border-radius: 8px;\n }\n \n .bb-capture-toolbar-item-color {\n width: 20px;\n height: 20px;\n border-radius: 100%;\n margin-right: 12px;\n box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.15);\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-toolbar-item-color:hover {\n box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.25);\n }\n \n .bb-capture-toolbar-item-color:last-of-type {\n margin-right: 0px;\n }\n \n [dir=rtl].bb-capture-editor .bb-capture-toolbar-item-color {\n margin-right: auto;\n margin-left: 12px;\n }\n \n [dir=rtl].bb-capture-editor .bb-capture-toolbar-item-color:last-of-type {\n margin-right: auto;\n margin-left: 0px;\n }\n \n .bb-capture-toolbar-item-recording[data-active=\"true\"] svg:first-of-type {\n display: none;\n }\n \n .bb-capture-toolbar-item-recording[data-active=\"true\"] svg:nth-of-type(2) {\n display: block;\n }\n \n .bb-capture-toolbar-item-recording[data-active=\"false\"] svg:first-of-type {\n display: block;\n }\n \n .bb-capture-toolbar-item-recording[data-active=\"false\"] svg:nth-of-type(2) {\n display: none;\n }\n \n .bb-capture-toolbar-item--active {\n background-color: #eee;\n }\n \n .bb-capture-toolbar-item:hover svg {\n opacity: 1;\n }\n \n .bb-capture-toolbar-item--active {\n background-color: #f8f8f8;\n }\n \n .bb-capture-toolbar-item--active svg {\n opacity: 1;\n }\n \n .bb-capture-toolbar-item--inactivecross::before {\n content: \"\";\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n height: 3px;\n width: 26px;\n margin: auto;\n border-radius: 4px;\n background-color: #e80000;\n transform: rotate(45deg);\n }\n \n .bb-capture-toolbar-item--inactivecross svg {\n fill: #eee;\n }\n \n .bb-capture-toolbar-item-timer {\n text-align: left;\n line-height: 32px;\n font-size: 14px;\n font-family: sans-serif;\n margin: 5px;\n min-width: 40px;\n display: none;\n }\n \n .bb-capture-toolbar-item .bb-tooltip {\n background-color: #555;\n color: #fff;\n visibility: hidden;\n font-size: 14px;\n font-family: sans-serif;\n text-align: center;\n padding: 5px 10px;\n position: absolute;\n z-index: 1;\n top: 45px;\n left: 0px;\n transform: translateX(calc(-50% + 21px));\n opacity: 0;\n transition: opacity 0.3s;\n white-space: nowrap;\n }\n \n .bb-capture-toolbar-item .bb-tooltip::after {\n content: \"\";\n position: absolute;\n bottom: 100%;\n left: 50%;\n margin-left: -5px;\n border-width: 5px;\n border-style: solid;\n transform: rotate(180deg);\n border-color: #555 transparent transparent transparent;\n }\n \n .bb-capture-toolbar-item:hover .bb-tooltip {\n visibility: visible;\n opacity: 1;\n }\n \n .bb-capture-options {\n display: none;\n }\n \n .bb-capture-options--active {\n display: flex;\n }\n\n @keyframes bbFadeOutRight {\n from {\n opacity: 1;\n }\n \n to {\n opacity: 0;\n }\n }\n \n @keyframes bbFadeOutDown {\n from {\n opacity: 1;\n }\n \n to {\n opacity: 0;\n transform: translate3d(0, 100%, 0);\n }\n }\n \n @keyframes bbFadeInOpacity {\n from {\n opacity: 0;\n }\n \n to {\n opacity: 1;\n }\n }\n \n @keyframes bbZoomOut {\n from {\n opacity: 1;\n }\n \n 50% {\n opacity: 0;\n transform: scale3d(0.3, 0.3, 0.3);\n }\n \n to {\n opacity: 0;\n }\n }\n \n @keyframes bbZoomIn {\n from {\n opacity: 0;\n transform: scale3d(0.3, 0.3, 0.3);\n }\n \n 50% {\n opacity: 1;\n }\n }\n \n @keyframes bbRecIconContFade {\n 0% {\n fill: #b10802;\n }\n 50% {\n fill: #ff0000;\n }\n 100% {\n fill: #b10802;\n }\n } \n .bb-capture-preview-retrybutton {\n color: ${contrastBackgroundColor};\n border-radius: ${buttonBorderRadius}px;\n background-color: ${backgroundColorHover};\n }\n .bb-capture-preview-retrybutton:hover {\n background-color: ${hoverHoverColor};\n }\n @keyframes bb-suc-fill {\n 100% {\n box-shadow: inset 0px 0px 0px 30px ${primaryColor};\n }\n }\n .bb-capture-toolbar-item-spacer {\n background-color: ${backgroundColorHover};\n }\n .bb-tooltip {\n border-radius: ${formItemBorderRadius}px;\n }\n @keyframes bbRecIconFade {\n 0% {\n fill: transparent;\n }\n 50% {\n fill: ${hoverHoverColor};\n }\n 100% {\n fill: transparent;\n }\n }\n .bb-capture-preview-sendbutton {\n color: ${contrastColor};\n background-color: ${primaryColor};\n border-radius: ${buttonBorderRadius}px;\n }\n .bb-capture-button-next {\n color: ${contrastColor};\n background-color: ${primaryColor};\n border-radius: ${formItemSmallBorderRadius}px;\n }\n .bb-capture-preview-inner {\n background-color: ${backgroundColor};\n border-radius: ${formItemBorderRadius}px;\n }\n .bb-capture-toolbar-item-timer {\n color: ${subTextColor};\n }\n .bb-svg-path {\n fill: ${contrastBackgroundColor};\n }\n .bb-capture-toolbar-item {\n border-radius: ${formItemBorderRadius}px;\n }\n .bb-capture-toolbar {\n background-color: ${backgroundColor};\n border-radius: ${formItemBorderRadius}px;\n }\n .bb-capture-toolbar-item-colorpicker {\n background-color: ${backgroundColor};\n }\n .bb-capture-toolbar-item--active {\n background-color: ${backgroundColorHover};\n }\n .bb-feedback-button-classic {\n border-top-left-radius: ${formItemBorderRadius}px;\n border-top-right-radius: ${formItemBorderRadius}px;\n }\n .bb-logo-logo--default path {\n fill: ${contrastButtonColor};\n }\n .bb-logo-arrowdown {\n fill: ${contrastButtonColor};\n }\n .bb-feedback-button-icon {\n background-color: ${buttonColor};\n }\n .bb-feedback-button-classic {\n background-color: ${buttonColor};\n color: ${contrastButtonColor};\n }\n\n @media only screen and (max-width: 450px) {\n [dir=rtl].gleap-frame-container,\n .gleap-frame-container {\n left: 0px;\n right: 0px;\n width: 100vw;\n max-width: 100vw;\n min-height: 100vh;\n max-height: 100vh;\n min-height: 100dvh !important;\n max-height: 100dvh !important;\n top: 0px;\n bottom: 0px;\n border-radius: 0px;\n animation-name: gleapFadeInUpMobile;\n }\n\n .gleap-frame-container-inner {\n width: 100vw;\n height: 100%;\n }\n\n .gleap-frame-container:not(.gleap-frame-container--survey):not(.gleap-frame-container--survey-full) .gleap-frame-container-inner {\n max-height: calc(var(--glvh, 1vh) * 100) !important;\n }\n\n .gleap-frame-container--survey {\n height: auto !important;\n top: initial !important;\n bottom: 0px !important;\n min-height: initial !important;\n }\n\n .gleap-frame-container--survey .gleap-frame-container-inner {\n height: 100vh !important;\n }\n\n .bb-tooltip {\n display: none !important;\n }\n \n .bb-capture-toolbar-item-colorpicker {\n top: 75px;\n }\n \n .bb-capture-button-next {\n margin-left: auto;\n }\n \n .bb-capture-dismiss {\n display: none;\n }\n \n .bb-capture-toolbar {\n top: 15px;\n right: 15px;\n left: 15px;\n width: auto;\n transform: none;\n }\n\n .bb-capture-editor-drag-info {\n display: none;\n }\n \n .bb-capture-editor-borderlayer {\n border-width: 4px;\n }\n }\n \n @media print {\n .bb-feedback-button {\n display: none !important;\n }\n \n .gleap-frame-container {\n display: none !important;\n }\n }\n\n .gleap-tour-sender {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n margin-bottom: 10px;\n }\n\n .gleap-tour-sender-image {\n width: 32px;\n height: 32px;\n border-radius: 32px;\n margin-right: 10px;\n background-size: cover;\n background-repeat: no-repeat;\n }\n\n .gleap-tour-popover.gleap-tour-popover-post {\n min-width: 550px;\n max-width: 550px;\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-tour-popover.gleap-tour-popover-post {\n min-width: calc(100vw - 40px);\n max-width: calc(100vw - 40px);\n }\n }\n\n .gleap-tour-message,\n .gleap-tour-message p,\n .gleap-tour-message ul {\n color: ${contrastBackgroundColor};\n }\n\n .gleap-tour-message h2 {\n font-weight: 600;\n font-size: 22px;\n }\n\n .gleap-tour-message h3 {\n font-weight: 600;\n font-size: 18px;\n }\n\n .gleap-tour-message p {\n line-height: 1.3;\n margin-bottom: 10px !important;\n margin-top: 10px !important;\n }\n\n .gleap-tour-message ul {\n line-height: 1.3;\n padding-left: 20px;\n margin-top: 10px !important;\n margin-bottom: 10px !important;\n }\n\n .gleap-tour-message {\n max-height: calc(80vh - 100px) !important;\n overflow-y: auto;\n min-width: 270px;\n }\n\n .gleap-tour-message::-webkit-scrollbar {\n width: 5px;\n }\n\n .gleap-tour-message::-webkit-scrollbar-track {\n border-radius: 0px;\n }\n \n .gleap-tour-message::-webkit-scrollbar-thumb {\n background: ${hoverHoverColor}; \n border-radius: 5px;\n }\n\n .gleap-tour-message::-webkit-scrollbar-thumb:hover {\n background: ${subTextColor};\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-tour-message {\n min-width: auto !important;\n }\n }\n\n .gleap-tour-message iframe {\n width: 100%;\n height: 300px;\n margin-top: 10px;\n margin-bottom: 10px;\n border: none;\n outline: none;\n display: block;\n }\n\n .gleap-tour-sender-name {\n font-size: 15px;\n }\n\n .gleap-tour-video {\n width: 100%;\n max-width: 100%;\n }\n\n .gleap-tour-video-svg--fullscreen {\n width: 100% !important;\n height: 100% !important;\n top: 0px !important;\n left: 0px !important;\n right: 0px !important;\n bottom: 0px !important;\n }\n\n .gleap-tour-video--playing .gleap-tour-video-playpause {\n opacity: 0;\n }\n \n .gleap-tour-video--playing:hover .gleap-tour-video-playpause {\n opacity: 1;\n }\n\n .gleap-tour-popover-video-pointer {\n padding: 0px !important;\n border-radius: 8px;\n position: relative;\n background-color: transparent !important;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-footer {\n position: absolute;\n top: 0px;\n left: 20px;\n right: 20px;\n opacity: 0;\n transition: opacity 200ms ease-in-out;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-footer button {\n padding: 5px 12px;\n }\n\n .gleap-tour-popover-video-pointer.gleap-tour-popover-can-close .gleap-tour-popover-footer {\n right: 40px !important;\n }\n\n .gleap-tour-popover-video-pointer:hover .gleap-tour-popover-footer {\n opacity: 1;\n }\n\n .gleap-tour-popover-pointer.gleap-tour-popover-no-sender .gleap-tour-message {\n padding-right: 20px;\n }\n\n .gleap-tour-video video {\n width: 100%;\n max-width: 100%;\n height: auto;\n border: none;\n outline: none;\n display: block;\n border-radius: 8px;\n }\n\n .gleap-admin-collapse-ui {\n z-index: ${zIndexBase + 35};\n cursor: pointer;\n position: fixed;\n bottom: 75px;\n right: 20px;\n width: 32px;\n height: 32px;\n border-radius: 100%;\n background-color: #fff;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: rgba(0, 0, 0, 0.16) 0px 10px 36px 0px, rgba(0, 0, 0, 0.06) 0px 0px 0px 1px;\n }\n\n .gleap-admin-collapse-ui svg {\n width: 20px;\n height: 14px;\n fill: #000 !important;\n }\n\n .gleap-admin-collapse-ui-active {\n bottom: 20px !important;\n }\n\n .gleap-admin-collapse-ui-active svg {\n transform: rotate(180deg);\n }\n\n .gleap-admin-frame-container-active {\n display: none !important;\n }\n\n .gleap-admin-frame-container {\n position: fixed;\n bottom: 0px;\n left: 0px;\n right: 0px;\n width: 100vw;\n z-index: ${zIndexBase + 40};\n }\n\n .gleap-admin-frame {\n width: 100%;\n height: 100% !important;\n border: none;\n outline: none;\n display: block;\n }\n \n .gleap-tour-message .linktype-link {\n display: inline-block !important;\n background-color: transparent !important;\n color: ${buttonColor} !important;\n }\n\n .gleap-tooltip .linktype-button,\n .gleap-tour-message .linktype-button {\n display: inline-block !important;\n border-radius: 5px;\n box-sizing: border-box;\n padding: 10px 20px !important;\n text-decoration: none !important;\n background-color: ${buttonColor} !important;\n color: ${contrastButtonColor} !important;\n }\n\n .gleap-tour-message img {\n width: 100%;\n max-width: 100%;\n min-height: 260px;\n height: auto;\n margin-top: 10px;\n margin-bottom: 10px;\n object-fit: cover;\n }\n\n .gleap-tour-active .gleap-tour-overlay {\n pointer-events: none;\n }\n \n .gleap-tour-active * {\n pointer-events: none;\n }\n \n .gleap-tour-active .gleap-tour-active-element,\n .gleap-tour-active .gleap-tour-active-element *,\n .gleap-tour-popover,\n .gleap-tour-popover * {\n pointer-events: auto;\n }\n \n @keyframes animate-fade-in {\n 0% {\n opacity: 0;\n }\n \n to {\n opacity: 1;\n }\n }\n \n .gleap-tour-fade .gleap-tour-overlay {\n animation: animate-fade-in 200ms ease-in-out;\n }\n \n .gleap-tour-fade .gleap-tour-popover {\n animation: animate-fade-in 200ms;\n }\n\n .gleap-tour-video-playpause {\n position: absolute;\n bottom: 8px;\n left: 8px;\n width: 32px;\n height: 32px;\n padding: 4px;\n background-color: rgba(0,0,0,0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border-radius: 8px;\n transition: opacity 200ms ease-in-out;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-arrow {\n display: none !important;\n }\n\n .gleap-tour-video-playpause svg {\n width: 34px;\n height: auto;\n fill: #fff;\n }\n \n /* Popover styles */\n .gleap-tour-popover {\n all: unset;\n box-sizing: border-box;\n color: #2d2d2d;\n margin: 0;\n padding: 15px;\n border-radius: ${formItemBorderRadius}px;\n min-width: 250px;\n max-width: 300px;\n box-shadow: 0 1px 10px #0006;\n z-index: 1000000000;\n position: fixed;\n top: 0;\n right: 0;\n background-color: #fff;\n }\n \n .gleap-tour-popover * {\n font-family: \"Helvetica Neue\", Inter, ui-sans-serif, \"Apple Color Emoji\", Helvetica, Arial, sans-serif;\n }\n \n .gleap-tour-popover-title {\n font: 19px / normal sans-serif;\n font-weight: 700;\n display: block;\n position: relative;\n line-height: 1.5;\n zoom: 1;\n margin: 0;\n }\n \n .gleap-tour-popover-close-btn {\n all: unset;\n position: absolute;\n top: 5px;\n right: 5px;\n width: 32px;\n height: 32px;\n cursor: pointer;\n font-size: 30px;\n font-weight: 500;\n line-height: 32px;\n color: #d2d2d2;\n z-index: 1;\n text-align: center;\n transition: color;\n transition-duration: 200ms;\n }\n \n .gleap-tour-popover-close-btn:hover,\n .gleap-tour-popover-close-btn:focus {\n color: #2d2d2d;\n }\n \n .gleap-tour-popover-title[style*=\"block\"] + .gleap-tour-popover-description {\n margin-top: 5px;\n }\n \n .gleap-tour-popover-description {\n margin-bottom: 0;\n font: 15px / normal sans-serif;\n line-height: 1.5;\n font-weight: 400;\n zoom: 1;\n }\n \n .gleap-tour-popover-footer {\n margin-top: 15px;\n text-align: right;\n zoom: 1;\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n \n .gleap-tour-popover-progress-text {\n font-size: 13px;\n font-weight: 400;\n color: #727272;\n zoom: 1;\n }\n \n .gleap-tour-popover-footer button {\n background-color: ${primaryColor};\n color: ${contrastColor};\n border-radius: ${formItemSmallBorderRadius}px;\n box-sizing: border-box;\n padding: 10px 20px;\n font-size: 14px;\n font-weight: bold;\n line-height: 21px;\n border: none;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: none !important;\n outline: none !important;\n }\n\n .gleap-tour-popover-prev-btn {\n color: ${contrastBackgroundColor} !important;\n background-color: ${backgroundColorHover} !important;\n margin-right: 3px;\n }\n\n .gleap-tour-popover-prev-btn:hover {\n background-color: ${primaryColor}22 !important;\n color: ${primaryColor} !important;\n }\n \n .gleap-tour-popover-footer .gleap-tour-popover-btn-disabled {\n opacity: 0.5;\n pointer-events: none;\n }\n \n /* Disable the scrolling of parent element if it has an active element*/\n :not(body):has(> .gleap-tour-active-element) {\n overflow: hidden !important;\n }\n \n .gleap-tour-no-interaction, .gleap-tour-no-interaction * {\n pointer-events: none !important;\n }\n \n .gleap-tour-popover-navigation-btns {\n display: flex;\n flex-grow: 1;\n justify-content: flex-end;\n }\n \n .gleap-tour-popover-navigation-btns button + button {\n margin-left: 4px;\n }\n \n .gleap-tour-popover-arrow {\n content: \"\";\n position: absolute;\n border: 5px solid #fff;\n }\n \n .gleap-tour-popover-arrow-side-over {\n display: none;\n }\n \n /** Popover Arrow Sides **/\n .gleap-tour-popover-arrow-side-left {\n left: 100%;\n border-right-color: transparent;\n border-bottom-color: transparent;\n border-top-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-right {\n right: 100%;\n border-left-color: transparent;\n border-bottom-color: transparent;\n border-top-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-top {\n top: 100%;\n border-right-color: transparent;\n border-bottom-color: transparent;\n border-left-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-bottom {\n bottom: 100%;\n border-left-color: transparent;\n border-top-color: transparent;\n border-right-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-center {\n display: none;\n }\n \n /* Left/Start + Right/Start */\n .gleap-tour-popover-arrow-side-left.gleap-tour-popover-arrow-align-start,\n .gleap-tour-popover-arrow-side-right.gleap-tour-popover-arrow-align-start {\n top: 15px;\n }\n \n /* Top/Start + Bottom/Start */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-start,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-start {\n left: 15px;\n }\n \n /* End/Left + End/Right */\n .gleap-tour-popover-arrow-align-end.gleap-tour-popover-arrow-side-left,\n .gleap-tour-popover-arrow-align-end.gleap-tour-popover-arrow-side-right {\n bottom: 15px;\n }\n \n /* Top/End + Bottom/End */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-end,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-end {\n right: 15px;\n }\n \n /* Left/Center + Right/Center */\n .gleap-tour-popover-arrow-side-left.gleap-tour-popover-arrow-align-center,\n .gleap-tour-popover-arrow-side-right.gleap-tour-popover-arrow-align-center {\n top: 50%;\n margin-top: -5px;\n }\n \n /* Top/Center + Bottom/Center */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-center,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-center {\n left: 50%;\n margin-left: -5px;\n }\n \n /* No arrow */\n .gleap-tour-popover-arrow-none {\n display: none;\n } \n\n /* Modal styles */\n .gleap-modal-wrapper {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: ${zIndexBase + 40};\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .gleap-modal-backdrop {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.5);\n z-index: ${zIndexBase + 41};\n }\n\n .gleap-modal {\n position: relative;\n width: 90%;\n max-width: 600px;\n max-height: 90vh;\n z-index: ${zIndexBase + 100};\n background-color: ${backgroundColor};\n border-radius: ${containerRadius}px;\n overflow: hidden;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-name: gleapFadeInUp;\n }\n\n .gleap-modal-frame {\n width: 100%;\n border: none;\n display: block;\n outline: none;\n }\n\n body.gleap-modal-open {\n overflow: hidden;\n }\n\n @keyframes gleapFadeInUp {\n from {\n opacity: 0;\n transform: translate3d(0, 20px, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n `;\n\n const oldNode = document.querySelector(\".gleap-styles\");\n if (oldNode) {\n oldNode.remove();\n }\n const node = document.createElement(\"style\");\n node.innerHTML = colorStyleSheet;\n node.className = \"gleap-styles\";\n document.body.appendChild(node);\n};\n\nexport const loadIcon = function (name, color) {\n if (name === \"button\") {\n return ``;\n }\n\n if (name === \"drag\") {\n return ``;\n }\n\n if (name === \"unmute\") {\n return ``;\n }\n\n if (name === \"mute\") {\n return ``;\n }\n\n if (name === \"replay\") {\n return `\n \n `;\n }\n\n if (name === \"dismiss\") {\n return ``;\n }\n\n if (name === \"blur\") {\n return `\n \n`;\n }\n\n if (name === \"pen\") {\n return `\n \n \n \n \n \n \n \n \n \n \n \n \n`;\n }\n\n if (name === \"rect\") {\n return `\n \n \n \n \n \n \n \n \n \n \n`;\n }\n\n if (name === \"pointer\") {\n return `\n \n `;\n }\n\n if (name === \"clip\") {\n return `\n \n \n \n \n \n`;\n }\n\n if (name === \"mic\") {\n return `\n \n \n \n \n `;\n }\n\n if (name === \"camera\") {\n return `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n`;\n }\n\n if (name === \"recorderon\") {\n return `\n \n \n \n \n \n \n \n \n \n \n \n`;\n }\n\n if (name === \"recorderoff\") {\n return `\n \n \n \n \n \n \n \n \n `;\n }\n\n if (name === \"arrowdown\") {\n return `\n \n `;\n }\n\n if (name === \"arrowleft\") {\n return `\n \n `;\n }\n\n if (name === \"close\") {\n return `\n \n `;\n }\n\n if (name === \"undo\") {\n return `\n \n \n \n \n \n \n \n \n \n `;\n }\n\n if (name === \"circle-dot\") {\n return ``;\n }\n\n if (name === \"circle-question\") {\n return ``;\n }\n\n if (name === \"circle-info\") {\n return ``;\n }\n\n if (name === \"circle-exclamation\") {\n return ``;\n }\n\n if (name === \"circle-up\") {\n return ``;\n }\n\n if (name === \"circle-right\") {\n return ``;\n }\n\n return \"\";\n};\n","class GleapNetworkIntercepter {\n startTimestamp = Date.now();\n requestId = 0;\n requests = {};\n externalRequests = [];\n maxRequests = 30;\n filters = [];\n defaultBlacklist = [\"gleap.io\"];\n blacklist = [];\n initialized = false;\n stopped = false;\n loadAllResources = false;\n\n // GleapNetworkIntercepter singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapNetworkIntercepter();\n }\n return this.instance;\n }\n\n setLoadAllResources(loadAllResources) {\n this.loadAllResources = loadAllResources;\n }\n\n isContentTypeSupported(contentType) {\n if (typeof contentType !== \"string\") {\n return false;\n }\n\n if (contentType === \"\") {\n return true;\n }\n\n contentType = contentType.toLocaleLowerCase();\n\n const supportedContentTypes = [\"text/\", \"xml\", \"json\"];\n for (var i = 0; i < supportedContentTypes.length; i++) {\n if (contentType.includes(supportedContentTypes[i])) {\n return true;\n }\n }\n\n return false;\n }\n\n getRequests() {\n var requests = JSON.parse(JSON.stringify(Object.values(this.requests)));\n\n // Merge external requests into internal requests.\n if (this.externalRequests && this.externalRequests.length > 0) {\n requests = requests.concat(this.externalRequests);\n }\n\n if (this.filters && this.filters.length > 0) {\n // Perform network log filtering.\n for (var i = 0; i < requests.length; i++) {\n var request = requests[i];\n\n // Headers\n if (request && request.request && request.request.headers) {\n for (var j = 0; j < this.filters.length; j++) {\n delete request.request.headers[this.filters[j]];\n }\n }\n\n // Payload\n if (request && request.request && request.request.payload) {\n var payloadObj = request.request.payload;\n try {\n payloadObj = JSON.parse(request.request.payload);\n } catch (e) { }\n\n if (payloadObj) {\n for (var j = 0; j < this.filters.length; j++) {\n delete payloadObj[this.filters[j]];\n }\n request.request.payload = JSON.stringify(payloadObj);\n }\n }\n\n // Response\n if (request && request.response && request.response.responseText) {\n try {\n var data = JSON.parse(request.response.responseText);\n for (var j = 0; j < this.filters.length; j++) {\n delete data[this.filters[j]];\n }\n request.response.responseText = JSON.stringify(data);\n } catch (e) { }\n }\n }\n }\n\n // Get static resources from performance.\n try {\n if (typeof window !== \"undefined\" && window.performance) {\n var resources = window.performance.getEntriesByType(\"resource\");\n for (var i = 0; i < resources.length; i++) {\n var resource = resources[i];\n if (resource && resource.name) {\n if ((this.loadAllResources || [\"xmlhttprequest\", \"fetch\"].indexOf(resource.initiatorType) > -1) && !requests.find(request => request.url === resource.name)) {\n requests.push({\n type: \"RESOURCE\",\n date: new Date(this.startTimestamp + resource.startTime),\n url: resource.name,\n duration: Math.round(resource.duration),\n initiatorType: resource.initiatorType\n });\n }\n }\n }\n }\n } catch (exp) { }\n\n var blacklist = this.blacklist.concat(this.defaultBlacklist);\n if (blacklist && blacklist.length > 0) {\n try {\n requests = requests.filter((request) => {\n for (var i = 0; i < blacklist.length; i++) {\n if (request && request.url && request.url.includes(blacklist[i])) {\n return false;\n }\n }\n return true;\n });\n } catch (exp) { }\n }\n\n return requests;\n }\n\n setMaxRequests(maxRequests) {\n if (maxRequests > 70) {\n maxRequests = 70;\n }\n this.maxRequests = maxRequests;\n }\n\n setStopped(stopped) {\n this.stopped = stopped;\n }\n\n setFilters(filters) {\n this.filters = this.filters.concat(filters ? filters : []);\n }\n\n setBlacklist(blacklist) {\n this.blacklist = this.blacklist.concat(blacklist ? blacklist : []);\n }\n\n cleanRequests() {\n var keys = Object.keys(this.requests);\n if (keys.length > this.maxRequests) {\n var keysToRemove = keys.slice(0, keys.length - this.maxRequests);\n for (var i = 0; i < keysToRemove.length; i++) {\n delete this.requests[keysToRemove[i]];\n }\n }\n }\n\n calcRequestTime(bbRequestId) {\n if (!bbRequestId || !this.requests || !this.requests[bbRequestId]) {\n return;\n }\n\n var startDate = this.requests[bbRequestId][\"date\"];\n if (startDate) {\n this.requests[bbRequestId][\"duration\"] =\n new Date().getTime() - startDate.getTime();\n }\n }\n\n getTextContentSize(text) {\n var size = 0;\n try {\n size = new TextEncoder().encode(text).length;\n } catch (exp) {\n try {\n size = encodeURI(s).split(/%..|./).length - 1;\n } catch (exp) {\n try {\n size = new Blob([text]).size;\n } catch (exp) {\n size = text.length;\n }\n }\n }\n\n const kiloBytes = size / 1024;\n const megaBytes = kiloBytes / 1024;\n return megaBytes;\n }\n\n cleanupContentSize(text) {\n const contentSize = this.getTextContentSize(text);\n if (contentSize > 0.15) {\n return \"\";\n }\n\n return text;\n }\n\n cleanupPayload(payload) {\n if (payload === undefined || payload === null) {\n return \"{}\";\n }\n\n try {\n if (typeof TextDecoder !== undefined && ArrayBuffer.isView(payload)) {\n let value = new TextDecoder().decode(payload);\n return value;\n }\n } catch (exp) { }\n\n return payload;\n }\n\n preparePayload(payload) {\n var payloadText = this.cleanupPayload(payload);\n return this.cleanupContentSize(payloadText);\n }\n\n start() {\n if (this.initialized) {\n return;\n }\n\n this.initialized = true;\n const self = this;\n this.interceptNetworkRequests({\n onFetch: (params, bbRequestId) => {\n if (this.stopped || !bbRequestId || !this.requests) {\n return;\n }\n\n if (\n params.length > 0 &&\n typeof params[0] !== \"undefined\" &&\n typeof params[0].url !== \"undefined\"\n ) {\n this.requests[bbRequestId] = {\n url: params[0].url,\n date: new Date(),\n request: {\n payload: \"\",\n headers:\n typeof params[0].headers !== \"undefined\"\n ? Object.fromEntries(params[0].headers.entries())\n : {},\n },\n type:\n typeof params[0].method !== \"undefined\" ? params[0].method : \"\",\n };\n } else {\n if (params.length >= 2 && params[1]) {\n var method =\n params[1] && params[1].method ? params[1].method : \"GET\";\n this.requests[bbRequestId] = {\n request: {\n payload: self.preparePayload(params[1].body),\n headers: params[1].headers,\n },\n type: method,\n url: params[0],\n date: new Date(),\n };\n } else {\n this.requests[bbRequestId] = {\n url: params[0],\n date: new Date(),\n };\n }\n }\n\n this.cleanRequests();\n },\n onFetchLoad: (req, bbRequestId) => {\n if (\n this.stopped ||\n !bbRequestId ||\n !this.requests ||\n !this.requests[bbRequestId]\n ) {\n return;\n }\n\n try {\n this.requests[bbRequestId][\"success\"] = true;\n this.requests[bbRequestId][\"response\"] = {\n status: req.status,\n statusText: \"\",\n responseText: \"\",\n };\n this.calcRequestTime(bbRequestId);\n } catch (exp) { }\n\n try {\n var contentType = \"\";\n if (req.headers && typeof req.headers.get !== \"undefined\") {\n contentType = req.headers.get(\"content-type\");\n }\n\n if (this.isContentTypeSupported(contentType)) {\n req\n .text()\n .then((responseText) => {\n if (this.requests[bbRequestId]) {\n this.requests[bbRequestId][\"success\"] = true;\n this.requests[bbRequestId][\"response\"] = {\n status: req.status,\n statusText: req.statusText,\n responseText: self.cleanupContentSize(responseText)\n };\n }\n this.calcRequestTime(bbRequestId);\n this.cleanRequests();\n })\n .catch((err) => {\n this.cleanRequests();\n });\n } else {\n if (this.requests[bbRequestId]) {\n this.requests[bbRequestId][\"success\"] = true;\n this.requests[bbRequestId][\"response\"] = {\n status: req.status,\n statusText: req.statusText,\n responseText: \"\",\n };\n }\n this.calcRequestTime(bbRequestId);\n this.cleanRequests();\n }\n } catch (exp) { }\n },\n onFetchFailed: (err, bbRequestId) => {\n if (\n this.stopped ||\n !bbRequestId ||\n !this.requests ||\n !this.requests[bbRequestId]\n ) {\n return;\n }\n\n this.requests[bbRequestId][\"success\"] = false;\n this.calcRequestTime(bbRequestId);\n this.cleanRequests();\n },\n onOpen: (request, args) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.bbRequestId &&\n args.length >= 2 &&\n this.requests\n ) {\n this.requests[request.bbRequestId] = {\n type: args[0],\n url: args[1],\n date: new Date(),\n };\n }\n\n this.cleanRequests();\n },\n onSend: (request, args) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.bbRequestId &&\n this.requests &&\n this.requests[request.bbRequestId]\n ) {\n this.requests[request.bbRequestId][\"request\"] = {\n payload: this.preparePayload(args.length > 0 ? args[0] : \"{}\"),\n headers: request.requestHeaders,\n };\n }\n\n this.cleanRequests();\n },\n onError: (request, args) => {\n if (\n !this.stopped &&\n this.requests &&\n request &&\n request.currentTarget &&\n request.currentTarget.bbRequestId &&\n this.requests[request.currentTarget.bbRequestId]\n ) {\n this.requests[request.currentTarget.bbRequestId][\"success\"] = false;\n this.calcRequestTime(request.bbRequestId);\n }\n\n this.cleanRequests();\n },\n onLoad: (request, args) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.currentTarget &&\n request.currentTarget.bbRequestId &&\n this.requests &&\n this.requests[request.currentTarget.bbRequestId]\n ) {\n var target = request.currentTarget;\n var responseType = target.responseType;\n var responseText = \"<\" + responseType + \">\";\n if (responseType === \"\" || responseType === \"text\") {\n responseText = this.cleanupContentSize(target.responseText);\n }\n\n this.requests[target.bbRequestId][\"success\"] = true;\n this.requests[target.bbRequestId][\"response\"] = {\n status: target.status,\n statusText: target.statusText,\n responseText: responseText,\n };\n\n this.calcRequestTime(target.bbRequestId);\n }\n\n this.cleanRequests();\n },\n });\n }\n\n interceptNetworkRequests(callback) {\n var self = this;\n const open = XMLHttpRequest.prototype.open;\n const send = XMLHttpRequest.prototype.send;\n\n // Only override open and send if they haven't been overridden already.\n if (XMLHttpRequest.prototype.gleapSetRequestHeader === undefined) {\n XMLHttpRequest.prototype.gleapSetRequestHeader =\n XMLHttpRequest.prototype.setRequestHeader;\n }\n\n if (XMLHttpRequest.prototype.gleapSetRequestHeader) {\n XMLHttpRequest.prototype.setRequestHeader = function (header, value) {\n if (!this.requestHeaders) {\n this.requestHeaders = {};\n }\n\n if (this.requestHeaders && this.requestHeaders.hasOwnProperty(header)) {\n return;\n }\n\n if (!this.requestHeaders[header]) {\n this.requestHeaders[header] = [];\n }\n\n this.requestHeaders[header].push(value);\n this.gleapSetRequestHeader(header, value);\n };\n }\n\n XMLHttpRequest.prototype.open = function () {\n this[\"bbRequestId\"] = ++self.requestId;\n callback.onOpen && callback.onOpen(this, arguments);\n if (callback.onLoad) {\n this.addEventListener(\"load\", callback.onLoad.bind(callback));\n }\n if (callback.onError) {\n this.addEventListener(\"error\", callback.onError.bind(callback));\n }\n return open.apply(this, arguments);\n };\n XMLHttpRequest.prototype.send = function () {\n callback.onSend && callback.onSend(this, arguments);\n return send.apply(this, arguments);\n };\n\n if (window.fetch) {\n (function () {\n var originalFetch = window.fetch;\n window.fetch = function () {\n var bbRequestId = ++self.requestId;\n callback.onFetch(arguments, bbRequestId);\n\n return originalFetch\n .apply(this, arguments)\n .then(function (response) {\n if (response && typeof response.clone === \"function\") {\n const data = response.clone();\n callback.onFetchLoad(data, bbRequestId);\n }\n\n return response;\n })\n .catch((err) => {\n callback.onFetchFailed(err, bbRequestId);\n throw err;\n });\n };\n })();\n }\n\n return callback;\n }\n\n blobToTextPromise(blob) {\n return new Promise(function (resolve, reject) {\n var fr = new FileReader();\n fr.onload = function (evt) {\n if (evt && evt.target && evt.target.result) {\n resolve(evt.target.result);\n } else {\n reject();\n }\n };\n fr.onerror = function (err) {\n reject(err);\n };\n fr.readAsText(blob);\n });\n }\n}\n\nexport default GleapNetworkIntercepter;\n","export const resizeImage = (base64Str, maxWidth = 400, maxHeight = 400) => {\n return new Promise((resolve, reject) => {\n var isJPEG = base64Str.indexOf(\"data:image/jpeg\") === 0;\n var img = new Image();\n img.src = base64Str;\n img.onerror = () => {\n reject();\n };\n img.onload = () => {\n var canvas = document.createElement(\"canvas\");\n var MAX_WIDTH = maxWidth;\n var MAX_HEIGHT = maxHeight;\n\n // Adjust max width / height based on image props\n if (maxWidth > img.width / 1.5) {\n MAX_WIDTH = img.width / 1.5;\n }\n\n if (maxHeight > img.height / 1.5) {\n MAX_HEIGHT = img.height / 1.5;\n }\n\n var width = img.width;\n var height = img.height;\n\n if (width > height) {\n if (width > MAX_WIDTH) {\n height *= MAX_WIDTH / width;\n width = MAX_WIDTH;\n }\n } else {\n if (height > MAX_HEIGHT) {\n width *= MAX_HEIGHT / height;\n height = MAX_HEIGHT;\n }\n }\n canvas.width = width;\n canvas.height = height;\n var ctx = canvas.getContext(\"2d\");\n ctx.drawImage(img, 0, 0, width, height);\n\n if (isJPEG) {\n resolve(canvas.toDataURL(\"image/jpeg\", 0.7));\n } else {\n resolve(canvas.toDataURL());\n }\n };\n });\n};\n\nexport const isMobile = () => {\n if (\n /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(\n navigator.userAgent\n ) ||\n /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(\n navigator.userAgent.substr(0, 4)\n )\n ) {\n return true;\n }\n return false;\n};\n\nexport const gleapDataParser = function (data) {\n if (typeof data === \"string\" || data instanceof String) {\n try {\n return JSON.parse(data);\n } catch (e) {\n return {};\n }\n }\n return data;\n};\n\nexport const truncateString = (str, num) => {\n if (str.length > num) {\n return str.slice(0, num) + \"...\";\n } else {\n return str;\n }\n};\n\nconst removeSubDomain = (v) => {\n try {\n var parts = v.split(\".\");\n var is2ndLevelDomain = false;\n const secondLevel = parts[parts.length - 2];\n if (\n secondLevel === \"co\" ||\n secondLevel === \"com\" ||\n secondLevel === \"gv\" ||\n secondLevel === \"ac\" ||\n secondLevel === \"edu\" ||\n secondLevel === \"gov\" ||\n secondLevel === \"mil\" ||\n secondLevel === \"net\" ||\n secondLevel === \"org\"\n ) {\n is2ndLevelDomain = true;\n }\n parts = parts.slice(is2ndLevelDomain ? -3 : -2);\n return parts.join(\".\");\n } catch (exp) {}\n return v;\n};\n\nexport const loadFromGleapCache = (key) => {\n try {\n const cachedData = localStorage.getItem(`gleap-widget-${key}`);\n if (cachedData) {\n const config = JSON.parse(cachedData);\n return config;\n }\n } catch (exp) {}\n return null;\n};\n\nexport const saveToGleapCache = (key, data) => {\n const k = `gleap-widget-${key}`;\n if (data) {\n try {\n localStorage.setItem(k, JSON.stringify(data));\n } catch (exp) {}\n } else {\n localStorage.removeItem(k);\n }\n};\n\nexport const setGleapCookie = (name, value, days) => {\n try {\n var expires = \"\";\n if (days) {\n var date = new Date();\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\n expires = \"; expires=\" + date.toUTCString();\n }\n const host = removeSubDomain(window.location.host.split(\":\")[0]);\n document.cookie =\n name + \"=\" + (value || \"\") + expires + \"; path=/; domain=\" + host;\n } catch (exp) {}\n};\n\nexport const getGleapCookie = (name) => {\n try {\n var nameEQ = name + \"=\";\n var ca = document.cookie.split(\";\");\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n while (c.charAt(0) == \" \") c = c.substring(1, c.length);\n if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);\n }\n } catch (exp) {}\n return null;\n};\n\nexport const eraseGleapCookie = (name) => {\n try {\n const host = removeSubDomain(window.location.host.split(\":\")[0]);\n document.cookie =\n name + \"=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT; Domain=\" + host;\n } catch (exp) {}\n};\n\nexport const getDOMElementDescription = (element, html = true) => {\n var innerText = truncateString(element.innerText || \"\", 40)\n .replace(/(\\r\\n|\\n|\\r)/gm, \"\")\n .replace(/ +(?= )/g, \"\");\n var elementId = \"\";\n var elementClass = \"\";\n if (typeof element.getAttribute !== \"undefined\") {\n const elemId = element.getAttribute(\"id\");\n if (elemId) {\n elementId = ` id=\"${elemId}\"`;\n }\n const elemClass = element.getAttribute(\"class\");\n if (elemClass) {\n elementClass = ` class=\"${elemClass}\"`;\n }\n }\n const elementTag = (element.tagName || \"\").toLowerCase();\n\n var htmlPre = \"<\";\n var htmlPost = \">\";\n if (!html) {\n htmlPre = \"[\";\n htmlPost = \"]\";\n }\n\n return `${htmlPre}${elementTag}${elementId}${elementClass}${htmlPost}${innerText}${htmlPre}/${elementTag}${htmlPost}`;\n};\n\nexport const runFunctionWhenDomIsReady = (callback) => {\n if (\n document.readyState === \"complete\" ||\n document.readyState === \"loaded\" ||\n document.readyState === \"interactive\"\n ) {\n callback();\n } else {\n document.addEventListener(\"DOMContentLoaded\", () => {\n callback();\n });\n }\n};\n\nexport const fixGleapHeight = () => {\n try {\n if (\n \"visualViewport\" in window &&\n /iPad|iPhone|iPod/.test(navigator.userAgent)\n ) {\n let initialHeight = window.innerHeight;\n\n function updateContainerHeight() {\n try {\n const gleapFrameContainer = document.querySelector(\n \".gleap-frame-container-inner iframe\"\n );\n\n if (!gleapFrameContainer) {\n return;\n }\n\n // Check if the keyboard is open\n if (window.visualViewport.height < initialHeight) {\n gleapFrameContainer.style.setProperty(\n \"max-height\",\n window.visualViewport.height + \"px\",\n \"important\"\n );\n } else {\n // Remove the padding bottom\n gleapFrameContainer.style.removeProperty(\"max-height\");\n }\n } catch (error) {}\n }\n\n function handleOrientationChange() {\n try {\n // Update initial dimensions\n initialHeight = window.innerHeight;\n updateContainerHeight();\n } catch (error) {}\n }\n\n // Update on resize (keyboard show/hide and viewport resize)\n window.visualViewport.addEventListener(\"resize\", updateContainerHeight);\n\n // Handle orientation changes\n window.addEventListener(\"orientationchange\", handleOrientationChange);\n\n // Update initially\n updateContainerHeight();\n }\n } catch (error) {}\n};\n","import { GleapSession, GleapTranslationManager } from \"./Gleap\"; // Adjust path if needed\n\n// Enum for request states\nconst RequestStatus = {\n PENDING: \"pending\",\n SUCCESS: \"success\",\n ERROR: \"error\",\n};\n\nclass ChecklistNetworkManager {\n static instance = null;\n\n /** @private {Map>} outboundId -> Promise */\n validationRequests = new Map();\n /** @private {Map} */\n validationCache = new Map(); // Caches final results (success/error)\n\n /** @private {Map>} internalId -> Promise */\n fetchRequests = new Map();\n /** @private {Map} */\n fetchCache = new Map(); // Caches final results (success/error)\n\n // Private constructor for Singleton\n constructor() {\n if (ChecklistNetworkManager.instance) {\n return ChecklistNetworkManager.instance;\n }\n ChecklistNetworkManager.instance = this;\n }\n\n /**\n * Gets the singleton instance of the ChecklistNetworkManager.\n * @returns {ChecklistNetworkManager} The singleton instance.\n */\n static getInstance() {\n if (!ChecklistNetworkManager.instance) {\n ChecklistNetworkManager.instance = new ChecklistNetworkManager();\n }\n return ChecklistNetworkManager.instance;\n }\n\n clearCache() {\n this.validationCache.clear();\n this.fetchCache.clear();\n this.validationRequests.clear();\n this.fetchRequests.clear();\n }\n\n /**\n * @private\n * Gets common query parameters for API requests.\n * @returns {string} Query parameter string.\n */\n _getQueryParams() {\n const gleapSessionInstance = GleapSession.getInstance();\n const session = gleapSessionInstance?.session;\n const lang =\n GleapTranslationManager.getInstance().getActiveLanguage() || \"en\";\n return `gleapId=${session?.gleapId || \"\"}&gleapHash=${\n session?.gleapHash || \"\"\n }&lang=${lang}`;\n }\n\n /**\n * @private\n * Gets the API base URL.\n * @returns {string | null} The API URL or null if not configured.\n */\n _getApiUrl() {\n const gleapSessionInstance = GleapSession.getInstance();\n return gleapSessionInstance?.apiUrl || null;\n }\n\n /**\n * @private\n * Makes an XMLHttpRequest and returns a Promise.\n * @param {string} method - HTTP method.\n * @param {string} url - The request URL.\n * @param {object|null} data - Data to send in the request body.\n * @returns {Promise} Promise resolving with parsed JSON response on success, rejecting on error.\n */\n _makeRequest(method, url, data) {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n xhr.open(method, url);\n\n const gleapSessionInstance = GleapSession.getInstance();\n gleapSessionInstance?.injectSession(xhr); // Inject session headers\n\n if (data) {\n xhr.setRequestHeader(\"Content-Type\", \"application/json;charset=UTF-8\");\n }\n\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n if (xhr.status >= 200 && xhr.status < 300) {\n try {\n // Handle potential empty success responses (e.g., 204)\n const responseData = xhr.responseText\n ? JSON.parse(xhr.responseText)\n : null;\n resolve(responseData);\n } catch (err) {\n reject({\n status: xhr.status,\n statusText: \"JSON Parse Error\",\n responseText: xhr.responseText,\n error: err,\n });\n }\n } else {\n reject({\n status: xhr.status,\n statusText: xhr.statusText,\n responseText: xhr.responseText,\n });\n }\n }\n };\n\n xhr.onerror = () => {\n reject({ status: 0, statusText: \"Network Error\", responseText: null });\n };\n\n xhr.send(data ? JSON.stringify(data) : null);\n });\n }\n\n /**\n * @private\n * Creates a cache key from outboundId and sharedKey\n * @param {string} outboundId - The public/outbound checklist ID.\n * @param {string|undefined} sharedKey - Optional shared key.\n * @returns {string} Combined cache key.\n */\n _createCacheKey(outboundId, sharedKey) {\n return sharedKey ? `${outboundId}::${sharedKey}` : outboundId;\n }\n\n /**\n * Validates an outbound checklist ID, returning a Promise for the internal ID.\n * Manages caching and deduplicates requests.\n * @param {string} outboundId - The public/outbound checklist ID.\n * @param {string} [sharedKey] - Optional shared key for the checklist.\n * @returns {Promise} A promise that resolves with the internal checklist ID.\n */\n validateChecklist(outboundId, sharedKey) {\n const cacheKey = this._createCacheKey(outboundId, sharedKey);\n\n // 1. Check cache for final result (success or error)\n const cachedResult = this.validationCache.get(cacheKey);\n if (cachedResult) {\n if (cachedResult.status === RequestStatus.SUCCESS) {\n return Promise.resolve(cachedResult.internalId);\n } else {\n return Promise.reject(cachedResult.error);\n }\n }\n\n // 2. Check for an ongoing request\n if (this.validationRequests.has(cacheKey)) {\n return this.validationRequests.get(cacheKey);\n }\n\n // 3. Start a new request\n const apiUrl = this._getApiUrl();\n if (!apiUrl) {\n const error = new Error(\n \"ChecklistNetworkManager: Gleap API URL not configured.\"\n );\n this.validationCache.set(cacheKey, {\n status: RequestStatus.ERROR,\n error,\n });\n return Promise.reject(error);\n }\n\n const url = `${apiUrl}/outbound/checklists?${this._getQueryParams()}`;\n const requestPromise = this._makeRequest(\"POST\", url, {\n outboundId,\n sharedKey,\n })\n .then((responseData) => {\n if (responseData && responseData.id) {\n this.validationCache.set(cacheKey, {\n status: RequestStatus.SUCCESS,\n internalId: responseData.id,\n });\n return responseData.id;\n } else {\n const error = new Error(\"Validation response missing checklist ID.\");\n this.validationCache.set(cacheKey, {\n status: RequestStatus.ERROR,\n error: responseData || error,\n });\n throw error; // Rethrow to be caught by catch block\n }\n })\n .catch((error) => {\n // Store the error object itself in the cache\n this.validationCache.set(cacheKey, {\n status: RequestStatus.ERROR,\n error,\n });\n throw error; // Re-throw so callers can catch it\n })\n .finally(() => {\n // Remove from pending requests map once done (success or fail)\n this.validationRequests.delete(cacheKey);\n });\n\n // Store the promise for potential concurrent requests\n this.validationRequests.set(cacheKey, requestPromise);\n return requestPromise;\n }\n\n /**\n * Fetches the full checklist data using the internal ID, returning a Promise.\n * Manages caching and deduplicates requests.\n * @param {string} internalId - The internal checklist ID.\n * @returns {Promise} A promise that resolves with the full checklist data.\n */\n fetchChecklist(internalId) {\n // 1. Check cache for final result (success or error)\n const cachedResult = this.fetchCache.get(internalId);\n if (cachedResult) {\n if (cachedResult.status === RequestStatus.SUCCESS) {\n // Return a deep copy to prevent mutation issues if multiple components use it\n return Promise.resolve(JSON.parse(JSON.stringify(cachedResult.data)));\n } else {\n return Promise.reject(cachedResult.error);\n }\n }\n\n // 2. Check for an ongoing request\n if (this.fetchRequests.has(internalId)) {\n // Return a promise that resolves with a deep copy\n return this.fetchRequests\n .get(internalId)\n .then((data) => JSON.parse(JSON.stringify(data)));\n }\n\n // 3. Start a new request\n const apiUrl = this._getApiUrl();\n if (!apiUrl) {\n const error = new Error(\n \"ChecklistNetworkManager: Gleap API URL not configured.\"\n );\n this.fetchCache.set(internalId, { status: RequestStatus.ERROR, error });\n return Promise.reject(error);\n }\n\n const url = `${apiUrl}/outbound/checklists/${internalId}?convertTipTap=true&${this._getQueryParams()}`;\n const requestPromise = this._makeRequest(\"GET\", url, null)\n .then((responseData) => {\n if (responseData) {\n // Cache the successful data\n this.fetchCache.set(internalId, {\n status: RequestStatus.SUCCESS,\n data: responseData,\n });\n // Return a deep copy of the data\n return JSON.parse(JSON.stringify(responseData));\n } else {\n // Should not happen with successful GET usually, but handle defensively\n const error = new Error(\n \"Empty response received for checklist fetch.\"\n );\n this.fetchCache.set(internalId, {\n status: RequestStatus.ERROR,\n error: responseData || error,\n });\n throw error;\n }\n })\n .catch((error) => {\n this.fetchCache.set(internalId, { status: RequestStatus.ERROR, error });\n throw error; // Re-throw so callers can catch it\n })\n .finally(() => {\n // Remove from pending requests map once done (success or fail)\n this.fetchRequests.delete(internalId);\n });\n\n this.fetchRequests.set(internalId, requestPromise);\n // Return a promise that resolves with a deep copy\n return requestPromise.then((data) => JSON.parse(JSON.stringify(data)));\n }\n}\n\nexport default ChecklistNetworkManager;\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n const lr = ['left', 'right'];\n const rl = ['right', 'left'];\n const tb = ['top', 'bottom'];\n const bt = ['bottom', 'top'];\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rl : lr;\n return isStart ? lr : rl;\n case 'left':\n case 'right':\n return isStart ? tb : bt;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n return {\n ...rect,\n top: rect.y,\n left: rect.x,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n ...rects.floating,\n x,\n y\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n if (!specifiedFallbackPlacements && fallbackAxisSideDirection !== 'none') {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$map$so;\n const placement = (_overflowsData$map$so = overflowsData.map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$map$so[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: 0,\n crossAxis: 0,\n alignmentAxis: null,\n ...rawValue\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = ['top', 'left'].includes(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const overflowAvailableHeight = height - overflow[heightSide];\n const overflowAvailableWidth = width - overflow[widthSide];\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if (isYAxis) {\n const maximumClippingWidth = width - overflow.left - overflow.right;\n availableWidth = alignment || noShift ? min(overflowAvailableWidth, maximumClippingWidth) : maximumClippingWidth;\n } else {\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n availableHeight = alignment || noShift ? min(overflowAvailableHeight, maximumClippingHeight) : maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n // Browsers without `ShadowRoot` support.\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isContainingBlock(element) {\n const webkit = isWebKit();\n const css = getComputedStyle(element);\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n return css.transform !== 'none' || css.perspective !== 'none' || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else {\n currentNode = getParentNode(currentNode);\n }\n }\n return null;\n}\nfunction isWebKit() {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nfunction isLastTraversableNode(node) {\n return ['html', 'body', '#document'].includes(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.pageXOffset,\n scrollTop: element.pageYOffset\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], win.frameElement && traverseIframes ? getOverflowAncestors(win.frameElement) : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isWebKit };\n","import { rectToClientRect, autoPlacement as autoPlacement$1, shift as shift$1, flip as flip$1, size as size$1, hide as hide$1, arrow as arrow$1, inline as inline$1, limitShift as limitShift$1, computePosition as computePosition$1 } from '@floating-ui/core';\nexport { detectOverflow, offset } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement, isElement, getWindow, isWebKit, getDocumentElement, getNodeName, isOverflowElement, getNodeScroll, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = currentWin.frameElement;\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = currentWin.frameElement;\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\nconst topLayerSelectors = [':popover-open', ':modal'];\nfunction isTopLayer(floating) {\n return topLayerSelectors.some(selector => {\n try {\n return floating.matches(selector);\n } catch (e) {\n return false;\n }\n });\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\nfunction getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n ...clippingAncestor,\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n const x = rect.left + scroll.scrollLeft - offsets.x;\n const y = rect.top + scroll.scrollTop - offsets.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n return element.offsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const window = getWindow(element);\n if (!isHTMLElement(element) || isTopLayer(element)) {\n return window;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && !isContainingBlock(offsetParent))) {\n return window;\n }\n return offsetParent || getContainingBlock(element) || window;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n ...(await getDimensionsFn(data.floating))\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const {\n left,\n top,\n width,\n height\n } = element.getBoundingClientRect();\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 100);\n } else {\n refresh(false, ratio);\n }\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle `;\n document.body.appendChild(elem);\n\n this.gleapFrameContainer = elem;\n this.gleapFrame = document.querySelector(\".gleap-frame\");\n\n this.updateFrameStyle();\n\n // Show loading preview for widget app mode.\n if (this.appMode === \"widget\") {\n this.showFrameContainer(true);\n }\n });\n });\n };\n\n showImage = (url) => {\n runFunctionWhenDomIsReady(() => {\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-image-view\";\n elem.innerHTML = `
\n \n
`;\n document.body.appendChild(elem);\n\n const closeElement = () => {\n elem.remove();\n };\n\n const close = elem.querySelector(\".gleap-image-view-close\");\n close.addEventListener(\"click\", () => {\n closeElement();\n });\n\n elem.addEventListener(\"click\", (e) => {\n if (e.target === elem) {\n closeElement();\n }\n });\n });\n };\n\n updateFrameStyle = () => {\n if (!this.gleapFrameContainer) {\n return;\n }\n\n const surveyStyle = \"gleap-frame-container--survey\";\n const extendedStyle = \"gleap-frame-container--extended\";\n const surveyFullStyle = \"gleap-frame-container--survey-full\";\n const classicStyle = \"gleap-frame-container--classic\";\n const classicStyleLeft = \"gleap-frame-container--classic-left\";\n const modernStyleLeft = \"gleap-frame-container--modern-left\";\n const noButtonStyleLeft = \"gleap-frame-container--no-button\";\n const allStyles = [\n classicStyle,\n classicStyleLeft,\n extendedStyle,\n modernStyleLeft,\n noButtonStyleLeft,\n surveyStyle,\n surveyFullStyle,\n ];\n for (let i = 0; i < allStyles.length; i++) {\n this.gleapFrameContainer.classList.remove(allStyles[i]);\n }\n\n var styleToApply = undefined;\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM\n ) {\n styleToApply = classicStyle;\n }\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT\n ) {\n styleToApply = classicStyleLeft;\n }\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_BOTTOM_LEFT\n ) {\n styleToApply = modernStyleLeft;\n }\n if (GleapFeedbackButtonManager.getInstance().buttonHidden === null) {\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_NONE\n ) {\n styleToApply = noButtonStyleLeft;\n }\n } else {\n if (GleapFeedbackButtonManager.getInstance().buttonHidden) {\n styleToApply = noButtonStyleLeft;\n }\n }\n if (styleToApply) {\n this.gleapFrameContainer.classList.add(styleToApply);\n }\n\n if (this.appMode === \"survey\") {\n this.gleapFrameContainer.classList.add(surveyStyle);\n }\n if (this.appMode === \"survey_full\" || this.appMode === \"survey_web\") {\n this.gleapFrameContainer.classList.add(surveyFullStyle);\n }\n if (this.appMode === \"extended\") {\n this.gleapFrameContainer.classList.add(extendedStyle);\n }\n\n this.gleapFrameContainer.setAttribute(\n \"dir\",\n GleapTranslationManager.getInstance().isRTLLayout ? \"rtl\" : \"ltr\"\n );\n };\n\n showFrameContainer(showLoader) {\n if (!this.gleapFrameContainer) {\n return;\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const loadingClass = \"gleap-frame-container--loading\";\n if (this.gleapFrameContainer.classList) {\n this.gleapFrameContainer.classList.remove(\n \"gleap-frame-container--hidden\"\n );\n if (showLoader) {\n this.gleapFrameContainer.classList.add(loadingClass);\n\n if (flowConfig.disableBGFade) {\n this.gleapFrameContainer.classList.add(\n \"gleap-frame-container--loading-nofade\"\n );\n }\n if (flowConfig.disableBGGradient) {\n this.gleapFrameContainer.classList.add(\n \"gleap-frame-container--loading-nogradient\"\n );\n }\n } else {\n this.gleapFrameContainer.classList.remove(loadingClass);\n }\n\n setTimeout(() => {\n this.gleapFrameContainer.classList.add(\n \"gleap-frame-container--animate\"\n );\n }, 500);\n }\n\n this.widgetOpened = true;\n this.updateUI();\n }\n\n runWidgetShouldOpenCallback() {\n if (!this.gleapFrameContainer) {\n return;\n }\n\n this.workThroughQueue();\n\n Gleap.getInstance().setGlobalDataItem(\"snapshotPosition\", {\n x: window.scrollX,\n y: window.scrollY,\n });\n\n this.showFrameContainer(false);\n this.updateWidgetStatus();\n\n GleapEventManager.notifyEvent(\"open\");\n this.registerEscListener();\n }\n\n updateUI() {\n // Clear notifications only when not opening a survey.\n GleapNotificationManager.getInstance().clearAllNotifications(\n this.isSurvey()\n );\n\n GleapFeedbackButtonManager.getInstance().updateNotificationBadge(0);\n GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n }\n\n showWidget() {\n setTimeout(() => {\n if (this.gleapFrameContainer) {\n this.runWidgetShouldOpenCallback();\n } else {\n GleapFrameManager.getInstance().injectFrame();\n }\n this.updateUI();\n }, 0);\n }\n\n updateWidgetStatus() {\n this.sendMessage({\n name: \"widget-status-update\",\n data: {\n isWidgetOpen: this.widgetOpened,\n },\n });\n }\n\n hideMarkerManager() {\n if (this.markerManager) {\n this.markerManager.clear();\n this.markerManager = null;\n }\n }\n\n hideWidget(resetRoutes = false) {\n // Prevent for survey web.\n if (this.appMode === \"survey_web\") {\n return;\n }\n\n this.hideMarkerManager();\n if (this.gleapFrameContainer) {\n this.gleapFrameContainer.classList.add(\"gleap-frame-container--hidden\");\n this.gleapFrameContainer.classList.remove(\n \"gleap-frame-container--animate\"\n );\n }\n if (resetRoutes) {\n this.sendMessage({\n name: \"reset-routes\",\n data: {},\n });\n }\n this.widgetOpened = false;\n this.updateWidgetStatus();\n GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n GleapEventManager.notifyEvent(\"close\");\n GleapNotificationManager.getInstance().reloadNotificationsFromCache();\n\n this.unregisterEscListener();\n\n if (typeof window !== \"undefined\" && typeof window.focus !== \"undefined\") {\n window.focus();\n }\n }\n\n sendMessage(data, queue = false) {\n try {\n this.gleapFrame = document.querySelector(\".gleap-frame\");\n if (this.comReady && this.gleapFrame && this.gleapFrame.contentWindow) {\n this.gleapFrame.contentWindow.postMessage(JSON.stringify(data), \"*\");\n } else {\n if (queue) {\n this.queue.push(data);\n }\n }\n } catch (e) {}\n }\n\n sendSessionUpdate() {\n this.sendMessage({\n name: \"session-update\",\n data: {\n sessionData: GleapSession.getInstance().getSession(),\n apiUrl: GleapSession.getInstance().apiUrl,\n sdkKey: GleapSession.getInstance().sdkKey,\n },\n });\n }\n\n sendConfigUpdate() {\n if (!this.comReady) {\n return;\n }\n\n this.sendMessage({\n name: \"config-update\",\n data: {\n config: GleapConfigManager.getInstance().getFlowConfig(),\n aiTools: GleapConfigManager.getInstance().getAiTools(),\n overrideLanguage:\n GleapTranslationManager.getInstance().getOverrideLanguage(),\n },\n });\n\n this.updateFrameStyle();\n }\n\n showDrawingScreen(type) {\n this.hideWidget();\n\n // Show screen drawing.\n this.markerManager = new GleapMarkerManager(type);\n this.markerManager.show((success) => {\n if (!success) {\n this.hideMarkerManager();\n }\n this.showWidget();\n });\n }\n\n workThroughQueue() {\n const workQueue = [...this.queue];\n this.queue = [];\n for (let i = 0; i < workQueue.length; i++) {\n this.sendMessage(workQueue[i], true);\n }\n }\n\n startCommunication() {\n // Listen for messages.\n this.addMessageListener((data) => {\n if (data.name === \"ping\") {\n this.comReady = true;\n this.sendConfigUpdate();\n this.sendSessionUpdate();\n this.workThroughQueue();\n setTimeout(() => {\n this.runWidgetShouldOpenCallback();\n }, 300);\n }\n\n if (data.name === \"play-ping\") {\n GleapAudioManager.ping();\n }\n\n if (data.name === \"open-image\") {\n this.showImage(data.data.url);\n }\n\n if (data.name === \"page-changed\") {\n if (\n data.data &&\n (data.data.name === \"newsdetails\" || data.data.name === \"appextended\")\n ) {\n this.setAppMode(\"extended\");\n } else {\n if (this.appMode === \"extended\") {\n this.setAppMode(\"widget\");\n }\n }\n }\n\n if (data.name === \"collect-ticket-data\") {\n var ticketData = {\n customData: GleapCustomDataManager.getInstance().getCustomData(),\n metaData: GleapMetaDataManager.getInstance().getMetaData(),\n consoleLog: GleapConsoleLogManager.getInstance().getLogs(),\n networkLogs: GleapNetworkIntercepter.getInstance().getRequests(),\n customEventLog: GleapStreamedEvent.getInstance().getEventArray(),\n formData: GleapCustomDataManager.getInstance().getTicketAttributes(),\n };\n\n // Add tags\n const tags = GleapTagManager.getInstance().getTags();\n if (tags && tags.length > 0) {\n ticketData.tags = tags;\n }\n\n this.sendMessage({\n name: \"collect-ticket-data\",\n data: ticketData,\n });\n }\n\n if (data.name === \"height-update\") {\n this.frameHeight = data.data;\n\n const innerContainer = document.querySelector(\n \".gleap-frame-container-inner\"\n );\n if (\n (this.appMode === \"survey\" ||\n this.appMode === \"survey_full\" ||\n this.appMode === \"survey_web\") &&\n innerContainer\n ) {\n innerContainer.style.maxHeight = `${this.frameHeight}px`;\n }\n }\n\n if (data.name === \"notify-event\") {\n GleapEventManager.notifyEvent(data.data.type, data.data.data);\n }\n\n if (data.name === \"cleanup-drawings\") {\n this.hideMarkerManager();\n }\n\n if (data.name === \"open-url\") {\n const url = data.data;\n const newTab = data.newTab ? true : false;\n this.urlHandler(url, newTab);\n }\n\n if (data.name === \"start-product-tour\") {\n Gleap.startProductTour(data.data?.tourId, true);\n }\n\n if (data.name === \"run-custom-action\") {\n GleapCustomActionManager.triggerCustomAction(data.data, {\n shareToken: data.shareToken,\n });\n }\n\n if (data.name === \"close-widget\") {\n this.hideWidget();\n }\n\n if (data.name === \"tool-execution\") {\n GleapEventManager.notifyEvent(\"tool-execution\", data.data);\n }\n\n if (data.name === \"send-feedback\") {\n const formData = data.data.formData;\n const action = data.data.action;\n const outboundId = data.data.outboundId;\n const spamToken = data.data.spamToken;\n\n const feedback = new GleapFeedback(\n action.feedbackType,\n \"MEDIUM\",\n formData,\n false,\n action.excludeData,\n outboundId,\n spamToken\n );\n feedback\n .sendFeedback()\n .then((feedbackData) => {\n this.sendMessage({\n name: \"feedback-sent\",\n data: feedbackData,\n });\n GleapEventManager.notifyEvent(\"feedback-sent\", formData);\n\n if (outboundId && outboundId.length > 0) {\n GleapEventManager.notifyEvent(\"outbound-sent\", {\n outboundId: outboundId,\n outbound: action,\n formData: formData,\n });\n\n try {\n delete formData.reportedBy;\n } catch (e) {}\n Gleap.trackEvent(`outbound-${outboundId}-submitted`, formData);\n }\n })\n .catch((error) => {\n this.sendMessage({\n name: \"feedback-sending-failed\",\n data: \"Something went wrong, please try again.\",\n });\n GleapEventManager.notifyEvent(\"error-while-sending\");\n });\n }\n\n if (data.name === \"start-screen-drawing\") {\n this.showDrawingScreen(data.data);\n }\n });\n\n // Add window message listener.\n window.addEventListener(\"message\", (event) => {\n if (\n event.origin !== this.frameUrl &&\n event.origin !== GleapBannerManager.getInstance().bannerUrl\n ) {\n return;\n }\n\n try {\n const data = JSON.parse(event.data);\n for (var i = 0; i < this.listeners.length; i++) {\n if (this.listeners[i]) {\n this.listeners[i](data);\n }\n }\n } catch (exp) {}\n });\n }\n\n addMessageListener(callback) {\n this.listeners.push(callback);\n }\n}\n","import { isMobile } from \"./GleapHelper\";\n\nexport default class GleapMetaDataManager {\n sessionStart = new Date();\n appBuildNumber = \"\";\n appVersionCode = \"\";\n environment = \"prod\";\n\n // GleapMetaDataManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapMetaDataManager();\n }\n return this.instance;\n }\n\n /**\n * Sets the app version code.\n * @param {string} appVersionCode\n */\n static setAppVersionCode(appVersionCode) {\n this.getInstance().appVersionCode = appVersionCode;\n }\n\n /**\n * Sets the app version code.\n * @param {string} appVersionCode\n */\n static setAppBuildNumber(appBuildNumber) {\n this.getInstance().appBuildNumber = appBuildNumber;\n }\n\n getSessionDuration() {\n const now = new Date();\n return Math.round((now.getTime() - this.sessionStart.getTime()) / 1000);\n }\n\n getMetaData() {\n var nAgt = navigator.userAgent;\n var browserName = navigator.appName;\n var fullVersion = \"\" + parseFloat(navigator.appVersion);\n var majorVersion = parseInt(navigator.appVersion, 10);\n var nameOffset, verOffset, ix;\n\n // In Opera, the true version is after \"Opera\" or after \"Version\"\n if ((verOffset = nAgt.indexOf(\"Opera\")) !== -1) {\n browserName = \"Opera\";\n fullVersion = nAgt.substring(verOffset + 6);\n if ((verOffset = nAgt.indexOf(\"Version\")) !== -1)\n fullVersion = nAgt.substring(verOffset + 8);\n }\n // In MSIE, the true version is after \"MSIE\" in userAgent\n else if ((verOffset = nAgt.indexOf(\"MSIE\")) !== -1) {\n browserName = \"Microsoft Internet Explorer\";\n fullVersion = nAgt.substring(verOffset + 5);\n }\n // In Chrome, the true version is after \"Chrome\"\n else if ((verOffset = nAgt.indexOf(\"Chrome\")) !== -1) {\n browserName = \"Chrome\";\n fullVersion = nAgt.substring(verOffset + 7);\n }\n // In Safari, the true version is after \"Safari\" or after \"Version\"\n else if ((verOffset = nAgt.indexOf(\"Safari\")) !== -1) {\n browserName = \"Safari\";\n fullVersion = nAgt.substring(verOffset + 7);\n if ((verOffset = nAgt.indexOf(\"Version\")) !== -1)\n fullVersion = nAgt.substring(verOffset + 8);\n }\n // In Firefox, the true version is after \"Firefox\"\n else if ((verOffset = nAgt.indexOf(\"Firefox\")) !== -1) {\n browserName = \"Firefox\";\n fullVersion = nAgt.substring(verOffset + 8);\n }\n // In most other browsers, \"name/version\" is at the end of userAgent\n else if (\n (nameOffset = nAgt.lastIndexOf(\" \") + 1) <\n (verOffset = nAgt.lastIndexOf(\"/\"))\n ) {\n browserName = nAgt.substring(nameOffset, verOffset);\n fullVersion = nAgt.substring(verOffset + 1);\n if (browserName.toLowerCase() === browserName.toUpperCase()) {\n browserName = navigator.appName;\n }\n }\n // trim the fullVersion string at semicolon/space if present\n if ((ix = fullVersion.indexOf(\";\")) !== -1)\n fullVersion = fullVersion.substring(0, ix);\n if ((ix = fullVersion.indexOf(\" \")) !== -1)\n fullVersion = fullVersion.substring(0, ix);\n\n majorVersion = parseInt(\"\" + fullVersion, 10);\n if (isNaN(majorVersion)) {\n fullVersion = \"\" + parseFloat(navigator.appVersion);\n majorVersion = parseInt(navigator.appVersion, 10);\n }\n\n var OSName = \"Unknown OS\";\n if (navigator.appVersion.indexOf(\"Win\") !== -1) OSName = \"Windows\";\n if (navigator.appVersion.indexOf(\"Mac\") !== -1) OSName = \"MacOS\";\n if (navigator.appVersion.indexOf(\"X11\") !== -1) OSName = \"UNIX\";\n if (navigator.appVersion.indexOf(\"Linux\") !== -1) OSName = \"Linux\";\n if (navigator.appVersion.indexOf(\"iPad\") !== -1) OSName = \"iPad\";\n if (navigator.appVersion.indexOf(\"iPhone\") !== -1) OSName = \"iPhone\";\n if (navigator.appVersion.indexOf(\"Android\") !== -1) OSName = \"Android\";\n\n return {\n browserName: browserName + \"(\" + fullVersion + \")\",\n userAgent: nAgt,\n browser: browserName,\n systemName: OSName,\n buildVersionNumber: this.appBuildNumber,\n releaseVersionNumber: this.appVersionCode,\n sessionDuration: this.getSessionDuration(),\n devicePixelRatio: window.devicePixelRatio,\n screenWidth: window.screen.width,\n screenHeight: window.screen.height,\n innerWidth: window.innerWidth,\n innerHeight: window.innerHeight,\n currentUrl: window.location.href,\n language: navigator.language || navigator.userLanguage,\n mobile: isMobile(),\n sdkVersion: SDK_VERSION,\n sdkType: \"javascript\",\n environment: this.environment,\n };\n }\n}\n","import { truncateString } from \"./GleapHelper\";\n\nexport default class GleapConsoleLogManager {\n logArray = [];\n disabled = false;\n originalConsoleLog;\n logMaxLength = 500;\n\n // GleapConsoleLogManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapConsoleLogManager();\n }\n return this.instance;\n }\n\n /**\n * Return the console logs\n * @returns {any[]} logs\n */\n getLogs() {\n return this.logArray;\n }\n\n /**\n * Revert console log overwrite.\n */\n stop() {\n this.disabled = true;\n if (this.originalConsoleLog) {\n window.console = this.originalConsoleLog;\n }\n }\n\n /**\n * Add message with log level to logs.\n * @param {*} message\n * @param {*} logLevel\n * @returns\n */\n addLog(message, logLevel = \"INFO\") {\n if (!message || message.length <= 0) {\n return;\n }\n\n this.logArray.push({\n log: truncateString(message, 1000),\n date: new Date(),\n priority: logLevel,\n });\n\n if (this.logArray.length > this.logMaxLength) {\n this.logArray.shift();\n }\n }\n\n /**\n * Add entry to logs.\n * @param {*} args\n * @param {*} logLevel\n * @returns\n */\n addLogWithArgs(args, logLevel) {\n if (!args || args.length <= 0) {\n return;\n }\n\n var log = \"\";\n try {\n for (var i = 0; i < args.length; i++) {\n log += args[i] + \" \";\n }\n } catch (exp) {}\n\n this.addLog(log, logLevel);\n }\n\n /**\n * Start console log overwrite.\n */\n start() {\n if (this.disabled) {\n return;\n }\n\n const self = this;\n window.console = (function (origConsole) {\n if (!window.console || !origConsole) {\n origConsole = {};\n }\n\n self.originalConsoleLog = origConsole;\n\n return {\n ...origConsole,\n log: function () {\n self.addLogWithArgs(arguments, \"INFO\");\n origConsole.log && origConsole.log.apply(origConsole, arguments);\n },\n warn: function () {\n self.addLogWithArgs(arguments, \"WARNING\");\n origConsole.warn && origConsole.warn.apply(origConsole, arguments);\n },\n error: function () {\n self.addLogWithArgs(arguments, \"ERROR\");\n origConsole.error && origConsole.error.apply(origConsole, arguments);\n },\n info: function (v) {\n self.addLogWithArgs(arguments, \"INFO\");\n origConsole.info && origConsole.info.apply(origConsole, arguments);\n },\n };\n })(window.console);\n }\n}\n","import { GleapConsoleLogManager, GleapFrameManager, handleGleapLink } from \"./Gleap\";\nimport { getDOMElementDescription } from \"./GleapHelper\";\n\nexport default class GleapClickListener {\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapClickListener();\n }\n return this.instance;\n }\n\n start() {\n document.addEventListener(\"click\", (e) => {\n if (!e.target) {\n return;\n }\n\n if (e.target.tagName === 'A' && e.target.protocol === 'gleap:') {\n e.preventDefault();\n\n const href = e.target.href;\n handleGleapLink(href);\n }\n\n if (!GleapFrameManager.getInstance().isOpened()) {\n GleapConsoleLogManager.getInstance().addLog(\n getDOMElementDescription(e.target),\n \"CLICK\"\n );\n }\n });\n }\n}\n","import { gleapDataParser } from \"./GleapHelper\";\n\nexport default class GleapCustomDataManager {\n customData = {};\n ticketAttributes = {};\n\n // GleapCustomDataManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapCustomDataManager();\n }\n return this.instance;\n }\n\n /**\n * Returns the custom data object\n * @returns {*}\n */\n getCustomData() {\n return this.customData;\n }\n\n /**\n * Set custom data that will be attached to the bug-report.\n * @param {*} data\n */\n attachCustomData(data) {\n this.customData = Object.assign(\n this.customData,\n gleapDataParser(data)\n );\n }\n\n /**\n * Add one key value pair to the custom data object\n * @param {*} key The key of the custom data entry you want to add.\n * @param {*} value The custom data you want to add.\n */\n setCustomData(key, value) {\n this.customData[key] = value;\n }\n\n /**\n * Remove one key value pair of the custom data object\n * @param {*} key The key of the custom data entry you want to remove.\n */\n removeCustomData(key) {\n delete this.customData[key];\n }\n\n /**\n * Clear the custom data\n */\n clearCustomData() {\n this.customData = {};\n }\n\n /**\n * This method is used to set ticket attributes programmatically.\n * @param {*} key The key of the attribute you want to add.\n * @param {*} value The value to set.\n */\n setTicketAttribute(key, value) {\n this.ticketAttributes[key] = value;\n }\n\n /**\n * This method is used to unset ticket attributes programmatically.\n * @param {*} key The key of the attribute you want to unset.\n */\n unsetTicketAttribute(key) {\n delete this.ticketAttributes[key];\n }\n\n /**\n * This method is used to clear ticket attributes programmatically.\n */\n clearTicketAttributes() {\n this.ticketAttributes = {};\n }\n\n getTicketAttributes() {\n return this.ticketAttributes;\n }\n}\n","import Gleap from \"./Gleap\";\n\nexport default class GleapEventManager {\n eventListeners = {};\n\n // GleapEventManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapEventManager();\n }\n return this.instance;\n }\n\n /**\n * Notify all registrants for event.\n */\n static notifyEvent(event, data = {}) {\n if (event === \"flow-started\") {\n\n const gleapInstance = Gleap.getInstance();\n gleapInstance.setGlobalDataItem(\"webReplay\", null);\n gleapInstance.setGlobalDataItem(\"screenRecordingData\", null);\n gleapInstance.takeCurrentReplay();\n }\n\n const eventListeners = this.getInstance().eventListeners[event];\n if (eventListeners) {\n for (var i = 0; i < eventListeners.length; i++) {\n const eventListener = eventListeners[i];\n if (eventListener) {\n eventListener(data);\n }\n }\n }\n }\n\n /**\n * Register events for Gleap.\n * @param {*} eventName\n * @param {*} callback\n */\n static on(eventName, callback) {\n const instance = this.getInstance();\n if (!instance.eventListeners[eventName]) {\n instance.eventListeners[eventName] = [];\n }\n instance.eventListeners[eventName].push(callback);\n }\n}\n","export default class GleapCustomActionManager {\n customActionCallbacks = [];\n\n // GleapCustomActionManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapCustomActionManager();\n }\n return this.instance;\n }\n\n /**\n * Register custom action\n */\n static registerCustomAction(customAction) {\n const instance = this.getInstance();\n if (instance.customActionCallbacks) {\n instance.customActionCallbacks.push(customAction);\n }\n }\n\n /**\n * Triggers a custom action\n */\n static triggerCustomAction(name, data) {\n const instance = this.getInstance();\n if (instance.customActionCallbacks) {\n for (var i = 0; i < instance.customActionCallbacks.length; i++) {\n var callback = instance.customActionCallbacks[i];\n if (callback) {\n callback({\n name,\n ...(data ? data : {}),\n });\n }\n }\n }\n }\n}\n","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar _a;\nvar __defProp$1 = Object.defineProperty;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$1 = (obj, key, value) => __defNormalProp$1(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar NodeType$3 = /* @__PURE__ */ ((NodeType2) => {\n NodeType2[NodeType2[\"Document\"] = 0] = \"Document\";\n NodeType2[NodeType2[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType2[NodeType2[\"Element\"] = 2] = \"Element\";\n NodeType2[NodeType2[\"Text\"] = 3] = \"Text\";\n NodeType2[NodeType2[\"CDATA\"] = 4] = \"CDATA\";\n NodeType2[NodeType2[\"Comment\"] = 5] = \"Comment\";\n return NodeType2;\n})(NodeType$3 || {});\nconst testableAccessors$1 = {\n Node: [\"childNodes\", \"parentNode\", \"parentElement\", \"textContent\"],\n ShadowRoot: [\"host\", \"styleSheets\"],\n Element: [\"shadowRoot\", \"querySelector\", \"querySelectorAll\"],\n MutationObserver: []\n};\nconst testableMethods$1 = {\n Node: [\"contains\", \"getRootNode\"],\n ShadowRoot: [\"getSelection\"],\n Element: [],\n MutationObserver: [\"constructor\"]\n};\nconst untaintedBasePrototype$1 = {};\nconst isAngularZonePresent$1 = () => {\n return !!globalThis.Zone;\n};\nfunction getUntaintedPrototype$1(key) {\n if (untaintedBasePrototype$1[key])\n return untaintedBasePrototype$1[key];\n const defaultObj = globalThis[key];\n const defaultPrototype = defaultObj.prototype;\n const accessorNames = key in testableAccessors$1 ? testableAccessors$1[key] : void 0;\n const isUntaintedAccessors = Boolean(\n accessorNames && // @ts-expect-error 2345\n accessorNames.every(\n (accessor) => {\n var _a2, _b;\n return Boolean(\n (_b = (_a2 = Object.getOwnPropertyDescriptor(defaultPrototype, accessor)) == null ? void 0 : _a2.get) == null ? void 0 : _b.toString().includes(\"[native code]\")\n );\n }\n )\n );\n const methodNames = key in testableMethods$1 ? testableMethods$1[key] : void 0;\n const isUntaintedMethods = Boolean(\n methodNames && methodNames.every(\n // @ts-expect-error 2345\n (method) => {\n var _a2;\n return typeof defaultPrototype[method] === \"function\" && ((_a2 = defaultPrototype[method]) == null ? void 0 : _a2.toString().includes(\"[native code]\"));\n }\n )\n );\n if (isUntaintedAccessors && isUntaintedMethods && !isAngularZonePresent$1()) {\n untaintedBasePrototype$1[key] = defaultObj.prototype;\n return defaultObj.prototype;\n }\n try {\n const iframeEl = document.createElement(\"iframe\");\n document.body.appendChild(iframeEl);\n const win = iframeEl.contentWindow;\n if (!win) return defaultObj.prototype;\n const untaintedObject = win[key].prototype;\n document.body.removeChild(iframeEl);\n if (!untaintedObject) return defaultPrototype;\n return untaintedBasePrototype$1[key] = untaintedObject;\n } catch {\n return defaultPrototype;\n }\n}\nconst untaintedAccessorCache$1 = {};\nfunction getUntaintedAccessor$1(key, instance, accessor) {\n var _a2;\n const cacheKey = `${key}.${String(accessor)}`;\n if (untaintedAccessorCache$1[cacheKey])\n return untaintedAccessorCache$1[cacheKey].call(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype$1(key);\n const untaintedAccessor = (_a2 = Object.getOwnPropertyDescriptor(\n untaintedPrototype,\n accessor\n )) == null ? void 0 : _a2.get;\n if (!untaintedAccessor) return instance[accessor];\n untaintedAccessorCache$1[cacheKey] = untaintedAccessor;\n return untaintedAccessor.call(instance);\n}\nconst untaintedMethodCache$1 = {};\nfunction getUntaintedMethod$1(key, instance, method) {\n const cacheKey = `${key}.${String(method)}`;\n if (untaintedMethodCache$1[cacheKey])\n return untaintedMethodCache$1[cacheKey].bind(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype$1(key);\n const untaintedMethod = untaintedPrototype[method];\n if (typeof untaintedMethod !== \"function\") return instance[method];\n untaintedMethodCache$1[cacheKey] = untaintedMethod;\n return untaintedMethod.bind(instance);\n}\nfunction childNodes$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"childNodes\");\n}\nfunction parentNode$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"parentNode\");\n}\nfunction parentElement$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"parentElement\");\n}\nfunction textContent$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"textContent\");\n}\nfunction contains$1(n2, other) {\n return getUntaintedMethod$1(\"Node\", n2, \"contains\")(other);\n}\nfunction getRootNode$1(n2) {\n return getUntaintedMethod$1(\"Node\", n2, \"getRootNode\")();\n}\nfunction host$1(n2) {\n if (!n2 || !(\"host\" in n2)) return null;\n return getUntaintedAccessor$1(\"ShadowRoot\", n2, \"host\");\n}\nfunction styleSheets$1(n2) {\n return n2.styleSheets;\n}\nfunction shadowRoot$1(n2) {\n if (!n2 || !(\"shadowRoot\" in n2)) return null;\n return getUntaintedAccessor$1(\"Element\", n2, \"shadowRoot\");\n}\nfunction querySelector$1(n2, selectors) {\n return getUntaintedAccessor$1(\"Element\", n2, \"querySelector\")(selectors);\n}\nfunction querySelectorAll$1(n2, selectors) {\n return getUntaintedAccessor$1(\"Element\", n2, \"querySelectorAll\")(selectors);\n}\nfunction mutationObserverCtor$1() {\n return getUntaintedPrototype$1(\"MutationObserver\").constructor;\n}\nconst index$1 = {\n childNodes: childNodes$1,\n parentNode: parentNode$1,\n parentElement: parentElement$1,\n textContent: textContent$1,\n contains: contains$1,\n getRootNode: getRootNode$1,\n host: host$1,\n styleSheets: styleSheets$1,\n shadowRoot: shadowRoot$1,\n querySelector: querySelector$1,\n querySelectorAll: querySelectorAll$1,\n mutationObserver: mutationObserverCtor$1\n};\nfunction isElement(n2) {\n return n2.nodeType === n2.ELEMENT_NODE;\n}\nfunction isShadowRoot(n2) {\n const hostEl = (\n // anchor and textarea elements also have a `host` property\n // but only shadow roots have a `mode` property\n n2 && \"host\" in n2 && \"mode\" in n2 && index$1.host(n2) || null\n );\n return Boolean(\n hostEl && \"shadowRoot\" in hostEl && index$1.shadowRoot(hostEl) === n2\n );\n}\nfunction isNativeShadowDom(shadowRoot2) {\n return Object.prototype.toString.call(shadowRoot2) === \"[object ShadowRoot]\";\n}\nfunction fixBrowserCompatibilityIssuesInCSS(cssText) {\n if (cssText.includes(\" background-clip: text;\") && !cssText.includes(\" -webkit-background-clip: text;\")) {\n cssText = cssText.replace(\n /\\sbackground-clip:\\s*text;/g,\n \" -webkit-background-clip: text; background-clip: text;\"\n );\n }\n return cssText;\n}\nfunction escapeImportStatement(rule2) {\n const { cssText } = rule2;\n if (cssText.split('\"').length < 3) return cssText;\n const statement = [\"@import\", `url(${JSON.stringify(rule2.href)})`];\n if (rule2.layerName === \"\") {\n statement.push(`layer`);\n } else if (rule2.layerName) {\n statement.push(`layer(${rule2.layerName})`);\n }\n if (rule2.supportsText) {\n statement.push(`supports(${rule2.supportsText})`);\n }\n if (rule2.media.length) {\n statement.push(rule2.media.mediaText);\n }\n return statement.join(\" \") + \";\";\n}\nfunction stringifyStylesheet(s2) {\n try {\n const rules2 = s2.rules || s2.cssRules;\n if (!rules2) {\n return null;\n }\n let sheetHref = s2.href;\n if (!sheetHref && s2.ownerNode && s2.ownerNode.ownerDocument) {\n sheetHref = s2.ownerNode.ownerDocument.location.href;\n }\n const stringifiedRules = Array.from(\n rules2,\n (rule2) => stringifyRule(rule2, sheetHref)\n ).join(\"\");\n return fixBrowserCompatibilityIssuesInCSS(stringifiedRules);\n } catch (error) {\n return null;\n }\n}\nfunction stringifyRule(rule2, sheetHref) {\n if (isCSSImportRule(rule2)) {\n let importStringified;\n try {\n importStringified = // for same-origin stylesheets,\n // we can access the imported stylesheet rules directly\n stringifyStylesheet(rule2.styleSheet) || // work around browser issues with the raw string `@import url(...)` statement\n escapeImportStatement(rule2);\n } catch (error) {\n importStringified = rule2.cssText;\n }\n if (rule2.styleSheet.href) {\n return absolutifyURLs(importStringified, rule2.styleSheet.href);\n }\n return importStringified;\n } else {\n let ruleStringified = rule2.cssText;\n if (isCSSStyleRule(rule2) && rule2.selectorText.includes(\":\")) {\n ruleStringified = fixSafariColons(ruleStringified);\n }\n if (sheetHref) {\n return absolutifyURLs(ruleStringified, sheetHref);\n }\n return ruleStringified;\n }\n}\nfunction fixSafariColons(cssStringified) {\n const regex = /(\\[(?:[\\w-]+)[^\\\\])(:(?:[\\w-]+)\\])/gm;\n return cssStringified.replace(regex, \"$1\\\\$2\");\n}\nfunction isCSSImportRule(rule2) {\n return \"styleSheet\" in rule2;\n}\nfunction isCSSStyleRule(rule2) {\n return \"selectorText\" in rule2;\n}\nclass Mirror {\n constructor() {\n __publicField$1(this, \"idNodeMap\", /* @__PURE__ */ new Map());\n __publicField$1(this, \"nodeMetaMap\", /* @__PURE__ */ new WeakMap());\n }\n getId(n2) {\n var _a2;\n if (!n2) return -1;\n const id = (_a2 = this.getMeta(n2)) == null ? void 0 : _a2.id;\n return id ?? -1;\n }\n getNode(id) {\n return this.idNodeMap.get(id) || null;\n }\n getIds() {\n return Array.from(this.idNodeMap.keys());\n }\n getMeta(n2) {\n return this.nodeMetaMap.get(n2) || null;\n }\n // removes the node from idNodeMap\n // doesn't remove the node from nodeMetaMap\n removeNodeFromMap(n2) {\n const id = this.getId(n2);\n this.idNodeMap.delete(id);\n if (n2.childNodes) {\n n2.childNodes.forEach(\n (childNode) => this.removeNodeFromMap(childNode)\n );\n }\n }\n has(id) {\n return this.idNodeMap.has(id);\n }\n hasNode(node2) {\n return this.nodeMetaMap.has(node2);\n }\n add(n2, meta) {\n const id = meta.id;\n this.idNodeMap.set(id, n2);\n this.nodeMetaMap.set(n2, meta);\n }\n replace(id, n2) {\n const oldNode = this.getNode(id);\n if (oldNode) {\n const meta = this.nodeMetaMap.get(oldNode);\n if (meta) this.nodeMetaMap.set(n2, meta);\n }\n this.idNodeMap.set(id, n2);\n }\n reset() {\n this.idNodeMap = /* @__PURE__ */ new Map();\n this.nodeMetaMap = /* @__PURE__ */ new WeakMap();\n }\n}\nfunction createMirror$2() {\n return new Mirror();\n}\nfunction maskInputValue({\n element,\n maskInputOptions,\n tagName,\n type,\n value,\n maskInputFn\n}) {\n let text = value || \"\";\n const actualType = type && toLowerCase(type);\n if (maskInputOptions[tagName.toLowerCase()] || actualType && maskInputOptions[actualType]) {\n if (maskInputFn) {\n text = maskInputFn(text, element);\n } else {\n text = \"*\".repeat(text.length);\n }\n }\n return text;\n}\nfunction toLowerCase(str) {\n return str.toLowerCase();\n}\nconst ORIGINAL_ATTRIBUTE_NAME = \"__rrweb_original__\";\nfunction is2DCanvasBlank(canvas) {\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) return true;\n const chunkSize = 50;\n for (let x2 = 0; x2 < canvas.width; x2 += chunkSize) {\n for (let y = 0; y < canvas.height; y += chunkSize) {\n const getImageData = ctx.getImageData;\n const originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData ? getImageData[ORIGINAL_ATTRIBUTE_NAME] : getImageData;\n const pixelBuffer = new Uint32Array(\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n originalGetImageData.call(\n ctx,\n x2,\n y,\n Math.min(chunkSize, canvas.width - x2),\n Math.min(chunkSize, canvas.height - y)\n ).data.buffer\n );\n if (pixelBuffer.some((pixel) => pixel !== 0)) return false;\n }\n }\n return true;\n}\nfunction getInputType(element) {\n const type = element.type;\n return element.hasAttribute(\"data-rr-is-password\") ? \"password\" : type ? (\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n toLowerCase(type)\n ) : null;\n}\nfunction extractFileExtension(path, baseURL) {\n let url;\n try {\n url = new URL(path, baseURL ?? window.location.href);\n } catch (err) {\n return null;\n }\n const regex = /\\.([0-9a-z]+)(?:$)/i;\n const match = url.pathname.match(regex);\n return (match == null ? void 0 : match[1]) ?? null;\n}\nfunction extractOrigin(url) {\n let origin = \"\";\n if (url.indexOf(\"//\") > -1) {\n origin = url.split(\"/\").slice(0, 3).join(\"/\");\n } else {\n origin = url.split(\"/\")[0];\n }\n origin = origin.split(\"?\")[0];\n return origin;\n}\nconst URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\nconst URL_PROTOCOL_MATCH = /^(?:[a-z+]+:)?\\/\\//i;\nconst URL_WWW_MATCH = /^www\\..*/i;\nconst DATA_URI = /^(data:)([^,]*),(.*)/i;\nfunction absolutifyURLs(cssText, href) {\n return (cssText || \"\").replace(\n URL_IN_CSS_REF,\n (origin, quote1, path1, quote2, path2, path3) => {\n const filePath = path1 || path2 || path3;\n const maybeQuote = quote1 || quote2 || \"\";\n if (!filePath) {\n return origin;\n }\n if (URL_PROTOCOL_MATCH.test(filePath) || URL_WWW_MATCH.test(filePath)) {\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\n }\n if (DATA_URI.test(filePath)) {\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\n }\n if (filePath[0] === \"/\") {\n return `url(${maybeQuote}${extractOrigin(href) + filePath}${maybeQuote})`;\n }\n const stack = href.split(\"/\");\n const parts = filePath.split(\"/\");\n stack.pop();\n for (const part of parts) {\n if (part === \".\") {\n continue;\n } else if (part === \"..\") {\n stack.pop();\n } else {\n stack.push(part);\n }\n }\n return `url(${maybeQuote}${stack.join(\"/\")}${maybeQuote})`;\n }\n );\n}\nfunction normalizeCssString(cssText) {\n return cssText.replace(/(\\/\\*[^*]*\\*\\/)|[\\s;]/g, \"\");\n}\nfunction splitCssText(cssText, style) {\n const childNodes2 = Array.from(style.childNodes);\n const splits = [];\n if (childNodes2.length > 1 && cssText && typeof cssText === \"string\") {\n const cssTextNorm = normalizeCssString(cssText);\n for (let i2 = 1; i2 < childNodes2.length; i2++) {\n if (childNodes2[i2].textContent && typeof childNodes2[i2].textContent === \"string\") {\n const textContentNorm = normalizeCssString(childNodes2[i2].textContent);\n for (let j = 3; j < textContentNorm.length; j++) {\n const bit = textContentNorm.substring(0, j);\n if (cssTextNorm.split(bit).length === 2) {\n const splitNorm = cssTextNorm.indexOf(bit);\n for (let k = splitNorm; k < cssText.length; k++) {\n if (normalizeCssString(cssText.substring(0, k)).length === splitNorm) {\n splits.push(cssText.substring(0, k));\n cssText = cssText.substring(k);\n break;\n }\n }\n break;\n }\n }\n }\n }\n }\n splits.push(cssText);\n return splits;\n}\nfunction markCssSplits(cssText, style) {\n return splitCssText(cssText, style).join(\"/* rr_split */\");\n}\nlet _id = 1;\nconst tagNameRegex = new RegExp(\"[^a-z0-9-_:]\");\nconst IGNORED_NODE = -2;\nfunction genId() {\n return _id++;\n}\nfunction getValidTagName$1(element) {\n if (element instanceof HTMLFormElement) {\n return \"form\";\n }\n const processedTagName = toLowerCase(element.tagName);\n if (tagNameRegex.test(processedTagName)) {\n return \"div\";\n }\n return processedTagName;\n}\nlet canvasService;\nlet canvasCtx;\nconst SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\nconst SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\n if (attributeValue.trim() === \"\") {\n return attributeValue;\n }\n let pos = 0;\n function collectCharacters(regEx) {\n let chars2;\n const match = regEx.exec(attributeValue.substring(pos));\n if (match) {\n chars2 = match[0];\n pos += chars2.length;\n return chars2;\n }\n return \"\";\n }\n const output = [];\n while (true) {\n collectCharacters(SRCSET_COMMAS_OR_SPACES);\n if (pos >= attributeValue.length) {\n break;\n }\n let url = collectCharacters(SRCSET_NOT_SPACES);\n if (url.slice(-1) === \",\") {\n url = absoluteToDoc(doc, url.substring(0, url.length - 1));\n output.push(url);\n } else {\n let descriptorsStr = \"\";\n url = absoluteToDoc(doc, url);\n let inParens = false;\n while (true) {\n const c2 = attributeValue.charAt(pos);\n if (c2 === \"\") {\n output.push((url + descriptorsStr).trim());\n break;\n } else if (!inParens) {\n if (c2 === \",\") {\n pos += 1;\n output.push((url + descriptorsStr).trim());\n break;\n } else if (c2 === \"(\") {\n inParens = true;\n }\n } else {\n if (c2 === \")\") {\n inParens = false;\n }\n }\n descriptorsStr += c2;\n pos += 1;\n }\n }\n }\n return output.join(\", \");\n}\nconst cachedDocument = /* @__PURE__ */ new WeakMap();\nfunction absoluteToDoc(doc, attributeValue) {\n if (!attributeValue || attributeValue.trim() === \"\") {\n return attributeValue;\n }\n return getHref(doc, attributeValue);\n}\nfunction isSVGElement(el) {\n return Boolean(el.tagName === \"svg\" || el.ownerSVGElement);\n}\nfunction getHref(doc, customHref) {\n let a2 = cachedDocument.get(doc);\n if (!a2) {\n a2 = doc.createElement(\"a\");\n cachedDocument.set(doc, a2);\n }\n if (!customHref) {\n customHref = \"\";\n } else if (customHref.startsWith(\"blob:\") || customHref.startsWith(\"data:\")) {\n return customHref;\n }\n a2.setAttribute(\"href\", customHref);\n return a2.href;\n}\nfunction transformAttribute(doc, tagName, name, value) {\n if (!value) {\n return value;\n }\n if (name === \"src\" || name === \"href\" && !(tagName === \"use\" && value[0] === \"#\")) {\n return absoluteToDoc(doc, value);\n } else if (name === \"xlink:href\" && value[0] !== \"#\") {\n return absoluteToDoc(doc, value);\n } else if (name === \"background\" && (tagName === \"table\" || tagName === \"td\" || tagName === \"th\")) {\n return absoluteToDoc(doc, value);\n } else if (name === \"srcset\") {\n return getAbsoluteSrcsetString(doc, value);\n } else if (name === \"style\") {\n return absolutifyURLs(value, getHref(doc));\n } else if (tagName === \"object\" && name === \"data\") {\n return absoluteToDoc(doc, value);\n }\n return value;\n}\nfunction ignoreAttribute(tagName, name, _value) {\n return (tagName === \"video\" || tagName === \"audio\") && name === \"autoplay\";\n}\nfunction _isBlockedElement(element, blockClass, blockSelector) {\n try {\n if (typeof blockClass === \"string\") {\n if (element.classList.contains(blockClass)) {\n return true;\n }\n } else {\n for (let eIndex = element.classList.length; eIndex--; ) {\n const className = element.classList[eIndex];\n if (blockClass.test(className)) {\n return true;\n }\n }\n }\n if (blockSelector) {\n return element.matches(blockSelector);\n }\n } catch (e2) {\n }\n return false;\n}\nfunction classMatchesRegex(node2, regex, checkAncestors) {\n if (!node2) return false;\n if (node2.nodeType !== node2.ELEMENT_NODE) {\n if (!checkAncestors) return false;\n return classMatchesRegex(index$1.parentNode(node2), regex, checkAncestors);\n }\n for (let eIndex = node2.classList.length; eIndex--; ) {\n const className = node2.classList[eIndex];\n if (regex.test(className)) {\n return true;\n }\n }\n if (!checkAncestors) return false;\n return classMatchesRegex(index$1.parentNode(node2), regex, checkAncestors);\n}\nfunction needMaskingText(node2, maskTextClass, maskTextSelector, checkAncestors) {\n let el;\n if (isElement(node2)) {\n el = node2;\n if (!index$1.childNodes(el).length) {\n return false;\n }\n } else if (index$1.parentElement(node2) === null) {\n return false;\n } else {\n el = index$1.parentElement(node2);\n }\n try {\n if (typeof maskTextClass === \"string\") {\n if (checkAncestors) {\n if (el.closest(`.${maskTextClass}`)) return true;\n } else {\n if (el.classList.contains(maskTextClass)) return true;\n }\n } else {\n if (classMatchesRegex(el, maskTextClass, checkAncestors)) return true;\n }\n if (maskTextSelector) {\n if (checkAncestors) {\n if (el.closest(maskTextSelector)) return true;\n } else {\n if (el.matches(maskTextSelector)) return true;\n }\n }\n } catch (e2) {\n }\n return false;\n}\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\n const win = iframeEl.contentWindow;\n if (!win) {\n return;\n }\n let fired = false;\n let readyState;\n try {\n readyState = win.document.readyState;\n } catch (error) {\n return;\n }\n if (readyState !== \"complete\") {\n const timer = setTimeout(() => {\n if (!fired) {\n listener();\n fired = true;\n }\n }, iframeLoadTimeout);\n iframeEl.addEventListener(\"load\", () => {\n clearTimeout(timer);\n fired = true;\n listener();\n });\n return;\n }\n const blankUrl = \"about:blank\";\n if (win.location.href !== blankUrl || iframeEl.src === blankUrl || iframeEl.src === \"\") {\n setTimeout(listener, 0);\n return iframeEl.addEventListener(\"load\", listener);\n }\n iframeEl.addEventListener(\"load\", listener);\n}\nfunction onceStylesheetLoaded(link, listener, styleSheetLoadTimeout) {\n let fired = false;\n let styleSheetLoaded;\n try {\n styleSheetLoaded = link.sheet;\n } catch (error) {\n return;\n }\n if (styleSheetLoaded) return;\n const timer = setTimeout(() => {\n if (!fired) {\n listener();\n fired = true;\n }\n }, styleSheetLoadTimeout);\n link.addEventListener(\"load\", () => {\n clearTimeout(timer);\n fired = true;\n listener();\n });\n}\nfunction serializeNode(n2, options) {\n const {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n inlineStylesheet,\n maskInputOptions = {},\n maskTextFn,\n maskInputFn,\n dataURLOptions = {},\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement = false,\n cssCaptured = false\n } = options;\n const rootId = getRootId(doc, mirror2);\n switch (n2.nodeType) {\n case n2.DOCUMENT_NODE:\n if (n2.compatMode !== \"CSS1Compat\") {\n return {\n type: NodeType$3.Document,\n childNodes: [],\n compatMode: n2.compatMode\n // probably \"BackCompat\"\n };\n } else {\n return {\n type: NodeType$3.Document,\n childNodes: []\n };\n }\n case n2.DOCUMENT_TYPE_NODE:\n return {\n type: NodeType$3.DocumentType,\n name: n2.name,\n publicId: n2.publicId,\n systemId: n2.systemId,\n rootId\n };\n case n2.ELEMENT_NODE:\n return serializeElementNode(n2, {\n doc,\n blockClass,\n blockSelector,\n inlineStylesheet,\n maskInputOptions,\n maskInputFn,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement,\n rootId\n });\n case n2.TEXT_NODE:\n return serializeTextNode(n2, {\n doc,\n needsMask,\n maskTextFn,\n rootId,\n cssCaptured\n });\n case n2.CDATA_SECTION_NODE:\n return {\n type: NodeType$3.CDATA,\n textContent: \"\",\n rootId\n };\n case n2.COMMENT_NODE:\n return {\n type: NodeType$3.Comment,\n textContent: index$1.textContent(n2) || \"\",\n rootId\n };\n default:\n return false;\n }\n}\nfunction getRootId(doc, mirror2) {\n if (!mirror2.hasNode(doc)) return void 0;\n const docId = mirror2.getId(doc);\n return docId === 1 ? void 0 : docId;\n}\nfunction serializeTextNode(n2, options) {\n const { needsMask, maskTextFn, rootId, cssCaptured } = options;\n const parent = index$1.parentNode(n2);\n const parentTagName = parent && parent.tagName;\n let textContent2 = \"\";\n const isStyle = parentTagName === \"STYLE\" ? true : void 0;\n const isScript = parentTagName === \"SCRIPT\" ? true : void 0;\n if (isScript) {\n textContent2 = \"SCRIPT_PLACEHOLDER\";\n } else if (!cssCaptured) {\n textContent2 = index$1.textContent(n2);\n if (isStyle && textContent2) {\n textContent2 = absolutifyURLs(textContent2, getHref(options.doc));\n }\n }\n if (!isStyle && !isScript && textContent2 && needsMask) {\n textContent2 = maskTextFn ? maskTextFn(textContent2, index$1.parentElement(n2)) : textContent2.replace(/[\\S]/g, \"*\");\n }\n return {\n type: NodeType$3.Text,\n textContent: textContent2 || \"\",\n rootId\n };\n}\nfunction serializeElementNode(n2, options) {\n const {\n doc,\n blockClass,\n blockSelector,\n inlineStylesheet,\n maskInputOptions = {},\n maskInputFn,\n dataURLOptions = {},\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement = false,\n rootId\n } = options;\n const needBlock = _isBlockedElement(n2, blockClass, blockSelector);\n const tagName = getValidTagName$1(n2);\n let attributes = {};\n const len = n2.attributes.length;\n for (let i2 = 0; i2 < len; i2++) {\n const attr = n2.attributes[i2];\n if (!ignoreAttribute(tagName, attr.name, attr.value)) {\n attributes[attr.name] = transformAttribute(\n doc,\n tagName,\n toLowerCase(attr.name),\n attr.value\n );\n }\n }\n if (tagName === \"link\" && inlineStylesheet) {\n const stylesheet = Array.from(doc.styleSheets).find((s2) => {\n return s2.href === n2.href;\n });\n let cssText = null;\n if (stylesheet) {\n cssText = stringifyStylesheet(stylesheet);\n }\n if (cssText) {\n delete attributes.rel;\n delete attributes.href;\n attributes._cssText = cssText;\n }\n }\n if (tagName === \"style\" && n2.sheet) {\n let cssText = stringifyStylesheet(\n n2.sheet\n );\n if (cssText) {\n if (n2.childNodes.length > 1) {\n cssText = markCssSplits(cssText, n2);\n }\n attributes._cssText = cssText;\n }\n }\n if (tagName === \"input\" || tagName === \"textarea\" || tagName === \"select\") {\n const value = n2.value;\n const checked = n2.checked;\n if (attributes.type !== \"radio\" && attributes.type !== \"checkbox\" && attributes.type !== \"submit\" && attributes.type !== \"button\" && value) {\n attributes.value = maskInputValue({\n element: n2,\n type: getInputType(n2),\n tagName,\n value,\n maskInputOptions,\n maskInputFn\n });\n } else if (checked) {\n attributes.checked = checked;\n }\n }\n if (tagName === \"option\") {\n if (n2.selected && !maskInputOptions[\"select\"]) {\n attributes.selected = true;\n } else {\n delete attributes.selected;\n }\n }\n if (tagName === \"dialog\" && n2.open) {\n attributes.rr_open_mode = n2.matches(\"dialog:modal\") ? \"modal\" : \"non-modal\";\n }\n if (tagName === \"canvas\" && recordCanvas) {\n if (n2.__context === \"2d\") {\n if (!is2DCanvasBlank(n2)) {\n attributes.rr_dataURL = n2.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n }\n } else if (!(\"__context\" in n2)) {\n const canvasDataURL = n2.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n const blankCanvas = doc.createElement(\"canvas\");\n blankCanvas.width = n2.width;\n blankCanvas.height = n2.height;\n const blankCanvasDataURL = blankCanvas.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n if (canvasDataURL !== blankCanvasDataURL) {\n attributes.rr_dataURL = canvasDataURL;\n }\n }\n }\n if (tagName === \"img\" && inlineImages) {\n if (!canvasService) {\n canvasService = doc.createElement(\"canvas\");\n canvasCtx = canvasService.getContext(\"2d\");\n }\n const image = n2;\n const imageSrc = image.currentSrc || image.getAttribute(\"src\") || \"\";\n const priorCrossOrigin = image.crossOrigin;\n const recordInlineImage = () => {\n image.removeEventListener(\"load\", recordInlineImage);\n try {\n canvasService.width = image.naturalWidth;\n canvasService.height = image.naturalHeight;\n canvasCtx.drawImage(image, 0, 0);\n attributes.rr_dataURL = canvasService.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n } catch (err) {\n if (image.crossOrigin !== \"anonymous\") {\n image.crossOrigin = \"anonymous\";\n if (image.complete && image.naturalWidth !== 0)\n recordInlineImage();\n else image.addEventListener(\"load\", recordInlineImage);\n return;\n } else {\n console.warn(\n `Cannot inline img src=${imageSrc}! Error: ${err}`\n );\n }\n }\n if (image.crossOrigin === \"anonymous\") {\n priorCrossOrigin ? attributes.crossOrigin = priorCrossOrigin : image.removeAttribute(\"crossorigin\");\n }\n };\n if (image.complete && image.naturalWidth !== 0) recordInlineImage();\n else image.addEventListener(\"load\", recordInlineImage);\n }\n if (tagName === \"audio\" || tagName === \"video\") {\n const mediaAttributes = attributes;\n mediaAttributes.rr_mediaState = n2.paused ? \"paused\" : \"played\";\n mediaAttributes.rr_mediaCurrentTime = n2.currentTime;\n mediaAttributes.rr_mediaPlaybackRate = n2.playbackRate;\n mediaAttributes.rr_mediaMuted = n2.muted;\n mediaAttributes.rr_mediaLoop = n2.loop;\n mediaAttributes.rr_mediaVolume = n2.volume;\n }\n if (!newlyAddedElement) {\n if (n2.scrollLeft) {\n attributes.rr_scrollLeft = n2.scrollLeft;\n }\n if (n2.scrollTop) {\n attributes.rr_scrollTop = n2.scrollTop;\n }\n }\n if (needBlock) {\n const { width, height } = n2.getBoundingClientRect();\n attributes = {\n class: attributes.class,\n rr_width: `${width}px`,\n rr_height: `${height}px`\n };\n }\n if (tagName === \"iframe\" && !keepIframeSrcFn(attributes.src)) {\n if (!n2.contentDocument) {\n attributes.rr_src = attributes.src;\n }\n delete attributes.src;\n }\n let isCustomElement;\n try {\n if (customElements.get(tagName)) isCustomElement = true;\n } catch (e2) {\n }\n return {\n type: NodeType$3.Element,\n tagName,\n attributes,\n childNodes: [],\n isSVG: isSVGElement(n2) || void 0,\n needBlock,\n rootId,\n isCustom: isCustomElement\n };\n}\nfunction lowerIfExists(maybeAttr) {\n if (maybeAttr === void 0 || maybeAttr === null) {\n return \"\";\n } else {\n return maybeAttr.toLowerCase();\n }\n}\nfunction slimDOMExcluded(sn, slimDOMOptions) {\n if (slimDOMOptions.comment && sn.type === NodeType$3.Comment) {\n return true;\n } else if (sn.type === NodeType$3.Element) {\n if (slimDOMOptions.script && // script tag\n (sn.tagName === \"script\" || // (module)preload link\n sn.tagName === \"link\" && (sn.attributes.rel === \"preload\" || sn.attributes.rel === \"modulepreload\") && sn.attributes.as === \"script\" || // prefetch link\n sn.tagName === \"link\" && sn.attributes.rel === \"prefetch\" && typeof sn.attributes.href === \"string\" && extractFileExtension(sn.attributes.href) === \"js\")) {\n return true;\n } else if (slimDOMOptions.headFavicon && (sn.tagName === \"link\" && sn.attributes.rel === \"shortcut icon\" || sn.tagName === \"meta\" && (lowerIfExists(sn.attributes.name).match(\n /^msapplication-tile(image|color)$/\n ) || lowerIfExists(sn.attributes.name) === \"application-name\" || lowerIfExists(sn.attributes.rel) === \"icon\" || lowerIfExists(sn.attributes.rel) === \"apple-touch-icon\" || lowerIfExists(sn.attributes.rel) === \"shortcut icon\"))) {\n return true;\n } else if (sn.tagName === \"meta\") {\n if (slimDOMOptions.headMetaDescKeywords && lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\n return true;\n } else if (slimDOMOptions.headMetaSocial && (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) || // og = opengraph (facebook)\n lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) || lowerIfExists(sn.attributes.name) === \"pinterest\")) {\n return true;\n } else if (slimDOMOptions.headMetaRobots && (lowerIfExists(sn.attributes.name) === \"robots\" || lowerIfExists(sn.attributes.name) === \"googlebot\" || lowerIfExists(sn.attributes.name) === \"bingbot\")) {\n return true;\n } else if (slimDOMOptions.headMetaHttpEquiv && sn.attributes[\"http-equiv\"] !== void 0) {\n return true;\n } else if (slimDOMOptions.headMetaAuthorship && (lowerIfExists(sn.attributes.name) === \"author\" || lowerIfExists(sn.attributes.name) === \"generator\" || lowerIfExists(sn.attributes.name) === \"framework\" || lowerIfExists(sn.attributes.name) === \"publisher\" || lowerIfExists(sn.attributes.name) === \"progid\" || lowerIfExists(sn.attributes.property).match(/^article:/) || lowerIfExists(sn.attributes.property).match(/^product:/))) {\n return true;\n } else if (slimDOMOptions.headMetaVerification && (lowerIfExists(sn.attributes.name) === \"google-site-verification\" || lowerIfExists(sn.attributes.name) === \"yandex-verification\" || lowerIfExists(sn.attributes.name) === \"csrf-token\" || lowerIfExists(sn.attributes.name) === \"p:domain_verify\" || lowerIfExists(sn.attributes.name) === \"verify-v1\" || lowerIfExists(sn.attributes.name) === \"verification\" || lowerIfExists(sn.attributes.name) === \"shopify-checkout-api-token\")) {\n return true;\n }\n }\n }\n return false;\n}\nfunction serializeNodeWithId(n2, options) {\n const {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n skipChild = false,\n inlineStylesheet = true,\n maskInputOptions = {},\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions = {},\n inlineImages = false,\n recordCanvas = false,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout = 5e3,\n onStylesheetLoad,\n stylesheetLoadTimeout = 5e3,\n keepIframeSrcFn = () => false,\n newlyAddedElement = false,\n cssCaptured = false\n } = options;\n let { needsMask } = options;\n let { preserveWhiteSpace = true } = options;\n if (!needsMask) {\n const checkAncestors = needsMask === void 0;\n needsMask = needMaskingText(\n n2,\n maskTextClass,\n maskTextSelector,\n checkAncestors\n );\n }\n const _serializedNode = serializeNode(n2, {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement,\n cssCaptured\n });\n if (!_serializedNode) {\n console.warn(n2, \"not serialized\");\n return null;\n }\n let id;\n if (mirror2.hasNode(n2)) {\n id = mirror2.getId(n2);\n } else if (slimDOMExcluded(_serializedNode, slimDOMOptions) || !preserveWhiteSpace && _serializedNode.type === NodeType$3.Text && !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, \"\").length) {\n id = IGNORED_NODE;\n } else {\n id = genId();\n }\n const serializedNode = Object.assign(_serializedNode, { id });\n mirror2.add(n2, serializedNode);\n if (id === IGNORED_NODE) {\n return null;\n }\n if (onSerialize) {\n onSerialize(n2);\n }\n let recordChild = !skipChild;\n if (serializedNode.type === NodeType$3.Element) {\n recordChild = recordChild && !serializedNode.needBlock;\n delete serializedNode.needBlock;\n const shadowRootEl = index$1.shadowRoot(n2);\n if (shadowRootEl && isNativeShadowDom(shadowRootEl))\n serializedNode.isShadowHost = true;\n }\n if ((serializedNode.type === NodeType$3.Document || serializedNode.type === NodeType$3.Element) && recordChild) {\n if (slimDOMOptions.headWhitespace && serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"head\") {\n preserveWhiteSpace = false;\n }\n const bypassOptions = {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n skipChild,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn,\n cssCaptured: false\n };\n if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"textarea\" && serializedNode.attributes.value !== void 0) ;\n else {\n if (serializedNode.type === NodeType$3.Element && serializedNode.attributes._cssText !== void 0 && typeof serializedNode.attributes._cssText === \"string\") {\n bypassOptions.cssCaptured = true;\n }\n for (const childN of Array.from(index$1.childNodes(n2))) {\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n }\n let shadowRootEl = null;\n if (isElement(n2) && (shadowRootEl = index$1.shadowRoot(n2))) {\n for (const childN of Array.from(index$1.childNodes(shadowRootEl))) {\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n isNativeShadowDom(shadowRootEl) && (serializedChildNode.isShadow = true);\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n }\n }\n const parent = index$1.parentNode(n2);\n if (parent && isShadowRoot(parent) && isNativeShadowDom(parent)) {\n serializedNode.isShadow = true;\n }\n if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"iframe\") {\n onceIframeLoaded(\n n2,\n () => {\n const iframeDoc = n2.contentDocument;\n if (iframeDoc && onIframeLoad) {\n const serializedIframeNode = serializeNodeWithId(iframeDoc, {\n doc: iframeDoc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn\n });\n if (serializedIframeNode) {\n onIframeLoad(\n n2,\n serializedIframeNode\n );\n }\n }\n },\n iframeLoadTimeout\n );\n }\n if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"link\" && typeof serializedNode.attributes.rel === \"string\" && (serializedNode.attributes.rel === \"stylesheet\" || serializedNode.attributes.rel === \"preload\" && typeof serializedNode.attributes.href === \"string\" && extractFileExtension(serializedNode.attributes.href) === \"css\")) {\n onceStylesheetLoaded(\n n2,\n () => {\n if (onStylesheetLoad) {\n const serializedLinkNode = serializeNodeWithId(n2, {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn\n });\n if (serializedLinkNode) {\n onStylesheetLoad(\n n2,\n serializedLinkNode\n );\n }\n }\n },\n stylesheetLoadTimeout\n );\n }\n return serializedNode;\n}\nfunction snapshot(n2, options) {\n const {\n mirror: mirror2 = new Mirror(),\n blockClass = \"rr-block\",\n blockSelector = null,\n maskTextClass = \"rr-mask\",\n maskTextSelector = null,\n inlineStylesheet = true,\n inlineImages = false,\n recordCanvas = false,\n maskAllInputs = false,\n maskTextFn,\n maskInputFn,\n slimDOM = false,\n dataURLOptions,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn = () => false\n } = options || {};\n const maskInputOptions = maskAllInputs === true ? {\n color: true,\n date: true,\n \"datetime-local\": true,\n email: true,\n month: true,\n number: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true,\n textarea: true,\n select: true,\n password: true\n } : maskAllInputs === false ? {\n password: true\n } : maskAllInputs;\n const slimDOMOptions = slimDOM === true || slimDOM === \"all\" ? (\n // if true: set of sensible options that should not throw away any information\n {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaDescKeywords: slimDOM === \"all\",\n // destructive\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaAuthorship: true,\n headMetaVerification: true\n }\n ) : slimDOM === false ? {} : slimDOM;\n return serializeNodeWithId(n2, {\n doc: n2,\n mirror: mirror2,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn,\n newlyAddedElement: false\n });\n}\nfunction getDefaultExportFromCjs$1(x2) {\n return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, \"default\") ? x2[\"default\"] : x2;\n}\nfunction getAugmentedNamespace$1(n2) {\n if (n2.__esModule) return n2;\n var f2 = n2.default;\n if (typeof f2 == \"function\") {\n var a2 = function a22() {\n if (this instanceof a22) {\n return Reflect.construct(f2, arguments, this.constructor);\n }\n return f2.apply(this, arguments);\n };\n a2.prototype = f2.prototype;\n } else a2 = {};\n Object.defineProperty(a2, \"__esModule\", { value: true });\n Object.keys(n2).forEach(function(k) {\n var d = Object.getOwnPropertyDescriptor(n2, k);\n Object.defineProperty(a2, k, d.get ? d : {\n enumerable: true,\n get: function() {\n return n2[k];\n }\n });\n });\n return a2;\n}\nvar picocolors_browser$1 = { exports: {} };\nvar x$1 = String;\nvar create$1 = function() {\n return { isColorSupported: false, reset: x$1, bold: x$1, dim: x$1, italic: x$1, underline: x$1, inverse: x$1, hidden: x$1, strikethrough: x$1, black: x$1, red: x$1, green: x$1, yellow: x$1, blue: x$1, magenta: x$1, cyan: x$1, white: x$1, gray: x$1, bgBlack: x$1, bgRed: x$1, bgGreen: x$1, bgYellow: x$1, bgBlue: x$1, bgMagenta: x$1, bgCyan: x$1, bgWhite: x$1 };\n};\npicocolors_browser$1.exports = create$1();\npicocolors_browser$1.exports.createColors = create$1;\nvar picocolors_browserExports$1 = picocolors_browser$1.exports;\nconst __viteBrowserExternal$2 = {};\nconst __viteBrowserExternal$1$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: __viteBrowserExternal$2\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst require$$2$1 = /* @__PURE__ */ getAugmentedNamespace$1(__viteBrowserExternal$1$1);\nlet pico$1 = picocolors_browserExports$1;\nlet terminalHighlight$1$1 = require$$2$1;\nlet CssSyntaxError$3$1 = class CssSyntaxError extends Error {\n constructor(message, line, column, source, file, plugin22) {\n super(message);\n this.name = \"CssSyntaxError\";\n this.reason = message;\n if (file) {\n this.file = file;\n }\n if (source) {\n this.source = source;\n }\n if (plugin22) {\n this.plugin = plugin22;\n }\n if (typeof line !== \"undefined\" && typeof column !== \"undefined\") {\n if (typeof line === \"number\") {\n this.line = line;\n this.column = column;\n } else {\n this.line = line.line;\n this.column = line.column;\n this.endLine = column.line;\n this.endColumn = column.column;\n }\n }\n this.setMessage();\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, CssSyntaxError);\n }\n }\n setMessage() {\n this.message = this.plugin ? this.plugin + \": \" : \"\";\n this.message += this.file ? this.file : \"\";\n if (typeof this.line !== \"undefined\") {\n this.message += \":\" + this.line + \":\" + this.column;\n }\n this.message += \": \" + this.reason;\n }\n showSourceCode(color) {\n if (!this.source) return \"\";\n let css = this.source;\n if (color == null) color = pico$1.isColorSupported;\n if (terminalHighlight$1$1) {\n if (color) css = terminalHighlight$1$1(css);\n }\n let lines = css.split(/\\r?\\n/);\n let start = Math.max(this.line - 3, 0);\n let end = Math.min(this.line + 2, lines.length);\n let maxWidth = String(end).length;\n let mark, aside;\n if (color) {\n let { bold, gray, red } = pico$1.createColors(true);\n mark = (text) => bold(red(text));\n aside = (text) => gray(text);\n } else {\n mark = aside = (str) => str;\n }\n return lines.slice(start, end).map((line, index2) => {\n let number = start + 1 + index2;\n let gutter = \" \" + (\" \" + number).slice(-maxWidth) + \" | \";\n if (number === this.line) {\n let spacing = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, this.column - 1).replace(/[^\\t]/g, \" \");\n return mark(\">\") + aside(gutter) + line + \"\\n \" + spacing + mark(\"^\");\n }\n return \" \" + aside(gutter) + line;\n }).join(\"\\n\");\n }\n toString() {\n let code = this.showSourceCode();\n if (code) {\n code = \"\\n\\n\" + code + \"\\n\";\n }\n return this.name + \": \" + this.message + code;\n }\n};\nvar cssSyntaxError$1 = CssSyntaxError$3$1;\nCssSyntaxError$3$1.default = CssSyntaxError$3$1;\nvar symbols$1 = {};\nsymbols$1.isClean = Symbol(\"isClean\");\nsymbols$1.my = Symbol(\"my\");\nconst DEFAULT_RAW$1 = {\n after: \"\\n\",\n beforeClose: \"\\n\",\n beforeComment: \"\\n\",\n beforeDecl: \"\\n\",\n beforeOpen: \" \",\n beforeRule: \"\\n\",\n colon: \": \",\n commentLeft: \" \",\n commentRight: \" \",\n emptyBody: \"\",\n indent: \" \",\n semicolon: false\n};\nfunction capitalize$1(str) {\n return str[0].toUpperCase() + str.slice(1);\n}\nlet Stringifier$2$1 = class Stringifier {\n constructor(builder) {\n this.builder = builder;\n }\n atrule(node2, semicolon) {\n let name = \"@\" + node2.name;\n let params = node2.params ? this.rawValue(node2, \"params\") : \"\";\n if (typeof node2.raws.afterName !== \"undefined\") {\n name += node2.raws.afterName;\n } else if (params) {\n name += \" \";\n }\n if (node2.nodes) {\n this.block(node2, name + params);\n } else {\n let end = (node2.raws.between || \"\") + (semicolon ? \";\" : \"\");\n this.builder(name + params + end, node2);\n }\n }\n beforeAfter(node2, detect) {\n let value;\n if (node2.type === \"decl\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (node2.type === \"comment\") {\n value = this.raw(node2, null, \"beforeComment\");\n } else if (detect === \"before\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else {\n value = this.raw(node2, null, \"beforeClose\");\n }\n let buf = node2.parent;\n let depth = 0;\n while (buf && buf.type !== \"root\") {\n depth += 1;\n buf = buf.parent;\n }\n if (value.includes(\"\\n\")) {\n let indent = this.raw(node2, null, \"indent\");\n if (indent.length) {\n for (let step = 0; step < depth; step++) value += indent;\n }\n }\n return value;\n }\n block(node2, start) {\n let between = this.raw(node2, \"between\", \"beforeOpen\");\n this.builder(start + between + \"{\", node2, \"start\");\n let after;\n if (node2.nodes && node2.nodes.length) {\n this.body(node2);\n after = this.raw(node2, \"after\");\n } else {\n after = this.raw(node2, \"after\", \"emptyBody\");\n }\n if (after) this.builder(after);\n this.builder(\"}\", node2, \"end\");\n }\n body(node2) {\n let last = node2.nodes.length - 1;\n while (last > 0) {\n if (node2.nodes[last].type !== \"comment\") break;\n last -= 1;\n }\n let semicolon = this.raw(node2, \"semicolon\");\n for (let i2 = 0; i2 < node2.nodes.length; i2++) {\n let child = node2.nodes[i2];\n let before = this.raw(child, \"before\");\n if (before) this.builder(before);\n this.stringify(child, last !== i2 || semicolon);\n }\n }\n comment(node2) {\n let left = this.raw(node2, \"left\", \"commentLeft\");\n let right = this.raw(node2, \"right\", \"commentRight\");\n this.builder(\"/*\" + left + node2.text + right + \"*/\", node2);\n }\n decl(node2, semicolon) {\n let between = this.raw(node2, \"between\", \"colon\");\n let string = node2.prop + between + this.rawValue(node2, \"value\");\n if (node2.important) {\n string += node2.raws.important || \" !important\";\n }\n if (semicolon) string += \";\";\n this.builder(string, node2);\n }\n document(node2) {\n this.body(node2);\n }\n raw(node2, own, detect) {\n let value;\n if (!detect) detect = own;\n if (own) {\n value = node2.raws[own];\n if (typeof value !== \"undefined\") return value;\n }\n let parent = node2.parent;\n if (detect === \"before\") {\n if (!parent || parent.type === \"root\" && parent.first === node2) {\n return \"\";\n }\n if (parent && parent.type === \"document\") {\n return \"\";\n }\n }\n if (!parent) return DEFAULT_RAW$1[detect];\n let root2 = node2.root();\n if (!root2.rawCache) root2.rawCache = {};\n if (typeof root2.rawCache[detect] !== \"undefined\") {\n return root2.rawCache[detect];\n }\n if (detect === \"before\" || detect === \"after\") {\n return this.beforeAfter(node2, detect);\n } else {\n let method = \"raw\" + capitalize$1(detect);\n if (this[method]) {\n value = this[method](root2, node2);\n } else {\n root2.walk((i2) => {\n value = i2.raws[own];\n if (typeof value !== \"undefined\") return false;\n });\n }\n }\n if (typeof value === \"undefined\") value = DEFAULT_RAW$1[detect];\n root2.rawCache[detect] = value;\n return value;\n }\n rawBeforeClose(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length > 0) {\n if (typeof i2.raws.after !== \"undefined\") {\n value = i2.raws.after;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawBeforeComment(root2, node2) {\n let value;\n root2.walkComments((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeDecl(root2, node2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeOpen(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.type !== \"decl\") {\n value = i2.raws.between;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawBeforeRule(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && (i2.parent !== root2 || root2.first !== i2)) {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawColon(root2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.between !== \"undefined\") {\n value = i2.raws.between.replace(/[^\\s:]/g, \"\");\n return false;\n }\n });\n return value;\n }\n rawEmptyBody(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length === 0) {\n value = i2.raws.after;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawIndent(root2) {\n if (root2.raws.indent) return root2.raws.indent;\n let value;\n root2.walk((i2) => {\n let p = i2.parent;\n if (p && p !== root2 && p.parent && p.parent === root2) {\n if (typeof i2.raws.before !== \"undefined\") {\n let parts = i2.raws.before.split(\"\\n\");\n value = parts[parts.length - 1];\n value = value.replace(/\\S/g, \"\");\n return false;\n }\n }\n });\n return value;\n }\n rawSemicolon(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length && i2.last.type === \"decl\") {\n value = i2.raws.semicolon;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawValue(node2, prop) {\n let value = node2[prop];\n let raw = node2.raws[prop];\n if (raw && raw.value === value) {\n return raw.raw;\n }\n return value;\n }\n root(node2) {\n this.body(node2);\n if (node2.raws.after) this.builder(node2.raws.after);\n }\n rule(node2) {\n this.block(node2, this.rawValue(node2, \"selector\"));\n if (node2.raws.ownSemicolon) {\n this.builder(node2.raws.ownSemicolon, node2, \"end\");\n }\n }\n stringify(node2, semicolon) {\n if (!this[node2.type]) {\n throw new Error(\n \"Unknown AST node type \" + node2.type + \". Maybe you need to change PostCSS stringifier.\"\n );\n }\n this[node2.type](node2, semicolon);\n }\n};\nvar stringifier$1 = Stringifier$2$1;\nStringifier$2$1.default = Stringifier$2$1;\nlet Stringifier$1$1 = stringifier$1;\nfunction stringify$4$1(node2, builder) {\n let str = new Stringifier$1$1(builder);\n str.stringify(node2);\n}\nvar stringify_1$1 = stringify$4$1;\nstringify$4$1.default = stringify$4$1;\nlet { isClean: isClean$2$1, my: my$2$1 } = symbols$1;\nlet CssSyntaxError$2$1 = cssSyntaxError$1;\nlet Stringifier2$1 = stringifier$1;\nlet stringify$3$1 = stringify_1$1;\nfunction cloneNode$1(obj, parent) {\n let cloned = new obj.constructor();\n for (let i2 in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, i2)) {\n continue;\n }\n if (i2 === \"proxyCache\") continue;\n let value = obj[i2];\n let type = typeof value;\n if (i2 === \"parent\" && type === \"object\") {\n if (parent) cloned[i2] = parent;\n } else if (i2 === \"source\") {\n cloned[i2] = value;\n } else if (Array.isArray(value)) {\n cloned[i2] = value.map((j) => cloneNode$1(j, cloned));\n } else {\n if (type === \"object\" && value !== null) value = cloneNode$1(value);\n cloned[i2] = value;\n }\n }\n return cloned;\n}\nlet Node$4$1 = class Node2 {\n constructor(defaults = {}) {\n this.raws = {};\n this[isClean$2$1] = false;\n this[my$2$1] = true;\n for (let name in defaults) {\n if (name === \"nodes\") {\n this.nodes = [];\n for (let node2 of defaults[name]) {\n if (typeof node2.clone === \"function\") {\n this.append(node2.clone());\n } else {\n this.append(node2);\n }\n }\n } else {\n this[name] = defaults[name];\n }\n }\n }\n addToError(error) {\n error.postcssNode = this;\n if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n let s2 = this.source;\n error.stack = error.stack.replace(\n /\\n\\s{4}at /,\n `$&${s2.input.from}:${s2.start.line}:${s2.start.column}$&`\n );\n }\n return error;\n }\n after(add) {\n this.parent.insertAfter(this, add);\n return this;\n }\n assign(overrides = {}) {\n for (let name in overrides) {\n this[name] = overrides[name];\n }\n return this;\n }\n before(add) {\n this.parent.insertBefore(this, add);\n return this;\n }\n cleanRaws(keepBetween) {\n delete this.raws.before;\n delete this.raws.after;\n if (!keepBetween) delete this.raws.between;\n }\n clone(overrides = {}) {\n let cloned = cloneNode$1(this);\n for (let name in overrides) {\n cloned[name] = overrides[name];\n }\n return cloned;\n }\n cloneAfter(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertAfter(this, cloned);\n return cloned;\n }\n cloneBefore(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertBefore(this, cloned);\n return cloned;\n }\n error(message, opts = {}) {\n if (this.source) {\n let { end, start } = this.rangeBy(opts);\n return this.source.input.error(\n message,\n { column: start.column, line: start.line },\n { column: end.column, line: end.line },\n opts\n );\n }\n return new CssSyntaxError$2$1(message);\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"prop\" || prop === \"value\" || prop === \"name\" || prop === \"params\" || prop === \"important\" || /* c8 ignore next */\n prop === \"text\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n markDirty() {\n if (this[isClean$2$1]) {\n this[isClean$2$1] = false;\n let next = this;\n while (next = next.parent) {\n next[isClean$2$1] = false;\n }\n }\n }\n next() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 + 1];\n }\n positionBy(opts, stringRepresentation) {\n let pos = this.source.start;\n if (opts.index) {\n pos = this.positionInside(opts.index, stringRepresentation);\n } else if (opts.word) {\n stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) pos = this.positionInside(index2, stringRepresentation);\n }\n return pos;\n }\n positionInside(index2, stringRepresentation) {\n let string = stringRepresentation || this.toString();\n let column = this.source.start.column;\n let line = this.source.start.line;\n for (let i2 = 0; i2 < index2; i2++) {\n if (string[i2] === \"\\n\") {\n column = 1;\n line += 1;\n } else {\n column += 1;\n }\n }\n return { column, line };\n }\n prev() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 - 1];\n }\n rangeBy(opts) {\n let start = {\n column: this.source.start.column,\n line: this.source.start.line\n };\n let end = this.source.end ? {\n column: this.source.end.column + 1,\n line: this.source.end.line\n } : {\n column: start.column + 1,\n line: start.line\n };\n if (opts.word) {\n let stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) {\n start = this.positionInside(index2, stringRepresentation);\n end = this.positionInside(index2 + opts.word.length, stringRepresentation);\n }\n } else {\n if (opts.start) {\n start = {\n column: opts.start.column,\n line: opts.start.line\n };\n } else if (opts.index) {\n start = this.positionInside(opts.index);\n }\n if (opts.end) {\n end = {\n column: opts.end.column,\n line: opts.end.line\n };\n } else if (typeof opts.endIndex === \"number\") {\n end = this.positionInside(opts.endIndex);\n } else if (opts.index) {\n end = this.positionInside(opts.index + 1);\n }\n }\n if (end.line < start.line || end.line === start.line && end.column <= start.column) {\n end = { column: start.column + 1, line: start.line };\n }\n return { end, start };\n }\n raw(prop, defaultType) {\n let str = new Stringifier2$1();\n return str.raw(this, prop, defaultType);\n }\n remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n this.parent = void 0;\n return this;\n }\n replaceWith(...nodes) {\n if (this.parent) {\n let bookmark = this;\n let foundSelf = false;\n for (let node2 of nodes) {\n if (node2 === this) {\n foundSelf = true;\n } else if (foundSelf) {\n this.parent.insertAfter(bookmark, node2);\n bookmark = node2;\n } else {\n this.parent.insertBefore(bookmark, node2);\n }\n }\n if (!foundSelf) {\n this.remove();\n }\n }\n return this;\n }\n root() {\n let result2 = this;\n while (result2.parent && result2.parent.type !== \"document\") {\n result2 = result2.parent;\n }\n return result2;\n }\n toJSON(_, inputs) {\n let fixed = {};\n let emitInputs = inputs == null;\n inputs = inputs || /* @__PURE__ */ new Map();\n let inputsNextIndex = 0;\n for (let name in this) {\n if (!Object.prototype.hasOwnProperty.call(this, name)) {\n continue;\n }\n if (name === \"parent\" || name === \"proxyCache\") continue;\n let value = this[name];\n if (Array.isArray(value)) {\n fixed[name] = value.map((i2) => {\n if (typeof i2 === \"object\" && i2.toJSON) {\n return i2.toJSON(null, inputs);\n } else {\n return i2;\n }\n });\n } else if (typeof value === \"object\" && value.toJSON) {\n fixed[name] = value.toJSON(null, inputs);\n } else if (name === \"source\") {\n let inputId = inputs.get(value.input);\n if (inputId == null) {\n inputId = inputsNextIndex;\n inputs.set(value.input, inputsNextIndex);\n inputsNextIndex++;\n }\n fixed[name] = {\n end: value.end,\n inputId,\n start: value.start\n };\n } else {\n fixed[name] = value;\n }\n }\n if (emitInputs) {\n fixed.inputs = [...inputs.keys()].map((input2) => input2.toJSON());\n }\n return fixed;\n }\n toProxy() {\n if (!this.proxyCache) {\n this.proxyCache = new Proxy(this, this.getProxyProcessor());\n }\n return this.proxyCache;\n }\n toString(stringifier2 = stringify$3$1) {\n if (stringifier2.stringify) stringifier2 = stringifier2.stringify;\n let result2 = \"\";\n stringifier2(this, (i2) => {\n result2 += i2;\n });\n return result2;\n }\n warn(result2, text, opts) {\n let data = { node: this };\n for (let i2 in opts) data[i2] = opts[i2];\n return result2.warn(text, data);\n }\n get proxyOf() {\n return this;\n }\n};\nvar node$1 = Node$4$1;\nNode$4$1.default = Node$4$1;\nlet Node$3$1 = node$1;\nlet Declaration$4$1 = class Declaration extends Node$3$1 {\n constructor(defaults) {\n if (defaults && typeof defaults.value !== \"undefined\" && typeof defaults.value !== \"string\") {\n defaults = { ...defaults, value: String(defaults.value) };\n }\n super(defaults);\n this.type = \"decl\";\n }\n get variable() {\n return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n }\n};\nvar declaration$1 = Declaration$4$1;\nDeclaration$4$1.default = Declaration$4$1;\nlet urlAlphabet$1 = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\nlet customAlphabet$1 = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = \"\";\n let i2 = size;\n while (i2--) {\n id += alphabet[Math.random() * alphabet.length | 0];\n }\n return id;\n };\n};\nlet nanoid$1$1 = (size = 21) => {\n let id = \"\";\n let i2 = size;\n while (i2--) {\n id += urlAlphabet$1[Math.random() * 64 | 0];\n }\n return id;\n};\nvar nonSecure$1 = { nanoid: nanoid$1$1, customAlphabet: customAlphabet$1 };\nlet { SourceMapConsumer: SourceMapConsumer$2$1, SourceMapGenerator: SourceMapGenerator$2$1 } = require$$2$1;\nlet { existsSync: existsSync$1, readFileSync: readFileSync$1 } = require$$2$1;\nlet { dirname: dirname$1$1, join: join$1 } = require$$2$1;\nfunction fromBase64$1(str) {\n if (Buffer) {\n return Buffer.from(str, \"base64\").toString();\n } else {\n return window.atob(str);\n }\n}\nlet PreviousMap$2$1 = class PreviousMap {\n constructor(css, opts) {\n if (opts.map === false) return;\n this.loadAnnotation(css);\n this.inline = this.startWith(this.annotation, \"data:\");\n let prev = opts.map ? opts.map.prev : void 0;\n let text = this.loadMap(opts.from, prev);\n if (!this.mapFile && opts.from) {\n this.mapFile = opts.from;\n }\n if (this.mapFile) this.root = dirname$1$1(this.mapFile);\n if (text) this.text = text;\n }\n consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new SourceMapConsumer$2$1(this.text);\n }\n return this.consumerCache;\n }\n decodeInline(text) {\n let baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/;\n let baseUri = /^data:application\\/json;base64,/;\n let charsetUri = /^data:application\\/json;charset=utf-?8,/;\n let uri = /^data:application\\/json,/;\n if (charsetUri.test(text) || uri.test(text)) {\n return decodeURIComponent(text.substr(RegExp.lastMatch.length));\n }\n if (baseCharsetUri.test(text) || baseUri.test(text)) {\n return fromBase64$1(text.substr(RegExp.lastMatch.length));\n }\n let encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n throw new Error(\"Unsupported source map encoding \" + encoding);\n }\n getAnnotationURL(sourceMapString) {\n return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n }\n isMap(map) {\n if (typeof map !== \"object\") return false;\n return typeof map.mappings === \"string\" || typeof map._mappings === \"string\" || Array.isArray(map.sections);\n }\n loadAnnotation(css) {\n let comments = css.match(/\\/\\*\\s*# sourceMappingURL=/gm);\n if (!comments) return;\n let start = css.lastIndexOf(comments.pop());\n let end = css.indexOf(\"*/\", start);\n if (start > -1 && end > -1) {\n this.annotation = this.getAnnotationURL(css.substring(start, end));\n }\n }\n loadFile(path) {\n this.root = dirname$1$1(path);\n if (existsSync$1(path)) {\n this.mapFile = path;\n return readFileSync$1(path, \"utf-8\").toString().trim();\n }\n }\n loadMap(file, prev) {\n if (prev === false) return false;\n if (prev) {\n if (typeof prev === \"string\") {\n return prev;\n } else if (typeof prev === \"function\") {\n let prevPath = prev(file);\n if (prevPath) {\n let map = this.loadFile(prevPath);\n if (!map) {\n throw new Error(\n \"Unable to load previous source map: \" + prevPath.toString()\n );\n }\n return map;\n }\n } else if (prev instanceof SourceMapConsumer$2$1) {\n return SourceMapGenerator$2$1.fromSourceMap(prev).toString();\n } else if (prev instanceof SourceMapGenerator$2$1) {\n return prev.toString();\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev);\n } else {\n throw new Error(\n \"Unsupported previous source map format: \" + prev.toString()\n );\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation);\n } else if (this.annotation) {\n let map = this.annotation;\n if (file) map = join$1(dirname$1$1(file), map);\n return this.loadFile(map);\n }\n }\n startWith(string, start) {\n if (!string) return false;\n return string.substr(0, start.length) === start;\n }\n withContent() {\n return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n }\n};\nvar previousMap$1 = PreviousMap$2$1;\nPreviousMap$2$1.default = PreviousMap$2$1;\nlet { SourceMapConsumer: SourceMapConsumer$1$1, SourceMapGenerator: SourceMapGenerator$1$1 } = require$$2$1;\nlet { fileURLToPath: fileURLToPath$1, pathToFileURL: pathToFileURL$1$1 } = require$$2$1;\nlet { isAbsolute: isAbsolute$1, resolve: resolve$1$1 } = require$$2$1;\nlet { nanoid: nanoid$2 } = nonSecure$1;\nlet terminalHighlight$2 = require$$2$1;\nlet CssSyntaxError$1$1 = cssSyntaxError$1;\nlet PreviousMap$1$1 = previousMap$1;\nlet fromOffsetCache$1 = Symbol(\"fromOffsetCache\");\nlet sourceMapAvailable$1$1 = Boolean(SourceMapConsumer$1$1 && SourceMapGenerator$1$1);\nlet pathAvailable$1$1 = Boolean(resolve$1$1 && isAbsolute$1);\nlet Input$4$1 = class Input {\n constructor(css, opts = {}) {\n if (css === null || typeof css === \"undefined\" || typeof css === \"object\" && !css.toString) {\n throw new Error(`PostCSS received ${css} instead of CSS string`);\n }\n this.css = css.toString();\n if (this.css[0] === \"\\uFEFF\" || this.css[0] === \"￾\") {\n this.hasBOM = true;\n this.css = this.css.slice(1);\n } else {\n this.hasBOM = false;\n }\n if (opts.from) {\n if (!pathAvailable$1$1 || /^\\w+:\\/\\//.test(opts.from) || isAbsolute$1(opts.from)) {\n this.file = opts.from;\n } else {\n this.file = resolve$1$1(opts.from);\n }\n }\n if (pathAvailable$1$1 && sourceMapAvailable$1$1) {\n let map = new PreviousMap$1$1(this.css, opts);\n if (map.text) {\n this.map = map;\n let file = map.consumer().file;\n if (!this.file && file) this.file = this.mapResolve(file);\n }\n }\n if (!this.file) {\n this.id = \"\";\n }\n if (this.map) this.map.file = this.from;\n }\n error(message, line, column, opts = {}) {\n let result2, endLine, endColumn;\n if (line && typeof line === \"object\") {\n let start = line;\n let end = column;\n if (typeof start.offset === \"number\") {\n let pos = this.fromOffset(start.offset);\n line = pos.line;\n column = pos.col;\n } else {\n line = start.line;\n column = start.column;\n }\n if (typeof end.offset === \"number\") {\n let pos = this.fromOffset(end.offset);\n endLine = pos.line;\n endColumn = pos.col;\n } else {\n endLine = end.line;\n endColumn = end.column;\n }\n } else if (!column) {\n let pos = this.fromOffset(line);\n line = pos.line;\n column = pos.col;\n }\n let origin = this.origin(line, column, endLine, endColumn);\n if (origin) {\n result2 = new CssSyntaxError$1$1(\n message,\n origin.endLine === void 0 ? origin.line : { column: origin.column, line: origin.line },\n origin.endLine === void 0 ? origin.column : { column: origin.endColumn, line: origin.endLine },\n origin.source,\n origin.file,\n opts.plugin\n );\n } else {\n result2 = new CssSyntaxError$1$1(\n message,\n endLine === void 0 ? line : { column, line },\n endLine === void 0 ? column : { column: endColumn, line: endLine },\n this.css,\n this.file,\n opts.plugin\n );\n }\n result2.input = { column, endColumn, endLine, line, source: this.css };\n if (this.file) {\n if (pathToFileURL$1$1) {\n result2.input.url = pathToFileURL$1$1(this.file).toString();\n }\n result2.input.file = this.file;\n }\n return result2;\n }\n fromOffset(offset) {\n let lastLine, lineToIndex;\n if (!this[fromOffsetCache$1]) {\n let lines = this.css.split(\"\\n\");\n lineToIndex = new Array(lines.length);\n let prevIndex = 0;\n for (let i2 = 0, l2 = lines.length; i2 < l2; i2++) {\n lineToIndex[i2] = prevIndex;\n prevIndex += lines[i2].length + 1;\n }\n this[fromOffsetCache$1] = lineToIndex;\n } else {\n lineToIndex = this[fromOffsetCache$1];\n }\n lastLine = lineToIndex[lineToIndex.length - 1];\n let min = 0;\n if (offset >= lastLine) {\n min = lineToIndex.length - 1;\n } else {\n let max = lineToIndex.length - 2;\n let mid;\n while (min < max) {\n mid = min + (max - min >> 1);\n if (offset < lineToIndex[mid]) {\n max = mid - 1;\n } else if (offset >= lineToIndex[mid + 1]) {\n min = mid + 1;\n } else {\n min = mid;\n break;\n }\n }\n }\n return {\n col: offset - lineToIndex[min] + 1,\n line: min + 1\n };\n }\n mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file;\n }\n return resolve$1$1(this.map.consumer().sourceRoot || this.map.root || \".\", file);\n }\n origin(line, column, endLine, endColumn) {\n if (!this.map) return false;\n let consumer = this.map.consumer();\n let from = consumer.originalPositionFor({ column, line });\n if (!from.source) return false;\n let to;\n if (typeof endLine === \"number\") {\n to = consumer.originalPositionFor({ column: endColumn, line: endLine });\n }\n let fromUrl;\n if (isAbsolute$1(from.source)) {\n fromUrl = pathToFileURL$1$1(from.source);\n } else {\n fromUrl = new URL(\n from.source,\n this.map.consumer().sourceRoot || pathToFileURL$1$1(this.map.mapFile)\n );\n }\n let result2 = {\n column: from.column,\n endColumn: to && to.column,\n endLine: to && to.line,\n line: from.line,\n url: fromUrl.toString()\n };\n if (fromUrl.protocol === \"file:\") {\n if (fileURLToPath$1) {\n result2.file = fileURLToPath$1(fromUrl);\n } else {\n throw new Error(`file: protocol is not available in this PostCSS build`);\n }\n }\n let source = consumer.sourceContentFor(from.source);\n if (source) result2.source = source;\n return result2;\n }\n toJSON() {\n let json = {};\n for (let name of [\"hasBOM\", \"css\", \"file\", \"id\"]) {\n if (this[name] != null) {\n json[name] = this[name];\n }\n }\n if (this.map) {\n json.map = { ...this.map };\n if (json.map.consumerCache) {\n json.map.consumerCache = void 0;\n }\n }\n return json;\n }\n get from() {\n return this.file || this.id;\n }\n};\nvar input$1 = Input$4$1;\nInput$4$1.default = Input$4$1;\nif (terminalHighlight$2 && terminalHighlight$2.registerInput) {\n terminalHighlight$2.registerInput(Input$4$1);\n}\nlet { SourceMapConsumer: SourceMapConsumer$3, SourceMapGenerator: SourceMapGenerator$3 } = require$$2$1;\nlet { dirname: dirname$2, relative: relative$1, resolve: resolve$2, sep: sep$1 } = require$$2$1;\nlet { pathToFileURL: pathToFileURL$2 } = require$$2$1;\nlet Input$3$1 = input$1;\nlet sourceMapAvailable$2 = Boolean(SourceMapConsumer$3 && SourceMapGenerator$3);\nlet pathAvailable$2 = Boolean(dirname$2 && resolve$2 && relative$1 && sep$1);\nlet MapGenerator$2$1 = class MapGenerator {\n constructor(stringify2, root2, opts, cssString) {\n this.stringify = stringify2;\n this.mapOpts = opts.map || {};\n this.root = root2;\n this.opts = opts;\n this.css = cssString;\n this.originalCSS = cssString;\n this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute;\n this.memoizedFileURLs = /* @__PURE__ */ new Map();\n this.memoizedPaths = /* @__PURE__ */ new Map();\n this.memoizedURLs = /* @__PURE__ */ new Map();\n }\n addAnnotation() {\n let content;\n if (this.isInline()) {\n content = \"data:application/json;base64,\" + this.toBase64(this.map.toString());\n } else if (typeof this.mapOpts.annotation === \"string\") {\n content = this.mapOpts.annotation;\n } else if (typeof this.mapOpts.annotation === \"function\") {\n content = this.mapOpts.annotation(this.opts.to, this.root);\n } else {\n content = this.outputFile() + \".map\";\n }\n let eol = \"\\n\";\n if (this.css.includes(\"\\r\\n\")) eol = \"\\r\\n\";\n this.css += eol + \"/*# sourceMappingURL=\" + content + \" */\";\n }\n applyPrevMaps() {\n for (let prev of this.previous()) {\n let from = this.toUrl(this.path(prev.file));\n let root2 = prev.root || dirname$2(prev.file);\n let map;\n if (this.mapOpts.sourcesContent === false) {\n map = new SourceMapConsumer$3(prev.text);\n if (map.sourcesContent) {\n map.sourcesContent = null;\n }\n } else {\n map = prev.consumer();\n }\n this.map.applySourceMap(map, from, this.toUrl(this.path(root2)));\n }\n }\n clearAnnotation() {\n if (this.mapOpts.annotation === false) return;\n if (this.root) {\n let node2;\n for (let i2 = this.root.nodes.length - 1; i2 >= 0; i2--) {\n node2 = this.root.nodes[i2];\n if (node2.type !== \"comment\") continue;\n if (node2.text.indexOf(\"# sourceMappingURL=\") === 0) {\n this.root.removeChild(i2);\n }\n }\n } else if (this.css) {\n this.css = this.css.replace(/\\n*?\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\");\n }\n }\n generate() {\n this.clearAnnotation();\n if (pathAvailable$2 && sourceMapAvailable$2 && this.isMap()) {\n return this.generateMap();\n } else {\n let result2 = \"\";\n this.stringify(this.root, (i2) => {\n result2 += i2;\n });\n return [result2];\n }\n }\n generateMap() {\n if (this.root) {\n this.generateString();\n } else if (this.previous().length === 1) {\n let prev = this.previous()[0].consumer();\n prev.file = this.outputFile();\n this.map = SourceMapGenerator$3.fromSourceMap(prev, {\n ignoreInvalidMapping: true\n });\n } else {\n this.map = new SourceMapGenerator$3({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n this.map.addMapping({\n generated: { column: 0, line: 1 },\n original: { column: 0, line: 1 },\n source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\"\n });\n }\n if (this.isSourcesContent()) this.setSourcesContent();\n if (this.root && this.previous().length > 0) this.applyPrevMaps();\n if (this.isAnnotation()) this.addAnnotation();\n if (this.isInline()) {\n return [this.css];\n } else {\n return [this.css, this.map];\n }\n }\n generateString() {\n this.css = \"\";\n this.map = new SourceMapGenerator$3({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n let line = 1;\n let column = 1;\n let noSource = \"\";\n let mapping = {\n generated: { column: 0, line: 0 },\n original: { column: 0, line: 0 },\n source: \"\"\n };\n let lines, last;\n this.stringify(this.root, (str, node2, type) => {\n this.css += str;\n if (node2 && type !== \"end\") {\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n if (node2.source && node2.source.start) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.start.line;\n mapping.original.column = node2.source.start.column - 1;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n this.map.addMapping(mapping);\n }\n }\n lines = str.match(/\\n/g);\n if (lines) {\n line += lines.length;\n last = str.lastIndexOf(\"\\n\");\n column = str.length - last;\n } else {\n column += str.length;\n }\n if (node2 && type !== \"start\") {\n let p = node2.parent || { raws: {} };\n let childless = node2.type === \"decl\" || node2.type === \"atrule\" && !node2.nodes;\n if (!childless || node2 !== p.last || p.raws.semicolon) {\n if (node2.source && node2.source.end) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.end.line;\n mapping.original.column = node2.source.end.column - 1;\n mapping.generated.line = line;\n mapping.generated.column = column - 2;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n this.map.addMapping(mapping);\n }\n }\n }\n });\n }\n isAnnotation() {\n if (this.isInline()) {\n return true;\n }\n if (typeof this.mapOpts.annotation !== \"undefined\") {\n return this.mapOpts.annotation;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.annotation);\n }\n return true;\n }\n isInline() {\n if (typeof this.mapOpts.inline !== \"undefined\") {\n return this.mapOpts.inline;\n }\n let annotation = this.mapOpts.annotation;\n if (typeof annotation !== \"undefined\" && annotation !== true) {\n return false;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.inline);\n }\n return true;\n }\n isMap() {\n if (typeof this.opts.map !== \"undefined\") {\n return !!this.opts.map;\n }\n return this.previous().length > 0;\n }\n isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== \"undefined\") {\n return this.mapOpts.sourcesContent;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.withContent());\n }\n return true;\n }\n outputFile() {\n if (this.opts.to) {\n return this.path(this.opts.to);\n } else if (this.opts.from) {\n return this.path(this.opts.from);\n } else {\n return \"to.css\";\n }\n }\n path(file) {\n if (this.mapOpts.absolute) return file;\n if (file.charCodeAt(0) === 60) return file;\n if (/^\\w+:\\/\\//.test(file)) return file;\n let cached = this.memoizedPaths.get(file);\n if (cached) return cached;\n let from = this.opts.to ? dirname$2(this.opts.to) : \".\";\n if (typeof this.mapOpts.annotation === \"string\") {\n from = dirname$2(resolve$2(from, this.mapOpts.annotation));\n }\n let path = relative$1(from, file);\n this.memoizedPaths.set(file, path);\n return path;\n }\n previous() {\n if (!this.previousMaps) {\n this.previousMaps = [];\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source && node2.source.input.map) {\n let map = node2.source.input.map;\n if (!this.previousMaps.includes(map)) {\n this.previousMaps.push(map);\n }\n }\n });\n } else {\n let input2 = new Input$3$1(this.originalCSS, this.opts);\n if (input2.map) this.previousMaps.push(input2.map);\n }\n }\n return this.previousMaps;\n }\n setSourcesContent() {\n let already = {};\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source) {\n let from = node2.source.input.from;\n if (from && !already[from]) {\n already[from] = true;\n let fromUrl = this.usesFileUrls ? this.toFileUrl(from) : this.toUrl(this.path(from));\n this.map.setSourceContent(fromUrl, node2.source.input.css);\n }\n }\n });\n } else if (this.css) {\n let from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\";\n this.map.setSourceContent(from, this.css);\n }\n }\n sourcePath(node2) {\n if (this.mapOpts.from) {\n return this.toUrl(this.mapOpts.from);\n } else if (this.usesFileUrls) {\n return this.toFileUrl(node2.source.input.from);\n } else {\n return this.toUrl(this.path(node2.source.input.from));\n }\n }\n toBase64(str) {\n if (Buffer) {\n return Buffer.from(str).toString(\"base64\");\n } else {\n return window.btoa(unescape(encodeURIComponent(str)));\n }\n }\n toFileUrl(path) {\n let cached = this.memoizedFileURLs.get(path);\n if (cached) return cached;\n if (pathToFileURL$2) {\n let fileURL = pathToFileURL$2(path).toString();\n this.memoizedFileURLs.set(path, fileURL);\n return fileURL;\n } else {\n throw new Error(\n \"`map.absolute` option is not available in this PostCSS build\"\n );\n }\n }\n toUrl(path) {\n let cached = this.memoizedURLs.get(path);\n if (cached) return cached;\n if (sep$1 === \"\\\\\") {\n path = path.replace(/\\\\/g, \"/\");\n }\n let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent);\n this.memoizedURLs.set(path, url);\n return url;\n }\n};\nvar mapGenerator$1 = MapGenerator$2$1;\nlet Node$2$1 = node$1;\nlet Comment$4$1 = class Comment extends Node$2$1 {\n constructor(defaults) {\n super(defaults);\n this.type = \"comment\";\n }\n};\nvar comment$1 = Comment$4$1;\nComment$4$1.default = Comment$4$1;\nlet { isClean: isClean$1$1, my: my$1$1 } = symbols$1;\nlet Declaration$3$1 = declaration$1;\nlet Comment$3$1 = comment$1;\nlet Node$1$1 = node$1;\nlet parse$4$1, Rule$4$1, AtRule$4$1, Root$6$1;\nfunction cleanSource$1(nodes) {\n return nodes.map((i2) => {\n if (i2.nodes) i2.nodes = cleanSource$1(i2.nodes);\n delete i2.source;\n return i2;\n });\n}\nfunction markDirtyUp$1(node2) {\n node2[isClean$1$1] = false;\n if (node2.proxyOf.nodes) {\n for (let i2 of node2.proxyOf.nodes) {\n markDirtyUp$1(i2);\n }\n }\n}\nlet Container$7$1 = class Container extends Node$1$1 {\n append(...children) {\n for (let child of children) {\n let nodes = this.normalize(child, this.last);\n for (let node2 of nodes) this.proxyOf.nodes.push(node2);\n }\n this.markDirty();\n return this;\n }\n cleanRaws(keepBetween) {\n super.cleanRaws(keepBetween);\n if (this.nodes) {\n for (let node2 of this.nodes) node2.cleanRaws(keepBetween);\n }\n }\n each(callback) {\n if (!this.proxyOf.nodes) return void 0;\n let iterator = this.getIterator();\n let index2, result2;\n while (this.indexes[iterator] < this.proxyOf.nodes.length) {\n index2 = this.indexes[iterator];\n result2 = callback(this.proxyOf.nodes[index2], index2);\n if (result2 === false) break;\n this.indexes[iterator] += 1;\n }\n delete this.indexes[iterator];\n return result2;\n }\n every(condition) {\n return this.nodes.every(condition);\n }\n getIterator() {\n if (!this.lastEach) this.lastEach = 0;\n if (!this.indexes) this.indexes = {};\n this.lastEach += 1;\n let iterator = this.lastEach;\n this.indexes[iterator] = 0;\n return iterator;\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (!node2[prop]) {\n return node2[prop];\n } else if (prop === \"each\" || typeof prop === \"string\" && prop.startsWith(\"walk\")) {\n return (...args) => {\n return node2[prop](\n ...args.map((i2) => {\n if (typeof i2 === \"function\") {\n return (child, index2) => i2(child.toProxy(), index2);\n } else {\n return i2;\n }\n })\n );\n };\n } else if (prop === \"every\" || prop === \"some\") {\n return (cb) => {\n return node2[prop](\n (child, ...other) => cb(child.toProxy(), ...other)\n );\n };\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else if (prop === \"nodes\") {\n return node2.nodes.map((i2) => i2.toProxy());\n } else if (prop === \"first\" || prop === \"last\") {\n return node2[prop].toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"name\" || prop === \"params\" || prop === \"selector\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n index(child) {\n if (typeof child === \"number\") return child;\n if (child.proxyOf) child = child.proxyOf;\n return this.proxyOf.nodes.indexOf(child);\n }\n insertAfter(exist, add) {\n let existIndex = this.index(exist);\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex < index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n insertBefore(exist, add) {\n let existIndex = this.index(exist);\n let type = existIndex === 0 ? \"prepend\" : false;\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex <= index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n normalize(nodes, sample) {\n if (typeof nodes === \"string\") {\n nodes = cleanSource$1(parse$4$1(nodes).nodes);\n } else if (typeof nodes === \"undefined\") {\n nodes = [];\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type === \"root\" && this.type !== \"document\") {\n nodes = nodes.nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type) {\n nodes = [nodes];\n } else if (nodes.prop) {\n if (typeof nodes.value === \"undefined\") {\n throw new Error(\"Value field is missed in node creation\");\n } else if (typeof nodes.value !== \"string\") {\n nodes.value = String(nodes.value);\n }\n nodes = [new Declaration$3$1(nodes)];\n } else if (nodes.selector) {\n nodes = [new Rule$4$1(nodes)];\n } else if (nodes.name) {\n nodes = [new AtRule$4$1(nodes)];\n } else if (nodes.text) {\n nodes = [new Comment$3$1(nodes)];\n } else {\n throw new Error(\"Unknown node type in node creation\");\n }\n let processed = nodes.map((i2) => {\n if (!i2[my$1$1]) Container.rebuild(i2);\n i2 = i2.proxyOf;\n if (i2.parent) i2.parent.removeChild(i2);\n if (i2[isClean$1$1]) markDirtyUp$1(i2);\n if (typeof i2.raws.before === \"undefined\") {\n if (sample && typeof sample.raws.before !== \"undefined\") {\n i2.raws.before = sample.raws.before.replace(/\\S/g, \"\");\n }\n }\n i2.parent = this.proxyOf;\n return i2;\n });\n return processed;\n }\n prepend(...children) {\n children = children.reverse();\n for (let child of children) {\n let nodes = this.normalize(child, this.first, \"prepend\").reverse();\n for (let node2 of nodes) this.proxyOf.nodes.unshift(node2);\n for (let id in this.indexes) {\n this.indexes[id] = this.indexes[id] + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n push(child) {\n child.parent = this;\n this.proxyOf.nodes.push(child);\n return this;\n }\n removeAll() {\n for (let node2 of this.proxyOf.nodes) node2.parent = void 0;\n this.proxyOf.nodes = [];\n this.markDirty();\n return this;\n }\n removeChild(child) {\n child = this.index(child);\n this.proxyOf.nodes[child].parent = void 0;\n this.proxyOf.nodes.splice(child, 1);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (index2 >= child) {\n this.indexes[id] = index2 - 1;\n }\n }\n this.markDirty();\n return this;\n }\n replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {};\n }\n this.walkDecls((decl) => {\n if (opts.props && !opts.props.includes(decl.prop)) return;\n if (opts.fast && !decl.value.includes(opts.fast)) return;\n decl.value = decl.value.replace(pattern, callback);\n });\n this.markDirty();\n return this;\n }\n some(condition) {\n return this.nodes.some(condition);\n }\n walk(callback) {\n return this.each((child, i2) => {\n let result2;\n try {\n result2 = callback(child, i2);\n } catch (e2) {\n throw child.addToError(e2);\n }\n if (result2 !== false && child.walk) {\n result2 = child.walk(callback);\n }\n return result2;\n });\n }\n walkAtRules(name, callback) {\n if (!callback) {\n callback = name;\n return this.walk((child, i2) => {\n if (child.type === \"atrule\") {\n return callback(child, i2);\n }\n });\n }\n if (name instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && name.test(child.name)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && child.name === name) {\n return callback(child, i2);\n }\n });\n }\n walkComments(callback) {\n return this.walk((child, i2) => {\n if (child.type === \"comment\") {\n return callback(child, i2);\n }\n });\n }\n walkDecls(prop, callback) {\n if (!callback) {\n callback = prop;\n return this.walk((child, i2) => {\n if (child.type === \"decl\") {\n return callback(child, i2);\n }\n });\n }\n if (prop instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && prop.test(child.prop)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && child.prop === prop) {\n return callback(child, i2);\n }\n });\n }\n walkRules(selector, callback) {\n if (!callback) {\n callback = selector;\n return this.walk((child, i2) => {\n if (child.type === \"rule\") {\n return callback(child, i2);\n }\n });\n }\n if (selector instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && selector.test(child.selector)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && child.selector === selector) {\n return callback(child, i2);\n }\n });\n }\n get first() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[0];\n }\n get last() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n }\n};\nContainer$7$1.registerParse = (dependant) => {\n parse$4$1 = dependant;\n};\nContainer$7$1.registerRule = (dependant) => {\n Rule$4$1 = dependant;\n};\nContainer$7$1.registerAtRule = (dependant) => {\n AtRule$4$1 = dependant;\n};\nContainer$7$1.registerRoot = (dependant) => {\n Root$6$1 = dependant;\n};\nvar container$1 = Container$7$1;\nContainer$7$1.default = Container$7$1;\nContainer$7$1.rebuild = (node2) => {\n if (node2.type === \"atrule\") {\n Object.setPrototypeOf(node2, AtRule$4$1.prototype);\n } else if (node2.type === \"rule\") {\n Object.setPrototypeOf(node2, Rule$4$1.prototype);\n } else if (node2.type === \"decl\") {\n Object.setPrototypeOf(node2, Declaration$3$1.prototype);\n } else if (node2.type === \"comment\") {\n Object.setPrototypeOf(node2, Comment$3$1.prototype);\n } else if (node2.type === \"root\") {\n Object.setPrototypeOf(node2, Root$6$1.prototype);\n }\n node2[my$1$1] = true;\n if (node2.nodes) {\n node2.nodes.forEach((child) => {\n Container$7$1.rebuild(child);\n });\n }\n};\nlet Container$6$1 = container$1;\nlet LazyResult$4$1, Processor$3$1;\nlet Document$3$1 = class Document2 extends Container$6$1 {\n constructor(defaults) {\n super({ type: \"document\", ...defaults });\n if (!this.nodes) {\n this.nodes = [];\n }\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$4$1(new Processor$3$1(), this, opts);\n return lazy.stringify();\n }\n};\nDocument$3$1.registerLazyResult = (dependant) => {\n LazyResult$4$1 = dependant;\n};\nDocument$3$1.registerProcessor = (dependant) => {\n Processor$3$1 = dependant;\n};\nvar document$1$1 = Document$3$1;\nDocument$3$1.default = Document$3$1;\nlet printed$1 = {};\nvar warnOnce$2$1 = function warnOnce(message) {\n if (printed$1[message]) return;\n printed$1[message] = true;\n if (typeof console !== \"undefined\" && console.warn) {\n console.warn(message);\n }\n};\nlet Warning$2$1 = class Warning {\n constructor(text, opts = {}) {\n this.type = \"warning\";\n this.text = text;\n if (opts.node && opts.node.source) {\n let range = opts.node.rangeBy(opts);\n this.line = range.start.line;\n this.column = range.start.column;\n this.endLine = range.end.line;\n this.endColumn = range.end.column;\n }\n for (let opt in opts) this[opt] = opts[opt];\n }\n toString() {\n if (this.node) {\n return this.node.error(this.text, {\n index: this.index,\n plugin: this.plugin,\n word: this.word\n }).message;\n }\n if (this.plugin) {\n return this.plugin + \": \" + this.text;\n }\n return this.text;\n }\n};\nvar warning$1 = Warning$2$1;\nWarning$2$1.default = Warning$2$1;\nlet Warning$1$1 = warning$1;\nlet Result$3$1 = class Result {\n constructor(processor2, root2, opts) {\n this.processor = processor2;\n this.messages = [];\n this.root = root2;\n this.opts = opts;\n this.css = void 0;\n this.map = void 0;\n }\n toString() {\n return this.css;\n }\n warn(text, opts = {}) {\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin;\n }\n }\n let warning2 = new Warning$1$1(text, opts);\n this.messages.push(warning2);\n return warning2;\n }\n warnings() {\n return this.messages.filter((i2) => i2.type === \"warning\");\n }\n get content() {\n return this.css;\n }\n};\nvar result$1 = Result$3$1;\nResult$3$1.default = Result$3$1;\nconst SINGLE_QUOTE$1 = \"'\".charCodeAt(0);\nconst DOUBLE_QUOTE$1 = '\"'.charCodeAt(0);\nconst BACKSLASH$1 = \"\\\\\".charCodeAt(0);\nconst SLASH$1 = \"/\".charCodeAt(0);\nconst NEWLINE$1 = \"\\n\".charCodeAt(0);\nconst SPACE$1 = \" \".charCodeAt(0);\nconst FEED$1 = \"\\f\".charCodeAt(0);\nconst TAB$1 = \"\t\".charCodeAt(0);\nconst CR$1 = \"\\r\".charCodeAt(0);\nconst OPEN_SQUARE$1 = \"[\".charCodeAt(0);\nconst CLOSE_SQUARE$1 = \"]\".charCodeAt(0);\nconst OPEN_PARENTHESES$1 = \"(\".charCodeAt(0);\nconst CLOSE_PARENTHESES$1 = \")\".charCodeAt(0);\nconst OPEN_CURLY$1 = \"{\".charCodeAt(0);\nconst CLOSE_CURLY$1 = \"}\".charCodeAt(0);\nconst SEMICOLON$1 = \";\".charCodeAt(0);\nconst ASTERISK$1 = \"*\".charCodeAt(0);\nconst COLON$1 = \":\".charCodeAt(0);\nconst AT$1 = \"@\".charCodeAt(0);\nconst RE_AT_END$1 = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g;\nconst RE_WORD_END$1 = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g;\nconst RE_BAD_BRACKET$1 = /.[\\r\\n\"'(/\\\\]/;\nconst RE_HEX_ESCAPE$1 = /[\\da-f]/i;\nvar tokenize$1 = function tokenizer(input2, options = {}) {\n let css = input2.css.valueOf();\n let ignore = options.ignoreErrors;\n let code, next, quote, content, escape;\n let escaped, escapePos, prev, n2, currentToken;\n let length = css.length;\n let pos = 0;\n let buffer = [];\n let returned = [];\n function position() {\n return pos;\n }\n function unclosed(what) {\n throw input2.error(\"Unclosed \" + what, pos);\n }\n function endOfFile() {\n return returned.length === 0 && pos >= length;\n }\n function nextToken(opts) {\n if (returned.length) return returned.pop();\n if (pos >= length) return;\n let ignoreUnclosed = opts ? opts.ignoreUnclosed : false;\n code = css.charCodeAt(pos);\n switch (code) {\n case NEWLINE$1:\n case SPACE$1:\n case TAB$1:\n case CR$1:\n case FEED$1: {\n next = pos;\n do {\n next += 1;\n code = css.charCodeAt(next);\n } while (code === SPACE$1 || code === NEWLINE$1 || code === TAB$1 || code === CR$1 || code === FEED$1);\n currentToken = [\"space\", css.slice(pos, next)];\n pos = next - 1;\n break;\n }\n case OPEN_SQUARE$1:\n case CLOSE_SQUARE$1:\n case OPEN_CURLY$1:\n case CLOSE_CURLY$1:\n case COLON$1:\n case SEMICOLON$1:\n case CLOSE_PARENTHESES$1: {\n let controlChar = String.fromCharCode(code);\n currentToken = [controlChar, controlChar, pos];\n break;\n }\n case OPEN_PARENTHESES$1: {\n prev = buffer.length ? buffer.pop()[1] : \"\";\n n2 = css.charCodeAt(pos + 1);\n if (prev === \"url\" && n2 !== SINGLE_QUOTE$1 && n2 !== DOUBLE_QUOTE$1 && n2 !== SPACE$1 && n2 !== NEWLINE$1 && n2 !== TAB$1 && n2 !== FEED$1 && n2 !== CR$1) {\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(\")\", next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos;\n break;\n } else {\n unclosed(\"bracket\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH$1) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"brackets\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n next = css.indexOf(\")\", pos + 1);\n content = css.slice(pos, next + 1);\n if (next === -1 || RE_BAD_BRACKET$1.test(content)) {\n currentToken = [\"(\", \"(\", pos];\n } else {\n currentToken = [\"brackets\", content, pos, next];\n pos = next;\n }\n }\n break;\n }\n case SINGLE_QUOTE$1:\n case DOUBLE_QUOTE$1: {\n quote = code === SINGLE_QUOTE$1 ? \"'\" : '\"';\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(quote, next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos + 1;\n break;\n } else {\n unclosed(\"string\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH$1) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"string\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case AT$1: {\n RE_AT_END$1.lastIndex = pos + 1;\n RE_AT_END$1.test(css);\n if (RE_AT_END$1.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_AT_END$1.lastIndex - 2;\n }\n currentToken = [\"at-word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case BACKSLASH$1: {\n next = pos;\n escape = true;\n while (css.charCodeAt(next + 1) === BACKSLASH$1) {\n next += 1;\n escape = !escape;\n }\n code = css.charCodeAt(next + 1);\n if (escape && code !== SLASH$1 && code !== SPACE$1 && code !== NEWLINE$1 && code !== TAB$1 && code !== CR$1 && code !== FEED$1) {\n next += 1;\n if (RE_HEX_ESCAPE$1.test(css.charAt(next))) {\n while (RE_HEX_ESCAPE$1.test(css.charAt(next + 1))) {\n next += 1;\n }\n if (css.charCodeAt(next + 1) === SPACE$1) {\n next += 1;\n }\n }\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n default: {\n if (code === SLASH$1 && css.charCodeAt(pos + 1) === ASTERISK$1) {\n next = css.indexOf(\"*/\", pos + 2) + 1;\n if (next === 0) {\n if (ignore || ignoreUnclosed) {\n next = css.length;\n } else {\n unclosed(\"comment\");\n }\n }\n currentToken = [\"comment\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n RE_WORD_END$1.lastIndex = pos + 1;\n RE_WORD_END$1.test(css);\n if (RE_WORD_END$1.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_WORD_END$1.lastIndex - 2;\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n buffer.push(currentToken);\n pos = next;\n }\n break;\n }\n }\n pos++;\n return currentToken;\n }\n function back(token) {\n returned.push(token);\n }\n return {\n back,\n endOfFile,\n nextToken,\n position\n };\n};\nlet Container$5$1 = container$1;\nlet AtRule$3$1 = class AtRule extends Container$5$1 {\n constructor(defaults) {\n super(defaults);\n this.type = \"atrule\";\n }\n append(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.append(...children);\n }\n prepend(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.prepend(...children);\n }\n};\nvar atRule$1 = AtRule$3$1;\nAtRule$3$1.default = AtRule$3$1;\nContainer$5$1.registerAtRule(AtRule$3$1);\nlet Container$4$1 = container$1;\nlet LazyResult$3$1, Processor$2$1;\nlet Root$5$1 = class Root extends Container$4$1 {\n constructor(defaults) {\n super(defaults);\n this.type = \"root\";\n if (!this.nodes) this.nodes = [];\n }\n normalize(child, sample, type) {\n let nodes = super.normalize(child);\n if (sample) {\n if (type === \"prepend\") {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before;\n } else {\n delete sample.raws.before;\n }\n } else if (this.first !== sample) {\n for (let node2 of nodes) {\n node2.raws.before = sample.raws.before;\n }\n }\n }\n return nodes;\n }\n removeChild(child, ignore) {\n let index2 = this.index(child);\n if (!ignore && index2 === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index2].raws.before;\n }\n return super.removeChild(child);\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$3$1(new Processor$2$1(), this, opts);\n return lazy.stringify();\n }\n};\nRoot$5$1.registerLazyResult = (dependant) => {\n LazyResult$3$1 = dependant;\n};\nRoot$5$1.registerProcessor = (dependant) => {\n Processor$2$1 = dependant;\n};\nvar root$1 = Root$5$1;\nRoot$5$1.default = Root$5$1;\nContainer$4$1.registerRoot(Root$5$1);\nlet list$2$1 = {\n comma(string) {\n return list$2$1.split(string, [\",\"], true);\n },\n space(string) {\n let spaces = [\" \", \"\\n\", \"\t\"];\n return list$2$1.split(string, spaces);\n },\n split(string, separators, last) {\n let array = [];\n let current = \"\";\n let split = false;\n let func = 0;\n let inQuote = false;\n let prevQuote = \"\";\n let escape = false;\n for (let letter of string) {\n if (escape) {\n escape = false;\n } else if (letter === \"\\\\\") {\n escape = true;\n } else if (inQuote) {\n if (letter === prevQuote) {\n inQuote = false;\n }\n } else if (letter === '\"' || letter === \"'\") {\n inQuote = true;\n prevQuote = letter;\n } else if (letter === \"(\") {\n func += 1;\n } else if (letter === \")\") {\n if (func > 0) func -= 1;\n } else if (func === 0) {\n if (separators.includes(letter)) split = true;\n }\n if (split) {\n if (current !== \"\") array.push(current.trim());\n current = \"\";\n split = false;\n } else {\n current += letter;\n }\n }\n if (last || current !== \"\") array.push(current.trim());\n return array;\n }\n};\nvar list_1$1 = list$2$1;\nlist$2$1.default = list$2$1;\nlet Container$3$1 = container$1;\nlet list$1$1 = list_1$1;\nlet Rule$3$1 = class Rule extends Container$3$1 {\n constructor(defaults) {\n super(defaults);\n this.type = \"rule\";\n if (!this.nodes) this.nodes = [];\n }\n get selectors() {\n return list$1$1.comma(this.selector);\n }\n set selectors(values) {\n let match = this.selector ? this.selector.match(/,\\s*/) : null;\n let sep2 = match ? match[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n this.selector = values.join(sep2);\n }\n};\nvar rule$1 = Rule$3$1;\nRule$3$1.default = Rule$3$1;\nContainer$3$1.registerRule(Rule$3$1);\nlet Declaration$2$1 = declaration$1;\nlet tokenizer2$1 = tokenize$1;\nlet Comment$2$1 = comment$1;\nlet AtRule$2$1 = atRule$1;\nlet Root$4$1 = root$1;\nlet Rule$2$1 = rule$1;\nconst SAFE_COMMENT_NEIGHBOR$1 = {\n empty: true,\n space: true\n};\nfunction findLastWithPosition$1(tokens) {\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n let token = tokens[i2];\n let pos = token[3] || token[2];\n if (pos) return pos;\n }\n}\nlet Parser$1$1 = class Parser {\n constructor(input2) {\n this.input = input2;\n this.root = new Root$4$1();\n this.current = this.root;\n this.spaces = \"\";\n this.semicolon = false;\n this.createTokenizer();\n this.root.source = { input: input2, start: { column: 1, line: 1, offset: 0 } };\n }\n atrule(token) {\n let node2 = new AtRule$2$1();\n node2.name = token[1].slice(1);\n if (node2.name === \"\") {\n this.unnamedAtrule(node2, token);\n }\n this.init(node2, token[2]);\n let type;\n let prev;\n let shift;\n let last = false;\n let open = false;\n let params = [];\n let brackets = [];\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n type = token[0];\n if (type === \"(\" || type === \"[\") {\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (type === \"{\" && brackets.length > 0) {\n brackets.push(\"}\");\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n }\n if (brackets.length === 0) {\n if (type === \";\") {\n node2.source.end = this.getPosition(token[2]);\n node2.source.end.offset++;\n this.semicolon = true;\n break;\n } else if (type === \"{\") {\n open = true;\n break;\n } else if (type === \"}\") {\n if (params.length > 0) {\n shift = params.length - 1;\n prev = params[shift];\n while (prev && prev[0] === \"space\") {\n prev = params[--shift];\n }\n if (prev) {\n node2.source.end = this.getPosition(prev[3] || prev[2]);\n node2.source.end.offset++;\n }\n }\n this.end(token);\n break;\n } else {\n params.push(token);\n }\n } else {\n params.push(token);\n }\n if (this.tokenizer.endOfFile()) {\n last = true;\n break;\n }\n }\n node2.raws.between = this.spacesAndCommentsFromEnd(params);\n if (params.length) {\n node2.raws.afterName = this.spacesAndCommentsFromStart(params);\n this.raw(node2, \"params\", params);\n if (last) {\n token = params[params.length - 1];\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n this.spaces = node2.raws.between;\n node2.raws.between = \"\";\n }\n } else {\n node2.raws.afterName = \"\";\n node2.params = \"\";\n }\n if (open) {\n node2.nodes = [];\n this.current = node2;\n }\n }\n checkMissedSemicolon(tokens) {\n let colon = this.colon(tokens);\n if (colon === false) return;\n let founded = 0;\n let token;\n for (let j = colon - 1; j >= 0; j--) {\n token = tokens[j];\n if (token[0] !== \"space\") {\n founded += 1;\n if (founded === 2) break;\n }\n }\n throw this.input.error(\n \"Missed semicolon\",\n token[0] === \"word\" ? token[3] + 1 : token[2]\n );\n }\n colon(tokens) {\n let brackets = 0;\n let token, type, prev;\n for (let [i2, element] of tokens.entries()) {\n token = element;\n type = token[0];\n if (type === \"(\") {\n brackets += 1;\n }\n if (type === \")\") {\n brackets -= 1;\n }\n if (brackets === 0 && type === \":\") {\n if (!prev) {\n this.doubleColon(token);\n } else if (prev[0] === \"word\" && prev[1] === \"progid\") {\n continue;\n } else {\n return i2;\n }\n }\n prev = token;\n }\n return false;\n }\n comment(token) {\n let node2 = new Comment$2$1();\n this.init(node2, token[2]);\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n let text = token[1].slice(2, -2);\n if (/^\\s*$/.test(text)) {\n node2.text = \"\";\n node2.raws.left = text;\n node2.raws.right = \"\";\n } else {\n let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n node2.text = match[2];\n node2.raws.left = match[1];\n node2.raws.right = match[3];\n }\n }\n createTokenizer() {\n this.tokenizer = tokenizer2$1(this.input);\n }\n decl(tokens, customProperty) {\n let node2 = new Declaration$2$1();\n this.init(node2, tokens[0][2]);\n let last = tokens[tokens.length - 1];\n if (last[0] === \";\") {\n this.semicolon = true;\n tokens.pop();\n }\n node2.source.end = this.getPosition(\n last[3] || last[2] || findLastWithPosition$1(tokens)\n );\n node2.source.end.offset++;\n while (tokens[0][0] !== \"word\") {\n if (tokens.length === 1) this.unknownWord(tokens);\n node2.raws.before += tokens.shift()[1];\n }\n node2.source.start = this.getPosition(tokens[0][2]);\n node2.prop = \"\";\n while (tokens.length) {\n let type = tokens[0][0];\n if (type === \":\" || type === \"space\" || type === \"comment\") {\n break;\n }\n node2.prop += tokens.shift()[1];\n }\n node2.raws.between = \"\";\n let token;\n while (tokens.length) {\n token = tokens.shift();\n if (token[0] === \":\") {\n node2.raws.between += token[1];\n break;\n } else {\n if (token[0] === \"word\" && /\\w/.test(token[1])) {\n this.unknownWord([token]);\n }\n node2.raws.between += token[1];\n }\n }\n if (node2.prop[0] === \"_\" || node2.prop[0] === \"*\") {\n node2.raws.before += node2.prop[0];\n node2.prop = node2.prop.slice(1);\n }\n let firstSpaces = [];\n let next;\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n firstSpaces.push(tokens.shift());\n }\n this.precheckMissedSemicolon(tokens);\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n token = tokens[i2];\n if (token[1].toLowerCase() === \"!important\") {\n node2.important = true;\n let string = this.stringFrom(tokens, i2);\n string = this.spacesFromEnd(tokens) + string;\n if (string !== \" !important\") node2.raws.important = string;\n break;\n } else if (token[1].toLowerCase() === \"important\") {\n let cache = tokens.slice(0);\n let str = \"\";\n for (let j = i2; j > 0; j--) {\n let type = cache[j][0];\n if (str.trim().indexOf(\"!\") === 0 && type !== \"space\") {\n break;\n }\n str = cache.pop()[1] + str;\n }\n if (str.trim().indexOf(\"!\") === 0) {\n node2.important = true;\n node2.raws.important = str;\n tokens = cache;\n }\n }\n if (token[0] !== \"space\" && token[0] !== \"comment\") {\n break;\n }\n }\n let hasWord = tokens.some((i2) => i2[0] !== \"space\" && i2[0] !== \"comment\");\n if (hasWord) {\n node2.raws.between += firstSpaces.map((i2) => i2[1]).join(\"\");\n firstSpaces = [];\n }\n this.raw(node2, \"value\", firstSpaces.concat(tokens), customProperty);\n if (node2.value.includes(\":\") && !customProperty) {\n this.checkMissedSemicolon(tokens);\n }\n }\n doubleColon(token) {\n throw this.input.error(\n \"Double colon\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n emptyRule(token) {\n let node2 = new Rule$2$1();\n this.init(node2, token[2]);\n node2.selector = \"\";\n node2.raws.between = \"\";\n this.current = node2;\n }\n end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.semicolon = false;\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.spaces = \"\";\n if (this.current.parent) {\n this.current.source.end = this.getPosition(token[2]);\n this.current.source.end.offset++;\n this.current = this.current.parent;\n } else {\n this.unexpectedClose(token);\n }\n }\n endFile() {\n if (this.current.parent) this.unclosedBlock();\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.root.source.end = this.getPosition(this.tokenizer.position());\n }\n freeSemicolon(token) {\n this.spaces += token[1];\n if (this.current.nodes) {\n let prev = this.current.nodes[this.current.nodes.length - 1];\n if (prev && prev.type === \"rule\" && !prev.raws.ownSemicolon) {\n prev.raws.ownSemicolon = this.spaces;\n this.spaces = \"\";\n }\n }\n }\n // Helpers\n getPosition(offset) {\n let pos = this.input.fromOffset(offset);\n return {\n column: pos.col,\n line: pos.line,\n offset\n };\n }\n init(node2, offset) {\n this.current.push(node2);\n node2.source = {\n input: this.input,\n start: this.getPosition(offset)\n };\n node2.raws.before = this.spaces;\n this.spaces = \"\";\n if (node2.type !== \"comment\") this.semicolon = false;\n }\n other(start) {\n let end = false;\n let type = null;\n let colon = false;\n let bracket = null;\n let brackets = [];\n let customProperty = start[1].startsWith(\"--\");\n let tokens = [];\n let token = start;\n while (token) {\n type = token[0];\n tokens.push(token);\n if (type === \"(\" || type === \"[\") {\n if (!bracket) bracket = token;\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (customProperty && colon && type === \"{\") {\n if (!bracket) bracket = token;\n brackets.push(\"}\");\n } else if (brackets.length === 0) {\n if (type === \";\") {\n if (colon) {\n this.decl(tokens, customProperty);\n return;\n } else {\n break;\n }\n } else if (type === \"{\") {\n this.rule(tokens);\n return;\n } else if (type === \"}\") {\n this.tokenizer.back(tokens.pop());\n end = true;\n break;\n } else if (type === \":\") {\n colon = true;\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n if (brackets.length === 0) bracket = null;\n }\n token = this.tokenizer.nextToken();\n }\n if (this.tokenizer.endOfFile()) end = true;\n if (brackets.length > 0) this.unclosedBracket(bracket);\n if (end && colon) {\n if (!customProperty) {\n while (tokens.length) {\n token = tokens[tokens.length - 1][0];\n if (token !== \"space\" && token !== \"comment\") break;\n this.tokenizer.back(tokens.pop());\n }\n }\n this.decl(tokens, customProperty);\n } else {\n this.unknownWord(tokens);\n }\n }\n parse() {\n let token;\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n switch (token[0]) {\n case \"space\":\n this.spaces += token[1];\n break;\n case \";\":\n this.freeSemicolon(token);\n break;\n case \"}\":\n this.end(token);\n break;\n case \"comment\":\n this.comment(token);\n break;\n case \"at-word\":\n this.atrule(token);\n break;\n case \"{\":\n this.emptyRule(token);\n break;\n default:\n this.other(token);\n break;\n }\n }\n this.endFile();\n }\n precheckMissedSemicolon() {\n }\n raw(node2, prop, tokens, customProperty) {\n let token, type;\n let length = tokens.length;\n let value = \"\";\n let clean = true;\n let next, prev;\n for (let i2 = 0; i2 < length; i2 += 1) {\n token = tokens[i2];\n type = token[0];\n if (type === \"space\" && i2 === length - 1 && !customProperty) {\n clean = false;\n } else if (type === \"comment\") {\n prev = tokens[i2 - 1] ? tokens[i2 - 1][0] : \"empty\";\n next = tokens[i2 + 1] ? tokens[i2 + 1][0] : \"empty\";\n if (!SAFE_COMMENT_NEIGHBOR$1[prev] && !SAFE_COMMENT_NEIGHBOR$1[next]) {\n if (value.slice(-1) === \",\") {\n clean = false;\n } else {\n value += token[1];\n }\n } else {\n clean = false;\n }\n } else {\n value += token[1];\n }\n }\n if (!clean) {\n let raw = tokens.reduce((all, i2) => all + i2[1], \"\");\n node2.raws[prop] = { raw, value };\n }\n node2[prop] = value;\n }\n rule(tokens) {\n tokens.pop();\n let node2 = new Rule$2$1();\n this.init(node2, tokens[0][2]);\n node2.raws.between = this.spacesAndCommentsFromEnd(tokens);\n this.raw(node2, \"selector\", tokens);\n this.current = node2;\n }\n spacesAndCommentsFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\" && lastTokenType !== \"comment\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n // Errors\n spacesAndCommentsFromStart(tokens) {\n let next;\n let spaces = \"\";\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n spaces += tokens.shift()[1];\n }\n return spaces;\n }\n spacesFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n stringFrom(tokens, from) {\n let result2 = \"\";\n for (let i2 = from; i2 < tokens.length; i2++) {\n result2 += tokens[i2][1];\n }\n tokens.splice(from, tokens.length - from);\n return result2;\n }\n unclosedBlock() {\n let pos = this.current.source.start;\n throw this.input.error(\"Unclosed block\", pos.line, pos.column);\n }\n unclosedBracket(bracket) {\n throw this.input.error(\n \"Unclosed bracket\",\n { offset: bracket[2] },\n { offset: bracket[2] + 1 }\n );\n }\n unexpectedClose(token) {\n throw this.input.error(\n \"Unexpected }\",\n { offset: token[2] },\n { offset: token[2] + 1 }\n );\n }\n unknownWord(tokens) {\n throw this.input.error(\n \"Unknown word\",\n { offset: tokens[0][2] },\n { offset: tokens[0][2] + tokens[0][1].length }\n );\n }\n unnamedAtrule(node2, token) {\n throw this.input.error(\n \"At-rule without name\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n};\nvar parser$1 = Parser$1$1;\nlet Container$2$1 = container$1;\nlet Parser2$1 = parser$1;\nlet Input$2$1 = input$1;\nfunction parse$3$1(css, opts) {\n let input2 = new Input$2$1(css, opts);\n let parser2 = new Parser2$1(input2);\n try {\n parser2.parse();\n } catch (e2) {\n if (process.env.NODE_ENV !== \"production\") {\n if (e2.name === \"CssSyntaxError\" && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser\";\n } else if (/\\.sass/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser\";\n } else if (/\\.less$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser\";\n }\n }\n }\n throw e2;\n }\n return parser2.root;\n}\nvar parse_1$1 = parse$3$1;\nparse$3$1.default = parse$3$1;\nContainer$2$1.registerParse(parse$3$1);\nlet { isClean: isClean$3, my: my$3 } = symbols$1;\nlet MapGenerator$1$1 = mapGenerator$1;\nlet stringify$2$1 = stringify_1$1;\nlet Container$1$1 = container$1;\nlet Document$2$1 = document$1$1;\nlet warnOnce$1$1 = warnOnce$2$1;\nlet Result$2$1 = result$1;\nlet parse$2$1 = parse_1$1;\nlet Root$3$1 = root$1;\nconst TYPE_TO_CLASS_NAME$1 = {\n atrule: \"AtRule\",\n comment: \"Comment\",\n decl: \"Declaration\",\n document: \"Document\",\n root: \"Root\",\n rule: \"Rule\"\n};\nconst PLUGIN_PROPS$1 = {\n AtRule: true,\n AtRuleExit: true,\n Comment: true,\n CommentExit: true,\n Declaration: true,\n DeclarationExit: true,\n Document: true,\n DocumentExit: true,\n Once: true,\n OnceExit: true,\n postcssPlugin: true,\n prepare: true,\n Root: true,\n RootExit: true,\n Rule: true,\n RuleExit: true\n};\nconst NOT_VISITORS$1 = {\n Once: true,\n postcssPlugin: true,\n prepare: true\n};\nconst CHILDREN$1 = 0;\nfunction isPromise$1(obj) {\n return typeof obj === \"object\" && typeof obj.then === \"function\";\n}\nfunction getEvents$1(node2) {\n let key = false;\n let type = TYPE_TO_CLASS_NAME$1[node2.type];\n if (node2.type === \"decl\") {\n key = node2.prop.toLowerCase();\n } else if (node2.type === \"atrule\") {\n key = node2.name.toLowerCase();\n }\n if (key && node2.append) {\n return [\n type,\n type + \"-\" + key,\n CHILDREN$1,\n type + \"Exit\",\n type + \"Exit-\" + key\n ];\n } else if (key) {\n return [type, type + \"-\" + key, type + \"Exit\", type + \"Exit-\" + key];\n } else if (node2.append) {\n return [type, CHILDREN$1, type + \"Exit\"];\n } else {\n return [type, type + \"Exit\"];\n }\n}\nfunction toStack$1(node2) {\n let events;\n if (node2.type === \"document\") {\n events = [\"Document\", CHILDREN$1, \"DocumentExit\"];\n } else if (node2.type === \"root\") {\n events = [\"Root\", CHILDREN$1, \"RootExit\"];\n } else {\n events = getEvents$1(node2);\n }\n return {\n eventIndex: 0,\n events,\n iterator: 0,\n node: node2,\n visitorIndex: 0,\n visitors: []\n };\n}\nfunction cleanMarks$1(node2) {\n node2[isClean$3] = false;\n if (node2.nodes) node2.nodes.forEach((i2) => cleanMarks$1(i2));\n return node2;\n}\nlet postcss$2$1 = {};\nlet LazyResult$2$1 = class LazyResult {\n constructor(processor2, css, opts) {\n this.stringified = false;\n this.processed = false;\n let root2;\n if (typeof css === \"object\" && css !== null && (css.type === \"root\" || css.type === \"document\")) {\n root2 = cleanMarks$1(css);\n } else if (css instanceof LazyResult || css instanceof Result$2$1) {\n root2 = cleanMarks$1(css.root);\n if (css.map) {\n if (typeof opts.map === \"undefined\") opts.map = {};\n if (!opts.map.inline) opts.map.inline = false;\n opts.map.prev = css.map;\n }\n } else {\n let parser2 = parse$2$1;\n if (opts.syntax) parser2 = opts.syntax.parse;\n if (opts.parser) parser2 = opts.parser;\n if (parser2.parse) parser2 = parser2.parse;\n try {\n root2 = parser2(css, opts);\n } catch (error) {\n this.processed = true;\n this.error = error;\n }\n if (root2 && !root2[my$3]) {\n Container$1$1.rebuild(root2);\n }\n }\n this.result = new Result$2$1(processor2, root2, opts);\n this.helpers = { ...postcss$2$1, postcss: postcss$2$1, result: this.result };\n this.plugins = this.processor.plugins.map((plugin22) => {\n if (typeof plugin22 === \"object\" && plugin22.prepare) {\n return { ...plugin22, ...plugin22.prepare(this.result) };\n } else {\n return plugin22;\n }\n });\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n if (this.processed) return Promise.resolve(this.result);\n if (!this.processing) {\n this.processing = this.runAsync();\n }\n return this.processing;\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n getAsyncError() {\n throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n }\n handleError(error, node2) {\n let plugin22 = this.result.lastPlugin;\n try {\n if (node2) node2.addToError(error);\n this.error = error;\n if (error.name === \"CssSyntaxError\" && !error.plugin) {\n error.plugin = plugin22.postcssPlugin;\n error.setMessage();\n } else if (plugin22.postcssVersion) {\n if (process.env.NODE_ENV !== \"production\") {\n let pluginName = plugin22.postcssPlugin;\n let pluginVer = plugin22.postcssVersion;\n let runtimeVer = this.result.processor.version;\n let a2 = pluginVer.split(\".\");\n let b = runtimeVer.split(\".\");\n if (a2[0] !== b[0] || parseInt(a2[1]) > parseInt(b[1])) {\n console.error(\n \"Unknown error from PostCSS plugin. Your current PostCSS version is \" + runtimeVer + \", but \" + pluginName + \" uses \" + pluginVer + \". Perhaps this is the source of the error below.\"\n );\n }\n }\n }\n } catch (err) {\n if (console && console.error) console.error(err);\n }\n return error;\n }\n prepareVisitors() {\n this.listeners = {};\n let add = (plugin22, type, cb) => {\n if (!this.listeners[type]) this.listeners[type] = [];\n this.listeners[type].push([plugin22, cb]);\n };\n for (let plugin22 of this.plugins) {\n if (typeof plugin22 === \"object\") {\n for (let event in plugin22) {\n if (!PLUGIN_PROPS$1[event] && /^[A-Z]/.test(event)) {\n throw new Error(\n `Unknown event ${event} in ${plugin22.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`\n );\n }\n if (!NOT_VISITORS$1[event]) {\n if (typeof plugin22[event] === \"object\") {\n for (let filter in plugin22[event]) {\n if (filter === \"*\") {\n add(plugin22, event, plugin22[event][filter]);\n } else {\n add(\n plugin22,\n event + \"-\" + filter.toLowerCase(),\n plugin22[event][filter]\n );\n }\n }\n } else if (typeof plugin22[event] === \"function\") {\n add(plugin22, event, plugin22[event]);\n }\n }\n }\n }\n }\n this.hasListener = Object.keys(this.listeners).length > 0;\n }\n async runAsync() {\n this.plugin = 0;\n for (let i2 = 0; i2 < this.plugins.length; i2++) {\n let plugin22 = this.plugins[i2];\n let promise = this.runOnRoot(plugin22);\n if (isPromise$1(promise)) {\n try {\n await promise;\n } catch (error) {\n throw this.handleError(error);\n }\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean$3]) {\n root2[isClean$3] = true;\n let stack = [toStack$1(root2)];\n while (stack.length > 0) {\n let promise = this.visitTick(stack);\n if (isPromise$1(promise)) {\n try {\n await promise;\n } catch (e2) {\n let node2 = stack[stack.length - 1].node;\n throw this.handleError(e2, node2);\n }\n }\n }\n }\n if (this.listeners.OnceExit) {\n for (let [plugin22, visitor] of this.listeners.OnceExit) {\n this.result.lastPlugin = plugin22;\n try {\n if (root2.type === \"document\") {\n let roots = root2.nodes.map(\n (subRoot) => visitor(subRoot, this.helpers)\n );\n await Promise.all(roots);\n } else {\n await visitor(root2, this.helpers);\n }\n } catch (e2) {\n throw this.handleError(e2);\n }\n }\n }\n }\n this.processed = true;\n return this.stringify();\n }\n runOnRoot(plugin22) {\n this.result.lastPlugin = plugin22;\n try {\n if (typeof plugin22 === \"object\" && plugin22.Once) {\n if (this.result.root.type === \"document\") {\n let roots = this.result.root.nodes.map(\n (root2) => plugin22.Once(root2, this.helpers)\n );\n if (isPromise$1(roots[0])) {\n return Promise.all(roots);\n }\n return roots;\n }\n return plugin22.Once(this.result.root, this.helpers);\n } else if (typeof plugin22 === \"function\") {\n return plugin22(this.result.root, this.result);\n }\n } catch (error) {\n throw this.handleError(error);\n }\n }\n stringify() {\n if (this.error) throw this.error;\n if (this.stringified) return this.result;\n this.stringified = true;\n this.sync();\n let opts = this.result.opts;\n let str = stringify$2$1;\n if (opts.syntax) str = opts.syntax.stringify;\n if (opts.stringifier) str = opts.stringifier;\n if (str.stringify) str = str.stringify;\n let map = new MapGenerator$1$1(str, this.result.root, this.result.opts);\n let data = map.generate();\n this.result.css = data[0];\n this.result.map = data[1];\n return this.result;\n }\n sync() {\n if (this.error) throw this.error;\n if (this.processed) return this.result;\n this.processed = true;\n if (this.processing) {\n throw this.getAsyncError();\n }\n for (let plugin22 of this.plugins) {\n let promise = this.runOnRoot(plugin22);\n if (isPromise$1(promise)) {\n throw this.getAsyncError();\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean$3]) {\n root2[isClean$3] = true;\n this.walkSync(root2);\n }\n if (this.listeners.OnceExit) {\n if (root2.type === \"document\") {\n for (let subRoot of root2.nodes) {\n this.visitSync(this.listeners.OnceExit, subRoot);\n }\n } else {\n this.visitSync(this.listeners.OnceExit, root2);\n }\n }\n }\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this.opts)) {\n warnOnce$1$1(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this.css;\n }\n visitSync(visitors, node2) {\n for (let [plugin22, visitor] of visitors) {\n this.result.lastPlugin = plugin22;\n let promise;\n try {\n promise = visitor(node2, this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2.proxyOf);\n }\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n return true;\n }\n if (isPromise$1(promise)) {\n throw this.getAsyncError();\n }\n }\n }\n visitTick(stack) {\n let visit2 = stack[stack.length - 1];\n let { node: node2, visitors } = visit2;\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n stack.pop();\n return;\n }\n if (visitors.length > 0 && visit2.visitorIndex < visitors.length) {\n let [plugin22, visitor] = visitors[visit2.visitorIndex];\n visit2.visitorIndex += 1;\n if (visit2.visitorIndex === visitors.length) {\n visit2.visitors = [];\n visit2.visitorIndex = 0;\n }\n this.result.lastPlugin = plugin22;\n try {\n return visitor(node2.toProxy(), this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2);\n }\n }\n if (visit2.iterator !== 0) {\n let iterator = visit2.iterator;\n let child;\n while (child = node2.nodes[node2.indexes[iterator]]) {\n node2.indexes[iterator] += 1;\n if (!child[isClean$3]) {\n child[isClean$3] = true;\n stack.push(toStack$1(child));\n return;\n }\n }\n visit2.iterator = 0;\n delete node2.indexes[iterator];\n }\n let events = visit2.events;\n while (visit2.eventIndex < events.length) {\n let event = events[visit2.eventIndex];\n visit2.eventIndex += 1;\n if (event === CHILDREN$1) {\n if (node2.nodes && node2.nodes.length) {\n node2[isClean$3] = true;\n visit2.iterator = node2.getIterator();\n }\n return;\n } else if (this.listeners[event]) {\n visit2.visitors = this.listeners[event];\n return;\n }\n }\n stack.pop();\n }\n walkSync(node2) {\n node2[isClean$3] = true;\n let events = getEvents$1(node2);\n for (let event of events) {\n if (event === CHILDREN$1) {\n if (node2.nodes) {\n node2.each((child) => {\n if (!child[isClean$3]) this.walkSync(child);\n });\n }\n } else {\n let visitors = this.listeners[event];\n if (visitors) {\n if (this.visitSync(visitors, node2.toProxy())) return;\n }\n }\n }\n }\n warnings() {\n return this.sync().warnings();\n }\n get content() {\n return this.stringify().content;\n }\n get css() {\n return this.stringify().css;\n }\n get map() {\n return this.stringify().map;\n }\n get messages() {\n return this.sync().messages;\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n return this.sync().root;\n }\n get [Symbol.toStringTag]() {\n return \"LazyResult\";\n }\n};\nLazyResult$2$1.registerPostcss = (dependant) => {\n postcss$2$1 = dependant;\n};\nvar lazyResult$1 = LazyResult$2$1;\nLazyResult$2$1.default = LazyResult$2$1;\nRoot$3$1.registerLazyResult(LazyResult$2$1);\nDocument$2$1.registerLazyResult(LazyResult$2$1);\nlet MapGenerator2$1 = mapGenerator$1;\nlet stringify$1$1 = stringify_1$1;\nlet warnOnce2$1 = warnOnce$2$1;\nlet parse$1$1 = parse_1$1;\nconst Result$1$1 = result$1;\nlet NoWorkResult$1$1 = class NoWorkResult {\n constructor(processor2, css, opts) {\n css = css.toString();\n this.stringified = false;\n this._processor = processor2;\n this._css = css;\n this._opts = opts;\n this._map = void 0;\n let root2;\n let str = stringify$1$1;\n this.result = new Result$1$1(this._processor, root2, this._opts);\n this.result.css = css;\n let self = this;\n Object.defineProperty(this.result, \"root\", {\n get() {\n return self.root;\n }\n });\n let map = new MapGenerator2$1(str, root2, this._opts, css);\n if (map.isMap()) {\n let [generatedCSS, generatedMap] = map.generate();\n if (generatedCSS) {\n this.result.css = generatedCSS;\n }\n if (generatedMap) {\n this.result.map = generatedMap;\n }\n } else {\n map.clearAnnotation();\n this.result.css = map.css;\n }\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n return Promise.resolve(this.result);\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n sync() {\n if (this.error) throw this.error;\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this._opts)) {\n warnOnce2$1(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this._css;\n }\n warnings() {\n return [];\n }\n get content() {\n return this.result.css;\n }\n get css() {\n return this.result.css;\n }\n get map() {\n return this.result.map;\n }\n get messages() {\n return [];\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n if (this._root) {\n return this._root;\n }\n let root2;\n let parser2 = parse$1$1;\n try {\n root2 = parser2(this._css, this._opts);\n } catch (error) {\n this.error = error;\n }\n if (this.error) {\n throw this.error;\n } else {\n this._root = root2;\n return root2;\n }\n }\n get [Symbol.toStringTag]() {\n return \"NoWorkResult\";\n }\n};\nvar noWorkResult$1 = NoWorkResult$1$1;\nNoWorkResult$1$1.default = NoWorkResult$1$1;\nlet NoWorkResult2$1 = noWorkResult$1;\nlet LazyResult$1$1 = lazyResult$1;\nlet Document$1$1 = document$1$1;\nlet Root$2$1 = root$1;\nlet Processor$1$1 = class Processor {\n constructor(plugins = []) {\n this.version = \"8.4.38\";\n this.plugins = this.normalize(plugins);\n }\n normalize(plugins) {\n let normalized = [];\n for (let i2 of plugins) {\n if (i2.postcss === true) {\n i2 = i2();\n } else if (i2.postcss) {\n i2 = i2.postcss;\n }\n if (typeof i2 === \"object\" && Array.isArray(i2.plugins)) {\n normalized = normalized.concat(i2.plugins);\n } else if (typeof i2 === \"object\" && i2.postcssPlugin) {\n normalized.push(i2);\n } else if (typeof i2 === \"function\") {\n normalized.push(i2);\n } else if (typeof i2 === \"object\" && (i2.parse || i2.stringify)) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error(\n \"PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.\"\n );\n }\n } else {\n throw new Error(i2 + \" is not a PostCSS plugin\");\n }\n }\n return normalized;\n }\n process(css, opts = {}) {\n if (!this.plugins.length && !opts.parser && !opts.stringifier && !opts.syntax) {\n return new NoWorkResult2$1(this, css, opts);\n } else {\n return new LazyResult$1$1(this, css, opts);\n }\n }\n use(plugin22) {\n this.plugins = this.plugins.concat(this.normalize([plugin22]));\n return this;\n }\n};\nvar processor$1 = Processor$1$1;\nProcessor$1$1.default = Processor$1$1;\nRoot$2$1.registerProcessor(Processor$1$1);\nDocument$1$1.registerProcessor(Processor$1$1);\nlet Declaration$1$1 = declaration$1;\nlet PreviousMap2$1 = previousMap$1;\nlet Comment$1$1 = comment$1;\nlet AtRule$1$1 = atRule$1;\nlet Input$1$1 = input$1;\nlet Root$1$1 = root$1;\nlet Rule$1$1 = rule$1;\nfunction fromJSON$1$1(json, inputs) {\n if (Array.isArray(json)) return json.map((n2) => fromJSON$1$1(n2));\n let { inputs: ownInputs, ...defaults } = json;\n if (ownInputs) {\n inputs = [];\n for (let input2 of ownInputs) {\n let inputHydrated = { ...input2, __proto__: Input$1$1.prototype };\n if (inputHydrated.map) {\n inputHydrated.map = {\n ...inputHydrated.map,\n __proto__: PreviousMap2$1.prototype\n };\n }\n inputs.push(inputHydrated);\n }\n }\n if (defaults.nodes) {\n defaults.nodes = json.nodes.map((n2) => fromJSON$1$1(n2, inputs));\n }\n if (defaults.source) {\n let { inputId, ...source } = defaults.source;\n defaults.source = source;\n if (inputId != null) {\n defaults.source.input = inputs[inputId];\n }\n }\n if (defaults.type === \"root\") {\n return new Root$1$1(defaults);\n } else if (defaults.type === \"decl\") {\n return new Declaration$1$1(defaults);\n } else if (defaults.type === \"rule\") {\n return new Rule$1$1(defaults);\n } else if (defaults.type === \"comment\") {\n return new Comment$1$1(defaults);\n } else if (defaults.type === \"atrule\") {\n return new AtRule$1$1(defaults);\n } else {\n throw new Error(\"Unknown node type: \" + json.type);\n }\n}\nvar fromJSON_1$1 = fromJSON$1$1;\nfromJSON$1$1.default = fromJSON$1$1;\nlet CssSyntaxError2$1 = cssSyntaxError$1;\nlet Declaration2$1 = declaration$1;\nlet LazyResult2$1 = lazyResult$1;\nlet Container2$1 = container$1;\nlet Processor2$1 = processor$1;\nlet stringify$5 = stringify_1$1;\nlet fromJSON$2 = fromJSON_1$1;\nlet Document22 = document$1$1;\nlet Warning2$1 = warning$1;\nlet Comment2$1 = comment$1;\nlet AtRule2$1 = atRule$1;\nlet Result2$1 = result$1;\nlet Input2$1 = input$1;\nlet parse$5 = parse_1$1;\nlet list$3 = list_1$1;\nlet Rule2$1 = rule$1;\nlet Root2$1 = root$1;\nlet Node2$1 = node$1;\nfunction postcss$3(...plugins) {\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0];\n }\n return new Processor2$1(plugins);\n}\npostcss$3.plugin = function plugin(name, initializer) {\n let warningPrinted = false;\n function creator(...args) {\n if (console && console.warn && !warningPrinted) {\n warningPrinted = true;\n console.warn(\n name + \": postcss.plugin was deprecated. Migration guide:\\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration\"\n );\n if (process.env.LANG && process.env.LANG.startsWith(\"cn\")) {\n console.warn(\n name + \": 里面 postcss.plugin 被弃用. 迁移指南:\\nhttps://www.w3ctech.com/topic/2226\"\n );\n }\n }\n let transformer = initializer(...args);\n transformer.postcssPlugin = name;\n transformer.postcssVersion = new Processor2$1().version;\n return transformer;\n }\n let cache;\n Object.defineProperty(creator, \"postcss\", {\n get() {\n if (!cache) cache = creator();\n return cache;\n }\n });\n creator.process = function(css, processOpts, pluginOpts) {\n return postcss$3([creator(pluginOpts)]).process(css, processOpts);\n };\n return creator;\n};\npostcss$3.stringify = stringify$5;\npostcss$3.parse = parse$5;\npostcss$3.fromJSON = fromJSON$2;\npostcss$3.list = list$3;\npostcss$3.comment = (defaults) => new Comment2$1(defaults);\npostcss$3.atRule = (defaults) => new AtRule2$1(defaults);\npostcss$3.decl = (defaults) => new Declaration2$1(defaults);\npostcss$3.rule = (defaults) => new Rule2$1(defaults);\npostcss$3.root = (defaults) => new Root2$1(defaults);\npostcss$3.document = (defaults) => new Document22(defaults);\npostcss$3.CssSyntaxError = CssSyntaxError2$1;\npostcss$3.Declaration = Declaration2$1;\npostcss$3.Container = Container2$1;\npostcss$3.Processor = Processor2$1;\npostcss$3.Document = Document22;\npostcss$3.Comment = Comment2$1;\npostcss$3.Warning = Warning2$1;\npostcss$3.AtRule = AtRule2$1;\npostcss$3.Result = Result2$1;\npostcss$3.Input = Input2$1;\npostcss$3.Rule = Rule2$1;\npostcss$3.Root = Root2$1;\npostcss$3.Node = Node2$1;\nLazyResult2$1.registerPostcss(postcss$3);\nvar postcss_1$1 = postcss$3;\npostcss$3.default = postcss$3;\nconst postcss$1$1 = /* @__PURE__ */ getDefaultExportFromCjs$1(postcss_1$1);\npostcss$1$1.stringify;\npostcss$1$1.fromJSON;\npostcss$1$1.plugin;\npostcss$1$1.parse;\npostcss$1$1.list;\npostcss$1$1.document;\npostcss$1$1.comment;\npostcss$1$1.atRule;\npostcss$1$1.rule;\npostcss$1$1.decl;\npostcss$1$1.root;\npostcss$1$1.CssSyntaxError;\npostcss$1$1.Declaration;\npostcss$1$1.Container;\npostcss$1$1.Processor;\npostcss$1$1.Document;\npostcss$1$1.Comment;\npostcss$1$1.Warning;\npostcss$1$1.AtRule;\npostcss$1$1.Result;\npostcss$1$1.Input;\npostcss$1$1.Rule;\npostcss$1$1.Root;\npostcss$1$1.Node;\nvar __defProp2 = Object.defineProperty;\nvar __defNormalProp2 = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField2 = (obj, key, value) => __defNormalProp2(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nfunction getDefaultExportFromCjs(x2) {\n return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, \"default\") ? x2[\"default\"] : x2;\n}\nfunction getAugmentedNamespace(n2) {\n if (n2.__esModule) return n2;\n var f2 = n2.default;\n if (typeof f2 == \"function\") {\n var a2 = function a22() {\n if (this instanceof a22) {\n return Reflect.construct(f2, arguments, this.constructor);\n }\n return f2.apply(this, arguments);\n };\n a2.prototype = f2.prototype;\n } else a2 = {};\n Object.defineProperty(a2, \"__esModule\", { value: true });\n Object.keys(n2).forEach(function(k) {\n var d = Object.getOwnPropertyDescriptor(n2, k);\n Object.defineProperty(a2, k, d.get ? d : {\n enumerable: true,\n get: function() {\n return n2[k];\n }\n });\n });\n return a2;\n}\nvar picocolors_browser = { exports: {} };\nvar x = String;\nvar create = function() {\n return { isColorSupported: false, reset: x, bold: x, dim: x, italic: x, underline: x, inverse: x, hidden: x, strikethrough: x, black: x, red: x, green: x, yellow: x, blue: x, magenta: x, cyan: x, white: x, gray: x, bgBlack: x, bgRed: x, bgGreen: x, bgYellow: x, bgBlue: x, bgMagenta: x, bgCyan: x, bgWhite: x };\n};\npicocolors_browser.exports = create();\npicocolors_browser.exports.createColors = create;\nvar picocolors_browserExports = picocolors_browser.exports;\nconst __viteBrowserExternal = {};\nconst __viteBrowserExternal$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: __viteBrowserExternal\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst require$$2 = /* @__PURE__ */ getAugmentedNamespace(__viteBrowserExternal$1);\nlet pico = picocolors_browserExports;\nlet terminalHighlight$1 = require$$2;\nlet CssSyntaxError$3 = class CssSyntaxError2 extends Error {\n constructor(message, line, column, source, file, plugin22) {\n super(message);\n this.name = \"CssSyntaxError\";\n this.reason = message;\n if (file) {\n this.file = file;\n }\n if (source) {\n this.source = source;\n }\n if (plugin22) {\n this.plugin = plugin22;\n }\n if (typeof line !== \"undefined\" && typeof column !== \"undefined\") {\n if (typeof line === \"number\") {\n this.line = line;\n this.column = column;\n } else {\n this.line = line.line;\n this.column = line.column;\n this.endLine = column.line;\n this.endColumn = column.column;\n }\n }\n this.setMessage();\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, CssSyntaxError2);\n }\n }\n setMessage() {\n this.message = this.plugin ? this.plugin + \": \" : \"\";\n this.message += this.file ? this.file : \"\";\n if (typeof this.line !== \"undefined\") {\n this.message += \":\" + this.line + \":\" + this.column;\n }\n this.message += \": \" + this.reason;\n }\n showSourceCode(color) {\n if (!this.source) return \"\";\n let css = this.source;\n if (color == null) color = pico.isColorSupported;\n if (terminalHighlight$1) {\n if (color) css = terminalHighlight$1(css);\n }\n let lines = css.split(/\\r?\\n/);\n let start = Math.max(this.line - 3, 0);\n let end = Math.min(this.line + 2, lines.length);\n let maxWidth = String(end).length;\n let mark, aside;\n if (color) {\n let { bold, gray, red } = pico.createColors(true);\n mark = (text) => bold(red(text));\n aside = (text) => gray(text);\n } else {\n mark = aside = (str) => str;\n }\n return lines.slice(start, end).map((line, index2) => {\n let number = start + 1 + index2;\n let gutter = \" \" + (\" \" + number).slice(-maxWidth) + \" | \";\n if (number === this.line) {\n let spacing = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, this.column - 1).replace(/[^\\t]/g, \" \");\n return mark(\">\") + aside(gutter) + line + \"\\n \" + spacing + mark(\"^\");\n }\n return \" \" + aside(gutter) + line;\n }).join(\"\\n\");\n }\n toString() {\n let code = this.showSourceCode();\n if (code) {\n code = \"\\n\\n\" + code + \"\\n\";\n }\n return this.name + \": \" + this.message + code;\n }\n};\nvar cssSyntaxError = CssSyntaxError$3;\nCssSyntaxError$3.default = CssSyntaxError$3;\nvar symbols = {};\nsymbols.isClean = Symbol(\"isClean\");\nsymbols.my = Symbol(\"my\");\nconst DEFAULT_RAW = {\n after: \"\\n\",\n beforeClose: \"\\n\",\n beforeComment: \"\\n\",\n beforeDecl: \"\\n\",\n beforeOpen: \" \",\n beforeRule: \"\\n\",\n colon: \": \",\n commentLeft: \" \",\n commentRight: \" \",\n emptyBody: \"\",\n indent: \" \",\n semicolon: false\n};\nfunction capitalize(str) {\n return str[0].toUpperCase() + str.slice(1);\n}\nlet Stringifier$2 = class Stringifier2 {\n constructor(builder) {\n this.builder = builder;\n }\n atrule(node2, semicolon) {\n let name = \"@\" + node2.name;\n let params = node2.params ? this.rawValue(node2, \"params\") : \"\";\n if (typeof node2.raws.afterName !== \"undefined\") {\n name += node2.raws.afterName;\n } else if (params) {\n name += \" \";\n }\n if (node2.nodes) {\n this.block(node2, name + params);\n } else {\n let end = (node2.raws.between || \"\") + (semicolon ? \";\" : \"\");\n this.builder(name + params + end, node2);\n }\n }\n beforeAfter(node2, detect) {\n let value;\n if (node2.type === \"decl\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (node2.type === \"comment\") {\n value = this.raw(node2, null, \"beforeComment\");\n } else if (detect === \"before\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else {\n value = this.raw(node2, null, \"beforeClose\");\n }\n let buf = node2.parent;\n let depth = 0;\n while (buf && buf.type !== \"root\") {\n depth += 1;\n buf = buf.parent;\n }\n if (value.includes(\"\\n\")) {\n let indent = this.raw(node2, null, \"indent\");\n if (indent.length) {\n for (let step = 0; step < depth; step++) value += indent;\n }\n }\n return value;\n }\n block(node2, start) {\n let between = this.raw(node2, \"between\", \"beforeOpen\");\n this.builder(start + between + \"{\", node2, \"start\");\n let after;\n if (node2.nodes && node2.nodes.length) {\n this.body(node2);\n after = this.raw(node2, \"after\");\n } else {\n after = this.raw(node2, \"after\", \"emptyBody\");\n }\n if (after) this.builder(after);\n this.builder(\"}\", node2, \"end\");\n }\n body(node2) {\n let last = node2.nodes.length - 1;\n while (last > 0) {\n if (node2.nodes[last].type !== \"comment\") break;\n last -= 1;\n }\n let semicolon = this.raw(node2, \"semicolon\");\n for (let i2 = 0; i2 < node2.nodes.length; i2++) {\n let child = node2.nodes[i2];\n let before = this.raw(child, \"before\");\n if (before) this.builder(before);\n this.stringify(child, last !== i2 || semicolon);\n }\n }\n comment(node2) {\n let left = this.raw(node2, \"left\", \"commentLeft\");\n let right = this.raw(node2, \"right\", \"commentRight\");\n this.builder(\"/*\" + left + node2.text + right + \"*/\", node2);\n }\n decl(node2, semicolon) {\n let between = this.raw(node2, \"between\", \"colon\");\n let string = node2.prop + between + this.rawValue(node2, \"value\");\n if (node2.important) {\n string += node2.raws.important || \" !important\";\n }\n if (semicolon) string += \";\";\n this.builder(string, node2);\n }\n document(node2) {\n this.body(node2);\n }\n raw(node2, own, detect) {\n let value;\n if (!detect) detect = own;\n if (own) {\n value = node2.raws[own];\n if (typeof value !== \"undefined\") return value;\n }\n let parent = node2.parent;\n if (detect === \"before\") {\n if (!parent || parent.type === \"root\" && parent.first === node2) {\n return \"\";\n }\n if (parent && parent.type === \"document\") {\n return \"\";\n }\n }\n if (!parent) return DEFAULT_RAW[detect];\n let root2 = node2.root();\n if (!root2.rawCache) root2.rawCache = {};\n if (typeof root2.rawCache[detect] !== \"undefined\") {\n return root2.rawCache[detect];\n }\n if (detect === \"before\" || detect === \"after\") {\n return this.beforeAfter(node2, detect);\n } else {\n let method = \"raw\" + capitalize(detect);\n if (this[method]) {\n value = this[method](root2, node2);\n } else {\n root2.walk((i2) => {\n value = i2.raws[own];\n if (typeof value !== \"undefined\") return false;\n });\n }\n }\n if (typeof value === \"undefined\") value = DEFAULT_RAW[detect];\n root2.rawCache[detect] = value;\n return value;\n }\n rawBeforeClose(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length > 0) {\n if (typeof i2.raws.after !== \"undefined\") {\n value = i2.raws.after;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawBeforeComment(root2, node2) {\n let value;\n root2.walkComments((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeDecl(root2, node2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeOpen(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.type !== \"decl\") {\n value = i2.raws.between;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawBeforeRule(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && (i2.parent !== root2 || root2.first !== i2)) {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawColon(root2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.between !== \"undefined\") {\n value = i2.raws.between.replace(/[^\\s:]/g, \"\");\n return false;\n }\n });\n return value;\n }\n rawEmptyBody(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length === 0) {\n value = i2.raws.after;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawIndent(root2) {\n if (root2.raws.indent) return root2.raws.indent;\n let value;\n root2.walk((i2) => {\n let p = i2.parent;\n if (p && p !== root2 && p.parent && p.parent === root2) {\n if (typeof i2.raws.before !== \"undefined\") {\n let parts = i2.raws.before.split(\"\\n\");\n value = parts[parts.length - 1];\n value = value.replace(/\\S/g, \"\");\n return false;\n }\n }\n });\n return value;\n }\n rawSemicolon(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length && i2.last.type === \"decl\") {\n value = i2.raws.semicolon;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawValue(node2, prop) {\n let value = node2[prop];\n let raw = node2.raws[prop];\n if (raw && raw.value === value) {\n return raw.raw;\n }\n return value;\n }\n root(node2) {\n this.body(node2);\n if (node2.raws.after) this.builder(node2.raws.after);\n }\n rule(node2) {\n this.block(node2, this.rawValue(node2, \"selector\"));\n if (node2.raws.ownSemicolon) {\n this.builder(node2.raws.ownSemicolon, node2, \"end\");\n }\n }\n stringify(node2, semicolon) {\n if (!this[node2.type]) {\n throw new Error(\n \"Unknown AST node type \" + node2.type + \". Maybe you need to change PostCSS stringifier.\"\n );\n }\n this[node2.type](node2, semicolon);\n }\n};\nvar stringifier = Stringifier$2;\nStringifier$2.default = Stringifier$2;\nlet Stringifier$1 = stringifier;\nfunction stringify$4(node2, builder) {\n let str = new Stringifier$1(builder);\n str.stringify(node2);\n}\nvar stringify_1 = stringify$4;\nstringify$4.default = stringify$4;\nlet { isClean: isClean$2, my: my$2 } = symbols;\nlet CssSyntaxError$2 = cssSyntaxError;\nlet Stringifier22 = stringifier;\nlet stringify$3 = stringify_1;\nfunction cloneNode(obj, parent) {\n let cloned = new obj.constructor();\n for (let i2 in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, i2)) {\n continue;\n }\n if (i2 === \"proxyCache\") continue;\n let value = obj[i2];\n let type = typeof value;\n if (i2 === \"parent\" && type === \"object\") {\n if (parent) cloned[i2] = parent;\n } else if (i2 === \"source\") {\n cloned[i2] = value;\n } else if (Array.isArray(value)) {\n cloned[i2] = value.map((j) => cloneNode(j, cloned));\n } else {\n if (type === \"object\" && value !== null) value = cloneNode(value);\n cloned[i2] = value;\n }\n }\n return cloned;\n}\nlet Node$4 = class Node3 {\n constructor(defaults = {}) {\n this.raws = {};\n this[isClean$2] = false;\n this[my$2] = true;\n for (let name in defaults) {\n if (name === \"nodes\") {\n this.nodes = [];\n for (let node2 of defaults[name]) {\n if (typeof node2.clone === \"function\") {\n this.append(node2.clone());\n } else {\n this.append(node2);\n }\n }\n } else {\n this[name] = defaults[name];\n }\n }\n }\n addToError(error) {\n error.postcssNode = this;\n if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n let s2 = this.source;\n error.stack = error.stack.replace(\n /\\n\\s{4}at /,\n `$&${s2.input.from}:${s2.start.line}:${s2.start.column}$&`\n );\n }\n return error;\n }\n after(add) {\n this.parent.insertAfter(this, add);\n return this;\n }\n assign(overrides = {}) {\n for (let name in overrides) {\n this[name] = overrides[name];\n }\n return this;\n }\n before(add) {\n this.parent.insertBefore(this, add);\n return this;\n }\n cleanRaws(keepBetween) {\n delete this.raws.before;\n delete this.raws.after;\n if (!keepBetween) delete this.raws.between;\n }\n clone(overrides = {}) {\n let cloned = cloneNode(this);\n for (let name in overrides) {\n cloned[name] = overrides[name];\n }\n return cloned;\n }\n cloneAfter(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertAfter(this, cloned);\n return cloned;\n }\n cloneBefore(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertBefore(this, cloned);\n return cloned;\n }\n error(message, opts = {}) {\n if (this.source) {\n let { end, start } = this.rangeBy(opts);\n return this.source.input.error(\n message,\n { column: start.column, line: start.line },\n { column: end.column, line: end.line },\n opts\n );\n }\n return new CssSyntaxError$2(message);\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"prop\" || prop === \"value\" || prop === \"name\" || prop === \"params\" || prop === \"important\" || /* c8 ignore next */\n prop === \"text\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n markDirty() {\n if (this[isClean$2]) {\n this[isClean$2] = false;\n let next = this;\n while (next = next.parent) {\n next[isClean$2] = false;\n }\n }\n }\n next() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 + 1];\n }\n positionBy(opts, stringRepresentation) {\n let pos = this.source.start;\n if (opts.index) {\n pos = this.positionInside(opts.index, stringRepresentation);\n } else if (opts.word) {\n stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) pos = this.positionInside(index2, stringRepresentation);\n }\n return pos;\n }\n positionInside(index2, stringRepresentation) {\n let string = stringRepresentation || this.toString();\n let column = this.source.start.column;\n let line = this.source.start.line;\n for (let i2 = 0; i2 < index2; i2++) {\n if (string[i2] === \"\\n\") {\n column = 1;\n line += 1;\n } else {\n column += 1;\n }\n }\n return { column, line };\n }\n prev() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 - 1];\n }\n rangeBy(opts) {\n let start = {\n column: this.source.start.column,\n line: this.source.start.line\n };\n let end = this.source.end ? {\n column: this.source.end.column + 1,\n line: this.source.end.line\n } : {\n column: start.column + 1,\n line: start.line\n };\n if (opts.word) {\n let stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) {\n start = this.positionInside(index2, stringRepresentation);\n end = this.positionInside(index2 + opts.word.length, stringRepresentation);\n }\n } else {\n if (opts.start) {\n start = {\n column: opts.start.column,\n line: opts.start.line\n };\n } else if (opts.index) {\n start = this.positionInside(opts.index);\n }\n if (opts.end) {\n end = {\n column: opts.end.column,\n line: opts.end.line\n };\n } else if (typeof opts.endIndex === \"number\") {\n end = this.positionInside(opts.endIndex);\n } else if (opts.index) {\n end = this.positionInside(opts.index + 1);\n }\n }\n if (end.line < start.line || end.line === start.line && end.column <= start.column) {\n end = { column: start.column + 1, line: start.line };\n }\n return { end, start };\n }\n raw(prop, defaultType) {\n let str = new Stringifier22();\n return str.raw(this, prop, defaultType);\n }\n remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n this.parent = void 0;\n return this;\n }\n replaceWith(...nodes) {\n if (this.parent) {\n let bookmark = this;\n let foundSelf = false;\n for (let node2 of nodes) {\n if (node2 === this) {\n foundSelf = true;\n } else if (foundSelf) {\n this.parent.insertAfter(bookmark, node2);\n bookmark = node2;\n } else {\n this.parent.insertBefore(bookmark, node2);\n }\n }\n if (!foundSelf) {\n this.remove();\n }\n }\n return this;\n }\n root() {\n let result2 = this;\n while (result2.parent && result2.parent.type !== \"document\") {\n result2 = result2.parent;\n }\n return result2;\n }\n toJSON(_, inputs) {\n let fixed = {};\n let emitInputs = inputs == null;\n inputs = inputs || /* @__PURE__ */ new Map();\n let inputsNextIndex = 0;\n for (let name in this) {\n if (!Object.prototype.hasOwnProperty.call(this, name)) {\n continue;\n }\n if (name === \"parent\" || name === \"proxyCache\") continue;\n let value = this[name];\n if (Array.isArray(value)) {\n fixed[name] = value.map((i2) => {\n if (typeof i2 === \"object\" && i2.toJSON) {\n return i2.toJSON(null, inputs);\n } else {\n return i2;\n }\n });\n } else if (typeof value === \"object\" && value.toJSON) {\n fixed[name] = value.toJSON(null, inputs);\n } else if (name === \"source\") {\n let inputId = inputs.get(value.input);\n if (inputId == null) {\n inputId = inputsNextIndex;\n inputs.set(value.input, inputsNextIndex);\n inputsNextIndex++;\n }\n fixed[name] = {\n end: value.end,\n inputId,\n start: value.start\n };\n } else {\n fixed[name] = value;\n }\n }\n if (emitInputs) {\n fixed.inputs = [...inputs.keys()].map((input2) => input2.toJSON());\n }\n return fixed;\n }\n toProxy() {\n if (!this.proxyCache) {\n this.proxyCache = new Proxy(this, this.getProxyProcessor());\n }\n return this.proxyCache;\n }\n toString(stringifier2 = stringify$3) {\n if (stringifier2.stringify) stringifier2 = stringifier2.stringify;\n let result2 = \"\";\n stringifier2(this, (i2) => {\n result2 += i2;\n });\n return result2;\n }\n warn(result2, text, opts) {\n let data = { node: this };\n for (let i2 in opts) data[i2] = opts[i2];\n return result2.warn(text, data);\n }\n get proxyOf() {\n return this;\n }\n};\nvar node = Node$4;\nNode$4.default = Node$4;\nlet Node$3 = node;\nlet Declaration$4 = class Declaration2 extends Node$3 {\n constructor(defaults) {\n if (defaults && typeof defaults.value !== \"undefined\" && typeof defaults.value !== \"string\") {\n defaults = { ...defaults, value: String(defaults.value) };\n }\n super(defaults);\n this.type = \"decl\";\n }\n get variable() {\n return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n }\n};\nvar declaration = Declaration$4;\nDeclaration$4.default = Declaration$4;\nlet urlAlphabet = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\nlet customAlphabet = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = \"\";\n let i2 = size;\n while (i2--) {\n id += alphabet[Math.random() * alphabet.length | 0];\n }\n return id;\n };\n};\nlet nanoid$1 = (size = 21) => {\n let id = \"\";\n let i2 = size;\n while (i2--) {\n id += urlAlphabet[Math.random() * 64 | 0];\n }\n return id;\n};\nvar nonSecure = { nanoid: nanoid$1, customAlphabet };\nlet { SourceMapConsumer: SourceMapConsumer$2, SourceMapGenerator: SourceMapGenerator$2 } = require$$2;\nlet { existsSync, readFileSync } = require$$2;\nlet { dirname: dirname$1, join } = require$$2;\nfunction fromBase64(str) {\n if (Buffer) {\n return Buffer.from(str, \"base64\").toString();\n } else {\n return window.atob(str);\n }\n}\nlet PreviousMap$2 = class PreviousMap2 {\n constructor(css, opts) {\n if (opts.map === false) return;\n this.loadAnnotation(css);\n this.inline = this.startWith(this.annotation, \"data:\");\n let prev = opts.map ? opts.map.prev : void 0;\n let text = this.loadMap(opts.from, prev);\n if (!this.mapFile && opts.from) {\n this.mapFile = opts.from;\n }\n if (this.mapFile) this.root = dirname$1(this.mapFile);\n if (text) this.text = text;\n }\n consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new SourceMapConsumer$2(this.text);\n }\n return this.consumerCache;\n }\n decodeInline(text) {\n let baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/;\n let baseUri = /^data:application\\/json;base64,/;\n let charsetUri = /^data:application\\/json;charset=utf-?8,/;\n let uri = /^data:application\\/json,/;\n if (charsetUri.test(text) || uri.test(text)) {\n return decodeURIComponent(text.substr(RegExp.lastMatch.length));\n }\n if (baseCharsetUri.test(text) || baseUri.test(text)) {\n return fromBase64(text.substr(RegExp.lastMatch.length));\n }\n let encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n throw new Error(\"Unsupported source map encoding \" + encoding);\n }\n getAnnotationURL(sourceMapString) {\n return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n }\n isMap(map) {\n if (typeof map !== \"object\") return false;\n return typeof map.mappings === \"string\" || typeof map._mappings === \"string\" || Array.isArray(map.sections);\n }\n loadAnnotation(css) {\n let comments = css.match(/\\/\\*\\s*# sourceMappingURL=/gm);\n if (!comments) return;\n let start = css.lastIndexOf(comments.pop());\n let end = css.indexOf(\"*/\", start);\n if (start > -1 && end > -1) {\n this.annotation = this.getAnnotationURL(css.substring(start, end));\n }\n }\n loadFile(path) {\n this.root = dirname$1(path);\n if (existsSync(path)) {\n this.mapFile = path;\n return readFileSync(path, \"utf-8\").toString().trim();\n }\n }\n loadMap(file, prev) {\n if (prev === false) return false;\n if (prev) {\n if (typeof prev === \"string\") {\n return prev;\n } else if (typeof prev === \"function\") {\n let prevPath = prev(file);\n if (prevPath) {\n let map = this.loadFile(prevPath);\n if (!map) {\n throw new Error(\n \"Unable to load previous source map: \" + prevPath.toString()\n );\n }\n return map;\n }\n } else if (prev instanceof SourceMapConsumer$2) {\n return SourceMapGenerator$2.fromSourceMap(prev).toString();\n } else if (prev instanceof SourceMapGenerator$2) {\n return prev.toString();\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev);\n } else {\n throw new Error(\n \"Unsupported previous source map format: \" + prev.toString()\n );\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation);\n } else if (this.annotation) {\n let map = this.annotation;\n if (file) map = join(dirname$1(file), map);\n return this.loadFile(map);\n }\n }\n startWith(string, start) {\n if (!string) return false;\n return string.substr(0, start.length) === start;\n }\n withContent() {\n return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n }\n};\nvar previousMap = PreviousMap$2;\nPreviousMap$2.default = PreviousMap$2;\nlet { SourceMapConsumer: SourceMapConsumer$1, SourceMapGenerator: SourceMapGenerator$1 } = require$$2;\nlet { fileURLToPath, pathToFileURL: pathToFileURL$1 } = require$$2;\nlet { isAbsolute, resolve: resolve$1 } = require$$2;\nlet { nanoid } = nonSecure;\nlet terminalHighlight = require$$2;\nlet CssSyntaxError$1 = cssSyntaxError;\nlet PreviousMap$1 = previousMap;\nlet fromOffsetCache = Symbol(\"fromOffsetCache\");\nlet sourceMapAvailable$1 = Boolean(SourceMapConsumer$1 && SourceMapGenerator$1);\nlet pathAvailable$1 = Boolean(resolve$1 && isAbsolute);\nlet Input$4 = class Input2 {\n constructor(css, opts = {}) {\n if (css === null || typeof css === \"undefined\" || typeof css === \"object\" && !css.toString) {\n throw new Error(`PostCSS received ${css} instead of CSS string`);\n }\n this.css = css.toString();\n if (this.css[0] === \"\\uFEFF\" || this.css[0] === \"￾\") {\n this.hasBOM = true;\n this.css = this.css.slice(1);\n } else {\n this.hasBOM = false;\n }\n if (opts.from) {\n if (!pathAvailable$1 || /^\\w+:\\/\\//.test(opts.from) || isAbsolute(opts.from)) {\n this.file = opts.from;\n } else {\n this.file = resolve$1(opts.from);\n }\n }\n if (pathAvailable$1 && sourceMapAvailable$1) {\n let map = new PreviousMap$1(this.css, opts);\n if (map.text) {\n this.map = map;\n let file = map.consumer().file;\n if (!this.file && file) this.file = this.mapResolve(file);\n }\n }\n if (!this.file) {\n this.id = \"\";\n }\n if (this.map) this.map.file = this.from;\n }\n error(message, line, column, opts = {}) {\n let result2, endLine, endColumn;\n if (line && typeof line === \"object\") {\n let start = line;\n let end = column;\n if (typeof start.offset === \"number\") {\n let pos = this.fromOffset(start.offset);\n line = pos.line;\n column = pos.col;\n } else {\n line = start.line;\n column = start.column;\n }\n if (typeof end.offset === \"number\") {\n let pos = this.fromOffset(end.offset);\n endLine = pos.line;\n endColumn = pos.col;\n } else {\n endLine = end.line;\n endColumn = end.column;\n }\n } else if (!column) {\n let pos = this.fromOffset(line);\n line = pos.line;\n column = pos.col;\n }\n let origin = this.origin(line, column, endLine, endColumn);\n if (origin) {\n result2 = new CssSyntaxError$1(\n message,\n origin.endLine === void 0 ? origin.line : { column: origin.column, line: origin.line },\n origin.endLine === void 0 ? origin.column : { column: origin.endColumn, line: origin.endLine },\n origin.source,\n origin.file,\n opts.plugin\n );\n } else {\n result2 = new CssSyntaxError$1(\n message,\n endLine === void 0 ? line : { column, line },\n endLine === void 0 ? column : { column: endColumn, line: endLine },\n this.css,\n this.file,\n opts.plugin\n );\n }\n result2.input = { column, endColumn, endLine, line, source: this.css };\n if (this.file) {\n if (pathToFileURL$1) {\n result2.input.url = pathToFileURL$1(this.file).toString();\n }\n result2.input.file = this.file;\n }\n return result2;\n }\n fromOffset(offset) {\n let lastLine, lineToIndex;\n if (!this[fromOffsetCache]) {\n let lines = this.css.split(\"\\n\");\n lineToIndex = new Array(lines.length);\n let prevIndex = 0;\n for (let i2 = 0, l2 = lines.length; i2 < l2; i2++) {\n lineToIndex[i2] = prevIndex;\n prevIndex += lines[i2].length + 1;\n }\n this[fromOffsetCache] = lineToIndex;\n } else {\n lineToIndex = this[fromOffsetCache];\n }\n lastLine = lineToIndex[lineToIndex.length - 1];\n let min = 0;\n if (offset >= lastLine) {\n min = lineToIndex.length - 1;\n } else {\n let max = lineToIndex.length - 2;\n let mid;\n while (min < max) {\n mid = min + (max - min >> 1);\n if (offset < lineToIndex[mid]) {\n max = mid - 1;\n } else if (offset >= lineToIndex[mid + 1]) {\n min = mid + 1;\n } else {\n min = mid;\n break;\n }\n }\n }\n return {\n col: offset - lineToIndex[min] + 1,\n line: min + 1\n };\n }\n mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file;\n }\n return resolve$1(this.map.consumer().sourceRoot || this.map.root || \".\", file);\n }\n origin(line, column, endLine, endColumn) {\n if (!this.map) return false;\n let consumer = this.map.consumer();\n let from = consumer.originalPositionFor({ column, line });\n if (!from.source) return false;\n let to;\n if (typeof endLine === \"number\") {\n to = consumer.originalPositionFor({ column: endColumn, line: endLine });\n }\n let fromUrl;\n if (isAbsolute(from.source)) {\n fromUrl = pathToFileURL$1(from.source);\n } else {\n fromUrl = new URL(\n from.source,\n this.map.consumer().sourceRoot || pathToFileURL$1(this.map.mapFile)\n );\n }\n let result2 = {\n column: from.column,\n endColumn: to && to.column,\n endLine: to && to.line,\n line: from.line,\n url: fromUrl.toString()\n };\n if (fromUrl.protocol === \"file:\") {\n if (fileURLToPath) {\n result2.file = fileURLToPath(fromUrl);\n } else {\n throw new Error(`file: protocol is not available in this PostCSS build`);\n }\n }\n let source = consumer.sourceContentFor(from.source);\n if (source) result2.source = source;\n return result2;\n }\n toJSON() {\n let json = {};\n for (let name of [\"hasBOM\", \"css\", \"file\", \"id\"]) {\n if (this[name] != null) {\n json[name] = this[name];\n }\n }\n if (this.map) {\n json.map = { ...this.map };\n if (json.map.consumerCache) {\n json.map.consumerCache = void 0;\n }\n }\n return json;\n }\n get from() {\n return this.file || this.id;\n }\n};\nvar input = Input$4;\nInput$4.default = Input$4;\nif (terminalHighlight && terminalHighlight.registerInput) {\n terminalHighlight.registerInput(Input$4);\n}\nlet { SourceMapConsumer, SourceMapGenerator } = require$$2;\nlet { dirname, relative, resolve, sep } = require$$2;\nlet { pathToFileURL } = require$$2;\nlet Input$3 = input;\nlet sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator);\nlet pathAvailable = Boolean(dirname && resolve && relative && sep);\nlet MapGenerator$2 = class MapGenerator2 {\n constructor(stringify2, root2, opts, cssString) {\n this.stringify = stringify2;\n this.mapOpts = opts.map || {};\n this.root = root2;\n this.opts = opts;\n this.css = cssString;\n this.originalCSS = cssString;\n this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute;\n this.memoizedFileURLs = /* @__PURE__ */ new Map();\n this.memoizedPaths = /* @__PURE__ */ new Map();\n this.memoizedURLs = /* @__PURE__ */ new Map();\n }\n addAnnotation() {\n let content;\n if (this.isInline()) {\n content = \"data:application/json;base64,\" + this.toBase64(this.map.toString());\n } else if (typeof this.mapOpts.annotation === \"string\") {\n content = this.mapOpts.annotation;\n } else if (typeof this.mapOpts.annotation === \"function\") {\n content = this.mapOpts.annotation(this.opts.to, this.root);\n } else {\n content = this.outputFile() + \".map\";\n }\n let eol = \"\\n\";\n if (this.css.includes(\"\\r\\n\")) eol = \"\\r\\n\";\n this.css += eol + \"/*# sourceMappingURL=\" + content + \" */\";\n }\n applyPrevMaps() {\n for (let prev of this.previous()) {\n let from = this.toUrl(this.path(prev.file));\n let root2 = prev.root || dirname(prev.file);\n let map;\n if (this.mapOpts.sourcesContent === false) {\n map = new SourceMapConsumer(prev.text);\n if (map.sourcesContent) {\n map.sourcesContent = null;\n }\n } else {\n map = prev.consumer();\n }\n this.map.applySourceMap(map, from, this.toUrl(this.path(root2)));\n }\n }\n clearAnnotation() {\n if (this.mapOpts.annotation === false) return;\n if (this.root) {\n let node2;\n for (let i2 = this.root.nodes.length - 1; i2 >= 0; i2--) {\n node2 = this.root.nodes[i2];\n if (node2.type !== \"comment\") continue;\n if (node2.text.indexOf(\"# sourceMappingURL=\") === 0) {\n this.root.removeChild(i2);\n }\n }\n } else if (this.css) {\n this.css = this.css.replace(/\\n*?\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\");\n }\n }\n generate() {\n this.clearAnnotation();\n if (pathAvailable && sourceMapAvailable && this.isMap()) {\n return this.generateMap();\n } else {\n let result2 = \"\";\n this.stringify(this.root, (i2) => {\n result2 += i2;\n });\n return [result2];\n }\n }\n generateMap() {\n if (this.root) {\n this.generateString();\n } else if (this.previous().length === 1) {\n let prev = this.previous()[0].consumer();\n prev.file = this.outputFile();\n this.map = SourceMapGenerator.fromSourceMap(prev, {\n ignoreInvalidMapping: true\n });\n } else {\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n this.map.addMapping({\n generated: { column: 0, line: 1 },\n original: { column: 0, line: 1 },\n source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\"\n });\n }\n if (this.isSourcesContent()) this.setSourcesContent();\n if (this.root && this.previous().length > 0) this.applyPrevMaps();\n if (this.isAnnotation()) this.addAnnotation();\n if (this.isInline()) {\n return [this.css];\n } else {\n return [this.css, this.map];\n }\n }\n generateString() {\n this.css = \"\";\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n let line = 1;\n let column = 1;\n let noSource = \"\";\n let mapping = {\n generated: { column: 0, line: 0 },\n original: { column: 0, line: 0 },\n source: \"\"\n };\n let lines, last;\n this.stringify(this.root, (str, node2, type) => {\n this.css += str;\n if (node2 && type !== \"end\") {\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n if (node2.source && node2.source.start) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.start.line;\n mapping.original.column = node2.source.start.column - 1;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n this.map.addMapping(mapping);\n }\n }\n lines = str.match(/\\n/g);\n if (lines) {\n line += lines.length;\n last = str.lastIndexOf(\"\\n\");\n column = str.length - last;\n } else {\n column += str.length;\n }\n if (node2 && type !== \"start\") {\n let p = node2.parent || { raws: {} };\n let childless = node2.type === \"decl\" || node2.type === \"atrule\" && !node2.nodes;\n if (!childless || node2 !== p.last || p.raws.semicolon) {\n if (node2.source && node2.source.end) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.end.line;\n mapping.original.column = node2.source.end.column - 1;\n mapping.generated.line = line;\n mapping.generated.column = column - 2;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n this.map.addMapping(mapping);\n }\n }\n }\n });\n }\n isAnnotation() {\n if (this.isInline()) {\n return true;\n }\n if (typeof this.mapOpts.annotation !== \"undefined\") {\n return this.mapOpts.annotation;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.annotation);\n }\n return true;\n }\n isInline() {\n if (typeof this.mapOpts.inline !== \"undefined\") {\n return this.mapOpts.inline;\n }\n let annotation = this.mapOpts.annotation;\n if (typeof annotation !== \"undefined\" && annotation !== true) {\n return false;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.inline);\n }\n return true;\n }\n isMap() {\n if (typeof this.opts.map !== \"undefined\") {\n return !!this.opts.map;\n }\n return this.previous().length > 0;\n }\n isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== \"undefined\") {\n return this.mapOpts.sourcesContent;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.withContent());\n }\n return true;\n }\n outputFile() {\n if (this.opts.to) {\n return this.path(this.opts.to);\n } else if (this.opts.from) {\n return this.path(this.opts.from);\n } else {\n return \"to.css\";\n }\n }\n path(file) {\n if (this.mapOpts.absolute) return file;\n if (file.charCodeAt(0) === 60) return file;\n if (/^\\w+:\\/\\//.test(file)) return file;\n let cached = this.memoizedPaths.get(file);\n if (cached) return cached;\n let from = this.opts.to ? dirname(this.opts.to) : \".\";\n if (typeof this.mapOpts.annotation === \"string\") {\n from = dirname(resolve(from, this.mapOpts.annotation));\n }\n let path = relative(from, file);\n this.memoizedPaths.set(file, path);\n return path;\n }\n previous() {\n if (!this.previousMaps) {\n this.previousMaps = [];\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source && node2.source.input.map) {\n let map = node2.source.input.map;\n if (!this.previousMaps.includes(map)) {\n this.previousMaps.push(map);\n }\n }\n });\n } else {\n let input2 = new Input$3(this.originalCSS, this.opts);\n if (input2.map) this.previousMaps.push(input2.map);\n }\n }\n return this.previousMaps;\n }\n setSourcesContent() {\n let already = {};\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source) {\n let from = node2.source.input.from;\n if (from && !already[from]) {\n already[from] = true;\n let fromUrl = this.usesFileUrls ? this.toFileUrl(from) : this.toUrl(this.path(from));\n this.map.setSourceContent(fromUrl, node2.source.input.css);\n }\n }\n });\n } else if (this.css) {\n let from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\";\n this.map.setSourceContent(from, this.css);\n }\n }\n sourcePath(node2) {\n if (this.mapOpts.from) {\n return this.toUrl(this.mapOpts.from);\n } else if (this.usesFileUrls) {\n return this.toFileUrl(node2.source.input.from);\n } else {\n return this.toUrl(this.path(node2.source.input.from));\n }\n }\n toBase64(str) {\n if (Buffer) {\n return Buffer.from(str).toString(\"base64\");\n } else {\n return window.btoa(unescape(encodeURIComponent(str)));\n }\n }\n toFileUrl(path) {\n let cached = this.memoizedFileURLs.get(path);\n if (cached) return cached;\n if (pathToFileURL) {\n let fileURL = pathToFileURL(path).toString();\n this.memoizedFileURLs.set(path, fileURL);\n return fileURL;\n } else {\n throw new Error(\n \"`map.absolute` option is not available in this PostCSS build\"\n );\n }\n }\n toUrl(path) {\n let cached = this.memoizedURLs.get(path);\n if (cached) return cached;\n if (sep === \"\\\\\") {\n path = path.replace(/\\\\/g, \"/\");\n }\n let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent);\n this.memoizedURLs.set(path, url);\n return url;\n }\n};\nvar mapGenerator = MapGenerator$2;\nlet Node$2 = node;\nlet Comment$4 = class Comment2 extends Node$2 {\n constructor(defaults) {\n super(defaults);\n this.type = \"comment\";\n }\n};\nvar comment = Comment$4;\nComment$4.default = Comment$4;\nlet { isClean: isClean$1, my: my$1 } = symbols;\nlet Declaration$3 = declaration;\nlet Comment$3 = comment;\nlet Node$1 = node;\nlet parse$4, Rule$4, AtRule$4, Root$6;\nfunction cleanSource(nodes) {\n return nodes.map((i2) => {\n if (i2.nodes) i2.nodes = cleanSource(i2.nodes);\n delete i2.source;\n return i2;\n });\n}\nfunction markDirtyUp(node2) {\n node2[isClean$1] = false;\n if (node2.proxyOf.nodes) {\n for (let i2 of node2.proxyOf.nodes) {\n markDirtyUp(i2);\n }\n }\n}\nlet Container$7 = class Container2 extends Node$1 {\n append(...children) {\n for (let child of children) {\n let nodes = this.normalize(child, this.last);\n for (let node2 of nodes) this.proxyOf.nodes.push(node2);\n }\n this.markDirty();\n return this;\n }\n cleanRaws(keepBetween) {\n super.cleanRaws(keepBetween);\n if (this.nodes) {\n for (let node2 of this.nodes) node2.cleanRaws(keepBetween);\n }\n }\n each(callback) {\n if (!this.proxyOf.nodes) return void 0;\n let iterator = this.getIterator();\n let index2, result2;\n while (this.indexes[iterator] < this.proxyOf.nodes.length) {\n index2 = this.indexes[iterator];\n result2 = callback(this.proxyOf.nodes[index2], index2);\n if (result2 === false) break;\n this.indexes[iterator] += 1;\n }\n delete this.indexes[iterator];\n return result2;\n }\n every(condition) {\n return this.nodes.every(condition);\n }\n getIterator() {\n if (!this.lastEach) this.lastEach = 0;\n if (!this.indexes) this.indexes = {};\n this.lastEach += 1;\n let iterator = this.lastEach;\n this.indexes[iterator] = 0;\n return iterator;\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (!node2[prop]) {\n return node2[prop];\n } else if (prop === \"each\" || typeof prop === \"string\" && prop.startsWith(\"walk\")) {\n return (...args) => {\n return node2[prop](\n ...args.map((i2) => {\n if (typeof i2 === \"function\") {\n return (child, index2) => i2(child.toProxy(), index2);\n } else {\n return i2;\n }\n })\n );\n };\n } else if (prop === \"every\" || prop === \"some\") {\n return (cb) => {\n return node2[prop](\n (child, ...other) => cb(child.toProxy(), ...other)\n );\n };\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else if (prop === \"nodes\") {\n return node2.nodes.map((i2) => i2.toProxy());\n } else if (prop === \"first\" || prop === \"last\") {\n return node2[prop].toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"name\" || prop === \"params\" || prop === \"selector\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n index(child) {\n if (typeof child === \"number\") return child;\n if (child.proxyOf) child = child.proxyOf;\n return this.proxyOf.nodes.indexOf(child);\n }\n insertAfter(exist, add) {\n let existIndex = this.index(exist);\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex < index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n insertBefore(exist, add) {\n let existIndex = this.index(exist);\n let type = existIndex === 0 ? \"prepend\" : false;\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex <= index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n normalize(nodes, sample) {\n if (typeof nodes === \"string\") {\n nodes = cleanSource(parse$4(nodes).nodes);\n } else if (typeof nodes === \"undefined\") {\n nodes = [];\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type === \"root\" && this.type !== \"document\") {\n nodes = nodes.nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type) {\n nodes = [nodes];\n } else if (nodes.prop) {\n if (typeof nodes.value === \"undefined\") {\n throw new Error(\"Value field is missed in node creation\");\n } else if (typeof nodes.value !== \"string\") {\n nodes.value = String(nodes.value);\n }\n nodes = [new Declaration$3(nodes)];\n } else if (nodes.selector) {\n nodes = [new Rule$4(nodes)];\n } else if (nodes.name) {\n nodes = [new AtRule$4(nodes)];\n } else if (nodes.text) {\n nodes = [new Comment$3(nodes)];\n } else {\n throw new Error(\"Unknown node type in node creation\");\n }\n let processed = nodes.map((i2) => {\n if (!i2[my$1]) Container2.rebuild(i2);\n i2 = i2.proxyOf;\n if (i2.parent) i2.parent.removeChild(i2);\n if (i2[isClean$1]) markDirtyUp(i2);\n if (typeof i2.raws.before === \"undefined\") {\n if (sample && typeof sample.raws.before !== \"undefined\") {\n i2.raws.before = sample.raws.before.replace(/\\S/g, \"\");\n }\n }\n i2.parent = this.proxyOf;\n return i2;\n });\n return processed;\n }\n prepend(...children) {\n children = children.reverse();\n for (let child of children) {\n let nodes = this.normalize(child, this.first, \"prepend\").reverse();\n for (let node2 of nodes) this.proxyOf.nodes.unshift(node2);\n for (let id in this.indexes) {\n this.indexes[id] = this.indexes[id] + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n push(child) {\n child.parent = this;\n this.proxyOf.nodes.push(child);\n return this;\n }\n removeAll() {\n for (let node2 of this.proxyOf.nodes) node2.parent = void 0;\n this.proxyOf.nodes = [];\n this.markDirty();\n return this;\n }\n removeChild(child) {\n child = this.index(child);\n this.proxyOf.nodes[child].parent = void 0;\n this.proxyOf.nodes.splice(child, 1);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (index2 >= child) {\n this.indexes[id] = index2 - 1;\n }\n }\n this.markDirty();\n return this;\n }\n replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {};\n }\n this.walkDecls((decl) => {\n if (opts.props && !opts.props.includes(decl.prop)) return;\n if (opts.fast && !decl.value.includes(opts.fast)) return;\n decl.value = decl.value.replace(pattern, callback);\n });\n this.markDirty();\n return this;\n }\n some(condition) {\n return this.nodes.some(condition);\n }\n walk(callback) {\n return this.each((child, i2) => {\n let result2;\n try {\n result2 = callback(child, i2);\n } catch (e2) {\n throw child.addToError(e2);\n }\n if (result2 !== false && child.walk) {\n result2 = child.walk(callback);\n }\n return result2;\n });\n }\n walkAtRules(name, callback) {\n if (!callback) {\n callback = name;\n return this.walk((child, i2) => {\n if (child.type === \"atrule\") {\n return callback(child, i2);\n }\n });\n }\n if (name instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && name.test(child.name)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && child.name === name) {\n return callback(child, i2);\n }\n });\n }\n walkComments(callback) {\n return this.walk((child, i2) => {\n if (child.type === \"comment\") {\n return callback(child, i2);\n }\n });\n }\n walkDecls(prop, callback) {\n if (!callback) {\n callback = prop;\n return this.walk((child, i2) => {\n if (child.type === \"decl\") {\n return callback(child, i2);\n }\n });\n }\n if (prop instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && prop.test(child.prop)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && child.prop === prop) {\n return callback(child, i2);\n }\n });\n }\n walkRules(selector, callback) {\n if (!callback) {\n callback = selector;\n return this.walk((child, i2) => {\n if (child.type === \"rule\") {\n return callback(child, i2);\n }\n });\n }\n if (selector instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && selector.test(child.selector)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && child.selector === selector) {\n return callback(child, i2);\n }\n });\n }\n get first() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[0];\n }\n get last() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n }\n};\nContainer$7.registerParse = (dependant) => {\n parse$4 = dependant;\n};\nContainer$7.registerRule = (dependant) => {\n Rule$4 = dependant;\n};\nContainer$7.registerAtRule = (dependant) => {\n AtRule$4 = dependant;\n};\nContainer$7.registerRoot = (dependant) => {\n Root$6 = dependant;\n};\nvar container = Container$7;\nContainer$7.default = Container$7;\nContainer$7.rebuild = (node2) => {\n if (node2.type === \"atrule\") {\n Object.setPrototypeOf(node2, AtRule$4.prototype);\n } else if (node2.type === \"rule\") {\n Object.setPrototypeOf(node2, Rule$4.prototype);\n } else if (node2.type === \"decl\") {\n Object.setPrototypeOf(node2, Declaration$3.prototype);\n } else if (node2.type === \"comment\") {\n Object.setPrototypeOf(node2, Comment$3.prototype);\n } else if (node2.type === \"root\") {\n Object.setPrototypeOf(node2, Root$6.prototype);\n }\n node2[my$1] = true;\n if (node2.nodes) {\n node2.nodes.forEach((child) => {\n Container$7.rebuild(child);\n });\n }\n};\nlet Container$6 = container;\nlet LazyResult$4, Processor$3;\nlet Document$3 = class Document23 extends Container$6 {\n constructor(defaults) {\n super({ type: \"document\", ...defaults });\n if (!this.nodes) {\n this.nodes = [];\n }\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$4(new Processor$3(), this, opts);\n return lazy.stringify();\n }\n};\nDocument$3.registerLazyResult = (dependant) => {\n LazyResult$4 = dependant;\n};\nDocument$3.registerProcessor = (dependant) => {\n Processor$3 = dependant;\n};\nvar document$1 = Document$3;\nDocument$3.default = Document$3;\nlet printed = {};\nvar warnOnce$2 = function warnOnce2(message) {\n if (printed[message]) return;\n printed[message] = true;\n if (typeof console !== \"undefined\" && console.warn) {\n console.warn(message);\n }\n};\nlet Warning$2 = class Warning2 {\n constructor(text, opts = {}) {\n this.type = \"warning\";\n this.text = text;\n if (opts.node && opts.node.source) {\n let range = opts.node.rangeBy(opts);\n this.line = range.start.line;\n this.column = range.start.column;\n this.endLine = range.end.line;\n this.endColumn = range.end.column;\n }\n for (let opt in opts) this[opt] = opts[opt];\n }\n toString() {\n if (this.node) {\n return this.node.error(this.text, {\n index: this.index,\n plugin: this.plugin,\n word: this.word\n }).message;\n }\n if (this.plugin) {\n return this.plugin + \": \" + this.text;\n }\n return this.text;\n }\n};\nvar warning = Warning$2;\nWarning$2.default = Warning$2;\nlet Warning$1 = warning;\nlet Result$3 = class Result2 {\n constructor(processor2, root2, opts) {\n this.processor = processor2;\n this.messages = [];\n this.root = root2;\n this.opts = opts;\n this.css = void 0;\n this.map = void 0;\n }\n toString() {\n return this.css;\n }\n warn(text, opts = {}) {\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin;\n }\n }\n let warning2 = new Warning$1(text, opts);\n this.messages.push(warning2);\n return warning2;\n }\n warnings() {\n return this.messages.filter((i2) => i2.type === \"warning\");\n }\n get content() {\n return this.css;\n }\n};\nvar result = Result$3;\nResult$3.default = Result$3;\nconst SINGLE_QUOTE = \"'\".charCodeAt(0);\nconst DOUBLE_QUOTE = '\"'.charCodeAt(0);\nconst BACKSLASH = \"\\\\\".charCodeAt(0);\nconst SLASH = \"/\".charCodeAt(0);\nconst NEWLINE = \"\\n\".charCodeAt(0);\nconst SPACE = \" \".charCodeAt(0);\nconst FEED = \"\\f\".charCodeAt(0);\nconst TAB = \"\t\".charCodeAt(0);\nconst CR = \"\\r\".charCodeAt(0);\nconst OPEN_SQUARE = \"[\".charCodeAt(0);\nconst CLOSE_SQUARE = \"]\".charCodeAt(0);\nconst OPEN_PARENTHESES = \"(\".charCodeAt(0);\nconst CLOSE_PARENTHESES = \")\".charCodeAt(0);\nconst OPEN_CURLY = \"{\".charCodeAt(0);\nconst CLOSE_CURLY = \"}\".charCodeAt(0);\nconst SEMICOLON = \";\".charCodeAt(0);\nconst ASTERISK = \"*\".charCodeAt(0);\nconst COLON = \":\".charCodeAt(0);\nconst AT = \"@\".charCodeAt(0);\nconst RE_AT_END = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g;\nconst RE_WORD_END = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g;\nconst RE_BAD_BRACKET = /.[\\r\\n\"'(/\\\\]/;\nconst RE_HEX_ESCAPE = /[\\da-f]/i;\nvar tokenize = function tokenizer2(input2, options = {}) {\n let css = input2.css.valueOf();\n let ignore = options.ignoreErrors;\n let code, next, quote, content, escape;\n let escaped, escapePos, prev, n2, currentToken;\n let length = css.length;\n let pos = 0;\n let buffer = [];\n let returned = [];\n function position() {\n return pos;\n }\n function unclosed(what) {\n throw input2.error(\"Unclosed \" + what, pos);\n }\n function endOfFile() {\n return returned.length === 0 && pos >= length;\n }\n function nextToken(opts) {\n if (returned.length) return returned.pop();\n if (pos >= length) return;\n let ignoreUnclosed = opts ? opts.ignoreUnclosed : false;\n code = css.charCodeAt(pos);\n switch (code) {\n case NEWLINE:\n case SPACE:\n case TAB:\n case CR:\n case FEED: {\n next = pos;\n do {\n next += 1;\n code = css.charCodeAt(next);\n } while (code === SPACE || code === NEWLINE || code === TAB || code === CR || code === FEED);\n currentToken = [\"space\", css.slice(pos, next)];\n pos = next - 1;\n break;\n }\n case OPEN_SQUARE:\n case CLOSE_SQUARE:\n case OPEN_CURLY:\n case CLOSE_CURLY:\n case COLON:\n case SEMICOLON:\n case CLOSE_PARENTHESES: {\n let controlChar = String.fromCharCode(code);\n currentToken = [controlChar, controlChar, pos];\n break;\n }\n case OPEN_PARENTHESES: {\n prev = buffer.length ? buffer.pop()[1] : \"\";\n n2 = css.charCodeAt(pos + 1);\n if (prev === \"url\" && n2 !== SINGLE_QUOTE && n2 !== DOUBLE_QUOTE && n2 !== SPACE && n2 !== NEWLINE && n2 !== TAB && n2 !== FEED && n2 !== CR) {\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(\")\", next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos;\n break;\n } else {\n unclosed(\"bracket\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"brackets\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n next = css.indexOf(\")\", pos + 1);\n content = css.slice(pos, next + 1);\n if (next === -1 || RE_BAD_BRACKET.test(content)) {\n currentToken = [\"(\", \"(\", pos];\n } else {\n currentToken = [\"brackets\", content, pos, next];\n pos = next;\n }\n }\n break;\n }\n case SINGLE_QUOTE:\n case DOUBLE_QUOTE: {\n quote = code === SINGLE_QUOTE ? \"'\" : '\"';\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(quote, next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos + 1;\n break;\n } else {\n unclosed(\"string\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"string\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case AT: {\n RE_AT_END.lastIndex = pos + 1;\n RE_AT_END.test(css);\n if (RE_AT_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_AT_END.lastIndex - 2;\n }\n currentToken = [\"at-word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case BACKSLASH: {\n next = pos;\n escape = true;\n while (css.charCodeAt(next + 1) === BACKSLASH) {\n next += 1;\n escape = !escape;\n }\n code = css.charCodeAt(next + 1);\n if (escape && code !== SLASH && code !== SPACE && code !== NEWLINE && code !== TAB && code !== CR && code !== FEED) {\n next += 1;\n if (RE_HEX_ESCAPE.test(css.charAt(next))) {\n while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {\n next += 1;\n }\n if (css.charCodeAt(next + 1) === SPACE) {\n next += 1;\n }\n }\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n default: {\n if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {\n next = css.indexOf(\"*/\", pos + 2) + 1;\n if (next === 0) {\n if (ignore || ignoreUnclosed) {\n next = css.length;\n } else {\n unclosed(\"comment\");\n }\n }\n currentToken = [\"comment\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n RE_WORD_END.lastIndex = pos + 1;\n RE_WORD_END.test(css);\n if (RE_WORD_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_WORD_END.lastIndex - 2;\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n buffer.push(currentToken);\n pos = next;\n }\n break;\n }\n }\n pos++;\n return currentToken;\n }\n function back(token) {\n returned.push(token);\n }\n return {\n back,\n endOfFile,\n nextToken,\n position\n };\n};\nlet Container$5 = container;\nlet AtRule$3 = class AtRule2 extends Container$5 {\n constructor(defaults) {\n super(defaults);\n this.type = \"atrule\";\n }\n append(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.append(...children);\n }\n prepend(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.prepend(...children);\n }\n};\nvar atRule = AtRule$3;\nAtRule$3.default = AtRule$3;\nContainer$5.registerAtRule(AtRule$3);\nlet Container$4 = container;\nlet LazyResult$3, Processor$2;\nlet Root$5 = class Root2 extends Container$4 {\n constructor(defaults) {\n super(defaults);\n this.type = \"root\";\n if (!this.nodes) this.nodes = [];\n }\n normalize(child, sample, type) {\n let nodes = super.normalize(child);\n if (sample) {\n if (type === \"prepend\") {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before;\n } else {\n delete sample.raws.before;\n }\n } else if (this.first !== sample) {\n for (let node2 of nodes) {\n node2.raws.before = sample.raws.before;\n }\n }\n }\n return nodes;\n }\n removeChild(child, ignore) {\n let index2 = this.index(child);\n if (!ignore && index2 === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index2].raws.before;\n }\n return super.removeChild(child);\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$3(new Processor$2(), this, opts);\n return lazy.stringify();\n }\n};\nRoot$5.registerLazyResult = (dependant) => {\n LazyResult$3 = dependant;\n};\nRoot$5.registerProcessor = (dependant) => {\n Processor$2 = dependant;\n};\nvar root = Root$5;\nRoot$5.default = Root$5;\nContainer$4.registerRoot(Root$5);\nlet list$2 = {\n comma(string) {\n return list$2.split(string, [\",\"], true);\n },\n space(string) {\n let spaces = [\" \", \"\\n\", \"\t\"];\n return list$2.split(string, spaces);\n },\n split(string, separators, last) {\n let array = [];\n let current = \"\";\n let split = false;\n let func = 0;\n let inQuote = false;\n let prevQuote = \"\";\n let escape = false;\n for (let letter of string) {\n if (escape) {\n escape = false;\n } else if (letter === \"\\\\\") {\n escape = true;\n } else if (inQuote) {\n if (letter === prevQuote) {\n inQuote = false;\n }\n } else if (letter === '\"' || letter === \"'\") {\n inQuote = true;\n prevQuote = letter;\n } else if (letter === \"(\") {\n func += 1;\n } else if (letter === \")\") {\n if (func > 0) func -= 1;\n } else if (func === 0) {\n if (separators.includes(letter)) split = true;\n }\n if (split) {\n if (current !== \"\") array.push(current.trim());\n current = \"\";\n split = false;\n } else {\n current += letter;\n }\n }\n if (last || current !== \"\") array.push(current.trim());\n return array;\n }\n};\nvar list_1 = list$2;\nlist$2.default = list$2;\nlet Container$3 = container;\nlet list$1 = list_1;\nlet Rule$3 = class Rule2 extends Container$3 {\n constructor(defaults) {\n super(defaults);\n this.type = \"rule\";\n if (!this.nodes) this.nodes = [];\n }\n get selectors() {\n return list$1.comma(this.selector);\n }\n set selectors(values) {\n let match = this.selector ? this.selector.match(/,\\s*/) : null;\n let sep2 = match ? match[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n this.selector = values.join(sep2);\n }\n};\nvar rule = Rule$3;\nRule$3.default = Rule$3;\nContainer$3.registerRule(Rule$3);\nlet Declaration$2 = declaration;\nlet tokenizer22 = tokenize;\nlet Comment$2 = comment;\nlet AtRule$2 = atRule;\nlet Root$4 = root;\nlet Rule$2 = rule;\nconst SAFE_COMMENT_NEIGHBOR = {\n empty: true,\n space: true\n};\nfunction findLastWithPosition(tokens) {\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n let token = tokens[i2];\n let pos = token[3] || token[2];\n if (pos) return pos;\n }\n}\nlet Parser$1 = class Parser2 {\n constructor(input2) {\n this.input = input2;\n this.root = new Root$4();\n this.current = this.root;\n this.spaces = \"\";\n this.semicolon = false;\n this.createTokenizer();\n this.root.source = { input: input2, start: { column: 1, line: 1, offset: 0 } };\n }\n atrule(token) {\n let node2 = new AtRule$2();\n node2.name = token[1].slice(1);\n if (node2.name === \"\") {\n this.unnamedAtrule(node2, token);\n }\n this.init(node2, token[2]);\n let type;\n let prev;\n let shift;\n let last = false;\n let open = false;\n let params = [];\n let brackets = [];\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n type = token[0];\n if (type === \"(\" || type === \"[\") {\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (type === \"{\" && brackets.length > 0) {\n brackets.push(\"}\");\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n }\n if (brackets.length === 0) {\n if (type === \";\") {\n node2.source.end = this.getPosition(token[2]);\n node2.source.end.offset++;\n this.semicolon = true;\n break;\n } else if (type === \"{\") {\n open = true;\n break;\n } else if (type === \"}\") {\n if (params.length > 0) {\n shift = params.length - 1;\n prev = params[shift];\n while (prev && prev[0] === \"space\") {\n prev = params[--shift];\n }\n if (prev) {\n node2.source.end = this.getPosition(prev[3] || prev[2]);\n node2.source.end.offset++;\n }\n }\n this.end(token);\n break;\n } else {\n params.push(token);\n }\n } else {\n params.push(token);\n }\n if (this.tokenizer.endOfFile()) {\n last = true;\n break;\n }\n }\n node2.raws.between = this.spacesAndCommentsFromEnd(params);\n if (params.length) {\n node2.raws.afterName = this.spacesAndCommentsFromStart(params);\n this.raw(node2, \"params\", params);\n if (last) {\n token = params[params.length - 1];\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n this.spaces = node2.raws.between;\n node2.raws.between = \"\";\n }\n } else {\n node2.raws.afterName = \"\";\n node2.params = \"\";\n }\n if (open) {\n node2.nodes = [];\n this.current = node2;\n }\n }\n checkMissedSemicolon(tokens) {\n let colon = this.colon(tokens);\n if (colon === false) return;\n let founded = 0;\n let token;\n for (let j = colon - 1; j >= 0; j--) {\n token = tokens[j];\n if (token[0] !== \"space\") {\n founded += 1;\n if (founded === 2) break;\n }\n }\n throw this.input.error(\n \"Missed semicolon\",\n token[0] === \"word\" ? token[3] + 1 : token[2]\n );\n }\n colon(tokens) {\n let brackets = 0;\n let token, type, prev;\n for (let [i2, element] of tokens.entries()) {\n token = element;\n type = token[0];\n if (type === \"(\") {\n brackets += 1;\n }\n if (type === \")\") {\n brackets -= 1;\n }\n if (brackets === 0 && type === \":\") {\n if (!prev) {\n this.doubleColon(token);\n } else if (prev[0] === \"word\" && prev[1] === \"progid\") {\n continue;\n } else {\n return i2;\n }\n }\n prev = token;\n }\n return false;\n }\n comment(token) {\n let node2 = new Comment$2();\n this.init(node2, token[2]);\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n let text = token[1].slice(2, -2);\n if (/^\\s*$/.test(text)) {\n node2.text = \"\";\n node2.raws.left = text;\n node2.raws.right = \"\";\n } else {\n let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n node2.text = match[2];\n node2.raws.left = match[1];\n node2.raws.right = match[3];\n }\n }\n createTokenizer() {\n this.tokenizer = tokenizer22(this.input);\n }\n decl(tokens, customProperty) {\n let node2 = new Declaration$2();\n this.init(node2, tokens[0][2]);\n let last = tokens[tokens.length - 1];\n if (last[0] === \";\") {\n this.semicolon = true;\n tokens.pop();\n }\n node2.source.end = this.getPosition(\n last[3] || last[2] || findLastWithPosition(tokens)\n );\n node2.source.end.offset++;\n while (tokens[0][0] !== \"word\") {\n if (tokens.length === 1) this.unknownWord(tokens);\n node2.raws.before += tokens.shift()[1];\n }\n node2.source.start = this.getPosition(tokens[0][2]);\n node2.prop = \"\";\n while (tokens.length) {\n let type = tokens[0][0];\n if (type === \":\" || type === \"space\" || type === \"comment\") {\n break;\n }\n node2.prop += tokens.shift()[1];\n }\n node2.raws.between = \"\";\n let token;\n while (tokens.length) {\n token = tokens.shift();\n if (token[0] === \":\") {\n node2.raws.between += token[1];\n break;\n } else {\n if (token[0] === \"word\" && /\\w/.test(token[1])) {\n this.unknownWord([token]);\n }\n node2.raws.between += token[1];\n }\n }\n if (node2.prop[0] === \"_\" || node2.prop[0] === \"*\") {\n node2.raws.before += node2.prop[0];\n node2.prop = node2.prop.slice(1);\n }\n let firstSpaces = [];\n let next;\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n firstSpaces.push(tokens.shift());\n }\n this.precheckMissedSemicolon(tokens);\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n token = tokens[i2];\n if (token[1].toLowerCase() === \"!important\") {\n node2.important = true;\n let string = this.stringFrom(tokens, i2);\n string = this.spacesFromEnd(tokens) + string;\n if (string !== \" !important\") node2.raws.important = string;\n break;\n } else if (token[1].toLowerCase() === \"important\") {\n let cache = tokens.slice(0);\n let str = \"\";\n for (let j = i2; j > 0; j--) {\n let type = cache[j][0];\n if (str.trim().indexOf(\"!\") === 0 && type !== \"space\") {\n break;\n }\n str = cache.pop()[1] + str;\n }\n if (str.trim().indexOf(\"!\") === 0) {\n node2.important = true;\n node2.raws.important = str;\n tokens = cache;\n }\n }\n if (token[0] !== \"space\" && token[0] !== \"comment\") {\n break;\n }\n }\n let hasWord = tokens.some((i2) => i2[0] !== \"space\" && i2[0] !== \"comment\");\n if (hasWord) {\n node2.raws.between += firstSpaces.map((i2) => i2[1]).join(\"\");\n firstSpaces = [];\n }\n this.raw(node2, \"value\", firstSpaces.concat(tokens), customProperty);\n if (node2.value.includes(\":\") && !customProperty) {\n this.checkMissedSemicolon(tokens);\n }\n }\n doubleColon(token) {\n throw this.input.error(\n \"Double colon\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n emptyRule(token) {\n let node2 = new Rule$2();\n this.init(node2, token[2]);\n node2.selector = \"\";\n node2.raws.between = \"\";\n this.current = node2;\n }\n end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.semicolon = false;\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.spaces = \"\";\n if (this.current.parent) {\n this.current.source.end = this.getPosition(token[2]);\n this.current.source.end.offset++;\n this.current = this.current.parent;\n } else {\n this.unexpectedClose(token);\n }\n }\n endFile() {\n if (this.current.parent) this.unclosedBlock();\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.root.source.end = this.getPosition(this.tokenizer.position());\n }\n freeSemicolon(token) {\n this.spaces += token[1];\n if (this.current.nodes) {\n let prev = this.current.nodes[this.current.nodes.length - 1];\n if (prev && prev.type === \"rule\" && !prev.raws.ownSemicolon) {\n prev.raws.ownSemicolon = this.spaces;\n this.spaces = \"\";\n }\n }\n }\n // Helpers\n getPosition(offset) {\n let pos = this.input.fromOffset(offset);\n return {\n column: pos.col,\n line: pos.line,\n offset\n };\n }\n init(node2, offset) {\n this.current.push(node2);\n node2.source = {\n input: this.input,\n start: this.getPosition(offset)\n };\n node2.raws.before = this.spaces;\n this.spaces = \"\";\n if (node2.type !== \"comment\") this.semicolon = false;\n }\n other(start) {\n let end = false;\n let type = null;\n let colon = false;\n let bracket = null;\n let brackets = [];\n let customProperty = start[1].startsWith(\"--\");\n let tokens = [];\n let token = start;\n while (token) {\n type = token[0];\n tokens.push(token);\n if (type === \"(\" || type === \"[\") {\n if (!bracket) bracket = token;\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (customProperty && colon && type === \"{\") {\n if (!bracket) bracket = token;\n brackets.push(\"}\");\n } else if (brackets.length === 0) {\n if (type === \";\") {\n if (colon) {\n this.decl(tokens, customProperty);\n return;\n } else {\n break;\n }\n } else if (type === \"{\") {\n this.rule(tokens);\n return;\n } else if (type === \"}\") {\n this.tokenizer.back(tokens.pop());\n end = true;\n break;\n } else if (type === \":\") {\n colon = true;\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n if (brackets.length === 0) bracket = null;\n }\n token = this.tokenizer.nextToken();\n }\n if (this.tokenizer.endOfFile()) end = true;\n if (brackets.length > 0) this.unclosedBracket(bracket);\n if (end && colon) {\n if (!customProperty) {\n while (tokens.length) {\n token = tokens[tokens.length - 1][0];\n if (token !== \"space\" && token !== \"comment\") break;\n this.tokenizer.back(tokens.pop());\n }\n }\n this.decl(tokens, customProperty);\n } else {\n this.unknownWord(tokens);\n }\n }\n parse() {\n let token;\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n switch (token[0]) {\n case \"space\":\n this.spaces += token[1];\n break;\n case \";\":\n this.freeSemicolon(token);\n break;\n case \"}\":\n this.end(token);\n break;\n case \"comment\":\n this.comment(token);\n break;\n case \"at-word\":\n this.atrule(token);\n break;\n case \"{\":\n this.emptyRule(token);\n break;\n default:\n this.other(token);\n break;\n }\n }\n this.endFile();\n }\n precheckMissedSemicolon() {\n }\n raw(node2, prop, tokens, customProperty) {\n let token, type;\n let length = tokens.length;\n let value = \"\";\n let clean = true;\n let next, prev;\n for (let i2 = 0; i2 < length; i2 += 1) {\n token = tokens[i2];\n type = token[0];\n if (type === \"space\" && i2 === length - 1 && !customProperty) {\n clean = false;\n } else if (type === \"comment\") {\n prev = tokens[i2 - 1] ? tokens[i2 - 1][0] : \"empty\";\n next = tokens[i2 + 1] ? tokens[i2 + 1][0] : \"empty\";\n if (!SAFE_COMMENT_NEIGHBOR[prev] && !SAFE_COMMENT_NEIGHBOR[next]) {\n if (value.slice(-1) === \",\") {\n clean = false;\n } else {\n value += token[1];\n }\n } else {\n clean = false;\n }\n } else {\n value += token[1];\n }\n }\n if (!clean) {\n let raw = tokens.reduce((all, i2) => all + i2[1], \"\");\n node2.raws[prop] = { raw, value };\n }\n node2[prop] = value;\n }\n rule(tokens) {\n tokens.pop();\n let node2 = new Rule$2();\n this.init(node2, tokens[0][2]);\n node2.raws.between = this.spacesAndCommentsFromEnd(tokens);\n this.raw(node2, \"selector\", tokens);\n this.current = node2;\n }\n spacesAndCommentsFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\" && lastTokenType !== \"comment\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n // Errors\n spacesAndCommentsFromStart(tokens) {\n let next;\n let spaces = \"\";\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n spaces += tokens.shift()[1];\n }\n return spaces;\n }\n spacesFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n stringFrom(tokens, from) {\n let result2 = \"\";\n for (let i2 = from; i2 < tokens.length; i2++) {\n result2 += tokens[i2][1];\n }\n tokens.splice(from, tokens.length - from);\n return result2;\n }\n unclosedBlock() {\n let pos = this.current.source.start;\n throw this.input.error(\"Unclosed block\", pos.line, pos.column);\n }\n unclosedBracket(bracket) {\n throw this.input.error(\n \"Unclosed bracket\",\n { offset: bracket[2] },\n { offset: bracket[2] + 1 }\n );\n }\n unexpectedClose(token) {\n throw this.input.error(\n \"Unexpected }\",\n { offset: token[2] },\n { offset: token[2] + 1 }\n );\n }\n unknownWord(tokens) {\n throw this.input.error(\n \"Unknown word\",\n { offset: tokens[0][2] },\n { offset: tokens[0][2] + tokens[0][1].length }\n );\n }\n unnamedAtrule(node2, token) {\n throw this.input.error(\n \"At-rule without name\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n};\nvar parser = Parser$1;\nlet Container$2 = container;\nlet Parser22 = parser;\nlet Input$2 = input;\nfunction parse$3(css, opts) {\n let input2 = new Input$2(css, opts);\n let parser2 = new Parser22(input2);\n try {\n parser2.parse();\n } catch (e2) {\n if (process.env.NODE_ENV !== \"production\") {\n if (e2.name === \"CssSyntaxError\" && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser\";\n } else if (/\\.sass/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser\";\n } else if (/\\.less$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser\";\n }\n }\n }\n throw e2;\n }\n return parser2.root;\n}\nvar parse_1 = parse$3;\nparse$3.default = parse$3;\nContainer$2.registerParse(parse$3);\nlet { isClean, my } = symbols;\nlet MapGenerator$1 = mapGenerator;\nlet stringify$2 = stringify_1;\nlet Container$1 = container;\nlet Document$2 = document$1;\nlet warnOnce$1 = warnOnce$2;\nlet Result$2 = result;\nlet parse$2 = parse_1;\nlet Root$3 = root;\nconst TYPE_TO_CLASS_NAME = {\n atrule: \"AtRule\",\n comment: \"Comment\",\n decl: \"Declaration\",\n document: \"Document\",\n root: \"Root\",\n rule: \"Rule\"\n};\nconst PLUGIN_PROPS = {\n AtRule: true,\n AtRuleExit: true,\n Comment: true,\n CommentExit: true,\n Declaration: true,\n DeclarationExit: true,\n Document: true,\n DocumentExit: true,\n Once: true,\n OnceExit: true,\n postcssPlugin: true,\n prepare: true,\n Root: true,\n RootExit: true,\n Rule: true,\n RuleExit: true\n};\nconst NOT_VISITORS = {\n Once: true,\n postcssPlugin: true,\n prepare: true\n};\nconst CHILDREN = 0;\nfunction isPromise(obj) {\n return typeof obj === \"object\" && typeof obj.then === \"function\";\n}\nfunction getEvents(node2) {\n let key = false;\n let type = TYPE_TO_CLASS_NAME[node2.type];\n if (node2.type === \"decl\") {\n key = node2.prop.toLowerCase();\n } else if (node2.type === \"atrule\") {\n key = node2.name.toLowerCase();\n }\n if (key && node2.append) {\n return [\n type,\n type + \"-\" + key,\n CHILDREN,\n type + \"Exit\",\n type + \"Exit-\" + key\n ];\n } else if (key) {\n return [type, type + \"-\" + key, type + \"Exit\", type + \"Exit-\" + key];\n } else if (node2.append) {\n return [type, CHILDREN, type + \"Exit\"];\n } else {\n return [type, type + \"Exit\"];\n }\n}\nfunction toStack(node2) {\n let events;\n if (node2.type === \"document\") {\n events = [\"Document\", CHILDREN, \"DocumentExit\"];\n } else if (node2.type === \"root\") {\n events = [\"Root\", CHILDREN, \"RootExit\"];\n } else {\n events = getEvents(node2);\n }\n return {\n eventIndex: 0,\n events,\n iterator: 0,\n node: node2,\n visitorIndex: 0,\n visitors: []\n };\n}\nfunction cleanMarks(node2) {\n node2[isClean] = false;\n if (node2.nodes) node2.nodes.forEach((i2) => cleanMarks(i2));\n return node2;\n}\nlet postcss$2 = {};\nlet LazyResult$2 = class LazyResult2 {\n constructor(processor2, css, opts) {\n this.stringified = false;\n this.processed = false;\n let root2;\n if (typeof css === \"object\" && css !== null && (css.type === \"root\" || css.type === \"document\")) {\n root2 = cleanMarks(css);\n } else if (css instanceof LazyResult2 || css instanceof Result$2) {\n root2 = cleanMarks(css.root);\n if (css.map) {\n if (typeof opts.map === \"undefined\") opts.map = {};\n if (!opts.map.inline) opts.map.inline = false;\n opts.map.prev = css.map;\n }\n } else {\n let parser2 = parse$2;\n if (opts.syntax) parser2 = opts.syntax.parse;\n if (opts.parser) parser2 = opts.parser;\n if (parser2.parse) parser2 = parser2.parse;\n try {\n root2 = parser2(css, opts);\n } catch (error) {\n this.processed = true;\n this.error = error;\n }\n if (root2 && !root2[my]) {\n Container$1.rebuild(root2);\n }\n }\n this.result = new Result$2(processor2, root2, opts);\n this.helpers = { ...postcss$2, postcss: postcss$2, result: this.result };\n this.plugins = this.processor.plugins.map((plugin22) => {\n if (typeof plugin22 === \"object\" && plugin22.prepare) {\n return { ...plugin22, ...plugin22.prepare(this.result) };\n } else {\n return plugin22;\n }\n });\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n if (this.processed) return Promise.resolve(this.result);\n if (!this.processing) {\n this.processing = this.runAsync();\n }\n return this.processing;\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n getAsyncError() {\n throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n }\n handleError(error, node2) {\n let plugin22 = this.result.lastPlugin;\n try {\n if (node2) node2.addToError(error);\n this.error = error;\n if (error.name === \"CssSyntaxError\" && !error.plugin) {\n error.plugin = plugin22.postcssPlugin;\n error.setMessage();\n } else if (plugin22.postcssVersion) {\n if (process.env.NODE_ENV !== \"production\") {\n let pluginName = plugin22.postcssPlugin;\n let pluginVer = plugin22.postcssVersion;\n let runtimeVer = this.result.processor.version;\n let a2 = pluginVer.split(\".\");\n let b = runtimeVer.split(\".\");\n if (a2[0] !== b[0] || parseInt(a2[1]) > parseInt(b[1])) {\n console.error(\n \"Unknown error from PostCSS plugin. Your current PostCSS version is \" + runtimeVer + \", but \" + pluginName + \" uses \" + pluginVer + \". Perhaps this is the source of the error below.\"\n );\n }\n }\n }\n } catch (err) {\n if (console && console.error) console.error(err);\n }\n return error;\n }\n prepareVisitors() {\n this.listeners = {};\n let add = (plugin22, type, cb) => {\n if (!this.listeners[type]) this.listeners[type] = [];\n this.listeners[type].push([plugin22, cb]);\n };\n for (let plugin22 of this.plugins) {\n if (typeof plugin22 === \"object\") {\n for (let event in plugin22) {\n if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) {\n throw new Error(\n `Unknown event ${event} in ${plugin22.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`\n );\n }\n if (!NOT_VISITORS[event]) {\n if (typeof plugin22[event] === \"object\") {\n for (let filter in plugin22[event]) {\n if (filter === \"*\") {\n add(plugin22, event, plugin22[event][filter]);\n } else {\n add(\n plugin22,\n event + \"-\" + filter.toLowerCase(),\n plugin22[event][filter]\n );\n }\n }\n } else if (typeof plugin22[event] === \"function\") {\n add(plugin22, event, plugin22[event]);\n }\n }\n }\n }\n }\n this.hasListener = Object.keys(this.listeners).length > 0;\n }\n async runAsync() {\n this.plugin = 0;\n for (let i2 = 0; i2 < this.plugins.length; i2++) {\n let plugin22 = this.plugins[i2];\n let promise = this.runOnRoot(plugin22);\n if (isPromise(promise)) {\n try {\n await promise;\n } catch (error) {\n throw this.handleError(error);\n }\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean]) {\n root2[isClean] = true;\n let stack = [toStack(root2)];\n while (stack.length > 0) {\n let promise = this.visitTick(stack);\n if (isPromise(promise)) {\n try {\n await promise;\n } catch (e2) {\n let node2 = stack[stack.length - 1].node;\n throw this.handleError(e2, node2);\n }\n }\n }\n }\n if (this.listeners.OnceExit) {\n for (let [plugin22, visitor] of this.listeners.OnceExit) {\n this.result.lastPlugin = plugin22;\n try {\n if (root2.type === \"document\") {\n let roots = root2.nodes.map(\n (subRoot) => visitor(subRoot, this.helpers)\n );\n await Promise.all(roots);\n } else {\n await visitor(root2, this.helpers);\n }\n } catch (e2) {\n throw this.handleError(e2);\n }\n }\n }\n }\n this.processed = true;\n return this.stringify();\n }\n runOnRoot(plugin22) {\n this.result.lastPlugin = plugin22;\n try {\n if (typeof plugin22 === \"object\" && plugin22.Once) {\n if (this.result.root.type === \"document\") {\n let roots = this.result.root.nodes.map(\n (root2) => plugin22.Once(root2, this.helpers)\n );\n if (isPromise(roots[0])) {\n return Promise.all(roots);\n }\n return roots;\n }\n return plugin22.Once(this.result.root, this.helpers);\n } else if (typeof plugin22 === \"function\") {\n return plugin22(this.result.root, this.result);\n }\n } catch (error) {\n throw this.handleError(error);\n }\n }\n stringify() {\n if (this.error) throw this.error;\n if (this.stringified) return this.result;\n this.stringified = true;\n this.sync();\n let opts = this.result.opts;\n let str = stringify$2;\n if (opts.syntax) str = opts.syntax.stringify;\n if (opts.stringifier) str = opts.stringifier;\n if (str.stringify) str = str.stringify;\n let map = new MapGenerator$1(str, this.result.root, this.result.opts);\n let data = map.generate();\n this.result.css = data[0];\n this.result.map = data[1];\n return this.result;\n }\n sync() {\n if (this.error) throw this.error;\n if (this.processed) return this.result;\n this.processed = true;\n if (this.processing) {\n throw this.getAsyncError();\n }\n for (let plugin22 of this.plugins) {\n let promise = this.runOnRoot(plugin22);\n if (isPromise(promise)) {\n throw this.getAsyncError();\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean]) {\n root2[isClean] = true;\n this.walkSync(root2);\n }\n if (this.listeners.OnceExit) {\n if (root2.type === \"document\") {\n for (let subRoot of root2.nodes) {\n this.visitSync(this.listeners.OnceExit, subRoot);\n }\n } else {\n this.visitSync(this.listeners.OnceExit, root2);\n }\n }\n }\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this.opts)) {\n warnOnce$1(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this.css;\n }\n visitSync(visitors, node2) {\n for (let [plugin22, visitor] of visitors) {\n this.result.lastPlugin = plugin22;\n let promise;\n try {\n promise = visitor(node2, this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2.proxyOf);\n }\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n return true;\n }\n if (isPromise(promise)) {\n throw this.getAsyncError();\n }\n }\n }\n visitTick(stack) {\n let visit2 = stack[stack.length - 1];\n let { node: node2, visitors } = visit2;\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n stack.pop();\n return;\n }\n if (visitors.length > 0 && visit2.visitorIndex < visitors.length) {\n let [plugin22, visitor] = visitors[visit2.visitorIndex];\n visit2.visitorIndex += 1;\n if (visit2.visitorIndex === visitors.length) {\n visit2.visitors = [];\n visit2.visitorIndex = 0;\n }\n this.result.lastPlugin = plugin22;\n try {\n return visitor(node2.toProxy(), this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2);\n }\n }\n if (visit2.iterator !== 0) {\n let iterator = visit2.iterator;\n let child;\n while (child = node2.nodes[node2.indexes[iterator]]) {\n node2.indexes[iterator] += 1;\n if (!child[isClean]) {\n child[isClean] = true;\n stack.push(toStack(child));\n return;\n }\n }\n visit2.iterator = 0;\n delete node2.indexes[iterator];\n }\n let events = visit2.events;\n while (visit2.eventIndex < events.length) {\n let event = events[visit2.eventIndex];\n visit2.eventIndex += 1;\n if (event === CHILDREN) {\n if (node2.nodes && node2.nodes.length) {\n node2[isClean] = true;\n visit2.iterator = node2.getIterator();\n }\n return;\n } else if (this.listeners[event]) {\n visit2.visitors = this.listeners[event];\n return;\n }\n }\n stack.pop();\n }\n walkSync(node2) {\n node2[isClean] = true;\n let events = getEvents(node2);\n for (let event of events) {\n if (event === CHILDREN) {\n if (node2.nodes) {\n node2.each((child) => {\n if (!child[isClean]) this.walkSync(child);\n });\n }\n } else {\n let visitors = this.listeners[event];\n if (visitors) {\n if (this.visitSync(visitors, node2.toProxy())) return;\n }\n }\n }\n }\n warnings() {\n return this.sync().warnings();\n }\n get content() {\n return this.stringify().content;\n }\n get css() {\n return this.stringify().css;\n }\n get map() {\n return this.stringify().map;\n }\n get messages() {\n return this.sync().messages;\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n return this.sync().root;\n }\n get [Symbol.toStringTag]() {\n return \"LazyResult\";\n }\n};\nLazyResult$2.registerPostcss = (dependant) => {\n postcss$2 = dependant;\n};\nvar lazyResult = LazyResult$2;\nLazyResult$2.default = LazyResult$2;\nRoot$3.registerLazyResult(LazyResult$2);\nDocument$2.registerLazyResult(LazyResult$2);\nlet MapGenerator22 = mapGenerator;\nlet stringify$1 = stringify_1;\nlet warnOnce22 = warnOnce$2;\nlet parse$1 = parse_1;\nconst Result$1 = result;\nlet NoWorkResult$1 = class NoWorkResult2 {\n constructor(processor2, css, opts) {\n css = css.toString();\n this.stringified = false;\n this._processor = processor2;\n this._css = css;\n this._opts = opts;\n this._map = void 0;\n let root2;\n let str = stringify$1;\n this.result = new Result$1(this._processor, root2, this._opts);\n this.result.css = css;\n let self = this;\n Object.defineProperty(this.result, \"root\", {\n get() {\n return self.root;\n }\n });\n let map = new MapGenerator22(str, root2, this._opts, css);\n if (map.isMap()) {\n let [generatedCSS, generatedMap] = map.generate();\n if (generatedCSS) {\n this.result.css = generatedCSS;\n }\n if (generatedMap) {\n this.result.map = generatedMap;\n }\n } else {\n map.clearAnnotation();\n this.result.css = map.css;\n }\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n return Promise.resolve(this.result);\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n sync() {\n if (this.error) throw this.error;\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this._opts)) {\n warnOnce22(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this._css;\n }\n warnings() {\n return [];\n }\n get content() {\n return this.result.css;\n }\n get css() {\n return this.result.css;\n }\n get map() {\n return this.result.map;\n }\n get messages() {\n return [];\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n if (this._root) {\n return this._root;\n }\n let root2;\n let parser2 = parse$1;\n try {\n root2 = parser2(this._css, this._opts);\n } catch (error) {\n this.error = error;\n }\n if (this.error) {\n throw this.error;\n } else {\n this._root = root2;\n return root2;\n }\n }\n get [Symbol.toStringTag]() {\n return \"NoWorkResult\";\n }\n};\nvar noWorkResult = NoWorkResult$1;\nNoWorkResult$1.default = NoWorkResult$1;\nlet NoWorkResult22 = noWorkResult;\nlet LazyResult$1 = lazyResult;\nlet Document$1 = document$1;\nlet Root$2 = root;\nlet Processor$1 = class Processor2 {\n constructor(plugins = []) {\n this.version = \"8.4.38\";\n this.plugins = this.normalize(plugins);\n }\n normalize(plugins) {\n let normalized = [];\n for (let i2 of plugins) {\n if (i2.postcss === true) {\n i2 = i2();\n } else if (i2.postcss) {\n i2 = i2.postcss;\n }\n if (typeof i2 === \"object\" && Array.isArray(i2.plugins)) {\n normalized = normalized.concat(i2.plugins);\n } else if (typeof i2 === \"object\" && i2.postcssPlugin) {\n normalized.push(i2);\n } else if (typeof i2 === \"function\") {\n normalized.push(i2);\n } else if (typeof i2 === \"object\" && (i2.parse || i2.stringify)) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error(\n \"PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.\"\n );\n }\n } else {\n throw new Error(i2 + \" is not a PostCSS plugin\");\n }\n }\n return normalized;\n }\n process(css, opts = {}) {\n if (!this.plugins.length && !opts.parser && !opts.stringifier && !opts.syntax) {\n return new NoWorkResult22(this, css, opts);\n } else {\n return new LazyResult$1(this, css, opts);\n }\n }\n use(plugin22) {\n this.plugins = this.plugins.concat(this.normalize([plugin22]));\n return this;\n }\n};\nvar processor = Processor$1;\nProcessor$1.default = Processor$1;\nRoot$2.registerProcessor(Processor$1);\nDocument$1.registerProcessor(Processor$1);\nlet Declaration$1 = declaration;\nlet PreviousMap22 = previousMap;\nlet Comment$1 = comment;\nlet AtRule$1 = atRule;\nlet Input$1 = input;\nlet Root$1 = root;\nlet Rule$1 = rule;\nfunction fromJSON$1(json, inputs) {\n if (Array.isArray(json)) return json.map((n2) => fromJSON$1(n2));\n let { inputs: ownInputs, ...defaults } = json;\n if (ownInputs) {\n inputs = [];\n for (let input2 of ownInputs) {\n let inputHydrated = { ...input2, __proto__: Input$1.prototype };\n if (inputHydrated.map) {\n inputHydrated.map = {\n ...inputHydrated.map,\n __proto__: PreviousMap22.prototype\n };\n }\n inputs.push(inputHydrated);\n }\n }\n if (defaults.nodes) {\n defaults.nodes = json.nodes.map((n2) => fromJSON$1(n2, inputs));\n }\n if (defaults.source) {\n let { inputId, ...source } = defaults.source;\n defaults.source = source;\n if (inputId != null) {\n defaults.source.input = inputs[inputId];\n }\n }\n if (defaults.type === \"root\") {\n return new Root$1(defaults);\n } else if (defaults.type === \"decl\") {\n return new Declaration$1(defaults);\n } else if (defaults.type === \"rule\") {\n return new Rule$1(defaults);\n } else if (defaults.type === \"comment\") {\n return new Comment$1(defaults);\n } else if (defaults.type === \"atrule\") {\n return new AtRule$1(defaults);\n } else {\n throw new Error(\"Unknown node type: \" + json.type);\n }\n}\nvar fromJSON_1 = fromJSON$1;\nfromJSON$1.default = fromJSON$1;\nlet CssSyntaxError22 = cssSyntaxError;\nlet Declaration22 = declaration;\nlet LazyResult22 = lazyResult;\nlet Container22 = container;\nlet Processor22 = processor;\nlet stringify = stringify_1;\nlet fromJSON = fromJSON_1;\nlet Document222 = document$1;\nlet Warning22 = warning;\nlet Comment22 = comment;\nlet AtRule22 = atRule;\nlet Result22 = result;\nlet Input22 = input;\nlet parse = parse_1;\nlet list = list_1;\nlet Rule22 = rule;\nlet Root22 = root;\nlet Node22 = node;\nfunction postcss(...plugins) {\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0];\n }\n return new Processor22(plugins);\n}\npostcss.plugin = function plugin2(name, initializer) {\n let warningPrinted = false;\n function creator(...args) {\n if (console && console.warn && !warningPrinted) {\n warningPrinted = true;\n console.warn(\n name + \": postcss.plugin was deprecated. Migration guide:\\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration\"\n );\n if (process.env.LANG && process.env.LANG.startsWith(\"cn\")) {\n console.warn(\n name + \": 里面 postcss.plugin 被弃用. 迁移指南:\\nhttps://www.w3ctech.com/topic/2226\"\n );\n }\n }\n let transformer = initializer(...args);\n transformer.postcssPlugin = name;\n transformer.postcssVersion = new Processor22().version;\n return transformer;\n }\n let cache;\n Object.defineProperty(creator, \"postcss\", {\n get() {\n if (!cache) cache = creator();\n return cache;\n }\n });\n creator.process = function(css, processOpts, pluginOpts) {\n return postcss([creator(pluginOpts)]).process(css, processOpts);\n };\n return creator;\n};\npostcss.stringify = stringify;\npostcss.parse = parse;\npostcss.fromJSON = fromJSON;\npostcss.list = list;\npostcss.comment = (defaults) => new Comment22(defaults);\npostcss.atRule = (defaults) => new AtRule22(defaults);\npostcss.decl = (defaults) => new Declaration22(defaults);\npostcss.rule = (defaults) => new Rule22(defaults);\npostcss.root = (defaults) => new Root22(defaults);\npostcss.document = (defaults) => new Document222(defaults);\npostcss.CssSyntaxError = CssSyntaxError22;\npostcss.Declaration = Declaration22;\npostcss.Container = Container22;\npostcss.Processor = Processor22;\npostcss.Document = Document222;\npostcss.Comment = Comment22;\npostcss.Warning = Warning22;\npostcss.AtRule = AtRule22;\npostcss.Result = Result22;\npostcss.Input = Input22;\npostcss.Rule = Rule22;\npostcss.Root = Root22;\npostcss.Node = Node22;\nLazyResult22.registerPostcss(postcss);\nvar postcss_1 = postcss;\npostcss.default = postcss;\nconst postcss$1 = /* @__PURE__ */ getDefaultExportFromCjs(postcss_1);\npostcss$1.stringify;\npostcss$1.fromJSON;\npostcss$1.plugin;\npostcss$1.parse;\npostcss$1.list;\npostcss$1.document;\npostcss$1.comment;\npostcss$1.atRule;\npostcss$1.rule;\npostcss$1.decl;\npostcss$1.root;\npostcss$1.CssSyntaxError;\npostcss$1.Declaration;\npostcss$1.Container;\npostcss$1.Processor;\npostcss$1.Document;\npostcss$1.Comment;\npostcss$1.Warning;\npostcss$1.AtRule;\npostcss$1.Result;\npostcss$1.Input;\npostcss$1.Rule;\npostcss$1.Root;\npostcss$1.Node;\nclass BaseRRNode {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any\n constructor(..._args) {\n __publicField2(this, \"parentElement\", null);\n __publicField2(this, \"parentNode\", null);\n __publicField2(this, \"ownerDocument\");\n __publicField2(this, \"firstChild\", null);\n __publicField2(this, \"lastChild\", null);\n __publicField2(this, \"previousSibling\", null);\n __publicField2(this, \"nextSibling\", null);\n __publicField2(this, \"ELEMENT_NODE\", 1);\n __publicField2(this, \"TEXT_NODE\", 3);\n __publicField2(this, \"nodeType\");\n __publicField2(this, \"nodeName\");\n __publicField2(this, \"RRNodeType\");\n }\n get childNodes() {\n const childNodes2 = [];\n let childIterator = this.firstChild;\n while (childIterator) {\n childNodes2.push(childIterator);\n childIterator = childIterator.nextSibling;\n }\n return childNodes2;\n }\n contains(node2) {\n if (!(node2 instanceof BaseRRNode)) return false;\n else if (node2.ownerDocument !== this.ownerDocument) return false;\n else if (node2 === this) return true;\n while (node2.parentNode) {\n if (node2.parentNode === this) return true;\n node2 = node2.parentNode;\n }\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n appendChild(_newChild) {\n throw new Error(\n `RRDomException: Failed to execute 'appendChild' on 'RRNode': This RRNode type does not support this method.`\n );\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n insertBefore(_newChild, _refChild) {\n throw new Error(\n `RRDomException: Failed to execute 'insertBefore' on 'RRNode': This RRNode type does not support this method.`\n );\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n removeChild(_node) {\n throw new Error(\n `RRDomException: Failed to execute 'removeChild' on 'RRNode': This RRNode type does not support this method.`\n );\n }\n toString() {\n return \"RRNode\";\n }\n}\nconst testableAccessors = {\n Node: [\"childNodes\", \"parentNode\", \"parentElement\", \"textContent\"],\n ShadowRoot: [\"host\", \"styleSheets\"],\n Element: [\"shadowRoot\", \"querySelector\", \"querySelectorAll\"],\n MutationObserver: []\n};\nconst testableMethods = {\n Node: [\"contains\", \"getRootNode\"],\n ShadowRoot: [\"getSelection\"],\n Element: [],\n MutationObserver: [\"constructor\"]\n};\nconst untaintedBasePrototype = {};\nconst isAngularZonePresent = () => {\n return !!globalThis.Zone;\n};\nfunction getUntaintedPrototype(key) {\n if (untaintedBasePrototype[key])\n return untaintedBasePrototype[key];\n const defaultObj = globalThis[key];\n const defaultPrototype = defaultObj.prototype;\n const accessorNames = key in testableAccessors ? testableAccessors[key] : void 0;\n const isUntaintedAccessors = Boolean(\n accessorNames && // @ts-expect-error 2345\n accessorNames.every(\n (accessor) => {\n var _a2, _b;\n return Boolean(\n (_b = (_a2 = Object.getOwnPropertyDescriptor(defaultPrototype, accessor)) == null ? void 0 : _a2.get) == null ? void 0 : _b.toString().includes(\"[native code]\")\n );\n }\n )\n );\n const methodNames = key in testableMethods ? testableMethods[key] : void 0;\n const isUntaintedMethods = Boolean(\n methodNames && methodNames.every(\n // @ts-expect-error 2345\n (method) => {\n var _a2;\n return typeof defaultPrototype[method] === \"function\" && ((_a2 = defaultPrototype[method]) == null ? void 0 : _a2.toString().includes(\"[native code]\"));\n }\n )\n );\n if (isUntaintedAccessors && isUntaintedMethods && !isAngularZonePresent()) {\n untaintedBasePrototype[key] = defaultObj.prototype;\n return defaultObj.prototype;\n }\n try {\n const iframeEl = document.createElement(\"iframe\");\n document.body.appendChild(iframeEl);\n const win = iframeEl.contentWindow;\n if (!win) return defaultObj.prototype;\n const untaintedObject = win[key].prototype;\n document.body.removeChild(iframeEl);\n if (!untaintedObject) return defaultPrototype;\n return untaintedBasePrototype[key] = untaintedObject;\n } catch {\n return defaultPrototype;\n }\n}\nconst untaintedAccessorCache = {};\nfunction getUntaintedAccessor(key, instance, accessor) {\n var _a2;\n const cacheKey = `${key}.${String(accessor)}`;\n if (untaintedAccessorCache[cacheKey])\n return untaintedAccessorCache[cacheKey].call(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype(key);\n const untaintedAccessor = (_a2 = Object.getOwnPropertyDescriptor(\n untaintedPrototype,\n accessor\n )) == null ? void 0 : _a2.get;\n if (!untaintedAccessor) return instance[accessor];\n untaintedAccessorCache[cacheKey] = untaintedAccessor;\n return untaintedAccessor.call(instance);\n}\nconst untaintedMethodCache = {};\nfunction getUntaintedMethod(key, instance, method) {\n const cacheKey = `${key}.${String(method)}`;\n if (untaintedMethodCache[cacheKey])\n return untaintedMethodCache[cacheKey].bind(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype(key);\n const untaintedMethod = untaintedPrototype[method];\n if (typeof untaintedMethod !== \"function\") return instance[method];\n untaintedMethodCache[cacheKey] = untaintedMethod;\n return untaintedMethod.bind(instance);\n}\nfunction childNodes(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"childNodes\");\n}\nfunction parentNode(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"parentNode\");\n}\nfunction parentElement(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"parentElement\");\n}\nfunction textContent(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"textContent\");\n}\nfunction contains(n2, other) {\n return getUntaintedMethod(\"Node\", n2, \"contains\")(other);\n}\nfunction getRootNode(n2) {\n return getUntaintedMethod(\"Node\", n2, \"getRootNode\")();\n}\nfunction host(n2) {\n if (!n2 || !(\"host\" in n2)) return null;\n return getUntaintedAccessor(\"ShadowRoot\", n2, \"host\");\n}\nfunction styleSheets(n2) {\n return n2.styleSheets;\n}\nfunction shadowRoot(n2) {\n if (!n2 || !(\"shadowRoot\" in n2)) return null;\n return getUntaintedAccessor(\"Element\", n2, \"shadowRoot\");\n}\nfunction querySelector(n2, selectors) {\n return getUntaintedAccessor(\"Element\", n2, \"querySelector\")(selectors);\n}\nfunction querySelectorAll(n2, selectors) {\n return getUntaintedAccessor(\"Element\", n2, \"querySelectorAll\")(selectors);\n}\nfunction mutationObserverCtor() {\n return getUntaintedPrototype(\"MutationObserver\").constructor;\n}\nconst index = {\n childNodes,\n parentNode,\n parentElement,\n textContent,\n contains,\n getRootNode,\n host,\n styleSheets,\n shadowRoot,\n querySelector,\n querySelectorAll,\n mutationObserver: mutationObserverCtor\n};\nfunction on(type, fn, target = document) {\n const options = { capture: true, passive: true };\n target.addEventListener(type, fn, options);\n return () => target.removeEventListener(type, fn, options);\n}\nconst DEPARTED_MIRROR_ACCESS_WARNING = \"Please stop import mirror directly. Instead of that,\\r\\nnow you can use replayer.getMirror() to access the mirror instance of a replayer,\\r\\nor you can use record.mirror to access the mirror instance during recording.\";\nlet _mirror = {\n map: {},\n getId() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return -1;\n },\n getNode() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return null;\n },\n removeNodeFromMap() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n },\n has() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return false;\n },\n reset() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n }\n};\nif (typeof window !== \"undefined\" && window.Proxy && window.Reflect) {\n _mirror = new Proxy(_mirror, {\n get(target, prop, receiver) {\n if (prop === \"map\") {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n }\n return Reflect.get(target, prop, receiver);\n }\n });\n}\nfunction throttle(func, wait, options = {}) {\n let timeout = null;\n let previous = 0;\n return function(...args) {\n const now = Date.now();\n if (!previous && options.leading === false) {\n previous = now;\n }\n const remaining = wait - (now - previous);\n const context = this;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n func.apply(context, args);\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(() => {\n previous = options.leading === false ? 0 : Date.now();\n timeout = null;\n func.apply(context, args);\n }, remaining);\n }\n };\n}\nfunction hookSetter(target, key, d, isRevoked, win = window) {\n const original = win.Object.getOwnPropertyDescriptor(target, key);\n win.Object.defineProperty(\n target,\n key,\n isRevoked ? d : {\n set(value) {\n setTimeout(() => {\n d.set.call(this, value);\n }, 0);\n if (original && original.set) {\n original.set.call(this, value);\n }\n }\n }\n );\n return () => hookSetter(target, key, original || {}, true);\n}\nfunction patch(source, name, replacement) {\n try {\n if (!(name in source)) {\n return () => {\n };\n }\n const original = source[name];\n const wrapped = replacement(original);\n if (typeof wrapped === \"function\") {\n wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __rrweb_original__: {\n enumerable: false,\n value: original\n }\n });\n }\n source[name] = wrapped;\n return () => {\n source[name] = original;\n };\n } catch {\n return () => {\n };\n }\n}\nlet nowTimestamp = Date.now;\nif (!/* @__PURE__ */ /[1-9][0-9]{12}/.test(Date.now().toString())) {\n nowTimestamp = () => (/* @__PURE__ */ new Date()).getTime();\n}\nfunction getWindowScroll(win) {\n var _a2, _b, _c, _d;\n const doc = win.document;\n return {\n left: doc.scrollingElement ? doc.scrollingElement.scrollLeft : win.pageXOffset !== void 0 ? win.pageXOffset : doc.documentElement.scrollLeft || (doc == null ? void 0 : doc.body) && ((_a2 = index.parentElement(doc.body)) == null ? void 0 : _a2.scrollLeft) || ((_b = doc == null ? void 0 : doc.body) == null ? void 0 : _b.scrollLeft) || 0,\n top: doc.scrollingElement ? doc.scrollingElement.scrollTop : win.pageYOffset !== void 0 ? win.pageYOffset : (doc == null ? void 0 : doc.documentElement.scrollTop) || (doc == null ? void 0 : doc.body) && ((_c = index.parentElement(doc.body)) == null ? void 0 : _c.scrollTop) || ((_d = doc == null ? void 0 : doc.body) == null ? void 0 : _d.scrollTop) || 0\n };\n}\nfunction getWindowHeight() {\n return window.innerHeight || document.documentElement && document.documentElement.clientHeight || document.body && document.body.clientHeight;\n}\nfunction getWindowWidth() {\n return window.innerWidth || document.documentElement && document.documentElement.clientWidth || document.body && document.body.clientWidth;\n}\nfunction closestElementOfNode(node2) {\n if (!node2) {\n return null;\n }\n const el = node2.nodeType === node2.ELEMENT_NODE ? node2 : index.parentElement(node2);\n return el;\n}\nfunction isBlocked(node2, blockClass, blockSelector, checkAncestors) {\n if (!node2) {\n return false;\n }\n const el = closestElementOfNode(node2);\n if (!el) {\n return false;\n }\n try {\n if (typeof blockClass === \"string\") {\n if (el.classList.contains(blockClass)) return true;\n if (checkAncestors && el.closest(\".\" + blockClass) !== null) return true;\n } else {\n if (classMatchesRegex(el, blockClass, checkAncestors)) return true;\n }\n } catch (e2) {\n }\n if (blockSelector) {\n if (el.matches(blockSelector)) return true;\n if (checkAncestors && el.closest(blockSelector) !== null) return true;\n }\n return false;\n}\nfunction isSerialized(n2, mirror2) {\n return mirror2.getId(n2) !== -1;\n}\nfunction isIgnored(n2, mirror2, slimDOMOptions) {\n if (n2.tagName === \"TITLE\" && slimDOMOptions.headTitleMutations) {\n return true;\n }\n return mirror2.getId(n2) === IGNORED_NODE;\n}\nfunction isAncestorRemoved(target, mirror2) {\n if (isShadowRoot(target)) {\n return false;\n }\n const id = mirror2.getId(target);\n if (!mirror2.has(id)) {\n return true;\n }\n const parent = index.parentNode(target);\n if (parent && parent.nodeType === target.DOCUMENT_NODE) {\n return false;\n }\n if (!parent) {\n return true;\n }\n return isAncestorRemoved(parent, mirror2);\n}\nfunction legacy_isTouchEvent(event) {\n return Boolean(event.changedTouches);\n}\nfunction polyfill$1(win = window) {\n if (\"NodeList\" in win && !win.NodeList.prototype.forEach) {\n win.NodeList.prototype.forEach = Array.prototype.forEach;\n }\n if (\"DOMTokenList\" in win && !win.DOMTokenList.prototype.forEach) {\n win.DOMTokenList.prototype.forEach = Array.prototype.forEach;\n }\n}\nfunction isSerializedIframe(n2, mirror2) {\n return Boolean(n2.nodeName === \"IFRAME\" && mirror2.getMeta(n2));\n}\nfunction isSerializedStylesheet(n2, mirror2) {\n return Boolean(\n n2.nodeName === \"LINK\" && n2.nodeType === n2.ELEMENT_NODE && n2.getAttribute && n2.getAttribute(\"rel\") === \"stylesheet\" && mirror2.getMeta(n2)\n );\n}\nfunction hasShadowRoot(n2) {\n if (!n2) return false;\n if (n2 instanceof BaseRRNode && \"shadowRoot\" in n2) {\n return Boolean(n2.shadowRoot);\n }\n return Boolean(index.shadowRoot(n2));\n}\nclass StyleSheetMirror {\n constructor() {\n __publicField(this, \"id\", 1);\n __publicField(this, \"styleIDMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"idStyleMap\", /* @__PURE__ */ new Map());\n }\n getId(stylesheet) {\n return this.styleIDMap.get(stylesheet) ?? -1;\n }\n has(stylesheet) {\n return this.styleIDMap.has(stylesheet);\n }\n /**\n * @returns If the stylesheet is in the mirror, returns the id of the stylesheet. If not, return the new assigned id.\n */\n add(stylesheet, id) {\n if (this.has(stylesheet)) return this.getId(stylesheet);\n let newId;\n if (id === void 0) {\n newId = this.id++;\n } else newId = id;\n this.styleIDMap.set(stylesheet, newId);\n this.idStyleMap.set(newId, stylesheet);\n return newId;\n }\n getStyle(id) {\n return this.idStyleMap.get(id) || null;\n }\n reset() {\n this.styleIDMap = /* @__PURE__ */ new WeakMap();\n this.idStyleMap = /* @__PURE__ */ new Map();\n this.id = 1;\n }\n generateId() {\n return this.id++;\n }\n}\nfunction getShadowHost(n2) {\n var _a2;\n let shadowHost = null;\n if (\"getRootNode\" in n2 && ((_a2 = index.getRootNode(n2)) == null ? void 0 : _a2.nodeType) === Node.DOCUMENT_FRAGMENT_NODE && index.host(index.getRootNode(n2)))\n shadowHost = index.host(index.getRootNode(n2));\n return shadowHost;\n}\nfunction getRootShadowHost(n2) {\n let rootShadowHost = n2;\n let shadowHost;\n while (shadowHost = getShadowHost(rootShadowHost))\n rootShadowHost = shadowHost;\n return rootShadowHost;\n}\nfunction shadowHostInDom(n2) {\n const doc = n2.ownerDocument;\n if (!doc) return false;\n const shadowHost = getRootShadowHost(n2);\n return index.contains(doc, shadowHost);\n}\nfunction inDom(n2) {\n const doc = n2.ownerDocument;\n if (!doc) return false;\n return index.contains(doc, n2) || shadowHostInDom(n2);\n}\nvar EventType = /* @__PURE__ */ ((EventType2) => {\n EventType2[EventType2[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n EventType2[EventType2[\"Load\"] = 1] = \"Load\";\n EventType2[EventType2[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n EventType2[EventType2[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n EventType2[EventType2[\"Meta\"] = 4] = \"Meta\";\n EventType2[EventType2[\"Custom\"] = 5] = \"Custom\";\n EventType2[EventType2[\"Plugin\"] = 6] = \"Plugin\";\n return EventType2;\n})(EventType || {});\nvar IncrementalSource = /* @__PURE__ */ ((IncrementalSource2) => {\n IncrementalSource2[IncrementalSource2[\"Mutation\"] = 0] = \"Mutation\";\n IncrementalSource2[IncrementalSource2[\"MouseMove\"] = 1] = \"MouseMove\";\n IncrementalSource2[IncrementalSource2[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n IncrementalSource2[IncrementalSource2[\"Scroll\"] = 3] = \"Scroll\";\n IncrementalSource2[IncrementalSource2[\"ViewportResize\"] = 4] = \"ViewportResize\";\n IncrementalSource2[IncrementalSource2[\"Input\"] = 5] = \"Input\";\n IncrementalSource2[IncrementalSource2[\"TouchMove\"] = 6] = \"TouchMove\";\n IncrementalSource2[IncrementalSource2[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n IncrementalSource2[IncrementalSource2[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n IncrementalSource2[IncrementalSource2[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n IncrementalSource2[IncrementalSource2[\"Font\"] = 10] = \"Font\";\n IncrementalSource2[IncrementalSource2[\"Log\"] = 11] = \"Log\";\n IncrementalSource2[IncrementalSource2[\"Drag\"] = 12] = \"Drag\";\n IncrementalSource2[IncrementalSource2[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n IncrementalSource2[IncrementalSource2[\"Selection\"] = 14] = \"Selection\";\n IncrementalSource2[IncrementalSource2[\"AdoptedStyleSheet\"] = 15] = \"AdoptedStyleSheet\";\n IncrementalSource2[IncrementalSource2[\"CustomElement\"] = 16] = \"CustomElement\";\n return IncrementalSource2;\n})(IncrementalSource || {});\nvar MouseInteractions = /* @__PURE__ */ ((MouseInteractions2) => {\n MouseInteractions2[MouseInteractions2[\"MouseUp\"] = 0] = \"MouseUp\";\n MouseInteractions2[MouseInteractions2[\"MouseDown\"] = 1] = \"MouseDown\";\n MouseInteractions2[MouseInteractions2[\"Click\"] = 2] = \"Click\";\n MouseInteractions2[MouseInteractions2[\"ContextMenu\"] = 3] = \"ContextMenu\";\n MouseInteractions2[MouseInteractions2[\"DblClick\"] = 4] = \"DblClick\";\n MouseInteractions2[MouseInteractions2[\"Focus\"] = 5] = \"Focus\";\n MouseInteractions2[MouseInteractions2[\"Blur\"] = 6] = \"Blur\";\n MouseInteractions2[MouseInteractions2[\"TouchStart\"] = 7] = \"TouchStart\";\n MouseInteractions2[MouseInteractions2[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n MouseInteractions2[MouseInteractions2[\"TouchEnd\"] = 9] = \"TouchEnd\";\n MouseInteractions2[MouseInteractions2[\"TouchCancel\"] = 10] = \"TouchCancel\";\n return MouseInteractions2;\n})(MouseInteractions || {});\nvar PointerTypes = /* @__PURE__ */ ((PointerTypes2) => {\n PointerTypes2[PointerTypes2[\"Mouse\"] = 0] = \"Mouse\";\n PointerTypes2[PointerTypes2[\"Pen\"] = 1] = \"Pen\";\n PointerTypes2[PointerTypes2[\"Touch\"] = 2] = \"Touch\";\n return PointerTypes2;\n})(PointerTypes || {});\nvar CanvasContext = /* @__PURE__ */ ((CanvasContext2) => {\n CanvasContext2[CanvasContext2[\"2D\"] = 0] = \"2D\";\n CanvasContext2[CanvasContext2[\"WebGL\"] = 1] = \"WebGL\";\n CanvasContext2[CanvasContext2[\"WebGL2\"] = 2] = \"WebGL2\";\n return CanvasContext2;\n})(CanvasContext || {});\nvar MediaInteractions = /* @__PURE__ */ ((MediaInteractions2) => {\n MediaInteractions2[MediaInteractions2[\"Play\"] = 0] = \"Play\";\n MediaInteractions2[MediaInteractions2[\"Pause\"] = 1] = \"Pause\";\n MediaInteractions2[MediaInteractions2[\"Seeked\"] = 2] = \"Seeked\";\n MediaInteractions2[MediaInteractions2[\"VolumeChange\"] = 3] = \"VolumeChange\";\n MediaInteractions2[MediaInteractions2[\"RateChange\"] = 4] = \"RateChange\";\n return MediaInteractions2;\n})(MediaInteractions || {});\nvar NodeType = /* @__PURE__ */ ((NodeType2) => {\n NodeType2[NodeType2[\"Document\"] = 0] = \"Document\";\n NodeType2[NodeType2[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType2[NodeType2[\"Element\"] = 2] = \"Element\";\n NodeType2[NodeType2[\"Text\"] = 3] = \"Text\";\n NodeType2[NodeType2[\"CDATA\"] = 4] = \"CDATA\";\n NodeType2[NodeType2[\"Comment\"] = 5] = \"Comment\";\n return NodeType2;\n})(NodeType || {});\nfunction isNodeInLinkedList(n2) {\n return \"__ln\" in n2;\n}\nclass DoubleLinkedList {\n constructor() {\n __publicField(this, \"length\", 0);\n __publicField(this, \"head\", null);\n __publicField(this, \"tail\", null);\n }\n get(position) {\n if (position >= this.length) {\n throw new Error(\"Position outside of list range\");\n }\n let current = this.head;\n for (let index2 = 0; index2 < position; index2++) {\n current = (current == null ? void 0 : current.next) || null;\n }\n return current;\n }\n addNode(n2) {\n const node2 = {\n value: n2,\n previous: null,\n next: null\n };\n n2.__ln = node2;\n if (n2.previousSibling && isNodeInLinkedList(n2.previousSibling)) {\n const current = n2.previousSibling.__ln.next;\n node2.next = current;\n node2.previous = n2.previousSibling.__ln;\n n2.previousSibling.__ln.next = node2;\n if (current) {\n current.previous = node2;\n }\n } else if (n2.nextSibling && isNodeInLinkedList(n2.nextSibling) && n2.nextSibling.__ln.previous) {\n const current = n2.nextSibling.__ln.previous;\n node2.previous = current;\n node2.next = n2.nextSibling.__ln;\n n2.nextSibling.__ln.previous = node2;\n if (current) {\n current.next = node2;\n }\n } else {\n if (this.head) {\n this.head.previous = node2;\n }\n node2.next = this.head;\n this.head = node2;\n }\n if (node2.next === null) {\n this.tail = node2;\n }\n this.length++;\n }\n removeNode(n2) {\n const current = n2.__ln;\n if (!this.head) {\n return;\n }\n if (!current.previous) {\n this.head = current.next;\n if (this.head) {\n this.head.previous = null;\n } else {\n this.tail = null;\n }\n } else {\n current.previous.next = current.next;\n if (current.next) {\n current.next.previous = current.previous;\n } else {\n this.tail = current.previous;\n }\n }\n if (n2.__ln) {\n delete n2.__ln;\n }\n this.length--;\n }\n}\nconst moveKey = (id, parentId) => `${id}@${parentId}`;\nclass MutationBuffer {\n constructor() {\n __publicField(this, \"frozen\", false);\n __publicField(this, \"locked\", false);\n __publicField(this, \"texts\", []);\n __publicField(this, \"attributes\", []);\n __publicField(this, \"attributeMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"removes\", []);\n __publicField(this, \"mapRemoves\", []);\n __publicField(this, \"movedMap\", {});\n __publicField(this, \"addedSet\", /* @__PURE__ */ new Set());\n __publicField(this, \"movedSet\", /* @__PURE__ */ new Set());\n __publicField(this, \"droppedSet\", /* @__PURE__ */ new Set());\n __publicField(this, \"removesSubTreeCache\", /* @__PURE__ */ new Set());\n __publicField(this, \"mutationCb\");\n __publicField(this, \"blockClass\");\n __publicField(this, \"blockSelector\");\n __publicField(this, \"maskTextClass\");\n __publicField(this, \"maskTextSelector\");\n __publicField(this, \"inlineStylesheet\");\n __publicField(this, \"maskInputOptions\");\n __publicField(this, \"maskTextFn\");\n __publicField(this, \"maskInputFn\");\n __publicField(this, \"keepIframeSrcFn\");\n __publicField(this, \"recordCanvas\");\n __publicField(this, \"inlineImages\");\n __publicField(this, \"slimDOMOptions\");\n __publicField(this, \"dataURLOptions\");\n __publicField(this, \"doc\");\n __publicField(this, \"mirror\");\n __publicField(this, \"iframeManager\");\n __publicField(this, \"stylesheetManager\");\n __publicField(this, \"shadowDomManager\");\n __publicField(this, \"canvasManager\");\n __publicField(this, \"processedNodeManager\");\n __publicField(this, \"unattachedDoc\");\n __publicField(this, \"processMutations\", (mutations) => {\n mutations.forEach(this.processMutation);\n this.emit();\n });\n __publicField(this, \"emit\", () => {\n if (this.frozen || this.locked) {\n return;\n }\n const adds = [];\n const addedIds = /* @__PURE__ */ new Set();\n const addList = new DoubleLinkedList();\n const getNextId = (n2) => {\n let ns = n2;\n let nextId = IGNORED_NODE;\n while (nextId === IGNORED_NODE) {\n ns = ns && ns.nextSibling;\n nextId = ns && this.mirror.getId(ns);\n }\n return nextId;\n };\n const pushAdd = (n2) => {\n const parent = index.parentNode(n2);\n if (!parent || !inDom(n2)) {\n return;\n }\n let cssCaptured = false;\n if (n2.nodeType === Node.TEXT_NODE) {\n const parentTag = parent.tagName;\n if (parentTag === \"TEXTAREA\") {\n return;\n } else if (parentTag === \"STYLE\" && this.addedSet.has(parent)) {\n cssCaptured = true;\n }\n }\n const parentId = isShadowRoot(parent) ? this.mirror.getId(getShadowHost(n2)) : this.mirror.getId(parent);\n const nextId = getNextId(n2);\n if (parentId === -1 || nextId === -1) {\n return addList.addNode(n2);\n }\n const sn = serializeNodeWithId(n2, {\n doc: this.doc,\n mirror: this.mirror,\n blockClass: this.blockClass,\n blockSelector: this.blockSelector,\n maskTextClass: this.maskTextClass,\n maskTextSelector: this.maskTextSelector,\n skipChild: true,\n newlyAddedElement: true,\n inlineStylesheet: this.inlineStylesheet,\n maskInputOptions: this.maskInputOptions,\n maskTextFn: this.maskTextFn,\n maskInputFn: this.maskInputFn,\n slimDOMOptions: this.slimDOMOptions,\n dataURLOptions: this.dataURLOptions,\n recordCanvas: this.recordCanvas,\n inlineImages: this.inlineImages,\n onSerialize: (currentN) => {\n if (isSerializedIframe(currentN, this.mirror)) {\n this.iframeManager.addIframe(currentN);\n }\n if (isSerializedStylesheet(currentN, this.mirror)) {\n this.stylesheetManager.trackLinkElement(\n currentN\n );\n }\n if (hasShadowRoot(n2)) {\n this.shadowDomManager.addShadowRoot(index.shadowRoot(n2), this.doc);\n }\n },\n onIframeLoad: (iframe, childSn) => {\n this.iframeManager.attachIframe(iframe, childSn);\n this.shadowDomManager.observeAttachShadow(iframe);\n },\n onStylesheetLoad: (link, childSn) => {\n this.stylesheetManager.attachLinkElement(link, childSn);\n },\n cssCaptured\n });\n if (sn) {\n adds.push({\n parentId,\n nextId,\n node: sn\n });\n addedIds.add(sn.id);\n }\n };\n while (this.mapRemoves.length) {\n this.mirror.removeNodeFromMap(this.mapRemoves.shift());\n }\n for (const n2 of this.movedSet) {\n if (isParentRemoved(this.removesSubTreeCache, n2, this.mirror) && !this.movedSet.has(index.parentNode(n2))) {\n continue;\n }\n pushAdd(n2);\n }\n for (const n2 of this.addedSet) {\n if (!isAncestorInSet(this.droppedSet, n2) && !isParentRemoved(this.removesSubTreeCache, n2, this.mirror)) {\n pushAdd(n2);\n } else if (isAncestorInSet(this.movedSet, n2)) {\n pushAdd(n2);\n } else {\n this.droppedSet.add(n2);\n }\n }\n let candidate = null;\n while (addList.length) {\n let node2 = null;\n if (candidate) {\n const parentId = this.mirror.getId(index.parentNode(candidate.value));\n const nextId = getNextId(candidate.value);\n if (parentId !== -1 && nextId !== -1) {\n node2 = candidate;\n }\n }\n if (!node2) {\n let tailNode = addList.tail;\n while (tailNode) {\n const _node = tailNode;\n tailNode = tailNode.previous;\n if (_node) {\n const parentId = this.mirror.getId(index.parentNode(_node.value));\n const nextId = getNextId(_node.value);\n if (nextId === -1) continue;\n else if (parentId !== -1) {\n node2 = _node;\n break;\n } else {\n const unhandledNode = _node.value;\n const parent = index.parentNode(unhandledNode);\n if (parent && parent.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n const shadowHost = index.host(parent);\n const parentId2 = this.mirror.getId(shadowHost);\n if (parentId2 !== -1) {\n node2 = _node;\n break;\n }\n }\n }\n }\n }\n }\n if (!node2) {\n while (addList.head) {\n addList.removeNode(addList.head.value);\n }\n break;\n }\n candidate = node2.previous;\n addList.removeNode(node2.value);\n pushAdd(node2.value);\n }\n const payload = {\n texts: this.texts.map((text) => {\n const n2 = text.node;\n const parent = index.parentNode(n2);\n if (parent && parent.tagName === \"TEXTAREA\") {\n this.genTextAreaValueMutation(parent);\n }\n return {\n id: this.mirror.getId(n2),\n value: text.value\n };\n }).filter((text) => !addedIds.has(text.id)).filter((text) => this.mirror.has(text.id)),\n attributes: this.attributes.map((attribute) => {\n const { attributes } = attribute;\n if (typeof attributes.style === \"string\") {\n const diffAsStr = JSON.stringify(attribute.styleDiff);\n const unchangedAsStr = JSON.stringify(attribute._unchangedStyles);\n if (diffAsStr.length < attributes.style.length) {\n if ((diffAsStr + unchangedAsStr).split(\"var(\").length === attributes.style.split(\"var(\").length) {\n attributes.style = attribute.styleDiff;\n }\n }\n }\n return {\n id: this.mirror.getId(attribute.node),\n attributes\n };\n }).filter((attribute) => !addedIds.has(attribute.id)).filter((attribute) => this.mirror.has(attribute.id)),\n removes: this.removes,\n adds\n };\n if (!payload.texts.length && !payload.attributes.length && !payload.removes.length && !payload.adds.length) {\n return;\n }\n this.texts = [];\n this.attributes = [];\n this.attributeMap = /* @__PURE__ */ new WeakMap();\n this.removes = [];\n this.addedSet = /* @__PURE__ */ new Set();\n this.movedSet = /* @__PURE__ */ new Set();\n this.droppedSet = /* @__PURE__ */ new Set();\n this.removesSubTreeCache = /* @__PURE__ */ new Set();\n this.movedMap = {};\n this.mutationCb(payload);\n });\n __publicField(this, \"genTextAreaValueMutation\", (textarea) => {\n let item = this.attributeMap.get(textarea);\n if (!item) {\n item = {\n node: textarea,\n attributes: {},\n styleDiff: {},\n _unchangedStyles: {}\n };\n this.attributes.push(item);\n this.attributeMap.set(textarea, item);\n }\n item.attributes.value = Array.from(\n index.childNodes(textarea),\n (cn) => index.textContent(cn) || \"\"\n ).join(\"\");\n });\n __publicField(this, \"processMutation\", (m) => {\n if (isIgnored(m.target, this.mirror, this.slimDOMOptions)) {\n return;\n }\n switch (m.type) {\n case \"characterData\": {\n const value = index.textContent(m.target);\n if (!isBlocked(m.target, this.blockClass, this.blockSelector, false) && value !== m.oldValue) {\n this.texts.push({\n value: needMaskingText(\n m.target,\n this.maskTextClass,\n this.maskTextSelector,\n true\n // checkAncestors\n ) && value ? this.maskTextFn ? this.maskTextFn(value, closestElementOfNode(m.target)) : value.replace(/[\\S]/g, \"*\") : value,\n node: m.target\n });\n }\n break;\n }\n case \"attributes\": {\n const target = m.target;\n let attributeName = m.attributeName;\n let value = m.target.getAttribute(attributeName);\n if (attributeName === \"value\") {\n const type = getInputType(target);\n value = maskInputValue({\n element: target,\n maskInputOptions: this.maskInputOptions,\n tagName: target.tagName,\n type,\n value,\n maskInputFn: this.maskInputFn\n });\n }\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) || value === m.oldValue) {\n return;\n }\n let item = this.attributeMap.get(m.target);\n if (target.tagName === \"IFRAME\" && attributeName === \"src\" && !this.keepIframeSrcFn(value)) {\n if (!target.contentDocument) {\n attributeName = \"rr_src\";\n } else {\n return;\n }\n }\n if (!item) {\n item = {\n node: m.target,\n attributes: {},\n styleDiff: {},\n _unchangedStyles: {}\n };\n this.attributes.push(item);\n this.attributeMap.set(m.target, item);\n }\n if (attributeName === \"type\" && target.tagName === \"INPUT\" && (m.oldValue || \"\").toLowerCase() === \"password\") {\n target.setAttribute(\"data-rr-is-password\", \"true\");\n }\n if (!ignoreAttribute(target.tagName, attributeName)) {\n item.attributes[attributeName] = transformAttribute(\n this.doc,\n toLowerCase(target.tagName),\n toLowerCase(attributeName),\n value\n );\n if (attributeName === \"style\") {\n if (!this.unattachedDoc) {\n try {\n this.unattachedDoc = document.implementation.createHTMLDocument();\n } catch (e2) {\n this.unattachedDoc = this.doc;\n }\n }\n const old = this.unattachedDoc.createElement(\"span\");\n if (m.oldValue) {\n old.setAttribute(\"style\", m.oldValue);\n }\n for (const pname of Array.from(target.style)) {\n const newValue = target.style.getPropertyValue(pname);\n const newPriority = target.style.getPropertyPriority(pname);\n if (newValue !== old.style.getPropertyValue(pname) || newPriority !== old.style.getPropertyPriority(pname)) {\n if (newPriority === \"\") {\n item.styleDiff[pname] = newValue;\n } else {\n item.styleDiff[pname] = [newValue, newPriority];\n }\n } else {\n item._unchangedStyles[pname] = [newValue, newPriority];\n }\n }\n for (const pname of Array.from(old.style)) {\n if (target.style.getPropertyValue(pname) === \"\") {\n item.styleDiff[pname] = false;\n }\n }\n } else if (attributeName === \"open\" && target.tagName === \"DIALOG\") {\n if (target.matches(\"dialog:modal\")) {\n item.attributes[\"rr_open_mode\"] = \"modal\";\n } else {\n item.attributes[\"rr_open_mode\"] = \"non-modal\";\n }\n }\n }\n break;\n }\n case \"childList\": {\n if (isBlocked(m.target, this.blockClass, this.blockSelector, true))\n return;\n if (m.target.tagName === \"TEXTAREA\") {\n this.genTextAreaValueMutation(m.target);\n return;\n }\n m.addedNodes.forEach((n2) => this.genAdds(n2, m.target));\n m.removedNodes.forEach((n2) => {\n const nodeId = this.mirror.getId(n2);\n const parentId = isShadowRoot(m.target) ? this.mirror.getId(index.host(m.target)) : this.mirror.getId(m.target);\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) || isIgnored(n2, this.mirror, this.slimDOMOptions) || !isSerialized(n2, this.mirror)) {\n return;\n }\n if (this.addedSet.has(n2)) {\n deepDelete(this.addedSet, n2);\n this.droppedSet.add(n2);\n } else if (this.addedSet.has(m.target) && nodeId === -1) ;\n else if (isAncestorRemoved(m.target, this.mirror)) ;\n else if (this.movedSet.has(n2) && this.movedMap[moveKey(nodeId, parentId)]) {\n deepDelete(this.movedSet, n2);\n } else {\n this.removes.push({\n parentId,\n id: nodeId,\n isShadow: isShadowRoot(m.target) && isNativeShadowDom(m.target) ? true : void 0\n });\n processRemoves(n2, this.removesSubTreeCache);\n }\n this.mapRemoves.push(n2);\n });\n break;\n }\n }\n });\n __publicField(this, \"genAdds\", (n2, target) => {\n if (this.processedNodeManager.inOtherBuffer(n2, this)) return;\n if (this.addedSet.has(n2) || this.movedSet.has(n2)) return;\n if (this.mirror.hasNode(n2)) {\n if (isIgnored(n2, this.mirror, this.slimDOMOptions)) {\n return;\n }\n this.movedSet.add(n2);\n let targetId = null;\n if (target && this.mirror.hasNode(target)) {\n targetId = this.mirror.getId(target);\n }\n if (targetId && targetId !== -1) {\n this.movedMap[moveKey(this.mirror.getId(n2), targetId)] = true;\n }\n } else {\n this.addedSet.add(n2);\n this.droppedSet.delete(n2);\n }\n if (!isBlocked(n2, this.blockClass, this.blockSelector, false)) {\n index.childNodes(n2).forEach((childN) => this.genAdds(childN));\n if (hasShadowRoot(n2)) {\n index.childNodes(index.shadowRoot(n2)).forEach((childN) => {\n this.processedNodeManager.add(childN, this);\n this.genAdds(childN, n2);\n });\n }\n }\n });\n }\n init(options) {\n [\n \"mutationCb\",\n \"blockClass\",\n \"blockSelector\",\n \"maskTextClass\",\n \"maskTextSelector\",\n \"inlineStylesheet\",\n \"maskInputOptions\",\n \"maskTextFn\",\n \"maskInputFn\",\n \"keepIframeSrcFn\",\n \"recordCanvas\",\n \"inlineImages\",\n \"slimDOMOptions\",\n \"dataURLOptions\",\n \"doc\",\n \"mirror\",\n \"iframeManager\",\n \"stylesheetManager\",\n \"shadowDomManager\",\n \"canvasManager\",\n \"processedNodeManager\"\n ].forEach((key) => {\n this[key] = options[key];\n });\n }\n freeze() {\n this.frozen = true;\n this.canvasManager.freeze();\n }\n unfreeze() {\n this.frozen = false;\n this.canvasManager.unfreeze();\n this.emit();\n }\n isFrozen() {\n return this.frozen;\n }\n lock() {\n this.locked = true;\n this.canvasManager.lock();\n }\n unlock() {\n this.locked = false;\n this.canvasManager.unlock();\n this.emit();\n }\n reset() {\n this.shadowDomManager.reset();\n this.canvasManager.reset();\n }\n}\nfunction deepDelete(addsSet, n2) {\n addsSet.delete(n2);\n index.childNodes(n2).forEach((childN) => deepDelete(addsSet, childN));\n}\nfunction processRemoves(n2, cache) {\n const queue = [n2];\n while (queue.length) {\n const next = queue.pop();\n if (cache.has(next)) continue;\n cache.add(next);\n index.childNodes(next).forEach((n22) => queue.push(n22));\n }\n return;\n}\nfunction isParentRemoved(removes, n2, mirror2) {\n if (removes.size === 0) return false;\n return _isParentRemoved(removes, n2);\n}\nfunction _isParentRemoved(removes, n2, _mirror2) {\n const node2 = index.parentNode(n2);\n if (!node2) return false;\n return removes.has(node2);\n}\nfunction isAncestorInSet(set, n2) {\n if (set.size === 0) return false;\n return _isAncestorInSet(set, n2);\n}\nfunction _isAncestorInSet(set, n2) {\n const parent = index.parentNode(n2);\n if (!parent) {\n return false;\n }\n if (set.has(parent)) {\n return true;\n }\n return _isAncestorInSet(set, parent);\n}\nlet errorHandler;\nfunction registerErrorHandler(handler) {\n errorHandler = handler;\n}\nfunction unregisterErrorHandler() {\n errorHandler = void 0;\n}\nconst callbackWrapper = (cb) => {\n if (!errorHandler) {\n return cb;\n }\n const rrwebWrapped = (...rest) => {\n try {\n return cb(...rest);\n } catch (error) {\n if (errorHandler && errorHandler(error) === true) {\n return;\n }\n throw error;\n }\n };\n return rrwebWrapped;\n};\nconst mutationBuffers = [];\nfunction getEventTarget(event) {\n try {\n if (\"composedPath\" in event) {\n const path = event.composedPath();\n if (path.length) {\n return path[0];\n }\n } else if (\"path\" in event && event.path.length) {\n return event.path[0];\n }\n } catch {\n }\n return event && event.target;\n}\nfunction initMutationObserver(options, rootEl) {\n const mutationBuffer = new MutationBuffer();\n mutationBuffers.push(mutationBuffer);\n mutationBuffer.init(options);\n const observer = new (mutationObserverCtor())(\n callbackWrapper(mutationBuffer.processMutations.bind(mutationBuffer))\n );\n observer.observe(rootEl, {\n attributes: true,\n attributeOldValue: true,\n characterData: true,\n characterDataOldValue: true,\n childList: true,\n subtree: true\n });\n return observer;\n}\nfunction initMoveObserver({\n mousemoveCb,\n sampling,\n doc,\n mirror: mirror2\n}) {\n if (sampling.mousemove === false) {\n return () => {\n };\n }\n const threshold = typeof sampling.mousemove === \"number\" ? sampling.mousemove : 50;\n const callbackThreshold = typeof sampling.mousemoveCallback === \"number\" ? sampling.mousemoveCallback : 500;\n let positions = [];\n let timeBaseline;\n const wrappedCb = throttle(\n callbackWrapper(\n (source) => {\n const totalOffset = Date.now() - timeBaseline;\n mousemoveCb(\n positions.map((p) => {\n p.timeOffset -= totalOffset;\n return p;\n }),\n source\n );\n positions = [];\n timeBaseline = null;\n }\n ),\n callbackThreshold\n );\n const updatePosition = callbackWrapper(\n throttle(\n callbackWrapper((evt) => {\n const target = getEventTarget(evt);\n const { clientX, clientY } = legacy_isTouchEvent(evt) ? evt.changedTouches[0] : evt;\n if (!timeBaseline) {\n timeBaseline = nowTimestamp();\n }\n positions.push({\n x: clientX,\n y: clientY,\n id: mirror2.getId(target),\n timeOffset: nowTimestamp() - timeBaseline\n });\n wrappedCb(\n typeof DragEvent !== \"undefined\" && evt instanceof DragEvent ? IncrementalSource.Drag : evt instanceof MouseEvent ? IncrementalSource.MouseMove : IncrementalSource.TouchMove\n );\n }),\n threshold,\n {\n trailing: false\n }\n )\n );\n const handlers = [\n on(\"mousemove\", updatePosition, doc),\n on(\"touchmove\", updatePosition, doc),\n on(\"drag\", updatePosition, doc)\n ];\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initMouseInteractionObserver({\n mouseInteractionCb,\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n sampling\n}) {\n if (sampling.mouseInteraction === false) {\n return () => {\n };\n }\n const disableMap = sampling.mouseInteraction === true || sampling.mouseInteraction === void 0 ? {} : sampling.mouseInteraction;\n const handlers = [];\n let currentPointerType = null;\n const getHandler = (eventKey) => {\n return (event) => {\n const target = getEventTarget(event);\n if (isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n let pointerType = null;\n let thisEventKey = eventKey;\n if (\"pointerType\" in event) {\n switch (event.pointerType) {\n case \"mouse\":\n pointerType = PointerTypes.Mouse;\n break;\n case \"touch\":\n pointerType = PointerTypes.Touch;\n break;\n case \"pen\":\n pointerType = PointerTypes.Pen;\n break;\n }\n if (pointerType === PointerTypes.Touch) {\n if (MouseInteractions[eventKey] === MouseInteractions.MouseDown) {\n thisEventKey = \"TouchStart\";\n } else if (MouseInteractions[eventKey] === MouseInteractions.MouseUp) {\n thisEventKey = \"TouchEnd\";\n }\n } else if (pointerType === PointerTypes.Pen) ;\n } else if (legacy_isTouchEvent(event)) {\n pointerType = PointerTypes.Touch;\n }\n if (pointerType !== null) {\n currentPointerType = pointerType;\n if (thisEventKey.startsWith(\"Touch\") && pointerType === PointerTypes.Touch || thisEventKey.startsWith(\"Mouse\") && pointerType === PointerTypes.Mouse) {\n pointerType = null;\n }\n } else if (MouseInteractions[eventKey] === MouseInteractions.Click) {\n pointerType = currentPointerType;\n currentPointerType = null;\n }\n const e2 = legacy_isTouchEvent(event) ? event.changedTouches[0] : event;\n if (!e2) {\n return;\n }\n const id = mirror2.getId(target);\n const { clientX, clientY } = e2;\n callbackWrapper(mouseInteractionCb)({\n type: MouseInteractions[thisEventKey],\n id,\n x: clientX,\n y: clientY,\n ...pointerType !== null && { pointerType }\n });\n };\n };\n Object.keys(MouseInteractions).filter(\n (key) => Number.isNaN(Number(key)) && !key.endsWith(\"_Departed\") && disableMap[key] !== false\n ).forEach((eventKey) => {\n let eventName = toLowerCase(eventKey);\n const handler = getHandler(eventKey);\n if (window.PointerEvent) {\n switch (MouseInteractions[eventKey]) {\n case MouseInteractions.MouseDown:\n case MouseInteractions.MouseUp:\n eventName = eventName.replace(\n \"mouse\",\n \"pointer\"\n );\n break;\n case MouseInteractions.TouchStart:\n case MouseInteractions.TouchEnd:\n return;\n }\n }\n handlers.push(on(eventName, handler, doc));\n });\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initScrollObserver({\n scrollCb,\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n sampling\n}) {\n const updatePosition = callbackWrapper(\n throttle(\n callbackWrapper((evt) => {\n const target = getEventTarget(evt);\n if (!target || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n const id = mirror2.getId(target);\n if (target === doc && doc.defaultView) {\n const scrollLeftTop = getWindowScroll(doc.defaultView);\n scrollCb({\n id,\n x: scrollLeftTop.left,\n y: scrollLeftTop.top\n });\n } else {\n scrollCb({\n id,\n x: target.scrollLeft,\n y: target.scrollTop\n });\n }\n }),\n sampling.scroll || 100\n )\n );\n return on(\"scroll\", updatePosition, doc);\n}\nfunction initViewportResizeObserver({ viewportResizeCb }, { win }) {\n let lastH = -1;\n let lastW = -1;\n const updateDimension = callbackWrapper(\n throttle(\n callbackWrapper(() => {\n const height = getWindowHeight();\n const width = getWindowWidth();\n if (lastH !== height || lastW !== width) {\n viewportResizeCb({\n width: Number(width),\n height: Number(height)\n });\n lastH = height;\n lastW = width;\n }\n }),\n 200\n )\n );\n return on(\"resize\", updateDimension, win);\n}\nconst INPUT_TAGS = [\"INPUT\", \"TEXTAREA\", \"SELECT\"];\nconst lastInputValueMap = /* @__PURE__ */ new WeakMap();\nfunction initInputObserver({\n inputCb,\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n ignoreClass,\n ignoreSelector,\n maskInputOptions,\n maskInputFn,\n sampling,\n userTriggeredOnInput\n}) {\n function eventHandler(event) {\n let target = getEventTarget(event);\n const userTriggered = event.isTrusted;\n const tagName = target && target.tagName;\n if (target && tagName === \"OPTION\") {\n target = index.parentElement(target);\n }\n if (!target || !tagName || INPUT_TAGS.indexOf(tagName) < 0 || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n if (target.classList.contains(ignoreClass) || ignoreSelector && target.matches(ignoreSelector)) {\n return;\n }\n let text = target.value;\n let isChecked = false;\n const type = getInputType(target) || \"\";\n if (type === \"radio\" || type === \"checkbox\") {\n isChecked = target.checked;\n } else if (maskInputOptions[tagName.toLowerCase()] || maskInputOptions[type]) {\n text = maskInputValue({\n element: target,\n maskInputOptions,\n tagName,\n type,\n value: text,\n maskInputFn\n });\n }\n cbWithDedup(\n target,\n userTriggeredOnInput ? { text, isChecked, userTriggered } : { text, isChecked }\n );\n const name = target.name;\n if (type === \"radio\" && name && isChecked) {\n doc.querySelectorAll(`input[type=\"radio\"][name=\"${name}\"]`).forEach((el) => {\n if (el !== target) {\n const text2 = el.value;\n cbWithDedup(\n el,\n userTriggeredOnInput ? { text: text2, isChecked: !isChecked, userTriggered: false } : { text: text2, isChecked: !isChecked }\n );\n }\n });\n }\n }\n function cbWithDedup(target, v2) {\n const lastInputValue = lastInputValueMap.get(target);\n if (!lastInputValue || lastInputValue.text !== v2.text || lastInputValue.isChecked !== v2.isChecked) {\n lastInputValueMap.set(target, v2);\n const id = mirror2.getId(target);\n callbackWrapper(inputCb)({\n ...v2,\n id\n });\n }\n }\n const events = sampling.input === \"last\" ? [\"change\"] : [\"input\", \"change\"];\n const handlers = events.map(\n (eventName) => on(eventName, callbackWrapper(eventHandler), doc)\n );\n const currentWindow = doc.defaultView;\n if (!currentWindow) {\n return () => {\n handlers.forEach((h) => h());\n };\n }\n const propertyDescriptor = currentWindow.Object.getOwnPropertyDescriptor(\n currentWindow.HTMLInputElement.prototype,\n \"value\"\n );\n const hookProperties = [\n [currentWindow.HTMLInputElement.prototype, \"value\"],\n [currentWindow.HTMLInputElement.prototype, \"checked\"],\n [currentWindow.HTMLSelectElement.prototype, \"value\"],\n [currentWindow.HTMLTextAreaElement.prototype, \"value\"],\n // Some UI library use selectedIndex to set select value\n [currentWindow.HTMLSelectElement.prototype, \"selectedIndex\"],\n [currentWindow.HTMLOptionElement.prototype, \"selected\"]\n ];\n if (propertyDescriptor && propertyDescriptor.set) {\n handlers.push(\n ...hookProperties.map(\n (p) => hookSetter(\n p[0],\n p[1],\n {\n set() {\n callbackWrapper(eventHandler)({\n target: this,\n isTrusted: false\n // userTriggered to false as this could well be programmatic\n });\n }\n },\n false,\n currentWindow\n )\n )\n );\n }\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction getNestedCSSRulePositions(rule2) {\n const positions = [];\n function recurse(childRule, pos) {\n if (hasNestedCSSRule(\"CSSGroupingRule\") && childRule.parentRule instanceof CSSGroupingRule || hasNestedCSSRule(\"CSSMediaRule\") && childRule.parentRule instanceof CSSMediaRule || hasNestedCSSRule(\"CSSSupportsRule\") && childRule.parentRule instanceof CSSSupportsRule || hasNestedCSSRule(\"CSSConditionRule\") && childRule.parentRule instanceof CSSConditionRule) {\n const rules2 = Array.from(\n childRule.parentRule.cssRules\n );\n const index2 = rules2.indexOf(childRule);\n pos.unshift(index2);\n } else if (childRule.parentStyleSheet) {\n const rules2 = Array.from(childRule.parentStyleSheet.cssRules);\n const index2 = rules2.indexOf(childRule);\n pos.unshift(index2);\n }\n return pos;\n }\n return recurse(rule2, positions);\n}\nfunction getIdAndStyleId(sheet, mirror2, styleMirror) {\n let id, styleId;\n if (!sheet) return {};\n if (sheet.ownerNode) id = mirror2.getId(sheet.ownerNode);\n else styleId = styleMirror.getId(sheet);\n return {\n styleId,\n id\n };\n}\nfunction initStyleSheetObserver({ styleSheetRuleCb, mirror: mirror2, stylesheetManager }, { win }) {\n if (!win.CSSStyleSheet || !win.CSSStyleSheet.prototype) {\n return () => {\n };\n }\n const insertRule = win.CSSStyleSheet.prototype.insertRule;\n win.CSSStyleSheet.prototype.insertRule = new Proxy(insertRule, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [rule2, index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n adds: [{ rule: rule2, index: index2 }]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n win.CSSStyleSheet.prototype.addRule = function(selector, styleBlock, index2 = this.cssRules.length) {\n const rule2 = `${selector} { ${styleBlock} }`;\n return win.CSSStyleSheet.prototype.insertRule.apply(this, [rule2, index2]);\n };\n const deleteRule = win.CSSStyleSheet.prototype.deleteRule;\n win.CSSStyleSheet.prototype.deleteRule = new Proxy(deleteRule, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n removes: [{ index: index2 }]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n win.CSSStyleSheet.prototype.removeRule = function(index2) {\n return win.CSSStyleSheet.prototype.deleteRule.apply(this, [index2]);\n };\n let replace;\n if (win.CSSStyleSheet.prototype.replace) {\n replace = win.CSSStyleSheet.prototype.replace;\n win.CSSStyleSheet.prototype.replace = new Proxy(replace, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [text] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n replace: text\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n }\n let replaceSync;\n if (win.CSSStyleSheet.prototype.replaceSync) {\n replaceSync = win.CSSStyleSheet.prototype.replaceSync;\n win.CSSStyleSheet.prototype.replaceSync = new Proxy(replaceSync, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [text] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n replaceSync: text\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n }\n const supportedNestedCSSRuleTypes = {};\n if (canMonkeyPatchNestedCSSRule(\"CSSGroupingRule\")) {\n supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\n } else {\n if (canMonkeyPatchNestedCSSRule(\"CSSMediaRule\")) {\n supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\n }\n if (canMonkeyPatchNestedCSSRule(\"CSSConditionRule\")) {\n supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\n }\n if (canMonkeyPatchNestedCSSRule(\"CSSSupportsRule\")) {\n supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\n }\n }\n const unmodifiedFunctions = {};\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n unmodifiedFunctions[typeKey] = {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n insertRule: type.prototype.insertRule,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n deleteRule: type.prototype.deleteRule\n };\n type.prototype.insertRule = new Proxy(\n unmodifiedFunctions[typeKey].insertRule,\n {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [rule2, index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n adds: [\n {\n rule: rule2,\n index: [\n ...getNestedCSSRulePositions(thisArg),\n index2 || 0\n // defaults to 0\n ]\n }\n ]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n }\n );\n type.prototype.deleteRule = new Proxy(\n unmodifiedFunctions[typeKey].deleteRule,\n {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n removes: [\n { index: [...getNestedCSSRulePositions(thisArg), index2] }\n ]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n }\n );\n });\n return callbackWrapper(() => {\n win.CSSStyleSheet.prototype.insertRule = insertRule;\n win.CSSStyleSheet.prototype.deleteRule = deleteRule;\n replace && (win.CSSStyleSheet.prototype.replace = replace);\n replaceSync && (win.CSSStyleSheet.prototype.replaceSync = replaceSync);\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\n type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\n });\n });\n}\nfunction initAdoptedStyleSheetObserver({\n mirror: mirror2,\n stylesheetManager\n}, host2) {\n var _a2, _b, _c;\n let hostId = null;\n if (host2.nodeName === \"#document\") hostId = mirror2.getId(host2);\n else hostId = mirror2.getId(index.host(host2));\n const patchTarget = host2.nodeName === \"#document\" ? (_a2 = host2.defaultView) == null ? void 0 : _a2.Document : (_c = (_b = host2.ownerDocument) == null ? void 0 : _b.defaultView) == null ? void 0 : _c.ShadowRoot;\n const originalPropertyDescriptor = (patchTarget == null ? void 0 : patchTarget.prototype) ? Object.getOwnPropertyDescriptor(\n patchTarget == null ? void 0 : patchTarget.prototype,\n \"adoptedStyleSheets\"\n ) : void 0;\n if (hostId === null || hostId === -1 || !patchTarget || !originalPropertyDescriptor)\n return () => {\n };\n Object.defineProperty(host2, \"adoptedStyleSheets\", {\n configurable: originalPropertyDescriptor.configurable,\n enumerable: originalPropertyDescriptor.enumerable,\n get() {\n var _a3;\n return (_a3 = originalPropertyDescriptor.get) == null ? void 0 : _a3.call(this);\n },\n set(sheets) {\n var _a3;\n const result2 = (_a3 = originalPropertyDescriptor.set) == null ? void 0 : _a3.call(this, sheets);\n if (hostId !== null && hostId !== -1) {\n try {\n stylesheetManager.adoptStyleSheets(sheets, hostId);\n } catch (e2) {\n }\n }\n return result2;\n }\n });\n return callbackWrapper(() => {\n Object.defineProperty(host2, \"adoptedStyleSheets\", {\n configurable: originalPropertyDescriptor.configurable,\n enumerable: originalPropertyDescriptor.enumerable,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n get: originalPropertyDescriptor.get,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n set: originalPropertyDescriptor.set\n });\n });\n}\nfunction initStyleDeclarationObserver({\n styleDeclarationCb,\n mirror: mirror2,\n ignoreCSSAttributes,\n stylesheetManager\n}, { win }) {\n const setProperty = win.CSSStyleDeclaration.prototype.setProperty;\n win.CSSStyleDeclaration.prototype.setProperty = new Proxy(setProperty, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n var _a2;\n const [property, value, priority] = argumentsList;\n if (ignoreCSSAttributes.has(property)) {\n return setProperty.apply(thisArg, [property, value, priority]);\n }\n const { id, styleId } = getIdAndStyleId(\n (_a2 = thisArg.parentRule) == null ? void 0 : _a2.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleDeclarationCb({\n id,\n styleId,\n set: {\n property,\n value,\n priority\n },\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n index: getNestedCSSRulePositions(thisArg.parentRule)\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n const removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = new Proxy(removeProperty, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n var _a2;\n const [property] = argumentsList;\n if (ignoreCSSAttributes.has(property)) {\n return removeProperty.apply(thisArg, [property]);\n }\n const { id, styleId } = getIdAndStyleId(\n (_a2 = thisArg.parentRule) == null ? void 0 : _a2.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleDeclarationCb({\n id,\n styleId,\n remove: {\n property\n },\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n index: getNestedCSSRulePositions(thisArg.parentRule)\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n return callbackWrapper(() => {\n win.CSSStyleDeclaration.prototype.setProperty = setProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\n });\n}\nfunction initMediaInteractionObserver({\n mediaInteractionCb,\n blockClass,\n blockSelector,\n mirror: mirror2,\n sampling,\n doc\n}) {\n const handler = callbackWrapper(\n (type) => throttle(\n callbackWrapper((event) => {\n const target = getEventTarget(event);\n if (!target || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n const { currentTime, volume, muted, playbackRate, loop } = target;\n mediaInteractionCb({\n type,\n id: mirror2.getId(target),\n currentTime,\n volume,\n muted,\n playbackRate,\n loop\n });\n }),\n sampling.media || 500\n )\n );\n const handlers = [\n on(\"play\", handler(MediaInteractions.Play), doc),\n on(\"pause\", handler(MediaInteractions.Pause), doc),\n on(\"seeked\", handler(MediaInteractions.Seeked), doc),\n on(\"volumechange\", handler(MediaInteractions.VolumeChange), doc),\n on(\"ratechange\", handler(MediaInteractions.RateChange), doc)\n ];\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initFontObserver({ fontCb, doc }) {\n const win = doc.defaultView;\n if (!win) {\n return () => {\n };\n }\n const handlers = [];\n const fontMap = /* @__PURE__ */ new WeakMap();\n const originalFontFace = win.FontFace;\n win.FontFace = function FontFace2(family, source, descriptors) {\n const fontFace = new originalFontFace(family, source, descriptors);\n fontMap.set(fontFace, {\n family,\n buffer: typeof source !== \"string\",\n descriptors,\n fontSource: typeof source === \"string\" ? source : JSON.stringify(Array.from(new Uint8Array(source)))\n });\n return fontFace;\n };\n const restoreHandler = patch(\n doc.fonts,\n \"add\",\n function(original) {\n return function(fontFace) {\n setTimeout(\n callbackWrapper(() => {\n const p = fontMap.get(fontFace);\n if (p) {\n fontCb(p);\n fontMap.delete(fontFace);\n }\n }),\n 0\n );\n return original.apply(this, [fontFace]);\n };\n }\n );\n handlers.push(() => {\n win.FontFace = originalFontFace;\n });\n handlers.push(restoreHandler);\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initSelectionObserver(param) {\n const { doc, mirror: mirror2, blockClass, blockSelector, selectionCb } = param;\n let collapsed = true;\n const updateSelection = callbackWrapper(() => {\n const selection = doc.getSelection();\n if (!selection || collapsed && (selection == null ? void 0 : selection.isCollapsed)) return;\n collapsed = selection.isCollapsed || false;\n const ranges = [];\n const count = selection.rangeCount || 0;\n for (let i2 = 0; i2 < count; i2++) {\n const range = selection.getRangeAt(i2);\n const { startContainer, startOffset, endContainer, endOffset } = range;\n const blocked = isBlocked(startContainer, blockClass, blockSelector, true) || isBlocked(endContainer, blockClass, blockSelector, true);\n if (blocked) continue;\n ranges.push({\n start: mirror2.getId(startContainer),\n startOffset,\n end: mirror2.getId(endContainer),\n endOffset\n });\n }\n selectionCb({ ranges });\n });\n updateSelection();\n return on(\"selectionchange\", updateSelection);\n}\nfunction initCustomElementObserver({\n doc,\n customElementCb\n}) {\n const win = doc.defaultView;\n if (!win || !win.customElements) return () => {\n };\n const restoreHandler = patch(\n win.customElements,\n \"define\",\n function(original) {\n return function(name, constructor, options) {\n try {\n customElementCb({\n define: {\n name\n }\n });\n } catch (e2) {\n console.warn(`Custom element callback failed for ${name}`);\n }\n return original.apply(this, [name, constructor, options]);\n };\n }\n );\n return restoreHandler;\n}\nfunction mergeHooks(o2, hooks) {\n const {\n mutationCb,\n mousemoveCb,\n mouseInteractionCb,\n scrollCb,\n viewportResizeCb,\n inputCb,\n mediaInteractionCb,\n styleSheetRuleCb,\n styleDeclarationCb,\n canvasMutationCb,\n fontCb,\n selectionCb,\n customElementCb\n } = o2;\n o2.mutationCb = (...p) => {\n if (hooks.mutation) {\n hooks.mutation(...p);\n }\n mutationCb(...p);\n };\n o2.mousemoveCb = (...p) => {\n if (hooks.mousemove) {\n hooks.mousemove(...p);\n }\n mousemoveCb(...p);\n };\n o2.mouseInteractionCb = (...p) => {\n if (hooks.mouseInteraction) {\n hooks.mouseInteraction(...p);\n }\n mouseInteractionCb(...p);\n };\n o2.scrollCb = (...p) => {\n if (hooks.scroll) {\n hooks.scroll(...p);\n }\n scrollCb(...p);\n };\n o2.viewportResizeCb = (...p) => {\n if (hooks.viewportResize) {\n hooks.viewportResize(...p);\n }\n viewportResizeCb(...p);\n };\n o2.inputCb = (...p) => {\n if (hooks.input) {\n hooks.input(...p);\n }\n inputCb(...p);\n };\n o2.mediaInteractionCb = (...p) => {\n if (hooks.mediaInteaction) {\n hooks.mediaInteaction(...p);\n }\n mediaInteractionCb(...p);\n };\n o2.styleSheetRuleCb = (...p) => {\n if (hooks.styleSheetRule) {\n hooks.styleSheetRule(...p);\n }\n styleSheetRuleCb(...p);\n };\n o2.styleDeclarationCb = (...p) => {\n if (hooks.styleDeclaration) {\n hooks.styleDeclaration(...p);\n }\n styleDeclarationCb(...p);\n };\n o2.canvasMutationCb = (...p) => {\n if (hooks.canvasMutation) {\n hooks.canvasMutation(...p);\n }\n canvasMutationCb(...p);\n };\n o2.fontCb = (...p) => {\n if (hooks.font) {\n hooks.font(...p);\n }\n fontCb(...p);\n };\n o2.selectionCb = (...p) => {\n if (hooks.selection) {\n hooks.selection(...p);\n }\n selectionCb(...p);\n };\n o2.customElementCb = (...c2) => {\n if (hooks.customElement) {\n hooks.customElement(...c2);\n }\n customElementCb(...c2);\n };\n}\nfunction initObservers(o2, hooks = {}) {\n const currentWindow = o2.doc.defaultView;\n if (!currentWindow) {\n return () => {\n };\n }\n mergeHooks(o2, hooks);\n let mutationObserver;\n if (o2.recordDOM) {\n mutationObserver = initMutationObserver(o2, o2.doc);\n }\n const mousemoveHandler = initMoveObserver(o2);\n const mouseInteractionHandler = initMouseInteractionObserver(o2);\n const scrollHandler = initScrollObserver(o2);\n const viewportResizeHandler = initViewportResizeObserver(o2, {\n win: currentWindow\n });\n const inputHandler = initInputObserver(o2);\n const mediaInteractionHandler = initMediaInteractionObserver(o2);\n let styleSheetObserver = () => {\n };\n let adoptedStyleSheetObserver = () => {\n };\n let styleDeclarationObserver = () => {\n };\n let fontObserver = () => {\n };\n if (o2.recordDOM) {\n styleSheetObserver = initStyleSheetObserver(o2, { win: currentWindow });\n adoptedStyleSheetObserver = initAdoptedStyleSheetObserver(o2, o2.doc);\n styleDeclarationObserver = initStyleDeclarationObserver(o2, {\n win: currentWindow\n });\n if (o2.collectFonts) {\n fontObserver = initFontObserver(o2);\n }\n }\n const selectionObserver = initSelectionObserver(o2);\n const customElementObserver = initCustomElementObserver(o2);\n const pluginHandlers = [];\n for (const plugin3 of o2.plugins) {\n pluginHandlers.push(\n plugin3.observer(plugin3.callback, currentWindow, plugin3.options)\n );\n }\n return callbackWrapper(() => {\n mutationBuffers.forEach((b) => b.reset());\n mutationObserver == null ? void 0 : mutationObserver.disconnect();\n mousemoveHandler();\n mouseInteractionHandler();\n scrollHandler();\n viewportResizeHandler();\n inputHandler();\n mediaInteractionHandler();\n styleSheetObserver();\n adoptedStyleSheetObserver();\n styleDeclarationObserver();\n fontObserver();\n selectionObserver();\n customElementObserver();\n pluginHandlers.forEach((h) => h());\n });\n}\nfunction hasNestedCSSRule(prop) {\n return typeof window[prop] !== \"undefined\";\n}\nfunction canMonkeyPatchNestedCSSRule(prop) {\n return Boolean(\n typeof window[prop] !== \"undefined\" && // Note: Generally, this check _shouldn't_ be necessary\n // However, in some scenarios (e.g. jsdom) this can sometimes fail, so we check for it here\n window[prop].prototype && \"insertRule\" in window[prop].prototype && \"deleteRule\" in window[prop].prototype\n );\n}\nclass CrossOriginIframeMirror {\n constructor(generateIdFn) {\n __publicField(this, \"iframeIdToRemoteIdMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"iframeRemoteIdToIdMap\", /* @__PURE__ */ new WeakMap());\n this.generateIdFn = generateIdFn;\n }\n getId(iframe, remoteId, idToRemoteMap, remoteToIdMap) {\n const idToRemoteIdMap = idToRemoteMap || this.getIdToRemoteIdMap(iframe);\n const remoteIdToIdMap = remoteToIdMap || this.getRemoteIdToIdMap(iframe);\n let id = idToRemoteIdMap.get(remoteId);\n if (!id) {\n id = this.generateIdFn();\n idToRemoteIdMap.set(remoteId, id);\n remoteIdToIdMap.set(id, remoteId);\n }\n return id;\n }\n getIds(iframe, remoteId) {\n const idToRemoteIdMap = this.getIdToRemoteIdMap(iframe);\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n return remoteId.map(\n (id) => this.getId(iframe, id, idToRemoteIdMap, remoteIdToIdMap)\n );\n }\n getRemoteId(iframe, id, map) {\n const remoteIdToIdMap = map || this.getRemoteIdToIdMap(iframe);\n if (typeof id !== \"number\") return id;\n const remoteId = remoteIdToIdMap.get(id);\n if (!remoteId) return -1;\n return remoteId;\n }\n getRemoteIds(iframe, ids) {\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n return ids.map((id) => this.getRemoteId(iframe, id, remoteIdToIdMap));\n }\n reset(iframe) {\n if (!iframe) {\n this.iframeIdToRemoteIdMap = /* @__PURE__ */ new WeakMap();\n this.iframeRemoteIdToIdMap = /* @__PURE__ */ new WeakMap();\n return;\n }\n this.iframeIdToRemoteIdMap.delete(iframe);\n this.iframeRemoteIdToIdMap.delete(iframe);\n }\n getIdToRemoteIdMap(iframe) {\n let idToRemoteIdMap = this.iframeIdToRemoteIdMap.get(iframe);\n if (!idToRemoteIdMap) {\n idToRemoteIdMap = /* @__PURE__ */ new Map();\n this.iframeIdToRemoteIdMap.set(iframe, idToRemoteIdMap);\n }\n return idToRemoteIdMap;\n }\n getRemoteIdToIdMap(iframe) {\n let remoteIdToIdMap = this.iframeRemoteIdToIdMap.get(iframe);\n if (!remoteIdToIdMap) {\n remoteIdToIdMap = /* @__PURE__ */ new Map();\n this.iframeRemoteIdToIdMap.set(iframe, remoteIdToIdMap);\n }\n return remoteIdToIdMap;\n }\n}\nclass IframeManager {\n constructor(options) {\n __publicField(this, \"iframes\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"crossOriginIframeMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"crossOriginIframeMirror\", new CrossOriginIframeMirror(genId));\n __publicField(this, \"crossOriginIframeStyleMirror\");\n __publicField(this, \"crossOriginIframeRootIdMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"mirror\");\n __publicField(this, \"mutationCb\");\n __publicField(this, \"wrappedEmit\");\n __publicField(this, \"loadListener\");\n __publicField(this, \"stylesheetManager\");\n __publicField(this, \"recordCrossOriginIframes\");\n this.mutationCb = options.mutationCb;\n this.wrappedEmit = options.wrappedEmit;\n this.stylesheetManager = options.stylesheetManager;\n this.recordCrossOriginIframes = options.recordCrossOriginIframes;\n this.crossOriginIframeStyleMirror = new CrossOriginIframeMirror(\n this.stylesheetManager.styleMirror.generateId.bind(\n this.stylesheetManager.styleMirror\n )\n );\n this.mirror = options.mirror;\n if (this.recordCrossOriginIframes) {\n window.addEventListener(\"message\", this.handleMessage.bind(this));\n }\n }\n addIframe(iframeEl) {\n this.iframes.set(iframeEl, true);\n if (iframeEl.contentWindow)\n this.crossOriginIframeMap.set(iframeEl.contentWindow, iframeEl);\n }\n addLoadListener(cb) {\n this.loadListener = cb;\n }\n attachIframe(iframeEl, childSn) {\n var _a2, _b;\n this.mutationCb({\n adds: [\n {\n parentId: this.mirror.getId(iframeEl),\n nextId: null,\n node: childSn\n }\n ],\n removes: [],\n texts: [],\n attributes: [],\n isAttachIframe: true\n });\n if (this.recordCrossOriginIframes)\n (_a2 = iframeEl.contentWindow) == null ? void 0 : _a2.addEventListener(\n \"message\",\n this.handleMessage.bind(this)\n );\n (_b = this.loadListener) == null ? void 0 : _b.call(this, iframeEl);\n if (iframeEl.contentDocument && iframeEl.contentDocument.adoptedStyleSheets && iframeEl.contentDocument.adoptedStyleSheets.length > 0)\n this.stylesheetManager.adoptStyleSheets(\n iframeEl.contentDocument.adoptedStyleSheets,\n this.mirror.getId(iframeEl.contentDocument)\n );\n }\n handleMessage(message) {\n const crossOriginMessageEvent = message;\n if (crossOriginMessageEvent.data.type !== \"rrweb\" || // To filter out the rrweb messages which are forwarded by some sites.\n crossOriginMessageEvent.origin !== crossOriginMessageEvent.data.origin)\n return;\n const iframeSourceWindow = message.source;\n if (!iframeSourceWindow) return;\n const iframeEl = this.crossOriginIframeMap.get(message.source);\n if (!iframeEl) return;\n const transformedEvent = this.transformCrossOriginEvent(\n iframeEl,\n crossOriginMessageEvent.data.event\n );\n if (transformedEvent)\n this.wrappedEmit(\n transformedEvent,\n crossOriginMessageEvent.data.isCheckout\n );\n }\n transformCrossOriginEvent(iframeEl, e2) {\n var _a2;\n switch (e2.type) {\n case EventType.FullSnapshot: {\n this.crossOriginIframeMirror.reset(iframeEl);\n this.crossOriginIframeStyleMirror.reset(iframeEl);\n this.replaceIdOnNode(e2.data.node, iframeEl);\n const rootId = e2.data.node.id;\n this.crossOriginIframeRootIdMap.set(iframeEl, rootId);\n this.patchRootIdOnNode(e2.data.node, rootId);\n return {\n timestamp: e2.timestamp,\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Mutation,\n adds: [\n {\n parentId: this.mirror.getId(iframeEl),\n nextId: null,\n node: e2.data.node\n }\n ],\n removes: [],\n texts: [],\n attributes: [],\n isAttachIframe: true\n }\n };\n }\n case EventType.Meta:\n case EventType.Load:\n case EventType.DomContentLoaded: {\n return false;\n }\n case EventType.Plugin: {\n return e2;\n }\n case EventType.Custom: {\n this.replaceIds(\n e2.data.payload,\n iframeEl,\n [\"id\", \"parentId\", \"previousId\", \"nextId\"]\n );\n return e2;\n }\n case EventType.IncrementalSnapshot: {\n switch (e2.data.source) {\n case IncrementalSource.Mutation: {\n e2.data.adds.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\n \"parentId\",\n \"nextId\",\n \"previousId\"\n ]);\n this.replaceIdOnNode(n2.node, iframeEl);\n const rootId = this.crossOriginIframeRootIdMap.get(iframeEl);\n rootId && this.patchRootIdOnNode(n2.node, rootId);\n });\n e2.data.removes.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\"parentId\", \"id\"]);\n });\n e2.data.attributes.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\"id\"]);\n });\n e2.data.texts.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\"id\"]);\n });\n return e2;\n }\n case IncrementalSource.Drag:\n case IncrementalSource.TouchMove:\n case IncrementalSource.MouseMove: {\n e2.data.positions.forEach((p) => {\n this.replaceIds(p, iframeEl, [\"id\"]);\n });\n return e2;\n }\n case IncrementalSource.ViewportResize: {\n return false;\n }\n case IncrementalSource.MediaInteraction:\n case IncrementalSource.MouseInteraction:\n case IncrementalSource.Scroll:\n case IncrementalSource.CanvasMutation:\n case IncrementalSource.Input: {\n this.replaceIds(e2.data, iframeEl, [\"id\"]);\n return e2;\n }\n case IncrementalSource.StyleSheetRule:\n case IncrementalSource.StyleDeclaration: {\n this.replaceIds(e2.data, iframeEl, [\"id\"]);\n this.replaceStyleIds(e2.data, iframeEl, [\"styleId\"]);\n return e2;\n }\n case IncrementalSource.Font: {\n return e2;\n }\n case IncrementalSource.Selection: {\n e2.data.ranges.forEach((range) => {\n this.replaceIds(range, iframeEl, [\"start\", \"end\"]);\n });\n return e2;\n }\n case IncrementalSource.AdoptedStyleSheet: {\n this.replaceIds(e2.data, iframeEl, [\"id\"]);\n this.replaceStyleIds(e2.data, iframeEl, [\"styleIds\"]);\n (_a2 = e2.data.styles) == null ? void 0 : _a2.forEach((style) => {\n this.replaceStyleIds(style, iframeEl, [\"styleId\"]);\n });\n return e2;\n }\n }\n }\n }\n return false;\n }\n replace(iframeMirror, obj, iframeEl, keys) {\n for (const key of keys) {\n if (!Array.isArray(obj[key]) && typeof obj[key] !== \"number\") continue;\n if (Array.isArray(obj[key])) {\n obj[key] = iframeMirror.getIds(\n iframeEl,\n obj[key]\n );\n } else {\n obj[key] = iframeMirror.getId(iframeEl, obj[key]);\n }\n }\n return obj;\n }\n replaceIds(obj, iframeEl, keys) {\n return this.replace(this.crossOriginIframeMirror, obj, iframeEl, keys);\n }\n replaceStyleIds(obj, iframeEl, keys) {\n return this.replace(this.crossOriginIframeStyleMirror, obj, iframeEl, keys);\n }\n replaceIdOnNode(node2, iframeEl) {\n this.replaceIds(node2, iframeEl, [\"id\", \"rootId\"]);\n if (\"childNodes\" in node2) {\n node2.childNodes.forEach((child) => {\n this.replaceIdOnNode(child, iframeEl);\n });\n }\n }\n patchRootIdOnNode(node2, rootId) {\n if (node2.type !== NodeType.Document && !node2.rootId) node2.rootId = rootId;\n if (\"childNodes\" in node2) {\n node2.childNodes.forEach((child) => {\n this.patchRootIdOnNode(child, rootId);\n });\n }\n }\n}\nclass ShadowDomManager {\n constructor(options) {\n __publicField(this, \"shadowDoms\", /* @__PURE__ */ new WeakSet());\n __publicField(this, \"mutationCb\");\n __publicField(this, \"scrollCb\");\n __publicField(this, \"bypassOptions\");\n __publicField(this, \"mirror\");\n __publicField(this, \"restoreHandlers\", []);\n this.mutationCb = options.mutationCb;\n this.scrollCb = options.scrollCb;\n this.bypassOptions = options.bypassOptions;\n this.mirror = options.mirror;\n this.init();\n }\n init() {\n this.reset();\n this.patchAttachShadow(Element, document);\n }\n addShadowRoot(shadowRoot2, doc) {\n if (!isNativeShadowDom(shadowRoot2)) return;\n if (this.shadowDoms.has(shadowRoot2)) return;\n this.shadowDoms.add(shadowRoot2);\n const observer = initMutationObserver(\n {\n ...this.bypassOptions,\n doc,\n mutationCb: this.mutationCb,\n mirror: this.mirror,\n shadowDomManager: this\n },\n shadowRoot2\n );\n this.restoreHandlers.push(() => observer.disconnect());\n this.restoreHandlers.push(\n initScrollObserver({\n ...this.bypassOptions,\n scrollCb: this.scrollCb,\n // https://gist.github.com/praveenpuglia/0832da687ed5a5d7a0907046c9ef1813\n // scroll is not allowed to pass the boundary, so we need to listen the shadow document\n doc: shadowRoot2,\n mirror: this.mirror\n })\n );\n setTimeout(() => {\n if (shadowRoot2.adoptedStyleSheets && shadowRoot2.adoptedStyleSheets.length > 0)\n this.bypassOptions.stylesheetManager.adoptStyleSheets(\n shadowRoot2.adoptedStyleSheets,\n this.mirror.getId(index.host(shadowRoot2))\n );\n this.restoreHandlers.push(\n initAdoptedStyleSheetObserver(\n {\n mirror: this.mirror,\n stylesheetManager: this.bypassOptions.stylesheetManager\n },\n shadowRoot2\n )\n );\n }, 0);\n }\n /**\n * Monkey patch 'attachShadow' of an IFrameElement to observe newly added shadow doms.\n */\n observeAttachShadow(iframeElement) {\n if (!iframeElement.contentWindow || !iframeElement.contentDocument) return;\n this.patchAttachShadow(\n iframeElement.contentWindow.Element,\n iframeElement.contentDocument\n );\n }\n /**\n * Patch 'attachShadow' to observe newly added shadow doms.\n */\n patchAttachShadow(element, doc) {\n const manager = this;\n this.restoreHandlers.push(\n patch(\n element.prototype,\n \"attachShadow\",\n function(original) {\n return function(option) {\n const sRoot = original.call(this, option);\n const shadowRootEl = index.shadowRoot(this);\n if (shadowRootEl && inDom(this))\n manager.addShadowRoot(shadowRootEl, doc);\n return sRoot;\n };\n }\n )\n );\n }\n reset() {\n this.restoreHandlers.forEach((handler) => {\n try {\n handler();\n } catch (e2) {\n }\n });\n this.restoreHandlers = [];\n this.shadowDoms = /* @__PURE__ */ new WeakSet();\n }\n}\nvar chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nvar lookup = typeof Uint8Array === \"undefined\" ? [] : new Uint8Array(256);\nfor (var i$1 = 0; i$1 < chars.length; i$1++) {\n lookup[chars.charCodeAt(i$1)] = i$1;\n}\nvar encode = function(arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i2, len = bytes.length, base64 = \"\";\n for (i2 = 0; i2 < len; i2 += 3) {\n base64 += chars[bytes[i2] >> 2];\n base64 += chars[(bytes[i2] & 3) << 4 | bytes[i2 + 1] >> 4];\n base64 += chars[(bytes[i2 + 1] & 15) << 2 | bytes[i2 + 2] >> 6];\n base64 += chars[bytes[i2 + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + \"=\";\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + \"==\";\n }\n return base64;\n};\nconst canvasVarMap = /* @__PURE__ */ new Map();\nfunction variableListFor$1(ctx, ctor) {\n let contextMap = canvasVarMap.get(ctx);\n if (!contextMap) {\n contextMap = /* @__PURE__ */ new Map();\n canvasVarMap.set(ctx, contextMap);\n }\n if (!contextMap.has(ctor)) {\n contextMap.set(ctor, []);\n }\n return contextMap.get(ctor);\n}\nconst saveWebGLVar = (value, win, ctx) => {\n if (!value || !(isInstanceOfWebGLObject(value, win) || typeof value === \"object\"))\n return;\n const name = value.constructor.name;\n const list2 = variableListFor$1(ctx, name);\n let index2 = list2.indexOf(value);\n if (index2 === -1) {\n index2 = list2.length;\n list2.push(value);\n }\n return index2;\n};\nfunction serializeArg(value, win, ctx) {\n if (value instanceof Array) {\n return value.map((arg) => serializeArg(arg, win, ctx));\n } else if (value === null) {\n return value;\n } else if (value instanceof Float32Array || value instanceof Float64Array || value instanceof Int32Array || value instanceof Uint32Array || value instanceof Uint8Array || value instanceof Uint16Array || value instanceof Int16Array || value instanceof Int8Array || value instanceof Uint8ClampedArray) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [Object.values(value)]\n };\n } else if (\n // SharedArrayBuffer disabled on most browsers due to spectre.\n // More info: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/SharedArrayBuffer\n // value instanceof SharedArrayBuffer ||\n value instanceof ArrayBuffer\n ) {\n const name = value.constructor.name;\n const base64 = encode(value);\n return {\n rr_type: name,\n base64\n };\n } else if (value instanceof DataView) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [\n serializeArg(value.buffer, win, ctx),\n value.byteOffset,\n value.byteLength\n ]\n };\n } else if (value instanceof HTMLImageElement) {\n const name = value.constructor.name;\n const { src } = value;\n return {\n rr_type: name,\n src\n };\n } else if (value instanceof HTMLCanvasElement) {\n const name = \"HTMLImageElement\";\n const src = value.toDataURL();\n return {\n rr_type: name,\n src\n };\n } else if (value instanceof ImageData) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [serializeArg(value.data, win, ctx), value.width, value.height]\n };\n } else if (isInstanceOfWebGLObject(value, win) || typeof value === \"object\") {\n const name = value.constructor.name;\n const index2 = saveWebGLVar(value, win, ctx);\n return {\n rr_type: name,\n index: index2\n };\n }\n return value;\n}\nconst serializeArgs = (args, win, ctx) => {\n return args.map((arg) => serializeArg(arg, win, ctx));\n};\nconst isInstanceOfWebGLObject = (value, win) => {\n const webGLConstructorNames = [\n \"WebGLActiveInfo\",\n \"WebGLBuffer\",\n \"WebGLFramebuffer\",\n \"WebGLProgram\",\n \"WebGLRenderbuffer\",\n \"WebGLShader\",\n \"WebGLShaderPrecisionFormat\",\n \"WebGLTexture\",\n \"WebGLUniformLocation\",\n \"WebGLVertexArrayObject\",\n // In old Chrome versions, value won't be an instanceof WebGLVertexArrayObject.\n \"WebGLVertexArrayObjectOES\"\n ];\n const supportedWebGLConstructorNames = webGLConstructorNames.filter(\n (name) => typeof win[name] === \"function\"\n );\n return Boolean(\n supportedWebGLConstructorNames.find(\n (name) => value instanceof win[name]\n )\n );\n};\nfunction initCanvas2DMutationObserver(cb, win, blockClass, blockSelector) {\n const handlers = [];\n const props2D = Object.getOwnPropertyNames(\n win.CanvasRenderingContext2D.prototype\n );\n for (const prop of props2D) {\n try {\n if (typeof win.CanvasRenderingContext2D.prototype[prop] !== \"function\") {\n continue;\n }\n const restoreHandler = patch(\n win.CanvasRenderingContext2D.prototype,\n prop,\n function(original) {\n return function(...args) {\n if (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\n setTimeout(() => {\n const recordArgs = serializeArgs(args, win, this);\n cb(this.canvas, {\n type: CanvasContext[\"2D\"],\n property: prop,\n args: recordArgs\n });\n }, 0);\n }\n return original.apply(this, args);\n };\n }\n );\n handlers.push(restoreHandler);\n } catch {\n const hookHandler = hookSetter(\n win.CanvasRenderingContext2D.prototype,\n prop,\n {\n set(v2) {\n cb(this.canvas, {\n type: CanvasContext[\"2D\"],\n property: prop,\n args: [v2],\n setter: true\n });\n }\n }\n );\n handlers.push(hookHandler);\n }\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\nfunction getNormalizedContextName(contextType) {\n return contextType === \"experimental-webgl\" ? \"webgl\" : contextType;\n}\nfunction initCanvasContextObserver(win, blockClass, blockSelector, setPreserveDrawingBufferToTrue) {\n const handlers = [];\n try {\n const restoreHandler = patch(\n win.HTMLCanvasElement.prototype,\n \"getContext\",\n function(original) {\n return function(contextType, ...args) {\n if (!isBlocked(this, blockClass, blockSelector, true)) {\n const ctxName = getNormalizedContextName(contextType);\n if (!(\"__context\" in this)) this.__context = ctxName;\n if (setPreserveDrawingBufferToTrue && [\"webgl\", \"webgl2\"].includes(ctxName)) {\n if (args[0] && typeof args[0] === \"object\") {\n const contextAttributes = args[0];\n if (!contextAttributes.preserveDrawingBuffer) {\n contextAttributes.preserveDrawingBuffer = true;\n }\n } else {\n args.splice(0, 1, {\n preserveDrawingBuffer: true\n });\n }\n }\n }\n return original.apply(this, [contextType, ...args]);\n };\n }\n );\n handlers.push(restoreHandler);\n } catch {\n console.error(\"failed to patch HTMLCanvasElement.prototype.getContext\");\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\nfunction patchGLPrototype(prototype, type, cb, blockClass, blockSelector, win) {\n const handlers = [];\n const props = Object.getOwnPropertyNames(prototype);\n for (const prop of props) {\n if (\n //prop.startsWith('get') || // e.g. getProgramParameter, but too risky\n [\n \"isContextLost\",\n \"canvas\",\n \"drawingBufferWidth\",\n \"drawingBufferHeight\"\n ].includes(prop)\n ) {\n continue;\n }\n try {\n if (typeof prototype[prop] !== \"function\") {\n continue;\n }\n const restoreHandler = patch(\n prototype,\n prop,\n function(original) {\n return function(...args) {\n const result2 = original.apply(this, args);\n saveWebGLVar(result2, win, this);\n if (\"tagName\" in this.canvas && !isBlocked(this.canvas, blockClass, blockSelector, true)) {\n const recordArgs = serializeArgs(args, win, this);\n const mutation = {\n type,\n property: prop,\n args: recordArgs\n };\n cb(this.canvas, mutation);\n }\n return result2;\n };\n }\n );\n handlers.push(restoreHandler);\n } catch {\n const hookHandler = hookSetter(prototype, prop, {\n set(v2) {\n cb(this.canvas, {\n type,\n property: prop,\n args: [v2],\n setter: true\n });\n }\n });\n handlers.push(hookHandler);\n }\n }\n return handlers;\n}\nfunction initCanvasWebGLMutationObserver(cb, win, blockClass, blockSelector) {\n const handlers = [];\n handlers.push(\n ...patchGLPrototype(\n win.WebGLRenderingContext.prototype,\n CanvasContext.WebGL,\n cb,\n blockClass,\n blockSelector,\n win\n )\n );\n if (typeof win.WebGL2RenderingContext !== \"undefined\") {\n handlers.push(\n ...patchGLPrototype(\n win.WebGL2RenderingContext.prototype,\n CanvasContext.WebGL2,\n cb,\n blockClass,\n blockSelector,\n win\n )\n );\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\nconst encodedJs = \"KGZ1bmN0aW9uKCkgewogICJ1c2Ugc3RyaWN0IjsKICB2YXIgY2hhcnMgPSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7CiAgdmFyIGxvb2t1cCA9IHR5cGVvZiBVaW50OEFycmF5ID09PSAidW5kZWZpbmVkIiA/IFtdIDogbmV3IFVpbnQ4QXJyYXkoMjU2KTsKICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYXJzLmxlbmd0aDsgaSsrKSB7CiAgICBsb29rdXBbY2hhcnMuY2hhckNvZGVBdChpKV0gPSBpOwogIH0KICB2YXIgZW5jb2RlID0gZnVuY3Rpb24oYXJyYXlidWZmZXIpIHsKICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGFycmF5YnVmZmVyKSwgaTIsIGxlbiA9IGJ5dGVzLmxlbmd0aCwgYmFzZTY0ID0gIiI7CiAgICBmb3IgKGkyID0gMDsgaTIgPCBsZW47IGkyICs9IDMpIHsKICAgICAgYmFzZTY0ICs9IGNoYXJzW2J5dGVzW2kyXSA+PiAyXTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMl0gJiAzKSA8PCA0IHwgYnl0ZXNbaTIgKyAxXSA+PiA0XTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMiArIDFdICYgMTUpIDw8IDIgfCBieXRlc1tpMiArIDJdID4+IDZdOwogICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaTIgKyAyXSAmIDYzXTsKICAgIH0KICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgIj0iOwogICAgfSBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgIj09IjsKICAgIH0KICAgIHJldHVybiBiYXNlNjQ7CiAgfTsKICBjb25zdCBsYXN0QmxvYk1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7CiAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTsKICBhc3luYyBmdW5jdGlvbiBnZXRUcmFuc3BhcmVudEJsb2JGb3Iod2lkdGgsIGhlaWdodCwgZGF0YVVSTE9wdGlvbnMpIHsKICAgIGNvbnN0IGlkID0gYCR7d2lkdGh9LSR7aGVpZ2h0fWA7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBpZiAodHJhbnNwYXJlbnRCbG9iTWFwLmhhcyhpZCkpIHJldHVybiB0cmFuc3BhcmVudEJsb2JNYXAuZ2V0KGlkKTsKICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsKICAgICAgb2Zmc2NyZWVuLmdldENvbnRleHQoIjJkIik7CiAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCBvZmZzY3JlZW4uY29udmVydFRvQmxvYihkYXRhVVJMT3B0aW9ucyk7CiAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gYXdhaXQgYmxvYi5hcnJheUJ1ZmZlcigpOwogICAgICBjb25zdCBiYXNlNjQgPSBlbmNvZGUoYXJyYXlCdWZmZXIpOwogICAgICB0cmFuc3BhcmVudEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICByZXR1cm4gYmFzZTY0OwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuICIiOwogICAgfQogIH0KICBjb25zdCB3b3JrZXIgPSBzZWxmOwogIHdvcmtlci5vbm1lc3NhZ2UgPSBhc3luYyBmdW5jdGlvbihlKSB7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBjb25zdCB7IGlkLCBiaXRtYXAsIHdpZHRoLCBoZWlnaHQsIGRhdGFVUkxPcHRpb25zIH0gPSBlLmRhdGE7CiAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKAogICAgICAgIHdpZHRoLAogICAgICAgIGhlaWdodCwKICAgICAgICBkYXRhVVJMT3B0aW9ucwogICAgICApOwogICAgICBjb25zdCBvZmZzY3JlZW4gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpOwogICAgICBjb25zdCBjdHggPSBvZmZzY3JlZW4uZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgY3R4LmRyYXdJbWFnZShiaXRtYXAsIDAsIDApOwogICAgICBiaXRtYXAuY2xvc2UoKTsKICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IG9mZnNjcmVlbi5jb252ZXJ0VG9CbG9iKGRhdGFVUkxPcHRpb25zKTsKICAgICAgY29uc3QgdHlwZSA9IGJsb2IudHlwZTsKICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBhd2FpdCBibG9iLmFycmF5QnVmZmVyKCk7CiAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7CiAgICAgIGlmICghbGFzdEJsb2JNYXAuaGFzKGlkKSAmJiBhd2FpdCB0cmFuc3BhcmVudEJhc2U2NCA9PT0gYmFzZTY0KSB7CiAgICAgICAgbGFzdEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICAgIHJldHVybiB3b3JrZXIucG9zdE1lc3NhZ2UoeyBpZCB9KTsKICAgICAgfQogICAgICBpZiAobGFzdEJsb2JNYXAuZ2V0KGlkKSA9PT0gYmFzZTY0KSByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQgfSk7CiAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7CiAgICAgICAgaWQsCiAgICAgICAgdHlwZSwKICAgICAgICBiYXNlNjQsCiAgICAgICAgd2lkdGgsCiAgICAgICAgaGVpZ2h0CiAgICAgIH0pOwogICAgICBsYXN0QmxvYk1hcC5zZXQoaWQsIGJhc2U2NCk7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IGUuZGF0YS5pZCB9KTsKICAgIH0KICB9Owp9KSgpOwovLyMgc291cmNlTWFwcGluZ1VSTD1pbWFnZS1iaXRtYXAtZGF0YS11cmwtd29ya2VyLUlKcEM3Z19iLmpzLm1hcAo=\";\nconst decodeBase64 = (base64) => Uint8Array.from(atob(base64), (c2) => c2.charCodeAt(0));\nconst blob = typeof window !== \"undefined\" && window.Blob && new Blob([decodeBase64(encodedJs)], { type: \"text/javascript;charset=utf-8\" });\nfunction WorkerWrapper(options) {\n let objURL;\n try {\n objURL = blob && (window.URL || window.webkitURL).createObjectURL(blob);\n if (!objURL) throw \"\";\n const worker = new Worker(objURL, {\n name: options == null ? void 0 : options.name\n });\n worker.addEventListener(\"error\", () => {\n (window.URL || window.webkitURL).revokeObjectURL(objURL);\n });\n return worker;\n } catch (e2) {\n return new Worker(\n \"data:text/javascript;base64,\" + encodedJs,\n {\n name: options == null ? void 0 : options.name\n }\n );\n } finally {\n objURL && (window.URL || window.webkitURL).revokeObjectURL(objURL);\n }\n}\nclass CanvasManager {\n constructor(options) {\n __publicField(this, \"pendingCanvasMutations\", /* @__PURE__ */ new Map());\n __publicField(this, \"rafStamps\", { latestId: 0, invokeId: null });\n __publicField(this, \"mirror\");\n __publicField(this, \"mutationCb\");\n __publicField(this, \"resetObservers\");\n __publicField(this, \"frozen\", false);\n __publicField(this, \"locked\", false);\n __publicField(this, \"processMutation\", (target, mutation) => {\n const newFrame = this.rafStamps.invokeId && this.rafStamps.latestId !== this.rafStamps.invokeId;\n if (newFrame || !this.rafStamps.invokeId)\n this.rafStamps.invokeId = this.rafStamps.latestId;\n if (!this.pendingCanvasMutations.has(target)) {\n this.pendingCanvasMutations.set(target, []);\n }\n this.pendingCanvasMutations.get(target).push(mutation);\n });\n const {\n sampling = \"all\",\n win,\n blockClass,\n blockSelector,\n recordCanvas,\n dataURLOptions\n } = options;\n this.mutationCb = options.mutationCb;\n this.mirror = options.mirror;\n if (recordCanvas && sampling === \"all\")\n this.initCanvasMutationObserver(win, blockClass, blockSelector);\n if (recordCanvas && typeof sampling === \"number\")\n this.initCanvasFPSObserver(sampling, win, blockClass, blockSelector, {\n dataURLOptions\n });\n }\n reset() {\n this.pendingCanvasMutations.clear();\n this.resetObservers && this.resetObservers();\n }\n freeze() {\n this.frozen = true;\n }\n unfreeze() {\n this.frozen = false;\n }\n lock() {\n this.locked = true;\n }\n unlock() {\n this.locked = false;\n }\n initCanvasFPSObserver(fps, win, blockClass, blockSelector, options) {\n const canvasContextReset = initCanvasContextObserver(\n win,\n blockClass,\n blockSelector,\n true\n );\n const snapshotInProgressMap = /* @__PURE__ */ new Map();\n const worker = new WorkerWrapper();\n worker.onmessage = (e2) => {\n const { id } = e2.data;\n snapshotInProgressMap.set(id, false);\n if (!(\"base64\" in e2.data)) return;\n const { base64, type, width, height } = e2.data;\n this.mutationCb({\n id,\n type: CanvasContext[\"2D\"],\n commands: [\n {\n property: \"clearRect\",\n // wipe canvas\n args: [0, 0, width, height]\n },\n {\n property: \"drawImage\",\n // draws (semi-transparent) image\n args: [\n {\n rr_type: \"ImageBitmap\",\n args: [\n {\n rr_type: \"Blob\",\n data: [{ rr_type: \"ArrayBuffer\", base64 }],\n type\n }\n ]\n },\n 0,\n 0\n ]\n }\n ]\n });\n };\n const timeBetweenSnapshots = 1e3 / fps;\n let lastSnapshotTime = 0;\n let rafId;\n const getCanvas = () => {\n const matchedCanvas = [];\n win.document.querySelectorAll(\"canvas\").forEach((canvas) => {\n if (!isBlocked(canvas, blockClass, blockSelector, true)) {\n matchedCanvas.push(canvas);\n }\n });\n return matchedCanvas;\n };\n const takeCanvasSnapshots = (timestamp) => {\n if (lastSnapshotTime && timestamp - lastSnapshotTime < timeBetweenSnapshots) {\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n return;\n }\n lastSnapshotTime = timestamp;\n getCanvas().forEach(async (canvas) => {\n var _a2;\n const id = this.mirror.getId(canvas);\n if (snapshotInProgressMap.get(id)) return;\n if (canvas.width === 0 || canvas.height === 0) return;\n snapshotInProgressMap.set(id, true);\n if ([\"webgl\", \"webgl2\"].includes(canvas.__context)) {\n const context = canvas.getContext(canvas.__context);\n if (((_a2 = context == null ? void 0 : context.getContextAttributes()) == null ? void 0 : _a2.preserveDrawingBuffer) === false) {\n context.clear(context.COLOR_BUFFER_BIT);\n }\n }\n const bitmap = await createImageBitmap(canvas);\n worker.postMessage(\n {\n id,\n bitmap,\n width: canvas.width,\n height: canvas.height,\n dataURLOptions: options.dataURLOptions\n },\n [bitmap]\n );\n });\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n };\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n this.resetObservers = () => {\n canvasContextReset();\n cancelAnimationFrame(rafId);\n };\n }\n initCanvasMutationObserver(win, blockClass, blockSelector) {\n this.startRAFTimestamping();\n this.startPendingCanvasMutationFlusher();\n const canvasContextReset = initCanvasContextObserver(\n win,\n blockClass,\n blockSelector,\n false\n );\n const canvas2DReset = initCanvas2DMutationObserver(\n this.processMutation.bind(this),\n win,\n blockClass,\n blockSelector\n );\n const canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(\n this.processMutation.bind(this),\n win,\n blockClass,\n blockSelector\n );\n this.resetObservers = () => {\n canvasContextReset();\n canvas2DReset();\n canvasWebGL1and2Reset();\n };\n }\n startPendingCanvasMutationFlusher() {\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\n }\n startRAFTimestamping() {\n const setLatestRAFTimestamp = (timestamp) => {\n this.rafStamps.latestId = timestamp;\n requestAnimationFrame(setLatestRAFTimestamp);\n };\n requestAnimationFrame(setLatestRAFTimestamp);\n }\n flushPendingCanvasMutations() {\n this.pendingCanvasMutations.forEach(\n (_values, canvas) => {\n const id = this.mirror.getId(canvas);\n this.flushPendingCanvasMutationFor(canvas, id);\n }\n );\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\n }\n flushPendingCanvasMutationFor(canvas, id) {\n if (this.frozen || this.locked) {\n return;\n }\n const valuesWithType = this.pendingCanvasMutations.get(canvas);\n if (!valuesWithType || id === -1) return;\n const values = valuesWithType.map((value) => {\n const { type: type2, ...rest } = value;\n return rest;\n });\n const { type } = valuesWithType[0];\n this.mutationCb({ id, type, commands: values });\n this.pendingCanvasMutations.delete(canvas);\n }\n}\nclass StylesheetManager {\n constructor(options) {\n __publicField(this, \"trackedLinkElements\", /* @__PURE__ */ new WeakSet());\n __publicField(this, \"mutationCb\");\n __publicField(this, \"adoptedStyleSheetCb\");\n __publicField(this, \"styleMirror\", new StyleSheetMirror());\n this.mutationCb = options.mutationCb;\n this.adoptedStyleSheetCb = options.adoptedStyleSheetCb;\n }\n attachLinkElement(linkEl, childSn) {\n if (\"_cssText\" in childSn.attributes)\n this.mutationCb({\n adds: [],\n removes: [],\n texts: [],\n attributes: [\n {\n id: childSn.id,\n attributes: childSn.attributes\n }\n ]\n });\n this.trackLinkElement(linkEl);\n }\n trackLinkElement(linkEl) {\n if (this.trackedLinkElements.has(linkEl)) return;\n this.trackedLinkElements.add(linkEl);\n this.trackStylesheetInLinkElement(linkEl);\n }\n adoptStyleSheets(sheets, hostId) {\n if (sheets.length === 0) return;\n const adoptedStyleSheetData = {\n id: hostId,\n styleIds: []\n };\n const styles = [];\n for (const sheet of sheets) {\n let styleId;\n if (!this.styleMirror.has(sheet)) {\n styleId = this.styleMirror.add(sheet);\n styles.push({\n styleId,\n rules: Array.from(sheet.rules || CSSRule, (r2, index2) => ({\n rule: stringifyRule(r2, sheet.href),\n index: index2\n }))\n });\n } else styleId = this.styleMirror.getId(sheet);\n adoptedStyleSheetData.styleIds.push(styleId);\n }\n if (styles.length > 0) adoptedStyleSheetData.styles = styles;\n this.adoptedStyleSheetCb(adoptedStyleSheetData);\n }\n reset() {\n this.styleMirror.reset();\n this.trackedLinkElements = /* @__PURE__ */ new WeakSet();\n }\n // TODO: take snapshot on stylesheet reload by applying event listener\n trackStylesheetInLinkElement(_linkEl) {\n }\n}\nclass ProcessedNodeManager {\n constructor() {\n __publicField(this, \"nodeMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"active\", false);\n }\n inOtherBuffer(node2, thisBuffer) {\n const buffers = this.nodeMap.get(node2);\n return buffers && Array.from(buffers).some((buffer) => buffer !== thisBuffer);\n }\n add(node2, buffer) {\n if (!this.active) {\n this.active = true;\n requestAnimationFrame(() => {\n this.nodeMap = /* @__PURE__ */ new WeakMap();\n this.active = false;\n });\n }\n this.nodeMap.set(node2, (this.nodeMap.get(node2) || /* @__PURE__ */ new Set()).add(buffer));\n }\n destroy() {\n }\n}\nlet wrappedEmit;\nlet takeFullSnapshot$1;\nlet canvasManager;\nlet recording = false;\ntry {\n if (Array.from([1], (x2) => x2 * 2)[0] !== 2) {\n const cleanFrame = document.createElement(\"iframe\");\n document.body.appendChild(cleanFrame);\n Array.from = ((_a = cleanFrame.contentWindow) == null ? void 0 : _a.Array.from) || Array.from;\n document.body.removeChild(cleanFrame);\n }\n} catch (err) {\n console.debug(\"Unable to override Array.from\", err);\n}\nconst mirror = createMirror$2();\nfunction record(options = {}) {\n const {\n emit,\n checkoutEveryNms,\n checkoutEveryNth,\n blockClass = \"rr-block\",\n blockSelector = null,\n ignoreClass = \"rr-ignore\",\n ignoreSelector = null,\n maskTextClass = \"rr-mask\",\n maskTextSelector = null,\n inlineStylesheet = true,\n maskAllInputs,\n maskInputOptions: _maskInputOptions,\n slimDOMOptions: _slimDOMOptions,\n maskInputFn,\n maskTextFn,\n hooks,\n packFn,\n sampling = {},\n dataURLOptions = {},\n mousemoveWait,\n recordDOM = true,\n recordCanvas = false,\n recordCrossOriginIframes = false,\n recordAfter = options.recordAfter === \"DOMContentLoaded\" ? options.recordAfter : \"load\",\n userTriggeredOnInput = false,\n collectFonts = false,\n inlineImages = false,\n plugins,\n keepIframeSrcFn = () => false,\n ignoreCSSAttributes = /* @__PURE__ */ new Set([]),\n errorHandler: errorHandler2\n } = options;\n registerErrorHandler(errorHandler2);\n const inEmittingFrame = recordCrossOriginIframes ? window.parent === window : true;\n let passEmitsToParent = false;\n if (!inEmittingFrame) {\n try {\n if (window.parent.document) {\n passEmitsToParent = false;\n }\n } catch (e2) {\n passEmitsToParent = true;\n }\n }\n if (inEmittingFrame && !emit) {\n throw new Error(\"emit function is required\");\n }\n if (!inEmittingFrame && !passEmitsToParent) {\n return () => {\n };\n }\n if (mousemoveWait !== void 0 && sampling.mousemove === void 0) {\n sampling.mousemove = mousemoveWait;\n }\n mirror.reset();\n const maskInputOptions = maskAllInputs === true ? {\n color: true,\n date: true,\n \"datetime-local\": true,\n email: true,\n month: true,\n number: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true,\n textarea: true,\n select: true,\n password: true\n } : _maskInputOptions !== void 0 ? _maskInputOptions : { password: true };\n const slimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === \"all\" ? {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaVerification: true,\n // the following are off for slimDOMOptions === true,\n // as they destroy some (hidden) info:\n headMetaAuthorship: _slimDOMOptions === \"all\",\n headMetaDescKeywords: _slimDOMOptions === \"all\",\n headTitleMutations: _slimDOMOptions === \"all\"\n } : _slimDOMOptions ? _slimDOMOptions : {};\n polyfill$1();\n let lastFullSnapshotEvent;\n let incrementalSnapshotCount = 0;\n const eventProcessor = (e2) => {\n for (const plugin3 of plugins || []) {\n if (plugin3.eventProcessor) {\n e2 = plugin3.eventProcessor(e2);\n }\n }\n if (packFn && // Disable packing events which will be emitted to parent frames.\n !passEmitsToParent) {\n e2 = packFn(e2);\n }\n return e2;\n };\n wrappedEmit = (r2, isCheckout) => {\n var _a2;\n const e2 = r2;\n e2.timestamp = nowTimestamp();\n if (((_a2 = mutationBuffers[0]) == null ? void 0 : _a2.isFrozen()) && e2.type !== EventType.FullSnapshot && !(e2.type === EventType.IncrementalSnapshot && e2.data.source === IncrementalSource.Mutation)) {\n mutationBuffers.forEach((buf) => buf.unfreeze());\n }\n if (inEmittingFrame) {\n emit == null ? void 0 : emit(eventProcessor(e2), isCheckout);\n } else if (passEmitsToParent) {\n const message = {\n type: \"rrweb\",\n event: eventProcessor(e2),\n origin: window.location.origin,\n isCheckout\n };\n window.parent.postMessage(message, \"*\");\n }\n if (e2.type === EventType.FullSnapshot) {\n lastFullSnapshotEvent = e2;\n incrementalSnapshotCount = 0;\n } else if (e2.type === EventType.IncrementalSnapshot) {\n if (e2.data.source === IncrementalSource.Mutation && e2.data.isAttachIframe) {\n return;\n }\n incrementalSnapshotCount++;\n const exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\n const exceedTime = checkoutEveryNms && e2.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\n if (exceedCount || exceedTime) {\n takeFullSnapshot$1(true);\n }\n }\n };\n const wrappedMutationEmit = (m) => {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Mutation,\n ...m\n }\n });\n };\n const wrappedScrollEmit = (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Scroll,\n ...p\n }\n });\n const wrappedCanvasMutationEmit = (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.CanvasMutation,\n ...p\n }\n });\n const wrappedAdoptedStyleSheetEmit = (a2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.AdoptedStyleSheet,\n ...a2\n }\n });\n const stylesheetManager = new StylesheetManager({\n mutationCb: wrappedMutationEmit,\n adoptedStyleSheetCb: wrappedAdoptedStyleSheetEmit\n });\n const iframeManager = new IframeManager({\n mirror,\n mutationCb: wrappedMutationEmit,\n stylesheetManager,\n recordCrossOriginIframes,\n wrappedEmit\n });\n for (const plugin3 of plugins || []) {\n if (plugin3.getMirror)\n plugin3.getMirror({\n nodeMirror: mirror,\n crossOriginIframeMirror: iframeManager.crossOriginIframeMirror,\n crossOriginIframeStyleMirror: iframeManager.crossOriginIframeStyleMirror\n });\n }\n const processedNodeManager = new ProcessedNodeManager();\n canvasManager = new CanvasManager({\n recordCanvas,\n mutationCb: wrappedCanvasMutationEmit,\n win: window,\n blockClass,\n blockSelector,\n mirror,\n sampling: sampling.canvas,\n dataURLOptions\n });\n const shadowDomManager = new ShadowDomManager({\n mutationCb: wrappedMutationEmit,\n scrollCb: wrappedScrollEmit,\n bypassOptions: {\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n inlineStylesheet,\n maskInputOptions,\n dataURLOptions,\n maskTextFn,\n maskInputFn,\n recordCanvas,\n inlineImages,\n sampling,\n slimDOMOptions,\n iframeManager,\n stylesheetManager,\n canvasManager,\n keepIframeSrcFn,\n processedNodeManager\n },\n mirror\n });\n takeFullSnapshot$1 = (isCheckout = false) => {\n if (!recordDOM) {\n return;\n }\n wrappedEmit(\n {\n type: EventType.Meta,\n data: {\n href: window.location.href,\n width: getWindowWidth(),\n height: getWindowHeight()\n }\n },\n isCheckout\n );\n stylesheetManager.reset();\n shadowDomManager.init();\n mutationBuffers.forEach((buf) => buf.lock());\n const node2 = snapshot(document, {\n mirror,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n inlineStylesheet,\n maskAllInputs: maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOM: slimDOMOptions,\n dataURLOptions,\n recordCanvas,\n inlineImages,\n onSerialize: (n2) => {\n if (isSerializedIframe(n2, mirror)) {\n iframeManager.addIframe(n2);\n }\n if (isSerializedStylesheet(n2, mirror)) {\n stylesheetManager.trackLinkElement(n2);\n }\n if (hasShadowRoot(n2)) {\n shadowDomManager.addShadowRoot(index.shadowRoot(n2), document);\n }\n },\n onIframeLoad: (iframe, childSn) => {\n iframeManager.attachIframe(iframe, childSn);\n shadowDomManager.observeAttachShadow(iframe);\n },\n onStylesheetLoad: (linkEl, childSn) => {\n stylesheetManager.attachLinkElement(linkEl, childSn);\n },\n keepIframeSrcFn\n });\n if (!node2) {\n return console.warn(\"Failed to snapshot the document\");\n }\n wrappedEmit(\n {\n type: EventType.FullSnapshot,\n data: {\n node: node2,\n initialOffset: getWindowScroll(window)\n }\n },\n isCheckout\n );\n mutationBuffers.forEach((buf) => buf.unlock());\n if (document.adoptedStyleSheets && document.adoptedStyleSheets.length > 0)\n stylesheetManager.adoptStyleSheets(\n document.adoptedStyleSheets,\n mirror.getId(document)\n );\n };\n try {\n const handlers = [];\n const observe = (doc) => {\n var _a2;\n return callbackWrapper(initObservers)(\n {\n mutationCb: wrappedMutationEmit,\n mousemoveCb: (positions, source) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source,\n positions\n }\n }),\n mouseInteractionCb: (d) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.MouseInteraction,\n ...d\n }\n }),\n scrollCb: wrappedScrollEmit,\n viewportResizeCb: (d) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.ViewportResize,\n ...d\n }\n }),\n inputCb: (v2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Input,\n ...v2\n }\n }),\n mediaInteractionCb: (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.MediaInteraction,\n ...p\n }\n }),\n styleSheetRuleCb: (r2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.StyleSheetRule,\n ...r2\n }\n }),\n styleDeclarationCb: (r2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.StyleDeclaration,\n ...r2\n }\n }),\n canvasMutationCb: wrappedCanvasMutationEmit,\n fontCb: (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Font,\n ...p\n }\n }),\n selectionCb: (p) => {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Selection,\n ...p\n }\n });\n },\n customElementCb: (c2) => {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.CustomElement,\n ...c2\n }\n });\n },\n blockClass,\n ignoreClass,\n ignoreSelector,\n maskTextClass,\n maskTextSelector,\n maskInputOptions,\n inlineStylesheet,\n sampling,\n recordDOM,\n recordCanvas,\n inlineImages,\n userTriggeredOnInput,\n collectFonts,\n doc,\n maskInputFn,\n maskTextFn,\n keepIframeSrcFn,\n blockSelector,\n slimDOMOptions,\n dataURLOptions,\n mirror,\n iframeManager,\n stylesheetManager,\n shadowDomManager,\n processedNodeManager,\n canvasManager,\n ignoreCSSAttributes,\n plugins: ((_a2 = plugins == null ? void 0 : plugins.filter((p) => p.observer)) == null ? void 0 : _a2.map((p) => ({\n observer: p.observer,\n options: p.options,\n callback: (payload) => wrappedEmit({\n type: EventType.Plugin,\n data: {\n plugin: p.name,\n payload\n }\n })\n }))) || []\n },\n hooks\n );\n };\n iframeManager.addLoadListener((iframeEl) => {\n try {\n handlers.push(observe(iframeEl.contentDocument));\n } catch (error) {\n console.warn(error);\n }\n });\n const init = () => {\n takeFullSnapshot$1();\n handlers.push(observe(document));\n recording = true;\n };\n if (document.readyState === \"interactive\" || document.readyState === \"complete\") {\n init();\n } else {\n handlers.push(\n on(\"DOMContentLoaded\", () => {\n wrappedEmit({\n type: EventType.DomContentLoaded,\n data: {}\n });\n if (recordAfter === \"DOMContentLoaded\") init();\n })\n );\n handlers.push(\n on(\n \"load\",\n () => {\n wrappedEmit({\n type: EventType.Load,\n data: {}\n });\n if (recordAfter === \"load\") init();\n },\n window\n )\n );\n }\n return () => {\n handlers.forEach((h) => h());\n processedNodeManager.destroy();\n recording = false;\n unregisterErrorHandler();\n };\n } catch (error) {\n console.warn(error);\n }\n}\nrecord.addCustomEvent = (tag, payload) => {\n if (!recording) {\n throw new Error(\"please add custom event after start recording\");\n }\n wrappedEmit({\n type: EventType.Custom,\n data: {\n tag,\n payload\n }\n });\n};\nrecord.freezePage = () => {\n mutationBuffers.forEach((buf) => buf.freeze());\n};\nrecord.takeFullSnapshot = (isCheckout) => {\n if (!recording) {\n throw new Error(\"please take full snapshot after start recording\");\n }\n takeFullSnapshot$1(isCheckout);\n};\nrecord.mirror = mirror;\nvar n;\n!function(t2) {\n t2[t2.NotStarted = 0] = \"NotStarted\", t2[t2.Running = 1] = \"Running\", t2[t2.Stopped = 2] = \"Stopped\";\n}(n || (n = {}));\nexport {\n record\n};\n//# sourceMappingURL=record.js.map\n","import { isMobile } from \"./GleapHelper\";\nimport { record } from \"@rrweb/record\";\n\nexport default class GleapReplayRecorder {\n startDate = undefined;\n events = [];\n bufferSize = 0;\n stopFunction = undefined;\n customOptions = {};\n\n // GleapReplayRecorder singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapReplayRecorder();\n return this.instance;\n } else {\n return this.instance;\n }\n }\n\n constructor() {}\n\n setOptions(options) {\n this.customOptions = options;\n }\n\n /**\n * Start replays\n * @returns\n */\n start() {\n this.stop();\n\n this.startDate = Date.now();\n var events = this.events;\n\n var options = {\n inlineStylesheet: true,\n blockClass: \"gl-block\",\n ignoreClass: \"gl-ignore\",\n maskTextClass: \"gl-mask\",\n dataURLOptions: {\n quality: 0.7,\n },\n recordCanvas: false,\n sampling: {\n scroll: 150,\n mouseInteraction: {\n MouseUp: false,\n MouseDown: false,\n Click: true,\n ContextMenu: true,\n DblClick: true,\n Focus: true,\n Blur: true,\n TouchStart: true,\n TouchEnd: false,\n },\n },\n collectFonts: false,\n recordCrossOriginIframes: false,\n };\n\n try {\n this.stopFunction = record({\n ...options,\n ...this.customOptions,\n emit(rrwebEvent) {\n const { event } = ensureMaxMessageSize(rrwebEvent);\n events.push(event);\n },\n });\n } catch (e) {\n console.error(e);\n }\n }\n\n /**\n * Stop replays\n * @returns\n */\n stop() {\n if (this.stopFunction) {\n this.stopFunction();\n }\n\n this.startDate = undefined;\n this.events = [];\n this.bufferSize = 0;\n }\n\n /**\n * Get the current replay data\n * @returns {Promise}\n */\n getReplayData() {\n const replayResult = {\n startDate: this.startDate,\n events: this.events,\n baseUrl: window.location.origin,\n width: window.innerWidth,\n height: window.innerHeight,\n isMobile: isMobile(),\n type: \"rrweb\",\n };\n\n return replayResult;\n }\n}\n\nexport function ensureMaxMessageSize(data) {\n let stringifiedData = JSON.stringify(data);\n if (stringifiedData.length > 4000000) {\n const dataURIRegex = /data:([\\w\\/\\-\\.]+);(\\w+),([^)\"]*)/gim;\n const matches = stringifiedData.matchAll(dataURIRegex);\n for (const match of matches) {\n if (match[1].toLocaleLowerCase().slice(0, 6) === \"image/\") {\n stringifiedData = stringifiedData.replace(\n match[0],\n \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAQSURBVHgBAQUA+v8ABRg5/wHSAVZN1mnaAAAAAElFTkSuQmCC\"\n );\n } else {\n stringifiedData = stringifiedData.replace(match[0], \"\");\n }\n }\n }\n return { event: JSON.parse(stringifiedData), size: stringifiedData.length };\n}\n","export class ScreenDrawer {\n rerender;\n svgElement = null;\n path = null;\n strPath;\n strokeWidth = 12;\n strokeWidthRect = 6;\n bufferSize = 4;\n buffer = [];\n startPoint = null;\n tool = \"rect\";\n color = \"#EB144C\";\n mouseDown = null;\n mouseMove = null;\n mouseUp = null;\n resizeListener = null;\n pathBuffer = [];\n\n constructor(rerender) {\n const self = this;\n\n this.rerender = rerender;\n\n this.svgElement = document.querySelector(\".bb-capture-svg\");\n this.svgElement.style.minHeight = `${document.documentElement.scrollHeight}px`;\n\n // Window resize listener.\n this.resizeListener = function (e) {\n self.svgElement.style.minHeight = `${document.documentElement.scrollHeight}px`;\n };\n window.addEventListener(\"resize\", this.resizeListener, true);\n\n this.mouseDown = function (e) {\n e.preventDefault();\n\n const colorpicker = document.querySelector(\n \".bb-capture-toolbar-item-colorpicker\"\n );\n if (colorpicker) {\n colorpicker.style.display = \"none\";\n }\n\n self.fadeOutToolbar();\n if (self.tool === \"pen\" || self.tool === \"blur\") {\n self.mouseDownPen(e);\n }\n if (self.tool === \"rect\") {\n self.mouseDownRect(e);\n }\n };\n\n this.mouseMove = function (e) {\n e.preventDefault();\n if (self.tool === \"pen\" || self.tool === \"blur\") {\n self.mouseMovePen(e);\n }\n if (self.tool === \"rect\") {\n self.mouseMoveRect(e);\n }\n };\n\n this.mouseUp = function (e) {\n e.preventDefault();\n self.fadeInToolbar();\n if (self.tool === \"pen\" || self.tool === \"blur\") {\n self.mouseUpPen(e);\n }\n if (self.tool === \"rect\") {\n self.mouseUpRect(e);\n }\n };\n\n this.svgElement.addEventListener(\"mousedown\", this.mouseDown);\n this.svgElement.addEventListener(\"mousemove\", this.mouseMove);\n this.svgElement.addEventListener(\"mouseup\", this.mouseUp);\n this.svgElement.addEventListener(\"touchstart\", this.mouseDown, false);\n this.svgElement.addEventListener(\"touchmove\", this.mouseMove, false);\n this.svgElement.addEventListener(\"touchend\", this.mouseUp, false);\n\n setTimeout(() => {\n this.rerender();\n }, 100);\n }\n\n clear() {\n if (this.svgElement) {\n while (this.svgElement.firstChild) {\n this.svgElement.firstChild.remove();\n }\n }\n }\n\n destroy() {\n this.svgElement.removeEventListener(\"mousedown\", this.mouseDown);\n this.svgElement.removeEventListener(\"mousemove\", this.mouseMove);\n this.svgElement.removeEventListener(\"mouseup\", this.mouseUp);\n this.svgElement.removeEventListener(\"touchstart\", this.mouseDown);\n this.svgElement.removeEventListener(\"touchmove\", this.mouseMove);\n this.svgElement.removeEventListener(\"touchend\", this.mouseUp);\n window.removeEventListener(\"resize\", this.resizeListener);\n }\n\n mouseUpPen() {\n if (this.path) {\n this.path = null;\n }\n }\n\n mouseUpRect() {\n if (this.path) {\n this.path = null;\n }\n }\n\n mouseMovePen(e) {\n if (this.path) {\n this.appendToBuffer(this.getMousePosition(e));\n this.updateSvgPath();\n }\n }\n\n mouseMoveRect(e) {\n if (this.path) {\n var p = this.getMousePosition(e);\n var w = Math.abs(p.x - this.startPoint.x);\n var h = Math.abs(p.y - this.startPoint.y);\n var x = p.x;\n var y = p.y;\n if (p.x > this.startPoint.x) {\n x = this.startPoint.x;\n }\n if (p.y > this.startPoint.y) {\n y = this.startPoint.y;\n }\n\n this.path.setAttributeNS(null, \"x\", x);\n this.path.setAttributeNS(null, \"y\", y);\n this.path.setAttributeNS(null, \"width\", w);\n this.path.setAttributeNS(null, \"height\", h);\n }\n }\n\n mouseDownRect(e) {\n this.path = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n this.path.setAttribute(\"fill\", \"none\");\n this.path.setAttribute(\"stroke\", this.color);\n this.path.setAttribute(\"stroke-linecap\", \"round\");\n this.path.setAttribute(\"stroke-width\", this.strokeWidthRect);\n\n this.startPoint = this.getMousePosition(e);\n this.appendPathToSvg(this.path);\n }\n\n mouseDownPen(e) {\n var color = this.color + \"AA\";\n var strokeWidth = this.strokeWidth;\n\n if (this.tool === \"blur\") {\n color = \"#000000\";\n strokeWidth = 40;\n }\n\n this.path = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this.path.setAttribute(\"fill\", \"none\");\n this.path.setAttribute(\"stroke\", color);\n this.path.setAttribute(\"stroke-linecap\", \"round\");\n this.path.setAttribute(\"stroke-width\", strokeWidth);\n this.buffer = [];\n var pt = this.getMousePosition(e);\n this.appendToBuffer(pt);\n this.strPath = \"M\" + pt.x + \" \" + pt.y;\n this.path.setAttribute(\"d\", this.strPath);\n this.appendPathToSvg(this.path);\n }\n\n setTool(tool) {\n this.tool = tool;\n }\n\n setColor(color) {\n this.color = color;\n }\n\n getMousePosition(e) {\n if (e.touches && e.touches.length > 0) {\n return {\n x: e.touches[0].clientX,\n y: e.touches[0].clientY,\n };\n }\n\n return {\n x: e.clientX,\n y: e.clientY,\n };\n }\n\n // Calculate the average point, starting at offset in the buffer\n getAveragePoint(offset) {\n var len = this.buffer.length;\n if (len % 2 === 1 || len >= this.bufferSize) {\n var totalX = 0;\n var totalY = 0;\n var pt, i;\n var count = 0;\n for (i = offset; i < len; i++) {\n count++;\n pt = this.buffer[i];\n totalX += pt.x;\n totalY += pt.y;\n }\n return {\n x: totalX / count,\n y: totalY / count,\n };\n }\n return null;\n }\n\n updateSvgPath() {\n var pt = this.getAveragePoint(0);\n\n if (pt) {\n // Get the smoothed part of the path that will not change\n this.strPath += \" L\" + pt.x + \" \" + pt.y;\n\n // Get the last part of the path (close to the current mouse position)\n // This part will change if the mouse moves again\n var tmpPath = \"\";\n for (var offset = 2; offset < this.buffer.length; offset += 2) {\n pt = this.getAveragePoint(offset);\n tmpPath += \" L\" + pt.x + \" \" + pt.y;\n }\n\n // Set the complete current path coordinates\n this.path.setAttribute(\"d\", this.strPath + tmpPath);\n }\n }\n\n appendToBuffer(pt) {\n this.buffer.push(pt);\n while (this.buffer.length > this.bufferSize) {\n this.buffer.shift();\n }\n }\n\n appendPathToSvg(path) {\n this.svgElement.appendChild(path);\n this.pathBuffer.push(path);\n this.rerender();\n }\n\n removeLastAddedPathFromSvg() {\n if (this.pathBuffer.length <= 0 || !this.svgElement) {\n return;\n }\n\n this.svgElement.removeChild(this.pathBuffer[this.pathBuffer.length - 1]);\n\n this.pathBuffer.pop();\n\n this.rerender();\n }\n\n fadeOutToolbar() {\n var fadeTarget = document.querySelector(\".bb-capture-toolbar\");\n if (fadeTarget) {\n fadeTarget.style.opacity = 0;\n fadeTarget.style.pointerEvents = \"none\";\n }\n }\n\n fadeInToolbar() {\n var fadeTarget = document.querySelector(\".bb-capture-toolbar\");\n if (fadeTarget) {\n fadeTarget.style.opacity = 1;\n fadeTarget.style.pointerEvents = \"auto\";\n }\n }\n}\n","export class GleapScrollStopper {\n keys = { 37: 1, 38: 1, 39: 1, 40: 1 };\n supportsPassive = false;\n wheelOpt = this.supportsPassive ? { passive: false } : false;\n wheelEvent =\n \"onwheel\" in document.createElement(\"div\") ? \"wheel\" : \"mousewheel\";\n scrollDisabled = false;\n\n // GleapScrollStopper singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapScrollStopper();\n return this.instance;\n } else {\n return this.instance;\n }\n }\n\n constructor() {\n const self = this;\n try {\n window.addEventListener(\n \"test\",\n null,\n Object.defineProperty({}, \"passive\", {\n get: function () {\n self.supportsPassive = true;\n self.wheelOpt = self.supportsPassive ? { passive: false } : false;\n },\n })\n );\n } catch (e) {}\n }\n\n preventDefault(e) {\n e.preventDefault();\n }\n\n preventDefaultForScrollKeys(e) {\n if (this.keys && this.keys[e.keyCode]) {\n this.preventDefault(e);\n return false;\n }\n }\n\n static disableScroll() {\n const instance = this.getInstance();\n if (instance.scrollDisabled) {\n return;\n }\n\n instance.scrollDisabled = true;\n\n window.addEventListener(\"DOMMouseScroll\", instance.preventDefault, false); // older FF\n window.addEventListener(\n instance.wheelEvent,\n instance.preventDefault,\n instance.wheelOpt\n ); // modern desktop\n window.addEventListener(\n \"touchmove\",\n instance.preventDefault,\n instance.wheelOpt\n ); // mobile\n window.addEventListener(\n \"keydown\",\n instance.preventDefaultForScrollKeys,\n false\n );\n }\n\n static enableScroll() {\n const instance = this.getInstance();\n if (!instance.scrollDisabled) {\n return;\n }\n\n instance.scrollDisabled = false;\n window.removeEventListener(\n \"DOMMouseScroll\",\n instance.preventDefault,\n false\n );\n window.removeEventListener(\n instance.wheelEvent,\n instance.preventDefault,\n instance.wheelOpt\n );\n window.removeEventListener(\n \"touchmove\",\n instance.preventDefault,\n instance.wheelOpt\n );\n window.removeEventListener(\n \"keydown\",\n instance.preventDefaultForScrollKeys,\n false\n );\n }\n}\n","import Gleap, { GleapTranslationManager, GleapFrameManager } from \"./Gleap\";\nimport { ScreenDrawer } from \"./ScreenDrawer\";\nimport { GleapScrollStopper } from \"./GleapScrollStopper\";\nimport { GleapScreenRecorder } from \"./GleapScreenRecorder\";\nimport { loadIcon } from \"./UI\";\n\nexport default class GleapMarkerManager {\n type = \"screenshot\";\n dragCursor = null;\n screenRecorder = null;\n callback = null;\n screenDrawer = null;\n escListener = null;\n pageLeaveListener = null;\n overrideLanguage = Gleap.getInstance().overrideLanguage;\n\n constructor(type) {\n this.type = type;\n }\n\n hideWidgetUI() {\n const feedbackButton = document.querySelector(\".bb-feedback-button\");\n if (feedbackButton) {\n feedbackButton.style.display = \"none\";\n }\n\n const dialogUI = document.querySelector(\".bb-feedback-dialog-container\");\n if (dialogUI) {\n dialogUI.style.display = \"none\";\n }\n }\n\n showWidgetUI() {\n if (this.type === \"screenshot\") {\n GleapScrollStopper.enableScroll();\n }\n\n // Stop screenrecording.\n if (this.screenRecorder) {\n this.screenRecorder.stopScreenRecording();\n }\n\n // Unregister ESC listener\n this.unregisterListeners();\n\n // Cleanup mouse pointer\n this.cleanupMousePointer();\n\n if (this.screenDrawer) {\n this.screenDrawer.destroy();\n }\n\n // Remove the toolbar UI\n const dialog = document.querySelector(\".bb-capture-toolbar\");\n if (dialog) {\n dialog.remove();\n }\n\n // Capture SVG ref\n const captureSVG = document.querySelector(\".bb-capture-svg\");\n if (captureSVG) {\n captureSVG.classList.add(\"bb-capture-svg--preview\");\n }\n\n // Remove the preview UI\n const videoPreviewContainer = document.querySelector(\".bb-capture-preview\");\n if (videoPreviewContainer) {\n videoPreviewContainer.remove();\n }\n\n // Feedback button\n const feedbackButton = document.querySelector(\".bb-feedback-button\");\n if (feedbackButton) {\n feedbackButton.style.display = \"flex\";\n }\n\n // Feedback dialog container\n const dialogUI = document.querySelector(\".bb-feedback-dialog-container\");\n if (dialogUI) {\n dialogUI.style.display = \"block\";\n }\n\n // Dismiss button\n const dismissUI = document.querySelector(\".bb-capture-dismiss\");\n if (dismissUI) {\n dismissUI.style.display = \"none\";\n }\n\n // Hide the color picker\n const colorPicker = document.querySelector(\n \".bb-capture-toolbar-item-colorpicker\"\n );\n if (colorPicker) {\n colorPicker.style.display = \"none\";\n }\n\n // Border layer\n const borderLayer = document.querySelector(\n \".bb-capture-editor-borderlayer\"\n );\n if (borderLayer) {\n borderLayer.style.display = \"none\";\n }\n }\n\n clear() {\n const captureEditor = document.querySelector(\".bb-capture-editor\");\n if (captureEditor) {\n captureEditor.remove();\n }\n }\n\n setMouseMove(x, y) {\n if (!this.dragCursor) {\n return;\n }\n\n this.dragCursor.style.left = `${x + 6}px`;\n this.dragCursor.style.top = `${y - 26}px`;\n this.dragCursor.style.right = null;\n }\n\n mouseMoveEventHandler(e) {\n const x = e.clientX;\n const y = e.clientY;\n this.setMouseMove(x, y);\n }\n\n touchMoveEventHandler(e) {\n const x = e.touches[0].clientX;\n const y = e.touches[0].clientY;\n this.setMouseMove(x, y);\n }\n\n setupMousePointer() {\n const self = this;\n this.dragCursor = document.querySelector(\".bb-capture-editor-drag-info\");\n const captureSVG = document.querySelector(\".bb-capture-svg\");\n captureSVG.addEventListener(\"mouseenter\", (e) => {\n self.dragCursor.style.opacity = 1;\n });\n\n captureSVG.addEventListener(\"mouseleave\", (e) => {\n self.dragCursor.style.opacity = 0;\n });\n\n document.documentElement.addEventListener(\n \"mousemove\",\n this.mouseMoveEventHandler.bind(this)\n );\n document.documentElement.addEventListener(\n \"touchmove\",\n this.touchMoveEventHandler.bind(this)\n );\n }\n\n cleanupMousePointer() {\n document.documentElement.removeEventListener(\n \"mousemove\",\n this.mouseMoveEventHandler\n );\n document.documentElement.removeEventListener(\n \"touchmove\",\n this.touchMoveEventHandler\n );\n\n // Clean up toolbar drag listeners\n const dragHandle = document.querySelector(\".bb-capture-toolbar-item[data-type='drag']\");\n if (dragHandle) {\n dragHandle.removeEventListener(\"mousedown\", this.dragStart);\n dragHandle.removeEventListener(\"touchstart\", this.dragStart);\n document.removeEventListener(\"mousemove\", this.drag);\n document.removeEventListener(\"touchmove\", this.drag);\n document.removeEventListener(\"mouseup\", this.dragEnd);\n document.removeEventListener(\"touchend\", this.dragEnd);\n }\n\n if (this.dragCursor) {\n this.dragCursor.remove();\n }\n }\n\n createEditorUI() {\n // Add HTML for drawing and recording\n var bugReportingEditor = document.createElement(\"div\");\n bugReportingEditor.className = \"bb-capture-editor\";\n bugReportingEditor.innerHTML = `\n
\n \n
${loadIcon(\"dismiss\")}
\n
${loadIcon(\"rect\")}
\n
\n
\n ${loadIcon(\"drag\")}\n
\n ${this.type === \"capture\"\n ? `
\n ${loadIcon(\"recorderon\")}\n ${loadIcon(\"recorderoff\")}\n \n
\n
\n ${loadIcon(\"mic\")}\n \n
\n
2:00
\n
\n
\n ${loadIcon(\"pointer\")}\n
`\n : \"\"\n }\n
\n ${loadIcon(\"rect\")}\n
\n
\n ${loadIcon(\"pen\")}\n
\n
\n ${loadIcon(\"blur\")}\n
\n
\n
\n ${GleapTranslationManager.translateText(\n `pickAColor`\n )}\n
\n
\n ${loadIcon(\"undo\")}\n ${GleapTranslationManager.translateText(\n `undo`\n )}\n
\n ${this.type !== \"capture\"\n ? `
${GleapTranslationManager.translateText(\n `next`\n )}
`\n : \"\"\n }\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
${GleapTranslationManager.translateText(\n `retry`\n )}
\n
${GleapTranslationManager.translateText(\n `next`\n )}
\n
\n
\n
\n `;\n document.body.appendChild(bugReportingEditor);\n\n // Set RTL layout\n bugReportingEditor.setAttribute(\"dir\", GleapTranslationManager.getInstance().isRTLLayout ? \"rtl\" : \"ltr\");\n }\n\n showNextStep = function () {\n // Adapt the UI\n this.showWidgetUI();\n\n if (this.callback) {\n GleapFrameManager.getInstance().sendMessage({\n name: \"set-form-data\",\n data: {\n formKey: \"capture\",\n data: {\n value: this.type,\n dirty: true,\n }\n }\n });\n this.callback(true);\n }\n };\n\n unregisterListeners() {\n if (this.escListener) {\n document.removeEventListener(\"keydown\", this.escListener);\n }\n\n if (this.pageLeaveListener) {\n window.removeEventListener(\"beforeunload\", this.pageLeaveListener);\n }\n }\n\n registerListeners() {\n const self = this;\n\n // Esc listener\n this.escListener = function (evt) {\n evt = evt || window.event;\n var isEscape = false;\n var isEnter = false;\n if (\"key\" in evt) {\n isEscape = evt.key === \"Escape\";\n isEnter = evt.key === \"Enter\";\n }\n if (isEscape) {\n self.dismiss();\n }\n if (self.type === \"screenshot\" && isEnter) {\n self.showNextStep();\n }\n };\n document.addEventListener(\"keydown\", this.escListener);\n\n // Page leave listener\n this.pageLeaveListener = function (event) {\n event.preventDefault();\n event.returnValue = \"\";\n };\n window.addEventListener(\"beforeunload\", this.pageLeaveListener);\n }\n\n show(callback) {\n this.callback = callback;\n const self = this;\n\n // Register for listeners\n this.registerListeners();\n\n // Hide widget UI\n this.hideWidgetUI();\n\n // Create the editor UI\n this.createEditorUI();\n\n // Setup the mouse pointer\n this.setupMousePointer();\n\n // Setup screenshot data\n if (this.type === \"screenshot\") {\n // Overwrite snapshot position\n Gleap.getInstance().setGlobalDataItem(\"snapshotPosition\", {\n x: window.scrollX,\n y: window.scrollY,\n });\n\n // Disable scroll\n GleapScrollStopper.disableScroll();\n } else {\n // Setup screen recording\n this.setupScreenRecording();\n }\n\n // Hook up the drawing.\n this.screenDrawer = new ScreenDrawer(\n this.captureScreenDrawerRerender.bind(this)\n );\n\n this.setupColorPicker();\n this.setupToolbar();\n }\n\n setupColorPicker() {\n const self = this;\n const selectedColor = document.querySelector(\n \".bb-capture-toolbar-item-selectedcolor\"\n );\n const colorItems = document.querySelectorAll(\n \".bb-capture-toolbar-item-color\"\n );\n const colorpicker = document.querySelector(\n \".bb-capture-toolbar-item-colorpicker\"\n );\n\n for (var i = 0; i < colorItems.length; i++) {\n const colorItem = colorItems[i];\n const hexColor = colorItem.getAttribute(\"data-color\");\n colorItem.style.backgroundColor = hexColor;\n colorItem.onclick = function () {\n if (colorItem) {\n self.screenDrawer.setColor(hexColor);\n if (colorpicker) {\n colorpicker.style.display = \"none\";\n }\n selectedColor.style.backgroundColor = colorItem.style.backgroundColor;\n GleapMarkerManager.setPenColor(hexColor);\n }\n };\n }\n }\n\n static setPenColor(hexColor) {\n const penTips = document.querySelectorAll(\".bb-pen-tip\");\n for (var j = 0; j < penTips.length; j++) {\n penTips[j].style.fill = hexColor;\n }\n }\n\n dismiss() {\n this.showWidgetUI();\n\n if (this.callback) {\n this.callback(false);\n }\n }\n\n setupToolbar() {\n const self = this;\n const toolbar = document.querySelector(\".bb-capture-toolbar\");\n let isDragging = false;\n let currentX;\n let currentY;\n let initialX;\n let initialY;\n let xOffset = 0;\n let yOffset = 0;\n\n const getTransformValues = () => {\n const transform = window.getComputedStyle(toolbar).transform;\n if (transform === 'none') return { x: 0, y: 0 };\n const matrix = new DOMMatrix(transform);\n return { x: matrix.m41, y: matrix.m42 };\n };\n\n this.dragStart = (e) => {\n const { x, y } = getTransformValues();\n xOffset = x;\n yOffset = y;\n\n if (e.type === \"mousedown\") {\n initialX = e.clientX - xOffset;\n initialY = e.clientY - yOffset;\n } else {\n initialX = e.touches[0].clientX - xOffset;\n initialY = e.touches[0].clientY - yOffset;\n }\n isDragging = true;\n };\n\n this.dragEnd = () => {\n isDragging = false;\n };\n\n this.drag = (e) => {\n if (isDragging) {\n e.preventDefault();\n if (e.type === \"mousemove\") {\n currentX = e.clientX - initialX;\n currentY = e.clientY - initialY;\n } else {\n currentX = e.touches[0].clientX - initialX;\n currentY = e.touches[0].clientY - initialY;\n }\n\n xOffset = currentX;\n yOffset = currentY;\n\n toolbar.style.transform = `translate(${currentX}px, ${currentY}px)`;\n }\n };\n\n const dragHandle = document.querySelector(\".bb-capture-toolbar-item[data-type='drag']\");\n\n dragHandle.addEventListener(\"mousedown\", this.dragStart);\n dragHandle.addEventListener(\"touchstart\", this.dragStart);\n document.addEventListener(\"mousemove\", this.drag);\n document.addEventListener(\"touchmove\", this.drag);\n document.addEventListener(\"mouseup\", this.dragEnd);\n document.addEventListener(\"touchend\", this.dragEnd);\n\n // Hook up dismiss button\n const dismissButton = document.querySelector(\".bb-capture-dismiss\");\n dismissButton.onclick = function () {\n self.dismiss();\n };\n\n // Hook up send button\n const nextButton = document.querySelector(\".bb-capture-button-next\");\n if (nextButton) {\n nextButton.onclick = this.showNextStep.bind(this);\n }\n\n const colorpicker = document.querySelector(\n \".bb-capture-toolbar-item-colorpicker\"\n );\n\n // Capture SVG ref\n const captureSVG = document.querySelector(\".bb-capture-svg\");\n\n const chooseTool = function (type, toolbarItem) {\n const toolbarTools = document.querySelectorAll(\n \".bb-capture-toolbar-item-tool\"\n );\n for (let j = 0; j < toolbarTools.length; j++) {\n toolbarTools[j].classList.remove(\"bb-capture-toolbar-item--active\");\n }\n toolbarItem.classList.add(\"bb-capture-toolbar-item--active\");\n self.screenDrawer.setTool(type);\n self.dragCursor.innerHTML = \"\";\n if (type === \"pointer\") {\n captureSVG.style.pointerEvents = \"none\";\n } else {\n captureSVG.style.pointerEvents = \"auto\";\n try {\n var svgClone = toolbarItem.querySelector(\"svg\").cloneNode(true);\n if (svgClone && self.dragCursor) {\n self.dragCursor.appendChild(svgClone);\n }\n } catch (exp) { }\n }\n }\n\n // Setup toolbar items\n var toolbarItems = document.querySelectorAll(\".bb-capture-toolbar-item\");\n for (var i = 0; i < toolbarItems.length; i++) {\n const toolbarItem = toolbarItems[i];\n toolbarItem.onclick = function () {\n const type = toolbarItem.getAttribute(\"data-type\");\n if (colorpicker && type !== \"colorpicker\") {\n colorpicker.style.display = \"none\";\n }\n\n // Mic & recording buttons\n if (type === \"mic\") {\n self.screenRecorder.toggleAudio();\n }\n if (type === \"recording\") {\n if (self.screenRecorder.isRecording) {\n self.screenRecorder.stopScreenRecording();\n } else {\n self.screenRecorder.startScreenRecording();\n chooseTool(\"pointer\", document.querySelector(\".bb-capture-toolbar-item[data-type='pointer']\"));\n }\n }\n\n // Marker buttons\n if (self.type === \"capture\" && !self.screenRecorder.isRecording) {\n // Inactivate buttons.\n return;\n }\n if (\n type === \"pen\" ||\n type === \"blur\" ||\n type === \"rect\" ||\n type === \"pointer\"\n ) {\n chooseTool(type, toolbarItem);\n }\n if (type === \"colorpicker\") {\n if (colorpicker.style.display === \"flex\") {\n colorpicker.style.display = \"none\";\n } else {\n colorpicker.style.display = \"flex\";\n }\n }\n if (type === \"undo\") {\n self.screenDrawer.removeLastAddedPathFromSvg();\n }\n };\n }\n }\n\n captureScreenDrawerRerender() {\n if (!this.screenDrawer) {\n return;\n }\n\n const itemInactiveClass = \"bb-capture-editor-item-inactive\";\n const toolbarItems = document.querySelectorAll(\".bb-capture-toolbar-item\");\n for (var i = 0; i < toolbarItems.length; i++) {\n const toolbarItem = toolbarItems[i];\n const type = toolbarItem.getAttribute(\"data-type\");\n switch (type) {\n case \"undo\":\n if (\n this.screenDrawer.pathBuffer != null &&\n this.screenDrawer.pathBuffer.length > 0\n ) {\n toolbarItem.classList.remove(itemInactiveClass);\n } else {\n toolbarItem.classList.add(itemInactiveClass);\n }\n break;\n default:\n break;\n }\n }\n }\n\n captureRenderer() {\n if (!this.screenRecorder) {\n return;\n }\n\n if (this.screenRecorder.file) {\n Gleap.getInstance().setGlobalDataItem(\"screenRecordingData\", this.screenRecorder.file);\n }\n\n const itemInactiveClass = \"bb-capture-editor-item-inactive\";\n const timerLabel = document.querySelector(\".bb-capture-toolbar-item-timer\");\n const toolbarItems = document.querySelectorAll(\".bb-capture-toolbar-item\");\n const screenRecordingTooltip = document.querySelector(\n \".bb-tooltip-screen-recording\"\n );\n const audioRecordingTooltip = document.querySelector(\n \".bb-tooltip-audio-recording\"\n );\n const captureEditor = document.querySelector(\".bb-capture-editor\");\n const recordingClass = \"bb-capture-editor-recording\";\n const notRecordingClass = \"bb-capture-editor-notrecording\";\n if (this.screenRecorder.isRecording) {\n captureEditor.classList.add(recordingClass);\n captureEditor.classList.remove(notRecordingClass);\n } else {\n captureEditor.classList.add(notRecordingClass);\n captureEditor.classList.remove(recordingClass);\n }\n \n // Update UI.\n const dialog = document.querySelector(\".bb-capture-toolbar\");\n const videoPreviewContainer = document.querySelector(\".bb-capture-preview\");\n videoPreviewContainer.style.display = this.screenRecorder.file\n ? \"flex\"\n : \"none\";\n dialog.style.display = !this.screenRecorder.file ? \"flex\" : \"none\";\n\n for (var i = 0; i < toolbarItems.length; i++) {\n const toolbarItem = toolbarItems[i];\n const type = toolbarItem.getAttribute(\"data-type\");\n switch (type) {\n case \"mic\":\n if (\n this.screenRecorder.audioAvailable &&\n this.screenRecorder.available\n ) {\n toolbarItem.classList.remove(itemInactiveClass);\n if (!this.screenRecorder.audioMuted) {\n toolbarItem.classList.remove(\n \"bb-capture-toolbar-item--inactivecross\"\n );\n audioRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"mute\"\n );\n } else {\n toolbarItem.classList.add(\n \"bb-capture-toolbar-item--inactivecross\"\n );\n audioRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"unmute\"\n );\n }\n } else {\n toolbarItem.classList.add(itemInactiveClass);\n toolbarItem.classList.add(\"bb-capture-toolbar-item--inactivecross\");\n audioRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"browserNotSupported\"\n );\n }\n break;\n\n case \"recording\":\n if (this.screenRecorder.available) {\n toolbarItem.classList.remove(itemInactiveClass);\n if (this.screenRecorder.isRecording) {\n toolbarItem.setAttribute(\"data-active\", \"true\");\n screenRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"stopRecording\"\n );\n timerLabel.style.display = \"block\";\n } else {\n toolbarItem.setAttribute(\"data-active\", \"false\");\n screenRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"startRecording\"\n );\n timerLabel.style.display = \"none\";\n }\n } else {\n // Recording is not available.\n toolbarItem.classList.add(itemInactiveClass);\n screenRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"browserNotSupported\"\n );\n }\n break;\n\n default:\n break;\n }\n }\n }\n\n setupScreenRecording() {\n const self = this;\n\n // Hook preview next button\n const nextButtonPreview = document.querySelector(\n \".bb-capture-preview-sendbutton\"\n );\n nextButtonPreview.onclick = this.showNextStep.bind(this);\n\n // Hook retry button\n const retryButton = document.querySelector(\n \".bb-capture-preview-retrybutton\"\n );\n retryButton.onclick = function () {\n self.screenRecorder.clearPreview();\n if (self.screenDrawer) {\n self.screenDrawer.clear();\n }\n };\n\n // Setup screen recorder\n this.screenRecorder = new GleapScreenRecorder(\n this.captureRenderer.bind(this),\n GleapTranslationManager.translateText(\n \"accessToScreenSharingDenied\"\n )\n );\n }\n}\n","import {\n GleapFrameManager,\n GleapFeedbackButtonManager,\n GleapConfigManager,\n} from \"./Gleap\";\n\nexport default class GleapTranslationManager {\n overrideLanguage = \"\";\n isRTLLayout = false;\n\n // GleapTranslationManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapTranslationManager();\n }\n return this.instance;\n }\n\n /**\n * Returns the language to override the default language.\n * @returns {string}\n */\n getOverrideLanguage() {\n return this.overrideLanguage;\n }\n\n /**\n * Sets the language to override the default language.\n * @param {*} language\n */\n setOverrideLanguage(language) {\n this.overrideLanguage = language;\n }\n\n updateRTLSupport() {\n // Update RTL support.\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n\n this.isRTLLayout = false;\n if (\n flowConfig &&\n flowConfig.localizationOptions &&\n flowConfig.localizationOptions.rtl\n ) {\n this.isRTLLayout = true;\n }\n\n GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n GleapFrameManager.getInstance().updateFrameStyle();\n }\n\n getActiveLanguage() {\n var language = \"en\";\n if (typeof navigator !== \"undefined\") {\n language = navigator.language.toLowerCase();\n }\n\n // Get language from HTML lang attribute if available\n if (typeof document !== \"undefined\" && document.documentElement) {\n const htmlLang = document.documentElement.lang;\n if (htmlLang && htmlLang.trim() !== \"\") {\n language = htmlLang.toLowerCase().trim();\n }\n }\n\n if (this.overrideLanguage && this.overrideLanguage !== \"\") {\n language = this.overrideLanguage.toLowerCase();\n }\n\n return language;\n }\n\n static translateText(key) {\n if (!key) {\n return \"\";\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const staticTranslation = flowConfig.staticTranslations;\n\n if (staticTranslation && staticTranslation[key]) {\n return staticTranslation[key];\n }\n\n return key;\n }\n\n static translateTextWithVars(key, vars) {\n if (!key) {\n return \"\";\n }\n\n var template = this.translateText(key);\n if (!template) {\n return \"\";\n }\n\n return template.replace(/{(\\w+)}/g, function (_, key) {\n return vars[key];\n });\n }\n}\n","import Gleap from \"./Gleap\";\n\nexport default class GleapShortcutListener {\n shortCutListener = undefined;\n\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapShortcutListener();\n }\n return this.instance;\n }\n\n start() {\n if (this.shortCutListener) {\n return;\n }\n\n const charForEvent = function (event) {\n var code;\n\n if (event.key !== undefined) {\n code = event.key;\n } else if (event.keyIdentifier !== undefined) {\n code = event.keyIdentifier;\n } else if (event.keyCode !== undefined) {\n code = event.keyCode;\n }\n\n return code;\n };\n\n this.shortCutListener = document.addEventListener(\"keyup\", function (e) {\n const char = charForEvent(e);\n if (\n e.ctrlKey &&\n (char === \"u\" || char === \"U\" || char === 85)\n ) {\n Gleap.startFeedbackFlowWithOptions(\"bugreporting\", {\n autostartDrawing: true\n });\n }\n });\n }\n\n stop() {\n if (this.shortCutListener) {\n document.removeEventListener(\"keyup\", this.shortCutListener);\n this.shortCutListener = undefined;\n }\n }\n}","\nexport default class GleapPreFillManager {\n formPreFill = {};\n \n // GleapPreFillManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapPreFillManager();\n }\n return this.instance;\n }\n }\n ","import Gleap, {\n GleapFeedbackButtonManager,\n GleapConfigManager,\n GleapFrameManager,\n GleapSession,\n GleapAudioManager,\n GleapTranslationManager,\n GleapEventManager,\n} from \"./Gleap\";\nimport { loadFromGleapCache, saveToGleapCache } from \"./GleapHelper\";\nimport { loadIcon } from \"./UI\";\n\nexport default class GleapNotificationManager {\n notificationContainer = null;\n notifications = [];\n unreadCount = 0;\n unreadNotificationsKey = \"unread-notifications\";\n isTabActive = true;\n showNotificationBadge = true;\n\n // Keep track of the current index of news being shown\n currentNewsIndex = 0;\n\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapNotificationManager();\n }\n return this.instance;\n }\n\n constructor() {}\n\n updateTabBarNotificationCount() {\n GleapEventManager.notifyEvent(\"unread-count-changed\", this.unreadCount);\n }\n\n injectNotificationUI() {\n if (this.notificationContainer) {\n return;\n }\n\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-notification-container gleap-font\";\n document.body.appendChild(elem);\n this.notificationContainer = elem;\n\n this.updateContainerStyle();\n this.reloadNotificationsFromCache();\n }\n\n reloadNotificationsFromCache() {\n try {\n const notificationsFromCache = loadFromGleapCache(\n this.unreadNotificationsKey\n );\n if (notificationsFromCache && notificationsFromCache.length > 0) {\n let nots = notificationsFromCache.filter(\n (notification) =>\n new Date(notification.createdAt) >\n new Date(Date.now() - 1 * 60 * 60 * 1000)\n );\n\n if (nots.length > 2) {\n this.notifications = nots.splice(0, nots.length - 2);\n } else {\n this.notifications = nots;\n }\n this.renderNotifications();\n }\n } catch (exp) {}\n }\n\n setNotificationCount(unreadCount) {\n this.unreadCount = unreadCount;\n this.updateTabBarNotificationCount();\n\n // Update the badge counter.\n GleapFeedbackButtonManager.getInstance().updateNotificationBadge(\n this.unreadCount\n );\n }\n\n showNotification(notification) {\n if (!(this.notificationContainer && notification && notification.data)) {\n return;\n }\n\n const notificationsForOutbound = this.notifications.find(\n (e) => notification.outbound === e.outbound\n );\n if (!notificationsForOutbound) {\n this.notifications.push(notification);\n\n // Play sound only if it's a new one\n if (notification.sound) {\n GleapAudioManager.ping();\n }\n }\n if (this.notifications.length > 2) {\n this.notifications.shift();\n }\n\n // Persist notifications.\n saveToGleapCache(this.unreadNotificationsKey, this.notifications);\n\n this.renderNotifications();\n }\n\n /**\n * Renders notifications. For news-type notifications, only show\n * one at a time if there are multiple, with a \"Next\" button to cycle.\n * The \"Next\" button + pagination are placed within the news content area.\n *\n * - Sorts news notifications by createdAt (oldest first).\n * - Shows \"Done\" on the last news item instead of \"Next\".\n */\n renderNotifications() {\n if (!this.notificationContainer) {\n return;\n }\n\n // Clear the existing notifications in the container (UI only).\n this.clearAllNotifications(true);\n\n // Append a close button (which clears everything).\n const clearElem = document.createElement(\"div\");\n clearElem.onclick = () => {\n this.clearAllNotifications();\n // Reset the news index when everything is closed\n this.currentNewsIndex = 0;\n };\n clearElem.className = \"gleap-notification-close\";\n clearElem.innerHTML = loadIcon(\"dismiss\");\n this.notificationContainer.appendChild(clearElem);\n\n // Separate out news notifications vs. others, then sort news by date ascending\n const newsNotifications = this.notifications\n .filter((n) => n.data.news)\n .sort((a, b) => new Date(a.createdAt) - new Date(b.createdAt));\n\n const otherNotifications = this.notifications.filter((n) => !n.data.news);\n\n // --- Render NEWS notifications (with pagination) ---\n if (newsNotifications.length > 0) {\n // We only show ONE news item at a time if there's more than one\n const currentIndex =\n this.currentNewsIndex < newsNotifications.length\n ? this.currentNewsIndex\n : 0;\n const currentNews = newsNotifications[currentIndex];\n\n // Main wrapper for the news notification\n const newsElem = document.createElement(\"div\");\n newsElem.className = \"gleap-notification-item-news\";\n\n // The container that holds image + content\n const newsContainerElem = document.createElement(\"div\");\n newsContainerElem.className = \"gleap-notification-item-news-container\";\n\n // Create the image element (clickable)\n if (\n currentNews.data.coverImageUrl &&\n currentNews.data.coverImageUrl !== \"\" &&\n !currentNews.data.coverImageUrl.includes(\"NewsImagePlaceholder\")\n ) {\n const newsImageElem = document.createElement(\"img\");\n newsImageElem.className = \"gleap-notification-item-news-image\";\n newsImageElem.src = currentNews.data.coverImageUrl;\n\n // Only the image is clickable\n newsImageElem.onclick = (e) => {\n e.stopPropagation();\n this.openNews(currentNews);\n };\n newsContainerElem.appendChild(newsImageElem);\n }\n\n // The content container\n const newsContentElem = document.createElement(\"div\");\n newsContentElem.className = \"gleap-notification-item-news-content\";\n\n // Title (clickable)\n const newsTitleElem = document.createElement(\"div\");\n newsTitleElem.className = \"gleap-notification-item-news-content-title\";\n\n let content = currentNews.data.text || \"\";\n content = content.replaceAll(\n \"{{name}}\",\n GleapSession.getInstance().getName()\n );\n newsTitleElem.innerText = content;\n\n // Only the title is clickable\n newsTitleElem.onclick = (e) => {\n e.stopPropagation();\n this.openNews(currentNews);\n };\n\n newsContentElem.appendChild(newsTitleElem);\n\n // Description / Sender\n const descHTML = this.renderDescription(currentNews);\n if (descHTML) {\n const descElem = document.createElement(\"div\");\n descElem.className = \"gleap-notification-item-news-preview\";\n descElem.innerHTML = descHTML;\n newsContentElem.appendChild(descElem);\n }\n\n // If there's more than one news item, show pagination + next/done button\n if (newsNotifications.length > 1) {\n // Pagination container (still inside .gleap-notification-item-news-content)\n const paginationElem = document.createElement(\"div\");\n paginationElem.className = \"gleap-news-pagination\";\n\n // Show current item / total\n const pageIndicator = document.createElement(\"span\");\n pageIndicator.className = \"gleap-news-page-indicator\";\n pageIndicator.innerText = `${currentIndex + 1} / ${\n newsNotifications.length\n }`;\n paginationElem.appendChild(pageIndicator);\n\n // Next or Done button\n const nextBtn = document.createElement(\"button\");\n nextBtn.className = \"gleap-news-next-button\";\n\n if (currentIndex < newsNotifications.length - 1) {\n nextBtn.innerText = GleapTranslationManager.translateText(`next`);\n nextBtn.onclick = (e) => {\n e.stopPropagation(); // so we can click the button freely\n this.currentNewsIndex++;\n this.renderNotifications();\n };\n } else {\n nextBtn.innerText = GleapTranslationManager.translateText(`done`);\n nextBtn.onclick = (e) => {\n e.stopPropagation();\n this.clearAllNotifications();\n this.currentNewsIndex = 0;\n };\n }\n paginationElem.appendChild(nextBtn);\n newsContentElem.appendChild(paginationElem);\n }\n\n // Append content to container\n newsContainerElem.appendChild(newsContentElem);\n // Append container to the main element\n newsElem.appendChild(newsContainerElem);\n // Finally append to the notification container\n this.notificationContainer.appendChild(newsElem);\n }\n\n // --- Render OTHER notifications normally ---\n for (let i = 0; i < otherNotifications.length; i++) {\n const notification = otherNotifications[i];\n let content = notification.data.text || \"\";\n // Replace placeholders\n content = content.replaceAll(\n \"{{name}}\",\n GleapSession.getInstance().getName()\n );\n\n const elem = document.createElement(\"div\");\n elem.onclick = () => {\n if (notification.data.conversation) {\n Gleap.openConversation(\n notification.data.conversation.shareToken,\n true\n );\n } else if (notification.data.checklist) {\n Gleap.openChecklist(notification.data.checklist.id, true);\n } else {\n Gleap.open();\n }\n };\n\n // Check if it's a checklist type\n if (notification.data.checklist) {\n let progress = Math.round(\n (notification.data.currentStep / notification.data.totalSteps) * 100\n );\n if (progress < 100) {\n progress += 4;\n }\n\n elem.className = \"gleap-notification-item-checklist\";\n elem.innerHTML = `\n
\n
\n
\n ${notification.data.text}\n
\n
\n
\n
\n
\n \n \n \n ${notification.data.nextStepTitle}\n
\n
\n
`;\n } else {\n // Standard non-news notification\n elem.className = \"gleap-notification-item\";\n elem.innerHTML = `\n ${\n notification.data.sender &&\n notification.data.sender.profileImageUrl &&\n ``\n }\n
\n ${\n notification.data.sender\n ? `
\n ${notification.data.sender.name}\n
`\n : \"\"\n }\n
${content}
\n
`;\n }\n this.notificationContainer.appendChild(elem);\n }\n\n const hasNotifications =\n newsNotifications.length > 0 || otherNotifications.length > 0;\n if (!hasNotifications) {\n // Clear the notification container\n this.clearAllNotifications(true);\n }\n }\n\n /**\n * Helper to open news from a given notification.\n */\n openNews(notification) {\n if (notification.data.news) {\n Gleap.openNewsArticle(notification.data.news.id, true);\n } else {\n Gleap.open();\n }\n }\n\n /**\n * Helper to render preview or sender info for news notifications.\n */\n renderDescription(notification) {\n const { previewText, sender } = notification.data;\n if (previewText && previewText.length > 0) {\n return previewText;\n } else if (sender) {\n // Return HTML for the sender name + optional image\n return `\n
\n ${\n sender.profileImageUrl\n ? `\"${sender.name}\"`\n : \"\"\n }\n ${sender.name}\n
\n `;\n }\n return \"\";\n }\n\n /**\n * Clears all notifications from the container.\n *\n * @param {boolean} uiOnly - Whether to only clear the UI or also the notifications.\n */\n clearAllNotifications(uiOnly = false) {\n if (!this.notificationContainer) {\n return;\n }\n\n if (!uiOnly) {\n this.notifications = [];\n // Reset currentNewsIndex whenever we clear them out\n this.currentNewsIndex = 0;\n saveToGleapCache(this.unreadNotificationsKey, this.notifications);\n }\n\n while (this.notificationContainer.firstChild) {\n this.notificationContainer.removeChild(\n this.notificationContainer.firstChild\n );\n }\n }\n\n updateContainerStyle() {\n if (!this.notificationContainer) {\n return;\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const classLeft = \"gleap-notification-container--left\";\n const classNoButton = \"gleap-notification-container--no-button\";\n this.notificationContainer.classList.remove(classLeft);\n this.notificationContainer.classList.remove(classNoButton);\n\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_BOTTOM_LEFT\n ) {\n this.notificationContainer.classList.add(classLeft);\n }\n\n if (GleapFeedbackButtonManager.getInstance().buttonHidden === null) {\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_NONE\n ) {\n this.notificationContainer.classList.add(classNoButton);\n }\n } else {\n if (GleapFeedbackButtonManager.getInstance().buttonHidden) {\n this.notificationContainer.classList.add(classNoButton);\n }\n }\n\n this.notificationContainer.setAttribute(\n \"dir\",\n GleapTranslationManager.getInstance().isRTLLayout ? \"rtl\" : \"ltr\"\n );\n }\n}\n","import Gleap, { GleapFrameManager } from \"./Gleap\";\n\nexport default class GleapBannerManager {\n bannerUrl = \"https://outboundmedia.gleap.io\";\n bannerContainer = null;\n bannerData = null;\n\n // GleapBannerManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapBannerManager();\n }\n return this.instance;\n }\n\n constructor() {\n this.startCommunication();\n }\n\n setBannerUrl(url) {\n this.bannerUrl = url;\n }\n\n startCommunication() {\n // Add window message listener.\n window.addEventListener(\"message\", (event) => {\n if (!this.bannerUrl?.includes(event.origin)) {\n return;\n }\n\n try {\n const data = JSON.parse(event.data);\n\n if (data?.type !== \"BANNER\") {\n return;\n }\n\n if (data.name === \"banner-loaded\" && this.bannerData) {\n this.sendMessage({\n name: \"banner-data\",\n data: this.bannerData,\n });\n }\n if (data.name === \"banner-height\") {\n document.documentElement.style.setProperty(\n \"--gleap-margin-top\",\n data.data.height + \"px\"\n );\n }\n if (data.name === \"banner-data-set\") {\n document.body.classList.add(\"gleap-b-shown\");\n\n if (this.bannerData?.format === \"floating\") {\n document.body.classList.add(\"gleap-b-f\");\n }\n }\n if (data.name === \"banner-close\") {\n this.removeBannerUI();\n }\n if (data.name === \"start-conversation\") {\n Gleap.startBot(data.data?.botId);\n }\n if (data.name === \"start-custom-action\") {\n Gleap.triggerCustomAction(data.data?.action);\n }\n if (data.name === \"start-product-tour\") {\n Gleap.startProductTour(data.data?.tourId, true);\n }\n if (data.name === \"open-url\") {\n const url = data.data;\n const newTab = data.newTab ? true : false;\n GleapFrameManager.getInstance().urlHandler(url, newTab);\n }\n if (data.name === \"show-form\") {\n Gleap.startFeedbackFlow(data.data?.formId);\n }\n if (data.name === \"show-survey\") {\n Gleap.showSurvey(data.data?.formId, data.data?.surveyFormat);\n }\n if (data.name === \"show-news-article\") {\n Gleap.openNewsArticle(data.data?.articleId);\n }\n if (data.name === \"show-help-article\") {\n Gleap.openHelpCenterArticle(data.data?.articleId);\n }\n if (data.name === \"show-checklist\") {\n Gleap.startChecklist(\n data.data?.checklistId,\n true,\n data.data?.sharedKey\n );\n }\n } catch (exp) {}\n });\n }\n\n removeBannerUI() {\n if (this.bannerContainer) {\n document.body.removeChild(this.bannerContainer);\n this.bannerContainer = null;\n }\n\n document.body.classList.remove(\"gleap-b-shown\");\n document.body.classList.remove(\"gleap-b-f\");\n }\n\n /**\n * Injects the feedback button into the current DOM.\n */\n injectBannerUI(bannerData) {\n if (!document.body) {\n return false;\n }\n\n if (this.bannerContainer) {\n this.removeBannerUI();\n }\n\n this.bannerData = bannerData;\n\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-b\";\n elem.innerHTML = ``;\n document.body.appendChild(elem);\n this.bannerContainer = elem;\n }\n\n sendMessage(data) {\n try {\n const gleapBFrame = document.querySelector(\".gleap-b-frame\");\n if (gleapBFrame && gleapBFrame.contentWindow) {\n gleapBFrame.contentWindow.postMessage(\n JSON.stringify({\n ...data,\n type: \"banner\",\n }),\n \"*\"\n );\n }\n } catch (e) {}\n }\n\n showBanner(bannerData) {\n this.injectBannerUI(bannerData);\n }\n}\n","import Gleap, { GleapConfigManager, GleapFrameManager } from \"./Gleap\";\n\nexport default class GleapModalManager {\n modalUrl = \"https://outboundmedia.gleap.io/modal\";\n modalContainer = null;\n modalData = null;\n modalBackdropClickListener = null;\n\n // singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapModalManager();\n }\n return this.instance;\n }\n\n constructor() {\n this._listenForMessages();\n }\n\n setModalUrl(url) {\n this.modalUrl = url;\n }\n\n _listenForMessages() {\n window.addEventListener(\"message\", (event) => {\n if (!this.modalUrl?.includes(event.origin)) {\n return;\n }\n\n try {\n const data = JSON.parse(event.data);\n\n if (data?.type !== \"MODAL\") {\n return;\n }\n\n if (data.name === \"modal-loaded\" && this.modalData) {\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const primaryColor = flowConfig.color ? flowConfig.color : \"#485BFF\";\n const backgroundColor = flowConfig.backgroundColor\n ? flowConfig.backgroundColor\n : \"#FFFFFF\";\n\n this._postMessage({\n name: \"modal-data\",\n data: {\n ...this.modalData,\n primaryColor: primaryColor,\n backgroundColor: backgroundColor,\n },\n });\n }\n if (data.name === \"modal-height\") {\n const height = data?.data?.height;\n if (height) {\n // Set the height of the modal iframe\n const iframe =\n this.modalContainer.querySelector(\".gleap-modal-frame\");\n if (iframe) {\n iframe.style.height = `${height}px`;\n }\n }\n }\n if (data.name === \"modal-data-set\") {\n // TODO: Implement\n }\n if (data.name === \"modal-close\") {\n this.hideModal();\n }\n if (data.name === \"start-conversation\") {\n Gleap.startBot(data.data?.botId);\n }\n if (data.name === \"start-custom-action\") {\n Gleap.triggerCustomAction(data.data?.action);\n }\n if (data.name === \"start-product-tour\") {\n Gleap.startProductTour(data.data?.tourId, true);\n }\n if (data.name === \"open-url\") {\n const url = data.data;\n const newTab = data.newTab ? true : false;\n GleapFrameManager.getInstance().urlHandler(url, newTab);\n }\n if (data.name === \"show-form\") {\n Gleap.startFeedbackFlow(data.data?.formId);\n }\n if (data.name === \"show-survey\") {\n Gleap.showSurvey(data.data?.formId, data.data?.surveyFormat);\n }\n if (data.name === \"show-news-article\") {\n Gleap.openNewsArticle(data.data?.articleId);\n }\n if (data.name === \"show-help-article\") {\n Gleap.openHelpCenterArticle(data.data?.articleId);\n }\n if (data.name === \"show-checklist\") {\n Gleap.startChecklist(\n data.data?.checklistId,\n true,\n data.data?.sharedKey\n );\n }\n } catch (exp) {}\n });\n }\n\n _injectModalUI(modalData) {\n if (!document.body) return false;\n\n if (this.modalContainer) {\n this.hideModal();\n }\n\n this.modalData = modalData;\n\n const wrapper = document.createElement(\"div\");\n wrapper.className = \"gleap-modal-wrapper\";\n wrapper.innerHTML = `\n
\n
\n \n
\n `;\n document.body.appendChild(wrapper);\n this.modalContainer = wrapper;\n\n // Add on backdrop click listener\n this.modalBackdropClickListener = this.modalContainer\n .querySelector(\".gleap-modal-backdrop\")\n .addEventListener(\"click\", () => {\n if (this.modalData?.showCloseButton ?? true) {\n this.hideModal();\n }\n });\n\n // lock background scroll\n document.body.classList.add(\"gleap-modal-open\");\n }\n\n _postMessage(message) {\n try {\n const frame = this.modalContainer.querySelector(\".gleap-modal-frame\");\n if (frame?.contentWindow) {\n frame.contentWindow.postMessage(\n JSON.stringify({ ...message, type: \"modal\" }),\n this.modalUrl\n );\n }\n } catch (err) {}\n }\n\n showModal(modalData) {\n if (modalData && modalData.config) {\n this._injectModalUI(modalData.config);\n }\n }\n\n hideModal() {\n if (!this.modalContainer) return;\n\n if (this.modalBackdropClickListener) {\n this.modalContainer\n .querySelector(\".gleap-modal-backdrop\")\n .removeEventListener(\"click\", this.modalBackdropClickListener);\n }\n\n document.body.removeChild(this.modalContainer);\n this.modalContainer = null;\n document.body.classList.remove(\"gleap-modal-open\");\n }\n}\n","export default class GleapAudioManager {\n static audio;\n static settings = {\n play: true\n };\n\n static playSound(play) {\n this.settings.play = play;\n }\n\n static ping() {\n try {\n if (!this.settings.play) {\n return;\n }\n\n if (!this.audio) {\n this.audio = new Audio('https://js.gleap.io/res/ping.mp3');\n }\n\n const playPromise = this.audio.play();\n if (playPromise !== undefined) {\n playPromise.then(_ => { })\n .catch(error => { });\n }\n } catch (exp) { }\n }\n}\n","export default class GleapTagManager {\n tags = [];\n\n // GleapTagManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapTagManager();\n }\n return this.instance;\n }\n\n /**\n * Returns the tags\n * @returns {*}\n */\n getTags() {\n return this.tags;\n }\n\n /**\n * Sets the tags sent with every ticket.\n * @param {*} tags Array of strings\n */\n setTags(tags) {\n this.tags = tags;\n }\n}\n","/**\n * Returns the Tag of the element\n * @param { Object } element\n * @return { String }\n */\nexport function getID( el )\n{\n const id = el.getAttribute( 'id' );\n\n if( id !== null && id !== '')\n {\n // if the ID starts with a number or contains \":\" selecting with a hash will cause a DOMException\n return id.match(/(?:^\\d|:)/) ? `[id=\"${id}\"]` : '#' + id;\n }\n return null;\n}\n","/**\n * Get class names for an element\n *\n * @pararm { Element } el\n * @return { Array }\n */\nexport function getClasses( el )\n{\n if( !el.hasAttribute( 'class' ) )\n {\n return [];\n }\n\n try {\n let classList = Array.prototype.slice.call( el.classList )\n\n // return only the valid CSS selectors based on RegEx\n return classList.filter(item => !/^[a-z_-][a-z\\d_-]*$/i.test( item ) ? null : item );\n } catch (e) {\n let className = el.getAttribute( 'class' );\n\n // remove duplicate and leading/trailing whitespaces\n className = className.trim().replace( /\\s+/g, ' ' );\n\n // split into separate classnames\n return className.split( ' ' );\n }\n}\n\n/**\n * Returns the Class selectors of the element\n * @param { Object } element\n * @return { Array }\n */\nexport function getClassSelectors( el )\n{\n const classList = getClasses( el ).filter( Boolean );\n return classList.map( cl => `.${cl}` );\n}\n","/**\n * Recursively combinate items.\n * @param { Array } result\n * @param { Array } items\n * @param { Array } data\n * @param { Number } start\n * @param { Number } end\n * @param { Number } index\n * @param { Number } k\n */\nfunction kCombinations( result, items, data, start, end, index, k )\n{\n if( index === k )\n {\n result.push( data.slice( 0, index ).join( '' ) );\n return;\n }\n\n for( let i = start; i <= end && end - i + 1 >= k - index; ++i )\n {\n data[index] = items[i];\n kCombinations( result, items, data, i + 1, end, index + 1, k );\n }\n}\n\n/**\n * Returns all the possible selector combinations\n * @param { Array } items\n * @param { Number } k\n * @return { Array }\n */\nexport function getCombinations( items, k )\n{\n const result = [],\n n = items.length,\n data = [];\n\n for( var l = 1; l <= k; ++l )\n {\n kCombinations( result, items, data, 0, n - 1, 0, l );\n }\n\n return result;\n}\n","/**\n * Determines if the passed el is a DOM element\n */\nexport function isElement( el )\n{\n let isElem;\n\n if ( typeof HTMLElement === 'object' )\n {\n isElem = el instanceof HTMLElement;\n }\n else\n {\n isElem = !!el && ( typeof el === 'object' ) && el.nodeType === 1 && typeof el.nodeName === 'string';\n }\n return isElem;\n}\n","import { isElement } from './isElement';\n\n/**\n * Returns the selectors based on the position of the element relative to its siblings\n * @param { Object } element\n * @return { Array }\n */\nexport function getNthChild( element )\n{\n let counter = 0;\n let k;\n let sibling;\n const { parentNode } = element;\n\n if( Boolean( parentNode ) )\n {\n const { childNodes } = parentNode;\n const len = childNodes.length;\n for ( k = 0; k < len; k++ )\n {\n sibling = childNodes[ k ];\n if( isElement( sibling ) )\n {\n counter++;\n if( sibling === element )\n {\n return `:nth-child(${counter})`;\n }\n }\n }\n }\n return null;\n}\n","/**\n * Returns the Tag of the element\n * @param { Object } element\n * @return { String }\n */\nexport function getTag( el )\n{\n return el.tagName.toLowerCase().replace(/:/g, '\\\\:');\n}\n","/**\n * Checks if the selector is unique\n * @param { Object } element\n * @param { String } selector\n * @return { Array }\n */\nexport function isUnique( el, selector )\n{\n if( !Boolean( selector ) ) return false;\n const elems = el.ownerDocument.querySelectorAll( selector );\n return elems.length === 1 && elems[ 0 ] === el;\n}\n","/**\n * Expose `unique`\n */\n\nimport { getID } from './getID';\nimport { getClassSelectors } from './getClasses';\nimport { getCombinations } from './getCombinations';\nimport { getAttributes } from './getAttributes';\nimport { getNthChild } from './getNthChild';\nimport { getTag } from './getTag';\nimport { isUnique } from './isUnique';\nimport { getParents } from './getParents';\n\n\n/**\n * Returns all the selectors of the elmenet\n * @param { Object } element\n * @return { Object }\n */\nfunction getAllSelectors( el, selectors, attributesToIgnore )\n{\n const funcs =\n {\n 'Tag' : getTag,\n 'NthChild' : getNthChild,\n 'Attributes' : elem => getAttributes( elem, attributesToIgnore ),\n 'Class' : getClassSelectors,\n 'ID' : getID,\n };\n\n return selectors.reduce( ( res, next ) =>\n {\n res[ next ] = funcs[ next ]( el );\n return res;\n }, {} );\n}\n\n/**\n * Tests uniqueNess of the element inside its parent\n * @param { Object } element\n * @param { String } Selectors\n * @return { Boolean }\n */\nfunction testUniqueness( element, selector )\n{\n try {\n const { parentNode } = element;\n const elements = parentNode.querySelectorAll( selector );\n return elements.length === 1 && elements[ 0 ] === element;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tests all selectors for uniqueness and returns the first unique selector.\n * @param { Object } element\n * @param { Array } selectors\n * @return { String }\n */\nfunction getFirstUnique( element, selectors )\n{\n return selectors.find( testUniqueness.bind( null, element ) );\n}\n\n/**\n * Checks all the possible selectors of an element to find one unique and return it\n * @param { Object } element\n * @param { Array } items\n * @param { String } tag\n * @return { String }\n */\nfunction getUniqueCombination( element, items, tag )\n{\n let combinations = getCombinations( items, 3 ),\n firstUnique = getFirstUnique( element, combinations );\n\n if( Boolean( firstUnique ) )\n {\n return firstUnique;\n }\n\n if( Boolean( tag ) )\n {\n combinations = combinations.map( combination => tag + combination );\n firstUnique = getFirstUnique( element, combinations );\n\n if( Boolean( firstUnique ) )\n {\n return firstUnique;\n }\n }\n\n return null;\n}\n\n/**\n * Returns a uniqueSelector based on the passed options\n * @param { DOM } element\n * @param { Array } options\n * @return { String }\n */\nfunction getUniqueSelector( element, selectorTypes, attributesToIgnore, excludeRegex )\n{\n let foundSelector;\n\n const elementSelectors = getAllSelectors( element, selectorTypes, attributesToIgnore );\n\n if( excludeRegex && excludeRegex instanceof RegExp )\n {\n elementSelectors.ID = excludeRegex.test( elementSelectors.ID ) ? null : elementSelectors.ID;\n elementSelectors.Class = elementSelectors.Class.filter( className => !excludeRegex.test( className ) );\n }\n\n for( let selectorType of selectorTypes )\n {\n const { ID, Tag, Class : Classes, Attributes, NthChild } = elementSelectors;\n switch ( selectorType )\n {\n case 'ID' :\n if ( Boolean( ID ) && testUniqueness( element, ID ) )\n {\n return ID;\n }\n break;\n\n case 'Tag':\n if ( Boolean( Tag ) && testUniqueness( element, Tag ) )\n {\n return Tag;\n }\n break;\n\n case 'Class':\n if ( Boolean( Classes ) && Classes.length )\n {\n foundSelector = getUniqueCombination( element, Classes, Tag );\n if (foundSelector) {\n return foundSelector;\n }\n }\n break;\n\n case 'Attributes':\n if ( Boolean( Attributes ) && Attributes.length )\n {\n foundSelector = getUniqueCombination( element, Attributes, Tag );\n if ( foundSelector )\n {\n return foundSelector;\n }\n }\n break;\n\n case 'NthChild':\n if ( Boolean( NthChild ) )\n {\n return NthChild\n }\n }\n }\n return '*';\n}\n\n/**\n * Generate unique CSS selector for given DOM element\n *\n * @param {Element} el\n * @return {String}\n * @api private\n */\n\nexport default function unique( el, options={} )\n{\n const {\n selectorTypes = ['ID', 'Class', 'Tag', 'NthChild'],\n attributesToIgnore = ['id', 'class', 'length'],\n excludeRegex = null,\n } = options;\n const allSelectors = [];\n const parents = getParents( el );\n\n for( let elem of parents )\n {\n const selector = getUniqueSelector( elem, selectorTypes, attributesToIgnore, excludeRegex );\n if( Boolean( selector ) )\n {\n allSelectors.push( selector );\n }\n }\n\n const selectors = [];\n for( let it of allSelectors )\n {\n selectors.unshift( it );\n const selector = selectors.join( ' > ' );\n if( isUnique( el, selector ) )\n {\n return selector;\n }\n }\n\n return null;\n}\n","/**\n * Returns the Attribute selectors of the element\n * @param { DOM Element } element\n * @param { Array } array of attributes to ignore\n * @return { Array }\n */\nexport function getAttributes( el, attributesToIgnore = ['id', 'class', 'length'] )\n{\n const { attributes } = el;\n const attrs = [ ...attributes ];\n\n return attrs.reduce( ( sum, next ) =>\n {\n if ( ! ( attributesToIgnore.indexOf( next.nodeName ) > -1 ) )\n {\n sum.push( `[${next.nodeName}=\"${next.value}\"]` );\n }\n return sum;\n }, [] );\n}\n","import { isElement } from './isElement';\n\n/**\n * Returns all the element and all of its parents\n * @param { DOM Element }\n * @return { Array of DOM elements }\n */\nexport function getParents( el )\n{\n const parents = [];\n let currentElement = el;\n while( isElement( currentElement ) )\n {\n parents.push( currentElement );\n currentElement = currentElement.parentNode;\n }\n\n return parents;\n}\n","/**\n * Utility function to get the bounding rectangle of an element.\n * @param {HTMLElement} el - The target element.\n * @returns {Object} An object containing x, y, width, and height.\n */\nfunction getElementBounds(el) {\n const rect = el.getBoundingClientRect();\n return {\n x: window.pageXOffset + rect.left,\n y: window.pageYOffset + rect.top,\n width: el.offsetWidth,\n height: el.offsetHeight,\n };\n}\n\n/**\n * Class representing an overlay element.\n */\nclass ElementOverlay {\n /**\n * Create an ElementOverlay.\n * @param {Object} options - Configuration options.\n * @param {string} [options.className] - CSS class name for the overlay.\n * @param {Object} [options.style] - Style overrides for the overlay.\n */\n constructor(options) {\n // Create and style the overlay element.\n this.overlay = document.createElement(\"div\");\n this.overlay.className = options.className || \"_ext-element-overlay\";\n this.overlay.style.background =\n (options.style && options.style.background) || \"rgba(250, 240, 202, 0.2)\";\n this.overlay.style.borderColor =\n (options.style && options.style.borderColor) || \"#F95738\";\n this.overlay.style.borderStyle =\n (options.style && options.style.borderStyle) || \"solid\";\n this.overlay.style.borderRadius =\n (options.style && options.style.borderRadius) || \"1px\";\n this.overlay.style.borderWidth =\n (options.style && options.style.borderWidth) || \"1px\";\n this.overlay.style.boxSizing =\n (options.style && options.style.boxSizing) || \"border-box\";\n this.overlay.style.cursor =\n (options.style && options.style.cursor) || \"crosshair\";\n this.overlay.style.position =\n (options.style && options.style.position) || \"absolute\";\n this.overlay.style.zIndex =\n (options.style && options.style.zIndex) || \"2147483647\";\n this.overlay.style.margin =\n (options.style && options.style.margin) || \"0px\";\n this.overlay.style.padding =\n (options.style && options.style.padding) || \"0px\";\n\n // Create a container that will host a Shadow DOM.\n this.shadowContainer = document.createElement(\"div\");\n this.shadowContainer.className = \"_ext-element-overlay-container\";\n this.shadowContainer.style.position = \"absolute\";\n this.shadowContainer.style.top = \"0px\";\n this.shadowContainer.style.left = \"0px\";\n this.shadowContainer.style.margin = \"0px\";\n this.shadowContainer.style.padding = \"0px\";\n this.shadowRoot = this.shadowContainer.attachShadow({ mode: \"open\" });\n }\n\n /**\n * Adds the overlay to the DOM.\n * @param {Node} parent - The parent element.\n * @param {boolean} useShadowDOM - Whether to use Shadow DOM.\n */\n addToDOM(parent, useShadowDOM) {\n this.usingShadowDOM = useShadowDOM;\n if (useShadowDOM) {\n parent.insertBefore(this.shadowContainer, parent.firstChild);\n this.shadowRoot.appendChild(this.overlay);\n } else {\n parent.appendChild(this.overlay);\n }\n }\n\n /**\n * Removes the overlay from the DOM.\n */\n removeFromDOM() {\n this.setBounds({ x: 0, y: 0, width: 0, height: 0 });\n if (this.overlay.remove) {\n this.overlay.remove();\n } else if (this.overlay.parentNode) {\n this.overlay.parentNode.removeChild(this.overlay);\n }\n if (this.usingShadowDOM) {\n if (this.shadowContainer.remove) {\n this.shadowContainer.remove();\n } else if (this.shadowContainer.parentNode) {\n this.shadowContainer.parentNode.removeChild(this.shadowContainer);\n }\n }\n }\n\n /**\n * Enables pointer events on the overlay.\n */\n captureCursor() {\n this.overlay.style.pointerEvents = \"auto\";\n }\n\n /**\n * Disables pointer events on the overlay.\n */\n ignoreCursor() {\n this.overlay.style.pointerEvents = \"none\";\n }\n\n /**\n * Sets the position and size of the overlay.\n * @param {Object} bounds - The bounding box.\n * @param {number} bounds.x - The x-coordinate.\n * @param {number} bounds.y - The y-coordinate.\n * @param {number} bounds.width - The width.\n * @param {number} bounds.height - The height.\n */\n setBounds(bounds) {\n const { x, y, width, height } = bounds;\n this.overlay.style.left = x + \"px\";\n this.overlay.style.top = y + \"px\";\n this.overlay.style.width = width + \"px\";\n this.overlay.style.height = height + \"px\";\n }\n}\n\n/**\n * Class representing an element picker that uses the overlay.\n */\nclass ElementPicker {\n /**\n * Create an ElementPicker.\n * @param {Object} [overlayOptions] - Options to pass to ElementOverlay.\n */\n constructor(overlayOptions) {\n this.active = false;\n this.overlay = new ElementOverlay(overlayOptions || {});\n this.handleMouseMove = this.handleMouseMove.bind(this);\n this.handleClick = this.handleClick.bind(this);\n this.tick = this.tick.bind(this);\n }\n\n /**\n * Starts the element picking process.\n * @param {Object} options - Picker options.\n * @param {Node} [options.parentElement] - Parent element to attach the overlay.\n * @param {boolean} [options.useShadowDOM=true] - Whether to use Shadow DOM.\n * @param {Function} [options.onClick] - Callback invoked on click.\n * @param {Function} [options.onHover] - Callback invoked on hover.\n * @param {Function} [options.elementFilter] - Function to filter elements.\n * @returns {boolean} True if started successfully, false if already active.\n */\n start(options) {\n if (this.active) {\n return false;\n }\n this.active = true;\n this.options = options;\n\n document.addEventListener(\"mousemove\", this.handleMouseMove, true);\n document.addEventListener(\"click\", this.handleClick, true);\n\n const parentElement = options.parentElement || document.body;\n const useShadowDOM =\n options.useShadowDOM !== undefined ? options.useShadowDOM : true;\n this.overlay.addToDOM(parentElement, useShadowDOM);\n this.tick();\n\n return true;\n }\n\n /**\n * Stops the element picking process.\n */\n stop() {\n this.active = false;\n this.options = undefined;\n\n document.removeEventListener(\"mousemove\", this.handleMouseMove, true);\n document.removeEventListener(\"click\", this.handleClick, true);\n\n this.overlay.removeFromDOM();\n this.target = undefined;\n this.mouseX = undefined;\n this.mouseY = undefined;\n\n if (this.tickReq) {\n window.cancelAnimationFrame(this.tickReq);\n }\n }\n\n /**\n * Handles mouse move events.\n * @param {MouseEvent} event - The mousemove event.\n */\n handleMouseMove(event) {\n this.mouseX = event.clientX;\n this.mouseY = event.clientY;\n }\n\n /**\n * Handles click events.\n * @param {MouseEvent} event - The click event.\n */\n handleClick(event) {\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n\n if (this.target && this.options && this.options.onClick) {\n this.options.onClick(this.target);\n }\n }\n\n /**\n * The tick function that continuously updates the target element.\n */\n tick() {\n this.updateTarget();\n this.tickReq = window.requestAnimationFrame(this.tick);\n }\n\n /**\n * Updates the target element based on the current mouse position.\n */\n updateTarget() {\n if (this.mouseX === undefined || this.mouseY === undefined) {\n return;\n }\n\n // Temporarily ignore the overlay's pointer events to detect the underlying element.\n this.overlay.ignoreCursor();\n const elAtCursor = document.elementFromPoint(this.mouseX, this.mouseY);\n const newTarget = elAtCursor;\n this.overlay.captureCursor();\n\n // If the target hasn't changed, do nothing.\n if (!newTarget || newTarget === this.target) {\n return;\n }\n\n // If an element filter is provided and the new target doesn't match, clear the target.\n if (this.options && this.options.elementFilter) {\n if (!this.options.elementFilter(newTarget)) {\n this.target = undefined;\n this.overlay.setBounds({ x: 0, y: 0, width: 0, height: 0 });\n return;\n }\n }\n\n this.target = newTarget;\n const bounds = getElementBounds(newTarget);\n this.overlay.setBounds(bounds);\n\n if (this.options && this.options.onHover) {\n this.options.onHover(newTarget);\n }\n }\n}\n\nexport default ElementPicker;\n","import unique from \"./unique-selector/src/unique-selector\";\nimport ElementPicker from \"./ElementPicker\";\n\nclass GleapAdminHelper {\n picker = null;\n onElementPicked = null;\n\n stopPicker = () => {\n if (this.picker) {\n this.picker.stop();\n this.picker = null;\n return;\n }\n };\n\n startPicker = () => {\n this.stopPicker();\n var self = this;\n\n const style = {\n borderColor: \"#2142E7\",\n background: \"transparent\",\n borderWidth: \"4px\",\n borderRadius: \"5px\",\n };\n this.picker = new ElementPicker({ style });\n this.picker.start({\n useShadowDOM: false,\n onClick: (el) => {\n try {\n let selector;\n const tourId = el.getAttribute(\"data-gleap-tour\");\n if (tourId) {\n selector = `[data-gleap-tour=\"${tourId}\"]`;\n } else {\n selector = unique(el);\n }\n\n self.onElementPicked && self.onElementPicked(selector);\n } catch (e) {\n console.error(\"Error while getting unique selector\", e);\n }\n },\n elementFilter: (el) => {\n if (\n el.classList.contains(\"gleap-admin-collapse-ui\") ||\n el.closest(\".gleap-admin-collapse-ui\")\n ) {\n return false;\n }\n return true;\n },\n });\n };\n\n setMode = (mode) => {\n this.mode = mode;\n if (mode === \"navigate\") {\n this.stopPicker();\n }\n if (mode === \"picker\") {\n this.startPicker();\n }\n };\n}\n\nexport default GleapAdminHelper;\n","import { loadIcon } from \"./UI\";\nimport GleapAdminHelper from \"./GleapAdminHelper\";\nimport { GleapProductTours } from \"./Gleap\";\n\nexport default class GleapAdminManager {\n libraryInstance = null;\n lastUrl = undefined;\n injectedFrame = false;\n gleapFrameContainer = null;\n gleapCollapseUI = null;\n injectedCollapseUI = false;\n gleapFrame = null;\n configData = null;\n adminHelper = null;\n status = \"navigate\";\n\n // GleapAdminManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapAdminManager();\n }\n\n return this.instance;\n }\n\n logCurrentPage() {\n const currentUrl = window.location.href;\n if (currentUrl && currentUrl !== this.lastUrl) {\n this.lastUrl = currentUrl;\n\n this.sendMessageToTourBuilder({\n name: \"page-changed\",\n data: {\n page: currentUrl,\n },\n });\n }\n }\n\n startPageListener() {\n const self = this;\n setInterval(function () {\n self.logCurrentPage();\n }, 1000);\n }\n\n initAdminHelper() {\n const self = this;\n\n // Disable product tours.\n GleapProductTours.getInstance().disable();\n\n self.adminHelper = new GleapAdminHelper();\n\n try {\n self.adminHelper.onElementPicked = (selector) => {\n self.toggleCollapseUI(true);\n self.sendMessageToTourBuilder({\n name: \"element-picked\",\n data: {\n selector,\n },\n });\n };\n } catch (e) {\n console.log(e);\n }\n\n self.injectFrame();\n self.injectCollapseUI();\n self.setFrameHeight(\"loading\");\n }\n\n setFrameHeight(state) {\n if (this.gleapFrameContainer) {\n var height = \"\";\n if (state === \"picker\" || state === \"navigate\") {\n height = \"65px\";\n } else if (state === \"editor\") {\n height = \"100vh\";\n } else {\n height = \"0px\";\n }\n this.gleapFrameContainer.style.height = height;\n }\n }\n\n start() {\n if (typeof window === \"undefined\") {\n return;\n }\n\n if (window.gleapAdminDisabled) {\n return;\n }\n\n var self = this;\n\n // Add window message listener.\n window.addEventListener(\"message\", (event) => {\n if (event.origin !== \"https://app.gleap.io\") {\n return;\n }\n\n try {\n const data = JSON.parse(event.data);\n\n if (data.type === \"admin\") {\n if (data.name === \"load\") {\n self.configData = data.data;\n self.initAdminHelper();\n }\n\n if (data.name === \"smartlink-search-result\") {\n this.sendMessageToTourBuilder({\n name: \"smartlink-search-result\",\n data: data.data,\n });\n }\n\n if (data.name === \"translate-complete\") {\n this.sendMessageToTourBuilder({\n name: \"translate-complete\",\n data: data.data,\n });\n }\n }\n\n if (data.type === \"tourbuilder\") {\n if (data.name === \"loaddata\") {\n this.sendMessageToTourBuilder({\n name: \"data\",\n data: {\n ...self.configData,\n currentPage: window.location.href,\n },\n });\n }\n\n if (data.name === \"highlight-element\") {\n // Cleanup.\n document\n .querySelectorAll(\".gleap-admin-highlight\")\n .forEach((el) => {\n el.classList.remove(\"gleap-admin-highlight\");\n });\n\n // Find the element and highlight it.\n if (data?.data?.selector) {\n const element = document.querySelector(data?.data?.selector);\n if (element) {\n element.classList.add(\"gleap-admin-highlight\");\n }\n }\n }\n\n if (data.name === \"smartlink-search\") {\n this.sendMessage({\n name: \"smartlink-search\",\n data: data.data,\n });\n }\n\n if (data.name === \"product-tour-started\") {\n this.sendMessage({\n name: \"product-tour-started\",\n data: data.data,\n });\n }\n\n if (data.name === \"translate\") {\n this.sendMessage({\n name: \"translate\",\n data: data.data,\n });\n }\n\n if (data.name === \"save\") {\n this.sendMessage({\n name: \"save\",\n data: data.data,\n });\n }\n\n if (data.name === \"update-steps\") {\n this.sendMessage({\n name: \"update-steps\",\n data: data.data,\n });\n }\n\n if (data.name === \"click\") {\n try {\n document.querySelector(data.data.selector).click();\n } catch (e) {\n console.log(e);\n }\n }\n\n if (data.name === \"status-changed\") {\n self.status = data.data;\n this.setFrameHeight(self.status);\n self.adminHelper.stopPicker();\n\n if (self.status === \"picker\") {\n self.adminHelper.startPicker();\n }\n }\n }\n } catch (exp) {}\n });\n\n this.sendMessage({\n name: \"init\",\n });\n\n this.startPageListener();\n }\n\n sendMessage(data) {\n try {\n if (window && window.opener) {\n window.opener.postMessage(\n JSON.stringify({\n ...data,\n type: \"admin\",\n }),\n \"*\"\n );\n }\n } catch (e) {}\n }\n\n sendMessageToTourBuilder(data) {\n try {\n if (this.gleapFrame && this.gleapFrame.contentWindow) {\n this.gleapFrame.contentWindow.postMessage(\n JSON.stringify({\n ...data,\n type: \"tourbuilder\",\n }),\n \"*\"\n );\n }\n } catch (e) {}\n }\n\n toggleCollapseUI = (onlyIfActive = false) => {\n const COLLAPSE_UI_ACTIVE_CLASS = \"gleap-admin-collapse-ui-active\";\n const FRAME_CONTAINER_ACTIVE_CLASS = \"gleap-admin-frame-container-active\";\n\n // Helper function to check if an element has an active class\n const isActive = (element, activeClass) =>\n element && element.classList.contains(activeClass);\n\n // Check if onlyIfActive is true and if the UI elements are already inactive\n if (\n onlyIfActive &&\n (!isActive(this.gleapCollapseUI, COLLAPSE_UI_ACTIVE_CLASS) ||\n !isActive(this.gleapFrameContainer, FRAME_CONTAINER_ACTIVE_CLASS))\n ) {\n return; // Return early without toggling the UI\n }\n\n // Toggle the UI elements\n if (this.gleapCollapseUI) {\n this.gleapCollapseUI.classList.toggle(COLLAPSE_UI_ACTIVE_CLASS);\n }\n if (this.gleapFrameContainer) {\n this.gleapFrameContainer.classList.toggle(FRAME_CONTAINER_ACTIVE_CLASS);\n }\n };\n\n injectCollapseUI = () => {\n if (this.injectedCollapseUI) {\n return;\n }\n this.injectedCollapseUI = true;\n\n // Inject widget HTML.\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-admin-collapse-ui\";\n elem.innerHTML = `
\n ${loadIcon(\"arrowdown\")}\n
`;\n document.body.appendChild(elem);\n\n this.gleapCollapseUI = elem;\n\n elem.addEventListener(\"click\", (e) => {\n e.stopImmediatePropagation();\n e.stopPropagation();\n e.preventDefault();\n\n this.toggleCollapseUI();\n });\n };\n\n injectFrame = () => {\n if (this.injectedFrame) {\n return;\n }\n this.injectedFrame = true;\n\n // Inject widget HTML.\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-admin-frame-container\";\n elem.innerHTML = ``;\n document.body.appendChild(elem);\n\n this.gleapFrameContainer = elem;\n this.gleapFrame = document.querySelector(\".gleap-admin-frame\");\n };\n}\n","const GleapTours = (function () {\n \"use strict\";\n let currentConfig = {};\n function configure(config = {}) {\n currentConfig = {\n animate: true,\n allowClose: true,\n overlayOpacity: 0.7,\n smoothScroll: false,\n disableActiveInteraction: false,\n showProgress: false,\n stagePadding: 10,\n stageRadius: 5,\n popoverOffset: 10,\n showButtons: [\"next\", \"previous\", \"close\"],\n disableButtons: [],\n overlayColor: \"#000\",\n ...config,\n };\n }\n function getConfig(key) {\n return key ? currentConfig[key] : currentConfig;\n }\n function easeInOutQuad(elapsed, initialValue, amountOfChange, duration) {\n if ((elapsed /= duration / 2) < 1) {\n return (amountOfChange / 2) * elapsed * elapsed + initialValue;\n }\n return (\n (-amountOfChange / 2) * (--elapsed * (elapsed - 2) - 1) + initialValue\n );\n }\n function getFocusableElements(parentEls) {\n const focusableQuery =\n 'a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type=\"text\"]:not([disabled]), input[type=\"radio\"]:not([disabled]), input[type=\"checkbox\"]:not([disabled]), select:not([disabled])';\n return parentEls\n .flatMap((parentEl) => {\n const isParentFocusable = parentEl.matches(focusableQuery);\n const focusableEls = Array.from(\n parentEl.querySelectorAll(focusableQuery)\n );\n return [...(isParentFocusable ? [parentEl] : []), ...focusableEls];\n })\n .filter((el) => {\n return (\n getComputedStyle(el).pointerEvents !== \"none\" && isElementVisible(el)\n );\n });\n }\n function bringInView(element) {\n if (!element || isElementInView(element)) {\n return;\n }\n const shouldSmoothScroll = getConfig(\"smoothScroll\");\n element.scrollIntoView({\n // Removing the smooth scrolling for elements which exist inside the scrollable parent\n // This was causing the highlight to not properly render\n behavior:\n !shouldSmoothScroll || hasScrollableParent(element) ? \"auto\" : \"smooth\",\n inline: \"center\",\n block: \"center\",\n });\n }\n function hasScrollableParent(e) {\n if (!e || !e.parentElement) {\n return;\n }\n const parent = e.parentElement;\n return parent.scrollHeight > parent.clientHeight;\n }\n function isElementInView(element) {\n const rect = element.getBoundingClientRect();\n return (\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <=\n (window.innerHeight || document.documentElement.clientHeight) &&\n rect.right <= (window.innerWidth || document.documentElement.clientWidth)\n );\n }\n function isElementVisible(el) {\n return !!(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\n }\n let currentState = {};\n function setState(key, value) {\n currentState[key] = value;\n }\n function getState(key) {\n return key ? currentState[key] : currentState;\n }\n function resetState() {\n currentState = {};\n }\n let registeredListeners = {};\n function listen(hook, callback) {\n registeredListeners[hook] = callback;\n }\n function emit(hook) {\n var _a;\n (_a = registeredListeners[hook]) == null\n ? void 0\n : _a.call(registeredListeners);\n }\n function destroyEmitter() {\n registeredListeners = {};\n }\n function transitionStage(elapsed, duration, from, to) {\n let activeStagePosition = getState(\"__activeStagePosition\");\n const fromDefinition = activeStagePosition\n ? activeStagePosition\n : from.getBoundingClientRect();\n const toDefinition = to.getBoundingClientRect();\n const x = easeInOutQuad(\n elapsed,\n fromDefinition.x,\n toDefinition.x - fromDefinition.x,\n duration\n );\n const y = easeInOutQuad(\n elapsed,\n fromDefinition.y,\n toDefinition.y - fromDefinition.y,\n duration\n );\n const width = easeInOutQuad(\n elapsed,\n fromDefinition.width,\n toDefinition.width - fromDefinition.width,\n duration\n );\n const height = easeInOutQuad(\n elapsed,\n fromDefinition.height,\n toDefinition.height - fromDefinition.height,\n duration\n );\n activeStagePosition = {\n x,\n y,\n width,\n height,\n };\n renderOverlay(activeStagePosition);\n setState(\"__activeStagePosition\", activeStagePosition);\n }\n function trackActiveElement(element) {\n if (!element) {\n return;\n }\n const definition = element.getBoundingClientRect();\n const activeStagePosition = {\n x: definition.x,\n y: definition.y,\n width: definition.width,\n height: definition.height,\n };\n setState(\"__activeStagePosition\", activeStagePosition);\n renderOverlay(activeStagePosition);\n }\n function refreshOverlay() {\n const activeStagePosition = getState(\"__activeStagePosition\");\n const overlaySvg = getState(\"__overlaySvg\");\n if (!activeStagePosition) {\n return;\n }\n if (!overlaySvg) {\n console.warn(\"No stage svg found.\");\n return;\n }\n const windowX = window.innerWidth;\n const windowY = window.innerHeight;\n overlaySvg.setAttribute(\"viewBox\", `0 0 ${windowX} ${windowY}`);\n }\n function mountOverlay(stagePosition) {\n const overlaySvg = createOverlaySvg(stagePosition);\n document.body.appendChild(overlaySvg);\n onDriverClick(overlaySvg, (e) => {\n const target = e.target;\n if (target.tagName !== \"path\") {\n return;\n }\n emit(\"overlayClick\");\n });\n setState(\"__overlaySvg\", overlaySvg);\n }\n function renderOverlay(stagePosition) {\n const overlaySvg = getState(\"__overlaySvg\");\n if (!overlaySvg) {\n mountOverlay(stagePosition);\n return;\n }\n const pathElement = overlaySvg.firstElementChild;\n if ((pathElement == null ? void 0 : pathElement.tagName) !== \"path\") {\n throw new Error(\"no path element found in stage svg\");\n }\n pathElement.setAttribute(\"d\", generateStageSvgPathString(stagePosition));\n }\n function createOverlaySvg(stage) {\n const windowX = window.innerWidth;\n const windowY = window.innerHeight;\n const svg = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n svg.classList.add(\"gleap-tour-overlay\", \"gleap-tour-overlay-animated\");\n svg.setAttribute(\"viewBox\", `0 0 ${windowX} ${windowY}`);\n svg.setAttribute(\"xmlSpace\", \"preserve\");\n svg.setAttribute(\"xmlnsXlink\", \"http://www.w3.org/1999/xlink\");\n svg.setAttribute(\"version\", \"1.1\");\n svg.setAttribute(\"preserveAspectRatio\", \"xMinYMin slice\");\n svg.style.fillRule = \"evenodd\";\n svg.style.clipRule = \"evenodd\";\n svg.style.strokeLinejoin = \"round\";\n svg.style.strokeMiterlimit = \"2\";\n svg.style.zIndex = \"10000\";\n svg.style.position = \"fixed\";\n svg.style.top = \"0\";\n svg.style.left = \"0\";\n svg.style.width = \"100%\";\n svg.style.height = \"100%\";\n const stagePath = document.createElementNS(\n \"http://www.w3.org/2000/svg\",\n \"path\"\n );\n stagePath.setAttribute(\"d\", generateStageSvgPathString(stage));\n stagePath.style.fill = getConfig(\"overlayColor\") || \"rgb(0,0,0)\";\n stagePath.style.opacity = `${getConfig(\"overlayOpacity\")}`;\n stagePath.style.pointerEvents = \"auto\";\n stagePath.style.cursor = \"auto\";\n svg.appendChild(stagePath);\n return svg;\n }\n function generateStageSvgPathString(stage) {\n const windowX = window.innerWidth;\n const windowY = window.innerHeight;\n const stagePadding = getConfig(\"stagePadding\") || 0;\n const stageRadius = getConfig(\"stageRadius\") || 0;\n const stageWidth = stage.width + stagePadding * 2;\n const stageHeight = stage.height + stagePadding * 2;\n const limitedRadius = Math.min(\n stageRadius,\n stageWidth / 2,\n stageHeight / 2\n );\n const normalizedRadius = Math.floor(Math.max(limitedRadius, 0));\n const highlightBoxX = stage.x - stagePadding + normalizedRadius;\n const highlightBoxY = stage.y - stagePadding;\n const highlightBoxWidth = stageWidth - normalizedRadius * 2;\n const highlightBoxHeight = stageHeight - normalizedRadius * 2;\n return `M${windowX},0L0,0L0,${windowY}L${windowX},${windowY}L${windowX},0Z\n M${highlightBoxX},${highlightBoxY} h${highlightBoxWidth} a${normalizedRadius},${normalizedRadius} 0 0 1 ${normalizedRadius},${normalizedRadius} v${highlightBoxHeight} a${normalizedRadius},${normalizedRadius} 0 0 1 -${normalizedRadius},${normalizedRadius} h-${highlightBoxWidth} a${normalizedRadius},${normalizedRadius} 0 0 1 -${normalizedRadius},-${normalizedRadius} v-${highlightBoxHeight} a${normalizedRadius},${normalizedRadius} 0 0 1 ${normalizedRadius},-${normalizedRadius} z`;\n }\n function destroyOverlay() {\n const overlaySvg = getState(\"__overlaySvg\");\n if (overlaySvg) {\n overlaySvg.remove();\n }\n }\n function mountDummyElement() {\n const existingDummy = document.getElementById(\"gleap-tour-dummy-element\");\n if (existingDummy) {\n return existingDummy;\n }\n let element = document.createElement(\"div\");\n element.id = \"gleap-tour-dummy-element\";\n element.style.width = \"0\";\n element.style.height = \"0\";\n element.style.pointerEvents = \"none\";\n element.style.opacity = \"0\";\n element.style.position = \"fixed\";\n element.style.top = \"50%\";\n element.style.left = \"50%\";\n document.body.appendChild(element);\n return element;\n }\n function highlight(step, attemptTime = 5000) {\n const { element } = step;\n let elemObj = element;\n if (typeof elemObj === \"string\") {\n try {\n elemObj = document.querySelector(element);\n } catch (error) {\n // This will escape colons within IDs but not affect pseudo-classes or other valid uses of colons\n let refactoredElement = element.replace(\n /(#[^#\\s]+)/g,\n function (match) {\n return match.replace(/:/g, \"\\\\:\");\n }\n );\n elemObj = document.querySelector(refactoredElement);\n }\n }\n if (element && !elemObj && attemptTime >= 0) {\n setTimeout(() => {\n hidePopover();\n highlight(step, attemptTime - 100);\n }, 100);\n\n return;\n }\n\n if (!elemObj) {\n if (step.mode === \"INPUT\" || step.mode === \"CLICK\") {\n return getConfig(\"onElementNotFound\")(step);\n }\n }\n\n if (!elemObj) {\n elemObj = mountDummyElement();\n }\n\n transferHighlight(elemObj, step);\n }\n function refreshActiveHighlight() {\n const activeHighlight = getState(\"__activeElement\");\n const activeStep = getState(\"__activeStep\");\n if (!activeHighlight) {\n return;\n }\n trackActiveElement(activeHighlight);\n refreshOverlay();\n repositionPopover(activeHighlight, activeStep);\n }\n function transferHighlight(toElement, toStep) {\n const duration = 400;\n const start = Date.now();\n const fromStep = getState(\"__activeStep\");\n const fromElement = getState(\"__activeElement\") || toElement;\n const isFirstHighlight = !fromElement || fromElement === toElement;\n const isToDummyElement = toElement.id === \"gleap-tour-dummy-element\";\n const isFromDummyElement = fromElement.id === \"gleap-tour-dummy-element\";\n const isAnimatedTour = getConfig(\"animate\");\n const highlightStartedHook =\n toStep.onHighlightStarted || getConfig(\"onHighlightStarted\");\n const highlightedHook =\n (toStep == null ? void 0 : toStep.onHighlighted) ||\n getConfig(\"onHighlighted\");\n const deselectedHook =\n (fromStep == null ? void 0 : fromStep.onDeselected) ||\n getConfig(\"onDeselected\");\n const config = getConfig();\n const state = getState();\n if (!isFirstHighlight && deselectedHook) {\n deselectedHook(isFromDummyElement ? void 0 : fromElement, fromStep, {\n config,\n state,\n });\n }\n if (highlightStartedHook) {\n highlightStartedHook(isToDummyElement ? void 0 : toElement, toStep, {\n config,\n state,\n });\n }\n const hasDelayedPopover = !isFirstHighlight && isAnimatedTour;\n let isPopoverRendered = false;\n hidePopover();\n setState(\"previousStep\", fromStep);\n setState(\"previousElement\", fromElement);\n setState(\"activeStep\", toStep);\n setState(\"activeElement\", toElement);\n const animate = () => {\n const transitionCallback = getState(\"__transitionCallback\");\n if (transitionCallback !== animate) {\n return;\n }\n const elapsed = Date.now() - start;\n const timeRemaining = duration - elapsed;\n const isHalfwayThrough = timeRemaining <= duration / 2;\n if (\n toStep.popover &&\n isHalfwayThrough &&\n !isPopoverRendered &&\n hasDelayedPopover\n ) {\n renderPopover(toElement, toStep);\n isPopoverRendered = true;\n }\n if (getConfig(\"animate\") && elapsed < duration) {\n transitionStage(elapsed, duration, fromElement, toElement);\n } else {\n trackActiveElement(toElement);\n if (highlightedHook) {\n highlightedHook(isToDummyElement ? void 0 : toElement, toStep, {\n config: getConfig(),\n state: getState(),\n });\n }\n setState(\"__transitionCallback\", void 0);\n setState(\"__previousStep\", fromStep);\n setState(\"__previousElement\", fromElement);\n setState(\"__activeStep\", toStep);\n setState(\"__activeElement\", toElement);\n }\n window.requestAnimationFrame(animate);\n };\n setState(\"__transitionCallback\", animate);\n window.requestAnimationFrame(animate);\n bringInView(toElement);\n if (!hasDelayedPopover && toStep.popover) {\n renderPopover(toElement, toStep);\n }\n fromElement.classList.remove(\n \"gleap-tour-active-element\",\n \"gleap-tour-no-interaction\"\n );\n fromElement.removeAttribute(\"aria-haspopup\");\n fromElement.removeAttribute(\"aria-expanded\");\n fromElement.removeAttribute(\"aria-controls\");\n const disableActiveInteraction =\n toStep.disableActiveInteraction ??\n getConfig(\"disableActiveInteraction\") ??\n false;\n if (disableActiveInteraction) {\n toElement.classList.add(\"gleap-tour-no-interaction\");\n }\n toElement.classList.add(\"gleap-tour-active-element\");\n toElement.setAttribute(\"aria-haspopup\", \"dialog\");\n toElement.setAttribute(\"aria-expanded\", \"true\");\n toElement.setAttribute(\"aria-controls\", \"gleap-tour-popover-content\");\n }\n function destroyHighlight() {\n var _a;\n (_a = document.getElementById(\"gleap-tour-dummy-element\")) == null\n ? void 0\n : _a.remove();\n document\n .querySelectorAll(\".gleap-tour-active-element\")\n .forEach((element) => {\n element.classList.remove(\n \"gleap-tour-active-element\",\n \"gleap-tour-no-interaction\"\n );\n element.removeAttribute(\"aria-haspopup\");\n element.removeAttribute(\"aria-expanded\");\n element.removeAttribute(\"aria-controls\");\n });\n }\n function requireRefresh() {\n const resizeTimeout = getState(\"__resizeTimeout\");\n if (resizeTimeout) {\n window.cancelAnimationFrame(resizeTimeout);\n }\n setState(\n \"__resizeTimeout\",\n window.requestAnimationFrame(refreshActiveHighlight)\n );\n }\n function trapFocus(e) {\n var _a;\n const isActivated = getState(\"isInitialized\");\n if (!isActivated) {\n return;\n }\n const isTabKey = e.key === \"Tab\" || e.keyCode === 9;\n if (!isTabKey) {\n return;\n }\n const activeElement = getState(\"__activeElement\");\n const popoverEl = (_a = getState(\"popover\")) == null ? void 0 : _a.wrapper;\n const focusableEls = getFocusableElements([\n ...(popoverEl ? [popoverEl] : []),\n ...(activeElement ? [activeElement] : []),\n ]);\n const firstFocusableEl = focusableEls[0];\n const lastFocusableEl = focusableEls[focusableEls.length - 1];\n e.preventDefault();\n if (e.shiftKey) {\n const previousFocusableEl =\n focusableEls[focusableEls.indexOf(document.activeElement) - 1] ||\n lastFocusableEl;\n previousFocusableEl == null ? void 0 : previousFocusableEl.focus();\n } else {\n const nextFocusableEl =\n focusableEls[focusableEls.indexOf(document.activeElement) + 1] ||\n firstFocusableEl;\n nextFocusableEl == null ? void 0 : nextFocusableEl.focus();\n }\n }\n function onKeyup(e) {\n var _a;\n const allowKeyboardControl =\n (_a = getConfig(\"allowKeyboardControl\")) != null ? _a : true;\n if (!allowKeyboardControl) {\n return;\n }\n if (e.key === \"Escape\") {\n emit(\"escapePress\");\n } else if (e.key === \"ArrowRight\") {\n emit(\"arrowRightPress\");\n } else if (e.key === \"ArrowLeft\") {\n emit(\"arrowLeftPress\");\n }\n }\n function onDriverClick(element, listener, shouldPreventDefault) {\n const listenerWrapper = (e, listener2) => {\n const target = e.target;\n if (!element.contains(target)) {\n return;\n }\n if (!shouldPreventDefault || shouldPreventDefault(target)) {\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n listener2 == null ? void 0 : listener2(e);\n };\n const useCapture = true;\n document.addEventListener(\"pointerdown\", listenerWrapper, useCapture);\n document.addEventListener(\"mousedown\", listenerWrapper, useCapture);\n document.addEventListener(\"pointerup\", listenerWrapper, useCapture);\n document.addEventListener(\"mouseup\", listenerWrapper, useCapture);\n document.addEventListener(\n \"click\",\n (e) => {\n listenerWrapper(e, listener);\n },\n useCapture\n );\n }\n function initEvents() {\n window.addEventListener(\"keyup\", onKeyup, false);\n window.addEventListener(\"keydown\", trapFocus, false);\n window.addEventListener(\"resize\", requireRefresh);\n window.addEventListener(\"scroll\", requireRefresh);\n }\n function destroyEvents() {\n window.removeEventListener(\"keyup\", onKeyup);\n window.removeEventListener(\"resize\", requireRefresh);\n window.removeEventListener(\"scroll\", requireRefresh);\n }\n function hidePopover() {\n const popover = getState(\"popover\");\n if (!popover) {\n return;\n }\n popover.wrapper.style.display = \"none\";\n }\n function renderPopover(element, step) {\n var _a, _b;\n let popover = getState(\"popover\");\n if (popover) {\n document.body.removeChild(popover.wrapper);\n }\n popover = createPopover();\n document.body.appendChild(popover.wrapper);\n const {\n title,\n description,\n showButtons,\n disableButtons,\n showProgress,\n nextBtnText = getConfig(\"nextBtnText\") || \"Next\",\n prevBtnText = getConfig(\"prevBtnText\") || \"Previous\",\n progressText = getConfig(\"progressText\") || \"{current} of {total}\",\n } = step.popover || {};\n popover.nextButton.innerHTML = nextBtnText;\n popover.previousButton.innerHTML = prevBtnText;\n popover.progress.innerHTML = progressText;\n if (title) {\n popover.title.innerHTML = title;\n popover.title.style.display = \"block\";\n } else {\n popover.title.style.display = \"none\";\n }\n if (description) {\n popover.description.innerHTML = description;\n popover.description.style.display = \"block\";\n } else {\n popover.description.style.display = \"none\";\n }\n const showButtonsConfig = showButtons || getConfig(\"showButtons\");\n const showProgressConfig =\n showProgress || getConfig(\"showProgress\") || false;\n const showFooter =\n (showButtonsConfig == null\n ? void 0\n : showButtonsConfig.includes(\"next\")) ||\n (showButtonsConfig == null\n ? void 0\n : showButtonsConfig.includes(\"previous\")) ||\n showProgressConfig;\n popover.closeButton.style.display = showButtonsConfig.includes(\"close\")\n ? \"block\"\n : \"none\";\n if (showFooter) {\n popover.footer.style.display = \"flex\";\n popover.progress.style.display = showProgressConfig ? \"block\" : \"none\";\n popover.nextButton.style.display = showButtonsConfig.includes(\"next\")\n ? \"block\"\n : \"none\";\n popover.previousButton.style.display = showButtonsConfig.includes(\n \"previous\"\n )\n ? \"block\"\n : \"none\";\n } else {\n popover.footer.style.display = \"none\";\n }\n const disabledButtonsConfig =\n disableButtons || getConfig(\"disableButtons\") || [];\n if (\n disabledButtonsConfig == null\n ? void 0\n : disabledButtonsConfig.includes(\"next\")\n ) {\n popover.nextButton.disabled = true;\n popover.nextButton.classList.add(\"gleap-tour-popover-btn-disabled\");\n }\n if (\n disabledButtonsConfig == null\n ? void 0\n : disabledButtonsConfig.includes(\"previous\")\n ) {\n popover.previousButton.disabled = true;\n popover.previousButton.classList.add(\"gleap-tour-popover-btn-disabled\");\n }\n if (\n disabledButtonsConfig == null\n ? void 0\n : disabledButtonsConfig.includes(\"close\")\n ) {\n popover.closeButton.disabled = true;\n popover.closeButton.classList.add(\"gleap-tour-popover-btn-disabled\");\n }\n const popoverWrapper = popover.wrapper;\n popoverWrapper.style.display = \"block\";\n popoverWrapper.style.left = \"\";\n popoverWrapper.style.top = \"\";\n popoverWrapper.style.bottom = \"\";\n popoverWrapper.style.right = \"\";\n popoverWrapper.id = \"gleap-tour-popover-content\";\n popoverWrapper.setAttribute(\"role\", \"dialog\");\n popoverWrapper.setAttribute(\"aria-labelledby\", \"gleap-tour-popover-title\");\n popoverWrapper.setAttribute(\n \"aria-describedby\",\n \"gleap-tour-popover-description\"\n );\n const popoverArrow = popover.arrow;\n popoverArrow.className = \"gleap-tour-popover-arrow\";\n const customPopoverClass =\n ((_a = step.popover) == null ? void 0 : _a.popoverClass) ||\n getConfig(\"popoverClass\") ||\n \"\";\n popoverWrapper.className =\n `gleap-tour-popover ${customPopoverClass}`.trim();\n onDriverClick(\n popover.wrapper,\n (e) => {\n var _a2, _b2, _c;\n const target = e.target;\n const onNextClick =\n ((_a2 = step.popover) == null ? void 0 : _a2.onNextClick) ||\n getConfig(\"onNextClick\");\n const onPrevClick =\n ((_b2 = step.popover) == null ? void 0 : _b2.onPrevClick) ||\n getConfig(\"onPrevClick\");\n const onCloseClick =\n ((_c = step.popover) == null ? void 0 : _c.onCloseClick) ||\n getConfig(\"onCloseClick\");\n if (target.classList.contains(\"gleap-tour-popover-next-btn\")) {\n if (onNextClick) {\n return onNextClick(element, step, {\n config: getConfig(),\n state: getState(),\n });\n } else {\n return emit(\"nextClick\");\n }\n }\n if (target.classList.contains(\"gleap-tour-popover-prev-btn\")) {\n if (onPrevClick) {\n return onPrevClick(element, step, {\n config: getConfig(),\n state: getState(),\n });\n } else {\n return emit(\"prevClick\");\n }\n }\n if (target.classList.contains(\"gleap-tour-popover-close-btn\")) {\n if (onCloseClick) {\n return onCloseClick(element, step, {\n config: getConfig(),\n state: getState(),\n });\n } else {\n return emit(\"closeClick\");\n }\n }\n return void 0;\n },\n (target) => {\n return (\n !(popover == null ? void 0 : popover.description.contains(target)) &&\n !(popover == null ? void 0 : popover.title.contains(target)) &&\n typeof target.className === \"string\" &&\n target.className.includes(\"gleap-tour-popover\")\n );\n }\n );\n setState(\"popover\", popover);\n const onPopoverRender =\n ((_b = step.popover) == null ? void 0 : _b.onPopoverRender) ||\n getConfig(\"onPopoverRender\");\n if (onPopoverRender) {\n onPopoverRender(popover, {\n config: getConfig(),\n state: getState(),\n });\n }\n repositionPopover(element, step);\n bringInView(popoverWrapper);\n const isToDummyElement = element.classList.contains(\n \"gleap-tour-dummy-element\"\n );\n const focusableElement = getFocusableElements([\n popoverWrapper,\n ...(isToDummyElement ? [] : [element]),\n ]);\n if (focusableElement.length > 0) {\n focusableElement[0].focus();\n }\n }\n function getPopoverDimensions() {\n const popover = getState(\"popover\");\n if (!(popover == null ? void 0 : popover.wrapper)) {\n return;\n }\n const boundingClientRect = popover.wrapper.getBoundingClientRect();\n const stagePadding = getConfig(\"stagePadding\") || 0;\n const popoverOffset = getConfig(\"popoverOffset\") || 0;\n return {\n width: boundingClientRect.width + stagePadding + popoverOffset,\n height: boundingClientRect.height + stagePadding + popoverOffset,\n realWidth: boundingClientRect.width,\n realHeight: boundingClientRect.height,\n };\n }\n function calculateTopForLeftRight(alignment, config) {\n const {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n } = config;\n if (alignment === \"start\") {\n return Math.max(\n Math.min(\n elementDimensions.top - popoverPadding,\n window.innerHeight -\n popoverDimensions.realHeight -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n if (alignment === \"end\") {\n return Math.max(\n Math.min(\n elementDimensions.top -\n (popoverDimensions == null\n ? void 0\n : popoverDimensions.realHeight) +\n elementDimensions.height +\n popoverPadding,\n window.innerHeight -\n (popoverDimensions == null\n ? void 0\n : popoverDimensions.realHeight) -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n if (alignment === \"center\") {\n return Math.max(\n Math.min(\n elementDimensions.top +\n elementDimensions.height / 2 -\n (popoverDimensions == null\n ? void 0\n : popoverDimensions.realHeight) /\n 2,\n window.innerHeight -\n (popoverDimensions == null\n ? void 0\n : popoverDimensions.realHeight) -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n return 0;\n }\n function calculateLeftForTopBottom(alignment, config) {\n const {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n } = config;\n if (alignment === \"start\") {\n return Math.max(\n Math.min(\n elementDimensions.left - popoverPadding,\n window.innerWidth -\n popoverDimensions.realWidth -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n if (alignment === \"end\") {\n return Math.max(\n Math.min(\n elementDimensions.left -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) +\n elementDimensions.width +\n popoverPadding,\n window.innerWidth -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n if (alignment === \"center\") {\n return Math.max(\n Math.min(\n elementDimensions.left +\n elementDimensions.width / 2 -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) /\n 2,\n window.innerWidth -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n return 0;\n }\n function repositionPopover(element, step) {\n const popover = getState(\"popover\");\n if (!popover) {\n return;\n }\n const { align = \"start\", side = \"left\" } =\n (step == null ? void 0 : step.popover) || {};\n const requiredAlignment = align;\n const requiredSide =\n element.id === \"gleap-tour-dummy-element\" ? \"over\" : side;\n const popoverPadding = getConfig(\"stagePadding\") || 0;\n const popoverDimensions = getPopoverDimensions();\n const popoverArrowDimensions = popover.arrow.getBoundingClientRect();\n const elementDimensions = element.getBoundingClientRect();\n const topValue = elementDimensions.top - popoverDimensions.height;\n let isTopOptimal = topValue >= 0;\n const bottomValue =\n window.innerHeight -\n (elementDimensions.bottom + popoverDimensions.height);\n let isBottomOptimal = bottomValue >= 0;\n const leftValue = elementDimensions.left - popoverDimensions.width;\n let isLeftOptimal = leftValue >= 0;\n const rightValue =\n window.innerWidth - (elementDimensions.right + popoverDimensions.width);\n let isRightOptimal = rightValue >= 0;\n const noneOptimal =\n !isTopOptimal && !isBottomOptimal && !isLeftOptimal && !isRightOptimal;\n let popoverRenderedSide = requiredSide;\n if (requiredSide === \"top\" && isTopOptimal) {\n isRightOptimal = isLeftOptimal = isBottomOptimal = false;\n } else if (requiredSide === \"bottom\" && isBottomOptimal) {\n isRightOptimal = isLeftOptimal = isTopOptimal = false;\n } else if (requiredSide === \"left\" && isLeftOptimal) {\n isRightOptimal = isTopOptimal = isBottomOptimal = false;\n } else if (requiredSide === \"right\" && isRightOptimal) {\n isLeftOptimal = isTopOptimal = isBottomOptimal = false;\n }\n if (requiredSide === \"over\") {\n const leftToSet = window.innerWidth / 2 - popoverDimensions.realWidth / 2;\n const topToSet =\n window.innerHeight / 2 - popoverDimensions.realHeight / 2;\n popover.wrapper.style.left = `${leftToSet}px`;\n popover.wrapper.style.right = `auto`;\n popover.wrapper.style.top = `${topToSet}px`;\n popover.wrapper.style.bottom = `auto`;\n } else if (noneOptimal) {\n const leftValue2 =\n window.innerWidth / 2 -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) / 2;\n const bottomValue2 = 10;\n popover.wrapper.style.left = `${leftValue2}px`;\n popover.wrapper.style.right = `auto`;\n popover.wrapper.style.bottom = `${bottomValue2}px`;\n popover.wrapper.style.top = `auto`;\n } else if (isLeftOptimal) {\n const leftToSet = Math.min(\n leftValue,\n window.innerWidth -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) -\n popoverArrowDimensions.width\n );\n const topToSet = calculateTopForLeftRight(requiredAlignment, {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n });\n popover.wrapper.style.left = `${leftToSet}px`;\n popover.wrapper.style.top = `${topToSet}px`;\n popover.wrapper.style.bottom = `auto`;\n popover.wrapper.style.right = \"auto\";\n popoverRenderedSide = \"left\";\n } else if (isRightOptimal) {\n const rightToSet = Math.min(\n rightValue,\n window.innerWidth -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) -\n popoverArrowDimensions.width\n );\n const topToSet = calculateTopForLeftRight(requiredAlignment, {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n });\n popover.wrapper.style.right = `${rightToSet}px`;\n popover.wrapper.style.top = `${topToSet}px`;\n popover.wrapper.style.bottom = `auto`;\n popover.wrapper.style.left = \"auto\";\n popoverRenderedSide = \"right\";\n } else if (isTopOptimal) {\n const topToSet = Math.min(\n topValue,\n window.innerHeight -\n popoverDimensions.realHeight -\n popoverArrowDimensions.width\n );\n let leftToSet = calculateLeftForTopBottom(requiredAlignment, {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n });\n popover.wrapper.style.top = `${topToSet}px`;\n popover.wrapper.style.left = `${leftToSet}px`;\n popover.wrapper.style.bottom = `auto`;\n popover.wrapper.style.right = \"auto\";\n popoverRenderedSide = \"top\";\n } else if (isBottomOptimal) {\n const bottomToSet = Math.min(\n bottomValue,\n window.innerHeight -\n (popoverDimensions == null ? void 0 : popoverDimensions.realHeight) -\n popoverArrowDimensions.width\n );\n let leftToSet = calculateLeftForTopBottom(requiredAlignment, {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n });\n popover.wrapper.style.left = `${leftToSet}px`;\n popover.wrapper.style.bottom = `${bottomToSet}px`;\n popover.wrapper.style.top = `auto`;\n popover.wrapper.style.right = \"auto\";\n popoverRenderedSide = \"bottom\";\n }\n if (!noneOptimal) {\n renderPopoverArrow(requiredAlignment, popoverRenderedSide, element);\n } else {\n popover.arrow.classList.add(\"gleap-tour-popover-arrow-none\");\n }\n }\n function renderPopoverArrow(alignment, side, element) {\n const popover = getState(\"popover\");\n if (!popover) {\n return;\n }\n const elementDimensions = element.getBoundingClientRect();\n const popoverDimensions = getPopoverDimensions();\n const popoverArrow = popover.arrow;\n const popoverWidth = popoverDimensions.width;\n const windowWidth = window.innerWidth;\n const elementWidth = elementDimensions.width;\n const elementLeft = elementDimensions.left;\n const popoverHeight = popoverDimensions.height;\n const windowHeight = window.innerHeight;\n const elementTop = elementDimensions.top;\n const elementHeight = elementDimensions.height;\n popoverArrow.className = \"gleap-tour-popover-arrow\";\n let arrowSide = side;\n let arrowAlignment = alignment;\n if (side === \"top\") {\n if (elementLeft + elementWidth <= 0) {\n arrowSide = \"right\";\n arrowAlignment = \"end\";\n } else if (elementLeft + elementWidth - popoverWidth <= 0) {\n arrowSide = \"top\";\n arrowAlignment = \"start\";\n }\n if (elementLeft >= windowWidth) {\n arrowSide = \"left\";\n arrowAlignment = \"end\";\n } else if (elementLeft + popoverWidth >= windowWidth) {\n arrowSide = \"top\";\n arrowAlignment = \"end\";\n }\n } else if (side === \"bottom\") {\n if (elementLeft + elementWidth <= 0) {\n arrowSide = \"right\";\n arrowAlignment = \"start\";\n } else if (elementLeft + elementWidth - popoverWidth <= 0) {\n arrowSide = \"bottom\";\n arrowAlignment = \"start\";\n }\n if (elementLeft >= windowWidth) {\n arrowSide = \"left\";\n arrowAlignment = \"start\";\n } else if (elementLeft + popoverWidth >= windowWidth) {\n arrowSide = \"bottom\";\n arrowAlignment = \"end\";\n }\n } else if (side === \"left\") {\n if (elementTop + elementHeight <= 0) {\n arrowSide = \"bottom\";\n arrowAlignment = \"end\";\n } else if (elementTop + elementHeight - popoverHeight <= 0) {\n arrowSide = \"left\";\n arrowAlignment = \"start\";\n }\n if (elementTop >= windowHeight) {\n arrowSide = \"top\";\n arrowAlignment = \"end\";\n } else if (elementTop + popoverHeight >= windowHeight) {\n arrowSide = \"left\";\n arrowAlignment = \"end\";\n }\n } else if (side === \"right\") {\n if (elementTop + elementHeight <= 0) {\n arrowSide = \"bottom\";\n arrowAlignment = \"start\";\n } else if (elementTop + elementHeight - popoverHeight <= 0) {\n arrowSide = \"right\";\n arrowAlignment = \"start\";\n }\n if (elementTop >= windowHeight) {\n arrowSide = \"top\";\n arrowAlignment = \"start\";\n } else if (elementTop + popoverHeight >= windowHeight) {\n arrowSide = \"right\";\n arrowAlignment = \"end\";\n }\n } else;\n if (!arrowSide) {\n popoverArrow.classList.add(\"gleap-tour-popover-arrow-none\");\n } else {\n popoverArrow.classList.add(`gleap-tour-popover-arrow-side-${arrowSide}`);\n popoverArrow.classList.add(\n `gleap-tour-popover-arrow-align-${arrowAlignment}`\n );\n }\n }\n function createPopover() {\n const wrapper = document.createElement(\"div\");\n wrapper.classList.add(\"gleap-tour-popover\");\n const arrow = document.createElement(\"div\");\n arrow.classList.add(\"gleap-tour-popover-arrow\");\n const title = document.createElement(\"div\");\n title.id = \"gleap-tour-popover-title\";\n title.classList.add(\"gleap-tour-popover-title\");\n title.style.display = \"none\";\n title.innerText = \"Popover Title\";\n const description = document.createElement(\"div\");\n description.id = \"gleap-tour-popover-description\";\n description.classList.add(\"gleap-tour-popover-description\");\n description.style.display = \"none\";\n description.innerText = \"Popover description is here\";\n const closeButton = document.createElement(\"button\");\n closeButton.type = \"button\";\n closeButton.classList.add(\"gleap-tour-popover-close-btn\");\n closeButton.setAttribute(\"aria-label\", \"Close\");\n closeButton.innerHTML = \"×\";\n const footer = document.createElement(\"div\");\n footer.classList.add(\"gleap-tour-popover-footer\");\n const progress = document.createElement(\"span\");\n progress.classList.add(\"gleap-tour-popover-progress-text\");\n progress.innerText = \"\";\n const footerButtons = document.createElement(\"span\");\n footerButtons.classList.add(\"gleap-tour-popover-navigation-btns\");\n const previousButton = document.createElement(\"button\");\n previousButton.type = \"button\";\n previousButton.classList.add(\"gleap-tour-popover-prev-btn\");\n previousButton.innerHTML = \"← Previous\";\n const nextButton = document.createElement(\"button\");\n nextButton.type = \"button\";\n nextButton.classList.add(\"gleap-tour-popover-next-btn\");\n nextButton.innerHTML = \"Next →\";\n footerButtons.appendChild(previousButton);\n footerButtons.appendChild(nextButton);\n footer.appendChild(progress);\n footer.appendChild(footerButtons);\n wrapper.appendChild(closeButton);\n wrapper.appendChild(arrow);\n wrapper.appendChild(title);\n wrapper.appendChild(description);\n wrapper.appendChild(footer);\n return {\n wrapper,\n arrow,\n title,\n description,\n footer,\n previousButton,\n nextButton,\n closeButton,\n footerButtons,\n progress,\n };\n }\n function destroyPopover() {\n var _a;\n const popover = getState(\"popover\");\n if (!popover) {\n return;\n }\n (_a = popover.wrapper.parentElement) == null\n ? void 0\n : _a.removeChild(popover.wrapper);\n }\n function driver(options = {}) {\n configure(options);\n function handleClose() {\n if (!getConfig(\"allowClose\")) {\n return;\n }\n destroy();\n }\n function moveNext() {\n const activeIndex = getState(\"activeIndex\");\n const steps = getConfig(\"steps\") || [];\n if (typeof activeIndex === \"undefined\") {\n return;\n }\n const nextStepIndex = activeIndex + 1;\n if (steps[nextStepIndex]) {\n drive(nextStepIndex);\n } else {\n destroy();\n }\n }\n function movePrevious() {\n const activeIndex = getState(\"activeIndex\");\n const steps = getConfig(\"steps\") || [];\n if (typeof activeIndex === \"undefined\") {\n return;\n }\n const previousStepIndex = activeIndex - 1;\n if (steps[previousStepIndex]) {\n drive(previousStepIndex);\n } else {\n destroy();\n }\n }\n function moveTo(index) {\n const steps = getConfig(\"steps\") || [];\n if (steps[index]) {\n drive(index);\n } else {\n destroy();\n }\n }\n function handleArrowLeft() {\n var _a;\n const isTransitioning = getState(\"__transitionCallback\");\n if (isTransitioning) {\n return;\n }\n const activeIndex = getState(\"activeIndex\");\n const activeStep = getState(\"__activeStep\");\n const activeElement = getState(\"__activeElement\");\n\n if (activeStep.mode === \"CLICK\") {\n return;\n }\n if (\n typeof activeIndex === \"undefined\" ||\n typeof activeStep === \"undefined\"\n ) {\n return;\n }\n const currentStepIndex = getState(\"activeIndex\");\n if (typeof currentStepIndex === \"undefined\") {\n return;\n }\n const onPrevClick =\n ((_a = activeStep.popover) == null ? void 0 : _a.onPrevClick) ||\n getConfig(\"onPrevClick\");\n if (onPrevClick) {\n return onPrevClick(activeElement, activeStep, {\n config: getConfig(),\n state: getState(),\n });\n }\n movePrevious();\n }\n function handleArrowRight() {\n var _a;\n const isTransitioning = getState(\"__transitionCallback\");\n if (isTransitioning) {\n return;\n }\n const activeIndex = getState(\"activeIndex\");\n const activeStep = getState(\"__activeStep\");\n const activeElement = getState(\"__activeElement\");\n\n if (activeStep.mode === \"CLICK\") {\n return;\n }\n if (\n typeof activeIndex === \"undefined\" ||\n typeof activeStep === \"undefined\"\n ) {\n return;\n }\n const onNextClick =\n ((_a = activeStep.popover) == null ? void 0 : _a.onNextClick) ||\n getConfig(\"onNextClick\");\n if (onNextClick) {\n return onNextClick(activeElement, activeStep, {\n config: getConfig(),\n state: getState(),\n });\n }\n moveNext();\n }\n function init() {\n if (getState(\"isInitialized\")) {\n return;\n }\n setState(\"isInitialized\", true);\n document.body.classList.add(\n \"gleap-tour-active\",\n getConfig(\"animate\") ? \"gleap-tour-fade\" : \"gleap-tour-simple\"\n );\n initEvents();\n listen(\"overlayClick\", handleClose);\n listen(\"escapePress\", handleClose);\n listen(\"arrowLeftPress\", handleArrowLeft);\n listen(\"arrowRightPress\", handleArrowRight);\n }\n function drive(stepIndex = 0) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n const steps = getConfig(\"steps\");\n if (!steps) {\n console.error(\"No steps to drive through\");\n destroy();\n return;\n }\n if (!steps[stepIndex]) {\n destroy();\n return;\n }\n setState(\"__activeOnDestroyed\", document.activeElement);\n setState(\"activeIndex\", stepIndex);\n const currentStep = steps[stepIndex];\n const hasNextStep = steps[stepIndex + 1];\n const hasPreviousStep = steps[stepIndex - 1];\n const doneBtnText =\n ((_a = currentStep.popover) == null ? void 0 : _a.doneBtnText) ||\n getConfig(\"doneBtnText\") ||\n \"Done\";\n const allowsClosing = getConfig(\"allowClose\");\n const showProgress =\n typeof ((_b = currentStep.popover) == null\n ? void 0\n : _b.showProgress) !== \"undefined\"\n ? (_c = currentStep.popover) == null\n ? void 0\n : _c.showProgress\n : getConfig(\"showProgress\");\n const progressText =\n ((_d = currentStep.popover) == null ? void 0 : _d.progressText) ||\n getConfig(\"progressText\") ||\n \"{{current}} of {{total}}\";\n const progressTextReplaced = progressText\n .replace(\"{{current}}\", `${stepIndex + 1}`)\n .replace(\"{{total}}\", `${steps.length}`);\n const configuredButtons =\n ((_e = currentStep.popover) == null ? void 0 : _e.showButtons) ||\n getConfig(\"showButtons\");\n const calculatedButtons = [\n \"next\",\n \"previous\",\n ...(allowsClosing ? [\"close\"] : []),\n ].filter((b) => {\n return (\n !(configuredButtons == null ? void 0 : configuredButtons.length) ||\n configuredButtons.includes(b)\n );\n });\n const onNextClick =\n ((_f = currentStep.popover) == null ? void 0 : _f.onNextClick) ||\n getConfig(\"onNextClick\");\n const onPrevClick =\n ((_g = currentStep.popover) == null ? void 0 : _g.onPrevClick) ||\n getConfig(\"onPrevClick\");\n const onCloseClick =\n ((_h = currentStep.popover) == null ? void 0 : _h.onCloseClick) ||\n getConfig(\"onCloseClick\");\n highlight({\n ...currentStep,\n popover: {\n showButtons: calculatedButtons,\n nextBtnText: !hasNextStep ? doneBtnText : void 0,\n disableButtons: [...(!hasPreviousStep ? [\"previous\"] : [])],\n showProgress,\n progressText: progressTextReplaced,\n onNextClick: onNextClick\n ? onNextClick\n : () => {\n if (!hasNextStep) {\n destroy();\n } else {\n drive(stepIndex + 1);\n }\n },\n onPrevClick: onPrevClick\n ? onPrevClick\n : () => {\n drive(stepIndex - 1);\n },\n onCloseClick: onCloseClick\n ? onCloseClick\n : () => {\n destroy();\n },\n ...((currentStep == null ? void 0 : currentStep.popover) || {}),\n },\n });\n }\n function destroy(withOnDestroyStartedHook = true) {\n const activeElement = getState(\"__activeElement\");\n const activeStep = getState(\"__activeStep\");\n const activeOnDestroyed = getState(\"__activeOnDestroyed\");\n const onDestroyStarted = getConfig(\"onDestroyStarted\");\n if (withOnDestroyStartedHook && onDestroyStarted) {\n const isActiveDummyElement =\n !activeElement ||\n (activeElement == null ? void 0 : activeElement.id) ===\n \"gleap-tour-dummy-element\";\n onDestroyStarted(\n isActiveDummyElement ? void 0 : activeElement,\n activeStep,\n {\n config: getConfig(),\n state: getState(),\n }\n );\n return;\n }\n const onDeselected =\n (activeStep == null ? void 0 : activeStep.onDeselected) ||\n getConfig(\"onDeselected\");\n const onDestroyed = getConfig(\"onDestroyed\");\n document.body.classList.remove(\n \"gleap-tour-active\",\n \"gleap-tour-fade\",\n \"gleap-tour-simple\"\n );\n destroyEvents();\n destroyPopover();\n destroyHighlight();\n destroyOverlay();\n destroyEmitter();\n resetState();\n if (activeElement && activeStep) {\n const isActiveDummyElement =\n activeElement.id === \"gleap-tour-dummy-element\";\n if (onDeselected) {\n onDeselected(\n isActiveDummyElement ? void 0 : activeElement,\n activeStep,\n {\n config: getConfig(),\n state: getState(),\n }\n );\n }\n if (onDestroyed) {\n onDestroyed(\n isActiveDummyElement ? void 0 : activeElement,\n activeStep,\n {\n config: getConfig(),\n state: getState(),\n }\n );\n }\n }\n if (activeOnDestroyed) {\n activeOnDestroyed.focus();\n }\n }\n return {\n isActive: () => getState(\"isInitialized\") || false,\n refresh: requireRefresh,\n drive: (stepIndex = 0) => {\n init();\n drive(stepIndex);\n },\n setConfig: configure,\n setSteps: (steps) => {\n resetState();\n configure({\n ...getConfig(),\n steps,\n });\n },\n getConfig,\n getState,\n getActiveIndex: () => getState(\"activeIndex\"),\n isFirstStep: () => getState(\"activeIndex\") === 0,\n isLastStep: () => {\n const steps = getConfig(\"steps\") || [];\n const activeIndex = getState(\"activeIndex\");\n return activeIndex !== void 0 && activeIndex === steps.length - 1;\n },\n getActiveStep: () => getState(\"activeStep\"),\n getActiveElement: () => getState(\"activeElement\"),\n getPreviousElement: () => getState(\"previousElement\"),\n getPreviousStep: () => getState(\"previousStep\"),\n moveNext,\n movePrevious,\n moveTo,\n hasNextStep: () => {\n const steps = getConfig(\"steps\") || [];\n const activeIndex = getState(\"activeIndex\");\n return activeIndex !== void 0 && steps[activeIndex + 1];\n },\n hasPreviousStep: () => {\n const steps = getConfig(\"steps\") || [];\n const activeIndex = getState(\"activeIndex\");\n return activeIndex !== void 0 && steps[activeIndex - 1];\n },\n highlight: (step) => {\n init();\n highlight({\n ...step,\n popover: step.popover\n ? {\n showButtons: [],\n showProgress: false,\n progressText: \"\",\n ...step.popover,\n }\n : void 0,\n });\n },\n destroy: () => {\n destroy(false);\n },\n };\n }\n return driver;\n})({});\n\nexport default GleapTours;\n","import { GleapConfigManager, GleapTranslationManager } from \"./Gleap\";\nimport { calculateContrast, loadIcon } from \"./UI\";\n\nconst localStorageKey = \"gleap-tour-data\";\nconst pointerContainerId = \"copilot-pointer-container\";\nconst styleId = \"copilot-tour-styles\";\nconst copilotJoinedContainerId = \"copilot-joined-container\";\n\nfunction estimateReadTime(text) {\n if (typeof window === \"undefined\") return;\n\n const wordsPerSecond = 3.6; // Average reading speed\n const wordCount = text.split(/\\s+/).filter((word) => word.length > 0).length;\n const readTimeInSeconds = Math.ceil(wordCount / wordsPerSecond);\n return readTimeInSeconds + 1;\n}\n\nfunction htmlToPlainText(html) {\n if (typeof window === \"undefined\") return;\n\n const tempDiv = document.createElement(\"div\");\n tempDiv.innerHTML = html;\n return tempDiv.textContent || \"\";\n}\n\nfunction scrollToElement(element) {\n if (typeof window === \"undefined\") return;\n\n if (element) {\n element.scrollIntoView({\n behavior: \"smooth\",\n block: \"center\",\n inline: \"center\",\n });\n }\n}\n\nfunction performClickAnimation(posX, posY) {\n if (typeof window === \"undefined\") return;\n\n const wave = document.createElement(\"div\");\n wave.className = \"click-wave\";\n wave.style.left = `${posX - 17}px`;\n wave.style.top = `${posY - 17}px`;\n document.body.appendChild(wave);\n setTimeout(() => {\n wave.remove();\n }, 800);\n}\n\nfunction waitForElement(selector, timeout = 5000) {\n if (typeof window === \"undefined\") return;\n\n const pollInterval = 100;\n const maxAttempts = timeout / pollInterval;\n let attempts = 0;\n return new Promise((resolve, reject) => {\n const interval = setInterval(() => {\n const element = document.querySelector(selector);\n if (element) {\n clearInterval(interval);\n resolve(element);\n } else if (attempts >= maxAttempts) {\n clearInterval(interval);\n reject(new Error(`Element not found for selector: ${selector}`));\n }\n attempts++;\n }, pollInterval);\n });\n}\n\nfunction smoothScrollToY(yPosition) {\n if (typeof window === \"undefined\") return;\n\n const viewportHeight = window.innerHeight;\n const targetScrollPosition = yPosition - viewportHeight / 2;\n window.scrollTo({\n top: targetScrollPosition,\n behavior: \"smooth\",\n });\n}\n\nasync function canPlayAudio() {\n if (typeof window === \"undefined\") return;\n\n const audio = new Audio(\n \"data:audio/wav;base64,UklGRigAAABXQVZFZm10IBAAAAABAAEARKwAABCxAgAEABAAZGF0YQAAAAA=\"\n );\n try {\n await audio.play();\n return true;\n } catch (err) {\n return false;\n }\n}\n\n// Helper: Check if an element is fully visible in the viewport.\nfunction isElementFullyVisible(el) {\n if (typeof window === \"undefined\") return;\n\n const rect = el.getBoundingClientRect();\n return (\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <= window.innerHeight &&\n rect.right <= window.innerWidth\n );\n}\n\n// Helper: Get scrollable ancestors of an element.\nfunction getScrollableAncestors(el) {\n if (typeof window === \"undefined\") return;\n\n let ancestors = [];\n let current = el.parentElement;\n while (current) {\n const style = window.getComputedStyle(current);\n if (\n (style.overflowY === \"auto\" || style.overflowY === \"scroll\") &&\n current.scrollHeight > current.clientHeight\n ) {\n ancestors.push(current);\n }\n current = current.parentElement;\n }\n return ancestors;\n}\n\nexport default class GleapCopilotTours {\n productTourData = undefined;\n productTourId = undefined;\n currentActiveIndex = undefined;\n lastArrowPositionX = undefined;\n lastArrowPositionY = undefined;\n onCompleteCallback = undefined;\n audioMuted = false;\n currentAudio = undefined;\n\n // Cached pointer container.\n _pointerContainer = null;\n // For scroll handling.\n _scrollListeners = [];\n _currentAnchor = null;\n _currentStep = null;\n _scrollDebounceTimer = null;\n\n // GleapReplayRecorder singleton.\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapCopilotTours();\n }\n return this.instance;\n }\n\n constructor() {\n const self = this;\n\n if (typeof window !== \"undefined\") {\n this._scrollListeners = [];\n this._currentAnchor = null;\n this._currentStep = null;\n this._scrollDebounceTimer = null;\n\n window.addEventListener(\"resize\", () => {\n if (\n self.productTourId &&\n self.currentActiveIndex >= 0 &&\n self.productTourData &&\n self.productTourData.steps\n ) {\n const steps = self.productTourData.steps;\n const currentStep = steps[self.currentActiveIndex];\n if (\n currentStep &&\n currentStep.selector &&\n currentStep.selector !== \"\"\n ) {\n self.updatePointerPosition(\n document.querySelector(currentStep.selector),\n currentStep\n );\n }\n }\n });\n }\n }\n\n disable() {\n this.disabled = true;\n \n this.cleanup();\n }\n\n startWithConfig(tourId, config, onCompleteCallback = undefined) {\n if (typeof window === \"undefined\") return;\n if (this.productTourId) return;\n if (this.disabled) return;\n\n this.productTourId = tourId;\n this.productTourData = config;\n this.currentActiveIndex = 0;\n this.onCompleteCallback = onCompleteCallback;\n this.start();\n }\n\n storeUncompletedTour() {\n if (typeof window === \"undefined\") return;\n if (this.productTourId && this.productTourData) {\n try {\n let data = JSON.parse(\n JSON.stringify({\n tourData: this.productTourData,\n tourId: this.productTourId,\n })\n );\n data.tourData.steps = data.tourData.steps.slice(\n this.currentActiveIndex || 0,\n data.tourData.steps.length\n );\n localStorage.setItem(localStorageKey, JSON.stringify(data));\n } catch (e) {\n // Optionally log error in development mode.\n }\n } else {\n localStorage.removeItem(localStorageKey);\n }\n }\n\n // Attach scroll listeners with a debounce to update the pointer position after scrolling stops.\n attachScrollListeners(anchor, currentStep) {\n if (typeof window === \"undefined\") return;\n if (!anchor) return;\n const scrollableAncestors = getScrollableAncestors(anchor);\n // Also include window.\n scrollableAncestors.push(window);\n scrollableAncestors.forEach((el) => {\n const handler = () => {\n clearTimeout(this._scrollDebounceTimer);\n this._scrollDebounceTimer = setTimeout(() => {\n this.updatePointerPosition(anchor, currentStep);\n }, 150);\n };\n el.addEventListener(\"scroll\", handler, { passive: true });\n this._scrollListeners.push({ el, handler });\n });\n }\n\n // Remove scroll listeners and clear debounce timer.\n removeScrollListeners() {\n if (typeof window === \"undefined\") return;\n if (this._scrollListeners && this._scrollListeners.length > 0) {\n this._scrollListeners.forEach(({ el, handler }) => {\n el.removeEventListener(\"scroll\", handler);\n });\n this._scrollListeners = [];\n }\n if (this._scrollDebounceTimer) {\n clearTimeout(this._scrollDebounceTimer);\n this._scrollDebounceTimer = null;\n }\n }\n\n // Updated pointer position:\n // 1. Scroll the element into view.\n // 2. After the element is fully visible (or after a maximum delay), update the pointer position to point towards the element.\n updatePointerPosition(anchor, currentStep) {\n if (typeof window === \"undefined\") return;\n try {\n const container =\n this._pointerContainer || document.getElementById(pointerContainerId);\n if (!container) return;\n\n if (!anchor) {\n container.style.position = \"fixed\";\n container.style.left = \"50%\";\n container.style.top = \"50%\";\n container.style.transform = \"translate(-50%, -50%)\";\n smoothScrollToY(window.innerHeight / 2);\n this.removeScrollListeners();\n this._currentAnchor = null;\n this._currentStep = null;\n return;\n }\n\n // Step 1: Scroll the element into view.\n scrollToElement(anchor);\n\n // Step 2: Poll until the element is fully visible (or after maximum polls).\n const pollInterval = 100;\n const maxPolls = 20;\n let pollCount = 0;\n const updateFinalPosition = () => {\n if (isElementFullyVisible(anchor) || pollCount >= maxPolls) {\n // Compute final target coordinates.\n const anchorRect = anchor.getBoundingClientRect();\n const targetX = anchorRect.left + anchorRect.width / 2;\n const targetY = anchorRect.top + anchorRect.height / 2 + 10; // 10px downward offset.\n container.style.position = \"fixed\";\n container.style.left = `${targetX}px`;\n container.style.top = `${targetY}px`;\n container.style.transform = \"translate(-50%, -50%)\";\n\n // Adjust container if too far right.\n let containerWidthSpace = 350;\n if (containerWidthSpace > window.innerWidth - 40) {\n containerWidthSpace = window.innerWidth - 40;\n }\n if (targetX + containerWidthSpace > window.innerWidth - 20) {\n container.classList.add(\"copilot-pointer-container-right\");\n } else {\n container.classList.remove(\"copilot-pointer-container-right\");\n }\n\n // Reattach scroll listeners if the target or step has changed.\n if (\n this._currentAnchor !== anchor ||\n this._currentStep !== currentStep\n ) {\n this.removeScrollListeners();\n this._currentAnchor = anchor;\n this._currentStep = currentStep;\n this.attachScrollListeners(anchor, currentStep);\n }\n } else {\n pollCount++;\n setTimeout(updateFinalPosition, pollInterval);\n }\n };\n updateFinalPosition();\n } catch (e) {\n // Optionally log errors.\n }\n }\n\n cleanup() {\n if (typeof window === \"undefined\") return;\n document.body.classList.add(\"gl-copilot-fade-out\");\n if (this.currentAudio) {\n this.currentAudio.pause();\n }\n setTimeout(() => {\n if (this._pointerContainer) {\n this._pointerContainer.remove();\n this._pointerContainer = null;\n } else {\n const container = document.getElementById(pointerContainerId);\n if (container) container.remove();\n }\n const copilotInfoContainer = document.getElementById(\n copilotJoinedContainerId\n );\n if (copilotInfoContainer) copilotInfoContainer.remove();\n const styleNode = document.getElementById(styleId);\n if (styleNode) styleNode.remove();\n document.body.classList.remove(\"gl-copilot-fade-out\");\n }, 800);\n\n this.productTourId = undefined;\n this.productTourData = undefined;\n \n this.removeScrollListeners();\n }\n\n toggleAudio(muted = false) {\n this.audioMuted = muted;\n if (this.currentAudio) {\n this.currentAudio.muted = this.audioMuted;\n }\n document.querySelector(`.${copilotJoinedContainerId}-mute`).innerHTML =\n loadIcon(this.audioMuted ? \"unmute\" : \"mute\");\n }\n\n setupCopilotTour() {\n if (typeof window === \"undefined\") return;\n\n const primaryColor =\n GleapConfigManager.getInstance().flowConfig?.color ?? \"#485BFF\";\n const contrastColor = calculateContrast(primaryColor);\n\n let styleNode = document.getElementById(styleId);\n if (!styleNode) {\n styleNode = document.createElement(\"style\");\n styleNode.id = styleId;\n styleNode.type = \"text/css\";\n styleNode.textContent = `\n #${pointerContainerId} {\n position: absolute;\n top: 0;\n left: 0;\n display: flex;\n align-items: flex-start;\n pointer-events: none;\n z-index: 2147483610;\n transition: all 0.5s ease;\n }\n .${pointerContainerId}-clickmode {\n cursor: pointer;\n pointer-events: all !important;\n }\n .${pointerContainerId}-clickmode #copilot-info-bubble-content {\n display: flex !important;\n }\n .${pointerContainerId}-clickmode svg {\n display: none !important;\n }\n #${pointerContainerId} svg {\n width: 20px;\n height: auto;\n fill: none;\n }\n #copilot-info-bubble {\n position: relative;\n }\n #copilot-info-bubble-content-container {\n position: absolute;\n top: 0px;\n left: 0px;\n min-width: min(300px, 80vw);\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n }\n .${pointerContainerId}-right #copilot-info-bubble-content-container {\n left: auto !important;\n right: 0px !important;\n align-items: flex-end;\n }\n .${pointerContainerId}-right .copilot-info-bubble-content {\n margin-right: 5px;\n }\n .${pointerContainerId}-right svg {\n transform: scaleX(-1);\n }\n #copilot-info-bubble-content svg {\n width: 16px;\n height: 16px;\n display: inline-block !important;\n margin-left: 5px;\n }\n #copilot-info-bubble-content {\n margin-top: 18px;\n margin-left: 5px;\n padding: 10px 15px;\n border-radius: 20px;\n background-color: black;\n color: white;\n font-family: Arial, sans-serif;\n font-size: 14px;\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);\n max-width: 100%;\n white-space: normal;\n overflow-wrap: break-word;\n word-break: normal;\n hyphens: none;\n }\n .${pointerContainerId}-right #copilot-info-bubble-content {\n margin-top: 30px;\n margin-left: 0px;\n margin-right: 5px;\n }\n .click-wave {\n position: absolute;\n width: 34px;\n height: 34px;\n border-radius: 50%;\n background-color: rgba(0, 0, 0, 0.5);\n pointer-events: none;\n z-index: 2147483611;\n animation: click-wave-animation 0.8s ease forwards;\n }\n @keyframes click-wave-animation {\n 0% {\n transform: scale(0.2);\n opacity: 1;\n }\n 100% {\n transform: scale(2);\n opacity: 0;\n }\n }\n @keyframes slideInFromTop {\n 0% {\n transform: translateY(-100%);\n opacity: 0;\n }\n 100% {\n transform: translateY(0);\n opacity: 1;\n }\n }\n .${copilotJoinedContainerId} {\n position: fixed;\n top: 20px;\n right: 20px;\n z-index: 2147483610;\n background: #fff;\n padding: 6px;\n border-radius: 10px;\n box-shadow: 0 0 20px 0 #C294F2;\n display: flex;\n align-items: center;\n gap: 8px;\n border: 1px solid rgba(192, 146, 242, 0.5);\n animation: slideInFromTop 0.5s ease-out forwards;\n }\n .${copilotJoinedContainerId} span {\n font-size: 13px;\n color: #000;\n font-family: sans-serif;\n }\n .${copilotJoinedContainerId}-avatar {\n width: 24px;\n height: 24px;\n flex-shrink: 0;\n border-radius: 6px;\n }\n .${copilotJoinedContainerId}-mute {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n .${copilotJoinedContainerId}-mute svg {\n width: 20px;\n height: auto;\n cursor: pointer;\n animation: pulsate 2s infinite;\n }\n .${copilotJoinedContainerId}-mute svg:hover {\n opacity: 0.8;\n }\n .${copilotJoinedContainerId}-dismiss {\n display: flex;\n align-items: center;\n justify-content: center;\n padding-right: 3px;\n }\n .${copilotJoinedContainerId}-dismiss svg {\n width: 15px;\n height: auto;\n cursor: pointer;\n }\n .${copilotJoinedContainerId}-dismiss svg:hover {\n opacity: 0.8;\n }\n @keyframes pulsate {\n 0% {\n transform: scale(1);\n opacity: 1;\n }\n 50% {\n transform: scale(1.1);\n opacity: 0.8;\n }\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n }\n @keyframes glCoFadeIn {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n @keyframes glCoFadeOut {\n 0% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n }\n\n .gleap-audio-unmute-modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n background-color: rgba(0, 0, 0, 0.5);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 2147483620;\n }\n\n .gleap-audio-unmute-modal {\n background-color: #fff;\n padding: 20px;\n border-radius: 8px;\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);\n text-align: center;\n max-width: 90%;\n width: 400px;\n }\n\n .gleap-audio-unmute-modal p {\n margin-bottom: 20px;\n font-size: 16px;\n line-height: 22px;\n font-weight: normal;\n }\n\n .gleap-audio-unmute-button {\n background: ${primaryColor};\n color: ${contrastColor};\n outline: none;\n border: none;\n padding: 10px 14px;\n border-radius: 12px;\n font-size: 14px;\n font-weight: bold;\n cursor: pointer;\n }\n\n .gleap-audio-unmute-button:hover {\n opacity: 0.8;\n }\n\n .gleap-tour-continue-button {\n color: ${primaryColor};\n text-decoration: none;\n cursor: pointer;\n font-size: 14px;\n font-weight: bold;\n border: none;\n background: none;\n padding: 0;\n margin: 0;\n margin-left: 20px;\n }\n\n .gleap-tour-continue-button:hover {\n opacity: 0.8;\n }\n\n body.gl-copilot-fade-out::before,\n body.gl-copilot-fade-out::after,\n body.gl-copilot-fade-out #${copilotJoinedContainerId} {\n animation: glCoFadeOut 0.8s ease-out forwards;\n }\n ${\n this.productTourData?.playVoice ?? true\n ? \"\"\n : `\n .${copilotJoinedContainerId}-mute {\n display: none;\n }\n `\n }\n ${\n this.productTourData.gradient\n ? `body::before {\n content: \"\";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n box-sizing: border-box;\n border: 18px solid transparent;\n filter: blur(25px);\n border-image-slice: 1;\n border-image-source: linear-gradient(45deg, #ED5587, #FBE6A9, #a6e3f8, #C294F2);\n animation: glCoFadeIn 1.5s ease-out forwards;\n }\n \n body::after {\n content: \"\";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n opacity: 0.5;\n box-sizing: border-box;\n border: 3px solid transparent;\n border-image-slice: 1;\n border-image-source: linear-gradient(45deg, #ED5587, #FBE6A9, #a6e3f8, #C294F2);\n animation: glCoFadeIn 1.5s ease-out forwards;\n }`\n : `body::after {\n content: \"\";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n opacity: 0;\n }`\n }\n `;\n document.head.appendChild(styleNode);\n }\n\n const container = document.createElement(\"div\");\n container.id = pointerContainerId;\n container.style.opacity = 0;\n // Cache the pointer container.\n this._pointerContainer = container;\n\n const svgMouse = document.createElementNS(\n \"http://www.w3.org/2000/svg\",\n \"svg\"\n );\n svgMouse.setAttribute(\"viewBox\", \"0 0 380 476\");\n svgMouse.innerHTML =\n '';\n\n const infoBubble = document.createElement(\"div\");\n infoBubble.id = \"copilot-info-bubble\";\n infoBubble.innerHTML = `
`;\n\n const copilotInfoContainer = document.createElement(\"div\");\n copilotInfoContainer.id = copilotJoinedContainerId;\n copilotInfoContainer.classList.add(copilotJoinedContainerId);\n copilotInfoContainer.innerHTML = `\n \n ${this.productTourData?.kaiSlug}\n
\n ${loadIcon(this.audioMuted ? \"unmute\" : \"mute\")}\n
\n ${\n this.productTourData?.allowClose\n ? `
\n ${loadIcon(\"dismiss\")}\n
`\n : \"\"\n }\n `;\n document.body.appendChild(copilotInfoContainer);\n\n const self = this;\n\n document\n .querySelector(`.${copilotJoinedContainerId}-mute`)\n .addEventListener(\"click\", () => {\n this.toggleAudio(!this.audioMuted);\n });\n\n if (this.productTourData?.allowClose) {\n document\n .querySelector(`.${copilotJoinedContainerId}-dismiss`)\n .addEventListener(\"click\", () => {\n this.completeTour(false);\n });\n }\n\n container.appendChild(svgMouse);\n container.appendChild(infoBubble);\n document.body.appendChild(container);\n }\n\n start() {\n if (typeof window === \"undefined\") return;\n if (this.disabled) return;\n\n const config = this.productTourData;\n if (!config) return;\n canPlayAudio().then((supported) => {\n this.audioMuted = !supported;\n this.setupCopilotTour();\n\n if (this.audioMuted && config?.showUnmuteModal) {\n this.showAudioUnmuteModal();\n } else {\n setTimeout(() => {\n this.renderNextStep();\n }, 1500);\n }\n });\n }\n\n showAudioUnmuteModal() {\n // Create the overlay element\n const modalOverlay = document.createElement(\"div\");\n modalOverlay.classList.add(\"gleap-audio-unmute-modal-overlay\");\n\n // Create the modal container element\n const modal = document.createElement(\"div\");\n modal.classList.add(\"gleap-audio-unmute-modal\");\n\n // Create and add the modal message\n const message = document.createElement(\"p\");\n message.textContent = this.productTourData?.unmuteModalTitle;\n modal.appendChild(message);\n\n // Create the \"Unmute Audio\" button\n const unmuteButton = document.createElement(\"button\");\n unmuteButton.classList.add(\"gleap-audio-unmute-button\");\n unmuteButton.textContent = this.productTourData?.unmuteModalButton;\n unmuteButton.addEventListener(\"click\", () => {\n this.toggleAudio(false);\n if (modalOverlay.parentNode) {\n modalOverlay.parentNode.removeChild(modalOverlay);\n }\n setTimeout(() => {\n this.renderNextStep();\n }, 1000);\n });\n modal.appendChild(unmuteButton);\n\n // Create the \"Start Anyway\" button\n const startAnywayButton = document.createElement(\"button\");\n startAnywayButton.classList.add(\"gleap-tour-continue-button\");\n startAnywayButton.textContent = this.productTourData?.unmuteModalContinue;\n startAnywayButton.addEventListener(\"click\", () => {\n if (modalOverlay.parentNode) {\n modalOverlay.parentNode.removeChild(modalOverlay);\n }\n setTimeout(() => {\n this.renderNextStep();\n }, 1000);\n });\n modal.appendChild(startAnywayButton);\n\n // Build the modal and attach it to the DOM\n modalOverlay.appendChild(modal);\n document.body.appendChild(modalOverlay);\n }\n\n completeTour(success = true) {\n if (typeof window === \"undefined\") return;\n this.cleanup();\n if (this.onCompleteCallback) {\n this.onCompleteCallback(success);\n }\n }\n\n renderNextStep() {\n if (typeof window === \"undefined\") return;\n if (this.disabled) return;\n\n const self = this;\n const config = this.productTourData;\n const steps = config.steps;\n if (this.currentActiveIndex >= steps.length) {\n setTimeout(() => {\n this.completeTour();\n }, 500);\n return;\n }\n const currentStep = steps[this.currentActiveIndex];\n const handleStep = (element) => {\n this._pointerContainer.style.display = \"flex\";\n if (currentStep.selector && currentStep.selector.length > 0 && !element) {\n this.completeTour(false);\n return;\n }\n const gotToNextStep = () => {\n if (currentStep.mode === \"INPUT\" && element) {\n function proceedClickmode() {\n document\n .querySelector(`#${pointerContainerId}`)\n .classList.remove(\"copilot-pointer-container-clickmode\");\n element.classList.remove(\"gleap-input-highlight\");\n document.getElementById(pointerContainerId).style.display = \"none\";\n self.currentActiveIndex++;\n self.storeUncompletedTour();\n self.renderNextStep();\n }\n const inputModeType = currentStep.inputType ?? \"default\";\n if (inputModeType === \"default\") {\n function handleInputEvent(e) {\n if (e?.target?.value?.length === 0) return;\n const cursor = document.getElementById(\n `copilot-info-bubble-content`\n );\n if (!cursor) return;\n cursor.innerHTML = `${GleapTranslationManager.translateText(\n \"next\"\n )} \n \n`;\n cursor.addEventListener(\"click\", proceedClickmode, {\n once: true,\n });\n element.classList.add(\"gleap-input-highlight\");\n document\n .querySelector(`#${pointerContainerId}`)\n .classList.add(\"copilot-pointer-container-clickmode\");\n element.removeEventListener(\"input\", handleInputEvent);\n }\n element.addEventListener(\"input\", handleInputEvent, {\n once: false,\n });\n if (element.hasAttribute(\"contenteditable\")) {\n element.addEventListener(\"keyup\", handleInputEvent, {\n once: false,\n });\n }\n element.addEventListener(\n \"blur\",\n () => {\n element.focus();\n },\n { once: true }\n );\n element.focus();\n } else {\n const inputValue = currentStep.inputValue ?? \"\";\n let index = 0;\n function typeCharacter() {\n if (index < inputValue.length) {\n element.value += inputValue[index];\n index++;\n setTimeout(typeCharacter, 100);\n } else {\n setTimeout(() => {\n proceedClickmode();\n }, 1200);\n }\n }\n typeCharacter();\n }\n return;\n }\n self.currentActiveIndex++;\n self.storeUncompletedTour();\n if (currentStep.mode === \"CLICK\" && element) {\n const rect = element.getBoundingClientRect();\n const scrollX = window.scrollX || 0;\n const scrollY = window.scrollY || 0;\n performClickAnimation(\n rect.left + rect.width / 2 + scrollX,\n rect.top + rect.height / 2 + scrollY\n );\n element.click();\n }\n self.renderNextStep();\n };\n\n this.updatePointerPosition(element, currentStep);\n const message = currentStep?.message\n ? htmlToPlainText(currentStep.message)\n : \"🤔\";\n document.getElementById(`copilot-info-bubble-content`).textContent =\n message;\n this._pointerContainer.style.opacity = 1;\n const readTime = estimateReadTime(message);\n const continueWithNoAudio = () => {\n this.currentAudio = undefined;\n setTimeout(() => {\n gotToNextStep();\n }, readTime * 1000);\n };\n if (currentStep.voice && currentStep.voice.length > 0) {\n this.currentAudio = new Audio(currentStep.voice);\n if (this.audioMuted) {\n this.currentAudio.muted = true;\n }\n this.currentAudio.addEventListener(\"ended\", () => {\n setTimeout(() => {\n gotToNextStep();\n }, 1000);\n });\n this.currentAudio\n .play()\n .then(() => {})\n .catch((error) => {\n continueWithNoAudio();\n });\n } else {\n continueWithNoAudio();\n }\n };\n\n const elementPromise = currentStep.selector\n ? waitForElement(currentStep.selector)\n : Promise.resolve(null);\n elementPromise.then(handleStep).catch(() => handleStep(null));\n }\n}\n","import { loadIcon } from \"./UI\";\nimport GleapTours from \"./GleapTours\";\nimport Gleap, { GleapEventManager, GleapSession } from \"./Gleap\";\nimport GleapCopilotTours from \"./GleapCopilotTours\";\n\nconst localStorageKey = \"gleap-tour-data\";\n\nexport default class GleapProductTours {\n productTourData = undefined;\n productTourId = undefined;\n unmuted = false;\n currentActiveIndex = undefined;\n gleapTourObj = undefined;\n disabled = false;\n\n // GleapReplayRecorder singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapProductTours();\n return this.instance;\n } else {\n return this.instance;\n }\n }\n\n disable() {\n if (this.gleapTourObj) {\n this.gleapTourObj.destroy();\n }\n\n // Disable copilot tours.\n GleapCopilotTours.getInstance().disable();\n\n this.gleapTourObj = undefined;\n this.disabled = true;\n }\n\n constructor() {\n const self = this;\n\n if (typeof window !== \"undefined\") {\n const beforeUnloadListener = (event) => {\n if (\n !self?.disabled &&\n self?.productTourId &&\n self?.productTourData &&\n self?.productTourData?.tourType !== \"cobrowse\"\n ) {\n self.storeUncompletedTour();\n }\n };\n\n if (typeof window !== \"undefined\") {\n window.addEventListener(\"beforeunload\", beforeUnloadListener);\n }\n }\n }\n\n startWithConfig(tourId, config, delay = 0, manually = false) {\n // Prevent multiple tours from being started.\n if (this.productTourId || this.disabled) {\n return;\n }\n\n this.productTourId = tourId;\n this.productTourData = config;\n this.currentActiveIndex = 0;\n\n if (manually) {\n this.start();\n } else {\n const self = this;\n\n // Validate product tour.\n GleapSession.getInstance()\n .validateProductTour(tourId)\n .then(() => {\n if (delay > 0) {\n return setTimeout(() => {\n self.start();\n }, delay);\n } else {\n return this.start();\n }\n })\n .catch((error) => {\n console.log(\"Product tour is not live. Cleaning up...\");\n console.error(error);\n\n self.onComplete(false);\n });\n }\n }\n\n onComplete(success = true) {\n const comData = {\n tourId: this.productTourId,\n };\n\n if (success) {\n GleapEventManager.notifyEvent(\"productTourCompleted\", comData);\n Gleap.trackEvent(`tour-${this.productTourId}-completed`, comData);\n } else {\n GleapEventManager.notifyEvent(\"productTourQuit\", comData);\n Gleap.trackEvent(`tour-${this.productTourId}-quit`, comData);\n }\n\n // Clear data.\n if (this.gleapTourObj) {\n this.gleapTourObj.destroy();\n }\n\n this.gleapTourObj = undefined;\n this.productTourData = undefined;\n this.productTourId = undefined;\n this.currentActiveIndex = undefined;\n this.clearUncompletedTour();\n }\n\n loadUncompletedTour() {\n try {\n const data = JSON.parse(localStorage.getItem(localStorageKey));\n if (data?.tourData && data?.tourId) {\n return data;\n }\n } catch (e) {}\n\n return null;\n }\n\n storeUncompletedTour() {\n if (this.productTourId && this.productTourData) {\n try {\n let data = JSON.parse(\n JSON.stringify({\n tourData: this.productTourData,\n tourId: this.productTourId,\n })\n );\n\n data.tourData.steps = data.tourData.steps.slice(\n this.currentActiveIndex || 0,\n data.tourData.steps.length\n );\n\n localStorage.setItem(localStorageKey, JSON.stringify(data));\n } catch (e) {}\n } else {\n this.clearUncompletedTour();\n }\n }\n\n clearUncompletedTour() {\n try {\n localStorage.removeItem(localStorageKey);\n } catch (e) {}\n }\n\n start() {\n const config = this.productTourData;\n if (!config) {\n return;\n }\n\n if (config.tourType === \"cobrowse\") {\n return GleapCopilotTours.getInstance().startWithConfig(\n this.productTourId,\n config,\n (success) => {\n this.onComplete(success);\n }\n );\n }\n\n this.unmuted = false;\n const steps = config.steps;\n const self = this;\n\n var driverSteps = [];\n\n for (let i = 0; i < steps.length; i++) {\n const step = steps[i];\n\n const isClickMode = step.mode === \"CLICK\";\n const isInputMode = step.mode === \"INPUT\";\n\n var message = \"\";\n var hasSender = false;\n\n if (step.type === \"video-pointer\") {\n message = `
\n \n
${loadIcon(\n \"unmute\"\n )}
\n
`;\n } else {\n var senderHTML = ``;\n\n if (config.sender && config.sender.firstName) {\n hasSender = true;\n senderHTML = `
\n
\n
${config.sender.firstName}
\n
`;\n }\n\n message = `${senderHTML}
${step.message}
`;\n }\n\n const disableInteraction = !isClickMode && !isInputMode;\n\n var driverStep = {\n disableActiveInteraction: disableInteraction,\n mode: step.mode,\n popover: {\n description: message,\n popoverClass: `gleap-tour-popover-${step.type} ${\n !hasSender && \"gleap-tour-popover-no-sender\"\n } ${config.allowClose && \"gleap-tour-popover-can-close\"}`,\n ...(isClickMode\n ? {\n showButtons: [],\n }\n : {}),\n },\n };\n if (step.selector && step.selector.length > 0) {\n driverStep.element = step.selector;\n }\n driverSteps.push(driverStep);\n }\n\n var buttons = [\"next\", \"close\"];\n\n if (config.backButton) {\n buttons.push(\"previous\");\n }\n\n function onDocumentClick(evnt) {\n try {\n var gleapTourPopover = document.querySelector(\".gleap-tour-popover\");\n if (gleapTourPopover && !gleapTourPopover.contains(evnt.target)) {\n const stepIndex = self.gleapTourObj.getActiveIndex();\n const step = steps[stepIndex];\n const element = self.gleapTourObj.getActiveElement();\n\n if (step?.mode === \"CLICK\" && evnt?.target !== element) {\n const isInsideElement = element.contains(evnt?.target);\n if (!isInsideElement) {\n // Ignore clicks outside of the actual element.\n return;\n }\n }\n\n // Store next step index.\n self.currentActiveIndex = (self.currentActiveIndex || 0) + 1;\n self.storeUncompletedTour();\n\n if (\n (element && element.tagName === \"INPUT\") ||\n step.mode === \"INPUT\" ||\n evnt?.target?.id.includes(\"tooltip-svg\")\n ) {\n // Prevent.\n } else {\n self.gleapTourObj.moveNext();\n }\n }\n } catch (e) {}\n }\n\n this.gleapTourObj = GleapTours({\n showProgress: true,\n allowKeyboardControl: false,\n steps: driverSteps,\n showProgress: steps.length > 1,\n allowClose: config.allowClose,\n nextBtnText: config.nextText,\n doneBtnText: config.doneText,\n prevBtnText: config.prevText,\n showButtons: buttons,\n onHighlightStarted: (element, step, config) => {\n this.currentActiveIndex = config?.state?.activeIndex;\n this.storeUncompletedTour();\n },\n onElementNotFound: (step) => {\n document.removeEventListener(\"click\", onDocumentClick);\n\n this.onComplete(false);\n },\n onDestroyStarted: () => {\n if (!this.gleapTourObj.hasNextStep()) {\n // Mark as completed.\n this.onComplete(true);\n } else {\n // Mark as quit.\n this.onComplete(false);\n }\n\n document.removeEventListener(\"click\", onDocumentClick);\n },\n onPopoverRender: (popoverElement) => {\n // Fix for images and videos.\n if (popoverElement) {\n const mediaElements = document.querySelectorAll(\n \".gleap-tour-popover-description img, .gleap-tour-popover-description video\"\n );\n\n const performRequentialRefresh = () => {\n setTimeout(() => {\n this.gleapTourObj.refresh();\n }, 500);\n setTimeout(() => {\n this.gleapTourObj.refresh();\n }, 750);\n };\n\n for (let i = 0; i < mediaElements.length; i++) {\n const mediaElement = mediaElements[i];\n if (mediaElement.tagName === \"IMG\") {\n mediaElement.addEventListener(\"load\", () => {\n performRequentialRefresh();\n });\n mediaElement.addEventListener(\"error\", () => {\n performRequentialRefresh();\n });\n } else if (mediaElement.tagName === \"VIDEO\") {\n mediaElement.addEventListener(\"canplaythrough\", () => {\n performRequentialRefresh();\n });\n mediaElement.addEventListener(\"error\", () => {\n performRequentialRefresh();\n });\n }\n }\n }\n\n const playingClass = \"gleap-tour-video--playing\";\n const playPauseContainer = document.querySelector(\n \".gleap-tour-video-playpause\"\n );\n\n const videoElement = document.querySelector(\".gleap-tour-video-obj\");\n if (videoElement) {\n const videoContainer = videoElement.closest(\".gleap-tour-video\");\n\n if (self.unmuted) {\n if (videoElement) {\n videoElement.pause();\n videoElement.muted = false;\n videoElement.play();\n videoContainer.classList.add(playingClass);\n }\n }\n\n videoElement.addEventListener(\"ended\", function () {\n playPauseContainer.innerHTML = loadIcon(\"replay\");\n playPauseContainer.classList.add(\n \"gleap-tour-video-svg--fullscreen\"\n );\n videoContainer.classList.remove(playingClass);\n });\n\n videoElement.addEventListener(\"play\", function () {\n playPauseContainer.classList.remove(\n \"gleap-tour-video-svg--fullscreen\"\n );\n });\n\n if (playPauseContainer) {\n playPauseContainer.addEventListener(\"click\", () => clickVideo());\n }\n\n const clickVideo = () => {\n if (videoElement.muted) {\n self.unmuted = true;\n\n videoElement.pause();\n videoElement.currentTime = 0;\n videoElement.muted = false;\n videoElement.play();\n\n playPauseContainer.innerHTML = loadIcon(\"mute\");\n videoContainer.classList.add(playingClass);\n } else if (videoElement.paused) {\n videoElement.muted = false;\n videoElement.play();\n\n playPauseContainer.innerHTML = loadIcon(\"mute\");\n videoContainer.classList.add(playingClass);\n } else {\n videoElement.pause();\n playPauseContainer.innerHTML = loadIcon(\"unmute\");\n videoContainer.classList.remove(playingClass);\n }\n };\n }\n },\n });\n this.gleapTourObj.drive();\n\n document.addEventListener(\"click\", onDocumentClick, true);\n }\n}\n","import { injectStyledCSS } from \"./UI\";\nimport GleapNetworkIntercepter from \"./GleapNetworkIntercepter\";\nimport {\n fixGleapHeight,\n gleapDataParser,\n runFunctionWhenDomIsReady,\n} from \"./GleapHelper\";\nimport GleapSession from \"./GleapSession\";\nimport GleapStreamedEvent from \"./GleapStreamedEvent\";\nimport GleapConfigManager from \"./GleapConfigManager\";\nimport GleapFeedback from \"./GleapFeedback\";\nimport GleapFrameManager from \"./GleapFrameManager\";\nimport GleapMetaDataManager from \"./GleapMetaDataManager\";\nimport GleapConsoleLogManager from \"./GleapConsoleLogManager\";\nimport GleapClickListener from \"./GleapClickListener\";\nimport GleapFeedbackButtonManager from \"./GleapFeedbackButtonManager\";\nimport GleapCustomDataManager from \"./GleapCustomDataManager\";\nimport GleapEventManager from \"./GleapEventManager\";\nimport GleapCustomActionManager from \"./GleapCustomActionManager\";\nimport GleapReplayRecorder from \"./GleapReplayRecorder\";\nimport GleapMarkerManager from \"./GleapMarkerManager\";\nimport GleapTranslationManager from \"./GleapTranslationManager\";\nimport GleapShortcutListener from \"./GleapShortcutListener\";\nimport GleapPreFillManager from \"./GleapPreFillManager\";\nimport GleapNotificationManager from \"./GleapNotificationManager\";\nimport GleapBannerManager from \"./GleapBannerManager\";\nimport GleapModalManager from \"./GleapModalManager\";\nimport GleapAudioManager from \"./GleapAudioManager\";\nimport GleapTagManager from \"./GleapTagManager\";\nimport GleapAdminManager from \"./GleapAdminManager\";\nimport GleapProductTours from \"./GleapProductTours\";\nimport { checkPageFilter } from \"./GleapPageFilter\";\nimport { registerGleapChecklist } from \"./GleapChecklist\";\nimport ChecklistNetworkManager from \"./ChecklistNetworkManager\";\n\nif (\n typeof window !== \"undefined\" &&\n typeof HTMLCanvasElement !== \"undefined\" &&\n HTMLCanvasElement.prototype &&\n HTMLCanvasElement.prototype.__originalGetContext === undefined\n) {\n HTMLCanvasElement.prototype.__originalGetContext =\n HTMLCanvasElement.prototype.getContext;\n HTMLCanvasElement.prototype.getContext = function (type, options) {\n return this.__originalGetContext(type, {\n ...options,\n preserveDrawingBuffer: true,\n });\n };\n}\n\nif (\n typeof customElements !== \"undefined\" &&\n typeof HTMLElement !== \"undefined\" &&\n typeof window !== \"undefined\"\n) {\n registerGleapChecklist();\n}\n\nclass Gleap {\n static invoked = true;\n static silentCrashReportSent = false;\n initialized = false;\n offlineMode = false;\n disablePageTracking = false;\n disableInAppNotifications = false;\n\n // Global data\n globalData = {\n screenRecordingData: null,\n webReplay: null,\n snapshotPosition: {\n x: 0,\n y: 0,\n },\n };\n\n // Gleap singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new Gleap();\n return this.instance;\n } else {\n return this.instance;\n }\n }\n\n /**\n * Main constructor\n */\n constructor() {\n if (typeof window !== \"undefined\") {\n // Make sure all instances are ready.\n GleapMetaDataManager.getInstance();\n GleapConsoleLogManager.getInstance().start();\n GleapClickListener.getInstance().start();\n GleapAdminManager.getInstance().start();\n }\n }\n\n /**\n * Sets the development environment\n * @param {*} environment\n */\n static setEnvironment(environment) {\n GleapMetaDataManager.getInstance().environment = environment;\n }\n\n /**\n * Set tags to be submitted with each ticket.\n * @param {*} tags\n */\n static setTags(tags) {\n GleapTagManager.getInstance().setTags(tags);\n }\n\n /**\n * Sets a custom URL handler.\n * @param {*} urlHandler\n */\n static setUrlHandler(urlHandler) {\n GleapFrameManager.getInstance().setUrlHandler(urlHandler);\n }\n\n /**\n * Active the Gleap offline mode.\n * @param {*} offlineMode\n */\n static setOfflineMode(offlineMode) {\n const instance = this.getInstance();\n instance.offlineMode = offlineMode;\n }\n\n /**\n * Disable the in-app notifications.\n * @param {*} disableInAppNotifications\n */\n static setDisableInAppNotifications(disableInAppNotifications) {\n const instance = this.getInstance();\n instance.disableInAppNotifications = disableInAppNotifications;\n }\n\n /**\n * Disable the default page tracking.\n * @param {*} disablePageTracking\n */\n static setDisablePageTracking(disablePageTracking) {\n const instance = this.getInstance();\n instance.disablePageTracking = disablePageTracking;\n }\n\n /**\n * Revert console log overwrite.\n */\n static disableConsoleLogOverwrite() {\n GleapConsoleLogManager.getInstance().stop();\n }\n\n /**\n * Set the AI tools.\n * @param {*} tools\n */\n static setAiTools(tools) {\n GleapConfigManager.getInstance().setAiTools(tools);\n GleapFrameManager.getInstance().sendConfigUpdate();\n }\n\n /**\n * Attaches external network logs.\n */\n static attachNetworkLogs(networkLogs) {\n GleapNetworkIntercepter.getInstance().externalRequests =\n gleapDataParser(networkLogs);\n }\n\n /**\n * Add entry to logs.\n * @param {*} message\n * @param {*} logLevel\n * @returns\n */\n static log(message, logLevel = \"INFO\") {\n GleapConsoleLogManager.getInstance().addLog(message, logLevel);\n }\n\n /**\n * Initializes the SDK\n * @param {*} sdkKey\n */\n static initialize(sdkKey) {\n const instance = this.getInstance();\n if (instance.initialized) {\n console.warn(\"Gleap already initialized.\");\n return;\n }\n\n instance.initialized = true;\n\n try {\n fixGleapHeight();\n } catch (error) {}\n\n // Start session\n const sessionInstance = GleapSession.getInstance();\n sessionInstance.sdkKey = sdkKey;\n sessionInstance.setOnSessionReady(() => {\n // Run auto configuration.\n setTimeout(() => {\n GleapConfigManager.getInstance()\n .start()\n .then(() => {\n GleapStreamedEvent.getInstance().start();\n\n runFunctionWhenDomIsReady(() => {\n // Inject the widget buttons\n GleapFeedbackButtonManager.getInstance().injectFeedbackButton();\n\n // Inject the notification container\n GleapNotificationManager.getInstance().injectNotificationUI();\n\n // Check for uncompleted tour.\n Gleap.checkForUncompletedTour();\n\n // Check for URL params.\n Gleap.checkForUrlParams();\n\n // Notify event.\n GleapEventManager.notifyEvent(\"initialized\");\n });\n })\n .catch(function (err) {\n console.warn(\"Failed to initialize Gleap.\");\n });\n }, 0);\n });\n sessionInstance.startSession();\n }\n\n static openURL(url, newTab = false) {\n GleapFrameManager.getInstance().urlHandler(url, newTab);\n }\n\n static checkForUrlParams() {\n if (typeof window === \"undefined\" || !window.location.search) {\n return;\n }\n\n try {\n const urlParams = new URLSearchParams(window.location.search);\n\n const widget = urlParams.get(\"gleap_widget\");\n if (widget && widget.length > 0) {\n Gleap.open();\n }\n\n const conversationFlow = urlParams.get(\"gleap_conversation\");\n if (conversationFlow && conversationFlow.length > 0) {\n if (conversationFlow === \"true\") {\n Gleap.startConversation(true);\n } else {\n Gleap.startBot(conversationFlow, true);\n }\n }\n\n const feedbackFlow = urlParams.get(\"gleap_feedback\");\n if (feedbackFlow && feedbackFlow.length > 0) {\n Gleap.startFeedbackFlow(feedbackFlow);\n }\n const surveyFlow = urlParams.get(\"gleap_survey\");\n const surveyFlowFormat = urlParams.get(\"gleap_survey_format\");\n if (surveyFlow && surveyFlow.length > 0) {\n Gleap.showSurvey(\n surveyFlow,\n surveyFlowFormat === \"survey_full\" ? \"survey_full\" : \"survey\"\n );\n }\n const tourId = urlParams.get(\"gleap_tour\");\n if (tourId && tourId.length > 0) {\n var tourDelay = parseInt(urlParams.get(\"gleap_tour_delay\"));\n if (isNaN(tourDelay)) {\n tourDelay = 2;\n }\n\n setTimeout(() => {\n Gleap.startProductTour(tourId);\n }, tourDelay * 1000);\n }\n } catch (exp) {}\n }\n\n /**\n * Destroy\n * @returns\n */\n static destroy() {\n GleapReplayRecorder.getInstance().stop();\n GleapStreamedEvent.getInstance().stop();\n GleapFrameManager.getInstance().destroy();\n GleapFeedbackButtonManager.getInstance().destroy();\n GleapNotificationManager.getInstance().clearAllNotifications(true);\n GleapSession.getInstance().clearSession(0, false);\n GleapBannerManager.getInstance().removeBannerUI();\n\n // Reset the initialized flag and clear the instance\n this.instance = null;\n }\n\n /**\n * Close any open banner.\n */\n static closeBanner() {\n GleapBannerManager.getInstance().removeBannerUI();\n }\n\n /**\n * Close any open modal.\n */\n static closeModal() {\n GleapModalManager.getInstance().hideModal();\n }\n\n /**\n * Enable or disable Gleap session tracking through cookies.\n * @param {*} useCookies\n */\n static setUseCookies(useCookies) {\n GleapSession.getInstance().useCookies = useCookies;\n }\n\n /**\n * Indentifies the user session\n * @param {string} userId\n * @param {*} userData\n */\n static identify(userId, userData, userHash) {\n return GleapSession.getInstance().identifySession(\n userId,\n gleapDataParser(userData),\n userHash\n );\n }\n\n /**\n * Updates the contact data.\n * @param {*} userData\n */\n static updateContact(userData) {\n return GleapSession.getInstance().updateSession(gleapDataParser(userData));\n }\n\n /**\n * Clears the current contact.\n */\n static clearIdentity() {\n GleapSession.getInstance().clearSession();\n }\n\n /**\n * Returns the current user session\n */\n static getIdentity() {\n return GleapSession.getInstance().getSession();\n }\n\n /**\n * Returns whether the user is identified or not.\n */\n static isUserIdentified() {\n const session = GleapSession.getInstance().session;\n if (session && session.userId && session.userId.length > 0) {\n return true;\n }\n return false;\n }\n\n /**\n * Widget opened status\n * @returns {boolean} isOpened\n */\n static isOpened() {\n return GleapFrameManager.getInstance().isOpened();\n }\n\n /**\n * Hides any open Gleap dialogs.\n */\n static hide() {\n GleapFrameManager.getInstance().hideWidget();\n }\n\n /**\n * Sets the maximum network request count.\n */\n static setMaxNetworkRequests(maxRequests) {\n GleapNetworkIntercepter.getInstance().setMaxRequests(maxRequests);\n }\n\n /**\n * Sets the maximum network request count.\n */\n static startNetworkLogger() {\n GleapNetworkIntercepter.getInstance().start();\n }\n\n /**\n * Sets the network logger blacklist.\n * @param {Array} networkLogBlacklist\n */\n static setNetworkLogsBlacklist(networkLogBlacklist) {\n GleapNetworkIntercepter.getInstance().setBlacklist(networkLogBlacklist);\n }\n\n /**\n * Sets the network logger props to ignore.\n * @param {Array} filters\n */\n static setNetworkLogPropsToIgnore(filters) {\n GleapNetworkIntercepter.getInstance().setFilters(filters);\n }\n\n /**\n * Set custom replay options.\n * @param {*} options\n */\n static setReplayOptions(options) {\n GleapReplayRecorder.getInstance().setOptions(options);\n }\n\n /**\n * Closes any open Gleap dialogs.\n * @param {boolean} resetRoutes\n */\n static close(resetRoutes = false) {\n GleapFrameManager.getInstance().hideWidget(resetRoutes);\n }\n\n /**\n * Starts the Gleap flow.\n */\n static open() {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Track a custom event\n * @param {string} name\n * @param {any} data\n */\n static trackEvent(name, data) {\n GleapStreamedEvent.getInstance().logEvent(name, data);\n }\n\n /**\n * Logs a custom event\n * @param {string} name\n * @param {any} data\n * @deprecated Please use trackEvent instead.\n */\n static logEvent(name, data) {\n GleapStreamedEvent.getInstance().logEvent(name, data);\n }\n\n /**\n * Prefills a specific form field.\n * @param {*} key\n * @param {*} value\n */\n static preFillForm(data) {\n const cleanedData = gleapDataParser(data);\n GleapPreFillManager.getInstance().formPreFill = cleanedData;\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"prefill-form-data\",\n data: cleanedData,\n },\n true\n );\n }\n\n /**\n * Register events for Gleap.\n * @param {*} eventName\n * @param {*} callback\n */\n static on(eventName, callback) {\n GleapEventManager.on(eventName, callback);\n }\n\n /**\n * Enable or disable shortcuts\n * @param {boolean} enabled\n */\n static enableShortcuts(enabled) {\n if (enabled) {\n GleapShortcutListener.getInstance().start();\n } else {\n GleapShortcutListener.getInstance().stop();\n }\n }\n\n /**\n * Show or hide the feedback button\n * @param {*} show\n * @returns\n */\n static showFeedbackButton(show) {\n GleapFeedbackButtonManager.getInstance().toggleFeedbackButton(show);\n }\n\n /**\n * Sets the app version code.\n * @param {string} appVersionCode\n */\n static setAppVersionCode(appVersionCode) {\n GleapMetaDataManager.setAppVersionCode(appVersionCode);\n }\n\n /**\n * Sets the app version code.\n * @param {string} appVersionCode\n */\n static setAppBuildNumber(appBuildNumber) {\n GleapMetaDataManager.setAppBuildNumber(appBuildNumber);\n }\n\n /**\n * Set a custom ws api url.\n * @param {string} wsApiUrl\n */\n static setWSApiUrl(wsApiUrl) {\n GleapSession.getInstance().wsApiUrl = wsApiUrl;\n }\n\n /**\n * Set a custom api url.\n * @param {string} apiUrl\n */\n static setApiUrl(apiUrl) {\n GleapSession.getInstance().apiUrl = apiUrl;\n }\n\n /**\n * Set a custom banner url.\n * @param {string} bannerUrl\n */\n static setBannerUrl(bannerUrl) {\n GleapBannerManager.getInstance().setBannerUrl(bannerUrl);\n }\n\n /**\n * Set a custom modal url.\n * @param {string} modalUrl\n */\n static setModalUrl(modalUrl) {\n GleapModalManager.getInstance().setModalUrl(modalUrl);\n }\n\n /**\n * Set a custom frame api url.\n * @param {string} frameUrl\n */\n static setFrameUrl(frameUrl) {\n GleapFrameManager.getInstance().frameUrl = frameUrl;\n }\n\n /**\n * This method is used to set ticket attributes programmatically.\n * @param {*} key The key of the attribute you want to add.\n * @param {*} value The value to set.\n */\n static setTicketAttribute(key, value) {\n GleapCustomDataManager.getInstance().setTicketAttribute(key, value);\n }\n\n /**\n * This method is used to unset ticket attributes programmatically.\n * @param {*} key The key of the attribute you want to unset.\n */\n static unsetTicketAttribute(key) {\n GleapCustomDataManager.getInstance().unsetTicketAttribute(key);\n }\n\n /**\n * This method is used to clear ticket attributes programmatically.\n */\n static clearTicketAttributes() {\n GleapCustomDataManager.getInstance().clearTicketAttributes();\n }\n\n /**\n * Set custom data that will be attached to the bug-report.\n * @param {*} data\n */\n static attachCustomData(data) {\n GleapCustomDataManager.getInstance().attachCustomData(data);\n }\n\n /**\n * Add one key value pair to the custom data object\n * @param {*} key The key of the custom data entry you want to add.\n * @param {*} value The custom data you want to add.\n */\n static setCustomData(key, value) {\n GleapCustomDataManager.getInstance().setCustomData(key, value);\n }\n\n /**\n * Remove one key value pair of the custom data object\n * @param {*} key The key of the custom data entry you want to remove.\n */\n static removeCustomData(key) {\n GleapCustomDataManager.getInstance().removeCustomData(key);\n }\n\n /**\n * Clear the custom data\n */\n static clearCustomData() {\n GleapCustomDataManager.getInstance().clearCustomData();\n }\n\n /**\n * Play or mute the sound.\n * @param {*} play\n */\n static playSound(play) {\n GleapAudioManager.playSound(play);\n }\n\n /**\n * Show or hide the notification badge count.\n * @param {boolean} showNotificationBadge show or hide the notification badge\n *\n */\n static showTabNotificationBadge(showNotificationBadge) {\n const notificationInstance = GleapNotificationManager.getInstance();\n notificationInstance.showNotificationBadge = showNotificationBadge;\n notificationInstance.updateTabBarNotificationCount();\n }\n\n /**\n * Override the browser language.\n * @param {string} language country code with two letters\n */\n static setLanguage(language) {\n GleapTranslationManager.getInstance().setOverrideLanguage(language);\n\n if (Gleap.getInstance().initialized) {\n setTimeout(() => {\n Gleap.getInstance().softReInitialize();\n\n // Update language for contact.\n Gleap.updateContact({\n lang: language,\n });\n }, 1000);\n }\n }\n\n /**\n * Register custom action\n * @param {*} action\n */\n static registerCustomAction(customAction) {\n GleapCustomActionManager.registerCustomAction(customAction);\n }\n\n /**\n * Triggers a custom action\n * @param {*} actionName\n */\n static triggerCustomAction(name) {\n GleapCustomActionManager.triggerCustomAction(name);\n }\n\n /**\n * Sets a custom color scheme.\n * @param {string} primaryColor\n */\n static setStyles(\n primaryColor,\n headerColor,\n buttonColor,\n backgroundColor = \"#ffffff\",\n borderRadius = 20,\n buttonX = 20,\n buttonY = 20,\n buttonStyle = GleapFeedbackButtonManager.FEEDBACK_BUTTON_BOTTOM_LEFT\n ) {\n runFunctionWhenDomIsReady(() => {\n injectStyledCSS(\n primaryColor,\n headerColor,\n buttonColor,\n borderRadius,\n backgroundColor,\n buttonX,\n buttonY,\n buttonStyle\n );\n });\n }\n\n /**\n * Sends a silent feedback report\n * @param {*} formData\n * @param {*} priority\n * @param {*} excludeData\n */\n static sendSilentCrashReport(\n description = \"\",\n priority = \"MEDIUM\",\n excludeData = {\n screenshot: true,\n replays: true,\n attachments: true,\n }\n ) {\n return Gleap.sendSilentCrashReportWithFormData(\n {\n description,\n },\n priority,\n excludeData\n );\n }\n\n /**\n * Sends a silent feedback report\n * @param {*} formData\n * @param {*} priority\n * @param {*} excludeData\n */\n static sendSilentCrashReportWithFormData(\n formData,\n priority = \"MEDIUM\",\n excludeData = {\n screenshot: true,\n replays: true,\n attachments: true,\n }\n ) {\n if (this.silentCrashReportSent) {\n return;\n }\n\n this.silentCrashReportSent = true;\n setTimeout(() => {\n this.silentCrashReportSent = false;\n }, 10000);\n\n const excludeDataCleaned = excludeData ? gleapDataParser(excludeData) : {};\n const sessionInstance = GleapSession.getInstance();\n if (!sessionInstance.ready) {\n return;\n }\n\n var newFormData = formData ? formData : {};\n if (sessionInstance.session.email) {\n newFormData.reportedBy = sessionInstance.session.email;\n }\n\n const feedback = new GleapFeedback(\n \"CRASH\",\n priority,\n newFormData,\n true,\n excludeDataCleaned\n );\n feedback\n .sendFeedback()\n .then(() => {})\n .catch((error) => {});\n }\n\n /**\n * Shows a survey manually.\n * @param {*} actionType\n * @param {*} format\n */\n static showSurvey(actionType, format = \"survey\") {\n Gleap.startFeedbackFlowWithOptions(\n actionType,\n {\n hideBackButton: true,\n format,\n },\n true\n );\n }\n\n /**\n * Starts a classic feedback form.\n */\n static startClassicForm(formId, showBackButton) {\n Gleap.startFeedbackFlowWithOptions(formId, {\n hideBackButton: !showBackButton,\n });\n }\n\n /**\n * Starts the bug reporting flow.\n */\n static startFeedbackFlow(feedbackFlow, showBackButton) {\n Gleap.startFeedbackFlowWithOptions(feedbackFlow, {\n hideBackButton: !showBackButton,\n });\n }\n\n /**\n * Starts the bug reporting flow.\n */\n static startFeedbackFlowWithOptions(\n feedbackFlow,\n options = {},\n isSurvey = false\n ) {\n const { autostartDrawing, hideBackButton, format } = options;\n const sessionInstance = GleapSession.getInstance();\n if (!sessionInstance.ready) {\n return;\n }\n\n // Initially set scroll position\n Gleap.getInstance().setGlobalDataItem(\"snapshotPosition\", {\n x: window.scrollX,\n y: window.scrollY,\n });\n\n var action = \"start-feedbackflow\";\n if (isSurvey) {\n action = \"start-survey\";\n }\n\n GleapFrameManager.getInstance().setAppMode(isSurvey ? format : \"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: action,\n data: {\n flow: feedbackFlow,\n hideBackButton: hideBackButton,\n format,\n },\n },\n true\n );\n\n if (autostartDrawing) {\n GleapFrameManager.getInstance().showDrawingScreen(\"screenshot\");\n } else {\n GleapFrameManager.getInstance().showWidget();\n }\n }\n\n /**\n * Opens the conversations overview.\n */\n static openConversations(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-conversations\",\n data: {\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens a conversation\n */\n static openConversation(shareToken, showBackButton = true) {\n if (!shareToken) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-conversation\",\n data: {\n shareToken,\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Starts a new conversation\n */\n static startConversation(showBackButton = true) {\n Gleap.startBot(\"\", showBackButton);\n }\n\n /**\n * Starts a new conversation and attaches the bot with the given id.\n */\n static startBot(botId, showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"start-bot\",\n data: {\n botId: botId ? botId : \"\",\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens a help center collection\n */\n static openHelpCenterCollection(collectionId, showBackButton = true) {\n if (!collectionId) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-help-collection\",\n data: {\n collectionId,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens a help article\n */\n static openHelpCenterArticle(articleId, showBackButton = true) {\n if (!articleId) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-help-article\",\n data: {\n articleId,\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens the help center.\n */\n static openHelpCenter(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-helpcenter\",\n data: {\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Search for news articles in the help center\n */\n static searchHelpCenter(term, showBackButton = true) {\n if (!term) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-helpcenter-search\",\n data: {\n term,\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens a news article\n */\n static openNewsArticle(id, showBackButton = true) {\n if (!id) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-news-article\",\n data: {\n id,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Open the checklists overview.\n */\n static openChecklists(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-checklists\",\n data: {},\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Starts a new checklist and opens it.\n */\n static startChecklist(\n outboundId,\n showBackButton = true,\n sharedKey = undefined\n ) {\n if (!outboundId) {\n return false;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"start-checklist\",\n data: {\n outboundId: outboundId,\n hideBackButton: !showBackButton,\n ...(sharedKey ? { sharedKey: sharedKey } : {}),\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n\n return true;\n }\n\n /**\n * Open an existing checklist.\n */\n static openChecklist(checklistId, showBackButton = true) {\n if (!checklistId) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-checklist\",\n data: {\n id: checklistId,\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Gets the full checklist data by validating the outbound ID and fetching the data.\n * @param {string} outboundId - The outbound checklist ID to get data for.\n * @param {string} [sharedKey] - Optional shared key for the checklist.\n * @returns {Promise} A promise that resolves with the full checklist data.\n *\n * Available events for checklist updates (use Gleap.on() to listen):\n * - 'checklist-loaded': Fired when a checklist is initially loaded\n * - 'checklist-update': Fired when checklist data is updated\n * - 'checklist-step-completed': Fired when a step is marked as completed\n * - 'checklist-completed': Fired when the entire checklist is completed\n */\n static getChecklistData(outboundId, sharedKey) {\n if (!outboundId) {\n return Promise.reject(new Error(\"outboundId is required\"));\n }\n\n const networkManager = ChecklistNetworkManager.getInstance();\n\n // First validate the checklist to get the internal ID\n return networkManager\n .validateChecklist(outboundId, sharedKey)\n .then((internalId) => {\n // Then fetch the full checklist data\n return networkManager.fetchChecklist(internalId);\n });\n }\n\n /**\n * Opens the news overview.\n */\n static openNews(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-news\",\n data: {\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens the feature requests overview.\n */\n static openFeatureRequests(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-feature-requests\",\n data: {},\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n isLiveMode() {\n if (this.offlineMode === true) {\n return false;\n }\n\n var hostname = window.location.hostname;\n const isLocalHost =\n [\"localhost\", \"127.0.0.1\", \"0.0.0.0\", \"\", \"::1\"].includes(hostname) ||\n hostname.startsWith(\"192.168.\") ||\n hostname.startsWith(\"10.0.\") ||\n hostname.endsWith(\".local\") ||\n !hostname.includes(\".\");\n return !isLocalHost;\n }\n\n softReInitialize() {\n GleapFrameManager.getInstance().destroy();\n GleapConfigManager.getInstance()\n .start()\n .then(() => {\n // Update the feedback button.\n GleapFeedbackButtonManager.getInstance().refresh();\n\n // Inject the notification container\n GleapNotificationManager.getInstance().injectNotificationUI();\n })\n .catch(function (err) {\n console.warn(\"Failed to initialize Gleap.\");\n });\n }\n\n /**\n * Performs an action.\n * @param {*} action\n */\n performActions(actions) {\n for (let i = 0; i < actions.length; i++) {\n const action = actions[i];\n if (action && action.actionType) {\n if (action.pageFilter && window && window.location) {\n const passed = checkPageFilter(\n window.location.href,\n action.pageFilter,\n action.pageFilterType\n );\n\n if (!passed) {\n continue;\n }\n }\n\n if (action.actionType === \"notification\") {\n if (action?.data?.checklist?.popupType === \"widget\") {\n Gleap.openChecklist(action.data.checklist.id, true);\n } else {\n if (!this.disableInAppNotifications) {\n Gleap.showNotification(action);\n }\n }\n } else if (action.actionType === \"banner\") {\n Gleap.showBanner(action);\n } else if (action.actionType === \"modal\") {\n Gleap.showModal(action);\n } else if (action.actionType === \"tour\") {\n Gleap.startProductTourWithConfig(action.outbound, action.data, false);\n } else {\n Gleap.showSurvey(action.actionType, action.format);\n }\n }\n }\n }\n\n static startProductTour(tourId, checkStartUrl = false) {\n const self = this;\n GleapSession.getInstance()\n .startProductTourConfig(tourId)\n .then((config) => {\n if (\n checkStartUrl &&\n config?.startURL &&\n !window?.location?.href?.includes(config?.baseURL)\n ) {\n window.location.href = `${config.startURL}?gleap_tour=${tourId}&gleap_tour_delay=1`;\n return;\n }\n\n self.startProductTourWithConfig(tourId, config, true);\n })\n .catch((error) => {});\n }\n\n static checkForUncompletedTour() {\n const tourData = GleapProductTours.getInstance().loadUncompletedTour();\n if (tourData) {\n GleapProductTours.getInstance().startWithConfig(\n tourData.tourId,\n tourData.tourData,\n 500\n );\n }\n }\n\n static startProductTourWithConfig(tourId, config, manually = false) {\n GleapProductTours.getInstance().startWithConfig(\n tourId,\n config,\n 0,\n manually\n );\n }\n\n static showBanner(data) {\n try {\n GleapBannerManager.getInstance().showBanner(data);\n } catch (e) {}\n }\n\n static showModal(data) {\n try {\n GleapModalManager.getInstance().showModal(data);\n } catch (e) {}\n }\n\n static showNotification(data) {\n GleapNotificationManager.getInstance().showNotification(data);\n }\n\n /**\n * Sets a global data value\n * @param {*} key\n * @param {*} value\n */\n setGlobalDataItem(key, value) {\n this.globalData[key] = value;\n }\n\n /**\n * Gets a global data value\n * @param {*} key\n * @returns\n */\n getGlobalDataItem(key) {\n return this.globalData[key];\n }\n\n /**\n * Takes the current replay and assigns it to the global data array.\n */\n takeCurrentReplay() {\n const replayData = GleapReplayRecorder.getInstance().getReplayData();\n this.setGlobalDataItem(\"webReplay\", replayData);\n }\n}\n\n// Check for unperformed Gleap actions.\nif (typeof window !== \"undefined\") {\n const GleapActions = window.GleapActions;\n if (GleapActions && GleapActions.length > 0) {\n for (var i = 0; i < GleapActions.length; i++) {\n const GLAction = GleapActions[i];\n if (GLAction && GLAction.e && Gleap[GLAction.e]) {\n Gleap[GLAction.e].apply(Gleap, GLAction.a);\n }\n }\n }\n}\n\nconst handleGleapLink = (href) => {\n try {\n const urlParts = href.split(\"/\");\n const type = urlParts[2];\n if (type === \"article\") {\n const identifier = urlParts[3];\n Gleap.openHelpCenterArticle(identifier, true);\n }\n\n if (type === \"collection\") {\n const identifier = urlParts[3];\n Gleap.openHelpCenterCollection(identifier, true);\n }\n\n if (type === \"flow\") {\n const identifier = urlParts[3];\n Gleap.startFeedbackFlow(identifier, true);\n }\n\n if (type === \"survey\") {\n const identifier = urlParts[3];\n Gleap.showSurvey(identifier);\n }\n\n if (type === \"bot\") {\n const identifier = urlParts[3];\n Gleap.startBot(identifier, true);\n }\n\n if (type === \"news\") {\n const identifier = urlParts[3];\n Gleap.openNewsArticle(identifier, true);\n }\n\n if (type === \"checklist\") {\n const identifier = urlParts[3];\n Gleap.startChecklist(identifier, true, urlParts[4]);\n }\n\n if (type === \"tour\") {\n const identifier = urlParts[3];\n Gleap.startProductTour(identifier);\n }\n } catch (e) {\n console.error(\"Failed to handle Gleap link: \", href);\n }\n};\n\nexport {\n GleapNetworkIntercepter,\n GleapAudioManager,\n GleapNotificationManager,\n GleapBannerManager,\n GleapModalManager,\n GleapPreFillManager,\n GleapShortcutListener,\n GleapMarkerManager,\n GleapTranslationManager,\n GleapReplayRecorder,\n GleapFeedback,\n GleapConsoleLogManager,\n GleapCustomActionManager,\n GleapEventManager,\n GleapCustomDataManager,\n GleapFeedbackButtonManager,\n GleapClickListener,\n GleapSession,\n GleapStreamedEvent,\n GleapConfigManager,\n GleapFrameManager,\n GleapMetaDataManager,\n GleapTagManager,\n GleapProductTours,\n handleGleapLink,\n};\n\nexport default Gleap;\n","/**\n * Gleap Checklist Web Component\n *\n * Displays an interactive checklist fetched from the Gleap API.\n * Allows users to view steps, mark them as done, trigger actions,\n * and automatically updates based on external events. Includes localization support\n * via GleapTranslationManager.\n *\n * Waits for a Gleap session to be available before initializing and\n * reloads when the session changes (via 'session-updated' event).\n *\n * @element gleap-checklist\n *\n * @attr {string} checklistId - The outbound ID of the checklist to display. Required.\n * @attr {boolean} [info=true] - Whether to display the info section (title, description, sender).\n * @attr {boolean} [progressbar=true] - Whether to display the progress bar.\n * @attr {boolean} [dark=false] - Apply dark mode styling.\n * @attr {boolean} [floating=false] - When set to \"true\", shows a small bubble that expands on click.\n *\n * @cssprop --color-bg - Background color.\n * @cssprop --color-font-title - Title text color.\n * @cssprop --color-font-text - Body text color.\n * @cssprop --color-font-light - Lighter text color.\n * @cssprop --color-primary - Primary accent color.\n * @cssprop --color-primary-light - Light primary color shade.\n * @cssprop --color-primary-contrast - Text color for primary buttons.\n * @cssprop --color-border - Border color.\n * @cssprop --color-gray-light - Light gray background/border color.\n * @cssprop --color-gray-lighter - Even lighter gray background.\n * @cssprop --color-gray-dark - Darker gray text/icon color.\n * @cssprop --color-success - Success color (e.g., for completed items).\n * @cssprop --color-success-light - Contrast color for success elements.\n * @cssprop --radius-sm - Small border radius.\n * @cssprop --radius-lg - Large border radius.\n * @cssprop --radius-full - Full (pill) border radius.\n * @cssprop --shadow-sm - Small box shadow.\n * @cssprop --shadow-md - Medium box shadow.\n * @cssprop --animation-duration - Duration for animations (e.g., accordion).\n * @cssprop --animation-timing - Timing function for animations.\n */\nimport ChecklistNetworkManager from \"./ChecklistNetworkManager\";\nimport Gleap, {\n GleapConfigManager,\n GleapSession,\n GleapTranslationManager,\n GleapEventManager,\n} from \"./Gleap\";\n\nexport const registerGleapChecklist = () => {\n if (\n typeof customElements !== \"undefined\" &&\n typeof HTMLElement !== \"undefined\" &&\n typeof window !== \"undefined\"\n ) {\n class GleapChecklist extends HTMLElement {\n /** @private {number} */\n activeStep = -1;\n /** @private {object|null} */\n checklistData = null;\n /** @private {boolean} */\n _isInitialLoad = false;\n /** @private {boolean} */\n _initialActiveSet = false;\n /** @private {boolean} Flag indicating if the component has loaded data at least once. */\n _hasLoaded = false;\n /** @private {boolean} Flag indicating if a Gleap session is currently considered active by the component. */\n _isSessionReady = false;\n\n /** @private {Function} */\n _boundHandleChecklistUpdate = this.handleChecklistUpdate.bind(this);\n /** @private {Function} */\n _boundHandleSessionUpdate = this.handleSessionUpdate.bind(this);\n\n constructor() {\n super();\n this.attachShadow({ mode: \"open\" });\n // Ensure NetworkManager instance is created only if Gleap is available\n try {\n if (\n typeof GleapSession !== \"undefined\" &&\n typeof ChecklistNetworkManager !== \"undefined\"\n ) {\n this._networkManager = ChecklistNetworkManager.getInstance();\n } else {\n this._networkManager = null;\n }\n } catch (e) {\n this._networkManager = null;\n }\n // Bind click handlers for floating mode.\n this._boundFloatingLauncherClick =\n this.handleFloatingLauncherClick.bind(this);\n this._boundFloatingCloseClick =\n this.handleFloatingCloseClick.bind(this);\n this._floatingHideTimeout = null;\n }\n\n // --- Observed Attributes ---\n static get observedAttributes() {\n return [\n \"checklistId\",\n \"info\",\n \"progressbar\",\n \"dark\",\n \"floating\",\n \"sharedKey\",\n ];\n }\n\n // --- Lifecycle Callbacks ---\n connectedCallback() {\n window.addEventListener(\n \"checkListUpdate\",\n this._boundHandleChecklistUpdate\n );\n window.addEventListener(\n \"session-updated\",\n this._boundHandleSessionUpdate\n );\n window.addEventListener(\n \"resize\",\n (this._boundResizeHandler = this.handleResize.bind(this))\n );\n this._checkSessionAndLoad();\n }\n\n disconnectedCallback() {\n window.removeEventListener(\n \"checkListUpdate\",\n this._boundHandleChecklistUpdate\n );\n window.removeEventListener(\n \"session-updated\",\n this._boundHandleSessionUpdate\n );\n window.removeEventListener(\"resize\", this._boundResizeHandler);\n this.removeFloatingClickListeners();\n if (this._floatingHideTimeout) {\n clearTimeout(this._floatingHideTimeout);\n this._floatingHideTimeout = null;\n }\n this.checklistData = null;\n this.activeStep = -1;\n this._hasLoaded = false;\n this._isSessionReady = false;\n this._initialActiveSet = false;\n this.renderResponse();\n }\n\n handleResize() {\n this.updateActiveTaskMaxHeight();\n }\n\n attributeChangedCallback(name, oldValue, newValue) {\n if (oldValue !== newValue) {\n if (name === \"checklistId\" && this._isSessionReady) {\n this.loadChecklist();\n } else if (name !== \"checklistId\" && this._hasLoaded) {\n if (this.checklistData) {\n this.renderChecklist(this.checklistData);\n }\n }\n }\n }\n\n // --- Session Handling ---\n _checkSessionAndLoad() {\n const gleapSessionInstance = this._getGleapSessionInstance();\n const hasChecklistId = this.getAttribute(\"checklistId\");\n\n if (gleapSessionInstance.ready && hasChecklistId) {\n this._isSessionReady = true;\n this._networkManager = ChecklistNetworkManager.getInstance();\n this.loadChecklist();\n } else {\n this._isSessionReady = false;\n this._hasLoaded = false;\n this.checklistData = null;\n this.activeStep = -1;\n this._initialActiveSet = false;\n this.renderResponse();\n }\n }\n\n handleSessionUpdate() {\n this._checkSessionAndLoad();\n }\n\n _getGleapSessionInstance() {\n try {\n return typeof GleapSession !== \"undefined\"\n ? GleapSession.getInstance()\n : null;\n } catch (e) {\n return null;\n }\n }\n\n // --- Getters for Configuration ---\n get infoEnabled() {\n const attr = this.getAttribute(\"info\");\n return attr === null || attr.toLowerCase() !== \"false\";\n }\n\n get progressbarEnabled() {\n const attr = this.getAttribute(\"progressbar\");\n return attr === null || attr.toLowerCase() !== \"false\";\n }\n\n get floatingEnabled() {\n return this.getAttribute(\"floating\") === \"true\";\n }\n\n // --- Translation Helpers ---\n _translate(key, defaultValue = \"\") {\n return GleapTranslationManager.translateText(key) || defaultValue;\n }\n\n _translateWithVars(key, vars, defaultValue = \"\") {\n return (\n GleapTranslationManager.translateTextWithVars(key, vars) ||\n defaultValue\n );\n }\n\n // --- SVG Icons ---\n getCheckIcon() {\n return `\n \n `;\n }\n\n // --- Data Loading and Handling ---\n loadChecklist() {\n if (!this._isSessionReady || !this._networkManager) {\n return;\n }\n const checklistId = this.getAttribute(\"checklistId\");\n if (checklistId) {\n this.activeStep = -1;\n this._initialActiveSet = false;\n this.validateChecklist(checklistId);\n } else {\n this.renderResponse();\n this.checklistData = null;\n this._hasLoaded = false;\n }\n }\n\n getQueryParams() {\n const gleapSessionInstance = this._getGleapSessionInstance();\n if (!gleapSessionInstance?.session) {\n return \"\";\n }\n const session = gleapSessionInstance.session;\n let lang = \"en\";\n try {\n if (typeof GleapTranslationManager !== \"undefined\") {\n lang =\n GleapTranslationManager.getInstance().getActiveLanguage() || \"en\";\n }\n } catch (e) {}\n return `gleapId=${session.gleapId || \"\"}&gleapHash=${\n session.gleapHash || \"\"\n }&lang=${lang}`;\n }\n\n makeRequest(method, url, data, callback) {\n const gleapSessionInstance = this._getGleapSessionInstance();\n if (!gleapSessionInstance?.session) {\n const mockXhr = {\n readyState: 4,\n status: 0,\n responseText: \"Session unavailable\",\n _isMock: true,\n };\n callback(mockXhr);\n return;\n }\n const xhr = new XMLHttpRequest();\n xhr.open(method, url);\n try {\n gleapSessionInstance.injectSession(xhr);\n } catch (e) {}\n if (data) {\n xhr.setRequestHeader(\n \"Content-Type\",\n \"application/json;charset=UTF-8\"\n );\n }\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n callback(xhr);\n }\n };\n xhr.onerror = () => {\n callback(xhr);\n };\n xhr.send(data ? JSON.stringify(data) : null);\n }\n\n validateChecklist(outboundId) {\n if (!this._isSessionReady || !this._networkManager) {\n return;\n }\n this.checklistData = null;\n this._hasLoaded = false;\n this.renderResponse();\n const sharedKey = this.getAttribute(\"sharedKey\");\n\n this._networkManager\n .validateChecklist(outboundId, sharedKey)\n .then((internalId) => {\n if (!this.isConnected || !this._isSessionReady || !internalId) {\n return;\n }\n this.fetchChecklist(internalId);\n })\n .catch((error) => {\n this.renderResponse();\n this.checklistData = null;\n this._hasLoaded = false;\n });\n }\n\n fetchChecklist(checklistId) {\n if (!this._isSessionReady || !this._networkManager) {\n return;\n }\n this._isInitialLoad = !this._hasLoaded;\n this._networkManager\n .fetchChecklist(checklistId)\n .then((data) => {\n if (!this.isConnected || !this._isSessionReady || !data) {\n this._hasLoaded = false;\n this.checklistData = null;\n this._checkSessionAndLoad();\n return;\n }\n this.checklistData = data;\n this._hasLoaded = true;\n if (data.status === \"done\") {\n this.renderResponse();\n return;\n }\n if (this._isInitialLoad && !this._initialActiveSet) {\n const steps = data.outbound?.config?.steps || [];\n const completedSteps = data.completedSteps || [];\n const firstIncompleteIndex = steps.findIndex(\n (step) => !completedSteps.includes(step.id)\n );\n this.activeStep =\n firstIncompleteIndex >= 0 ? firstIncompleteIndex : -1;\n if (this.activeStep !== -1) {\n this._initialActiveSet = true;\n }\n }\n this.renderChecklist(this.checklistData);\n \n // Notify external listeners about the initial checklist load\n GleapEventManager.notifyEvent(\"checklist-loaded\", {\n checklistId: this.checklistData.id,\n outboundId: this.checklistData.outbound?.id,\n completedSteps: this.checklistData.completedSteps,\n status: this.checklistData.status,\n data: this.checklistData\n });\n })\n .catch((error) => {\n this.renderResponse();\n this.checklistData = null;\n this._hasLoaded = false;\n });\n }\n\n updateChecklist(id, data) {\n const gleapSessionInstance = this._getGleapSessionInstance();\n if (!gleapSessionInstance?.session) {\n return;\n }\n const apiUrl = gleapSessionInstance.apiUrl;\n if (!apiUrl) {\n return;\n }\n const session = gleapSessionInstance.session;\n const gleapId = session?.gleapId ?? \"\";\n const gleapHash = session?.gleapHash ?? \"\";\n let lang = \"en\";\n try {\n if (typeof GleapTranslationManager !== \"undefined\") {\n lang =\n GleapTranslationManager.getInstance().getActiveLanguage() || \"en\";\n }\n } catch (e) {}\n let url = `${apiUrl}/outbound/checklists/${id}`;\n if (data.checkedStep) {\n url += `/increment/${data.checkedStep}`;\n }\n url += `?gleapId=${gleapId}&gleapHash=${gleapHash}&lang=${lang}`;\n this.makeRequest(\"PUT\", url, data, (xhr) => {\n if (xhr._isMock) return;\n if (!(xhr.status === 200 || xhr.status === 204)) {\n // Update failed\n }\n });\n }\n\n // --- External Update Handling ---\n handleChecklistUpdate(event) {\n if (!this._hasLoaded || !this.checklistData) {\n return;\n }\n const updateData = event.detail;\n if (!updateData || updateData.id !== this.checklistData.id) {\n return;\n }\n const previousCompletedSteps = [\n ...(this.checklistData.completedSteps || []),\n ];\n let dataChanged = false;\n let activeStepCompleted = false;\n const currentlyActiveStepIndex = this.activeStep;\n if (\n updateData.completedSteps &&\n JSON.stringify(updateData.completedSteps) !==\n JSON.stringify(previousCompletedSteps)\n ) {\n this.checklistData.completedSteps = [...updateData.completedSteps];\n dataChanged = true;\n if (currentlyActiveStepIndex !== -1) {\n const activeStepId =\n this.checklistData.outbound?.config?.steps?.[\n currentlyActiveStepIndex\n ]?.id;\n if (\n activeStepId &&\n this.checklistData.completedSteps.includes(activeStepId) &&\n !previousCompletedSteps.includes(activeStepId)\n ) {\n activeStepCompleted = true;\n }\n }\n }\n if (\n updateData.status &&\n updateData.status !== this.checklistData.status\n ) {\n this.checklistData.status = updateData.status;\n dataChanged = true;\n }\n if (activeStepCompleted) {\n const steps = this.checklistData.outbound?.config?.steps || [];\n let nextActiveStep = -1;\n for (let i = currentlyActiveStepIndex + 1; i < steps.length; i++) {\n if (!this.checklistData.completedSteps.includes(steps[i].id)) {\n nextActiveStep = i;\n break;\n }\n }\n if (this.activeStep !== nextActiveStep) {\n this.setActiveStep(nextActiveStep);\n }\n dataChanged = true;\n }\n if (dataChanged) {\n this.renderChecklist(this.checklistData);\n \n // Notify external listeners about the checklist update\n GleapEventManager.notifyEvent(\"checklist-update\", {\n checklistId: this.checklistData.id,\n outboundId: this.checklistData.outbound?.id,\n completedSteps: this.checklistData.completedSteps,\n status: this.checklistData.status,\n data: this.checklistData\n });\n }\n }\n\n // --- Floating (Click-based) Listeners ---\n handleFloatingLauncherClick(event) {\n event.stopPropagation();\n\n if (this.checklistData.status === \"done\") {\n return;\n }\n\n const tasks = this.shadowRoot.querySelector(\".checklist-tasks\");\n if (tasks) {\n tasks.style.display =\n tasks.style.display === \"block\" ? \"none\" : \"block\";\n }\n }\n\n handleFloatingCloseClick(event) {\n event.stopPropagation();\n const tasks = this.shadowRoot.querySelector(\".checklist-tasks\");\n if (tasks) {\n tasks.style.display = \"none\";\n }\n }\n\n addFloatingClickListeners() {\n const launcher = this.shadowRoot.querySelector(\n \".checklist-floating-launcher\"\n );\n if (launcher) {\n launcher.addEventListener(\"click\", this._boundFloatingLauncherClick);\n }\n const header = this.shadowRoot.querySelector(\n \".checklist-floating-header\"\n );\n if (header) {\n header.addEventListener(\"click\", this._boundFloatingCloseClick);\n }\n }\n\n removeFloatingClickListeners() {\n const launcher = this.shadowRoot.querySelector(\n \".checklist-floating-launcher\"\n );\n if (launcher) {\n launcher.removeEventListener(\n \"click\",\n this._boundFloatingLauncherClick\n );\n }\n const header = this.shadowRoot.querySelector(\n \".checklist-floating-header\"\n );\n if (header) {\n header.removeEventListener(\"click\", this._boundFloatingCloseClick);\n }\n }\n\n // --- Rendering Logic ---\n renderResponse() {\n this.shadowRoot.innerHTML = \"\";\n }\n\n /**\n * Renders the floating launcher. When called with the default class (\"checklist-floating\")\n * it shows a chevron icon; when called with \"checklist-floating-header\" it shows a close icon.\n */\n renderFloatingLauncher(\n outbound,\n className = \"checklist-floating\",\n renderDoneState = false\n ) {\n const steps = outbound.config?.steps || [];\n const completedSteps = this.checklistData?.completedSteps || [];\n let progress = 0;\n if (this.progressbarEnabled && steps.length > 0) {\n const totalSteps = steps.length;\n const doneSteps = completedSteps.length;\n progress = totalSteps > 0 ? (doneSteps / totalSteps) * 100 : 0;\n }\n\n // Determine the next incomplete step\n const nextIncompleteStep = steps.find(\n (step) => !completedSteps.includes(step.id)\n );\n let titleText =\n steps.length > 0\n ? nextIncompleteStep\n ? nextIncompleteStep.title ||\n this._translateWithVars(\n \"stepDefaultTitle\",\n { index: steps.indexOf(nextIncompleteStep) + 1 },\n `Step ${steps.indexOf(nextIncompleteStep) + 1}`\n )\n : \"\"\n : outbound.subject || \"\";\n\n let subtitleText =\n steps.length > 0\n ? nextIncompleteStep\n ? nextIncompleteStep.description || \"\"\n : \"\"\n : outbound.message || \"\";\n\n if (renderDoneState) {\n titleText = outbound.config?.successTitle || \"\";\n subtitleText = outbound.config?.successMessage || \"\";\n progress = 100;\n }\n\n const circumference = 2 * Math.PI * 7;\n const computedOffset = circumference - (progress / 100) * circumference;\n\n const isHeader = className === \"checklist-floating-header\";\n const icon = isHeader\n ? `\n \n \n `\n : `\n \n `;\n\n return `\n
\n
\n
\n \n \n \n \n
\n
${titleText}
\n ${\n renderDoneState\n ? \"\"\n : `${icon}`\n }\n
\n
${subtitleText}
\n
\n `;\n }\n\n renderInfoSection(outbound) {\n if (!this.infoEnabled || !outbound) return \"\";\n const subject =\n outbound.subject ||\n this._translate(\"checklistDefaultTitle\", \"Checklist\");\n const message = outbound.message || \"\";\n let senderHtml = \"\";\n if (outbound.sender?.profileImageUrl) {\n senderHtml = `\n
\n \"${\n\n ${outbound.sender.firstName || \"\"}\n
`;\n }\n return `\n
\n ${\n subject\n ? `
${subject}
`\n : \"\"\n }\n ${\n message\n ? `
${message}
`\n : \"\"\n }\n ${senderHtml}\n
`;\n }\n\n renderProgressSection(steps = [], completedSteps = []) {\n if (!this.progressbarEnabled || !steps.length) return \"\";\n const totalSteps = steps.length;\n const doneSteps = completedSteps.length;\n const progress = totalSteps > 0 ? (doneSteps / totalSteps) * 100 : 0;\n let duration = 0;\n steps.forEach((step) => {\n if (!completedSteps.includes(step.id) && step.duration > 0) {\n duration += step.duration;\n }\n });\n const progressLabel = this._translateWithVars(\n \"taskProgress\",\n { a: doneSteps, b: totalSteps },\n `${doneSteps} of ${totalSteps} done`\n );\n const durationLabel =\n duration > 0\n ? this._translateWithVars(\n \"aboutMinutes\",\n { a: duration },\n `About ${duration} min left`\n )\n : \"\";\n return `\n
\n
${progressLabel}
\n ${\n durationLabel\n ? `
${durationLabel}
`\n : \"\"\n }\n
\n
\n
\n
`;\n }\n\n renderTasks(steps = [], completedSteps = []) {\n if (!steps || steps.length === 0)\n return `

${this._translate(\n \"noStepsDefined\",\n \"No steps defined.\"\n )}

`;\n return steps\n .map((step, index) => {\n const isTaskDone = completedSteps.includes(step.id);\n const isActive = this.activeStep === index;\n const badge = isTaskDone\n ? `${this.getCheckIcon()}`\n : `${\n index + 1\n }`;\n const stepTitle =\n step.title ||\n this._translateWithVars(\n \"stepDefaultTitle\",\n { index: index + 1 },\n `Step ${index + 1}`\n );\n const stepDescription = step.description || \"\";\n const actionButtonText =\n step.actionTitle ||\n this._translate(\"actionDefaultTitle\", \"Action\");\n const actionHtml =\n step.action && step.action !== \"none\"\n ? `
\n \n
`\n : \"\";\n const markDoneLabel = this._translate(\"markAsDone\", \"Mark as done\");\n const markDoneHtml =\n step.allowMarkDone && !isTaskDone\n ? `
\n ${this.getCheckIcon()}\n
${markDoneLabel}
\n
`\n : \"\";\n const taskClasses = [\n \"checklist-task\",\n isTaskDone ? \"checklist-task--done\" : \"\",\n isActive ? \"checklist-task--active\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n return `\n
\n
\n ${badge}\n
${stepTitle}
\n \n \n \n \n \n
\n
\n
\n ${\n stepDescription\n ? `
${stepDescription}
`\n : \"\"\n }\n ${actionHtml}\n ${markDoneHtml}\n
\n
\n
`;\n })\n .join(\"\");\n }\n\n renderChecklist(data) {\n if (!this._hasLoaded || !data || !data.outbound) {\n this._checkSessionAndLoad();\n return;\n }\n const { outbound } = data;\n const steps = outbound.config?.steps || [];\n const completedSteps = data.completedSteps || [];\n const isDone =\n data.status === \"done\" ||\n (steps.length > 0 && completedSteps.length >= steps.length);\n let content = \"\";\n if (isDone) {\n const successTitle = outbound.config?.successTitle || \"\";\n const successMessage = outbound.config?.successMessage || \"\";\n if (this.floatingEnabled) {\n content = this.renderFloatingLauncher(\n outbound,\n \"checklist-floating-launcher\",\n true\n );\n } else {\n content = `\n
\n
\n ${this.getCheckIcon()}\n
\n
${successTitle}
\n
${successMessage}
\n
`;\n }\n if (this.activeStep !== -1) this.activeStep = -1;\n } else {\n content = `\n
\n ${!this.floatingEnabled ? this.renderInfoSection(outbound) : \"\"}\n ${\n !this.floatingEnabled\n ? this.renderProgressSection(steps, completedSteps)\n : \"\"\n }\n ${\n this.floatingEnabled\n ? this.renderFloatingLauncher(outbound)\n : \"\"\n }\n
\n ${\n this.floatingEnabled\n ? this.renderFloatingLauncher(\n outbound,\n \"checklist-floating-header\"\n )\n : \"\"\n }\n ${this.renderTasks(steps, completedSteps)}\n
\n
`;\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const primaryColor = flowConfig.color ? flowConfig.color : \"#485BFF\";\n\n const styles = `\n \n `;\n this.shadowRoot.innerHTML = styles + content;\n this.addTaskEventListeners();\n if (this.floatingEnabled) {\n this.addFloatingClickListeners();\n }\n if (this.activeStep !== -1) {\n this.toggleTask(this.activeStep, true);\n }\n }\n\n updateActiveTaskMaxHeight() {\n if (this.activeStep !== -1) {\n const taskBodyInner = this.shadowRoot.querySelector(\n `.checklist-task[data-task-index=\"${this.activeStep}\"] .checklist-task-body-inner`\n );\n const container = this.shadowRoot.querySelector(\n `.checklist-task[data-task-index=\"${this.activeStep}\"] .checklist-task-body`\n );\n if (taskBodyInner && container) {\n const height = taskBodyInner.offsetHeight;\n container.style.setProperty(\n \"--task-body-active-height\",\n `${height}px`\n );\n }\n }\n }\n\n // --- Event Listener Setup ---\n addTaskEventListeners() {\n const tasks = this.shadowRoot.querySelectorAll(\".checklist-task\");\n tasks.forEach((task) => {\n const header = task.querySelector(\".checklist-task-header\");\n const index = parseInt(task.getAttribute(\"data-task-index\"), 10);\n if (header) {\n header.addEventListener(\"click\", () => {\n const newActiveStep = this.activeStep === index ? -1 : index;\n this.setActiveStep(newActiveStep);\n });\n }\n const markDoneBtn = task.querySelector(\n \".checklist-task-body-markdone\"\n );\n if (markDoneBtn) {\n markDoneBtn.addEventListener(\"click\", (e) => {\n e.stopPropagation();\n if (!this.checklistData?.outbound?.config?.steps) return;\n const step = this.checklistData.outbound.config.steps[index];\n if (!step) return;\n const previouslyActiveStep = this.activeStep;\n if (!this.checklistData.completedSteps)\n this.checklistData.completedSteps = [];\n if (!this.checklistData.completedSteps.includes(step.id)) {\n this.checklistData.completedSteps.push(step.id);\n \n // Notify external listeners about the step completion\n GleapEventManager.notifyEvent(\"checklist-step-completed\", {\n checklistId: this.checklistData.id,\n outboundId: this.checklistData.outbound?.id,\n stepId: step.id,\n stepIndex: index,\n step: step,\n completedSteps: this.checklistData.completedSteps,\n status: this.checklistData.status,\n data: this.checklistData\n });\n const allSteps = this.checklistData.outbound.config.steps;\n let nextActiveStep = -1;\n if (previouslyActiveStep === index) {\n for (let i = index + 1; i < allSteps.length; i++) {\n if (\n !this.checklistData.completedSteps.includes(\n allSteps[i].id\n )\n ) {\n nextActiveStep = i;\n break;\n }\n }\n this.setActiveStep(nextActiveStep);\n }\n // Preserve the state of the floating modal.\n setTimeout(() => {\n let isModalOpen = false;\n if (this.floatingEnabled) {\n const tasksModal =\n this.shadowRoot.querySelector(\".checklist-tasks\");\n isModalOpen =\n tasksModal && tasksModal.style.display === \"block\";\n }\n this.renderChecklist(this.checklistData);\n if (this.floatingEnabled && isModalOpen) {\n const tasksModal =\n this.shadowRoot.querySelector(\".checklist-tasks\");\n if (tasksModal) tasksModal.style.display = \"block\";\n }\n }, 300);\n const updateData = { checkedStep: step.id };\n if (\n allSteps.length > 0 &&\n this.checklistData.completedSteps.length >= allSteps.length\n ) {\n this.checklistData.status = \"done\";\n updateData.status = \"done\";\n \n // Notify external listeners about the checklist completion\n GleapEventManager.notifyEvent(\"checklist-completed\", {\n checklistId: this.checklistData.id,\n outboundId: this.checklistData.outbound?.id,\n completedSteps: this.checklistData.completedSteps,\n status: this.checklistData.status,\n data: this.checklistData\n });\n }\n this.updateChecklist(this.checklistData.id, updateData);\n }\n });\n }\n const actionBtn = task.querySelector(\n \".checklist-task-body-action .action-button\"\n );\n if (actionBtn) {\n actionBtn.addEventListener(\"click\", (e) => {\n e.stopPropagation();\n if (\n !this.checklistData?.outbound?.config?.steps ||\n typeof Gleap === \"undefined\"\n )\n return;\n const step = this.checklistData.outbound.config.steps[index];\n if (!step || !step.action || step.action === \"none\") return;\n try {\n if (step.action === \"BOT\") Gleap.startBot(step.botId);\n else if (step.action === \"CUSTOM_ACTION\")\n Gleap.triggerCustomAction(step.actionBody);\n else if (step.action === \"REDIRECT_URL\") {\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n Gleap.openURL(step.actionBody, !!step.actionOpenInNewTab);\n } else if (step.action === \"FEEDBACK_FLOW\")\n Gleap.startFeedbackFlow(step.formId);\n else if (step.action === \"NEWS_ARTICLE\")\n Gleap.openNewsArticle(step.articleId);\n else if (step.action === \"HELP_ARTICLE\")\n Gleap.openHelpCenterArticle(step.articleId);\n else if (step.action === \"CHECKLIST\")\n Gleap.startChecklist(step.outboundId, true, step?.sharedKey);\n } catch (gleapError) {}\n });\n }\n });\n }\n\n // --- Animation and State Management ---\n setActiveStep(index) {\n const previousActiveStep = this.activeStep;\n this.activeStep = index;\n const tasksToToggle = [];\n if (\n previousActiveStep !== -1 &&\n previousActiveStep !== this.activeStep\n ) {\n tasksToToggle.push({ index: previousActiveStep, open: false });\n }\n if (this.activeStep !== -1 && this.activeStep !== previousActiveStep) {\n tasksToToggle.push({ index: this.activeStep, open: true });\n }\n tasksToToggle.forEach(({ index, open }) => {\n this.toggleTask(index, open);\n });\n }\n\n toggleTask(index, forceOpen = null) {\n const taskElement = this.shadowRoot.querySelector(\n `.checklist-task[data-task-index=\"${index}\"]`\n );\n if (!taskElement) return;\n const header = taskElement.querySelector(\".checklist-task-header\");\n if (!header) return;\n const isOpen = taskElement.classList.contains(\"checklist-task--active\");\n const shouldOpen = forceOpen !== null ? forceOpen : !isOpen;\n if (shouldOpen && !isOpen) {\n taskElement.classList.add(\"checklist-task--active\");\n header.setAttribute(\"aria-expanded\", \"true\");\n const taskBodyInner = taskElement.querySelector(\n \".checklist-task-body-inner\"\n );\n if (taskBodyInner) {\n const height = taskBodyInner.offsetHeight;\n const taskBody = taskElement.querySelector(\".checklist-task-body\");\n if (taskBody) {\n taskBody.style.setProperty(\n \"--task-body-active-height\",\n `${height}px`\n );\n }\n }\n } else if (!shouldOpen && isOpen) {\n taskElement.classList.remove(\"checklist-task--active\");\n header.setAttribute(\"aria-expanded\", \"false\");\n }\n }\n }\n\n if (\n typeof customElements !== \"undefined\" &&\n !customElements.get(\"gleap-checklist\")\n ) {\n customElements.define(\"gleap-checklist\", GleapChecklist);\n }\n }\n};\n","import Gleap from \"./Gleap\";\n\nexport default Gleap;\n"],"names":["root","factory","exports","module","define","amd","this","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","GleapFeedbackButtonManager","_classCallCheck","_defineProperty","value","instance","feedbackButton","remove","buttonHidden","lastButtonIcon","injectedFeedbackButton","show","getInstance","updateFeedbackButtonState","GleapNotificationManager","updateContainerStyle","frameManager","GleapFrameManager","isOpened","hideWidget","setAppMode","showWidget","_this","elem","document","createElement","addEventListener","feedbackButtonPressed","body","appendChild","count","notificationBadge","querySelector","notificationHiddenClass","classList","innerText","add","updateFeedbackButtonText","injectFeedbackButton","flowConfig","GleapConfigManager","getFlowConfig","feedbackButtonPosition","FEEDBACK_BUTTON_CLASSIC","FEEDBACK_BUTTON_CLASSIC_BOTTOM","FEEDBACK_BUTTON_CLASSIC_LEFT","widgetButtonText","buttonIcon","buttonLogo","concat","loadIcon","className","setAttribute","GleapTranslationManager","isRTLLayout","innerHTML","hideButton","FEEDBACK_BUTTON_NONE","FEEDBACK_BUTTON_BOTTOM_LEFT","appMode","hideForGuests","GleapSession","isUser","calculateShadeColor","col","amt","replace","length","_col$match2","_slicedToArray","match","r","g","b","_ref","parseInt","Math","max","min","toString","rr","gg","bb","calculateContrast","hex","substr","name","color","GleapNetworkIntercepter","Date","now","loadAllResources","contentType","toLocaleLowerCase","supportedContentTypes","i","includes","requests","JSON","parse","stringify","values","externalRequests","filters","request","headers","j","payload","payloadObj","e","response","responseText","data","window","performance","resources","getEntriesByType","resource","indexOf","initiatorType","find","url","push","type","date","startTimestamp","startTime","duration","round","exp","blacklist","defaultBlacklist","filter","maxRequests","stopped","keys","keysToRemove","slice","bbRequestId","startDate","getTime","text","size","TextEncoder","encode","encodeURI","s","split","Blob","getTextContentSize","undefined","TextDecoder","_typeof","ArrayBuffer","isView","decode","payloadText","cleanupPayload","cleanupContentSize","initialized","self","interceptNetworkRequests","onFetch","params","fromEntries","entries","method","preparePayload","cleanRequests","onFetchLoad","req","status","statusText","calcRequestTime","isContentTypeSupported","then","err","onFetchFailed","onOpen","args","onSend","requestHeaders","onError","currentTarget","onLoad","target","responseType","callback","originalFetch","open","XMLHttpRequest","send","gleapSetRequestHeader","setRequestHeader","header","requestId","arguments","bind","apply","fetch","clone","blob","Promise","resolve","reject","fr","FileReader","onload","evt","result","onerror","readAsText","resizeImage","base64Str","maxWidth","maxHeight","isJPEG","img","Image","src","canvas","MAX_WIDTH","MAX_HEIGHT","width","height","getContext","drawImage","toDataURL","isMobile","test","navigator","userAgent","gleapDataParser","String","truncateString","str","num","removeSubDomain","v","parts","is2ndLevelDomain","secondLevel","join","loadFromGleapCache","cachedData","localStorage","getItem","saveToGleapCache","k","setItem","removeItem","runFunctionWhenDomIsReady","readyState","RequestStatus","ChecklistNetworkManager","Map","validationCache","clear","fetchCache","validationRequests","fetchRequests","gleapSessionInstance","session","lang","getActiveLanguage","gleapId","gleapHash","apiUrl","xhr","injectSession","onreadystatechange","responseData","error","outboundId","sharedKey","cacheKey","_createCacheKey","cachedResult","internalId","has","_getApiUrl","Error","set","_getQueryParams","requestPromise","_makeRequest","id","_this2","floor","createCoords","x","y","oppositeSideMap","left","right","bottom","top","oppositeAlignmentMap","start","end","clamp","param","placement","axis","getAxisLength","getAlignmentAxis","alignment","getOppositePlacement","side","padding","expandPaddingObject","rect","computeCoordsFromPlacement","rtl","reference","floating","sideAxis","alignmentAxis","alignLength","isVertical","commonX","commonY","commonAlign","coords","async","detectOverflow","state","options","_await$platform$isEle","platform","rects","elements","strategy","boundary","rootBoundary","elementContext","altBoundary","paddingObject","element","clippingClientRect","getClippingRect","isElement","contextElement","getDocumentElement","offsetParent","getOffsetParent","offsetScale","getScale","elementClientRect","convertOffsetParentRelativeRectToViewportRelativeRect","offset","fn","_middlewareData$offse","_middlewareData$arrow","middlewareData","diffCoords","isRTL","mainAxisMulti","crossAxisMulti","rawValue","mainAxis","crossAxis","convertValueToCoords","arrow","alignmentOffset","getNodeName","node","isNode","nodeName","toLowerCase","getWindow","_node$ownerDocument","ownerDocument","defaultView","documentElement","Node","Element","isHTMLElement","HTMLElement","isShadowRoot","ShadowRoot","isOverflowElement","overflow","overflowX","overflowY","display","isTableElement","isContainingBlock","webkit","isWebKit","css","transform","perspective","containerType","backdropFilter","some","willChange","contain","CSS","supports","isLastTraversableNode","getComputedStyle","getNodeScroll","scrollLeft","scrollTop","pageXOffset","pageYOffset","getParentNode","assignedSlot","parentNode","host","getNearestOverflowAncestor","getOverflowAncestors","list","traverseIframes","_node$ownerDocument2","scrollableAncestor","isBody","win","visualViewport","frameElement","getCssDimensions","parseFloat","hasOffset","offsetWidth","offsetHeight","shouldFallback","$","unwrapElement","domElement","getBoundingClientRect","Number","isFinite","noOffsets","getVisualOffsets","offsetLeft","offsetTop","includeScale","isFixedStrategy","clientRect","scale","visualOffsets","isFixed","floatingOffsetParent","shouldAddVisualOffsets","offsetWin","currentWin","currentIFrame","iframeScale","iframeRect","clientLeft","paddingLeft","clientTop","paddingTop","topLayerSelectors","isTopLayer","selector","matches","getWindowScrollBarX","getClientRectFromClippingAncestor","clippingAncestor","html","clientWidth","clientHeight","visualViewportBased","getViewportRect","scroll","scrollWidth","scrollHeight","direction","getDocumentRect","getInnerBoundingClientRect","hasFixedPositionAncestor","stopNode","position","getRectRelativeToOffsetParent","isOffsetParentAnElement","offsets","offsetRect","getTrueOffsetParent","polyfill","currentNode","getContainingBlock","topLayer","elementClippingAncestors","cache","el","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","ancestor","getClippingElementAncestors","_c","clippingAncestors","firstClippingAncestor","clippingRect","reduce","accRect","getElementRects","getOffsetParentFn","getDimensionsFn","getDimensions","getClientRects","Array","from","autoUpdate","update","ancestorScroll","ancestorResize","elementResize","ResizeObserver","layoutShift","IntersectionObserver","animationFrame","referenceEl","ancestors","forEach","passive","cleanupIo","onMove","timeoutId","io","cleanup","_io","clearTimeout","disconnect","refresh","skip","threshold","rootMargin","isFirstUpdate","handleObserve","ratio","intersectionRatio","setTimeout","observe","observeMove","frameId","reobserveFrame","resizeObserver","firstEntry","unobserve","cancelAnimationFrame","requestAnimationFrame","_resizeObserver","prevRefRect","frameLoop","nextRefRect","_resizeObserver2","removeEventListener","checkMainAxis","checkCrossAxis","limiter","detectOverflowOptions","mainAxisCoord","crossAxisCoord","maxSide","limitedCoords","_middlewareData$flip","initialPlacement","fallbackPlacements","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","flipAlignment","isBasePlacement","oppositePlacement","getExpandedPlacements","isStart","lr","rl","tb","bt","getSideList","map","getOppositeAxisPlacements","placements","overflows","overflowsData","flip","sides","mainAlignmentSide","every","_middlewareData$flip2","_overflowsData$filter","nextIndex","index","nextPlacement","reset","resetPlacement","d","sort","a","_overflowsData$map$so","acc","arrowDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","min$1","center","shouldAddOffset","centerOffset","mergedOptions","platformWithCache","config","middleware","validMiddleware","Boolean","statefulPlacement","resetCount","nextX","nextY","computePosition","checkPageFilter","currentUrl","pageFilter","pageFilterType","removeTrailingSlash","isMatchingUrl","regex","regexPattern","RegExp","generateRegex","matched","startsWith","endsWith","GleapTooltipManager","WeakMap","tooltip","hasAttribute","nextId","tooltipElem","mode","hotspotContainer","canEmbed","firstChild","insertBefore","nextSibling","hotspot","icon","animated","repositionHotspot","elementToTooltipMap","floatingUIInstance","createTooltip","elementToFloatingUIMap","filteredTooltips","getFilteredTooltips","checkForTooltips","tooltips","location","href","page","pageType","querySelectorAll","linkTooltip","sessionInstance","http","sdkKey","console","updateFilteredTooltips","nodeType","ELEMENT_NODE","checkNodeTooltip","childNodes","childNode","processNodeInsertion","_this3","_this4","time","timeout","handleResizeThrottled","updateHotspotPositions","context","_toConsumableArray","observer","MutationObserver","mutations","lastUrl","mutation","addedNodes","removedNodes","floatingUI","childList","subtree","attributes","attributeFilter","_this5","tooltipText","tooltipData","hideTimeout","arrowEl","posX","shift","assign","style","arrowPos","visibility","opacity","pointerEvents","hide","voidElements","Set","tagName","resizeListener","anchor","removeAttribute","tooltipId","getAttribute","posY","offsetX","offsetY","elementRect","range","createRange","selectNodeContents","fixedWidth","anchorRect","tooltipSize","email","userId","phone","onSessionReady","ready","onSessionReadyListener","attemp","retry","GleapEventManager","notifyEvent","useCookies","cookie","eraseGleapCookie","sendMessage","clearAllNotifications","setNotificationCount","GleapBannerManager","removeBannerUI","GleapModalManager","hideModal","isNaN","newTimeout","pow","startSession","_this$session","sessionChanged","days","expires","setTime","toUTCString","setGleapCookie","encodeURIComponent","clearCache","GleapStreamedEvent","restart","tooltipManager","destroy","load","dispatchEvent","CustomEvent","notifySessionReady","sessionCookie","nameEQ","ca","c","charAt","substring","getGleapCookie","sessionData","decodeURIComponent","validateSession","cachedSession","clearSession","userData","checkIfSessionDataNeedsUpdate","userDataKeys","userDataKey","customData","setOnSessionReady","_objectSpread","sdkVersion","SDK_VERSION","ws","userHash","checkIfSessionNeedsUpdate","dataToSend","tourId","tourData","_window","passedPageFilter","sendSessionUpdate","streamEvents","mainLoopTimeout","runEventStreamLoop","streamingEvents","errorCount","streamedEventArray","socket","OPEN","sessionDuration","GleapMetaDataManager","getSessionDuration","events","opened","handleOpenBound","handleOpen","handleErrorBound","handleError","handleMessageBound","handleMessage","handleCloseBound","handleClose","connectionTimeout","pingWS","clearInterval","close","cleanupWebSocket","connectedWebSocketGleapId","WebSocket","wsApiUrl","event","setInterval","processMessage","initWebSocket","message","_message$data","u","listOfActionsWhereIgnoreOpened","filteredActions","action","_action$actionType","actionType","Gleap","performActions","detail","eventArray","cleanupMainLoop","trackInitialEvents","startPageListener","resetErrorCountLoop","logEvent","logCurrentPage","disablePageTracking","log","eventMaxLength","parseIntWithDefault","val","def","parsed","onConfigLoaded","onConfigLoadedListener","aiTools","sendConfigUpdate","cachedConfig","applyConfig","loadConfigFromServer","setStyles","headerColor","buttonColor","backgroundColor","borderRadius","buttonX","buttonY","applyStylesFromConfig","enableWebReplays","GleapReplayRecorder","stop","enableNetworkLogs","setLoadAllResources","sendNetworkResources","networkLogPropsToIgnore","setFilters","networkLogBlacklist","setBlacklist","updateRTLSupport","enableShortcuts","notifyConfigLoaded","_regeneratorRuntime","t","n","Symbol","iterator","asyncIterator","toStringTag","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","arg","h","l","f","GeneratorFunction","GeneratorFunctionPrototype","p","getPrototypeOf","defineIteratorMethods","_invoke","AsyncIterator","invoke","__await","callInvokeWithMethodAndArg","done","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","displayName","isGeneratorFunction","constructor","mark","setPrototypeOf","__proto__","awrap","reverse","pop","prev","rval","handle","complete","finish","delegateYield","asyncGeneratorStep","gen","_next","_throw","info","_asyncToGenerator","documentToHTML","doctype","publicId","systemId","outerHTML","loadCSSUrlResources","basePath","remote","asyncFn","matchedData","matchedUrl","replaceAll","resourcePath","URL","fetchCSSResource","resourceData","promises","_len","_key","promise","all","reader","onloadend","readAsDataURL","fetchItemResource","isBlacklisted","warn","progressResource","replaceStyleNodes","styleSheet","cssTextContent","styleId","cloneTargetNode","ownerNode","replacementNode","head","styleNode","cssText","createTextNode","linkNode","rel","media","getTextContentFromStyleSheet","cssRules","rules","cssRuleItem","downloadAllCSSUrlResources","basePathURL","_loop","styleSheets","mediaText","baseTags","getElementsByTagName","origin","lastIndexOf","replacedStyle","styletext","stylesheet","results","prepareRemoteData","dom","imgItems","imgItemsPromises","item","downloadAllImages","handleAdoptedStyleSheets","doc","shadowNodeId","adoptedStyleSheets","shadowStyleNode","firstElementChild","extractFinalCSSState","getAnimations","animations","finalCSSState","animation","_animation$effect","keyframes","effect","getKeyframes","finalKeyframe","property","deepClone","_callee3","cloneNode","fragment","clonedHead","_context3","_ref2","_callee2","parent","shadowRoot","walkTree","webAnimations","boundingRect","resizedImage","_boundingRect","rootShadowNodeId","_context2","_ref3","_callee","nextn","nextp","innerShadowRoot","_context","nextElementSibling","_x5","_x6","_x7","HTMLCanvasElement","t0","toUpperCase","contains","checked","_x2","_x3","_x4","createDocumentFragment","_x","prepareScreenshotData","_ref4","_callee4","styleTags","linkImportElems","referenceNode","scriptElems","existingBasePath","baseElems","baseUrl","newBaseUrl","baseNode","dialogElems","bbElems","_context4","innerWidth","innerHeight","_x8","_x9","_createForOfIteratorHelper","allowArrayLike","it","isArray","minLen","_arrayLikeToArray","_unsupportedIterableToArray","F","_e","normalCompletion","didErr","step","_e2","arr","len","arr2","_defineProperties","props","descriptor","_toPropertyKey","toPrimitive","_toPrimitive","GleapScreenRecorder","rerender","permissionErrorText","Constructor","MAX_RECORD_TIME","mediaDevices","getDisplayMedia","available","RERENDER_DELAY","protoProps","staticProps","_uploadScreenRecording","_startAudioRecording","_startScreenRecording","_step","_iterator","MIME_TYPES","MediaRecorder","isTypeSupported","stream","getTracks","track","_","tracks","validTracks","MediaStream","videoTracks","getVideoTracks","audioTracks","getAudioTracks","displayStream","composed","isRecording","video","ideal","screen","frameRate","IDEAL_FRAME_RATE","MAX_FRAME_RATE","displaySurface","audio","selfBrowserSurface","_displayStream","_displayVideoTrack","getFirstVideoTrack","audioMuted","startAudioRecording","audioAvailable","createMediaStream","handleRecord","alert","mediaRecorder","recordingTimer","stopStreamTracks","_micStream","voiceStream","micTrack","_composed","getUserMedia","echoCancellation","noiseSuppression","autoGainControl","getFirstAudioTrack","enabled","videoEl","SELECTORS","PREVIEW_VIDEO","file","recordedChunks","mimeType","getSupportedMimeType","recordTime","timerLabel","TIMER_LABEL","remainingTime","maxRecordTime","formatTime","stopScreenRecording","TIMER_UPDATE_INTERVAL","ondataavailable","videoTrack","onended","prepareRecording","onstop","CHUNK_INTERVAL","completeBlob","extension","File","previewVideoElement","createObjectURL","screenRecordingData","formData","FormData","append","fileUrl","GleapFeedback","priority","isSilent","excludeData","spamToken","gleapInstance","GleapCustomDataManager","getCustomData","metaData","getMetaData","consoleLog","GleapConsoleLogManager","getLogs","networkLogs","getRequests","customEventLog","getEventArray","ticketAttributes","getTicketAttributes","dataPromises","webReplay","getGlobalDataItem","isLiveSite","recordingUrlPromise","uploadScreenRecording","recordingUrl","screenRecordingUrl","screenshot","screenshotDataPromise","isLiveMode","screenshotData","snapshotPosition","feedbackData","outbound","tags","GleapTagManager","getTags","keysToExclude","keyToExclude","takeSnapshot","getData","feedback","newTab","newWindow","focus","cmp_block_ignoredomains","injectedFrame","autoWhiteListCookieManager","frameUrl","gleapFrameContainer","gleapFrame","updateFrameStyle","showFrameContainer","closeElement","surveyStyle","extendedStyle","surveyFullStyle","classicStyle","classicStyleLeft","modernStyleLeft","noButtonStyleLeft","allStyles","styleToApply","startCommunication","appHeight","setProperty","handler","urlHandler","innerContainer","escListener","widgetOpened","markerManager","showLoader","loadingClass","disableBGFade","disableBGGradient","updateUI","workThroughQueue","setGlobalDataItem","scrollX","scrollY","updateWidgetStatus","registerEscListener","isSurvey","updateNotificationBadge","runWidgetShouldOpenCallback","injectFrame","isWidgetOpen","resetRoutes","hideMarkerManager","reloadNotificationsFromCache","unregisterEscListener","queue","comReady","contentWindow","postMessage","getSession","getAiTools","overrideLanguage","getOverrideLanguage","GleapMarkerManager","success","workQueue","_this6","addMessageListener","GleapAudioManager","ping","showImage","ticketData","frameHeight","_data$data","startProductTour","GleapCustomActionManager","triggerCustomAction","shareToken","feedbackType","sendFeedback","reportedBy","trackEvent","showDrawingScreen","bannerUrl","listeners","appVersionCode","appBuildNumber","sessionStart","nameOffset","verOffset","ix","nAgt","browserName","appName","fullVersion","appVersion","majorVersion","OSName","browser","systemName","buildVersionNumber","releaseVersionNumber","devicePixelRatio","screenWidth","screenHeight","language","userLanguage","mobile","sdkType","environment","logArray","disabled","originalConsoleLog","logLevel","logMaxLength","addLog","origConsole","addLogWithArgs","GleapClickListener","protocol","preventDefault","handleGleapLink","elementId","elementClass","elemId","elemClass","elementTag","htmlPre","htmlPost","getDOMElementDescription","takeCurrentReplay","eventListeners","eventListener","eventName","customAction","customActionCallbacks","_a","__defProp","__publicField","__defNormalProp","__defProp$1","__publicField$1","__defNormalProp$1","NodeType$3","NodeType2","testableAccessors$1","testableMethods$1","untaintedBasePrototype$1","isAngularZonePresent$1","globalThis","Zone","getUntaintedPrototype$1","defaultObj","defaultPrototype","accessorNames","isUntaintedAccessors","accessor","_a2","_b","getOwnPropertyDescriptor","methodNames","isUntaintedMethods","iframeEl","untaintedObject","removeChild","untaintedAccessorCache$1","getUntaintedAccessor$1","untaintedPrototype","untaintedAccessor","untaintedMethodCache$1","getUntaintedMethod$1","untaintedMethod","index$1","n2","parentElement","textContent","other","getRootNode","selectors","mutationObserver","hostEl","isNativeShadowDom","shadowRoot2","stringifyStylesheet","s2","rules2","sheetHref","stringifiedRules","rule2","stringifyRule","isCSSImportRule","importStringified","statement","layerName","supportsText","escapeImportStatement","absolutifyURLs","ruleStringified","isCSSStyleRule","selectorText","cssStringified","fixSafariColons","Mirror","getId","getMeta","getNode","idNodeMap","getIds","nodeMetaMap","removeNodeFromMap","delete","hasNode","node2","meta","oldNode","maskInputValue","maskInputOptions","maskInputFn","actualType","repeat","ORIGINAL_ATTRIBUTE_NAME","getInputType","extractFileExtension","path","baseURL","pathname","URL_IN_CSS_REF","URL_PROTOCOL_MATCH","URL_WWW_MATCH","DATA_URI","quote1","path1","quote2","path2","path3","filePath","maybeQuote","extractOrigin","stack","part","normalizeCssString","markCssSplits","childNodes2","splits","cssTextNorm","i2","textContentNorm","bit","splitNorm","splitCssText","_id","tagNameRegex","IGNORED_NODE","genId","canvasService","canvasCtx","SRCSET_NOT_SPACES","SRCSET_COMMAS_OR_SPACES","cachedDocument","absoluteToDoc","attributeValue","trim","getHref","isSVGElement","ownerSVGElement","customHref","a2","transformAttribute","pos","collectCharacters","regEx","chars2","exec","output","descriptorsStr","inParens","c2","getAbsoluteSrcsetString","ignoreAttribute","_value","classMatchesRegex","checkAncestors","eIndex","needMaskingText","maskTextClass","maskTextSelector","closest","e2","serializeNode","mirror","mirror2","blockClass","blockSelector","needsMask","inlineStylesheet","maskTextFn","dataURLOptions","inlineImages","recordCanvas","keepIframeSrcFn","newlyAddedElement","cssCaptured","rootId","docId","getRootId","DOCUMENT_NODE","compatMode","Document","DOCUMENT_TYPE_NODE","DocumentType","needBlock","_isBlockedElement","HTMLFormElement","processedTagName","getValidTagName$1","attr","_cssText","sheet","selected","rr_open_mode","__context","ctx","x2","getImageData","originalGetImageData","Uint32Array","buffer","pixel","is2DCanvasBlank","rr_dataURL","quality","canvasDataURL","blankCanvas","image","imageSrc","currentSrc","priorCrossOrigin","crossOrigin","recordInlineImage","naturalWidth","naturalHeight","mediaAttributes","rr_mediaState","paused","rr_mediaCurrentTime","currentTime","rr_mediaPlaybackRate","playbackRate","rr_mediaMuted","muted","rr_mediaLoop","loop","rr_mediaVolume","volume","rr_scrollLeft","rr_scrollTop","class","rr_width","rr_height","contentDocument","rr_src","isCustomElement","customElements","isSVG","isCustom","serializeElementNode","TEXT_NODE","parentTagName","textContent2","isStyle","isScript","Text","serializeTextNode","CDATA_SECTION_NODE","CDATA","COMMENT_NODE","Comment","lowerIfExists","maybeAttr","serializeNodeWithId","skipChild","slimDOMOptions","onSerialize","onIframeLoad","iframeLoadTimeout","onStylesheetLoad","stylesheetLoadTimeout","preserveWhiteSpace","_serializedNode","sn","comment","script","as","headFavicon","headMetaDescKeywords","headMetaSocial","headMetaRobots","headMetaHttpEquiv","headMetaAuthorship","headMetaVerification","slimDOMExcluded","serializedNode","recordChild","shadowRootEl","isShadowHost","headWhitespace","bypassOptions","childN","serializedChildNode","isShadow","listener","fired","timer","blankUrl","onceIframeLoaded","iframeDoc","serializedIframeNode","link","styleSheetLoadTimeout","styleSheetLoaded","onceStylesheetLoaded","serializedLinkNode","getDefaultExportFromCjs$1","__esModule","getAugmentedNamespace$1","f2","default","a22","Reflect","construct","picocolors_browser$1","x$1","create$1","isColorSupported","bold","dim","italic","underline","inverse","hidden","strikethrough","black","red","green","yellow","blue","magenta","cyan","white","gray","bgBlack","bgRed","bgGreen","bgYellow","bgBlue","bgMagenta","bgCyan","bgWhite","createColors","picocolors_browserExports$1","require$$2$1","freeze","pico$1","terminalHighlight$1$1","CssSyntaxError$3$1","CssSyntaxError","line","column","source","plugin22","super","reason","plugin","endLine","endColumn","setMessage","captureStackTrace","showSourceCode","aside","lines","index2","number","gutter","spacing","code","cssSyntaxError$1","symbols$1","isClean","my","DEFAULT_RAW$1","after","beforeClose","beforeComment","beforeDecl","beforeOpen","beforeRule","colon","commentLeft","commentRight","emptyBody","indent","semicolon","Stringifier$2$1","builder","atrule","raws","afterName","nodes","block","between","beforeAfter","detect","raw","buf","depth","last","child","before","decl","string","important","own","first","root2","rawCache","walk","rawBeforeClose","rawBeforeComment","walkComments","rawBeforeDecl","walkDecls","rawBeforeOpen","rawBeforeRule","rawColon","rawEmptyBody","rawIndent","rawSemicolon","rule","ownSemicolon","stringifier$1","Stringifier$1$1","stringify$4$1","stringify_1$1","isClean$2$1","my$2$1","CssSyntaxError$2$1","Stringifier2$1","stringify$3$1","cloneNode$1","cloned","Node$4$1","defaults","addToError","postcssNode","input","insertAfter","overrides","cleanRaws","keepBetween","cloneAfter","cloneBefore","opts","rangeBy","getProxyProcessor","toProxy","markDirty","positionBy","stringRepresentation","positionInside","word","endIndex","defaultType","replaceWith","bookmark","foundSelf","result2","toJSON","inputs","fixed","emitInputs","inputsNextIndex","inputId","input2","proxyCache","Proxy","stringifier2","proxyOf","node$1","Node$3$1","Declaration$4$1","variable","declaration$1","nonSecure$1","nanoid","random","customAlphabet","alphabet","defaultSize","SourceMapConsumer","SourceMapConsumer$2$1","SourceMapGenerator","SourceMapGenerator$2$1","existsSync","existsSync$1","readFileSync","readFileSync$1","dirname","dirname$1$1","join$1","PreviousMap$2$1","loadAnnotation","inline","startWith","annotation","loadMap","mapFile","consumer","consumerCache","decodeInline","lastMatch","Buffer","atob","encoding","getAnnotationURL","sourceMapString","isMap","mappings","_mappings","sections","comments","loadFile","fromSourceMap","prevPath","withContent","sourcesContent","previousMap$1","SourceMapConsumer$1$1","SourceMapGenerator$1$1","fileURLToPath","fileURLToPath$1","pathToFileURL","pathToFileURL$1$1","isAbsolute","isAbsolute$1","resolve$1$1","nanoid$2","terminalHighlight$2","CssSyntaxError$1$1","PreviousMap$1$1","fromOffsetCache$1","sourceMapAvailable$1$1","pathAvailable$1$1","Input$4$1","hasBOM","mapResolve","fromOffset","lastLine","lineToIndex","prevIndex","l2","mid","sourceRoot","to","fromUrl","originalPositionFor","sourceContentFor","json","input$1","registerInput","SourceMapConsumer$3","SourceMapGenerator$3","dirname$2","relative","relative$1","resolve$2","sep","sep$1","pathToFileURL$2","Input$3$1","sourceMapAvailable$2","pathAvailable$2","mapGenerator$1","stringify2","cssString","mapOpts","originalCSS","usesFileUrls","absolute","memoizedFileURLs","memoizedPaths","memoizedURLs","addAnnotation","content","isInline","toBase64","outputFile","eol","applyPrevMaps","previous","toUrl","applySourceMap","clearAnnotation","generate","generateMap","generateString","ignoreInvalidMapping","addMapping","generated","original","isSourcesContent","setSourcesContent","isAnnotation","noSource","mapping","sourcePath","charCodeAt","cached","previousMaps","already","toFileUrl","setSourceContent","btoa","unescape","fileURL","Node$2$1","Comment$4$1","comment$1","parse$4$1","Rule$4$1","AtRule$4$1","Root$6$1","isClean$1$1","my$1$1","Declaration$3$1","Comment$3$1","Node$1$1","cleanSource$1","markDirtyUp$1","Container$7$1","Container","children","normalize","each","getIterator","indexes","condition","lastEach","cb","exist","existIndex","splice","sample","rebuild","prepend","unshift","removeAll","replaceValues","pattern","fast","walkAtRules","walkRules","registerParse","dependant","registerRule","registerAtRule","registerRoot","container$1","LazyResult$4$1","Processor$3$1","Container$6$1","Document$3$1","toResult","registerLazyResult","registerProcessor","document$1$1","Warning$2$1","opt","warning$1","Warning$1$1","Result$3$1","processor2","processor","messages","lastPlugin","postcssPlugin","warning2","warnings","result$1","SINGLE_QUOTE$1","DOUBLE_QUOTE$1","BACKSLASH$1","SLASH$1","NEWLINE$1","SPACE$1","FEED$1","TAB$1","CR$1","OPEN_SQUARE$1","CLOSE_SQUARE$1","OPEN_PARENTHESES$1","CLOSE_PARENTHESES$1","OPEN_CURLY$1","CLOSE_CURLY$1","SEMICOLON$1","ASTERISK$1","COLON$1","AT$1","RE_AT_END$1","RE_WORD_END$1","RE_BAD_BRACKET$1","RE_HEX_ESCAPE$1","Container$5$1","AtRule$3$1","atRule$1","LazyResult$3$1","Processor$2$1","Container$4$1","Root$5$1","ignore","root$1","list$2$1","comma","space","separators","array","current","func","inQuote","prevQuote","escape","letter","list_1$1","Container$3$1","list$1$1","Rule$3$1","sep2","rule$1","Declaration$2$1","tokenizer2$1","quote","escaped","escapePos","currentToken","valueOf","ignoreErrors","returned","unclosed","what","back","token","endOfFile","nextToken","ignoreUnclosed","controlChar","fromCharCode","lastIndex","Comment$2$1","AtRule$2$1","Root$4$1","Rule$2$1","SAFE_COMMENT_NEIGHBOR$1","empty","parser$1","spaces","createTokenizer","unnamedAtrule","init","brackets","tokenizer","getPosition","spacesAndCommentsFromEnd","spacesAndCommentsFromStart","checkMissedSemicolon","tokens","founded","doubleColon","customProperty","findLastWithPosition$1","unknownWord","firstSpaces","precheckMissedSemicolon","stringFrom","spacesFromEnd","emptyRule","unexpectedClose","endFile","unclosedBlock","freeSemicolon","bracket","unclosedBracket","clean","lastTokenType","Container$2$1","Parser2$1","Input$2$1","parse$3$1","parser2","parse_1$1","isClean$3","my$3","MapGenerator$1$1","stringify$2$1","Container$1$1","Document$2$1","Result$2$1","parse$2$1","Root$3$1","TYPE_TO_CLASS_NAME$1","PLUGIN_PROPS$1","AtRule","AtRuleExit","CommentExit","Declaration","DeclarationExit","DocumentExit","Once","OnceExit","prepare","Root","RootExit","Rule","RuleExit","NOT_VISITORS$1","CHILDREN$1","isPromise$1","getEvents$1","toStack$1","eventIndex","visitorIndex","visitors","cleanMarks$1","postcss$2$1","LazyResult$2$1","LazyResult","stringified","processed","syntax","parser","helpers","postcss","plugins","processing","runAsync","onRejected","catch","onFinally","getAsyncError","postcssVersion","prepareVisitors","version","hasListener","runOnRoot","visitTick","visitor","roots","subRoot","sync","stringifier","walkSync","visitSync","onFulfilled","visit2","registerPostcss","lazyResult$1","MapGenerator2$1","stringify$1$1","parse$1$1","Result$1$1","NoWorkResult$1$1","_processor","_css","_opts","_map","generatedCSS","generatedMap","_root","noWorkResult$1","NoWorkResult2$1","LazyResult$1$1","Document$1$1","Root$2$1","Processor$1$1","normalized","process","use","processor$1","Declaration$1$1","PreviousMap2$1","Comment$1$1","AtRule$1$1","Input$1$1","Root$1$1","Rule$1$1","fromJSON$1$1","ownInputs","inputHydrated","fromJSON_1$1","CssSyntaxError2$1","Declaration2$1","LazyResult2$1","Container2$1","Processor2$1","stringify$5","fromJSON$2","Document22","Warning2$1","Comment2$1","AtRule2$1","Result2$1","Input2$1","parse$5","list$3","Rule2$1","Root2$1","Node2$1","postcss$3","initializer","warningPrinted","creator","env","LANG","transformer","processOpts","pluginOpts","fromJSON","atRule","Processor","Warning","Result","Input","postcss_1$1","postcss$1$1","__defProp2","__publicField2","__defNormalProp2","getDefaultExportFromCjs","getAugmentedNamespace","picocolors_browser","picocolors_browserExports","require$$2","pico","terminalHighlight$1","CssSyntaxError$3","CssSyntaxError2","cssSyntaxError","symbols","DEFAULT_RAW","Stringifier$2","Stringifier$1","stringify$4","stringify_1","isClean$2","my$2","CssSyntaxError$2","Stringifier22","stringify$3","Node$4","Node$3","Declaration$4","declaration","nonSecure","SourceMapConsumer$2","SourceMapGenerator$2","dirname$1","PreviousMap$2","previousMap","SourceMapConsumer$1","SourceMapGenerator$1","pathToFileURL$1","resolve$1","terminalHighlight","CssSyntaxError$1","PreviousMap$1","fromOffsetCache","sourceMapAvailable$1","pathAvailable$1","Input$4","Input$3","sourceMapAvailable","pathAvailable","mapGenerator","Node$2","Comment$4","parse$4","Rule$4","AtRule$4","Root$6","isClean$1","my$1","Declaration$3","Comment$3","Node$1","cleanSource","markDirtyUp","Container$7","Container2","container","LazyResult$4","Processor$3","Container$6","Document$3","document$1","Warning$2","warning","Warning$1","Result$3","SINGLE_QUOTE","DOUBLE_QUOTE","BACKSLASH","SLASH","NEWLINE","SPACE","FEED","TAB","CR","OPEN_SQUARE","CLOSE_SQUARE","OPEN_PARENTHESES","CLOSE_PARENTHESES","OPEN_CURLY","CLOSE_CURLY","SEMICOLON","ASTERISK","COLON","AT","RE_AT_END","RE_WORD_END","RE_BAD_BRACKET","RE_HEX_ESCAPE","Container$5","AtRule$3","LazyResult$3","Processor$2","Container$4","Root$5","list$2","list_1","Container$3","list$1","Rule$3","Declaration$2","tokenizer22","Comment$2","AtRule$2","Root$4","Rule$2","SAFE_COMMENT_NEIGHBOR","findLastWithPosition","Container$2","Parser22","Input$2","parse$3","parse_1","MapGenerator$1","stringify$2","Container$1","Document$2","Result$2","parse$2","Root$3","TYPE_TO_CLASS_NAME","PLUGIN_PROPS","NOT_VISITORS","CHILDREN","isPromise","getEvents","toStack","cleanMarks","postcss$2","LazyResult$2","LazyResult2","lazyResult","MapGenerator22","stringify$1","parse$1","Result$1","NoWorkResult$1","noWorkResult","NoWorkResult22","LazyResult$1","Document$1","Root$2","Processor$1","Declaration$1","PreviousMap22","Comment$1","AtRule$1","Input$1","Root$1","Rule$1","fromJSON$1","fromJSON_1","CssSyntaxError22","Declaration22","LazyResult22","Container22","Processor22","Document222","Warning22","Comment22","AtRule22","Result22","Input22","Rule22","Root22","Node22","postcss_1","postcss$1","BaseRRNode","_args","childIterator","_newChild","_refChild","_node","testableAccessors","testableMethods","untaintedBasePrototype","isAngularZonePresent","getUntaintedPrototype","untaintedAccessorCache","getUntaintedAccessor","untaintedMethodCache","getUntaintedMethod","mutationObserverCtor","on","capture","DEPARTED_MIRROR_ACCESS_WARNING","_mirror","throttle","wait","leading","remaining","trailing","hookSetter","isRevoked","patch","replacement","wrapped","defineProperties","__rrweb_original__","receiver","nowTimestamp","getWindowScroll","_d","scrollingElement","getWindowHeight","getWindowWidth","closestElementOfNode","isBlocked","isIgnored","headTitleMutations","isAncestorRemoved","legacy_isTouchEvent","changedTouches","isSerializedIframe","isSerializedStylesheet","hasShadowRoot","StyleSheetMirror","styleIDMap","newId","idStyleMap","getStyle","generateId","getShadowHost","shadowHost","DOCUMENT_FRAGMENT_NODE","shadowHostInDom","rootShadowHost","getRootShadowHost","inDom","EventType","EventType2","IncrementalSource","IncrementalSource2","MouseInteractions","MouseInteractions2","PointerTypes","PointerTypes2","CanvasContext","CanvasContext2","MediaInteractions","MediaInteractions2","NodeType","isNodeInLinkedList","DoubleLinkedList","addNode","__ln","previousSibling","tail","removeNode","moveKey","parentId","MutationBuffer","processMutation","emit","frozen","locked","adds","addedIds","addList","getNextId","ns","pushAdd","parentTag","addedSet","currentN","iframeManager","addIframe","stylesheetManager","trackLinkElement","shadowDomManager","addShadowRoot","iframe","childSn","attachIframe","observeAttachShadow","attachLinkElement","mapRemoves","movedSet","isParentRemoved","removesSubTreeCache","isAncestorInSet","droppedSet","candidate","tailNode","unhandledNode","texts","genTextAreaValueMutation","attribute","diffAsStr","styleDiff","unchangedAsStr","_unchangedStyles","removes","attributeMap","movedMap","mutationCb","textarea","cn","m","oldValue","attributeName","unattachedDoc","implementation","createHTMLDocument","old","pname","newValue","getPropertyValue","newPriority","getPropertyPriority","genAdds","nodeId","isSerialized","deepDelete","n22","processRemoves","processedNodeManager","inOtherBuffer","targetId","canvasManager","unfreeze","isFrozen","lock","unlock","addsSet","_mirror2","_isParentRemoved","_isAncestorInSet","errorHandler","callbackWrapper","rest","mutationBuffers","getEventTarget","composedPath","initMutationObserver","rootEl","mutationBuffer","processMutations","attributeOldValue","characterData","characterDataOldValue","initMouseInteractionObserver","mouseInteractionCb","sampling","mouseInteraction","disableMap","handlers","currentPointerType","eventKey","pointerType","thisEventKey","Mouse","Touch","Pen","MouseDown","MouseUp","Click","clientX","clientY","getHandler","PointerEvent","TouchStart","TouchEnd","initScrollObserver","scrollCb","scrollLeftTop","INPUT_TAGS","lastInputValueMap","getNestedCSSRulePositions","childRule","hasNestedCSSRule","parentRule","CSSGroupingRule","CSSMediaRule","CSSSupportsRule","CSSConditionRule","parentStyleSheet","recurse","getIdAndStyleId","styleMirror","initAdoptedStyleSheetObserver","host2","hostId","patchTarget","originalPropertyDescriptor","_a3","sheets","adoptStyleSheets","initObservers","o2","hooks","currentWindow","mousemoveCb","viewportResizeCb","inputCb","mediaInteractionCb","styleSheetRuleCb","styleDeclarationCb","canvasMutationCb","fontCb","selectionCb","customElementCb","mousemove","viewportResize","mediaInteaction","styleSheetRule","styleDeclaration","canvasMutation","font","selection","customElement","mergeHooks","recordDOM","mousemoveHandler","callbackThreshold","mousemoveCallback","timeBaseline","positions","wrappedCb","totalOffset","timeOffset","updatePosition","DragEvent","Drag","MouseEvent","MouseMove","TouchMove","initMoveObserver","mouseInteractionHandler","scrollHandler","viewportResizeHandler","lastH","lastW","initViewportResizeObserver","inputHandler","ignoreClass","ignoreSelector","userTriggeredOnInput","eventHandler","userTriggered","isTrusted","isChecked","cbWithDedup","text2","v2","lastInputValue","propertyDescriptor","HTMLInputElement","hookProperties","HTMLSelectElement","HTMLTextAreaElement","HTMLOptionElement","initInputObserver","mediaInteractionHandler","Play","Pause","Seeked","VolumeChange","RateChange","initMediaInteractionObserver","styleSheetObserver","adoptedStyleSheetObserver","styleDeclarationObserver","fontObserver","CSSStyleSheet","insertRule","thisArg","argumentsList","addRule","styleBlock","deleteRule","replaceSync","removeRule","supportedNestedCSSRuleTypes","canMonkeyPatchNestedCSSRule","unmodifiedFunctions","typeKey","initStyleSheetObserver","ignoreCSSAttributes","CSSStyleDeclaration","removeProperty","initStyleDeclarationObserver","collectFonts","fontMap","originalFontFace","FontFace","family","descriptors","fontFace","fontSource","Uint8Array","restoreHandler","fonts","initFontObserver","selectionObserver","collapsed","updateSelection","getSelection","isCollapsed","ranges","rangeCount","getRangeAt","startContainer","startOffset","endContainer","endOffset","initSelectionObserver","customElementObserver","initCustomElementObserver","pluginHandlers","plugin3","CrossOriginIframeMirror","generateIdFn","remoteId","idToRemoteMap","remoteToIdMap","idToRemoteIdMap","getIdToRemoteIdMap","remoteIdToIdMap","getRemoteIdToIdMap","getRemoteId","getRemoteIds","ids","iframeIdToRemoteIdMap","iframeRemoteIdToIdMap","IframeManager","wrappedEmit","recordCrossOriginIframes","crossOriginIframeStyleMirror","iframes","crossOriginIframeMap","addLoadListener","loadListener","isAttachIframe","crossOriginMessageEvent","transformedEvent","transformCrossOriginEvent","isCheckout","FullSnapshot","crossOriginIframeMirror","replaceIdOnNode","crossOriginIframeRootIdMap","patchRootIdOnNode","timestamp","IncrementalSnapshot","Mutation","Meta","Load","DomContentLoaded","Plugin","Custom","replaceIds","ViewportResize","MediaInteraction","MouseInteraction","Scroll","CanvasMutation","StyleSheetRule","StyleDeclaration","replaceStyleIds","Font","Selection","AdoptedStyleSheet","styles","iframeMirror","ShadowDomManager","WeakSet","patchAttachShadow","shadowDoms","restoreHandlers","iframeElement","manager","option","sRoot","chars","lookup","i$1","canvasVarMap","saveWebGLVar","isInstanceOfWebGLObject","list2","ctor","contextMap","variableListFor$1","serializeArg","Float32Array","Float64Array","Int32Array","Uint16Array","Int16Array","Int8Array","Uint8ClampedArray","rr_type","base64","arraybuffer","bytes","DataView","byteOffset","byteLength","HTMLImageElement","ImageData","serializeArgs","supportedWebGLConstructorNames","initCanvasContextObserver","setPreserveDrawingBufferToTrue","contextType","ctxName","getNormalizedContextName","contextAttributes","preserveDrawingBuffer","patchGLPrototype","getOwnPropertyNames","recordArgs","hookHandler","setter","encodedJs","WorkerWrapper","objURL","webkitURL","worker","Worker","revokeObjectURL","CanvasManager","latestId","invokeId","rafStamps","pendingCanvasMutations","initCanvasMutationObserver","initCanvasFPSObserver","resetObservers","fps","canvasContextReset","snapshotInProgressMap","onmessage","commands","timeBetweenSnapshots","rafId","lastSnapshotTime","takeCanvasSnapshots","matchedCanvas","getCanvas","getContextAttributes","COLOR_BUFFER_BIT","bitmap","createImageBitmap","startRAFTimestamping","startPendingCanvasMutationFlusher","canvas2DReset","props2D","CanvasRenderingContext2D","initCanvas2DMutationObserver","canvasWebGL1and2Reset","WebGLRenderingContext","WebGL","WebGL2RenderingContext","WebGL2","initCanvasWebGLMutationObserver","flushPendingCanvasMutations","setLatestRAFTimestamp","_values","flushPendingCanvasMutationFor","valuesWithType","type2","StylesheetManager","adoptedStyleSheetCb","linkEl","trackedLinkElements","trackStylesheetInLinkElement","adoptedStyleSheetData","styleIds","CSSRule","r2","_linkEl","ProcessedNodeManager","thisBuffer","buffers","nodeMap","active","takeFullSnapshot$1","recording","cleanFrame","debug","record","checkoutEveryNms","checkoutEveryNth","maskAllInputs","_maskInputOptions","_slimDOMOptions","packFn","mousemoveWait","recordAfter","errorHandler2","inEmittingFrame","passEmitsToParent","month","search","tel","week","select","password","lastFullSnapshotEvent","NodeList","DOMTokenList","polyfill$1","incrementalSnapshotCount","eventProcessor","exceedCount","exceedTime","wrappedMutationEmit","wrappedScrollEmit","wrappedCanvasMutationEmit","getMirror","nodeMirror","slimDOM","snapshot","initialOffset","CustomElement","t2","addCustomEvent","tag","freezePage","takeFullSnapshot","NotStarted","Running","Stopped","customOptions","stopFunction","ContextMenu","DblClick","Focus","Blur","rrwebEvent","stringifiedData","dataURIRegex","matchAll","ensureMaxMessageSize","bufferSize","ScreenDrawer","svgElement","minHeight","mouseDown","colorpicker","fadeOutToolbar","tool","mouseDownPen","mouseDownRect","mouseMove","mouseMovePen","mouseMoveRect","mouseUp","fadeInToolbar","mouseUpPen","mouseUpRect","appendToBuffer","getMousePosition","updateSvgPath","w","abs","startPoint","setAttributeNS","createElementNS","strokeWidthRect","appendPathToSvg","strokeWidth","pt","strPath","touches","totalX","totalY","getAveragePoint","tmpPath","pathBuffer","fadeTarget","GleapScrollStopper","supportsPassive","wheelOpt","scrollDisabled","wheelEvent","preventDefaultForScrollKeys","keyCode","showWidgetUI","formKey","dirty","dialogUI","enableScroll","screenRecorder","unregisterListeners","cleanupMousePointer","screenDrawer","dialog","captureSVG","videoPreviewContainer","dismissUI","colorPicker","borderLayer","captureEditor","dragCursor","setMouseMove","mouseMoveEventHandler","touchMoveEventHandler","dragHandle","dragStart","drag","dragEnd","bugReportingEditor","translateText","pageLeaveListener","isEscape","isEnter","dismiss","showNextStep","returnValue","registerListeners","hideWidgetUI","createEditorUI","setupMousePointer","disableScroll","setupScreenRecording","captureScreenDrawerRerender","setupColorPicker","setupToolbar","selectedColor","colorItems","colorItem","hexColor","onclick","setColor","setPenColor","currentX","currentY","initialX","initialY","toolbar","isDragging","xOffset","yOffset","_getTransformValues","matrix","DOMMatrix","m41","m42","getTransformValues","nextButton","chooseTool","toolbarItem","toolbarTools","setTool","svgClone","toolbarItems","_loop2","toggleAudio","startScreenRecording","removeLastAddedPathFromSvg","itemInactiveClass","screenRecordingTooltip","audioRecordingTooltip","recordingClass","notRecordingClass","clearPreview","captureRenderer","penTips","fill","staticTranslation","staticTranslations","vars","template","localizationOptions","htmlLang","GleapShortcutListener","shortCutListener","char","keyIdentifier","ctrlKey","startFeedbackFlowWithOptions","autostartDrawing","GleapPreFillManager","unreadCount","notificationContainer","notificationsFromCache","unreadNotificationsKey","nots","notification","createdAt","notifications","renderNotifications","updateTabBarNotificationCount","sound","clearElem","currentNewsIndex","newsNotifications","news","otherNotifications","currentIndex","currentNews","newsElem","newsContainerElem","coverImageUrl","newsImageElem","stopPropagation","openNews","newsContentElem","newsTitleElem","getName","descHTML","renderDescription","descElem","paginationElem","pageIndicator","nextBtn","conversation","openConversation","checklist","openChecklist","progress","currentStep","totalSteps","nextStepTitle","sender","profileImageUrl","openNewsArticle","_notification$data","previewText","uiOnly","classLeft","classNoButton","_this$bannerUrl","_this$bannerData","_data$data2","_data$data3","_data$data4","_data$data5","_data$data6","_data$data7","_data$data8","_data$data9","_data$data10","bannerData","format","startBot","botId","startFeedbackFlow","formId","showSurvey","surveyFormat","articleId","openHelpCenterArticle","startChecklist","checklistId","bannerContainer","gleapBFrame","injectBannerUI","_listenForMessages","modalUrl","_this$modalUrl","_data$data11","modalData","primaryColor","_postMessage","modalContainer","wrapper","modalBackdropClickListener","_this2$modalData$show","_this2$modalData","showCloseButton","frame","_injectModalUI","play","settings","Audio","playPromise","getID","getClassSelectors","getClasses","cl","kCombinations","items","getNthChild","sibling","counter","getTag","isUnique","elems","getAllSelectors","attributesToIgnore","funcs","sum","getAttributes","res","testUniqueness","getFirstUnique","getUniqueCombination","combinations","getCombinations","firstUnique","combination","getUniqueSelector","selectorTypes","excludeRegex","foundSelector","elementSelectors","ID","Class","selectorType","Tag","Classes","Attributes","NthChild","unique","_step2","_options$selectorType","_options$attributesTo","_options$excludeRegex","allSelectors","parents","currentElement","getParents","_iterator2","_i","_allSelectors","ElementOverlay","overlay","background","borderColor","borderStyle","borderWidth","boxSizing","cursor","zIndex","margin","shadowContainer","attachShadow","_createClass","useShadowDOM","usingShadowDOM","setBounds","bounds","ElementPicker","overlayOptions","handleMouseMove","handleClick","tick","addToDOM","removeFromDOM","mouseX","mouseY","tickReq","stopImmediatePropagation","onClick","updateTarget","ignoreCursor","newTarget","elementFromPoint","captureCursor","elementFilter","onHover","GleapAdminHelper","picker","stopPicker","onElementPicked","startPicker","GleapAdminManager","COLLAPSE_UI_ACTIVE_CLASS","FRAME_CONTAINER_ACTIVE_CLASS","isActive","activeClass","gleapCollapseUI","toggle","injectedCollapseUI","toggleCollapseUI","_this$configData","configData","sendMessageToTourBuilder","GleapProductTours","disable","adminHelper","injectCollapseUI","setFrameHeight","gleapAdminDisabled","initAdminHelper","currentPage","click","opener","GleapTours","currentConfig","configure","animate","allowClose","overlayOpacity","smoothScroll","disableActiveInteraction","showProgress","stagePadding","stageRadius","popoverOffset","showButtons","disableButtons","overlayColor","getConfig","easeInOutQuad","elapsed","initialValue","amountOfChange","getFocusableElements","parentEls","focusableQuery","flatMap","parentEl","isParentFocusable","focusableEls","isElementVisible","bringInView","isElementInView","shouldSmoothScroll","scrollIntoView","behavior","hasScrollableParent","currentState","setState","getState","resetState","registeredListeners","listen","hook","trackActiveElement","activeStagePosition","renderOverlay","mountOverlay","stagePosition","overlaySvg","stage","windowX","windowY","svg","fillRule","clipRule","strokeLinejoin","strokeMiterlimit","stagePath","generateStageSvgPathString","createOverlaySvg","onDriverClick","pathElement","stageWidth","stageHeight","limitedRadius","normalizedRadius","highlightBoxX","highlightBoxY","highlightBoxWidth","highlightBoxHeight","highlight","attemptTime","elemObj","refactoredElement","hidePopover","existingDummy","getElementById","mountDummyElement","toElement","toStep","_toStep$disableActive","fromStep","fromElement","isFirstHighlight","isToDummyElement","isFromDummyElement","isAnimatedTour","highlightStartedHook","onHighlightStarted","highlightedHook","onHighlighted","deselectedHook","onDeselected","hasDelayedPopover","isPopoverRendered","isHalfwayThrough","popover","renderPopover","fromDefinition","toDefinition","transitionStage","transferHighlight","refreshActiveHighlight","activeHighlight","activeStep","refreshOverlay","repositionPopover","requireRefresh","resizeTimeout","trapFocus","activeElement","popoverEl","firstFocusableEl","lastFocusableEl","shiftKey","previousFocusableEl","nextFocusableEl","onKeyup","shouldPreventDefault","listenerWrapper","listener2","useCapture","title","description","closeButton","footer","footerButtons","previousButton","createPopover","_ref2$nextBtnText","nextBtnText","_ref2$prevBtnText","prevBtnText","_ref2$progressText","progressText","showButtonsConfig","showProgressConfig","showFooter","disabledButtonsConfig","popoverWrapper","customPopoverClass","popoverClass","_b2","onNextClick","onPrevClick","onCloseClick","onPopoverRender","focusableElement","getPopoverDimensions","boundingClientRect","realWidth","realHeight","calculateTopForLeftRight","elementDimensions","popoverDimensions","popoverPadding","popoverArrowDimensions","calculateLeftForTopBottom","_ref3$align","align","_ref3$side","requiredAlignment","requiredSide","topValue","isTopOptimal","bottomValue","isBottomOptimal","leftValue","isLeftOptimal","rightValue","isRightOptimal","noneOptimal","popoverRenderedSide","leftToSet","topToSet","leftValue2","rightToSet","bottomToSet","popoverArrow","popoverWidth","windowWidth","elementWidth","elementLeft","popoverHeight","windowHeight","elementTop","elementHeight","arrowSide","arrowAlignment","renderPopoverArrow","moveNext","activeIndex","steps","nextStepIndex","drive","movePrevious","previousStepIndex","handleArrowLeft","handleArrowRight","_f","_g","_h","stepIndex","hasNextStep","hasPreviousStep","doneBtnText","allowsClosing","progressTextReplaced","configuredButtons","calculatedButtons","withOnDestroyStartedHook","activeOnDestroyed","onDestroyStarted","onDestroyed","destroyPopover","destroyHighlight","isActiveDummyElement","setConfig","setSteps","getActiveIndex","isFirstStep","isLastStep","getActiveStep","getActiveElement","getPreviousElement","getPreviousStep","moveTo","localStorageKey","pointerContainerId","copilotJoinedContainerId","_canPlayAudio","GleapCopilotTours","_scrollListeners","_currentAnchor","_currentStep","_scrollDebounceTimer","productTourId","currentActiveIndex","productTourData","updatePointerPosition","onCompleteCallback","scrollableAncestors","getScrollableAncestors","_pointerContainer","yPosition","targetScrollPosition","scrollTo","smoothScrollToY","removeScrollListeners","pollCount","updateFinalPosition","isElementFullyVisible","targetX","targetY","containerWidthSpace","attachScrollListeners","currentAudio","pause","copilotInfoContainer","_GleapConfigManager$g","_GleapConfigManager$g2","_this$productTourData3","_this$productTourData4","_this$productTourData5","_this$productTourData6","_this$productTourData","_this$productTourData2","contrastColor","playVoice","gradient","svgMouse","infoBubble","kaiAvatar","kaiSlug","completeTour","canPlayAudio","supported","setupCopilotTour","showUnmuteModal","showAudioUnmuteModal","renderNextStep","_this$productTourData7","_this$productTourData8","_this$productTourData9","modalOverlay","modal","unmuteModalTitle","unmuteButton","unmuteModalButton","startAnywayButton","unmuteModalContinue","_this7","handleStep","gotToNextStep","_currentStep$inputTyp","proceedClickmode","storeUncompletedTour","inputType","handleInputEvent","_e$target","once","_currentStep$inputVal","inputValue","typeCharacter","wave","performClickAnimation","tempDiv","htmlToPlainText","readTime","wordCount","ceil","estimateReadTime","continueWithNoAudio","voice","elementPromise","maxAttempts","attempts","interval","waitForElement","_self$productTourData","tourType","gleapTourObj","delay","manually","validateProductTour","onComplete","comData","clearUncompletedTour","startWithConfig","unmuted","driverSteps","isClickMode","isInputMode","hasSender","videoUrl","senderHTML","firstName","driverStep","buttons","backButton","allowKeyboardControl","nextText","doneText","prevText","_config$state","onDocumentClick","popoverElement","mediaElements","performRequentialRefresh","mediaElement","playingClass","playPauseContainer","videoElement","videoContainer","clickVideo","evnt","gleapTourPopover","_evnt$target","__originalGetContext","GleapChecklist","_HTMLElement","_assertThisInitialized","_callSuper","handleChecklistUpdate","handleSessionUpdate","_networkManager","_boundFloatingLauncherClick","handleFloatingLauncherClick","_boundFloatingCloseClick","handleFloatingCloseClick","_floatingHideTimeout","_inherits","_boundHandleChecklistUpdate","_boundHandleSessionUpdate","_boundResizeHandler","handleResize","_checkSessionAndLoad","removeFloatingClickListeners","checklistData","_hasLoaded","_isSessionReady","_initialActiveSet","renderResponse","updateActiveTaskMaxHeight","loadChecklist","renderChecklist","_getGleapSessionInstance","hasChecklistId","defaultValue","translateTextWithVars","validateChecklist","_isMock","isConnected","fetchChecklist","_isInitialLoad","_this3$checklistData$","_data$outbound","completedSteps","firstIncompleteIndex","findIndex","_session$gleapId","_session$gleapHash","checkedStep","makeRequest","updateData","_this$checklistData$o3","previousCompletedSteps","dataChanged","activeStepCompleted","currentlyActiveStepIndex","_this$checklistData$o","activeStepId","_this$checklistData$o2","nextActiveStep","setActiveStep","tasks","launcher","_outbound$config","_this$checklistData","renderDoneState","progressbarEnabled","doneSteps","_outbound$config2","_outbound$config3","nextIncompleteStep","titleText","_translateWithVars","subject","subtitleText","successTitle","successMessage","circumference","PI","computedOffset","isHeader","toFixed","_outbound$sender","infoEnabled","_translate","senderHtml","progressLabel","durationLabel","isTaskDone","badge","getCheckIcon","stepTitle","stepDescription","actionButtonText","actionTitle","actionHtml","markDoneLabel","markDoneHtml","allowMarkDone","taskClasses","_outbound$config4","_outbound$config5","_outbound$config6","floatingEnabled","renderFloatingLauncher","renderInfoSection","renderProgressSection","renderTasks","addTaskEventListeners","addFloatingClickListeners","toggleTask","taskBodyInner","task","newActiveStep","markDoneBtn","_this5$checklistData","previouslyActiveStep","_this5$checklistData$","stepId","allSteps","isModalOpen","tasksModal","_this5$checklistData$2","updateChecklist","actionBtn","_this5$checklistData2","actionBody","openURL","actionOpenInNewTab","gleapError","previousActiveStep","tasksToToggle","forceOpen","taskElement","isOpen","shouldOpen","taskBody","_wrapNativeSuper","registerGleapChecklist","offlineMode","hostname","injectNotificationUI","actions","_action$data","popupType","disableInAppNotifications","showNotification","showBanner","showModal","startProductTourWithConfig","globalData","replayData","getReplayData","setTags","setUrlHandler","tools","setAiTools","updateContainerHeight","initialHeight","fixGleapHeight","checkForUncompletedTour","checkForUrlParams","urlParams","URLSearchParams","widget","conversationFlow","startConversation","feedbackFlow","surveyFlow","surveyFlowFormat","tourDelay","identifySession","updateSession","setMaxRequests","setOptions","cleanedData","formPreFill","toggleFeedbackButton","setAppVersionCode","setAppBuildNumber","setBannerUrl","setModalUrl","setTicketAttribute","unsetTicketAttribute","clearTicketAttributes","attachCustomData","setCustomData","removeCustomData","clearCustomData","playSound","showNotificationBadge","notificationInstance","setOverrideLanguage","softReInitialize","updateContact","registerCustomAction","buttonStyle","contrastButtonColor","contrastBackgroundColor","contrastHeaderColor","isDarkMode","headerDarkColor","subTextColor","backgroundColorHover","hoverHoverColor","buttonBorderRadius","containerRadius","chatRadius","formItemBorderRadius","formItemSmallBorderRadius","bottomInfoOffset","colorStyleSheet","zIndexBase","injectStyledCSS","replays","attachments","sendSilentCrashReportWithFormData","silentCrashReportSent","excludeDataCleaned","newFormData","hideBackButton","showBackButton","flow","collectionId","term","networkManager","checkStartUrl","startProductTourConfig","startURL","loadUncompletedTour","GleapActions","GLAction","urlParts","identifier","openHelpCenterCollection"],"sourceRoot":""} \ No newline at end of file diff --git a/build/esm/index.mjs b/build/esm/index.mjs index c521c792..4472b9ed 100644 --- a/build/esm/index.mjs +++ b/build/esm/index.mjs @@ -1,2 +1,2 @@ -var e={d:(t,n)=>{for(var o in n)e.o(n,o)&&!e.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:n[o]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function o(e,t){for(var n=0;nUm});var a=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),r(this,"feedbackButton",null),r(this,"injectedFeedbackButton",!1),r(this,"buttonHidden",null),r(this,"lastButtonIcon",null)}var t,n,i;return t=e,i=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],(n=[{key:"destroy",value:function(){this.feedbackButton&&(this.feedbackButton.remove(),this.feedbackButton=null),this.buttonHidden=null,this.lastButtonIcon=null,this.injectedFeedbackButton=!1,this.instance=null}},{key:"toggleFeedbackButton",value:function(t){this.buttonHidden=!t,e.getInstance().updateFeedbackButtonState(),Mh.getInstance().updateContainerStyle()}},{key:"feedbackButtonPressed",value:function(){var e=Vt.getInstance();e.isOpened()?e.hideWidget():(e.setAppMode("widget"),e.showWidget())}},{key:"injectFeedbackButton",value:function(){var e=this;if(!this.injectedFeedbackButton){this.injectedFeedbackButton=!0;var t=document.createElement("div");t.addEventListener("click",(function(){e.feedbackButtonPressed()})),document.body.appendChild(t),this.feedbackButton=t,this.updateFeedbackButtonState()}}},{key:"updateNotificationBadge",value:function(e){var t=document.querySelector(".bb-notification-bubble");if(t){var n="bb-notification-bubble--hidden";e>0&&!Vt.getInstance().isOpened()?(t.classList.remove(n),t.innerText=e):t.classList.add(n)}}},{key:"refresh",value:function(){document.querySelector(".bb-feedback-button")?(this.updateFeedbackButtonText(),this.updateFeedbackButtonState()):(this.injectedFeedbackButton=!1,this.feedbackButton=null,this.buttonHidden=null,this.lastButtonIcon=null,this.injectFeedbackButton())}},{key:"updateFeedbackButtonText",value:function(){var t=dt.getInstance().getFlowConfig();if(t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC||t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC_BOTTOM||t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC_LEFT){var n=document.querySelector(".bb-feedback-button-classic");n&&(n.innerText=t.widgetButtonText)}}},{key:"updateFeedbackButtonState",value:function(){if(null!==this.feedbackButton){var t=dt.getInstance().getFlowConfig(),n="";n=t.buttonLogo?''):p("button","#fff"),this.feedbackButton.className="bb-feedback-button gleap-font gl-block",this.feedbackButton.setAttribute("dir",gh.getInstance().isRTLLayout?"rtl":"ltr"),t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC||t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC_BOTTOM||t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC_LEFT?(this.feedbackButton.classList.add("bb-feedback-button--classic-button-style"),this.feedbackButton.innerHTML='
').concat(t.widgetButtonText,"
")):n!==this.lastButtonIcon&&(this.feedbackButton.innerHTML='
'.concat(n).concat(p("arrowdown","#fff"),'
')),this.lastButtonIcon=n;var o=!1;null===e.getInstance().buttonHidden?t.feedbackButtonPosition===e.FEEDBACK_BUTTON_NONE&&(o=!0):e.getInstance().buttonHidden&&(o=!0),o&&this.feedbackButton.classList.add("bb-feedback-button--disabled"),t.feedbackButtonPosition===e.FEEDBACK_BUTTON_BOTTOM_LEFT&&this.feedbackButton.classList.add("bb-feedback-button--bottomleft"),Vt.getInstance().isOpened()&&this.feedbackButton.classList.add("bb-feedback-button--open");var r=Vt.getInstance().appMode;"survey"!==r&&"survey_full"!==r&&"survey_web"!==r||this.feedbackButton.classList.add("bb-feedback-button--survey"),!0!==t.hideForGuests||et.getInstance().isUser()||this.feedbackButton.classList.add("bb-feedback-button--hidden")}}}])&&o(t.prototype,n),i&&o(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}();function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var o,r,i,a,s=[],l=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(o=i.call(n)).done)&&(s.push(o.value),s.length!==t);l=!0);}catch(e){c=!0,r=e}finally{try{if(!l&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(c)throw r}}return s}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return c(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return c(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n=160?"#000000":"#ffffff"},p=function(e,t){return"button"===e?'':"drag"===e?'\x3c!--!Font Awesome Pro 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2025 Fonticons, Inc.--\x3e':"unmute"===e?'':"mute"===e?'':"replay"===e?'\n \n ':"dismiss"===e?'':"blur"===e?'\n \n':"pen"===e?'\n \n \n \n \n \n \n \n \n \n \n \n \n':"rect"===e?'\n \n \n \n \n \n \n \n \n \n \n':"pointer"===e?'\n \n ':"clip"===e?'\n \n \n \n \n \n':"mic"===e?'\n \n \n \n \n ':"camera"===e?'\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n':"recorderon"===e?'\n \n \n \n \n \n \n \n \n \n \n \n':"recorderoff"===e?'\n \n \n \n \n \n \n \n \n ':"arrowdown"===e?'\n \n '):"arrowleft"===e?'\n \n '):"close"===e?'\n \n '):"undo"===e?'\n \n \n \n \n \n \n \n \n \n ':"circle-dot"===e?''):"circle-question"===e?''):"circle-info"===e?''):"circle-exclamation"===e?''):"circle-up"===e?''):"circle-right"===e?''):""};function h(e){return h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},h(e)}function f(e,t){for(var n=0;n0&&(e=e.concat(this.externalRequests)),this.filters&&this.filters.length>0)for(var t=0;t-1)&&!e.find((function(e){return e.url===s.name}))&&e.push({type:"RESOURCE",date:new Date(this.startTimestamp+s.startTime),url:s.name,duration:Math.round(s.duration),initiatorType:s.initiatorType})}}}catch(u){}var l=this.blacklist.concat(this.defaultBlacklist);if(l&&l.length>0)try{e=e.filter((function(e){for(var t=0;t70&&(e=70),this.maxRequests=e}},{key:"setStopped",value:function(e){this.stopped=e}},{key:"setFilters",value:function(e){this.filters=this.filters.concat(e||[])}},{key:"setBlacklist",value:function(e){this.blacklist=this.blacklist.concat(e||[])}},{key:"cleanRequests",value:function(){var e=Object.keys(this.requests);if(e.length>this.maxRequests)for(var t=e.slice(0,e.length-this.maxRequests),n=0;n.15?"":e}},{key:"cleanupPayload",value:function(e){if(null==e)return"{}";try{if(void 0!==("undefined"==typeof TextDecoder?"undefined":h(TextDecoder))&&ArrayBuffer.isView(e))return(new TextDecoder).decode(e)}catch(t){}return e}},{key:"preparePayload",value:function(e){var t=this.cleanupPayload(e);return this.cleanupContentSize(t)}},{key:"start",value:function(){var e=this;if(!this.initialized){this.initialized=!0;var t=this;this.interceptNetworkRequests({onFetch:function(n,o){if(!e.stopped&&o&&e.requests){if(n.length>0&&void 0!==n[0]&&void 0!==n[0].url)e.requests[o]={url:n[0].url,date:new Date,request:{payload:"",headers:void 0!==n[0].headers?Object.fromEntries(n[0].headers.entries()):{}},type:void 0!==n[0].method?n[0].method:""};else if(n.length>=2&&n[1]){var r=n[1]&&n[1].method?n[1].method:"GET";e.requests[o]={request:{payload:t.preparePayload(n[1].body),headers:n[1].headers},type:r,url:n[0],date:new Date}}else e.requests[o]={url:n[0],date:new Date};e.cleanRequests()}},onFetchLoad:function(n,o){if(!e.stopped&&o&&e.requests&&e.requests[o]){try{e.requests[o].success=!0,e.requests[o].response={status:n.status,statusText:"",responseText:""},e.calcRequestTime(o)}catch(i){}try{var r="";n.headers&&void 0!==n.headers.get&&(r=n.headers.get("content-type")),e.isContentTypeSupported(r)?n.text().then((function(r){e.requests[o]&&(e.requests[o].success=!0,e.requests[o].response={status:n.status,statusText:n.statusText,responseText:t.cleanupContentSize(r)}),e.calcRequestTime(o),e.cleanRequests()})).catch((function(t){e.cleanRequests()})):(e.requests[o]&&(e.requests[o].success=!0,e.requests[o].response={status:n.status,statusText:n.statusText,responseText:""}),e.calcRequestTime(o),e.cleanRequests())}catch(i){}}},onFetchFailed:function(t,n){!e.stopped&&n&&e.requests&&e.requests[n]&&(e.requests[n].success=!1,e.calcRequestTime(n),e.cleanRequests())},onOpen:function(t,n){e.stopped||(t&&t.bbRequestId&&n.length>=2&&e.requests&&(e.requests[t.bbRequestId]={type:n[0],url:n[1],date:new Date}),e.cleanRequests())},onSend:function(t,n){e.stopped||(t&&t.bbRequestId&&e.requests&&e.requests[t.bbRequestId]&&(e.requests[t.bbRequestId].request={payload:e.preparePayload(n.length>0?n[0]:"{}"),headers:t.requestHeaders}),e.cleanRequests())},onError:function(t,n){!e.stopped&&e.requests&&t&&t.currentTarget&&t.currentTarget.bbRequestId&&e.requests[t.currentTarget.bbRequestId]&&(e.requests[t.currentTarget.bbRequestId].success=!1,e.calcRequestTime(t.bbRequestId)),e.cleanRequests()},onLoad:function(t,n){if(!e.stopped){if(t&&t.currentTarget&&t.currentTarget.bbRequestId&&e.requests&&e.requests[t.currentTarget.bbRequestId]){var o=t.currentTarget,r=o.responseType,i="<"+r+">";""!==r&&"text"!==r||(i=e.cleanupContentSize(o.responseText)),e.requests[o.bbRequestId].success=!0,e.requests[o.bbRequestId].response={status:o.status,statusText:o.statusText,responseText:i},e.calcRequestTime(o.bbRequestId)}e.cleanRequests()}}})}}},{key:"interceptNetworkRequests",value:function(e){var t,n=this,o=XMLHttpRequest.prototype.open,r=XMLHttpRequest.prototype.send;return void 0===XMLHttpRequest.prototype.gleapSetRequestHeader&&(XMLHttpRequest.prototype.gleapSetRequestHeader=XMLHttpRequest.prototype.setRequestHeader),XMLHttpRequest.prototype.gleapSetRequestHeader&&(XMLHttpRequest.prototype.setRequestHeader=function(e,t){this.requestHeaders||(this.requestHeaders={}),this.requestHeaders&&this.requestHeaders.hasOwnProperty(e)||(this.requestHeaders[e]||(this.requestHeaders[e]=[]),this.requestHeaders[e].push(t),this.gleapSetRequestHeader(e,t))}),XMLHttpRequest.prototype.open=function(){return this.bbRequestId=++n.requestId,e.onOpen&&e.onOpen(this,arguments),e.onLoad&&this.addEventListener("load",e.onLoad.bind(e)),e.onError&&this.addEventListener("error",e.onError.bind(e)),o.apply(this,arguments)},XMLHttpRequest.prototype.send=function(){return e.onSend&&e.onSend(this,arguments),r.apply(this,arguments)},window.fetch&&(t=window.fetch,window.fetch=function(){var o=++n.requestId;return e.onFetch(arguments,o),t.apply(this,arguments).then((function(t){if(t&&"function"==typeof t.clone){var n=t.clone();e.onFetchLoad(n,o)}return t})).catch((function(t){throw e.onFetchFailed(t,o),t}))}),e}},{key:"blobToTextPromise",value:function(e){return new Promise((function(t,n){var o=new FileReader;o.onload=function(e){e&&e.target&&e.target.result?t(e.target.result):n()},o.onerror=function(e){n(e)},o.readAsText(e)}))}}],o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],n&&f(t.prototype,n),o&&f(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();m(v,"instance",void 0);const y=v;var b=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:400,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:400;return new Promise((function(o,r){var i=0===e.indexOf("data:image/jpeg"),a=new Image;a.src=e,a.onerror=function(){r()},a.onload=function(){var e=document.createElement("canvas"),r=t,s=n;t>a.width/1.5&&(r=a.width/1.5),n>a.height/1.5&&(s=a.height/1.5);var l=a.width,c=a.height;l>c?l>r&&(c*=r/l,l=r):c>s&&(l*=s/c,c=s),e.width=l,e.height=c,e.getContext("2d").drawImage(a,0,0,l,c),o(i?e.toDataURL("image/jpeg",.7):e.toDataURL())}}))},w=function(){return!(!/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(navigator.userAgent)&&!/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(navigator.userAgent.substr(0,4)))},k=function(e){if("string"==typeof e||e instanceof String)try{return JSON.parse(e)}catch(t){return{}}return e},x=function(e,t){return e.length>t?e.slice(0,t)+"...":e},S=function(e){try{var t=e.split("."),n=!1,o=t[t.length-2];return"co"!==o&&"com"!==o&&"gv"!==o&&"ac"!==o&&"edu"!==o&&"gov"!==o&&"mil"!==o&&"net"!==o&&"org"!==o||(n=!0),(t=t.slice(n?-3:-2)).join(".")}catch(r){}return e},C=function(e){try{var t=localStorage.getItem("gleap-widget-".concat(e));if(t)return JSON.parse(t)}catch(n){}return null},I=function(e,t){var n="gleap-widget-".concat(e);if(t)try{localStorage.setItem(n,JSON.stringify(t))}catch(o){}else localStorage.removeItem(n)},O=function(e){"complete"===document.readyState||"loaded"===document.readyState||"interactive"===document.readyState?e():document.addEventListener("DOMContentLoaded",(function(){e()}))};function E(e){return E="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},E(e)}function T(e,t){for(var n=0;n=200&&i.status<300)try{var e=i.responseText?JSON.parse(i.responseText):null;o(e)}catch(t){r({status:i.status,statusText:"JSON Parse Error",responseText:i.responseText,error:t})}else r({status:i.status,statusText:i.statusText,responseText:i.responseText})},i.onerror=function(){r({status:0,statusText:"Network Error",responseText:null})},i.send(n?JSON.stringify(n):null)}))}},{key:"_createCacheKey",value:function(e,t){return t?"".concat(e,"::").concat(t):e}},{key:"validateChecklist",value:function(e,t){var n=this,o=this._createCacheKey(e,t),r=this.validationCache.get(o);if(r)return r.status===M?Promise.resolve(r.internalId):Promise.reject(r.error);if(this.validationRequests.has(o))return this.validationRequests.get(o);var i=this._getApiUrl();if(!i){var a=new Error("ChecklistNetworkManager: Gleap API URL not configured.");return this.validationCache.set(o,{status:R,error:a}),Promise.reject(a)}var s="".concat(i,"/outbound/checklists?").concat(this._getQueryParams()),l=this._makeRequest("POST",s,{outboundId:e,sharedKey:t}).then((function(e){if(e&&e.id)return n.validationCache.set(o,{status:M,internalId:e.id}),e.id;var t=new Error("Validation response missing checklist ID.");throw n.validationCache.set(o,{status:R,error:e||t}),t})).catch((function(e){throw n.validationCache.set(o,{status:R,error:e}),e})).finally((function(){n.validationRequests.delete(o)}));return this.validationRequests.set(o,l),l}},{key:"fetchChecklist",value:function(e){var t=this,n=this.fetchCache.get(e);if(n)return n.status===M?Promise.resolve(JSON.parse(JSON.stringify(n.data))):Promise.reject(n.error);if(this.fetchRequests.has(e))return this.fetchRequests.get(e).then((function(e){return JSON.parse(JSON.stringify(e))}));var o=this._getApiUrl();if(!o){var r=new Error("ChecklistNetworkManager: Gleap API URL not configured.");return this.fetchCache.set(e,{status:R,error:r}),Promise.reject(r)}var i="".concat(o,"/outbound/checklists/").concat(e,"?convertTipTap=true&").concat(this._getQueryParams()),a=this._makeRequest("GET",i,null).then((function(n){if(n)return t.fetchCache.set(e,{status:M,data:n}),JSON.parse(JSON.stringify(n));var o=new Error("Empty response received for checklist fetch.");throw t.fetchCache.set(e,{status:R,error:n||o}),o})).catch((function(n){throw t.fetchCache.set(e,{status:R,error:n}),n})).finally((function(){t.fetchRequests.delete(e)}));return this.fetchRequests.set(e,a),a.then((function(e){return JSON.parse(JSON.stringify(e))}))}}],o=[{key:"getInstance",value:function(){return e.instance||(e.instance=new e),e.instance}}],n&&T(t.prototype,n),o&&T(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();L(P,"instance",null);const D=P,N=Math.min,j=Math.max,F=Math.round,B=Math.floor,_=e=>({x:e,y:e}),U={left:"right",right:"left",bottom:"top",top:"bottom"},H={start:"end",end:"start"};function z(e,t,n){return j(e,N(t,n))}function q(e,t){return"function"==typeof e?e(t):e}function W(e){return e.split("-")[0]}function G(e){return e.split("-")[1]}function V(e){return"x"===e?"y":"x"}function J(e){return"y"===e?"height":"width"}function Z(e){return["top","bottom"].includes(W(e))?"y":"x"}function K(e){return V(Z(e))}function Y(e){return e.replace(/start|end/g,(e=>H[e]))}function X(e){return e.replace(/left|right|bottom|top/g,(e=>U[e]))}function $(e){return"number"!=typeof e?function(e){return{top:0,right:0,bottom:0,left:0,...e}}(e):{top:e,right:e,bottom:e,left:e}}function Q(e){return{...e,top:e.y,left:e.x,right:e.x+e.width,bottom:e.y+e.height}}function ee(e,t,n){let{reference:o,floating:r}=e;const i=Z(t),a=K(t),s=J(a),l=W(t),c="y"===i,u=o.x+o.width/2-r.width/2,d=o.y+o.height/2-r.height/2,p=o[s]/2-r[s]/2;let h;switch(l){case"top":h={x:u,y:o.y-r.height};break;case"bottom":h={x:u,y:o.y+o.height};break;case"right":h={x:o.x+o.width,y:d};break;case"left":h={x:o.x-r.width,y:d};break;default:h={x:o.x,y:o.y}}switch(G(t)){case"start":h[a]-=p*(n&&c?-1:1);break;case"end":h[a]+=p*(n&&c?-1:1)}return h}async function te(e,t){var n;void 0===t&&(t={});const{x:o,y:r,platform:i,rects:a,elements:s,strategy:l}=e,{boundary:c="clippingAncestors",rootBoundary:u="viewport",elementContext:d="floating",altBoundary:p=!1,padding:h=0}=q(t,e),f=$(h),m=s[p?"floating"===d?"reference":"floating":d],g=Q(await i.getClippingRect({element:null==(n=await(null==i.isElement?void 0:i.isElement(m)))||n?m:m.contextElement||await(null==i.getDocumentElement?void 0:i.getDocumentElement(s.floating)),boundary:c,rootBoundary:u,strategy:l})),v="floating"===d?{...a.floating,x:o,y:r}:a.reference,y=await(null==i.getOffsetParent?void 0:i.getOffsetParent(s.floating)),b=await(null==i.isElement?void 0:i.isElement(y))&&await(null==i.getScale?void 0:i.getScale(y))||{x:1,y:1},w=Q(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:s,rect:v,offsetParent:y,strategy:l}):v);return{top:(g.top-w.top+f.top)/b.y,bottom:(w.bottom-g.bottom+f.bottom)/b.y,left:(g.left-w.left+f.left)/b.x,right:(w.right-g.right+f.right)/b.x}}const ne=function(e){return void 0===e&&(e=0),{name:"offset",options:e,async fn(t){var n,o;const{x:r,y:i,placement:a,middlewareData:s}=t,l=await async function(e,t){const{placement:n,platform:o,elements:r}=e,i=await(null==o.isRTL?void 0:o.isRTL(r.floating)),a=W(n),s=G(n),l="y"===Z(n),c=["left","top"].includes(a)?-1:1,u=i&&l?-1:1,d=q(t,e);let{mainAxis:p,crossAxis:h,alignmentAxis:f}="number"==typeof d?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...d};return s&&"number"==typeof f&&(h="end"===s?-1*f:f),l?{x:h*u,y:p*c}:{x:p*c,y:h*u}}(t,e);return a===(null==(n=s.offset)?void 0:n.placement)&&null!=(o=s.arrow)&&o.alignmentOffset?{}:{x:r+l.x,y:i+l.y,data:{...l,placement:a}}}}};function oe(e){return ae(e)?(e.nodeName||"").toLowerCase():"#document"}function re(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function ie(e){var t;return null==(t=(ae(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement}function ae(e){return e instanceof Node||e instanceof re(e).Node}function se(e){return e instanceof Element||e instanceof re(e).Element}function le(e){return e instanceof HTMLElement||e instanceof re(e).HTMLElement}function ce(e){return"undefined"!=typeof ShadowRoot&&(e instanceof ShadowRoot||e instanceof re(e).ShadowRoot)}function ue(e){const{overflow:t,overflowX:n,overflowY:o,display:r}=me(e);return/auto|scroll|overlay|hidden|clip/.test(t+o+n)&&!["inline","contents"].includes(r)}function de(e){return["table","td","th"].includes(oe(e))}function pe(e){const t=he(),n=me(e);return"none"!==n.transform||"none"!==n.perspective||!!n.containerType&&"normal"!==n.containerType||!t&&!!n.backdropFilter&&"none"!==n.backdropFilter||!t&&!!n.filter&&"none"!==n.filter||["transform","perspective","filter"].some((e=>(n.willChange||"").includes(e)))||["paint","layout","strict","content"].some((e=>(n.contain||"").includes(e)))}function he(){return!("undefined"==typeof CSS||!CSS.supports)&&CSS.supports("-webkit-backdrop-filter","none")}function fe(e){return["html","body","#document"].includes(oe(e))}function me(e){return re(e).getComputedStyle(e)}function ge(e){return se(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function ve(e){if("html"===oe(e))return e;const t=e.assignedSlot||e.parentNode||ce(e)&&e.host||ie(e);return ce(t)?t.host:t}function ye(e){const t=ve(e);return fe(t)?e.ownerDocument?e.ownerDocument.body:e.body:le(t)&&ue(t)?t:ye(t)}function be(e,t,n){var o;void 0===t&&(t=[]),void 0===n&&(n=!0);const r=ye(e),i=r===(null==(o=e.ownerDocument)?void 0:o.body),a=re(r);return i?t.concat(a,a.visualViewport||[],ue(r)?r:[],a.frameElement&&n?be(a.frameElement):[]):t.concat(r,be(r,[],n))}function we(e){const t=me(e);let n=parseFloat(t.width)||0,o=parseFloat(t.height)||0;const r=le(e),i=r?e.offsetWidth:n,a=r?e.offsetHeight:o,s=F(n)!==i||F(o)!==a;return s&&(n=i,o=a),{width:n,height:o,$:s}}function ke(e){return se(e)?e:e.contextElement}function xe(e){const t=ke(e);if(!le(t))return _(1);const n=t.getBoundingClientRect(),{width:o,height:r,$:i}=we(t);let a=(i?F(n.width):n.width)/o,s=(i?F(n.height):n.height)/r;return a&&Number.isFinite(a)||(a=1),s&&Number.isFinite(s)||(s=1),{x:a,y:s}}const Se=_(0);function Ce(e){const t=re(e);return he()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:Se}function Ie(e,t,n,o){void 0===t&&(t=!1),void 0===n&&(n=!1);const r=e.getBoundingClientRect(),i=ke(e);let a=_(1);t&&(o?se(o)&&(a=xe(o)):a=xe(e));const s=function(e,t,n){return void 0===t&&(t=!1),!(!n||t&&n!==re(e))&&t}(i,n,o)?Ce(i):_(0);let l=(r.left+s.x)/a.x,c=(r.top+s.y)/a.y,u=r.width/a.x,d=r.height/a.y;if(i){const e=re(i),t=o&&se(o)?re(o):o;let n=e,r=n.frameElement;for(;r&&o&&t!==n;){const e=xe(r),t=r.getBoundingClientRect(),o=me(r),i=t.left+(r.clientLeft+parseFloat(o.paddingLeft))*e.x,a=t.top+(r.clientTop+parseFloat(o.paddingTop))*e.y;l*=e.x,c*=e.y,u*=e.x,d*=e.y,l+=i,c+=a,n=re(r),r=n.frameElement}}return Q({width:u,height:d,x:l,y:c})}const Oe=[":popover-open",":modal"];function Ee(e){return Oe.some((t=>{try{return e.matches(t)}catch(n){return!1}}))}function Te(e){return Ie(ie(e)).left+ge(e).scrollLeft}function Le(e,t,n){let o;if("viewport"===t)o=function(e,t){const n=re(e),o=ie(e),r=n.visualViewport;let i=o.clientWidth,a=o.clientHeight,s=0,l=0;if(r){i=r.width,a=r.height;const e=he();(!e||e&&"fixed"===t)&&(s=r.offsetLeft,l=r.offsetTop)}return{width:i,height:a,x:s,y:l}}(e,n);else if("document"===t)o=function(e){const t=ie(e),n=ge(e),o=e.ownerDocument.body,r=j(t.scrollWidth,t.clientWidth,o.scrollWidth,o.clientWidth),i=j(t.scrollHeight,t.clientHeight,o.scrollHeight,o.clientHeight);let a=-n.scrollLeft+Te(e);const s=-n.scrollTop;return"rtl"===me(o).direction&&(a+=j(t.clientWidth,o.clientWidth)-r),{width:r,height:i,x:a,y:s}}(ie(e));else if(se(t))o=function(e,t){const n=Ie(e,!0,"fixed"===t),o=n.top+e.clientTop,r=n.left+e.clientLeft,i=le(e)?xe(e):_(1);return{width:e.clientWidth*i.x,height:e.clientHeight*i.y,x:r*i.x,y:o*i.y}}(t,n);else{const n=Ce(e);o={...t,x:t.x-n.x,y:t.y-n.y}}return Q(o)}function Ae(e,t){const n=ve(e);return!(n===t||!se(n)||fe(n))&&("fixed"===me(n).position||Ae(n,t))}function Me(e,t,n){const o=le(t),r=ie(t),i="fixed"===n,a=Ie(e,!0,i,t);let s={scrollLeft:0,scrollTop:0};const l=_(0);if(o||!o&&!i)if(("body"!==oe(t)||ue(r))&&(s=ge(t)),o){const e=Ie(t,!0,i,t);l.x=e.x+t.clientLeft,l.y=e.y+t.clientTop}else r&&(l.x=Te(r));return{x:a.left+s.scrollLeft-l.x,y:a.top+s.scrollTop-l.y,width:a.width,height:a.height}}function Re(e,t){return le(e)&&"fixed"!==me(e).position?t?t(e):e.offsetParent:null}function Pe(e,t){const n=re(e);if(!le(e)||Ee(e))return n;let o=Re(e,t);for(;o&&de(o)&&"static"===me(o).position;)o=Re(o,t);return o&&("html"===oe(o)||"body"===oe(o)&&"static"===me(o).position&&!pe(o))?n:o||function(e){let t=ve(e);for(;le(t)&&!fe(t);){if(pe(t))return t;t=ve(t)}return null}(e)||n}const De={convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{elements:t,rect:n,offsetParent:o,strategy:r}=e;const i="fixed"===r,a=ie(o),s=!!t&&Ee(t.floating);if(o===a||s&&i)return n;let l={scrollLeft:0,scrollTop:0},c=_(1);const u=_(0),d=le(o);if((d||!d&&!i)&&(("body"!==oe(o)||ue(a))&&(l=ge(o)),le(o))){const e=Ie(o);c=xe(o),u.x=e.x+o.clientLeft,u.y=e.y+o.clientTop}return{width:n.width*c.x,height:n.height*c.y,x:n.x*c.x-l.scrollLeft*c.x+u.x,y:n.y*c.y-l.scrollTop*c.y+u.y}},getDocumentElement:ie,getClippingRect:function(e){let{element:t,boundary:n,rootBoundary:o,strategy:r}=e;const i="clippingAncestors"===n?function(e,t){const n=t.get(e);if(n)return n;let o=be(e,[],!1).filter((e=>se(e)&&"body"!==oe(e))),r=null;const i="fixed"===me(e).position;let a=i?ve(e):e;for(;se(a)&&!fe(a);){const t=me(a),n=pe(a);n||"fixed"!==t.position||(r=null),(i?!n&&!r:!n&&"static"===t.position&&r&&["absolute","fixed"].includes(r.position)||ue(a)&&!n&&Ae(e,a))?o=o.filter((e=>e!==a)):r=t,a=ve(a)}return t.set(e,o),o}(t,this._c):[].concat(n),a=[...i,o],s=a[0],l=a.reduce(((e,n)=>{const o=Le(t,n,r);return e.top=j(o.top,e.top),e.right=N(o.right,e.right),e.bottom=N(o.bottom,e.bottom),e.left=j(o.left,e.left),e}),Le(t,s,r));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}},getOffsetParent:Pe,getElementRects:async function(e){const t=this.getOffsetParent||Pe,n=this.getDimensions;return{reference:Me(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,...await n(e.floating)}}},getClientRects:function(e){return Array.from(e.getClientRects())},getDimensions:function(e){const{width:t,height:n}=we(e);return{width:t,height:n}},getScale:xe,isElement:se,isRTL:function(e){return"rtl"===me(e).direction}};function Ne(e,t,n,o){void 0===o&&(o={});const{ancestorScroll:r=!0,ancestorResize:i=!0,elementResize:a="function"==typeof ResizeObserver,layoutShift:s="function"==typeof IntersectionObserver,animationFrame:l=!1}=o,c=ke(e),u=r||i?[...c?be(c):[],...be(t)]:[];u.forEach((e=>{r&&e.addEventListener("scroll",n,{passive:!0}),i&&e.addEventListener("resize",n)}));const d=c&&s?function(e,t){let n,o=null;const r=ie(e);function i(){var e;clearTimeout(n),null==(e=o)||e.disconnect(),o=null}return function a(s,l){void 0===s&&(s=!1),void 0===l&&(l=1),i();const{left:c,top:u,width:d,height:p}=e.getBoundingClientRect();if(s||t(),!d||!p)return;const h={rootMargin:-B(u)+"px "+-B(r.clientWidth-(c+d))+"px "+-B(r.clientHeight-(u+p))+"px "+-B(c)+"px",threshold:j(0,N(1,l))||1};let f=!0;function m(e){const t=e[0].intersectionRatio;if(t!==l){if(!f)return a();t?a(!1,t):n=setTimeout((()=>{a(!1,1e-7)}),100)}f=!1}try{o=new IntersectionObserver(m,{...h,root:r.ownerDocument})}catch(g){o=new IntersectionObserver(m,h)}o.observe(e)}(!0),i}(c,n):null;let p,h=-1,f=null;a&&(f=new ResizeObserver((e=>{let[o]=e;o&&o.target===c&&f&&(f.unobserve(t),cancelAnimationFrame(h),h=requestAnimationFrame((()=>{var e;null==(e=f)||e.observe(t)}))),n()})),c&&!l&&f.observe(c),f.observe(t));let m=l?Ie(e):null;return l&&function t(){const o=Ie(e);!m||o.x===m.x&&o.y===m.y&&o.width===m.width&&o.height===m.height||n();m=o,p=requestAnimationFrame(t)}(),n(),()=>{var e;u.forEach((e=>{r&&e.removeEventListener("scroll",n),i&&e.removeEventListener("resize",n)})),null==d||d(),null==(e=f)||e.disconnect(),f=null,l&&cancelAnimationFrame(p)}}const je=function(e){return void 0===e&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:o,placement:r}=t,{mainAxis:i=!0,crossAxis:a=!1,limiter:s={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...l}=q(e,t),c={x:n,y:o},u=await te(t,l),d=Z(W(r)),p=V(d);let h=c[p],f=c[d];if(i){const e="y"===p?"bottom":"right";h=z(h+u["y"===p?"top":"left"],h,h-u[e])}if(a){const e="y"===d?"bottom":"right";f=z(f+u["y"===d?"top":"left"],f,f-u[e])}const m=s.fn({...t,[p]:h,[d]:f});return{...m,data:{x:m.x-n,y:m.y-o}}}}},Fe=function(e){return void 0===e&&(e={}),{name:"flip",options:e,async fn(t){var n,o;const{placement:r,middlewareData:i,rects:a,initialPlacement:s,platform:l,elements:c}=t,{mainAxis:u=!0,crossAxis:d=!0,fallbackPlacements:p,fallbackStrategy:h="bestFit",fallbackAxisSideDirection:f="none",flipAlignment:m=!0,...g}=q(e,t);if(null!=(n=i.arrow)&&n.alignmentOffset)return{};const v=W(r),y=W(s)===s,b=await(null==l.isRTL?void 0:l.isRTL(c.floating)),w=p||(y||!m?[X(s)]:function(e){const t=X(e);return[Y(e),t,Y(t)]}(s));p||"none"===f||w.push(...function(e,t,n,o){const r=G(e);let i=function(e,t,n){const o=["left","right"],r=["right","left"],i=["top","bottom"],a=["bottom","top"];switch(e){case"top":case"bottom":return n?t?r:o:t?o:r;case"left":case"right":return t?i:a;default:return[]}}(W(e),"start"===n,o);return r&&(i=i.map((e=>e+"-"+r)),t&&(i=i.concat(i.map(Y)))),i}(s,m,f,b));const k=[s,...w],x=await te(t,g),S=[];let C=(null==(o=i.flip)?void 0:o.overflows)||[];if(u&&S.push(x[v]),d){const e=function(e,t,n){void 0===n&&(n=!1);const o=G(e),r=K(e),i=J(r);let a="x"===r?o===(n?"end":"start")?"right":"left":"start"===o?"bottom":"top";return t.reference[i]>t.floating[i]&&(a=X(a)),[a,X(a)]}(r,a,b);S.push(x[e[0]],x[e[1]])}if(C=[...C,{placement:r,overflows:S}],!S.every((e=>e<=0))){var I,O;const e=((null==(I=i.flip)?void 0:I.index)||0)+1,t=k[e];if(t)return{data:{index:e,overflows:C},reset:{placement:t}};let n=null==(O=C.filter((e=>e.overflows[0]<=0)).sort(((e,t)=>e.overflows[1]-t.overflows[1]))[0])?void 0:O.placement;if(!n)switch(h){case"bestFit":{var E;const e=null==(E=C.map((e=>[e.placement,e.overflows.filter((e=>e>0)).reduce(((e,t)=>e+t),0)])).sort(((e,t)=>e[1]-t[1]))[0])?void 0:E[0];e&&(n=e);break}case"initialPlacement":n=s}if(r!==n)return{reset:{placement:n}}}return{}}}},Be=e=>({name:"arrow",options:e,async fn(t){const{x:n,y:o,placement:r,rects:i,platform:a,elements:s,middlewareData:l}=t,{element:c,padding:u=0}=q(e,t)||{};if(null==c)return{};const d=$(u),p={x:n,y:o},h=K(r),f=J(h),m=await a.getDimensions(c),g="y"===h,v=g?"top":"left",y=g?"bottom":"right",b=g?"clientHeight":"clientWidth",w=i.reference[f]+i.reference[h]-p[h]-i.floating[f],k=p[h]-i.reference[h],x=await(null==a.getOffsetParent?void 0:a.getOffsetParent(c));let S=x?x[b]:0;S&&await(null==a.isElement?void 0:a.isElement(x))||(S=s.floating[b]||i.floating[f]);const C=w/2-k/2,I=S/2-m[f]/2-1,O=N(d[v],I),E=N(d[y],I),T=O,L=S-m[f]-E,A=S/2-m[f]/2+C,M=z(T,A,L),R=!l.arrow&&null!=G(r)&&A!==M&&i.reference[f]/2-(A{const o=new Map,r={platform:De,...n},i={...r.platform,_c:o};return(async(e,t,n)=>{const{placement:o="bottom",strategy:r="absolute",middleware:i=[],platform:a}=n,s=i.filter(Boolean),l=await(null==a.isRTL?void 0:a.isRTL(t));let c=await a.getElementRects({reference:e,floating:t,strategy:r}),{x:u,y:d}=ee(c,o,l),p=o,h={},f=0;for(let m=0;me.length)&&(t=e.length);for(var n=0,o=new Array(t);n'):""),i.appendChild(a),t.repositionHotspot(e,n),r=a,t.elementToTooltipMap.set(e,n)}else r=e;var s=t.createTooltip(r,n.html,n);t.elementToFloatingUIMap.set(e,s)}}})),Ge(this,"updateFilteredTooltips",(function(){t.filteredTooltips=t.getFilteredTooltips(),t.checkForTooltips()})),Ge(this,"getFilteredTooltips",(function(){if(!t.tooltips)return[];var e=window.location.href;return t.tooltips.filter((function(t){return!t.page||0===t.page.length||!!Ue(e,t.page,t.pageType)}))})),Ge(this,"checkForTooltips",(function(){for(var e=0;e0&&this.filteredTooltips.forEach((function(n){n.selector&&e.matches(n.selector)&&t.linkTooltip(e,n)}))}},{key:"start",value:function(){var e=this,t=this;if(window){var n,o,r,i=(n=t.updateHotspotPositions.bind(t),o=250,r=null,function(){if(!r){var e=this,t=arguments;r=setTimeout((function(){n.call.apply(n,[e].concat(ze(t))),r=null}),o)}});window.addEventListener("resize",i),window.requestAnimationFrame((function(){e.observer=new MutationObserver((function(n){t.lastUrl!==window.location.href&&(t.lastUrl=window.location.href,t.filteredTooltips=t.getFilteredTooltips()),n.forEach((function(n){if("attributes"===n.type){var o=n.target;o.nodeType===Node.ELEMENT_NODE&&(o.querySelector("[data-gleap-tooltip-hotspot]")||o.hasAttribute("data-gleap-tooltip-mode")||o.hasAttribute("data-gleap-tooltip"))&&t.updateHotspotPositions()}n.addedNodes.forEach((function(e){e.nodeType===Node.ELEMENT_NODE&&t.processNodeInsertion(e)})),n.removedNodes.forEach((function(t){if(t.nodeType===Node.ELEMENT_NODE&&e.elementToFloatingUIMap.has(t)){var n=e.elementToFloatingUIMap.get(t);n&&(n.tooltip&&n.tooltip.remove(),n.cleanup(),e.elementToFloatingUIMap.delete(t))}e.elementToTooltipMap.has(t)&&e.elementToTooltipMap.delete(t)}))}))})),e.observer.observe(document.body,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["style","class"]})}))}}},{key:"updateHotspotPositions",value:function(){var e=this;document.querySelectorAll("[data-gleap-tooltip-mode='hotspot']").forEach((function(t){var n=e.elementToTooltipMap.get(t);n&&e.repositionHotspot(t,n)}))}},{key:"createTooltip",value:function(e,t,n){var o=document.createElement("div");o.className="gleap-tooltip",o.innerHTML='
\n '.concat(t,'\n
\n \n \n \n
\n
'),document.body.appendChild(o);var r,i=o.querySelector(".gleap-tooltip-arrow"),a=Ne(e,o,(function(){_e(e,o,{placement:"left"===n.posX?"left":"right",middleware:[ne(10),Fe(),je(),Be({element:i})]}).then((function(e){var t=e.x,n=e.y,r=e.middlewareData,a=e.placement;try{if(Object.assign(o.style,{left:"".concat(t,"px"),top:"".concat(n,"px")}),r.arrow){var s={left:"",top:"",transform:""};null!=r.arrow.x&&(s.left="".concat(r.arrow.x,"px"),"bottom"===a?(s.transform="translateY(-7px) rotate(180deg)",s.top="".concat(-20,"px")):"top"===a&&(s.transform="translateY(7px) rotate(0deg)",s.top="100%")),null!=r.arrow.y&&(s.top="".concat(r.arrow.y,"px"),"right"===a?(s.transform="translateX(-7px) rotate(90deg)",s.left="".concat(-20,"px")):"left"===a&&(s.transform="translateX(7px) rotate(270deg)",s.left="100%")),Object.assign(i.style,s)}}catch(l){}}))}));function s(){clearTimeout(r),o.style.visibility="visible",o.style.opacity="1",o.style.pointerEvents="auto"}function l(){r=setTimeout((function(){o.style.opacity="0",setTimeout((function(){o.style.visibility="hidden",o.style.pointerEvents="none"}),200)}),500)}return e.addEventListener("mouseenter",s),e.addEventListener("mouseleave",l),o.addEventListener("mouseenter",s),o.addEventListener("mouseleave",l),{cleanup:a,tooltip:o}}},{key:"canEmbed",value:function(e){var t=new Set(["area","base","br","embed","hr","img","input","source","track","wbr","canvas"]);return e&&!t.has(e.tagName.toLowerCase())}},{key:"destroy",value:function(){this.observer&&(this.observer.disconnect(),this.observer=null),this.resizeListener&&(window.removeEventListener("resize",this.resizeListener),this.resizeListener=null),document.querySelectorAll(".gleap-tooltip").forEach((function(e){return e.remove()})),document.querySelectorAll("[data-gleap-tooltip-anchor]").forEach((function(e){return e.remove()})),document.querySelectorAll("[data-gleap-tooltip-hotspot]").forEach((function(e){return e.remove()})),document.querySelectorAll("[data-gleap-tooltip]").forEach((function(e){return e.removeAttribute("data-gleap-tooltip")})),document.querySelectorAll("[data-gleap-tooltip-mode]").forEach((function(e){return e.removeAttribute("data-gleap-tooltip-mode")})),this.elementToFloatingUIMap=new WeakMap,this.elementToTooltipMap=new WeakMap,this.tooltips=[],this.filteredTooltips=[]}},{key:"repositionHotspot",value:function(e,t){if(e&&t){var n=e.getAttribute("data-gleap-tooltip");if(n){var o=document.querySelector('[data-gleap-tooltip-hotspot="'.concat(n,'"]'));if(o){t.posX||(t.posX="right"),t.posY||(t.posY="center"),t.offsetX||(t.offsetX=4),t.offsetY||(t.offsetY=0);var r=e.getBoundingClientRect();try{var i=document.createRange();i.selectNodeContents(e);var a=window.getComputedStyle(e),s=i.getBoundingClientRect().width+parseFloat(a.paddingLeft);s0&&void 0!==arguments[0]?arguments[0]:0,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];t.session&&t.session.gleapHash&&xn.notifyEvent("unregister-pushmessage-group","gleapuser-".concat(t.session.gleapHash));try{I("session-".concat(t.sdkKey),null)}catch(r){}if(t.useCookies)try{!function(e){try{var t=S(window.location.host.split(":")[0]);document.cookie=e+"=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT; Domain="+t}catch(r){}}("session-".concat(t.sdkKey))}catch(r){}if(t.ready=!1,t.session={gleapId:null,gleapHash:null,name:"",email:"",userId:"",phone:"",value:0},Vt.getInstance().sendMessage({name:"session-cleared"},!0),Mh.getInstance().clearAllNotifications(!1),Mh.getInstance().setNotificationCount(0),Bh.getInstance().removeBannerUI(),Gh.getInstance().hideModal(),n&&!isNaN(e)){var o=10*Math.pow(e,2);setTimeout((function(){t.startSession(e+1)}),1e3*o)}})),$e(this,"validateSession",(function(e){var n;if(e&&e.gleapId){var o=!1;(null===(n=t.session)||void 0===n?void 0:n.gleapId)!==(null==e?void 0:e.gleapId)&&(o=!0),t.session&&t.session.gleapHash&&xn.notifyEvent("unregister-pushmessage-group","gleapuser-".concat(t.session.gleapHash)),I("session-".concat(t.sdkKey),e),t.useCookies&&function(e,t,n){try{var o="";if(n){var r=new Date;r.setTime(r.getTime()+24*n*60*60*1e3),o="; expires="+r.toUTCString()}var i=S(window.location.host.split(":")[0]);document.cookie=e+"="+(t||"")+o+"; path=/; domain="+i}catch(a){}}("session-".concat(t.sdkKey),encodeURIComponent(JSON.stringify(e)),365),t.session=e,t.ready=!0,t.session&&t.session.gleapHash&&xn.notifyEvent("register-pushmessage-group","gleapuser-".concat(t.session.gleapHash)),o&&(setTimeout((function(){D.getInstance().clearCache(),it.getInstance().restart();var e=Je.getInstance();if(e){try{e.destroy()}catch(t){}e.load()}}),0),"function"==typeof window.dispatchEvent&&window.dispatchEvent(new CustomEvent("session-updated"))),t.notifySessionReady()}})),$e(this,"startSession",(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;try{if(t.useCookies){var n=function(e){try{for(var t=e+"=",n=document.cookie.split(";"),o=0;o0)){var r=C("session-".concat(t.sdkKey));r&&t.validateSession(r)}var i=t,a=new XMLHttpRequest;a.open("POST",i.apiUrl+"/sessions"),a.setRequestHeader("Content-Type","application/json;charset=UTF-8"),a.setRequestHeader("Api-Token",i.sdkKey);try{t.session&&t.session.gleapId&&t.session.gleapHash&&(a.setRequestHeader("Gleap-Id",t.session.gleapId),a.setRequestHeader("Gleap-Hash",t.session.gleapHash))}catch(s){}a.onreadystatechange=function(t){if(4===a.readyState)if(200===a.status||201===a.status)try{var n=JSON.parse(a.responseText);i.validateSession(n)}catch(s){}else 429!==a.status&&i.clearSession(e,!0)},a.send(JSON.stringify({lang:gh.getInstance().getActiveLanguage()}))})),$e(this,"checkIfSessionNeedsUpdate",(function(e,n){if(!t.session||!t.session.userId||!e)return!0;try{if(t.session.userId.toString()!==e.toString())return!0}catch(o){}return t.checkIfSessionDataNeedsUpdate(n)})),$e(this,"checkIfSessionDataNeedsUpdate",(function(e){if(e)for(var n=Object.keys(e),o=0;o0)for(var e=0;e2)&&0!==t.streamedEventArray.length&&t.socket&&t.socket.readyState===t.socket.OPEN){var e=t;t.streamingEvents=!0;var n=new XMLHttpRequest;n.open("POST",et.getInstance().apiUrl+"/sessions/ping"),n.setRequestHeader("Content-Type","application/json;charset=UTF-8"),et.getInstance().injectSession(n),n.onerror=function(){e.errorCount++,e.streamingEvents=!1},n.onreadystatechange=function(t){4===n.readyState&&(200===n.status||201===n.status?e.errorCount=0:e.errorCount++,e.streamingEvents=!1)};var o=Xt.getInstance().getSessionDuration();n.send(JSON.stringify({time:o,events:t.streamedEventArray,opened:Vt.getInstance().isOpened(),type:"js",sdkVersion:"14.8.11",ws:!0})),t.streamedEventArray=[]}})),this.handleOpenBound=this.handleOpen.bind(this),this.handleErrorBound=this.handleError.bind(this),this.handleMessageBound=this.handleMessage.bind(this),this.handleCloseBound=this.handleClose.bind(this)}var t,n,o;return t=e,o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],(n=[{key:"cleanupWebSocket",value:function(){this.connectionTimeout&&(clearTimeout(this.connectionTimeout),this.connectionTimeout=null),this.pingWS&&clearInterval(this.pingWS),this.socket&&(this.socket.removeEventListener("open",this.handleOpenBound),this.socket.removeEventListener("error",this.handleErrorBound),this.socket.removeEventListener("message",this.handleMessageBound),this.socket.removeEventListener("close",this.handleCloseBound),this.socket.close(),this.socket=null)}},{key:"initWebSocket",value:function(){this.cleanupWebSocket(),this.connectedWebSocketGleapId=et.getInstance().session.gleapId,et.getInstance().session&&et.getInstance().sdkKey&&(this.socket=new WebSocket("".concat(et.getInstance().wsApiUrl,"?gleapId=").concat(et.getInstance().session.gleapId,"&gleapHash=").concat(et.getInstance().session.gleapHash,"&apiKey=").concat(et.getInstance().sdkKey,"&sdkVersion=").concat("14.8.11")),this.socket.addEventListener("open",this.handleOpenBound),this.socket.addEventListener("message",this.handleMessageBound),this.socket.addEventListener("error",this.handleErrorBound),this.socket.addEventListener("close",this.handleCloseBound))}},{key:"handleOpen",value:function(e){var t=this;this.pingWS=setInterval((function(){t.socket.readyState===t.socket.OPEN&&(t.socket.send("PING"),t.socket.send(9))}),1e4),this.connectionTimeout&&(clearTimeout(this.connectionTimeout),this.connectionTimeout=null)}},{key:"handleMessage",value:function(e){this.processMessage(JSON.parse(e.data))}},{key:"handleError",value:function(e){}},{key:"handleClose",value:function(e){var t=this;setTimeout((function(){t.initWebSocket()}),5e3)}},{key:"processMessage",value:function(e){try{if("update"===e.name){var t=e.data,n=t.a,o=t.u,r=Vt.getInstance().isOpened();if(n){var i=["banner","modal"],a=n.filter((function(e){var t;return!r||i.includes(null==e||null===(t=e.actionType)||void 0===t?void 0:t.toLowerCase())}));_m.getInstance().performActions(a)}null!=o&&Mh.getInstance().setNotificationCount(o)}"checklist"===e.name&&null!=e&&e.data&&window&&"function"==typeof window.dispatchEvent&&window.dispatchEvent(new CustomEvent("checkListUpdate",{detail:e.data}))}catch(s){}}},{key:"getEventArray",value:function(){return this.eventArray}},{key:"stop",value:function(){this.cleanupMainLoop()}},{key:"resetErrorCountLoop",value:function(){var e=this;setInterval((function(){e.errorCount=0}),6e4)}},{key:"cleanupMainLoop",value:function(){this.mainLoopTimeout&&(clearInterval(this.mainLoopTimeout),this.mainLoopTimeout=null)}},{key:"restart",value:function(){this.connectedWebSocketGleapId!==et.getInstance().session.gleapId&&this.initWebSocket(),this.cleanupMainLoop(),this.trackInitialEvents(),this.runEventStreamLoop()}},{key:"start",value:function(){this.startPageListener(),this.resetErrorCountLoop()}},{key:"trackInitialEvents",value:function(){e.getInstance().logEvent("sessionStarted"),e.getInstance().logCurrentPage()}},{key:"logCurrentPage",value:function(){if(!_m.getInstance().disablePageTracking){var e=window.location.href;e&&e!==this.lastUrl&&(this.lastUrl=e,this.logEvent("pageView",{page:e}))}}},{key:"startPageListener",value:function(){var e=this;setInterval((function(){e.logCurrentPage()}),1e3)}},{key:"logEvent",value:function(e,t){var n={name:e,date:new Date};t&&(n.data=k(t)),this.eventArray.push(n),this.streamedEventArray.push(n),this.eventArray.length>this.eventMaxLength&&this.eventArray.shift(),this.streamedEventArray.length>this.eventMaxLength&&this.streamedEventArray.shift()}}])&&nt(t.prototype,n),o&&nt(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function at(e){return at="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},at(e)}function st(e,t){for(var n=0;n0)for(var e=0;e=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var l=o.call(a,"catchLoc"),c=o.call(a,"finallyLoc");if(l&&c){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&o.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),L(n),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var o=n.completion;if("throw"===o.type){var r=o.arg;L(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,o){return this.delegate={iterator:M(t),resultName:n,nextLoc:o},"next"===this.method&&(this.arg=e),g}},t}function ft(e,t,n,o,r,i,a){try{var s=e[i](a),l=s.value}catch(c){return void n(c)}s.done?t(l):Promise.resolve(l).then(o,r)}function mt(e){return function(){var t=this,n=arguments;return new Promise((function(o,r){var i=e.apply(t,n);function a(e){ft(i,o,r,a,s,"next",e)}function s(e){ft(i,o,r,a,s,"throw",e)}a(void 0)}))}}var gt=function(e){var t="",n=window.document.doctype;if(n&&(t=""),e&&e.childNodes&&e.childNodes.length>0)for(var o=0;o1?t-1:0),r=1;r0||t.scrollLeft>0)&&(s.setAttribute("bb-scrollpos",!0),s.setAttribute("bb-scrolltop",t.scrollTop),s.setAttribute("bb-scrollleft",t.scrollLeft)),"SELECT"!==d&&"TEXTAREA"!==d&&"INPUT"!==d||(h=t.value,("value"===t.getAttribute("gleap-ignore")||t.classList.contains("gl-mask"))&&(h=new Array(h.length+1).join("*")),s.setAttribute("bb-data-value",h),"checkbox"!==t.type&&"radio"!==t.type||!t.checked||s.setAttribute("bb-data-checked",!0))),r.appendChild(s),!t.shadowRoot){e.next=29;break}return f=n,n++,e.next=27,a(t.shadowRoot.firstChild,s,f);case 27:Ct(t.shadowRoot,s,f),void 0!==s.setAttribute&&s.setAttribute("bb-shadow-parent",f);case 29:return e.next=31,a(t.firstChild,s);case 31:case"end":return e.stop()}}),e,null,[[7,17]])})));return function(t,n,o){return e.apply(this,arguments)}}(),r=document.createDocumentFragment(),e.next=5,o(t,r);case 5:return(i=r.querySelector("head"))||(i=r),Ct(window.document,i),e.abrupt("return",r);case 9:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),Et=function(e){return new Promise(function(){var t=mt(ht().mark((function t(n,o){var r,i,a,s,l,c,u,d,p,h,f,m,g,v,y;return ht().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:for(r=window.document.querySelectorAll("style, link"),i=0;i0){for(c=l.childNodes;c.length>0;)l.parentNode.insertBefore(c[0],l);l.remove()}for(u=a.querySelectorAll("script, noscript"),i=0;i0?r.innerHTML=n.formatTime(e):(r.innerHTML="2:00",n.stopScreenRecording())}),1e3),this.mediaRecorder.ondataavailable=function(e){e.data.size>0&&o.push(e.data)},t.getVideoTracks()[0].onended=function(){n.prepareRecording(o)},this.mediaRecorder.onstop=function(){n.prepareRecording(o)},this.mediaRecorder.start(200),n.rerender()})),At(this,"prepareRecording",(function(e){var t=new Blob(e,{type:this.getSupportedMimeType()}),n=this.getSupportedMimeType(),o=n.includes("mp4")?"mp4":"webm";this.file=new File([t],"screen-recording.".concat(o),{type:n});var r=document.querySelector(".bb-capture-preview video");r&&(r.src=URL.createObjectURL(t),this.audioAvailable=!0,this.isRecording=!1,this.rerender())})),this.rerender=t,this.permissionErrorText=n,navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia||(this.available=!1),setTimeout((function(){o.rerender()}),100)}var t,n,o;return t=e,(n=[{key:"getSupportedMimeType",value:function(){for(var e=0,t=["video/webm","audio/webm","video/webm;codecs=vp8","video/webm;codecs=daala","video/webm;codecs=h264","audio/webm;codecs=opus","video/mp4"];e0&&(e.tags=t),this.excludeData)for(var n=Object.keys(this.excludeData),o=0;oe.length)&&(t=e.length);for(var n=0,o=new Array(t);n0)if(t){var n=window.open(e,"_blank");n&&n.focus()}else window.location.href=e})),Wt(this,"autoWhiteListCookieManager",(function(){window&&window.cmp_block_ignoredomains&&window.cmp_block_ignoredomains.concat(["messenger-app.gleap.io"])})),Wt(this,"injectFrame",(function(){t.injectedFrame||(t.injectedFrame=!0,t.autoWhiteListCookieManager(),O((function(){dt.getInstance().onConfigLoaded((function(){dt.getInstance().applyStylesFromConfig();var e=document.createElement("div");e.className="gleap-frame-container gleap-frame-container--hidden gl-block",e.innerHTML='
'),document.body.appendChild(e),t.gleapFrameContainer=e,t.gleapFrame=document.querySelector(".gleap-frame"),t.updateFrameStyle(),"widget"===t.appMode&&t.showFrameContainer(!0)}))})))})),Wt(this,"showImage",(function(e){O((function(){var t=document.createElement("div");t.className="gleap-image-view",t.innerHTML='
\n \n
'),document.body.appendChild(t);var n=function(){t.remove()};t.querySelector(".gleap-image-view-close").addEventListener("click",(function(){n()})),t.addEventListener("click",(function(e){e.target===t&&n()}))}))})),Wt(this,"updateFrameStyle",(function(){if(t.gleapFrameContainer){for(var e="gleap-frame-container--survey",n="gleap-frame-container--extended",o="gleap-frame-container--survey-full",r="gleap-frame-container--classic",i="gleap-frame-container--classic-left",s="gleap-frame-container--modern-left",l="gleap-frame-container--no-button",c=[r,i,n,s,l,e,o],u=0;u0&&void 0!==arguments[0]&&arguments[0];"survey_web"!==this.appMode&&(this.hideMarkerManager(),this.gleapFrameContainer&&(this.gleapFrameContainer.classList.add("gleap-frame-container--hidden"),this.gleapFrameContainer.classList.remove("gleap-frame-container--animate")),e&&this.sendMessage({name:"reset-routes",data:{}}),this.widgetOpened=!1,this.updateWidgetStatus(),a.getInstance().updateFeedbackButtonState(),xn.notifyEvent("close"),Mh.getInstance().reloadNotificationsFromCache(),this.unregisterEscListener(),"undefined"!=typeof window&&void 0!==window.focus&&window.focus())}},{key:"sendMessage",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];try{this.gleapFrame=document.querySelector(".gleap-frame"),this.comReady&&this.gleapFrame&&this.gleapFrame.contentWindow?this.gleapFrame.contentWindow.postMessage(JSON.stringify(e),"*"):t&&this.queue.push(e)}catch(n){}}},{key:"sendSessionUpdate",value:function(){this.sendMessage({name:"session-update",data:{sessionData:et.getInstance().getSession(),apiUrl:et.getInstance().apiUrl,sdkKey:et.getInstance().sdkKey}})}},{key:"sendConfigUpdate",value:function(){this.comReady&&(this.sendMessage({name:"config-update",data:{config:dt.getInstance().getFlowConfig(),aiTools:dt.getInstance().getAiTools(),overrideLanguage:gh.getInstance().getOverrideLanguage()}}),this.updateFrameStyle())}},{key:"showDrawingScreen",value:function(e){var t=this;this.hideWidget(),this.markerManager=new dh(e),this.markerManager.show((function(e){e||t.hideMarkerManager(),t.showWidget()}))}},{key:"workThroughQueue",value:function(){var e=Ht(this.queue);this.queue=[];for(var t=0;t0&&(n.tags=o),e.sendMessage({name:"collect-ticket-data",data:n})}if("height-update"===t.name){e.frameHeight=t.data;var r=document.querySelector(".gleap-frame-container-inner");"survey"!==e.appMode&&"survey_full"!==e.appMode&&"survey_web"!==e.appMode||!r||(r.style.maxHeight="".concat(e.frameHeight,"px"))}if("notify-event"===t.name&&xn.notifyEvent(t.data.type,t.data.data),"cleanup-drawings"===t.name&&e.hideMarkerManager(),"open-url"===t.name){var i=t.data,a=!!t.newTab;e.urlHandler(i,a)}var s;if("start-product-tour"===t.name&&_m.startProductTour(null===(s=t.data)||void 0===s?void 0:s.tourId,!0),"run-custom-action"===t.name&&Ln.triggerCustomAction(t.data,{shareToken:t.shareToken}),"close-widget"===t.name&&e.hideWidget(),"tool-execution"===t.name&&xn.notifyEvent("tool-execution",t.data),"send-feedback"===t.name){var l=t.data.formData,c=t.data.action,u=t.data.outboundId,d=t.data.spamToken;new _t(c.feedbackType,"MEDIUM",l,!1,c.excludeData,u,d).sendFeedback().then((function(t){if(e.sendMessage({name:"feedback-sent",data:t}),xn.notifyEvent("feedback-sent",l),u&&u.length>0){xn.notifyEvent("outbound-sent",{outboundId:u,outbound:c,formData:l});try{delete l.reportedBy}catch(n){}_m.trackEvent("outbound-".concat(u,"-submitted"),l)}})).catch((function(t){e.sendMessage({name:"feedback-sending-failed",data:"Something went wrong, please try again."}),xn.notifyEvent("error-while-sending")}))}"start-screen-drawing"===t.name&&e.showDrawingScreen(t.data)})),window.addEventListener("message",(function(t){if(t.origin===e.frameUrl||t.origin===Bh.getInstance().bannerUrl)try{for(var n=JSON.parse(t.data),o=0;o1&&void 0!==arguments[1]?arguments[1]:"INFO";!e||e.length<=0||(this.logArray.push({log:x(e,1e3),date:new Date,priority:t}),this.logArray.length>this.logMaxLength&&this.logArray.shift())}},{key:"addLogWithArgs",value:function(e,t){if(e&&!(e.length<=0)){var n="";try{for(var o=0;o1&&void 0!==arguments[1])||arguments[1],n=x(e.innerText||"",40).replace(/(\r\n|\n|\r)/gm,"").replace(/ +(?= )/g,""),o="",r="";if(void 0!==e.getAttribute){var i=e.getAttribute("id");i&&(o=' id="'.concat(i,'"'));var a=e.getAttribute("class");a&&(r=' class="'.concat(a,'"'))}var s=(e.tagName||"").toLowerCase(),l="<",c=">";return t||(l="[",c="]"),"".concat(l).concat(s).concat(o).concat(r).concat(c).concat(n).concat(l,"/").concat(s).concat(c)}(e.target),"CLICK")}}))}}],o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],n&&sn(t.prototype,n),o&&sn(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function hn(e){return hn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},hn(e)}function fn(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{};if("flow-started"===e){var n=_m.getInstance();n.setGlobalDataItem("webReplay",null),n.setGlobalDataItem("screenRecordingData",null),n.takeCurrentReplay()}var o=this.getInstance().eventListeners[e];if(o)for(var r=0;r((e,t,n)=>t in e?Mn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,"symbol"!=typeof t?t+"":t,n),Pn=Object.defineProperty,Dn=(e,t,n)=>((e,t,n)=>t in e?Pn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,"symbol"!=typeof t?t+"":t,n),Nn=(e=>(e[e.Document=0]="Document",e[e.DocumentType=1]="DocumentType",e[e.Element=2]="Element",e[e.Text=3]="Text",e[e.CDATA=4]="CDATA",e[e.Comment=5]="Comment",e))(Nn||{});const jn={Node:["childNodes","parentNode","parentElement","textContent"],ShadowRoot:["host","styleSheets"],Element:["shadowRoot","querySelector","querySelectorAll"],MutationObserver:[]},Fn={Node:["contains","getRootNode"],ShadowRoot:["getSelection"],Element:[],MutationObserver:["constructor"]},Bn={},_n=()=>!!globalThis.Zone;function Un(e){if(Bn[e])return Bn[e];const t=globalThis[e],n=t.prototype,o=e in jn?jn[e]:void 0,r=Boolean(o&&o.every((e=>{var t,o;return Boolean(null==(o=null==(t=Object.getOwnPropertyDescriptor(n,e))?void 0:t.get)?void 0:o.toString().includes("[native code]"))}))),i=e in Fn?Fn[e]:void 0,a=Boolean(i&&i.every((e=>{var t;return"function"==typeof n[e]&&(null==(t=n[e])?void 0:t.toString().includes("[native code]"))})));if(r&&a&&!_n())return Bn[e]=t.prototype,t.prototype;try{const o=document.createElement("iframe");document.body.appendChild(o);const r=o.contentWindow;if(!r)return t.prototype;const i=r[e].prototype;return document.body.removeChild(o),i?Bn[e]=i:n}catch{return n}}const Hn={};function zn(e,t,n){var o;const r=`${e}.${String(n)}`;if(Hn[r])return Hn[r].call(t);const i=Un(e),a=null==(o=Object.getOwnPropertyDescriptor(i,n))?void 0:o.get;return a?(Hn[r]=a,a.call(t)):t[n]}const qn={};function Wn(e,t,n){const o=`${e}.${String(n)}`;if(qn[o])return qn[o].bind(t);const r=Un(e)[n];return"function"!=typeof r?t[n]:(qn[o]=r,r.bind(t))}const Gn={childNodes:function(e){return zn("Node",e,"childNodes")},parentNode:function(e){return zn("Node",e,"parentNode")},parentElement:function(e){return zn("Node",e,"parentElement")},textContent:function(e){return zn("Node",e,"textContent")},contains:function(e,t){return Wn("Node",e,"contains")(t)},getRootNode:function(e){return Wn("Node",e,"getRootNode")()},host:function(e){return e&&"host"in e?zn("ShadowRoot",e,"host"):null},styleSheets:function(e){return e.styleSheets},shadowRoot:function(e){return e&&"shadowRoot"in e?zn("Element",e,"shadowRoot"):null},querySelector:function(e,t){return zn("Element",e,"querySelector")(t)},querySelectorAll:function(e,t){return zn("Element",e,"querySelectorAll")(t)},mutationObserver:function(){return Un("MutationObserver").constructor}};function Vn(e){return e.nodeType===e.ELEMENT_NODE}function Jn(e){const t=e&&"host"in e&&"mode"in e&&Gn.host(e)||null;return Boolean(t&&"shadowRoot"in t&&Gn.shadowRoot(t)===e)}function Zn(e){return"[object ShadowRoot]"===Object.prototype.toString.call(e)}function Kn(e){try{const n=e.rules||e.cssRules;if(!n)return null;let o=e.href;!o&&e.ownerNode&&e.ownerNode.ownerDocument&&(o=e.ownerNode.ownerDocument.location.href);const r=Array.from(n,(e=>Yn(e,o))).join("");return(t=r).includes(" background-clip: text;")&&!t.includes(" -webkit-background-clip: text;")&&(t=t.replace(/\sbackground-clip:\s*text;/g," -webkit-background-clip: text; background-clip: text;")),t}catch(n){return null}var t}function Yn(e,t){if(function(e){return"styleSheet"in e}(e)){let t;try{t=Kn(e.styleSheet)||function(e){const{cssText:t}=e;if(t.split('"').length<3)return t;const n=["@import",`url(${JSON.stringify(e.href)})`];return""===e.layerName?n.push("layer"):e.layerName&&n.push(`layer(${e.layerName})`),e.supportsText&&n.push(`supports(${e.supportsText})`),e.media.length&&n.push(e.media.mediaText),n.join(" ")+";"}(e)}catch(n){t=e.cssText}return e.styleSheet.href?so(t,e.styleSheet.href):t}{let n=e.cssText;return function(e){return"selectorText"in e}(e)&&e.selectorText.includes(":")&&(n=function(e){const t=/(\[(?:[\w-]+)[^\\])(:(?:[\w-]+)\])/gm;return e.replace(t,"$1\\$2")}(n)),t?so(n,t):n}}class Xn{constructor(){Dn(this,"idNodeMap",new Map),Dn(this,"nodeMetaMap",new WeakMap)}getId(e){var t;if(!e)return-1;return(null==(t=this.getMeta(e))?void 0:t.id)??-1}getNode(e){return this.idNodeMap.get(e)||null}getIds(){return Array.from(this.idNodeMap.keys())}getMeta(e){return this.nodeMetaMap.get(e)||null}removeNodeFromMap(e){const t=this.getId(e);this.idNodeMap.delete(t),e.childNodes&&e.childNodes.forEach((e=>this.removeNodeFromMap(e)))}has(e){return this.idNodeMap.has(e)}hasNode(e){return this.nodeMetaMap.has(e)}add(e,t){const n=t.id;this.idNodeMap.set(n,e),this.nodeMetaMap.set(e,t)}replace(e,t){const n=this.getNode(e);if(n){const e=this.nodeMetaMap.get(n);e&&this.nodeMetaMap.set(t,e)}this.idNodeMap.set(e,t)}reset(){this.idNodeMap=new Map,this.nodeMetaMap=new WeakMap}}function $n({element:e,maskInputOptions:t,tagName:n,type:o,value:r,maskInputFn:i}){let a=r||"";const s=o&&Qn(o);return(t[n.toLowerCase()]||s&&t[s])&&(a=i?i(a,e):"*".repeat(a.length)),a}function Qn(e){return e.toLowerCase()}const eo="__rrweb_original__";function to(e){const t=e.type;return e.hasAttribute("data-rr-is-password")?"password":t?Qn(t):null}function no(e,t){let n;try{n=new URL(e,t??window.location.href)}catch(r){return null}const o=n.pathname.match(/\.([0-9a-z]+)(?:$)/i);return(null==o?void 0:o[1])??null}const oo=/url\((?:(')([^']*)'|(")(.*?)"|([^)]*))\)/gm,ro=/^(?:[a-z+]+:)?\/\//i,io=/^www\..*/i,ao=/^(data:)([^,]*),(.*)/i;function so(e,t){return(e||"").replace(oo,((e,n,o,r,i,a)=>{const s=o||i||a,l=n||r||"";if(!s)return e;if(ro.test(s)||io.test(s))return`url(${l}${s}${l})`;if(ao.test(s))return`url(${l}${s}${l})`;if("/"===s[0])return`url(${l}${function(e){let t="";return t=e.indexOf("//")>-1?e.split("/").slice(0,3).join("/"):e.split("/")[0],t=t.split("?")[0],t}(t)+s}${l})`;const c=t.split("/"),u=s.split("/");c.pop();for(const t of u)"."!==t&&(".."===t?c.pop():c.push(t));return`url(${l}${c.join("/")}${l})`}))}function lo(e){return e.replace(/(\/\*[^*]*\*\/)|[\s;]/g,"")}function co(e,t){return function(e,t){const n=Array.from(t.childNodes),o=[];if(n.length>1&&e&&"string"==typeof e){const t=lo(e);for(let r=1;r=t.length);){let i=o(vo);if(","===i.slice(-1))i=wo(e,i.substring(0,i.length-1)),r.push(i);else{let o="";i=wo(e,i);let a=!1;for(;;){const e=t.charAt(n);if(""===e){r.push((i+o).trim());break}if(a)")"===e&&(a=!1);else{if(","===e){n+=1,r.push((i+o).trim());break}"("===e&&(a=!0)}o+=e,n+=1}}}return r.join(", ")}(e,o):"style"===n?so(o,xo(e)):"object"===t&&"data"===n?wo(e,o):o:wo(e,o):o}function Co(e,t,n){return("video"===e||"audio"===e)&&"autoplay"===t}function Io(e,t,n){if(!e)return!1;if(e.nodeType!==e.ELEMENT_NODE)return!!n&&Io(Gn.parentNode(e),t,n);for(let o=e.classList.length;o--;){const n=e.classList[o];if(t.test(n))return!0}return!!n&&Io(Gn.parentNode(e),t,n)}function Oo(e,t,n,o){let r;if(Vn(e)){if(r=e,!Gn.childNodes(r).length)return!1}else{if(null===Gn.parentElement(e))return!1;r=Gn.parentElement(e)}try{if("string"==typeof t){if(o){if(r.closest(`.${t}`))return!0}else if(r.classList.contains(t))return!0}else if(Io(r,t,o))return!0;if(n)if(o){if(r.closest(n))return!0}else if(r.matches(n))return!0}catch(i){}return!1}function Eo(e,t){const{doc:n,mirror:o,blockClass:r,blockSelector:i,needsMask:a,inlineStylesheet:s,maskInputOptions:l={},maskTextFn:c,maskInputFn:u,dataURLOptions:d={},inlineImages:p,recordCanvas:h,keepIframeSrcFn:f,newlyAddedElement:m=!1,cssCaptured:g=!1}=t,v=function(e,t){if(!t.hasNode(e))return;const n=t.getId(e);return 1===n?void 0:n}(n,o);switch(e.nodeType){case e.DOCUMENT_NODE:return"CSS1Compat"!==e.compatMode?{type:Nn.Document,childNodes:[],compatMode:e.compatMode}:{type:Nn.Document,childNodes:[]};case e.DOCUMENT_TYPE_NODE:return{type:Nn.DocumentType,name:e.name,publicId:e.publicId,systemId:e.systemId,rootId:v};case e.ELEMENT_NODE:return function(e,t){const{doc:n,blockClass:o,blockSelector:r,inlineStylesheet:i,maskInputOptions:a={},maskInputFn:s,dataURLOptions:l={},inlineImages:c,recordCanvas:u,keepIframeSrcFn:d,newlyAddedElement:p=!1,rootId:h}=t,f=function(e,t,n){try{if("string"==typeof t){if(e.classList.contains(t))return!0}else for(let n=e.classList.length;n--;){const o=e.classList[n];if(t.test(o))return!0}if(n)return e.matches(n)}catch(o){}return!1}(e,o,r),m=function(e){if(e instanceof HTMLFormElement)return"form";const t=Qn(e.tagName);return po.test(t)?"div":t}(e);let g={};const v=e.attributes.length;for(let w=0;wt.href===e.href));let o=null;t&&(o=Kn(t)),o&&(delete g.rel,delete g.href,g._cssText=o)}if("style"===m&&e.sheet){let t=Kn(e.sheet);t&&(e.childNodes.length>1&&(t=co(t,e)),g._cssText=t)}if("input"===m||"textarea"===m||"select"===m){const t=e.value,n=e.checked;"radio"!==g.type&&"checkbox"!==g.type&&"submit"!==g.type&&"button"!==g.type&&t?g.value=$n({element:e,type:to(e),tagName:m,value:t,maskInputOptions:a,maskInputFn:s}):n&&(g.checked=n)}"option"===m&&(e.selected&&!a.select?g.selected=!0:delete g.selected);"dialog"===m&&e.open&&(g.rr_open_mode=e.matches("dialog:modal")?"modal":"non-modal");if("canvas"===m&&u)if("2d"===e.__context)(function(e){const t=e.getContext("2d");if(!t)return!0;for(let n=0;n0!==e)))return!1}return!0})(e)||(g.rr_dataURL=e.toDataURL(l.type,l.quality));else if(!("__context"in e)){const t=e.toDataURL(l.type,l.quality),o=n.createElement("canvas");o.width=e.width,o.height=e.height;t!==o.toDataURL(l.type,l.quality)&&(g.rr_dataURL=t)}if("img"===m&&c){mo||(mo=n.createElement("canvas"),go=mo.getContext("2d"));const t=e,o=t.currentSrc||t.getAttribute("src")||"",r=t.crossOrigin,i=()=>{t.removeEventListener("load",i);try{mo.width=t.naturalWidth,mo.height=t.naturalHeight,go.drawImage(t,0,0),g.rr_dataURL=mo.toDataURL(l.type,l.quality)}catch(e){if("anonymous"!==t.crossOrigin)return t.crossOrigin="anonymous",void(t.complete&&0!==t.naturalWidth?i():t.addEventListener("load",i));console.warn(`Cannot inline img src=${o}! Error: ${e}`)}"anonymous"===t.crossOrigin&&(r?g.crossOrigin=r:t.removeAttribute("crossorigin"))};t.complete&&0!==t.naturalWidth?i():t.addEventListener("load",i)}if("audio"===m||"video"===m){const t=g;t.rr_mediaState=e.paused?"paused":"played",t.rr_mediaCurrentTime=e.currentTime,t.rr_mediaPlaybackRate=e.playbackRate,t.rr_mediaMuted=e.muted,t.rr_mediaLoop=e.loop,t.rr_mediaVolume=e.volume}p||(e.scrollLeft&&(g.rr_scrollLeft=e.scrollLeft),e.scrollTop&&(g.rr_scrollTop=e.scrollTop));if(f){const{width:t,height:n}=e.getBoundingClientRect();g={class:g.class,rr_width:`${t}px`,rr_height:`${n}px`}}"iframe"!==m||d(g.src)||(e.contentDocument||(g.rr_src=g.src),delete g.src);let y;try{customElements.get(m)&&(y=!0)}catch(b){}return{type:Nn.Element,tagName:m,attributes:g,childNodes:[],isSVG:ko(e)||void 0,needBlock:f,rootId:h,isCustom:y}}(e,{doc:n,blockClass:r,blockSelector:i,inlineStylesheet:s,maskInputOptions:l,maskInputFn:u,dataURLOptions:d,inlineImages:p,recordCanvas:h,keepIframeSrcFn:f,newlyAddedElement:m,rootId:v});case e.TEXT_NODE:return function(e,t){const{needsMask:n,maskTextFn:o,rootId:r,cssCaptured:i}=t,a=Gn.parentNode(e),s=a&&a.tagName;let l="";const c="STYLE"===s||void 0,u="SCRIPT"===s||void 0;u?l="SCRIPT_PLACEHOLDER":i||(l=Gn.textContent(e),c&&l&&(l=so(l,xo(t.doc))));!c&&!u&&l&&n&&(l=o?o(l,Gn.parentElement(e)):l.replace(/[\S]/g,"*"));return{type:Nn.Text,textContent:l||"",rootId:r}}(e,{doc:n,needsMask:a,maskTextFn:c,rootId:v,cssCaptured:g});case e.CDATA_SECTION_NODE:return{type:Nn.CDATA,textContent:"",rootId:v};case e.COMMENT_NODE:return{type:Nn.Comment,textContent:Gn.textContent(e)||"",rootId:v};default:return!1}}function To(e){return null==e?"":e.toLowerCase()}function Lo(e,t){const{doc:n,mirror:o,blockClass:r,blockSelector:i,maskTextClass:a,maskTextSelector:s,skipChild:l=!1,inlineStylesheet:c=!0,maskInputOptions:u={},maskTextFn:d,maskInputFn:p,slimDOMOptions:h,dataURLOptions:f={},inlineImages:m=!1,recordCanvas:g=!1,onSerialize:v,onIframeLoad:y,iframeLoadTimeout:b=5e3,onStylesheetLoad:w,stylesheetLoadTimeout:k=5e3,keepIframeSrcFn:x=(()=>!1),newlyAddedElement:S=!1,cssCaptured:C=!1}=t;let{needsMask:I}=t,{preserveWhiteSpace:O=!0}=t;if(!I){I=Oo(e,a,s,void 0===I)}const E=Eo(e,{doc:n,mirror:o,blockClass:r,blockSelector:i,needsMask:I,inlineStylesheet:c,maskInputOptions:u,maskTextFn:d,maskInputFn:p,dataURLOptions:f,inlineImages:m,recordCanvas:g,keepIframeSrcFn:x,newlyAddedElement:S,cssCaptured:C});if(!E)return console.warn(e,"not serialized"),null;let T;T=o.hasNode(e)?o.getId(e):function(e,t){if(t.comment&&e.type===Nn.Comment)return!0;if(e.type===Nn.Element){if(t.script&&("script"===e.tagName||"link"===e.tagName&&("preload"===e.attributes.rel||"modulepreload"===e.attributes.rel)&&"script"===e.attributes.as||"link"===e.tagName&&"prefetch"===e.attributes.rel&&"string"==typeof e.attributes.href&&"js"===no(e.attributes.href)))return!0;if(t.headFavicon&&("link"===e.tagName&&"shortcut icon"===e.attributes.rel||"meta"===e.tagName&&(To(e.attributes.name).match(/^msapplication-tile(image|color)$/)||"application-name"===To(e.attributes.name)||"icon"===To(e.attributes.rel)||"apple-touch-icon"===To(e.attributes.rel)||"shortcut icon"===To(e.attributes.rel))))return!0;if("meta"===e.tagName){if(t.headMetaDescKeywords&&To(e.attributes.name).match(/^description|keywords$/))return!0;if(t.headMetaSocial&&(To(e.attributes.property).match(/^(og|twitter|fb):/)||To(e.attributes.name).match(/^(og|twitter):/)||"pinterest"===To(e.attributes.name)))return!0;if(t.headMetaRobots&&("robots"===To(e.attributes.name)||"googlebot"===To(e.attributes.name)||"bingbot"===To(e.attributes.name)))return!0;if(t.headMetaHttpEquiv&&void 0!==e.attributes["http-equiv"])return!0;if(t.headMetaAuthorship&&("author"===To(e.attributes.name)||"generator"===To(e.attributes.name)||"framework"===To(e.attributes.name)||"publisher"===To(e.attributes.name)||"progid"===To(e.attributes.name)||To(e.attributes.property).match(/^article:/)||To(e.attributes.property).match(/^product:/)))return!0;if(t.headMetaVerification&&("google-site-verification"===To(e.attributes.name)||"yandex-verification"===To(e.attributes.name)||"csrf-token"===To(e.attributes.name)||"p:domain_verify"===To(e.attributes.name)||"verify-v1"===To(e.attributes.name)||"verification"===To(e.attributes.name)||"shopify-checkout-api-token"===To(e.attributes.name)))return!0}}return!1}(E,h)||!O&&E.type===Nn.Text&&!E.textContent.replace(/^\s+|\s+$/gm,"").length?ho:fo();const L=Object.assign(E,{id:T});if(o.add(e,L),T===ho)return null;v&&v(e);let A=!l;if(L.type===Nn.Element){A=A&&!L.needBlock,delete L.needBlock;const t=Gn.shadowRoot(e);t&&Zn(t)&&(L.isShadowHost=!0)}if((L.type===Nn.Document||L.type===Nn.Element)&&A){h.headWhitespace&&L.type===Nn.Element&&"head"===L.tagName&&(O=!1);const t={doc:n,mirror:o,blockClass:r,blockSelector:i,needsMask:I,maskTextClass:a,maskTextSelector:s,skipChild:l,inlineStylesheet:c,maskInputOptions:u,maskTextFn:d,maskInputFn:p,slimDOMOptions:h,dataURLOptions:f,inlineImages:m,recordCanvas:g,preserveWhiteSpace:O,onSerialize:v,onIframeLoad:y,iframeLoadTimeout:b,onStylesheetLoad:w,stylesheetLoadTimeout:k,keepIframeSrcFn:x,cssCaptured:!1};if(L.type===Nn.Element&&"textarea"===L.tagName&&void 0!==L.attributes.value);else{L.type===Nn.Element&&void 0!==L.attributes._cssText&&"string"==typeof L.attributes._cssText&&(t.cssCaptured=!0);for(const n of Array.from(Gn.childNodes(e))){const e=Lo(n,t);e&&L.childNodes.push(e)}}let S=null;if(Vn(e)&&(S=Gn.shadowRoot(e)))for(const e of Array.from(Gn.childNodes(S))){const n=Lo(e,t);n&&(Zn(S)&&(n.isShadow=!0),L.childNodes.push(n))}}const M=Gn.parentNode(e);return M&&Jn(M)&&Zn(M)&&(L.isShadow=!0),L.type===Nn.Element&&"iframe"===L.tagName&&function(e,t,n){const o=e.contentWindow;if(!o)return;let r,i=!1;try{r=o.document.readyState}catch(s){return}if("complete"!==r){const o=setTimeout((()=>{i||(t(),i=!0)}),n);return void e.addEventListener("load",(()=>{clearTimeout(o),i=!0,t()}))}const a="about:blank";if(o.location.href!==a||e.src===a||""===e.src)return setTimeout(t,0),e.addEventListener("load",t);e.addEventListener("load",t)}(e,(()=>{const t=e.contentDocument;if(t&&y){const n=Lo(t,{doc:t,mirror:o,blockClass:r,blockSelector:i,needsMask:I,maskTextClass:a,maskTextSelector:s,skipChild:!1,inlineStylesheet:c,maskInputOptions:u,maskTextFn:d,maskInputFn:p,slimDOMOptions:h,dataURLOptions:f,inlineImages:m,recordCanvas:g,preserveWhiteSpace:O,onSerialize:v,onIframeLoad:y,iframeLoadTimeout:b,onStylesheetLoad:w,stylesheetLoadTimeout:k,keepIframeSrcFn:x});n&&y(e,n)}}),b),L.type===Nn.Element&&"link"===L.tagName&&"string"==typeof L.attributes.rel&&("stylesheet"===L.attributes.rel||"preload"===L.attributes.rel&&"string"==typeof L.attributes.href&&"css"===no(L.attributes.href))&&function(e,t,n){let o,r=!1;try{o=e.sheet}catch(a){return}if(o)return;const i=setTimeout((()=>{r||(t(),r=!0)}),n);e.addEventListener("load",(()=>{clearTimeout(i),r=!0,t()}))}(e,(()=>{if(w){const t=Lo(e,{doc:n,mirror:o,blockClass:r,blockSelector:i,needsMask:I,maskTextClass:a,maskTextSelector:s,skipChild:!1,inlineStylesheet:c,maskInputOptions:u,maskTextFn:d,maskInputFn:p,slimDOMOptions:h,dataURLOptions:f,inlineImages:m,recordCanvas:g,preserveWhiteSpace:O,onSerialize:v,onIframeLoad:y,iframeLoadTimeout:b,onStylesheetLoad:w,stylesheetLoadTimeout:k,keepIframeSrcFn:x});t&&w(e,t)}}),k),L}function Ao(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function Mo(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var n=function e(){return this instanceof e?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,o.get?o:{enumerable:!0,get:function(){return e[t]}})})),n}var Ro={exports:{}},Po=String,Do=function(){return{isColorSupported:!1,reset:Po,bold:Po,dim:Po,italic:Po,underline:Po,inverse:Po,hidden:Po,strikethrough:Po,black:Po,red:Po,green:Po,yellow:Po,blue:Po,magenta:Po,cyan:Po,white:Po,gray:Po,bgBlack:Po,bgRed:Po,bgGreen:Po,bgYellow:Po,bgBlue:Po,bgMagenta:Po,bgCyan:Po,bgWhite:Po}};Ro.exports=Do(),Ro.exports.createColors=Do;var No=Ro.exports;const jo=Mo(Object.freeze(Object.defineProperty({__proto__:null,default:{}},Symbol.toStringTag,{value:"Module"})));let Fo=No,Bo=jo,_o=class e extends Error{constructor(t,n,o,r,i,a){super(t),this.name="CssSyntaxError",this.reason=t,i&&(this.file=i),r&&(this.source=r),a&&(this.plugin=a),void 0!==n&&void 0!==o&&("number"==typeof n?(this.line=n,this.column=o):(this.line=n.line,this.column=n.column,this.endLine=o.line,this.endColumn=o.column)),this.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(this,e)}setMessage(){this.message=this.plugin?this.plugin+": ":"",this.message+=this.file?this.file:"",void 0!==this.line&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason}showSourceCode(e){if(!this.source)return"";let t=this.source;null==e&&(e=Fo.isColorSupported),Bo&&e&&(t=Bo(t));let n,o,r=t.split(/\r?\n/),i=Math.max(this.line-3,0),a=Math.min(this.line+2,r.length),s=String(a).length;if(e){let{bold:e,gray:t,red:r}=Fo.createColors(!0);n=t=>e(r(t)),o=e=>t(e)}else n=o=e=>e;return r.slice(i,a).map(((e,t)=>{let r=i+1+t,a=" "+(" "+r).slice(-s)+" | ";if(r===this.line){let t=o(a.replace(/\d/g," "))+e.slice(0,this.column-1).replace(/[^\t]/g," ");return n(">")+o(a)+e+"\n "+t+n("^")}return" "+o(a)+e})).join("\n")}toString(){let e=this.showSourceCode();return e&&(e="\n\n"+e+"\n"),this.name+": "+this.message+e}};var Uo=_o;_o.default=_o;var Ho={};Ho.isClean=Symbol("isClean"),Ho.my=Symbol("my");const zo={after:"\n",beforeClose:"\n",beforeComment:"\n",beforeDecl:"\n",beforeOpen:" ",beforeRule:"\n",colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:!1};let qo=class{constructor(e){this.builder=e}atrule(e,t){let n="@"+e.name,o=e.params?this.rawValue(e,"params"):"";if(void 0!==e.raws.afterName?n+=e.raws.afterName:o&&(n+=" "),e.nodes)this.block(e,n+o);else{let r=(e.raws.between||"")+(t?";":"");this.builder(n+o+r,e)}}beforeAfter(e,t){let n;n="decl"===e.type?this.raw(e,null,"beforeDecl"):"comment"===e.type?this.raw(e,null,"beforeComment"):"before"===t?this.raw(e,null,"beforeRule"):this.raw(e,null,"beforeClose");let o=e.parent,r=0;for(;o&&"root"!==o.type;)r+=1,o=o.parent;if(n.includes("\n")){let t=this.raw(e,null,"indent");if(t.length)for(let e=0;e0&&"comment"===e.nodes[t].type;)t-=1;let n=this.raw(e,"semicolon");for(let o=0;o{if(o=e.raws[t],void 0!==o)return!1}))}var a;return void 0===o&&(o=zo[n]),i.rawCache[n]=o,o}rawBeforeClose(e){let t;return e.walk((e=>{if(e.nodes&&e.nodes.length>0&&void 0!==e.raws.after)return t=e.raws.after,t.includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1})),t&&(t=t.replace(/\S/g,"")),t}rawBeforeComment(e,t){let n;return e.walkComments((e=>{if(void 0!==e.raws.before)return n=e.raws.before,n.includes("\n")&&(n=n.replace(/[^\n]+$/,"")),!1})),void 0===n?n=this.raw(t,null,"beforeDecl"):n&&(n=n.replace(/\S/g,"")),n}rawBeforeDecl(e,t){let n;return e.walkDecls((e=>{if(void 0!==e.raws.before)return n=e.raws.before,n.includes("\n")&&(n=n.replace(/[^\n]+$/,"")),!1})),void 0===n?n=this.raw(t,null,"beforeRule"):n&&(n=n.replace(/\S/g,"")),n}rawBeforeOpen(e){let t;return e.walk((e=>{if("decl"!==e.type&&(t=e.raws.between,void 0!==t))return!1})),t}rawBeforeRule(e){let t;return e.walk((n=>{if(n.nodes&&(n.parent!==e||e.first!==n)&&void 0!==n.raws.before)return t=n.raws.before,t.includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1})),t&&(t=t.replace(/\S/g,"")),t}rawColon(e){let t;return e.walkDecls((e=>{if(void 0!==e.raws.between)return t=e.raws.between.replace(/[^\s:]/g,""),!1})),t}rawEmptyBody(e){let t;return e.walk((e=>{if(e.nodes&&0===e.nodes.length&&(t=e.raws.after,void 0!==t))return!1})),t}rawIndent(e){if(e.raws.indent)return e.raws.indent;let t;return e.walk((n=>{let o=n.parent;if(o&&o!==e&&o.parent&&o.parent===e&&void 0!==n.raws.before){let e=n.raws.before.split("\n");return t=e[e.length-1],t=t.replace(/\S/g,""),!1}})),t}rawSemicolon(e){let t;return e.walk((e=>{if(e.nodes&&e.nodes.length&&"decl"===e.last.type&&(t=e.raws.semicolon,void 0!==t))return!1})),t}rawValue(e,t){let n=e[t],o=e.raws[t];return o&&o.value===n?o.raw:n}root(e){this.body(e),e.raws.after&&this.builder(e.raws.after)}rule(e){this.block(e,this.rawValue(e,"selector")),e.raws.ownSemicolon&&this.builder(e.raws.ownSemicolon,e,"end")}stringify(e,t){if(!this[e.type])throw new Error("Unknown AST node type "+e.type+". Maybe you need to change PostCSS stringifier.");this[e.type](e,t)}};var Wo=qo;qo.default=qo;let Go=Wo;function Vo(e,t){new Go(t).stringify(e)}var Jo=Vo;Vo.default=Vo;let{isClean:Zo,my:Ko}=Ho,Yo=Uo,Xo=Wo,$o=Jo;function Qo(e,t){let n=new e.constructor;for(let o in e){if(!Object.prototype.hasOwnProperty.call(e,o))continue;if("proxyCache"===o)continue;let r=e[o],i=typeof r;"parent"===o&&"object"===i?t&&(n[o]=t):"source"===o?n[o]=r:Array.isArray(r)?n[o]=r.map((e=>Qo(e,n))):("object"===i&&null!==r&&(r=Qo(r)),n[o]=r)}return n}let er=class{constructor(e={}){this.raws={},this[Zo]=!1,this[Ko]=!0;for(let t in e)if("nodes"===t){this.nodes=[];for(let n of e[t])"function"==typeof n.clone?this.append(n.clone()):this.append(n)}else this[t]=e[t]}addToError(e){if(e.postcssNode=this,e.stack&&this.source&&/\n\s{4}at /.test(e.stack)){let t=this.source;e.stack=e.stack.replace(/\n\s{4}at /,`$&${t.input.from}:${t.start.line}:${t.start.column}$&`)}return e}after(e){return this.parent.insertAfter(this,e),this}assign(e={}){for(let t in e)this[t]=e[t];return this}before(e){return this.parent.insertBefore(this,e),this}cleanRaws(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between}clone(e={}){let t=Qo(this);for(let n in e)t[n]=e[n];return t}cloneAfter(e={}){let t=this.clone(e);return this.parent.insertAfter(this,t),t}cloneBefore(e={}){let t=this.clone(e);return this.parent.insertBefore(this,t),t}error(e,t={}){if(this.source){let{end:n,start:o}=this.rangeBy(t);return this.source.input.error(e,{column:o.column,line:o.line},{column:n.column,line:n.line},t)}return new Yo(e)}getProxyProcessor(){return{get:(e,t)=>"proxyOf"===t?e:"root"===t?()=>e.root().toProxy():e[t],set:(e,t,n)=>(e[t]===n||(e[t]=n,"prop"!==t&&"value"!==t&&"name"!==t&&"params"!==t&&"important"!==t&&"text"!==t||e.markDirty()),!0)}}markDirty(){if(this[Zo]){this[Zo]=!1;let e=this;for(;e=e.parent;)e[Zo]=!1}}next(){if(!this.parent)return;let e=this.parent.index(this);return this.parent.nodes[e+1]}positionBy(e,t){let n=this.source.start;if(e.index)n=this.positionInside(e.index,t);else if(e.word){let o=(t=this.toString()).indexOf(e.word);-1!==o&&(n=this.positionInside(o,t))}return n}positionInside(e,t){let n=t||this.toString(),o=this.source.start.column,r=this.source.start.line;for(let i=0;i"object"==typeof e&&e.toJSON?e.toJSON(null,t):e));else if("object"==typeof e&&e.toJSON)n[i]=e.toJSON(null,t);else if("source"===i){let o=t.get(e.input);null==o&&(o=r,t.set(e.input,r),r++),n[i]={end:e.end,inputId:o,start:e.start}}else n[i]=e}return o&&(n.inputs=[...t.keys()].map((e=>e.toJSON()))),n}toProxy(){return this.proxyCache||(this.proxyCache=new Proxy(this,this.getProxyProcessor())),this.proxyCache}toString(e=$o){e.stringify&&(e=e.stringify);let t="";return e(this,(e=>{t+=e})),t}warn(e,t,n){let o={node:this};for(let r in n)o[r]=n[r];return e.warn(t,o)}get proxyOf(){return this}};var tr=er;er.default=er;let nr=tr,or=class extends nr{constructor(e){e&&void 0!==e.value&&"string"!=typeof e.value&&(e={...e,value:String(e.value)}),super(e),this.type="decl"}get variable(){return this.prop.startsWith("--")||"$"===this.prop[0]}};var rr=or;or.default=or;var ir={nanoid:(e=21)=>{let t="",n=e;for(;n--;)t+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[64*Math.random()|0];return t},customAlphabet:(e,t=21)=>(n=t)=>{let o="",r=n;for(;r--;)o+=e[Math.random()*e.length|0];return o}};let{SourceMapConsumer:ar,SourceMapGenerator:sr}=jo,{existsSync:lr,readFileSync:cr}=jo,{dirname:ur,join:dr}=jo;let pr=class{constructor(e,t){if(!1===t.map)return;this.loadAnnotation(e),this.inline=this.startWith(this.annotation,"data:");let n=t.map?t.map.prev:void 0,o=this.loadMap(t.from,n);!this.mapFile&&t.from&&(this.mapFile=t.from),this.mapFile&&(this.root=ur(this.mapFile)),o&&(this.text=o)}consumer(){return this.consumerCache||(this.consumerCache=new ar(this.text)),this.consumerCache}decodeInline(e){if(/^data:application\/json;charset=utf-?8,/.test(e)||/^data:application\/json,/.test(e))return decodeURIComponent(e.substr(RegExp.lastMatch.length));if(/^data:application\/json;charset=utf-?8;base64,/.test(e)||/^data:application\/json;base64,/.test(e))return t=e.substr(RegExp.lastMatch.length),Buffer?Buffer.from(t,"base64").toString():window.atob(t);var t;let n=e.match(/data:application\/json;([^,]+),/)[1];throw new Error("Unsupported source map encoding "+n)}getAnnotationURL(e){return e.replace(/^\/\*\s*# sourceMappingURL=/,"").trim()}isMap(e){return"object"==typeof e&&("string"==typeof e.mappings||"string"==typeof e._mappings||Array.isArray(e.sections))}loadAnnotation(e){let t=e.match(/\/\*\s*# sourceMappingURL=/gm);if(!t)return;let n=e.lastIndexOf(t.pop()),o=e.indexOf("*/",n);n>-1&&o>-1&&(this.annotation=this.getAnnotationURL(e.substring(n,o)))}loadFile(e){if(this.root=ur(e),lr(e))return this.mapFile=e,cr(e,"utf-8").toString().trim()}loadMap(e,t){if(!1===t)return!1;if(t){if("string"==typeof t)return t;if("function"!=typeof t){if(t instanceof ar)return sr.fromSourceMap(t).toString();if(t instanceof sr)return t.toString();if(this.isMap(t))return JSON.stringify(t);throw new Error("Unsupported previous source map format: "+t.toString())}{let n=t(e);if(n){let e=this.loadFile(n);if(!e)throw new Error("Unable to load previous source map: "+n.toString());return e}}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){let t=this.annotation;return e&&(t=dr(ur(e),t)),this.loadFile(t)}}}startWith(e,t){return!!e&&e.substr(0,t.length)===t}withContent(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)}};var hr=pr;pr.default=pr;let{SourceMapConsumer:fr,SourceMapGenerator:mr}=jo,{fileURLToPath:gr,pathToFileURL:vr}=jo,{isAbsolute:yr,resolve:br}=jo,{nanoid:wr}=ir,kr=jo,xr=Uo,Sr=hr,Cr=Symbol("fromOffsetCache"),Ir=Boolean(fr&&mr),Or=Boolean(br&&yr),Er=class{constructor(e,t={}){if(null==e||"object"==typeof e&&!e.toString)throw new Error(`PostCSS received ${e} instead of CSS string`);if(this.css=e.toString(),"\ufeff"===this.css[0]||"￾"===this.css[0]?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,t.from&&(!Or||/^\w+:\/\//.test(t.from)||yr(t.from)?this.file=t.from:this.file=br(t.from)),Or&&Ir){let e=new Sr(this.css,t);if(e.text){this.map=e;let t=e.consumer().file;!this.file&&t&&(this.file=this.mapResolve(t))}}this.file||(this.id=""),this.map&&(this.map.file=this.from)}error(e,t,n,o={}){let r,i,a;if(t&&"object"==typeof t){let e=t,o=n;if("number"==typeof e.offset){let o=this.fromOffset(e.offset);t=o.line,n=o.col}else t=e.line,n=e.column;if("number"==typeof o.offset){let e=this.fromOffset(o.offset);i=e.line,a=e.col}else i=o.line,a=o.column}else if(!n){let e=this.fromOffset(t);t=e.line,n=e.col}let s=this.origin(t,n,i,a);return r=s?new xr(e,void 0===s.endLine?s.line:{column:s.column,line:s.line},void 0===s.endLine?s.column:{column:s.endColumn,line:s.endLine},s.source,s.file,o.plugin):new xr(e,void 0===i?t:{column:n,line:t},void 0===i?n:{column:a,line:i},this.css,this.file,o.plugin),r.input={column:n,endColumn:a,endLine:i,line:t,source:this.css},this.file&&(vr&&(r.input.url=vr(this.file).toString()),r.input.file=this.file),r}fromOffset(e){let t,n;if(this[Cr])n=this[Cr];else{let e=this.css.split("\n");n=new Array(e.length);let t=0;for(let o=0,r=e.length;o=t)o=n.length-1;else{let t,r=n.length-2;for(;o>1),e=n[t+1])){o=t;break}o=t+1}}return{col:e-n[o]+1,line:o+1}}mapResolve(e){return/^\w+:\/\//.test(e)?e:br(this.map.consumer().sourceRoot||this.map.root||".",e)}origin(e,t,n,o){if(!this.map)return!1;let r,i,a=this.map.consumer(),s=a.originalPositionFor({column:t,line:e});if(!s.source)return!1;"number"==typeof n&&(r=a.originalPositionFor({column:o,line:n})),i=yr(s.source)?vr(s.source):new URL(s.source,this.map.consumer().sourceRoot||vr(this.map.mapFile));let l={column:s.column,endColumn:r&&r.column,endLine:r&&r.line,line:s.line,url:i.toString()};if("file:"===i.protocol){if(!gr)throw new Error("file: protocol is not available in this PostCSS build");l.file=gr(i)}let c=a.sourceContentFor(s.source);return c&&(l.source=c),l}toJSON(){let e={};for(let t of["hasBOM","css","file","id"])null!=this[t]&&(e[t]=this[t]);return this.map&&(e.map={...this.map},e.map.consumerCache&&(e.map.consumerCache=void 0)),e}get from(){return this.file||this.id}};var Tr=Er;Er.default=Er,kr&&kr.registerInput&&kr.registerInput(Er);let{SourceMapConsumer:Lr,SourceMapGenerator:Ar}=jo,{dirname:Mr,relative:Rr,resolve:Pr,sep:Dr}=jo,{pathToFileURL:Nr}=jo,jr=Tr,Fr=Boolean(Lr&&Ar),Br=Boolean(Mr&&Pr&&Rr&&Dr);var _r=class{constructor(e,t,n,o){this.stringify=e,this.mapOpts=n.map||{},this.root=t,this.opts=n,this.css=o,this.originalCSS=o,this.usesFileUrls=!this.mapOpts.from&&this.mapOpts.absolute,this.memoizedFileURLs=new Map,this.memoizedPaths=new Map,this.memoizedURLs=new Map}addAnnotation(){let e;e=this.isInline()?"data:application/json;base64,"+this.toBase64(this.map.toString()):"string"==typeof this.mapOpts.annotation?this.mapOpts.annotation:"function"==typeof this.mapOpts.annotation?this.mapOpts.annotation(this.opts.to,this.root):this.outputFile()+".map";let t="\n";this.css.includes("\r\n")&&(t="\r\n"),this.css+=t+"/*# sourceMappingURL="+e+" */"}applyPrevMaps(){for(let e of this.previous()){let t,n=this.toUrl(this.path(e.file)),o=e.root||Mr(e.file);!1===this.mapOpts.sourcesContent?(t=new Lr(e.text),t.sourcesContent&&(t.sourcesContent=null)):t=e.consumer(),this.map.applySourceMap(t,n,this.toUrl(this.path(o)))}}clearAnnotation(){if(!1!==this.mapOpts.annotation)if(this.root){let e;for(let t=this.root.nodes.length-1;t>=0;t--)e=this.root.nodes[t],"comment"===e.type&&0===e.text.indexOf("# sourceMappingURL=")&&this.root.removeChild(t)}else this.css&&(this.css=this.css.replace(/\n*?\/\*#[\S\s]*?\*\/$/gm,""))}generate(){if(this.clearAnnotation(),Br&&Fr&&this.isMap())return this.generateMap();{let e="";return this.stringify(this.root,(t=>{e+=t})),[e]}}generateMap(){if(this.root)this.generateString();else if(1===this.previous().length){let e=this.previous()[0].consumer();e.file=this.outputFile(),this.map=Ar.fromSourceMap(e,{ignoreInvalidMapping:!0})}else this.map=new Ar({file:this.outputFile(),ignoreInvalidMapping:!0}),this.map.addMapping({generated:{column:0,line:1},original:{column:0,line:1},source:this.opts.from?this.toUrl(this.path(this.opts.from)):""});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]}generateString(){this.css="",this.map=new Ar({file:this.outputFile(),ignoreInvalidMapping:!0});let e,t,n=1,o=1,r="",i={generated:{column:0,line:0},original:{column:0,line:0},source:""};this.stringify(this.root,((a,s,l)=>{if(this.css+=a,s&&"end"!==l&&(i.generated.line=n,i.generated.column=o-1,s.source&&s.source.start?(i.source=this.sourcePath(s),i.original.line=s.source.start.line,i.original.column=s.source.start.column-1,this.map.addMapping(i)):(i.source=r,i.original.line=1,i.original.column=0,this.map.addMapping(i))),e=a.match(/\n/g),e?(n+=e.length,t=a.lastIndexOf("\n"),o=a.length-t):o+=a.length,s&&"start"!==l){let e=s.parent||{raws:{}};("decl"===s.type||"atrule"===s.type&&!s.nodes)&&s===e.last&&!e.raws.semicolon||(s.source&&s.source.end?(i.source=this.sourcePath(s),i.original.line=s.source.end.line,i.original.column=s.source.end.column-1,i.generated.line=n,i.generated.column=o-2,this.map.addMapping(i)):(i.source=r,i.original.line=1,i.original.column=0,i.generated.line=n,i.generated.column=o-1,this.map.addMapping(i)))}}))}isAnnotation(){return!!this.isInline()||(void 0!==this.mapOpts.annotation?this.mapOpts.annotation:!this.previous().length||this.previous().some((e=>e.annotation)))}isInline(){if(void 0!==this.mapOpts.inline)return this.mapOpts.inline;let e=this.mapOpts.annotation;return(void 0===e||!0===e)&&(!this.previous().length||this.previous().some((e=>e.inline)))}isMap(){return void 0!==this.opts.map?!!this.opts.map:this.previous().length>0}isSourcesContent(){return void 0!==this.mapOpts.sourcesContent?this.mapOpts.sourcesContent:!this.previous().length||this.previous().some((e=>e.withContent()))}outputFile(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"}path(e){if(this.mapOpts.absolute)return e;if(60===e.charCodeAt(0))return e;if(/^\w+:\/\//.test(e))return e;let t=this.memoizedPaths.get(e);if(t)return t;let n=this.opts.to?Mr(this.opts.to):".";"string"==typeof this.mapOpts.annotation&&(n=Mr(Pr(n,this.mapOpts.annotation)));let o=Rr(n,e);return this.memoizedPaths.set(e,o),o}previous(){if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk((e=>{if(e.source&&e.source.input.map){let t=e.source.input.map;this.previousMaps.includes(t)||this.previousMaps.push(t)}}));else{let e=new jr(this.originalCSS,this.opts);e.map&&this.previousMaps.push(e.map)}return this.previousMaps}setSourcesContent(){let e={};if(this.root)this.root.walk((t=>{if(t.source){let n=t.source.input.from;if(n&&!e[n]){e[n]=!0;let o=this.usesFileUrls?this.toFileUrl(n):this.toUrl(this.path(n));this.map.setSourceContent(o,t.source.input.css)}}}));else if(this.css){let e=this.opts.from?this.toUrl(this.path(this.opts.from)):"";this.map.setSourceContent(e,this.css)}}sourcePath(e){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(e.source.input.from):this.toUrl(this.path(e.source.input.from))}toBase64(e){return Buffer?Buffer.from(e).toString("base64"):window.btoa(unescape(encodeURIComponent(e)))}toFileUrl(e){let t=this.memoizedFileURLs.get(e);if(t)return t;if(Nr){let t=Nr(e).toString();return this.memoizedFileURLs.set(e,t),t}throw new Error("`map.absolute` option is not available in this PostCSS build")}toUrl(e){let t=this.memoizedURLs.get(e);if(t)return t;"\\"===Dr&&(e=e.replace(/\\/g,"/"));let n=encodeURI(e).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(e,n),n}};let Ur=tr,Hr=class extends Ur{constructor(e){super(e),this.type="comment"}};var zr=Hr;Hr.default=Hr;let qr,Wr,Gr,Vr,{isClean:Jr,my:Zr}=Ho,Kr=rr,Yr=zr,Xr=tr;function $r(e){return e.map((e=>(e.nodes&&(e.nodes=$r(e.nodes)),delete e.source,e)))}function Qr(e){if(e[Jr]=!1,e.proxyOf.nodes)for(let t of e.proxyOf.nodes)Qr(t)}let ei=class e extends Xr{append(...e){for(let t of e){let e=this.normalize(t,this.last);for(let t of e)this.proxyOf.nodes.push(t)}return this.markDirty(),this}cleanRaws(e){if(super.cleanRaws(e),this.nodes)for(let t of this.nodes)t.cleanRaws(e)}each(e){if(!this.proxyOf.nodes)return;let t,n,o=this.getIterator();for(;this.indexes[o]"proxyOf"===t?e:e[t]?"each"===t||"string"==typeof t&&t.startsWith("walk")?(...n)=>e[t](...n.map((e=>"function"==typeof e?(t,n)=>e(t.toProxy(),n):e))):"every"===t||"some"===t?n=>e[t](((e,...t)=>n(e.toProxy(),...t))):"root"===t?()=>e.root().toProxy():"nodes"===t?e.nodes.map((e=>e.toProxy())):"first"===t||"last"===t?e[t].toProxy():e[t]:e[t],set:(e,t,n)=>(e[t]===n||(e[t]=n,"name"!==t&&"params"!==t&&"selector"!==t||e.markDirty()),!0)}}index(e){return"number"==typeof e?e:(e.proxyOf&&(e=e.proxyOf),this.proxyOf.nodes.indexOf(e))}insertAfter(e,t){let n,o=this.index(e),r=this.normalize(t,this.proxyOf.nodes[o]).reverse();o=this.index(e);for(let i of r)this.proxyOf.nodes.splice(o+1,0,i);for(let i in this.indexes)n=this.indexes[i],o(t[Zr]||e.rebuild(t),(t=t.proxyOf).parent&&t.parent.removeChild(t),t[Jr]&&Qr(t),void 0===t.raws.before&&n&&void 0!==n.raws.before&&(t.raws.before=n.raws.before.replace(/\S/g,"")),t.parent=this.proxyOf,t)))}prepend(...e){e=e.reverse();for(let t of e){let e=this.normalize(t,this.first,"prepend").reverse();for(let t of e)this.proxyOf.nodes.unshift(t);for(let t in this.indexes)this.indexes[t]=this.indexes[t]+e.length}return this.markDirty(),this}push(e){return e.parent=this,this.proxyOf.nodes.push(e),this}removeAll(){for(let e of this.proxyOf.nodes)e.parent=void 0;return this.proxyOf.nodes=[],this.markDirty(),this}removeChild(e){let t;e=this.index(e),this.proxyOf.nodes[e].parent=void 0,this.proxyOf.nodes.splice(e,1);for(let n in this.indexes)t=this.indexes[n],t>=e&&(this.indexes[n]=t-1);return this.markDirty(),this}replaceValues(e,t,n){return n||(n=t,t={}),this.walkDecls((o=>{t.props&&!t.props.includes(o.prop)||t.fast&&!o.value.includes(t.fast)||(o.value=o.value.replace(e,n))})),this.markDirty(),this}some(e){return this.nodes.some(e)}walk(e){return this.each(((t,n)=>{let o;try{o=e(t,n)}catch(r){throw t.addToError(r)}return!1!==o&&t.walk&&(o=t.walk(e)),o}))}walkAtRules(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("atrule"===n.type&&e.test(n.name))return t(n,o)})):this.walk(((n,o)=>{if("atrule"===n.type&&n.name===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("atrule"===e.type)return t(e,n)})))}walkComments(e){return this.walk(((t,n)=>{if("comment"===t.type)return e(t,n)}))}walkDecls(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("decl"===n.type&&e.test(n.prop))return t(n,o)})):this.walk(((n,o)=>{if("decl"===n.type&&n.prop===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("decl"===e.type)return t(e,n)})))}walkRules(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("rule"===n.type&&e.test(n.selector))return t(n,o)})):this.walk(((n,o)=>{if("rule"===n.type&&n.selector===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("rule"===e.type)return t(e,n)})))}get first(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}get last(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}};ei.registerParse=e=>{qr=e},ei.registerRule=e=>{Wr=e},ei.registerAtRule=e=>{Gr=e},ei.registerRoot=e=>{Vr=e};var ti=ei;ei.default=ei,ei.rebuild=e=>{"atrule"===e.type?Object.setPrototypeOf(e,Gr.prototype):"rule"===e.type?Object.setPrototypeOf(e,Wr.prototype):"decl"===e.type?Object.setPrototypeOf(e,Kr.prototype):"comment"===e.type?Object.setPrototypeOf(e,Yr.prototype):"root"===e.type&&Object.setPrototypeOf(e,Vr.prototype),e[Zr]=!0,e.nodes&&e.nodes.forEach((e=>{ei.rebuild(e)}))};let ni,oi,ri=ti,ii=class extends ri{constructor(e){super({type:"document",...e}),this.nodes||(this.nodes=[])}toResult(e={}){return new ni(new oi,this,e).stringify()}};ii.registerLazyResult=e=>{ni=e},ii.registerProcessor=e=>{oi=e};var ai=ii;ii.default=ii;let si=class{constructor(e,t={}){if(this.type="warning",this.text=e,t.node&&t.node.source){let e=t.node.rangeBy(t);this.line=e.start.line,this.column=e.start.column,this.endLine=e.end.line,this.endColumn=e.end.column}for(let n in t)this[n]=t[n]}toString(){return this.node?this.node.error(this.text,{index:this.index,plugin:this.plugin,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text}};var li=si;si.default=si;let ci=li,ui=class{constructor(e,t,n){this.processor=e,this.messages=[],this.root=t,this.opts=n,this.css=void 0,this.map=void 0}toString(){return this.css}warn(e,t={}){t.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(t.plugin=this.lastPlugin.postcssPlugin);let n=new ci(e,t);return this.messages.push(n),n}warnings(){return this.messages.filter((e=>"warning"===e.type))}get content(){return this.css}};var di=ui;ui.default=ui;const pi="'".charCodeAt(0),hi='"'.charCodeAt(0),fi="\\".charCodeAt(0),mi="/".charCodeAt(0),gi="\n".charCodeAt(0),vi=" ".charCodeAt(0),yi="\f".charCodeAt(0),bi="\t".charCodeAt(0),wi="\r".charCodeAt(0),ki="[".charCodeAt(0),xi="]".charCodeAt(0),Si="(".charCodeAt(0),Ci=")".charCodeAt(0),Ii="{".charCodeAt(0),Oi="}".charCodeAt(0),Ei=";".charCodeAt(0),Ti="*".charCodeAt(0),Li=":".charCodeAt(0),Ai="@".charCodeAt(0),Mi=/[\t\n\f\r "#'()/;[\\\]{}]/g,Ri=/[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g,Pi=/.[\r\n"'(/\\]/,Di=/[\da-f]/i;let Ni=ti,ji=class extends Ni{constructor(e){super(e),this.type="atrule"}append(...e){return this.proxyOf.nodes||(this.nodes=[]),super.append(...e)}prepend(...e){return this.proxyOf.nodes||(this.nodes=[]),super.prepend(...e)}};var Fi=ji;ji.default=ji,Ni.registerAtRule(ji);let Bi,_i,Ui=ti,Hi=class extends Ui{constructor(e){super(e),this.type="root",this.nodes||(this.nodes=[])}normalize(e,t,n){let o=super.normalize(e);if(t)if("prepend"===n)this.nodes.length>1?t.raws.before=this.nodes[1].raws.before:delete t.raws.before;else if(this.first!==t)for(let r of o)r.raws.before=t.raws.before;return o}removeChild(e,t){let n=this.index(e);return!t&&0===n&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[n].raws.before),super.removeChild(e)}toResult(e={}){return new Bi(new _i,this,e).stringify()}};Hi.registerLazyResult=e=>{Bi=e},Hi.registerProcessor=e=>{_i=e};var zi=Hi;Hi.default=Hi,Ui.registerRoot(Hi);let qi={comma:e=>qi.split(e,[","],!0),space:e=>qi.split(e,[" ","\n","\t"]),split(e,t,n){let o=[],r="",i=!1,a=0,s=!1,l="",c=!1;for(let u of e)c?c=!1:"\\"===u?c=!0:s?u===l&&(s=!1):'"'===u||"'"===u?(s=!0,l=u):"("===u?a+=1:")"===u?a>0&&(a-=1):0===a&&t.includes(u)&&(i=!0),i?(""!==r&&o.push(r.trim()),r="",i=!1):r+=u;return(n||""!==r)&&o.push(r.trim()),o}};var Wi=qi;qi.default=qi;let Gi=ti,Vi=Wi,Ji=class extends Gi{constructor(e){super(e),this.type="rule",this.nodes||(this.nodes=[])}get selectors(){return Vi.comma(this.selector)}set selectors(e){let t=this.selector?this.selector.match(/,\s*/):null,n=t?t[0]:","+this.raw("between","beforeOpen");this.selector=e.join(n)}};var Zi=Ji;Ji.default=Ji,Gi.registerRule(Ji);let Ki=rr,Yi=function(e,t={}){let n,o,r,i,a,s,l,c,u,d,p=e.css.valueOf(),h=t.ignoreErrors,f=p.length,m=0,g=[],v=[];function y(t){throw e.error("Unclosed "+t,m)}return{back:function(e){v.push(e)},endOfFile:function(){return 0===v.length&&m>=f},nextToken:function(e){if(v.length)return v.pop();if(m>=f)return;let t=!!e&&e.ignoreUnclosed;switch(n=p.charCodeAt(m),n){case gi:case vi:case bi:case wi:case yi:o=m;do{o+=1,n=p.charCodeAt(o)}while(n===vi||n===gi||n===bi||n===wi||n===yi);d=["space",p.slice(m,o)],m=o-1;break;case ki:case xi:case Ii:case Oi:case Li:case Ei:case Ci:{let e=String.fromCharCode(n);d=[e,e,m];break}case Si:if(c=g.length?g.pop()[1]:"",u=p.charCodeAt(m+1),"url"===c&&u!==pi&&u!==hi&&u!==vi&&u!==gi&&u!==bi&&u!==yi&&u!==wi){o=m;do{if(s=!1,o=p.indexOf(")",o+1),-1===o){if(h||t){o=m;break}y("bracket")}for(l=o;p.charCodeAt(l-1)===fi;)l-=1,s=!s}while(s);d=["brackets",p.slice(m,o+1),m,o],m=o}else o=p.indexOf(")",m+1),i=p.slice(m,o+1),-1===o||Pi.test(i)?d=["(","(",m]:(d=["brackets",i,m,o],m=o);break;case pi:case hi:r=n===pi?"'":'"',o=m;do{if(s=!1,o=p.indexOf(r,o+1),-1===o){if(h||t){o=m+1;break}y("string")}for(l=o;p.charCodeAt(l-1)===fi;)l-=1,s=!s}while(s);d=["string",p.slice(m,o+1),m,o],m=o;break;case Ai:Mi.lastIndex=m+1,Mi.test(p),o=0===Mi.lastIndex?p.length-1:Mi.lastIndex-2,d=["at-word",p.slice(m,o+1),m,o],m=o;break;case fi:for(o=m,a=!0;p.charCodeAt(o+1)===fi;)o+=1,a=!a;if(n=p.charCodeAt(o+1),a&&n!==mi&&n!==vi&&n!==gi&&n!==bi&&n!==wi&&n!==yi&&(o+=1,Di.test(p.charAt(o)))){for(;Di.test(p.charAt(o+1));)o+=1;p.charCodeAt(o+1)===vi&&(o+=1)}d=["word",p.slice(m,o+1),m,o],m=o;break;default:n===mi&&p.charCodeAt(m+1)===Ti?(o=p.indexOf("*/",m+2)+1,0===o&&(h||t?o=p.length:y("comment")),d=["comment",p.slice(m,o+1),m,o],m=o):(Ri.lastIndex=m+1,Ri.test(p),o=0===Ri.lastIndex?p.length-1:Ri.lastIndex-2,d=["word",p.slice(m,o+1),m,o],g.push(d),m=o)}return m++,d},position:function(){return m}}},Xi=zr,$i=Fi,Qi=zi,ea=Zi;const ta={empty:!0,space:!0};var na=class{constructor(e){this.input=e,this.root=new Qi,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:e,start:{column:1,line:1,offset:0}}}atrule(e){let t,n,o,r=new $i;r.name=e[1].slice(1),""===r.name&&this.unnamedAtrule(r,e),this.init(r,e[2]);let i=!1,a=!1,s=[],l=[];for(;!this.tokenizer.endOfFile();){if(t=(e=this.tokenizer.nextToken())[0],"("===t||"["===t?l.push("("===t?")":"]"):"{"===t&&l.length>0?l.push("}"):t===l[l.length-1]&&l.pop(),0===l.length){if(";"===t){r.source.end=this.getPosition(e[2]),r.source.end.offset++,this.semicolon=!0;break}if("{"===t){a=!0;break}if("}"===t){if(s.length>0){for(o=s.length-1,n=s[o];n&&"space"===n[0];)n=s[--o];n&&(r.source.end=this.getPosition(n[3]||n[2]),r.source.end.offset++)}this.end(e);break}s.push(e)}else s.push(e);if(this.tokenizer.endOfFile()){i=!0;break}}r.raws.between=this.spacesAndCommentsFromEnd(s),s.length?(r.raws.afterName=this.spacesAndCommentsFromStart(s),this.raw(r,"params",s),i&&(e=s[s.length-1],r.source.end=this.getPosition(e[3]||e[2]),r.source.end.offset++,this.spaces=r.raws.between,r.raws.between="")):(r.raws.afterName="",r.params=""),a&&(r.nodes=[],this.current=r)}checkMissedSemicolon(e){let t=this.colon(e);if(!1===t)return;let n,o=0;for(let r=t-1;r>=0&&(n=e[r],"space"===n[0]||(o+=1,2!==o));r--);throw this.input.error("Missed semicolon","word"===n[0]?n[3]+1:n[2])}colon(e){let t,n,o,r=0;for(let[i,a]of e.entries()){if(t=a,n=t[0],"("===n&&(r+=1),")"===n&&(r-=1),0===r&&":"===n){if(o){if("word"===o[0]&&"progid"===o[1])continue;return i}this.doubleColon(t)}o=t}return!1}comment(e){let t=new Xi;this.init(t,e[2]),t.source.end=this.getPosition(e[3]||e[2]),t.source.end.offset++;let n=e[1].slice(2,-2);if(/^\s*$/.test(n))t.text="",t.raws.left=n,t.raws.right="";else{let e=n.match(/^(\s*)([^]*\S)(\s*)$/);t.text=e[2],t.raws.left=e[1],t.raws.right=e[3]}}createTokenizer(){this.tokenizer=Yi(this.input)}decl(e,t){let n=new Ki;this.init(n,e[0][2]);let o,r=e[e.length-1];for(";"===r[0]&&(this.semicolon=!0,e.pop()),n.source.end=this.getPosition(r[3]||r[2]||function(e){for(let t=e.length-1;t>=0;t--){let n=e[t],o=n[3]||n[2];if(o)return o}}(e)),n.source.end.offset++;"word"!==e[0][0];)1===e.length&&this.unknownWord(e),n.raws.before+=e.shift()[1];for(n.source.start=this.getPosition(e[0][2]),n.prop="";e.length;){let t=e[0][0];if(":"===t||"space"===t||"comment"===t)break;n.prop+=e.shift()[1]}for(n.raws.between="";e.length;){if(o=e.shift(),":"===o[0]){n.raws.between+=o[1];break}"word"===o[0]&&/\w/.test(o[1])&&this.unknownWord([o]),n.raws.between+=o[1]}"_"!==n.prop[0]&&"*"!==n.prop[0]||(n.raws.before+=n.prop[0],n.prop=n.prop.slice(1));let i,a=[];for(;e.length&&(i=e[0][0],"space"===i||"comment"===i);)a.push(e.shift());this.precheckMissedSemicolon(e);for(let s=e.length-1;s>=0;s--){if(o=e[s],"!important"===o[1].toLowerCase()){n.important=!0;let t=this.stringFrom(e,s);t=this.spacesFromEnd(e)+t," !important"!==t&&(n.raws.important=t);break}if("important"===o[1].toLowerCase()){let t=e.slice(0),o="";for(let e=s;e>0;e--){let n=t[e][0];if(0===o.trim().indexOf("!")&&"space"!==n)break;o=t.pop()[1]+o}0===o.trim().indexOf("!")&&(n.important=!0,n.raws.important=o,e=t)}if("space"!==o[0]&&"comment"!==o[0])break}e.some((e=>"space"!==e[0]&&"comment"!==e[0]))&&(n.raws.between+=a.map((e=>e[1])).join(""),a=[]),this.raw(n,"value",a.concat(e),t),n.value.includes(":")&&!t&&this.checkMissedSemicolon(e)}doubleColon(e){throw this.input.error("Double colon",{offset:e[2]},{offset:e[2]+e[1].length})}emptyRule(e){let t=new ea;this.init(t,e[2]),t.selector="",t.raws.between="",this.current=t}end(e){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(e[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(e)}endFile(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position())}freeSemicolon(e){if(this.spaces+=e[1],this.current.nodes){let e=this.current.nodes[this.current.nodes.length-1];e&&"rule"===e.type&&!e.raws.ownSemicolon&&(e.raws.ownSemicolon=this.spaces,this.spaces="")}}getPosition(e){let t=this.input.fromOffset(e);return{column:t.col,line:t.line,offset:e}}init(e,t){this.current.push(e),e.source={input:this.input,start:this.getPosition(t)},e.raws.before=this.spaces,this.spaces="","comment"!==e.type&&(this.semicolon=!1)}other(e){let t=!1,n=null,o=!1,r=null,i=[],a=e[1].startsWith("--"),s=[],l=e;for(;l;){if(n=l[0],s.push(l),"("===n||"["===n)r||(r=l),i.push("("===n?")":"]");else if(a&&o&&"{"===n)r||(r=l),i.push("}");else if(0===i.length){if(";"===n){if(o)return void this.decl(s,a);break}if("{"===n)return void this.rule(s);if("}"===n){this.tokenizer.back(s.pop()),t=!0;break}":"===n&&(o=!0)}else n===i[i.length-1]&&(i.pop(),0===i.length&&(r=null));l=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(t=!0),i.length>0&&this.unclosedBracket(r),t&&o){if(!a)for(;s.length&&(l=s[s.length-1][0],"space"===l||"comment"===l);)this.tokenizer.back(s.pop());this.decl(s,a)}else this.unknownWord(s)}parse(){let e;for(;!this.tokenizer.endOfFile();)switch(e=this.tokenizer.nextToken(),e[0]){case"space":this.spaces+=e[1];break;case";":this.freeSemicolon(e);break;case"}":this.end(e);break;case"comment":this.comment(e);break;case"at-word":this.atrule(e);break;case"{":this.emptyRule(e);break;default:this.other(e)}this.endFile()}precheckMissedSemicolon(){}raw(e,t,n,o){let r,i,a,s,l=n.length,c="",u=!0;for(let d=0;de+t[1]),"");e.raws[t]={raw:o,value:c}}e[t]=c}rule(e){e.pop();let t=new ea;this.init(t,e[0][2]),t.raws.between=this.spacesAndCommentsFromEnd(e),this.raw(t,"selector",e),this.current=t}spacesAndCommentsFromEnd(e){let t,n="";for(;e.length&&(t=e[e.length-1][0],"space"===t||"comment"===t);)n=e.pop()[1]+n;return n}spacesAndCommentsFromStart(e){let t,n="";for(;e.length&&(t=e[0][0],"space"===t||"comment"===t);)n+=e.shift()[1];return n}spacesFromEnd(e){let t,n="";for(;e.length&&(t=e[e.length-1][0],"space"===t);)n=e.pop()[1]+n;return n}stringFrom(e,t){let n="";for(let o=t;oCa(e))),e}let Ia={},Oa=class e{constructor(t,n,o){let r;if(this.stringified=!1,this.processed=!1,"object"!=typeof n||null===n||"root"!==n.type&&"document"!==n.type)if(n instanceof e||n instanceof fa)r=Ca(n.root),n.map&&(void 0===o.map&&(o.map={}),o.map.inline||(o.map.inline=!1),o.map.prev=n.map);else{let e=ma;o.syntax&&(e=o.syntax.parse),o.parser&&(e=o.parser),e.parse&&(e=e.parse);try{r=e(n,o)}catch(i){this.processed=!0,this.error=i}r&&!r[ca]&&pa.rebuild(r)}else r=Ca(n);this.result=new fa(t,r,o),this.helpers={...Ia,postcss:Ia,result:this.result},this.plugins=this.processor.plugins.map((e=>"object"==typeof e&&e.prepare?{...e,...e.prepare(this.result)}:e))}async(){return this.error?Promise.reject(this.error):this.processed?Promise.resolve(this.result):(this.processing||(this.processing=this.runAsync()),this.processing)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}getAsyncError(){throw new Error("Use process(css).then(cb) to work with async plugins")}handleError(e,t){let n=this.result.lastPlugin;try{t&&t.addToError(e),this.error=e,"CssSyntaxError"!==e.name||e.plugin?n.postcssVersion:(e.plugin=n.postcssPlugin,e.setMessage())}catch(o){console&&console.error&&console.error(o)}return e}prepareVisitors(){this.listeners={};let e=(e,t,n)=>{this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].push([e,n])};for(let t of this.plugins)if("object"==typeof t)for(let n in t){if(!ya[n]&&/^[A-Z]/.test(n))throw new Error(`Unknown event ${n} in ${t.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`);if(!ba[n])if("object"==typeof t[n])for(let o in t[n])e(t,"*"===o?n:n+"-"+o.toLowerCase(),t[n][o]);else"function"==typeof t[n]&&e(t,n,t[n])}this.hasListener=Object.keys(this.listeners).length>0}async runAsync(){this.plugin=0;for(let n=0;n0;){let e=this.visitTick(n);if(ka(e))try{await e}catch(t){let e=n[n.length-1].node;throw this.handleError(t,e)}}}if(this.listeners.OnceExit)for(let[n,o]of this.listeners.OnceExit){this.result.lastPlugin=n;try{if("document"===e.type){let t=e.nodes.map((e=>o(e,this.helpers)));await Promise.all(t)}else await o(e,this.helpers)}catch(t){throw this.handleError(t)}}}return this.processed=!0,this.stringify()}runOnRoot(e){this.result.lastPlugin=e;try{if("object"==typeof e&&e.Once){if("document"===this.result.root.type){let t=this.result.root.nodes.map((t=>e.Once(t,this.helpers)));return ka(t[0])?Promise.all(t):t}return e.Once(this.result.root,this.helpers)}if("function"==typeof e)return e(this.result.root,this.result)}catch(t){throw this.handleError(t)}}stringify(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();let e=this.result.opts,t=da;e.syntax&&(t=e.syntax.stringify),e.stringifier&&(t=e.stringifier),t.stringify&&(t=t.stringify);let n=new ua(t,this.result.root,this.result.opts).generate();return this.result.css=n[0],this.result.map=n[1],this.result}sync(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(let e of this.plugins){if(ka(this.runOnRoot(e)))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){let e=this.result.root;for(;!e[la];)e[la]=!0,this.walkSync(e);if(this.listeners.OnceExit)if("document"===e.type)for(let t of e.nodes)this.visitSync(this.listeners.OnceExit,t);else this.visitSync(this.listeners.OnceExit,e)}return this.result}then(e,t){return this.async().then(e,t)}toString(){return this.css}visitSync(e,t){for(let[o,r]of e){let e;this.result.lastPlugin=o;try{e=r(t,this.helpers)}catch(n){throw this.handleError(n,t.proxyOf)}if("root"!==t.type&&"document"!==t.type&&!t.parent)return!0;if(ka(e))throw this.getAsyncError()}}visitTick(e){let t=e[e.length-1],{node:n,visitors:o}=t;if("root"!==n.type&&"document"!==n.type&&!n.parent)return void e.pop();if(o.length>0&&t.visitorIndex{e[la]||this.walkSync(e)}));else{let t=this.listeners[n];if(t&&this.visitSync(t,e.toProxy()))return}}warnings(){return this.sync().warnings()}get content(){return this.stringify().content}get css(){return this.stringify().css}get map(){return this.stringify().map}get messages(){return this.sync().messages}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){return this.sync().root}get[Symbol.toStringTag](){return"LazyResult"}};Oa.registerPostcss=e=>{Ia=e};var Ea=Oa;Oa.default=Oa,ga.registerLazyResult(Oa),ha.registerLazyResult(Oa);let Ta=_r,La=Jo,Aa=sa;const Ma=di;let Ra=class{constructor(e,t,n){let o;t=t.toString(),this.stringified=!1,this._processor=e,this._css=t,this._opts=n,this._map=void 0;let r=La;this.result=new Ma(this._processor,o,this._opts),this.result.css=t;let i=this;Object.defineProperty(this.result,"root",{get:()=>i.root});let a=new Ta(r,o,this._opts,t);if(a.isMap()){let[e,t]=a.generate();e&&(this.result.css=e),t&&(this.result.map=t)}else a.clearAnnotation(),this.result.css=a.css}async(){return this.error?Promise.reject(this.error):Promise.resolve(this.result)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}sync(){if(this.error)throw this.error;return this.result}then(e,t){return this.async().then(e,t)}toString(){return this._css}warnings(){return[]}get content(){return this.result.css}get css(){return this.result.css}get map(){return this.result.map}get messages(){return[]}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){if(this._root)return this._root;let e,t=Aa;try{e=t(this._css,this._opts)}catch(n){this.error=n}if(this.error)throw this.error;return this._root=e,e}get[Symbol.toStringTag](){return"NoWorkResult"}};var Pa=Ra;Ra.default=Ra;let Da=Pa,Na=Ea,ja=ai,Fa=zi,Ba=class{constructor(e=[]){this.version="8.4.38",this.plugins=this.normalize(e)}normalize(e){let t=[];for(let n of e)if(!0===n.postcss?n=n():n.postcss&&(n=n.postcss),"object"==typeof n&&Array.isArray(n.plugins))t=t.concat(n.plugins);else if("object"==typeof n&&n.postcssPlugin)t.push(n);else if("function"==typeof n)t.push(n);else{if("object"!=typeof n||!n.parse&&!n.stringify)throw new Error(n+" is not a PostCSS plugin")}return t}process(e,t={}){return this.plugins.length||t.parser||t.stringifier||t.syntax?new Na(this,e,t):new Da(this,e,t)}use(e){return this.plugins=this.plugins.concat(this.normalize([e])),this}};var _a=Ba;Ba.default=Ba,Fa.registerProcessor(Ba),ja.registerProcessor(Ba);let Ua=rr,Ha=hr,za=zr,qa=Fi,Wa=Tr,Ga=zi,Va=Zi;function Ja(e,t){if(Array.isArray(e))return e.map((e=>Ja(e)));let{inputs:n,...o}=e;if(n){t=[];for(let e of n){let n={...e,__proto__:Wa.prototype};n.map&&(n.map={...n.map,__proto__:Ha.prototype}),t.push(n)}}if(o.nodes&&(o.nodes=e.nodes.map((e=>Ja(e,t)))),o.source){let{inputId:e,...n}=o.source;o.source=n,null!=e&&(o.source.input=t[e])}if("root"===o.type)return new Ga(o);if("decl"===o.type)return new Ua(o);if("rule"===o.type)return new Va(o);if("comment"===o.type)return new za(o);if("atrule"===o.type)return new qa(o);throw new Error("Unknown node type: "+e.type)}var Za=Ja;Ja.default=Ja;let Ka=Uo,Ya=rr,Xa=Ea,$a=ti,Qa=_a,es=Jo,ts=Za,ns=ai,os=li,rs=zr,is=Fi,as=di,ss=Tr,ls=sa,cs=Wi,us=Zi,ds=zi,ps=tr;function hs(...e){return 1===e.length&&Array.isArray(e[0])&&(e=e[0]),new Qa(e)}hs.plugin=function(e,t){let n,o=!1;function r(...n){console&&console.warn&&!o&&(o=!0,console.warn(e+": postcss.plugin was deprecated. Migration guide:\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration"),process.env.LANG&&process.env.LANG.startsWith("cn")&&console.warn(e+": 里面 postcss.plugin 被弃用. 迁移指南:\nhttps://www.w3ctech.com/topic/2226"));let r=t(...n);return r.postcssPlugin=e,r.postcssVersion=(new Qa).version,r}return Object.defineProperty(r,"postcss",{get:()=>(n||(n=r()),n)}),r.process=function(e,t,n){return hs([r(n)]).process(e,t)},r},hs.stringify=es,hs.parse=ls,hs.fromJSON=ts,hs.list=cs,hs.comment=e=>new rs(e),hs.atRule=e=>new is(e),hs.decl=e=>new Ya(e),hs.rule=e=>new us(e),hs.root=e=>new ds(e),hs.document=e=>new ns(e),hs.CssSyntaxError=Ka,hs.Declaration=Ya,hs.Container=$a,hs.Processor=Qa,hs.Document=ns,hs.Comment=rs,hs.Warning=os,hs.AtRule=is,hs.Result=as,hs.Input=ss,hs.Rule=us,hs.Root=ds,hs.Node=ps,Xa.registerPostcss(hs);var fs=hs;hs.default=hs;const ms=Ao(fs);ms.stringify,ms.fromJSON,ms.plugin,ms.parse,ms.list,ms.document,ms.comment,ms.atRule,ms.rule,ms.decl,ms.root,ms.CssSyntaxError,ms.Declaration,ms.Container,ms.Processor,ms.Document,ms.Comment,ms.Warning,ms.AtRule,ms.Result,ms.Input,ms.Rule,ms.Root,ms.Node;var gs=Object.defineProperty,vs=(e,t,n)=>((e,t,n)=>t in e?gs(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,"symbol"!=typeof t?t+"":t,n);function ys(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function bs(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var n=function e(){return this instanceof e?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,o.get?o:{enumerable:!0,get:function(){return e[t]}})})),n}var ws={exports:{}},ks=String,xs=function(){return{isColorSupported:!1,reset:ks,bold:ks,dim:ks,italic:ks,underline:ks,inverse:ks,hidden:ks,strikethrough:ks,black:ks,red:ks,green:ks,yellow:ks,blue:ks,magenta:ks,cyan:ks,white:ks,gray:ks,bgBlack:ks,bgRed:ks,bgGreen:ks,bgYellow:ks,bgBlue:ks,bgMagenta:ks,bgCyan:ks,bgWhite:ks}};ws.exports=xs(),ws.exports.createColors=xs;var Ss=ws.exports;const Cs=bs(Object.freeze(Object.defineProperty({__proto__:null,default:{}},Symbol.toStringTag,{value:"Module"})));let Is=Ss,Os=Cs,Es=class e extends Error{constructor(t,n,o,r,i,a){super(t),this.name="CssSyntaxError",this.reason=t,i&&(this.file=i),r&&(this.source=r),a&&(this.plugin=a),void 0!==n&&void 0!==o&&("number"==typeof n?(this.line=n,this.column=o):(this.line=n.line,this.column=n.column,this.endLine=o.line,this.endColumn=o.column)),this.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(this,e)}setMessage(){this.message=this.plugin?this.plugin+": ":"",this.message+=this.file?this.file:"",void 0!==this.line&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason}showSourceCode(e){if(!this.source)return"";let t=this.source;null==e&&(e=Is.isColorSupported),Os&&e&&(t=Os(t));let n,o,r=t.split(/\r?\n/),i=Math.max(this.line-3,0),a=Math.min(this.line+2,r.length),s=String(a).length;if(e){let{bold:e,gray:t,red:r}=Is.createColors(!0);n=t=>e(r(t)),o=e=>t(e)}else n=o=e=>e;return r.slice(i,a).map(((e,t)=>{let r=i+1+t,a=" "+(" "+r).slice(-s)+" | ";if(r===this.line){let t=o(a.replace(/\d/g," "))+e.slice(0,this.column-1).replace(/[^\t]/g," ");return n(">")+o(a)+e+"\n "+t+n("^")}return" "+o(a)+e})).join("\n")}toString(){let e=this.showSourceCode();return e&&(e="\n\n"+e+"\n"),this.name+": "+this.message+e}};var Ts=Es;Es.default=Es;var Ls={};Ls.isClean=Symbol("isClean"),Ls.my=Symbol("my");const As={after:"\n",beforeClose:"\n",beforeComment:"\n",beforeDecl:"\n",beforeOpen:" ",beforeRule:"\n",colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:!1};let Ms=class{constructor(e){this.builder=e}atrule(e,t){let n="@"+e.name,o=e.params?this.rawValue(e,"params"):"";if(void 0!==e.raws.afterName?n+=e.raws.afterName:o&&(n+=" "),e.nodes)this.block(e,n+o);else{let r=(e.raws.between||"")+(t?";":"");this.builder(n+o+r,e)}}beforeAfter(e,t){let n;n="decl"===e.type?this.raw(e,null,"beforeDecl"):"comment"===e.type?this.raw(e,null,"beforeComment"):"before"===t?this.raw(e,null,"beforeRule"):this.raw(e,null,"beforeClose");let o=e.parent,r=0;for(;o&&"root"!==o.type;)r+=1,o=o.parent;if(n.includes("\n")){let t=this.raw(e,null,"indent");if(t.length)for(let e=0;e0&&"comment"===e.nodes[t].type;)t-=1;let n=this.raw(e,"semicolon");for(let o=0;o{if(o=e.raws[t],void 0!==o)return!1}))}var a;return void 0===o&&(o=As[n]),i.rawCache[n]=o,o}rawBeforeClose(e){let t;return e.walk((e=>{if(e.nodes&&e.nodes.length>0&&void 0!==e.raws.after)return t=e.raws.after,t.includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1})),t&&(t=t.replace(/\S/g,"")),t}rawBeforeComment(e,t){let n;return e.walkComments((e=>{if(void 0!==e.raws.before)return n=e.raws.before,n.includes("\n")&&(n=n.replace(/[^\n]+$/,"")),!1})),void 0===n?n=this.raw(t,null,"beforeDecl"):n&&(n=n.replace(/\S/g,"")),n}rawBeforeDecl(e,t){let n;return e.walkDecls((e=>{if(void 0!==e.raws.before)return n=e.raws.before,n.includes("\n")&&(n=n.replace(/[^\n]+$/,"")),!1})),void 0===n?n=this.raw(t,null,"beforeRule"):n&&(n=n.replace(/\S/g,"")),n}rawBeforeOpen(e){let t;return e.walk((e=>{if("decl"!==e.type&&(t=e.raws.between,void 0!==t))return!1})),t}rawBeforeRule(e){let t;return e.walk((n=>{if(n.nodes&&(n.parent!==e||e.first!==n)&&void 0!==n.raws.before)return t=n.raws.before,t.includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1})),t&&(t=t.replace(/\S/g,"")),t}rawColon(e){let t;return e.walkDecls((e=>{if(void 0!==e.raws.between)return t=e.raws.between.replace(/[^\s:]/g,""),!1})),t}rawEmptyBody(e){let t;return e.walk((e=>{if(e.nodes&&0===e.nodes.length&&(t=e.raws.after,void 0!==t))return!1})),t}rawIndent(e){if(e.raws.indent)return e.raws.indent;let t;return e.walk((n=>{let o=n.parent;if(o&&o!==e&&o.parent&&o.parent===e&&void 0!==n.raws.before){let e=n.raws.before.split("\n");return t=e[e.length-1],t=t.replace(/\S/g,""),!1}})),t}rawSemicolon(e){let t;return e.walk((e=>{if(e.nodes&&e.nodes.length&&"decl"===e.last.type&&(t=e.raws.semicolon,void 0!==t))return!1})),t}rawValue(e,t){let n=e[t],o=e.raws[t];return o&&o.value===n?o.raw:n}root(e){this.body(e),e.raws.after&&this.builder(e.raws.after)}rule(e){this.block(e,this.rawValue(e,"selector")),e.raws.ownSemicolon&&this.builder(e.raws.ownSemicolon,e,"end")}stringify(e,t){if(!this[e.type])throw new Error("Unknown AST node type "+e.type+". Maybe you need to change PostCSS stringifier.");this[e.type](e,t)}};var Rs=Ms;Ms.default=Ms;let Ps=Rs;function Ds(e,t){new Ps(t).stringify(e)}var Ns=Ds;Ds.default=Ds;let{isClean:js,my:Fs}=Ls,Bs=Ts,_s=Rs,Us=Ns;function Hs(e,t){let n=new e.constructor;for(let o in e){if(!Object.prototype.hasOwnProperty.call(e,o))continue;if("proxyCache"===o)continue;let r=e[o],i=typeof r;"parent"===o&&"object"===i?t&&(n[o]=t):"source"===o?n[o]=r:Array.isArray(r)?n[o]=r.map((e=>Hs(e,n))):("object"===i&&null!==r&&(r=Hs(r)),n[o]=r)}return n}let zs=class{constructor(e={}){this.raws={},this[js]=!1,this[Fs]=!0;for(let t in e)if("nodes"===t){this.nodes=[];for(let n of e[t])"function"==typeof n.clone?this.append(n.clone()):this.append(n)}else this[t]=e[t]}addToError(e){if(e.postcssNode=this,e.stack&&this.source&&/\n\s{4}at /.test(e.stack)){let t=this.source;e.stack=e.stack.replace(/\n\s{4}at /,`$&${t.input.from}:${t.start.line}:${t.start.column}$&`)}return e}after(e){return this.parent.insertAfter(this,e),this}assign(e={}){for(let t in e)this[t]=e[t];return this}before(e){return this.parent.insertBefore(this,e),this}cleanRaws(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between}clone(e={}){let t=Hs(this);for(let n in e)t[n]=e[n];return t}cloneAfter(e={}){let t=this.clone(e);return this.parent.insertAfter(this,t),t}cloneBefore(e={}){let t=this.clone(e);return this.parent.insertBefore(this,t),t}error(e,t={}){if(this.source){let{end:n,start:o}=this.rangeBy(t);return this.source.input.error(e,{column:o.column,line:o.line},{column:n.column,line:n.line},t)}return new Bs(e)}getProxyProcessor(){return{get:(e,t)=>"proxyOf"===t?e:"root"===t?()=>e.root().toProxy():e[t],set:(e,t,n)=>(e[t]===n||(e[t]=n,"prop"!==t&&"value"!==t&&"name"!==t&&"params"!==t&&"important"!==t&&"text"!==t||e.markDirty()),!0)}}markDirty(){if(this[js]){this[js]=!1;let e=this;for(;e=e.parent;)e[js]=!1}}next(){if(!this.parent)return;let e=this.parent.index(this);return this.parent.nodes[e+1]}positionBy(e,t){let n=this.source.start;if(e.index)n=this.positionInside(e.index,t);else if(e.word){let o=(t=this.toString()).indexOf(e.word);-1!==o&&(n=this.positionInside(o,t))}return n}positionInside(e,t){let n=t||this.toString(),o=this.source.start.column,r=this.source.start.line;for(let i=0;i"object"==typeof e&&e.toJSON?e.toJSON(null,t):e));else if("object"==typeof e&&e.toJSON)n[i]=e.toJSON(null,t);else if("source"===i){let o=t.get(e.input);null==o&&(o=r,t.set(e.input,r),r++),n[i]={end:e.end,inputId:o,start:e.start}}else n[i]=e}return o&&(n.inputs=[...t.keys()].map((e=>e.toJSON()))),n}toProxy(){return this.proxyCache||(this.proxyCache=new Proxy(this,this.getProxyProcessor())),this.proxyCache}toString(e=Us){e.stringify&&(e=e.stringify);let t="";return e(this,(e=>{t+=e})),t}warn(e,t,n){let o={node:this};for(let r in n)o[r]=n[r];return e.warn(t,o)}get proxyOf(){return this}};var qs=zs;zs.default=zs;let Ws=qs,Gs=class extends Ws{constructor(e){e&&void 0!==e.value&&"string"!=typeof e.value&&(e={...e,value:String(e.value)}),super(e),this.type="decl"}get variable(){return this.prop.startsWith("--")||"$"===this.prop[0]}};var Vs=Gs;Gs.default=Gs;var Js={nanoid:(e=21)=>{let t="",n=e;for(;n--;)t+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[64*Math.random()|0];return t},customAlphabet:(e,t=21)=>(n=t)=>{let o="",r=n;for(;r--;)o+=e[Math.random()*e.length|0];return o}};let{SourceMapConsumer:Zs,SourceMapGenerator:Ks}=Cs,{existsSync:Ys,readFileSync:Xs}=Cs,{dirname:$s,join:Qs}=Cs;let el=class{constructor(e,t){if(!1===t.map)return;this.loadAnnotation(e),this.inline=this.startWith(this.annotation,"data:");let n=t.map?t.map.prev:void 0,o=this.loadMap(t.from,n);!this.mapFile&&t.from&&(this.mapFile=t.from),this.mapFile&&(this.root=$s(this.mapFile)),o&&(this.text=o)}consumer(){return this.consumerCache||(this.consumerCache=new Zs(this.text)),this.consumerCache}decodeInline(e){if(/^data:application\/json;charset=utf-?8,/.test(e)||/^data:application\/json,/.test(e))return decodeURIComponent(e.substr(RegExp.lastMatch.length));if(/^data:application\/json;charset=utf-?8;base64,/.test(e)||/^data:application\/json;base64,/.test(e))return t=e.substr(RegExp.lastMatch.length),Buffer?Buffer.from(t,"base64").toString():window.atob(t);var t;let n=e.match(/data:application\/json;([^,]+),/)[1];throw new Error("Unsupported source map encoding "+n)}getAnnotationURL(e){return e.replace(/^\/\*\s*# sourceMappingURL=/,"").trim()}isMap(e){return"object"==typeof e&&("string"==typeof e.mappings||"string"==typeof e._mappings||Array.isArray(e.sections))}loadAnnotation(e){let t=e.match(/\/\*\s*# sourceMappingURL=/gm);if(!t)return;let n=e.lastIndexOf(t.pop()),o=e.indexOf("*/",n);n>-1&&o>-1&&(this.annotation=this.getAnnotationURL(e.substring(n,o)))}loadFile(e){if(this.root=$s(e),Ys(e))return this.mapFile=e,Xs(e,"utf-8").toString().trim()}loadMap(e,t){if(!1===t)return!1;if(t){if("string"==typeof t)return t;if("function"!=typeof t){if(t instanceof Zs)return Ks.fromSourceMap(t).toString();if(t instanceof Ks)return t.toString();if(this.isMap(t))return JSON.stringify(t);throw new Error("Unsupported previous source map format: "+t.toString())}{let n=t(e);if(n){let e=this.loadFile(n);if(!e)throw new Error("Unable to load previous source map: "+n.toString());return e}}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){let t=this.annotation;return e&&(t=Qs($s(e),t)),this.loadFile(t)}}}startWith(e,t){return!!e&&e.substr(0,t.length)===t}withContent(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)}};var tl=el;el.default=el;let{SourceMapConsumer:nl,SourceMapGenerator:ol}=Cs,{fileURLToPath:rl,pathToFileURL:il}=Cs,{isAbsolute:al,resolve:sl}=Cs,{nanoid:ll}=Js,cl=Cs,ul=Ts,dl=tl,pl=Symbol("fromOffsetCache"),hl=Boolean(nl&&ol),fl=Boolean(sl&&al),ml=class{constructor(e,t={}){if(null==e||"object"==typeof e&&!e.toString)throw new Error(`PostCSS received ${e} instead of CSS string`);if(this.css=e.toString(),"\ufeff"===this.css[0]||"￾"===this.css[0]?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,t.from&&(!fl||/^\w+:\/\//.test(t.from)||al(t.from)?this.file=t.from:this.file=sl(t.from)),fl&&hl){let e=new dl(this.css,t);if(e.text){this.map=e;let t=e.consumer().file;!this.file&&t&&(this.file=this.mapResolve(t))}}this.file||(this.id=""),this.map&&(this.map.file=this.from)}error(e,t,n,o={}){let r,i,a;if(t&&"object"==typeof t){let e=t,o=n;if("number"==typeof e.offset){let o=this.fromOffset(e.offset);t=o.line,n=o.col}else t=e.line,n=e.column;if("number"==typeof o.offset){let e=this.fromOffset(o.offset);i=e.line,a=e.col}else i=o.line,a=o.column}else if(!n){let e=this.fromOffset(t);t=e.line,n=e.col}let s=this.origin(t,n,i,a);return r=s?new ul(e,void 0===s.endLine?s.line:{column:s.column,line:s.line},void 0===s.endLine?s.column:{column:s.endColumn,line:s.endLine},s.source,s.file,o.plugin):new ul(e,void 0===i?t:{column:n,line:t},void 0===i?n:{column:a,line:i},this.css,this.file,o.plugin),r.input={column:n,endColumn:a,endLine:i,line:t,source:this.css},this.file&&(il&&(r.input.url=il(this.file).toString()),r.input.file=this.file),r}fromOffset(e){let t,n;if(this[pl])n=this[pl];else{let e=this.css.split("\n");n=new Array(e.length);let t=0;for(let o=0,r=e.length;o=t)o=n.length-1;else{let t,r=n.length-2;for(;o>1),e=n[t+1])){o=t;break}o=t+1}}return{col:e-n[o]+1,line:o+1}}mapResolve(e){return/^\w+:\/\//.test(e)?e:sl(this.map.consumer().sourceRoot||this.map.root||".",e)}origin(e,t,n,o){if(!this.map)return!1;let r,i,a=this.map.consumer(),s=a.originalPositionFor({column:t,line:e});if(!s.source)return!1;"number"==typeof n&&(r=a.originalPositionFor({column:o,line:n})),i=al(s.source)?il(s.source):new URL(s.source,this.map.consumer().sourceRoot||il(this.map.mapFile));let l={column:s.column,endColumn:r&&r.column,endLine:r&&r.line,line:s.line,url:i.toString()};if("file:"===i.protocol){if(!rl)throw new Error("file: protocol is not available in this PostCSS build");l.file=rl(i)}let c=a.sourceContentFor(s.source);return c&&(l.source=c),l}toJSON(){let e={};for(let t of["hasBOM","css","file","id"])null!=this[t]&&(e[t]=this[t]);return this.map&&(e.map={...this.map},e.map.consumerCache&&(e.map.consumerCache=void 0)),e}get from(){return this.file||this.id}};var gl=ml;ml.default=ml,cl&&cl.registerInput&&cl.registerInput(ml);let{SourceMapConsumer:vl,SourceMapGenerator:yl}=Cs,{dirname:bl,relative:wl,resolve:kl,sep:xl}=Cs,{pathToFileURL:Sl}=Cs,Cl=gl,Il=Boolean(vl&&yl),Ol=Boolean(bl&&kl&&wl&&xl);var El=class{constructor(e,t,n,o){this.stringify=e,this.mapOpts=n.map||{},this.root=t,this.opts=n,this.css=o,this.originalCSS=o,this.usesFileUrls=!this.mapOpts.from&&this.mapOpts.absolute,this.memoizedFileURLs=new Map,this.memoizedPaths=new Map,this.memoizedURLs=new Map}addAnnotation(){let e;e=this.isInline()?"data:application/json;base64,"+this.toBase64(this.map.toString()):"string"==typeof this.mapOpts.annotation?this.mapOpts.annotation:"function"==typeof this.mapOpts.annotation?this.mapOpts.annotation(this.opts.to,this.root):this.outputFile()+".map";let t="\n";this.css.includes("\r\n")&&(t="\r\n"),this.css+=t+"/*# sourceMappingURL="+e+" */"}applyPrevMaps(){for(let e of this.previous()){let t,n=this.toUrl(this.path(e.file)),o=e.root||bl(e.file);!1===this.mapOpts.sourcesContent?(t=new vl(e.text),t.sourcesContent&&(t.sourcesContent=null)):t=e.consumer(),this.map.applySourceMap(t,n,this.toUrl(this.path(o)))}}clearAnnotation(){if(!1!==this.mapOpts.annotation)if(this.root){let e;for(let t=this.root.nodes.length-1;t>=0;t--)e=this.root.nodes[t],"comment"===e.type&&0===e.text.indexOf("# sourceMappingURL=")&&this.root.removeChild(t)}else this.css&&(this.css=this.css.replace(/\n*?\/\*#[\S\s]*?\*\/$/gm,""))}generate(){if(this.clearAnnotation(),Ol&&Il&&this.isMap())return this.generateMap();{let e="";return this.stringify(this.root,(t=>{e+=t})),[e]}}generateMap(){if(this.root)this.generateString();else if(1===this.previous().length){let e=this.previous()[0].consumer();e.file=this.outputFile(),this.map=yl.fromSourceMap(e,{ignoreInvalidMapping:!0})}else this.map=new yl({file:this.outputFile(),ignoreInvalidMapping:!0}),this.map.addMapping({generated:{column:0,line:1},original:{column:0,line:1},source:this.opts.from?this.toUrl(this.path(this.opts.from)):""});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]}generateString(){this.css="",this.map=new yl({file:this.outputFile(),ignoreInvalidMapping:!0});let e,t,n=1,o=1,r="",i={generated:{column:0,line:0},original:{column:0,line:0},source:""};this.stringify(this.root,((a,s,l)=>{if(this.css+=a,s&&"end"!==l&&(i.generated.line=n,i.generated.column=o-1,s.source&&s.source.start?(i.source=this.sourcePath(s),i.original.line=s.source.start.line,i.original.column=s.source.start.column-1,this.map.addMapping(i)):(i.source=r,i.original.line=1,i.original.column=0,this.map.addMapping(i))),e=a.match(/\n/g),e?(n+=e.length,t=a.lastIndexOf("\n"),o=a.length-t):o+=a.length,s&&"start"!==l){let e=s.parent||{raws:{}};("decl"===s.type||"atrule"===s.type&&!s.nodes)&&s===e.last&&!e.raws.semicolon||(s.source&&s.source.end?(i.source=this.sourcePath(s),i.original.line=s.source.end.line,i.original.column=s.source.end.column-1,i.generated.line=n,i.generated.column=o-2,this.map.addMapping(i)):(i.source=r,i.original.line=1,i.original.column=0,i.generated.line=n,i.generated.column=o-1,this.map.addMapping(i)))}}))}isAnnotation(){return!!this.isInline()||(void 0!==this.mapOpts.annotation?this.mapOpts.annotation:!this.previous().length||this.previous().some((e=>e.annotation)))}isInline(){if(void 0!==this.mapOpts.inline)return this.mapOpts.inline;let e=this.mapOpts.annotation;return(void 0===e||!0===e)&&(!this.previous().length||this.previous().some((e=>e.inline)))}isMap(){return void 0!==this.opts.map?!!this.opts.map:this.previous().length>0}isSourcesContent(){return void 0!==this.mapOpts.sourcesContent?this.mapOpts.sourcesContent:!this.previous().length||this.previous().some((e=>e.withContent()))}outputFile(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"}path(e){if(this.mapOpts.absolute)return e;if(60===e.charCodeAt(0))return e;if(/^\w+:\/\//.test(e))return e;let t=this.memoizedPaths.get(e);if(t)return t;let n=this.opts.to?bl(this.opts.to):".";"string"==typeof this.mapOpts.annotation&&(n=bl(kl(n,this.mapOpts.annotation)));let o=wl(n,e);return this.memoizedPaths.set(e,o),o}previous(){if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk((e=>{if(e.source&&e.source.input.map){let t=e.source.input.map;this.previousMaps.includes(t)||this.previousMaps.push(t)}}));else{let e=new Cl(this.originalCSS,this.opts);e.map&&this.previousMaps.push(e.map)}return this.previousMaps}setSourcesContent(){let e={};if(this.root)this.root.walk((t=>{if(t.source){let n=t.source.input.from;if(n&&!e[n]){e[n]=!0;let o=this.usesFileUrls?this.toFileUrl(n):this.toUrl(this.path(n));this.map.setSourceContent(o,t.source.input.css)}}}));else if(this.css){let e=this.opts.from?this.toUrl(this.path(this.opts.from)):"";this.map.setSourceContent(e,this.css)}}sourcePath(e){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(e.source.input.from):this.toUrl(this.path(e.source.input.from))}toBase64(e){return Buffer?Buffer.from(e).toString("base64"):window.btoa(unescape(encodeURIComponent(e)))}toFileUrl(e){let t=this.memoizedFileURLs.get(e);if(t)return t;if(Sl){let t=Sl(e).toString();return this.memoizedFileURLs.set(e,t),t}throw new Error("`map.absolute` option is not available in this PostCSS build")}toUrl(e){let t=this.memoizedURLs.get(e);if(t)return t;"\\"===xl&&(e=e.replace(/\\/g,"/"));let n=encodeURI(e).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(e,n),n}};let Tl=qs,Ll=class extends Tl{constructor(e){super(e),this.type="comment"}};var Al=Ll;Ll.default=Ll;let Ml,Rl,Pl,Dl,{isClean:Nl,my:jl}=Ls,Fl=Vs,Bl=Al,_l=qs;function Ul(e){return e.map((e=>(e.nodes&&(e.nodes=Ul(e.nodes)),delete e.source,e)))}function Hl(e){if(e[Nl]=!1,e.proxyOf.nodes)for(let t of e.proxyOf.nodes)Hl(t)}let zl=class e extends _l{append(...e){for(let t of e){let e=this.normalize(t,this.last);for(let t of e)this.proxyOf.nodes.push(t)}return this.markDirty(),this}cleanRaws(e){if(super.cleanRaws(e),this.nodes)for(let t of this.nodes)t.cleanRaws(e)}each(e){if(!this.proxyOf.nodes)return;let t,n,o=this.getIterator();for(;this.indexes[o]"proxyOf"===t?e:e[t]?"each"===t||"string"==typeof t&&t.startsWith("walk")?(...n)=>e[t](...n.map((e=>"function"==typeof e?(t,n)=>e(t.toProxy(),n):e))):"every"===t||"some"===t?n=>e[t](((e,...t)=>n(e.toProxy(),...t))):"root"===t?()=>e.root().toProxy():"nodes"===t?e.nodes.map((e=>e.toProxy())):"first"===t||"last"===t?e[t].toProxy():e[t]:e[t],set:(e,t,n)=>(e[t]===n||(e[t]=n,"name"!==t&&"params"!==t&&"selector"!==t||e.markDirty()),!0)}}index(e){return"number"==typeof e?e:(e.proxyOf&&(e=e.proxyOf),this.proxyOf.nodes.indexOf(e))}insertAfter(e,t){let n,o=this.index(e),r=this.normalize(t,this.proxyOf.nodes[o]).reverse();o=this.index(e);for(let i of r)this.proxyOf.nodes.splice(o+1,0,i);for(let i in this.indexes)n=this.indexes[i],o(t[jl]||e.rebuild(t),(t=t.proxyOf).parent&&t.parent.removeChild(t),t[Nl]&&Hl(t),void 0===t.raws.before&&n&&void 0!==n.raws.before&&(t.raws.before=n.raws.before.replace(/\S/g,"")),t.parent=this.proxyOf,t)))}prepend(...e){e=e.reverse();for(let t of e){let e=this.normalize(t,this.first,"prepend").reverse();for(let t of e)this.proxyOf.nodes.unshift(t);for(let t in this.indexes)this.indexes[t]=this.indexes[t]+e.length}return this.markDirty(),this}push(e){return e.parent=this,this.proxyOf.nodes.push(e),this}removeAll(){for(let e of this.proxyOf.nodes)e.parent=void 0;return this.proxyOf.nodes=[],this.markDirty(),this}removeChild(e){let t;e=this.index(e),this.proxyOf.nodes[e].parent=void 0,this.proxyOf.nodes.splice(e,1);for(let n in this.indexes)t=this.indexes[n],t>=e&&(this.indexes[n]=t-1);return this.markDirty(),this}replaceValues(e,t,n){return n||(n=t,t={}),this.walkDecls((o=>{t.props&&!t.props.includes(o.prop)||t.fast&&!o.value.includes(t.fast)||(o.value=o.value.replace(e,n))})),this.markDirty(),this}some(e){return this.nodes.some(e)}walk(e){return this.each(((t,n)=>{let o;try{o=e(t,n)}catch(r){throw t.addToError(r)}return!1!==o&&t.walk&&(o=t.walk(e)),o}))}walkAtRules(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("atrule"===n.type&&e.test(n.name))return t(n,o)})):this.walk(((n,o)=>{if("atrule"===n.type&&n.name===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("atrule"===e.type)return t(e,n)})))}walkComments(e){return this.walk(((t,n)=>{if("comment"===t.type)return e(t,n)}))}walkDecls(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("decl"===n.type&&e.test(n.prop))return t(n,o)})):this.walk(((n,o)=>{if("decl"===n.type&&n.prop===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("decl"===e.type)return t(e,n)})))}walkRules(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("rule"===n.type&&e.test(n.selector))return t(n,o)})):this.walk(((n,o)=>{if("rule"===n.type&&n.selector===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("rule"===e.type)return t(e,n)})))}get first(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}get last(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}};zl.registerParse=e=>{Ml=e},zl.registerRule=e=>{Rl=e},zl.registerAtRule=e=>{Pl=e},zl.registerRoot=e=>{Dl=e};var ql=zl;zl.default=zl,zl.rebuild=e=>{"atrule"===e.type?Object.setPrototypeOf(e,Pl.prototype):"rule"===e.type?Object.setPrototypeOf(e,Rl.prototype):"decl"===e.type?Object.setPrototypeOf(e,Fl.prototype):"comment"===e.type?Object.setPrototypeOf(e,Bl.prototype):"root"===e.type&&Object.setPrototypeOf(e,Dl.prototype),e[jl]=!0,e.nodes&&e.nodes.forEach((e=>{zl.rebuild(e)}))};let Wl,Gl,Vl=ql,Jl=class extends Vl{constructor(e){super({type:"document",...e}),this.nodes||(this.nodes=[])}toResult(e={}){return new Wl(new Gl,this,e).stringify()}};Jl.registerLazyResult=e=>{Wl=e},Jl.registerProcessor=e=>{Gl=e};var Zl=Jl;Jl.default=Jl;let Kl=class{constructor(e,t={}){if(this.type="warning",this.text=e,t.node&&t.node.source){let e=t.node.rangeBy(t);this.line=e.start.line,this.column=e.start.column,this.endLine=e.end.line,this.endColumn=e.end.column}for(let n in t)this[n]=t[n]}toString(){return this.node?this.node.error(this.text,{index:this.index,plugin:this.plugin,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text}};var Yl=Kl;Kl.default=Kl;let Xl=Yl,$l=class{constructor(e,t,n){this.processor=e,this.messages=[],this.root=t,this.opts=n,this.css=void 0,this.map=void 0}toString(){return this.css}warn(e,t={}){t.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(t.plugin=this.lastPlugin.postcssPlugin);let n=new Xl(e,t);return this.messages.push(n),n}warnings(){return this.messages.filter((e=>"warning"===e.type))}get content(){return this.css}};var Ql=$l;$l.default=$l;const ec="'".charCodeAt(0),tc='"'.charCodeAt(0),nc="\\".charCodeAt(0),oc="/".charCodeAt(0),rc="\n".charCodeAt(0),ic=" ".charCodeAt(0),ac="\f".charCodeAt(0),sc="\t".charCodeAt(0),lc="\r".charCodeAt(0),cc="[".charCodeAt(0),uc="]".charCodeAt(0),dc="(".charCodeAt(0),pc=")".charCodeAt(0),hc="{".charCodeAt(0),fc="}".charCodeAt(0),mc=";".charCodeAt(0),gc="*".charCodeAt(0),vc=":".charCodeAt(0),yc="@".charCodeAt(0),bc=/[\t\n\f\r "#'()/;[\\\]{}]/g,wc=/[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g,kc=/.[\r\n"'(/\\]/,xc=/[\da-f]/i;let Sc=ql,Cc=class extends Sc{constructor(e){super(e),this.type="atrule"}append(...e){return this.proxyOf.nodes||(this.nodes=[]),super.append(...e)}prepend(...e){return this.proxyOf.nodes||(this.nodes=[]),super.prepend(...e)}};var Ic=Cc;Cc.default=Cc,Sc.registerAtRule(Cc);let Oc,Ec,Tc=ql,Lc=class extends Tc{constructor(e){super(e),this.type="root",this.nodes||(this.nodes=[])}normalize(e,t,n){let o=super.normalize(e);if(t)if("prepend"===n)this.nodes.length>1?t.raws.before=this.nodes[1].raws.before:delete t.raws.before;else if(this.first!==t)for(let r of o)r.raws.before=t.raws.before;return o}removeChild(e,t){let n=this.index(e);return!t&&0===n&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[n].raws.before),super.removeChild(e)}toResult(e={}){return new Oc(new Ec,this,e).stringify()}};Lc.registerLazyResult=e=>{Oc=e},Lc.registerProcessor=e=>{Ec=e};var Ac=Lc;Lc.default=Lc,Tc.registerRoot(Lc);let Mc={comma:e=>Mc.split(e,[","],!0),space:e=>Mc.split(e,[" ","\n","\t"]),split(e,t,n){let o=[],r="",i=!1,a=0,s=!1,l="",c=!1;for(let u of e)c?c=!1:"\\"===u?c=!0:s?u===l&&(s=!1):'"'===u||"'"===u?(s=!0,l=u):"("===u?a+=1:")"===u?a>0&&(a-=1):0===a&&t.includes(u)&&(i=!0),i?(""!==r&&o.push(r.trim()),r="",i=!1):r+=u;return(n||""!==r)&&o.push(r.trim()),o}};var Rc=Mc;Mc.default=Mc;let Pc=ql,Dc=Rc,Nc=class extends Pc{constructor(e){super(e),this.type="rule",this.nodes||(this.nodes=[])}get selectors(){return Dc.comma(this.selector)}set selectors(e){let t=this.selector?this.selector.match(/,\s*/):null,n=t?t[0]:","+this.raw("between","beforeOpen");this.selector=e.join(n)}};var jc=Nc;Nc.default=Nc,Pc.registerRule(Nc);let Fc=Vs,Bc=function(e,t={}){let n,o,r,i,a,s,l,c,u,d,p=e.css.valueOf(),h=t.ignoreErrors,f=p.length,m=0,g=[],v=[];function y(t){throw e.error("Unclosed "+t,m)}return{back:function(e){v.push(e)},endOfFile:function(){return 0===v.length&&m>=f},nextToken:function(e){if(v.length)return v.pop();if(m>=f)return;let t=!!e&&e.ignoreUnclosed;switch(n=p.charCodeAt(m),n){case rc:case ic:case sc:case lc:case ac:o=m;do{o+=1,n=p.charCodeAt(o)}while(n===ic||n===rc||n===sc||n===lc||n===ac);d=["space",p.slice(m,o)],m=o-1;break;case cc:case uc:case hc:case fc:case vc:case mc:case pc:{let e=String.fromCharCode(n);d=[e,e,m];break}case dc:if(c=g.length?g.pop()[1]:"",u=p.charCodeAt(m+1),"url"===c&&u!==ec&&u!==tc&&u!==ic&&u!==rc&&u!==sc&&u!==ac&&u!==lc){o=m;do{if(s=!1,o=p.indexOf(")",o+1),-1===o){if(h||t){o=m;break}y("bracket")}for(l=o;p.charCodeAt(l-1)===nc;)l-=1,s=!s}while(s);d=["brackets",p.slice(m,o+1),m,o],m=o}else o=p.indexOf(")",m+1),i=p.slice(m,o+1),-1===o||kc.test(i)?d=["(","(",m]:(d=["brackets",i,m,o],m=o);break;case ec:case tc:r=n===ec?"'":'"',o=m;do{if(s=!1,o=p.indexOf(r,o+1),-1===o){if(h||t){o=m+1;break}y("string")}for(l=o;p.charCodeAt(l-1)===nc;)l-=1,s=!s}while(s);d=["string",p.slice(m,o+1),m,o],m=o;break;case yc:bc.lastIndex=m+1,bc.test(p),o=0===bc.lastIndex?p.length-1:bc.lastIndex-2,d=["at-word",p.slice(m,o+1),m,o],m=o;break;case nc:for(o=m,a=!0;p.charCodeAt(o+1)===nc;)o+=1,a=!a;if(n=p.charCodeAt(o+1),a&&n!==oc&&n!==ic&&n!==rc&&n!==sc&&n!==lc&&n!==ac&&(o+=1,xc.test(p.charAt(o)))){for(;xc.test(p.charAt(o+1));)o+=1;p.charCodeAt(o+1)===ic&&(o+=1)}d=["word",p.slice(m,o+1),m,o],m=o;break;default:n===oc&&p.charCodeAt(m+1)===gc?(o=p.indexOf("*/",m+2)+1,0===o&&(h||t?o=p.length:y("comment")),d=["comment",p.slice(m,o+1),m,o],m=o):(wc.lastIndex=m+1,wc.test(p),o=0===wc.lastIndex?p.length-1:wc.lastIndex-2,d=["word",p.slice(m,o+1),m,o],g.push(d),m=o)}return m++,d},position:function(){return m}}},_c=Al,Uc=Ic,Hc=Ac,zc=jc;const qc={empty:!0,space:!0};var Wc=class{constructor(e){this.input=e,this.root=new Hc,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:e,start:{column:1,line:1,offset:0}}}atrule(e){let t,n,o,r=new Uc;r.name=e[1].slice(1),""===r.name&&this.unnamedAtrule(r,e),this.init(r,e[2]);let i=!1,a=!1,s=[],l=[];for(;!this.tokenizer.endOfFile();){if(t=(e=this.tokenizer.nextToken())[0],"("===t||"["===t?l.push("("===t?")":"]"):"{"===t&&l.length>0?l.push("}"):t===l[l.length-1]&&l.pop(),0===l.length){if(";"===t){r.source.end=this.getPosition(e[2]),r.source.end.offset++,this.semicolon=!0;break}if("{"===t){a=!0;break}if("}"===t){if(s.length>0){for(o=s.length-1,n=s[o];n&&"space"===n[0];)n=s[--o];n&&(r.source.end=this.getPosition(n[3]||n[2]),r.source.end.offset++)}this.end(e);break}s.push(e)}else s.push(e);if(this.tokenizer.endOfFile()){i=!0;break}}r.raws.between=this.spacesAndCommentsFromEnd(s),s.length?(r.raws.afterName=this.spacesAndCommentsFromStart(s),this.raw(r,"params",s),i&&(e=s[s.length-1],r.source.end=this.getPosition(e[3]||e[2]),r.source.end.offset++,this.spaces=r.raws.between,r.raws.between="")):(r.raws.afterName="",r.params=""),a&&(r.nodes=[],this.current=r)}checkMissedSemicolon(e){let t=this.colon(e);if(!1===t)return;let n,o=0;for(let r=t-1;r>=0&&(n=e[r],"space"===n[0]||(o+=1,2!==o));r--);throw this.input.error("Missed semicolon","word"===n[0]?n[3]+1:n[2])}colon(e){let t,n,o,r=0;for(let[i,a]of e.entries()){if(t=a,n=t[0],"("===n&&(r+=1),")"===n&&(r-=1),0===r&&":"===n){if(o){if("word"===o[0]&&"progid"===o[1])continue;return i}this.doubleColon(t)}o=t}return!1}comment(e){let t=new _c;this.init(t,e[2]),t.source.end=this.getPosition(e[3]||e[2]),t.source.end.offset++;let n=e[1].slice(2,-2);if(/^\s*$/.test(n))t.text="",t.raws.left=n,t.raws.right="";else{let e=n.match(/^(\s*)([^]*\S)(\s*)$/);t.text=e[2],t.raws.left=e[1],t.raws.right=e[3]}}createTokenizer(){this.tokenizer=Bc(this.input)}decl(e,t){let n=new Fc;this.init(n,e[0][2]);let o,r=e[e.length-1];for(";"===r[0]&&(this.semicolon=!0,e.pop()),n.source.end=this.getPosition(r[3]||r[2]||function(e){for(let t=e.length-1;t>=0;t--){let n=e[t],o=n[3]||n[2];if(o)return o}}(e)),n.source.end.offset++;"word"!==e[0][0];)1===e.length&&this.unknownWord(e),n.raws.before+=e.shift()[1];for(n.source.start=this.getPosition(e[0][2]),n.prop="";e.length;){let t=e[0][0];if(":"===t||"space"===t||"comment"===t)break;n.prop+=e.shift()[1]}for(n.raws.between="";e.length;){if(o=e.shift(),":"===o[0]){n.raws.between+=o[1];break}"word"===o[0]&&/\w/.test(o[1])&&this.unknownWord([o]),n.raws.between+=o[1]}"_"!==n.prop[0]&&"*"!==n.prop[0]||(n.raws.before+=n.prop[0],n.prop=n.prop.slice(1));let i,a=[];for(;e.length&&(i=e[0][0],"space"===i||"comment"===i);)a.push(e.shift());this.precheckMissedSemicolon(e);for(let s=e.length-1;s>=0;s--){if(o=e[s],"!important"===o[1].toLowerCase()){n.important=!0;let t=this.stringFrom(e,s);t=this.spacesFromEnd(e)+t," !important"!==t&&(n.raws.important=t);break}if("important"===o[1].toLowerCase()){let t=e.slice(0),o="";for(let e=s;e>0;e--){let n=t[e][0];if(0===o.trim().indexOf("!")&&"space"!==n)break;o=t.pop()[1]+o}0===o.trim().indexOf("!")&&(n.important=!0,n.raws.important=o,e=t)}if("space"!==o[0]&&"comment"!==o[0])break}e.some((e=>"space"!==e[0]&&"comment"!==e[0]))&&(n.raws.between+=a.map((e=>e[1])).join(""),a=[]),this.raw(n,"value",a.concat(e),t),n.value.includes(":")&&!t&&this.checkMissedSemicolon(e)}doubleColon(e){throw this.input.error("Double colon",{offset:e[2]},{offset:e[2]+e[1].length})}emptyRule(e){let t=new zc;this.init(t,e[2]),t.selector="",t.raws.between="",this.current=t}end(e){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(e[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(e)}endFile(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position())}freeSemicolon(e){if(this.spaces+=e[1],this.current.nodes){let e=this.current.nodes[this.current.nodes.length-1];e&&"rule"===e.type&&!e.raws.ownSemicolon&&(e.raws.ownSemicolon=this.spaces,this.spaces="")}}getPosition(e){let t=this.input.fromOffset(e);return{column:t.col,line:t.line,offset:e}}init(e,t){this.current.push(e),e.source={input:this.input,start:this.getPosition(t)},e.raws.before=this.spaces,this.spaces="","comment"!==e.type&&(this.semicolon=!1)}other(e){let t=!1,n=null,o=!1,r=null,i=[],a=e[1].startsWith("--"),s=[],l=e;for(;l;){if(n=l[0],s.push(l),"("===n||"["===n)r||(r=l),i.push("("===n?")":"]");else if(a&&o&&"{"===n)r||(r=l),i.push("}");else if(0===i.length){if(";"===n){if(o)return void this.decl(s,a);break}if("{"===n)return void this.rule(s);if("}"===n){this.tokenizer.back(s.pop()),t=!0;break}":"===n&&(o=!0)}else n===i[i.length-1]&&(i.pop(),0===i.length&&(r=null));l=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(t=!0),i.length>0&&this.unclosedBracket(r),t&&o){if(!a)for(;s.length&&(l=s[s.length-1][0],"space"===l||"comment"===l);)this.tokenizer.back(s.pop());this.decl(s,a)}else this.unknownWord(s)}parse(){let e;for(;!this.tokenizer.endOfFile();)switch(e=this.tokenizer.nextToken(),e[0]){case"space":this.spaces+=e[1];break;case";":this.freeSemicolon(e);break;case"}":this.end(e);break;case"comment":this.comment(e);break;case"at-word":this.atrule(e);break;case"{":this.emptyRule(e);break;default:this.other(e)}this.endFile()}precheckMissedSemicolon(){}raw(e,t,n,o){let r,i,a,s,l=n.length,c="",u=!0;for(let d=0;de+t[1]),"");e.raws[t]={raw:o,value:c}}e[t]=c}rule(e){e.pop();let t=new zc;this.init(t,e[0][2]),t.raws.between=this.spacesAndCommentsFromEnd(e),this.raw(t,"selector",e),this.current=t}spacesAndCommentsFromEnd(e){let t,n="";for(;e.length&&(t=e[e.length-1][0],"space"===t||"comment"===t);)n=e.pop()[1]+n;return n}spacesAndCommentsFromStart(e){let t,n="";for(;e.length&&(t=e[0][0],"space"===t||"comment"===t);)n+=e.shift()[1];return n}spacesFromEnd(e){let t,n="";for(;e.length&&(t=e[e.length-1][0],"space"===t);)n=e.pop()[1]+n;return n}stringFrom(e,t){let n="";for(let o=t;opu(e))),e}let hu={},fu=class e{constructor(t,n,o){let r;if(this.stringified=!1,this.processed=!1,"object"!=typeof n||null===n||"root"!==n.type&&"document"!==n.type)if(n instanceof e||n instanceof nu)r=pu(n.root),n.map&&(void 0===o.map&&(o.map={}),o.map.inline||(o.map.inline=!1),o.map.prev=n.map);else{let e=ou;o.syntax&&(e=o.syntax.parse),o.parser&&(e=o.parser),e.parse&&(e=e.parse);try{r=e(n,o)}catch(i){this.processed=!0,this.error=i}r&&!r[Xc]&&eu.rebuild(r)}else r=pu(n);this.result=new nu(t,r,o),this.helpers={...hu,postcss:hu,result:this.result},this.plugins=this.processor.plugins.map((e=>"object"==typeof e&&e.prepare?{...e,...e.prepare(this.result)}:e))}async(){return this.error?Promise.reject(this.error):this.processed?Promise.resolve(this.result):(this.processing||(this.processing=this.runAsync()),this.processing)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}getAsyncError(){throw new Error("Use process(css).then(cb) to work with async plugins")}handleError(e,t){let n=this.result.lastPlugin;try{t&&t.addToError(e),this.error=e,"CssSyntaxError"!==e.name||e.plugin?n.postcssVersion:(e.plugin=n.postcssPlugin,e.setMessage())}catch(o){console&&console.error&&console.error(o)}return e}prepareVisitors(){this.listeners={};let e=(e,t,n)=>{this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].push([e,n])};for(let t of this.plugins)if("object"==typeof t)for(let n in t){if(!au[n]&&/^[A-Z]/.test(n))throw new Error(`Unknown event ${n} in ${t.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`);if(!su[n])if("object"==typeof t[n])for(let o in t[n])e(t,"*"===o?n:n+"-"+o.toLowerCase(),t[n][o]);else"function"==typeof t[n]&&e(t,n,t[n])}this.hasListener=Object.keys(this.listeners).length>0}async runAsync(){this.plugin=0;for(let n=0;n0;){let e=this.visitTick(n);if(cu(e))try{await e}catch(t){let e=n[n.length-1].node;throw this.handleError(t,e)}}}if(this.listeners.OnceExit)for(let[n,o]of this.listeners.OnceExit){this.result.lastPlugin=n;try{if("document"===e.type){let t=e.nodes.map((e=>o(e,this.helpers)));await Promise.all(t)}else await o(e,this.helpers)}catch(t){throw this.handleError(t)}}}return this.processed=!0,this.stringify()}runOnRoot(e){this.result.lastPlugin=e;try{if("object"==typeof e&&e.Once){if("document"===this.result.root.type){let t=this.result.root.nodes.map((t=>e.Once(t,this.helpers)));return cu(t[0])?Promise.all(t):t}return e.Once(this.result.root,this.helpers)}if("function"==typeof e)return e(this.result.root,this.result)}catch(t){throw this.handleError(t)}}stringify(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();let e=this.result.opts,t=Qc;e.syntax&&(t=e.syntax.stringify),e.stringifier&&(t=e.stringifier),t.stringify&&(t=t.stringify);let n=new $c(t,this.result.root,this.result.opts).generate();return this.result.css=n[0],this.result.map=n[1],this.result}sync(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(let e of this.plugins){if(cu(this.runOnRoot(e)))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){let e=this.result.root;for(;!e[Yc];)e[Yc]=!0,this.walkSync(e);if(this.listeners.OnceExit)if("document"===e.type)for(let t of e.nodes)this.visitSync(this.listeners.OnceExit,t);else this.visitSync(this.listeners.OnceExit,e)}return this.result}then(e,t){return this.async().then(e,t)}toString(){return this.css}visitSync(e,t){for(let[o,r]of e){let e;this.result.lastPlugin=o;try{e=r(t,this.helpers)}catch(n){throw this.handleError(n,t.proxyOf)}if("root"!==t.type&&"document"!==t.type&&!t.parent)return!0;if(cu(e))throw this.getAsyncError()}}visitTick(e){let t=e[e.length-1],{node:n,visitors:o}=t;if("root"!==n.type&&"document"!==n.type&&!n.parent)return void e.pop();if(o.length>0&&t.visitorIndex{e[Yc]||this.walkSync(e)}));else{let t=this.listeners[n];if(t&&this.visitSync(t,e.toProxy()))return}}warnings(){return this.sync().warnings()}get content(){return this.stringify().content}get css(){return this.stringify().css}get map(){return this.stringify().map}get messages(){return this.sync().messages}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){return this.sync().root}get[Symbol.toStringTag](){return"LazyResult"}};fu.registerPostcss=e=>{hu=e};var mu=fu;fu.default=fu,ru.registerLazyResult(fu),tu.registerLazyResult(fu);let gu=El,vu=Ns,yu=Kc;const bu=Ql;let wu=class{constructor(e,t,n){let o;t=t.toString(),this.stringified=!1,this._processor=e,this._css=t,this._opts=n,this._map=void 0;let r=vu;this.result=new bu(this._processor,o,this._opts),this.result.css=t;let i=this;Object.defineProperty(this.result,"root",{get:()=>i.root});let a=new gu(r,o,this._opts,t);if(a.isMap()){let[e,t]=a.generate();e&&(this.result.css=e),t&&(this.result.map=t)}else a.clearAnnotation(),this.result.css=a.css}async(){return this.error?Promise.reject(this.error):Promise.resolve(this.result)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}sync(){if(this.error)throw this.error;return this.result}then(e,t){return this.async().then(e,t)}toString(){return this._css}warnings(){return[]}get content(){return this.result.css}get css(){return this.result.css}get map(){return this.result.map}get messages(){return[]}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){if(this._root)return this._root;let e,t=yu;try{e=t(this._css,this._opts)}catch(n){this.error=n}if(this.error)throw this.error;return this._root=e,e}get[Symbol.toStringTag](){return"NoWorkResult"}};var ku=wu;wu.default=wu;let xu=ku,Su=mu,Cu=Zl,Iu=Ac,Ou=class{constructor(e=[]){this.version="8.4.38",this.plugins=this.normalize(e)}normalize(e){let t=[];for(let n of e)if(!0===n.postcss?n=n():n.postcss&&(n=n.postcss),"object"==typeof n&&Array.isArray(n.plugins))t=t.concat(n.plugins);else if("object"==typeof n&&n.postcssPlugin)t.push(n);else if("function"==typeof n)t.push(n);else{if("object"!=typeof n||!n.parse&&!n.stringify)throw new Error(n+" is not a PostCSS plugin")}return t}process(e,t={}){return this.plugins.length||t.parser||t.stringifier||t.syntax?new Su(this,e,t):new xu(this,e,t)}use(e){return this.plugins=this.plugins.concat(this.normalize([e])),this}};var Eu=Ou;Ou.default=Ou,Iu.registerProcessor(Ou),Cu.registerProcessor(Ou);let Tu=Vs,Lu=tl,Au=Al,Mu=Ic,Ru=gl,Pu=Ac,Du=jc;function Nu(e,t){if(Array.isArray(e))return e.map((e=>Nu(e)));let{inputs:n,...o}=e;if(n){t=[];for(let e of n){let n={...e,__proto__:Ru.prototype};n.map&&(n.map={...n.map,__proto__:Lu.prototype}),t.push(n)}}if(o.nodes&&(o.nodes=e.nodes.map((e=>Nu(e,t)))),o.source){let{inputId:e,...n}=o.source;o.source=n,null!=e&&(o.source.input=t[e])}if("root"===o.type)return new Pu(o);if("decl"===o.type)return new Tu(o);if("rule"===o.type)return new Du(o);if("comment"===o.type)return new Au(o);if("atrule"===o.type)return new Mu(o);throw new Error("Unknown node type: "+e.type)}var ju=Nu;Nu.default=Nu;let Fu=Ts,Bu=Vs,_u=mu,Uu=ql,Hu=Eu,zu=Ns,qu=ju,Wu=Zl,Gu=Yl,Vu=Al,Ju=Ic,Zu=Ql,Ku=gl,Yu=Kc,Xu=Rc,$u=jc,Qu=Ac,ed=qs;function td(...e){return 1===e.length&&Array.isArray(e[0])&&(e=e[0]),new Hu(e)}td.plugin=function(e,t){let n,o=!1;function r(...n){console&&console.warn&&!o&&(o=!0,console.warn(e+": postcss.plugin was deprecated. Migration guide:\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration"),process.env.LANG&&process.env.LANG.startsWith("cn")&&console.warn(e+": 里面 postcss.plugin 被弃用. 迁移指南:\nhttps://www.w3ctech.com/topic/2226"));let r=t(...n);return r.postcssPlugin=e,r.postcssVersion=(new Hu).version,r}return Object.defineProperty(r,"postcss",{get:()=>(n||(n=r()),n)}),r.process=function(e,t,n){return td([r(n)]).process(e,t)},r},td.stringify=zu,td.parse=Yu,td.fromJSON=qu,td.list=Xu,td.comment=e=>new Vu(e),td.atRule=e=>new Ju(e),td.decl=e=>new Bu(e),td.rule=e=>new $u(e),td.root=e=>new Qu(e),td.document=e=>new Wu(e),td.CssSyntaxError=Fu,td.Declaration=Bu,td.Container=Uu,td.Processor=Hu,td.Document=Wu,td.Comment=Vu,td.Warning=Gu,td.AtRule=Ju,td.Result=Zu,td.Input=Ku,td.Rule=$u,td.Root=Qu,td.Node=ed,_u.registerPostcss(td);var nd=td;td.default=td;const od=ys(nd);od.stringify,od.fromJSON,od.plugin,od.parse,od.list,od.document,od.comment,od.atRule,od.rule,od.decl,od.root,od.CssSyntaxError,od.Declaration,od.Container,od.Processor,od.Document,od.Comment,od.Warning,od.AtRule,od.Result,od.Input,od.Rule,od.Root,od.Node;class rd{constructor(...e){vs(this,"parentElement",null),vs(this,"parentNode",null),vs(this,"ownerDocument"),vs(this,"firstChild",null),vs(this,"lastChild",null),vs(this,"previousSibling",null),vs(this,"nextSibling",null),vs(this,"ELEMENT_NODE",1),vs(this,"TEXT_NODE",3),vs(this,"nodeType"),vs(this,"nodeName"),vs(this,"RRNodeType")}get childNodes(){const e=[];let t=this.firstChild;for(;t;)e.push(t),t=t.nextSibling;return e}contains(e){if(!(e instanceof rd))return!1;if(e.ownerDocument!==this.ownerDocument)return!1;if(e===this)return!0;for(;e.parentNode;){if(e.parentNode===this)return!0;e=e.parentNode}return!1}appendChild(e){throw new Error("RRDomException: Failed to execute 'appendChild' on 'RRNode': This RRNode type does not support this method.")}insertBefore(e,t){throw new Error("RRDomException: Failed to execute 'insertBefore' on 'RRNode': This RRNode type does not support this method.")}removeChild(e){throw new Error("RRDomException: Failed to execute 'removeChild' on 'RRNode': This RRNode type does not support this method.")}toString(){return"RRNode"}}const id={Node:["childNodes","parentNode","parentElement","textContent"],ShadowRoot:["host","styleSheets"],Element:["shadowRoot","querySelector","querySelectorAll"],MutationObserver:[]},ad={Node:["contains","getRootNode"],ShadowRoot:["getSelection"],Element:[],MutationObserver:["constructor"]},sd={},ld=()=>!!globalThis.Zone;function cd(e){if(sd[e])return sd[e];const t=globalThis[e],n=t.prototype,o=e in id?id[e]:void 0,r=Boolean(o&&o.every((e=>{var t,o;return Boolean(null==(o=null==(t=Object.getOwnPropertyDescriptor(n,e))?void 0:t.get)?void 0:o.toString().includes("[native code]"))}))),i=e in ad?ad[e]:void 0,a=Boolean(i&&i.every((e=>{var t;return"function"==typeof n[e]&&(null==(t=n[e])?void 0:t.toString().includes("[native code]"))})));if(r&&a&&!ld())return sd[e]=t.prototype,t.prototype;try{const o=document.createElement("iframe");document.body.appendChild(o);const r=o.contentWindow;if(!r)return t.prototype;const i=r[e].prototype;return document.body.removeChild(o),i?sd[e]=i:n}catch{return n}}const ud={};function dd(e,t,n){var o;const r=`${e}.${String(n)}`;if(ud[r])return ud[r].call(t);const i=cd(e),a=null==(o=Object.getOwnPropertyDescriptor(i,n))?void 0:o.get;return a?(ud[r]=a,a.call(t)):t[n]}const pd={};function hd(e,t,n){const o=`${e}.${String(n)}`;if(pd[o])return pd[o].bind(t);const r=cd(e)[n];return"function"!=typeof r?t[n]:(pd[o]=r,r.bind(t))}function fd(){return cd("MutationObserver").constructor}const md={childNodes:function(e){return dd("Node",e,"childNodes")},parentNode:function(e){return dd("Node",e,"parentNode")},parentElement:function(e){return dd("Node",e,"parentElement")},textContent:function(e){return dd("Node",e,"textContent")},contains:function(e,t){return hd("Node",e,"contains")(t)},getRootNode:function(e){return hd("Node",e,"getRootNode")()},host:function(e){return e&&"host"in e?dd("ShadowRoot",e,"host"):null},styleSheets:function(e){return e.styleSheets},shadowRoot:function(e){return e&&"shadowRoot"in e?dd("Element",e,"shadowRoot"):null},querySelector:function(e,t){return dd("Element",e,"querySelector")(t)},querySelectorAll:function(e,t){return dd("Element",e,"querySelectorAll")(t)},mutationObserver:fd};function gd(e,t,n=document){const o={capture:!0,passive:!0};return n.addEventListener(e,t,o),()=>n.removeEventListener(e,t,o)}const vd="Please stop import mirror directly. Instead of that,\r\nnow you can use replayer.getMirror() to access the mirror instance of a replayer,\r\nor you can use record.mirror to access the mirror instance during recording.";let yd={map:{},getId:()=>(console.error(vd),-1),getNode:()=>(console.error(vd),null),removeNodeFromMap(){console.error(vd)},has:()=>(console.error(vd),!1),reset(){console.error(vd)}};function bd(e,t,n={}){let o=null,r=0;return function(...i){const a=Date.now();r||!1!==n.leading||(r=a);const s=t-(a-r),l=this;s<=0||s>t?(o&&(clearTimeout(o),o=null),r=a,e.apply(l,i)):o||!1===n.trailing||(o=setTimeout((()=>{r=!1===n.leading?0:Date.now(),o=null,e.apply(l,i)}),s))}}function wd(e,t,n,o,r=window){const i=r.Object.getOwnPropertyDescriptor(e,t);return r.Object.defineProperty(e,t,o?n:{set(e){setTimeout((()=>{n.set.call(this,e)}),0),i&&i.set&&i.set.call(this,e)}}),()=>wd(e,t,i||{},!0)}function kd(e,t,n){try{if(!(t in e))return()=>{};const o=e[t],r=n(o);return"function"==typeof r&&(r.prototype=r.prototype||{},Object.defineProperties(r,{__rrweb_original__:{enumerable:!1,value:o}})),e[t]=r,()=>{e[t]=o}}catch{return()=>{}}}"undefined"!=typeof window&&window.Proxy&&window.Reflect&&(yd=new Proxy(yd,{get:(e,t,n)=>("map"===t&&console.error(vd),Reflect.get(e,t,n))}));let xd=Date.now;function Sd(e){var t,n,o,r;const i=e.document;return{left:i.scrollingElement?i.scrollingElement.scrollLeft:void 0!==e.pageXOffset?e.pageXOffset:i.documentElement.scrollLeft||(null==i?void 0:i.body)&&(null==(t=md.parentElement(i.body))?void 0:t.scrollLeft)||(null==(n=null==i?void 0:i.body)?void 0:n.scrollLeft)||0,top:i.scrollingElement?i.scrollingElement.scrollTop:void 0!==e.pageYOffset?e.pageYOffset:(null==i?void 0:i.documentElement.scrollTop)||(null==i?void 0:i.body)&&(null==(o=md.parentElement(i.body))?void 0:o.scrollTop)||(null==(r=null==i?void 0:i.body)?void 0:r.scrollTop)||0}}function Cd(){return window.innerHeight||document.documentElement&&document.documentElement.clientHeight||document.body&&document.body.clientHeight}function Id(){return window.innerWidth||document.documentElement&&document.documentElement.clientWidth||document.body&&document.body.clientWidth}function Od(e){if(!e)return null;return e.nodeType===e.ELEMENT_NODE?e:md.parentElement(e)}function Ed(e,t,n,o){if(!e)return!1;const r=Od(e);if(!r)return!1;try{if("string"==typeof t){if(r.classList.contains(t))return!0;if(o&&null!==r.closest("."+t))return!0}else if(Io(r,t,o))return!0}catch(i){}if(n){if(r.matches(n))return!0;if(o&&null!==r.closest(n))return!0}return!1}function Td(e,t,n){return!("TITLE"!==e.tagName||!n.headTitleMutations)||t.getId(e)===ho}function Ld(e,t){if(Jn(e))return!1;const n=t.getId(e);if(!t.has(n))return!0;const o=md.parentNode(e);return(!o||o.nodeType!==e.DOCUMENT_NODE)&&(!o||Ld(o,t))}function Ad(e){return Boolean(e.changedTouches)}function Md(e,t){return Boolean("IFRAME"===e.nodeName&&t.getMeta(e))}function Rd(e,t){return Boolean("LINK"===e.nodeName&&e.nodeType===e.ELEMENT_NODE&&e.getAttribute&&"stylesheet"===e.getAttribute("rel")&&t.getMeta(e))}function Pd(e){return!!e&&(e instanceof rd&&"shadowRoot"in e?Boolean(e.shadowRoot):Boolean(md.shadowRoot(e)))}/[1-9][0-9]{12}/.test(Date.now().toString())||(xd=()=>(new Date).getTime());class Dd{constructor(){Rn(this,"id",1),Rn(this,"styleIDMap",new WeakMap),Rn(this,"idStyleMap",new Map)}getId(e){return this.styleIDMap.get(e)??-1}has(e){return this.styleIDMap.has(e)}add(e,t){if(this.has(e))return this.getId(e);let n;return n=void 0===t?this.id++:t,this.styleIDMap.set(e,n),this.idStyleMap.set(n,e),n}getStyle(e){return this.idStyleMap.get(e)||null}reset(){this.styleIDMap=new WeakMap,this.idStyleMap=new Map,this.id=1}generateId(){return this.id++}}function Nd(e){var t;let n=null;return"getRootNode"in e&&(null==(t=md.getRootNode(e))?void 0:t.nodeType)===Node.DOCUMENT_FRAGMENT_NODE&&md.host(md.getRootNode(e))&&(n=md.host(md.getRootNode(e))),n}function jd(e){const t=e.ownerDocument;if(!t)return!1;const n=function(e){let t,n=e;for(;t=Nd(n);)n=t;return n}(e);return md.contains(t,n)}function Fd(e){const t=e.ownerDocument;return!!t&&(md.contains(t,e)||jd(e))}var Bd=(e=>(e[e.DomContentLoaded=0]="DomContentLoaded",e[e.Load=1]="Load",e[e.FullSnapshot=2]="FullSnapshot",e[e.IncrementalSnapshot=3]="IncrementalSnapshot",e[e.Meta=4]="Meta",e[e.Custom=5]="Custom",e[e.Plugin=6]="Plugin",e))(Bd||{}),_d=(e=>(e[e.Mutation=0]="Mutation",e[e.MouseMove=1]="MouseMove",e[e.MouseInteraction=2]="MouseInteraction",e[e.Scroll=3]="Scroll",e[e.ViewportResize=4]="ViewportResize",e[e.Input=5]="Input",e[e.TouchMove=6]="TouchMove",e[e.MediaInteraction=7]="MediaInteraction",e[e.StyleSheetRule=8]="StyleSheetRule",e[e.CanvasMutation=9]="CanvasMutation",e[e.Font=10]="Font",e[e.Log=11]="Log",e[e.Drag=12]="Drag",e[e.StyleDeclaration=13]="StyleDeclaration",e[e.Selection=14]="Selection",e[e.AdoptedStyleSheet=15]="AdoptedStyleSheet",e[e.CustomElement=16]="CustomElement",e))(_d||{}),Ud=(e=>(e[e.MouseUp=0]="MouseUp",e[e.MouseDown=1]="MouseDown",e[e.Click=2]="Click",e[e.ContextMenu=3]="ContextMenu",e[e.DblClick=4]="DblClick",e[e.Focus=5]="Focus",e[e.Blur=6]="Blur",e[e.TouchStart=7]="TouchStart",e[e.TouchMove_Departed=8]="TouchMove_Departed",e[e.TouchEnd=9]="TouchEnd",e[e.TouchCancel=10]="TouchCancel",e))(Ud||{}),Hd=(e=>(e[e.Mouse=0]="Mouse",e[e.Pen=1]="Pen",e[e.Touch=2]="Touch",e))(Hd||{}),zd=(e=>(e[e["2D"]=0]="2D",e[e.WebGL=1]="WebGL",e[e.WebGL2=2]="WebGL2",e))(zd||{}),qd=(e=>(e[e.Play=0]="Play",e[e.Pause=1]="Pause",e[e.Seeked=2]="Seeked",e[e.VolumeChange=3]="VolumeChange",e[e.RateChange=4]="RateChange",e))(qd||{}),Wd=(e=>(e[e.Document=0]="Document",e[e.DocumentType=1]="DocumentType",e[e.Element=2]="Element",e[e.Text=3]="Text",e[e.CDATA=4]="CDATA",e[e.Comment=5]="Comment",e))(Wd||{});function Gd(e){return"__ln"in e}class Vd{constructor(){Rn(this,"length",0),Rn(this,"head",null),Rn(this,"tail",null)}get(e){if(e>=this.length)throw new Error("Position outside of list range");let t=this.head;for(let n=0;n`${e}@${t}`;class Zd{constructor(){Rn(this,"frozen",!1),Rn(this,"locked",!1),Rn(this,"texts",[]),Rn(this,"attributes",[]),Rn(this,"attributeMap",new WeakMap),Rn(this,"removes",[]),Rn(this,"mapRemoves",[]),Rn(this,"movedMap",{}),Rn(this,"addedSet",new Set),Rn(this,"movedSet",new Set),Rn(this,"droppedSet",new Set),Rn(this,"removesSubTreeCache",new Set),Rn(this,"mutationCb"),Rn(this,"blockClass"),Rn(this,"blockSelector"),Rn(this,"maskTextClass"),Rn(this,"maskTextSelector"),Rn(this,"inlineStylesheet"),Rn(this,"maskInputOptions"),Rn(this,"maskTextFn"),Rn(this,"maskInputFn"),Rn(this,"keepIframeSrcFn"),Rn(this,"recordCanvas"),Rn(this,"inlineImages"),Rn(this,"slimDOMOptions"),Rn(this,"dataURLOptions"),Rn(this,"doc"),Rn(this,"mirror"),Rn(this,"iframeManager"),Rn(this,"stylesheetManager"),Rn(this,"shadowDomManager"),Rn(this,"canvasManager"),Rn(this,"processedNodeManager"),Rn(this,"unattachedDoc"),Rn(this,"processMutations",(e=>{e.forEach(this.processMutation),this.emit()})),Rn(this,"emit",(()=>{if(this.frozen||this.locked)return;const e=[],t=new Set,n=new Vd,o=e=>{let t=e,n=ho;for(;n===ho;)t=t&&t.nextSibling,n=t&&this.mirror.getId(t);return n},r=r=>{const i=md.parentNode(r);if(!i||!Fd(r))return;let a=!1;if(r.nodeType===Node.TEXT_NODE){const e=i.tagName;if("TEXTAREA"===e)return;"STYLE"===e&&this.addedSet.has(i)&&(a=!0)}const s=Jn(i)?this.mirror.getId(Nd(r)):this.mirror.getId(i),l=o(r);if(-1===s||-1===l)return n.addNode(r);const c=Lo(r,{doc:this.doc,mirror:this.mirror,blockClass:this.blockClass,blockSelector:this.blockSelector,maskTextClass:this.maskTextClass,maskTextSelector:this.maskTextSelector,skipChild:!0,newlyAddedElement:!0,inlineStylesheet:this.inlineStylesheet,maskInputOptions:this.maskInputOptions,maskTextFn:this.maskTextFn,maskInputFn:this.maskInputFn,slimDOMOptions:this.slimDOMOptions,dataURLOptions:this.dataURLOptions,recordCanvas:this.recordCanvas,inlineImages:this.inlineImages,onSerialize:e=>{Md(e,this.mirror)&&this.iframeManager.addIframe(e),Rd(e,this.mirror)&&this.stylesheetManager.trackLinkElement(e),Pd(r)&&this.shadowDomManager.addShadowRoot(md.shadowRoot(r),this.doc)},onIframeLoad:(e,t)=>{this.iframeManager.attachIframe(e,t),this.shadowDomManager.observeAttachShadow(e)},onStylesheetLoad:(e,t)=>{this.stylesheetManager.attachLinkElement(e,t)},cssCaptured:a});c&&(e.push({parentId:s,nextId:l,node:c}),t.add(c.id))};for(;this.mapRemoves.length;)this.mirror.removeNodeFromMap(this.mapRemoves.shift());for(const s of this.movedSet)Yd(this.removesSubTreeCache,s,this.mirror)&&!this.movedSet.has(md.parentNode(s))||r(s);for(const s of this.addedSet)Xd(this.droppedSet,s)||Yd(this.removesSubTreeCache,s,this.mirror)?Xd(this.movedSet,s)?r(s):this.droppedSet.add(s):r(s);let i=null;for(;n.length;){let e=null;if(i){const t=this.mirror.getId(md.parentNode(i.value)),n=o(i.value);-1!==t&&-1!==n&&(e=i)}if(!e){let t=n.tail;for(;t;){const n=t;if(t=t.previous,n){const t=this.mirror.getId(md.parentNode(n.value));if(-1===o(n.value))continue;if(-1!==t){e=n;break}{const t=n.value,o=md.parentNode(t);if(o&&o.nodeType===Node.DOCUMENT_FRAGMENT_NODE){const t=md.host(o);if(-1!==this.mirror.getId(t)){e=n;break}}}}}}if(!e){for(;n.head;)n.removeNode(n.head.value);break}i=e.previous,n.removeNode(e.value),r(e.value)}const a={texts:this.texts.map((e=>{const t=e.node,n=md.parentNode(t);return n&&"TEXTAREA"===n.tagName&&this.genTextAreaValueMutation(n),{id:this.mirror.getId(t),value:e.value}})).filter((e=>!t.has(e.id))).filter((e=>this.mirror.has(e.id))),attributes:this.attributes.map((e=>{const{attributes:t}=e;if("string"==typeof t.style){const n=JSON.stringify(e.styleDiff),o=JSON.stringify(e._unchangedStyles);n.length!t.has(e.id))).filter((e=>this.mirror.has(e.id))),removes:this.removes,adds:e};(a.texts.length||a.attributes.length||a.removes.length||a.adds.length)&&(this.texts=[],this.attributes=[],this.attributeMap=new WeakMap,this.removes=[],this.addedSet=new Set,this.movedSet=new Set,this.droppedSet=new Set,this.removesSubTreeCache=new Set,this.movedMap={},this.mutationCb(a))})),Rn(this,"genTextAreaValueMutation",(e=>{let t=this.attributeMap.get(e);t||(t={node:e,attributes:{},styleDiff:{},_unchangedStyles:{}},this.attributes.push(t),this.attributeMap.set(e,t)),t.attributes.value=Array.from(md.childNodes(e),(e=>md.textContent(e)||"")).join("")})),Rn(this,"processMutation",(e=>{if(!Td(e.target,this.mirror,this.slimDOMOptions))switch(e.type){case"characterData":{const t=md.textContent(e.target);Ed(e.target,this.blockClass,this.blockSelector,!1)||t===e.oldValue||this.texts.push({value:Oo(e.target,this.maskTextClass,this.maskTextSelector,!0)&&t?this.maskTextFn?this.maskTextFn(t,Od(e.target)):t.replace(/[\S]/g,"*"):t,node:e.target});break}case"attributes":{const n=e.target;let o=e.attributeName,r=e.target.getAttribute(o);if("value"===o){const e=to(n);r=$n({element:n,maskInputOptions:this.maskInputOptions,tagName:n.tagName,type:e,value:r,maskInputFn:this.maskInputFn})}if(Ed(e.target,this.blockClass,this.blockSelector,!1)||r===e.oldValue)return;let i=this.attributeMap.get(e.target);if("IFRAME"===n.tagName&&"src"===o&&!this.keepIframeSrcFn(r)){if(n.contentDocument)return;o="rr_src"}if(i||(i={node:e.target,attributes:{},styleDiff:{},_unchangedStyles:{}},this.attributes.push(i),this.attributeMap.set(e.target,i)),"type"===o&&"INPUT"===n.tagName&&"password"===(e.oldValue||"").toLowerCase()&&n.setAttribute("data-rr-is-password","true"),!Co(n.tagName,o))if(i.attributes[o]=So(this.doc,Qn(n.tagName),Qn(o),r),"style"===o){if(!this.unattachedDoc)try{this.unattachedDoc=document.implementation.createHTMLDocument()}catch(t){this.unattachedDoc=this.doc}const o=this.unattachedDoc.createElement("span");e.oldValue&&o.setAttribute("style",e.oldValue);for(const e of Array.from(n.style)){const t=n.style.getPropertyValue(e),r=n.style.getPropertyPriority(e);t!==o.style.getPropertyValue(e)||r!==o.style.getPropertyPriority(e)?i.styleDiff[e]=""===r?t:[t,r]:i._unchangedStyles[e]=[t,r]}for(const e of Array.from(o.style))""===n.style.getPropertyValue(e)&&(i.styleDiff[e]=!1)}else"open"===o&&"DIALOG"===n.tagName&&(n.matches("dialog:modal")?i.attributes.rr_open_mode="modal":i.attributes.rr_open_mode="non-modal");break}case"childList":if(Ed(e.target,this.blockClass,this.blockSelector,!0))return;if("TEXTAREA"===e.target.tagName)return void this.genTextAreaValueMutation(e.target);e.addedNodes.forEach((t=>this.genAdds(t,e.target))),e.removedNodes.forEach((t=>{const n=this.mirror.getId(t),o=Jn(e.target)?this.mirror.getId(md.host(e.target)):this.mirror.getId(e.target);Ed(e.target,this.blockClass,this.blockSelector,!1)||Td(t,this.mirror,this.slimDOMOptions)||!function(e,t){return-1!==t.getId(e)}(t,this.mirror)||(this.addedSet.has(t)?(Kd(this.addedSet,t),this.droppedSet.add(t)):this.addedSet.has(e.target)&&-1===n||Ld(e.target,this.mirror)||(this.movedSet.has(t)&&this.movedMap[Jd(n,o)]?Kd(this.movedSet,t):(this.removes.push({parentId:o,id:n,isShadow:!(!Jn(e.target)||!Zn(e.target))||void 0}),function(e,t){const n=[e];for(;n.length;){const e=n.pop();t.has(e)||(t.add(e),md.childNodes(e).forEach((e=>n.push(e))))}}(t,this.removesSubTreeCache))),this.mapRemoves.push(t))}))}})),Rn(this,"genAdds",((e,t)=>{if(!this.processedNodeManager.inOtherBuffer(e,this)&&!this.addedSet.has(e)&&!this.movedSet.has(e)){if(this.mirror.hasNode(e)){if(Td(e,this.mirror,this.slimDOMOptions))return;this.movedSet.add(e);let n=null;t&&this.mirror.hasNode(t)&&(n=this.mirror.getId(t)),n&&-1!==n&&(this.movedMap[Jd(this.mirror.getId(e),n)]=!0)}else this.addedSet.add(e),this.droppedSet.delete(e);Ed(e,this.blockClass,this.blockSelector,!1)||(md.childNodes(e).forEach((e=>this.genAdds(e))),Pd(e)&&md.childNodes(md.shadowRoot(e)).forEach((t=>{this.processedNodeManager.add(t,this),this.genAdds(t,e)})))}}))}init(e){["mutationCb","blockClass","blockSelector","maskTextClass","maskTextSelector","inlineStylesheet","maskInputOptions","maskTextFn","maskInputFn","keepIframeSrcFn","recordCanvas","inlineImages","slimDOMOptions","dataURLOptions","doc","mirror","iframeManager","stylesheetManager","shadowDomManager","canvasManager","processedNodeManager"].forEach((t=>{this[t]=e[t]}))}freeze(){this.frozen=!0,this.canvasManager.freeze()}unfreeze(){this.frozen=!1,this.canvasManager.unfreeze(),this.emit()}isFrozen(){return this.frozen}lock(){this.locked=!0,this.canvasManager.lock()}unlock(){this.locked=!1,this.canvasManager.unlock(),this.emit()}reset(){this.shadowDomManager.reset(),this.canvasManager.reset()}}function Kd(e,t){e.delete(t),md.childNodes(t).forEach((t=>Kd(e,t)))}function Yd(e,t,n){return 0!==e.size&&function(e,t,n){const o=md.parentNode(t);return!!o&&e.has(o)}(e,t)}function Xd(e,t){return 0!==e.size&&$d(e,t)}function $d(e,t){const n=md.parentNode(t);return!!n&&(!!e.has(n)||$d(e,n))}let Qd;const ep=e=>{if(!Qd)return e;return(...t)=>{try{return e(...t)}catch(n){if(Qd&&!0===Qd(n))return;throw n}}},tp=[];function np(e){try{if("composedPath"in e){const t=e.composedPath();if(t.length)return t[0]}else if("path"in e&&e.path.length)return e.path[0]}catch{}return e&&e.target}function op(e,t){const n=new Zd;tp.push(n),n.init(e);const o=new(fd())(ep(n.processMutations.bind(n)));return o.observe(t,{attributes:!0,attributeOldValue:!0,characterData:!0,characterDataOldValue:!0,childList:!0,subtree:!0}),o}function rp({mouseInteractionCb:e,doc:t,mirror:n,blockClass:o,blockSelector:r,sampling:i}){if(!1===i.mouseInteraction)return()=>{};const a=!0===i.mouseInteraction||void 0===i.mouseInteraction?{}:i.mouseInteraction,s=[];let l=null;return Object.keys(Ud).filter((e=>Number.isNaN(Number(e))&&!e.endsWith("_Departed")&&!1!==a[e])).forEach((i=>{let a=Qn(i);const c=(t=>i=>{const a=np(i);if(Ed(a,o,r,!0))return;let s=null,c=t;if("pointerType"in i){switch(i.pointerType){case"mouse":s=Hd.Mouse;break;case"touch":s=Hd.Touch;break;case"pen":s=Hd.Pen}s===Hd.Touch?Ud[t]===Ud.MouseDown?c="TouchStart":Ud[t]===Ud.MouseUp&&(c="TouchEnd"):Hd.Pen}else Ad(i)&&(s=Hd.Touch);null!==s?(l=s,(c.startsWith("Touch")&&s===Hd.Touch||c.startsWith("Mouse")&&s===Hd.Mouse)&&(s=null)):Ud[t]===Ud.Click&&(s=l,l=null);const u=Ad(i)?i.changedTouches[0]:i;if(!u)return;const d=n.getId(a),{clientX:p,clientY:h}=u;ep(e)({type:Ud[c],id:d,x:p,y:h,...null!==s&&{pointerType:s}})})(i);if(window.PointerEvent)switch(Ud[i]){case Ud.MouseDown:case Ud.MouseUp:a=a.replace("mouse","pointer");break;case Ud.TouchStart:case Ud.TouchEnd:return}s.push(gd(a,c,t))})),ep((()=>{s.forEach((e=>e()))}))}function ip({scrollCb:e,doc:t,mirror:n,blockClass:o,blockSelector:r,sampling:i}){return gd("scroll",ep(bd(ep((i=>{const a=np(i);if(!a||Ed(a,o,r,!0))return;const s=n.getId(a);if(a===t&&t.defaultView){const n=Sd(t.defaultView);e({id:s,x:n.left,y:n.top})}else e({id:s,x:a.scrollLeft,y:a.scrollTop})})),i.scroll||100)),t)}const ap=["INPUT","TEXTAREA","SELECT"],sp=new WeakMap;function lp(e){return function(e,t){if(pp("CSSGroupingRule")&&e.parentRule instanceof CSSGroupingRule||pp("CSSMediaRule")&&e.parentRule instanceof CSSMediaRule||pp("CSSSupportsRule")&&e.parentRule instanceof CSSSupportsRule||pp("CSSConditionRule")&&e.parentRule instanceof CSSConditionRule){const n=Array.from(e.parentRule.cssRules).indexOf(e);t.unshift(n)}else if(e.parentStyleSheet){const n=Array.from(e.parentStyleSheet.cssRules).indexOf(e);t.unshift(n)}return t}(e,[])}function cp(e,t,n){let o,r;return e?(e.ownerNode?o=t.getId(e.ownerNode):r=n.getId(e),{styleId:r,id:o}):{}}function up({mirror:e,stylesheetManager:t},n){var o,r,i;let a=null;a="#document"===n.nodeName?e.getId(n):e.getId(md.host(n));const s="#document"===n.nodeName?null==(o=n.defaultView)?void 0:o.Document:null==(i=null==(r=n.ownerDocument)?void 0:r.defaultView)?void 0:i.ShadowRoot,l=(null==s?void 0:s.prototype)?Object.getOwnPropertyDescriptor(null==s?void 0:s.prototype,"adoptedStyleSheets"):void 0;return null!==a&&-1!==a&&s&&l?(Object.defineProperty(n,"adoptedStyleSheets",{configurable:l.configurable,enumerable:l.enumerable,get(){var e;return null==(e=l.get)?void 0:e.call(this)},set(e){var n;const o=null==(n=l.set)?void 0:n.call(this,e);if(null!==a&&-1!==a)try{t.adoptStyleSheets(e,a)}catch(r){}return o}}),ep((()=>{Object.defineProperty(n,"adoptedStyleSheets",{configurable:l.configurable,enumerable:l.enumerable,get:l.get,set:l.set})}))):()=>{}}function dp(e,t={}){const n=e.doc.defaultView;if(!n)return()=>{};let o;!function(e,t){const{mutationCb:n,mousemoveCb:o,mouseInteractionCb:r,scrollCb:i,viewportResizeCb:a,inputCb:s,mediaInteractionCb:l,styleSheetRuleCb:c,styleDeclarationCb:u,canvasMutationCb:d,fontCb:p,selectionCb:h,customElementCb:f}=e;e.mutationCb=(...e)=>{t.mutation&&t.mutation(...e),n(...e)},e.mousemoveCb=(...e)=>{t.mousemove&&t.mousemove(...e),o(...e)},e.mouseInteractionCb=(...e)=>{t.mouseInteraction&&t.mouseInteraction(...e),r(...e)},e.scrollCb=(...e)=>{t.scroll&&t.scroll(...e),i(...e)},e.viewportResizeCb=(...e)=>{t.viewportResize&&t.viewportResize(...e),a(...e)},e.inputCb=(...e)=>{t.input&&t.input(...e),s(...e)},e.mediaInteractionCb=(...e)=>{t.mediaInteaction&&t.mediaInteaction(...e),l(...e)},e.styleSheetRuleCb=(...e)=>{t.styleSheetRule&&t.styleSheetRule(...e),c(...e)},e.styleDeclarationCb=(...e)=>{t.styleDeclaration&&t.styleDeclaration(...e),u(...e)},e.canvasMutationCb=(...e)=>{t.canvasMutation&&t.canvasMutation(...e),d(...e)},e.fontCb=(...e)=>{t.font&&t.font(...e),p(...e)},e.selectionCb=(...e)=>{t.selection&&t.selection(...e),h(...e)},e.customElementCb=(...e)=>{t.customElement&&t.customElement(...e),f(...e)}}(e,t),e.recordDOM&&(o=op(e,e.doc));const r=function({mousemoveCb:e,sampling:t,doc:n,mirror:o}){if(!1===t.mousemove)return()=>{};const r="number"==typeof t.mousemove?t.mousemove:50,i="number"==typeof t.mousemoveCallback?t.mousemoveCallback:500;let a,s=[];const l=bd(ep((t=>{const n=Date.now()-a;e(s.map((e=>(e.timeOffset-=n,e))),t),s=[],a=null})),i),c=ep(bd(ep((e=>{const t=np(e),{clientX:n,clientY:r}=Ad(e)?e.changedTouches[0]:e;a||(a=xd()),s.push({x:n,y:r,id:o.getId(t),timeOffset:xd()-a}),l("undefined"!=typeof DragEvent&&e instanceof DragEvent?_d.Drag:e instanceof MouseEvent?_d.MouseMove:_d.TouchMove)})),r,{trailing:!1})),u=[gd("mousemove",c,n),gd("touchmove",c,n),gd("drag",c,n)];return ep((()=>{u.forEach((e=>e()))}))}(e),i=rp(e),a=ip(e),s=function({viewportResizeCb:e},{win:t}){let n=-1,o=-1;return gd("resize",ep(bd(ep((()=>{const t=Cd(),r=Id();n===t&&o===r||(e({width:Number(r),height:Number(t)}),n=t,o=r)})),200)),t)}(e,{win:n}),l=function({inputCb:e,doc:t,mirror:n,blockClass:o,blockSelector:r,ignoreClass:i,ignoreSelector:a,maskInputOptions:s,maskInputFn:l,sampling:c,userTriggeredOnInput:u}){function d(e){let n=np(e);const c=e.isTrusted,d=n&&n.tagName;if(n&&"OPTION"===d&&(n=md.parentElement(n)),!n||!d||ap.indexOf(d)<0||Ed(n,o,r,!0))return;if(n.classList.contains(i)||a&&n.matches(a))return;let h=n.value,f=!1;const m=to(n)||"";"radio"===m||"checkbox"===m?f=n.checked:(s[d.toLowerCase()]||s[m])&&(h=$n({element:n,maskInputOptions:s,tagName:d,type:m,value:h,maskInputFn:l})),p(n,u?{text:h,isChecked:f,userTriggered:c}:{text:h,isChecked:f});const g=n.name;"radio"===m&&g&&f&&t.querySelectorAll(`input[type="radio"][name="${g}"]`).forEach((e=>{if(e!==n){const t=e.value;p(e,u?{text:t,isChecked:!f,userTriggered:!1}:{text:t,isChecked:!f})}}))}function p(t,o){const r=sp.get(t);if(!r||r.text!==o.text||r.isChecked!==o.isChecked){sp.set(t,o);const r=n.getId(t);ep(e)({...o,id:r})}}const h=("last"===c.input?["change"]:["input","change"]).map((e=>gd(e,ep(d),t))),f=t.defaultView;if(!f)return()=>{h.forEach((e=>e()))};const m=f.Object.getOwnPropertyDescriptor(f.HTMLInputElement.prototype,"value"),g=[[f.HTMLInputElement.prototype,"value"],[f.HTMLInputElement.prototype,"checked"],[f.HTMLSelectElement.prototype,"value"],[f.HTMLTextAreaElement.prototype,"value"],[f.HTMLSelectElement.prototype,"selectedIndex"],[f.HTMLOptionElement.prototype,"selected"]];return m&&m.set&&h.push(...g.map((e=>wd(e[0],e[1],{set(){ep(d)({target:this,isTrusted:!1})}},!1,f)))),ep((()=>{h.forEach((e=>e()))}))}(e),c=function({mediaInteractionCb:e,blockClass:t,blockSelector:n,mirror:o,sampling:r,doc:i}){const a=ep((i=>bd(ep((r=>{const a=np(r);if(!a||Ed(a,t,n,!0))return;const{currentTime:s,volume:l,muted:c,playbackRate:u,loop:d}=a;e({type:i,id:o.getId(a),currentTime:s,volume:l,muted:c,playbackRate:u,loop:d})})),r.media||500))),s=[gd("play",a(qd.Play),i),gd("pause",a(qd.Pause),i),gd("seeked",a(qd.Seeked),i),gd("volumechange",a(qd.VolumeChange),i),gd("ratechange",a(qd.RateChange),i)];return ep((()=>{s.forEach((e=>e()))}))}(e);let u=()=>{},d=()=>{},p=()=>{},h=()=>{};e.recordDOM&&(u=function({styleSheetRuleCb:e,mirror:t,stylesheetManager:n},{win:o}){if(!o.CSSStyleSheet||!o.CSSStyleSheet.prototype)return()=>{};const r=o.CSSStyleSheet.prototype.insertRule;o.CSSStyleSheet.prototype.insertRule=new Proxy(r,{apply:ep(((o,r,i)=>{const[a,s]=i,{id:l,styleId:c}=cp(r,t,n.styleMirror);return(l&&-1!==l||c&&-1!==c)&&e({id:l,styleId:c,adds:[{rule:a,index:s}]}),o.apply(r,i)}))}),o.CSSStyleSheet.prototype.addRule=function(e,t,n=this.cssRules.length){const r=`${e} { ${t} }`;return o.CSSStyleSheet.prototype.insertRule.apply(this,[r,n])};const i=o.CSSStyleSheet.prototype.deleteRule;let a,s;o.CSSStyleSheet.prototype.deleteRule=new Proxy(i,{apply:ep(((o,r,i)=>{const[a]=i,{id:s,styleId:l}=cp(r,t,n.styleMirror);return(s&&-1!==s||l&&-1!==l)&&e({id:s,styleId:l,removes:[{index:a}]}),o.apply(r,i)}))}),o.CSSStyleSheet.prototype.removeRule=function(e){return o.CSSStyleSheet.prototype.deleteRule.apply(this,[e])},o.CSSStyleSheet.prototype.replace&&(a=o.CSSStyleSheet.prototype.replace,o.CSSStyleSheet.prototype.replace=new Proxy(a,{apply:ep(((o,r,i)=>{const[a]=i,{id:s,styleId:l}=cp(r,t,n.styleMirror);return(s&&-1!==s||l&&-1!==l)&&e({id:s,styleId:l,replace:a}),o.apply(r,i)}))})),o.CSSStyleSheet.prototype.replaceSync&&(s=o.CSSStyleSheet.prototype.replaceSync,o.CSSStyleSheet.prototype.replaceSync=new Proxy(s,{apply:ep(((o,r,i)=>{const[a]=i,{id:s,styleId:l}=cp(r,t,n.styleMirror);return(s&&-1!==s||l&&-1!==l)&&e({id:s,styleId:l,replaceSync:a}),o.apply(r,i)}))}));const l={};hp("CSSGroupingRule")?l.CSSGroupingRule=o.CSSGroupingRule:(hp("CSSMediaRule")&&(l.CSSMediaRule=o.CSSMediaRule),hp("CSSConditionRule")&&(l.CSSConditionRule=o.CSSConditionRule),hp("CSSSupportsRule")&&(l.CSSSupportsRule=o.CSSSupportsRule));const c={};return Object.entries(l).forEach((([o,r])=>{c[o]={insertRule:r.prototype.insertRule,deleteRule:r.prototype.deleteRule},r.prototype.insertRule=new Proxy(c[o].insertRule,{apply:ep(((o,r,i)=>{const[a,s]=i,{id:l,styleId:c}=cp(r.parentStyleSheet,t,n.styleMirror);return(l&&-1!==l||c&&-1!==c)&&e({id:l,styleId:c,adds:[{rule:a,index:[...lp(r),s||0]}]}),o.apply(r,i)}))}),r.prototype.deleteRule=new Proxy(c[o].deleteRule,{apply:ep(((o,r,i)=>{const[a]=i,{id:s,styleId:l}=cp(r.parentStyleSheet,t,n.styleMirror);return(s&&-1!==s||l&&-1!==l)&&e({id:s,styleId:l,removes:[{index:[...lp(r),a]}]}),o.apply(r,i)}))})})),ep((()=>{o.CSSStyleSheet.prototype.insertRule=r,o.CSSStyleSheet.prototype.deleteRule=i,a&&(o.CSSStyleSheet.prototype.replace=a),s&&(o.CSSStyleSheet.prototype.replaceSync=s),Object.entries(l).forEach((([e,t])=>{t.prototype.insertRule=c[e].insertRule,t.prototype.deleteRule=c[e].deleteRule}))}))}(e,{win:n}),d=up(e,e.doc),p=function({styleDeclarationCb:e,mirror:t,ignoreCSSAttributes:n,stylesheetManager:o},{win:r}){const i=r.CSSStyleDeclaration.prototype.setProperty;r.CSSStyleDeclaration.prototype.setProperty=new Proxy(i,{apply:ep(((r,a,s)=>{var l;const[c,u,d]=s;if(n.has(c))return i.apply(a,[c,u,d]);const{id:p,styleId:h}=cp(null==(l=a.parentRule)?void 0:l.parentStyleSheet,t,o.styleMirror);return(p&&-1!==p||h&&-1!==h)&&e({id:p,styleId:h,set:{property:c,value:u,priority:d},index:lp(a.parentRule)}),r.apply(a,s)}))});const a=r.CSSStyleDeclaration.prototype.removeProperty;return r.CSSStyleDeclaration.prototype.removeProperty=new Proxy(a,{apply:ep(((r,i,s)=>{var l;const[c]=s;if(n.has(c))return a.apply(i,[c]);const{id:u,styleId:d}=cp(null==(l=i.parentRule)?void 0:l.parentStyleSheet,t,o.styleMirror);return(u&&-1!==u||d&&-1!==d)&&e({id:u,styleId:d,remove:{property:c},index:lp(i.parentRule)}),r.apply(i,s)}))}),ep((()=>{r.CSSStyleDeclaration.prototype.setProperty=i,r.CSSStyleDeclaration.prototype.removeProperty=a}))}(e,{win:n}),e.collectFonts&&(h=function({fontCb:e,doc:t}){const n=t.defaultView;if(!n)return()=>{};const o=[],r=new WeakMap,i=n.FontFace;n.FontFace=function(e,t,n){const o=new i(e,t,n);return r.set(o,{family:e,buffer:"string"!=typeof t,descriptors:n,fontSource:"string"==typeof t?t:JSON.stringify(Array.from(new Uint8Array(t)))}),o};const a=kd(t.fonts,"add",(function(t){return function(n){return setTimeout(ep((()=>{const t=r.get(n);t&&(e(t),r.delete(n))})),0),t.apply(this,[n])}}));return o.push((()=>{n.FontFace=i})),o.push(a),ep((()=>{o.forEach((e=>e()))}))}(e)));const f=function(e){const{doc:t,mirror:n,blockClass:o,blockSelector:r,selectionCb:i}=e;let a=!0;const s=ep((()=>{const e=t.getSelection();if(!e||a&&(null==e?void 0:e.isCollapsed))return;a=e.isCollapsed||!1;const s=[],l=e.rangeCount||0;for(let t=0;t{}}(e),g=[];for(const v of e.plugins)g.push(v.observer(v.callback,n,v.options));return ep((()=>{tp.forEach((e=>e.reset())),null==o||o.disconnect(),r(),i(),a(),s(),l(),c(),u(),d(),p(),h(),f(),m(),g.forEach((e=>e()))}))}function pp(e){return void 0!==window[e]}function hp(e){return Boolean(void 0!==window[e]&&window[e].prototype&&"insertRule"in window[e].prototype&&"deleteRule"in window[e].prototype)}class fp{constructor(e){Rn(this,"iframeIdToRemoteIdMap",new WeakMap),Rn(this,"iframeRemoteIdToIdMap",new WeakMap),this.generateIdFn=e}getId(e,t,n,o){const r=n||this.getIdToRemoteIdMap(e),i=o||this.getRemoteIdToIdMap(e);let a=r.get(t);return a||(a=this.generateIdFn(),r.set(t,a),i.set(a,t)),a}getIds(e,t){const n=this.getIdToRemoteIdMap(e),o=this.getRemoteIdToIdMap(e);return t.map((t=>this.getId(e,t,n,o)))}getRemoteId(e,t,n){const o=n||this.getRemoteIdToIdMap(e);if("number"!=typeof t)return t;const r=o.get(t);return r||-1}getRemoteIds(e,t){const n=this.getRemoteIdToIdMap(e);return t.map((t=>this.getRemoteId(e,t,n)))}reset(e){if(!e)return this.iframeIdToRemoteIdMap=new WeakMap,void(this.iframeRemoteIdToIdMap=new WeakMap);this.iframeIdToRemoteIdMap.delete(e),this.iframeRemoteIdToIdMap.delete(e)}getIdToRemoteIdMap(e){let t=this.iframeIdToRemoteIdMap.get(e);return t||(t=new Map,this.iframeIdToRemoteIdMap.set(e,t)),t}getRemoteIdToIdMap(e){let t=this.iframeRemoteIdToIdMap.get(e);return t||(t=new Map,this.iframeRemoteIdToIdMap.set(e,t)),t}}class mp{constructor(e){Rn(this,"iframes",new WeakMap),Rn(this,"crossOriginIframeMap",new WeakMap),Rn(this,"crossOriginIframeMirror",new fp(fo)),Rn(this,"crossOriginIframeStyleMirror"),Rn(this,"crossOriginIframeRootIdMap",new WeakMap),Rn(this,"mirror"),Rn(this,"mutationCb"),Rn(this,"wrappedEmit"),Rn(this,"loadListener"),Rn(this,"stylesheetManager"),Rn(this,"recordCrossOriginIframes"),this.mutationCb=e.mutationCb,this.wrappedEmit=e.wrappedEmit,this.stylesheetManager=e.stylesheetManager,this.recordCrossOriginIframes=e.recordCrossOriginIframes,this.crossOriginIframeStyleMirror=new fp(this.stylesheetManager.styleMirror.generateId.bind(this.stylesheetManager.styleMirror)),this.mirror=e.mirror,this.recordCrossOriginIframes&&window.addEventListener("message",this.handleMessage.bind(this))}addIframe(e){this.iframes.set(e,!0),e.contentWindow&&this.crossOriginIframeMap.set(e.contentWindow,e)}addLoadListener(e){this.loadListener=e}attachIframe(e,t){var n,o;this.mutationCb({adds:[{parentId:this.mirror.getId(e),nextId:null,node:t}],removes:[],texts:[],attributes:[],isAttachIframe:!0}),this.recordCrossOriginIframes&&(null==(n=e.contentWindow)||n.addEventListener("message",this.handleMessage.bind(this))),null==(o=this.loadListener)||o.call(this,e),e.contentDocument&&e.contentDocument.adoptedStyleSheets&&e.contentDocument.adoptedStyleSheets.length>0&&this.stylesheetManager.adoptStyleSheets(e.contentDocument.adoptedStyleSheets,this.mirror.getId(e.contentDocument))}handleMessage(e){const t=e;if("rrweb"!==t.data.type||t.origin!==t.data.origin)return;if(!e.source)return;const n=this.crossOriginIframeMap.get(e.source);if(!n)return;const o=this.transformCrossOriginEvent(n,t.data.event);o&&this.wrappedEmit(o,t.data.isCheckout)}transformCrossOriginEvent(e,t){var n;switch(t.type){case Bd.FullSnapshot:{this.crossOriginIframeMirror.reset(e),this.crossOriginIframeStyleMirror.reset(e),this.replaceIdOnNode(t.data.node,e);const n=t.data.node.id;return this.crossOriginIframeRootIdMap.set(e,n),this.patchRootIdOnNode(t.data.node,n),{timestamp:t.timestamp,type:Bd.IncrementalSnapshot,data:{source:_d.Mutation,adds:[{parentId:this.mirror.getId(e),nextId:null,node:t.data.node}],removes:[],texts:[],attributes:[],isAttachIframe:!0}}}case Bd.Meta:case Bd.Load:case Bd.DomContentLoaded:return!1;case Bd.Plugin:return t;case Bd.Custom:return this.replaceIds(t.data.payload,e,["id","parentId","previousId","nextId"]),t;case Bd.IncrementalSnapshot:switch(t.data.source){case _d.Mutation:return t.data.adds.forEach((t=>{this.replaceIds(t,e,["parentId","nextId","previousId"]),this.replaceIdOnNode(t.node,e);const n=this.crossOriginIframeRootIdMap.get(e);n&&this.patchRootIdOnNode(t.node,n)})),t.data.removes.forEach((t=>{this.replaceIds(t,e,["parentId","id"])})),t.data.attributes.forEach((t=>{this.replaceIds(t,e,["id"])})),t.data.texts.forEach((t=>{this.replaceIds(t,e,["id"])})),t;case _d.Drag:case _d.TouchMove:case _d.MouseMove:return t.data.positions.forEach((t=>{this.replaceIds(t,e,["id"])})),t;case _d.ViewportResize:return!1;case _d.MediaInteraction:case _d.MouseInteraction:case _d.Scroll:case _d.CanvasMutation:case _d.Input:return this.replaceIds(t.data,e,["id"]),t;case _d.StyleSheetRule:case _d.StyleDeclaration:return this.replaceIds(t.data,e,["id"]),this.replaceStyleIds(t.data,e,["styleId"]),t;case _d.Font:return t;case _d.Selection:return t.data.ranges.forEach((t=>{this.replaceIds(t,e,["start","end"])})),t;case _d.AdoptedStyleSheet:return this.replaceIds(t.data,e,["id"]),this.replaceStyleIds(t.data,e,["styleIds"]),null==(n=t.data.styles)||n.forEach((t=>{this.replaceStyleIds(t,e,["styleId"])})),t}}return!1}replace(e,t,n,o){for(const r of o)(Array.isArray(t[r])||"number"==typeof t[r])&&(Array.isArray(t[r])?t[r]=e.getIds(n,t[r]):t[r]=e.getId(n,t[r]));return t}replaceIds(e,t,n){return this.replace(this.crossOriginIframeMirror,e,t,n)}replaceStyleIds(e,t,n){return this.replace(this.crossOriginIframeStyleMirror,e,t,n)}replaceIdOnNode(e,t){this.replaceIds(e,t,["id","rootId"]),"childNodes"in e&&e.childNodes.forEach((e=>{this.replaceIdOnNode(e,t)}))}patchRootIdOnNode(e,t){e.type===Wd.Document||e.rootId||(e.rootId=t),"childNodes"in e&&e.childNodes.forEach((e=>{this.patchRootIdOnNode(e,t)}))}}class gp{constructor(e){Rn(this,"shadowDoms",new WeakSet),Rn(this,"mutationCb"),Rn(this,"scrollCb"),Rn(this,"bypassOptions"),Rn(this,"mirror"),Rn(this,"restoreHandlers",[]),this.mutationCb=e.mutationCb,this.scrollCb=e.scrollCb,this.bypassOptions=e.bypassOptions,this.mirror=e.mirror,this.init()}init(){this.reset(),this.patchAttachShadow(Element,document)}addShadowRoot(e,t){if(!Zn(e))return;if(this.shadowDoms.has(e))return;this.shadowDoms.add(e);const n=op({...this.bypassOptions,doc:t,mutationCb:this.mutationCb,mirror:this.mirror,shadowDomManager:this},e);this.restoreHandlers.push((()=>n.disconnect())),this.restoreHandlers.push(ip({...this.bypassOptions,scrollCb:this.scrollCb,doc:e,mirror:this.mirror})),setTimeout((()=>{e.adoptedStyleSheets&&e.adoptedStyleSheets.length>0&&this.bypassOptions.stylesheetManager.adoptStyleSheets(e.adoptedStyleSheets,this.mirror.getId(md.host(e))),this.restoreHandlers.push(up({mirror:this.mirror,stylesheetManager:this.bypassOptions.stylesheetManager},e))}),0)}observeAttachShadow(e){e.contentWindow&&e.contentDocument&&this.patchAttachShadow(e.contentWindow.Element,e.contentDocument)}patchAttachShadow(e,t){const n=this;this.restoreHandlers.push(kd(e.prototype,"attachShadow",(function(e){return function(o){const r=e.call(this,o),i=md.shadowRoot(this);return i&&Fd(this)&&n.addShadowRoot(i,t),r}})))}reset(){this.restoreHandlers.forEach((e=>{try{e()}catch(t){}})),this.restoreHandlers=[],this.shadowDoms=new WeakSet}}for(var vp="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",yp="undefined"==typeof Uint8Array?[]:new Uint8Array(256),bp=0;bp<64;bp++)yp[vp.charCodeAt(bp)]=bp;const wp=new Map;const kp=(e,t,n)=>{if(!e||!Cp(e,t)&&"object"!=typeof e)return;const o=function(e,t){let n=wp.get(e);return n||(n=new Map,wp.set(e,n)),n.has(t)||n.set(t,[]),n.get(t)}(n,e.constructor.name);let r=o.indexOf(e);return-1===r&&(r=o.length,o.push(e)),r};function xp(e,t,n){if(e instanceof Array)return e.map((e=>xp(e,t,n)));if(null===e)return e;if(e instanceof Float32Array||e instanceof Float64Array||e instanceof Int32Array||e instanceof Uint32Array||e instanceof Uint8Array||e instanceof Uint16Array||e instanceof Int16Array||e instanceof Int8Array||e instanceof Uint8ClampedArray){return{rr_type:e.constructor.name,args:[Object.values(e)]}}if(e instanceof ArrayBuffer){return{rr_type:e.constructor.name,base64:function(e){var t,n=new Uint8Array(e),o=n.length,r="";for(t=0;t>2],r+=vp[(3&n[t])<<4|n[t+1]>>4],r+=vp[(15&n[t+1])<<2|n[t+2]>>6],r+=vp[63&n[t+2]];return o%3==2?r=r.substring(0,r.length-1)+"=":o%3==1&&(r=r.substring(0,r.length-2)+"=="),r}(e)}}if(e instanceof DataView){return{rr_type:e.constructor.name,args:[xp(e.buffer,t,n),e.byteOffset,e.byteLength]}}if(e instanceof HTMLImageElement){const t=e.constructor.name,{src:n}=e;return{rr_type:t,src:n}}if(e instanceof HTMLCanvasElement){return{rr_type:"HTMLImageElement",src:e.toDataURL()}}if(e instanceof ImageData){return{rr_type:e.constructor.name,args:[xp(e.data,t,n),e.width,e.height]}}if(Cp(e,t)||"object"==typeof e){return{rr_type:e.constructor.name,index:kp(e,t,n)}}return e}const Sp=(e,t,n)=>e.map((e=>xp(e,t,n))),Cp=(e,t)=>{const n=["WebGLActiveInfo","WebGLBuffer","WebGLFramebuffer","WebGLProgram","WebGLRenderbuffer","WebGLShader","WebGLShaderPrecisionFormat","WebGLTexture","WebGLUniformLocation","WebGLVertexArrayObject","WebGLVertexArrayObjectOES"].filter((e=>"function"==typeof t[e]));return Boolean(n.find((n=>e instanceof t[n])))};function Ip(e,t,n,o){const r=[];try{const i=kd(e.HTMLCanvasElement.prototype,"getContext",(function(e){return function(r,...i){if(!Ed(this,t,n,!0)){const e=function(e){return"experimental-webgl"===e?"webgl":e}(r);if("__context"in this||(this.__context=e),o&&["webgl","webgl2"].includes(e))if(i[0]&&"object"==typeof i[0]){const e=i[0];e.preserveDrawingBuffer||(e.preserveDrawingBuffer=!0)}else i.splice(0,1,{preserveDrawingBuffer:!0})}return e.apply(this,[r,...i])}}));r.push(i)}catch{console.error("failed to patch HTMLCanvasElement.prototype.getContext")}return()=>{r.forEach((e=>e()))}}function Op(e,t,n,o,r,i){const a=[],s=Object.getOwnPropertyNames(e);for(const l of s)if(!["isContextLost","canvas","drawingBufferWidth","drawingBufferHeight"].includes(l))try{if("function"!=typeof e[l])continue;const s=kd(e,l,(function(e){return function(...a){const s=e.apply(this,a);if(kp(s,i,this),"tagName"in this.canvas&&!Ed(this.canvas,o,r,!0)){const e=Sp(a,i,this),o={type:t,property:l,args:e};n(this.canvas,o)}return s}}));a.push(s)}catch{const o=wd(e,l,{set(e){n(this.canvas,{type:t,property:l,args:[e],setter:!0})}});a.push(o)}return a}const Ep="KGZ1bmN0aW9uKCkgewogICJ1c2Ugc3RyaWN0IjsKICB2YXIgY2hhcnMgPSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7CiAgdmFyIGxvb2t1cCA9IHR5cGVvZiBVaW50OEFycmF5ID09PSAidW5kZWZpbmVkIiA/IFtdIDogbmV3IFVpbnQ4QXJyYXkoMjU2KTsKICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYXJzLmxlbmd0aDsgaSsrKSB7CiAgICBsb29rdXBbY2hhcnMuY2hhckNvZGVBdChpKV0gPSBpOwogIH0KICB2YXIgZW5jb2RlID0gZnVuY3Rpb24oYXJyYXlidWZmZXIpIHsKICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGFycmF5YnVmZmVyKSwgaTIsIGxlbiA9IGJ5dGVzLmxlbmd0aCwgYmFzZTY0ID0gIiI7CiAgICBmb3IgKGkyID0gMDsgaTIgPCBsZW47IGkyICs9IDMpIHsKICAgICAgYmFzZTY0ICs9IGNoYXJzW2J5dGVzW2kyXSA+PiAyXTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMl0gJiAzKSA8PCA0IHwgYnl0ZXNbaTIgKyAxXSA+PiA0XTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMiArIDFdICYgMTUpIDw8IDIgfCBieXRlc1tpMiArIDJdID4+IDZdOwogICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaTIgKyAyXSAmIDYzXTsKICAgIH0KICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgIj0iOwogICAgfSBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgIj09IjsKICAgIH0KICAgIHJldHVybiBiYXNlNjQ7CiAgfTsKICBjb25zdCBsYXN0QmxvYk1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7CiAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTsKICBhc3luYyBmdW5jdGlvbiBnZXRUcmFuc3BhcmVudEJsb2JGb3Iod2lkdGgsIGhlaWdodCwgZGF0YVVSTE9wdGlvbnMpIHsKICAgIGNvbnN0IGlkID0gYCR7d2lkdGh9LSR7aGVpZ2h0fWA7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBpZiAodHJhbnNwYXJlbnRCbG9iTWFwLmhhcyhpZCkpIHJldHVybiB0cmFuc3BhcmVudEJsb2JNYXAuZ2V0KGlkKTsKICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsKICAgICAgb2Zmc2NyZWVuLmdldENvbnRleHQoIjJkIik7CiAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCBvZmZzY3JlZW4uY29udmVydFRvQmxvYihkYXRhVVJMT3B0aW9ucyk7CiAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gYXdhaXQgYmxvYi5hcnJheUJ1ZmZlcigpOwogICAgICBjb25zdCBiYXNlNjQgPSBlbmNvZGUoYXJyYXlCdWZmZXIpOwogICAgICB0cmFuc3BhcmVudEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICByZXR1cm4gYmFzZTY0OwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuICIiOwogICAgfQogIH0KICBjb25zdCB3b3JrZXIgPSBzZWxmOwogIHdvcmtlci5vbm1lc3NhZ2UgPSBhc3luYyBmdW5jdGlvbihlKSB7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBjb25zdCB7IGlkLCBiaXRtYXAsIHdpZHRoLCBoZWlnaHQsIGRhdGFVUkxPcHRpb25zIH0gPSBlLmRhdGE7CiAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKAogICAgICAgIHdpZHRoLAogICAgICAgIGhlaWdodCwKICAgICAgICBkYXRhVVJMT3B0aW9ucwogICAgICApOwogICAgICBjb25zdCBvZmZzY3JlZW4gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpOwogICAgICBjb25zdCBjdHggPSBvZmZzY3JlZW4uZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgY3R4LmRyYXdJbWFnZShiaXRtYXAsIDAsIDApOwogICAgICBiaXRtYXAuY2xvc2UoKTsKICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IG9mZnNjcmVlbi5jb252ZXJ0VG9CbG9iKGRhdGFVUkxPcHRpb25zKTsKICAgICAgY29uc3QgdHlwZSA9IGJsb2IudHlwZTsKICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBhd2FpdCBibG9iLmFycmF5QnVmZmVyKCk7CiAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7CiAgICAgIGlmICghbGFzdEJsb2JNYXAuaGFzKGlkKSAmJiBhd2FpdCB0cmFuc3BhcmVudEJhc2U2NCA9PT0gYmFzZTY0KSB7CiAgICAgICAgbGFzdEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICAgIHJldHVybiB3b3JrZXIucG9zdE1lc3NhZ2UoeyBpZCB9KTsKICAgICAgfQogICAgICBpZiAobGFzdEJsb2JNYXAuZ2V0KGlkKSA9PT0gYmFzZTY0KSByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQgfSk7CiAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7CiAgICAgICAgaWQsCiAgICAgICAgdHlwZSwKICAgICAgICBiYXNlNjQsCiAgICAgICAgd2lkdGgsCiAgICAgICAgaGVpZ2h0CiAgICAgIH0pOwogICAgICBsYXN0QmxvYk1hcC5zZXQoaWQsIGJhc2U2NCk7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IGUuZGF0YS5pZCB9KTsKICAgIH0KICB9Owp9KSgpOwovLyMgc291cmNlTWFwcGluZ1VSTD1pbWFnZS1iaXRtYXAtZGF0YS11cmwtd29ya2VyLUlKcEM3Z19iLmpzLm1hcAo=",Tp="undefined"!=typeof window&&window.Blob&&new Blob([(Lp=Ep,Uint8Array.from(atob(Lp),(e=>e.charCodeAt(0))))],{type:"text/javascript;charset=utf-8"});var Lp;function Ap(e){let t;try{if(t=Tp&&(window.URL||window.webkitURL).createObjectURL(Tp),!t)throw"";const n=new Worker(t,{name:null==e?void 0:e.name});return n.addEventListener("error",(()=>{(window.URL||window.webkitURL).revokeObjectURL(t)})),n}catch(n){return new Worker("data:text/javascript;base64,"+Ep,{name:null==e?void 0:e.name})}finally{t&&(window.URL||window.webkitURL).revokeObjectURL(t)}}class Mp{constructor(e){Rn(this,"pendingCanvasMutations",new Map),Rn(this,"rafStamps",{latestId:0,invokeId:null}),Rn(this,"mirror"),Rn(this,"mutationCb"),Rn(this,"resetObservers"),Rn(this,"frozen",!1),Rn(this,"locked",!1),Rn(this,"processMutation",((e,t)=>{!(this.rafStamps.invokeId&&this.rafStamps.latestId!==this.rafStamps.invokeId)&&this.rafStamps.invokeId||(this.rafStamps.invokeId=this.rafStamps.latestId),this.pendingCanvasMutations.has(e)||this.pendingCanvasMutations.set(e,[]),this.pendingCanvasMutations.get(e).push(t)}));const{sampling:t="all",win:n,blockClass:o,blockSelector:r,recordCanvas:i,dataURLOptions:a}=e;this.mutationCb=e.mutationCb,this.mirror=e.mirror,i&&"all"===t&&this.initCanvasMutationObserver(n,o,r),i&&"number"==typeof t&&this.initCanvasFPSObserver(t,n,o,r,{dataURLOptions:a})}reset(){this.pendingCanvasMutations.clear(),this.resetObservers&&this.resetObservers()}freeze(){this.frozen=!0}unfreeze(){this.frozen=!1}lock(){this.locked=!0}unlock(){this.locked=!1}initCanvasFPSObserver(e,t,n,o,r){const i=Ip(t,n,o,!0),a=new Map,s=new Ap;s.onmessage=e=>{const{id:t}=e.data;if(a.set(t,!1),!("base64"in e.data))return;const{base64:n,type:o,width:r,height:i}=e.data;this.mutationCb({id:t,type:zd["2D"],commands:[{property:"clearRect",args:[0,0,r,i]},{property:"drawImage",args:[{rr_type:"ImageBitmap",args:[{rr_type:"Blob",data:[{rr_type:"ArrayBuffer",base64:n}],type:o}]},0,0]}]})};const l=1e3/e;let c,u=0;const d=e=>{u&&e-u{const e=[];return t.document.querySelectorAll("canvas").forEach((t=>{Ed(t,n,o,!0)||e.push(t)})),e})().forEach((async e=>{var t;const n=this.mirror.getId(e);if(a.get(n))return;if(0===e.width||0===e.height)return;if(a.set(n,!0),["webgl","webgl2"].includes(e.__context)){const n=e.getContext(e.__context);!1===(null==(t=null==n?void 0:n.getContextAttributes())?void 0:t.preserveDrawingBuffer)&&n.clear(n.COLOR_BUFFER_BIT)}const o=await createImageBitmap(e);s.postMessage({id:n,bitmap:o,width:e.width,height:e.height,dataURLOptions:r.dataURLOptions},[o])}))),c=requestAnimationFrame(d)};c=requestAnimationFrame(d),this.resetObservers=()=>{i(),cancelAnimationFrame(c)}}initCanvasMutationObserver(e,t,n){this.startRAFTimestamping(),this.startPendingCanvasMutationFlusher();const o=Ip(e,t,n,!1),r=function(e,t,n,o){const r=[],i=Object.getOwnPropertyNames(t.CanvasRenderingContext2D.prototype);for(const a of i)try{if("function"!=typeof t.CanvasRenderingContext2D.prototype[a])continue;const i=kd(t.CanvasRenderingContext2D.prototype,a,(function(r){return function(...i){return Ed(this.canvas,n,o,!0)||setTimeout((()=>{const n=Sp(i,t,this);e(this.canvas,{type:zd["2D"],property:a,args:n})}),0),r.apply(this,i)}}));r.push(i)}catch{const n=wd(t.CanvasRenderingContext2D.prototype,a,{set(t){e(this.canvas,{type:zd["2D"],property:a,args:[t],setter:!0})}});r.push(n)}return()=>{r.forEach((e=>e()))}}(this.processMutation.bind(this),e,t,n),i=function(e,t,n,o){const r=[];return r.push(...Op(t.WebGLRenderingContext.prototype,zd.WebGL,e,n,o,t)),void 0!==t.WebGL2RenderingContext&&r.push(...Op(t.WebGL2RenderingContext.prototype,zd.WebGL2,e,n,o,t)),()=>{r.forEach((e=>e()))}}(this.processMutation.bind(this),e,t,n);this.resetObservers=()=>{o(),r(),i()}}startPendingCanvasMutationFlusher(){requestAnimationFrame((()=>this.flushPendingCanvasMutations()))}startRAFTimestamping(){const e=t=>{this.rafStamps.latestId=t,requestAnimationFrame(e)};requestAnimationFrame(e)}flushPendingCanvasMutations(){this.pendingCanvasMutations.forEach(((e,t)=>{const n=this.mirror.getId(t);this.flushPendingCanvasMutationFor(t,n)})),requestAnimationFrame((()=>this.flushPendingCanvasMutations()))}flushPendingCanvasMutationFor(e,t){if(this.frozen||this.locked)return;const n=this.pendingCanvasMutations.get(e);if(!n||-1===t)return;const o=n.map((e=>{const{type:t,...n}=e;return n})),{type:r}=n[0];this.mutationCb({id:t,type:r,commands:o}),this.pendingCanvasMutations.delete(e)}}class Rp{constructor(e){Rn(this,"trackedLinkElements",new WeakSet),Rn(this,"mutationCb"),Rn(this,"adoptedStyleSheetCb"),Rn(this,"styleMirror",new Dd),this.mutationCb=e.mutationCb,this.adoptedStyleSheetCb=e.adoptedStyleSheetCb}attachLinkElement(e,t){"_cssText"in t.attributes&&this.mutationCb({adds:[],removes:[],texts:[],attributes:[{id:t.id,attributes:t.attributes}]}),this.trackLinkElement(e)}trackLinkElement(e){this.trackedLinkElements.has(e)||(this.trackedLinkElements.add(e),this.trackStylesheetInLinkElement(e))}adoptStyleSheets(e,t){if(0===e.length)return;const n={id:t,styleIds:[]},o=[];for(const r of e){let e;this.styleMirror.has(r)?e=this.styleMirror.getId(r):(e=this.styleMirror.add(r),o.push({styleId:e,rules:Array.from(r.rules||CSSRule,((e,t)=>({rule:Yn(e,r.href),index:t})))})),n.styleIds.push(e)}o.length>0&&(n.styles=o),this.adoptedStyleSheetCb(n)}reset(){this.styleMirror.reset(),this.trackedLinkElements=new WeakSet}trackStylesheetInLinkElement(e){}}class Pp{constructor(){Rn(this,"nodeMap",new WeakMap),Rn(this,"active",!1)}inOtherBuffer(e,t){const n=this.nodeMap.get(e);return n&&Array.from(n).some((e=>e!==t))}add(e,t){this.active||(this.active=!0,requestAnimationFrame((()=>{this.nodeMap=new WeakMap,this.active=!1}))),this.nodeMap.set(e,(this.nodeMap.get(e)||new Set).add(t))}destroy(){}}let Dp,Np,jp,Fp=!1;try{if(2!==Array.from([1],(e=>2*e))[0]){const e=document.createElement("iframe");document.body.appendChild(e),Array.from=(null==(An=e.contentWindow)?void 0:An.Array.from)||Array.from,document.body.removeChild(e)}}catch(zm){console.debug("Unable to override Array.from",zm)}const Bp=new Xn;function _p(e={}){const{emit:t,checkoutEveryNms:n,checkoutEveryNth:o,blockClass:r="rr-block",blockSelector:i=null,ignoreClass:a="rr-ignore",ignoreSelector:s=null,maskTextClass:l="rr-mask",maskTextSelector:c=null,inlineStylesheet:u=!0,maskAllInputs:d,maskInputOptions:p,slimDOMOptions:h,maskInputFn:f,maskTextFn:m,hooks:g,packFn:v,sampling:y={},dataURLOptions:b={},mousemoveWait:w,recordDOM:k=!0,recordCanvas:x=!1,recordCrossOriginIframes:S=!1,recordAfter:C=("DOMContentLoaded"===e.recordAfter?e.recordAfter:"load"),userTriggeredOnInput:I=!1,collectFonts:O=!1,inlineImages:E=!1,plugins:T,keepIframeSrcFn:L=(()=>!1),ignoreCSSAttributes:A=new Set([]),errorHandler:M}=e;Qd=M;const R=!S||window.parent===window;let P=!1;if(!R)try{window.parent.document&&(P=!1)}catch(V){P=!0}if(R&&!t)throw new Error("emit function is required");if(!R&&!P)return()=>{};void 0!==w&&void 0===y.mousemove&&(y.mousemove=w),Bp.reset();const D=!0===d?{color:!0,date:!0,"datetime-local":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0,password:!0}:void 0!==p?p:{password:!0},N=!0===h||"all"===h?{script:!0,comment:!0,headFavicon:!0,headWhitespace:!0,headMetaSocial:!0,headMetaRobots:!0,headMetaHttpEquiv:!0,headMetaVerification:!0,headMetaAuthorship:"all"===h,headMetaDescKeywords:"all"===h,headTitleMutations:"all"===h}:h||{};let j;!function(e=window){"NodeList"in e&&!e.NodeList.prototype.forEach&&(e.NodeList.prototype.forEach=Array.prototype.forEach),"DOMTokenList"in e&&!e.DOMTokenList.prototype.forEach&&(e.DOMTokenList.prototype.forEach=Array.prototype.forEach)}();let F=0;const B=e=>{for(const t of T||[])t.eventProcessor&&(e=t.eventProcessor(e));return v&&!P&&(e=v(e)),e};Dp=(e,r)=>{var i;const a=e;if(a.timestamp=xd(),!(null==(i=tp[0])?void 0:i.isFrozen())||a.type===Bd.FullSnapshot||a.type===Bd.IncrementalSnapshot&&a.data.source===_d.Mutation||tp.forEach((e=>e.unfreeze())),R)null==t||t(B(a),r);else if(P){const e={type:"rrweb",event:B(a),origin:window.location.origin,isCheckout:r};window.parent.postMessage(e,"*")}if(a.type===Bd.FullSnapshot)j=a,F=0;else if(a.type===Bd.IncrementalSnapshot){if(a.data.source===_d.Mutation&&a.data.isAttachIframe)return;F++;const e=o&&F>=o,t=n&&a.timestamp-j.timestamp>n;(e||t)&&Np(!0)}};const _=e=>{Dp({type:Bd.IncrementalSnapshot,data:{source:_d.Mutation,...e}})},U=e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.Scroll,...e}}),H=e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.CanvasMutation,...e}}),z=new Rp({mutationCb:_,adoptedStyleSheetCb:e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.AdoptedStyleSheet,...e}})}),q=new mp({mirror:Bp,mutationCb:_,stylesheetManager:z,recordCrossOriginIframes:S,wrappedEmit:Dp});for(const Z of T||[])Z.getMirror&&Z.getMirror({nodeMirror:Bp,crossOriginIframeMirror:q.crossOriginIframeMirror,crossOriginIframeStyleMirror:q.crossOriginIframeStyleMirror});const W=new Pp;jp=new Mp({recordCanvas:x,mutationCb:H,win:window,blockClass:r,blockSelector:i,mirror:Bp,sampling:y.canvas,dataURLOptions:b});const G=new gp({mutationCb:_,scrollCb:U,bypassOptions:{blockClass:r,blockSelector:i,maskTextClass:l,maskTextSelector:c,inlineStylesheet:u,maskInputOptions:D,dataURLOptions:b,maskTextFn:m,maskInputFn:f,recordCanvas:x,inlineImages:E,sampling:y,slimDOMOptions:N,iframeManager:q,stylesheetManager:z,canvasManager:jp,keepIframeSrcFn:L,processedNodeManager:W},mirror:Bp});Np=(e=!1)=>{if(!k)return;Dp({type:Bd.Meta,data:{href:window.location.href,width:Id(),height:Cd()}},e),z.reset(),G.init(),tp.forEach((e=>e.lock()));const t=function(e,t){const{mirror:n=new Xn,blockClass:o="rr-block",blockSelector:r=null,maskTextClass:i="rr-mask",maskTextSelector:a=null,inlineStylesheet:s=!0,inlineImages:l=!1,recordCanvas:c=!1,maskAllInputs:u=!1,maskTextFn:d,maskInputFn:p,slimDOM:h=!1,dataURLOptions:f,preserveWhiteSpace:m,onSerialize:g,onIframeLoad:v,iframeLoadTimeout:y,onStylesheetLoad:b,stylesheetLoadTimeout:w,keepIframeSrcFn:k=(()=>!1)}=t||{};return Lo(e,{doc:e,mirror:n,blockClass:o,blockSelector:r,maskTextClass:i,maskTextSelector:a,skipChild:!1,inlineStylesheet:s,maskInputOptions:!0===u?{color:!0,date:!0,"datetime-local":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0,password:!0}:!1===u?{password:!0}:u,maskTextFn:d,maskInputFn:p,slimDOMOptions:!0===h||"all"===h?{script:!0,comment:!0,headFavicon:!0,headWhitespace:!0,headMetaDescKeywords:"all"===h,headMetaSocial:!0,headMetaRobots:!0,headMetaHttpEquiv:!0,headMetaAuthorship:!0,headMetaVerification:!0}:!1===h?{}:h,dataURLOptions:f,inlineImages:l,recordCanvas:c,preserveWhiteSpace:m,onSerialize:g,onIframeLoad:v,iframeLoadTimeout:y,onStylesheetLoad:b,stylesheetLoadTimeout:w,keepIframeSrcFn:k,newlyAddedElement:!1})}(document,{mirror:Bp,blockClass:r,blockSelector:i,maskTextClass:l,maskTextSelector:c,inlineStylesheet:u,maskAllInputs:D,maskTextFn:m,maskInputFn:f,slimDOM:N,dataURLOptions:b,recordCanvas:x,inlineImages:E,onSerialize:e=>{Md(e,Bp)&&q.addIframe(e),Rd(e,Bp)&&z.trackLinkElement(e),Pd(e)&&G.addShadowRoot(md.shadowRoot(e),document)},onIframeLoad:(e,t)=>{q.attachIframe(e,t),G.observeAttachShadow(e)},onStylesheetLoad:(e,t)=>{z.attachLinkElement(e,t)},keepIframeSrcFn:L});if(!t)return console.warn("Failed to snapshot the document");Dp({type:Bd.FullSnapshot,data:{node:t,initialOffset:Sd(window)}},e),tp.forEach((e=>e.unlock())),document.adoptedStyleSheets&&document.adoptedStyleSheets.length>0&&z.adoptStyleSheets(document.adoptedStyleSheets,Bp.getId(document))};try{const e=[],t=e=>{var t;return ep(dp)({mutationCb:_,mousemoveCb:(e,t)=>Dp({type:Bd.IncrementalSnapshot,data:{source:t,positions:e}}),mouseInteractionCb:e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.MouseInteraction,...e}}),scrollCb:U,viewportResizeCb:e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.ViewportResize,...e}}),inputCb:e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.Input,...e}}),mediaInteractionCb:e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.MediaInteraction,...e}}),styleSheetRuleCb:e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.StyleSheetRule,...e}}),styleDeclarationCb:e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.StyleDeclaration,...e}}),canvasMutationCb:H,fontCb:e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.Font,...e}}),selectionCb:e=>{Dp({type:Bd.IncrementalSnapshot,data:{source:_d.Selection,...e}})},customElementCb:e=>{Dp({type:Bd.IncrementalSnapshot,data:{source:_d.CustomElement,...e}})},blockClass:r,ignoreClass:a,ignoreSelector:s,maskTextClass:l,maskTextSelector:c,maskInputOptions:D,inlineStylesheet:u,sampling:y,recordDOM:k,recordCanvas:x,inlineImages:E,userTriggeredOnInput:I,collectFonts:O,doc:e,maskInputFn:f,maskTextFn:m,keepIframeSrcFn:L,blockSelector:i,slimDOMOptions:N,dataURLOptions:b,mirror:Bp,iframeManager:q,stylesheetManager:z,shadowDomManager:G,processedNodeManager:W,canvasManager:jp,ignoreCSSAttributes:A,plugins:(null==(t=null==T?void 0:T.filter((e=>e.observer)))?void 0:t.map((e=>({observer:e.observer,options:e.options,callback:t=>Dp({type:Bd.Plugin,data:{plugin:e.name,payload:t}})}))))||[]},g)};q.addLoadListener((n=>{try{e.push(t(n.contentDocument))}catch(o){console.warn(o)}}));const n=()=>{Np(),e.push(t(document)),Fp=!0};return"interactive"===document.readyState||"complete"===document.readyState?n():(e.push(gd("DOMContentLoaded",(()=>{Dp({type:Bd.DomContentLoaded,data:{}}),"DOMContentLoaded"===C&&n()}))),e.push(gd("load",(()=>{Dp({type:Bd.Load,data:{}}),"load"===C&&n()}),window))),()=>{e.forEach((e=>e())),W.destroy(),Fp=!1,Qd=void 0}}catch(J){console.warn(J)}}var Up,Hp;function zp(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return qp(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return qp(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0,r=function(){};return{s:r,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){s=!0,i=e},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw i}}}}function qp(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n{if(!Fp)throw new Error("please add custom event after start recording");Dp({type:Bd.Custom,data:{tag:e,payload:t}})},_p.freezePage=()=>{tp.forEach((e=>e.freeze()))},_p.takeFullSnapshot=e=>{if(!Fp)throw new Error("please take full snapshot after start recording");Np(e)},_p.mirror=Bp,(Hp=Up||(Up={}))[Hp.NotStarted=0]="NotStarted",Hp[Hp.Running=1]="Running",Hp[Hp.Stopped=2]="Stopped";var Yp=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),Zp(this,"startDate",void 0),Zp(this,"events",[]),Zp(this,"bufferSize",0),Zp(this,"stopFunction",void 0),Zp(this,"customOptions",{})}var t,n,o;return t=e,o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],(n=[{key:"setOptions",value:function(e){this.customOptions=e}},{key:"start",value:function(){this.stop(),this.startDate=Date.now();var e=this.events;try{this.stopFunction=_p(Vp(Vp(Vp({},{inlineStylesheet:!0,blockClass:"gl-block",ignoreClass:"gl-ignore",maskTextClass:"gl-mask",dataURLOptions:{quality:.7},recordCanvas:!1,sampling:{scroll:150,mouseInteraction:{MouseUp:!1,MouseDown:!1,Click:!0,ContextMenu:!0,DblClick:!0,Focus:!0,Blur:!0,TouchStart:!0,TouchEnd:!1}},collectFonts:!1,recordCrossOriginIframes:!1}),this.customOptions),{},{emit:function(t){var n=function(e){var t=JSON.stringify(e);if(t.length>4e6){var n,o=/data:([\w\/\-\.]+);(\w+),([^)"]*)/gim,r=zp(t.matchAll(o));try{for(r.s();!(n=r.n()).done;){var i=n.value;t="image/"===i[1].toLocaleLowerCase().slice(0,6)?t.replace(i[0],"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAQSURBVHgBAQUA+v8ABRg5/wHSAVZN1mnaAAAAAElFTkSuQmCC"):t.replace(i[0],"")}}catch(zm){r.e(zm)}finally{r.f()}}return{event:JSON.parse(t),size:t.length}}(t).event;e.push(n)}}))}catch(t){console.error(t)}}},{key:"stop",value:function(){this.stopFunction&&this.stopFunction(),this.startDate=void 0,this.events=[],this.bufferSize=0}},{key:"getReplayData",value:function(){return{startDate:this.startDate,events:this.events,baseUrl:window.location.origin,width:window.innerWidth,height:window.innerHeight,isMobile:w(),type:"rrweb"}}}])&&Jp(t.prototype,n),o&&Jp(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Xp(e){return Xp="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Xp(e)}function $p(e,t){for(var n=0;nthis.startPoint.x&&(r=this.startPoint.x),t.y>this.startPoint.y&&(i=this.startPoint.y),this.path.setAttributeNS(null,"x",r),this.path.setAttributeNS(null,"y",i),this.path.setAttributeNS(null,"width",n),this.path.setAttributeNS(null,"height",o)}}},{key:"mouseDownRect",value:function(e){this.path=document.createElementNS("http://www.w3.org/2000/svg","rect"),this.path.setAttribute("fill","none"),this.path.setAttribute("stroke",this.color),this.path.setAttribute("stroke-linecap","round"),this.path.setAttribute("stroke-width",this.strokeWidthRect),this.startPoint=this.getMousePosition(e),this.appendPathToSvg(this.path)}},{key:"mouseDownPen",value:function(e){var t=this.color+"AA",n=this.strokeWidth;"blur"===this.tool&&(t="#000000",n=40),this.path=document.createElementNS("http://www.w3.org/2000/svg","path"),this.path.setAttribute("fill","none"),this.path.setAttribute("stroke",t),this.path.setAttribute("stroke-linecap","round"),this.path.setAttribute("stroke-width",n),this.buffer=[];var o=this.getMousePosition(e);this.appendToBuffer(o),this.strPath="M"+o.x+" "+o.y,this.path.setAttribute("d",this.strPath),this.appendPathToSvg(this.path)}},{key:"setTool",value:function(e){this.tool=e}},{key:"setColor",value:function(e){this.color=e}},{key:"getMousePosition",value:function(e){return e.touches&&e.touches.length>0?{x:e.touches[0].clientX,y:e.touches[0].clientY}:{x:e.clientX,y:e.clientY}}},{key:"getAveragePoint",value:function(e){var t=this.buffer.length;if(t%2==1||t>=this.bufferSize){var n,o,r=0,i=0,a=0;for(o=e;othis.bufferSize;)this.buffer.shift()}},{key:"appendPathToSvg",value:function(e){this.svgElement.appendChild(e),this.pathBuffer.push(e),this.rerender()}},{key:"removeLastAddedPathFromSvg",value:function(){this.pathBuffer.length<=0||!this.svgElement||(this.svgElement.removeChild(this.pathBuffer[this.pathBuffer.length-1]),this.pathBuffer.pop(),this.rerender())}},{key:"fadeOutToolbar",value:function(){var e=document.querySelector(".bb-capture-toolbar");e&&(e.style.opacity=0,e.style.pointerEvents="none")}},{key:"fadeInToolbar",value:function(){var e=document.querySelector(".bb-capture-toolbar");e&&(e.style.opacity=1,e.style.pointerEvents="auto")}}],n&&$p(t.prototype,n),o&&$p(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function nh(e){return nh="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},nh(e)}function oh(e,t){for(var n=0;n\n \n
'.concat(p("dismiss"),"
\n
").concat(p("rect"),'
\n
\n
\n ').concat(p("drag"),"\n
\n ").concat("capture"===this.type?'
\n '.concat(p("recorderon"),"\n ").concat(p("recorderoff"),'\n \n
\n
\n ').concat(p("mic"),'\n \n
\n
2:00
\n
\n
\n ').concat(p("pointer"),"\n
"):"",'\n
\n ').concat(p("rect"),'\n
\n
\n ').concat(p("pen"),'\n
\n
\n ').concat(p("blur"),'\n
\n
\n
\n ').concat(gh.translateText("pickAColor"),'\n
\n
\n ').concat(p("undo"),'\n ').concat(gh.translateText("undo"),"\n
\n ").concat("capture"!==this.type?'
'.concat(gh.translateText("next"),"
"):"",'\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
').concat(gh.translateText("retry"),'
\n
').concat(gh.translateText("next"),"
\n
\n
\n
\n "),document.body.appendChild(e),e.setAttribute("dir",gh.getInstance().isRTLLayout?"rtl":"ltr")}},{key:"unregisterListeners",value:function(){this.escListener&&document.removeEventListener("keydown",this.escListener),this.pageLeaveListener&&window.removeEventListener("beforeunload",this.pageLeaveListener)}},{key:"registerListeners",value:function(){var e=this;this.escListener=function(t){var n=!1,o=!1;"key"in(t=t||window.event)&&(n="Escape"===t.key,o="Enter"===t.key),n&&e.dismiss(),"screenshot"===e.type&&o&&e.showNextStep()},document.addEventListener("keydown",this.escListener),this.pageLeaveListener=function(e){e.preventDefault(),e.returnValue=""},window.addEventListener("beforeunload",this.pageLeaveListener)}},{key:"show",value:function(e){this.callback=e,this.registerListeners(),this.hideWidgetUI(),this.createEditorUI(),this.setupMousePointer(),"screenshot"===this.type?(_m.getInstance().setGlobalDataItem("snapshotPosition",{x:window.scrollX,y:window.scrollY}),ah.disableScroll()):this.setupScreenRecording(),this.screenDrawer=new th(this.captureScreenDrawerRerender.bind(this)),this.setupColorPicker(),this.setupToolbar()}},{key:"setupColorPicker",value:function(){for(var t=this,n=document.querySelector(".bb-capture-toolbar-item-selectedcolor"),o=document.querySelectorAll(".bb-capture-toolbar-item-color"),r=document.querySelector(".bb-capture-toolbar-item-colorpicker"),i=function(){var i=o[a],s=i.getAttribute("data-color");i.style.backgroundColor=s,i.onclick=function(){i&&(t.screenDrawer.setColor(s),r&&(r.style.display="none"),n.style.backgroundColor=i.style.backgroundColor,e.setPenColor(s))}},a=0;a0?o.classList.remove(e):o.classList.add(e))}}},{key:"captureRenderer",value:function(){if(this.screenRecorder){this.screenRecorder.file&&_m.getInstance().setGlobalDataItem("screenRecordingData",this.screenRecorder.file);var e="bb-capture-editor-item-inactive",t=document.querySelector(".bb-capture-toolbar-item-timer"),n=document.querySelectorAll(".bb-capture-toolbar-item"),o=document.querySelector(".bb-tooltip-screen-recording"),r=document.querySelector(".bb-tooltip-audio-recording"),i=document.querySelector(".bb-capture-editor"),a="bb-capture-editor-recording",s="bb-capture-editor-notrecording";this.screenRecorder.isRecording?(i.classList.add(a),i.classList.remove(s)):(i.classList.add(s),i.classList.remove(a));var l=document.querySelector(".bb-capture-toolbar");document.querySelector(".bb-capture-preview").style.display=this.screenRecorder.file?"flex":"none",l.style.display=this.screenRecorder.file?"none":"flex";for(var c=0;c0){var t=e.filter((function(e){return new Date(e.createdAt)>new Date(Date.now()-36e5)}));t.length>2?this.notifications=t.splice(0,t.length-2):this.notifications=t,this.renderNotifications()}}catch(n){}}},{key:"setNotificationCount",value:function(e){this.unreadCount=e,this.updateTabBarNotificationCount(),a.getInstance().updateNotificationBadge(this.unreadCount)}},{key:"showNotification",value:function(e){this.notificationContainer&&e&&e.data&&(this.notifications.find((function(t){return e.outbound===t.outbound}))||(this.notifications.push(e),e.sound&&Yh.ping()),this.notifications.length>2&&this.notifications.shift(),I(this.unreadNotificationsKey,this.notifications),this.renderNotifications())}},{key:"renderNotifications",value:function(){var e=this;if(this.notificationContainer){this.clearAllNotifications(!0);var t=document.createElement("div");t.onclick=function(){e.clearAllNotifications(),e.currentNewsIndex=0},t.className="gleap-notification-close",t.innerHTML=p("dismiss"),this.notificationContainer.appendChild(t);var n=this.notifications.filter((function(e){return e.data.news})).sort((function(e,t){return new Date(e.createdAt)-new Date(t.createdAt)})),o=this.notifications.filter((function(e){return!e.data.news}));if(n.length>0){var r=this.currentNewsIndex1){var m=document.createElement("div");m.className="gleap-news-pagination";var g=document.createElement("span");g.className="gleap-news-page-indicator",g.innerText="".concat(r+1," / ").concat(n.length),m.appendChild(g);var v=document.createElement("button");v.className="gleap-news-next-button",r\n
\n
\n '.concat(t.data.text,'\n
\n
\n
\n
\n
\n \n \n \n ').concat(t.data.nextStepTitle,"\n
\n
\n ")}else r.className="gleap-notification-item",r.innerHTML="\n ".concat(t.data.sender&&t.data.sender.profileImageUrl&&''),'\n
\n ').concat(t.data.sender?'
\n '.concat(t.data.sender.name,"\n
"):"",'\n
').concat(n,"
\n
");e.notificationContainer.appendChild(r)},b=0;b0||o.length>0||this.clearAllNotifications(!0)}}},{key:"openNews",value:function(e){e.data.news?_m.openNewsArticle(e.data.news.id,!0):_m.open()}},{key:"renderDescription",value:function(e){var t=e.data,n=t.previewText,o=t.sender;return n&&n.length>0?n:o?'\n
\n '.concat(o.profileImageUrl?'').concat(o.name,''):"","\n ").concat(o.name,"\n
\n "):""}},{key:"clearAllNotifications",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(this.notificationContainer)for(e||(this.notifications=[],this.currentNewsIndex=0,I(this.unreadNotificationsKey,this.notifications));this.notificationContainer.firstChild;)this.notificationContainer.removeChild(this.notificationContainer.firstChild)}},{key:"updateContainerStyle",value:function(){if(this.notificationContainer){var e=dt.getInstance().getFlowConfig(),t="gleap-notification-container--left",n="gleap-notification-container--no-button";this.notificationContainer.classList.remove(t),this.notificationContainer.classList.remove(n),e.feedbackButtonPosition!==a.FEEDBACK_BUTTON_CLASSIC_LEFT&&e.feedbackButtonPosition!==a.FEEDBACK_BUTTON_BOTTOM_LEFT||this.notificationContainer.classList.add(t),null===a.getInstance().buttonHidden?e.feedbackButtonPosition===a.FEEDBACK_BUTTON_NONE&&this.notificationContainer.classList.add(n):a.getInstance().buttonHidden&&this.notificationContainer.classList.add(n),this.notificationContainer.setAttribute("dir",gh.getInstance().isRTLLayout?"rtl":"ltr")}}}],o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],n&&Th(t.prototype,n),o&&Th(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Rh(e){return Rh="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Rh(e)}function Ph(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Dh(e){for(var t=1;t'),document.body.appendChild(t),this.bannerContainer=t}},{key:"sendMessage",value:function(e){try{var t=document.querySelector(".gleap-b-frame");t&&t.contentWindow&&t.contentWindow.postMessage(JSON.stringify(Dh(Dh({},e),{},{type:"banner"})),"*")}catch(n){}}},{key:"showBanner",value:function(e){this.injectBannerUI(e)}}])&&Nh(t.prototype,n),o&&Nh(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function _h(e){return _h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},_h(e)}function Uh(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Hh(e){for(var t=1;t\n
\n \n
\n '),document.body.appendChild(n),this.modalContainer=n,this.modalBackdropClickListener=this.modalContainer.querySelector(".gleap-modal-backdrop").addEventListener("click",(function(){var e,n;(null===(e=null===(n=t.modalData)||void 0===n?void 0:n.showCloseButton)||void 0===e||e)&&t.hideModal()})),document.body.classList.add("gleap-modal-open")}},{key:"_postMessage",value:function(e){try{var t=this.modalContainer.querySelector(".gleap-modal-frame");null!=t&&t.contentWindow&&t.contentWindow.postMessage(JSON.stringify(Hh(Hh({},e),{},{type:"modal"})),this.modalUrl)}catch(zm){}}},{key:"showModal",value:function(e){e&&e.config&&this._injectModalUI(e.config)}},{key:"hideModal",value:function(){this.modalContainer&&(this.modalBackdropClickListener&&this.modalContainer.querySelector(".gleap-modal-backdrop").removeEventListener("click",this.modalBackdropClickListener),document.body.removeChild(this.modalContainer),this.modalContainer=null,document.body.classList.remove("gleap-modal-open"))}}])&&zh(t.prototype,n),o&&zh(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Vh(e){return Vh="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Vh(e)}function Jh(e,t){for(var n=0;n=a-i;++s)n[i]=t[s],rf(e,t,n,s+1,r,i+1,a);else e.push(n.slice(0,i).join(""))}function af(e){return function(e){if(Array.isArray(e))return sf(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return sf(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return sf(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function sf(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){s=!0,i=e},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw i}}}}function ff(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n1&&void 0!==arguments[1]?arguments[1]:["id","class","length"];return af(e.attributes).reduce((function(e,n){return t.indexOf(n.nodeName)>-1||e.push("[".concat(n.nodeName,'="').concat(n.value,'"]')),e}),[])}(e,n)},Class:of,ID:nf};return t.reduce((function(t,n){return t[n]=o[n](e),t}),{})}function gf(e,t){try{var n=e.parentNode.querySelectorAll(t);return 1===n.length&&n[0]===e}catch(o){return!1}}function vf(e,t){return t.find(gf.bind(null,e))}function yf(e,t,n){var o=function(e,t){for(var n=[],o=e.length,r=[],i=1;i<=t;++i)rf(n,e,r,0,o-1,0,i);return n}(t,3),r=vf(e,o);return Boolean(r)||Boolean(n)&&(r=vf(e,o=o.map((function(e){return n+e}))),Boolean(r))?r:null}function bf(e,t,n,o){var r,i=mf(e,t,n);o&&o instanceof RegExp&&(i.ID=o.test(i.ID)?null:i.ID,i.Class=i.Class.filter((function(e){return!o.test(e)})));var a,s=hf(t);try{for(s.s();!(a=s.n()).done;){var l=a.value,c=i.ID,u=i.Tag,d=i.Class,p=i.Attributes,h=i.NthChild;switch(l){case"ID":if(Boolean(c)&&gf(e,c))return c;break;case"Tag":if(Boolean(u)&&gf(e,u))return u;break;case"Class":if(Boolean(d)&&d.length&&(r=yf(e,d,u)))return r;break;case"Attributes":if(Boolean(p)&&p.length&&(r=yf(e,p,u)))return r;break;case"NthChild":if(Boolean(h))return h}}}catch(zm){s.e(zm)}finally{s.f()}return"*"}function wf(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=n.selectorTypes,r=void 0===o?["ID","Class","Tag","NthChild"]:o,i=n.attributesToIgnore,a=void 0===i?["id","class","length"]:i,s=n.excludeRegex,l=void 0===s?null:s,c=[],u=function(e){for(var t=[],n=e;cf(n);)t.push(n),n=n.parentNode;return t}(e),d=hf(u);try{for(d.s();!(t=d.n()).done;){var p=bf(t.value,r,a,l);Boolean(p)&&c.push(p)}}catch(zm){d.e(zm)}finally{d.f()}for(var h=[],f=0,m=c;f ");if(pf(e,v))return v}return null}function kf(e){return kf="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},kf(e)}function xf(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Sf(e,t){for(var n=0;n0&&void 0!==arguments[0]&&arguments[0])||o(t.gleapCollapseUI,e)&&o(t.gleapFrameContainer,n))&&(t.gleapCollapseUI&&t.gleapCollapseUI.classList.toggle(e),t.gleapFrameContainer&&t.gleapFrameContainer.classList.toggle(n))})),_f(this,"injectCollapseUI",(function(){if(!t.injectedCollapseUI){t.injectedCollapseUI=!0;var e=document.createElement("div");e.className="gleap-admin-collapse-ui",e.innerHTML='
\n '.concat(p("arrowdown"),"\n
"),document.body.appendChild(e),t.gleapCollapseUI=e,e.addEventListener("click",(function(e){e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t.toggleCollapseUI()}))}})),_f(this,"injectFrame",(function(){var e;if(!t.injectedFrame){t.injectedFrame=!0;var n=document.createElement("div");n.className="gleap-admin-frame-container",n.innerHTML=''),document.body.appendChild(n),t.gleapFrameContainer=n,t.gleapFrame=document.querySelector(".gleap-admin-frame")}}))}var t,n,o;return t=e,o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],(n=[{key:"logCurrentPage",value:function(){var e=window.location.href;e&&e!==this.lastUrl&&(this.lastUrl=e,this.sendMessageToTourBuilder({name:"page-changed",data:{page:e}}))}},{key:"startPageListener",value:function(){var e=this;setInterval((function(){e.logCurrentPage()}),1e3)}},{key:"initAdminHelper",value:function(){var e=this;mm.getInstance().disable(),e.adminHelper=new Df;try{e.adminHelper.onElementPicked=function(t){e.toggleCollapseUI(!0),e.sendMessageToTourBuilder({name:"element-picked",data:{selector:t}})}}catch(t){console.log(t)}e.injectFrame(),e.injectCollapseUI(),e.setFrameHeight("loading")}},{key:"setFrameHeight",value:function(e){if(this.gleapFrameContainer){var t="";t="picker"===e||"navigate"===e?"65px":"editor"===e?"100vh":"0px",this.gleapFrameContainer.style.height=t}}},{key:"start",value:function(){var e=this;if("undefined"!=typeof window&&!window.gleapAdminDisabled){var t=this;window.addEventListener("message",(function(n){if("https://app.gleap.io"===n.origin)try{var o=JSON.parse(n.data);if("admin"===o.type&&("load"===o.name&&(t.configData=o.data,t.initAdminHelper()),"smartlink-search-result"===o.name&&e.sendMessageToTourBuilder({name:"smartlink-search-result",data:o.data}),"translate-complete"===o.name&&e.sendMessageToTourBuilder({name:"translate-complete",data:o.data})),"tourbuilder"===o.type){var r;if("loaddata"===o.name&&e.sendMessageToTourBuilder({name:"data",data:Ff(Ff({},t.configData),{},{currentPage:window.location.href})}),"highlight-element"===o.name&&(document.querySelectorAll(".gleap-admin-highlight").forEach((function(e){e.classList.remove("gleap-admin-highlight")})),null!=o&&null!==(r=o.data)&&void 0!==r&&r.selector)){var i,a=document.querySelector(null==o||null===(i=o.data)||void 0===i?void 0:i.selector);a&&a.classList.add("gleap-admin-highlight")}if("smartlink-search"===o.name&&e.sendMessage({name:"smartlink-search",data:o.data}),"product-tour-started"===o.name&&e.sendMessage({name:"product-tour-started",data:o.data}),"translate"===o.name&&e.sendMessage({name:"translate",data:o.data}),"save"===o.name&&e.sendMessage({name:"save",data:o.data}),"update-steps"===o.name&&e.sendMessage({name:"update-steps",data:o.data}),"click"===o.name)try{document.querySelector(o.data.selector).click()}catch(s){console.log(s)}"status-changed"===o.name&&(t.status=o.data,e.setFrameHeight(t.status),t.adminHelper.stopPicker(),"picker"===t.status&&t.adminHelper.startPicker())}}catch(l){}})),this.sendMessage({name:"init"}),this.startPageListener()}}},{key:"sendMessage",value:function(e){try{window&&window.opener&&window.opener.postMessage(JSON.stringify(Ff(Ff({},e),{},{type:"admin"})),"*")}catch(t){}}},{key:"sendMessageToTourBuilder",value:function(e){try{this.gleapFrame&&this.gleapFrame.contentWindow&&this.gleapFrame.contentWindow.postMessage(JSON.stringify(Ff(Ff({},e),{},{type:"tourbuilder"})),"*")}catch(t){}}}])&&Bf(t.prototype,n),o&&Bf(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function zf(e){return zf="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},zf(e)}function qf(e){return function(e){if(Array.isArray(e))return Wf(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return Wf(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Wf(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Wf(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n0&&void 0!==arguments[0]?arguments[0]:{})}function n(t){return t?e[t]:e}function o(e,t,n,o){return(e/=o/2)<1?n/2*e*e+t:-n/2*(--e*(e-2)-1)+t}function r(e){var t='a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type="text"]:not([disabled]), input[type="radio"]:not([disabled]), input[type="checkbox"]:not([disabled]), select:not([disabled])';return e.flatMap((function(e){var n=e.matches(t),o=Array.from(e.querySelectorAll(t));return[].concat(qf(n?[e]:[]),o)})).filter((function(e){return"none"!==getComputedStyle(e).pointerEvents&&function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)}(e)}))}function i(e){if(e&&!function(e){var t=e.getBoundingClientRect();return t.top>=0&&t.left>=0&&t.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&t.right<=(window.innerWidth||document.documentElement.clientWidth)}(e)){var t=n("smoothScroll");e.scrollIntoView({behavior:!t||a(e)?"auto":"smooth",inline:"center",block:"center"})}}function a(e){if(e&&e.parentElement){var t=e.parentElement;return t.scrollHeight>t.clientHeight}}var s={};function l(e,t){s[e]=t}function c(e){return e?s[e]:s}function u(){s={}}var d={};function p(e,t){d[e]=t}function h(e){var t;null==(t=d[e])||t.call(d)}function f(e){if(e){var t=e.getBoundingClientRect(),n={x:t.x,y:t.y,width:t.width,height:t.height};l("__activeStagePosition",n),g(n)}}function m(e){var t=function(e){var t=window.innerWidth,o=window.innerHeight,r=document.createElementNS("http://www.w3.org/2000/svg","svg");r.classList.add("gleap-tour-overlay","gleap-tour-overlay-animated"),r.setAttribute("viewBox","0 0 ".concat(t," ").concat(o)),r.setAttribute("xmlSpace","preserve"),r.setAttribute("xmlnsXlink","http://www.w3.org/1999/xlink"),r.setAttribute("version","1.1"),r.setAttribute("preserveAspectRatio","xMinYMin slice"),r.style.fillRule="evenodd",r.style.clipRule="evenodd",r.style.strokeLinejoin="round",r.style.strokeMiterlimit="2",r.style.zIndex="10000",r.style.position="fixed",r.style.top="0",r.style.left="0",r.style.width="100%",r.style.height="100%";var i=document.createElementNS("http://www.w3.org/2000/svg","path");return i.setAttribute("d",v(e)),i.style.fill=n("overlayColor")||"rgb(0,0,0)",i.style.opacity="".concat(n("overlayOpacity")),i.style.pointerEvents="auto",i.style.cursor="auto",r.appendChild(i),r}(e);document.body.appendChild(t),S(t,(function(e){"path"===e.target.tagName&&h("overlayClick")})),l("__overlaySvg",t)}function g(e){var t=c("__overlaySvg");if(t){var n=t.firstElementChild;if("path"!==(null==n?void 0:n.tagName))throw new Error("no path element found in stage svg");n.setAttribute("d",v(e))}else m(e)}function v(e){var t=window.innerWidth,o=window.innerHeight,r=n("stagePadding")||0,i=n("stageRadius")||0,a=e.width+2*r,s=e.height+2*r,l=Math.min(i,a/2,s/2),c=Math.floor(Math.max(l,0)),u=e.x-r+c,d=e.y-r,p=a-2*c,h=s-2*c;return"M".concat(t,",0L0,0L0,").concat(o,"L").concat(t,",").concat(o,"L").concat(t,",0Z\n M").concat(u,",").concat(d," h").concat(p," a").concat(c,",").concat(c," 0 0 1 ").concat(c,",").concat(c," v").concat(h," a").concat(c,",").concat(c," 0 0 1 -").concat(c,",").concat(c," h-").concat(p," a").concat(c,",").concat(c," 0 0 1 -").concat(c,",-").concat(c," v-").concat(h," a").concat(c,",").concat(c," 0 0 1 ").concat(c,",-").concat(c," z")}function y(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:5e3,r=e.element,a=r;if("string"==typeof a)try{a=document.querySelector(r)}catch(u){var s=r.replace(/(#[^#\s]+)/g,(function(e){return e.replace(/:/g,"\\:")}));a=document.querySelector(s)}if(r&&!a&&t>=0)setTimeout((function(){C(),y(e,t-100)}),100);else{if(!a&&("INPUT"===e.mode||"CLICK"===e.mode))return n("onElementNotFound")(e);a||(a=function(){var e=document.getElementById("gleap-tour-dummy-element");if(e)return e;var t=document.createElement("div");return t.id="gleap-tour-dummy-element",t.style.width="0",t.style.height="0",t.style.pointerEvents="none",t.style.opacity="0",t.style.position="fixed",t.style.top="50%",t.style.left="50%",document.body.appendChild(t),t}()),function(e,t){var r,a,s=400,u=Date.now(),d=c("__activeStep"),p=c("__activeElement")||e,h=!p||p===e,m="gleap-tour-dummy-element"===e.id,v="gleap-tour-dummy-element"===p.id,y=n("animate"),b=t.onHighlightStarted||n("onHighlightStarted"),w=(null==t?void 0:t.onHighlighted)||n("onHighlighted"),k=(null==d?void 0:d.onDeselected)||n("onDeselected"),x=n(),S=c();!h&&k&&k(v?void 0:p,d,{config:x,state:S});b&&b(m?void 0:e,t,{config:x,state:S});var O=!h&&y,E=!1;C(),l("previousStep",d),l("previousElement",p),l("activeStep",t),l("activeElement",e);var T=function r(){if(c("__transitionCallback")===r){var i=Date.now()-u,a=s-i<=s/2;t.popover&&a&&!E&&O&&(I(e,t),E=!0),n("animate")&&i0&&P[0].focus()}function O(){var e=c("popover");if(null==e?void 0:e.wrapper){var t=e.wrapper.getBoundingClientRect(),o=n("stagePadding")||0,r=n("popoverOffset")||0;return{width:t.width+o+r,height:t.height+o+r,realWidth:t.width,realHeight:t.height}}}function E(e,t){var n=t.elementDimensions,o=t.popoverDimensions,r=t.popoverPadding,i=t.popoverArrowDimensions;return"start"===e?Math.max(Math.min(n.top-r,window.innerHeight-o.realHeight-i.width),i.width):"end"===e?Math.max(Math.min(n.top-(null==o?void 0:o.realHeight)+n.height+r,window.innerHeight-(null==o?void 0:o.realHeight)-i.width),i.width):"center"===e?Math.max(Math.min(n.top+n.height/2-(null==o?void 0:o.realHeight)/2,window.innerHeight-(null==o?void 0:o.realHeight)-i.width),i.width):0}function T(e,t){var n=t.elementDimensions,o=t.popoverDimensions,r=t.popoverPadding,i=t.popoverArrowDimensions;return"start"===e?Math.max(Math.min(n.left-r,window.innerWidth-o.realWidth-i.width),i.width):"end"===e?Math.max(Math.min(n.left-(null==o?void 0:o.realWidth)+n.width+r,window.innerWidth-(null==o?void 0:o.realWidth)-i.width),i.width):"center"===e?Math.max(Math.min(n.left+n.width/2-(null==o?void 0:o.realWidth)/2,window.innerWidth-(null==o?void 0:o.realWidth)-i.width),i.width):0}function L(e,t){var o=c("popover");if(o){var r=(null==t?void 0:t.popover)||{},i=r.align,a=void 0===i?"start":i,s=r.side,l=void 0===s?"left":s,u=a,d="gleap-tour-dummy-element"===e.id?"over":l,p=n("stagePadding")||0,h=O(),f=o.arrow.getBoundingClientRect(),m=e.getBoundingClientRect(),g=m.top-h.height,v=g>=0,y=window.innerHeight-(m.bottom+h.height),b=y>=0,w=m.left-h.width,k=w>=0,x=window.innerWidth-(m.right+h.width),S=x>=0,C=!(v||b||k||S),I=d;if("top"===d&&v?S=k=b=!1:"bottom"===d&&b?S=k=v=!1:"left"===d&&k?S=v=b=!1:"right"===d&&S&&(k=v=b=!1),"over"===d){var L=window.innerWidth/2-h.realWidth/2,A=window.innerHeight/2-h.realHeight/2;o.wrapper.style.left="".concat(L,"px"),o.wrapper.style.right="auto",o.wrapper.style.top="".concat(A,"px"),o.wrapper.style.bottom="auto"}else if(C){var M=window.innerWidth/2-(null==h?void 0:h.realWidth)/2;o.wrapper.style.left="".concat(M,"px"),o.wrapper.style.right="auto",o.wrapper.style.bottom="".concat(10,"px"),o.wrapper.style.top="auto"}else if(k){var R=Math.min(w,window.innerWidth-(null==h?void 0:h.realWidth)-f.width),P=E(u,{elementDimensions:m,popoverDimensions:h,popoverPadding:p,popoverArrowDimensions:f});o.wrapper.style.left="".concat(R,"px"),o.wrapper.style.top="".concat(P,"px"),o.wrapper.style.bottom="auto",o.wrapper.style.right="auto",I="left"}else if(S){var D=Math.min(x,window.innerWidth-(null==h?void 0:h.realWidth)-f.width),N=E(u,{elementDimensions:m,popoverDimensions:h,popoverPadding:p,popoverArrowDimensions:f});o.wrapper.style.right="".concat(D,"px"),o.wrapper.style.top="".concat(N,"px"),o.wrapper.style.bottom="auto",o.wrapper.style.left="auto",I="right"}else if(v){var j=Math.min(g,window.innerHeight-h.realHeight-f.width),F=T(u,{elementDimensions:m,popoverDimensions:h,popoverPadding:p,popoverArrowDimensions:f});o.wrapper.style.top="".concat(j,"px"),o.wrapper.style.left="".concat(F,"px"),o.wrapper.style.bottom="auto",o.wrapper.style.right="auto",I="top"}else if(b){var B=Math.min(y,window.innerHeight-(null==h?void 0:h.realHeight)-f.width),_=T(u,{elementDimensions:m,popoverDimensions:h,popoverPadding:p,popoverArrowDimensions:f});o.wrapper.style.left="".concat(_,"px"),o.wrapper.style.bottom="".concat(B,"px"),o.wrapper.style.top="auto",o.wrapper.style.right="auto",I="bottom"}C?o.arrow.classList.add("gleap-tour-popover-arrow-none"):function(e,t,n){var o=c("popover");if(!o)return;var r=n.getBoundingClientRect(),i=O(),a=o.arrow,s=i.width,l=window.innerWidth,u=r.width,d=r.left,p=i.height,h=window.innerHeight,f=r.top,m=r.height;a.className="gleap-tour-popover-arrow";var g=t,v=e;"top"===t?(d+u<=0?(g="right",v="end"):d+u-s<=0&&(g="top",v="start"),d>=l?(g="left",v="end"):d+s>=l&&(g="top",v="end")):"bottom"===t?(d+u<=0?(g="right",v="start"):d+u-s<=0&&(g="bottom",v="start"),d>=l?(g="left",v="start"):d+s>=l&&(g="bottom",v="end")):"left"===t?(f+m<=0?(g="bottom",v="end"):f+m-p<=0&&(g="left",v="start"),f>=h?(g="top",v="end"):f+p>=h&&(g="left",v="end")):"right"===t&&(f+m<=0?(g="bottom",v="start"):f+m-p<=0&&(g="right",v="start"),f>=h?(g="top",v="start"):f+p>=h&&(g="right",v="end"));g?(a.classList.add("gleap-tour-popover-arrow-side-".concat(g)),a.classList.add("gleap-tour-popover-arrow-align-".concat(v))):a.classList.add("gleap-tour-popover-arrow-none")}(u,I,e)}}return function(){function e(){n("allowClose")&&f()}function o(){var e=c("activeIndex"),t=n("steps")||[];if(void 0!==e){var o=e+1;t[o]?h(o):f()}}function r(){var e=c("activeIndex"),t=n("steps")||[];if(void 0!==e){var o=e-1;t[o]?h(o):f()}}function i(){var e;if(!c("__transitionCallback")){var t=c("activeIndex"),o=c("__activeStep"),i=c("__activeElement");if("CLICK"!==o.mode)if(void 0!==t&&void 0!==o)if(void 0!==c("activeIndex")){var a=(null==(e=o.popover)?void 0:e.onPrevClick)||n("onPrevClick");if(a)return a(i,o,{config:n(),state:c()});r()}}}function a(){var e;if(!c("__transitionCallback")){var t=c("activeIndex"),r=c("__activeStep"),i=c("__activeElement");if("CLICK"!==r.mode&&void 0!==t&&void 0!==r){var a=(null==(e=r.popover)?void 0:e.onNextClick)||n("onNextClick");if(a)return a(i,r,{config:n(),state:c()});o()}}}function s(){c("isInitialized")||(l("isInitialized",!0),document.body.classList.add("gleap-tour-active",n("animate")?"gleap-tour-fade":"gleap-tour-simple"),window.addEventListener("keyup",x,!1),window.addEventListener("keydown",k,!1),window.addEventListener("resize",w),window.addEventListener("scroll",w),p("overlayClick",e),p("escapePress",e),p("arrowLeftPress",i),p("arrowRightPress",a))}function h(){var e,t,o,r,i,a,s,c,u=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,d=n("steps");if(!d)return console.error("No steps to drive through"),void f();if(d[u]){l("__activeOnDestroyed",document.activeElement),l("activeIndex",u);var p=d[u],m=d[u+1],g=d[u-1],v=(null==(e=p.popover)?void 0:e.doneBtnText)||n("doneBtnText")||"Done",b=n("allowClose"),w=void 0!==(null==(t=p.popover)?void 0:t.showProgress)?null==(o=p.popover)?void 0:o.showProgress:n("showProgress"),k=((null==(r=p.popover)?void 0:r.progressText)||n("progressText")||"{{current}} of {{total}}").replace("{{current}}","".concat(u+1)).replace("{{total}}","".concat(d.length)),x=(null==(i=p.popover)?void 0:i.showButtons)||n("showButtons"),S=["next","previous"].concat(qf(b?["close"]:[])).filter((function(e){return!(null==x?void 0:x.length)||x.includes(e)})),C=(null==(a=p.popover)?void 0:a.onNextClick)||n("onNextClick"),I=(null==(s=p.popover)?void 0:s.onPrevClick)||n("onPrevClick"),O=(null==(c=p.popover)?void 0:c.onCloseClick)||n("onCloseClick");y(Vf(Vf({},p),{},{popover:Vf({showButtons:S,nextBtnText:m?void 0:v,disableButtons:qf(g?[]:["previous"]),showProgress:w,progressText:k,onNextClick:C||function(){m?h(u+1):f()},onPrevClick:I||function(){h(u-1)},onCloseClick:O||function(){f()}},(null==p?void 0:p.popover)||{})}))}else f()}function f(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=c("__activeElement"),o=c("__activeStep"),r=c("__activeOnDestroyed"),i=n("onDestroyStarted");if(e&&i){i(!t||"gleap-tour-dummy-element"===(null==t?void 0:t.id)?void 0:t,o,{config:n(),state:c()})}else{var a,s=(null==o?void 0:o.onDeselected)||n("onDeselected"),l=n("onDestroyed");if(document.body.classList.remove("gleap-tour-active","gleap-tour-fade","gleap-tour-simple"),window.removeEventListener("keyup",x),window.removeEventListener("resize",w),window.removeEventListener("scroll",w),function(){var e,t=c("popover");t&&(null==(e=t.wrapper.parentElement)||e.removeChild(t.wrapper))}(),function(){var e;null==(e=document.getElementById("gleap-tour-dummy-element"))||e.remove(),document.querySelectorAll(".gleap-tour-active-element").forEach((function(e){e.classList.remove("gleap-tour-active-element","gleap-tour-no-interaction"),e.removeAttribute("aria-haspopup"),e.removeAttribute("aria-expanded"),e.removeAttribute("aria-controls")}))}(),(a=c("__overlaySvg"))&&a.remove(),d={},u(),t&&o){var p="gleap-tour-dummy-element"===t.id;s&&s(p?void 0:t,o,{config:n(),state:c()}),l&&l(p?void 0:t,o,{config:n(),state:c()})}r&&r.focus()}}return t(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),{isActive:function(){return c("isInitialized")||!1},refresh:w,drive:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;s(),h(e)},setConfig:t,setSteps:function(e){u(),t(Vf(Vf({},n()),{},{steps:e}))},getConfig:n,getState:c,getActiveIndex:function(){return c("activeIndex")},isFirstStep:function(){return 0===c("activeIndex")},isLastStep:function(){var e=n("steps")||[],t=c("activeIndex");return void 0!==t&&t===e.length-1},getActiveStep:function(){return c("activeStep")},getActiveElement:function(){return c("activeElement")},getPreviousElement:function(){return c("previousElement")},getPreviousStep:function(){return c("previousStep")},moveNext:o,movePrevious:r,moveTo:function(e){(n("steps")||[])[e]?h(e):f()},hasNextStep:function(){var e=n("steps")||[],t=c("activeIndex");return void 0!==t&&e[t+1]},hasPreviousStep:function(){var e=n("steps")||[],t=c("activeIndex");return void 0!==t&&e[t-1]},highlight:function(e){s(),y(Vf(Vf({},e),{},{popover:e.popover?Vf({showButtons:[],showProgress:!1,progressText:""},e.popover):void 0}))},destroy:function(){f(!1)}}}}();const Kf=Zf;function Yf(e){return Yf="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Yf(e)}function Xf(){Xf=function(){return t};var e,t={},n=Object.prototype,o=n.hasOwnProperty,r=Object.defineProperty||function(e,t,n){e[t]=n.value},i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",s=i.asyncIterator||"@@asyncIterator",l=i.toStringTag||"@@toStringTag";function c(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,n){return e[t]=n}}function u(e,t,n,o){var i=t&&t.prototype instanceof v?t:v,a=Object.create(i.prototype),s=new A(o||[]);return r(a,"_invoke",{value:O(e,n,s)}),a}function d(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=u;var p="suspendedStart",h="suspendedYield",f="executing",m="completed",g={};function v(){}function y(){}function b(){}var w={};c(w,a,(function(){return this}));var k=Object.getPrototypeOf,x=k&&k(k(M([])));x&&x!==n&&o.call(x,a)&&(w=x);var S=b.prototype=v.prototype=Object.create(w);function C(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function I(e,t){function n(r,i,a,s){var l=d(e[r],e,i);if("throw"!==l.type){var c=l.arg,u=c.value;return u&&"object"==Yf(u)&&o.call(u,"__await")?t.resolve(u.__await).then((function(e){n("next",e,a,s)}),(function(e){n("throw",e,a,s)})):t.resolve(u).then((function(e){c.value=e,a(c)}),(function(e){return n("throw",e,a,s)}))}s(l.arg)}var i;r(this,"_invoke",{value:function(e,o){function r(){return new t((function(t,r){n(e,o,t,r)}))}return i=i?i.then(r,r):r()}})}function O(t,n,o){var r=p;return function(i,a){if(r===f)throw new Error("Generator is already running");if(r===m){if("throw"===i)throw a;return{value:e,done:!0}}for(o.method=i,o.arg=a;;){var s=o.delegate;if(s){var l=E(s,o);if(l){if(l===g)continue;return l}}if("next"===o.method)o.sent=o._sent=o.arg;else if("throw"===o.method){if(r===p)throw r=m,o.arg;o.dispatchException(o.arg)}else"return"===o.method&&o.abrupt("return",o.arg);r=f;var c=d(t,n,o);if("normal"===c.type){if(r=o.done?m:h,c.arg===g)continue;return{value:c.arg,done:o.done}}"throw"===c.type&&(r=m,o.method="throw",o.arg=c.arg)}}}function E(t,n){var o=n.method,r=t.iterator[o];if(r===e)return n.delegate=null,"throw"===o&&t.iterator.return&&(n.method="return",n.arg=e,E(t,n),"throw"===n.method)||"return"!==o&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+o+"' method")),g;var i=d(r,t.iterator,n.arg);if("throw"===i.type)return n.method="throw",n.arg=i.arg,n.delegate=null,g;var a=i.arg;return a?a.done?(n[t.resultName]=a.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,g):a:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,g)}function T(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function L(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function A(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(T,this),this.reset(!0)}function M(t){if(t||""===t){var n=t[a];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,i=function n(){for(;++r=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var l=o.call(a,"catchLoc"),c=o.call(a,"finallyLoc");if(l&&c){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&o.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),L(n),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var o=n.completion;if("throw"===o.type){var r=o.arg;L(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,o){return this.delegate={iterator:M(t),resultName:n,nextLoc:o},"next"===this.method&&(this.arg=e),g}},t}function $f(e,t){for(var n=0;n=0&&t.productTourData&&t.productTourData.steps){var e=t.productTourData.steps[t.currentActiveIndex];e&&e.selector&&""!==e.selector&&t.updatePointerPosition(document.querySelector(e.selector),e)}})))}var t,n,o;return t=e,n=[{key:"disable",value:function(){this.disabled=!0,this.cleanup()}},{key:"startWithConfig",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;"undefined"!=typeof window&&(this.productTourId||this.disabled||(this.productTourId=e,this.productTourData=t,this.currentActiveIndex=0,this.onCompleteCallback=n,this.start()))}},{key:"storeUncompletedTour",value:function(){if("undefined"!=typeof window)if(this.productTourId&&this.productTourData)try{var e=JSON.parse(JSON.stringify({tourData:this.productTourData,tourId:this.productTourId}));e.tourData.steps=e.tourData.steps.slice(this.currentActiveIndex||0,e.tourData.steps.length),localStorage.setItem(nm,JSON.stringify(e))}catch(t){}else localStorage.removeItem(nm)}},{key:"attachScrollListeners",value:function(e,t){var n=this;if("undefined"!=typeof window&&e){var o=function(e){if("undefined"!=typeof window){for(var t=[],n=e.parentElement;n;){var o=window.getComputedStyle(n);("auto"===o.overflowY||"scroll"===o.overflowY)&&n.scrollHeight>n.clientHeight&&t.push(n),n=n.parentElement}return t}}(e);o.push(window),o.forEach((function(o){var r=function(){clearTimeout(n._scrollDebounceTimer),n._scrollDebounceTimer=setTimeout((function(){n.updatePointerPosition(e,t)}),150)};o.addEventListener("scroll",r,{passive:!0}),n._scrollListeners.push({el:o,handler:r})}))}}},{key:"removeScrollListeners",value:function(){"undefined"!=typeof window&&(this._scrollListeners&&this._scrollListeners.length>0&&(this._scrollListeners.forEach((function(e){var t=e.el,n=e.handler;t.removeEventListener("scroll",n)})),this._scrollListeners=[]),this._scrollDebounceTimer&&(clearTimeout(this._scrollDebounceTimer),this._scrollDebounceTimer=null))}},{key:"updatePointerPosition",value:function(e,t){var n,o=this;if("undefined"!=typeof window)try{var r=this._pointerContainer||document.getElementById(om);if(!r)return;if(!e)return r.style.position="fixed",r.style.left="50%",r.style.top="50%",r.style.transform="translate(-50%, -50%)",function(e){if("undefined"!=typeof window){var t=e-window.innerHeight/2;window.scrollTo({top:t,behavior:"smooth"})}}(window.innerHeight/2),this.removeScrollListeners(),this._currentAnchor=null,void(this._currentStep=null);n=e,"undefined"!=typeof window&&n&&n.scrollIntoView({behavior:"smooth",block:"center",inline:"center"});var i=0;!function n(){if(function(e){if("undefined"!=typeof window){var t=e.getBoundingClientRect();return t.top>=0&&t.left>=0&&t.bottom<=window.innerHeight&&t.right<=window.innerWidth}}(e)||i>=20){var a=e.getBoundingClientRect(),s=a.left+a.width/2,l=a.top+a.height/2+10;r.style.position="fixed",r.style.left="".concat(s,"px"),r.style.top="".concat(l,"px"),r.style.transform="translate(-50%, -50%)";var c=350;c>window.innerWidth-40&&(c=window.innerWidth-40),s+c>window.innerWidth-20?r.classList.add("copilot-pointer-container-right"):r.classList.remove("copilot-pointer-container-right"),o._currentAnchor===e&&o._currentStep===t||(o.removeScrollListeners(),o._currentAnchor=e,o._currentStep=t,o.attachScrollListeners(e,t))}else i++,setTimeout(n,100)}()}catch(a){}}},{key:"cleanup",value:function(){var e=this;"undefined"!=typeof window&&(document.body.classList.add("gl-copilot-fade-out"),this.currentAudio&&this.currentAudio.pause(),setTimeout((function(){if(e._pointerContainer)e._pointerContainer.remove(),e._pointerContainer=null;else{var t=document.getElementById(om);t&&t.remove()}var n=document.getElementById(im);n&&n.remove();var o=document.getElementById(rm);o&&o.remove(),document.body.classList.remove("gl-copilot-fade-out")}),800),this.productTourId=void 0,this.productTourData=void 0,this.removeScrollListeners())}},{key:"toggleAudio",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.audioMuted=e,this.currentAudio&&(this.currentAudio.muted=this.audioMuted),document.querySelector(".".concat(im,"-mute")).innerHTML=p(this.audioMuted?"unmute":"mute")}},{key:"setupCopilotTour",value:function(){var e,t,n,o,r,i,a=this;if("undefined"!=typeof window){var s,l,c=null!==(e=null===(t=dt.getInstance().flowConfig)||void 0===t?void 0:t.color)&&void 0!==e?e:"#485BFF",u=d(c),h=document.getElementById(rm);h||((h=document.createElement("style")).id=rm,h.type="text/css",h.textContent="\n #".concat(om," {\n position: absolute;\n top: 0;\n left: 0;\n display: flex;\n align-items: flex-start;\n pointer-events: none;\n z-index: 2147483610;\n transition: all 0.5s ease;\n }\n .").concat(om,"-clickmode {\n cursor: pointer;\n pointer-events: all !important;\n }\n .").concat(om,"-clickmode #copilot-info-bubble-content {\n display: flex !important;\n }\n .").concat(om,"-clickmode svg {\n display: none !important;\n }\n #").concat(om," svg {\n width: 20px;\n height: auto;\n fill: none;\n }\n #copilot-info-bubble {\n position: relative;\n }\n #copilot-info-bubble-content-container {\n position: absolute;\n top: 0px;\n left: 0px;\n min-width: min(300px, 80vw);\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n }\n .").concat(om,"-right #copilot-info-bubble-content-container {\n left: auto !important;\n right: 0px !important;\n align-items: flex-end;\n }\n .").concat(om,"-right .copilot-info-bubble-content {\n margin-right: 5px;\n }\n .").concat(om,"-right svg {\n transform: scaleX(-1);\n }\n #copilot-info-bubble-content svg {\n width: 16px;\n height: 16px;\n display: inline-block !important;\n margin-left: 5px;\n }\n #copilot-info-bubble-content {\n margin-top: 18px;\n margin-left: 5px;\n padding: 10px 15px;\n border-radius: 20px;\n background-color: black;\n color: white;\n font-family: Arial, sans-serif;\n font-size: 14px;\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);\n max-width: 100%;\n white-space: normal;\n overflow-wrap: break-word;\n word-break: normal;\n hyphens: none;\n }\n .").concat(om,"-right #copilot-info-bubble-content {\n margin-top: 30px;\n margin-left: 0px;\n margin-right: 5px;\n }\n .click-wave {\n position: absolute;\n width: 34px;\n height: 34px;\n border-radius: 50%;\n background-color: rgba(0, 0, 0, 0.5);\n pointer-events: none;\n z-index: 2147483611;\n animation: click-wave-animation 0.8s ease forwards;\n }\n @keyframes click-wave-animation {\n 0% {\n transform: scale(0.2);\n opacity: 1;\n }\n 100% {\n transform: scale(2);\n opacity: 0;\n }\n }\n @keyframes slideInFromTop {\n 0% {\n transform: translateY(-100%);\n opacity: 0;\n }\n 100% {\n transform: translateY(0);\n opacity: 1;\n }\n }\n .").concat(im," {\n position: fixed;\n top: 20px;\n right: 20px;\n z-index: 2147483610;\n background: #fff;\n padding: 6px;\n border-radius: 10px;\n box-shadow: 0 0 20px 0 #C294F2;\n display: flex;\n align-items: center;\n gap: 8px;\n border: 1px solid rgba(192, 146, 242, 0.5);\n animation: slideInFromTop 0.5s ease-out forwards;\n }\n .").concat(im," span {\n font-size: 13px;\n color: #000;\n font-family: sans-serif;\n }\n .").concat(im,"-avatar {\n width: 24px;\n height: 24px;\n flex-shrink: 0;\n border-radius: 6px;\n }\n .").concat(im,"-mute {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n .").concat(im,"-mute svg {\n width: 20px;\n height: auto;\n cursor: pointer;\n animation: pulsate 2s infinite;\n }\n .").concat(im,"-mute svg:hover {\n opacity: 0.8;\n }\n .").concat(im,"-dismiss {\n display: flex;\n align-items: center;\n justify-content: center;\n padding-right: 3px;\n }\n .").concat(im,"-dismiss svg {\n width: 15px;\n height: auto;\n cursor: pointer;\n }\n .").concat(im,"-dismiss svg:hover {\n opacity: 0.8;\n }\n @keyframes pulsate {\n 0% {\n transform: scale(1);\n opacity: 1;\n }\n 50% {\n transform: scale(1.1);\n opacity: 0.8;\n }\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n }\n @keyframes glCoFadeIn {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n @keyframes glCoFadeOut {\n 0% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n }\n\n .gleap-audio-unmute-modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n background-color: rgba(0, 0, 0, 0.5);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 2147483620;\n }\n\n .gleap-audio-unmute-modal {\n background-color: #fff;\n padding: 20px;\n border-radius: 8px;\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);\n text-align: center;\n max-width: 90%;\n width: 400px;\n }\n\n .gleap-audio-unmute-modal p {\n margin-bottom: 20px;\n font-size: 16px;\n line-height: 22px;\n font-weight: normal;\n }\n\n .gleap-audio-unmute-button {\n background: ").concat(c,";\n color: ").concat(u,";\n outline: none;\n border: none;\n padding: 10px 14px;\n border-radius: 12px;\n font-size: 14px;\n font-weight: bold;\n cursor: pointer;\n }\n\n .gleap-audio-unmute-button:hover {\n opacity: 0.8;\n }\n\n .gleap-tour-continue-button {\n color: ").concat(c,";\n text-decoration: none;\n cursor: pointer;\n font-size: 14px;\n font-weight: bold;\n border: none;\n background: none;\n padding: 0;\n margin: 0;\n margin-left: 20px;\n }\n\n .gleap-tour-continue-button:hover {\n opacity: 0.8;\n }\n\n body.gl-copilot-fade-out::before,\n body.gl-copilot-fade-out::after,\n body.gl-copilot-fade-out #").concat(im," {\n animation: glCoFadeOut 0.8s ease-out forwards;\n }\n ").concat(null===(s=null===(l=this.productTourData)||void 0===l?void 0:l.playVoice)||void 0===s||s?"":"\n .".concat(im,"-mute {\n display: none;\n }\n "),"\n ").concat(this.productTourData.gradient?'body::before {\n content: "";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n box-sizing: border-box;\n border: 18px solid transparent;\n filter: blur(25px);\n border-image-slice: 1;\n border-image-source: linear-gradient(45deg, #ED5587, #FBE6A9, #a6e3f8, #C294F2);\n animation: glCoFadeIn 1.5s ease-out forwards;\n }\n \n body::after {\n content: "";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n opacity: 0.5;\n box-sizing: border-box;\n border: 3px solid transparent;\n border-image-slice: 1;\n border-image-source: linear-gradient(45deg, #ED5587, #FBE6A9, #a6e3f8, #C294F2);\n animation: glCoFadeIn 1.5s ease-out forwards;\n }':'body::after {\n content: "";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n opacity: 0;\n }',"\n "),document.head.appendChild(h));var f=document.createElement("div");f.id=om,f.style.opacity=0,this._pointerContainer=f;var m=document.createElementNS("http://www.w3.org/2000/svg","svg");m.setAttribute("viewBox","0 0 380 476"),m.innerHTML='';var g=document.createElement("div");g.id="copilot-info-bubble",g.innerHTML="
";var v=document.createElement("div");v.id=im,v.classList.add(im),v.innerHTML='\n \n ').concat(null===(o=this.productTourData)||void 0===o?void 0:o.kaiSlug,'\n
\n ').concat(p(this.audioMuted?"unmute":"mute"),"\n
\n ").concat(null!==(r=this.productTourData)&&void 0!==r&&r.allowClose?'
\n ').concat(p("dismiss"),"\n
"):"","\n "),document.body.appendChild(v),document.querySelector(".".concat(im,"-mute")).addEventListener("click",(function(){a.toggleAudio(!a.audioMuted)})),null!==(i=this.productTourData)&&void 0!==i&&i.allowClose&&document.querySelector(".".concat(im,"-dismiss")).addEventListener("click",(function(){a.completeTour(!1)})),f.appendChild(m),f.appendChild(g),document.body.appendChild(f)}}},{key:"start",value:function(){var e=this;if("undefined"!=typeof window&&!this.disabled){var t=this.productTourData;t&&function(){return am.apply(this,arguments)}().then((function(n){e.audioMuted=!n,e.setupCopilotTour(),e.audioMuted&&null!=t&&t.showUnmuteModal?e.showAudioUnmuteModal():setTimeout((function(){e.renderNextStep()}),1500)}))}}},{key:"showAudioUnmuteModal",value:function(){var e,t,n,o=this,r=document.createElement("div");r.classList.add("gleap-audio-unmute-modal-overlay");var i=document.createElement("div");i.classList.add("gleap-audio-unmute-modal");var a=document.createElement("p");a.textContent=null===(e=this.productTourData)||void 0===e?void 0:e.unmuteModalTitle,i.appendChild(a);var s=document.createElement("button");s.classList.add("gleap-audio-unmute-button"),s.textContent=null===(t=this.productTourData)||void 0===t?void 0:t.unmuteModalButton,s.addEventListener("click",(function(){o.toggleAudio(!1),r.parentNode&&r.parentNode.removeChild(r),setTimeout((function(){o.renderNextStep()}),1e3)})),i.appendChild(s);var l=document.createElement("button");l.classList.add("gleap-tour-continue-button"),l.textContent=null===(n=this.productTourData)||void 0===n?void 0:n.unmuteModalContinue,l.addEventListener("click",(function(){r.parentNode&&r.parentNode.removeChild(r),setTimeout((function(){o.renderNextStep()}),1e3)})),i.appendChild(l),r.appendChild(i),document.body.appendChild(r)}},{key:"completeTour",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];"undefined"!=typeof window&&(this.cleanup(),this.onCompleteCallback&&this.onCompleteCallback(e))}},{key:"renderNextStep",value:function(){var e=this;if("undefined"!=typeof window&&!this.disabled){var t=this,n=this.productTourData.steps;if(this.currentActiveIndex>=n.length)setTimeout((function(){e.completeTour()}),500);else{var o=n[this.currentActiveIndex],r=function(n){if(e._pointerContainer.style.display="flex",o.selector&&o.selector.length>0&&!n)e.completeTour(!1);else{var r=function(){if("INPUT"===o.mode&&n){var e,r=function(){document.querySelector("#".concat(om)).classList.remove("copilot-pointer-container-clickmode"),n.classList.remove("gleap-input-highlight"),document.getElementById(om).style.display="none",t.currentActiveIndex++,t.storeUncompletedTour(),t.renderNextStep()};if("default"===(null!==(e=o.inputType)&&void 0!==e?e:"default")){var i=function e(t){var o;if(0!==(null==t||null===(o=t.target)||void 0===o||null===(o=o.value)||void 0===o?void 0:o.length)){var i=document.getElementById("copilot-info-bubble-content");i&&(i.innerHTML="".concat(gh.translateText("next"),' \n \n'),i.addEventListener("click",r,{once:!0}),n.classList.add("gleap-input-highlight"),document.querySelector("#".concat(om)).classList.add("copilot-pointer-container-clickmode"),n.removeEventListener("input",e))}};n.addEventListener("input",i,{once:!1}),n.hasAttribute("contenteditable")&&n.addEventListener("keyup",i,{once:!1}),n.addEventListener("blur",(function(){n.focus()}),{once:!0}),n.focus()}else{var a,s=null!==(a=o.inputValue)&&void 0!==a?a:"",l=0;!function e(){l0})).length;return Math.ceil(t/3.6)+1}}(i),s=function(){e.currentAudio=void 0,setTimeout((function(){r()}),1e3*a)};o.voice&&o.voice.length>0?(e.currentAudio=new Audio(o.voice),e.audioMuted&&(e.currentAudio.muted=!0),e.currentAudio.addEventListener("ended",(function(){setTimeout((function(){r()}),1e3)})),e.currentAudio.play().then((function(){})).catch((function(e){s()}))):s()}},i=o.selector?function(e){if("undefined"!=typeof window){var t=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:5e3)/100,n=0;return new Promise((function(o,r){var i=setInterval((function(){var a=document.querySelector(e);a?(clearInterval(i),o(a)):n>=t&&(clearInterval(i),r(new Error("Element not found for selector: ".concat(e)))),n++}),100)}))}}(o.selector):Promise.resolve(null);i.then(r).catch((function(){return r(null)}))}}}}],o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],n&&$f(t.prototype,n),o&&$f(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function lm(e){return lm="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},lm(e)}function cm(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function um(e){for(var t=1;t2&&void 0!==arguments[2]?arguments[2]:0,r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(!this.productTourId&&!this.disabled)if(this.productTourId=e,this.productTourData=t,this.currentActiveIndex=0,r)this.start();else{var i=this;et.getInstance().validateProductTour(e).then((function(){return o>0?setTimeout((function(){i.start()}),o):n.start()})).catch((function(e){console.log("Product tour is not live. Cleaning up..."),console.error(e),i.onComplete(!1)}))}}},{key:"onComplete",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t={tourId:this.productTourId};e?(xn.notifyEvent("productTourCompleted",t),_m.trackEvent("tour-".concat(this.productTourId,"-completed"),t)):(xn.notifyEvent("productTourQuit",t),_m.trackEvent("tour-".concat(this.productTourId,"-quit"),t)),this.gleapTourObj&&this.gleapTourObj.destroy(),this.gleapTourObj=void 0,this.productTourData=void 0,this.productTourId=void 0,this.currentActiveIndex=void 0,this.clearUncompletedTour()}},{key:"loadUncompletedTour",value:function(){try{var e=JSON.parse(localStorage.getItem(fm));if(null!=e&&e.tourData&&null!=e&&e.tourId)return e}catch(t){}return null}},{key:"storeUncompletedTour",value:function(){if(this.productTourId&&this.productTourData)try{var e=JSON.parse(JSON.stringify({tourData:this.productTourData,tourId:this.productTourId}));e.tourData.steps=e.tourData.steps.slice(this.currentActiveIndex||0,e.tourData.steps.length),localStorage.setItem(fm,JSON.stringify(e))}catch(t){}else this.clearUncompletedTour()}},{key:"clearUncompletedTour",value:function(){try{localStorage.removeItem(fm)}catch(e){}}},{key:"start",value:function(){var e=this,t=this.productTourData;if(t){if("cobrowse"===t.tourType)return sm.getInstance().startWithConfig(this.productTourId,t,(function(t){e.onComplete(t)}));this.unmuted=!1;for(var n=t.steps,o=this,r=[],i=0;i\n \n
').concat(p("unmute"),"
\n ");else{var d="";t.sender&&t.sender.firstName&&(u=!0,d='
\n
\n
').concat(t.sender.firstName,"
\n
")),c="".concat(d,'
').concat(a.message,"
")}var h={disableActiveInteraction:!s&&!l,mode:a.mode,popover:um({description:c,popoverClass:"gleap-tour-popover-".concat(a.type," ").concat(!u&&"gleap-tour-popover-no-sender"," ").concat(t.allowClose&&"gleap-tour-popover-can-close")},s?{showButtons:[]}:{})};a.selector&&a.selector.length>0&&(h.element=a.selector),r.push(h)}var f=["next","close"];t.backButton&&f.push("previous"),this.gleapTourObj=Kf(pm(pm(pm(pm(pm(pm(pm(pm(pm(pm({showProgress:!0,allowKeyboardControl:!1,steps:r},"showProgress",n.length>1),"allowClose",t.allowClose),"nextBtnText",t.nextText),"doneBtnText",t.doneText),"prevBtnText",t.prevText),"showButtons",f),"onHighlightStarted",(function(t,n,o){var r;e.currentActiveIndex=null==o||null===(r=o.state)||void 0===r?void 0:r.activeIndex,e.storeUncompletedTour()})),"onElementNotFound",(function(t){document.removeEventListener("click",m),e.onComplete(!1)})),"onDestroyStarted",(function(){e.gleapTourObj.hasNextStep()?e.onComplete(!1):e.onComplete(!0),document.removeEventListener("click",m)})),"onPopoverRender",(function(t){if(t)for(var n=document.querySelectorAll(".gleap-tour-popover-description img, .gleap-tour-popover-description video"),r=function(){setTimeout((function(){e.gleapTourObj.refresh()}),500),setTimeout((function(){e.gleapTourObj.refresh()}),750)},i=0;ie.length)&&(t=e.length);for(var n=0,o=new Array(t);n1&&void 0!==arguments[1]?arguments[1]:"";return gh.translateText(e)||t}},{key:"_translateWithVars",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return gh.translateTextWithVars(e,t)||n}},{key:"getCheckIcon",value:function(){return'\n \n '}},{key:"loadChecklist",value:function(){if(this._isSessionReady&&this._networkManager){var e=this.getAttribute("checklistId");e?(this.activeStep=-1,this._initialActiveSet=!1,this.validateChecklist(e)):(this.renderResponse(),this.checklistData=null,this._hasLoaded=!1)}}},{key:"getQueryParams",value:function(){var e=this._getGleapSessionInstance();if(null==e||!e.session)return"";var t=e.session,n="en";try{void 0!==gh&&(n=gh.getInstance().getActiveLanguage()||"en")}catch(o){}return"gleapId=".concat(t.gleapId||"","&gleapHash=").concat(t.gleapHash||"","&lang=").concat(n)}},{key:"makeRequest",value:function(e,t,n,o){var r=this._getGleapSessionInstance();if(null!=r&&r.session){var i=new XMLHttpRequest;i.open(e,t);try{r.injectSession(i)}catch(a){}n&&i.setRequestHeader("Content-Type","application/json;charset=UTF-8"),i.onreadystatechange=function(){4===i.readyState&&o(i)},i.onerror=function(){o(i)},i.send(n?JSON.stringify(n):null)}else o({readyState:4,status:0,responseText:"Session unavailable",_isMock:!0})}},{key:"validateChecklist",value:function(e){var t=this;if(this._isSessionReady&&this._networkManager){this.checklistData=null,this._hasLoaded=!1,this.renderResponse();var n=this.getAttribute("sharedKey");this._networkManager.validateChecklist(e,n).then((function(e){t.isConnected&&t._isSessionReady&&e&&t.fetchChecklist(e)})).catch((function(e){t.renderResponse(),t.checklistData=null,t._hasLoaded=!1}))}}},{key:"fetchChecklist",value:function(e){var t=this;this._isSessionReady&&this._networkManager&&(this._isInitialLoad=!this._hasLoaded,this._networkManager.fetchChecklist(e).then((function(e){var n;if(!t.isConnected||!t._isSessionReady||!e)return t._hasLoaded=!1,t.checklistData=null,void t._checkSessionAndLoad();if(t.checklistData=e,t._hasLoaded=!0,"done"!==e.status){if(t._isInitialLoad&&!t._initialActiveSet){var o,r=(null===(o=e.outbound)||void 0===o||null===(o=o.config)||void 0===o?void 0:o.steps)||[],i=e.completedSteps||[],a=r.findIndex((function(e){return!i.includes(e.id)}));t.activeStep=a>=0?a:-1,-1!==t.activeStep&&(t._initialActiveSet=!0)}t.renderChecklist(t.checklistData),xn.notifyEvent("checklist-loaded",{checklistId:t.checklistData.id,outboundId:null===(n=t.checklistData.outbound)||void 0===n?void 0:n.id,completedSteps:t.checklistData.completedSteps,status:t.checklistData.status,data:t.checklistData})}else t.renderResponse()})).catch((function(e){t.renderResponse(),t.checklistData=null,t._hasLoaded=!1})))}},{key:"updateChecklist",value:function(e,t){var n,o,r=this._getGleapSessionInstance();if(null!=r&&r.session){var i=r.apiUrl;if(i){var a=r.session,s=null!==(n=null==a?void 0:a.gleapId)&&void 0!==n?n:"",l=null!==(o=null==a?void 0:a.gleapHash)&&void 0!==o?o:"",c="en";try{void 0!==gh&&(c=gh.getInstance().getActiveLanguage()||"en")}catch(d){}var u="".concat(i,"/outbound/checklists/").concat(e);t.checkedStep&&(u+="/increment/".concat(t.checkedStep)),u+="?gleapId=".concat(s,"&gleapHash=").concat(l,"&lang=").concat(c),this.makeRequest("PUT",u,t,(function(e){e._isMock||200!==e.status&&e.status}))}}}},{key:"handleChecklistUpdate",value:function(e){if(this._hasLoaded&&this.checklistData){var t=e.detail;if(t&&t.id===this.checklistData.id){var n,o=vm(this.checklistData.completedSteps||[]),r=!1,i=!1,a=this.activeStep;if(t.completedSteps&&JSON.stringify(t.completedSteps)!==JSON.stringify(o)&&(this.checklistData.completedSteps=vm(t.completedSteps),r=!0,-1!==a)){var s,l=null===(s=this.checklistData.outbound)||void 0===s||null===(s=s.config)||void 0===s||null===(s=s.steps)||void 0===s||null===(s=s[a])||void 0===s?void 0:s.id;l&&this.checklistData.completedSteps.includes(l)&&!o.includes(l)&&(i=!0)}if(t.status&&t.status!==this.checklistData.status&&(this.checklistData.status=t.status,r=!0),i){for(var c,u=(null===(c=this.checklistData.outbound)||void 0===c||null===(c=c.config)||void 0===c?void 0:c.steps)||[],d=-1,p=a+1;p1&&void 0!==arguments[1]?arguments[1]:"checklist-floating",r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=(null===(t=e.config)||void 0===t?void 0:t.steps)||[],a=(null===(n=this.checklistData)||void 0===n?void 0:n.completedSteps)||[],s=0;if(this.progressbarEnabled&&i.length>0){var l=i.length,c=a.length;s=l>0?c/l*100:0}var u,d,p=i.find((function(e){return!a.includes(e.id)})),h=i.length>0?p?p.title||this._translateWithVars("stepDefaultTitle",{index:i.indexOf(p)+1},"Step ".concat(i.indexOf(p)+1)):"":e.subject||"",f=i.length>0?p&&p.description||"":e.message||"";r&&(h=(null===(u=e.config)||void 0===u?void 0:u.successTitle)||"",f=(null===(d=e.config)||void 0===d?void 0:d.successMessage)||"",s=100);var m=2*Math.PI*7,g=m-s/100*m,v="checklist-floating-header"===o,y=v?'\n \n \n ':'\n \n ';return'\n
\n
\n
\n \n \n \n \n
\n
').concat(h,"
\n ").concat(r?"":''.concat(y,""),'\n
\n
').concat(f,"
\n
\n ")}},{key:"renderInfoSection",value:function(e){var t;if(!this.infoEnabled||!e)return"";var n=e.subject||this._translate("checklistDefaultTitle","Checklist"),o=e.message||"",r="";return null!==(t=e.sender)&&void 0!==t&&t.profileImageUrl&&(r='\n
\n ').concat(e.sender.firstName||\n ').concat(e.sender.firstName||"","\n
")),'\n
\n '.concat(n?'
'.concat(n,"
"):"","\n ").concat(o?'
'.concat(o,"
"):"","\n ").concat(r,"\n
")}},{key:"renderProgressSection",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];if(!this.progressbarEnabled||!e.length)return"";var n=e.length,o=t.length,r=n>0?o/n*100:0,i=0;e.forEach((function(e){!t.includes(e.id)&&e.duration>0&&(i+=e.duration)}));var a=this._translateWithVars("taskProgress",{a:o,b:n},"".concat(o," of ").concat(n," done")),s=i>0?this._translateWithVars("aboutMinutes",{a:i},"About ".concat(i," min left")):"";return'\n
\n
'.concat(a,"
\n ").concat(s?'
'.concat(s,"
"):"",'\n
\n
\n
\n
')}},{key:"renderTasks",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return t&&0!==t.length?t.map((function(t,o){var r=n.includes(t.id),i=e.activeStep===o,a=r?''.concat(e.getCheckIcon(),""):''.concat(o+1,""),s=t.title||e._translateWithVars("stepDefaultTitle",{index:o+1},"Step ".concat(o+1)),l=t.description||"",c=t.actionTitle||e._translate("actionDefaultTitle","Action"),u=t.action&&"none"!==t.action?'
\n \n
"):"",d=e._translate("markAsDone","Mark as done"),p=t.allowMarkDone&&!r?'
\n ').concat(e.getCheckIcon(),'\n
').concat(d,"
\n
"):"",h=["checklist-task",r?"checklist-task--done":"",i?"checklist-task--active":""].filter(Boolean).join(" ");return'\n
\n
\n ').concat(a,'\n
').concat(s,'
\n \n \n \n \n \n
\n
\n
\n ').concat(l?'
'.concat(l,"
"):"","\n ").concat(u,"\n ").concat(p,"\n
\n
\n
")})).join(""):"

".concat(this._translate("noStepsDefined","No steps defined."),"

")}},{key:"renderChecklist",value:function(e){var t;if(this._hasLoaded&&e&&e.outbound){var n=e.outbound,o=(null===(t=n.config)||void 0===t?void 0:t.steps)||[],r=e.completedSteps||[],i="";if("done"===e.status||o.length>0&&r.length>=o.length){var a,s,l=(null===(a=n.config)||void 0===a?void 0:a.successTitle)||"",c=(null===(s=n.config)||void 0===s?void 0:s.successMessage)||"";i=this.floatingEnabled?this.renderFloatingLauncher(n,"checklist-floating-launcher",!0):'\n
\n
\n '.concat(this.getCheckIcon(),'\n
\n
').concat(l,'
\n
').concat(c,"
\n
"),-1!==this.activeStep&&(this.activeStep=-1)}else i='\n
\n '.concat(this.floatingEnabled?"":this.renderInfoSection(n),"\n ").concat(this.floatingEnabled?"":this.renderProgressSection(o,r),"\n ").concat(this.floatingEnabled?this.renderFloatingLauncher(n):"",'\n
\n ').concat(this.floatingEnabled?this.renderFloatingLauncher(n,"checklist-floating-header"):"","\n ").concat(this.renderTasks(o,r),"\n
\n
");var u=dt.getInstance().getFlowConfig(),d=u.color?u.color:"#485BFF",p="\n \n ');this.shadowRoot.innerHTML=p+i,this.addTaskEventListeners(),this.floatingEnabled&&this.addFloatingClickListeners(),-1!==this.activeStep&&this.toggleTask(this.activeStep,!0)}else this._checkSessionAndLoad()}},{key:"updateActiveTaskMaxHeight",value:function(){if(-1!==this.activeStep){var e=this.shadowRoot.querySelector('.checklist-task[data-task-index="'.concat(this.activeStep,'"] .checklist-task-body-inner')),t=this.shadowRoot.querySelector('.checklist-task[data-task-index="'.concat(this.activeStep,'"] .checklist-task-body'));if(e&&t){var n=e.offsetHeight;t.style.setProperty("--task-body-active-height","".concat(n,"px"))}}}},{key:"addTaskEventListeners",value:function(){var e=this;this.shadowRoot.querySelectorAll(".checklist-task").forEach((function(t){var n=t.querySelector(".checklist-task-header"),o=parseInt(t.getAttribute("data-task-index"),10);n&&n.addEventListener("click",(function(){var t=e.activeStep===o?-1:o;e.setActiveStep(t)}));var r=t.querySelector(".checklist-task-body-markdone");r&&r.addEventListener("click",(function(t){var n;if(t.stopPropagation(),null!==(n=e.checklistData)&&void 0!==n&&null!==(n=n.outbound)&&void 0!==n&&null!==(n=n.config)&&void 0!==n&&n.steps){var r=e.checklistData.outbound.config.steps[o];if(r){var i=e.activeStep;if(e.checklistData.completedSteps||(e.checklistData.completedSteps=[]),!e.checklistData.completedSteps.includes(r.id)){var a;e.checklistData.completedSteps.push(r.id),xn.notifyEvent("checklist-step-completed",{checklistId:e.checklistData.id,outboundId:null===(a=e.checklistData.outbound)||void 0===a?void 0:a.id,stepId:r.id,stepIndex:o,step:r,completedSteps:e.checklistData.completedSteps,status:e.checklistData.status,data:e.checklistData});var s=e.checklistData.outbound.config.steps,l=-1;if(i===o){for(var c=o+1;c0&&e.checklistData.completedSteps.length>=s.length&&(e.checklistData.status="done",d.status="done",xn.notifyEvent("checklist-completed",{checklistId:e.checklistData.id,outboundId:null===(u=e.checklistData.outbound)||void 0===u?void 0:u.id,completedSteps:e.checklistData.completedSteps,status:e.checklistData.status,data:e.checklistData})),e.updateChecklist(e.checklistData.id,d)}}}}));var i=t.querySelector(".checklist-task-body-action .action-button");i&&i.addEventListener("click",(function(t){var n;if(t.stopPropagation(),null!==(n=e.checklistData)&&void 0!==n&&null!==(n=n.outbound)&&void 0!==n&&null!==(n=n.config)&&void 0!==n&&n.steps&&void 0!==_m){var r=e.checklistData.outbound.config.steps[o];if(r&&r.action&&"none"!==r.action)try{"BOT"===r.action?_m.startBot(r.botId):"CUSTOM_ACTION"===r.action?_m.triggerCustomAction(r.actionBody):"REDIRECT_URL"===r.action?(t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation(),_m.openURL(r.actionBody,!!r.actionOpenInNewTab)):"FEEDBACK_FLOW"===r.action?_m.startFeedbackFlow(r.formId):"NEWS_ARTICLE"===r.action?_m.openNewsArticle(r.articleId):"HELP_ARTICLE"===r.action?_m.openHelpCenterArticle(r.articleId):"CHECKLIST"===r.action&&_m.startChecklist(r.outboundId,!0,null==r?void 0:r.sharedKey)}catch(i){}}}))}))}},{key:"setActiveStep",value:function(e){var t=this,n=this.activeStep;this.activeStep=e;var o=[];-1!==n&&n!==this.activeStep&&o.push({index:n,open:!1}),-1!==this.activeStep&&this.activeStep!==n&&o.push({index:this.activeStep,open:!0}),o.forEach((function(e){var n=e.index,o=e.open;t.toggleTask(n,o)}))}},{key:"toggleTask",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=this.shadowRoot.querySelector('.checklist-task[data-task-index="'.concat(e,'"]'));if(n){var o=n.querySelector(".checklist-task-header");if(o){var r=n.classList.contains("checklist-task--active"),i=null!==t?t:!r;if(i&&!r){n.classList.add("checklist-task--active"),o.setAttribute("aria-expanded","true");var a=n.querySelector(".checklist-task-body-inner");if(a){var s=a.offsetHeight,l=n.querySelector(".checklist-task-body");l&&l.style.setProperty("--task-body-active-height","".concat(s,"px"))}}else!i&&r&&(n.classList.remove("checklist-task--active"),o.setAttribute("aria-expanded","false"))}}}}],r=[{key:"observedAttributes",get:function(){return["checklistId","info","progressbar","dark","floating","sharedKey"]}}],o&&bm(n.prototype,o),r&&bm(n,r),Object.defineProperty(n,"prototype",{writable:!1}),t}();"undefined"==typeof customElements||customElements.get("gleap-checklist")||customElements.define("gleap-checklist",e)}}();var Dm=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),Rm(this,"initialized",!1),Rm(this,"offlineMode",!1),Rm(this,"disablePageTracking",!1),Rm(this,"disableInAppNotifications",!1),Rm(this,"globalData",{screenRecordingData:null,webReplay:null,snapshotPosition:{x:0,y:0}}),"undefined"!=typeof window&&(Xt.getInstance(),rn.getInstance().start(),pn.getInstance().start(),Hf.getInstance().start())}var t,n,o;return t=e,n=[{key:"isLiveMode",value:function(){if(!0===this.offlineMode)return!1;var e=window.location.hostname;return!(["localhost","127.0.0.1","0.0.0.0","","::1"].includes(e)||e.startsWith("192.168.")||e.startsWith("10.0.")||e.endsWith(".local")||!e.includes("."))}},{key:"softReInitialize",value:function(){Vt.getInstance().destroy(),dt.getInstance().start().then((function(){a.getInstance().refresh(),Mh.getInstance().injectNotificationUI()})).catch((function(e){console.warn("Failed to initialize Gleap.")}))}},{key:"performActions",value:function(t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:"INFO";rn.getInstance().addLog(e,t)}},{key:"initialize",value:function(t){var n=this.getInstance();if(n.initialized)console.warn("Gleap already initialized.");else{n.initialized=!0;try{!function(){try{if("visualViewport"in window&&/iPad|iPhone|iPod/.test(navigator.userAgent)){var e=function(){try{var e=document.querySelector(".gleap-frame-container-inner iframe");if(!e)return;window.visualViewport.height1&&void 0!==arguments[1]&&arguments[1];Vt.getInstance().urlHandler(e,t)}},{key:"checkForUrlParams",value:function(){if("undefined"!=typeof window&&window.location.search)try{var t=new URLSearchParams(window.location.search),n=t.get("gleap_widget");n&&n.length>0&&e.open();var o=t.get("gleap_conversation");o&&o.length>0&&("true"===o?e.startConversation(!0):e.startBot(o,!0));var r=t.get("gleap_feedback");r&&r.length>0&&e.startFeedbackFlow(r);var i=t.get("gleap_survey"),a=t.get("gleap_survey_format");i&&i.length>0&&e.showSurvey(i,"survey_full"===a?"survey_full":"survey");var s=t.get("gleap_tour");if(s&&s.length>0){var l=parseInt(t.get("gleap_tour_delay"));isNaN(l)&&(l=2),setTimeout((function(){e.startProductTour(s)}),1e3*l)}}catch(c){}}},{key:"destroy",value:function(){Yp.getInstance().stop(),it.getInstance().stop(),Vt.getInstance().destroy(),a.getInstance().destroy(),Mh.getInstance().clearAllNotifications(!0),et.getInstance().clearSession(0,!1),Bh.getInstance().removeBannerUI(),this.instance=null}},{key:"closeBanner",value:function(){Bh.getInstance().removeBannerUI()}},{key:"closeModal",value:function(){Gh.getInstance().hideModal()}},{key:"setUseCookies",value:function(e){et.getInstance().useCookies=e}},{key:"identify",value:function(e,t,n){return et.getInstance().identifySession(e,k(t),n)}},{key:"updateContact",value:function(e){return et.getInstance().updateSession(k(e))}},{key:"clearIdentity",value:function(){et.getInstance().clearSession()}},{key:"getIdentity",value:function(){return et.getInstance().getSession()}},{key:"isUserIdentified",value:function(){var e=et.getInstance().session;return!!(e&&e.userId&&e.userId.length>0)}},{key:"isOpened",value:function(){return Vt.getInstance().isOpened()}},{key:"hide",value:function(){Vt.getInstance().hideWidget()}},{key:"setMaxNetworkRequests",value:function(e){y.getInstance().setMaxRequests(e)}},{key:"startNetworkLogger",value:function(){y.getInstance().start()}},{key:"setNetworkLogsBlacklist",value:function(e){y.getInstance().setBlacklist(e)}},{key:"setNetworkLogPropsToIgnore",value:function(e){y.getInstance().setFilters(e)}},{key:"setReplayOptions",value:function(e){Yp.getInstance().setOptions(e)}},{key:"close",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];Vt.getInstance().hideWidget(e)}},{key:"open",value:function(){Vt.getInstance().setAppMode("widget"),Vt.getInstance().showWidget()}},{key:"trackEvent",value:function(e,t){it.getInstance().logEvent(e,t)}},{key:"logEvent",value:function(e,t){it.getInstance().logEvent(e,t)}},{key:"preFillForm",value:function(e){var t=k(e);Oh.getInstance().formPreFill=t,Vt.getInstance().sendMessage({name:"prefill-form-data",data:t},!0)}},{key:"on",value:function(e,t){xn.on(e,t)}},{key:"enableShortcuts",value:function(e){e?kh.getInstance().start():kh.getInstance().stop()}},{key:"showFeedbackButton",value:function(e){a.getInstance().toggleFeedbackButton(e)}},{key:"setAppVersionCode",value:function(e){Xt.setAppVersionCode(e)}},{key:"setAppBuildNumber",value:function(e){Xt.setAppBuildNumber(e)}},{key:"setWSApiUrl",value:function(e){et.getInstance().wsApiUrl=e}},{key:"setApiUrl",value:function(e){et.getInstance().apiUrl=e}},{key:"setBannerUrl",value:function(e){Bh.getInstance().setBannerUrl(e)}},{key:"setModalUrl",value:function(e){Gh.getInstance().setModalUrl(e)}},{key:"setFrameUrl",value:function(e){Vt.getInstance().frameUrl=e}},{key:"setTicketAttribute",value:function(e,t){vn.getInstance().setTicketAttribute(e,t)}},{key:"unsetTicketAttribute",value:function(e){vn.getInstance().unsetTicketAttribute(e)}},{key:"clearTicketAttributes",value:function(){vn.getInstance().clearTicketAttributes()}},{key:"attachCustomData",value:function(e){vn.getInstance().attachCustomData(e)}},{key:"setCustomData",value:function(e,t){vn.getInstance().setCustomData(e,t)}},{key:"removeCustomData",value:function(e){vn.getInstance().removeCustomData(e)}},{key:"clearCustomData",value:function(){vn.getInstance().clearCustomData()}},{key:"playSound",value:function(e){Yh.playSound(e)}},{key:"showTabNotificationBadge",value:function(e){var t=Mh.getInstance();t.showNotificationBadge=e,t.updateTabBarNotificationCount()}},{key:"setLanguage",value:function(t){gh.getInstance().setOverrideLanguage(t),e.getInstance().initialized&&setTimeout((function(){e.getInstance().softReInitialize(),e.updateContact({lang:t})}),1e3)}},{key:"registerCustomAction",value:function(e){Ln.registerCustomAction(e)}},{key:"triggerCustomAction",value:function(e){Ln.triggerCustomAction(e)}},{key:"setStyles",value:function(e,t,n){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"#ffffff",r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:20,i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:20,s=arguments.length>6&&void 0!==arguments[6]?arguments[6]:20,l=arguments.length>7&&void 0!==arguments[7]?arguments[7]:a.FEEDBACK_BUTTON_BOTTOM_LEFT;O((function(){!function(e,t,n,o,r,i,s,l){var c=d(e),p=d(n),h=d(r),f=d(t),m="#ffffff"===h,g=u(t,"#ffffff"===f?-35:-15),v=u(r,m?100:-120),y=u(r,m?30:-12),b=u(r,m?80:-30),w=(o=parseInt(o,10),Math.round(1.05*o)),k=Math.round(.8*o),x=Math.round(.6*o),S=Math.round(.4*o),C=Math.round(.25*o),I=57+s;l===a.FEEDBACK_BUTTON_CLASSIC_BOTTOM?I=s+15:(l&&l.includes("CLASSIC")||l===a.FEEDBACK_BUTTON_NONE)&&(I=s);var O='\n .gleap-font, .gleap-font * {\n font-style: normal;\n font-variant-caps: normal;\n font-variant-ligatures: normal;\n font-variant-numeric: normal;\n font-variant-east-asian: normal;\n font-weight: normal;\n font-stretch: normal;\n font-size: 100%;\n line-height: 1;\n font-family: system-ui, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";\n }\n .gleap-input-highlight {\n box-shadow: 0 0 0 3px '.concat(e," !important;\n }\n .gleap-frame-container {\n right: ").concat(i,"px;\n bottom: ").concat(61+s,"px;\n width: calc(100% - 40px);\n max-width: 410px;\n position: fixed;\n z-index: ").concat(2147483631,";\n visibility: visible;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.16);\n border-radius: ").concat(k,"px;\n overflow: hidden;\n animation-duration: .3s;\n animation-fill-mode: both;\n animation-name: gleapFadeInUp;\n user-select: none;\n pointer-events: none;\n transition: max-width 0.3s ease-out;\n }\n\n .gleap-admin-highlight {\n box-shadow: 0px 0px 0px 4px red;\n }\n\n :root {\n --gleap-margin-top: 50px;\n }\n\n .gleap-tooltip-anchor {\n position: relative;\n display: inline-block;\n float: left;\n max-width: 0px;\n width: 17px;\n }\n\n .gleap-tooltip-hotspot {\n position: absolute;\n display: block;\n width: 17px;\n height: 17px;\n cursor: pointer;\n top: 0px;\n left: 0px;\n }\n\n @keyframes gleap-pulse {\n 0% {\n transform: scale(0);\n opacity: 0.25;\n }\n 45% {\n transform: scale(2.5);\n opacity: 0;\n }\n 100% {\n transform: scale(0);\n opacity: 0;\n }\n }\n\n .gleap-tooltip-hotspot-animation {\n position: absolute;\n border-radius: 17px;\n opacity: 0.25;\n display: block;\n width: 17px;\n height: 17px;\n cursor: pointer;\n top: 0px;\n left: 0px;\n animation: gleap-pulse 5s infinite;\n }\n\n .gleap-tooltip-hotspot svg {\n width: 17px;\n height: 17px;\n object-fit: contain;\n display: block;\n }\n\n .gleap-tooltip-inner {\n position: relative;\n overflow: visible;\n font-size: 14px;\n font-weight: normal;\n color: #000;\n line-height: 1.3;\n }\n\n .gleap-tooltip {\n position: absolute;\n background-color: #fff;\n color: #000;\n font-size: 15px;\n line-height: 18px;\n padding: 16px;\n padding-top: 8px;\n padding-bottom: 8px;\n border-radius: 4px;\n max-width: min(350px, 80vw);\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n opacity: 0;\n visibility: hidden;\n transition: opacity 0.2s, visibility 0.2s;\n z-index: ").concat(2147483700,";\n }\n\n .gleap-tooltip a {\n color: ").concat(e,";\n text-decoration: underline;\n display: inline !important;\n margin: 0px !important;\n padding: 0px !important;\n word-break: break-word;\n }\n\n .gleap-tooltip ul {\n padding-left: 16px;\n }\n\n .gleap-tooltip b {\n font-weight: 600;\n }\n\n .gleap-tooltip h2 {\n font-size: 18px;\n line-height: 20px;\n font-weight: 600;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip h3 {\n font-size: 16px;\n line-height: 18px;\n font-weight: 600;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip p {\n padding: 0px;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip img {\n max-width: 100%;\n max-height: 300px;\n width: 100%;\n height: auto;\n object-fit: cover;\n margin-top: 8px;\n margin-bottom: 8px;\n border-radius: 4px;\n }\n\n .gleap-tooltip iframe,\n .gleap-tooltip video {\n max-width: 100%;\n width: 100%;\n height: auto;\n min-height: 200px;\n display: block;\n border: none;\n outline: none;\n padding: 0px;\n margin-top: 8px;\n margin-bottom: 8px;\n border-radius: 4px;\n }\n\n .gleap-tooltip-arrow {\n position: absolute;\n width: 20px;\n height: 20px;\n }\n\n .gleap-tooltip-arrow svg {\n width: 20px;\n height: 20px;\n object-fit: contain;\n }\n\n .gleap-b-frame {\n width: 100%;\n height: 100%;\n border: none;\n pointer-events: auto;\n padding: 0px;\n margin: 0px;\n }\n\n .gleap-b-shown {\n transition: margin 0.3s ease-out;\n margin-top: var(--gleap-margin-top);\n position: relative;\n z-index: 10000;\n }\n\n .gleap-b-f {\n margin-top: 0px;\n }\n\n .gleap-b {\n display: none;\n position: absolute;\n top: calc(-1 * var(--gleap-margin-top));\n left: 0px;\n width: 100vw;\n height: var(--gleap-margin-top);\n z-index: ").concat(2147483699,";\n }\n\n @keyframes gleapSlideIn {\n from {\n top: calc(-1 * var(--gleap-margin-top));\n }\n to {\n top: 10px;\n }\n }\n\n .gleap-b-f .gleap-b {\n position: fixed;\n top: 10px;\n animation: gleapSlideIn .25s ease-out forwards;\n max-width: 800px;\n width: calc(100% - 20px);\n left: 50%;\n z-index: ").concat(2147483699,";\n transform: translateX(-50%);\n border-radius: ").concat(S,"px;\n overflow: hidden;\n box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.15), 0px 5px 5px rgba(0, 0, 0, 0.05);\n }\n\n .gleap-b-shown .gleap-b {\n display: block;\n }\n\n .gleap-image-view {\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n z-index: ").concat(2147483699,";\n background-color: ").concat(h,"cc;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .gleap-image-view-image {\n width: 90%;\n height: auto;\n max-width: 90%;\n max-height: 90%;\n object-fit: contain;\n }\n\n .gleap-image-view-close {\n position: fixed;\n top: 20px;\n right: 20px;\n width: 32px;\n height: 32px;\n opacity: 0.8;\n z-index: ").concat(2147483740,";\n box-shadow: 0px 5px 18px rgba(0, 0, 0, 0.16);\n cursor: pointer;\n }\n\n .gleap-image-view-close:hover {\n opacity: 1;\n }\n\n .gleap-image-view-close svg path {\n fill: ").concat(r,";\n }\n\n [dir=rtl].gleap-frame-container {\n right: auto;\n left: ").concat(i,"px;\n bottom: ").concat(61+s,'px;\n }\n\n .gleap-frame-container--loading iframe {\n opacity: 0;\n }\n\n .gleap-frame-container--loading::before {\n content: " ";\n position: fixed;\n top: 0px;\n left: 0px;\n right: 0px;\n height: 100%;\n max-height: 380px;\n background: linear-gradient(\n 130deg,\n ').concat(g," 0%,\n ").concat(t,' 100%\n );\n }\n \n .gleap-frame-container--loading::after {\n content: " ";\n position: fixed;\n top: 0px;\n left: 0px;\n right: 0px;\n height: 100%;\n height: 100%;\n max-height: 380px;\n background: linear-gradient(\n 180deg,\n transparent 60%,\n ').concat(r,"1A 70%,\n ").concat(r," 100%\n );\n }\n\n .gleap-frame-container--loading-nogradient::before {\n max-height: 340px;\n background: ").concat(t," !important;\n }\n\n .gleap-frame-container--loading-nofade::after {\n display: none !important;\n }\n\n .gleap-frame-container--survey {\n bottom: ").concat(s,"px !important;\n }\n\n .gleap-frame-container--extended {\n max-width: 690px !important;\n }\n\n .gleap-frame-container--survey-full {\n position: fixed;\n top: 0 !important;\n left: 0 !important;\n bottom: 0 !important;\n right: 0 !important;\n width: 100vw !important;\n max-width: 100vw !important;\n height: 100vh;\n height: 100dvh !important;\n background-color: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(6px);\n display: flex !important;\n justify-content: center !important;\n align-items: center !important;\n max-height: 100vh;\n max-height: 100dvh !important;\n border-radius: 0 !important;\n animation-name: none !important;\n }\n\n .gleap-frame-container--survey-full .gleap-frame-container-inner {\n max-width: 640px !important;\n width: calc(100% - 24px);\n border-radius: ").concat(k,"px;\n overflow: hidden;\n }\n\n .gleap-frame-container--classic {\n right: ").concat(i,"px;\n bottom: ").concat(s,"px;\n }\n\n [dir=rtl].gleap-frame-container--classic {\n right: auto;\n left: ").concat(i,"px;\n bottom: ").concat(s,"px;\n }\n\n .gleap-frame-container--no-button {\n bottom: ").concat(s,"px;\n }\n\n [dir=rtl].gleap-frame-container--classic-left {\n bottom: ").concat(s,"px;\n }\n\n .gleap-frame-container--classic-left {\n right: auto;\n left: ").concat(i,"px;\n bottom: ").concat(s,"px;\n }\n\n [dir=rtl].gleap-frame-container--classic-left {\n left: auto;\n right: ").concat(i,"px;\n bottom: ").concat(s,"px;\n }\n\n .gleap-frame-container--modern-left {\n right: auto;\n left: ").concat(i,"px;\n bottom: ").concat(61+s,"px;\n }\n\n [dir=rtl].gleap-frame-container--modern-left {\n left: auto;\n right: ").concat(i,"px;\n bottom: ").concat(61+s,"px;\n }\n\n .gleap-frame-container--animate {\n pointer-events: auto !important;\n }\n\n @keyframes gleapFadeInUp {\n from {\n opacity: 0;\n transform: translate3d(0, 100%, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n\n @keyframes gleapFadeInUpMobile {\n from {\n opacity: 0;\n transform: translate3d(0, 10%, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n\n .gleap-notification-container {\n position: fixed;\n bottom: ").concat(I,"px;\n right: ").concat(i,"px;\n z-index: ").concat(2147483630,";\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n width: 100%;\n max-width: min(340px, 80vw);\n }\n\n .gleap-notification-container--left {\n left: ").concat(4+i,"px;\n right: initial !important;\n }\n\n [dir=rtl].gleap-notification-container {\n left: ").concat(4+i,"px;\n right: initial !important;\n }\n\n [dir=rtl].gleap-notification-container--left {\n left: initial !important;\n right: ").concat(i,"px !important;\n align-items: flex-start !important;\n }\n\n .gleap-notification-container--no-button {\n bottom: ").concat(s,"px;\n }\n\n .gleap-notification-item {\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n\n .gleap-notification-close {\n border-radius: 100%;\n width: 28px;\n height: 28px;\n background-color: ").concat(v,";\n display: flex;\n justify-content: center;\n align-items: center;\n margin-bottom: 8px;\n cursor: pointer;\n visibility: hidden;\n pointer-events: none;\n }\n\n .gleap-notification-container:hover .gleap-notification-close {\n visibility: visible;\n pointer-events: auto;\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-notification-close {\n visibility: visible;\n pointer-events: auto;\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n }\n\n .gleap-notification-close svg {\n width: 45%;\n height: 45%;\n object-fit: contain;\n fill: ").concat(r,";\n }\n\n .gleap-notification-item-checklist-container {\n display: flex;\n animation: fadeIn;\n animation-duration: .45s;\n background-color: ").concat(r,";\n border-radius: ").concat(v,";\n box-sizing: border-box;\n cursor: pointer;\n flex-direction: column;\n overflow: hidden;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ").concat(x,"px;\n margin-bottom: 12px;\n }\n\n .gleap-notification-item-checklist-content {\n align-items: flex-start;\n display: flex;\n flex-direction: column;\n padding: 15px;\n width: 100%;\n width: min(310px, 70vw);\n max-width: min(310px, 70vw);\n }\n\n .gleap-notification-item-checklist-content-title {\n color: ").concat(h,";\n font-size: 15px;\n font-weight: 500;\n line-height: 21px;\n margin-bottom: 10px;\n max-width: 100%;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .gleap-notification-item-checklist-content-progress {\n width: 100%;\n height: 8px;\n border-radius: 8px;\n background-color: ").concat(y,";\n }\n\n .gleap-notification-item-checklist-content-progress-inner {\n height: 100%;\n border-radius: 8px;\n background-color: ").concat(e,";\n }\n\n .gleap-notification-item-checklist-content-next {\n color: ").concat(v,";\n font-size: 15px;\n font-weight: normal;\n line-height: 21px;\n margin-top: 10px;\n max-width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: flex;\n align-items: center;\n }\n\n .gleap-notification-item-checklist-content-next svg {\n height: 18px;\n margin-right: 5px;\n width: auto;\n }\n\n .gleap-notification-item-checklist-content-next b {\n font-size: 15px;\n font-weight: normal;\n color: ").concat(h,";\n }\n\n .gleap-notification-item-news {\n width: 100%;\n }\n\n .gleap-news-pagination {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 10px;\n width: 100%;\n }\n\n .gleap-news-page-indicator {\n font-size: 12px;\n color: ").concat(v,";\n }\n\n .gleap-news-next-button {\n background-color: ").concat(e,";\n color: ").concat(c,";\n border-radius: ").concat(C,"px;\n box-sizing: border-box;\n padding: 5px 10px;\n font-size: 14px;\n font-weight: bold;\n line-height: 21px;\n border: none;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: none !important;\n outline: none !important;^\n }\n\n .gleap-notification-item-news-content {\n align-items: flex-start;\n display: flex;\n flex-direction: column;\n padding: 15px;\n }\n\n .gleap-notification-item-news-preview {\n color: ").concat(v,";\n font-size: 14px;\n line-height: 21px;\n font-weight: 400;\n overflow-wrap: break-word;\n word-break: break-word;\n display: block;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .gleap-notification-item-news-sender {\n display: flex;\n align-items: center;\n color: ").concat(v,";\n font-size: 15px;\n line-height: 21px;\n font-weight: 400;\n }\n \n .gleap-notification-item-news-content-title {\n color: ").concat(h,";\n font-size: 15px;\n font-weight: 500;\n line-height: 21px;\n margin-bottom: 6px;\n max-width: 100%;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n cursor: pointer;\n }\n\n .gleap-notification-item-news-sender img {\n border-radius: 100%;\n height: 20px;\n margin-right: 8px;\n object-fit: cover;\n width: 20px;\n }\n\n [dir=rtl] .gleap-notification-item-news-sender img {\n margin-left: 8px;\n margin-right: 0px !important;\n }\n\n .gleap-notification-item-news-container {\n display: flex;\n animation: fadeIn;\n animation-duration: .45s;\n background-color: ").concat(r,";\n border-radius: ").concat(v,";\n box-sizing: border-box;\n flex-direction: column;\n overflow: hidden;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ").concat(x,"px;\n margin-bottom: 12px;\n }\n\n .gleap-notification-item-news-image {\n background-color: ").concat(v,";\n height: 170px;\n max-height: 170px;\n object-fit: cover;\n width: 100%;\n cursor: pointer;\n }\n \n .gleap-notification-item-news-content-title:hover {\n color: ").concat(e,";\n }\n\n .gleap-notification-item {\n display: flex;\n align-items: flex-end;\n cursor: pointer;\n }\n\n .gleap-notification-item img {\n width: 32px;\n height: 32px;\n min-width: 32px;\n border-radius: 100%;\n object-fit: cover;\n margin-right: 8px;\n margin-bottom: 12px;\n cursor: pointer;\n }\n\n [dir=rtl] .gleap-notification-item img {\n margin-left: 8px;\n margin-right: 0px !important;\n }\n\n .gleap-notification-item-container {\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ").concat(x,"px;\n border-bottom-left-radius: 0px;\n padding: 20px;\n background-color: ").concat(r,";\n margin-bottom: 12px;\n cursor: pointer;\n font-size: 15px;\n line-height: 21px;\n color: ").concat(h,';\n position: relative;\n }\n\n .gleap-notification-item-container::after {\n content: " ";\n position: absolute;\n bottom: 0px;\n width: 0px;\n height: 0px;\n left: -6px;\n border-style: solid;\n border-width: 0px 0px 10px 6px;\n border-color: transparent transparent ').concat(r,";\n }\n\n .gleap-notification-item-sender {\n color: ").concat(v,";\n line-height: 20px;\n }\n\n .gleap-notification-item-content {\n line-height: 20px;\n color: ").concat(h,";\n margin-top: 4px;\n min-width: min(200px, 50vw);\n word-wrap: break-word;\n word-break: break-word;\n }\n\n .gleap-frame-container-inner {\n position: relative;\n width: 100%;\n height: calc(100vh - ").concat(84+s,"px);\n max-height: ").concat(700,'px;\n }\n\n .gleap-frame-container--survey .gleap-frame-container-inner {\n height: calc(100vh - 40px);\n }\n \n .gleap-frame-container-inner:before {\n content: " ";\n position: absolute;\n width: 100%;\n height: calc(100% - ').concat(k,"px);\n top: ").concat(k,"px;\n background-color: ").concat(r,";\n z-index: -1;\n }\n \n .gleap-frame-container iframe {\n height: 100% !important;\n width: 100% !important;\n max-width: 100% !important;\n display: block !important;\n pointer-events: auto !important;\n }\n \n .gleap-frame-container--hidden {\n display: none !important;\n pointer-events: none;\n animation: none !important;\n }\n \n .bb-feedback-button {\n margin: 0px;\n position: fixed;\n bottom: ").concat(s,"px;\n right: ").concat(i,"px;\n border-radius: 30px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n background-color: transparent;\n color: #000000;\n z-index: ").concat(2147483630,";\n box-sizing: border-box;\n display: flex;\n align-items: center;\n padding: 0px;\n }\n\n [dir=rtl].bb-feedback-button {\n bottom: ").concat(s,"px;\n right: auto;\n left: ").concat(i,"px;\n }\n \n .bb-feedback-button--bottomleft {\n bottom: ").concat(s,"px;\n right: auto;\n left: ").concat(i,"px;\n }\n\n [dir=rtl].bb-feedback-button--bottomleft {\n bottom: ").concat(s,"px;\n right: ").concat(i,'px;\n left: auto;\n }\n \n .bb-feedback-button--disabled {\n display: none !important;\n }\n\n .bb-feedback-button--hidden {\n display: none !important;\n }\n \n .bb-feedback-button-text {\n padding: 8px 12px;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n background-color: #fff;\n border-radius: 8px;\n box-shadow: 0px 0px 14px 0px rgba(0, 0, 0, 0.15);\n position: relative;\n z-index: 99;\n }\n \n .bb-feedback-button-text:before {\n content: "";\n position: absolute;\n box-shadow: rgba(0, 0, 0, 0.04) 6px 6px 5px;\n transform: rotate(315deg);\n bottom: 16px;\n right: -4px;\n border-width: 10px;\n border-style: solid;\n border-color: transparent #fff #fff transparent;\n }\n \n .bb-feedback-button--bottomleft .bb-feedback-button-text:before {\n display: none;\n }\n \n .bb-feedback-button-text:after {\n content: "";\n position: absolute;\n bottom: 12px;\n right: 0px;\n background-color: #fff;\n width: 5px;\n height: 30px;\n }\n \n .bb-feedback-button-text-title {\n font-family: sans-serif;\n font-size: 14px;\n color: #666;\n line-height: 18px;\n max-width: 220px;\n }\n \n .bb-feedback-button-text-title b {\n color: #000000;\n font-weight: 600;\n }\n\n .bb-notification-bubble {\n position: absolute;\n top: -5px;\n right: -5px;\n min-width: 12px;\n padding: 0px 4px;\n height: 20px;\n min-width: 20px;\n border-radius: 20px;\n background-color: red;\n color: #fff;\n font-size: 11px;\n font-family: sans-serif;\n text-align: center;\n line-height: 20px;\n }\n\n .bb-notification-bubble--hidden {\n display: none;\n }\n \n .bb-feedback-button-icon {\n width: 48px;\n height: 48px;\n border-radius: 48px;\n background-color: #485bff;\n transition: box-shadow, transform 0.2s ease-in-out;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n position: relative;\n }\n \n .bb-feedback-button-classic {\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n top: 50%;\n right: 0px;\n position: fixed;\n transform: rotate(-90deg) translate(50%, -50%);\n transform-origin: 100% 50%;\n padding: 9px 20px;\n text-align: center;\n background-color: #485bff;\n border-top-left-radius: 8px;\n border-top-right-radius: 8px;\n font-family: sans-serif;\n font-size: 16px;\n color: #fff;\n box-shadow: 0px 0px 14px 0px rgba(0, 0, 0, 0.25);\n }\n\n [dir=rtl].bb-feedback-button .bb-feedback-button-classic {\n top: 50%;\n left: 0px;\n right: auto;\n transform: rotate(90deg) translate(-50%, -100%);\n transform-origin: 0% 0%;\n }\n \n .bb-feedback-button-classic--left {\n top: 50%;\n left: 0px;\n right: auto;\n transform: rotate(90deg) translate(-50%, -100%);\n transform-origin: 0% 0%;\n }\n\n [dir=rtl].bb-feedback-button .bb-feedback-button-classic--left {\n top: 50%;\n right: 0px;\n left: auto;\n transform: rotate(-90deg) translate(50%, -50%);\n transform-origin: 100% 50%;\n }\n \n .bb-feedback-button-classic--bottom {\n top: auto;\n bottom: 0px;\n transform: none;\n right: ').concat(i,"px;\n left: auto;\n }\n \n [dir=rtl].bb-feedback-button .bb-feedback-button-classic--bottom {\n top: auto;\n bottom: 0px;\n transform: none;\n left: ").concat(i,"px;\n right: auto;\n }\n\n .bb-feedback-button--classic-button-style {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n \n .bb-feedback-button--open.bb-feedback-button--classic-button-style {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: bbFadeOutRight;\n }\n \n .bb-feedback-button .bb-logo-logo {\n position: absolute;\n width: 30px;\n height: 30px;\n top: 9px;\n left: 9px;\n object-fit: contain;\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-name: bbZoomIn;\n }\n \n .bb-feedback-button .bb-logo-arrowdown {\n position: absolute;\n width: 14px;\n height: 14px;\n top: 17px;\n left: 17px;\n object-fit: contain;\n animation-duration: 0.3s;\n animation-fill-mode: both;\n }\n \n .bb-feedback-button .bb-logo-arrowdown {\n animation-name: bbZoomOut;\n }\n \n .bb-feedback-button--open .bb-logo-arrowdown {\n animation-name: bbZoomIn;\n }\n \n .bb-feedback-button--open .bb-logo-logo {\n animation-name: bbZoomOut;\n }\n \n .bb-feedback-button-icon:hover {\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.25), 0px 0px 20px rgba(0, 0, 0, 0.2);\n transform: scale(1.1);\n }\n \n .bb-feedback-button--open .bb-feedback-button-text {\n animation-name: bbFadeOutDown;\n }\n \n .bb-feedback-button--open .bb-feedback-button-icon {\n display: flex;\n }\n \n .bb-capture-svg {\n position: fixed;\n z-index: ").concat(2147483614,";\n top: 0px;\n left: 0px;\n right: 0px;\n width: 100%;\n height: 100%;\n padding: 0px;\n margin: 0px;\n cursor: crosshair;\n }\n\n .bb-capture-svg--preview {\n cursor: auto !important;\n }\n \n .bb-rec-on-circle {\n animation-name: bbRecIconFade;\n animation-duration: 2s;\n animation-iteration-count: infinite;\n animation-direction: alternate;\n }\n \n .bb-rec-on-cont {\n animation-name: bbRecIconContFade;\n animation-duration: 2s;\n animation-iteration-count: infinite;\n animation-direction: alternate;\n }\n \n .bb-capture-editor-drag-info {\n position: fixed;\n top: -200px;\n left: 0px;\n z-index: ").concat(2147483616,";\n transition: opacity 0.3s ease-in-out;\n }\n \n .bb-capture-editor-drag-info svg {\n width: 24px;\n height: 24px;\n }\n \n .bb-capture-editor-borderlayer {\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n border: 4px solid ").concat(e,";\n cursor: crosshair;\n z-index: ").concat(2147483610,";\n box-sizing: border-box;\n pointer-events: none;\n }\n \n .bb-capture-editor-notrecording .bb-capture-editor-borderlayer {\n background-color: rgba(0, 0, 0, 0.8);\n }\n\n .bb-capture-editor-recording .bb-capture-editor-borderlayer {\n border: 4px solid #eb144c !important;\n }\n \n .bb-capture-editor-recording .bb-capture-dismiss {\n display: none;\n }\n \n .bb-capture-editor-item-inactive {\n opacity: 0.3;\n cursor: not-allowed !important;\n }\n \n .bb-capture-editor-notrecording .bb-capture-toolbar-drawingitem {\n opacity: 0.3;\n cursor: not-allowed !important;\n }\n \n .bb-capture-editor-notrecording .bb-capture-editor-drag-info {\n display: none;\n }\n \n .bb-capture-editor-notrecording .bb-capture-svg {\n pointer-events: none !important;\n }\n \n .bb-capture-toolbar {\n position: fixed;\n top: 20px;\n left: 50%;\n transform: translateX(-50%);\n z-index: ").concat(2147483618,";\n background-color: #fff;\n padding: 5px;\n display: flex;\n align-items: center;\n border-radius: 8px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n transition: opacity 0.3s ease-in-out;\n }\n \n .bb-capture-dismiss {\n position: fixed;\n top: 0px;\n right: 0px;\n z-index: ").concat(2147483618,";\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n width: 36px;\n height: 36px;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: ").concat(e,";\n border-bottom-left-radius: ").concat(C,"px;\n }\n\n [dir=rtl] .bb-capture-dismiss {\n top: 0px;\n left: 0px;\n right: auto;\n border-bottom-left-radius: 0px !important;\n border-bottom-right-radius: ").concat(C,"px;\n }\n \n .bb-capture-dismiss svg path {\n fill: ").concat(c,';\n }\n \n .bb-capture-dismiss svg {\n width: 20px;\n height: 20px;\n object-fit: contain;\n }\n \n .bb-capture-button-next {\n font-family: sans-serif;\n box-sizing: border-box;\n font-weight: 600;\n text-align: center;\n width: auto;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n margin: 0px;\n line-height: 36px;\n padding: 0px 12px;\n font-size: 15px;\n margin-left: 12px;\n }\n\n [dir=rtl].bb-capture-editor .bb-capture-button-next {\n margin-left: auto;\n margin-right: 12px;\n }\n \n .bb-capture-toolbar-item-spacer {\n width: 1px;\n height: 38px;\n min-width: 1px;\n margin: 0px 5px;\n }\n \n .bb-capture-toolbar-item {\n width: 42px;\n height: 38px;\n min-width: 42px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n position: relative;\n margin-right: 5px;\n }\n\n .drag-handle-item {\n cursor: grab !important;\n width: 34px;\n min-width: 34px;\n }\n\n .drag-handle-item svg {\n width: 18px !important;\n height: 18px !important;\n }\n \n .bb-capture-toolbar-item svg {\n width: 23px;\n height: 23px;\n object-fit: contain;\n }\n \n .bb-capture-toolbar-item-selectedcolor {\n border-radius: 100%;\n width: 20px;\n height: 20px;\n background-color: #db4035;\n }\n \n .bb-capture-toolbar-item[data-type="undo"] svg {\n width: 18px;\n height: 18px;\n }\n \n .bb-capture-toolbar-item[data-active="true"] {\n position: relative;\n }\n \n .bb-capture-preview {\n display: none;\n background-color: rgba(0, 0, 0, 0.6);\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n justify-content: center;\n align-items: center;\n z-index: ').concat(2147483620,";\n }\n \n .bb-capture-preview-inner {\n background-color: #fff;\n padding: 0px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n border-radius: 8px;\n flex-direction: column;\n max-width: 640px;\n width: 100%;\n margin: 20px;\n }\n \n .bb-capture-preview-inner video {\n border-radius: 8px 8px 0px 0px;\n display: block;\n border: 0px;\n outline: none;\n width: 100%;\n max-height: 60vh;\n }\n \n .bb-capture-preview-buttons {\n display: flex;\n justify-content: space-between;\n padding: 14px;\n }\n \n .bb-capture-preview-retrybutton {\n font-family: sans-serif;\n border-radius: 21px;\n box-sizing: border-box;\n padding: 12px 26px;\n font-size: 16px;\n line-height: 19px;\n font-weight: 600;\n text-align: center;\n margin-top: 0px;\n margin-bottom: 0px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-preview-sendbutton {\n font-family: sans-serif;\n border-radius: 21px;\n box-sizing: border-box;\n padding: 12px 26px;\n font-size: 16px;\n line-height: 19px;\n font-weight: 600;\n text-align: center;\n margin-top: 0px;\n margin-bottom: 0px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-preview-retrybutton:hover,\n .bb-capture-preview-sendbutton:hover {\n opacity: 0.9;\n }\n \n .bb-capture-toolbar-item-recording {\n margin-right: 0px;\n }\n \n .bb-capture-toolbar-item-recording svg {\n width: 33px;\n height: 33px;\n }\n \n .bb-capture-toolbar-item-colorpicker {\n position: fixed;\n top: 70px;\n left: 50%;\n transform: translateX(-50%);\n z-index: ").concat(2147483618,';\n background-color: #fff;\n display: none;\n padding: 10px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n border-radius: 8px;\n }\n \n .bb-capture-toolbar-item-color {\n width: 20px;\n height: 20px;\n border-radius: 100%;\n margin-right: 12px;\n box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.15);\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-toolbar-item-color:hover {\n box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.25);\n }\n \n .bb-capture-toolbar-item-color:last-of-type {\n margin-right: 0px;\n }\n \n [dir=rtl].bb-capture-editor .bb-capture-toolbar-item-color {\n margin-right: auto;\n margin-left: 12px;\n }\n \n [dir=rtl].bb-capture-editor .bb-capture-toolbar-item-color:last-of-type {\n margin-right: auto;\n margin-left: 0px;\n }\n \n .bb-capture-toolbar-item-recording[data-active="true"] svg:first-of-type {\n display: none;\n }\n \n .bb-capture-toolbar-item-recording[data-active="true"] svg:nth-of-type(2) {\n display: block;\n }\n \n .bb-capture-toolbar-item-recording[data-active="false"] svg:first-of-type {\n display: block;\n }\n \n .bb-capture-toolbar-item-recording[data-active="false"] svg:nth-of-type(2) {\n display: none;\n }\n \n .bb-capture-toolbar-item--active {\n background-color: #eee;\n }\n \n .bb-capture-toolbar-item:hover svg {\n opacity: 1;\n }\n \n .bb-capture-toolbar-item--active {\n background-color: #f8f8f8;\n }\n \n .bb-capture-toolbar-item--active svg {\n opacity: 1;\n }\n \n .bb-capture-toolbar-item--inactivecross::before {\n content: "";\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n height: 3px;\n width: 26px;\n margin: auto;\n border-radius: 4px;\n background-color: #e80000;\n transform: rotate(45deg);\n }\n \n .bb-capture-toolbar-item--inactivecross svg {\n fill: #eee;\n }\n \n .bb-capture-toolbar-item-timer {\n text-align: left;\n line-height: 32px;\n font-size: 14px;\n font-family: sans-serif;\n margin: 5px;\n min-width: 40px;\n display: none;\n }\n \n .bb-capture-toolbar-item .bb-tooltip {\n background-color: #555;\n color: #fff;\n visibility: hidden;\n font-size: 14px;\n font-family: sans-serif;\n text-align: center;\n padding: 5px 10px;\n position: absolute;\n z-index: 1;\n top: 45px;\n left: 0px;\n transform: translateX(calc(-50% + 21px));\n opacity: 0;\n transition: opacity 0.3s;\n white-space: nowrap;\n }\n \n .bb-capture-toolbar-item .bb-tooltip::after {\n content: "";\n position: absolute;\n bottom: 100%;\n left: 50%;\n margin-left: -5px;\n border-width: 5px;\n border-style: solid;\n transform: rotate(180deg);\n border-color: #555 transparent transparent transparent;\n }\n \n .bb-capture-toolbar-item:hover .bb-tooltip {\n visibility: visible;\n opacity: 1;\n }\n \n .bb-capture-options {\n display: none;\n }\n \n .bb-capture-options--active {\n display: flex;\n }\n\n @keyframes bbFadeOutRight {\n from {\n opacity: 1;\n }\n \n to {\n opacity: 0;\n }\n }\n \n @keyframes bbFadeOutDown {\n from {\n opacity: 1;\n }\n \n to {\n opacity: 0;\n transform: translate3d(0, 100%, 0);\n }\n }\n \n @keyframes bbFadeInOpacity {\n from {\n opacity: 0;\n }\n \n to {\n opacity: 1;\n }\n }\n \n @keyframes bbZoomOut {\n from {\n opacity: 1;\n }\n \n 50% {\n opacity: 0;\n transform: scale3d(0.3, 0.3, 0.3);\n }\n \n to {\n opacity: 0;\n }\n }\n \n @keyframes bbZoomIn {\n from {\n opacity: 0;\n transform: scale3d(0.3, 0.3, 0.3);\n }\n \n 50% {\n opacity: 1;\n }\n }\n \n @keyframes bbRecIconContFade {\n 0% {\n fill: #b10802;\n }\n 50% {\n fill: #ff0000;\n }\n 100% {\n fill: #b10802;\n }\n } \n .bb-capture-preview-retrybutton {\n color: ').concat(h,";\n border-radius: ").concat(w,"px;\n background-color: ").concat(y,";\n }\n .bb-capture-preview-retrybutton:hover {\n background-color: ").concat(b,";\n }\n @keyframes bb-suc-fill {\n 100% {\n box-shadow: inset 0px 0px 0px 30px ").concat(e,";\n }\n }\n .bb-capture-toolbar-item-spacer {\n background-color: ").concat(y,";\n }\n .bb-tooltip {\n border-radius: ").concat(S,"px;\n }\n @keyframes bbRecIconFade {\n 0% {\n fill: transparent;\n }\n 50% {\n fill: ").concat(b,";\n }\n 100% {\n fill: transparent;\n }\n }\n .bb-capture-preview-sendbutton {\n color: ").concat(c,";\n background-color: ").concat(e,";\n border-radius: ").concat(w,"px;\n }\n .bb-capture-button-next {\n color: ").concat(c,";\n background-color: ").concat(e,";\n border-radius: ").concat(C,"px;\n }\n .bb-capture-preview-inner {\n background-color: ").concat(r,";\n border-radius: ").concat(S,"px;\n }\n .bb-capture-toolbar-item-timer {\n color: ").concat(v,";\n }\n .bb-svg-path {\n fill: ").concat(h,";\n }\n .bb-capture-toolbar-item {\n border-radius: ").concat(S,"px;\n }\n .bb-capture-toolbar {\n background-color: ").concat(r,";\n border-radius: ").concat(S,"px;\n }\n .bb-capture-toolbar-item-colorpicker {\n background-color: ").concat(r,";\n }\n .bb-capture-toolbar-item--active {\n background-color: ").concat(y,";\n }\n .bb-feedback-button-classic {\n border-top-left-radius: ").concat(S,"px;\n border-top-right-radius: ").concat(S,"px;\n }\n .bb-logo-logo--default path {\n fill: ").concat(p,";\n }\n .bb-logo-arrowdown {\n fill: ").concat(p,";\n }\n .bb-feedback-button-icon {\n background-color: ").concat(n,";\n }\n .bb-feedback-button-classic {\n background-color: ").concat(n,";\n color: ").concat(p,";\n }\n\n @media only screen and (max-width: 450px) {\n [dir=rtl].gleap-frame-container,\n .gleap-frame-container {\n left: 0px;\n right: 0px;\n width: 100vw;\n max-width: 100vw;\n min-height: 100vh;\n max-height: 100vh;\n min-height: 100dvh !important;\n max-height: 100dvh !important;\n top: 0px;\n bottom: 0px;\n border-radius: 0px;\n animation-name: gleapFadeInUpMobile;\n }\n\n .gleap-frame-container-inner {\n width: 100vw;\n height: 100%;\n }\n\n .gleap-frame-container:not(.gleap-frame-container--survey):not(.gleap-frame-container--survey-full) .gleap-frame-container-inner {\n max-height: calc(var(--glvh, 1vh) * 100) !important;\n }\n\n .gleap-frame-container--survey {\n height: auto !important;\n top: initial !important;\n bottom: 0px !important;\n min-height: initial !important;\n }\n\n .gleap-frame-container--survey .gleap-frame-container-inner {\n height: 100vh !important;\n }\n\n .bb-tooltip {\n display: none !important;\n }\n \n .bb-capture-toolbar-item-colorpicker {\n top: 75px;\n }\n \n .bb-capture-button-next {\n margin-left: auto;\n }\n \n .bb-capture-dismiss {\n display: none;\n }\n \n .bb-capture-toolbar {\n top: 15px;\n right: 15px;\n left: 15px;\n width: auto;\n transform: none;\n }\n\n .bb-capture-editor-drag-info {\n display: none;\n }\n \n .bb-capture-editor-borderlayer {\n border-width: 4px;\n }\n }\n \n @media print {\n .bb-feedback-button {\n display: none !important;\n }\n \n .gleap-frame-container {\n display: none !important;\n }\n }\n\n .gleap-tour-sender {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n margin-bottom: 10px;\n }\n\n .gleap-tour-sender-image {\n width: 32px;\n height: 32px;\n border-radius: 32px;\n margin-right: 10px;\n background-size: cover;\n background-repeat: no-repeat;\n }\n\n .gleap-tour-popover.gleap-tour-popover-post {\n min-width: 550px;\n max-width: 550px;\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-tour-popover.gleap-tour-popover-post {\n min-width: calc(100vw - 40px);\n max-width: calc(100vw - 40px);\n }\n }\n\n .gleap-tour-message,\n .gleap-tour-message p,\n .gleap-tour-message ul {\n color: ").concat(h,";\n }\n\n .gleap-tour-message h2 {\n font-weight: 600;\n font-size: 22px;\n }\n\n .gleap-tour-message h3 {\n font-weight: 600;\n font-size: 18px;\n }\n\n .gleap-tour-message p {\n line-height: 1.3;\n margin-bottom: 10px !important;\n margin-top: 10px !important;\n }\n\n .gleap-tour-message ul {\n line-height: 1.3;\n padding-left: 20px;\n margin-top: 10px !important;\n margin-bottom: 10px !important;\n }\n\n .gleap-tour-message {\n max-height: calc(80vh - 100px) !important;\n overflow-y: auto;\n min-width: 270px;\n }\n\n .gleap-tour-message::-webkit-scrollbar {\n width: 5px;\n }\n\n .gleap-tour-message::-webkit-scrollbar-track {\n border-radius: 0px;\n }\n \n .gleap-tour-message::-webkit-scrollbar-thumb {\n background: ").concat(b,"; \n border-radius: 5px;\n }\n\n .gleap-tour-message::-webkit-scrollbar-thumb:hover {\n background: ").concat(v,";\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-tour-message {\n min-width: auto !important;\n }\n }\n\n .gleap-tour-message iframe {\n width: 100%;\n height: 300px;\n margin-top: 10px;\n margin-bottom: 10px;\n border: none;\n outline: none;\n display: block;\n }\n\n .gleap-tour-sender-name {\n font-size: 15px;\n }\n\n .gleap-tour-video {\n width: 100%;\n max-width: 100%;\n }\n\n .gleap-tour-video-svg--fullscreen {\n width: 100% !important;\n height: 100% !important;\n top: 0px !important;\n left: 0px !important;\n right: 0px !important;\n bottom: 0px !important;\n }\n\n .gleap-tour-video--playing .gleap-tour-video-playpause {\n opacity: 0;\n }\n \n .gleap-tour-video--playing:hover .gleap-tour-video-playpause {\n opacity: 1;\n }\n\n .gleap-tour-popover-video-pointer {\n padding: 0px !important;\n border-radius: 8px;\n position: relative;\n background-color: transparent !important;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-footer {\n position: absolute;\n top: 0px;\n left: 20px;\n right: 20px;\n opacity: 0;\n transition: opacity 200ms ease-in-out;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-footer button {\n padding: 5px 12px;\n }\n\n .gleap-tour-popover-video-pointer.gleap-tour-popover-can-close .gleap-tour-popover-footer {\n right: 40px !important;\n }\n\n .gleap-tour-popover-video-pointer:hover .gleap-tour-popover-footer {\n opacity: 1;\n }\n\n .gleap-tour-popover-pointer.gleap-tour-popover-no-sender .gleap-tour-message {\n padding-right: 20px;\n }\n\n .gleap-tour-video video {\n width: 100%;\n max-width: 100%;\n height: auto;\n border: none;\n outline: none;\n display: block;\n border-radius: 8px;\n }\n\n .gleap-admin-collapse-ui {\n z-index: ").concat(2147483635,";\n cursor: pointer;\n position: fixed;\n bottom: 75px;\n right: 20px;\n width: 32px;\n height: 32px;\n border-radius: 100%;\n background-color: #fff;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: rgba(0, 0, 0, 0.16) 0px 10px 36px 0px, rgba(0, 0, 0, 0.06) 0px 0px 0px 1px;\n }\n\n .gleap-admin-collapse-ui svg {\n width: 20px;\n height: 14px;\n fill: #000 !important;\n }\n\n .gleap-admin-collapse-ui-active {\n bottom: 20px !important;\n }\n\n .gleap-admin-collapse-ui-active svg {\n transform: rotate(180deg);\n }\n\n .gleap-admin-frame-container-active {\n display: none !important;\n }\n\n .gleap-admin-frame-container {\n position: fixed;\n bottom: 0px;\n left: 0px;\n right: 0px;\n width: 100vw;\n z-index: ").concat(2147483640,";\n }\n\n .gleap-admin-frame {\n width: 100%;\n height: 100% !important;\n border: none;\n outline: none;\n display: block;\n }\n \n .gleap-tour-message .linktype-link {\n display: inline-block !important;\n background-color: transparent !important;\n color: ").concat(n," !important;\n }\n\n .gleap-tooltip .linktype-button,\n .gleap-tour-message .linktype-button {\n display: inline-block !important;\n border-radius: 5px;\n box-sizing: border-box;\n padding: 10px 20px !important;\n text-decoration: none !important;\n background-color: ").concat(n," !important;\n color: ").concat(p," !important;\n }\n\n .gleap-tour-message img {\n width: 100%;\n max-width: 100%;\n min-height: 260px;\n height: auto;\n margin-top: 10px;\n margin-bottom: 10px;\n object-fit: cover;\n }\n\n .gleap-tour-active .gleap-tour-overlay {\n pointer-events: none;\n }\n \n .gleap-tour-active * {\n pointer-events: none;\n }\n \n .gleap-tour-active .gleap-tour-active-element,\n .gleap-tour-active .gleap-tour-active-element *,\n .gleap-tour-popover,\n .gleap-tour-popover * {\n pointer-events: auto;\n }\n \n @keyframes animate-fade-in {\n 0% {\n opacity: 0;\n }\n \n to {\n opacity: 1;\n }\n }\n \n .gleap-tour-fade .gleap-tour-overlay {\n animation: animate-fade-in 200ms ease-in-out;\n }\n \n .gleap-tour-fade .gleap-tour-popover {\n animation: animate-fade-in 200ms;\n }\n\n .gleap-tour-video-playpause {\n position: absolute;\n bottom: 8px;\n left: 8px;\n width: 32px;\n height: 32px;\n padding: 4px;\n background-color: rgba(0,0,0,0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border-radius: 8px;\n transition: opacity 200ms ease-in-out;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-arrow {\n display: none !important;\n }\n\n .gleap-tour-video-playpause svg {\n width: 34px;\n height: auto;\n fill: #fff;\n }\n \n /* Popover styles */\n .gleap-tour-popover {\n all: unset;\n box-sizing: border-box;\n color: #2d2d2d;\n margin: 0;\n padding: 15px;\n border-radius: ").concat(S,'px;\n min-width: 250px;\n max-width: 300px;\n box-shadow: 0 1px 10px #0006;\n z-index: 1000000000;\n position: fixed;\n top: 0;\n right: 0;\n background-color: #fff;\n }\n \n .gleap-tour-popover * {\n font-family: "Helvetica Neue", Inter, ui-sans-serif, "Apple Color Emoji", Helvetica, Arial, sans-serif;\n }\n \n .gleap-tour-popover-title {\n font: 19px / normal sans-serif;\n font-weight: 700;\n display: block;\n position: relative;\n line-height: 1.5;\n zoom: 1;\n margin: 0;\n }\n \n .gleap-tour-popover-close-btn {\n all: unset;\n position: absolute;\n top: 5px;\n right: 5px;\n width: 32px;\n height: 32px;\n cursor: pointer;\n font-size: 30px;\n font-weight: 500;\n line-height: 32px;\n color: #d2d2d2;\n z-index: 1;\n text-align: center;\n transition: color;\n transition-duration: 200ms;\n }\n \n .gleap-tour-popover-close-btn:hover,\n .gleap-tour-popover-close-btn:focus {\n color: #2d2d2d;\n }\n \n .gleap-tour-popover-title[style*="block"] + .gleap-tour-popover-description {\n margin-top: 5px;\n }\n \n .gleap-tour-popover-description {\n margin-bottom: 0;\n font: 15px / normal sans-serif;\n line-height: 1.5;\n font-weight: 400;\n zoom: 1;\n }\n \n .gleap-tour-popover-footer {\n margin-top: 15px;\n text-align: right;\n zoom: 1;\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n \n .gleap-tour-popover-progress-text {\n font-size: 13px;\n font-weight: 400;\n color: #727272;\n zoom: 1;\n }\n \n .gleap-tour-popover-footer button {\n background-color: ').concat(e,";\n color: ").concat(c,";\n border-radius: ").concat(C,"px;\n box-sizing: border-box;\n padding: 10px 20px;\n font-size: 14px;\n font-weight: bold;\n line-height: 21px;\n border: none;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: none !important;\n outline: none !important;\n }\n\n .gleap-tour-popover-prev-btn {\n color: ").concat(h," !important;\n background-color: ").concat(y," !important;\n margin-right: 3px;\n }\n\n .gleap-tour-popover-prev-btn:hover {\n background-color: ").concat(e,"22 !important;\n color: ").concat(e,' !important;\n }\n \n .gleap-tour-popover-footer .gleap-tour-popover-btn-disabled {\n opacity: 0.5;\n pointer-events: none;\n }\n \n /* Disable the scrolling of parent element if it has an active element*/\n :not(body):has(> .gleap-tour-active-element) {\n overflow: hidden !important;\n }\n \n .gleap-tour-no-interaction, .gleap-tour-no-interaction * {\n pointer-events: none !important;\n }\n \n .gleap-tour-popover-navigation-btns {\n display: flex;\n flex-grow: 1;\n justify-content: flex-end;\n }\n \n .gleap-tour-popover-navigation-btns button + button {\n margin-left: 4px;\n }\n \n .gleap-tour-popover-arrow {\n content: "";\n position: absolute;\n border: 5px solid #fff;\n }\n \n .gleap-tour-popover-arrow-side-over {\n display: none;\n }\n \n /** Popover Arrow Sides **/\n .gleap-tour-popover-arrow-side-left {\n left: 100%;\n border-right-color: transparent;\n border-bottom-color: transparent;\n border-top-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-right {\n right: 100%;\n border-left-color: transparent;\n border-bottom-color: transparent;\n border-top-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-top {\n top: 100%;\n border-right-color: transparent;\n border-bottom-color: transparent;\n border-left-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-bottom {\n bottom: 100%;\n border-left-color: transparent;\n border-top-color: transparent;\n border-right-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-center {\n display: none;\n }\n \n /* Left/Start + Right/Start */\n .gleap-tour-popover-arrow-side-left.gleap-tour-popover-arrow-align-start,\n .gleap-tour-popover-arrow-side-right.gleap-tour-popover-arrow-align-start {\n top: 15px;\n }\n \n /* Top/Start + Bottom/Start */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-start,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-start {\n left: 15px;\n }\n \n /* End/Left + End/Right */\n .gleap-tour-popover-arrow-align-end.gleap-tour-popover-arrow-side-left,\n .gleap-tour-popover-arrow-align-end.gleap-tour-popover-arrow-side-right {\n bottom: 15px;\n }\n \n /* Top/End + Bottom/End */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-end,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-end {\n right: 15px;\n }\n \n /* Left/Center + Right/Center */\n .gleap-tour-popover-arrow-side-left.gleap-tour-popover-arrow-align-center,\n .gleap-tour-popover-arrow-side-right.gleap-tour-popover-arrow-align-center {\n top: 50%;\n margin-top: -5px;\n }\n \n /* Top/Center + Bottom/Center */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-center,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-center {\n left: 50%;\n margin-left: -5px;\n }\n \n /* No arrow */\n .gleap-tour-popover-arrow-none {\n display: none;\n } \n\n /* Modal styles */\n .gleap-modal-wrapper {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: ').concat(2147483640,";\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .gleap-modal-backdrop {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.5);\n z-index: ").concat(2147483641,";\n }\n\n .gleap-modal {\n position: relative;\n width: 90%;\n max-width: 600px;\n max-height: 90vh;\n z-index: ").concat(2147483700,";\n background-color: ").concat(r,";\n border-radius: ").concat(k,"px;\n overflow: hidden;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-name: gleapFadeInUp;\n }\n\n .gleap-modal-frame {\n width: 100%;\n border: none;\n display: block;\n outline: none;\n }\n\n body.gleap-modal-open {\n overflow: hidden;\n }\n\n @keyframes gleapFadeInUp {\n from {\n opacity: 0;\n transform: translate3d(0, 20px, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n "),E=document.querySelector(".gleap-styles");E&&E.remove();var T=document.createElement("style");T.innerHTML=O,T.className="gleap-styles",document.body.appendChild(T)}(e,t,n,r,o,i,s,l)}))}},{key:"sendSilentCrashReport",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"MEDIUM",o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{screenshot:!0,replays:!0,attachments:!0};return e.sendSilentCrashReportWithFormData({description:t},n,o)}},{key:"sendSilentCrashReportWithFormData",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"MEDIUM",o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{screenshot:!0,replays:!0,attachments:!0};if(!this.silentCrashReportSent){this.silentCrashReportSent=!0,setTimeout((function(){t.silentCrashReportSent=!1}),1e4);var r=o?k(o):{},i=et.getInstance();if(i.ready){var a=e||{};i.session.email&&(a.reportedBy=i.session.email),new _t("CRASH",n,a,!0,r).sendFeedback().then((function(){})).catch((function(e){}))}}}},{key:"showSurvey",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"survey";e.startFeedbackFlowWithOptions(t,{hideBackButton:!0,format:n},!0)}},{key:"startClassicForm",value:function(t,n){e.startFeedbackFlowWithOptions(t,{hideBackButton:!n})}},{key:"startFeedbackFlow",value:function(t,n){e.startFeedbackFlowWithOptions(t,{hideBackButton:!n})}},{key:"startFeedbackFlowWithOptions",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=n.autostartDrawing,i=n.hideBackButton,a=n.format;if(et.getInstance().ready){e.getInstance().setGlobalDataItem("snapshotPosition",{x:window.scrollX,y:window.scrollY});var s="start-feedbackflow";o&&(s="start-survey"),Vt.getInstance().setAppMode(o?a:"widget"),Vt.getInstance().sendMessage({name:s,data:{flow:t,hideBackButton:i,format:a}},!0),r?Vt.getInstance().showDrawingScreen("screenshot"):Vt.getInstance().showWidget()}}},{key:"openConversations",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-conversations",data:{hideBackButton:!e}},!0),Vt.getInstance().showWidget()}},{key:"openConversation",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e&&(Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-conversation",data:{shareToken:e,hideBackButton:!t}},!0),Vt.getInstance().showWidget())}},{key:"startConversation",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];e.startBot("",t)}},{key:"startBot",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"start-bot",data:{botId:e||"",hideBackButton:!t}},!0),Vt.getInstance().showWidget()}},{key:"openHelpCenterCollection",value:function(e){e&&(Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-help-collection",data:{collectionId:e}},!0),Vt.getInstance().showWidget())}},{key:"openHelpCenterArticle",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e&&(Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-help-article",data:{articleId:e,hideBackButton:!t}},!0),Vt.getInstance().showWidget())}},{key:"openHelpCenter",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-helpcenter",data:{hideBackButton:!e}},!0),Vt.getInstance().showWidget()}},{key:"searchHelpCenter",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e&&(Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-helpcenter-search",data:{term:e,hideBackButton:!t}},!0),Vt.getInstance().showWidget())}},{key:"openNewsArticle",value:function(e){e&&(Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-news-article",data:{id:e}},!0),Vt.getInstance().showWidget())}},{key:"openChecklists",value:function(){Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-checklists",data:{}},!0),Vt.getInstance().showWidget()}},{key:"startChecklist",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;return!!e&&(Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"start-checklist",data:Mm({outboundId:e,hideBackButton:!t},n?{sharedKey:n}:{})},!0),Vt.getInstance().showWidget(),!0)}},{key:"openChecklist",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e&&(Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-checklist",data:{id:e,hideBackButton:!t}},!0),Vt.getInstance().showWidget())}},{key:"getChecklistData",value:function(e,t){if(!e)return Promise.reject(new Error("outboundId is required"));var n=D.getInstance();return n.validateChecklist(e,t).then((function(e){return n.fetchChecklist(e)}))}},{key:"openNews",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-news",data:{hideBackButton:!e}},!0),Vt.getInstance().showWidget()}},{key:"openFeatureRequests",value:function(){Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-feature-requests",data:{}},!0),Vt.getInstance().showWidget()}},{key:"startProductTour",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this;et.getInstance().startProductTourConfig(e).then((function(o){var r;!t||null==o||!o.startURL||null!==(r=window)&&void 0!==r&&null!==(r=r.location)&&void 0!==r&&null!==(r=r.href)&&void 0!==r&&r.includes(null==o?void 0:o.baseURL)?n.startProductTourWithConfig(e,o,!0):window.location.href="".concat(o.startURL,"?gleap_tour=").concat(e,"&gleap_tour_delay=1")})).catch((function(e){}))}},{key:"checkForUncompletedTour",value:function(){var e=mm.getInstance().loadUncompletedTour();e&&mm.getInstance().startWithConfig(e.tourId,e.tourData,500)}},{key:"startProductTourWithConfig",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];mm.getInstance().startWithConfig(e,t,0,n)}},{key:"showBanner",value:function(e){try{Bh.getInstance().showBanner(e)}catch(t){}}},{key:"showModal",value:function(e){try{Gh.getInstance().showModal(e)}catch(t){}}},{key:"showNotification",value:function(e){Mh.getInstance().showNotification(e)}}],n&&Lm(t.prototype,n),o&&Lm(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();if(Rm(Dm,"invoked",!0),Rm(Dm,"silentCrashReportSent",!1),Rm(Dm,"instance",void 0),"undefined"!=typeof window){var Nm=window.GleapActions;if(Nm&&Nm.length>0)for(var jm=0;jm{for(var o in n)e.o(n,o)&&!e.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:n[o]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function o(e,t){for(var n=0;nVm});var a=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),r(this,"feedbackButton",null),r(this,"injectedFeedbackButton",!1),r(this,"buttonHidden",null),r(this,"lastButtonIcon",null)}var t,n,i;return t=e,i=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],(n=[{key:"destroy",value:function(){this.feedbackButton&&(this.feedbackButton.remove(),this.feedbackButton=null),this.buttonHidden=null,this.lastButtonIcon=null,this.injectedFeedbackButton=!1,this.instance=null}},{key:"toggleFeedbackButton",value:function(t){this.buttonHidden=!t,e.getInstance().updateFeedbackButtonState(),jh.getInstance().updateContainerStyle()}},{key:"feedbackButtonPressed",value:function(){var e=Zt.getInstance();e.isOpened()?e.hideWidget():(e.setAppMode("widget"),e.showWidget())}},{key:"injectFeedbackButton",value:function(){var e=this;if(!this.injectedFeedbackButton){this.injectedFeedbackButton=!0;var t=document.createElement("div");t.addEventListener("click",(function(){e.feedbackButtonPressed()})),document.body.appendChild(t),this.feedbackButton=t,this.updateFeedbackButtonState()}}},{key:"updateNotificationBadge",value:function(e){var t=document.querySelector(".bb-notification-bubble");if(t){var n="bb-notification-bubble--hidden";e>0&&!Zt.getInstance().isOpened()?(t.classList.remove(n),t.innerText=e):t.classList.add(n)}}},{key:"refresh",value:function(){document.querySelector(".bb-feedback-button")?(this.updateFeedbackButtonText(),this.updateFeedbackButtonState()):(this.injectedFeedbackButton=!1,this.feedbackButton=null,this.buttonHidden=null,this.lastButtonIcon=null,this.injectFeedbackButton())}},{key:"updateFeedbackButtonText",value:function(){var t=dt.getInstance().getFlowConfig();if(t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC||t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC_BOTTOM||t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC_LEFT){var n=document.querySelector(".bb-feedback-button-classic");n&&(n.innerText=t.widgetButtonText)}}},{key:"updateFeedbackButtonState",value:function(){if(null!==this.feedbackButton){var t=dt.getInstance().getFlowConfig(),n="";n=t.buttonLogo?''):p("button","#fff"),this.feedbackButton.className="bb-feedback-button gleap-font gl-block",this.feedbackButton.setAttribute("dir",kh.getInstance().isRTLLayout?"rtl":"ltr"),t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC||t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC_BOTTOM||t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC_LEFT?(this.feedbackButton.classList.add("bb-feedback-button--classic-button-style"),this.feedbackButton.innerHTML='
').concat(t.widgetButtonText,"
")):n!==this.lastButtonIcon&&(this.feedbackButton.innerHTML='
'.concat(n).concat(p("arrowdown","#fff"),'
')),this.lastButtonIcon=n;var o=!1;null===e.getInstance().buttonHidden?t.feedbackButtonPosition===e.FEEDBACK_BUTTON_NONE&&(o=!0):e.getInstance().buttonHidden&&(o=!0),o&&this.feedbackButton.classList.add("bb-feedback-button--disabled"),t.feedbackButtonPosition===e.FEEDBACK_BUTTON_BOTTOM_LEFT&&this.feedbackButton.classList.add("bb-feedback-button--bottomleft"),Zt.getInstance().isOpened()&&this.feedbackButton.classList.add("bb-feedback-button--open");var r=Zt.getInstance().appMode;"survey"!==r&&"survey_full"!==r&&"survey_web"!==r||this.feedbackButton.classList.add("bb-feedback-button--survey"),!0!==t.hideForGuests||et.getInstance().isUser()||this.feedbackButton.classList.add("bb-feedback-button--hidden")}}}])&&o(t.prototype,n),i&&o(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}();function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var o,r,i,a,s=[],l=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(o=i.call(n)).done)&&(s.push(o.value),s.length!==t);l=!0);}catch(e){c=!0,r=e}finally{try{if(!l&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(c)throw r}}return s}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return c(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return c(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n=160?"#000000":"#ffffff"},p=function(e,t){return"button"===e?'':"drag"===e?'\x3c!--!Font Awesome Pro 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2025 Fonticons, Inc.--\x3e':"unmute"===e?'':"mute"===e?'':"replay"===e?'\n \n ':"dismiss"===e?'':"blur"===e?'\n \n':"pen"===e?'\n \n \n \n \n \n \n \n \n \n \n \n \n':"rect"===e?'\n \n \n \n \n \n \n \n \n \n \n':"pointer"===e?'\n \n ':"clip"===e?'\n \n \n \n \n \n':"mic"===e?'\n \n \n \n \n ':"camera"===e?'\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n':"recorderon"===e?'\n \n \n \n \n \n \n \n \n \n \n \n':"recorderoff"===e?'\n \n \n \n \n \n \n \n \n ':"arrowdown"===e?'\n \n '):"arrowleft"===e?'\n \n '):"close"===e?'\n \n '):"undo"===e?'\n \n \n \n \n \n \n \n \n \n ':"circle-dot"===e?''):"circle-question"===e?''):"circle-info"===e?''):"circle-exclamation"===e?''):"circle-up"===e?''):"circle-right"===e?''):""};function h(e){return h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},h(e)}function f(e,t){for(var n=0;n0&&(e=e.concat(this.externalRequests)),this.filters&&this.filters.length>0)for(var t=0;t-1)&&!e.find((function(e){return e.url===s.name}))&&e.push({type:"RESOURCE",date:new Date(this.startTimestamp+s.startTime),url:s.name,duration:Math.round(s.duration),initiatorType:s.initiatorType})}}}catch(u){}var l=this.blacklist.concat(this.defaultBlacklist);if(l&&l.length>0)try{e=e.filter((function(e){for(var t=0;t70&&(e=70),this.maxRequests=e}},{key:"setStopped",value:function(e){this.stopped=e}},{key:"setFilters",value:function(e){this.filters=this.filters.concat(e||[])}},{key:"setBlacklist",value:function(e){this.blacklist=this.blacklist.concat(e||[])}},{key:"cleanRequests",value:function(){var e=Object.keys(this.requests);if(e.length>this.maxRequests)for(var t=e.slice(0,e.length-this.maxRequests),n=0;n.15?"":e}},{key:"cleanupPayload",value:function(e){if(null==e)return"{}";try{if(void 0!==("undefined"==typeof TextDecoder?"undefined":h(TextDecoder))&&ArrayBuffer.isView(e))return(new TextDecoder).decode(e)}catch(t){}return e}},{key:"preparePayload",value:function(e){var t=this.cleanupPayload(e);return this.cleanupContentSize(t)}},{key:"start",value:function(){var e=this;if(!this.initialized){this.initialized=!0;var t=this;this.interceptNetworkRequests({onFetch:function(n,o){if(!e.stopped&&o&&e.requests){if(n.length>0&&void 0!==n[0]&&void 0!==n[0].url)e.requests[o]={url:n[0].url,date:new Date,request:{payload:"",headers:void 0!==n[0].headers?Object.fromEntries(n[0].headers.entries()):{}},type:void 0!==n[0].method?n[0].method:""};else if(n.length>=2&&n[1]){var r=n[1]&&n[1].method?n[1].method:"GET";e.requests[o]={request:{payload:t.preparePayload(n[1].body),headers:n[1].headers},type:r,url:n[0],date:new Date}}else e.requests[o]={url:n[0],date:new Date};e.cleanRequests()}},onFetchLoad:function(n,o){if(!e.stopped&&o&&e.requests&&e.requests[o]){try{e.requests[o].success=!0,e.requests[o].response={status:n.status,statusText:"",responseText:""},e.calcRequestTime(o)}catch(i){}try{var r="";n.headers&&void 0!==n.headers.get&&(r=n.headers.get("content-type")),e.isContentTypeSupported(r)?n.text().then((function(r){e.requests[o]&&(e.requests[o].success=!0,e.requests[o].response={status:n.status,statusText:n.statusText,responseText:t.cleanupContentSize(r)}),e.calcRequestTime(o),e.cleanRequests()})).catch((function(t){e.cleanRequests()})):(e.requests[o]&&(e.requests[o].success=!0,e.requests[o].response={status:n.status,statusText:n.statusText,responseText:""}),e.calcRequestTime(o),e.cleanRequests())}catch(i){}}},onFetchFailed:function(t,n){!e.stopped&&n&&e.requests&&e.requests[n]&&(e.requests[n].success=!1,e.calcRequestTime(n),e.cleanRequests())},onOpen:function(t,n){e.stopped||(t&&t.bbRequestId&&n.length>=2&&e.requests&&(e.requests[t.bbRequestId]={type:n[0],url:n[1],date:new Date}),e.cleanRequests())},onSend:function(t,n){e.stopped||(t&&t.bbRequestId&&e.requests&&e.requests[t.bbRequestId]&&(e.requests[t.bbRequestId].request={payload:e.preparePayload(n.length>0?n[0]:"{}"),headers:t.requestHeaders}),e.cleanRequests())},onError:function(t,n){!e.stopped&&e.requests&&t&&t.currentTarget&&t.currentTarget.bbRequestId&&e.requests[t.currentTarget.bbRequestId]&&(e.requests[t.currentTarget.bbRequestId].success=!1,e.calcRequestTime(t.bbRequestId)),e.cleanRequests()},onLoad:function(t,n){if(!e.stopped){if(t&&t.currentTarget&&t.currentTarget.bbRequestId&&e.requests&&e.requests[t.currentTarget.bbRequestId]){var o=t.currentTarget,r=o.responseType,i="<"+r+">";""!==r&&"text"!==r||(i=e.cleanupContentSize(o.responseText)),e.requests[o.bbRequestId].success=!0,e.requests[o.bbRequestId].response={status:o.status,statusText:o.statusText,responseText:i},e.calcRequestTime(o.bbRequestId)}e.cleanRequests()}}})}}},{key:"interceptNetworkRequests",value:function(e){var t,n=this,o=XMLHttpRequest.prototype.open,r=XMLHttpRequest.prototype.send;return void 0===XMLHttpRequest.prototype.gleapSetRequestHeader&&(XMLHttpRequest.prototype.gleapSetRequestHeader=XMLHttpRequest.prototype.setRequestHeader),XMLHttpRequest.prototype.gleapSetRequestHeader&&(XMLHttpRequest.prototype.setRequestHeader=function(e,t){this.requestHeaders||(this.requestHeaders={}),this.requestHeaders&&this.requestHeaders.hasOwnProperty(e)||(this.requestHeaders[e]||(this.requestHeaders[e]=[]),this.requestHeaders[e].push(t),this.gleapSetRequestHeader(e,t))}),XMLHttpRequest.prototype.open=function(){return this.bbRequestId=++n.requestId,e.onOpen&&e.onOpen(this,arguments),e.onLoad&&this.addEventListener("load",e.onLoad.bind(e)),e.onError&&this.addEventListener("error",e.onError.bind(e)),o.apply(this,arguments)},XMLHttpRequest.prototype.send=function(){return e.onSend&&e.onSend(this,arguments),r.apply(this,arguments)},window.fetch&&(t=window.fetch,window.fetch=function(){var o=++n.requestId;return e.onFetch(arguments,o),t.apply(this,arguments).then((function(t){if(t&&"function"==typeof t.clone){var n=t.clone();e.onFetchLoad(n,o)}return t})).catch((function(t){throw e.onFetchFailed(t,o),t}))}),e}},{key:"blobToTextPromise",value:function(e){return new Promise((function(t,n){var o=new FileReader;o.onload=function(e){e&&e.target&&e.target.result?t(e.target.result):n()},o.onerror=function(e){n(e)},o.readAsText(e)}))}}],o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],n&&f(t.prototype,n),o&&f(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();m(v,"instance",void 0);const y=v;var b=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:400,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:400;return new Promise((function(o,r){var i=0===e.indexOf("data:image/jpeg"),a=new Image;a.src=e,a.onerror=function(){r()},a.onload=function(){var e=document.createElement("canvas"),r=t,s=n;t>a.width/1.5&&(r=a.width/1.5),n>a.height/1.5&&(s=a.height/1.5);var l=a.width,c=a.height;l>c?l>r&&(c*=r/l,l=r):c>s&&(l*=s/c,c=s),e.width=l,e.height=c,e.getContext("2d").drawImage(a,0,0,l,c),o(i?e.toDataURL("image/jpeg",.7):e.toDataURL())}}))},w=function(){return!(!/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(navigator.userAgent)&&!/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(navigator.userAgent.substr(0,4)))},k=function(e){if("string"==typeof e||e instanceof String)try{return JSON.parse(e)}catch(t){return{}}return e},x=function(e,t){return e.length>t?e.slice(0,t)+"...":e},S=function(e){try{var t=e.split("."),n=!1,o=t[t.length-2];return"co"!==o&&"com"!==o&&"gv"!==o&&"ac"!==o&&"edu"!==o&&"gov"!==o&&"mil"!==o&&"net"!==o&&"org"!==o||(n=!0),(t=t.slice(n?-3:-2)).join(".")}catch(r){}return e},C=function(e){try{var t=localStorage.getItem("gleap-widget-".concat(e));if(t)return JSON.parse(t)}catch(n){}return null},I=function(e,t){var n="gleap-widget-".concat(e);if(t)try{localStorage.setItem(n,JSON.stringify(t))}catch(o){}else localStorage.removeItem(n)},E=function(e){"complete"===document.readyState||"loaded"===document.readyState||"interactive"===document.readyState?e():document.addEventListener("DOMContentLoaded",(function(){e()}))};function T(e){return T="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},T(e)}function O(e,t){for(var n=0;n=200&&i.status<300)try{var e=i.responseText?JSON.parse(i.responseText):null;o(e)}catch(t){r({status:i.status,statusText:"JSON Parse Error",responseText:i.responseText,error:t})}else r({status:i.status,statusText:i.statusText,responseText:i.responseText})},i.onerror=function(){r({status:0,statusText:"Network Error",responseText:null})},i.send(n?JSON.stringify(n):null)}))}},{key:"_createCacheKey",value:function(e,t){return t?"".concat(e,"::").concat(t):e}},{key:"validateChecklist",value:function(e,t){var n=this,o=this._createCacheKey(e,t),r=this.validationCache.get(o);if(r)return r.status===M?Promise.resolve(r.internalId):Promise.reject(r.error);if(this.validationRequests.has(o))return this.validationRequests.get(o);var i=this._getApiUrl();if(!i){var a=new Error("ChecklistNetworkManager: Gleap API URL not configured.");return this.validationCache.set(o,{status:R,error:a}),Promise.reject(a)}var s="".concat(i,"/outbound/checklists?").concat(this._getQueryParams()),l=this._makeRequest("POST",s,{outboundId:e,sharedKey:t}).then((function(e){if(e&&e.id)return n.validationCache.set(o,{status:M,internalId:e.id}),e.id;var t=new Error("Validation response missing checklist ID.");throw n.validationCache.set(o,{status:R,error:e||t}),t})).catch((function(e){throw n.validationCache.set(o,{status:R,error:e}),e})).finally((function(){n.validationRequests.delete(o)}));return this.validationRequests.set(o,l),l}},{key:"fetchChecklist",value:function(e){var t=this,n=this.fetchCache.get(e);if(n)return n.status===M?Promise.resolve(JSON.parse(JSON.stringify(n.data))):Promise.reject(n.error);if(this.fetchRequests.has(e))return this.fetchRequests.get(e).then((function(e){return JSON.parse(JSON.stringify(e))}));var o=this._getApiUrl();if(!o){var r=new Error("ChecklistNetworkManager: Gleap API URL not configured.");return this.fetchCache.set(e,{status:R,error:r}),Promise.reject(r)}var i="".concat(o,"/outbound/checklists/").concat(e,"?convertTipTap=true&").concat(this._getQueryParams()),a=this._makeRequest("GET",i,null).then((function(n){if(n)return t.fetchCache.set(e,{status:M,data:n}),JSON.parse(JSON.stringify(n));var o=new Error("Empty response received for checklist fetch.");throw t.fetchCache.set(e,{status:R,error:n||o}),o})).catch((function(n){throw t.fetchCache.set(e,{status:R,error:n}),n})).finally((function(){t.fetchRequests.delete(e)}));return this.fetchRequests.set(e,a),a.then((function(e){return JSON.parse(JSON.stringify(e))}))}}],o=[{key:"getInstance",value:function(){return e.instance||(e.instance=new e),e.instance}}],n&&O(t.prototype,n),o&&O(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();L(P,"instance",null);const D=P,N=Math.min,j=Math.max,F=Math.round,B=Math.floor,_=e=>({x:e,y:e}),U={left:"right",right:"left",bottom:"top",top:"bottom"},H={start:"end",end:"start"};function z(e,t,n){return j(e,N(t,n))}function q(e,t){return"function"==typeof e?e(t):e}function W(e){return e.split("-")[0]}function V(e){return e.split("-")[1]}function G(e){return"x"===e?"y":"x"}function X(e){return"y"===e?"height":"width"}function Y(e){return["top","bottom"].includes(W(e))?"y":"x"}function J(e){return G(Y(e))}function K(e){return e.replace(/start|end/g,(e=>H[e]))}function Z(e){return e.replace(/left|right|bottom|top/g,(e=>U[e]))}function $(e){return"number"!=typeof e?function(e){return{top:0,right:0,bottom:0,left:0,...e}}(e):{top:e,right:e,bottom:e,left:e}}function Q(e){return{...e,top:e.y,left:e.x,right:e.x+e.width,bottom:e.y+e.height}}function ee(e,t,n){let{reference:o,floating:r}=e;const i=Y(t),a=J(t),s=X(a),l=W(t),c="y"===i,u=o.x+o.width/2-r.width/2,d=o.y+o.height/2-r.height/2,p=o[s]/2-r[s]/2;let h;switch(l){case"top":h={x:u,y:o.y-r.height};break;case"bottom":h={x:u,y:o.y+o.height};break;case"right":h={x:o.x+o.width,y:d};break;case"left":h={x:o.x-r.width,y:d};break;default:h={x:o.x,y:o.y}}switch(V(t)){case"start":h[a]-=p*(n&&c?-1:1);break;case"end":h[a]+=p*(n&&c?-1:1)}return h}async function te(e,t){var n;void 0===t&&(t={});const{x:o,y:r,platform:i,rects:a,elements:s,strategy:l}=e,{boundary:c="clippingAncestors",rootBoundary:u="viewport",elementContext:d="floating",altBoundary:p=!1,padding:h=0}=q(t,e),f=$(h),m=s[p?"floating"===d?"reference":"floating":d],g=Q(await i.getClippingRect({element:null==(n=await(null==i.isElement?void 0:i.isElement(m)))||n?m:m.contextElement||await(null==i.getDocumentElement?void 0:i.getDocumentElement(s.floating)),boundary:c,rootBoundary:u,strategy:l})),v="floating"===d?{...a.floating,x:o,y:r}:a.reference,y=await(null==i.getOffsetParent?void 0:i.getOffsetParent(s.floating)),b=await(null==i.isElement?void 0:i.isElement(y))&&await(null==i.getScale?void 0:i.getScale(y))||{x:1,y:1},w=Q(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:s,rect:v,offsetParent:y,strategy:l}):v);return{top:(g.top-w.top+f.top)/b.y,bottom:(w.bottom-g.bottom+f.bottom)/b.y,left:(g.left-w.left+f.left)/b.x,right:(w.right-g.right+f.right)/b.x}}const ne=function(e){return void 0===e&&(e=0),{name:"offset",options:e,async fn(t){var n,o;const{x:r,y:i,placement:a,middlewareData:s}=t,l=await async function(e,t){const{placement:n,platform:o,elements:r}=e,i=await(null==o.isRTL?void 0:o.isRTL(r.floating)),a=W(n),s=V(n),l="y"===Y(n),c=["left","top"].includes(a)?-1:1,u=i&&l?-1:1,d=q(t,e);let{mainAxis:p,crossAxis:h,alignmentAxis:f}="number"==typeof d?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...d};return s&&"number"==typeof f&&(h="end"===s?-1*f:f),l?{x:h*u,y:p*c}:{x:p*c,y:h*u}}(t,e);return a===(null==(n=s.offset)?void 0:n.placement)&&null!=(o=s.arrow)&&o.alignmentOffset?{}:{x:r+l.x,y:i+l.y,data:{...l,placement:a}}}}};function oe(e){return ae(e)?(e.nodeName||"").toLowerCase():"#document"}function re(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function ie(e){var t;return null==(t=(ae(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement}function ae(e){return e instanceof Node||e instanceof re(e).Node}function se(e){return e instanceof Element||e instanceof re(e).Element}function le(e){return e instanceof HTMLElement||e instanceof re(e).HTMLElement}function ce(e){return"undefined"!=typeof ShadowRoot&&(e instanceof ShadowRoot||e instanceof re(e).ShadowRoot)}function ue(e){const{overflow:t,overflowX:n,overflowY:o,display:r}=me(e);return/auto|scroll|overlay|hidden|clip/.test(t+o+n)&&!["inline","contents"].includes(r)}function de(e){return["table","td","th"].includes(oe(e))}function pe(e){const t=he(),n=me(e);return"none"!==n.transform||"none"!==n.perspective||!!n.containerType&&"normal"!==n.containerType||!t&&!!n.backdropFilter&&"none"!==n.backdropFilter||!t&&!!n.filter&&"none"!==n.filter||["transform","perspective","filter"].some((e=>(n.willChange||"").includes(e)))||["paint","layout","strict","content"].some((e=>(n.contain||"").includes(e)))}function he(){return!("undefined"==typeof CSS||!CSS.supports)&&CSS.supports("-webkit-backdrop-filter","none")}function fe(e){return["html","body","#document"].includes(oe(e))}function me(e){return re(e).getComputedStyle(e)}function ge(e){return se(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function ve(e){if("html"===oe(e))return e;const t=e.assignedSlot||e.parentNode||ce(e)&&e.host||ie(e);return ce(t)?t.host:t}function ye(e){const t=ve(e);return fe(t)?e.ownerDocument?e.ownerDocument.body:e.body:le(t)&&ue(t)?t:ye(t)}function be(e,t,n){var o;void 0===t&&(t=[]),void 0===n&&(n=!0);const r=ye(e),i=r===(null==(o=e.ownerDocument)?void 0:o.body),a=re(r);return i?t.concat(a,a.visualViewport||[],ue(r)?r:[],a.frameElement&&n?be(a.frameElement):[]):t.concat(r,be(r,[],n))}function we(e){const t=me(e);let n=parseFloat(t.width)||0,o=parseFloat(t.height)||0;const r=le(e),i=r?e.offsetWidth:n,a=r?e.offsetHeight:o,s=F(n)!==i||F(o)!==a;return s&&(n=i,o=a),{width:n,height:o,$:s}}function ke(e){return se(e)?e:e.contextElement}function xe(e){const t=ke(e);if(!le(t))return _(1);const n=t.getBoundingClientRect(),{width:o,height:r,$:i}=we(t);let a=(i?F(n.width):n.width)/o,s=(i?F(n.height):n.height)/r;return a&&Number.isFinite(a)||(a=1),s&&Number.isFinite(s)||(s=1),{x:a,y:s}}const Se=_(0);function Ce(e){const t=re(e);return he()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:Se}function Ie(e,t,n,o){void 0===t&&(t=!1),void 0===n&&(n=!1);const r=e.getBoundingClientRect(),i=ke(e);let a=_(1);t&&(o?se(o)&&(a=xe(o)):a=xe(e));const s=function(e,t,n){return void 0===t&&(t=!1),!(!n||t&&n!==re(e))&&t}(i,n,o)?Ce(i):_(0);let l=(r.left+s.x)/a.x,c=(r.top+s.y)/a.y,u=r.width/a.x,d=r.height/a.y;if(i){const e=re(i),t=o&&se(o)?re(o):o;let n=e,r=n.frameElement;for(;r&&o&&t!==n;){const e=xe(r),t=r.getBoundingClientRect(),o=me(r),i=t.left+(r.clientLeft+parseFloat(o.paddingLeft))*e.x,a=t.top+(r.clientTop+parseFloat(o.paddingTop))*e.y;l*=e.x,c*=e.y,u*=e.x,d*=e.y,l+=i,c+=a,n=re(r),r=n.frameElement}}return Q({width:u,height:d,x:l,y:c})}const Ee=[":popover-open",":modal"];function Te(e){return Ee.some((t=>{try{return e.matches(t)}catch(n){return!1}}))}function Oe(e){return Ie(ie(e)).left+ge(e).scrollLeft}function Le(e,t,n){let o;if("viewport"===t)o=function(e,t){const n=re(e),o=ie(e),r=n.visualViewport;let i=o.clientWidth,a=o.clientHeight,s=0,l=0;if(r){i=r.width,a=r.height;const e=he();(!e||e&&"fixed"===t)&&(s=r.offsetLeft,l=r.offsetTop)}return{width:i,height:a,x:s,y:l}}(e,n);else if("document"===t)o=function(e){const t=ie(e),n=ge(e),o=e.ownerDocument.body,r=j(t.scrollWidth,t.clientWidth,o.scrollWidth,o.clientWidth),i=j(t.scrollHeight,t.clientHeight,o.scrollHeight,o.clientHeight);let a=-n.scrollLeft+Oe(e);const s=-n.scrollTop;return"rtl"===me(o).direction&&(a+=j(t.clientWidth,o.clientWidth)-r),{width:r,height:i,x:a,y:s}}(ie(e));else if(se(t))o=function(e,t){const n=Ie(e,!0,"fixed"===t),o=n.top+e.clientTop,r=n.left+e.clientLeft,i=le(e)?xe(e):_(1);return{width:e.clientWidth*i.x,height:e.clientHeight*i.y,x:r*i.x,y:o*i.y}}(t,n);else{const n=Ce(e);o={...t,x:t.x-n.x,y:t.y-n.y}}return Q(o)}function Ae(e,t){const n=ve(e);return!(n===t||!se(n)||fe(n))&&("fixed"===me(n).position||Ae(n,t))}function Me(e,t,n){const o=le(t),r=ie(t),i="fixed"===n,a=Ie(e,!0,i,t);let s={scrollLeft:0,scrollTop:0};const l=_(0);if(o||!o&&!i)if(("body"!==oe(t)||ue(r))&&(s=ge(t)),o){const e=Ie(t,!0,i,t);l.x=e.x+t.clientLeft,l.y=e.y+t.clientTop}else r&&(l.x=Oe(r));return{x:a.left+s.scrollLeft-l.x,y:a.top+s.scrollTop-l.y,width:a.width,height:a.height}}function Re(e,t){return le(e)&&"fixed"!==me(e).position?t?t(e):e.offsetParent:null}function Pe(e,t){const n=re(e);if(!le(e)||Te(e))return n;let o=Re(e,t);for(;o&&de(o)&&"static"===me(o).position;)o=Re(o,t);return o&&("html"===oe(o)||"body"===oe(o)&&"static"===me(o).position&&!pe(o))?n:o||function(e){let t=ve(e);for(;le(t)&&!fe(t);){if(pe(t))return t;t=ve(t)}return null}(e)||n}const De={convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{elements:t,rect:n,offsetParent:o,strategy:r}=e;const i="fixed"===r,a=ie(o),s=!!t&&Te(t.floating);if(o===a||s&&i)return n;let l={scrollLeft:0,scrollTop:0},c=_(1);const u=_(0),d=le(o);if((d||!d&&!i)&&(("body"!==oe(o)||ue(a))&&(l=ge(o)),le(o))){const e=Ie(o);c=xe(o),u.x=e.x+o.clientLeft,u.y=e.y+o.clientTop}return{width:n.width*c.x,height:n.height*c.y,x:n.x*c.x-l.scrollLeft*c.x+u.x,y:n.y*c.y-l.scrollTop*c.y+u.y}},getDocumentElement:ie,getClippingRect:function(e){let{element:t,boundary:n,rootBoundary:o,strategy:r}=e;const i="clippingAncestors"===n?function(e,t){const n=t.get(e);if(n)return n;let o=be(e,[],!1).filter((e=>se(e)&&"body"!==oe(e))),r=null;const i="fixed"===me(e).position;let a=i?ve(e):e;for(;se(a)&&!fe(a);){const t=me(a),n=pe(a);n||"fixed"!==t.position||(r=null),(i?!n&&!r:!n&&"static"===t.position&&r&&["absolute","fixed"].includes(r.position)||ue(a)&&!n&&Ae(e,a))?o=o.filter((e=>e!==a)):r=t,a=ve(a)}return t.set(e,o),o}(t,this._c):[].concat(n),a=[...i,o],s=a[0],l=a.reduce(((e,n)=>{const o=Le(t,n,r);return e.top=j(o.top,e.top),e.right=N(o.right,e.right),e.bottom=N(o.bottom,e.bottom),e.left=j(o.left,e.left),e}),Le(t,s,r));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}},getOffsetParent:Pe,getElementRects:async function(e){const t=this.getOffsetParent||Pe,n=this.getDimensions;return{reference:Me(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,...await n(e.floating)}}},getClientRects:function(e){return Array.from(e.getClientRects())},getDimensions:function(e){const{width:t,height:n}=we(e);return{width:t,height:n}},getScale:xe,isElement:se,isRTL:function(e){return"rtl"===me(e).direction}};function Ne(e,t,n,o){void 0===o&&(o={});const{ancestorScroll:r=!0,ancestorResize:i=!0,elementResize:a="function"==typeof ResizeObserver,layoutShift:s="function"==typeof IntersectionObserver,animationFrame:l=!1}=o,c=ke(e),u=r||i?[...c?be(c):[],...be(t)]:[];u.forEach((e=>{r&&e.addEventListener("scroll",n,{passive:!0}),i&&e.addEventListener("resize",n)}));const d=c&&s?function(e,t){let n,o=null;const r=ie(e);function i(){var e;clearTimeout(n),null==(e=o)||e.disconnect(),o=null}return function a(s,l){void 0===s&&(s=!1),void 0===l&&(l=1),i();const{left:c,top:u,width:d,height:p}=e.getBoundingClientRect();if(s||t(),!d||!p)return;const h={rootMargin:-B(u)+"px "+-B(r.clientWidth-(c+d))+"px "+-B(r.clientHeight-(u+p))+"px "+-B(c)+"px",threshold:j(0,N(1,l))||1};let f=!0;function m(e){const t=e[0].intersectionRatio;if(t!==l){if(!f)return a();t?a(!1,t):n=setTimeout((()=>{a(!1,1e-7)}),100)}f=!1}try{o=new IntersectionObserver(m,{...h,root:r.ownerDocument})}catch(g){o=new IntersectionObserver(m,h)}o.observe(e)}(!0),i}(c,n):null;let p,h=-1,f=null;a&&(f=new ResizeObserver((e=>{let[o]=e;o&&o.target===c&&f&&(f.unobserve(t),cancelAnimationFrame(h),h=requestAnimationFrame((()=>{var e;null==(e=f)||e.observe(t)}))),n()})),c&&!l&&f.observe(c),f.observe(t));let m=l?Ie(e):null;return l&&function t(){const o=Ie(e);!m||o.x===m.x&&o.y===m.y&&o.width===m.width&&o.height===m.height||n();m=o,p=requestAnimationFrame(t)}(),n(),()=>{var e;u.forEach((e=>{r&&e.removeEventListener("scroll",n),i&&e.removeEventListener("resize",n)})),null==d||d(),null==(e=f)||e.disconnect(),f=null,l&&cancelAnimationFrame(p)}}const je=function(e){return void 0===e&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:o,placement:r}=t,{mainAxis:i=!0,crossAxis:a=!1,limiter:s={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...l}=q(e,t),c={x:n,y:o},u=await te(t,l),d=Y(W(r)),p=G(d);let h=c[p],f=c[d];if(i){const e="y"===p?"bottom":"right";h=z(h+u["y"===p?"top":"left"],h,h-u[e])}if(a){const e="y"===d?"bottom":"right";f=z(f+u["y"===d?"top":"left"],f,f-u[e])}const m=s.fn({...t,[p]:h,[d]:f});return{...m,data:{x:m.x-n,y:m.y-o}}}}},Fe=function(e){return void 0===e&&(e={}),{name:"flip",options:e,async fn(t){var n,o;const{placement:r,middlewareData:i,rects:a,initialPlacement:s,platform:l,elements:c}=t,{mainAxis:u=!0,crossAxis:d=!0,fallbackPlacements:p,fallbackStrategy:h="bestFit",fallbackAxisSideDirection:f="none",flipAlignment:m=!0,...g}=q(e,t);if(null!=(n=i.arrow)&&n.alignmentOffset)return{};const v=W(r),y=W(s)===s,b=await(null==l.isRTL?void 0:l.isRTL(c.floating)),w=p||(y||!m?[Z(s)]:function(e){const t=Z(e);return[K(e),t,K(t)]}(s));p||"none"===f||w.push(...function(e,t,n,o){const r=V(e);let i=function(e,t,n){const o=["left","right"],r=["right","left"],i=["top","bottom"],a=["bottom","top"];switch(e){case"top":case"bottom":return n?t?r:o:t?o:r;case"left":case"right":return t?i:a;default:return[]}}(W(e),"start"===n,o);return r&&(i=i.map((e=>e+"-"+r)),t&&(i=i.concat(i.map(K)))),i}(s,m,f,b));const k=[s,...w],x=await te(t,g),S=[];let C=(null==(o=i.flip)?void 0:o.overflows)||[];if(u&&S.push(x[v]),d){const e=function(e,t,n){void 0===n&&(n=!1);const o=V(e),r=J(e),i=X(r);let a="x"===r?o===(n?"end":"start")?"right":"left":"start"===o?"bottom":"top";return t.reference[i]>t.floating[i]&&(a=Z(a)),[a,Z(a)]}(r,a,b);S.push(x[e[0]],x[e[1]])}if(C=[...C,{placement:r,overflows:S}],!S.every((e=>e<=0))){var I,E;const e=((null==(I=i.flip)?void 0:I.index)||0)+1,t=k[e];if(t)return{data:{index:e,overflows:C},reset:{placement:t}};let n=null==(E=C.filter((e=>e.overflows[0]<=0)).sort(((e,t)=>e.overflows[1]-t.overflows[1]))[0])?void 0:E.placement;if(!n)switch(h){case"bestFit":{var T;const e=null==(T=C.map((e=>[e.placement,e.overflows.filter((e=>e>0)).reduce(((e,t)=>e+t),0)])).sort(((e,t)=>e[1]-t[1]))[0])?void 0:T[0];e&&(n=e);break}case"initialPlacement":n=s}if(r!==n)return{reset:{placement:n}}}return{}}}},Be=e=>({name:"arrow",options:e,async fn(t){const{x:n,y:o,placement:r,rects:i,platform:a,elements:s,middlewareData:l}=t,{element:c,padding:u=0}=q(e,t)||{};if(null==c)return{};const d=$(u),p={x:n,y:o},h=J(r),f=X(h),m=await a.getDimensions(c),g="y"===h,v=g?"top":"left",y=g?"bottom":"right",b=g?"clientHeight":"clientWidth",w=i.reference[f]+i.reference[h]-p[h]-i.floating[f],k=p[h]-i.reference[h],x=await(null==a.getOffsetParent?void 0:a.getOffsetParent(c));let S=x?x[b]:0;S&&await(null==a.isElement?void 0:a.isElement(x))||(S=s.floating[b]||i.floating[f]);const C=w/2-k/2,I=S/2-m[f]/2-1,E=N(d[v],I),T=N(d[y],I),O=E,L=S-m[f]-T,A=S/2-m[f]/2+C,M=z(O,A,L),R=!l.arrow&&null!=V(r)&&A!==M&&i.reference[f]/2-(A{const o=new Map,r={platform:De,...n},i={...r.platform,_c:o};return(async(e,t,n)=>{const{placement:o="bottom",strategy:r="absolute",middleware:i=[],platform:a}=n,s=i.filter(Boolean),l=await(null==a.isRTL?void 0:a.isRTL(t));let c=await a.getElementRects({reference:e,floating:t,strategy:r}),{x:u,y:d}=ee(c,o,l),p=o,h={},f=0;for(let m=0;me.length)&&(t=e.length);for(var n=0,o=new Array(t);n'):""),i.appendChild(a),t.repositionHotspot(e,n),r=a,t.elementToTooltipMap.set(e,n)}else r=e;var s=t.createTooltip(r,n.html,n);t.elementToFloatingUIMap.set(e,s)}}})),Ve(this,"updateFilteredTooltips",(function(){t.filteredTooltips=t.getFilteredTooltips(),t.checkForTooltips()})),Ve(this,"getFilteredTooltips",(function(){if(!t.tooltips)return[];var e=window.location.href;return t.tooltips.filter((function(t){return!t.page||0===t.page.length||!!Ue(e,t.page,t.pageType)}))})),Ve(this,"checkForTooltips",(function(){for(var e=0;e0&&this.filteredTooltips.forEach((function(n){n.selector&&e.matches(n.selector)&&t.linkTooltip(e,n)}))}},{key:"start",value:function(){var e=this,t=this;if(window){var n,o,r,i=(n=t.updateHotspotPositions.bind(t),o=250,r=null,function(){if(!r){var e=this,t=arguments;r=setTimeout((function(){n.call.apply(n,[e].concat(ze(t))),r=null}),o)}});window.addEventListener("resize",i),window.requestAnimationFrame((function(){e.observer=new MutationObserver((function(n){t.lastUrl!==window.location.href&&(t.lastUrl=window.location.href,t.filteredTooltips=t.getFilteredTooltips()),n.forEach((function(n){if("attributes"===n.type){var o=n.target;o.nodeType===Node.ELEMENT_NODE&&(o.querySelector("[data-gleap-tooltip-hotspot]")||o.hasAttribute("data-gleap-tooltip-mode")||o.hasAttribute("data-gleap-tooltip"))&&t.updateHotspotPositions()}n.addedNodes.forEach((function(e){e.nodeType===Node.ELEMENT_NODE&&t.processNodeInsertion(e)})),n.removedNodes.forEach((function(t){if(t.nodeType===Node.ELEMENT_NODE&&e.elementToFloatingUIMap.has(t)){var n=e.elementToFloatingUIMap.get(t);n&&(n.tooltip&&n.tooltip.remove(),n.cleanup(),e.elementToFloatingUIMap.delete(t))}e.elementToTooltipMap.has(t)&&e.elementToTooltipMap.delete(t)}))}))})),e.observer.observe(document.body,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["style","class"]})}))}}},{key:"updateHotspotPositions",value:function(){var e=this;document.querySelectorAll("[data-gleap-tooltip-mode='hotspot']").forEach((function(t){var n=e.elementToTooltipMap.get(t);n&&e.repositionHotspot(t,n)}))}},{key:"createTooltip",value:function(e,t,n){var o=document.createElement("div");o.className="gleap-tooltip",o.innerHTML='
\n '.concat(t,'\n
\n \n \n \n
\n
'),document.body.appendChild(o);var r,i=o.querySelector(".gleap-tooltip-arrow"),a=Ne(e,o,(function(){_e(e,o,{placement:"left"===n.posX?"left":"right",middleware:[ne(10),Fe(),je(),Be({element:i})]}).then((function(e){var t=e.x,n=e.y,r=e.middlewareData,a=e.placement;try{if(Object.assign(o.style,{left:"".concat(t,"px"),top:"".concat(n,"px")}),r.arrow){var s={left:"",top:"",transform:""};null!=r.arrow.x&&(s.left="".concat(r.arrow.x,"px"),"bottom"===a?(s.transform="translateY(-7px) rotate(180deg)",s.top="".concat(-20,"px")):"top"===a&&(s.transform="translateY(7px) rotate(0deg)",s.top="100%")),null!=r.arrow.y&&(s.top="".concat(r.arrow.y,"px"),"right"===a?(s.transform="translateX(-7px) rotate(90deg)",s.left="".concat(-20,"px")):"left"===a&&(s.transform="translateX(7px) rotate(270deg)",s.left="100%")),Object.assign(i.style,s)}}catch(l){}}))}));function s(){clearTimeout(r),o.style.visibility="visible",o.style.opacity="1",o.style.pointerEvents="auto"}function l(){r=setTimeout((function(){o.style.opacity="0",setTimeout((function(){o.style.visibility="hidden",o.style.pointerEvents="none"}),200)}),500)}return e.addEventListener("mouseenter",s),e.addEventListener("mouseleave",l),o.addEventListener("mouseenter",s),o.addEventListener("mouseleave",l),{cleanup:a,tooltip:o}}},{key:"canEmbed",value:function(e){var t=new Set(["area","base","br","embed","hr","img","input","source","track","wbr","canvas"]);return e&&!t.has(e.tagName.toLowerCase())}},{key:"destroy",value:function(){this.observer&&(this.observer.disconnect(),this.observer=null),this.resizeListener&&(window.removeEventListener("resize",this.resizeListener),this.resizeListener=null),document.querySelectorAll(".gleap-tooltip").forEach((function(e){return e.remove()})),document.querySelectorAll("[data-gleap-tooltip-anchor]").forEach((function(e){return e.remove()})),document.querySelectorAll("[data-gleap-tooltip-hotspot]").forEach((function(e){return e.remove()})),document.querySelectorAll("[data-gleap-tooltip]").forEach((function(e){return e.removeAttribute("data-gleap-tooltip")})),document.querySelectorAll("[data-gleap-tooltip-mode]").forEach((function(e){return e.removeAttribute("data-gleap-tooltip-mode")})),this.elementToFloatingUIMap=new WeakMap,this.elementToTooltipMap=new WeakMap,this.tooltips=[],this.filteredTooltips=[]}},{key:"repositionHotspot",value:function(e,t){if(e&&t){var n=e.getAttribute("data-gleap-tooltip");if(n){var o=document.querySelector('[data-gleap-tooltip-hotspot="'.concat(n,'"]'));if(o){t.posX||(t.posX="right"),t.posY||(t.posY="center"),t.offsetX||(t.offsetX=4),t.offsetY||(t.offsetY=0);var r=e.getBoundingClientRect();try{var i=document.createRange();i.selectNodeContents(e);var a=window.getComputedStyle(e),s=i.getBoundingClientRect().width+parseFloat(a.paddingLeft);s0&&void 0!==arguments[0]?arguments[0]:0,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];t.session&&t.session.gleapHash&&Tn.notifyEvent("unregister-pushmessage-group","gleapuser-".concat(t.session.gleapHash));try{I("session-".concat(t.sdkKey),null)}catch(r){}if(t.useCookies)try{!function(e){try{var t=S(window.location.host.split(":")[0]);document.cookie=e+"=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT; Domain="+t}catch(r){}}("session-".concat(t.sdkKey))}catch(r){}if(t.ready=!1,t.session={gleapId:null,gleapHash:null,name:"",email:"",userId:"",phone:"",value:0},Zt.getInstance().sendMessage({name:"session-cleared"},!0),jh.getInstance().clearAllNotifications(!1),jh.getInstance().setNotificationCount(0),qh.getInstance().removeBannerUI(),Kh.getInstance().hideModal(),n&&!isNaN(e)){var o=10*Math.pow(e,2);setTimeout((function(){t.startSession(e+1)}),1e3*o)}})),$e(this,"validateSession",(function(e){var n;if(e&&e.gleapId){var o=!1;(null===(n=t.session)||void 0===n?void 0:n.gleapId)!==(null==e?void 0:e.gleapId)&&(o=!0),t.session&&t.session.gleapHash&&Tn.notifyEvent("unregister-pushmessage-group","gleapuser-".concat(t.session.gleapHash)),I("session-".concat(t.sdkKey),e),t.useCookies&&function(e,t,n){try{var o="";if(n){var r=new Date;r.setTime(r.getTime()+24*n*60*60*1e3),o="; expires="+r.toUTCString()}var i=S(window.location.host.split(":")[0]);document.cookie=e+"="+(t||"")+o+"; path=/; domain="+i}catch(a){}}("session-".concat(t.sdkKey),encodeURIComponent(JSON.stringify(e)),365),t.session=e,t.ready=!0,t.session&&t.session.gleapHash&&Tn.notifyEvent("register-pushmessage-group","gleapuser-".concat(t.session.gleapHash)),o&&(setTimeout((function(){D.getInstance().clearCache(),it.getInstance().restart();var e=Xe.getInstance();if(e){try{e.destroy()}catch(t){}e.load()}}),0),"function"==typeof window.dispatchEvent&&window.dispatchEvent(new CustomEvent("session-updated"))),t.notifySessionReady()}})),$e(this,"startSession",(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;try{if(t.useCookies){var n=function(e){try{for(var t=e+"=",n=document.cookie.split(";"),o=0;o0)){var r=C("session-".concat(t.sdkKey));r&&t.validateSession(r)}var i=t,a=new XMLHttpRequest;a.open("POST",i.apiUrl+"/sessions"),a.setRequestHeader("Content-Type","application/json;charset=UTF-8"),a.setRequestHeader("Api-Token",i.sdkKey);try{t.session&&t.session.gleapId&&t.session.gleapHash&&(a.setRequestHeader("Gleap-Id",t.session.gleapId),a.setRequestHeader("Gleap-Hash",t.session.gleapHash))}catch(s){}a.onreadystatechange=function(t){if(4===a.readyState)if(200===a.status||201===a.status)try{var n=JSON.parse(a.responseText);i.validateSession(n)}catch(s){}else 429!==a.status&&i.clearSession(e,!0)},a.send(JSON.stringify({lang:kh.getInstance().getActiveLanguage()}))})),$e(this,"checkIfSessionNeedsUpdate",(function(e,n){if(!t.session||!t.session.userId||!e)return!0;try{if(t.session.userId.toString()!==e.toString())return!0}catch(o){}return t.checkIfSessionDataNeedsUpdate(n)})),$e(this,"checkIfSessionDataNeedsUpdate",(function(e){if(e)for(var n=Object.keys(e),o=0;o0)for(var e=0;e2)&&0!==t.streamedEventArray.length&&t.socket&&t.socket.readyState===t.socket.OPEN){var e=t;t.streamingEvents=!0;var n=new XMLHttpRequest;n.open("POST",et.getInstance().apiUrl+"/sessions/ping"),n.setRequestHeader("Content-Type","application/json;charset=UTF-8"),et.getInstance().injectSession(n),n.onerror=function(){e.errorCount++,e.streamingEvents=!1},n.onreadystatechange=function(t){4===n.readyState&&(200===n.status||201===n.status?e.errorCount=0:e.errorCount++,e.streamingEvents=!1)};var o=nn.getInstance().getSessionDuration();n.send(JSON.stringify({time:o,events:t.streamedEventArray,opened:Zt.getInstance().isOpened(),type:"js",sdkVersion:"14.8.11",ws:!0})),t.streamedEventArray=[]}})),this.handleOpenBound=this.handleOpen.bind(this),this.handleErrorBound=this.handleError.bind(this),this.handleMessageBound=this.handleMessage.bind(this),this.handleCloseBound=this.handleClose.bind(this)}var t,n,o;return t=e,o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],(n=[{key:"cleanupWebSocket",value:function(){this.connectionTimeout&&(clearTimeout(this.connectionTimeout),this.connectionTimeout=null),this.pingWS&&clearInterval(this.pingWS),this.socket&&(this.socket.removeEventListener("open",this.handleOpenBound),this.socket.removeEventListener("error",this.handleErrorBound),this.socket.removeEventListener("message",this.handleMessageBound),this.socket.removeEventListener("close",this.handleCloseBound),this.socket.close(),this.socket=null)}},{key:"initWebSocket",value:function(){this.cleanupWebSocket(),this.connectedWebSocketGleapId=et.getInstance().session.gleapId,et.getInstance().session&&et.getInstance().sdkKey&&(this.socket=new WebSocket("".concat(et.getInstance().wsApiUrl,"?gleapId=").concat(et.getInstance().session.gleapId,"&gleapHash=").concat(et.getInstance().session.gleapHash,"&apiKey=").concat(et.getInstance().sdkKey,"&sdkVersion=").concat("14.8.11")),this.socket.addEventListener("open",this.handleOpenBound),this.socket.addEventListener("message",this.handleMessageBound),this.socket.addEventListener("error",this.handleErrorBound),this.socket.addEventListener("close",this.handleCloseBound))}},{key:"handleOpen",value:function(e){var t=this;this.pingWS=setInterval((function(){t.socket.readyState===t.socket.OPEN&&(t.socket.send("PING"),t.socket.send(9))}),1e4),this.connectionTimeout&&(clearTimeout(this.connectionTimeout),this.connectionTimeout=null)}},{key:"handleMessage",value:function(e){this.processMessage(JSON.parse(e.data))}},{key:"handleError",value:function(e){}},{key:"handleClose",value:function(e){var t=this;setTimeout((function(){t.initWebSocket()}),5e3)}},{key:"processMessage",value:function(e){try{if("update"===e.name){var t=e.data,n=t.a,o=t.u,r=Zt.getInstance().isOpened();if(n){var i=["banner","modal"],a=n.filter((function(e){var t;return!r||i.includes(null==e||null===(t=e.actionType)||void 0===t?void 0:t.toLowerCase())}));Wm.getInstance().performActions(a)}null!=o&&jh.getInstance().setNotificationCount(o)}"checklist"===e.name&&null!=e&&e.data&&window&&"function"==typeof window.dispatchEvent&&window.dispatchEvent(new CustomEvent("checkListUpdate",{detail:e.data}))}catch(s){}}},{key:"getEventArray",value:function(){return this.eventArray}},{key:"stop",value:function(){this.cleanupMainLoop()}},{key:"resetErrorCountLoop",value:function(){var e=this;setInterval((function(){e.errorCount=0}),6e4)}},{key:"cleanupMainLoop",value:function(){this.mainLoopTimeout&&(clearInterval(this.mainLoopTimeout),this.mainLoopTimeout=null)}},{key:"restart",value:function(){this.connectedWebSocketGleapId!==et.getInstance().session.gleapId&&this.initWebSocket(),this.cleanupMainLoop(),this.trackInitialEvents(),this.runEventStreamLoop()}},{key:"start",value:function(){this.startPageListener(),this.resetErrorCountLoop()}},{key:"trackInitialEvents",value:function(){e.getInstance().logEvent("sessionStarted"),e.getInstance().logCurrentPage()}},{key:"logCurrentPage",value:function(){if(!Wm.getInstance().disablePageTracking){var e=window.location.href;e&&e!==this.lastUrl&&(this.lastUrl=e,this.logEvent("pageView",{page:e}))}}},{key:"startPageListener",value:function(){var e=this;setInterval((function(){e.logCurrentPage()}),1e3)}},{key:"logEvent",value:function(e,t){var n={name:e,date:new Date};t&&(n.data=k(t)),this.eventArray.push(n),this.streamedEventArray.push(n),this.eventArray.length>this.eventMaxLength&&this.eventArray.shift(),this.streamedEventArray.length>this.eventMaxLength&&this.streamedEventArray.shift()}}])&&nt(t.prototype,n),o&&nt(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function at(e){return at="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},at(e)}function st(e,t){for(var n=0;n0)for(var e=0;e=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var l=o.call(a,"catchLoc"),c=o.call(a,"finallyLoc");if(l&&c){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&o.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),L(n),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var o=n.completion;if("throw"===o.type){var r=o.arg;L(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,o){return this.delegate={iterator:M(t),resultName:n,nextLoc:o},"next"===this.method&&(this.arg=e),g}},t}function ft(e,t,n,o,r,i,a){try{var s=e[i](a),l=s.value}catch(c){return void n(c)}s.done?t(l):Promise.resolve(l).then(o,r)}function mt(e){return function(){var t=this,n=arguments;return new Promise((function(o,r){var i=e.apply(t,n);function a(e){ft(i,o,r,a,s,"next",e)}function s(e){ft(i,o,r,a,s,"throw",e)}a(void 0)}))}}var gt=function(e){var t="",n=window.document.doctype;if(n&&(t=""),e&&e.childNodes&&e.childNodes.length>0)for(var o=0;o1?t-1:0),r=1;r0||t.scrollLeft>0)&&(s.setAttribute("bb-scrollpos",!0),s.setAttribute("bb-scrolltop",t.scrollTop),s.setAttribute("bb-scrollleft",t.scrollLeft)),"SELECT"!==d&&"TEXTAREA"!==d&&"INPUT"!==d||(h=t.value,("value"===t.getAttribute("gleap-ignore")||t.classList.contains("gl-mask"))&&(h=new Array(h.length+1).join("*")),s.setAttribute("bb-data-value",h),"checkbox"!==t.type&&"radio"!==t.type||!t.checked||s.setAttribute("bb-data-checked",!0))),r.appendChild(s),!t.shadowRoot){e.next=29;break}return f=n,n++,e.next=27,a(t.shadowRoot.firstChild,s,f);case 27:Ct(t.shadowRoot,s,f),void 0!==s.setAttribute&&s.setAttribute("bb-shadow-parent",f);case 29:return e.next=31,a(t.firstChild,s);case 31:case"end":return e.stop()}}),e,null,[[7,17]])})));return function(t,n,o){return e.apply(this,arguments)}}(),r=document.createDocumentFragment(),e.next=5,o(t,r);case 5:return(i=r.querySelector("head"))||(i=r),Ct(window.document,i),e.abrupt("return",r);case 9:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),Tt=function(e){return new Promise(function(){var t=mt(ht().mark((function t(n,o){var r,i,a,s,l,c,u,d,p,h,f,m,g,v,y;return ht().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:for(r=window.document.querySelectorAll("style, link"),i=0;i0){for(c=l.childNodes;c.length>0;)l.parentNode.insertBefore(c[0],l);l.remove()}for(u=a.querySelectorAll("script, noscript"),i=0;i=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var l=o.call(a,"catchLoc"),c=o.call(a,"finallyLoc");if(l&&c){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&o.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),L(n),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var o=n.completion;if("throw"===o.type){var r=o.arg;L(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,o){return this.delegate={iterator:M(t),resultName:n,nextLoc:o},"next"===this.method&&(this.arg=e),g}},t}function At(e,t,n,o,r,i,a){try{var s=e[i](a),l=s.value}catch(c){return void n(c)}s.done?t(l):Promise.resolve(l).then(o,r)}function Mt(e){return function(){var t=this,n=arguments;return new Promise((function(o,r){var i=e.apply(t,n);function a(e){At(i,o,r,a,s,"next",e)}function s(e){At(i,o,r,a,s,"throw",e)}a(void 0)}))}}function Rt(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return Pt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Pt(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0,r=function(){};return{s:r,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){s=!0,i=e},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw i}}}}function Pt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n0?t[0]:null}},{key:"getFirstAudioTrack",value:function(e){if(!e)return null;var t=e.getAudioTracks();return t.length>0?t[0]:null}},{key:"startScreenRecording",value:(a=Mt(Lt().mark((function t(){var n,o;return Lt().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia&&!this.isRecording){t.next=4;break}return this.available=!1,this.rerender(),t.abrupt("return");case 4:return t.prev=4,t.next=7,navigator.mediaDevices.getDisplayMedia({video:{width:{ideal:Math.min(window.screen.width,e.MAX_WIDTH)},height:{ideal:Math.min(window.screen.height,e.MAX_HEIGHT)},frameRate:{ideal:e.IDEAL_FRAME_RATE,max:e.MAX_FRAME_RATE},displaySurface:"monitor"},audio:!1,selfBrowserSurface:"include"});case 7:if(n=t.sent,this._displayStream=n,this._displayVideoTrack=this.getFirstVideoTrack(n),this.audioMuted){t.next=15;break}return t.next=13,this.startAudioRecording();case 13:t.next=19;break;case 15:this.audioAvailable=!1,o=this.createMediaStream([this._displayVideoTrack]),this.stream=o,this.handleRecord({stream:o});case 19:this.rerender(),t.next=26;break;case 22:t.prev=22,t.t0=t.catch(4),window.alert(this.permissionErrorText),this.rerender();case 26:case"end":return t.stop()}}),t,this,[[4,22]])}))),function(){return a.apply(this,arguments)})},{key:"stopScreenRecording",value:function(){if(this.mediaRecorder&&this.stream&&this.isRecording){this.recordingTimer&&(clearInterval(this.recordingTimer),this.recordingTimer=null);try{this.mediaRecorder.stop()}catch(e){}this.stopStreamTracks(this.stream),this._displayStream&&(this.stopStreamTracks(this._displayStream),this._displayStream=null),this._micStream&&(this.stopStreamTracks(this._micStream),this._micStream=null),this._displayVideoTrack=null,this.rerender()}}},{key:"startAudioRecording",value:(i=Mt(Lt().mark((function e(){var t,n,o,r;return Lt().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._displayVideoTrack){e.next=2;break}return e.abrupt("return");case 2:return e.prev=2,e.next=5,navigator.mediaDevices.getUserMedia({audio:{echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0},video:!1});case 5:t=e.sent,this._micStream=t,n=this.getFirstAudioTrack(t),this.audioMuted=!1,this.audioAvailable=!!n,o=this.createMediaStream([this._displayVideoTrack,n]),this.stream=o,this.handleRecord({stream:o}),this.rerender(),e.next=23;break;case 16:e.prev=16,e.t0=e.catch(2),this.audioAvailable=!1,r=this.createMediaStream([this._displayVideoTrack]),this.stream=r,this.handleRecord({stream:r}),this.rerender();case 23:case"end":return e.stop()}}),e,this,[[2,16]])}))),function(){return i.apply(this,arguments)})},{key:"toggleAudio",value:function(){if(this.audioMuted=!this.audioMuted,this.rerender(),this.stream)for(var e=this.stream.getAudioTracks(),t=0;t0?i.innerHTML=o.formatTime(e):(i.innerHTML="2:00",o.stopScreenRecording()):e<=0&&o.stopScreenRecording()}),e.TIMER_UPDATE_INTERVAL),this.mediaRecorder.ondataavailable=function(e){e.data&&e.data.size>0&&r.push(e.data)};var a=this.getFirstVideoTrack(n);a&&(a.onended=function(){o.prepareRecording(r)}),this.mediaRecorder.onstop=function(){o.prepareRecording(r)},this.mediaRecorder.start(e.CHUNK_INTERVAL),o.rerender()}},{key:"prepareRecording",value:function(t){var n=this.getSupportedMimeType(),o=new Blob(t,{type:n}),r=n.includes("mp4")?"mp4":"webm";this.file=new File([o],"screen-recording.".concat(r),{type:n});var i=document.querySelector(e.SELECTORS.PREVIEW_VIDEO);i&&(i.src=URL.createObjectURL(o),this.audioAvailable=this.stream?this.stream.getAudioTracks().length>0:this.audioAvailable,this.isRecording=!1,this.rerender())}}],o=[{key:"uploadScreenRecording",value:(r=Mt(Lt().mark((function e(t){return Lt().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(null!=t){e.next=2;break}return e.abrupt("return",null);case 2:return e.abrupt("return",new Promise((function(e,n){var o=new XMLHttpRequest;o.open("POST",et.getInstance().apiUrl+"/uploads/sdk"),et.getInstance().injectSession(o);var r=new FormData;r.append("file",t),o.onerror=function(){n(new Error("Network error during file upload"))},o.onreadystatechange=function(){4==o.readyState&&(200==o.status?e(JSON.parse(o.response).fileUrl):n(new Error("Upload failed with status ".concat(o.status))))},o.send(r)})));case 3:case"end":return e.stop()}}),e)}))),function(e){return r.apply(this,arguments)})}],n&&Dt(t.prototype,n),o&&Dt(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Bt(e){return Bt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Bt(e)}function _t(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Ut(e){for(var t=1;t0&&(e.tags=t),this.excludeData)for(var n=Object.keys(this.excludeData),o=0;oe.length)&&(t=e.length);for(var n=0,o=new Array(t);n0)if(t){var n=window.open(e,"_blank");n&&n.focus()}else window.location.href=e})),Jt(this,"autoWhiteListCookieManager",(function(){window&&window.cmp_block_ignoredomains&&window.cmp_block_ignoredomains.concat(["messenger-app.gleap.io"])})),Jt(this,"injectFrame",(function(){t.injectedFrame||(t.injectedFrame=!0,t.autoWhiteListCookieManager(),E((function(){dt.getInstance().onConfigLoaded((function(){dt.getInstance().applyStylesFromConfig();var e=document.createElement("div");e.className="gleap-frame-container gleap-frame-container--hidden gl-block",e.innerHTML='
'),document.body.appendChild(e),t.gleapFrameContainer=e,t.gleapFrame=document.querySelector(".gleap-frame"),t.updateFrameStyle(),"widget"===t.appMode&&t.showFrameContainer(!0)}))})))})),Jt(this,"showImage",(function(e){E((function(){var t=document.createElement("div");t.className="gleap-image-view",t.innerHTML='
\n \n
'),document.body.appendChild(t);var n=function(){t.remove()};t.querySelector(".gleap-image-view-close").addEventListener("click",(function(){n()})),t.addEventListener("click",(function(e){e.target===t&&n()}))}))})),Jt(this,"updateFrameStyle",(function(){if(t.gleapFrameContainer){for(var e="gleap-frame-container--survey",n="gleap-frame-container--extended",o="gleap-frame-container--survey-full",r="gleap-frame-container--classic",i="gleap-frame-container--classic-left",s="gleap-frame-container--modern-left",l="gleap-frame-container--no-button",c=[r,i,n,s,l,e,o],u=0;u0&&void 0!==arguments[0]&&arguments[0];"survey_web"!==this.appMode&&(this.hideMarkerManager(),this.gleapFrameContainer&&(this.gleapFrameContainer.classList.add("gleap-frame-container--hidden"),this.gleapFrameContainer.classList.remove("gleap-frame-container--animate")),e&&this.sendMessage({name:"reset-routes",data:{}}),this.widgetOpened=!1,this.updateWidgetStatus(),a.getInstance().updateFeedbackButtonState(),Tn.notifyEvent("close"),jh.getInstance().reloadNotificationsFromCache(),this.unregisterEscListener(),"undefined"!=typeof window&&void 0!==window.focus&&window.focus())}},{key:"sendMessage",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];try{this.gleapFrame=document.querySelector(".gleap-frame"),this.comReady&&this.gleapFrame&&this.gleapFrame.contentWindow?this.gleapFrame.contentWindow.postMessage(JSON.stringify(e),"*"):t&&this.queue.push(e)}catch(n){}}},{key:"sendSessionUpdate",value:function(){this.sendMessage({name:"session-update",data:{sessionData:et.getInstance().getSession(),apiUrl:et.getInstance().apiUrl,sdkKey:et.getInstance().sdkKey}})}},{key:"sendConfigUpdate",value:function(){this.comReady&&(this.sendMessage({name:"config-update",data:{config:dt.getInstance().getFlowConfig(),aiTools:dt.getInstance().getAiTools(),overrideLanguage:kh.getInstance().getOverrideLanguage()}}),this.updateFrameStyle())}},{key:"showDrawingScreen",value:function(e){var t=this;this.hideWidget(),this.markerManager=new gh(e),this.markerManager.show((function(e){e||t.hideMarkerManager(),t.showWidget()}))}},{key:"workThroughQueue",value:function(){var e=Gt(this.queue);this.queue=[];for(var t=0;t0&&(n.tags=o),e.sendMessage({name:"collect-ticket-data",data:n})}if("height-update"===t.name){e.frameHeight=t.data;var r=document.querySelector(".gleap-frame-container-inner");"survey"!==e.appMode&&"survey_full"!==e.appMode&&"survey_web"!==e.appMode||!r||(r.style.maxHeight="".concat(e.frameHeight,"px"))}if("notify-event"===t.name&&Tn.notifyEvent(t.data.type,t.data.data),"cleanup-drawings"===t.name&&e.hideMarkerManager(),"open-url"===t.name){var i=t.data,a=!!t.newTab;e.urlHandler(i,a)}var s;if("start-product-tour"===t.name&&Wm.startProductTour(null===(s=t.data)||void 0===s?void 0:s.tourId,!0),"run-custom-action"===t.name&&Dn.triggerCustomAction(t.data,{shareToken:t.shareToken}),"close-widget"===t.name&&e.hideWidget(),"tool-execution"===t.name&&Tn.notifyEvent("tool-execution",t.data),"send-feedback"===t.name){var l=t.data.formData,c=t.data.action,u=t.data.outboundId,d=t.data.spamToken;new Wt(c.feedbackType,"MEDIUM",l,!1,c.excludeData,u,d).sendFeedback().then((function(t){if(e.sendMessage({name:"feedback-sent",data:t}),Tn.notifyEvent("feedback-sent",l),u&&u.length>0){Tn.notifyEvent("outbound-sent",{outboundId:u,outbound:c,formData:l});try{delete l.reportedBy}catch(n){}Wm.trackEvent("outbound-".concat(u,"-submitted"),l)}})).catch((function(t){e.sendMessage({name:"feedback-sending-failed",data:"Something went wrong, please try again."}),Tn.notifyEvent("error-while-sending")}))}"start-screen-drawing"===t.name&&e.showDrawingScreen(t.data)})),window.addEventListener("message",(function(t){if(t.origin===e.frameUrl||t.origin===qh.getInstance().bannerUrl)try{for(var n=JSON.parse(t.data),o=0;o1&&void 0!==arguments[1]?arguments[1]:"INFO";!e||e.length<=0||(this.logArray.push({log:x(e,1e3),date:new Date,priority:t}),this.logArray.length>this.logMaxLength&&this.logArray.shift())}},{key:"addLogWithArgs",value:function(e,t){if(e&&!(e.length<=0)){var n="";try{for(var o=0;o1&&void 0!==arguments[1])||arguments[1],n=x(e.innerText||"",40).replace(/(\r\n|\n|\r)/gm,"").replace(/ +(?= )/g,""),o="",r="";if(void 0!==e.getAttribute){var i=e.getAttribute("id");i&&(o=' id="'.concat(i,'"'));var a=e.getAttribute("class");a&&(r=' class="'.concat(a,'"'))}var s=(e.tagName||"").toLowerCase(),l="<",c=">";return t||(l="[",c="]"),"".concat(l).concat(s).concat(o).concat(r).concat(c).concat(n).concat(l,"/").concat(s).concat(c)}(e.target),"CLICK")}}))}}],o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],n&&pn(t.prototype,n),o&&pn(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function yn(e){return yn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},yn(e)}function bn(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{};if("flow-started"===e){var n=Wm.getInstance();n.setGlobalDataItem("webReplay",null),n.setGlobalDataItem("screenRecordingData",null),n.takeCurrentReplay()}var o=this.getInstance().eventListeners[e];if(o)for(var r=0;r((e,t,n)=>t in e?jn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,"symbol"!=typeof t?t+"":t,n),Bn=Object.defineProperty,_n=(e,t,n)=>((e,t,n)=>t in e?Bn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,"symbol"!=typeof t?t+"":t,n),Un=(e=>(e[e.Document=0]="Document",e[e.DocumentType=1]="DocumentType",e[e.Element=2]="Element",e[e.Text=3]="Text",e[e.CDATA=4]="CDATA",e[e.Comment=5]="Comment",e))(Un||{});const Hn={Node:["childNodes","parentNode","parentElement","textContent"],ShadowRoot:["host","styleSheets"],Element:["shadowRoot","querySelector","querySelectorAll"],MutationObserver:[]},zn={Node:["contains","getRootNode"],ShadowRoot:["getSelection"],Element:[],MutationObserver:["constructor"]},qn={},Wn=()=>!!globalThis.Zone;function Vn(e){if(qn[e])return qn[e];const t=globalThis[e],n=t.prototype,o=e in Hn?Hn[e]:void 0,r=Boolean(o&&o.every((e=>{var t,o;return Boolean(null==(o=null==(t=Object.getOwnPropertyDescriptor(n,e))?void 0:t.get)?void 0:o.toString().includes("[native code]"))}))),i=e in zn?zn[e]:void 0,a=Boolean(i&&i.every((e=>{var t;return"function"==typeof n[e]&&(null==(t=n[e])?void 0:t.toString().includes("[native code]"))})));if(r&&a&&!Wn())return qn[e]=t.prototype,t.prototype;try{const o=document.createElement("iframe");document.body.appendChild(o);const r=o.contentWindow;if(!r)return t.prototype;const i=r[e].prototype;return document.body.removeChild(o),i?qn[e]=i:n}catch{return n}}const Gn={};function Xn(e,t,n){var o;const r=`${e}.${String(n)}`;if(Gn[r])return Gn[r].call(t);const i=Vn(e),a=null==(o=Object.getOwnPropertyDescriptor(i,n))?void 0:o.get;return a?(Gn[r]=a,a.call(t)):t[n]}const Yn={};function Jn(e,t,n){const o=`${e}.${String(n)}`;if(Yn[o])return Yn[o].bind(t);const r=Vn(e)[n];return"function"!=typeof r?t[n]:(Yn[o]=r,r.bind(t))}const Kn={childNodes:function(e){return Xn("Node",e,"childNodes")},parentNode:function(e){return Xn("Node",e,"parentNode")},parentElement:function(e){return Xn("Node",e,"parentElement")},textContent:function(e){return Xn("Node",e,"textContent")},contains:function(e,t){return Jn("Node",e,"contains")(t)},getRootNode:function(e){return Jn("Node",e,"getRootNode")()},host:function(e){return e&&"host"in e?Xn("ShadowRoot",e,"host"):null},styleSheets:function(e){return e.styleSheets},shadowRoot:function(e){return e&&"shadowRoot"in e?Xn("Element",e,"shadowRoot"):null},querySelector:function(e,t){return Xn("Element",e,"querySelector")(t)},querySelectorAll:function(e,t){return Xn("Element",e,"querySelectorAll")(t)},mutationObserver:function(){return Vn("MutationObserver").constructor}};function Zn(e){return e.nodeType===e.ELEMENT_NODE}function $n(e){const t=e&&"host"in e&&"mode"in e&&Kn.host(e)||null;return Boolean(t&&"shadowRoot"in t&&Kn.shadowRoot(t)===e)}function Qn(e){return"[object ShadowRoot]"===Object.prototype.toString.call(e)}function eo(e){try{const n=e.rules||e.cssRules;if(!n)return null;let o=e.href;!o&&e.ownerNode&&e.ownerNode.ownerDocument&&(o=e.ownerNode.ownerDocument.location.href);const r=Array.from(n,(e=>to(e,o))).join("");return(t=r).includes(" background-clip: text;")&&!t.includes(" -webkit-background-clip: text;")&&(t=t.replace(/\sbackground-clip:\s*text;/g," -webkit-background-clip: text; background-clip: text;")),t}catch(n){return null}var t}function to(e,t){if(function(e){return"styleSheet"in e}(e)){let t;try{t=eo(e.styleSheet)||function(e){const{cssText:t}=e;if(t.split('"').length<3)return t;const n=["@import",`url(${JSON.stringify(e.href)})`];return""===e.layerName?n.push("layer"):e.layerName&&n.push(`layer(${e.layerName})`),e.supportsText&&n.push(`supports(${e.supportsText})`),e.media.length&&n.push(e.media.mediaText),n.join(" ")+";"}(e)}catch(n){t=e.cssText}return e.styleSheet.href?ho(t,e.styleSheet.href):t}{let n=e.cssText;return function(e){return"selectorText"in e}(e)&&e.selectorText.includes(":")&&(n=function(e){const t=/(\[(?:[\w-]+)[^\\])(:(?:[\w-]+)\])/gm;return e.replace(t,"$1\\$2")}(n)),t?ho(n,t):n}}class no{constructor(){_n(this,"idNodeMap",new Map),_n(this,"nodeMetaMap",new WeakMap)}getId(e){var t;if(!e)return-1;return(null==(t=this.getMeta(e))?void 0:t.id)??-1}getNode(e){return this.idNodeMap.get(e)||null}getIds(){return Array.from(this.idNodeMap.keys())}getMeta(e){return this.nodeMetaMap.get(e)||null}removeNodeFromMap(e){const t=this.getId(e);this.idNodeMap.delete(t),e.childNodes&&e.childNodes.forEach((e=>this.removeNodeFromMap(e)))}has(e){return this.idNodeMap.has(e)}hasNode(e){return this.nodeMetaMap.has(e)}add(e,t){const n=t.id;this.idNodeMap.set(n,e),this.nodeMetaMap.set(e,t)}replace(e,t){const n=this.getNode(e);if(n){const e=this.nodeMetaMap.get(n);e&&this.nodeMetaMap.set(t,e)}this.idNodeMap.set(e,t)}reset(){this.idNodeMap=new Map,this.nodeMetaMap=new WeakMap}}function oo({element:e,maskInputOptions:t,tagName:n,type:o,value:r,maskInputFn:i}){let a=r||"";const s=o&&ro(o);return(t[n.toLowerCase()]||s&&t[s])&&(a=i?i(a,e):"*".repeat(a.length)),a}function ro(e){return e.toLowerCase()}const io="__rrweb_original__";function ao(e){const t=e.type;return e.hasAttribute("data-rr-is-password")?"password":t?ro(t):null}function so(e,t){let n;try{n=new URL(e,t??window.location.href)}catch(r){return null}const o=n.pathname.match(/\.([0-9a-z]+)(?:$)/i);return(null==o?void 0:o[1])??null}const lo=/url\((?:(')([^']*)'|(")(.*?)"|([^)]*))\)/gm,co=/^(?:[a-z+]+:)?\/\//i,uo=/^www\..*/i,po=/^(data:)([^,]*),(.*)/i;function ho(e,t){return(e||"").replace(lo,((e,n,o,r,i,a)=>{const s=o||i||a,l=n||r||"";if(!s)return e;if(co.test(s)||uo.test(s))return`url(${l}${s}${l})`;if(po.test(s))return`url(${l}${s}${l})`;if("/"===s[0])return`url(${l}${function(e){let t="";return t=e.indexOf("//")>-1?e.split("/").slice(0,3).join("/"):e.split("/")[0],t=t.split("?")[0],t}(t)+s}${l})`;const c=t.split("/"),u=s.split("/");c.pop();for(const t of u)"."!==t&&(".."===t?c.pop():c.push(t));return`url(${l}${c.join("/")}${l})`}))}function fo(e){return e.replace(/(\/\*[^*]*\*\/)|[\s;]/g,"")}function mo(e,t){return function(e,t){const n=Array.from(t.childNodes),o=[];if(n.length>1&&e&&"string"==typeof e){const t=fo(e);for(let r=1;r=t.length);){let i=o(xo);if(","===i.slice(-1))i=Io(e,i.substring(0,i.length-1)),r.push(i);else{let o="";i=Io(e,i);let a=!1;for(;;){const e=t.charAt(n);if(""===e){r.push((i+o).trim());break}if(a)")"===e&&(a=!1);else{if(","===e){n+=1,r.push((i+o).trim());break}"("===e&&(a=!0)}o+=e,n+=1}}}return r.join(", ")}(e,o):"style"===n?ho(o,To(e)):"object"===t&&"data"===n?Io(e,o):o:Io(e,o):o}function Lo(e,t,n){return("video"===e||"audio"===e)&&"autoplay"===t}function Ao(e,t,n){if(!e)return!1;if(e.nodeType!==e.ELEMENT_NODE)return!!n&&Ao(Kn.parentNode(e),t,n);for(let o=e.classList.length;o--;){const n=e.classList[o];if(t.test(n))return!0}return!!n&&Ao(Kn.parentNode(e),t,n)}function Mo(e,t,n,o){let r;if(Zn(e)){if(r=e,!Kn.childNodes(r).length)return!1}else{if(null===Kn.parentElement(e))return!1;r=Kn.parentElement(e)}try{if("string"==typeof t){if(o){if(r.closest(`.${t}`))return!0}else if(r.classList.contains(t))return!0}else if(Ao(r,t,o))return!0;if(n)if(o){if(r.closest(n))return!0}else if(r.matches(n))return!0}catch(i){}return!1}function Ro(e,t){const{doc:n,mirror:o,blockClass:r,blockSelector:i,needsMask:a,inlineStylesheet:s,maskInputOptions:l={},maskTextFn:c,maskInputFn:u,dataURLOptions:d={},inlineImages:p,recordCanvas:h,keepIframeSrcFn:f,newlyAddedElement:m=!1,cssCaptured:g=!1}=t,v=function(e,t){if(!t.hasNode(e))return;const n=t.getId(e);return 1===n?void 0:n}(n,o);switch(e.nodeType){case e.DOCUMENT_NODE:return"CSS1Compat"!==e.compatMode?{type:Un.Document,childNodes:[],compatMode:e.compatMode}:{type:Un.Document,childNodes:[]};case e.DOCUMENT_TYPE_NODE:return{type:Un.DocumentType,name:e.name,publicId:e.publicId,systemId:e.systemId,rootId:v};case e.ELEMENT_NODE:return function(e,t){const{doc:n,blockClass:o,blockSelector:r,inlineStylesheet:i,maskInputOptions:a={},maskInputFn:s,dataURLOptions:l={},inlineImages:c,recordCanvas:u,keepIframeSrcFn:d,newlyAddedElement:p=!1,rootId:h}=t,f=function(e,t,n){try{if("string"==typeof t){if(e.classList.contains(t))return!0}else for(let n=e.classList.length;n--;){const o=e.classList[n];if(t.test(o))return!0}if(n)return e.matches(n)}catch(o){}return!1}(e,o,r),m=function(e){if(e instanceof HTMLFormElement)return"form";const t=ro(e.tagName);return vo.test(t)?"div":t}(e);let g={};const v=e.attributes.length;for(let w=0;wt.href===e.href));let o=null;t&&(o=eo(t)),o&&(delete g.rel,delete g.href,g._cssText=o)}if("style"===m&&e.sheet){let t=eo(e.sheet);t&&(e.childNodes.length>1&&(t=mo(t,e)),g._cssText=t)}if("input"===m||"textarea"===m||"select"===m){const t=e.value,n=e.checked;"radio"!==g.type&&"checkbox"!==g.type&&"submit"!==g.type&&"button"!==g.type&&t?g.value=oo({element:e,type:ao(e),tagName:m,value:t,maskInputOptions:a,maskInputFn:s}):n&&(g.checked=n)}"option"===m&&(e.selected&&!a.select?g.selected=!0:delete g.selected);"dialog"===m&&e.open&&(g.rr_open_mode=e.matches("dialog:modal")?"modal":"non-modal");if("canvas"===m&&u)if("2d"===e.__context)(function(e){const t=e.getContext("2d");if(!t)return!0;for(let n=0;n0!==e)))return!1}return!0})(e)||(g.rr_dataURL=e.toDataURL(l.type,l.quality));else if(!("__context"in e)){const t=e.toDataURL(l.type,l.quality),o=n.createElement("canvas");o.width=e.width,o.height=e.height;t!==o.toDataURL(l.type,l.quality)&&(g.rr_dataURL=t)}if("img"===m&&c){wo||(wo=n.createElement("canvas"),ko=wo.getContext("2d"));const t=e,o=t.currentSrc||t.getAttribute("src")||"",r=t.crossOrigin,i=()=>{t.removeEventListener("load",i);try{wo.width=t.naturalWidth,wo.height=t.naturalHeight,ko.drawImage(t,0,0),g.rr_dataURL=wo.toDataURL(l.type,l.quality)}catch(e){if("anonymous"!==t.crossOrigin)return t.crossOrigin="anonymous",void(t.complete&&0!==t.naturalWidth?i():t.addEventListener("load",i));console.warn(`Cannot inline img src=${o}! Error: ${e}`)}"anonymous"===t.crossOrigin&&(r?g.crossOrigin=r:t.removeAttribute("crossorigin"))};t.complete&&0!==t.naturalWidth?i():t.addEventListener("load",i)}if("audio"===m||"video"===m){const t=g;t.rr_mediaState=e.paused?"paused":"played",t.rr_mediaCurrentTime=e.currentTime,t.rr_mediaPlaybackRate=e.playbackRate,t.rr_mediaMuted=e.muted,t.rr_mediaLoop=e.loop,t.rr_mediaVolume=e.volume}p||(e.scrollLeft&&(g.rr_scrollLeft=e.scrollLeft),e.scrollTop&&(g.rr_scrollTop=e.scrollTop));if(f){const{width:t,height:n}=e.getBoundingClientRect();g={class:g.class,rr_width:`${t}px`,rr_height:`${n}px`}}"iframe"!==m||d(g.src)||(e.contentDocument||(g.rr_src=g.src),delete g.src);let y;try{customElements.get(m)&&(y=!0)}catch(b){}return{type:Un.Element,tagName:m,attributes:g,childNodes:[],isSVG:Eo(e)||void 0,needBlock:f,rootId:h,isCustom:y}}(e,{doc:n,blockClass:r,blockSelector:i,inlineStylesheet:s,maskInputOptions:l,maskInputFn:u,dataURLOptions:d,inlineImages:p,recordCanvas:h,keepIframeSrcFn:f,newlyAddedElement:m,rootId:v});case e.TEXT_NODE:return function(e,t){const{needsMask:n,maskTextFn:o,rootId:r,cssCaptured:i}=t,a=Kn.parentNode(e),s=a&&a.tagName;let l="";const c="STYLE"===s||void 0,u="SCRIPT"===s||void 0;u?l="SCRIPT_PLACEHOLDER":i||(l=Kn.textContent(e),c&&l&&(l=ho(l,To(t.doc))));!c&&!u&&l&&n&&(l=o?o(l,Kn.parentElement(e)):l.replace(/[\S]/g,"*"));return{type:Un.Text,textContent:l||"",rootId:r}}(e,{doc:n,needsMask:a,maskTextFn:c,rootId:v,cssCaptured:g});case e.CDATA_SECTION_NODE:return{type:Un.CDATA,textContent:"",rootId:v};case e.COMMENT_NODE:return{type:Un.Comment,textContent:Kn.textContent(e)||"",rootId:v};default:return!1}}function Po(e){return null==e?"":e.toLowerCase()}function Do(e,t){const{doc:n,mirror:o,blockClass:r,blockSelector:i,maskTextClass:a,maskTextSelector:s,skipChild:l=!1,inlineStylesheet:c=!0,maskInputOptions:u={},maskTextFn:d,maskInputFn:p,slimDOMOptions:h,dataURLOptions:f={},inlineImages:m=!1,recordCanvas:g=!1,onSerialize:v,onIframeLoad:y,iframeLoadTimeout:b=5e3,onStylesheetLoad:w,stylesheetLoadTimeout:k=5e3,keepIframeSrcFn:x=(()=>!1),newlyAddedElement:S=!1,cssCaptured:C=!1}=t;let{needsMask:I}=t,{preserveWhiteSpace:E=!0}=t;if(!I){I=Mo(e,a,s,void 0===I)}const T=Ro(e,{doc:n,mirror:o,blockClass:r,blockSelector:i,needsMask:I,inlineStylesheet:c,maskInputOptions:u,maskTextFn:d,maskInputFn:p,dataURLOptions:f,inlineImages:m,recordCanvas:g,keepIframeSrcFn:x,newlyAddedElement:S,cssCaptured:C});if(!T)return console.warn(e,"not serialized"),null;let O;O=o.hasNode(e)?o.getId(e):function(e,t){if(t.comment&&e.type===Un.Comment)return!0;if(e.type===Un.Element){if(t.script&&("script"===e.tagName||"link"===e.tagName&&("preload"===e.attributes.rel||"modulepreload"===e.attributes.rel)&&"script"===e.attributes.as||"link"===e.tagName&&"prefetch"===e.attributes.rel&&"string"==typeof e.attributes.href&&"js"===so(e.attributes.href)))return!0;if(t.headFavicon&&("link"===e.tagName&&"shortcut icon"===e.attributes.rel||"meta"===e.tagName&&(Po(e.attributes.name).match(/^msapplication-tile(image|color)$/)||"application-name"===Po(e.attributes.name)||"icon"===Po(e.attributes.rel)||"apple-touch-icon"===Po(e.attributes.rel)||"shortcut icon"===Po(e.attributes.rel))))return!0;if("meta"===e.tagName){if(t.headMetaDescKeywords&&Po(e.attributes.name).match(/^description|keywords$/))return!0;if(t.headMetaSocial&&(Po(e.attributes.property).match(/^(og|twitter|fb):/)||Po(e.attributes.name).match(/^(og|twitter):/)||"pinterest"===Po(e.attributes.name)))return!0;if(t.headMetaRobots&&("robots"===Po(e.attributes.name)||"googlebot"===Po(e.attributes.name)||"bingbot"===Po(e.attributes.name)))return!0;if(t.headMetaHttpEquiv&&void 0!==e.attributes["http-equiv"])return!0;if(t.headMetaAuthorship&&("author"===Po(e.attributes.name)||"generator"===Po(e.attributes.name)||"framework"===Po(e.attributes.name)||"publisher"===Po(e.attributes.name)||"progid"===Po(e.attributes.name)||Po(e.attributes.property).match(/^article:/)||Po(e.attributes.property).match(/^product:/)))return!0;if(t.headMetaVerification&&("google-site-verification"===Po(e.attributes.name)||"yandex-verification"===Po(e.attributes.name)||"csrf-token"===Po(e.attributes.name)||"p:domain_verify"===Po(e.attributes.name)||"verify-v1"===Po(e.attributes.name)||"verification"===Po(e.attributes.name)||"shopify-checkout-api-token"===Po(e.attributes.name)))return!0}}return!1}(T,h)||!E&&T.type===Un.Text&&!T.textContent.replace(/^\s+|\s+$/gm,"").length?yo:bo();const L=Object.assign(T,{id:O});if(o.add(e,L),O===yo)return null;v&&v(e);let A=!l;if(L.type===Un.Element){A=A&&!L.needBlock,delete L.needBlock;const t=Kn.shadowRoot(e);t&&Qn(t)&&(L.isShadowHost=!0)}if((L.type===Un.Document||L.type===Un.Element)&&A){h.headWhitespace&&L.type===Un.Element&&"head"===L.tagName&&(E=!1);const t={doc:n,mirror:o,blockClass:r,blockSelector:i,needsMask:I,maskTextClass:a,maskTextSelector:s,skipChild:l,inlineStylesheet:c,maskInputOptions:u,maskTextFn:d,maskInputFn:p,slimDOMOptions:h,dataURLOptions:f,inlineImages:m,recordCanvas:g,preserveWhiteSpace:E,onSerialize:v,onIframeLoad:y,iframeLoadTimeout:b,onStylesheetLoad:w,stylesheetLoadTimeout:k,keepIframeSrcFn:x,cssCaptured:!1};if(L.type===Un.Element&&"textarea"===L.tagName&&void 0!==L.attributes.value);else{L.type===Un.Element&&void 0!==L.attributes._cssText&&"string"==typeof L.attributes._cssText&&(t.cssCaptured=!0);for(const n of Array.from(Kn.childNodes(e))){const e=Do(n,t);e&&L.childNodes.push(e)}}let S=null;if(Zn(e)&&(S=Kn.shadowRoot(e)))for(const e of Array.from(Kn.childNodes(S))){const n=Do(e,t);n&&(Qn(S)&&(n.isShadow=!0),L.childNodes.push(n))}}const M=Kn.parentNode(e);return M&&$n(M)&&Qn(M)&&(L.isShadow=!0),L.type===Un.Element&&"iframe"===L.tagName&&function(e,t,n){const o=e.contentWindow;if(!o)return;let r,i=!1;try{r=o.document.readyState}catch(s){return}if("complete"!==r){const o=setTimeout((()=>{i||(t(),i=!0)}),n);return void e.addEventListener("load",(()=>{clearTimeout(o),i=!0,t()}))}const a="about:blank";if(o.location.href!==a||e.src===a||""===e.src)return setTimeout(t,0),e.addEventListener("load",t);e.addEventListener("load",t)}(e,(()=>{const t=e.contentDocument;if(t&&y){const n=Do(t,{doc:t,mirror:o,blockClass:r,blockSelector:i,needsMask:I,maskTextClass:a,maskTextSelector:s,skipChild:!1,inlineStylesheet:c,maskInputOptions:u,maskTextFn:d,maskInputFn:p,slimDOMOptions:h,dataURLOptions:f,inlineImages:m,recordCanvas:g,preserveWhiteSpace:E,onSerialize:v,onIframeLoad:y,iframeLoadTimeout:b,onStylesheetLoad:w,stylesheetLoadTimeout:k,keepIframeSrcFn:x});n&&y(e,n)}}),b),L.type===Un.Element&&"link"===L.tagName&&"string"==typeof L.attributes.rel&&("stylesheet"===L.attributes.rel||"preload"===L.attributes.rel&&"string"==typeof L.attributes.href&&"css"===so(L.attributes.href))&&function(e,t,n){let o,r=!1;try{o=e.sheet}catch(a){return}if(o)return;const i=setTimeout((()=>{r||(t(),r=!0)}),n);e.addEventListener("load",(()=>{clearTimeout(i),r=!0,t()}))}(e,(()=>{if(w){const t=Do(e,{doc:n,mirror:o,blockClass:r,blockSelector:i,needsMask:I,maskTextClass:a,maskTextSelector:s,skipChild:!1,inlineStylesheet:c,maskInputOptions:u,maskTextFn:d,maskInputFn:p,slimDOMOptions:h,dataURLOptions:f,inlineImages:m,recordCanvas:g,preserveWhiteSpace:E,onSerialize:v,onIframeLoad:y,iframeLoadTimeout:b,onStylesheetLoad:w,stylesheetLoadTimeout:k,keepIframeSrcFn:x});t&&w(e,t)}}),k),L}function No(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function jo(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var n=function e(){return this instanceof e?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,o.get?o:{enumerable:!0,get:function(){return e[t]}})})),n}var Fo={exports:{}},Bo=String,_o=function(){return{isColorSupported:!1,reset:Bo,bold:Bo,dim:Bo,italic:Bo,underline:Bo,inverse:Bo,hidden:Bo,strikethrough:Bo,black:Bo,red:Bo,green:Bo,yellow:Bo,blue:Bo,magenta:Bo,cyan:Bo,white:Bo,gray:Bo,bgBlack:Bo,bgRed:Bo,bgGreen:Bo,bgYellow:Bo,bgBlue:Bo,bgMagenta:Bo,bgCyan:Bo,bgWhite:Bo}};Fo.exports=_o(),Fo.exports.createColors=_o;var Uo=Fo.exports;const Ho=jo(Object.freeze(Object.defineProperty({__proto__:null,default:{}},Symbol.toStringTag,{value:"Module"})));let zo=Uo,qo=Ho,Wo=class e extends Error{constructor(t,n,o,r,i,a){super(t),this.name="CssSyntaxError",this.reason=t,i&&(this.file=i),r&&(this.source=r),a&&(this.plugin=a),void 0!==n&&void 0!==o&&("number"==typeof n?(this.line=n,this.column=o):(this.line=n.line,this.column=n.column,this.endLine=o.line,this.endColumn=o.column)),this.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(this,e)}setMessage(){this.message=this.plugin?this.plugin+": ":"",this.message+=this.file?this.file:"",void 0!==this.line&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason}showSourceCode(e){if(!this.source)return"";let t=this.source;null==e&&(e=zo.isColorSupported),qo&&e&&(t=qo(t));let n,o,r=t.split(/\r?\n/),i=Math.max(this.line-3,0),a=Math.min(this.line+2,r.length),s=String(a).length;if(e){let{bold:e,gray:t,red:r}=zo.createColors(!0);n=t=>e(r(t)),o=e=>t(e)}else n=o=e=>e;return r.slice(i,a).map(((e,t)=>{let r=i+1+t,a=" "+(" "+r).slice(-s)+" | ";if(r===this.line){let t=o(a.replace(/\d/g," "))+e.slice(0,this.column-1).replace(/[^\t]/g," ");return n(">")+o(a)+e+"\n "+t+n("^")}return" "+o(a)+e})).join("\n")}toString(){let e=this.showSourceCode();return e&&(e="\n\n"+e+"\n"),this.name+": "+this.message+e}};var Vo=Wo;Wo.default=Wo;var Go={};Go.isClean=Symbol("isClean"),Go.my=Symbol("my");const Xo={after:"\n",beforeClose:"\n",beforeComment:"\n",beforeDecl:"\n",beforeOpen:" ",beforeRule:"\n",colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:!1};let Yo=class{constructor(e){this.builder=e}atrule(e,t){let n="@"+e.name,o=e.params?this.rawValue(e,"params"):"";if(void 0!==e.raws.afterName?n+=e.raws.afterName:o&&(n+=" "),e.nodes)this.block(e,n+o);else{let r=(e.raws.between||"")+(t?";":"");this.builder(n+o+r,e)}}beforeAfter(e,t){let n;n="decl"===e.type?this.raw(e,null,"beforeDecl"):"comment"===e.type?this.raw(e,null,"beforeComment"):"before"===t?this.raw(e,null,"beforeRule"):this.raw(e,null,"beforeClose");let o=e.parent,r=0;for(;o&&"root"!==o.type;)r+=1,o=o.parent;if(n.includes("\n")){let t=this.raw(e,null,"indent");if(t.length)for(let e=0;e0&&"comment"===e.nodes[t].type;)t-=1;let n=this.raw(e,"semicolon");for(let o=0;o{if(o=e.raws[t],void 0!==o)return!1}))}var a;return void 0===o&&(o=Xo[n]),i.rawCache[n]=o,o}rawBeforeClose(e){let t;return e.walk((e=>{if(e.nodes&&e.nodes.length>0&&void 0!==e.raws.after)return t=e.raws.after,t.includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1})),t&&(t=t.replace(/\S/g,"")),t}rawBeforeComment(e,t){let n;return e.walkComments((e=>{if(void 0!==e.raws.before)return n=e.raws.before,n.includes("\n")&&(n=n.replace(/[^\n]+$/,"")),!1})),void 0===n?n=this.raw(t,null,"beforeDecl"):n&&(n=n.replace(/\S/g,"")),n}rawBeforeDecl(e,t){let n;return e.walkDecls((e=>{if(void 0!==e.raws.before)return n=e.raws.before,n.includes("\n")&&(n=n.replace(/[^\n]+$/,"")),!1})),void 0===n?n=this.raw(t,null,"beforeRule"):n&&(n=n.replace(/\S/g,"")),n}rawBeforeOpen(e){let t;return e.walk((e=>{if("decl"!==e.type&&(t=e.raws.between,void 0!==t))return!1})),t}rawBeforeRule(e){let t;return e.walk((n=>{if(n.nodes&&(n.parent!==e||e.first!==n)&&void 0!==n.raws.before)return t=n.raws.before,t.includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1})),t&&(t=t.replace(/\S/g,"")),t}rawColon(e){let t;return e.walkDecls((e=>{if(void 0!==e.raws.between)return t=e.raws.between.replace(/[^\s:]/g,""),!1})),t}rawEmptyBody(e){let t;return e.walk((e=>{if(e.nodes&&0===e.nodes.length&&(t=e.raws.after,void 0!==t))return!1})),t}rawIndent(e){if(e.raws.indent)return e.raws.indent;let t;return e.walk((n=>{let o=n.parent;if(o&&o!==e&&o.parent&&o.parent===e&&void 0!==n.raws.before){let e=n.raws.before.split("\n");return t=e[e.length-1],t=t.replace(/\S/g,""),!1}})),t}rawSemicolon(e){let t;return e.walk((e=>{if(e.nodes&&e.nodes.length&&"decl"===e.last.type&&(t=e.raws.semicolon,void 0!==t))return!1})),t}rawValue(e,t){let n=e[t],o=e.raws[t];return o&&o.value===n?o.raw:n}root(e){this.body(e),e.raws.after&&this.builder(e.raws.after)}rule(e){this.block(e,this.rawValue(e,"selector")),e.raws.ownSemicolon&&this.builder(e.raws.ownSemicolon,e,"end")}stringify(e,t){if(!this[e.type])throw new Error("Unknown AST node type "+e.type+". Maybe you need to change PostCSS stringifier.");this[e.type](e,t)}};var Jo=Yo;Yo.default=Yo;let Ko=Jo;function Zo(e,t){new Ko(t).stringify(e)}var $o=Zo;Zo.default=Zo;let{isClean:Qo,my:er}=Go,tr=Vo,nr=Jo,or=$o;function rr(e,t){let n=new e.constructor;for(let o in e){if(!Object.prototype.hasOwnProperty.call(e,o))continue;if("proxyCache"===o)continue;let r=e[o],i=typeof r;"parent"===o&&"object"===i?t&&(n[o]=t):"source"===o?n[o]=r:Array.isArray(r)?n[o]=r.map((e=>rr(e,n))):("object"===i&&null!==r&&(r=rr(r)),n[o]=r)}return n}let ir=class{constructor(e={}){this.raws={},this[Qo]=!1,this[er]=!0;for(let t in e)if("nodes"===t){this.nodes=[];for(let n of e[t])"function"==typeof n.clone?this.append(n.clone()):this.append(n)}else this[t]=e[t]}addToError(e){if(e.postcssNode=this,e.stack&&this.source&&/\n\s{4}at /.test(e.stack)){let t=this.source;e.stack=e.stack.replace(/\n\s{4}at /,`$&${t.input.from}:${t.start.line}:${t.start.column}$&`)}return e}after(e){return this.parent.insertAfter(this,e),this}assign(e={}){for(let t in e)this[t]=e[t];return this}before(e){return this.parent.insertBefore(this,e),this}cleanRaws(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between}clone(e={}){let t=rr(this);for(let n in e)t[n]=e[n];return t}cloneAfter(e={}){let t=this.clone(e);return this.parent.insertAfter(this,t),t}cloneBefore(e={}){let t=this.clone(e);return this.parent.insertBefore(this,t),t}error(e,t={}){if(this.source){let{end:n,start:o}=this.rangeBy(t);return this.source.input.error(e,{column:o.column,line:o.line},{column:n.column,line:n.line},t)}return new tr(e)}getProxyProcessor(){return{get:(e,t)=>"proxyOf"===t?e:"root"===t?()=>e.root().toProxy():e[t],set:(e,t,n)=>(e[t]===n||(e[t]=n,"prop"!==t&&"value"!==t&&"name"!==t&&"params"!==t&&"important"!==t&&"text"!==t||e.markDirty()),!0)}}markDirty(){if(this[Qo]){this[Qo]=!1;let e=this;for(;e=e.parent;)e[Qo]=!1}}next(){if(!this.parent)return;let e=this.parent.index(this);return this.parent.nodes[e+1]}positionBy(e,t){let n=this.source.start;if(e.index)n=this.positionInside(e.index,t);else if(e.word){let o=(t=this.toString()).indexOf(e.word);-1!==o&&(n=this.positionInside(o,t))}return n}positionInside(e,t){let n=t||this.toString(),o=this.source.start.column,r=this.source.start.line;for(let i=0;i"object"==typeof e&&e.toJSON?e.toJSON(null,t):e));else if("object"==typeof e&&e.toJSON)n[i]=e.toJSON(null,t);else if("source"===i){let o=t.get(e.input);null==o&&(o=r,t.set(e.input,r),r++),n[i]={end:e.end,inputId:o,start:e.start}}else n[i]=e}return o&&(n.inputs=[...t.keys()].map((e=>e.toJSON()))),n}toProxy(){return this.proxyCache||(this.proxyCache=new Proxy(this,this.getProxyProcessor())),this.proxyCache}toString(e=or){e.stringify&&(e=e.stringify);let t="";return e(this,(e=>{t+=e})),t}warn(e,t,n){let o={node:this};for(let r in n)o[r]=n[r];return e.warn(t,o)}get proxyOf(){return this}};var ar=ir;ir.default=ir;let sr=ar,lr=class extends sr{constructor(e){e&&void 0!==e.value&&"string"!=typeof e.value&&(e={...e,value:String(e.value)}),super(e),this.type="decl"}get variable(){return this.prop.startsWith("--")||"$"===this.prop[0]}};var cr=lr;lr.default=lr;var ur={nanoid:(e=21)=>{let t="",n=e;for(;n--;)t+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[64*Math.random()|0];return t},customAlphabet:(e,t=21)=>(n=t)=>{let o="",r=n;for(;r--;)o+=e[Math.random()*e.length|0];return o}};let{SourceMapConsumer:dr,SourceMapGenerator:pr}=Ho,{existsSync:hr,readFileSync:fr}=Ho,{dirname:mr,join:gr}=Ho;let vr=class{constructor(e,t){if(!1===t.map)return;this.loadAnnotation(e),this.inline=this.startWith(this.annotation,"data:");let n=t.map?t.map.prev:void 0,o=this.loadMap(t.from,n);!this.mapFile&&t.from&&(this.mapFile=t.from),this.mapFile&&(this.root=mr(this.mapFile)),o&&(this.text=o)}consumer(){return this.consumerCache||(this.consumerCache=new dr(this.text)),this.consumerCache}decodeInline(e){if(/^data:application\/json;charset=utf-?8,/.test(e)||/^data:application\/json,/.test(e))return decodeURIComponent(e.substr(RegExp.lastMatch.length));if(/^data:application\/json;charset=utf-?8;base64,/.test(e)||/^data:application\/json;base64,/.test(e))return t=e.substr(RegExp.lastMatch.length),Buffer?Buffer.from(t,"base64").toString():window.atob(t);var t;let n=e.match(/data:application\/json;([^,]+),/)[1];throw new Error("Unsupported source map encoding "+n)}getAnnotationURL(e){return e.replace(/^\/\*\s*# sourceMappingURL=/,"").trim()}isMap(e){return"object"==typeof e&&("string"==typeof e.mappings||"string"==typeof e._mappings||Array.isArray(e.sections))}loadAnnotation(e){let t=e.match(/\/\*\s*# sourceMappingURL=/gm);if(!t)return;let n=e.lastIndexOf(t.pop()),o=e.indexOf("*/",n);n>-1&&o>-1&&(this.annotation=this.getAnnotationURL(e.substring(n,o)))}loadFile(e){if(this.root=mr(e),hr(e))return this.mapFile=e,fr(e,"utf-8").toString().trim()}loadMap(e,t){if(!1===t)return!1;if(t){if("string"==typeof t)return t;if("function"!=typeof t){if(t instanceof dr)return pr.fromSourceMap(t).toString();if(t instanceof pr)return t.toString();if(this.isMap(t))return JSON.stringify(t);throw new Error("Unsupported previous source map format: "+t.toString())}{let n=t(e);if(n){let e=this.loadFile(n);if(!e)throw new Error("Unable to load previous source map: "+n.toString());return e}}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){let t=this.annotation;return e&&(t=gr(mr(e),t)),this.loadFile(t)}}}startWith(e,t){return!!e&&e.substr(0,t.length)===t}withContent(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)}};var yr=vr;vr.default=vr;let{SourceMapConsumer:br,SourceMapGenerator:wr}=Ho,{fileURLToPath:kr,pathToFileURL:xr}=Ho,{isAbsolute:Sr,resolve:Cr}=Ho,{nanoid:Ir}=ur,Er=Ho,Tr=Vo,Or=yr,Lr=Symbol("fromOffsetCache"),Ar=Boolean(br&&wr),Mr=Boolean(Cr&&Sr),Rr=class{constructor(e,t={}){if(null==e||"object"==typeof e&&!e.toString)throw new Error(`PostCSS received ${e} instead of CSS string`);if(this.css=e.toString(),"\ufeff"===this.css[0]||"￾"===this.css[0]?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,t.from&&(!Mr||/^\w+:\/\//.test(t.from)||Sr(t.from)?this.file=t.from:this.file=Cr(t.from)),Mr&&Ar){let e=new Or(this.css,t);if(e.text){this.map=e;let t=e.consumer().file;!this.file&&t&&(this.file=this.mapResolve(t))}}this.file||(this.id=""),this.map&&(this.map.file=this.from)}error(e,t,n,o={}){let r,i,a;if(t&&"object"==typeof t){let e=t,o=n;if("number"==typeof e.offset){let o=this.fromOffset(e.offset);t=o.line,n=o.col}else t=e.line,n=e.column;if("number"==typeof o.offset){let e=this.fromOffset(o.offset);i=e.line,a=e.col}else i=o.line,a=o.column}else if(!n){let e=this.fromOffset(t);t=e.line,n=e.col}let s=this.origin(t,n,i,a);return r=s?new Tr(e,void 0===s.endLine?s.line:{column:s.column,line:s.line},void 0===s.endLine?s.column:{column:s.endColumn,line:s.endLine},s.source,s.file,o.plugin):new Tr(e,void 0===i?t:{column:n,line:t},void 0===i?n:{column:a,line:i},this.css,this.file,o.plugin),r.input={column:n,endColumn:a,endLine:i,line:t,source:this.css},this.file&&(xr&&(r.input.url=xr(this.file).toString()),r.input.file=this.file),r}fromOffset(e){let t,n;if(this[Lr])n=this[Lr];else{let e=this.css.split("\n");n=new Array(e.length);let t=0;for(let o=0,r=e.length;o=t)o=n.length-1;else{let t,r=n.length-2;for(;o>1),e=n[t+1])){o=t;break}o=t+1}}return{col:e-n[o]+1,line:o+1}}mapResolve(e){return/^\w+:\/\//.test(e)?e:Cr(this.map.consumer().sourceRoot||this.map.root||".",e)}origin(e,t,n,o){if(!this.map)return!1;let r,i,a=this.map.consumer(),s=a.originalPositionFor({column:t,line:e});if(!s.source)return!1;"number"==typeof n&&(r=a.originalPositionFor({column:o,line:n})),i=Sr(s.source)?xr(s.source):new URL(s.source,this.map.consumer().sourceRoot||xr(this.map.mapFile));let l={column:s.column,endColumn:r&&r.column,endLine:r&&r.line,line:s.line,url:i.toString()};if("file:"===i.protocol){if(!kr)throw new Error("file: protocol is not available in this PostCSS build");l.file=kr(i)}let c=a.sourceContentFor(s.source);return c&&(l.source=c),l}toJSON(){let e={};for(let t of["hasBOM","css","file","id"])null!=this[t]&&(e[t]=this[t]);return this.map&&(e.map={...this.map},e.map.consumerCache&&(e.map.consumerCache=void 0)),e}get from(){return this.file||this.id}};var Pr=Rr;Rr.default=Rr,Er&&Er.registerInput&&Er.registerInput(Rr);let{SourceMapConsumer:Dr,SourceMapGenerator:Nr}=Ho,{dirname:jr,relative:Fr,resolve:Br,sep:_r}=Ho,{pathToFileURL:Ur}=Ho,Hr=Pr,zr=Boolean(Dr&&Nr),qr=Boolean(jr&&Br&&Fr&&_r);var Wr=class{constructor(e,t,n,o){this.stringify=e,this.mapOpts=n.map||{},this.root=t,this.opts=n,this.css=o,this.originalCSS=o,this.usesFileUrls=!this.mapOpts.from&&this.mapOpts.absolute,this.memoizedFileURLs=new Map,this.memoizedPaths=new Map,this.memoizedURLs=new Map}addAnnotation(){let e;e=this.isInline()?"data:application/json;base64,"+this.toBase64(this.map.toString()):"string"==typeof this.mapOpts.annotation?this.mapOpts.annotation:"function"==typeof this.mapOpts.annotation?this.mapOpts.annotation(this.opts.to,this.root):this.outputFile()+".map";let t="\n";this.css.includes("\r\n")&&(t="\r\n"),this.css+=t+"/*# sourceMappingURL="+e+" */"}applyPrevMaps(){for(let e of this.previous()){let t,n=this.toUrl(this.path(e.file)),o=e.root||jr(e.file);!1===this.mapOpts.sourcesContent?(t=new Dr(e.text),t.sourcesContent&&(t.sourcesContent=null)):t=e.consumer(),this.map.applySourceMap(t,n,this.toUrl(this.path(o)))}}clearAnnotation(){if(!1!==this.mapOpts.annotation)if(this.root){let e;for(let t=this.root.nodes.length-1;t>=0;t--)e=this.root.nodes[t],"comment"===e.type&&0===e.text.indexOf("# sourceMappingURL=")&&this.root.removeChild(t)}else this.css&&(this.css=this.css.replace(/\n*?\/\*#[\S\s]*?\*\/$/gm,""))}generate(){if(this.clearAnnotation(),qr&&zr&&this.isMap())return this.generateMap();{let e="";return this.stringify(this.root,(t=>{e+=t})),[e]}}generateMap(){if(this.root)this.generateString();else if(1===this.previous().length){let e=this.previous()[0].consumer();e.file=this.outputFile(),this.map=Nr.fromSourceMap(e,{ignoreInvalidMapping:!0})}else this.map=new Nr({file:this.outputFile(),ignoreInvalidMapping:!0}),this.map.addMapping({generated:{column:0,line:1},original:{column:0,line:1},source:this.opts.from?this.toUrl(this.path(this.opts.from)):""});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]}generateString(){this.css="",this.map=new Nr({file:this.outputFile(),ignoreInvalidMapping:!0});let e,t,n=1,o=1,r="",i={generated:{column:0,line:0},original:{column:0,line:0},source:""};this.stringify(this.root,((a,s,l)=>{if(this.css+=a,s&&"end"!==l&&(i.generated.line=n,i.generated.column=o-1,s.source&&s.source.start?(i.source=this.sourcePath(s),i.original.line=s.source.start.line,i.original.column=s.source.start.column-1,this.map.addMapping(i)):(i.source=r,i.original.line=1,i.original.column=0,this.map.addMapping(i))),e=a.match(/\n/g),e?(n+=e.length,t=a.lastIndexOf("\n"),o=a.length-t):o+=a.length,s&&"start"!==l){let e=s.parent||{raws:{}};("decl"===s.type||"atrule"===s.type&&!s.nodes)&&s===e.last&&!e.raws.semicolon||(s.source&&s.source.end?(i.source=this.sourcePath(s),i.original.line=s.source.end.line,i.original.column=s.source.end.column-1,i.generated.line=n,i.generated.column=o-2,this.map.addMapping(i)):(i.source=r,i.original.line=1,i.original.column=0,i.generated.line=n,i.generated.column=o-1,this.map.addMapping(i)))}}))}isAnnotation(){return!!this.isInline()||(void 0!==this.mapOpts.annotation?this.mapOpts.annotation:!this.previous().length||this.previous().some((e=>e.annotation)))}isInline(){if(void 0!==this.mapOpts.inline)return this.mapOpts.inline;let e=this.mapOpts.annotation;return(void 0===e||!0===e)&&(!this.previous().length||this.previous().some((e=>e.inline)))}isMap(){return void 0!==this.opts.map?!!this.opts.map:this.previous().length>0}isSourcesContent(){return void 0!==this.mapOpts.sourcesContent?this.mapOpts.sourcesContent:!this.previous().length||this.previous().some((e=>e.withContent()))}outputFile(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"}path(e){if(this.mapOpts.absolute)return e;if(60===e.charCodeAt(0))return e;if(/^\w+:\/\//.test(e))return e;let t=this.memoizedPaths.get(e);if(t)return t;let n=this.opts.to?jr(this.opts.to):".";"string"==typeof this.mapOpts.annotation&&(n=jr(Br(n,this.mapOpts.annotation)));let o=Fr(n,e);return this.memoizedPaths.set(e,o),o}previous(){if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk((e=>{if(e.source&&e.source.input.map){let t=e.source.input.map;this.previousMaps.includes(t)||this.previousMaps.push(t)}}));else{let e=new Hr(this.originalCSS,this.opts);e.map&&this.previousMaps.push(e.map)}return this.previousMaps}setSourcesContent(){let e={};if(this.root)this.root.walk((t=>{if(t.source){let n=t.source.input.from;if(n&&!e[n]){e[n]=!0;let o=this.usesFileUrls?this.toFileUrl(n):this.toUrl(this.path(n));this.map.setSourceContent(o,t.source.input.css)}}}));else if(this.css){let e=this.opts.from?this.toUrl(this.path(this.opts.from)):"";this.map.setSourceContent(e,this.css)}}sourcePath(e){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(e.source.input.from):this.toUrl(this.path(e.source.input.from))}toBase64(e){return Buffer?Buffer.from(e).toString("base64"):window.btoa(unescape(encodeURIComponent(e)))}toFileUrl(e){let t=this.memoizedFileURLs.get(e);if(t)return t;if(Ur){let t=Ur(e).toString();return this.memoizedFileURLs.set(e,t),t}throw new Error("`map.absolute` option is not available in this PostCSS build")}toUrl(e){let t=this.memoizedURLs.get(e);if(t)return t;"\\"===_r&&(e=e.replace(/\\/g,"/"));let n=encodeURI(e).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(e,n),n}};let Vr=ar,Gr=class extends Vr{constructor(e){super(e),this.type="comment"}};var Xr=Gr;Gr.default=Gr;let Yr,Jr,Kr,Zr,{isClean:$r,my:Qr}=Go,ei=cr,ti=Xr,ni=ar;function oi(e){return e.map((e=>(e.nodes&&(e.nodes=oi(e.nodes)),delete e.source,e)))}function ri(e){if(e[$r]=!1,e.proxyOf.nodes)for(let t of e.proxyOf.nodes)ri(t)}let ii=class e extends ni{append(...e){for(let t of e){let e=this.normalize(t,this.last);for(let t of e)this.proxyOf.nodes.push(t)}return this.markDirty(),this}cleanRaws(e){if(super.cleanRaws(e),this.nodes)for(let t of this.nodes)t.cleanRaws(e)}each(e){if(!this.proxyOf.nodes)return;let t,n,o=this.getIterator();for(;this.indexes[o]"proxyOf"===t?e:e[t]?"each"===t||"string"==typeof t&&t.startsWith("walk")?(...n)=>e[t](...n.map((e=>"function"==typeof e?(t,n)=>e(t.toProxy(),n):e))):"every"===t||"some"===t?n=>e[t](((e,...t)=>n(e.toProxy(),...t))):"root"===t?()=>e.root().toProxy():"nodes"===t?e.nodes.map((e=>e.toProxy())):"first"===t||"last"===t?e[t].toProxy():e[t]:e[t],set:(e,t,n)=>(e[t]===n||(e[t]=n,"name"!==t&&"params"!==t&&"selector"!==t||e.markDirty()),!0)}}index(e){return"number"==typeof e?e:(e.proxyOf&&(e=e.proxyOf),this.proxyOf.nodes.indexOf(e))}insertAfter(e,t){let n,o=this.index(e),r=this.normalize(t,this.proxyOf.nodes[o]).reverse();o=this.index(e);for(let i of r)this.proxyOf.nodes.splice(o+1,0,i);for(let i in this.indexes)n=this.indexes[i],o(t[Qr]||e.rebuild(t),(t=t.proxyOf).parent&&t.parent.removeChild(t),t[$r]&&ri(t),void 0===t.raws.before&&n&&void 0!==n.raws.before&&(t.raws.before=n.raws.before.replace(/\S/g,"")),t.parent=this.proxyOf,t)))}prepend(...e){e=e.reverse();for(let t of e){let e=this.normalize(t,this.first,"prepend").reverse();for(let t of e)this.proxyOf.nodes.unshift(t);for(let t in this.indexes)this.indexes[t]=this.indexes[t]+e.length}return this.markDirty(),this}push(e){return e.parent=this,this.proxyOf.nodes.push(e),this}removeAll(){for(let e of this.proxyOf.nodes)e.parent=void 0;return this.proxyOf.nodes=[],this.markDirty(),this}removeChild(e){let t;e=this.index(e),this.proxyOf.nodes[e].parent=void 0,this.proxyOf.nodes.splice(e,1);for(let n in this.indexes)t=this.indexes[n],t>=e&&(this.indexes[n]=t-1);return this.markDirty(),this}replaceValues(e,t,n){return n||(n=t,t={}),this.walkDecls((o=>{t.props&&!t.props.includes(o.prop)||t.fast&&!o.value.includes(t.fast)||(o.value=o.value.replace(e,n))})),this.markDirty(),this}some(e){return this.nodes.some(e)}walk(e){return this.each(((t,n)=>{let o;try{o=e(t,n)}catch(r){throw t.addToError(r)}return!1!==o&&t.walk&&(o=t.walk(e)),o}))}walkAtRules(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("atrule"===n.type&&e.test(n.name))return t(n,o)})):this.walk(((n,o)=>{if("atrule"===n.type&&n.name===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("atrule"===e.type)return t(e,n)})))}walkComments(e){return this.walk(((t,n)=>{if("comment"===t.type)return e(t,n)}))}walkDecls(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("decl"===n.type&&e.test(n.prop))return t(n,o)})):this.walk(((n,o)=>{if("decl"===n.type&&n.prop===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("decl"===e.type)return t(e,n)})))}walkRules(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("rule"===n.type&&e.test(n.selector))return t(n,o)})):this.walk(((n,o)=>{if("rule"===n.type&&n.selector===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("rule"===e.type)return t(e,n)})))}get first(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}get last(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}};ii.registerParse=e=>{Yr=e},ii.registerRule=e=>{Jr=e},ii.registerAtRule=e=>{Kr=e},ii.registerRoot=e=>{Zr=e};var ai=ii;ii.default=ii,ii.rebuild=e=>{"atrule"===e.type?Object.setPrototypeOf(e,Kr.prototype):"rule"===e.type?Object.setPrototypeOf(e,Jr.prototype):"decl"===e.type?Object.setPrototypeOf(e,ei.prototype):"comment"===e.type?Object.setPrototypeOf(e,ti.prototype):"root"===e.type&&Object.setPrototypeOf(e,Zr.prototype),e[Qr]=!0,e.nodes&&e.nodes.forEach((e=>{ii.rebuild(e)}))};let si,li,ci=ai,ui=class extends ci{constructor(e){super({type:"document",...e}),this.nodes||(this.nodes=[])}toResult(e={}){return new si(new li,this,e).stringify()}};ui.registerLazyResult=e=>{si=e},ui.registerProcessor=e=>{li=e};var di=ui;ui.default=ui;let pi=class{constructor(e,t={}){if(this.type="warning",this.text=e,t.node&&t.node.source){let e=t.node.rangeBy(t);this.line=e.start.line,this.column=e.start.column,this.endLine=e.end.line,this.endColumn=e.end.column}for(let n in t)this[n]=t[n]}toString(){return this.node?this.node.error(this.text,{index:this.index,plugin:this.plugin,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text}};var hi=pi;pi.default=pi;let fi=hi,mi=class{constructor(e,t,n){this.processor=e,this.messages=[],this.root=t,this.opts=n,this.css=void 0,this.map=void 0}toString(){return this.css}warn(e,t={}){t.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(t.plugin=this.lastPlugin.postcssPlugin);let n=new fi(e,t);return this.messages.push(n),n}warnings(){return this.messages.filter((e=>"warning"===e.type))}get content(){return this.css}};var gi=mi;mi.default=mi;const vi="'".charCodeAt(0),yi='"'.charCodeAt(0),bi="\\".charCodeAt(0),wi="/".charCodeAt(0),ki="\n".charCodeAt(0),xi=" ".charCodeAt(0),Si="\f".charCodeAt(0),Ci="\t".charCodeAt(0),Ii="\r".charCodeAt(0),Ei="[".charCodeAt(0),Ti="]".charCodeAt(0),Oi="(".charCodeAt(0),Li=")".charCodeAt(0),Ai="{".charCodeAt(0),Mi="}".charCodeAt(0),Ri=";".charCodeAt(0),Pi="*".charCodeAt(0),Di=":".charCodeAt(0),Ni="@".charCodeAt(0),ji=/[\t\n\f\r "#'()/;[\\\]{}]/g,Fi=/[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g,Bi=/.[\r\n"'(/\\]/,_i=/[\da-f]/i;let Ui=ai,Hi=class extends Ui{constructor(e){super(e),this.type="atrule"}append(...e){return this.proxyOf.nodes||(this.nodes=[]),super.append(...e)}prepend(...e){return this.proxyOf.nodes||(this.nodes=[]),super.prepend(...e)}};var zi=Hi;Hi.default=Hi,Ui.registerAtRule(Hi);let qi,Wi,Vi=ai,Gi=class extends Vi{constructor(e){super(e),this.type="root",this.nodes||(this.nodes=[])}normalize(e,t,n){let o=super.normalize(e);if(t)if("prepend"===n)this.nodes.length>1?t.raws.before=this.nodes[1].raws.before:delete t.raws.before;else if(this.first!==t)for(let r of o)r.raws.before=t.raws.before;return o}removeChild(e,t){let n=this.index(e);return!t&&0===n&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[n].raws.before),super.removeChild(e)}toResult(e={}){return new qi(new Wi,this,e).stringify()}};Gi.registerLazyResult=e=>{qi=e},Gi.registerProcessor=e=>{Wi=e};var Xi=Gi;Gi.default=Gi,Vi.registerRoot(Gi);let Yi={comma:e=>Yi.split(e,[","],!0),space:e=>Yi.split(e,[" ","\n","\t"]),split(e,t,n){let o=[],r="",i=!1,a=0,s=!1,l="",c=!1;for(let u of e)c?c=!1:"\\"===u?c=!0:s?u===l&&(s=!1):'"'===u||"'"===u?(s=!0,l=u):"("===u?a+=1:")"===u?a>0&&(a-=1):0===a&&t.includes(u)&&(i=!0),i?(""!==r&&o.push(r.trim()),r="",i=!1):r+=u;return(n||""!==r)&&o.push(r.trim()),o}};var Ji=Yi;Yi.default=Yi;let Ki=ai,Zi=Ji,$i=class extends Ki{constructor(e){super(e),this.type="rule",this.nodes||(this.nodes=[])}get selectors(){return Zi.comma(this.selector)}set selectors(e){let t=this.selector?this.selector.match(/,\s*/):null,n=t?t[0]:","+this.raw("between","beforeOpen");this.selector=e.join(n)}};var Qi=$i;$i.default=$i,Ki.registerRule($i);let ea=cr,ta=function(e,t={}){let n,o,r,i,a,s,l,c,u,d,p=e.css.valueOf(),h=t.ignoreErrors,f=p.length,m=0,g=[],v=[];function y(t){throw e.error("Unclosed "+t,m)}return{back:function(e){v.push(e)},endOfFile:function(){return 0===v.length&&m>=f},nextToken:function(e){if(v.length)return v.pop();if(m>=f)return;let t=!!e&&e.ignoreUnclosed;switch(n=p.charCodeAt(m),n){case ki:case xi:case Ci:case Ii:case Si:o=m;do{o+=1,n=p.charCodeAt(o)}while(n===xi||n===ki||n===Ci||n===Ii||n===Si);d=["space",p.slice(m,o)],m=o-1;break;case Ei:case Ti:case Ai:case Mi:case Di:case Ri:case Li:{let e=String.fromCharCode(n);d=[e,e,m];break}case Oi:if(c=g.length?g.pop()[1]:"",u=p.charCodeAt(m+1),"url"===c&&u!==vi&&u!==yi&&u!==xi&&u!==ki&&u!==Ci&&u!==Si&&u!==Ii){o=m;do{if(s=!1,o=p.indexOf(")",o+1),-1===o){if(h||t){o=m;break}y("bracket")}for(l=o;p.charCodeAt(l-1)===bi;)l-=1,s=!s}while(s);d=["brackets",p.slice(m,o+1),m,o],m=o}else o=p.indexOf(")",m+1),i=p.slice(m,o+1),-1===o||Bi.test(i)?d=["(","(",m]:(d=["brackets",i,m,o],m=o);break;case vi:case yi:r=n===vi?"'":'"',o=m;do{if(s=!1,o=p.indexOf(r,o+1),-1===o){if(h||t){o=m+1;break}y("string")}for(l=o;p.charCodeAt(l-1)===bi;)l-=1,s=!s}while(s);d=["string",p.slice(m,o+1),m,o],m=o;break;case Ni:ji.lastIndex=m+1,ji.test(p),o=0===ji.lastIndex?p.length-1:ji.lastIndex-2,d=["at-word",p.slice(m,o+1),m,o],m=o;break;case bi:for(o=m,a=!0;p.charCodeAt(o+1)===bi;)o+=1,a=!a;if(n=p.charCodeAt(o+1),a&&n!==wi&&n!==xi&&n!==ki&&n!==Ci&&n!==Ii&&n!==Si&&(o+=1,_i.test(p.charAt(o)))){for(;_i.test(p.charAt(o+1));)o+=1;p.charCodeAt(o+1)===xi&&(o+=1)}d=["word",p.slice(m,o+1),m,o],m=o;break;default:n===wi&&p.charCodeAt(m+1)===Pi?(o=p.indexOf("*/",m+2)+1,0===o&&(h||t?o=p.length:y("comment")),d=["comment",p.slice(m,o+1),m,o],m=o):(Fi.lastIndex=m+1,Fi.test(p),o=0===Fi.lastIndex?p.length-1:Fi.lastIndex-2,d=["word",p.slice(m,o+1),m,o],g.push(d),m=o)}return m++,d},position:function(){return m}}},na=Xr,oa=zi,ra=Xi,ia=Qi;const aa={empty:!0,space:!0};var sa=class{constructor(e){this.input=e,this.root=new ra,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:e,start:{column:1,line:1,offset:0}}}atrule(e){let t,n,o,r=new oa;r.name=e[1].slice(1),""===r.name&&this.unnamedAtrule(r,e),this.init(r,e[2]);let i=!1,a=!1,s=[],l=[];for(;!this.tokenizer.endOfFile();){if(t=(e=this.tokenizer.nextToken())[0],"("===t||"["===t?l.push("("===t?")":"]"):"{"===t&&l.length>0?l.push("}"):t===l[l.length-1]&&l.pop(),0===l.length){if(";"===t){r.source.end=this.getPosition(e[2]),r.source.end.offset++,this.semicolon=!0;break}if("{"===t){a=!0;break}if("}"===t){if(s.length>0){for(o=s.length-1,n=s[o];n&&"space"===n[0];)n=s[--o];n&&(r.source.end=this.getPosition(n[3]||n[2]),r.source.end.offset++)}this.end(e);break}s.push(e)}else s.push(e);if(this.tokenizer.endOfFile()){i=!0;break}}r.raws.between=this.spacesAndCommentsFromEnd(s),s.length?(r.raws.afterName=this.spacesAndCommentsFromStart(s),this.raw(r,"params",s),i&&(e=s[s.length-1],r.source.end=this.getPosition(e[3]||e[2]),r.source.end.offset++,this.spaces=r.raws.between,r.raws.between="")):(r.raws.afterName="",r.params=""),a&&(r.nodes=[],this.current=r)}checkMissedSemicolon(e){let t=this.colon(e);if(!1===t)return;let n,o=0;for(let r=t-1;r>=0&&(n=e[r],"space"===n[0]||(o+=1,2!==o));r--);throw this.input.error("Missed semicolon","word"===n[0]?n[3]+1:n[2])}colon(e){let t,n,o,r=0;for(let[i,a]of e.entries()){if(t=a,n=t[0],"("===n&&(r+=1),")"===n&&(r-=1),0===r&&":"===n){if(o){if("word"===o[0]&&"progid"===o[1])continue;return i}this.doubleColon(t)}o=t}return!1}comment(e){let t=new na;this.init(t,e[2]),t.source.end=this.getPosition(e[3]||e[2]),t.source.end.offset++;let n=e[1].slice(2,-2);if(/^\s*$/.test(n))t.text="",t.raws.left=n,t.raws.right="";else{let e=n.match(/^(\s*)([^]*\S)(\s*)$/);t.text=e[2],t.raws.left=e[1],t.raws.right=e[3]}}createTokenizer(){this.tokenizer=ta(this.input)}decl(e,t){let n=new ea;this.init(n,e[0][2]);let o,r=e[e.length-1];for(";"===r[0]&&(this.semicolon=!0,e.pop()),n.source.end=this.getPosition(r[3]||r[2]||function(e){for(let t=e.length-1;t>=0;t--){let n=e[t],o=n[3]||n[2];if(o)return o}}(e)),n.source.end.offset++;"word"!==e[0][0];)1===e.length&&this.unknownWord(e),n.raws.before+=e.shift()[1];for(n.source.start=this.getPosition(e[0][2]),n.prop="";e.length;){let t=e[0][0];if(":"===t||"space"===t||"comment"===t)break;n.prop+=e.shift()[1]}for(n.raws.between="";e.length;){if(o=e.shift(),":"===o[0]){n.raws.between+=o[1];break}"word"===o[0]&&/\w/.test(o[1])&&this.unknownWord([o]),n.raws.between+=o[1]}"_"!==n.prop[0]&&"*"!==n.prop[0]||(n.raws.before+=n.prop[0],n.prop=n.prop.slice(1));let i,a=[];for(;e.length&&(i=e[0][0],"space"===i||"comment"===i);)a.push(e.shift());this.precheckMissedSemicolon(e);for(let s=e.length-1;s>=0;s--){if(o=e[s],"!important"===o[1].toLowerCase()){n.important=!0;let t=this.stringFrom(e,s);t=this.spacesFromEnd(e)+t," !important"!==t&&(n.raws.important=t);break}if("important"===o[1].toLowerCase()){let t=e.slice(0),o="";for(let e=s;e>0;e--){let n=t[e][0];if(0===o.trim().indexOf("!")&&"space"!==n)break;o=t.pop()[1]+o}0===o.trim().indexOf("!")&&(n.important=!0,n.raws.important=o,e=t)}if("space"!==o[0]&&"comment"!==o[0])break}e.some((e=>"space"!==e[0]&&"comment"!==e[0]))&&(n.raws.between+=a.map((e=>e[1])).join(""),a=[]),this.raw(n,"value",a.concat(e),t),n.value.includes(":")&&!t&&this.checkMissedSemicolon(e)}doubleColon(e){throw this.input.error("Double colon",{offset:e[2]},{offset:e[2]+e[1].length})}emptyRule(e){let t=new ia;this.init(t,e[2]),t.selector="",t.raws.between="",this.current=t}end(e){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(e[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(e)}endFile(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position())}freeSemicolon(e){if(this.spaces+=e[1],this.current.nodes){let e=this.current.nodes[this.current.nodes.length-1];e&&"rule"===e.type&&!e.raws.ownSemicolon&&(e.raws.ownSemicolon=this.spaces,this.spaces="")}}getPosition(e){let t=this.input.fromOffset(e);return{column:t.col,line:t.line,offset:e}}init(e,t){this.current.push(e),e.source={input:this.input,start:this.getPosition(t)},e.raws.before=this.spaces,this.spaces="","comment"!==e.type&&(this.semicolon=!1)}other(e){let t=!1,n=null,o=!1,r=null,i=[],a=e[1].startsWith("--"),s=[],l=e;for(;l;){if(n=l[0],s.push(l),"("===n||"["===n)r||(r=l),i.push("("===n?")":"]");else if(a&&o&&"{"===n)r||(r=l),i.push("}");else if(0===i.length){if(";"===n){if(o)return void this.decl(s,a);break}if("{"===n)return void this.rule(s);if("}"===n){this.tokenizer.back(s.pop()),t=!0;break}":"===n&&(o=!0)}else n===i[i.length-1]&&(i.pop(),0===i.length&&(r=null));l=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(t=!0),i.length>0&&this.unclosedBracket(r),t&&o){if(!a)for(;s.length&&(l=s[s.length-1][0],"space"===l||"comment"===l);)this.tokenizer.back(s.pop());this.decl(s,a)}else this.unknownWord(s)}parse(){let e;for(;!this.tokenizer.endOfFile();)switch(e=this.tokenizer.nextToken(),e[0]){case"space":this.spaces+=e[1];break;case";":this.freeSemicolon(e);break;case"}":this.end(e);break;case"comment":this.comment(e);break;case"at-word":this.atrule(e);break;case"{":this.emptyRule(e);break;default:this.other(e)}this.endFile()}precheckMissedSemicolon(){}raw(e,t,n,o){let r,i,a,s,l=n.length,c="",u=!0;for(let d=0;de+t[1]),"");e.raws[t]={raw:o,value:c}}e[t]=c}rule(e){e.pop();let t=new ia;this.init(t,e[0][2]),t.raws.between=this.spacesAndCommentsFromEnd(e),this.raw(t,"selector",e),this.current=t}spacesAndCommentsFromEnd(e){let t,n="";for(;e.length&&(t=e[e.length-1][0],"space"===t||"comment"===t);)n=e.pop()[1]+n;return n}spacesAndCommentsFromStart(e){let t,n="";for(;e.length&&(t=e[0][0],"space"===t||"comment"===t);)n+=e.shift()[1];return n}spacesFromEnd(e){let t,n="";for(;e.length&&(t=e[e.length-1][0],"space"===t);)n=e.pop()[1]+n;return n}stringFrom(e,t){let n="";for(let o=t;oLa(e))),e}let Aa={},Ma=class e{constructor(t,n,o){let r;if(this.stringified=!1,this.processed=!1,"object"!=typeof n||null===n||"root"!==n.type&&"document"!==n.type)if(n instanceof e||n instanceof ba)r=La(n.root),n.map&&(void 0===o.map&&(o.map={}),o.map.inline||(o.map.inline=!1),o.map.prev=n.map);else{let e=wa;o.syntax&&(e=o.syntax.parse),o.parser&&(e=o.parser),e.parse&&(e=e.parse);try{r=e(n,o)}catch(i){this.processed=!0,this.error=i}r&&!r[fa]&&va.rebuild(r)}else r=La(n);this.result=new ba(t,r,o),this.helpers={...Aa,postcss:Aa,result:this.result},this.plugins=this.processor.plugins.map((e=>"object"==typeof e&&e.prepare?{...e,...e.prepare(this.result)}:e))}async(){return this.error?Promise.reject(this.error):this.processed?Promise.resolve(this.result):(this.processing||(this.processing=this.runAsync()),this.processing)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}getAsyncError(){throw new Error("Use process(css).then(cb) to work with async plugins")}handleError(e,t){let n=this.result.lastPlugin;try{t&&t.addToError(e),this.error=e,"CssSyntaxError"!==e.name||e.plugin?n.postcssVersion:(e.plugin=n.postcssPlugin,e.setMessage())}catch(o){console&&console.error&&console.error(o)}return e}prepareVisitors(){this.listeners={};let e=(e,t,n)=>{this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].push([e,n])};for(let t of this.plugins)if("object"==typeof t)for(let n in t){if(!Sa[n]&&/^[A-Z]/.test(n))throw new Error(`Unknown event ${n} in ${t.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`);if(!Ca[n])if("object"==typeof t[n])for(let o in t[n])e(t,"*"===o?n:n+"-"+o.toLowerCase(),t[n][o]);else"function"==typeof t[n]&&e(t,n,t[n])}this.hasListener=Object.keys(this.listeners).length>0}async runAsync(){this.plugin=0;for(let n=0;n0;){let e=this.visitTick(n);if(Ea(e))try{await e}catch(t){let e=n[n.length-1].node;throw this.handleError(t,e)}}}if(this.listeners.OnceExit)for(let[n,o]of this.listeners.OnceExit){this.result.lastPlugin=n;try{if("document"===e.type){let t=e.nodes.map((e=>o(e,this.helpers)));await Promise.all(t)}else await o(e,this.helpers)}catch(t){throw this.handleError(t)}}}return this.processed=!0,this.stringify()}runOnRoot(e){this.result.lastPlugin=e;try{if("object"==typeof e&&e.Once){if("document"===this.result.root.type){let t=this.result.root.nodes.map((t=>e.Once(t,this.helpers)));return Ea(t[0])?Promise.all(t):t}return e.Once(this.result.root,this.helpers)}if("function"==typeof e)return e(this.result.root,this.result)}catch(t){throw this.handleError(t)}}stringify(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();let e=this.result.opts,t=ga;e.syntax&&(t=e.syntax.stringify),e.stringifier&&(t=e.stringifier),t.stringify&&(t=t.stringify);let n=new ma(t,this.result.root,this.result.opts).generate();return this.result.css=n[0],this.result.map=n[1],this.result}sync(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(let e of this.plugins){if(Ea(this.runOnRoot(e)))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){let e=this.result.root;for(;!e[ha];)e[ha]=!0,this.walkSync(e);if(this.listeners.OnceExit)if("document"===e.type)for(let t of e.nodes)this.visitSync(this.listeners.OnceExit,t);else this.visitSync(this.listeners.OnceExit,e)}return this.result}then(e,t){return this.async().then(e,t)}toString(){return this.css}visitSync(e,t){for(let[o,r]of e){let e;this.result.lastPlugin=o;try{e=r(t,this.helpers)}catch(n){throw this.handleError(n,t.proxyOf)}if("root"!==t.type&&"document"!==t.type&&!t.parent)return!0;if(Ea(e))throw this.getAsyncError()}}visitTick(e){let t=e[e.length-1],{node:n,visitors:o}=t;if("root"!==n.type&&"document"!==n.type&&!n.parent)return void e.pop();if(o.length>0&&t.visitorIndex{e[ha]||this.walkSync(e)}));else{let t=this.listeners[n];if(t&&this.visitSync(t,e.toProxy()))return}}warnings(){return this.sync().warnings()}get content(){return this.stringify().content}get css(){return this.stringify().css}get map(){return this.stringify().map}get messages(){return this.sync().messages}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){return this.sync().root}get[Symbol.toStringTag](){return"LazyResult"}};Ma.registerPostcss=e=>{Aa=e};var Ra=Ma;Ma.default=Ma,ka.registerLazyResult(Ma),ya.registerLazyResult(Ma);let Pa=Wr,Da=$o,Na=pa;const ja=gi;let Fa=class{constructor(e,t,n){let o;t=t.toString(),this.stringified=!1,this._processor=e,this._css=t,this._opts=n,this._map=void 0;let r=Da;this.result=new ja(this._processor,o,this._opts),this.result.css=t;let i=this;Object.defineProperty(this.result,"root",{get:()=>i.root});let a=new Pa(r,o,this._opts,t);if(a.isMap()){let[e,t]=a.generate();e&&(this.result.css=e),t&&(this.result.map=t)}else a.clearAnnotation(),this.result.css=a.css}async(){return this.error?Promise.reject(this.error):Promise.resolve(this.result)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}sync(){if(this.error)throw this.error;return this.result}then(e,t){return this.async().then(e,t)}toString(){return this._css}warnings(){return[]}get content(){return this.result.css}get css(){return this.result.css}get map(){return this.result.map}get messages(){return[]}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){if(this._root)return this._root;let e,t=Na;try{e=t(this._css,this._opts)}catch(n){this.error=n}if(this.error)throw this.error;return this._root=e,e}get[Symbol.toStringTag](){return"NoWorkResult"}};var Ba=Fa;Fa.default=Fa;let _a=Ba,Ua=Ra,Ha=di,za=Xi,qa=class{constructor(e=[]){this.version="8.4.38",this.plugins=this.normalize(e)}normalize(e){let t=[];for(let n of e)if(!0===n.postcss?n=n():n.postcss&&(n=n.postcss),"object"==typeof n&&Array.isArray(n.plugins))t=t.concat(n.plugins);else if("object"==typeof n&&n.postcssPlugin)t.push(n);else if("function"==typeof n)t.push(n);else{if("object"!=typeof n||!n.parse&&!n.stringify)throw new Error(n+" is not a PostCSS plugin")}return t}process(e,t={}){return this.plugins.length||t.parser||t.stringifier||t.syntax?new Ua(this,e,t):new _a(this,e,t)}use(e){return this.plugins=this.plugins.concat(this.normalize([e])),this}};var Wa=qa;qa.default=qa,za.registerProcessor(qa),Ha.registerProcessor(qa);let Va=cr,Ga=yr,Xa=Xr,Ya=zi,Ja=Pr,Ka=Xi,Za=Qi;function $a(e,t){if(Array.isArray(e))return e.map((e=>$a(e)));let{inputs:n,...o}=e;if(n){t=[];for(let e of n){let n={...e,__proto__:Ja.prototype};n.map&&(n.map={...n.map,__proto__:Ga.prototype}),t.push(n)}}if(o.nodes&&(o.nodes=e.nodes.map((e=>$a(e,t)))),o.source){let{inputId:e,...n}=o.source;o.source=n,null!=e&&(o.source.input=t[e])}if("root"===o.type)return new Ka(o);if("decl"===o.type)return new Va(o);if("rule"===o.type)return new Za(o);if("comment"===o.type)return new Xa(o);if("atrule"===o.type)return new Ya(o);throw new Error("Unknown node type: "+e.type)}var Qa=$a;$a.default=$a;let es=Vo,ts=cr,ns=Ra,os=ai,rs=Wa,is=$o,as=Qa,ss=di,ls=hi,cs=Xr,us=zi,ds=gi,ps=Pr,hs=pa,fs=Ji,ms=Qi,gs=Xi,vs=ar;function ys(...e){return 1===e.length&&Array.isArray(e[0])&&(e=e[0]),new rs(e)}ys.plugin=function(e,t){let n,o=!1;function r(...n){console&&console.warn&&!o&&(o=!0,console.warn(e+": postcss.plugin was deprecated. Migration guide:\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration"),process.env.LANG&&process.env.LANG.startsWith("cn")&&console.warn(e+": 里面 postcss.plugin 被弃用. 迁移指南:\nhttps://www.w3ctech.com/topic/2226"));let r=t(...n);return r.postcssPlugin=e,r.postcssVersion=(new rs).version,r}return Object.defineProperty(r,"postcss",{get:()=>(n||(n=r()),n)}),r.process=function(e,t,n){return ys([r(n)]).process(e,t)},r},ys.stringify=is,ys.parse=hs,ys.fromJSON=as,ys.list=fs,ys.comment=e=>new cs(e),ys.atRule=e=>new us(e),ys.decl=e=>new ts(e),ys.rule=e=>new ms(e),ys.root=e=>new gs(e),ys.document=e=>new ss(e),ys.CssSyntaxError=es,ys.Declaration=ts,ys.Container=os,ys.Processor=rs,ys.Document=ss,ys.Comment=cs,ys.Warning=ls,ys.AtRule=us,ys.Result=ds,ys.Input=ps,ys.Rule=ms,ys.Root=gs,ys.Node=vs,ns.registerPostcss(ys);var bs=ys;ys.default=ys;const ws=No(bs);ws.stringify,ws.fromJSON,ws.plugin,ws.parse,ws.list,ws.document,ws.comment,ws.atRule,ws.rule,ws.decl,ws.root,ws.CssSyntaxError,ws.Declaration,ws.Container,ws.Processor,ws.Document,ws.Comment,ws.Warning,ws.AtRule,ws.Result,ws.Input,ws.Rule,ws.Root,ws.Node;var ks=Object.defineProperty,xs=(e,t,n)=>((e,t,n)=>t in e?ks(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,"symbol"!=typeof t?t+"":t,n);function Ss(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function Cs(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var n=function e(){return this instanceof e?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,o.get?o:{enumerable:!0,get:function(){return e[t]}})})),n}var Is={exports:{}},Es=String,Ts=function(){return{isColorSupported:!1,reset:Es,bold:Es,dim:Es,italic:Es,underline:Es,inverse:Es,hidden:Es,strikethrough:Es,black:Es,red:Es,green:Es,yellow:Es,blue:Es,magenta:Es,cyan:Es,white:Es,gray:Es,bgBlack:Es,bgRed:Es,bgGreen:Es,bgYellow:Es,bgBlue:Es,bgMagenta:Es,bgCyan:Es,bgWhite:Es}};Is.exports=Ts(),Is.exports.createColors=Ts;var Os=Is.exports;const Ls=Cs(Object.freeze(Object.defineProperty({__proto__:null,default:{}},Symbol.toStringTag,{value:"Module"})));let As=Os,Ms=Ls,Rs=class e extends Error{constructor(t,n,o,r,i,a){super(t),this.name="CssSyntaxError",this.reason=t,i&&(this.file=i),r&&(this.source=r),a&&(this.plugin=a),void 0!==n&&void 0!==o&&("number"==typeof n?(this.line=n,this.column=o):(this.line=n.line,this.column=n.column,this.endLine=o.line,this.endColumn=o.column)),this.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(this,e)}setMessage(){this.message=this.plugin?this.plugin+": ":"",this.message+=this.file?this.file:"",void 0!==this.line&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason}showSourceCode(e){if(!this.source)return"";let t=this.source;null==e&&(e=As.isColorSupported),Ms&&e&&(t=Ms(t));let n,o,r=t.split(/\r?\n/),i=Math.max(this.line-3,0),a=Math.min(this.line+2,r.length),s=String(a).length;if(e){let{bold:e,gray:t,red:r}=As.createColors(!0);n=t=>e(r(t)),o=e=>t(e)}else n=o=e=>e;return r.slice(i,a).map(((e,t)=>{let r=i+1+t,a=" "+(" "+r).slice(-s)+" | ";if(r===this.line){let t=o(a.replace(/\d/g," "))+e.slice(0,this.column-1).replace(/[^\t]/g," ");return n(">")+o(a)+e+"\n "+t+n("^")}return" "+o(a)+e})).join("\n")}toString(){let e=this.showSourceCode();return e&&(e="\n\n"+e+"\n"),this.name+": "+this.message+e}};var Ps=Rs;Rs.default=Rs;var Ds={};Ds.isClean=Symbol("isClean"),Ds.my=Symbol("my");const Ns={after:"\n",beforeClose:"\n",beforeComment:"\n",beforeDecl:"\n",beforeOpen:" ",beforeRule:"\n",colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:!1};let js=class{constructor(e){this.builder=e}atrule(e,t){let n="@"+e.name,o=e.params?this.rawValue(e,"params"):"";if(void 0!==e.raws.afterName?n+=e.raws.afterName:o&&(n+=" "),e.nodes)this.block(e,n+o);else{let r=(e.raws.between||"")+(t?";":"");this.builder(n+o+r,e)}}beforeAfter(e,t){let n;n="decl"===e.type?this.raw(e,null,"beforeDecl"):"comment"===e.type?this.raw(e,null,"beforeComment"):"before"===t?this.raw(e,null,"beforeRule"):this.raw(e,null,"beforeClose");let o=e.parent,r=0;for(;o&&"root"!==o.type;)r+=1,o=o.parent;if(n.includes("\n")){let t=this.raw(e,null,"indent");if(t.length)for(let e=0;e0&&"comment"===e.nodes[t].type;)t-=1;let n=this.raw(e,"semicolon");for(let o=0;o{if(o=e.raws[t],void 0!==o)return!1}))}var a;return void 0===o&&(o=Ns[n]),i.rawCache[n]=o,o}rawBeforeClose(e){let t;return e.walk((e=>{if(e.nodes&&e.nodes.length>0&&void 0!==e.raws.after)return t=e.raws.after,t.includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1})),t&&(t=t.replace(/\S/g,"")),t}rawBeforeComment(e,t){let n;return e.walkComments((e=>{if(void 0!==e.raws.before)return n=e.raws.before,n.includes("\n")&&(n=n.replace(/[^\n]+$/,"")),!1})),void 0===n?n=this.raw(t,null,"beforeDecl"):n&&(n=n.replace(/\S/g,"")),n}rawBeforeDecl(e,t){let n;return e.walkDecls((e=>{if(void 0!==e.raws.before)return n=e.raws.before,n.includes("\n")&&(n=n.replace(/[^\n]+$/,"")),!1})),void 0===n?n=this.raw(t,null,"beforeRule"):n&&(n=n.replace(/\S/g,"")),n}rawBeforeOpen(e){let t;return e.walk((e=>{if("decl"!==e.type&&(t=e.raws.between,void 0!==t))return!1})),t}rawBeforeRule(e){let t;return e.walk((n=>{if(n.nodes&&(n.parent!==e||e.first!==n)&&void 0!==n.raws.before)return t=n.raws.before,t.includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1})),t&&(t=t.replace(/\S/g,"")),t}rawColon(e){let t;return e.walkDecls((e=>{if(void 0!==e.raws.between)return t=e.raws.between.replace(/[^\s:]/g,""),!1})),t}rawEmptyBody(e){let t;return e.walk((e=>{if(e.nodes&&0===e.nodes.length&&(t=e.raws.after,void 0!==t))return!1})),t}rawIndent(e){if(e.raws.indent)return e.raws.indent;let t;return e.walk((n=>{let o=n.parent;if(o&&o!==e&&o.parent&&o.parent===e&&void 0!==n.raws.before){let e=n.raws.before.split("\n");return t=e[e.length-1],t=t.replace(/\S/g,""),!1}})),t}rawSemicolon(e){let t;return e.walk((e=>{if(e.nodes&&e.nodes.length&&"decl"===e.last.type&&(t=e.raws.semicolon,void 0!==t))return!1})),t}rawValue(e,t){let n=e[t],o=e.raws[t];return o&&o.value===n?o.raw:n}root(e){this.body(e),e.raws.after&&this.builder(e.raws.after)}rule(e){this.block(e,this.rawValue(e,"selector")),e.raws.ownSemicolon&&this.builder(e.raws.ownSemicolon,e,"end")}stringify(e,t){if(!this[e.type])throw new Error("Unknown AST node type "+e.type+". Maybe you need to change PostCSS stringifier.");this[e.type](e,t)}};var Fs=js;js.default=js;let Bs=Fs;function _s(e,t){new Bs(t).stringify(e)}var Us=_s;_s.default=_s;let{isClean:Hs,my:zs}=Ds,qs=Ps,Ws=Fs,Vs=Us;function Gs(e,t){let n=new e.constructor;for(let o in e){if(!Object.prototype.hasOwnProperty.call(e,o))continue;if("proxyCache"===o)continue;let r=e[o],i=typeof r;"parent"===o&&"object"===i?t&&(n[o]=t):"source"===o?n[o]=r:Array.isArray(r)?n[o]=r.map((e=>Gs(e,n))):("object"===i&&null!==r&&(r=Gs(r)),n[o]=r)}return n}let Xs=class{constructor(e={}){this.raws={},this[Hs]=!1,this[zs]=!0;for(let t in e)if("nodes"===t){this.nodes=[];for(let n of e[t])"function"==typeof n.clone?this.append(n.clone()):this.append(n)}else this[t]=e[t]}addToError(e){if(e.postcssNode=this,e.stack&&this.source&&/\n\s{4}at /.test(e.stack)){let t=this.source;e.stack=e.stack.replace(/\n\s{4}at /,`$&${t.input.from}:${t.start.line}:${t.start.column}$&`)}return e}after(e){return this.parent.insertAfter(this,e),this}assign(e={}){for(let t in e)this[t]=e[t];return this}before(e){return this.parent.insertBefore(this,e),this}cleanRaws(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between}clone(e={}){let t=Gs(this);for(let n in e)t[n]=e[n];return t}cloneAfter(e={}){let t=this.clone(e);return this.parent.insertAfter(this,t),t}cloneBefore(e={}){let t=this.clone(e);return this.parent.insertBefore(this,t),t}error(e,t={}){if(this.source){let{end:n,start:o}=this.rangeBy(t);return this.source.input.error(e,{column:o.column,line:o.line},{column:n.column,line:n.line},t)}return new qs(e)}getProxyProcessor(){return{get:(e,t)=>"proxyOf"===t?e:"root"===t?()=>e.root().toProxy():e[t],set:(e,t,n)=>(e[t]===n||(e[t]=n,"prop"!==t&&"value"!==t&&"name"!==t&&"params"!==t&&"important"!==t&&"text"!==t||e.markDirty()),!0)}}markDirty(){if(this[Hs]){this[Hs]=!1;let e=this;for(;e=e.parent;)e[Hs]=!1}}next(){if(!this.parent)return;let e=this.parent.index(this);return this.parent.nodes[e+1]}positionBy(e,t){let n=this.source.start;if(e.index)n=this.positionInside(e.index,t);else if(e.word){let o=(t=this.toString()).indexOf(e.word);-1!==o&&(n=this.positionInside(o,t))}return n}positionInside(e,t){let n=t||this.toString(),o=this.source.start.column,r=this.source.start.line;for(let i=0;i"object"==typeof e&&e.toJSON?e.toJSON(null,t):e));else if("object"==typeof e&&e.toJSON)n[i]=e.toJSON(null,t);else if("source"===i){let o=t.get(e.input);null==o&&(o=r,t.set(e.input,r),r++),n[i]={end:e.end,inputId:o,start:e.start}}else n[i]=e}return o&&(n.inputs=[...t.keys()].map((e=>e.toJSON()))),n}toProxy(){return this.proxyCache||(this.proxyCache=new Proxy(this,this.getProxyProcessor())),this.proxyCache}toString(e=Vs){e.stringify&&(e=e.stringify);let t="";return e(this,(e=>{t+=e})),t}warn(e,t,n){let o={node:this};for(let r in n)o[r]=n[r];return e.warn(t,o)}get proxyOf(){return this}};var Ys=Xs;Xs.default=Xs;let Js=Ys,Ks=class extends Js{constructor(e){e&&void 0!==e.value&&"string"!=typeof e.value&&(e={...e,value:String(e.value)}),super(e),this.type="decl"}get variable(){return this.prop.startsWith("--")||"$"===this.prop[0]}};var Zs=Ks;Ks.default=Ks;var $s={nanoid:(e=21)=>{let t="",n=e;for(;n--;)t+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[64*Math.random()|0];return t},customAlphabet:(e,t=21)=>(n=t)=>{let o="",r=n;for(;r--;)o+=e[Math.random()*e.length|0];return o}};let{SourceMapConsumer:Qs,SourceMapGenerator:el}=Ls,{existsSync:tl,readFileSync:nl}=Ls,{dirname:ol,join:rl}=Ls;let il=class{constructor(e,t){if(!1===t.map)return;this.loadAnnotation(e),this.inline=this.startWith(this.annotation,"data:");let n=t.map?t.map.prev:void 0,o=this.loadMap(t.from,n);!this.mapFile&&t.from&&(this.mapFile=t.from),this.mapFile&&(this.root=ol(this.mapFile)),o&&(this.text=o)}consumer(){return this.consumerCache||(this.consumerCache=new Qs(this.text)),this.consumerCache}decodeInline(e){if(/^data:application\/json;charset=utf-?8,/.test(e)||/^data:application\/json,/.test(e))return decodeURIComponent(e.substr(RegExp.lastMatch.length));if(/^data:application\/json;charset=utf-?8;base64,/.test(e)||/^data:application\/json;base64,/.test(e))return t=e.substr(RegExp.lastMatch.length),Buffer?Buffer.from(t,"base64").toString():window.atob(t);var t;let n=e.match(/data:application\/json;([^,]+),/)[1];throw new Error("Unsupported source map encoding "+n)}getAnnotationURL(e){return e.replace(/^\/\*\s*# sourceMappingURL=/,"").trim()}isMap(e){return"object"==typeof e&&("string"==typeof e.mappings||"string"==typeof e._mappings||Array.isArray(e.sections))}loadAnnotation(e){let t=e.match(/\/\*\s*# sourceMappingURL=/gm);if(!t)return;let n=e.lastIndexOf(t.pop()),o=e.indexOf("*/",n);n>-1&&o>-1&&(this.annotation=this.getAnnotationURL(e.substring(n,o)))}loadFile(e){if(this.root=ol(e),tl(e))return this.mapFile=e,nl(e,"utf-8").toString().trim()}loadMap(e,t){if(!1===t)return!1;if(t){if("string"==typeof t)return t;if("function"!=typeof t){if(t instanceof Qs)return el.fromSourceMap(t).toString();if(t instanceof el)return t.toString();if(this.isMap(t))return JSON.stringify(t);throw new Error("Unsupported previous source map format: "+t.toString())}{let n=t(e);if(n){let e=this.loadFile(n);if(!e)throw new Error("Unable to load previous source map: "+n.toString());return e}}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){let t=this.annotation;return e&&(t=rl(ol(e),t)),this.loadFile(t)}}}startWith(e,t){return!!e&&e.substr(0,t.length)===t}withContent(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)}};var al=il;il.default=il;let{SourceMapConsumer:sl,SourceMapGenerator:ll}=Ls,{fileURLToPath:cl,pathToFileURL:ul}=Ls,{isAbsolute:dl,resolve:pl}=Ls,{nanoid:hl}=$s,fl=Ls,ml=Ps,gl=al,vl=Symbol("fromOffsetCache"),yl=Boolean(sl&&ll),bl=Boolean(pl&&dl),wl=class{constructor(e,t={}){if(null==e||"object"==typeof e&&!e.toString)throw new Error(`PostCSS received ${e} instead of CSS string`);if(this.css=e.toString(),"\ufeff"===this.css[0]||"￾"===this.css[0]?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,t.from&&(!bl||/^\w+:\/\//.test(t.from)||dl(t.from)?this.file=t.from:this.file=pl(t.from)),bl&&yl){let e=new gl(this.css,t);if(e.text){this.map=e;let t=e.consumer().file;!this.file&&t&&(this.file=this.mapResolve(t))}}this.file||(this.id=""),this.map&&(this.map.file=this.from)}error(e,t,n,o={}){let r,i,a;if(t&&"object"==typeof t){let e=t,o=n;if("number"==typeof e.offset){let o=this.fromOffset(e.offset);t=o.line,n=o.col}else t=e.line,n=e.column;if("number"==typeof o.offset){let e=this.fromOffset(o.offset);i=e.line,a=e.col}else i=o.line,a=o.column}else if(!n){let e=this.fromOffset(t);t=e.line,n=e.col}let s=this.origin(t,n,i,a);return r=s?new ml(e,void 0===s.endLine?s.line:{column:s.column,line:s.line},void 0===s.endLine?s.column:{column:s.endColumn,line:s.endLine},s.source,s.file,o.plugin):new ml(e,void 0===i?t:{column:n,line:t},void 0===i?n:{column:a,line:i},this.css,this.file,o.plugin),r.input={column:n,endColumn:a,endLine:i,line:t,source:this.css},this.file&&(ul&&(r.input.url=ul(this.file).toString()),r.input.file=this.file),r}fromOffset(e){let t,n;if(this[vl])n=this[vl];else{let e=this.css.split("\n");n=new Array(e.length);let t=0;for(let o=0,r=e.length;o=t)o=n.length-1;else{let t,r=n.length-2;for(;o>1),e=n[t+1])){o=t;break}o=t+1}}return{col:e-n[o]+1,line:o+1}}mapResolve(e){return/^\w+:\/\//.test(e)?e:pl(this.map.consumer().sourceRoot||this.map.root||".",e)}origin(e,t,n,o){if(!this.map)return!1;let r,i,a=this.map.consumer(),s=a.originalPositionFor({column:t,line:e});if(!s.source)return!1;"number"==typeof n&&(r=a.originalPositionFor({column:o,line:n})),i=dl(s.source)?ul(s.source):new URL(s.source,this.map.consumer().sourceRoot||ul(this.map.mapFile));let l={column:s.column,endColumn:r&&r.column,endLine:r&&r.line,line:s.line,url:i.toString()};if("file:"===i.protocol){if(!cl)throw new Error("file: protocol is not available in this PostCSS build");l.file=cl(i)}let c=a.sourceContentFor(s.source);return c&&(l.source=c),l}toJSON(){let e={};for(let t of["hasBOM","css","file","id"])null!=this[t]&&(e[t]=this[t]);return this.map&&(e.map={...this.map},e.map.consumerCache&&(e.map.consumerCache=void 0)),e}get from(){return this.file||this.id}};var kl=wl;wl.default=wl,fl&&fl.registerInput&&fl.registerInput(wl);let{SourceMapConsumer:xl,SourceMapGenerator:Sl}=Ls,{dirname:Cl,relative:Il,resolve:El,sep:Tl}=Ls,{pathToFileURL:Ol}=Ls,Ll=kl,Al=Boolean(xl&&Sl),Ml=Boolean(Cl&&El&&Il&&Tl);var Rl=class{constructor(e,t,n,o){this.stringify=e,this.mapOpts=n.map||{},this.root=t,this.opts=n,this.css=o,this.originalCSS=o,this.usesFileUrls=!this.mapOpts.from&&this.mapOpts.absolute,this.memoizedFileURLs=new Map,this.memoizedPaths=new Map,this.memoizedURLs=new Map}addAnnotation(){let e;e=this.isInline()?"data:application/json;base64,"+this.toBase64(this.map.toString()):"string"==typeof this.mapOpts.annotation?this.mapOpts.annotation:"function"==typeof this.mapOpts.annotation?this.mapOpts.annotation(this.opts.to,this.root):this.outputFile()+".map";let t="\n";this.css.includes("\r\n")&&(t="\r\n"),this.css+=t+"/*# sourceMappingURL="+e+" */"}applyPrevMaps(){for(let e of this.previous()){let t,n=this.toUrl(this.path(e.file)),o=e.root||Cl(e.file);!1===this.mapOpts.sourcesContent?(t=new xl(e.text),t.sourcesContent&&(t.sourcesContent=null)):t=e.consumer(),this.map.applySourceMap(t,n,this.toUrl(this.path(o)))}}clearAnnotation(){if(!1!==this.mapOpts.annotation)if(this.root){let e;for(let t=this.root.nodes.length-1;t>=0;t--)e=this.root.nodes[t],"comment"===e.type&&0===e.text.indexOf("# sourceMappingURL=")&&this.root.removeChild(t)}else this.css&&(this.css=this.css.replace(/\n*?\/\*#[\S\s]*?\*\/$/gm,""))}generate(){if(this.clearAnnotation(),Ml&&Al&&this.isMap())return this.generateMap();{let e="";return this.stringify(this.root,(t=>{e+=t})),[e]}}generateMap(){if(this.root)this.generateString();else if(1===this.previous().length){let e=this.previous()[0].consumer();e.file=this.outputFile(),this.map=Sl.fromSourceMap(e,{ignoreInvalidMapping:!0})}else this.map=new Sl({file:this.outputFile(),ignoreInvalidMapping:!0}),this.map.addMapping({generated:{column:0,line:1},original:{column:0,line:1},source:this.opts.from?this.toUrl(this.path(this.opts.from)):""});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]}generateString(){this.css="",this.map=new Sl({file:this.outputFile(),ignoreInvalidMapping:!0});let e,t,n=1,o=1,r="",i={generated:{column:0,line:0},original:{column:0,line:0},source:""};this.stringify(this.root,((a,s,l)=>{if(this.css+=a,s&&"end"!==l&&(i.generated.line=n,i.generated.column=o-1,s.source&&s.source.start?(i.source=this.sourcePath(s),i.original.line=s.source.start.line,i.original.column=s.source.start.column-1,this.map.addMapping(i)):(i.source=r,i.original.line=1,i.original.column=0,this.map.addMapping(i))),e=a.match(/\n/g),e?(n+=e.length,t=a.lastIndexOf("\n"),o=a.length-t):o+=a.length,s&&"start"!==l){let e=s.parent||{raws:{}};("decl"===s.type||"atrule"===s.type&&!s.nodes)&&s===e.last&&!e.raws.semicolon||(s.source&&s.source.end?(i.source=this.sourcePath(s),i.original.line=s.source.end.line,i.original.column=s.source.end.column-1,i.generated.line=n,i.generated.column=o-2,this.map.addMapping(i)):(i.source=r,i.original.line=1,i.original.column=0,i.generated.line=n,i.generated.column=o-1,this.map.addMapping(i)))}}))}isAnnotation(){return!!this.isInline()||(void 0!==this.mapOpts.annotation?this.mapOpts.annotation:!this.previous().length||this.previous().some((e=>e.annotation)))}isInline(){if(void 0!==this.mapOpts.inline)return this.mapOpts.inline;let e=this.mapOpts.annotation;return(void 0===e||!0===e)&&(!this.previous().length||this.previous().some((e=>e.inline)))}isMap(){return void 0!==this.opts.map?!!this.opts.map:this.previous().length>0}isSourcesContent(){return void 0!==this.mapOpts.sourcesContent?this.mapOpts.sourcesContent:!this.previous().length||this.previous().some((e=>e.withContent()))}outputFile(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"}path(e){if(this.mapOpts.absolute)return e;if(60===e.charCodeAt(0))return e;if(/^\w+:\/\//.test(e))return e;let t=this.memoizedPaths.get(e);if(t)return t;let n=this.opts.to?Cl(this.opts.to):".";"string"==typeof this.mapOpts.annotation&&(n=Cl(El(n,this.mapOpts.annotation)));let o=Il(n,e);return this.memoizedPaths.set(e,o),o}previous(){if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk((e=>{if(e.source&&e.source.input.map){let t=e.source.input.map;this.previousMaps.includes(t)||this.previousMaps.push(t)}}));else{let e=new Ll(this.originalCSS,this.opts);e.map&&this.previousMaps.push(e.map)}return this.previousMaps}setSourcesContent(){let e={};if(this.root)this.root.walk((t=>{if(t.source){let n=t.source.input.from;if(n&&!e[n]){e[n]=!0;let o=this.usesFileUrls?this.toFileUrl(n):this.toUrl(this.path(n));this.map.setSourceContent(o,t.source.input.css)}}}));else if(this.css){let e=this.opts.from?this.toUrl(this.path(this.opts.from)):"";this.map.setSourceContent(e,this.css)}}sourcePath(e){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(e.source.input.from):this.toUrl(this.path(e.source.input.from))}toBase64(e){return Buffer?Buffer.from(e).toString("base64"):window.btoa(unescape(encodeURIComponent(e)))}toFileUrl(e){let t=this.memoizedFileURLs.get(e);if(t)return t;if(Ol){let t=Ol(e).toString();return this.memoizedFileURLs.set(e,t),t}throw new Error("`map.absolute` option is not available in this PostCSS build")}toUrl(e){let t=this.memoizedURLs.get(e);if(t)return t;"\\"===Tl&&(e=e.replace(/\\/g,"/"));let n=encodeURI(e).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(e,n),n}};let Pl=Ys,Dl=class extends Pl{constructor(e){super(e),this.type="comment"}};var Nl=Dl;Dl.default=Dl;let jl,Fl,Bl,_l,{isClean:Ul,my:Hl}=Ds,zl=Zs,ql=Nl,Wl=Ys;function Vl(e){return e.map((e=>(e.nodes&&(e.nodes=Vl(e.nodes)),delete e.source,e)))}function Gl(e){if(e[Ul]=!1,e.proxyOf.nodes)for(let t of e.proxyOf.nodes)Gl(t)}let Xl=class e extends Wl{append(...e){for(let t of e){let e=this.normalize(t,this.last);for(let t of e)this.proxyOf.nodes.push(t)}return this.markDirty(),this}cleanRaws(e){if(super.cleanRaws(e),this.nodes)for(let t of this.nodes)t.cleanRaws(e)}each(e){if(!this.proxyOf.nodes)return;let t,n,o=this.getIterator();for(;this.indexes[o]"proxyOf"===t?e:e[t]?"each"===t||"string"==typeof t&&t.startsWith("walk")?(...n)=>e[t](...n.map((e=>"function"==typeof e?(t,n)=>e(t.toProxy(),n):e))):"every"===t||"some"===t?n=>e[t](((e,...t)=>n(e.toProxy(),...t))):"root"===t?()=>e.root().toProxy():"nodes"===t?e.nodes.map((e=>e.toProxy())):"first"===t||"last"===t?e[t].toProxy():e[t]:e[t],set:(e,t,n)=>(e[t]===n||(e[t]=n,"name"!==t&&"params"!==t&&"selector"!==t||e.markDirty()),!0)}}index(e){return"number"==typeof e?e:(e.proxyOf&&(e=e.proxyOf),this.proxyOf.nodes.indexOf(e))}insertAfter(e,t){let n,o=this.index(e),r=this.normalize(t,this.proxyOf.nodes[o]).reverse();o=this.index(e);for(let i of r)this.proxyOf.nodes.splice(o+1,0,i);for(let i in this.indexes)n=this.indexes[i],o(t[Hl]||e.rebuild(t),(t=t.proxyOf).parent&&t.parent.removeChild(t),t[Ul]&&Gl(t),void 0===t.raws.before&&n&&void 0!==n.raws.before&&(t.raws.before=n.raws.before.replace(/\S/g,"")),t.parent=this.proxyOf,t)))}prepend(...e){e=e.reverse();for(let t of e){let e=this.normalize(t,this.first,"prepend").reverse();for(let t of e)this.proxyOf.nodes.unshift(t);for(let t in this.indexes)this.indexes[t]=this.indexes[t]+e.length}return this.markDirty(),this}push(e){return e.parent=this,this.proxyOf.nodes.push(e),this}removeAll(){for(let e of this.proxyOf.nodes)e.parent=void 0;return this.proxyOf.nodes=[],this.markDirty(),this}removeChild(e){let t;e=this.index(e),this.proxyOf.nodes[e].parent=void 0,this.proxyOf.nodes.splice(e,1);for(let n in this.indexes)t=this.indexes[n],t>=e&&(this.indexes[n]=t-1);return this.markDirty(),this}replaceValues(e,t,n){return n||(n=t,t={}),this.walkDecls((o=>{t.props&&!t.props.includes(o.prop)||t.fast&&!o.value.includes(t.fast)||(o.value=o.value.replace(e,n))})),this.markDirty(),this}some(e){return this.nodes.some(e)}walk(e){return this.each(((t,n)=>{let o;try{o=e(t,n)}catch(r){throw t.addToError(r)}return!1!==o&&t.walk&&(o=t.walk(e)),o}))}walkAtRules(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("atrule"===n.type&&e.test(n.name))return t(n,o)})):this.walk(((n,o)=>{if("atrule"===n.type&&n.name===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("atrule"===e.type)return t(e,n)})))}walkComments(e){return this.walk(((t,n)=>{if("comment"===t.type)return e(t,n)}))}walkDecls(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("decl"===n.type&&e.test(n.prop))return t(n,o)})):this.walk(((n,o)=>{if("decl"===n.type&&n.prop===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("decl"===e.type)return t(e,n)})))}walkRules(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("rule"===n.type&&e.test(n.selector))return t(n,o)})):this.walk(((n,o)=>{if("rule"===n.type&&n.selector===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("rule"===e.type)return t(e,n)})))}get first(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}get last(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}};Xl.registerParse=e=>{jl=e},Xl.registerRule=e=>{Fl=e},Xl.registerAtRule=e=>{Bl=e},Xl.registerRoot=e=>{_l=e};var Yl=Xl;Xl.default=Xl,Xl.rebuild=e=>{"atrule"===e.type?Object.setPrototypeOf(e,Bl.prototype):"rule"===e.type?Object.setPrototypeOf(e,Fl.prototype):"decl"===e.type?Object.setPrototypeOf(e,zl.prototype):"comment"===e.type?Object.setPrototypeOf(e,ql.prototype):"root"===e.type&&Object.setPrototypeOf(e,_l.prototype),e[Hl]=!0,e.nodes&&e.nodes.forEach((e=>{Xl.rebuild(e)}))};let Jl,Kl,Zl=Yl,$l=class extends Zl{constructor(e){super({type:"document",...e}),this.nodes||(this.nodes=[])}toResult(e={}){return new Jl(new Kl,this,e).stringify()}};$l.registerLazyResult=e=>{Jl=e},$l.registerProcessor=e=>{Kl=e};var Ql=$l;$l.default=$l;let ec=class{constructor(e,t={}){if(this.type="warning",this.text=e,t.node&&t.node.source){let e=t.node.rangeBy(t);this.line=e.start.line,this.column=e.start.column,this.endLine=e.end.line,this.endColumn=e.end.column}for(let n in t)this[n]=t[n]}toString(){return this.node?this.node.error(this.text,{index:this.index,plugin:this.plugin,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text}};var tc=ec;ec.default=ec;let nc=tc,oc=class{constructor(e,t,n){this.processor=e,this.messages=[],this.root=t,this.opts=n,this.css=void 0,this.map=void 0}toString(){return this.css}warn(e,t={}){t.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(t.plugin=this.lastPlugin.postcssPlugin);let n=new nc(e,t);return this.messages.push(n),n}warnings(){return this.messages.filter((e=>"warning"===e.type))}get content(){return this.css}};var rc=oc;oc.default=oc;const ic="'".charCodeAt(0),ac='"'.charCodeAt(0),sc="\\".charCodeAt(0),lc="/".charCodeAt(0),cc="\n".charCodeAt(0),uc=" ".charCodeAt(0),dc="\f".charCodeAt(0),pc="\t".charCodeAt(0),hc="\r".charCodeAt(0),fc="[".charCodeAt(0),mc="]".charCodeAt(0),gc="(".charCodeAt(0),vc=")".charCodeAt(0),yc="{".charCodeAt(0),bc="}".charCodeAt(0),wc=";".charCodeAt(0),kc="*".charCodeAt(0),xc=":".charCodeAt(0),Sc="@".charCodeAt(0),Cc=/[\t\n\f\r "#'()/;[\\\]{}]/g,Ic=/[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g,Ec=/.[\r\n"'(/\\]/,Tc=/[\da-f]/i;let Oc=Yl,Lc=class extends Oc{constructor(e){super(e),this.type="atrule"}append(...e){return this.proxyOf.nodes||(this.nodes=[]),super.append(...e)}prepend(...e){return this.proxyOf.nodes||(this.nodes=[]),super.prepend(...e)}};var Ac=Lc;Lc.default=Lc,Oc.registerAtRule(Lc);let Mc,Rc,Pc=Yl,Dc=class extends Pc{constructor(e){super(e),this.type="root",this.nodes||(this.nodes=[])}normalize(e,t,n){let o=super.normalize(e);if(t)if("prepend"===n)this.nodes.length>1?t.raws.before=this.nodes[1].raws.before:delete t.raws.before;else if(this.first!==t)for(let r of o)r.raws.before=t.raws.before;return o}removeChild(e,t){let n=this.index(e);return!t&&0===n&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[n].raws.before),super.removeChild(e)}toResult(e={}){return new Mc(new Rc,this,e).stringify()}};Dc.registerLazyResult=e=>{Mc=e},Dc.registerProcessor=e=>{Rc=e};var Nc=Dc;Dc.default=Dc,Pc.registerRoot(Dc);let jc={comma:e=>jc.split(e,[","],!0),space:e=>jc.split(e,[" ","\n","\t"]),split(e,t,n){let o=[],r="",i=!1,a=0,s=!1,l="",c=!1;for(let u of e)c?c=!1:"\\"===u?c=!0:s?u===l&&(s=!1):'"'===u||"'"===u?(s=!0,l=u):"("===u?a+=1:")"===u?a>0&&(a-=1):0===a&&t.includes(u)&&(i=!0),i?(""!==r&&o.push(r.trim()),r="",i=!1):r+=u;return(n||""!==r)&&o.push(r.trim()),o}};var Fc=jc;jc.default=jc;let Bc=Yl,_c=Fc,Uc=class extends Bc{constructor(e){super(e),this.type="rule",this.nodes||(this.nodes=[])}get selectors(){return _c.comma(this.selector)}set selectors(e){let t=this.selector?this.selector.match(/,\s*/):null,n=t?t[0]:","+this.raw("between","beforeOpen");this.selector=e.join(n)}};var Hc=Uc;Uc.default=Uc,Bc.registerRule(Uc);let zc=Zs,qc=function(e,t={}){let n,o,r,i,a,s,l,c,u,d,p=e.css.valueOf(),h=t.ignoreErrors,f=p.length,m=0,g=[],v=[];function y(t){throw e.error("Unclosed "+t,m)}return{back:function(e){v.push(e)},endOfFile:function(){return 0===v.length&&m>=f},nextToken:function(e){if(v.length)return v.pop();if(m>=f)return;let t=!!e&&e.ignoreUnclosed;switch(n=p.charCodeAt(m),n){case cc:case uc:case pc:case hc:case dc:o=m;do{o+=1,n=p.charCodeAt(o)}while(n===uc||n===cc||n===pc||n===hc||n===dc);d=["space",p.slice(m,o)],m=o-1;break;case fc:case mc:case yc:case bc:case xc:case wc:case vc:{let e=String.fromCharCode(n);d=[e,e,m];break}case gc:if(c=g.length?g.pop()[1]:"",u=p.charCodeAt(m+1),"url"===c&&u!==ic&&u!==ac&&u!==uc&&u!==cc&&u!==pc&&u!==dc&&u!==hc){o=m;do{if(s=!1,o=p.indexOf(")",o+1),-1===o){if(h||t){o=m;break}y("bracket")}for(l=o;p.charCodeAt(l-1)===sc;)l-=1,s=!s}while(s);d=["brackets",p.slice(m,o+1),m,o],m=o}else o=p.indexOf(")",m+1),i=p.slice(m,o+1),-1===o||Ec.test(i)?d=["(","(",m]:(d=["brackets",i,m,o],m=o);break;case ic:case ac:r=n===ic?"'":'"',o=m;do{if(s=!1,o=p.indexOf(r,o+1),-1===o){if(h||t){o=m+1;break}y("string")}for(l=o;p.charCodeAt(l-1)===sc;)l-=1,s=!s}while(s);d=["string",p.slice(m,o+1),m,o],m=o;break;case Sc:Cc.lastIndex=m+1,Cc.test(p),o=0===Cc.lastIndex?p.length-1:Cc.lastIndex-2,d=["at-word",p.slice(m,o+1),m,o],m=o;break;case sc:for(o=m,a=!0;p.charCodeAt(o+1)===sc;)o+=1,a=!a;if(n=p.charCodeAt(o+1),a&&n!==lc&&n!==uc&&n!==cc&&n!==pc&&n!==hc&&n!==dc&&(o+=1,Tc.test(p.charAt(o)))){for(;Tc.test(p.charAt(o+1));)o+=1;p.charCodeAt(o+1)===uc&&(o+=1)}d=["word",p.slice(m,o+1),m,o],m=o;break;default:n===lc&&p.charCodeAt(m+1)===kc?(o=p.indexOf("*/",m+2)+1,0===o&&(h||t?o=p.length:y("comment")),d=["comment",p.slice(m,o+1),m,o],m=o):(Ic.lastIndex=m+1,Ic.test(p),o=0===Ic.lastIndex?p.length-1:Ic.lastIndex-2,d=["word",p.slice(m,o+1),m,o],g.push(d),m=o)}return m++,d},position:function(){return m}}},Wc=Nl,Vc=Ac,Gc=Nc,Xc=Hc;const Yc={empty:!0,space:!0};var Jc=class{constructor(e){this.input=e,this.root=new Gc,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:e,start:{column:1,line:1,offset:0}}}atrule(e){let t,n,o,r=new Vc;r.name=e[1].slice(1),""===r.name&&this.unnamedAtrule(r,e),this.init(r,e[2]);let i=!1,a=!1,s=[],l=[];for(;!this.tokenizer.endOfFile();){if(t=(e=this.tokenizer.nextToken())[0],"("===t||"["===t?l.push("("===t?")":"]"):"{"===t&&l.length>0?l.push("}"):t===l[l.length-1]&&l.pop(),0===l.length){if(";"===t){r.source.end=this.getPosition(e[2]),r.source.end.offset++,this.semicolon=!0;break}if("{"===t){a=!0;break}if("}"===t){if(s.length>0){for(o=s.length-1,n=s[o];n&&"space"===n[0];)n=s[--o];n&&(r.source.end=this.getPosition(n[3]||n[2]),r.source.end.offset++)}this.end(e);break}s.push(e)}else s.push(e);if(this.tokenizer.endOfFile()){i=!0;break}}r.raws.between=this.spacesAndCommentsFromEnd(s),s.length?(r.raws.afterName=this.spacesAndCommentsFromStart(s),this.raw(r,"params",s),i&&(e=s[s.length-1],r.source.end=this.getPosition(e[3]||e[2]),r.source.end.offset++,this.spaces=r.raws.between,r.raws.between="")):(r.raws.afterName="",r.params=""),a&&(r.nodes=[],this.current=r)}checkMissedSemicolon(e){let t=this.colon(e);if(!1===t)return;let n,o=0;for(let r=t-1;r>=0&&(n=e[r],"space"===n[0]||(o+=1,2!==o));r--);throw this.input.error("Missed semicolon","word"===n[0]?n[3]+1:n[2])}colon(e){let t,n,o,r=0;for(let[i,a]of e.entries()){if(t=a,n=t[0],"("===n&&(r+=1),")"===n&&(r-=1),0===r&&":"===n){if(o){if("word"===o[0]&&"progid"===o[1])continue;return i}this.doubleColon(t)}o=t}return!1}comment(e){let t=new Wc;this.init(t,e[2]),t.source.end=this.getPosition(e[3]||e[2]),t.source.end.offset++;let n=e[1].slice(2,-2);if(/^\s*$/.test(n))t.text="",t.raws.left=n,t.raws.right="";else{let e=n.match(/^(\s*)([^]*\S)(\s*)$/);t.text=e[2],t.raws.left=e[1],t.raws.right=e[3]}}createTokenizer(){this.tokenizer=qc(this.input)}decl(e,t){let n=new zc;this.init(n,e[0][2]);let o,r=e[e.length-1];for(";"===r[0]&&(this.semicolon=!0,e.pop()),n.source.end=this.getPosition(r[3]||r[2]||function(e){for(let t=e.length-1;t>=0;t--){let n=e[t],o=n[3]||n[2];if(o)return o}}(e)),n.source.end.offset++;"word"!==e[0][0];)1===e.length&&this.unknownWord(e),n.raws.before+=e.shift()[1];for(n.source.start=this.getPosition(e[0][2]),n.prop="";e.length;){let t=e[0][0];if(":"===t||"space"===t||"comment"===t)break;n.prop+=e.shift()[1]}for(n.raws.between="";e.length;){if(o=e.shift(),":"===o[0]){n.raws.between+=o[1];break}"word"===o[0]&&/\w/.test(o[1])&&this.unknownWord([o]),n.raws.between+=o[1]}"_"!==n.prop[0]&&"*"!==n.prop[0]||(n.raws.before+=n.prop[0],n.prop=n.prop.slice(1));let i,a=[];for(;e.length&&(i=e[0][0],"space"===i||"comment"===i);)a.push(e.shift());this.precheckMissedSemicolon(e);for(let s=e.length-1;s>=0;s--){if(o=e[s],"!important"===o[1].toLowerCase()){n.important=!0;let t=this.stringFrom(e,s);t=this.spacesFromEnd(e)+t," !important"!==t&&(n.raws.important=t);break}if("important"===o[1].toLowerCase()){let t=e.slice(0),o="";for(let e=s;e>0;e--){let n=t[e][0];if(0===o.trim().indexOf("!")&&"space"!==n)break;o=t.pop()[1]+o}0===o.trim().indexOf("!")&&(n.important=!0,n.raws.important=o,e=t)}if("space"!==o[0]&&"comment"!==o[0])break}e.some((e=>"space"!==e[0]&&"comment"!==e[0]))&&(n.raws.between+=a.map((e=>e[1])).join(""),a=[]),this.raw(n,"value",a.concat(e),t),n.value.includes(":")&&!t&&this.checkMissedSemicolon(e)}doubleColon(e){throw this.input.error("Double colon",{offset:e[2]},{offset:e[2]+e[1].length})}emptyRule(e){let t=new Xc;this.init(t,e[2]),t.selector="",t.raws.between="",this.current=t}end(e){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(e[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(e)}endFile(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position())}freeSemicolon(e){if(this.spaces+=e[1],this.current.nodes){let e=this.current.nodes[this.current.nodes.length-1];e&&"rule"===e.type&&!e.raws.ownSemicolon&&(e.raws.ownSemicolon=this.spaces,this.spaces="")}}getPosition(e){let t=this.input.fromOffset(e);return{column:t.col,line:t.line,offset:e}}init(e,t){this.current.push(e),e.source={input:this.input,start:this.getPosition(t)},e.raws.before=this.spaces,this.spaces="","comment"!==e.type&&(this.semicolon=!1)}other(e){let t=!1,n=null,o=!1,r=null,i=[],a=e[1].startsWith("--"),s=[],l=e;for(;l;){if(n=l[0],s.push(l),"("===n||"["===n)r||(r=l),i.push("("===n?")":"]");else if(a&&o&&"{"===n)r||(r=l),i.push("}");else if(0===i.length){if(";"===n){if(o)return void this.decl(s,a);break}if("{"===n)return void this.rule(s);if("}"===n){this.tokenizer.back(s.pop()),t=!0;break}":"===n&&(o=!0)}else n===i[i.length-1]&&(i.pop(),0===i.length&&(r=null));l=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(t=!0),i.length>0&&this.unclosedBracket(r),t&&o){if(!a)for(;s.length&&(l=s[s.length-1][0],"space"===l||"comment"===l);)this.tokenizer.back(s.pop());this.decl(s,a)}else this.unknownWord(s)}parse(){let e;for(;!this.tokenizer.endOfFile();)switch(e=this.tokenizer.nextToken(),e[0]){case"space":this.spaces+=e[1];break;case";":this.freeSemicolon(e);break;case"}":this.end(e);break;case"comment":this.comment(e);break;case"at-word":this.atrule(e);break;case"{":this.emptyRule(e);break;default:this.other(e)}this.endFile()}precheckMissedSemicolon(){}raw(e,t,n,o){let r,i,a,s,l=n.length,c="",u=!0;for(let d=0;de+t[1]),"");e.raws[t]={raw:o,value:c}}e[t]=c}rule(e){e.pop();let t=new Xc;this.init(t,e[0][2]),t.raws.between=this.spacesAndCommentsFromEnd(e),this.raw(t,"selector",e),this.current=t}spacesAndCommentsFromEnd(e){let t,n="";for(;e.length&&(t=e[e.length-1][0],"space"===t||"comment"===t);)n=e.pop()[1]+n;return n}spacesAndCommentsFromStart(e){let t,n="";for(;e.length&&(t=e[0][0],"space"===t||"comment"===t);)n+=e.shift()[1];return n}spacesFromEnd(e){let t,n="";for(;e.length&&(t=e[e.length-1][0],"space"===t);)n=e.pop()[1]+n;return n}stringFrom(e,t){let n="";for(let o=t;ovu(e))),e}let yu={},bu=class e{constructor(t,n,o){let r;if(this.stringified=!1,this.processed=!1,"object"!=typeof n||null===n||"root"!==n.type&&"document"!==n.type)if(n instanceof e||n instanceof su)r=vu(n.root),n.map&&(void 0===o.map&&(o.map={}),o.map.inline||(o.map.inline=!1),o.map.prev=n.map);else{let e=lu;o.syntax&&(e=o.syntax.parse),o.parser&&(e=o.parser),e.parse&&(e=e.parse);try{r=e(n,o)}catch(i){this.processed=!0,this.error=i}r&&!r[nu]&&iu.rebuild(r)}else r=vu(n);this.result=new su(t,r,o),this.helpers={...yu,postcss:yu,result:this.result},this.plugins=this.processor.plugins.map((e=>"object"==typeof e&&e.prepare?{...e,...e.prepare(this.result)}:e))}async(){return this.error?Promise.reject(this.error):this.processed?Promise.resolve(this.result):(this.processing||(this.processing=this.runAsync()),this.processing)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}getAsyncError(){throw new Error("Use process(css).then(cb) to work with async plugins")}handleError(e,t){let n=this.result.lastPlugin;try{t&&t.addToError(e),this.error=e,"CssSyntaxError"!==e.name||e.plugin?n.postcssVersion:(e.plugin=n.postcssPlugin,e.setMessage())}catch(o){console&&console.error&&console.error(o)}return e}prepareVisitors(){this.listeners={};let e=(e,t,n)=>{this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].push([e,n])};for(let t of this.plugins)if("object"==typeof t)for(let n in t){if(!du[n]&&/^[A-Z]/.test(n))throw new Error(`Unknown event ${n} in ${t.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`);if(!pu[n])if("object"==typeof t[n])for(let o in t[n])e(t,"*"===o?n:n+"-"+o.toLowerCase(),t[n][o]);else"function"==typeof t[n]&&e(t,n,t[n])}this.hasListener=Object.keys(this.listeners).length>0}async runAsync(){this.plugin=0;for(let n=0;n0;){let e=this.visitTick(n);if(fu(e))try{await e}catch(t){let e=n[n.length-1].node;throw this.handleError(t,e)}}}if(this.listeners.OnceExit)for(let[n,o]of this.listeners.OnceExit){this.result.lastPlugin=n;try{if("document"===e.type){let t=e.nodes.map((e=>o(e,this.helpers)));await Promise.all(t)}else await o(e,this.helpers)}catch(t){throw this.handleError(t)}}}return this.processed=!0,this.stringify()}runOnRoot(e){this.result.lastPlugin=e;try{if("object"==typeof e&&e.Once){if("document"===this.result.root.type){let t=this.result.root.nodes.map((t=>e.Once(t,this.helpers)));return fu(t[0])?Promise.all(t):t}return e.Once(this.result.root,this.helpers)}if("function"==typeof e)return e(this.result.root,this.result)}catch(t){throw this.handleError(t)}}stringify(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();let e=this.result.opts,t=ru;e.syntax&&(t=e.syntax.stringify),e.stringifier&&(t=e.stringifier),t.stringify&&(t=t.stringify);let n=new ou(t,this.result.root,this.result.opts).generate();return this.result.css=n[0],this.result.map=n[1],this.result}sync(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(let e of this.plugins){if(fu(this.runOnRoot(e)))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){let e=this.result.root;for(;!e[tu];)e[tu]=!0,this.walkSync(e);if(this.listeners.OnceExit)if("document"===e.type)for(let t of e.nodes)this.visitSync(this.listeners.OnceExit,t);else this.visitSync(this.listeners.OnceExit,e)}return this.result}then(e,t){return this.async().then(e,t)}toString(){return this.css}visitSync(e,t){for(let[o,r]of e){let e;this.result.lastPlugin=o;try{e=r(t,this.helpers)}catch(n){throw this.handleError(n,t.proxyOf)}if("root"!==t.type&&"document"!==t.type&&!t.parent)return!0;if(fu(e))throw this.getAsyncError()}}visitTick(e){let t=e[e.length-1],{node:n,visitors:o}=t;if("root"!==n.type&&"document"!==n.type&&!n.parent)return void e.pop();if(o.length>0&&t.visitorIndex{e[tu]||this.walkSync(e)}));else{let t=this.listeners[n];if(t&&this.visitSync(t,e.toProxy()))return}}warnings(){return this.sync().warnings()}get content(){return this.stringify().content}get css(){return this.stringify().css}get map(){return this.stringify().map}get messages(){return this.sync().messages}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){return this.sync().root}get[Symbol.toStringTag](){return"LazyResult"}};bu.registerPostcss=e=>{yu=e};var wu=bu;bu.default=bu,cu.registerLazyResult(bu),au.registerLazyResult(bu);let ku=Rl,xu=Us,Su=eu;const Cu=rc;let Iu=class{constructor(e,t,n){let o;t=t.toString(),this.stringified=!1,this._processor=e,this._css=t,this._opts=n,this._map=void 0;let r=xu;this.result=new Cu(this._processor,o,this._opts),this.result.css=t;let i=this;Object.defineProperty(this.result,"root",{get:()=>i.root});let a=new ku(r,o,this._opts,t);if(a.isMap()){let[e,t]=a.generate();e&&(this.result.css=e),t&&(this.result.map=t)}else a.clearAnnotation(),this.result.css=a.css}async(){return this.error?Promise.reject(this.error):Promise.resolve(this.result)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}sync(){if(this.error)throw this.error;return this.result}then(e,t){return this.async().then(e,t)}toString(){return this._css}warnings(){return[]}get content(){return this.result.css}get css(){return this.result.css}get map(){return this.result.map}get messages(){return[]}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){if(this._root)return this._root;let e,t=Su;try{e=t(this._css,this._opts)}catch(n){this.error=n}if(this.error)throw this.error;return this._root=e,e}get[Symbol.toStringTag](){return"NoWorkResult"}};var Eu=Iu;Iu.default=Iu;let Tu=Eu,Ou=wu,Lu=Ql,Au=Nc,Mu=class{constructor(e=[]){this.version="8.4.38",this.plugins=this.normalize(e)}normalize(e){let t=[];for(let n of e)if(!0===n.postcss?n=n():n.postcss&&(n=n.postcss),"object"==typeof n&&Array.isArray(n.plugins))t=t.concat(n.plugins);else if("object"==typeof n&&n.postcssPlugin)t.push(n);else if("function"==typeof n)t.push(n);else{if("object"!=typeof n||!n.parse&&!n.stringify)throw new Error(n+" is not a PostCSS plugin")}return t}process(e,t={}){return this.plugins.length||t.parser||t.stringifier||t.syntax?new Ou(this,e,t):new Tu(this,e,t)}use(e){return this.plugins=this.plugins.concat(this.normalize([e])),this}};var Ru=Mu;Mu.default=Mu,Au.registerProcessor(Mu),Lu.registerProcessor(Mu);let Pu=Zs,Du=al,Nu=Nl,ju=Ac,Fu=kl,Bu=Nc,_u=Hc;function Uu(e,t){if(Array.isArray(e))return e.map((e=>Uu(e)));let{inputs:n,...o}=e;if(n){t=[];for(let e of n){let n={...e,__proto__:Fu.prototype};n.map&&(n.map={...n.map,__proto__:Du.prototype}),t.push(n)}}if(o.nodes&&(o.nodes=e.nodes.map((e=>Uu(e,t)))),o.source){let{inputId:e,...n}=o.source;o.source=n,null!=e&&(o.source.input=t[e])}if("root"===o.type)return new Bu(o);if("decl"===o.type)return new Pu(o);if("rule"===o.type)return new _u(o);if("comment"===o.type)return new Nu(o);if("atrule"===o.type)return new ju(o);throw new Error("Unknown node type: "+e.type)}var Hu=Uu;Uu.default=Uu;let zu=Ps,qu=Zs,Wu=wu,Vu=Yl,Gu=Ru,Xu=Us,Yu=Hu,Ju=Ql,Ku=tc,Zu=Nl,$u=Ac,Qu=rc,ed=kl,td=eu,nd=Fc,od=Hc,rd=Nc,id=Ys;function ad(...e){return 1===e.length&&Array.isArray(e[0])&&(e=e[0]),new Gu(e)}ad.plugin=function(e,t){let n,o=!1;function r(...n){console&&console.warn&&!o&&(o=!0,console.warn(e+": postcss.plugin was deprecated. Migration guide:\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration"),process.env.LANG&&process.env.LANG.startsWith("cn")&&console.warn(e+": 里面 postcss.plugin 被弃用. 迁移指南:\nhttps://www.w3ctech.com/topic/2226"));let r=t(...n);return r.postcssPlugin=e,r.postcssVersion=(new Gu).version,r}return Object.defineProperty(r,"postcss",{get:()=>(n||(n=r()),n)}),r.process=function(e,t,n){return ad([r(n)]).process(e,t)},r},ad.stringify=Xu,ad.parse=td,ad.fromJSON=Yu,ad.list=nd,ad.comment=e=>new Zu(e),ad.atRule=e=>new $u(e),ad.decl=e=>new qu(e),ad.rule=e=>new od(e),ad.root=e=>new rd(e),ad.document=e=>new Ju(e),ad.CssSyntaxError=zu,ad.Declaration=qu,ad.Container=Vu,ad.Processor=Gu,ad.Document=Ju,ad.Comment=Zu,ad.Warning=Ku,ad.AtRule=$u,ad.Result=Qu,ad.Input=ed,ad.Rule=od,ad.Root=rd,ad.Node=id,Wu.registerPostcss(ad);var sd=ad;ad.default=ad;const ld=Ss(sd);ld.stringify,ld.fromJSON,ld.plugin,ld.parse,ld.list,ld.document,ld.comment,ld.atRule,ld.rule,ld.decl,ld.root,ld.CssSyntaxError,ld.Declaration,ld.Container,ld.Processor,ld.Document,ld.Comment,ld.Warning,ld.AtRule,ld.Result,ld.Input,ld.Rule,ld.Root,ld.Node;class cd{constructor(...e){xs(this,"parentElement",null),xs(this,"parentNode",null),xs(this,"ownerDocument"),xs(this,"firstChild",null),xs(this,"lastChild",null),xs(this,"previousSibling",null),xs(this,"nextSibling",null),xs(this,"ELEMENT_NODE",1),xs(this,"TEXT_NODE",3),xs(this,"nodeType"),xs(this,"nodeName"),xs(this,"RRNodeType")}get childNodes(){const e=[];let t=this.firstChild;for(;t;)e.push(t),t=t.nextSibling;return e}contains(e){if(!(e instanceof cd))return!1;if(e.ownerDocument!==this.ownerDocument)return!1;if(e===this)return!0;for(;e.parentNode;){if(e.parentNode===this)return!0;e=e.parentNode}return!1}appendChild(e){throw new Error("RRDomException: Failed to execute 'appendChild' on 'RRNode': This RRNode type does not support this method.")}insertBefore(e,t){throw new Error("RRDomException: Failed to execute 'insertBefore' on 'RRNode': This RRNode type does not support this method.")}removeChild(e){throw new Error("RRDomException: Failed to execute 'removeChild' on 'RRNode': This RRNode type does not support this method.")}toString(){return"RRNode"}}const ud={Node:["childNodes","parentNode","parentElement","textContent"],ShadowRoot:["host","styleSheets"],Element:["shadowRoot","querySelector","querySelectorAll"],MutationObserver:[]},dd={Node:["contains","getRootNode"],ShadowRoot:["getSelection"],Element:[],MutationObserver:["constructor"]},pd={},hd=()=>!!globalThis.Zone;function fd(e){if(pd[e])return pd[e];const t=globalThis[e],n=t.prototype,o=e in ud?ud[e]:void 0,r=Boolean(o&&o.every((e=>{var t,o;return Boolean(null==(o=null==(t=Object.getOwnPropertyDescriptor(n,e))?void 0:t.get)?void 0:o.toString().includes("[native code]"))}))),i=e in dd?dd[e]:void 0,a=Boolean(i&&i.every((e=>{var t;return"function"==typeof n[e]&&(null==(t=n[e])?void 0:t.toString().includes("[native code]"))})));if(r&&a&&!hd())return pd[e]=t.prototype,t.prototype;try{const o=document.createElement("iframe");document.body.appendChild(o);const r=o.contentWindow;if(!r)return t.prototype;const i=r[e].prototype;return document.body.removeChild(o),i?pd[e]=i:n}catch{return n}}const md={};function gd(e,t,n){var o;const r=`${e}.${String(n)}`;if(md[r])return md[r].call(t);const i=fd(e),a=null==(o=Object.getOwnPropertyDescriptor(i,n))?void 0:o.get;return a?(md[r]=a,a.call(t)):t[n]}const vd={};function yd(e,t,n){const o=`${e}.${String(n)}`;if(vd[o])return vd[o].bind(t);const r=fd(e)[n];return"function"!=typeof r?t[n]:(vd[o]=r,r.bind(t))}function bd(){return fd("MutationObserver").constructor}const wd={childNodes:function(e){return gd("Node",e,"childNodes")},parentNode:function(e){return gd("Node",e,"parentNode")},parentElement:function(e){return gd("Node",e,"parentElement")},textContent:function(e){return gd("Node",e,"textContent")},contains:function(e,t){return yd("Node",e,"contains")(t)},getRootNode:function(e){return yd("Node",e,"getRootNode")()},host:function(e){return e&&"host"in e?gd("ShadowRoot",e,"host"):null},styleSheets:function(e){return e.styleSheets},shadowRoot:function(e){return e&&"shadowRoot"in e?gd("Element",e,"shadowRoot"):null},querySelector:function(e,t){return gd("Element",e,"querySelector")(t)},querySelectorAll:function(e,t){return gd("Element",e,"querySelectorAll")(t)},mutationObserver:bd};function kd(e,t,n=document){const o={capture:!0,passive:!0};return n.addEventListener(e,t,o),()=>n.removeEventListener(e,t,o)}const xd="Please stop import mirror directly. Instead of that,\r\nnow you can use replayer.getMirror() to access the mirror instance of a replayer,\r\nor you can use record.mirror to access the mirror instance during recording.";let Sd={map:{},getId:()=>(console.error(xd),-1),getNode:()=>(console.error(xd),null),removeNodeFromMap(){console.error(xd)},has:()=>(console.error(xd),!1),reset(){console.error(xd)}};function Cd(e,t,n={}){let o=null,r=0;return function(...i){const a=Date.now();r||!1!==n.leading||(r=a);const s=t-(a-r),l=this;s<=0||s>t?(o&&(clearTimeout(o),o=null),r=a,e.apply(l,i)):o||!1===n.trailing||(o=setTimeout((()=>{r=!1===n.leading?0:Date.now(),o=null,e.apply(l,i)}),s))}}function Id(e,t,n,o,r=window){const i=r.Object.getOwnPropertyDescriptor(e,t);return r.Object.defineProperty(e,t,o?n:{set(e){setTimeout((()=>{n.set.call(this,e)}),0),i&&i.set&&i.set.call(this,e)}}),()=>Id(e,t,i||{},!0)}function Ed(e,t,n){try{if(!(t in e))return()=>{};const o=e[t],r=n(o);return"function"==typeof r&&(r.prototype=r.prototype||{},Object.defineProperties(r,{__rrweb_original__:{enumerable:!1,value:o}})),e[t]=r,()=>{e[t]=o}}catch{return()=>{}}}"undefined"!=typeof window&&window.Proxy&&window.Reflect&&(Sd=new Proxy(Sd,{get:(e,t,n)=>("map"===t&&console.error(xd),Reflect.get(e,t,n))}));let Td=Date.now;function Od(e){var t,n,o,r;const i=e.document;return{left:i.scrollingElement?i.scrollingElement.scrollLeft:void 0!==e.pageXOffset?e.pageXOffset:i.documentElement.scrollLeft||(null==i?void 0:i.body)&&(null==(t=wd.parentElement(i.body))?void 0:t.scrollLeft)||(null==(n=null==i?void 0:i.body)?void 0:n.scrollLeft)||0,top:i.scrollingElement?i.scrollingElement.scrollTop:void 0!==e.pageYOffset?e.pageYOffset:(null==i?void 0:i.documentElement.scrollTop)||(null==i?void 0:i.body)&&(null==(o=wd.parentElement(i.body))?void 0:o.scrollTop)||(null==(r=null==i?void 0:i.body)?void 0:r.scrollTop)||0}}function Ld(){return window.innerHeight||document.documentElement&&document.documentElement.clientHeight||document.body&&document.body.clientHeight}function Ad(){return window.innerWidth||document.documentElement&&document.documentElement.clientWidth||document.body&&document.body.clientWidth}function Md(e){if(!e)return null;return e.nodeType===e.ELEMENT_NODE?e:wd.parentElement(e)}function Rd(e,t,n,o){if(!e)return!1;const r=Md(e);if(!r)return!1;try{if("string"==typeof t){if(r.classList.contains(t))return!0;if(o&&null!==r.closest("."+t))return!0}else if(Ao(r,t,o))return!0}catch(i){}if(n){if(r.matches(n))return!0;if(o&&null!==r.closest(n))return!0}return!1}function Pd(e,t,n){return!("TITLE"!==e.tagName||!n.headTitleMutations)||t.getId(e)===yo}function Dd(e,t){if($n(e))return!1;const n=t.getId(e);if(!t.has(n))return!0;const o=wd.parentNode(e);return(!o||o.nodeType!==e.DOCUMENT_NODE)&&(!o||Dd(o,t))}function Nd(e){return Boolean(e.changedTouches)}function jd(e,t){return Boolean("IFRAME"===e.nodeName&&t.getMeta(e))}function Fd(e,t){return Boolean("LINK"===e.nodeName&&e.nodeType===e.ELEMENT_NODE&&e.getAttribute&&"stylesheet"===e.getAttribute("rel")&&t.getMeta(e))}function Bd(e){return!!e&&(e instanceof cd&&"shadowRoot"in e?Boolean(e.shadowRoot):Boolean(wd.shadowRoot(e)))}/[1-9][0-9]{12}/.test(Date.now().toString())||(Td=()=>(new Date).getTime());class _d{constructor(){Fn(this,"id",1),Fn(this,"styleIDMap",new WeakMap),Fn(this,"idStyleMap",new Map)}getId(e){return this.styleIDMap.get(e)??-1}has(e){return this.styleIDMap.has(e)}add(e,t){if(this.has(e))return this.getId(e);let n;return n=void 0===t?this.id++:t,this.styleIDMap.set(e,n),this.idStyleMap.set(n,e),n}getStyle(e){return this.idStyleMap.get(e)||null}reset(){this.styleIDMap=new WeakMap,this.idStyleMap=new Map,this.id=1}generateId(){return this.id++}}function Ud(e){var t;let n=null;return"getRootNode"in e&&(null==(t=wd.getRootNode(e))?void 0:t.nodeType)===Node.DOCUMENT_FRAGMENT_NODE&&wd.host(wd.getRootNode(e))&&(n=wd.host(wd.getRootNode(e))),n}function Hd(e){const t=e.ownerDocument;if(!t)return!1;const n=function(e){let t,n=e;for(;t=Ud(n);)n=t;return n}(e);return wd.contains(t,n)}function zd(e){const t=e.ownerDocument;return!!t&&(wd.contains(t,e)||Hd(e))}var qd=(e=>(e[e.DomContentLoaded=0]="DomContentLoaded",e[e.Load=1]="Load",e[e.FullSnapshot=2]="FullSnapshot",e[e.IncrementalSnapshot=3]="IncrementalSnapshot",e[e.Meta=4]="Meta",e[e.Custom=5]="Custom",e[e.Plugin=6]="Plugin",e))(qd||{}),Wd=(e=>(e[e.Mutation=0]="Mutation",e[e.MouseMove=1]="MouseMove",e[e.MouseInteraction=2]="MouseInteraction",e[e.Scroll=3]="Scroll",e[e.ViewportResize=4]="ViewportResize",e[e.Input=5]="Input",e[e.TouchMove=6]="TouchMove",e[e.MediaInteraction=7]="MediaInteraction",e[e.StyleSheetRule=8]="StyleSheetRule",e[e.CanvasMutation=9]="CanvasMutation",e[e.Font=10]="Font",e[e.Log=11]="Log",e[e.Drag=12]="Drag",e[e.StyleDeclaration=13]="StyleDeclaration",e[e.Selection=14]="Selection",e[e.AdoptedStyleSheet=15]="AdoptedStyleSheet",e[e.CustomElement=16]="CustomElement",e))(Wd||{}),Vd=(e=>(e[e.MouseUp=0]="MouseUp",e[e.MouseDown=1]="MouseDown",e[e.Click=2]="Click",e[e.ContextMenu=3]="ContextMenu",e[e.DblClick=4]="DblClick",e[e.Focus=5]="Focus",e[e.Blur=6]="Blur",e[e.TouchStart=7]="TouchStart",e[e.TouchMove_Departed=8]="TouchMove_Departed",e[e.TouchEnd=9]="TouchEnd",e[e.TouchCancel=10]="TouchCancel",e))(Vd||{}),Gd=(e=>(e[e.Mouse=0]="Mouse",e[e.Pen=1]="Pen",e[e.Touch=2]="Touch",e))(Gd||{}),Xd=(e=>(e[e["2D"]=0]="2D",e[e.WebGL=1]="WebGL",e[e.WebGL2=2]="WebGL2",e))(Xd||{}),Yd=(e=>(e[e.Play=0]="Play",e[e.Pause=1]="Pause",e[e.Seeked=2]="Seeked",e[e.VolumeChange=3]="VolumeChange",e[e.RateChange=4]="RateChange",e))(Yd||{}),Jd=(e=>(e[e.Document=0]="Document",e[e.DocumentType=1]="DocumentType",e[e.Element=2]="Element",e[e.Text=3]="Text",e[e.CDATA=4]="CDATA",e[e.Comment=5]="Comment",e))(Jd||{});function Kd(e){return"__ln"in e}class Zd{constructor(){Fn(this,"length",0),Fn(this,"head",null),Fn(this,"tail",null)}get(e){if(e>=this.length)throw new Error("Position outside of list range");let t=this.head;for(let n=0;n`${e}@${t}`;class Qd{constructor(){Fn(this,"frozen",!1),Fn(this,"locked",!1),Fn(this,"texts",[]),Fn(this,"attributes",[]),Fn(this,"attributeMap",new WeakMap),Fn(this,"removes",[]),Fn(this,"mapRemoves",[]),Fn(this,"movedMap",{}),Fn(this,"addedSet",new Set),Fn(this,"movedSet",new Set),Fn(this,"droppedSet",new Set),Fn(this,"removesSubTreeCache",new Set),Fn(this,"mutationCb"),Fn(this,"blockClass"),Fn(this,"blockSelector"),Fn(this,"maskTextClass"),Fn(this,"maskTextSelector"),Fn(this,"inlineStylesheet"),Fn(this,"maskInputOptions"),Fn(this,"maskTextFn"),Fn(this,"maskInputFn"),Fn(this,"keepIframeSrcFn"),Fn(this,"recordCanvas"),Fn(this,"inlineImages"),Fn(this,"slimDOMOptions"),Fn(this,"dataURLOptions"),Fn(this,"doc"),Fn(this,"mirror"),Fn(this,"iframeManager"),Fn(this,"stylesheetManager"),Fn(this,"shadowDomManager"),Fn(this,"canvasManager"),Fn(this,"processedNodeManager"),Fn(this,"unattachedDoc"),Fn(this,"processMutations",(e=>{e.forEach(this.processMutation),this.emit()})),Fn(this,"emit",(()=>{if(this.frozen||this.locked)return;const e=[],t=new Set,n=new Zd,o=e=>{let t=e,n=yo;for(;n===yo;)t=t&&t.nextSibling,n=t&&this.mirror.getId(t);return n},r=r=>{const i=wd.parentNode(r);if(!i||!zd(r))return;let a=!1;if(r.nodeType===Node.TEXT_NODE){const e=i.tagName;if("TEXTAREA"===e)return;"STYLE"===e&&this.addedSet.has(i)&&(a=!0)}const s=$n(i)?this.mirror.getId(Ud(r)):this.mirror.getId(i),l=o(r);if(-1===s||-1===l)return n.addNode(r);const c=Do(r,{doc:this.doc,mirror:this.mirror,blockClass:this.blockClass,blockSelector:this.blockSelector,maskTextClass:this.maskTextClass,maskTextSelector:this.maskTextSelector,skipChild:!0,newlyAddedElement:!0,inlineStylesheet:this.inlineStylesheet,maskInputOptions:this.maskInputOptions,maskTextFn:this.maskTextFn,maskInputFn:this.maskInputFn,slimDOMOptions:this.slimDOMOptions,dataURLOptions:this.dataURLOptions,recordCanvas:this.recordCanvas,inlineImages:this.inlineImages,onSerialize:e=>{jd(e,this.mirror)&&this.iframeManager.addIframe(e),Fd(e,this.mirror)&&this.stylesheetManager.trackLinkElement(e),Bd(r)&&this.shadowDomManager.addShadowRoot(wd.shadowRoot(r),this.doc)},onIframeLoad:(e,t)=>{this.iframeManager.attachIframe(e,t),this.shadowDomManager.observeAttachShadow(e)},onStylesheetLoad:(e,t)=>{this.stylesheetManager.attachLinkElement(e,t)},cssCaptured:a});c&&(e.push({parentId:s,nextId:l,node:c}),t.add(c.id))};for(;this.mapRemoves.length;)this.mirror.removeNodeFromMap(this.mapRemoves.shift());for(const s of this.movedSet)tp(this.removesSubTreeCache,s,this.mirror)&&!this.movedSet.has(wd.parentNode(s))||r(s);for(const s of this.addedSet)np(this.droppedSet,s)||tp(this.removesSubTreeCache,s,this.mirror)?np(this.movedSet,s)?r(s):this.droppedSet.add(s):r(s);let i=null;for(;n.length;){let e=null;if(i){const t=this.mirror.getId(wd.parentNode(i.value)),n=o(i.value);-1!==t&&-1!==n&&(e=i)}if(!e){let t=n.tail;for(;t;){const n=t;if(t=t.previous,n){const t=this.mirror.getId(wd.parentNode(n.value));if(-1===o(n.value))continue;if(-1!==t){e=n;break}{const t=n.value,o=wd.parentNode(t);if(o&&o.nodeType===Node.DOCUMENT_FRAGMENT_NODE){const t=wd.host(o);if(-1!==this.mirror.getId(t)){e=n;break}}}}}}if(!e){for(;n.head;)n.removeNode(n.head.value);break}i=e.previous,n.removeNode(e.value),r(e.value)}const a={texts:this.texts.map((e=>{const t=e.node,n=wd.parentNode(t);return n&&"TEXTAREA"===n.tagName&&this.genTextAreaValueMutation(n),{id:this.mirror.getId(t),value:e.value}})).filter((e=>!t.has(e.id))).filter((e=>this.mirror.has(e.id))),attributes:this.attributes.map((e=>{const{attributes:t}=e;if("string"==typeof t.style){const n=JSON.stringify(e.styleDiff),o=JSON.stringify(e._unchangedStyles);n.length!t.has(e.id))).filter((e=>this.mirror.has(e.id))),removes:this.removes,adds:e};(a.texts.length||a.attributes.length||a.removes.length||a.adds.length)&&(this.texts=[],this.attributes=[],this.attributeMap=new WeakMap,this.removes=[],this.addedSet=new Set,this.movedSet=new Set,this.droppedSet=new Set,this.removesSubTreeCache=new Set,this.movedMap={},this.mutationCb(a))})),Fn(this,"genTextAreaValueMutation",(e=>{let t=this.attributeMap.get(e);t||(t={node:e,attributes:{},styleDiff:{},_unchangedStyles:{}},this.attributes.push(t),this.attributeMap.set(e,t)),t.attributes.value=Array.from(wd.childNodes(e),(e=>wd.textContent(e)||"")).join("")})),Fn(this,"processMutation",(e=>{if(!Pd(e.target,this.mirror,this.slimDOMOptions))switch(e.type){case"characterData":{const t=wd.textContent(e.target);Rd(e.target,this.blockClass,this.blockSelector,!1)||t===e.oldValue||this.texts.push({value:Mo(e.target,this.maskTextClass,this.maskTextSelector,!0)&&t?this.maskTextFn?this.maskTextFn(t,Md(e.target)):t.replace(/[\S]/g,"*"):t,node:e.target});break}case"attributes":{const n=e.target;let o=e.attributeName,r=e.target.getAttribute(o);if("value"===o){const e=ao(n);r=oo({element:n,maskInputOptions:this.maskInputOptions,tagName:n.tagName,type:e,value:r,maskInputFn:this.maskInputFn})}if(Rd(e.target,this.blockClass,this.blockSelector,!1)||r===e.oldValue)return;let i=this.attributeMap.get(e.target);if("IFRAME"===n.tagName&&"src"===o&&!this.keepIframeSrcFn(r)){if(n.contentDocument)return;o="rr_src"}if(i||(i={node:e.target,attributes:{},styleDiff:{},_unchangedStyles:{}},this.attributes.push(i),this.attributeMap.set(e.target,i)),"type"===o&&"INPUT"===n.tagName&&"password"===(e.oldValue||"").toLowerCase()&&n.setAttribute("data-rr-is-password","true"),!Lo(n.tagName,o))if(i.attributes[o]=Oo(this.doc,ro(n.tagName),ro(o),r),"style"===o){if(!this.unattachedDoc)try{this.unattachedDoc=document.implementation.createHTMLDocument()}catch(t){this.unattachedDoc=this.doc}const o=this.unattachedDoc.createElement("span");e.oldValue&&o.setAttribute("style",e.oldValue);for(const e of Array.from(n.style)){const t=n.style.getPropertyValue(e),r=n.style.getPropertyPriority(e);t!==o.style.getPropertyValue(e)||r!==o.style.getPropertyPriority(e)?i.styleDiff[e]=""===r?t:[t,r]:i._unchangedStyles[e]=[t,r]}for(const e of Array.from(o.style))""===n.style.getPropertyValue(e)&&(i.styleDiff[e]=!1)}else"open"===o&&"DIALOG"===n.tagName&&(n.matches("dialog:modal")?i.attributes.rr_open_mode="modal":i.attributes.rr_open_mode="non-modal");break}case"childList":if(Rd(e.target,this.blockClass,this.blockSelector,!0))return;if("TEXTAREA"===e.target.tagName)return void this.genTextAreaValueMutation(e.target);e.addedNodes.forEach((t=>this.genAdds(t,e.target))),e.removedNodes.forEach((t=>{const n=this.mirror.getId(t),o=$n(e.target)?this.mirror.getId(wd.host(e.target)):this.mirror.getId(e.target);Rd(e.target,this.blockClass,this.blockSelector,!1)||Pd(t,this.mirror,this.slimDOMOptions)||!function(e,t){return-1!==t.getId(e)}(t,this.mirror)||(this.addedSet.has(t)?(ep(this.addedSet,t),this.droppedSet.add(t)):this.addedSet.has(e.target)&&-1===n||Dd(e.target,this.mirror)||(this.movedSet.has(t)&&this.movedMap[$d(n,o)]?ep(this.movedSet,t):(this.removes.push({parentId:o,id:n,isShadow:!(!$n(e.target)||!Qn(e.target))||void 0}),function(e,t){const n=[e];for(;n.length;){const e=n.pop();t.has(e)||(t.add(e),wd.childNodes(e).forEach((e=>n.push(e))))}}(t,this.removesSubTreeCache))),this.mapRemoves.push(t))}))}})),Fn(this,"genAdds",((e,t)=>{if(!this.processedNodeManager.inOtherBuffer(e,this)&&!this.addedSet.has(e)&&!this.movedSet.has(e)){if(this.mirror.hasNode(e)){if(Pd(e,this.mirror,this.slimDOMOptions))return;this.movedSet.add(e);let n=null;t&&this.mirror.hasNode(t)&&(n=this.mirror.getId(t)),n&&-1!==n&&(this.movedMap[$d(this.mirror.getId(e),n)]=!0)}else this.addedSet.add(e),this.droppedSet.delete(e);Rd(e,this.blockClass,this.blockSelector,!1)||(wd.childNodes(e).forEach((e=>this.genAdds(e))),Bd(e)&&wd.childNodes(wd.shadowRoot(e)).forEach((t=>{this.processedNodeManager.add(t,this),this.genAdds(t,e)})))}}))}init(e){["mutationCb","blockClass","blockSelector","maskTextClass","maskTextSelector","inlineStylesheet","maskInputOptions","maskTextFn","maskInputFn","keepIframeSrcFn","recordCanvas","inlineImages","slimDOMOptions","dataURLOptions","doc","mirror","iframeManager","stylesheetManager","shadowDomManager","canvasManager","processedNodeManager"].forEach((t=>{this[t]=e[t]}))}freeze(){this.frozen=!0,this.canvasManager.freeze()}unfreeze(){this.frozen=!1,this.canvasManager.unfreeze(),this.emit()}isFrozen(){return this.frozen}lock(){this.locked=!0,this.canvasManager.lock()}unlock(){this.locked=!1,this.canvasManager.unlock(),this.emit()}reset(){this.shadowDomManager.reset(),this.canvasManager.reset()}}function ep(e,t){e.delete(t),wd.childNodes(t).forEach((t=>ep(e,t)))}function tp(e,t,n){return 0!==e.size&&function(e,t,n){const o=wd.parentNode(t);return!!o&&e.has(o)}(e,t)}function np(e,t){return 0!==e.size&&op(e,t)}function op(e,t){const n=wd.parentNode(t);return!!n&&(!!e.has(n)||op(e,n))}let rp;const ip=e=>{if(!rp)return e;return(...t)=>{try{return e(...t)}catch(n){if(rp&&!0===rp(n))return;throw n}}},ap=[];function sp(e){try{if("composedPath"in e){const t=e.composedPath();if(t.length)return t[0]}else if("path"in e&&e.path.length)return e.path[0]}catch{}return e&&e.target}function lp(e,t){const n=new Qd;ap.push(n),n.init(e);const o=new(bd())(ip(n.processMutations.bind(n)));return o.observe(t,{attributes:!0,attributeOldValue:!0,characterData:!0,characterDataOldValue:!0,childList:!0,subtree:!0}),o}function cp({mouseInteractionCb:e,doc:t,mirror:n,blockClass:o,blockSelector:r,sampling:i}){if(!1===i.mouseInteraction)return()=>{};const a=!0===i.mouseInteraction||void 0===i.mouseInteraction?{}:i.mouseInteraction,s=[];let l=null;return Object.keys(Vd).filter((e=>Number.isNaN(Number(e))&&!e.endsWith("_Departed")&&!1!==a[e])).forEach((i=>{let a=ro(i);const c=(t=>i=>{const a=sp(i);if(Rd(a,o,r,!0))return;let s=null,c=t;if("pointerType"in i){switch(i.pointerType){case"mouse":s=Gd.Mouse;break;case"touch":s=Gd.Touch;break;case"pen":s=Gd.Pen}s===Gd.Touch?Vd[t]===Vd.MouseDown?c="TouchStart":Vd[t]===Vd.MouseUp&&(c="TouchEnd"):Gd.Pen}else Nd(i)&&(s=Gd.Touch);null!==s?(l=s,(c.startsWith("Touch")&&s===Gd.Touch||c.startsWith("Mouse")&&s===Gd.Mouse)&&(s=null)):Vd[t]===Vd.Click&&(s=l,l=null);const u=Nd(i)?i.changedTouches[0]:i;if(!u)return;const d=n.getId(a),{clientX:p,clientY:h}=u;ip(e)({type:Vd[c],id:d,x:p,y:h,...null!==s&&{pointerType:s}})})(i);if(window.PointerEvent)switch(Vd[i]){case Vd.MouseDown:case Vd.MouseUp:a=a.replace("mouse","pointer");break;case Vd.TouchStart:case Vd.TouchEnd:return}s.push(kd(a,c,t))})),ip((()=>{s.forEach((e=>e()))}))}function up({scrollCb:e,doc:t,mirror:n,blockClass:o,blockSelector:r,sampling:i}){return kd("scroll",ip(Cd(ip((i=>{const a=sp(i);if(!a||Rd(a,o,r,!0))return;const s=n.getId(a);if(a===t&&t.defaultView){const n=Od(t.defaultView);e({id:s,x:n.left,y:n.top})}else e({id:s,x:a.scrollLeft,y:a.scrollTop})})),i.scroll||100)),t)}const dp=["INPUT","TEXTAREA","SELECT"],pp=new WeakMap;function hp(e){return function(e,t){if(vp("CSSGroupingRule")&&e.parentRule instanceof CSSGroupingRule||vp("CSSMediaRule")&&e.parentRule instanceof CSSMediaRule||vp("CSSSupportsRule")&&e.parentRule instanceof CSSSupportsRule||vp("CSSConditionRule")&&e.parentRule instanceof CSSConditionRule){const n=Array.from(e.parentRule.cssRules).indexOf(e);t.unshift(n)}else if(e.parentStyleSheet){const n=Array.from(e.parentStyleSheet.cssRules).indexOf(e);t.unshift(n)}return t}(e,[])}function fp(e,t,n){let o,r;return e?(e.ownerNode?o=t.getId(e.ownerNode):r=n.getId(e),{styleId:r,id:o}):{}}function mp({mirror:e,stylesheetManager:t},n){var o,r,i;let a=null;a="#document"===n.nodeName?e.getId(n):e.getId(wd.host(n));const s="#document"===n.nodeName?null==(o=n.defaultView)?void 0:o.Document:null==(i=null==(r=n.ownerDocument)?void 0:r.defaultView)?void 0:i.ShadowRoot,l=(null==s?void 0:s.prototype)?Object.getOwnPropertyDescriptor(null==s?void 0:s.prototype,"adoptedStyleSheets"):void 0;return null!==a&&-1!==a&&s&&l?(Object.defineProperty(n,"adoptedStyleSheets",{configurable:l.configurable,enumerable:l.enumerable,get(){var e;return null==(e=l.get)?void 0:e.call(this)},set(e){var n;const o=null==(n=l.set)?void 0:n.call(this,e);if(null!==a&&-1!==a)try{t.adoptStyleSheets(e,a)}catch(r){}return o}}),ip((()=>{Object.defineProperty(n,"adoptedStyleSheets",{configurable:l.configurable,enumerable:l.enumerable,get:l.get,set:l.set})}))):()=>{}}function gp(e,t={}){const n=e.doc.defaultView;if(!n)return()=>{};let o;!function(e,t){const{mutationCb:n,mousemoveCb:o,mouseInteractionCb:r,scrollCb:i,viewportResizeCb:a,inputCb:s,mediaInteractionCb:l,styleSheetRuleCb:c,styleDeclarationCb:u,canvasMutationCb:d,fontCb:p,selectionCb:h,customElementCb:f}=e;e.mutationCb=(...e)=>{t.mutation&&t.mutation(...e),n(...e)},e.mousemoveCb=(...e)=>{t.mousemove&&t.mousemove(...e),o(...e)},e.mouseInteractionCb=(...e)=>{t.mouseInteraction&&t.mouseInteraction(...e),r(...e)},e.scrollCb=(...e)=>{t.scroll&&t.scroll(...e),i(...e)},e.viewportResizeCb=(...e)=>{t.viewportResize&&t.viewportResize(...e),a(...e)},e.inputCb=(...e)=>{t.input&&t.input(...e),s(...e)},e.mediaInteractionCb=(...e)=>{t.mediaInteaction&&t.mediaInteaction(...e),l(...e)},e.styleSheetRuleCb=(...e)=>{t.styleSheetRule&&t.styleSheetRule(...e),c(...e)},e.styleDeclarationCb=(...e)=>{t.styleDeclaration&&t.styleDeclaration(...e),u(...e)},e.canvasMutationCb=(...e)=>{t.canvasMutation&&t.canvasMutation(...e),d(...e)},e.fontCb=(...e)=>{t.font&&t.font(...e),p(...e)},e.selectionCb=(...e)=>{t.selection&&t.selection(...e),h(...e)},e.customElementCb=(...e)=>{t.customElement&&t.customElement(...e),f(...e)}}(e,t),e.recordDOM&&(o=lp(e,e.doc));const r=function({mousemoveCb:e,sampling:t,doc:n,mirror:o}){if(!1===t.mousemove)return()=>{};const r="number"==typeof t.mousemove?t.mousemove:50,i="number"==typeof t.mousemoveCallback?t.mousemoveCallback:500;let a,s=[];const l=Cd(ip((t=>{const n=Date.now()-a;e(s.map((e=>(e.timeOffset-=n,e))),t),s=[],a=null})),i),c=ip(Cd(ip((e=>{const t=sp(e),{clientX:n,clientY:r}=Nd(e)?e.changedTouches[0]:e;a||(a=Td()),s.push({x:n,y:r,id:o.getId(t),timeOffset:Td()-a}),l("undefined"!=typeof DragEvent&&e instanceof DragEvent?Wd.Drag:e instanceof MouseEvent?Wd.MouseMove:Wd.TouchMove)})),r,{trailing:!1})),u=[kd("mousemove",c,n),kd("touchmove",c,n),kd("drag",c,n)];return ip((()=>{u.forEach((e=>e()))}))}(e),i=cp(e),a=up(e),s=function({viewportResizeCb:e},{win:t}){let n=-1,o=-1;return kd("resize",ip(Cd(ip((()=>{const t=Ld(),r=Ad();n===t&&o===r||(e({width:Number(r),height:Number(t)}),n=t,o=r)})),200)),t)}(e,{win:n}),l=function({inputCb:e,doc:t,mirror:n,blockClass:o,blockSelector:r,ignoreClass:i,ignoreSelector:a,maskInputOptions:s,maskInputFn:l,sampling:c,userTriggeredOnInput:u}){function d(e){let n=sp(e);const c=e.isTrusted,d=n&&n.tagName;if(n&&"OPTION"===d&&(n=wd.parentElement(n)),!n||!d||dp.indexOf(d)<0||Rd(n,o,r,!0))return;if(n.classList.contains(i)||a&&n.matches(a))return;let h=n.value,f=!1;const m=ao(n)||"";"radio"===m||"checkbox"===m?f=n.checked:(s[d.toLowerCase()]||s[m])&&(h=oo({element:n,maskInputOptions:s,tagName:d,type:m,value:h,maskInputFn:l})),p(n,u?{text:h,isChecked:f,userTriggered:c}:{text:h,isChecked:f});const g=n.name;"radio"===m&&g&&f&&t.querySelectorAll(`input[type="radio"][name="${g}"]`).forEach((e=>{if(e!==n){const t=e.value;p(e,u?{text:t,isChecked:!f,userTriggered:!1}:{text:t,isChecked:!f})}}))}function p(t,o){const r=pp.get(t);if(!r||r.text!==o.text||r.isChecked!==o.isChecked){pp.set(t,o);const r=n.getId(t);ip(e)({...o,id:r})}}const h=("last"===c.input?["change"]:["input","change"]).map((e=>kd(e,ip(d),t))),f=t.defaultView;if(!f)return()=>{h.forEach((e=>e()))};const m=f.Object.getOwnPropertyDescriptor(f.HTMLInputElement.prototype,"value"),g=[[f.HTMLInputElement.prototype,"value"],[f.HTMLInputElement.prototype,"checked"],[f.HTMLSelectElement.prototype,"value"],[f.HTMLTextAreaElement.prototype,"value"],[f.HTMLSelectElement.prototype,"selectedIndex"],[f.HTMLOptionElement.prototype,"selected"]];return m&&m.set&&h.push(...g.map((e=>Id(e[0],e[1],{set(){ip(d)({target:this,isTrusted:!1})}},!1,f)))),ip((()=>{h.forEach((e=>e()))}))}(e),c=function({mediaInteractionCb:e,blockClass:t,blockSelector:n,mirror:o,sampling:r,doc:i}){const a=ip((i=>Cd(ip((r=>{const a=sp(r);if(!a||Rd(a,t,n,!0))return;const{currentTime:s,volume:l,muted:c,playbackRate:u,loop:d}=a;e({type:i,id:o.getId(a),currentTime:s,volume:l,muted:c,playbackRate:u,loop:d})})),r.media||500))),s=[kd("play",a(Yd.Play),i),kd("pause",a(Yd.Pause),i),kd("seeked",a(Yd.Seeked),i),kd("volumechange",a(Yd.VolumeChange),i),kd("ratechange",a(Yd.RateChange),i)];return ip((()=>{s.forEach((e=>e()))}))}(e);let u=()=>{},d=()=>{},p=()=>{},h=()=>{};e.recordDOM&&(u=function({styleSheetRuleCb:e,mirror:t,stylesheetManager:n},{win:o}){if(!o.CSSStyleSheet||!o.CSSStyleSheet.prototype)return()=>{};const r=o.CSSStyleSheet.prototype.insertRule;o.CSSStyleSheet.prototype.insertRule=new Proxy(r,{apply:ip(((o,r,i)=>{const[a,s]=i,{id:l,styleId:c}=fp(r,t,n.styleMirror);return(l&&-1!==l||c&&-1!==c)&&e({id:l,styleId:c,adds:[{rule:a,index:s}]}),o.apply(r,i)}))}),o.CSSStyleSheet.prototype.addRule=function(e,t,n=this.cssRules.length){const r=`${e} { ${t} }`;return o.CSSStyleSheet.prototype.insertRule.apply(this,[r,n])};const i=o.CSSStyleSheet.prototype.deleteRule;let a,s;o.CSSStyleSheet.prototype.deleteRule=new Proxy(i,{apply:ip(((o,r,i)=>{const[a]=i,{id:s,styleId:l}=fp(r,t,n.styleMirror);return(s&&-1!==s||l&&-1!==l)&&e({id:s,styleId:l,removes:[{index:a}]}),o.apply(r,i)}))}),o.CSSStyleSheet.prototype.removeRule=function(e){return o.CSSStyleSheet.prototype.deleteRule.apply(this,[e])},o.CSSStyleSheet.prototype.replace&&(a=o.CSSStyleSheet.prototype.replace,o.CSSStyleSheet.prototype.replace=new Proxy(a,{apply:ip(((o,r,i)=>{const[a]=i,{id:s,styleId:l}=fp(r,t,n.styleMirror);return(s&&-1!==s||l&&-1!==l)&&e({id:s,styleId:l,replace:a}),o.apply(r,i)}))})),o.CSSStyleSheet.prototype.replaceSync&&(s=o.CSSStyleSheet.prototype.replaceSync,o.CSSStyleSheet.prototype.replaceSync=new Proxy(s,{apply:ip(((o,r,i)=>{const[a]=i,{id:s,styleId:l}=fp(r,t,n.styleMirror);return(s&&-1!==s||l&&-1!==l)&&e({id:s,styleId:l,replaceSync:a}),o.apply(r,i)}))}));const l={};yp("CSSGroupingRule")?l.CSSGroupingRule=o.CSSGroupingRule:(yp("CSSMediaRule")&&(l.CSSMediaRule=o.CSSMediaRule),yp("CSSConditionRule")&&(l.CSSConditionRule=o.CSSConditionRule),yp("CSSSupportsRule")&&(l.CSSSupportsRule=o.CSSSupportsRule));const c={};return Object.entries(l).forEach((([o,r])=>{c[o]={insertRule:r.prototype.insertRule,deleteRule:r.prototype.deleteRule},r.prototype.insertRule=new Proxy(c[o].insertRule,{apply:ip(((o,r,i)=>{const[a,s]=i,{id:l,styleId:c}=fp(r.parentStyleSheet,t,n.styleMirror);return(l&&-1!==l||c&&-1!==c)&&e({id:l,styleId:c,adds:[{rule:a,index:[...hp(r),s||0]}]}),o.apply(r,i)}))}),r.prototype.deleteRule=new Proxy(c[o].deleteRule,{apply:ip(((o,r,i)=>{const[a]=i,{id:s,styleId:l}=fp(r.parentStyleSheet,t,n.styleMirror);return(s&&-1!==s||l&&-1!==l)&&e({id:s,styleId:l,removes:[{index:[...hp(r),a]}]}),o.apply(r,i)}))})})),ip((()=>{o.CSSStyleSheet.prototype.insertRule=r,o.CSSStyleSheet.prototype.deleteRule=i,a&&(o.CSSStyleSheet.prototype.replace=a),s&&(o.CSSStyleSheet.prototype.replaceSync=s),Object.entries(l).forEach((([e,t])=>{t.prototype.insertRule=c[e].insertRule,t.prototype.deleteRule=c[e].deleteRule}))}))}(e,{win:n}),d=mp(e,e.doc),p=function({styleDeclarationCb:e,mirror:t,ignoreCSSAttributes:n,stylesheetManager:o},{win:r}){const i=r.CSSStyleDeclaration.prototype.setProperty;r.CSSStyleDeclaration.prototype.setProperty=new Proxy(i,{apply:ip(((r,a,s)=>{var l;const[c,u,d]=s;if(n.has(c))return i.apply(a,[c,u,d]);const{id:p,styleId:h}=fp(null==(l=a.parentRule)?void 0:l.parentStyleSheet,t,o.styleMirror);return(p&&-1!==p||h&&-1!==h)&&e({id:p,styleId:h,set:{property:c,value:u,priority:d},index:hp(a.parentRule)}),r.apply(a,s)}))});const a=r.CSSStyleDeclaration.prototype.removeProperty;return r.CSSStyleDeclaration.prototype.removeProperty=new Proxy(a,{apply:ip(((r,i,s)=>{var l;const[c]=s;if(n.has(c))return a.apply(i,[c]);const{id:u,styleId:d}=fp(null==(l=i.parentRule)?void 0:l.parentStyleSheet,t,o.styleMirror);return(u&&-1!==u||d&&-1!==d)&&e({id:u,styleId:d,remove:{property:c},index:hp(i.parentRule)}),r.apply(i,s)}))}),ip((()=>{r.CSSStyleDeclaration.prototype.setProperty=i,r.CSSStyleDeclaration.prototype.removeProperty=a}))}(e,{win:n}),e.collectFonts&&(h=function({fontCb:e,doc:t}){const n=t.defaultView;if(!n)return()=>{};const o=[],r=new WeakMap,i=n.FontFace;n.FontFace=function(e,t,n){const o=new i(e,t,n);return r.set(o,{family:e,buffer:"string"!=typeof t,descriptors:n,fontSource:"string"==typeof t?t:JSON.stringify(Array.from(new Uint8Array(t)))}),o};const a=Ed(t.fonts,"add",(function(t){return function(n){return setTimeout(ip((()=>{const t=r.get(n);t&&(e(t),r.delete(n))})),0),t.apply(this,[n])}}));return o.push((()=>{n.FontFace=i})),o.push(a),ip((()=>{o.forEach((e=>e()))}))}(e)));const f=function(e){const{doc:t,mirror:n,blockClass:o,blockSelector:r,selectionCb:i}=e;let a=!0;const s=ip((()=>{const e=t.getSelection();if(!e||a&&(null==e?void 0:e.isCollapsed))return;a=e.isCollapsed||!1;const s=[],l=e.rangeCount||0;for(let t=0;t{}}(e),g=[];for(const v of e.plugins)g.push(v.observer(v.callback,n,v.options));return ip((()=>{ap.forEach((e=>e.reset())),null==o||o.disconnect(),r(),i(),a(),s(),l(),c(),u(),d(),p(),h(),f(),m(),g.forEach((e=>e()))}))}function vp(e){return void 0!==window[e]}function yp(e){return Boolean(void 0!==window[e]&&window[e].prototype&&"insertRule"in window[e].prototype&&"deleteRule"in window[e].prototype)}class bp{constructor(e){Fn(this,"iframeIdToRemoteIdMap",new WeakMap),Fn(this,"iframeRemoteIdToIdMap",new WeakMap),this.generateIdFn=e}getId(e,t,n,o){const r=n||this.getIdToRemoteIdMap(e),i=o||this.getRemoteIdToIdMap(e);let a=r.get(t);return a||(a=this.generateIdFn(),r.set(t,a),i.set(a,t)),a}getIds(e,t){const n=this.getIdToRemoteIdMap(e),o=this.getRemoteIdToIdMap(e);return t.map((t=>this.getId(e,t,n,o)))}getRemoteId(e,t,n){const o=n||this.getRemoteIdToIdMap(e);if("number"!=typeof t)return t;const r=o.get(t);return r||-1}getRemoteIds(e,t){const n=this.getRemoteIdToIdMap(e);return t.map((t=>this.getRemoteId(e,t,n)))}reset(e){if(!e)return this.iframeIdToRemoteIdMap=new WeakMap,void(this.iframeRemoteIdToIdMap=new WeakMap);this.iframeIdToRemoteIdMap.delete(e),this.iframeRemoteIdToIdMap.delete(e)}getIdToRemoteIdMap(e){let t=this.iframeIdToRemoteIdMap.get(e);return t||(t=new Map,this.iframeIdToRemoteIdMap.set(e,t)),t}getRemoteIdToIdMap(e){let t=this.iframeRemoteIdToIdMap.get(e);return t||(t=new Map,this.iframeRemoteIdToIdMap.set(e,t)),t}}class wp{constructor(e){Fn(this,"iframes",new WeakMap),Fn(this,"crossOriginIframeMap",new WeakMap),Fn(this,"crossOriginIframeMirror",new bp(bo)),Fn(this,"crossOriginIframeStyleMirror"),Fn(this,"crossOriginIframeRootIdMap",new WeakMap),Fn(this,"mirror"),Fn(this,"mutationCb"),Fn(this,"wrappedEmit"),Fn(this,"loadListener"),Fn(this,"stylesheetManager"),Fn(this,"recordCrossOriginIframes"),this.mutationCb=e.mutationCb,this.wrappedEmit=e.wrappedEmit,this.stylesheetManager=e.stylesheetManager,this.recordCrossOriginIframes=e.recordCrossOriginIframes,this.crossOriginIframeStyleMirror=new bp(this.stylesheetManager.styleMirror.generateId.bind(this.stylesheetManager.styleMirror)),this.mirror=e.mirror,this.recordCrossOriginIframes&&window.addEventListener("message",this.handleMessage.bind(this))}addIframe(e){this.iframes.set(e,!0),e.contentWindow&&this.crossOriginIframeMap.set(e.contentWindow,e)}addLoadListener(e){this.loadListener=e}attachIframe(e,t){var n,o;this.mutationCb({adds:[{parentId:this.mirror.getId(e),nextId:null,node:t}],removes:[],texts:[],attributes:[],isAttachIframe:!0}),this.recordCrossOriginIframes&&(null==(n=e.contentWindow)||n.addEventListener("message",this.handleMessage.bind(this))),null==(o=this.loadListener)||o.call(this,e),e.contentDocument&&e.contentDocument.adoptedStyleSheets&&e.contentDocument.adoptedStyleSheets.length>0&&this.stylesheetManager.adoptStyleSheets(e.contentDocument.adoptedStyleSheets,this.mirror.getId(e.contentDocument))}handleMessage(e){const t=e;if("rrweb"!==t.data.type||t.origin!==t.data.origin)return;if(!e.source)return;const n=this.crossOriginIframeMap.get(e.source);if(!n)return;const o=this.transformCrossOriginEvent(n,t.data.event);o&&this.wrappedEmit(o,t.data.isCheckout)}transformCrossOriginEvent(e,t){var n;switch(t.type){case qd.FullSnapshot:{this.crossOriginIframeMirror.reset(e),this.crossOriginIframeStyleMirror.reset(e),this.replaceIdOnNode(t.data.node,e);const n=t.data.node.id;return this.crossOriginIframeRootIdMap.set(e,n),this.patchRootIdOnNode(t.data.node,n),{timestamp:t.timestamp,type:qd.IncrementalSnapshot,data:{source:Wd.Mutation,adds:[{parentId:this.mirror.getId(e),nextId:null,node:t.data.node}],removes:[],texts:[],attributes:[],isAttachIframe:!0}}}case qd.Meta:case qd.Load:case qd.DomContentLoaded:return!1;case qd.Plugin:return t;case qd.Custom:return this.replaceIds(t.data.payload,e,["id","parentId","previousId","nextId"]),t;case qd.IncrementalSnapshot:switch(t.data.source){case Wd.Mutation:return t.data.adds.forEach((t=>{this.replaceIds(t,e,["parentId","nextId","previousId"]),this.replaceIdOnNode(t.node,e);const n=this.crossOriginIframeRootIdMap.get(e);n&&this.patchRootIdOnNode(t.node,n)})),t.data.removes.forEach((t=>{this.replaceIds(t,e,["parentId","id"])})),t.data.attributes.forEach((t=>{this.replaceIds(t,e,["id"])})),t.data.texts.forEach((t=>{this.replaceIds(t,e,["id"])})),t;case Wd.Drag:case Wd.TouchMove:case Wd.MouseMove:return t.data.positions.forEach((t=>{this.replaceIds(t,e,["id"])})),t;case Wd.ViewportResize:return!1;case Wd.MediaInteraction:case Wd.MouseInteraction:case Wd.Scroll:case Wd.CanvasMutation:case Wd.Input:return this.replaceIds(t.data,e,["id"]),t;case Wd.StyleSheetRule:case Wd.StyleDeclaration:return this.replaceIds(t.data,e,["id"]),this.replaceStyleIds(t.data,e,["styleId"]),t;case Wd.Font:return t;case Wd.Selection:return t.data.ranges.forEach((t=>{this.replaceIds(t,e,["start","end"])})),t;case Wd.AdoptedStyleSheet:return this.replaceIds(t.data,e,["id"]),this.replaceStyleIds(t.data,e,["styleIds"]),null==(n=t.data.styles)||n.forEach((t=>{this.replaceStyleIds(t,e,["styleId"])})),t}}return!1}replace(e,t,n,o){for(const r of o)(Array.isArray(t[r])||"number"==typeof t[r])&&(Array.isArray(t[r])?t[r]=e.getIds(n,t[r]):t[r]=e.getId(n,t[r]));return t}replaceIds(e,t,n){return this.replace(this.crossOriginIframeMirror,e,t,n)}replaceStyleIds(e,t,n){return this.replace(this.crossOriginIframeStyleMirror,e,t,n)}replaceIdOnNode(e,t){this.replaceIds(e,t,["id","rootId"]),"childNodes"in e&&e.childNodes.forEach((e=>{this.replaceIdOnNode(e,t)}))}patchRootIdOnNode(e,t){e.type===Jd.Document||e.rootId||(e.rootId=t),"childNodes"in e&&e.childNodes.forEach((e=>{this.patchRootIdOnNode(e,t)}))}}class kp{constructor(e){Fn(this,"shadowDoms",new WeakSet),Fn(this,"mutationCb"),Fn(this,"scrollCb"),Fn(this,"bypassOptions"),Fn(this,"mirror"),Fn(this,"restoreHandlers",[]),this.mutationCb=e.mutationCb,this.scrollCb=e.scrollCb,this.bypassOptions=e.bypassOptions,this.mirror=e.mirror,this.init()}init(){this.reset(),this.patchAttachShadow(Element,document)}addShadowRoot(e,t){if(!Qn(e))return;if(this.shadowDoms.has(e))return;this.shadowDoms.add(e);const n=lp({...this.bypassOptions,doc:t,mutationCb:this.mutationCb,mirror:this.mirror,shadowDomManager:this},e);this.restoreHandlers.push((()=>n.disconnect())),this.restoreHandlers.push(up({...this.bypassOptions,scrollCb:this.scrollCb,doc:e,mirror:this.mirror})),setTimeout((()=>{e.adoptedStyleSheets&&e.adoptedStyleSheets.length>0&&this.bypassOptions.stylesheetManager.adoptStyleSheets(e.adoptedStyleSheets,this.mirror.getId(wd.host(e))),this.restoreHandlers.push(mp({mirror:this.mirror,stylesheetManager:this.bypassOptions.stylesheetManager},e))}),0)}observeAttachShadow(e){e.contentWindow&&e.contentDocument&&this.patchAttachShadow(e.contentWindow.Element,e.contentDocument)}patchAttachShadow(e,t){const n=this;this.restoreHandlers.push(Ed(e.prototype,"attachShadow",(function(e){return function(o){const r=e.call(this,o),i=wd.shadowRoot(this);return i&&zd(this)&&n.addShadowRoot(i,t),r}})))}reset(){this.restoreHandlers.forEach((e=>{try{e()}catch(t){}})),this.restoreHandlers=[],this.shadowDoms=new WeakSet}}for(var xp="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Sp="undefined"==typeof Uint8Array?[]:new Uint8Array(256),Cp=0;Cp<64;Cp++)Sp[xp.charCodeAt(Cp)]=Cp;const Ip=new Map;const Ep=(e,t,n)=>{if(!e||!Lp(e,t)&&"object"!=typeof e)return;const o=function(e,t){let n=Ip.get(e);return n||(n=new Map,Ip.set(e,n)),n.has(t)||n.set(t,[]),n.get(t)}(n,e.constructor.name);let r=o.indexOf(e);return-1===r&&(r=o.length,o.push(e)),r};function Tp(e,t,n){if(e instanceof Array)return e.map((e=>Tp(e,t,n)));if(null===e)return e;if(e instanceof Float32Array||e instanceof Float64Array||e instanceof Int32Array||e instanceof Uint32Array||e instanceof Uint8Array||e instanceof Uint16Array||e instanceof Int16Array||e instanceof Int8Array||e instanceof Uint8ClampedArray){return{rr_type:e.constructor.name,args:[Object.values(e)]}}if(e instanceof ArrayBuffer){return{rr_type:e.constructor.name,base64:function(e){var t,n=new Uint8Array(e),o=n.length,r="";for(t=0;t>2],r+=xp[(3&n[t])<<4|n[t+1]>>4],r+=xp[(15&n[t+1])<<2|n[t+2]>>6],r+=xp[63&n[t+2]];return o%3==2?r=r.substring(0,r.length-1)+"=":o%3==1&&(r=r.substring(0,r.length-2)+"=="),r}(e)}}if(e instanceof DataView){return{rr_type:e.constructor.name,args:[Tp(e.buffer,t,n),e.byteOffset,e.byteLength]}}if(e instanceof HTMLImageElement){const t=e.constructor.name,{src:n}=e;return{rr_type:t,src:n}}if(e instanceof HTMLCanvasElement){return{rr_type:"HTMLImageElement",src:e.toDataURL()}}if(e instanceof ImageData){return{rr_type:e.constructor.name,args:[Tp(e.data,t,n),e.width,e.height]}}if(Lp(e,t)||"object"==typeof e){return{rr_type:e.constructor.name,index:Ep(e,t,n)}}return e}const Op=(e,t,n)=>e.map((e=>Tp(e,t,n))),Lp=(e,t)=>{const n=["WebGLActiveInfo","WebGLBuffer","WebGLFramebuffer","WebGLProgram","WebGLRenderbuffer","WebGLShader","WebGLShaderPrecisionFormat","WebGLTexture","WebGLUniformLocation","WebGLVertexArrayObject","WebGLVertexArrayObjectOES"].filter((e=>"function"==typeof t[e]));return Boolean(n.find((n=>e instanceof t[n])))};function Ap(e,t,n,o){const r=[];try{const i=Ed(e.HTMLCanvasElement.prototype,"getContext",(function(e){return function(r,...i){if(!Rd(this,t,n,!0)){const e=function(e){return"experimental-webgl"===e?"webgl":e}(r);if("__context"in this||(this.__context=e),o&&["webgl","webgl2"].includes(e))if(i[0]&&"object"==typeof i[0]){const e=i[0];e.preserveDrawingBuffer||(e.preserveDrawingBuffer=!0)}else i.splice(0,1,{preserveDrawingBuffer:!0})}return e.apply(this,[r,...i])}}));r.push(i)}catch{console.error("failed to patch HTMLCanvasElement.prototype.getContext")}return()=>{r.forEach((e=>e()))}}function Mp(e,t,n,o,r,i){const a=[],s=Object.getOwnPropertyNames(e);for(const l of s)if(!["isContextLost","canvas","drawingBufferWidth","drawingBufferHeight"].includes(l))try{if("function"!=typeof e[l])continue;const s=Ed(e,l,(function(e){return function(...a){const s=e.apply(this,a);if(Ep(s,i,this),"tagName"in this.canvas&&!Rd(this.canvas,o,r,!0)){const e=Op(a,i,this),o={type:t,property:l,args:e};n(this.canvas,o)}return s}}));a.push(s)}catch{const o=Id(e,l,{set(e){n(this.canvas,{type:t,property:l,args:[e],setter:!0})}});a.push(o)}return a}const Rp="KGZ1bmN0aW9uKCkgewogICJ1c2Ugc3RyaWN0IjsKICB2YXIgY2hhcnMgPSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7CiAgdmFyIGxvb2t1cCA9IHR5cGVvZiBVaW50OEFycmF5ID09PSAidW5kZWZpbmVkIiA/IFtdIDogbmV3IFVpbnQ4QXJyYXkoMjU2KTsKICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYXJzLmxlbmd0aDsgaSsrKSB7CiAgICBsb29rdXBbY2hhcnMuY2hhckNvZGVBdChpKV0gPSBpOwogIH0KICB2YXIgZW5jb2RlID0gZnVuY3Rpb24oYXJyYXlidWZmZXIpIHsKICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGFycmF5YnVmZmVyKSwgaTIsIGxlbiA9IGJ5dGVzLmxlbmd0aCwgYmFzZTY0ID0gIiI7CiAgICBmb3IgKGkyID0gMDsgaTIgPCBsZW47IGkyICs9IDMpIHsKICAgICAgYmFzZTY0ICs9IGNoYXJzW2J5dGVzW2kyXSA+PiAyXTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMl0gJiAzKSA8PCA0IHwgYnl0ZXNbaTIgKyAxXSA+PiA0XTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMiArIDFdICYgMTUpIDw8IDIgfCBieXRlc1tpMiArIDJdID4+IDZdOwogICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaTIgKyAyXSAmIDYzXTsKICAgIH0KICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgIj0iOwogICAgfSBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgIj09IjsKICAgIH0KICAgIHJldHVybiBiYXNlNjQ7CiAgfTsKICBjb25zdCBsYXN0QmxvYk1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7CiAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTsKICBhc3luYyBmdW5jdGlvbiBnZXRUcmFuc3BhcmVudEJsb2JGb3Iod2lkdGgsIGhlaWdodCwgZGF0YVVSTE9wdGlvbnMpIHsKICAgIGNvbnN0IGlkID0gYCR7d2lkdGh9LSR7aGVpZ2h0fWA7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBpZiAodHJhbnNwYXJlbnRCbG9iTWFwLmhhcyhpZCkpIHJldHVybiB0cmFuc3BhcmVudEJsb2JNYXAuZ2V0KGlkKTsKICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsKICAgICAgb2Zmc2NyZWVuLmdldENvbnRleHQoIjJkIik7CiAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCBvZmZzY3JlZW4uY29udmVydFRvQmxvYihkYXRhVVJMT3B0aW9ucyk7CiAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gYXdhaXQgYmxvYi5hcnJheUJ1ZmZlcigpOwogICAgICBjb25zdCBiYXNlNjQgPSBlbmNvZGUoYXJyYXlCdWZmZXIpOwogICAgICB0cmFuc3BhcmVudEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICByZXR1cm4gYmFzZTY0OwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuICIiOwogICAgfQogIH0KICBjb25zdCB3b3JrZXIgPSBzZWxmOwogIHdvcmtlci5vbm1lc3NhZ2UgPSBhc3luYyBmdW5jdGlvbihlKSB7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBjb25zdCB7IGlkLCBiaXRtYXAsIHdpZHRoLCBoZWlnaHQsIGRhdGFVUkxPcHRpb25zIH0gPSBlLmRhdGE7CiAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKAogICAgICAgIHdpZHRoLAogICAgICAgIGhlaWdodCwKICAgICAgICBkYXRhVVJMT3B0aW9ucwogICAgICApOwogICAgICBjb25zdCBvZmZzY3JlZW4gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpOwogICAgICBjb25zdCBjdHggPSBvZmZzY3JlZW4uZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgY3R4LmRyYXdJbWFnZShiaXRtYXAsIDAsIDApOwogICAgICBiaXRtYXAuY2xvc2UoKTsKICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IG9mZnNjcmVlbi5jb252ZXJ0VG9CbG9iKGRhdGFVUkxPcHRpb25zKTsKICAgICAgY29uc3QgdHlwZSA9IGJsb2IudHlwZTsKICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBhd2FpdCBibG9iLmFycmF5QnVmZmVyKCk7CiAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7CiAgICAgIGlmICghbGFzdEJsb2JNYXAuaGFzKGlkKSAmJiBhd2FpdCB0cmFuc3BhcmVudEJhc2U2NCA9PT0gYmFzZTY0KSB7CiAgICAgICAgbGFzdEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICAgIHJldHVybiB3b3JrZXIucG9zdE1lc3NhZ2UoeyBpZCB9KTsKICAgICAgfQogICAgICBpZiAobGFzdEJsb2JNYXAuZ2V0KGlkKSA9PT0gYmFzZTY0KSByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQgfSk7CiAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7CiAgICAgICAgaWQsCiAgICAgICAgdHlwZSwKICAgICAgICBiYXNlNjQsCiAgICAgICAgd2lkdGgsCiAgICAgICAgaGVpZ2h0CiAgICAgIH0pOwogICAgICBsYXN0QmxvYk1hcC5zZXQoaWQsIGJhc2U2NCk7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IGUuZGF0YS5pZCB9KTsKICAgIH0KICB9Owp9KSgpOwovLyMgc291cmNlTWFwcGluZ1VSTD1pbWFnZS1iaXRtYXAtZGF0YS11cmwtd29ya2VyLUlKcEM3Z19iLmpzLm1hcAo=",Pp="undefined"!=typeof window&&window.Blob&&new Blob([(Dp=Rp,Uint8Array.from(atob(Dp),(e=>e.charCodeAt(0))))],{type:"text/javascript;charset=utf-8"});var Dp;function Np(e){let t;try{if(t=Pp&&(window.URL||window.webkitURL).createObjectURL(Pp),!t)throw"";const n=new Worker(t,{name:null==e?void 0:e.name});return n.addEventListener("error",(()=>{(window.URL||window.webkitURL).revokeObjectURL(t)})),n}catch(n){return new Worker("data:text/javascript;base64,"+Rp,{name:null==e?void 0:e.name})}finally{t&&(window.URL||window.webkitURL).revokeObjectURL(t)}}class jp{constructor(e){Fn(this,"pendingCanvasMutations",new Map),Fn(this,"rafStamps",{latestId:0,invokeId:null}),Fn(this,"mirror"),Fn(this,"mutationCb"),Fn(this,"resetObservers"),Fn(this,"frozen",!1),Fn(this,"locked",!1),Fn(this,"processMutation",((e,t)=>{!(this.rafStamps.invokeId&&this.rafStamps.latestId!==this.rafStamps.invokeId)&&this.rafStamps.invokeId||(this.rafStamps.invokeId=this.rafStamps.latestId),this.pendingCanvasMutations.has(e)||this.pendingCanvasMutations.set(e,[]),this.pendingCanvasMutations.get(e).push(t)}));const{sampling:t="all",win:n,blockClass:o,blockSelector:r,recordCanvas:i,dataURLOptions:a}=e;this.mutationCb=e.mutationCb,this.mirror=e.mirror,i&&"all"===t&&this.initCanvasMutationObserver(n,o,r),i&&"number"==typeof t&&this.initCanvasFPSObserver(t,n,o,r,{dataURLOptions:a})}reset(){this.pendingCanvasMutations.clear(),this.resetObservers&&this.resetObservers()}freeze(){this.frozen=!0}unfreeze(){this.frozen=!1}lock(){this.locked=!0}unlock(){this.locked=!1}initCanvasFPSObserver(e,t,n,o,r){const i=Ap(t,n,o,!0),a=new Map,s=new Np;s.onmessage=e=>{const{id:t}=e.data;if(a.set(t,!1),!("base64"in e.data))return;const{base64:n,type:o,width:r,height:i}=e.data;this.mutationCb({id:t,type:Xd["2D"],commands:[{property:"clearRect",args:[0,0,r,i]},{property:"drawImage",args:[{rr_type:"ImageBitmap",args:[{rr_type:"Blob",data:[{rr_type:"ArrayBuffer",base64:n}],type:o}]},0,0]}]})};const l=1e3/e;let c,u=0;const d=e=>{u&&e-u{const e=[];return t.document.querySelectorAll("canvas").forEach((t=>{Rd(t,n,o,!0)||e.push(t)})),e})().forEach((async e=>{var t;const n=this.mirror.getId(e);if(a.get(n))return;if(0===e.width||0===e.height)return;if(a.set(n,!0),["webgl","webgl2"].includes(e.__context)){const n=e.getContext(e.__context);!1===(null==(t=null==n?void 0:n.getContextAttributes())?void 0:t.preserveDrawingBuffer)&&n.clear(n.COLOR_BUFFER_BIT)}const o=await createImageBitmap(e);s.postMessage({id:n,bitmap:o,width:e.width,height:e.height,dataURLOptions:r.dataURLOptions},[o])}))),c=requestAnimationFrame(d)};c=requestAnimationFrame(d),this.resetObservers=()=>{i(),cancelAnimationFrame(c)}}initCanvasMutationObserver(e,t,n){this.startRAFTimestamping(),this.startPendingCanvasMutationFlusher();const o=Ap(e,t,n,!1),r=function(e,t,n,o){const r=[],i=Object.getOwnPropertyNames(t.CanvasRenderingContext2D.prototype);for(const a of i)try{if("function"!=typeof t.CanvasRenderingContext2D.prototype[a])continue;const i=Ed(t.CanvasRenderingContext2D.prototype,a,(function(r){return function(...i){return Rd(this.canvas,n,o,!0)||setTimeout((()=>{const n=Op(i,t,this);e(this.canvas,{type:Xd["2D"],property:a,args:n})}),0),r.apply(this,i)}}));r.push(i)}catch{const n=Id(t.CanvasRenderingContext2D.prototype,a,{set(t){e(this.canvas,{type:Xd["2D"],property:a,args:[t],setter:!0})}});r.push(n)}return()=>{r.forEach((e=>e()))}}(this.processMutation.bind(this),e,t,n),i=function(e,t,n,o){const r=[];return r.push(...Mp(t.WebGLRenderingContext.prototype,Xd.WebGL,e,n,o,t)),void 0!==t.WebGL2RenderingContext&&r.push(...Mp(t.WebGL2RenderingContext.prototype,Xd.WebGL2,e,n,o,t)),()=>{r.forEach((e=>e()))}}(this.processMutation.bind(this),e,t,n);this.resetObservers=()=>{o(),r(),i()}}startPendingCanvasMutationFlusher(){requestAnimationFrame((()=>this.flushPendingCanvasMutations()))}startRAFTimestamping(){const e=t=>{this.rafStamps.latestId=t,requestAnimationFrame(e)};requestAnimationFrame(e)}flushPendingCanvasMutations(){this.pendingCanvasMutations.forEach(((e,t)=>{const n=this.mirror.getId(t);this.flushPendingCanvasMutationFor(t,n)})),requestAnimationFrame((()=>this.flushPendingCanvasMutations()))}flushPendingCanvasMutationFor(e,t){if(this.frozen||this.locked)return;const n=this.pendingCanvasMutations.get(e);if(!n||-1===t)return;const o=n.map((e=>{const{type:t,...n}=e;return n})),{type:r}=n[0];this.mutationCb({id:t,type:r,commands:o}),this.pendingCanvasMutations.delete(e)}}class Fp{constructor(e){Fn(this,"trackedLinkElements",new WeakSet),Fn(this,"mutationCb"),Fn(this,"adoptedStyleSheetCb"),Fn(this,"styleMirror",new _d),this.mutationCb=e.mutationCb,this.adoptedStyleSheetCb=e.adoptedStyleSheetCb}attachLinkElement(e,t){"_cssText"in t.attributes&&this.mutationCb({adds:[],removes:[],texts:[],attributes:[{id:t.id,attributes:t.attributes}]}),this.trackLinkElement(e)}trackLinkElement(e){this.trackedLinkElements.has(e)||(this.trackedLinkElements.add(e),this.trackStylesheetInLinkElement(e))}adoptStyleSheets(e,t){if(0===e.length)return;const n={id:t,styleIds:[]},o=[];for(const r of e){let e;this.styleMirror.has(r)?e=this.styleMirror.getId(r):(e=this.styleMirror.add(r),o.push({styleId:e,rules:Array.from(r.rules||CSSRule,((e,t)=>({rule:to(e,r.href),index:t})))})),n.styleIds.push(e)}o.length>0&&(n.styles=o),this.adoptedStyleSheetCb(n)}reset(){this.styleMirror.reset(),this.trackedLinkElements=new WeakSet}trackStylesheetInLinkElement(e){}}class Bp{constructor(){Fn(this,"nodeMap",new WeakMap),Fn(this,"active",!1)}inOtherBuffer(e,t){const n=this.nodeMap.get(e);return n&&Array.from(n).some((e=>e!==t))}add(e,t){this.active||(this.active=!0,requestAnimationFrame((()=>{this.nodeMap=new WeakMap,this.active=!1}))),this.nodeMap.set(e,(this.nodeMap.get(e)||new Set).add(t))}destroy(){}}let _p,Up,Hp,zp=!1;try{if(2!==Array.from([1],(e=>2*e))[0]){const e=document.createElement("iframe");document.body.appendChild(e),Array.from=(null==(Nn=e.contentWindow)?void 0:Nn.Array.from)||Array.from,document.body.removeChild(e)}}catch(Xm){console.debug("Unable to override Array.from",Xm)}const qp=new no;function Wp(e={}){const{emit:t,checkoutEveryNms:n,checkoutEveryNth:o,blockClass:r="rr-block",blockSelector:i=null,ignoreClass:a="rr-ignore",ignoreSelector:s=null,maskTextClass:l="rr-mask",maskTextSelector:c=null,inlineStylesheet:u=!0,maskAllInputs:d,maskInputOptions:p,slimDOMOptions:h,maskInputFn:f,maskTextFn:m,hooks:g,packFn:v,sampling:y={},dataURLOptions:b={},mousemoveWait:w,recordDOM:k=!0,recordCanvas:x=!1,recordCrossOriginIframes:S=!1,recordAfter:C=("DOMContentLoaded"===e.recordAfter?e.recordAfter:"load"),userTriggeredOnInput:I=!1,collectFonts:E=!1,inlineImages:T=!1,plugins:O,keepIframeSrcFn:L=(()=>!1),ignoreCSSAttributes:A=new Set([]),errorHandler:M}=e;rp=M;const R=!S||window.parent===window;let P=!1;if(!R)try{window.parent.document&&(P=!1)}catch(G){P=!0}if(R&&!t)throw new Error("emit function is required");if(!R&&!P)return()=>{};void 0!==w&&void 0===y.mousemove&&(y.mousemove=w),qp.reset();const D=!0===d?{color:!0,date:!0,"datetime-local":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0,password:!0}:void 0!==p?p:{password:!0},N=!0===h||"all"===h?{script:!0,comment:!0,headFavicon:!0,headWhitespace:!0,headMetaSocial:!0,headMetaRobots:!0,headMetaHttpEquiv:!0,headMetaVerification:!0,headMetaAuthorship:"all"===h,headMetaDescKeywords:"all"===h,headTitleMutations:"all"===h}:h||{};let j;!function(e=window){"NodeList"in e&&!e.NodeList.prototype.forEach&&(e.NodeList.prototype.forEach=Array.prototype.forEach),"DOMTokenList"in e&&!e.DOMTokenList.prototype.forEach&&(e.DOMTokenList.prototype.forEach=Array.prototype.forEach)}();let F=0;const B=e=>{for(const t of O||[])t.eventProcessor&&(e=t.eventProcessor(e));return v&&!P&&(e=v(e)),e};_p=(e,r)=>{var i;const a=e;if(a.timestamp=Td(),!(null==(i=ap[0])?void 0:i.isFrozen())||a.type===qd.FullSnapshot||a.type===qd.IncrementalSnapshot&&a.data.source===Wd.Mutation||ap.forEach((e=>e.unfreeze())),R)null==t||t(B(a),r);else if(P){const e={type:"rrweb",event:B(a),origin:window.location.origin,isCheckout:r};window.parent.postMessage(e,"*")}if(a.type===qd.FullSnapshot)j=a,F=0;else if(a.type===qd.IncrementalSnapshot){if(a.data.source===Wd.Mutation&&a.data.isAttachIframe)return;F++;const e=o&&F>=o,t=n&&a.timestamp-j.timestamp>n;(e||t)&&Up(!0)}};const _=e=>{_p({type:qd.IncrementalSnapshot,data:{source:Wd.Mutation,...e}})},U=e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.Scroll,...e}}),H=e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.CanvasMutation,...e}}),z=new Fp({mutationCb:_,adoptedStyleSheetCb:e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.AdoptedStyleSheet,...e}})}),q=new wp({mirror:qp,mutationCb:_,stylesheetManager:z,recordCrossOriginIframes:S,wrappedEmit:_p});for(const Y of O||[])Y.getMirror&&Y.getMirror({nodeMirror:qp,crossOriginIframeMirror:q.crossOriginIframeMirror,crossOriginIframeStyleMirror:q.crossOriginIframeStyleMirror});const W=new Bp;Hp=new jp({recordCanvas:x,mutationCb:H,win:window,blockClass:r,blockSelector:i,mirror:qp,sampling:y.canvas,dataURLOptions:b});const V=new kp({mutationCb:_,scrollCb:U,bypassOptions:{blockClass:r,blockSelector:i,maskTextClass:l,maskTextSelector:c,inlineStylesheet:u,maskInputOptions:D,dataURLOptions:b,maskTextFn:m,maskInputFn:f,recordCanvas:x,inlineImages:T,sampling:y,slimDOMOptions:N,iframeManager:q,stylesheetManager:z,canvasManager:Hp,keepIframeSrcFn:L,processedNodeManager:W},mirror:qp});Up=(e=!1)=>{if(!k)return;_p({type:qd.Meta,data:{href:window.location.href,width:Ad(),height:Ld()}},e),z.reset(),V.init(),ap.forEach((e=>e.lock()));const t=function(e,t){const{mirror:n=new no,blockClass:o="rr-block",blockSelector:r=null,maskTextClass:i="rr-mask",maskTextSelector:a=null,inlineStylesheet:s=!0,inlineImages:l=!1,recordCanvas:c=!1,maskAllInputs:u=!1,maskTextFn:d,maskInputFn:p,slimDOM:h=!1,dataURLOptions:f,preserveWhiteSpace:m,onSerialize:g,onIframeLoad:v,iframeLoadTimeout:y,onStylesheetLoad:b,stylesheetLoadTimeout:w,keepIframeSrcFn:k=(()=>!1)}=t||{};return Do(e,{doc:e,mirror:n,blockClass:o,blockSelector:r,maskTextClass:i,maskTextSelector:a,skipChild:!1,inlineStylesheet:s,maskInputOptions:!0===u?{color:!0,date:!0,"datetime-local":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0,password:!0}:!1===u?{password:!0}:u,maskTextFn:d,maskInputFn:p,slimDOMOptions:!0===h||"all"===h?{script:!0,comment:!0,headFavicon:!0,headWhitespace:!0,headMetaDescKeywords:"all"===h,headMetaSocial:!0,headMetaRobots:!0,headMetaHttpEquiv:!0,headMetaAuthorship:!0,headMetaVerification:!0}:!1===h?{}:h,dataURLOptions:f,inlineImages:l,recordCanvas:c,preserveWhiteSpace:m,onSerialize:g,onIframeLoad:v,iframeLoadTimeout:y,onStylesheetLoad:b,stylesheetLoadTimeout:w,keepIframeSrcFn:k,newlyAddedElement:!1})}(document,{mirror:qp,blockClass:r,blockSelector:i,maskTextClass:l,maskTextSelector:c,inlineStylesheet:u,maskAllInputs:D,maskTextFn:m,maskInputFn:f,slimDOM:N,dataURLOptions:b,recordCanvas:x,inlineImages:T,onSerialize:e=>{jd(e,qp)&&q.addIframe(e),Fd(e,qp)&&z.trackLinkElement(e),Bd(e)&&V.addShadowRoot(wd.shadowRoot(e),document)},onIframeLoad:(e,t)=>{q.attachIframe(e,t),V.observeAttachShadow(e)},onStylesheetLoad:(e,t)=>{z.attachLinkElement(e,t)},keepIframeSrcFn:L});if(!t)return console.warn("Failed to snapshot the document");_p({type:qd.FullSnapshot,data:{node:t,initialOffset:Od(window)}},e),ap.forEach((e=>e.unlock())),document.adoptedStyleSheets&&document.adoptedStyleSheets.length>0&&z.adoptStyleSheets(document.adoptedStyleSheets,qp.getId(document))};try{const e=[],t=e=>{var t;return ip(gp)({mutationCb:_,mousemoveCb:(e,t)=>_p({type:qd.IncrementalSnapshot,data:{source:t,positions:e}}),mouseInteractionCb:e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.MouseInteraction,...e}}),scrollCb:U,viewportResizeCb:e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.ViewportResize,...e}}),inputCb:e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.Input,...e}}),mediaInteractionCb:e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.MediaInteraction,...e}}),styleSheetRuleCb:e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.StyleSheetRule,...e}}),styleDeclarationCb:e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.StyleDeclaration,...e}}),canvasMutationCb:H,fontCb:e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.Font,...e}}),selectionCb:e=>{_p({type:qd.IncrementalSnapshot,data:{source:Wd.Selection,...e}})},customElementCb:e=>{_p({type:qd.IncrementalSnapshot,data:{source:Wd.CustomElement,...e}})},blockClass:r,ignoreClass:a,ignoreSelector:s,maskTextClass:l,maskTextSelector:c,maskInputOptions:D,inlineStylesheet:u,sampling:y,recordDOM:k,recordCanvas:x,inlineImages:T,userTriggeredOnInput:I,collectFonts:E,doc:e,maskInputFn:f,maskTextFn:m,keepIframeSrcFn:L,blockSelector:i,slimDOMOptions:N,dataURLOptions:b,mirror:qp,iframeManager:q,stylesheetManager:z,shadowDomManager:V,processedNodeManager:W,canvasManager:Hp,ignoreCSSAttributes:A,plugins:(null==(t=null==O?void 0:O.filter((e=>e.observer)))?void 0:t.map((e=>({observer:e.observer,options:e.options,callback:t=>_p({type:qd.Plugin,data:{plugin:e.name,payload:t}})}))))||[]},g)};q.addLoadListener((n=>{try{e.push(t(n.contentDocument))}catch(o){console.warn(o)}}));const n=()=>{Up(),e.push(t(document)),zp=!0};return"interactive"===document.readyState||"complete"===document.readyState?n():(e.push(kd("DOMContentLoaded",(()=>{_p({type:qd.DomContentLoaded,data:{}}),"DOMContentLoaded"===C&&n()}))),e.push(kd("load",(()=>{_p({type:qd.Load,data:{}}),"load"===C&&n()}),window))),()=>{e.forEach((e=>e())),W.destroy(),zp=!1,rp=void 0}}catch(X){console.warn(X)}}var Vp,Gp;function Xp(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return Yp(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Yp(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0,r=function(){};return{s:r,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){s=!0,i=e},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw i}}}}function Yp(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n{if(!zp)throw new Error("please add custom event after start recording");_p({type:qd.Custom,data:{tag:e,payload:t}})},Wp.freezePage=()=>{ap.forEach((e=>e.freeze()))},Wp.takeFullSnapshot=e=>{if(!zp)throw new Error("please take full snapshot after start recording");Up(e)},Wp.mirror=qp,(Gp=Vp||(Vp={}))[Gp.NotStarted=0]="NotStarted",Gp[Gp.Running=1]="Running",Gp[Gp.Stopped=2]="Stopped";var th=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),Qp(this,"startDate",void 0),Qp(this,"events",[]),Qp(this,"bufferSize",0),Qp(this,"stopFunction",void 0),Qp(this,"customOptions",{})}var t,n,o;return t=e,o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],(n=[{key:"setOptions",value:function(e){this.customOptions=e}},{key:"start",value:function(){this.stop(),this.startDate=Date.now();var e=this.events;try{this.stopFunction=Wp(Zp(Zp(Zp({},{inlineStylesheet:!0,blockClass:"gl-block",ignoreClass:"gl-ignore",maskTextClass:"gl-mask",dataURLOptions:{quality:.7},recordCanvas:!1,sampling:{scroll:150,mouseInteraction:{MouseUp:!1,MouseDown:!1,Click:!0,ContextMenu:!0,DblClick:!0,Focus:!0,Blur:!0,TouchStart:!0,TouchEnd:!1}},collectFonts:!1,recordCrossOriginIframes:!1}),this.customOptions),{},{emit:function(t){var n=function(e){var t=JSON.stringify(e);if(t.length>4e6){var n,o=/data:([\w\/\-\.]+);(\w+),([^)"]*)/gim,r=Xp(t.matchAll(o));try{for(r.s();!(n=r.n()).done;){var i=n.value;t="image/"===i[1].toLocaleLowerCase().slice(0,6)?t.replace(i[0],"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAQSURBVHgBAQUA+v8ABRg5/wHSAVZN1mnaAAAAAElFTkSuQmCC"):t.replace(i[0],"")}}catch(Xm){r.e(Xm)}finally{r.f()}}return{event:JSON.parse(t),size:t.length}}(t).event;e.push(n)}}))}catch(t){console.error(t)}}},{key:"stop",value:function(){this.stopFunction&&this.stopFunction(),this.startDate=void 0,this.events=[],this.bufferSize=0}},{key:"getReplayData",value:function(){return{startDate:this.startDate,events:this.events,baseUrl:window.location.origin,width:window.innerWidth,height:window.innerHeight,isMobile:w(),type:"rrweb"}}}])&&$p(t.prototype,n),o&&$p(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function nh(e){return nh="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},nh(e)}function oh(e,t){for(var n=0;nthis.startPoint.x&&(r=this.startPoint.x),t.y>this.startPoint.y&&(i=this.startPoint.y),this.path.setAttributeNS(null,"x",r),this.path.setAttributeNS(null,"y",i),this.path.setAttributeNS(null,"width",n),this.path.setAttributeNS(null,"height",o)}}},{key:"mouseDownRect",value:function(e){this.path=document.createElementNS("http://www.w3.org/2000/svg","rect"),this.path.setAttribute("fill","none"),this.path.setAttribute("stroke",this.color),this.path.setAttribute("stroke-linecap","round"),this.path.setAttribute("stroke-width",this.strokeWidthRect),this.startPoint=this.getMousePosition(e),this.appendPathToSvg(this.path)}},{key:"mouseDownPen",value:function(e){var t=this.color+"AA",n=this.strokeWidth;"blur"===this.tool&&(t="#000000",n=40),this.path=document.createElementNS("http://www.w3.org/2000/svg","path"),this.path.setAttribute("fill","none"),this.path.setAttribute("stroke",t),this.path.setAttribute("stroke-linecap","round"),this.path.setAttribute("stroke-width",n),this.buffer=[];var o=this.getMousePosition(e);this.appendToBuffer(o),this.strPath="M"+o.x+" "+o.y,this.path.setAttribute("d",this.strPath),this.appendPathToSvg(this.path)}},{key:"setTool",value:function(e){this.tool=e}},{key:"setColor",value:function(e){this.color=e}},{key:"getMousePosition",value:function(e){return e.touches&&e.touches.length>0?{x:e.touches[0].clientX,y:e.touches[0].clientY}:{x:e.clientX,y:e.clientY}}},{key:"getAveragePoint",value:function(e){var t=this.buffer.length;if(t%2==1||t>=this.bufferSize){var n,o,r=0,i=0,a=0;for(o=e;othis.bufferSize;)this.buffer.shift()}},{key:"appendPathToSvg",value:function(e){this.svgElement.appendChild(e),this.pathBuffer.push(e),this.rerender()}},{key:"removeLastAddedPathFromSvg",value:function(){this.pathBuffer.length<=0||!this.svgElement||(this.svgElement.removeChild(this.pathBuffer[this.pathBuffer.length-1]),this.pathBuffer.pop(),this.rerender())}},{key:"fadeOutToolbar",value:function(){var e=document.querySelector(".bb-capture-toolbar");e&&(e.style.opacity=0,e.style.pointerEvents="none")}},{key:"fadeInToolbar",value:function(){var e=document.querySelector(".bb-capture-toolbar");e&&(e.style.opacity=1,e.style.pointerEvents="auto")}}],n&&oh(t.prototype,n),o&&oh(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function sh(e){return sh="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},sh(e)}function lh(e,t){for(var n=0;n\n \n
'.concat(p("dismiss"),"
\n
").concat(p("rect"),'
\n
\n
\n ').concat(p("drag"),"\n
\n ").concat("capture"===this.type?'
\n '.concat(p("recorderon"),"\n ").concat(p("recorderoff"),'\n \n
\n
\n ').concat(p("mic"),'\n \n
\n
2:00
\n
\n
\n ').concat(p("pointer"),"\n
"):"",'\n
\n ').concat(p("rect"),'\n
\n
\n ').concat(p("pen"),'\n
\n
\n ').concat(p("blur"),'\n
\n
\n
\n ').concat(kh.translateText("pickAColor"),'\n
\n
\n ').concat(p("undo"),'\n ').concat(kh.translateText("undo"),"\n
\n ").concat("capture"!==this.type?'
'.concat(kh.translateText("next"),"
"):"",'\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
').concat(kh.translateText("retry"),'
\n
').concat(kh.translateText("next"),"
\n
\n
\n
\n "),document.body.appendChild(e),e.setAttribute("dir",kh.getInstance().isRTLLayout?"rtl":"ltr")}},{key:"unregisterListeners",value:function(){this.escListener&&document.removeEventListener("keydown",this.escListener),this.pageLeaveListener&&window.removeEventListener("beforeunload",this.pageLeaveListener)}},{key:"registerListeners",value:function(){var e=this;this.escListener=function(t){var n=!1,o=!1;"key"in(t=t||window.event)&&(n="Escape"===t.key,o="Enter"===t.key),n&&e.dismiss(),"screenshot"===e.type&&o&&e.showNextStep()},document.addEventListener("keydown",this.escListener),this.pageLeaveListener=function(e){e.preventDefault(),e.returnValue=""},window.addEventListener("beforeunload",this.pageLeaveListener)}},{key:"show",value:function(e){this.callback=e,this.registerListeners(),this.hideWidgetUI(),this.createEditorUI(),this.setupMousePointer(),"screenshot"===this.type?(Wm.getInstance().setGlobalDataItem("snapshotPosition",{x:window.scrollX,y:window.scrollY}),dh.disableScroll()):this.setupScreenRecording(),this.screenDrawer=new ah(this.captureScreenDrawerRerender.bind(this)),this.setupColorPicker(),this.setupToolbar()}},{key:"setupColorPicker",value:function(){for(var t=this,n=document.querySelector(".bb-capture-toolbar-item-selectedcolor"),o=document.querySelectorAll(".bb-capture-toolbar-item-color"),r=document.querySelector(".bb-capture-toolbar-item-colorpicker"),i=function(){var i=o[a],s=i.getAttribute("data-color");i.style.backgroundColor=s,i.onclick=function(){i&&(t.screenDrawer.setColor(s),r&&(r.style.display="none"),n.style.backgroundColor=i.style.backgroundColor,e.setPenColor(s))}},a=0;a0?o.classList.remove(e):o.classList.add(e))}}},{key:"captureRenderer",value:function(){if(this.screenRecorder){this.screenRecorder.file&&Wm.getInstance().setGlobalDataItem("screenRecordingData",this.screenRecorder.file);var e="bb-capture-editor-item-inactive",t=document.querySelector(".bb-capture-toolbar-item-timer"),n=document.querySelectorAll(".bb-capture-toolbar-item"),o=document.querySelector(".bb-tooltip-screen-recording"),r=document.querySelector(".bb-tooltip-audio-recording"),i=document.querySelector(".bb-capture-editor"),a="bb-capture-editor-recording",s="bb-capture-editor-notrecording";this.screenRecorder.isRecording?(i.classList.add(a),i.classList.remove(s)):(i.classList.add(s),i.classList.remove(a));var l=document.querySelector(".bb-capture-toolbar");document.querySelector(".bb-capture-preview").style.display=this.screenRecorder.file?"flex":"none",l.style.display=this.screenRecorder.file?"none":"flex";for(var c=0;c0){var t=e.filter((function(e){return new Date(e.createdAt)>new Date(Date.now()-36e5)}));t.length>2?this.notifications=t.splice(0,t.length-2):this.notifications=t,this.renderNotifications()}}catch(n){}}},{key:"setNotificationCount",value:function(e){this.unreadCount=e,this.updateTabBarNotificationCount(),a.getInstance().updateNotificationBadge(this.unreadCount)}},{key:"showNotification",value:function(e){this.notificationContainer&&e&&e.data&&(this.notifications.find((function(t){return e.outbound===t.outbound}))||(this.notifications.push(e),e.sound&&tf.ping()),this.notifications.length>2&&this.notifications.shift(),I(this.unreadNotificationsKey,this.notifications),this.renderNotifications())}},{key:"renderNotifications",value:function(){var e=this;if(this.notificationContainer){this.clearAllNotifications(!0);var t=document.createElement("div");t.onclick=function(){e.clearAllNotifications(),e.currentNewsIndex=0},t.className="gleap-notification-close",t.innerHTML=p("dismiss"),this.notificationContainer.appendChild(t);var n=this.notifications.filter((function(e){return e.data.news})).sort((function(e,t){return new Date(e.createdAt)-new Date(t.createdAt)})),o=this.notifications.filter((function(e){return!e.data.news}));if(n.length>0){var r=this.currentNewsIndex1){var m=document.createElement("div");m.className="gleap-news-pagination";var g=document.createElement("span");g.className="gleap-news-page-indicator",g.innerText="".concat(r+1," / ").concat(n.length),m.appendChild(g);var v=document.createElement("button");v.className="gleap-news-next-button",r\n
\n
\n '.concat(t.data.text,'\n
\n
\n
\n
\n
\n \n \n \n ').concat(t.data.nextStepTitle,"\n
\n
\n ")}else r.className="gleap-notification-item",r.innerHTML="\n ".concat(t.data.sender&&t.data.sender.profileImageUrl&&''),'\n
\n ').concat(t.data.sender?'
\n '.concat(t.data.sender.name,"\n
"):"",'\n
').concat(n,"
\n
");e.notificationContainer.appendChild(r)},b=0;b0||o.length>0||this.clearAllNotifications(!0)}}},{key:"openNews",value:function(e){e.data.news?Wm.openNewsArticle(e.data.news.id,!0):Wm.open()}},{key:"renderDescription",value:function(e){var t=e.data,n=t.previewText,o=t.sender;return n&&n.length>0?n:o?'\n
\n '.concat(o.profileImageUrl?'').concat(o.name,''):"","\n ").concat(o.name,"\n
\n "):""}},{key:"clearAllNotifications",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(this.notificationContainer)for(e||(this.notifications=[],this.currentNewsIndex=0,I(this.unreadNotificationsKey,this.notifications));this.notificationContainer.firstChild;)this.notificationContainer.removeChild(this.notificationContainer.firstChild)}},{key:"updateContainerStyle",value:function(){if(this.notificationContainer){var e=dt.getInstance().getFlowConfig(),t="gleap-notification-container--left",n="gleap-notification-container--no-button";this.notificationContainer.classList.remove(t),this.notificationContainer.classList.remove(n),e.feedbackButtonPosition!==a.FEEDBACK_BUTTON_CLASSIC_LEFT&&e.feedbackButtonPosition!==a.FEEDBACK_BUTTON_BOTTOM_LEFT||this.notificationContainer.classList.add(t),null===a.getInstance().buttonHidden?e.feedbackButtonPosition===a.FEEDBACK_BUTTON_NONE&&this.notificationContainer.classList.add(n):a.getInstance().buttonHidden&&this.notificationContainer.classList.add(n),this.notificationContainer.setAttribute("dir",kh.getInstance().isRTLLayout?"rtl":"ltr")}}}],o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],n&&Ph(t.prototype,n),o&&Ph(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Fh(e){return Fh="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Fh(e)}function Bh(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function _h(e){for(var t=1;t'),document.body.appendChild(t),this.bannerContainer=t}},{key:"sendMessage",value:function(e){try{var t=document.querySelector(".gleap-b-frame");t&&t.contentWindow&&t.contentWindow.postMessage(JSON.stringify(_h(_h({},e),{},{type:"banner"})),"*")}catch(n){}}},{key:"showBanner",value:function(e){this.injectBannerUI(e)}}])&&Uh(t.prototype,n),o&&Uh(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Wh(e){return Wh="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Wh(e)}function Vh(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Gh(e){for(var t=1;t\n
\n \n
\n '),document.body.appendChild(n),this.modalContainer=n,this.modalBackdropClickListener=this.modalContainer.querySelector(".gleap-modal-backdrop").addEventListener("click",(function(){var e,n;(null===(e=null===(n=t.modalData)||void 0===n?void 0:n.showCloseButton)||void 0===e||e)&&t.hideModal()})),document.body.classList.add("gleap-modal-open")}},{key:"_postMessage",value:function(e){try{var t=this.modalContainer.querySelector(".gleap-modal-frame");null!=t&&t.contentWindow&&t.contentWindow.postMessage(JSON.stringify(Gh(Gh({},e),{},{type:"modal"})),this.modalUrl)}catch(Xm){}}},{key:"showModal",value:function(e){e&&e.config&&this._injectModalUI(e.config)}},{key:"hideModal",value:function(){this.modalContainer&&(this.modalBackdropClickListener&&this.modalContainer.querySelector(".gleap-modal-backdrop").removeEventListener("click",this.modalBackdropClickListener),document.body.removeChild(this.modalContainer),this.modalContainer=null,document.body.classList.remove("gleap-modal-open"))}}])&&Xh(t.prototype,n),o&&Xh(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Zh(e){return Zh="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Zh(e)}function $h(e,t){for(var n=0;n=a-i;++s)n[i]=t[s],uf(e,t,n,s+1,r,i+1,a);else e.push(n.slice(0,i).join(""))}function df(e){return function(e){if(Array.isArray(e))return pf(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return pf(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return pf(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function pf(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){s=!0,i=e},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw i}}}}function bf(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n1&&void 0!==arguments[1]?arguments[1]:["id","class","length"];return df(e.attributes).reduce((function(e,n){return t.indexOf(n.nodeName)>-1||e.push("[".concat(n.nodeName,'="').concat(n.value,'"]')),e}),[])}(e,n)},Class:cf,ID:lf};return t.reduce((function(t,n){return t[n]=o[n](e),t}),{})}function kf(e,t){try{var n=e.parentNode.querySelectorAll(t);return 1===n.length&&n[0]===e}catch(o){return!1}}function xf(e,t){return t.find(kf.bind(null,e))}function Sf(e,t,n){var o=function(e,t){for(var n=[],o=e.length,r=[],i=1;i<=t;++i)uf(n,e,r,0,o-1,0,i);return n}(t,3),r=xf(e,o);return Boolean(r)||Boolean(n)&&(r=xf(e,o=o.map((function(e){return n+e}))),Boolean(r))?r:null}function Cf(e,t,n,o){var r,i=wf(e,t,n);o&&o instanceof RegExp&&(i.ID=o.test(i.ID)?null:i.ID,i.Class=i.Class.filter((function(e){return!o.test(e)})));var a,s=yf(t);try{for(s.s();!(a=s.n()).done;){var l=a.value,c=i.ID,u=i.Tag,d=i.Class,p=i.Attributes,h=i.NthChild;switch(l){case"ID":if(Boolean(c)&&kf(e,c))return c;break;case"Tag":if(Boolean(u)&&kf(e,u))return u;break;case"Class":if(Boolean(d)&&d.length&&(r=Sf(e,d,u)))return r;break;case"Attributes":if(Boolean(p)&&p.length&&(r=Sf(e,p,u)))return r;break;case"NthChild":if(Boolean(h))return h}}}catch(Xm){s.e(Xm)}finally{s.f()}return"*"}function If(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=n.selectorTypes,r=void 0===o?["ID","Class","Tag","NthChild"]:o,i=n.attributesToIgnore,a=void 0===i?["id","class","length"]:i,s=n.excludeRegex,l=void 0===s?null:s,c=[],u=function(e){for(var t=[],n=e;ff(n);)t.push(n),n=n.parentNode;return t}(e),d=yf(u);try{for(d.s();!(t=d.n()).done;){var p=Cf(t.value,r,a,l);Boolean(p)&&c.push(p)}}catch(Xm){d.e(Xm)}finally{d.f()}for(var h=[],f=0,m=c;f ");if(vf(e,v))return v}return null}function Ef(e){return Ef="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ef(e)}function Tf(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Of(e,t){for(var n=0;n0&&void 0!==arguments[0]&&arguments[0])||o(t.gleapCollapseUI,e)&&o(t.gleapFrameContainer,n))&&(t.gleapCollapseUI&&t.gleapCollapseUI.classList.toggle(e),t.gleapFrameContainer&&t.gleapFrameContainer.classList.toggle(n))})),Wf(this,"injectCollapseUI",(function(){if(!t.injectedCollapseUI){t.injectedCollapseUI=!0;var e=document.createElement("div");e.className="gleap-admin-collapse-ui",e.innerHTML='
\n '.concat(p("arrowdown"),"\n
"),document.body.appendChild(e),t.gleapCollapseUI=e,e.addEventListener("click",(function(e){e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t.toggleCollapseUI()}))}})),Wf(this,"injectFrame",(function(){var e;if(!t.injectedFrame){t.injectedFrame=!0;var n=document.createElement("div");n.className="gleap-admin-frame-container",n.innerHTML=''),document.body.appendChild(n),t.gleapFrameContainer=n,t.gleapFrame=document.querySelector(".gleap-admin-frame")}}))}var t,n,o;return t=e,o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],(n=[{key:"logCurrentPage",value:function(){var e=window.location.href;e&&e!==this.lastUrl&&(this.lastUrl=e,this.sendMessageToTourBuilder({name:"page-changed",data:{page:e}}))}},{key:"startPageListener",value:function(){var e=this;setInterval((function(){e.logCurrentPage()}),1e3)}},{key:"initAdminHelper",value:function(){var e=this;wm.getInstance().disable(),e.adminHelper=new _f;try{e.adminHelper.onElementPicked=function(t){e.toggleCollapseUI(!0),e.sendMessageToTourBuilder({name:"element-picked",data:{selector:t}})}}catch(t){console.log(t)}e.injectFrame(),e.injectCollapseUI(),e.setFrameHeight("loading")}},{key:"setFrameHeight",value:function(e){if(this.gleapFrameContainer){var t="";t="picker"===e||"navigate"===e?"65px":"editor"===e?"100vh":"0px",this.gleapFrameContainer.style.height=t}}},{key:"start",value:function(){var e=this;if("undefined"!=typeof window&&!window.gleapAdminDisabled){var t=this;window.addEventListener("message",(function(n){if("https://app.gleap.io"===n.origin)try{var o=JSON.parse(n.data);if("admin"===o.type&&("load"===o.name&&(t.configData=o.data,t.initAdminHelper()),"smartlink-search-result"===o.name&&e.sendMessageToTourBuilder({name:"smartlink-search-result",data:o.data}),"translate-complete"===o.name&&e.sendMessageToTourBuilder({name:"translate-complete",data:o.data})),"tourbuilder"===o.type){var r;if("loaddata"===o.name&&e.sendMessageToTourBuilder({name:"data",data:zf(zf({},t.configData),{},{currentPage:window.location.href})}),"highlight-element"===o.name&&(document.querySelectorAll(".gleap-admin-highlight").forEach((function(e){e.classList.remove("gleap-admin-highlight")})),null!=o&&null!==(r=o.data)&&void 0!==r&&r.selector)){var i,a=document.querySelector(null==o||null===(i=o.data)||void 0===i?void 0:i.selector);a&&a.classList.add("gleap-admin-highlight")}if("smartlink-search"===o.name&&e.sendMessage({name:"smartlink-search",data:o.data}),"product-tour-started"===o.name&&e.sendMessage({name:"product-tour-started",data:o.data}),"translate"===o.name&&e.sendMessage({name:"translate",data:o.data}),"save"===o.name&&e.sendMessage({name:"save",data:o.data}),"update-steps"===o.name&&e.sendMessage({name:"update-steps",data:o.data}),"click"===o.name)try{document.querySelector(o.data.selector).click()}catch(s){console.log(s)}"status-changed"===o.name&&(t.status=o.data,e.setFrameHeight(t.status),t.adminHelper.stopPicker(),"picker"===t.status&&t.adminHelper.startPicker())}}catch(l){}})),this.sendMessage({name:"init"}),this.startPageListener()}}},{key:"sendMessage",value:function(e){try{window&&window.opener&&window.opener.postMessage(JSON.stringify(zf(zf({},e),{},{type:"admin"})),"*")}catch(t){}}},{key:"sendMessageToTourBuilder",value:function(e){try{this.gleapFrame&&this.gleapFrame.contentWindow&&this.gleapFrame.contentWindow.postMessage(JSON.stringify(zf(zf({},e),{},{type:"tourbuilder"})),"*")}catch(t){}}}])&&qf(t.prototype,n),o&&qf(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Xf(e){return Xf="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Xf(e)}function Yf(e){return function(e){if(Array.isArray(e))return Jf(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return Jf(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Jf(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Jf(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n0&&void 0!==arguments[0]?arguments[0]:{})}function n(t){return t?e[t]:e}function o(e,t,n,o){return(e/=o/2)<1?n/2*e*e+t:-n/2*(--e*(e-2)-1)+t}function r(e){var t='a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type="text"]:not([disabled]), input[type="radio"]:not([disabled]), input[type="checkbox"]:not([disabled]), select:not([disabled])';return e.flatMap((function(e){var n=e.matches(t),o=Array.from(e.querySelectorAll(t));return[].concat(Yf(n?[e]:[]),o)})).filter((function(e){return"none"!==getComputedStyle(e).pointerEvents&&function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)}(e)}))}function i(e){if(e&&!function(e){var t=e.getBoundingClientRect();return t.top>=0&&t.left>=0&&t.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&t.right<=(window.innerWidth||document.documentElement.clientWidth)}(e)){var t=n("smoothScroll");e.scrollIntoView({behavior:!t||a(e)?"auto":"smooth",inline:"center",block:"center"})}}function a(e){if(e&&e.parentElement){var t=e.parentElement;return t.scrollHeight>t.clientHeight}}var s={};function l(e,t){s[e]=t}function c(e){return e?s[e]:s}function u(){s={}}var d={};function p(e,t){d[e]=t}function h(e){var t;null==(t=d[e])||t.call(d)}function f(e){if(e){var t=e.getBoundingClientRect(),n={x:t.x,y:t.y,width:t.width,height:t.height};l("__activeStagePosition",n),g(n)}}function m(e){var t=function(e){var t=window.innerWidth,o=window.innerHeight,r=document.createElementNS("http://www.w3.org/2000/svg","svg");r.classList.add("gleap-tour-overlay","gleap-tour-overlay-animated"),r.setAttribute("viewBox","0 0 ".concat(t," ").concat(o)),r.setAttribute("xmlSpace","preserve"),r.setAttribute("xmlnsXlink","http://www.w3.org/1999/xlink"),r.setAttribute("version","1.1"),r.setAttribute("preserveAspectRatio","xMinYMin slice"),r.style.fillRule="evenodd",r.style.clipRule="evenodd",r.style.strokeLinejoin="round",r.style.strokeMiterlimit="2",r.style.zIndex="10000",r.style.position="fixed",r.style.top="0",r.style.left="0",r.style.width="100%",r.style.height="100%";var i=document.createElementNS("http://www.w3.org/2000/svg","path");return i.setAttribute("d",v(e)),i.style.fill=n("overlayColor")||"rgb(0,0,0)",i.style.opacity="".concat(n("overlayOpacity")),i.style.pointerEvents="auto",i.style.cursor="auto",r.appendChild(i),r}(e);document.body.appendChild(t),S(t,(function(e){"path"===e.target.tagName&&h("overlayClick")})),l("__overlaySvg",t)}function g(e){var t=c("__overlaySvg");if(t){var n=t.firstElementChild;if("path"!==(null==n?void 0:n.tagName))throw new Error("no path element found in stage svg");n.setAttribute("d",v(e))}else m(e)}function v(e){var t=window.innerWidth,o=window.innerHeight,r=n("stagePadding")||0,i=n("stageRadius")||0,a=e.width+2*r,s=e.height+2*r,l=Math.min(i,a/2,s/2),c=Math.floor(Math.max(l,0)),u=e.x-r+c,d=e.y-r,p=a-2*c,h=s-2*c;return"M".concat(t,",0L0,0L0,").concat(o,"L").concat(t,",").concat(o,"L").concat(t,",0Z\n M").concat(u,",").concat(d," h").concat(p," a").concat(c,",").concat(c," 0 0 1 ").concat(c,",").concat(c," v").concat(h," a").concat(c,",").concat(c," 0 0 1 -").concat(c,",").concat(c," h-").concat(p," a").concat(c,",").concat(c," 0 0 1 -").concat(c,",-").concat(c," v-").concat(h," a").concat(c,",").concat(c," 0 0 1 ").concat(c,",-").concat(c," z")}function y(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:5e3,r=e.element,a=r;if("string"==typeof a)try{a=document.querySelector(r)}catch(u){var s=r.replace(/(#[^#\s]+)/g,(function(e){return e.replace(/:/g,"\\:")}));a=document.querySelector(s)}if(r&&!a&&t>=0)setTimeout((function(){C(),y(e,t-100)}),100);else{if(!a&&("INPUT"===e.mode||"CLICK"===e.mode))return n("onElementNotFound")(e);a||(a=function(){var e=document.getElementById("gleap-tour-dummy-element");if(e)return e;var t=document.createElement("div");return t.id="gleap-tour-dummy-element",t.style.width="0",t.style.height="0",t.style.pointerEvents="none",t.style.opacity="0",t.style.position="fixed",t.style.top="50%",t.style.left="50%",document.body.appendChild(t),t}()),function(e,t){var r,a,s=400,u=Date.now(),d=c("__activeStep"),p=c("__activeElement")||e,h=!p||p===e,m="gleap-tour-dummy-element"===e.id,v="gleap-tour-dummy-element"===p.id,y=n("animate"),b=t.onHighlightStarted||n("onHighlightStarted"),w=(null==t?void 0:t.onHighlighted)||n("onHighlighted"),k=(null==d?void 0:d.onDeselected)||n("onDeselected"),x=n(),S=c();!h&&k&&k(v?void 0:p,d,{config:x,state:S});b&&b(m?void 0:e,t,{config:x,state:S});var E=!h&&y,T=!1;C(),l("previousStep",d),l("previousElement",p),l("activeStep",t),l("activeElement",e);var O=function r(){if(c("__transitionCallback")===r){var i=Date.now()-u,a=s-i<=s/2;t.popover&&a&&!T&&E&&(I(e,t),T=!0),n("animate")&&i0&&P[0].focus()}function E(){var e=c("popover");if(null==e?void 0:e.wrapper){var t=e.wrapper.getBoundingClientRect(),o=n("stagePadding")||0,r=n("popoverOffset")||0;return{width:t.width+o+r,height:t.height+o+r,realWidth:t.width,realHeight:t.height}}}function T(e,t){var n=t.elementDimensions,o=t.popoverDimensions,r=t.popoverPadding,i=t.popoverArrowDimensions;return"start"===e?Math.max(Math.min(n.top-r,window.innerHeight-o.realHeight-i.width),i.width):"end"===e?Math.max(Math.min(n.top-(null==o?void 0:o.realHeight)+n.height+r,window.innerHeight-(null==o?void 0:o.realHeight)-i.width),i.width):"center"===e?Math.max(Math.min(n.top+n.height/2-(null==o?void 0:o.realHeight)/2,window.innerHeight-(null==o?void 0:o.realHeight)-i.width),i.width):0}function O(e,t){var n=t.elementDimensions,o=t.popoverDimensions,r=t.popoverPadding,i=t.popoverArrowDimensions;return"start"===e?Math.max(Math.min(n.left-r,window.innerWidth-o.realWidth-i.width),i.width):"end"===e?Math.max(Math.min(n.left-(null==o?void 0:o.realWidth)+n.width+r,window.innerWidth-(null==o?void 0:o.realWidth)-i.width),i.width):"center"===e?Math.max(Math.min(n.left+n.width/2-(null==o?void 0:o.realWidth)/2,window.innerWidth-(null==o?void 0:o.realWidth)-i.width),i.width):0}function L(e,t){var o=c("popover");if(o){var r=(null==t?void 0:t.popover)||{},i=r.align,a=void 0===i?"start":i,s=r.side,l=void 0===s?"left":s,u=a,d="gleap-tour-dummy-element"===e.id?"over":l,p=n("stagePadding")||0,h=E(),f=o.arrow.getBoundingClientRect(),m=e.getBoundingClientRect(),g=m.top-h.height,v=g>=0,y=window.innerHeight-(m.bottom+h.height),b=y>=0,w=m.left-h.width,k=w>=0,x=window.innerWidth-(m.right+h.width),S=x>=0,C=!(v||b||k||S),I=d;if("top"===d&&v?S=k=b=!1:"bottom"===d&&b?S=k=v=!1:"left"===d&&k?S=v=b=!1:"right"===d&&S&&(k=v=b=!1),"over"===d){var L=window.innerWidth/2-h.realWidth/2,A=window.innerHeight/2-h.realHeight/2;o.wrapper.style.left="".concat(L,"px"),o.wrapper.style.right="auto",o.wrapper.style.top="".concat(A,"px"),o.wrapper.style.bottom="auto"}else if(C){var M=window.innerWidth/2-(null==h?void 0:h.realWidth)/2;o.wrapper.style.left="".concat(M,"px"),o.wrapper.style.right="auto",o.wrapper.style.bottom="".concat(10,"px"),o.wrapper.style.top="auto"}else if(k){var R=Math.min(w,window.innerWidth-(null==h?void 0:h.realWidth)-f.width),P=T(u,{elementDimensions:m,popoverDimensions:h,popoverPadding:p,popoverArrowDimensions:f});o.wrapper.style.left="".concat(R,"px"),o.wrapper.style.top="".concat(P,"px"),o.wrapper.style.bottom="auto",o.wrapper.style.right="auto",I="left"}else if(S){var D=Math.min(x,window.innerWidth-(null==h?void 0:h.realWidth)-f.width),N=T(u,{elementDimensions:m,popoverDimensions:h,popoverPadding:p,popoverArrowDimensions:f});o.wrapper.style.right="".concat(D,"px"),o.wrapper.style.top="".concat(N,"px"),o.wrapper.style.bottom="auto",o.wrapper.style.left="auto",I="right"}else if(v){var j=Math.min(g,window.innerHeight-h.realHeight-f.width),F=O(u,{elementDimensions:m,popoverDimensions:h,popoverPadding:p,popoverArrowDimensions:f});o.wrapper.style.top="".concat(j,"px"),o.wrapper.style.left="".concat(F,"px"),o.wrapper.style.bottom="auto",o.wrapper.style.right="auto",I="top"}else if(b){var B=Math.min(y,window.innerHeight-(null==h?void 0:h.realHeight)-f.width),_=O(u,{elementDimensions:m,popoverDimensions:h,popoverPadding:p,popoverArrowDimensions:f});o.wrapper.style.left="".concat(_,"px"),o.wrapper.style.bottom="".concat(B,"px"),o.wrapper.style.top="auto",o.wrapper.style.right="auto",I="bottom"}C?o.arrow.classList.add("gleap-tour-popover-arrow-none"):function(e,t,n){var o=c("popover");if(!o)return;var r=n.getBoundingClientRect(),i=E(),a=o.arrow,s=i.width,l=window.innerWidth,u=r.width,d=r.left,p=i.height,h=window.innerHeight,f=r.top,m=r.height;a.className="gleap-tour-popover-arrow";var g=t,v=e;"top"===t?(d+u<=0?(g="right",v="end"):d+u-s<=0&&(g="top",v="start"),d>=l?(g="left",v="end"):d+s>=l&&(g="top",v="end")):"bottom"===t?(d+u<=0?(g="right",v="start"):d+u-s<=0&&(g="bottom",v="start"),d>=l?(g="left",v="start"):d+s>=l&&(g="bottom",v="end")):"left"===t?(f+m<=0?(g="bottom",v="end"):f+m-p<=0&&(g="left",v="start"),f>=h?(g="top",v="end"):f+p>=h&&(g="left",v="end")):"right"===t&&(f+m<=0?(g="bottom",v="start"):f+m-p<=0&&(g="right",v="start"),f>=h?(g="top",v="start"):f+p>=h&&(g="right",v="end"));g?(a.classList.add("gleap-tour-popover-arrow-side-".concat(g)),a.classList.add("gleap-tour-popover-arrow-align-".concat(v))):a.classList.add("gleap-tour-popover-arrow-none")}(u,I,e)}}return function(){function e(){n("allowClose")&&f()}function o(){var e=c("activeIndex"),t=n("steps")||[];if(void 0!==e){var o=e+1;t[o]?h(o):f()}}function r(){var e=c("activeIndex"),t=n("steps")||[];if(void 0!==e){var o=e-1;t[o]?h(o):f()}}function i(){var e;if(!c("__transitionCallback")){var t=c("activeIndex"),o=c("__activeStep"),i=c("__activeElement");if("CLICK"!==o.mode)if(void 0!==t&&void 0!==o)if(void 0!==c("activeIndex")){var a=(null==(e=o.popover)?void 0:e.onPrevClick)||n("onPrevClick");if(a)return a(i,o,{config:n(),state:c()});r()}}}function a(){var e;if(!c("__transitionCallback")){var t=c("activeIndex"),r=c("__activeStep"),i=c("__activeElement");if("CLICK"!==r.mode&&void 0!==t&&void 0!==r){var a=(null==(e=r.popover)?void 0:e.onNextClick)||n("onNextClick");if(a)return a(i,r,{config:n(),state:c()});o()}}}function s(){c("isInitialized")||(l("isInitialized",!0),document.body.classList.add("gleap-tour-active",n("animate")?"gleap-tour-fade":"gleap-tour-simple"),window.addEventListener("keyup",x,!1),window.addEventListener("keydown",k,!1),window.addEventListener("resize",w),window.addEventListener("scroll",w),p("overlayClick",e),p("escapePress",e),p("arrowLeftPress",i),p("arrowRightPress",a))}function h(){var e,t,o,r,i,a,s,c,u=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,d=n("steps");if(!d)return console.error("No steps to drive through"),void f();if(d[u]){l("__activeOnDestroyed",document.activeElement),l("activeIndex",u);var p=d[u],m=d[u+1],g=d[u-1],v=(null==(e=p.popover)?void 0:e.doneBtnText)||n("doneBtnText")||"Done",b=n("allowClose"),w=void 0!==(null==(t=p.popover)?void 0:t.showProgress)?null==(o=p.popover)?void 0:o.showProgress:n("showProgress"),k=((null==(r=p.popover)?void 0:r.progressText)||n("progressText")||"{{current}} of {{total}}").replace("{{current}}","".concat(u+1)).replace("{{total}}","".concat(d.length)),x=(null==(i=p.popover)?void 0:i.showButtons)||n("showButtons"),S=["next","previous"].concat(Yf(b?["close"]:[])).filter((function(e){return!(null==x?void 0:x.length)||x.includes(e)})),C=(null==(a=p.popover)?void 0:a.onNextClick)||n("onNextClick"),I=(null==(s=p.popover)?void 0:s.onPrevClick)||n("onPrevClick"),E=(null==(c=p.popover)?void 0:c.onCloseClick)||n("onCloseClick");y(Zf(Zf({},p),{},{popover:Zf({showButtons:S,nextBtnText:m?void 0:v,disableButtons:Yf(g?[]:["previous"]),showProgress:w,progressText:k,onNextClick:C||function(){m?h(u+1):f()},onPrevClick:I||function(){h(u-1)},onCloseClick:E||function(){f()}},(null==p?void 0:p.popover)||{})}))}else f()}function f(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=c("__activeElement"),o=c("__activeStep"),r=c("__activeOnDestroyed"),i=n("onDestroyStarted");if(e&&i){i(!t||"gleap-tour-dummy-element"===(null==t?void 0:t.id)?void 0:t,o,{config:n(),state:c()})}else{var a,s=(null==o?void 0:o.onDeselected)||n("onDeselected"),l=n("onDestroyed");if(document.body.classList.remove("gleap-tour-active","gleap-tour-fade","gleap-tour-simple"),window.removeEventListener("keyup",x),window.removeEventListener("resize",w),window.removeEventListener("scroll",w),function(){var e,t=c("popover");t&&(null==(e=t.wrapper.parentElement)||e.removeChild(t.wrapper))}(),function(){var e;null==(e=document.getElementById("gleap-tour-dummy-element"))||e.remove(),document.querySelectorAll(".gleap-tour-active-element").forEach((function(e){e.classList.remove("gleap-tour-active-element","gleap-tour-no-interaction"),e.removeAttribute("aria-haspopup"),e.removeAttribute("aria-expanded"),e.removeAttribute("aria-controls")}))}(),(a=c("__overlaySvg"))&&a.remove(),d={},u(),t&&o){var p="gleap-tour-dummy-element"===t.id;s&&s(p?void 0:t,o,{config:n(),state:c()}),l&&l(p?void 0:t,o,{config:n(),state:c()})}r&&r.focus()}}return t(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),{isActive:function(){return c("isInitialized")||!1},refresh:w,drive:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;s(),h(e)},setConfig:t,setSteps:function(e){u(),t(Zf(Zf({},n()),{},{steps:e}))},getConfig:n,getState:c,getActiveIndex:function(){return c("activeIndex")},isFirstStep:function(){return 0===c("activeIndex")},isLastStep:function(){var e=n("steps")||[],t=c("activeIndex");return void 0!==t&&t===e.length-1},getActiveStep:function(){return c("activeStep")},getActiveElement:function(){return c("activeElement")},getPreviousElement:function(){return c("previousElement")},getPreviousStep:function(){return c("previousStep")},moveNext:o,movePrevious:r,moveTo:function(e){(n("steps")||[])[e]?h(e):f()},hasNextStep:function(){var e=n("steps")||[],t=c("activeIndex");return void 0!==t&&e[t+1]},hasPreviousStep:function(){var e=n("steps")||[],t=c("activeIndex");return void 0!==t&&e[t-1]},highlight:function(e){s(),y(Zf(Zf({},e),{},{popover:e.popover?Zf({showButtons:[],showProgress:!1,progressText:""},e.popover):void 0}))},destroy:function(){f(!1)}}}}();const em=Qf;function tm(e){return tm="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},tm(e)}function nm(){nm=function(){return t};var e,t={},n=Object.prototype,o=n.hasOwnProperty,r=Object.defineProperty||function(e,t,n){e[t]=n.value},i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",s=i.asyncIterator||"@@asyncIterator",l=i.toStringTag||"@@toStringTag";function c(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,n){return e[t]=n}}function u(e,t,n,o){var i=t&&t.prototype instanceof v?t:v,a=Object.create(i.prototype),s=new A(o||[]);return r(a,"_invoke",{value:E(e,n,s)}),a}function d(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=u;var p="suspendedStart",h="suspendedYield",f="executing",m="completed",g={};function v(){}function y(){}function b(){}var w={};c(w,a,(function(){return this}));var k=Object.getPrototypeOf,x=k&&k(k(M([])));x&&x!==n&&o.call(x,a)&&(w=x);var S=b.prototype=v.prototype=Object.create(w);function C(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function I(e,t){function n(r,i,a,s){var l=d(e[r],e,i);if("throw"!==l.type){var c=l.arg,u=c.value;return u&&"object"==tm(u)&&o.call(u,"__await")?t.resolve(u.__await).then((function(e){n("next",e,a,s)}),(function(e){n("throw",e,a,s)})):t.resolve(u).then((function(e){c.value=e,a(c)}),(function(e){return n("throw",e,a,s)}))}s(l.arg)}var i;r(this,"_invoke",{value:function(e,o){function r(){return new t((function(t,r){n(e,o,t,r)}))}return i=i?i.then(r,r):r()}})}function E(t,n,o){var r=p;return function(i,a){if(r===f)throw new Error("Generator is already running");if(r===m){if("throw"===i)throw a;return{value:e,done:!0}}for(o.method=i,o.arg=a;;){var s=o.delegate;if(s){var l=T(s,o);if(l){if(l===g)continue;return l}}if("next"===o.method)o.sent=o._sent=o.arg;else if("throw"===o.method){if(r===p)throw r=m,o.arg;o.dispatchException(o.arg)}else"return"===o.method&&o.abrupt("return",o.arg);r=f;var c=d(t,n,o);if("normal"===c.type){if(r=o.done?m:h,c.arg===g)continue;return{value:c.arg,done:o.done}}"throw"===c.type&&(r=m,o.method="throw",o.arg=c.arg)}}}function T(t,n){var o=n.method,r=t.iterator[o];if(r===e)return n.delegate=null,"throw"===o&&t.iterator.return&&(n.method="return",n.arg=e,T(t,n),"throw"===n.method)||"return"!==o&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+o+"' method")),g;var i=d(r,t.iterator,n.arg);if("throw"===i.type)return n.method="throw",n.arg=i.arg,n.delegate=null,g;var a=i.arg;return a?a.done?(n[t.resultName]=a.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,g):a:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,g)}function O(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function L(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function A(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(O,this),this.reset(!0)}function M(t){if(t||""===t){var n=t[a];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,i=function n(){for(;++r=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var l=o.call(a,"catchLoc"),c=o.call(a,"finallyLoc");if(l&&c){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&o.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),L(n),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var o=n.completion;if("throw"===o.type){var r=o.arg;L(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,o){return this.delegate={iterator:M(t),resultName:n,nextLoc:o},"next"===this.method&&(this.arg=e),g}},t}function om(e,t){for(var n=0;n=0&&t.productTourData&&t.productTourData.steps){var e=t.productTourData.steps[t.currentActiveIndex];e&&e.selector&&""!==e.selector&&t.updatePointerPosition(document.querySelector(e.selector),e)}})))}var t,n,o;return t=e,n=[{key:"disable",value:function(){this.disabled=!0,this.cleanup()}},{key:"startWithConfig",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;"undefined"!=typeof window&&(this.productTourId||this.disabled||(this.productTourId=e,this.productTourData=t,this.currentActiveIndex=0,this.onCompleteCallback=n,this.start()))}},{key:"storeUncompletedTour",value:function(){if("undefined"!=typeof window)if(this.productTourId&&this.productTourData)try{var e=JSON.parse(JSON.stringify({tourData:this.productTourData,tourId:this.productTourId}));e.tourData.steps=e.tourData.steps.slice(this.currentActiveIndex||0,e.tourData.steps.length),localStorage.setItem(sm,JSON.stringify(e))}catch(t){}else localStorage.removeItem(sm)}},{key:"attachScrollListeners",value:function(e,t){var n=this;if("undefined"!=typeof window&&e){var o=function(e){if("undefined"!=typeof window){for(var t=[],n=e.parentElement;n;){var o=window.getComputedStyle(n);("auto"===o.overflowY||"scroll"===o.overflowY)&&n.scrollHeight>n.clientHeight&&t.push(n),n=n.parentElement}return t}}(e);o.push(window),o.forEach((function(o){var r=function(){clearTimeout(n._scrollDebounceTimer),n._scrollDebounceTimer=setTimeout((function(){n.updatePointerPosition(e,t)}),150)};o.addEventListener("scroll",r,{passive:!0}),n._scrollListeners.push({el:o,handler:r})}))}}},{key:"removeScrollListeners",value:function(){"undefined"!=typeof window&&(this._scrollListeners&&this._scrollListeners.length>0&&(this._scrollListeners.forEach((function(e){var t=e.el,n=e.handler;t.removeEventListener("scroll",n)})),this._scrollListeners=[]),this._scrollDebounceTimer&&(clearTimeout(this._scrollDebounceTimer),this._scrollDebounceTimer=null))}},{key:"updatePointerPosition",value:function(e,t){var n,o=this;if("undefined"!=typeof window)try{var r=this._pointerContainer||document.getElementById(lm);if(!r)return;if(!e)return r.style.position="fixed",r.style.left="50%",r.style.top="50%",r.style.transform="translate(-50%, -50%)",function(e){if("undefined"!=typeof window){var t=e-window.innerHeight/2;window.scrollTo({top:t,behavior:"smooth"})}}(window.innerHeight/2),this.removeScrollListeners(),this._currentAnchor=null,void(this._currentStep=null);n=e,"undefined"!=typeof window&&n&&n.scrollIntoView({behavior:"smooth",block:"center",inline:"center"});var i=0;!function n(){if(function(e){if("undefined"!=typeof window){var t=e.getBoundingClientRect();return t.top>=0&&t.left>=0&&t.bottom<=window.innerHeight&&t.right<=window.innerWidth}}(e)||i>=20){var a=e.getBoundingClientRect(),s=a.left+a.width/2,l=a.top+a.height/2+10;r.style.position="fixed",r.style.left="".concat(s,"px"),r.style.top="".concat(l,"px"),r.style.transform="translate(-50%, -50%)";var c=350;c>window.innerWidth-40&&(c=window.innerWidth-40),s+c>window.innerWidth-20?r.classList.add("copilot-pointer-container-right"):r.classList.remove("copilot-pointer-container-right"),o._currentAnchor===e&&o._currentStep===t||(o.removeScrollListeners(),o._currentAnchor=e,o._currentStep=t,o.attachScrollListeners(e,t))}else i++,setTimeout(n,100)}()}catch(a){}}},{key:"cleanup",value:function(){var e=this;"undefined"!=typeof window&&(document.body.classList.add("gl-copilot-fade-out"),this.currentAudio&&this.currentAudio.pause(),setTimeout((function(){if(e._pointerContainer)e._pointerContainer.remove(),e._pointerContainer=null;else{var t=document.getElementById(lm);t&&t.remove()}var n=document.getElementById(um);n&&n.remove();var o=document.getElementById(cm);o&&o.remove(),document.body.classList.remove("gl-copilot-fade-out")}),800),this.productTourId=void 0,this.productTourData=void 0,this.removeScrollListeners())}},{key:"toggleAudio",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.audioMuted=e,this.currentAudio&&(this.currentAudio.muted=this.audioMuted),document.querySelector(".".concat(um,"-mute")).innerHTML=p(this.audioMuted?"unmute":"mute")}},{key:"setupCopilotTour",value:function(){var e,t,n,o,r,i,a=this;if("undefined"!=typeof window){var s,l,c=null!==(e=null===(t=dt.getInstance().flowConfig)||void 0===t?void 0:t.color)&&void 0!==e?e:"#485BFF",u=d(c),h=document.getElementById(cm);h||((h=document.createElement("style")).id=cm,h.type="text/css",h.textContent="\n #".concat(lm," {\n position: absolute;\n top: 0;\n left: 0;\n display: flex;\n align-items: flex-start;\n pointer-events: none;\n z-index: 2147483610;\n transition: all 0.5s ease;\n }\n .").concat(lm,"-clickmode {\n cursor: pointer;\n pointer-events: all !important;\n }\n .").concat(lm,"-clickmode #copilot-info-bubble-content {\n display: flex !important;\n }\n .").concat(lm,"-clickmode svg {\n display: none !important;\n }\n #").concat(lm," svg {\n width: 20px;\n height: auto;\n fill: none;\n }\n #copilot-info-bubble {\n position: relative;\n }\n #copilot-info-bubble-content-container {\n position: absolute;\n top: 0px;\n left: 0px;\n min-width: min(300px, 80vw);\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n }\n .").concat(lm,"-right #copilot-info-bubble-content-container {\n left: auto !important;\n right: 0px !important;\n align-items: flex-end;\n }\n .").concat(lm,"-right .copilot-info-bubble-content {\n margin-right: 5px;\n }\n .").concat(lm,"-right svg {\n transform: scaleX(-1);\n }\n #copilot-info-bubble-content svg {\n width: 16px;\n height: 16px;\n display: inline-block !important;\n margin-left: 5px;\n }\n #copilot-info-bubble-content {\n margin-top: 18px;\n margin-left: 5px;\n padding: 10px 15px;\n border-radius: 20px;\n background-color: black;\n color: white;\n font-family: Arial, sans-serif;\n font-size: 14px;\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);\n max-width: 100%;\n white-space: normal;\n overflow-wrap: break-word;\n word-break: normal;\n hyphens: none;\n }\n .").concat(lm,"-right #copilot-info-bubble-content {\n margin-top: 30px;\n margin-left: 0px;\n margin-right: 5px;\n }\n .click-wave {\n position: absolute;\n width: 34px;\n height: 34px;\n border-radius: 50%;\n background-color: rgba(0, 0, 0, 0.5);\n pointer-events: none;\n z-index: 2147483611;\n animation: click-wave-animation 0.8s ease forwards;\n }\n @keyframes click-wave-animation {\n 0% {\n transform: scale(0.2);\n opacity: 1;\n }\n 100% {\n transform: scale(2);\n opacity: 0;\n }\n }\n @keyframes slideInFromTop {\n 0% {\n transform: translateY(-100%);\n opacity: 0;\n }\n 100% {\n transform: translateY(0);\n opacity: 1;\n }\n }\n .").concat(um," {\n position: fixed;\n top: 20px;\n right: 20px;\n z-index: 2147483610;\n background: #fff;\n padding: 6px;\n border-radius: 10px;\n box-shadow: 0 0 20px 0 #C294F2;\n display: flex;\n align-items: center;\n gap: 8px;\n border: 1px solid rgba(192, 146, 242, 0.5);\n animation: slideInFromTop 0.5s ease-out forwards;\n }\n .").concat(um," span {\n font-size: 13px;\n color: #000;\n font-family: sans-serif;\n }\n .").concat(um,"-avatar {\n width: 24px;\n height: 24px;\n flex-shrink: 0;\n border-radius: 6px;\n }\n .").concat(um,"-mute {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n .").concat(um,"-mute svg {\n width: 20px;\n height: auto;\n cursor: pointer;\n animation: pulsate 2s infinite;\n }\n .").concat(um,"-mute svg:hover {\n opacity: 0.8;\n }\n .").concat(um,"-dismiss {\n display: flex;\n align-items: center;\n justify-content: center;\n padding-right: 3px;\n }\n .").concat(um,"-dismiss svg {\n width: 15px;\n height: auto;\n cursor: pointer;\n }\n .").concat(um,"-dismiss svg:hover {\n opacity: 0.8;\n }\n @keyframes pulsate {\n 0% {\n transform: scale(1);\n opacity: 1;\n }\n 50% {\n transform: scale(1.1);\n opacity: 0.8;\n }\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n }\n @keyframes glCoFadeIn {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n @keyframes glCoFadeOut {\n 0% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n }\n\n .gleap-audio-unmute-modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n background-color: rgba(0, 0, 0, 0.5);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 2147483620;\n }\n\n .gleap-audio-unmute-modal {\n background-color: #fff;\n padding: 20px;\n border-radius: 8px;\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);\n text-align: center;\n max-width: 90%;\n width: 400px;\n }\n\n .gleap-audio-unmute-modal p {\n margin-bottom: 20px;\n font-size: 16px;\n line-height: 22px;\n font-weight: normal;\n }\n\n .gleap-audio-unmute-button {\n background: ").concat(c,";\n color: ").concat(u,";\n outline: none;\n border: none;\n padding: 10px 14px;\n border-radius: 12px;\n font-size: 14px;\n font-weight: bold;\n cursor: pointer;\n }\n\n .gleap-audio-unmute-button:hover {\n opacity: 0.8;\n }\n\n .gleap-tour-continue-button {\n color: ").concat(c,";\n text-decoration: none;\n cursor: pointer;\n font-size: 14px;\n font-weight: bold;\n border: none;\n background: none;\n padding: 0;\n margin: 0;\n margin-left: 20px;\n }\n\n .gleap-tour-continue-button:hover {\n opacity: 0.8;\n }\n\n body.gl-copilot-fade-out::before,\n body.gl-copilot-fade-out::after,\n body.gl-copilot-fade-out #").concat(um," {\n animation: glCoFadeOut 0.8s ease-out forwards;\n }\n ").concat(null===(s=null===(l=this.productTourData)||void 0===l?void 0:l.playVoice)||void 0===s||s?"":"\n .".concat(um,"-mute {\n display: none;\n }\n "),"\n ").concat(this.productTourData.gradient?'body::before {\n content: "";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n box-sizing: border-box;\n border: 18px solid transparent;\n filter: blur(25px);\n border-image-slice: 1;\n border-image-source: linear-gradient(45deg, #ED5587, #FBE6A9, #a6e3f8, #C294F2);\n animation: glCoFadeIn 1.5s ease-out forwards;\n }\n \n body::after {\n content: "";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n opacity: 0.5;\n box-sizing: border-box;\n border: 3px solid transparent;\n border-image-slice: 1;\n border-image-source: linear-gradient(45deg, #ED5587, #FBE6A9, #a6e3f8, #C294F2);\n animation: glCoFadeIn 1.5s ease-out forwards;\n }':'body::after {\n content: "";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n opacity: 0;\n }',"\n "),document.head.appendChild(h));var f=document.createElement("div");f.id=lm,f.style.opacity=0,this._pointerContainer=f;var m=document.createElementNS("http://www.w3.org/2000/svg","svg");m.setAttribute("viewBox","0 0 380 476"),m.innerHTML='';var g=document.createElement("div");g.id="copilot-info-bubble",g.innerHTML="
";var v=document.createElement("div");v.id=um,v.classList.add(um),v.innerHTML='\n \n ').concat(null===(o=this.productTourData)||void 0===o?void 0:o.kaiSlug,'\n
\n ').concat(p(this.audioMuted?"unmute":"mute"),"\n
\n ").concat(null!==(r=this.productTourData)&&void 0!==r&&r.allowClose?'
\n ').concat(p("dismiss"),"\n
"):"","\n "),document.body.appendChild(v),document.querySelector(".".concat(um,"-mute")).addEventListener("click",(function(){a.toggleAudio(!a.audioMuted)})),null!==(i=this.productTourData)&&void 0!==i&&i.allowClose&&document.querySelector(".".concat(um,"-dismiss")).addEventListener("click",(function(){a.completeTour(!1)})),f.appendChild(m),f.appendChild(g),document.body.appendChild(f)}}},{key:"start",value:function(){var e=this;if("undefined"!=typeof window&&!this.disabled){var t=this.productTourData;t&&function(){return dm.apply(this,arguments)}().then((function(n){e.audioMuted=!n,e.setupCopilotTour(),e.audioMuted&&null!=t&&t.showUnmuteModal?e.showAudioUnmuteModal():setTimeout((function(){e.renderNextStep()}),1500)}))}}},{key:"showAudioUnmuteModal",value:function(){var e,t,n,o=this,r=document.createElement("div");r.classList.add("gleap-audio-unmute-modal-overlay");var i=document.createElement("div");i.classList.add("gleap-audio-unmute-modal");var a=document.createElement("p");a.textContent=null===(e=this.productTourData)||void 0===e?void 0:e.unmuteModalTitle,i.appendChild(a);var s=document.createElement("button");s.classList.add("gleap-audio-unmute-button"),s.textContent=null===(t=this.productTourData)||void 0===t?void 0:t.unmuteModalButton,s.addEventListener("click",(function(){o.toggleAudio(!1),r.parentNode&&r.parentNode.removeChild(r),setTimeout((function(){o.renderNextStep()}),1e3)})),i.appendChild(s);var l=document.createElement("button");l.classList.add("gleap-tour-continue-button"),l.textContent=null===(n=this.productTourData)||void 0===n?void 0:n.unmuteModalContinue,l.addEventListener("click",(function(){r.parentNode&&r.parentNode.removeChild(r),setTimeout((function(){o.renderNextStep()}),1e3)})),i.appendChild(l),r.appendChild(i),document.body.appendChild(r)}},{key:"completeTour",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];"undefined"!=typeof window&&(this.cleanup(),this.onCompleteCallback&&this.onCompleteCallback(e))}},{key:"renderNextStep",value:function(){var e=this;if("undefined"!=typeof window&&!this.disabled){var t=this,n=this.productTourData.steps;if(this.currentActiveIndex>=n.length)setTimeout((function(){e.completeTour()}),500);else{var o=n[this.currentActiveIndex],r=function(n){if(e._pointerContainer.style.display="flex",o.selector&&o.selector.length>0&&!n)e.completeTour(!1);else{var r=function(){if("INPUT"===o.mode&&n){var e,r=function(){document.querySelector("#".concat(lm)).classList.remove("copilot-pointer-container-clickmode"),n.classList.remove("gleap-input-highlight"),document.getElementById(lm).style.display="none",t.currentActiveIndex++,t.storeUncompletedTour(),t.renderNextStep()};if("default"===(null!==(e=o.inputType)&&void 0!==e?e:"default")){var i=function e(t){var o;if(0!==(null==t||null===(o=t.target)||void 0===o||null===(o=o.value)||void 0===o?void 0:o.length)){var i=document.getElementById("copilot-info-bubble-content");i&&(i.innerHTML="".concat(kh.translateText("next"),' \n \n'),i.addEventListener("click",r,{once:!0}),n.classList.add("gleap-input-highlight"),document.querySelector("#".concat(lm)).classList.add("copilot-pointer-container-clickmode"),n.removeEventListener("input",e))}};n.addEventListener("input",i,{once:!1}),n.hasAttribute("contenteditable")&&n.addEventListener("keyup",i,{once:!1}),n.addEventListener("blur",(function(){n.focus()}),{once:!0}),n.focus()}else{var a,s=null!==(a=o.inputValue)&&void 0!==a?a:"",l=0;!function e(){l0})).length;return Math.ceil(t/3.6)+1}}(i),s=function(){e.currentAudio=void 0,setTimeout((function(){r()}),1e3*a)};o.voice&&o.voice.length>0?(e.currentAudio=new Audio(o.voice),e.audioMuted&&(e.currentAudio.muted=!0),e.currentAudio.addEventListener("ended",(function(){setTimeout((function(){r()}),1e3)})),e.currentAudio.play().then((function(){})).catch((function(e){s()}))):s()}},i=o.selector?function(e){if("undefined"!=typeof window){var t=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:5e3)/100,n=0;return new Promise((function(o,r){var i=setInterval((function(){var a=document.querySelector(e);a?(clearInterval(i),o(a)):n>=t&&(clearInterval(i),r(new Error("Element not found for selector: ".concat(e)))),n++}),100)}))}}(o.selector):Promise.resolve(null);i.then(r).catch((function(){return r(null)}))}}}}],o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],n&&om(t.prototype,n),o&&om(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function hm(e){return hm="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},hm(e)}function fm(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function mm(e){for(var t=1;t2&&void 0!==arguments[2]?arguments[2]:0,r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(!this.productTourId&&!this.disabled)if(this.productTourId=e,this.productTourData=t,this.currentActiveIndex=0,r)this.start();else{var i=this;et.getInstance().validateProductTour(e).then((function(){return o>0?setTimeout((function(){i.start()}),o):n.start()})).catch((function(e){console.log("Product tour is not live. Cleaning up..."),console.error(e),i.onComplete(!1)}))}}},{key:"onComplete",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t={tourId:this.productTourId};e?(Tn.notifyEvent("productTourCompleted",t),Wm.trackEvent("tour-".concat(this.productTourId,"-completed"),t)):(Tn.notifyEvent("productTourQuit",t),Wm.trackEvent("tour-".concat(this.productTourId,"-quit"),t)),this.gleapTourObj&&this.gleapTourObj.destroy(),this.gleapTourObj=void 0,this.productTourData=void 0,this.productTourId=void 0,this.currentActiveIndex=void 0,this.clearUncompletedTour()}},{key:"loadUncompletedTour",value:function(){try{var e=JSON.parse(localStorage.getItem(bm));if(null!=e&&e.tourData&&null!=e&&e.tourId)return e}catch(t){}return null}},{key:"storeUncompletedTour",value:function(){if(this.productTourId&&this.productTourData)try{var e=JSON.parse(JSON.stringify({tourData:this.productTourData,tourId:this.productTourId}));e.tourData.steps=e.tourData.steps.slice(this.currentActiveIndex||0,e.tourData.steps.length),localStorage.setItem(bm,JSON.stringify(e))}catch(t){}else this.clearUncompletedTour()}},{key:"clearUncompletedTour",value:function(){try{localStorage.removeItem(bm)}catch(e){}}},{key:"start",value:function(){var e=this,t=this.productTourData;if(t){if("cobrowse"===t.tourType)return pm.getInstance().startWithConfig(this.productTourId,t,(function(t){e.onComplete(t)}));this.unmuted=!1;for(var n=t.steps,o=this,r=[],i=0;i\n \n
').concat(p("unmute"),"
\n ");else{var d="";t.sender&&t.sender.firstName&&(u=!0,d='
\n
\n
').concat(t.sender.firstName,"
\n
")),c="".concat(d,'
').concat(a.message,"
")}var h={disableActiveInteraction:!s&&!l,mode:a.mode,popover:mm({description:c,popoverClass:"gleap-tour-popover-".concat(a.type," ").concat(!u&&"gleap-tour-popover-no-sender"," ").concat(t.allowClose&&"gleap-tour-popover-can-close")},s?{showButtons:[]}:{})};a.selector&&a.selector.length>0&&(h.element=a.selector),r.push(h)}var f=["next","close"];t.backButton&&f.push("previous"),this.gleapTourObj=em(vm(vm(vm(vm(vm(vm(vm(vm(vm(vm({showProgress:!0,allowKeyboardControl:!1,steps:r},"showProgress",n.length>1),"allowClose",t.allowClose),"nextBtnText",t.nextText),"doneBtnText",t.doneText),"prevBtnText",t.prevText),"showButtons",f),"onHighlightStarted",(function(t,n,o){var r;e.currentActiveIndex=null==o||null===(r=o.state)||void 0===r?void 0:r.activeIndex,e.storeUncompletedTour()})),"onElementNotFound",(function(t){document.removeEventListener("click",m),e.onComplete(!1)})),"onDestroyStarted",(function(){e.gleapTourObj.hasNextStep()?e.onComplete(!1):e.onComplete(!0),document.removeEventListener("click",m)})),"onPopoverRender",(function(t){if(t)for(var n=document.querySelectorAll(".gleap-tour-popover-description img, .gleap-tour-popover-description video"),r=function(){setTimeout((function(){e.gleapTourObj.refresh()}),500),setTimeout((function(){e.gleapTourObj.refresh()}),750)},i=0;ie.length)&&(t=e.length);for(var n=0,o=new Array(t);n1&&void 0!==arguments[1]?arguments[1]:"";return kh.translateText(e)||t}},{key:"_translateWithVars",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return kh.translateTextWithVars(e,t)||n}},{key:"getCheckIcon",value:function(){return'\n \n '}},{key:"loadChecklist",value:function(){if(this._isSessionReady&&this._networkManager){var e=this.getAttribute("checklistId");e?(this.activeStep=-1,this._initialActiveSet=!1,this.validateChecklist(e)):(this.renderResponse(),this.checklistData=null,this._hasLoaded=!1)}}},{key:"getQueryParams",value:function(){var e=this._getGleapSessionInstance();if(null==e||!e.session)return"";var t=e.session,n="en";try{void 0!==kh&&(n=kh.getInstance().getActiveLanguage()||"en")}catch(o){}return"gleapId=".concat(t.gleapId||"","&gleapHash=").concat(t.gleapHash||"","&lang=").concat(n)}},{key:"makeRequest",value:function(e,t,n,o){var r=this._getGleapSessionInstance();if(null!=r&&r.session){var i=new XMLHttpRequest;i.open(e,t);try{r.injectSession(i)}catch(a){}n&&i.setRequestHeader("Content-Type","application/json;charset=UTF-8"),i.onreadystatechange=function(){4===i.readyState&&o(i)},i.onerror=function(){o(i)},i.send(n?JSON.stringify(n):null)}else o({readyState:4,status:0,responseText:"Session unavailable",_isMock:!0})}},{key:"validateChecklist",value:function(e){var t=this;if(this._isSessionReady&&this._networkManager){this.checklistData=null,this._hasLoaded=!1,this.renderResponse();var n=this.getAttribute("sharedKey");this._networkManager.validateChecklist(e,n).then((function(e){t.isConnected&&t._isSessionReady&&e&&t.fetchChecklist(e)})).catch((function(e){t.renderResponse(),t.checklistData=null,t._hasLoaded=!1}))}}},{key:"fetchChecklist",value:function(e){var t=this;this._isSessionReady&&this._networkManager&&(this._isInitialLoad=!this._hasLoaded,this._networkManager.fetchChecklist(e).then((function(e){var n;if(!t.isConnected||!t._isSessionReady||!e)return t._hasLoaded=!1,t.checklistData=null,void t._checkSessionAndLoad();if(t.checklistData=e,t._hasLoaded=!0,"done"!==e.status){if(t._isInitialLoad&&!t._initialActiveSet){var o,r=(null===(o=e.outbound)||void 0===o||null===(o=o.config)||void 0===o?void 0:o.steps)||[],i=e.completedSteps||[],a=r.findIndex((function(e){return!i.includes(e.id)}));t.activeStep=a>=0?a:-1,-1!==t.activeStep&&(t._initialActiveSet=!0)}t.renderChecklist(t.checklistData),Tn.notifyEvent("checklist-loaded",{checklistId:t.checklistData.id,outboundId:null===(n=t.checklistData.outbound)||void 0===n?void 0:n.id,completedSteps:t.checklistData.completedSteps,status:t.checklistData.status,data:t.checklistData})}else t.renderResponse()})).catch((function(e){t.renderResponse(),t.checklistData=null,t._hasLoaded=!1})))}},{key:"updateChecklist",value:function(e,t){var n,o,r=this._getGleapSessionInstance();if(null!=r&&r.session){var i=r.apiUrl;if(i){var a=r.session,s=null!==(n=null==a?void 0:a.gleapId)&&void 0!==n?n:"",l=null!==(o=null==a?void 0:a.gleapHash)&&void 0!==o?o:"",c="en";try{void 0!==kh&&(c=kh.getInstance().getActiveLanguage()||"en")}catch(d){}var u="".concat(i,"/outbound/checklists/").concat(e);t.checkedStep&&(u+="/increment/".concat(t.checkedStep)),u+="?gleapId=".concat(s,"&gleapHash=").concat(l,"&lang=").concat(c),this.makeRequest("PUT",u,t,(function(e){e._isMock||200!==e.status&&e.status}))}}}},{key:"handleChecklistUpdate",value:function(e){if(this._hasLoaded&&this.checklistData){var t=e.detail;if(t&&t.id===this.checklistData.id){var n,o=xm(this.checklistData.completedSteps||[]),r=!1,i=!1,a=this.activeStep;if(t.completedSteps&&JSON.stringify(t.completedSteps)!==JSON.stringify(o)&&(this.checklistData.completedSteps=xm(t.completedSteps),r=!0,-1!==a)){var s,l=null===(s=this.checklistData.outbound)||void 0===s||null===(s=s.config)||void 0===s||null===(s=s.steps)||void 0===s||null===(s=s[a])||void 0===s?void 0:s.id;l&&this.checklistData.completedSteps.includes(l)&&!o.includes(l)&&(i=!0)}if(t.status&&t.status!==this.checklistData.status&&(this.checklistData.status=t.status,r=!0),i){for(var c,u=(null===(c=this.checklistData.outbound)||void 0===c||null===(c=c.config)||void 0===c?void 0:c.steps)||[],d=-1,p=a+1;p1&&void 0!==arguments[1]?arguments[1]:"checklist-floating",r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=(null===(t=e.config)||void 0===t?void 0:t.steps)||[],a=(null===(n=this.checklistData)||void 0===n?void 0:n.completedSteps)||[],s=0;if(this.progressbarEnabled&&i.length>0){var l=i.length,c=a.length;s=l>0?c/l*100:0}var u,d,p=i.find((function(e){return!a.includes(e.id)})),h=i.length>0?p?p.title||this._translateWithVars("stepDefaultTitle",{index:i.indexOf(p)+1},"Step ".concat(i.indexOf(p)+1)):"":e.subject||"",f=i.length>0?p&&p.description||"":e.message||"";r&&(h=(null===(u=e.config)||void 0===u?void 0:u.successTitle)||"",f=(null===(d=e.config)||void 0===d?void 0:d.successMessage)||"",s=100);var m=2*Math.PI*7,g=m-s/100*m,v="checklist-floating-header"===o,y=v?'\n \n \n ':'\n \n ';return'\n
\n
\n
\n \n \n \n \n
\n
').concat(h,"
\n ").concat(r?"":''.concat(y,""),'\n
\n
').concat(f,"
\n
\n ")}},{key:"renderInfoSection",value:function(e){var t;if(!this.infoEnabled||!e)return"";var n=e.subject||this._translate("checklistDefaultTitle","Checklist"),o=e.message||"",r="";return null!==(t=e.sender)&&void 0!==t&&t.profileImageUrl&&(r='\n
\n ').concat(e.sender.firstName||\n ').concat(e.sender.firstName||"","\n
")),'\n
\n '.concat(n?'
'.concat(n,"
"):"","\n ").concat(o?'
'.concat(o,"
"):"","\n ").concat(r,"\n
")}},{key:"renderProgressSection",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];if(!this.progressbarEnabled||!e.length)return"";var n=e.length,o=t.length,r=n>0?o/n*100:0,i=0;e.forEach((function(e){!t.includes(e.id)&&e.duration>0&&(i+=e.duration)}));var a=this._translateWithVars("taskProgress",{a:o,b:n},"".concat(o," of ").concat(n," done")),s=i>0?this._translateWithVars("aboutMinutes",{a:i},"About ".concat(i," min left")):"";return'\n
\n
'.concat(a,"
\n ").concat(s?'
'.concat(s,"
"):"",'\n
\n
\n
\n
')}},{key:"renderTasks",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return t&&0!==t.length?t.map((function(t,o){var r=n.includes(t.id),i=e.activeStep===o,a=r?''.concat(e.getCheckIcon(),""):''.concat(o+1,""),s=t.title||e._translateWithVars("stepDefaultTitle",{index:o+1},"Step ".concat(o+1)),l=t.description||"",c=t.actionTitle||e._translate("actionDefaultTitle","Action"),u=t.action&&"none"!==t.action?'
\n \n
"):"",d=e._translate("markAsDone","Mark as done"),p=t.allowMarkDone&&!r?'
\n ').concat(e.getCheckIcon(),'\n
').concat(d,"
\n
"):"",h=["checklist-task",r?"checklist-task--done":"",i?"checklist-task--active":""].filter(Boolean).join(" ");return'\n
\n
\n ').concat(a,'\n
').concat(s,'
\n \n \n \n \n \n
\n
\n
\n ').concat(l?'
'.concat(l,"
"):"","\n ").concat(u,"\n ").concat(p,"\n
\n
\n
")})).join(""):"

".concat(this._translate("noStepsDefined","No steps defined."),"

")}},{key:"renderChecklist",value:function(e){var t;if(this._hasLoaded&&e&&e.outbound){var n=e.outbound,o=(null===(t=n.config)||void 0===t?void 0:t.steps)||[],r=e.completedSteps||[],i="";if("done"===e.status||o.length>0&&r.length>=o.length){var a,s,l=(null===(a=n.config)||void 0===a?void 0:a.successTitle)||"",c=(null===(s=n.config)||void 0===s?void 0:s.successMessage)||"";i=this.floatingEnabled?this.renderFloatingLauncher(n,"checklist-floating-launcher",!0):'\n
\n
\n '.concat(this.getCheckIcon(),'\n
\n
').concat(l,'
\n
').concat(c,"
\n
"),-1!==this.activeStep&&(this.activeStep=-1)}else i='\n
\n '.concat(this.floatingEnabled?"":this.renderInfoSection(n),"\n ").concat(this.floatingEnabled?"":this.renderProgressSection(o,r),"\n ").concat(this.floatingEnabled?this.renderFloatingLauncher(n):"",'\n
\n ').concat(this.floatingEnabled?this.renderFloatingLauncher(n,"checklist-floating-header"):"","\n ").concat(this.renderTasks(o,r),"\n
\n
");var u=dt.getInstance().getFlowConfig(),d=u.color?u.color:"#485BFF",p="\n \n ');this.shadowRoot.innerHTML=p+i,this.addTaskEventListeners(),this.floatingEnabled&&this.addFloatingClickListeners(),-1!==this.activeStep&&this.toggleTask(this.activeStep,!0)}else this._checkSessionAndLoad()}},{key:"updateActiveTaskMaxHeight",value:function(){if(-1!==this.activeStep){var e=this.shadowRoot.querySelector('.checklist-task[data-task-index="'.concat(this.activeStep,'"] .checklist-task-body-inner')),t=this.shadowRoot.querySelector('.checklist-task[data-task-index="'.concat(this.activeStep,'"] .checklist-task-body'));if(e&&t){var n=e.offsetHeight;t.style.setProperty("--task-body-active-height","".concat(n,"px"))}}}},{key:"addTaskEventListeners",value:function(){var e=this;this.shadowRoot.querySelectorAll(".checklist-task").forEach((function(t){var n=t.querySelector(".checklist-task-header"),o=parseInt(t.getAttribute("data-task-index"),10);n&&n.addEventListener("click",(function(){var t=e.activeStep===o?-1:o;e.setActiveStep(t)}));var r=t.querySelector(".checklist-task-body-markdone");r&&r.addEventListener("click",(function(t){var n;if(t.stopPropagation(),null!==(n=e.checklistData)&&void 0!==n&&null!==(n=n.outbound)&&void 0!==n&&null!==(n=n.config)&&void 0!==n&&n.steps){var r=e.checklistData.outbound.config.steps[o];if(r){var i=e.activeStep;if(e.checklistData.completedSteps||(e.checklistData.completedSteps=[]),!e.checklistData.completedSteps.includes(r.id)){var a;e.checklistData.completedSteps.push(r.id),Tn.notifyEvent("checklist-step-completed",{checklistId:e.checklistData.id,outboundId:null===(a=e.checklistData.outbound)||void 0===a?void 0:a.id,stepId:r.id,stepIndex:o,step:r,completedSteps:e.checklistData.completedSteps,status:e.checklistData.status,data:e.checklistData});var s=e.checklistData.outbound.config.steps,l=-1;if(i===o){for(var c=o+1;c0&&e.checklistData.completedSteps.length>=s.length&&(e.checklistData.status="done",d.status="done",Tn.notifyEvent("checklist-completed",{checklistId:e.checklistData.id,outboundId:null===(u=e.checklistData.outbound)||void 0===u?void 0:u.id,completedSteps:e.checklistData.completedSteps,status:e.checklistData.status,data:e.checklistData})),e.updateChecklist(e.checklistData.id,d)}}}}));var i=t.querySelector(".checklist-task-body-action .action-button");i&&i.addEventListener("click",(function(t){var n;if(t.stopPropagation(),null!==(n=e.checklistData)&&void 0!==n&&null!==(n=n.outbound)&&void 0!==n&&null!==(n=n.config)&&void 0!==n&&n.steps&&void 0!==Wm){var r=e.checklistData.outbound.config.steps[o];if(r&&r.action&&"none"!==r.action)try{"BOT"===r.action?Wm.startBot(r.botId):"CUSTOM_ACTION"===r.action?Wm.triggerCustomAction(r.actionBody):"REDIRECT_URL"===r.action?(t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation(),Wm.openURL(r.actionBody,!!r.actionOpenInNewTab)):"FEEDBACK_FLOW"===r.action?Wm.startFeedbackFlow(r.formId):"NEWS_ARTICLE"===r.action?Wm.openNewsArticle(r.articleId):"HELP_ARTICLE"===r.action?Wm.openHelpCenterArticle(r.articleId):"CHECKLIST"===r.action&&Wm.startChecklist(r.outboundId,!0,null==r?void 0:r.sharedKey)}catch(i){}}}))}))}},{key:"setActiveStep",value:function(e){var t=this,n=this.activeStep;this.activeStep=e;var o=[];-1!==n&&n!==this.activeStep&&o.push({index:n,open:!1}),-1!==this.activeStep&&this.activeStep!==n&&o.push({index:this.activeStep,open:!0}),o.forEach((function(e){var n=e.index,o=e.open;t.toggleTask(n,o)}))}},{key:"toggleTask",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=this.shadowRoot.querySelector('.checklist-task[data-task-index="'.concat(e,'"]'));if(n){var o=n.querySelector(".checklist-task-header");if(o){var r=n.classList.contains("checklist-task--active"),i=null!==t?t:!r;if(i&&!r){n.classList.add("checklist-task--active"),o.setAttribute("aria-expanded","true");var a=n.querySelector(".checklist-task-body-inner");if(a){var s=a.offsetHeight,l=n.querySelector(".checklist-task-body");l&&l.style.setProperty("--task-body-active-height","".concat(s,"px"))}}else!i&&r&&(n.classList.remove("checklist-task--active"),o.setAttribute("aria-expanded","false"))}}}}],r=[{key:"observedAttributes",get:function(){return["checklistId","info","progressbar","dark","floating","sharedKey"]}}],o&&Cm(n.prototype,o),r&&Cm(n,r),Object.defineProperty(n,"prototype",{writable:!1}),t}();"undefined"==typeof customElements||customElements.get("gleap-checklist")||customElements.define("gleap-checklist",e)}}();var _m=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),Fm(this,"initialized",!1),Fm(this,"offlineMode",!1),Fm(this,"disablePageTracking",!1),Fm(this,"disableInAppNotifications",!1),Fm(this,"globalData",{screenRecordingData:null,webReplay:null,snapshotPosition:{x:0,y:0}}),"undefined"!=typeof window&&(nn.getInstance(),un.getInstance().start(),vn.getInstance().start(),Gf.getInstance().start())}var t,n,o;return t=e,n=[{key:"isLiveMode",value:function(){if(!0===this.offlineMode)return!1;var e=window.location.hostname;return!(["localhost","127.0.0.1","0.0.0.0","","::1"].includes(e)||e.startsWith("192.168.")||e.startsWith("10.0.")||e.endsWith(".local")||!e.includes("."))}},{key:"softReInitialize",value:function(){Zt.getInstance().destroy(),dt.getInstance().start().then((function(){a.getInstance().refresh(),jh.getInstance().injectNotificationUI()})).catch((function(e){console.warn("Failed to initialize Gleap.")}))}},{key:"performActions",value:function(t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:"INFO";un.getInstance().addLog(e,t)}},{key:"initialize",value:function(t){var n=this.getInstance();if(n.initialized)console.warn("Gleap already initialized.");else{n.initialized=!0;try{!function(){try{if("visualViewport"in window&&/iPad|iPhone|iPod/.test(navigator.userAgent)){var e=function(){try{var e=document.querySelector(".gleap-frame-container-inner iframe");if(!e)return;window.visualViewport.height1&&void 0!==arguments[1]&&arguments[1];Zt.getInstance().urlHandler(e,t)}},{key:"checkForUrlParams",value:function(){if("undefined"!=typeof window&&window.location.search)try{var t=new URLSearchParams(window.location.search),n=t.get("gleap_widget");n&&n.length>0&&e.open();var o=t.get("gleap_conversation");o&&o.length>0&&("true"===o?e.startConversation(!0):e.startBot(o,!0));var r=t.get("gleap_feedback");r&&r.length>0&&e.startFeedbackFlow(r);var i=t.get("gleap_survey"),a=t.get("gleap_survey_format");i&&i.length>0&&e.showSurvey(i,"survey_full"===a?"survey_full":"survey");var s=t.get("gleap_tour");if(s&&s.length>0){var l=parseInt(t.get("gleap_tour_delay"));isNaN(l)&&(l=2),setTimeout((function(){e.startProductTour(s)}),1e3*l)}}catch(c){}}},{key:"destroy",value:function(){th.getInstance().stop(),it.getInstance().stop(),Zt.getInstance().destroy(),a.getInstance().destroy(),jh.getInstance().clearAllNotifications(!0),et.getInstance().clearSession(0,!1),qh.getInstance().removeBannerUI(),this.instance=null}},{key:"closeBanner",value:function(){qh.getInstance().removeBannerUI()}},{key:"closeModal",value:function(){Kh.getInstance().hideModal()}},{key:"setUseCookies",value:function(e){et.getInstance().useCookies=e}},{key:"identify",value:function(e,t,n){return et.getInstance().identifySession(e,k(t),n)}},{key:"updateContact",value:function(e){return et.getInstance().updateSession(k(e))}},{key:"clearIdentity",value:function(){et.getInstance().clearSession()}},{key:"getIdentity",value:function(){return et.getInstance().getSession()}},{key:"isUserIdentified",value:function(){var e=et.getInstance().session;return!!(e&&e.userId&&e.userId.length>0)}},{key:"isOpened",value:function(){return Zt.getInstance().isOpened()}},{key:"hide",value:function(){Zt.getInstance().hideWidget()}},{key:"setMaxNetworkRequests",value:function(e){y.getInstance().setMaxRequests(e)}},{key:"startNetworkLogger",value:function(){y.getInstance().start()}},{key:"setNetworkLogsBlacklist",value:function(e){y.getInstance().setBlacklist(e)}},{key:"setNetworkLogPropsToIgnore",value:function(e){y.getInstance().setFilters(e)}},{key:"setReplayOptions",value:function(e){th.getInstance().setOptions(e)}},{key:"close",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];Zt.getInstance().hideWidget(e)}},{key:"open",value:function(){Zt.getInstance().setAppMode("widget"),Zt.getInstance().showWidget()}},{key:"trackEvent",value:function(e,t){it.getInstance().logEvent(e,t)}},{key:"logEvent",value:function(e,t){it.getInstance().logEvent(e,t)}},{key:"preFillForm",value:function(e){var t=k(e);Mh.getInstance().formPreFill=t,Zt.getInstance().sendMessage({name:"prefill-form-data",data:t},!0)}},{key:"on",value:function(e,t){Tn.on(e,t)}},{key:"enableShortcuts",value:function(e){e?Eh.getInstance().start():Eh.getInstance().stop()}},{key:"showFeedbackButton",value:function(e){a.getInstance().toggleFeedbackButton(e)}},{key:"setAppVersionCode",value:function(e){nn.setAppVersionCode(e)}},{key:"setAppBuildNumber",value:function(e){nn.setAppBuildNumber(e)}},{key:"setWSApiUrl",value:function(e){et.getInstance().wsApiUrl=e}},{key:"setApiUrl",value:function(e){et.getInstance().apiUrl=e}},{key:"setBannerUrl",value:function(e){qh.getInstance().setBannerUrl(e)}},{key:"setModalUrl",value:function(e){Kh.getInstance().setModalUrl(e)}},{key:"setFrameUrl",value:function(e){Zt.getInstance().frameUrl=e}},{key:"setTicketAttribute",value:function(e,t){xn.getInstance().setTicketAttribute(e,t)}},{key:"unsetTicketAttribute",value:function(e){xn.getInstance().unsetTicketAttribute(e)}},{key:"clearTicketAttributes",value:function(){xn.getInstance().clearTicketAttributes()}},{key:"attachCustomData",value:function(e){xn.getInstance().attachCustomData(e)}},{key:"setCustomData",value:function(e,t){xn.getInstance().setCustomData(e,t)}},{key:"removeCustomData",value:function(e){xn.getInstance().removeCustomData(e)}},{key:"clearCustomData",value:function(){xn.getInstance().clearCustomData()}},{key:"playSound",value:function(e){tf.playSound(e)}},{key:"showTabNotificationBadge",value:function(e){var t=jh.getInstance();t.showNotificationBadge=e,t.updateTabBarNotificationCount()}},{key:"setLanguage",value:function(t){kh.getInstance().setOverrideLanguage(t),e.getInstance().initialized&&setTimeout((function(){e.getInstance().softReInitialize(),e.updateContact({lang:t})}),1e3)}},{key:"registerCustomAction",value:function(e){Dn.registerCustomAction(e)}},{key:"triggerCustomAction",value:function(e){Dn.triggerCustomAction(e)}},{key:"setStyles",value:function(e,t,n){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"#ffffff",r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:20,i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:20,s=arguments.length>6&&void 0!==arguments[6]?arguments[6]:20,l=arguments.length>7&&void 0!==arguments[7]?arguments[7]:a.FEEDBACK_BUTTON_BOTTOM_LEFT;E((function(){!function(e,t,n,o,r,i,s,l){var c=d(e),p=d(n),h=d(r),f=d(t),m="#ffffff"===h,g=u(t,"#ffffff"===f?-35:-15),v=u(r,m?100:-120),y=u(r,m?30:-12),b=u(r,m?80:-30),w=(o=parseInt(o,10),Math.round(1.05*o)),k=Math.round(.8*o),x=Math.round(.6*o),S=Math.round(.4*o),C=Math.round(.25*o),I=57+s;l===a.FEEDBACK_BUTTON_CLASSIC_BOTTOM?I=s+15:(l&&l.includes("CLASSIC")||l===a.FEEDBACK_BUTTON_NONE)&&(I=s);var E='\n .gleap-font, .gleap-font * {\n font-style: normal;\n font-variant-caps: normal;\n font-variant-ligatures: normal;\n font-variant-numeric: normal;\n font-variant-east-asian: normal;\n font-weight: normal;\n font-stretch: normal;\n font-size: 100%;\n line-height: 1;\n font-family: system-ui, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";\n }\n .gleap-input-highlight {\n box-shadow: 0 0 0 3px '.concat(e," !important;\n }\n .gleap-frame-container {\n right: ").concat(i,"px;\n bottom: ").concat(61+s,"px;\n width: calc(100% - 40px);\n max-width: 410px;\n position: fixed;\n z-index: ").concat(2147483631,";\n visibility: visible;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.16);\n border-radius: ").concat(k,"px;\n overflow: hidden;\n animation-duration: .3s;\n animation-fill-mode: both;\n animation-name: gleapFadeInUp;\n user-select: none;\n pointer-events: none;\n transition: max-width 0.3s ease-out;\n }\n\n .gleap-admin-highlight {\n box-shadow: 0px 0px 0px 4px red;\n }\n\n :root {\n --gleap-margin-top: 50px;\n }\n\n .gleap-tooltip-anchor {\n position: relative;\n display: inline-block;\n float: left;\n max-width: 0px;\n width: 17px;\n }\n\n .gleap-tooltip-hotspot {\n position: absolute;\n display: block;\n width: 17px;\n height: 17px;\n cursor: pointer;\n top: 0px;\n left: 0px;\n }\n\n @keyframes gleap-pulse {\n 0% {\n transform: scale(0);\n opacity: 0.25;\n }\n 45% {\n transform: scale(2.5);\n opacity: 0;\n }\n 100% {\n transform: scale(0);\n opacity: 0;\n }\n }\n\n .gleap-tooltip-hotspot-animation {\n position: absolute;\n border-radius: 17px;\n opacity: 0.25;\n display: block;\n width: 17px;\n height: 17px;\n cursor: pointer;\n top: 0px;\n left: 0px;\n animation: gleap-pulse 5s infinite;\n }\n\n .gleap-tooltip-hotspot svg {\n width: 17px;\n height: 17px;\n object-fit: contain;\n display: block;\n }\n\n .gleap-tooltip-inner {\n position: relative;\n overflow: visible;\n font-size: 14px;\n font-weight: normal;\n color: #000;\n line-height: 1.3;\n }\n\n .gleap-tooltip {\n position: absolute;\n background-color: #fff;\n color: #000;\n font-size: 15px;\n line-height: 18px;\n padding: 16px;\n padding-top: 8px;\n padding-bottom: 8px;\n border-radius: 4px;\n max-width: min(350px, 80vw);\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n opacity: 0;\n visibility: hidden;\n transition: opacity 0.2s, visibility 0.2s;\n z-index: ").concat(2147483700,";\n }\n\n .gleap-tooltip a {\n color: ").concat(e,";\n text-decoration: underline;\n display: inline !important;\n margin: 0px !important;\n padding: 0px !important;\n word-break: break-word;\n }\n\n .gleap-tooltip ul {\n padding-left: 16px;\n }\n\n .gleap-tooltip b {\n font-weight: 600;\n }\n\n .gleap-tooltip h2 {\n font-size: 18px;\n line-height: 20px;\n font-weight: 600;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip h3 {\n font-size: 16px;\n line-height: 18px;\n font-weight: 600;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip p {\n padding: 0px;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip img {\n max-width: 100%;\n max-height: 300px;\n width: 100%;\n height: auto;\n object-fit: cover;\n margin-top: 8px;\n margin-bottom: 8px;\n border-radius: 4px;\n }\n\n .gleap-tooltip iframe,\n .gleap-tooltip video {\n max-width: 100%;\n width: 100%;\n height: auto;\n min-height: 200px;\n display: block;\n border: none;\n outline: none;\n padding: 0px;\n margin-top: 8px;\n margin-bottom: 8px;\n border-radius: 4px;\n }\n\n .gleap-tooltip-arrow {\n position: absolute;\n width: 20px;\n height: 20px;\n }\n\n .gleap-tooltip-arrow svg {\n width: 20px;\n height: 20px;\n object-fit: contain;\n }\n\n .gleap-b-frame {\n width: 100%;\n height: 100%;\n border: none;\n pointer-events: auto;\n padding: 0px;\n margin: 0px;\n }\n\n .gleap-b-shown {\n transition: margin 0.3s ease-out;\n margin-top: var(--gleap-margin-top);\n position: relative;\n z-index: 10000;\n }\n\n .gleap-b-f {\n margin-top: 0px;\n }\n\n .gleap-b {\n display: none;\n position: absolute;\n top: calc(-1 * var(--gleap-margin-top));\n left: 0px;\n width: 100vw;\n height: var(--gleap-margin-top);\n z-index: ").concat(2147483699,";\n }\n\n @keyframes gleapSlideIn {\n from {\n top: calc(-1 * var(--gleap-margin-top));\n }\n to {\n top: 10px;\n }\n }\n\n .gleap-b-f .gleap-b {\n position: fixed;\n top: 10px;\n animation: gleapSlideIn .25s ease-out forwards;\n max-width: 800px;\n width: calc(100% - 20px);\n left: 50%;\n z-index: ").concat(2147483699,";\n transform: translateX(-50%);\n border-radius: ").concat(S,"px;\n overflow: hidden;\n box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.15), 0px 5px 5px rgba(0, 0, 0, 0.05);\n }\n\n .gleap-b-shown .gleap-b {\n display: block;\n }\n\n .gleap-image-view {\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n z-index: ").concat(2147483699,";\n background-color: ").concat(h,"cc;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .gleap-image-view-image {\n width: 90%;\n height: auto;\n max-width: 90%;\n max-height: 90%;\n object-fit: contain;\n }\n\n .gleap-image-view-close {\n position: fixed;\n top: 20px;\n right: 20px;\n width: 32px;\n height: 32px;\n opacity: 0.8;\n z-index: ").concat(2147483740,";\n box-shadow: 0px 5px 18px rgba(0, 0, 0, 0.16);\n cursor: pointer;\n }\n\n .gleap-image-view-close:hover {\n opacity: 1;\n }\n\n .gleap-image-view-close svg path {\n fill: ").concat(r,";\n }\n\n [dir=rtl].gleap-frame-container {\n right: auto;\n left: ").concat(i,"px;\n bottom: ").concat(61+s,'px;\n }\n\n .gleap-frame-container--loading iframe {\n opacity: 0;\n }\n\n .gleap-frame-container--loading::before {\n content: " ";\n position: fixed;\n top: 0px;\n left: 0px;\n right: 0px;\n height: 100%;\n max-height: 380px;\n background: linear-gradient(\n 130deg,\n ').concat(g," 0%,\n ").concat(t,' 100%\n );\n }\n \n .gleap-frame-container--loading::after {\n content: " ";\n position: fixed;\n top: 0px;\n left: 0px;\n right: 0px;\n height: 100%;\n height: 100%;\n max-height: 380px;\n background: linear-gradient(\n 180deg,\n transparent 60%,\n ').concat(r,"1A 70%,\n ").concat(r," 100%\n );\n }\n\n .gleap-frame-container--loading-nogradient::before {\n max-height: 340px;\n background: ").concat(t," !important;\n }\n\n .gleap-frame-container--loading-nofade::after {\n display: none !important;\n }\n\n .gleap-frame-container--survey {\n bottom: ").concat(s,"px !important;\n }\n\n .gleap-frame-container--extended {\n max-width: 690px !important;\n }\n\n .gleap-frame-container--survey-full {\n position: fixed;\n top: 0 !important;\n left: 0 !important;\n bottom: 0 !important;\n right: 0 !important;\n width: 100vw !important;\n max-width: 100vw !important;\n height: 100vh;\n height: 100dvh !important;\n background-color: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(6px);\n display: flex !important;\n justify-content: center !important;\n align-items: center !important;\n max-height: 100vh;\n max-height: 100dvh !important;\n border-radius: 0 !important;\n animation-name: none !important;\n }\n\n .gleap-frame-container--survey-full .gleap-frame-container-inner {\n max-width: 640px !important;\n width: calc(100% - 24px);\n border-radius: ").concat(k,"px;\n overflow: hidden;\n }\n\n .gleap-frame-container--classic {\n right: ").concat(i,"px;\n bottom: ").concat(s,"px;\n }\n\n [dir=rtl].gleap-frame-container--classic {\n right: auto;\n left: ").concat(i,"px;\n bottom: ").concat(s,"px;\n }\n\n .gleap-frame-container--no-button {\n bottom: ").concat(s,"px;\n }\n\n [dir=rtl].gleap-frame-container--classic-left {\n bottom: ").concat(s,"px;\n }\n\n .gleap-frame-container--classic-left {\n right: auto;\n left: ").concat(i,"px;\n bottom: ").concat(s,"px;\n }\n\n [dir=rtl].gleap-frame-container--classic-left {\n left: auto;\n right: ").concat(i,"px;\n bottom: ").concat(s,"px;\n }\n\n .gleap-frame-container--modern-left {\n right: auto;\n left: ").concat(i,"px;\n bottom: ").concat(61+s,"px;\n }\n\n [dir=rtl].gleap-frame-container--modern-left {\n left: auto;\n right: ").concat(i,"px;\n bottom: ").concat(61+s,"px;\n }\n\n .gleap-frame-container--animate {\n pointer-events: auto !important;\n }\n\n @keyframes gleapFadeInUp {\n from {\n opacity: 0;\n transform: translate3d(0, 100%, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n\n @keyframes gleapFadeInUpMobile {\n from {\n opacity: 0;\n transform: translate3d(0, 10%, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n\n .gleap-notification-container {\n position: fixed;\n bottom: ").concat(I,"px;\n right: ").concat(i,"px;\n z-index: ").concat(2147483630,";\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n width: 100%;\n max-width: min(340px, 80vw);\n }\n\n .gleap-notification-container--left {\n left: ").concat(4+i,"px;\n right: initial !important;\n }\n\n [dir=rtl].gleap-notification-container {\n left: ").concat(4+i,"px;\n right: initial !important;\n }\n\n [dir=rtl].gleap-notification-container--left {\n left: initial !important;\n right: ").concat(i,"px !important;\n align-items: flex-start !important;\n }\n\n .gleap-notification-container--no-button {\n bottom: ").concat(s,"px;\n }\n\n .gleap-notification-item {\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n\n .gleap-notification-close {\n border-radius: 100%;\n width: 28px;\n height: 28px;\n background-color: ").concat(v,";\n display: flex;\n justify-content: center;\n align-items: center;\n margin-bottom: 8px;\n cursor: pointer;\n visibility: hidden;\n pointer-events: none;\n }\n\n .gleap-notification-container:hover .gleap-notification-close {\n visibility: visible;\n pointer-events: auto;\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-notification-close {\n visibility: visible;\n pointer-events: auto;\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n }\n\n .gleap-notification-close svg {\n width: 45%;\n height: 45%;\n object-fit: contain;\n fill: ").concat(r,";\n }\n\n .gleap-notification-item-checklist-container {\n display: flex;\n animation: fadeIn;\n animation-duration: .45s;\n background-color: ").concat(r,";\n border-radius: ").concat(v,";\n box-sizing: border-box;\n cursor: pointer;\n flex-direction: column;\n overflow: hidden;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ").concat(x,"px;\n margin-bottom: 12px;\n }\n\n .gleap-notification-item-checklist-content {\n align-items: flex-start;\n display: flex;\n flex-direction: column;\n padding: 15px;\n width: 100%;\n width: min(310px, 70vw);\n max-width: min(310px, 70vw);\n }\n\n .gleap-notification-item-checklist-content-title {\n color: ").concat(h,";\n font-size: 15px;\n font-weight: 500;\n line-height: 21px;\n margin-bottom: 10px;\n max-width: 100%;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .gleap-notification-item-checklist-content-progress {\n width: 100%;\n height: 8px;\n border-radius: 8px;\n background-color: ").concat(y,";\n }\n\n .gleap-notification-item-checklist-content-progress-inner {\n height: 100%;\n border-radius: 8px;\n background-color: ").concat(e,";\n }\n\n .gleap-notification-item-checklist-content-next {\n color: ").concat(v,";\n font-size: 15px;\n font-weight: normal;\n line-height: 21px;\n margin-top: 10px;\n max-width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: flex;\n align-items: center;\n }\n\n .gleap-notification-item-checklist-content-next svg {\n height: 18px;\n margin-right: 5px;\n width: auto;\n }\n\n .gleap-notification-item-checklist-content-next b {\n font-size: 15px;\n font-weight: normal;\n color: ").concat(h,";\n }\n\n .gleap-notification-item-news {\n width: 100%;\n }\n\n .gleap-news-pagination {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 10px;\n width: 100%;\n }\n\n .gleap-news-page-indicator {\n font-size: 12px;\n color: ").concat(v,";\n }\n\n .gleap-news-next-button {\n background-color: ").concat(e,";\n color: ").concat(c,";\n border-radius: ").concat(C,"px;\n box-sizing: border-box;\n padding: 5px 10px;\n font-size: 14px;\n font-weight: bold;\n line-height: 21px;\n border: none;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: none !important;\n outline: none !important;^\n }\n\n .gleap-notification-item-news-content {\n align-items: flex-start;\n display: flex;\n flex-direction: column;\n padding: 15px;\n }\n\n .gleap-notification-item-news-preview {\n color: ").concat(v,";\n font-size: 14px;\n line-height: 21px;\n font-weight: 400;\n overflow-wrap: break-word;\n word-break: break-word;\n display: block;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .gleap-notification-item-news-sender {\n display: flex;\n align-items: center;\n color: ").concat(v,";\n font-size: 15px;\n line-height: 21px;\n font-weight: 400;\n }\n \n .gleap-notification-item-news-content-title {\n color: ").concat(h,";\n font-size: 15px;\n font-weight: 500;\n line-height: 21px;\n margin-bottom: 6px;\n max-width: 100%;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n cursor: pointer;\n }\n\n .gleap-notification-item-news-sender img {\n border-radius: 100%;\n height: 20px;\n margin-right: 8px;\n object-fit: cover;\n width: 20px;\n }\n\n [dir=rtl] .gleap-notification-item-news-sender img {\n margin-left: 8px;\n margin-right: 0px !important;\n }\n\n .gleap-notification-item-news-container {\n display: flex;\n animation: fadeIn;\n animation-duration: .45s;\n background-color: ").concat(r,";\n border-radius: ").concat(v,";\n box-sizing: border-box;\n flex-direction: column;\n overflow: hidden;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ").concat(x,"px;\n margin-bottom: 12px;\n }\n\n .gleap-notification-item-news-image {\n background-color: ").concat(v,";\n height: 170px;\n max-height: 170px;\n object-fit: cover;\n width: 100%;\n cursor: pointer;\n }\n \n .gleap-notification-item-news-content-title:hover {\n color: ").concat(e,";\n }\n\n .gleap-notification-item {\n display: flex;\n align-items: flex-end;\n cursor: pointer;\n }\n\n .gleap-notification-item img {\n width: 32px;\n height: 32px;\n min-width: 32px;\n border-radius: 100%;\n object-fit: cover;\n margin-right: 8px;\n margin-bottom: 12px;\n cursor: pointer;\n }\n\n [dir=rtl] .gleap-notification-item img {\n margin-left: 8px;\n margin-right: 0px !important;\n }\n\n .gleap-notification-item-container {\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ").concat(x,"px;\n border-bottom-left-radius: 0px;\n padding: 20px;\n background-color: ").concat(r,";\n margin-bottom: 12px;\n cursor: pointer;\n font-size: 15px;\n line-height: 21px;\n color: ").concat(h,';\n position: relative;\n }\n\n .gleap-notification-item-container::after {\n content: " ";\n position: absolute;\n bottom: 0px;\n width: 0px;\n height: 0px;\n left: -6px;\n border-style: solid;\n border-width: 0px 0px 10px 6px;\n border-color: transparent transparent ').concat(r,";\n }\n\n .gleap-notification-item-sender {\n color: ").concat(v,";\n line-height: 20px;\n }\n\n .gleap-notification-item-content {\n line-height: 20px;\n color: ").concat(h,";\n margin-top: 4px;\n min-width: min(200px, 50vw);\n word-wrap: break-word;\n word-break: break-word;\n }\n\n .gleap-frame-container-inner {\n position: relative;\n width: 100%;\n height: calc(100vh - ").concat(84+s,"px);\n max-height: ").concat(700,'px;\n }\n\n .gleap-frame-container--survey .gleap-frame-container-inner {\n height: calc(100vh - 40px);\n }\n \n .gleap-frame-container-inner:before {\n content: " ";\n position: absolute;\n width: 100%;\n height: calc(100% - ').concat(k,"px);\n top: ").concat(k,"px;\n background-color: ").concat(r,";\n z-index: -1;\n }\n \n .gleap-frame-container iframe {\n height: 100% !important;\n width: 100% !important;\n max-width: 100% !important;\n display: block !important;\n pointer-events: auto !important;\n }\n \n .gleap-frame-container--hidden {\n display: none !important;\n pointer-events: none;\n animation: none !important;\n }\n \n .bb-feedback-button {\n margin: 0px;\n position: fixed;\n bottom: ").concat(s,"px;\n right: ").concat(i,"px;\n border-radius: 30px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n background-color: transparent;\n color: #000000;\n z-index: ").concat(2147483630,";\n box-sizing: border-box;\n display: flex;\n align-items: center;\n padding: 0px;\n }\n\n [dir=rtl].bb-feedback-button {\n bottom: ").concat(s,"px;\n right: auto;\n left: ").concat(i,"px;\n }\n \n .bb-feedback-button--bottomleft {\n bottom: ").concat(s,"px;\n right: auto;\n left: ").concat(i,"px;\n }\n\n [dir=rtl].bb-feedback-button--bottomleft {\n bottom: ").concat(s,"px;\n right: ").concat(i,'px;\n left: auto;\n }\n \n .bb-feedback-button--disabled {\n display: none !important;\n }\n\n .bb-feedback-button--hidden {\n display: none !important;\n }\n \n .bb-feedback-button-text {\n padding: 8px 12px;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n background-color: #fff;\n border-radius: 8px;\n box-shadow: 0px 0px 14px 0px rgba(0, 0, 0, 0.15);\n position: relative;\n z-index: 99;\n }\n \n .bb-feedback-button-text:before {\n content: "";\n position: absolute;\n box-shadow: rgba(0, 0, 0, 0.04) 6px 6px 5px;\n transform: rotate(315deg);\n bottom: 16px;\n right: -4px;\n border-width: 10px;\n border-style: solid;\n border-color: transparent #fff #fff transparent;\n }\n \n .bb-feedback-button--bottomleft .bb-feedback-button-text:before {\n display: none;\n }\n \n .bb-feedback-button-text:after {\n content: "";\n position: absolute;\n bottom: 12px;\n right: 0px;\n background-color: #fff;\n width: 5px;\n height: 30px;\n }\n \n .bb-feedback-button-text-title {\n font-family: sans-serif;\n font-size: 14px;\n color: #666;\n line-height: 18px;\n max-width: 220px;\n }\n \n .bb-feedback-button-text-title b {\n color: #000000;\n font-weight: 600;\n }\n\n .bb-notification-bubble {\n position: absolute;\n top: -5px;\n right: -5px;\n min-width: 12px;\n padding: 0px 4px;\n height: 20px;\n min-width: 20px;\n border-radius: 20px;\n background-color: red;\n color: #fff;\n font-size: 11px;\n font-family: sans-serif;\n text-align: center;\n line-height: 20px;\n }\n\n .bb-notification-bubble--hidden {\n display: none;\n }\n \n .bb-feedback-button-icon {\n width: 48px;\n height: 48px;\n border-radius: 48px;\n background-color: #485bff;\n transition: box-shadow, transform 0.2s ease-in-out;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n position: relative;\n }\n \n .bb-feedback-button-classic {\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n top: 50%;\n right: 0px;\n position: fixed;\n transform: rotate(-90deg) translate(50%, -50%);\n transform-origin: 100% 50%;\n padding: 9px 20px;\n text-align: center;\n background-color: #485bff;\n border-top-left-radius: 8px;\n border-top-right-radius: 8px;\n font-family: sans-serif;\n font-size: 16px;\n color: #fff;\n box-shadow: 0px 0px 14px 0px rgba(0, 0, 0, 0.25);\n }\n\n [dir=rtl].bb-feedback-button .bb-feedback-button-classic {\n top: 50%;\n left: 0px;\n right: auto;\n transform: rotate(90deg) translate(-50%, -100%);\n transform-origin: 0% 0%;\n }\n \n .bb-feedback-button-classic--left {\n top: 50%;\n left: 0px;\n right: auto;\n transform: rotate(90deg) translate(-50%, -100%);\n transform-origin: 0% 0%;\n }\n\n [dir=rtl].bb-feedback-button .bb-feedback-button-classic--left {\n top: 50%;\n right: 0px;\n left: auto;\n transform: rotate(-90deg) translate(50%, -50%);\n transform-origin: 100% 50%;\n }\n \n .bb-feedback-button-classic--bottom {\n top: auto;\n bottom: 0px;\n transform: none;\n right: ').concat(i,"px;\n left: auto;\n }\n \n [dir=rtl].bb-feedback-button .bb-feedback-button-classic--bottom {\n top: auto;\n bottom: 0px;\n transform: none;\n left: ").concat(i,"px;\n right: auto;\n }\n\n .bb-feedback-button--classic-button-style {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n \n .bb-feedback-button--open.bb-feedback-button--classic-button-style {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: bbFadeOutRight;\n }\n \n .bb-feedback-button .bb-logo-logo {\n position: absolute;\n width: 30px;\n height: 30px;\n top: 9px;\n left: 9px;\n object-fit: contain;\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-name: bbZoomIn;\n }\n \n .bb-feedback-button .bb-logo-arrowdown {\n position: absolute;\n width: 14px;\n height: 14px;\n top: 17px;\n left: 17px;\n object-fit: contain;\n animation-duration: 0.3s;\n animation-fill-mode: both;\n }\n \n .bb-feedback-button .bb-logo-arrowdown {\n animation-name: bbZoomOut;\n }\n \n .bb-feedback-button--open .bb-logo-arrowdown {\n animation-name: bbZoomIn;\n }\n \n .bb-feedback-button--open .bb-logo-logo {\n animation-name: bbZoomOut;\n }\n \n .bb-feedback-button-icon:hover {\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.25), 0px 0px 20px rgba(0, 0, 0, 0.2);\n transform: scale(1.1);\n }\n \n .bb-feedback-button--open .bb-feedback-button-text {\n animation-name: bbFadeOutDown;\n }\n \n .bb-feedback-button--open .bb-feedback-button-icon {\n display: flex;\n }\n \n .bb-capture-svg {\n position: fixed;\n z-index: ").concat(2147483614,";\n top: 0px;\n left: 0px;\n right: 0px;\n width: 100%;\n height: 100%;\n padding: 0px;\n margin: 0px;\n cursor: crosshair;\n }\n\n .bb-capture-svg--preview {\n cursor: auto !important;\n }\n \n .bb-rec-on-circle {\n animation-name: bbRecIconFade;\n animation-duration: 2s;\n animation-iteration-count: infinite;\n animation-direction: alternate;\n }\n \n .bb-rec-on-cont {\n animation-name: bbRecIconContFade;\n animation-duration: 2s;\n animation-iteration-count: infinite;\n animation-direction: alternate;\n }\n \n .bb-capture-editor-drag-info {\n position: fixed;\n top: -200px;\n left: 0px;\n z-index: ").concat(2147483616,";\n transition: opacity 0.3s ease-in-out;\n }\n \n .bb-capture-editor-drag-info svg {\n width: 24px;\n height: 24px;\n }\n \n .bb-capture-editor-borderlayer {\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n border: 4px solid ").concat(e,";\n cursor: crosshair;\n z-index: ").concat(2147483610,";\n box-sizing: border-box;\n pointer-events: none;\n }\n \n .bb-capture-editor-notrecording .bb-capture-editor-borderlayer {\n background-color: rgba(0, 0, 0, 0.8);\n }\n\n .bb-capture-editor-recording .bb-capture-editor-borderlayer {\n border: 4px solid #eb144c !important;\n }\n \n .bb-capture-editor-recording .bb-capture-dismiss {\n display: none;\n }\n \n .bb-capture-editor-item-inactive {\n opacity: 0.3;\n cursor: not-allowed !important;\n }\n \n .bb-capture-editor-notrecording .bb-capture-toolbar-drawingitem {\n opacity: 0.3;\n cursor: not-allowed !important;\n }\n \n .bb-capture-editor-notrecording .bb-capture-editor-drag-info {\n display: none;\n }\n \n .bb-capture-editor-notrecording .bb-capture-svg {\n pointer-events: none !important;\n }\n \n .bb-capture-toolbar {\n position: fixed;\n top: 20px;\n left: 50%;\n transform: translateX(-50%);\n z-index: ").concat(2147483618,";\n background-color: #fff;\n padding: 5px;\n display: flex;\n align-items: center;\n border-radius: 8px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n transition: opacity 0.3s ease-in-out;\n }\n \n .bb-capture-dismiss {\n position: fixed;\n top: 0px;\n right: 0px;\n z-index: ").concat(2147483618,";\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n width: 36px;\n height: 36px;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: ").concat(e,";\n border-bottom-left-radius: ").concat(C,"px;\n }\n\n [dir=rtl] .bb-capture-dismiss {\n top: 0px;\n left: 0px;\n right: auto;\n border-bottom-left-radius: 0px !important;\n border-bottom-right-radius: ").concat(C,"px;\n }\n \n .bb-capture-dismiss svg path {\n fill: ").concat(c,';\n }\n \n .bb-capture-dismiss svg {\n width: 20px;\n height: 20px;\n object-fit: contain;\n }\n \n .bb-capture-button-next {\n font-family: sans-serif;\n box-sizing: border-box;\n font-weight: 600;\n text-align: center;\n width: auto;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n margin: 0px;\n line-height: 36px;\n padding: 0px 12px;\n font-size: 15px;\n margin-left: 12px;\n }\n\n [dir=rtl].bb-capture-editor .bb-capture-button-next {\n margin-left: auto;\n margin-right: 12px;\n }\n \n .bb-capture-toolbar-item-spacer {\n width: 1px;\n height: 38px;\n min-width: 1px;\n margin: 0px 5px;\n }\n \n .bb-capture-toolbar-item {\n width: 42px;\n height: 38px;\n min-width: 42px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n position: relative;\n margin-right: 5px;\n }\n\n .drag-handle-item {\n cursor: grab !important;\n width: 34px;\n min-width: 34px;\n }\n\n .drag-handle-item svg {\n width: 18px !important;\n height: 18px !important;\n }\n \n .bb-capture-toolbar-item svg {\n width: 23px;\n height: 23px;\n object-fit: contain;\n }\n \n .bb-capture-toolbar-item-selectedcolor {\n border-radius: 100%;\n width: 20px;\n height: 20px;\n background-color: #db4035;\n }\n \n .bb-capture-toolbar-item[data-type="undo"] svg {\n width: 18px;\n height: 18px;\n }\n \n .bb-capture-toolbar-item[data-active="true"] {\n position: relative;\n }\n \n .bb-capture-preview {\n display: none;\n background-color: rgba(0, 0, 0, 0.6);\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n justify-content: center;\n align-items: center;\n z-index: ').concat(2147483620,";\n }\n \n .bb-capture-preview-inner {\n background-color: #fff;\n padding: 0px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n border-radius: 8px;\n flex-direction: column;\n max-width: 640px;\n width: 100%;\n margin: 20px;\n }\n \n .bb-capture-preview-inner video {\n border-radius: 8px 8px 0px 0px;\n display: block;\n border: 0px;\n outline: none;\n width: 100%;\n max-height: 60vh;\n }\n \n .bb-capture-preview-buttons {\n display: flex;\n justify-content: space-between;\n padding: 14px;\n }\n \n .bb-capture-preview-retrybutton {\n font-family: sans-serif;\n border-radius: 21px;\n box-sizing: border-box;\n padding: 12px 26px;\n font-size: 16px;\n line-height: 19px;\n font-weight: 600;\n text-align: center;\n margin-top: 0px;\n margin-bottom: 0px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-preview-sendbutton {\n font-family: sans-serif;\n border-radius: 21px;\n box-sizing: border-box;\n padding: 12px 26px;\n font-size: 16px;\n line-height: 19px;\n font-weight: 600;\n text-align: center;\n margin-top: 0px;\n margin-bottom: 0px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-preview-retrybutton:hover,\n .bb-capture-preview-sendbutton:hover {\n opacity: 0.9;\n }\n \n .bb-capture-toolbar-item-recording {\n margin-right: 0px;\n }\n \n .bb-capture-toolbar-item-recording svg {\n width: 33px;\n height: 33px;\n }\n \n .bb-capture-toolbar-item-colorpicker {\n position: fixed;\n top: 70px;\n left: 50%;\n transform: translateX(-50%);\n z-index: ").concat(2147483618,';\n background-color: #fff;\n display: none;\n padding: 10px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n border-radius: 8px;\n }\n \n .bb-capture-toolbar-item-color {\n width: 20px;\n height: 20px;\n border-radius: 100%;\n margin-right: 12px;\n box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.15);\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-toolbar-item-color:hover {\n box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.25);\n }\n \n .bb-capture-toolbar-item-color:last-of-type {\n margin-right: 0px;\n }\n \n [dir=rtl].bb-capture-editor .bb-capture-toolbar-item-color {\n margin-right: auto;\n margin-left: 12px;\n }\n \n [dir=rtl].bb-capture-editor .bb-capture-toolbar-item-color:last-of-type {\n margin-right: auto;\n margin-left: 0px;\n }\n \n .bb-capture-toolbar-item-recording[data-active="true"] svg:first-of-type {\n display: none;\n }\n \n .bb-capture-toolbar-item-recording[data-active="true"] svg:nth-of-type(2) {\n display: block;\n }\n \n .bb-capture-toolbar-item-recording[data-active="false"] svg:first-of-type {\n display: block;\n }\n \n .bb-capture-toolbar-item-recording[data-active="false"] svg:nth-of-type(2) {\n display: none;\n }\n \n .bb-capture-toolbar-item--active {\n background-color: #eee;\n }\n \n .bb-capture-toolbar-item:hover svg {\n opacity: 1;\n }\n \n .bb-capture-toolbar-item--active {\n background-color: #f8f8f8;\n }\n \n .bb-capture-toolbar-item--active svg {\n opacity: 1;\n }\n \n .bb-capture-toolbar-item--inactivecross::before {\n content: "";\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n height: 3px;\n width: 26px;\n margin: auto;\n border-radius: 4px;\n background-color: #e80000;\n transform: rotate(45deg);\n }\n \n .bb-capture-toolbar-item--inactivecross svg {\n fill: #eee;\n }\n \n .bb-capture-toolbar-item-timer {\n text-align: left;\n line-height: 32px;\n font-size: 14px;\n font-family: sans-serif;\n margin: 5px;\n min-width: 40px;\n display: none;\n }\n \n .bb-capture-toolbar-item .bb-tooltip {\n background-color: #555;\n color: #fff;\n visibility: hidden;\n font-size: 14px;\n font-family: sans-serif;\n text-align: center;\n padding: 5px 10px;\n position: absolute;\n z-index: 1;\n top: 45px;\n left: 0px;\n transform: translateX(calc(-50% + 21px));\n opacity: 0;\n transition: opacity 0.3s;\n white-space: nowrap;\n }\n \n .bb-capture-toolbar-item .bb-tooltip::after {\n content: "";\n position: absolute;\n bottom: 100%;\n left: 50%;\n margin-left: -5px;\n border-width: 5px;\n border-style: solid;\n transform: rotate(180deg);\n border-color: #555 transparent transparent transparent;\n }\n \n .bb-capture-toolbar-item:hover .bb-tooltip {\n visibility: visible;\n opacity: 1;\n }\n \n .bb-capture-options {\n display: none;\n }\n \n .bb-capture-options--active {\n display: flex;\n }\n\n @keyframes bbFadeOutRight {\n from {\n opacity: 1;\n }\n \n to {\n opacity: 0;\n }\n }\n \n @keyframes bbFadeOutDown {\n from {\n opacity: 1;\n }\n \n to {\n opacity: 0;\n transform: translate3d(0, 100%, 0);\n }\n }\n \n @keyframes bbFadeInOpacity {\n from {\n opacity: 0;\n }\n \n to {\n opacity: 1;\n }\n }\n \n @keyframes bbZoomOut {\n from {\n opacity: 1;\n }\n \n 50% {\n opacity: 0;\n transform: scale3d(0.3, 0.3, 0.3);\n }\n \n to {\n opacity: 0;\n }\n }\n \n @keyframes bbZoomIn {\n from {\n opacity: 0;\n transform: scale3d(0.3, 0.3, 0.3);\n }\n \n 50% {\n opacity: 1;\n }\n }\n \n @keyframes bbRecIconContFade {\n 0% {\n fill: #b10802;\n }\n 50% {\n fill: #ff0000;\n }\n 100% {\n fill: #b10802;\n }\n } \n .bb-capture-preview-retrybutton {\n color: ').concat(h,";\n border-radius: ").concat(w,"px;\n background-color: ").concat(y,";\n }\n .bb-capture-preview-retrybutton:hover {\n background-color: ").concat(b,";\n }\n @keyframes bb-suc-fill {\n 100% {\n box-shadow: inset 0px 0px 0px 30px ").concat(e,";\n }\n }\n .bb-capture-toolbar-item-spacer {\n background-color: ").concat(y,";\n }\n .bb-tooltip {\n border-radius: ").concat(S,"px;\n }\n @keyframes bbRecIconFade {\n 0% {\n fill: transparent;\n }\n 50% {\n fill: ").concat(b,";\n }\n 100% {\n fill: transparent;\n }\n }\n .bb-capture-preview-sendbutton {\n color: ").concat(c,";\n background-color: ").concat(e,";\n border-radius: ").concat(w,"px;\n }\n .bb-capture-button-next {\n color: ").concat(c,";\n background-color: ").concat(e,";\n border-radius: ").concat(C,"px;\n }\n .bb-capture-preview-inner {\n background-color: ").concat(r,";\n border-radius: ").concat(S,"px;\n }\n .bb-capture-toolbar-item-timer {\n color: ").concat(v,";\n }\n .bb-svg-path {\n fill: ").concat(h,";\n }\n .bb-capture-toolbar-item {\n border-radius: ").concat(S,"px;\n }\n .bb-capture-toolbar {\n background-color: ").concat(r,";\n border-radius: ").concat(S,"px;\n }\n .bb-capture-toolbar-item-colorpicker {\n background-color: ").concat(r,";\n }\n .bb-capture-toolbar-item--active {\n background-color: ").concat(y,";\n }\n .bb-feedback-button-classic {\n border-top-left-radius: ").concat(S,"px;\n border-top-right-radius: ").concat(S,"px;\n }\n .bb-logo-logo--default path {\n fill: ").concat(p,";\n }\n .bb-logo-arrowdown {\n fill: ").concat(p,";\n }\n .bb-feedback-button-icon {\n background-color: ").concat(n,";\n }\n .bb-feedback-button-classic {\n background-color: ").concat(n,";\n color: ").concat(p,";\n }\n\n @media only screen and (max-width: 450px) {\n [dir=rtl].gleap-frame-container,\n .gleap-frame-container {\n left: 0px;\n right: 0px;\n width: 100vw;\n max-width: 100vw;\n min-height: 100vh;\n max-height: 100vh;\n min-height: 100dvh !important;\n max-height: 100dvh !important;\n top: 0px;\n bottom: 0px;\n border-radius: 0px;\n animation-name: gleapFadeInUpMobile;\n }\n\n .gleap-frame-container-inner {\n width: 100vw;\n height: 100%;\n }\n\n .gleap-frame-container:not(.gleap-frame-container--survey):not(.gleap-frame-container--survey-full) .gleap-frame-container-inner {\n max-height: calc(var(--glvh, 1vh) * 100) !important;\n }\n\n .gleap-frame-container--survey {\n height: auto !important;\n top: initial !important;\n bottom: 0px !important;\n min-height: initial !important;\n }\n\n .gleap-frame-container--survey .gleap-frame-container-inner {\n height: 100vh !important;\n }\n\n .bb-tooltip {\n display: none !important;\n }\n \n .bb-capture-toolbar-item-colorpicker {\n top: 75px;\n }\n \n .bb-capture-button-next {\n margin-left: auto;\n }\n \n .bb-capture-dismiss {\n display: none;\n }\n \n .bb-capture-toolbar {\n top: 15px;\n right: 15px;\n left: 15px;\n width: auto;\n transform: none;\n }\n\n .bb-capture-editor-drag-info {\n display: none;\n }\n \n .bb-capture-editor-borderlayer {\n border-width: 4px;\n }\n }\n \n @media print {\n .bb-feedback-button {\n display: none !important;\n }\n \n .gleap-frame-container {\n display: none !important;\n }\n }\n\n .gleap-tour-sender {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n margin-bottom: 10px;\n }\n\n .gleap-tour-sender-image {\n width: 32px;\n height: 32px;\n border-radius: 32px;\n margin-right: 10px;\n background-size: cover;\n background-repeat: no-repeat;\n }\n\n .gleap-tour-popover.gleap-tour-popover-post {\n min-width: 550px;\n max-width: 550px;\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-tour-popover.gleap-tour-popover-post {\n min-width: calc(100vw - 40px);\n max-width: calc(100vw - 40px);\n }\n }\n\n .gleap-tour-message,\n .gleap-tour-message p,\n .gleap-tour-message ul {\n color: ").concat(h,";\n }\n\n .gleap-tour-message h2 {\n font-weight: 600;\n font-size: 22px;\n }\n\n .gleap-tour-message h3 {\n font-weight: 600;\n font-size: 18px;\n }\n\n .gleap-tour-message p {\n line-height: 1.3;\n margin-bottom: 10px !important;\n margin-top: 10px !important;\n }\n\n .gleap-tour-message ul {\n line-height: 1.3;\n padding-left: 20px;\n margin-top: 10px !important;\n margin-bottom: 10px !important;\n }\n\n .gleap-tour-message {\n max-height: calc(80vh - 100px) !important;\n overflow-y: auto;\n min-width: 270px;\n }\n\n .gleap-tour-message::-webkit-scrollbar {\n width: 5px;\n }\n\n .gleap-tour-message::-webkit-scrollbar-track {\n border-radius: 0px;\n }\n \n .gleap-tour-message::-webkit-scrollbar-thumb {\n background: ").concat(b,"; \n border-radius: 5px;\n }\n\n .gleap-tour-message::-webkit-scrollbar-thumb:hover {\n background: ").concat(v,";\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-tour-message {\n min-width: auto !important;\n }\n }\n\n .gleap-tour-message iframe {\n width: 100%;\n height: 300px;\n margin-top: 10px;\n margin-bottom: 10px;\n border: none;\n outline: none;\n display: block;\n }\n\n .gleap-tour-sender-name {\n font-size: 15px;\n }\n\n .gleap-tour-video {\n width: 100%;\n max-width: 100%;\n }\n\n .gleap-tour-video-svg--fullscreen {\n width: 100% !important;\n height: 100% !important;\n top: 0px !important;\n left: 0px !important;\n right: 0px !important;\n bottom: 0px !important;\n }\n\n .gleap-tour-video--playing .gleap-tour-video-playpause {\n opacity: 0;\n }\n \n .gleap-tour-video--playing:hover .gleap-tour-video-playpause {\n opacity: 1;\n }\n\n .gleap-tour-popover-video-pointer {\n padding: 0px !important;\n border-radius: 8px;\n position: relative;\n background-color: transparent !important;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-footer {\n position: absolute;\n top: 0px;\n left: 20px;\n right: 20px;\n opacity: 0;\n transition: opacity 200ms ease-in-out;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-footer button {\n padding: 5px 12px;\n }\n\n .gleap-tour-popover-video-pointer.gleap-tour-popover-can-close .gleap-tour-popover-footer {\n right: 40px !important;\n }\n\n .gleap-tour-popover-video-pointer:hover .gleap-tour-popover-footer {\n opacity: 1;\n }\n\n .gleap-tour-popover-pointer.gleap-tour-popover-no-sender .gleap-tour-message {\n padding-right: 20px;\n }\n\n .gleap-tour-video video {\n width: 100%;\n max-width: 100%;\n height: auto;\n border: none;\n outline: none;\n display: block;\n border-radius: 8px;\n }\n\n .gleap-admin-collapse-ui {\n z-index: ").concat(2147483635,";\n cursor: pointer;\n position: fixed;\n bottom: 75px;\n right: 20px;\n width: 32px;\n height: 32px;\n border-radius: 100%;\n background-color: #fff;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: rgba(0, 0, 0, 0.16) 0px 10px 36px 0px, rgba(0, 0, 0, 0.06) 0px 0px 0px 1px;\n }\n\n .gleap-admin-collapse-ui svg {\n width: 20px;\n height: 14px;\n fill: #000 !important;\n }\n\n .gleap-admin-collapse-ui-active {\n bottom: 20px !important;\n }\n\n .gleap-admin-collapse-ui-active svg {\n transform: rotate(180deg);\n }\n\n .gleap-admin-frame-container-active {\n display: none !important;\n }\n\n .gleap-admin-frame-container {\n position: fixed;\n bottom: 0px;\n left: 0px;\n right: 0px;\n width: 100vw;\n z-index: ").concat(2147483640,";\n }\n\n .gleap-admin-frame {\n width: 100%;\n height: 100% !important;\n border: none;\n outline: none;\n display: block;\n }\n \n .gleap-tour-message .linktype-link {\n display: inline-block !important;\n background-color: transparent !important;\n color: ").concat(n," !important;\n }\n\n .gleap-tooltip .linktype-button,\n .gleap-tour-message .linktype-button {\n display: inline-block !important;\n border-radius: 5px;\n box-sizing: border-box;\n padding: 10px 20px !important;\n text-decoration: none !important;\n background-color: ").concat(n," !important;\n color: ").concat(p," !important;\n }\n\n .gleap-tour-message img {\n width: 100%;\n max-width: 100%;\n min-height: 260px;\n height: auto;\n margin-top: 10px;\n margin-bottom: 10px;\n object-fit: cover;\n }\n\n .gleap-tour-active .gleap-tour-overlay {\n pointer-events: none;\n }\n \n .gleap-tour-active * {\n pointer-events: none;\n }\n \n .gleap-tour-active .gleap-tour-active-element,\n .gleap-tour-active .gleap-tour-active-element *,\n .gleap-tour-popover,\n .gleap-tour-popover * {\n pointer-events: auto;\n }\n \n @keyframes animate-fade-in {\n 0% {\n opacity: 0;\n }\n \n to {\n opacity: 1;\n }\n }\n \n .gleap-tour-fade .gleap-tour-overlay {\n animation: animate-fade-in 200ms ease-in-out;\n }\n \n .gleap-tour-fade .gleap-tour-popover {\n animation: animate-fade-in 200ms;\n }\n\n .gleap-tour-video-playpause {\n position: absolute;\n bottom: 8px;\n left: 8px;\n width: 32px;\n height: 32px;\n padding: 4px;\n background-color: rgba(0,0,0,0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border-radius: 8px;\n transition: opacity 200ms ease-in-out;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-arrow {\n display: none !important;\n }\n\n .gleap-tour-video-playpause svg {\n width: 34px;\n height: auto;\n fill: #fff;\n }\n \n /* Popover styles */\n .gleap-tour-popover {\n all: unset;\n box-sizing: border-box;\n color: #2d2d2d;\n margin: 0;\n padding: 15px;\n border-radius: ").concat(S,'px;\n min-width: 250px;\n max-width: 300px;\n box-shadow: 0 1px 10px #0006;\n z-index: 1000000000;\n position: fixed;\n top: 0;\n right: 0;\n background-color: #fff;\n }\n \n .gleap-tour-popover * {\n font-family: "Helvetica Neue", Inter, ui-sans-serif, "Apple Color Emoji", Helvetica, Arial, sans-serif;\n }\n \n .gleap-tour-popover-title {\n font: 19px / normal sans-serif;\n font-weight: 700;\n display: block;\n position: relative;\n line-height: 1.5;\n zoom: 1;\n margin: 0;\n }\n \n .gleap-tour-popover-close-btn {\n all: unset;\n position: absolute;\n top: 5px;\n right: 5px;\n width: 32px;\n height: 32px;\n cursor: pointer;\n font-size: 30px;\n font-weight: 500;\n line-height: 32px;\n color: #d2d2d2;\n z-index: 1;\n text-align: center;\n transition: color;\n transition-duration: 200ms;\n }\n \n .gleap-tour-popover-close-btn:hover,\n .gleap-tour-popover-close-btn:focus {\n color: #2d2d2d;\n }\n \n .gleap-tour-popover-title[style*="block"] + .gleap-tour-popover-description {\n margin-top: 5px;\n }\n \n .gleap-tour-popover-description {\n margin-bottom: 0;\n font: 15px / normal sans-serif;\n line-height: 1.5;\n font-weight: 400;\n zoom: 1;\n }\n \n .gleap-tour-popover-footer {\n margin-top: 15px;\n text-align: right;\n zoom: 1;\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n \n .gleap-tour-popover-progress-text {\n font-size: 13px;\n font-weight: 400;\n color: #727272;\n zoom: 1;\n }\n \n .gleap-tour-popover-footer button {\n background-color: ').concat(e,";\n color: ").concat(c,";\n border-radius: ").concat(C,"px;\n box-sizing: border-box;\n padding: 10px 20px;\n font-size: 14px;\n font-weight: bold;\n line-height: 21px;\n border: none;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: none !important;\n outline: none !important;\n }\n\n .gleap-tour-popover-prev-btn {\n color: ").concat(h," !important;\n background-color: ").concat(y," !important;\n margin-right: 3px;\n }\n\n .gleap-tour-popover-prev-btn:hover {\n background-color: ").concat(e,"22 !important;\n color: ").concat(e,' !important;\n }\n \n .gleap-tour-popover-footer .gleap-tour-popover-btn-disabled {\n opacity: 0.5;\n pointer-events: none;\n }\n \n /* Disable the scrolling of parent element if it has an active element*/\n :not(body):has(> .gleap-tour-active-element) {\n overflow: hidden !important;\n }\n \n .gleap-tour-no-interaction, .gleap-tour-no-interaction * {\n pointer-events: none !important;\n }\n \n .gleap-tour-popover-navigation-btns {\n display: flex;\n flex-grow: 1;\n justify-content: flex-end;\n }\n \n .gleap-tour-popover-navigation-btns button + button {\n margin-left: 4px;\n }\n \n .gleap-tour-popover-arrow {\n content: "";\n position: absolute;\n border: 5px solid #fff;\n }\n \n .gleap-tour-popover-arrow-side-over {\n display: none;\n }\n \n /** Popover Arrow Sides **/\n .gleap-tour-popover-arrow-side-left {\n left: 100%;\n border-right-color: transparent;\n border-bottom-color: transparent;\n border-top-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-right {\n right: 100%;\n border-left-color: transparent;\n border-bottom-color: transparent;\n border-top-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-top {\n top: 100%;\n border-right-color: transparent;\n border-bottom-color: transparent;\n border-left-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-bottom {\n bottom: 100%;\n border-left-color: transparent;\n border-top-color: transparent;\n border-right-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-center {\n display: none;\n }\n \n /* Left/Start + Right/Start */\n .gleap-tour-popover-arrow-side-left.gleap-tour-popover-arrow-align-start,\n .gleap-tour-popover-arrow-side-right.gleap-tour-popover-arrow-align-start {\n top: 15px;\n }\n \n /* Top/Start + Bottom/Start */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-start,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-start {\n left: 15px;\n }\n \n /* End/Left + End/Right */\n .gleap-tour-popover-arrow-align-end.gleap-tour-popover-arrow-side-left,\n .gleap-tour-popover-arrow-align-end.gleap-tour-popover-arrow-side-right {\n bottom: 15px;\n }\n \n /* Top/End + Bottom/End */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-end,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-end {\n right: 15px;\n }\n \n /* Left/Center + Right/Center */\n .gleap-tour-popover-arrow-side-left.gleap-tour-popover-arrow-align-center,\n .gleap-tour-popover-arrow-side-right.gleap-tour-popover-arrow-align-center {\n top: 50%;\n margin-top: -5px;\n }\n \n /* Top/Center + Bottom/Center */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-center,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-center {\n left: 50%;\n margin-left: -5px;\n }\n \n /* No arrow */\n .gleap-tour-popover-arrow-none {\n display: none;\n } \n\n /* Modal styles */\n .gleap-modal-wrapper {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: ').concat(2147483640,";\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .gleap-modal-backdrop {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.5);\n z-index: ").concat(2147483641,";\n }\n\n .gleap-modal {\n position: relative;\n width: 90%;\n max-width: 600px;\n max-height: 90vh;\n z-index: ").concat(2147483700,";\n background-color: ").concat(r,";\n border-radius: ").concat(k,"px;\n overflow: hidden;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-name: gleapFadeInUp;\n }\n\n .gleap-modal-frame {\n width: 100%;\n border: none;\n display: block;\n outline: none;\n }\n\n body.gleap-modal-open {\n overflow: hidden;\n }\n\n @keyframes gleapFadeInUp {\n from {\n opacity: 0;\n transform: translate3d(0, 20px, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n "),T=document.querySelector(".gleap-styles");T&&T.remove();var O=document.createElement("style");O.innerHTML=E,O.className="gleap-styles",document.body.appendChild(O)}(e,t,n,r,o,i,s,l)}))}},{key:"sendSilentCrashReport",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"MEDIUM",o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{screenshot:!0,replays:!0,attachments:!0};return e.sendSilentCrashReportWithFormData({description:t},n,o)}},{key:"sendSilentCrashReportWithFormData",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"MEDIUM",o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{screenshot:!0,replays:!0,attachments:!0};if(!this.silentCrashReportSent){this.silentCrashReportSent=!0,setTimeout((function(){t.silentCrashReportSent=!1}),1e4);var r=o?k(o):{},i=et.getInstance();if(i.ready){var a=e||{};i.session.email&&(a.reportedBy=i.session.email),new Wt("CRASH",n,a,!0,r).sendFeedback().then((function(){})).catch((function(e){}))}}}},{key:"showSurvey",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"survey";e.startFeedbackFlowWithOptions(t,{hideBackButton:!0,format:n},!0)}},{key:"startClassicForm",value:function(t,n){e.startFeedbackFlowWithOptions(t,{hideBackButton:!n})}},{key:"startFeedbackFlow",value:function(t,n){e.startFeedbackFlowWithOptions(t,{hideBackButton:!n})}},{key:"startFeedbackFlowWithOptions",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=n.autostartDrawing,i=n.hideBackButton,a=n.format;if(et.getInstance().ready){e.getInstance().setGlobalDataItem("snapshotPosition",{x:window.scrollX,y:window.scrollY});var s="start-feedbackflow";o&&(s="start-survey"),Zt.getInstance().setAppMode(o?a:"widget"),Zt.getInstance().sendMessage({name:s,data:{flow:t,hideBackButton:i,format:a}},!0),r?Zt.getInstance().showDrawingScreen("screenshot"):Zt.getInstance().showWidget()}}},{key:"openConversations",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-conversations",data:{hideBackButton:!e}},!0),Zt.getInstance().showWidget()}},{key:"openConversation",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e&&(Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-conversation",data:{shareToken:e,hideBackButton:!t}},!0),Zt.getInstance().showWidget())}},{key:"startConversation",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];e.startBot("",t)}},{key:"startBot",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"start-bot",data:{botId:e||"",hideBackButton:!t}},!0),Zt.getInstance().showWidget()}},{key:"openHelpCenterCollection",value:function(e){e&&(Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-help-collection",data:{collectionId:e}},!0),Zt.getInstance().showWidget())}},{key:"openHelpCenterArticle",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e&&(Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-help-article",data:{articleId:e,hideBackButton:!t}},!0),Zt.getInstance().showWidget())}},{key:"openHelpCenter",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-helpcenter",data:{hideBackButton:!e}},!0),Zt.getInstance().showWidget()}},{key:"searchHelpCenter",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e&&(Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-helpcenter-search",data:{term:e,hideBackButton:!t}},!0),Zt.getInstance().showWidget())}},{key:"openNewsArticle",value:function(e){e&&(Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-news-article",data:{id:e}},!0),Zt.getInstance().showWidget())}},{key:"openChecklists",value:function(){Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-checklists",data:{}},!0),Zt.getInstance().showWidget()}},{key:"startChecklist",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;return!!e&&(Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"start-checklist",data:jm({outboundId:e,hideBackButton:!t},n?{sharedKey:n}:{})},!0),Zt.getInstance().showWidget(),!0)}},{key:"openChecklist",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e&&(Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-checklist",data:{id:e,hideBackButton:!t}},!0),Zt.getInstance().showWidget())}},{key:"getChecklistData",value:function(e,t){if(!e)return Promise.reject(new Error("outboundId is required"));var n=D.getInstance();return n.validateChecklist(e,t).then((function(e){return n.fetchChecklist(e)}))}},{key:"openNews",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-news",data:{hideBackButton:!e}},!0),Zt.getInstance().showWidget()}},{key:"openFeatureRequests",value:function(){Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-feature-requests",data:{}},!0),Zt.getInstance().showWidget()}},{key:"startProductTour",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this;et.getInstance().startProductTourConfig(e).then((function(o){var r;!t||null==o||!o.startURL||null!==(r=window)&&void 0!==r&&null!==(r=r.location)&&void 0!==r&&null!==(r=r.href)&&void 0!==r&&r.includes(null==o?void 0:o.baseURL)?n.startProductTourWithConfig(e,o,!0):window.location.href="".concat(o.startURL,"?gleap_tour=").concat(e,"&gleap_tour_delay=1")})).catch((function(e){}))}},{key:"checkForUncompletedTour",value:function(){var e=wm.getInstance().loadUncompletedTour();e&&wm.getInstance().startWithConfig(e.tourId,e.tourData,500)}},{key:"startProductTourWithConfig",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];wm.getInstance().startWithConfig(e,t,0,n)}},{key:"showBanner",value:function(e){try{qh.getInstance().showBanner(e)}catch(t){}}},{key:"showModal",value:function(e){try{Kh.getInstance().showModal(e)}catch(t){}}},{key:"showNotification",value:function(e){jh.getInstance().showNotification(e)}}],n&&Dm(t.prototype,n),o&&Dm(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();if(Fm(_m,"invoked",!0),Fm(_m,"silentCrashReportSent",!1),Fm(_m,"instance",void 0),"undefined"!=typeof window){var Um=window.GleapActions;if(Um&&Um.length>0)for(var Hm=0;Hm {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","import {\n GleapFrameManager,\n GleapConfigManager,\n GleapNotificationManager,\n GleapTranslationManager,\n GleapSession,\n} from \"./Gleap\";\nimport { loadIcon } from \"./UI\";\n\nexport default class GleapFeedbackButtonManager {\n feedbackButton = null;\n injectedFeedbackButton = false;\n buttonHidden = null;\n lastButtonIcon = null;\n\n // Feedback button types\n static FEEDBACK_BUTTON_BOTTOM_RIGHT = \"BOTTOM_RIGHT\";\n static FEEDBACK_BUTTON_BOTTOM_LEFT = \"BOTTOM_LEFT\";\n static FEEDBACK_BUTTON_CLASSIC = \"BUTTON_CLASSIC\";\n static FEEDBACK_BUTTON_CLASSIC_LEFT = \"BUTTON_CLASSIC_LEFT\";\n static FEEDBACK_BUTTON_CLASSIC_BOTTOM = \"BUTTON_CLASSIC_BOTTOM\";\n static FEEDBACK_BUTTON_NONE = \"BUTTON_NONE\";\n\n // GleapFeedbackButtonManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapFeedbackButtonManager();\n }\n return this.instance;\n }\n\n destroy() {\n if (this.feedbackButton) {\n this.feedbackButton.remove();\n this.feedbackButton = null;\n }\n\n this.buttonHidden = null;\n this.lastButtonIcon = null;\n this.injectedFeedbackButton = false;\n this.instance = null;\n }\n\n /**\n * Toggles the feedback button visibility.\n * @param {*} show\n * @returns\n */\n toggleFeedbackButton(show) {\n this.buttonHidden = !show;\n\n GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n GleapNotificationManager.getInstance().updateContainerStyle();\n }\n\n feedbackButtonPressed() {\n var frameManager = GleapFrameManager.getInstance();\n if (frameManager.isOpened()) {\n frameManager.hideWidget();\n } else {\n frameManager.setAppMode(\"widget\");\n frameManager.showWidget();\n }\n }\n\n /**\n * Injects the feedback button into the current DOM.\n */\n injectFeedbackButton() {\n if (this.injectedFeedbackButton) {\n return;\n }\n this.injectedFeedbackButton = true;\n\n var elem = document.createElement(\"div\");\n elem.addEventListener(\"click\", () => {\n this.feedbackButtonPressed();\n });\n document.body.appendChild(elem);\n this.feedbackButton = elem;\n\n this.updateFeedbackButtonState();\n }\n\n updateNotificationBadge(count) {\n const notificationBadge = document.querySelector(\".bb-notification-bubble\");\n if (!notificationBadge) {\n return;\n }\n\n const notificationHiddenClass = \"bb-notification-bubble--hidden\";\n if (count > 0 && !GleapFrameManager.getInstance().isOpened()) {\n notificationBadge.classList.remove(notificationHiddenClass);\n notificationBadge.innerText = count;\n } else {\n notificationBadge.classList.add(notificationHiddenClass);\n }\n }\n\n refresh() {\n const feedbackButton = document.querySelector(\".bb-feedback-button\");\n if (feedbackButton) {\n this.updateFeedbackButtonText();\n this.updateFeedbackButtonState();\n } else {\n this.injectedFeedbackButton = false;\n this.feedbackButton = null;\n this.buttonHidden = null;\n this.lastButtonIcon = null;\n this.injectFeedbackButton();\n }\n }\n\n updateFeedbackButtonText() {\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n\n if (\n !(\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT\n )\n ) {\n return;\n }\n\n const feedbackButton = document.querySelector(\n \".bb-feedback-button-classic\"\n );\n if (!feedbackButton) {\n return;\n }\n\n feedbackButton.innerText = flowConfig.widgetButtonText;\n }\n\n /**\n * Updates the feedback button state\n * @returns\n */\n updateFeedbackButtonState() {\n if (this.feedbackButton === null) {\n return;\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n\n var buttonIcon = \"\";\n if (flowConfig.buttonLogo) {\n buttonIcon = `\"Feedback`;\n } else {\n buttonIcon = loadIcon(\"button\", \"#fff\");\n }\n\n this.feedbackButton.className = \"bb-feedback-button gleap-font gl-block\";\n this.feedbackButton.setAttribute(\n \"dir\",\n GleapTranslationManager.getInstance().isRTLLayout ? \"rtl\" : \"ltr\"\n );\n\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT\n ) {\n this.feedbackButton.classList.add(\n \"bb-feedback-button--classic-button-style\"\n );\n\n this.feedbackButton.innerHTML = `
${flowConfig.widgetButtonText}
`;\n } else {\n if (buttonIcon !== this.lastButtonIcon) {\n this.feedbackButton.innerHTML = `
${buttonIcon}${loadIcon(\n \"arrowdown\",\n \"#fff\"\n )}
`;\n }\n }\n\n // Prevent dom update if not needed.\n this.lastButtonIcon = buttonIcon;\n\n var hideButton = false;\n if (GleapFeedbackButtonManager.getInstance().buttonHidden === null) {\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_NONE\n ) {\n hideButton = true;\n }\n } else {\n if (GleapFeedbackButtonManager.getInstance().buttonHidden) {\n hideButton = true;\n }\n }\n if (hideButton) {\n this.feedbackButton.classList.add(\"bb-feedback-button--disabled\");\n }\n\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_BOTTOM_LEFT\n ) {\n this.feedbackButton.classList.add(\"bb-feedback-button--bottomleft\");\n }\n\n if (GleapFrameManager.getInstance().isOpened()) {\n this.feedbackButton.classList.add(\"bb-feedback-button--open\");\n }\n\n const appMode = GleapFrameManager.getInstance().appMode;\n if (\n appMode === \"survey\" ||\n appMode === \"survey_full\" ||\n appMode === \"survey_web\"\n ) {\n this.feedbackButton.classList.add(\"bb-feedback-button--survey\");\n }\n\n if (\n flowConfig.hideForGuests === true &&\n !GleapSession.getInstance().isUser()\n ) {\n this.feedbackButton.classList.add(\"bb-feedback-button--hidden\");\n }\n }\n}\n","import GleapFeedbackButtonManager from \"./GleapFeedbackButtonManager\";\n\nconst calculateShadeColor = function (col, amt) {\n col = col.replace(/^#/, \"\");\n if (col.length === 3)\n col = col[0] + col[0] + col[1] + col[1] + col[2] + col[2];\n\n let [r, g, b] = col.match(/.{2}/g);\n [r, g, b] = [\n parseInt(r, 16) + amt,\n parseInt(g, 16) + amt,\n parseInt(b, 16) + amt,\n ];\n\n r = Math.max(Math.min(255, r), 0).toString(16);\n g = Math.max(Math.min(255, g), 0).toString(16);\n b = Math.max(Math.min(255, b), 0).toString(16);\n\n const rr = (r.length < 2 ? \"0\" : \"\") + r;\n const gg = (g.length < 2 ? \"0\" : \"\") + g;\n const bb = (b.length < 2 ? \"0\" : \"\") + b;\n\n return `#${rr}${gg}${bb}`;\n};\n\nexport const calculateContrast = (hex) => {\n var r = parseInt(hex.substr(1, 2), 16),\n g = parseInt(hex.substr(3, 2), 16),\n b = parseInt(hex.substr(5, 2), 16),\n yiq = (r * 299 + g * 587 + b * 114) / 1000;\n return yiq >= 160 ? \"#000000\" : \"#ffffff\";\n};\n\nexport const widgetMaxHeight = 700;\n\nexport const injectStyledCSS = (\n primaryColor,\n headerColor,\n buttonColor,\n borderRadius,\n backgroundColor,\n buttonX,\n buttonY,\n buttonStyle\n) => {\n const contrastColor = calculateContrast(primaryColor);\n const contrastButtonColor = calculateContrast(buttonColor);\n const contrastBackgroundColor = calculateContrast(backgroundColor);\n const contrastHeaderColor = calculateContrast(headerColor);\n const isDarkMode = contrastBackgroundColor === \"#ffffff\";\n const headerDarkColor = calculateShadeColor(\n headerColor,\n contrastHeaderColor === \"#ffffff\" ? -35 : -15\n );\n const subTextColor = isDarkMode\n ? calculateShadeColor(backgroundColor, 100)\n : calculateShadeColor(backgroundColor, -120);\n const backgroundColorHover = isDarkMode\n ? calculateShadeColor(backgroundColor, 30)\n : calculateShadeColor(backgroundColor, -12);\n const hoverHoverColor = isDarkMode\n ? calculateShadeColor(backgroundColor, 80)\n : calculateShadeColor(backgroundColor, -30);\n\n var borderRadius = parseInt(borderRadius, 10);\n const buttonBorderRadius = Math.round(borderRadius * 1.05);\n const containerRadius = Math.round(borderRadius * 0.8);\n const chatRadius = Math.round(borderRadius * 0.6);\n const formItemBorderRadius = Math.round(borderRadius * 0.4);\n const formItemSmallBorderRadius = Math.round(borderRadius * 0.25);\n const zIndexBase = 2147483600;\n\n var bottomInfoOffset = 57 + buttonY;\n if (\n buttonStyle === GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM\n ) {\n bottomInfoOffset = buttonY + 15;\n } else if (buttonStyle && buttonStyle.includes(\"CLASSIC\")) {\n bottomInfoOffset = buttonY;\n } else if (buttonStyle === GleapFeedbackButtonManager.FEEDBACK_BUTTON_NONE) {\n bottomInfoOffset = buttonY;\n }\n\n const colorStyleSheet = `\n .gleap-font, .gleap-font * {\n font-style: normal;\n font-variant-caps: normal;\n font-variant-ligatures: normal;\n font-variant-numeric: normal;\n font-variant-east-asian: normal;\n font-weight: normal;\n font-stretch: normal;\n font-size: 100%;\n line-height: 1;\n font-family: system-ui, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n }\n .gleap-input-highlight {\n box-shadow: 0 0 0 3px ${primaryColor} !important;\n }\n .gleap-frame-container {\n right: ${buttonX}px;\n bottom: ${61 + buttonY}px;\n width: calc(100% - 40px);\n max-width: 410px;\n position: fixed;\n z-index: ${zIndexBase + 31};\n visibility: visible;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.16);\n border-radius: ${containerRadius}px;\n overflow: hidden;\n animation-duration: .3s;\n animation-fill-mode: both;\n animation-name: gleapFadeInUp;\n user-select: none;\n pointer-events: none;\n transition: max-width 0.3s ease-out;\n }\n\n .gleap-admin-highlight {\n box-shadow: 0px 0px 0px 4px red;\n }\n\n :root {\n --gleap-margin-top: 50px;\n }\n\n .gleap-tooltip-anchor {\n position: relative;\n display: inline-block;\n float: left;\n max-width: 0px;\n width: 17px;\n }\n\n .gleap-tooltip-hotspot {\n position: absolute;\n display: block;\n width: 17px;\n height: 17px;\n cursor: pointer;\n top: 0px;\n left: 0px;\n }\n\n @keyframes gleap-pulse {\n 0% {\n transform: scale(0);\n opacity: 0.25;\n }\n 45% {\n transform: scale(2.5);\n opacity: 0;\n }\n 100% {\n transform: scale(0);\n opacity: 0;\n }\n }\n\n .gleap-tooltip-hotspot-animation {\n position: absolute;\n border-radius: 17px;\n opacity: 0.25;\n display: block;\n width: 17px;\n height: 17px;\n cursor: pointer;\n top: 0px;\n left: 0px;\n animation: gleap-pulse 5s infinite;\n }\n\n .gleap-tooltip-hotspot svg {\n width: 17px;\n height: 17px;\n object-fit: contain;\n display: block;\n }\n\n .gleap-tooltip-inner {\n position: relative;\n overflow: visible;\n font-size: 14px;\n font-weight: normal;\n color: #000;\n line-height: 1.3;\n }\n\n .gleap-tooltip {\n position: absolute;\n background-color: #fff;\n color: #000;\n font-size: 15px;\n line-height: 18px;\n padding: 16px;\n padding-top: 8px;\n padding-bottom: 8px;\n border-radius: 4px;\n max-width: min(350px, 80vw);\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n opacity: 0;\n visibility: hidden;\n transition: opacity 0.2s, visibility 0.2s;\n z-index: ${zIndexBase + 100};\n }\n\n .gleap-tooltip a {\n color: ${primaryColor};\n text-decoration: underline;\n display: inline !important;\n margin: 0px !important;\n padding: 0px !important;\n word-break: break-word;\n }\n\n .gleap-tooltip ul {\n padding-left: 16px;\n }\n\n .gleap-tooltip b {\n font-weight: 600;\n }\n\n .gleap-tooltip h2 {\n font-size: 18px;\n line-height: 20px;\n font-weight: 600;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip h3 {\n font-size: 16px;\n line-height: 18px;\n font-weight: 600;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip p {\n padding: 0px;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip img {\n max-width: 100%;\n max-height: 300px;\n width: 100%;\n height: auto;\n object-fit: cover;\n margin-top: 8px;\n margin-bottom: 8px;\n border-radius: 4px;\n }\n\n .gleap-tooltip iframe,\n .gleap-tooltip video {\n max-width: 100%;\n width: 100%;\n height: auto;\n min-height: 200px;\n display: block;\n border: none;\n outline: none;\n padding: 0px;\n margin-top: 8px;\n margin-bottom: 8px;\n border-radius: 4px;\n }\n\n .gleap-tooltip-arrow {\n position: absolute;\n width: 20px;\n height: 20px;\n }\n\n .gleap-tooltip-arrow svg {\n width: 20px;\n height: 20px;\n object-fit: contain;\n }\n\n .gleap-b-frame {\n width: 100%;\n height: 100%;\n border: none;\n pointer-events: auto;\n padding: 0px;\n margin: 0px;\n }\n\n .gleap-b-shown {\n transition: margin 0.3s ease-out;\n margin-top: var(--gleap-margin-top);\n position: relative;\n z-index: 10000;\n }\n\n .gleap-b-f {\n margin-top: 0px;\n }\n\n .gleap-b {\n display: none;\n position: absolute;\n top: calc(-1 * var(--gleap-margin-top));\n left: 0px;\n width: 100vw;\n height: var(--gleap-margin-top);\n z-index: ${zIndexBase + 99};\n }\n\n @keyframes gleapSlideIn {\n from {\n top: calc(-1 * var(--gleap-margin-top));\n }\n to {\n top: 10px;\n }\n }\n\n .gleap-b-f .gleap-b {\n position: fixed;\n top: 10px;\n animation: gleapSlideIn .25s ease-out forwards;\n max-width: 800px;\n width: calc(100% - 20px);\n left: 50%;\n z-index: ${zIndexBase + 99};\n transform: translateX(-50%);\n border-radius: ${formItemBorderRadius}px;\n overflow: hidden;\n box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.15), 0px 5px 5px rgba(0, 0, 0, 0.05);\n }\n\n .gleap-b-shown .gleap-b {\n display: block;\n }\n\n .gleap-image-view {\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n z-index: ${zIndexBase + 99};\n background-color: ${contrastBackgroundColor}cc;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .gleap-image-view-image {\n width: 90%;\n height: auto;\n max-width: 90%;\n max-height: 90%;\n object-fit: contain;\n }\n\n .gleap-image-view-close {\n position: fixed;\n top: 20px;\n right: 20px;\n width: 32px;\n height: 32px;\n opacity: 0.8;\n z-index: ${zIndexBase + 140};\n box-shadow: 0px 5px 18px rgba(0, 0, 0, 0.16);\n cursor: pointer;\n }\n\n .gleap-image-view-close:hover {\n opacity: 1;\n }\n\n .gleap-image-view-close svg path {\n fill: ${backgroundColor};\n }\n\n [dir=rtl].gleap-frame-container {\n right: auto;\n left: ${buttonX}px;\n bottom: ${61 + buttonY}px;\n }\n\n .gleap-frame-container--loading iframe {\n opacity: 0;\n }\n\n .gleap-frame-container--loading::before {\n content: \" \";\n position: fixed;\n top: 0px;\n left: 0px;\n right: 0px;\n height: 100%;\n max-height: 380px;\n background: linear-gradient(\n 130deg,\n ${headerDarkColor} 0%,\n ${headerColor} 100%\n );\n }\n \n .gleap-frame-container--loading::after {\n content: \" \";\n position: fixed;\n top: 0px;\n left: 0px;\n right: 0px;\n height: 100%;\n height: 100%;\n max-height: 380px;\n background: linear-gradient(\n 180deg,\n transparent 60%,\n ${backgroundColor}1A 70%,\n ${backgroundColor} 100%\n );\n }\n\n .gleap-frame-container--loading-nogradient::before {\n max-height: 340px;\n background: ${headerColor} !important;\n }\n\n .gleap-frame-container--loading-nofade::after {\n display: none !important;\n }\n\n .gleap-frame-container--survey {\n bottom: ${buttonY}px !important;\n }\n\n .gleap-frame-container--extended {\n max-width: 690px !important;\n }\n\n .gleap-frame-container--survey-full {\n position: fixed;\n top: 0 !important;\n left: 0 !important;\n bottom: 0 !important;\n right: 0 !important;\n width: 100vw !important;\n max-width: 100vw !important;\n height: 100vh;\n height: 100dvh !important;\n background-color: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(6px);\n display: flex !important;\n justify-content: center !important;\n align-items: center !important;\n max-height: 100vh;\n max-height: 100dvh !important;\n border-radius: 0 !important;\n animation-name: none !important;\n }\n\n .gleap-frame-container--survey-full .gleap-frame-container-inner {\n max-width: 640px !important;\n width: calc(100% - 24px);\n border-radius: ${containerRadius}px;\n overflow: hidden;\n }\n\n .gleap-frame-container--classic {\n right: ${buttonX}px;\n bottom: ${buttonY}px;\n }\n\n [dir=rtl].gleap-frame-container--classic {\n right: auto;\n left: ${buttonX}px;\n bottom: ${buttonY}px;\n }\n\n .gleap-frame-container--no-button {\n bottom: ${buttonY}px;\n }\n\n [dir=rtl].gleap-frame-container--classic-left {\n bottom: ${buttonY}px;\n }\n\n .gleap-frame-container--classic-left {\n right: auto;\n left: ${buttonX}px;\n bottom: ${buttonY}px;\n }\n\n [dir=rtl].gleap-frame-container--classic-left {\n left: auto;\n right: ${buttonX}px;\n bottom: ${buttonY}px;\n }\n\n .gleap-frame-container--modern-left {\n right: auto;\n left: ${buttonX}px;\n bottom: ${61 + buttonY}px;\n }\n\n [dir=rtl].gleap-frame-container--modern-left {\n left: auto;\n right: ${buttonX}px;\n bottom: ${61 + buttonY}px;\n }\n\n .gleap-frame-container--animate {\n pointer-events: auto !important;\n }\n\n @keyframes gleapFadeInUp {\n from {\n opacity: 0;\n transform: translate3d(0, 100%, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n\n @keyframes gleapFadeInUpMobile {\n from {\n opacity: 0;\n transform: translate3d(0, 10%, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n\n .gleap-notification-container {\n position: fixed;\n bottom: ${bottomInfoOffset}px;\n right: ${buttonX}px;\n z-index: ${zIndexBase + 30};\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n width: 100%;\n max-width: min(340px, 80vw);\n }\n\n .gleap-notification-container--left {\n left: ${4 + buttonX}px;\n right: initial !important;\n }\n\n [dir=rtl].gleap-notification-container {\n left: ${4 + buttonX}px;\n right: initial !important;\n }\n\n [dir=rtl].gleap-notification-container--left {\n left: initial !important;\n right: ${buttonX}px !important;\n align-items: flex-start !important;\n }\n\n .gleap-notification-container--no-button {\n bottom: ${buttonY}px;\n }\n\n .gleap-notification-item {\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n\n .gleap-notification-close {\n border-radius: 100%;\n width: 28px;\n height: 28px;\n background-color: ${subTextColor};\n display: flex;\n justify-content: center;\n align-items: center;\n margin-bottom: 8px;\n cursor: pointer;\n visibility: hidden;\n pointer-events: none;\n }\n\n .gleap-notification-container:hover .gleap-notification-close {\n visibility: visible;\n pointer-events: auto;\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-notification-close {\n visibility: visible;\n pointer-events: auto;\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n }\n\n .gleap-notification-close svg {\n width: 45%;\n height: 45%;\n object-fit: contain;\n fill: ${backgroundColor};\n }\n\n .gleap-notification-item-checklist-container {\n display: flex;\n animation: fadeIn;\n animation-duration: .45s;\n background-color: ${backgroundColor};\n border-radius: ${subTextColor};\n box-sizing: border-box;\n cursor: pointer;\n flex-direction: column;\n overflow: hidden;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ${chatRadius}px;\n margin-bottom: 12px;\n }\n\n .gleap-notification-item-checklist-content {\n align-items: flex-start;\n display: flex;\n flex-direction: column;\n padding: 15px;\n width: 100%;\n width: min(310px, 70vw);\n max-width: min(310px, 70vw);\n }\n\n .gleap-notification-item-checklist-content-title {\n color: ${contrastBackgroundColor};\n font-size: 15px;\n font-weight: 500;\n line-height: 21px;\n margin-bottom: 10px;\n max-width: 100%;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .gleap-notification-item-checklist-content-progress {\n width: 100%;\n height: 8px;\n border-radius: 8px;\n background-color: ${backgroundColorHover};\n }\n\n .gleap-notification-item-checklist-content-progress-inner {\n height: 100%;\n border-radius: 8px;\n background-color: ${primaryColor};\n }\n\n .gleap-notification-item-checklist-content-next {\n color: ${subTextColor};\n font-size: 15px;\n font-weight: normal;\n line-height: 21px;\n margin-top: 10px;\n max-width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: flex;\n align-items: center;\n }\n\n .gleap-notification-item-checklist-content-next svg {\n height: 18px;\n margin-right: 5px;\n width: auto;\n }\n\n .gleap-notification-item-checklist-content-next b {\n font-size: 15px;\n font-weight: normal;\n color: ${contrastBackgroundColor};\n }\n\n .gleap-notification-item-news {\n width: 100%;\n }\n\n .gleap-news-pagination {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 10px;\n width: 100%;\n }\n\n .gleap-news-page-indicator {\n font-size: 12px;\n color: ${subTextColor};\n }\n\n .gleap-news-next-button {\n background-color: ${primaryColor};\n color: ${contrastColor};\n border-radius: ${formItemSmallBorderRadius}px;\n box-sizing: border-box;\n padding: 5px 10px;\n font-size: 14px;\n font-weight: bold;\n line-height: 21px;\n border: none;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: none !important;\n outline: none !important;^\n }\n\n .gleap-notification-item-news-content {\n align-items: flex-start;\n display: flex;\n flex-direction: column;\n padding: 15px;\n }\n\n .gleap-notification-item-news-preview {\n color: ${subTextColor};\n font-size: 14px;\n line-height: 21px;\n font-weight: 400;\n overflow-wrap: break-word;\n word-break: break-word;\n display: block;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .gleap-notification-item-news-sender {\n display: flex;\n align-items: center;\n color: ${subTextColor};\n font-size: 15px;\n line-height: 21px;\n font-weight: 400;\n }\n \n .gleap-notification-item-news-content-title {\n color: ${contrastBackgroundColor};\n font-size: 15px;\n font-weight: 500;\n line-height: 21px;\n margin-bottom: 6px;\n max-width: 100%;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n cursor: pointer;\n }\n\n .gleap-notification-item-news-sender img {\n border-radius: 100%;\n height: 20px;\n margin-right: 8px;\n object-fit: cover;\n width: 20px;\n }\n\n [dir=rtl] .gleap-notification-item-news-sender img {\n margin-left: 8px;\n margin-right: 0px !important;\n }\n\n .gleap-notification-item-news-container {\n display: flex;\n animation: fadeIn;\n animation-duration: .45s;\n background-color: ${backgroundColor};\n border-radius: ${subTextColor};\n box-sizing: border-box;\n flex-direction: column;\n overflow: hidden;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ${chatRadius}px;\n margin-bottom: 12px;\n }\n\n .gleap-notification-item-news-image {\n background-color: ${subTextColor};\n height: 170px;\n max-height: 170px;\n object-fit: cover;\n width: 100%;\n cursor: pointer;\n }\n \n .gleap-notification-item-news-content-title:hover {\n color: ${primaryColor};\n }\n\n .gleap-notification-item {\n display: flex;\n align-items: flex-end;\n cursor: pointer;\n }\n\n .gleap-notification-item img {\n width: 32px;\n height: 32px;\n min-width: 32px;\n border-radius: 100%;\n object-fit: cover;\n margin-right: 8px;\n margin-bottom: 12px;\n cursor: pointer;\n }\n\n [dir=rtl] .gleap-notification-item img {\n margin-left: 8px;\n margin-right: 0px !important;\n }\n\n .gleap-notification-item-container {\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ${chatRadius}px;\n border-bottom-left-radius: 0px;\n padding: 20px;\n background-color: ${backgroundColor};\n margin-bottom: 12px;\n cursor: pointer;\n font-size: 15px;\n line-height: 21px;\n color: ${contrastBackgroundColor};\n position: relative;\n }\n\n .gleap-notification-item-container::after {\n content: \" \";\n position: absolute;\n bottom: 0px;\n width: 0px;\n height: 0px;\n left: -6px;\n border-style: solid;\n border-width: 0px 0px 10px 6px;\n border-color: transparent transparent ${backgroundColor};\n }\n\n .gleap-notification-item-sender {\n color: ${subTextColor};\n line-height: 20px;\n }\n\n .gleap-notification-item-content {\n line-height: 20px;\n color: ${contrastBackgroundColor};\n margin-top: 4px;\n min-width: min(200px, 50vw);\n word-wrap: break-word;\n word-break: break-word;\n }\n\n .gleap-frame-container-inner {\n position: relative;\n width: 100%;\n height: calc(100vh - ${84 + buttonY}px);\n max-height: ${widgetMaxHeight}px;\n }\n\n .gleap-frame-container--survey .gleap-frame-container-inner {\n height: calc(100vh - 40px);\n }\n \n .gleap-frame-container-inner:before {\n content: \" \";\n position: absolute;\n width: 100%;\n height: calc(100% - ${containerRadius}px);\n top: ${containerRadius}px;\n background-color: ${backgroundColor};\n z-index: -1;\n }\n \n .gleap-frame-container iframe {\n height: 100% !important;\n width: 100% !important;\n max-width: 100% !important;\n display: block !important;\n pointer-events: auto !important;\n }\n \n .gleap-frame-container--hidden {\n display: none !important;\n pointer-events: none;\n animation: none !important;\n }\n \n .bb-feedback-button {\n margin: 0px;\n position: fixed;\n bottom: ${buttonY}px;\n right: ${buttonX}px;\n border-radius: 30px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n background-color: transparent;\n color: #000000;\n z-index: ${zIndexBase + 30};\n box-sizing: border-box;\n display: flex;\n align-items: center;\n padding: 0px;\n }\n\n [dir=rtl].bb-feedback-button {\n bottom: ${buttonY}px;\n right: auto;\n left: ${buttonX}px;\n }\n \n .bb-feedback-button--bottomleft {\n bottom: ${buttonY}px;\n right: auto;\n left: ${buttonX}px;\n }\n\n [dir=rtl].bb-feedback-button--bottomleft {\n bottom: ${buttonY}px;\n right: ${buttonX}px;\n left: auto;\n }\n \n .bb-feedback-button--disabled {\n display: none !important;\n }\n\n .bb-feedback-button--hidden {\n display: none !important;\n }\n \n .bb-feedback-button-text {\n padding: 8px 12px;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n background-color: #fff;\n border-radius: 8px;\n box-shadow: 0px 0px 14px 0px rgba(0, 0, 0, 0.15);\n position: relative;\n z-index: 99;\n }\n \n .bb-feedback-button-text:before {\n content: \"\";\n position: absolute;\n box-shadow: rgba(0, 0, 0, 0.04) 6px 6px 5px;\n transform: rotate(315deg);\n bottom: 16px;\n right: -4px;\n border-width: 10px;\n border-style: solid;\n border-color: transparent #fff #fff transparent;\n }\n \n .bb-feedback-button--bottomleft .bb-feedback-button-text:before {\n display: none;\n }\n \n .bb-feedback-button-text:after {\n content: \"\";\n position: absolute;\n bottom: 12px;\n right: 0px;\n background-color: #fff;\n width: 5px;\n height: 30px;\n }\n \n .bb-feedback-button-text-title {\n font-family: sans-serif;\n font-size: 14px;\n color: #666;\n line-height: 18px;\n max-width: 220px;\n }\n \n .bb-feedback-button-text-title b {\n color: #000000;\n font-weight: 600;\n }\n\n .bb-notification-bubble {\n position: absolute;\n top: -5px;\n right: -5px;\n min-width: 12px;\n padding: 0px 4px;\n height: 20px;\n min-width: 20px;\n border-radius: 20px;\n background-color: red;\n color: #fff;\n font-size: 11px;\n font-family: sans-serif;\n text-align: center;\n line-height: 20px;\n }\n\n .bb-notification-bubble--hidden {\n display: none;\n }\n \n .bb-feedback-button-icon {\n width: 48px;\n height: 48px;\n border-radius: 48px;\n background-color: #485bff;\n transition: box-shadow, transform 0.2s ease-in-out;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n position: relative;\n }\n \n .bb-feedback-button-classic {\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n top: 50%;\n right: 0px;\n position: fixed;\n transform: rotate(-90deg) translate(50%, -50%);\n transform-origin: 100% 50%;\n padding: 9px 20px;\n text-align: center;\n background-color: #485bff;\n border-top-left-radius: 8px;\n border-top-right-radius: 8px;\n font-family: sans-serif;\n font-size: 16px;\n color: #fff;\n box-shadow: 0px 0px 14px 0px rgba(0, 0, 0, 0.25);\n }\n\n [dir=rtl].bb-feedback-button .bb-feedback-button-classic {\n top: 50%;\n left: 0px;\n right: auto;\n transform: rotate(90deg) translate(-50%, -100%);\n transform-origin: 0% 0%;\n }\n \n .bb-feedback-button-classic--left {\n top: 50%;\n left: 0px;\n right: auto;\n transform: rotate(90deg) translate(-50%, -100%);\n transform-origin: 0% 0%;\n }\n\n [dir=rtl].bb-feedback-button .bb-feedback-button-classic--left {\n top: 50%;\n right: 0px;\n left: auto;\n transform: rotate(-90deg) translate(50%, -50%);\n transform-origin: 100% 50%;\n }\n \n .bb-feedback-button-classic--bottom {\n top: auto;\n bottom: 0px;\n transform: none;\n right: ${buttonX}px;\n left: auto;\n }\n \n [dir=rtl].bb-feedback-button .bb-feedback-button-classic--bottom {\n top: auto;\n bottom: 0px;\n transform: none;\n left: ${buttonX}px;\n right: auto;\n }\n\n .bb-feedback-button--classic-button-style {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n \n .bb-feedback-button--open.bb-feedback-button--classic-button-style {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: bbFadeOutRight;\n }\n \n .bb-feedback-button .bb-logo-logo {\n position: absolute;\n width: 30px;\n height: 30px;\n top: 9px;\n left: 9px;\n object-fit: contain;\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-name: bbZoomIn;\n }\n \n .bb-feedback-button .bb-logo-arrowdown {\n position: absolute;\n width: 14px;\n height: 14px;\n top: 17px;\n left: 17px;\n object-fit: contain;\n animation-duration: 0.3s;\n animation-fill-mode: both;\n }\n \n .bb-feedback-button .bb-logo-arrowdown {\n animation-name: bbZoomOut;\n }\n \n .bb-feedback-button--open .bb-logo-arrowdown {\n animation-name: bbZoomIn;\n }\n \n .bb-feedback-button--open .bb-logo-logo {\n animation-name: bbZoomOut;\n }\n \n .bb-feedback-button-icon:hover {\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.25), 0px 0px 20px rgba(0, 0, 0, 0.2);\n transform: scale(1.1);\n }\n \n .bb-feedback-button--open .bb-feedback-button-text {\n animation-name: bbFadeOutDown;\n }\n \n .bb-feedback-button--open .bb-feedback-button-icon {\n display: flex;\n }\n \n .bb-capture-svg {\n position: fixed;\n z-index: ${zIndexBase + 14};\n top: 0px;\n left: 0px;\n right: 0px;\n width: 100%;\n height: 100%;\n padding: 0px;\n margin: 0px;\n cursor: crosshair;\n }\n\n .bb-capture-svg--preview {\n cursor: auto !important;\n }\n \n .bb-rec-on-circle {\n animation-name: bbRecIconFade;\n animation-duration: 2s;\n animation-iteration-count: infinite;\n animation-direction: alternate;\n }\n \n .bb-rec-on-cont {\n animation-name: bbRecIconContFade;\n animation-duration: 2s;\n animation-iteration-count: infinite;\n animation-direction: alternate;\n }\n \n .bb-capture-editor-drag-info {\n position: fixed;\n top: -200px;\n left: 0px;\n z-index: ${zIndexBase + 16};\n transition: opacity 0.3s ease-in-out;\n }\n \n .bb-capture-editor-drag-info svg {\n width: 24px;\n height: 24px;\n }\n \n .bb-capture-editor-borderlayer {\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n border: 4px solid ${primaryColor};\n cursor: crosshair;\n z-index: ${zIndexBase + 10};\n box-sizing: border-box;\n pointer-events: none;\n }\n \n .bb-capture-editor-notrecording .bb-capture-editor-borderlayer {\n background-color: rgba(0, 0, 0, 0.8);\n }\n\n .bb-capture-editor-recording .bb-capture-editor-borderlayer {\n border: 4px solid #eb144c !important;\n }\n \n .bb-capture-editor-recording .bb-capture-dismiss {\n display: none;\n }\n \n .bb-capture-editor-item-inactive {\n opacity: 0.3;\n cursor: not-allowed !important;\n }\n \n .bb-capture-editor-notrecording .bb-capture-toolbar-drawingitem {\n opacity: 0.3;\n cursor: not-allowed !important;\n }\n \n .bb-capture-editor-notrecording .bb-capture-editor-drag-info {\n display: none;\n }\n \n .bb-capture-editor-notrecording .bb-capture-svg {\n pointer-events: none !important;\n }\n \n .bb-capture-toolbar {\n position: fixed;\n top: 20px;\n left: 50%;\n transform: translateX(-50%);\n z-index: ${zIndexBase + 18};\n background-color: #fff;\n padding: 5px;\n display: flex;\n align-items: center;\n border-radius: 8px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n transition: opacity 0.3s ease-in-out;\n }\n \n .bb-capture-dismiss {\n position: fixed;\n top: 0px;\n right: 0px;\n z-index: ${zIndexBase + 18};\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n width: 36px;\n height: 36px;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: ${primaryColor};\n border-bottom-left-radius: ${formItemSmallBorderRadius}px;\n }\n\n [dir=rtl] .bb-capture-dismiss {\n top: 0px;\n left: 0px;\n right: auto;\n border-bottom-left-radius: 0px !important;\n border-bottom-right-radius: ${formItemSmallBorderRadius}px;\n }\n \n .bb-capture-dismiss svg path {\n fill: ${contrastColor};\n }\n \n .bb-capture-dismiss svg {\n width: 20px;\n height: 20px;\n object-fit: contain;\n }\n \n .bb-capture-button-next {\n font-family: sans-serif;\n box-sizing: border-box;\n font-weight: 600;\n text-align: center;\n width: auto;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n margin: 0px;\n line-height: 36px;\n padding: 0px 12px;\n font-size: 15px;\n margin-left: 12px;\n }\n\n [dir=rtl].bb-capture-editor .bb-capture-button-next {\n margin-left: auto;\n margin-right: 12px;\n }\n \n .bb-capture-toolbar-item-spacer {\n width: 1px;\n height: 38px;\n min-width: 1px;\n margin: 0px 5px;\n }\n \n .bb-capture-toolbar-item {\n width: 42px;\n height: 38px;\n min-width: 42px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n position: relative;\n margin-right: 5px;\n }\n\n .drag-handle-item {\n cursor: grab !important;\n width: 34px;\n min-width: 34px;\n }\n\n .drag-handle-item svg {\n width: 18px !important;\n height: 18px !important;\n }\n \n .bb-capture-toolbar-item svg {\n width: 23px;\n height: 23px;\n object-fit: contain;\n }\n \n .bb-capture-toolbar-item-selectedcolor {\n border-radius: 100%;\n width: 20px;\n height: 20px;\n background-color: #db4035;\n }\n \n .bb-capture-toolbar-item[data-type=\"undo\"] svg {\n width: 18px;\n height: 18px;\n }\n \n .bb-capture-toolbar-item[data-active=\"true\"] {\n position: relative;\n }\n \n .bb-capture-preview {\n display: none;\n background-color: rgba(0, 0, 0, 0.6);\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n justify-content: center;\n align-items: center;\n z-index: ${zIndexBase + 20};\n }\n \n .bb-capture-preview-inner {\n background-color: #fff;\n padding: 0px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n border-radius: 8px;\n flex-direction: column;\n max-width: 640px;\n width: 100%;\n margin: 20px;\n }\n \n .bb-capture-preview-inner video {\n border-radius: 8px 8px 0px 0px;\n display: block;\n border: 0px;\n outline: none;\n width: 100%;\n max-height: 60vh;\n }\n \n .bb-capture-preview-buttons {\n display: flex;\n justify-content: space-between;\n padding: 14px;\n }\n \n .bb-capture-preview-retrybutton {\n font-family: sans-serif;\n border-radius: 21px;\n box-sizing: border-box;\n padding: 12px 26px;\n font-size: 16px;\n line-height: 19px;\n font-weight: 600;\n text-align: center;\n margin-top: 0px;\n margin-bottom: 0px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-preview-sendbutton {\n font-family: sans-serif;\n border-radius: 21px;\n box-sizing: border-box;\n padding: 12px 26px;\n font-size: 16px;\n line-height: 19px;\n font-weight: 600;\n text-align: center;\n margin-top: 0px;\n margin-bottom: 0px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-preview-retrybutton:hover,\n .bb-capture-preview-sendbutton:hover {\n opacity: 0.9;\n }\n \n .bb-capture-toolbar-item-recording {\n margin-right: 0px;\n }\n \n .bb-capture-toolbar-item-recording svg {\n width: 33px;\n height: 33px;\n }\n \n .bb-capture-toolbar-item-colorpicker {\n position: fixed;\n top: 70px;\n left: 50%;\n transform: translateX(-50%);\n z-index: ${zIndexBase + 18};\n background-color: #fff;\n display: none;\n padding: 10px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n border-radius: 8px;\n }\n \n .bb-capture-toolbar-item-color {\n width: 20px;\n height: 20px;\n border-radius: 100%;\n margin-right: 12px;\n box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.15);\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-toolbar-item-color:hover {\n box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.25);\n }\n \n .bb-capture-toolbar-item-color:last-of-type {\n margin-right: 0px;\n }\n \n [dir=rtl].bb-capture-editor .bb-capture-toolbar-item-color {\n margin-right: auto;\n margin-left: 12px;\n }\n \n [dir=rtl].bb-capture-editor .bb-capture-toolbar-item-color:last-of-type {\n margin-right: auto;\n margin-left: 0px;\n }\n \n .bb-capture-toolbar-item-recording[data-active=\"true\"] svg:first-of-type {\n display: none;\n }\n \n .bb-capture-toolbar-item-recording[data-active=\"true\"] svg:nth-of-type(2) {\n display: block;\n }\n \n .bb-capture-toolbar-item-recording[data-active=\"false\"] svg:first-of-type {\n display: block;\n }\n \n .bb-capture-toolbar-item-recording[data-active=\"false\"] svg:nth-of-type(2) {\n display: none;\n }\n \n .bb-capture-toolbar-item--active {\n background-color: #eee;\n }\n \n .bb-capture-toolbar-item:hover svg {\n opacity: 1;\n }\n \n .bb-capture-toolbar-item--active {\n background-color: #f8f8f8;\n }\n \n .bb-capture-toolbar-item--active svg {\n opacity: 1;\n }\n \n .bb-capture-toolbar-item--inactivecross::before {\n content: \"\";\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n height: 3px;\n width: 26px;\n margin: auto;\n border-radius: 4px;\n background-color: #e80000;\n transform: rotate(45deg);\n }\n \n .bb-capture-toolbar-item--inactivecross svg {\n fill: #eee;\n }\n \n .bb-capture-toolbar-item-timer {\n text-align: left;\n line-height: 32px;\n font-size: 14px;\n font-family: sans-serif;\n margin: 5px;\n min-width: 40px;\n display: none;\n }\n \n .bb-capture-toolbar-item .bb-tooltip {\n background-color: #555;\n color: #fff;\n visibility: hidden;\n font-size: 14px;\n font-family: sans-serif;\n text-align: center;\n padding: 5px 10px;\n position: absolute;\n z-index: 1;\n top: 45px;\n left: 0px;\n transform: translateX(calc(-50% + 21px));\n opacity: 0;\n transition: opacity 0.3s;\n white-space: nowrap;\n }\n \n .bb-capture-toolbar-item .bb-tooltip::after {\n content: \"\";\n position: absolute;\n bottom: 100%;\n left: 50%;\n margin-left: -5px;\n border-width: 5px;\n border-style: solid;\n transform: rotate(180deg);\n border-color: #555 transparent transparent transparent;\n }\n \n .bb-capture-toolbar-item:hover .bb-tooltip {\n visibility: visible;\n opacity: 1;\n }\n \n .bb-capture-options {\n display: none;\n }\n \n .bb-capture-options--active {\n display: flex;\n }\n\n @keyframes bbFadeOutRight {\n from {\n opacity: 1;\n }\n \n to {\n opacity: 0;\n }\n }\n \n @keyframes bbFadeOutDown {\n from {\n opacity: 1;\n }\n \n to {\n opacity: 0;\n transform: translate3d(0, 100%, 0);\n }\n }\n \n @keyframes bbFadeInOpacity {\n from {\n opacity: 0;\n }\n \n to {\n opacity: 1;\n }\n }\n \n @keyframes bbZoomOut {\n from {\n opacity: 1;\n }\n \n 50% {\n opacity: 0;\n transform: scale3d(0.3, 0.3, 0.3);\n }\n \n to {\n opacity: 0;\n }\n }\n \n @keyframes bbZoomIn {\n from {\n opacity: 0;\n transform: scale3d(0.3, 0.3, 0.3);\n }\n \n 50% {\n opacity: 1;\n }\n }\n \n @keyframes bbRecIconContFade {\n 0% {\n fill: #b10802;\n }\n 50% {\n fill: #ff0000;\n }\n 100% {\n fill: #b10802;\n }\n } \n .bb-capture-preview-retrybutton {\n color: ${contrastBackgroundColor};\n border-radius: ${buttonBorderRadius}px;\n background-color: ${backgroundColorHover};\n }\n .bb-capture-preview-retrybutton:hover {\n background-color: ${hoverHoverColor};\n }\n @keyframes bb-suc-fill {\n 100% {\n box-shadow: inset 0px 0px 0px 30px ${primaryColor};\n }\n }\n .bb-capture-toolbar-item-spacer {\n background-color: ${backgroundColorHover};\n }\n .bb-tooltip {\n border-radius: ${formItemBorderRadius}px;\n }\n @keyframes bbRecIconFade {\n 0% {\n fill: transparent;\n }\n 50% {\n fill: ${hoverHoverColor};\n }\n 100% {\n fill: transparent;\n }\n }\n .bb-capture-preview-sendbutton {\n color: ${contrastColor};\n background-color: ${primaryColor};\n border-radius: ${buttonBorderRadius}px;\n }\n .bb-capture-button-next {\n color: ${contrastColor};\n background-color: ${primaryColor};\n border-radius: ${formItemSmallBorderRadius}px;\n }\n .bb-capture-preview-inner {\n background-color: ${backgroundColor};\n border-radius: ${formItemBorderRadius}px;\n }\n .bb-capture-toolbar-item-timer {\n color: ${subTextColor};\n }\n .bb-svg-path {\n fill: ${contrastBackgroundColor};\n }\n .bb-capture-toolbar-item {\n border-radius: ${formItemBorderRadius}px;\n }\n .bb-capture-toolbar {\n background-color: ${backgroundColor};\n border-radius: ${formItemBorderRadius}px;\n }\n .bb-capture-toolbar-item-colorpicker {\n background-color: ${backgroundColor};\n }\n .bb-capture-toolbar-item--active {\n background-color: ${backgroundColorHover};\n }\n .bb-feedback-button-classic {\n border-top-left-radius: ${formItemBorderRadius}px;\n border-top-right-radius: ${formItemBorderRadius}px;\n }\n .bb-logo-logo--default path {\n fill: ${contrastButtonColor};\n }\n .bb-logo-arrowdown {\n fill: ${contrastButtonColor};\n }\n .bb-feedback-button-icon {\n background-color: ${buttonColor};\n }\n .bb-feedback-button-classic {\n background-color: ${buttonColor};\n color: ${contrastButtonColor};\n }\n\n @media only screen and (max-width: 450px) {\n [dir=rtl].gleap-frame-container,\n .gleap-frame-container {\n left: 0px;\n right: 0px;\n width: 100vw;\n max-width: 100vw;\n min-height: 100vh;\n max-height: 100vh;\n min-height: 100dvh !important;\n max-height: 100dvh !important;\n top: 0px;\n bottom: 0px;\n border-radius: 0px;\n animation-name: gleapFadeInUpMobile;\n }\n\n .gleap-frame-container-inner {\n width: 100vw;\n height: 100%;\n }\n\n .gleap-frame-container:not(.gleap-frame-container--survey):not(.gleap-frame-container--survey-full) .gleap-frame-container-inner {\n max-height: calc(var(--glvh, 1vh) * 100) !important;\n }\n\n .gleap-frame-container--survey {\n height: auto !important;\n top: initial !important;\n bottom: 0px !important;\n min-height: initial !important;\n }\n\n .gleap-frame-container--survey .gleap-frame-container-inner {\n height: 100vh !important;\n }\n\n .bb-tooltip {\n display: none !important;\n }\n \n .bb-capture-toolbar-item-colorpicker {\n top: 75px;\n }\n \n .bb-capture-button-next {\n margin-left: auto;\n }\n \n .bb-capture-dismiss {\n display: none;\n }\n \n .bb-capture-toolbar {\n top: 15px;\n right: 15px;\n left: 15px;\n width: auto;\n transform: none;\n }\n\n .bb-capture-editor-drag-info {\n display: none;\n }\n \n .bb-capture-editor-borderlayer {\n border-width: 4px;\n }\n }\n \n @media print {\n .bb-feedback-button {\n display: none !important;\n }\n \n .gleap-frame-container {\n display: none !important;\n }\n }\n\n .gleap-tour-sender {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n margin-bottom: 10px;\n }\n\n .gleap-tour-sender-image {\n width: 32px;\n height: 32px;\n border-radius: 32px;\n margin-right: 10px;\n background-size: cover;\n background-repeat: no-repeat;\n }\n\n .gleap-tour-popover.gleap-tour-popover-post {\n min-width: 550px;\n max-width: 550px;\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-tour-popover.gleap-tour-popover-post {\n min-width: calc(100vw - 40px);\n max-width: calc(100vw - 40px);\n }\n }\n\n .gleap-tour-message,\n .gleap-tour-message p,\n .gleap-tour-message ul {\n color: ${contrastBackgroundColor};\n }\n\n .gleap-tour-message h2 {\n font-weight: 600;\n font-size: 22px;\n }\n\n .gleap-tour-message h3 {\n font-weight: 600;\n font-size: 18px;\n }\n\n .gleap-tour-message p {\n line-height: 1.3;\n margin-bottom: 10px !important;\n margin-top: 10px !important;\n }\n\n .gleap-tour-message ul {\n line-height: 1.3;\n padding-left: 20px;\n margin-top: 10px !important;\n margin-bottom: 10px !important;\n }\n\n .gleap-tour-message {\n max-height: calc(80vh - 100px) !important;\n overflow-y: auto;\n min-width: 270px;\n }\n\n .gleap-tour-message::-webkit-scrollbar {\n width: 5px;\n }\n\n .gleap-tour-message::-webkit-scrollbar-track {\n border-radius: 0px;\n }\n \n .gleap-tour-message::-webkit-scrollbar-thumb {\n background: ${hoverHoverColor}; \n border-radius: 5px;\n }\n\n .gleap-tour-message::-webkit-scrollbar-thumb:hover {\n background: ${subTextColor};\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-tour-message {\n min-width: auto !important;\n }\n }\n\n .gleap-tour-message iframe {\n width: 100%;\n height: 300px;\n margin-top: 10px;\n margin-bottom: 10px;\n border: none;\n outline: none;\n display: block;\n }\n\n .gleap-tour-sender-name {\n font-size: 15px;\n }\n\n .gleap-tour-video {\n width: 100%;\n max-width: 100%;\n }\n\n .gleap-tour-video-svg--fullscreen {\n width: 100% !important;\n height: 100% !important;\n top: 0px !important;\n left: 0px !important;\n right: 0px !important;\n bottom: 0px !important;\n }\n\n .gleap-tour-video--playing .gleap-tour-video-playpause {\n opacity: 0;\n }\n \n .gleap-tour-video--playing:hover .gleap-tour-video-playpause {\n opacity: 1;\n }\n\n .gleap-tour-popover-video-pointer {\n padding: 0px !important;\n border-radius: 8px;\n position: relative;\n background-color: transparent !important;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-footer {\n position: absolute;\n top: 0px;\n left: 20px;\n right: 20px;\n opacity: 0;\n transition: opacity 200ms ease-in-out;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-footer button {\n padding: 5px 12px;\n }\n\n .gleap-tour-popover-video-pointer.gleap-tour-popover-can-close .gleap-tour-popover-footer {\n right: 40px !important;\n }\n\n .gleap-tour-popover-video-pointer:hover .gleap-tour-popover-footer {\n opacity: 1;\n }\n\n .gleap-tour-popover-pointer.gleap-tour-popover-no-sender .gleap-tour-message {\n padding-right: 20px;\n }\n\n .gleap-tour-video video {\n width: 100%;\n max-width: 100%;\n height: auto;\n border: none;\n outline: none;\n display: block;\n border-radius: 8px;\n }\n\n .gleap-admin-collapse-ui {\n z-index: ${zIndexBase + 35};\n cursor: pointer;\n position: fixed;\n bottom: 75px;\n right: 20px;\n width: 32px;\n height: 32px;\n border-radius: 100%;\n background-color: #fff;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: rgba(0, 0, 0, 0.16) 0px 10px 36px 0px, rgba(0, 0, 0, 0.06) 0px 0px 0px 1px;\n }\n\n .gleap-admin-collapse-ui svg {\n width: 20px;\n height: 14px;\n fill: #000 !important;\n }\n\n .gleap-admin-collapse-ui-active {\n bottom: 20px !important;\n }\n\n .gleap-admin-collapse-ui-active svg {\n transform: rotate(180deg);\n }\n\n .gleap-admin-frame-container-active {\n display: none !important;\n }\n\n .gleap-admin-frame-container {\n position: fixed;\n bottom: 0px;\n left: 0px;\n right: 0px;\n width: 100vw;\n z-index: ${zIndexBase + 40};\n }\n\n .gleap-admin-frame {\n width: 100%;\n height: 100% !important;\n border: none;\n outline: none;\n display: block;\n }\n \n .gleap-tour-message .linktype-link {\n display: inline-block !important;\n background-color: transparent !important;\n color: ${buttonColor} !important;\n }\n\n .gleap-tooltip .linktype-button,\n .gleap-tour-message .linktype-button {\n display: inline-block !important;\n border-radius: 5px;\n box-sizing: border-box;\n padding: 10px 20px !important;\n text-decoration: none !important;\n background-color: ${buttonColor} !important;\n color: ${contrastButtonColor} !important;\n }\n\n .gleap-tour-message img {\n width: 100%;\n max-width: 100%;\n min-height: 260px;\n height: auto;\n margin-top: 10px;\n margin-bottom: 10px;\n object-fit: cover;\n }\n\n .gleap-tour-active .gleap-tour-overlay {\n pointer-events: none;\n }\n \n .gleap-tour-active * {\n pointer-events: none;\n }\n \n .gleap-tour-active .gleap-tour-active-element,\n .gleap-tour-active .gleap-tour-active-element *,\n .gleap-tour-popover,\n .gleap-tour-popover * {\n pointer-events: auto;\n }\n \n @keyframes animate-fade-in {\n 0% {\n opacity: 0;\n }\n \n to {\n opacity: 1;\n }\n }\n \n .gleap-tour-fade .gleap-tour-overlay {\n animation: animate-fade-in 200ms ease-in-out;\n }\n \n .gleap-tour-fade .gleap-tour-popover {\n animation: animate-fade-in 200ms;\n }\n\n .gleap-tour-video-playpause {\n position: absolute;\n bottom: 8px;\n left: 8px;\n width: 32px;\n height: 32px;\n padding: 4px;\n background-color: rgba(0,0,0,0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border-radius: 8px;\n transition: opacity 200ms ease-in-out;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-arrow {\n display: none !important;\n }\n\n .gleap-tour-video-playpause svg {\n width: 34px;\n height: auto;\n fill: #fff;\n }\n \n /* Popover styles */\n .gleap-tour-popover {\n all: unset;\n box-sizing: border-box;\n color: #2d2d2d;\n margin: 0;\n padding: 15px;\n border-radius: ${formItemBorderRadius}px;\n min-width: 250px;\n max-width: 300px;\n box-shadow: 0 1px 10px #0006;\n z-index: 1000000000;\n position: fixed;\n top: 0;\n right: 0;\n background-color: #fff;\n }\n \n .gleap-tour-popover * {\n font-family: \"Helvetica Neue\", Inter, ui-sans-serif, \"Apple Color Emoji\", Helvetica, Arial, sans-serif;\n }\n \n .gleap-tour-popover-title {\n font: 19px / normal sans-serif;\n font-weight: 700;\n display: block;\n position: relative;\n line-height: 1.5;\n zoom: 1;\n margin: 0;\n }\n \n .gleap-tour-popover-close-btn {\n all: unset;\n position: absolute;\n top: 5px;\n right: 5px;\n width: 32px;\n height: 32px;\n cursor: pointer;\n font-size: 30px;\n font-weight: 500;\n line-height: 32px;\n color: #d2d2d2;\n z-index: 1;\n text-align: center;\n transition: color;\n transition-duration: 200ms;\n }\n \n .gleap-tour-popover-close-btn:hover,\n .gleap-tour-popover-close-btn:focus {\n color: #2d2d2d;\n }\n \n .gleap-tour-popover-title[style*=\"block\"] + .gleap-tour-popover-description {\n margin-top: 5px;\n }\n \n .gleap-tour-popover-description {\n margin-bottom: 0;\n font: 15px / normal sans-serif;\n line-height: 1.5;\n font-weight: 400;\n zoom: 1;\n }\n \n .gleap-tour-popover-footer {\n margin-top: 15px;\n text-align: right;\n zoom: 1;\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n \n .gleap-tour-popover-progress-text {\n font-size: 13px;\n font-weight: 400;\n color: #727272;\n zoom: 1;\n }\n \n .gleap-tour-popover-footer button {\n background-color: ${primaryColor};\n color: ${contrastColor};\n border-radius: ${formItemSmallBorderRadius}px;\n box-sizing: border-box;\n padding: 10px 20px;\n font-size: 14px;\n font-weight: bold;\n line-height: 21px;\n border: none;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: none !important;\n outline: none !important;\n }\n\n .gleap-tour-popover-prev-btn {\n color: ${contrastBackgroundColor} !important;\n background-color: ${backgroundColorHover} !important;\n margin-right: 3px;\n }\n\n .gleap-tour-popover-prev-btn:hover {\n background-color: ${primaryColor}22 !important;\n color: ${primaryColor} !important;\n }\n \n .gleap-tour-popover-footer .gleap-tour-popover-btn-disabled {\n opacity: 0.5;\n pointer-events: none;\n }\n \n /* Disable the scrolling of parent element if it has an active element*/\n :not(body):has(> .gleap-tour-active-element) {\n overflow: hidden !important;\n }\n \n .gleap-tour-no-interaction, .gleap-tour-no-interaction * {\n pointer-events: none !important;\n }\n \n .gleap-tour-popover-navigation-btns {\n display: flex;\n flex-grow: 1;\n justify-content: flex-end;\n }\n \n .gleap-tour-popover-navigation-btns button + button {\n margin-left: 4px;\n }\n \n .gleap-tour-popover-arrow {\n content: \"\";\n position: absolute;\n border: 5px solid #fff;\n }\n \n .gleap-tour-popover-arrow-side-over {\n display: none;\n }\n \n /** Popover Arrow Sides **/\n .gleap-tour-popover-arrow-side-left {\n left: 100%;\n border-right-color: transparent;\n border-bottom-color: transparent;\n border-top-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-right {\n right: 100%;\n border-left-color: transparent;\n border-bottom-color: transparent;\n border-top-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-top {\n top: 100%;\n border-right-color: transparent;\n border-bottom-color: transparent;\n border-left-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-bottom {\n bottom: 100%;\n border-left-color: transparent;\n border-top-color: transparent;\n border-right-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-center {\n display: none;\n }\n \n /* Left/Start + Right/Start */\n .gleap-tour-popover-arrow-side-left.gleap-tour-popover-arrow-align-start,\n .gleap-tour-popover-arrow-side-right.gleap-tour-popover-arrow-align-start {\n top: 15px;\n }\n \n /* Top/Start + Bottom/Start */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-start,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-start {\n left: 15px;\n }\n \n /* End/Left + End/Right */\n .gleap-tour-popover-arrow-align-end.gleap-tour-popover-arrow-side-left,\n .gleap-tour-popover-arrow-align-end.gleap-tour-popover-arrow-side-right {\n bottom: 15px;\n }\n \n /* Top/End + Bottom/End */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-end,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-end {\n right: 15px;\n }\n \n /* Left/Center + Right/Center */\n .gleap-tour-popover-arrow-side-left.gleap-tour-popover-arrow-align-center,\n .gleap-tour-popover-arrow-side-right.gleap-tour-popover-arrow-align-center {\n top: 50%;\n margin-top: -5px;\n }\n \n /* Top/Center + Bottom/Center */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-center,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-center {\n left: 50%;\n margin-left: -5px;\n }\n \n /* No arrow */\n .gleap-tour-popover-arrow-none {\n display: none;\n } \n\n /* Modal styles */\n .gleap-modal-wrapper {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: ${zIndexBase + 40};\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .gleap-modal-backdrop {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.5);\n z-index: ${zIndexBase + 41};\n }\n\n .gleap-modal {\n position: relative;\n width: 90%;\n max-width: 600px;\n max-height: 90vh;\n z-index: ${zIndexBase + 100};\n background-color: ${backgroundColor};\n border-radius: ${containerRadius}px;\n overflow: hidden;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-name: gleapFadeInUp;\n }\n\n .gleap-modal-frame {\n width: 100%;\n border: none;\n display: block;\n outline: none;\n }\n\n body.gleap-modal-open {\n overflow: hidden;\n }\n\n @keyframes gleapFadeInUp {\n from {\n opacity: 0;\n transform: translate3d(0, 20px, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n `;\n\n const oldNode = document.querySelector(\".gleap-styles\");\n if (oldNode) {\n oldNode.remove();\n }\n const node = document.createElement(\"style\");\n node.innerHTML = colorStyleSheet;\n node.className = \"gleap-styles\";\n document.body.appendChild(node);\n};\n\nexport const loadIcon = function (name, color) {\n if (name === \"button\") {\n return ``;\n }\n\n if (name === \"drag\") {\n return ``;\n }\n\n if (name === \"unmute\") {\n return ``;\n }\n\n if (name === \"mute\") {\n return ``;\n }\n\n if (name === \"replay\") {\n return `\n \n `;\n }\n\n if (name === \"dismiss\") {\n return ``;\n }\n\n if (name === \"blur\") {\n return `\n \n`;\n }\n\n if (name === \"pen\") {\n return `\n \n \n \n \n \n \n \n \n \n \n \n \n`;\n }\n\n if (name === \"rect\") {\n return `\n \n \n \n \n \n \n \n \n \n \n`;\n }\n\n if (name === \"pointer\") {\n return `\n \n `;\n }\n\n if (name === \"clip\") {\n return `\n \n \n \n \n \n`;\n }\n\n if (name === \"mic\") {\n return `\n \n \n \n \n `;\n }\n\n if (name === \"camera\") {\n return `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n`;\n }\n\n if (name === \"recorderon\") {\n return `\n \n \n \n \n \n \n \n \n \n \n \n`;\n }\n\n if (name === \"recorderoff\") {\n return `\n \n \n \n \n \n \n \n \n `;\n }\n\n if (name === \"arrowdown\") {\n return `\n \n `;\n }\n\n if (name === \"arrowleft\") {\n return `\n \n `;\n }\n\n if (name === \"close\") {\n return `\n \n `;\n }\n\n if (name === \"undo\") {\n return `\n \n \n \n \n \n \n \n \n \n `;\n }\n\n if (name === \"circle-dot\") {\n return ``;\n }\n\n if (name === \"circle-question\") {\n return ``;\n }\n\n if (name === \"circle-info\") {\n return ``;\n }\n\n if (name === \"circle-exclamation\") {\n return ``;\n }\n\n if (name === \"circle-up\") {\n return ``;\n }\n\n if (name === \"circle-right\") {\n return ``;\n }\n\n return \"\";\n};\n","class GleapNetworkIntercepter {\n startTimestamp = Date.now();\n requestId = 0;\n requests = {};\n externalRequests = [];\n maxRequests = 30;\n filters = [];\n defaultBlacklist = [\"gleap.io\"];\n blacklist = [];\n initialized = false;\n stopped = false;\n loadAllResources = false;\n\n // GleapNetworkIntercepter singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapNetworkIntercepter();\n }\n return this.instance;\n }\n\n setLoadAllResources(loadAllResources) {\n this.loadAllResources = loadAllResources;\n }\n\n isContentTypeSupported(contentType) {\n if (typeof contentType !== \"string\") {\n return false;\n }\n\n if (contentType === \"\") {\n return true;\n }\n\n contentType = contentType.toLocaleLowerCase();\n\n const supportedContentTypes = [\"text/\", \"xml\", \"json\"];\n for (var i = 0; i < supportedContentTypes.length; i++) {\n if (contentType.includes(supportedContentTypes[i])) {\n return true;\n }\n }\n\n return false;\n }\n\n getRequests() {\n var requests = JSON.parse(JSON.stringify(Object.values(this.requests)));\n\n // Merge external requests into internal requests.\n if (this.externalRequests && this.externalRequests.length > 0) {\n requests = requests.concat(this.externalRequests);\n }\n\n if (this.filters && this.filters.length > 0) {\n // Perform network log filtering.\n for (var i = 0; i < requests.length; i++) {\n var request = requests[i];\n\n // Headers\n if (request && request.request && request.request.headers) {\n for (var j = 0; j < this.filters.length; j++) {\n delete request.request.headers[this.filters[j]];\n }\n }\n\n // Payload\n if (request && request.request && request.request.payload) {\n var payloadObj = request.request.payload;\n try {\n payloadObj = JSON.parse(request.request.payload);\n } catch (e) { }\n\n if (payloadObj) {\n for (var j = 0; j < this.filters.length; j++) {\n delete payloadObj[this.filters[j]];\n }\n request.request.payload = JSON.stringify(payloadObj);\n }\n }\n\n // Response\n if (request && request.response && request.response.responseText) {\n try {\n var data = JSON.parse(request.response.responseText);\n for (var j = 0; j < this.filters.length; j++) {\n delete data[this.filters[j]];\n }\n request.response.responseText = JSON.stringify(data);\n } catch (e) { }\n }\n }\n }\n\n // Get static resources from performance.\n try {\n if (typeof window !== \"undefined\" && window.performance) {\n var resources = window.performance.getEntriesByType(\"resource\");\n for (var i = 0; i < resources.length; i++) {\n var resource = resources[i];\n if (resource && resource.name) {\n if ((this.loadAllResources || [\"xmlhttprequest\", \"fetch\"].indexOf(resource.initiatorType) > -1) && !requests.find(request => request.url === resource.name)) {\n requests.push({\n type: \"RESOURCE\",\n date: new Date(this.startTimestamp + resource.startTime),\n url: resource.name,\n duration: Math.round(resource.duration),\n initiatorType: resource.initiatorType\n });\n }\n }\n }\n }\n } catch (exp) { }\n\n var blacklist = this.blacklist.concat(this.defaultBlacklist);\n if (blacklist && blacklist.length > 0) {\n try {\n requests = requests.filter((request) => {\n for (var i = 0; i < blacklist.length; i++) {\n if (request && request.url && request.url.includes(blacklist[i])) {\n return false;\n }\n }\n return true;\n });\n } catch (exp) { }\n }\n\n return requests;\n }\n\n setMaxRequests(maxRequests) {\n if (maxRequests > 70) {\n maxRequests = 70;\n }\n this.maxRequests = maxRequests;\n }\n\n setStopped(stopped) {\n this.stopped = stopped;\n }\n\n setFilters(filters) {\n this.filters = this.filters.concat(filters ? filters : []);\n }\n\n setBlacklist(blacklist) {\n this.blacklist = this.blacklist.concat(blacklist ? blacklist : []);\n }\n\n cleanRequests() {\n var keys = Object.keys(this.requests);\n if (keys.length > this.maxRequests) {\n var keysToRemove = keys.slice(0, keys.length - this.maxRequests);\n for (var i = 0; i < keysToRemove.length; i++) {\n delete this.requests[keysToRemove[i]];\n }\n }\n }\n\n calcRequestTime(bbRequestId) {\n if (!bbRequestId || !this.requests || !this.requests[bbRequestId]) {\n return;\n }\n\n var startDate = this.requests[bbRequestId][\"date\"];\n if (startDate) {\n this.requests[bbRequestId][\"duration\"] =\n new Date().getTime() - startDate.getTime();\n }\n }\n\n getTextContentSize(text) {\n var size = 0;\n try {\n size = new TextEncoder().encode(text).length;\n } catch (exp) {\n try {\n size = encodeURI(s).split(/%..|./).length - 1;\n } catch (exp) {\n try {\n size = new Blob([text]).size;\n } catch (exp) {\n size = text.length;\n }\n }\n }\n\n const kiloBytes = size / 1024;\n const megaBytes = kiloBytes / 1024;\n return megaBytes;\n }\n\n cleanupContentSize(text) {\n const contentSize = this.getTextContentSize(text);\n if (contentSize > 0.15) {\n return \"\";\n }\n\n return text;\n }\n\n cleanupPayload(payload) {\n if (payload === undefined || payload === null) {\n return \"{}\";\n }\n\n try {\n if (typeof TextDecoder !== undefined && ArrayBuffer.isView(payload)) {\n let value = new TextDecoder().decode(payload);\n return value;\n }\n } catch (exp) { }\n\n return payload;\n }\n\n preparePayload(payload) {\n var payloadText = this.cleanupPayload(payload);\n return this.cleanupContentSize(payloadText);\n }\n\n start() {\n if (this.initialized) {\n return;\n }\n\n this.initialized = true;\n const self = this;\n this.interceptNetworkRequests({\n onFetch: (params, bbRequestId) => {\n if (this.stopped || !bbRequestId || !this.requests) {\n return;\n }\n\n if (\n params.length > 0 &&\n typeof params[0] !== \"undefined\" &&\n typeof params[0].url !== \"undefined\"\n ) {\n this.requests[bbRequestId] = {\n url: params[0].url,\n date: new Date(),\n request: {\n payload: \"\",\n headers:\n typeof params[0].headers !== \"undefined\"\n ? Object.fromEntries(params[0].headers.entries())\n : {},\n },\n type:\n typeof params[0].method !== \"undefined\" ? params[0].method : \"\",\n };\n } else {\n if (params.length >= 2 && params[1]) {\n var method =\n params[1] && params[1].method ? params[1].method : \"GET\";\n this.requests[bbRequestId] = {\n request: {\n payload: self.preparePayload(params[1].body),\n headers: params[1].headers,\n },\n type: method,\n url: params[0],\n date: new Date(),\n };\n } else {\n this.requests[bbRequestId] = {\n url: params[0],\n date: new Date(),\n };\n }\n }\n\n this.cleanRequests();\n },\n onFetchLoad: (req, bbRequestId) => {\n if (\n this.stopped ||\n !bbRequestId ||\n !this.requests ||\n !this.requests[bbRequestId]\n ) {\n return;\n }\n\n try {\n this.requests[bbRequestId][\"success\"] = true;\n this.requests[bbRequestId][\"response\"] = {\n status: req.status,\n statusText: \"\",\n responseText: \"\",\n };\n this.calcRequestTime(bbRequestId);\n } catch (exp) { }\n\n try {\n var contentType = \"\";\n if (req.headers && typeof req.headers.get !== \"undefined\") {\n contentType = req.headers.get(\"content-type\");\n }\n\n if (this.isContentTypeSupported(contentType)) {\n req\n .text()\n .then((responseText) => {\n if (this.requests[bbRequestId]) {\n this.requests[bbRequestId][\"success\"] = true;\n this.requests[bbRequestId][\"response\"] = {\n status: req.status,\n statusText: req.statusText,\n responseText: self.cleanupContentSize(responseText)\n };\n }\n this.calcRequestTime(bbRequestId);\n this.cleanRequests();\n })\n .catch((err) => {\n this.cleanRequests();\n });\n } else {\n if (this.requests[bbRequestId]) {\n this.requests[bbRequestId][\"success\"] = true;\n this.requests[bbRequestId][\"response\"] = {\n status: req.status,\n statusText: req.statusText,\n responseText: \"\",\n };\n }\n this.calcRequestTime(bbRequestId);\n this.cleanRequests();\n }\n } catch (exp) { }\n },\n onFetchFailed: (err, bbRequestId) => {\n if (\n this.stopped ||\n !bbRequestId ||\n !this.requests ||\n !this.requests[bbRequestId]\n ) {\n return;\n }\n\n this.requests[bbRequestId][\"success\"] = false;\n this.calcRequestTime(bbRequestId);\n this.cleanRequests();\n },\n onOpen: (request, args) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.bbRequestId &&\n args.length >= 2 &&\n this.requests\n ) {\n this.requests[request.bbRequestId] = {\n type: args[0],\n url: args[1],\n date: new Date(),\n };\n }\n\n this.cleanRequests();\n },\n onSend: (request, args) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.bbRequestId &&\n this.requests &&\n this.requests[request.bbRequestId]\n ) {\n this.requests[request.bbRequestId][\"request\"] = {\n payload: this.preparePayload(args.length > 0 ? args[0] : \"{}\"),\n headers: request.requestHeaders,\n };\n }\n\n this.cleanRequests();\n },\n onError: (request, args) => {\n if (\n !this.stopped &&\n this.requests &&\n request &&\n request.currentTarget &&\n request.currentTarget.bbRequestId &&\n this.requests[request.currentTarget.bbRequestId]\n ) {\n this.requests[request.currentTarget.bbRequestId][\"success\"] = false;\n this.calcRequestTime(request.bbRequestId);\n }\n\n this.cleanRequests();\n },\n onLoad: (request, args) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.currentTarget &&\n request.currentTarget.bbRequestId &&\n this.requests &&\n this.requests[request.currentTarget.bbRequestId]\n ) {\n var target = request.currentTarget;\n var responseType = target.responseType;\n var responseText = \"<\" + responseType + \">\";\n if (responseType === \"\" || responseType === \"text\") {\n responseText = this.cleanupContentSize(target.responseText);\n }\n\n this.requests[target.bbRequestId][\"success\"] = true;\n this.requests[target.bbRequestId][\"response\"] = {\n status: target.status,\n statusText: target.statusText,\n responseText: responseText,\n };\n\n this.calcRequestTime(target.bbRequestId);\n }\n\n this.cleanRequests();\n },\n });\n }\n\n interceptNetworkRequests(callback) {\n var self = this;\n const open = XMLHttpRequest.prototype.open;\n const send = XMLHttpRequest.prototype.send;\n\n // Only override open and send if they haven't been overridden already.\n if (XMLHttpRequest.prototype.gleapSetRequestHeader === undefined) {\n XMLHttpRequest.prototype.gleapSetRequestHeader =\n XMLHttpRequest.prototype.setRequestHeader;\n }\n\n if (XMLHttpRequest.prototype.gleapSetRequestHeader) {\n XMLHttpRequest.prototype.setRequestHeader = function (header, value) {\n if (!this.requestHeaders) {\n this.requestHeaders = {};\n }\n\n if (this.requestHeaders && this.requestHeaders.hasOwnProperty(header)) {\n return;\n }\n\n if (!this.requestHeaders[header]) {\n this.requestHeaders[header] = [];\n }\n\n this.requestHeaders[header].push(value);\n this.gleapSetRequestHeader(header, value);\n };\n }\n\n XMLHttpRequest.prototype.open = function () {\n this[\"bbRequestId\"] = ++self.requestId;\n callback.onOpen && callback.onOpen(this, arguments);\n if (callback.onLoad) {\n this.addEventListener(\"load\", callback.onLoad.bind(callback));\n }\n if (callback.onError) {\n this.addEventListener(\"error\", callback.onError.bind(callback));\n }\n return open.apply(this, arguments);\n };\n XMLHttpRequest.prototype.send = function () {\n callback.onSend && callback.onSend(this, arguments);\n return send.apply(this, arguments);\n };\n\n if (window.fetch) {\n (function () {\n var originalFetch = window.fetch;\n window.fetch = function () {\n var bbRequestId = ++self.requestId;\n callback.onFetch(arguments, bbRequestId);\n\n return originalFetch\n .apply(this, arguments)\n .then(function (response) {\n if (response && typeof response.clone === \"function\") {\n const data = response.clone();\n callback.onFetchLoad(data, bbRequestId);\n }\n\n return response;\n })\n .catch((err) => {\n callback.onFetchFailed(err, bbRequestId);\n throw err;\n });\n };\n })();\n }\n\n return callback;\n }\n\n blobToTextPromise(blob) {\n return new Promise(function (resolve, reject) {\n var fr = new FileReader();\n fr.onload = function (evt) {\n if (evt && evt.target && evt.target.result) {\n resolve(evt.target.result);\n } else {\n reject();\n }\n };\n fr.onerror = function (err) {\n reject(err);\n };\n fr.readAsText(blob);\n });\n }\n}\n\nexport default GleapNetworkIntercepter;\n","export const resizeImage = (base64Str, maxWidth = 400, maxHeight = 400) => {\n return new Promise((resolve, reject) => {\n var isJPEG = base64Str.indexOf(\"data:image/jpeg\") === 0;\n var img = new Image();\n img.src = base64Str;\n img.onerror = () => {\n reject();\n };\n img.onload = () => {\n var canvas = document.createElement(\"canvas\");\n var MAX_WIDTH = maxWidth;\n var MAX_HEIGHT = maxHeight;\n\n // Adjust max width / height based on image props\n if (maxWidth > img.width / 1.5) {\n MAX_WIDTH = img.width / 1.5;\n }\n\n if (maxHeight > img.height / 1.5) {\n MAX_HEIGHT = img.height / 1.5;\n }\n\n var width = img.width;\n var height = img.height;\n\n if (width > height) {\n if (width > MAX_WIDTH) {\n height *= MAX_WIDTH / width;\n width = MAX_WIDTH;\n }\n } else {\n if (height > MAX_HEIGHT) {\n width *= MAX_HEIGHT / height;\n height = MAX_HEIGHT;\n }\n }\n canvas.width = width;\n canvas.height = height;\n var ctx = canvas.getContext(\"2d\");\n ctx.drawImage(img, 0, 0, width, height);\n\n if (isJPEG) {\n resolve(canvas.toDataURL(\"image/jpeg\", 0.7));\n } else {\n resolve(canvas.toDataURL());\n }\n };\n });\n};\n\nexport const isMobile = () => {\n if (\n /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(\n navigator.userAgent\n ) ||\n /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(\n navigator.userAgent.substr(0, 4)\n )\n ) {\n return true;\n }\n return false;\n};\n\nexport const gleapDataParser = function (data) {\n if (typeof data === \"string\" || data instanceof String) {\n try {\n return JSON.parse(data);\n } catch (e) {\n return {};\n }\n }\n return data;\n};\n\nexport const truncateString = (str, num) => {\n if (str.length > num) {\n return str.slice(0, num) + \"...\";\n } else {\n return str;\n }\n};\n\nconst removeSubDomain = (v) => {\n try {\n var parts = v.split(\".\");\n var is2ndLevelDomain = false;\n const secondLevel = parts[parts.length - 2];\n if (\n secondLevel === \"co\" ||\n secondLevel === \"com\" ||\n secondLevel === \"gv\" ||\n secondLevel === \"ac\" ||\n secondLevel === \"edu\" ||\n secondLevel === \"gov\" ||\n secondLevel === \"mil\" ||\n secondLevel === \"net\" ||\n secondLevel === \"org\"\n ) {\n is2ndLevelDomain = true;\n }\n parts = parts.slice(is2ndLevelDomain ? -3 : -2);\n return parts.join(\".\");\n } catch (exp) {}\n return v;\n};\n\nexport const loadFromGleapCache = (key) => {\n try {\n const cachedData = localStorage.getItem(`gleap-widget-${key}`);\n if (cachedData) {\n const config = JSON.parse(cachedData);\n return config;\n }\n } catch (exp) {}\n return null;\n};\n\nexport const saveToGleapCache = (key, data) => {\n const k = `gleap-widget-${key}`;\n if (data) {\n try {\n localStorage.setItem(k, JSON.stringify(data));\n } catch (exp) {}\n } else {\n localStorage.removeItem(k);\n }\n};\n\nexport const setGleapCookie = (name, value, days) => {\n try {\n var expires = \"\";\n if (days) {\n var date = new Date();\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\n expires = \"; expires=\" + date.toUTCString();\n }\n const host = removeSubDomain(window.location.host.split(\":\")[0]);\n document.cookie =\n name + \"=\" + (value || \"\") + expires + \"; path=/; domain=\" + host;\n } catch (exp) {}\n};\n\nexport const getGleapCookie = (name) => {\n try {\n var nameEQ = name + \"=\";\n var ca = document.cookie.split(\";\");\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n while (c.charAt(0) == \" \") c = c.substring(1, c.length);\n if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);\n }\n } catch (exp) {}\n return null;\n};\n\nexport const eraseGleapCookie = (name) => {\n try {\n const host = removeSubDomain(window.location.host.split(\":\")[0]);\n document.cookie =\n name + \"=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT; Domain=\" + host;\n } catch (exp) {}\n};\n\nexport const getDOMElementDescription = (element, html = true) => {\n var innerText = truncateString(element.innerText || \"\", 40)\n .replace(/(\\r\\n|\\n|\\r)/gm, \"\")\n .replace(/ +(?= )/g, \"\");\n var elementId = \"\";\n var elementClass = \"\";\n if (typeof element.getAttribute !== \"undefined\") {\n const elemId = element.getAttribute(\"id\");\n if (elemId) {\n elementId = ` id=\"${elemId}\"`;\n }\n const elemClass = element.getAttribute(\"class\");\n if (elemClass) {\n elementClass = ` class=\"${elemClass}\"`;\n }\n }\n const elementTag = (element.tagName || \"\").toLowerCase();\n\n var htmlPre = \"<\";\n var htmlPost = \">\";\n if (!html) {\n htmlPre = \"[\";\n htmlPost = \"]\";\n }\n\n return `${htmlPre}${elementTag}${elementId}${elementClass}${htmlPost}${innerText}${htmlPre}/${elementTag}${htmlPost}`;\n};\n\nexport const runFunctionWhenDomIsReady = (callback) => {\n if (\n document.readyState === \"complete\" ||\n document.readyState === \"loaded\" ||\n document.readyState === \"interactive\"\n ) {\n callback();\n } else {\n document.addEventListener(\"DOMContentLoaded\", () => {\n callback();\n });\n }\n};\n\nexport const fixGleapHeight = () => {\n try {\n if (\n \"visualViewport\" in window &&\n /iPad|iPhone|iPod/.test(navigator.userAgent)\n ) {\n let initialHeight = window.innerHeight;\n\n function updateContainerHeight() {\n try {\n const gleapFrameContainer = document.querySelector(\n \".gleap-frame-container-inner iframe\"\n );\n\n if (!gleapFrameContainer) {\n return;\n }\n\n // Check if the keyboard is open\n if (window.visualViewport.height < initialHeight) {\n gleapFrameContainer.style.setProperty(\n \"max-height\",\n window.visualViewport.height + \"px\",\n \"important\"\n );\n } else {\n // Remove the padding bottom\n gleapFrameContainer.style.removeProperty(\"max-height\");\n }\n } catch (error) {}\n }\n\n function handleOrientationChange() {\n try {\n // Update initial dimensions\n initialHeight = window.innerHeight;\n updateContainerHeight();\n } catch (error) {}\n }\n\n // Update on resize (keyboard show/hide and viewport resize)\n window.visualViewport.addEventListener(\"resize\", updateContainerHeight);\n\n // Handle orientation changes\n window.addEventListener(\"orientationchange\", handleOrientationChange);\n\n // Update initially\n updateContainerHeight();\n }\n } catch (error) {}\n};\n","import { GleapSession, GleapTranslationManager } from \"./Gleap\"; // Adjust path if needed\n\n// Enum for request states\nconst RequestStatus = {\n PENDING: \"pending\",\n SUCCESS: \"success\",\n ERROR: \"error\",\n};\n\nclass ChecklistNetworkManager {\n static instance = null;\n\n /** @private {Map>} outboundId -> Promise */\n validationRequests = new Map();\n /** @private {Map} */\n validationCache = new Map(); // Caches final results (success/error)\n\n /** @private {Map>} internalId -> Promise */\n fetchRequests = new Map();\n /** @private {Map} */\n fetchCache = new Map(); // Caches final results (success/error)\n\n // Private constructor for Singleton\n constructor() {\n if (ChecklistNetworkManager.instance) {\n return ChecklistNetworkManager.instance;\n }\n ChecklistNetworkManager.instance = this;\n }\n\n /**\n * Gets the singleton instance of the ChecklistNetworkManager.\n * @returns {ChecklistNetworkManager} The singleton instance.\n */\n static getInstance() {\n if (!ChecklistNetworkManager.instance) {\n ChecklistNetworkManager.instance = new ChecklistNetworkManager();\n }\n return ChecklistNetworkManager.instance;\n }\n\n clearCache() {\n this.validationCache.clear();\n this.fetchCache.clear();\n this.validationRequests.clear();\n this.fetchRequests.clear();\n }\n\n /**\n * @private\n * Gets common query parameters for API requests.\n * @returns {string} Query parameter string.\n */\n _getQueryParams() {\n const gleapSessionInstance = GleapSession.getInstance();\n const session = gleapSessionInstance?.session;\n const lang =\n GleapTranslationManager.getInstance().getActiveLanguage() || \"en\";\n return `gleapId=${session?.gleapId || \"\"}&gleapHash=${\n session?.gleapHash || \"\"\n }&lang=${lang}`;\n }\n\n /**\n * @private\n * Gets the API base URL.\n * @returns {string | null} The API URL or null if not configured.\n */\n _getApiUrl() {\n const gleapSessionInstance = GleapSession.getInstance();\n return gleapSessionInstance?.apiUrl || null;\n }\n\n /**\n * @private\n * Makes an XMLHttpRequest and returns a Promise.\n * @param {string} method - HTTP method.\n * @param {string} url - The request URL.\n * @param {object|null} data - Data to send in the request body.\n * @returns {Promise} Promise resolving with parsed JSON response on success, rejecting on error.\n */\n _makeRequest(method, url, data) {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n xhr.open(method, url);\n\n const gleapSessionInstance = GleapSession.getInstance();\n gleapSessionInstance?.injectSession(xhr); // Inject session headers\n\n if (data) {\n xhr.setRequestHeader(\"Content-Type\", \"application/json;charset=UTF-8\");\n }\n\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n if (xhr.status >= 200 && xhr.status < 300) {\n try {\n // Handle potential empty success responses (e.g., 204)\n const responseData = xhr.responseText\n ? JSON.parse(xhr.responseText)\n : null;\n resolve(responseData);\n } catch (err) {\n reject({\n status: xhr.status,\n statusText: \"JSON Parse Error\",\n responseText: xhr.responseText,\n error: err,\n });\n }\n } else {\n reject({\n status: xhr.status,\n statusText: xhr.statusText,\n responseText: xhr.responseText,\n });\n }\n }\n };\n\n xhr.onerror = () => {\n reject({ status: 0, statusText: \"Network Error\", responseText: null });\n };\n\n xhr.send(data ? JSON.stringify(data) : null);\n });\n }\n\n /**\n * @private\n * Creates a cache key from outboundId and sharedKey\n * @param {string} outboundId - The public/outbound checklist ID.\n * @param {string|undefined} sharedKey - Optional shared key.\n * @returns {string} Combined cache key.\n */\n _createCacheKey(outboundId, sharedKey) {\n return sharedKey ? `${outboundId}::${sharedKey}` : outboundId;\n }\n\n /**\n * Validates an outbound checklist ID, returning a Promise for the internal ID.\n * Manages caching and deduplicates requests.\n * @param {string} outboundId - The public/outbound checklist ID.\n * @param {string} [sharedKey] - Optional shared key for the checklist.\n * @returns {Promise} A promise that resolves with the internal checklist ID.\n */\n validateChecklist(outboundId, sharedKey) {\n const cacheKey = this._createCacheKey(outboundId, sharedKey);\n\n // 1. Check cache for final result (success or error)\n const cachedResult = this.validationCache.get(cacheKey);\n if (cachedResult) {\n if (cachedResult.status === RequestStatus.SUCCESS) {\n return Promise.resolve(cachedResult.internalId);\n } else {\n return Promise.reject(cachedResult.error);\n }\n }\n\n // 2. Check for an ongoing request\n if (this.validationRequests.has(cacheKey)) {\n return this.validationRequests.get(cacheKey);\n }\n\n // 3. Start a new request\n const apiUrl = this._getApiUrl();\n if (!apiUrl) {\n const error = new Error(\n \"ChecklistNetworkManager: Gleap API URL not configured.\"\n );\n this.validationCache.set(cacheKey, {\n status: RequestStatus.ERROR,\n error,\n });\n return Promise.reject(error);\n }\n\n const url = `${apiUrl}/outbound/checklists?${this._getQueryParams()}`;\n const requestPromise = this._makeRequest(\"POST\", url, {\n outboundId,\n sharedKey,\n })\n .then((responseData) => {\n if (responseData && responseData.id) {\n this.validationCache.set(cacheKey, {\n status: RequestStatus.SUCCESS,\n internalId: responseData.id,\n });\n return responseData.id;\n } else {\n const error = new Error(\"Validation response missing checklist ID.\");\n this.validationCache.set(cacheKey, {\n status: RequestStatus.ERROR,\n error: responseData || error,\n });\n throw error; // Rethrow to be caught by catch block\n }\n })\n .catch((error) => {\n // Store the error object itself in the cache\n this.validationCache.set(cacheKey, {\n status: RequestStatus.ERROR,\n error,\n });\n throw error; // Re-throw so callers can catch it\n })\n .finally(() => {\n // Remove from pending requests map once done (success or fail)\n this.validationRequests.delete(cacheKey);\n });\n\n // Store the promise for potential concurrent requests\n this.validationRequests.set(cacheKey, requestPromise);\n return requestPromise;\n }\n\n /**\n * Fetches the full checklist data using the internal ID, returning a Promise.\n * Manages caching and deduplicates requests.\n * @param {string} internalId - The internal checklist ID.\n * @returns {Promise} A promise that resolves with the full checklist data.\n */\n fetchChecklist(internalId) {\n // 1. Check cache for final result (success or error)\n const cachedResult = this.fetchCache.get(internalId);\n if (cachedResult) {\n if (cachedResult.status === RequestStatus.SUCCESS) {\n // Return a deep copy to prevent mutation issues if multiple components use it\n return Promise.resolve(JSON.parse(JSON.stringify(cachedResult.data)));\n } else {\n return Promise.reject(cachedResult.error);\n }\n }\n\n // 2. Check for an ongoing request\n if (this.fetchRequests.has(internalId)) {\n // Return a promise that resolves with a deep copy\n return this.fetchRequests\n .get(internalId)\n .then((data) => JSON.parse(JSON.stringify(data)));\n }\n\n // 3. Start a new request\n const apiUrl = this._getApiUrl();\n if (!apiUrl) {\n const error = new Error(\n \"ChecklistNetworkManager: Gleap API URL not configured.\"\n );\n this.fetchCache.set(internalId, { status: RequestStatus.ERROR, error });\n return Promise.reject(error);\n }\n\n const url = `${apiUrl}/outbound/checklists/${internalId}?convertTipTap=true&${this._getQueryParams()}`;\n const requestPromise = this._makeRequest(\"GET\", url, null)\n .then((responseData) => {\n if (responseData) {\n // Cache the successful data\n this.fetchCache.set(internalId, {\n status: RequestStatus.SUCCESS,\n data: responseData,\n });\n // Return a deep copy of the data\n return JSON.parse(JSON.stringify(responseData));\n } else {\n // Should not happen with successful GET usually, but handle defensively\n const error = new Error(\n \"Empty response received for checklist fetch.\"\n );\n this.fetchCache.set(internalId, {\n status: RequestStatus.ERROR,\n error: responseData || error,\n });\n throw error;\n }\n })\n .catch((error) => {\n this.fetchCache.set(internalId, { status: RequestStatus.ERROR, error });\n throw error; // Re-throw so callers can catch it\n })\n .finally(() => {\n // Remove from pending requests map once done (success or fail)\n this.fetchRequests.delete(internalId);\n });\n\n this.fetchRequests.set(internalId, requestPromise);\n // Return a promise that resolves with a deep copy\n return requestPromise.then((data) => JSON.parse(JSON.stringify(data)));\n }\n}\n\nexport default ChecklistNetworkManager;\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n const lr = ['left', 'right'];\n const rl = ['right', 'left'];\n const tb = ['top', 'bottom'];\n const bt = ['bottom', 'top'];\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rl : lr;\n return isStart ? lr : rl;\n case 'left':\n case 'right':\n return isStart ? tb : bt;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n return {\n ...rect,\n top: rect.y,\n left: rect.x,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n ...rects.floating,\n x,\n y\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n if (!specifiedFallbackPlacements && fallbackAxisSideDirection !== 'none') {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$map$so;\n const placement = (_overflowsData$map$so = overflowsData.map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$map$so[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: 0,\n crossAxis: 0,\n alignmentAxis: null,\n ...rawValue\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = ['top', 'left'].includes(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const overflowAvailableHeight = height - overflow[heightSide];\n const overflowAvailableWidth = width - overflow[widthSide];\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if (isYAxis) {\n const maximumClippingWidth = width - overflow.left - overflow.right;\n availableWidth = alignment || noShift ? min(overflowAvailableWidth, maximumClippingWidth) : maximumClippingWidth;\n } else {\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n availableHeight = alignment || noShift ? min(overflowAvailableHeight, maximumClippingHeight) : maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n // Browsers without `ShadowRoot` support.\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isContainingBlock(element) {\n const webkit = isWebKit();\n const css = getComputedStyle(element);\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n return css.transform !== 'none' || css.perspective !== 'none' || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else {\n currentNode = getParentNode(currentNode);\n }\n }\n return null;\n}\nfunction isWebKit() {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nfunction isLastTraversableNode(node) {\n return ['html', 'body', '#document'].includes(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.pageXOffset,\n scrollTop: element.pageYOffset\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], win.frameElement && traverseIframes ? getOverflowAncestors(win.frameElement) : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isWebKit };\n","import { rectToClientRect, autoPlacement as autoPlacement$1, shift as shift$1, flip as flip$1, size as size$1, hide as hide$1, arrow as arrow$1, inline as inline$1, limitShift as limitShift$1, computePosition as computePosition$1 } from '@floating-ui/core';\nexport { detectOverflow, offset } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement, isElement, getWindow, isWebKit, getDocumentElement, getNodeName, isOverflowElement, getNodeScroll, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = currentWin.frameElement;\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = currentWin.frameElement;\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\nconst topLayerSelectors = [':popover-open', ':modal'];\nfunction isTopLayer(floating) {\n return topLayerSelectors.some(selector => {\n try {\n return floating.matches(selector);\n } catch (e) {\n return false;\n }\n });\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\nfunction getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n ...clippingAncestor,\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n const x = rect.left + scroll.scrollLeft - offsets.x;\n const y = rect.top + scroll.scrollTop - offsets.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n return element.offsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const window = getWindow(element);\n if (!isHTMLElement(element) || isTopLayer(element)) {\n return window;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && !isContainingBlock(offsetParent))) {\n return window;\n }\n return offsetParent || getContainingBlock(element) || window;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n ...(await getDimensionsFn(data.floating))\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const {\n left,\n top,\n width,\n height\n } = element.getBoundingClientRect();\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 100);\n } else {\n refresh(false, ratio);\n }\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle `;\n document.body.appendChild(elem);\n\n this.gleapFrameContainer = elem;\n this.gleapFrame = document.querySelector(\".gleap-frame\");\n\n this.updateFrameStyle();\n\n // Show loading preview for widget app mode.\n if (this.appMode === \"widget\") {\n this.showFrameContainer(true);\n }\n });\n });\n };\n\n showImage = (url) => {\n runFunctionWhenDomIsReady(() => {\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-image-view\";\n elem.innerHTML = `
\n \n
`;\n document.body.appendChild(elem);\n\n const closeElement = () => {\n elem.remove();\n };\n\n const close = elem.querySelector(\".gleap-image-view-close\");\n close.addEventListener(\"click\", () => {\n closeElement();\n });\n\n elem.addEventListener(\"click\", (e) => {\n if (e.target === elem) {\n closeElement();\n }\n });\n });\n };\n\n updateFrameStyle = () => {\n if (!this.gleapFrameContainer) {\n return;\n }\n\n const surveyStyle = \"gleap-frame-container--survey\";\n const extendedStyle = \"gleap-frame-container--extended\";\n const surveyFullStyle = \"gleap-frame-container--survey-full\";\n const classicStyle = \"gleap-frame-container--classic\";\n const classicStyleLeft = \"gleap-frame-container--classic-left\";\n const modernStyleLeft = \"gleap-frame-container--modern-left\";\n const noButtonStyleLeft = \"gleap-frame-container--no-button\";\n const allStyles = [\n classicStyle,\n classicStyleLeft,\n extendedStyle,\n modernStyleLeft,\n noButtonStyleLeft,\n surveyStyle,\n surveyFullStyle,\n ];\n for (let i = 0; i < allStyles.length; i++) {\n this.gleapFrameContainer.classList.remove(allStyles[i]);\n }\n\n var styleToApply = undefined;\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM\n ) {\n styleToApply = classicStyle;\n }\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT\n ) {\n styleToApply = classicStyleLeft;\n }\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_BOTTOM_LEFT\n ) {\n styleToApply = modernStyleLeft;\n }\n if (GleapFeedbackButtonManager.getInstance().buttonHidden === null) {\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_NONE\n ) {\n styleToApply = noButtonStyleLeft;\n }\n } else {\n if (GleapFeedbackButtonManager.getInstance().buttonHidden) {\n styleToApply = noButtonStyleLeft;\n }\n }\n if (styleToApply) {\n this.gleapFrameContainer.classList.add(styleToApply);\n }\n\n if (this.appMode === \"survey\") {\n this.gleapFrameContainer.classList.add(surveyStyle);\n }\n if (this.appMode === \"survey_full\" || this.appMode === \"survey_web\") {\n this.gleapFrameContainer.classList.add(surveyFullStyle);\n }\n if (this.appMode === \"extended\") {\n this.gleapFrameContainer.classList.add(extendedStyle);\n }\n\n this.gleapFrameContainer.setAttribute(\n \"dir\",\n GleapTranslationManager.getInstance().isRTLLayout ? \"rtl\" : \"ltr\"\n );\n };\n\n showFrameContainer(showLoader) {\n if (!this.gleapFrameContainer) {\n return;\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const loadingClass = \"gleap-frame-container--loading\";\n if (this.gleapFrameContainer.classList) {\n this.gleapFrameContainer.classList.remove(\n \"gleap-frame-container--hidden\"\n );\n if (showLoader) {\n this.gleapFrameContainer.classList.add(loadingClass);\n\n if (flowConfig.disableBGFade) {\n this.gleapFrameContainer.classList.add(\n \"gleap-frame-container--loading-nofade\"\n );\n }\n if (flowConfig.disableBGGradient) {\n this.gleapFrameContainer.classList.add(\n \"gleap-frame-container--loading-nogradient\"\n );\n }\n } else {\n this.gleapFrameContainer.classList.remove(loadingClass);\n }\n\n setTimeout(() => {\n this.gleapFrameContainer.classList.add(\n \"gleap-frame-container--animate\"\n );\n }, 500);\n }\n\n this.widgetOpened = true;\n this.updateUI();\n }\n\n runWidgetShouldOpenCallback() {\n if (!this.gleapFrameContainer) {\n return;\n }\n\n this.workThroughQueue();\n\n Gleap.getInstance().setGlobalDataItem(\"snapshotPosition\", {\n x: window.scrollX,\n y: window.scrollY,\n });\n\n this.showFrameContainer(false);\n this.updateWidgetStatus();\n\n GleapEventManager.notifyEvent(\"open\");\n this.registerEscListener();\n }\n\n updateUI() {\n // Clear notifications only when not opening a survey.\n GleapNotificationManager.getInstance().clearAllNotifications(\n this.isSurvey()\n );\n\n GleapFeedbackButtonManager.getInstance().updateNotificationBadge(0);\n GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n }\n\n showWidget() {\n setTimeout(() => {\n if (this.gleapFrameContainer) {\n this.runWidgetShouldOpenCallback();\n } else {\n GleapFrameManager.getInstance().injectFrame();\n }\n this.updateUI();\n }, 0);\n }\n\n updateWidgetStatus() {\n this.sendMessage({\n name: \"widget-status-update\",\n data: {\n isWidgetOpen: this.widgetOpened,\n },\n });\n }\n\n hideMarkerManager() {\n if (this.markerManager) {\n this.markerManager.clear();\n this.markerManager = null;\n }\n }\n\n hideWidget(resetRoutes = false) {\n // Prevent for survey web.\n if (this.appMode === \"survey_web\") {\n return;\n }\n\n this.hideMarkerManager();\n if (this.gleapFrameContainer) {\n this.gleapFrameContainer.classList.add(\"gleap-frame-container--hidden\");\n this.gleapFrameContainer.classList.remove(\n \"gleap-frame-container--animate\"\n );\n }\n if (resetRoutes) {\n this.sendMessage({\n name: \"reset-routes\",\n data: {},\n });\n }\n this.widgetOpened = false;\n this.updateWidgetStatus();\n GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n GleapEventManager.notifyEvent(\"close\");\n GleapNotificationManager.getInstance().reloadNotificationsFromCache();\n\n this.unregisterEscListener();\n\n if (typeof window !== \"undefined\" && typeof window.focus !== \"undefined\") {\n window.focus();\n }\n }\n\n sendMessage(data, queue = false) {\n try {\n this.gleapFrame = document.querySelector(\".gleap-frame\");\n if (this.comReady && this.gleapFrame && this.gleapFrame.contentWindow) {\n this.gleapFrame.contentWindow.postMessage(JSON.stringify(data), \"*\");\n } else {\n if (queue) {\n this.queue.push(data);\n }\n }\n } catch (e) {}\n }\n\n sendSessionUpdate() {\n this.sendMessage({\n name: \"session-update\",\n data: {\n sessionData: GleapSession.getInstance().getSession(),\n apiUrl: GleapSession.getInstance().apiUrl,\n sdkKey: GleapSession.getInstance().sdkKey,\n },\n });\n }\n\n sendConfigUpdate() {\n if (!this.comReady) {\n return;\n }\n\n this.sendMessage({\n name: \"config-update\",\n data: {\n config: GleapConfigManager.getInstance().getFlowConfig(),\n aiTools: GleapConfigManager.getInstance().getAiTools(),\n overrideLanguage:\n GleapTranslationManager.getInstance().getOverrideLanguage(),\n },\n });\n\n this.updateFrameStyle();\n }\n\n showDrawingScreen(type) {\n this.hideWidget();\n\n // Show screen drawing.\n this.markerManager = new GleapMarkerManager(type);\n this.markerManager.show((success) => {\n if (!success) {\n this.hideMarkerManager();\n }\n this.showWidget();\n });\n }\n\n workThroughQueue() {\n const workQueue = [...this.queue];\n this.queue = [];\n for (let i = 0; i < workQueue.length; i++) {\n this.sendMessage(workQueue[i], true);\n }\n }\n\n startCommunication() {\n // Listen for messages.\n this.addMessageListener((data) => {\n if (data.name === \"ping\") {\n this.comReady = true;\n this.sendConfigUpdate();\n this.sendSessionUpdate();\n this.workThroughQueue();\n setTimeout(() => {\n this.runWidgetShouldOpenCallback();\n }, 300);\n }\n\n if (data.name === \"play-ping\") {\n GleapAudioManager.ping();\n }\n\n if (data.name === \"open-image\") {\n this.showImage(data.data.url);\n }\n\n if (data.name === \"page-changed\") {\n if (\n data.data &&\n (data.data.name === \"newsdetails\" || data.data.name === \"appextended\")\n ) {\n this.setAppMode(\"extended\");\n } else {\n if (this.appMode === \"extended\") {\n this.setAppMode(\"widget\");\n }\n }\n }\n\n if (data.name === \"collect-ticket-data\") {\n var ticketData = {\n customData: GleapCustomDataManager.getInstance().getCustomData(),\n metaData: GleapMetaDataManager.getInstance().getMetaData(),\n consoleLog: GleapConsoleLogManager.getInstance().getLogs(),\n networkLogs: GleapNetworkIntercepter.getInstance().getRequests(),\n customEventLog: GleapStreamedEvent.getInstance().getEventArray(),\n formData: GleapCustomDataManager.getInstance().getTicketAttributes(),\n };\n\n // Add tags\n const tags = GleapTagManager.getInstance().getTags();\n if (tags && tags.length > 0) {\n ticketData.tags = tags;\n }\n\n this.sendMessage({\n name: \"collect-ticket-data\",\n data: ticketData,\n });\n }\n\n if (data.name === \"height-update\") {\n this.frameHeight = data.data;\n\n const innerContainer = document.querySelector(\n \".gleap-frame-container-inner\"\n );\n if (\n (this.appMode === \"survey\" ||\n this.appMode === \"survey_full\" ||\n this.appMode === \"survey_web\") &&\n innerContainer\n ) {\n innerContainer.style.maxHeight = `${this.frameHeight}px`;\n }\n }\n\n if (data.name === \"notify-event\") {\n GleapEventManager.notifyEvent(data.data.type, data.data.data);\n }\n\n if (data.name === \"cleanup-drawings\") {\n this.hideMarkerManager();\n }\n\n if (data.name === \"open-url\") {\n const url = data.data;\n const newTab = data.newTab ? true : false;\n this.urlHandler(url, newTab);\n }\n\n if (data.name === \"start-product-tour\") {\n Gleap.startProductTour(data.data?.tourId, true);\n }\n\n if (data.name === \"run-custom-action\") {\n GleapCustomActionManager.triggerCustomAction(data.data, {\n shareToken: data.shareToken,\n });\n }\n\n if (data.name === \"close-widget\") {\n this.hideWidget();\n }\n\n if (data.name === \"tool-execution\") {\n GleapEventManager.notifyEvent(\"tool-execution\", data.data);\n }\n\n if (data.name === \"send-feedback\") {\n const formData = data.data.formData;\n const action = data.data.action;\n const outboundId = data.data.outboundId;\n const spamToken = data.data.spamToken;\n\n const feedback = new GleapFeedback(\n action.feedbackType,\n \"MEDIUM\",\n formData,\n false,\n action.excludeData,\n outboundId,\n spamToken\n );\n feedback\n .sendFeedback()\n .then((feedbackData) => {\n this.sendMessage({\n name: \"feedback-sent\",\n data: feedbackData,\n });\n GleapEventManager.notifyEvent(\"feedback-sent\", formData);\n\n if (outboundId && outboundId.length > 0) {\n GleapEventManager.notifyEvent(\"outbound-sent\", {\n outboundId: outboundId,\n outbound: action,\n formData: formData,\n });\n\n try {\n delete formData.reportedBy;\n } catch (e) {}\n Gleap.trackEvent(`outbound-${outboundId}-submitted`, formData);\n }\n })\n .catch((error) => {\n this.sendMessage({\n name: \"feedback-sending-failed\",\n data: \"Something went wrong, please try again.\",\n });\n GleapEventManager.notifyEvent(\"error-while-sending\");\n });\n }\n\n if (data.name === \"start-screen-drawing\") {\n this.showDrawingScreen(data.data);\n }\n });\n\n // Add window message listener.\n window.addEventListener(\"message\", (event) => {\n if (\n event.origin !== this.frameUrl &&\n event.origin !== GleapBannerManager.getInstance().bannerUrl\n ) {\n return;\n }\n\n try {\n const data = JSON.parse(event.data);\n for (var i = 0; i < this.listeners.length; i++) {\n if (this.listeners[i]) {\n this.listeners[i](data);\n }\n }\n } catch (exp) {}\n });\n }\n\n addMessageListener(callback) {\n this.listeners.push(callback);\n }\n}\n","import { isMobile } from \"./GleapHelper\";\n\nexport default class GleapMetaDataManager {\n sessionStart = new Date();\n appBuildNumber = \"\";\n appVersionCode = \"\";\n environment = \"prod\";\n\n // GleapMetaDataManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapMetaDataManager();\n }\n return this.instance;\n }\n\n /**\n * Sets the app version code.\n * @param {string} appVersionCode\n */\n static setAppVersionCode(appVersionCode) {\n this.getInstance().appVersionCode = appVersionCode;\n }\n\n /**\n * Sets the app version code.\n * @param {string} appVersionCode\n */\n static setAppBuildNumber(appBuildNumber) {\n this.getInstance().appBuildNumber = appBuildNumber;\n }\n\n getSessionDuration() {\n const now = new Date();\n return Math.round((now.getTime() - this.sessionStart.getTime()) / 1000);\n }\n\n getMetaData() {\n var nAgt = navigator.userAgent;\n var browserName = navigator.appName;\n var fullVersion = \"\" + parseFloat(navigator.appVersion);\n var majorVersion = parseInt(navigator.appVersion, 10);\n var nameOffset, verOffset, ix;\n\n // In Opera, the true version is after \"Opera\" or after \"Version\"\n if ((verOffset = nAgt.indexOf(\"Opera\")) !== -1) {\n browserName = \"Opera\";\n fullVersion = nAgt.substring(verOffset + 6);\n if ((verOffset = nAgt.indexOf(\"Version\")) !== -1)\n fullVersion = nAgt.substring(verOffset + 8);\n }\n // In MSIE, the true version is after \"MSIE\" in userAgent\n else if ((verOffset = nAgt.indexOf(\"MSIE\")) !== -1) {\n browserName = \"Microsoft Internet Explorer\";\n fullVersion = nAgt.substring(verOffset + 5);\n }\n // In Chrome, the true version is after \"Chrome\"\n else if ((verOffset = nAgt.indexOf(\"Chrome\")) !== -1) {\n browserName = \"Chrome\";\n fullVersion = nAgt.substring(verOffset + 7);\n }\n // In Safari, the true version is after \"Safari\" or after \"Version\"\n else if ((verOffset = nAgt.indexOf(\"Safari\")) !== -1) {\n browserName = \"Safari\";\n fullVersion = nAgt.substring(verOffset + 7);\n if ((verOffset = nAgt.indexOf(\"Version\")) !== -1)\n fullVersion = nAgt.substring(verOffset + 8);\n }\n // In Firefox, the true version is after \"Firefox\"\n else if ((verOffset = nAgt.indexOf(\"Firefox\")) !== -1) {\n browserName = \"Firefox\";\n fullVersion = nAgt.substring(verOffset + 8);\n }\n // In most other browsers, \"name/version\" is at the end of userAgent\n else if (\n (nameOffset = nAgt.lastIndexOf(\" \") + 1) <\n (verOffset = nAgt.lastIndexOf(\"/\"))\n ) {\n browserName = nAgt.substring(nameOffset, verOffset);\n fullVersion = nAgt.substring(verOffset + 1);\n if (browserName.toLowerCase() === browserName.toUpperCase()) {\n browserName = navigator.appName;\n }\n }\n // trim the fullVersion string at semicolon/space if present\n if ((ix = fullVersion.indexOf(\";\")) !== -1)\n fullVersion = fullVersion.substring(0, ix);\n if ((ix = fullVersion.indexOf(\" \")) !== -1)\n fullVersion = fullVersion.substring(0, ix);\n\n majorVersion = parseInt(\"\" + fullVersion, 10);\n if (isNaN(majorVersion)) {\n fullVersion = \"\" + parseFloat(navigator.appVersion);\n majorVersion = parseInt(navigator.appVersion, 10);\n }\n\n var OSName = \"Unknown OS\";\n if (navigator.appVersion.indexOf(\"Win\") !== -1) OSName = \"Windows\";\n if (navigator.appVersion.indexOf(\"Mac\") !== -1) OSName = \"MacOS\";\n if (navigator.appVersion.indexOf(\"X11\") !== -1) OSName = \"UNIX\";\n if (navigator.appVersion.indexOf(\"Linux\") !== -1) OSName = \"Linux\";\n if (navigator.appVersion.indexOf(\"iPad\") !== -1) OSName = \"iPad\";\n if (navigator.appVersion.indexOf(\"iPhone\") !== -1) OSName = \"iPhone\";\n if (navigator.appVersion.indexOf(\"Android\") !== -1) OSName = \"Android\";\n\n return {\n browserName: browserName + \"(\" + fullVersion + \")\",\n userAgent: nAgt,\n browser: browserName,\n systemName: OSName,\n buildVersionNumber: this.appBuildNumber,\n releaseVersionNumber: this.appVersionCode,\n sessionDuration: this.getSessionDuration(),\n devicePixelRatio: window.devicePixelRatio,\n screenWidth: window.screen.width,\n screenHeight: window.screen.height,\n innerWidth: window.innerWidth,\n innerHeight: window.innerHeight,\n currentUrl: window.location.href,\n language: navigator.language || navigator.userLanguage,\n mobile: isMobile(),\n sdkVersion: SDK_VERSION,\n sdkType: \"javascript\",\n environment: this.environment,\n };\n }\n}\n","import { truncateString } from \"./GleapHelper\";\n\nexport default class GleapConsoleLogManager {\n logArray = [];\n disabled = false;\n originalConsoleLog;\n logMaxLength = 500;\n\n // GleapConsoleLogManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapConsoleLogManager();\n }\n return this.instance;\n }\n\n /**\n * Return the console logs\n * @returns {any[]} logs\n */\n getLogs() {\n return this.logArray;\n }\n\n /**\n * Revert console log overwrite.\n */\n stop() {\n this.disabled = true;\n if (this.originalConsoleLog) {\n window.console = this.originalConsoleLog;\n }\n }\n\n /**\n * Add message with log level to logs.\n * @param {*} message\n * @param {*} logLevel\n * @returns\n */\n addLog(message, logLevel = \"INFO\") {\n if (!message || message.length <= 0) {\n return;\n }\n\n this.logArray.push({\n log: truncateString(message, 1000),\n date: new Date(),\n priority: logLevel,\n });\n\n if (this.logArray.length > this.logMaxLength) {\n this.logArray.shift();\n }\n }\n\n /**\n * Add entry to logs.\n * @param {*} args\n * @param {*} logLevel\n * @returns\n */\n addLogWithArgs(args, logLevel) {\n if (!args || args.length <= 0) {\n return;\n }\n\n var log = \"\";\n try {\n for (var i = 0; i < args.length; i++) {\n log += args[i] + \" \";\n }\n } catch (exp) {}\n\n this.addLog(log, logLevel);\n }\n\n /**\n * Start console log overwrite.\n */\n start() {\n if (this.disabled) {\n return;\n }\n\n const self = this;\n window.console = (function (origConsole) {\n if (!window.console || !origConsole) {\n origConsole = {};\n }\n\n self.originalConsoleLog = origConsole;\n\n return {\n ...origConsole,\n log: function () {\n self.addLogWithArgs(arguments, \"INFO\");\n origConsole.log && origConsole.log.apply(origConsole, arguments);\n },\n warn: function () {\n self.addLogWithArgs(arguments, \"WARNING\");\n origConsole.warn && origConsole.warn.apply(origConsole, arguments);\n },\n error: function () {\n self.addLogWithArgs(arguments, \"ERROR\");\n origConsole.error && origConsole.error.apply(origConsole, arguments);\n },\n info: function (v) {\n self.addLogWithArgs(arguments, \"INFO\");\n origConsole.info && origConsole.info.apply(origConsole, arguments);\n },\n };\n })(window.console);\n }\n}\n","import { GleapConsoleLogManager, GleapFrameManager, handleGleapLink } from \"./Gleap\";\nimport { getDOMElementDescription } from \"./GleapHelper\";\n\nexport default class GleapClickListener {\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapClickListener();\n }\n return this.instance;\n }\n\n start() {\n document.addEventListener(\"click\", (e) => {\n if (!e.target) {\n return;\n }\n\n if (e.target.tagName === 'A' && e.target.protocol === 'gleap:') {\n e.preventDefault();\n\n const href = e.target.href;\n handleGleapLink(href);\n }\n\n if (!GleapFrameManager.getInstance().isOpened()) {\n GleapConsoleLogManager.getInstance().addLog(\n getDOMElementDescription(e.target),\n \"CLICK\"\n );\n }\n });\n }\n}\n","import { gleapDataParser } from \"./GleapHelper\";\n\nexport default class GleapCustomDataManager {\n customData = {};\n ticketAttributes = {};\n\n // GleapCustomDataManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapCustomDataManager();\n }\n return this.instance;\n }\n\n /**\n * Returns the custom data object\n * @returns {*}\n */\n getCustomData() {\n return this.customData;\n }\n\n /**\n * Set custom data that will be attached to the bug-report.\n * @param {*} data\n */\n attachCustomData(data) {\n this.customData = Object.assign(\n this.customData,\n gleapDataParser(data)\n );\n }\n\n /**\n * Add one key value pair to the custom data object\n * @param {*} key The key of the custom data entry you want to add.\n * @param {*} value The custom data you want to add.\n */\n setCustomData(key, value) {\n this.customData[key] = value;\n }\n\n /**\n * Remove one key value pair of the custom data object\n * @param {*} key The key of the custom data entry you want to remove.\n */\n removeCustomData(key) {\n delete this.customData[key];\n }\n\n /**\n * Clear the custom data\n */\n clearCustomData() {\n this.customData = {};\n }\n\n /**\n * This method is used to set ticket attributes programmatically.\n * @param {*} key The key of the attribute you want to add.\n * @param {*} value The value to set.\n */\n setTicketAttribute(key, value) {\n this.ticketAttributes[key] = value;\n }\n\n /**\n * This method is used to unset ticket attributes programmatically.\n * @param {*} key The key of the attribute you want to unset.\n */\n unsetTicketAttribute(key) {\n delete this.ticketAttributes[key];\n }\n\n /**\n * This method is used to clear ticket attributes programmatically.\n */\n clearTicketAttributes() {\n this.ticketAttributes = {};\n }\n\n getTicketAttributes() {\n return this.ticketAttributes;\n }\n}\n","import Gleap from \"./Gleap\";\n\nexport default class GleapEventManager {\n eventListeners = {};\n\n // GleapEventManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapEventManager();\n }\n return this.instance;\n }\n\n /**\n * Notify all registrants for event.\n */\n static notifyEvent(event, data = {}) {\n if (event === \"flow-started\") {\n\n const gleapInstance = Gleap.getInstance();\n gleapInstance.setGlobalDataItem(\"webReplay\", null);\n gleapInstance.setGlobalDataItem(\"screenRecordingData\", null);\n gleapInstance.takeCurrentReplay();\n }\n\n const eventListeners = this.getInstance().eventListeners[event];\n if (eventListeners) {\n for (var i = 0; i < eventListeners.length; i++) {\n const eventListener = eventListeners[i];\n if (eventListener) {\n eventListener(data);\n }\n }\n }\n }\n\n /**\n * Register events for Gleap.\n * @param {*} eventName\n * @param {*} callback\n */\n static on(eventName, callback) {\n const instance = this.getInstance();\n if (!instance.eventListeners[eventName]) {\n instance.eventListeners[eventName] = [];\n }\n instance.eventListeners[eventName].push(callback);\n }\n}\n","export default class GleapCustomActionManager {\n customActionCallbacks = [];\n\n // GleapCustomActionManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapCustomActionManager();\n }\n return this.instance;\n }\n\n /**\n * Register custom action\n */\n static registerCustomAction(customAction) {\n const instance = this.getInstance();\n if (instance.customActionCallbacks) {\n instance.customActionCallbacks.push(customAction);\n }\n }\n\n /**\n * Triggers a custom action\n */\n static triggerCustomAction(name, data) {\n const instance = this.getInstance();\n if (instance.customActionCallbacks) {\n for (var i = 0; i < instance.customActionCallbacks.length; i++) {\n var callback = instance.customActionCallbacks[i];\n if (callback) {\n callback({\n name,\n ...(data ? data : {}),\n });\n }\n }\n }\n }\n}\n","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar _a;\nvar __defProp$1 = Object.defineProperty;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$1 = (obj, key, value) => __defNormalProp$1(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar NodeType$3 = /* @__PURE__ */ ((NodeType2) => {\n NodeType2[NodeType2[\"Document\"] = 0] = \"Document\";\n NodeType2[NodeType2[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType2[NodeType2[\"Element\"] = 2] = \"Element\";\n NodeType2[NodeType2[\"Text\"] = 3] = \"Text\";\n NodeType2[NodeType2[\"CDATA\"] = 4] = \"CDATA\";\n NodeType2[NodeType2[\"Comment\"] = 5] = \"Comment\";\n return NodeType2;\n})(NodeType$3 || {});\nconst testableAccessors$1 = {\n Node: [\"childNodes\", \"parentNode\", \"parentElement\", \"textContent\"],\n ShadowRoot: [\"host\", \"styleSheets\"],\n Element: [\"shadowRoot\", \"querySelector\", \"querySelectorAll\"],\n MutationObserver: []\n};\nconst testableMethods$1 = {\n Node: [\"contains\", \"getRootNode\"],\n ShadowRoot: [\"getSelection\"],\n Element: [],\n MutationObserver: [\"constructor\"]\n};\nconst untaintedBasePrototype$1 = {};\nconst isAngularZonePresent$1 = () => {\n return !!globalThis.Zone;\n};\nfunction getUntaintedPrototype$1(key) {\n if (untaintedBasePrototype$1[key])\n return untaintedBasePrototype$1[key];\n const defaultObj = globalThis[key];\n const defaultPrototype = defaultObj.prototype;\n const accessorNames = key in testableAccessors$1 ? testableAccessors$1[key] : void 0;\n const isUntaintedAccessors = Boolean(\n accessorNames && // @ts-expect-error 2345\n accessorNames.every(\n (accessor) => {\n var _a2, _b;\n return Boolean(\n (_b = (_a2 = Object.getOwnPropertyDescriptor(defaultPrototype, accessor)) == null ? void 0 : _a2.get) == null ? void 0 : _b.toString().includes(\"[native code]\")\n );\n }\n )\n );\n const methodNames = key in testableMethods$1 ? testableMethods$1[key] : void 0;\n const isUntaintedMethods = Boolean(\n methodNames && methodNames.every(\n // @ts-expect-error 2345\n (method) => {\n var _a2;\n return typeof defaultPrototype[method] === \"function\" && ((_a2 = defaultPrototype[method]) == null ? void 0 : _a2.toString().includes(\"[native code]\"));\n }\n )\n );\n if (isUntaintedAccessors && isUntaintedMethods && !isAngularZonePresent$1()) {\n untaintedBasePrototype$1[key] = defaultObj.prototype;\n return defaultObj.prototype;\n }\n try {\n const iframeEl = document.createElement(\"iframe\");\n document.body.appendChild(iframeEl);\n const win = iframeEl.contentWindow;\n if (!win) return defaultObj.prototype;\n const untaintedObject = win[key].prototype;\n document.body.removeChild(iframeEl);\n if (!untaintedObject) return defaultPrototype;\n return untaintedBasePrototype$1[key] = untaintedObject;\n } catch {\n return defaultPrototype;\n }\n}\nconst untaintedAccessorCache$1 = {};\nfunction getUntaintedAccessor$1(key, instance, accessor) {\n var _a2;\n const cacheKey = `${key}.${String(accessor)}`;\n if (untaintedAccessorCache$1[cacheKey])\n return untaintedAccessorCache$1[cacheKey].call(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype$1(key);\n const untaintedAccessor = (_a2 = Object.getOwnPropertyDescriptor(\n untaintedPrototype,\n accessor\n )) == null ? void 0 : _a2.get;\n if (!untaintedAccessor) return instance[accessor];\n untaintedAccessorCache$1[cacheKey] = untaintedAccessor;\n return untaintedAccessor.call(instance);\n}\nconst untaintedMethodCache$1 = {};\nfunction getUntaintedMethod$1(key, instance, method) {\n const cacheKey = `${key}.${String(method)}`;\n if (untaintedMethodCache$1[cacheKey])\n return untaintedMethodCache$1[cacheKey].bind(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype$1(key);\n const untaintedMethod = untaintedPrototype[method];\n if (typeof untaintedMethod !== \"function\") return instance[method];\n untaintedMethodCache$1[cacheKey] = untaintedMethod;\n return untaintedMethod.bind(instance);\n}\nfunction childNodes$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"childNodes\");\n}\nfunction parentNode$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"parentNode\");\n}\nfunction parentElement$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"parentElement\");\n}\nfunction textContent$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"textContent\");\n}\nfunction contains$1(n2, other) {\n return getUntaintedMethod$1(\"Node\", n2, \"contains\")(other);\n}\nfunction getRootNode$1(n2) {\n return getUntaintedMethod$1(\"Node\", n2, \"getRootNode\")();\n}\nfunction host$1(n2) {\n if (!n2 || !(\"host\" in n2)) return null;\n return getUntaintedAccessor$1(\"ShadowRoot\", n2, \"host\");\n}\nfunction styleSheets$1(n2) {\n return n2.styleSheets;\n}\nfunction shadowRoot$1(n2) {\n if (!n2 || !(\"shadowRoot\" in n2)) return null;\n return getUntaintedAccessor$1(\"Element\", n2, \"shadowRoot\");\n}\nfunction querySelector$1(n2, selectors) {\n return getUntaintedAccessor$1(\"Element\", n2, \"querySelector\")(selectors);\n}\nfunction querySelectorAll$1(n2, selectors) {\n return getUntaintedAccessor$1(\"Element\", n2, \"querySelectorAll\")(selectors);\n}\nfunction mutationObserverCtor$1() {\n return getUntaintedPrototype$1(\"MutationObserver\").constructor;\n}\nconst index$1 = {\n childNodes: childNodes$1,\n parentNode: parentNode$1,\n parentElement: parentElement$1,\n textContent: textContent$1,\n contains: contains$1,\n getRootNode: getRootNode$1,\n host: host$1,\n styleSheets: styleSheets$1,\n shadowRoot: shadowRoot$1,\n querySelector: querySelector$1,\n querySelectorAll: querySelectorAll$1,\n mutationObserver: mutationObserverCtor$1\n};\nfunction isElement(n2) {\n return n2.nodeType === n2.ELEMENT_NODE;\n}\nfunction isShadowRoot(n2) {\n const hostEl = (\n // anchor and textarea elements also have a `host` property\n // but only shadow roots have a `mode` property\n n2 && \"host\" in n2 && \"mode\" in n2 && index$1.host(n2) || null\n );\n return Boolean(\n hostEl && \"shadowRoot\" in hostEl && index$1.shadowRoot(hostEl) === n2\n );\n}\nfunction isNativeShadowDom(shadowRoot2) {\n return Object.prototype.toString.call(shadowRoot2) === \"[object ShadowRoot]\";\n}\nfunction fixBrowserCompatibilityIssuesInCSS(cssText) {\n if (cssText.includes(\" background-clip: text;\") && !cssText.includes(\" -webkit-background-clip: text;\")) {\n cssText = cssText.replace(\n /\\sbackground-clip:\\s*text;/g,\n \" -webkit-background-clip: text; background-clip: text;\"\n );\n }\n return cssText;\n}\nfunction escapeImportStatement(rule2) {\n const { cssText } = rule2;\n if (cssText.split('\"').length < 3) return cssText;\n const statement = [\"@import\", `url(${JSON.stringify(rule2.href)})`];\n if (rule2.layerName === \"\") {\n statement.push(`layer`);\n } else if (rule2.layerName) {\n statement.push(`layer(${rule2.layerName})`);\n }\n if (rule2.supportsText) {\n statement.push(`supports(${rule2.supportsText})`);\n }\n if (rule2.media.length) {\n statement.push(rule2.media.mediaText);\n }\n return statement.join(\" \") + \";\";\n}\nfunction stringifyStylesheet(s2) {\n try {\n const rules2 = s2.rules || s2.cssRules;\n if (!rules2) {\n return null;\n }\n let sheetHref = s2.href;\n if (!sheetHref && s2.ownerNode && s2.ownerNode.ownerDocument) {\n sheetHref = s2.ownerNode.ownerDocument.location.href;\n }\n const stringifiedRules = Array.from(\n rules2,\n (rule2) => stringifyRule(rule2, sheetHref)\n ).join(\"\");\n return fixBrowserCompatibilityIssuesInCSS(stringifiedRules);\n } catch (error) {\n return null;\n }\n}\nfunction stringifyRule(rule2, sheetHref) {\n if (isCSSImportRule(rule2)) {\n let importStringified;\n try {\n importStringified = // for same-origin stylesheets,\n // we can access the imported stylesheet rules directly\n stringifyStylesheet(rule2.styleSheet) || // work around browser issues with the raw string `@import url(...)` statement\n escapeImportStatement(rule2);\n } catch (error) {\n importStringified = rule2.cssText;\n }\n if (rule2.styleSheet.href) {\n return absolutifyURLs(importStringified, rule2.styleSheet.href);\n }\n return importStringified;\n } else {\n let ruleStringified = rule2.cssText;\n if (isCSSStyleRule(rule2) && rule2.selectorText.includes(\":\")) {\n ruleStringified = fixSafariColons(ruleStringified);\n }\n if (sheetHref) {\n return absolutifyURLs(ruleStringified, sheetHref);\n }\n return ruleStringified;\n }\n}\nfunction fixSafariColons(cssStringified) {\n const regex = /(\\[(?:[\\w-]+)[^\\\\])(:(?:[\\w-]+)\\])/gm;\n return cssStringified.replace(regex, \"$1\\\\$2\");\n}\nfunction isCSSImportRule(rule2) {\n return \"styleSheet\" in rule2;\n}\nfunction isCSSStyleRule(rule2) {\n return \"selectorText\" in rule2;\n}\nclass Mirror {\n constructor() {\n __publicField$1(this, \"idNodeMap\", /* @__PURE__ */ new Map());\n __publicField$1(this, \"nodeMetaMap\", /* @__PURE__ */ new WeakMap());\n }\n getId(n2) {\n var _a2;\n if (!n2) return -1;\n const id = (_a2 = this.getMeta(n2)) == null ? void 0 : _a2.id;\n return id ?? -1;\n }\n getNode(id) {\n return this.idNodeMap.get(id) || null;\n }\n getIds() {\n return Array.from(this.idNodeMap.keys());\n }\n getMeta(n2) {\n return this.nodeMetaMap.get(n2) || null;\n }\n // removes the node from idNodeMap\n // doesn't remove the node from nodeMetaMap\n removeNodeFromMap(n2) {\n const id = this.getId(n2);\n this.idNodeMap.delete(id);\n if (n2.childNodes) {\n n2.childNodes.forEach(\n (childNode) => this.removeNodeFromMap(childNode)\n );\n }\n }\n has(id) {\n return this.idNodeMap.has(id);\n }\n hasNode(node2) {\n return this.nodeMetaMap.has(node2);\n }\n add(n2, meta) {\n const id = meta.id;\n this.idNodeMap.set(id, n2);\n this.nodeMetaMap.set(n2, meta);\n }\n replace(id, n2) {\n const oldNode = this.getNode(id);\n if (oldNode) {\n const meta = this.nodeMetaMap.get(oldNode);\n if (meta) this.nodeMetaMap.set(n2, meta);\n }\n this.idNodeMap.set(id, n2);\n }\n reset() {\n this.idNodeMap = /* @__PURE__ */ new Map();\n this.nodeMetaMap = /* @__PURE__ */ new WeakMap();\n }\n}\nfunction createMirror$2() {\n return new Mirror();\n}\nfunction maskInputValue({\n element,\n maskInputOptions,\n tagName,\n type,\n value,\n maskInputFn\n}) {\n let text = value || \"\";\n const actualType = type && toLowerCase(type);\n if (maskInputOptions[tagName.toLowerCase()] || actualType && maskInputOptions[actualType]) {\n if (maskInputFn) {\n text = maskInputFn(text, element);\n } else {\n text = \"*\".repeat(text.length);\n }\n }\n return text;\n}\nfunction toLowerCase(str) {\n return str.toLowerCase();\n}\nconst ORIGINAL_ATTRIBUTE_NAME = \"__rrweb_original__\";\nfunction is2DCanvasBlank(canvas) {\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) return true;\n const chunkSize = 50;\n for (let x2 = 0; x2 < canvas.width; x2 += chunkSize) {\n for (let y = 0; y < canvas.height; y += chunkSize) {\n const getImageData = ctx.getImageData;\n const originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData ? getImageData[ORIGINAL_ATTRIBUTE_NAME] : getImageData;\n const pixelBuffer = new Uint32Array(\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n originalGetImageData.call(\n ctx,\n x2,\n y,\n Math.min(chunkSize, canvas.width - x2),\n Math.min(chunkSize, canvas.height - y)\n ).data.buffer\n );\n if (pixelBuffer.some((pixel) => pixel !== 0)) return false;\n }\n }\n return true;\n}\nfunction getInputType(element) {\n const type = element.type;\n return element.hasAttribute(\"data-rr-is-password\") ? \"password\" : type ? (\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n toLowerCase(type)\n ) : null;\n}\nfunction extractFileExtension(path, baseURL) {\n let url;\n try {\n url = new URL(path, baseURL ?? window.location.href);\n } catch (err) {\n return null;\n }\n const regex = /\\.([0-9a-z]+)(?:$)/i;\n const match = url.pathname.match(regex);\n return (match == null ? void 0 : match[1]) ?? null;\n}\nfunction extractOrigin(url) {\n let origin = \"\";\n if (url.indexOf(\"//\") > -1) {\n origin = url.split(\"/\").slice(0, 3).join(\"/\");\n } else {\n origin = url.split(\"/\")[0];\n }\n origin = origin.split(\"?\")[0];\n return origin;\n}\nconst URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\nconst URL_PROTOCOL_MATCH = /^(?:[a-z+]+:)?\\/\\//i;\nconst URL_WWW_MATCH = /^www\\..*/i;\nconst DATA_URI = /^(data:)([^,]*),(.*)/i;\nfunction absolutifyURLs(cssText, href) {\n return (cssText || \"\").replace(\n URL_IN_CSS_REF,\n (origin, quote1, path1, quote2, path2, path3) => {\n const filePath = path1 || path2 || path3;\n const maybeQuote = quote1 || quote2 || \"\";\n if (!filePath) {\n return origin;\n }\n if (URL_PROTOCOL_MATCH.test(filePath) || URL_WWW_MATCH.test(filePath)) {\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\n }\n if (DATA_URI.test(filePath)) {\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\n }\n if (filePath[0] === \"/\") {\n return `url(${maybeQuote}${extractOrigin(href) + filePath}${maybeQuote})`;\n }\n const stack = href.split(\"/\");\n const parts = filePath.split(\"/\");\n stack.pop();\n for (const part of parts) {\n if (part === \".\") {\n continue;\n } else if (part === \"..\") {\n stack.pop();\n } else {\n stack.push(part);\n }\n }\n return `url(${maybeQuote}${stack.join(\"/\")}${maybeQuote})`;\n }\n );\n}\nfunction normalizeCssString(cssText) {\n return cssText.replace(/(\\/\\*[^*]*\\*\\/)|[\\s;]/g, \"\");\n}\nfunction splitCssText(cssText, style) {\n const childNodes2 = Array.from(style.childNodes);\n const splits = [];\n if (childNodes2.length > 1 && cssText && typeof cssText === \"string\") {\n const cssTextNorm = normalizeCssString(cssText);\n for (let i2 = 1; i2 < childNodes2.length; i2++) {\n if (childNodes2[i2].textContent && typeof childNodes2[i2].textContent === \"string\") {\n const textContentNorm = normalizeCssString(childNodes2[i2].textContent);\n for (let j = 3; j < textContentNorm.length; j++) {\n const bit = textContentNorm.substring(0, j);\n if (cssTextNorm.split(bit).length === 2) {\n const splitNorm = cssTextNorm.indexOf(bit);\n for (let k = splitNorm; k < cssText.length; k++) {\n if (normalizeCssString(cssText.substring(0, k)).length === splitNorm) {\n splits.push(cssText.substring(0, k));\n cssText = cssText.substring(k);\n break;\n }\n }\n break;\n }\n }\n }\n }\n }\n splits.push(cssText);\n return splits;\n}\nfunction markCssSplits(cssText, style) {\n return splitCssText(cssText, style).join(\"/* rr_split */\");\n}\nlet _id = 1;\nconst tagNameRegex = new RegExp(\"[^a-z0-9-_:]\");\nconst IGNORED_NODE = -2;\nfunction genId() {\n return _id++;\n}\nfunction getValidTagName$1(element) {\n if (element instanceof HTMLFormElement) {\n return \"form\";\n }\n const processedTagName = toLowerCase(element.tagName);\n if (tagNameRegex.test(processedTagName)) {\n return \"div\";\n }\n return processedTagName;\n}\nlet canvasService;\nlet canvasCtx;\nconst SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\nconst SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\n if (attributeValue.trim() === \"\") {\n return attributeValue;\n }\n let pos = 0;\n function collectCharacters(regEx) {\n let chars2;\n const match = regEx.exec(attributeValue.substring(pos));\n if (match) {\n chars2 = match[0];\n pos += chars2.length;\n return chars2;\n }\n return \"\";\n }\n const output = [];\n while (true) {\n collectCharacters(SRCSET_COMMAS_OR_SPACES);\n if (pos >= attributeValue.length) {\n break;\n }\n let url = collectCharacters(SRCSET_NOT_SPACES);\n if (url.slice(-1) === \",\") {\n url = absoluteToDoc(doc, url.substring(0, url.length - 1));\n output.push(url);\n } else {\n let descriptorsStr = \"\";\n url = absoluteToDoc(doc, url);\n let inParens = false;\n while (true) {\n const c2 = attributeValue.charAt(pos);\n if (c2 === \"\") {\n output.push((url + descriptorsStr).trim());\n break;\n } else if (!inParens) {\n if (c2 === \",\") {\n pos += 1;\n output.push((url + descriptorsStr).trim());\n break;\n } else if (c2 === \"(\") {\n inParens = true;\n }\n } else {\n if (c2 === \")\") {\n inParens = false;\n }\n }\n descriptorsStr += c2;\n pos += 1;\n }\n }\n }\n return output.join(\", \");\n}\nconst cachedDocument = /* @__PURE__ */ new WeakMap();\nfunction absoluteToDoc(doc, attributeValue) {\n if (!attributeValue || attributeValue.trim() === \"\") {\n return attributeValue;\n }\n return getHref(doc, attributeValue);\n}\nfunction isSVGElement(el) {\n return Boolean(el.tagName === \"svg\" || el.ownerSVGElement);\n}\nfunction getHref(doc, customHref) {\n let a2 = cachedDocument.get(doc);\n if (!a2) {\n a2 = doc.createElement(\"a\");\n cachedDocument.set(doc, a2);\n }\n if (!customHref) {\n customHref = \"\";\n } else if (customHref.startsWith(\"blob:\") || customHref.startsWith(\"data:\")) {\n return customHref;\n }\n a2.setAttribute(\"href\", customHref);\n return a2.href;\n}\nfunction transformAttribute(doc, tagName, name, value) {\n if (!value) {\n return value;\n }\n if (name === \"src\" || name === \"href\" && !(tagName === \"use\" && value[0] === \"#\")) {\n return absoluteToDoc(doc, value);\n } else if (name === \"xlink:href\" && value[0] !== \"#\") {\n return absoluteToDoc(doc, value);\n } else if (name === \"background\" && (tagName === \"table\" || tagName === \"td\" || tagName === \"th\")) {\n return absoluteToDoc(doc, value);\n } else if (name === \"srcset\") {\n return getAbsoluteSrcsetString(doc, value);\n } else if (name === \"style\") {\n return absolutifyURLs(value, getHref(doc));\n } else if (tagName === \"object\" && name === \"data\") {\n return absoluteToDoc(doc, value);\n }\n return value;\n}\nfunction ignoreAttribute(tagName, name, _value) {\n return (tagName === \"video\" || tagName === \"audio\") && name === \"autoplay\";\n}\nfunction _isBlockedElement(element, blockClass, blockSelector) {\n try {\n if (typeof blockClass === \"string\") {\n if (element.classList.contains(blockClass)) {\n return true;\n }\n } else {\n for (let eIndex = element.classList.length; eIndex--; ) {\n const className = element.classList[eIndex];\n if (blockClass.test(className)) {\n return true;\n }\n }\n }\n if (blockSelector) {\n return element.matches(blockSelector);\n }\n } catch (e2) {\n }\n return false;\n}\nfunction classMatchesRegex(node2, regex, checkAncestors) {\n if (!node2) return false;\n if (node2.nodeType !== node2.ELEMENT_NODE) {\n if (!checkAncestors) return false;\n return classMatchesRegex(index$1.parentNode(node2), regex, checkAncestors);\n }\n for (let eIndex = node2.classList.length; eIndex--; ) {\n const className = node2.classList[eIndex];\n if (regex.test(className)) {\n return true;\n }\n }\n if (!checkAncestors) return false;\n return classMatchesRegex(index$1.parentNode(node2), regex, checkAncestors);\n}\nfunction needMaskingText(node2, maskTextClass, maskTextSelector, checkAncestors) {\n let el;\n if (isElement(node2)) {\n el = node2;\n if (!index$1.childNodes(el).length) {\n return false;\n }\n } else if (index$1.parentElement(node2) === null) {\n return false;\n } else {\n el = index$1.parentElement(node2);\n }\n try {\n if (typeof maskTextClass === \"string\") {\n if (checkAncestors) {\n if (el.closest(`.${maskTextClass}`)) return true;\n } else {\n if (el.classList.contains(maskTextClass)) return true;\n }\n } else {\n if (classMatchesRegex(el, maskTextClass, checkAncestors)) return true;\n }\n if (maskTextSelector) {\n if (checkAncestors) {\n if (el.closest(maskTextSelector)) return true;\n } else {\n if (el.matches(maskTextSelector)) return true;\n }\n }\n } catch (e2) {\n }\n return false;\n}\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\n const win = iframeEl.contentWindow;\n if (!win) {\n return;\n }\n let fired = false;\n let readyState;\n try {\n readyState = win.document.readyState;\n } catch (error) {\n return;\n }\n if (readyState !== \"complete\") {\n const timer = setTimeout(() => {\n if (!fired) {\n listener();\n fired = true;\n }\n }, iframeLoadTimeout);\n iframeEl.addEventListener(\"load\", () => {\n clearTimeout(timer);\n fired = true;\n listener();\n });\n return;\n }\n const blankUrl = \"about:blank\";\n if (win.location.href !== blankUrl || iframeEl.src === blankUrl || iframeEl.src === \"\") {\n setTimeout(listener, 0);\n return iframeEl.addEventListener(\"load\", listener);\n }\n iframeEl.addEventListener(\"load\", listener);\n}\nfunction onceStylesheetLoaded(link, listener, styleSheetLoadTimeout) {\n let fired = false;\n let styleSheetLoaded;\n try {\n styleSheetLoaded = link.sheet;\n } catch (error) {\n return;\n }\n if (styleSheetLoaded) return;\n const timer = setTimeout(() => {\n if (!fired) {\n listener();\n fired = true;\n }\n }, styleSheetLoadTimeout);\n link.addEventListener(\"load\", () => {\n clearTimeout(timer);\n fired = true;\n listener();\n });\n}\nfunction serializeNode(n2, options) {\n const {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n inlineStylesheet,\n maskInputOptions = {},\n maskTextFn,\n maskInputFn,\n dataURLOptions = {},\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement = false,\n cssCaptured = false\n } = options;\n const rootId = getRootId(doc, mirror2);\n switch (n2.nodeType) {\n case n2.DOCUMENT_NODE:\n if (n2.compatMode !== \"CSS1Compat\") {\n return {\n type: NodeType$3.Document,\n childNodes: [],\n compatMode: n2.compatMode\n // probably \"BackCompat\"\n };\n } else {\n return {\n type: NodeType$3.Document,\n childNodes: []\n };\n }\n case n2.DOCUMENT_TYPE_NODE:\n return {\n type: NodeType$3.DocumentType,\n name: n2.name,\n publicId: n2.publicId,\n systemId: n2.systemId,\n rootId\n };\n case n2.ELEMENT_NODE:\n return serializeElementNode(n2, {\n doc,\n blockClass,\n blockSelector,\n inlineStylesheet,\n maskInputOptions,\n maskInputFn,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement,\n rootId\n });\n case n2.TEXT_NODE:\n return serializeTextNode(n2, {\n doc,\n needsMask,\n maskTextFn,\n rootId,\n cssCaptured\n });\n case n2.CDATA_SECTION_NODE:\n return {\n type: NodeType$3.CDATA,\n textContent: \"\",\n rootId\n };\n case n2.COMMENT_NODE:\n return {\n type: NodeType$3.Comment,\n textContent: index$1.textContent(n2) || \"\",\n rootId\n };\n default:\n return false;\n }\n}\nfunction getRootId(doc, mirror2) {\n if (!mirror2.hasNode(doc)) return void 0;\n const docId = mirror2.getId(doc);\n return docId === 1 ? void 0 : docId;\n}\nfunction serializeTextNode(n2, options) {\n const { needsMask, maskTextFn, rootId, cssCaptured } = options;\n const parent = index$1.parentNode(n2);\n const parentTagName = parent && parent.tagName;\n let textContent2 = \"\";\n const isStyle = parentTagName === \"STYLE\" ? true : void 0;\n const isScript = parentTagName === \"SCRIPT\" ? true : void 0;\n if (isScript) {\n textContent2 = \"SCRIPT_PLACEHOLDER\";\n } else if (!cssCaptured) {\n textContent2 = index$1.textContent(n2);\n if (isStyle && textContent2) {\n textContent2 = absolutifyURLs(textContent2, getHref(options.doc));\n }\n }\n if (!isStyle && !isScript && textContent2 && needsMask) {\n textContent2 = maskTextFn ? maskTextFn(textContent2, index$1.parentElement(n2)) : textContent2.replace(/[\\S]/g, \"*\");\n }\n return {\n type: NodeType$3.Text,\n textContent: textContent2 || \"\",\n rootId\n };\n}\nfunction serializeElementNode(n2, options) {\n const {\n doc,\n blockClass,\n blockSelector,\n inlineStylesheet,\n maskInputOptions = {},\n maskInputFn,\n dataURLOptions = {},\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement = false,\n rootId\n } = options;\n const needBlock = _isBlockedElement(n2, blockClass, blockSelector);\n const tagName = getValidTagName$1(n2);\n let attributes = {};\n const len = n2.attributes.length;\n for (let i2 = 0; i2 < len; i2++) {\n const attr = n2.attributes[i2];\n if (!ignoreAttribute(tagName, attr.name, attr.value)) {\n attributes[attr.name] = transformAttribute(\n doc,\n tagName,\n toLowerCase(attr.name),\n attr.value\n );\n }\n }\n if (tagName === \"link\" && inlineStylesheet) {\n const stylesheet = Array.from(doc.styleSheets).find((s2) => {\n return s2.href === n2.href;\n });\n let cssText = null;\n if (stylesheet) {\n cssText = stringifyStylesheet(stylesheet);\n }\n if (cssText) {\n delete attributes.rel;\n delete attributes.href;\n attributes._cssText = cssText;\n }\n }\n if (tagName === \"style\" && n2.sheet) {\n let cssText = stringifyStylesheet(\n n2.sheet\n );\n if (cssText) {\n if (n2.childNodes.length > 1) {\n cssText = markCssSplits(cssText, n2);\n }\n attributes._cssText = cssText;\n }\n }\n if (tagName === \"input\" || tagName === \"textarea\" || tagName === \"select\") {\n const value = n2.value;\n const checked = n2.checked;\n if (attributes.type !== \"radio\" && attributes.type !== \"checkbox\" && attributes.type !== \"submit\" && attributes.type !== \"button\" && value) {\n attributes.value = maskInputValue({\n element: n2,\n type: getInputType(n2),\n tagName,\n value,\n maskInputOptions,\n maskInputFn\n });\n } else if (checked) {\n attributes.checked = checked;\n }\n }\n if (tagName === \"option\") {\n if (n2.selected && !maskInputOptions[\"select\"]) {\n attributes.selected = true;\n } else {\n delete attributes.selected;\n }\n }\n if (tagName === \"dialog\" && n2.open) {\n attributes.rr_open_mode = n2.matches(\"dialog:modal\") ? \"modal\" : \"non-modal\";\n }\n if (tagName === \"canvas\" && recordCanvas) {\n if (n2.__context === \"2d\") {\n if (!is2DCanvasBlank(n2)) {\n attributes.rr_dataURL = n2.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n }\n } else if (!(\"__context\" in n2)) {\n const canvasDataURL = n2.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n const blankCanvas = doc.createElement(\"canvas\");\n blankCanvas.width = n2.width;\n blankCanvas.height = n2.height;\n const blankCanvasDataURL = blankCanvas.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n if (canvasDataURL !== blankCanvasDataURL) {\n attributes.rr_dataURL = canvasDataURL;\n }\n }\n }\n if (tagName === \"img\" && inlineImages) {\n if (!canvasService) {\n canvasService = doc.createElement(\"canvas\");\n canvasCtx = canvasService.getContext(\"2d\");\n }\n const image = n2;\n const imageSrc = image.currentSrc || image.getAttribute(\"src\") || \"\";\n const priorCrossOrigin = image.crossOrigin;\n const recordInlineImage = () => {\n image.removeEventListener(\"load\", recordInlineImage);\n try {\n canvasService.width = image.naturalWidth;\n canvasService.height = image.naturalHeight;\n canvasCtx.drawImage(image, 0, 0);\n attributes.rr_dataURL = canvasService.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n } catch (err) {\n if (image.crossOrigin !== \"anonymous\") {\n image.crossOrigin = \"anonymous\";\n if (image.complete && image.naturalWidth !== 0)\n recordInlineImage();\n else image.addEventListener(\"load\", recordInlineImage);\n return;\n } else {\n console.warn(\n `Cannot inline img src=${imageSrc}! Error: ${err}`\n );\n }\n }\n if (image.crossOrigin === \"anonymous\") {\n priorCrossOrigin ? attributes.crossOrigin = priorCrossOrigin : image.removeAttribute(\"crossorigin\");\n }\n };\n if (image.complete && image.naturalWidth !== 0) recordInlineImage();\n else image.addEventListener(\"load\", recordInlineImage);\n }\n if (tagName === \"audio\" || tagName === \"video\") {\n const mediaAttributes = attributes;\n mediaAttributes.rr_mediaState = n2.paused ? \"paused\" : \"played\";\n mediaAttributes.rr_mediaCurrentTime = n2.currentTime;\n mediaAttributes.rr_mediaPlaybackRate = n2.playbackRate;\n mediaAttributes.rr_mediaMuted = n2.muted;\n mediaAttributes.rr_mediaLoop = n2.loop;\n mediaAttributes.rr_mediaVolume = n2.volume;\n }\n if (!newlyAddedElement) {\n if (n2.scrollLeft) {\n attributes.rr_scrollLeft = n2.scrollLeft;\n }\n if (n2.scrollTop) {\n attributes.rr_scrollTop = n2.scrollTop;\n }\n }\n if (needBlock) {\n const { width, height } = n2.getBoundingClientRect();\n attributes = {\n class: attributes.class,\n rr_width: `${width}px`,\n rr_height: `${height}px`\n };\n }\n if (tagName === \"iframe\" && !keepIframeSrcFn(attributes.src)) {\n if (!n2.contentDocument) {\n attributes.rr_src = attributes.src;\n }\n delete attributes.src;\n }\n let isCustomElement;\n try {\n if (customElements.get(tagName)) isCustomElement = true;\n } catch (e2) {\n }\n return {\n type: NodeType$3.Element,\n tagName,\n attributes,\n childNodes: [],\n isSVG: isSVGElement(n2) || void 0,\n needBlock,\n rootId,\n isCustom: isCustomElement\n };\n}\nfunction lowerIfExists(maybeAttr) {\n if (maybeAttr === void 0 || maybeAttr === null) {\n return \"\";\n } else {\n return maybeAttr.toLowerCase();\n }\n}\nfunction slimDOMExcluded(sn, slimDOMOptions) {\n if (slimDOMOptions.comment && sn.type === NodeType$3.Comment) {\n return true;\n } else if (sn.type === NodeType$3.Element) {\n if (slimDOMOptions.script && // script tag\n (sn.tagName === \"script\" || // (module)preload link\n sn.tagName === \"link\" && (sn.attributes.rel === \"preload\" || sn.attributes.rel === \"modulepreload\") && sn.attributes.as === \"script\" || // prefetch link\n sn.tagName === \"link\" && sn.attributes.rel === \"prefetch\" && typeof sn.attributes.href === \"string\" && extractFileExtension(sn.attributes.href) === \"js\")) {\n return true;\n } else if (slimDOMOptions.headFavicon && (sn.tagName === \"link\" && sn.attributes.rel === \"shortcut icon\" || sn.tagName === \"meta\" && (lowerIfExists(sn.attributes.name).match(\n /^msapplication-tile(image|color)$/\n ) || lowerIfExists(sn.attributes.name) === \"application-name\" || lowerIfExists(sn.attributes.rel) === \"icon\" || lowerIfExists(sn.attributes.rel) === \"apple-touch-icon\" || lowerIfExists(sn.attributes.rel) === \"shortcut icon\"))) {\n return true;\n } else if (sn.tagName === \"meta\") {\n if (slimDOMOptions.headMetaDescKeywords && lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\n return true;\n } else if (slimDOMOptions.headMetaSocial && (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) || // og = opengraph (facebook)\n lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) || lowerIfExists(sn.attributes.name) === \"pinterest\")) {\n return true;\n } else if (slimDOMOptions.headMetaRobots && (lowerIfExists(sn.attributes.name) === \"robots\" || lowerIfExists(sn.attributes.name) === \"googlebot\" || lowerIfExists(sn.attributes.name) === \"bingbot\")) {\n return true;\n } else if (slimDOMOptions.headMetaHttpEquiv && sn.attributes[\"http-equiv\"] !== void 0) {\n return true;\n } else if (slimDOMOptions.headMetaAuthorship && (lowerIfExists(sn.attributes.name) === \"author\" || lowerIfExists(sn.attributes.name) === \"generator\" || lowerIfExists(sn.attributes.name) === \"framework\" || lowerIfExists(sn.attributes.name) === \"publisher\" || lowerIfExists(sn.attributes.name) === \"progid\" || lowerIfExists(sn.attributes.property).match(/^article:/) || lowerIfExists(sn.attributes.property).match(/^product:/))) {\n return true;\n } else if (slimDOMOptions.headMetaVerification && (lowerIfExists(sn.attributes.name) === \"google-site-verification\" || lowerIfExists(sn.attributes.name) === \"yandex-verification\" || lowerIfExists(sn.attributes.name) === \"csrf-token\" || lowerIfExists(sn.attributes.name) === \"p:domain_verify\" || lowerIfExists(sn.attributes.name) === \"verify-v1\" || lowerIfExists(sn.attributes.name) === \"verification\" || lowerIfExists(sn.attributes.name) === \"shopify-checkout-api-token\")) {\n return true;\n }\n }\n }\n return false;\n}\nfunction serializeNodeWithId(n2, options) {\n const {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n skipChild = false,\n inlineStylesheet = true,\n maskInputOptions = {},\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions = {},\n inlineImages = false,\n recordCanvas = false,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout = 5e3,\n onStylesheetLoad,\n stylesheetLoadTimeout = 5e3,\n keepIframeSrcFn = () => false,\n newlyAddedElement = false,\n cssCaptured = false\n } = options;\n let { needsMask } = options;\n let { preserveWhiteSpace = true } = options;\n if (!needsMask) {\n const checkAncestors = needsMask === void 0;\n needsMask = needMaskingText(\n n2,\n maskTextClass,\n maskTextSelector,\n checkAncestors\n );\n }\n const _serializedNode = serializeNode(n2, {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement,\n cssCaptured\n });\n if (!_serializedNode) {\n console.warn(n2, \"not serialized\");\n return null;\n }\n let id;\n if (mirror2.hasNode(n2)) {\n id = mirror2.getId(n2);\n } else if (slimDOMExcluded(_serializedNode, slimDOMOptions) || !preserveWhiteSpace && _serializedNode.type === NodeType$3.Text && !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, \"\").length) {\n id = IGNORED_NODE;\n } else {\n id = genId();\n }\n const serializedNode = Object.assign(_serializedNode, { id });\n mirror2.add(n2, serializedNode);\n if (id === IGNORED_NODE) {\n return null;\n }\n if (onSerialize) {\n onSerialize(n2);\n }\n let recordChild = !skipChild;\n if (serializedNode.type === NodeType$3.Element) {\n recordChild = recordChild && !serializedNode.needBlock;\n delete serializedNode.needBlock;\n const shadowRootEl = index$1.shadowRoot(n2);\n if (shadowRootEl && isNativeShadowDom(shadowRootEl))\n serializedNode.isShadowHost = true;\n }\n if ((serializedNode.type === NodeType$3.Document || serializedNode.type === NodeType$3.Element) && recordChild) {\n if (slimDOMOptions.headWhitespace && serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"head\") {\n preserveWhiteSpace = false;\n }\n const bypassOptions = {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n skipChild,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn,\n cssCaptured: false\n };\n if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"textarea\" && serializedNode.attributes.value !== void 0) ;\n else {\n if (serializedNode.type === NodeType$3.Element && serializedNode.attributes._cssText !== void 0 && typeof serializedNode.attributes._cssText === \"string\") {\n bypassOptions.cssCaptured = true;\n }\n for (const childN of Array.from(index$1.childNodes(n2))) {\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n }\n let shadowRootEl = null;\n if (isElement(n2) && (shadowRootEl = index$1.shadowRoot(n2))) {\n for (const childN of Array.from(index$1.childNodes(shadowRootEl))) {\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n isNativeShadowDom(shadowRootEl) && (serializedChildNode.isShadow = true);\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n }\n }\n const parent = index$1.parentNode(n2);\n if (parent && isShadowRoot(parent) && isNativeShadowDom(parent)) {\n serializedNode.isShadow = true;\n }\n if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"iframe\") {\n onceIframeLoaded(\n n2,\n () => {\n const iframeDoc = n2.contentDocument;\n if (iframeDoc && onIframeLoad) {\n const serializedIframeNode = serializeNodeWithId(iframeDoc, {\n doc: iframeDoc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn\n });\n if (serializedIframeNode) {\n onIframeLoad(\n n2,\n serializedIframeNode\n );\n }\n }\n },\n iframeLoadTimeout\n );\n }\n if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"link\" && typeof serializedNode.attributes.rel === \"string\" && (serializedNode.attributes.rel === \"stylesheet\" || serializedNode.attributes.rel === \"preload\" && typeof serializedNode.attributes.href === \"string\" && extractFileExtension(serializedNode.attributes.href) === \"css\")) {\n onceStylesheetLoaded(\n n2,\n () => {\n if (onStylesheetLoad) {\n const serializedLinkNode = serializeNodeWithId(n2, {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn\n });\n if (serializedLinkNode) {\n onStylesheetLoad(\n n2,\n serializedLinkNode\n );\n }\n }\n },\n stylesheetLoadTimeout\n );\n }\n return serializedNode;\n}\nfunction snapshot(n2, options) {\n const {\n mirror: mirror2 = new Mirror(),\n blockClass = \"rr-block\",\n blockSelector = null,\n maskTextClass = \"rr-mask\",\n maskTextSelector = null,\n inlineStylesheet = true,\n inlineImages = false,\n recordCanvas = false,\n maskAllInputs = false,\n maskTextFn,\n maskInputFn,\n slimDOM = false,\n dataURLOptions,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn = () => false\n } = options || {};\n const maskInputOptions = maskAllInputs === true ? {\n color: true,\n date: true,\n \"datetime-local\": true,\n email: true,\n month: true,\n number: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true,\n textarea: true,\n select: true,\n password: true\n } : maskAllInputs === false ? {\n password: true\n } : maskAllInputs;\n const slimDOMOptions = slimDOM === true || slimDOM === \"all\" ? (\n // if true: set of sensible options that should not throw away any information\n {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaDescKeywords: slimDOM === \"all\",\n // destructive\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaAuthorship: true,\n headMetaVerification: true\n }\n ) : slimDOM === false ? {} : slimDOM;\n return serializeNodeWithId(n2, {\n doc: n2,\n mirror: mirror2,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn,\n newlyAddedElement: false\n });\n}\nfunction getDefaultExportFromCjs$1(x2) {\n return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, \"default\") ? x2[\"default\"] : x2;\n}\nfunction getAugmentedNamespace$1(n2) {\n if (n2.__esModule) return n2;\n var f2 = n2.default;\n if (typeof f2 == \"function\") {\n var a2 = function a22() {\n if (this instanceof a22) {\n return Reflect.construct(f2, arguments, this.constructor);\n }\n return f2.apply(this, arguments);\n };\n a2.prototype = f2.prototype;\n } else a2 = {};\n Object.defineProperty(a2, \"__esModule\", { value: true });\n Object.keys(n2).forEach(function(k) {\n var d = Object.getOwnPropertyDescriptor(n2, k);\n Object.defineProperty(a2, k, d.get ? d : {\n enumerable: true,\n get: function() {\n return n2[k];\n }\n });\n });\n return a2;\n}\nvar picocolors_browser$1 = { exports: {} };\nvar x$1 = String;\nvar create$1 = function() {\n return { isColorSupported: false, reset: x$1, bold: x$1, dim: x$1, italic: x$1, underline: x$1, inverse: x$1, hidden: x$1, strikethrough: x$1, black: x$1, red: x$1, green: x$1, yellow: x$1, blue: x$1, magenta: x$1, cyan: x$1, white: x$1, gray: x$1, bgBlack: x$1, bgRed: x$1, bgGreen: x$1, bgYellow: x$1, bgBlue: x$1, bgMagenta: x$1, bgCyan: x$1, bgWhite: x$1 };\n};\npicocolors_browser$1.exports = create$1();\npicocolors_browser$1.exports.createColors = create$1;\nvar picocolors_browserExports$1 = picocolors_browser$1.exports;\nconst __viteBrowserExternal$2 = {};\nconst __viteBrowserExternal$1$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: __viteBrowserExternal$2\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst require$$2$1 = /* @__PURE__ */ getAugmentedNamespace$1(__viteBrowserExternal$1$1);\nlet pico$1 = picocolors_browserExports$1;\nlet terminalHighlight$1$1 = require$$2$1;\nlet CssSyntaxError$3$1 = class CssSyntaxError extends Error {\n constructor(message, line, column, source, file, plugin22) {\n super(message);\n this.name = \"CssSyntaxError\";\n this.reason = message;\n if (file) {\n this.file = file;\n }\n if (source) {\n this.source = source;\n }\n if (plugin22) {\n this.plugin = plugin22;\n }\n if (typeof line !== \"undefined\" && typeof column !== \"undefined\") {\n if (typeof line === \"number\") {\n this.line = line;\n this.column = column;\n } else {\n this.line = line.line;\n this.column = line.column;\n this.endLine = column.line;\n this.endColumn = column.column;\n }\n }\n this.setMessage();\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, CssSyntaxError);\n }\n }\n setMessage() {\n this.message = this.plugin ? this.plugin + \": \" : \"\";\n this.message += this.file ? this.file : \"\";\n if (typeof this.line !== \"undefined\") {\n this.message += \":\" + this.line + \":\" + this.column;\n }\n this.message += \": \" + this.reason;\n }\n showSourceCode(color) {\n if (!this.source) return \"\";\n let css = this.source;\n if (color == null) color = pico$1.isColorSupported;\n if (terminalHighlight$1$1) {\n if (color) css = terminalHighlight$1$1(css);\n }\n let lines = css.split(/\\r?\\n/);\n let start = Math.max(this.line - 3, 0);\n let end = Math.min(this.line + 2, lines.length);\n let maxWidth = String(end).length;\n let mark, aside;\n if (color) {\n let { bold, gray, red } = pico$1.createColors(true);\n mark = (text) => bold(red(text));\n aside = (text) => gray(text);\n } else {\n mark = aside = (str) => str;\n }\n return lines.slice(start, end).map((line, index2) => {\n let number = start + 1 + index2;\n let gutter = \" \" + (\" \" + number).slice(-maxWidth) + \" | \";\n if (number === this.line) {\n let spacing = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, this.column - 1).replace(/[^\\t]/g, \" \");\n return mark(\">\") + aside(gutter) + line + \"\\n \" + spacing + mark(\"^\");\n }\n return \" \" + aside(gutter) + line;\n }).join(\"\\n\");\n }\n toString() {\n let code = this.showSourceCode();\n if (code) {\n code = \"\\n\\n\" + code + \"\\n\";\n }\n return this.name + \": \" + this.message + code;\n }\n};\nvar cssSyntaxError$1 = CssSyntaxError$3$1;\nCssSyntaxError$3$1.default = CssSyntaxError$3$1;\nvar symbols$1 = {};\nsymbols$1.isClean = Symbol(\"isClean\");\nsymbols$1.my = Symbol(\"my\");\nconst DEFAULT_RAW$1 = {\n after: \"\\n\",\n beforeClose: \"\\n\",\n beforeComment: \"\\n\",\n beforeDecl: \"\\n\",\n beforeOpen: \" \",\n beforeRule: \"\\n\",\n colon: \": \",\n commentLeft: \" \",\n commentRight: \" \",\n emptyBody: \"\",\n indent: \" \",\n semicolon: false\n};\nfunction capitalize$1(str) {\n return str[0].toUpperCase() + str.slice(1);\n}\nlet Stringifier$2$1 = class Stringifier {\n constructor(builder) {\n this.builder = builder;\n }\n atrule(node2, semicolon) {\n let name = \"@\" + node2.name;\n let params = node2.params ? this.rawValue(node2, \"params\") : \"\";\n if (typeof node2.raws.afterName !== \"undefined\") {\n name += node2.raws.afterName;\n } else if (params) {\n name += \" \";\n }\n if (node2.nodes) {\n this.block(node2, name + params);\n } else {\n let end = (node2.raws.between || \"\") + (semicolon ? \";\" : \"\");\n this.builder(name + params + end, node2);\n }\n }\n beforeAfter(node2, detect) {\n let value;\n if (node2.type === \"decl\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (node2.type === \"comment\") {\n value = this.raw(node2, null, \"beforeComment\");\n } else if (detect === \"before\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else {\n value = this.raw(node2, null, \"beforeClose\");\n }\n let buf = node2.parent;\n let depth = 0;\n while (buf && buf.type !== \"root\") {\n depth += 1;\n buf = buf.parent;\n }\n if (value.includes(\"\\n\")) {\n let indent = this.raw(node2, null, \"indent\");\n if (indent.length) {\n for (let step = 0; step < depth; step++) value += indent;\n }\n }\n return value;\n }\n block(node2, start) {\n let between = this.raw(node2, \"between\", \"beforeOpen\");\n this.builder(start + between + \"{\", node2, \"start\");\n let after;\n if (node2.nodes && node2.nodes.length) {\n this.body(node2);\n after = this.raw(node2, \"after\");\n } else {\n after = this.raw(node2, \"after\", \"emptyBody\");\n }\n if (after) this.builder(after);\n this.builder(\"}\", node2, \"end\");\n }\n body(node2) {\n let last = node2.nodes.length - 1;\n while (last > 0) {\n if (node2.nodes[last].type !== \"comment\") break;\n last -= 1;\n }\n let semicolon = this.raw(node2, \"semicolon\");\n for (let i2 = 0; i2 < node2.nodes.length; i2++) {\n let child = node2.nodes[i2];\n let before = this.raw(child, \"before\");\n if (before) this.builder(before);\n this.stringify(child, last !== i2 || semicolon);\n }\n }\n comment(node2) {\n let left = this.raw(node2, \"left\", \"commentLeft\");\n let right = this.raw(node2, \"right\", \"commentRight\");\n this.builder(\"/*\" + left + node2.text + right + \"*/\", node2);\n }\n decl(node2, semicolon) {\n let between = this.raw(node2, \"between\", \"colon\");\n let string = node2.prop + between + this.rawValue(node2, \"value\");\n if (node2.important) {\n string += node2.raws.important || \" !important\";\n }\n if (semicolon) string += \";\";\n this.builder(string, node2);\n }\n document(node2) {\n this.body(node2);\n }\n raw(node2, own, detect) {\n let value;\n if (!detect) detect = own;\n if (own) {\n value = node2.raws[own];\n if (typeof value !== \"undefined\") return value;\n }\n let parent = node2.parent;\n if (detect === \"before\") {\n if (!parent || parent.type === \"root\" && parent.first === node2) {\n return \"\";\n }\n if (parent && parent.type === \"document\") {\n return \"\";\n }\n }\n if (!parent) return DEFAULT_RAW$1[detect];\n let root2 = node2.root();\n if (!root2.rawCache) root2.rawCache = {};\n if (typeof root2.rawCache[detect] !== \"undefined\") {\n return root2.rawCache[detect];\n }\n if (detect === \"before\" || detect === \"after\") {\n return this.beforeAfter(node2, detect);\n } else {\n let method = \"raw\" + capitalize$1(detect);\n if (this[method]) {\n value = this[method](root2, node2);\n } else {\n root2.walk((i2) => {\n value = i2.raws[own];\n if (typeof value !== \"undefined\") return false;\n });\n }\n }\n if (typeof value === \"undefined\") value = DEFAULT_RAW$1[detect];\n root2.rawCache[detect] = value;\n return value;\n }\n rawBeforeClose(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length > 0) {\n if (typeof i2.raws.after !== \"undefined\") {\n value = i2.raws.after;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawBeforeComment(root2, node2) {\n let value;\n root2.walkComments((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeDecl(root2, node2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeOpen(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.type !== \"decl\") {\n value = i2.raws.between;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawBeforeRule(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && (i2.parent !== root2 || root2.first !== i2)) {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawColon(root2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.between !== \"undefined\") {\n value = i2.raws.between.replace(/[^\\s:]/g, \"\");\n return false;\n }\n });\n return value;\n }\n rawEmptyBody(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length === 0) {\n value = i2.raws.after;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawIndent(root2) {\n if (root2.raws.indent) return root2.raws.indent;\n let value;\n root2.walk((i2) => {\n let p = i2.parent;\n if (p && p !== root2 && p.parent && p.parent === root2) {\n if (typeof i2.raws.before !== \"undefined\") {\n let parts = i2.raws.before.split(\"\\n\");\n value = parts[parts.length - 1];\n value = value.replace(/\\S/g, \"\");\n return false;\n }\n }\n });\n return value;\n }\n rawSemicolon(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length && i2.last.type === \"decl\") {\n value = i2.raws.semicolon;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawValue(node2, prop) {\n let value = node2[prop];\n let raw = node2.raws[prop];\n if (raw && raw.value === value) {\n return raw.raw;\n }\n return value;\n }\n root(node2) {\n this.body(node2);\n if (node2.raws.after) this.builder(node2.raws.after);\n }\n rule(node2) {\n this.block(node2, this.rawValue(node2, \"selector\"));\n if (node2.raws.ownSemicolon) {\n this.builder(node2.raws.ownSemicolon, node2, \"end\");\n }\n }\n stringify(node2, semicolon) {\n if (!this[node2.type]) {\n throw new Error(\n \"Unknown AST node type \" + node2.type + \". Maybe you need to change PostCSS stringifier.\"\n );\n }\n this[node2.type](node2, semicolon);\n }\n};\nvar stringifier$1 = Stringifier$2$1;\nStringifier$2$1.default = Stringifier$2$1;\nlet Stringifier$1$1 = stringifier$1;\nfunction stringify$4$1(node2, builder) {\n let str = new Stringifier$1$1(builder);\n str.stringify(node2);\n}\nvar stringify_1$1 = stringify$4$1;\nstringify$4$1.default = stringify$4$1;\nlet { isClean: isClean$2$1, my: my$2$1 } = symbols$1;\nlet CssSyntaxError$2$1 = cssSyntaxError$1;\nlet Stringifier2$1 = stringifier$1;\nlet stringify$3$1 = stringify_1$1;\nfunction cloneNode$1(obj, parent) {\n let cloned = new obj.constructor();\n for (let i2 in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, i2)) {\n continue;\n }\n if (i2 === \"proxyCache\") continue;\n let value = obj[i2];\n let type = typeof value;\n if (i2 === \"parent\" && type === \"object\") {\n if (parent) cloned[i2] = parent;\n } else if (i2 === \"source\") {\n cloned[i2] = value;\n } else if (Array.isArray(value)) {\n cloned[i2] = value.map((j) => cloneNode$1(j, cloned));\n } else {\n if (type === \"object\" && value !== null) value = cloneNode$1(value);\n cloned[i2] = value;\n }\n }\n return cloned;\n}\nlet Node$4$1 = class Node2 {\n constructor(defaults = {}) {\n this.raws = {};\n this[isClean$2$1] = false;\n this[my$2$1] = true;\n for (let name in defaults) {\n if (name === \"nodes\") {\n this.nodes = [];\n for (let node2 of defaults[name]) {\n if (typeof node2.clone === \"function\") {\n this.append(node2.clone());\n } else {\n this.append(node2);\n }\n }\n } else {\n this[name] = defaults[name];\n }\n }\n }\n addToError(error) {\n error.postcssNode = this;\n if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n let s2 = this.source;\n error.stack = error.stack.replace(\n /\\n\\s{4}at /,\n `$&${s2.input.from}:${s2.start.line}:${s2.start.column}$&`\n );\n }\n return error;\n }\n after(add) {\n this.parent.insertAfter(this, add);\n return this;\n }\n assign(overrides = {}) {\n for (let name in overrides) {\n this[name] = overrides[name];\n }\n return this;\n }\n before(add) {\n this.parent.insertBefore(this, add);\n return this;\n }\n cleanRaws(keepBetween) {\n delete this.raws.before;\n delete this.raws.after;\n if (!keepBetween) delete this.raws.between;\n }\n clone(overrides = {}) {\n let cloned = cloneNode$1(this);\n for (let name in overrides) {\n cloned[name] = overrides[name];\n }\n return cloned;\n }\n cloneAfter(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertAfter(this, cloned);\n return cloned;\n }\n cloneBefore(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertBefore(this, cloned);\n return cloned;\n }\n error(message, opts = {}) {\n if (this.source) {\n let { end, start } = this.rangeBy(opts);\n return this.source.input.error(\n message,\n { column: start.column, line: start.line },\n { column: end.column, line: end.line },\n opts\n );\n }\n return new CssSyntaxError$2$1(message);\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"prop\" || prop === \"value\" || prop === \"name\" || prop === \"params\" || prop === \"important\" || /* c8 ignore next */\n prop === \"text\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n markDirty() {\n if (this[isClean$2$1]) {\n this[isClean$2$1] = false;\n let next = this;\n while (next = next.parent) {\n next[isClean$2$1] = false;\n }\n }\n }\n next() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 + 1];\n }\n positionBy(opts, stringRepresentation) {\n let pos = this.source.start;\n if (opts.index) {\n pos = this.positionInside(opts.index, stringRepresentation);\n } else if (opts.word) {\n stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) pos = this.positionInside(index2, stringRepresentation);\n }\n return pos;\n }\n positionInside(index2, stringRepresentation) {\n let string = stringRepresentation || this.toString();\n let column = this.source.start.column;\n let line = this.source.start.line;\n for (let i2 = 0; i2 < index2; i2++) {\n if (string[i2] === \"\\n\") {\n column = 1;\n line += 1;\n } else {\n column += 1;\n }\n }\n return { column, line };\n }\n prev() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 - 1];\n }\n rangeBy(opts) {\n let start = {\n column: this.source.start.column,\n line: this.source.start.line\n };\n let end = this.source.end ? {\n column: this.source.end.column + 1,\n line: this.source.end.line\n } : {\n column: start.column + 1,\n line: start.line\n };\n if (opts.word) {\n let stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) {\n start = this.positionInside(index2, stringRepresentation);\n end = this.positionInside(index2 + opts.word.length, stringRepresentation);\n }\n } else {\n if (opts.start) {\n start = {\n column: opts.start.column,\n line: opts.start.line\n };\n } else if (opts.index) {\n start = this.positionInside(opts.index);\n }\n if (opts.end) {\n end = {\n column: opts.end.column,\n line: opts.end.line\n };\n } else if (typeof opts.endIndex === \"number\") {\n end = this.positionInside(opts.endIndex);\n } else if (opts.index) {\n end = this.positionInside(opts.index + 1);\n }\n }\n if (end.line < start.line || end.line === start.line && end.column <= start.column) {\n end = { column: start.column + 1, line: start.line };\n }\n return { end, start };\n }\n raw(prop, defaultType) {\n let str = new Stringifier2$1();\n return str.raw(this, prop, defaultType);\n }\n remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n this.parent = void 0;\n return this;\n }\n replaceWith(...nodes) {\n if (this.parent) {\n let bookmark = this;\n let foundSelf = false;\n for (let node2 of nodes) {\n if (node2 === this) {\n foundSelf = true;\n } else if (foundSelf) {\n this.parent.insertAfter(bookmark, node2);\n bookmark = node2;\n } else {\n this.parent.insertBefore(bookmark, node2);\n }\n }\n if (!foundSelf) {\n this.remove();\n }\n }\n return this;\n }\n root() {\n let result2 = this;\n while (result2.parent && result2.parent.type !== \"document\") {\n result2 = result2.parent;\n }\n return result2;\n }\n toJSON(_, inputs) {\n let fixed = {};\n let emitInputs = inputs == null;\n inputs = inputs || /* @__PURE__ */ new Map();\n let inputsNextIndex = 0;\n for (let name in this) {\n if (!Object.prototype.hasOwnProperty.call(this, name)) {\n continue;\n }\n if (name === \"parent\" || name === \"proxyCache\") continue;\n let value = this[name];\n if (Array.isArray(value)) {\n fixed[name] = value.map((i2) => {\n if (typeof i2 === \"object\" && i2.toJSON) {\n return i2.toJSON(null, inputs);\n } else {\n return i2;\n }\n });\n } else if (typeof value === \"object\" && value.toJSON) {\n fixed[name] = value.toJSON(null, inputs);\n } else if (name === \"source\") {\n let inputId = inputs.get(value.input);\n if (inputId == null) {\n inputId = inputsNextIndex;\n inputs.set(value.input, inputsNextIndex);\n inputsNextIndex++;\n }\n fixed[name] = {\n end: value.end,\n inputId,\n start: value.start\n };\n } else {\n fixed[name] = value;\n }\n }\n if (emitInputs) {\n fixed.inputs = [...inputs.keys()].map((input2) => input2.toJSON());\n }\n return fixed;\n }\n toProxy() {\n if (!this.proxyCache) {\n this.proxyCache = new Proxy(this, this.getProxyProcessor());\n }\n return this.proxyCache;\n }\n toString(stringifier2 = stringify$3$1) {\n if (stringifier2.stringify) stringifier2 = stringifier2.stringify;\n let result2 = \"\";\n stringifier2(this, (i2) => {\n result2 += i2;\n });\n return result2;\n }\n warn(result2, text, opts) {\n let data = { node: this };\n for (let i2 in opts) data[i2] = opts[i2];\n return result2.warn(text, data);\n }\n get proxyOf() {\n return this;\n }\n};\nvar node$1 = Node$4$1;\nNode$4$1.default = Node$4$1;\nlet Node$3$1 = node$1;\nlet Declaration$4$1 = class Declaration extends Node$3$1 {\n constructor(defaults) {\n if (defaults && typeof defaults.value !== \"undefined\" && typeof defaults.value !== \"string\") {\n defaults = { ...defaults, value: String(defaults.value) };\n }\n super(defaults);\n this.type = \"decl\";\n }\n get variable() {\n return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n }\n};\nvar declaration$1 = Declaration$4$1;\nDeclaration$4$1.default = Declaration$4$1;\nlet urlAlphabet$1 = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\nlet customAlphabet$1 = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = \"\";\n let i2 = size;\n while (i2--) {\n id += alphabet[Math.random() * alphabet.length | 0];\n }\n return id;\n };\n};\nlet nanoid$1$1 = (size = 21) => {\n let id = \"\";\n let i2 = size;\n while (i2--) {\n id += urlAlphabet$1[Math.random() * 64 | 0];\n }\n return id;\n};\nvar nonSecure$1 = { nanoid: nanoid$1$1, customAlphabet: customAlphabet$1 };\nlet { SourceMapConsumer: SourceMapConsumer$2$1, SourceMapGenerator: SourceMapGenerator$2$1 } = require$$2$1;\nlet { existsSync: existsSync$1, readFileSync: readFileSync$1 } = require$$2$1;\nlet { dirname: dirname$1$1, join: join$1 } = require$$2$1;\nfunction fromBase64$1(str) {\n if (Buffer) {\n return Buffer.from(str, \"base64\").toString();\n } else {\n return window.atob(str);\n }\n}\nlet PreviousMap$2$1 = class PreviousMap {\n constructor(css, opts) {\n if (opts.map === false) return;\n this.loadAnnotation(css);\n this.inline = this.startWith(this.annotation, \"data:\");\n let prev = opts.map ? opts.map.prev : void 0;\n let text = this.loadMap(opts.from, prev);\n if (!this.mapFile && opts.from) {\n this.mapFile = opts.from;\n }\n if (this.mapFile) this.root = dirname$1$1(this.mapFile);\n if (text) this.text = text;\n }\n consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new SourceMapConsumer$2$1(this.text);\n }\n return this.consumerCache;\n }\n decodeInline(text) {\n let baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/;\n let baseUri = /^data:application\\/json;base64,/;\n let charsetUri = /^data:application\\/json;charset=utf-?8,/;\n let uri = /^data:application\\/json,/;\n if (charsetUri.test(text) || uri.test(text)) {\n return decodeURIComponent(text.substr(RegExp.lastMatch.length));\n }\n if (baseCharsetUri.test(text) || baseUri.test(text)) {\n return fromBase64$1(text.substr(RegExp.lastMatch.length));\n }\n let encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n throw new Error(\"Unsupported source map encoding \" + encoding);\n }\n getAnnotationURL(sourceMapString) {\n return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n }\n isMap(map) {\n if (typeof map !== \"object\") return false;\n return typeof map.mappings === \"string\" || typeof map._mappings === \"string\" || Array.isArray(map.sections);\n }\n loadAnnotation(css) {\n let comments = css.match(/\\/\\*\\s*# sourceMappingURL=/gm);\n if (!comments) return;\n let start = css.lastIndexOf(comments.pop());\n let end = css.indexOf(\"*/\", start);\n if (start > -1 && end > -1) {\n this.annotation = this.getAnnotationURL(css.substring(start, end));\n }\n }\n loadFile(path) {\n this.root = dirname$1$1(path);\n if (existsSync$1(path)) {\n this.mapFile = path;\n return readFileSync$1(path, \"utf-8\").toString().trim();\n }\n }\n loadMap(file, prev) {\n if (prev === false) return false;\n if (prev) {\n if (typeof prev === \"string\") {\n return prev;\n } else if (typeof prev === \"function\") {\n let prevPath = prev(file);\n if (prevPath) {\n let map = this.loadFile(prevPath);\n if (!map) {\n throw new Error(\n \"Unable to load previous source map: \" + prevPath.toString()\n );\n }\n return map;\n }\n } else if (prev instanceof SourceMapConsumer$2$1) {\n return SourceMapGenerator$2$1.fromSourceMap(prev).toString();\n } else if (prev instanceof SourceMapGenerator$2$1) {\n return prev.toString();\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev);\n } else {\n throw new Error(\n \"Unsupported previous source map format: \" + prev.toString()\n );\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation);\n } else if (this.annotation) {\n let map = this.annotation;\n if (file) map = join$1(dirname$1$1(file), map);\n return this.loadFile(map);\n }\n }\n startWith(string, start) {\n if (!string) return false;\n return string.substr(0, start.length) === start;\n }\n withContent() {\n return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n }\n};\nvar previousMap$1 = PreviousMap$2$1;\nPreviousMap$2$1.default = PreviousMap$2$1;\nlet { SourceMapConsumer: SourceMapConsumer$1$1, SourceMapGenerator: SourceMapGenerator$1$1 } = require$$2$1;\nlet { fileURLToPath: fileURLToPath$1, pathToFileURL: pathToFileURL$1$1 } = require$$2$1;\nlet { isAbsolute: isAbsolute$1, resolve: resolve$1$1 } = require$$2$1;\nlet { nanoid: nanoid$2 } = nonSecure$1;\nlet terminalHighlight$2 = require$$2$1;\nlet CssSyntaxError$1$1 = cssSyntaxError$1;\nlet PreviousMap$1$1 = previousMap$1;\nlet fromOffsetCache$1 = Symbol(\"fromOffsetCache\");\nlet sourceMapAvailable$1$1 = Boolean(SourceMapConsumer$1$1 && SourceMapGenerator$1$1);\nlet pathAvailable$1$1 = Boolean(resolve$1$1 && isAbsolute$1);\nlet Input$4$1 = class Input {\n constructor(css, opts = {}) {\n if (css === null || typeof css === \"undefined\" || typeof css === \"object\" && !css.toString) {\n throw new Error(`PostCSS received ${css} instead of CSS string`);\n }\n this.css = css.toString();\n if (this.css[0] === \"\\uFEFF\" || this.css[0] === \"￾\") {\n this.hasBOM = true;\n this.css = this.css.slice(1);\n } else {\n this.hasBOM = false;\n }\n if (opts.from) {\n if (!pathAvailable$1$1 || /^\\w+:\\/\\//.test(opts.from) || isAbsolute$1(opts.from)) {\n this.file = opts.from;\n } else {\n this.file = resolve$1$1(opts.from);\n }\n }\n if (pathAvailable$1$1 && sourceMapAvailable$1$1) {\n let map = new PreviousMap$1$1(this.css, opts);\n if (map.text) {\n this.map = map;\n let file = map.consumer().file;\n if (!this.file && file) this.file = this.mapResolve(file);\n }\n }\n if (!this.file) {\n this.id = \"\";\n }\n if (this.map) this.map.file = this.from;\n }\n error(message, line, column, opts = {}) {\n let result2, endLine, endColumn;\n if (line && typeof line === \"object\") {\n let start = line;\n let end = column;\n if (typeof start.offset === \"number\") {\n let pos = this.fromOffset(start.offset);\n line = pos.line;\n column = pos.col;\n } else {\n line = start.line;\n column = start.column;\n }\n if (typeof end.offset === \"number\") {\n let pos = this.fromOffset(end.offset);\n endLine = pos.line;\n endColumn = pos.col;\n } else {\n endLine = end.line;\n endColumn = end.column;\n }\n } else if (!column) {\n let pos = this.fromOffset(line);\n line = pos.line;\n column = pos.col;\n }\n let origin = this.origin(line, column, endLine, endColumn);\n if (origin) {\n result2 = new CssSyntaxError$1$1(\n message,\n origin.endLine === void 0 ? origin.line : { column: origin.column, line: origin.line },\n origin.endLine === void 0 ? origin.column : { column: origin.endColumn, line: origin.endLine },\n origin.source,\n origin.file,\n opts.plugin\n );\n } else {\n result2 = new CssSyntaxError$1$1(\n message,\n endLine === void 0 ? line : { column, line },\n endLine === void 0 ? column : { column: endColumn, line: endLine },\n this.css,\n this.file,\n opts.plugin\n );\n }\n result2.input = { column, endColumn, endLine, line, source: this.css };\n if (this.file) {\n if (pathToFileURL$1$1) {\n result2.input.url = pathToFileURL$1$1(this.file).toString();\n }\n result2.input.file = this.file;\n }\n return result2;\n }\n fromOffset(offset) {\n let lastLine, lineToIndex;\n if (!this[fromOffsetCache$1]) {\n let lines = this.css.split(\"\\n\");\n lineToIndex = new Array(lines.length);\n let prevIndex = 0;\n for (let i2 = 0, l2 = lines.length; i2 < l2; i2++) {\n lineToIndex[i2] = prevIndex;\n prevIndex += lines[i2].length + 1;\n }\n this[fromOffsetCache$1] = lineToIndex;\n } else {\n lineToIndex = this[fromOffsetCache$1];\n }\n lastLine = lineToIndex[lineToIndex.length - 1];\n let min = 0;\n if (offset >= lastLine) {\n min = lineToIndex.length - 1;\n } else {\n let max = lineToIndex.length - 2;\n let mid;\n while (min < max) {\n mid = min + (max - min >> 1);\n if (offset < lineToIndex[mid]) {\n max = mid - 1;\n } else if (offset >= lineToIndex[mid + 1]) {\n min = mid + 1;\n } else {\n min = mid;\n break;\n }\n }\n }\n return {\n col: offset - lineToIndex[min] + 1,\n line: min + 1\n };\n }\n mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file;\n }\n return resolve$1$1(this.map.consumer().sourceRoot || this.map.root || \".\", file);\n }\n origin(line, column, endLine, endColumn) {\n if (!this.map) return false;\n let consumer = this.map.consumer();\n let from = consumer.originalPositionFor({ column, line });\n if (!from.source) return false;\n let to;\n if (typeof endLine === \"number\") {\n to = consumer.originalPositionFor({ column: endColumn, line: endLine });\n }\n let fromUrl;\n if (isAbsolute$1(from.source)) {\n fromUrl = pathToFileURL$1$1(from.source);\n } else {\n fromUrl = new URL(\n from.source,\n this.map.consumer().sourceRoot || pathToFileURL$1$1(this.map.mapFile)\n );\n }\n let result2 = {\n column: from.column,\n endColumn: to && to.column,\n endLine: to && to.line,\n line: from.line,\n url: fromUrl.toString()\n };\n if (fromUrl.protocol === \"file:\") {\n if (fileURLToPath$1) {\n result2.file = fileURLToPath$1(fromUrl);\n } else {\n throw new Error(`file: protocol is not available in this PostCSS build`);\n }\n }\n let source = consumer.sourceContentFor(from.source);\n if (source) result2.source = source;\n return result2;\n }\n toJSON() {\n let json = {};\n for (let name of [\"hasBOM\", \"css\", \"file\", \"id\"]) {\n if (this[name] != null) {\n json[name] = this[name];\n }\n }\n if (this.map) {\n json.map = { ...this.map };\n if (json.map.consumerCache) {\n json.map.consumerCache = void 0;\n }\n }\n return json;\n }\n get from() {\n return this.file || this.id;\n }\n};\nvar input$1 = Input$4$1;\nInput$4$1.default = Input$4$1;\nif (terminalHighlight$2 && terminalHighlight$2.registerInput) {\n terminalHighlight$2.registerInput(Input$4$1);\n}\nlet { SourceMapConsumer: SourceMapConsumer$3, SourceMapGenerator: SourceMapGenerator$3 } = require$$2$1;\nlet { dirname: dirname$2, relative: relative$1, resolve: resolve$2, sep: sep$1 } = require$$2$1;\nlet { pathToFileURL: pathToFileURL$2 } = require$$2$1;\nlet Input$3$1 = input$1;\nlet sourceMapAvailable$2 = Boolean(SourceMapConsumer$3 && SourceMapGenerator$3);\nlet pathAvailable$2 = Boolean(dirname$2 && resolve$2 && relative$1 && sep$1);\nlet MapGenerator$2$1 = class MapGenerator {\n constructor(stringify2, root2, opts, cssString) {\n this.stringify = stringify2;\n this.mapOpts = opts.map || {};\n this.root = root2;\n this.opts = opts;\n this.css = cssString;\n this.originalCSS = cssString;\n this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute;\n this.memoizedFileURLs = /* @__PURE__ */ new Map();\n this.memoizedPaths = /* @__PURE__ */ new Map();\n this.memoizedURLs = /* @__PURE__ */ new Map();\n }\n addAnnotation() {\n let content;\n if (this.isInline()) {\n content = \"data:application/json;base64,\" + this.toBase64(this.map.toString());\n } else if (typeof this.mapOpts.annotation === \"string\") {\n content = this.mapOpts.annotation;\n } else if (typeof this.mapOpts.annotation === \"function\") {\n content = this.mapOpts.annotation(this.opts.to, this.root);\n } else {\n content = this.outputFile() + \".map\";\n }\n let eol = \"\\n\";\n if (this.css.includes(\"\\r\\n\")) eol = \"\\r\\n\";\n this.css += eol + \"/*# sourceMappingURL=\" + content + \" */\";\n }\n applyPrevMaps() {\n for (let prev of this.previous()) {\n let from = this.toUrl(this.path(prev.file));\n let root2 = prev.root || dirname$2(prev.file);\n let map;\n if (this.mapOpts.sourcesContent === false) {\n map = new SourceMapConsumer$3(prev.text);\n if (map.sourcesContent) {\n map.sourcesContent = null;\n }\n } else {\n map = prev.consumer();\n }\n this.map.applySourceMap(map, from, this.toUrl(this.path(root2)));\n }\n }\n clearAnnotation() {\n if (this.mapOpts.annotation === false) return;\n if (this.root) {\n let node2;\n for (let i2 = this.root.nodes.length - 1; i2 >= 0; i2--) {\n node2 = this.root.nodes[i2];\n if (node2.type !== \"comment\") continue;\n if (node2.text.indexOf(\"# sourceMappingURL=\") === 0) {\n this.root.removeChild(i2);\n }\n }\n } else if (this.css) {\n this.css = this.css.replace(/\\n*?\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\");\n }\n }\n generate() {\n this.clearAnnotation();\n if (pathAvailable$2 && sourceMapAvailable$2 && this.isMap()) {\n return this.generateMap();\n } else {\n let result2 = \"\";\n this.stringify(this.root, (i2) => {\n result2 += i2;\n });\n return [result2];\n }\n }\n generateMap() {\n if (this.root) {\n this.generateString();\n } else if (this.previous().length === 1) {\n let prev = this.previous()[0].consumer();\n prev.file = this.outputFile();\n this.map = SourceMapGenerator$3.fromSourceMap(prev, {\n ignoreInvalidMapping: true\n });\n } else {\n this.map = new SourceMapGenerator$3({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n this.map.addMapping({\n generated: { column: 0, line: 1 },\n original: { column: 0, line: 1 },\n source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\"\n });\n }\n if (this.isSourcesContent()) this.setSourcesContent();\n if (this.root && this.previous().length > 0) this.applyPrevMaps();\n if (this.isAnnotation()) this.addAnnotation();\n if (this.isInline()) {\n return [this.css];\n } else {\n return [this.css, this.map];\n }\n }\n generateString() {\n this.css = \"\";\n this.map = new SourceMapGenerator$3({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n let line = 1;\n let column = 1;\n let noSource = \"\";\n let mapping = {\n generated: { column: 0, line: 0 },\n original: { column: 0, line: 0 },\n source: \"\"\n };\n let lines, last;\n this.stringify(this.root, (str, node2, type) => {\n this.css += str;\n if (node2 && type !== \"end\") {\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n if (node2.source && node2.source.start) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.start.line;\n mapping.original.column = node2.source.start.column - 1;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n this.map.addMapping(mapping);\n }\n }\n lines = str.match(/\\n/g);\n if (lines) {\n line += lines.length;\n last = str.lastIndexOf(\"\\n\");\n column = str.length - last;\n } else {\n column += str.length;\n }\n if (node2 && type !== \"start\") {\n let p = node2.parent || { raws: {} };\n let childless = node2.type === \"decl\" || node2.type === \"atrule\" && !node2.nodes;\n if (!childless || node2 !== p.last || p.raws.semicolon) {\n if (node2.source && node2.source.end) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.end.line;\n mapping.original.column = node2.source.end.column - 1;\n mapping.generated.line = line;\n mapping.generated.column = column - 2;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n this.map.addMapping(mapping);\n }\n }\n }\n });\n }\n isAnnotation() {\n if (this.isInline()) {\n return true;\n }\n if (typeof this.mapOpts.annotation !== \"undefined\") {\n return this.mapOpts.annotation;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.annotation);\n }\n return true;\n }\n isInline() {\n if (typeof this.mapOpts.inline !== \"undefined\") {\n return this.mapOpts.inline;\n }\n let annotation = this.mapOpts.annotation;\n if (typeof annotation !== \"undefined\" && annotation !== true) {\n return false;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.inline);\n }\n return true;\n }\n isMap() {\n if (typeof this.opts.map !== \"undefined\") {\n return !!this.opts.map;\n }\n return this.previous().length > 0;\n }\n isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== \"undefined\") {\n return this.mapOpts.sourcesContent;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.withContent());\n }\n return true;\n }\n outputFile() {\n if (this.opts.to) {\n return this.path(this.opts.to);\n } else if (this.opts.from) {\n return this.path(this.opts.from);\n } else {\n return \"to.css\";\n }\n }\n path(file) {\n if (this.mapOpts.absolute) return file;\n if (file.charCodeAt(0) === 60) return file;\n if (/^\\w+:\\/\\//.test(file)) return file;\n let cached = this.memoizedPaths.get(file);\n if (cached) return cached;\n let from = this.opts.to ? dirname$2(this.opts.to) : \".\";\n if (typeof this.mapOpts.annotation === \"string\") {\n from = dirname$2(resolve$2(from, this.mapOpts.annotation));\n }\n let path = relative$1(from, file);\n this.memoizedPaths.set(file, path);\n return path;\n }\n previous() {\n if (!this.previousMaps) {\n this.previousMaps = [];\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source && node2.source.input.map) {\n let map = node2.source.input.map;\n if (!this.previousMaps.includes(map)) {\n this.previousMaps.push(map);\n }\n }\n });\n } else {\n let input2 = new Input$3$1(this.originalCSS, this.opts);\n if (input2.map) this.previousMaps.push(input2.map);\n }\n }\n return this.previousMaps;\n }\n setSourcesContent() {\n let already = {};\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source) {\n let from = node2.source.input.from;\n if (from && !already[from]) {\n already[from] = true;\n let fromUrl = this.usesFileUrls ? this.toFileUrl(from) : this.toUrl(this.path(from));\n this.map.setSourceContent(fromUrl, node2.source.input.css);\n }\n }\n });\n } else if (this.css) {\n let from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\";\n this.map.setSourceContent(from, this.css);\n }\n }\n sourcePath(node2) {\n if (this.mapOpts.from) {\n return this.toUrl(this.mapOpts.from);\n } else if (this.usesFileUrls) {\n return this.toFileUrl(node2.source.input.from);\n } else {\n return this.toUrl(this.path(node2.source.input.from));\n }\n }\n toBase64(str) {\n if (Buffer) {\n return Buffer.from(str).toString(\"base64\");\n } else {\n return window.btoa(unescape(encodeURIComponent(str)));\n }\n }\n toFileUrl(path) {\n let cached = this.memoizedFileURLs.get(path);\n if (cached) return cached;\n if (pathToFileURL$2) {\n let fileURL = pathToFileURL$2(path).toString();\n this.memoizedFileURLs.set(path, fileURL);\n return fileURL;\n } else {\n throw new Error(\n \"`map.absolute` option is not available in this PostCSS build\"\n );\n }\n }\n toUrl(path) {\n let cached = this.memoizedURLs.get(path);\n if (cached) return cached;\n if (sep$1 === \"\\\\\") {\n path = path.replace(/\\\\/g, \"/\");\n }\n let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent);\n this.memoizedURLs.set(path, url);\n return url;\n }\n};\nvar mapGenerator$1 = MapGenerator$2$1;\nlet Node$2$1 = node$1;\nlet Comment$4$1 = class Comment extends Node$2$1 {\n constructor(defaults) {\n super(defaults);\n this.type = \"comment\";\n }\n};\nvar comment$1 = Comment$4$1;\nComment$4$1.default = Comment$4$1;\nlet { isClean: isClean$1$1, my: my$1$1 } = symbols$1;\nlet Declaration$3$1 = declaration$1;\nlet Comment$3$1 = comment$1;\nlet Node$1$1 = node$1;\nlet parse$4$1, Rule$4$1, AtRule$4$1, Root$6$1;\nfunction cleanSource$1(nodes) {\n return nodes.map((i2) => {\n if (i2.nodes) i2.nodes = cleanSource$1(i2.nodes);\n delete i2.source;\n return i2;\n });\n}\nfunction markDirtyUp$1(node2) {\n node2[isClean$1$1] = false;\n if (node2.proxyOf.nodes) {\n for (let i2 of node2.proxyOf.nodes) {\n markDirtyUp$1(i2);\n }\n }\n}\nlet Container$7$1 = class Container extends Node$1$1 {\n append(...children) {\n for (let child of children) {\n let nodes = this.normalize(child, this.last);\n for (let node2 of nodes) this.proxyOf.nodes.push(node2);\n }\n this.markDirty();\n return this;\n }\n cleanRaws(keepBetween) {\n super.cleanRaws(keepBetween);\n if (this.nodes) {\n for (let node2 of this.nodes) node2.cleanRaws(keepBetween);\n }\n }\n each(callback) {\n if (!this.proxyOf.nodes) return void 0;\n let iterator = this.getIterator();\n let index2, result2;\n while (this.indexes[iterator] < this.proxyOf.nodes.length) {\n index2 = this.indexes[iterator];\n result2 = callback(this.proxyOf.nodes[index2], index2);\n if (result2 === false) break;\n this.indexes[iterator] += 1;\n }\n delete this.indexes[iterator];\n return result2;\n }\n every(condition) {\n return this.nodes.every(condition);\n }\n getIterator() {\n if (!this.lastEach) this.lastEach = 0;\n if (!this.indexes) this.indexes = {};\n this.lastEach += 1;\n let iterator = this.lastEach;\n this.indexes[iterator] = 0;\n return iterator;\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (!node2[prop]) {\n return node2[prop];\n } else if (prop === \"each\" || typeof prop === \"string\" && prop.startsWith(\"walk\")) {\n return (...args) => {\n return node2[prop](\n ...args.map((i2) => {\n if (typeof i2 === \"function\") {\n return (child, index2) => i2(child.toProxy(), index2);\n } else {\n return i2;\n }\n })\n );\n };\n } else if (prop === \"every\" || prop === \"some\") {\n return (cb) => {\n return node2[prop](\n (child, ...other) => cb(child.toProxy(), ...other)\n );\n };\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else if (prop === \"nodes\") {\n return node2.nodes.map((i2) => i2.toProxy());\n } else if (prop === \"first\" || prop === \"last\") {\n return node2[prop].toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"name\" || prop === \"params\" || prop === \"selector\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n index(child) {\n if (typeof child === \"number\") return child;\n if (child.proxyOf) child = child.proxyOf;\n return this.proxyOf.nodes.indexOf(child);\n }\n insertAfter(exist, add) {\n let existIndex = this.index(exist);\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex < index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n insertBefore(exist, add) {\n let existIndex = this.index(exist);\n let type = existIndex === 0 ? \"prepend\" : false;\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex <= index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n normalize(nodes, sample) {\n if (typeof nodes === \"string\") {\n nodes = cleanSource$1(parse$4$1(nodes).nodes);\n } else if (typeof nodes === \"undefined\") {\n nodes = [];\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type === \"root\" && this.type !== \"document\") {\n nodes = nodes.nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type) {\n nodes = [nodes];\n } else if (nodes.prop) {\n if (typeof nodes.value === \"undefined\") {\n throw new Error(\"Value field is missed in node creation\");\n } else if (typeof nodes.value !== \"string\") {\n nodes.value = String(nodes.value);\n }\n nodes = [new Declaration$3$1(nodes)];\n } else if (nodes.selector) {\n nodes = [new Rule$4$1(nodes)];\n } else if (nodes.name) {\n nodes = [new AtRule$4$1(nodes)];\n } else if (nodes.text) {\n nodes = [new Comment$3$1(nodes)];\n } else {\n throw new Error(\"Unknown node type in node creation\");\n }\n let processed = nodes.map((i2) => {\n if (!i2[my$1$1]) Container.rebuild(i2);\n i2 = i2.proxyOf;\n if (i2.parent) i2.parent.removeChild(i2);\n if (i2[isClean$1$1]) markDirtyUp$1(i2);\n if (typeof i2.raws.before === \"undefined\") {\n if (sample && typeof sample.raws.before !== \"undefined\") {\n i2.raws.before = sample.raws.before.replace(/\\S/g, \"\");\n }\n }\n i2.parent = this.proxyOf;\n return i2;\n });\n return processed;\n }\n prepend(...children) {\n children = children.reverse();\n for (let child of children) {\n let nodes = this.normalize(child, this.first, \"prepend\").reverse();\n for (let node2 of nodes) this.proxyOf.nodes.unshift(node2);\n for (let id in this.indexes) {\n this.indexes[id] = this.indexes[id] + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n push(child) {\n child.parent = this;\n this.proxyOf.nodes.push(child);\n return this;\n }\n removeAll() {\n for (let node2 of this.proxyOf.nodes) node2.parent = void 0;\n this.proxyOf.nodes = [];\n this.markDirty();\n return this;\n }\n removeChild(child) {\n child = this.index(child);\n this.proxyOf.nodes[child].parent = void 0;\n this.proxyOf.nodes.splice(child, 1);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (index2 >= child) {\n this.indexes[id] = index2 - 1;\n }\n }\n this.markDirty();\n return this;\n }\n replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {};\n }\n this.walkDecls((decl) => {\n if (opts.props && !opts.props.includes(decl.prop)) return;\n if (opts.fast && !decl.value.includes(opts.fast)) return;\n decl.value = decl.value.replace(pattern, callback);\n });\n this.markDirty();\n return this;\n }\n some(condition) {\n return this.nodes.some(condition);\n }\n walk(callback) {\n return this.each((child, i2) => {\n let result2;\n try {\n result2 = callback(child, i2);\n } catch (e2) {\n throw child.addToError(e2);\n }\n if (result2 !== false && child.walk) {\n result2 = child.walk(callback);\n }\n return result2;\n });\n }\n walkAtRules(name, callback) {\n if (!callback) {\n callback = name;\n return this.walk((child, i2) => {\n if (child.type === \"atrule\") {\n return callback(child, i2);\n }\n });\n }\n if (name instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && name.test(child.name)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && child.name === name) {\n return callback(child, i2);\n }\n });\n }\n walkComments(callback) {\n return this.walk((child, i2) => {\n if (child.type === \"comment\") {\n return callback(child, i2);\n }\n });\n }\n walkDecls(prop, callback) {\n if (!callback) {\n callback = prop;\n return this.walk((child, i2) => {\n if (child.type === \"decl\") {\n return callback(child, i2);\n }\n });\n }\n if (prop instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && prop.test(child.prop)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && child.prop === prop) {\n return callback(child, i2);\n }\n });\n }\n walkRules(selector, callback) {\n if (!callback) {\n callback = selector;\n return this.walk((child, i2) => {\n if (child.type === \"rule\") {\n return callback(child, i2);\n }\n });\n }\n if (selector instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && selector.test(child.selector)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && child.selector === selector) {\n return callback(child, i2);\n }\n });\n }\n get first() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[0];\n }\n get last() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n }\n};\nContainer$7$1.registerParse = (dependant) => {\n parse$4$1 = dependant;\n};\nContainer$7$1.registerRule = (dependant) => {\n Rule$4$1 = dependant;\n};\nContainer$7$1.registerAtRule = (dependant) => {\n AtRule$4$1 = dependant;\n};\nContainer$7$1.registerRoot = (dependant) => {\n Root$6$1 = dependant;\n};\nvar container$1 = Container$7$1;\nContainer$7$1.default = Container$7$1;\nContainer$7$1.rebuild = (node2) => {\n if (node2.type === \"atrule\") {\n Object.setPrototypeOf(node2, AtRule$4$1.prototype);\n } else if (node2.type === \"rule\") {\n Object.setPrototypeOf(node2, Rule$4$1.prototype);\n } else if (node2.type === \"decl\") {\n Object.setPrototypeOf(node2, Declaration$3$1.prototype);\n } else if (node2.type === \"comment\") {\n Object.setPrototypeOf(node2, Comment$3$1.prototype);\n } else if (node2.type === \"root\") {\n Object.setPrototypeOf(node2, Root$6$1.prototype);\n }\n node2[my$1$1] = true;\n if (node2.nodes) {\n node2.nodes.forEach((child) => {\n Container$7$1.rebuild(child);\n });\n }\n};\nlet Container$6$1 = container$1;\nlet LazyResult$4$1, Processor$3$1;\nlet Document$3$1 = class Document2 extends Container$6$1 {\n constructor(defaults) {\n super({ type: \"document\", ...defaults });\n if (!this.nodes) {\n this.nodes = [];\n }\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$4$1(new Processor$3$1(), this, opts);\n return lazy.stringify();\n }\n};\nDocument$3$1.registerLazyResult = (dependant) => {\n LazyResult$4$1 = dependant;\n};\nDocument$3$1.registerProcessor = (dependant) => {\n Processor$3$1 = dependant;\n};\nvar document$1$1 = Document$3$1;\nDocument$3$1.default = Document$3$1;\nlet printed$1 = {};\nvar warnOnce$2$1 = function warnOnce(message) {\n if (printed$1[message]) return;\n printed$1[message] = true;\n if (typeof console !== \"undefined\" && console.warn) {\n console.warn(message);\n }\n};\nlet Warning$2$1 = class Warning {\n constructor(text, opts = {}) {\n this.type = \"warning\";\n this.text = text;\n if (opts.node && opts.node.source) {\n let range = opts.node.rangeBy(opts);\n this.line = range.start.line;\n this.column = range.start.column;\n this.endLine = range.end.line;\n this.endColumn = range.end.column;\n }\n for (let opt in opts) this[opt] = opts[opt];\n }\n toString() {\n if (this.node) {\n return this.node.error(this.text, {\n index: this.index,\n plugin: this.plugin,\n word: this.word\n }).message;\n }\n if (this.plugin) {\n return this.plugin + \": \" + this.text;\n }\n return this.text;\n }\n};\nvar warning$1 = Warning$2$1;\nWarning$2$1.default = Warning$2$1;\nlet Warning$1$1 = warning$1;\nlet Result$3$1 = class Result {\n constructor(processor2, root2, opts) {\n this.processor = processor2;\n this.messages = [];\n this.root = root2;\n this.opts = opts;\n this.css = void 0;\n this.map = void 0;\n }\n toString() {\n return this.css;\n }\n warn(text, opts = {}) {\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin;\n }\n }\n let warning2 = new Warning$1$1(text, opts);\n this.messages.push(warning2);\n return warning2;\n }\n warnings() {\n return this.messages.filter((i2) => i2.type === \"warning\");\n }\n get content() {\n return this.css;\n }\n};\nvar result$1 = Result$3$1;\nResult$3$1.default = Result$3$1;\nconst SINGLE_QUOTE$1 = \"'\".charCodeAt(0);\nconst DOUBLE_QUOTE$1 = '\"'.charCodeAt(0);\nconst BACKSLASH$1 = \"\\\\\".charCodeAt(0);\nconst SLASH$1 = \"/\".charCodeAt(0);\nconst NEWLINE$1 = \"\\n\".charCodeAt(0);\nconst SPACE$1 = \" \".charCodeAt(0);\nconst FEED$1 = \"\\f\".charCodeAt(0);\nconst TAB$1 = \"\t\".charCodeAt(0);\nconst CR$1 = \"\\r\".charCodeAt(0);\nconst OPEN_SQUARE$1 = \"[\".charCodeAt(0);\nconst CLOSE_SQUARE$1 = \"]\".charCodeAt(0);\nconst OPEN_PARENTHESES$1 = \"(\".charCodeAt(0);\nconst CLOSE_PARENTHESES$1 = \")\".charCodeAt(0);\nconst OPEN_CURLY$1 = \"{\".charCodeAt(0);\nconst CLOSE_CURLY$1 = \"}\".charCodeAt(0);\nconst SEMICOLON$1 = \";\".charCodeAt(0);\nconst ASTERISK$1 = \"*\".charCodeAt(0);\nconst COLON$1 = \":\".charCodeAt(0);\nconst AT$1 = \"@\".charCodeAt(0);\nconst RE_AT_END$1 = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g;\nconst RE_WORD_END$1 = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g;\nconst RE_BAD_BRACKET$1 = /.[\\r\\n\"'(/\\\\]/;\nconst RE_HEX_ESCAPE$1 = /[\\da-f]/i;\nvar tokenize$1 = function tokenizer(input2, options = {}) {\n let css = input2.css.valueOf();\n let ignore = options.ignoreErrors;\n let code, next, quote, content, escape;\n let escaped, escapePos, prev, n2, currentToken;\n let length = css.length;\n let pos = 0;\n let buffer = [];\n let returned = [];\n function position() {\n return pos;\n }\n function unclosed(what) {\n throw input2.error(\"Unclosed \" + what, pos);\n }\n function endOfFile() {\n return returned.length === 0 && pos >= length;\n }\n function nextToken(opts) {\n if (returned.length) return returned.pop();\n if (pos >= length) return;\n let ignoreUnclosed = opts ? opts.ignoreUnclosed : false;\n code = css.charCodeAt(pos);\n switch (code) {\n case NEWLINE$1:\n case SPACE$1:\n case TAB$1:\n case CR$1:\n case FEED$1: {\n next = pos;\n do {\n next += 1;\n code = css.charCodeAt(next);\n } while (code === SPACE$1 || code === NEWLINE$1 || code === TAB$1 || code === CR$1 || code === FEED$1);\n currentToken = [\"space\", css.slice(pos, next)];\n pos = next - 1;\n break;\n }\n case OPEN_SQUARE$1:\n case CLOSE_SQUARE$1:\n case OPEN_CURLY$1:\n case CLOSE_CURLY$1:\n case COLON$1:\n case SEMICOLON$1:\n case CLOSE_PARENTHESES$1: {\n let controlChar = String.fromCharCode(code);\n currentToken = [controlChar, controlChar, pos];\n break;\n }\n case OPEN_PARENTHESES$1: {\n prev = buffer.length ? buffer.pop()[1] : \"\";\n n2 = css.charCodeAt(pos + 1);\n if (prev === \"url\" && n2 !== SINGLE_QUOTE$1 && n2 !== DOUBLE_QUOTE$1 && n2 !== SPACE$1 && n2 !== NEWLINE$1 && n2 !== TAB$1 && n2 !== FEED$1 && n2 !== CR$1) {\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(\")\", next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos;\n break;\n } else {\n unclosed(\"bracket\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH$1) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"brackets\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n next = css.indexOf(\")\", pos + 1);\n content = css.slice(pos, next + 1);\n if (next === -1 || RE_BAD_BRACKET$1.test(content)) {\n currentToken = [\"(\", \"(\", pos];\n } else {\n currentToken = [\"brackets\", content, pos, next];\n pos = next;\n }\n }\n break;\n }\n case SINGLE_QUOTE$1:\n case DOUBLE_QUOTE$1: {\n quote = code === SINGLE_QUOTE$1 ? \"'\" : '\"';\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(quote, next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos + 1;\n break;\n } else {\n unclosed(\"string\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH$1) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"string\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case AT$1: {\n RE_AT_END$1.lastIndex = pos + 1;\n RE_AT_END$1.test(css);\n if (RE_AT_END$1.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_AT_END$1.lastIndex - 2;\n }\n currentToken = [\"at-word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case BACKSLASH$1: {\n next = pos;\n escape = true;\n while (css.charCodeAt(next + 1) === BACKSLASH$1) {\n next += 1;\n escape = !escape;\n }\n code = css.charCodeAt(next + 1);\n if (escape && code !== SLASH$1 && code !== SPACE$1 && code !== NEWLINE$1 && code !== TAB$1 && code !== CR$1 && code !== FEED$1) {\n next += 1;\n if (RE_HEX_ESCAPE$1.test(css.charAt(next))) {\n while (RE_HEX_ESCAPE$1.test(css.charAt(next + 1))) {\n next += 1;\n }\n if (css.charCodeAt(next + 1) === SPACE$1) {\n next += 1;\n }\n }\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n default: {\n if (code === SLASH$1 && css.charCodeAt(pos + 1) === ASTERISK$1) {\n next = css.indexOf(\"*/\", pos + 2) + 1;\n if (next === 0) {\n if (ignore || ignoreUnclosed) {\n next = css.length;\n } else {\n unclosed(\"comment\");\n }\n }\n currentToken = [\"comment\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n RE_WORD_END$1.lastIndex = pos + 1;\n RE_WORD_END$1.test(css);\n if (RE_WORD_END$1.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_WORD_END$1.lastIndex - 2;\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n buffer.push(currentToken);\n pos = next;\n }\n break;\n }\n }\n pos++;\n return currentToken;\n }\n function back(token) {\n returned.push(token);\n }\n return {\n back,\n endOfFile,\n nextToken,\n position\n };\n};\nlet Container$5$1 = container$1;\nlet AtRule$3$1 = class AtRule extends Container$5$1 {\n constructor(defaults) {\n super(defaults);\n this.type = \"atrule\";\n }\n append(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.append(...children);\n }\n prepend(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.prepend(...children);\n }\n};\nvar atRule$1 = AtRule$3$1;\nAtRule$3$1.default = AtRule$3$1;\nContainer$5$1.registerAtRule(AtRule$3$1);\nlet Container$4$1 = container$1;\nlet LazyResult$3$1, Processor$2$1;\nlet Root$5$1 = class Root extends Container$4$1 {\n constructor(defaults) {\n super(defaults);\n this.type = \"root\";\n if (!this.nodes) this.nodes = [];\n }\n normalize(child, sample, type) {\n let nodes = super.normalize(child);\n if (sample) {\n if (type === \"prepend\") {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before;\n } else {\n delete sample.raws.before;\n }\n } else if (this.first !== sample) {\n for (let node2 of nodes) {\n node2.raws.before = sample.raws.before;\n }\n }\n }\n return nodes;\n }\n removeChild(child, ignore) {\n let index2 = this.index(child);\n if (!ignore && index2 === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index2].raws.before;\n }\n return super.removeChild(child);\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$3$1(new Processor$2$1(), this, opts);\n return lazy.stringify();\n }\n};\nRoot$5$1.registerLazyResult = (dependant) => {\n LazyResult$3$1 = dependant;\n};\nRoot$5$1.registerProcessor = (dependant) => {\n Processor$2$1 = dependant;\n};\nvar root$1 = Root$5$1;\nRoot$5$1.default = Root$5$1;\nContainer$4$1.registerRoot(Root$5$1);\nlet list$2$1 = {\n comma(string) {\n return list$2$1.split(string, [\",\"], true);\n },\n space(string) {\n let spaces = [\" \", \"\\n\", \"\t\"];\n return list$2$1.split(string, spaces);\n },\n split(string, separators, last) {\n let array = [];\n let current = \"\";\n let split = false;\n let func = 0;\n let inQuote = false;\n let prevQuote = \"\";\n let escape = false;\n for (let letter of string) {\n if (escape) {\n escape = false;\n } else if (letter === \"\\\\\") {\n escape = true;\n } else if (inQuote) {\n if (letter === prevQuote) {\n inQuote = false;\n }\n } else if (letter === '\"' || letter === \"'\") {\n inQuote = true;\n prevQuote = letter;\n } else if (letter === \"(\") {\n func += 1;\n } else if (letter === \")\") {\n if (func > 0) func -= 1;\n } else if (func === 0) {\n if (separators.includes(letter)) split = true;\n }\n if (split) {\n if (current !== \"\") array.push(current.trim());\n current = \"\";\n split = false;\n } else {\n current += letter;\n }\n }\n if (last || current !== \"\") array.push(current.trim());\n return array;\n }\n};\nvar list_1$1 = list$2$1;\nlist$2$1.default = list$2$1;\nlet Container$3$1 = container$1;\nlet list$1$1 = list_1$1;\nlet Rule$3$1 = class Rule extends Container$3$1 {\n constructor(defaults) {\n super(defaults);\n this.type = \"rule\";\n if (!this.nodes) this.nodes = [];\n }\n get selectors() {\n return list$1$1.comma(this.selector);\n }\n set selectors(values) {\n let match = this.selector ? this.selector.match(/,\\s*/) : null;\n let sep2 = match ? match[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n this.selector = values.join(sep2);\n }\n};\nvar rule$1 = Rule$3$1;\nRule$3$1.default = Rule$3$1;\nContainer$3$1.registerRule(Rule$3$1);\nlet Declaration$2$1 = declaration$1;\nlet tokenizer2$1 = tokenize$1;\nlet Comment$2$1 = comment$1;\nlet AtRule$2$1 = atRule$1;\nlet Root$4$1 = root$1;\nlet Rule$2$1 = rule$1;\nconst SAFE_COMMENT_NEIGHBOR$1 = {\n empty: true,\n space: true\n};\nfunction findLastWithPosition$1(tokens) {\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n let token = tokens[i2];\n let pos = token[3] || token[2];\n if (pos) return pos;\n }\n}\nlet Parser$1$1 = class Parser {\n constructor(input2) {\n this.input = input2;\n this.root = new Root$4$1();\n this.current = this.root;\n this.spaces = \"\";\n this.semicolon = false;\n this.createTokenizer();\n this.root.source = { input: input2, start: { column: 1, line: 1, offset: 0 } };\n }\n atrule(token) {\n let node2 = new AtRule$2$1();\n node2.name = token[1].slice(1);\n if (node2.name === \"\") {\n this.unnamedAtrule(node2, token);\n }\n this.init(node2, token[2]);\n let type;\n let prev;\n let shift;\n let last = false;\n let open = false;\n let params = [];\n let brackets = [];\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n type = token[0];\n if (type === \"(\" || type === \"[\") {\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (type === \"{\" && brackets.length > 0) {\n brackets.push(\"}\");\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n }\n if (brackets.length === 0) {\n if (type === \";\") {\n node2.source.end = this.getPosition(token[2]);\n node2.source.end.offset++;\n this.semicolon = true;\n break;\n } else if (type === \"{\") {\n open = true;\n break;\n } else if (type === \"}\") {\n if (params.length > 0) {\n shift = params.length - 1;\n prev = params[shift];\n while (prev && prev[0] === \"space\") {\n prev = params[--shift];\n }\n if (prev) {\n node2.source.end = this.getPosition(prev[3] || prev[2]);\n node2.source.end.offset++;\n }\n }\n this.end(token);\n break;\n } else {\n params.push(token);\n }\n } else {\n params.push(token);\n }\n if (this.tokenizer.endOfFile()) {\n last = true;\n break;\n }\n }\n node2.raws.between = this.spacesAndCommentsFromEnd(params);\n if (params.length) {\n node2.raws.afterName = this.spacesAndCommentsFromStart(params);\n this.raw(node2, \"params\", params);\n if (last) {\n token = params[params.length - 1];\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n this.spaces = node2.raws.between;\n node2.raws.between = \"\";\n }\n } else {\n node2.raws.afterName = \"\";\n node2.params = \"\";\n }\n if (open) {\n node2.nodes = [];\n this.current = node2;\n }\n }\n checkMissedSemicolon(tokens) {\n let colon = this.colon(tokens);\n if (colon === false) return;\n let founded = 0;\n let token;\n for (let j = colon - 1; j >= 0; j--) {\n token = tokens[j];\n if (token[0] !== \"space\") {\n founded += 1;\n if (founded === 2) break;\n }\n }\n throw this.input.error(\n \"Missed semicolon\",\n token[0] === \"word\" ? token[3] + 1 : token[2]\n );\n }\n colon(tokens) {\n let brackets = 0;\n let token, type, prev;\n for (let [i2, element] of tokens.entries()) {\n token = element;\n type = token[0];\n if (type === \"(\") {\n brackets += 1;\n }\n if (type === \")\") {\n brackets -= 1;\n }\n if (brackets === 0 && type === \":\") {\n if (!prev) {\n this.doubleColon(token);\n } else if (prev[0] === \"word\" && prev[1] === \"progid\") {\n continue;\n } else {\n return i2;\n }\n }\n prev = token;\n }\n return false;\n }\n comment(token) {\n let node2 = new Comment$2$1();\n this.init(node2, token[2]);\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n let text = token[1].slice(2, -2);\n if (/^\\s*$/.test(text)) {\n node2.text = \"\";\n node2.raws.left = text;\n node2.raws.right = \"\";\n } else {\n let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n node2.text = match[2];\n node2.raws.left = match[1];\n node2.raws.right = match[3];\n }\n }\n createTokenizer() {\n this.tokenizer = tokenizer2$1(this.input);\n }\n decl(tokens, customProperty) {\n let node2 = new Declaration$2$1();\n this.init(node2, tokens[0][2]);\n let last = tokens[tokens.length - 1];\n if (last[0] === \";\") {\n this.semicolon = true;\n tokens.pop();\n }\n node2.source.end = this.getPosition(\n last[3] || last[2] || findLastWithPosition$1(tokens)\n );\n node2.source.end.offset++;\n while (tokens[0][0] !== \"word\") {\n if (tokens.length === 1) this.unknownWord(tokens);\n node2.raws.before += tokens.shift()[1];\n }\n node2.source.start = this.getPosition(tokens[0][2]);\n node2.prop = \"\";\n while (tokens.length) {\n let type = tokens[0][0];\n if (type === \":\" || type === \"space\" || type === \"comment\") {\n break;\n }\n node2.prop += tokens.shift()[1];\n }\n node2.raws.between = \"\";\n let token;\n while (tokens.length) {\n token = tokens.shift();\n if (token[0] === \":\") {\n node2.raws.between += token[1];\n break;\n } else {\n if (token[0] === \"word\" && /\\w/.test(token[1])) {\n this.unknownWord([token]);\n }\n node2.raws.between += token[1];\n }\n }\n if (node2.prop[0] === \"_\" || node2.prop[0] === \"*\") {\n node2.raws.before += node2.prop[0];\n node2.prop = node2.prop.slice(1);\n }\n let firstSpaces = [];\n let next;\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n firstSpaces.push(tokens.shift());\n }\n this.precheckMissedSemicolon(tokens);\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n token = tokens[i2];\n if (token[1].toLowerCase() === \"!important\") {\n node2.important = true;\n let string = this.stringFrom(tokens, i2);\n string = this.spacesFromEnd(tokens) + string;\n if (string !== \" !important\") node2.raws.important = string;\n break;\n } else if (token[1].toLowerCase() === \"important\") {\n let cache = tokens.slice(0);\n let str = \"\";\n for (let j = i2; j > 0; j--) {\n let type = cache[j][0];\n if (str.trim().indexOf(\"!\") === 0 && type !== \"space\") {\n break;\n }\n str = cache.pop()[1] + str;\n }\n if (str.trim().indexOf(\"!\") === 0) {\n node2.important = true;\n node2.raws.important = str;\n tokens = cache;\n }\n }\n if (token[0] !== \"space\" && token[0] !== \"comment\") {\n break;\n }\n }\n let hasWord = tokens.some((i2) => i2[0] !== \"space\" && i2[0] !== \"comment\");\n if (hasWord) {\n node2.raws.between += firstSpaces.map((i2) => i2[1]).join(\"\");\n firstSpaces = [];\n }\n this.raw(node2, \"value\", firstSpaces.concat(tokens), customProperty);\n if (node2.value.includes(\":\") && !customProperty) {\n this.checkMissedSemicolon(tokens);\n }\n }\n doubleColon(token) {\n throw this.input.error(\n \"Double colon\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n emptyRule(token) {\n let node2 = new Rule$2$1();\n this.init(node2, token[2]);\n node2.selector = \"\";\n node2.raws.between = \"\";\n this.current = node2;\n }\n end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.semicolon = false;\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.spaces = \"\";\n if (this.current.parent) {\n this.current.source.end = this.getPosition(token[2]);\n this.current.source.end.offset++;\n this.current = this.current.parent;\n } else {\n this.unexpectedClose(token);\n }\n }\n endFile() {\n if (this.current.parent) this.unclosedBlock();\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.root.source.end = this.getPosition(this.tokenizer.position());\n }\n freeSemicolon(token) {\n this.spaces += token[1];\n if (this.current.nodes) {\n let prev = this.current.nodes[this.current.nodes.length - 1];\n if (prev && prev.type === \"rule\" && !prev.raws.ownSemicolon) {\n prev.raws.ownSemicolon = this.spaces;\n this.spaces = \"\";\n }\n }\n }\n // Helpers\n getPosition(offset) {\n let pos = this.input.fromOffset(offset);\n return {\n column: pos.col,\n line: pos.line,\n offset\n };\n }\n init(node2, offset) {\n this.current.push(node2);\n node2.source = {\n input: this.input,\n start: this.getPosition(offset)\n };\n node2.raws.before = this.spaces;\n this.spaces = \"\";\n if (node2.type !== \"comment\") this.semicolon = false;\n }\n other(start) {\n let end = false;\n let type = null;\n let colon = false;\n let bracket = null;\n let brackets = [];\n let customProperty = start[1].startsWith(\"--\");\n let tokens = [];\n let token = start;\n while (token) {\n type = token[0];\n tokens.push(token);\n if (type === \"(\" || type === \"[\") {\n if (!bracket) bracket = token;\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (customProperty && colon && type === \"{\") {\n if (!bracket) bracket = token;\n brackets.push(\"}\");\n } else if (brackets.length === 0) {\n if (type === \";\") {\n if (colon) {\n this.decl(tokens, customProperty);\n return;\n } else {\n break;\n }\n } else if (type === \"{\") {\n this.rule(tokens);\n return;\n } else if (type === \"}\") {\n this.tokenizer.back(tokens.pop());\n end = true;\n break;\n } else if (type === \":\") {\n colon = true;\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n if (brackets.length === 0) bracket = null;\n }\n token = this.tokenizer.nextToken();\n }\n if (this.tokenizer.endOfFile()) end = true;\n if (brackets.length > 0) this.unclosedBracket(bracket);\n if (end && colon) {\n if (!customProperty) {\n while (tokens.length) {\n token = tokens[tokens.length - 1][0];\n if (token !== \"space\" && token !== \"comment\") break;\n this.tokenizer.back(tokens.pop());\n }\n }\n this.decl(tokens, customProperty);\n } else {\n this.unknownWord(tokens);\n }\n }\n parse() {\n let token;\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n switch (token[0]) {\n case \"space\":\n this.spaces += token[1];\n break;\n case \";\":\n this.freeSemicolon(token);\n break;\n case \"}\":\n this.end(token);\n break;\n case \"comment\":\n this.comment(token);\n break;\n case \"at-word\":\n this.atrule(token);\n break;\n case \"{\":\n this.emptyRule(token);\n break;\n default:\n this.other(token);\n break;\n }\n }\n this.endFile();\n }\n precheckMissedSemicolon() {\n }\n raw(node2, prop, tokens, customProperty) {\n let token, type;\n let length = tokens.length;\n let value = \"\";\n let clean = true;\n let next, prev;\n for (let i2 = 0; i2 < length; i2 += 1) {\n token = tokens[i2];\n type = token[0];\n if (type === \"space\" && i2 === length - 1 && !customProperty) {\n clean = false;\n } else if (type === \"comment\") {\n prev = tokens[i2 - 1] ? tokens[i2 - 1][0] : \"empty\";\n next = tokens[i2 + 1] ? tokens[i2 + 1][0] : \"empty\";\n if (!SAFE_COMMENT_NEIGHBOR$1[prev] && !SAFE_COMMENT_NEIGHBOR$1[next]) {\n if (value.slice(-1) === \",\") {\n clean = false;\n } else {\n value += token[1];\n }\n } else {\n clean = false;\n }\n } else {\n value += token[1];\n }\n }\n if (!clean) {\n let raw = tokens.reduce((all, i2) => all + i2[1], \"\");\n node2.raws[prop] = { raw, value };\n }\n node2[prop] = value;\n }\n rule(tokens) {\n tokens.pop();\n let node2 = new Rule$2$1();\n this.init(node2, tokens[0][2]);\n node2.raws.between = this.spacesAndCommentsFromEnd(tokens);\n this.raw(node2, \"selector\", tokens);\n this.current = node2;\n }\n spacesAndCommentsFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\" && lastTokenType !== \"comment\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n // Errors\n spacesAndCommentsFromStart(tokens) {\n let next;\n let spaces = \"\";\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n spaces += tokens.shift()[1];\n }\n return spaces;\n }\n spacesFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n stringFrom(tokens, from) {\n let result2 = \"\";\n for (let i2 = from; i2 < tokens.length; i2++) {\n result2 += tokens[i2][1];\n }\n tokens.splice(from, tokens.length - from);\n return result2;\n }\n unclosedBlock() {\n let pos = this.current.source.start;\n throw this.input.error(\"Unclosed block\", pos.line, pos.column);\n }\n unclosedBracket(bracket) {\n throw this.input.error(\n \"Unclosed bracket\",\n { offset: bracket[2] },\n { offset: bracket[2] + 1 }\n );\n }\n unexpectedClose(token) {\n throw this.input.error(\n \"Unexpected }\",\n { offset: token[2] },\n { offset: token[2] + 1 }\n );\n }\n unknownWord(tokens) {\n throw this.input.error(\n \"Unknown word\",\n { offset: tokens[0][2] },\n { offset: tokens[0][2] + tokens[0][1].length }\n );\n }\n unnamedAtrule(node2, token) {\n throw this.input.error(\n \"At-rule without name\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n};\nvar parser$1 = Parser$1$1;\nlet Container$2$1 = container$1;\nlet Parser2$1 = parser$1;\nlet Input$2$1 = input$1;\nfunction parse$3$1(css, opts) {\n let input2 = new Input$2$1(css, opts);\n let parser2 = new Parser2$1(input2);\n try {\n parser2.parse();\n } catch (e2) {\n if (process.env.NODE_ENV !== \"production\") {\n if (e2.name === \"CssSyntaxError\" && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser\";\n } else if (/\\.sass/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser\";\n } else if (/\\.less$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser\";\n }\n }\n }\n throw e2;\n }\n return parser2.root;\n}\nvar parse_1$1 = parse$3$1;\nparse$3$1.default = parse$3$1;\nContainer$2$1.registerParse(parse$3$1);\nlet { isClean: isClean$3, my: my$3 } = symbols$1;\nlet MapGenerator$1$1 = mapGenerator$1;\nlet stringify$2$1 = stringify_1$1;\nlet Container$1$1 = container$1;\nlet Document$2$1 = document$1$1;\nlet warnOnce$1$1 = warnOnce$2$1;\nlet Result$2$1 = result$1;\nlet parse$2$1 = parse_1$1;\nlet Root$3$1 = root$1;\nconst TYPE_TO_CLASS_NAME$1 = {\n atrule: \"AtRule\",\n comment: \"Comment\",\n decl: \"Declaration\",\n document: \"Document\",\n root: \"Root\",\n rule: \"Rule\"\n};\nconst PLUGIN_PROPS$1 = {\n AtRule: true,\n AtRuleExit: true,\n Comment: true,\n CommentExit: true,\n Declaration: true,\n DeclarationExit: true,\n Document: true,\n DocumentExit: true,\n Once: true,\n OnceExit: true,\n postcssPlugin: true,\n prepare: true,\n Root: true,\n RootExit: true,\n Rule: true,\n RuleExit: true\n};\nconst NOT_VISITORS$1 = {\n Once: true,\n postcssPlugin: true,\n prepare: true\n};\nconst CHILDREN$1 = 0;\nfunction isPromise$1(obj) {\n return typeof obj === \"object\" && typeof obj.then === \"function\";\n}\nfunction getEvents$1(node2) {\n let key = false;\n let type = TYPE_TO_CLASS_NAME$1[node2.type];\n if (node2.type === \"decl\") {\n key = node2.prop.toLowerCase();\n } else if (node2.type === \"atrule\") {\n key = node2.name.toLowerCase();\n }\n if (key && node2.append) {\n return [\n type,\n type + \"-\" + key,\n CHILDREN$1,\n type + \"Exit\",\n type + \"Exit-\" + key\n ];\n } else if (key) {\n return [type, type + \"-\" + key, type + \"Exit\", type + \"Exit-\" + key];\n } else if (node2.append) {\n return [type, CHILDREN$1, type + \"Exit\"];\n } else {\n return [type, type + \"Exit\"];\n }\n}\nfunction toStack$1(node2) {\n let events;\n if (node2.type === \"document\") {\n events = [\"Document\", CHILDREN$1, \"DocumentExit\"];\n } else if (node2.type === \"root\") {\n events = [\"Root\", CHILDREN$1, \"RootExit\"];\n } else {\n events = getEvents$1(node2);\n }\n return {\n eventIndex: 0,\n events,\n iterator: 0,\n node: node2,\n visitorIndex: 0,\n visitors: []\n };\n}\nfunction cleanMarks$1(node2) {\n node2[isClean$3] = false;\n if (node2.nodes) node2.nodes.forEach((i2) => cleanMarks$1(i2));\n return node2;\n}\nlet postcss$2$1 = {};\nlet LazyResult$2$1 = class LazyResult {\n constructor(processor2, css, opts) {\n this.stringified = false;\n this.processed = false;\n let root2;\n if (typeof css === \"object\" && css !== null && (css.type === \"root\" || css.type === \"document\")) {\n root2 = cleanMarks$1(css);\n } else if (css instanceof LazyResult || css instanceof Result$2$1) {\n root2 = cleanMarks$1(css.root);\n if (css.map) {\n if (typeof opts.map === \"undefined\") opts.map = {};\n if (!opts.map.inline) opts.map.inline = false;\n opts.map.prev = css.map;\n }\n } else {\n let parser2 = parse$2$1;\n if (opts.syntax) parser2 = opts.syntax.parse;\n if (opts.parser) parser2 = opts.parser;\n if (parser2.parse) parser2 = parser2.parse;\n try {\n root2 = parser2(css, opts);\n } catch (error) {\n this.processed = true;\n this.error = error;\n }\n if (root2 && !root2[my$3]) {\n Container$1$1.rebuild(root2);\n }\n }\n this.result = new Result$2$1(processor2, root2, opts);\n this.helpers = { ...postcss$2$1, postcss: postcss$2$1, result: this.result };\n this.plugins = this.processor.plugins.map((plugin22) => {\n if (typeof plugin22 === \"object\" && plugin22.prepare) {\n return { ...plugin22, ...plugin22.prepare(this.result) };\n } else {\n return plugin22;\n }\n });\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n if (this.processed) return Promise.resolve(this.result);\n if (!this.processing) {\n this.processing = this.runAsync();\n }\n return this.processing;\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n getAsyncError() {\n throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n }\n handleError(error, node2) {\n let plugin22 = this.result.lastPlugin;\n try {\n if (node2) node2.addToError(error);\n this.error = error;\n if (error.name === \"CssSyntaxError\" && !error.plugin) {\n error.plugin = plugin22.postcssPlugin;\n error.setMessage();\n } else if (plugin22.postcssVersion) {\n if (process.env.NODE_ENV !== \"production\") {\n let pluginName = plugin22.postcssPlugin;\n let pluginVer = plugin22.postcssVersion;\n let runtimeVer = this.result.processor.version;\n let a2 = pluginVer.split(\".\");\n let b = runtimeVer.split(\".\");\n if (a2[0] !== b[0] || parseInt(a2[1]) > parseInt(b[1])) {\n console.error(\n \"Unknown error from PostCSS plugin. Your current PostCSS version is \" + runtimeVer + \", but \" + pluginName + \" uses \" + pluginVer + \". Perhaps this is the source of the error below.\"\n );\n }\n }\n }\n } catch (err) {\n if (console && console.error) console.error(err);\n }\n return error;\n }\n prepareVisitors() {\n this.listeners = {};\n let add = (plugin22, type, cb) => {\n if (!this.listeners[type]) this.listeners[type] = [];\n this.listeners[type].push([plugin22, cb]);\n };\n for (let plugin22 of this.plugins) {\n if (typeof plugin22 === \"object\") {\n for (let event in plugin22) {\n if (!PLUGIN_PROPS$1[event] && /^[A-Z]/.test(event)) {\n throw new Error(\n `Unknown event ${event} in ${plugin22.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`\n );\n }\n if (!NOT_VISITORS$1[event]) {\n if (typeof plugin22[event] === \"object\") {\n for (let filter in plugin22[event]) {\n if (filter === \"*\") {\n add(plugin22, event, plugin22[event][filter]);\n } else {\n add(\n plugin22,\n event + \"-\" + filter.toLowerCase(),\n plugin22[event][filter]\n );\n }\n }\n } else if (typeof plugin22[event] === \"function\") {\n add(plugin22, event, plugin22[event]);\n }\n }\n }\n }\n }\n this.hasListener = Object.keys(this.listeners).length > 0;\n }\n async runAsync() {\n this.plugin = 0;\n for (let i2 = 0; i2 < this.plugins.length; i2++) {\n let plugin22 = this.plugins[i2];\n let promise = this.runOnRoot(plugin22);\n if (isPromise$1(promise)) {\n try {\n await promise;\n } catch (error) {\n throw this.handleError(error);\n }\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean$3]) {\n root2[isClean$3] = true;\n let stack = [toStack$1(root2)];\n while (stack.length > 0) {\n let promise = this.visitTick(stack);\n if (isPromise$1(promise)) {\n try {\n await promise;\n } catch (e2) {\n let node2 = stack[stack.length - 1].node;\n throw this.handleError(e2, node2);\n }\n }\n }\n }\n if (this.listeners.OnceExit) {\n for (let [plugin22, visitor] of this.listeners.OnceExit) {\n this.result.lastPlugin = plugin22;\n try {\n if (root2.type === \"document\") {\n let roots = root2.nodes.map(\n (subRoot) => visitor(subRoot, this.helpers)\n );\n await Promise.all(roots);\n } else {\n await visitor(root2, this.helpers);\n }\n } catch (e2) {\n throw this.handleError(e2);\n }\n }\n }\n }\n this.processed = true;\n return this.stringify();\n }\n runOnRoot(plugin22) {\n this.result.lastPlugin = plugin22;\n try {\n if (typeof plugin22 === \"object\" && plugin22.Once) {\n if (this.result.root.type === \"document\") {\n let roots = this.result.root.nodes.map(\n (root2) => plugin22.Once(root2, this.helpers)\n );\n if (isPromise$1(roots[0])) {\n return Promise.all(roots);\n }\n return roots;\n }\n return plugin22.Once(this.result.root, this.helpers);\n } else if (typeof plugin22 === \"function\") {\n return plugin22(this.result.root, this.result);\n }\n } catch (error) {\n throw this.handleError(error);\n }\n }\n stringify() {\n if (this.error) throw this.error;\n if (this.stringified) return this.result;\n this.stringified = true;\n this.sync();\n let opts = this.result.opts;\n let str = stringify$2$1;\n if (opts.syntax) str = opts.syntax.stringify;\n if (opts.stringifier) str = opts.stringifier;\n if (str.stringify) str = str.stringify;\n let map = new MapGenerator$1$1(str, this.result.root, this.result.opts);\n let data = map.generate();\n this.result.css = data[0];\n this.result.map = data[1];\n return this.result;\n }\n sync() {\n if (this.error) throw this.error;\n if (this.processed) return this.result;\n this.processed = true;\n if (this.processing) {\n throw this.getAsyncError();\n }\n for (let plugin22 of this.plugins) {\n let promise = this.runOnRoot(plugin22);\n if (isPromise$1(promise)) {\n throw this.getAsyncError();\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean$3]) {\n root2[isClean$3] = true;\n this.walkSync(root2);\n }\n if (this.listeners.OnceExit) {\n if (root2.type === \"document\") {\n for (let subRoot of root2.nodes) {\n this.visitSync(this.listeners.OnceExit, subRoot);\n }\n } else {\n this.visitSync(this.listeners.OnceExit, root2);\n }\n }\n }\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this.opts)) {\n warnOnce$1$1(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this.css;\n }\n visitSync(visitors, node2) {\n for (let [plugin22, visitor] of visitors) {\n this.result.lastPlugin = plugin22;\n let promise;\n try {\n promise = visitor(node2, this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2.proxyOf);\n }\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n return true;\n }\n if (isPromise$1(promise)) {\n throw this.getAsyncError();\n }\n }\n }\n visitTick(stack) {\n let visit2 = stack[stack.length - 1];\n let { node: node2, visitors } = visit2;\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n stack.pop();\n return;\n }\n if (visitors.length > 0 && visit2.visitorIndex < visitors.length) {\n let [plugin22, visitor] = visitors[visit2.visitorIndex];\n visit2.visitorIndex += 1;\n if (visit2.visitorIndex === visitors.length) {\n visit2.visitors = [];\n visit2.visitorIndex = 0;\n }\n this.result.lastPlugin = plugin22;\n try {\n return visitor(node2.toProxy(), this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2);\n }\n }\n if (visit2.iterator !== 0) {\n let iterator = visit2.iterator;\n let child;\n while (child = node2.nodes[node2.indexes[iterator]]) {\n node2.indexes[iterator] += 1;\n if (!child[isClean$3]) {\n child[isClean$3] = true;\n stack.push(toStack$1(child));\n return;\n }\n }\n visit2.iterator = 0;\n delete node2.indexes[iterator];\n }\n let events = visit2.events;\n while (visit2.eventIndex < events.length) {\n let event = events[visit2.eventIndex];\n visit2.eventIndex += 1;\n if (event === CHILDREN$1) {\n if (node2.nodes && node2.nodes.length) {\n node2[isClean$3] = true;\n visit2.iterator = node2.getIterator();\n }\n return;\n } else if (this.listeners[event]) {\n visit2.visitors = this.listeners[event];\n return;\n }\n }\n stack.pop();\n }\n walkSync(node2) {\n node2[isClean$3] = true;\n let events = getEvents$1(node2);\n for (let event of events) {\n if (event === CHILDREN$1) {\n if (node2.nodes) {\n node2.each((child) => {\n if (!child[isClean$3]) this.walkSync(child);\n });\n }\n } else {\n let visitors = this.listeners[event];\n if (visitors) {\n if (this.visitSync(visitors, node2.toProxy())) return;\n }\n }\n }\n }\n warnings() {\n return this.sync().warnings();\n }\n get content() {\n return this.stringify().content;\n }\n get css() {\n return this.stringify().css;\n }\n get map() {\n return this.stringify().map;\n }\n get messages() {\n return this.sync().messages;\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n return this.sync().root;\n }\n get [Symbol.toStringTag]() {\n return \"LazyResult\";\n }\n};\nLazyResult$2$1.registerPostcss = (dependant) => {\n postcss$2$1 = dependant;\n};\nvar lazyResult$1 = LazyResult$2$1;\nLazyResult$2$1.default = LazyResult$2$1;\nRoot$3$1.registerLazyResult(LazyResult$2$1);\nDocument$2$1.registerLazyResult(LazyResult$2$1);\nlet MapGenerator2$1 = mapGenerator$1;\nlet stringify$1$1 = stringify_1$1;\nlet warnOnce2$1 = warnOnce$2$1;\nlet parse$1$1 = parse_1$1;\nconst Result$1$1 = result$1;\nlet NoWorkResult$1$1 = class NoWorkResult {\n constructor(processor2, css, opts) {\n css = css.toString();\n this.stringified = false;\n this._processor = processor2;\n this._css = css;\n this._opts = opts;\n this._map = void 0;\n let root2;\n let str = stringify$1$1;\n this.result = new Result$1$1(this._processor, root2, this._opts);\n this.result.css = css;\n let self = this;\n Object.defineProperty(this.result, \"root\", {\n get() {\n return self.root;\n }\n });\n let map = new MapGenerator2$1(str, root2, this._opts, css);\n if (map.isMap()) {\n let [generatedCSS, generatedMap] = map.generate();\n if (generatedCSS) {\n this.result.css = generatedCSS;\n }\n if (generatedMap) {\n this.result.map = generatedMap;\n }\n } else {\n map.clearAnnotation();\n this.result.css = map.css;\n }\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n return Promise.resolve(this.result);\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n sync() {\n if (this.error) throw this.error;\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this._opts)) {\n warnOnce2$1(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this._css;\n }\n warnings() {\n return [];\n }\n get content() {\n return this.result.css;\n }\n get css() {\n return this.result.css;\n }\n get map() {\n return this.result.map;\n }\n get messages() {\n return [];\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n if (this._root) {\n return this._root;\n }\n let root2;\n let parser2 = parse$1$1;\n try {\n root2 = parser2(this._css, this._opts);\n } catch (error) {\n this.error = error;\n }\n if (this.error) {\n throw this.error;\n } else {\n this._root = root2;\n return root2;\n }\n }\n get [Symbol.toStringTag]() {\n return \"NoWorkResult\";\n }\n};\nvar noWorkResult$1 = NoWorkResult$1$1;\nNoWorkResult$1$1.default = NoWorkResult$1$1;\nlet NoWorkResult2$1 = noWorkResult$1;\nlet LazyResult$1$1 = lazyResult$1;\nlet Document$1$1 = document$1$1;\nlet Root$2$1 = root$1;\nlet Processor$1$1 = class Processor {\n constructor(plugins = []) {\n this.version = \"8.4.38\";\n this.plugins = this.normalize(plugins);\n }\n normalize(plugins) {\n let normalized = [];\n for (let i2 of plugins) {\n if (i2.postcss === true) {\n i2 = i2();\n } else if (i2.postcss) {\n i2 = i2.postcss;\n }\n if (typeof i2 === \"object\" && Array.isArray(i2.plugins)) {\n normalized = normalized.concat(i2.plugins);\n } else if (typeof i2 === \"object\" && i2.postcssPlugin) {\n normalized.push(i2);\n } else if (typeof i2 === \"function\") {\n normalized.push(i2);\n } else if (typeof i2 === \"object\" && (i2.parse || i2.stringify)) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error(\n \"PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.\"\n );\n }\n } else {\n throw new Error(i2 + \" is not a PostCSS plugin\");\n }\n }\n return normalized;\n }\n process(css, opts = {}) {\n if (!this.plugins.length && !opts.parser && !opts.stringifier && !opts.syntax) {\n return new NoWorkResult2$1(this, css, opts);\n } else {\n return new LazyResult$1$1(this, css, opts);\n }\n }\n use(plugin22) {\n this.plugins = this.plugins.concat(this.normalize([plugin22]));\n return this;\n }\n};\nvar processor$1 = Processor$1$1;\nProcessor$1$1.default = Processor$1$1;\nRoot$2$1.registerProcessor(Processor$1$1);\nDocument$1$1.registerProcessor(Processor$1$1);\nlet Declaration$1$1 = declaration$1;\nlet PreviousMap2$1 = previousMap$1;\nlet Comment$1$1 = comment$1;\nlet AtRule$1$1 = atRule$1;\nlet Input$1$1 = input$1;\nlet Root$1$1 = root$1;\nlet Rule$1$1 = rule$1;\nfunction fromJSON$1$1(json, inputs) {\n if (Array.isArray(json)) return json.map((n2) => fromJSON$1$1(n2));\n let { inputs: ownInputs, ...defaults } = json;\n if (ownInputs) {\n inputs = [];\n for (let input2 of ownInputs) {\n let inputHydrated = { ...input2, __proto__: Input$1$1.prototype };\n if (inputHydrated.map) {\n inputHydrated.map = {\n ...inputHydrated.map,\n __proto__: PreviousMap2$1.prototype\n };\n }\n inputs.push(inputHydrated);\n }\n }\n if (defaults.nodes) {\n defaults.nodes = json.nodes.map((n2) => fromJSON$1$1(n2, inputs));\n }\n if (defaults.source) {\n let { inputId, ...source } = defaults.source;\n defaults.source = source;\n if (inputId != null) {\n defaults.source.input = inputs[inputId];\n }\n }\n if (defaults.type === \"root\") {\n return new Root$1$1(defaults);\n } else if (defaults.type === \"decl\") {\n return new Declaration$1$1(defaults);\n } else if (defaults.type === \"rule\") {\n return new Rule$1$1(defaults);\n } else if (defaults.type === \"comment\") {\n return new Comment$1$1(defaults);\n } else if (defaults.type === \"atrule\") {\n return new AtRule$1$1(defaults);\n } else {\n throw new Error(\"Unknown node type: \" + json.type);\n }\n}\nvar fromJSON_1$1 = fromJSON$1$1;\nfromJSON$1$1.default = fromJSON$1$1;\nlet CssSyntaxError2$1 = cssSyntaxError$1;\nlet Declaration2$1 = declaration$1;\nlet LazyResult2$1 = lazyResult$1;\nlet Container2$1 = container$1;\nlet Processor2$1 = processor$1;\nlet stringify$5 = stringify_1$1;\nlet fromJSON$2 = fromJSON_1$1;\nlet Document22 = document$1$1;\nlet Warning2$1 = warning$1;\nlet Comment2$1 = comment$1;\nlet AtRule2$1 = atRule$1;\nlet Result2$1 = result$1;\nlet Input2$1 = input$1;\nlet parse$5 = parse_1$1;\nlet list$3 = list_1$1;\nlet Rule2$1 = rule$1;\nlet Root2$1 = root$1;\nlet Node2$1 = node$1;\nfunction postcss$3(...plugins) {\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0];\n }\n return new Processor2$1(plugins);\n}\npostcss$3.plugin = function plugin(name, initializer) {\n let warningPrinted = false;\n function creator(...args) {\n if (console && console.warn && !warningPrinted) {\n warningPrinted = true;\n console.warn(\n name + \": postcss.plugin was deprecated. Migration guide:\\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration\"\n );\n if (process.env.LANG && process.env.LANG.startsWith(\"cn\")) {\n console.warn(\n name + \": 里面 postcss.plugin 被弃用. 迁移指南:\\nhttps://www.w3ctech.com/topic/2226\"\n );\n }\n }\n let transformer = initializer(...args);\n transformer.postcssPlugin = name;\n transformer.postcssVersion = new Processor2$1().version;\n return transformer;\n }\n let cache;\n Object.defineProperty(creator, \"postcss\", {\n get() {\n if (!cache) cache = creator();\n return cache;\n }\n });\n creator.process = function(css, processOpts, pluginOpts) {\n return postcss$3([creator(pluginOpts)]).process(css, processOpts);\n };\n return creator;\n};\npostcss$3.stringify = stringify$5;\npostcss$3.parse = parse$5;\npostcss$3.fromJSON = fromJSON$2;\npostcss$3.list = list$3;\npostcss$3.comment = (defaults) => new Comment2$1(defaults);\npostcss$3.atRule = (defaults) => new AtRule2$1(defaults);\npostcss$3.decl = (defaults) => new Declaration2$1(defaults);\npostcss$3.rule = (defaults) => new Rule2$1(defaults);\npostcss$3.root = (defaults) => new Root2$1(defaults);\npostcss$3.document = (defaults) => new Document22(defaults);\npostcss$3.CssSyntaxError = CssSyntaxError2$1;\npostcss$3.Declaration = Declaration2$1;\npostcss$3.Container = Container2$1;\npostcss$3.Processor = Processor2$1;\npostcss$3.Document = Document22;\npostcss$3.Comment = Comment2$1;\npostcss$3.Warning = Warning2$1;\npostcss$3.AtRule = AtRule2$1;\npostcss$3.Result = Result2$1;\npostcss$3.Input = Input2$1;\npostcss$3.Rule = Rule2$1;\npostcss$3.Root = Root2$1;\npostcss$3.Node = Node2$1;\nLazyResult2$1.registerPostcss(postcss$3);\nvar postcss_1$1 = postcss$3;\npostcss$3.default = postcss$3;\nconst postcss$1$1 = /* @__PURE__ */ getDefaultExportFromCjs$1(postcss_1$1);\npostcss$1$1.stringify;\npostcss$1$1.fromJSON;\npostcss$1$1.plugin;\npostcss$1$1.parse;\npostcss$1$1.list;\npostcss$1$1.document;\npostcss$1$1.comment;\npostcss$1$1.atRule;\npostcss$1$1.rule;\npostcss$1$1.decl;\npostcss$1$1.root;\npostcss$1$1.CssSyntaxError;\npostcss$1$1.Declaration;\npostcss$1$1.Container;\npostcss$1$1.Processor;\npostcss$1$1.Document;\npostcss$1$1.Comment;\npostcss$1$1.Warning;\npostcss$1$1.AtRule;\npostcss$1$1.Result;\npostcss$1$1.Input;\npostcss$1$1.Rule;\npostcss$1$1.Root;\npostcss$1$1.Node;\nvar __defProp2 = Object.defineProperty;\nvar __defNormalProp2 = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField2 = (obj, key, value) => __defNormalProp2(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nfunction getDefaultExportFromCjs(x2) {\n return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, \"default\") ? x2[\"default\"] : x2;\n}\nfunction getAugmentedNamespace(n2) {\n if (n2.__esModule) return n2;\n var f2 = n2.default;\n if (typeof f2 == \"function\") {\n var a2 = function a22() {\n if (this instanceof a22) {\n return Reflect.construct(f2, arguments, this.constructor);\n }\n return f2.apply(this, arguments);\n };\n a2.prototype = f2.prototype;\n } else a2 = {};\n Object.defineProperty(a2, \"__esModule\", { value: true });\n Object.keys(n2).forEach(function(k) {\n var d = Object.getOwnPropertyDescriptor(n2, k);\n Object.defineProperty(a2, k, d.get ? d : {\n enumerable: true,\n get: function() {\n return n2[k];\n }\n });\n });\n return a2;\n}\nvar picocolors_browser = { exports: {} };\nvar x = String;\nvar create = function() {\n return { isColorSupported: false, reset: x, bold: x, dim: x, italic: x, underline: x, inverse: x, hidden: x, strikethrough: x, black: x, red: x, green: x, yellow: x, blue: x, magenta: x, cyan: x, white: x, gray: x, bgBlack: x, bgRed: x, bgGreen: x, bgYellow: x, bgBlue: x, bgMagenta: x, bgCyan: x, bgWhite: x };\n};\npicocolors_browser.exports = create();\npicocolors_browser.exports.createColors = create;\nvar picocolors_browserExports = picocolors_browser.exports;\nconst __viteBrowserExternal = {};\nconst __viteBrowserExternal$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: __viteBrowserExternal\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst require$$2 = /* @__PURE__ */ getAugmentedNamespace(__viteBrowserExternal$1);\nlet pico = picocolors_browserExports;\nlet terminalHighlight$1 = require$$2;\nlet CssSyntaxError$3 = class CssSyntaxError2 extends Error {\n constructor(message, line, column, source, file, plugin22) {\n super(message);\n this.name = \"CssSyntaxError\";\n this.reason = message;\n if (file) {\n this.file = file;\n }\n if (source) {\n this.source = source;\n }\n if (plugin22) {\n this.plugin = plugin22;\n }\n if (typeof line !== \"undefined\" && typeof column !== \"undefined\") {\n if (typeof line === \"number\") {\n this.line = line;\n this.column = column;\n } else {\n this.line = line.line;\n this.column = line.column;\n this.endLine = column.line;\n this.endColumn = column.column;\n }\n }\n this.setMessage();\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, CssSyntaxError2);\n }\n }\n setMessage() {\n this.message = this.plugin ? this.plugin + \": \" : \"\";\n this.message += this.file ? this.file : \"\";\n if (typeof this.line !== \"undefined\") {\n this.message += \":\" + this.line + \":\" + this.column;\n }\n this.message += \": \" + this.reason;\n }\n showSourceCode(color) {\n if (!this.source) return \"\";\n let css = this.source;\n if (color == null) color = pico.isColorSupported;\n if (terminalHighlight$1) {\n if (color) css = terminalHighlight$1(css);\n }\n let lines = css.split(/\\r?\\n/);\n let start = Math.max(this.line - 3, 0);\n let end = Math.min(this.line + 2, lines.length);\n let maxWidth = String(end).length;\n let mark, aside;\n if (color) {\n let { bold, gray, red } = pico.createColors(true);\n mark = (text) => bold(red(text));\n aside = (text) => gray(text);\n } else {\n mark = aside = (str) => str;\n }\n return lines.slice(start, end).map((line, index2) => {\n let number = start + 1 + index2;\n let gutter = \" \" + (\" \" + number).slice(-maxWidth) + \" | \";\n if (number === this.line) {\n let spacing = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, this.column - 1).replace(/[^\\t]/g, \" \");\n return mark(\">\") + aside(gutter) + line + \"\\n \" + spacing + mark(\"^\");\n }\n return \" \" + aside(gutter) + line;\n }).join(\"\\n\");\n }\n toString() {\n let code = this.showSourceCode();\n if (code) {\n code = \"\\n\\n\" + code + \"\\n\";\n }\n return this.name + \": \" + this.message + code;\n }\n};\nvar cssSyntaxError = CssSyntaxError$3;\nCssSyntaxError$3.default = CssSyntaxError$3;\nvar symbols = {};\nsymbols.isClean = Symbol(\"isClean\");\nsymbols.my = Symbol(\"my\");\nconst DEFAULT_RAW = {\n after: \"\\n\",\n beforeClose: \"\\n\",\n beforeComment: \"\\n\",\n beforeDecl: \"\\n\",\n beforeOpen: \" \",\n beforeRule: \"\\n\",\n colon: \": \",\n commentLeft: \" \",\n commentRight: \" \",\n emptyBody: \"\",\n indent: \" \",\n semicolon: false\n};\nfunction capitalize(str) {\n return str[0].toUpperCase() + str.slice(1);\n}\nlet Stringifier$2 = class Stringifier2 {\n constructor(builder) {\n this.builder = builder;\n }\n atrule(node2, semicolon) {\n let name = \"@\" + node2.name;\n let params = node2.params ? this.rawValue(node2, \"params\") : \"\";\n if (typeof node2.raws.afterName !== \"undefined\") {\n name += node2.raws.afterName;\n } else if (params) {\n name += \" \";\n }\n if (node2.nodes) {\n this.block(node2, name + params);\n } else {\n let end = (node2.raws.between || \"\") + (semicolon ? \";\" : \"\");\n this.builder(name + params + end, node2);\n }\n }\n beforeAfter(node2, detect) {\n let value;\n if (node2.type === \"decl\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (node2.type === \"comment\") {\n value = this.raw(node2, null, \"beforeComment\");\n } else if (detect === \"before\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else {\n value = this.raw(node2, null, \"beforeClose\");\n }\n let buf = node2.parent;\n let depth = 0;\n while (buf && buf.type !== \"root\") {\n depth += 1;\n buf = buf.parent;\n }\n if (value.includes(\"\\n\")) {\n let indent = this.raw(node2, null, \"indent\");\n if (indent.length) {\n for (let step = 0; step < depth; step++) value += indent;\n }\n }\n return value;\n }\n block(node2, start) {\n let between = this.raw(node2, \"between\", \"beforeOpen\");\n this.builder(start + between + \"{\", node2, \"start\");\n let after;\n if (node2.nodes && node2.nodes.length) {\n this.body(node2);\n after = this.raw(node2, \"after\");\n } else {\n after = this.raw(node2, \"after\", \"emptyBody\");\n }\n if (after) this.builder(after);\n this.builder(\"}\", node2, \"end\");\n }\n body(node2) {\n let last = node2.nodes.length - 1;\n while (last > 0) {\n if (node2.nodes[last].type !== \"comment\") break;\n last -= 1;\n }\n let semicolon = this.raw(node2, \"semicolon\");\n for (let i2 = 0; i2 < node2.nodes.length; i2++) {\n let child = node2.nodes[i2];\n let before = this.raw(child, \"before\");\n if (before) this.builder(before);\n this.stringify(child, last !== i2 || semicolon);\n }\n }\n comment(node2) {\n let left = this.raw(node2, \"left\", \"commentLeft\");\n let right = this.raw(node2, \"right\", \"commentRight\");\n this.builder(\"/*\" + left + node2.text + right + \"*/\", node2);\n }\n decl(node2, semicolon) {\n let between = this.raw(node2, \"between\", \"colon\");\n let string = node2.prop + between + this.rawValue(node2, \"value\");\n if (node2.important) {\n string += node2.raws.important || \" !important\";\n }\n if (semicolon) string += \";\";\n this.builder(string, node2);\n }\n document(node2) {\n this.body(node2);\n }\n raw(node2, own, detect) {\n let value;\n if (!detect) detect = own;\n if (own) {\n value = node2.raws[own];\n if (typeof value !== \"undefined\") return value;\n }\n let parent = node2.parent;\n if (detect === \"before\") {\n if (!parent || parent.type === \"root\" && parent.first === node2) {\n return \"\";\n }\n if (parent && parent.type === \"document\") {\n return \"\";\n }\n }\n if (!parent) return DEFAULT_RAW[detect];\n let root2 = node2.root();\n if (!root2.rawCache) root2.rawCache = {};\n if (typeof root2.rawCache[detect] !== \"undefined\") {\n return root2.rawCache[detect];\n }\n if (detect === \"before\" || detect === \"after\") {\n return this.beforeAfter(node2, detect);\n } else {\n let method = \"raw\" + capitalize(detect);\n if (this[method]) {\n value = this[method](root2, node2);\n } else {\n root2.walk((i2) => {\n value = i2.raws[own];\n if (typeof value !== \"undefined\") return false;\n });\n }\n }\n if (typeof value === \"undefined\") value = DEFAULT_RAW[detect];\n root2.rawCache[detect] = value;\n return value;\n }\n rawBeforeClose(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length > 0) {\n if (typeof i2.raws.after !== \"undefined\") {\n value = i2.raws.after;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawBeforeComment(root2, node2) {\n let value;\n root2.walkComments((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeDecl(root2, node2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeOpen(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.type !== \"decl\") {\n value = i2.raws.between;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawBeforeRule(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && (i2.parent !== root2 || root2.first !== i2)) {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawColon(root2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.between !== \"undefined\") {\n value = i2.raws.between.replace(/[^\\s:]/g, \"\");\n return false;\n }\n });\n return value;\n }\n rawEmptyBody(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length === 0) {\n value = i2.raws.after;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawIndent(root2) {\n if (root2.raws.indent) return root2.raws.indent;\n let value;\n root2.walk((i2) => {\n let p = i2.parent;\n if (p && p !== root2 && p.parent && p.parent === root2) {\n if (typeof i2.raws.before !== \"undefined\") {\n let parts = i2.raws.before.split(\"\\n\");\n value = parts[parts.length - 1];\n value = value.replace(/\\S/g, \"\");\n return false;\n }\n }\n });\n return value;\n }\n rawSemicolon(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length && i2.last.type === \"decl\") {\n value = i2.raws.semicolon;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawValue(node2, prop) {\n let value = node2[prop];\n let raw = node2.raws[prop];\n if (raw && raw.value === value) {\n return raw.raw;\n }\n return value;\n }\n root(node2) {\n this.body(node2);\n if (node2.raws.after) this.builder(node2.raws.after);\n }\n rule(node2) {\n this.block(node2, this.rawValue(node2, \"selector\"));\n if (node2.raws.ownSemicolon) {\n this.builder(node2.raws.ownSemicolon, node2, \"end\");\n }\n }\n stringify(node2, semicolon) {\n if (!this[node2.type]) {\n throw new Error(\n \"Unknown AST node type \" + node2.type + \". Maybe you need to change PostCSS stringifier.\"\n );\n }\n this[node2.type](node2, semicolon);\n }\n};\nvar stringifier = Stringifier$2;\nStringifier$2.default = Stringifier$2;\nlet Stringifier$1 = stringifier;\nfunction stringify$4(node2, builder) {\n let str = new Stringifier$1(builder);\n str.stringify(node2);\n}\nvar stringify_1 = stringify$4;\nstringify$4.default = stringify$4;\nlet { isClean: isClean$2, my: my$2 } = symbols;\nlet CssSyntaxError$2 = cssSyntaxError;\nlet Stringifier22 = stringifier;\nlet stringify$3 = stringify_1;\nfunction cloneNode(obj, parent) {\n let cloned = new obj.constructor();\n for (let i2 in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, i2)) {\n continue;\n }\n if (i2 === \"proxyCache\") continue;\n let value = obj[i2];\n let type = typeof value;\n if (i2 === \"parent\" && type === \"object\") {\n if (parent) cloned[i2] = parent;\n } else if (i2 === \"source\") {\n cloned[i2] = value;\n } else if (Array.isArray(value)) {\n cloned[i2] = value.map((j) => cloneNode(j, cloned));\n } else {\n if (type === \"object\" && value !== null) value = cloneNode(value);\n cloned[i2] = value;\n }\n }\n return cloned;\n}\nlet Node$4 = class Node3 {\n constructor(defaults = {}) {\n this.raws = {};\n this[isClean$2] = false;\n this[my$2] = true;\n for (let name in defaults) {\n if (name === \"nodes\") {\n this.nodes = [];\n for (let node2 of defaults[name]) {\n if (typeof node2.clone === \"function\") {\n this.append(node2.clone());\n } else {\n this.append(node2);\n }\n }\n } else {\n this[name] = defaults[name];\n }\n }\n }\n addToError(error) {\n error.postcssNode = this;\n if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n let s2 = this.source;\n error.stack = error.stack.replace(\n /\\n\\s{4}at /,\n `$&${s2.input.from}:${s2.start.line}:${s2.start.column}$&`\n );\n }\n return error;\n }\n after(add) {\n this.parent.insertAfter(this, add);\n return this;\n }\n assign(overrides = {}) {\n for (let name in overrides) {\n this[name] = overrides[name];\n }\n return this;\n }\n before(add) {\n this.parent.insertBefore(this, add);\n return this;\n }\n cleanRaws(keepBetween) {\n delete this.raws.before;\n delete this.raws.after;\n if (!keepBetween) delete this.raws.between;\n }\n clone(overrides = {}) {\n let cloned = cloneNode(this);\n for (let name in overrides) {\n cloned[name] = overrides[name];\n }\n return cloned;\n }\n cloneAfter(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertAfter(this, cloned);\n return cloned;\n }\n cloneBefore(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertBefore(this, cloned);\n return cloned;\n }\n error(message, opts = {}) {\n if (this.source) {\n let { end, start } = this.rangeBy(opts);\n return this.source.input.error(\n message,\n { column: start.column, line: start.line },\n { column: end.column, line: end.line },\n opts\n );\n }\n return new CssSyntaxError$2(message);\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"prop\" || prop === \"value\" || prop === \"name\" || prop === \"params\" || prop === \"important\" || /* c8 ignore next */\n prop === \"text\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n markDirty() {\n if (this[isClean$2]) {\n this[isClean$2] = false;\n let next = this;\n while (next = next.parent) {\n next[isClean$2] = false;\n }\n }\n }\n next() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 + 1];\n }\n positionBy(opts, stringRepresentation) {\n let pos = this.source.start;\n if (opts.index) {\n pos = this.positionInside(opts.index, stringRepresentation);\n } else if (opts.word) {\n stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) pos = this.positionInside(index2, stringRepresentation);\n }\n return pos;\n }\n positionInside(index2, stringRepresentation) {\n let string = stringRepresentation || this.toString();\n let column = this.source.start.column;\n let line = this.source.start.line;\n for (let i2 = 0; i2 < index2; i2++) {\n if (string[i2] === \"\\n\") {\n column = 1;\n line += 1;\n } else {\n column += 1;\n }\n }\n return { column, line };\n }\n prev() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 - 1];\n }\n rangeBy(opts) {\n let start = {\n column: this.source.start.column,\n line: this.source.start.line\n };\n let end = this.source.end ? {\n column: this.source.end.column + 1,\n line: this.source.end.line\n } : {\n column: start.column + 1,\n line: start.line\n };\n if (opts.word) {\n let stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) {\n start = this.positionInside(index2, stringRepresentation);\n end = this.positionInside(index2 + opts.word.length, stringRepresentation);\n }\n } else {\n if (opts.start) {\n start = {\n column: opts.start.column,\n line: opts.start.line\n };\n } else if (opts.index) {\n start = this.positionInside(opts.index);\n }\n if (opts.end) {\n end = {\n column: opts.end.column,\n line: opts.end.line\n };\n } else if (typeof opts.endIndex === \"number\") {\n end = this.positionInside(opts.endIndex);\n } else if (opts.index) {\n end = this.positionInside(opts.index + 1);\n }\n }\n if (end.line < start.line || end.line === start.line && end.column <= start.column) {\n end = { column: start.column + 1, line: start.line };\n }\n return { end, start };\n }\n raw(prop, defaultType) {\n let str = new Stringifier22();\n return str.raw(this, prop, defaultType);\n }\n remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n this.parent = void 0;\n return this;\n }\n replaceWith(...nodes) {\n if (this.parent) {\n let bookmark = this;\n let foundSelf = false;\n for (let node2 of nodes) {\n if (node2 === this) {\n foundSelf = true;\n } else if (foundSelf) {\n this.parent.insertAfter(bookmark, node2);\n bookmark = node2;\n } else {\n this.parent.insertBefore(bookmark, node2);\n }\n }\n if (!foundSelf) {\n this.remove();\n }\n }\n return this;\n }\n root() {\n let result2 = this;\n while (result2.parent && result2.parent.type !== \"document\") {\n result2 = result2.parent;\n }\n return result2;\n }\n toJSON(_, inputs) {\n let fixed = {};\n let emitInputs = inputs == null;\n inputs = inputs || /* @__PURE__ */ new Map();\n let inputsNextIndex = 0;\n for (let name in this) {\n if (!Object.prototype.hasOwnProperty.call(this, name)) {\n continue;\n }\n if (name === \"parent\" || name === \"proxyCache\") continue;\n let value = this[name];\n if (Array.isArray(value)) {\n fixed[name] = value.map((i2) => {\n if (typeof i2 === \"object\" && i2.toJSON) {\n return i2.toJSON(null, inputs);\n } else {\n return i2;\n }\n });\n } else if (typeof value === \"object\" && value.toJSON) {\n fixed[name] = value.toJSON(null, inputs);\n } else if (name === \"source\") {\n let inputId = inputs.get(value.input);\n if (inputId == null) {\n inputId = inputsNextIndex;\n inputs.set(value.input, inputsNextIndex);\n inputsNextIndex++;\n }\n fixed[name] = {\n end: value.end,\n inputId,\n start: value.start\n };\n } else {\n fixed[name] = value;\n }\n }\n if (emitInputs) {\n fixed.inputs = [...inputs.keys()].map((input2) => input2.toJSON());\n }\n return fixed;\n }\n toProxy() {\n if (!this.proxyCache) {\n this.proxyCache = new Proxy(this, this.getProxyProcessor());\n }\n return this.proxyCache;\n }\n toString(stringifier2 = stringify$3) {\n if (stringifier2.stringify) stringifier2 = stringifier2.stringify;\n let result2 = \"\";\n stringifier2(this, (i2) => {\n result2 += i2;\n });\n return result2;\n }\n warn(result2, text, opts) {\n let data = { node: this };\n for (let i2 in opts) data[i2] = opts[i2];\n return result2.warn(text, data);\n }\n get proxyOf() {\n return this;\n }\n};\nvar node = Node$4;\nNode$4.default = Node$4;\nlet Node$3 = node;\nlet Declaration$4 = class Declaration2 extends Node$3 {\n constructor(defaults) {\n if (defaults && typeof defaults.value !== \"undefined\" && typeof defaults.value !== \"string\") {\n defaults = { ...defaults, value: String(defaults.value) };\n }\n super(defaults);\n this.type = \"decl\";\n }\n get variable() {\n return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n }\n};\nvar declaration = Declaration$4;\nDeclaration$4.default = Declaration$4;\nlet urlAlphabet = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\nlet customAlphabet = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = \"\";\n let i2 = size;\n while (i2--) {\n id += alphabet[Math.random() * alphabet.length | 0];\n }\n return id;\n };\n};\nlet nanoid$1 = (size = 21) => {\n let id = \"\";\n let i2 = size;\n while (i2--) {\n id += urlAlphabet[Math.random() * 64 | 0];\n }\n return id;\n};\nvar nonSecure = { nanoid: nanoid$1, customAlphabet };\nlet { SourceMapConsumer: SourceMapConsumer$2, SourceMapGenerator: SourceMapGenerator$2 } = require$$2;\nlet { existsSync, readFileSync } = require$$2;\nlet { dirname: dirname$1, join } = require$$2;\nfunction fromBase64(str) {\n if (Buffer) {\n return Buffer.from(str, \"base64\").toString();\n } else {\n return window.atob(str);\n }\n}\nlet PreviousMap$2 = class PreviousMap2 {\n constructor(css, opts) {\n if (opts.map === false) return;\n this.loadAnnotation(css);\n this.inline = this.startWith(this.annotation, \"data:\");\n let prev = opts.map ? opts.map.prev : void 0;\n let text = this.loadMap(opts.from, prev);\n if (!this.mapFile && opts.from) {\n this.mapFile = opts.from;\n }\n if (this.mapFile) this.root = dirname$1(this.mapFile);\n if (text) this.text = text;\n }\n consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new SourceMapConsumer$2(this.text);\n }\n return this.consumerCache;\n }\n decodeInline(text) {\n let baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/;\n let baseUri = /^data:application\\/json;base64,/;\n let charsetUri = /^data:application\\/json;charset=utf-?8,/;\n let uri = /^data:application\\/json,/;\n if (charsetUri.test(text) || uri.test(text)) {\n return decodeURIComponent(text.substr(RegExp.lastMatch.length));\n }\n if (baseCharsetUri.test(text) || baseUri.test(text)) {\n return fromBase64(text.substr(RegExp.lastMatch.length));\n }\n let encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n throw new Error(\"Unsupported source map encoding \" + encoding);\n }\n getAnnotationURL(sourceMapString) {\n return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n }\n isMap(map) {\n if (typeof map !== \"object\") return false;\n return typeof map.mappings === \"string\" || typeof map._mappings === \"string\" || Array.isArray(map.sections);\n }\n loadAnnotation(css) {\n let comments = css.match(/\\/\\*\\s*# sourceMappingURL=/gm);\n if (!comments) return;\n let start = css.lastIndexOf(comments.pop());\n let end = css.indexOf(\"*/\", start);\n if (start > -1 && end > -1) {\n this.annotation = this.getAnnotationURL(css.substring(start, end));\n }\n }\n loadFile(path) {\n this.root = dirname$1(path);\n if (existsSync(path)) {\n this.mapFile = path;\n return readFileSync(path, \"utf-8\").toString().trim();\n }\n }\n loadMap(file, prev) {\n if (prev === false) return false;\n if (prev) {\n if (typeof prev === \"string\") {\n return prev;\n } else if (typeof prev === \"function\") {\n let prevPath = prev(file);\n if (prevPath) {\n let map = this.loadFile(prevPath);\n if (!map) {\n throw new Error(\n \"Unable to load previous source map: \" + prevPath.toString()\n );\n }\n return map;\n }\n } else if (prev instanceof SourceMapConsumer$2) {\n return SourceMapGenerator$2.fromSourceMap(prev).toString();\n } else if (prev instanceof SourceMapGenerator$2) {\n return prev.toString();\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev);\n } else {\n throw new Error(\n \"Unsupported previous source map format: \" + prev.toString()\n );\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation);\n } else if (this.annotation) {\n let map = this.annotation;\n if (file) map = join(dirname$1(file), map);\n return this.loadFile(map);\n }\n }\n startWith(string, start) {\n if (!string) return false;\n return string.substr(0, start.length) === start;\n }\n withContent() {\n return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n }\n};\nvar previousMap = PreviousMap$2;\nPreviousMap$2.default = PreviousMap$2;\nlet { SourceMapConsumer: SourceMapConsumer$1, SourceMapGenerator: SourceMapGenerator$1 } = require$$2;\nlet { fileURLToPath, pathToFileURL: pathToFileURL$1 } = require$$2;\nlet { isAbsolute, resolve: resolve$1 } = require$$2;\nlet { nanoid } = nonSecure;\nlet terminalHighlight = require$$2;\nlet CssSyntaxError$1 = cssSyntaxError;\nlet PreviousMap$1 = previousMap;\nlet fromOffsetCache = Symbol(\"fromOffsetCache\");\nlet sourceMapAvailable$1 = Boolean(SourceMapConsumer$1 && SourceMapGenerator$1);\nlet pathAvailable$1 = Boolean(resolve$1 && isAbsolute);\nlet Input$4 = class Input2 {\n constructor(css, opts = {}) {\n if (css === null || typeof css === \"undefined\" || typeof css === \"object\" && !css.toString) {\n throw new Error(`PostCSS received ${css} instead of CSS string`);\n }\n this.css = css.toString();\n if (this.css[0] === \"\\uFEFF\" || this.css[0] === \"￾\") {\n this.hasBOM = true;\n this.css = this.css.slice(1);\n } else {\n this.hasBOM = false;\n }\n if (opts.from) {\n if (!pathAvailable$1 || /^\\w+:\\/\\//.test(opts.from) || isAbsolute(opts.from)) {\n this.file = opts.from;\n } else {\n this.file = resolve$1(opts.from);\n }\n }\n if (pathAvailable$1 && sourceMapAvailable$1) {\n let map = new PreviousMap$1(this.css, opts);\n if (map.text) {\n this.map = map;\n let file = map.consumer().file;\n if (!this.file && file) this.file = this.mapResolve(file);\n }\n }\n if (!this.file) {\n this.id = \"\";\n }\n if (this.map) this.map.file = this.from;\n }\n error(message, line, column, opts = {}) {\n let result2, endLine, endColumn;\n if (line && typeof line === \"object\") {\n let start = line;\n let end = column;\n if (typeof start.offset === \"number\") {\n let pos = this.fromOffset(start.offset);\n line = pos.line;\n column = pos.col;\n } else {\n line = start.line;\n column = start.column;\n }\n if (typeof end.offset === \"number\") {\n let pos = this.fromOffset(end.offset);\n endLine = pos.line;\n endColumn = pos.col;\n } else {\n endLine = end.line;\n endColumn = end.column;\n }\n } else if (!column) {\n let pos = this.fromOffset(line);\n line = pos.line;\n column = pos.col;\n }\n let origin = this.origin(line, column, endLine, endColumn);\n if (origin) {\n result2 = new CssSyntaxError$1(\n message,\n origin.endLine === void 0 ? origin.line : { column: origin.column, line: origin.line },\n origin.endLine === void 0 ? origin.column : { column: origin.endColumn, line: origin.endLine },\n origin.source,\n origin.file,\n opts.plugin\n );\n } else {\n result2 = new CssSyntaxError$1(\n message,\n endLine === void 0 ? line : { column, line },\n endLine === void 0 ? column : { column: endColumn, line: endLine },\n this.css,\n this.file,\n opts.plugin\n );\n }\n result2.input = { column, endColumn, endLine, line, source: this.css };\n if (this.file) {\n if (pathToFileURL$1) {\n result2.input.url = pathToFileURL$1(this.file).toString();\n }\n result2.input.file = this.file;\n }\n return result2;\n }\n fromOffset(offset) {\n let lastLine, lineToIndex;\n if (!this[fromOffsetCache]) {\n let lines = this.css.split(\"\\n\");\n lineToIndex = new Array(lines.length);\n let prevIndex = 0;\n for (let i2 = 0, l2 = lines.length; i2 < l2; i2++) {\n lineToIndex[i2] = prevIndex;\n prevIndex += lines[i2].length + 1;\n }\n this[fromOffsetCache] = lineToIndex;\n } else {\n lineToIndex = this[fromOffsetCache];\n }\n lastLine = lineToIndex[lineToIndex.length - 1];\n let min = 0;\n if (offset >= lastLine) {\n min = lineToIndex.length - 1;\n } else {\n let max = lineToIndex.length - 2;\n let mid;\n while (min < max) {\n mid = min + (max - min >> 1);\n if (offset < lineToIndex[mid]) {\n max = mid - 1;\n } else if (offset >= lineToIndex[mid + 1]) {\n min = mid + 1;\n } else {\n min = mid;\n break;\n }\n }\n }\n return {\n col: offset - lineToIndex[min] + 1,\n line: min + 1\n };\n }\n mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file;\n }\n return resolve$1(this.map.consumer().sourceRoot || this.map.root || \".\", file);\n }\n origin(line, column, endLine, endColumn) {\n if (!this.map) return false;\n let consumer = this.map.consumer();\n let from = consumer.originalPositionFor({ column, line });\n if (!from.source) return false;\n let to;\n if (typeof endLine === \"number\") {\n to = consumer.originalPositionFor({ column: endColumn, line: endLine });\n }\n let fromUrl;\n if (isAbsolute(from.source)) {\n fromUrl = pathToFileURL$1(from.source);\n } else {\n fromUrl = new URL(\n from.source,\n this.map.consumer().sourceRoot || pathToFileURL$1(this.map.mapFile)\n );\n }\n let result2 = {\n column: from.column,\n endColumn: to && to.column,\n endLine: to && to.line,\n line: from.line,\n url: fromUrl.toString()\n };\n if (fromUrl.protocol === \"file:\") {\n if (fileURLToPath) {\n result2.file = fileURLToPath(fromUrl);\n } else {\n throw new Error(`file: protocol is not available in this PostCSS build`);\n }\n }\n let source = consumer.sourceContentFor(from.source);\n if (source) result2.source = source;\n return result2;\n }\n toJSON() {\n let json = {};\n for (let name of [\"hasBOM\", \"css\", \"file\", \"id\"]) {\n if (this[name] != null) {\n json[name] = this[name];\n }\n }\n if (this.map) {\n json.map = { ...this.map };\n if (json.map.consumerCache) {\n json.map.consumerCache = void 0;\n }\n }\n return json;\n }\n get from() {\n return this.file || this.id;\n }\n};\nvar input = Input$4;\nInput$4.default = Input$4;\nif (terminalHighlight && terminalHighlight.registerInput) {\n terminalHighlight.registerInput(Input$4);\n}\nlet { SourceMapConsumer, SourceMapGenerator } = require$$2;\nlet { dirname, relative, resolve, sep } = require$$2;\nlet { pathToFileURL } = require$$2;\nlet Input$3 = input;\nlet sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator);\nlet pathAvailable = Boolean(dirname && resolve && relative && sep);\nlet MapGenerator$2 = class MapGenerator2 {\n constructor(stringify2, root2, opts, cssString) {\n this.stringify = stringify2;\n this.mapOpts = opts.map || {};\n this.root = root2;\n this.opts = opts;\n this.css = cssString;\n this.originalCSS = cssString;\n this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute;\n this.memoizedFileURLs = /* @__PURE__ */ new Map();\n this.memoizedPaths = /* @__PURE__ */ new Map();\n this.memoizedURLs = /* @__PURE__ */ new Map();\n }\n addAnnotation() {\n let content;\n if (this.isInline()) {\n content = \"data:application/json;base64,\" + this.toBase64(this.map.toString());\n } else if (typeof this.mapOpts.annotation === \"string\") {\n content = this.mapOpts.annotation;\n } else if (typeof this.mapOpts.annotation === \"function\") {\n content = this.mapOpts.annotation(this.opts.to, this.root);\n } else {\n content = this.outputFile() + \".map\";\n }\n let eol = \"\\n\";\n if (this.css.includes(\"\\r\\n\")) eol = \"\\r\\n\";\n this.css += eol + \"/*# sourceMappingURL=\" + content + \" */\";\n }\n applyPrevMaps() {\n for (let prev of this.previous()) {\n let from = this.toUrl(this.path(prev.file));\n let root2 = prev.root || dirname(prev.file);\n let map;\n if (this.mapOpts.sourcesContent === false) {\n map = new SourceMapConsumer(prev.text);\n if (map.sourcesContent) {\n map.sourcesContent = null;\n }\n } else {\n map = prev.consumer();\n }\n this.map.applySourceMap(map, from, this.toUrl(this.path(root2)));\n }\n }\n clearAnnotation() {\n if (this.mapOpts.annotation === false) return;\n if (this.root) {\n let node2;\n for (let i2 = this.root.nodes.length - 1; i2 >= 0; i2--) {\n node2 = this.root.nodes[i2];\n if (node2.type !== \"comment\") continue;\n if (node2.text.indexOf(\"# sourceMappingURL=\") === 0) {\n this.root.removeChild(i2);\n }\n }\n } else if (this.css) {\n this.css = this.css.replace(/\\n*?\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\");\n }\n }\n generate() {\n this.clearAnnotation();\n if (pathAvailable && sourceMapAvailable && this.isMap()) {\n return this.generateMap();\n } else {\n let result2 = \"\";\n this.stringify(this.root, (i2) => {\n result2 += i2;\n });\n return [result2];\n }\n }\n generateMap() {\n if (this.root) {\n this.generateString();\n } else if (this.previous().length === 1) {\n let prev = this.previous()[0].consumer();\n prev.file = this.outputFile();\n this.map = SourceMapGenerator.fromSourceMap(prev, {\n ignoreInvalidMapping: true\n });\n } else {\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n this.map.addMapping({\n generated: { column: 0, line: 1 },\n original: { column: 0, line: 1 },\n source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\"\n });\n }\n if (this.isSourcesContent()) this.setSourcesContent();\n if (this.root && this.previous().length > 0) this.applyPrevMaps();\n if (this.isAnnotation()) this.addAnnotation();\n if (this.isInline()) {\n return [this.css];\n } else {\n return [this.css, this.map];\n }\n }\n generateString() {\n this.css = \"\";\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n let line = 1;\n let column = 1;\n let noSource = \"\";\n let mapping = {\n generated: { column: 0, line: 0 },\n original: { column: 0, line: 0 },\n source: \"\"\n };\n let lines, last;\n this.stringify(this.root, (str, node2, type) => {\n this.css += str;\n if (node2 && type !== \"end\") {\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n if (node2.source && node2.source.start) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.start.line;\n mapping.original.column = node2.source.start.column - 1;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n this.map.addMapping(mapping);\n }\n }\n lines = str.match(/\\n/g);\n if (lines) {\n line += lines.length;\n last = str.lastIndexOf(\"\\n\");\n column = str.length - last;\n } else {\n column += str.length;\n }\n if (node2 && type !== \"start\") {\n let p = node2.parent || { raws: {} };\n let childless = node2.type === \"decl\" || node2.type === \"atrule\" && !node2.nodes;\n if (!childless || node2 !== p.last || p.raws.semicolon) {\n if (node2.source && node2.source.end) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.end.line;\n mapping.original.column = node2.source.end.column - 1;\n mapping.generated.line = line;\n mapping.generated.column = column - 2;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n this.map.addMapping(mapping);\n }\n }\n }\n });\n }\n isAnnotation() {\n if (this.isInline()) {\n return true;\n }\n if (typeof this.mapOpts.annotation !== \"undefined\") {\n return this.mapOpts.annotation;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.annotation);\n }\n return true;\n }\n isInline() {\n if (typeof this.mapOpts.inline !== \"undefined\") {\n return this.mapOpts.inline;\n }\n let annotation = this.mapOpts.annotation;\n if (typeof annotation !== \"undefined\" && annotation !== true) {\n return false;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.inline);\n }\n return true;\n }\n isMap() {\n if (typeof this.opts.map !== \"undefined\") {\n return !!this.opts.map;\n }\n return this.previous().length > 0;\n }\n isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== \"undefined\") {\n return this.mapOpts.sourcesContent;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.withContent());\n }\n return true;\n }\n outputFile() {\n if (this.opts.to) {\n return this.path(this.opts.to);\n } else if (this.opts.from) {\n return this.path(this.opts.from);\n } else {\n return \"to.css\";\n }\n }\n path(file) {\n if (this.mapOpts.absolute) return file;\n if (file.charCodeAt(0) === 60) return file;\n if (/^\\w+:\\/\\//.test(file)) return file;\n let cached = this.memoizedPaths.get(file);\n if (cached) return cached;\n let from = this.opts.to ? dirname(this.opts.to) : \".\";\n if (typeof this.mapOpts.annotation === \"string\") {\n from = dirname(resolve(from, this.mapOpts.annotation));\n }\n let path = relative(from, file);\n this.memoizedPaths.set(file, path);\n return path;\n }\n previous() {\n if (!this.previousMaps) {\n this.previousMaps = [];\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source && node2.source.input.map) {\n let map = node2.source.input.map;\n if (!this.previousMaps.includes(map)) {\n this.previousMaps.push(map);\n }\n }\n });\n } else {\n let input2 = new Input$3(this.originalCSS, this.opts);\n if (input2.map) this.previousMaps.push(input2.map);\n }\n }\n return this.previousMaps;\n }\n setSourcesContent() {\n let already = {};\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source) {\n let from = node2.source.input.from;\n if (from && !already[from]) {\n already[from] = true;\n let fromUrl = this.usesFileUrls ? this.toFileUrl(from) : this.toUrl(this.path(from));\n this.map.setSourceContent(fromUrl, node2.source.input.css);\n }\n }\n });\n } else if (this.css) {\n let from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\";\n this.map.setSourceContent(from, this.css);\n }\n }\n sourcePath(node2) {\n if (this.mapOpts.from) {\n return this.toUrl(this.mapOpts.from);\n } else if (this.usesFileUrls) {\n return this.toFileUrl(node2.source.input.from);\n } else {\n return this.toUrl(this.path(node2.source.input.from));\n }\n }\n toBase64(str) {\n if (Buffer) {\n return Buffer.from(str).toString(\"base64\");\n } else {\n return window.btoa(unescape(encodeURIComponent(str)));\n }\n }\n toFileUrl(path) {\n let cached = this.memoizedFileURLs.get(path);\n if (cached) return cached;\n if (pathToFileURL) {\n let fileURL = pathToFileURL(path).toString();\n this.memoizedFileURLs.set(path, fileURL);\n return fileURL;\n } else {\n throw new Error(\n \"`map.absolute` option is not available in this PostCSS build\"\n );\n }\n }\n toUrl(path) {\n let cached = this.memoizedURLs.get(path);\n if (cached) return cached;\n if (sep === \"\\\\\") {\n path = path.replace(/\\\\/g, \"/\");\n }\n let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent);\n this.memoizedURLs.set(path, url);\n return url;\n }\n};\nvar mapGenerator = MapGenerator$2;\nlet Node$2 = node;\nlet Comment$4 = class Comment2 extends Node$2 {\n constructor(defaults) {\n super(defaults);\n this.type = \"comment\";\n }\n};\nvar comment = Comment$4;\nComment$4.default = Comment$4;\nlet { isClean: isClean$1, my: my$1 } = symbols;\nlet Declaration$3 = declaration;\nlet Comment$3 = comment;\nlet Node$1 = node;\nlet parse$4, Rule$4, AtRule$4, Root$6;\nfunction cleanSource(nodes) {\n return nodes.map((i2) => {\n if (i2.nodes) i2.nodes = cleanSource(i2.nodes);\n delete i2.source;\n return i2;\n });\n}\nfunction markDirtyUp(node2) {\n node2[isClean$1] = false;\n if (node2.proxyOf.nodes) {\n for (let i2 of node2.proxyOf.nodes) {\n markDirtyUp(i2);\n }\n }\n}\nlet Container$7 = class Container2 extends Node$1 {\n append(...children) {\n for (let child of children) {\n let nodes = this.normalize(child, this.last);\n for (let node2 of nodes) this.proxyOf.nodes.push(node2);\n }\n this.markDirty();\n return this;\n }\n cleanRaws(keepBetween) {\n super.cleanRaws(keepBetween);\n if (this.nodes) {\n for (let node2 of this.nodes) node2.cleanRaws(keepBetween);\n }\n }\n each(callback) {\n if (!this.proxyOf.nodes) return void 0;\n let iterator = this.getIterator();\n let index2, result2;\n while (this.indexes[iterator] < this.proxyOf.nodes.length) {\n index2 = this.indexes[iterator];\n result2 = callback(this.proxyOf.nodes[index2], index2);\n if (result2 === false) break;\n this.indexes[iterator] += 1;\n }\n delete this.indexes[iterator];\n return result2;\n }\n every(condition) {\n return this.nodes.every(condition);\n }\n getIterator() {\n if (!this.lastEach) this.lastEach = 0;\n if (!this.indexes) this.indexes = {};\n this.lastEach += 1;\n let iterator = this.lastEach;\n this.indexes[iterator] = 0;\n return iterator;\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (!node2[prop]) {\n return node2[prop];\n } else if (prop === \"each\" || typeof prop === \"string\" && prop.startsWith(\"walk\")) {\n return (...args) => {\n return node2[prop](\n ...args.map((i2) => {\n if (typeof i2 === \"function\") {\n return (child, index2) => i2(child.toProxy(), index2);\n } else {\n return i2;\n }\n })\n );\n };\n } else if (prop === \"every\" || prop === \"some\") {\n return (cb) => {\n return node2[prop](\n (child, ...other) => cb(child.toProxy(), ...other)\n );\n };\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else if (prop === \"nodes\") {\n return node2.nodes.map((i2) => i2.toProxy());\n } else if (prop === \"first\" || prop === \"last\") {\n return node2[prop].toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"name\" || prop === \"params\" || prop === \"selector\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n index(child) {\n if (typeof child === \"number\") return child;\n if (child.proxyOf) child = child.proxyOf;\n return this.proxyOf.nodes.indexOf(child);\n }\n insertAfter(exist, add) {\n let existIndex = this.index(exist);\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex < index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n insertBefore(exist, add) {\n let existIndex = this.index(exist);\n let type = existIndex === 0 ? \"prepend\" : false;\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex <= index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n normalize(nodes, sample) {\n if (typeof nodes === \"string\") {\n nodes = cleanSource(parse$4(nodes).nodes);\n } else if (typeof nodes === \"undefined\") {\n nodes = [];\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type === \"root\" && this.type !== \"document\") {\n nodes = nodes.nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type) {\n nodes = [nodes];\n } else if (nodes.prop) {\n if (typeof nodes.value === \"undefined\") {\n throw new Error(\"Value field is missed in node creation\");\n } else if (typeof nodes.value !== \"string\") {\n nodes.value = String(nodes.value);\n }\n nodes = [new Declaration$3(nodes)];\n } else if (nodes.selector) {\n nodes = [new Rule$4(nodes)];\n } else if (nodes.name) {\n nodes = [new AtRule$4(nodes)];\n } else if (nodes.text) {\n nodes = [new Comment$3(nodes)];\n } else {\n throw new Error(\"Unknown node type in node creation\");\n }\n let processed = nodes.map((i2) => {\n if (!i2[my$1]) Container2.rebuild(i2);\n i2 = i2.proxyOf;\n if (i2.parent) i2.parent.removeChild(i2);\n if (i2[isClean$1]) markDirtyUp(i2);\n if (typeof i2.raws.before === \"undefined\") {\n if (sample && typeof sample.raws.before !== \"undefined\") {\n i2.raws.before = sample.raws.before.replace(/\\S/g, \"\");\n }\n }\n i2.parent = this.proxyOf;\n return i2;\n });\n return processed;\n }\n prepend(...children) {\n children = children.reverse();\n for (let child of children) {\n let nodes = this.normalize(child, this.first, \"prepend\").reverse();\n for (let node2 of nodes) this.proxyOf.nodes.unshift(node2);\n for (let id in this.indexes) {\n this.indexes[id] = this.indexes[id] + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n push(child) {\n child.parent = this;\n this.proxyOf.nodes.push(child);\n return this;\n }\n removeAll() {\n for (let node2 of this.proxyOf.nodes) node2.parent = void 0;\n this.proxyOf.nodes = [];\n this.markDirty();\n return this;\n }\n removeChild(child) {\n child = this.index(child);\n this.proxyOf.nodes[child].parent = void 0;\n this.proxyOf.nodes.splice(child, 1);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (index2 >= child) {\n this.indexes[id] = index2 - 1;\n }\n }\n this.markDirty();\n return this;\n }\n replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {};\n }\n this.walkDecls((decl) => {\n if (opts.props && !opts.props.includes(decl.prop)) return;\n if (opts.fast && !decl.value.includes(opts.fast)) return;\n decl.value = decl.value.replace(pattern, callback);\n });\n this.markDirty();\n return this;\n }\n some(condition) {\n return this.nodes.some(condition);\n }\n walk(callback) {\n return this.each((child, i2) => {\n let result2;\n try {\n result2 = callback(child, i2);\n } catch (e2) {\n throw child.addToError(e2);\n }\n if (result2 !== false && child.walk) {\n result2 = child.walk(callback);\n }\n return result2;\n });\n }\n walkAtRules(name, callback) {\n if (!callback) {\n callback = name;\n return this.walk((child, i2) => {\n if (child.type === \"atrule\") {\n return callback(child, i2);\n }\n });\n }\n if (name instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && name.test(child.name)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && child.name === name) {\n return callback(child, i2);\n }\n });\n }\n walkComments(callback) {\n return this.walk((child, i2) => {\n if (child.type === \"comment\") {\n return callback(child, i2);\n }\n });\n }\n walkDecls(prop, callback) {\n if (!callback) {\n callback = prop;\n return this.walk((child, i2) => {\n if (child.type === \"decl\") {\n return callback(child, i2);\n }\n });\n }\n if (prop instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && prop.test(child.prop)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && child.prop === prop) {\n return callback(child, i2);\n }\n });\n }\n walkRules(selector, callback) {\n if (!callback) {\n callback = selector;\n return this.walk((child, i2) => {\n if (child.type === \"rule\") {\n return callback(child, i2);\n }\n });\n }\n if (selector instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && selector.test(child.selector)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && child.selector === selector) {\n return callback(child, i2);\n }\n });\n }\n get first() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[0];\n }\n get last() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n }\n};\nContainer$7.registerParse = (dependant) => {\n parse$4 = dependant;\n};\nContainer$7.registerRule = (dependant) => {\n Rule$4 = dependant;\n};\nContainer$7.registerAtRule = (dependant) => {\n AtRule$4 = dependant;\n};\nContainer$7.registerRoot = (dependant) => {\n Root$6 = dependant;\n};\nvar container = Container$7;\nContainer$7.default = Container$7;\nContainer$7.rebuild = (node2) => {\n if (node2.type === \"atrule\") {\n Object.setPrototypeOf(node2, AtRule$4.prototype);\n } else if (node2.type === \"rule\") {\n Object.setPrototypeOf(node2, Rule$4.prototype);\n } else if (node2.type === \"decl\") {\n Object.setPrototypeOf(node2, Declaration$3.prototype);\n } else if (node2.type === \"comment\") {\n Object.setPrototypeOf(node2, Comment$3.prototype);\n } else if (node2.type === \"root\") {\n Object.setPrototypeOf(node2, Root$6.prototype);\n }\n node2[my$1] = true;\n if (node2.nodes) {\n node2.nodes.forEach((child) => {\n Container$7.rebuild(child);\n });\n }\n};\nlet Container$6 = container;\nlet LazyResult$4, Processor$3;\nlet Document$3 = class Document23 extends Container$6 {\n constructor(defaults) {\n super({ type: \"document\", ...defaults });\n if (!this.nodes) {\n this.nodes = [];\n }\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$4(new Processor$3(), this, opts);\n return lazy.stringify();\n }\n};\nDocument$3.registerLazyResult = (dependant) => {\n LazyResult$4 = dependant;\n};\nDocument$3.registerProcessor = (dependant) => {\n Processor$3 = dependant;\n};\nvar document$1 = Document$3;\nDocument$3.default = Document$3;\nlet printed = {};\nvar warnOnce$2 = function warnOnce2(message) {\n if (printed[message]) return;\n printed[message] = true;\n if (typeof console !== \"undefined\" && console.warn) {\n console.warn(message);\n }\n};\nlet Warning$2 = class Warning2 {\n constructor(text, opts = {}) {\n this.type = \"warning\";\n this.text = text;\n if (opts.node && opts.node.source) {\n let range = opts.node.rangeBy(opts);\n this.line = range.start.line;\n this.column = range.start.column;\n this.endLine = range.end.line;\n this.endColumn = range.end.column;\n }\n for (let opt in opts) this[opt] = opts[opt];\n }\n toString() {\n if (this.node) {\n return this.node.error(this.text, {\n index: this.index,\n plugin: this.plugin,\n word: this.word\n }).message;\n }\n if (this.plugin) {\n return this.plugin + \": \" + this.text;\n }\n return this.text;\n }\n};\nvar warning = Warning$2;\nWarning$2.default = Warning$2;\nlet Warning$1 = warning;\nlet Result$3 = class Result2 {\n constructor(processor2, root2, opts) {\n this.processor = processor2;\n this.messages = [];\n this.root = root2;\n this.opts = opts;\n this.css = void 0;\n this.map = void 0;\n }\n toString() {\n return this.css;\n }\n warn(text, opts = {}) {\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin;\n }\n }\n let warning2 = new Warning$1(text, opts);\n this.messages.push(warning2);\n return warning2;\n }\n warnings() {\n return this.messages.filter((i2) => i2.type === \"warning\");\n }\n get content() {\n return this.css;\n }\n};\nvar result = Result$3;\nResult$3.default = Result$3;\nconst SINGLE_QUOTE = \"'\".charCodeAt(0);\nconst DOUBLE_QUOTE = '\"'.charCodeAt(0);\nconst BACKSLASH = \"\\\\\".charCodeAt(0);\nconst SLASH = \"/\".charCodeAt(0);\nconst NEWLINE = \"\\n\".charCodeAt(0);\nconst SPACE = \" \".charCodeAt(0);\nconst FEED = \"\\f\".charCodeAt(0);\nconst TAB = \"\t\".charCodeAt(0);\nconst CR = \"\\r\".charCodeAt(0);\nconst OPEN_SQUARE = \"[\".charCodeAt(0);\nconst CLOSE_SQUARE = \"]\".charCodeAt(0);\nconst OPEN_PARENTHESES = \"(\".charCodeAt(0);\nconst CLOSE_PARENTHESES = \")\".charCodeAt(0);\nconst OPEN_CURLY = \"{\".charCodeAt(0);\nconst CLOSE_CURLY = \"}\".charCodeAt(0);\nconst SEMICOLON = \";\".charCodeAt(0);\nconst ASTERISK = \"*\".charCodeAt(0);\nconst COLON = \":\".charCodeAt(0);\nconst AT = \"@\".charCodeAt(0);\nconst RE_AT_END = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g;\nconst RE_WORD_END = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g;\nconst RE_BAD_BRACKET = /.[\\r\\n\"'(/\\\\]/;\nconst RE_HEX_ESCAPE = /[\\da-f]/i;\nvar tokenize = function tokenizer2(input2, options = {}) {\n let css = input2.css.valueOf();\n let ignore = options.ignoreErrors;\n let code, next, quote, content, escape;\n let escaped, escapePos, prev, n2, currentToken;\n let length = css.length;\n let pos = 0;\n let buffer = [];\n let returned = [];\n function position() {\n return pos;\n }\n function unclosed(what) {\n throw input2.error(\"Unclosed \" + what, pos);\n }\n function endOfFile() {\n return returned.length === 0 && pos >= length;\n }\n function nextToken(opts) {\n if (returned.length) return returned.pop();\n if (pos >= length) return;\n let ignoreUnclosed = opts ? opts.ignoreUnclosed : false;\n code = css.charCodeAt(pos);\n switch (code) {\n case NEWLINE:\n case SPACE:\n case TAB:\n case CR:\n case FEED: {\n next = pos;\n do {\n next += 1;\n code = css.charCodeAt(next);\n } while (code === SPACE || code === NEWLINE || code === TAB || code === CR || code === FEED);\n currentToken = [\"space\", css.slice(pos, next)];\n pos = next - 1;\n break;\n }\n case OPEN_SQUARE:\n case CLOSE_SQUARE:\n case OPEN_CURLY:\n case CLOSE_CURLY:\n case COLON:\n case SEMICOLON:\n case CLOSE_PARENTHESES: {\n let controlChar = String.fromCharCode(code);\n currentToken = [controlChar, controlChar, pos];\n break;\n }\n case OPEN_PARENTHESES: {\n prev = buffer.length ? buffer.pop()[1] : \"\";\n n2 = css.charCodeAt(pos + 1);\n if (prev === \"url\" && n2 !== SINGLE_QUOTE && n2 !== DOUBLE_QUOTE && n2 !== SPACE && n2 !== NEWLINE && n2 !== TAB && n2 !== FEED && n2 !== CR) {\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(\")\", next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos;\n break;\n } else {\n unclosed(\"bracket\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"brackets\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n next = css.indexOf(\")\", pos + 1);\n content = css.slice(pos, next + 1);\n if (next === -1 || RE_BAD_BRACKET.test(content)) {\n currentToken = [\"(\", \"(\", pos];\n } else {\n currentToken = [\"brackets\", content, pos, next];\n pos = next;\n }\n }\n break;\n }\n case SINGLE_QUOTE:\n case DOUBLE_QUOTE: {\n quote = code === SINGLE_QUOTE ? \"'\" : '\"';\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(quote, next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos + 1;\n break;\n } else {\n unclosed(\"string\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"string\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case AT: {\n RE_AT_END.lastIndex = pos + 1;\n RE_AT_END.test(css);\n if (RE_AT_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_AT_END.lastIndex - 2;\n }\n currentToken = [\"at-word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case BACKSLASH: {\n next = pos;\n escape = true;\n while (css.charCodeAt(next + 1) === BACKSLASH) {\n next += 1;\n escape = !escape;\n }\n code = css.charCodeAt(next + 1);\n if (escape && code !== SLASH && code !== SPACE && code !== NEWLINE && code !== TAB && code !== CR && code !== FEED) {\n next += 1;\n if (RE_HEX_ESCAPE.test(css.charAt(next))) {\n while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {\n next += 1;\n }\n if (css.charCodeAt(next + 1) === SPACE) {\n next += 1;\n }\n }\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n default: {\n if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {\n next = css.indexOf(\"*/\", pos + 2) + 1;\n if (next === 0) {\n if (ignore || ignoreUnclosed) {\n next = css.length;\n } else {\n unclosed(\"comment\");\n }\n }\n currentToken = [\"comment\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n RE_WORD_END.lastIndex = pos + 1;\n RE_WORD_END.test(css);\n if (RE_WORD_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_WORD_END.lastIndex - 2;\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n buffer.push(currentToken);\n pos = next;\n }\n break;\n }\n }\n pos++;\n return currentToken;\n }\n function back(token) {\n returned.push(token);\n }\n return {\n back,\n endOfFile,\n nextToken,\n position\n };\n};\nlet Container$5 = container;\nlet AtRule$3 = class AtRule2 extends Container$5 {\n constructor(defaults) {\n super(defaults);\n this.type = \"atrule\";\n }\n append(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.append(...children);\n }\n prepend(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.prepend(...children);\n }\n};\nvar atRule = AtRule$3;\nAtRule$3.default = AtRule$3;\nContainer$5.registerAtRule(AtRule$3);\nlet Container$4 = container;\nlet LazyResult$3, Processor$2;\nlet Root$5 = class Root2 extends Container$4 {\n constructor(defaults) {\n super(defaults);\n this.type = \"root\";\n if (!this.nodes) this.nodes = [];\n }\n normalize(child, sample, type) {\n let nodes = super.normalize(child);\n if (sample) {\n if (type === \"prepend\") {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before;\n } else {\n delete sample.raws.before;\n }\n } else if (this.first !== sample) {\n for (let node2 of nodes) {\n node2.raws.before = sample.raws.before;\n }\n }\n }\n return nodes;\n }\n removeChild(child, ignore) {\n let index2 = this.index(child);\n if (!ignore && index2 === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index2].raws.before;\n }\n return super.removeChild(child);\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$3(new Processor$2(), this, opts);\n return lazy.stringify();\n }\n};\nRoot$5.registerLazyResult = (dependant) => {\n LazyResult$3 = dependant;\n};\nRoot$5.registerProcessor = (dependant) => {\n Processor$2 = dependant;\n};\nvar root = Root$5;\nRoot$5.default = Root$5;\nContainer$4.registerRoot(Root$5);\nlet list$2 = {\n comma(string) {\n return list$2.split(string, [\",\"], true);\n },\n space(string) {\n let spaces = [\" \", \"\\n\", \"\t\"];\n return list$2.split(string, spaces);\n },\n split(string, separators, last) {\n let array = [];\n let current = \"\";\n let split = false;\n let func = 0;\n let inQuote = false;\n let prevQuote = \"\";\n let escape = false;\n for (let letter of string) {\n if (escape) {\n escape = false;\n } else if (letter === \"\\\\\") {\n escape = true;\n } else if (inQuote) {\n if (letter === prevQuote) {\n inQuote = false;\n }\n } else if (letter === '\"' || letter === \"'\") {\n inQuote = true;\n prevQuote = letter;\n } else if (letter === \"(\") {\n func += 1;\n } else if (letter === \")\") {\n if (func > 0) func -= 1;\n } else if (func === 0) {\n if (separators.includes(letter)) split = true;\n }\n if (split) {\n if (current !== \"\") array.push(current.trim());\n current = \"\";\n split = false;\n } else {\n current += letter;\n }\n }\n if (last || current !== \"\") array.push(current.trim());\n return array;\n }\n};\nvar list_1 = list$2;\nlist$2.default = list$2;\nlet Container$3 = container;\nlet list$1 = list_1;\nlet Rule$3 = class Rule2 extends Container$3 {\n constructor(defaults) {\n super(defaults);\n this.type = \"rule\";\n if (!this.nodes) this.nodes = [];\n }\n get selectors() {\n return list$1.comma(this.selector);\n }\n set selectors(values) {\n let match = this.selector ? this.selector.match(/,\\s*/) : null;\n let sep2 = match ? match[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n this.selector = values.join(sep2);\n }\n};\nvar rule = Rule$3;\nRule$3.default = Rule$3;\nContainer$3.registerRule(Rule$3);\nlet Declaration$2 = declaration;\nlet tokenizer22 = tokenize;\nlet Comment$2 = comment;\nlet AtRule$2 = atRule;\nlet Root$4 = root;\nlet Rule$2 = rule;\nconst SAFE_COMMENT_NEIGHBOR = {\n empty: true,\n space: true\n};\nfunction findLastWithPosition(tokens) {\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n let token = tokens[i2];\n let pos = token[3] || token[2];\n if (pos) return pos;\n }\n}\nlet Parser$1 = class Parser2 {\n constructor(input2) {\n this.input = input2;\n this.root = new Root$4();\n this.current = this.root;\n this.spaces = \"\";\n this.semicolon = false;\n this.createTokenizer();\n this.root.source = { input: input2, start: { column: 1, line: 1, offset: 0 } };\n }\n atrule(token) {\n let node2 = new AtRule$2();\n node2.name = token[1].slice(1);\n if (node2.name === \"\") {\n this.unnamedAtrule(node2, token);\n }\n this.init(node2, token[2]);\n let type;\n let prev;\n let shift;\n let last = false;\n let open = false;\n let params = [];\n let brackets = [];\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n type = token[0];\n if (type === \"(\" || type === \"[\") {\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (type === \"{\" && brackets.length > 0) {\n brackets.push(\"}\");\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n }\n if (brackets.length === 0) {\n if (type === \";\") {\n node2.source.end = this.getPosition(token[2]);\n node2.source.end.offset++;\n this.semicolon = true;\n break;\n } else if (type === \"{\") {\n open = true;\n break;\n } else if (type === \"}\") {\n if (params.length > 0) {\n shift = params.length - 1;\n prev = params[shift];\n while (prev && prev[0] === \"space\") {\n prev = params[--shift];\n }\n if (prev) {\n node2.source.end = this.getPosition(prev[3] || prev[2]);\n node2.source.end.offset++;\n }\n }\n this.end(token);\n break;\n } else {\n params.push(token);\n }\n } else {\n params.push(token);\n }\n if (this.tokenizer.endOfFile()) {\n last = true;\n break;\n }\n }\n node2.raws.between = this.spacesAndCommentsFromEnd(params);\n if (params.length) {\n node2.raws.afterName = this.spacesAndCommentsFromStart(params);\n this.raw(node2, \"params\", params);\n if (last) {\n token = params[params.length - 1];\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n this.spaces = node2.raws.between;\n node2.raws.between = \"\";\n }\n } else {\n node2.raws.afterName = \"\";\n node2.params = \"\";\n }\n if (open) {\n node2.nodes = [];\n this.current = node2;\n }\n }\n checkMissedSemicolon(tokens) {\n let colon = this.colon(tokens);\n if (colon === false) return;\n let founded = 0;\n let token;\n for (let j = colon - 1; j >= 0; j--) {\n token = tokens[j];\n if (token[0] !== \"space\") {\n founded += 1;\n if (founded === 2) break;\n }\n }\n throw this.input.error(\n \"Missed semicolon\",\n token[0] === \"word\" ? token[3] + 1 : token[2]\n );\n }\n colon(tokens) {\n let brackets = 0;\n let token, type, prev;\n for (let [i2, element] of tokens.entries()) {\n token = element;\n type = token[0];\n if (type === \"(\") {\n brackets += 1;\n }\n if (type === \")\") {\n brackets -= 1;\n }\n if (brackets === 0 && type === \":\") {\n if (!prev) {\n this.doubleColon(token);\n } else if (prev[0] === \"word\" && prev[1] === \"progid\") {\n continue;\n } else {\n return i2;\n }\n }\n prev = token;\n }\n return false;\n }\n comment(token) {\n let node2 = new Comment$2();\n this.init(node2, token[2]);\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n let text = token[1].slice(2, -2);\n if (/^\\s*$/.test(text)) {\n node2.text = \"\";\n node2.raws.left = text;\n node2.raws.right = \"\";\n } else {\n let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n node2.text = match[2];\n node2.raws.left = match[1];\n node2.raws.right = match[3];\n }\n }\n createTokenizer() {\n this.tokenizer = tokenizer22(this.input);\n }\n decl(tokens, customProperty) {\n let node2 = new Declaration$2();\n this.init(node2, tokens[0][2]);\n let last = tokens[tokens.length - 1];\n if (last[0] === \";\") {\n this.semicolon = true;\n tokens.pop();\n }\n node2.source.end = this.getPosition(\n last[3] || last[2] || findLastWithPosition(tokens)\n );\n node2.source.end.offset++;\n while (tokens[0][0] !== \"word\") {\n if (tokens.length === 1) this.unknownWord(tokens);\n node2.raws.before += tokens.shift()[1];\n }\n node2.source.start = this.getPosition(tokens[0][2]);\n node2.prop = \"\";\n while (tokens.length) {\n let type = tokens[0][0];\n if (type === \":\" || type === \"space\" || type === \"comment\") {\n break;\n }\n node2.prop += tokens.shift()[1];\n }\n node2.raws.between = \"\";\n let token;\n while (tokens.length) {\n token = tokens.shift();\n if (token[0] === \":\") {\n node2.raws.between += token[1];\n break;\n } else {\n if (token[0] === \"word\" && /\\w/.test(token[1])) {\n this.unknownWord([token]);\n }\n node2.raws.between += token[1];\n }\n }\n if (node2.prop[0] === \"_\" || node2.prop[0] === \"*\") {\n node2.raws.before += node2.prop[0];\n node2.prop = node2.prop.slice(1);\n }\n let firstSpaces = [];\n let next;\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n firstSpaces.push(tokens.shift());\n }\n this.precheckMissedSemicolon(tokens);\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n token = tokens[i2];\n if (token[1].toLowerCase() === \"!important\") {\n node2.important = true;\n let string = this.stringFrom(tokens, i2);\n string = this.spacesFromEnd(tokens) + string;\n if (string !== \" !important\") node2.raws.important = string;\n break;\n } else if (token[1].toLowerCase() === \"important\") {\n let cache = tokens.slice(0);\n let str = \"\";\n for (let j = i2; j > 0; j--) {\n let type = cache[j][0];\n if (str.trim().indexOf(\"!\") === 0 && type !== \"space\") {\n break;\n }\n str = cache.pop()[1] + str;\n }\n if (str.trim().indexOf(\"!\") === 0) {\n node2.important = true;\n node2.raws.important = str;\n tokens = cache;\n }\n }\n if (token[0] !== \"space\" && token[0] !== \"comment\") {\n break;\n }\n }\n let hasWord = tokens.some((i2) => i2[0] !== \"space\" && i2[0] !== \"comment\");\n if (hasWord) {\n node2.raws.between += firstSpaces.map((i2) => i2[1]).join(\"\");\n firstSpaces = [];\n }\n this.raw(node2, \"value\", firstSpaces.concat(tokens), customProperty);\n if (node2.value.includes(\":\") && !customProperty) {\n this.checkMissedSemicolon(tokens);\n }\n }\n doubleColon(token) {\n throw this.input.error(\n \"Double colon\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n emptyRule(token) {\n let node2 = new Rule$2();\n this.init(node2, token[2]);\n node2.selector = \"\";\n node2.raws.between = \"\";\n this.current = node2;\n }\n end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.semicolon = false;\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.spaces = \"\";\n if (this.current.parent) {\n this.current.source.end = this.getPosition(token[2]);\n this.current.source.end.offset++;\n this.current = this.current.parent;\n } else {\n this.unexpectedClose(token);\n }\n }\n endFile() {\n if (this.current.parent) this.unclosedBlock();\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.root.source.end = this.getPosition(this.tokenizer.position());\n }\n freeSemicolon(token) {\n this.spaces += token[1];\n if (this.current.nodes) {\n let prev = this.current.nodes[this.current.nodes.length - 1];\n if (prev && prev.type === \"rule\" && !prev.raws.ownSemicolon) {\n prev.raws.ownSemicolon = this.spaces;\n this.spaces = \"\";\n }\n }\n }\n // Helpers\n getPosition(offset) {\n let pos = this.input.fromOffset(offset);\n return {\n column: pos.col,\n line: pos.line,\n offset\n };\n }\n init(node2, offset) {\n this.current.push(node2);\n node2.source = {\n input: this.input,\n start: this.getPosition(offset)\n };\n node2.raws.before = this.spaces;\n this.spaces = \"\";\n if (node2.type !== \"comment\") this.semicolon = false;\n }\n other(start) {\n let end = false;\n let type = null;\n let colon = false;\n let bracket = null;\n let brackets = [];\n let customProperty = start[1].startsWith(\"--\");\n let tokens = [];\n let token = start;\n while (token) {\n type = token[0];\n tokens.push(token);\n if (type === \"(\" || type === \"[\") {\n if (!bracket) bracket = token;\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (customProperty && colon && type === \"{\") {\n if (!bracket) bracket = token;\n brackets.push(\"}\");\n } else if (brackets.length === 0) {\n if (type === \";\") {\n if (colon) {\n this.decl(tokens, customProperty);\n return;\n } else {\n break;\n }\n } else if (type === \"{\") {\n this.rule(tokens);\n return;\n } else if (type === \"}\") {\n this.tokenizer.back(tokens.pop());\n end = true;\n break;\n } else if (type === \":\") {\n colon = true;\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n if (brackets.length === 0) bracket = null;\n }\n token = this.tokenizer.nextToken();\n }\n if (this.tokenizer.endOfFile()) end = true;\n if (brackets.length > 0) this.unclosedBracket(bracket);\n if (end && colon) {\n if (!customProperty) {\n while (tokens.length) {\n token = tokens[tokens.length - 1][0];\n if (token !== \"space\" && token !== \"comment\") break;\n this.tokenizer.back(tokens.pop());\n }\n }\n this.decl(tokens, customProperty);\n } else {\n this.unknownWord(tokens);\n }\n }\n parse() {\n let token;\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n switch (token[0]) {\n case \"space\":\n this.spaces += token[1];\n break;\n case \";\":\n this.freeSemicolon(token);\n break;\n case \"}\":\n this.end(token);\n break;\n case \"comment\":\n this.comment(token);\n break;\n case \"at-word\":\n this.atrule(token);\n break;\n case \"{\":\n this.emptyRule(token);\n break;\n default:\n this.other(token);\n break;\n }\n }\n this.endFile();\n }\n precheckMissedSemicolon() {\n }\n raw(node2, prop, tokens, customProperty) {\n let token, type;\n let length = tokens.length;\n let value = \"\";\n let clean = true;\n let next, prev;\n for (let i2 = 0; i2 < length; i2 += 1) {\n token = tokens[i2];\n type = token[0];\n if (type === \"space\" && i2 === length - 1 && !customProperty) {\n clean = false;\n } else if (type === \"comment\") {\n prev = tokens[i2 - 1] ? tokens[i2 - 1][0] : \"empty\";\n next = tokens[i2 + 1] ? tokens[i2 + 1][0] : \"empty\";\n if (!SAFE_COMMENT_NEIGHBOR[prev] && !SAFE_COMMENT_NEIGHBOR[next]) {\n if (value.slice(-1) === \",\") {\n clean = false;\n } else {\n value += token[1];\n }\n } else {\n clean = false;\n }\n } else {\n value += token[1];\n }\n }\n if (!clean) {\n let raw = tokens.reduce((all, i2) => all + i2[1], \"\");\n node2.raws[prop] = { raw, value };\n }\n node2[prop] = value;\n }\n rule(tokens) {\n tokens.pop();\n let node2 = new Rule$2();\n this.init(node2, tokens[0][2]);\n node2.raws.between = this.spacesAndCommentsFromEnd(tokens);\n this.raw(node2, \"selector\", tokens);\n this.current = node2;\n }\n spacesAndCommentsFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\" && lastTokenType !== \"comment\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n // Errors\n spacesAndCommentsFromStart(tokens) {\n let next;\n let spaces = \"\";\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n spaces += tokens.shift()[1];\n }\n return spaces;\n }\n spacesFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n stringFrom(tokens, from) {\n let result2 = \"\";\n for (let i2 = from; i2 < tokens.length; i2++) {\n result2 += tokens[i2][1];\n }\n tokens.splice(from, tokens.length - from);\n return result2;\n }\n unclosedBlock() {\n let pos = this.current.source.start;\n throw this.input.error(\"Unclosed block\", pos.line, pos.column);\n }\n unclosedBracket(bracket) {\n throw this.input.error(\n \"Unclosed bracket\",\n { offset: bracket[2] },\n { offset: bracket[2] + 1 }\n );\n }\n unexpectedClose(token) {\n throw this.input.error(\n \"Unexpected }\",\n { offset: token[2] },\n { offset: token[2] + 1 }\n );\n }\n unknownWord(tokens) {\n throw this.input.error(\n \"Unknown word\",\n { offset: tokens[0][2] },\n { offset: tokens[0][2] + tokens[0][1].length }\n );\n }\n unnamedAtrule(node2, token) {\n throw this.input.error(\n \"At-rule without name\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n};\nvar parser = Parser$1;\nlet Container$2 = container;\nlet Parser22 = parser;\nlet Input$2 = input;\nfunction parse$3(css, opts) {\n let input2 = new Input$2(css, opts);\n let parser2 = new Parser22(input2);\n try {\n parser2.parse();\n } catch (e2) {\n if (process.env.NODE_ENV !== \"production\") {\n if (e2.name === \"CssSyntaxError\" && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser\";\n } else if (/\\.sass/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser\";\n } else if (/\\.less$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser\";\n }\n }\n }\n throw e2;\n }\n return parser2.root;\n}\nvar parse_1 = parse$3;\nparse$3.default = parse$3;\nContainer$2.registerParse(parse$3);\nlet { isClean, my } = symbols;\nlet MapGenerator$1 = mapGenerator;\nlet stringify$2 = stringify_1;\nlet Container$1 = container;\nlet Document$2 = document$1;\nlet warnOnce$1 = warnOnce$2;\nlet Result$2 = result;\nlet parse$2 = parse_1;\nlet Root$3 = root;\nconst TYPE_TO_CLASS_NAME = {\n atrule: \"AtRule\",\n comment: \"Comment\",\n decl: \"Declaration\",\n document: \"Document\",\n root: \"Root\",\n rule: \"Rule\"\n};\nconst PLUGIN_PROPS = {\n AtRule: true,\n AtRuleExit: true,\n Comment: true,\n CommentExit: true,\n Declaration: true,\n DeclarationExit: true,\n Document: true,\n DocumentExit: true,\n Once: true,\n OnceExit: true,\n postcssPlugin: true,\n prepare: true,\n Root: true,\n RootExit: true,\n Rule: true,\n RuleExit: true\n};\nconst NOT_VISITORS = {\n Once: true,\n postcssPlugin: true,\n prepare: true\n};\nconst CHILDREN = 0;\nfunction isPromise(obj) {\n return typeof obj === \"object\" && typeof obj.then === \"function\";\n}\nfunction getEvents(node2) {\n let key = false;\n let type = TYPE_TO_CLASS_NAME[node2.type];\n if (node2.type === \"decl\") {\n key = node2.prop.toLowerCase();\n } else if (node2.type === \"atrule\") {\n key = node2.name.toLowerCase();\n }\n if (key && node2.append) {\n return [\n type,\n type + \"-\" + key,\n CHILDREN,\n type + \"Exit\",\n type + \"Exit-\" + key\n ];\n } else if (key) {\n return [type, type + \"-\" + key, type + \"Exit\", type + \"Exit-\" + key];\n } else if (node2.append) {\n return [type, CHILDREN, type + \"Exit\"];\n } else {\n return [type, type + \"Exit\"];\n }\n}\nfunction toStack(node2) {\n let events;\n if (node2.type === \"document\") {\n events = [\"Document\", CHILDREN, \"DocumentExit\"];\n } else if (node2.type === \"root\") {\n events = [\"Root\", CHILDREN, \"RootExit\"];\n } else {\n events = getEvents(node2);\n }\n return {\n eventIndex: 0,\n events,\n iterator: 0,\n node: node2,\n visitorIndex: 0,\n visitors: []\n };\n}\nfunction cleanMarks(node2) {\n node2[isClean] = false;\n if (node2.nodes) node2.nodes.forEach((i2) => cleanMarks(i2));\n return node2;\n}\nlet postcss$2 = {};\nlet LazyResult$2 = class LazyResult2 {\n constructor(processor2, css, opts) {\n this.stringified = false;\n this.processed = false;\n let root2;\n if (typeof css === \"object\" && css !== null && (css.type === \"root\" || css.type === \"document\")) {\n root2 = cleanMarks(css);\n } else if (css instanceof LazyResult2 || css instanceof Result$2) {\n root2 = cleanMarks(css.root);\n if (css.map) {\n if (typeof opts.map === \"undefined\") opts.map = {};\n if (!opts.map.inline) opts.map.inline = false;\n opts.map.prev = css.map;\n }\n } else {\n let parser2 = parse$2;\n if (opts.syntax) parser2 = opts.syntax.parse;\n if (opts.parser) parser2 = opts.parser;\n if (parser2.parse) parser2 = parser2.parse;\n try {\n root2 = parser2(css, opts);\n } catch (error) {\n this.processed = true;\n this.error = error;\n }\n if (root2 && !root2[my]) {\n Container$1.rebuild(root2);\n }\n }\n this.result = new Result$2(processor2, root2, opts);\n this.helpers = { ...postcss$2, postcss: postcss$2, result: this.result };\n this.plugins = this.processor.plugins.map((plugin22) => {\n if (typeof plugin22 === \"object\" && plugin22.prepare) {\n return { ...plugin22, ...plugin22.prepare(this.result) };\n } else {\n return plugin22;\n }\n });\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n if (this.processed) return Promise.resolve(this.result);\n if (!this.processing) {\n this.processing = this.runAsync();\n }\n return this.processing;\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n getAsyncError() {\n throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n }\n handleError(error, node2) {\n let plugin22 = this.result.lastPlugin;\n try {\n if (node2) node2.addToError(error);\n this.error = error;\n if (error.name === \"CssSyntaxError\" && !error.plugin) {\n error.plugin = plugin22.postcssPlugin;\n error.setMessage();\n } else if (plugin22.postcssVersion) {\n if (process.env.NODE_ENV !== \"production\") {\n let pluginName = plugin22.postcssPlugin;\n let pluginVer = plugin22.postcssVersion;\n let runtimeVer = this.result.processor.version;\n let a2 = pluginVer.split(\".\");\n let b = runtimeVer.split(\".\");\n if (a2[0] !== b[0] || parseInt(a2[1]) > parseInt(b[1])) {\n console.error(\n \"Unknown error from PostCSS plugin. Your current PostCSS version is \" + runtimeVer + \", but \" + pluginName + \" uses \" + pluginVer + \". Perhaps this is the source of the error below.\"\n );\n }\n }\n }\n } catch (err) {\n if (console && console.error) console.error(err);\n }\n return error;\n }\n prepareVisitors() {\n this.listeners = {};\n let add = (plugin22, type, cb) => {\n if (!this.listeners[type]) this.listeners[type] = [];\n this.listeners[type].push([plugin22, cb]);\n };\n for (let plugin22 of this.plugins) {\n if (typeof plugin22 === \"object\") {\n for (let event in plugin22) {\n if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) {\n throw new Error(\n `Unknown event ${event} in ${plugin22.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`\n );\n }\n if (!NOT_VISITORS[event]) {\n if (typeof plugin22[event] === \"object\") {\n for (let filter in plugin22[event]) {\n if (filter === \"*\") {\n add(plugin22, event, plugin22[event][filter]);\n } else {\n add(\n plugin22,\n event + \"-\" + filter.toLowerCase(),\n plugin22[event][filter]\n );\n }\n }\n } else if (typeof plugin22[event] === \"function\") {\n add(plugin22, event, plugin22[event]);\n }\n }\n }\n }\n }\n this.hasListener = Object.keys(this.listeners).length > 0;\n }\n async runAsync() {\n this.plugin = 0;\n for (let i2 = 0; i2 < this.plugins.length; i2++) {\n let plugin22 = this.plugins[i2];\n let promise = this.runOnRoot(plugin22);\n if (isPromise(promise)) {\n try {\n await promise;\n } catch (error) {\n throw this.handleError(error);\n }\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean]) {\n root2[isClean] = true;\n let stack = [toStack(root2)];\n while (stack.length > 0) {\n let promise = this.visitTick(stack);\n if (isPromise(promise)) {\n try {\n await promise;\n } catch (e2) {\n let node2 = stack[stack.length - 1].node;\n throw this.handleError(e2, node2);\n }\n }\n }\n }\n if (this.listeners.OnceExit) {\n for (let [plugin22, visitor] of this.listeners.OnceExit) {\n this.result.lastPlugin = plugin22;\n try {\n if (root2.type === \"document\") {\n let roots = root2.nodes.map(\n (subRoot) => visitor(subRoot, this.helpers)\n );\n await Promise.all(roots);\n } else {\n await visitor(root2, this.helpers);\n }\n } catch (e2) {\n throw this.handleError(e2);\n }\n }\n }\n }\n this.processed = true;\n return this.stringify();\n }\n runOnRoot(plugin22) {\n this.result.lastPlugin = plugin22;\n try {\n if (typeof plugin22 === \"object\" && plugin22.Once) {\n if (this.result.root.type === \"document\") {\n let roots = this.result.root.nodes.map(\n (root2) => plugin22.Once(root2, this.helpers)\n );\n if (isPromise(roots[0])) {\n return Promise.all(roots);\n }\n return roots;\n }\n return plugin22.Once(this.result.root, this.helpers);\n } else if (typeof plugin22 === \"function\") {\n return plugin22(this.result.root, this.result);\n }\n } catch (error) {\n throw this.handleError(error);\n }\n }\n stringify() {\n if (this.error) throw this.error;\n if (this.stringified) return this.result;\n this.stringified = true;\n this.sync();\n let opts = this.result.opts;\n let str = stringify$2;\n if (opts.syntax) str = opts.syntax.stringify;\n if (opts.stringifier) str = opts.stringifier;\n if (str.stringify) str = str.stringify;\n let map = new MapGenerator$1(str, this.result.root, this.result.opts);\n let data = map.generate();\n this.result.css = data[0];\n this.result.map = data[1];\n return this.result;\n }\n sync() {\n if (this.error) throw this.error;\n if (this.processed) return this.result;\n this.processed = true;\n if (this.processing) {\n throw this.getAsyncError();\n }\n for (let plugin22 of this.plugins) {\n let promise = this.runOnRoot(plugin22);\n if (isPromise(promise)) {\n throw this.getAsyncError();\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean]) {\n root2[isClean] = true;\n this.walkSync(root2);\n }\n if (this.listeners.OnceExit) {\n if (root2.type === \"document\") {\n for (let subRoot of root2.nodes) {\n this.visitSync(this.listeners.OnceExit, subRoot);\n }\n } else {\n this.visitSync(this.listeners.OnceExit, root2);\n }\n }\n }\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this.opts)) {\n warnOnce$1(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this.css;\n }\n visitSync(visitors, node2) {\n for (let [plugin22, visitor] of visitors) {\n this.result.lastPlugin = plugin22;\n let promise;\n try {\n promise = visitor(node2, this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2.proxyOf);\n }\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n return true;\n }\n if (isPromise(promise)) {\n throw this.getAsyncError();\n }\n }\n }\n visitTick(stack) {\n let visit2 = stack[stack.length - 1];\n let { node: node2, visitors } = visit2;\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n stack.pop();\n return;\n }\n if (visitors.length > 0 && visit2.visitorIndex < visitors.length) {\n let [plugin22, visitor] = visitors[visit2.visitorIndex];\n visit2.visitorIndex += 1;\n if (visit2.visitorIndex === visitors.length) {\n visit2.visitors = [];\n visit2.visitorIndex = 0;\n }\n this.result.lastPlugin = plugin22;\n try {\n return visitor(node2.toProxy(), this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2);\n }\n }\n if (visit2.iterator !== 0) {\n let iterator = visit2.iterator;\n let child;\n while (child = node2.nodes[node2.indexes[iterator]]) {\n node2.indexes[iterator] += 1;\n if (!child[isClean]) {\n child[isClean] = true;\n stack.push(toStack(child));\n return;\n }\n }\n visit2.iterator = 0;\n delete node2.indexes[iterator];\n }\n let events = visit2.events;\n while (visit2.eventIndex < events.length) {\n let event = events[visit2.eventIndex];\n visit2.eventIndex += 1;\n if (event === CHILDREN) {\n if (node2.nodes && node2.nodes.length) {\n node2[isClean] = true;\n visit2.iterator = node2.getIterator();\n }\n return;\n } else if (this.listeners[event]) {\n visit2.visitors = this.listeners[event];\n return;\n }\n }\n stack.pop();\n }\n walkSync(node2) {\n node2[isClean] = true;\n let events = getEvents(node2);\n for (let event of events) {\n if (event === CHILDREN) {\n if (node2.nodes) {\n node2.each((child) => {\n if (!child[isClean]) this.walkSync(child);\n });\n }\n } else {\n let visitors = this.listeners[event];\n if (visitors) {\n if (this.visitSync(visitors, node2.toProxy())) return;\n }\n }\n }\n }\n warnings() {\n return this.sync().warnings();\n }\n get content() {\n return this.stringify().content;\n }\n get css() {\n return this.stringify().css;\n }\n get map() {\n return this.stringify().map;\n }\n get messages() {\n return this.sync().messages;\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n return this.sync().root;\n }\n get [Symbol.toStringTag]() {\n return \"LazyResult\";\n }\n};\nLazyResult$2.registerPostcss = (dependant) => {\n postcss$2 = dependant;\n};\nvar lazyResult = LazyResult$2;\nLazyResult$2.default = LazyResult$2;\nRoot$3.registerLazyResult(LazyResult$2);\nDocument$2.registerLazyResult(LazyResult$2);\nlet MapGenerator22 = mapGenerator;\nlet stringify$1 = stringify_1;\nlet warnOnce22 = warnOnce$2;\nlet parse$1 = parse_1;\nconst Result$1 = result;\nlet NoWorkResult$1 = class NoWorkResult2 {\n constructor(processor2, css, opts) {\n css = css.toString();\n this.stringified = false;\n this._processor = processor2;\n this._css = css;\n this._opts = opts;\n this._map = void 0;\n let root2;\n let str = stringify$1;\n this.result = new Result$1(this._processor, root2, this._opts);\n this.result.css = css;\n let self = this;\n Object.defineProperty(this.result, \"root\", {\n get() {\n return self.root;\n }\n });\n let map = new MapGenerator22(str, root2, this._opts, css);\n if (map.isMap()) {\n let [generatedCSS, generatedMap] = map.generate();\n if (generatedCSS) {\n this.result.css = generatedCSS;\n }\n if (generatedMap) {\n this.result.map = generatedMap;\n }\n } else {\n map.clearAnnotation();\n this.result.css = map.css;\n }\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n return Promise.resolve(this.result);\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n sync() {\n if (this.error) throw this.error;\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this._opts)) {\n warnOnce22(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this._css;\n }\n warnings() {\n return [];\n }\n get content() {\n return this.result.css;\n }\n get css() {\n return this.result.css;\n }\n get map() {\n return this.result.map;\n }\n get messages() {\n return [];\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n if (this._root) {\n return this._root;\n }\n let root2;\n let parser2 = parse$1;\n try {\n root2 = parser2(this._css, this._opts);\n } catch (error) {\n this.error = error;\n }\n if (this.error) {\n throw this.error;\n } else {\n this._root = root2;\n return root2;\n }\n }\n get [Symbol.toStringTag]() {\n return \"NoWorkResult\";\n }\n};\nvar noWorkResult = NoWorkResult$1;\nNoWorkResult$1.default = NoWorkResult$1;\nlet NoWorkResult22 = noWorkResult;\nlet LazyResult$1 = lazyResult;\nlet Document$1 = document$1;\nlet Root$2 = root;\nlet Processor$1 = class Processor2 {\n constructor(plugins = []) {\n this.version = \"8.4.38\";\n this.plugins = this.normalize(plugins);\n }\n normalize(plugins) {\n let normalized = [];\n for (let i2 of plugins) {\n if (i2.postcss === true) {\n i2 = i2();\n } else if (i2.postcss) {\n i2 = i2.postcss;\n }\n if (typeof i2 === \"object\" && Array.isArray(i2.plugins)) {\n normalized = normalized.concat(i2.plugins);\n } else if (typeof i2 === \"object\" && i2.postcssPlugin) {\n normalized.push(i2);\n } else if (typeof i2 === \"function\") {\n normalized.push(i2);\n } else if (typeof i2 === \"object\" && (i2.parse || i2.stringify)) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error(\n \"PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.\"\n );\n }\n } else {\n throw new Error(i2 + \" is not a PostCSS plugin\");\n }\n }\n return normalized;\n }\n process(css, opts = {}) {\n if (!this.plugins.length && !opts.parser && !opts.stringifier && !opts.syntax) {\n return new NoWorkResult22(this, css, opts);\n } else {\n return new LazyResult$1(this, css, opts);\n }\n }\n use(plugin22) {\n this.plugins = this.plugins.concat(this.normalize([plugin22]));\n return this;\n }\n};\nvar processor = Processor$1;\nProcessor$1.default = Processor$1;\nRoot$2.registerProcessor(Processor$1);\nDocument$1.registerProcessor(Processor$1);\nlet Declaration$1 = declaration;\nlet PreviousMap22 = previousMap;\nlet Comment$1 = comment;\nlet AtRule$1 = atRule;\nlet Input$1 = input;\nlet Root$1 = root;\nlet Rule$1 = rule;\nfunction fromJSON$1(json, inputs) {\n if (Array.isArray(json)) return json.map((n2) => fromJSON$1(n2));\n let { inputs: ownInputs, ...defaults } = json;\n if (ownInputs) {\n inputs = [];\n for (let input2 of ownInputs) {\n let inputHydrated = { ...input2, __proto__: Input$1.prototype };\n if (inputHydrated.map) {\n inputHydrated.map = {\n ...inputHydrated.map,\n __proto__: PreviousMap22.prototype\n };\n }\n inputs.push(inputHydrated);\n }\n }\n if (defaults.nodes) {\n defaults.nodes = json.nodes.map((n2) => fromJSON$1(n2, inputs));\n }\n if (defaults.source) {\n let { inputId, ...source } = defaults.source;\n defaults.source = source;\n if (inputId != null) {\n defaults.source.input = inputs[inputId];\n }\n }\n if (defaults.type === \"root\") {\n return new Root$1(defaults);\n } else if (defaults.type === \"decl\") {\n return new Declaration$1(defaults);\n } else if (defaults.type === \"rule\") {\n return new Rule$1(defaults);\n } else if (defaults.type === \"comment\") {\n return new Comment$1(defaults);\n } else if (defaults.type === \"atrule\") {\n return new AtRule$1(defaults);\n } else {\n throw new Error(\"Unknown node type: \" + json.type);\n }\n}\nvar fromJSON_1 = fromJSON$1;\nfromJSON$1.default = fromJSON$1;\nlet CssSyntaxError22 = cssSyntaxError;\nlet Declaration22 = declaration;\nlet LazyResult22 = lazyResult;\nlet Container22 = container;\nlet Processor22 = processor;\nlet stringify = stringify_1;\nlet fromJSON = fromJSON_1;\nlet Document222 = document$1;\nlet Warning22 = warning;\nlet Comment22 = comment;\nlet AtRule22 = atRule;\nlet Result22 = result;\nlet Input22 = input;\nlet parse = parse_1;\nlet list = list_1;\nlet Rule22 = rule;\nlet Root22 = root;\nlet Node22 = node;\nfunction postcss(...plugins) {\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0];\n }\n return new Processor22(plugins);\n}\npostcss.plugin = function plugin2(name, initializer) {\n let warningPrinted = false;\n function creator(...args) {\n if (console && console.warn && !warningPrinted) {\n warningPrinted = true;\n console.warn(\n name + \": postcss.plugin was deprecated. Migration guide:\\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration\"\n );\n if (process.env.LANG && process.env.LANG.startsWith(\"cn\")) {\n console.warn(\n name + \": 里面 postcss.plugin 被弃用. 迁移指南:\\nhttps://www.w3ctech.com/topic/2226\"\n );\n }\n }\n let transformer = initializer(...args);\n transformer.postcssPlugin = name;\n transformer.postcssVersion = new Processor22().version;\n return transformer;\n }\n let cache;\n Object.defineProperty(creator, \"postcss\", {\n get() {\n if (!cache) cache = creator();\n return cache;\n }\n });\n creator.process = function(css, processOpts, pluginOpts) {\n return postcss([creator(pluginOpts)]).process(css, processOpts);\n };\n return creator;\n};\npostcss.stringify = stringify;\npostcss.parse = parse;\npostcss.fromJSON = fromJSON;\npostcss.list = list;\npostcss.comment = (defaults) => new Comment22(defaults);\npostcss.atRule = (defaults) => new AtRule22(defaults);\npostcss.decl = (defaults) => new Declaration22(defaults);\npostcss.rule = (defaults) => new Rule22(defaults);\npostcss.root = (defaults) => new Root22(defaults);\npostcss.document = (defaults) => new Document222(defaults);\npostcss.CssSyntaxError = CssSyntaxError22;\npostcss.Declaration = Declaration22;\npostcss.Container = Container22;\npostcss.Processor = Processor22;\npostcss.Document = Document222;\npostcss.Comment = Comment22;\npostcss.Warning = Warning22;\npostcss.AtRule = AtRule22;\npostcss.Result = Result22;\npostcss.Input = Input22;\npostcss.Rule = Rule22;\npostcss.Root = Root22;\npostcss.Node = Node22;\nLazyResult22.registerPostcss(postcss);\nvar postcss_1 = postcss;\npostcss.default = postcss;\nconst postcss$1 = /* @__PURE__ */ getDefaultExportFromCjs(postcss_1);\npostcss$1.stringify;\npostcss$1.fromJSON;\npostcss$1.plugin;\npostcss$1.parse;\npostcss$1.list;\npostcss$1.document;\npostcss$1.comment;\npostcss$1.atRule;\npostcss$1.rule;\npostcss$1.decl;\npostcss$1.root;\npostcss$1.CssSyntaxError;\npostcss$1.Declaration;\npostcss$1.Container;\npostcss$1.Processor;\npostcss$1.Document;\npostcss$1.Comment;\npostcss$1.Warning;\npostcss$1.AtRule;\npostcss$1.Result;\npostcss$1.Input;\npostcss$1.Rule;\npostcss$1.Root;\npostcss$1.Node;\nclass BaseRRNode {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any\n constructor(..._args) {\n __publicField2(this, \"parentElement\", null);\n __publicField2(this, \"parentNode\", null);\n __publicField2(this, \"ownerDocument\");\n __publicField2(this, \"firstChild\", null);\n __publicField2(this, \"lastChild\", null);\n __publicField2(this, \"previousSibling\", null);\n __publicField2(this, \"nextSibling\", null);\n __publicField2(this, \"ELEMENT_NODE\", 1);\n __publicField2(this, \"TEXT_NODE\", 3);\n __publicField2(this, \"nodeType\");\n __publicField2(this, \"nodeName\");\n __publicField2(this, \"RRNodeType\");\n }\n get childNodes() {\n const childNodes2 = [];\n let childIterator = this.firstChild;\n while (childIterator) {\n childNodes2.push(childIterator);\n childIterator = childIterator.nextSibling;\n }\n return childNodes2;\n }\n contains(node2) {\n if (!(node2 instanceof BaseRRNode)) return false;\n else if (node2.ownerDocument !== this.ownerDocument) return false;\n else if (node2 === this) return true;\n while (node2.parentNode) {\n if (node2.parentNode === this) return true;\n node2 = node2.parentNode;\n }\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n appendChild(_newChild) {\n throw new Error(\n `RRDomException: Failed to execute 'appendChild' on 'RRNode': This RRNode type does not support this method.`\n );\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n insertBefore(_newChild, _refChild) {\n throw new Error(\n `RRDomException: Failed to execute 'insertBefore' on 'RRNode': This RRNode type does not support this method.`\n );\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n removeChild(_node) {\n throw new Error(\n `RRDomException: Failed to execute 'removeChild' on 'RRNode': This RRNode type does not support this method.`\n );\n }\n toString() {\n return \"RRNode\";\n }\n}\nconst testableAccessors = {\n Node: [\"childNodes\", \"parentNode\", \"parentElement\", \"textContent\"],\n ShadowRoot: [\"host\", \"styleSheets\"],\n Element: [\"shadowRoot\", \"querySelector\", \"querySelectorAll\"],\n MutationObserver: []\n};\nconst testableMethods = {\n Node: [\"contains\", \"getRootNode\"],\n ShadowRoot: [\"getSelection\"],\n Element: [],\n MutationObserver: [\"constructor\"]\n};\nconst untaintedBasePrototype = {};\nconst isAngularZonePresent = () => {\n return !!globalThis.Zone;\n};\nfunction getUntaintedPrototype(key) {\n if (untaintedBasePrototype[key])\n return untaintedBasePrototype[key];\n const defaultObj = globalThis[key];\n const defaultPrototype = defaultObj.prototype;\n const accessorNames = key in testableAccessors ? testableAccessors[key] : void 0;\n const isUntaintedAccessors = Boolean(\n accessorNames && // @ts-expect-error 2345\n accessorNames.every(\n (accessor) => {\n var _a2, _b;\n return Boolean(\n (_b = (_a2 = Object.getOwnPropertyDescriptor(defaultPrototype, accessor)) == null ? void 0 : _a2.get) == null ? void 0 : _b.toString().includes(\"[native code]\")\n );\n }\n )\n );\n const methodNames = key in testableMethods ? testableMethods[key] : void 0;\n const isUntaintedMethods = Boolean(\n methodNames && methodNames.every(\n // @ts-expect-error 2345\n (method) => {\n var _a2;\n return typeof defaultPrototype[method] === \"function\" && ((_a2 = defaultPrototype[method]) == null ? void 0 : _a2.toString().includes(\"[native code]\"));\n }\n )\n );\n if (isUntaintedAccessors && isUntaintedMethods && !isAngularZonePresent()) {\n untaintedBasePrototype[key] = defaultObj.prototype;\n return defaultObj.prototype;\n }\n try {\n const iframeEl = document.createElement(\"iframe\");\n document.body.appendChild(iframeEl);\n const win = iframeEl.contentWindow;\n if (!win) return defaultObj.prototype;\n const untaintedObject = win[key].prototype;\n document.body.removeChild(iframeEl);\n if (!untaintedObject) return defaultPrototype;\n return untaintedBasePrototype[key] = untaintedObject;\n } catch {\n return defaultPrototype;\n }\n}\nconst untaintedAccessorCache = {};\nfunction getUntaintedAccessor(key, instance, accessor) {\n var _a2;\n const cacheKey = `${key}.${String(accessor)}`;\n if (untaintedAccessorCache[cacheKey])\n return untaintedAccessorCache[cacheKey].call(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype(key);\n const untaintedAccessor = (_a2 = Object.getOwnPropertyDescriptor(\n untaintedPrototype,\n accessor\n )) == null ? void 0 : _a2.get;\n if (!untaintedAccessor) return instance[accessor];\n untaintedAccessorCache[cacheKey] = untaintedAccessor;\n return untaintedAccessor.call(instance);\n}\nconst untaintedMethodCache = {};\nfunction getUntaintedMethod(key, instance, method) {\n const cacheKey = `${key}.${String(method)}`;\n if (untaintedMethodCache[cacheKey])\n return untaintedMethodCache[cacheKey].bind(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype(key);\n const untaintedMethod = untaintedPrototype[method];\n if (typeof untaintedMethod !== \"function\") return instance[method];\n untaintedMethodCache[cacheKey] = untaintedMethod;\n return untaintedMethod.bind(instance);\n}\nfunction childNodes(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"childNodes\");\n}\nfunction parentNode(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"parentNode\");\n}\nfunction parentElement(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"parentElement\");\n}\nfunction textContent(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"textContent\");\n}\nfunction contains(n2, other) {\n return getUntaintedMethod(\"Node\", n2, \"contains\")(other);\n}\nfunction getRootNode(n2) {\n return getUntaintedMethod(\"Node\", n2, \"getRootNode\")();\n}\nfunction host(n2) {\n if (!n2 || !(\"host\" in n2)) return null;\n return getUntaintedAccessor(\"ShadowRoot\", n2, \"host\");\n}\nfunction styleSheets(n2) {\n return n2.styleSheets;\n}\nfunction shadowRoot(n2) {\n if (!n2 || !(\"shadowRoot\" in n2)) return null;\n return getUntaintedAccessor(\"Element\", n2, \"shadowRoot\");\n}\nfunction querySelector(n2, selectors) {\n return getUntaintedAccessor(\"Element\", n2, \"querySelector\")(selectors);\n}\nfunction querySelectorAll(n2, selectors) {\n return getUntaintedAccessor(\"Element\", n2, \"querySelectorAll\")(selectors);\n}\nfunction mutationObserverCtor() {\n return getUntaintedPrototype(\"MutationObserver\").constructor;\n}\nconst index = {\n childNodes,\n parentNode,\n parentElement,\n textContent,\n contains,\n getRootNode,\n host,\n styleSheets,\n shadowRoot,\n querySelector,\n querySelectorAll,\n mutationObserver: mutationObserverCtor\n};\nfunction on(type, fn, target = document) {\n const options = { capture: true, passive: true };\n target.addEventListener(type, fn, options);\n return () => target.removeEventListener(type, fn, options);\n}\nconst DEPARTED_MIRROR_ACCESS_WARNING = \"Please stop import mirror directly. Instead of that,\\r\\nnow you can use replayer.getMirror() to access the mirror instance of a replayer,\\r\\nor you can use record.mirror to access the mirror instance during recording.\";\nlet _mirror = {\n map: {},\n getId() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return -1;\n },\n getNode() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return null;\n },\n removeNodeFromMap() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n },\n has() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return false;\n },\n reset() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n }\n};\nif (typeof window !== \"undefined\" && window.Proxy && window.Reflect) {\n _mirror = new Proxy(_mirror, {\n get(target, prop, receiver) {\n if (prop === \"map\") {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n }\n return Reflect.get(target, prop, receiver);\n }\n });\n}\nfunction throttle(func, wait, options = {}) {\n let timeout = null;\n let previous = 0;\n return function(...args) {\n const now = Date.now();\n if (!previous && options.leading === false) {\n previous = now;\n }\n const remaining = wait - (now - previous);\n const context = this;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n func.apply(context, args);\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(() => {\n previous = options.leading === false ? 0 : Date.now();\n timeout = null;\n func.apply(context, args);\n }, remaining);\n }\n };\n}\nfunction hookSetter(target, key, d, isRevoked, win = window) {\n const original = win.Object.getOwnPropertyDescriptor(target, key);\n win.Object.defineProperty(\n target,\n key,\n isRevoked ? d : {\n set(value) {\n setTimeout(() => {\n d.set.call(this, value);\n }, 0);\n if (original && original.set) {\n original.set.call(this, value);\n }\n }\n }\n );\n return () => hookSetter(target, key, original || {}, true);\n}\nfunction patch(source, name, replacement) {\n try {\n if (!(name in source)) {\n return () => {\n };\n }\n const original = source[name];\n const wrapped = replacement(original);\n if (typeof wrapped === \"function\") {\n wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __rrweb_original__: {\n enumerable: false,\n value: original\n }\n });\n }\n source[name] = wrapped;\n return () => {\n source[name] = original;\n };\n } catch {\n return () => {\n };\n }\n}\nlet nowTimestamp = Date.now;\nif (!/* @__PURE__ */ /[1-9][0-9]{12}/.test(Date.now().toString())) {\n nowTimestamp = () => (/* @__PURE__ */ new Date()).getTime();\n}\nfunction getWindowScroll(win) {\n var _a2, _b, _c, _d;\n const doc = win.document;\n return {\n left: doc.scrollingElement ? doc.scrollingElement.scrollLeft : win.pageXOffset !== void 0 ? win.pageXOffset : doc.documentElement.scrollLeft || (doc == null ? void 0 : doc.body) && ((_a2 = index.parentElement(doc.body)) == null ? void 0 : _a2.scrollLeft) || ((_b = doc == null ? void 0 : doc.body) == null ? void 0 : _b.scrollLeft) || 0,\n top: doc.scrollingElement ? doc.scrollingElement.scrollTop : win.pageYOffset !== void 0 ? win.pageYOffset : (doc == null ? void 0 : doc.documentElement.scrollTop) || (doc == null ? void 0 : doc.body) && ((_c = index.parentElement(doc.body)) == null ? void 0 : _c.scrollTop) || ((_d = doc == null ? void 0 : doc.body) == null ? void 0 : _d.scrollTop) || 0\n };\n}\nfunction getWindowHeight() {\n return window.innerHeight || document.documentElement && document.documentElement.clientHeight || document.body && document.body.clientHeight;\n}\nfunction getWindowWidth() {\n return window.innerWidth || document.documentElement && document.documentElement.clientWidth || document.body && document.body.clientWidth;\n}\nfunction closestElementOfNode(node2) {\n if (!node2) {\n return null;\n }\n const el = node2.nodeType === node2.ELEMENT_NODE ? node2 : index.parentElement(node2);\n return el;\n}\nfunction isBlocked(node2, blockClass, blockSelector, checkAncestors) {\n if (!node2) {\n return false;\n }\n const el = closestElementOfNode(node2);\n if (!el) {\n return false;\n }\n try {\n if (typeof blockClass === \"string\") {\n if (el.classList.contains(blockClass)) return true;\n if (checkAncestors && el.closest(\".\" + blockClass) !== null) return true;\n } else {\n if (classMatchesRegex(el, blockClass, checkAncestors)) return true;\n }\n } catch (e2) {\n }\n if (blockSelector) {\n if (el.matches(blockSelector)) return true;\n if (checkAncestors && el.closest(blockSelector) !== null) return true;\n }\n return false;\n}\nfunction isSerialized(n2, mirror2) {\n return mirror2.getId(n2) !== -1;\n}\nfunction isIgnored(n2, mirror2, slimDOMOptions) {\n if (n2.tagName === \"TITLE\" && slimDOMOptions.headTitleMutations) {\n return true;\n }\n return mirror2.getId(n2) === IGNORED_NODE;\n}\nfunction isAncestorRemoved(target, mirror2) {\n if (isShadowRoot(target)) {\n return false;\n }\n const id = mirror2.getId(target);\n if (!mirror2.has(id)) {\n return true;\n }\n const parent = index.parentNode(target);\n if (parent && parent.nodeType === target.DOCUMENT_NODE) {\n return false;\n }\n if (!parent) {\n return true;\n }\n return isAncestorRemoved(parent, mirror2);\n}\nfunction legacy_isTouchEvent(event) {\n return Boolean(event.changedTouches);\n}\nfunction polyfill$1(win = window) {\n if (\"NodeList\" in win && !win.NodeList.prototype.forEach) {\n win.NodeList.prototype.forEach = Array.prototype.forEach;\n }\n if (\"DOMTokenList\" in win && !win.DOMTokenList.prototype.forEach) {\n win.DOMTokenList.prototype.forEach = Array.prototype.forEach;\n }\n}\nfunction isSerializedIframe(n2, mirror2) {\n return Boolean(n2.nodeName === \"IFRAME\" && mirror2.getMeta(n2));\n}\nfunction isSerializedStylesheet(n2, mirror2) {\n return Boolean(\n n2.nodeName === \"LINK\" && n2.nodeType === n2.ELEMENT_NODE && n2.getAttribute && n2.getAttribute(\"rel\") === \"stylesheet\" && mirror2.getMeta(n2)\n );\n}\nfunction hasShadowRoot(n2) {\n if (!n2) return false;\n if (n2 instanceof BaseRRNode && \"shadowRoot\" in n2) {\n return Boolean(n2.shadowRoot);\n }\n return Boolean(index.shadowRoot(n2));\n}\nclass StyleSheetMirror {\n constructor() {\n __publicField(this, \"id\", 1);\n __publicField(this, \"styleIDMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"idStyleMap\", /* @__PURE__ */ new Map());\n }\n getId(stylesheet) {\n return this.styleIDMap.get(stylesheet) ?? -1;\n }\n has(stylesheet) {\n return this.styleIDMap.has(stylesheet);\n }\n /**\n * @returns If the stylesheet is in the mirror, returns the id of the stylesheet. If not, return the new assigned id.\n */\n add(stylesheet, id) {\n if (this.has(stylesheet)) return this.getId(stylesheet);\n let newId;\n if (id === void 0) {\n newId = this.id++;\n } else newId = id;\n this.styleIDMap.set(stylesheet, newId);\n this.idStyleMap.set(newId, stylesheet);\n return newId;\n }\n getStyle(id) {\n return this.idStyleMap.get(id) || null;\n }\n reset() {\n this.styleIDMap = /* @__PURE__ */ new WeakMap();\n this.idStyleMap = /* @__PURE__ */ new Map();\n this.id = 1;\n }\n generateId() {\n return this.id++;\n }\n}\nfunction getShadowHost(n2) {\n var _a2;\n let shadowHost = null;\n if (\"getRootNode\" in n2 && ((_a2 = index.getRootNode(n2)) == null ? void 0 : _a2.nodeType) === Node.DOCUMENT_FRAGMENT_NODE && index.host(index.getRootNode(n2)))\n shadowHost = index.host(index.getRootNode(n2));\n return shadowHost;\n}\nfunction getRootShadowHost(n2) {\n let rootShadowHost = n2;\n let shadowHost;\n while (shadowHost = getShadowHost(rootShadowHost))\n rootShadowHost = shadowHost;\n return rootShadowHost;\n}\nfunction shadowHostInDom(n2) {\n const doc = n2.ownerDocument;\n if (!doc) return false;\n const shadowHost = getRootShadowHost(n2);\n return index.contains(doc, shadowHost);\n}\nfunction inDom(n2) {\n const doc = n2.ownerDocument;\n if (!doc) return false;\n return index.contains(doc, n2) || shadowHostInDom(n2);\n}\nvar EventType = /* @__PURE__ */ ((EventType2) => {\n EventType2[EventType2[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n EventType2[EventType2[\"Load\"] = 1] = \"Load\";\n EventType2[EventType2[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n EventType2[EventType2[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n EventType2[EventType2[\"Meta\"] = 4] = \"Meta\";\n EventType2[EventType2[\"Custom\"] = 5] = \"Custom\";\n EventType2[EventType2[\"Plugin\"] = 6] = \"Plugin\";\n return EventType2;\n})(EventType || {});\nvar IncrementalSource = /* @__PURE__ */ ((IncrementalSource2) => {\n IncrementalSource2[IncrementalSource2[\"Mutation\"] = 0] = \"Mutation\";\n IncrementalSource2[IncrementalSource2[\"MouseMove\"] = 1] = \"MouseMove\";\n IncrementalSource2[IncrementalSource2[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n IncrementalSource2[IncrementalSource2[\"Scroll\"] = 3] = \"Scroll\";\n IncrementalSource2[IncrementalSource2[\"ViewportResize\"] = 4] = \"ViewportResize\";\n IncrementalSource2[IncrementalSource2[\"Input\"] = 5] = \"Input\";\n IncrementalSource2[IncrementalSource2[\"TouchMove\"] = 6] = \"TouchMove\";\n IncrementalSource2[IncrementalSource2[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n IncrementalSource2[IncrementalSource2[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n IncrementalSource2[IncrementalSource2[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n IncrementalSource2[IncrementalSource2[\"Font\"] = 10] = \"Font\";\n IncrementalSource2[IncrementalSource2[\"Log\"] = 11] = \"Log\";\n IncrementalSource2[IncrementalSource2[\"Drag\"] = 12] = \"Drag\";\n IncrementalSource2[IncrementalSource2[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n IncrementalSource2[IncrementalSource2[\"Selection\"] = 14] = \"Selection\";\n IncrementalSource2[IncrementalSource2[\"AdoptedStyleSheet\"] = 15] = \"AdoptedStyleSheet\";\n IncrementalSource2[IncrementalSource2[\"CustomElement\"] = 16] = \"CustomElement\";\n return IncrementalSource2;\n})(IncrementalSource || {});\nvar MouseInteractions = /* @__PURE__ */ ((MouseInteractions2) => {\n MouseInteractions2[MouseInteractions2[\"MouseUp\"] = 0] = \"MouseUp\";\n MouseInteractions2[MouseInteractions2[\"MouseDown\"] = 1] = \"MouseDown\";\n MouseInteractions2[MouseInteractions2[\"Click\"] = 2] = \"Click\";\n MouseInteractions2[MouseInteractions2[\"ContextMenu\"] = 3] = \"ContextMenu\";\n MouseInteractions2[MouseInteractions2[\"DblClick\"] = 4] = \"DblClick\";\n MouseInteractions2[MouseInteractions2[\"Focus\"] = 5] = \"Focus\";\n MouseInteractions2[MouseInteractions2[\"Blur\"] = 6] = \"Blur\";\n MouseInteractions2[MouseInteractions2[\"TouchStart\"] = 7] = \"TouchStart\";\n MouseInteractions2[MouseInteractions2[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n MouseInteractions2[MouseInteractions2[\"TouchEnd\"] = 9] = \"TouchEnd\";\n MouseInteractions2[MouseInteractions2[\"TouchCancel\"] = 10] = \"TouchCancel\";\n return MouseInteractions2;\n})(MouseInteractions || {});\nvar PointerTypes = /* @__PURE__ */ ((PointerTypes2) => {\n PointerTypes2[PointerTypes2[\"Mouse\"] = 0] = \"Mouse\";\n PointerTypes2[PointerTypes2[\"Pen\"] = 1] = \"Pen\";\n PointerTypes2[PointerTypes2[\"Touch\"] = 2] = \"Touch\";\n return PointerTypes2;\n})(PointerTypes || {});\nvar CanvasContext = /* @__PURE__ */ ((CanvasContext2) => {\n CanvasContext2[CanvasContext2[\"2D\"] = 0] = \"2D\";\n CanvasContext2[CanvasContext2[\"WebGL\"] = 1] = \"WebGL\";\n CanvasContext2[CanvasContext2[\"WebGL2\"] = 2] = \"WebGL2\";\n return CanvasContext2;\n})(CanvasContext || {});\nvar MediaInteractions = /* @__PURE__ */ ((MediaInteractions2) => {\n MediaInteractions2[MediaInteractions2[\"Play\"] = 0] = \"Play\";\n MediaInteractions2[MediaInteractions2[\"Pause\"] = 1] = \"Pause\";\n MediaInteractions2[MediaInteractions2[\"Seeked\"] = 2] = \"Seeked\";\n MediaInteractions2[MediaInteractions2[\"VolumeChange\"] = 3] = \"VolumeChange\";\n MediaInteractions2[MediaInteractions2[\"RateChange\"] = 4] = \"RateChange\";\n return MediaInteractions2;\n})(MediaInteractions || {});\nvar NodeType = /* @__PURE__ */ ((NodeType2) => {\n NodeType2[NodeType2[\"Document\"] = 0] = \"Document\";\n NodeType2[NodeType2[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType2[NodeType2[\"Element\"] = 2] = \"Element\";\n NodeType2[NodeType2[\"Text\"] = 3] = \"Text\";\n NodeType2[NodeType2[\"CDATA\"] = 4] = \"CDATA\";\n NodeType2[NodeType2[\"Comment\"] = 5] = \"Comment\";\n return NodeType2;\n})(NodeType || {});\nfunction isNodeInLinkedList(n2) {\n return \"__ln\" in n2;\n}\nclass DoubleLinkedList {\n constructor() {\n __publicField(this, \"length\", 0);\n __publicField(this, \"head\", null);\n __publicField(this, \"tail\", null);\n }\n get(position) {\n if (position >= this.length) {\n throw new Error(\"Position outside of list range\");\n }\n let current = this.head;\n for (let index2 = 0; index2 < position; index2++) {\n current = (current == null ? void 0 : current.next) || null;\n }\n return current;\n }\n addNode(n2) {\n const node2 = {\n value: n2,\n previous: null,\n next: null\n };\n n2.__ln = node2;\n if (n2.previousSibling && isNodeInLinkedList(n2.previousSibling)) {\n const current = n2.previousSibling.__ln.next;\n node2.next = current;\n node2.previous = n2.previousSibling.__ln;\n n2.previousSibling.__ln.next = node2;\n if (current) {\n current.previous = node2;\n }\n } else if (n2.nextSibling && isNodeInLinkedList(n2.nextSibling) && n2.nextSibling.__ln.previous) {\n const current = n2.nextSibling.__ln.previous;\n node2.previous = current;\n node2.next = n2.nextSibling.__ln;\n n2.nextSibling.__ln.previous = node2;\n if (current) {\n current.next = node2;\n }\n } else {\n if (this.head) {\n this.head.previous = node2;\n }\n node2.next = this.head;\n this.head = node2;\n }\n if (node2.next === null) {\n this.tail = node2;\n }\n this.length++;\n }\n removeNode(n2) {\n const current = n2.__ln;\n if (!this.head) {\n return;\n }\n if (!current.previous) {\n this.head = current.next;\n if (this.head) {\n this.head.previous = null;\n } else {\n this.tail = null;\n }\n } else {\n current.previous.next = current.next;\n if (current.next) {\n current.next.previous = current.previous;\n } else {\n this.tail = current.previous;\n }\n }\n if (n2.__ln) {\n delete n2.__ln;\n }\n this.length--;\n }\n}\nconst moveKey = (id, parentId) => `${id}@${parentId}`;\nclass MutationBuffer {\n constructor() {\n __publicField(this, \"frozen\", false);\n __publicField(this, \"locked\", false);\n __publicField(this, \"texts\", []);\n __publicField(this, \"attributes\", []);\n __publicField(this, \"attributeMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"removes\", []);\n __publicField(this, \"mapRemoves\", []);\n __publicField(this, \"movedMap\", {});\n __publicField(this, \"addedSet\", /* @__PURE__ */ new Set());\n __publicField(this, \"movedSet\", /* @__PURE__ */ new Set());\n __publicField(this, \"droppedSet\", /* @__PURE__ */ new Set());\n __publicField(this, \"removesSubTreeCache\", /* @__PURE__ */ new Set());\n __publicField(this, \"mutationCb\");\n __publicField(this, \"blockClass\");\n __publicField(this, \"blockSelector\");\n __publicField(this, \"maskTextClass\");\n __publicField(this, \"maskTextSelector\");\n __publicField(this, \"inlineStylesheet\");\n __publicField(this, \"maskInputOptions\");\n __publicField(this, \"maskTextFn\");\n __publicField(this, \"maskInputFn\");\n __publicField(this, \"keepIframeSrcFn\");\n __publicField(this, \"recordCanvas\");\n __publicField(this, \"inlineImages\");\n __publicField(this, \"slimDOMOptions\");\n __publicField(this, \"dataURLOptions\");\n __publicField(this, \"doc\");\n __publicField(this, \"mirror\");\n __publicField(this, \"iframeManager\");\n __publicField(this, \"stylesheetManager\");\n __publicField(this, \"shadowDomManager\");\n __publicField(this, \"canvasManager\");\n __publicField(this, \"processedNodeManager\");\n __publicField(this, \"unattachedDoc\");\n __publicField(this, \"processMutations\", (mutations) => {\n mutations.forEach(this.processMutation);\n this.emit();\n });\n __publicField(this, \"emit\", () => {\n if (this.frozen || this.locked) {\n return;\n }\n const adds = [];\n const addedIds = /* @__PURE__ */ new Set();\n const addList = new DoubleLinkedList();\n const getNextId = (n2) => {\n let ns = n2;\n let nextId = IGNORED_NODE;\n while (nextId === IGNORED_NODE) {\n ns = ns && ns.nextSibling;\n nextId = ns && this.mirror.getId(ns);\n }\n return nextId;\n };\n const pushAdd = (n2) => {\n const parent = index.parentNode(n2);\n if (!parent || !inDom(n2)) {\n return;\n }\n let cssCaptured = false;\n if (n2.nodeType === Node.TEXT_NODE) {\n const parentTag = parent.tagName;\n if (parentTag === \"TEXTAREA\") {\n return;\n } else if (parentTag === \"STYLE\" && this.addedSet.has(parent)) {\n cssCaptured = true;\n }\n }\n const parentId = isShadowRoot(parent) ? this.mirror.getId(getShadowHost(n2)) : this.mirror.getId(parent);\n const nextId = getNextId(n2);\n if (parentId === -1 || nextId === -1) {\n return addList.addNode(n2);\n }\n const sn = serializeNodeWithId(n2, {\n doc: this.doc,\n mirror: this.mirror,\n blockClass: this.blockClass,\n blockSelector: this.blockSelector,\n maskTextClass: this.maskTextClass,\n maskTextSelector: this.maskTextSelector,\n skipChild: true,\n newlyAddedElement: true,\n inlineStylesheet: this.inlineStylesheet,\n maskInputOptions: this.maskInputOptions,\n maskTextFn: this.maskTextFn,\n maskInputFn: this.maskInputFn,\n slimDOMOptions: this.slimDOMOptions,\n dataURLOptions: this.dataURLOptions,\n recordCanvas: this.recordCanvas,\n inlineImages: this.inlineImages,\n onSerialize: (currentN) => {\n if (isSerializedIframe(currentN, this.mirror)) {\n this.iframeManager.addIframe(currentN);\n }\n if (isSerializedStylesheet(currentN, this.mirror)) {\n this.stylesheetManager.trackLinkElement(\n currentN\n );\n }\n if (hasShadowRoot(n2)) {\n this.shadowDomManager.addShadowRoot(index.shadowRoot(n2), this.doc);\n }\n },\n onIframeLoad: (iframe, childSn) => {\n this.iframeManager.attachIframe(iframe, childSn);\n this.shadowDomManager.observeAttachShadow(iframe);\n },\n onStylesheetLoad: (link, childSn) => {\n this.stylesheetManager.attachLinkElement(link, childSn);\n },\n cssCaptured\n });\n if (sn) {\n adds.push({\n parentId,\n nextId,\n node: sn\n });\n addedIds.add(sn.id);\n }\n };\n while (this.mapRemoves.length) {\n this.mirror.removeNodeFromMap(this.mapRemoves.shift());\n }\n for (const n2 of this.movedSet) {\n if (isParentRemoved(this.removesSubTreeCache, n2, this.mirror) && !this.movedSet.has(index.parentNode(n2))) {\n continue;\n }\n pushAdd(n2);\n }\n for (const n2 of this.addedSet) {\n if (!isAncestorInSet(this.droppedSet, n2) && !isParentRemoved(this.removesSubTreeCache, n2, this.mirror)) {\n pushAdd(n2);\n } else if (isAncestorInSet(this.movedSet, n2)) {\n pushAdd(n2);\n } else {\n this.droppedSet.add(n2);\n }\n }\n let candidate = null;\n while (addList.length) {\n let node2 = null;\n if (candidate) {\n const parentId = this.mirror.getId(index.parentNode(candidate.value));\n const nextId = getNextId(candidate.value);\n if (parentId !== -1 && nextId !== -1) {\n node2 = candidate;\n }\n }\n if (!node2) {\n let tailNode = addList.tail;\n while (tailNode) {\n const _node = tailNode;\n tailNode = tailNode.previous;\n if (_node) {\n const parentId = this.mirror.getId(index.parentNode(_node.value));\n const nextId = getNextId(_node.value);\n if (nextId === -1) continue;\n else if (parentId !== -1) {\n node2 = _node;\n break;\n } else {\n const unhandledNode = _node.value;\n const parent = index.parentNode(unhandledNode);\n if (parent && parent.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n const shadowHost = index.host(parent);\n const parentId2 = this.mirror.getId(shadowHost);\n if (parentId2 !== -1) {\n node2 = _node;\n break;\n }\n }\n }\n }\n }\n }\n if (!node2) {\n while (addList.head) {\n addList.removeNode(addList.head.value);\n }\n break;\n }\n candidate = node2.previous;\n addList.removeNode(node2.value);\n pushAdd(node2.value);\n }\n const payload = {\n texts: this.texts.map((text) => {\n const n2 = text.node;\n const parent = index.parentNode(n2);\n if (parent && parent.tagName === \"TEXTAREA\") {\n this.genTextAreaValueMutation(parent);\n }\n return {\n id: this.mirror.getId(n2),\n value: text.value\n };\n }).filter((text) => !addedIds.has(text.id)).filter((text) => this.mirror.has(text.id)),\n attributes: this.attributes.map((attribute) => {\n const { attributes } = attribute;\n if (typeof attributes.style === \"string\") {\n const diffAsStr = JSON.stringify(attribute.styleDiff);\n const unchangedAsStr = JSON.stringify(attribute._unchangedStyles);\n if (diffAsStr.length < attributes.style.length) {\n if ((diffAsStr + unchangedAsStr).split(\"var(\").length === attributes.style.split(\"var(\").length) {\n attributes.style = attribute.styleDiff;\n }\n }\n }\n return {\n id: this.mirror.getId(attribute.node),\n attributes\n };\n }).filter((attribute) => !addedIds.has(attribute.id)).filter((attribute) => this.mirror.has(attribute.id)),\n removes: this.removes,\n adds\n };\n if (!payload.texts.length && !payload.attributes.length && !payload.removes.length && !payload.adds.length) {\n return;\n }\n this.texts = [];\n this.attributes = [];\n this.attributeMap = /* @__PURE__ */ new WeakMap();\n this.removes = [];\n this.addedSet = /* @__PURE__ */ new Set();\n this.movedSet = /* @__PURE__ */ new Set();\n this.droppedSet = /* @__PURE__ */ new Set();\n this.removesSubTreeCache = /* @__PURE__ */ new Set();\n this.movedMap = {};\n this.mutationCb(payload);\n });\n __publicField(this, \"genTextAreaValueMutation\", (textarea) => {\n let item = this.attributeMap.get(textarea);\n if (!item) {\n item = {\n node: textarea,\n attributes: {},\n styleDiff: {},\n _unchangedStyles: {}\n };\n this.attributes.push(item);\n this.attributeMap.set(textarea, item);\n }\n item.attributes.value = Array.from(\n index.childNodes(textarea),\n (cn) => index.textContent(cn) || \"\"\n ).join(\"\");\n });\n __publicField(this, \"processMutation\", (m) => {\n if (isIgnored(m.target, this.mirror, this.slimDOMOptions)) {\n return;\n }\n switch (m.type) {\n case \"characterData\": {\n const value = index.textContent(m.target);\n if (!isBlocked(m.target, this.blockClass, this.blockSelector, false) && value !== m.oldValue) {\n this.texts.push({\n value: needMaskingText(\n m.target,\n this.maskTextClass,\n this.maskTextSelector,\n true\n // checkAncestors\n ) && value ? this.maskTextFn ? this.maskTextFn(value, closestElementOfNode(m.target)) : value.replace(/[\\S]/g, \"*\") : value,\n node: m.target\n });\n }\n break;\n }\n case \"attributes\": {\n const target = m.target;\n let attributeName = m.attributeName;\n let value = m.target.getAttribute(attributeName);\n if (attributeName === \"value\") {\n const type = getInputType(target);\n value = maskInputValue({\n element: target,\n maskInputOptions: this.maskInputOptions,\n tagName: target.tagName,\n type,\n value,\n maskInputFn: this.maskInputFn\n });\n }\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) || value === m.oldValue) {\n return;\n }\n let item = this.attributeMap.get(m.target);\n if (target.tagName === \"IFRAME\" && attributeName === \"src\" && !this.keepIframeSrcFn(value)) {\n if (!target.contentDocument) {\n attributeName = \"rr_src\";\n } else {\n return;\n }\n }\n if (!item) {\n item = {\n node: m.target,\n attributes: {},\n styleDiff: {},\n _unchangedStyles: {}\n };\n this.attributes.push(item);\n this.attributeMap.set(m.target, item);\n }\n if (attributeName === \"type\" && target.tagName === \"INPUT\" && (m.oldValue || \"\").toLowerCase() === \"password\") {\n target.setAttribute(\"data-rr-is-password\", \"true\");\n }\n if (!ignoreAttribute(target.tagName, attributeName)) {\n item.attributes[attributeName] = transformAttribute(\n this.doc,\n toLowerCase(target.tagName),\n toLowerCase(attributeName),\n value\n );\n if (attributeName === \"style\") {\n if (!this.unattachedDoc) {\n try {\n this.unattachedDoc = document.implementation.createHTMLDocument();\n } catch (e2) {\n this.unattachedDoc = this.doc;\n }\n }\n const old = this.unattachedDoc.createElement(\"span\");\n if (m.oldValue) {\n old.setAttribute(\"style\", m.oldValue);\n }\n for (const pname of Array.from(target.style)) {\n const newValue = target.style.getPropertyValue(pname);\n const newPriority = target.style.getPropertyPriority(pname);\n if (newValue !== old.style.getPropertyValue(pname) || newPriority !== old.style.getPropertyPriority(pname)) {\n if (newPriority === \"\") {\n item.styleDiff[pname] = newValue;\n } else {\n item.styleDiff[pname] = [newValue, newPriority];\n }\n } else {\n item._unchangedStyles[pname] = [newValue, newPriority];\n }\n }\n for (const pname of Array.from(old.style)) {\n if (target.style.getPropertyValue(pname) === \"\") {\n item.styleDiff[pname] = false;\n }\n }\n } else if (attributeName === \"open\" && target.tagName === \"DIALOG\") {\n if (target.matches(\"dialog:modal\")) {\n item.attributes[\"rr_open_mode\"] = \"modal\";\n } else {\n item.attributes[\"rr_open_mode\"] = \"non-modal\";\n }\n }\n }\n break;\n }\n case \"childList\": {\n if (isBlocked(m.target, this.blockClass, this.blockSelector, true))\n return;\n if (m.target.tagName === \"TEXTAREA\") {\n this.genTextAreaValueMutation(m.target);\n return;\n }\n m.addedNodes.forEach((n2) => this.genAdds(n2, m.target));\n m.removedNodes.forEach((n2) => {\n const nodeId = this.mirror.getId(n2);\n const parentId = isShadowRoot(m.target) ? this.mirror.getId(index.host(m.target)) : this.mirror.getId(m.target);\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) || isIgnored(n2, this.mirror, this.slimDOMOptions) || !isSerialized(n2, this.mirror)) {\n return;\n }\n if (this.addedSet.has(n2)) {\n deepDelete(this.addedSet, n2);\n this.droppedSet.add(n2);\n } else if (this.addedSet.has(m.target) && nodeId === -1) ;\n else if (isAncestorRemoved(m.target, this.mirror)) ;\n else if (this.movedSet.has(n2) && this.movedMap[moveKey(nodeId, parentId)]) {\n deepDelete(this.movedSet, n2);\n } else {\n this.removes.push({\n parentId,\n id: nodeId,\n isShadow: isShadowRoot(m.target) && isNativeShadowDom(m.target) ? true : void 0\n });\n processRemoves(n2, this.removesSubTreeCache);\n }\n this.mapRemoves.push(n2);\n });\n break;\n }\n }\n });\n __publicField(this, \"genAdds\", (n2, target) => {\n if (this.processedNodeManager.inOtherBuffer(n2, this)) return;\n if (this.addedSet.has(n2) || this.movedSet.has(n2)) return;\n if (this.mirror.hasNode(n2)) {\n if (isIgnored(n2, this.mirror, this.slimDOMOptions)) {\n return;\n }\n this.movedSet.add(n2);\n let targetId = null;\n if (target && this.mirror.hasNode(target)) {\n targetId = this.mirror.getId(target);\n }\n if (targetId && targetId !== -1) {\n this.movedMap[moveKey(this.mirror.getId(n2), targetId)] = true;\n }\n } else {\n this.addedSet.add(n2);\n this.droppedSet.delete(n2);\n }\n if (!isBlocked(n2, this.blockClass, this.blockSelector, false)) {\n index.childNodes(n2).forEach((childN) => this.genAdds(childN));\n if (hasShadowRoot(n2)) {\n index.childNodes(index.shadowRoot(n2)).forEach((childN) => {\n this.processedNodeManager.add(childN, this);\n this.genAdds(childN, n2);\n });\n }\n }\n });\n }\n init(options) {\n [\n \"mutationCb\",\n \"blockClass\",\n \"blockSelector\",\n \"maskTextClass\",\n \"maskTextSelector\",\n \"inlineStylesheet\",\n \"maskInputOptions\",\n \"maskTextFn\",\n \"maskInputFn\",\n \"keepIframeSrcFn\",\n \"recordCanvas\",\n \"inlineImages\",\n \"slimDOMOptions\",\n \"dataURLOptions\",\n \"doc\",\n \"mirror\",\n \"iframeManager\",\n \"stylesheetManager\",\n \"shadowDomManager\",\n \"canvasManager\",\n \"processedNodeManager\"\n ].forEach((key) => {\n this[key] = options[key];\n });\n }\n freeze() {\n this.frozen = true;\n this.canvasManager.freeze();\n }\n unfreeze() {\n this.frozen = false;\n this.canvasManager.unfreeze();\n this.emit();\n }\n isFrozen() {\n return this.frozen;\n }\n lock() {\n this.locked = true;\n this.canvasManager.lock();\n }\n unlock() {\n this.locked = false;\n this.canvasManager.unlock();\n this.emit();\n }\n reset() {\n this.shadowDomManager.reset();\n this.canvasManager.reset();\n }\n}\nfunction deepDelete(addsSet, n2) {\n addsSet.delete(n2);\n index.childNodes(n2).forEach((childN) => deepDelete(addsSet, childN));\n}\nfunction processRemoves(n2, cache) {\n const queue = [n2];\n while (queue.length) {\n const next = queue.pop();\n if (cache.has(next)) continue;\n cache.add(next);\n index.childNodes(next).forEach((n22) => queue.push(n22));\n }\n return;\n}\nfunction isParentRemoved(removes, n2, mirror2) {\n if (removes.size === 0) return false;\n return _isParentRemoved(removes, n2);\n}\nfunction _isParentRemoved(removes, n2, _mirror2) {\n const node2 = index.parentNode(n2);\n if (!node2) return false;\n return removes.has(node2);\n}\nfunction isAncestorInSet(set, n2) {\n if (set.size === 0) return false;\n return _isAncestorInSet(set, n2);\n}\nfunction _isAncestorInSet(set, n2) {\n const parent = index.parentNode(n2);\n if (!parent) {\n return false;\n }\n if (set.has(parent)) {\n return true;\n }\n return _isAncestorInSet(set, parent);\n}\nlet errorHandler;\nfunction registerErrorHandler(handler) {\n errorHandler = handler;\n}\nfunction unregisterErrorHandler() {\n errorHandler = void 0;\n}\nconst callbackWrapper = (cb) => {\n if (!errorHandler) {\n return cb;\n }\n const rrwebWrapped = (...rest) => {\n try {\n return cb(...rest);\n } catch (error) {\n if (errorHandler && errorHandler(error) === true) {\n return;\n }\n throw error;\n }\n };\n return rrwebWrapped;\n};\nconst mutationBuffers = [];\nfunction getEventTarget(event) {\n try {\n if (\"composedPath\" in event) {\n const path = event.composedPath();\n if (path.length) {\n return path[0];\n }\n } else if (\"path\" in event && event.path.length) {\n return event.path[0];\n }\n } catch {\n }\n return event && event.target;\n}\nfunction initMutationObserver(options, rootEl) {\n const mutationBuffer = new MutationBuffer();\n mutationBuffers.push(mutationBuffer);\n mutationBuffer.init(options);\n const observer = new (mutationObserverCtor())(\n callbackWrapper(mutationBuffer.processMutations.bind(mutationBuffer))\n );\n observer.observe(rootEl, {\n attributes: true,\n attributeOldValue: true,\n characterData: true,\n characterDataOldValue: true,\n childList: true,\n subtree: true\n });\n return observer;\n}\nfunction initMoveObserver({\n mousemoveCb,\n sampling,\n doc,\n mirror: mirror2\n}) {\n if (sampling.mousemove === false) {\n return () => {\n };\n }\n const threshold = typeof sampling.mousemove === \"number\" ? sampling.mousemove : 50;\n const callbackThreshold = typeof sampling.mousemoveCallback === \"number\" ? sampling.mousemoveCallback : 500;\n let positions = [];\n let timeBaseline;\n const wrappedCb = throttle(\n callbackWrapper(\n (source) => {\n const totalOffset = Date.now() - timeBaseline;\n mousemoveCb(\n positions.map((p) => {\n p.timeOffset -= totalOffset;\n return p;\n }),\n source\n );\n positions = [];\n timeBaseline = null;\n }\n ),\n callbackThreshold\n );\n const updatePosition = callbackWrapper(\n throttle(\n callbackWrapper((evt) => {\n const target = getEventTarget(evt);\n const { clientX, clientY } = legacy_isTouchEvent(evt) ? evt.changedTouches[0] : evt;\n if (!timeBaseline) {\n timeBaseline = nowTimestamp();\n }\n positions.push({\n x: clientX,\n y: clientY,\n id: mirror2.getId(target),\n timeOffset: nowTimestamp() - timeBaseline\n });\n wrappedCb(\n typeof DragEvent !== \"undefined\" && evt instanceof DragEvent ? IncrementalSource.Drag : evt instanceof MouseEvent ? IncrementalSource.MouseMove : IncrementalSource.TouchMove\n );\n }),\n threshold,\n {\n trailing: false\n }\n )\n );\n const handlers = [\n on(\"mousemove\", updatePosition, doc),\n on(\"touchmove\", updatePosition, doc),\n on(\"drag\", updatePosition, doc)\n ];\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initMouseInteractionObserver({\n mouseInteractionCb,\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n sampling\n}) {\n if (sampling.mouseInteraction === false) {\n return () => {\n };\n }\n const disableMap = sampling.mouseInteraction === true || sampling.mouseInteraction === void 0 ? {} : sampling.mouseInteraction;\n const handlers = [];\n let currentPointerType = null;\n const getHandler = (eventKey) => {\n return (event) => {\n const target = getEventTarget(event);\n if (isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n let pointerType = null;\n let thisEventKey = eventKey;\n if (\"pointerType\" in event) {\n switch (event.pointerType) {\n case \"mouse\":\n pointerType = PointerTypes.Mouse;\n break;\n case \"touch\":\n pointerType = PointerTypes.Touch;\n break;\n case \"pen\":\n pointerType = PointerTypes.Pen;\n break;\n }\n if (pointerType === PointerTypes.Touch) {\n if (MouseInteractions[eventKey] === MouseInteractions.MouseDown) {\n thisEventKey = \"TouchStart\";\n } else if (MouseInteractions[eventKey] === MouseInteractions.MouseUp) {\n thisEventKey = \"TouchEnd\";\n }\n } else if (pointerType === PointerTypes.Pen) ;\n } else if (legacy_isTouchEvent(event)) {\n pointerType = PointerTypes.Touch;\n }\n if (pointerType !== null) {\n currentPointerType = pointerType;\n if (thisEventKey.startsWith(\"Touch\") && pointerType === PointerTypes.Touch || thisEventKey.startsWith(\"Mouse\") && pointerType === PointerTypes.Mouse) {\n pointerType = null;\n }\n } else if (MouseInteractions[eventKey] === MouseInteractions.Click) {\n pointerType = currentPointerType;\n currentPointerType = null;\n }\n const e2 = legacy_isTouchEvent(event) ? event.changedTouches[0] : event;\n if (!e2) {\n return;\n }\n const id = mirror2.getId(target);\n const { clientX, clientY } = e2;\n callbackWrapper(mouseInteractionCb)({\n type: MouseInteractions[thisEventKey],\n id,\n x: clientX,\n y: clientY,\n ...pointerType !== null && { pointerType }\n });\n };\n };\n Object.keys(MouseInteractions).filter(\n (key) => Number.isNaN(Number(key)) && !key.endsWith(\"_Departed\") && disableMap[key] !== false\n ).forEach((eventKey) => {\n let eventName = toLowerCase(eventKey);\n const handler = getHandler(eventKey);\n if (window.PointerEvent) {\n switch (MouseInteractions[eventKey]) {\n case MouseInteractions.MouseDown:\n case MouseInteractions.MouseUp:\n eventName = eventName.replace(\n \"mouse\",\n \"pointer\"\n );\n break;\n case MouseInteractions.TouchStart:\n case MouseInteractions.TouchEnd:\n return;\n }\n }\n handlers.push(on(eventName, handler, doc));\n });\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initScrollObserver({\n scrollCb,\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n sampling\n}) {\n const updatePosition = callbackWrapper(\n throttle(\n callbackWrapper((evt) => {\n const target = getEventTarget(evt);\n if (!target || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n const id = mirror2.getId(target);\n if (target === doc && doc.defaultView) {\n const scrollLeftTop = getWindowScroll(doc.defaultView);\n scrollCb({\n id,\n x: scrollLeftTop.left,\n y: scrollLeftTop.top\n });\n } else {\n scrollCb({\n id,\n x: target.scrollLeft,\n y: target.scrollTop\n });\n }\n }),\n sampling.scroll || 100\n )\n );\n return on(\"scroll\", updatePosition, doc);\n}\nfunction initViewportResizeObserver({ viewportResizeCb }, { win }) {\n let lastH = -1;\n let lastW = -1;\n const updateDimension = callbackWrapper(\n throttle(\n callbackWrapper(() => {\n const height = getWindowHeight();\n const width = getWindowWidth();\n if (lastH !== height || lastW !== width) {\n viewportResizeCb({\n width: Number(width),\n height: Number(height)\n });\n lastH = height;\n lastW = width;\n }\n }),\n 200\n )\n );\n return on(\"resize\", updateDimension, win);\n}\nconst INPUT_TAGS = [\"INPUT\", \"TEXTAREA\", \"SELECT\"];\nconst lastInputValueMap = /* @__PURE__ */ new WeakMap();\nfunction initInputObserver({\n inputCb,\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n ignoreClass,\n ignoreSelector,\n maskInputOptions,\n maskInputFn,\n sampling,\n userTriggeredOnInput\n}) {\n function eventHandler(event) {\n let target = getEventTarget(event);\n const userTriggered = event.isTrusted;\n const tagName = target && target.tagName;\n if (target && tagName === \"OPTION\") {\n target = index.parentElement(target);\n }\n if (!target || !tagName || INPUT_TAGS.indexOf(tagName) < 0 || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n if (target.classList.contains(ignoreClass) || ignoreSelector && target.matches(ignoreSelector)) {\n return;\n }\n let text = target.value;\n let isChecked = false;\n const type = getInputType(target) || \"\";\n if (type === \"radio\" || type === \"checkbox\") {\n isChecked = target.checked;\n } else if (maskInputOptions[tagName.toLowerCase()] || maskInputOptions[type]) {\n text = maskInputValue({\n element: target,\n maskInputOptions,\n tagName,\n type,\n value: text,\n maskInputFn\n });\n }\n cbWithDedup(\n target,\n userTriggeredOnInput ? { text, isChecked, userTriggered } : { text, isChecked }\n );\n const name = target.name;\n if (type === \"radio\" && name && isChecked) {\n doc.querySelectorAll(`input[type=\"radio\"][name=\"${name}\"]`).forEach((el) => {\n if (el !== target) {\n const text2 = el.value;\n cbWithDedup(\n el,\n userTriggeredOnInput ? { text: text2, isChecked: !isChecked, userTriggered: false } : { text: text2, isChecked: !isChecked }\n );\n }\n });\n }\n }\n function cbWithDedup(target, v2) {\n const lastInputValue = lastInputValueMap.get(target);\n if (!lastInputValue || lastInputValue.text !== v2.text || lastInputValue.isChecked !== v2.isChecked) {\n lastInputValueMap.set(target, v2);\n const id = mirror2.getId(target);\n callbackWrapper(inputCb)({\n ...v2,\n id\n });\n }\n }\n const events = sampling.input === \"last\" ? [\"change\"] : [\"input\", \"change\"];\n const handlers = events.map(\n (eventName) => on(eventName, callbackWrapper(eventHandler), doc)\n );\n const currentWindow = doc.defaultView;\n if (!currentWindow) {\n return () => {\n handlers.forEach((h) => h());\n };\n }\n const propertyDescriptor = currentWindow.Object.getOwnPropertyDescriptor(\n currentWindow.HTMLInputElement.prototype,\n \"value\"\n );\n const hookProperties = [\n [currentWindow.HTMLInputElement.prototype, \"value\"],\n [currentWindow.HTMLInputElement.prototype, \"checked\"],\n [currentWindow.HTMLSelectElement.prototype, \"value\"],\n [currentWindow.HTMLTextAreaElement.prototype, \"value\"],\n // Some UI library use selectedIndex to set select value\n [currentWindow.HTMLSelectElement.prototype, \"selectedIndex\"],\n [currentWindow.HTMLOptionElement.prototype, \"selected\"]\n ];\n if (propertyDescriptor && propertyDescriptor.set) {\n handlers.push(\n ...hookProperties.map(\n (p) => hookSetter(\n p[0],\n p[1],\n {\n set() {\n callbackWrapper(eventHandler)({\n target: this,\n isTrusted: false\n // userTriggered to false as this could well be programmatic\n });\n }\n },\n false,\n currentWindow\n )\n )\n );\n }\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction getNestedCSSRulePositions(rule2) {\n const positions = [];\n function recurse(childRule, pos) {\n if (hasNestedCSSRule(\"CSSGroupingRule\") && childRule.parentRule instanceof CSSGroupingRule || hasNestedCSSRule(\"CSSMediaRule\") && childRule.parentRule instanceof CSSMediaRule || hasNestedCSSRule(\"CSSSupportsRule\") && childRule.parentRule instanceof CSSSupportsRule || hasNestedCSSRule(\"CSSConditionRule\") && childRule.parentRule instanceof CSSConditionRule) {\n const rules2 = Array.from(\n childRule.parentRule.cssRules\n );\n const index2 = rules2.indexOf(childRule);\n pos.unshift(index2);\n } else if (childRule.parentStyleSheet) {\n const rules2 = Array.from(childRule.parentStyleSheet.cssRules);\n const index2 = rules2.indexOf(childRule);\n pos.unshift(index2);\n }\n return pos;\n }\n return recurse(rule2, positions);\n}\nfunction getIdAndStyleId(sheet, mirror2, styleMirror) {\n let id, styleId;\n if (!sheet) return {};\n if (sheet.ownerNode) id = mirror2.getId(sheet.ownerNode);\n else styleId = styleMirror.getId(sheet);\n return {\n styleId,\n id\n };\n}\nfunction initStyleSheetObserver({ styleSheetRuleCb, mirror: mirror2, stylesheetManager }, { win }) {\n if (!win.CSSStyleSheet || !win.CSSStyleSheet.prototype) {\n return () => {\n };\n }\n const insertRule = win.CSSStyleSheet.prototype.insertRule;\n win.CSSStyleSheet.prototype.insertRule = new Proxy(insertRule, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [rule2, index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n adds: [{ rule: rule2, index: index2 }]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n win.CSSStyleSheet.prototype.addRule = function(selector, styleBlock, index2 = this.cssRules.length) {\n const rule2 = `${selector} { ${styleBlock} }`;\n return win.CSSStyleSheet.prototype.insertRule.apply(this, [rule2, index2]);\n };\n const deleteRule = win.CSSStyleSheet.prototype.deleteRule;\n win.CSSStyleSheet.prototype.deleteRule = new Proxy(deleteRule, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n removes: [{ index: index2 }]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n win.CSSStyleSheet.prototype.removeRule = function(index2) {\n return win.CSSStyleSheet.prototype.deleteRule.apply(this, [index2]);\n };\n let replace;\n if (win.CSSStyleSheet.prototype.replace) {\n replace = win.CSSStyleSheet.prototype.replace;\n win.CSSStyleSheet.prototype.replace = new Proxy(replace, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [text] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n replace: text\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n }\n let replaceSync;\n if (win.CSSStyleSheet.prototype.replaceSync) {\n replaceSync = win.CSSStyleSheet.prototype.replaceSync;\n win.CSSStyleSheet.prototype.replaceSync = new Proxy(replaceSync, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [text] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n replaceSync: text\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n }\n const supportedNestedCSSRuleTypes = {};\n if (canMonkeyPatchNestedCSSRule(\"CSSGroupingRule\")) {\n supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\n } else {\n if (canMonkeyPatchNestedCSSRule(\"CSSMediaRule\")) {\n supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\n }\n if (canMonkeyPatchNestedCSSRule(\"CSSConditionRule\")) {\n supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\n }\n if (canMonkeyPatchNestedCSSRule(\"CSSSupportsRule\")) {\n supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\n }\n }\n const unmodifiedFunctions = {};\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n unmodifiedFunctions[typeKey] = {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n insertRule: type.prototype.insertRule,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n deleteRule: type.prototype.deleteRule\n };\n type.prototype.insertRule = new Proxy(\n unmodifiedFunctions[typeKey].insertRule,\n {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [rule2, index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n adds: [\n {\n rule: rule2,\n index: [\n ...getNestedCSSRulePositions(thisArg),\n index2 || 0\n // defaults to 0\n ]\n }\n ]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n }\n );\n type.prototype.deleteRule = new Proxy(\n unmodifiedFunctions[typeKey].deleteRule,\n {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n removes: [\n { index: [...getNestedCSSRulePositions(thisArg), index2] }\n ]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n }\n );\n });\n return callbackWrapper(() => {\n win.CSSStyleSheet.prototype.insertRule = insertRule;\n win.CSSStyleSheet.prototype.deleteRule = deleteRule;\n replace && (win.CSSStyleSheet.prototype.replace = replace);\n replaceSync && (win.CSSStyleSheet.prototype.replaceSync = replaceSync);\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\n type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\n });\n });\n}\nfunction initAdoptedStyleSheetObserver({\n mirror: mirror2,\n stylesheetManager\n}, host2) {\n var _a2, _b, _c;\n let hostId = null;\n if (host2.nodeName === \"#document\") hostId = mirror2.getId(host2);\n else hostId = mirror2.getId(index.host(host2));\n const patchTarget = host2.nodeName === \"#document\" ? (_a2 = host2.defaultView) == null ? void 0 : _a2.Document : (_c = (_b = host2.ownerDocument) == null ? void 0 : _b.defaultView) == null ? void 0 : _c.ShadowRoot;\n const originalPropertyDescriptor = (patchTarget == null ? void 0 : patchTarget.prototype) ? Object.getOwnPropertyDescriptor(\n patchTarget == null ? void 0 : patchTarget.prototype,\n \"adoptedStyleSheets\"\n ) : void 0;\n if (hostId === null || hostId === -1 || !patchTarget || !originalPropertyDescriptor)\n return () => {\n };\n Object.defineProperty(host2, \"adoptedStyleSheets\", {\n configurable: originalPropertyDescriptor.configurable,\n enumerable: originalPropertyDescriptor.enumerable,\n get() {\n var _a3;\n return (_a3 = originalPropertyDescriptor.get) == null ? void 0 : _a3.call(this);\n },\n set(sheets) {\n var _a3;\n const result2 = (_a3 = originalPropertyDescriptor.set) == null ? void 0 : _a3.call(this, sheets);\n if (hostId !== null && hostId !== -1) {\n try {\n stylesheetManager.adoptStyleSheets(sheets, hostId);\n } catch (e2) {\n }\n }\n return result2;\n }\n });\n return callbackWrapper(() => {\n Object.defineProperty(host2, \"adoptedStyleSheets\", {\n configurable: originalPropertyDescriptor.configurable,\n enumerable: originalPropertyDescriptor.enumerable,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n get: originalPropertyDescriptor.get,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n set: originalPropertyDescriptor.set\n });\n });\n}\nfunction initStyleDeclarationObserver({\n styleDeclarationCb,\n mirror: mirror2,\n ignoreCSSAttributes,\n stylesheetManager\n}, { win }) {\n const setProperty = win.CSSStyleDeclaration.prototype.setProperty;\n win.CSSStyleDeclaration.prototype.setProperty = new Proxy(setProperty, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n var _a2;\n const [property, value, priority] = argumentsList;\n if (ignoreCSSAttributes.has(property)) {\n return setProperty.apply(thisArg, [property, value, priority]);\n }\n const { id, styleId } = getIdAndStyleId(\n (_a2 = thisArg.parentRule) == null ? void 0 : _a2.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleDeclarationCb({\n id,\n styleId,\n set: {\n property,\n value,\n priority\n },\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n index: getNestedCSSRulePositions(thisArg.parentRule)\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n const removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = new Proxy(removeProperty, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n var _a2;\n const [property] = argumentsList;\n if (ignoreCSSAttributes.has(property)) {\n return removeProperty.apply(thisArg, [property]);\n }\n const { id, styleId } = getIdAndStyleId(\n (_a2 = thisArg.parentRule) == null ? void 0 : _a2.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleDeclarationCb({\n id,\n styleId,\n remove: {\n property\n },\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n index: getNestedCSSRulePositions(thisArg.parentRule)\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n return callbackWrapper(() => {\n win.CSSStyleDeclaration.prototype.setProperty = setProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\n });\n}\nfunction initMediaInteractionObserver({\n mediaInteractionCb,\n blockClass,\n blockSelector,\n mirror: mirror2,\n sampling,\n doc\n}) {\n const handler = callbackWrapper(\n (type) => throttle(\n callbackWrapper((event) => {\n const target = getEventTarget(event);\n if (!target || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n const { currentTime, volume, muted, playbackRate, loop } = target;\n mediaInteractionCb({\n type,\n id: mirror2.getId(target),\n currentTime,\n volume,\n muted,\n playbackRate,\n loop\n });\n }),\n sampling.media || 500\n )\n );\n const handlers = [\n on(\"play\", handler(MediaInteractions.Play), doc),\n on(\"pause\", handler(MediaInteractions.Pause), doc),\n on(\"seeked\", handler(MediaInteractions.Seeked), doc),\n on(\"volumechange\", handler(MediaInteractions.VolumeChange), doc),\n on(\"ratechange\", handler(MediaInteractions.RateChange), doc)\n ];\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initFontObserver({ fontCb, doc }) {\n const win = doc.defaultView;\n if (!win) {\n return () => {\n };\n }\n const handlers = [];\n const fontMap = /* @__PURE__ */ new WeakMap();\n const originalFontFace = win.FontFace;\n win.FontFace = function FontFace2(family, source, descriptors) {\n const fontFace = new originalFontFace(family, source, descriptors);\n fontMap.set(fontFace, {\n family,\n buffer: typeof source !== \"string\",\n descriptors,\n fontSource: typeof source === \"string\" ? source : JSON.stringify(Array.from(new Uint8Array(source)))\n });\n return fontFace;\n };\n const restoreHandler = patch(\n doc.fonts,\n \"add\",\n function(original) {\n return function(fontFace) {\n setTimeout(\n callbackWrapper(() => {\n const p = fontMap.get(fontFace);\n if (p) {\n fontCb(p);\n fontMap.delete(fontFace);\n }\n }),\n 0\n );\n return original.apply(this, [fontFace]);\n };\n }\n );\n handlers.push(() => {\n win.FontFace = originalFontFace;\n });\n handlers.push(restoreHandler);\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initSelectionObserver(param) {\n const { doc, mirror: mirror2, blockClass, blockSelector, selectionCb } = param;\n let collapsed = true;\n const updateSelection = callbackWrapper(() => {\n const selection = doc.getSelection();\n if (!selection || collapsed && (selection == null ? void 0 : selection.isCollapsed)) return;\n collapsed = selection.isCollapsed || false;\n const ranges = [];\n const count = selection.rangeCount || 0;\n for (let i2 = 0; i2 < count; i2++) {\n const range = selection.getRangeAt(i2);\n const { startContainer, startOffset, endContainer, endOffset } = range;\n const blocked = isBlocked(startContainer, blockClass, blockSelector, true) || isBlocked(endContainer, blockClass, blockSelector, true);\n if (blocked) continue;\n ranges.push({\n start: mirror2.getId(startContainer),\n startOffset,\n end: mirror2.getId(endContainer),\n endOffset\n });\n }\n selectionCb({ ranges });\n });\n updateSelection();\n return on(\"selectionchange\", updateSelection);\n}\nfunction initCustomElementObserver({\n doc,\n customElementCb\n}) {\n const win = doc.defaultView;\n if (!win || !win.customElements) return () => {\n };\n const restoreHandler = patch(\n win.customElements,\n \"define\",\n function(original) {\n return function(name, constructor, options) {\n try {\n customElementCb({\n define: {\n name\n }\n });\n } catch (e2) {\n console.warn(`Custom element callback failed for ${name}`);\n }\n return original.apply(this, [name, constructor, options]);\n };\n }\n );\n return restoreHandler;\n}\nfunction mergeHooks(o2, hooks) {\n const {\n mutationCb,\n mousemoveCb,\n mouseInteractionCb,\n scrollCb,\n viewportResizeCb,\n inputCb,\n mediaInteractionCb,\n styleSheetRuleCb,\n styleDeclarationCb,\n canvasMutationCb,\n fontCb,\n selectionCb,\n customElementCb\n } = o2;\n o2.mutationCb = (...p) => {\n if (hooks.mutation) {\n hooks.mutation(...p);\n }\n mutationCb(...p);\n };\n o2.mousemoveCb = (...p) => {\n if (hooks.mousemove) {\n hooks.mousemove(...p);\n }\n mousemoveCb(...p);\n };\n o2.mouseInteractionCb = (...p) => {\n if (hooks.mouseInteraction) {\n hooks.mouseInteraction(...p);\n }\n mouseInteractionCb(...p);\n };\n o2.scrollCb = (...p) => {\n if (hooks.scroll) {\n hooks.scroll(...p);\n }\n scrollCb(...p);\n };\n o2.viewportResizeCb = (...p) => {\n if (hooks.viewportResize) {\n hooks.viewportResize(...p);\n }\n viewportResizeCb(...p);\n };\n o2.inputCb = (...p) => {\n if (hooks.input) {\n hooks.input(...p);\n }\n inputCb(...p);\n };\n o2.mediaInteractionCb = (...p) => {\n if (hooks.mediaInteaction) {\n hooks.mediaInteaction(...p);\n }\n mediaInteractionCb(...p);\n };\n o2.styleSheetRuleCb = (...p) => {\n if (hooks.styleSheetRule) {\n hooks.styleSheetRule(...p);\n }\n styleSheetRuleCb(...p);\n };\n o2.styleDeclarationCb = (...p) => {\n if (hooks.styleDeclaration) {\n hooks.styleDeclaration(...p);\n }\n styleDeclarationCb(...p);\n };\n o2.canvasMutationCb = (...p) => {\n if (hooks.canvasMutation) {\n hooks.canvasMutation(...p);\n }\n canvasMutationCb(...p);\n };\n o2.fontCb = (...p) => {\n if (hooks.font) {\n hooks.font(...p);\n }\n fontCb(...p);\n };\n o2.selectionCb = (...p) => {\n if (hooks.selection) {\n hooks.selection(...p);\n }\n selectionCb(...p);\n };\n o2.customElementCb = (...c2) => {\n if (hooks.customElement) {\n hooks.customElement(...c2);\n }\n customElementCb(...c2);\n };\n}\nfunction initObservers(o2, hooks = {}) {\n const currentWindow = o2.doc.defaultView;\n if (!currentWindow) {\n return () => {\n };\n }\n mergeHooks(o2, hooks);\n let mutationObserver;\n if (o2.recordDOM) {\n mutationObserver = initMutationObserver(o2, o2.doc);\n }\n const mousemoveHandler = initMoveObserver(o2);\n const mouseInteractionHandler = initMouseInteractionObserver(o2);\n const scrollHandler = initScrollObserver(o2);\n const viewportResizeHandler = initViewportResizeObserver(o2, {\n win: currentWindow\n });\n const inputHandler = initInputObserver(o2);\n const mediaInteractionHandler = initMediaInteractionObserver(o2);\n let styleSheetObserver = () => {\n };\n let adoptedStyleSheetObserver = () => {\n };\n let styleDeclarationObserver = () => {\n };\n let fontObserver = () => {\n };\n if (o2.recordDOM) {\n styleSheetObserver = initStyleSheetObserver(o2, { win: currentWindow });\n adoptedStyleSheetObserver = initAdoptedStyleSheetObserver(o2, o2.doc);\n styleDeclarationObserver = initStyleDeclarationObserver(o2, {\n win: currentWindow\n });\n if (o2.collectFonts) {\n fontObserver = initFontObserver(o2);\n }\n }\n const selectionObserver = initSelectionObserver(o2);\n const customElementObserver = initCustomElementObserver(o2);\n const pluginHandlers = [];\n for (const plugin3 of o2.plugins) {\n pluginHandlers.push(\n plugin3.observer(plugin3.callback, currentWindow, plugin3.options)\n );\n }\n return callbackWrapper(() => {\n mutationBuffers.forEach((b) => b.reset());\n mutationObserver == null ? void 0 : mutationObserver.disconnect();\n mousemoveHandler();\n mouseInteractionHandler();\n scrollHandler();\n viewportResizeHandler();\n inputHandler();\n mediaInteractionHandler();\n styleSheetObserver();\n adoptedStyleSheetObserver();\n styleDeclarationObserver();\n fontObserver();\n selectionObserver();\n customElementObserver();\n pluginHandlers.forEach((h) => h());\n });\n}\nfunction hasNestedCSSRule(prop) {\n return typeof window[prop] !== \"undefined\";\n}\nfunction canMonkeyPatchNestedCSSRule(prop) {\n return Boolean(\n typeof window[prop] !== \"undefined\" && // Note: Generally, this check _shouldn't_ be necessary\n // However, in some scenarios (e.g. jsdom) this can sometimes fail, so we check for it here\n window[prop].prototype && \"insertRule\" in window[prop].prototype && \"deleteRule\" in window[prop].prototype\n );\n}\nclass CrossOriginIframeMirror {\n constructor(generateIdFn) {\n __publicField(this, \"iframeIdToRemoteIdMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"iframeRemoteIdToIdMap\", /* @__PURE__ */ new WeakMap());\n this.generateIdFn = generateIdFn;\n }\n getId(iframe, remoteId, idToRemoteMap, remoteToIdMap) {\n const idToRemoteIdMap = idToRemoteMap || this.getIdToRemoteIdMap(iframe);\n const remoteIdToIdMap = remoteToIdMap || this.getRemoteIdToIdMap(iframe);\n let id = idToRemoteIdMap.get(remoteId);\n if (!id) {\n id = this.generateIdFn();\n idToRemoteIdMap.set(remoteId, id);\n remoteIdToIdMap.set(id, remoteId);\n }\n return id;\n }\n getIds(iframe, remoteId) {\n const idToRemoteIdMap = this.getIdToRemoteIdMap(iframe);\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n return remoteId.map(\n (id) => this.getId(iframe, id, idToRemoteIdMap, remoteIdToIdMap)\n );\n }\n getRemoteId(iframe, id, map) {\n const remoteIdToIdMap = map || this.getRemoteIdToIdMap(iframe);\n if (typeof id !== \"number\") return id;\n const remoteId = remoteIdToIdMap.get(id);\n if (!remoteId) return -1;\n return remoteId;\n }\n getRemoteIds(iframe, ids) {\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n return ids.map((id) => this.getRemoteId(iframe, id, remoteIdToIdMap));\n }\n reset(iframe) {\n if (!iframe) {\n this.iframeIdToRemoteIdMap = /* @__PURE__ */ new WeakMap();\n this.iframeRemoteIdToIdMap = /* @__PURE__ */ new WeakMap();\n return;\n }\n this.iframeIdToRemoteIdMap.delete(iframe);\n this.iframeRemoteIdToIdMap.delete(iframe);\n }\n getIdToRemoteIdMap(iframe) {\n let idToRemoteIdMap = this.iframeIdToRemoteIdMap.get(iframe);\n if (!idToRemoteIdMap) {\n idToRemoteIdMap = /* @__PURE__ */ new Map();\n this.iframeIdToRemoteIdMap.set(iframe, idToRemoteIdMap);\n }\n return idToRemoteIdMap;\n }\n getRemoteIdToIdMap(iframe) {\n let remoteIdToIdMap = this.iframeRemoteIdToIdMap.get(iframe);\n if (!remoteIdToIdMap) {\n remoteIdToIdMap = /* @__PURE__ */ new Map();\n this.iframeRemoteIdToIdMap.set(iframe, remoteIdToIdMap);\n }\n return remoteIdToIdMap;\n }\n}\nclass IframeManager {\n constructor(options) {\n __publicField(this, \"iframes\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"crossOriginIframeMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"crossOriginIframeMirror\", new CrossOriginIframeMirror(genId));\n __publicField(this, \"crossOriginIframeStyleMirror\");\n __publicField(this, \"crossOriginIframeRootIdMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"mirror\");\n __publicField(this, \"mutationCb\");\n __publicField(this, \"wrappedEmit\");\n __publicField(this, \"loadListener\");\n __publicField(this, \"stylesheetManager\");\n __publicField(this, \"recordCrossOriginIframes\");\n this.mutationCb = options.mutationCb;\n this.wrappedEmit = options.wrappedEmit;\n this.stylesheetManager = options.stylesheetManager;\n this.recordCrossOriginIframes = options.recordCrossOriginIframes;\n this.crossOriginIframeStyleMirror = new CrossOriginIframeMirror(\n this.stylesheetManager.styleMirror.generateId.bind(\n this.stylesheetManager.styleMirror\n )\n );\n this.mirror = options.mirror;\n if (this.recordCrossOriginIframes) {\n window.addEventListener(\"message\", this.handleMessage.bind(this));\n }\n }\n addIframe(iframeEl) {\n this.iframes.set(iframeEl, true);\n if (iframeEl.contentWindow)\n this.crossOriginIframeMap.set(iframeEl.contentWindow, iframeEl);\n }\n addLoadListener(cb) {\n this.loadListener = cb;\n }\n attachIframe(iframeEl, childSn) {\n var _a2, _b;\n this.mutationCb({\n adds: [\n {\n parentId: this.mirror.getId(iframeEl),\n nextId: null,\n node: childSn\n }\n ],\n removes: [],\n texts: [],\n attributes: [],\n isAttachIframe: true\n });\n if (this.recordCrossOriginIframes)\n (_a2 = iframeEl.contentWindow) == null ? void 0 : _a2.addEventListener(\n \"message\",\n this.handleMessage.bind(this)\n );\n (_b = this.loadListener) == null ? void 0 : _b.call(this, iframeEl);\n if (iframeEl.contentDocument && iframeEl.contentDocument.adoptedStyleSheets && iframeEl.contentDocument.adoptedStyleSheets.length > 0)\n this.stylesheetManager.adoptStyleSheets(\n iframeEl.contentDocument.adoptedStyleSheets,\n this.mirror.getId(iframeEl.contentDocument)\n );\n }\n handleMessage(message) {\n const crossOriginMessageEvent = message;\n if (crossOriginMessageEvent.data.type !== \"rrweb\" || // To filter out the rrweb messages which are forwarded by some sites.\n crossOriginMessageEvent.origin !== crossOriginMessageEvent.data.origin)\n return;\n const iframeSourceWindow = message.source;\n if (!iframeSourceWindow) return;\n const iframeEl = this.crossOriginIframeMap.get(message.source);\n if (!iframeEl) return;\n const transformedEvent = this.transformCrossOriginEvent(\n iframeEl,\n crossOriginMessageEvent.data.event\n );\n if (transformedEvent)\n this.wrappedEmit(\n transformedEvent,\n crossOriginMessageEvent.data.isCheckout\n );\n }\n transformCrossOriginEvent(iframeEl, e2) {\n var _a2;\n switch (e2.type) {\n case EventType.FullSnapshot: {\n this.crossOriginIframeMirror.reset(iframeEl);\n this.crossOriginIframeStyleMirror.reset(iframeEl);\n this.replaceIdOnNode(e2.data.node, iframeEl);\n const rootId = e2.data.node.id;\n this.crossOriginIframeRootIdMap.set(iframeEl, rootId);\n this.patchRootIdOnNode(e2.data.node, rootId);\n return {\n timestamp: e2.timestamp,\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Mutation,\n adds: [\n {\n parentId: this.mirror.getId(iframeEl),\n nextId: null,\n node: e2.data.node\n }\n ],\n removes: [],\n texts: [],\n attributes: [],\n isAttachIframe: true\n }\n };\n }\n case EventType.Meta:\n case EventType.Load:\n case EventType.DomContentLoaded: {\n return false;\n }\n case EventType.Plugin: {\n return e2;\n }\n case EventType.Custom: {\n this.replaceIds(\n e2.data.payload,\n iframeEl,\n [\"id\", \"parentId\", \"previousId\", \"nextId\"]\n );\n return e2;\n }\n case EventType.IncrementalSnapshot: {\n switch (e2.data.source) {\n case IncrementalSource.Mutation: {\n e2.data.adds.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\n \"parentId\",\n \"nextId\",\n \"previousId\"\n ]);\n this.replaceIdOnNode(n2.node, iframeEl);\n const rootId = this.crossOriginIframeRootIdMap.get(iframeEl);\n rootId && this.patchRootIdOnNode(n2.node, rootId);\n });\n e2.data.removes.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\"parentId\", \"id\"]);\n });\n e2.data.attributes.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\"id\"]);\n });\n e2.data.texts.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\"id\"]);\n });\n return e2;\n }\n case IncrementalSource.Drag:\n case IncrementalSource.TouchMove:\n case IncrementalSource.MouseMove: {\n e2.data.positions.forEach((p) => {\n this.replaceIds(p, iframeEl, [\"id\"]);\n });\n return e2;\n }\n case IncrementalSource.ViewportResize: {\n return false;\n }\n case IncrementalSource.MediaInteraction:\n case IncrementalSource.MouseInteraction:\n case IncrementalSource.Scroll:\n case IncrementalSource.CanvasMutation:\n case IncrementalSource.Input: {\n this.replaceIds(e2.data, iframeEl, [\"id\"]);\n return e2;\n }\n case IncrementalSource.StyleSheetRule:\n case IncrementalSource.StyleDeclaration: {\n this.replaceIds(e2.data, iframeEl, [\"id\"]);\n this.replaceStyleIds(e2.data, iframeEl, [\"styleId\"]);\n return e2;\n }\n case IncrementalSource.Font: {\n return e2;\n }\n case IncrementalSource.Selection: {\n e2.data.ranges.forEach((range) => {\n this.replaceIds(range, iframeEl, [\"start\", \"end\"]);\n });\n return e2;\n }\n case IncrementalSource.AdoptedStyleSheet: {\n this.replaceIds(e2.data, iframeEl, [\"id\"]);\n this.replaceStyleIds(e2.data, iframeEl, [\"styleIds\"]);\n (_a2 = e2.data.styles) == null ? void 0 : _a2.forEach((style) => {\n this.replaceStyleIds(style, iframeEl, [\"styleId\"]);\n });\n return e2;\n }\n }\n }\n }\n return false;\n }\n replace(iframeMirror, obj, iframeEl, keys) {\n for (const key of keys) {\n if (!Array.isArray(obj[key]) && typeof obj[key] !== \"number\") continue;\n if (Array.isArray(obj[key])) {\n obj[key] = iframeMirror.getIds(\n iframeEl,\n obj[key]\n );\n } else {\n obj[key] = iframeMirror.getId(iframeEl, obj[key]);\n }\n }\n return obj;\n }\n replaceIds(obj, iframeEl, keys) {\n return this.replace(this.crossOriginIframeMirror, obj, iframeEl, keys);\n }\n replaceStyleIds(obj, iframeEl, keys) {\n return this.replace(this.crossOriginIframeStyleMirror, obj, iframeEl, keys);\n }\n replaceIdOnNode(node2, iframeEl) {\n this.replaceIds(node2, iframeEl, [\"id\", \"rootId\"]);\n if (\"childNodes\" in node2) {\n node2.childNodes.forEach((child) => {\n this.replaceIdOnNode(child, iframeEl);\n });\n }\n }\n patchRootIdOnNode(node2, rootId) {\n if (node2.type !== NodeType.Document && !node2.rootId) node2.rootId = rootId;\n if (\"childNodes\" in node2) {\n node2.childNodes.forEach((child) => {\n this.patchRootIdOnNode(child, rootId);\n });\n }\n }\n}\nclass ShadowDomManager {\n constructor(options) {\n __publicField(this, \"shadowDoms\", /* @__PURE__ */ new WeakSet());\n __publicField(this, \"mutationCb\");\n __publicField(this, \"scrollCb\");\n __publicField(this, \"bypassOptions\");\n __publicField(this, \"mirror\");\n __publicField(this, \"restoreHandlers\", []);\n this.mutationCb = options.mutationCb;\n this.scrollCb = options.scrollCb;\n this.bypassOptions = options.bypassOptions;\n this.mirror = options.mirror;\n this.init();\n }\n init() {\n this.reset();\n this.patchAttachShadow(Element, document);\n }\n addShadowRoot(shadowRoot2, doc) {\n if (!isNativeShadowDom(shadowRoot2)) return;\n if (this.shadowDoms.has(shadowRoot2)) return;\n this.shadowDoms.add(shadowRoot2);\n const observer = initMutationObserver(\n {\n ...this.bypassOptions,\n doc,\n mutationCb: this.mutationCb,\n mirror: this.mirror,\n shadowDomManager: this\n },\n shadowRoot2\n );\n this.restoreHandlers.push(() => observer.disconnect());\n this.restoreHandlers.push(\n initScrollObserver({\n ...this.bypassOptions,\n scrollCb: this.scrollCb,\n // https://gist.github.com/praveenpuglia/0832da687ed5a5d7a0907046c9ef1813\n // scroll is not allowed to pass the boundary, so we need to listen the shadow document\n doc: shadowRoot2,\n mirror: this.mirror\n })\n );\n setTimeout(() => {\n if (shadowRoot2.adoptedStyleSheets && shadowRoot2.adoptedStyleSheets.length > 0)\n this.bypassOptions.stylesheetManager.adoptStyleSheets(\n shadowRoot2.adoptedStyleSheets,\n this.mirror.getId(index.host(shadowRoot2))\n );\n this.restoreHandlers.push(\n initAdoptedStyleSheetObserver(\n {\n mirror: this.mirror,\n stylesheetManager: this.bypassOptions.stylesheetManager\n },\n shadowRoot2\n )\n );\n }, 0);\n }\n /**\n * Monkey patch 'attachShadow' of an IFrameElement to observe newly added shadow doms.\n */\n observeAttachShadow(iframeElement) {\n if (!iframeElement.contentWindow || !iframeElement.contentDocument) return;\n this.patchAttachShadow(\n iframeElement.contentWindow.Element,\n iframeElement.contentDocument\n );\n }\n /**\n * Patch 'attachShadow' to observe newly added shadow doms.\n */\n patchAttachShadow(element, doc) {\n const manager = this;\n this.restoreHandlers.push(\n patch(\n element.prototype,\n \"attachShadow\",\n function(original) {\n return function(option) {\n const sRoot = original.call(this, option);\n const shadowRootEl = index.shadowRoot(this);\n if (shadowRootEl && inDom(this))\n manager.addShadowRoot(shadowRootEl, doc);\n return sRoot;\n };\n }\n )\n );\n }\n reset() {\n this.restoreHandlers.forEach((handler) => {\n try {\n handler();\n } catch (e2) {\n }\n });\n this.restoreHandlers = [];\n this.shadowDoms = /* @__PURE__ */ new WeakSet();\n }\n}\nvar chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nvar lookup = typeof Uint8Array === \"undefined\" ? [] : new Uint8Array(256);\nfor (var i$1 = 0; i$1 < chars.length; i$1++) {\n lookup[chars.charCodeAt(i$1)] = i$1;\n}\nvar encode = function(arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i2, len = bytes.length, base64 = \"\";\n for (i2 = 0; i2 < len; i2 += 3) {\n base64 += chars[bytes[i2] >> 2];\n base64 += chars[(bytes[i2] & 3) << 4 | bytes[i2 + 1] >> 4];\n base64 += chars[(bytes[i2 + 1] & 15) << 2 | bytes[i2 + 2] >> 6];\n base64 += chars[bytes[i2 + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + \"=\";\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + \"==\";\n }\n return base64;\n};\nconst canvasVarMap = /* @__PURE__ */ new Map();\nfunction variableListFor$1(ctx, ctor) {\n let contextMap = canvasVarMap.get(ctx);\n if (!contextMap) {\n contextMap = /* @__PURE__ */ new Map();\n canvasVarMap.set(ctx, contextMap);\n }\n if (!contextMap.has(ctor)) {\n contextMap.set(ctor, []);\n }\n return contextMap.get(ctor);\n}\nconst saveWebGLVar = (value, win, ctx) => {\n if (!value || !(isInstanceOfWebGLObject(value, win) || typeof value === \"object\"))\n return;\n const name = value.constructor.name;\n const list2 = variableListFor$1(ctx, name);\n let index2 = list2.indexOf(value);\n if (index2 === -1) {\n index2 = list2.length;\n list2.push(value);\n }\n return index2;\n};\nfunction serializeArg(value, win, ctx) {\n if (value instanceof Array) {\n return value.map((arg) => serializeArg(arg, win, ctx));\n } else if (value === null) {\n return value;\n } else if (value instanceof Float32Array || value instanceof Float64Array || value instanceof Int32Array || value instanceof Uint32Array || value instanceof Uint8Array || value instanceof Uint16Array || value instanceof Int16Array || value instanceof Int8Array || value instanceof Uint8ClampedArray) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [Object.values(value)]\n };\n } else if (\n // SharedArrayBuffer disabled on most browsers due to spectre.\n // More info: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/SharedArrayBuffer\n // value instanceof SharedArrayBuffer ||\n value instanceof ArrayBuffer\n ) {\n const name = value.constructor.name;\n const base64 = encode(value);\n return {\n rr_type: name,\n base64\n };\n } else if (value instanceof DataView) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [\n serializeArg(value.buffer, win, ctx),\n value.byteOffset,\n value.byteLength\n ]\n };\n } else if (value instanceof HTMLImageElement) {\n const name = value.constructor.name;\n const { src } = value;\n return {\n rr_type: name,\n src\n };\n } else if (value instanceof HTMLCanvasElement) {\n const name = \"HTMLImageElement\";\n const src = value.toDataURL();\n return {\n rr_type: name,\n src\n };\n } else if (value instanceof ImageData) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [serializeArg(value.data, win, ctx), value.width, value.height]\n };\n } else if (isInstanceOfWebGLObject(value, win) || typeof value === \"object\") {\n const name = value.constructor.name;\n const index2 = saveWebGLVar(value, win, ctx);\n return {\n rr_type: name,\n index: index2\n };\n }\n return value;\n}\nconst serializeArgs = (args, win, ctx) => {\n return args.map((arg) => serializeArg(arg, win, ctx));\n};\nconst isInstanceOfWebGLObject = (value, win) => {\n const webGLConstructorNames = [\n \"WebGLActiveInfo\",\n \"WebGLBuffer\",\n \"WebGLFramebuffer\",\n \"WebGLProgram\",\n \"WebGLRenderbuffer\",\n \"WebGLShader\",\n \"WebGLShaderPrecisionFormat\",\n \"WebGLTexture\",\n \"WebGLUniformLocation\",\n \"WebGLVertexArrayObject\",\n // In old Chrome versions, value won't be an instanceof WebGLVertexArrayObject.\n \"WebGLVertexArrayObjectOES\"\n ];\n const supportedWebGLConstructorNames = webGLConstructorNames.filter(\n (name) => typeof win[name] === \"function\"\n );\n return Boolean(\n supportedWebGLConstructorNames.find(\n (name) => value instanceof win[name]\n )\n );\n};\nfunction initCanvas2DMutationObserver(cb, win, blockClass, blockSelector) {\n const handlers = [];\n const props2D = Object.getOwnPropertyNames(\n win.CanvasRenderingContext2D.prototype\n );\n for (const prop of props2D) {\n try {\n if (typeof win.CanvasRenderingContext2D.prototype[prop] !== \"function\") {\n continue;\n }\n const restoreHandler = patch(\n win.CanvasRenderingContext2D.prototype,\n prop,\n function(original) {\n return function(...args) {\n if (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\n setTimeout(() => {\n const recordArgs = serializeArgs(args, win, this);\n cb(this.canvas, {\n type: CanvasContext[\"2D\"],\n property: prop,\n args: recordArgs\n });\n }, 0);\n }\n return original.apply(this, args);\n };\n }\n );\n handlers.push(restoreHandler);\n } catch {\n const hookHandler = hookSetter(\n win.CanvasRenderingContext2D.prototype,\n prop,\n {\n set(v2) {\n cb(this.canvas, {\n type: CanvasContext[\"2D\"],\n property: prop,\n args: [v2],\n setter: true\n });\n }\n }\n );\n handlers.push(hookHandler);\n }\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\nfunction getNormalizedContextName(contextType) {\n return contextType === \"experimental-webgl\" ? \"webgl\" : contextType;\n}\nfunction initCanvasContextObserver(win, blockClass, blockSelector, setPreserveDrawingBufferToTrue) {\n const handlers = [];\n try {\n const restoreHandler = patch(\n win.HTMLCanvasElement.prototype,\n \"getContext\",\n function(original) {\n return function(contextType, ...args) {\n if (!isBlocked(this, blockClass, blockSelector, true)) {\n const ctxName = getNormalizedContextName(contextType);\n if (!(\"__context\" in this)) this.__context = ctxName;\n if (setPreserveDrawingBufferToTrue && [\"webgl\", \"webgl2\"].includes(ctxName)) {\n if (args[0] && typeof args[0] === \"object\") {\n const contextAttributes = args[0];\n if (!contextAttributes.preserveDrawingBuffer) {\n contextAttributes.preserveDrawingBuffer = true;\n }\n } else {\n args.splice(0, 1, {\n preserveDrawingBuffer: true\n });\n }\n }\n }\n return original.apply(this, [contextType, ...args]);\n };\n }\n );\n handlers.push(restoreHandler);\n } catch {\n console.error(\"failed to patch HTMLCanvasElement.prototype.getContext\");\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\nfunction patchGLPrototype(prototype, type, cb, blockClass, blockSelector, win) {\n const handlers = [];\n const props = Object.getOwnPropertyNames(prototype);\n for (const prop of props) {\n if (\n //prop.startsWith('get') || // e.g. getProgramParameter, but too risky\n [\n \"isContextLost\",\n \"canvas\",\n \"drawingBufferWidth\",\n \"drawingBufferHeight\"\n ].includes(prop)\n ) {\n continue;\n }\n try {\n if (typeof prototype[prop] !== \"function\") {\n continue;\n }\n const restoreHandler = patch(\n prototype,\n prop,\n function(original) {\n return function(...args) {\n const result2 = original.apply(this, args);\n saveWebGLVar(result2, win, this);\n if (\"tagName\" in this.canvas && !isBlocked(this.canvas, blockClass, blockSelector, true)) {\n const recordArgs = serializeArgs(args, win, this);\n const mutation = {\n type,\n property: prop,\n args: recordArgs\n };\n cb(this.canvas, mutation);\n }\n return result2;\n };\n }\n );\n handlers.push(restoreHandler);\n } catch {\n const hookHandler = hookSetter(prototype, prop, {\n set(v2) {\n cb(this.canvas, {\n type,\n property: prop,\n args: [v2],\n setter: true\n });\n }\n });\n handlers.push(hookHandler);\n }\n }\n return handlers;\n}\nfunction initCanvasWebGLMutationObserver(cb, win, blockClass, blockSelector) {\n const handlers = [];\n handlers.push(\n ...patchGLPrototype(\n win.WebGLRenderingContext.prototype,\n CanvasContext.WebGL,\n cb,\n blockClass,\n blockSelector,\n win\n )\n );\n if (typeof win.WebGL2RenderingContext !== \"undefined\") {\n handlers.push(\n ...patchGLPrototype(\n win.WebGL2RenderingContext.prototype,\n CanvasContext.WebGL2,\n cb,\n blockClass,\n blockSelector,\n win\n )\n );\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\nconst encodedJs = \"KGZ1bmN0aW9uKCkgewogICJ1c2Ugc3RyaWN0IjsKICB2YXIgY2hhcnMgPSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7CiAgdmFyIGxvb2t1cCA9IHR5cGVvZiBVaW50OEFycmF5ID09PSAidW5kZWZpbmVkIiA/IFtdIDogbmV3IFVpbnQ4QXJyYXkoMjU2KTsKICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYXJzLmxlbmd0aDsgaSsrKSB7CiAgICBsb29rdXBbY2hhcnMuY2hhckNvZGVBdChpKV0gPSBpOwogIH0KICB2YXIgZW5jb2RlID0gZnVuY3Rpb24oYXJyYXlidWZmZXIpIHsKICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGFycmF5YnVmZmVyKSwgaTIsIGxlbiA9IGJ5dGVzLmxlbmd0aCwgYmFzZTY0ID0gIiI7CiAgICBmb3IgKGkyID0gMDsgaTIgPCBsZW47IGkyICs9IDMpIHsKICAgICAgYmFzZTY0ICs9IGNoYXJzW2J5dGVzW2kyXSA+PiAyXTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMl0gJiAzKSA8PCA0IHwgYnl0ZXNbaTIgKyAxXSA+PiA0XTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMiArIDFdICYgMTUpIDw8IDIgfCBieXRlc1tpMiArIDJdID4+IDZdOwogICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaTIgKyAyXSAmIDYzXTsKICAgIH0KICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgIj0iOwogICAgfSBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgIj09IjsKICAgIH0KICAgIHJldHVybiBiYXNlNjQ7CiAgfTsKICBjb25zdCBsYXN0QmxvYk1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7CiAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTsKICBhc3luYyBmdW5jdGlvbiBnZXRUcmFuc3BhcmVudEJsb2JGb3Iod2lkdGgsIGhlaWdodCwgZGF0YVVSTE9wdGlvbnMpIHsKICAgIGNvbnN0IGlkID0gYCR7d2lkdGh9LSR7aGVpZ2h0fWA7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBpZiAodHJhbnNwYXJlbnRCbG9iTWFwLmhhcyhpZCkpIHJldHVybiB0cmFuc3BhcmVudEJsb2JNYXAuZ2V0KGlkKTsKICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsKICAgICAgb2Zmc2NyZWVuLmdldENvbnRleHQoIjJkIik7CiAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCBvZmZzY3JlZW4uY29udmVydFRvQmxvYihkYXRhVVJMT3B0aW9ucyk7CiAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gYXdhaXQgYmxvYi5hcnJheUJ1ZmZlcigpOwogICAgICBjb25zdCBiYXNlNjQgPSBlbmNvZGUoYXJyYXlCdWZmZXIpOwogICAgICB0cmFuc3BhcmVudEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICByZXR1cm4gYmFzZTY0OwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuICIiOwogICAgfQogIH0KICBjb25zdCB3b3JrZXIgPSBzZWxmOwogIHdvcmtlci5vbm1lc3NhZ2UgPSBhc3luYyBmdW5jdGlvbihlKSB7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBjb25zdCB7IGlkLCBiaXRtYXAsIHdpZHRoLCBoZWlnaHQsIGRhdGFVUkxPcHRpb25zIH0gPSBlLmRhdGE7CiAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKAogICAgICAgIHdpZHRoLAogICAgICAgIGhlaWdodCwKICAgICAgICBkYXRhVVJMT3B0aW9ucwogICAgICApOwogICAgICBjb25zdCBvZmZzY3JlZW4gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpOwogICAgICBjb25zdCBjdHggPSBvZmZzY3JlZW4uZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgY3R4LmRyYXdJbWFnZShiaXRtYXAsIDAsIDApOwogICAgICBiaXRtYXAuY2xvc2UoKTsKICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IG9mZnNjcmVlbi5jb252ZXJ0VG9CbG9iKGRhdGFVUkxPcHRpb25zKTsKICAgICAgY29uc3QgdHlwZSA9IGJsb2IudHlwZTsKICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBhd2FpdCBibG9iLmFycmF5QnVmZmVyKCk7CiAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7CiAgICAgIGlmICghbGFzdEJsb2JNYXAuaGFzKGlkKSAmJiBhd2FpdCB0cmFuc3BhcmVudEJhc2U2NCA9PT0gYmFzZTY0KSB7CiAgICAgICAgbGFzdEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICAgIHJldHVybiB3b3JrZXIucG9zdE1lc3NhZ2UoeyBpZCB9KTsKICAgICAgfQogICAgICBpZiAobGFzdEJsb2JNYXAuZ2V0KGlkKSA9PT0gYmFzZTY0KSByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQgfSk7CiAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7CiAgICAgICAgaWQsCiAgICAgICAgdHlwZSwKICAgICAgICBiYXNlNjQsCiAgICAgICAgd2lkdGgsCiAgICAgICAgaGVpZ2h0CiAgICAgIH0pOwogICAgICBsYXN0QmxvYk1hcC5zZXQoaWQsIGJhc2U2NCk7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IGUuZGF0YS5pZCB9KTsKICAgIH0KICB9Owp9KSgpOwovLyMgc291cmNlTWFwcGluZ1VSTD1pbWFnZS1iaXRtYXAtZGF0YS11cmwtd29ya2VyLUlKcEM3Z19iLmpzLm1hcAo=\";\nconst decodeBase64 = (base64) => Uint8Array.from(atob(base64), (c2) => c2.charCodeAt(0));\nconst blob = typeof window !== \"undefined\" && window.Blob && new Blob([decodeBase64(encodedJs)], { type: \"text/javascript;charset=utf-8\" });\nfunction WorkerWrapper(options) {\n let objURL;\n try {\n objURL = blob && (window.URL || window.webkitURL).createObjectURL(blob);\n if (!objURL) throw \"\";\n const worker = new Worker(objURL, {\n name: options == null ? void 0 : options.name\n });\n worker.addEventListener(\"error\", () => {\n (window.URL || window.webkitURL).revokeObjectURL(objURL);\n });\n return worker;\n } catch (e2) {\n return new Worker(\n \"data:text/javascript;base64,\" + encodedJs,\n {\n name: options == null ? void 0 : options.name\n }\n );\n } finally {\n objURL && (window.URL || window.webkitURL).revokeObjectURL(objURL);\n }\n}\nclass CanvasManager {\n constructor(options) {\n __publicField(this, \"pendingCanvasMutations\", /* @__PURE__ */ new Map());\n __publicField(this, \"rafStamps\", { latestId: 0, invokeId: null });\n __publicField(this, \"mirror\");\n __publicField(this, \"mutationCb\");\n __publicField(this, \"resetObservers\");\n __publicField(this, \"frozen\", false);\n __publicField(this, \"locked\", false);\n __publicField(this, \"processMutation\", (target, mutation) => {\n const newFrame = this.rafStamps.invokeId && this.rafStamps.latestId !== this.rafStamps.invokeId;\n if (newFrame || !this.rafStamps.invokeId)\n this.rafStamps.invokeId = this.rafStamps.latestId;\n if (!this.pendingCanvasMutations.has(target)) {\n this.pendingCanvasMutations.set(target, []);\n }\n this.pendingCanvasMutations.get(target).push(mutation);\n });\n const {\n sampling = \"all\",\n win,\n blockClass,\n blockSelector,\n recordCanvas,\n dataURLOptions\n } = options;\n this.mutationCb = options.mutationCb;\n this.mirror = options.mirror;\n if (recordCanvas && sampling === \"all\")\n this.initCanvasMutationObserver(win, blockClass, blockSelector);\n if (recordCanvas && typeof sampling === \"number\")\n this.initCanvasFPSObserver(sampling, win, blockClass, blockSelector, {\n dataURLOptions\n });\n }\n reset() {\n this.pendingCanvasMutations.clear();\n this.resetObservers && this.resetObservers();\n }\n freeze() {\n this.frozen = true;\n }\n unfreeze() {\n this.frozen = false;\n }\n lock() {\n this.locked = true;\n }\n unlock() {\n this.locked = false;\n }\n initCanvasFPSObserver(fps, win, blockClass, blockSelector, options) {\n const canvasContextReset = initCanvasContextObserver(\n win,\n blockClass,\n blockSelector,\n true\n );\n const snapshotInProgressMap = /* @__PURE__ */ new Map();\n const worker = new WorkerWrapper();\n worker.onmessage = (e2) => {\n const { id } = e2.data;\n snapshotInProgressMap.set(id, false);\n if (!(\"base64\" in e2.data)) return;\n const { base64, type, width, height } = e2.data;\n this.mutationCb({\n id,\n type: CanvasContext[\"2D\"],\n commands: [\n {\n property: \"clearRect\",\n // wipe canvas\n args: [0, 0, width, height]\n },\n {\n property: \"drawImage\",\n // draws (semi-transparent) image\n args: [\n {\n rr_type: \"ImageBitmap\",\n args: [\n {\n rr_type: \"Blob\",\n data: [{ rr_type: \"ArrayBuffer\", base64 }],\n type\n }\n ]\n },\n 0,\n 0\n ]\n }\n ]\n });\n };\n const timeBetweenSnapshots = 1e3 / fps;\n let lastSnapshotTime = 0;\n let rafId;\n const getCanvas = () => {\n const matchedCanvas = [];\n win.document.querySelectorAll(\"canvas\").forEach((canvas) => {\n if (!isBlocked(canvas, blockClass, blockSelector, true)) {\n matchedCanvas.push(canvas);\n }\n });\n return matchedCanvas;\n };\n const takeCanvasSnapshots = (timestamp) => {\n if (lastSnapshotTime && timestamp - lastSnapshotTime < timeBetweenSnapshots) {\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n return;\n }\n lastSnapshotTime = timestamp;\n getCanvas().forEach(async (canvas) => {\n var _a2;\n const id = this.mirror.getId(canvas);\n if (snapshotInProgressMap.get(id)) return;\n if (canvas.width === 0 || canvas.height === 0) return;\n snapshotInProgressMap.set(id, true);\n if ([\"webgl\", \"webgl2\"].includes(canvas.__context)) {\n const context = canvas.getContext(canvas.__context);\n if (((_a2 = context == null ? void 0 : context.getContextAttributes()) == null ? void 0 : _a2.preserveDrawingBuffer) === false) {\n context.clear(context.COLOR_BUFFER_BIT);\n }\n }\n const bitmap = await createImageBitmap(canvas);\n worker.postMessage(\n {\n id,\n bitmap,\n width: canvas.width,\n height: canvas.height,\n dataURLOptions: options.dataURLOptions\n },\n [bitmap]\n );\n });\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n };\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n this.resetObservers = () => {\n canvasContextReset();\n cancelAnimationFrame(rafId);\n };\n }\n initCanvasMutationObserver(win, blockClass, blockSelector) {\n this.startRAFTimestamping();\n this.startPendingCanvasMutationFlusher();\n const canvasContextReset = initCanvasContextObserver(\n win,\n blockClass,\n blockSelector,\n false\n );\n const canvas2DReset = initCanvas2DMutationObserver(\n this.processMutation.bind(this),\n win,\n blockClass,\n blockSelector\n );\n const canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(\n this.processMutation.bind(this),\n win,\n blockClass,\n blockSelector\n );\n this.resetObservers = () => {\n canvasContextReset();\n canvas2DReset();\n canvasWebGL1and2Reset();\n };\n }\n startPendingCanvasMutationFlusher() {\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\n }\n startRAFTimestamping() {\n const setLatestRAFTimestamp = (timestamp) => {\n this.rafStamps.latestId = timestamp;\n requestAnimationFrame(setLatestRAFTimestamp);\n };\n requestAnimationFrame(setLatestRAFTimestamp);\n }\n flushPendingCanvasMutations() {\n this.pendingCanvasMutations.forEach(\n (_values, canvas) => {\n const id = this.mirror.getId(canvas);\n this.flushPendingCanvasMutationFor(canvas, id);\n }\n );\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\n }\n flushPendingCanvasMutationFor(canvas, id) {\n if (this.frozen || this.locked) {\n return;\n }\n const valuesWithType = this.pendingCanvasMutations.get(canvas);\n if (!valuesWithType || id === -1) return;\n const values = valuesWithType.map((value) => {\n const { type: type2, ...rest } = value;\n return rest;\n });\n const { type } = valuesWithType[0];\n this.mutationCb({ id, type, commands: values });\n this.pendingCanvasMutations.delete(canvas);\n }\n}\nclass StylesheetManager {\n constructor(options) {\n __publicField(this, \"trackedLinkElements\", /* @__PURE__ */ new WeakSet());\n __publicField(this, \"mutationCb\");\n __publicField(this, \"adoptedStyleSheetCb\");\n __publicField(this, \"styleMirror\", new StyleSheetMirror());\n this.mutationCb = options.mutationCb;\n this.adoptedStyleSheetCb = options.adoptedStyleSheetCb;\n }\n attachLinkElement(linkEl, childSn) {\n if (\"_cssText\" in childSn.attributes)\n this.mutationCb({\n adds: [],\n removes: [],\n texts: [],\n attributes: [\n {\n id: childSn.id,\n attributes: childSn.attributes\n }\n ]\n });\n this.trackLinkElement(linkEl);\n }\n trackLinkElement(linkEl) {\n if (this.trackedLinkElements.has(linkEl)) return;\n this.trackedLinkElements.add(linkEl);\n this.trackStylesheetInLinkElement(linkEl);\n }\n adoptStyleSheets(sheets, hostId) {\n if (sheets.length === 0) return;\n const adoptedStyleSheetData = {\n id: hostId,\n styleIds: []\n };\n const styles = [];\n for (const sheet of sheets) {\n let styleId;\n if (!this.styleMirror.has(sheet)) {\n styleId = this.styleMirror.add(sheet);\n styles.push({\n styleId,\n rules: Array.from(sheet.rules || CSSRule, (r2, index2) => ({\n rule: stringifyRule(r2, sheet.href),\n index: index2\n }))\n });\n } else styleId = this.styleMirror.getId(sheet);\n adoptedStyleSheetData.styleIds.push(styleId);\n }\n if (styles.length > 0) adoptedStyleSheetData.styles = styles;\n this.adoptedStyleSheetCb(adoptedStyleSheetData);\n }\n reset() {\n this.styleMirror.reset();\n this.trackedLinkElements = /* @__PURE__ */ new WeakSet();\n }\n // TODO: take snapshot on stylesheet reload by applying event listener\n trackStylesheetInLinkElement(_linkEl) {\n }\n}\nclass ProcessedNodeManager {\n constructor() {\n __publicField(this, \"nodeMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"active\", false);\n }\n inOtherBuffer(node2, thisBuffer) {\n const buffers = this.nodeMap.get(node2);\n return buffers && Array.from(buffers).some((buffer) => buffer !== thisBuffer);\n }\n add(node2, buffer) {\n if (!this.active) {\n this.active = true;\n requestAnimationFrame(() => {\n this.nodeMap = /* @__PURE__ */ new WeakMap();\n this.active = false;\n });\n }\n this.nodeMap.set(node2, (this.nodeMap.get(node2) || /* @__PURE__ */ new Set()).add(buffer));\n }\n destroy() {\n }\n}\nlet wrappedEmit;\nlet takeFullSnapshot$1;\nlet canvasManager;\nlet recording = false;\ntry {\n if (Array.from([1], (x2) => x2 * 2)[0] !== 2) {\n const cleanFrame = document.createElement(\"iframe\");\n document.body.appendChild(cleanFrame);\n Array.from = ((_a = cleanFrame.contentWindow) == null ? void 0 : _a.Array.from) || Array.from;\n document.body.removeChild(cleanFrame);\n }\n} catch (err) {\n console.debug(\"Unable to override Array.from\", err);\n}\nconst mirror = createMirror$2();\nfunction record(options = {}) {\n const {\n emit,\n checkoutEveryNms,\n checkoutEveryNth,\n blockClass = \"rr-block\",\n blockSelector = null,\n ignoreClass = \"rr-ignore\",\n ignoreSelector = null,\n maskTextClass = \"rr-mask\",\n maskTextSelector = null,\n inlineStylesheet = true,\n maskAllInputs,\n maskInputOptions: _maskInputOptions,\n slimDOMOptions: _slimDOMOptions,\n maskInputFn,\n maskTextFn,\n hooks,\n packFn,\n sampling = {},\n dataURLOptions = {},\n mousemoveWait,\n recordDOM = true,\n recordCanvas = false,\n recordCrossOriginIframes = false,\n recordAfter = options.recordAfter === \"DOMContentLoaded\" ? options.recordAfter : \"load\",\n userTriggeredOnInput = false,\n collectFonts = false,\n inlineImages = false,\n plugins,\n keepIframeSrcFn = () => false,\n ignoreCSSAttributes = /* @__PURE__ */ new Set([]),\n errorHandler: errorHandler2\n } = options;\n registerErrorHandler(errorHandler2);\n const inEmittingFrame = recordCrossOriginIframes ? window.parent === window : true;\n let passEmitsToParent = false;\n if (!inEmittingFrame) {\n try {\n if (window.parent.document) {\n passEmitsToParent = false;\n }\n } catch (e2) {\n passEmitsToParent = true;\n }\n }\n if (inEmittingFrame && !emit) {\n throw new Error(\"emit function is required\");\n }\n if (!inEmittingFrame && !passEmitsToParent) {\n return () => {\n };\n }\n if (mousemoveWait !== void 0 && sampling.mousemove === void 0) {\n sampling.mousemove = mousemoveWait;\n }\n mirror.reset();\n const maskInputOptions = maskAllInputs === true ? {\n color: true,\n date: true,\n \"datetime-local\": true,\n email: true,\n month: true,\n number: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true,\n textarea: true,\n select: true,\n password: true\n } : _maskInputOptions !== void 0 ? _maskInputOptions : { password: true };\n const slimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === \"all\" ? {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaVerification: true,\n // the following are off for slimDOMOptions === true,\n // as they destroy some (hidden) info:\n headMetaAuthorship: _slimDOMOptions === \"all\",\n headMetaDescKeywords: _slimDOMOptions === \"all\",\n headTitleMutations: _slimDOMOptions === \"all\"\n } : _slimDOMOptions ? _slimDOMOptions : {};\n polyfill$1();\n let lastFullSnapshotEvent;\n let incrementalSnapshotCount = 0;\n const eventProcessor = (e2) => {\n for (const plugin3 of plugins || []) {\n if (plugin3.eventProcessor) {\n e2 = plugin3.eventProcessor(e2);\n }\n }\n if (packFn && // Disable packing events which will be emitted to parent frames.\n !passEmitsToParent) {\n e2 = packFn(e2);\n }\n return e2;\n };\n wrappedEmit = (r2, isCheckout) => {\n var _a2;\n const e2 = r2;\n e2.timestamp = nowTimestamp();\n if (((_a2 = mutationBuffers[0]) == null ? void 0 : _a2.isFrozen()) && e2.type !== EventType.FullSnapshot && !(e2.type === EventType.IncrementalSnapshot && e2.data.source === IncrementalSource.Mutation)) {\n mutationBuffers.forEach((buf) => buf.unfreeze());\n }\n if (inEmittingFrame) {\n emit == null ? void 0 : emit(eventProcessor(e2), isCheckout);\n } else if (passEmitsToParent) {\n const message = {\n type: \"rrweb\",\n event: eventProcessor(e2),\n origin: window.location.origin,\n isCheckout\n };\n window.parent.postMessage(message, \"*\");\n }\n if (e2.type === EventType.FullSnapshot) {\n lastFullSnapshotEvent = e2;\n incrementalSnapshotCount = 0;\n } else if (e2.type === EventType.IncrementalSnapshot) {\n if (e2.data.source === IncrementalSource.Mutation && e2.data.isAttachIframe) {\n return;\n }\n incrementalSnapshotCount++;\n const exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\n const exceedTime = checkoutEveryNms && e2.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\n if (exceedCount || exceedTime) {\n takeFullSnapshot$1(true);\n }\n }\n };\n const wrappedMutationEmit = (m) => {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Mutation,\n ...m\n }\n });\n };\n const wrappedScrollEmit = (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Scroll,\n ...p\n }\n });\n const wrappedCanvasMutationEmit = (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.CanvasMutation,\n ...p\n }\n });\n const wrappedAdoptedStyleSheetEmit = (a2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.AdoptedStyleSheet,\n ...a2\n }\n });\n const stylesheetManager = new StylesheetManager({\n mutationCb: wrappedMutationEmit,\n adoptedStyleSheetCb: wrappedAdoptedStyleSheetEmit\n });\n const iframeManager = new IframeManager({\n mirror,\n mutationCb: wrappedMutationEmit,\n stylesheetManager,\n recordCrossOriginIframes,\n wrappedEmit\n });\n for (const plugin3 of plugins || []) {\n if (plugin3.getMirror)\n plugin3.getMirror({\n nodeMirror: mirror,\n crossOriginIframeMirror: iframeManager.crossOriginIframeMirror,\n crossOriginIframeStyleMirror: iframeManager.crossOriginIframeStyleMirror\n });\n }\n const processedNodeManager = new ProcessedNodeManager();\n canvasManager = new CanvasManager({\n recordCanvas,\n mutationCb: wrappedCanvasMutationEmit,\n win: window,\n blockClass,\n blockSelector,\n mirror,\n sampling: sampling.canvas,\n dataURLOptions\n });\n const shadowDomManager = new ShadowDomManager({\n mutationCb: wrappedMutationEmit,\n scrollCb: wrappedScrollEmit,\n bypassOptions: {\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n inlineStylesheet,\n maskInputOptions,\n dataURLOptions,\n maskTextFn,\n maskInputFn,\n recordCanvas,\n inlineImages,\n sampling,\n slimDOMOptions,\n iframeManager,\n stylesheetManager,\n canvasManager,\n keepIframeSrcFn,\n processedNodeManager\n },\n mirror\n });\n takeFullSnapshot$1 = (isCheckout = false) => {\n if (!recordDOM) {\n return;\n }\n wrappedEmit(\n {\n type: EventType.Meta,\n data: {\n href: window.location.href,\n width: getWindowWidth(),\n height: getWindowHeight()\n }\n },\n isCheckout\n );\n stylesheetManager.reset();\n shadowDomManager.init();\n mutationBuffers.forEach((buf) => buf.lock());\n const node2 = snapshot(document, {\n mirror,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n inlineStylesheet,\n maskAllInputs: maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOM: slimDOMOptions,\n dataURLOptions,\n recordCanvas,\n inlineImages,\n onSerialize: (n2) => {\n if (isSerializedIframe(n2, mirror)) {\n iframeManager.addIframe(n2);\n }\n if (isSerializedStylesheet(n2, mirror)) {\n stylesheetManager.trackLinkElement(n2);\n }\n if (hasShadowRoot(n2)) {\n shadowDomManager.addShadowRoot(index.shadowRoot(n2), document);\n }\n },\n onIframeLoad: (iframe, childSn) => {\n iframeManager.attachIframe(iframe, childSn);\n shadowDomManager.observeAttachShadow(iframe);\n },\n onStylesheetLoad: (linkEl, childSn) => {\n stylesheetManager.attachLinkElement(linkEl, childSn);\n },\n keepIframeSrcFn\n });\n if (!node2) {\n return console.warn(\"Failed to snapshot the document\");\n }\n wrappedEmit(\n {\n type: EventType.FullSnapshot,\n data: {\n node: node2,\n initialOffset: getWindowScroll(window)\n }\n },\n isCheckout\n );\n mutationBuffers.forEach((buf) => buf.unlock());\n if (document.adoptedStyleSheets && document.adoptedStyleSheets.length > 0)\n stylesheetManager.adoptStyleSheets(\n document.adoptedStyleSheets,\n mirror.getId(document)\n );\n };\n try {\n const handlers = [];\n const observe = (doc) => {\n var _a2;\n return callbackWrapper(initObservers)(\n {\n mutationCb: wrappedMutationEmit,\n mousemoveCb: (positions, source) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source,\n positions\n }\n }),\n mouseInteractionCb: (d) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.MouseInteraction,\n ...d\n }\n }),\n scrollCb: wrappedScrollEmit,\n viewportResizeCb: (d) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.ViewportResize,\n ...d\n }\n }),\n inputCb: (v2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Input,\n ...v2\n }\n }),\n mediaInteractionCb: (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.MediaInteraction,\n ...p\n }\n }),\n styleSheetRuleCb: (r2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.StyleSheetRule,\n ...r2\n }\n }),\n styleDeclarationCb: (r2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.StyleDeclaration,\n ...r2\n }\n }),\n canvasMutationCb: wrappedCanvasMutationEmit,\n fontCb: (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Font,\n ...p\n }\n }),\n selectionCb: (p) => {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Selection,\n ...p\n }\n });\n },\n customElementCb: (c2) => {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.CustomElement,\n ...c2\n }\n });\n },\n blockClass,\n ignoreClass,\n ignoreSelector,\n maskTextClass,\n maskTextSelector,\n maskInputOptions,\n inlineStylesheet,\n sampling,\n recordDOM,\n recordCanvas,\n inlineImages,\n userTriggeredOnInput,\n collectFonts,\n doc,\n maskInputFn,\n maskTextFn,\n keepIframeSrcFn,\n blockSelector,\n slimDOMOptions,\n dataURLOptions,\n mirror,\n iframeManager,\n stylesheetManager,\n shadowDomManager,\n processedNodeManager,\n canvasManager,\n ignoreCSSAttributes,\n plugins: ((_a2 = plugins == null ? void 0 : plugins.filter((p) => p.observer)) == null ? void 0 : _a2.map((p) => ({\n observer: p.observer,\n options: p.options,\n callback: (payload) => wrappedEmit({\n type: EventType.Plugin,\n data: {\n plugin: p.name,\n payload\n }\n })\n }))) || []\n },\n hooks\n );\n };\n iframeManager.addLoadListener((iframeEl) => {\n try {\n handlers.push(observe(iframeEl.contentDocument));\n } catch (error) {\n console.warn(error);\n }\n });\n const init = () => {\n takeFullSnapshot$1();\n handlers.push(observe(document));\n recording = true;\n };\n if (document.readyState === \"interactive\" || document.readyState === \"complete\") {\n init();\n } else {\n handlers.push(\n on(\"DOMContentLoaded\", () => {\n wrappedEmit({\n type: EventType.DomContentLoaded,\n data: {}\n });\n if (recordAfter === \"DOMContentLoaded\") init();\n })\n );\n handlers.push(\n on(\n \"load\",\n () => {\n wrappedEmit({\n type: EventType.Load,\n data: {}\n });\n if (recordAfter === \"load\") init();\n },\n window\n )\n );\n }\n return () => {\n handlers.forEach((h) => h());\n processedNodeManager.destroy();\n recording = false;\n unregisterErrorHandler();\n };\n } catch (error) {\n console.warn(error);\n }\n}\nrecord.addCustomEvent = (tag, payload) => {\n if (!recording) {\n throw new Error(\"please add custom event after start recording\");\n }\n wrappedEmit({\n type: EventType.Custom,\n data: {\n tag,\n payload\n }\n });\n};\nrecord.freezePage = () => {\n mutationBuffers.forEach((buf) => buf.freeze());\n};\nrecord.takeFullSnapshot = (isCheckout) => {\n if (!recording) {\n throw new Error(\"please take full snapshot after start recording\");\n }\n takeFullSnapshot$1(isCheckout);\n};\nrecord.mirror = mirror;\nvar n;\n!function(t2) {\n t2[t2.NotStarted = 0] = \"NotStarted\", t2[t2.Running = 1] = \"Running\", t2[t2.Stopped = 2] = \"Stopped\";\n}(n || (n = {}));\nexport {\n record\n};\n//# sourceMappingURL=record.js.map\n","import { isMobile } from \"./GleapHelper\";\nimport { record } from \"@rrweb/record\";\n\nexport default class GleapReplayRecorder {\n startDate = undefined;\n events = [];\n bufferSize = 0;\n stopFunction = undefined;\n customOptions = {};\n\n // GleapReplayRecorder singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapReplayRecorder();\n return this.instance;\n } else {\n return this.instance;\n }\n }\n\n constructor() {}\n\n setOptions(options) {\n this.customOptions = options;\n }\n\n /**\n * Start replays\n * @returns\n */\n start() {\n this.stop();\n\n this.startDate = Date.now();\n var events = this.events;\n\n var options = {\n inlineStylesheet: true,\n blockClass: \"gl-block\",\n ignoreClass: \"gl-ignore\",\n maskTextClass: \"gl-mask\",\n dataURLOptions: {\n quality: 0.7,\n },\n recordCanvas: false,\n sampling: {\n scroll: 150,\n mouseInteraction: {\n MouseUp: false,\n MouseDown: false,\n Click: true,\n ContextMenu: true,\n DblClick: true,\n Focus: true,\n Blur: true,\n TouchStart: true,\n TouchEnd: false,\n },\n },\n collectFonts: false,\n recordCrossOriginIframes: false,\n };\n\n try {\n this.stopFunction = record({\n ...options,\n ...this.customOptions,\n emit(rrwebEvent) {\n const { event } = ensureMaxMessageSize(rrwebEvent);\n events.push(event);\n },\n });\n } catch (e) {\n console.error(e);\n }\n }\n\n /**\n * Stop replays\n * @returns\n */\n stop() {\n if (this.stopFunction) {\n this.stopFunction();\n }\n\n this.startDate = undefined;\n this.events = [];\n this.bufferSize = 0;\n }\n\n /**\n * Get the current replay data\n * @returns {Promise}\n */\n getReplayData() {\n const replayResult = {\n startDate: this.startDate,\n events: this.events,\n baseUrl: window.location.origin,\n width: window.innerWidth,\n height: window.innerHeight,\n isMobile: isMobile(),\n type: \"rrweb\",\n };\n\n return replayResult;\n }\n}\n\nexport function ensureMaxMessageSize(data) {\n let stringifiedData = JSON.stringify(data);\n if (stringifiedData.length > 4000000) {\n const dataURIRegex = /data:([\\w\\/\\-\\.]+);(\\w+),([^)\"]*)/gim;\n const matches = stringifiedData.matchAll(dataURIRegex);\n for (const match of matches) {\n if (match[1].toLocaleLowerCase().slice(0, 6) === \"image/\") {\n stringifiedData = stringifiedData.replace(\n match[0],\n \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAQSURBVHgBAQUA+v8ABRg5/wHSAVZN1mnaAAAAAElFTkSuQmCC\"\n );\n } else {\n stringifiedData = stringifiedData.replace(match[0], \"\");\n }\n }\n }\n return { event: JSON.parse(stringifiedData), size: stringifiedData.length };\n}\n","export class ScreenDrawer {\n rerender;\n svgElement = null;\n path = null;\n strPath;\n strokeWidth = 12;\n strokeWidthRect = 6;\n bufferSize = 4;\n buffer = [];\n startPoint = null;\n tool = \"rect\";\n color = \"#EB144C\";\n mouseDown = null;\n mouseMove = null;\n mouseUp = null;\n resizeListener = null;\n pathBuffer = [];\n\n constructor(rerender) {\n const self = this;\n\n this.rerender = rerender;\n\n this.svgElement = document.querySelector(\".bb-capture-svg\");\n this.svgElement.style.minHeight = `${document.documentElement.scrollHeight}px`;\n\n // Window resize listener.\n this.resizeListener = function (e) {\n self.svgElement.style.minHeight = `${document.documentElement.scrollHeight}px`;\n };\n window.addEventListener(\"resize\", this.resizeListener, true);\n\n this.mouseDown = function (e) {\n e.preventDefault();\n\n const colorpicker = document.querySelector(\n \".bb-capture-toolbar-item-colorpicker\"\n );\n if (colorpicker) {\n colorpicker.style.display = \"none\";\n }\n\n self.fadeOutToolbar();\n if (self.tool === \"pen\" || self.tool === \"blur\") {\n self.mouseDownPen(e);\n }\n if (self.tool === \"rect\") {\n self.mouseDownRect(e);\n }\n };\n\n this.mouseMove = function (e) {\n e.preventDefault();\n if (self.tool === \"pen\" || self.tool === \"blur\") {\n self.mouseMovePen(e);\n }\n if (self.tool === \"rect\") {\n self.mouseMoveRect(e);\n }\n };\n\n this.mouseUp = function (e) {\n e.preventDefault();\n self.fadeInToolbar();\n if (self.tool === \"pen\" || self.tool === \"blur\") {\n self.mouseUpPen(e);\n }\n if (self.tool === \"rect\") {\n self.mouseUpRect(e);\n }\n };\n\n this.svgElement.addEventListener(\"mousedown\", this.mouseDown);\n this.svgElement.addEventListener(\"mousemove\", this.mouseMove);\n this.svgElement.addEventListener(\"mouseup\", this.mouseUp);\n this.svgElement.addEventListener(\"touchstart\", this.mouseDown, false);\n this.svgElement.addEventListener(\"touchmove\", this.mouseMove, false);\n this.svgElement.addEventListener(\"touchend\", this.mouseUp, false);\n\n setTimeout(() => {\n this.rerender();\n }, 100);\n }\n\n clear() {\n if (this.svgElement) {\n while (this.svgElement.firstChild) {\n this.svgElement.firstChild.remove();\n }\n }\n }\n\n destroy() {\n this.svgElement.removeEventListener(\"mousedown\", this.mouseDown);\n this.svgElement.removeEventListener(\"mousemove\", this.mouseMove);\n this.svgElement.removeEventListener(\"mouseup\", this.mouseUp);\n this.svgElement.removeEventListener(\"touchstart\", this.mouseDown);\n this.svgElement.removeEventListener(\"touchmove\", this.mouseMove);\n this.svgElement.removeEventListener(\"touchend\", this.mouseUp);\n window.removeEventListener(\"resize\", this.resizeListener);\n }\n\n mouseUpPen() {\n if (this.path) {\n this.path = null;\n }\n }\n\n mouseUpRect() {\n if (this.path) {\n this.path = null;\n }\n }\n\n mouseMovePen(e) {\n if (this.path) {\n this.appendToBuffer(this.getMousePosition(e));\n this.updateSvgPath();\n }\n }\n\n mouseMoveRect(e) {\n if (this.path) {\n var p = this.getMousePosition(e);\n var w = Math.abs(p.x - this.startPoint.x);\n var h = Math.abs(p.y - this.startPoint.y);\n var x = p.x;\n var y = p.y;\n if (p.x > this.startPoint.x) {\n x = this.startPoint.x;\n }\n if (p.y > this.startPoint.y) {\n y = this.startPoint.y;\n }\n\n this.path.setAttributeNS(null, \"x\", x);\n this.path.setAttributeNS(null, \"y\", y);\n this.path.setAttributeNS(null, \"width\", w);\n this.path.setAttributeNS(null, \"height\", h);\n }\n }\n\n mouseDownRect(e) {\n this.path = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n this.path.setAttribute(\"fill\", \"none\");\n this.path.setAttribute(\"stroke\", this.color);\n this.path.setAttribute(\"stroke-linecap\", \"round\");\n this.path.setAttribute(\"stroke-width\", this.strokeWidthRect);\n\n this.startPoint = this.getMousePosition(e);\n this.appendPathToSvg(this.path);\n }\n\n mouseDownPen(e) {\n var color = this.color + \"AA\";\n var strokeWidth = this.strokeWidth;\n\n if (this.tool === \"blur\") {\n color = \"#000000\";\n strokeWidth = 40;\n }\n\n this.path = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this.path.setAttribute(\"fill\", \"none\");\n this.path.setAttribute(\"stroke\", color);\n this.path.setAttribute(\"stroke-linecap\", \"round\");\n this.path.setAttribute(\"stroke-width\", strokeWidth);\n this.buffer = [];\n var pt = this.getMousePosition(e);\n this.appendToBuffer(pt);\n this.strPath = \"M\" + pt.x + \" \" + pt.y;\n this.path.setAttribute(\"d\", this.strPath);\n this.appendPathToSvg(this.path);\n }\n\n setTool(tool) {\n this.tool = tool;\n }\n\n setColor(color) {\n this.color = color;\n }\n\n getMousePosition(e) {\n if (e.touches && e.touches.length > 0) {\n return {\n x: e.touches[0].clientX,\n y: e.touches[0].clientY,\n };\n }\n\n return {\n x: e.clientX,\n y: e.clientY,\n };\n }\n\n // Calculate the average point, starting at offset in the buffer\n getAveragePoint(offset) {\n var len = this.buffer.length;\n if (len % 2 === 1 || len >= this.bufferSize) {\n var totalX = 0;\n var totalY = 0;\n var pt, i;\n var count = 0;\n for (i = offset; i < len; i++) {\n count++;\n pt = this.buffer[i];\n totalX += pt.x;\n totalY += pt.y;\n }\n return {\n x: totalX / count,\n y: totalY / count,\n };\n }\n return null;\n }\n\n updateSvgPath() {\n var pt = this.getAveragePoint(0);\n\n if (pt) {\n // Get the smoothed part of the path that will not change\n this.strPath += \" L\" + pt.x + \" \" + pt.y;\n\n // Get the last part of the path (close to the current mouse position)\n // This part will change if the mouse moves again\n var tmpPath = \"\";\n for (var offset = 2; offset < this.buffer.length; offset += 2) {\n pt = this.getAveragePoint(offset);\n tmpPath += \" L\" + pt.x + \" \" + pt.y;\n }\n\n // Set the complete current path coordinates\n this.path.setAttribute(\"d\", this.strPath + tmpPath);\n }\n }\n\n appendToBuffer(pt) {\n this.buffer.push(pt);\n while (this.buffer.length > this.bufferSize) {\n this.buffer.shift();\n }\n }\n\n appendPathToSvg(path) {\n this.svgElement.appendChild(path);\n this.pathBuffer.push(path);\n this.rerender();\n }\n\n removeLastAddedPathFromSvg() {\n if (this.pathBuffer.length <= 0 || !this.svgElement) {\n return;\n }\n\n this.svgElement.removeChild(this.pathBuffer[this.pathBuffer.length - 1]);\n\n this.pathBuffer.pop();\n\n this.rerender();\n }\n\n fadeOutToolbar() {\n var fadeTarget = document.querySelector(\".bb-capture-toolbar\");\n if (fadeTarget) {\n fadeTarget.style.opacity = 0;\n fadeTarget.style.pointerEvents = \"none\";\n }\n }\n\n fadeInToolbar() {\n var fadeTarget = document.querySelector(\".bb-capture-toolbar\");\n if (fadeTarget) {\n fadeTarget.style.opacity = 1;\n fadeTarget.style.pointerEvents = \"auto\";\n }\n }\n}\n","export class GleapScrollStopper {\n keys = { 37: 1, 38: 1, 39: 1, 40: 1 };\n supportsPassive = false;\n wheelOpt = this.supportsPassive ? { passive: false } : false;\n wheelEvent =\n \"onwheel\" in document.createElement(\"div\") ? \"wheel\" : \"mousewheel\";\n scrollDisabled = false;\n\n // GleapScrollStopper singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapScrollStopper();\n return this.instance;\n } else {\n return this.instance;\n }\n }\n\n constructor() {\n const self = this;\n try {\n window.addEventListener(\n \"test\",\n null,\n Object.defineProperty({}, \"passive\", {\n get: function () {\n self.supportsPassive = true;\n self.wheelOpt = self.supportsPassive ? { passive: false } : false;\n },\n })\n );\n } catch (e) {}\n }\n\n preventDefault(e) {\n e.preventDefault();\n }\n\n preventDefaultForScrollKeys(e) {\n if (this.keys && this.keys[e.keyCode]) {\n this.preventDefault(e);\n return false;\n }\n }\n\n static disableScroll() {\n const instance = this.getInstance();\n if (instance.scrollDisabled) {\n return;\n }\n\n instance.scrollDisabled = true;\n\n window.addEventListener(\"DOMMouseScroll\", instance.preventDefault, false); // older FF\n window.addEventListener(\n instance.wheelEvent,\n instance.preventDefault,\n instance.wheelOpt\n ); // modern desktop\n window.addEventListener(\n \"touchmove\",\n instance.preventDefault,\n instance.wheelOpt\n ); // mobile\n window.addEventListener(\n \"keydown\",\n instance.preventDefaultForScrollKeys,\n false\n );\n }\n\n static enableScroll() {\n const instance = this.getInstance();\n if (!instance.scrollDisabled) {\n return;\n }\n\n instance.scrollDisabled = false;\n window.removeEventListener(\n \"DOMMouseScroll\",\n instance.preventDefault,\n false\n );\n window.removeEventListener(\n instance.wheelEvent,\n instance.preventDefault,\n instance.wheelOpt\n );\n window.removeEventListener(\n \"touchmove\",\n instance.preventDefault,\n instance.wheelOpt\n );\n window.removeEventListener(\n \"keydown\",\n instance.preventDefaultForScrollKeys,\n false\n );\n }\n}\n","import Gleap, { GleapTranslationManager, GleapFrameManager } from \"./Gleap\";\nimport { ScreenDrawer } from \"./ScreenDrawer\";\nimport { GleapScrollStopper } from \"./GleapScrollStopper\";\nimport { GleapScreenRecorder } from \"./GleapScreenRecorder\";\nimport { loadIcon } from \"./UI\";\n\nexport default class GleapMarkerManager {\n type = \"screenshot\";\n dragCursor = null;\n screenRecorder = null;\n callback = null;\n screenDrawer = null;\n escListener = null;\n pageLeaveListener = null;\n overrideLanguage = Gleap.getInstance().overrideLanguage;\n\n constructor(type) {\n this.type = type;\n }\n\n hideWidgetUI() {\n const feedbackButton = document.querySelector(\".bb-feedback-button\");\n if (feedbackButton) {\n feedbackButton.style.display = \"none\";\n }\n\n const dialogUI = document.querySelector(\".bb-feedback-dialog-container\");\n if (dialogUI) {\n dialogUI.style.display = \"none\";\n }\n }\n\n showWidgetUI() {\n if (this.type === \"screenshot\") {\n GleapScrollStopper.enableScroll();\n }\n\n // Stop screenrecording.\n if (this.screenRecorder) {\n this.screenRecorder.stopScreenRecording();\n }\n\n // Unregister ESC listener\n this.unregisterListeners();\n\n // Cleanup mouse pointer\n this.cleanupMousePointer();\n\n if (this.screenDrawer) {\n this.screenDrawer.destroy();\n }\n\n // Remove the toolbar UI\n const dialog = document.querySelector(\".bb-capture-toolbar\");\n if (dialog) {\n dialog.remove();\n }\n\n // Capture SVG ref\n const captureSVG = document.querySelector(\".bb-capture-svg\");\n if (captureSVG) {\n captureSVG.classList.add(\"bb-capture-svg--preview\");\n }\n\n // Remove the preview UI\n const videoPreviewContainer = document.querySelector(\".bb-capture-preview\");\n if (videoPreviewContainer) {\n videoPreviewContainer.remove();\n }\n\n // Feedback button\n const feedbackButton = document.querySelector(\".bb-feedback-button\");\n if (feedbackButton) {\n feedbackButton.style.display = \"flex\";\n }\n\n // Feedback dialog container\n const dialogUI = document.querySelector(\".bb-feedback-dialog-container\");\n if (dialogUI) {\n dialogUI.style.display = \"block\";\n }\n\n // Dismiss button\n const dismissUI = document.querySelector(\".bb-capture-dismiss\");\n if (dismissUI) {\n dismissUI.style.display = \"none\";\n }\n\n // Hide the color picker\n const colorPicker = document.querySelector(\n \".bb-capture-toolbar-item-colorpicker\"\n );\n if (colorPicker) {\n colorPicker.style.display = \"none\";\n }\n\n // Border layer\n const borderLayer = document.querySelector(\n \".bb-capture-editor-borderlayer\"\n );\n if (borderLayer) {\n borderLayer.style.display = \"none\";\n }\n }\n\n clear() {\n const captureEditor = document.querySelector(\".bb-capture-editor\");\n if (captureEditor) {\n captureEditor.remove();\n }\n }\n\n setMouseMove(x, y) {\n if (!this.dragCursor) {\n return;\n }\n\n this.dragCursor.style.left = `${x + 6}px`;\n this.dragCursor.style.top = `${y - 26}px`;\n this.dragCursor.style.right = null;\n }\n\n mouseMoveEventHandler(e) {\n const x = e.clientX;\n const y = e.clientY;\n this.setMouseMove(x, y);\n }\n\n touchMoveEventHandler(e) {\n const x = e.touches[0].clientX;\n const y = e.touches[0].clientY;\n this.setMouseMove(x, y);\n }\n\n setupMousePointer() {\n const self = this;\n this.dragCursor = document.querySelector(\".bb-capture-editor-drag-info\");\n const captureSVG = document.querySelector(\".bb-capture-svg\");\n captureSVG.addEventListener(\"mouseenter\", (e) => {\n self.dragCursor.style.opacity = 1;\n });\n\n captureSVG.addEventListener(\"mouseleave\", (e) => {\n self.dragCursor.style.opacity = 0;\n });\n\n document.documentElement.addEventListener(\n \"mousemove\",\n this.mouseMoveEventHandler.bind(this)\n );\n document.documentElement.addEventListener(\n \"touchmove\",\n this.touchMoveEventHandler.bind(this)\n );\n }\n\n cleanupMousePointer() {\n document.documentElement.removeEventListener(\n \"mousemove\",\n this.mouseMoveEventHandler\n );\n document.documentElement.removeEventListener(\n \"touchmove\",\n this.touchMoveEventHandler\n );\n\n // Clean up toolbar drag listeners\n const dragHandle = document.querySelector(\".bb-capture-toolbar-item[data-type='drag']\");\n if (dragHandle) {\n dragHandle.removeEventListener(\"mousedown\", this.dragStart);\n dragHandle.removeEventListener(\"touchstart\", this.dragStart);\n document.removeEventListener(\"mousemove\", this.drag);\n document.removeEventListener(\"touchmove\", this.drag);\n document.removeEventListener(\"mouseup\", this.dragEnd);\n document.removeEventListener(\"touchend\", this.dragEnd);\n }\n\n if (this.dragCursor) {\n this.dragCursor.remove();\n }\n }\n\n createEditorUI() {\n // Add HTML for drawing and recording\n var bugReportingEditor = document.createElement(\"div\");\n bugReportingEditor.className = \"bb-capture-editor\";\n bugReportingEditor.innerHTML = `\n
\n \n
${loadIcon(\"dismiss\")}
\n
${loadIcon(\"rect\")}
\n
\n
\n ${loadIcon(\"drag\")}\n
\n ${this.type === \"capture\"\n ? `
\n ${loadIcon(\"recorderon\")}\n ${loadIcon(\"recorderoff\")}\n \n
\n
\n ${loadIcon(\"mic\")}\n \n
\n
2:00
\n
\n
\n ${loadIcon(\"pointer\")}\n
`\n : \"\"\n }\n
\n ${loadIcon(\"rect\")}\n
\n
\n ${loadIcon(\"pen\")}\n
\n
\n ${loadIcon(\"blur\")}\n
\n
\n
\n ${GleapTranslationManager.translateText(\n `pickAColor`\n )}\n
\n
\n ${loadIcon(\"undo\")}\n ${GleapTranslationManager.translateText(\n `undo`\n )}\n
\n ${this.type !== \"capture\"\n ? `
${GleapTranslationManager.translateText(\n `next`\n )}
`\n : \"\"\n }\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
${GleapTranslationManager.translateText(\n `retry`\n )}
\n
${GleapTranslationManager.translateText(\n `next`\n )}
\n
\n
\n
\n `;\n document.body.appendChild(bugReportingEditor);\n\n // Set RTL layout\n bugReportingEditor.setAttribute(\"dir\", GleapTranslationManager.getInstance().isRTLLayout ? \"rtl\" : \"ltr\");\n }\n\n showNextStep = function () {\n // Adapt the UI\n this.showWidgetUI();\n\n if (this.callback) {\n GleapFrameManager.getInstance().sendMessage({\n name: \"set-form-data\",\n data: {\n formKey: \"capture\",\n data: {\n value: this.type,\n dirty: true,\n }\n }\n });\n this.callback(true);\n }\n };\n\n unregisterListeners() {\n if (this.escListener) {\n document.removeEventListener(\"keydown\", this.escListener);\n }\n\n if (this.pageLeaveListener) {\n window.removeEventListener(\"beforeunload\", this.pageLeaveListener);\n }\n }\n\n registerListeners() {\n const self = this;\n\n // Esc listener\n this.escListener = function (evt) {\n evt = evt || window.event;\n var isEscape = false;\n var isEnter = false;\n if (\"key\" in evt) {\n isEscape = evt.key === \"Escape\";\n isEnter = evt.key === \"Enter\";\n }\n if (isEscape) {\n self.dismiss();\n }\n if (self.type === \"screenshot\" && isEnter) {\n self.showNextStep();\n }\n };\n document.addEventListener(\"keydown\", this.escListener);\n\n // Page leave listener\n this.pageLeaveListener = function (event) {\n event.preventDefault();\n event.returnValue = \"\";\n };\n window.addEventListener(\"beforeunload\", this.pageLeaveListener);\n }\n\n show(callback) {\n this.callback = callback;\n const self = this;\n\n // Register for listeners\n this.registerListeners();\n\n // Hide widget UI\n this.hideWidgetUI();\n\n // Create the editor UI\n this.createEditorUI();\n\n // Setup the mouse pointer\n this.setupMousePointer();\n\n // Setup screenshot data\n if (this.type === \"screenshot\") {\n // Overwrite snapshot position\n Gleap.getInstance().setGlobalDataItem(\"snapshotPosition\", {\n x: window.scrollX,\n y: window.scrollY,\n });\n\n // Disable scroll\n GleapScrollStopper.disableScroll();\n } else {\n // Setup screen recording\n this.setupScreenRecording();\n }\n\n // Hook up the drawing.\n this.screenDrawer = new ScreenDrawer(\n this.captureScreenDrawerRerender.bind(this)\n );\n\n this.setupColorPicker();\n this.setupToolbar();\n }\n\n setupColorPicker() {\n const self = this;\n const selectedColor = document.querySelector(\n \".bb-capture-toolbar-item-selectedcolor\"\n );\n const colorItems = document.querySelectorAll(\n \".bb-capture-toolbar-item-color\"\n );\n const colorpicker = document.querySelector(\n \".bb-capture-toolbar-item-colorpicker\"\n );\n\n for (var i = 0; i < colorItems.length; i++) {\n const colorItem = colorItems[i];\n const hexColor = colorItem.getAttribute(\"data-color\");\n colorItem.style.backgroundColor = hexColor;\n colorItem.onclick = function () {\n if (colorItem) {\n self.screenDrawer.setColor(hexColor);\n if (colorpicker) {\n colorpicker.style.display = \"none\";\n }\n selectedColor.style.backgroundColor = colorItem.style.backgroundColor;\n GleapMarkerManager.setPenColor(hexColor);\n }\n };\n }\n }\n\n static setPenColor(hexColor) {\n const penTips = document.querySelectorAll(\".bb-pen-tip\");\n for (var j = 0; j < penTips.length; j++) {\n penTips[j].style.fill = hexColor;\n }\n }\n\n dismiss() {\n this.showWidgetUI();\n\n if (this.callback) {\n this.callback(false);\n }\n }\n\n setupToolbar() {\n const self = this;\n const toolbar = document.querySelector(\".bb-capture-toolbar\");\n let isDragging = false;\n let currentX;\n let currentY;\n let initialX;\n let initialY;\n let xOffset = 0;\n let yOffset = 0;\n\n const getTransformValues = () => {\n const transform = window.getComputedStyle(toolbar).transform;\n if (transform === 'none') return { x: 0, y: 0 };\n const matrix = new DOMMatrix(transform);\n return { x: matrix.m41, y: matrix.m42 };\n };\n\n this.dragStart = (e) => {\n const { x, y } = getTransformValues();\n xOffset = x;\n yOffset = y;\n\n if (e.type === \"mousedown\") {\n initialX = e.clientX - xOffset;\n initialY = e.clientY - yOffset;\n } else {\n initialX = e.touches[0].clientX - xOffset;\n initialY = e.touches[0].clientY - yOffset;\n }\n isDragging = true;\n };\n\n this.dragEnd = () => {\n isDragging = false;\n };\n\n this.drag = (e) => {\n if (isDragging) {\n e.preventDefault();\n if (e.type === \"mousemove\") {\n currentX = e.clientX - initialX;\n currentY = e.clientY - initialY;\n } else {\n currentX = e.touches[0].clientX - initialX;\n currentY = e.touches[0].clientY - initialY;\n }\n\n xOffset = currentX;\n yOffset = currentY;\n\n toolbar.style.transform = `translate(${currentX}px, ${currentY}px)`;\n }\n };\n\n const dragHandle = document.querySelector(\".bb-capture-toolbar-item[data-type='drag']\");\n\n dragHandle.addEventListener(\"mousedown\", this.dragStart);\n dragHandle.addEventListener(\"touchstart\", this.dragStart);\n document.addEventListener(\"mousemove\", this.drag);\n document.addEventListener(\"touchmove\", this.drag);\n document.addEventListener(\"mouseup\", this.dragEnd);\n document.addEventListener(\"touchend\", this.dragEnd);\n\n // Hook up dismiss button\n const dismissButton = document.querySelector(\".bb-capture-dismiss\");\n dismissButton.onclick = function () {\n self.dismiss();\n };\n\n // Hook up send button\n const nextButton = document.querySelector(\".bb-capture-button-next\");\n if (nextButton) {\n nextButton.onclick = this.showNextStep.bind(this);\n }\n\n const colorpicker = document.querySelector(\n \".bb-capture-toolbar-item-colorpicker\"\n );\n\n // Capture SVG ref\n const captureSVG = document.querySelector(\".bb-capture-svg\");\n\n const chooseTool = function (type, toolbarItem) {\n const toolbarTools = document.querySelectorAll(\n \".bb-capture-toolbar-item-tool\"\n );\n for (let j = 0; j < toolbarTools.length; j++) {\n toolbarTools[j].classList.remove(\"bb-capture-toolbar-item--active\");\n }\n toolbarItem.classList.add(\"bb-capture-toolbar-item--active\");\n self.screenDrawer.setTool(type);\n self.dragCursor.innerHTML = \"\";\n if (type === \"pointer\") {\n captureSVG.style.pointerEvents = \"none\";\n } else {\n captureSVG.style.pointerEvents = \"auto\";\n try {\n var svgClone = toolbarItem.querySelector(\"svg\").cloneNode(true);\n if (svgClone && self.dragCursor) {\n self.dragCursor.appendChild(svgClone);\n }\n } catch (exp) { }\n }\n }\n\n // Setup toolbar items\n var toolbarItems = document.querySelectorAll(\".bb-capture-toolbar-item\");\n for (var i = 0; i < toolbarItems.length; i++) {\n const toolbarItem = toolbarItems[i];\n toolbarItem.onclick = function () {\n const type = toolbarItem.getAttribute(\"data-type\");\n if (colorpicker && type !== \"colorpicker\") {\n colorpicker.style.display = \"none\";\n }\n\n // Mic & recording buttons\n if (type === \"mic\") {\n self.screenRecorder.toggleAudio();\n }\n if (type === \"recording\") {\n if (self.screenRecorder.isRecording) {\n self.screenRecorder.stopScreenRecording();\n } else {\n self.screenRecorder.startScreenRecording();\n chooseTool(\"pointer\", document.querySelector(\".bb-capture-toolbar-item[data-type='pointer']\"));\n }\n }\n\n // Marker buttons\n if (self.type === \"capture\" && !self.screenRecorder.isRecording) {\n // Inactivate buttons.\n return;\n }\n if (\n type === \"pen\" ||\n type === \"blur\" ||\n type === \"rect\" ||\n type === \"pointer\"\n ) {\n chooseTool(type, toolbarItem);\n }\n if (type === \"colorpicker\") {\n if (colorpicker.style.display === \"flex\") {\n colorpicker.style.display = \"none\";\n } else {\n colorpicker.style.display = \"flex\";\n }\n }\n if (type === \"undo\") {\n self.screenDrawer.removeLastAddedPathFromSvg();\n }\n };\n }\n }\n\n captureScreenDrawerRerender() {\n if (!this.screenDrawer) {\n return;\n }\n\n const itemInactiveClass = \"bb-capture-editor-item-inactive\";\n const toolbarItems = document.querySelectorAll(\".bb-capture-toolbar-item\");\n for (var i = 0; i < toolbarItems.length; i++) {\n const toolbarItem = toolbarItems[i];\n const type = toolbarItem.getAttribute(\"data-type\");\n switch (type) {\n case \"undo\":\n if (\n this.screenDrawer.pathBuffer != null &&\n this.screenDrawer.pathBuffer.length > 0\n ) {\n toolbarItem.classList.remove(itemInactiveClass);\n } else {\n toolbarItem.classList.add(itemInactiveClass);\n }\n break;\n default:\n break;\n }\n }\n }\n\n captureRenderer() {\n if (!this.screenRecorder) {\n return;\n }\n\n if (this.screenRecorder.file) {\n Gleap.getInstance().setGlobalDataItem(\"screenRecordingData\", this.screenRecorder.file);\n }\n\n const itemInactiveClass = \"bb-capture-editor-item-inactive\";\n const timerLabel = document.querySelector(\".bb-capture-toolbar-item-timer\");\n const toolbarItems = document.querySelectorAll(\".bb-capture-toolbar-item\");\n const screenRecordingTooltip = document.querySelector(\n \".bb-tooltip-screen-recording\"\n );\n const audioRecordingTooltip = document.querySelector(\n \".bb-tooltip-audio-recording\"\n );\n const captureEditor = document.querySelector(\".bb-capture-editor\");\n const recordingClass = \"bb-capture-editor-recording\";\n const notRecordingClass = \"bb-capture-editor-notrecording\";\n if (this.screenRecorder.isRecording) {\n captureEditor.classList.add(recordingClass);\n captureEditor.classList.remove(notRecordingClass);\n } else {\n captureEditor.classList.add(notRecordingClass);\n captureEditor.classList.remove(recordingClass);\n }\n \n // Update UI.\n const dialog = document.querySelector(\".bb-capture-toolbar\");\n const videoPreviewContainer = document.querySelector(\".bb-capture-preview\");\n videoPreviewContainer.style.display = this.screenRecorder.file\n ? \"flex\"\n : \"none\";\n dialog.style.display = !this.screenRecorder.file ? \"flex\" : \"none\";\n\n for (var i = 0; i < toolbarItems.length; i++) {\n const toolbarItem = toolbarItems[i];\n const type = toolbarItem.getAttribute(\"data-type\");\n switch (type) {\n case \"mic\":\n if (\n this.screenRecorder.audioAvailable &&\n this.screenRecorder.available\n ) {\n toolbarItem.classList.remove(itemInactiveClass);\n if (!this.screenRecorder.audioMuted) {\n toolbarItem.classList.remove(\n \"bb-capture-toolbar-item--inactivecross\"\n );\n audioRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"mute\"\n );\n } else {\n toolbarItem.classList.add(\n \"bb-capture-toolbar-item--inactivecross\"\n );\n audioRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"unmute\"\n );\n }\n } else {\n toolbarItem.classList.add(itemInactiveClass);\n toolbarItem.classList.add(\"bb-capture-toolbar-item--inactivecross\");\n audioRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"browserNotSupported\"\n );\n }\n break;\n\n case \"recording\":\n if (this.screenRecorder.available) {\n toolbarItem.classList.remove(itemInactiveClass);\n if (this.screenRecorder.isRecording) {\n toolbarItem.setAttribute(\"data-active\", \"true\");\n screenRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"stopRecording\"\n );\n timerLabel.style.display = \"block\";\n } else {\n toolbarItem.setAttribute(\"data-active\", \"false\");\n screenRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"startRecording\"\n );\n timerLabel.style.display = \"none\";\n }\n } else {\n // Recording is not available.\n toolbarItem.classList.add(itemInactiveClass);\n screenRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"browserNotSupported\"\n );\n }\n break;\n\n default:\n break;\n }\n }\n }\n\n setupScreenRecording() {\n const self = this;\n\n // Hook preview next button\n const nextButtonPreview = document.querySelector(\n \".bb-capture-preview-sendbutton\"\n );\n nextButtonPreview.onclick = this.showNextStep.bind(this);\n\n // Hook retry button\n const retryButton = document.querySelector(\n \".bb-capture-preview-retrybutton\"\n );\n retryButton.onclick = function () {\n self.screenRecorder.clearPreview();\n if (self.screenDrawer) {\n self.screenDrawer.clear();\n }\n };\n\n // Setup screen recorder\n this.screenRecorder = new GleapScreenRecorder(\n this.captureRenderer.bind(this),\n GleapTranslationManager.translateText(\n \"accessToScreenSharingDenied\"\n )\n );\n }\n}\n","import {\n GleapFrameManager,\n GleapFeedbackButtonManager,\n GleapConfigManager,\n} from \"./Gleap\";\n\nexport default class GleapTranslationManager {\n overrideLanguage = \"\";\n isRTLLayout = false;\n\n // GleapTranslationManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapTranslationManager();\n }\n return this.instance;\n }\n\n /**\n * Returns the language to override the default language.\n * @returns {string}\n */\n getOverrideLanguage() {\n return this.overrideLanguage;\n }\n\n /**\n * Sets the language to override the default language.\n * @param {*} language\n */\n setOverrideLanguage(language) {\n this.overrideLanguage = language;\n }\n\n updateRTLSupport() {\n // Update RTL support.\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n\n this.isRTLLayout = false;\n if (\n flowConfig &&\n flowConfig.localizationOptions &&\n flowConfig.localizationOptions.rtl\n ) {\n this.isRTLLayout = true;\n }\n\n GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n GleapFrameManager.getInstance().updateFrameStyle();\n }\n\n getActiveLanguage() {\n var language = \"en\";\n if (typeof navigator !== \"undefined\") {\n language = navigator.language.toLowerCase();\n }\n\n // Get language from HTML lang attribute if available\n if (typeof document !== \"undefined\" && document.documentElement) {\n const htmlLang = document.documentElement.lang;\n if (htmlLang && htmlLang.trim() !== \"\") {\n language = htmlLang.toLowerCase().trim();\n }\n }\n\n if (this.overrideLanguage && this.overrideLanguage !== \"\") {\n language = this.overrideLanguage.toLowerCase();\n }\n\n return language;\n }\n\n static translateText(key) {\n if (!key) {\n return \"\";\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const staticTranslation = flowConfig.staticTranslations;\n\n if (staticTranslation && staticTranslation[key]) {\n return staticTranslation[key];\n }\n\n return key;\n }\n\n static translateTextWithVars(key, vars) {\n if (!key) {\n return \"\";\n }\n\n var template = this.translateText(key);\n if (!template) {\n return \"\";\n }\n\n return template.replace(/{(\\w+)}/g, function (_, key) {\n return vars[key];\n });\n }\n}\n","import Gleap from \"./Gleap\";\n\nexport default class GleapShortcutListener {\n shortCutListener = undefined;\n\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapShortcutListener();\n }\n return this.instance;\n }\n\n start() {\n if (this.shortCutListener) {\n return;\n }\n\n const charForEvent = function (event) {\n var code;\n\n if (event.key !== undefined) {\n code = event.key;\n } else if (event.keyIdentifier !== undefined) {\n code = event.keyIdentifier;\n } else if (event.keyCode !== undefined) {\n code = event.keyCode;\n }\n\n return code;\n };\n\n this.shortCutListener = document.addEventListener(\"keyup\", function (e) {\n const char = charForEvent(e);\n if (\n e.ctrlKey &&\n (char === \"u\" || char === \"U\" || char === 85)\n ) {\n Gleap.startFeedbackFlowWithOptions(\"bugreporting\", {\n autostartDrawing: true\n });\n }\n });\n }\n\n stop() {\n if (this.shortCutListener) {\n document.removeEventListener(\"keyup\", this.shortCutListener);\n this.shortCutListener = undefined;\n }\n }\n}","\nexport default class GleapPreFillManager {\n formPreFill = {};\n \n // GleapPreFillManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapPreFillManager();\n }\n return this.instance;\n }\n }\n ","import Gleap, {\n GleapFeedbackButtonManager,\n GleapConfigManager,\n GleapFrameManager,\n GleapSession,\n GleapAudioManager,\n GleapTranslationManager,\n GleapEventManager,\n} from \"./Gleap\";\nimport { loadFromGleapCache, saveToGleapCache } from \"./GleapHelper\";\nimport { loadIcon } from \"./UI\";\n\nexport default class GleapNotificationManager {\n notificationContainer = null;\n notifications = [];\n unreadCount = 0;\n unreadNotificationsKey = \"unread-notifications\";\n isTabActive = true;\n showNotificationBadge = true;\n\n // Keep track of the current index of news being shown\n currentNewsIndex = 0;\n\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapNotificationManager();\n }\n return this.instance;\n }\n\n constructor() {}\n\n updateTabBarNotificationCount() {\n GleapEventManager.notifyEvent(\"unread-count-changed\", this.unreadCount);\n }\n\n injectNotificationUI() {\n if (this.notificationContainer) {\n return;\n }\n\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-notification-container gleap-font\";\n document.body.appendChild(elem);\n this.notificationContainer = elem;\n\n this.updateContainerStyle();\n this.reloadNotificationsFromCache();\n }\n\n reloadNotificationsFromCache() {\n try {\n const notificationsFromCache = loadFromGleapCache(\n this.unreadNotificationsKey\n );\n if (notificationsFromCache && notificationsFromCache.length > 0) {\n let nots = notificationsFromCache.filter(\n (notification) =>\n new Date(notification.createdAt) >\n new Date(Date.now() - 1 * 60 * 60 * 1000)\n );\n\n if (nots.length > 2) {\n this.notifications = nots.splice(0, nots.length - 2);\n } else {\n this.notifications = nots;\n }\n this.renderNotifications();\n }\n } catch (exp) {}\n }\n\n setNotificationCount(unreadCount) {\n this.unreadCount = unreadCount;\n this.updateTabBarNotificationCount();\n\n // Update the badge counter.\n GleapFeedbackButtonManager.getInstance().updateNotificationBadge(\n this.unreadCount\n );\n }\n\n showNotification(notification) {\n if (!(this.notificationContainer && notification && notification.data)) {\n return;\n }\n\n const notificationsForOutbound = this.notifications.find(\n (e) => notification.outbound === e.outbound\n );\n if (!notificationsForOutbound) {\n this.notifications.push(notification);\n\n // Play sound only if it's a new one\n if (notification.sound) {\n GleapAudioManager.ping();\n }\n }\n if (this.notifications.length > 2) {\n this.notifications.shift();\n }\n\n // Persist notifications.\n saveToGleapCache(this.unreadNotificationsKey, this.notifications);\n\n this.renderNotifications();\n }\n\n /**\n * Renders notifications. For news-type notifications, only show\n * one at a time if there are multiple, with a \"Next\" button to cycle.\n * The \"Next\" button + pagination are placed within the news content area.\n *\n * - Sorts news notifications by createdAt (oldest first).\n * - Shows \"Done\" on the last news item instead of \"Next\".\n */\n renderNotifications() {\n if (!this.notificationContainer) {\n return;\n }\n\n // Clear the existing notifications in the container (UI only).\n this.clearAllNotifications(true);\n\n // Append a close button (which clears everything).\n const clearElem = document.createElement(\"div\");\n clearElem.onclick = () => {\n this.clearAllNotifications();\n // Reset the news index when everything is closed\n this.currentNewsIndex = 0;\n };\n clearElem.className = \"gleap-notification-close\";\n clearElem.innerHTML = loadIcon(\"dismiss\");\n this.notificationContainer.appendChild(clearElem);\n\n // Separate out news notifications vs. others, then sort news by date ascending\n const newsNotifications = this.notifications\n .filter((n) => n.data.news)\n .sort((a, b) => new Date(a.createdAt) - new Date(b.createdAt));\n\n const otherNotifications = this.notifications.filter((n) => !n.data.news);\n\n // --- Render NEWS notifications (with pagination) ---\n if (newsNotifications.length > 0) {\n // We only show ONE news item at a time if there's more than one\n const currentIndex =\n this.currentNewsIndex < newsNotifications.length\n ? this.currentNewsIndex\n : 0;\n const currentNews = newsNotifications[currentIndex];\n\n // Main wrapper for the news notification\n const newsElem = document.createElement(\"div\");\n newsElem.className = \"gleap-notification-item-news\";\n\n // The container that holds image + content\n const newsContainerElem = document.createElement(\"div\");\n newsContainerElem.className = \"gleap-notification-item-news-container\";\n\n // Create the image element (clickable)\n if (\n currentNews.data.coverImageUrl &&\n currentNews.data.coverImageUrl !== \"\" &&\n !currentNews.data.coverImageUrl.includes(\"NewsImagePlaceholder\")\n ) {\n const newsImageElem = document.createElement(\"img\");\n newsImageElem.className = \"gleap-notification-item-news-image\";\n newsImageElem.src = currentNews.data.coverImageUrl;\n\n // Only the image is clickable\n newsImageElem.onclick = (e) => {\n e.stopPropagation();\n this.openNews(currentNews);\n };\n newsContainerElem.appendChild(newsImageElem);\n }\n\n // The content container\n const newsContentElem = document.createElement(\"div\");\n newsContentElem.className = \"gleap-notification-item-news-content\";\n\n // Title (clickable)\n const newsTitleElem = document.createElement(\"div\");\n newsTitleElem.className = \"gleap-notification-item-news-content-title\";\n\n let content = currentNews.data.text || \"\";\n content = content.replaceAll(\n \"{{name}}\",\n GleapSession.getInstance().getName()\n );\n newsTitleElem.innerText = content;\n\n // Only the title is clickable\n newsTitleElem.onclick = (e) => {\n e.stopPropagation();\n this.openNews(currentNews);\n };\n\n newsContentElem.appendChild(newsTitleElem);\n\n // Description / Sender\n const descHTML = this.renderDescription(currentNews);\n if (descHTML) {\n const descElem = document.createElement(\"div\");\n descElem.className = \"gleap-notification-item-news-preview\";\n descElem.innerHTML = descHTML;\n newsContentElem.appendChild(descElem);\n }\n\n // If there's more than one news item, show pagination + next/done button\n if (newsNotifications.length > 1) {\n // Pagination container (still inside .gleap-notification-item-news-content)\n const paginationElem = document.createElement(\"div\");\n paginationElem.className = \"gleap-news-pagination\";\n\n // Show current item / total\n const pageIndicator = document.createElement(\"span\");\n pageIndicator.className = \"gleap-news-page-indicator\";\n pageIndicator.innerText = `${currentIndex + 1} / ${\n newsNotifications.length\n }`;\n paginationElem.appendChild(pageIndicator);\n\n // Next or Done button\n const nextBtn = document.createElement(\"button\");\n nextBtn.className = \"gleap-news-next-button\";\n\n if (currentIndex < newsNotifications.length - 1) {\n nextBtn.innerText = GleapTranslationManager.translateText(`next`);\n nextBtn.onclick = (e) => {\n e.stopPropagation(); // so we can click the button freely\n this.currentNewsIndex++;\n this.renderNotifications();\n };\n } else {\n nextBtn.innerText = GleapTranslationManager.translateText(`done`);\n nextBtn.onclick = (e) => {\n e.stopPropagation();\n this.clearAllNotifications();\n this.currentNewsIndex = 0;\n };\n }\n paginationElem.appendChild(nextBtn);\n newsContentElem.appendChild(paginationElem);\n }\n\n // Append content to container\n newsContainerElem.appendChild(newsContentElem);\n // Append container to the main element\n newsElem.appendChild(newsContainerElem);\n // Finally append to the notification container\n this.notificationContainer.appendChild(newsElem);\n }\n\n // --- Render OTHER notifications normally ---\n for (let i = 0; i < otherNotifications.length; i++) {\n const notification = otherNotifications[i];\n let content = notification.data.text || \"\";\n // Replace placeholders\n content = content.replaceAll(\n \"{{name}}\",\n GleapSession.getInstance().getName()\n );\n\n const elem = document.createElement(\"div\");\n elem.onclick = () => {\n if (notification.data.conversation) {\n Gleap.openConversation(\n notification.data.conversation.shareToken,\n true\n );\n } else if (notification.data.checklist) {\n Gleap.openChecklist(notification.data.checklist.id, true);\n } else {\n Gleap.open();\n }\n };\n\n // Check if it's a checklist type\n if (notification.data.checklist) {\n let progress = Math.round(\n (notification.data.currentStep / notification.data.totalSteps) * 100\n );\n if (progress < 100) {\n progress += 4;\n }\n\n elem.className = \"gleap-notification-item-checklist\";\n elem.innerHTML = `\n
\n
\n
\n ${notification.data.text}\n
\n
\n
\n
\n
\n \n \n \n ${notification.data.nextStepTitle}\n
\n
\n
`;\n } else {\n // Standard non-news notification\n elem.className = \"gleap-notification-item\";\n elem.innerHTML = `\n ${\n notification.data.sender &&\n notification.data.sender.profileImageUrl &&\n ``\n }\n
\n ${\n notification.data.sender\n ? `
\n ${notification.data.sender.name}\n
`\n : \"\"\n }\n
${content}
\n
`;\n }\n this.notificationContainer.appendChild(elem);\n }\n\n const hasNotifications =\n newsNotifications.length > 0 || otherNotifications.length > 0;\n if (!hasNotifications) {\n // Clear the notification container\n this.clearAllNotifications(true);\n }\n }\n\n /**\n * Helper to open news from a given notification.\n */\n openNews(notification) {\n if (notification.data.news) {\n Gleap.openNewsArticle(notification.data.news.id, true);\n } else {\n Gleap.open();\n }\n }\n\n /**\n * Helper to render preview or sender info for news notifications.\n */\n renderDescription(notification) {\n const { previewText, sender } = notification.data;\n if (previewText && previewText.length > 0) {\n return previewText;\n } else if (sender) {\n // Return HTML for the sender name + optional image\n return `\n
\n ${\n sender.profileImageUrl\n ? `\"${sender.name}\"`\n : \"\"\n }\n ${sender.name}\n
\n `;\n }\n return \"\";\n }\n\n /**\n * Clears all notifications from the container.\n *\n * @param {boolean} uiOnly - Whether to only clear the UI or also the notifications.\n */\n clearAllNotifications(uiOnly = false) {\n if (!this.notificationContainer) {\n return;\n }\n\n if (!uiOnly) {\n this.notifications = [];\n // Reset currentNewsIndex whenever we clear them out\n this.currentNewsIndex = 0;\n saveToGleapCache(this.unreadNotificationsKey, this.notifications);\n }\n\n while (this.notificationContainer.firstChild) {\n this.notificationContainer.removeChild(\n this.notificationContainer.firstChild\n );\n }\n }\n\n updateContainerStyle() {\n if (!this.notificationContainer) {\n return;\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const classLeft = \"gleap-notification-container--left\";\n const classNoButton = \"gleap-notification-container--no-button\";\n this.notificationContainer.classList.remove(classLeft);\n this.notificationContainer.classList.remove(classNoButton);\n\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_BOTTOM_LEFT\n ) {\n this.notificationContainer.classList.add(classLeft);\n }\n\n if (GleapFeedbackButtonManager.getInstance().buttonHidden === null) {\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_NONE\n ) {\n this.notificationContainer.classList.add(classNoButton);\n }\n } else {\n if (GleapFeedbackButtonManager.getInstance().buttonHidden) {\n this.notificationContainer.classList.add(classNoButton);\n }\n }\n\n this.notificationContainer.setAttribute(\n \"dir\",\n GleapTranslationManager.getInstance().isRTLLayout ? \"rtl\" : \"ltr\"\n );\n }\n}\n","import Gleap, { GleapFrameManager } from \"./Gleap\";\n\nexport default class GleapBannerManager {\n bannerUrl = \"https://outboundmedia.gleap.io\";\n bannerContainer = null;\n bannerData = null;\n\n // GleapBannerManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapBannerManager();\n }\n return this.instance;\n }\n\n constructor() {\n this.startCommunication();\n }\n\n setBannerUrl(url) {\n this.bannerUrl = url;\n }\n\n startCommunication() {\n // Add window message listener.\n window.addEventListener(\"message\", (event) => {\n if (!this.bannerUrl?.includes(event.origin)) {\n return;\n }\n\n try {\n const data = JSON.parse(event.data);\n\n if (data?.type !== \"BANNER\") {\n return;\n }\n\n if (data.name === \"banner-loaded\" && this.bannerData) {\n this.sendMessage({\n name: \"banner-data\",\n data: this.bannerData,\n });\n }\n if (data.name === \"banner-height\") {\n document.documentElement.style.setProperty(\n \"--gleap-margin-top\",\n data.data.height + \"px\"\n );\n }\n if (data.name === \"banner-data-set\") {\n document.body.classList.add(\"gleap-b-shown\");\n\n if (this.bannerData?.format === \"floating\") {\n document.body.classList.add(\"gleap-b-f\");\n }\n }\n if (data.name === \"banner-close\") {\n this.removeBannerUI();\n }\n if (data.name === \"start-conversation\") {\n Gleap.startBot(data.data?.botId);\n }\n if (data.name === \"start-custom-action\") {\n Gleap.triggerCustomAction(data.data?.action);\n }\n if (data.name === \"start-product-tour\") {\n Gleap.startProductTour(data.data?.tourId, true);\n }\n if (data.name === \"open-url\") {\n const url = data.data;\n const newTab = data.newTab ? true : false;\n GleapFrameManager.getInstance().urlHandler(url, newTab);\n }\n if (data.name === \"show-form\") {\n Gleap.startFeedbackFlow(data.data?.formId);\n }\n if (data.name === \"show-survey\") {\n Gleap.showSurvey(data.data?.formId, data.data?.surveyFormat);\n }\n if (data.name === \"show-news-article\") {\n Gleap.openNewsArticle(data.data?.articleId);\n }\n if (data.name === \"show-help-article\") {\n Gleap.openHelpCenterArticle(data.data?.articleId);\n }\n if (data.name === \"show-checklist\") {\n Gleap.startChecklist(\n data.data?.checklistId,\n true,\n data.data?.sharedKey\n );\n }\n } catch (exp) {}\n });\n }\n\n removeBannerUI() {\n if (this.bannerContainer) {\n document.body.removeChild(this.bannerContainer);\n this.bannerContainer = null;\n }\n\n document.body.classList.remove(\"gleap-b-shown\");\n document.body.classList.remove(\"gleap-b-f\");\n }\n\n /**\n * Injects the feedback button into the current DOM.\n */\n injectBannerUI(bannerData) {\n if (!document.body) {\n return false;\n }\n\n if (this.bannerContainer) {\n this.removeBannerUI();\n }\n\n this.bannerData = bannerData;\n\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-b\";\n elem.innerHTML = ``;\n document.body.appendChild(elem);\n this.bannerContainer = elem;\n }\n\n sendMessage(data) {\n try {\n const gleapBFrame = document.querySelector(\".gleap-b-frame\");\n if (gleapBFrame && gleapBFrame.contentWindow) {\n gleapBFrame.contentWindow.postMessage(\n JSON.stringify({\n ...data,\n type: \"banner\",\n }),\n \"*\"\n );\n }\n } catch (e) {}\n }\n\n showBanner(bannerData) {\n this.injectBannerUI(bannerData);\n }\n}\n","import Gleap, { GleapConfigManager, GleapFrameManager } from \"./Gleap\";\n\nexport default class GleapModalManager {\n modalUrl = \"https://outboundmedia.gleap.io/modal\";\n modalContainer = null;\n modalData = null;\n modalBackdropClickListener = null;\n\n // singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapModalManager();\n }\n return this.instance;\n }\n\n constructor() {\n this._listenForMessages();\n }\n\n setModalUrl(url) {\n this.modalUrl = url;\n }\n\n _listenForMessages() {\n window.addEventListener(\"message\", (event) => {\n if (!this.modalUrl?.includes(event.origin)) {\n return;\n }\n\n try {\n const data = JSON.parse(event.data);\n\n if (data?.type !== \"MODAL\") {\n return;\n }\n\n if (data.name === \"modal-loaded\" && this.modalData) {\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const primaryColor = flowConfig.color ? flowConfig.color : \"#485BFF\";\n const backgroundColor = flowConfig.backgroundColor\n ? flowConfig.backgroundColor\n : \"#FFFFFF\";\n\n this._postMessage({\n name: \"modal-data\",\n data: {\n ...this.modalData,\n primaryColor: primaryColor,\n backgroundColor: backgroundColor,\n },\n });\n }\n if (data.name === \"modal-height\") {\n const height = data?.data?.height;\n if (height) {\n // Set the height of the modal iframe\n const iframe =\n this.modalContainer.querySelector(\".gleap-modal-frame\");\n if (iframe) {\n iframe.style.height = `${height}px`;\n }\n }\n }\n if (data.name === \"modal-data-set\") {\n // TODO: Implement\n }\n if (data.name === \"modal-close\") {\n this.hideModal();\n }\n if (data.name === \"start-conversation\") {\n Gleap.startBot(data.data?.botId);\n }\n if (data.name === \"start-custom-action\") {\n Gleap.triggerCustomAction(data.data?.action);\n }\n if (data.name === \"start-product-tour\") {\n Gleap.startProductTour(data.data?.tourId, true);\n }\n if (data.name === \"open-url\") {\n const url = data.data;\n const newTab = data.newTab ? true : false;\n GleapFrameManager.getInstance().urlHandler(url, newTab);\n }\n if (data.name === \"show-form\") {\n Gleap.startFeedbackFlow(data.data?.formId);\n }\n if (data.name === \"show-survey\") {\n Gleap.showSurvey(data.data?.formId, data.data?.surveyFormat);\n }\n if (data.name === \"show-news-article\") {\n Gleap.openNewsArticle(data.data?.articleId);\n }\n if (data.name === \"show-help-article\") {\n Gleap.openHelpCenterArticle(data.data?.articleId);\n }\n if (data.name === \"show-checklist\") {\n Gleap.startChecklist(\n data.data?.checklistId,\n true,\n data.data?.sharedKey\n );\n }\n } catch (exp) {}\n });\n }\n\n _injectModalUI(modalData) {\n if (!document.body) return false;\n\n if (this.modalContainer) {\n this.hideModal();\n }\n\n this.modalData = modalData;\n\n const wrapper = document.createElement(\"div\");\n wrapper.className = \"gleap-modal-wrapper\";\n wrapper.innerHTML = `\n
\n
\n \n
\n `;\n document.body.appendChild(wrapper);\n this.modalContainer = wrapper;\n\n // Add on backdrop click listener\n this.modalBackdropClickListener = this.modalContainer\n .querySelector(\".gleap-modal-backdrop\")\n .addEventListener(\"click\", () => {\n if (this.modalData?.showCloseButton ?? true) {\n this.hideModal();\n }\n });\n\n // lock background scroll\n document.body.classList.add(\"gleap-modal-open\");\n }\n\n _postMessage(message) {\n try {\n const frame = this.modalContainer.querySelector(\".gleap-modal-frame\");\n if (frame?.contentWindow) {\n frame.contentWindow.postMessage(\n JSON.stringify({ ...message, type: \"modal\" }),\n this.modalUrl\n );\n }\n } catch (err) {}\n }\n\n showModal(modalData) {\n if (modalData && modalData.config) {\n this._injectModalUI(modalData.config);\n }\n }\n\n hideModal() {\n if (!this.modalContainer) return;\n\n if (this.modalBackdropClickListener) {\n this.modalContainer\n .querySelector(\".gleap-modal-backdrop\")\n .removeEventListener(\"click\", this.modalBackdropClickListener);\n }\n\n document.body.removeChild(this.modalContainer);\n this.modalContainer = null;\n document.body.classList.remove(\"gleap-modal-open\");\n }\n}\n","export default class GleapAudioManager {\n static audio;\n static settings = {\n play: true\n };\n\n static playSound(play) {\n this.settings.play = play;\n }\n\n static ping() {\n try {\n if (!this.settings.play) {\n return;\n }\n\n if (!this.audio) {\n this.audio = new Audio('https://js.gleap.io/res/ping.mp3');\n }\n\n const playPromise = this.audio.play();\n if (playPromise !== undefined) {\n playPromise.then(_ => { })\n .catch(error => { });\n }\n } catch (exp) { }\n }\n}\n","export default class GleapTagManager {\n tags = [];\n\n // GleapTagManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapTagManager();\n }\n return this.instance;\n }\n\n /**\n * Returns the tags\n * @returns {*}\n */\n getTags() {\n return this.tags;\n }\n\n /**\n * Sets the tags sent with every ticket.\n * @param {*} tags Array of strings\n */\n setTags(tags) {\n this.tags = tags;\n }\n}\n","/**\n * Returns the Tag of the element\n * @param { Object } element\n * @return { String }\n */\nexport function getID( el )\n{\n const id = el.getAttribute( 'id' );\n\n if( id !== null && id !== '')\n {\n // if the ID starts with a number or contains \":\" selecting with a hash will cause a DOMException\n return id.match(/(?:^\\d|:)/) ? `[id=\"${id}\"]` : '#' + id;\n }\n return null;\n}\n","/**\n * Get class names for an element\n *\n * @pararm { Element } el\n * @return { Array }\n */\nexport function getClasses( el )\n{\n if( !el.hasAttribute( 'class' ) )\n {\n return [];\n }\n\n try {\n let classList = Array.prototype.slice.call( el.classList )\n\n // return only the valid CSS selectors based on RegEx\n return classList.filter(item => !/^[a-z_-][a-z\\d_-]*$/i.test( item ) ? null : item );\n } catch (e) {\n let className = el.getAttribute( 'class' );\n\n // remove duplicate and leading/trailing whitespaces\n className = className.trim().replace( /\\s+/g, ' ' );\n\n // split into separate classnames\n return className.split( ' ' );\n }\n}\n\n/**\n * Returns the Class selectors of the element\n * @param { Object } element\n * @return { Array }\n */\nexport function getClassSelectors( el )\n{\n const classList = getClasses( el ).filter( Boolean );\n return classList.map( cl => `.${cl}` );\n}\n","/**\n * Recursively combinate items.\n * @param { Array } result\n * @param { Array } items\n * @param { Array } data\n * @param { Number } start\n * @param { Number } end\n * @param { Number } index\n * @param { Number } k\n */\nfunction kCombinations( result, items, data, start, end, index, k )\n{\n if( index === k )\n {\n result.push( data.slice( 0, index ).join( '' ) );\n return;\n }\n\n for( let i = start; i <= end && end - i + 1 >= k - index; ++i )\n {\n data[index] = items[i];\n kCombinations( result, items, data, i + 1, end, index + 1, k );\n }\n}\n\n/**\n * Returns all the possible selector combinations\n * @param { Array } items\n * @param { Number } k\n * @return { Array }\n */\nexport function getCombinations( items, k )\n{\n const result = [],\n n = items.length,\n data = [];\n\n for( var l = 1; l <= k; ++l )\n {\n kCombinations( result, items, data, 0, n - 1, 0, l );\n }\n\n return result;\n}\n","/**\n * Determines if the passed el is a DOM element\n */\nexport function isElement( el )\n{\n let isElem;\n\n if ( typeof HTMLElement === 'object' )\n {\n isElem = el instanceof HTMLElement;\n }\n else\n {\n isElem = !!el && ( typeof el === 'object' ) && el.nodeType === 1 && typeof el.nodeName === 'string';\n }\n return isElem;\n}\n","import { isElement } from './isElement';\n\n/**\n * Returns the selectors based on the position of the element relative to its siblings\n * @param { Object } element\n * @return { Array }\n */\nexport function getNthChild( element )\n{\n let counter = 0;\n let k;\n let sibling;\n const { parentNode } = element;\n\n if( Boolean( parentNode ) )\n {\n const { childNodes } = parentNode;\n const len = childNodes.length;\n for ( k = 0; k < len; k++ )\n {\n sibling = childNodes[ k ];\n if( isElement( sibling ) )\n {\n counter++;\n if( sibling === element )\n {\n return `:nth-child(${counter})`;\n }\n }\n }\n }\n return null;\n}\n","/**\n * Returns the Tag of the element\n * @param { Object } element\n * @return { String }\n */\nexport function getTag( el )\n{\n return el.tagName.toLowerCase().replace(/:/g, '\\\\:');\n}\n","/**\n * Checks if the selector is unique\n * @param { Object } element\n * @param { String } selector\n * @return { Array }\n */\nexport function isUnique( el, selector )\n{\n if( !Boolean( selector ) ) return false;\n const elems = el.ownerDocument.querySelectorAll( selector );\n return elems.length === 1 && elems[ 0 ] === el;\n}\n","/**\n * Expose `unique`\n */\n\nimport { getID } from './getID';\nimport { getClassSelectors } from './getClasses';\nimport { getCombinations } from './getCombinations';\nimport { getAttributes } from './getAttributes';\nimport { getNthChild } from './getNthChild';\nimport { getTag } from './getTag';\nimport { isUnique } from './isUnique';\nimport { getParents } from './getParents';\n\n\n/**\n * Returns all the selectors of the elmenet\n * @param { Object } element\n * @return { Object }\n */\nfunction getAllSelectors( el, selectors, attributesToIgnore )\n{\n const funcs =\n {\n 'Tag' : getTag,\n 'NthChild' : getNthChild,\n 'Attributes' : elem => getAttributes( elem, attributesToIgnore ),\n 'Class' : getClassSelectors,\n 'ID' : getID,\n };\n\n return selectors.reduce( ( res, next ) =>\n {\n res[ next ] = funcs[ next ]( el );\n return res;\n }, {} );\n}\n\n/**\n * Tests uniqueNess of the element inside its parent\n * @param { Object } element\n * @param { String } Selectors\n * @return { Boolean }\n */\nfunction testUniqueness( element, selector )\n{\n try {\n const { parentNode } = element;\n const elements = parentNode.querySelectorAll( selector );\n return elements.length === 1 && elements[ 0 ] === element;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tests all selectors for uniqueness and returns the first unique selector.\n * @param { Object } element\n * @param { Array } selectors\n * @return { String }\n */\nfunction getFirstUnique( element, selectors )\n{\n return selectors.find( testUniqueness.bind( null, element ) );\n}\n\n/**\n * Checks all the possible selectors of an element to find one unique and return it\n * @param { Object } element\n * @param { Array } items\n * @param { String } tag\n * @return { String }\n */\nfunction getUniqueCombination( element, items, tag )\n{\n let combinations = getCombinations( items, 3 ),\n firstUnique = getFirstUnique( element, combinations );\n\n if( Boolean( firstUnique ) )\n {\n return firstUnique;\n }\n\n if( Boolean( tag ) )\n {\n combinations = combinations.map( combination => tag + combination );\n firstUnique = getFirstUnique( element, combinations );\n\n if( Boolean( firstUnique ) )\n {\n return firstUnique;\n }\n }\n\n return null;\n}\n\n/**\n * Returns a uniqueSelector based on the passed options\n * @param { DOM } element\n * @param { Array } options\n * @return { String }\n */\nfunction getUniqueSelector( element, selectorTypes, attributesToIgnore, excludeRegex )\n{\n let foundSelector;\n\n const elementSelectors = getAllSelectors( element, selectorTypes, attributesToIgnore );\n\n if( excludeRegex && excludeRegex instanceof RegExp )\n {\n elementSelectors.ID = excludeRegex.test( elementSelectors.ID ) ? null : elementSelectors.ID;\n elementSelectors.Class = elementSelectors.Class.filter( className => !excludeRegex.test( className ) );\n }\n\n for( let selectorType of selectorTypes )\n {\n const { ID, Tag, Class : Classes, Attributes, NthChild } = elementSelectors;\n switch ( selectorType )\n {\n case 'ID' :\n if ( Boolean( ID ) && testUniqueness( element, ID ) )\n {\n return ID;\n }\n break;\n\n case 'Tag':\n if ( Boolean( Tag ) && testUniqueness( element, Tag ) )\n {\n return Tag;\n }\n break;\n\n case 'Class':\n if ( Boolean( Classes ) && Classes.length )\n {\n foundSelector = getUniqueCombination( element, Classes, Tag );\n if (foundSelector) {\n return foundSelector;\n }\n }\n break;\n\n case 'Attributes':\n if ( Boolean( Attributes ) && Attributes.length )\n {\n foundSelector = getUniqueCombination( element, Attributes, Tag );\n if ( foundSelector )\n {\n return foundSelector;\n }\n }\n break;\n\n case 'NthChild':\n if ( Boolean( NthChild ) )\n {\n return NthChild\n }\n }\n }\n return '*';\n}\n\n/**\n * Generate unique CSS selector for given DOM element\n *\n * @param {Element} el\n * @return {String}\n * @api private\n */\n\nexport default function unique( el, options={} )\n{\n const {\n selectorTypes = ['ID', 'Class', 'Tag', 'NthChild'],\n attributesToIgnore = ['id', 'class', 'length'],\n excludeRegex = null,\n } = options;\n const allSelectors = [];\n const parents = getParents( el );\n\n for( let elem of parents )\n {\n const selector = getUniqueSelector( elem, selectorTypes, attributesToIgnore, excludeRegex );\n if( Boolean( selector ) )\n {\n allSelectors.push( selector );\n }\n }\n\n const selectors = [];\n for( let it of allSelectors )\n {\n selectors.unshift( it );\n const selector = selectors.join( ' > ' );\n if( isUnique( el, selector ) )\n {\n return selector;\n }\n }\n\n return null;\n}\n","/**\n * Returns the Attribute selectors of the element\n * @param { DOM Element } element\n * @param { Array } array of attributes to ignore\n * @return { Array }\n */\nexport function getAttributes( el, attributesToIgnore = ['id', 'class', 'length'] )\n{\n const { attributes } = el;\n const attrs = [ ...attributes ];\n\n return attrs.reduce( ( sum, next ) =>\n {\n if ( ! ( attributesToIgnore.indexOf( next.nodeName ) > -1 ) )\n {\n sum.push( `[${next.nodeName}=\"${next.value}\"]` );\n }\n return sum;\n }, [] );\n}\n","import { isElement } from './isElement';\n\n/**\n * Returns all the element and all of its parents\n * @param { DOM Element }\n * @return { Array of DOM elements }\n */\nexport function getParents( el )\n{\n const parents = [];\n let currentElement = el;\n while( isElement( currentElement ) )\n {\n parents.push( currentElement );\n currentElement = currentElement.parentNode;\n }\n\n return parents;\n}\n","/**\n * Utility function to get the bounding rectangle of an element.\n * @param {HTMLElement} el - The target element.\n * @returns {Object} An object containing x, y, width, and height.\n */\nfunction getElementBounds(el) {\n const rect = el.getBoundingClientRect();\n return {\n x: window.pageXOffset + rect.left,\n y: window.pageYOffset + rect.top,\n width: el.offsetWidth,\n height: el.offsetHeight,\n };\n}\n\n/**\n * Class representing an overlay element.\n */\nclass ElementOverlay {\n /**\n * Create an ElementOverlay.\n * @param {Object} options - Configuration options.\n * @param {string} [options.className] - CSS class name for the overlay.\n * @param {Object} [options.style] - Style overrides for the overlay.\n */\n constructor(options) {\n // Create and style the overlay element.\n this.overlay = document.createElement(\"div\");\n this.overlay.className = options.className || \"_ext-element-overlay\";\n this.overlay.style.background =\n (options.style && options.style.background) || \"rgba(250, 240, 202, 0.2)\";\n this.overlay.style.borderColor =\n (options.style && options.style.borderColor) || \"#F95738\";\n this.overlay.style.borderStyle =\n (options.style && options.style.borderStyle) || \"solid\";\n this.overlay.style.borderRadius =\n (options.style && options.style.borderRadius) || \"1px\";\n this.overlay.style.borderWidth =\n (options.style && options.style.borderWidth) || \"1px\";\n this.overlay.style.boxSizing =\n (options.style && options.style.boxSizing) || \"border-box\";\n this.overlay.style.cursor =\n (options.style && options.style.cursor) || \"crosshair\";\n this.overlay.style.position =\n (options.style && options.style.position) || \"absolute\";\n this.overlay.style.zIndex =\n (options.style && options.style.zIndex) || \"2147483647\";\n this.overlay.style.margin =\n (options.style && options.style.margin) || \"0px\";\n this.overlay.style.padding =\n (options.style && options.style.padding) || \"0px\";\n\n // Create a container that will host a Shadow DOM.\n this.shadowContainer = document.createElement(\"div\");\n this.shadowContainer.className = \"_ext-element-overlay-container\";\n this.shadowContainer.style.position = \"absolute\";\n this.shadowContainer.style.top = \"0px\";\n this.shadowContainer.style.left = \"0px\";\n this.shadowContainer.style.margin = \"0px\";\n this.shadowContainer.style.padding = \"0px\";\n this.shadowRoot = this.shadowContainer.attachShadow({ mode: \"open\" });\n }\n\n /**\n * Adds the overlay to the DOM.\n * @param {Node} parent - The parent element.\n * @param {boolean} useShadowDOM - Whether to use Shadow DOM.\n */\n addToDOM(parent, useShadowDOM) {\n this.usingShadowDOM = useShadowDOM;\n if (useShadowDOM) {\n parent.insertBefore(this.shadowContainer, parent.firstChild);\n this.shadowRoot.appendChild(this.overlay);\n } else {\n parent.appendChild(this.overlay);\n }\n }\n\n /**\n * Removes the overlay from the DOM.\n */\n removeFromDOM() {\n this.setBounds({ x: 0, y: 0, width: 0, height: 0 });\n if (this.overlay.remove) {\n this.overlay.remove();\n } else if (this.overlay.parentNode) {\n this.overlay.parentNode.removeChild(this.overlay);\n }\n if (this.usingShadowDOM) {\n if (this.shadowContainer.remove) {\n this.shadowContainer.remove();\n } else if (this.shadowContainer.parentNode) {\n this.shadowContainer.parentNode.removeChild(this.shadowContainer);\n }\n }\n }\n\n /**\n * Enables pointer events on the overlay.\n */\n captureCursor() {\n this.overlay.style.pointerEvents = \"auto\";\n }\n\n /**\n * Disables pointer events on the overlay.\n */\n ignoreCursor() {\n this.overlay.style.pointerEvents = \"none\";\n }\n\n /**\n * Sets the position and size of the overlay.\n * @param {Object} bounds - The bounding box.\n * @param {number} bounds.x - The x-coordinate.\n * @param {number} bounds.y - The y-coordinate.\n * @param {number} bounds.width - The width.\n * @param {number} bounds.height - The height.\n */\n setBounds(bounds) {\n const { x, y, width, height } = bounds;\n this.overlay.style.left = x + \"px\";\n this.overlay.style.top = y + \"px\";\n this.overlay.style.width = width + \"px\";\n this.overlay.style.height = height + \"px\";\n }\n}\n\n/**\n * Class representing an element picker that uses the overlay.\n */\nclass ElementPicker {\n /**\n * Create an ElementPicker.\n * @param {Object} [overlayOptions] - Options to pass to ElementOverlay.\n */\n constructor(overlayOptions) {\n this.active = false;\n this.overlay = new ElementOverlay(overlayOptions || {});\n this.handleMouseMove = this.handleMouseMove.bind(this);\n this.handleClick = this.handleClick.bind(this);\n this.tick = this.tick.bind(this);\n }\n\n /**\n * Starts the element picking process.\n * @param {Object} options - Picker options.\n * @param {Node} [options.parentElement] - Parent element to attach the overlay.\n * @param {boolean} [options.useShadowDOM=true] - Whether to use Shadow DOM.\n * @param {Function} [options.onClick] - Callback invoked on click.\n * @param {Function} [options.onHover] - Callback invoked on hover.\n * @param {Function} [options.elementFilter] - Function to filter elements.\n * @returns {boolean} True if started successfully, false if already active.\n */\n start(options) {\n if (this.active) {\n return false;\n }\n this.active = true;\n this.options = options;\n\n document.addEventListener(\"mousemove\", this.handleMouseMove, true);\n document.addEventListener(\"click\", this.handleClick, true);\n\n const parentElement = options.parentElement || document.body;\n const useShadowDOM =\n options.useShadowDOM !== undefined ? options.useShadowDOM : true;\n this.overlay.addToDOM(parentElement, useShadowDOM);\n this.tick();\n\n return true;\n }\n\n /**\n * Stops the element picking process.\n */\n stop() {\n this.active = false;\n this.options = undefined;\n\n document.removeEventListener(\"mousemove\", this.handleMouseMove, true);\n document.removeEventListener(\"click\", this.handleClick, true);\n\n this.overlay.removeFromDOM();\n this.target = undefined;\n this.mouseX = undefined;\n this.mouseY = undefined;\n\n if (this.tickReq) {\n window.cancelAnimationFrame(this.tickReq);\n }\n }\n\n /**\n * Handles mouse move events.\n * @param {MouseEvent} event - The mousemove event.\n */\n handleMouseMove(event) {\n this.mouseX = event.clientX;\n this.mouseY = event.clientY;\n }\n\n /**\n * Handles click events.\n * @param {MouseEvent} event - The click event.\n */\n handleClick(event) {\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n\n if (this.target && this.options && this.options.onClick) {\n this.options.onClick(this.target);\n }\n }\n\n /**\n * The tick function that continuously updates the target element.\n */\n tick() {\n this.updateTarget();\n this.tickReq = window.requestAnimationFrame(this.tick);\n }\n\n /**\n * Updates the target element based on the current mouse position.\n */\n updateTarget() {\n if (this.mouseX === undefined || this.mouseY === undefined) {\n return;\n }\n\n // Temporarily ignore the overlay's pointer events to detect the underlying element.\n this.overlay.ignoreCursor();\n const elAtCursor = document.elementFromPoint(this.mouseX, this.mouseY);\n const newTarget = elAtCursor;\n this.overlay.captureCursor();\n\n // If the target hasn't changed, do nothing.\n if (!newTarget || newTarget === this.target) {\n return;\n }\n\n // If an element filter is provided and the new target doesn't match, clear the target.\n if (this.options && this.options.elementFilter) {\n if (!this.options.elementFilter(newTarget)) {\n this.target = undefined;\n this.overlay.setBounds({ x: 0, y: 0, width: 0, height: 0 });\n return;\n }\n }\n\n this.target = newTarget;\n const bounds = getElementBounds(newTarget);\n this.overlay.setBounds(bounds);\n\n if (this.options && this.options.onHover) {\n this.options.onHover(newTarget);\n }\n }\n}\n\nexport default ElementPicker;\n","import unique from \"./unique-selector/src/unique-selector\";\nimport ElementPicker from \"./ElementPicker\";\n\nclass GleapAdminHelper {\n picker = null;\n onElementPicked = null;\n\n stopPicker = () => {\n if (this.picker) {\n this.picker.stop();\n this.picker = null;\n return;\n }\n };\n\n startPicker = () => {\n this.stopPicker();\n var self = this;\n\n const style = {\n borderColor: \"#2142E7\",\n background: \"transparent\",\n borderWidth: \"4px\",\n borderRadius: \"5px\",\n };\n this.picker = new ElementPicker({ style });\n this.picker.start({\n useShadowDOM: false,\n onClick: (el) => {\n try {\n let selector;\n const tourId = el.getAttribute(\"data-gleap-tour\");\n if (tourId) {\n selector = `[data-gleap-tour=\"${tourId}\"]`;\n } else {\n selector = unique(el);\n }\n\n self.onElementPicked && self.onElementPicked(selector);\n } catch (e) {\n console.error(\"Error while getting unique selector\", e);\n }\n },\n elementFilter: (el) => {\n if (\n el.classList.contains(\"gleap-admin-collapse-ui\") ||\n el.closest(\".gleap-admin-collapse-ui\")\n ) {\n return false;\n }\n return true;\n },\n });\n };\n\n setMode = (mode) => {\n this.mode = mode;\n if (mode === \"navigate\") {\n this.stopPicker();\n }\n if (mode === \"picker\") {\n this.startPicker();\n }\n };\n}\n\nexport default GleapAdminHelper;\n","import { loadIcon } from \"./UI\";\nimport GleapAdminHelper from \"./GleapAdminHelper\";\nimport { GleapProductTours } from \"./Gleap\";\n\nexport default class GleapAdminManager {\n libraryInstance = null;\n lastUrl = undefined;\n injectedFrame = false;\n gleapFrameContainer = null;\n gleapCollapseUI = null;\n injectedCollapseUI = false;\n gleapFrame = null;\n configData = null;\n adminHelper = null;\n status = \"navigate\";\n\n // GleapAdminManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapAdminManager();\n }\n\n return this.instance;\n }\n\n logCurrentPage() {\n const currentUrl = window.location.href;\n if (currentUrl && currentUrl !== this.lastUrl) {\n this.lastUrl = currentUrl;\n\n this.sendMessageToTourBuilder({\n name: \"page-changed\",\n data: {\n page: currentUrl,\n },\n });\n }\n }\n\n startPageListener() {\n const self = this;\n setInterval(function () {\n self.logCurrentPage();\n }, 1000);\n }\n\n initAdminHelper() {\n const self = this;\n\n // Disable product tours.\n GleapProductTours.getInstance().disable();\n\n self.adminHelper = new GleapAdminHelper();\n\n try {\n self.adminHelper.onElementPicked = (selector) => {\n self.toggleCollapseUI(true);\n self.sendMessageToTourBuilder({\n name: \"element-picked\",\n data: {\n selector,\n },\n });\n };\n } catch (e) {\n console.log(e);\n }\n\n self.injectFrame();\n self.injectCollapseUI();\n self.setFrameHeight(\"loading\");\n }\n\n setFrameHeight(state) {\n if (this.gleapFrameContainer) {\n var height = \"\";\n if (state === \"picker\" || state === \"navigate\") {\n height = \"65px\";\n } else if (state === \"editor\") {\n height = \"100vh\";\n } else {\n height = \"0px\";\n }\n this.gleapFrameContainer.style.height = height;\n }\n }\n\n start() {\n if (typeof window === \"undefined\") {\n return;\n }\n\n if (window.gleapAdminDisabled) {\n return;\n }\n\n var self = this;\n\n // Add window message listener.\n window.addEventListener(\"message\", (event) => {\n if (event.origin !== \"https://app.gleap.io\") {\n return;\n }\n\n try {\n const data = JSON.parse(event.data);\n\n if (data.type === \"admin\") {\n if (data.name === \"load\") {\n self.configData = data.data;\n self.initAdminHelper();\n }\n\n if (data.name === \"smartlink-search-result\") {\n this.sendMessageToTourBuilder({\n name: \"smartlink-search-result\",\n data: data.data,\n });\n }\n\n if (data.name === \"translate-complete\") {\n this.sendMessageToTourBuilder({\n name: \"translate-complete\",\n data: data.data,\n });\n }\n }\n\n if (data.type === \"tourbuilder\") {\n if (data.name === \"loaddata\") {\n this.sendMessageToTourBuilder({\n name: \"data\",\n data: {\n ...self.configData,\n currentPage: window.location.href,\n },\n });\n }\n\n if (data.name === \"highlight-element\") {\n // Cleanup.\n document\n .querySelectorAll(\".gleap-admin-highlight\")\n .forEach((el) => {\n el.classList.remove(\"gleap-admin-highlight\");\n });\n\n // Find the element and highlight it.\n if (data?.data?.selector) {\n const element = document.querySelector(data?.data?.selector);\n if (element) {\n element.classList.add(\"gleap-admin-highlight\");\n }\n }\n }\n\n if (data.name === \"smartlink-search\") {\n this.sendMessage({\n name: \"smartlink-search\",\n data: data.data,\n });\n }\n\n if (data.name === \"product-tour-started\") {\n this.sendMessage({\n name: \"product-tour-started\",\n data: data.data,\n });\n }\n\n if (data.name === \"translate\") {\n this.sendMessage({\n name: \"translate\",\n data: data.data,\n });\n }\n\n if (data.name === \"save\") {\n this.sendMessage({\n name: \"save\",\n data: data.data,\n });\n }\n\n if (data.name === \"update-steps\") {\n this.sendMessage({\n name: \"update-steps\",\n data: data.data,\n });\n }\n\n if (data.name === \"click\") {\n try {\n document.querySelector(data.data.selector).click();\n } catch (e) {\n console.log(e);\n }\n }\n\n if (data.name === \"status-changed\") {\n self.status = data.data;\n this.setFrameHeight(self.status);\n self.adminHelper.stopPicker();\n\n if (self.status === \"picker\") {\n self.adminHelper.startPicker();\n }\n }\n }\n } catch (exp) {}\n });\n\n this.sendMessage({\n name: \"init\",\n });\n\n this.startPageListener();\n }\n\n sendMessage(data) {\n try {\n if (window && window.opener) {\n window.opener.postMessage(\n JSON.stringify({\n ...data,\n type: \"admin\",\n }),\n \"*\"\n );\n }\n } catch (e) {}\n }\n\n sendMessageToTourBuilder(data) {\n try {\n if (this.gleapFrame && this.gleapFrame.contentWindow) {\n this.gleapFrame.contentWindow.postMessage(\n JSON.stringify({\n ...data,\n type: \"tourbuilder\",\n }),\n \"*\"\n );\n }\n } catch (e) {}\n }\n\n toggleCollapseUI = (onlyIfActive = false) => {\n const COLLAPSE_UI_ACTIVE_CLASS = \"gleap-admin-collapse-ui-active\";\n const FRAME_CONTAINER_ACTIVE_CLASS = \"gleap-admin-frame-container-active\";\n\n // Helper function to check if an element has an active class\n const isActive = (element, activeClass) =>\n element && element.classList.contains(activeClass);\n\n // Check if onlyIfActive is true and if the UI elements are already inactive\n if (\n onlyIfActive &&\n (!isActive(this.gleapCollapseUI, COLLAPSE_UI_ACTIVE_CLASS) ||\n !isActive(this.gleapFrameContainer, FRAME_CONTAINER_ACTIVE_CLASS))\n ) {\n return; // Return early without toggling the UI\n }\n\n // Toggle the UI elements\n if (this.gleapCollapseUI) {\n this.gleapCollapseUI.classList.toggle(COLLAPSE_UI_ACTIVE_CLASS);\n }\n if (this.gleapFrameContainer) {\n this.gleapFrameContainer.classList.toggle(FRAME_CONTAINER_ACTIVE_CLASS);\n }\n };\n\n injectCollapseUI = () => {\n if (this.injectedCollapseUI) {\n return;\n }\n this.injectedCollapseUI = true;\n\n // Inject widget HTML.\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-admin-collapse-ui\";\n elem.innerHTML = `
\n ${loadIcon(\"arrowdown\")}\n
`;\n document.body.appendChild(elem);\n\n this.gleapCollapseUI = elem;\n\n elem.addEventListener(\"click\", (e) => {\n e.stopImmediatePropagation();\n e.stopPropagation();\n e.preventDefault();\n\n this.toggleCollapseUI();\n });\n };\n\n injectFrame = () => {\n if (this.injectedFrame) {\n return;\n }\n this.injectedFrame = true;\n\n // Inject widget HTML.\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-admin-frame-container\";\n elem.innerHTML = ``;\n document.body.appendChild(elem);\n\n this.gleapFrameContainer = elem;\n this.gleapFrame = document.querySelector(\".gleap-admin-frame\");\n };\n}\n","const GleapTours = (function () {\n \"use strict\";\n let currentConfig = {};\n function configure(config = {}) {\n currentConfig = {\n animate: true,\n allowClose: true,\n overlayOpacity: 0.7,\n smoothScroll: false,\n disableActiveInteraction: false,\n showProgress: false,\n stagePadding: 10,\n stageRadius: 5,\n popoverOffset: 10,\n showButtons: [\"next\", \"previous\", \"close\"],\n disableButtons: [],\n overlayColor: \"#000\",\n ...config,\n };\n }\n function getConfig(key) {\n return key ? currentConfig[key] : currentConfig;\n }\n function easeInOutQuad(elapsed, initialValue, amountOfChange, duration) {\n if ((elapsed /= duration / 2) < 1) {\n return (amountOfChange / 2) * elapsed * elapsed + initialValue;\n }\n return (\n (-amountOfChange / 2) * (--elapsed * (elapsed - 2) - 1) + initialValue\n );\n }\n function getFocusableElements(parentEls) {\n const focusableQuery =\n 'a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type=\"text\"]:not([disabled]), input[type=\"radio\"]:not([disabled]), input[type=\"checkbox\"]:not([disabled]), select:not([disabled])';\n return parentEls\n .flatMap((parentEl) => {\n const isParentFocusable = parentEl.matches(focusableQuery);\n const focusableEls = Array.from(\n parentEl.querySelectorAll(focusableQuery)\n );\n return [...(isParentFocusable ? [parentEl] : []), ...focusableEls];\n })\n .filter((el) => {\n return (\n getComputedStyle(el).pointerEvents !== \"none\" && isElementVisible(el)\n );\n });\n }\n function bringInView(element) {\n if (!element || isElementInView(element)) {\n return;\n }\n const shouldSmoothScroll = getConfig(\"smoothScroll\");\n element.scrollIntoView({\n // Removing the smooth scrolling for elements which exist inside the scrollable parent\n // This was causing the highlight to not properly render\n behavior:\n !shouldSmoothScroll || hasScrollableParent(element) ? \"auto\" : \"smooth\",\n inline: \"center\",\n block: \"center\",\n });\n }\n function hasScrollableParent(e) {\n if (!e || !e.parentElement) {\n return;\n }\n const parent = e.parentElement;\n return parent.scrollHeight > parent.clientHeight;\n }\n function isElementInView(element) {\n const rect = element.getBoundingClientRect();\n return (\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <=\n (window.innerHeight || document.documentElement.clientHeight) &&\n rect.right <= (window.innerWidth || document.documentElement.clientWidth)\n );\n }\n function isElementVisible(el) {\n return !!(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\n }\n let currentState = {};\n function setState(key, value) {\n currentState[key] = value;\n }\n function getState(key) {\n return key ? currentState[key] : currentState;\n }\n function resetState() {\n currentState = {};\n }\n let registeredListeners = {};\n function listen(hook, callback) {\n registeredListeners[hook] = callback;\n }\n function emit(hook) {\n var _a;\n (_a = registeredListeners[hook]) == null\n ? void 0\n : _a.call(registeredListeners);\n }\n function destroyEmitter() {\n registeredListeners = {};\n }\n function transitionStage(elapsed, duration, from, to) {\n let activeStagePosition = getState(\"__activeStagePosition\");\n const fromDefinition = activeStagePosition\n ? activeStagePosition\n : from.getBoundingClientRect();\n const toDefinition = to.getBoundingClientRect();\n const x = easeInOutQuad(\n elapsed,\n fromDefinition.x,\n toDefinition.x - fromDefinition.x,\n duration\n );\n const y = easeInOutQuad(\n elapsed,\n fromDefinition.y,\n toDefinition.y - fromDefinition.y,\n duration\n );\n const width = easeInOutQuad(\n elapsed,\n fromDefinition.width,\n toDefinition.width - fromDefinition.width,\n duration\n );\n const height = easeInOutQuad(\n elapsed,\n fromDefinition.height,\n toDefinition.height - fromDefinition.height,\n duration\n );\n activeStagePosition = {\n x,\n y,\n width,\n height,\n };\n renderOverlay(activeStagePosition);\n setState(\"__activeStagePosition\", activeStagePosition);\n }\n function trackActiveElement(element) {\n if (!element) {\n return;\n }\n const definition = element.getBoundingClientRect();\n const activeStagePosition = {\n x: definition.x,\n y: definition.y,\n width: definition.width,\n height: definition.height,\n };\n setState(\"__activeStagePosition\", activeStagePosition);\n renderOverlay(activeStagePosition);\n }\n function refreshOverlay() {\n const activeStagePosition = getState(\"__activeStagePosition\");\n const overlaySvg = getState(\"__overlaySvg\");\n if (!activeStagePosition) {\n return;\n }\n if (!overlaySvg) {\n console.warn(\"No stage svg found.\");\n return;\n }\n const windowX = window.innerWidth;\n const windowY = window.innerHeight;\n overlaySvg.setAttribute(\"viewBox\", `0 0 ${windowX} ${windowY}`);\n }\n function mountOverlay(stagePosition) {\n const overlaySvg = createOverlaySvg(stagePosition);\n document.body.appendChild(overlaySvg);\n onDriverClick(overlaySvg, (e) => {\n const target = e.target;\n if (target.tagName !== \"path\") {\n return;\n }\n emit(\"overlayClick\");\n });\n setState(\"__overlaySvg\", overlaySvg);\n }\n function renderOverlay(stagePosition) {\n const overlaySvg = getState(\"__overlaySvg\");\n if (!overlaySvg) {\n mountOverlay(stagePosition);\n return;\n }\n const pathElement = overlaySvg.firstElementChild;\n if ((pathElement == null ? void 0 : pathElement.tagName) !== \"path\") {\n throw new Error(\"no path element found in stage svg\");\n }\n pathElement.setAttribute(\"d\", generateStageSvgPathString(stagePosition));\n }\n function createOverlaySvg(stage) {\n const windowX = window.innerWidth;\n const windowY = window.innerHeight;\n const svg = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n svg.classList.add(\"gleap-tour-overlay\", \"gleap-tour-overlay-animated\");\n svg.setAttribute(\"viewBox\", `0 0 ${windowX} ${windowY}`);\n svg.setAttribute(\"xmlSpace\", \"preserve\");\n svg.setAttribute(\"xmlnsXlink\", \"http://www.w3.org/1999/xlink\");\n svg.setAttribute(\"version\", \"1.1\");\n svg.setAttribute(\"preserveAspectRatio\", \"xMinYMin slice\");\n svg.style.fillRule = \"evenodd\";\n svg.style.clipRule = \"evenodd\";\n svg.style.strokeLinejoin = \"round\";\n svg.style.strokeMiterlimit = \"2\";\n svg.style.zIndex = \"10000\";\n svg.style.position = \"fixed\";\n svg.style.top = \"0\";\n svg.style.left = \"0\";\n svg.style.width = \"100%\";\n svg.style.height = \"100%\";\n const stagePath = document.createElementNS(\n \"http://www.w3.org/2000/svg\",\n \"path\"\n );\n stagePath.setAttribute(\"d\", generateStageSvgPathString(stage));\n stagePath.style.fill = getConfig(\"overlayColor\") || \"rgb(0,0,0)\";\n stagePath.style.opacity = `${getConfig(\"overlayOpacity\")}`;\n stagePath.style.pointerEvents = \"auto\";\n stagePath.style.cursor = \"auto\";\n svg.appendChild(stagePath);\n return svg;\n }\n function generateStageSvgPathString(stage) {\n const windowX = window.innerWidth;\n const windowY = window.innerHeight;\n const stagePadding = getConfig(\"stagePadding\") || 0;\n const stageRadius = getConfig(\"stageRadius\") || 0;\n const stageWidth = stage.width + stagePadding * 2;\n const stageHeight = stage.height + stagePadding * 2;\n const limitedRadius = Math.min(\n stageRadius,\n stageWidth / 2,\n stageHeight / 2\n );\n const normalizedRadius = Math.floor(Math.max(limitedRadius, 0));\n const highlightBoxX = stage.x - stagePadding + normalizedRadius;\n const highlightBoxY = stage.y - stagePadding;\n const highlightBoxWidth = stageWidth - normalizedRadius * 2;\n const highlightBoxHeight = stageHeight - normalizedRadius * 2;\n return `M${windowX},0L0,0L0,${windowY}L${windowX},${windowY}L${windowX},0Z\n M${highlightBoxX},${highlightBoxY} h${highlightBoxWidth} a${normalizedRadius},${normalizedRadius} 0 0 1 ${normalizedRadius},${normalizedRadius} v${highlightBoxHeight} a${normalizedRadius},${normalizedRadius} 0 0 1 -${normalizedRadius},${normalizedRadius} h-${highlightBoxWidth} a${normalizedRadius},${normalizedRadius} 0 0 1 -${normalizedRadius},-${normalizedRadius} v-${highlightBoxHeight} a${normalizedRadius},${normalizedRadius} 0 0 1 ${normalizedRadius},-${normalizedRadius} z`;\n }\n function destroyOverlay() {\n const overlaySvg = getState(\"__overlaySvg\");\n if (overlaySvg) {\n overlaySvg.remove();\n }\n }\n function mountDummyElement() {\n const existingDummy = document.getElementById(\"gleap-tour-dummy-element\");\n if (existingDummy) {\n return existingDummy;\n }\n let element = document.createElement(\"div\");\n element.id = \"gleap-tour-dummy-element\";\n element.style.width = \"0\";\n element.style.height = \"0\";\n element.style.pointerEvents = \"none\";\n element.style.opacity = \"0\";\n element.style.position = \"fixed\";\n element.style.top = \"50%\";\n element.style.left = \"50%\";\n document.body.appendChild(element);\n return element;\n }\n function highlight(step, attemptTime = 5000) {\n const { element } = step;\n let elemObj = element;\n if (typeof elemObj === \"string\") {\n try {\n elemObj = document.querySelector(element);\n } catch (error) {\n // This will escape colons within IDs but not affect pseudo-classes or other valid uses of colons\n let refactoredElement = element.replace(\n /(#[^#\\s]+)/g,\n function (match) {\n return match.replace(/:/g, \"\\\\:\");\n }\n );\n elemObj = document.querySelector(refactoredElement);\n }\n }\n if (element && !elemObj && attemptTime >= 0) {\n setTimeout(() => {\n hidePopover();\n highlight(step, attemptTime - 100);\n }, 100);\n\n return;\n }\n\n if (!elemObj) {\n if (step.mode === \"INPUT\" || step.mode === \"CLICK\") {\n return getConfig(\"onElementNotFound\")(step);\n }\n }\n\n if (!elemObj) {\n elemObj = mountDummyElement();\n }\n\n transferHighlight(elemObj, step);\n }\n function refreshActiveHighlight() {\n const activeHighlight = getState(\"__activeElement\");\n const activeStep = getState(\"__activeStep\");\n if (!activeHighlight) {\n return;\n }\n trackActiveElement(activeHighlight);\n refreshOverlay();\n repositionPopover(activeHighlight, activeStep);\n }\n function transferHighlight(toElement, toStep) {\n const duration = 400;\n const start = Date.now();\n const fromStep = getState(\"__activeStep\");\n const fromElement = getState(\"__activeElement\") || toElement;\n const isFirstHighlight = !fromElement || fromElement === toElement;\n const isToDummyElement = toElement.id === \"gleap-tour-dummy-element\";\n const isFromDummyElement = fromElement.id === \"gleap-tour-dummy-element\";\n const isAnimatedTour = getConfig(\"animate\");\n const highlightStartedHook =\n toStep.onHighlightStarted || getConfig(\"onHighlightStarted\");\n const highlightedHook =\n (toStep == null ? void 0 : toStep.onHighlighted) ||\n getConfig(\"onHighlighted\");\n const deselectedHook =\n (fromStep == null ? void 0 : fromStep.onDeselected) ||\n getConfig(\"onDeselected\");\n const config = getConfig();\n const state = getState();\n if (!isFirstHighlight && deselectedHook) {\n deselectedHook(isFromDummyElement ? void 0 : fromElement, fromStep, {\n config,\n state,\n });\n }\n if (highlightStartedHook) {\n highlightStartedHook(isToDummyElement ? void 0 : toElement, toStep, {\n config,\n state,\n });\n }\n const hasDelayedPopover = !isFirstHighlight && isAnimatedTour;\n let isPopoverRendered = false;\n hidePopover();\n setState(\"previousStep\", fromStep);\n setState(\"previousElement\", fromElement);\n setState(\"activeStep\", toStep);\n setState(\"activeElement\", toElement);\n const animate = () => {\n const transitionCallback = getState(\"__transitionCallback\");\n if (transitionCallback !== animate) {\n return;\n }\n const elapsed = Date.now() - start;\n const timeRemaining = duration - elapsed;\n const isHalfwayThrough = timeRemaining <= duration / 2;\n if (\n toStep.popover &&\n isHalfwayThrough &&\n !isPopoverRendered &&\n hasDelayedPopover\n ) {\n renderPopover(toElement, toStep);\n isPopoverRendered = true;\n }\n if (getConfig(\"animate\") && elapsed < duration) {\n transitionStage(elapsed, duration, fromElement, toElement);\n } else {\n trackActiveElement(toElement);\n if (highlightedHook) {\n highlightedHook(isToDummyElement ? void 0 : toElement, toStep, {\n config: getConfig(),\n state: getState(),\n });\n }\n setState(\"__transitionCallback\", void 0);\n setState(\"__previousStep\", fromStep);\n setState(\"__previousElement\", fromElement);\n setState(\"__activeStep\", toStep);\n setState(\"__activeElement\", toElement);\n }\n window.requestAnimationFrame(animate);\n };\n setState(\"__transitionCallback\", animate);\n window.requestAnimationFrame(animate);\n bringInView(toElement);\n if (!hasDelayedPopover && toStep.popover) {\n renderPopover(toElement, toStep);\n }\n fromElement.classList.remove(\n \"gleap-tour-active-element\",\n \"gleap-tour-no-interaction\"\n );\n fromElement.removeAttribute(\"aria-haspopup\");\n fromElement.removeAttribute(\"aria-expanded\");\n fromElement.removeAttribute(\"aria-controls\");\n const disableActiveInteraction =\n toStep.disableActiveInteraction ??\n getConfig(\"disableActiveInteraction\") ??\n false;\n if (disableActiveInteraction) {\n toElement.classList.add(\"gleap-tour-no-interaction\");\n }\n toElement.classList.add(\"gleap-tour-active-element\");\n toElement.setAttribute(\"aria-haspopup\", \"dialog\");\n toElement.setAttribute(\"aria-expanded\", \"true\");\n toElement.setAttribute(\"aria-controls\", \"gleap-tour-popover-content\");\n }\n function destroyHighlight() {\n var _a;\n (_a = document.getElementById(\"gleap-tour-dummy-element\")) == null\n ? void 0\n : _a.remove();\n document\n .querySelectorAll(\".gleap-tour-active-element\")\n .forEach((element) => {\n element.classList.remove(\n \"gleap-tour-active-element\",\n \"gleap-tour-no-interaction\"\n );\n element.removeAttribute(\"aria-haspopup\");\n element.removeAttribute(\"aria-expanded\");\n element.removeAttribute(\"aria-controls\");\n });\n }\n function requireRefresh() {\n const resizeTimeout = getState(\"__resizeTimeout\");\n if (resizeTimeout) {\n window.cancelAnimationFrame(resizeTimeout);\n }\n setState(\n \"__resizeTimeout\",\n window.requestAnimationFrame(refreshActiveHighlight)\n );\n }\n function trapFocus(e) {\n var _a;\n const isActivated = getState(\"isInitialized\");\n if (!isActivated) {\n return;\n }\n const isTabKey = e.key === \"Tab\" || e.keyCode === 9;\n if (!isTabKey) {\n return;\n }\n const activeElement = getState(\"__activeElement\");\n const popoverEl = (_a = getState(\"popover\")) == null ? void 0 : _a.wrapper;\n const focusableEls = getFocusableElements([\n ...(popoverEl ? [popoverEl] : []),\n ...(activeElement ? [activeElement] : []),\n ]);\n const firstFocusableEl = focusableEls[0];\n const lastFocusableEl = focusableEls[focusableEls.length - 1];\n e.preventDefault();\n if (e.shiftKey) {\n const previousFocusableEl =\n focusableEls[focusableEls.indexOf(document.activeElement) - 1] ||\n lastFocusableEl;\n previousFocusableEl == null ? void 0 : previousFocusableEl.focus();\n } else {\n const nextFocusableEl =\n focusableEls[focusableEls.indexOf(document.activeElement) + 1] ||\n firstFocusableEl;\n nextFocusableEl == null ? void 0 : nextFocusableEl.focus();\n }\n }\n function onKeyup(e) {\n var _a;\n const allowKeyboardControl =\n (_a = getConfig(\"allowKeyboardControl\")) != null ? _a : true;\n if (!allowKeyboardControl) {\n return;\n }\n if (e.key === \"Escape\") {\n emit(\"escapePress\");\n } else if (e.key === \"ArrowRight\") {\n emit(\"arrowRightPress\");\n } else if (e.key === \"ArrowLeft\") {\n emit(\"arrowLeftPress\");\n }\n }\n function onDriverClick(element, listener, shouldPreventDefault) {\n const listenerWrapper = (e, listener2) => {\n const target = e.target;\n if (!element.contains(target)) {\n return;\n }\n if (!shouldPreventDefault || shouldPreventDefault(target)) {\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n listener2 == null ? void 0 : listener2(e);\n };\n const useCapture = true;\n document.addEventListener(\"pointerdown\", listenerWrapper, useCapture);\n document.addEventListener(\"mousedown\", listenerWrapper, useCapture);\n document.addEventListener(\"pointerup\", listenerWrapper, useCapture);\n document.addEventListener(\"mouseup\", listenerWrapper, useCapture);\n document.addEventListener(\n \"click\",\n (e) => {\n listenerWrapper(e, listener);\n },\n useCapture\n );\n }\n function initEvents() {\n window.addEventListener(\"keyup\", onKeyup, false);\n window.addEventListener(\"keydown\", trapFocus, false);\n window.addEventListener(\"resize\", requireRefresh);\n window.addEventListener(\"scroll\", requireRefresh);\n }\n function destroyEvents() {\n window.removeEventListener(\"keyup\", onKeyup);\n window.removeEventListener(\"resize\", requireRefresh);\n window.removeEventListener(\"scroll\", requireRefresh);\n }\n function hidePopover() {\n const popover = getState(\"popover\");\n if (!popover) {\n return;\n }\n popover.wrapper.style.display = \"none\";\n }\n function renderPopover(element, step) {\n var _a, _b;\n let popover = getState(\"popover\");\n if (popover) {\n document.body.removeChild(popover.wrapper);\n }\n popover = createPopover();\n document.body.appendChild(popover.wrapper);\n const {\n title,\n description,\n showButtons,\n disableButtons,\n showProgress,\n nextBtnText = getConfig(\"nextBtnText\") || \"Next\",\n prevBtnText = getConfig(\"prevBtnText\") || \"Previous\",\n progressText = getConfig(\"progressText\") || \"{current} of {total}\",\n } = step.popover || {};\n popover.nextButton.innerHTML = nextBtnText;\n popover.previousButton.innerHTML = prevBtnText;\n popover.progress.innerHTML = progressText;\n if (title) {\n popover.title.innerHTML = title;\n popover.title.style.display = \"block\";\n } else {\n popover.title.style.display = \"none\";\n }\n if (description) {\n popover.description.innerHTML = description;\n popover.description.style.display = \"block\";\n } else {\n popover.description.style.display = \"none\";\n }\n const showButtonsConfig = showButtons || getConfig(\"showButtons\");\n const showProgressConfig =\n showProgress || getConfig(\"showProgress\") || false;\n const showFooter =\n (showButtonsConfig == null\n ? void 0\n : showButtonsConfig.includes(\"next\")) ||\n (showButtonsConfig == null\n ? void 0\n : showButtonsConfig.includes(\"previous\")) ||\n showProgressConfig;\n popover.closeButton.style.display = showButtonsConfig.includes(\"close\")\n ? \"block\"\n : \"none\";\n if (showFooter) {\n popover.footer.style.display = \"flex\";\n popover.progress.style.display = showProgressConfig ? \"block\" : \"none\";\n popover.nextButton.style.display = showButtonsConfig.includes(\"next\")\n ? \"block\"\n : \"none\";\n popover.previousButton.style.display = showButtonsConfig.includes(\n \"previous\"\n )\n ? \"block\"\n : \"none\";\n } else {\n popover.footer.style.display = \"none\";\n }\n const disabledButtonsConfig =\n disableButtons || getConfig(\"disableButtons\") || [];\n if (\n disabledButtonsConfig == null\n ? void 0\n : disabledButtonsConfig.includes(\"next\")\n ) {\n popover.nextButton.disabled = true;\n popover.nextButton.classList.add(\"gleap-tour-popover-btn-disabled\");\n }\n if (\n disabledButtonsConfig == null\n ? void 0\n : disabledButtonsConfig.includes(\"previous\")\n ) {\n popover.previousButton.disabled = true;\n popover.previousButton.classList.add(\"gleap-tour-popover-btn-disabled\");\n }\n if (\n disabledButtonsConfig == null\n ? void 0\n : disabledButtonsConfig.includes(\"close\")\n ) {\n popover.closeButton.disabled = true;\n popover.closeButton.classList.add(\"gleap-tour-popover-btn-disabled\");\n }\n const popoverWrapper = popover.wrapper;\n popoverWrapper.style.display = \"block\";\n popoverWrapper.style.left = \"\";\n popoverWrapper.style.top = \"\";\n popoverWrapper.style.bottom = \"\";\n popoverWrapper.style.right = \"\";\n popoverWrapper.id = \"gleap-tour-popover-content\";\n popoverWrapper.setAttribute(\"role\", \"dialog\");\n popoverWrapper.setAttribute(\"aria-labelledby\", \"gleap-tour-popover-title\");\n popoverWrapper.setAttribute(\n \"aria-describedby\",\n \"gleap-tour-popover-description\"\n );\n const popoverArrow = popover.arrow;\n popoverArrow.className = \"gleap-tour-popover-arrow\";\n const customPopoverClass =\n ((_a = step.popover) == null ? void 0 : _a.popoverClass) ||\n getConfig(\"popoverClass\") ||\n \"\";\n popoverWrapper.className =\n `gleap-tour-popover ${customPopoverClass}`.trim();\n onDriverClick(\n popover.wrapper,\n (e) => {\n var _a2, _b2, _c;\n const target = e.target;\n const onNextClick =\n ((_a2 = step.popover) == null ? void 0 : _a2.onNextClick) ||\n getConfig(\"onNextClick\");\n const onPrevClick =\n ((_b2 = step.popover) == null ? void 0 : _b2.onPrevClick) ||\n getConfig(\"onPrevClick\");\n const onCloseClick =\n ((_c = step.popover) == null ? void 0 : _c.onCloseClick) ||\n getConfig(\"onCloseClick\");\n if (target.classList.contains(\"gleap-tour-popover-next-btn\")) {\n if (onNextClick) {\n return onNextClick(element, step, {\n config: getConfig(),\n state: getState(),\n });\n } else {\n return emit(\"nextClick\");\n }\n }\n if (target.classList.contains(\"gleap-tour-popover-prev-btn\")) {\n if (onPrevClick) {\n return onPrevClick(element, step, {\n config: getConfig(),\n state: getState(),\n });\n } else {\n return emit(\"prevClick\");\n }\n }\n if (target.classList.contains(\"gleap-tour-popover-close-btn\")) {\n if (onCloseClick) {\n return onCloseClick(element, step, {\n config: getConfig(),\n state: getState(),\n });\n } else {\n return emit(\"closeClick\");\n }\n }\n return void 0;\n },\n (target) => {\n return (\n !(popover == null ? void 0 : popover.description.contains(target)) &&\n !(popover == null ? void 0 : popover.title.contains(target)) &&\n typeof target.className === \"string\" &&\n target.className.includes(\"gleap-tour-popover\")\n );\n }\n );\n setState(\"popover\", popover);\n const onPopoverRender =\n ((_b = step.popover) == null ? void 0 : _b.onPopoverRender) ||\n getConfig(\"onPopoverRender\");\n if (onPopoverRender) {\n onPopoverRender(popover, {\n config: getConfig(),\n state: getState(),\n });\n }\n repositionPopover(element, step);\n bringInView(popoverWrapper);\n const isToDummyElement = element.classList.contains(\n \"gleap-tour-dummy-element\"\n );\n const focusableElement = getFocusableElements([\n popoverWrapper,\n ...(isToDummyElement ? [] : [element]),\n ]);\n if (focusableElement.length > 0) {\n focusableElement[0].focus();\n }\n }\n function getPopoverDimensions() {\n const popover = getState(\"popover\");\n if (!(popover == null ? void 0 : popover.wrapper)) {\n return;\n }\n const boundingClientRect = popover.wrapper.getBoundingClientRect();\n const stagePadding = getConfig(\"stagePadding\") || 0;\n const popoverOffset = getConfig(\"popoverOffset\") || 0;\n return {\n width: boundingClientRect.width + stagePadding + popoverOffset,\n height: boundingClientRect.height + stagePadding + popoverOffset,\n realWidth: boundingClientRect.width,\n realHeight: boundingClientRect.height,\n };\n }\n function calculateTopForLeftRight(alignment, config) {\n const {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n } = config;\n if (alignment === \"start\") {\n return Math.max(\n Math.min(\n elementDimensions.top - popoverPadding,\n window.innerHeight -\n popoverDimensions.realHeight -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n if (alignment === \"end\") {\n return Math.max(\n Math.min(\n elementDimensions.top -\n (popoverDimensions == null\n ? void 0\n : popoverDimensions.realHeight) +\n elementDimensions.height +\n popoverPadding,\n window.innerHeight -\n (popoverDimensions == null\n ? void 0\n : popoverDimensions.realHeight) -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n if (alignment === \"center\") {\n return Math.max(\n Math.min(\n elementDimensions.top +\n elementDimensions.height / 2 -\n (popoverDimensions == null\n ? void 0\n : popoverDimensions.realHeight) /\n 2,\n window.innerHeight -\n (popoverDimensions == null\n ? void 0\n : popoverDimensions.realHeight) -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n return 0;\n }\n function calculateLeftForTopBottom(alignment, config) {\n const {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n } = config;\n if (alignment === \"start\") {\n return Math.max(\n Math.min(\n elementDimensions.left - popoverPadding,\n window.innerWidth -\n popoverDimensions.realWidth -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n if (alignment === \"end\") {\n return Math.max(\n Math.min(\n elementDimensions.left -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) +\n elementDimensions.width +\n popoverPadding,\n window.innerWidth -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n if (alignment === \"center\") {\n return Math.max(\n Math.min(\n elementDimensions.left +\n elementDimensions.width / 2 -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) /\n 2,\n window.innerWidth -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n return 0;\n }\n function repositionPopover(element, step) {\n const popover = getState(\"popover\");\n if (!popover) {\n return;\n }\n const { align = \"start\", side = \"left\" } =\n (step == null ? void 0 : step.popover) || {};\n const requiredAlignment = align;\n const requiredSide =\n element.id === \"gleap-tour-dummy-element\" ? \"over\" : side;\n const popoverPadding = getConfig(\"stagePadding\") || 0;\n const popoverDimensions = getPopoverDimensions();\n const popoverArrowDimensions = popover.arrow.getBoundingClientRect();\n const elementDimensions = element.getBoundingClientRect();\n const topValue = elementDimensions.top - popoverDimensions.height;\n let isTopOptimal = topValue >= 0;\n const bottomValue =\n window.innerHeight -\n (elementDimensions.bottom + popoverDimensions.height);\n let isBottomOptimal = bottomValue >= 0;\n const leftValue = elementDimensions.left - popoverDimensions.width;\n let isLeftOptimal = leftValue >= 0;\n const rightValue =\n window.innerWidth - (elementDimensions.right + popoverDimensions.width);\n let isRightOptimal = rightValue >= 0;\n const noneOptimal =\n !isTopOptimal && !isBottomOptimal && !isLeftOptimal && !isRightOptimal;\n let popoverRenderedSide = requiredSide;\n if (requiredSide === \"top\" && isTopOptimal) {\n isRightOptimal = isLeftOptimal = isBottomOptimal = false;\n } else if (requiredSide === \"bottom\" && isBottomOptimal) {\n isRightOptimal = isLeftOptimal = isTopOptimal = false;\n } else if (requiredSide === \"left\" && isLeftOptimal) {\n isRightOptimal = isTopOptimal = isBottomOptimal = false;\n } else if (requiredSide === \"right\" && isRightOptimal) {\n isLeftOptimal = isTopOptimal = isBottomOptimal = false;\n }\n if (requiredSide === \"over\") {\n const leftToSet = window.innerWidth / 2 - popoverDimensions.realWidth / 2;\n const topToSet =\n window.innerHeight / 2 - popoverDimensions.realHeight / 2;\n popover.wrapper.style.left = `${leftToSet}px`;\n popover.wrapper.style.right = `auto`;\n popover.wrapper.style.top = `${topToSet}px`;\n popover.wrapper.style.bottom = `auto`;\n } else if (noneOptimal) {\n const leftValue2 =\n window.innerWidth / 2 -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) / 2;\n const bottomValue2 = 10;\n popover.wrapper.style.left = `${leftValue2}px`;\n popover.wrapper.style.right = `auto`;\n popover.wrapper.style.bottom = `${bottomValue2}px`;\n popover.wrapper.style.top = `auto`;\n } else if (isLeftOptimal) {\n const leftToSet = Math.min(\n leftValue,\n window.innerWidth -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) -\n popoverArrowDimensions.width\n );\n const topToSet = calculateTopForLeftRight(requiredAlignment, {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n });\n popover.wrapper.style.left = `${leftToSet}px`;\n popover.wrapper.style.top = `${topToSet}px`;\n popover.wrapper.style.bottom = `auto`;\n popover.wrapper.style.right = \"auto\";\n popoverRenderedSide = \"left\";\n } else if (isRightOptimal) {\n const rightToSet = Math.min(\n rightValue,\n window.innerWidth -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) -\n popoverArrowDimensions.width\n );\n const topToSet = calculateTopForLeftRight(requiredAlignment, {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n });\n popover.wrapper.style.right = `${rightToSet}px`;\n popover.wrapper.style.top = `${topToSet}px`;\n popover.wrapper.style.bottom = `auto`;\n popover.wrapper.style.left = \"auto\";\n popoverRenderedSide = \"right\";\n } else if (isTopOptimal) {\n const topToSet = Math.min(\n topValue,\n window.innerHeight -\n popoverDimensions.realHeight -\n popoverArrowDimensions.width\n );\n let leftToSet = calculateLeftForTopBottom(requiredAlignment, {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n });\n popover.wrapper.style.top = `${topToSet}px`;\n popover.wrapper.style.left = `${leftToSet}px`;\n popover.wrapper.style.bottom = `auto`;\n popover.wrapper.style.right = \"auto\";\n popoverRenderedSide = \"top\";\n } else if (isBottomOptimal) {\n const bottomToSet = Math.min(\n bottomValue,\n window.innerHeight -\n (popoverDimensions == null ? void 0 : popoverDimensions.realHeight) -\n popoverArrowDimensions.width\n );\n let leftToSet = calculateLeftForTopBottom(requiredAlignment, {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n });\n popover.wrapper.style.left = `${leftToSet}px`;\n popover.wrapper.style.bottom = `${bottomToSet}px`;\n popover.wrapper.style.top = `auto`;\n popover.wrapper.style.right = \"auto\";\n popoverRenderedSide = \"bottom\";\n }\n if (!noneOptimal) {\n renderPopoverArrow(requiredAlignment, popoverRenderedSide, element);\n } else {\n popover.arrow.classList.add(\"gleap-tour-popover-arrow-none\");\n }\n }\n function renderPopoverArrow(alignment, side, element) {\n const popover = getState(\"popover\");\n if (!popover) {\n return;\n }\n const elementDimensions = element.getBoundingClientRect();\n const popoverDimensions = getPopoverDimensions();\n const popoverArrow = popover.arrow;\n const popoverWidth = popoverDimensions.width;\n const windowWidth = window.innerWidth;\n const elementWidth = elementDimensions.width;\n const elementLeft = elementDimensions.left;\n const popoverHeight = popoverDimensions.height;\n const windowHeight = window.innerHeight;\n const elementTop = elementDimensions.top;\n const elementHeight = elementDimensions.height;\n popoverArrow.className = \"gleap-tour-popover-arrow\";\n let arrowSide = side;\n let arrowAlignment = alignment;\n if (side === \"top\") {\n if (elementLeft + elementWidth <= 0) {\n arrowSide = \"right\";\n arrowAlignment = \"end\";\n } else if (elementLeft + elementWidth - popoverWidth <= 0) {\n arrowSide = \"top\";\n arrowAlignment = \"start\";\n }\n if (elementLeft >= windowWidth) {\n arrowSide = \"left\";\n arrowAlignment = \"end\";\n } else if (elementLeft + popoverWidth >= windowWidth) {\n arrowSide = \"top\";\n arrowAlignment = \"end\";\n }\n } else if (side === \"bottom\") {\n if (elementLeft + elementWidth <= 0) {\n arrowSide = \"right\";\n arrowAlignment = \"start\";\n } else if (elementLeft + elementWidth - popoverWidth <= 0) {\n arrowSide = \"bottom\";\n arrowAlignment = \"start\";\n }\n if (elementLeft >= windowWidth) {\n arrowSide = \"left\";\n arrowAlignment = \"start\";\n } else if (elementLeft + popoverWidth >= windowWidth) {\n arrowSide = \"bottom\";\n arrowAlignment = \"end\";\n }\n } else if (side === \"left\") {\n if (elementTop + elementHeight <= 0) {\n arrowSide = \"bottom\";\n arrowAlignment = \"end\";\n } else if (elementTop + elementHeight - popoverHeight <= 0) {\n arrowSide = \"left\";\n arrowAlignment = \"start\";\n }\n if (elementTop >= windowHeight) {\n arrowSide = \"top\";\n arrowAlignment = \"end\";\n } else if (elementTop + popoverHeight >= windowHeight) {\n arrowSide = \"left\";\n arrowAlignment = \"end\";\n }\n } else if (side === \"right\") {\n if (elementTop + elementHeight <= 0) {\n arrowSide = \"bottom\";\n arrowAlignment = \"start\";\n } else if (elementTop + elementHeight - popoverHeight <= 0) {\n arrowSide = \"right\";\n arrowAlignment = \"start\";\n }\n if (elementTop >= windowHeight) {\n arrowSide = \"top\";\n arrowAlignment = \"start\";\n } else if (elementTop + popoverHeight >= windowHeight) {\n arrowSide = \"right\";\n arrowAlignment = \"end\";\n }\n } else;\n if (!arrowSide) {\n popoverArrow.classList.add(\"gleap-tour-popover-arrow-none\");\n } else {\n popoverArrow.classList.add(`gleap-tour-popover-arrow-side-${arrowSide}`);\n popoverArrow.classList.add(\n `gleap-tour-popover-arrow-align-${arrowAlignment}`\n );\n }\n }\n function createPopover() {\n const wrapper = document.createElement(\"div\");\n wrapper.classList.add(\"gleap-tour-popover\");\n const arrow = document.createElement(\"div\");\n arrow.classList.add(\"gleap-tour-popover-arrow\");\n const title = document.createElement(\"div\");\n title.id = \"gleap-tour-popover-title\";\n title.classList.add(\"gleap-tour-popover-title\");\n title.style.display = \"none\";\n title.innerText = \"Popover Title\";\n const description = document.createElement(\"div\");\n description.id = \"gleap-tour-popover-description\";\n description.classList.add(\"gleap-tour-popover-description\");\n description.style.display = \"none\";\n description.innerText = \"Popover description is here\";\n const closeButton = document.createElement(\"button\");\n closeButton.type = \"button\";\n closeButton.classList.add(\"gleap-tour-popover-close-btn\");\n closeButton.setAttribute(\"aria-label\", \"Close\");\n closeButton.innerHTML = \"×\";\n const footer = document.createElement(\"div\");\n footer.classList.add(\"gleap-tour-popover-footer\");\n const progress = document.createElement(\"span\");\n progress.classList.add(\"gleap-tour-popover-progress-text\");\n progress.innerText = \"\";\n const footerButtons = document.createElement(\"span\");\n footerButtons.classList.add(\"gleap-tour-popover-navigation-btns\");\n const previousButton = document.createElement(\"button\");\n previousButton.type = \"button\";\n previousButton.classList.add(\"gleap-tour-popover-prev-btn\");\n previousButton.innerHTML = \"← Previous\";\n const nextButton = document.createElement(\"button\");\n nextButton.type = \"button\";\n nextButton.classList.add(\"gleap-tour-popover-next-btn\");\n nextButton.innerHTML = \"Next →\";\n footerButtons.appendChild(previousButton);\n footerButtons.appendChild(nextButton);\n footer.appendChild(progress);\n footer.appendChild(footerButtons);\n wrapper.appendChild(closeButton);\n wrapper.appendChild(arrow);\n wrapper.appendChild(title);\n wrapper.appendChild(description);\n wrapper.appendChild(footer);\n return {\n wrapper,\n arrow,\n title,\n description,\n footer,\n previousButton,\n nextButton,\n closeButton,\n footerButtons,\n progress,\n };\n }\n function destroyPopover() {\n var _a;\n const popover = getState(\"popover\");\n if (!popover) {\n return;\n }\n (_a = popover.wrapper.parentElement) == null\n ? void 0\n : _a.removeChild(popover.wrapper);\n }\n function driver(options = {}) {\n configure(options);\n function handleClose() {\n if (!getConfig(\"allowClose\")) {\n return;\n }\n destroy();\n }\n function moveNext() {\n const activeIndex = getState(\"activeIndex\");\n const steps = getConfig(\"steps\") || [];\n if (typeof activeIndex === \"undefined\") {\n return;\n }\n const nextStepIndex = activeIndex + 1;\n if (steps[nextStepIndex]) {\n drive(nextStepIndex);\n } else {\n destroy();\n }\n }\n function movePrevious() {\n const activeIndex = getState(\"activeIndex\");\n const steps = getConfig(\"steps\") || [];\n if (typeof activeIndex === \"undefined\") {\n return;\n }\n const previousStepIndex = activeIndex - 1;\n if (steps[previousStepIndex]) {\n drive(previousStepIndex);\n } else {\n destroy();\n }\n }\n function moveTo(index) {\n const steps = getConfig(\"steps\") || [];\n if (steps[index]) {\n drive(index);\n } else {\n destroy();\n }\n }\n function handleArrowLeft() {\n var _a;\n const isTransitioning = getState(\"__transitionCallback\");\n if (isTransitioning) {\n return;\n }\n const activeIndex = getState(\"activeIndex\");\n const activeStep = getState(\"__activeStep\");\n const activeElement = getState(\"__activeElement\");\n\n if (activeStep.mode === \"CLICK\") {\n return;\n }\n if (\n typeof activeIndex === \"undefined\" ||\n typeof activeStep === \"undefined\"\n ) {\n return;\n }\n const currentStepIndex = getState(\"activeIndex\");\n if (typeof currentStepIndex === \"undefined\") {\n return;\n }\n const onPrevClick =\n ((_a = activeStep.popover) == null ? void 0 : _a.onPrevClick) ||\n getConfig(\"onPrevClick\");\n if (onPrevClick) {\n return onPrevClick(activeElement, activeStep, {\n config: getConfig(),\n state: getState(),\n });\n }\n movePrevious();\n }\n function handleArrowRight() {\n var _a;\n const isTransitioning = getState(\"__transitionCallback\");\n if (isTransitioning) {\n return;\n }\n const activeIndex = getState(\"activeIndex\");\n const activeStep = getState(\"__activeStep\");\n const activeElement = getState(\"__activeElement\");\n\n if (activeStep.mode === \"CLICK\") {\n return;\n }\n if (\n typeof activeIndex === \"undefined\" ||\n typeof activeStep === \"undefined\"\n ) {\n return;\n }\n const onNextClick =\n ((_a = activeStep.popover) == null ? void 0 : _a.onNextClick) ||\n getConfig(\"onNextClick\");\n if (onNextClick) {\n return onNextClick(activeElement, activeStep, {\n config: getConfig(),\n state: getState(),\n });\n }\n moveNext();\n }\n function init() {\n if (getState(\"isInitialized\")) {\n return;\n }\n setState(\"isInitialized\", true);\n document.body.classList.add(\n \"gleap-tour-active\",\n getConfig(\"animate\") ? \"gleap-tour-fade\" : \"gleap-tour-simple\"\n );\n initEvents();\n listen(\"overlayClick\", handleClose);\n listen(\"escapePress\", handleClose);\n listen(\"arrowLeftPress\", handleArrowLeft);\n listen(\"arrowRightPress\", handleArrowRight);\n }\n function drive(stepIndex = 0) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n const steps = getConfig(\"steps\");\n if (!steps) {\n console.error(\"No steps to drive through\");\n destroy();\n return;\n }\n if (!steps[stepIndex]) {\n destroy();\n return;\n }\n setState(\"__activeOnDestroyed\", document.activeElement);\n setState(\"activeIndex\", stepIndex);\n const currentStep = steps[stepIndex];\n const hasNextStep = steps[stepIndex + 1];\n const hasPreviousStep = steps[stepIndex - 1];\n const doneBtnText =\n ((_a = currentStep.popover) == null ? void 0 : _a.doneBtnText) ||\n getConfig(\"doneBtnText\") ||\n \"Done\";\n const allowsClosing = getConfig(\"allowClose\");\n const showProgress =\n typeof ((_b = currentStep.popover) == null\n ? void 0\n : _b.showProgress) !== \"undefined\"\n ? (_c = currentStep.popover) == null\n ? void 0\n : _c.showProgress\n : getConfig(\"showProgress\");\n const progressText =\n ((_d = currentStep.popover) == null ? void 0 : _d.progressText) ||\n getConfig(\"progressText\") ||\n \"{{current}} of {{total}}\";\n const progressTextReplaced = progressText\n .replace(\"{{current}}\", `${stepIndex + 1}`)\n .replace(\"{{total}}\", `${steps.length}`);\n const configuredButtons =\n ((_e = currentStep.popover) == null ? void 0 : _e.showButtons) ||\n getConfig(\"showButtons\");\n const calculatedButtons = [\n \"next\",\n \"previous\",\n ...(allowsClosing ? [\"close\"] : []),\n ].filter((b) => {\n return (\n !(configuredButtons == null ? void 0 : configuredButtons.length) ||\n configuredButtons.includes(b)\n );\n });\n const onNextClick =\n ((_f = currentStep.popover) == null ? void 0 : _f.onNextClick) ||\n getConfig(\"onNextClick\");\n const onPrevClick =\n ((_g = currentStep.popover) == null ? void 0 : _g.onPrevClick) ||\n getConfig(\"onPrevClick\");\n const onCloseClick =\n ((_h = currentStep.popover) == null ? void 0 : _h.onCloseClick) ||\n getConfig(\"onCloseClick\");\n highlight({\n ...currentStep,\n popover: {\n showButtons: calculatedButtons,\n nextBtnText: !hasNextStep ? doneBtnText : void 0,\n disableButtons: [...(!hasPreviousStep ? [\"previous\"] : [])],\n showProgress,\n progressText: progressTextReplaced,\n onNextClick: onNextClick\n ? onNextClick\n : () => {\n if (!hasNextStep) {\n destroy();\n } else {\n drive(stepIndex + 1);\n }\n },\n onPrevClick: onPrevClick\n ? onPrevClick\n : () => {\n drive(stepIndex - 1);\n },\n onCloseClick: onCloseClick\n ? onCloseClick\n : () => {\n destroy();\n },\n ...((currentStep == null ? void 0 : currentStep.popover) || {}),\n },\n });\n }\n function destroy(withOnDestroyStartedHook = true) {\n const activeElement = getState(\"__activeElement\");\n const activeStep = getState(\"__activeStep\");\n const activeOnDestroyed = getState(\"__activeOnDestroyed\");\n const onDestroyStarted = getConfig(\"onDestroyStarted\");\n if (withOnDestroyStartedHook && onDestroyStarted) {\n const isActiveDummyElement =\n !activeElement ||\n (activeElement == null ? void 0 : activeElement.id) ===\n \"gleap-tour-dummy-element\";\n onDestroyStarted(\n isActiveDummyElement ? void 0 : activeElement,\n activeStep,\n {\n config: getConfig(),\n state: getState(),\n }\n );\n return;\n }\n const onDeselected =\n (activeStep == null ? void 0 : activeStep.onDeselected) ||\n getConfig(\"onDeselected\");\n const onDestroyed = getConfig(\"onDestroyed\");\n document.body.classList.remove(\n \"gleap-tour-active\",\n \"gleap-tour-fade\",\n \"gleap-tour-simple\"\n );\n destroyEvents();\n destroyPopover();\n destroyHighlight();\n destroyOverlay();\n destroyEmitter();\n resetState();\n if (activeElement && activeStep) {\n const isActiveDummyElement =\n activeElement.id === \"gleap-tour-dummy-element\";\n if (onDeselected) {\n onDeselected(\n isActiveDummyElement ? void 0 : activeElement,\n activeStep,\n {\n config: getConfig(),\n state: getState(),\n }\n );\n }\n if (onDestroyed) {\n onDestroyed(\n isActiveDummyElement ? void 0 : activeElement,\n activeStep,\n {\n config: getConfig(),\n state: getState(),\n }\n );\n }\n }\n if (activeOnDestroyed) {\n activeOnDestroyed.focus();\n }\n }\n return {\n isActive: () => getState(\"isInitialized\") || false,\n refresh: requireRefresh,\n drive: (stepIndex = 0) => {\n init();\n drive(stepIndex);\n },\n setConfig: configure,\n setSteps: (steps) => {\n resetState();\n configure({\n ...getConfig(),\n steps,\n });\n },\n getConfig,\n getState,\n getActiveIndex: () => getState(\"activeIndex\"),\n isFirstStep: () => getState(\"activeIndex\") === 0,\n isLastStep: () => {\n const steps = getConfig(\"steps\") || [];\n const activeIndex = getState(\"activeIndex\");\n return activeIndex !== void 0 && activeIndex === steps.length - 1;\n },\n getActiveStep: () => getState(\"activeStep\"),\n getActiveElement: () => getState(\"activeElement\"),\n getPreviousElement: () => getState(\"previousElement\"),\n getPreviousStep: () => getState(\"previousStep\"),\n moveNext,\n movePrevious,\n moveTo,\n hasNextStep: () => {\n const steps = getConfig(\"steps\") || [];\n const activeIndex = getState(\"activeIndex\");\n return activeIndex !== void 0 && steps[activeIndex + 1];\n },\n hasPreviousStep: () => {\n const steps = getConfig(\"steps\") || [];\n const activeIndex = getState(\"activeIndex\");\n return activeIndex !== void 0 && steps[activeIndex - 1];\n },\n highlight: (step) => {\n init();\n highlight({\n ...step,\n popover: step.popover\n ? {\n showButtons: [],\n showProgress: false,\n progressText: \"\",\n ...step.popover,\n }\n : void 0,\n });\n },\n destroy: () => {\n destroy(false);\n },\n };\n }\n return driver;\n})({});\n\nexport default GleapTours;\n","import { GleapConfigManager, GleapTranslationManager } from \"./Gleap\";\nimport { calculateContrast, loadIcon } from \"./UI\";\n\nconst localStorageKey = \"gleap-tour-data\";\nconst pointerContainerId = \"copilot-pointer-container\";\nconst styleId = \"copilot-tour-styles\";\nconst copilotJoinedContainerId = \"copilot-joined-container\";\n\nfunction estimateReadTime(text) {\n if (typeof window === \"undefined\") return;\n\n const wordsPerSecond = 3.6; // Average reading speed\n const wordCount = text.split(/\\s+/).filter((word) => word.length > 0).length;\n const readTimeInSeconds = Math.ceil(wordCount / wordsPerSecond);\n return readTimeInSeconds + 1;\n}\n\nfunction htmlToPlainText(html) {\n if (typeof window === \"undefined\") return;\n\n const tempDiv = document.createElement(\"div\");\n tempDiv.innerHTML = html;\n return tempDiv.textContent || \"\";\n}\n\nfunction scrollToElement(element) {\n if (typeof window === \"undefined\") return;\n\n if (element) {\n element.scrollIntoView({\n behavior: \"smooth\",\n block: \"center\",\n inline: \"center\",\n });\n }\n}\n\nfunction performClickAnimation(posX, posY) {\n if (typeof window === \"undefined\") return;\n\n const wave = document.createElement(\"div\");\n wave.className = \"click-wave\";\n wave.style.left = `${posX - 17}px`;\n wave.style.top = `${posY - 17}px`;\n document.body.appendChild(wave);\n setTimeout(() => {\n wave.remove();\n }, 800);\n}\n\nfunction waitForElement(selector, timeout = 5000) {\n if (typeof window === \"undefined\") return;\n\n const pollInterval = 100;\n const maxAttempts = timeout / pollInterval;\n let attempts = 0;\n return new Promise((resolve, reject) => {\n const interval = setInterval(() => {\n const element = document.querySelector(selector);\n if (element) {\n clearInterval(interval);\n resolve(element);\n } else if (attempts >= maxAttempts) {\n clearInterval(interval);\n reject(new Error(`Element not found for selector: ${selector}`));\n }\n attempts++;\n }, pollInterval);\n });\n}\n\nfunction smoothScrollToY(yPosition) {\n if (typeof window === \"undefined\") return;\n\n const viewportHeight = window.innerHeight;\n const targetScrollPosition = yPosition - viewportHeight / 2;\n window.scrollTo({\n top: targetScrollPosition,\n behavior: \"smooth\",\n });\n}\n\nasync function canPlayAudio() {\n if (typeof window === \"undefined\") return;\n\n const audio = new Audio(\n \"data:audio/wav;base64,UklGRigAAABXQVZFZm10IBAAAAABAAEARKwAABCxAgAEABAAZGF0YQAAAAA=\"\n );\n try {\n await audio.play();\n return true;\n } catch (err) {\n return false;\n }\n}\n\n// Helper: Check if an element is fully visible in the viewport.\nfunction isElementFullyVisible(el) {\n if (typeof window === \"undefined\") return;\n\n const rect = el.getBoundingClientRect();\n return (\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <= window.innerHeight &&\n rect.right <= window.innerWidth\n );\n}\n\n// Helper: Get scrollable ancestors of an element.\nfunction getScrollableAncestors(el) {\n if (typeof window === \"undefined\") return;\n\n let ancestors = [];\n let current = el.parentElement;\n while (current) {\n const style = window.getComputedStyle(current);\n if (\n (style.overflowY === \"auto\" || style.overflowY === \"scroll\") &&\n current.scrollHeight > current.clientHeight\n ) {\n ancestors.push(current);\n }\n current = current.parentElement;\n }\n return ancestors;\n}\n\nexport default class GleapCopilotTours {\n productTourData = undefined;\n productTourId = undefined;\n currentActiveIndex = undefined;\n lastArrowPositionX = undefined;\n lastArrowPositionY = undefined;\n onCompleteCallback = undefined;\n audioMuted = false;\n currentAudio = undefined;\n\n // Cached pointer container.\n _pointerContainer = null;\n // For scroll handling.\n _scrollListeners = [];\n _currentAnchor = null;\n _currentStep = null;\n _scrollDebounceTimer = null;\n\n // GleapReplayRecorder singleton.\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapCopilotTours();\n }\n return this.instance;\n }\n\n constructor() {\n const self = this;\n\n if (typeof window !== \"undefined\") {\n this._scrollListeners = [];\n this._currentAnchor = null;\n this._currentStep = null;\n this._scrollDebounceTimer = null;\n\n window.addEventListener(\"resize\", () => {\n if (\n self.productTourId &&\n self.currentActiveIndex >= 0 &&\n self.productTourData &&\n self.productTourData.steps\n ) {\n const steps = self.productTourData.steps;\n const currentStep = steps[self.currentActiveIndex];\n if (\n currentStep &&\n currentStep.selector &&\n currentStep.selector !== \"\"\n ) {\n self.updatePointerPosition(\n document.querySelector(currentStep.selector),\n currentStep\n );\n }\n }\n });\n }\n }\n\n disable() {\n this.disabled = true;\n \n this.cleanup();\n }\n\n startWithConfig(tourId, config, onCompleteCallback = undefined) {\n if (typeof window === \"undefined\") return;\n if (this.productTourId) return;\n if (this.disabled) return;\n\n this.productTourId = tourId;\n this.productTourData = config;\n this.currentActiveIndex = 0;\n this.onCompleteCallback = onCompleteCallback;\n this.start();\n }\n\n storeUncompletedTour() {\n if (typeof window === \"undefined\") return;\n if (this.productTourId && this.productTourData) {\n try {\n let data = JSON.parse(\n JSON.stringify({\n tourData: this.productTourData,\n tourId: this.productTourId,\n })\n );\n data.tourData.steps = data.tourData.steps.slice(\n this.currentActiveIndex || 0,\n data.tourData.steps.length\n );\n localStorage.setItem(localStorageKey, JSON.stringify(data));\n } catch (e) {\n // Optionally log error in development mode.\n }\n } else {\n localStorage.removeItem(localStorageKey);\n }\n }\n\n // Attach scroll listeners with a debounce to update the pointer position after scrolling stops.\n attachScrollListeners(anchor, currentStep) {\n if (typeof window === \"undefined\") return;\n if (!anchor) return;\n const scrollableAncestors = getScrollableAncestors(anchor);\n // Also include window.\n scrollableAncestors.push(window);\n scrollableAncestors.forEach((el) => {\n const handler = () => {\n clearTimeout(this._scrollDebounceTimer);\n this._scrollDebounceTimer = setTimeout(() => {\n this.updatePointerPosition(anchor, currentStep);\n }, 150);\n };\n el.addEventListener(\"scroll\", handler, { passive: true });\n this._scrollListeners.push({ el, handler });\n });\n }\n\n // Remove scroll listeners and clear debounce timer.\n removeScrollListeners() {\n if (typeof window === \"undefined\") return;\n if (this._scrollListeners && this._scrollListeners.length > 0) {\n this._scrollListeners.forEach(({ el, handler }) => {\n el.removeEventListener(\"scroll\", handler);\n });\n this._scrollListeners = [];\n }\n if (this._scrollDebounceTimer) {\n clearTimeout(this._scrollDebounceTimer);\n this._scrollDebounceTimer = null;\n }\n }\n\n // Updated pointer position:\n // 1. Scroll the element into view.\n // 2. After the element is fully visible (or after a maximum delay), update the pointer position to point towards the element.\n updatePointerPosition(anchor, currentStep) {\n if (typeof window === \"undefined\") return;\n try {\n const container =\n this._pointerContainer || document.getElementById(pointerContainerId);\n if (!container) return;\n\n if (!anchor) {\n container.style.position = \"fixed\";\n container.style.left = \"50%\";\n container.style.top = \"50%\";\n container.style.transform = \"translate(-50%, -50%)\";\n smoothScrollToY(window.innerHeight / 2);\n this.removeScrollListeners();\n this._currentAnchor = null;\n this._currentStep = null;\n return;\n }\n\n // Step 1: Scroll the element into view.\n scrollToElement(anchor);\n\n // Step 2: Poll until the element is fully visible (or after maximum polls).\n const pollInterval = 100;\n const maxPolls = 20;\n let pollCount = 0;\n const updateFinalPosition = () => {\n if (isElementFullyVisible(anchor) || pollCount >= maxPolls) {\n // Compute final target coordinates.\n const anchorRect = anchor.getBoundingClientRect();\n const targetX = anchorRect.left + anchorRect.width / 2;\n const targetY = anchorRect.top + anchorRect.height / 2 + 10; // 10px downward offset.\n container.style.position = \"fixed\";\n container.style.left = `${targetX}px`;\n container.style.top = `${targetY}px`;\n container.style.transform = \"translate(-50%, -50%)\";\n\n // Adjust container if too far right.\n let containerWidthSpace = 350;\n if (containerWidthSpace > window.innerWidth - 40) {\n containerWidthSpace = window.innerWidth - 40;\n }\n if (targetX + containerWidthSpace > window.innerWidth - 20) {\n container.classList.add(\"copilot-pointer-container-right\");\n } else {\n container.classList.remove(\"copilot-pointer-container-right\");\n }\n\n // Reattach scroll listeners if the target or step has changed.\n if (\n this._currentAnchor !== anchor ||\n this._currentStep !== currentStep\n ) {\n this.removeScrollListeners();\n this._currentAnchor = anchor;\n this._currentStep = currentStep;\n this.attachScrollListeners(anchor, currentStep);\n }\n } else {\n pollCount++;\n setTimeout(updateFinalPosition, pollInterval);\n }\n };\n updateFinalPosition();\n } catch (e) {\n // Optionally log errors.\n }\n }\n\n cleanup() {\n if (typeof window === \"undefined\") return;\n document.body.classList.add(\"gl-copilot-fade-out\");\n if (this.currentAudio) {\n this.currentAudio.pause();\n }\n setTimeout(() => {\n if (this._pointerContainer) {\n this._pointerContainer.remove();\n this._pointerContainer = null;\n } else {\n const container = document.getElementById(pointerContainerId);\n if (container) container.remove();\n }\n const copilotInfoContainer = document.getElementById(\n copilotJoinedContainerId\n );\n if (copilotInfoContainer) copilotInfoContainer.remove();\n const styleNode = document.getElementById(styleId);\n if (styleNode) styleNode.remove();\n document.body.classList.remove(\"gl-copilot-fade-out\");\n }, 800);\n\n this.productTourId = undefined;\n this.productTourData = undefined;\n \n this.removeScrollListeners();\n }\n\n toggleAudio(muted = false) {\n this.audioMuted = muted;\n if (this.currentAudio) {\n this.currentAudio.muted = this.audioMuted;\n }\n document.querySelector(`.${copilotJoinedContainerId}-mute`).innerHTML =\n loadIcon(this.audioMuted ? \"unmute\" : \"mute\");\n }\n\n setupCopilotTour() {\n if (typeof window === \"undefined\") return;\n\n const primaryColor =\n GleapConfigManager.getInstance().flowConfig?.color ?? \"#485BFF\";\n const contrastColor = calculateContrast(primaryColor);\n\n let styleNode = document.getElementById(styleId);\n if (!styleNode) {\n styleNode = document.createElement(\"style\");\n styleNode.id = styleId;\n styleNode.type = \"text/css\";\n styleNode.textContent = `\n #${pointerContainerId} {\n position: absolute;\n top: 0;\n left: 0;\n display: flex;\n align-items: flex-start;\n pointer-events: none;\n z-index: 2147483610;\n transition: all 0.5s ease;\n }\n .${pointerContainerId}-clickmode {\n cursor: pointer;\n pointer-events: all !important;\n }\n .${pointerContainerId}-clickmode #copilot-info-bubble-content {\n display: flex !important;\n }\n .${pointerContainerId}-clickmode svg {\n display: none !important;\n }\n #${pointerContainerId} svg {\n width: 20px;\n height: auto;\n fill: none;\n }\n #copilot-info-bubble {\n position: relative;\n }\n #copilot-info-bubble-content-container {\n position: absolute;\n top: 0px;\n left: 0px;\n min-width: min(300px, 80vw);\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n }\n .${pointerContainerId}-right #copilot-info-bubble-content-container {\n left: auto !important;\n right: 0px !important;\n align-items: flex-end;\n }\n .${pointerContainerId}-right .copilot-info-bubble-content {\n margin-right: 5px;\n }\n .${pointerContainerId}-right svg {\n transform: scaleX(-1);\n }\n #copilot-info-bubble-content svg {\n width: 16px;\n height: 16px;\n display: inline-block !important;\n margin-left: 5px;\n }\n #copilot-info-bubble-content {\n margin-top: 18px;\n margin-left: 5px;\n padding: 10px 15px;\n border-radius: 20px;\n background-color: black;\n color: white;\n font-family: Arial, sans-serif;\n font-size: 14px;\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);\n max-width: 100%;\n white-space: normal;\n overflow-wrap: break-word;\n word-break: normal;\n hyphens: none;\n }\n .${pointerContainerId}-right #copilot-info-bubble-content {\n margin-top: 30px;\n margin-left: 0px;\n margin-right: 5px;\n }\n .click-wave {\n position: absolute;\n width: 34px;\n height: 34px;\n border-radius: 50%;\n background-color: rgba(0, 0, 0, 0.5);\n pointer-events: none;\n z-index: 2147483611;\n animation: click-wave-animation 0.8s ease forwards;\n }\n @keyframes click-wave-animation {\n 0% {\n transform: scale(0.2);\n opacity: 1;\n }\n 100% {\n transform: scale(2);\n opacity: 0;\n }\n }\n @keyframes slideInFromTop {\n 0% {\n transform: translateY(-100%);\n opacity: 0;\n }\n 100% {\n transform: translateY(0);\n opacity: 1;\n }\n }\n .${copilotJoinedContainerId} {\n position: fixed;\n top: 20px;\n right: 20px;\n z-index: 2147483610;\n background: #fff;\n padding: 6px;\n border-radius: 10px;\n box-shadow: 0 0 20px 0 #C294F2;\n display: flex;\n align-items: center;\n gap: 8px;\n border: 1px solid rgba(192, 146, 242, 0.5);\n animation: slideInFromTop 0.5s ease-out forwards;\n }\n .${copilotJoinedContainerId} span {\n font-size: 13px;\n color: #000;\n font-family: sans-serif;\n }\n .${copilotJoinedContainerId}-avatar {\n width: 24px;\n height: 24px;\n flex-shrink: 0;\n border-radius: 6px;\n }\n .${copilotJoinedContainerId}-mute {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n .${copilotJoinedContainerId}-mute svg {\n width: 20px;\n height: auto;\n cursor: pointer;\n animation: pulsate 2s infinite;\n }\n .${copilotJoinedContainerId}-mute svg:hover {\n opacity: 0.8;\n }\n .${copilotJoinedContainerId}-dismiss {\n display: flex;\n align-items: center;\n justify-content: center;\n padding-right: 3px;\n }\n .${copilotJoinedContainerId}-dismiss svg {\n width: 15px;\n height: auto;\n cursor: pointer;\n }\n .${copilotJoinedContainerId}-dismiss svg:hover {\n opacity: 0.8;\n }\n @keyframes pulsate {\n 0% {\n transform: scale(1);\n opacity: 1;\n }\n 50% {\n transform: scale(1.1);\n opacity: 0.8;\n }\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n }\n @keyframes glCoFadeIn {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n @keyframes glCoFadeOut {\n 0% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n }\n\n .gleap-audio-unmute-modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n background-color: rgba(0, 0, 0, 0.5);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 2147483620;\n }\n\n .gleap-audio-unmute-modal {\n background-color: #fff;\n padding: 20px;\n border-radius: 8px;\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);\n text-align: center;\n max-width: 90%;\n width: 400px;\n }\n\n .gleap-audio-unmute-modal p {\n margin-bottom: 20px;\n font-size: 16px;\n line-height: 22px;\n font-weight: normal;\n }\n\n .gleap-audio-unmute-button {\n background: ${primaryColor};\n color: ${contrastColor};\n outline: none;\n border: none;\n padding: 10px 14px;\n border-radius: 12px;\n font-size: 14px;\n font-weight: bold;\n cursor: pointer;\n }\n\n .gleap-audio-unmute-button:hover {\n opacity: 0.8;\n }\n\n .gleap-tour-continue-button {\n color: ${primaryColor};\n text-decoration: none;\n cursor: pointer;\n font-size: 14px;\n font-weight: bold;\n border: none;\n background: none;\n padding: 0;\n margin: 0;\n margin-left: 20px;\n }\n\n .gleap-tour-continue-button:hover {\n opacity: 0.8;\n }\n\n body.gl-copilot-fade-out::before,\n body.gl-copilot-fade-out::after,\n body.gl-copilot-fade-out #${copilotJoinedContainerId} {\n animation: glCoFadeOut 0.8s ease-out forwards;\n }\n ${\n this.productTourData?.playVoice ?? true\n ? \"\"\n : `\n .${copilotJoinedContainerId}-mute {\n display: none;\n }\n `\n }\n ${\n this.productTourData.gradient\n ? `body::before {\n content: \"\";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n box-sizing: border-box;\n border: 18px solid transparent;\n filter: blur(25px);\n border-image-slice: 1;\n border-image-source: linear-gradient(45deg, #ED5587, #FBE6A9, #a6e3f8, #C294F2);\n animation: glCoFadeIn 1.5s ease-out forwards;\n }\n \n body::after {\n content: \"\";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n opacity: 0.5;\n box-sizing: border-box;\n border: 3px solid transparent;\n border-image-slice: 1;\n border-image-source: linear-gradient(45deg, #ED5587, #FBE6A9, #a6e3f8, #C294F2);\n animation: glCoFadeIn 1.5s ease-out forwards;\n }`\n : `body::after {\n content: \"\";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n opacity: 0;\n }`\n }\n `;\n document.head.appendChild(styleNode);\n }\n\n const container = document.createElement(\"div\");\n container.id = pointerContainerId;\n container.style.opacity = 0;\n // Cache the pointer container.\n this._pointerContainer = container;\n\n const svgMouse = document.createElementNS(\n \"http://www.w3.org/2000/svg\",\n \"svg\"\n );\n svgMouse.setAttribute(\"viewBox\", \"0 0 380 476\");\n svgMouse.innerHTML =\n '';\n\n const infoBubble = document.createElement(\"div\");\n infoBubble.id = \"copilot-info-bubble\";\n infoBubble.innerHTML = `
`;\n\n const copilotInfoContainer = document.createElement(\"div\");\n copilotInfoContainer.id = copilotJoinedContainerId;\n copilotInfoContainer.classList.add(copilotJoinedContainerId);\n copilotInfoContainer.innerHTML = `\n \n ${this.productTourData?.kaiSlug}\n
\n ${loadIcon(this.audioMuted ? \"unmute\" : \"mute\")}\n
\n ${\n this.productTourData?.allowClose\n ? `
\n ${loadIcon(\"dismiss\")}\n
`\n : \"\"\n }\n `;\n document.body.appendChild(copilotInfoContainer);\n\n const self = this;\n\n document\n .querySelector(`.${copilotJoinedContainerId}-mute`)\n .addEventListener(\"click\", () => {\n this.toggleAudio(!this.audioMuted);\n });\n\n if (this.productTourData?.allowClose) {\n document\n .querySelector(`.${copilotJoinedContainerId}-dismiss`)\n .addEventListener(\"click\", () => {\n this.completeTour(false);\n });\n }\n\n container.appendChild(svgMouse);\n container.appendChild(infoBubble);\n document.body.appendChild(container);\n }\n\n start() {\n if (typeof window === \"undefined\") return;\n if (this.disabled) return;\n\n const config = this.productTourData;\n if (!config) return;\n canPlayAudio().then((supported) => {\n this.audioMuted = !supported;\n this.setupCopilotTour();\n\n if (this.audioMuted && config?.showUnmuteModal) {\n this.showAudioUnmuteModal();\n } else {\n setTimeout(() => {\n this.renderNextStep();\n }, 1500);\n }\n });\n }\n\n showAudioUnmuteModal() {\n // Create the overlay element\n const modalOverlay = document.createElement(\"div\");\n modalOverlay.classList.add(\"gleap-audio-unmute-modal-overlay\");\n\n // Create the modal container element\n const modal = document.createElement(\"div\");\n modal.classList.add(\"gleap-audio-unmute-modal\");\n\n // Create and add the modal message\n const message = document.createElement(\"p\");\n message.textContent = this.productTourData?.unmuteModalTitle;\n modal.appendChild(message);\n\n // Create the \"Unmute Audio\" button\n const unmuteButton = document.createElement(\"button\");\n unmuteButton.classList.add(\"gleap-audio-unmute-button\");\n unmuteButton.textContent = this.productTourData?.unmuteModalButton;\n unmuteButton.addEventListener(\"click\", () => {\n this.toggleAudio(false);\n if (modalOverlay.parentNode) {\n modalOverlay.parentNode.removeChild(modalOverlay);\n }\n setTimeout(() => {\n this.renderNextStep();\n }, 1000);\n });\n modal.appendChild(unmuteButton);\n\n // Create the \"Start Anyway\" button\n const startAnywayButton = document.createElement(\"button\");\n startAnywayButton.classList.add(\"gleap-tour-continue-button\");\n startAnywayButton.textContent = this.productTourData?.unmuteModalContinue;\n startAnywayButton.addEventListener(\"click\", () => {\n if (modalOverlay.parentNode) {\n modalOverlay.parentNode.removeChild(modalOverlay);\n }\n setTimeout(() => {\n this.renderNextStep();\n }, 1000);\n });\n modal.appendChild(startAnywayButton);\n\n // Build the modal and attach it to the DOM\n modalOverlay.appendChild(modal);\n document.body.appendChild(modalOverlay);\n }\n\n completeTour(success = true) {\n if (typeof window === \"undefined\") return;\n this.cleanup();\n if (this.onCompleteCallback) {\n this.onCompleteCallback(success);\n }\n }\n\n renderNextStep() {\n if (typeof window === \"undefined\") return;\n if (this.disabled) return;\n\n const self = this;\n const config = this.productTourData;\n const steps = config.steps;\n if (this.currentActiveIndex >= steps.length) {\n setTimeout(() => {\n this.completeTour();\n }, 500);\n return;\n }\n const currentStep = steps[this.currentActiveIndex];\n const handleStep = (element) => {\n this._pointerContainer.style.display = \"flex\";\n if (currentStep.selector && currentStep.selector.length > 0 && !element) {\n this.completeTour(false);\n return;\n }\n const gotToNextStep = () => {\n if (currentStep.mode === \"INPUT\" && element) {\n function proceedClickmode() {\n document\n .querySelector(`#${pointerContainerId}`)\n .classList.remove(\"copilot-pointer-container-clickmode\");\n element.classList.remove(\"gleap-input-highlight\");\n document.getElementById(pointerContainerId).style.display = \"none\";\n self.currentActiveIndex++;\n self.storeUncompletedTour();\n self.renderNextStep();\n }\n const inputModeType = currentStep.inputType ?? \"default\";\n if (inputModeType === \"default\") {\n function handleInputEvent(e) {\n if (e?.target?.value?.length === 0) return;\n const cursor = document.getElementById(\n `copilot-info-bubble-content`\n );\n if (!cursor) return;\n cursor.innerHTML = `${GleapTranslationManager.translateText(\n \"next\"\n )} \n \n`;\n cursor.addEventListener(\"click\", proceedClickmode, {\n once: true,\n });\n element.classList.add(\"gleap-input-highlight\");\n document\n .querySelector(`#${pointerContainerId}`)\n .classList.add(\"copilot-pointer-container-clickmode\");\n element.removeEventListener(\"input\", handleInputEvent);\n }\n element.addEventListener(\"input\", handleInputEvent, {\n once: false,\n });\n if (element.hasAttribute(\"contenteditable\")) {\n element.addEventListener(\"keyup\", handleInputEvent, {\n once: false,\n });\n }\n element.addEventListener(\n \"blur\",\n () => {\n element.focus();\n },\n { once: true }\n );\n element.focus();\n } else {\n const inputValue = currentStep.inputValue ?? \"\";\n let index = 0;\n function typeCharacter() {\n if (index < inputValue.length) {\n element.value += inputValue[index];\n index++;\n setTimeout(typeCharacter, 100);\n } else {\n setTimeout(() => {\n proceedClickmode();\n }, 1200);\n }\n }\n typeCharacter();\n }\n return;\n }\n self.currentActiveIndex++;\n self.storeUncompletedTour();\n if (currentStep.mode === \"CLICK\" && element) {\n const rect = element.getBoundingClientRect();\n const scrollX = window.scrollX || 0;\n const scrollY = window.scrollY || 0;\n performClickAnimation(\n rect.left + rect.width / 2 + scrollX,\n rect.top + rect.height / 2 + scrollY\n );\n element.click();\n }\n self.renderNextStep();\n };\n\n this.updatePointerPosition(element, currentStep);\n const message = currentStep?.message\n ? htmlToPlainText(currentStep.message)\n : \"🤔\";\n document.getElementById(`copilot-info-bubble-content`).textContent =\n message;\n this._pointerContainer.style.opacity = 1;\n const readTime = estimateReadTime(message);\n const continueWithNoAudio = () => {\n this.currentAudio = undefined;\n setTimeout(() => {\n gotToNextStep();\n }, readTime * 1000);\n };\n if (currentStep.voice && currentStep.voice.length > 0) {\n this.currentAudio = new Audio(currentStep.voice);\n if (this.audioMuted) {\n this.currentAudio.muted = true;\n }\n this.currentAudio.addEventListener(\"ended\", () => {\n setTimeout(() => {\n gotToNextStep();\n }, 1000);\n });\n this.currentAudio\n .play()\n .then(() => {})\n .catch((error) => {\n continueWithNoAudio();\n });\n } else {\n continueWithNoAudio();\n }\n };\n\n const elementPromise = currentStep.selector\n ? waitForElement(currentStep.selector)\n : Promise.resolve(null);\n elementPromise.then(handleStep).catch(() => handleStep(null));\n }\n}\n","import { loadIcon } from \"./UI\";\nimport GleapTours from \"./GleapTours\";\nimport Gleap, { GleapEventManager, GleapSession } from \"./Gleap\";\nimport GleapCopilotTours from \"./GleapCopilotTours\";\n\nconst localStorageKey = \"gleap-tour-data\";\n\nexport default class GleapProductTours {\n productTourData = undefined;\n productTourId = undefined;\n unmuted = false;\n currentActiveIndex = undefined;\n gleapTourObj = undefined;\n disabled = false;\n\n // GleapReplayRecorder singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapProductTours();\n return this.instance;\n } else {\n return this.instance;\n }\n }\n\n disable() {\n if (this.gleapTourObj) {\n this.gleapTourObj.destroy();\n }\n\n // Disable copilot tours.\n GleapCopilotTours.getInstance().disable();\n\n this.gleapTourObj = undefined;\n this.disabled = true;\n }\n\n constructor() {\n const self = this;\n\n if (typeof window !== \"undefined\") {\n const beforeUnloadListener = (event) => {\n if (\n !self?.disabled &&\n self?.productTourId &&\n self?.productTourData &&\n self?.productTourData?.tourType !== \"cobrowse\"\n ) {\n self.storeUncompletedTour();\n }\n };\n\n if (typeof window !== \"undefined\") {\n window.addEventListener(\"beforeunload\", beforeUnloadListener);\n }\n }\n }\n\n startWithConfig(tourId, config, delay = 0, manually = false) {\n // Prevent multiple tours from being started.\n if (this.productTourId || this.disabled) {\n return;\n }\n\n this.productTourId = tourId;\n this.productTourData = config;\n this.currentActiveIndex = 0;\n\n if (manually) {\n this.start();\n } else {\n const self = this;\n\n // Validate product tour.\n GleapSession.getInstance()\n .validateProductTour(tourId)\n .then(() => {\n if (delay > 0) {\n return setTimeout(() => {\n self.start();\n }, delay);\n } else {\n return this.start();\n }\n })\n .catch((error) => {\n console.log(\"Product tour is not live. Cleaning up...\");\n console.error(error);\n\n self.onComplete(false);\n });\n }\n }\n\n onComplete(success = true) {\n const comData = {\n tourId: this.productTourId,\n };\n\n if (success) {\n GleapEventManager.notifyEvent(\"productTourCompleted\", comData);\n Gleap.trackEvent(`tour-${this.productTourId}-completed`, comData);\n } else {\n GleapEventManager.notifyEvent(\"productTourQuit\", comData);\n Gleap.trackEvent(`tour-${this.productTourId}-quit`, comData);\n }\n\n // Clear data.\n if (this.gleapTourObj) {\n this.gleapTourObj.destroy();\n }\n\n this.gleapTourObj = undefined;\n this.productTourData = undefined;\n this.productTourId = undefined;\n this.currentActiveIndex = undefined;\n this.clearUncompletedTour();\n }\n\n loadUncompletedTour() {\n try {\n const data = JSON.parse(localStorage.getItem(localStorageKey));\n if (data?.tourData && data?.tourId) {\n return data;\n }\n } catch (e) {}\n\n return null;\n }\n\n storeUncompletedTour() {\n if (this.productTourId && this.productTourData) {\n try {\n let data = JSON.parse(\n JSON.stringify({\n tourData: this.productTourData,\n tourId: this.productTourId,\n })\n );\n\n data.tourData.steps = data.tourData.steps.slice(\n this.currentActiveIndex || 0,\n data.tourData.steps.length\n );\n\n localStorage.setItem(localStorageKey, JSON.stringify(data));\n } catch (e) {}\n } else {\n this.clearUncompletedTour();\n }\n }\n\n clearUncompletedTour() {\n try {\n localStorage.removeItem(localStorageKey);\n } catch (e) {}\n }\n\n start() {\n const config = this.productTourData;\n if (!config) {\n return;\n }\n\n if (config.tourType === \"cobrowse\") {\n return GleapCopilotTours.getInstance().startWithConfig(\n this.productTourId,\n config,\n (success) => {\n this.onComplete(success);\n }\n );\n }\n\n this.unmuted = false;\n const steps = config.steps;\n const self = this;\n\n var driverSteps = [];\n\n for (let i = 0; i < steps.length; i++) {\n const step = steps[i];\n\n const isClickMode = step.mode === \"CLICK\";\n const isInputMode = step.mode === \"INPUT\";\n\n var message = \"\";\n var hasSender = false;\n\n if (step.type === \"video-pointer\") {\n message = `
\n \n
${loadIcon(\n \"unmute\"\n )}
\n
`;\n } else {\n var senderHTML = ``;\n\n if (config.sender && config.sender.firstName) {\n hasSender = true;\n senderHTML = `
\n
\n
${config.sender.firstName}
\n
`;\n }\n\n message = `${senderHTML}
${step.message}
`;\n }\n\n const disableInteraction = !isClickMode && !isInputMode;\n\n var driverStep = {\n disableActiveInteraction: disableInteraction,\n mode: step.mode,\n popover: {\n description: message,\n popoverClass: `gleap-tour-popover-${step.type} ${\n !hasSender && \"gleap-tour-popover-no-sender\"\n } ${config.allowClose && \"gleap-tour-popover-can-close\"}`,\n ...(isClickMode\n ? {\n showButtons: [],\n }\n : {}),\n },\n };\n if (step.selector && step.selector.length > 0) {\n driverStep.element = step.selector;\n }\n driverSteps.push(driverStep);\n }\n\n var buttons = [\"next\", \"close\"];\n\n if (config.backButton) {\n buttons.push(\"previous\");\n }\n\n function onDocumentClick(evnt) {\n try {\n var gleapTourPopover = document.querySelector(\".gleap-tour-popover\");\n if (gleapTourPopover && !gleapTourPopover.contains(evnt.target)) {\n const stepIndex = self.gleapTourObj.getActiveIndex();\n const step = steps[stepIndex];\n const element = self.gleapTourObj.getActiveElement();\n\n if (step?.mode === \"CLICK\" && evnt?.target !== element) {\n const isInsideElement = element.contains(evnt?.target);\n if (!isInsideElement) {\n // Ignore clicks outside of the actual element.\n return;\n }\n }\n\n // Store next step index.\n self.currentActiveIndex = (self.currentActiveIndex || 0) + 1;\n self.storeUncompletedTour();\n\n if (\n (element && element.tagName === \"INPUT\") ||\n step.mode === \"INPUT\" ||\n evnt?.target?.id.includes(\"tooltip-svg\")\n ) {\n // Prevent.\n } else {\n self.gleapTourObj.moveNext();\n }\n }\n } catch (e) {}\n }\n\n this.gleapTourObj = GleapTours({\n showProgress: true,\n allowKeyboardControl: false,\n steps: driverSteps,\n showProgress: steps.length > 1,\n allowClose: config.allowClose,\n nextBtnText: config.nextText,\n doneBtnText: config.doneText,\n prevBtnText: config.prevText,\n showButtons: buttons,\n onHighlightStarted: (element, step, config) => {\n this.currentActiveIndex = config?.state?.activeIndex;\n this.storeUncompletedTour();\n },\n onElementNotFound: (step) => {\n document.removeEventListener(\"click\", onDocumentClick);\n\n this.onComplete(false);\n },\n onDestroyStarted: () => {\n if (!this.gleapTourObj.hasNextStep()) {\n // Mark as completed.\n this.onComplete(true);\n } else {\n // Mark as quit.\n this.onComplete(false);\n }\n\n document.removeEventListener(\"click\", onDocumentClick);\n },\n onPopoverRender: (popoverElement) => {\n // Fix for images and videos.\n if (popoverElement) {\n const mediaElements = document.querySelectorAll(\n \".gleap-tour-popover-description img, .gleap-tour-popover-description video\"\n );\n\n const performRequentialRefresh = () => {\n setTimeout(() => {\n this.gleapTourObj.refresh();\n }, 500);\n setTimeout(() => {\n this.gleapTourObj.refresh();\n }, 750);\n };\n\n for (let i = 0; i < mediaElements.length; i++) {\n const mediaElement = mediaElements[i];\n if (mediaElement.tagName === \"IMG\") {\n mediaElement.addEventListener(\"load\", () => {\n performRequentialRefresh();\n });\n mediaElement.addEventListener(\"error\", () => {\n performRequentialRefresh();\n });\n } else if (mediaElement.tagName === \"VIDEO\") {\n mediaElement.addEventListener(\"canplaythrough\", () => {\n performRequentialRefresh();\n });\n mediaElement.addEventListener(\"error\", () => {\n performRequentialRefresh();\n });\n }\n }\n }\n\n const playingClass = \"gleap-tour-video--playing\";\n const playPauseContainer = document.querySelector(\n \".gleap-tour-video-playpause\"\n );\n\n const videoElement = document.querySelector(\".gleap-tour-video-obj\");\n if (videoElement) {\n const videoContainer = videoElement.closest(\".gleap-tour-video\");\n\n if (self.unmuted) {\n if (videoElement) {\n videoElement.pause();\n videoElement.muted = false;\n videoElement.play();\n videoContainer.classList.add(playingClass);\n }\n }\n\n videoElement.addEventListener(\"ended\", function () {\n playPauseContainer.innerHTML = loadIcon(\"replay\");\n playPauseContainer.classList.add(\n \"gleap-tour-video-svg--fullscreen\"\n );\n videoContainer.classList.remove(playingClass);\n });\n\n videoElement.addEventListener(\"play\", function () {\n playPauseContainer.classList.remove(\n \"gleap-tour-video-svg--fullscreen\"\n );\n });\n\n if (playPauseContainer) {\n playPauseContainer.addEventListener(\"click\", () => clickVideo());\n }\n\n const clickVideo = () => {\n if (videoElement.muted) {\n self.unmuted = true;\n\n videoElement.pause();\n videoElement.currentTime = 0;\n videoElement.muted = false;\n videoElement.play();\n\n playPauseContainer.innerHTML = loadIcon(\"mute\");\n videoContainer.classList.add(playingClass);\n } else if (videoElement.paused) {\n videoElement.muted = false;\n videoElement.play();\n\n playPauseContainer.innerHTML = loadIcon(\"mute\");\n videoContainer.classList.add(playingClass);\n } else {\n videoElement.pause();\n playPauseContainer.innerHTML = loadIcon(\"unmute\");\n videoContainer.classList.remove(playingClass);\n }\n };\n }\n },\n });\n this.gleapTourObj.drive();\n\n document.addEventListener(\"click\", onDocumentClick, true);\n }\n}\n","import { injectStyledCSS } from \"./UI\";\nimport GleapNetworkIntercepter from \"./GleapNetworkIntercepter\";\nimport {\n fixGleapHeight,\n gleapDataParser,\n runFunctionWhenDomIsReady,\n} from \"./GleapHelper\";\nimport GleapSession from \"./GleapSession\";\nimport GleapStreamedEvent from \"./GleapStreamedEvent\";\nimport GleapConfigManager from \"./GleapConfigManager\";\nimport GleapFeedback from \"./GleapFeedback\";\nimport GleapFrameManager from \"./GleapFrameManager\";\nimport GleapMetaDataManager from \"./GleapMetaDataManager\";\nimport GleapConsoleLogManager from \"./GleapConsoleLogManager\";\nimport GleapClickListener from \"./GleapClickListener\";\nimport GleapFeedbackButtonManager from \"./GleapFeedbackButtonManager\";\nimport GleapCustomDataManager from \"./GleapCustomDataManager\";\nimport GleapEventManager from \"./GleapEventManager\";\nimport GleapCustomActionManager from \"./GleapCustomActionManager\";\nimport GleapReplayRecorder from \"./GleapReplayRecorder\";\nimport GleapMarkerManager from \"./GleapMarkerManager\";\nimport GleapTranslationManager from \"./GleapTranslationManager\";\nimport GleapShortcutListener from \"./GleapShortcutListener\";\nimport GleapPreFillManager from \"./GleapPreFillManager\";\nimport GleapNotificationManager from \"./GleapNotificationManager\";\nimport GleapBannerManager from \"./GleapBannerManager\";\nimport GleapModalManager from \"./GleapModalManager\";\nimport GleapAudioManager from \"./GleapAudioManager\";\nimport GleapTagManager from \"./GleapTagManager\";\nimport GleapAdminManager from \"./GleapAdminManager\";\nimport GleapProductTours from \"./GleapProductTours\";\nimport { checkPageFilter } from \"./GleapPageFilter\";\nimport { registerGleapChecklist } from \"./GleapChecklist\";\nimport ChecklistNetworkManager from \"./ChecklistNetworkManager\";\n\nif (\n typeof window !== \"undefined\" &&\n typeof HTMLCanvasElement !== \"undefined\" &&\n HTMLCanvasElement.prototype &&\n HTMLCanvasElement.prototype.__originalGetContext === undefined\n) {\n HTMLCanvasElement.prototype.__originalGetContext =\n HTMLCanvasElement.prototype.getContext;\n HTMLCanvasElement.prototype.getContext = function (type, options) {\n return this.__originalGetContext(type, {\n ...options,\n preserveDrawingBuffer: true,\n });\n };\n}\n\nif (\n typeof customElements !== \"undefined\" &&\n typeof HTMLElement !== \"undefined\" &&\n typeof window !== \"undefined\"\n) {\n registerGleapChecklist();\n}\n\nclass Gleap {\n static invoked = true;\n static silentCrashReportSent = false;\n initialized = false;\n offlineMode = false;\n disablePageTracking = false;\n disableInAppNotifications = false;\n\n // Global data\n globalData = {\n screenRecordingData: null,\n webReplay: null,\n snapshotPosition: {\n x: 0,\n y: 0,\n },\n };\n\n // Gleap singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new Gleap();\n return this.instance;\n } else {\n return this.instance;\n }\n }\n\n /**\n * Main constructor\n */\n constructor() {\n if (typeof window !== \"undefined\") {\n // Make sure all instances are ready.\n GleapMetaDataManager.getInstance();\n GleapConsoleLogManager.getInstance().start();\n GleapClickListener.getInstance().start();\n GleapAdminManager.getInstance().start();\n }\n }\n\n /**\n * Sets the development environment\n * @param {*} environment\n */\n static setEnvironment(environment) {\n GleapMetaDataManager.getInstance().environment = environment;\n }\n\n /**\n * Set tags to be submitted with each ticket.\n * @param {*} tags\n */\n static setTags(tags) {\n GleapTagManager.getInstance().setTags(tags);\n }\n\n /**\n * Sets a custom URL handler.\n * @param {*} urlHandler\n */\n static setUrlHandler(urlHandler) {\n GleapFrameManager.getInstance().setUrlHandler(urlHandler);\n }\n\n /**\n * Active the Gleap offline mode.\n * @param {*} offlineMode\n */\n static setOfflineMode(offlineMode) {\n const instance = this.getInstance();\n instance.offlineMode = offlineMode;\n }\n\n /**\n * Disable the in-app notifications.\n * @param {*} disableInAppNotifications\n */\n static setDisableInAppNotifications(disableInAppNotifications) {\n const instance = this.getInstance();\n instance.disableInAppNotifications = disableInAppNotifications;\n }\n\n /**\n * Disable the default page tracking.\n * @param {*} disablePageTracking\n */\n static setDisablePageTracking(disablePageTracking) {\n const instance = this.getInstance();\n instance.disablePageTracking = disablePageTracking;\n }\n\n /**\n * Revert console log overwrite.\n */\n static disableConsoleLogOverwrite() {\n GleapConsoleLogManager.getInstance().stop();\n }\n\n /**\n * Set the AI tools.\n * @param {*} tools\n */\n static setAiTools(tools) {\n GleapConfigManager.getInstance().setAiTools(tools);\n GleapFrameManager.getInstance().sendConfigUpdate();\n }\n\n /**\n * Attaches external network logs.\n */\n static attachNetworkLogs(networkLogs) {\n GleapNetworkIntercepter.getInstance().externalRequests =\n gleapDataParser(networkLogs);\n }\n\n /**\n * Add entry to logs.\n * @param {*} message\n * @param {*} logLevel\n * @returns\n */\n static log(message, logLevel = \"INFO\") {\n GleapConsoleLogManager.getInstance().addLog(message, logLevel);\n }\n\n /**\n * Initializes the SDK\n * @param {*} sdkKey\n */\n static initialize(sdkKey) {\n const instance = this.getInstance();\n if (instance.initialized) {\n console.warn(\"Gleap already initialized.\");\n return;\n }\n\n instance.initialized = true;\n\n try {\n fixGleapHeight();\n } catch (error) {}\n\n // Start session\n const sessionInstance = GleapSession.getInstance();\n sessionInstance.sdkKey = sdkKey;\n sessionInstance.setOnSessionReady(() => {\n // Run auto configuration.\n setTimeout(() => {\n GleapConfigManager.getInstance()\n .start()\n .then(() => {\n GleapStreamedEvent.getInstance().start();\n\n runFunctionWhenDomIsReady(() => {\n // Inject the widget buttons\n GleapFeedbackButtonManager.getInstance().injectFeedbackButton();\n\n // Inject the notification container\n GleapNotificationManager.getInstance().injectNotificationUI();\n\n // Check for uncompleted tour.\n Gleap.checkForUncompletedTour();\n\n // Check for URL params.\n Gleap.checkForUrlParams();\n\n // Notify event.\n GleapEventManager.notifyEvent(\"initialized\");\n });\n })\n .catch(function (err) {\n console.warn(\"Failed to initialize Gleap.\");\n });\n }, 0);\n });\n sessionInstance.startSession();\n }\n\n static openURL(url, newTab = false) {\n GleapFrameManager.getInstance().urlHandler(url, newTab);\n }\n\n static checkForUrlParams() {\n if (typeof window === \"undefined\" || !window.location.search) {\n return;\n }\n\n try {\n const urlParams = new URLSearchParams(window.location.search);\n\n const widget = urlParams.get(\"gleap_widget\");\n if (widget && widget.length > 0) {\n Gleap.open();\n }\n\n const conversationFlow = urlParams.get(\"gleap_conversation\");\n if (conversationFlow && conversationFlow.length > 0) {\n if (conversationFlow === \"true\") {\n Gleap.startConversation(true);\n } else {\n Gleap.startBot(conversationFlow, true);\n }\n }\n\n const feedbackFlow = urlParams.get(\"gleap_feedback\");\n if (feedbackFlow && feedbackFlow.length > 0) {\n Gleap.startFeedbackFlow(feedbackFlow);\n }\n const surveyFlow = urlParams.get(\"gleap_survey\");\n const surveyFlowFormat = urlParams.get(\"gleap_survey_format\");\n if (surveyFlow && surveyFlow.length > 0) {\n Gleap.showSurvey(\n surveyFlow,\n surveyFlowFormat === \"survey_full\" ? \"survey_full\" : \"survey\"\n );\n }\n const tourId = urlParams.get(\"gleap_tour\");\n if (tourId && tourId.length > 0) {\n var tourDelay = parseInt(urlParams.get(\"gleap_tour_delay\"));\n if (isNaN(tourDelay)) {\n tourDelay = 2;\n }\n\n setTimeout(() => {\n Gleap.startProductTour(tourId);\n }, tourDelay * 1000);\n }\n } catch (exp) {}\n }\n\n /**\n * Destroy\n * @returns\n */\n static destroy() {\n GleapReplayRecorder.getInstance().stop();\n GleapStreamedEvent.getInstance().stop();\n GleapFrameManager.getInstance().destroy();\n GleapFeedbackButtonManager.getInstance().destroy();\n GleapNotificationManager.getInstance().clearAllNotifications(true);\n GleapSession.getInstance().clearSession(0, false);\n GleapBannerManager.getInstance().removeBannerUI();\n\n // Reset the initialized flag and clear the instance\n this.instance = null;\n }\n\n /**\n * Close any open banner.\n */\n static closeBanner() {\n GleapBannerManager.getInstance().removeBannerUI();\n }\n\n /**\n * Close any open modal.\n */\n static closeModal() {\n GleapModalManager.getInstance().hideModal();\n }\n\n /**\n * Enable or disable Gleap session tracking through cookies.\n * @param {*} useCookies\n */\n static setUseCookies(useCookies) {\n GleapSession.getInstance().useCookies = useCookies;\n }\n\n /**\n * Indentifies the user session\n * @param {string} userId\n * @param {*} userData\n */\n static identify(userId, userData, userHash) {\n return GleapSession.getInstance().identifySession(\n userId,\n gleapDataParser(userData),\n userHash\n );\n }\n\n /**\n * Updates the contact data.\n * @param {*} userData\n */\n static updateContact(userData) {\n return GleapSession.getInstance().updateSession(gleapDataParser(userData));\n }\n\n /**\n * Clears the current contact.\n */\n static clearIdentity() {\n GleapSession.getInstance().clearSession();\n }\n\n /**\n * Returns the current user session\n */\n static getIdentity() {\n return GleapSession.getInstance().getSession();\n }\n\n /**\n * Returns whether the user is identified or not.\n */\n static isUserIdentified() {\n const session = GleapSession.getInstance().session;\n if (session && session.userId && session.userId.length > 0) {\n return true;\n }\n return false;\n }\n\n /**\n * Widget opened status\n * @returns {boolean} isOpened\n */\n static isOpened() {\n return GleapFrameManager.getInstance().isOpened();\n }\n\n /**\n * Hides any open Gleap dialogs.\n */\n static hide() {\n GleapFrameManager.getInstance().hideWidget();\n }\n\n /**\n * Sets the maximum network request count.\n */\n static setMaxNetworkRequests(maxRequests) {\n GleapNetworkIntercepter.getInstance().setMaxRequests(maxRequests);\n }\n\n /**\n * Sets the maximum network request count.\n */\n static startNetworkLogger() {\n GleapNetworkIntercepter.getInstance().start();\n }\n\n /**\n * Sets the network logger blacklist.\n * @param {Array} networkLogBlacklist\n */\n static setNetworkLogsBlacklist(networkLogBlacklist) {\n GleapNetworkIntercepter.getInstance().setBlacklist(networkLogBlacklist);\n }\n\n /**\n * Sets the network logger props to ignore.\n * @param {Array} filters\n */\n static setNetworkLogPropsToIgnore(filters) {\n GleapNetworkIntercepter.getInstance().setFilters(filters);\n }\n\n /**\n * Set custom replay options.\n * @param {*} options\n */\n static setReplayOptions(options) {\n GleapReplayRecorder.getInstance().setOptions(options);\n }\n\n /**\n * Closes any open Gleap dialogs.\n * @param {boolean} resetRoutes\n */\n static close(resetRoutes = false) {\n GleapFrameManager.getInstance().hideWidget(resetRoutes);\n }\n\n /**\n * Starts the Gleap flow.\n */\n static open() {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Track a custom event\n * @param {string} name\n * @param {any} data\n */\n static trackEvent(name, data) {\n GleapStreamedEvent.getInstance().logEvent(name, data);\n }\n\n /**\n * Logs a custom event\n * @param {string} name\n * @param {any} data\n * @deprecated Please use trackEvent instead.\n */\n static logEvent(name, data) {\n GleapStreamedEvent.getInstance().logEvent(name, data);\n }\n\n /**\n * Prefills a specific form field.\n * @param {*} key\n * @param {*} value\n */\n static preFillForm(data) {\n const cleanedData = gleapDataParser(data);\n GleapPreFillManager.getInstance().formPreFill = cleanedData;\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"prefill-form-data\",\n data: cleanedData,\n },\n true\n );\n }\n\n /**\n * Register events for Gleap.\n * @param {*} eventName\n * @param {*} callback\n */\n static on(eventName, callback) {\n GleapEventManager.on(eventName, callback);\n }\n\n /**\n * Enable or disable shortcuts\n * @param {boolean} enabled\n */\n static enableShortcuts(enabled) {\n if (enabled) {\n GleapShortcutListener.getInstance().start();\n } else {\n GleapShortcutListener.getInstance().stop();\n }\n }\n\n /**\n * Show or hide the feedback button\n * @param {*} show\n * @returns\n */\n static showFeedbackButton(show) {\n GleapFeedbackButtonManager.getInstance().toggleFeedbackButton(show);\n }\n\n /**\n * Sets the app version code.\n * @param {string} appVersionCode\n */\n static setAppVersionCode(appVersionCode) {\n GleapMetaDataManager.setAppVersionCode(appVersionCode);\n }\n\n /**\n * Sets the app version code.\n * @param {string} appVersionCode\n */\n static setAppBuildNumber(appBuildNumber) {\n GleapMetaDataManager.setAppBuildNumber(appBuildNumber);\n }\n\n /**\n * Set a custom ws api url.\n * @param {string} wsApiUrl\n */\n static setWSApiUrl(wsApiUrl) {\n GleapSession.getInstance().wsApiUrl = wsApiUrl;\n }\n\n /**\n * Set a custom api url.\n * @param {string} apiUrl\n */\n static setApiUrl(apiUrl) {\n GleapSession.getInstance().apiUrl = apiUrl;\n }\n\n /**\n * Set a custom banner url.\n * @param {string} bannerUrl\n */\n static setBannerUrl(bannerUrl) {\n GleapBannerManager.getInstance().setBannerUrl(bannerUrl);\n }\n\n /**\n * Set a custom modal url.\n * @param {string} modalUrl\n */\n static setModalUrl(modalUrl) {\n GleapModalManager.getInstance().setModalUrl(modalUrl);\n }\n\n /**\n * Set a custom frame api url.\n * @param {string} frameUrl\n */\n static setFrameUrl(frameUrl) {\n GleapFrameManager.getInstance().frameUrl = frameUrl;\n }\n\n /**\n * This method is used to set ticket attributes programmatically.\n * @param {*} key The key of the attribute you want to add.\n * @param {*} value The value to set.\n */\n static setTicketAttribute(key, value) {\n GleapCustomDataManager.getInstance().setTicketAttribute(key, value);\n }\n\n /**\n * This method is used to unset ticket attributes programmatically.\n * @param {*} key The key of the attribute you want to unset.\n */\n static unsetTicketAttribute(key) {\n GleapCustomDataManager.getInstance().unsetTicketAttribute(key);\n }\n\n /**\n * This method is used to clear ticket attributes programmatically.\n */\n static clearTicketAttributes() {\n GleapCustomDataManager.getInstance().clearTicketAttributes();\n }\n\n /**\n * Set custom data that will be attached to the bug-report.\n * @param {*} data\n */\n static attachCustomData(data) {\n GleapCustomDataManager.getInstance().attachCustomData(data);\n }\n\n /**\n * Add one key value pair to the custom data object\n * @param {*} key The key of the custom data entry you want to add.\n * @param {*} value The custom data you want to add.\n */\n static setCustomData(key, value) {\n GleapCustomDataManager.getInstance().setCustomData(key, value);\n }\n\n /**\n * Remove one key value pair of the custom data object\n * @param {*} key The key of the custom data entry you want to remove.\n */\n static removeCustomData(key) {\n GleapCustomDataManager.getInstance().removeCustomData(key);\n }\n\n /**\n * Clear the custom data\n */\n static clearCustomData() {\n GleapCustomDataManager.getInstance().clearCustomData();\n }\n\n /**\n * Play or mute the sound.\n * @param {*} play\n */\n static playSound(play) {\n GleapAudioManager.playSound(play);\n }\n\n /**\n * Show or hide the notification badge count.\n * @param {boolean} showNotificationBadge show or hide the notification badge\n *\n */\n static showTabNotificationBadge(showNotificationBadge) {\n const notificationInstance = GleapNotificationManager.getInstance();\n notificationInstance.showNotificationBadge = showNotificationBadge;\n notificationInstance.updateTabBarNotificationCount();\n }\n\n /**\n * Override the browser language.\n * @param {string} language country code with two letters\n */\n static setLanguage(language) {\n GleapTranslationManager.getInstance().setOverrideLanguage(language);\n\n if (Gleap.getInstance().initialized) {\n setTimeout(() => {\n Gleap.getInstance().softReInitialize();\n\n // Update language for contact.\n Gleap.updateContact({\n lang: language,\n });\n }, 1000);\n }\n }\n\n /**\n * Register custom action\n * @param {*} action\n */\n static registerCustomAction(customAction) {\n GleapCustomActionManager.registerCustomAction(customAction);\n }\n\n /**\n * Triggers a custom action\n * @param {*} actionName\n */\n static triggerCustomAction(name) {\n GleapCustomActionManager.triggerCustomAction(name);\n }\n\n /**\n * Sets a custom color scheme.\n * @param {string} primaryColor\n */\n static setStyles(\n primaryColor,\n headerColor,\n buttonColor,\n backgroundColor = \"#ffffff\",\n borderRadius = 20,\n buttonX = 20,\n buttonY = 20,\n buttonStyle = GleapFeedbackButtonManager.FEEDBACK_BUTTON_BOTTOM_LEFT\n ) {\n runFunctionWhenDomIsReady(() => {\n injectStyledCSS(\n primaryColor,\n headerColor,\n buttonColor,\n borderRadius,\n backgroundColor,\n buttonX,\n buttonY,\n buttonStyle\n );\n });\n }\n\n /**\n * Sends a silent feedback report\n * @param {*} formData\n * @param {*} priority\n * @param {*} excludeData\n */\n static sendSilentCrashReport(\n description = \"\",\n priority = \"MEDIUM\",\n excludeData = {\n screenshot: true,\n replays: true,\n attachments: true,\n }\n ) {\n return Gleap.sendSilentCrashReportWithFormData(\n {\n description,\n },\n priority,\n excludeData\n );\n }\n\n /**\n * Sends a silent feedback report\n * @param {*} formData\n * @param {*} priority\n * @param {*} excludeData\n */\n static sendSilentCrashReportWithFormData(\n formData,\n priority = \"MEDIUM\",\n excludeData = {\n screenshot: true,\n replays: true,\n attachments: true,\n }\n ) {\n if (this.silentCrashReportSent) {\n return;\n }\n\n this.silentCrashReportSent = true;\n setTimeout(() => {\n this.silentCrashReportSent = false;\n }, 10000);\n\n const excludeDataCleaned = excludeData ? gleapDataParser(excludeData) : {};\n const sessionInstance = GleapSession.getInstance();\n if (!sessionInstance.ready) {\n return;\n }\n\n var newFormData = formData ? formData : {};\n if (sessionInstance.session.email) {\n newFormData.reportedBy = sessionInstance.session.email;\n }\n\n const feedback = new GleapFeedback(\n \"CRASH\",\n priority,\n newFormData,\n true,\n excludeDataCleaned\n );\n feedback\n .sendFeedback()\n .then(() => {})\n .catch((error) => {});\n }\n\n /**\n * Shows a survey manually.\n * @param {*} actionType\n * @param {*} format\n */\n static showSurvey(actionType, format = \"survey\") {\n Gleap.startFeedbackFlowWithOptions(\n actionType,\n {\n hideBackButton: true,\n format,\n },\n true\n );\n }\n\n /**\n * Starts a classic feedback form.\n */\n static startClassicForm(formId, showBackButton) {\n Gleap.startFeedbackFlowWithOptions(formId, {\n hideBackButton: !showBackButton,\n });\n }\n\n /**\n * Starts the bug reporting flow.\n */\n static startFeedbackFlow(feedbackFlow, showBackButton) {\n Gleap.startFeedbackFlowWithOptions(feedbackFlow, {\n hideBackButton: !showBackButton,\n });\n }\n\n /**\n * Starts the bug reporting flow.\n */\n static startFeedbackFlowWithOptions(\n feedbackFlow,\n options = {},\n isSurvey = false\n ) {\n const { autostartDrawing, hideBackButton, format } = options;\n const sessionInstance = GleapSession.getInstance();\n if (!sessionInstance.ready) {\n return;\n }\n\n // Initially set scroll position\n Gleap.getInstance().setGlobalDataItem(\"snapshotPosition\", {\n x: window.scrollX,\n y: window.scrollY,\n });\n\n var action = \"start-feedbackflow\";\n if (isSurvey) {\n action = \"start-survey\";\n }\n\n GleapFrameManager.getInstance().setAppMode(isSurvey ? format : \"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: action,\n data: {\n flow: feedbackFlow,\n hideBackButton: hideBackButton,\n format,\n },\n },\n true\n );\n\n if (autostartDrawing) {\n GleapFrameManager.getInstance().showDrawingScreen(\"screenshot\");\n } else {\n GleapFrameManager.getInstance().showWidget();\n }\n }\n\n /**\n * Opens the conversations overview.\n */\n static openConversations(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-conversations\",\n data: {\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens a conversation\n */\n static openConversation(shareToken, showBackButton = true) {\n if (!shareToken) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-conversation\",\n data: {\n shareToken,\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Starts a new conversation\n */\n static startConversation(showBackButton = true) {\n Gleap.startBot(\"\", showBackButton);\n }\n\n /**\n * Starts a new conversation and attaches the bot with the given id.\n */\n static startBot(botId, showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"start-bot\",\n data: {\n botId: botId ? botId : \"\",\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens a help center collection\n */\n static openHelpCenterCollection(collectionId, showBackButton = true) {\n if (!collectionId) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-help-collection\",\n data: {\n collectionId,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens a help article\n */\n static openHelpCenterArticle(articleId, showBackButton = true) {\n if (!articleId) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-help-article\",\n data: {\n articleId,\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens the help center.\n */\n static openHelpCenter(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-helpcenter\",\n data: {\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Search for news articles in the help center\n */\n static searchHelpCenter(term, showBackButton = true) {\n if (!term) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-helpcenter-search\",\n data: {\n term,\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens a news article\n */\n static openNewsArticle(id, showBackButton = true) {\n if (!id) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-news-article\",\n data: {\n id,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Open the checklists overview.\n */\n static openChecklists(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-checklists\",\n data: {},\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Starts a new checklist and opens it.\n */\n static startChecklist(\n outboundId,\n showBackButton = true,\n sharedKey = undefined\n ) {\n if (!outboundId) {\n return false;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"start-checklist\",\n data: {\n outboundId: outboundId,\n hideBackButton: !showBackButton,\n ...(sharedKey ? { sharedKey: sharedKey } : {}),\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n\n return true;\n }\n\n /**\n * Open an existing checklist.\n */\n static openChecklist(checklistId, showBackButton = true) {\n if (!checklistId) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-checklist\",\n data: {\n id: checklistId,\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Gets the full checklist data by validating the outbound ID and fetching the data.\n * @param {string} outboundId - The outbound checklist ID to get data for.\n * @param {string} [sharedKey] - Optional shared key for the checklist.\n * @returns {Promise} A promise that resolves with the full checklist data.\n *\n * Available events for checklist updates (use Gleap.on() to listen):\n * - 'checklist-loaded': Fired when a checklist is initially loaded\n * - 'checklist-update': Fired when checklist data is updated\n * - 'checklist-step-completed': Fired when a step is marked as completed\n * - 'checklist-completed': Fired when the entire checklist is completed\n */\n static getChecklistData(outboundId, sharedKey) {\n if (!outboundId) {\n return Promise.reject(new Error(\"outboundId is required\"));\n }\n\n const networkManager = ChecklistNetworkManager.getInstance();\n\n // First validate the checklist to get the internal ID\n return networkManager\n .validateChecklist(outboundId, sharedKey)\n .then((internalId) => {\n // Then fetch the full checklist data\n return networkManager.fetchChecklist(internalId);\n });\n }\n\n /**\n * Opens the news overview.\n */\n static openNews(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-news\",\n data: {\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens the feature requests overview.\n */\n static openFeatureRequests(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-feature-requests\",\n data: {},\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n isLiveMode() {\n if (this.offlineMode === true) {\n return false;\n }\n\n var hostname = window.location.hostname;\n const isLocalHost =\n [\"localhost\", \"127.0.0.1\", \"0.0.0.0\", \"\", \"::1\"].includes(hostname) ||\n hostname.startsWith(\"192.168.\") ||\n hostname.startsWith(\"10.0.\") ||\n hostname.endsWith(\".local\") ||\n !hostname.includes(\".\");\n return !isLocalHost;\n }\n\n softReInitialize() {\n GleapFrameManager.getInstance().destroy();\n GleapConfigManager.getInstance()\n .start()\n .then(() => {\n // Update the feedback button.\n GleapFeedbackButtonManager.getInstance().refresh();\n\n // Inject the notification container\n GleapNotificationManager.getInstance().injectNotificationUI();\n })\n .catch(function (err) {\n console.warn(\"Failed to initialize Gleap.\");\n });\n }\n\n /**\n * Performs an action.\n * @param {*} action\n */\n performActions(actions) {\n for (let i = 0; i < actions.length; i++) {\n const action = actions[i];\n if (action && action.actionType) {\n if (action.pageFilter && window && window.location) {\n const passed = checkPageFilter(\n window.location.href,\n action.pageFilter,\n action.pageFilterType\n );\n\n if (!passed) {\n continue;\n }\n }\n\n if (action.actionType === \"notification\") {\n if (action?.data?.checklist?.popupType === \"widget\") {\n Gleap.openChecklist(action.data.checklist.id, true);\n } else {\n if (!this.disableInAppNotifications) {\n Gleap.showNotification(action);\n }\n }\n } else if (action.actionType === \"banner\") {\n Gleap.showBanner(action);\n } else if (action.actionType === \"modal\") {\n Gleap.showModal(action);\n } else if (action.actionType === \"tour\") {\n Gleap.startProductTourWithConfig(action.outbound, action.data, false);\n } else {\n Gleap.showSurvey(action.actionType, action.format);\n }\n }\n }\n }\n\n static startProductTour(tourId, checkStartUrl = false) {\n const self = this;\n GleapSession.getInstance()\n .startProductTourConfig(tourId)\n .then((config) => {\n if (\n checkStartUrl &&\n config?.startURL &&\n !window?.location?.href?.includes(config?.baseURL)\n ) {\n window.location.href = `${config.startURL}?gleap_tour=${tourId}&gleap_tour_delay=1`;\n return;\n }\n\n self.startProductTourWithConfig(tourId, config, true);\n })\n .catch((error) => {});\n }\n\n static checkForUncompletedTour() {\n const tourData = GleapProductTours.getInstance().loadUncompletedTour();\n if (tourData) {\n GleapProductTours.getInstance().startWithConfig(\n tourData.tourId,\n tourData.tourData,\n 500\n );\n }\n }\n\n static startProductTourWithConfig(tourId, config, manually = false) {\n GleapProductTours.getInstance().startWithConfig(\n tourId,\n config,\n 0,\n manually\n );\n }\n\n static showBanner(data) {\n try {\n GleapBannerManager.getInstance().showBanner(data);\n } catch (e) {}\n }\n\n static showModal(data) {\n try {\n GleapModalManager.getInstance().showModal(data);\n } catch (e) {}\n }\n\n static showNotification(data) {\n GleapNotificationManager.getInstance().showNotification(data);\n }\n\n /**\n * Sets a global data value\n * @param {*} key\n * @param {*} value\n */\n setGlobalDataItem(key, value) {\n this.globalData[key] = value;\n }\n\n /**\n * Gets a global data value\n * @param {*} key\n * @returns\n */\n getGlobalDataItem(key) {\n return this.globalData[key];\n }\n\n /**\n * Takes the current replay and assigns it to the global data array.\n */\n takeCurrentReplay() {\n const replayData = GleapReplayRecorder.getInstance().getReplayData();\n this.setGlobalDataItem(\"webReplay\", replayData);\n }\n}\n\n// Check for unperformed Gleap actions.\nif (typeof window !== \"undefined\") {\n const GleapActions = window.GleapActions;\n if (GleapActions && GleapActions.length > 0) {\n for (var i = 0; i < GleapActions.length; i++) {\n const GLAction = GleapActions[i];\n if (GLAction && GLAction.e && Gleap[GLAction.e]) {\n Gleap[GLAction.e].apply(Gleap, GLAction.a);\n }\n }\n }\n}\n\nconst handleGleapLink = (href) => {\n try {\n const urlParts = href.split(\"/\");\n const type = urlParts[2];\n if (type === \"article\") {\n const identifier = urlParts[3];\n Gleap.openHelpCenterArticle(identifier, true);\n }\n\n if (type === \"collection\") {\n const identifier = urlParts[3];\n Gleap.openHelpCenterCollection(identifier, true);\n }\n\n if (type === \"flow\") {\n const identifier = urlParts[3];\n Gleap.startFeedbackFlow(identifier, true);\n }\n\n if (type === \"survey\") {\n const identifier = urlParts[3];\n Gleap.showSurvey(identifier);\n }\n\n if (type === \"bot\") {\n const identifier = urlParts[3];\n Gleap.startBot(identifier, true);\n }\n\n if (type === \"news\") {\n const identifier = urlParts[3];\n Gleap.openNewsArticle(identifier, true);\n }\n\n if (type === \"checklist\") {\n const identifier = urlParts[3];\n Gleap.startChecklist(identifier, true, urlParts[4]);\n }\n\n if (type === \"tour\") {\n const identifier = urlParts[3];\n Gleap.startProductTour(identifier);\n }\n } catch (e) {\n console.error(\"Failed to handle Gleap link: \", href);\n }\n};\n\nexport {\n GleapNetworkIntercepter,\n GleapAudioManager,\n GleapNotificationManager,\n GleapBannerManager,\n GleapModalManager,\n GleapPreFillManager,\n GleapShortcutListener,\n GleapMarkerManager,\n GleapTranslationManager,\n GleapReplayRecorder,\n GleapFeedback,\n GleapConsoleLogManager,\n GleapCustomActionManager,\n GleapEventManager,\n GleapCustomDataManager,\n GleapFeedbackButtonManager,\n GleapClickListener,\n GleapSession,\n GleapStreamedEvent,\n GleapConfigManager,\n GleapFrameManager,\n GleapMetaDataManager,\n GleapTagManager,\n GleapProductTours,\n handleGleapLink,\n};\n\nexport default Gleap;\n","/**\n * Gleap Checklist Web Component\n *\n * Displays an interactive checklist fetched from the Gleap API.\n * Allows users to view steps, mark them as done, trigger actions,\n * and automatically updates based on external events. Includes localization support\n * via GleapTranslationManager.\n *\n * Waits for a Gleap session to be available before initializing and\n * reloads when the session changes (via 'session-updated' event).\n *\n * @element gleap-checklist\n *\n * @attr {string} checklistId - The outbound ID of the checklist to display. Required.\n * @attr {boolean} [info=true] - Whether to display the info section (title, description, sender).\n * @attr {boolean} [progressbar=true] - Whether to display the progress bar.\n * @attr {boolean} [dark=false] - Apply dark mode styling.\n * @attr {boolean} [floating=false] - When set to \"true\", shows a small bubble that expands on click.\n *\n * @cssprop --color-bg - Background color.\n * @cssprop --color-font-title - Title text color.\n * @cssprop --color-font-text - Body text color.\n * @cssprop --color-font-light - Lighter text color.\n * @cssprop --color-primary - Primary accent color.\n * @cssprop --color-primary-light - Light primary color shade.\n * @cssprop --color-primary-contrast - Text color for primary buttons.\n * @cssprop --color-border - Border color.\n * @cssprop --color-gray-light - Light gray background/border color.\n * @cssprop --color-gray-lighter - Even lighter gray background.\n * @cssprop --color-gray-dark - Darker gray text/icon color.\n * @cssprop --color-success - Success color (e.g., for completed items).\n * @cssprop --color-success-light - Contrast color for success elements.\n * @cssprop --radius-sm - Small border radius.\n * @cssprop --radius-lg - Large border radius.\n * @cssprop --radius-full - Full (pill) border radius.\n * @cssprop --shadow-sm - Small box shadow.\n * @cssprop --shadow-md - Medium box shadow.\n * @cssprop --animation-duration - Duration for animations (e.g., accordion).\n * @cssprop --animation-timing - Timing function for animations.\n */\nimport ChecklistNetworkManager from \"./ChecklistNetworkManager\";\nimport Gleap, {\n GleapConfigManager,\n GleapSession,\n GleapTranslationManager,\n GleapEventManager,\n} from \"./Gleap\";\n\nexport const registerGleapChecklist = () => {\n if (\n typeof customElements !== \"undefined\" &&\n typeof HTMLElement !== \"undefined\" &&\n typeof window !== \"undefined\"\n ) {\n class GleapChecklist extends HTMLElement {\n /** @private {number} */\n activeStep = -1;\n /** @private {object|null} */\n checklistData = null;\n /** @private {boolean} */\n _isInitialLoad = false;\n /** @private {boolean} */\n _initialActiveSet = false;\n /** @private {boolean} Flag indicating if the component has loaded data at least once. */\n _hasLoaded = false;\n /** @private {boolean} Flag indicating if a Gleap session is currently considered active by the component. */\n _isSessionReady = false;\n\n /** @private {Function} */\n _boundHandleChecklistUpdate = this.handleChecklistUpdate.bind(this);\n /** @private {Function} */\n _boundHandleSessionUpdate = this.handleSessionUpdate.bind(this);\n\n constructor() {\n super();\n this.attachShadow({ mode: \"open\" });\n // Ensure NetworkManager instance is created only if Gleap is available\n try {\n if (\n typeof GleapSession !== \"undefined\" &&\n typeof ChecklistNetworkManager !== \"undefined\"\n ) {\n this._networkManager = ChecklistNetworkManager.getInstance();\n } else {\n this._networkManager = null;\n }\n } catch (e) {\n this._networkManager = null;\n }\n // Bind click handlers for floating mode.\n this._boundFloatingLauncherClick =\n this.handleFloatingLauncherClick.bind(this);\n this._boundFloatingCloseClick =\n this.handleFloatingCloseClick.bind(this);\n this._floatingHideTimeout = null;\n }\n\n // --- Observed Attributes ---\n static get observedAttributes() {\n return [\n \"checklistId\",\n \"info\",\n \"progressbar\",\n \"dark\",\n \"floating\",\n \"sharedKey\",\n ];\n }\n\n // --- Lifecycle Callbacks ---\n connectedCallback() {\n window.addEventListener(\n \"checkListUpdate\",\n this._boundHandleChecklistUpdate\n );\n window.addEventListener(\n \"session-updated\",\n this._boundHandleSessionUpdate\n );\n window.addEventListener(\n \"resize\",\n (this._boundResizeHandler = this.handleResize.bind(this))\n );\n this._checkSessionAndLoad();\n }\n\n disconnectedCallback() {\n window.removeEventListener(\n \"checkListUpdate\",\n this._boundHandleChecklistUpdate\n );\n window.removeEventListener(\n \"session-updated\",\n this._boundHandleSessionUpdate\n );\n window.removeEventListener(\"resize\", this._boundResizeHandler);\n this.removeFloatingClickListeners();\n if (this._floatingHideTimeout) {\n clearTimeout(this._floatingHideTimeout);\n this._floatingHideTimeout = null;\n }\n this.checklistData = null;\n this.activeStep = -1;\n this._hasLoaded = false;\n this._isSessionReady = false;\n this._initialActiveSet = false;\n this.renderResponse();\n }\n\n handleResize() {\n this.updateActiveTaskMaxHeight();\n }\n\n attributeChangedCallback(name, oldValue, newValue) {\n if (oldValue !== newValue) {\n if (name === \"checklistId\" && this._isSessionReady) {\n this.loadChecklist();\n } else if (name !== \"checklistId\" && this._hasLoaded) {\n if (this.checklistData) {\n this.renderChecklist(this.checklistData);\n }\n }\n }\n }\n\n // --- Session Handling ---\n _checkSessionAndLoad() {\n const gleapSessionInstance = this._getGleapSessionInstance();\n const hasChecklistId = this.getAttribute(\"checklistId\");\n\n if (gleapSessionInstance.ready && hasChecklistId) {\n this._isSessionReady = true;\n this._networkManager = ChecklistNetworkManager.getInstance();\n this.loadChecklist();\n } else {\n this._isSessionReady = false;\n this._hasLoaded = false;\n this.checklistData = null;\n this.activeStep = -1;\n this._initialActiveSet = false;\n this.renderResponse();\n }\n }\n\n handleSessionUpdate() {\n this._checkSessionAndLoad();\n }\n\n _getGleapSessionInstance() {\n try {\n return typeof GleapSession !== \"undefined\"\n ? GleapSession.getInstance()\n : null;\n } catch (e) {\n return null;\n }\n }\n\n // --- Getters for Configuration ---\n get infoEnabled() {\n const attr = this.getAttribute(\"info\");\n return attr === null || attr.toLowerCase() !== \"false\";\n }\n\n get progressbarEnabled() {\n const attr = this.getAttribute(\"progressbar\");\n return attr === null || attr.toLowerCase() !== \"false\";\n }\n\n get floatingEnabled() {\n return this.getAttribute(\"floating\") === \"true\";\n }\n\n // --- Translation Helpers ---\n _translate(key, defaultValue = \"\") {\n return GleapTranslationManager.translateText(key) || defaultValue;\n }\n\n _translateWithVars(key, vars, defaultValue = \"\") {\n return (\n GleapTranslationManager.translateTextWithVars(key, vars) ||\n defaultValue\n );\n }\n\n // --- SVG Icons ---\n getCheckIcon() {\n return `\n \n `;\n }\n\n // --- Data Loading and Handling ---\n loadChecklist() {\n if (!this._isSessionReady || !this._networkManager) {\n return;\n }\n const checklistId = this.getAttribute(\"checklistId\");\n if (checklistId) {\n this.activeStep = -1;\n this._initialActiveSet = false;\n this.validateChecklist(checklistId);\n } else {\n this.renderResponse();\n this.checklistData = null;\n this._hasLoaded = false;\n }\n }\n\n getQueryParams() {\n const gleapSessionInstance = this._getGleapSessionInstance();\n if (!gleapSessionInstance?.session) {\n return \"\";\n }\n const session = gleapSessionInstance.session;\n let lang = \"en\";\n try {\n if (typeof GleapTranslationManager !== \"undefined\") {\n lang =\n GleapTranslationManager.getInstance().getActiveLanguage() || \"en\";\n }\n } catch (e) {}\n return `gleapId=${session.gleapId || \"\"}&gleapHash=${\n session.gleapHash || \"\"\n }&lang=${lang}`;\n }\n\n makeRequest(method, url, data, callback) {\n const gleapSessionInstance = this._getGleapSessionInstance();\n if (!gleapSessionInstance?.session) {\n const mockXhr = {\n readyState: 4,\n status: 0,\n responseText: \"Session unavailable\",\n _isMock: true,\n };\n callback(mockXhr);\n return;\n }\n const xhr = new XMLHttpRequest();\n xhr.open(method, url);\n try {\n gleapSessionInstance.injectSession(xhr);\n } catch (e) {}\n if (data) {\n xhr.setRequestHeader(\n \"Content-Type\",\n \"application/json;charset=UTF-8\"\n );\n }\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n callback(xhr);\n }\n };\n xhr.onerror = () => {\n callback(xhr);\n };\n xhr.send(data ? JSON.stringify(data) : null);\n }\n\n validateChecklist(outboundId) {\n if (!this._isSessionReady || !this._networkManager) {\n return;\n }\n this.checklistData = null;\n this._hasLoaded = false;\n this.renderResponse();\n const sharedKey = this.getAttribute(\"sharedKey\");\n\n this._networkManager\n .validateChecklist(outboundId, sharedKey)\n .then((internalId) => {\n if (!this.isConnected || !this._isSessionReady || !internalId) {\n return;\n }\n this.fetchChecklist(internalId);\n })\n .catch((error) => {\n this.renderResponse();\n this.checklistData = null;\n this._hasLoaded = false;\n });\n }\n\n fetchChecklist(checklistId) {\n if (!this._isSessionReady || !this._networkManager) {\n return;\n }\n this._isInitialLoad = !this._hasLoaded;\n this._networkManager\n .fetchChecklist(checklistId)\n .then((data) => {\n if (!this.isConnected || !this._isSessionReady || !data) {\n this._hasLoaded = false;\n this.checklistData = null;\n this._checkSessionAndLoad();\n return;\n }\n this.checklistData = data;\n this._hasLoaded = true;\n if (data.status === \"done\") {\n this.renderResponse();\n return;\n }\n if (this._isInitialLoad && !this._initialActiveSet) {\n const steps = data.outbound?.config?.steps || [];\n const completedSteps = data.completedSteps || [];\n const firstIncompleteIndex = steps.findIndex(\n (step) => !completedSteps.includes(step.id)\n );\n this.activeStep =\n firstIncompleteIndex >= 0 ? firstIncompleteIndex : -1;\n if (this.activeStep !== -1) {\n this._initialActiveSet = true;\n }\n }\n this.renderChecklist(this.checklistData);\n \n // Notify external listeners about the initial checklist load\n GleapEventManager.notifyEvent(\"checklist-loaded\", {\n checklistId: this.checklistData.id,\n outboundId: this.checklistData.outbound?.id,\n completedSteps: this.checklistData.completedSteps,\n status: this.checklistData.status,\n data: this.checklistData\n });\n })\n .catch((error) => {\n this.renderResponse();\n this.checklistData = null;\n this._hasLoaded = false;\n });\n }\n\n updateChecklist(id, data) {\n const gleapSessionInstance = this._getGleapSessionInstance();\n if (!gleapSessionInstance?.session) {\n return;\n }\n const apiUrl = gleapSessionInstance.apiUrl;\n if (!apiUrl) {\n return;\n }\n const session = gleapSessionInstance.session;\n const gleapId = session?.gleapId ?? \"\";\n const gleapHash = session?.gleapHash ?? \"\";\n let lang = \"en\";\n try {\n if (typeof GleapTranslationManager !== \"undefined\") {\n lang =\n GleapTranslationManager.getInstance().getActiveLanguage() || \"en\";\n }\n } catch (e) {}\n let url = `${apiUrl}/outbound/checklists/${id}`;\n if (data.checkedStep) {\n url += `/increment/${data.checkedStep}`;\n }\n url += `?gleapId=${gleapId}&gleapHash=${gleapHash}&lang=${lang}`;\n this.makeRequest(\"PUT\", url, data, (xhr) => {\n if (xhr._isMock) return;\n if (!(xhr.status === 200 || xhr.status === 204)) {\n // Update failed\n }\n });\n }\n\n // --- External Update Handling ---\n handleChecklistUpdate(event) {\n if (!this._hasLoaded || !this.checklistData) {\n return;\n }\n const updateData = event.detail;\n if (!updateData || updateData.id !== this.checklistData.id) {\n return;\n }\n const previousCompletedSteps = [\n ...(this.checklistData.completedSteps || []),\n ];\n let dataChanged = false;\n let activeStepCompleted = false;\n const currentlyActiveStepIndex = this.activeStep;\n if (\n updateData.completedSteps &&\n JSON.stringify(updateData.completedSteps) !==\n JSON.stringify(previousCompletedSteps)\n ) {\n this.checklistData.completedSteps = [...updateData.completedSteps];\n dataChanged = true;\n if (currentlyActiveStepIndex !== -1) {\n const activeStepId =\n this.checklistData.outbound?.config?.steps?.[\n currentlyActiveStepIndex\n ]?.id;\n if (\n activeStepId &&\n this.checklistData.completedSteps.includes(activeStepId) &&\n !previousCompletedSteps.includes(activeStepId)\n ) {\n activeStepCompleted = true;\n }\n }\n }\n if (\n updateData.status &&\n updateData.status !== this.checklistData.status\n ) {\n this.checklistData.status = updateData.status;\n dataChanged = true;\n }\n if (activeStepCompleted) {\n const steps = this.checklistData.outbound?.config?.steps || [];\n let nextActiveStep = -1;\n for (let i = currentlyActiveStepIndex + 1; i < steps.length; i++) {\n if (!this.checklistData.completedSteps.includes(steps[i].id)) {\n nextActiveStep = i;\n break;\n }\n }\n if (this.activeStep !== nextActiveStep) {\n this.setActiveStep(nextActiveStep);\n }\n dataChanged = true;\n }\n if (dataChanged) {\n this.renderChecklist(this.checklistData);\n \n // Notify external listeners about the checklist update\n GleapEventManager.notifyEvent(\"checklist-update\", {\n checklistId: this.checklistData.id,\n outboundId: this.checklistData.outbound?.id,\n completedSteps: this.checklistData.completedSteps,\n status: this.checklistData.status,\n data: this.checklistData\n });\n }\n }\n\n // --- Floating (Click-based) Listeners ---\n handleFloatingLauncherClick(event) {\n event.stopPropagation();\n\n if (this.checklistData.status === \"done\") {\n return;\n }\n\n const tasks = this.shadowRoot.querySelector(\".checklist-tasks\");\n if (tasks) {\n tasks.style.display =\n tasks.style.display === \"block\" ? \"none\" : \"block\";\n }\n }\n\n handleFloatingCloseClick(event) {\n event.stopPropagation();\n const tasks = this.shadowRoot.querySelector(\".checklist-tasks\");\n if (tasks) {\n tasks.style.display = \"none\";\n }\n }\n\n addFloatingClickListeners() {\n const launcher = this.shadowRoot.querySelector(\n \".checklist-floating-launcher\"\n );\n if (launcher) {\n launcher.addEventListener(\"click\", this._boundFloatingLauncherClick);\n }\n const header = this.shadowRoot.querySelector(\n \".checklist-floating-header\"\n );\n if (header) {\n header.addEventListener(\"click\", this._boundFloatingCloseClick);\n }\n }\n\n removeFloatingClickListeners() {\n const launcher = this.shadowRoot.querySelector(\n \".checklist-floating-launcher\"\n );\n if (launcher) {\n launcher.removeEventListener(\n \"click\",\n this._boundFloatingLauncherClick\n );\n }\n const header = this.shadowRoot.querySelector(\n \".checklist-floating-header\"\n );\n if (header) {\n header.removeEventListener(\"click\", this._boundFloatingCloseClick);\n }\n }\n\n // --- Rendering Logic ---\n renderResponse() {\n this.shadowRoot.innerHTML = \"\";\n }\n\n /**\n * Renders the floating launcher. When called with the default class (\"checklist-floating\")\n * it shows a chevron icon; when called with \"checklist-floating-header\" it shows a close icon.\n */\n renderFloatingLauncher(\n outbound,\n className = \"checklist-floating\",\n renderDoneState = false\n ) {\n const steps = outbound.config?.steps || [];\n const completedSteps = this.checklistData?.completedSteps || [];\n let progress = 0;\n if (this.progressbarEnabled && steps.length > 0) {\n const totalSteps = steps.length;\n const doneSteps = completedSteps.length;\n progress = totalSteps > 0 ? (doneSteps / totalSteps) * 100 : 0;\n }\n\n // Determine the next incomplete step\n const nextIncompleteStep = steps.find(\n (step) => !completedSteps.includes(step.id)\n );\n let titleText =\n steps.length > 0\n ? nextIncompleteStep\n ? nextIncompleteStep.title ||\n this._translateWithVars(\n \"stepDefaultTitle\",\n { index: steps.indexOf(nextIncompleteStep) + 1 },\n `Step ${steps.indexOf(nextIncompleteStep) + 1}`\n )\n : \"\"\n : outbound.subject || \"\";\n\n let subtitleText =\n steps.length > 0\n ? nextIncompleteStep\n ? nextIncompleteStep.description || \"\"\n : \"\"\n : outbound.message || \"\";\n\n if (renderDoneState) {\n titleText = outbound.config?.successTitle || \"\";\n subtitleText = outbound.config?.successMessage || \"\";\n progress = 100;\n }\n\n const circumference = 2 * Math.PI * 7;\n const computedOffset = circumference - (progress / 100) * circumference;\n\n const isHeader = className === \"checklist-floating-header\";\n const icon = isHeader\n ? `\n \n \n `\n : `\n \n `;\n\n return `\n
\n
\n
\n \n \n \n \n
\n
${titleText}
\n ${\n renderDoneState\n ? \"\"\n : `${icon}`\n }\n
\n
${subtitleText}
\n
\n `;\n }\n\n renderInfoSection(outbound) {\n if (!this.infoEnabled || !outbound) return \"\";\n const subject =\n outbound.subject ||\n this._translate(\"checklistDefaultTitle\", \"Checklist\");\n const message = outbound.message || \"\";\n let senderHtml = \"\";\n if (outbound.sender?.profileImageUrl) {\n senderHtml = `\n
\n \"${\n\n ${outbound.sender.firstName || \"\"}\n
`;\n }\n return `\n
\n ${\n subject\n ? `
${subject}
`\n : \"\"\n }\n ${\n message\n ? `
${message}
`\n : \"\"\n }\n ${senderHtml}\n
`;\n }\n\n renderProgressSection(steps = [], completedSteps = []) {\n if (!this.progressbarEnabled || !steps.length) return \"\";\n const totalSteps = steps.length;\n const doneSteps = completedSteps.length;\n const progress = totalSteps > 0 ? (doneSteps / totalSteps) * 100 : 0;\n let duration = 0;\n steps.forEach((step) => {\n if (!completedSteps.includes(step.id) && step.duration > 0) {\n duration += step.duration;\n }\n });\n const progressLabel = this._translateWithVars(\n \"taskProgress\",\n { a: doneSteps, b: totalSteps },\n `${doneSteps} of ${totalSteps} done`\n );\n const durationLabel =\n duration > 0\n ? this._translateWithVars(\n \"aboutMinutes\",\n { a: duration },\n `About ${duration} min left`\n )\n : \"\";\n return `\n
\n
${progressLabel}
\n ${\n durationLabel\n ? `
${durationLabel}
`\n : \"\"\n }\n
\n
\n
\n
`;\n }\n\n renderTasks(steps = [], completedSteps = []) {\n if (!steps || steps.length === 0)\n return `

${this._translate(\n \"noStepsDefined\",\n \"No steps defined.\"\n )}

`;\n return steps\n .map((step, index) => {\n const isTaskDone = completedSteps.includes(step.id);\n const isActive = this.activeStep === index;\n const badge = isTaskDone\n ? `${this.getCheckIcon()}`\n : `${\n index + 1\n }`;\n const stepTitle =\n step.title ||\n this._translateWithVars(\n \"stepDefaultTitle\",\n { index: index + 1 },\n `Step ${index + 1}`\n );\n const stepDescription = step.description || \"\";\n const actionButtonText =\n step.actionTitle ||\n this._translate(\"actionDefaultTitle\", \"Action\");\n const actionHtml =\n step.action && step.action !== \"none\"\n ? `
\n \n
`\n : \"\";\n const markDoneLabel = this._translate(\"markAsDone\", \"Mark as done\");\n const markDoneHtml =\n step.allowMarkDone && !isTaskDone\n ? `
\n ${this.getCheckIcon()}\n
${markDoneLabel}
\n
`\n : \"\";\n const taskClasses = [\n \"checklist-task\",\n isTaskDone ? \"checklist-task--done\" : \"\",\n isActive ? \"checklist-task--active\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n return `\n
\n
\n ${badge}\n
${stepTitle}
\n \n \n \n \n \n
\n
\n
\n ${\n stepDescription\n ? `
${stepDescription}
`\n : \"\"\n }\n ${actionHtml}\n ${markDoneHtml}\n
\n
\n
`;\n })\n .join(\"\");\n }\n\n renderChecklist(data) {\n if (!this._hasLoaded || !data || !data.outbound) {\n this._checkSessionAndLoad();\n return;\n }\n const { outbound } = data;\n const steps = outbound.config?.steps || [];\n const completedSteps = data.completedSteps || [];\n const isDone =\n data.status === \"done\" ||\n (steps.length > 0 && completedSteps.length >= steps.length);\n let content = \"\";\n if (isDone) {\n const successTitle = outbound.config?.successTitle || \"\";\n const successMessage = outbound.config?.successMessage || \"\";\n if (this.floatingEnabled) {\n content = this.renderFloatingLauncher(\n outbound,\n \"checklist-floating-launcher\",\n true\n );\n } else {\n content = `\n
\n
\n ${this.getCheckIcon()}\n
\n
${successTitle}
\n
${successMessage}
\n
`;\n }\n if (this.activeStep !== -1) this.activeStep = -1;\n } else {\n content = `\n
\n ${!this.floatingEnabled ? this.renderInfoSection(outbound) : \"\"}\n ${\n !this.floatingEnabled\n ? this.renderProgressSection(steps, completedSteps)\n : \"\"\n }\n ${\n this.floatingEnabled\n ? this.renderFloatingLauncher(outbound)\n : \"\"\n }\n
\n ${\n this.floatingEnabled\n ? this.renderFloatingLauncher(\n outbound,\n \"checklist-floating-header\"\n )\n : \"\"\n }\n ${this.renderTasks(steps, completedSteps)}\n
\n
`;\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const primaryColor = flowConfig.color ? flowConfig.color : \"#485BFF\";\n\n const styles = `\n \n `;\n this.shadowRoot.innerHTML = styles + content;\n this.addTaskEventListeners();\n if (this.floatingEnabled) {\n this.addFloatingClickListeners();\n }\n if (this.activeStep !== -1) {\n this.toggleTask(this.activeStep, true);\n }\n }\n\n updateActiveTaskMaxHeight() {\n if (this.activeStep !== -1) {\n const taskBodyInner = this.shadowRoot.querySelector(\n `.checklist-task[data-task-index=\"${this.activeStep}\"] .checklist-task-body-inner`\n );\n const container = this.shadowRoot.querySelector(\n `.checklist-task[data-task-index=\"${this.activeStep}\"] .checklist-task-body`\n );\n if (taskBodyInner && container) {\n const height = taskBodyInner.offsetHeight;\n container.style.setProperty(\n \"--task-body-active-height\",\n `${height}px`\n );\n }\n }\n }\n\n // --- Event Listener Setup ---\n addTaskEventListeners() {\n const tasks = this.shadowRoot.querySelectorAll(\".checklist-task\");\n tasks.forEach((task) => {\n const header = task.querySelector(\".checklist-task-header\");\n const index = parseInt(task.getAttribute(\"data-task-index\"), 10);\n if (header) {\n header.addEventListener(\"click\", () => {\n const newActiveStep = this.activeStep === index ? -1 : index;\n this.setActiveStep(newActiveStep);\n });\n }\n const markDoneBtn = task.querySelector(\n \".checklist-task-body-markdone\"\n );\n if (markDoneBtn) {\n markDoneBtn.addEventListener(\"click\", (e) => {\n e.stopPropagation();\n if (!this.checklistData?.outbound?.config?.steps) return;\n const step = this.checklistData.outbound.config.steps[index];\n if (!step) return;\n const previouslyActiveStep = this.activeStep;\n if (!this.checklistData.completedSteps)\n this.checklistData.completedSteps = [];\n if (!this.checklistData.completedSteps.includes(step.id)) {\n this.checklistData.completedSteps.push(step.id);\n \n // Notify external listeners about the step completion\n GleapEventManager.notifyEvent(\"checklist-step-completed\", {\n checklistId: this.checklistData.id,\n outboundId: this.checklistData.outbound?.id,\n stepId: step.id,\n stepIndex: index,\n step: step,\n completedSteps: this.checklistData.completedSteps,\n status: this.checklistData.status,\n data: this.checklistData\n });\n const allSteps = this.checklistData.outbound.config.steps;\n let nextActiveStep = -1;\n if (previouslyActiveStep === index) {\n for (let i = index + 1; i < allSteps.length; i++) {\n if (\n !this.checklistData.completedSteps.includes(\n allSteps[i].id\n )\n ) {\n nextActiveStep = i;\n break;\n }\n }\n this.setActiveStep(nextActiveStep);\n }\n // Preserve the state of the floating modal.\n setTimeout(() => {\n let isModalOpen = false;\n if (this.floatingEnabled) {\n const tasksModal =\n this.shadowRoot.querySelector(\".checklist-tasks\");\n isModalOpen =\n tasksModal && tasksModal.style.display === \"block\";\n }\n this.renderChecklist(this.checklistData);\n if (this.floatingEnabled && isModalOpen) {\n const tasksModal =\n this.shadowRoot.querySelector(\".checklist-tasks\");\n if (tasksModal) tasksModal.style.display = \"block\";\n }\n }, 300);\n const updateData = { checkedStep: step.id };\n if (\n allSteps.length > 0 &&\n this.checklistData.completedSteps.length >= allSteps.length\n ) {\n this.checklistData.status = \"done\";\n updateData.status = \"done\";\n \n // Notify external listeners about the checklist completion\n GleapEventManager.notifyEvent(\"checklist-completed\", {\n checklistId: this.checklistData.id,\n outboundId: this.checklistData.outbound?.id,\n completedSteps: this.checklistData.completedSteps,\n status: this.checklistData.status,\n data: this.checklistData\n });\n }\n this.updateChecklist(this.checklistData.id, updateData);\n }\n });\n }\n const actionBtn = task.querySelector(\n \".checklist-task-body-action .action-button\"\n );\n if (actionBtn) {\n actionBtn.addEventListener(\"click\", (e) => {\n e.stopPropagation();\n if (\n !this.checklistData?.outbound?.config?.steps ||\n typeof Gleap === \"undefined\"\n )\n return;\n const step = this.checklistData.outbound.config.steps[index];\n if (!step || !step.action || step.action === \"none\") return;\n try {\n if (step.action === \"BOT\") Gleap.startBot(step.botId);\n else if (step.action === \"CUSTOM_ACTION\")\n Gleap.triggerCustomAction(step.actionBody);\n else if (step.action === \"REDIRECT_URL\") {\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n Gleap.openURL(step.actionBody, !!step.actionOpenInNewTab);\n } else if (step.action === \"FEEDBACK_FLOW\")\n Gleap.startFeedbackFlow(step.formId);\n else if (step.action === \"NEWS_ARTICLE\")\n Gleap.openNewsArticle(step.articleId);\n else if (step.action === \"HELP_ARTICLE\")\n Gleap.openHelpCenterArticle(step.articleId);\n else if (step.action === \"CHECKLIST\")\n Gleap.startChecklist(step.outboundId, true, step?.sharedKey);\n } catch (gleapError) {}\n });\n }\n });\n }\n\n // --- Animation and State Management ---\n setActiveStep(index) {\n const previousActiveStep = this.activeStep;\n this.activeStep = index;\n const tasksToToggle = [];\n if (\n previousActiveStep !== -1 &&\n previousActiveStep !== this.activeStep\n ) {\n tasksToToggle.push({ index: previousActiveStep, open: false });\n }\n if (this.activeStep !== -1 && this.activeStep !== previousActiveStep) {\n tasksToToggle.push({ index: this.activeStep, open: true });\n }\n tasksToToggle.forEach(({ index, open }) => {\n this.toggleTask(index, open);\n });\n }\n\n toggleTask(index, forceOpen = null) {\n const taskElement = this.shadowRoot.querySelector(\n `.checklist-task[data-task-index=\"${index}\"]`\n );\n if (!taskElement) return;\n const header = taskElement.querySelector(\".checklist-task-header\");\n if (!header) return;\n const isOpen = taskElement.classList.contains(\"checklist-task--active\");\n const shouldOpen = forceOpen !== null ? forceOpen : !isOpen;\n if (shouldOpen && !isOpen) {\n taskElement.classList.add(\"checklist-task--active\");\n header.setAttribute(\"aria-expanded\", \"true\");\n const taskBodyInner = taskElement.querySelector(\n \".checklist-task-body-inner\"\n );\n if (taskBodyInner) {\n const height = taskBodyInner.offsetHeight;\n const taskBody = taskElement.querySelector(\".checklist-task-body\");\n if (taskBody) {\n taskBody.style.setProperty(\n \"--task-body-active-height\",\n `${height}px`\n );\n }\n }\n } else if (!shouldOpen && isOpen) {\n taskElement.classList.remove(\"checklist-task--active\");\n header.setAttribute(\"aria-expanded\", \"false\");\n }\n }\n }\n\n if (\n typeof customElements !== \"undefined\" &&\n !customElements.get(\"gleap-checklist\")\n ) {\n customElements.define(\"gleap-checklist\", GleapChecklist);\n }\n }\n};\n","import Gleap from \"./Gleap\";\n\nexport default Gleap;\n"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","GleapFeedbackButtonManager","_classCallCheck","_defineProperty","value","this","instance","feedbackButton","remove","buttonHidden","lastButtonIcon","injectedFeedbackButton","show","getInstance","updateFeedbackButtonState","GleapNotificationManager","updateContainerStyle","frameManager","GleapFrameManager","isOpened","hideWidget","setAppMode","showWidget","_this","elem","document","createElement","addEventListener","feedbackButtonPressed","body","appendChild","count","notificationBadge","querySelector","notificationHiddenClass","classList","innerText","add","updateFeedbackButtonText","injectFeedbackButton","flowConfig","GleapConfigManager","getFlowConfig","feedbackButtonPosition","FEEDBACK_BUTTON_CLASSIC","FEEDBACK_BUTTON_CLASSIC_BOTTOM","FEEDBACK_BUTTON_CLASSIC_LEFT","widgetButtonText","buttonIcon","buttonLogo","concat","loadIcon","className","setAttribute","GleapTranslationManager","isRTLLayout","innerHTML","hideButton","FEEDBACK_BUTTON_NONE","FEEDBACK_BUTTON_BOTTOM_LEFT","appMode","hideForGuests","GleapSession","isUser","calculateShadeColor","col","amt","replace","length","_col$match2","_slicedToArray","match","r","g","b","_ref","parseInt","Math","max","min","toString","rr","gg","bb","calculateContrast","hex","substr","name","color","GleapNetworkIntercepter","Date","now","loadAllResources","contentType","toLocaleLowerCase","supportedContentTypes","i","includes","requests","JSON","parse","stringify","values","externalRequests","filters","request","headers","j","payload","payloadObj","e","response","responseText","data","window","performance","resources","getEntriesByType","resource","indexOf","initiatorType","find","url","push","type","date","startTimestamp","startTime","duration","round","exp","blacklist","defaultBlacklist","filter","maxRequests","stopped","keys","keysToRemove","slice","bbRequestId","startDate","getTime","text","size","TextEncoder","encode","encodeURI","s","split","Blob","getTextContentSize","undefined","TextDecoder","_typeof","ArrayBuffer","isView","decode","payloadText","cleanupPayload","cleanupContentSize","initialized","self","interceptNetworkRequests","onFetch","params","fromEntries","entries","method","preparePayload","cleanRequests","onFetchLoad","req","status","statusText","calcRequestTime","isContentTypeSupported","then","err","onFetchFailed","onOpen","args","onSend","requestHeaders","onError","currentTarget","onLoad","target","responseType","callback","originalFetch","open","XMLHttpRequest","send","gleapSetRequestHeader","setRequestHeader","header","requestId","arguments","bind","apply","fetch","clone","blob","Promise","resolve","reject","fr","FileReader","onload","evt","result","onerror","readAsText","resizeImage","base64Str","maxWidth","maxHeight","isJPEG","img","Image","src","canvas","MAX_WIDTH","MAX_HEIGHT","width","height","getContext","drawImage","toDataURL","isMobile","test","navigator","userAgent","gleapDataParser","String","truncateString","str","num","removeSubDomain","v","parts","is2ndLevelDomain","secondLevel","join","loadFromGleapCache","cachedData","localStorage","getItem","saveToGleapCache","k","setItem","removeItem","runFunctionWhenDomIsReady","readyState","RequestStatus","ChecklistNetworkManager","Map","validationCache","clear","fetchCache","validationRequests","fetchRequests","gleapSessionInstance","session","lang","getActiveLanguage","gleapId","gleapHash","apiUrl","xhr","injectSession","onreadystatechange","responseData","error","outboundId","sharedKey","cacheKey","_createCacheKey","cachedResult","internalId","has","_getApiUrl","Error","set","_getQueryParams","requestPromise","_makeRequest","id","_this2","floor","createCoords","x","y","oppositeSideMap","left","right","bottom","top","oppositeAlignmentMap","start","end","clamp","param","placement","axis","getAxisLength","getAlignmentAxis","alignment","getOppositePlacement","side","padding","expandPaddingObject","rect","computeCoordsFromPlacement","rtl","reference","floating","sideAxis","alignmentAxis","alignLength","isVertical","commonX","commonY","commonAlign","coords","async","detectOverflow","state","options","_await$platform$isEle","platform","rects","elements","strategy","boundary","rootBoundary","elementContext","altBoundary","paddingObject","element","clippingClientRect","getClippingRect","isElement","contextElement","getDocumentElement","offsetParent","getOffsetParent","offsetScale","getScale","elementClientRect","convertOffsetParentRelativeRectToViewportRelativeRect","offset","fn","_middlewareData$offse","_middlewareData$arrow","middlewareData","diffCoords","isRTL","mainAxisMulti","crossAxisMulti","rawValue","mainAxis","crossAxis","convertValueToCoords","arrow","alignmentOffset","getNodeName","node","isNode","nodeName","toLowerCase","getWindow","_node$ownerDocument","ownerDocument","defaultView","documentElement","Node","Element","isHTMLElement","HTMLElement","isShadowRoot","ShadowRoot","isOverflowElement","overflow","overflowX","overflowY","display","isTableElement","isContainingBlock","webkit","isWebKit","css","transform","perspective","containerType","backdropFilter","some","willChange","contain","CSS","supports","isLastTraversableNode","getComputedStyle","getNodeScroll","scrollLeft","scrollTop","pageXOffset","pageYOffset","getParentNode","assignedSlot","parentNode","host","getNearestOverflowAncestor","getOverflowAncestors","list","traverseIframes","_node$ownerDocument2","scrollableAncestor","isBody","win","visualViewport","frameElement","getCssDimensions","parseFloat","hasOffset","offsetWidth","offsetHeight","shouldFallback","$","unwrapElement","domElement","getBoundingClientRect","Number","isFinite","noOffsets","getVisualOffsets","offsetLeft","offsetTop","includeScale","isFixedStrategy","clientRect","scale","visualOffsets","isFixed","floatingOffsetParent","shouldAddVisualOffsets","offsetWin","currentWin","currentIFrame","iframeScale","iframeRect","clientLeft","paddingLeft","clientTop","paddingTop","topLayerSelectors","isTopLayer","selector","matches","getWindowScrollBarX","getClientRectFromClippingAncestor","clippingAncestor","html","clientWidth","clientHeight","visualViewportBased","getViewportRect","scroll","scrollWidth","scrollHeight","direction","getDocumentRect","getInnerBoundingClientRect","hasFixedPositionAncestor","stopNode","position","getRectRelativeToOffsetParent","isOffsetParentAnElement","offsets","offsetRect","getTrueOffsetParent","polyfill","currentNode","getContainingBlock","topLayer","elementClippingAncestors","cache","el","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","ancestor","getClippingElementAncestors","_c","clippingAncestors","firstClippingAncestor","clippingRect","reduce","accRect","getElementRects","getOffsetParentFn","getDimensionsFn","getDimensions","getClientRects","Array","from","autoUpdate","update","ancestorScroll","ancestorResize","elementResize","ResizeObserver","layoutShift","IntersectionObserver","animationFrame","referenceEl","ancestors","forEach","passive","cleanupIo","onMove","timeoutId","io","root","cleanup","_io","clearTimeout","disconnect","refresh","skip","threshold","rootMargin","isFirstUpdate","handleObserve","ratio","intersectionRatio","setTimeout","observe","observeMove","frameId","reobserveFrame","resizeObserver","firstEntry","unobserve","cancelAnimationFrame","requestAnimationFrame","_resizeObserver","prevRefRect","frameLoop","nextRefRect","_resizeObserver2","removeEventListener","checkMainAxis","checkCrossAxis","limiter","detectOverflowOptions","mainAxisCoord","crossAxisCoord","maxSide","limitedCoords","_middlewareData$flip","initialPlacement","fallbackPlacements","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","flipAlignment","isBasePlacement","oppositePlacement","getExpandedPlacements","isStart","lr","rl","tb","bt","getSideList","map","getOppositeAxisPlacements","placements","overflows","overflowsData","flip","sides","mainAlignmentSide","every","_middlewareData$flip2","_overflowsData$filter","nextIndex","index","nextPlacement","reset","resetPlacement","d","sort","a","_overflowsData$map$so","acc","arrowDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","min$1","center","shouldAddOffset","centerOffset","mergedOptions","platformWithCache","config","middleware","validMiddleware","Boolean","statefulPlacement","resetCount","nextX","nextY","computePosition","checkPageFilter","currentUrl","pageFilter","pageFilterType","removeTrailingSlash","isMatchingUrl","regex","regexPattern","RegExp","generateRegex","matched","startsWith","endsWith","GleapTooltipManager","WeakMap","tooltip","hasAttribute","nextId","tooltipElem","mode","hotspotContainer","canEmbed","firstChild","insertBefore","nextSibling","hotspot","icon","animated","repositionHotspot","elementToTooltipMap","floatingUIInstance","createTooltip","elementToFloatingUIMap","filteredTooltips","getFilteredTooltips","checkForTooltips","tooltips","location","href","page","pageType","querySelectorAll","linkTooltip","sessionInstance","http","sdkKey","console","updateFilteredTooltips","nodeType","ELEMENT_NODE","checkNodeTooltip","childNodes","childNode","processNodeInsertion","_this3","_this4","time","timeout","handleResizeThrottled","updateHotspotPositions","context","_toConsumableArray","observer","MutationObserver","mutations","lastUrl","mutation","addedNodes","removedNodes","floatingUI","childList","subtree","attributes","attributeFilter","_this5","tooltipText","tooltipData","hideTimeout","arrowEl","posX","shift","assign","style","arrowPos","visibility","opacity","pointerEvents","hide","voidElements","Set","tagName","resizeListener","anchor","removeAttribute","tooltipId","getAttribute","posY","offsetX","offsetY","elementRect","range","createRange","selectNodeContents","fixedWidth","anchorRect","tooltipSize","email","userId","phone","onSessionReady","ready","onSessionReadyListener","attemp","retry","GleapEventManager","notifyEvent","useCookies","cookie","eraseGleapCookie","sendMessage","clearAllNotifications","setNotificationCount","GleapBannerManager","removeBannerUI","GleapModalManager","hideModal","isNaN","newTimeout","pow","startSession","_this$session","sessionChanged","days","expires","setTime","toUTCString","setGleapCookie","encodeURIComponent","clearCache","GleapStreamedEvent","restart","tooltipManager","destroy","load","dispatchEvent","CustomEvent","notifySessionReady","sessionCookie","nameEQ","ca","c","charAt","substring","getGleapCookie","sessionData","decodeURIComponent","validateSession","cachedSession","clearSession","userData","checkIfSessionDataNeedsUpdate","userDataKeys","userDataKey","customData","setOnSessionReady","_objectSpread","sdkVersion","SDK_VERSION","ws","userHash","checkIfSessionNeedsUpdate","dataToSend","tourId","tourData","_window","passedPageFilter","sendSessionUpdate","streamEvents","mainLoopTimeout","runEventStreamLoop","streamingEvents","errorCount","streamedEventArray","socket","OPEN","sessionDuration","GleapMetaDataManager","getSessionDuration","events","opened","handleOpenBound","handleOpen","handleErrorBound","handleError","handleMessageBound","handleMessage","handleCloseBound","handleClose","connectionTimeout","pingWS","clearInterval","close","cleanupWebSocket","connectedWebSocketGleapId","WebSocket","wsApiUrl","event","setInterval","processMessage","initWebSocket","message","_message$data","u","listOfActionsWhereIgnoreOpened","filteredActions","action","_action$actionType","actionType","Gleap","performActions","detail","eventArray","cleanupMainLoop","trackInitialEvents","startPageListener","resetErrorCountLoop","logEvent","logCurrentPage","disablePageTracking","log","eventMaxLength","parseIntWithDefault","val","def","parsed","onConfigLoaded","onConfigLoadedListener","aiTools","sendConfigUpdate","cachedConfig","applyConfig","loadConfigFromServer","setStyles","headerColor","buttonColor","backgroundColor","borderRadius","buttonX","buttonY","applyStylesFromConfig","enableWebReplays","GleapReplayRecorder","stop","enableNetworkLogs","setLoadAllResources","sendNetworkResources","networkLogPropsToIgnore","setFilters","networkLogBlacklist","setBlacklist","updateRTLSupport","enableShortcuts","notifyConfigLoaded","_regeneratorRuntime","t","n","Symbol","iterator","asyncIterator","toStringTag","define","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","arg","h","l","f","GeneratorFunction","GeneratorFunctionPrototype","p","getPrototypeOf","defineIteratorMethods","_invoke","AsyncIterator","invoke","__await","callInvokeWithMethodAndArg","done","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","displayName","isGeneratorFunction","constructor","mark","setPrototypeOf","__proto__","awrap","reverse","pop","prev","rval","handle","complete","finish","delegateYield","asyncGeneratorStep","gen","_next","_throw","info","_asyncToGenerator","documentToHTML","doctype","publicId","systemId","outerHTML","loadCSSUrlResources","basePath","remote","asyncFn","matchedData","matchedUrl","replaceAll","resourcePath","URL","fetchCSSResource","resourceData","promises","_len","_key","promise","all","reader","onloadend","readAsDataURL","fetchItemResource","isBlacklisted","warn","progressResource","replaceStyleNodes","styleSheet","cssTextContent","styleId","cloneTargetNode","ownerNode","replacementNode","head","styleNode","cssText","createTextNode","linkNode","rel","media","getTextContentFromStyleSheet","cssRules","rules","cssRuleItem","downloadAllCSSUrlResources","basePathURL","_loop","styleSheets","mediaText","baseTags","getElementsByTagName","origin","lastIndexOf","replacedStyle","styletext","stylesheet","results","prepareRemoteData","dom","imgItems","imgItemsPromises","item","downloadAllImages","handleAdoptedStyleSheets","doc","shadowNodeId","adoptedStyleSheets","shadowStyleNode","firstElementChild","extractFinalCSSState","getAnimations","animations","finalCSSState","animation","_animation$effect","keyframes","effect","getKeyframes","finalKeyframe","property","deepClone","_callee3","cloneNode","fragment","clonedHead","_context3","_ref2","_callee2","parent","shadowRoot","walkTree","webAnimations","boundingRect","resizedImage","_boundingRect","rootShadowNodeId","_context2","_ref3","_callee","nextn","nextp","innerShadowRoot","_context","nextElementSibling","_x5","_x6","_x7","HTMLCanvasElement","t0","toUpperCase","contains","checked","_x2","_x3","_x4","createDocumentFragment","_x","prepareScreenshotData","_ref4","_callee4","styleTags","linkImportElems","referenceNode","scriptElems","existingBasePath","baseElems","baseUrl","newBaseUrl","baseNode","dialogElems","bbElems","_context4","innerWidth","innerHeight","_x8","_x9","GleapScreenRecorder","rerender","permissionErrorText","mediaDevices","getDisplayMedia","isRecording","available","video","ideal","screen","frameRate","displaySurface","selfBrowserSurface","audio","displayStream","stream","audioMuted","audioAvailable","handleRecord","startAudioRecording","alert","mediaRecorder","recordingTimer","getTracks","track","getUserMedia","voiceStream","getAudioTracks","addTrack","audioErr","audioTracks","enabled","file","recordedChunks","MediaRecorder","mimeType","getSupportedMimeType","recordTime","timerLabel","remainingTime","maxRecordTime","formatTime","stopScreenRecording","ondataavailable","getVideoTracks","onended","prepareRecording","onstop","completeBlob","extension","File","previewVideoElement","createObjectURL","_i","_types","isTypeSupported","screenRecordingData","formdata","FormData","append","fileUrl","GleapFeedback","priority","formData","isSilent","excludeData","spamToken","gleapInstance","GleapCustomDataManager","getCustomData","metaData","getMetaData","consoleLog","GleapConsoleLogManager","getLogs","networkLogs","getRequests","customEventLog","getEventArray","ticketAttributes","getTicketAttributes","dataPromises","webReplay","getGlobalDataItem","isLiveSite","recordingUrlPromise","uploadScreenRecording","recordingUrl","screenRecordingUrl","screenshot","screenshotDataPromise","isLiveMode","screenshotData","snapshotPosition","feedbackData","outbound","tags","GleapTagManager","getTags","keysToExclude","keyToExclude","takeSnapshot","getData","feedback","newTab","newWindow","focus","cmp_block_ignoredomains","injectedFrame","autoWhiteListCookieManager","frameUrl","gleapFrameContainer","gleapFrame","updateFrameStyle","showFrameContainer","closeElement","surveyStyle","extendedStyle","surveyFullStyle","classicStyle","classicStyleLeft","modernStyleLeft","noButtonStyleLeft","allStyles","styleToApply","startCommunication","appHeight","setProperty","handler","urlHandler","innerContainer","escListener","widgetOpened","markerManager","showLoader","loadingClass","disableBGFade","disableBGGradient","updateUI","workThroughQueue","setGlobalDataItem","scrollX","scrollY","updateWidgetStatus","registerEscListener","isSurvey","updateNotificationBadge","runWidgetShouldOpenCallback","injectFrame","isWidgetOpen","resetRoutes","hideMarkerManager","reloadNotificationsFromCache","unregisterEscListener","queue","comReady","contentWindow","postMessage","getSession","getAiTools","overrideLanguage","getOverrideLanguage","GleapMarkerManager","success","workQueue","_this6","addMessageListener","GleapAudioManager","ping","showImage","ticketData","frameHeight","_data$data","startProductTour","GleapCustomActionManager","triggerCustomAction","shareToken","feedbackType","sendFeedback","reportedBy","trackEvent","showDrawingScreen","bannerUrl","listeners","appVersionCode","appBuildNumber","sessionStart","nameOffset","verOffset","ix","nAgt","browserName","appName","fullVersion","appVersion","majorVersion","OSName","browser","systemName","buildVersionNumber","releaseVersionNumber","devicePixelRatio","screenWidth","screenHeight","language","userLanguage","mobile","sdkType","environment","logArray","disabled","originalConsoleLog","logLevel","logMaxLength","addLog","origConsole","addLogWithArgs","GleapClickListener","protocol","preventDefault","handleGleapLink","elementId","elementClass","elemId","elemClass","elementTag","htmlPre","htmlPost","getDOMElementDescription","takeCurrentReplay","eventListeners","eventListener","eventName","customAction","customActionCallbacks","_a","__defProp","__publicField","__defNormalProp","__defProp$1","__publicField$1","__defNormalProp$1","NodeType$3","NodeType2","testableAccessors$1","testableMethods$1","untaintedBasePrototype$1","isAngularZonePresent$1","globalThis","Zone","getUntaintedPrototype$1","defaultObj","defaultPrototype","accessorNames","isUntaintedAccessors","accessor","_a2","_b","getOwnPropertyDescriptor","methodNames","isUntaintedMethods","iframeEl","untaintedObject","removeChild","untaintedAccessorCache$1","getUntaintedAccessor$1","untaintedPrototype","untaintedAccessor","untaintedMethodCache$1","getUntaintedMethod$1","untaintedMethod","index$1","n2","parentElement","textContent","other","getRootNode","selectors","mutationObserver","hostEl","isNativeShadowDom","shadowRoot2","stringifyStylesheet","s2","rules2","sheetHref","stringifiedRules","rule2","stringifyRule","isCSSImportRule","importStringified","statement","layerName","supportsText","escapeImportStatement","absolutifyURLs","ruleStringified","isCSSStyleRule","selectorText","cssStringified","fixSafariColons","Mirror","getId","getMeta","getNode","idNodeMap","getIds","nodeMetaMap","removeNodeFromMap","delete","hasNode","node2","meta","oldNode","maskInputValue","maskInputOptions","maskInputFn","actualType","repeat","ORIGINAL_ATTRIBUTE_NAME","getInputType","extractFileExtension","path","baseURL","pathname","URL_IN_CSS_REF","URL_PROTOCOL_MATCH","URL_WWW_MATCH","DATA_URI","quote1","path1","quote2","path2","path3","filePath","maybeQuote","extractOrigin","stack","part","normalizeCssString","markCssSplits","childNodes2","splits","cssTextNorm","i2","textContentNorm","bit","splitNorm","splitCssText","_id","tagNameRegex","IGNORED_NODE","genId","canvasService","canvasCtx","SRCSET_NOT_SPACES","SRCSET_COMMAS_OR_SPACES","cachedDocument","absoluteToDoc","attributeValue","trim","getHref","isSVGElement","ownerSVGElement","customHref","a2","transformAttribute","pos","collectCharacters","regEx","chars2","exec","output","descriptorsStr","inParens","c2","getAbsoluteSrcsetString","ignoreAttribute","_value","classMatchesRegex","checkAncestors","eIndex","needMaskingText","maskTextClass","maskTextSelector","closest","e2","serializeNode","mirror","mirror2","blockClass","blockSelector","needsMask","inlineStylesheet","maskTextFn","dataURLOptions","inlineImages","recordCanvas","keepIframeSrcFn","newlyAddedElement","cssCaptured","rootId","docId","getRootId","DOCUMENT_NODE","compatMode","Document","DOCUMENT_TYPE_NODE","DocumentType","needBlock","_isBlockedElement","HTMLFormElement","processedTagName","getValidTagName$1","len","attr","_cssText","sheet","selected","rr_open_mode","__context","ctx","x2","getImageData","originalGetImageData","Uint32Array","buffer","pixel","is2DCanvasBlank","rr_dataURL","quality","canvasDataURL","blankCanvas","image","imageSrc","currentSrc","priorCrossOrigin","crossOrigin","recordInlineImage","naturalWidth","naturalHeight","mediaAttributes","rr_mediaState","paused","rr_mediaCurrentTime","currentTime","rr_mediaPlaybackRate","playbackRate","rr_mediaMuted","muted","rr_mediaLoop","loop","rr_mediaVolume","volume","rr_scrollLeft","rr_scrollTop","class","rr_width","rr_height","contentDocument","rr_src","isCustomElement","customElements","isSVG","isCustom","serializeElementNode","TEXT_NODE","parentTagName","textContent2","isStyle","isScript","Text","serializeTextNode","CDATA_SECTION_NODE","CDATA","COMMENT_NODE","Comment","lowerIfExists","maybeAttr","serializeNodeWithId","skipChild","slimDOMOptions","onSerialize","onIframeLoad","iframeLoadTimeout","onStylesheetLoad","stylesheetLoadTimeout","preserveWhiteSpace","_serializedNode","sn","comment","script","as","headFavicon","headMetaDescKeywords","headMetaSocial","headMetaRobots","headMetaHttpEquiv","headMetaAuthorship","headMetaVerification","slimDOMExcluded","serializedNode","recordChild","shadowRootEl","isShadowHost","headWhitespace","bypassOptions","childN","serializedChildNode","isShadow","listener","fired","timer","blankUrl","onceIframeLoaded","iframeDoc","serializedIframeNode","link","styleSheetLoadTimeout","styleSheetLoaded","onceStylesheetLoaded","serializedLinkNode","getDefaultExportFromCjs$1","__esModule","getAugmentedNamespace$1","f2","default","a22","Reflect","construct","picocolors_browser$1","x$1","create$1","isColorSupported","bold","dim","italic","underline","inverse","hidden","strikethrough","black","red","green","yellow","blue","magenta","cyan","white","gray","bgBlack","bgRed","bgGreen","bgYellow","bgBlue","bgMagenta","bgCyan","bgWhite","createColors","picocolors_browserExports$1","require$$2$1","freeze","pico$1","terminalHighlight$1$1","CssSyntaxError$3$1","CssSyntaxError","line","column","source","plugin22","super","reason","plugin","endLine","endColumn","setMessage","captureStackTrace","showSourceCode","aside","lines","index2","number","gutter","spacing","code","cssSyntaxError$1","symbols$1","isClean","my","DEFAULT_RAW$1","after","beforeClose","beforeComment","beforeDecl","beforeOpen","beforeRule","colon","commentLeft","commentRight","emptyBody","indent","semicolon","Stringifier$2$1","builder","atrule","raws","afterName","nodes","block","between","beforeAfter","detect","raw","buf","depth","step","last","child","before","decl","string","important","own","first","root2","rawCache","walk","rawBeforeClose","rawBeforeComment","walkComments","rawBeforeDecl","walkDecls","rawBeforeOpen","rawBeforeRule","rawColon","rawEmptyBody","rawIndent","rawSemicolon","rule","ownSemicolon","stringifier$1","Stringifier$1$1","stringify$4$1","stringify_1$1","isClean$2$1","my$2$1","CssSyntaxError$2$1","Stringifier2$1","stringify$3$1","cloneNode$1","cloned","isArray","Node$4$1","defaults","addToError","postcssNode","input","insertAfter","overrides","cleanRaws","keepBetween","cloneAfter","cloneBefore","opts","rangeBy","getProxyProcessor","toProxy","markDirty","positionBy","stringRepresentation","positionInside","word","endIndex","defaultType","replaceWith","bookmark","foundSelf","result2","toJSON","_","inputs","fixed","emitInputs","inputsNextIndex","inputId","input2","proxyCache","Proxy","stringifier2","proxyOf","node$1","Node$3$1","Declaration$4$1","variable","declaration$1","nonSecure$1","nanoid","random","customAlphabet","alphabet","defaultSize","SourceMapConsumer","SourceMapConsumer$2$1","SourceMapGenerator","SourceMapGenerator$2$1","existsSync","existsSync$1","readFileSync","readFileSync$1","dirname","dirname$1$1","join$1","PreviousMap$2$1","loadAnnotation","inline","startWith","annotation","loadMap","mapFile","consumer","consumerCache","decodeInline","lastMatch","Buffer","atob","encoding","getAnnotationURL","sourceMapString","isMap","mappings","_mappings","sections","comments","loadFile","fromSourceMap","prevPath","withContent","sourcesContent","previousMap$1","SourceMapConsumer$1$1","SourceMapGenerator$1$1","fileURLToPath","fileURLToPath$1","pathToFileURL","pathToFileURL$1$1","isAbsolute","isAbsolute$1","resolve$1$1","nanoid$2","terminalHighlight$2","CssSyntaxError$1$1","PreviousMap$1$1","fromOffsetCache$1","sourceMapAvailable$1$1","pathAvailable$1$1","Input$4$1","hasBOM","mapResolve","fromOffset","lastLine","lineToIndex","prevIndex","l2","mid","sourceRoot","to","fromUrl","originalPositionFor","sourceContentFor","json","input$1","registerInput","SourceMapConsumer$3","SourceMapGenerator$3","dirname$2","relative","relative$1","resolve$2","sep","sep$1","pathToFileURL$2","Input$3$1","sourceMapAvailable$2","pathAvailable$2","mapGenerator$1","stringify2","cssString","mapOpts","originalCSS","usesFileUrls","absolute","memoizedFileURLs","memoizedPaths","memoizedURLs","addAnnotation","content","isInline","toBase64","outputFile","eol","applyPrevMaps","previous","toUrl","applySourceMap","clearAnnotation","generate","generateMap","generateString","ignoreInvalidMapping","addMapping","generated","original","isSourcesContent","setSourcesContent","isAnnotation","noSource","mapping","sourcePath","charCodeAt","cached","previousMaps","already","toFileUrl","setSourceContent","btoa","unescape","fileURL","Node$2$1","Comment$4$1","comment$1","parse$4$1","Rule$4$1","AtRule$4$1","Root$6$1","isClean$1$1","my$1$1","Declaration$3$1","Comment$3$1","Node$1$1","cleanSource$1","markDirtyUp$1","Container$7$1","Container","children","normalize","each","getIterator","indexes","condition","lastEach","cb","exist","existIndex","splice","sample","rebuild","prepend","unshift","removeAll","replaceValues","pattern","props","fast","walkAtRules","walkRules","registerParse","dependant","registerRule","registerAtRule","registerRoot","container$1","LazyResult$4$1","Processor$3$1","Container$6$1","Document$3$1","toResult","registerLazyResult","registerProcessor","document$1$1","Warning$2$1","opt","warning$1","Warning$1$1","Result$3$1","processor2","processor","messages","lastPlugin","postcssPlugin","warning2","warnings","result$1","SINGLE_QUOTE$1","DOUBLE_QUOTE$1","BACKSLASH$1","SLASH$1","NEWLINE$1","SPACE$1","FEED$1","TAB$1","CR$1","OPEN_SQUARE$1","CLOSE_SQUARE$1","OPEN_PARENTHESES$1","CLOSE_PARENTHESES$1","OPEN_CURLY$1","CLOSE_CURLY$1","SEMICOLON$1","ASTERISK$1","COLON$1","AT$1","RE_AT_END$1","RE_WORD_END$1","RE_BAD_BRACKET$1","RE_HEX_ESCAPE$1","Container$5$1","AtRule$3$1","atRule$1","LazyResult$3$1","Processor$2$1","Container$4$1","Root$5$1","ignore","root$1","list$2$1","comma","space","separators","array","current","func","inQuote","prevQuote","escape","letter","list_1$1","Container$3$1","list$1$1","Rule$3$1","sep2","rule$1","Declaration$2$1","tokenizer2$1","quote","escaped","escapePos","currentToken","valueOf","ignoreErrors","returned","unclosed","what","back","token","endOfFile","nextToken","ignoreUnclosed","controlChar","fromCharCode","lastIndex","Comment$2$1","AtRule$2$1","Root$4$1","Rule$2$1","SAFE_COMMENT_NEIGHBOR$1","empty","parser$1","spaces","createTokenizer","unnamedAtrule","init","brackets","tokenizer","getPosition","spacesAndCommentsFromEnd","spacesAndCommentsFromStart","checkMissedSemicolon","tokens","founded","doubleColon","customProperty","findLastWithPosition$1","unknownWord","firstSpaces","precheckMissedSemicolon","stringFrom","spacesFromEnd","emptyRule","unexpectedClose","endFile","unclosedBlock","freeSemicolon","bracket","unclosedBracket","clean","lastTokenType","Container$2$1","Parser2$1","Input$2$1","parse$3$1","parser2","parse_1$1","isClean$3","my$3","MapGenerator$1$1","stringify$2$1","Container$1$1","Document$2$1","Result$2$1","parse$2$1","Root$3$1","TYPE_TO_CLASS_NAME$1","PLUGIN_PROPS$1","AtRule","AtRuleExit","CommentExit","Declaration","DeclarationExit","DocumentExit","Once","OnceExit","prepare","Root","RootExit","Rule","RuleExit","NOT_VISITORS$1","CHILDREN$1","isPromise$1","getEvents$1","toStack$1","eventIndex","visitorIndex","visitors","cleanMarks$1","postcss$2$1","LazyResult$2$1","LazyResult","stringified","processed","syntax","parser","helpers","postcss","plugins","processing","runAsync","onRejected","catch","onFinally","getAsyncError","postcssVersion","prepareVisitors","version","hasListener","runOnRoot","visitTick","visitor","roots","subRoot","sync","stringifier","walkSync","visitSync","onFulfilled","visit2","registerPostcss","lazyResult$1","MapGenerator2$1","stringify$1$1","parse$1$1","Result$1$1","NoWorkResult$1$1","_processor","_css","_opts","_map","generatedCSS","generatedMap","_root","noWorkResult$1","NoWorkResult2$1","LazyResult$1$1","Document$1$1","Root$2$1","Processor$1$1","normalized","process","use","processor$1","Declaration$1$1","PreviousMap2$1","Comment$1$1","AtRule$1$1","Input$1$1","Root$1$1","Rule$1$1","fromJSON$1$1","ownInputs","inputHydrated","fromJSON_1$1","CssSyntaxError2$1","Declaration2$1","LazyResult2$1","Container2$1","Processor2$1","stringify$5","fromJSON$2","Document22","Warning2$1","Comment2$1","AtRule2$1","Result2$1","Input2$1","parse$5","list$3","Rule2$1","Root2$1","Node2$1","postcss$3","initializer","warningPrinted","creator","env","LANG","transformer","processOpts","pluginOpts","fromJSON","atRule","Processor","Warning","Result","Input","postcss_1$1","postcss$1$1","__defProp2","__publicField2","__defNormalProp2","getDefaultExportFromCjs","getAugmentedNamespace","picocolors_browser","picocolors_browserExports","require$$2","pico","terminalHighlight$1","CssSyntaxError$3","CssSyntaxError2","cssSyntaxError","symbols","DEFAULT_RAW","Stringifier$2","Stringifier$1","stringify$4","stringify_1","isClean$2","my$2","CssSyntaxError$2","Stringifier22","stringify$3","Node$4","Node$3","Declaration$4","declaration","nonSecure","SourceMapConsumer$2","SourceMapGenerator$2","dirname$1","PreviousMap$2","previousMap","SourceMapConsumer$1","SourceMapGenerator$1","pathToFileURL$1","resolve$1","terminalHighlight","CssSyntaxError$1","PreviousMap$1","fromOffsetCache","sourceMapAvailable$1","pathAvailable$1","Input$4","Input$3","sourceMapAvailable","pathAvailable","mapGenerator","Node$2","Comment$4","parse$4","Rule$4","AtRule$4","Root$6","isClean$1","my$1","Declaration$3","Comment$3","Node$1","cleanSource","markDirtyUp","Container$7","Container2","container","LazyResult$4","Processor$3","Container$6","Document$3","document$1","Warning$2","warning","Warning$1","Result$3","SINGLE_QUOTE","DOUBLE_QUOTE","BACKSLASH","SLASH","NEWLINE","SPACE","FEED","TAB","CR","OPEN_SQUARE","CLOSE_SQUARE","OPEN_PARENTHESES","CLOSE_PARENTHESES","OPEN_CURLY","CLOSE_CURLY","SEMICOLON","ASTERISK","COLON","AT","RE_AT_END","RE_WORD_END","RE_BAD_BRACKET","RE_HEX_ESCAPE","Container$5","AtRule$3","LazyResult$3","Processor$2","Container$4","Root$5","list$2","list_1","Container$3","list$1","Rule$3","Declaration$2","tokenizer22","Comment$2","AtRule$2","Root$4","Rule$2","SAFE_COMMENT_NEIGHBOR","findLastWithPosition","Container$2","Parser22","Input$2","parse$3","parse_1","MapGenerator$1","stringify$2","Container$1","Document$2","Result$2","parse$2","Root$3","TYPE_TO_CLASS_NAME","PLUGIN_PROPS","NOT_VISITORS","CHILDREN","isPromise","getEvents","toStack","cleanMarks","postcss$2","LazyResult$2","LazyResult2","lazyResult","MapGenerator22","stringify$1","parse$1","Result$1","NoWorkResult$1","noWorkResult","NoWorkResult22","LazyResult$1","Document$1","Root$2","Processor$1","Declaration$1","PreviousMap22","Comment$1","AtRule$1","Input$1","Root$1","Rule$1","fromJSON$1","fromJSON_1","CssSyntaxError22","Declaration22","LazyResult22","Container22","Processor22","Document222","Warning22","Comment22","AtRule22","Result22","Input22","Rule22","Root22","Node22","postcss_1","postcss$1","BaseRRNode","_args","childIterator","_newChild","_refChild","_node","testableAccessors","testableMethods","untaintedBasePrototype","isAngularZonePresent","getUntaintedPrototype","untaintedAccessorCache","getUntaintedAccessor","untaintedMethodCache","getUntaintedMethod","mutationObserverCtor","on","capture","DEPARTED_MIRROR_ACCESS_WARNING","_mirror","throttle","wait","leading","remaining","trailing","hookSetter","isRevoked","patch","replacement","wrapped","defineProperties","__rrweb_original__","receiver","nowTimestamp","getWindowScroll","_d","scrollingElement","getWindowHeight","getWindowWidth","closestElementOfNode","isBlocked","isIgnored","headTitleMutations","isAncestorRemoved","legacy_isTouchEvent","changedTouches","isSerializedIframe","isSerializedStylesheet","hasShadowRoot","StyleSheetMirror","styleIDMap","newId","idStyleMap","getStyle","generateId","getShadowHost","shadowHost","DOCUMENT_FRAGMENT_NODE","shadowHostInDom","rootShadowHost","getRootShadowHost","inDom","EventType","EventType2","IncrementalSource","IncrementalSource2","MouseInteractions","MouseInteractions2","PointerTypes","PointerTypes2","CanvasContext","CanvasContext2","MediaInteractions","MediaInteractions2","NodeType","isNodeInLinkedList","DoubleLinkedList","addNode","__ln","previousSibling","tail","removeNode","moveKey","parentId","MutationBuffer","processMutation","emit","frozen","locked","adds","addedIds","addList","getNextId","ns","pushAdd","parentTag","addedSet","currentN","iframeManager","addIframe","stylesheetManager","trackLinkElement","shadowDomManager","addShadowRoot","iframe","childSn","attachIframe","observeAttachShadow","attachLinkElement","mapRemoves","movedSet","isParentRemoved","removesSubTreeCache","isAncestorInSet","droppedSet","candidate","tailNode","unhandledNode","texts","genTextAreaValueMutation","attribute","diffAsStr","styleDiff","unchangedAsStr","_unchangedStyles","removes","attributeMap","movedMap","mutationCb","textarea","cn","m","oldValue","attributeName","unattachedDoc","implementation","createHTMLDocument","old","pname","newValue","getPropertyValue","newPriority","getPropertyPriority","genAdds","nodeId","isSerialized","deepDelete","n22","processRemoves","processedNodeManager","inOtherBuffer","targetId","canvasManager","unfreeze","isFrozen","lock","unlock","addsSet","_mirror2","_isParentRemoved","_isAncestorInSet","errorHandler","callbackWrapper","rest","mutationBuffers","getEventTarget","composedPath","initMutationObserver","rootEl","mutationBuffer","processMutations","attributeOldValue","characterData","characterDataOldValue","initMouseInteractionObserver","mouseInteractionCb","sampling","mouseInteraction","disableMap","handlers","currentPointerType","eventKey","pointerType","thisEventKey","Mouse","Touch","Pen","MouseDown","MouseUp","Click","clientX","clientY","getHandler","PointerEvent","TouchStart","TouchEnd","initScrollObserver","scrollCb","scrollLeftTop","INPUT_TAGS","lastInputValueMap","getNestedCSSRulePositions","childRule","hasNestedCSSRule","parentRule","CSSGroupingRule","CSSMediaRule","CSSSupportsRule","CSSConditionRule","parentStyleSheet","recurse","getIdAndStyleId","styleMirror","initAdoptedStyleSheetObserver","host2","hostId","patchTarget","originalPropertyDescriptor","_a3","sheets","adoptStyleSheets","initObservers","o2","hooks","currentWindow","mousemoveCb","viewportResizeCb","inputCb","mediaInteractionCb","styleSheetRuleCb","styleDeclarationCb","canvasMutationCb","fontCb","selectionCb","customElementCb","mousemove","viewportResize","mediaInteaction","styleSheetRule","styleDeclaration","canvasMutation","font","selection","customElement","mergeHooks","recordDOM","mousemoveHandler","callbackThreshold","mousemoveCallback","timeBaseline","positions","wrappedCb","totalOffset","timeOffset","updatePosition","DragEvent","Drag","MouseEvent","MouseMove","TouchMove","initMoveObserver","mouseInteractionHandler","scrollHandler","viewportResizeHandler","lastH","lastW","initViewportResizeObserver","inputHandler","ignoreClass","ignoreSelector","userTriggeredOnInput","eventHandler","userTriggered","isTrusted","isChecked","cbWithDedup","text2","v2","lastInputValue","propertyDescriptor","HTMLInputElement","hookProperties","HTMLSelectElement","HTMLTextAreaElement","HTMLOptionElement","initInputObserver","mediaInteractionHandler","Play","Pause","Seeked","VolumeChange","RateChange","initMediaInteractionObserver","styleSheetObserver","adoptedStyleSheetObserver","styleDeclarationObserver","fontObserver","CSSStyleSheet","insertRule","thisArg","argumentsList","addRule","styleBlock","deleteRule","replaceSync","removeRule","supportedNestedCSSRuleTypes","canMonkeyPatchNestedCSSRule","unmodifiedFunctions","typeKey","initStyleSheetObserver","ignoreCSSAttributes","CSSStyleDeclaration","removeProperty","initStyleDeclarationObserver","collectFonts","fontMap","originalFontFace","FontFace","family","descriptors","fontFace","fontSource","Uint8Array","restoreHandler","fonts","initFontObserver","selectionObserver","collapsed","updateSelection","getSelection","isCollapsed","ranges","rangeCount","getRangeAt","startContainer","startOffset","endContainer","endOffset","initSelectionObserver","customElementObserver","initCustomElementObserver","pluginHandlers","plugin3","CrossOriginIframeMirror","generateIdFn","remoteId","idToRemoteMap","remoteToIdMap","idToRemoteIdMap","getIdToRemoteIdMap","remoteIdToIdMap","getRemoteIdToIdMap","getRemoteId","getRemoteIds","ids","iframeIdToRemoteIdMap","iframeRemoteIdToIdMap","IframeManager","wrappedEmit","recordCrossOriginIframes","crossOriginIframeStyleMirror","iframes","crossOriginIframeMap","addLoadListener","loadListener","isAttachIframe","crossOriginMessageEvent","transformedEvent","transformCrossOriginEvent","isCheckout","FullSnapshot","crossOriginIframeMirror","replaceIdOnNode","crossOriginIframeRootIdMap","patchRootIdOnNode","timestamp","IncrementalSnapshot","Mutation","Meta","Load","DomContentLoaded","Plugin","Custom","replaceIds","ViewportResize","MediaInteraction","MouseInteraction","Scroll","CanvasMutation","StyleSheetRule","StyleDeclaration","replaceStyleIds","Font","Selection","AdoptedStyleSheet","styles","iframeMirror","ShadowDomManager","WeakSet","patchAttachShadow","shadowDoms","restoreHandlers","iframeElement","manager","option","sRoot","chars","lookup","i$1","canvasVarMap","saveWebGLVar","isInstanceOfWebGLObject","list2","ctor","contextMap","variableListFor$1","serializeArg","Float32Array","Float64Array","Int32Array","Uint16Array","Int16Array","Int8Array","Uint8ClampedArray","rr_type","base64","arraybuffer","bytes","DataView","byteOffset","byteLength","HTMLImageElement","ImageData","serializeArgs","supportedWebGLConstructorNames","initCanvasContextObserver","setPreserveDrawingBufferToTrue","contextType","ctxName","getNormalizedContextName","contextAttributes","preserveDrawingBuffer","patchGLPrototype","getOwnPropertyNames","recordArgs","hookHandler","setter","encodedJs","WorkerWrapper","objURL","webkitURL","worker","Worker","revokeObjectURL","CanvasManager","latestId","invokeId","rafStamps","pendingCanvasMutations","initCanvasMutationObserver","initCanvasFPSObserver","resetObservers","fps","canvasContextReset","snapshotInProgressMap","onmessage","commands","timeBetweenSnapshots","rafId","lastSnapshotTime","takeCanvasSnapshots","matchedCanvas","getCanvas","getContextAttributes","COLOR_BUFFER_BIT","bitmap","createImageBitmap","startRAFTimestamping","startPendingCanvasMutationFlusher","canvas2DReset","props2D","CanvasRenderingContext2D","initCanvas2DMutationObserver","canvasWebGL1and2Reset","WebGLRenderingContext","WebGL","WebGL2RenderingContext","WebGL2","initCanvasWebGLMutationObserver","flushPendingCanvasMutations","setLatestRAFTimestamp","_values","flushPendingCanvasMutationFor","valuesWithType","type2","StylesheetManager","adoptedStyleSheetCb","linkEl","trackedLinkElements","trackStylesheetInLinkElement","adoptedStyleSheetData","styleIds","CSSRule","r2","_linkEl","ProcessedNodeManager","thisBuffer","buffers","nodeMap","active","takeFullSnapshot$1","recording","cleanFrame","debug","record","checkoutEveryNms","checkoutEveryNth","maskAllInputs","_maskInputOptions","_slimDOMOptions","packFn","mousemoveWait","recordAfter","errorHandler2","inEmittingFrame","passEmitsToParent","month","search","tel","week","select","password","lastFullSnapshotEvent","NodeList","DOMTokenList","polyfill$1","incrementalSnapshotCount","eventProcessor","exceedCount","exceedTime","wrappedMutationEmit","wrappedScrollEmit","wrappedCanvasMutationEmit","getMirror","nodeMirror","slimDOM","snapshot","initialOffset","CustomElement","t2","addCustomEvent","tag","freezePage","takeFullSnapshot","NotStarted","Running","Stopped","customOptions","stopFunction","ContextMenu","DblClick","Focus","Blur","rrwebEvent","stringifiedData","_step","dataURIRegex","_iterator","_createForOfIteratorHelper","matchAll","ensureMaxMessageSize","bufferSize","ScreenDrawer","svgElement","minHeight","mouseDown","colorpicker","fadeOutToolbar","tool","mouseDownPen","mouseDownRect","mouseMove","mouseMovePen","mouseMoveRect","mouseUp","fadeInToolbar","mouseUpPen","mouseUpRect","appendToBuffer","getMousePosition","updateSvgPath","w","abs","startPoint","setAttributeNS","createElementNS","strokeWidthRect","appendPathToSvg","strokeWidth","pt","strPath","touches","totalX","totalY","getAveragePoint","tmpPath","pathBuffer","fadeTarget","GleapScrollStopper","supportsPassive","wheelOpt","scrollDisabled","wheelEvent","preventDefaultForScrollKeys","keyCode","showWidgetUI","formKey","dirty","dialogUI","enableScroll","screenRecorder","unregisterListeners","cleanupMousePointer","screenDrawer","dialog","captureSVG","videoPreviewContainer","dismissUI","colorPicker","borderLayer","captureEditor","dragCursor","setMouseMove","mouseMoveEventHandler","touchMoveEventHandler","dragHandle","dragStart","drag","dragEnd","bugReportingEditor","translateText","pageLeaveListener","isEscape","isEnter","dismiss","showNextStep","returnValue","registerListeners","hideWidgetUI","createEditorUI","setupMousePointer","disableScroll","setupScreenRecording","captureScreenDrawerRerender","setupColorPicker","setupToolbar","selectedColor","colorItems","colorItem","hexColor","onclick","setColor","setPenColor","currentX","currentY","initialX","initialY","toolbar","isDragging","xOffset","yOffset","_getTransformValues","matrix","DOMMatrix","m41","m42","getTransformValues","nextButton","chooseTool","toolbarItem","toolbarTools","setTool","svgClone","toolbarItems","_loop2","toggleAudio","startScreenRecording","removeLastAddedPathFromSvg","itemInactiveClass","screenRecordingTooltip","audioRecordingTooltip","recordingClass","notRecordingClass","clearPreview","captureRenderer","penTips","fill","staticTranslation","staticTranslations","vars","template","localizationOptions","htmlLang","GleapShortcutListener","shortCutListener","char","keyIdentifier","ctrlKey","startFeedbackFlowWithOptions","autostartDrawing","GleapPreFillManager","unreadCount","notificationContainer","notificationsFromCache","unreadNotificationsKey","nots","notification","createdAt","notifications","renderNotifications","updateTabBarNotificationCount","sound","clearElem","currentNewsIndex","newsNotifications","news","otherNotifications","currentIndex","currentNews","newsElem","newsContainerElem","coverImageUrl","newsImageElem","stopPropagation","openNews","newsContentElem","newsTitleElem","getName","descHTML","renderDescription","descElem","paginationElem","pageIndicator","nextBtn","conversation","openConversation","checklist","openChecklist","progress","currentStep","totalSteps","nextStepTitle","sender","profileImageUrl","openNewsArticle","_notification$data","previewText","uiOnly","classLeft","classNoButton","_this$bannerUrl","_this$bannerData","_data$data2","_data$data3","_data$data4","_data$data5","_data$data6","_data$data7","_data$data8","_data$data9","_data$data10","bannerData","format","startBot","botId","startFeedbackFlow","formId","showSurvey","surveyFormat","articleId","openHelpCenterArticle","startChecklist","checklistId","bannerContainer","gleapBFrame","injectBannerUI","_listenForMessages","modalUrl","_this$modalUrl","_data$data11","modalData","primaryColor","_postMessage","modalContainer","wrapper","modalBackdropClickListener","_this2$modalData$show","_this2$modalData","showCloseButton","frame","_injectModalUI","play","settings","Audio","playPromise","getID","getClassSelectors","getClasses","cl","kCombinations","items","getNthChild","sibling","counter","getTag","isUnique","elems","getAllSelectors","attributesToIgnore","funcs","sum","getAttributes","res","testUniqueness","getFirstUnique","getUniqueCombination","combinations","getCombinations","firstUnique","combination","getUniqueSelector","selectorTypes","excludeRegex","foundSelector","elementSelectors","ID","Class","selectorType","Tag","Classes","Attributes","NthChild","unique","_step2","_options$selectorType","_options$attributesTo","_options$excludeRegex","allSelectors","parents","currentElement","getParents","_iterator2","_allSelectors","it","ElementOverlay","overlay","background","borderColor","borderStyle","borderWidth","boxSizing","cursor","zIndex","margin","shadowContainer","attachShadow","_createClass","useShadowDOM","usingShadowDOM","setBounds","bounds","ElementPicker","overlayOptions","handleMouseMove","handleClick","tick","addToDOM","removeFromDOM","mouseX","mouseY","tickReq","stopImmediatePropagation","onClick","updateTarget","ignoreCursor","newTarget","elementFromPoint","captureCursor","elementFilter","onHover","GleapAdminHelper","picker","stopPicker","onElementPicked","startPicker","GleapAdminManager","COLLAPSE_UI_ACTIVE_CLASS","FRAME_CONTAINER_ACTIVE_CLASS","isActive","activeClass","gleapCollapseUI","toggle","injectedCollapseUI","toggleCollapseUI","_this$configData","configData","sendMessageToTourBuilder","GleapProductTours","disable","adminHelper","injectCollapseUI","setFrameHeight","gleapAdminDisabled","initAdminHelper","currentPage","click","opener","GleapTours","currentConfig","configure","animate","allowClose","overlayOpacity","smoothScroll","disableActiveInteraction","showProgress","stagePadding","stageRadius","popoverOffset","showButtons","disableButtons","overlayColor","getConfig","easeInOutQuad","elapsed","initialValue","amountOfChange","getFocusableElements","parentEls","focusableQuery","flatMap","parentEl","isParentFocusable","focusableEls","isElementVisible","bringInView","isElementInView","shouldSmoothScroll","scrollIntoView","behavior","hasScrollableParent","currentState","setState","getState","resetState","registeredListeners","listen","hook","trackActiveElement","activeStagePosition","renderOverlay","mountOverlay","stagePosition","overlaySvg","stage","windowX","windowY","svg","fillRule","clipRule","strokeLinejoin","strokeMiterlimit","stagePath","generateStageSvgPathString","createOverlaySvg","onDriverClick","pathElement","stageWidth","stageHeight","limitedRadius","normalizedRadius","highlightBoxX","highlightBoxY","highlightBoxWidth","highlightBoxHeight","highlight","attemptTime","elemObj","refactoredElement","hidePopover","existingDummy","getElementById","mountDummyElement","toElement","toStep","_toStep$disableActive","fromStep","fromElement","isFirstHighlight","isToDummyElement","isFromDummyElement","isAnimatedTour","highlightStartedHook","onHighlightStarted","highlightedHook","onHighlighted","deselectedHook","onDeselected","hasDelayedPopover","isPopoverRendered","isHalfwayThrough","popover","renderPopover","fromDefinition","toDefinition","transitionStage","transferHighlight","refreshActiveHighlight","activeHighlight","activeStep","refreshOverlay","repositionPopover","requireRefresh","resizeTimeout","trapFocus","activeElement","popoverEl","firstFocusableEl","lastFocusableEl","shiftKey","previousFocusableEl","nextFocusableEl","onKeyup","shouldPreventDefault","listenerWrapper","listener2","useCapture","title","description","closeButton","footer","footerButtons","previousButton","createPopover","_ref2$nextBtnText","nextBtnText","_ref2$prevBtnText","prevBtnText","_ref2$progressText","progressText","showButtonsConfig","showProgressConfig","showFooter","disabledButtonsConfig","popoverWrapper","customPopoverClass","popoverClass","_b2","onNextClick","onPrevClick","onCloseClick","onPopoverRender","focusableElement","getPopoverDimensions","boundingClientRect","realWidth","realHeight","calculateTopForLeftRight","elementDimensions","popoverDimensions","popoverPadding","popoverArrowDimensions","calculateLeftForTopBottom","_ref3$align","align","_ref3$side","requiredAlignment","requiredSide","topValue","isTopOptimal","bottomValue","isBottomOptimal","leftValue","isLeftOptimal","rightValue","isRightOptimal","noneOptimal","popoverRenderedSide","leftToSet","topToSet","leftValue2","rightToSet","bottomToSet","popoverArrow","popoverWidth","windowWidth","elementWidth","elementLeft","popoverHeight","windowHeight","elementTop","elementHeight","arrowSide","arrowAlignment","renderPopoverArrow","moveNext","activeIndex","steps","nextStepIndex","drive","movePrevious","previousStepIndex","handleArrowLeft","handleArrowRight","_e","_f","_g","_h","stepIndex","hasNextStep","hasPreviousStep","doneBtnText","allowsClosing","progressTextReplaced","configuredButtons","calculatedButtons","withOnDestroyStartedHook","activeOnDestroyed","onDestroyStarted","onDestroyed","destroyPopover","destroyHighlight","isActiveDummyElement","setConfig","setSteps","getActiveIndex","isFirstStep","isLastStep","getActiveStep","getActiveElement","getPreviousElement","getPreviousStep","moveTo","_defineProperties","descriptor","_toPropertyKey","toPrimitive","_toPrimitive","localStorageKey","pointerContainerId","copilotJoinedContainerId","_canPlayAudio","GleapCopilotTours","Constructor","_scrollListeners","_currentAnchor","_currentStep","_scrollDebounceTimer","productTourId","currentActiveIndex","productTourData","updatePointerPosition","protoProps","staticProps","onCompleteCallback","scrollableAncestors","getScrollableAncestors","_pointerContainer","yPosition","targetScrollPosition","scrollTo","smoothScrollToY","removeScrollListeners","pollCount","updateFinalPosition","isElementFullyVisible","targetX","targetY","containerWidthSpace","attachScrollListeners","currentAudio","pause","copilotInfoContainer","_GleapConfigManager$g","_GleapConfigManager$g2","_this$productTourData3","_this$productTourData4","_this$productTourData5","_this$productTourData6","_this$productTourData","_this$productTourData2","contrastColor","playVoice","gradient","svgMouse","infoBubble","kaiAvatar","kaiSlug","completeTour","canPlayAudio","supported","setupCopilotTour","showUnmuteModal","showAudioUnmuteModal","renderNextStep","_this$productTourData7","_this$productTourData8","_this$productTourData9","modalOverlay","modal","unmuteModalTitle","unmuteButton","unmuteModalButton","startAnywayButton","unmuteModalContinue","_this7","handleStep","gotToNextStep","_currentStep$inputTyp","proceedClickmode","storeUncompletedTour","inputType","handleInputEvent","_e$target","once","_currentStep$inputVal","inputValue","typeCharacter","wave","performClickAnimation","tempDiv","htmlToPlainText","readTime","wordCount","ceil","estimateReadTime","continueWithNoAudio","voice","elementPromise","maxAttempts","attempts","interval","waitForElement","_self$productTourData","tourType","gleapTourObj","delay","manually","validateProductTour","onComplete","comData","clearUncompletedTour","startWithConfig","unmuted","driverSteps","isClickMode","isInputMode","hasSender","videoUrl","senderHTML","firstName","driverStep","buttons","backButton","allowKeyboardControl","nextText","doneText","prevText","_config$state","onDocumentClick","popoverElement","mediaElements","performRequentialRefresh","mediaElement","playingClass","playPauseContainer","videoElement","videoContainer","clickVideo","evnt","gleapTourPopover","_evnt$target","__originalGetContext","GleapChecklist","_HTMLElement","_assertThisInitialized","_callSuper","handleChecklistUpdate","handleSessionUpdate","_networkManager","_boundFloatingLauncherClick","handleFloatingLauncherClick","_boundFloatingCloseClick","handleFloatingCloseClick","_floatingHideTimeout","_inherits","_wrapNativeSuper","_boundHandleChecklistUpdate","_boundHandleSessionUpdate","_boundResizeHandler","handleResize","_checkSessionAndLoad","removeFloatingClickListeners","checklistData","_hasLoaded","_isSessionReady","_initialActiveSet","renderResponse","updateActiveTaskMaxHeight","loadChecklist","renderChecklist","_getGleapSessionInstance","hasChecklistId","defaultValue","translateTextWithVars","validateChecklist","_isMock","isConnected","fetchChecklist","_isInitialLoad","_this3$checklistData$","_data$outbound","completedSteps","firstIncompleteIndex","findIndex","_session$gleapId","_session$gleapHash","checkedStep","makeRequest","updateData","_this$checklistData$o3","previousCompletedSteps","dataChanged","activeStepCompleted","currentlyActiveStepIndex","_this$checklistData$o","activeStepId","_this$checklistData$o2","nextActiveStep","setActiveStep","tasks","launcher","_outbound$config","_this$checklistData","renderDoneState","progressbarEnabled","doneSteps","_outbound$config2","_outbound$config3","nextIncompleteStep","titleText","_translateWithVars","subject","subtitleText","successTitle","successMessage","circumference","PI","computedOffset","isHeader","toFixed","_outbound$sender","infoEnabled","_translate","senderHtml","progressLabel","durationLabel","isTaskDone","badge","getCheckIcon","stepTitle","stepDescription","actionButtonText","actionTitle","actionHtml","markDoneLabel","markDoneHtml","allowMarkDone","taskClasses","_outbound$config4","_outbound$config5","_outbound$config6","floatingEnabled","renderFloatingLauncher","renderInfoSection","renderProgressSection","renderTasks","addTaskEventListeners","addFloatingClickListeners","toggleTask","taskBodyInner","task","newActiveStep","markDoneBtn","_this5$checklistData","previouslyActiveStep","_this5$checklistData$","stepId","allSteps","isModalOpen","tasksModal","_this5$checklistData$2","updateChecklist","actionBtn","_this5$checklistData2","actionBody","openURL","actionOpenInNewTab","gleapError","previousActiveStep","tasksToToggle","forceOpen","taskElement","isOpen","shouldOpen","taskBody","registerGleapChecklist","offlineMode","hostname","injectNotificationUI","actions","_action$data","popupType","disableInAppNotifications","showNotification","showBanner","showModal","startProductTourWithConfig","globalData","replayData","getReplayData","setTags","setUrlHandler","tools","setAiTools","updateContainerHeight","initialHeight","fixGleapHeight","checkForUncompletedTour","checkForUrlParams","urlParams","URLSearchParams","widget","conversationFlow","startConversation","feedbackFlow","surveyFlow","surveyFlowFormat","tourDelay","identifySession","updateSession","setMaxRequests","setOptions","cleanedData","formPreFill","toggleFeedbackButton","setAppVersionCode","setAppBuildNumber","setBannerUrl","setModalUrl","setTicketAttribute","unsetTicketAttribute","clearTicketAttributes","attachCustomData","setCustomData","removeCustomData","clearCustomData","playSound","showNotificationBadge","notificationInstance","setOverrideLanguage","softReInitialize","updateContact","registerCustomAction","buttonStyle","contrastButtonColor","contrastBackgroundColor","contrastHeaderColor","isDarkMode","headerDarkColor","subTextColor","backgroundColorHover","hoverHoverColor","buttonBorderRadius","containerRadius","chatRadius","formItemBorderRadius","formItemSmallBorderRadius","bottomInfoOffset","colorStyleSheet","zIndexBase","injectStyledCSS","replays","attachments","sendSilentCrashReportWithFormData","silentCrashReportSent","excludeDataCleaned","newFormData","hideBackButton","showBackButton","flow","collectionId","term","networkManager","checkStartUrl","startProductTourConfig","startURL","loadUncompletedTour","GleapActions","GLAction","urlParts","identifier","openHelpCenterCollection"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"index.mjs","mappings":"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","sources":["webpack://gleap/webpack/bootstrap","webpack://gleap/webpack/runtime/define property getters","webpack://gleap/webpack/runtime/hasOwnProperty shorthand","webpack://gleap/./src/GleapFeedbackButtonManager.js","webpack://gleap/./src/UI.js","webpack://gleap/./src/GleapNetworkIntercepter.js","webpack://gleap/./src/GleapHelper.js","webpack://gleap/./src/ChecklistNetworkManager.js","webpack://gleap/./node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","webpack://gleap/./node_modules/@floating-ui/core/dist/floating-ui.core.mjs","webpack://gleap/./node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","webpack://gleap/./node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","webpack://gleap/./src/GleapPageFilter.js","webpack://gleap/./src/GleapTooltipManager.js","webpack://gleap/./src/GleapSession.js","webpack://gleap/./src/GleapStreamedEvent.js","webpack://gleap/./src/GleapConfigManager.js","webpack://gleap/./src/ScreenCapture.js","webpack://gleap/./src/ResourceExclusionList.js","webpack://gleap/./src/GleapScreenRecorder.js","webpack://gleap/./src/GleapFeedback.js","webpack://gleap/./src/GleapFrameManager.js","webpack://gleap/./src/GleapMetaDataManager.js","webpack://gleap/./src/GleapConsoleLogManager.js","webpack://gleap/./src/GleapClickListener.js","webpack://gleap/./src/GleapCustomDataManager.js","webpack://gleap/./src/GleapEventManager.js","webpack://gleap/./src/GleapCustomActionManager.js","webpack://gleap/./node_modules/@rrweb/record/dist/record.js","webpack://gleap/./src/GleapReplayRecorder.js","webpack://gleap/./src/ScreenDrawer.js","webpack://gleap/./src/GleapScrollStopper.js","webpack://gleap/./src/GleapMarkerManager.js","webpack://gleap/./src/GleapTranslationManager.js","webpack://gleap/./src/GleapShortcutListener.js","webpack://gleap/./src/GleapPreFillManager.js","webpack://gleap/./src/GleapNotificationManager.js","webpack://gleap/./src/GleapBannerManager.js","webpack://gleap/./src/GleapModalManager.js","webpack://gleap/./src/GleapAudioManager.js","webpack://gleap/./src/GleapTagManager.js","webpack://gleap/./src/unique-selector/src/getID.js","webpack://gleap/./src/unique-selector/src/getClasses.js","webpack://gleap/./src/unique-selector/src/getCombinations.js","webpack://gleap/./src/unique-selector/src/isElement.js","webpack://gleap/./src/unique-selector/src/getNthChild.js","webpack://gleap/./src/unique-selector/src/getTag.js","webpack://gleap/./src/unique-selector/src/isUnique.js","webpack://gleap/./src/unique-selector/src/unique-selector.js","webpack://gleap/./src/unique-selector/src/getAttributes.js","webpack://gleap/./src/unique-selector/src/getParents.js","webpack://gleap/./src/ElementPicker.js","webpack://gleap/./src/GleapAdminHelper.js","webpack://gleap/./src/GleapAdminManager.js","webpack://gleap/./src/GleapTours.js","webpack://gleap/./src/GleapCopilotTours.js","webpack://gleap/./src/GleapProductTours.js","webpack://gleap/./src/Gleap.js","webpack://gleap/./src/GleapChecklist.js","webpack://gleap/./src/index.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","import {\n GleapFrameManager,\n GleapConfigManager,\n GleapNotificationManager,\n GleapTranslationManager,\n GleapSession,\n} from \"./Gleap\";\nimport { loadIcon } from \"./UI\";\n\nexport default class GleapFeedbackButtonManager {\n feedbackButton = null;\n injectedFeedbackButton = false;\n buttonHidden = null;\n lastButtonIcon = null;\n\n // Feedback button types\n static FEEDBACK_BUTTON_BOTTOM_RIGHT = \"BOTTOM_RIGHT\";\n static FEEDBACK_BUTTON_BOTTOM_LEFT = \"BOTTOM_LEFT\";\n static FEEDBACK_BUTTON_CLASSIC = \"BUTTON_CLASSIC\";\n static FEEDBACK_BUTTON_CLASSIC_LEFT = \"BUTTON_CLASSIC_LEFT\";\n static FEEDBACK_BUTTON_CLASSIC_BOTTOM = \"BUTTON_CLASSIC_BOTTOM\";\n static FEEDBACK_BUTTON_NONE = \"BUTTON_NONE\";\n\n // GleapFeedbackButtonManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapFeedbackButtonManager();\n }\n return this.instance;\n }\n\n destroy() {\n if (this.feedbackButton) {\n this.feedbackButton.remove();\n this.feedbackButton = null;\n }\n\n this.buttonHidden = null;\n this.lastButtonIcon = null;\n this.injectedFeedbackButton = false;\n this.instance = null;\n }\n\n /**\n * Toggles the feedback button visibility.\n * @param {*} show\n * @returns\n */\n toggleFeedbackButton(show) {\n this.buttonHidden = !show;\n\n GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n GleapNotificationManager.getInstance().updateContainerStyle();\n }\n\n feedbackButtonPressed() {\n var frameManager = GleapFrameManager.getInstance();\n if (frameManager.isOpened()) {\n frameManager.hideWidget();\n } else {\n frameManager.setAppMode(\"widget\");\n frameManager.showWidget();\n }\n }\n\n /**\n * Injects the feedback button into the current DOM.\n */\n injectFeedbackButton() {\n if (this.injectedFeedbackButton) {\n return;\n }\n this.injectedFeedbackButton = true;\n\n var elem = document.createElement(\"div\");\n elem.addEventListener(\"click\", () => {\n this.feedbackButtonPressed();\n });\n document.body.appendChild(elem);\n this.feedbackButton = elem;\n\n this.updateFeedbackButtonState();\n }\n\n updateNotificationBadge(count) {\n const notificationBadge = document.querySelector(\".bb-notification-bubble\");\n if (!notificationBadge) {\n return;\n }\n\n const notificationHiddenClass = \"bb-notification-bubble--hidden\";\n if (count > 0 && !GleapFrameManager.getInstance().isOpened()) {\n notificationBadge.classList.remove(notificationHiddenClass);\n notificationBadge.innerText = count;\n } else {\n notificationBadge.classList.add(notificationHiddenClass);\n }\n }\n\n refresh() {\n const feedbackButton = document.querySelector(\".bb-feedback-button\");\n if (feedbackButton) {\n this.updateFeedbackButtonText();\n this.updateFeedbackButtonState();\n } else {\n this.injectedFeedbackButton = false;\n this.feedbackButton = null;\n this.buttonHidden = null;\n this.lastButtonIcon = null;\n this.injectFeedbackButton();\n }\n }\n\n updateFeedbackButtonText() {\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n\n if (\n !(\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT\n )\n ) {\n return;\n }\n\n const feedbackButton = document.querySelector(\n \".bb-feedback-button-classic\"\n );\n if (!feedbackButton) {\n return;\n }\n\n feedbackButton.innerText = flowConfig.widgetButtonText;\n }\n\n /**\n * Updates the feedback button state\n * @returns\n */\n updateFeedbackButtonState() {\n if (this.feedbackButton === null) {\n return;\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n\n var buttonIcon = \"\";\n if (flowConfig.buttonLogo) {\n buttonIcon = `\"Feedback`;\n } else {\n buttonIcon = loadIcon(\"button\", \"#fff\");\n }\n\n this.feedbackButton.className = \"bb-feedback-button gleap-font gl-block\";\n this.feedbackButton.setAttribute(\n \"dir\",\n GleapTranslationManager.getInstance().isRTLLayout ? \"rtl\" : \"ltr\"\n );\n\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT\n ) {\n this.feedbackButton.classList.add(\n \"bb-feedback-button--classic-button-style\"\n );\n\n this.feedbackButton.innerHTML = `
${flowConfig.widgetButtonText}
`;\n } else {\n if (buttonIcon !== this.lastButtonIcon) {\n this.feedbackButton.innerHTML = `
${buttonIcon}${loadIcon(\n \"arrowdown\",\n \"#fff\"\n )}
`;\n }\n }\n\n // Prevent dom update if not needed.\n this.lastButtonIcon = buttonIcon;\n\n var hideButton = false;\n if (GleapFeedbackButtonManager.getInstance().buttonHidden === null) {\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_NONE\n ) {\n hideButton = true;\n }\n } else {\n if (GleapFeedbackButtonManager.getInstance().buttonHidden) {\n hideButton = true;\n }\n }\n if (hideButton) {\n this.feedbackButton.classList.add(\"bb-feedback-button--disabled\");\n }\n\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_BOTTOM_LEFT\n ) {\n this.feedbackButton.classList.add(\"bb-feedback-button--bottomleft\");\n }\n\n if (GleapFrameManager.getInstance().isOpened()) {\n this.feedbackButton.classList.add(\"bb-feedback-button--open\");\n }\n\n const appMode = GleapFrameManager.getInstance().appMode;\n if (\n appMode === \"survey\" ||\n appMode === \"survey_full\" ||\n appMode === \"survey_web\"\n ) {\n this.feedbackButton.classList.add(\"bb-feedback-button--survey\");\n }\n\n if (\n flowConfig.hideForGuests === true &&\n !GleapSession.getInstance().isUser()\n ) {\n this.feedbackButton.classList.add(\"bb-feedback-button--hidden\");\n }\n }\n}\n","import GleapFeedbackButtonManager from \"./GleapFeedbackButtonManager\";\n\nconst calculateShadeColor = function (col, amt) {\n col = col.replace(/^#/, \"\");\n if (col.length === 3)\n col = col[0] + col[0] + col[1] + col[1] + col[2] + col[2];\n\n let [r, g, b] = col.match(/.{2}/g);\n [r, g, b] = [\n parseInt(r, 16) + amt,\n parseInt(g, 16) + amt,\n parseInt(b, 16) + amt,\n ];\n\n r = Math.max(Math.min(255, r), 0).toString(16);\n g = Math.max(Math.min(255, g), 0).toString(16);\n b = Math.max(Math.min(255, b), 0).toString(16);\n\n const rr = (r.length < 2 ? \"0\" : \"\") + r;\n const gg = (g.length < 2 ? \"0\" : \"\") + g;\n const bb = (b.length < 2 ? \"0\" : \"\") + b;\n\n return `#${rr}${gg}${bb}`;\n};\n\nexport const calculateContrast = (hex) => {\n var r = parseInt(hex.substr(1, 2), 16),\n g = parseInt(hex.substr(3, 2), 16),\n b = parseInt(hex.substr(5, 2), 16),\n yiq = (r * 299 + g * 587 + b * 114) / 1000;\n return yiq >= 160 ? \"#000000\" : \"#ffffff\";\n};\n\nexport const widgetMaxHeight = 700;\n\nexport const injectStyledCSS = (\n primaryColor,\n headerColor,\n buttonColor,\n borderRadius,\n backgroundColor,\n buttonX,\n buttonY,\n buttonStyle\n) => {\n const contrastColor = calculateContrast(primaryColor);\n const contrastButtonColor = calculateContrast(buttonColor);\n const contrastBackgroundColor = calculateContrast(backgroundColor);\n const contrastHeaderColor = calculateContrast(headerColor);\n const isDarkMode = contrastBackgroundColor === \"#ffffff\";\n const headerDarkColor = calculateShadeColor(\n headerColor,\n contrastHeaderColor === \"#ffffff\" ? -35 : -15\n );\n const subTextColor = isDarkMode\n ? calculateShadeColor(backgroundColor, 100)\n : calculateShadeColor(backgroundColor, -120);\n const backgroundColorHover = isDarkMode\n ? calculateShadeColor(backgroundColor, 30)\n : calculateShadeColor(backgroundColor, -12);\n const hoverHoverColor = isDarkMode\n ? calculateShadeColor(backgroundColor, 80)\n : calculateShadeColor(backgroundColor, -30);\n\n var borderRadius = parseInt(borderRadius, 10);\n const buttonBorderRadius = Math.round(borderRadius * 1.05);\n const containerRadius = Math.round(borderRadius * 0.8);\n const chatRadius = Math.round(borderRadius * 0.6);\n const formItemBorderRadius = Math.round(borderRadius * 0.4);\n const formItemSmallBorderRadius = Math.round(borderRadius * 0.25);\n const zIndexBase = 2147483600;\n\n var bottomInfoOffset = 57 + buttonY;\n if (\n buttonStyle === GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM\n ) {\n bottomInfoOffset = buttonY + 15;\n } else if (buttonStyle && buttonStyle.includes(\"CLASSIC\")) {\n bottomInfoOffset = buttonY;\n } else if (buttonStyle === GleapFeedbackButtonManager.FEEDBACK_BUTTON_NONE) {\n bottomInfoOffset = buttonY;\n }\n\n const colorStyleSheet = `\n .gleap-font, .gleap-font * {\n font-style: normal;\n font-variant-caps: normal;\n font-variant-ligatures: normal;\n font-variant-numeric: normal;\n font-variant-east-asian: normal;\n font-weight: normal;\n font-stretch: normal;\n font-size: 100%;\n line-height: 1;\n font-family: system-ui, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n }\n .gleap-input-highlight {\n box-shadow: 0 0 0 3px ${primaryColor} !important;\n }\n .gleap-frame-container {\n right: ${buttonX}px;\n bottom: ${61 + buttonY}px;\n width: calc(100% - 40px);\n max-width: 410px;\n position: fixed;\n z-index: ${zIndexBase + 31};\n visibility: visible;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.16);\n border-radius: ${containerRadius}px;\n overflow: hidden;\n animation-duration: .3s;\n animation-fill-mode: both;\n animation-name: gleapFadeInUp;\n user-select: none;\n pointer-events: none;\n transition: max-width 0.3s ease-out;\n }\n\n .gleap-admin-highlight {\n box-shadow: 0px 0px 0px 4px red;\n }\n\n :root {\n --gleap-margin-top: 50px;\n }\n\n .gleap-tooltip-anchor {\n position: relative;\n display: inline-block;\n float: left;\n max-width: 0px;\n width: 17px;\n }\n\n .gleap-tooltip-hotspot {\n position: absolute;\n display: block;\n width: 17px;\n height: 17px;\n cursor: pointer;\n top: 0px;\n left: 0px;\n }\n\n @keyframes gleap-pulse {\n 0% {\n transform: scale(0);\n opacity: 0.25;\n }\n 45% {\n transform: scale(2.5);\n opacity: 0;\n }\n 100% {\n transform: scale(0);\n opacity: 0;\n }\n }\n\n .gleap-tooltip-hotspot-animation {\n position: absolute;\n border-radius: 17px;\n opacity: 0.25;\n display: block;\n width: 17px;\n height: 17px;\n cursor: pointer;\n top: 0px;\n left: 0px;\n animation: gleap-pulse 5s infinite;\n }\n\n .gleap-tooltip-hotspot svg {\n width: 17px;\n height: 17px;\n object-fit: contain;\n display: block;\n }\n\n .gleap-tooltip-inner {\n position: relative;\n overflow: visible;\n font-size: 14px;\n font-weight: normal;\n color: #000;\n line-height: 1.3;\n }\n\n .gleap-tooltip {\n position: absolute;\n background-color: #fff;\n color: #000;\n font-size: 15px;\n line-height: 18px;\n padding: 16px;\n padding-top: 8px;\n padding-bottom: 8px;\n border-radius: 4px;\n max-width: min(350px, 80vw);\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n opacity: 0;\n visibility: hidden;\n transition: opacity 0.2s, visibility 0.2s;\n z-index: ${zIndexBase + 100};\n }\n\n .gleap-tooltip a {\n color: ${primaryColor};\n text-decoration: underline;\n display: inline !important;\n margin: 0px !important;\n padding: 0px !important;\n word-break: break-word;\n }\n\n .gleap-tooltip ul {\n padding-left: 16px;\n }\n\n .gleap-tooltip b {\n font-weight: 600;\n }\n\n .gleap-tooltip h2 {\n font-size: 18px;\n line-height: 20px;\n font-weight: 600;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip h3 {\n font-size: 16px;\n line-height: 18px;\n font-weight: 600;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip p {\n padding: 0px;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip img {\n max-width: 100%;\n max-height: 300px;\n width: 100%;\n height: auto;\n object-fit: cover;\n margin-top: 8px;\n margin-bottom: 8px;\n border-radius: 4px;\n }\n\n .gleap-tooltip iframe,\n .gleap-tooltip video {\n max-width: 100%;\n width: 100%;\n height: auto;\n min-height: 200px;\n display: block;\n border: none;\n outline: none;\n padding: 0px;\n margin-top: 8px;\n margin-bottom: 8px;\n border-radius: 4px;\n }\n\n .gleap-tooltip-arrow {\n position: absolute;\n width: 20px;\n height: 20px;\n }\n\n .gleap-tooltip-arrow svg {\n width: 20px;\n height: 20px;\n object-fit: contain;\n }\n\n .gleap-b-frame {\n width: 100%;\n height: 100%;\n border: none;\n pointer-events: auto;\n padding: 0px;\n margin: 0px;\n }\n\n .gleap-b-shown {\n transition: margin 0.3s ease-out;\n margin-top: var(--gleap-margin-top);\n position: relative;\n z-index: 10000;\n }\n\n .gleap-b-f {\n margin-top: 0px;\n }\n\n .gleap-b {\n display: none;\n position: absolute;\n top: calc(-1 * var(--gleap-margin-top));\n left: 0px;\n width: 100vw;\n height: var(--gleap-margin-top);\n z-index: ${zIndexBase + 99};\n }\n\n @keyframes gleapSlideIn {\n from {\n top: calc(-1 * var(--gleap-margin-top));\n }\n to {\n top: 10px;\n }\n }\n\n .gleap-b-f .gleap-b {\n position: fixed;\n top: 10px;\n animation: gleapSlideIn .25s ease-out forwards;\n max-width: 800px;\n width: calc(100% - 20px);\n left: 50%;\n z-index: ${zIndexBase + 99};\n transform: translateX(-50%);\n border-radius: ${formItemBorderRadius}px;\n overflow: hidden;\n box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.15), 0px 5px 5px rgba(0, 0, 0, 0.05);\n }\n\n .gleap-b-shown .gleap-b {\n display: block;\n }\n\n .gleap-image-view {\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n z-index: ${zIndexBase + 99};\n background-color: ${contrastBackgroundColor}cc;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .gleap-image-view-image {\n width: 90%;\n height: auto;\n max-width: 90%;\n max-height: 90%;\n object-fit: contain;\n }\n\n .gleap-image-view-close {\n position: fixed;\n top: 20px;\n right: 20px;\n width: 32px;\n height: 32px;\n opacity: 0.8;\n z-index: ${zIndexBase + 140};\n box-shadow: 0px 5px 18px rgba(0, 0, 0, 0.16);\n cursor: pointer;\n }\n\n .gleap-image-view-close:hover {\n opacity: 1;\n }\n\n .gleap-image-view-close svg path {\n fill: ${backgroundColor};\n }\n\n [dir=rtl].gleap-frame-container {\n right: auto;\n left: ${buttonX}px;\n bottom: ${61 + buttonY}px;\n }\n\n .gleap-frame-container--loading iframe {\n opacity: 0;\n }\n\n .gleap-frame-container--loading::before {\n content: \" \";\n position: fixed;\n top: 0px;\n left: 0px;\n right: 0px;\n height: 100%;\n max-height: 380px;\n background: linear-gradient(\n 130deg,\n ${headerDarkColor} 0%,\n ${headerColor} 100%\n );\n }\n \n .gleap-frame-container--loading::after {\n content: \" \";\n position: fixed;\n top: 0px;\n left: 0px;\n right: 0px;\n height: 100%;\n height: 100%;\n max-height: 380px;\n background: linear-gradient(\n 180deg,\n transparent 60%,\n ${backgroundColor}1A 70%,\n ${backgroundColor} 100%\n );\n }\n\n .gleap-frame-container--loading-nogradient::before {\n max-height: 340px;\n background: ${headerColor} !important;\n }\n\n .gleap-frame-container--loading-nofade::after {\n display: none !important;\n }\n\n .gleap-frame-container--survey {\n bottom: ${buttonY}px !important;\n }\n\n .gleap-frame-container--extended {\n max-width: 690px !important;\n }\n\n .gleap-frame-container--survey-full {\n position: fixed;\n top: 0 !important;\n left: 0 !important;\n bottom: 0 !important;\n right: 0 !important;\n width: 100vw !important;\n max-width: 100vw !important;\n height: 100vh;\n height: 100dvh !important;\n background-color: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(6px);\n display: flex !important;\n justify-content: center !important;\n align-items: center !important;\n max-height: 100vh;\n max-height: 100dvh !important;\n border-radius: 0 !important;\n animation-name: none !important;\n }\n\n .gleap-frame-container--survey-full .gleap-frame-container-inner {\n max-width: 640px !important;\n width: calc(100% - 24px);\n border-radius: ${containerRadius}px;\n overflow: hidden;\n }\n\n .gleap-frame-container--classic {\n right: ${buttonX}px;\n bottom: ${buttonY}px;\n }\n\n [dir=rtl].gleap-frame-container--classic {\n right: auto;\n left: ${buttonX}px;\n bottom: ${buttonY}px;\n }\n\n .gleap-frame-container--no-button {\n bottom: ${buttonY}px;\n }\n\n [dir=rtl].gleap-frame-container--classic-left {\n bottom: ${buttonY}px;\n }\n\n .gleap-frame-container--classic-left {\n right: auto;\n left: ${buttonX}px;\n bottom: ${buttonY}px;\n }\n\n [dir=rtl].gleap-frame-container--classic-left {\n left: auto;\n right: ${buttonX}px;\n bottom: ${buttonY}px;\n }\n\n .gleap-frame-container--modern-left {\n right: auto;\n left: ${buttonX}px;\n bottom: ${61 + buttonY}px;\n }\n\n [dir=rtl].gleap-frame-container--modern-left {\n left: auto;\n right: ${buttonX}px;\n bottom: ${61 + buttonY}px;\n }\n\n .gleap-frame-container--animate {\n pointer-events: auto !important;\n }\n\n @keyframes gleapFadeInUp {\n from {\n opacity: 0;\n transform: translate3d(0, 100%, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n\n @keyframes gleapFadeInUpMobile {\n from {\n opacity: 0;\n transform: translate3d(0, 10%, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n\n .gleap-notification-container {\n position: fixed;\n bottom: ${bottomInfoOffset}px;\n right: ${buttonX}px;\n z-index: ${zIndexBase + 30};\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n width: 100%;\n max-width: min(340px, 80vw);\n }\n\n .gleap-notification-container--left {\n left: ${4 + buttonX}px;\n right: initial !important;\n }\n\n [dir=rtl].gleap-notification-container {\n left: ${4 + buttonX}px;\n right: initial !important;\n }\n\n [dir=rtl].gleap-notification-container--left {\n left: initial !important;\n right: ${buttonX}px !important;\n align-items: flex-start !important;\n }\n\n .gleap-notification-container--no-button {\n bottom: ${buttonY}px;\n }\n\n .gleap-notification-item {\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n\n .gleap-notification-close {\n border-radius: 100%;\n width: 28px;\n height: 28px;\n background-color: ${subTextColor};\n display: flex;\n justify-content: center;\n align-items: center;\n margin-bottom: 8px;\n cursor: pointer;\n visibility: hidden;\n pointer-events: none;\n }\n\n .gleap-notification-container:hover .gleap-notification-close {\n visibility: visible;\n pointer-events: auto;\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-notification-close {\n visibility: visible;\n pointer-events: auto;\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n }\n\n .gleap-notification-close svg {\n width: 45%;\n height: 45%;\n object-fit: contain;\n fill: ${backgroundColor};\n }\n\n .gleap-notification-item-checklist-container {\n display: flex;\n animation: fadeIn;\n animation-duration: .45s;\n background-color: ${backgroundColor};\n border-radius: ${subTextColor};\n box-sizing: border-box;\n cursor: pointer;\n flex-direction: column;\n overflow: hidden;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ${chatRadius}px;\n margin-bottom: 12px;\n }\n\n .gleap-notification-item-checklist-content {\n align-items: flex-start;\n display: flex;\n flex-direction: column;\n padding: 15px;\n width: 100%;\n width: min(310px, 70vw);\n max-width: min(310px, 70vw);\n }\n\n .gleap-notification-item-checklist-content-title {\n color: ${contrastBackgroundColor};\n font-size: 15px;\n font-weight: 500;\n line-height: 21px;\n margin-bottom: 10px;\n max-width: 100%;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .gleap-notification-item-checklist-content-progress {\n width: 100%;\n height: 8px;\n border-radius: 8px;\n background-color: ${backgroundColorHover};\n }\n\n .gleap-notification-item-checklist-content-progress-inner {\n height: 100%;\n border-radius: 8px;\n background-color: ${primaryColor};\n }\n\n .gleap-notification-item-checklist-content-next {\n color: ${subTextColor};\n font-size: 15px;\n font-weight: normal;\n line-height: 21px;\n margin-top: 10px;\n max-width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: flex;\n align-items: center;\n }\n\n .gleap-notification-item-checklist-content-next svg {\n height: 18px;\n margin-right: 5px;\n width: auto;\n }\n\n .gleap-notification-item-checklist-content-next b {\n font-size: 15px;\n font-weight: normal;\n color: ${contrastBackgroundColor};\n }\n\n .gleap-notification-item-news {\n width: 100%;\n }\n\n .gleap-news-pagination {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 10px;\n width: 100%;\n }\n\n .gleap-news-page-indicator {\n font-size: 12px;\n color: ${subTextColor};\n }\n\n .gleap-news-next-button {\n background-color: ${primaryColor};\n color: ${contrastColor};\n border-radius: ${formItemSmallBorderRadius}px;\n box-sizing: border-box;\n padding: 5px 10px;\n font-size: 14px;\n font-weight: bold;\n line-height: 21px;\n border: none;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: none !important;\n outline: none !important;^\n }\n\n .gleap-notification-item-news-content {\n align-items: flex-start;\n display: flex;\n flex-direction: column;\n padding: 15px;\n }\n\n .gleap-notification-item-news-preview {\n color: ${subTextColor};\n font-size: 14px;\n line-height: 21px;\n font-weight: 400;\n overflow-wrap: break-word;\n word-break: break-word;\n display: block;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .gleap-notification-item-news-sender {\n display: flex;\n align-items: center;\n color: ${subTextColor};\n font-size: 15px;\n line-height: 21px;\n font-weight: 400;\n }\n \n .gleap-notification-item-news-content-title {\n color: ${contrastBackgroundColor};\n font-size: 15px;\n font-weight: 500;\n line-height: 21px;\n margin-bottom: 6px;\n max-width: 100%;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n cursor: pointer;\n }\n\n .gleap-notification-item-news-sender img {\n border-radius: 100%;\n height: 20px;\n margin-right: 8px;\n object-fit: cover;\n width: 20px;\n }\n\n [dir=rtl] .gleap-notification-item-news-sender img {\n margin-left: 8px;\n margin-right: 0px !important;\n }\n\n .gleap-notification-item-news-container {\n display: flex;\n animation: fadeIn;\n animation-duration: .45s;\n background-color: ${backgroundColor};\n border-radius: ${subTextColor};\n box-sizing: border-box;\n flex-direction: column;\n overflow: hidden;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ${chatRadius}px;\n margin-bottom: 12px;\n }\n\n .gleap-notification-item-news-image {\n background-color: ${subTextColor};\n height: 170px;\n max-height: 170px;\n object-fit: cover;\n width: 100%;\n cursor: pointer;\n }\n \n .gleap-notification-item-news-content-title:hover {\n color: ${primaryColor};\n }\n\n .gleap-notification-item {\n display: flex;\n align-items: flex-end;\n cursor: pointer;\n }\n\n .gleap-notification-item img {\n width: 32px;\n height: 32px;\n min-width: 32px;\n border-radius: 100%;\n object-fit: cover;\n margin-right: 8px;\n margin-bottom: 12px;\n cursor: pointer;\n }\n\n [dir=rtl] .gleap-notification-item img {\n margin-left: 8px;\n margin-right: 0px !important;\n }\n\n .gleap-notification-item-container {\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ${chatRadius}px;\n border-bottom-left-radius: 0px;\n padding: 20px;\n background-color: ${backgroundColor};\n margin-bottom: 12px;\n cursor: pointer;\n font-size: 15px;\n line-height: 21px;\n color: ${contrastBackgroundColor};\n position: relative;\n }\n\n .gleap-notification-item-container::after {\n content: \" \";\n position: absolute;\n bottom: 0px;\n width: 0px;\n height: 0px;\n left: -6px;\n border-style: solid;\n border-width: 0px 0px 10px 6px;\n border-color: transparent transparent ${backgroundColor};\n }\n\n .gleap-notification-item-sender {\n color: ${subTextColor};\n line-height: 20px;\n }\n\n .gleap-notification-item-content {\n line-height: 20px;\n color: ${contrastBackgroundColor};\n margin-top: 4px;\n min-width: min(200px, 50vw);\n word-wrap: break-word;\n word-break: break-word;\n }\n\n .gleap-frame-container-inner {\n position: relative;\n width: 100%;\n height: calc(100vh - ${84 + buttonY}px);\n max-height: ${widgetMaxHeight}px;\n }\n\n .gleap-frame-container--survey .gleap-frame-container-inner {\n height: calc(100vh - 40px);\n }\n \n .gleap-frame-container-inner:before {\n content: \" \";\n position: absolute;\n width: 100%;\n height: calc(100% - ${containerRadius}px);\n top: ${containerRadius}px;\n background-color: ${backgroundColor};\n z-index: -1;\n }\n \n .gleap-frame-container iframe {\n height: 100% !important;\n width: 100% !important;\n max-width: 100% !important;\n display: block !important;\n pointer-events: auto !important;\n }\n \n .gleap-frame-container--hidden {\n display: none !important;\n pointer-events: none;\n animation: none !important;\n }\n \n .bb-feedback-button {\n margin: 0px;\n position: fixed;\n bottom: ${buttonY}px;\n right: ${buttonX}px;\n border-radius: 30px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n background-color: transparent;\n color: #000000;\n z-index: ${zIndexBase + 30};\n box-sizing: border-box;\n display: flex;\n align-items: center;\n padding: 0px;\n }\n\n [dir=rtl].bb-feedback-button {\n bottom: ${buttonY}px;\n right: auto;\n left: ${buttonX}px;\n }\n \n .bb-feedback-button--bottomleft {\n bottom: ${buttonY}px;\n right: auto;\n left: ${buttonX}px;\n }\n\n [dir=rtl].bb-feedback-button--bottomleft {\n bottom: ${buttonY}px;\n right: ${buttonX}px;\n left: auto;\n }\n \n .bb-feedback-button--disabled {\n display: none !important;\n }\n\n .bb-feedback-button--hidden {\n display: none !important;\n }\n \n .bb-feedback-button-text {\n padding: 8px 12px;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n background-color: #fff;\n border-radius: 8px;\n box-shadow: 0px 0px 14px 0px rgba(0, 0, 0, 0.15);\n position: relative;\n z-index: 99;\n }\n \n .bb-feedback-button-text:before {\n content: \"\";\n position: absolute;\n box-shadow: rgba(0, 0, 0, 0.04) 6px 6px 5px;\n transform: rotate(315deg);\n bottom: 16px;\n right: -4px;\n border-width: 10px;\n border-style: solid;\n border-color: transparent #fff #fff transparent;\n }\n \n .bb-feedback-button--bottomleft .bb-feedback-button-text:before {\n display: none;\n }\n \n .bb-feedback-button-text:after {\n content: \"\";\n position: absolute;\n bottom: 12px;\n right: 0px;\n background-color: #fff;\n width: 5px;\n height: 30px;\n }\n \n .bb-feedback-button-text-title {\n font-family: sans-serif;\n font-size: 14px;\n color: #666;\n line-height: 18px;\n max-width: 220px;\n }\n \n .bb-feedback-button-text-title b {\n color: #000000;\n font-weight: 600;\n }\n\n .bb-notification-bubble {\n position: absolute;\n top: -5px;\n right: -5px;\n min-width: 12px;\n padding: 0px 4px;\n height: 20px;\n min-width: 20px;\n border-radius: 20px;\n background-color: red;\n color: #fff;\n font-size: 11px;\n font-family: sans-serif;\n text-align: center;\n line-height: 20px;\n }\n\n .bb-notification-bubble--hidden {\n display: none;\n }\n \n .bb-feedback-button-icon {\n width: 48px;\n height: 48px;\n border-radius: 48px;\n background-color: #485bff;\n transition: box-shadow, transform 0.2s ease-in-out;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n position: relative;\n }\n \n .bb-feedback-button-classic {\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n top: 50%;\n right: 0px;\n position: fixed;\n transform: rotate(-90deg) translate(50%, -50%);\n transform-origin: 100% 50%;\n padding: 9px 20px;\n text-align: center;\n background-color: #485bff;\n border-top-left-radius: 8px;\n border-top-right-radius: 8px;\n font-family: sans-serif;\n font-size: 16px;\n color: #fff;\n box-shadow: 0px 0px 14px 0px rgba(0, 0, 0, 0.25);\n }\n\n [dir=rtl].bb-feedback-button .bb-feedback-button-classic {\n top: 50%;\n left: 0px;\n right: auto;\n transform: rotate(90deg) translate(-50%, -100%);\n transform-origin: 0% 0%;\n }\n \n .bb-feedback-button-classic--left {\n top: 50%;\n left: 0px;\n right: auto;\n transform: rotate(90deg) translate(-50%, -100%);\n transform-origin: 0% 0%;\n }\n\n [dir=rtl].bb-feedback-button .bb-feedback-button-classic--left {\n top: 50%;\n right: 0px;\n left: auto;\n transform: rotate(-90deg) translate(50%, -50%);\n transform-origin: 100% 50%;\n }\n \n .bb-feedback-button-classic--bottom {\n top: auto;\n bottom: 0px;\n transform: none;\n right: ${buttonX}px;\n left: auto;\n }\n \n [dir=rtl].bb-feedback-button .bb-feedback-button-classic--bottom {\n top: auto;\n bottom: 0px;\n transform: none;\n left: ${buttonX}px;\n right: auto;\n }\n\n .bb-feedback-button--classic-button-style {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n \n .bb-feedback-button--open.bb-feedback-button--classic-button-style {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: bbFadeOutRight;\n }\n \n .bb-feedback-button .bb-logo-logo {\n position: absolute;\n width: 30px;\n height: 30px;\n top: 9px;\n left: 9px;\n object-fit: contain;\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-name: bbZoomIn;\n }\n \n .bb-feedback-button .bb-logo-arrowdown {\n position: absolute;\n width: 14px;\n height: 14px;\n top: 17px;\n left: 17px;\n object-fit: contain;\n animation-duration: 0.3s;\n animation-fill-mode: both;\n }\n \n .bb-feedback-button .bb-logo-arrowdown {\n animation-name: bbZoomOut;\n }\n \n .bb-feedback-button--open .bb-logo-arrowdown {\n animation-name: bbZoomIn;\n }\n \n .bb-feedback-button--open .bb-logo-logo {\n animation-name: bbZoomOut;\n }\n \n .bb-feedback-button-icon:hover {\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.25), 0px 0px 20px rgba(0, 0, 0, 0.2);\n transform: scale(1.1);\n }\n \n .bb-feedback-button--open .bb-feedback-button-text {\n animation-name: bbFadeOutDown;\n }\n \n .bb-feedback-button--open .bb-feedback-button-icon {\n display: flex;\n }\n \n .bb-capture-svg {\n position: fixed;\n z-index: ${zIndexBase + 14};\n top: 0px;\n left: 0px;\n right: 0px;\n width: 100%;\n height: 100%;\n padding: 0px;\n margin: 0px;\n cursor: crosshair;\n }\n\n .bb-capture-svg--preview {\n cursor: auto !important;\n }\n \n .bb-rec-on-circle {\n animation-name: bbRecIconFade;\n animation-duration: 2s;\n animation-iteration-count: infinite;\n animation-direction: alternate;\n }\n \n .bb-rec-on-cont {\n animation-name: bbRecIconContFade;\n animation-duration: 2s;\n animation-iteration-count: infinite;\n animation-direction: alternate;\n }\n \n .bb-capture-editor-drag-info {\n position: fixed;\n top: -200px;\n left: 0px;\n z-index: ${zIndexBase + 16};\n transition: opacity 0.3s ease-in-out;\n }\n \n .bb-capture-editor-drag-info svg {\n width: 24px;\n height: 24px;\n }\n \n .bb-capture-editor-borderlayer {\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n border: 4px solid ${primaryColor};\n cursor: crosshair;\n z-index: ${zIndexBase + 10};\n box-sizing: border-box;\n pointer-events: none;\n }\n \n .bb-capture-editor-notrecording .bb-capture-editor-borderlayer {\n background-color: rgba(0, 0, 0, 0.8);\n }\n\n .bb-capture-editor-recording .bb-capture-editor-borderlayer {\n border: 4px solid #eb144c !important;\n }\n \n .bb-capture-editor-recording .bb-capture-dismiss {\n display: none;\n }\n \n .bb-capture-editor-item-inactive {\n opacity: 0.3;\n cursor: not-allowed !important;\n }\n \n .bb-capture-editor-notrecording .bb-capture-toolbar-drawingitem {\n opacity: 0.3;\n cursor: not-allowed !important;\n }\n \n .bb-capture-editor-notrecording .bb-capture-editor-drag-info {\n display: none;\n }\n \n .bb-capture-editor-notrecording .bb-capture-svg {\n pointer-events: none !important;\n }\n \n .bb-capture-toolbar {\n position: fixed;\n top: 20px;\n left: 50%;\n transform: translateX(-50%);\n z-index: ${zIndexBase + 18};\n background-color: #fff;\n padding: 5px;\n display: flex;\n align-items: center;\n border-radius: 8px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n transition: opacity 0.3s ease-in-out;\n }\n \n .bb-capture-dismiss {\n position: fixed;\n top: 0px;\n right: 0px;\n z-index: ${zIndexBase + 18};\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n width: 36px;\n height: 36px;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: ${primaryColor};\n border-bottom-left-radius: ${formItemSmallBorderRadius}px;\n }\n\n [dir=rtl] .bb-capture-dismiss {\n top: 0px;\n left: 0px;\n right: auto;\n border-bottom-left-radius: 0px !important;\n border-bottom-right-radius: ${formItemSmallBorderRadius}px;\n }\n \n .bb-capture-dismiss svg path {\n fill: ${contrastColor};\n }\n \n .bb-capture-dismiss svg {\n width: 20px;\n height: 20px;\n object-fit: contain;\n }\n \n .bb-capture-button-next {\n font-family: sans-serif;\n box-sizing: border-box;\n font-weight: 600;\n text-align: center;\n width: auto;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n margin: 0px;\n line-height: 36px;\n padding: 0px 12px;\n font-size: 15px;\n margin-left: 12px;\n }\n\n [dir=rtl].bb-capture-editor .bb-capture-button-next {\n margin-left: auto;\n margin-right: 12px;\n }\n \n .bb-capture-toolbar-item-spacer {\n width: 1px;\n height: 38px;\n min-width: 1px;\n margin: 0px 5px;\n }\n \n .bb-capture-toolbar-item {\n width: 42px;\n height: 38px;\n min-width: 42px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n position: relative;\n margin-right: 5px;\n }\n\n .drag-handle-item {\n cursor: grab !important;\n width: 34px;\n min-width: 34px;\n }\n\n .drag-handle-item svg {\n width: 18px !important;\n height: 18px !important;\n }\n \n .bb-capture-toolbar-item svg {\n width: 23px;\n height: 23px;\n object-fit: contain;\n }\n \n .bb-capture-toolbar-item-selectedcolor {\n border-radius: 100%;\n width: 20px;\n height: 20px;\n background-color: #db4035;\n }\n \n .bb-capture-toolbar-item[data-type=\"undo\"] svg {\n width: 18px;\n height: 18px;\n }\n \n .bb-capture-toolbar-item[data-active=\"true\"] {\n position: relative;\n }\n \n .bb-capture-preview {\n display: none;\n background-color: rgba(0, 0, 0, 0.6);\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n justify-content: center;\n align-items: center;\n z-index: ${zIndexBase + 20};\n }\n \n .bb-capture-preview-inner {\n background-color: #fff;\n padding: 0px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n border-radius: 8px;\n flex-direction: column;\n max-width: 640px;\n width: 100%;\n margin: 20px;\n }\n \n .bb-capture-preview-inner video {\n border-radius: 8px 8px 0px 0px;\n display: block;\n border: 0px;\n outline: none;\n width: 100%;\n max-height: 60vh;\n }\n \n .bb-capture-preview-buttons {\n display: flex;\n justify-content: space-between;\n padding: 14px;\n }\n \n .bb-capture-preview-retrybutton {\n font-family: sans-serif;\n border-radius: 21px;\n box-sizing: border-box;\n padding: 12px 26px;\n font-size: 16px;\n line-height: 19px;\n font-weight: 600;\n text-align: center;\n margin-top: 0px;\n margin-bottom: 0px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-preview-sendbutton {\n font-family: sans-serif;\n border-radius: 21px;\n box-sizing: border-box;\n padding: 12px 26px;\n font-size: 16px;\n line-height: 19px;\n font-weight: 600;\n text-align: center;\n margin-top: 0px;\n margin-bottom: 0px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-preview-retrybutton:hover,\n .bb-capture-preview-sendbutton:hover {\n opacity: 0.9;\n }\n \n .bb-capture-toolbar-item-recording {\n margin-right: 0px;\n }\n \n .bb-capture-toolbar-item-recording svg {\n width: 33px;\n height: 33px;\n }\n \n .bb-capture-toolbar-item-colorpicker {\n position: fixed;\n top: 70px;\n left: 50%;\n transform: translateX(-50%);\n z-index: ${zIndexBase + 18};\n background-color: #fff;\n display: none;\n padding: 10px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n border-radius: 8px;\n }\n \n .bb-capture-toolbar-item-color {\n width: 20px;\n height: 20px;\n border-radius: 100%;\n margin-right: 12px;\n box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.15);\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-toolbar-item-color:hover {\n box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.25);\n }\n \n .bb-capture-toolbar-item-color:last-of-type {\n margin-right: 0px;\n }\n \n [dir=rtl].bb-capture-editor .bb-capture-toolbar-item-color {\n margin-right: auto;\n margin-left: 12px;\n }\n \n [dir=rtl].bb-capture-editor .bb-capture-toolbar-item-color:last-of-type {\n margin-right: auto;\n margin-left: 0px;\n }\n \n .bb-capture-toolbar-item-recording[data-active=\"true\"] svg:first-of-type {\n display: none;\n }\n \n .bb-capture-toolbar-item-recording[data-active=\"true\"] svg:nth-of-type(2) {\n display: block;\n }\n \n .bb-capture-toolbar-item-recording[data-active=\"false\"] svg:first-of-type {\n display: block;\n }\n \n .bb-capture-toolbar-item-recording[data-active=\"false\"] svg:nth-of-type(2) {\n display: none;\n }\n \n .bb-capture-toolbar-item--active {\n background-color: #eee;\n }\n \n .bb-capture-toolbar-item:hover svg {\n opacity: 1;\n }\n \n .bb-capture-toolbar-item--active {\n background-color: #f8f8f8;\n }\n \n .bb-capture-toolbar-item--active svg {\n opacity: 1;\n }\n \n .bb-capture-toolbar-item--inactivecross::before {\n content: \"\";\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n height: 3px;\n width: 26px;\n margin: auto;\n border-radius: 4px;\n background-color: #e80000;\n transform: rotate(45deg);\n }\n \n .bb-capture-toolbar-item--inactivecross svg {\n fill: #eee;\n }\n \n .bb-capture-toolbar-item-timer {\n text-align: left;\n line-height: 32px;\n font-size: 14px;\n font-family: sans-serif;\n margin: 5px;\n min-width: 40px;\n display: none;\n }\n \n .bb-capture-toolbar-item .bb-tooltip {\n background-color: #555;\n color: #fff;\n visibility: hidden;\n font-size: 14px;\n font-family: sans-serif;\n text-align: center;\n padding: 5px 10px;\n position: absolute;\n z-index: 1;\n top: 45px;\n left: 0px;\n transform: translateX(calc(-50% + 21px));\n opacity: 0;\n transition: opacity 0.3s;\n white-space: nowrap;\n }\n \n .bb-capture-toolbar-item .bb-tooltip::after {\n content: \"\";\n position: absolute;\n bottom: 100%;\n left: 50%;\n margin-left: -5px;\n border-width: 5px;\n border-style: solid;\n transform: rotate(180deg);\n border-color: #555 transparent transparent transparent;\n }\n \n .bb-capture-toolbar-item:hover .bb-tooltip {\n visibility: visible;\n opacity: 1;\n }\n \n .bb-capture-options {\n display: none;\n }\n \n .bb-capture-options--active {\n display: flex;\n }\n\n @keyframes bbFadeOutRight {\n from {\n opacity: 1;\n }\n \n to {\n opacity: 0;\n }\n }\n \n @keyframes bbFadeOutDown {\n from {\n opacity: 1;\n }\n \n to {\n opacity: 0;\n transform: translate3d(0, 100%, 0);\n }\n }\n \n @keyframes bbFadeInOpacity {\n from {\n opacity: 0;\n }\n \n to {\n opacity: 1;\n }\n }\n \n @keyframes bbZoomOut {\n from {\n opacity: 1;\n }\n \n 50% {\n opacity: 0;\n transform: scale3d(0.3, 0.3, 0.3);\n }\n \n to {\n opacity: 0;\n }\n }\n \n @keyframes bbZoomIn {\n from {\n opacity: 0;\n transform: scale3d(0.3, 0.3, 0.3);\n }\n \n 50% {\n opacity: 1;\n }\n }\n \n @keyframes bbRecIconContFade {\n 0% {\n fill: #b10802;\n }\n 50% {\n fill: #ff0000;\n }\n 100% {\n fill: #b10802;\n }\n } \n .bb-capture-preview-retrybutton {\n color: ${contrastBackgroundColor};\n border-radius: ${buttonBorderRadius}px;\n background-color: ${backgroundColorHover};\n }\n .bb-capture-preview-retrybutton:hover {\n background-color: ${hoverHoverColor};\n }\n @keyframes bb-suc-fill {\n 100% {\n box-shadow: inset 0px 0px 0px 30px ${primaryColor};\n }\n }\n .bb-capture-toolbar-item-spacer {\n background-color: ${backgroundColorHover};\n }\n .bb-tooltip {\n border-radius: ${formItemBorderRadius}px;\n }\n @keyframes bbRecIconFade {\n 0% {\n fill: transparent;\n }\n 50% {\n fill: ${hoverHoverColor};\n }\n 100% {\n fill: transparent;\n }\n }\n .bb-capture-preview-sendbutton {\n color: ${contrastColor};\n background-color: ${primaryColor};\n border-radius: ${buttonBorderRadius}px;\n }\n .bb-capture-button-next {\n color: ${contrastColor};\n background-color: ${primaryColor};\n border-radius: ${formItemSmallBorderRadius}px;\n }\n .bb-capture-preview-inner {\n background-color: ${backgroundColor};\n border-radius: ${formItemBorderRadius}px;\n }\n .bb-capture-toolbar-item-timer {\n color: ${subTextColor};\n }\n .bb-svg-path {\n fill: ${contrastBackgroundColor};\n }\n .bb-capture-toolbar-item {\n border-radius: ${formItemBorderRadius}px;\n }\n .bb-capture-toolbar {\n background-color: ${backgroundColor};\n border-radius: ${formItemBorderRadius}px;\n }\n .bb-capture-toolbar-item-colorpicker {\n background-color: ${backgroundColor};\n }\n .bb-capture-toolbar-item--active {\n background-color: ${backgroundColorHover};\n }\n .bb-feedback-button-classic {\n border-top-left-radius: ${formItemBorderRadius}px;\n border-top-right-radius: ${formItemBorderRadius}px;\n }\n .bb-logo-logo--default path {\n fill: ${contrastButtonColor};\n }\n .bb-logo-arrowdown {\n fill: ${contrastButtonColor};\n }\n .bb-feedback-button-icon {\n background-color: ${buttonColor};\n }\n .bb-feedback-button-classic {\n background-color: ${buttonColor};\n color: ${contrastButtonColor};\n }\n\n @media only screen and (max-width: 450px) {\n [dir=rtl].gleap-frame-container,\n .gleap-frame-container {\n left: 0px;\n right: 0px;\n width: 100vw;\n max-width: 100vw;\n min-height: 100vh;\n max-height: 100vh;\n min-height: 100dvh !important;\n max-height: 100dvh !important;\n top: 0px;\n bottom: 0px;\n border-radius: 0px;\n animation-name: gleapFadeInUpMobile;\n }\n\n .gleap-frame-container-inner {\n width: 100vw;\n height: 100%;\n }\n\n .gleap-frame-container:not(.gleap-frame-container--survey):not(.gleap-frame-container--survey-full) .gleap-frame-container-inner {\n max-height: calc(var(--glvh, 1vh) * 100) !important;\n }\n\n .gleap-frame-container--survey {\n height: auto !important;\n top: initial !important;\n bottom: 0px !important;\n min-height: initial !important;\n }\n\n .gleap-frame-container--survey .gleap-frame-container-inner {\n height: 100vh !important;\n }\n\n .bb-tooltip {\n display: none !important;\n }\n \n .bb-capture-toolbar-item-colorpicker {\n top: 75px;\n }\n \n .bb-capture-button-next {\n margin-left: auto;\n }\n \n .bb-capture-dismiss {\n display: none;\n }\n \n .bb-capture-toolbar {\n top: 15px;\n right: 15px;\n left: 15px;\n width: auto;\n transform: none;\n }\n\n .bb-capture-editor-drag-info {\n display: none;\n }\n \n .bb-capture-editor-borderlayer {\n border-width: 4px;\n }\n }\n \n @media print {\n .bb-feedback-button {\n display: none !important;\n }\n \n .gleap-frame-container {\n display: none !important;\n }\n }\n\n .gleap-tour-sender {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n margin-bottom: 10px;\n }\n\n .gleap-tour-sender-image {\n width: 32px;\n height: 32px;\n border-radius: 32px;\n margin-right: 10px;\n background-size: cover;\n background-repeat: no-repeat;\n }\n\n .gleap-tour-popover.gleap-tour-popover-post {\n min-width: 550px;\n max-width: 550px;\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-tour-popover.gleap-tour-popover-post {\n min-width: calc(100vw - 40px);\n max-width: calc(100vw - 40px);\n }\n }\n\n .gleap-tour-message,\n .gleap-tour-message p,\n .gleap-tour-message ul {\n color: ${contrastBackgroundColor};\n }\n\n .gleap-tour-message h2 {\n font-weight: 600;\n font-size: 22px;\n }\n\n .gleap-tour-message h3 {\n font-weight: 600;\n font-size: 18px;\n }\n\n .gleap-tour-message p {\n line-height: 1.3;\n margin-bottom: 10px !important;\n margin-top: 10px !important;\n }\n\n .gleap-tour-message ul {\n line-height: 1.3;\n padding-left: 20px;\n margin-top: 10px !important;\n margin-bottom: 10px !important;\n }\n\n .gleap-tour-message {\n max-height: calc(80vh - 100px) !important;\n overflow-y: auto;\n min-width: 270px;\n }\n\n .gleap-tour-message::-webkit-scrollbar {\n width: 5px;\n }\n\n .gleap-tour-message::-webkit-scrollbar-track {\n border-radius: 0px;\n }\n \n .gleap-tour-message::-webkit-scrollbar-thumb {\n background: ${hoverHoverColor}; \n border-radius: 5px;\n }\n\n .gleap-tour-message::-webkit-scrollbar-thumb:hover {\n background: ${subTextColor};\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-tour-message {\n min-width: auto !important;\n }\n }\n\n .gleap-tour-message iframe {\n width: 100%;\n height: 300px;\n margin-top: 10px;\n margin-bottom: 10px;\n border: none;\n outline: none;\n display: block;\n }\n\n .gleap-tour-sender-name {\n font-size: 15px;\n }\n\n .gleap-tour-video {\n width: 100%;\n max-width: 100%;\n }\n\n .gleap-tour-video-svg--fullscreen {\n width: 100% !important;\n height: 100% !important;\n top: 0px !important;\n left: 0px !important;\n right: 0px !important;\n bottom: 0px !important;\n }\n\n .gleap-tour-video--playing .gleap-tour-video-playpause {\n opacity: 0;\n }\n \n .gleap-tour-video--playing:hover .gleap-tour-video-playpause {\n opacity: 1;\n }\n\n .gleap-tour-popover-video-pointer {\n padding: 0px !important;\n border-radius: 8px;\n position: relative;\n background-color: transparent !important;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-footer {\n position: absolute;\n top: 0px;\n left: 20px;\n right: 20px;\n opacity: 0;\n transition: opacity 200ms ease-in-out;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-footer button {\n padding: 5px 12px;\n }\n\n .gleap-tour-popover-video-pointer.gleap-tour-popover-can-close .gleap-tour-popover-footer {\n right: 40px !important;\n }\n\n .gleap-tour-popover-video-pointer:hover .gleap-tour-popover-footer {\n opacity: 1;\n }\n\n .gleap-tour-popover-pointer.gleap-tour-popover-no-sender .gleap-tour-message {\n padding-right: 20px;\n }\n\n .gleap-tour-video video {\n width: 100%;\n max-width: 100%;\n height: auto;\n border: none;\n outline: none;\n display: block;\n border-radius: 8px;\n }\n\n .gleap-admin-collapse-ui {\n z-index: ${zIndexBase + 35};\n cursor: pointer;\n position: fixed;\n bottom: 75px;\n right: 20px;\n width: 32px;\n height: 32px;\n border-radius: 100%;\n background-color: #fff;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: rgba(0, 0, 0, 0.16) 0px 10px 36px 0px, rgba(0, 0, 0, 0.06) 0px 0px 0px 1px;\n }\n\n .gleap-admin-collapse-ui svg {\n width: 20px;\n height: 14px;\n fill: #000 !important;\n }\n\n .gleap-admin-collapse-ui-active {\n bottom: 20px !important;\n }\n\n .gleap-admin-collapse-ui-active svg {\n transform: rotate(180deg);\n }\n\n .gleap-admin-frame-container-active {\n display: none !important;\n }\n\n .gleap-admin-frame-container {\n position: fixed;\n bottom: 0px;\n left: 0px;\n right: 0px;\n width: 100vw;\n z-index: ${zIndexBase + 40};\n }\n\n .gleap-admin-frame {\n width: 100%;\n height: 100% !important;\n border: none;\n outline: none;\n display: block;\n }\n \n .gleap-tour-message .linktype-link {\n display: inline-block !important;\n background-color: transparent !important;\n color: ${buttonColor} !important;\n }\n\n .gleap-tooltip .linktype-button,\n .gleap-tour-message .linktype-button {\n display: inline-block !important;\n border-radius: 5px;\n box-sizing: border-box;\n padding: 10px 20px !important;\n text-decoration: none !important;\n background-color: ${buttonColor} !important;\n color: ${contrastButtonColor} !important;\n }\n\n .gleap-tour-message img {\n width: 100%;\n max-width: 100%;\n min-height: 260px;\n height: auto;\n margin-top: 10px;\n margin-bottom: 10px;\n object-fit: cover;\n }\n\n .gleap-tour-active .gleap-tour-overlay {\n pointer-events: none;\n }\n \n .gleap-tour-active * {\n pointer-events: none;\n }\n \n .gleap-tour-active .gleap-tour-active-element,\n .gleap-tour-active .gleap-tour-active-element *,\n .gleap-tour-popover,\n .gleap-tour-popover * {\n pointer-events: auto;\n }\n \n @keyframes animate-fade-in {\n 0% {\n opacity: 0;\n }\n \n to {\n opacity: 1;\n }\n }\n \n .gleap-tour-fade .gleap-tour-overlay {\n animation: animate-fade-in 200ms ease-in-out;\n }\n \n .gleap-tour-fade .gleap-tour-popover {\n animation: animate-fade-in 200ms;\n }\n\n .gleap-tour-video-playpause {\n position: absolute;\n bottom: 8px;\n left: 8px;\n width: 32px;\n height: 32px;\n padding: 4px;\n background-color: rgba(0,0,0,0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border-radius: 8px;\n transition: opacity 200ms ease-in-out;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-arrow {\n display: none !important;\n }\n\n .gleap-tour-video-playpause svg {\n width: 34px;\n height: auto;\n fill: #fff;\n }\n \n /* Popover styles */\n .gleap-tour-popover {\n all: unset;\n box-sizing: border-box;\n color: #2d2d2d;\n margin: 0;\n padding: 15px;\n border-radius: ${formItemBorderRadius}px;\n min-width: 250px;\n max-width: 300px;\n box-shadow: 0 1px 10px #0006;\n z-index: 1000000000;\n position: fixed;\n top: 0;\n right: 0;\n background-color: #fff;\n }\n \n .gleap-tour-popover * {\n font-family: \"Helvetica Neue\", Inter, ui-sans-serif, \"Apple Color Emoji\", Helvetica, Arial, sans-serif;\n }\n \n .gleap-tour-popover-title {\n font: 19px / normal sans-serif;\n font-weight: 700;\n display: block;\n position: relative;\n line-height: 1.5;\n zoom: 1;\n margin: 0;\n }\n \n .gleap-tour-popover-close-btn {\n all: unset;\n position: absolute;\n top: 5px;\n right: 5px;\n width: 32px;\n height: 32px;\n cursor: pointer;\n font-size: 30px;\n font-weight: 500;\n line-height: 32px;\n color: #d2d2d2;\n z-index: 1;\n text-align: center;\n transition: color;\n transition-duration: 200ms;\n }\n \n .gleap-tour-popover-close-btn:hover,\n .gleap-tour-popover-close-btn:focus {\n color: #2d2d2d;\n }\n \n .gleap-tour-popover-title[style*=\"block\"] + .gleap-tour-popover-description {\n margin-top: 5px;\n }\n \n .gleap-tour-popover-description {\n margin-bottom: 0;\n font: 15px / normal sans-serif;\n line-height: 1.5;\n font-weight: 400;\n zoom: 1;\n }\n \n .gleap-tour-popover-footer {\n margin-top: 15px;\n text-align: right;\n zoom: 1;\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n \n .gleap-tour-popover-progress-text {\n font-size: 13px;\n font-weight: 400;\n color: #727272;\n zoom: 1;\n }\n \n .gleap-tour-popover-footer button {\n background-color: ${primaryColor};\n color: ${contrastColor};\n border-radius: ${formItemSmallBorderRadius}px;\n box-sizing: border-box;\n padding: 10px 20px;\n font-size: 14px;\n font-weight: bold;\n line-height: 21px;\n border: none;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: none !important;\n outline: none !important;\n }\n\n .gleap-tour-popover-prev-btn {\n color: ${contrastBackgroundColor} !important;\n background-color: ${backgroundColorHover} !important;\n margin-right: 3px;\n }\n\n .gleap-tour-popover-prev-btn:hover {\n background-color: ${primaryColor}22 !important;\n color: ${primaryColor} !important;\n }\n \n .gleap-tour-popover-footer .gleap-tour-popover-btn-disabled {\n opacity: 0.5;\n pointer-events: none;\n }\n \n /* Disable the scrolling of parent element if it has an active element*/\n :not(body):has(> .gleap-tour-active-element) {\n overflow: hidden !important;\n }\n \n .gleap-tour-no-interaction, .gleap-tour-no-interaction * {\n pointer-events: none !important;\n }\n \n .gleap-tour-popover-navigation-btns {\n display: flex;\n flex-grow: 1;\n justify-content: flex-end;\n }\n \n .gleap-tour-popover-navigation-btns button + button {\n margin-left: 4px;\n }\n \n .gleap-tour-popover-arrow {\n content: \"\";\n position: absolute;\n border: 5px solid #fff;\n }\n \n .gleap-tour-popover-arrow-side-over {\n display: none;\n }\n \n /** Popover Arrow Sides **/\n .gleap-tour-popover-arrow-side-left {\n left: 100%;\n border-right-color: transparent;\n border-bottom-color: transparent;\n border-top-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-right {\n right: 100%;\n border-left-color: transparent;\n border-bottom-color: transparent;\n border-top-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-top {\n top: 100%;\n border-right-color: transparent;\n border-bottom-color: transparent;\n border-left-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-bottom {\n bottom: 100%;\n border-left-color: transparent;\n border-top-color: transparent;\n border-right-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-center {\n display: none;\n }\n \n /* Left/Start + Right/Start */\n .gleap-tour-popover-arrow-side-left.gleap-tour-popover-arrow-align-start,\n .gleap-tour-popover-arrow-side-right.gleap-tour-popover-arrow-align-start {\n top: 15px;\n }\n \n /* Top/Start + Bottom/Start */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-start,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-start {\n left: 15px;\n }\n \n /* End/Left + End/Right */\n .gleap-tour-popover-arrow-align-end.gleap-tour-popover-arrow-side-left,\n .gleap-tour-popover-arrow-align-end.gleap-tour-popover-arrow-side-right {\n bottom: 15px;\n }\n \n /* Top/End + Bottom/End */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-end,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-end {\n right: 15px;\n }\n \n /* Left/Center + Right/Center */\n .gleap-tour-popover-arrow-side-left.gleap-tour-popover-arrow-align-center,\n .gleap-tour-popover-arrow-side-right.gleap-tour-popover-arrow-align-center {\n top: 50%;\n margin-top: -5px;\n }\n \n /* Top/Center + Bottom/Center */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-center,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-center {\n left: 50%;\n margin-left: -5px;\n }\n \n /* No arrow */\n .gleap-tour-popover-arrow-none {\n display: none;\n } \n\n /* Modal styles */\n .gleap-modal-wrapper {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: ${zIndexBase + 40};\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .gleap-modal-backdrop {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.5);\n z-index: ${zIndexBase + 41};\n }\n\n .gleap-modal {\n position: relative;\n width: 90%;\n max-width: 600px;\n max-height: 90vh;\n z-index: ${zIndexBase + 100};\n background-color: ${backgroundColor};\n border-radius: ${containerRadius}px;\n overflow: hidden;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-name: gleapFadeInUp;\n }\n\n .gleap-modal-frame {\n width: 100%;\n border: none;\n display: block;\n outline: none;\n }\n\n body.gleap-modal-open {\n overflow: hidden;\n }\n\n @keyframes gleapFadeInUp {\n from {\n opacity: 0;\n transform: translate3d(0, 20px, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n `;\n\n const oldNode = document.querySelector(\".gleap-styles\");\n if (oldNode) {\n oldNode.remove();\n }\n const node = document.createElement(\"style\");\n node.innerHTML = colorStyleSheet;\n node.className = \"gleap-styles\";\n document.body.appendChild(node);\n};\n\nexport const loadIcon = function (name, color) {\n if (name === \"button\") {\n return ``;\n }\n\n if (name === \"drag\") {\n return ``;\n }\n\n if (name === \"unmute\") {\n return ``;\n }\n\n if (name === \"mute\") {\n return ``;\n }\n\n if (name === \"replay\") {\n return `\n \n `;\n }\n\n if (name === \"dismiss\") {\n return ``;\n }\n\n if (name === \"blur\") {\n return `\n \n`;\n }\n\n if (name === \"pen\") {\n return `\n \n \n \n \n \n \n \n \n \n \n \n \n`;\n }\n\n if (name === \"rect\") {\n return `\n \n \n \n \n \n \n \n \n \n \n`;\n }\n\n if (name === \"pointer\") {\n return `\n \n `;\n }\n\n if (name === \"clip\") {\n return `\n \n \n \n \n \n`;\n }\n\n if (name === \"mic\") {\n return `\n \n \n \n \n `;\n }\n\n if (name === \"camera\") {\n return `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n`;\n }\n\n if (name === \"recorderon\") {\n return `\n \n \n \n \n \n \n \n \n \n \n \n`;\n }\n\n if (name === \"recorderoff\") {\n return `\n \n \n \n \n \n \n \n \n `;\n }\n\n if (name === \"arrowdown\") {\n return `\n \n `;\n }\n\n if (name === \"arrowleft\") {\n return `\n \n `;\n }\n\n if (name === \"close\") {\n return `\n \n `;\n }\n\n if (name === \"undo\") {\n return `\n \n \n \n \n \n \n \n \n \n `;\n }\n\n if (name === \"circle-dot\") {\n return ``;\n }\n\n if (name === \"circle-question\") {\n return ``;\n }\n\n if (name === \"circle-info\") {\n return ``;\n }\n\n if (name === \"circle-exclamation\") {\n return ``;\n }\n\n if (name === \"circle-up\") {\n return ``;\n }\n\n if (name === \"circle-right\") {\n return ``;\n }\n\n return \"\";\n};\n","class GleapNetworkIntercepter {\n startTimestamp = Date.now();\n requestId = 0;\n requests = {};\n externalRequests = [];\n maxRequests = 30;\n filters = [];\n defaultBlacklist = [\"gleap.io\"];\n blacklist = [];\n initialized = false;\n stopped = false;\n loadAllResources = false;\n\n // GleapNetworkIntercepter singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapNetworkIntercepter();\n }\n return this.instance;\n }\n\n setLoadAllResources(loadAllResources) {\n this.loadAllResources = loadAllResources;\n }\n\n isContentTypeSupported(contentType) {\n if (typeof contentType !== \"string\") {\n return false;\n }\n\n if (contentType === \"\") {\n return true;\n }\n\n contentType = contentType.toLocaleLowerCase();\n\n const supportedContentTypes = [\"text/\", \"xml\", \"json\"];\n for (var i = 0; i < supportedContentTypes.length; i++) {\n if (contentType.includes(supportedContentTypes[i])) {\n return true;\n }\n }\n\n return false;\n }\n\n getRequests() {\n var requests = JSON.parse(JSON.stringify(Object.values(this.requests)));\n\n // Merge external requests into internal requests.\n if (this.externalRequests && this.externalRequests.length > 0) {\n requests = requests.concat(this.externalRequests);\n }\n\n if (this.filters && this.filters.length > 0) {\n // Perform network log filtering.\n for (var i = 0; i < requests.length; i++) {\n var request = requests[i];\n\n // Headers\n if (request && request.request && request.request.headers) {\n for (var j = 0; j < this.filters.length; j++) {\n delete request.request.headers[this.filters[j]];\n }\n }\n\n // Payload\n if (request && request.request && request.request.payload) {\n var payloadObj = request.request.payload;\n try {\n payloadObj = JSON.parse(request.request.payload);\n } catch (e) { }\n\n if (payloadObj) {\n for (var j = 0; j < this.filters.length; j++) {\n delete payloadObj[this.filters[j]];\n }\n request.request.payload = JSON.stringify(payloadObj);\n }\n }\n\n // Response\n if (request && request.response && request.response.responseText) {\n try {\n var data = JSON.parse(request.response.responseText);\n for (var j = 0; j < this.filters.length; j++) {\n delete data[this.filters[j]];\n }\n request.response.responseText = JSON.stringify(data);\n } catch (e) { }\n }\n }\n }\n\n // Get static resources from performance.\n try {\n if (typeof window !== \"undefined\" && window.performance) {\n var resources = window.performance.getEntriesByType(\"resource\");\n for (var i = 0; i < resources.length; i++) {\n var resource = resources[i];\n if (resource && resource.name) {\n if ((this.loadAllResources || [\"xmlhttprequest\", \"fetch\"].indexOf(resource.initiatorType) > -1) && !requests.find(request => request.url === resource.name)) {\n requests.push({\n type: \"RESOURCE\",\n date: new Date(this.startTimestamp + resource.startTime),\n url: resource.name,\n duration: Math.round(resource.duration),\n initiatorType: resource.initiatorType\n });\n }\n }\n }\n }\n } catch (exp) { }\n\n var blacklist = this.blacklist.concat(this.defaultBlacklist);\n if (blacklist && blacklist.length > 0) {\n try {\n requests = requests.filter((request) => {\n for (var i = 0; i < blacklist.length; i++) {\n if (request && request.url && request.url.includes(blacklist[i])) {\n return false;\n }\n }\n return true;\n });\n } catch (exp) { }\n }\n\n return requests;\n }\n\n setMaxRequests(maxRequests) {\n if (maxRequests > 70) {\n maxRequests = 70;\n }\n this.maxRequests = maxRequests;\n }\n\n setStopped(stopped) {\n this.stopped = stopped;\n }\n\n setFilters(filters) {\n this.filters = this.filters.concat(filters ? filters : []);\n }\n\n setBlacklist(blacklist) {\n this.blacklist = this.blacklist.concat(blacklist ? blacklist : []);\n }\n\n cleanRequests() {\n var keys = Object.keys(this.requests);\n if (keys.length > this.maxRequests) {\n var keysToRemove = keys.slice(0, keys.length - this.maxRequests);\n for (var i = 0; i < keysToRemove.length; i++) {\n delete this.requests[keysToRemove[i]];\n }\n }\n }\n\n calcRequestTime(bbRequestId) {\n if (!bbRequestId || !this.requests || !this.requests[bbRequestId]) {\n return;\n }\n\n var startDate = this.requests[bbRequestId][\"date\"];\n if (startDate) {\n this.requests[bbRequestId][\"duration\"] =\n new Date().getTime() - startDate.getTime();\n }\n }\n\n getTextContentSize(text) {\n var size = 0;\n try {\n size = new TextEncoder().encode(text).length;\n } catch (exp) {\n try {\n size = encodeURI(s).split(/%..|./).length - 1;\n } catch (exp) {\n try {\n size = new Blob([text]).size;\n } catch (exp) {\n size = text.length;\n }\n }\n }\n\n const kiloBytes = size / 1024;\n const megaBytes = kiloBytes / 1024;\n return megaBytes;\n }\n\n cleanupContentSize(text) {\n const contentSize = this.getTextContentSize(text);\n if (contentSize > 0.15) {\n return \"\";\n }\n\n return text;\n }\n\n cleanupPayload(payload) {\n if (payload === undefined || payload === null) {\n return \"{}\";\n }\n\n try {\n if (typeof TextDecoder !== undefined && ArrayBuffer.isView(payload)) {\n let value = new TextDecoder().decode(payload);\n return value;\n }\n } catch (exp) { }\n\n return payload;\n }\n\n preparePayload(payload) {\n var payloadText = this.cleanupPayload(payload);\n return this.cleanupContentSize(payloadText);\n }\n\n start() {\n if (this.initialized) {\n return;\n }\n\n this.initialized = true;\n const self = this;\n this.interceptNetworkRequests({\n onFetch: (params, bbRequestId) => {\n if (this.stopped || !bbRequestId || !this.requests) {\n return;\n }\n\n if (\n params.length > 0 &&\n typeof params[0] !== \"undefined\" &&\n typeof params[0].url !== \"undefined\"\n ) {\n this.requests[bbRequestId] = {\n url: params[0].url,\n date: new Date(),\n request: {\n payload: \"\",\n headers:\n typeof params[0].headers !== \"undefined\"\n ? Object.fromEntries(params[0].headers.entries())\n : {},\n },\n type:\n typeof params[0].method !== \"undefined\" ? params[0].method : \"\",\n };\n } else {\n if (params.length >= 2 && params[1]) {\n var method =\n params[1] && params[1].method ? params[1].method : \"GET\";\n this.requests[bbRequestId] = {\n request: {\n payload: self.preparePayload(params[1].body),\n headers: params[1].headers,\n },\n type: method,\n url: params[0],\n date: new Date(),\n };\n } else {\n this.requests[bbRequestId] = {\n url: params[0],\n date: new Date(),\n };\n }\n }\n\n this.cleanRequests();\n },\n onFetchLoad: (req, bbRequestId) => {\n if (\n this.stopped ||\n !bbRequestId ||\n !this.requests ||\n !this.requests[bbRequestId]\n ) {\n return;\n }\n\n try {\n this.requests[bbRequestId][\"success\"] = true;\n this.requests[bbRequestId][\"response\"] = {\n status: req.status,\n statusText: \"\",\n responseText: \"\",\n };\n this.calcRequestTime(bbRequestId);\n } catch (exp) { }\n\n try {\n var contentType = \"\";\n if (req.headers && typeof req.headers.get !== \"undefined\") {\n contentType = req.headers.get(\"content-type\");\n }\n\n if (this.isContentTypeSupported(contentType)) {\n req\n .text()\n .then((responseText) => {\n if (this.requests[bbRequestId]) {\n this.requests[bbRequestId][\"success\"] = true;\n this.requests[bbRequestId][\"response\"] = {\n status: req.status,\n statusText: req.statusText,\n responseText: self.cleanupContentSize(responseText)\n };\n }\n this.calcRequestTime(bbRequestId);\n this.cleanRequests();\n })\n .catch((err) => {\n this.cleanRequests();\n });\n } else {\n if (this.requests[bbRequestId]) {\n this.requests[bbRequestId][\"success\"] = true;\n this.requests[bbRequestId][\"response\"] = {\n status: req.status,\n statusText: req.statusText,\n responseText: \"\",\n };\n }\n this.calcRequestTime(bbRequestId);\n this.cleanRequests();\n }\n } catch (exp) { }\n },\n onFetchFailed: (err, bbRequestId) => {\n if (\n this.stopped ||\n !bbRequestId ||\n !this.requests ||\n !this.requests[bbRequestId]\n ) {\n return;\n }\n\n this.requests[bbRequestId][\"success\"] = false;\n this.calcRequestTime(bbRequestId);\n this.cleanRequests();\n },\n onOpen: (request, args) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.bbRequestId &&\n args.length >= 2 &&\n this.requests\n ) {\n this.requests[request.bbRequestId] = {\n type: args[0],\n url: args[1],\n date: new Date(),\n };\n }\n\n this.cleanRequests();\n },\n onSend: (request, args) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.bbRequestId &&\n this.requests &&\n this.requests[request.bbRequestId]\n ) {\n this.requests[request.bbRequestId][\"request\"] = {\n payload: this.preparePayload(args.length > 0 ? args[0] : \"{}\"),\n headers: request.requestHeaders,\n };\n }\n\n this.cleanRequests();\n },\n onError: (request, args) => {\n if (\n !this.stopped &&\n this.requests &&\n request &&\n request.currentTarget &&\n request.currentTarget.bbRequestId &&\n this.requests[request.currentTarget.bbRequestId]\n ) {\n this.requests[request.currentTarget.bbRequestId][\"success\"] = false;\n this.calcRequestTime(request.bbRequestId);\n }\n\n this.cleanRequests();\n },\n onLoad: (request, args) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.currentTarget &&\n request.currentTarget.bbRequestId &&\n this.requests &&\n this.requests[request.currentTarget.bbRequestId]\n ) {\n var target = request.currentTarget;\n var responseType = target.responseType;\n var responseText = \"<\" + responseType + \">\";\n if (responseType === \"\" || responseType === \"text\") {\n responseText = this.cleanupContentSize(target.responseText);\n }\n\n this.requests[target.bbRequestId][\"success\"] = true;\n this.requests[target.bbRequestId][\"response\"] = {\n status: target.status,\n statusText: target.statusText,\n responseText: responseText,\n };\n\n this.calcRequestTime(target.bbRequestId);\n }\n\n this.cleanRequests();\n },\n });\n }\n\n interceptNetworkRequests(callback) {\n var self = this;\n const open = XMLHttpRequest.prototype.open;\n const send = XMLHttpRequest.prototype.send;\n\n // Only override open and send if they haven't been overridden already.\n if (XMLHttpRequest.prototype.gleapSetRequestHeader === undefined) {\n XMLHttpRequest.prototype.gleapSetRequestHeader =\n XMLHttpRequest.prototype.setRequestHeader;\n }\n\n if (XMLHttpRequest.prototype.gleapSetRequestHeader) {\n XMLHttpRequest.prototype.setRequestHeader = function (header, value) {\n if (!this.requestHeaders) {\n this.requestHeaders = {};\n }\n\n if (this.requestHeaders && this.requestHeaders.hasOwnProperty(header)) {\n return;\n }\n\n if (!this.requestHeaders[header]) {\n this.requestHeaders[header] = [];\n }\n\n this.requestHeaders[header].push(value);\n this.gleapSetRequestHeader(header, value);\n };\n }\n\n XMLHttpRequest.prototype.open = function () {\n this[\"bbRequestId\"] = ++self.requestId;\n callback.onOpen && callback.onOpen(this, arguments);\n if (callback.onLoad) {\n this.addEventListener(\"load\", callback.onLoad.bind(callback));\n }\n if (callback.onError) {\n this.addEventListener(\"error\", callback.onError.bind(callback));\n }\n return open.apply(this, arguments);\n };\n XMLHttpRequest.prototype.send = function () {\n callback.onSend && callback.onSend(this, arguments);\n return send.apply(this, arguments);\n };\n\n if (window.fetch) {\n (function () {\n var originalFetch = window.fetch;\n window.fetch = function () {\n var bbRequestId = ++self.requestId;\n callback.onFetch(arguments, bbRequestId);\n\n return originalFetch\n .apply(this, arguments)\n .then(function (response) {\n if (response && typeof response.clone === \"function\") {\n const data = response.clone();\n callback.onFetchLoad(data, bbRequestId);\n }\n\n return response;\n })\n .catch((err) => {\n callback.onFetchFailed(err, bbRequestId);\n throw err;\n });\n };\n })();\n }\n\n return callback;\n }\n\n blobToTextPromise(blob) {\n return new Promise(function (resolve, reject) {\n var fr = new FileReader();\n fr.onload = function (evt) {\n if (evt && evt.target && evt.target.result) {\n resolve(evt.target.result);\n } else {\n reject();\n }\n };\n fr.onerror = function (err) {\n reject(err);\n };\n fr.readAsText(blob);\n });\n }\n}\n\nexport default GleapNetworkIntercepter;\n","export const resizeImage = (base64Str, maxWidth = 400, maxHeight = 400) => {\n return new Promise((resolve, reject) => {\n var isJPEG = base64Str.indexOf(\"data:image/jpeg\") === 0;\n var img = new Image();\n img.src = base64Str;\n img.onerror = () => {\n reject();\n };\n img.onload = () => {\n var canvas = document.createElement(\"canvas\");\n var MAX_WIDTH = maxWidth;\n var MAX_HEIGHT = maxHeight;\n\n // Adjust max width / height based on image props\n if (maxWidth > img.width / 1.5) {\n MAX_WIDTH = img.width / 1.5;\n }\n\n if (maxHeight > img.height / 1.5) {\n MAX_HEIGHT = img.height / 1.5;\n }\n\n var width = img.width;\n var height = img.height;\n\n if (width > height) {\n if (width > MAX_WIDTH) {\n height *= MAX_WIDTH / width;\n width = MAX_WIDTH;\n }\n } else {\n if (height > MAX_HEIGHT) {\n width *= MAX_HEIGHT / height;\n height = MAX_HEIGHT;\n }\n }\n canvas.width = width;\n canvas.height = height;\n var ctx = canvas.getContext(\"2d\");\n ctx.drawImage(img, 0, 0, width, height);\n\n if (isJPEG) {\n resolve(canvas.toDataURL(\"image/jpeg\", 0.7));\n } else {\n resolve(canvas.toDataURL());\n }\n };\n });\n};\n\nexport const isMobile = () => {\n if (\n /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(\n navigator.userAgent\n ) ||\n /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(\n navigator.userAgent.substr(0, 4)\n )\n ) {\n return true;\n }\n return false;\n};\n\nexport const gleapDataParser = function (data) {\n if (typeof data === \"string\" || data instanceof String) {\n try {\n return JSON.parse(data);\n } catch (e) {\n return {};\n }\n }\n return data;\n};\n\nexport const truncateString = (str, num) => {\n if (str.length > num) {\n return str.slice(0, num) + \"...\";\n } else {\n return str;\n }\n};\n\nconst removeSubDomain = (v) => {\n try {\n var parts = v.split(\".\");\n var is2ndLevelDomain = false;\n const secondLevel = parts[parts.length - 2];\n if (\n secondLevel === \"co\" ||\n secondLevel === \"com\" ||\n secondLevel === \"gv\" ||\n secondLevel === \"ac\" ||\n secondLevel === \"edu\" ||\n secondLevel === \"gov\" ||\n secondLevel === \"mil\" ||\n secondLevel === \"net\" ||\n secondLevel === \"org\"\n ) {\n is2ndLevelDomain = true;\n }\n parts = parts.slice(is2ndLevelDomain ? -3 : -2);\n return parts.join(\".\");\n } catch (exp) {}\n return v;\n};\n\nexport const loadFromGleapCache = (key) => {\n try {\n const cachedData = localStorage.getItem(`gleap-widget-${key}`);\n if (cachedData) {\n const config = JSON.parse(cachedData);\n return config;\n }\n } catch (exp) {}\n return null;\n};\n\nexport const saveToGleapCache = (key, data) => {\n const k = `gleap-widget-${key}`;\n if (data) {\n try {\n localStorage.setItem(k, JSON.stringify(data));\n } catch (exp) {}\n } else {\n localStorage.removeItem(k);\n }\n};\n\nexport const setGleapCookie = (name, value, days) => {\n try {\n var expires = \"\";\n if (days) {\n var date = new Date();\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\n expires = \"; expires=\" + date.toUTCString();\n }\n const host = removeSubDomain(window.location.host.split(\":\")[0]);\n document.cookie =\n name + \"=\" + (value || \"\") + expires + \"; path=/; domain=\" + host;\n } catch (exp) {}\n};\n\nexport const getGleapCookie = (name) => {\n try {\n var nameEQ = name + \"=\";\n var ca = document.cookie.split(\";\");\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n while (c.charAt(0) == \" \") c = c.substring(1, c.length);\n if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);\n }\n } catch (exp) {}\n return null;\n};\n\nexport const eraseGleapCookie = (name) => {\n try {\n const host = removeSubDomain(window.location.host.split(\":\")[0]);\n document.cookie =\n name + \"=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT; Domain=\" + host;\n } catch (exp) {}\n};\n\nexport const getDOMElementDescription = (element, html = true) => {\n var innerText = truncateString(element.innerText || \"\", 40)\n .replace(/(\\r\\n|\\n|\\r)/gm, \"\")\n .replace(/ +(?= )/g, \"\");\n var elementId = \"\";\n var elementClass = \"\";\n if (typeof element.getAttribute !== \"undefined\") {\n const elemId = element.getAttribute(\"id\");\n if (elemId) {\n elementId = ` id=\"${elemId}\"`;\n }\n const elemClass = element.getAttribute(\"class\");\n if (elemClass) {\n elementClass = ` class=\"${elemClass}\"`;\n }\n }\n const elementTag = (element.tagName || \"\").toLowerCase();\n\n var htmlPre = \"<\";\n var htmlPost = \">\";\n if (!html) {\n htmlPre = \"[\";\n htmlPost = \"]\";\n }\n\n return `${htmlPre}${elementTag}${elementId}${elementClass}${htmlPost}${innerText}${htmlPre}/${elementTag}${htmlPost}`;\n};\n\nexport const runFunctionWhenDomIsReady = (callback) => {\n if (\n document.readyState === \"complete\" ||\n document.readyState === \"loaded\" ||\n document.readyState === \"interactive\"\n ) {\n callback();\n } else {\n document.addEventListener(\"DOMContentLoaded\", () => {\n callback();\n });\n }\n};\n\nexport const fixGleapHeight = () => {\n try {\n if (\n \"visualViewport\" in window &&\n /iPad|iPhone|iPod/.test(navigator.userAgent)\n ) {\n let initialHeight = window.innerHeight;\n\n function updateContainerHeight() {\n try {\n const gleapFrameContainer = document.querySelector(\n \".gleap-frame-container-inner iframe\"\n );\n\n if (!gleapFrameContainer) {\n return;\n }\n\n // Check if the keyboard is open\n if (window.visualViewport.height < initialHeight) {\n gleapFrameContainer.style.setProperty(\n \"max-height\",\n window.visualViewport.height + \"px\",\n \"important\"\n );\n } else {\n // Remove the padding bottom\n gleapFrameContainer.style.removeProperty(\"max-height\");\n }\n } catch (error) {}\n }\n\n function handleOrientationChange() {\n try {\n // Update initial dimensions\n initialHeight = window.innerHeight;\n updateContainerHeight();\n } catch (error) {}\n }\n\n // Update on resize (keyboard show/hide and viewport resize)\n window.visualViewport.addEventListener(\"resize\", updateContainerHeight);\n\n // Handle orientation changes\n window.addEventListener(\"orientationchange\", handleOrientationChange);\n\n // Update initially\n updateContainerHeight();\n }\n } catch (error) {}\n};\n","import { GleapSession, GleapTranslationManager } from \"./Gleap\"; // Adjust path if needed\n\n// Enum for request states\nconst RequestStatus = {\n PENDING: \"pending\",\n SUCCESS: \"success\",\n ERROR: \"error\",\n};\n\nclass ChecklistNetworkManager {\n static instance = null;\n\n /** @private {Map>} outboundId -> Promise */\n validationRequests = new Map();\n /** @private {Map} */\n validationCache = new Map(); // Caches final results (success/error)\n\n /** @private {Map>} internalId -> Promise */\n fetchRequests = new Map();\n /** @private {Map} */\n fetchCache = new Map(); // Caches final results (success/error)\n\n // Private constructor for Singleton\n constructor() {\n if (ChecklistNetworkManager.instance) {\n return ChecklistNetworkManager.instance;\n }\n ChecklistNetworkManager.instance = this;\n }\n\n /**\n * Gets the singleton instance of the ChecklistNetworkManager.\n * @returns {ChecklistNetworkManager} The singleton instance.\n */\n static getInstance() {\n if (!ChecklistNetworkManager.instance) {\n ChecklistNetworkManager.instance = new ChecklistNetworkManager();\n }\n return ChecklistNetworkManager.instance;\n }\n\n clearCache() {\n this.validationCache.clear();\n this.fetchCache.clear();\n this.validationRequests.clear();\n this.fetchRequests.clear();\n }\n\n /**\n * @private\n * Gets common query parameters for API requests.\n * @returns {string} Query parameter string.\n */\n _getQueryParams() {\n const gleapSessionInstance = GleapSession.getInstance();\n const session = gleapSessionInstance?.session;\n const lang =\n GleapTranslationManager.getInstance().getActiveLanguage() || \"en\";\n return `gleapId=${session?.gleapId || \"\"}&gleapHash=${\n session?.gleapHash || \"\"\n }&lang=${lang}`;\n }\n\n /**\n * @private\n * Gets the API base URL.\n * @returns {string | null} The API URL or null if not configured.\n */\n _getApiUrl() {\n const gleapSessionInstance = GleapSession.getInstance();\n return gleapSessionInstance?.apiUrl || null;\n }\n\n /**\n * @private\n * Makes an XMLHttpRequest and returns a Promise.\n * @param {string} method - HTTP method.\n * @param {string} url - The request URL.\n * @param {object|null} data - Data to send in the request body.\n * @returns {Promise} Promise resolving with parsed JSON response on success, rejecting on error.\n */\n _makeRequest(method, url, data) {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n xhr.open(method, url);\n\n const gleapSessionInstance = GleapSession.getInstance();\n gleapSessionInstance?.injectSession(xhr); // Inject session headers\n\n if (data) {\n xhr.setRequestHeader(\"Content-Type\", \"application/json;charset=UTF-8\");\n }\n\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n if (xhr.status >= 200 && xhr.status < 300) {\n try {\n // Handle potential empty success responses (e.g., 204)\n const responseData = xhr.responseText\n ? JSON.parse(xhr.responseText)\n : null;\n resolve(responseData);\n } catch (err) {\n reject({\n status: xhr.status,\n statusText: \"JSON Parse Error\",\n responseText: xhr.responseText,\n error: err,\n });\n }\n } else {\n reject({\n status: xhr.status,\n statusText: xhr.statusText,\n responseText: xhr.responseText,\n });\n }\n }\n };\n\n xhr.onerror = () => {\n reject({ status: 0, statusText: \"Network Error\", responseText: null });\n };\n\n xhr.send(data ? JSON.stringify(data) : null);\n });\n }\n\n /**\n * @private\n * Creates a cache key from outboundId and sharedKey\n * @param {string} outboundId - The public/outbound checklist ID.\n * @param {string|undefined} sharedKey - Optional shared key.\n * @returns {string} Combined cache key.\n */\n _createCacheKey(outboundId, sharedKey) {\n return sharedKey ? `${outboundId}::${sharedKey}` : outboundId;\n }\n\n /**\n * Validates an outbound checklist ID, returning a Promise for the internal ID.\n * Manages caching and deduplicates requests.\n * @param {string} outboundId - The public/outbound checklist ID.\n * @param {string} [sharedKey] - Optional shared key for the checklist.\n * @returns {Promise} A promise that resolves with the internal checklist ID.\n */\n validateChecklist(outboundId, sharedKey) {\n const cacheKey = this._createCacheKey(outboundId, sharedKey);\n\n // 1. Check cache for final result (success or error)\n const cachedResult = this.validationCache.get(cacheKey);\n if (cachedResult) {\n if (cachedResult.status === RequestStatus.SUCCESS) {\n return Promise.resolve(cachedResult.internalId);\n } else {\n return Promise.reject(cachedResult.error);\n }\n }\n\n // 2. Check for an ongoing request\n if (this.validationRequests.has(cacheKey)) {\n return this.validationRequests.get(cacheKey);\n }\n\n // 3. Start a new request\n const apiUrl = this._getApiUrl();\n if (!apiUrl) {\n const error = new Error(\n \"ChecklistNetworkManager: Gleap API URL not configured.\"\n );\n this.validationCache.set(cacheKey, {\n status: RequestStatus.ERROR,\n error,\n });\n return Promise.reject(error);\n }\n\n const url = `${apiUrl}/outbound/checklists?${this._getQueryParams()}`;\n const requestPromise = this._makeRequest(\"POST\", url, {\n outboundId,\n sharedKey,\n })\n .then((responseData) => {\n if (responseData && responseData.id) {\n this.validationCache.set(cacheKey, {\n status: RequestStatus.SUCCESS,\n internalId: responseData.id,\n });\n return responseData.id;\n } else {\n const error = new Error(\"Validation response missing checklist ID.\");\n this.validationCache.set(cacheKey, {\n status: RequestStatus.ERROR,\n error: responseData || error,\n });\n throw error; // Rethrow to be caught by catch block\n }\n })\n .catch((error) => {\n // Store the error object itself in the cache\n this.validationCache.set(cacheKey, {\n status: RequestStatus.ERROR,\n error,\n });\n throw error; // Re-throw so callers can catch it\n })\n .finally(() => {\n // Remove from pending requests map once done (success or fail)\n this.validationRequests.delete(cacheKey);\n });\n\n // Store the promise for potential concurrent requests\n this.validationRequests.set(cacheKey, requestPromise);\n return requestPromise;\n }\n\n /**\n * Fetches the full checklist data using the internal ID, returning a Promise.\n * Manages caching and deduplicates requests.\n * @param {string} internalId - The internal checklist ID.\n * @returns {Promise} A promise that resolves with the full checklist data.\n */\n fetchChecklist(internalId) {\n // 1. Check cache for final result (success or error)\n const cachedResult = this.fetchCache.get(internalId);\n if (cachedResult) {\n if (cachedResult.status === RequestStatus.SUCCESS) {\n // Return a deep copy to prevent mutation issues if multiple components use it\n return Promise.resolve(JSON.parse(JSON.stringify(cachedResult.data)));\n } else {\n return Promise.reject(cachedResult.error);\n }\n }\n\n // 2. Check for an ongoing request\n if (this.fetchRequests.has(internalId)) {\n // Return a promise that resolves with a deep copy\n return this.fetchRequests\n .get(internalId)\n .then((data) => JSON.parse(JSON.stringify(data)));\n }\n\n // 3. Start a new request\n const apiUrl = this._getApiUrl();\n if (!apiUrl) {\n const error = new Error(\n \"ChecklistNetworkManager: Gleap API URL not configured.\"\n );\n this.fetchCache.set(internalId, { status: RequestStatus.ERROR, error });\n return Promise.reject(error);\n }\n\n const url = `${apiUrl}/outbound/checklists/${internalId}?convertTipTap=true&${this._getQueryParams()}`;\n const requestPromise = this._makeRequest(\"GET\", url, null)\n .then((responseData) => {\n if (responseData) {\n // Cache the successful data\n this.fetchCache.set(internalId, {\n status: RequestStatus.SUCCESS,\n data: responseData,\n });\n // Return a deep copy of the data\n return JSON.parse(JSON.stringify(responseData));\n } else {\n // Should not happen with successful GET usually, but handle defensively\n const error = new Error(\n \"Empty response received for checklist fetch.\"\n );\n this.fetchCache.set(internalId, {\n status: RequestStatus.ERROR,\n error: responseData || error,\n });\n throw error;\n }\n })\n .catch((error) => {\n this.fetchCache.set(internalId, { status: RequestStatus.ERROR, error });\n throw error; // Re-throw so callers can catch it\n })\n .finally(() => {\n // Remove from pending requests map once done (success or fail)\n this.fetchRequests.delete(internalId);\n });\n\n this.fetchRequests.set(internalId, requestPromise);\n // Return a promise that resolves with a deep copy\n return requestPromise.then((data) => JSON.parse(JSON.stringify(data)));\n }\n}\n\nexport default ChecklistNetworkManager;\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n const lr = ['left', 'right'];\n const rl = ['right', 'left'];\n const tb = ['top', 'bottom'];\n const bt = ['bottom', 'top'];\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rl : lr;\n return isStart ? lr : rl;\n case 'left':\n case 'right':\n return isStart ? tb : bt;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n return {\n ...rect,\n top: rect.y,\n left: rect.x,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n ...rects.floating,\n x,\n y\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n if (!specifiedFallbackPlacements && fallbackAxisSideDirection !== 'none') {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$map$so;\n const placement = (_overflowsData$map$so = overflowsData.map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$map$so[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: 0,\n crossAxis: 0,\n alignmentAxis: null,\n ...rawValue\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = ['top', 'left'].includes(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const overflowAvailableHeight = height - overflow[heightSide];\n const overflowAvailableWidth = width - overflow[widthSide];\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if (isYAxis) {\n const maximumClippingWidth = width - overflow.left - overflow.right;\n availableWidth = alignment || noShift ? min(overflowAvailableWidth, maximumClippingWidth) : maximumClippingWidth;\n } else {\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n availableHeight = alignment || noShift ? min(overflowAvailableHeight, maximumClippingHeight) : maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n // Browsers without `ShadowRoot` support.\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isContainingBlock(element) {\n const webkit = isWebKit();\n const css = getComputedStyle(element);\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n return css.transform !== 'none' || css.perspective !== 'none' || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else {\n currentNode = getParentNode(currentNode);\n }\n }\n return null;\n}\nfunction isWebKit() {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nfunction isLastTraversableNode(node) {\n return ['html', 'body', '#document'].includes(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.pageXOffset,\n scrollTop: element.pageYOffset\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], win.frameElement && traverseIframes ? getOverflowAncestors(win.frameElement) : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isWebKit };\n","import { rectToClientRect, autoPlacement as autoPlacement$1, shift as shift$1, flip as flip$1, size as size$1, hide as hide$1, arrow as arrow$1, inline as inline$1, limitShift as limitShift$1, computePosition as computePosition$1 } from '@floating-ui/core';\nexport { detectOverflow, offset } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement, isElement, getWindow, isWebKit, getDocumentElement, getNodeName, isOverflowElement, getNodeScroll, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = currentWin.frameElement;\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = currentWin.frameElement;\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\nconst topLayerSelectors = [':popover-open', ':modal'];\nfunction isTopLayer(floating) {\n return topLayerSelectors.some(selector => {\n try {\n return floating.matches(selector);\n } catch (e) {\n return false;\n }\n });\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\nfunction getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n ...clippingAncestor,\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n const x = rect.left + scroll.scrollLeft - offsets.x;\n const y = rect.top + scroll.scrollTop - offsets.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n return element.offsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const window = getWindow(element);\n if (!isHTMLElement(element) || isTopLayer(element)) {\n return window;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && !isContainingBlock(offsetParent))) {\n return window;\n }\n return offsetParent || getContainingBlock(element) || window;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n ...(await getDimensionsFn(data.floating))\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const {\n left,\n top,\n width,\n height\n } = element.getBoundingClientRect();\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 100);\n } else {\n refresh(false, ratio);\n }\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle `;\n document.body.appendChild(elem);\n\n this.gleapFrameContainer = elem;\n this.gleapFrame = document.querySelector(\".gleap-frame\");\n\n this.updateFrameStyle();\n\n // Show loading preview for widget app mode.\n if (this.appMode === \"widget\") {\n this.showFrameContainer(true);\n }\n });\n });\n };\n\n showImage = (url) => {\n runFunctionWhenDomIsReady(() => {\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-image-view\";\n elem.innerHTML = `
\n \n
`;\n document.body.appendChild(elem);\n\n const closeElement = () => {\n elem.remove();\n };\n\n const close = elem.querySelector(\".gleap-image-view-close\");\n close.addEventListener(\"click\", () => {\n closeElement();\n });\n\n elem.addEventListener(\"click\", (e) => {\n if (e.target === elem) {\n closeElement();\n }\n });\n });\n };\n\n updateFrameStyle = () => {\n if (!this.gleapFrameContainer) {\n return;\n }\n\n const surveyStyle = \"gleap-frame-container--survey\";\n const extendedStyle = \"gleap-frame-container--extended\";\n const surveyFullStyle = \"gleap-frame-container--survey-full\";\n const classicStyle = \"gleap-frame-container--classic\";\n const classicStyleLeft = \"gleap-frame-container--classic-left\";\n const modernStyleLeft = \"gleap-frame-container--modern-left\";\n const noButtonStyleLeft = \"gleap-frame-container--no-button\";\n const allStyles = [\n classicStyle,\n classicStyleLeft,\n extendedStyle,\n modernStyleLeft,\n noButtonStyleLeft,\n surveyStyle,\n surveyFullStyle,\n ];\n for (let i = 0; i < allStyles.length; i++) {\n this.gleapFrameContainer.classList.remove(allStyles[i]);\n }\n\n var styleToApply = undefined;\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM\n ) {\n styleToApply = classicStyle;\n }\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT\n ) {\n styleToApply = classicStyleLeft;\n }\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_BOTTOM_LEFT\n ) {\n styleToApply = modernStyleLeft;\n }\n if (GleapFeedbackButtonManager.getInstance().buttonHidden === null) {\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_NONE\n ) {\n styleToApply = noButtonStyleLeft;\n }\n } else {\n if (GleapFeedbackButtonManager.getInstance().buttonHidden) {\n styleToApply = noButtonStyleLeft;\n }\n }\n if (styleToApply) {\n this.gleapFrameContainer.classList.add(styleToApply);\n }\n\n if (this.appMode === \"survey\") {\n this.gleapFrameContainer.classList.add(surveyStyle);\n }\n if (this.appMode === \"survey_full\" || this.appMode === \"survey_web\") {\n this.gleapFrameContainer.classList.add(surveyFullStyle);\n }\n if (this.appMode === \"extended\") {\n this.gleapFrameContainer.classList.add(extendedStyle);\n }\n\n this.gleapFrameContainer.setAttribute(\n \"dir\",\n GleapTranslationManager.getInstance().isRTLLayout ? \"rtl\" : \"ltr\"\n );\n };\n\n showFrameContainer(showLoader) {\n if (!this.gleapFrameContainer) {\n return;\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const loadingClass = \"gleap-frame-container--loading\";\n if (this.gleapFrameContainer.classList) {\n this.gleapFrameContainer.classList.remove(\n \"gleap-frame-container--hidden\"\n );\n if (showLoader) {\n this.gleapFrameContainer.classList.add(loadingClass);\n\n if (flowConfig.disableBGFade) {\n this.gleapFrameContainer.classList.add(\n \"gleap-frame-container--loading-nofade\"\n );\n }\n if (flowConfig.disableBGGradient) {\n this.gleapFrameContainer.classList.add(\n \"gleap-frame-container--loading-nogradient\"\n );\n }\n } else {\n this.gleapFrameContainer.classList.remove(loadingClass);\n }\n\n setTimeout(() => {\n this.gleapFrameContainer.classList.add(\n \"gleap-frame-container--animate\"\n );\n }, 500);\n }\n\n this.widgetOpened = true;\n this.updateUI();\n }\n\n runWidgetShouldOpenCallback() {\n if (!this.gleapFrameContainer) {\n return;\n }\n\n this.workThroughQueue();\n\n Gleap.getInstance().setGlobalDataItem(\"snapshotPosition\", {\n x: window.scrollX,\n y: window.scrollY,\n });\n\n this.showFrameContainer(false);\n this.updateWidgetStatus();\n\n GleapEventManager.notifyEvent(\"open\");\n this.registerEscListener();\n }\n\n updateUI() {\n // Clear notifications only when not opening a survey.\n GleapNotificationManager.getInstance().clearAllNotifications(\n this.isSurvey()\n );\n\n GleapFeedbackButtonManager.getInstance().updateNotificationBadge(0);\n GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n }\n\n showWidget() {\n setTimeout(() => {\n if (this.gleapFrameContainer) {\n this.runWidgetShouldOpenCallback();\n } else {\n GleapFrameManager.getInstance().injectFrame();\n }\n this.updateUI();\n }, 0);\n }\n\n updateWidgetStatus() {\n this.sendMessage({\n name: \"widget-status-update\",\n data: {\n isWidgetOpen: this.widgetOpened,\n },\n });\n }\n\n hideMarkerManager() {\n if (this.markerManager) {\n this.markerManager.clear();\n this.markerManager = null;\n }\n }\n\n hideWidget(resetRoutes = false) {\n // Prevent for survey web.\n if (this.appMode === \"survey_web\") {\n return;\n }\n\n this.hideMarkerManager();\n if (this.gleapFrameContainer) {\n this.gleapFrameContainer.classList.add(\"gleap-frame-container--hidden\");\n this.gleapFrameContainer.classList.remove(\n \"gleap-frame-container--animate\"\n );\n }\n if (resetRoutes) {\n this.sendMessage({\n name: \"reset-routes\",\n data: {},\n });\n }\n this.widgetOpened = false;\n this.updateWidgetStatus();\n GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n GleapEventManager.notifyEvent(\"close\");\n GleapNotificationManager.getInstance().reloadNotificationsFromCache();\n\n this.unregisterEscListener();\n\n if (typeof window !== \"undefined\" && typeof window.focus !== \"undefined\") {\n window.focus();\n }\n }\n\n sendMessage(data, queue = false) {\n try {\n this.gleapFrame = document.querySelector(\".gleap-frame\");\n if (this.comReady && this.gleapFrame && this.gleapFrame.contentWindow) {\n this.gleapFrame.contentWindow.postMessage(JSON.stringify(data), \"*\");\n } else {\n if (queue) {\n this.queue.push(data);\n }\n }\n } catch (e) {}\n }\n\n sendSessionUpdate() {\n this.sendMessage({\n name: \"session-update\",\n data: {\n sessionData: GleapSession.getInstance().getSession(),\n apiUrl: GleapSession.getInstance().apiUrl,\n sdkKey: GleapSession.getInstance().sdkKey,\n },\n });\n }\n\n sendConfigUpdate() {\n if (!this.comReady) {\n return;\n }\n\n this.sendMessage({\n name: \"config-update\",\n data: {\n config: GleapConfigManager.getInstance().getFlowConfig(),\n aiTools: GleapConfigManager.getInstance().getAiTools(),\n overrideLanguage:\n GleapTranslationManager.getInstance().getOverrideLanguage(),\n },\n });\n\n this.updateFrameStyle();\n }\n\n showDrawingScreen(type) {\n this.hideWidget();\n\n // Show screen drawing.\n this.markerManager = new GleapMarkerManager(type);\n this.markerManager.show((success) => {\n if (!success) {\n this.hideMarkerManager();\n }\n this.showWidget();\n });\n }\n\n workThroughQueue() {\n const workQueue = [...this.queue];\n this.queue = [];\n for (let i = 0; i < workQueue.length; i++) {\n this.sendMessage(workQueue[i], true);\n }\n }\n\n startCommunication() {\n // Listen for messages.\n this.addMessageListener((data) => {\n if (data.name === \"ping\") {\n this.comReady = true;\n this.sendConfigUpdate();\n this.sendSessionUpdate();\n this.workThroughQueue();\n setTimeout(() => {\n this.runWidgetShouldOpenCallback();\n }, 300);\n }\n\n if (data.name === \"play-ping\") {\n GleapAudioManager.ping();\n }\n\n if (data.name === \"open-image\") {\n this.showImage(data.data.url);\n }\n\n if (data.name === \"page-changed\") {\n if (\n data.data &&\n (data.data.name === \"newsdetails\" || data.data.name === \"appextended\")\n ) {\n this.setAppMode(\"extended\");\n } else {\n if (this.appMode === \"extended\") {\n this.setAppMode(\"widget\");\n }\n }\n }\n\n if (data.name === \"collect-ticket-data\") {\n var ticketData = {\n customData: GleapCustomDataManager.getInstance().getCustomData(),\n metaData: GleapMetaDataManager.getInstance().getMetaData(),\n consoleLog: GleapConsoleLogManager.getInstance().getLogs(),\n networkLogs: GleapNetworkIntercepter.getInstance().getRequests(),\n customEventLog: GleapStreamedEvent.getInstance().getEventArray(),\n formData: GleapCustomDataManager.getInstance().getTicketAttributes(),\n };\n\n // Add tags\n const tags = GleapTagManager.getInstance().getTags();\n if (tags && tags.length > 0) {\n ticketData.tags = tags;\n }\n\n this.sendMessage({\n name: \"collect-ticket-data\",\n data: ticketData,\n });\n }\n\n if (data.name === \"height-update\") {\n this.frameHeight = data.data;\n\n const innerContainer = document.querySelector(\n \".gleap-frame-container-inner\"\n );\n if (\n (this.appMode === \"survey\" ||\n this.appMode === \"survey_full\" ||\n this.appMode === \"survey_web\") &&\n innerContainer\n ) {\n innerContainer.style.maxHeight = `${this.frameHeight}px`;\n }\n }\n\n if (data.name === \"notify-event\") {\n GleapEventManager.notifyEvent(data.data.type, data.data.data);\n }\n\n if (data.name === \"cleanup-drawings\") {\n this.hideMarkerManager();\n }\n\n if (data.name === \"open-url\") {\n const url = data.data;\n const newTab = data.newTab ? true : false;\n this.urlHandler(url, newTab);\n }\n\n if (data.name === \"start-product-tour\") {\n Gleap.startProductTour(data.data?.tourId, true);\n }\n\n if (data.name === \"run-custom-action\") {\n GleapCustomActionManager.triggerCustomAction(data.data, {\n shareToken: data.shareToken,\n });\n }\n\n if (data.name === \"close-widget\") {\n this.hideWidget();\n }\n\n if (data.name === \"tool-execution\") {\n GleapEventManager.notifyEvent(\"tool-execution\", data.data);\n }\n\n if (data.name === \"send-feedback\") {\n const formData = data.data.formData;\n const action = data.data.action;\n const outboundId = data.data.outboundId;\n const spamToken = data.data.spamToken;\n\n const feedback = new GleapFeedback(\n action.feedbackType,\n \"MEDIUM\",\n formData,\n false,\n action.excludeData,\n outboundId,\n spamToken\n );\n feedback\n .sendFeedback()\n .then((feedbackData) => {\n this.sendMessage({\n name: \"feedback-sent\",\n data: feedbackData,\n });\n GleapEventManager.notifyEvent(\"feedback-sent\", formData);\n\n if (outboundId && outboundId.length > 0) {\n GleapEventManager.notifyEvent(\"outbound-sent\", {\n outboundId: outboundId,\n outbound: action,\n formData: formData,\n });\n\n try {\n delete formData.reportedBy;\n } catch (e) {}\n Gleap.trackEvent(`outbound-${outboundId}-submitted`, formData);\n }\n })\n .catch((error) => {\n this.sendMessage({\n name: \"feedback-sending-failed\",\n data: \"Something went wrong, please try again.\",\n });\n GleapEventManager.notifyEvent(\"error-while-sending\");\n });\n }\n\n if (data.name === \"start-screen-drawing\") {\n this.showDrawingScreen(data.data);\n }\n });\n\n // Add window message listener.\n window.addEventListener(\"message\", (event) => {\n if (\n event.origin !== this.frameUrl &&\n event.origin !== GleapBannerManager.getInstance().bannerUrl\n ) {\n return;\n }\n\n try {\n const data = JSON.parse(event.data);\n for (var i = 0; i < this.listeners.length; i++) {\n if (this.listeners[i]) {\n this.listeners[i](data);\n }\n }\n } catch (exp) {}\n });\n }\n\n addMessageListener(callback) {\n this.listeners.push(callback);\n }\n}\n","import { isMobile } from \"./GleapHelper\";\n\nexport default class GleapMetaDataManager {\n sessionStart = new Date();\n appBuildNumber = \"\";\n appVersionCode = \"\";\n environment = \"prod\";\n\n // GleapMetaDataManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapMetaDataManager();\n }\n return this.instance;\n }\n\n /**\n * Sets the app version code.\n * @param {string} appVersionCode\n */\n static setAppVersionCode(appVersionCode) {\n this.getInstance().appVersionCode = appVersionCode;\n }\n\n /**\n * Sets the app version code.\n * @param {string} appVersionCode\n */\n static setAppBuildNumber(appBuildNumber) {\n this.getInstance().appBuildNumber = appBuildNumber;\n }\n\n getSessionDuration() {\n const now = new Date();\n return Math.round((now.getTime() - this.sessionStart.getTime()) / 1000);\n }\n\n getMetaData() {\n var nAgt = navigator.userAgent;\n var browserName = navigator.appName;\n var fullVersion = \"\" + parseFloat(navigator.appVersion);\n var majorVersion = parseInt(navigator.appVersion, 10);\n var nameOffset, verOffset, ix;\n\n // In Opera, the true version is after \"Opera\" or after \"Version\"\n if ((verOffset = nAgt.indexOf(\"Opera\")) !== -1) {\n browserName = \"Opera\";\n fullVersion = nAgt.substring(verOffset + 6);\n if ((verOffset = nAgt.indexOf(\"Version\")) !== -1)\n fullVersion = nAgt.substring(verOffset + 8);\n }\n // In MSIE, the true version is after \"MSIE\" in userAgent\n else if ((verOffset = nAgt.indexOf(\"MSIE\")) !== -1) {\n browserName = \"Microsoft Internet Explorer\";\n fullVersion = nAgt.substring(verOffset + 5);\n }\n // In Chrome, the true version is after \"Chrome\"\n else if ((verOffset = nAgt.indexOf(\"Chrome\")) !== -1) {\n browserName = \"Chrome\";\n fullVersion = nAgt.substring(verOffset + 7);\n }\n // In Safari, the true version is after \"Safari\" or after \"Version\"\n else if ((verOffset = nAgt.indexOf(\"Safari\")) !== -1) {\n browserName = \"Safari\";\n fullVersion = nAgt.substring(verOffset + 7);\n if ((verOffset = nAgt.indexOf(\"Version\")) !== -1)\n fullVersion = nAgt.substring(verOffset + 8);\n }\n // In Firefox, the true version is after \"Firefox\"\n else if ((verOffset = nAgt.indexOf(\"Firefox\")) !== -1) {\n browserName = \"Firefox\";\n fullVersion = nAgt.substring(verOffset + 8);\n }\n // In most other browsers, \"name/version\" is at the end of userAgent\n else if (\n (nameOffset = nAgt.lastIndexOf(\" \") + 1) <\n (verOffset = nAgt.lastIndexOf(\"/\"))\n ) {\n browserName = nAgt.substring(nameOffset, verOffset);\n fullVersion = nAgt.substring(verOffset + 1);\n if (browserName.toLowerCase() === browserName.toUpperCase()) {\n browserName = navigator.appName;\n }\n }\n // trim the fullVersion string at semicolon/space if present\n if ((ix = fullVersion.indexOf(\";\")) !== -1)\n fullVersion = fullVersion.substring(0, ix);\n if ((ix = fullVersion.indexOf(\" \")) !== -1)\n fullVersion = fullVersion.substring(0, ix);\n\n majorVersion = parseInt(\"\" + fullVersion, 10);\n if (isNaN(majorVersion)) {\n fullVersion = \"\" + parseFloat(navigator.appVersion);\n majorVersion = parseInt(navigator.appVersion, 10);\n }\n\n var OSName = \"Unknown OS\";\n if (navigator.appVersion.indexOf(\"Win\") !== -1) OSName = \"Windows\";\n if (navigator.appVersion.indexOf(\"Mac\") !== -1) OSName = \"MacOS\";\n if (navigator.appVersion.indexOf(\"X11\") !== -1) OSName = \"UNIX\";\n if (navigator.appVersion.indexOf(\"Linux\") !== -1) OSName = \"Linux\";\n if (navigator.appVersion.indexOf(\"iPad\") !== -1) OSName = \"iPad\";\n if (navigator.appVersion.indexOf(\"iPhone\") !== -1) OSName = \"iPhone\";\n if (navigator.appVersion.indexOf(\"Android\") !== -1) OSName = \"Android\";\n\n return {\n browserName: browserName + \"(\" + fullVersion + \")\",\n userAgent: nAgt,\n browser: browserName,\n systemName: OSName,\n buildVersionNumber: this.appBuildNumber,\n releaseVersionNumber: this.appVersionCode,\n sessionDuration: this.getSessionDuration(),\n devicePixelRatio: window.devicePixelRatio,\n screenWidth: window.screen.width,\n screenHeight: window.screen.height,\n innerWidth: window.innerWidth,\n innerHeight: window.innerHeight,\n currentUrl: window.location.href,\n language: navigator.language || navigator.userLanguage,\n mobile: isMobile(),\n sdkVersion: SDK_VERSION,\n sdkType: \"javascript\",\n environment: this.environment,\n };\n }\n}\n","import { truncateString } from \"./GleapHelper\";\n\nexport default class GleapConsoleLogManager {\n logArray = [];\n disabled = false;\n originalConsoleLog;\n logMaxLength = 500;\n\n // GleapConsoleLogManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapConsoleLogManager();\n }\n return this.instance;\n }\n\n /**\n * Return the console logs\n * @returns {any[]} logs\n */\n getLogs() {\n return this.logArray;\n }\n\n /**\n * Revert console log overwrite.\n */\n stop() {\n this.disabled = true;\n if (this.originalConsoleLog) {\n window.console = this.originalConsoleLog;\n }\n }\n\n /**\n * Add message with log level to logs.\n * @param {*} message\n * @param {*} logLevel\n * @returns\n */\n addLog(message, logLevel = \"INFO\") {\n if (!message || message.length <= 0) {\n return;\n }\n\n this.logArray.push({\n log: truncateString(message, 1000),\n date: new Date(),\n priority: logLevel,\n });\n\n if (this.logArray.length > this.logMaxLength) {\n this.logArray.shift();\n }\n }\n\n /**\n * Add entry to logs.\n * @param {*} args\n * @param {*} logLevel\n * @returns\n */\n addLogWithArgs(args, logLevel) {\n if (!args || args.length <= 0) {\n return;\n }\n\n var log = \"\";\n try {\n for (var i = 0; i < args.length; i++) {\n log += args[i] + \" \";\n }\n } catch (exp) {}\n\n this.addLog(log, logLevel);\n }\n\n /**\n * Start console log overwrite.\n */\n start() {\n if (this.disabled) {\n return;\n }\n\n const self = this;\n window.console = (function (origConsole) {\n if (!window.console || !origConsole) {\n origConsole = {};\n }\n\n self.originalConsoleLog = origConsole;\n\n return {\n ...origConsole,\n log: function () {\n self.addLogWithArgs(arguments, \"INFO\");\n origConsole.log && origConsole.log.apply(origConsole, arguments);\n },\n warn: function () {\n self.addLogWithArgs(arguments, \"WARNING\");\n origConsole.warn && origConsole.warn.apply(origConsole, arguments);\n },\n error: function () {\n self.addLogWithArgs(arguments, \"ERROR\");\n origConsole.error && origConsole.error.apply(origConsole, arguments);\n },\n info: function (v) {\n self.addLogWithArgs(arguments, \"INFO\");\n origConsole.info && origConsole.info.apply(origConsole, arguments);\n },\n };\n })(window.console);\n }\n}\n","import { GleapConsoleLogManager, GleapFrameManager, handleGleapLink } from \"./Gleap\";\nimport { getDOMElementDescription } from \"./GleapHelper\";\n\nexport default class GleapClickListener {\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapClickListener();\n }\n return this.instance;\n }\n\n start() {\n document.addEventListener(\"click\", (e) => {\n if (!e.target) {\n return;\n }\n\n if (e.target.tagName === 'A' && e.target.protocol === 'gleap:') {\n e.preventDefault();\n\n const href = e.target.href;\n handleGleapLink(href);\n }\n\n if (!GleapFrameManager.getInstance().isOpened()) {\n GleapConsoleLogManager.getInstance().addLog(\n getDOMElementDescription(e.target),\n \"CLICK\"\n );\n }\n });\n }\n}\n","import { gleapDataParser } from \"./GleapHelper\";\n\nexport default class GleapCustomDataManager {\n customData = {};\n ticketAttributes = {};\n\n // GleapCustomDataManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapCustomDataManager();\n }\n return this.instance;\n }\n\n /**\n * Returns the custom data object\n * @returns {*}\n */\n getCustomData() {\n return this.customData;\n }\n\n /**\n * Set custom data that will be attached to the bug-report.\n * @param {*} data\n */\n attachCustomData(data) {\n this.customData = Object.assign(\n this.customData,\n gleapDataParser(data)\n );\n }\n\n /**\n * Add one key value pair to the custom data object\n * @param {*} key The key of the custom data entry you want to add.\n * @param {*} value The custom data you want to add.\n */\n setCustomData(key, value) {\n this.customData[key] = value;\n }\n\n /**\n * Remove one key value pair of the custom data object\n * @param {*} key The key of the custom data entry you want to remove.\n */\n removeCustomData(key) {\n delete this.customData[key];\n }\n\n /**\n * Clear the custom data\n */\n clearCustomData() {\n this.customData = {};\n }\n\n /**\n * This method is used to set ticket attributes programmatically.\n * @param {*} key The key of the attribute you want to add.\n * @param {*} value The value to set.\n */\n setTicketAttribute(key, value) {\n this.ticketAttributes[key] = value;\n }\n\n /**\n * This method is used to unset ticket attributes programmatically.\n * @param {*} key The key of the attribute you want to unset.\n */\n unsetTicketAttribute(key) {\n delete this.ticketAttributes[key];\n }\n\n /**\n * This method is used to clear ticket attributes programmatically.\n */\n clearTicketAttributes() {\n this.ticketAttributes = {};\n }\n\n getTicketAttributes() {\n return this.ticketAttributes;\n }\n}\n","import Gleap from \"./Gleap\";\n\nexport default class GleapEventManager {\n eventListeners = {};\n\n // GleapEventManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapEventManager();\n }\n return this.instance;\n }\n\n /**\n * Notify all registrants for event.\n */\n static notifyEvent(event, data = {}) {\n if (event === \"flow-started\") {\n\n const gleapInstance = Gleap.getInstance();\n gleapInstance.setGlobalDataItem(\"webReplay\", null);\n gleapInstance.setGlobalDataItem(\"screenRecordingData\", null);\n gleapInstance.takeCurrentReplay();\n }\n\n const eventListeners = this.getInstance().eventListeners[event];\n if (eventListeners) {\n for (var i = 0; i < eventListeners.length; i++) {\n const eventListener = eventListeners[i];\n if (eventListener) {\n eventListener(data);\n }\n }\n }\n }\n\n /**\n * Register events for Gleap.\n * @param {*} eventName\n * @param {*} callback\n */\n static on(eventName, callback) {\n const instance = this.getInstance();\n if (!instance.eventListeners[eventName]) {\n instance.eventListeners[eventName] = [];\n }\n instance.eventListeners[eventName].push(callback);\n }\n}\n","export default class GleapCustomActionManager {\n customActionCallbacks = [];\n\n // GleapCustomActionManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapCustomActionManager();\n }\n return this.instance;\n }\n\n /**\n * Register custom action\n */\n static registerCustomAction(customAction) {\n const instance = this.getInstance();\n if (instance.customActionCallbacks) {\n instance.customActionCallbacks.push(customAction);\n }\n }\n\n /**\n * Triggers a custom action\n */\n static triggerCustomAction(name, data) {\n const instance = this.getInstance();\n if (instance.customActionCallbacks) {\n for (var i = 0; i < instance.customActionCallbacks.length; i++) {\n var callback = instance.customActionCallbacks[i];\n if (callback) {\n callback({\n name,\n ...(data ? data : {}),\n });\n }\n }\n }\n }\n}\n","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar _a;\nvar __defProp$1 = Object.defineProperty;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$1 = (obj, key, value) => __defNormalProp$1(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar NodeType$3 = /* @__PURE__ */ ((NodeType2) => {\n NodeType2[NodeType2[\"Document\"] = 0] = \"Document\";\n NodeType2[NodeType2[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType2[NodeType2[\"Element\"] = 2] = \"Element\";\n NodeType2[NodeType2[\"Text\"] = 3] = \"Text\";\n NodeType2[NodeType2[\"CDATA\"] = 4] = \"CDATA\";\n NodeType2[NodeType2[\"Comment\"] = 5] = \"Comment\";\n return NodeType2;\n})(NodeType$3 || {});\nconst testableAccessors$1 = {\n Node: [\"childNodes\", \"parentNode\", \"parentElement\", \"textContent\"],\n ShadowRoot: [\"host\", \"styleSheets\"],\n Element: [\"shadowRoot\", \"querySelector\", \"querySelectorAll\"],\n MutationObserver: []\n};\nconst testableMethods$1 = {\n Node: [\"contains\", \"getRootNode\"],\n ShadowRoot: [\"getSelection\"],\n Element: [],\n MutationObserver: [\"constructor\"]\n};\nconst untaintedBasePrototype$1 = {};\nconst isAngularZonePresent$1 = () => {\n return !!globalThis.Zone;\n};\nfunction getUntaintedPrototype$1(key) {\n if (untaintedBasePrototype$1[key])\n return untaintedBasePrototype$1[key];\n const defaultObj = globalThis[key];\n const defaultPrototype = defaultObj.prototype;\n const accessorNames = key in testableAccessors$1 ? testableAccessors$1[key] : void 0;\n const isUntaintedAccessors = Boolean(\n accessorNames && // @ts-expect-error 2345\n accessorNames.every(\n (accessor) => {\n var _a2, _b;\n return Boolean(\n (_b = (_a2 = Object.getOwnPropertyDescriptor(defaultPrototype, accessor)) == null ? void 0 : _a2.get) == null ? void 0 : _b.toString().includes(\"[native code]\")\n );\n }\n )\n );\n const methodNames = key in testableMethods$1 ? testableMethods$1[key] : void 0;\n const isUntaintedMethods = Boolean(\n methodNames && methodNames.every(\n // @ts-expect-error 2345\n (method) => {\n var _a2;\n return typeof defaultPrototype[method] === \"function\" && ((_a2 = defaultPrototype[method]) == null ? void 0 : _a2.toString().includes(\"[native code]\"));\n }\n )\n );\n if (isUntaintedAccessors && isUntaintedMethods && !isAngularZonePresent$1()) {\n untaintedBasePrototype$1[key] = defaultObj.prototype;\n return defaultObj.prototype;\n }\n try {\n const iframeEl = document.createElement(\"iframe\");\n document.body.appendChild(iframeEl);\n const win = iframeEl.contentWindow;\n if (!win) return defaultObj.prototype;\n const untaintedObject = win[key].prototype;\n document.body.removeChild(iframeEl);\n if (!untaintedObject) return defaultPrototype;\n return untaintedBasePrototype$1[key] = untaintedObject;\n } catch {\n return defaultPrototype;\n }\n}\nconst untaintedAccessorCache$1 = {};\nfunction getUntaintedAccessor$1(key, instance, accessor) {\n var _a2;\n const cacheKey = `${key}.${String(accessor)}`;\n if (untaintedAccessorCache$1[cacheKey])\n return untaintedAccessorCache$1[cacheKey].call(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype$1(key);\n const untaintedAccessor = (_a2 = Object.getOwnPropertyDescriptor(\n untaintedPrototype,\n accessor\n )) == null ? void 0 : _a2.get;\n if (!untaintedAccessor) return instance[accessor];\n untaintedAccessorCache$1[cacheKey] = untaintedAccessor;\n return untaintedAccessor.call(instance);\n}\nconst untaintedMethodCache$1 = {};\nfunction getUntaintedMethod$1(key, instance, method) {\n const cacheKey = `${key}.${String(method)}`;\n if (untaintedMethodCache$1[cacheKey])\n return untaintedMethodCache$1[cacheKey].bind(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype$1(key);\n const untaintedMethod = untaintedPrototype[method];\n if (typeof untaintedMethod !== \"function\") return instance[method];\n untaintedMethodCache$1[cacheKey] = untaintedMethod;\n return untaintedMethod.bind(instance);\n}\nfunction childNodes$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"childNodes\");\n}\nfunction parentNode$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"parentNode\");\n}\nfunction parentElement$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"parentElement\");\n}\nfunction textContent$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"textContent\");\n}\nfunction contains$1(n2, other) {\n return getUntaintedMethod$1(\"Node\", n2, \"contains\")(other);\n}\nfunction getRootNode$1(n2) {\n return getUntaintedMethod$1(\"Node\", n2, \"getRootNode\")();\n}\nfunction host$1(n2) {\n if (!n2 || !(\"host\" in n2)) return null;\n return getUntaintedAccessor$1(\"ShadowRoot\", n2, \"host\");\n}\nfunction styleSheets$1(n2) {\n return n2.styleSheets;\n}\nfunction shadowRoot$1(n2) {\n if (!n2 || !(\"shadowRoot\" in n2)) return null;\n return getUntaintedAccessor$1(\"Element\", n2, \"shadowRoot\");\n}\nfunction querySelector$1(n2, selectors) {\n return getUntaintedAccessor$1(\"Element\", n2, \"querySelector\")(selectors);\n}\nfunction querySelectorAll$1(n2, selectors) {\n return getUntaintedAccessor$1(\"Element\", n2, \"querySelectorAll\")(selectors);\n}\nfunction mutationObserverCtor$1() {\n return getUntaintedPrototype$1(\"MutationObserver\").constructor;\n}\nconst index$1 = {\n childNodes: childNodes$1,\n parentNode: parentNode$1,\n parentElement: parentElement$1,\n textContent: textContent$1,\n contains: contains$1,\n getRootNode: getRootNode$1,\n host: host$1,\n styleSheets: styleSheets$1,\n shadowRoot: shadowRoot$1,\n querySelector: querySelector$1,\n querySelectorAll: querySelectorAll$1,\n mutationObserver: mutationObserverCtor$1\n};\nfunction isElement(n2) {\n return n2.nodeType === n2.ELEMENT_NODE;\n}\nfunction isShadowRoot(n2) {\n const hostEl = (\n // anchor and textarea elements also have a `host` property\n // but only shadow roots have a `mode` property\n n2 && \"host\" in n2 && \"mode\" in n2 && index$1.host(n2) || null\n );\n return Boolean(\n hostEl && \"shadowRoot\" in hostEl && index$1.shadowRoot(hostEl) === n2\n );\n}\nfunction isNativeShadowDom(shadowRoot2) {\n return Object.prototype.toString.call(shadowRoot2) === \"[object ShadowRoot]\";\n}\nfunction fixBrowserCompatibilityIssuesInCSS(cssText) {\n if (cssText.includes(\" background-clip: text;\") && !cssText.includes(\" -webkit-background-clip: text;\")) {\n cssText = cssText.replace(\n /\\sbackground-clip:\\s*text;/g,\n \" -webkit-background-clip: text; background-clip: text;\"\n );\n }\n return cssText;\n}\nfunction escapeImportStatement(rule2) {\n const { cssText } = rule2;\n if (cssText.split('\"').length < 3) return cssText;\n const statement = [\"@import\", `url(${JSON.stringify(rule2.href)})`];\n if (rule2.layerName === \"\") {\n statement.push(`layer`);\n } else if (rule2.layerName) {\n statement.push(`layer(${rule2.layerName})`);\n }\n if (rule2.supportsText) {\n statement.push(`supports(${rule2.supportsText})`);\n }\n if (rule2.media.length) {\n statement.push(rule2.media.mediaText);\n }\n return statement.join(\" \") + \";\";\n}\nfunction stringifyStylesheet(s2) {\n try {\n const rules2 = s2.rules || s2.cssRules;\n if (!rules2) {\n return null;\n }\n let sheetHref = s2.href;\n if (!sheetHref && s2.ownerNode && s2.ownerNode.ownerDocument) {\n sheetHref = s2.ownerNode.ownerDocument.location.href;\n }\n const stringifiedRules = Array.from(\n rules2,\n (rule2) => stringifyRule(rule2, sheetHref)\n ).join(\"\");\n return fixBrowserCompatibilityIssuesInCSS(stringifiedRules);\n } catch (error) {\n return null;\n }\n}\nfunction stringifyRule(rule2, sheetHref) {\n if (isCSSImportRule(rule2)) {\n let importStringified;\n try {\n importStringified = // for same-origin stylesheets,\n // we can access the imported stylesheet rules directly\n stringifyStylesheet(rule2.styleSheet) || // work around browser issues with the raw string `@import url(...)` statement\n escapeImportStatement(rule2);\n } catch (error) {\n importStringified = rule2.cssText;\n }\n if (rule2.styleSheet.href) {\n return absolutifyURLs(importStringified, rule2.styleSheet.href);\n }\n return importStringified;\n } else {\n let ruleStringified = rule2.cssText;\n if (isCSSStyleRule(rule2) && rule2.selectorText.includes(\":\")) {\n ruleStringified = fixSafariColons(ruleStringified);\n }\n if (sheetHref) {\n return absolutifyURLs(ruleStringified, sheetHref);\n }\n return ruleStringified;\n }\n}\nfunction fixSafariColons(cssStringified) {\n const regex = /(\\[(?:[\\w-]+)[^\\\\])(:(?:[\\w-]+)\\])/gm;\n return cssStringified.replace(regex, \"$1\\\\$2\");\n}\nfunction isCSSImportRule(rule2) {\n return \"styleSheet\" in rule2;\n}\nfunction isCSSStyleRule(rule2) {\n return \"selectorText\" in rule2;\n}\nclass Mirror {\n constructor() {\n __publicField$1(this, \"idNodeMap\", /* @__PURE__ */ new Map());\n __publicField$1(this, \"nodeMetaMap\", /* @__PURE__ */ new WeakMap());\n }\n getId(n2) {\n var _a2;\n if (!n2) return -1;\n const id = (_a2 = this.getMeta(n2)) == null ? void 0 : _a2.id;\n return id ?? -1;\n }\n getNode(id) {\n return this.idNodeMap.get(id) || null;\n }\n getIds() {\n return Array.from(this.idNodeMap.keys());\n }\n getMeta(n2) {\n return this.nodeMetaMap.get(n2) || null;\n }\n // removes the node from idNodeMap\n // doesn't remove the node from nodeMetaMap\n removeNodeFromMap(n2) {\n const id = this.getId(n2);\n this.idNodeMap.delete(id);\n if (n2.childNodes) {\n n2.childNodes.forEach(\n (childNode) => this.removeNodeFromMap(childNode)\n );\n }\n }\n has(id) {\n return this.idNodeMap.has(id);\n }\n hasNode(node2) {\n return this.nodeMetaMap.has(node2);\n }\n add(n2, meta) {\n const id = meta.id;\n this.idNodeMap.set(id, n2);\n this.nodeMetaMap.set(n2, meta);\n }\n replace(id, n2) {\n const oldNode = this.getNode(id);\n if (oldNode) {\n const meta = this.nodeMetaMap.get(oldNode);\n if (meta) this.nodeMetaMap.set(n2, meta);\n }\n this.idNodeMap.set(id, n2);\n }\n reset() {\n this.idNodeMap = /* @__PURE__ */ new Map();\n this.nodeMetaMap = /* @__PURE__ */ new WeakMap();\n }\n}\nfunction createMirror$2() {\n return new Mirror();\n}\nfunction maskInputValue({\n element,\n maskInputOptions,\n tagName,\n type,\n value,\n maskInputFn\n}) {\n let text = value || \"\";\n const actualType = type && toLowerCase(type);\n if (maskInputOptions[tagName.toLowerCase()] || actualType && maskInputOptions[actualType]) {\n if (maskInputFn) {\n text = maskInputFn(text, element);\n } else {\n text = \"*\".repeat(text.length);\n }\n }\n return text;\n}\nfunction toLowerCase(str) {\n return str.toLowerCase();\n}\nconst ORIGINAL_ATTRIBUTE_NAME = \"__rrweb_original__\";\nfunction is2DCanvasBlank(canvas) {\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) return true;\n const chunkSize = 50;\n for (let x2 = 0; x2 < canvas.width; x2 += chunkSize) {\n for (let y = 0; y < canvas.height; y += chunkSize) {\n const getImageData = ctx.getImageData;\n const originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData ? getImageData[ORIGINAL_ATTRIBUTE_NAME] : getImageData;\n const pixelBuffer = new Uint32Array(\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n originalGetImageData.call(\n ctx,\n x2,\n y,\n Math.min(chunkSize, canvas.width - x2),\n Math.min(chunkSize, canvas.height - y)\n ).data.buffer\n );\n if (pixelBuffer.some((pixel) => pixel !== 0)) return false;\n }\n }\n return true;\n}\nfunction getInputType(element) {\n const type = element.type;\n return element.hasAttribute(\"data-rr-is-password\") ? \"password\" : type ? (\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n toLowerCase(type)\n ) : null;\n}\nfunction extractFileExtension(path, baseURL) {\n let url;\n try {\n url = new URL(path, baseURL ?? window.location.href);\n } catch (err) {\n return null;\n }\n const regex = /\\.([0-9a-z]+)(?:$)/i;\n const match = url.pathname.match(regex);\n return (match == null ? void 0 : match[1]) ?? null;\n}\nfunction extractOrigin(url) {\n let origin = \"\";\n if (url.indexOf(\"//\") > -1) {\n origin = url.split(\"/\").slice(0, 3).join(\"/\");\n } else {\n origin = url.split(\"/\")[0];\n }\n origin = origin.split(\"?\")[0];\n return origin;\n}\nconst URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\nconst URL_PROTOCOL_MATCH = /^(?:[a-z+]+:)?\\/\\//i;\nconst URL_WWW_MATCH = /^www\\..*/i;\nconst DATA_URI = /^(data:)([^,]*),(.*)/i;\nfunction absolutifyURLs(cssText, href) {\n return (cssText || \"\").replace(\n URL_IN_CSS_REF,\n (origin, quote1, path1, quote2, path2, path3) => {\n const filePath = path1 || path2 || path3;\n const maybeQuote = quote1 || quote2 || \"\";\n if (!filePath) {\n return origin;\n }\n if (URL_PROTOCOL_MATCH.test(filePath) || URL_WWW_MATCH.test(filePath)) {\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\n }\n if (DATA_URI.test(filePath)) {\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\n }\n if (filePath[0] === \"/\") {\n return `url(${maybeQuote}${extractOrigin(href) + filePath}${maybeQuote})`;\n }\n const stack = href.split(\"/\");\n const parts = filePath.split(\"/\");\n stack.pop();\n for (const part of parts) {\n if (part === \".\") {\n continue;\n } else if (part === \"..\") {\n stack.pop();\n } else {\n stack.push(part);\n }\n }\n return `url(${maybeQuote}${stack.join(\"/\")}${maybeQuote})`;\n }\n );\n}\nfunction normalizeCssString(cssText) {\n return cssText.replace(/(\\/\\*[^*]*\\*\\/)|[\\s;]/g, \"\");\n}\nfunction splitCssText(cssText, style) {\n const childNodes2 = Array.from(style.childNodes);\n const splits = [];\n if (childNodes2.length > 1 && cssText && typeof cssText === \"string\") {\n const cssTextNorm = normalizeCssString(cssText);\n for (let i2 = 1; i2 < childNodes2.length; i2++) {\n if (childNodes2[i2].textContent && typeof childNodes2[i2].textContent === \"string\") {\n const textContentNorm = normalizeCssString(childNodes2[i2].textContent);\n for (let j = 3; j < textContentNorm.length; j++) {\n const bit = textContentNorm.substring(0, j);\n if (cssTextNorm.split(bit).length === 2) {\n const splitNorm = cssTextNorm.indexOf(bit);\n for (let k = splitNorm; k < cssText.length; k++) {\n if (normalizeCssString(cssText.substring(0, k)).length === splitNorm) {\n splits.push(cssText.substring(0, k));\n cssText = cssText.substring(k);\n break;\n }\n }\n break;\n }\n }\n }\n }\n }\n splits.push(cssText);\n return splits;\n}\nfunction markCssSplits(cssText, style) {\n return splitCssText(cssText, style).join(\"/* rr_split */\");\n}\nlet _id = 1;\nconst tagNameRegex = new RegExp(\"[^a-z0-9-_:]\");\nconst IGNORED_NODE = -2;\nfunction genId() {\n return _id++;\n}\nfunction getValidTagName$1(element) {\n if (element instanceof HTMLFormElement) {\n return \"form\";\n }\n const processedTagName = toLowerCase(element.tagName);\n if (tagNameRegex.test(processedTagName)) {\n return \"div\";\n }\n return processedTagName;\n}\nlet canvasService;\nlet canvasCtx;\nconst SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\nconst SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\n if (attributeValue.trim() === \"\") {\n return attributeValue;\n }\n let pos = 0;\n function collectCharacters(regEx) {\n let chars2;\n const match = regEx.exec(attributeValue.substring(pos));\n if (match) {\n chars2 = match[0];\n pos += chars2.length;\n return chars2;\n }\n return \"\";\n }\n const output = [];\n while (true) {\n collectCharacters(SRCSET_COMMAS_OR_SPACES);\n if (pos >= attributeValue.length) {\n break;\n }\n let url = collectCharacters(SRCSET_NOT_SPACES);\n if (url.slice(-1) === \",\") {\n url = absoluteToDoc(doc, url.substring(0, url.length - 1));\n output.push(url);\n } else {\n let descriptorsStr = \"\";\n url = absoluteToDoc(doc, url);\n let inParens = false;\n while (true) {\n const c2 = attributeValue.charAt(pos);\n if (c2 === \"\") {\n output.push((url + descriptorsStr).trim());\n break;\n } else if (!inParens) {\n if (c2 === \",\") {\n pos += 1;\n output.push((url + descriptorsStr).trim());\n break;\n } else if (c2 === \"(\") {\n inParens = true;\n }\n } else {\n if (c2 === \")\") {\n inParens = false;\n }\n }\n descriptorsStr += c2;\n pos += 1;\n }\n }\n }\n return output.join(\", \");\n}\nconst cachedDocument = /* @__PURE__ */ new WeakMap();\nfunction absoluteToDoc(doc, attributeValue) {\n if (!attributeValue || attributeValue.trim() === \"\") {\n return attributeValue;\n }\n return getHref(doc, attributeValue);\n}\nfunction isSVGElement(el) {\n return Boolean(el.tagName === \"svg\" || el.ownerSVGElement);\n}\nfunction getHref(doc, customHref) {\n let a2 = cachedDocument.get(doc);\n if (!a2) {\n a2 = doc.createElement(\"a\");\n cachedDocument.set(doc, a2);\n }\n if (!customHref) {\n customHref = \"\";\n } else if (customHref.startsWith(\"blob:\") || customHref.startsWith(\"data:\")) {\n return customHref;\n }\n a2.setAttribute(\"href\", customHref);\n return a2.href;\n}\nfunction transformAttribute(doc, tagName, name, value) {\n if (!value) {\n return value;\n }\n if (name === \"src\" || name === \"href\" && !(tagName === \"use\" && value[0] === \"#\")) {\n return absoluteToDoc(doc, value);\n } else if (name === \"xlink:href\" && value[0] !== \"#\") {\n return absoluteToDoc(doc, value);\n } else if (name === \"background\" && (tagName === \"table\" || tagName === \"td\" || tagName === \"th\")) {\n return absoluteToDoc(doc, value);\n } else if (name === \"srcset\") {\n return getAbsoluteSrcsetString(doc, value);\n } else if (name === \"style\") {\n return absolutifyURLs(value, getHref(doc));\n } else if (tagName === \"object\" && name === \"data\") {\n return absoluteToDoc(doc, value);\n }\n return value;\n}\nfunction ignoreAttribute(tagName, name, _value) {\n return (tagName === \"video\" || tagName === \"audio\") && name === \"autoplay\";\n}\nfunction _isBlockedElement(element, blockClass, blockSelector) {\n try {\n if (typeof blockClass === \"string\") {\n if (element.classList.contains(blockClass)) {\n return true;\n }\n } else {\n for (let eIndex = element.classList.length; eIndex--; ) {\n const className = element.classList[eIndex];\n if (blockClass.test(className)) {\n return true;\n }\n }\n }\n if (blockSelector) {\n return element.matches(blockSelector);\n }\n } catch (e2) {\n }\n return false;\n}\nfunction classMatchesRegex(node2, regex, checkAncestors) {\n if (!node2) return false;\n if (node2.nodeType !== node2.ELEMENT_NODE) {\n if (!checkAncestors) return false;\n return classMatchesRegex(index$1.parentNode(node2), regex, checkAncestors);\n }\n for (let eIndex = node2.classList.length; eIndex--; ) {\n const className = node2.classList[eIndex];\n if (regex.test(className)) {\n return true;\n }\n }\n if (!checkAncestors) return false;\n return classMatchesRegex(index$1.parentNode(node2), regex, checkAncestors);\n}\nfunction needMaskingText(node2, maskTextClass, maskTextSelector, checkAncestors) {\n let el;\n if (isElement(node2)) {\n el = node2;\n if (!index$1.childNodes(el).length) {\n return false;\n }\n } else if (index$1.parentElement(node2) === null) {\n return false;\n } else {\n el = index$1.parentElement(node2);\n }\n try {\n if (typeof maskTextClass === \"string\") {\n if (checkAncestors) {\n if (el.closest(`.${maskTextClass}`)) return true;\n } else {\n if (el.classList.contains(maskTextClass)) return true;\n }\n } else {\n if (classMatchesRegex(el, maskTextClass, checkAncestors)) return true;\n }\n if (maskTextSelector) {\n if (checkAncestors) {\n if (el.closest(maskTextSelector)) return true;\n } else {\n if (el.matches(maskTextSelector)) return true;\n }\n }\n } catch (e2) {\n }\n return false;\n}\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\n const win = iframeEl.contentWindow;\n if (!win) {\n return;\n }\n let fired = false;\n let readyState;\n try {\n readyState = win.document.readyState;\n } catch (error) {\n return;\n }\n if (readyState !== \"complete\") {\n const timer = setTimeout(() => {\n if (!fired) {\n listener();\n fired = true;\n }\n }, iframeLoadTimeout);\n iframeEl.addEventListener(\"load\", () => {\n clearTimeout(timer);\n fired = true;\n listener();\n });\n return;\n }\n const blankUrl = \"about:blank\";\n if (win.location.href !== blankUrl || iframeEl.src === blankUrl || iframeEl.src === \"\") {\n setTimeout(listener, 0);\n return iframeEl.addEventListener(\"load\", listener);\n }\n iframeEl.addEventListener(\"load\", listener);\n}\nfunction onceStylesheetLoaded(link, listener, styleSheetLoadTimeout) {\n let fired = false;\n let styleSheetLoaded;\n try {\n styleSheetLoaded = link.sheet;\n } catch (error) {\n return;\n }\n if (styleSheetLoaded) return;\n const timer = setTimeout(() => {\n if (!fired) {\n listener();\n fired = true;\n }\n }, styleSheetLoadTimeout);\n link.addEventListener(\"load\", () => {\n clearTimeout(timer);\n fired = true;\n listener();\n });\n}\nfunction serializeNode(n2, options) {\n const {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n inlineStylesheet,\n maskInputOptions = {},\n maskTextFn,\n maskInputFn,\n dataURLOptions = {},\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement = false,\n cssCaptured = false\n } = options;\n const rootId = getRootId(doc, mirror2);\n switch (n2.nodeType) {\n case n2.DOCUMENT_NODE:\n if (n2.compatMode !== \"CSS1Compat\") {\n return {\n type: NodeType$3.Document,\n childNodes: [],\n compatMode: n2.compatMode\n // probably \"BackCompat\"\n };\n } else {\n return {\n type: NodeType$3.Document,\n childNodes: []\n };\n }\n case n2.DOCUMENT_TYPE_NODE:\n return {\n type: NodeType$3.DocumentType,\n name: n2.name,\n publicId: n2.publicId,\n systemId: n2.systemId,\n rootId\n };\n case n2.ELEMENT_NODE:\n return serializeElementNode(n2, {\n doc,\n blockClass,\n blockSelector,\n inlineStylesheet,\n maskInputOptions,\n maskInputFn,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement,\n rootId\n });\n case n2.TEXT_NODE:\n return serializeTextNode(n2, {\n doc,\n needsMask,\n maskTextFn,\n rootId,\n cssCaptured\n });\n case n2.CDATA_SECTION_NODE:\n return {\n type: NodeType$3.CDATA,\n textContent: \"\",\n rootId\n };\n case n2.COMMENT_NODE:\n return {\n type: NodeType$3.Comment,\n textContent: index$1.textContent(n2) || \"\",\n rootId\n };\n default:\n return false;\n }\n}\nfunction getRootId(doc, mirror2) {\n if (!mirror2.hasNode(doc)) return void 0;\n const docId = mirror2.getId(doc);\n return docId === 1 ? void 0 : docId;\n}\nfunction serializeTextNode(n2, options) {\n const { needsMask, maskTextFn, rootId, cssCaptured } = options;\n const parent = index$1.parentNode(n2);\n const parentTagName = parent && parent.tagName;\n let textContent2 = \"\";\n const isStyle = parentTagName === \"STYLE\" ? true : void 0;\n const isScript = parentTagName === \"SCRIPT\" ? true : void 0;\n if (isScript) {\n textContent2 = \"SCRIPT_PLACEHOLDER\";\n } else if (!cssCaptured) {\n textContent2 = index$1.textContent(n2);\n if (isStyle && textContent2) {\n textContent2 = absolutifyURLs(textContent2, getHref(options.doc));\n }\n }\n if (!isStyle && !isScript && textContent2 && needsMask) {\n textContent2 = maskTextFn ? maskTextFn(textContent2, index$1.parentElement(n2)) : textContent2.replace(/[\\S]/g, \"*\");\n }\n return {\n type: NodeType$3.Text,\n textContent: textContent2 || \"\",\n rootId\n };\n}\nfunction serializeElementNode(n2, options) {\n const {\n doc,\n blockClass,\n blockSelector,\n inlineStylesheet,\n maskInputOptions = {},\n maskInputFn,\n dataURLOptions = {},\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement = false,\n rootId\n } = options;\n const needBlock = _isBlockedElement(n2, blockClass, blockSelector);\n const tagName = getValidTagName$1(n2);\n let attributes = {};\n const len = n2.attributes.length;\n for (let i2 = 0; i2 < len; i2++) {\n const attr = n2.attributes[i2];\n if (!ignoreAttribute(tagName, attr.name, attr.value)) {\n attributes[attr.name] = transformAttribute(\n doc,\n tagName,\n toLowerCase(attr.name),\n attr.value\n );\n }\n }\n if (tagName === \"link\" && inlineStylesheet) {\n const stylesheet = Array.from(doc.styleSheets).find((s2) => {\n return s2.href === n2.href;\n });\n let cssText = null;\n if (stylesheet) {\n cssText = stringifyStylesheet(stylesheet);\n }\n if (cssText) {\n delete attributes.rel;\n delete attributes.href;\n attributes._cssText = cssText;\n }\n }\n if (tagName === \"style\" && n2.sheet) {\n let cssText = stringifyStylesheet(\n n2.sheet\n );\n if (cssText) {\n if (n2.childNodes.length > 1) {\n cssText = markCssSplits(cssText, n2);\n }\n attributes._cssText = cssText;\n }\n }\n if (tagName === \"input\" || tagName === \"textarea\" || tagName === \"select\") {\n const value = n2.value;\n const checked = n2.checked;\n if (attributes.type !== \"radio\" && attributes.type !== \"checkbox\" && attributes.type !== \"submit\" && attributes.type !== \"button\" && value) {\n attributes.value = maskInputValue({\n element: n2,\n type: getInputType(n2),\n tagName,\n value,\n maskInputOptions,\n maskInputFn\n });\n } else if (checked) {\n attributes.checked = checked;\n }\n }\n if (tagName === \"option\") {\n if (n2.selected && !maskInputOptions[\"select\"]) {\n attributes.selected = true;\n } else {\n delete attributes.selected;\n }\n }\n if (tagName === \"dialog\" && n2.open) {\n attributes.rr_open_mode = n2.matches(\"dialog:modal\") ? \"modal\" : \"non-modal\";\n }\n if (tagName === \"canvas\" && recordCanvas) {\n if (n2.__context === \"2d\") {\n if (!is2DCanvasBlank(n2)) {\n attributes.rr_dataURL = n2.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n }\n } else if (!(\"__context\" in n2)) {\n const canvasDataURL = n2.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n const blankCanvas = doc.createElement(\"canvas\");\n blankCanvas.width = n2.width;\n blankCanvas.height = n2.height;\n const blankCanvasDataURL = blankCanvas.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n if (canvasDataURL !== blankCanvasDataURL) {\n attributes.rr_dataURL = canvasDataURL;\n }\n }\n }\n if (tagName === \"img\" && inlineImages) {\n if (!canvasService) {\n canvasService = doc.createElement(\"canvas\");\n canvasCtx = canvasService.getContext(\"2d\");\n }\n const image = n2;\n const imageSrc = image.currentSrc || image.getAttribute(\"src\") || \"\";\n const priorCrossOrigin = image.crossOrigin;\n const recordInlineImage = () => {\n image.removeEventListener(\"load\", recordInlineImage);\n try {\n canvasService.width = image.naturalWidth;\n canvasService.height = image.naturalHeight;\n canvasCtx.drawImage(image, 0, 0);\n attributes.rr_dataURL = canvasService.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n } catch (err) {\n if (image.crossOrigin !== \"anonymous\") {\n image.crossOrigin = \"anonymous\";\n if (image.complete && image.naturalWidth !== 0)\n recordInlineImage();\n else image.addEventListener(\"load\", recordInlineImage);\n return;\n } else {\n console.warn(\n `Cannot inline img src=${imageSrc}! Error: ${err}`\n );\n }\n }\n if (image.crossOrigin === \"anonymous\") {\n priorCrossOrigin ? attributes.crossOrigin = priorCrossOrigin : image.removeAttribute(\"crossorigin\");\n }\n };\n if (image.complete && image.naturalWidth !== 0) recordInlineImage();\n else image.addEventListener(\"load\", recordInlineImage);\n }\n if (tagName === \"audio\" || tagName === \"video\") {\n const mediaAttributes = attributes;\n mediaAttributes.rr_mediaState = n2.paused ? \"paused\" : \"played\";\n mediaAttributes.rr_mediaCurrentTime = n2.currentTime;\n mediaAttributes.rr_mediaPlaybackRate = n2.playbackRate;\n mediaAttributes.rr_mediaMuted = n2.muted;\n mediaAttributes.rr_mediaLoop = n2.loop;\n mediaAttributes.rr_mediaVolume = n2.volume;\n }\n if (!newlyAddedElement) {\n if (n2.scrollLeft) {\n attributes.rr_scrollLeft = n2.scrollLeft;\n }\n if (n2.scrollTop) {\n attributes.rr_scrollTop = n2.scrollTop;\n }\n }\n if (needBlock) {\n const { width, height } = n2.getBoundingClientRect();\n attributes = {\n class: attributes.class,\n rr_width: `${width}px`,\n rr_height: `${height}px`\n };\n }\n if (tagName === \"iframe\" && !keepIframeSrcFn(attributes.src)) {\n if (!n2.contentDocument) {\n attributes.rr_src = attributes.src;\n }\n delete attributes.src;\n }\n let isCustomElement;\n try {\n if (customElements.get(tagName)) isCustomElement = true;\n } catch (e2) {\n }\n return {\n type: NodeType$3.Element,\n tagName,\n attributes,\n childNodes: [],\n isSVG: isSVGElement(n2) || void 0,\n needBlock,\n rootId,\n isCustom: isCustomElement\n };\n}\nfunction lowerIfExists(maybeAttr) {\n if (maybeAttr === void 0 || maybeAttr === null) {\n return \"\";\n } else {\n return maybeAttr.toLowerCase();\n }\n}\nfunction slimDOMExcluded(sn, slimDOMOptions) {\n if (slimDOMOptions.comment && sn.type === NodeType$3.Comment) {\n return true;\n } else if (sn.type === NodeType$3.Element) {\n if (slimDOMOptions.script && // script tag\n (sn.tagName === \"script\" || // (module)preload link\n sn.tagName === \"link\" && (sn.attributes.rel === \"preload\" || sn.attributes.rel === \"modulepreload\") && sn.attributes.as === \"script\" || // prefetch link\n sn.tagName === \"link\" && sn.attributes.rel === \"prefetch\" && typeof sn.attributes.href === \"string\" && extractFileExtension(sn.attributes.href) === \"js\")) {\n return true;\n } else if (slimDOMOptions.headFavicon && (sn.tagName === \"link\" && sn.attributes.rel === \"shortcut icon\" || sn.tagName === \"meta\" && (lowerIfExists(sn.attributes.name).match(\n /^msapplication-tile(image|color)$/\n ) || lowerIfExists(sn.attributes.name) === \"application-name\" || lowerIfExists(sn.attributes.rel) === \"icon\" || lowerIfExists(sn.attributes.rel) === \"apple-touch-icon\" || lowerIfExists(sn.attributes.rel) === \"shortcut icon\"))) {\n return true;\n } else if (sn.tagName === \"meta\") {\n if (slimDOMOptions.headMetaDescKeywords && lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\n return true;\n } else if (slimDOMOptions.headMetaSocial && (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) || // og = opengraph (facebook)\n lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) || lowerIfExists(sn.attributes.name) === \"pinterest\")) {\n return true;\n } else if (slimDOMOptions.headMetaRobots && (lowerIfExists(sn.attributes.name) === \"robots\" || lowerIfExists(sn.attributes.name) === \"googlebot\" || lowerIfExists(sn.attributes.name) === \"bingbot\")) {\n return true;\n } else if (slimDOMOptions.headMetaHttpEquiv && sn.attributes[\"http-equiv\"] !== void 0) {\n return true;\n } else if (slimDOMOptions.headMetaAuthorship && (lowerIfExists(sn.attributes.name) === \"author\" || lowerIfExists(sn.attributes.name) === \"generator\" || lowerIfExists(sn.attributes.name) === \"framework\" || lowerIfExists(sn.attributes.name) === \"publisher\" || lowerIfExists(sn.attributes.name) === \"progid\" || lowerIfExists(sn.attributes.property).match(/^article:/) || lowerIfExists(sn.attributes.property).match(/^product:/))) {\n return true;\n } else if (slimDOMOptions.headMetaVerification && (lowerIfExists(sn.attributes.name) === \"google-site-verification\" || lowerIfExists(sn.attributes.name) === \"yandex-verification\" || lowerIfExists(sn.attributes.name) === \"csrf-token\" || lowerIfExists(sn.attributes.name) === \"p:domain_verify\" || lowerIfExists(sn.attributes.name) === \"verify-v1\" || lowerIfExists(sn.attributes.name) === \"verification\" || lowerIfExists(sn.attributes.name) === \"shopify-checkout-api-token\")) {\n return true;\n }\n }\n }\n return false;\n}\nfunction serializeNodeWithId(n2, options) {\n const {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n skipChild = false,\n inlineStylesheet = true,\n maskInputOptions = {},\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions = {},\n inlineImages = false,\n recordCanvas = false,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout = 5e3,\n onStylesheetLoad,\n stylesheetLoadTimeout = 5e3,\n keepIframeSrcFn = () => false,\n newlyAddedElement = false,\n cssCaptured = false\n } = options;\n let { needsMask } = options;\n let { preserveWhiteSpace = true } = options;\n if (!needsMask) {\n const checkAncestors = needsMask === void 0;\n needsMask = needMaskingText(\n n2,\n maskTextClass,\n maskTextSelector,\n checkAncestors\n );\n }\n const _serializedNode = serializeNode(n2, {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement,\n cssCaptured\n });\n if (!_serializedNode) {\n console.warn(n2, \"not serialized\");\n return null;\n }\n let id;\n if (mirror2.hasNode(n2)) {\n id = mirror2.getId(n2);\n } else if (slimDOMExcluded(_serializedNode, slimDOMOptions) || !preserveWhiteSpace && _serializedNode.type === NodeType$3.Text && !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, \"\").length) {\n id = IGNORED_NODE;\n } else {\n id = genId();\n }\n const serializedNode = Object.assign(_serializedNode, { id });\n mirror2.add(n2, serializedNode);\n if (id === IGNORED_NODE) {\n return null;\n }\n if (onSerialize) {\n onSerialize(n2);\n }\n let recordChild = !skipChild;\n if (serializedNode.type === NodeType$3.Element) {\n recordChild = recordChild && !serializedNode.needBlock;\n delete serializedNode.needBlock;\n const shadowRootEl = index$1.shadowRoot(n2);\n if (shadowRootEl && isNativeShadowDom(shadowRootEl))\n serializedNode.isShadowHost = true;\n }\n if ((serializedNode.type === NodeType$3.Document || serializedNode.type === NodeType$3.Element) && recordChild) {\n if (slimDOMOptions.headWhitespace && serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"head\") {\n preserveWhiteSpace = false;\n }\n const bypassOptions = {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n skipChild,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn,\n cssCaptured: false\n };\n if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"textarea\" && serializedNode.attributes.value !== void 0) ;\n else {\n if (serializedNode.type === NodeType$3.Element && serializedNode.attributes._cssText !== void 0 && typeof serializedNode.attributes._cssText === \"string\") {\n bypassOptions.cssCaptured = true;\n }\n for (const childN of Array.from(index$1.childNodes(n2))) {\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n }\n let shadowRootEl = null;\n if (isElement(n2) && (shadowRootEl = index$1.shadowRoot(n2))) {\n for (const childN of Array.from(index$1.childNodes(shadowRootEl))) {\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n isNativeShadowDom(shadowRootEl) && (serializedChildNode.isShadow = true);\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n }\n }\n const parent = index$1.parentNode(n2);\n if (parent && isShadowRoot(parent) && isNativeShadowDom(parent)) {\n serializedNode.isShadow = true;\n }\n if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"iframe\") {\n onceIframeLoaded(\n n2,\n () => {\n const iframeDoc = n2.contentDocument;\n if (iframeDoc && onIframeLoad) {\n const serializedIframeNode = serializeNodeWithId(iframeDoc, {\n doc: iframeDoc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn\n });\n if (serializedIframeNode) {\n onIframeLoad(\n n2,\n serializedIframeNode\n );\n }\n }\n },\n iframeLoadTimeout\n );\n }\n if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"link\" && typeof serializedNode.attributes.rel === \"string\" && (serializedNode.attributes.rel === \"stylesheet\" || serializedNode.attributes.rel === \"preload\" && typeof serializedNode.attributes.href === \"string\" && extractFileExtension(serializedNode.attributes.href) === \"css\")) {\n onceStylesheetLoaded(\n n2,\n () => {\n if (onStylesheetLoad) {\n const serializedLinkNode = serializeNodeWithId(n2, {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn\n });\n if (serializedLinkNode) {\n onStylesheetLoad(\n n2,\n serializedLinkNode\n );\n }\n }\n },\n stylesheetLoadTimeout\n );\n }\n return serializedNode;\n}\nfunction snapshot(n2, options) {\n const {\n mirror: mirror2 = new Mirror(),\n blockClass = \"rr-block\",\n blockSelector = null,\n maskTextClass = \"rr-mask\",\n maskTextSelector = null,\n inlineStylesheet = true,\n inlineImages = false,\n recordCanvas = false,\n maskAllInputs = false,\n maskTextFn,\n maskInputFn,\n slimDOM = false,\n dataURLOptions,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn = () => false\n } = options || {};\n const maskInputOptions = maskAllInputs === true ? {\n color: true,\n date: true,\n \"datetime-local\": true,\n email: true,\n month: true,\n number: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true,\n textarea: true,\n select: true,\n password: true\n } : maskAllInputs === false ? {\n password: true\n } : maskAllInputs;\n const slimDOMOptions = slimDOM === true || slimDOM === \"all\" ? (\n // if true: set of sensible options that should not throw away any information\n {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaDescKeywords: slimDOM === \"all\",\n // destructive\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaAuthorship: true,\n headMetaVerification: true\n }\n ) : slimDOM === false ? {} : slimDOM;\n return serializeNodeWithId(n2, {\n doc: n2,\n mirror: mirror2,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn,\n newlyAddedElement: false\n });\n}\nfunction getDefaultExportFromCjs$1(x2) {\n return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, \"default\") ? x2[\"default\"] : x2;\n}\nfunction getAugmentedNamespace$1(n2) {\n if (n2.__esModule) return n2;\n var f2 = n2.default;\n if (typeof f2 == \"function\") {\n var a2 = function a22() {\n if (this instanceof a22) {\n return Reflect.construct(f2, arguments, this.constructor);\n }\n return f2.apply(this, arguments);\n };\n a2.prototype = f2.prototype;\n } else a2 = {};\n Object.defineProperty(a2, \"__esModule\", { value: true });\n Object.keys(n2).forEach(function(k) {\n var d = Object.getOwnPropertyDescriptor(n2, k);\n Object.defineProperty(a2, k, d.get ? d : {\n enumerable: true,\n get: function() {\n return n2[k];\n }\n });\n });\n return a2;\n}\nvar picocolors_browser$1 = { exports: {} };\nvar x$1 = String;\nvar create$1 = function() {\n return { isColorSupported: false, reset: x$1, bold: x$1, dim: x$1, italic: x$1, underline: x$1, inverse: x$1, hidden: x$1, strikethrough: x$1, black: x$1, red: x$1, green: x$1, yellow: x$1, blue: x$1, magenta: x$1, cyan: x$1, white: x$1, gray: x$1, bgBlack: x$1, bgRed: x$1, bgGreen: x$1, bgYellow: x$1, bgBlue: x$1, bgMagenta: x$1, bgCyan: x$1, bgWhite: x$1 };\n};\npicocolors_browser$1.exports = create$1();\npicocolors_browser$1.exports.createColors = create$1;\nvar picocolors_browserExports$1 = picocolors_browser$1.exports;\nconst __viteBrowserExternal$2 = {};\nconst __viteBrowserExternal$1$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: __viteBrowserExternal$2\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst require$$2$1 = /* @__PURE__ */ getAugmentedNamespace$1(__viteBrowserExternal$1$1);\nlet pico$1 = picocolors_browserExports$1;\nlet terminalHighlight$1$1 = require$$2$1;\nlet CssSyntaxError$3$1 = class CssSyntaxError extends Error {\n constructor(message, line, column, source, file, plugin22) {\n super(message);\n this.name = \"CssSyntaxError\";\n this.reason = message;\n if (file) {\n this.file = file;\n }\n if (source) {\n this.source = source;\n }\n if (plugin22) {\n this.plugin = plugin22;\n }\n if (typeof line !== \"undefined\" && typeof column !== \"undefined\") {\n if (typeof line === \"number\") {\n this.line = line;\n this.column = column;\n } else {\n this.line = line.line;\n this.column = line.column;\n this.endLine = column.line;\n this.endColumn = column.column;\n }\n }\n this.setMessage();\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, CssSyntaxError);\n }\n }\n setMessage() {\n this.message = this.plugin ? this.plugin + \": \" : \"\";\n this.message += this.file ? this.file : \"\";\n if (typeof this.line !== \"undefined\") {\n this.message += \":\" + this.line + \":\" + this.column;\n }\n this.message += \": \" + this.reason;\n }\n showSourceCode(color) {\n if (!this.source) return \"\";\n let css = this.source;\n if (color == null) color = pico$1.isColorSupported;\n if (terminalHighlight$1$1) {\n if (color) css = terminalHighlight$1$1(css);\n }\n let lines = css.split(/\\r?\\n/);\n let start = Math.max(this.line - 3, 0);\n let end = Math.min(this.line + 2, lines.length);\n let maxWidth = String(end).length;\n let mark, aside;\n if (color) {\n let { bold, gray, red } = pico$1.createColors(true);\n mark = (text) => bold(red(text));\n aside = (text) => gray(text);\n } else {\n mark = aside = (str) => str;\n }\n return lines.slice(start, end).map((line, index2) => {\n let number = start + 1 + index2;\n let gutter = \" \" + (\" \" + number).slice(-maxWidth) + \" | \";\n if (number === this.line) {\n let spacing = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, this.column - 1).replace(/[^\\t]/g, \" \");\n return mark(\">\") + aside(gutter) + line + \"\\n \" + spacing + mark(\"^\");\n }\n return \" \" + aside(gutter) + line;\n }).join(\"\\n\");\n }\n toString() {\n let code = this.showSourceCode();\n if (code) {\n code = \"\\n\\n\" + code + \"\\n\";\n }\n return this.name + \": \" + this.message + code;\n }\n};\nvar cssSyntaxError$1 = CssSyntaxError$3$1;\nCssSyntaxError$3$1.default = CssSyntaxError$3$1;\nvar symbols$1 = {};\nsymbols$1.isClean = Symbol(\"isClean\");\nsymbols$1.my = Symbol(\"my\");\nconst DEFAULT_RAW$1 = {\n after: \"\\n\",\n beforeClose: \"\\n\",\n beforeComment: \"\\n\",\n beforeDecl: \"\\n\",\n beforeOpen: \" \",\n beforeRule: \"\\n\",\n colon: \": \",\n commentLeft: \" \",\n commentRight: \" \",\n emptyBody: \"\",\n indent: \" \",\n semicolon: false\n};\nfunction capitalize$1(str) {\n return str[0].toUpperCase() + str.slice(1);\n}\nlet Stringifier$2$1 = class Stringifier {\n constructor(builder) {\n this.builder = builder;\n }\n atrule(node2, semicolon) {\n let name = \"@\" + node2.name;\n let params = node2.params ? this.rawValue(node2, \"params\") : \"\";\n if (typeof node2.raws.afterName !== \"undefined\") {\n name += node2.raws.afterName;\n } else if (params) {\n name += \" \";\n }\n if (node2.nodes) {\n this.block(node2, name + params);\n } else {\n let end = (node2.raws.between || \"\") + (semicolon ? \";\" : \"\");\n this.builder(name + params + end, node2);\n }\n }\n beforeAfter(node2, detect) {\n let value;\n if (node2.type === \"decl\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (node2.type === \"comment\") {\n value = this.raw(node2, null, \"beforeComment\");\n } else if (detect === \"before\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else {\n value = this.raw(node2, null, \"beforeClose\");\n }\n let buf = node2.parent;\n let depth = 0;\n while (buf && buf.type !== \"root\") {\n depth += 1;\n buf = buf.parent;\n }\n if (value.includes(\"\\n\")) {\n let indent = this.raw(node2, null, \"indent\");\n if (indent.length) {\n for (let step = 0; step < depth; step++) value += indent;\n }\n }\n return value;\n }\n block(node2, start) {\n let between = this.raw(node2, \"between\", \"beforeOpen\");\n this.builder(start + between + \"{\", node2, \"start\");\n let after;\n if (node2.nodes && node2.nodes.length) {\n this.body(node2);\n after = this.raw(node2, \"after\");\n } else {\n after = this.raw(node2, \"after\", \"emptyBody\");\n }\n if (after) this.builder(after);\n this.builder(\"}\", node2, \"end\");\n }\n body(node2) {\n let last = node2.nodes.length - 1;\n while (last > 0) {\n if (node2.nodes[last].type !== \"comment\") break;\n last -= 1;\n }\n let semicolon = this.raw(node2, \"semicolon\");\n for (let i2 = 0; i2 < node2.nodes.length; i2++) {\n let child = node2.nodes[i2];\n let before = this.raw(child, \"before\");\n if (before) this.builder(before);\n this.stringify(child, last !== i2 || semicolon);\n }\n }\n comment(node2) {\n let left = this.raw(node2, \"left\", \"commentLeft\");\n let right = this.raw(node2, \"right\", \"commentRight\");\n this.builder(\"/*\" + left + node2.text + right + \"*/\", node2);\n }\n decl(node2, semicolon) {\n let between = this.raw(node2, \"between\", \"colon\");\n let string = node2.prop + between + this.rawValue(node2, \"value\");\n if (node2.important) {\n string += node2.raws.important || \" !important\";\n }\n if (semicolon) string += \";\";\n this.builder(string, node2);\n }\n document(node2) {\n this.body(node2);\n }\n raw(node2, own, detect) {\n let value;\n if (!detect) detect = own;\n if (own) {\n value = node2.raws[own];\n if (typeof value !== \"undefined\") return value;\n }\n let parent = node2.parent;\n if (detect === \"before\") {\n if (!parent || parent.type === \"root\" && parent.first === node2) {\n return \"\";\n }\n if (parent && parent.type === \"document\") {\n return \"\";\n }\n }\n if (!parent) return DEFAULT_RAW$1[detect];\n let root2 = node2.root();\n if (!root2.rawCache) root2.rawCache = {};\n if (typeof root2.rawCache[detect] !== \"undefined\") {\n return root2.rawCache[detect];\n }\n if (detect === \"before\" || detect === \"after\") {\n return this.beforeAfter(node2, detect);\n } else {\n let method = \"raw\" + capitalize$1(detect);\n if (this[method]) {\n value = this[method](root2, node2);\n } else {\n root2.walk((i2) => {\n value = i2.raws[own];\n if (typeof value !== \"undefined\") return false;\n });\n }\n }\n if (typeof value === \"undefined\") value = DEFAULT_RAW$1[detect];\n root2.rawCache[detect] = value;\n return value;\n }\n rawBeforeClose(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length > 0) {\n if (typeof i2.raws.after !== \"undefined\") {\n value = i2.raws.after;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawBeforeComment(root2, node2) {\n let value;\n root2.walkComments((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeDecl(root2, node2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeOpen(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.type !== \"decl\") {\n value = i2.raws.between;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawBeforeRule(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && (i2.parent !== root2 || root2.first !== i2)) {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawColon(root2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.between !== \"undefined\") {\n value = i2.raws.between.replace(/[^\\s:]/g, \"\");\n return false;\n }\n });\n return value;\n }\n rawEmptyBody(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length === 0) {\n value = i2.raws.after;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawIndent(root2) {\n if (root2.raws.indent) return root2.raws.indent;\n let value;\n root2.walk((i2) => {\n let p = i2.parent;\n if (p && p !== root2 && p.parent && p.parent === root2) {\n if (typeof i2.raws.before !== \"undefined\") {\n let parts = i2.raws.before.split(\"\\n\");\n value = parts[parts.length - 1];\n value = value.replace(/\\S/g, \"\");\n return false;\n }\n }\n });\n return value;\n }\n rawSemicolon(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length && i2.last.type === \"decl\") {\n value = i2.raws.semicolon;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawValue(node2, prop) {\n let value = node2[prop];\n let raw = node2.raws[prop];\n if (raw && raw.value === value) {\n return raw.raw;\n }\n return value;\n }\n root(node2) {\n this.body(node2);\n if (node2.raws.after) this.builder(node2.raws.after);\n }\n rule(node2) {\n this.block(node2, this.rawValue(node2, \"selector\"));\n if (node2.raws.ownSemicolon) {\n this.builder(node2.raws.ownSemicolon, node2, \"end\");\n }\n }\n stringify(node2, semicolon) {\n if (!this[node2.type]) {\n throw new Error(\n \"Unknown AST node type \" + node2.type + \". Maybe you need to change PostCSS stringifier.\"\n );\n }\n this[node2.type](node2, semicolon);\n }\n};\nvar stringifier$1 = Stringifier$2$1;\nStringifier$2$1.default = Stringifier$2$1;\nlet Stringifier$1$1 = stringifier$1;\nfunction stringify$4$1(node2, builder) {\n let str = new Stringifier$1$1(builder);\n str.stringify(node2);\n}\nvar stringify_1$1 = stringify$4$1;\nstringify$4$1.default = stringify$4$1;\nlet { isClean: isClean$2$1, my: my$2$1 } = symbols$1;\nlet CssSyntaxError$2$1 = cssSyntaxError$1;\nlet Stringifier2$1 = stringifier$1;\nlet stringify$3$1 = stringify_1$1;\nfunction cloneNode$1(obj, parent) {\n let cloned = new obj.constructor();\n for (let i2 in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, i2)) {\n continue;\n }\n if (i2 === \"proxyCache\") continue;\n let value = obj[i2];\n let type = typeof value;\n if (i2 === \"parent\" && type === \"object\") {\n if (parent) cloned[i2] = parent;\n } else if (i2 === \"source\") {\n cloned[i2] = value;\n } else if (Array.isArray(value)) {\n cloned[i2] = value.map((j) => cloneNode$1(j, cloned));\n } else {\n if (type === \"object\" && value !== null) value = cloneNode$1(value);\n cloned[i2] = value;\n }\n }\n return cloned;\n}\nlet Node$4$1 = class Node2 {\n constructor(defaults = {}) {\n this.raws = {};\n this[isClean$2$1] = false;\n this[my$2$1] = true;\n for (let name in defaults) {\n if (name === \"nodes\") {\n this.nodes = [];\n for (let node2 of defaults[name]) {\n if (typeof node2.clone === \"function\") {\n this.append(node2.clone());\n } else {\n this.append(node2);\n }\n }\n } else {\n this[name] = defaults[name];\n }\n }\n }\n addToError(error) {\n error.postcssNode = this;\n if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n let s2 = this.source;\n error.stack = error.stack.replace(\n /\\n\\s{4}at /,\n `$&${s2.input.from}:${s2.start.line}:${s2.start.column}$&`\n );\n }\n return error;\n }\n after(add) {\n this.parent.insertAfter(this, add);\n return this;\n }\n assign(overrides = {}) {\n for (let name in overrides) {\n this[name] = overrides[name];\n }\n return this;\n }\n before(add) {\n this.parent.insertBefore(this, add);\n return this;\n }\n cleanRaws(keepBetween) {\n delete this.raws.before;\n delete this.raws.after;\n if (!keepBetween) delete this.raws.between;\n }\n clone(overrides = {}) {\n let cloned = cloneNode$1(this);\n for (let name in overrides) {\n cloned[name] = overrides[name];\n }\n return cloned;\n }\n cloneAfter(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertAfter(this, cloned);\n return cloned;\n }\n cloneBefore(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertBefore(this, cloned);\n return cloned;\n }\n error(message, opts = {}) {\n if (this.source) {\n let { end, start } = this.rangeBy(opts);\n return this.source.input.error(\n message,\n { column: start.column, line: start.line },\n { column: end.column, line: end.line },\n opts\n );\n }\n return new CssSyntaxError$2$1(message);\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"prop\" || prop === \"value\" || prop === \"name\" || prop === \"params\" || prop === \"important\" || /* c8 ignore next */\n prop === \"text\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n markDirty() {\n if (this[isClean$2$1]) {\n this[isClean$2$1] = false;\n let next = this;\n while (next = next.parent) {\n next[isClean$2$1] = false;\n }\n }\n }\n next() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 + 1];\n }\n positionBy(opts, stringRepresentation) {\n let pos = this.source.start;\n if (opts.index) {\n pos = this.positionInside(opts.index, stringRepresentation);\n } else if (opts.word) {\n stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) pos = this.positionInside(index2, stringRepresentation);\n }\n return pos;\n }\n positionInside(index2, stringRepresentation) {\n let string = stringRepresentation || this.toString();\n let column = this.source.start.column;\n let line = this.source.start.line;\n for (let i2 = 0; i2 < index2; i2++) {\n if (string[i2] === \"\\n\") {\n column = 1;\n line += 1;\n } else {\n column += 1;\n }\n }\n return { column, line };\n }\n prev() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 - 1];\n }\n rangeBy(opts) {\n let start = {\n column: this.source.start.column,\n line: this.source.start.line\n };\n let end = this.source.end ? {\n column: this.source.end.column + 1,\n line: this.source.end.line\n } : {\n column: start.column + 1,\n line: start.line\n };\n if (opts.word) {\n let stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) {\n start = this.positionInside(index2, stringRepresentation);\n end = this.positionInside(index2 + opts.word.length, stringRepresentation);\n }\n } else {\n if (opts.start) {\n start = {\n column: opts.start.column,\n line: opts.start.line\n };\n } else if (opts.index) {\n start = this.positionInside(opts.index);\n }\n if (opts.end) {\n end = {\n column: opts.end.column,\n line: opts.end.line\n };\n } else if (typeof opts.endIndex === \"number\") {\n end = this.positionInside(opts.endIndex);\n } else if (opts.index) {\n end = this.positionInside(opts.index + 1);\n }\n }\n if (end.line < start.line || end.line === start.line && end.column <= start.column) {\n end = { column: start.column + 1, line: start.line };\n }\n return { end, start };\n }\n raw(prop, defaultType) {\n let str = new Stringifier2$1();\n return str.raw(this, prop, defaultType);\n }\n remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n this.parent = void 0;\n return this;\n }\n replaceWith(...nodes) {\n if (this.parent) {\n let bookmark = this;\n let foundSelf = false;\n for (let node2 of nodes) {\n if (node2 === this) {\n foundSelf = true;\n } else if (foundSelf) {\n this.parent.insertAfter(bookmark, node2);\n bookmark = node2;\n } else {\n this.parent.insertBefore(bookmark, node2);\n }\n }\n if (!foundSelf) {\n this.remove();\n }\n }\n return this;\n }\n root() {\n let result2 = this;\n while (result2.parent && result2.parent.type !== \"document\") {\n result2 = result2.parent;\n }\n return result2;\n }\n toJSON(_, inputs) {\n let fixed = {};\n let emitInputs = inputs == null;\n inputs = inputs || /* @__PURE__ */ new Map();\n let inputsNextIndex = 0;\n for (let name in this) {\n if (!Object.prototype.hasOwnProperty.call(this, name)) {\n continue;\n }\n if (name === \"parent\" || name === \"proxyCache\") continue;\n let value = this[name];\n if (Array.isArray(value)) {\n fixed[name] = value.map((i2) => {\n if (typeof i2 === \"object\" && i2.toJSON) {\n return i2.toJSON(null, inputs);\n } else {\n return i2;\n }\n });\n } else if (typeof value === \"object\" && value.toJSON) {\n fixed[name] = value.toJSON(null, inputs);\n } else if (name === \"source\") {\n let inputId = inputs.get(value.input);\n if (inputId == null) {\n inputId = inputsNextIndex;\n inputs.set(value.input, inputsNextIndex);\n inputsNextIndex++;\n }\n fixed[name] = {\n end: value.end,\n inputId,\n start: value.start\n };\n } else {\n fixed[name] = value;\n }\n }\n if (emitInputs) {\n fixed.inputs = [...inputs.keys()].map((input2) => input2.toJSON());\n }\n return fixed;\n }\n toProxy() {\n if (!this.proxyCache) {\n this.proxyCache = new Proxy(this, this.getProxyProcessor());\n }\n return this.proxyCache;\n }\n toString(stringifier2 = stringify$3$1) {\n if (stringifier2.stringify) stringifier2 = stringifier2.stringify;\n let result2 = \"\";\n stringifier2(this, (i2) => {\n result2 += i2;\n });\n return result2;\n }\n warn(result2, text, opts) {\n let data = { node: this };\n for (let i2 in opts) data[i2] = opts[i2];\n return result2.warn(text, data);\n }\n get proxyOf() {\n return this;\n }\n};\nvar node$1 = Node$4$1;\nNode$4$1.default = Node$4$1;\nlet Node$3$1 = node$1;\nlet Declaration$4$1 = class Declaration extends Node$3$1 {\n constructor(defaults) {\n if (defaults && typeof defaults.value !== \"undefined\" && typeof defaults.value !== \"string\") {\n defaults = { ...defaults, value: String(defaults.value) };\n }\n super(defaults);\n this.type = \"decl\";\n }\n get variable() {\n return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n }\n};\nvar declaration$1 = Declaration$4$1;\nDeclaration$4$1.default = Declaration$4$1;\nlet urlAlphabet$1 = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\nlet customAlphabet$1 = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = \"\";\n let i2 = size;\n while (i2--) {\n id += alphabet[Math.random() * alphabet.length | 0];\n }\n return id;\n };\n};\nlet nanoid$1$1 = (size = 21) => {\n let id = \"\";\n let i2 = size;\n while (i2--) {\n id += urlAlphabet$1[Math.random() * 64 | 0];\n }\n return id;\n};\nvar nonSecure$1 = { nanoid: nanoid$1$1, customAlphabet: customAlphabet$1 };\nlet { SourceMapConsumer: SourceMapConsumer$2$1, SourceMapGenerator: SourceMapGenerator$2$1 } = require$$2$1;\nlet { existsSync: existsSync$1, readFileSync: readFileSync$1 } = require$$2$1;\nlet { dirname: dirname$1$1, join: join$1 } = require$$2$1;\nfunction fromBase64$1(str) {\n if (Buffer) {\n return Buffer.from(str, \"base64\").toString();\n } else {\n return window.atob(str);\n }\n}\nlet PreviousMap$2$1 = class PreviousMap {\n constructor(css, opts) {\n if (opts.map === false) return;\n this.loadAnnotation(css);\n this.inline = this.startWith(this.annotation, \"data:\");\n let prev = opts.map ? opts.map.prev : void 0;\n let text = this.loadMap(opts.from, prev);\n if (!this.mapFile && opts.from) {\n this.mapFile = opts.from;\n }\n if (this.mapFile) this.root = dirname$1$1(this.mapFile);\n if (text) this.text = text;\n }\n consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new SourceMapConsumer$2$1(this.text);\n }\n return this.consumerCache;\n }\n decodeInline(text) {\n let baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/;\n let baseUri = /^data:application\\/json;base64,/;\n let charsetUri = /^data:application\\/json;charset=utf-?8,/;\n let uri = /^data:application\\/json,/;\n if (charsetUri.test(text) || uri.test(text)) {\n return decodeURIComponent(text.substr(RegExp.lastMatch.length));\n }\n if (baseCharsetUri.test(text) || baseUri.test(text)) {\n return fromBase64$1(text.substr(RegExp.lastMatch.length));\n }\n let encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n throw new Error(\"Unsupported source map encoding \" + encoding);\n }\n getAnnotationURL(sourceMapString) {\n return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n }\n isMap(map) {\n if (typeof map !== \"object\") return false;\n return typeof map.mappings === \"string\" || typeof map._mappings === \"string\" || Array.isArray(map.sections);\n }\n loadAnnotation(css) {\n let comments = css.match(/\\/\\*\\s*# sourceMappingURL=/gm);\n if (!comments) return;\n let start = css.lastIndexOf(comments.pop());\n let end = css.indexOf(\"*/\", start);\n if (start > -1 && end > -1) {\n this.annotation = this.getAnnotationURL(css.substring(start, end));\n }\n }\n loadFile(path) {\n this.root = dirname$1$1(path);\n if (existsSync$1(path)) {\n this.mapFile = path;\n return readFileSync$1(path, \"utf-8\").toString().trim();\n }\n }\n loadMap(file, prev) {\n if (prev === false) return false;\n if (prev) {\n if (typeof prev === \"string\") {\n return prev;\n } else if (typeof prev === \"function\") {\n let prevPath = prev(file);\n if (prevPath) {\n let map = this.loadFile(prevPath);\n if (!map) {\n throw new Error(\n \"Unable to load previous source map: \" + prevPath.toString()\n );\n }\n return map;\n }\n } else if (prev instanceof SourceMapConsumer$2$1) {\n return SourceMapGenerator$2$1.fromSourceMap(prev).toString();\n } else if (prev instanceof SourceMapGenerator$2$1) {\n return prev.toString();\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev);\n } else {\n throw new Error(\n \"Unsupported previous source map format: \" + prev.toString()\n );\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation);\n } else if (this.annotation) {\n let map = this.annotation;\n if (file) map = join$1(dirname$1$1(file), map);\n return this.loadFile(map);\n }\n }\n startWith(string, start) {\n if (!string) return false;\n return string.substr(0, start.length) === start;\n }\n withContent() {\n return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n }\n};\nvar previousMap$1 = PreviousMap$2$1;\nPreviousMap$2$1.default = PreviousMap$2$1;\nlet { SourceMapConsumer: SourceMapConsumer$1$1, SourceMapGenerator: SourceMapGenerator$1$1 } = require$$2$1;\nlet { fileURLToPath: fileURLToPath$1, pathToFileURL: pathToFileURL$1$1 } = require$$2$1;\nlet { isAbsolute: isAbsolute$1, resolve: resolve$1$1 } = require$$2$1;\nlet { nanoid: nanoid$2 } = nonSecure$1;\nlet terminalHighlight$2 = require$$2$1;\nlet CssSyntaxError$1$1 = cssSyntaxError$1;\nlet PreviousMap$1$1 = previousMap$1;\nlet fromOffsetCache$1 = Symbol(\"fromOffsetCache\");\nlet sourceMapAvailable$1$1 = Boolean(SourceMapConsumer$1$1 && SourceMapGenerator$1$1);\nlet pathAvailable$1$1 = Boolean(resolve$1$1 && isAbsolute$1);\nlet Input$4$1 = class Input {\n constructor(css, opts = {}) {\n if (css === null || typeof css === \"undefined\" || typeof css === \"object\" && !css.toString) {\n throw new Error(`PostCSS received ${css} instead of CSS string`);\n }\n this.css = css.toString();\n if (this.css[0] === \"\\uFEFF\" || this.css[0] === \"￾\") {\n this.hasBOM = true;\n this.css = this.css.slice(1);\n } else {\n this.hasBOM = false;\n }\n if (opts.from) {\n if (!pathAvailable$1$1 || /^\\w+:\\/\\//.test(opts.from) || isAbsolute$1(opts.from)) {\n this.file = opts.from;\n } else {\n this.file = resolve$1$1(opts.from);\n }\n }\n if (pathAvailable$1$1 && sourceMapAvailable$1$1) {\n let map = new PreviousMap$1$1(this.css, opts);\n if (map.text) {\n this.map = map;\n let file = map.consumer().file;\n if (!this.file && file) this.file = this.mapResolve(file);\n }\n }\n if (!this.file) {\n this.id = \"\";\n }\n if (this.map) this.map.file = this.from;\n }\n error(message, line, column, opts = {}) {\n let result2, endLine, endColumn;\n if (line && typeof line === \"object\") {\n let start = line;\n let end = column;\n if (typeof start.offset === \"number\") {\n let pos = this.fromOffset(start.offset);\n line = pos.line;\n column = pos.col;\n } else {\n line = start.line;\n column = start.column;\n }\n if (typeof end.offset === \"number\") {\n let pos = this.fromOffset(end.offset);\n endLine = pos.line;\n endColumn = pos.col;\n } else {\n endLine = end.line;\n endColumn = end.column;\n }\n } else if (!column) {\n let pos = this.fromOffset(line);\n line = pos.line;\n column = pos.col;\n }\n let origin = this.origin(line, column, endLine, endColumn);\n if (origin) {\n result2 = new CssSyntaxError$1$1(\n message,\n origin.endLine === void 0 ? origin.line : { column: origin.column, line: origin.line },\n origin.endLine === void 0 ? origin.column : { column: origin.endColumn, line: origin.endLine },\n origin.source,\n origin.file,\n opts.plugin\n );\n } else {\n result2 = new CssSyntaxError$1$1(\n message,\n endLine === void 0 ? line : { column, line },\n endLine === void 0 ? column : { column: endColumn, line: endLine },\n this.css,\n this.file,\n opts.plugin\n );\n }\n result2.input = { column, endColumn, endLine, line, source: this.css };\n if (this.file) {\n if (pathToFileURL$1$1) {\n result2.input.url = pathToFileURL$1$1(this.file).toString();\n }\n result2.input.file = this.file;\n }\n return result2;\n }\n fromOffset(offset) {\n let lastLine, lineToIndex;\n if (!this[fromOffsetCache$1]) {\n let lines = this.css.split(\"\\n\");\n lineToIndex = new Array(lines.length);\n let prevIndex = 0;\n for (let i2 = 0, l2 = lines.length; i2 < l2; i2++) {\n lineToIndex[i2] = prevIndex;\n prevIndex += lines[i2].length + 1;\n }\n this[fromOffsetCache$1] = lineToIndex;\n } else {\n lineToIndex = this[fromOffsetCache$1];\n }\n lastLine = lineToIndex[lineToIndex.length - 1];\n let min = 0;\n if (offset >= lastLine) {\n min = lineToIndex.length - 1;\n } else {\n let max = lineToIndex.length - 2;\n let mid;\n while (min < max) {\n mid = min + (max - min >> 1);\n if (offset < lineToIndex[mid]) {\n max = mid - 1;\n } else if (offset >= lineToIndex[mid + 1]) {\n min = mid + 1;\n } else {\n min = mid;\n break;\n }\n }\n }\n return {\n col: offset - lineToIndex[min] + 1,\n line: min + 1\n };\n }\n mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file;\n }\n return resolve$1$1(this.map.consumer().sourceRoot || this.map.root || \".\", file);\n }\n origin(line, column, endLine, endColumn) {\n if (!this.map) return false;\n let consumer = this.map.consumer();\n let from = consumer.originalPositionFor({ column, line });\n if (!from.source) return false;\n let to;\n if (typeof endLine === \"number\") {\n to = consumer.originalPositionFor({ column: endColumn, line: endLine });\n }\n let fromUrl;\n if (isAbsolute$1(from.source)) {\n fromUrl = pathToFileURL$1$1(from.source);\n } else {\n fromUrl = new URL(\n from.source,\n this.map.consumer().sourceRoot || pathToFileURL$1$1(this.map.mapFile)\n );\n }\n let result2 = {\n column: from.column,\n endColumn: to && to.column,\n endLine: to && to.line,\n line: from.line,\n url: fromUrl.toString()\n };\n if (fromUrl.protocol === \"file:\") {\n if (fileURLToPath$1) {\n result2.file = fileURLToPath$1(fromUrl);\n } else {\n throw new Error(`file: protocol is not available in this PostCSS build`);\n }\n }\n let source = consumer.sourceContentFor(from.source);\n if (source) result2.source = source;\n return result2;\n }\n toJSON() {\n let json = {};\n for (let name of [\"hasBOM\", \"css\", \"file\", \"id\"]) {\n if (this[name] != null) {\n json[name] = this[name];\n }\n }\n if (this.map) {\n json.map = { ...this.map };\n if (json.map.consumerCache) {\n json.map.consumerCache = void 0;\n }\n }\n return json;\n }\n get from() {\n return this.file || this.id;\n }\n};\nvar input$1 = Input$4$1;\nInput$4$1.default = Input$4$1;\nif (terminalHighlight$2 && terminalHighlight$2.registerInput) {\n terminalHighlight$2.registerInput(Input$4$1);\n}\nlet { SourceMapConsumer: SourceMapConsumer$3, SourceMapGenerator: SourceMapGenerator$3 } = require$$2$1;\nlet { dirname: dirname$2, relative: relative$1, resolve: resolve$2, sep: sep$1 } = require$$2$1;\nlet { pathToFileURL: pathToFileURL$2 } = require$$2$1;\nlet Input$3$1 = input$1;\nlet sourceMapAvailable$2 = Boolean(SourceMapConsumer$3 && SourceMapGenerator$3);\nlet pathAvailable$2 = Boolean(dirname$2 && resolve$2 && relative$1 && sep$1);\nlet MapGenerator$2$1 = class MapGenerator {\n constructor(stringify2, root2, opts, cssString) {\n this.stringify = stringify2;\n this.mapOpts = opts.map || {};\n this.root = root2;\n this.opts = opts;\n this.css = cssString;\n this.originalCSS = cssString;\n this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute;\n this.memoizedFileURLs = /* @__PURE__ */ new Map();\n this.memoizedPaths = /* @__PURE__ */ new Map();\n this.memoizedURLs = /* @__PURE__ */ new Map();\n }\n addAnnotation() {\n let content;\n if (this.isInline()) {\n content = \"data:application/json;base64,\" + this.toBase64(this.map.toString());\n } else if (typeof this.mapOpts.annotation === \"string\") {\n content = this.mapOpts.annotation;\n } else if (typeof this.mapOpts.annotation === \"function\") {\n content = this.mapOpts.annotation(this.opts.to, this.root);\n } else {\n content = this.outputFile() + \".map\";\n }\n let eol = \"\\n\";\n if (this.css.includes(\"\\r\\n\")) eol = \"\\r\\n\";\n this.css += eol + \"/*# sourceMappingURL=\" + content + \" */\";\n }\n applyPrevMaps() {\n for (let prev of this.previous()) {\n let from = this.toUrl(this.path(prev.file));\n let root2 = prev.root || dirname$2(prev.file);\n let map;\n if (this.mapOpts.sourcesContent === false) {\n map = new SourceMapConsumer$3(prev.text);\n if (map.sourcesContent) {\n map.sourcesContent = null;\n }\n } else {\n map = prev.consumer();\n }\n this.map.applySourceMap(map, from, this.toUrl(this.path(root2)));\n }\n }\n clearAnnotation() {\n if (this.mapOpts.annotation === false) return;\n if (this.root) {\n let node2;\n for (let i2 = this.root.nodes.length - 1; i2 >= 0; i2--) {\n node2 = this.root.nodes[i2];\n if (node2.type !== \"comment\") continue;\n if (node2.text.indexOf(\"# sourceMappingURL=\") === 0) {\n this.root.removeChild(i2);\n }\n }\n } else if (this.css) {\n this.css = this.css.replace(/\\n*?\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\");\n }\n }\n generate() {\n this.clearAnnotation();\n if (pathAvailable$2 && sourceMapAvailable$2 && this.isMap()) {\n return this.generateMap();\n } else {\n let result2 = \"\";\n this.stringify(this.root, (i2) => {\n result2 += i2;\n });\n return [result2];\n }\n }\n generateMap() {\n if (this.root) {\n this.generateString();\n } else if (this.previous().length === 1) {\n let prev = this.previous()[0].consumer();\n prev.file = this.outputFile();\n this.map = SourceMapGenerator$3.fromSourceMap(prev, {\n ignoreInvalidMapping: true\n });\n } else {\n this.map = new SourceMapGenerator$3({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n this.map.addMapping({\n generated: { column: 0, line: 1 },\n original: { column: 0, line: 1 },\n source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\"\n });\n }\n if (this.isSourcesContent()) this.setSourcesContent();\n if (this.root && this.previous().length > 0) this.applyPrevMaps();\n if (this.isAnnotation()) this.addAnnotation();\n if (this.isInline()) {\n return [this.css];\n } else {\n return [this.css, this.map];\n }\n }\n generateString() {\n this.css = \"\";\n this.map = new SourceMapGenerator$3({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n let line = 1;\n let column = 1;\n let noSource = \"\";\n let mapping = {\n generated: { column: 0, line: 0 },\n original: { column: 0, line: 0 },\n source: \"\"\n };\n let lines, last;\n this.stringify(this.root, (str, node2, type) => {\n this.css += str;\n if (node2 && type !== \"end\") {\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n if (node2.source && node2.source.start) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.start.line;\n mapping.original.column = node2.source.start.column - 1;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n this.map.addMapping(mapping);\n }\n }\n lines = str.match(/\\n/g);\n if (lines) {\n line += lines.length;\n last = str.lastIndexOf(\"\\n\");\n column = str.length - last;\n } else {\n column += str.length;\n }\n if (node2 && type !== \"start\") {\n let p = node2.parent || { raws: {} };\n let childless = node2.type === \"decl\" || node2.type === \"atrule\" && !node2.nodes;\n if (!childless || node2 !== p.last || p.raws.semicolon) {\n if (node2.source && node2.source.end) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.end.line;\n mapping.original.column = node2.source.end.column - 1;\n mapping.generated.line = line;\n mapping.generated.column = column - 2;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n this.map.addMapping(mapping);\n }\n }\n }\n });\n }\n isAnnotation() {\n if (this.isInline()) {\n return true;\n }\n if (typeof this.mapOpts.annotation !== \"undefined\") {\n return this.mapOpts.annotation;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.annotation);\n }\n return true;\n }\n isInline() {\n if (typeof this.mapOpts.inline !== \"undefined\") {\n return this.mapOpts.inline;\n }\n let annotation = this.mapOpts.annotation;\n if (typeof annotation !== \"undefined\" && annotation !== true) {\n return false;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.inline);\n }\n return true;\n }\n isMap() {\n if (typeof this.opts.map !== \"undefined\") {\n return !!this.opts.map;\n }\n return this.previous().length > 0;\n }\n isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== \"undefined\") {\n return this.mapOpts.sourcesContent;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.withContent());\n }\n return true;\n }\n outputFile() {\n if (this.opts.to) {\n return this.path(this.opts.to);\n } else if (this.opts.from) {\n return this.path(this.opts.from);\n } else {\n return \"to.css\";\n }\n }\n path(file) {\n if (this.mapOpts.absolute) return file;\n if (file.charCodeAt(0) === 60) return file;\n if (/^\\w+:\\/\\//.test(file)) return file;\n let cached = this.memoizedPaths.get(file);\n if (cached) return cached;\n let from = this.opts.to ? dirname$2(this.opts.to) : \".\";\n if (typeof this.mapOpts.annotation === \"string\") {\n from = dirname$2(resolve$2(from, this.mapOpts.annotation));\n }\n let path = relative$1(from, file);\n this.memoizedPaths.set(file, path);\n return path;\n }\n previous() {\n if (!this.previousMaps) {\n this.previousMaps = [];\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source && node2.source.input.map) {\n let map = node2.source.input.map;\n if (!this.previousMaps.includes(map)) {\n this.previousMaps.push(map);\n }\n }\n });\n } else {\n let input2 = new Input$3$1(this.originalCSS, this.opts);\n if (input2.map) this.previousMaps.push(input2.map);\n }\n }\n return this.previousMaps;\n }\n setSourcesContent() {\n let already = {};\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source) {\n let from = node2.source.input.from;\n if (from && !already[from]) {\n already[from] = true;\n let fromUrl = this.usesFileUrls ? this.toFileUrl(from) : this.toUrl(this.path(from));\n this.map.setSourceContent(fromUrl, node2.source.input.css);\n }\n }\n });\n } else if (this.css) {\n let from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\";\n this.map.setSourceContent(from, this.css);\n }\n }\n sourcePath(node2) {\n if (this.mapOpts.from) {\n return this.toUrl(this.mapOpts.from);\n } else if (this.usesFileUrls) {\n return this.toFileUrl(node2.source.input.from);\n } else {\n return this.toUrl(this.path(node2.source.input.from));\n }\n }\n toBase64(str) {\n if (Buffer) {\n return Buffer.from(str).toString(\"base64\");\n } else {\n return window.btoa(unescape(encodeURIComponent(str)));\n }\n }\n toFileUrl(path) {\n let cached = this.memoizedFileURLs.get(path);\n if (cached) return cached;\n if (pathToFileURL$2) {\n let fileURL = pathToFileURL$2(path).toString();\n this.memoizedFileURLs.set(path, fileURL);\n return fileURL;\n } else {\n throw new Error(\n \"`map.absolute` option is not available in this PostCSS build\"\n );\n }\n }\n toUrl(path) {\n let cached = this.memoizedURLs.get(path);\n if (cached) return cached;\n if (sep$1 === \"\\\\\") {\n path = path.replace(/\\\\/g, \"/\");\n }\n let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent);\n this.memoizedURLs.set(path, url);\n return url;\n }\n};\nvar mapGenerator$1 = MapGenerator$2$1;\nlet Node$2$1 = node$1;\nlet Comment$4$1 = class Comment extends Node$2$1 {\n constructor(defaults) {\n super(defaults);\n this.type = \"comment\";\n }\n};\nvar comment$1 = Comment$4$1;\nComment$4$1.default = Comment$4$1;\nlet { isClean: isClean$1$1, my: my$1$1 } = symbols$1;\nlet Declaration$3$1 = declaration$1;\nlet Comment$3$1 = comment$1;\nlet Node$1$1 = node$1;\nlet parse$4$1, Rule$4$1, AtRule$4$1, Root$6$1;\nfunction cleanSource$1(nodes) {\n return nodes.map((i2) => {\n if (i2.nodes) i2.nodes = cleanSource$1(i2.nodes);\n delete i2.source;\n return i2;\n });\n}\nfunction markDirtyUp$1(node2) {\n node2[isClean$1$1] = false;\n if (node2.proxyOf.nodes) {\n for (let i2 of node2.proxyOf.nodes) {\n markDirtyUp$1(i2);\n }\n }\n}\nlet Container$7$1 = class Container extends Node$1$1 {\n append(...children) {\n for (let child of children) {\n let nodes = this.normalize(child, this.last);\n for (let node2 of nodes) this.proxyOf.nodes.push(node2);\n }\n this.markDirty();\n return this;\n }\n cleanRaws(keepBetween) {\n super.cleanRaws(keepBetween);\n if (this.nodes) {\n for (let node2 of this.nodes) node2.cleanRaws(keepBetween);\n }\n }\n each(callback) {\n if (!this.proxyOf.nodes) return void 0;\n let iterator = this.getIterator();\n let index2, result2;\n while (this.indexes[iterator] < this.proxyOf.nodes.length) {\n index2 = this.indexes[iterator];\n result2 = callback(this.proxyOf.nodes[index2], index2);\n if (result2 === false) break;\n this.indexes[iterator] += 1;\n }\n delete this.indexes[iterator];\n return result2;\n }\n every(condition) {\n return this.nodes.every(condition);\n }\n getIterator() {\n if (!this.lastEach) this.lastEach = 0;\n if (!this.indexes) this.indexes = {};\n this.lastEach += 1;\n let iterator = this.lastEach;\n this.indexes[iterator] = 0;\n return iterator;\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (!node2[prop]) {\n return node2[prop];\n } else if (prop === \"each\" || typeof prop === \"string\" && prop.startsWith(\"walk\")) {\n return (...args) => {\n return node2[prop](\n ...args.map((i2) => {\n if (typeof i2 === \"function\") {\n return (child, index2) => i2(child.toProxy(), index2);\n } else {\n return i2;\n }\n })\n );\n };\n } else if (prop === \"every\" || prop === \"some\") {\n return (cb) => {\n return node2[prop](\n (child, ...other) => cb(child.toProxy(), ...other)\n );\n };\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else if (prop === \"nodes\") {\n return node2.nodes.map((i2) => i2.toProxy());\n } else if (prop === \"first\" || prop === \"last\") {\n return node2[prop].toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"name\" || prop === \"params\" || prop === \"selector\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n index(child) {\n if (typeof child === \"number\") return child;\n if (child.proxyOf) child = child.proxyOf;\n return this.proxyOf.nodes.indexOf(child);\n }\n insertAfter(exist, add) {\n let existIndex = this.index(exist);\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex < index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n insertBefore(exist, add) {\n let existIndex = this.index(exist);\n let type = existIndex === 0 ? \"prepend\" : false;\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex <= index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n normalize(nodes, sample) {\n if (typeof nodes === \"string\") {\n nodes = cleanSource$1(parse$4$1(nodes).nodes);\n } else if (typeof nodes === \"undefined\") {\n nodes = [];\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type === \"root\" && this.type !== \"document\") {\n nodes = nodes.nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type) {\n nodes = [nodes];\n } else if (nodes.prop) {\n if (typeof nodes.value === \"undefined\") {\n throw new Error(\"Value field is missed in node creation\");\n } else if (typeof nodes.value !== \"string\") {\n nodes.value = String(nodes.value);\n }\n nodes = [new Declaration$3$1(nodes)];\n } else if (nodes.selector) {\n nodes = [new Rule$4$1(nodes)];\n } else if (nodes.name) {\n nodes = [new AtRule$4$1(nodes)];\n } else if (nodes.text) {\n nodes = [new Comment$3$1(nodes)];\n } else {\n throw new Error(\"Unknown node type in node creation\");\n }\n let processed = nodes.map((i2) => {\n if (!i2[my$1$1]) Container.rebuild(i2);\n i2 = i2.proxyOf;\n if (i2.parent) i2.parent.removeChild(i2);\n if (i2[isClean$1$1]) markDirtyUp$1(i2);\n if (typeof i2.raws.before === \"undefined\") {\n if (sample && typeof sample.raws.before !== \"undefined\") {\n i2.raws.before = sample.raws.before.replace(/\\S/g, \"\");\n }\n }\n i2.parent = this.proxyOf;\n return i2;\n });\n return processed;\n }\n prepend(...children) {\n children = children.reverse();\n for (let child of children) {\n let nodes = this.normalize(child, this.first, \"prepend\").reverse();\n for (let node2 of nodes) this.proxyOf.nodes.unshift(node2);\n for (let id in this.indexes) {\n this.indexes[id] = this.indexes[id] + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n push(child) {\n child.parent = this;\n this.proxyOf.nodes.push(child);\n return this;\n }\n removeAll() {\n for (let node2 of this.proxyOf.nodes) node2.parent = void 0;\n this.proxyOf.nodes = [];\n this.markDirty();\n return this;\n }\n removeChild(child) {\n child = this.index(child);\n this.proxyOf.nodes[child].parent = void 0;\n this.proxyOf.nodes.splice(child, 1);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (index2 >= child) {\n this.indexes[id] = index2 - 1;\n }\n }\n this.markDirty();\n return this;\n }\n replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {};\n }\n this.walkDecls((decl) => {\n if (opts.props && !opts.props.includes(decl.prop)) return;\n if (opts.fast && !decl.value.includes(opts.fast)) return;\n decl.value = decl.value.replace(pattern, callback);\n });\n this.markDirty();\n return this;\n }\n some(condition) {\n return this.nodes.some(condition);\n }\n walk(callback) {\n return this.each((child, i2) => {\n let result2;\n try {\n result2 = callback(child, i2);\n } catch (e2) {\n throw child.addToError(e2);\n }\n if (result2 !== false && child.walk) {\n result2 = child.walk(callback);\n }\n return result2;\n });\n }\n walkAtRules(name, callback) {\n if (!callback) {\n callback = name;\n return this.walk((child, i2) => {\n if (child.type === \"atrule\") {\n return callback(child, i2);\n }\n });\n }\n if (name instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && name.test(child.name)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && child.name === name) {\n return callback(child, i2);\n }\n });\n }\n walkComments(callback) {\n return this.walk((child, i2) => {\n if (child.type === \"comment\") {\n return callback(child, i2);\n }\n });\n }\n walkDecls(prop, callback) {\n if (!callback) {\n callback = prop;\n return this.walk((child, i2) => {\n if (child.type === \"decl\") {\n return callback(child, i2);\n }\n });\n }\n if (prop instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && prop.test(child.prop)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && child.prop === prop) {\n return callback(child, i2);\n }\n });\n }\n walkRules(selector, callback) {\n if (!callback) {\n callback = selector;\n return this.walk((child, i2) => {\n if (child.type === \"rule\") {\n return callback(child, i2);\n }\n });\n }\n if (selector instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && selector.test(child.selector)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && child.selector === selector) {\n return callback(child, i2);\n }\n });\n }\n get first() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[0];\n }\n get last() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n }\n};\nContainer$7$1.registerParse = (dependant) => {\n parse$4$1 = dependant;\n};\nContainer$7$1.registerRule = (dependant) => {\n Rule$4$1 = dependant;\n};\nContainer$7$1.registerAtRule = (dependant) => {\n AtRule$4$1 = dependant;\n};\nContainer$7$1.registerRoot = (dependant) => {\n Root$6$1 = dependant;\n};\nvar container$1 = Container$7$1;\nContainer$7$1.default = Container$7$1;\nContainer$7$1.rebuild = (node2) => {\n if (node2.type === \"atrule\") {\n Object.setPrototypeOf(node2, AtRule$4$1.prototype);\n } else if (node2.type === \"rule\") {\n Object.setPrototypeOf(node2, Rule$4$1.prototype);\n } else if (node2.type === \"decl\") {\n Object.setPrototypeOf(node2, Declaration$3$1.prototype);\n } else if (node2.type === \"comment\") {\n Object.setPrototypeOf(node2, Comment$3$1.prototype);\n } else if (node2.type === \"root\") {\n Object.setPrototypeOf(node2, Root$6$1.prototype);\n }\n node2[my$1$1] = true;\n if (node2.nodes) {\n node2.nodes.forEach((child) => {\n Container$7$1.rebuild(child);\n });\n }\n};\nlet Container$6$1 = container$1;\nlet LazyResult$4$1, Processor$3$1;\nlet Document$3$1 = class Document2 extends Container$6$1 {\n constructor(defaults) {\n super({ type: \"document\", ...defaults });\n if (!this.nodes) {\n this.nodes = [];\n }\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$4$1(new Processor$3$1(), this, opts);\n return lazy.stringify();\n }\n};\nDocument$3$1.registerLazyResult = (dependant) => {\n LazyResult$4$1 = dependant;\n};\nDocument$3$1.registerProcessor = (dependant) => {\n Processor$3$1 = dependant;\n};\nvar document$1$1 = Document$3$1;\nDocument$3$1.default = Document$3$1;\nlet printed$1 = {};\nvar warnOnce$2$1 = function warnOnce(message) {\n if (printed$1[message]) return;\n printed$1[message] = true;\n if (typeof console !== \"undefined\" && console.warn) {\n console.warn(message);\n }\n};\nlet Warning$2$1 = class Warning {\n constructor(text, opts = {}) {\n this.type = \"warning\";\n this.text = text;\n if (opts.node && opts.node.source) {\n let range = opts.node.rangeBy(opts);\n this.line = range.start.line;\n this.column = range.start.column;\n this.endLine = range.end.line;\n this.endColumn = range.end.column;\n }\n for (let opt in opts) this[opt] = opts[opt];\n }\n toString() {\n if (this.node) {\n return this.node.error(this.text, {\n index: this.index,\n plugin: this.plugin,\n word: this.word\n }).message;\n }\n if (this.plugin) {\n return this.plugin + \": \" + this.text;\n }\n return this.text;\n }\n};\nvar warning$1 = Warning$2$1;\nWarning$2$1.default = Warning$2$1;\nlet Warning$1$1 = warning$1;\nlet Result$3$1 = class Result {\n constructor(processor2, root2, opts) {\n this.processor = processor2;\n this.messages = [];\n this.root = root2;\n this.opts = opts;\n this.css = void 0;\n this.map = void 0;\n }\n toString() {\n return this.css;\n }\n warn(text, opts = {}) {\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin;\n }\n }\n let warning2 = new Warning$1$1(text, opts);\n this.messages.push(warning2);\n return warning2;\n }\n warnings() {\n return this.messages.filter((i2) => i2.type === \"warning\");\n }\n get content() {\n return this.css;\n }\n};\nvar result$1 = Result$3$1;\nResult$3$1.default = Result$3$1;\nconst SINGLE_QUOTE$1 = \"'\".charCodeAt(0);\nconst DOUBLE_QUOTE$1 = '\"'.charCodeAt(0);\nconst BACKSLASH$1 = \"\\\\\".charCodeAt(0);\nconst SLASH$1 = \"/\".charCodeAt(0);\nconst NEWLINE$1 = \"\\n\".charCodeAt(0);\nconst SPACE$1 = \" \".charCodeAt(0);\nconst FEED$1 = \"\\f\".charCodeAt(0);\nconst TAB$1 = \"\t\".charCodeAt(0);\nconst CR$1 = \"\\r\".charCodeAt(0);\nconst OPEN_SQUARE$1 = \"[\".charCodeAt(0);\nconst CLOSE_SQUARE$1 = \"]\".charCodeAt(0);\nconst OPEN_PARENTHESES$1 = \"(\".charCodeAt(0);\nconst CLOSE_PARENTHESES$1 = \")\".charCodeAt(0);\nconst OPEN_CURLY$1 = \"{\".charCodeAt(0);\nconst CLOSE_CURLY$1 = \"}\".charCodeAt(0);\nconst SEMICOLON$1 = \";\".charCodeAt(0);\nconst ASTERISK$1 = \"*\".charCodeAt(0);\nconst COLON$1 = \":\".charCodeAt(0);\nconst AT$1 = \"@\".charCodeAt(0);\nconst RE_AT_END$1 = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g;\nconst RE_WORD_END$1 = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g;\nconst RE_BAD_BRACKET$1 = /.[\\r\\n\"'(/\\\\]/;\nconst RE_HEX_ESCAPE$1 = /[\\da-f]/i;\nvar tokenize$1 = function tokenizer(input2, options = {}) {\n let css = input2.css.valueOf();\n let ignore = options.ignoreErrors;\n let code, next, quote, content, escape;\n let escaped, escapePos, prev, n2, currentToken;\n let length = css.length;\n let pos = 0;\n let buffer = [];\n let returned = [];\n function position() {\n return pos;\n }\n function unclosed(what) {\n throw input2.error(\"Unclosed \" + what, pos);\n }\n function endOfFile() {\n return returned.length === 0 && pos >= length;\n }\n function nextToken(opts) {\n if (returned.length) return returned.pop();\n if (pos >= length) return;\n let ignoreUnclosed = opts ? opts.ignoreUnclosed : false;\n code = css.charCodeAt(pos);\n switch (code) {\n case NEWLINE$1:\n case SPACE$1:\n case TAB$1:\n case CR$1:\n case FEED$1: {\n next = pos;\n do {\n next += 1;\n code = css.charCodeAt(next);\n } while (code === SPACE$1 || code === NEWLINE$1 || code === TAB$1 || code === CR$1 || code === FEED$1);\n currentToken = [\"space\", css.slice(pos, next)];\n pos = next - 1;\n break;\n }\n case OPEN_SQUARE$1:\n case CLOSE_SQUARE$1:\n case OPEN_CURLY$1:\n case CLOSE_CURLY$1:\n case COLON$1:\n case SEMICOLON$1:\n case CLOSE_PARENTHESES$1: {\n let controlChar = String.fromCharCode(code);\n currentToken = [controlChar, controlChar, pos];\n break;\n }\n case OPEN_PARENTHESES$1: {\n prev = buffer.length ? buffer.pop()[1] : \"\";\n n2 = css.charCodeAt(pos + 1);\n if (prev === \"url\" && n2 !== SINGLE_QUOTE$1 && n2 !== DOUBLE_QUOTE$1 && n2 !== SPACE$1 && n2 !== NEWLINE$1 && n2 !== TAB$1 && n2 !== FEED$1 && n2 !== CR$1) {\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(\")\", next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos;\n break;\n } else {\n unclosed(\"bracket\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH$1) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"brackets\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n next = css.indexOf(\")\", pos + 1);\n content = css.slice(pos, next + 1);\n if (next === -1 || RE_BAD_BRACKET$1.test(content)) {\n currentToken = [\"(\", \"(\", pos];\n } else {\n currentToken = [\"brackets\", content, pos, next];\n pos = next;\n }\n }\n break;\n }\n case SINGLE_QUOTE$1:\n case DOUBLE_QUOTE$1: {\n quote = code === SINGLE_QUOTE$1 ? \"'\" : '\"';\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(quote, next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos + 1;\n break;\n } else {\n unclosed(\"string\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH$1) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"string\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case AT$1: {\n RE_AT_END$1.lastIndex = pos + 1;\n RE_AT_END$1.test(css);\n if (RE_AT_END$1.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_AT_END$1.lastIndex - 2;\n }\n currentToken = [\"at-word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case BACKSLASH$1: {\n next = pos;\n escape = true;\n while (css.charCodeAt(next + 1) === BACKSLASH$1) {\n next += 1;\n escape = !escape;\n }\n code = css.charCodeAt(next + 1);\n if (escape && code !== SLASH$1 && code !== SPACE$1 && code !== NEWLINE$1 && code !== TAB$1 && code !== CR$1 && code !== FEED$1) {\n next += 1;\n if (RE_HEX_ESCAPE$1.test(css.charAt(next))) {\n while (RE_HEX_ESCAPE$1.test(css.charAt(next + 1))) {\n next += 1;\n }\n if (css.charCodeAt(next + 1) === SPACE$1) {\n next += 1;\n }\n }\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n default: {\n if (code === SLASH$1 && css.charCodeAt(pos + 1) === ASTERISK$1) {\n next = css.indexOf(\"*/\", pos + 2) + 1;\n if (next === 0) {\n if (ignore || ignoreUnclosed) {\n next = css.length;\n } else {\n unclosed(\"comment\");\n }\n }\n currentToken = [\"comment\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n RE_WORD_END$1.lastIndex = pos + 1;\n RE_WORD_END$1.test(css);\n if (RE_WORD_END$1.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_WORD_END$1.lastIndex - 2;\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n buffer.push(currentToken);\n pos = next;\n }\n break;\n }\n }\n pos++;\n return currentToken;\n }\n function back(token) {\n returned.push(token);\n }\n return {\n back,\n endOfFile,\n nextToken,\n position\n };\n};\nlet Container$5$1 = container$1;\nlet AtRule$3$1 = class AtRule extends Container$5$1 {\n constructor(defaults) {\n super(defaults);\n this.type = \"atrule\";\n }\n append(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.append(...children);\n }\n prepend(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.prepend(...children);\n }\n};\nvar atRule$1 = AtRule$3$1;\nAtRule$3$1.default = AtRule$3$1;\nContainer$5$1.registerAtRule(AtRule$3$1);\nlet Container$4$1 = container$1;\nlet LazyResult$3$1, Processor$2$1;\nlet Root$5$1 = class Root extends Container$4$1 {\n constructor(defaults) {\n super(defaults);\n this.type = \"root\";\n if (!this.nodes) this.nodes = [];\n }\n normalize(child, sample, type) {\n let nodes = super.normalize(child);\n if (sample) {\n if (type === \"prepend\") {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before;\n } else {\n delete sample.raws.before;\n }\n } else if (this.first !== sample) {\n for (let node2 of nodes) {\n node2.raws.before = sample.raws.before;\n }\n }\n }\n return nodes;\n }\n removeChild(child, ignore) {\n let index2 = this.index(child);\n if (!ignore && index2 === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index2].raws.before;\n }\n return super.removeChild(child);\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$3$1(new Processor$2$1(), this, opts);\n return lazy.stringify();\n }\n};\nRoot$5$1.registerLazyResult = (dependant) => {\n LazyResult$3$1 = dependant;\n};\nRoot$5$1.registerProcessor = (dependant) => {\n Processor$2$1 = dependant;\n};\nvar root$1 = Root$5$1;\nRoot$5$1.default = Root$5$1;\nContainer$4$1.registerRoot(Root$5$1);\nlet list$2$1 = {\n comma(string) {\n return list$2$1.split(string, [\",\"], true);\n },\n space(string) {\n let spaces = [\" \", \"\\n\", \"\t\"];\n return list$2$1.split(string, spaces);\n },\n split(string, separators, last) {\n let array = [];\n let current = \"\";\n let split = false;\n let func = 0;\n let inQuote = false;\n let prevQuote = \"\";\n let escape = false;\n for (let letter of string) {\n if (escape) {\n escape = false;\n } else if (letter === \"\\\\\") {\n escape = true;\n } else if (inQuote) {\n if (letter === prevQuote) {\n inQuote = false;\n }\n } else if (letter === '\"' || letter === \"'\") {\n inQuote = true;\n prevQuote = letter;\n } else if (letter === \"(\") {\n func += 1;\n } else if (letter === \")\") {\n if (func > 0) func -= 1;\n } else if (func === 0) {\n if (separators.includes(letter)) split = true;\n }\n if (split) {\n if (current !== \"\") array.push(current.trim());\n current = \"\";\n split = false;\n } else {\n current += letter;\n }\n }\n if (last || current !== \"\") array.push(current.trim());\n return array;\n }\n};\nvar list_1$1 = list$2$1;\nlist$2$1.default = list$2$1;\nlet Container$3$1 = container$1;\nlet list$1$1 = list_1$1;\nlet Rule$3$1 = class Rule extends Container$3$1 {\n constructor(defaults) {\n super(defaults);\n this.type = \"rule\";\n if (!this.nodes) this.nodes = [];\n }\n get selectors() {\n return list$1$1.comma(this.selector);\n }\n set selectors(values) {\n let match = this.selector ? this.selector.match(/,\\s*/) : null;\n let sep2 = match ? match[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n this.selector = values.join(sep2);\n }\n};\nvar rule$1 = Rule$3$1;\nRule$3$1.default = Rule$3$1;\nContainer$3$1.registerRule(Rule$3$1);\nlet Declaration$2$1 = declaration$1;\nlet tokenizer2$1 = tokenize$1;\nlet Comment$2$1 = comment$1;\nlet AtRule$2$1 = atRule$1;\nlet Root$4$1 = root$1;\nlet Rule$2$1 = rule$1;\nconst SAFE_COMMENT_NEIGHBOR$1 = {\n empty: true,\n space: true\n};\nfunction findLastWithPosition$1(tokens) {\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n let token = tokens[i2];\n let pos = token[3] || token[2];\n if (pos) return pos;\n }\n}\nlet Parser$1$1 = class Parser {\n constructor(input2) {\n this.input = input2;\n this.root = new Root$4$1();\n this.current = this.root;\n this.spaces = \"\";\n this.semicolon = false;\n this.createTokenizer();\n this.root.source = { input: input2, start: { column: 1, line: 1, offset: 0 } };\n }\n atrule(token) {\n let node2 = new AtRule$2$1();\n node2.name = token[1].slice(1);\n if (node2.name === \"\") {\n this.unnamedAtrule(node2, token);\n }\n this.init(node2, token[2]);\n let type;\n let prev;\n let shift;\n let last = false;\n let open = false;\n let params = [];\n let brackets = [];\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n type = token[0];\n if (type === \"(\" || type === \"[\") {\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (type === \"{\" && brackets.length > 0) {\n brackets.push(\"}\");\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n }\n if (brackets.length === 0) {\n if (type === \";\") {\n node2.source.end = this.getPosition(token[2]);\n node2.source.end.offset++;\n this.semicolon = true;\n break;\n } else if (type === \"{\") {\n open = true;\n break;\n } else if (type === \"}\") {\n if (params.length > 0) {\n shift = params.length - 1;\n prev = params[shift];\n while (prev && prev[0] === \"space\") {\n prev = params[--shift];\n }\n if (prev) {\n node2.source.end = this.getPosition(prev[3] || prev[2]);\n node2.source.end.offset++;\n }\n }\n this.end(token);\n break;\n } else {\n params.push(token);\n }\n } else {\n params.push(token);\n }\n if (this.tokenizer.endOfFile()) {\n last = true;\n break;\n }\n }\n node2.raws.between = this.spacesAndCommentsFromEnd(params);\n if (params.length) {\n node2.raws.afterName = this.spacesAndCommentsFromStart(params);\n this.raw(node2, \"params\", params);\n if (last) {\n token = params[params.length - 1];\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n this.spaces = node2.raws.between;\n node2.raws.between = \"\";\n }\n } else {\n node2.raws.afterName = \"\";\n node2.params = \"\";\n }\n if (open) {\n node2.nodes = [];\n this.current = node2;\n }\n }\n checkMissedSemicolon(tokens) {\n let colon = this.colon(tokens);\n if (colon === false) return;\n let founded = 0;\n let token;\n for (let j = colon - 1; j >= 0; j--) {\n token = tokens[j];\n if (token[0] !== \"space\") {\n founded += 1;\n if (founded === 2) break;\n }\n }\n throw this.input.error(\n \"Missed semicolon\",\n token[0] === \"word\" ? token[3] + 1 : token[2]\n );\n }\n colon(tokens) {\n let brackets = 0;\n let token, type, prev;\n for (let [i2, element] of tokens.entries()) {\n token = element;\n type = token[0];\n if (type === \"(\") {\n brackets += 1;\n }\n if (type === \")\") {\n brackets -= 1;\n }\n if (brackets === 0 && type === \":\") {\n if (!prev) {\n this.doubleColon(token);\n } else if (prev[0] === \"word\" && prev[1] === \"progid\") {\n continue;\n } else {\n return i2;\n }\n }\n prev = token;\n }\n return false;\n }\n comment(token) {\n let node2 = new Comment$2$1();\n this.init(node2, token[2]);\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n let text = token[1].slice(2, -2);\n if (/^\\s*$/.test(text)) {\n node2.text = \"\";\n node2.raws.left = text;\n node2.raws.right = \"\";\n } else {\n let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n node2.text = match[2];\n node2.raws.left = match[1];\n node2.raws.right = match[3];\n }\n }\n createTokenizer() {\n this.tokenizer = tokenizer2$1(this.input);\n }\n decl(tokens, customProperty) {\n let node2 = new Declaration$2$1();\n this.init(node2, tokens[0][2]);\n let last = tokens[tokens.length - 1];\n if (last[0] === \";\") {\n this.semicolon = true;\n tokens.pop();\n }\n node2.source.end = this.getPosition(\n last[3] || last[2] || findLastWithPosition$1(tokens)\n );\n node2.source.end.offset++;\n while (tokens[0][0] !== \"word\") {\n if (tokens.length === 1) this.unknownWord(tokens);\n node2.raws.before += tokens.shift()[1];\n }\n node2.source.start = this.getPosition(tokens[0][2]);\n node2.prop = \"\";\n while (tokens.length) {\n let type = tokens[0][0];\n if (type === \":\" || type === \"space\" || type === \"comment\") {\n break;\n }\n node2.prop += tokens.shift()[1];\n }\n node2.raws.between = \"\";\n let token;\n while (tokens.length) {\n token = tokens.shift();\n if (token[0] === \":\") {\n node2.raws.between += token[1];\n break;\n } else {\n if (token[0] === \"word\" && /\\w/.test(token[1])) {\n this.unknownWord([token]);\n }\n node2.raws.between += token[1];\n }\n }\n if (node2.prop[0] === \"_\" || node2.prop[0] === \"*\") {\n node2.raws.before += node2.prop[0];\n node2.prop = node2.prop.slice(1);\n }\n let firstSpaces = [];\n let next;\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n firstSpaces.push(tokens.shift());\n }\n this.precheckMissedSemicolon(tokens);\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n token = tokens[i2];\n if (token[1].toLowerCase() === \"!important\") {\n node2.important = true;\n let string = this.stringFrom(tokens, i2);\n string = this.spacesFromEnd(tokens) + string;\n if (string !== \" !important\") node2.raws.important = string;\n break;\n } else if (token[1].toLowerCase() === \"important\") {\n let cache = tokens.slice(0);\n let str = \"\";\n for (let j = i2; j > 0; j--) {\n let type = cache[j][0];\n if (str.trim().indexOf(\"!\") === 0 && type !== \"space\") {\n break;\n }\n str = cache.pop()[1] + str;\n }\n if (str.trim().indexOf(\"!\") === 0) {\n node2.important = true;\n node2.raws.important = str;\n tokens = cache;\n }\n }\n if (token[0] !== \"space\" && token[0] !== \"comment\") {\n break;\n }\n }\n let hasWord = tokens.some((i2) => i2[0] !== \"space\" && i2[0] !== \"comment\");\n if (hasWord) {\n node2.raws.between += firstSpaces.map((i2) => i2[1]).join(\"\");\n firstSpaces = [];\n }\n this.raw(node2, \"value\", firstSpaces.concat(tokens), customProperty);\n if (node2.value.includes(\":\") && !customProperty) {\n this.checkMissedSemicolon(tokens);\n }\n }\n doubleColon(token) {\n throw this.input.error(\n \"Double colon\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n emptyRule(token) {\n let node2 = new Rule$2$1();\n this.init(node2, token[2]);\n node2.selector = \"\";\n node2.raws.between = \"\";\n this.current = node2;\n }\n end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.semicolon = false;\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.spaces = \"\";\n if (this.current.parent) {\n this.current.source.end = this.getPosition(token[2]);\n this.current.source.end.offset++;\n this.current = this.current.parent;\n } else {\n this.unexpectedClose(token);\n }\n }\n endFile() {\n if (this.current.parent) this.unclosedBlock();\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.root.source.end = this.getPosition(this.tokenizer.position());\n }\n freeSemicolon(token) {\n this.spaces += token[1];\n if (this.current.nodes) {\n let prev = this.current.nodes[this.current.nodes.length - 1];\n if (prev && prev.type === \"rule\" && !prev.raws.ownSemicolon) {\n prev.raws.ownSemicolon = this.spaces;\n this.spaces = \"\";\n }\n }\n }\n // Helpers\n getPosition(offset) {\n let pos = this.input.fromOffset(offset);\n return {\n column: pos.col,\n line: pos.line,\n offset\n };\n }\n init(node2, offset) {\n this.current.push(node2);\n node2.source = {\n input: this.input,\n start: this.getPosition(offset)\n };\n node2.raws.before = this.spaces;\n this.spaces = \"\";\n if (node2.type !== \"comment\") this.semicolon = false;\n }\n other(start) {\n let end = false;\n let type = null;\n let colon = false;\n let bracket = null;\n let brackets = [];\n let customProperty = start[1].startsWith(\"--\");\n let tokens = [];\n let token = start;\n while (token) {\n type = token[0];\n tokens.push(token);\n if (type === \"(\" || type === \"[\") {\n if (!bracket) bracket = token;\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (customProperty && colon && type === \"{\") {\n if (!bracket) bracket = token;\n brackets.push(\"}\");\n } else if (brackets.length === 0) {\n if (type === \";\") {\n if (colon) {\n this.decl(tokens, customProperty);\n return;\n } else {\n break;\n }\n } else if (type === \"{\") {\n this.rule(tokens);\n return;\n } else if (type === \"}\") {\n this.tokenizer.back(tokens.pop());\n end = true;\n break;\n } else if (type === \":\") {\n colon = true;\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n if (brackets.length === 0) bracket = null;\n }\n token = this.tokenizer.nextToken();\n }\n if (this.tokenizer.endOfFile()) end = true;\n if (brackets.length > 0) this.unclosedBracket(bracket);\n if (end && colon) {\n if (!customProperty) {\n while (tokens.length) {\n token = tokens[tokens.length - 1][0];\n if (token !== \"space\" && token !== \"comment\") break;\n this.tokenizer.back(tokens.pop());\n }\n }\n this.decl(tokens, customProperty);\n } else {\n this.unknownWord(tokens);\n }\n }\n parse() {\n let token;\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n switch (token[0]) {\n case \"space\":\n this.spaces += token[1];\n break;\n case \";\":\n this.freeSemicolon(token);\n break;\n case \"}\":\n this.end(token);\n break;\n case \"comment\":\n this.comment(token);\n break;\n case \"at-word\":\n this.atrule(token);\n break;\n case \"{\":\n this.emptyRule(token);\n break;\n default:\n this.other(token);\n break;\n }\n }\n this.endFile();\n }\n precheckMissedSemicolon() {\n }\n raw(node2, prop, tokens, customProperty) {\n let token, type;\n let length = tokens.length;\n let value = \"\";\n let clean = true;\n let next, prev;\n for (let i2 = 0; i2 < length; i2 += 1) {\n token = tokens[i2];\n type = token[0];\n if (type === \"space\" && i2 === length - 1 && !customProperty) {\n clean = false;\n } else if (type === \"comment\") {\n prev = tokens[i2 - 1] ? tokens[i2 - 1][0] : \"empty\";\n next = tokens[i2 + 1] ? tokens[i2 + 1][0] : \"empty\";\n if (!SAFE_COMMENT_NEIGHBOR$1[prev] && !SAFE_COMMENT_NEIGHBOR$1[next]) {\n if (value.slice(-1) === \",\") {\n clean = false;\n } else {\n value += token[1];\n }\n } else {\n clean = false;\n }\n } else {\n value += token[1];\n }\n }\n if (!clean) {\n let raw = tokens.reduce((all, i2) => all + i2[1], \"\");\n node2.raws[prop] = { raw, value };\n }\n node2[prop] = value;\n }\n rule(tokens) {\n tokens.pop();\n let node2 = new Rule$2$1();\n this.init(node2, tokens[0][2]);\n node2.raws.between = this.spacesAndCommentsFromEnd(tokens);\n this.raw(node2, \"selector\", tokens);\n this.current = node2;\n }\n spacesAndCommentsFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\" && lastTokenType !== \"comment\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n // Errors\n spacesAndCommentsFromStart(tokens) {\n let next;\n let spaces = \"\";\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n spaces += tokens.shift()[1];\n }\n return spaces;\n }\n spacesFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n stringFrom(tokens, from) {\n let result2 = \"\";\n for (let i2 = from; i2 < tokens.length; i2++) {\n result2 += tokens[i2][1];\n }\n tokens.splice(from, tokens.length - from);\n return result2;\n }\n unclosedBlock() {\n let pos = this.current.source.start;\n throw this.input.error(\"Unclosed block\", pos.line, pos.column);\n }\n unclosedBracket(bracket) {\n throw this.input.error(\n \"Unclosed bracket\",\n { offset: bracket[2] },\n { offset: bracket[2] + 1 }\n );\n }\n unexpectedClose(token) {\n throw this.input.error(\n \"Unexpected }\",\n { offset: token[2] },\n { offset: token[2] + 1 }\n );\n }\n unknownWord(tokens) {\n throw this.input.error(\n \"Unknown word\",\n { offset: tokens[0][2] },\n { offset: tokens[0][2] + tokens[0][1].length }\n );\n }\n unnamedAtrule(node2, token) {\n throw this.input.error(\n \"At-rule without name\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n};\nvar parser$1 = Parser$1$1;\nlet Container$2$1 = container$1;\nlet Parser2$1 = parser$1;\nlet Input$2$1 = input$1;\nfunction parse$3$1(css, opts) {\n let input2 = new Input$2$1(css, opts);\n let parser2 = new Parser2$1(input2);\n try {\n parser2.parse();\n } catch (e2) {\n if (process.env.NODE_ENV !== \"production\") {\n if (e2.name === \"CssSyntaxError\" && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser\";\n } else if (/\\.sass/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser\";\n } else if (/\\.less$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser\";\n }\n }\n }\n throw e2;\n }\n return parser2.root;\n}\nvar parse_1$1 = parse$3$1;\nparse$3$1.default = parse$3$1;\nContainer$2$1.registerParse(parse$3$1);\nlet { isClean: isClean$3, my: my$3 } = symbols$1;\nlet MapGenerator$1$1 = mapGenerator$1;\nlet stringify$2$1 = stringify_1$1;\nlet Container$1$1 = container$1;\nlet Document$2$1 = document$1$1;\nlet warnOnce$1$1 = warnOnce$2$1;\nlet Result$2$1 = result$1;\nlet parse$2$1 = parse_1$1;\nlet Root$3$1 = root$1;\nconst TYPE_TO_CLASS_NAME$1 = {\n atrule: \"AtRule\",\n comment: \"Comment\",\n decl: \"Declaration\",\n document: \"Document\",\n root: \"Root\",\n rule: \"Rule\"\n};\nconst PLUGIN_PROPS$1 = {\n AtRule: true,\n AtRuleExit: true,\n Comment: true,\n CommentExit: true,\n Declaration: true,\n DeclarationExit: true,\n Document: true,\n DocumentExit: true,\n Once: true,\n OnceExit: true,\n postcssPlugin: true,\n prepare: true,\n Root: true,\n RootExit: true,\n Rule: true,\n RuleExit: true\n};\nconst NOT_VISITORS$1 = {\n Once: true,\n postcssPlugin: true,\n prepare: true\n};\nconst CHILDREN$1 = 0;\nfunction isPromise$1(obj) {\n return typeof obj === \"object\" && typeof obj.then === \"function\";\n}\nfunction getEvents$1(node2) {\n let key = false;\n let type = TYPE_TO_CLASS_NAME$1[node2.type];\n if (node2.type === \"decl\") {\n key = node2.prop.toLowerCase();\n } else if (node2.type === \"atrule\") {\n key = node2.name.toLowerCase();\n }\n if (key && node2.append) {\n return [\n type,\n type + \"-\" + key,\n CHILDREN$1,\n type + \"Exit\",\n type + \"Exit-\" + key\n ];\n } else if (key) {\n return [type, type + \"-\" + key, type + \"Exit\", type + \"Exit-\" + key];\n } else if (node2.append) {\n return [type, CHILDREN$1, type + \"Exit\"];\n } else {\n return [type, type + \"Exit\"];\n }\n}\nfunction toStack$1(node2) {\n let events;\n if (node2.type === \"document\") {\n events = [\"Document\", CHILDREN$1, \"DocumentExit\"];\n } else if (node2.type === \"root\") {\n events = [\"Root\", CHILDREN$1, \"RootExit\"];\n } else {\n events = getEvents$1(node2);\n }\n return {\n eventIndex: 0,\n events,\n iterator: 0,\n node: node2,\n visitorIndex: 0,\n visitors: []\n };\n}\nfunction cleanMarks$1(node2) {\n node2[isClean$3] = false;\n if (node2.nodes) node2.nodes.forEach((i2) => cleanMarks$1(i2));\n return node2;\n}\nlet postcss$2$1 = {};\nlet LazyResult$2$1 = class LazyResult {\n constructor(processor2, css, opts) {\n this.stringified = false;\n this.processed = false;\n let root2;\n if (typeof css === \"object\" && css !== null && (css.type === \"root\" || css.type === \"document\")) {\n root2 = cleanMarks$1(css);\n } else if (css instanceof LazyResult || css instanceof Result$2$1) {\n root2 = cleanMarks$1(css.root);\n if (css.map) {\n if (typeof opts.map === \"undefined\") opts.map = {};\n if (!opts.map.inline) opts.map.inline = false;\n opts.map.prev = css.map;\n }\n } else {\n let parser2 = parse$2$1;\n if (opts.syntax) parser2 = opts.syntax.parse;\n if (opts.parser) parser2 = opts.parser;\n if (parser2.parse) parser2 = parser2.parse;\n try {\n root2 = parser2(css, opts);\n } catch (error) {\n this.processed = true;\n this.error = error;\n }\n if (root2 && !root2[my$3]) {\n Container$1$1.rebuild(root2);\n }\n }\n this.result = new Result$2$1(processor2, root2, opts);\n this.helpers = { ...postcss$2$1, postcss: postcss$2$1, result: this.result };\n this.plugins = this.processor.plugins.map((plugin22) => {\n if (typeof plugin22 === \"object\" && plugin22.prepare) {\n return { ...plugin22, ...plugin22.prepare(this.result) };\n } else {\n return plugin22;\n }\n });\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n if (this.processed) return Promise.resolve(this.result);\n if (!this.processing) {\n this.processing = this.runAsync();\n }\n return this.processing;\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n getAsyncError() {\n throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n }\n handleError(error, node2) {\n let plugin22 = this.result.lastPlugin;\n try {\n if (node2) node2.addToError(error);\n this.error = error;\n if (error.name === \"CssSyntaxError\" && !error.plugin) {\n error.plugin = plugin22.postcssPlugin;\n error.setMessage();\n } else if (plugin22.postcssVersion) {\n if (process.env.NODE_ENV !== \"production\") {\n let pluginName = plugin22.postcssPlugin;\n let pluginVer = plugin22.postcssVersion;\n let runtimeVer = this.result.processor.version;\n let a2 = pluginVer.split(\".\");\n let b = runtimeVer.split(\".\");\n if (a2[0] !== b[0] || parseInt(a2[1]) > parseInt(b[1])) {\n console.error(\n \"Unknown error from PostCSS plugin. Your current PostCSS version is \" + runtimeVer + \", but \" + pluginName + \" uses \" + pluginVer + \". Perhaps this is the source of the error below.\"\n );\n }\n }\n }\n } catch (err) {\n if (console && console.error) console.error(err);\n }\n return error;\n }\n prepareVisitors() {\n this.listeners = {};\n let add = (plugin22, type, cb) => {\n if (!this.listeners[type]) this.listeners[type] = [];\n this.listeners[type].push([plugin22, cb]);\n };\n for (let plugin22 of this.plugins) {\n if (typeof plugin22 === \"object\") {\n for (let event in plugin22) {\n if (!PLUGIN_PROPS$1[event] && /^[A-Z]/.test(event)) {\n throw new Error(\n `Unknown event ${event} in ${plugin22.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`\n );\n }\n if (!NOT_VISITORS$1[event]) {\n if (typeof plugin22[event] === \"object\") {\n for (let filter in plugin22[event]) {\n if (filter === \"*\") {\n add(plugin22, event, plugin22[event][filter]);\n } else {\n add(\n plugin22,\n event + \"-\" + filter.toLowerCase(),\n plugin22[event][filter]\n );\n }\n }\n } else if (typeof plugin22[event] === \"function\") {\n add(plugin22, event, plugin22[event]);\n }\n }\n }\n }\n }\n this.hasListener = Object.keys(this.listeners).length > 0;\n }\n async runAsync() {\n this.plugin = 0;\n for (let i2 = 0; i2 < this.plugins.length; i2++) {\n let plugin22 = this.plugins[i2];\n let promise = this.runOnRoot(plugin22);\n if (isPromise$1(promise)) {\n try {\n await promise;\n } catch (error) {\n throw this.handleError(error);\n }\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean$3]) {\n root2[isClean$3] = true;\n let stack = [toStack$1(root2)];\n while (stack.length > 0) {\n let promise = this.visitTick(stack);\n if (isPromise$1(promise)) {\n try {\n await promise;\n } catch (e2) {\n let node2 = stack[stack.length - 1].node;\n throw this.handleError(e2, node2);\n }\n }\n }\n }\n if (this.listeners.OnceExit) {\n for (let [plugin22, visitor] of this.listeners.OnceExit) {\n this.result.lastPlugin = plugin22;\n try {\n if (root2.type === \"document\") {\n let roots = root2.nodes.map(\n (subRoot) => visitor(subRoot, this.helpers)\n );\n await Promise.all(roots);\n } else {\n await visitor(root2, this.helpers);\n }\n } catch (e2) {\n throw this.handleError(e2);\n }\n }\n }\n }\n this.processed = true;\n return this.stringify();\n }\n runOnRoot(plugin22) {\n this.result.lastPlugin = plugin22;\n try {\n if (typeof plugin22 === \"object\" && plugin22.Once) {\n if (this.result.root.type === \"document\") {\n let roots = this.result.root.nodes.map(\n (root2) => plugin22.Once(root2, this.helpers)\n );\n if (isPromise$1(roots[0])) {\n return Promise.all(roots);\n }\n return roots;\n }\n return plugin22.Once(this.result.root, this.helpers);\n } else if (typeof plugin22 === \"function\") {\n return plugin22(this.result.root, this.result);\n }\n } catch (error) {\n throw this.handleError(error);\n }\n }\n stringify() {\n if (this.error) throw this.error;\n if (this.stringified) return this.result;\n this.stringified = true;\n this.sync();\n let opts = this.result.opts;\n let str = stringify$2$1;\n if (opts.syntax) str = opts.syntax.stringify;\n if (opts.stringifier) str = opts.stringifier;\n if (str.stringify) str = str.stringify;\n let map = new MapGenerator$1$1(str, this.result.root, this.result.opts);\n let data = map.generate();\n this.result.css = data[0];\n this.result.map = data[1];\n return this.result;\n }\n sync() {\n if (this.error) throw this.error;\n if (this.processed) return this.result;\n this.processed = true;\n if (this.processing) {\n throw this.getAsyncError();\n }\n for (let plugin22 of this.plugins) {\n let promise = this.runOnRoot(plugin22);\n if (isPromise$1(promise)) {\n throw this.getAsyncError();\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean$3]) {\n root2[isClean$3] = true;\n this.walkSync(root2);\n }\n if (this.listeners.OnceExit) {\n if (root2.type === \"document\") {\n for (let subRoot of root2.nodes) {\n this.visitSync(this.listeners.OnceExit, subRoot);\n }\n } else {\n this.visitSync(this.listeners.OnceExit, root2);\n }\n }\n }\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this.opts)) {\n warnOnce$1$1(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this.css;\n }\n visitSync(visitors, node2) {\n for (let [plugin22, visitor] of visitors) {\n this.result.lastPlugin = plugin22;\n let promise;\n try {\n promise = visitor(node2, this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2.proxyOf);\n }\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n return true;\n }\n if (isPromise$1(promise)) {\n throw this.getAsyncError();\n }\n }\n }\n visitTick(stack) {\n let visit2 = stack[stack.length - 1];\n let { node: node2, visitors } = visit2;\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n stack.pop();\n return;\n }\n if (visitors.length > 0 && visit2.visitorIndex < visitors.length) {\n let [plugin22, visitor] = visitors[visit2.visitorIndex];\n visit2.visitorIndex += 1;\n if (visit2.visitorIndex === visitors.length) {\n visit2.visitors = [];\n visit2.visitorIndex = 0;\n }\n this.result.lastPlugin = plugin22;\n try {\n return visitor(node2.toProxy(), this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2);\n }\n }\n if (visit2.iterator !== 0) {\n let iterator = visit2.iterator;\n let child;\n while (child = node2.nodes[node2.indexes[iterator]]) {\n node2.indexes[iterator] += 1;\n if (!child[isClean$3]) {\n child[isClean$3] = true;\n stack.push(toStack$1(child));\n return;\n }\n }\n visit2.iterator = 0;\n delete node2.indexes[iterator];\n }\n let events = visit2.events;\n while (visit2.eventIndex < events.length) {\n let event = events[visit2.eventIndex];\n visit2.eventIndex += 1;\n if (event === CHILDREN$1) {\n if (node2.nodes && node2.nodes.length) {\n node2[isClean$3] = true;\n visit2.iterator = node2.getIterator();\n }\n return;\n } else if (this.listeners[event]) {\n visit2.visitors = this.listeners[event];\n return;\n }\n }\n stack.pop();\n }\n walkSync(node2) {\n node2[isClean$3] = true;\n let events = getEvents$1(node2);\n for (let event of events) {\n if (event === CHILDREN$1) {\n if (node2.nodes) {\n node2.each((child) => {\n if (!child[isClean$3]) this.walkSync(child);\n });\n }\n } else {\n let visitors = this.listeners[event];\n if (visitors) {\n if (this.visitSync(visitors, node2.toProxy())) return;\n }\n }\n }\n }\n warnings() {\n return this.sync().warnings();\n }\n get content() {\n return this.stringify().content;\n }\n get css() {\n return this.stringify().css;\n }\n get map() {\n return this.stringify().map;\n }\n get messages() {\n return this.sync().messages;\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n return this.sync().root;\n }\n get [Symbol.toStringTag]() {\n return \"LazyResult\";\n }\n};\nLazyResult$2$1.registerPostcss = (dependant) => {\n postcss$2$1 = dependant;\n};\nvar lazyResult$1 = LazyResult$2$1;\nLazyResult$2$1.default = LazyResult$2$1;\nRoot$3$1.registerLazyResult(LazyResult$2$1);\nDocument$2$1.registerLazyResult(LazyResult$2$1);\nlet MapGenerator2$1 = mapGenerator$1;\nlet stringify$1$1 = stringify_1$1;\nlet warnOnce2$1 = warnOnce$2$1;\nlet parse$1$1 = parse_1$1;\nconst Result$1$1 = result$1;\nlet NoWorkResult$1$1 = class NoWorkResult {\n constructor(processor2, css, opts) {\n css = css.toString();\n this.stringified = false;\n this._processor = processor2;\n this._css = css;\n this._opts = opts;\n this._map = void 0;\n let root2;\n let str = stringify$1$1;\n this.result = new Result$1$1(this._processor, root2, this._opts);\n this.result.css = css;\n let self = this;\n Object.defineProperty(this.result, \"root\", {\n get() {\n return self.root;\n }\n });\n let map = new MapGenerator2$1(str, root2, this._opts, css);\n if (map.isMap()) {\n let [generatedCSS, generatedMap] = map.generate();\n if (generatedCSS) {\n this.result.css = generatedCSS;\n }\n if (generatedMap) {\n this.result.map = generatedMap;\n }\n } else {\n map.clearAnnotation();\n this.result.css = map.css;\n }\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n return Promise.resolve(this.result);\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n sync() {\n if (this.error) throw this.error;\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this._opts)) {\n warnOnce2$1(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this._css;\n }\n warnings() {\n return [];\n }\n get content() {\n return this.result.css;\n }\n get css() {\n return this.result.css;\n }\n get map() {\n return this.result.map;\n }\n get messages() {\n return [];\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n if (this._root) {\n return this._root;\n }\n let root2;\n let parser2 = parse$1$1;\n try {\n root2 = parser2(this._css, this._opts);\n } catch (error) {\n this.error = error;\n }\n if (this.error) {\n throw this.error;\n } else {\n this._root = root2;\n return root2;\n }\n }\n get [Symbol.toStringTag]() {\n return \"NoWorkResult\";\n }\n};\nvar noWorkResult$1 = NoWorkResult$1$1;\nNoWorkResult$1$1.default = NoWorkResult$1$1;\nlet NoWorkResult2$1 = noWorkResult$1;\nlet LazyResult$1$1 = lazyResult$1;\nlet Document$1$1 = document$1$1;\nlet Root$2$1 = root$1;\nlet Processor$1$1 = class Processor {\n constructor(plugins = []) {\n this.version = \"8.4.38\";\n this.plugins = this.normalize(plugins);\n }\n normalize(plugins) {\n let normalized = [];\n for (let i2 of plugins) {\n if (i2.postcss === true) {\n i2 = i2();\n } else if (i2.postcss) {\n i2 = i2.postcss;\n }\n if (typeof i2 === \"object\" && Array.isArray(i2.plugins)) {\n normalized = normalized.concat(i2.plugins);\n } else if (typeof i2 === \"object\" && i2.postcssPlugin) {\n normalized.push(i2);\n } else if (typeof i2 === \"function\") {\n normalized.push(i2);\n } else if (typeof i2 === \"object\" && (i2.parse || i2.stringify)) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error(\n \"PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.\"\n );\n }\n } else {\n throw new Error(i2 + \" is not a PostCSS plugin\");\n }\n }\n return normalized;\n }\n process(css, opts = {}) {\n if (!this.plugins.length && !opts.parser && !opts.stringifier && !opts.syntax) {\n return new NoWorkResult2$1(this, css, opts);\n } else {\n return new LazyResult$1$1(this, css, opts);\n }\n }\n use(plugin22) {\n this.plugins = this.plugins.concat(this.normalize([plugin22]));\n return this;\n }\n};\nvar processor$1 = Processor$1$1;\nProcessor$1$1.default = Processor$1$1;\nRoot$2$1.registerProcessor(Processor$1$1);\nDocument$1$1.registerProcessor(Processor$1$1);\nlet Declaration$1$1 = declaration$1;\nlet PreviousMap2$1 = previousMap$1;\nlet Comment$1$1 = comment$1;\nlet AtRule$1$1 = atRule$1;\nlet Input$1$1 = input$1;\nlet Root$1$1 = root$1;\nlet Rule$1$1 = rule$1;\nfunction fromJSON$1$1(json, inputs) {\n if (Array.isArray(json)) return json.map((n2) => fromJSON$1$1(n2));\n let { inputs: ownInputs, ...defaults } = json;\n if (ownInputs) {\n inputs = [];\n for (let input2 of ownInputs) {\n let inputHydrated = { ...input2, __proto__: Input$1$1.prototype };\n if (inputHydrated.map) {\n inputHydrated.map = {\n ...inputHydrated.map,\n __proto__: PreviousMap2$1.prototype\n };\n }\n inputs.push(inputHydrated);\n }\n }\n if (defaults.nodes) {\n defaults.nodes = json.nodes.map((n2) => fromJSON$1$1(n2, inputs));\n }\n if (defaults.source) {\n let { inputId, ...source } = defaults.source;\n defaults.source = source;\n if (inputId != null) {\n defaults.source.input = inputs[inputId];\n }\n }\n if (defaults.type === \"root\") {\n return new Root$1$1(defaults);\n } else if (defaults.type === \"decl\") {\n return new Declaration$1$1(defaults);\n } else if (defaults.type === \"rule\") {\n return new Rule$1$1(defaults);\n } else if (defaults.type === \"comment\") {\n return new Comment$1$1(defaults);\n } else if (defaults.type === \"atrule\") {\n return new AtRule$1$1(defaults);\n } else {\n throw new Error(\"Unknown node type: \" + json.type);\n }\n}\nvar fromJSON_1$1 = fromJSON$1$1;\nfromJSON$1$1.default = fromJSON$1$1;\nlet CssSyntaxError2$1 = cssSyntaxError$1;\nlet Declaration2$1 = declaration$1;\nlet LazyResult2$1 = lazyResult$1;\nlet Container2$1 = container$1;\nlet Processor2$1 = processor$1;\nlet stringify$5 = stringify_1$1;\nlet fromJSON$2 = fromJSON_1$1;\nlet Document22 = document$1$1;\nlet Warning2$1 = warning$1;\nlet Comment2$1 = comment$1;\nlet AtRule2$1 = atRule$1;\nlet Result2$1 = result$1;\nlet Input2$1 = input$1;\nlet parse$5 = parse_1$1;\nlet list$3 = list_1$1;\nlet Rule2$1 = rule$1;\nlet Root2$1 = root$1;\nlet Node2$1 = node$1;\nfunction postcss$3(...plugins) {\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0];\n }\n return new Processor2$1(plugins);\n}\npostcss$3.plugin = function plugin(name, initializer) {\n let warningPrinted = false;\n function creator(...args) {\n if (console && console.warn && !warningPrinted) {\n warningPrinted = true;\n console.warn(\n name + \": postcss.plugin was deprecated. Migration guide:\\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration\"\n );\n if (process.env.LANG && process.env.LANG.startsWith(\"cn\")) {\n console.warn(\n name + \": 里面 postcss.plugin 被弃用. 迁移指南:\\nhttps://www.w3ctech.com/topic/2226\"\n );\n }\n }\n let transformer = initializer(...args);\n transformer.postcssPlugin = name;\n transformer.postcssVersion = new Processor2$1().version;\n return transformer;\n }\n let cache;\n Object.defineProperty(creator, \"postcss\", {\n get() {\n if (!cache) cache = creator();\n return cache;\n }\n });\n creator.process = function(css, processOpts, pluginOpts) {\n return postcss$3([creator(pluginOpts)]).process(css, processOpts);\n };\n return creator;\n};\npostcss$3.stringify = stringify$5;\npostcss$3.parse = parse$5;\npostcss$3.fromJSON = fromJSON$2;\npostcss$3.list = list$3;\npostcss$3.comment = (defaults) => new Comment2$1(defaults);\npostcss$3.atRule = (defaults) => new AtRule2$1(defaults);\npostcss$3.decl = (defaults) => new Declaration2$1(defaults);\npostcss$3.rule = (defaults) => new Rule2$1(defaults);\npostcss$3.root = (defaults) => new Root2$1(defaults);\npostcss$3.document = (defaults) => new Document22(defaults);\npostcss$3.CssSyntaxError = CssSyntaxError2$1;\npostcss$3.Declaration = Declaration2$1;\npostcss$3.Container = Container2$1;\npostcss$3.Processor = Processor2$1;\npostcss$3.Document = Document22;\npostcss$3.Comment = Comment2$1;\npostcss$3.Warning = Warning2$1;\npostcss$3.AtRule = AtRule2$1;\npostcss$3.Result = Result2$1;\npostcss$3.Input = Input2$1;\npostcss$3.Rule = Rule2$1;\npostcss$3.Root = Root2$1;\npostcss$3.Node = Node2$1;\nLazyResult2$1.registerPostcss(postcss$3);\nvar postcss_1$1 = postcss$3;\npostcss$3.default = postcss$3;\nconst postcss$1$1 = /* @__PURE__ */ getDefaultExportFromCjs$1(postcss_1$1);\npostcss$1$1.stringify;\npostcss$1$1.fromJSON;\npostcss$1$1.plugin;\npostcss$1$1.parse;\npostcss$1$1.list;\npostcss$1$1.document;\npostcss$1$1.comment;\npostcss$1$1.atRule;\npostcss$1$1.rule;\npostcss$1$1.decl;\npostcss$1$1.root;\npostcss$1$1.CssSyntaxError;\npostcss$1$1.Declaration;\npostcss$1$1.Container;\npostcss$1$1.Processor;\npostcss$1$1.Document;\npostcss$1$1.Comment;\npostcss$1$1.Warning;\npostcss$1$1.AtRule;\npostcss$1$1.Result;\npostcss$1$1.Input;\npostcss$1$1.Rule;\npostcss$1$1.Root;\npostcss$1$1.Node;\nvar __defProp2 = Object.defineProperty;\nvar __defNormalProp2 = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField2 = (obj, key, value) => __defNormalProp2(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nfunction getDefaultExportFromCjs(x2) {\n return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, \"default\") ? x2[\"default\"] : x2;\n}\nfunction getAugmentedNamespace(n2) {\n if (n2.__esModule) return n2;\n var f2 = n2.default;\n if (typeof f2 == \"function\") {\n var a2 = function a22() {\n if (this instanceof a22) {\n return Reflect.construct(f2, arguments, this.constructor);\n }\n return f2.apply(this, arguments);\n };\n a2.prototype = f2.prototype;\n } else a2 = {};\n Object.defineProperty(a2, \"__esModule\", { value: true });\n Object.keys(n2).forEach(function(k) {\n var d = Object.getOwnPropertyDescriptor(n2, k);\n Object.defineProperty(a2, k, d.get ? d : {\n enumerable: true,\n get: function() {\n return n2[k];\n }\n });\n });\n return a2;\n}\nvar picocolors_browser = { exports: {} };\nvar x = String;\nvar create = function() {\n return { isColorSupported: false, reset: x, bold: x, dim: x, italic: x, underline: x, inverse: x, hidden: x, strikethrough: x, black: x, red: x, green: x, yellow: x, blue: x, magenta: x, cyan: x, white: x, gray: x, bgBlack: x, bgRed: x, bgGreen: x, bgYellow: x, bgBlue: x, bgMagenta: x, bgCyan: x, bgWhite: x };\n};\npicocolors_browser.exports = create();\npicocolors_browser.exports.createColors = create;\nvar picocolors_browserExports = picocolors_browser.exports;\nconst __viteBrowserExternal = {};\nconst __viteBrowserExternal$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: __viteBrowserExternal\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst require$$2 = /* @__PURE__ */ getAugmentedNamespace(__viteBrowserExternal$1);\nlet pico = picocolors_browserExports;\nlet terminalHighlight$1 = require$$2;\nlet CssSyntaxError$3 = class CssSyntaxError2 extends Error {\n constructor(message, line, column, source, file, plugin22) {\n super(message);\n this.name = \"CssSyntaxError\";\n this.reason = message;\n if (file) {\n this.file = file;\n }\n if (source) {\n this.source = source;\n }\n if (plugin22) {\n this.plugin = plugin22;\n }\n if (typeof line !== \"undefined\" && typeof column !== \"undefined\") {\n if (typeof line === \"number\") {\n this.line = line;\n this.column = column;\n } else {\n this.line = line.line;\n this.column = line.column;\n this.endLine = column.line;\n this.endColumn = column.column;\n }\n }\n this.setMessage();\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, CssSyntaxError2);\n }\n }\n setMessage() {\n this.message = this.plugin ? this.plugin + \": \" : \"\";\n this.message += this.file ? this.file : \"\";\n if (typeof this.line !== \"undefined\") {\n this.message += \":\" + this.line + \":\" + this.column;\n }\n this.message += \": \" + this.reason;\n }\n showSourceCode(color) {\n if (!this.source) return \"\";\n let css = this.source;\n if (color == null) color = pico.isColorSupported;\n if (terminalHighlight$1) {\n if (color) css = terminalHighlight$1(css);\n }\n let lines = css.split(/\\r?\\n/);\n let start = Math.max(this.line - 3, 0);\n let end = Math.min(this.line + 2, lines.length);\n let maxWidth = String(end).length;\n let mark, aside;\n if (color) {\n let { bold, gray, red } = pico.createColors(true);\n mark = (text) => bold(red(text));\n aside = (text) => gray(text);\n } else {\n mark = aside = (str) => str;\n }\n return lines.slice(start, end).map((line, index2) => {\n let number = start + 1 + index2;\n let gutter = \" \" + (\" \" + number).slice(-maxWidth) + \" | \";\n if (number === this.line) {\n let spacing = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, this.column - 1).replace(/[^\\t]/g, \" \");\n return mark(\">\") + aside(gutter) + line + \"\\n \" + spacing + mark(\"^\");\n }\n return \" \" + aside(gutter) + line;\n }).join(\"\\n\");\n }\n toString() {\n let code = this.showSourceCode();\n if (code) {\n code = \"\\n\\n\" + code + \"\\n\";\n }\n return this.name + \": \" + this.message + code;\n }\n};\nvar cssSyntaxError = CssSyntaxError$3;\nCssSyntaxError$3.default = CssSyntaxError$3;\nvar symbols = {};\nsymbols.isClean = Symbol(\"isClean\");\nsymbols.my = Symbol(\"my\");\nconst DEFAULT_RAW = {\n after: \"\\n\",\n beforeClose: \"\\n\",\n beforeComment: \"\\n\",\n beforeDecl: \"\\n\",\n beforeOpen: \" \",\n beforeRule: \"\\n\",\n colon: \": \",\n commentLeft: \" \",\n commentRight: \" \",\n emptyBody: \"\",\n indent: \" \",\n semicolon: false\n};\nfunction capitalize(str) {\n return str[0].toUpperCase() + str.slice(1);\n}\nlet Stringifier$2 = class Stringifier2 {\n constructor(builder) {\n this.builder = builder;\n }\n atrule(node2, semicolon) {\n let name = \"@\" + node2.name;\n let params = node2.params ? this.rawValue(node2, \"params\") : \"\";\n if (typeof node2.raws.afterName !== \"undefined\") {\n name += node2.raws.afterName;\n } else if (params) {\n name += \" \";\n }\n if (node2.nodes) {\n this.block(node2, name + params);\n } else {\n let end = (node2.raws.between || \"\") + (semicolon ? \";\" : \"\");\n this.builder(name + params + end, node2);\n }\n }\n beforeAfter(node2, detect) {\n let value;\n if (node2.type === \"decl\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (node2.type === \"comment\") {\n value = this.raw(node2, null, \"beforeComment\");\n } else if (detect === \"before\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else {\n value = this.raw(node2, null, \"beforeClose\");\n }\n let buf = node2.parent;\n let depth = 0;\n while (buf && buf.type !== \"root\") {\n depth += 1;\n buf = buf.parent;\n }\n if (value.includes(\"\\n\")) {\n let indent = this.raw(node2, null, \"indent\");\n if (indent.length) {\n for (let step = 0; step < depth; step++) value += indent;\n }\n }\n return value;\n }\n block(node2, start) {\n let between = this.raw(node2, \"between\", \"beforeOpen\");\n this.builder(start + between + \"{\", node2, \"start\");\n let after;\n if (node2.nodes && node2.nodes.length) {\n this.body(node2);\n after = this.raw(node2, \"after\");\n } else {\n after = this.raw(node2, \"after\", \"emptyBody\");\n }\n if (after) this.builder(after);\n this.builder(\"}\", node2, \"end\");\n }\n body(node2) {\n let last = node2.nodes.length - 1;\n while (last > 0) {\n if (node2.nodes[last].type !== \"comment\") break;\n last -= 1;\n }\n let semicolon = this.raw(node2, \"semicolon\");\n for (let i2 = 0; i2 < node2.nodes.length; i2++) {\n let child = node2.nodes[i2];\n let before = this.raw(child, \"before\");\n if (before) this.builder(before);\n this.stringify(child, last !== i2 || semicolon);\n }\n }\n comment(node2) {\n let left = this.raw(node2, \"left\", \"commentLeft\");\n let right = this.raw(node2, \"right\", \"commentRight\");\n this.builder(\"/*\" + left + node2.text + right + \"*/\", node2);\n }\n decl(node2, semicolon) {\n let between = this.raw(node2, \"between\", \"colon\");\n let string = node2.prop + between + this.rawValue(node2, \"value\");\n if (node2.important) {\n string += node2.raws.important || \" !important\";\n }\n if (semicolon) string += \";\";\n this.builder(string, node2);\n }\n document(node2) {\n this.body(node2);\n }\n raw(node2, own, detect) {\n let value;\n if (!detect) detect = own;\n if (own) {\n value = node2.raws[own];\n if (typeof value !== \"undefined\") return value;\n }\n let parent = node2.parent;\n if (detect === \"before\") {\n if (!parent || parent.type === \"root\" && parent.first === node2) {\n return \"\";\n }\n if (parent && parent.type === \"document\") {\n return \"\";\n }\n }\n if (!parent) return DEFAULT_RAW[detect];\n let root2 = node2.root();\n if (!root2.rawCache) root2.rawCache = {};\n if (typeof root2.rawCache[detect] !== \"undefined\") {\n return root2.rawCache[detect];\n }\n if (detect === \"before\" || detect === \"after\") {\n return this.beforeAfter(node2, detect);\n } else {\n let method = \"raw\" + capitalize(detect);\n if (this[method]) {\n value = this[method](root2, node2);\n } else {\n root2.walk((i2) => {\n value = i2.raws[own];\n if (typeof value !== \"undefined\") return false;\n });\n }\n }\n if (typeof value === \"undefined\") value = DEFAULT_RAW[detect];\n root2.rawCache[detect] = value;\n return value;\n }\n rawBeforeClose(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length > 0) {\n if (typeof i2.raws.after !== \"undefined\") {\n value = i2.raws.after;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawBeforeComment(root2, node2) {\n let value;\n root2.walkComments((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeDecl(root2, node2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeOpen(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.type !== \"decl\") {\n value = i2.raws.between;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawBeforeRule(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && (i2.parent !== root2 || root2.first !== i2)) {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawColon(root2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.between !== \"undefined\") {\n value = i2.raws.between.replace(/[^\\s:]/g, \"\");\n return false;\n }\n });\n return value;\n }\n rawEmptyBody(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length === 0) {\n value = i2.raws.after;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawIndent(root2) {\n if (root2.raws.indent) return root2.raws.indent;\n let value;\n root2.walk((i2) => {\n let p = i2.parent;\n if (p && p !== root2 && p.parent && p.parent === root2) {\n if (typeof i2.raws.before !== \"undefined\") {\n let parts = i2.raws.before.split(\"\\n\");\n value = parts[parts.length - 1];\n value = value.replace(/\\S/g, \"\");\n return false;\n }\n }\n });\n return value;\n }\n rawSemicolon(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length && i2.last.type === \"decl\") {\n value = i2.raws.semicolon;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawValue(node2, prop) {\n let value = node2[prop];\n let raw = node2.raws[prop];\n if (raw && raw.value === value) {\n return raw.raw;\n }\n return value;\n }\n root(node2) {\n this.body(node2);\n if (node2.raws.after) this.builder(node2.raws.after);\n }\n rule(node2) {\n this.block(node2, this.rawValue(node2, \"selector\"));\n if (node2.raws.ownSemicolon) {\n this.builder(node2.raws.ownSemicolon, node2, \"end\");\n }\n }\n stringify(node2, semicolon) {\n if (!this[node2.type]) {\n throw new Error(\n \"Unknown AST node type \" + node2.type + \". Maybe you need to change PostCSS stringifier.\"\n );\n }\n this[node2.type](node2, semicolon);\n }\n};\nvar stringifier = Stringifier$2;\nStringifier$2.default = Stringifier$2;\nlet Stringifier$1 = stringifier;\nfunction stringify$4(node2, builder) {\n let str = new Stringifier$1(builder);\n str.stringify(node2);\n}\nvar stringify_1 = stringify$4;\nstringify$4.default = stringify$4;\nlet { isClean: isClean$2, my: my$2 } = symbols;\nlet CssSyntaxError$2 = cssSyntaxError;\nlet Stringifier22 = stringifier;\nlet stringify$3 = stringify_1;\nfunction cloneNode(obj, parent) {\n let cloned = new obj.constructor();\n for (let i2 in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, i2)) {\n continue;\n }\n if (i2 === \"proxyCache\") continue;\n let value = obj[i2];\n let type = typeof value;\n if (i2 === \"parent\" && type === \"object\") {\n if (parent) cloned[i2] = parent;\n } else if (i2 === \"source\") {\n cloned[i2] = value;\n } else if (Array.isArray(value)) {\n cloned[i2] = value.map((j) => cloneNode(j, cloned));\n } else {\n if (type === \"object\" && value !== null) value = cloneNode(value);\n cloned[i2] = value;\n }\n }\n return cloned;\n}\nlet Node$4 = class Node3 {\n constructor(defaults = {}) {\n this.raws = {};\n this[isClean$2] = false;\n this[my$2] = true;\n for (let name in defaults) {\n if (name === \"nodes\") {\n this.nodes = [];\n for (let node2 of defaults[name]) {\n if (typeof node2.clone === \"function\") {\n this.append(node2.clone());\n } else {\n this.append(node2);\n }\n }\n } else {\n this[name] = defaults[name];\n }\n }\n }\n addToError(error) {\n error.postcssNode = this;\n if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n let s2 = this.source;\n error.stack = error.stack.replace(\n /\\n\\s{4}at /,\n `$&${s2.input.from}:${s2.start.line}:${s2.start.column}$&`\n );\n }\n return error;\n }\n after(add) {\n this.parent.insertAfter(this, add);\n return this;\n }\n assign(overrides = {}) {\n for (let name in overrides) {\n this[name] = overrides[name];\n }\n return this;\n }\n before(add) {\n this.parent.insertBefore(this, add);\n return this;\n }\n cleanRaws(keepBetween) {\n delete this.raws.before;\n delete this.raws.after;\n if (!keepBetween) delete this.raws.between;\n }\n clone(overrides = {}) {\n let cloned = cloneNode(this);\n for (let name in overrides) {\n cloned[name] = overrides[name];\n }\n return cloned;\n }\n cloneAfter(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertAfter(this, cloned);\n return cloned;\n }\n cloneBefore(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertBefore(this, cloned);\n return cloned;\n }\n error(message, opts = {}) {\n if (this.source) {\n let { end, start } = this.rangeBy(opts);\n return this.source.input.error(\n message,\n { column: start.column, line: start.line },\n { column: end.column, line: end.line },\n opts\n );\n }\n return new CssSyntaxError$2(message);\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"prop\" || prop === \"value\" || prop === \"name\" || prop === \"params\" || prop === \"important\" || /* c8 ignore next */\n prop === \"text\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n markDirty() {\n if (this[isClean$2]) {\n this[isClean$2] = false;\n let next = this;\n while (next = next.parent) {\n next[isClean$2] = false;\n }\n }\n }\n next() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 + 1];\n }\n positionBy(opts, stringRepresentation) {\n let pos = this.source.start;\n if (opts.index) {\n pos = this.positionInside(opts.index, stringRepresentation);\n } else if (opts.word) {\n stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) pos = this.positionInside(index2, stringRepresentation);\n }\n return pos;\n }\n positionInside(index2, stringRepresentation) {\n let string = stringRepresentation || this.toString();\n let column = this.source.start.column;\n let line = this.source.start.line;\n for (let i2 = 0; i2 < index2; i2++) {\n if (string[i2] === \"\\n\") {\n column = 1;\n line += 1;\n } else {\n column += 1;\n }\n }\n return { column, line };\n }\n prev() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 - 1];\n }\n rangeBy(opts) {\n let start = {\n column: this.source.start.column,\n line: this.source.start.line\n };\n let end = this.source.end ? {\n column: this.source.end.column + 1,\n line: this.source.end.line\n } : {\n column: start.column + 1,\n line: start.line\n };\n if (opts.word) {\n let stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) {\n start = this.positionInside(index2, stringRepresentation);\n end = this.positionInside(index2 + opts.word.length, stringRepresentation);\n }\n } else {\n if (opts.start) {\n start = {\n column: opts.start.column,\n line: opts.start.line\n };\n } else if (opts.index) {\n start = this.positionInside(opts.index);\n }\n if (opts.end) {\n end = {\n column: opts.end.column,\n line: opts.end.line\n };\n } else if (typeof opts.endIndex === \"number\") {\n end = this.positionInside(opts.endIndex);\n } else if (opts.index) {\n end = this.positionInside(opts.index + 1);\n }\n }\n if (end.line < start.line || end.line === start.line && end.column <= start.column) {\n end = { column: start.column + 1, line: start.line };\n }\n return { end, start };\n }\n raw(prop, defaultType) {\n let str = new Stringifier22();\n return str.raw(this, prop, defaultType);\n }\n remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n this.parent = void 0;\n return this;\n }\n replaceWith(...nodes) {\n if (this.parent) {\n let bookmark = this;\n let foundSelf = false;\n for (let node2 of nodes) {\n if (node2 === this) {\n foundSelf = true;\n } else if (foundSelf) {\n this.parent.insertAfter(bookmark, node2);\n bookmark = node2;\n } else {\n this.parent.insertBefore(bookmark, node2);\n }\n }\n if (!foundSelf) {\n this.remove();\n }\n }\n return this;\n }\n root() {\n let result2 = this;\n while (result2.parent && result2.parent.type !== \"document\") {\n result2 = result2.parent;\n }\n return result2;\n }\n toJSON(_, inputs) {\n let fixed = {};\n let emitInputs = inputs == null;\n inputs = inputs || /* @__PURE__ */ new Map();\n let inputsNextIndex = 0;\n for (let name in this) {\n if (!Object.prototype.hasOwnProperty.call(this, name)) {\n continue;\n }\n if (name === \"parent\" || name === \"proxyCache\") continue;\n let value = this[name];\n if (Array.isArray(value)) {\n fixed[name] = value.map((i2) => {\n if (typeof i2 === \"object\" && i2.toJSON) {\n return i2.toJSON(null, inputs);\n } else {\n return i2;\n }\n });\n } else if (typeof value === \"object\" && value.toJSON) {\n fixed[name] = value.toJSON(null, inputs);\n } else if (name === \"source\") {\n let inputId = inputs.get(value.input);\n if (inputId == null) {\n inputId = inputsNextIndex;\n inputs.set(value.input, inputsNextIndex);\n inputsNextIndex++;\n }\n fixed[name] = {\n end: value.end,\n inputId,\n start: value.start\n };\n } else {\n fixed[name] = value;\n }\n }\n if (emitInputs) {\n fixed.inputs = [...inputs.keys()].map((input2) => input2.toJSON());\n }\n return fixed;\n }\n toProxy() {\n if (!this.proxyCache) {\n this.proxyCache = new Proxy(this, this.getProxyProcessor());\n }\n return this.proxyCache;\n }\n toString(stringifier2 = stringify$3) {\n if (stringifier2.stringify) stringifier2 = stringifier2.stringify;\n let result2 = \"\";\n stringifier2(this, (i2) => {\n result2 += i2;\n });\n return result2;\n }\n warn(result2, text, opts) {\n let data = { node: this };\n for (let i2 in opts) data[i2] = opts[i2];\n return result2.warn(text, data);\n }\n get proxyOf() {\n return this;\n }\n};\nvar node = Node$4;\nNode$4.default = Node$4;\nlet Node$3 = node;\nlet Declaration$4 = class Declaration2 extends Node$3 {\n constructor(defaults) {\n if (defaults && typeof defaults.value !== \"undefined\" && typeof defaults.value !== \"string\") {\n defaults = { ...defaults, value: String(defaults.value) };\n }\n super(defaults);\n this.type = \"decl\";\n }\n get variable() {\n return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n }\n};\nvar declaration = Declaration$4;\nDeclaration$4.default = Declaration$4;\nlet urlAlphabet = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\nlet customAlphabet = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = \"\";\n let i2 = size;\n while (i2--) {\n id += alphabet[Math.random() * alphabet.length | 0];\n }\n return id;\n };\n};\nlet nanoid$1 = (size = 21) => {\n let id = \"\";\n let i2 = size;\n while (i2--) {\n id += urlAlphabet[Math.random() * 64 | 0];\n }\n return id;\n};\nvar nonSecure = { nanoid: nanoid$1, customAlphabet };\nlet { SourceMapConsumer: SourceMapConsumer$2, SourceMapGenerator: SourceMapGenerator$2 } = require$$2;\nlet { existsSync, readFileSync } = require$$2;\nlet { dirname: dirname$1, join } = require$$2;\nfunction fromBase64(str) {\n if (Buffer) {\n return Buffer.from(str, \"base64\").toString();\n } else {\n return window.atob(str);\n }\n}\nlet PreviousMap$2 = class PreviousMap2 {\n constructor(css, opts) {\n if (opts.map === false) return;\n this.loadAnnotation(css);\n this.inline = this.startWith(this.annotation, \"data:\");\n let prev = opts.map ? opts.map.prev : void 0;\n let text = this.loadMap(opts.from, prev);\n if (!this.mapFile && opts.from) {\n this.mapFile = opts.from;\n }\n if (this.mapFile) this.root = dirname$1(this.mapFile);\n if (text) this.text = text;\n }\n consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new SourceMapConsumer$2(this.text);\n }\n return this.consumerCache;\n }\n decodeInline(text) {\n let baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/;\n let baseUri = /^data:application\\/json;base64,/;\n let charsetUri = /^data:application\\/json;charset=utf-?8,/;\n let uri = /^data:application\\/json,/;\n if (charsetUri.test(text) || uri.test(text)) {\n return decodeURIComponent(text.substr(RegExp.lastMatch.length));\n }\n if (baseCharsetUri.test(text) || baseUri.test(text)) {\n return fromBase64(text.substr(RegExp.lastMatch.length));\n }\n let encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n throw new Error(\"Unsupported source map encoding \" + encoding);\n }\n getAnnotationURL(sourceMapString) {\n return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n }\n isMap(map) {\n if (typeof map !== \"object\") return false;\n return typeof map.mappings === \"string\" || typeof map._mappings === \"string\" || Array.isArray(map.sections);\n }\n loadAnnotation(css) {\n let comments = css.match(/\\/\\*\\s*# sourceMappingURL=/gm);\n if (!comments) return;\n let start = css.lastIndexOf(comments.pop());\n let end = css.indexOf(\"*/\", start);\n if (start > -1 && end > -1) {\n this.annotation = this.getAnnotationURL(css.substring(start, end));\n }\n }\n loadFile(path) {\n this.root = dirname$1(path);\n if (existsSync(path)) {\n this.mapFile = path;\n return readFileSync(path, \"utf-8\").toString().trim();\n }\n }\n loadMap(file, prev) {\n if (prev === false) return false;\n if (prev) {\n if (typeof prev === \"string\") {\n return prev;\n } else if (typeof prev === \"function\") {\n let prevPath = prev(file);\n if (prevPath) {\n let map = this.loadFile(prevPath);\n if (!map) {\n throw new Error(\n \"Unable to load previous source map: \" + prevPath.toString()\n );\n }\n return map;\n }\n } else if (prev instanceof SourceMapConsumer$2) {\n return SourceMapGenerator$2.fromSourceMap(prev).toString();\n } else if (prev instanceof SourceMapGenerator$2) {\n return prev.toString();\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev);\n } else {\n throw new Error(\n \"Unsupported previous source map format: \" + prev.toString()\n );\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation);\n } else if (this.annotation) {\n let map = this.annotation;\n if (file) map = join(dirname$1(file), map);\n return this.loadFile(map);\n }\n }\n startWith(string, start) {\n if (!string) return false;\n return string.substr(0, start.length) === start;\n }\n withContent() {\n return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n }\n};\nvar previousMap = PreviousMap$2;\nPreviousMap$2.default = PreviousMap$2;\nlet { SourceMapConsumer: SourceMapConsumer$1, SourceMapGenerator: SourceMapGenerator$1 } = require$$2;\nlet { fileURLToPath, pathToFileURL: pathToFileURL$1 } = require$$2;\nlet { isAbsolute, resolve: resolve$1 } = require$$2;\nlet { nanoid } = nonSecure;\nlet terminalHighlight = require$$2;\nlet CssSyntaxError$1 = cssSyntaxError;\nlet PreviousMap$1 = previousMap;\nlet fromOffsetCache = Symbol(\"fromOffsetCache\");\nlet sourceMapAvailable$1 = Boolean(SourceMapConsumer$1 && SourceMapGenerator$1);\nlet pathAvailable$1 = Boolean(resolve$1 && isAbsolute);\nlet Input$4 = class Input2 {\n constructor(css, opts = {}) {\n if (css === null || typeof css === \"undefined\" || typeof css === \"object\" && !css.toString) {\n throw new Error(`PostCSS received ${css} instead of CSS string`);\n }\n this.css = css.toString();\n if (this.css[0] === \"\\uFEFF\" || this.css[0] === \"￾\") {\n this.hasBOM = true;\n this.css = this.css.slice(1);\n } else {\n this.hasBOM = false;\n }\n if (opts.from) {\n if (!pathAvailable$1 || /^\\w+:\\/\\//.test(opts.from) || isAbsolute(opts.from)) {\n this.file = opts.from;\n } else {\n this.file = resolve$1(opts.from);\n }\n }\n if (pathAvailable$1 && sourceMapAvailable$1) {\n let map = new PreviousMap$1(this.css, opts);\n if (map.text) {\n this.map = map;\n let file = map.consumer().file;\n if (!this.file && file) this.file = this.mapResolve(file);\n }\n }\n if (!this.file) {\n this.id = \"\";\n }\n if (this.map) this.map.file = this.from;\n }\n error(message, line, column, opts = {}) {\n let result2, endLine, endColumn;\n if (line && typeof line === \"object\") {\n let start = line;\n let end = column;\n if (typeof start.offset === \"number\") {\n let pos = this.fromOffset(start.offset);\n line = pos.line;\n column = pos.col;\n } else {\n line = start.line;\n column = start.column;\n }\n if (typeof end.offset === \"number\") {\n let pos = this.fromOffset(end.offset);\n endLine = pos.line;\n endColumn = pos.col;\n } else {\n endLine = end.line;\n endColumn = end.column;\n }\n } else if (!column) {\n let pos = this.fromOffset(line);\n line = pos.line;\n column = pos.col;\n }\n let origin = this.origin(line, column, endLine, endColumn);\n if (origin) {\n result2 = new CssSyntaxError$1(\n message,\n origin.endLine === void 0 ? origin.line : { column: origin.column, line: origin.line },\n origin.endLine === void 0 ? origin.column : { column: origin.endColumn, line: origin.endLine },\n origin.source,\n origin.file,\n opts.plugin\n );\n } else {\n result2 = new CssSyntaxError$1(\n message,\n endLine === void 0 ? line : { column, line },\n endLine === void 0 ? column : { column: endColumn, line: endLine },\n this.css,\n this.file,\n opts.plugin\n );\n }\n result2.input = { column, endColumn, endLine, line, source: this.css };\n if (this.file) {\n if (pathToFileURL$1) {\n result2.input.url = pathToFileURL$1(this.file).toString();\n }\n result2.input.file = this.file;\n }\n return result2;\n }\n fromOffset(offset) {\n let lastLine, lineToIndex;\n if (!this[fromOffsetCache]) {\n let lines = this.css.split(\"\\n\");\n lineToIndex = new Array(lines.length);\n let prevIndex = 0;\n for (let i2 = 0, l2 = lines.length; i2 < l2; i2++) {\n lineToIndex[i2] = prevIndex;\n prevIndex += lines[i2].length + 1;\n }\n this[fromOffsetCache] = lineToIndex;\n } else {\n lineToIndex = this[fromOffsetCache];\n }\n lastLine = lineToIndex[lineToIndex.length - 1];\n let min = 0;\n if (offset >= lastLine) {\n min = lineToIndex.length - 1;\n } else {\n let max = lineToIndex.length - 2;\n let mid;\n while (min < max) {\n mid = min + (max - min >> 1);\n if (offset < lineToIndex[mid]) {\n max = mid - 1;\n } else if (offset >= lineToIndex[mid + 1]) {\n min = mid + 1;\n } else {\n min = mid;\n break;\n }\n }\n }\n return {\n col: offset - lineToIndex[min] + 1,\n line: min + 1\n };\n }\n mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file;\n }\n return resolve$1(this.map.consumer().sourceRoot || this.map.root || \".\", file);\n }\n origin(line, column, endLine, endColumn) {\n if (!this.map) return false;\n let consumer = this.map.consumer();\n let from = consumer.originalPositionFor({ column, line });\n if (!from.source) return false;\n let to;\n if (typeof endLine === \"number\") {\n to = consumer.originalPositionFor({ column: endColumn, line: endLine });\n }\n let fromUrl;\n if (isAbsolute(from.source)) {\n fromUrl = pathToFileURL$1(from.source);\n } else {\n fromUrl = new URL(\n from.source,\n this.map.consumer().sourceRoot || pathToFileURL$1(this.map.mapFile)\n );\n }\n let result2 = {\n column: from.column,\n endColumn: to && to.column,\n endLine: to && to.line,\n line: from.line,\n url: fromUrl.toString()\n };\n if (fromUrl.protocol === \"file:\") {\n if (fileURLToPath) {\n result2.file = fileURLToPath(fromUrl);\n } else {\n throw new Error(`file: protocol is not available in this PostCSS build`);\n }\n }\n let source = consumer.sourceContentFor(from.source);\n if (source) result2.source = source;\n return result2;\n }\n toJSON() {\n let json = {};\n for (let name of [\"hasBOM\", \"css\", \"file\", \"id\"]) {\n if (this[name] != null) {\n json[name] = this[name];\n }\n }\n if (this.map) {\n json.map = { ...this.map };\n if (json.map.consumerCache) {\n json.map.consumerCache = void 0;\n }\n }\n return json;\n }\n get from() {\n return this.file || this.id;\n }\n};\nvar input = Input$4;\nInput$4.default = Input$4;\nif (terminalHighlight && terminalHighlight.registerInput) {\n terminalHighlight.registerInput(Input$4);\n}\nlet { SourceMapConsumer, SourceMapGenerator } = require$$2;\nlet { dirname, relative, resolve, sep } = require$$2;\nlet { pathToFileURL } = require$$2;\nlet Input$3 = input;\nlet sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator);\nlet pathAvailable = Boolean(dirname && resolve && relative && sep);\nlet MapGenerator$2 = class MapGenerator2 {\n constructor(stringify2, root2, opts, cssString) {\n this.stringify = stringify2;\n this.mapOpts = opts.map || {};\n this.root = root2;\n this.opts = opts;\n this.css = cssString;\n this.originalCSS = cssString;\n this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute;\n this.memoizedFileURLs = /* @__PURE__ */ new Map();\n this.memoizedPaths = /* @__PURE__ */ new Map();\n this.memoizedURLs = /* @__PURE__ */ new Map();\n }\n addAnnotation() {\n let content;\n if (this.isInline()) {\n content = \"data:application/json;base64,\" + this.toBase64(this.map.toString());\n } else if (typeof this.mapOpts.annotation === \"string\") {\n content = this.mapOpts.annotation;\n } else if (typeof this.mapOpts.annotation === \"function\") {\n content = this.mapOpts.annotation(this.opts.to, this.root);\n } else {\n content = this.outputFile() + \".map\";\n }\n let eol = \"\\n\";\n if (this.css.includes(\"\\r\\n\")) eol = \"\\r\\n\";\n this.css += eol + \"/*# sourceMappingURL=\" + content + \" */\";\n }\n applyPrevMaps() {\n for (let prev of this.previous()) {\n let from = this.toUrl(this.path(prev.file));\n let root2 = prev.root || dirname(prev.file);\n let map;\n if (this.mapOpts.sourcesContent === false) {\n map = new SourceMapConsumer(prev.text);\n if (map.sourcesContent) {\n map.sourcesContent = null;\n }\n } else {\n map = prev.consumer();\n }\n this.map.applySourceMap(map, from, this.toUrl(this.path(root2)));\n }\n }\n clearAnnotation() {\n if (this.mapOpts.annotation === false) return;\n if (this.root) {\n let node2;\n for (let i2 = this.root.nodes.length - 1; i2 >= 0; i2--) {\n node2 = this.root.nodes[i2];\n if (node2.type !== \"comment\") continue;\n if (node2.text.indexOf(\"# sourceMappingURL=\") === 0) {\n this.root.removeChild(i2);\n }\n }\n } else if (this.css) {\n this.css = this.css.replace(/\\n*?\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\");\n }\n }\n generate() {\n this.clearAnnotation();\n if (pathAvailable && sourceMapAvailable && this.isMap()) {\n return this.generateMap();\n } else {\n let result2 = \"\";\n this.stringify(this.root, (i2) => {\n result2 += i2;\n });\n return [result2];\n }\n }\n generateMap() {\n if (this.root) {\n this.generateString();\n } else if (this.previous().length === 1) {\n let prev = this.previous()[0].consumer();\n prev.file = this.outputFile();\n this.map = SourceMapGenerator.fromSourceMap(prev, {\n ignoreInvalidMapping: true\n });\n } else {\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n this.map.addMapping({\n generated: { column: 0, line: 1 },\n original: { column: 0, line: 1 },\n source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\"\n });\n }\n if (this.isSourcesContent()) this.setSourcesContent();\n if (this.root && this.previous().length > 0) this.applyPrevMaps();\n if (this.isAnnotation()) this.addAnnotation();\n if (this.isInline()) {\n return [this.css];\n } else {\n return [this.css, this.map];\n }\n }\n generateString() {\n this.css = \"\";\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n let line = 1;\n let column = 1;\n let noSource = \"\";\n let mapping = {\n generated: { column: 0, line: 0 },\n original: { column: 0, line: 0 },\n source: \"\"\n };\n let lines, last;\n this.stringify(this.root, (str, node2, type) => {\n this.css += str;\n if (node2 && type !== \"end\") {\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n if (node2.source && node2.source.start) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.start.line;\n mapping.original.column = node2.source.start.column - 1;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n this.map.addMapping(mapping);\n }\n }\n lines = str.match(/\\n/g);\n if (lines) {\n line += lines.length;\n last = str.lastIndexOf(\"\\n\");\n column = str.length - last;\n } else {\n column += str.length;\n }\n if (node2 && type !== \"start\") {\n let p = node2.parent || { raws: {} };\n let childless = node2.type === \"decl\" || node2.type === \"atrule\" && !node2.nodes;\n if (!childless || node2 !== p.last || p.raws.semicolon) {\n if (node2.source && node2.source.end) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.end.line;\n mapping.original.column = node2.source.end.column - 1;\n mapping.generated.line = line;\n mapping.generated.column = column - 2;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n this.map.addMapping(mapping);\n }\n }\n }\n });\n }\n isAnnotation() {\n if (this.isInline()) {\n return true;\n }\n if (typeof this.mapOpts.annotation !== \"undefined\") {\n return this.mapOpts.annotation;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.annotation);\n }\n return true;\n }\n isInline() {\n if (typeof this.mapOpts.inline !== \"undefined\") {\n return this.mapOpts.inline;\n }\n let annotation = this.mapOpts.annotation;\n if (typeof annotation !== \"undefined\" && annotation !== true) {\n return false;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.inline);\n }\n return true;\n }\n isMap() {\n if (typeof this.opts.map !== \"undefined\") {\n return !!this.opts.map;\n }\n return this.previous().length > 0;\n }\n isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== \"undefined\") {\n return this.mapOpts.sourcesContent;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.withContent());\n }\n return true;\n }\n outputFile() {\n if (this.opts.to) {\n return this.path(this.opts.to);\n } else if (this.opts.from) {\n return this.path(this.opts.from);\n } else {\n return \"to.css\";\n }\n }\n path(file) {\n if (this.mapOpts.absolute) return file;\n if (file.charCodeAt(0) === 60) return file;\n if (/^\\w+:\\/\\//.test(file)) return file;\n let cached = this.memoizedPaths.get(file);\n if (cached) return cached;\n let from = this.opts.to ? dirname(this.opts.to) : \".\";\n if (typeof this.mapOpts.annotation === \"string\") {\n from = dirname(resolve(from, this.mapOpts.annotation));\n }\n let path = relative(from, file);\n this.memoizedPaths.set(file, path);\n return path;\n }\n previous() {\n if (!this.previousMaps) {\n this.previousMaps = [];\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source && node2.source.input.map) {\n let map = node2.source.input.map;\n if (!this.previousMaps.includes(map)) {\n this.previousMaps.push(map);\n }\n }\n });\n } else {\n let input2 = new Input$3(this.originalCSS, this.opts);\n if (input2.map) this.previousMaps.push(input2.map);\n }\n }\n return this.previousMaps;\n }\n setSourcesContent() {\n let already = {};\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source) {\n let from = node2.source.input.from;\n if (from && !already[from]) {\n already[from] = true;\n let fromUrl = this.usesFileUrls ? this.toFileUrl(from) : this.toUrl(this.path(from));\n this.map.setSourceContent(fromUrl, node2.source.input.css);\n }\n }\n });\n } else if (this.css) {\n let from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\";\n this.map.setSourceContent(from, this.css);\n }\n }\n sourcePath(node2) {\n if (this.mapOpts.from) {\n return this.toUrl(this.mapOpts.from);\n } else if (this.usesFileUrls) {\n return this.toFileUrl(node2.source.input.from);\n } else {\n return this.toUrl(this.path(node2.source.input.from));\n }\n }\n toBase64(str) {\n if (Buffer) {\n return Buffer.from(str).toString(\"base64\");\n } else {\n return window.btoa(unescape(encodeURIComponent(str)));\n }\n }\n toFileUrl(path) {\n let cached = this.memoizedFileURLs.get(path);\n if (cached) return cached;\n if (pathToFileURL) {\n let fileURL = pathToFileURL(path).toString();\n this.memoizedFileURLs.set(path, fileURL);\n return fileURL;\n } else {\n throw new Error(\n \"`map.absolute` option is not available in this PostCSS build\"\n );\n }\n }\n toUrl(path) {\n let cached = this.memoizedURLs.get(path);\n if (cached) return cached;\n if (sep === \"\\\\\") {\n path = path.replace(/\\\\/g, \"/\");\n }\n let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent);\n this.memoizedURLs.set(path, url);\n return url;\n }\n};\nvar mapGenerator = MapGenerator$2;\nlet Node$2 = node;\nlet Comment$4 = class Comment2 extends Node$2 {\n constructor(defaults) {\n super(defaults);\n this.type = \"comment\";\n }\n};\nvar comment = Comment$4;\nComment$4.default = Comment$4;\nlet { isClean: isClean$1, my: my$1 } = symbols;\nlet Declaration$3 = declaration;\nlet Comment$3 = comment;\nlet Node$1 = node;\nlet parse$4, Rule$4, AtRule$4, Root$6;\nfunction cleanSource(nodes) {\n return nodes.map((i2) => {\n if (i2.nodes) i2.nodes = cleanSource(i2.nodes);\n delete i2.source;\n return i2;\n });\n}\nfunction markDirtyUp(node2) {\n node2[isClean$1] = false;\n if (node2.proxyOf.nodes) {\n for (let i2 of node2.proxyOf.nodes) {\n markDirtyUp(i2);\n }\n }\n}\nlet Container$7 = class Container2 extends Node$1 {\n append(...children) {\n for (let child of children) {\n let nodes = this.normalize(child, this.last);\n for (let node2 of nodes) this.proxyOf.nodes.push(node2);\n }\n this.markDirty();\n return this;\n }\n cleanRaws(keepBetween) {\n super.cleanRaws(keepBetween);\n if (this.nodes) {\n for (let node2 of this.nodes) node2.cleanRaws(keepBetween);\n }\n }\n each(callback) {\n if (!this.proxyOf.nodes) return void 0;\n let iterator = this.getIterator();\n let index2, result2;\n while (this.indexes[iterator] < this.proxyOf.nodes.length) {\n index2 = this.indexes[iterator];\n result2 = callback(this.proxyOf.nodes[index2], index2);\n if (result2 === false) break;\n this.indexes[iterator] += 1;\n }\n delete this.indexes[iterator];\n return result2;\n }\n every(condition) {\n return this.nodes.every(condition);\n }\n getIterator() {\n if (!this.lastEach) this.lastEach = 0;\n if (!this.indexes) this.indexes = {};\n this.lastEach += 1;\n let iterator = this.lastEach;\n this.indexes[iterator] = 0;\n return iterator;\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (!node2[prop]) {\n return node2[prop];\n } else if (prop === \"each\" || typeof prop === \"string\" && prop.startsWith(\"walk\")) {\n return (...args) => {\n return node2[prop](\n ...args.map((i2) => {\n if (typeof i2 === \"function\") {\n return (child, index2) => i2(child.toProxy(), index2);\n } else {\n return i2;\n }\n })\n );\n };\n } else if (prop === \"every\" || prop === \"some\") {\n return (cb) => {\n return node2[prop](\n (child, ...other) => cb(child.toProxy(), ...other)\n );\n };\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else if (prop === \"nodes\") {\n return node2.nodes.map((i2) => i2.toProxy());\n } else if (prop === \"first\" || prop === \"last\") {\n return node2[prop].toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"name\" || prop === \"params\" || prop === \"selector\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n index(child) {\n if (typeof child === \"number\") return child;\n if (child.proxyOf) child = child.proxyOf;\n return this.proxyOf.nodes.indexOf(child);\n }\n insertAfter(exist, add) {\n let existIndex = this.index(exist);\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex < index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n insertBefore(exist, add) {\n let existIndex = this.index(exist);\n let type = existIndex === 0 ? \"prepend\" : false;\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex <= index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n normalize(nodes, sample) {\n if (typeof nodes === \"string\") {\n nodes = cleanSource(parse$4(nodes).nodes);\n } else if (typeof nodes === \"undefined\") {\n nodes = [];\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type === \"root\" && this.type !== \"document\") {\n nodes = nodes.nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type) {\n nodes = [nodes];\n } else if (nodes.prop) {\n if (typeof nodes.value === \"undefined\") {\n throw new Error(\"Value field is missed in node creation\");\n } else if (typeof nodes.value !== \"string\") {\n nodes.value = String(nodes.value);\n }\n nodes = [new Declaration$3(nodes)];\n } else if (nodes.selector) {\n nodes = [new Rule$4(nodes)];\n } else if (nodes.name) {\n nodes = [new AtRule$4(nodes)];\n } else if (nodes.text) {\n nodes = [new Comment$3(nodes)];\n } else {\n throw new Error(\"Unknown node type in node creation\");\n }\n let processed = nodes.map((i2) => {\n if (!i2[my$1]) Container2.rebuild(i2);\n i2 = i2.proxyOf;\n if (i2.parent) i2.parent.removeChild(i2);\n if (i2[isClean$1]) markDirtyUp(i2);\n if (typeof i2.raws.before === \"undefined\") {\n if (sample && typeof sample.raws.before !== \"undefined\") {\n i2.raws.before = sample.raws.before.replace(/\\S/g, \"\");\n }\n }\n i2.parent = this.proxyOf;\n return i2;\n });\n return processed;\n }\n prepend(...children) {\n children = children.reverse();\n for (let child of children) {\n let nodes = this.normalize(child, this.first, \"prepend\").reverse();\n for (let node2 of nodes) this.proxyOf.nodes.unshift(node2);\n for (let id in this.indexes) {\n this.indexes[id] = this.indexes[id] + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n push(child) {\n child.parent = this;\n this.proxyOf.nodes.push(child);\n return this;\n }\n removeAll() {\n for (let node2 of this.proxyOf.nodes) node2.parent = void 0;\n this.proxyOf.nodes = [];\n this.markDirty();\n return this;\n }\n removeChild(child) {\n child = this.index(child);\n this.proxyOf.nodes[child].parent = void 0;\n this.proxyOf.nodes.splice(child, 1);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (index2 >= child) {\n this.indexes[id] = index2 - 1;\n }\n }\n this.markDirty();\n return this;\n }\n replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {};\n }\n this.walkDecls((decl) => {\n if (opts.props && !opts.props.includes(decl.prop)) return;\n if (opts.fast && !decl.value.includes(opts.fast)) return;\n decl.value = decl.value.replace(pattern, callback);\n });\n this.markDirty();\n return this;\n }\n some(condition) {\n return this.nodes.some(condition);\n }\n walk(callback) {\n return this.each((child, i2) => {\n let result2;\n try {\n result2 = callback(child, i2);\n } catch (e2) {\n throw child.addToError(e2);\n }\n if (result2 !== false && child.walk) {\n result2 = child.walk(callback);\n }\n return result2;\n });\n }\n walkAtRules(name, callback) {\n if (!callback) {\n callback = name;\n return this.walk((child, i2) => {\n if (child.type === \"atrule\") {\n return callback(child, i2);\n }\n });\n }\n if (name instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && name.test(child.name)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && child.name === name) {\n return callback(child, i2);\n }\n });\n }\n walkComments(callback) {\n return this.walk((child, i2) => {\n if (child.type === \"comment\") {\n return callback(child, i2);\n }\n });\n }\n walkDecls(prop, callback) {\n if (!callback) {\n callback = prop;\n return this.walk((child, i2) => {\n if (child.type === \"decl\") {\n return callback(child, i2);\n }\n });\n }\n if (prop instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && prop.test(child.prop)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && child.prop === prop) {\n return callback(child, i2);\n }\n });\n }\n walkRules(selector, callback) {\n if (!callback) {\n callback = selector;\n return this.walk((child, i2) => {\n if (child.type === \"rule\") {\n return callback(child, i2);\n }\n });\n }\n if (selector instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && selector.test(child.selector)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && child.selector === selector) {\n return callback(child, i2);\n }\n });\n }\n get first() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[0];\n }\n get last() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n }\n};\nContainer$7.registerParse = (dependant) => {\n parse$4 = dependant;\n};\nContainer$7.registerRule = (dependant) => {\n Rule$4 = dependant;\n};\nContainer$7.registerAtRule = (dependant) => {\n AtRule$4 = dependant;\n};\nContainer$7.registerRoot = (dependant) => {\n Root$6 = dependant;\n};\nvar container = Container$7;\nContainer$7.default = Container$7;\nContainer$7.rebuild = (node2) => {\n if (node2.type === \"atrule\") {\n Object.setPrototypeOf(node2, AtRule$4.prototype);\n } else if (node2.type === \"rule\") {\n Object.setPrototypeOf(node2, Rule$4.prototype);\n } else if (node2.type === \"decl\") {\n Object.setPrototypeOf(node2, Declaration$3.prototype);\n } else if (node2.type === \"comment\") {\n Object.setPrototypeOf(node2, Comment$3.prototype);\n } else if (node2.type === \"root\") {\n Object.setPrototypeOf(node2, Root$6.prototype);\n }\n node2[my$1] = true;\n if (node2.nodes) {\n node2.nodes.forEach((child) => {\n Container$7.rebuild(child);\n });\n }\n};\nlet Container$6 = container;\nlet LazyResult$4, Processor$3;\nlet Document$3 = class Document23 extends Container$6 {\n constructor(defaults) {\n super({ type: \"document\", ...defaults });\n if (!this.nodes) {\n this.nodes = [];\n }\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$4(new Processor$3(), this, opts);\n return lazy.stringify();\n }\n};\nDocument$3.registerLazyResult = (dependant) => {\n LazyResult$4 = dependant;\n};\nDocument$3.registerProcessor = (dependant) => {\n Processor$3 = dependant;\n};\nvar document$1 = Document$3;\nDocument$3.default = Document$3;\nlet printed = {};\nvar warnOnce$2 = function warnOnce2(message) {\n if (printed[message]) return;\n printed[message] = true;\n if (typeof console !== \"undefined\" && console.warn) {\n console.warn(message);\n }\n};\nlet Warning$2 = class Warning2 {\n constructor(text, opts = {}) {\n this.type = \"warning\";\n this.text = text;\n if (opts.node && opts.node.source) {\n let range = opts.node.rangeBy(opts);\n this.line = range.start.line;\n this.column = range.start.column;\n this.endLine = range.end.line;\n this.endColumn = range.end.column;\n }\n for (let opt in opts) this[opt] = opts[opt];\n }\n toString() {\n if (this.node) {\n return this.node.error(this.text, {\n index: this.index,\n plugin: this.plugin,\n word: this.word\n }).message;\n }\n if (this.plugin) {\n return this.plugin + \": \" + this.text;\n }\n return this.text;\n }\n};\nvar warning = Warning$2;\nWarning$2.default = Warning$2;\nlet Warning$1 = warning;\nlet Result$3 = class Result2 {\n constructor(processor2, root2, opts) {\n this.processor = processor2;\n this.messages = [];\n this.root = root2;\n this.opts = opts;\n this.css = void 0;\n this.map = void 0;\n }\n toString() {\n return this.css;\n }\n warn(text, opts = {}) {\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin;\n }\n }\n let warning2 = new Warning$1(text, opts);\n this.messages.push(warning2);\n return warning2;\n }\n warnings() {\n return this.messages.filter((i2) => i2.type === \"warning\");\n }\n get content() {\n return this.css;\n }\n};\nvar result = Result$3;\nResult$3.default = Result$3;\nconst SINGLE_QUOTE = \"'\".charCodeAt(0);\nconst DOUBLE_QUOTE = '\"'.charCodeAt(0);\nconst BACKSLASH = \"\\\\\".charCodeAt(0);\nconst SLASH = \"/\".charCodeAt(0);\nconst NEWLINE = \"\\n\".charCodeAt(0);\nconst SPACE = \" \".charCodeAt(0);\nconst FEED = \"\\f\".charCodeAt(0);\nconst TAB = \"\t\".charCodeAt(0);\nconst CR = \"\\r\".charCodeAt(0);\nconst OPEN_SQUARE = \"[\".charCodeAt(0);\nconst CLOSE_SQUARE = \"]\".charCodeAt(0);\nconst OPEN_PARENTHESES = \"(\".charCodeAt(0);\nconst CLOSE_PARENTHESES = \")\".charCodeAt(0);\nconst OPEN_CURLY = \"{\".charCodeAt(0);\nconst CLOSE_CURLY = \"}\".charCodeAt(0);\nconst SEMICOLON = \";\".charCodeAt(0);\nconst ASTERISK = \"*\".charCodeAt(0);\nconst COLON = \":\".charCodeAt(0);\nconst AT = \"@\".charCodeAt(0);\nconst RE_AT_END = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g;\nconst RE_WORD_END = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g;\nconst RE_BAD_BRACKET = /.[\\r\\n\"'(/\\\\]/;\nconst RE_HEX_ESCAPE = /[\\da-f]/i;\nvar tokenize = function tokenizer2(input2, options = {}) {\n let css = input2.css.valueOf();\n let ignore = options.ignoreErrors;\n let code, next, quote, content, escape;\n let escaped, escapePos, prev, n2, currentToken;\n let length = css.length;\n let pos = 0;\n let buffer = [];\n let returned = [];\n function position() {\n return pos;\n }\n function unclosed(what) {\n throw input2.error(\"Unclosed \" + what, pos);\n }\n function endOfFile() {\n return returned.length === 0 && pos >= length;\n }\n function nextToken(opts) {\n if (returned.length) return returned.pop();\n if (pos >= length) return;\n let ignoreUnclosed = opts ? opts.ignoreUnclosed : false;\n code = css.charCodeAt(pos);\n switch (code) {\n case NEWLINE:\n case SPACE:\n case TAB:\n case CR:\n case FEED: {\n next = pos;\n do {\n next += 1;\n code = css.charCodeAt(next);\n } while (code === SPACE || code === NEWLINE || code === TAB || code === CR || code === FEED);\n currentToken = [\"space\", css.slice(pos, next)];\n pos = next - 1;\n break;\n }\n case OPEN_SQUARE:\n case CLOSE_SQUARE:\n case OPEN_CURLY:\n case CLOSE_CURLY:\n case COLON:\n case SEMICOLON:\n case CLOSE_PARENTHESES: {\n let controlChar = String.fromCharCode(code);\n currentToken = [controlChar, controlChar, pos];\n break;\n }\n case OPEN_PARENTHESES: {\n prev = buffer.length ? buffer.pop()[1] : \"\";\n n2 = css.charCodeAt(pos + 1);\n if (prev === \"url\" && n2 !== SINGLE_QUOTE && n2 !== DOUBLE_QUOTE && n2 !== SPACE && n2 !== NEWLINE && n2 !== TAB && n2 !== FEED && n2 !== CR) {\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(\")\", next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos;\n break;\n } else {\n unclosed(\"bracket\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"brackets\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n next = css.indexOf(\")\", pos + 1);\n content = css.slice(pos, next + 1);\n if (next === -1 || RE_BAD_BRACKET.test(content)) {\n currentToken = [\"(\", \"(\", pos];\n } else {\n currentToken = [\"brackets\", content, pos, next];\n pos = next;\n }\n }\n break;\n }\n case SINGLE_QUOTE:\n case DOUBLE_QUOTE: {\n quote = code === SINGLE_QUOTE ? \"'\" : '\"';\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(quote, next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos + 1;\n break;\n } else {\n unclosed(\"string\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"string\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case AT: {\n RE_AT_END.lastIndex = pos + 1;\n RE_AT_END.test(css);\n if (RE_AT_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_AT_END.lastIndex - 2;\n }\n currentToken = [\"at-word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case BACKSLASH: {\n next = pos;\n escape = true;\n while (css.charCodeAt(next + 1) === BACKSLASH) {\n next += 1;\n escape = !escape;\n }\n code = css.charCodeAt(next + 1);\n if (escape && code !== SLASH && code !== SPACE && code !== NEWLINE && code !== TAB && code !== CR && code !== FEED) {\n next += 1;\n if (RE_HEX_ESCAPE.test(css.charAt(next))) {\n while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {\n next += 1;\n }\n if (css.charCodeAt(next + 1) === SPACE) {\n next += 1;\n }\n }\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n default: {\n if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {\n next = css.indexOf(\"*/\", pos + 2) + 1;\n if (next === 0) {\n if (ignore || ignoreUnclosed) {\n next = css.length;\n } else {\n unclosed(\"comment\");\n }\n }\n currentToken = [\"comment\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n RE_WORD_END.lastIndex = pos + 1;\n RE_WORD_END.test(css);\n if (RE_WORD_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_WORD_END.lastIndex - 2;\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n buffer.push(currentToken);\n pos = next;\n }\n break;\n }\n }\n pos++;\n return currentToken;\n }\n function back(token) {\n returned.push(token);\n }\n return {\n back,\n endOfFile,\n nextToken,\n position\n };\n};\nlet Container$5 = container;\nlet AtRule$3 = class AtRule2 extends Container$5 {\n constructor(defaults) {\n super(defaults);\n this.type = \"atrule\";\n }\n append(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.append(...children);\n }\n prepend(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.prepend(...children);\n }\n};\nvar atRule = AtRule$3;\nAtRule$3.default = AtRule$3;\nContainer$5.registerAtRule(AtRule$3);\nlet Container$4 = container;\nlet LazyResult$3, Processor$2;\nlet Root$5 = class Root2 extends Container$4 {\n constructor(defaults) {\n super(defaults);\n this.type = \"root\";\n if (!this.nodes) this.nodes = [];\n }\n normalize(child, sample, type) {\n let nodes = super.normalize(child);\n if (sample) {\n if (type === \"prepend\") {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before;\n } else {\n delete sample.raws.before;\n }\n } else if (this.first !== sample) {\n for (let node2 of nodes) {\n node2.raws.before = sample.raws.before;\n }\n }\n }\n return nodes;\n }\n removeChild(child, ignore) {\n let index2 = this.index(child);\n if (!ignore && index2 === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index2].raws.before;\n }\n return super.removeChild(child);\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$3(new Processor$2(), this, opts);\n return lazy.stringify();\n }\n};\nRoot$5.registerLazyResult = (dependant) => {\n LazyResult$3 = dependant;\n};\nRoot$5.registerProcessor = (dependant) => {\n Processor$2 = dependant;\n};\nvar root = Root$5;\nRoot$5.default = Root$5;\nContainer$4.registerRoot(Root$5);\nlet list$2 = {\n comma(string) {\n return list$2.split(string, [\",\"], true);\n },\n space(string) {\n let spaces = [\" \", \"\\n\", \"\t\"];\n return list$2.split(string, spaces);\n },\n split(string, separators, last) {\n let array = [];\n let current = \"\";\n let split = false;\n let func = 0;\n let inQuote = false;\n let prevQuote = \"\";\n let escape = false;\n for (let letter of string) {\n if (escape) {\n escape = false;\n } else if (letter === \"\\\\\") {\n escape = true;\n } else if (inQuote) {\n if (letter === prevQuote) {\n inQuote = false;\n }\n } else if (letter === '\"' || letter === \"'\") {\n inQuote = true;\n prevQuote = letter;\n } else if (letter === \"(\") {\n func += 1;\n } else if (letter === \")\") {\n if (func > 0) func -= 1;\n } else if (func === 0) {\n if (separators.includes(letter)) split = true;\n }\n if (split) {\n if (current !== \"\") array.push(current.trim());\n current = \"\";\n split = false;\n } else {\n current += letter;\n }\n }\n if (last || current !== \"\") array.push(current.trim());\n return array;\n }\n};\nvar list_1 = list$2;\nlist$2.default = list$2;\nlet Container$3 = container;\nlet list$1 = list_1;\nlet Rule$3 = class Rule2 extends Container$3 {\n constructor(defaults) {\n super(defaults);\n this.type = \"rule\";\n if (!this.nodes) this.nodes = [];\n }\n get selectors() {\n return list$1.comma(this.selector);\n }\n set selectors(values) {\n let match = this.selector ? this.selector.match(/,\\s*/) : null;\n let sep2 = match ? match[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n this.selector = values.join(sep2);\n }\n};\nvar rule = Rule$3;\nRule$3.default = Rule$3;\nContainer$3.registerRule(Rule$3);\nlet Declaration$2 = declaration;\nlet tokenizer22 = tokenize;\nlet Comment$2 = comment;\nlet AtRule$2 = atRule;\nlet Root$4 = root;\nlet Rule$2 = rule;\nconst SAFE_COMMENT_NEIGHBOR = {\n empty: true,\n space: true\n};\nfunction findLastWithPosition(tokens) {\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n let token = tokens[i2];\n let pos = token[3] || token[2];\n if (pos) return pos;\n }\n}\nlet Parser$1 = class Parser2 {\n constructor(input2) {\n this.input = input2;\n this.root = new Root$4();\n this.current = this.root;\n this.spaces = \"\";\n this.semicolon = false;\n this.createTokenizer();\n this.root.source = { input: input2, start: { column: 1, line: 1, offset: 0 } };\n }\n atrule(token) {\n let node2 = new AtRule$2();\n node2.name = token[1].slice(1);\n if (node2.name === \"\") {\n this.unnamedAtrule(node2, token);\n }\n this.init(node2, token[2]);\n let type;\n let prev;\n let shift;\n let last = false;\n let open = false;\n let params = [];\n let brackets = [];\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n type = token[0];\n if (type === \"(\" || type === \"[\") {\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (type === \"{\" && brackets.length > 0) {\n brackets.push(\"}\");\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n }\n if (brackets.length === 0) {\n if (type === \";\") {\n node2.source.end = this.getPosition(token[2]);\n node2.source.end.offset++;\n this.semicolon = true;\n break;\n } else if (type === \"{\") {\n open = true;\n break;\n } else if (type === \"}\") {\n if (params.length > 0) {\n shift = params.length - 1;\n prev = params[shift];\n while (prev && prev[0] === \"space\") {\n prev = params[--shift];\n }\n if (prev) {\n node2.source.end = this.getPosition(prev[3] || prev[2]);\n node2.source.end.offset++;\n }\n }\n this.end(token);\n break;\n } else {\n params.push(token);\n }\n } else {\n params.push(token);\n }\n if (this.tokenizer.endOfFile()) {\n last = true;\n break;\n }\n }\n node2.raws.between = this.spacesAndCommentsFromEnd(params);\n if (params.length) {\n node2.raws.afterName = this.spacesAndCommentsFromStart(params);\n this.raw(node2, \"params\", params);\n if (last) {\n token = params[params.length - 1];\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n this.spaces = node2.raws.between;\n node2.raws.between = \"\";\n }\n } else {\n node2.raws.afterName = \"\";\n node2.params = \"\";\n }\n if (open) {\n node2.nodes = [];\n this.current = node2;\n }\n }\n checkMissedSemicolon(tokens) {\n let colon = this.colon(tokens);\n if (colon === false) return;\n let founded = 0;\n let token;\n for (let j = colon - 1; j >= 0; j--) {\n token = tokens[j];\n if (token[0] !== \"space\") {\n founded += 1;\n if (founded === 2) break;\n }\n }\n throw this.input.error(\n \"Missed semicolon\",\n token[0] === \"word\" ? token[3] + 1 : token[2]\n );\n }\n colon(tokens) {\n let brackets = 0;\n let token, type, prev;\n for (let [i2, element] of tokens.entries()) {\n token = element;\n type = token[0];\n if (type === \"(\") {\n brackets += 1;\n }\n if (type === \")\") {\n brackets -= 1;\n }\n if (brackets === 0 && type === \":\") {\n if (!prev) {\n this.doubleColon(token);\n } else if (prev[0] === \"word\" && prev[1] === \"progid\") {\n continue;\n } else {\n return i2;\n }\n }\n prev = token;\n }\n return false;\n }\n comment(token) {\n let node2 = new Comment$2();\n this.init(node2, token[2]);\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n let text = token[1].slice(2, -2);\n if (/^\\s*$/.test(text)) {\n node2.text = \"\";\n node2.raws.left = text;\n node2.raws.right = \"\";\n } else {\n let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n node2.text = match[2];\n node2.raws.left = match[1];\n node2.raws.right = match[3];\n }\n }\n createTokenizer() {\n this.tokenizer = tokenizer22(this.input);\n }\n decl(tokens, customProperty) {\n let node2 = new Declaration$2();\n this.init(node2, tokens[0][2]);\n let last = tokens[tokens.length - 1];\n if (last[0] === \";\") {\n this.semicolon = true;\n tokens.pop();\n }\n node2.source.end = this.getPosition(\n last[3] || last[2] || findLastWithPosition(tokens)\n );\n node2.source.end.offset++;\n while (tokens[0][0] !== \"word\") {\n if (tokens.length === 1) this.unknownWord(tokens);\n node2.raws.before += tokens.shift()[1];\n }\n node2.source.start = this.getPosition(tokens[0][2]);\n node2.prop = \"\";\n while (tokens.length) {\n let type = tokens[0][0];\n if (type === \":\" || type === \"space\" || type === \"comment\") {\n break;\n }\n node2.prop += tokens.shift()[1];\n }\n node2.raws.between = \"\";\n let token;\n while (tokens.length) {\n token = tokens.shift();\n if (token[0] === \":\") {\n node2.raws.between += token[1];\n break;\n } else {\n if (token[0] === \"word\" && /\\w/.test(token[1])) {\n this.unknownWord([token]);\n }\n node2.raws.between += token[1];\n }\n }\n if (node2.prop[0] === \"_\" || node2.prop[0] === \"*\") {\n node2.raws.before += node2.prop[0];\n node2.prop = node2.prop.slice(1);\n }\n let firstSpaces = [];\n let next;\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n firstSpaces.push(tokens.shift());\n }\n this.precheckMissedSemicolon(tokens);\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n token = tokens[i2];\n if (token[1].toLowerCase() === \"!important\") {\n node2.important = true;\n let string = this.stringFrom(tokens, i2);\n string = this.spacesFromEnd(tokens) + string;\n if (string !== \" !important\") node2.raws.important = string;\n break;\n } else if (token[1].toLowerCase() === \"important\") {\n let cache = tokens.slice(0);\n let str = \"\";\n for (let j = i2; j > 0; j--) {\n let type = cache[j][0];\n if (str.trim().indexOf(\"!\") === 0 && type !== \"space\") {\n break;\n }\n str = cache.pop()[1] + str;\n }\n if (str.trim().indexOf(\"!\") === 0) {\n node2.important = true;\n node2.raws.important = str;\n tokens = cache;\n }\n }\n if (token[0] !== \"space\" && token[0] !== \"comment\") {\n break;\n }\n }\n let hasWord = tokens.some((i2) => i2[0] !== \"space\" && i2[0] !== \"comment\");\n if (hasWord) {\n node2.raws.between += firstSpaces.map((i2) => i2[1]).join(\"\");\n firstSpaces = [];\n }\n this.raw(node2, \"value\", firstSpaces.concat(tokens), customProperty);\n if (node2.value.includes(\":\") && !customProperty) {\n this.checkMissedSemicolon(tokens);\n }\n }\n doubleColon(token) {\n throw this.input.error(\n \"Double colon\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n emptyRule(token) {\n let node2 = new Rule$2();\n this.init(node2, token[2]);\n node2.selector = \"\";\n node2.raws.between = \"\";\n this.current = node2;\n }\n end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.semicolon = false;\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.spaces = \"\";\n if (this.current.parent) {\n this.current.source.end = this.getPosition(token[2]);\n this.current.source.end.offset++;\n this.current = this.current.parent;\n } else {\n this.unexpectedClose(token);\n }\n }\n endFile() {\n if (this.current.parent) this.unclosedBlock();\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.root.source.end = this.getPosition(this.tokenizer.position());\n }\n freeSemicolon(token) {\n this.spaces += token[1];\n if (this.current.nodes) {\n let prev = this.current.nodes[this.current.nodes.length - 1];\n if (prev && prev.type === \"rule\" && !prev.raws.ownSemicolon) {\n prev.raws.ownSemicolon = this.spaces;\n this.spaces = \"\";\n }\n }\n }\n // Helpers\n getPosition(offset) {\n let pos = this.input.fromOffset(offset);\n return {\n column: pos.col,\n line: pos.line,\n offset\n };\n }\n init(node2, offset) {\n this.current.push(node2);\n node2.source = {\n input: this.input,\n start: this.getPosition(offset)\n };\n node2.raws.before = this.spaces;\n this.spaces = \"\";\n if (node2.type !== \"comment\") this.semicolon = false;\n }\n other(start) {\n let end = false;\n let type = null;\n let colon = false;\n let bracket = null;\n let brackets = [];\n let customProperty = start[1].startsWith(\"--\");\n let tokens = [];\n let token = start;\n while (token) {\n type = token[0];\n tokens.push(token);\n if (type === \"(\" || type === \"[\") {\n if (!bracket) bracket = token;\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (customProperty && colon && type === \"{\") {\n if (!bracket) bracket = token;\n brackets.push(\"}\");\n } else if (brackets.length === 0) {\n if (type === \";\") {\n if (colon) {\n this.decl(tokens, customProperty);\n return;\n } else {\n break;\n }\n } else if (type === \"{\") {\n this.rule(tokens);\n return;\n } else if (type === \"}\") {\n this.tokenizer.back(tokens.pop());\n end = true;\n break;\n } else if (type === \":\") {\n colon = true;\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n if (brackets.length === 0) bracket = null;\n }\n token = this.tokenizer.nextToken();\n }\n if (this.tokenizer.endOfFile()) end = true;\n if (brackets.length > 0) this.unclosedBracket(bracket);\n if (end && colon) {\n if (!customProperty) {\n while (tokens.length) {\n token = tokens[tokens.length - 1][0];\n if (token !== \"space\" && token !== \"comment\") break;\n this.tokenizer.back(tokens.pop());\n }\n }\n this.decl(tokens, customProperty);\n } else {\n this.unknownWord(tokens);\n }\n }\n parse() {\n let token;\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n switch (token[0]) {\n case \"space\":\n this.spaces += token[1];\n break;\n case \";\":\n this.freeSemicolon(token);\n break;\n case \"}\":\n this.end(token);\n break;\n case \"comment\":\n this.comment(token);\n break;\n case \"at-word\":\n this.atrule(token);\n break;\n case \"{\":\n this.emptyRule(token);\n break;\n default:\n this.other(token);\n break;\n }\n }\n this.endFile();\n }\n precheckMissedSemicolon() {\n }\n raw(node2, prop, tokens, customProperty) {\n let token, type;\n let length = tokens.length;\n let value = \"\";\n let clean = true;\n let next, prev;\n for (let i2 = 0; i2 < length; i2 += 1) {\n token = tokens[i2];\n type = token[0];\n if (type === \"space\" && i2 === length - 1 && !customProperty) {\n clean = false;\n } else if (type === \"comment\") {\n prev = tokens[i2 - 1] ? tokens[i2 - 1][0] : \"empty\";\n next = tokens[i2 + 1] ? tokens[i2 + 1][0] : \"empty\";\n if (!SAFE_COMMENT_NEIGHBOR[prev] && !SAFE_COMMENT_NEIGHBOR[next]) {\n if (value.slice(-1) === \",\") {\n clean = false;\n } else {\n value += token[1];\n }\n } else {\n clean = false;\n }\n } else {\n value += token[1];\n }\n }\n if (!clean) {\n let raw = tokens.reduce((all, i2) => all + i2[1], \"\");\n node2.raws[prop] = { raw, value };\n }\n node2[prop] = value;\n }\n rule(tokens) {\n tokens.pop();\n let node2 = new Rule$2();\n this.init(node2, tokens[0][2]);\n node2.raws.between = this.spacesAndCommentsFromEnd(tokens);\n this.raw(node2, \"selector\", tokens);\n this.current = node2;\n }\n spacesAndCommentsFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\" && lastTokenType !== \"comment\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n // Errors\n spacesAndCommentsFromStart(tokens) {\n let next;\n let spaces = \"\";\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n spaces += tokens.shift()[1];\n }\n return spaces;\n }\n spacesFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n stringFrom(tokens, from) {\n let result2 = \"\";\n for (let i2 = from; i2 < tokens.length; i2++) {\n result2 += tokens[i2][1];\n }\n tokens.splice(from, tokens.length - from);\n return result2;\n }\n unclosedBlock() {\n let pos = this.current.source.start;\n throw this.input.error(\"Unclosed block\", pos.line, pos.column);\n }\n unclosedBracket(bracket) {\n throw this.input.error(\n \"Unclosed bracket\",\n { offset: bracket[2] },\n { offset: bracket[2] + 1 }\n );\n }\n unexpectedClose(token) {\n throw this.input.error(\n \"Unexpected }\",\n { offset: token[2] },\n { offset: token[2] + 1 }\n );\n }\n unknownWord(tokens) {\n throw this.input.error(\n \"Unknown word\",\n { offset: tokens[0][2] },\n { offset: tokens[0][2] + tokens[0][1].length }\n );\n }\n unnamedAtrule(node2, token) {\n throw this.input.error(\n \"At-rule without name\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n};\nvar parser = Parser$1;\nlet Container$2 = container;\nlet Parser22 = parser;\nlet Input$2 = input;\nfunction parse$3(css, opts) {\n let input2 = new Input$2(css, opts);\n let parser2 = new Parser22(input2);\n try {\n parser2.parse();\n } catch (e2) {\n if (process.env.NODE_ENV !== \"production\") {\n if (e2.name === \"CssSyntaxError\" && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser\";\n } else if (/\\.sass/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser\";\n } else if (/\\.less$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser\";\n }\n }\n }\n throw e2;\n }\n return parser2.root;\n}\nvar parse_1 = parse$3;\nparse$3.default = parse$3;\nContainer$2.registerParse(parse$3);\nlet { isClean, my } = symbols;\nlet MapGenerator$1 = mapGenerator;\nlet stringify$2 = stringify_1;\nlet Container$1 = container;\nlet Document$2 = document$1;\nlet warnOnce$1 = warnOnce$2;\nlet Result$2 = result;\nlet parse$2 = parse_1;\nlet Root$3 = root;\nconst TYPE_TO_CLASS_NAME = {\n atrule: \"AtRule\",\n comment: \"Comment\",\n decl: \"Declaration\",\n document: \"Document\",\n root: \"Root\",\n rule: \"Rule\"\n};\nconst PLUGIN_PROPS = {\n AtRule: true,\n AtRuleExit: true,\n Comment: true,\n CommentExit: true,\n Declaration: true,\n DeclarationExit: true,\n Document: true,\n DocumentExit: true,\n Once: true,\n OnceExit: true,\n postcssPlugin: true,\n prepare: true,\n Root: true,\n RootExit: true,\n Rule: true,\n RuleExit: true\n};\nconst NOT_VISITORS = {\n Once: true,\n postcssPlugin: true,\n prepare: true\n};\nconst CHILDREN = 0;\nfunction isPromise(obj) {\n return typeof obj === \"object\" && typeof obj.then === \"function\";\n}\nfunction getEvents(node2) {\n let key = false;\n let type = TYPE_TO_CLASS_NAME[node2.type];\n if (node2.type === \"decl\") {\n key = node2.prop.toLowerCase();\n } else if (node2.type === \"atrule\") {\n key = node2.name.toLowerCase();\n }\n if (key && node2.append) {\n return [\n type,\n type + \"-\" + key,\n CHILDREN,\n type + \"Exit\",\n type + \"Exit-\" + key\n ];\n } else if (key) {\n return [type, type + \"-\" + key, type + \"Exit\", type + \"Exit-\" + key];\n } else if (node2.append) {\n return [type, CHILDREN, type + \"Exit\"];\n } else {\n return [type, type + \"Exit\"];\n }\n}\nfunction toStack(node2) {\n let events;\n if (node2.type === \"document\") {\n events = [\"Document\", CHILDREN, \"DocumentExit\"];\n } else if (node2.type === \"root\") {\n events = [\"Root\", CHILDREN, \"RootExit\"];\n } else {\n events = getEvents(node2);\n }\n return {\n eventIndex: 0,\n events,\n iterator: 0,\n node: node2,\n visitorIndex: 0,\n visitors: []\n };\n}\nfunction cleanMarks(node2) {\n node2[isClean] = false;\n if (node2.nodes) node2.nodes.forEach((i2) => cleanMarks(i2));\n return node2;\n}\nlet postcss$2 = {};\nlet LazyResult$2 = class LazyResult2 {\n constructor(processor2, css, opts) {\n this.stringified = false;\n this.processed = false;\n let root2;\n if (typeof css === \"object\" && css !== null && (css.type === \"root\" || css.type === \"document\")) {\n root2 = cleanMarks(css);\n } else if (css instanceof LazyResult2 || css instanceof Result$2) {\n root2 = cleanMarks(css.root);\n if (css.map) {\n if (typeof opts.map === \"undefined\") opts.map = {};\n if (!opts.map.inline) opts.map.inline = false;\n opts.map.prev = css.map;\n }\n } else {\n let parser2 = parse$2;\n if (opts.syntax) parser2 = opts.syntax.parse;\n if (opts.parser) parser2 = opts.parser;\n if (parser2.parse) parser2 = parser2.parse;\n try {\n root2 = parser2(css, opts);\n } catch (error) {\n this.processed = true;\n this.error = error;\n }\n if (root2 && !root2[my]) {\n Container$1.rebuild(root2);\n }\n }\n this.result = new Result$2(processor2, root2, opts);\n this.helpers = { ...postcss$2, postcss: postcss$2, result: this.result };\n this.plugins = this.processor.plugins.map((plugin22) => {\n if (typeof plugin22 === \"object\" && plugin22.prepare) {\n return { ...plugin22, ...plugin22.prepare(this.result) };\n } else {\n return plugin22;\n }\n });\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n if (this.processed) return Promise.resolve(this.result);\n if (!this.processing) {\n this.processing = this.runAsync();\n }\n return this.processing;\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n getAsyncError() {\n throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n }\n handleError(error, node2) {\n let plugin22 = this.result.lastPlugin;\n try {\n if (node2) node2.addToError(error);\n this.error = error;\n if (error.name === \"CssSyntaxError\" && !error.plugin) {\n error.plugin = plugin22.postcssPlugin;\n error.setMessage();\n } else if (plugin22.postcssVersion) {\n if (process.env.NODE_ENV !== \"production\") {\n let pluginName = plugin22.postcssPlugin;\n let pluginVer = plugin22.postcssVersion;\n let runtimeVer = this.result.processor.version;\n let a2 = pluginVer.split(\".\");\n let b = runtimeVer.split(\".\");\n if (a2[0] !== b[0] || parseInt(a2[1]) > parseInt(b[1])) {\n console.error(\n \"Unknown error from PostCSS plugin. Your current PostCSS version is \" + runtimeVer + \", but \" + pluginName + \" uses \" + pluginVer + \". Perhaps this is the source of the error below.\"\n );\n }\n }\n }\n } catch (err) {\n if (console && console.error) console.error(err);\n }\n return error;\n }\n prepareVisitors() {\n this.listeners = {};\n let add = (plugin22, type, cb) => {\n if (!this.listeners[type]) this.listeners[type] = [];\n this.listeners[type].push([plugin22, cb]);\n };\n for (let plugin22 of this.plugins) {\n if (typeof plugin22 === \"object\") {\n for (let event in plugin22) {\n if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) {\n throw new Error(\n `Unknown event ${event} in ${plugin22.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`\n );\n }\n if (!NOT_VISITORS[event]) {\n if (typeof plugin22[event] === \"object\") {\n for (let filter in plugin22[event]) {\n if (filter === \"*\") {\n add(plugin22, event, plugin22[event][filter]);\n } else {\n add(\n plugin22,\n event + \"-\" + filter.toLowerCase(),\n plugin22[event][filter]\n );\n }\n }\n } else if (typeof plugin22[event] === \"function\") {\n add(plugin22, event, plugin22[event]);\n }\n }\n }\n }\n }\n this.hasListener = Object.keys(this.listeners).length > 0;\n }\n async runAsync() {\n this.plugin = 0;\n for (let i2 = 0; i2 < this.plugins.length; i2++) {\n let plugin22 = this.plugins[i2];\n let promise = this.runOnRoot(plugin22);\n if (isPromise(promise)) {\n try {\n await promise;\n } catch (error) {\n throw this.handleError(error);\n }\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean]) {\n root2[isClean] = true;\n let stack = [toStack(root2)];\n while (stack.length > 0) {\n let promise = this.visitTick(stack);\n if (isPromise(promise)) {\n try {\n await promise;\n } catch (e2) {\n let node2 = stack[stack.length - 1].node;\n throw this.handleError(e2, node2);\n }\n }\n }\n }\n if (this.listeners.OnceExit) {\n for (let [plugin22, visitor] of this.listeners.OnceExit) {\n this.result.lastPlugin = plugin22;\n try {\n if (root2.type === \"document\") {\n let roots = root2.nodes.map(\n (subRoot) => visitor(subRoot, this.helpers)\n );\n await Promise.all(roots);\n } else {\n await visitor(root2, this.helpers);\n }\n } catch (e2) {\n throw this.handleError(e2);\n }\n }\n }\n }\n this.processed = true;\n return this.stringify();\n }\n runOnRoot(plugin22) {\n this.result.lastPlugin = plugin22;\n try {\n if (typeof plugin22 === \"object\" && plugin22.Once) {\n if (this.result.root.type === \"document\") {\n let roots = this.result.root.nodes.map(\n (root2) => plugin22.Once(root2, this.helpers)\n );\n if (isPromise(roots[0])) {\n return Promise.all(roots);\n }\n return roots;\n }\n return plugin22.Once(this.result.root, this.helpers);\n } else if (typeof plugin22 === \"function\") {\n return plugin22(this.result.root, this.result);\n }\n } catch (error) {\n throw this.handleError(error);\n }\n }\n stringify() {\n if (this.error) throw this.error;\n if (this.stringified) return this.result;\n this.stringified = true;\n this.sync();\n let opts = this.result.opts;\n let str = stringify$2;\n if (opts.syntax) str = opts.syntax.stringify;\n if (opts.stringifier) str = opts.stringifier;\n if (str.stringify) str = str.stringify;\n let map = new MapGenerator$1(str, this.result.root, this.result.opts);\n let data = map.generate();\n this.result.css = data[0];\n this.result.map = data[1];\n return this.result;\n }\n sync() {\n if (this.error) throw this.error;\n if (this.processed) return this.result;\n this.processed = true;\n if (this.processing) {\n throw this.getAsyncError();\n }\n for (let plugin22 of this.plugins) {\n let promise = this.runOnRoot(plugin22);\n if (isPromise(promise)) {\n throw this.getAsyncError();\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean]) {\n root2[isClean] = true;\n this.walkSync(root2);\n }\n if (this.listeners.OnceExit) {\n if (root2.type === \"document\") {\n for (let subRoot of root2.nodes) {\n this.visitSync(this.listeners.OnceExit, subRoot);\n }\n } else {\n this.visitSync(this.listeners.OnceExit, root2);\n }\n }\n }\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this.opts)) {\n warnOnce$1(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this.css;\n }\n visitSync(visitors, node2) {\n for (let [plugin22, visitor] of visitors) {\n this.result.lastPlugin = plugin22;\n let promise;\n try {\n promise = visitor(node2, this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2.proxyOf);\n }\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n return true;\n }\n if (isPromise(promise)) {\n throw this.getAsyncError();\n }\n }\n }\n visitTick(stack) {\n let visit2 = stack[stack.length - 1];\n let { node: node2, visitors } = visit2;\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n stack.pop();\n return;\n }\n if (visitors.length > 0 && visit2.visitorIndex < visitors.length) {\n let [plugin22, visitor] = visitors[visit2.visitorIndex];\n visit2.visitorIndex += 1;\n if (visit2.visitorIndex === visitors.length) {\n visit2.visitors = [];\n visit2.visitorIndex = 0;\n }\n this.result.lastPlugin = plugin22;\n try {\n return visitor(node2.toProxy(), this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2);\n }\n }\n if (visit2.iterator !== 0) {\n let iterator = visit2.iterator;\n let child;\n while (child = node2.nodes[node2.indexes[iterator]]) {\n node2.indexes[iterator] += 1;\n if (!child[isClean]) {\n child[isClean] = true;\n stack.push(toStack(child));\n return;\n }\n }\n visit2.iterator = 0;\n delete node2.indexes[iterator];\n }\n let events = visit2.events;\n while (visit2.eventIndex < events.length) {\n let event = events[visit2.eventIndex];\n visit2.eventIndex += 1;\n if (event === CHILDREN) {\n if (node2.nodes && node2.nodes.length) {\n node2[isClean] = true;\n visit2.iterator = node2.getIterator();\n }\n return;\n } else if (this.listeners[event]) {\n visit2.visitors = this.listeners[event];\n return;\n }\n }\n stack.pop();\n }\n walkSync(node2) {\n node2[isClean] = true;\n let events = getEvents(node2);\n for (let event of events) {\n if (event === CHILDREN) {\n if (node2.nodes) {\n node2.each((child) => {\n if (!child[isClean]) this.walkSync(child);\n });\n }\n } else {\n let visitors = this.listeners[event];\n if (visitors) {\n if (this.visitSync(visitors, node2.toProxy())) return;\n }\n }\n }\n }\n warnings() {\n return this.sync().warnings();\n }\n get content() {\n return this.stringify().content;\n }\n get css() {\n return this.stringify().css;\n }\n get map() {\n return this.stringify().map;\n }\n get messages() {\n return this.sync().messages;\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n return this.sync().root;\n }\n get [Symbol.toStringTag]() {\n return \"LazyResult\";\n }\n};\nLazyResult$2.registerPostcss = (dependant) => {\n postcss$2 = dependant;\n};\nvar lazyResult = LazyResult$2;\nLazyResult$2.default = LazyResult$2;\nRoot$3.registerLazyResult(LazyResult$2);\nDocument$2.registerLazyResult(LazyResult$2);\nlet MapGenerator22 = mapGenerator;\nlet stringify$1 = stringify_1;\nlet warnOnce22 = warnOnce$2;\nlet parse$1 = parse_1;\nconst Result$1 = result;\nlet NoWorkResult$1 = class NoWorkResult2 {\n constructor(processor2, css, opts) {\n css = css.toString();\n this.stringified = false;\n this._processor = processor2;\n this._css = css;\n this._opts = opts;\n this._map = void 0;\n let root2;\n let str = stringify$1;\n this.result = new Result$1(this._processor, root2, this._opts);\n this.result.css = css;\n let self = this;\n Object.defineProperty(this.result, \"root\", {\n get() {\n return self.root;\n }\n });\n let map = new MapGenerator22(str, root2, this._opts, css);\n if (map.isMap()) {\n let [generatedCSS, generatedMap] = map.generate();\n if (generatedCSS) {\n this.result.css = generatedCSS;\n }\n if (generatedMap) {\n this.result.map = generatedMap;\n }\n } else {\n map.clearAnnotation();\n this.result.css = map.css;\n }\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n return Promise.resolve(this.result);\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n sync() {\n if (this.error) throw this.error;\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this._opts)) {\n warnOnce22(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this._css;\n }\n warnings() {\n return [];\n }\n get content() {\n return this.result.css;\n }\n get css() {\n return this.result.css;\n }\n get map() {\n return this.result.map;\n }\n get messages() {\n return [];\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n if (this._root) {\n return this._root;\n }\n let root2;\n let parser2 = parse$1;\n try {\n root2 = parser2(this._css, this._opts);\n } catch (error) {\n this.error = error;\n }\n if (this.error) {\n throw this.error;\n } else {\n this._root = root2;\n return root2;\n }\n }\n get [Symbol.toStringTag]() {\n return \"NoWorkResult\";\n }\n};\nvar noWorkResult = NoWorkResult$1;\nNoWorkResult$1.default = NoWorkResult$1;\nlet NoWorkResult22 = noWorkResult;\nlet LazyResult$1 = lazyResult;\nlet Document$1 = document$1;\nlet Root$2 = root;\nlet Processor$1 = class Processor2 {\n constructor(plugins = []) {\n this.version = \"8.4.38\";\n this.plugins = this.normalize(plugins);\n }\n normalize(plugins) {\n let normalized = [];\n for (let i2 of plugins) {\n if (i2.postcss === true) {\n i2 = i2();\n } else if (i2.postcss) {\n i2 = i2.postcss;\n }\n if (typeof i2 === \"object\" && Array.isArray(i2.plugins)) {\n normalized = normalized.concat(i2.plugins);\n } else if (typeof i2 === \"object\" && i2.postcssPlugin) {\n normalized.push(i2);\n } else if (typeof i2 === \"function\") {\n normalized.push(i2);\n } else if (typeof i2 === \"object\" && (i2.parse || i2.stringify)) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error(\n \"PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.\"\n );\n }\n } else {\n throw new Error(i2 + \" is not a PostCSS plugin\");\n }\n }\n return normalized;\n }\n process(css, opts = {}) {\n if (!this.plugins.length && !opts.parser && !opts.stringifier && !opts.syntax) {\n return new NoWorkResult22(this, css, opts);\n } else {\n return new LazyResult$1(this, css, opts);\n }\n }\n use(plugin22) {\n this.plugins = this.plugins.concat(this.normalize([plugin22]));\n return this;\n }\n};\nvar processor = Processor$1;\nProcessor$1.default = Processor$1;\nRoot$2.registerProcessor(Processor$1);\nDocument$1.registerProcessor(Processor$1);\nlet Declaration$1 = declaration;\nlet PreviousMap22 = previousMap;\nlet Comment$1 = comment;\nlet AtRule$1 = atRule;\nlet Input$1 = input;\nlet Root$1 = root;\nlet Rule$1 = rule;\nfunction fromJSON$1(json, inputs) {\n if (Array.isArray(json)) return json.map((n2) => fromJSON$1(n2));\n let { inputs: ownInputs, ...defaults } = json;\n if (ownInputs) {\n inputs = [];\n for (let input2 of ownInputs) {\n let inputHydrated = { ...input2, __proto__: Input$1.prototype };\n if (inputHydrated.map) {\n inputHydrated.map = {\n ...inputHydrated.map,\n __proto__: PreviousMap22.prototype\n };\n }\n inputs.push(inputHydrated);\n }\n }\n if (defaults.nodes) {\n defaults.nodes = json.nodes.map((n2) => fromJSON$1(n2, inputs));\n }\n if (defaults.source) {\n let { inputId, ...source } = defaults.source;\n defaults.source = source;\n if (inputId != null) {\n defaults.source.input = inputs[inputId];\n }\n }\n if (defaults.type === \"root\") {\n return new Root$1(defaults);\n } else if (defaults.type === \"decl\") {\n return new Declaration$1(defaults);\n } else if (defaults.type === \"rule\") {\n return new Rule$1(defaults);\n } else if (defaults.type === \"comment\") {\n return new Comment$1(defaults);\n } else if (defaults.type === \"atrule\") {\n return new AtRule$1(defaults);\n } else {\n throw new Error(\"Unknown node type: \" + json.type);\n }\n}\nvar fromJSON_1 = fromJSON$1;\nfromJSON$1.default = fromJSON$1;\nlet CssSyntaxError22 = cssSyntaxError;\nlet Declaration22 = declaration;\nlet LazyResult22 = lazyResult;\nlet Container22 = container;\nlet Processor22 = processor;\nlet stringify = stringify_1;\nlet fromJSON = fromJSON_1;\nlet Document222 = document$1;\nlet Warning22 = warning;\nlet Comment22 = comment;\nlet AtRule22 = atRule;\nlet Result22 = result;\nlet Input22 = input;\nlet parse = parse_1;\nlet list = list_1;\nlet Rule22 = rule;\nlet Root22 = root;\nlet Node22 = node;\nfunction postcss(...plugins) {\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0];\n }\n return new Processor22(plugins);\n}\npostcss.plugin = function plugin2(name, initializer) {\n let warningPrinted = false;\n function creator(...args) {\n if (console && console.warn && !warningPrinted) {\n warningPrinted = true;\n console.warn(\n name + \": postcss.plugin was deprecated. Migration guide:\\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration\"\n );\n if (process.env.LANG && process.env.LANG.startsWith(\"cn\")) {\n console.warn(\n name + \": 里面 postcss.plugin 被弃用. 迁移指南:\\nhttps://www.w3ctech.com/topic/2226\"\n );\n }\n }\n let transformer = initializer(...args);\n transformer.postcssPlugin = name;\n transformer.postcssVersion = new Processor22().version;\n return transformer;\n }\n let cache;\n Object.defineProperty(creator, \"postcss\", {\n get() {\n if (!cache) cache = creator();\n return cache;\n }\n });\n creator.process = function(css, processOpts, pluginOpts) {\n return postcss([creator(pluginOpts)]).process(css, processOpts);\n };\n return creator;\n};\npostcss.stringify = stringify;\npostcss.parse = parse;\npostcss.fromJSON = fromJSON;\npostcss.list = list;\npostcss.comment = (defaults) => new Comment22(defaults);\npostcss.atRule = (defaults) => new AtRule22(defaults);\npostcss.decl = (defaults) => new Declaration22(defaults);\npostcss.rule = (defaults) => new Rule22(defaults);\npostcss.root = (defaults) => new Root22(defaults);\npostcss.document = (defaults) => new Document222(defaults);\npostcss.CssSyntaxError = CssSyntaxError22;\npostcss.Declaration = Declaration22;\npostcss.Container = Container22;\npostcss.Processor = Processor22;\npostcss.Document = Document222;\npostcss.Comment = Comment22;\npostcss.Warning = Warning22;\npostcss.AtRule = AtRule22;\npostcss.Result = Result22;\npostcss.Input = Input22;\npostcss.Rule = Rule22;\npostcss.Root = Root22;\npostcss.Node = Node22;\nLazyResult22.registerPostcss(postcss);\nvar postcss_1 = postcss;\npostcss.default = postcss;\nconst postcss$1 = /* @__PURE__ */ getDefaultExportFromCjs(postcss_1);\npostcss$1.stringify;\npostcss$1.fromJSON;\npostcss$1.plugin;\npostcss$1.parse;\npostcss$1.list;\npostcss$1.document;\npostcss$1.comment;\npostcss$1.atRule;\npostcss$1.rule;\npostcss$1.decl;\npostcss$1.root;\npostcss$1.CssSyntaxError;\npostcss$1.Declaration;\npostcss$1.Container;\npostcss$1.Processor;\npostcss$1.Document;\npostcss$1.Comment;\npostcss$1.Warning;\npostcss$1.AtRule;\npostcss$1.Result;\npostcss$1.Input;\npostcss$1.Rule;\npostcss$1.Root;\npostcss$1.Node;\nclass BaseRRNode {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any\n constructor(..._args) {\n __publicField2(this, \"parentElement\", null);\n __publicField2(this, \"parentNode\", null);\n __publicField2(this, \"ownerDocument\");\n __publicField2(this, \"firstChild\", null);\n __publicField2(this, \"lastChild\", null);\n __publicField2(this, \"previousSibling\", null);\n __publicField2(this, \"nextSibling\", null);\n __publicField2(this, \"ELEMENT_NODE\", 1);\n __publicField2(this, \"TEXT_NODE\", 3);\n __publicField2(this, \"nodeType\");\n __publicField2(this, \"nodeName\");\n __publicField2(this, \"RRNodeType\");\n }\n get childNodes() {\n const childNodes2 = [];\n let childIterator = this.firstChild;\n while (childIterator) {\n childNodes2.push(childIterator);\n childIterator = childIterator.nextSibling;\n }\n return childNodes2;\n }\n contains(node2) {\n if (!(node2 instanceof BaseRRNode)) return false;\n else if (node2.ownerDocument !== this.ownerDocument) return false;\n else if (node2 === this) return true;\n while (node2.parentNode) {\n if (node2.parentNode === this) return true;\n node2 = node2.parentNode;\n }\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n appendChild(_newChild) {\n throw new Error(\n `RRDomException: Failed to execute 'appendChild' on 'RRNode': This RRNode type does not support this method.`\n );\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n insertBefore(_newChild, _refChild) {\n throw new Error(\n `RRDomException: Failed to execute 'insertBefore' on 'RRNode': This RRNode type does not support this method.`\n );\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n removeChild(_node) {\n throw new Error(\n `RRDomException: Failed to execute 'removeChild' on 'RRNode': This RRNode type does not support this method.`\n );\n }\n toString() {\n return \"RRNode\";\n }\n}\nconst testableAccessors = {\n Node: [\"childNodes\", \"parentNode\", \"parentElement\", \"textContent\"],\n ShadowRoot: [\"host\", \"styleSheets\"],\n Element: [\"shadowRoot\", \"querySelector\", \"querySelectorAll\"],\n MutationObserver: []\n};\nconst testableMethods = {\n Node: [\"contains\", \"getRootNode\"],\n ShadowRoot: [\"getSelection\"],\n Element: [],\n MutationObserver: [\"constructor\"]\n};\nconst untaintedBasePrototype = {};\nconst isAngularZonePresent = () => {\n return !!globalThis.Zone;\n};\nfunction getUntaintedPrototype(key) {\n if (untaintedBasePrototype[key])\n return untaintedBasePrototype[key];\n const defaultObj = globalThis[key];\n const defaultPrototype = defaultObj.prototype;\n const accessorNames = key in testableAccessors ? testableAccessors[key] : void 0;\n const isUntaintedAccessors = Boolean(\n accessorNames && // @ts-expect-error 2345\n accessorNames.every(\n (accessor) => {\n var _a2, _b;\n return Boolean(\n (_b = (_a2 = Object.getOwnPropertyDescriptor(defaultPrototype, accessor)) == null ? void 0 : _a2.get) == null ? void 0 : _b.toString().includes(\"[native code]\")\n );\n }\n )\n );\n const methodNames = key in testableMethods ? testableMethods[key] : void 0;\n const isUntaintedMethods = Boolean(\n methodNames && methodNames.every(\n // @ts-expect-error 2345\n (method) => {\n var _a2;\n return typeof defaultPrototype[method] === \"function\" && ((_a2 = defaultPrototype[method]) == null ? void 0 : _a2.toString().includes(\"[native code]\"));\n }\n )\n );\n if (isUntaintedAccessors && isUntaintedMethods && !isAngularZonePresent()) {\n untaintedBasePrototype[key] = defaultObj.prototype;\n return defaultObj.prototype;\n }\n try {\n const iframeEl = document.createElement(\"iframe\");\n document.body.appendChild(iframeEl);\n const win = iframeEl.contentWindow;\n if (!win) return defaultObj.prototype;\n const untaintedObject = win[key].prototype;\n document.body.removeChild(iframeEl);\n if (!untaintedObject) return defaultPrototype;\n return untaintedBasePrototype[key] = untaintedObject;\n } catch {\n return defaultPrototype;\n }\n}\nconst untaintedAccessorCache = {};\nfunction getUntaintedAccessor(key, instance, accessor) {\n var _a2;\n const cacheKey = `${key}.${String(accessor)}`;\n if (untaintedAccessorCache[cacheKey])\n return untaintedAccessorCache[cacheKey].call(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype(key);\n const untaintedAccessor = (_a2 = Object.getOwnPropertyDescriptor(\n untaintedPrototype,\n accessor\n )) == null ? void 0 : _a2.get;\n if (!untaintedAccessor) return instance[accessor];\n untaintedAccessorCache[cacheKey] = untaintedAccessor;\n return untaintedAccessor.call(instance);\n}\nconst untaintedMethodCache = {};\nfunction getUntaintedMethod(key, instance, method) {\n const cacheKey = `${key}.${String(method)}`;\n if (untaintedMethodCache[cacheKey])\n return untaintedMethodCache[cacheKey].bind(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype(key);\n const untaintedMethod = untaintedPrototype[method];\n if (typeof untaintedMethod !== \"function\") return instance[method];\n untaintedMethodCache[cacheKey] = untaintedMethod;\n return untaintedMethod.bind(instance);\n}\nfunction childNodes(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"childNodes\");\n}\nfunction parentNode(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"parentNode\");\n}\nfunction parentElement(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"parentElement\");\n}\nfunction textContent(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"textContent\");\n}\nfunction contains(n2, other) {\n return getUntaintedMethod(\"Node\", n2, \"contains\")(other);\n}\nfunction getRootNode(n2) {\n return getUntaintedMethod(\"Node\", n2, \"getRootNode\")();\n}\nfunction host(n2) {\n if (!n2 || !(\"host\" in n2)) return null;\n return getUntaintedAccessor(\"ShadowRoot\", n2, \"host\");\n}\nfunction styleSheets(n2) {\n return n2.styleSheets;\n}\nfunction shadowRoot(n2) {\n if (!n2 || !(\"shadowRoot\" in n2)) return null;\n return getUntaintedAccessor(\"Element\", n2, \"shadowRoot\");\n}\nfunction querySelector(n2, selectors) {\n return getUntaintedAccessor(\"Element\", n2, \"querySelector\")(selectors);\n}\nfunction querySelectorAll(n2, selectors) {\n return getUntaintedAccessor(\"Element\", n2, \"querySelectorAll\")(selectors);\n}\nfunction mutationObserverCtor() {\n return getUntaintedPrototype(\"MutationObserver\").constructor;\n}\nconst index = {\n childNodes,\n parentNode,\n parentElement,\n textContent,\n contains,\n getRootNode,\n host,\n styleSheets,\n shadowRoot,\n querySelector,\n querySelectorAll,\n mutationObserver: mutationObserverCtor\n};\nfunction on(type, fn, target = document) {\n const options = { capture: true, passive: true };\n target.addEventListener(type, fn, options);\n return () => target.removeEventListener(type, fn, options);\n}\nconst DEPARTED_MIRROR_ACCESS_WARNING = \"Please stop import mirror directly. Instead of that,\\r\\nnow you can use replayer.getMirror() to access the mirror instance of a replayer,\\r\\nor you can use record.mirror to access the mirror instance during recording.\";\nlet _mirror = {\n map: {},\n getId() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return -1;\n },\n getNode() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return null;\n },\n removeNodeFromMap() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n },\n has() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return false;\n },\n reset() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n }\n};\nif (typeof window !== \"undefined\" && window.Proxy && window.Reflect) {\n _mirror = new Proxy(_mirror, {\n get(target, prop, receiver) {\n if (prop === \"map\") {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n }\n return Reflect.get(target, prop, receiver);\n }\n });\n}\nfunction throttle(func, wait, options = {}) {\n let timeout = null;\n let previous = 0;\n return function(...args) {\n const now = Date.now();\n if (!previous && options.leading === false) {\n previous = now;\n }\n const remaining = wait - (now - previous);\n const context = this;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n func.apply(context, args);\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(() => {\n previous = options.leading === false ? 0 : Date.now();\n timeout = null;\n func.apply(context, args);\n }, remaining);\n }\n };\n}\nfunction hookSetter(target, key, d, isRevoked, win = window) {\n const original = win.Object.getOwnPropertyDescriptor(target, key);\n win.Object.defineProperty(\n target,\n key,\n isRevoked ? d : {\n set(value) {\n setTimeout(() => {\n d.set.call(this, value);\n }, 0);\n if (original && original.set) {\n original.set.call(this, value);\n }\n }\n }\n );\n return () => hookSetter(target, key, original || {}, true);\n}\nfunction patch(source, name, replacement) {\n try {\n if (!(name in source)) {\n return () => {\n };\n }\n const original = source[name];\n const wrapped = replacement(original);\n if (typeof wrapped === \"function\") {\n wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __rrweb_original__: {\n enumerable: false,\n value: original\n }\n });\n }\n source[name] = wrapped;\n return () => {\n source[name] = original;\n };\n } catch {\n return () => {\n };\n }\n}\nlet nowTimestamp = Date.now;\nif (!/* @__PURE__ */ /[1-9][0-9]{12}/.test(Date.now().toString())) {\n nowTimestamp = () => (/* @__PURE__ */ new Date()).getTime();\n}\nfunction getWindowScroll(win) {\n var _a2, _b, _c, _d;\n const doc = win.document;\n return {\n left: doc.scrollingElement ? doc.scrollingElement.scrollLeft : win.pageXOffset !== void 0 ? win.pageXOffset : doc.documentElement.scrollLeft || (doc == null ? void 0 : doc.body) && ((_a2 = index.parentElement(doc.body)) == null ? void 0 : _a2.scrollLeft) || ((_b = doc == null ? void 0 : doc.body) == null ? void 0 : _b.scrollLeft) || 0,\n top: doc.scrollingElement ? doc.scrollingElement.scrollTop : win.pageYOffset !== void 0 ? win.pageYOffset : (doc == null ? void 0 : doc.documentElement.scrollTop) || (doc == null ? void 0 : doc.body) && ((_c = index.parentElement(doc.body)) == null ? void 0 : _c.scrollTop) || ((_d = doc == null ? void 0 : doc.body) == null ? void 0 : _d.scrollTop) || 0\n };\n}\nfunction getWindowHeight() {\n return window.innerHeight || document.documentElement && document.documentElement.clientHeight || document.body && document.body.clientHeight;\n}\nfunction getWindowWidth() {\n return window.innerWidth || document.documentElement && document.documentElement.clientWidth || document.body && document.body.clientWidth;\n}\nfunction closestElementOfNode(node2) {\n if (!node2) {\n return null;\n }\n const el = node2.nodeType === node2.ELEMENT_NODE ? node2 : index.parentElement(node2);\n return el;\n}\nfunction isBlocked(node2, blockClass, blockSelector, checkAncestors) {\n if (!node2) {\n return false;\n }\n const el = closestElementOfNode(node2);\n if (!el) {\n return false;\n }\n try {\n if (typeof blockClass === \"string\") {\n if (el.classList.contains(blockClass)) return true;\n if (checkAncestors && el.closest(\".\" + blockClass) !== null) return true;\n } else {\n if (classMatchesRegex(el, blockClass, checkAncestors)) return true;\n }\n } catch (e2) {\n }\n if (blockSelector) {\n if (el.matches(blockSelector)) return true;\n if (checkAncestors && el.closest(blockSelector) !== null) return true;\n }\n return false;\n}\nfunction isSerialized(n2, mirror2) {\n return mirror2.getId(n2) !== -1;\n}\nfunction isIgnored(n2, mirror2, slimDOMOptions) {\n if (n2.tagName === \"TITLE\" && slimDOMOptions.headTitleMutations) {\n return true;\n }\n return mirror2.getId(n2) === IGNORED_NODE;\n}\nfunction isAncestorRemoved(target, mirror2) {\n if (isShadowRoot(target)) {\n return false;\n }\n const id = mirror2.getId(target);\n if (!mirror2.has(id)) {\n return true;\n }\n const parent = index.parentNode(target);\n if (parent && parent.nodeType === target.DOCUMENT_NODE) {\n return false;\n }\n if (!parent) {\n return true;\n }\n return isAncestorRemoved(parent, mirror2);\n}\nfunction legacy_isTouchEvent(event) {\n return Boolean(event.changedTouches);\n}\nfunction polyfill$1(win = window) {\n if (\"NodeList\" in win && !win.NodeList.prototype.forEach) {\n win.NodeList.prototype.forEach = Array.prototype.forEach;\n }\n if (\"DOMTokenList\" in win && !win.DOMTokenList.prototype.forEach) {\n win.DOMTokenList.prototype.forEach = Array.prototype.forEach;\n }\n}\nfunction isSerializedIframe(n2, mirror2) {\n return Boolean(n2.nodeName === \"IFRAME\" && mirror2.getMeta(n2));\n}\nfunction isSerializedStylesheet(n2, mirror2) {\n return Boolean(\n n2.nodeName === \"LINK\" && n2.nodeType === n2.ELEMENT_NODE && n2.getAttribute && n2.getAttribute(\"rel\") === \"stylesheet\" && mirror2.getMeta(n2)\n );\n}\nfunction hasShadowRoot(n2) {\n if (!n2) return false;\n if (n2 instanceof BaseRRNode && \"shadowRoot\" in n2) {\n return Boolean(n2.shadowRoot);\n }\n return Boolean(index.shadowRoot(n2));\n}\nclass StyleSheetMirror {\n constructor() {\n __publicField(this, \"id\", 1);\n __publicField(this, \"styleIDMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"idStyleMap\", /* @__PURE__ */ new Map());\n }\n getId(stylesheet) {\n return this.styleIDMap.get(stylesheet) ?? -1;\n }\n has(stylesheet) {\n return this.styleIDMap.has(stylesheet);\n }\n /**\n * @returns If the stylesheet is in the mirror, returns the id of the stylesheet. If not, return the new assigned id.\n */\n add(stylesheet, id) {\n if (this.has(stylesheet)) return this.getId(stylesheet);\n let newId;\n if (id === void 0) {\n newId = this.id++;\n } else newId = id;\n this.styleIDMap.set(stylesheet, newId);\n this.idStyleMap.set(newId, stylesheet);\n return newId;\n }\n getStyle(id) {\n return this.idStyleMap.get(id) || null;\n }\n reset() {\n this.styleIDMap = /* @__PURE__ */ new WeakMap();\n this.idStyleMap = /* @__PURE__ */ new Map();\n this.id = 1;\n }\n generateId() {\n return this.id++;\n }\n}\nfunction getShadowHost(n2) {\n var _a2;\n let shadowHost = null;\n if (\"getRootNode\" in n2 && ((_a2 = index.getRootNode(n2)) == null ? void 0 : _a2.nodeType) === Node.DOCUMENT_FRAGMENT_NODE && index.host(index.getRootNode(n2)))\n shadowHost = index.host(index.getRootNode(n2));\n return shadowHost;\n}\nfunction getRootShadowHost(n2) {\n let rootShadowHost = n2;\n let shadowHost;\n while (shadowHost = getShadowHost(rootShadowHost))\n rootShadowHost = shadowHost;\n return rootShadowHost;\n}\nfunction shadowHostInDom(n2) {\n const doc = n2.ownerDocument;\n if (!doc) return false;\n const shadowHost = getRootShadowHost(n2);\n return index.contains(doc, shadowHost);\n}\nfunction inDom(n2) {\n const doc = n2.ownerDocument;\n if (!doc) return false;\n return index.contains(doc, n2) || shadowHostInDom(n2);\n}\nvar EventType = /* @__PURE__ */ ((EventType2) => {\n EventType2[EventType2[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n EventType2[EventType2[\"Load\"] = 1] = \"Load\";\n EventType2[EventType2[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n EventType2[EventType2[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n EventType2[EventType2[\"Meta\"] = 4] = \"Meta\";\n EventType2[EventType2[\"Custom\"] = 5] = \"Custom\";\n EventType2[EventType2[\"Plugin\"] = 6] = \"Plugin\";\n return EventType2;\n})(EventType || {});\nvar IncrementalSource = /* @__PURE__ */ ((IncrementalSource2) => {\n IncrementalSource2[IncrementalSource2[\"Mutation\"] = 0] = \"Mutation\";\n IncrementalSource2[IncrementalSource2[\"MouseMove\"] = 1] = \"MouseMove\";\n IncrementalSource2[IncrementalSource2[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n IncrementalSource2[IncrementalSource2[\"Scroll\"] = 3] = \"Scroll\";\n IncrementalSource2[IncrementalSource2[\"ViewportResize\"] = 4] = \"ViewportResize\";\n IncrementalSource2[IncrementalSource2[\"Input\"] = 5] = \"Input\";\n IncrementalSource2[IncrementalSource2[\"TouchMove\"] = 6] = \"TouchMove\";\n IncrementalSource2[IncrementalSource2[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n IncrementalSource2[IncrementalSource2[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n IncrementalSource2[IncrementalSource2[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n IncrementalSource2[IncrementalSource2[\"Font\"] = 10] = \"Font\";\n IncrementalSource2[IncrementalSource2[\"Log\"] = 11] = \"Log\";\n IncrementalSource2[IncrementalSource2[\"Drag\"] = 12] = \"Drag\";\n IncrementalSource2[IncrementalSource2[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n IncrementalSource2[IncrementalSource2[\"Selection\"] = 14] = \"Selection\";\n IncrementalSource2[IncrementalSource2[\"AdoptedStyleSheet\"] = 15] = \"AdoptedStyleSheet\";\n IncrementalSource2[IncrementalSource2[\"CustomElement\"] = 16] = \"CustomElement\";\n return IncrementalSource2;\n})(IncrementalSource || {});\nvar MouseInteractions = /* @__PURE__ */ ((MouseInteractions2) => {\n MouseInteractions2[MouseInteractions2[\"MouseUp\"] = 0] = \"MouseUp\";\n MouseInteractions2[MouseInteractions2[\"MouseDown\"] = 1] = \"MouseDown\";\n MouseInteractions2[MouseInteractions2[\"Click\"] = 2] = \"Click\";\n MouseInteractions2[MouseInteractions2[\"ContextMenu\"] = 3] = \"ContextMenu\";\n MouseInteractions2[MouseInteractions2[\"DblClick\"] = 4] = \"DblClick\";\n MouseInteractions2[MouseInteractions2[\"Focus\"] = 5] = \"Focus\";\n MouseInteractions2[MouseInteractions2[\"Blur\"] = 6] = \"Blur\";\n MouseInteractions2[MouseInteractions2[\"TouchStart\"] = 7] = \"TouchStart\";\n MouseInteractions2[MouseInteractions2[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n MouseInteractions2[MouseInteractions2[\"TouchEnd\"] = 9] = \"TouchEnd\";\n MouseInteractions2[MouseInteractions2[\"TouchCancel\"] = 10] = \"TouchCancel\";\n return MouseInteractions2;\n})(MouseInteractions || {});\nvar PointerTypes = /* @__PURE__ */ ((PointerTypes2) => {\n PointerTypes2[PointerTypes2[\"Mouse\"] = 0] = \"Mouse\";\n PointerTypes2[PointerTypes2[\"Pen\"] = 1] = \"Pen\";\n PointerTypes2[PointerTypes2[\"Touch\"] = 2] = \"Touch\";\n return PointerTypes2;\n})(PointerTypes || {});\nvar CanvasContext = /* @__PURE__ */ ((CanvasContext2) => {\n CanvasContext2[CanvasContext2[\"2D\"] = 0] = \"2D\";\n CanvasContext2[CanvasContext2[\"WebGL\"] = 1] = \"WebGL\";\n CanvasContext2[CanvasContext2[\"WebGL2\"] = 2] = \"WebGL2\";\n return CanvasContext2;\n})(CanvasContext || {});\nvar MediaInteractions = /* @__PURE__ */ ((MediaInteractions2) => {\n MediaInteractions2[MediaInteractions2[\"Play\"] = 0] = \"Play\";\n MediaInteractions2[MediaInteractions2[\"Pause\"] = 1] = \"Pause\";\n MediaInteractions2[MediaInteractions2[\"Seeked\"] = 2] = \"Seeked\";\n MediaInteractions2[MediaInteractions2[\"VolumeChange\"] = 3] = \"VolumeChange\";\n MediaInteractions2[MediaInteractions2[\"RateChange\"] = 4] = \"RateChange\";\n return MediaInteractions2;\n})(MediaInteractions || {});\nvar NodeType = /* @__PURE__ */ ((NodeType2) => {\n NodeType2[NodeType2[\"Document\"] = 0] = \"Document\";\n NodeType2[NodeType2[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType2[NodeType2[\"Element\"] = 2] = \"Element\";\n NodeType2[NodeType2[\"Text\"] = 3] = \"Text\";\n NodeType2[NodeType2[\"CDATA\"] = 4] = \"CDATA\";\n NodeType2[NodeType2[\"Comment\"] = 5] = \"Comment\";\n return NodeType2;\n})(NodeType || {});\nfunction isNodeInLinkedList(n2) {\n return \"__ln\" in n2;\n}\nclass DoubleLinkedList {\n constructor() {\n __publicField(this, \"length\", 0);\n __publicField(this, \"head\", null);\n __publicField(this, \"tail\", null);\n }\n get(position) {\n if (position >= this.length) {\n throw new Error(\"Position outside of list range\");\n }\n let current = this.head;\n for (let index2 = 0; index2 < position; index2++) {\n current = (current == null ? void 0 : current.next) || null;\n }\n return current;\n }\n addNode(n2) {\n const node2 = {\n value: n2,\n previous: null,\n next: null\n };\n n2.__ln = node2;\n if (n2.previousSibling && isNodeInLinkedList(n2.previousSibling)) {\n const current = n2.previousSibling.__ln.next;\n node2.next = current;\n node2.previous = n2.previousSibling.__ln;\n n2.previousSibling.__ln.next = node2;\n if (current) {\n current.previous = node2;\n }\n } else if (n2.nextSibling && isNodeInLinkedList(n2.nextSibling) && n2.nextSibling.__ln.previous) {\n const current = n2.nextSibling.__ln.previous;\n node2.previous = current;\n node2.next = n2.nextSibling.__ln;\n n2.nextSibling.__ln.previous = node2;\n if (current) {\n current.next = node2;\n }\n } else {\n if (this.head) {\n this.head.previous = node2;\n }\n node2.next = this.head;\n this.head = node2;\n }\n if (node2.next === null) {\n this.tail = node2;\n }\n this.length++;\n }\n removeNode(n2) {\n const current = n2.__ln;\n if (!this.head) {\n return;\n }\n if (!current.previous) {\n this.head = current.next;\n if (this.head) {\n this.head.previous = null;\n } else {\n this.tail = null;\n }\n } else {\n current.previous.next = current.next;\n if (current.next) {\n current.next.previous = current.previous;\n } else {\n this.tail = current.previous;\n }\n }\n if (n2.__ln) {\n delete n2.__ln;\n }\n this.length--;\n }\n}\nconst moveKey = (id, parentId) => `${id}@${parentId}`;\nclass MutationBuffer {\n constructor() {\n __publicField(this, \"frozen\", false);\n __publicField(this, \"locked\", false);\n __publicField(this, \"texts\", []);\n __publicField(this, \"attributes\", []);\n __publicField(this, \"attributeMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"removes\", []);\n __publicField(this, \"mapRemoves\", []);\n __publicField(this, \"movedMap\", {});\n __publicField(this, \"addedSet\", /* @__PURE__ */ new Set());\n __publicField(this, \"movedSet\", /* @__PURE__ */ new Set());\n __publicField(this, \"droppedSet\", /* @__PURE__ */ new Set());\n __publicField(this, \"removesSubTreeCache\", /* @__PURE__ */ new Set());\n __publicField(this, \"mutationCb\");\n __publicField(this, \"blockClass\");\n __publicField(this, \"blockSelector\");\n __publicField(this, \"maskTextClass\");\n __publicField(this, \"maskTextSelector\");\n __publicField(this, \"inlineStylesheet\");\n __publicField(this, \"maskInputOptions\");\n __publicField(this, \"maskTextFn\");\n __publicField(this, \"maskInputFn\");\n __publicField(this, \"keepIframeSrcFn\");\n __publicField(this, \"recordCanvas\");\n __publicField(this, \"inlineImages\");\n __publicField(this, \"slimDOMOptions\");\n __publicField(this, \"dataURLOptions\");\n __publicField(this, \"doc\");\n __publicField(this, \"mirror\");\n __publicField(this, \"iframeManager\");\n __publicField(this, \"stylesheetManager\");\n __publicField(this, \"shadowDomManager\");\n __publicField(this, \"canvasManager\");\n __publicField(this, \"processedNodeManager\");\n __publicField(this, \"unattachedDoc\");\n __publicField(this, \"processMutations\", (mutations) => {\n mutations.forEach(this.processMutation);\n this.emit();\n });\n __publicField(this, \"emit\", () => {\n if (this.frozen || this.locked) {\n return;\n }\n const adds = [];\n const addedIds = /* @__PURE__ */ new Set();\n const addList = new DoubleLinkedList();\n const getNextId = (n2) => {\n let ns = n2;\n let nextId = IGNORED_NODE;\n while (nextId === IGNORED_NODE) {\n ns = ns && ns.nextSibling;\n nextId = ns && this.mirror.getId(ns);\n }\n return nextId;\n };\n const pushAdd = (n2) => {\n const parent = index.parentNode(n2);\n if (!parent || !inDom(n2)) {\n return;\n }\n let cssCaptured = false;\n if (n2.nodeType === Node.TEXT_NODE) {\n const parentTag = parent.tagName;\n if (parentTag === \"TEXTAREA\") {\n return;\n } else if (parentTag === \"STYLE\" && this.addedSet.has(parent)) {\n cssCaptured = true;\n }\n }\n const parentId = isShadowRoot(parent) ? this.mirror.getId(getShadowHost(n2)) : this.mirror.getId(parent);\n const nextId = getNextId(n2);\n if (parentId === -1 || nextId === -1) {\n return addList.addNode(n2);\n }\n const sn = serializeNodeWithId(n2, {\n doc: this.doc,\n mirror: this.mirror,\n blockClass: this.blockClass,\n blockSelector: this.blockSelector,\n maskTextClass: this.maskTextClass,\n maskTextSelector: this.maskTextSelector,\n skipChild: true,\n newlyAddedElement: true,\n inlineStylesheet: this.inlineStylesheet,\n maskInputOptions: this.maskInputOptions,\n maskTextFn: this.maskTextFn,\n maskInputFn: this.maskInputFn,\n slimDOMOptions: this.slimDOMOptions,\n dataURLOptions: this.dataURLOptions,\n recordCanvas: this.recordCanvas,\n inlineImages: this.inlineImages,\n onSerialize: (currentN) => {\n if (isSerializedIframe(currentN, this.mirror)) {\n this.iframeManager.addIframe(currentN);\n }\n if (isSerializedStylesheet(currentN, this.mirror)) {\n this.stylesheetManager.trackLinkElement(\n currentN\n );\n }\n if (hasShadowRoot(n2)) {\n this.shadowDomManager.addShadowRoot(index.shadowRoot(n2), this.doc);\n }\n },\n onIframeLoad: (iframe, childSn) => {\n this.iframeManager.attachIframe(iframe, childSn);\n this.shadowDomManager.observeAttachShadow(iframe);\n },\n onStylesheetLoad: (link, childSn) => {\n this.stylesheetManager.attachLinkElement(link, childSn);\n },\n cssCaptured\n });\n if (sn) {\n adds.push({\n parentId,\n nextId,\n node: sn\n });\n addedIds.add(sn.id);\n }\n };\n while (this.mapRemoves.length) {\n this.mirror.removeNodeFromMap(this.mapRemoves.shift());\n }\n for (const n2 of this.movedSet) {\n if (isParentRemoved(this.removesSubTreeCache, n2, this.mirror) && !this.movedSet.has(index.parentNode(n2))) {\n continue;\n }\n pushAdd(n2);\n }\n for (const n2 of this.addedSet) {\n if (!isAncestorInSet(this.droppedSet, n2) && !isParentRemoved(this.removesSubTreeCache, n2, this.mirror)) {\n pushAdd(n2);\n } else if (isAncestorInSet(this.movedSet, n2)) {\n pushAdd(n2);\n } else {\n this.droppedSet.add(n2);\n }\n }\n let candidate = null;\n while (addList.length) {\n let node2 = null;\n if (candidate) {\n const parentId = this.mirror.getId(index.parentNode(candidate.value));\n const nextId = getNextId(candidate.value);\n if (parentId !== -1 && nextId !== -1) {\n node2 = candidate;\n }\n }\n if (!node2) {\n let tailNode = addList.tail;\n while (tailNode) {\n const _node = tailNode;\n tailNode = tailNode.previous;\n if (_node) {\n const parentId = this.mirror.getId(index.parentNode(_node.value));\n const nextId = getNextId(_node.value);\n if (nextId === -1) continue;\n else if (parentId !== -1) {\n node2 = _node;\n break;\n } else {\n const unhandledNode = _node.value;\n const parent = index.parentNode(unhandledNode);\n if (parent && parent.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n const shadowHost = index.host(parent);\n const parentId2 = this.mirror.getId(shadowHost);\n if (parentId2 !== -1) {\n node2 = _node;\n break;\n }\n }\n }\n }\n }\n }\n if (!node2) {\n while (addList.head) {\n addList.removeNode(addList.head.value);\n }\n break;\n }\n candidate = node2.previous;\n addList.removeNode(node2.value);\n pushAdd(node2.value);\n }\n const payload = {\n texts: this.texts.map((text) => {\n const n2 = text.node;\n const parent = index.parentNode(n2);\n if (parent && parent.tagName === \"TEXTAREA\") {\n this.genTextAreaValueMutation(parent);\n }\n return {\n id: this.mirror.getId(n2),\n value: text.value\n };\n }).filter((text) => !addedIds.has(text.id)).filter((text) => this.mirror.has(text.id)),\n attributes: this.attributes.map((attribute) => {\n const { attributes } = attribute;\n if (typeof attributes.style === \"string\") {\n const diffAsStr = JSON.stringify(attribute.styleDiff);\n const unchangedAsStr = JSON.stringify(attribute._unchangedStyles);\n if (diffAsStr.length < attributes.style.length) {\n if ((diffAsStr + unchangedAsStr).split(\"var(\").length === attributes.style.split(\"var(\").length) {\n attributes.style = attribute.styleDiff;\n }\n }\n }\n return {\n id: this.mirror.getId(attribute.node),\n attributes\n };\n }).filter((attribute) => !addedIds.has(attribute.id)).filter((attribute) => this.mirror.has(attribute.id)),\n removes: this.removes,\n adds\n };\n if (!payload.texts.length && !payload.attributes.length && !payload.removes.length && !payload.adds.length) {\n return;\n }\n this.texts = [];\n this.attributes = [];\n this.attributeMap = /* @__PURE__ */ new WeakMap();\n this.removes = [];\n this.addedSet = /* @__PURE__ */ new Set();\n this.movedSet = /* @__PURE__ */ new Set();\n this.droppedSet = /* @__PURE__ */ new Set();\n this.removesSubTreeCache = /* @__PURE__ */ new Set();\n this.movedMap = {};\n this.mutationCb(payload);\n });\n __publicField(this, \"genTextAreaValueMutation\", (textarea) => {\n let item = this.attributeMap.get(textarea);\n if (!item) {\n item = {\n node: textarea,\n attributes: {},\n styleDiff: {},\n _unchangedStyles: {}\n };\n this.attributes.push(item);\n this.attributeMap.set(textarea, item);\n }\n item.attributes.value = Array.from(\n index.childNodes(textarea),\n (cn) => index.textContent(cn) || \"\"\n ).join(\"\");\n });\n __publicField(this, \"processMutation\", (m) => {\n if (isIgnored(m.target, this.mirror, this.slimDOMOptions)) {\n return;\n }\n switch (m.type) {\n case \"characterData\": {\n const value = index.textContent(m.target);\n if (!isBlocked(m.target, this.blockClass, this.blockSelector, false) && value !== m.oldValue) {\n this.texts.push({\n value: needMaskingText(\n m.target,\n this.maskTextClass,\n this.maskTextSelector,\n true\n // checkAncestors\n ) && value ? this.maskTextFn ? this.maskTextFn(value, closestElementOfNode(m.target)) : value.replace(/[\\S]/g, \"*\") : value,\n node: m.target\n });\n }\n break;\n }\n case \"attributes\": {\n const target = m.target;\n let attributeName = m.attributeName;\n let value = m.target.getAttribute(attributeName);\n if (attributeName === \"value\") {\n const type = getInputType(target);\n value = maskInputValue({\n element: target,\n maskInputOptions: this.maskInputOptions,\n tagName: target.tagName,\n type,\n value,\n maskInputFn: this.maskInputFn\n });\n }\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) || value === m.oldValue) {\n return;\n }\n let item = this.attributeMap.get(m.target);\n if (target.tagName === \"IFRAME\" && attributeName === \"src\" && !this.keepIframeSrcFn(value)) {\n if (!target.contentDocument) {\n attributeName = \"rr_src\";\n } else {\n return;\n }\n }\n if (!item) {\n item = {\n node: m.target,\n attributes: {},\n styleDiff: {},\n _unchangedStyles: {}\n };\n this.attributes.push(item);\n this.attributeMap.set(m.target, item);\n }\n if (attributeName === \"type\" && target.tagName === \"INPUT\" && (m.oldValue || \"\").toLowerCase() === \"password\") {\n target.setAttribute(\"data-rr-is-password\", \"true\");\n }\n if (!ignoreAttribute(target.tagName, attributeName)) {\n item.attributes[attributeName] = transformAttribute(\n this.doc,\n toLowerCase(target.tagName),\n toLowerCase(attributeName),\n value\n );\n if (attributeName === \"style\") {\n if (!this.unattachedDoc) {\n try {\n this.unattachedDoc = document.implementation.createHTMLDocument();\n } catch (e2) {\n this.unattachedDoc = this.doc;\n }\n }\n const old = this.unattachedDoc.createElement(\"span\");\n if (m.oldValue) {\n old.setAttribute(\"style\", m.oldValue);\n }\n for (const pname of Array.from(target.style)) {\n const newValue = target.style.getPropertyValue(pname);\n const newPriority = target.style.getPropertyPriority(pname);\n if (newValue !== old.style.getPropertyValue(pname) || newPriority !== old.style.getPropertyPriority(pname)) {\n if (newPriority === \"\") {\n item.styleDiff[pname] = newValue;\n } else {\n item.styleDiff[pname] = [newValue, newPriority];\n }\n } else {\n item._unchangedStyles[pname] = [newValue, newPriority];\n }\n }\n for (const pname of Array.from(old.style)) {\n if (target.style.getPropertyValue(pname) === \"\") {\n item.styleDiff[pname] = false;\n }\n }\n } else if (attributeName === \"open\" && target.tagName === \"DIALOG\") {\n if (target.matches(\"dialog:modal\")) {\n item.attributes[\"rr_open_mode\"] = \"modal\";\n } else {\n item.attributes[\"rr_open_mode\"] = \"non-modal\";\n }\n }\n }\n break;\n }\n case \"childList\": {\n if (isBlocked(m.target, this.blockClass, this.blockSelector, true))\n return;\n if (m.target.tagName === \"TEXTAREA\") {\n this.genTextAreaValueMutation(m.target);\n return;\n }\n m.addedNodes.forEach((n2) => this.genAdds(n2, m.target));\n m.removedNodes.forEach((n2) => {\n const nodeId = this.mirror.getId(n2);\n const parentId = isShadowRoot(m.target) ? this.mirror.getId(index.host(m.target)) : this.mirror.getId(m.target);\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) || isIgnored(n2, this.mirror, this.slimDOMOptions) || !isSerialized(n2, this.mirror)) {\n return;\n }\n if (this.addedSet.has(n2)) {\n deepDelete(this.addedSet, n2);\n this.droppedSet.add(n2);\n } else if (this.addedSet.has(m.target) && nodeId === -1) ;\n else if (isAncestorRemoved(m.target, this.mirror)) ;\n else if (this.movedSet.has(n2) && this.movedMap[moveKey(nodeId, parentId)]) {\n deepDelete(this.movedSet, n2);\n } else {\n this.removes.push({\n parentId,\n id: nodeId,\n isShadow: isShadowRoot(m.target) && isNativeShadowDom(m.target) ? true : void 0\n });\n processRemoves(n2, this.removesSubTreeCache);\n }\n this.mapRemoves.push(n2);\n });\n break;\n }\n }\n });\n __publicField(this, \"genAdds\", (n2, target) => {\n if (this.processedNodeManager.inOtherBuffer(n2, this)) return;\n if (this.addedSet.has(n2) || this.movedSet.has(n2)) return;\n if (this.mirror.hasNode(n2)) {\n if (isIgnored(n2, this.mirror, this.slimDOMOptions)) {\n return;\n }\n this.movedSet.add(n2);\n let targetId = null;\n if (target && this.mirror.hasNode(target)) {\n targetId = this.mirror.getId(target);\n }\n if (targetId && targetId !== -1) {\n this.movedMap[moveKey(this.mirror.getId(n2), targetId)] = true;\n }\n } else {\n this.addedSet.add(n2);\n this.droppedSet.delete(n2);\n }\n if (!isBlocked(n2, this.blockClass, this.blockSelector, false)) {\n index.childNodes(n2).forEach((childN) => this.genAdds(childN));\n if (hasShadowRoot(n2)) {\n index.childNodes(index.shadowRoot(n2)).forEach((childN) => {\n this.processedNodeManager.add(childN, this);\n this.genAdds(childN, n2);\n });\n }\n }\n });\n }\n init(options) {\n [\n \"mutationCb\",\n \"blockClass\",\n \"blockSelector\",\n \"maskTextClass\",\n \"maskTextSelector\",\n \"inlineStylesheet\",\n \"maskInputOptions\",\n \"maskTextFn\",\n \"maskInputFn\",\n \"keepIframeSrcFn\",\n \"recordCanvas\",\n \"inlineImages\",\n \"slimDOMOptions\",\n \"dataURLOptions\",\n \"doc\",\n \"mirror\",\n \"iframeManager\",\n \"stylesheetManager\",\n \"shadowDomManager\",\n \"canvasManager\",\n \"processedNodeManager\"\n ].forEach((key) => {\n this[key] = options[key];\n });\n }\n freeze() {\n this.frozen = true;\n this.canvasManager.freeze();\n }\n unfreeze() {\n this.frozen = false;\n this.canvasManager.unfreeze();\n this.emit();\n }\n isFrozen() {\n return this.frozen;\n }\n lock() {\n this.locked = true;\n this.canvasManager.lock();\n }\n unlock() {\n this.locked = false;\n this.canvasManager.unlock();\n this.emit();\n }\n reset() {\n this.shadowDomManager.reset();\n this.canvasManager.reset();\n }\n}\nfunction deepDelete(addsSet, n2) {\n addsSet.delete(n2);\n index.childNodes(n2).forEach((childN) => deepDelete(addsSet, childN));\n}\nfunction processRemoves(n2, cache) {\n const queue = [n2];\n while (queue.length) {\n const next = queue.pop();\n if (cache.has(next)) continue;\n cache.add(next);\n index.childNodes(next).forEach((n22) => queue.push(n22));\n }\n return;\n}\nfunction isParentRemoved(removes, n2, mirror2) {\n if (removes.size === 0) return false;\n return _isParentRemoved(removes, n2);\n}\nfunction _isParentRemoved(removes, n2, _mirror2) {\n const node2 = index.parentNode(n2);\n if (!node2) return false;\n return removes.has(node2);\n}\nfunction isAncestorInSet(set, n2) {\n if (set.size === 0) return false;\n return _isAncestorInSet(set, n2);\n}\nfunction _isAncestorInSet(set, n2) {\n const parent = index.parentNode(n2);\n if (!parent) {\n return false;\n }\n if (set.has(parent)) {\n return true;\n }\n return _isAncestorInSet(set, parent);\n}\nlet errorHandler;\nfunction registerErrorHandler(handler) {\n errorHandler = handler;\n}\nfunction unregisterErrorHandler() {\n errorHandler = void 0;\n}\nconst callbackWrapper = (cb) => {\n if (!errorHandler) {\n return cb;\n }\n const rrwebWrapped = (...rest) => {\n try {\n return cb(...rest);\n } catch (error) {\n if (errorHandler && errorHandler(error) === true) {\n return;\n }\n throw error;\n }\n };\n return rrwebWrapped;\n};\nconst mutationBuffers = [];\nfunction getEventTarget(event) {\n try {\n if (\"composedPath\" in event) {\n const path = event.composedPath();\n if (path.length) {\n return path[0];\n }\n } else if (\"path\" in event && event.path.length) {\n return event.path[0];\n }\n } catch {\n }\n return event && event.target;\n}\nfunction initMutationObserver(options, rootEl) {\n const mutationBuffer = new MutationBuffer();\n mutationBuffers.push(mutationBuffer);\n mutationBuffer.init(options);\n const observer = new (mutationObserverCtor())(\n callbackWrapper(mutationBuffer.processMutations.bind(mutationBuffer))\n );\n observer.observe(rootEl, {\n attributes: true,\n attributeOldValue: true,\n characterData: true,\n characterDataOldValue: true,\n childList: true,\n subtree: true\n });\n return observer;\n}\nfunction initMoveObserver({\n mousemoveCb,\n sampling,\n doc,\n mirror: mirror2\n}) {\n if (sampling.mousemove === false) {\n return () => {\n };\n }\n const threshold = typeof sampling.mousemove === \"number\" ? sampling.mousemove : 50;\n const callbackThreshold = typeof sampling.mousemoveCallback === \"number\" ? sampling.mousemoveCallback : 500;\n let positions = [];\n let timeBaseline;\n const wrappedCb = throttle(\n callbackWrapper(\n (source) => {\n const totalOffset = Date.now() - timeBaseline;\n mousemoveCb(\n positions.map((p) => {\n p.timeOffset -= totalOffset;\n return p;\n }),\n source\n );\n positions = [];\n timeBaseline = null;\n }\n ),\n callbackThreshold\n );\n const updatePosition = callbackWrapper(\n throttle(\n callbackWrapper((evt) => {\n const target = getEventTarget(evt);\n const { clientX, clientY } = legacy_isTouchEvent(evt) ? evt.changedTouches[0] : evt;\n if (!timeBaseline) {\n timeBaseline = nowTimestamp();\n }\n positions.push({\n x: clientX,\n y: clientY,\n id: mirror2.getId(target),\n timeOffset: nowTimestamp() - timeBaseline\n });\n wrappedCb(\n typeof DragEvent !== \"undefined\" && evt instanceof DragEvent ? IncrementalSource.Drag : evt instanceof MouseEvent ? IncrementalSource.MouseMove : IncrementalSource.TouchMove\n );\n }),\n threshold,\n {\n trailing: false\n }\n )\n );\n const handlers = [\n on(\"mousemove\", updatePosition, doc),\n on(\"touchmove\", updatePosition, doc),\n on(\"drag\", updatePosition, doc)\n ];\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initMouseInteractionObserver({\n mouseInteractionCb,\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n sampling\n}) {\n if (sampling.mouseInteraction === false) {\n return () => {\n };\n }\n const disableMap = sampling.mouseInteraction === true || sampling.mouseInteraction === void 0 ? {} : sampling.mouseInteraction;\n const handlers = [];\n let currentPointerType = null;\n const getHandler = (eventKey) => {\n return (event) => {\n const target = getEventTarget(event);\n if (isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n let pointerType = null;\n let thisEventKey = eventKey;\n if (\"pointerType\" in event) {\n switch (event.pointerType) {\n case \"mouse\":\n pointerType = PointerTypes.Mouse;\n break;\n case \"touch\":\n pointerType = PointerTypes.Touch;\n break;\n case \"pen\":\n pointerType = PointerTypes.Pen;\n break;\n }\n if (pointerType === PointerTypes.Touch) {\n if (MouseInteractions[eventKey] === MouseInteractions.MouseDown) {\n thisEventKey = \"TouchStart\";\n } else if (MouseInteractions[eventKey] === MouseInteractions.MouseUp) {\n thisEventKey = \"TouchEnd\";\n }\n } else if (pointerType === PointerTypes.Pen) ;\n } else if (legacy_isTouchEvent(event)) {\n pointerType = PointerTypes.Touch;\n }\n if (pointerType !== null) {\n currentPointerType = pointerType;\n if (thisEventKey.startsWith(\"Touch\") && pointerType === PointerTypes.Touch || thisEventKey.startsWith(\"Mouse\") && pointerType === PointerTypes.Mouse) {\n pointerType = null;\n }\n } else if (MouseInteractions[eventKey] === MouseInteractions.Click) {\n pointerType = currentPointerType;\n currentPointerType = null;\n }\n const e2 = legacy_isTouchEvent(event) ? event.changedTouches[0] : event;\n if (!e2) {\n return;\n }\n const id = mirror2.getId(target);\n const { clientX, clientY } = e2;\n callbackWrapper(mouseInteractionCb)({\n type: MouseInteractions[thisEventKey],\n id,\n x: clientX,\n y: clientY,\n ...pointerType !== null && { pointerType }\n });\n };\n };\n Object.keys(MouseInteractions).filter(\n (key) => Number.isNaN(Number(key)) && !key.endsWith(\"_Departed\") && disableMap[key] !== false\n ).forEach((eventKey) => {\n let eventName = toLowerCase(eventKey);\n const handler = getHandler(eventKey);\n if (window.PointerEvent) {\n switch (MouseInteractions[eventKey]) {\n case MouseInteractions.MouseDown:\n case MouseInteractions.MouseUp:\n eventName = eventName.replace(\n \"mouse\",\n \"pointer\"\n );\n break;\n case MouseInteractions.TouchStart:\n case MouseInteractions.TouchEnd:\n return;\n }\n }\n handlers.push(on(eventName, handler, doc));\n });\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initScrollObserver({\n scrollCb,\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n sampling\n}) {\n const updatePosition = callbackWrapper(\n throttle(\n callbackWrapper((evt) => {\n const target = getEventTarget(evt);\n if (!target || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n const id = mirror2.getId(target);\n if (target === doc && doc.defaultView) {\n const scrollLeftTop = getWindowScroll(doc.defaultView);\n scrollCb({\n id,\n x: scrollLeftTop.left,\n y: scrollLeftTop.top\n });\n } else {\n scrollCb({\n id,\n x: target.scrollLeft,\n y: target.scrollTop\n });\n }\n }),\n sampling.scroll || 100\n )\n );\n return on(\"scroll\", updatePosition, doc);\n}\nfunction initViewportResizeObserver({ viewportResizeCb }, { win }) {\n let lastH = -1;\n let lastW = -1;\n const updateDimension = callbackWrapper(\n throttle(\n callbackWrapper(() => {\n const height = getWindowHeight();\n const width = getWindowWidth();\n if (lastH !== height || lastW !== width) {\n viewportResizeCb({\n width: Number(width),\n height: Number(height)\n });\n lastH = height;\n lastW = width;\n }\n }),\n 200\n )\n );\n return on(\"resize\", updateDimension, win);\n}\nconst INPUT_TAGS = [\"INPUT\", \"TEXTAREA\", \"SELECT\"];\nconst lastInputValueMap = /* @__PURE__ */ new WeakMap();\nfunction initInputObserver({\n inputCb,\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n ignoreClass,\n ignoreSelector,\n maskInputOptions,\n maskInputFn,\n sampling,\n userTriggeredOnInput\n}) {\n function eventHandler(event) {\n let target = getEventTarget(event);\n const userTriggered = event.isTrusted;\n const tagName = target && target.tagName;\n if (target && tagName === \"OPTION\") {\n target = index.parentElement(target);\n }\n if (!target || !tagName || INPUT_TAGS.indexOf(tagName) < 0 || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n if (target.classList.contains(ignoreClass) || ignoreSelector && target.matches(ignoreSelector)) {\n return;\n }\n let text = target.value;\n let isChecked = false;\n const type = getInputType(target) || \"\";\n if (type === \"radio\" || type === \"checkbox\") {\n isChecked = target.checked;\n } else if (maskInputOptions[tagName.toLowerCase()] || maskInputOptions[type]) {\n text = maskInputValue({\n element: target,\n maskInputOptions,\n tagName,\n type,\n value: text,\n maskInputFn\n });\n }\n cbWithDedup(\n target,\n userTriggeredOnInput ? { text, isChecked, userTriggered } : { text, isChecked }\n );\n const name = target.name;\n if (type === \"radio\" && name && isChecked) {\n doc.querySelectorAll(`input[type=\"radio\"][name=\"${name}\"]`).forEach((el) => {\n if (el !== target) {\n const text2 = el.value;\n cbWithDedup(\n el,\n userTriggeredOnInput ? { text: text2, isChecked: !isChecked, userTriggered: false } : { text: text2, isChecked: !isChecked }\n );\n }\n });\n }\n }\n function cbWithDedup(target, v2) {\n const lastInputValue = lastInputValueMap.get(target);\n if (!lastInputValue || lastInputValue.text !== v2.text || lastInputValue.isChecked !== v2.isChecked) {\n lastInputValueMap.set(target, v2);\n const id = mirror2.getId(target);\n callbackWrapper(inputCb)({\n ...v2,\n id\n });\n }\n }\n const events = sampling.input === \"last\" ? [\"change\"] : [\"input\", \"change\"];\n const handlers = events.map(\n (eventName) => on(eventName, callbackWrapper(eventHandler), doc)\n );\n const currentWindow = doc.defaultView;\n if (!currentWindow) {\n return () => {\n handlers.forEach((h) => h());\n };\n }\n const propertyDescriptor = currentWindow.Object.getOwnPropertyDescriptor(\n currentWindow.HTMLInputElement.prototype,\n \"value\"\n );\n const hookProperties = [\n [currentWindow.HTMLInputElement.prototype, \"value\"],\n [currentWindow.HTMLInputElement.prototype, \"checked\"],\n [currentWindow.HTMLSelectElement.prototype, \"value\"],\n [currentWindow.HTMLTextAreaElement.prototype, \"value\"],\n // Some UI library use selectedIndex to set select value\n [currentWindow.HTMLSelectElement.prototype, \"selectedIndex\"],\n [currentWindow.HTMLOptionElement.prototype, \"selected\"]\n ];\n if (propertyDescriptor && propertyDescriptor.set) {\n handlers.push(\n ...hookProperties.map(\n (p) => hookSetter(\n p[0],\n p[1],\n {\n set() {\n callbackWrapper(eventHandler)({\n target: this,\n isTrusted: false\n // userTriggered to false as this could well be programmatic\n });\n }\n },\n false,\n currentWindow\n )\n )\n );\n }\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction getNestedCSSRulePositions(rule2) {\n const positions = [];\n function recurse(childRule, pos) {\n if (hasNestedCSSRule(\"CSSGroupingRule\") && childRule.parentRule instanceof CSSGroupingRule || hasNestedCSSRule(\"CSSMediaRule\") && childRule.parentRule instanceof CSSMediaRule || hasNestedCSSRule(\"CSSSupportsRule\") && childRule.parentRule instanceof CSSSupportsRule || hasNestedCSSRule(\"CSSConditionRule\") && childRule.parentRule instanceof CSSConditionRule) {\n const rules2 = Array.from(\n childRule.parentRule.cssRules\n );\n const index2 = rules2.indexOf(childRule);\n pos.unshift(index2);\n } else if (childRule.parentStyleSheet) {\n const rules2 = Array.from(childRule.parentStyleSheet.cssRules);\n const index2 = rules2.indexOf(childRule);\n pos.unshift(index2);\n }\n return pos;\n }\n return recurse(rule2, positions);\n}\nfunction getIdAndStyleId(sheet, mirror2, styleMirror) {\n let id, styleId;\n if (!sheet) return {};\n if (sheet.ownerNode) id = mirror2.getId(sheet.ownerNode);\n else styleId = styleMirror.getId(sheet);\n return {\n styleId,\n id\n };\n}\nfunction initStyleSheetObserver({ styleSheetRuleCb, mirror: mirror2, stylesheetManager }, { win }) {\n if (!win.CSSStyleSheet || !win.CSSStyleSheet.prototype) {\n return () => {\n };\n }\n const insertRule = win.CSSStyleSheet.prototype.insertRule;\n win.CSSStyleSheet.prototype.insertRule = new Proxy(insertRule, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [rule2, index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n adds: [{ rule: rule2, index: index2 }]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n win.CSSStyleSheet.prototype.addRule = function(selector, styleBlock, index2 = this.cssRules.length) {\n const rule2 = `${selector} { ${styleBlock} }`;\n return win.CSSStyleSheet.prototype.insertRule.apply(this, [rule2, index2]);\n };\n const deleteRule = win.CSSStyleSheet.prototype.deleteRule;\n win.CSSStyleSheet.prototype.deleteRule = new Proxy(deleteRule, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n removes: [{ index: index2 }]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n win.CSSStyleSheet.prototype.removeRule = function(index2) {\n return win.CSSStyleSheet.prototype.deleteRule.apply(this, [index2]);\n };\n let replace;\n if (win.CSSStyleSheet.prototype.replace) {\n replace = win.CSSStyleSheet.prototype.replace;\n win.CSSStyleSheet.prototype.replace = new Proxy(replace, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [text] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n replace: text\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n }\n let replaceSync;\n if (win.CSSStyleSheet.prototype.replaceSync) {\n replaceSync = win.CSSStyleSheet.prototype.replaceSync;\n win.CSSStyleSheet.prototype.replaceSync = new Proxy(replaceSync, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [text] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n replaceSync: text\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n }\n const supportedNestedCSSRuleTypes = {};\n if (canMonkeyPatchNestedCSSRule(\"CSSGroupingRule\")) {\n supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\n } else {\n if (canMonkeyPatchNestedCSSRule(\"CSSMediaRule\")) {\n supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\n }\n if (canMonkeyPatchNestedCSSRule(\"CSSConditionRule\")) {\n supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\n }\n if (canMonkeyPatchNestedCSSRule(\"CSSSupportsRule\")) {\n supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\n }\n }\n const unmodifiedFunctions = {};\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n unmodifiedFunctions[typeKey] = {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n insertRule: type.prototype.insertRule,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n deleteRule: type.prototype.deleteRule\n };\n type.prototype.insertRule = new Proxy(\n unmodifiedFunctions[typeKey].insertRule,\n {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [rule2, index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n adds: [\n {\n rule: rule2,\n index: [\n ...getNestedCSSRulePositions(thisArg),\n index2 || 0\n // defaults to 0\n ]\n }\n ]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n }\n );\n type.prototype.deleteRule = new Proxy(\n unmodifiedFunctions[typeKey].deleteRule,\n {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n removes: [\n { index: [...getNestedCSSRulePositions(thisArg), index2] }\n ]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n }\n );\n });\n return callbackWrapper(() => {\n win.CSSStyleSheet.prototype.insertRule = insertRule;\n win.CSSStyleSheet.prototype.deleteRule = deleteRule;\n replace && (win.CSSStyleSheet.prototype.replace = replace);\n replaceSync && (win.CSSStyleSheet.prototype.replaceSync = replaceSync);\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\n type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\n });\n });\n}\nfunction initAdoptedStyleSheetObserver({\n mirror: mirror2,\n stylesheetManager\n}, host2) {\n var _a2, _b, _c;\n let hostId = null;\n if (host2.nodeName === \"#document\") hostId = mirror2.getId(host2);\n else hostId = mirror2.getId(index.host(host2));\n const patchTarget = host2.nodeName === \"#document\" ? (_a2 = host2.defaultView) == null ? void 0 : _a2.Document : (_c = (_b = host2.ownerDocument) == null ? void 0 : _b.defaultView) == null ? void 0 : _c.ShadowRoot;\n const originalPropertyDescriptor = (patchTarget == null ? void 0 : patchTarget.prototype) ? Object.getOwnPropertyDescriptor(\n patchTarget == null ? void 0 : patchTarget.prototype,\n \"adoptedStyleSheets\"\n ) : void 0;\n if (hostId === null || hostId === -1 || !patchTarget || !originalPropertyDescriptor)\n return () => {\n };\n Object.defineProperty(host2, \"adoptedStyleSheets\", {\n configurable: originalPropertyDescriptor.configurable,\n enumerable: originalPropertyDescriptor.enumerable,\n get() {\n var _a3;\n return (_a3 = originalPropertyDescriptor.get) == null ? void 0 : _a3.call(this);\n },\n set(sheets) {\n var _a3;\n const result2 = (_a3 = originalPropertyDescriptor.set) == null ? void 0 : _a3.call(this, sheets);\n if (hostId !== null && hostId !== -1) {\n try {\n stylesheetManager.adoptStyleSheets(sheets, hostId);\n } catch (e2) {\n }\n }\n return result2;\n }\n });\n return callbackWrapper(() => {\n Object.defineProperty(host2, \"adoptedStyleSheets\", {\n configurable: originalPropertyDescriptor.configurable,\n enumerable: originalPropertyDescriptor.enumerable,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n get: originalPropertyDescriptor.get,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n set: originalPropertyDescriptor.set\n });\n });\n}\nfunction initStyleDeclarationObserver({\n styleDeclarationCb,\n mirror: mirror2,\n ignoreCSSAttributes,\n stylesheetManager\n}, { win }) {\n const setProperty = win.CSSStyleDeclaration.prototype.setProperty;\n win.CSSStyleDeclaration.prototype.setProperty = new Proxy(setProperty, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n var _a2;\n const [property, value, priority] = argumentsList;\n if (ignoreCSSAttributes.has(property)) {\n return setProperty.apply(thisArg, [property, value, priority]);\n }\n const { id, styleId } = getIdAndStyleId(\n (_a2 = thisArg.parentRule) == null ? void 0 : _a2.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleDeclarationCb({\n id,\n styleId,\n set: {\n property,\n value,\n priority\n },\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n index: getNestedCSSRulePositions(thisArg.parentRule)\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n const removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = new Proxy(removeProperty, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n var _a2;\n const [property] = argumentsList;\n if (ignoreCSSAttributes.has(property)) {\n return removeProperty.apply(thisArg, [property]);\n }\n const { id, styleId } = getIdAndStyleId(\n (_a2 = thisArg.parentRule) == null ? void 0 : _a2.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleDeclarationCb({\n id,\n styleId,\n remove: {\n property\n },\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n index: getNestedCSSRulePositions(thisArg.parentRule)\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n return callbackWrapper(() => {\n win.CSSStyleDeclaration.prototype.setProperty = setProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\n });\n}\nfunction initMediaInteractionObserver({\n mediaInteractionCb,\n blockClass,\n blockSelector,\n mirror: mirror2,\n sampling,\n doc\n}) {\n const handler = callbackWrapper(\n (type) => throttle(\n callbackWrapper((event) => {\n const target = getEventTarget(event);\n if (!target || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n const { currentTime, volume, muted, playbackRate, loop } = target;\n mediaInteractionCb({\n type,\n id: mirror2.getId(target),\n currentTime,\n volume,\n muted,\n playbackRate,\n loop\n });\n }),\n sampling.media || 500\n )\n );\n const handlers = [\n on(\"play\", handler(MediaInteractions.Play), doc),\n on(\"pause\", handler(MediaInteractions.Pause), doc),\n on(\"seeked\", handler(MediaInteractions.Seeked), doc),\n on(\"volumechange\", handler(MediaInteractions.VolumeChange), doc),\n on(\"ratechange\", handler(MediaInteractions.RateChange), doc)\n ];\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initFontObserver({ fontCb, doc }) {\n const win = doc.defaultView;\n if (!win) {\n return () => {\n };\n }\n const handlers = [];\n const fontMap = /* @__PURE__ */ new WeakMap();\n const originalFontFace = win.FontFace;\n win.FontFace = function FontFace2(family, source, descriptors) {\n const fontFace = new originalFontFace(family, source, descriptors);\n fontMap.set(fontFace, {\n family,\n buffer: typeof source !== \"string\",\n descriptors,\n fontSource: typeof source === \"string\" ? source : JSON.stringify(Array.from(new Uint8Array(source)))\n });\n return fontFace;\n };\n const restoreHandler = patch(\n doc.fonts,\n \"add\",\n function(original) {\n return function(fontFace) {\n setTimeout(\n callbackWrapper(() => {\n const p = fontMap.get(fontFace);\n if (p) {\n fontCb(p);\n fontMap.delete(fontFace);\n }\n }),\n 0\n );\n return original.apply(this, [fontFace]);\n };\n }\n );\n handlers.push(() => {\n win.FontFace = originalFontFace;\n });\n handlers.push(restoreHandler);\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initSelectionObserver(param) {\n const { doc, mirror: mirror2, blockClass, blockSelector, selectionCb } = param;\n let collapsed = true;\n const updateSelection = callbackWrapper(() => {\n const selection = doc.getSelection();\n if (!selection || collapsed && (selection == null ? void 0 : selection.isCollapsed)) return;\n collapsed = selection.isCollapsed || false;\n const ranges = [];\n const count = selection.rangeCount || 0;\n for (let i2 = 0; i2 < count; i2++) {\n const range = selection.getRangeAt(i2);\n const { startContainer, startOffset, endContainer, endOffset } = range;\n const blocked = isBlocked(startContainer, blockClass, blockSelector, true) || isBlocked(endContainer, blockClass, blockSelector, true);\n if (blocked) continue;\n ranges.push({\n start: mirror2.getId(startContainer),\n startOffset,\n end: mirror2.getId(endContainer),\n endOffset\n });\n }\n selectionCb({ ranges });\n });\n updateSelection();\n return on(\"selectionchange\", updateSelection);\n}\nfunction initCustomElementObserver({\n doc,\n customElementCb\n}) {\n const win = doc.defaultView;\n if (!win || !win.customElements) return () => {\n };\n const restoreHandler = patch(\n win.customElements,\n \"define\",\n function(original) {\n return function(name, constructor, options) {\n try {\n customElementCb({\n define: {\n name\n }\n });\n } catch (e2) {\n console.warn(`Custom element callback failed for ${name}`);\n }\n return original.apply(this, [name, constructor, options]);\n };\n }\n );\n return restoreHandler;\n}\nfunction mergeHooks(o2, hooks) {\n const {\n mutationCb,\n mousemoveCb,\n mouseInteractionCb,\n scrollCb,\n viewportResizeCb,\n inputCb,\n mediaInteractionCb,\n styleSheetRuleCb,\n styleDeclarationCb,\n canvasMutationCb,\n fontCb,\n selectionCb,\n customElementCb\n } = o2;\n o2.mutationCb = (...p) => {\n if (hooks.mutation) {\n hooks.mutation(...p);\n }\n mutationCb(...p);\n };\n o2.mousemoveCb = (...p) => {\n if (hooks.mousemove) {\n hooks.mousemove(...p);\n }\n mousemoveCb(...p);\n };\n o2.mouseInteractionCb = (...p) => {\n if (hooks.mouseInteraction) {\n hooks.mouseInteraction(...p);\n }\n mouseInteractionCb(...p);\n };\n o2.scrollCb = (...p) => {\n if (hooks.scroll) {\n hooks.scroll(...p);\n }\n scrollCb(...p);\n };\n o2.viewportResizeCb = (...p) => {\n if (hooks.viewportResize) {\n hooks.viewportResize(...p);\n }\n viewportResizeCb(...p);\n };\n o2.inputCb = (...p) => {\n if (hooks.input) {\n hooks.input(...p);\n }\n inputCb(...p);\n };\n o2.mediaInteractionCb = (...p) => {\n if (hooks.mediaInteaction) {\n hooks.mediaInteaction(...p);\n }\n mediaInteractionCb(...p);\n };\n o2.styleSheetRuleCb = (...p) => {\n if (hooks.styleSheetRule) {\n hooks.styleSheetRule(...p);\n }\n styleSheetRuleCb(...p);\n };\n o2.styleDeclarationCb = (...p) => {\n if (hooks.styleDeclaration) {\n hooks.styleDeclaration(...p);\n }\n styleDeclarationCb(...p);\n };\n o2.canvasMutationCb = (...p) => {\n if (hooks.canvasMutation) {\n hooks.canvasMutation(...p);\n }\n canvasMutationCb(...p);\n };\n o2.fontCb = (...p) => {\n if (hooks.font) {\n hooks.font(...p);\n }\n fontCb(...p);\n };\n o2.selectionCb = (...p) => {\n if (hooks.selection) {\n hooks.selection(...p);\n }\n selectionCb(...p);\n };\n o2.customElementCb = (...c2) => {\n if (hooks.customElement) {\n hooks.customElement(...c2);\n }\n customElementCb(...c2);\n };\n}\nfunction initObservers(o2, hooks = {}) {\n const currentWindow = o2.doc.defaultView;\n if (!currentWindow) {\n return () => {\n };\n }\n mergeHooks(o2, hooks);\n let mutationObserver;\n if (o2.recordDOM) {\n mutationObserver = initMutationObserver(o2, o2.doc);\n }\n const mousemoveHandler = initMoveObserver(o2);\n const mouseInteractionHandler = initMouseInteractionObserver(o2);\n const scrollHandler = initScrollObserver(o2);\n const viewportResizeHandler = initViewportResizeObserver(o2, {\n win: currentWindow\n });\n const inputHandler = initInputObserver(o2);\n const mediaInteractionHandler = initMediaInteractionObserver(o2);\n let styleSheetObserver = () => {\n };\n let adoptedStyleSheetObserver = () => {\n };\n let styleDeclarationObserver = () => {\n };\n let fontObserver = () => {\n };\n if (o2.recordDOM) {\n styleSheetObserver = initStyleSheetObserver(o2, { win: currentWindow });\n adoptedStyleSheetObserver = initAdoptedStyleSheetObserver(o2, o2.doc);\n styleDeclarationObserver = initStyleDeclarationObserver(o2, {\n win: currentWindow\n });\n if (o2.collectFonts) {\n fontObserver = initFontObserver(o2);\n }\n }\n const selectionObserver = initSelectionObserver(o2);\n const customElementObserver = initCustomElementObserver(o2);\n const pluginHandlers = [];\n for (const plugin3 of o2.plugins) {\n pluginHandlers.push(\n plugin3.observer(plugin3.callback, currentWindow, plugin3.options)\n );\n }\n return callbackWrapper(() => {\n mutationBuffers.forEach((b) => b.reset());\n mutationObserver == null ? void 0 : mutationObserver.disconnect();\n mousemoveHandler();\n mouseInteractionHandler();\n scrollHandler();\n viewportResizeHandler();\n inputHandler();\n mediaInteractionHandler();\n styleSheetObserver();\n adoptedStyleSheetObserver();\n styleDeclarationObserver();\n fontObserver();\n selectionObserver();\n customElementObserver();\n pluginHandlers.forEach((h) => h());\n });\n}\nfunction hasNestedCSSRule(prop) {\n return typeof window[prop] !== \"undefined\";\n}\nfunction canMonkeyPatchNestedCSSRule(prop) {\n return Boolean(\n typeof window[prop] !== \"undefined\" && // Note: Generally, this check _shouldn't_ be necessary\n // However, in some scenarios (e.g. jsdom) this can sometimes fail, so we check for it here\n window[prop].prototype && \"insertRule\" in window[prop].prototype && \"deleteRule\" in window[prop].prototype\n );\n}\nclass CrossOriginIframeMirror {\n constructor(generateIdFn) {\n __publicField(this, \"iframeIdToRemoteIdMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"iframeRemoteIdToIdMap\", /* @__PURE__ */ new WeakMap());\n this.generateIdFn = generateIdFn;\n }\n getId(iframe, remoteId, idToRemoteMap, remoteToIdMap) {\n const idToRemoteIdMap = idToRemoteMap || this.getIdToRemoteIdMap(iframe);\n const remoteIdToIdMap = remoteToIdMap || this.getRemoteIdToIdMap(iframe);\n let id = idToRemoteIdMap.get(remoteId);\n if (!id) {\n id = this.generateIdFn();\n idToRemoteIdMap.set(remoteId, id);\n remoteIdToIdMap.set(id, remoteId);\n }\n return id;\n }\n getIds(iframe, remoteId) {\n const idToRemoteIdMap = this.getIdToRemoteIdMap(iframe);\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n return remoteId.map(\n (id) => this.getId(iframe, id, idToRemoteIdMap, remoteIdToIdMap)\n );\n }\n getRemoteId(iframe, id, map) {\n const remoteIdToIdMap = map || this.getRemoteIdToIdMap(iframe);\n if (typeof id !== \"number\") return id;\n const remoteId = remoteIdToIdMap.get(id);\n if (!remoteId) return -1;\n return remoteId;\n }\n getRemoteIds(iframe, ids) {\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n return ids.map((id) => this.getRemoteId(iframe, id, remoteIdToIdMap));\n }\n reset(iframe) {\n if (!iframe) {\n this.iframeIdToRemoteIdMap = /* @__PURE__ */ new WeakMap();\n this.iframeRemoteIdToIdMap = /* @__PURE__ */ new WeakMap();\n return;\n }\n this.iframeIdToRemoteIdMap.delete(iframe);\n this.iframeRemoteIdToIdMap.delete(iframe);\n }\n getIdToRemoteIdMap(iframe) {\n let idToRemoteIdMap = this.iframeIdToRemoteIdMap.get(iframe);\n if (!idToRemoteIdMap) {\n idToRemoteIdMap = /* @__PURE__ */ new Map();\n this.iframeIdToRemoteIdMap.set(iframe, idToRemoteIdMap);\n }\n return idToRemoteIdMap;\n }\n getRemoteIdToIdMap(iframe) {\n let remoteIdToIdMap = this.iframeRemoteIdToIdMap.get(iframe);\n if (!remoteIdToIdMap) {\n remoteIdToIdMap = /* @__PURE__ */ new Map();\n this.iframeRemoteIdToIdMap.set(iframe, remoteIdToIdMap);\n }\n return remoteIdToIdMap;\n }\n}\nclass IframeManager {\n constructor(options) {\n __publicField(this, \"iframes\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"crossOriginIframeMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"crossOriginIframeMirror\", new CrossOriginIframeMirror(genId));\n __publicField(this, \"crossOriginIframeStyleMirror\");\n __publicField(this, \"crossOriginIframeRootIdMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"mirror\");\n __publicField(this, \"mutationCb\");\n __publicField(this, \"wrappedEmit\");\n __publicField(this, \"loadListener\");\n __publicField(this, \"stylesheetManager\");\n __publicField(this, \"recordCrossOriginIframes\");\n this.mutationCb = options.mutationCb;\n this.wrappedEmit = options.wrappedEmit;\n this.stylesheetManager = options.stylesheetManager;\n this.recordCrossOriginIframes = options.recordCrossOriginIframes;\n this.crossOriginIframeStyleMirror = new CrossOriginIframeMirror(\n this.stylesheetManager.styleMirror.generateId.bind(\n this.stylesheetManager.styleMirror\n )\n );\n this.mirror = options.mirror;\n if (this.recordCrossOriginIframes) {\n window.addEventListener(\"message\", this.handleMessage.bind(this));\n }\n }\n addIframe(iframeEl) {\n this.iframes.set(iframeEl, true);\n if (iframeEl.contentWindow)\n this.crossOriginIframeMap.set(iframeEl.contentWindow, iframeEl);\n }\n addLoadListener(cb) {\n this.loadListener = cb;\n }\n attachIframe(iframeEl, childSn) {\n var _a2, _b;\n this.mutationCb({\n adds: [\n {\n parentId: this.mirror.getId(iframeEl),\n nextId: null,\n node: childSn\n }\n ],\n removes: [],\n texts: [],\n attributes: [],\n isAttachIframe: true\n });\n if (this.recordCrossOriginIframes)\n (_a2 = iframeEl.contentWindow) == null ? void 0 : _a2.addEventListener(\n \"message\",\n this.handleMessage.bind(this)\n );\n (_b = this.loadListener) == null ? void 0 : _b.call(this, iframeEl);\n if (iframeEl.contentDocument && iframeEl.contentDocument.adoptedStyleSheets && iframeEl.contentDocument.adoptedStyleSheets.length > 0)\n this.stylesheetManager.adoptStyleSheets(\n iframeEl.contentDocument.adoptedStyleSheets,\n this.mirror.getId(iframeEl.contentDocument)\n );\n }\n handleMessage(message) {\n const crossOriginMessageEvent = message;\n if (crossOriginMessageEvent.data.type !== \"rrweb\" || // To filter out the rrweb messages which are forwarded by some sites.\n crossOriginMessageEvent.origin !== crossOriginMessageEvent.data.origin)\n return;\n const iframeSourceWindow = message.source;\n if (!iframeSourceWindow) return;\n const iframeEl = this.crossOriginIframeMap.get(message.source);\n if (!iframeEl) return;\n const transformedEvent = this.transformCrossOriginEvent(\n iframeEl,\n crossOriginMessageEvent.data.event\n );\n if (transformedEvent)\n this.wrappedEmit(\n transformedEvent,\n crossOriginMessageEvent.data.isCheckout\n );\n }\n transformCrossOriginEvent(iframeEl, e2) {\n var _a2;\n switch (e2.type) {\n case EventType.FullSnapshot: {\n this.crossOriginIframeMirror.reset(iframeEl);\n this.crossOriginIframeStyleMirror.reset(iframeEl);\n this.replaceIdOnNode(e2.data.node, iframeEl);\n const rootId = e2.data.node.id;\n this.crossOriginIframeRootIdMap.set(iframeEl, rootId);\n this.patchRootIdOnNode(e2.data.node, rootId);\n return {\n timestamp: e2.timestamp,\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Mutation,\n adds: [\n {\n parentId: this.mirror.getId(iframeEl),\n nextId: null,\n node: e2.data.node\n }\n ],\n removes: [],\n texts: [],\n attributes: [],\n isAttachIframe: true\n }\n };\n }\n case EventType.Meta:\n case EventType.Load:\n case EventType.DomContentLoaded: {\n return false;\n }\n case EventType.Plugin: {\n return e2;\n }\n case EventType.Custom: {\n this.replaceIds(\n e2.data.payload,\n iframeEl,\n [\"id\", \"parentId\", \"previousId\", \"nextId\"]\n );\n return e2;\n }\n case EventType.IncrementalSnapshot: {\n switch (e2.data.source) {\n case IncrementalSource.Mutation: {\n e2.data.adds.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\n \"parentId\",\n \"nextId\",\n \"previousId\"\n ]);\n this.replaceIdOnNode(n2.node, iframeEl);\n const rootId = this.crossOriginIframeRootIdMap.get(iframeEl);\n rootId && this.patchRootIdOnNode(n2.node, rootId);\n });\n e2.data.removes.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\"parentId\", \"id\"]);\n });\n e2.data.attributes.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\"id\"]);\n });\n e2.data.texts.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\"id\"]);\n });\n return e2;\n }\n case IncrementalSource.Drag:\n case IncrementalSource.TouchMove:\n case IncrementalSource.MouseMove: {\n e2.data.positions.forEach((p) => {\n this.replaceIds(p, iframeEl, [\"id\"]);\n });\n return e2;\n }\n case IncrementalSource.ViewportResize: {\n return false;\n }\n case IncrementalSource.MediaInteraction:\n case IncrementalSource.MouseInteraction:\n case IncrementalSource.Scroll:\n case IncrementalSource.CanvasMutation:\n case IncrementalSource.Input: {\n this.replaceIds(e2.data, iframeEl, [\"id\"]);\n return e2;\n }\n case IncrementalSource.StyleSheetRule:\n case IncrementalSource.StyleDeclaration: {\n this.replaceIds(e2.data, iframeEl, [\"id\"]);\n this.replaceStyleIds(e2.data, iframeEl, [\"styleId\"]);\n return e2;\n }\n case IncrementalSource.Font: {\n return e2;\n }\n case IncrementalSource.Selection: {\n e2.data.ranges.forEach((range) => {\n this.replaceIds(range, iframeEl, [\"start\", \"end\"]);\n });\n return e2;\n }\n case IncrementalSource.AdoptedStyleSheet: {\n this.replaceIds(e2.data, iframeEl, [\"id\"]);\n this.replaceStyleIds(e2.data, iframeEl, [\"styleIds\"]);\n (_a2 = e2.data.styles) == null ? void 0 : _a2.forEach((style) => {\n this.replaceStyleIds(style, iframeEl, [\"styleId\"]);\n });\n return e2;\n }\n }\n }\n }\n return false;\n }\n replace(iframeMirror, obj, iframeEl, keys) {\n for (const key of keys) {\n if (!Array.isArray(obj[key]) && typeof obj[key] !== \"number\") continue;\n if (Array.isArray(obj[key])) {\n obj[key] = iframeMirror.getIds(\n iframeEl,\n obj[key]\n );\n } else {\n obj[key] = iframeMirror.getId(iframeEl, obj[key]);\n }\n }\n return obj;\n }\n replaceIds(obj, iframeEl, keys) {\n return this.replace(this.crossOriginIframeMirror, obj, iframeEl, keys);\n }\n replaceStyleIds(obj, iframeEl, keys) {\n return this.replace(this.crossOriginIframeStyleMirror, obj, iframeEl, keys);\n }\n replaceIdOnNode(node2, iframeEl) {\n this.replaceIds(node2, iframeEl, [\"id\", \"rootId\"]);\n if (\"childNodes\" in node2) {\n node2.childNodes.forEach((child) => {\n this.replaceIdOnNode(child, iframeEl);\n });\n }\n }\n patchRootIdOnNode(node2, rootId) {\n if (node2.type !== NodeType.Document && !node2.rootId) node2.rootId = rootId;\n if (\"childNodes\" in node2) {\n node2.childNodes.forEach((child) => {\n this.patchRootIdOnNode(child, rootId);\n });\n }\n }\n}\nclass ShadowDomManager {\n constructor(options) {\n __publicField(this, \"shadowDoms\", /* @__PURE__ */ new WeakSet());\n __publicField(this, \"mutationCb\");\n __publicField(this, \"scrollCb\");\n __publicField(this, \"bypassOptions\");\n __publicField(this, \"mirror\");\n __publicField(this, \"restoreHandlers\", []);\n this.mutationCb = options.mutationCb;\n this.scrollCb = options.scrollCb;\n this.bypassOptions = options.bypassOptions;\n this.mirror = options.mirror;\n this.init();\n }\n init() {\n this.reset();\n this.patchAttachShadow(Element, document);\n }\n addShadowRoot(shadowRoot2, doc) {\n if (!isNativeShadowDom(shadowRoot2)) return;\n if (this.shadowDoms.has(shadowRoot2)) return;\n this.shadowDoms.add(shadowRoot2);\n const observer = initMutationObserver(\n {\n ...this.bypassOptions,\n doc,\n mutationCb: this.mutationCb,\n mirror: this.mirror,\n shadowDomManager: this\n },\n shadowRoot2\n );\n this.restoreHandlers.push(() => observer.disconnect());\n this.restoreHandlers.push(\n initScrollObserver({\n ...this.bypassOptions,\n scrollCb: this.scrollCb,\n // https://gist.github.com/praveenpuglia/0832da687ed5a5d7a0907046c9ef1813\n // scroll is not allowed to pass the boundary, so we need to listen the shadow document\n doc: shadowRoot2,\n mirror: this.mirror\n })\n );\n setTimeout(() => {\n if (shadowRoot2.adoptedStyleSheets && shadowRoot2.adoptedStyleSheets.length > 0)\n this.bypassOptions.stylesheetManager.adoptStyleSheets(\n shadowRoot2.adoptedStyleSheets,\n this.mirror.getId(index.host(shadowRoot2))\n );\n this.restoreHandlers.push(\n initAdoptedStyleSheetObserver(\n {\n mirror: this.mirror,\n stylesheetManager: this.bypassOptions.stylesheetManager\n },\n shadowRoot2\n )\n );\n }, 0);\n }\n /**\n * Monkey patch 'attachShadow' of an IFrameElement to observe newly added shadow doms.\n */\n observeAttachShadow(iframeElement) {\n if (!iframeElement.contentWindow || !iframeElement.contentDocument) return;\n this.patchAttachShadow(\n iframeElement.contentWindow.Element,\n iframeElement.contentDocument\n );\n }\n /**\n * Patch 'attachShadow' to observe newly added shadow doms.\n */\n patchAttachShadow(element, doc) {\n const manager = this;\n this.restoreHandlers.push(\n patch(\n element.prototype,\n \"attachShadow\",\n function(original) {\n return function(option) {\n const sRoot = original.call(this, option);\n const shadowRootEl = index.shadowRoot(this);\n if (shadowRootEl && inDom(this))\n manager.addShadowRoot(shadowRootEl, doc);\n return sRoot;\n };\n }\n )\n );\n }\n reset() {\n this.restoreHandlers.forEach((handler) => {\n try {\n handler();\n } catch (e2) {\n }\n });\n this.restoreHandlers = [];\n this.shadowDoms = /* @__PURE__ */ new WeakSet();\n }\n}\nvar chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nvar lookup = typeof Uint8Array === \"undefined\" ? [] : new Uint8Array(256);\nfor (var i$1 = 0; i$1 < chars.length; i$1++) {\n lookup[chars.charCodeAt(i$1)] = i$1;\n}\nvar encode = function(arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i2, len = bytes.length, base64 = \"\";\n for (i2 = 0; i2 < len; i2 += 3) {\n base64 += chars[bytes[i2] >> 2];\n base64 += chars[(bytes[i2] & 3) << 4 | bytes[i2 + 1] >> 4];\n base64 += chars[(bytes[i2 + 1] & 15) << 2 | bytes[i2 + 2] >> 6];\n base64 += chars[bytes[i2 + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + \"=\";\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + \"==\";\n }\n return base64;\n};\nconst canvasVarMap = /* @__PURE__ */ new Map();\nfunction variableListFor$1(ctx, ctor) {\n let contextMap = canvasVarMap.get(ctx);\n if (!contextMap) {\n contextMap = /* @__PURE__ */ new Map();\n canvasVarMap.set(ctx, contextMap);\n }\n if (!contextMap.has(ctor)) {\n contextMap.set(ctor, []);\n }\n return contextMap.get(ctor);\n}\nconst saveWebGLVar = (value, win, ctx) => {\n if (!value || !(isInstanceOfWebGLObject(value, win) || typeof value === \"object\"))\n return;\n const name = value.constructor.name;\n const list2 = variableListFor$1(ctx, name);\n let index2 = list2.indexOf(value);\n if (index2 === -1) {\n index2 = list2.length;\n list2.push(value);\n }\n return index2;\n};\nfunction serializeArg(value, win, ctx) {\n if (value instanceof Array) {\n return value.map((arg) => serializeArg(arg, win, ctx));\n } else if (value === null) {\n return value;\n } else if (value instanceof Float32Array || value instanceof Float64Array || value instanceof Int32Array || value instanceof Uint32Array || value instanceof Uint8Array || value instanceof Uint16Array || value instanceof Int16Array || value instanceof Int8Array || value instanceof Uint8ClampedArray) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [Object.values(value)]\n };\n } else if (\n // SharedArrayBuffer disabled on most browsers due to spectre.\n // More info: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/SharedArrayBuffer\n // value instanceof SharedArrayBuffer ||\n value instanceof ArrayBuffer\n ) {\n const name = value.constructor.name;\n const base64 = encode(value);\n return {\n rr_type: name,\n base64\n };\n } else if (value instanceof DataView) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [\n serializeArg(value.buffer, win, ctx),\n value.byteOffset,\n value.byteLength\n ]\n };\n } else if (value instanceof HTMLImageElement) {\n const name = value.constructor.name;\n const { src } = value;\n return {\n rr_type: name,\n src\n };\n } else if (value instanceof HTMLCanvasElement) {\n const name = \"HTMLImageElement\";\n const src = value.toDataURL();\n return {\n rr_type: name,\n src\n };\n } else if (value instanceof ImageData) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [serializeArg(value.data, win, ctx), value.width, value.height]\n };\n } else if (isInstanceOfWebGLObject(value, win) || typeof value === \"object\") {\n const name = value.constructor.name;\n const index2 = saveWebGLVar(value, win, ctx);\n return {\n rr_type: name,\n index: index2\n };\n }\n return value;\n}\nconst serializeArgs = (args, win, ctx) => {\n return args.map((arg) => serializeArg(arg, win, ctx));\n};\nconst isInstanceOfWebGLObject = (value, win) => {\n const webGLConstructorNames = [\n \"WebGLActiveInfo\",\n \"WebGLBuffer\",\n \"WebGLFramebuffer\",\n \"WebGLProgram\",\n \"WebGLRenderbuffer\",\n \"WebGLShader\",\n \"WebGLShaderPrecisionFormat\",\n \"WebGLTexture\",\n \"WebGLUniformLocation\",\n \"WebGLVertexArrayObject\",\n // In old Chrome versions, value won't be an instanceof WebGLVertexArrayObject.\n \"WebGLVertexArrayObjectOES\"\n ];\n const supportedWebGLConstructorNames = webGLConstructorNames.filter(\n (name) => typeof win[name] === \"function\"\n );\n return Boolean(\n supportedWebGLConstructorNames.find(\n (name) => value instanceof win[name]\n )\n );\n};\nfunction initCanvas2DMutationObserver(cb, win, blockClass, blockSelector) {\n const handlers = [];\n const props2D = Object.getOwnPropertyNames(\n win.CanvasRenderingContext2D.prototype\n );\n for (const prop of props2D) {\n try {\n if (typeof win.CanvasRenderingContext2D.prototype[prop] !== \"function\") {\n continue;\n }\n const restoreHandler = patch(\n win.CanvasRenderingContext2D.prototype,\n prop,\n function(original) {\n return function(...args) {\n if (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\n setTimeout(() => {\n const recordArgs = serializeArgs(args, win, this);\n cb(this.canvas, {\n type: CanvasContext[\"2D\"],\n property: prop,\n args: recordArgs\n });\n }, 0);\n }\n return original.apply(this, args);\n };\n }\n );\n handlers.push(restoreHandler);\n } catch {\n const hookHandler = hookSetter(\n win.CanvasRenderingContext2D.prototype,\n prop,\n {\n set(v2) {\n cb(this.canvas, {\n type: CanvasContext[\"2D\"],\n property: prop,\n args: [v2],\n setter: true\n });\n }\n }\n );\n handlers.push(hookHandler);\n }\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\nfunction getNormalizedContextName(contextType) {\n return contextType === \"experimental-webgl\" ? \"webgl\" : contextType;\n}\nfunction initCanvasContextObserver(win, blockClass, blockSelector, setPreserveDrawingBufferToTrue) {\n const handlers = [];\n try {\n const restoreHandler = patch(\n win.HTMLCanvasElement.prototype,\n \"getContext\",\n function(original) {\n return function(contextType, ...args) {\n if (!isBlocked(this, blockClass, blockSelector, true)) {\n const ctxName = getNormalizedContextName(contextType);\n if (!(\"__context\" in this)) this.__context = ctxName;\n if (setPreserveDrawingBufferToTrue && [\"webgl\", \"webgl2\"].includes(ctxName)) {\n if (args[0] && typeof args[0] === \"object\") {\n const contextAttributes = args[0];\n if (!contextAttributes.preserveDrawingBuffer) {\n contextAttributes.preserveDrawingBuffer = true;\n }\n } else {\n args.splice(0, 1, {\n preserveDrawingBuffer: true\n });\n }\n }\n }\n return original.apply(this, [contextType, ...args]);\n };\n }\n );\n handlers.push(restoreHandler);\n } catch {\n console.error(\"failed to patch HTMLCanvasElement.prototype.getContext\");\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\nfunction patchGLPrototype(prototype, type, cb, blockClass, blockSelector, win) {\n const handlers = [];\n const props = Object.getOwnPropertyNames(prototype);\n for (const prop of props) {\n if (\n //prop.startsWith('get') || // e.g. getProgramParameter, but too risky\n [\n \"isContextLost\",\n \"canvas\",\n \"drawingBufferWidth\",\n \"drawingBufferHeight\"\n ].includes(prop)\n ) {\n continue;\n }\n try {\n if (typeof prototype[prop] !== \"function\") {\n continue;\n }\n const restoreHandler = patch(\n prototype,\n prop,\n function(original) {\n return function(...args) {\n const result2 = original.apply(this, args);\n saveWebGLVar(result2, win, this);\n if (\"tagName\" in this.canvas && !isBlocked(this.canvas, blockClass, blockSelector, true)) {\n const recordArgs = serializeArgs(args, win, this);\n const mutation = {\n type,\n property: prop,\n args: recordArgs\n };\n cb(this.canvas, mutation);\n }\n return result2;\n };\n }\n );\n handlers.push(restoreHandler);\n } catch {\n const hookHandler = hookSetter(prototype, prop, {\n set(v2) {\n cb(this.canvas, {\n type,\n property: prop,\n args: [v2],\n setter: true\n });\n }\n });\n handlers.push(hookHandler);\n }\n }\n return handlers;\n}\nfunction initCanvasWebGLMutationObserver(cb, win, blockClass, blockSelector) {\n const handlers = [];\n handlers.push(\n ...patchGLPrototype(\n win.WebGLRenderingContext.prototype,\n CanvasContext.WebGL,\n cb,\n blockClass,\n blockSelector,\n win\n )\n );\n if (typeof win.WebGL2RenderingContext !== \"undefined\") {\n handlers.push(\n ...patchGLPrototype(\n win.WebGL2RenderingContext.prototype,\n CanvasContext.WebGL2,\n cb,\n blockClass,\n blockSelector,\n win\n )\n );\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\nconst encodedJs = \"KGZ1bmN0aW9uKCkgewogICJ1c2Ugc3RyaWN0IjsKICB2YXIgY2hhcnMgPSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7CiAgdmFyIGxvb2t1cCA9IHR5cGVvZiBVaW50OEFycmF5ID09PSAidW5kZWZpbmVkIiA/IFtdIDogbmV3IFVpbnQ4QXJyYXkoMjU2KTsKICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYXJzLmxlbmd0aDsgaSsrKSB7CiAgICBsb29rdXBbY2hhcnMuY2hhckNvZGVBdChpKV0gPSBpOwogIH0KICB2YXIgZW5jb2RlID0gZnVuY3Rpb24oYXJyYXlidWZmZXIpIHsKICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGFycmF5YnVmZmVyKSwgaTIsIGxlbiA9IGJ5dGVzLmxlbmd0aCwgYmFzZTY0ID0gIiI7CiAgICBmb3IgKGkyID0gMDsgaTIgPCBsZW47IGkyICs9IDMpIHsKICAgICAgYmFzZTY0ICs9IGNoYXJzW2J5dGVzW2kyXSA+PiAyXTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMl0gJiAzKSA8PCA0IHwgYnl0ZXNbaTIgKyAxXSA+PiA0XTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMiArIDFdICYgMTUpIDw8IDIgfCBieXRlc1tpMiArIDJdID4+IDZdOwogICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaTIgKyAyXSAmIDYzXTsKICAgIH0KICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgIj0iOwogICAgfSBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgIj09IjsKICAgIH0KICAgIHJldHVybiBiYXNlNjQ7CiAgfTsKICBjb25zdCBsYXN0QmxvYk1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7CiAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTsKICBhc3luYyBmdW5jdGlvbiBnZXRUcmFuc3BhcmVudEJsb2JGb3Iod2lkdGgsIGhlaWdodCwgZGF0YVVSTE9wdGlvbnMpIHsKICAgIGNvbnN0IGlkID0gYCR7d2lkdGh9LSR7aGVpZ2h0fWA7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBpZiAodHJhbnNwYXJlbnRCbG9iTWFwLmhhcyhpZCkpIHJldHVybiB0cmFuc3BhcmVudEJsb2JNYXAuZ2V0KGlkKTsKICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsKICAgICAgb2Zmc2NyZWVuLmdldENvbnRleHQoIjJkIik7CiAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCBvZmZzY3JlZW4uY29udmVydFRvQmxvYihkYXRhVVJMT3B0aW9ucyk7CiAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gYXdhaXQgYmxvYi5hcnJheUJ1ZmZlcigpOwogICAgICBjb25zdCBiYXNlNjQgPSBlbmNvZGUoYXJyYXlCdWZmZXIpOwogICAgICB0cmFuc3BhcmVudEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICByZXR1cm4gYmFzZTY0OwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuICIiOwogICAgfQogIH0KICBjb25zdCB3b3JrZXIgPSBzZWxmOwogIHdvcmtlci5vbm1lc3NhZ2UgPSBhc3luYyBmdW5jdGlvbihlKSB7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBjb25zdCB7IGlkLCBiaXRtYXAsIHdpZHRoLCBoZWlnaHQsIGRhdGFVUkxPcHRpb25zIH0gPSBlLmRhdGE7CiAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKAogICAgICAgIHdpZHRoLAogICAgICAgIGhlaWdodCwKICAgICAgICBkYXRhVVJMT3B0aW9ucwogICAgICApOwogICAgICBjb25zdCBvZmZzY3JlZW4gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpOwogICAgICBjb25zdCBjdHggPSBvZmZzY3JlZW4uZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgY3R4LmRyYXdJbWFnZShiaXRtYXAsIDAsIDApOwogICAgICBiaXRtYXAuY2xvc2UoKTsKICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IG9mZnNjcmVlbi5jb252ZXJ0VG9CbG9iKGRhdGFVUkxPcHRpb25zKTsKICAgICAgY29uc3QgdHlwZSA9IGJsb2IudHlwZTsKICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBhd2FpdCBibG9iLmFycmF5QnVmZmVyKCk7CiAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7CiAgICAgIGlmICghbGFzdEJsb2JNYXAuaGFzKGlkKSAmJiBhd2FpdCB0cmFuc3BhcmVudEJhc2U2NCA9PT0gYmFzZTY0KSB7CiAgICAgICAgbGFzdEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICAgIHJldHVybiB3b3JrZXIucG9zdE1lc3NhZ2UoeyBpZCB9KTsKICAgICAgfQogICAgICBpZiAobGFzdEJsb2JNYXAuZ2V0KGlkKSA9PT0gYmFzZTY0KSByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQgfSk7CiAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7CiAgICAgICAgaWQsCiAgICAgICAgdHlwZSwKICAgICAgICBiYXNlNjQsCiAgICAgICAgd2lkdGgsCiAgICAgICAgaGVpZ2h0CiAgICAgIH0pOwogICAgICBsYXN0QmxvYk1hcC5zZXQoaWQsIGJhc2U2NCk7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IGUuZGF0YS5pZCB9KTsKICAgIH0KICB9Owp9KSgpOwovLyMgc291cmNlTWFwcGluZ1VSTD1pbWFnZS1iaXRtYXAtZGF0YS11cmwtd29ya2VyLUlKcEM3Z19iLmpzLm1hcAo=\";\nconst decodeBase64 = (base64) => Uint8Array.from(atob(base64), (c2) => c2.charCodeAt(0));\nconst blob = typeof window !== \"undefined\" && window.Blob && new Blob([decodeBase64(encodedJs)], { type: \"text/javascript;charset=utf-8\" });\nfunction WorkerWrapper(options) {\n let objURL;\n try {\n objURL = blob && (window.URL || window.webkitURL).createObjectURL(blob);\n if (!objURL) throw \"\";\n const worker = new Worker(objURL, {\n name: options == null ? void 0 : options.name\n });\n worker.addEventListener(\"error\", () => {\n (window.URL || window.webkitURL).revokeObjectURL(objURL);\n });\n return worker;\n } catch (e2) {\n return new Worker(\n \"data:text/javascript;base64,\" + encodedJs,\n {\n name: options == null ? void 0 : options.name\n }\n );\n } finally {\n objURL && (window.URL || window.webkitURL).revokeObjectURL(objURL);\n }\n}\nclass CanvasManager {\n constructor(options) {\n __publicField(this, \"pendingCanvasMutations\", /* @__PURE__ */ new Map());\n __publicField(this, \"rafStamps\", { latestId: 0, invokeId: null });\n __publicField(this, \"mirror\");\n __publicField(this, \"mutationCb\");\n __publicField(this, \"resetObservers\");\n __publicField(this, \"frozen\", false);\n __publicField(this, \"locked\", false);\n __publicField(this, \"processMutation\", (target, mutation) => {\n const newFrame = this.rafStamps.invokeId && this.rafStamps.latestId !== this.rafStamps.invokeId;\n if (newFrame || !this.rafStamps.invokeId)\n this.rafStamps.invokeId = this.rafStamps.latestId;\n if (!this.pendingCanvasMutations.has(target)) {\n this.pendingCanvasMutations.set(target, []);\n }\n this.pendingCanvasMutations.get(target).push(mutation);\n });\n const {\n sampling = \"all\",\n win,\n blockClass,\n blockSelector,\n recordCanvas,\n dataURLOptions\n } = options;\n this.mutationCb = options.mutationCb;\n this.mirror = options.mirror;\n if (recordCanvas && sampling === \"all\")\n this.initCanvasMutationObserver(win, blockClass, blockSelector);\n if (recordCanvas && typeof sampling === \"number\")\n this.initCanvasFPSObserver(sampling, win, blockClass, blockSelector, {\n dataURLOptions\n });\n }\n reset() {\n this.pendingCanvasMutations.clear();\n this.resetObservers && this.resetObservers();\n }\n freeze() {\n this.frozen = true;\n }\n unfreeze() {\n this.frozen = false;\n }\n lock() {\n this.locked = true;\n }\n unlock() {\n this.locked = false;\n }\n initCanvasFPSObserver(fps, win, blockClass, blockSelector, options) {\n const canvasContextReset = initCanvasContextObserver(\n win,\n blockClass,\n blockSelector,\n true\n );\n const snapshotInProgressMap = /* @__PURE__ */ new Map();\n const worker = new WorkerWrapper();\n worker.onmessage = (e2) => {\n const { id } = e2.data;\n snapshotInProgressMap.set(id, false);\n if (!(\"base64\" in e2.data)) return;\n const { base64, type, width, height } = e2.data;\n this.mutationCb({\n id,\n type: CanvasContext[\"2D\"],\n commands: [\n {\n property: \"clearRect\",\n // wipe canvas\n args: [0, 0, width, height]\n },\n {\n property: \"drawImage\",\n // draws (semi-transparent) image\n args: [\n {\n rr_type: \"ImageBitmap\",\n args: [\n {\n rr_type: \"Blob\",\n data: [{ rr_type: \"ArrayBuffer\", base64 }],\n type\n }\n ]\n },\n 0,\n 0\n ]\n }\n ]\n });\n };\n const timeBetweenSnapshots = 1e3 / fps;\n let lastSnapshotTime = 0;\n let rafId;\n const getCanvas = () => {\n const matchedCanvas = [];\n win.document.querySelectorAll(\"canvas\").forEach((canvas) => {\n if (!isBlocked(canvas, blockClass, blockSelector, true)) {\n matchedCanvas.push(canvas);\n }\n });\n return matchedCanvas;\n };\n const takeCanvasSnapshots = (timestamp) => {\n if (lastSnapshotTime && timestamp - lastSnapshotTime < timeBetweenSnapshots) {\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n return;\n }\n lastSnapshotTime = timestamp;\n getCanvas().forEach(async (canvas) => {\n var _a2;\n const id = this.mirror.getId(canvas);\n if (snapshotInProgressMap.get(id)) return;\n if (canvas.width === 0 || canvas.height === 0) return;\n snapshotInProgressMap.set(id, true);\n if ([\"webgl\", \"webgl2\"].includes(canvas.__context)) {\n const context = canvas.getContext(canvas.__context);\n if (((_a2 = context == null ? void 0 : context.getContextAttributes()) == null ? void 0 : _a2.preserveDrawingBuffer) === false) {\n context.clear(context.COLOR_BUFFER_BIT);\n }\n }\n const bitmap = await createImageBitmap(canvas);\n worker.postMessage(\n {\n id,\n bitmap,\n width: canvas.width,\n height: canvas.height,\n dataURLOptions: options.dataURLOptions\n },\n [bitmap]\n );\n });\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n };\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n this.resetObservers = () => {\n canvasContextReset();\n cancelAnimationFrame(rafId);\n };\n }\n initCanvasMutationObserver(win, blockClass, blockSelector) {\n this.startRAFTimestamping();\n this.startPendingCanvasMutationFlusher();\n const canvasContextReset = initCanvasContextObserver(\n win,\n blockClass,\n blockSelector,\n false\n );\n const canvas2DReset = initCanvas2DMutationObserver(\n this.processMutation.bind(this),\n win,\n blockClass,\n blockSelector\n );\n const canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(\n this.processMutation.bind(this),\n win,\n blockClass,\n blockSelector\n );\n this.resetObservers = () => {\n canvasContextReset();\n canvas2DReset();\n canvasWebGL1and2Reset();\n };\n }\n startPendingCanvasMutationFlusher() {\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\n }\n startRAFTimestamping() {\n const setLatestRAFTimestamp = (timestamp) => {\n this.rafStamps.latestId = timestamp;\n requestAnimationFrame(setLatestRAFTimestamp);\n };\n requestAnimationFrame(setLatestRAFTimestamp);\n }\n flushPendingCanvasMutations() {\n this.pendingCanvasMutations.forEach(\n (_values, canvas) => {\n const id = this.mirror.getId(canvas);\n this.flushPendingCanvasMutationFor(canvas, id);\n }\n );\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\n }\n flushPendingCanvasMutationFor(canvas, id) {\n if (this.frozen || this.locked) {\n return;\n }\n const valuesWithType = this.pendingCanvasMutations.get(canvas);\n if (!valuesWithType || id === -1) return;\n const values = valuesWithType.map((value) => {\n const { type: type2, ...rest } = value;\n return rest;\n });\n const { type } = valuesWithType[0];\n this.mutationCb({ id, type, commands: values });\n this.pendingCanvasMutations.delete(canvas);\n }\n}\nclass StylesheetManager {\n constructor(options) {\n __publicField(this, \"trackedLinkElements\", /* @__PURE__ */ new WeakSet());\n __publicField(this, \"mutationCb\");\n __publicField(this, \"adoptedStyleSheetCb\");\n __publicField(this, \"styleMirror\", new StyleSheetMirror());\n this.mutationCb = options.mutationCb;\n this.adoptedStyleSheetCb = options.adoptedStyleSheetCb;\n }\n attachLinkElement(linkEl, childSn) {\n if (\"_cssText\" in childSn.attributes)\n this.mutationCb({\n adds: [],\n removes: [],\n texts: [],\n attributes: [\n {\n id: childSn.id,\n attributes: childSn.attributes\n }\n ]\n });\n this.trackLinkElement(linkEl);\n }\n trackLinkElement(linkEl) {\n if (this.trackedLinkElements.has(linkEl)) return;\n this.trackedLinkElements.add(linkEl);\n this.trackStylesheetInLinkElement(linkEl);\n }\n adoptStyleSheets(sheets, hostId) {\n if (sheets.length === 0) return;\n const adoptedStyleSheetData = {\n id: hostId,\n styleIds: []\n };\n const styles = [];\n for (const sheet of sheets) {\n let styleId;\n if (!this.styleMirror.has(sheet)) {\n styleId = this.styleMirror.add(sheet);\n styles.push({\n styleId,\n rules: Array.from(sheet.rules || CSSRule, (r2, index2) => ({\n rule: stringifyRule(r2, sheet.href),\n index: index2\n }))\n });\n } else styleId = this.styleMirror.getId(sheet);\n adoptedStyleSheetData.styleIds.push(styleId);\n }\n if (styles.length > 0) adoptedStyleSheetData.styles = styles;\n this.adoptedStyleSheetCb(adoptedStyleSheetData);\n }\n reset() {\n this.styleMirror.reset();\n this.trackedLinkElements = /* @__PURE__ */ new WeakSet();\n }\n // TODO: take snapshot on stylesheet reload by applying event listener\n trackStylesheetInLinkElement(_linkEl) {\n }\n}\nclass ProcessedNodeManager {\n constructor() {\n __publicField(this, \"nodeMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"active\", false);\n }\n inOtherBuffer(node2, thisBuffer) {\n const buffers = this.nodeMap.get(node2);\n return buffers && Array.from(buffers).some((buffer) => buffer !== thisBuffer);\n }\n add(node2, buffer) {\n if (!this.active) {\n this.active = true;\n requestAnimationFrame(() => {\n this.nodeMap = /* @__PURE__ */ new WeakMap();\n this.active = false;\n });\n }\n this.nodeMap.set(node2, (this.nodeMap.get(node2) || /* @__PURE__ */ new Set()).add(buffer));\n }\n destroy() {\n }\n}\nlet wrappedEmit;\nlet takeFullSnapshot$1;\nlet canvasManager;\nlet recording = false;\ntry {\n if (Array.from([1], (x2) => x2 * 2)[0] !== 2) {\n const cleanFrame = document.createElement(\"iframe\");\n document.body.appendChild(cleanFrame);\n Array.from = ((_a = cleanFrame.contentWindow) == null ? void 0 : _a.Array.from) || Array.from;\n document.body.removeChild(cleanFrame);\n }\n} catch (err) {\n console.debug(\"Unable to override Array.from\", err);\n}\nconst mirror = createMirror$2();\nfunction record(options = {}) {\n const {\n emit,\n checkoutEveryNms,\n checkoutEveryNth,\n blockClass = \"rr-block\",\n blockSelector = null,\n ignoreClass = \"rr-ignore\",\n ignoreSelector = null,\n maskTextClass = \"rr-mask\",\n maskTextSelector = null,\n inlineStylesheet = true,\n maskAllInputs,\n maskInputOptions: _maskInputOptions,\n slimDOMOptions: _slimDOMOptions,\n maskInputFn,\n maskTextFn,\n hooks,\n packFn,\n sampling = {},\n dataURLOptions = {},\n mousemoveWait,\n recordDOM = true,\n recordCanvas = false,\n recordCrossOriginIframes = false,\n recordAfter = options.recordAfter === \"DOMContentLoaded\" ? options.recordAfter : \"load\",\n userTriggeredOnInput = false,\n collectFonts = false,\n inlineImages = false,\n plugins,\n keepIframeSrcFn = () => false,\n ignoreCSSAttributes = /* @__PURE__ */ new Set([]),\n errorHandler: errorHandler2\n } = options;\n registerErrorHandler(errorHandler2);\n const inEmittingFrame = recordCrossOriginIframes ? window.parent === window : true;\n let passEmitsToParent = false;\n if (!inEmittingFrame) {\n try {\n if (window.parent.document) {\n passEmitsToParent = false;\n }\n } catch (e2) {\n passEmitsToParent = true;\n }\n }\n if (inEmittingFrame && !emit) {\n throw new Error(\"emit function is required\");\n }\n if (!inEmittingFrame && !passEmitsToParent) {\n return () => {\n };\n }\n if (mousemoveWait !== void 0 && sampling.mousemove === void 0) {\n sampling.mousemove = mousemoveWait;\n }\n mirror.reset();\n const maskInputOptions = maskAllInputs === true ? {\n color: true,\n date: true,\n \"datetime-local\": true,\n email: true,\n month: true,\n number: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true,\n textarea: true,\n select: true,\n password: true\n } : _maskInputOptions !== void 0 ? _maskInputOptions : { password: true };\n const slimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === \"all\" ? {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaVerification: true,\n // the following are off for slimDOMOptions === true,\n // as they destroy some (hidden) info:\n headMetaAuthorship: _slimDOMOptions === \"all\",\n headMetaDescKeywords: _slimDOMOptions === \"all\",\n headTitleMutations: _slimDOMOptions === \"all\"\n } : _slimDOMOptions ? _slimDOMOptions : {};\n polyfill$1();\n let lastFullSnapshotEvent;\n let incrementalSnapshotCount = 0;\n const eventProcessor = (e2) => {\n for (const plugin3 of plugins || []) {\n if (plugin3.eventProcessor) {\n e2 = plugin3.eventProcessor(e2);\n }\n }\n if (packFn && // Disable packing events which will be emitted to parent frames.\n !passEmitsToParent) {\n e2 = packFn(e2);\n }\n return e2;\n };\n wrappedEmit = (r2, isCheckout) => {\n var _a2;\n const e2 = r2;\n e2.timestamp = nowTimestamp();\n if (((_a2 = mutationBuffers[0]) == null ? void 0 : _a2.isFrozen()) && e2.type !== EventType.FullSnapshot && !(e2.type === EventType.IncrementalSnapshot && e2.data.source === IncrementalSource.Mutation)) {\n mutationBuffers.forEach((buf) => buf.unfreeze());\n }\n if (inEmittingFrame) {\n emit == null ? void 0 : emit(eventProcessor(e2), isCheckout);\n } else if (passEmitsToParent) {\n const message = {\n type: \"rrweb\",\n event: eventProcessor(e2),\n origin: window.location.origin,\n isCheckout\n };\n window.parent.postMessage(message, \"*\");\n }\n if (e2.type === EventType.FullSnapshot) {\n lastFullSnapshotEvent = e2;\n incrementalSnapshotCount = 0;\n } else if (e2.type === EventType.IncrementalSnapshot) {\n if (e2.data.source === IncrementalSource.Mutation && e2.data.isAttachIframe) {\n return;\n }\n incrementalSnapshotCount++;\n const exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\n const exceedTime = checkoutEveryNms && e2.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\n if (exceedCount || exceedTime) {\n takeFullSnapshot$1(true);\n }\n }\n };\n const wrappedMutationEmit = (m) => {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Mutation,\n ...m\n }\n });\n };\n const wrappedScrollEmit = (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Scroll,\n ...p\n }\n });\n const wrappedCanvasMutationEmit = (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.CanvasMutation,\n ...p\n }\n });\n const wrappedAdoptedStyleSheetEmit = (a2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.AdoptedStyleSheet,\n ...a2\n }\n });\n const stylesheetManager = new StylesheetManager({\n mutationCb: wrappedMutationEmit,\n adoptedStyleSheetCb: wrappedAdoptedStyleSheetEmit\n });\n const iframeManager = new IframeManager({\n mirror,\n mutationCb: wrappedMutationEmit,\n stylesheetManager,\n recordCrossOriginIframes,\n wrappedEmit\n });\n for (const plugin3 of plugins || []) {\n if (plugin3.getMirror)\n plugin3.getMirror({\n nodeMirror: mirror,\n crossOriginIframeMirror: iframeManager.crossOriginIframeMirror,\n crossOriginIframeStyleMirror: iframeManager.crossOriginIframeStyleMirror\n });\n }\n const processedNodeManager = new ProcessedNodeManager();\n canvasManager = new CanvasManager({\n recordCanvas,\n mutationCb: wrappedCanvasMutationEmit,\n win: window,\n blockClass,\n blockSelector,\n mirror,\n sampling: sampling.canvas,\n dataURLOptions\n });\n const shadowDomManager = new ShadowDomManager({\n mutationCb: wrappedMutationEmit,\n scrollCb: wrappedScrollEmit,\n bypassOptions: {\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n inlineStylesheet,\n maskInputOptions,\n dataURLOptions,\n maskTextFn,\n maskInputFn,\n recordCanvas,\n inlineImages,\n sampling,\n slimDOMOptions,\n iframeManager,\n stylesheetManager,\n canvasManager,\n keepIframeSrcFn,\n processedNodeManager\n },\n mirror\n });\n takeFullSnapshot$1 = (isCheckout = false) => {\n if (!recordDOM) {\n return;\n }\n wrappedEmit(\n {\n type: EventType.Meta,\n data: {\n href: window.location.href,\n width: getWindowWidth(),\n height: getWindowHeight()\n }\n },\n isCheckout\n );\n stylesheetManager.reset();\n shadowDomManager.init();\n mutationBuffers.forEach((buf) => buf.lock());\n const node2 = snapshot(document, {\n mirror,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n inlineStylesheet,\n maskAllInputs: maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOM: slimDOMOptions,\n dataURLOptions,\n recordCanvas,\n inlineImages,\n onSerialize: (n2) => {\n if (isSerializedIframe(n2, mirror)) {\n iframeManager.addIframe(n2);\n }\n if (isSerializedStylesheet(n2, mirror)) {\n stylesheetManager.trackLinkElement(n2);\n }\n if (hasShadowRoot(n2)) {\n shadowDomManager.addShadowRoot(index.shadowRoot(n2), document);\n }\n },\n onIframeLoad: (iframe, childSn) => {\n iframeManager.attachIframe(iframe, childSn);\n shadowDomManager.observeAttachShadow(iframe);\n },\n onStylesheetLoad: (linkEl, childSn) => {\n stylesheetManager.attachLinkElement(linkEl, childSn);\n },\n keepIframeSrcFn\n });\n if (!node2) {\n return console.warn(\"Failed to snapshot the document\");\n }\n wrappedEmit(\n {\n type: EventType.FullSnapshot,\n data: {\n node: node2,\n initialOffset: getWindowScroll(window)\n }\n },\n isCheckout\n );\n mutationBuffers.forEach((buf) => buf.unlock());\n if (document.adoptedStyleSheets && document.adoptedStyleSheets.length > 0)\n stylesheetManager.adoptStyleSheets(\n document.adoptedStyleSheets,\n mirror.getId(document)\n );\n };\n try {\n const handlers = [];\n const observe = (doc) => {\n var _a2;\n return callbackWrapper(initObservers)(\n {\n mutationCb: wrappedMutationEmit,\n mousemoveCb: (positions, source) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source,\n positions\n }\n }),\n mouseInteractionCb: (d) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.MouseInteraction,\n ...d\n }\n }),\n scrollCb: wrappedScrollEmit,\n viewportResizeCb: (d) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.ViewportResize,\n ...d\n }\n }),\n inputCb: (v2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Input,\n ...v2\n }\n }),\n mediaInteractionCb: (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.MediaInteraction,\n ...p\n }\n }),\n styleSheetRuleCb: (r2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.StyleSheetRule,\n ...r2\n }\n }),\n styleDeclarationCb: (r2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.StyleDeclaration,\n ...r2\n }\n }),\n canvasMutationCb: wrappedCanvasMutationEmit,\n fontCb: (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Font,\n ...p\n }\n }),\n selectionCb: (p) => {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Selection,\n ...p\n }\n });\n },\n customElementCb: (c2) => {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.CustomElement,\n ...c2\n }\n });\n },\n blockClass,\n ignoreClass,\n ignoreSelector,\n maskTextClass,\n maskTextSelector,\n maskInputOptions,\n inlineStylesheet,\n sampling,\n recordDOM,\n recordCanvas,\n inlineImages,\n userTriggeredOnInput,\n collectFonts,\n doc,\n maskInputFn,\n maskTextFn,\n keepIframeSrcFn,\n blockSelector,\n slimDOMOptions,\n dataURLOptions,\n mirror,\n iframeManager,\n stylesheetManager,\n shadowDomManager,\n processedNodeManager,\n canvasManager,\n ignoreCSSAttributes,\n plugins: ((_a2 = plugins == null ? void 0 : plugins.filter((p) => p.observer)) == null ? void 0 : _a2.map((p) => ({\n observer: p.observer,\n options: p.options,\n callback: (payload) => wrappedEmit({\n type: EventType.Plugin,\n data: {\n plugin: p.name,\n payload\n }\n })\n }))) || []\n },\n hooks\n );\n };\n iframeManager.addLoadListener((iframeEl) => {\n try {\n handlers.push(observe(iframeEl.contentDocument));\n } catch (error) {\n console.warn(error);\n }\n });\n const init = () => {\n takeFullSnapshot$1();\n handlers.push(observe(document));\n recording = true;\n };\n if (document.readyState === \"interactive\" || document.readyState === \"complete\") {\n init();\n } else {\n handlers.push(\n on(\"DOMContentLoaded\", () => {\n wrappedEmit({\n type: EventType.DomContentLoaded,\n data: {}\n });\n if (recordAfter === \"DOMContentLoaded\") init();\n })\n );\n handlers.push(\n on(\n \"load\",\n () => {\n wrappedEmit({\n type: EventType.Load,\n data: {}\n });\n if (recordAfter === \"load\") init();\n },\n window\n )\n );\n }\n return () => {\n handlers.forEach((h) => h());\n processedNodeManager.destroy();\n recording = false;\n unregisterErrorHandler();\n };\n } catch (error) {\n console.warn(error);\n }\n}\nrecord.addCustomEvent = (tag, payload) => {\n if (!recording) {\n throw new Error(\"please add custom event after start recording\");\n }\n wrappedEmit({\n type: EventType.Custom,\n data: {\n tag,\n payload\n }\n });\n};\nrecord.freezePage = () => {\n mutationBuffers.forEach((buf) => buf.freeze());\n};\nrecord.takeFullSnapshot = (isCheckout) => {\n if (!recording) {\n throw new Error(\"please take full snapshot after start recording\");\n }\n takeFullSnapshot$1(isCheckout);\n};\nrecord.mirror = mirror;\nvar n;\n!function(t2) {\n t2[t2.NotStarted = 0] = \"NotStarted\", t2[t2.Running = 1] = \"Running\", t2[t2.Stopped = 2] = \"Stopped\";\n}(n || (n = {}));\nexport {\n record\n};\n//# sourceMappingURL=record.js.map\n","import { isMobile } from \"./GleapHelper\";\nimport { record } from \"@rrweb/record\";\n\nexport default class GleapReplayRecorder {\n startDate = undefined;\n events = [];\n bufferSize = 0;\n stopFunction = undefined;\n customOptions = {};\n\n // GleapReplayRecorder singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapReplayRecorder();\n return this.instance;\n } else {\n return this.instance;\n }\n }\n\n constructor() {}\n\n setOptions(options) {\n this.customOptions = options;\n }\n\n /**\n * Start replays\n * @returns\n */\n start() {\n this.stop();\n\n this.startDate = Date.now();\n var events = this.events;\n\n var options = {\n inlineStylesheet: true,\n blockClass: \"gl-block\",\n ignoreClass: \"gl-ignore\",\n maskTextClass: \"gl-mask\",\n dataURLOptions: {\n quality: 0.7,\n },\n recordCanvas: false,\n sampling: {\n scroll: 150,\n mouseInteraction: {\n MouseUp: false,\n MouseDown: false,\n Click: true,\n ContextMenu: true,\n DblClick: true,\n Focus: true,\n Blur: true,\n TouchStart: true,\n TouchEnd: false,\n },\n },\n collectFonts: false,\n recordCrossOriginIframes: false,\n };\n\n try {\n this.stopFunction = record({\n ...options,\n ...this.customOptions,\n emit(rrwebEvent) {\n const { event } = ensureMaxMessageSize(rrwebEvent);\n events.push(event);\n },\n });\n } catch (e) {\n console.error(e);\n }\n }\n\n /**\n * Stop replays\n * @returns\n */\n stop() {\n if (this.stopFunction) {\n this.stopFunction();\n }\n\n this.startDate = undefined;\n this.events = [];\n this.bufferSize = 0;\n }\n\n /**\n * Get the current replay data\n * @returns {Promise}\n */\n getReplayData() {\n const replayResult = {\n startDate: this.startDate,\n events: this.events,\n baseUrl: window.location.origin,\n width: window.innerWidth,\n height: window.innerHeight,\n isMobile: isMobile(),\n type: \"rrweb\",\n };\n\n return replayResult;\n }\n}\n\nexport function ensureMaxMessageSize(data) {\n let stringifiedData = JSON.stringify(data);\n if (stringifiedData.length > 4000000) {\n const dataURIRegex = /data:([\\w\\/\\-\\.]+);(\\w+),([^)\"]*)/gim;\n const matches = stringifiedData.matchAll(dataURIRegex);\n for (const match of matches) {\n if (match[1].toLocaleLowerCase().slice(0, 6) === \"image/\") {\n stringifiedData = stringifiedData.replace(\n match[0],\n \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAQSURBVHgBAQUA+v8ABRg5/wHSAVZN1mnaAAAAAElFTkSuQmCC\"\n );\n } else {\n stringifiedData = stringifiedData.replace(match[0], \"\");\n }\n }\n }\n return { event: JSON.parse(stringifiedData), size: stringifiedData.length };\n}\n","export class ScreenDrawer {\n rerender;\n svgElement = null;\n path = null;\n strPath;\n strokeWidth = 12;\n strokeWidthRect = 6;\n bufferSize = 4;\n buffer = [];\n startPoint = null;\n tool = \"rect\";\n color = \"#EB144C\";\n mouseDown = null;\n mouseMove = null;\n mouseUp = null;\n resizeListener = null;\n pathBuffer = [];\n\n constructor(rerender) {\n const self = this;\n\n this.rerender = rerender;\n\n this.svgElement = document.querySelector(\".bb-capture-svg\");\n this.svgElement.style.minHeight = `${document.documentElement.scrollHeight}px`;\n\n // Window resize listener.\n this.resizeListener = function (e) {\n self.svgElement.style.minHeight = `${document.documentElement.scrollHeight}px`;\n };\n window.addEventListener(\"resize\", this.resizeListener, true);\n\n this.mouseDown = function (e) {\n e.preventDefault();\n\n const colorpicker = document.querySelector(\n \".bb-capture-toolbar-item-colorpicker\"\n );\n if (colorpicker) {\n colorpicker.style.display = \"none\";\n }\n\n self.fadeOutToolbar();\n if (self.tool === \"pen\" || self.tool === \"blur\") {\n self.mouseDownPen(e);\n }\n if (self.tool === \"rect\") {\n self.mouseDownRect(e);\n }\n };\n\n this.mouseMove = function (e) {\n e.preventDefault();\n if (self.tool === \"pen\" || self.tool === \"blur\") {\n self.mouseMovePen(e);\n }\n if (self.tool === \"rect\") {\n self.mouseMoveRect(e);\n }\n };\n\n this.mouseUp = function (e) {\n e.preventDefault();\n self.fadeInToolbar();\n if (self.tool === \"pen\" || self.tool === \"blur\") {\n self.mouseUpPen(e);\n }\n if (self.tool === \"rect\") {\n self.mouseUpRect(e);\n }\n };\n\n this.svgElement.addEventListener(\"mousedown\", this.mouseDown);\n this.svgElement.addEventListener(\"mousemove\", this.mouseMove);\n this.svgElement.addEventListener(\"mouseup\", this.mouseUp);\n this.svgElement.addEventListener(\"touchstart\", this.mouseDown, false);\n this.svgElement.addEventListener(\"touchmove\", this.mouseMove, false);\n this.svgElement.addEventListener(\"touchend\", this.mouseUp, false);\n\n setTimeout(() => {\n this.rerender();\n }, 100);\n }\n\n clear() {\n if (this.svgElement) {\n while (this.svgElement.firstChild) {\n this.svgElement.firstChild.remove();\n }\n }\n }\n\n destroy() {\n this.svgElement.removeEventListener(\"mousedown\", this.mouseDown);\n this.svgElement.removeEventListener(\"mousemove\", this.mouseMove);\n this.svgElement.removeEventListener(\"mouseup\", this.mouseUp);\n this.svgElement.removeEventListener(\"touchstart\", this.mouseDown);\n this.svgElement.removeEventListener(\"touchmove\", this.mouseMove);\n this.svgElement.removeEventListener(\"touchend\", this.mouseUp);\n window.removeEventListener(\"resize\", this.resizeListener);\n }\n\n mouseUpPen() {\n if (this.path) {\n this.path = null;\n }\n }\n\n mouseUpRect() {\n if (this.path) {\n this.path = null;\n }\n }\n\n mouseMovePen(e) {\n if (this.path) {\n this.appendToBuffer(this.getMousePosition(e));\n this.updateSvgPath();\n }\n }\n\n mouseMoveRect(e) {\n if (this.path) {\n var p = this.getMousePosition(e);\n var w = Math.abs(p.x - this.startPoint.x);\n var h = Math.abs(p.y - this.startPoint.y);\n var x = p.x;\n var y = p.y;\n if (p.x > this.startPoint.x) {\n x = this.startPoint.x;\n }\n if (p.y > this.startPoint.y) {\n y = this.startPoint.y;\n }\n\n this.path.setAttributeNS(null, \"x\", x);\n this.path.setAttributeNS(null, \"y\", y);\n this.path.setAttributeNS(null, \"width\", w);\n this.path.setAttributeNS(null, \"height\", h);\n }\n }\n\n mouseDownRect(e) {\n this.path = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n this.path.setAttribute(\"fill\", \"none\");\n this.path.setAttribute(\"stroke\", this.color);\n this.path.setAttribute(\"stroke-linecap\", \"round\");\n this.path.setAttribute(\"stroke-width\", this.strokeWidthRect);\n\n this.startPoint = this.getMousePosition(e);\n this.appendPathToSvg(this.path);\n }\n\n mouseDownPen(e) {\n var color = this.color + \"AA\";\n var strokeWidth = this.strokeWidth;\n\n if (this.tool === \"blur\") {\n color = \"#000000\";\n strokeWidth = 40;\n }\n\n this.path = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this.path.setAttribute(\"fill\", \"none\");\n this.path.setAttribute(\"stroke\", color);\n this.path.setAttribute(\"stroke-linecap\", \"round\");\n this.path.setAttribute(\"stroke-width\", strokeWidth);\n this.buffer = [];\n var pt = this.getMousePosition(e);\n this.appendToBuffer(pt);\n this.strPath = \"M\" + pt.x + \" \" + pt.y;\n this.path.setAttribute(\"d\", this.strPath);\n this.appendPathToSvg(this.path);\n }\n\n setTool(tool) {\n this.tool = tool;\n }\n\n setColor(color) {\n this.color = color;\n }\n\n getMousePosition(e) {\n if (e.touches && e.touches.length > 0) {\n return {\n x: e.touches[0].clientX,\n y: e.touches[0].clientY,\n };\n }\n\n return {\n x: e.clientX,\n y: e.clientY,\n };\n }\n\n // Calculate the average point, starting at offset in the buffer\n getAveragePoint(offset) {\n var len = this.buffer.length;\n if (len % 2 === 1 || len >= this.bufferSize) {\n var totalX = 0;\n var totalY = 0;\n var pt, i;\n var count = 0;\n for (i = offset; i < len; i++) {\n count++;\n pt = this.buffer[i];\n totalX += pt.x;\n totalY += pt.y;\n }\n return {\n x: totalX / count,\n y: totalY / count,\n };\n }\n return null;\n }\n\n updateSvgPath() {\n var pt = this.getAveragePoint(0);\n\n if (pt) {\n // Get the smoothed part of the path that will not change\n this.strPath += \" L\" + pt.x + \" \" + pt.y;\n\n // Get the last part of the path (close to the current mouse position)\n // This part will change if the mouse moves again\n var tmpPath = \"\";\n for (var offset = 2; offset < this.buffer.length; offset += 2) {\n pt = this.getAveragePoint(offset);\n tmpPath += \" L\" + pt.x + \" \" + pt.y;\n }\n\n // Set the complete current path coordinates\n this.path.setAttribute(\"d\", this.strPath + tmpPath);\n }\n }\n\n appendToBuffer(pt) {\n this.buffer.push(pt);\n while (this.buffer.length > this.bufferSize) {\n this.buffer.shift();\n }\n }\n\n appendPathToSvg(path) {\n this.svgElement.appendChild(path);\n this.pathBuffer.push(path);\n this.rerender();\n }\n\n removeLastAddedPathFromSvg() {\n if (this.pathBuffer.length <= 0 || !this.svgElement) {\n return;\n }\n\n this.svgElement.removeChild(this.pathBuffer[this.pathBuffer.length - 1]);\n\n this.pathBuffer.pop();\n\n this.rerender();\n }\n\n fadeOutToolbar() {\n var fadeTarget = document.querySelector(\".bb-capture-toolbar\");\n if (fadeTarget) {\n fadeTarget.style.opacity = 0;\n fadeTarget.style.pointerEvents = \"none\";\n }\n }\n\n fadeInToolbar() {\n var fadeTarget = document.querySelector(\".bb-capture-toolbar\");\n if (fadeTarget) {\n fadeTarget.style.opacity = 1;\n fadeTarget.style.pointerEvents = \"auto\";\n }\n }\n}\n","export class GleapScrollStopper {\n keys = { 37: 1, 38: 1, 39: 1, 40: 1 };\n supportsPassive = false;\n wheelOpt = this.supportsPassive ? { passive: false } : false;\n wheelEvent =\n \"onwheel\" in document.createElement(\"div\") ? \"wheel\" : \"mousewheel\";\n scrollDisabled = false;\n\n // GleapScrollStopper singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapScrollStopper();\n return this.instance;\n } else {\n return this.instance;\n }\n }\n\n constructor() {\n const self = this;\n try {\n window.addEventListener(\n \"test\",\n null,\n Object.defineProperty({}, \"passive\", {\n get: function () {\n self.supportsPassive = true;\n self.wheelOpt = self.supportsPassive ? { passive: false } : false;\n },\n })\n );\n } catch (e) {}\n }\n\n preventDefault(e) {\n e.preventDefault();\n }\n\n preventDefaultForScrollKeys(e) {\n if (this.keys && this.keys[e.keyCode]) {\n this.preventDefault(e);\n return false;\n }\n }\n\n static disableScroll() {\n const instance = this.getInstance();\n if (instance.scrollDisabled) {\n return;\n }\n\n instance.scrollDisabled = true;\n\n window.addEventListener(\"DOMMouseScroll\", instance.preventDefault, false); // older FF\n window.addEventListener(\n instance.wheelEvent,\n instance.preventDefault,\n instance.wheelOpt\n ); // modern desktop\n window.addEventListener(\n \"touchmove\",\n instance.preventDefault,\n instance.wheelOpt\n ); // mobile\n window.addEventListener(\n \"keydown\",\n instance.preventDefaultForScrollKeys,\n false\n );\n }\n\n static enableScroll() {\n const instance = this.getInstance();\n if (!instance.scrollDisabled) {\n return;\n }\n\n instance.scrollDisabled = false;\n window.removeEventListener(\n \"DOMMouseScroll\",\n instance.preventDefault,\n false\n );\n window.removeEventListener(\n instance.wheelEvent,\n instance.preventDefault,\n instance.wheelOpt\n );\n window.removeEventListener(\n \"touchmove\",\n instance.preventDefault,\n instance.wheelOpt\n );\n window.removeEventListener(\n \"keydown\",\n instance.preventDefaultForScrollKeys,\n false\n );\n }\n}\n","import Gleap, { GleapTranslationManager, GleapFrameManager } from \"./Gleap\";\nimport { ScreenDrawer } from \"./ScreenDrawer\";\nimport { GleapScrollStopper } from \"./GleapScrollStopper\";\nimport { GleapScreenRecorder } from \"./GleapScreenRecorder\";\nimport { loadIcon } from \"./UI\";\n\nexport default class GleapMarkerManager {\n type = \"screenshot\";\n dragCursor = null;\n screenRecorder = null;\n callback = null;\n screenDrawer = null;\n escListener = null;\n pageLeaveListener = null;\n overrideLanguage = Gleap.getInstance().overrideLanguage;\n\n constructor(type) {\n this.type = type;\n }\n\n hideWidgetUI() {\n const feedbackButton = document.querySelector(\".bb-feedback-button\");\n if (feedbackButton) {\n feedbackButton.style.display = \"none\";\n }\n\n const dialogUI = document.querySelector(\".bb-feedback-dialog-container\");\n if (dialogUI) {\n dialogUI.style.display = \"none\";\n }\n }\n\n showWidgetUI() {\n if (this.type === \"screenshot\") {\n GleapScrollStopper.enableScroll();\n }\n\n // Stop screenrecording.\n if (this.screenRecorder) {\n this.screenRecorder.stopScreenRecording();\n }\n\n // Unregister ESC listener\n this.unregisterListeners();\n\n // Cleanup mouse pointer\n this.cleanupMousePointer();\n\n if (this.screenDrawer) {\n this.screenDrawer.destroy();\n }\n\n // Remove the toolbar UI\n const dialog = document.querySelector(\".bb-capture-toolbar\");\n if (dialog) {\n dialog.remove();\n }\n\n // Capture SVG ref\n const captureSVG = document.querySelector(\".bb-capture-svg\");\n if (captureSVG) {\n captureSVG.classList.add(\"bb-capture-svg--preview\");\n }\n\n // Remove the preview UI\n const videoPreviewContainer = document.querySelector(\".bb-capture-preview\");\n if (videoPreviewContainer) {\n videoPreviewContainer.remove();\n }\n\n // Feedback button\n const feedbackButton = document.querySelector(\".bb-feedback-button\");\n if (feedbackButton) {\n feedbackButton.style.display = \"flex\";\n }\n\n // Feedback dialog container\n const dialogUI = document.querySelector(\".bb-feedback-dialog-container\");\n if (dialogUI) {\n dialogUI.style.display = \"block\";\n }\n\n // Dismiss button\n const dismissUI = document.querySelector(\".bb-capture-dismiss\");\n if (dismissUI) {\n dismissUI.style.display = \"none\";\n }\n\n // Hide the color picker\n const colorPicker = document.querySelector(\n \".bb-capture-toolbar-item-colorpicker\"\n );\n if (colorPicker) {\n colorPicker.style.display = \"none\";\n }\n\n // Border layer\n const borderLayer = document.querySelector(\n \".bb-capture-editor-borderlayer\"\n );\n if (borderLayer) {\n borderLayer.style.display = \"none\";\n }\n }\n\n clear() {\n const captureEditor = document.querySelector(\".bb-capture-editor\");\n if (captureEditor) {\n captureEditor.remove();\n }\n }\n\n setMouseMove(x, y) {\n if (!this.dragCursor) {\n return;\n }\n\n this.dragCursor.style.left = `${x + 6}px`;\n this.dragCursor.style.top = `${y - 26}px`;\n this.dragCursor.style.right = null;\n }\n\n mouseMoveEventHandler(e) {\n const x = e.clientX;\n const y = e.clientY;\n this.setMouseMove(x, y);\n }\n\n touchMoveEventHandler(e) {\n const x = e.touches[0].clientX;\n const y = e.touches[0].clientY;\n this.setMouseMove(x, y);\n }\n\n setupMousePointer() {\n const self = this;\n this.dragCursor = document.querySelector(\".bb-capture-editor-drag-info\");\n const captureSVG = document.querySelector(\".bb-capture-svg\");\n captureSVG.addEventListener(\"mouseenter\", (e) => {\n self.dragCursor.style.opacity = 1;\n });\n\n captureSVG.addEventListener(\"mouseleave\", (e) => {\n self.dragCursor.style.opacity = 0;\n });\n\n document.documentElement.addEventListener(\n \"mousemove\",\n this.mouseMoveEventHandler.bind(this)\n );\n document.documentElement.addEventListener(\n \"touchmove\",\n this.touchMoveEventHandler.bind(this)\n );\n }\n\n cleanupMousePointer() {\n document.documentElement.removeEventListener(\n \"mousemove\",\n this.mouseMoveEventHandler\n );\n document.documentElement.removeEventListener(\n \"touchmove\",\n this.touchMoveEventHandler\n );\n\n // Clean up toolbar drag listeners\n const dragHandle = document.querySelector(\".bb-capture-toolbar-item[data-type='drag']\");\n if (dragHandle) {\n dragHandle.removeEventListener(\"mousedown\", this.dragStart);\n dragHandle.removeEventListener(\"touchstart\", this.dragStart);\n document.removeEventListener(\"mousemove\", this.drag);\n document.removeEventListener(\"touchmove\", this.drag);\n document.removeEventListener(\"mouseup\", this.dragEnd);\n document.removeEventListener(\"touchend\", this.dragEnd);\n }\n\n if (this.dragCursor) {\n this.dragCursor.remove();\n }\n }\n\n createEditorUI() {\n // Add HTML for drawing and recording\n var bugReportingEditor = document.createElement(\"div\");\n bugReportingEditor.className = \"bb-capture-editor\";\n bugReportingEditor.innerHTML = `\n
\n \n
${loadIcon(\"dismiss\")}
\n
${loadIcon(\"rect\")}
\n
\n
\n ${loadIcon(\"drag\")}\n
\n ${this.type === \"capture\"\n ? `
\n ${loadIcon(\"recorderon\")}\n ${loadIcon(\"recorderoff\")}\n \n
\n
\n ${loadIcon(\"mic\")}\n \n
\n
2:00
\n
\n
\n ${loadIcon(\"pointer\")}\n
`\n : \"\"\n }\n
\n ${loadIcon(\"rect\")}\n
\n
\n ${loadIcon(\"pen\")}\n
\n
\n ${loadIcon(\"blur\")}\n
\n
\n
\n ${GleapTranslationManager.translateText(\n `pickAColor`\n )}\n
\n
\n ${loadIcon(\"undo\")}\n ${GleapTranslationManager.translateText(\n `undo`\n )}\n
\n ${this.type !== \"capture\"\n ? `
${GleapTranslationManager.translateText(\n `next`\n )}
`\n : \"\"\n }\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
${GleapTranslationManager.translateText(\n `retry`\n )}
\n
${GleapTranslationManager.translateText(\n `next`\n )}
\n
\n
\n
\n `;\n document.body.appendChild(bugReportingEditor);\n\n // Set RTL layout\n bugReportingEditor.setAttribute(\"dir\", GleapTranslationManager.getInstance().isRTLLayout ? \"rtl\" : \"ltr\");\n }\n\n showNextStep = function () {\n // Adapt the UI\n this.showWidgetUI();\n\n if (this.callback) {\n GleapFrameManager.getInstance().sendMessage({\n name: \"set-form-data\",\n data: {\n formKey: \"capture\",\n data: {\n value: this.type,\n dirty: true,\n }\n }\n });\n this.callback(true);\n }\n };\n\n unregisterListeners() {\n if (this.escListener) {\n document.removeEventListener(\"keydown\", this.escListener);\n }\n\n if (this.pageLeaveListener) {\n window.removeEventListener(\"beforeunload\", this.pageLeaveListener);\n }\n }\n\n registerListeners() {\n const self = this;\n\n // Esc listener\n this.escListener = function (evt) {\n evt = evt || window.event;\n var isEscape = false;\n var isEnter = false;\n if (\"key\" in evt) {\n isEscape = evt.key === \"Escape\";\n isEnter = evt.key === \"Enter\";\n }\n if (isEscape) {\n self.dismiss();\n }\n if (self.type === \"screenshot\" && isEnter) {\n self.showNextStep();\n }\n };\n document.addEventListener(\"keydown\", this.escListener);\n\n // Page leave listener\n this.pageLeaveListener = function (event) {\n event.preventDefault();\n event.returnValue = \"\";\n };\n window.addEventListener(\"beforeunload\", this.pageLeaveListener);\n }\n\n show(callback) {\n this.callback = callback;\n const self = this;\n\n // Register for listeners\n this.registerListeners();\n\n // Hide widget UI\n this.hideWidgetUI();\n\n // Create the editor UI\n this.createEditorUI();\n\n // Setup the mouse pointer\n this.setupMousePointer();\n\n // Setup screenshot data\n if (this.type === \"screenshot\") {\n // Overwrite snapshot position\n Gleap.getInstance().setGlobalDataItem(\"snapshotPosition\", {\n x: window.scrollX,\n y: window.scrollY,\n });\n\n // Disable scroll\n GleapScrollStopper.disableScroll();\n } else {\n // Setup screen recording\n this.setupScreenRecording();\n }\n\n // Hook up the drawing.\n this.screenDrawer = new ScreenDrawer(\n this.captureScreenDrawerRerender.bind(this)\n );\n\n this.setupColorPicker();\n this.setupToolbar();\n }\n\n setupColorPicker() {\n const self = this;\n const selectedColor = document.querySelector(\n \".bb-capture-toolbar-item-selectedcolor\"\n );\n const colorItems = document.querySelectorAll(\n \".bb-capture-toolbar-item-color\"\n );\n const colorpicker = document.querySelector(\n \".bb-capture-toolbar-item-colorpicker\"\n );\n\n for (var i = 0; i < colorItems.length; i++) {\n const colorItem = colorItems[i];\n const hexColor = colorItem.getAttribute(\"data-color\");\n colorItem.style.backgroundColor = hexColor;\n colorItem.onclick = function () {\n if (colorItem) {\n self.screenDrawer.setColor(hexColor);\n if (colorpicker) {\n colorpicker.style.display = \"none\";\n }\n selectedColor.style.backgroundColor = colorItem.style.backgroundColor;\n GleapMarkerManager.setPenColor(hexColor);\n }\n };\n }\n }\n\n static setPenColor(hexColor) {\n const penTips = document.querySelectorAll(\".bb-pen-tip\");\n for (var j = 0; j < penTips.length; j++) {\n penTips[j].style.fill = hexColor;\n }\n }\n\n dismiss() {\n this.showWidgetUI();\n\n if (this.callback) {\n this.callback(false);\n }\n }\n\n setupToolbar() {\n const self = this;\n const toolbar = document.querySelector(\".bb-capture-toolbar\");\n let isDragging = false;\n let currentX;\n let currentY;\n let initialX;\n let initialY;\n let xOffset = 0;\n let yOffset = 0;\n\n const getTransformValues = () => {\n const transform = window.getComputedStyle(toolbar).transform;\n if (transform === 'none') return { x: 0, y: 0 };\n const matrix = new DOMMatrix(transform);\n return { x: matrix.m41, y: matrix.m42 };\n };\n\n this.dragStart = (e) => {\n const { x, y } = getTransformValues();\n xOffset = x;\n yOffset = y;\n\n if (e.type === \"mousedown\") {\n initialX = e.clientX - xOffset;\n initialY = e.clientY - yOffset;\n } else {\n initialX = e.touches[0].clientX - xOffset;\n initialY = e.touches[0].clientY - yOffset;\n }\n isDragging = true;\n };\n\n this.dragEnd = () => {\n isDragging = false;\n };\n\n this.drag = (e) => {\n if (isDragging) {\n e.preventDefault();\n if (e.type === \"mousemove\") {\n currentX = e.clientX - initialX;\n currentY = e.clientY - initialY;\n } else {\n currentX = e.touches[0].clientX - initialX;\n currentY = e.touches[0].clientY - initialY;\n }\n\n xOffset = currentX;\n yOffset = currentY;\n\n toolbar.style.transform = `translate(${currentX}px, ${currentY}px)`;\n }\n };\n\n const dragHandle = document.querySelector(\".bb-capture-toolbar-item[data-type='drag']\");\n\n dragHandle.addEventListener(\"mousedown\", this.dragStart);\n dragHandle.addEventListener(\"touchstart\", this.dragStart);\n document.addEventListener(\"mousemove\", this.drag);\n document.addEventListener(\"touchmove\", this.drag);\n document.addEventListener(\"mouseup\", this.dragEnd);\n document.addEventListener(\"touchend\", this.dragEnd);\n\n // Hook up dismiss button\n const dismissButton = document.querySelector(\".bb-capture-dismiss\");\n dismissButton.onclick = function () {\n self.dismiss();\n };\n\n // Hook up send button\n const nextButton = document.querySelector(\".bb-capture-button-next\");\n if (nextButton) {\n nextButton.onclick = this.showNextStep.bind(this);\n }\n\n const colorpicker = document.querySelector(\n \".bb-capture-toolbar-item-colorpicker\"\n );\n\n // Capture SVG ref\n const captureSVG = document.querySelector(\".bb-capture-svg\");\n\n const chooseTool = function (type, toolbarItem) {\n const toolbarTools = document.querySelectorAll(\n \".bb-capture-toolbar-item-tool\"\n );\n for (let j = 0; j < toolbarTools.length; j++) {\n toolbarTools[j].classList.remove(\"bb-capture-toolbar-item--active\");\n }\n toolbarItem.classList.add(\"bb-capture-toolbar-item--active\");\n self.screenDrawer.setTool(type);\n self.dragCursor.innerHTML = \"\";\n if (type === \"pointer\") {\n captureSVG.style.pointerEvents = \"none\";\n } else {\n captureSVG.style.pointerEvents = \"auto\";\n try {\n var svgClone = toolbarItem.querySelector(\"svg\").cloneNode(true);\n if (svgClone && self.dragCursor) {\n self.dragCursor.appendChild(svgClone);\n }\n } catch (exp) { }\n }\n }\n\n // Setup toolbar items\n var toolbarItems = document.querySelectorAll(\".bb-capture-toolbar-item\");\n for (var i = 0; i < toolbarItems.length; i++) {\n const toolbarItem = toolbarItems[i];\n toolbarItem.onclick = function () {\n const type = toolbarItem.getAttribute(\"data-type\");\n if (colorpicker && type !== \"colorpicker\") {\n colorpicker.style.display = \"none\";\n }\n\n // Mic & recording buttons\n if (type === \"mic\") {\n self.screenRecorder.toggleAudio();\n }\n if (type === \"recording\") {\n if (self.screenRecorder.isRecording) {\n self.screenRecorder.stopScreenRecording();\n } else {\n self.screenRecorder.startScreenRecording();\n chooseTool(\"pointer\", document.querySelector(\".bb-capture-toolbar-item[data-type='pointer']\"));\n }\n }\n\n // Marker buttons\n if (self.type === \"capture\" && !self.screenRecorder.isRecording) {\n // Inactivate buttons.\n return;\n }\n if (\n type === \"pen\" ||\n type === \"blur\" ||\n type === \"rect\" ||\n type === \"pointer\"\n ) {\n chooseTool(type, toolbarItem);\n }\n if (type === \"colorpicker\") {\n if (colorpicker.style.display === \"flex\") {\n colorpicker.style.display = \"none\";\n } else {\n colorpicker.style.display = \"flex\";\n }\n }\n if (type === \"undo\") {\n self.screenDrawer.removeLastAddedPathFromSvg();\n }\n };\n }\n }\n\n captureScreenDrawerRerender() {\n if (!this.screenDrawer) {\n return;\n }\n\n const itemInactiveClass = \"bb-capture-editor-item-inactive\";\n const toolbarItems = document.querySelectorAll(\".bb-capture-toolbar-item\");\n for (var i = 0; i < toolbarItems.length; i++) {\n const toolbarItem = toolbarItems[i];\n const type = toolbarItem.getAttribute(\"data-type\");\n switch (type) {\n case \"undo\":\n if (\n this.screenDrawer.pathBuffer != null &&\n this.screenDrawer.pathBuffer.length > 0\n ) {\n toolbarItem.classList.remove(itemInactiveClass);\n } else {\n toolbarItem.classList.add(itemInactiveClass);\n }\n break;\n default:\n break;\n }\n }\n }\n\n captureRenderer() {\n if (!this.screenRecorder) {\n return;\n }\n\n if (this.screenRecorder.file) {\n Gleap.getInstance().setGlobalDataItem(\"screenRecordingData\", this.screenRecorder.file);\n }\n\n const itemInactiveClass = \"bb-capture-editor-item-inactive\";\n const timerLabel = document.querySelector(\".bb-capture-toolbar-item-timer\");\n const toolbarItems = document.querySelectorAll(\".bb-capture-toolbar-item\");\n const screenRecordingTooltip = document.querySelector(\n \".bb-tooltip-screen-recording\"\n );\n const audioRecordingTooltip = document.querySelector(\n \".bb-tooltip-audio-recording\"\n );\n const captureEditor = document.querySelector(\".bb-capture-editor\");\n const recordingClass = \"bb-capture-editor-recording\";\n const notRecordingClass = \"bb-capture-editor-notrecording\";\n if (this.screenRecorder.isRecording) {\n captureEditor.classList.add(recordingClass);\n captureEditor.classList.remove(notRecordingClass);\n } else {\n captureEditor.classList.add(notRecordingClass);\n captureEditor.classList.remove(recordingClass);\n }\n \n // Update UI.\n const dialog = document.querySelector(\".bb-capture-toolbar\");\n const videoPreviewContainer = document.querySelector(\".bb-capture-preview\");\n videoPreviewContainer.style.display = this.screenRecorder.file\n ? \"flex\"\n : \"none\";\n dialog.style.display = !this.screenRecorder.file ? \"flex\" : \"none\";\n\n for (var i = 0; i < toolbarItems.length; i++) {\n const toolbarItem = toolbarItems[i];\n const type = toolbarItem.getAttribute(\"data-type\");\n switch (type) {\n case \"mic\":\n if (\n this.screenRecorder.audioAvailable &&\n this.screenRecorder.available\n ) {\n toolbarItem.classList.remove(itemInactiveClass);\n if (!this.screenRecorder.audioMuted) {\n toolbarItem.classList.remove(\n \"bb-capture-toolbar-item--inactivecross\"\n );\n audioRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"mute\"\n );\n } else {\n toolbarItem.classList.add(\n \"bb-capture-toolbar-item--inactivecross\"\n );\n audioRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"unmute\"\n );\n }\n } else {\n toolbarItem.classList.add(itemInactiveClass);\n toolbarItem.classList.add(\"bb-capture-toolbar-item--inactivecross\");\n audioRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"browserNotSupported\"\n );\n }\n break;\n\n case \"recording\":\n if (this.screenRecorder.available) {\n toolbarItem.classList.remove(itemInactiveClass);\n if (this.screenRecorder.isRecording) {\n toolbarItem.setAttribute(\"data-active\", \"true\");\n screenRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"stopRecording\"\n );\n timerLabel.style.display = \"block\";\n } else {\n toolbarItem.setAttribute(\"data-active\", \"false\");\n screenRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"startRecording\"\n );\n timerLabel.style.display = \"none\";\n }\n } else {\n // Recording is not available.\n toolbarItem.classList.add(itemInactiveClass);\n screenRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"browserNotSupported\"\n );\n }\n break;\n\n default:\n break;\n }\n }\n }\n\n setupScreenRecording() {\n const self = this;\n\n // Hook preview next button\n const nextButtonPreview = document.querySelector(\n \".bb-capture-preview-sendbutton\"\n );\n nextButtonPreview.onclick = this.showNextStep.bind(this);\n\n // Hook retry button\n const retryButton = document.querySelector(\n \".bb-capture-preview-retrybutton\"\n );\n retryButton.onclick = function () {\n self.screenRecorder.clearPreview();\n if (self.screenDrawer) {\n self.screenDrawer.clear();\n }\n };\n\n // Setup screen recorder\n this.screenRecorder = new GleapScreenRecorder(\n this.captureRenderer.bind(this),\n GleapTranslationManager.translateText(\n \"accessToScreenSharingDenied\"\n )\n );\n }\n}\n","import {\n GleapFrameManager,\n GleapFeedbackButtonManager,\n GleapConfigManager,\n} from \"./Gleap\";\n\nexport default class GleapTranslationManager {\n overrideLanguage = \"\";\n isRTLLayout = false;\n\n // GleapTranslationManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapTranslationManager();\n }\n return this.instance;\n }\n\n /**\n * Returns the language to override the default language.\n * @returns {string}\n */\n getOverrideLanguage() {\n return this.overrideLanguage;\n }\n\n /**\n * Sets the language to override the default language.\n * @param {*} language\n */\n setOverrideLanguage(language) {\n this.overrideLanguage = language;\n }\n\n updateRTLSupport() {\n // Update RTL support.\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n\n this.isRTLLayout = false;\n if (\n flowConfig &&\n flowConfig.localizationOptions &&\n flowConfig.localizationOptions.rtl\n ) {\n this.isRTLLayout = true;\n }\n\n GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n GleapFrameManager.getInstance().updateFrameStyle();\n }\n\n getActiveLanguage() {\n var language = \"en\";\n if (typeof navigator !== \"undefined\") {\n language = navigator.language.toLowerCase();\n }\n\n // Get language from HTML lang attribute if available\n if (typeof document !== \"undefined\" && document.documentElement) {\n const htmlLang = document.documentElement.lang;\n if (htmlLang && htmlLang.trim() !== \"\") {\n language = htmlLang.toLowerCase().trim();\n }\n }\n\n if (this.overrideLanguage && this.overrideLanguage !== \"\") {\n language = this.overrideLanguage.toLowerCase();\n }\n\n return language;\n }\n\n static translateText(key) {\n if (!key) {\n return \"\";\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const staticTranslation = flowConfig.staticTranslations;\n\n if (staticTranslation && staticTranslation[key]) {\n return staticTranslation[key];\n }\n\n return key;\n }\n\n static translateTextWithVars(key, vars) {\n if (!key) {\n return \"\";\n }\n\n var template = this.translateText(key);\n if (!template) {\n return \"\";\n }\n\n return template.replace(/{(\\w+)}/g, function (_, key) {\n return vars[key];\n });\n }\n}\n","import Gleap from \"./Gleap\";\n\nexport default class GleapShortcutListener {\n shortCutListener = undefined;\n\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapShortcutListener();\n }\n return this.instance;\n }\n\n start() {\n if (this.shortCutListener) {\n return;\n }\n\n const charForEvent = function (event) {\n var code;\n\n if (event.key !== undefined) {\n code = event.key;\n } else if (event.keyIdentifier !== undefined) {\n code = event.keyIdentifier;\n } else if (event.keyCode !== undefined) {\n code = event.keyCode;\n }\n\n return code;\n };\n\n this.shortCutListener = document.addEventListener(\"keyup\", function (e) {\n const char = charForEvent(e);\n if (\n e.ctrlKey &&\n (char === \"u\" || char === \"U\" || char === 85)\n ) {\n Gleap.startFeedbackFlowWithOptions(\"bugreporting\", {\n autostartDrawing: true\n });\n }\n });\n }\n\n stop() {\n if (this.shortCutListener) {\n document.removeEventListener(\"keyup\", this.shortCutListener);\n this.shortCutListener = undefined;\n }\n }\n}","\nexport default class GleapPreFillManager {\n formPreFill = {};\n \n // GleapPreFillManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapPreFillManager();\n }\n return this.instance;\n }\n }\n ","import Gleap, {\n GleapFeedbackButtonManager,\n GleapConfigManager,\n GleapFrameManager,\n GleapSession,\n GleapAudioManager,\n GleapTranslationManager,\n GleapEventManager,\n} from \"./Gleap\";\nimport { loadFromGleapCache, saveToGleapCache } from \"./GleapHelper\";\nimport { loadIcon } from \"./UI\";\n\nexport default class GleapNotificationManager {\n notificationContainer = null;\n notifications = [];\n unreadCount = 0;\n unreadNotificationsKey = \"unread-notifications\";\n isTabActive = true;\n showNotificationBadge = true;\n\n // Keep track of the current index of news being shown\n currentNewsIndex = 0;\n\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapNotificationManager();\n }\n return this.instance;\n }\n\n constructor() {}\n\n updateTabBarNotificationCount() {\n GleapEventManager.notifyEvent(\"unread-count-changed\", this.unreadCount);\n }\n\n injectNotificationUI() {\n if (this.notificationContainer) {\n return;\n }\n\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-notification-container gleap-font\";\n document.body.appendChild(elem);\n this.notificationContainer = elem;\n\n this.updateContainerStyle();\n this.reloadNotificationsFromCache();\n }\n\n reloadNotificationsFromCache() {\n try {\n const notificationsFromCache = loadFromGleapCache(\n this.unreadNotificationsKey\n );\n if (notificationsFromCache && notificationsFromCache.length > 0) {\n let nots = notificationsFromCache.filter(\n (notification) =>\n new Date(notification.createdAt) >\n new Date(Date.now() - 1 * 60 * 60 * 1000)\n );\n\n if (nots.length > 2) {\n this.notifications = nots.splice(0, nots.length - 2);\n } else {\n this.notifications = nots;\n }\n this.renderNotifications();\n }\n } catch (exp) {}\n }\n\n setNotificationCount(unreadCount) {\n this.unreadCount = unreadCount;\n this.updateTabBarNotificationCount();\n\n // Update the badge counter.\n GleapFeedbackButtonManager.getInstance().updateNotificationBadge(\n this.unreadCount\n );\n }\n\n showNotification(notification) {\n if (!(this.notificationContainer && notification && notification.data)) {\n return;\n }\n\n const notificationsForOutbound = this.notifications.find(\n (e) => notification.outbound === e.outbound\n );\n if (!notificationsForOutbound) {\n this.notifications.push(notification);\n\n // Play sound only if it's a new one\n if (notification.sound) {\n GleapAudioManager.ping();\n }\n }\n if (this.notifications.length > 2) {\n this.notifications.shift();\n }\n\n // Persist notifications.\n saveToGleapCache(this.unreadNotificationsKey, this.notifications);\n\n this.renderNotifications();\n }\n\n /**\n * Renders notifications. For news-type notifications, only show\n * one at a time if there are multiple, with a \"Next\" button to cycle.\n * The \"Next\" button + pagination are placed within the news content area.\n *\n * - Sorts news notifications by createdAt (oldest first).\n * - Shows \"Done\" on the last news item instead of \"Next\".\n */\n renderNotifications() {\n if (!this.notificationContainer) {\n return;\n }\n\n // Clear the existing notifications in the container (UI only).\n this.clearAllNotifications(true);\n\n // Append a close button (which clears everything).\n const clearElem = document.createElement(\"div\");\n clearElem.onclick = () => {\n this.clearAllNotifications();\n // Reset the news index when everything is closed\n this.currentNewsIndex = 0;\n };\n clearElem.className = \"gleap-notification-close\";\n clearElem.innerHTML = loadIcon(\"dismiss\");\n this.notificationContainer.appendChild(clearElem);\n\n // Separate out news notifications vs. others, then sort news by date ascending\n const newsNotifications = this.notifications\n .filter((n) => n.data.news)\n .sort((a, b) => new Date(a.createdAt) - new Date(b.createdAt));\n\n const otherNotifications = this.notifications.filter((n) => !n.data.news);\n\n // --- Render NEWS notifications (with pagination) ---\n if (newsNotifications.length > 0) {\n // We only show ONE news item at a time if there's more than one\n const currentIndex =\n this.currentNewsIndex < newsNotifications.length\n ? this.currentNewsIndex\n : 0;\n const currentNews = newsNotifications[currentIndex];\n\n // Main wrapper for the news notification\n const newsElem = document.createElement(\"div\");\n newsElem.className = \"gleap-notification-item-news\";\n\n // The container that holds image + content\n const newsContainerElem = document.createElement(\"div\");\n newsContainerElem.className = \"gleap-notification-item-news-container\";\n\n // Create the image element (clickable)\n if (\n currentNews.data.coverImageUrl &&\n currentNews.data.coverImageUrl !== \"\" &&\n !currentNews.data.coverImageUrl.includes(\"NewsImagePlaceholder\")\n ) {\n const newsImageElem = document.createElement(\"img\");\n newsImageElem.className = \"gleap-notification-item-news-image\";\n newsImageElem.src = currentNews.data.coverImageUrl;\n\n // Only the image is clickable\n newsImageElem.onclick = (e) => {\n e.stopPropagation();\n this.openNews(currentNews);\n };\n newsContainerElem.appendChild(newsImageElem);\n }\n\n // The content container\n const newsContentElem = document.createElement(\"div\");\n newsContentElem.className = \"gleap-notification-item-news-content\";\n\n // Title (clickable)\n const newsTitleElem = document.createElement(\"div\");\n newsTitleElem.className = \"gleap-notification-item-news-content-title\";\n\n let content = currentNews.data.text || \"\";\n content = content.replaceAll(\n \"{{name}}\",\n GleapSession.getInstance().getName()\n );\n newsTitleElem.innerText = content;\n\n // Only the title is clickable\n newsTitleElem.onclick = (e) => {\n e.stopPropagation();\n this.openNews(currentNews);\n };\n\n newsContentElem.appendChild(newsTitleElem);\n\n // Description / Sender\n const descHTML = this.renderDescription(currentNews);\n if (descHTML) {\n const descElem = document.createElement(\"div\");\n descElem.className = \"gleap-notification-item-news-preview\";\n descElem.innerHTML = descHTML;\n newsContentElem.appendChild(descElem);\n }\n\n // If there's more than one news item, show pagination + next/done button\n if (newsNotifications.length > 1) {\n // Pagination container (still inside .gleap-notification-item-news-content)\n const paginationElem = document.createElement(\"div\");\n paginationElem.className = \"gleap-news-pagination\";\n\n // Show current item / total\n const pageIndicator = document.createElement(\"span\");\n pageIndicator.className = \"gleap-news-page-indicator\";\n pageIndicator.innerText = `${currentIndex + 1} / ${\n newsNotifications.length\n }`;\n paginationElem.appendChild(pageIndicator);\n\n // Next or Done button\n const nextBtn = document.createElement(\"button\");\n nextBtn.className = \"gleap-news-next-button\";\n\n if (currentIndex < newsNotifications.length - 1) {\n nextBtn.innerText = GleapTranslationManager.translateText(`next`);\n nextBtn.onclick = (e) => {\n e.stopPropagation(); // so we can click the button freely\n this.currentNewsIndex++;\n this.renderNotifications();\n };\n } else {\n nextBtn.innerText = GleapTranslationManager.translateText(`done`);\n nextBtn.onclick = (e) => {\n e.stopPropagation();\n this.clearAllNotifications();\n this.currentNewsIndex = 0;\n };\n }\n paginationElem.appendChild(nextBtn);\n newsContentElem.appendChild(paginationElem);\n }\n\n // Append content to container\n newsContainerElem.appendChild(newsContentElem);\n // Append container to the main element\n newsElem.appendChild(newsContainerElem);\n // Finally append to the notification container\n this.notificationContainer.appendChild(newsElem);\n }\n\n // --- Render OTHER notifications normally ---\n for (let i = 0; i < otherNotifications.length; i++) {\n const notification = otherNotifications[i];\n let content = notification.data.text || \"\";\n // Replace placeholders\n content = content.replaceAll(\n \"{{name}}\",\n GleapSession.getInstance().getName()\n );\n\n const elem = document.createElement(\"div\");\n elem.onclick = () => {\n if (notification.data.conversation) {\n Gleap.openConversation(\n notification.data.conversation.shareToken,\n true\n );\n } else if (notification.data.checklist) {\n Gleap.openChecklist(notification.data.checklist.id, true);\n } else {\n Gleap.open();\n }\n };\n\n // Check if it's a checklist type\n if (notification.data.checklist) {\n let progress = Math.round(\n (notification.data.currentStep / notification.data.totalSteps) * 100\n );\n if (progress < 100) {\n progress += 4;\n }\n\n elem.className = \"gleap-notification-item-checklist\";\n elem.innerHTML = `\n
\n
\n
\n ${notification.data.text}\n
\n
\n
\n
\n
\n \n \n \n ${notification.data.nextStepTitle}\n
\n
\n
`;\n } else {\n // Standard non-news notification\n elem.className = \"gleap-notification-item\";\n elem.innerHTML = `\n ${\n notification.data.sender &&\n notification.data.sender.profileImageUrl &&\n ``\n }\n
\n ${\n notification.data.sender\n ? `
\n ${notification.data.sender.name}\n
`\n : \"\"\n }\n
${content}
\n
`;\n }\n this.notificationContainer.appendChild(elem);\n }\n\n const hasNotifications =\n newsNotifications.length > 0 || otherNotifications.length > 0;\n if (!hasNotifications) {\n // Clear the notification container\n this.clearAllNotifications(true);\n }\n }\n\n /**\n * Helper to open news from a given notification.\n */\n openNews(notification) {\n if (notification.data.news) {\n Gleap.openNewsArticle(notification.data.news.id, true);\n } else {\n Gleap.open();\n }\n }\n\n /**\n * Helper to render preview or sender info for news notifications.\n */\n renderDescription(notification) {\n const { previewText, sender } = notification.data;\n if (previewText && previewText.length > 0) {\n return previewText;\n } else if (sender) {\n // Return HTML for the sender name + optional image\n return `\n
\n ${\n sender.profileImageUrl\n ? `\"${sender.name}\"`\n : \"\"\n }\n ${sender.name}\n
\n `;\n }\n return \"\";\n }\n\n /**\n * Clears all notifications from the container.\n *\n * @param {boolean} uiOnly - Whether to only clear the UI or also the notifications.\n */\n clearAllNotifications(uiOnly = false) {\n if (!this.notificationContainer) {\n return;\n }\n\n if (!uiOnly) {\n this.notifications = [];\n // Reset currentNewsIndex whenever we clear them out\n this.currentNewsIndex = 0;\n saveToGleapCache(this.unreadNotificationsKey, this.notifications);\n }\n\n while (this.notificationContainer.firstChild) {\n this.notificationContainer.removeChild(\n this.notificationContainer.firstChild\n );\n }\n }\n\n updateContainerStyle() {\n if (!this.notificationContainer) {\n return;\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const classLeft = \"gleap-notification-container--left\";\n const classNoButton = \"gleap-notification-container--no-button\";\n this.notificationContainer.classList.remove(classLeft);\n this.notificationContainer.classList.remove(classNoButton);\n\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_BOTTOM_LEFT\n ) {\n this.notificationContainer.classList.add(classLeft);\n }\n\n if (GleapFeedbackButtonManager.getInstance().buttonHidden === null) {\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_NONE\n ) {\n this.notificationContainer.classList.add(classNoButton);\n }\n } else {\n if (GleapFeedbackButtonManager.getInstance().buttonHidden) {\n this.notificationContainer.classList.add(classNoButton);\n }\n }\n\n this.notificationContainer.setAttribute(\n \"dir\",\n GleapTranslationManager.getInstance().isRTLLayout ? \"rtl\" : \"ltr\"\n );\n }\n}\n","import Gleap, { GleapFrameManager } from \"./Gleap\";\n\nexport default class GleapBannerManager {\n bannerUrl = \"https://outboundmedia.gleap.io\";\n bannerContainer = null;\n bannerData = null;\n\n // GleapBannerManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapBannerManager();\n }\n return this.instance;\n }\n\n constructor() {\n this.startCommunication();\n }\n\n setBannerUrl(url) {\n this.bannerUrl = url;\n }\n\n startCommunication() {\n // Add window message listener.\n window.addEventListener(\"message\", (event) => {\n if (!this.bannerUrl?.includes(event.origin)) {\n return;\n }\n\n try {\n const data = JSON.parse(event.data);\n\n if (data?.type !== \"BANNER\") {\n return;\n }\n\n if (data.name === \"banner-loaded\" && this.bannerData) {\n this.sendMessage({\n name: \"banner-data\",\n data: this.bannerData,\n });\n }\n if (data.name === \"banner-height\") {\n document.documentElement.style.setProperty(\n \"--gleap-margin-top\",\n data.data.height + \"px\"\n );\n }\n if (data.name === \"banner-data-set\") {\n document.body.classList.add(\"gleap-b-shown\");\n\n if (this.bannerData?.format === \"floating\") {\n document.body.classList.add(\"gleap-b-f\");\n }\n }\n if (data.name === \"banner-close\") {\n this.removeBannerUI();\n }\n if (data.name === \"start-conversation\") {\n Gleap.startBot(data.data?.botId);\n }\n if (data.name === \"start-custom-action\") {\n Gleap.triggerCustomAction(data.data?.action);\n }\n if (data.name === \"start-product-tour\") {\n Gleap.startProductTour(data.data?.tourId, true);\n }\n if (data.name === \"open-url\") {\n const url = data.data;\n const newTab = data.newTab ? true : false;\n GleapFrameManager.getInstance().urlHandler(url, newTab);\n }\n if (data.name === \"show-form\") {\n Gleap.startFeedbackFlow(data.data?.formId);\n }\n if (data.name === \"show-survey\") {\n Gleap.showSurvey(data.data?.formId, data.data?.surveyFormat);\n }\n if (data.name === \"show-news-article\") {\n Gleap.openNewsArticle(data.data?.articleId);\n }\n if (data.name === \"show-help-article\") {\n Gleap.openHelpCenterArticle(data.data?.articleId);\n }\n if (data.name === \"show-checklist\") {\n Gleap.startChecklist(\n data.data?.checklistId,\n true,\n data.data?.sharedKey\n );\n }\n } catch (exp) {}\n });\n }\n\n removeBannerUI() {\n if (this.bannerContainer) {\n document.body.removeChild(this.bannerContainer);\n this.bannerContainer = null;\n }\n\n document.body.classList.remove(\"gleap-b-shown\");\n document.body.classList.remove(\"gleap-b-f\");\n }\n\n /**\n * Injects the feedback button into the current DOM.\n */\n injectBannerUI(bannerData) {\n if (!document.body) {\n return false;\n }\n\n if (this.bannerContainer) {\n this.removeBannerUI();\n }\n\n this.bannerData = bannerData;\n\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-b\";\n elem.innerHTML = ``;\n document.body.appendChild(elem);\n this.bannerContainer = elem;\n }\n\n sendMessage(data) {\n try {\n const gleapBFrame = document.querySelector(\".gleap-b-frame\");\n if (gleapBFrame && gleapBFrame.contentWindow) {\n gleapBFrame.contentWindow.postMessage(\n JSON.stringify({\n ...data,\n type: \"banner\",\n }),\n \"*\"\n );\n }\n } catch (e) {}\n }\n\n showBanner(bannerData) {\n this.injectBannerUI(bannerData);\n }\n}\n","import Gleap, { GleapConfigManager, GleapFrameManager } from \"./Gleap\";\n\nexport default class GleapModalManager {\n modalUrl = \"https://outboundmedia.gleap.io/modal\";\n modalContainer = null;\n modalData = null;\n modalBackdropClickListener = null;\n\n // singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapModalManager();\n }\n return this.instance;\n }\n\n constructor() {\n this._listenForMessages();\n }\n\n setModalUrl(url) {\n this.modalUrl = url;\n }\n\n _listenForMessages() {\n window.addEventListener(\"message\", (event) => {\n if (!this.modalUrl?.includes(event.origin)) {\n return;\n }\n\n try {\n const data = JSON.parse(event.data);\n\n if (data?.type !== \"MODAL\") {\n return;\n }\n\n if (data.name === \"modal-loaded\" && this.modalData) {\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const primaryColor = flowConfig.color ? flowConfig.color : \"#485BFF\";\n const backgroundColor = flowConfig.backgroundColor\n ? flowConfig.backgroundColor\n : \"#FFFFFF\";\n\n this._postMessage({\n name: \"modal-data\",\n data: {\n ...this.modalData,\n primaryColor: primaryColor,\n backgroundColor: backgroundColor,\n },\n });\n }\n if (data.name === \"modal-height\") {\n const height = data?.data?.height;\n if (height) {\n // Set the height of the modal iframe\n const iframe =\n this.modalContainer.querySelector(\".gleap-modal-frame\");\n if (iframe) {\n iframe.style.height = `${height}px`;\n }\n }\n }\n if (data.name === \"modal-data-set\") {\n // TODO: Implement\n }\n if (data.name === \"modal-close\") {\n this.hideModal();\n }\n if (data.name === \"start-conversation\") {\n Gleap.startBot(data.data?.botId);\n }\n if (data.name === \"start-custom-action\") {\n Gleap.triggerCustomAction(data.data?.action);\n }\n if (data.name === \"start-product-tour\") {\n Gleap.startProductTour(data.data?.tourId, true);\n }\n if (data.name === \"open-url\") {\n const url = data.data;\n const newTab = data.newTab ? true : false;\n GleapFrameManager.getInstance().urlHandler(url, newTab);\n }\n if (data.name === \"show-form\") {\n Gleap.startFeedbackFlow(data.data?.formId);\n }\n if (data.name === \"show-survey\") {\n Gleap.showSurvey(data.data?.formId, data.data?.surveyFormat);\n }\n if (data.name === \"show-news-article\") {\n Gleap.openNewsArticle(data.data?.articleId);\n }\n if (data.name === \"show-help-article\") {\n Gleap.openHelpCenterArticle(data.data?.articleId);\n }\n if (data.name === \"show-checklist\") {\n Gleap.startChecklist(\n data.data?.checklistId,\n true,\n data.data?.sharedKey\n );\n }\n } catch (exp) {}\n });\n }\n\n _injectModalUI(modalData) {\n if (!document.body) return false;\n\n if (this.modalContainer) {\n this.hideModal();\n }\n\n this.modalData = modalData;\n\n const wrapper = document.createElement(\"div\");\n wrapper.className = \"gleap-modal-wrapper\";\n wrapper.innerHTML = `\n
\n
\n \n
\n `;\n document.body.appendChild(wrapper);\n this.modalContainer = wrapper;\n\n // Add on backdrop click listener\n this.modalBackdropClickListener = this.modalContainer\n .querySelector(\".gleap-modal-backdrop\")\n .addEventListener(\"click\", () => {\n if (this.modalData?.showCloseButton ?? true) {\n this.hideModal();\n }\n });\n\n // lock background scroll\n document.body.classList.add(\"gleap-modal-open\");\n }\n\n _postMessage(message) {\n try {\n const frame = this.modalContainer.querySelector(\".gleap-modal-frame\");\n if (frame?.contentWindow) {\n frame.contentWindow.postMessage(\n JSON.stringify({ ...message, type: \"modal\" }),\n this.modalUrl\n );\n }\n } catch (err) {}\n }\n\n showModal(modalData) {\n if (modalData && modalData.config) {\n this._injectModalUI(modalData.config);\n }\n }\n\n hideModal() {\n if (!this.modalContainer) return;\n\n if (this.modalBackdropClickListener) {\n this.modalContainer\n .querySelector(\".gleap-modal-backdrop\")\n .removeEventListener(\"click\", this.modalBackdropClickListener);\n }\n\n document.body.removeChild(this.modalContainer);\n this.modalContainer = null;\n document.body.classList.remove(\"gleap-modal-open\");\n }\n}\n","export default class GleapAudioManager {\n static audio;\n static settings = {\n play: true\n };\n\n static playSound(play) {\n this.settings.play = play;\n }\n\n static ping() {\n try {\n if (!this.settings.play) {\n return;\n }\n\n if (!this.audio) {\n this.audio = new Audio('https://js.gleap.io/res/ping.mp3');\n }\n\n const playPromise = this.audio.play();\n if (playPromise !== undefined) {\n playPromise.then(_ => { })\n .catch(error => { });\n }\n } catch (exp) { }\n }\n}\n","export default class GleapTagManager {\n tags = [];\n\n // GleapTagManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapTagManager();\n }\n return this.instance;\n }\n\n /**\n * Returns the tags\n * @returns {*}\n */\n getTags() {\n return this.tags;\n }\n\n /**\n * Sets the tags sent with every ticket.\n * @param {*} tags Array of strings\n */\n setTags(tags) {\n this.tags = tags;\n }\n}\n","/**\n * Returns the Tag of the element\n * @param { Object } element\n * @return { String }\n */\nexport function getID( el )\n{\n const id = el.getAttribute( 'id' );\n\n if( id !== null && id !== '')\n {\n // if the ID starts with a number or contains \":\" selecting with a hash will cause a DOMException\n return id.match(/(?:^\\d|:)/) ? `[id=\"${id}\"]` : '#' + id;\n }\n return null;\n}\n","/**\n * Get class names for an element\n *\n * @pararm { Element } el\n * @return { Array }\n */\nexport function getClasses( el )\n{\n if( !el.hasAttribute( 'class' ) )\n {\n return [];\n }\n\n try {\n let classList = Array.prototype.slice.call( el.classList )\n\n // return only the valid CSS selectors based on RegEx\n return classList.filter(item => !/^[a-z_-][a-z\\d_-]*$/i.test( item ) ? null : item );\n } catch (e) {\n let className = el.getAttribute( 'class' );\n\n // remove duplicate and leading/trailing whitespaces\n className = className.trim().replace( /\\s+/g, ' ' );\n\n // split into separate classnames\n return className.split( ' ' );\n }\n}\n\n/**\n * Returns the Class selectors of the element\n * @param { Object } element\n * @return { Array }\n */\nexport function getClassSelectors( el )\n{\n const classList = getClasses( el ).filter( Boolean );\n return classList.map( cl => `.${cl}` );\n}\n","/**\n * Recursively combinate items.\n * @param { Array } result\n * @param { Array } items\n * @param { Array } data\n * @param { Number } start\n * @param { Number } end\n * @param { Number } index\n * @param { Number } k\n */\nfunction kCombinations( result, items, data, start, end, index, k )\n{\n if( index === k )\n {\n result.push( data.slice( 0, index ).join( '' ) );\n return;\n }\n\n for( let i = start; i <= end && end - i + 1 >= k - index; ++i )\n {\n data[index] = items[i];\n kCombinations( result, items, data, i + 1, end, index + 1, k );\n }\n}\n\n/**\n * Returns all the possible selector combinations\n * @param { Array } items\n * @param { Number } k\n * @return { Array }\n */\nexport function getCombinations( items, k )\n{\n const result = [],\n n = items.length,\n data = [];\n\n for( var l = 1; l <= k; ++l )\n {\n kCombinations( result, items, data, 0, n - 1, 0, l );\n }\n\n return result;\n}\n","/**\n * Determines if the passed el is a DOM element\n */\nexport function isElement( el )\n{\n let isElem;\n\n if ( typeof HTMLElement === 'object' )\n {\n isElem = el instanceof HTMLElement;\n }\n else\n {\n isElem = !!el && ( typeof el === 'object' ) && el.nodeType === 1 && typeof el.nodeName === 'string';\n }\n return isElem;\n}\n","import { isElement } from './isElement';\n\n/**\n * Returns the selectors based on the position of the element relative to its siblings\n * @param { Object } element\n * @return { Array }\n */\nexport function getNthChild( element )\n{\n let counter = 0;\n let k;\n let sibling;\n const { parentNode } = element;\n\n if( Boolean( parentNode ) )\n {\n const { childNodes } = parentNode;\n const len = childNodes.length;\n for ( k = 0; k < len; k++ )\n {\n sibling = childNodes[ k ];\n if( isElement( sibling ) )\n {\n counter++;\n if( sibling === element )\n {\n return `:nth-child(${counter})`;\n }\n }\n }\n }\n return null;\n}\n","/**\n * Returns the Tag of the element\n * @param { Object } element\n * @return { String }\n */\nexport function getTag( el )\n{\n return el.tagName.toLowerCase().replace(/:/g, '\\\\:');\n}\n","/**\n * Checks if the selector is unique\n * @param { Object } element\n * @param { String } selector\n * @return { Array }\n */\nexport function isUnique( el, selector )\n{\n if( !Boolean( selector ) ) return false;\n const elems = el.ownerDocument.querySelectorAll( selector );\n return elems.length === 1 && elems[ 0 ] === el;\n}\n","/**\n * Expose `unique`\n */\n\nimport { getID } from './getID';\nimport { getClassSelectors } from './getClasses';\nimport { getCombinations } from './getCombinations';\nimport { getAttributes } from './getAttributes';\nimport { getNthChild } from './getNthChild';\nimport { getTag } from './getTag';\nimport { isUnique } from './isUnique';\nimport { getParents } from './getParents';\n\n\n/**\n * Returns all the selectors of the elmenet\n * @param { Object } element\n * @return { Object }\n */\nfunction getAllSelectors( el, selectors, attributesToIgnore )\n{\n const funcs =\n {\n 'Tag' : getTag,\n 'NthChild' : getNthChild,\n 'Attributes' : elem => getAttributes( elem, attributesToIgnore ),\n 'Class' : getClassSelectors,\n 'ID' : getID,\n };\n\n return selectors.reduce( ( res, next ) =>\n {\n res[ next ] = funcs[ next ]( el );\n return res;\n }, {} );\n}\n\n/**\n * Tests uniqueNess of the element inside its parent\n * @param { Object } element\n * @param { String } Selectors\n * @return { Boolean }\n */\nfunction testUniqueness( element, selector )\n{\n try {\n const { parentNode } = element;\n const elements = parentNode.querySelectorAll( selector );\n return elements.length === 1 && elements[ 0 ] === element;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tests all selectors for uniqueness and returns the first unique selector.\n * @param { Object } element\n * @param { Array } selectors\n * @return { String }\n */\nfunction getFirstUnique( element, selectors )\n{\n return selectors.find( testUniqueness.bind( null, element ) );\n}\n\n/**\n * Checks all the possible selectors of an element to find one unique and return it\n * @param { Object } element\n * @param { Array } items\n * @param { String } tag\n * @return { String }\n */\nfunction getUniqueCombination( element, items, tag )\n{\n let combinations = getCombinations( items, 3 ),\n firstUnique = getFirstUnique( element, combinations );\n\n if( Boolean( firstUnique ) )\n {\n return firstUnique;\n }\n\n if( Boolean( tag ) )\n {\n combinations = combinations.map( combination => tag + combination );\n firstUnique = getFirstUnique( element, combinations );\n\n if( Boolean( firstUnique ) )\n {\n return firstUnique;\n }\n }\n\n return null;\n}\n\n/**\n * Returns a uniqueSelector based on the passed options\n * @param { DOM } element\n * @param { Array } options\n * @return { String }\n */\nfunction getUniqueSelector( element, selectorTypes, attributesToIgnore, excludeRegex )\n{\n let foundSelector;\n\n const elementSelectors = getAllSelectors( element, selectorTypes, attributesToIgnore );\n\n if( excludeRegex && excludeRegex instanceof RegExp )\n {\n elementSelectors.ID = excludeRegex.test( elementSelectors.ID ) ? null : elementSelectors.ID;\n elementSelectors.Class = elementSelectors.Class.filter( className => !excludeRegex.test( className ) );\n }\n\n for( let selectorType of selectorTypes )\n {\n const { ID, Tag, Class : Classes, Attributes, NthChild } = elementSelectors;\n switch ( selectorType )\n {\n case 'ID' :\n if ( Boolean( ID ) && testUniqueness( element, ID ) )\n {\n return ID;\n }\n break;\n\n case 'Tag':\n if ( Boolean( Tag ) && testUniqueness( element, Tag ) )\n {\n return Tag;\n }\n break;\n\n case 'Class':\n if ( Boolean( Classes ) && Classes.length )\n {\n foundSelector = getUniqueCombination( element, Classes, Tag );\n if (foundSelector) {\n return foundSelector;\n }\n }\n break;\n\n case 'Attributes':\n if ( Boolean( Attributes ) && Attributes.length )\n {\n foundSelector = getUniqueCombination( element, Attributes, Tag );\n if ( foundSelector )\n {\n return foundSelector;\n }\n }\n break;\n\n case 'NthChild':\n if ( Boolean( NthChild ) )\n {\n return NthChild\n }\n }\n }\n return '*';\n}\n\n/**\n * Generate unique CSS selector for given DOM element\n *\n * @param {Element} el\n * @return {String}\n * @api private\n */\n\nexport default function unique( el, options={} )\n{\n const {\n selectorTypes = ['ID', 'Class', 'Tag', 'NthChild'],\n attributesToIgnore = ['id', 'class', 'length'],\n excludeRegex = null,\n } = options;\n const allSelectors = [];\n const parents = getParents( el );\n\n for( let elem of parents )\n {\n const selector = getUniqueSelector( elem, selectorTypes, attributesToIgnore, excludeRegex );\n if( Boolean( selector ) )\n {\n allSelectors.push( selector );\n }\n }\n\n const selectors = [];\n for( let it of allSelectors )\n {\n selectors.unshift( it );\n const selector = selectors.join( ' > ' );\n if( isUnique( el, selector ) )\n {\n return selector;\n }\n }\n\n return null;\n}\n","/**\n * Returns the Attribute selectors of the element\n * @param { DOM Element } element\n * @param { Array } array of attributes to ignore\n * @return { Array }\n */\nexport function getAttributes( el, attributesToIgnore = ['id', 'class', 'length'] )\n{\n const { attributes } = el;\n const attrs = [ ...attributes ];\n\n return attrs.reduce( ( sum, next ) =>\n {\n if ( ! ( attributesToIgnore.indexOf( next.nodeName ) > -1 ) )\n {\n sum.push( `[${next.nodeName}=\"${next.value}\"]` );\n }\n return sum;\n }, [] );\n}\n","import { isElement } from './isElement';\n\n/**\n * Returns all the element and all of its parents\n * @param { DOM Element }\n * @return { Array of DOM elements }\n */\nexport function getParents( el )\n{\n const parents = [];\n let currentElement = el;\n while( isElement( currentElement ) )\n {\n parents.push( currentElement );\n currentElement = currentElement.parentNode;\n }\n\n return parents;\n}\n","/**\n * Utility function to get the bounding rectangle of an element.\n * @param {HTMLElement} el - The target element.\n * @returns {Object} An object containing x, y, width, and height.\n */\nfunction getElementBounds(el) {\n const rect = el.getBoundingClientRect();\n return {\n x: window.pageXOffset + rect.left,\n y: window.pageYOffset + rect.top,\n width: el.offsetWidth,\n height: el.offsetHeight,\n };\n}\n\n/**\n * Class representing an overlay element.\n */\nclass ElementOverlay {\n /**\n * Create an ElementOverlay.\n * @param {Object} options - Configuration options.\n * @param {string} [options.className] - CSS class name for the overlay.\n * @param {Object} [options.style] - Style overrides for the overlay.\n */\n constructor(options) {\n // Create and style the overlay element.\n this.overlay = document.createElement(\"div\");\n this.overlay.className = options.className || \"_ext-element-overlay\";\n this.overlay.style.background =\n (options.style && options.style.background) || \"rgba(250, 240, 202, 0.2)\";\n this.overlay.style.borderColor =\n (options.style && options.style.borderColor) || \"#F95738\";\n this.overlay.style.borderStyle =\n (options.style && options.style.borderStyle) || \"solid\";\n this.overlay.style.borderRadius =\n (options.style && options.style.borderRadius) || \"1px\";\n this.overlay.style.borderWidth =\n (options.style && options.style.borderWidth) || \"1px\";\n this.overlay.style.boxSizing =\n (options.style && options.style.boxSizing) || \"border-box\";\n this.overlay.style.cursor =\n (options.style && options.style.cursor) || \"crosshair\";\n this.overlay.style.position =\n (options.style && options.style.position) || \"absolute\";\n this.overlay.style.zIndex =\n (options.style && options.style.zIndex) || \"2147483647\";\n this.overlay.style.margin =\n (options.style && options.style.margin) || \"0px\";\n this.overlay.style.padding =\n (options.style && options.style.padding) || \"0px\";\n\n // Create a container that will host a Shadow DOM.\n this.shadowContainer = document.createElement(\"div\");\n this.shadowContainer.className = \"_ext-element-overlay-container\";\n this.shadowContainer.style.position = \"absolute\";\n this.shadowContainer.style.top = \"0px\";\n this.shadowContainer.style.left = \"0px\";\n this.shadowContainer.style.margin = \"0px\";\n this.shadowContainer.style.padding = \"0px\";\n this.shadowRoot = this.shadowContainer.attachShadow({ mode: \"open\" });\n }\n\n /**\n * Adds the overlay to the DOM.\n * @param {Node} parent - The parent element.\n * @param {boolean} useShadowDOM - Whether to use Shadow DOM.\n */\n addToDOM(parent, useShadowDOM) {\n this.usingShadowDOM = useShadowDOM;\n if (useShadowDOM) {\n parent.insertBefore(this.shadowContainer, parent.firstChild);\n this.shadowRoot.appendChild(this.overlay);\n } else {\n parent.appendChild(this.overlay);\n }\n }\n\n /**\n * Removes the overlay from the DOM.\n */\n removeFromDOM() {\n this.setBounds({ x: 0, y: 0, width: 0, height: 0 });\n if (this.overlay.remove) {\n this.overlay.remove();\n } else if (this.overlay.parentNode) {\n this.overlay.parentNode.removeChild(this.overlay);\n }\n if (this.usingShadowDOM) {\n if (this.shadowContainer.remove) {\n this.shadowContainer.remove();\n } else if (this.shadowContainer.parentNode) {\n this.shadowContainer.parentNode.removeChild(this.shadowContainer);\n }\n }\n }\n\n /**\n * Enables pointer events on the overlay.\n */\n captureCursor() {\n this.overlay.style.pointerEvents = \"auto\";\n }\n\n /**\n * Disables pointer events on the overlay.\n */\n ignoreCursor() {\n this.overlay.style.pointerEvents = \"none\";\n }\n\n /**\n * Sets the position and size of the overlay.\n * @param {Object} bounds - The bounding box.\n * @param {number} bounds.x - The x-coordinate.\n * @param {number} bounds.y - The y-coordinate.\n * @param {number} bounds.width - The width.\n * @param {number} bounds.height - The height.\n */\n setBounds(bounds) {\n const { x, y, width, height } = bounds;\n this.overlay.style.left = x + \"px\";\n this.overlay.style.top = y + \"px\";\n this.overlay.style.width = width + \"px\";\n this.overlay.style.height = height + \"px\";\n }\n}\n\n/**\n * Class representing an element picker that uses the overlay.\n */\nclass ElementPicker {\n /**\n * Create an ElementPicker.\n * @param {Object} [overlayOptions] - Options to pass to ElementOverlay.\n */\n constructor(overlayOptions) {\n this.active = false;\n this.overlay = new ElementOverlay(overlayOptions || {});\n this.handleMouseMove = this.handleMouseMove.bind(this);\n this.handleClick = this.handleClick.bind(this);\n this.tick = this.tick.bind(this);\n }\n\n /**\n * Starts the element picking process.\n * @param {Object} options - Picker options.\n * @param {Node} [options.parentElement] - Parent element to attach the overlay.\n * @param {boolean} [options.useShadowDOM=true] - Whether to use Shadow DOM.\n * @param {Function} [options.onClick] - Callback invoked on click.\n * @param {Function} [options.onHover] - Callback invoked on hover.\n * @param {Function} [options.elementFilter] - Function to filter elements.\n * @returns {boolean} True if started successfully, false if already active.\n */\n start(options) {\n if (this.active) {\n return false;\n }\n this.active = true;\n this.options = options;\n\n document.addEventListener(\"mousemove\", this.handleMouseMove, true);\n document.addEventListener(\"click\", this.handleClick, true);\n\n const parentElement = options.parentElement || document.body;\n const useShadowDOM =\n options.useShadowDOM !== undefined ? options.useShadowDOM : true;\n this.overlay.addToDOM(parentElement, useShadowDOM);\n this.tick();\n\n return true;\n }\n\n /**\n * Stops the element picking process.\n */\n stop() {\n this.active = false;\n this.options = undefined;\n\n document.removeEventListener(\"mousemove\", this.handleMouseMove, true);\n document.removeEventListener(\"click\", this.handleClick, true);\n\n this.overlay.removeFromDOM();\n this.target = undefined;\n this.mouseX = undefined;\n this.mouseY = undefined;\n\n if (this.tickReq) {\n window.cancelAnimationFrame(this.tickReq);\n }\n }\n\n /**\n * Handles mouse move events.\n * @param {MouseEvent} event - The mousemove event.\n */\n handleMouseMove(event) {\n this.mouseX = event.clientX;\n this.mouseY = event.clientY;\n }\n\n /**\n * Handles click events.\n * @param {MouseEvent} event - The click event.\n */\n handleClick(event) {\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n\n if (this.target && this.options && this.options.onClick) {\n this.options.onClick(this.target);\n }\n }\n\n /**\n * The tick function that continuously updates the target element.\n */\n tick() {\n this.updateTarget();\n this.tickReq = window.requestAnimationFrame(this.tick);\n }\n\n /**\n * Updates the target element based on the current mouse position.\n */\n updateTarget() {\n if (this.mouseX === undefined || this.mouseY === undefined) {\n return;\n }\n\n // Temporarily ignore the overlay's pointer events to detect the underlying element.\n this.overlay.ignoreCursor();\n const elAtCursor = document.elementFromPoint(this.mouseX, this.mouseY);\n const newTarget = elAtCursor;\n this.overlay.captureCursor();\n\n // If the target hasn't changed, do nothing.\n if (!newTarget || newTarget === this.target) {\n return;\n }\n\n // If an element filter is provided and the new target doesn't match, clear the target.\n if (this.options && this.options.elementFilter) {\n if (!this.options.elementFilter(newTarget)) {\n this.target = undefined;\n this.overlay.setBounds({ x: 0, y: 0, width: 0, height: 0 });\n return;\n }\n }\n\n this.target = newTarget;\n const bounds = getElementBounds(newTarget);\n this.overlay.setBounds(bounds);\n\n if (this.options && this.options.onHover) {\n this.options.onHover(newTarget);\n }\n }\n}\n\nexport default ElementPicker;\n","import unique from \"./unique-selector/src/unique-selector\";\nimport ElementPicker from \"./ElementPicker\";\n\nclass GleapAdminHelper {\n picker = null;\n onElementPicked = null;\n\n stopPicker = () => {\n if (this.picker) {\n this.picker.stop();\n this.picker = null;\n return;\n }\n };\n\n startPicker = () => {\n this.stopPicker();\n var self = this;\n\n const style = {\n borderColor: \"#2142E7\",\n background: \"transparent\",\n borderWidth: \"4px\",\n borderRadius: \"5px\",\n };\n this.picker = new ElementPicker({ style });\n this.picker.start({\n useShadowDOM: false,\n onClick: (el) => {\n try {\n let selector;\n const tourId = el.getAttribute(\"data-gleap-tour\");\n if (tourId) {\n selector = `[data-gleap-tour=\"${tourId}\"]`;\n } else {\n selector = unique(el);\n }\n\n self.onElementPicked && self.onElementPicked(selector);\n } catch (e) {\n console.error(\"Error while getting unique selector\", e);\n }\n },\n elementFilter: (el) => {\n if (\n el.classList.contains(\"gleap-admin-collapse-ui\") ||\n el.closest(\".gleap-admin-collapse-ui\")\n ) {\n return false;\n }\n return true;\n },\n });\n };\n\n setMode = (mode) => {\n this.mode = mode;\n if (mode === \"navigate\") {\n this.stopPicker();\n }\n if (mode === \"picker\") {\n this.startPicker();\n }\n };\n}\n\nexport default GleapAdminHelper;\n","import { loadIcon } from \"./UI\";\nimport GleapAdminHelper from \"./GleapAdminHelper\";\nimport { GleapProductTours } from \"./Gleap\";\n\nexport default class GleapAdminManager {\n libraryInstance = null;\n lastUrl = undefined;\n injectedFrame = false;\n gleapFrameContainer = null;\n gleapCollapseUI = null;\n injectedCollapseUI = false;\n gleapFrame = null;\n configData = null;\n adminHelper = null;\n status = \"navigate\";\n\n // GleapAdminManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapAdminManager();\n }\n\n return this.instance;\n }\n\n logCurrentPage() {\n const currentUrl = window.location.href;\n if (currentUrl && currentUrl !== this.lastUrl) {\n this.lastUrl = currentUrl;\n\n this.sendMessageToTourBuilder({\n name: \"page-changed\",\n data: {\n page: currentUrl,\n },\n });\n }\n }\n\n startPageListener() {\n const self = this;\n setInterval(function () {\n self.logCurrentPage();\n }, 1000);\n }\n\n initAdminHelper() {\n const self = this;\n\n // Disable product tours.\n GleapProductTours.getInstance().disable();\n\n self.adminHelper = new GleapAdminHelper();\n\n try {\n self.adminHelper.onElementPicked = (selector) => {\n self.toggleCollapseUI(true);\n self.sendMessageToTourBuilder({\n name: \"element-picked\",\n data: {\n selector,\n },\n });\n };\n } catch (e) {\n console.log(e);\n }\n\n self.injectFrame();\n self.injectCollapseUI();\n self.setFrameHeight(\"loading\");\n }\n\n setFrameHeight(state) {\n if (this.gleapFrameContainer) {\n var height = \"\";\n if (state === \"picker\" || state === \"navigate\") {\n height = \"65px\";\n } else if (state === \"editor\") {\n height = \"100vh\";\n } else {\n height = \"0px\";\n }\n this.gleapFrameContainer.style.height = height;\n }\n }\n\n start() {\n if (typeof window === \"undefined\") {\n return;\n }\n\n if (window.gleapAdminDisabled) {\n return;\n }\n\n var self = this;\n\n // Add window message listener.\n window.addEventListener(\"message\", (event) => {\n if (event.origin !== \"https://app.gleap.io\") {\n return;\n }\n\n try {\n const data = JSON.parse(event.data);\n\n if (data.type === \"admin\") {\n if (data.name === \"load\") {\n self.configData = data.data;\n self.initAdminHelper();\n }\n\n if (data.name === \"smartlink-search-result\") {\n this.sendMessageToTourBuilder({\n name: \"smartlink-search-result\",\n data: data.data,\n });\n }\n\n if (data.name === \"translate-complete\") {\n this.sendMessageToTourBuilder({\n name: \"translate-complete\",\n data: data.data,\n });\n }\n }\n\n if (data.type === \"tourbuilder\") {\n if (data.name === \"loaddata\") {\n this.sendMessageToTourBuilder({\n name: \"data\",\n data: {\n ...self.configData,\n currentPage: window.location.href,\n },\n });\n }\n\n if (data.name === \"highlight-element\") {\n // Cleanup.\n document\n .querySelectorAll(\".gleap-admin-highlight\")\n .forEach((el) => {\n el.classList.remove(\"gleap-admin-highlight\");\n });\n\n // Find the element and highlight it.\n if (data?.data?.selector) {\n const element = document.querySelector(data?.data?.selector);\n if (element) {\n element.classList.add(\"gleap-admin-highlight\");\n }\n }\n }\n\n if (data.name === \"smartlink-search\") {\n this.sendMessage({\n name: \"smartlink-search\",\n data: data.data,\n });\n }\n\n if (data.name === \"product-tour-started\") {\n this.sendMessage({\n name: \"product-tour-started\",\n data: data.data,\n });\n }\n\n if (data.name === \"translate\") {\n this.sendMessage({\n name: \"translate\",\n data: data.data,\n });\n }\n\n if (data.name === \"save\") {\n this.sendMessage({\n name: \"save\",\n data: data.data,\n });\n }\n\n if (data.name === \"update-steps\") {\n this.sendMessage({\n name: \"update-steps\",\n data: data.data,\n });\n }\n\n if (data.name === \"click\") {\n try {\n document.querySelector(data.data.selector).click();\n } catch (e) {\n console.log(e);\n }\n }\n\n if (data.name === \"status-changed\") {\n self.status = data.data;\n this.setFrameHeight(self.status);\n self.adminHelper.stopPicker();\n\n if (self.status === \"picker\") {\n self.adminHelper.startPicker();\n }\n }\n }\n } catch (exp) {}\n });\n\n this.sendMessage({\n name: \"init\",\n });\n\n this.startPageListener();\n }\n\n sendMessage(data) {\n try {\n if (window && window.opener) {\n window.opener.postMessage(\n JSON.stringify({\n ...data,\n type: \"admin\",\n }),\n \"*\"\n );\n }\n } catch (e) {}\n }\n\n sendMessageToTourBuilder(data) {\n try {\n if (this.gleapFrame && this.gleapFrame.contentWindow) {\n this.gleapFrame.contentWindow.postMessage(\n JSON.stringify({\n ...data,\n type: \"tourbuilder\",\n }),\n \"*\"\n );\n }\n } catch (e) {}\n }\n\n toggleCollapseUI = (onlyIfActive = false) => {\n const COLLAPSE_UI_ACTIVE_CLASS = \"gleap-admin-collapse-ui-active\";\n const FRAME_CONTAINER_ACTIVE_CLASS = \"gleap-admin-frame-container-active\";\n\n // Helper function to check if an element has an active class\n const isActive = (element, activeClass) =>\n element && element.classList.contains(activeClass);\n\n // Check if onlyIfActive is true and if the UI elements are already inactive\n if (\n onlyIfActive &&\n (!isActive(this.gleapCollapseUI, COLLAPSE_UI_ACTIVE_CLASS) ||\n !isActive(this.gleapFrameContainer, FRAME_CONTAINER_ACTIVE_CLASS))\n ) {\n return; // Return early without toggling the UI\n }\n\n // Toggle the UI elements\n if (this.gleapCollapseUI) {\n this.gleapCollapseUI.classList.toggle(COLLAPSE_UI_ACTIVE_CLASS);\n }\n if (this.gleapFrameContainer) {\n this.gleapFrameContainer.classList.toggle(FRAME_CONTAINER_ACTIVE_CLASS);\n }\n };\n\n injectCollapseUI = () => {\n if (this.injectedCollapseUI) {\n return;\n }\n this.injectedCollapseUI = true;\n\n // Inject widget HTML.\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-admin-collapse-ui\";\n elem.innerHTML = `
\n ${loadIcon(\"arrowdown\")}\n
`;\n document.body.appendChild(elem);\n\n this.gleapCollapseUI = elem;\n\n elem.addEventListener(\"click\", (e) => {\n e.stopImmediatePropagation();\n e.stopPropagation();\n e.preventDefault();\n\n this.toggleCollapseUI();\n });\n };\n\n injectFrame = () => {\n if (this.injectedFrame) {\n return;\n }\n this.injectedFrame = true;\n\n // Inject widget HTML.\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-admin-frame-container\";\n elem.innerHTML = ``;\n document.body.appendChild(elem);\n\n this.gleapFrameContainer = elem;\n this.gleapFrame = document.querySelector(\".gleap-admin-frame\");\n };\n}\n","const GleapTours = (function () {\n \"use strict\";\n let currentConfig = {};\n function configure(config = {}) {\n currentConfig = {\n animate: true,\n allowClose: true,\n overlayOpacity: 0.7,\n smoothScroll: false,\n disableActiveInteraction: false,\n showProgress: false,\n stagePadding: 10,\n stageRadius: 5,\n popoverOffset: 10,\n showButtons: [\"next\", \"previous\", \"close\"],\n disableButtons: [],\n overlayColor: \"#000\",\n ...config,\n };\n }\n function getConfig(key) {\n return key ? currentConfig[key] : currentConfig;\n }\n function easeInOutQuad(elapsed, initialValue, amountOfChange, duration) {\n if ((elapsed /= duration / 2) < 1) {\n return (amountOfChange / 2) * elapsed * elapsed + initialValue;\n }\n return (\n (-amountOfChange / 2) * (--elapsed * (elapsed - 2) - 1) + initialValue\n );\n }\n function getFocusableElements(parentEls) {\n const focusableQuery =\n 'a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type=\"text\"]:not([disabled]), input[type=\"radio\"]:not([disabled]), input[type=\"checkbox\"]:not([disabled]), select:not([disabled])';\n return parentEls\n .flatMap((parentEl) => {\n const isParentFocusable = parentEl.matches(focusableQuery);\n const focusableEls = Array.from(\n parentEl.querySelectorAll(focusableQuery)\n );\n return [...(isParentFocusable ? [parentEl] : []), ...focusableEls];\n })\n .filter((el) => {\n return (\n getComputedStyle(el).pointerEvents !== \"none\" && isElementVisible(el)\n );\n });\n }\n function bringInView(element) {\n if (!element || isElementInView(element)) {\n return;\n }\n const shouldSmoothScroll = getConfig(\"smoothScroll\");\n element.scrollIntoView({\n // Removing the smooth scrolling for elements which exist inside the scrollable parent\n // This was causing the highlight to not properly render\n behavior:\n !shouldSmoothScroll || hasScrollableParent(element) ? \"auto\" : \"smooth\",\n inline: \"center\",\n block: \"center\",\n });\n }\n function hasScrollableParent(e) {\n if (!e || !e.parentElement) {\n return;\n }\n const parent = e.parentElement;\n return parent.scrollHeight > parent.clientHeight;\n }\n function isElementInView(element) {\n const rect = element.getBoundingClientRect();\n return (\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <=\n (window.innerHeight || document.documentElement.clientHeight) &&\n rect.right <= (window.innerWidth || document.documentElement.clientWidth)\n );\n }\n function isElementVisible(el) {\n return !!(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\n }\n let currentState = {};\n function setState(key, value) {\n currentState[key] = value;\n }\n function getState(key) {\n return key ? currentState[key] : currentState;\n }\n function resetState() {\n currentState = {};\n }\n let registeredListeners = {};\n function listen(hook, callback) {\n registeredListeners[hook] = callback;\n }\n function emit(hook) {\n var _a;\n (_a = registeredListeners[hook]) == null\n ? void 0\n : _a.call(registeredListeners);\n }\n function destroyEmitter() {\n registeredListeners = {};\n }\n function transitionStage(elapsed, duration, from, to) {\n let activeStagePosition = getState(\"__activeStagePosition\");\n const fromDefinition = activeStagePosition\n ? activeStagePosition\n : from.getBoundingClientRect();\n const toDefinition = to.getBoundingClientRect();\n const x = easeInOutQuad(\n elapsed,\n fromDefinition.x,\n toDefinition.x - fromDefinition.x,\n duration\n );\n const y = easeInOutQuad(\n elapsed,\n fromDefinition.y,\n toDefinition.y - fromDefinition.y,\n duration\n );\n const width = easeInOutQuad(\n elapsed,\n fromDefinition.width,\n toDefinition.width - fromDefinition.width,\n duration\n );\n const height = easeInOutQuad(\n elapsed,\n fromDefinition.height,\n toDefinition.height - fromDefinition.height,\n duration\n );\n activeStagePosition = {\n x,\n y,\n width,\n height,\n };\n renderOverlay(activeStagePosition);\n setState(\"__activeStagePosition\", activeStagePosition);\n }\n function trackActiveElement(element) {\n if (!element) {\n return;\n }\n const definition = element.getBoundingClientRect();\n const activeStagePosition = {\n x: definition.x,\n y: definition.y,\n width: definition.width,\n height: definition.height,\n };\n setState(\"__activeStagePosition\", activeStagePosition);\n renderOverlay(activeStagePosition);\n }\n function refreshOverlay() {\n const activeStagePosition = getState(\"__activeStagePosition\");\n const overlaySvg = getState(\"__overlaySvg\");\n if (!activeStagePosition) {\n return;\n }\n if (!overlaySvg) {\n console.warn(\"No stage svg found.\");\n return;\n }\n const windowX = window.innerWidth;\n const windowY = window.innerHeight;\n overlaySvg.setAttribute(\"viewBox\", `0 0 ${windowX} ${windowY}`);\n }\n function mountOverlay(stagePosition) {\n const overlaySvg = createOverlaySvg(stagePosition);\n document.body.appendChild(overlaySvg);\n onDriverClick(overlaySvg, (e) => {\n const target = e.target;\n if (target.tagName !== \"path\") {\n return;\n }\n emit(\"overlayClick\");\n });\n setState(\"__overlaySvg\", overlaySvg);\n }\n function renderOverlay(stagePosition) {\n const overlaySvg = getState(\"__overlaySvg\");\n if (!overlaySvg) {\n mountOverlay(stagePosition);\n return;\n }\n const pathElement = overlaySvg.firstElementChild;\n if ((pathElement == null ? void 0 : pathElement.tagName) !== \"path\") {\n throw new Error(\"no path element found in stage svg\");\n }\n pathElement.setAttribute(\"d\", generateStageSvgPathString(stagePosition));\n }\n function createOverlaySvg(stage) {\n const windowX = window.innerWidth;\n const windowY = window.innerHeight;\n const svg = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n svg.classList.add(\"gleap-tour-overlay\", \"gleap-tour-overlay-animated\");\n svg.setAttribute(\"viewBox\", `0 0 ${windowX} ${windowY}`);\n svg.setAttribute(\"xmlSpace\", \"preserve\");\n svg.setAttribute(\"xmlnsXlink\", \"http://www.w3.org/1999/xlink\");\n svg.setAttribute(\"version\", \"1.1\");\n svg.setAttribute(\"preserveAspectRatio\", \"xMinYMin slice\");\n svg.style.fillRule = \"evenodd\";\n svg.style.clipRule = \"evenodd\";\n svg.style.strokeLinejoin = \"round\";\n svg.style.strokeMiterlimit = \"2\";\n svg.style.zIndex = \"10000\";\n svg.style.position = \"fixed\";\n svg.style.top = \"0\";\n svg.style.left = \"0\";\n svg.style.width = \"100%\";\n svg.style.height = \"100%\";\n const stagePath = document.createElementNS(\n \"http://www.w3.org/2000/svg\",\n \"path\"\n );\n stagePath.setAttribute(\"d\", generateStageSvgPathString(stage));\n stagePath.style.fill = getConfig(\"overlayColor\") || \"rgb(0,0,0)\";\n stagePath.style.opacity = `${getConfig(\"overlayOpacity\")}`;\n stagePath.style.pointerEvents = \"auto\";\n stagePath.style.cursor = \"auto\";\n svg.appendChild(stagePath);\n return svg;\n }\n function generateStageSvgPathString(stage) {\n const windowX = window.innerWidth;\n const windowY = window.innerHeight;\n const stagePadding = getConfig(\"stagePadding\") || 0;\n const stageRadius = getConfig(\"stageRadius\") || 0;\n const stageWidth = stage.width + stagePadding * 2;\n const stageHeight = stage.height + stagePadding * 2;\n const limitedRadius = Math.min(\n stageRadius,\n stageWidth / 2,\n stageHeight / 2\n );\n const normalizedRadius = Math.floor(Math.max(limitedRadius, 0));\n const highlightBoxX = stage.x - stagePadding + normalizedRadius;\n const highlightBoxY = stage.y - stagePadding;\n const highlightBoxWidth = stageWidth - normalizedRadius * 2;\n const highlightBoxHeight = stageHeight - normalizedRadius * 2;\n return `M${windowX},0L0,0L0,${windowY}L${windowX},${windowY}L${windowX},0Z\n M${highlightBoxX},${highlightBoxY} h${highlightBoxWidth} a${normalizedRadius},${normalizedRadius} 0 0 1 ${normalizedRadius},${normalizedRadius} v${highlightBoxHeight} a${normalizedRadius},${normalizedRadius} 0 0 1 -${normalizedRadius},${normalizedRadius} h-${highlightBoxWidth} a${normalizedRadius},${normalizedRadius} 0 0 1 -${normalizedRadius},-${normalizedRadius} v-${highlightBoxHeight} a${normalizedRadius},${normalizedRadius} 0 0 1 ${normalizedRadius},-${normalizedRadius} z`;\n }\n function destroyOverlay() {\n const overlaySvg = getState(\"__overlaySvg\");\n if (overlaySvg) {\n overlaySvg.remove();\n }\n }\n function mountDummyElement() {\n const existingDummy = document.getElementById(\"gleap-tour-dummy-element\");\n if (existingDummy) {\n return existingDummy;\n }\n let element = document.createElement(\"div\");\n element.id = \"gleap-tour-dummy-element\";\n element.style.width = \"0\";\n element.style.height = \"0\";\n element.style.pointerEvents = \"none\";\n element.style.opacity = \"0\";\n element.style.position = \"fixed\";\n element.style.top = \"50%\";\n element.style.left = \"50%\";\n document.body.appendChild(element);\n return element;\n }\n function highlight(step, attemptTime = 5000) {\n const { element } = step;\n let elemObj = element;\n if (typeof elemObj === \"string\") {\n try {\n elemObj = document.querySelector(element);\n } catch (error) {\n // This will escape colons within IDs but not affect pseudo-classes or other valid uses of colons\n let refactoredElement = element.replace(\n /(#[^#\\s]+)/g,\n function (match) {\n return match.replace(/:/g, \"\\\\:\");\n }\n );\n elemObj = document.querySelector(refactoredElement);\n }\n }\n if (element && !elemObj && attemptTime >= 0) {\n setTimeout(() => {\n hidePopover();\n highlight(step, attemptTime - 100);\n }, 100);\n\n return;\n }\n\n if (!elemObj) {\n if (step.mode === \"INPUT\" || step.mode === \"CLICK\") {\n return getConfig(\"onElementNotFound\")(step);\n }\n }\n\n if (!elemObj) {\n elemObj = mountDummyElement();\n }\n\n transferHighlight(elemObj, step);\n }\n function refreshActiveHighlight() {\n const activeHighlight = getState(\"__activeElement\");\n const activeStep = getState(\"__activeStep\");\n if (!activeHighlight) {\n return;\n }\n trackActiveElement(activeHighlight);\n refreshOverlay();\n repositionPopover(activeHighlight, activeStep);\n }\n function transferHighlight(toElement, toStep) {\n const duration = 400;\n const start = Date.now();\n const fromStep = getState(\"__activeStep\");\n const fromElement = getState(\"__activeElement\") || toElement;\n const isFirstHighlight = !fromElement || fromElement === toElement;\n const isToDummyElement = toElement.id === \"gleap-tour-dummy-element\";\n const isFromDummyElement = fromElement.id === \"gleap-tour-dummy-element\";\n const isAnimatedTour = getConfig(\"animate\");\n const highlightStartedHook =\n toStep.onHighlightStarted || getConfig(\"onHighlightStarted\");\n const highlightedHook =\n (toStep == null ? void 0 : toStep.onHighlighted) ||\n getConfig(\"onHighlighted\");\n const deselectedHook =\n (fromStep == null ? void 0 : fromStep.onDeselected) ||\n getConfig(\"onDeselected\");\n const config = getConfig();\n const state = getState();\n if (!isFirstHighlight && deselectedHook) {\n deselectedHook(isFromDummyElement ? void 0 : fromElement, fromStep, {\n config,\n state,\n });\n }\n if (highlightStartedHook) {\n highlightStartedHook(isToDummyElement ? void 0 : toElement, toStep, {\n config,\n state,\n });\n }\n const hasDelayedPopover = !isFirstHighlight && isAnimatedTour;\n let isPopoverRendered = false;\n hidePopover();\n setState(\"previousStep\", fromStep);\n setState(\"previousElement\", fromElement);\n setState(\"activeStep\", toStep);\n setState(\"activeElement\", toElement);\n const animate = () => {\n const transitionCallback = getState(\"__transitionCallback\");\n if (transitionCallback !== animate) {\n return;\n }\n const elapsed = Date.now() - start;\n const timeRemaining = duration - elapsed;\n const isHalfwayThrough = timeRemaining <= duration / 2;\n if (\n toStep.popover &&\n isHalfwayThrough &&\n !isPopoverRendered &&\n hasDelayedPopover\n ) {\n renderPopover(toElement, toStep);\n isPopoverRendered = true;\n }\n if (getConfig(\"animate\") && elapsed < duration) {\n transitionStage(elapsed, duration, fromElement, toElement);\n } else {\n trackActiveElement(toElement);\n if (highlightedHook) {\n highlightedHook(isToDummyElement ? void 0 : toElement, toStep, {\n config: getConfig(),\n state: getState(),\n });\n }\n setState(\"__transitionCallback\", void 0);\n setState(\"__previousStep\", fromStep);\n setState(\"__previousElement\", fromElement);\n setState(\"__activeStep\", toStep);\n setState(\"__activeElement\", toElement);\n }\n window.requestAnimationFrame(animate);\n };\n setState(\"__transitionCallback\", animate);\n window.requestAnimationFrame(animate);\n bringInView(toElement);\n if (!hasDelayedPopover && toStep.popover) {\n renderPopover(toElement, toStep);\n }\n fromElement.classList.remove(\n \"gleap-tour-active-element\",\n \"gleap-tour-no-interaction\"\n );\n fromElement.removeAttribute(\"aria-haspopup\");\n fromElement.removeAttribute(\"aria-expanded\");\n fromElement.removeAttribute(\"aria-controls\");\n const disableActiveInteraction =\n toStep.disableActiveInteraction ??\n getConfig(\"disableActiveInteraction\") ??\n false;\n if (disableActiveInteraction) {\n toElement.classList.add(\"gleap-tour-no-interaction\");\n }\n toElement.classList.add(\"gleap-tour-active-element\");\n toElement.setAttribute(\"aria-haspopup\", \"dialog\");\n toElement.setAttribute(\"aria-expanded\", \"true\");\n toElement.setAttribute(\"aria-controls\", \"gleap-tour-popover-content\");\n }\n function destroyHighlight() {\n var _a;\n (_a = document.getElementById(\"gleap-tour-dummy-element\")) == null\n ? void 0\n : _a.remove();\n document\n .querySelectorAll(\".gleap-tour-active-element\")\n .forEach((element) => {\n element.classList.remove(\n \"gleap-tour-active-element\",\n \"gleap-tour-no-interaction\"\n );\n element.removeAttribute(\"aria-haspopup\");\n element.removeAttribute(\"aria-expanded\");\n element.removeAttribute(\"aria-controls\");\n });\n }\n function requireRefresh() {\n const resizeTimeout = getState(\"__resizeTimeout\");\n if (resizeTimeout) {\n window.cancelAnimationFrame(resizeTimeout);\n }\n setState(\n \"__resizeTimeout\",\n window.requestAnimationFrame(refreshActiveHighlight)\n );\n }\n function trapFocus(e) {\n var _a;\n const isActivated = getState(\"isInitialized\");\n if (!isActivated) {\n return;\n }\n const isTabKey = e.key === \"Tab\" || e.keyCode === 9;\n if (!isTabKey) {\n return;\n }\n const activeElement = getState(\"__activeElement\");\n const popoverEl = (_a = getState(\"popover\")) == null ? void 0 : _a.wrapper;\n const focusableEls = getFocusableElements([\n ...(popoverEl ? [popoverEl] : []),\n ...(activeElement ? [activeElement] : []),\n ]);\n const firstFocusableEl = focusableEls[0];\n const lastFocusableEl = focusableEls[focusableEls.length - 1];\n e.preventDefault();\n if (e.shiftKey) {\n const previousFocusableEl =\n focusableEls[focusableEls.indexOf(document.activeElement) - 1] ||\n lastFocusableEl;\n previousFocusableEl == null ? void 0 : previousFocusableEl.focus();\n } else {\n const nextFocusableEl =\n focusableEls[focusableEls.indexOf(document.activeElement) + 1] ||\n firstFocusableEl;\n nextFocusableEl == null ? void 0 : nextFocusableEl.focus();\n }\n }\n function onKeyup(e) {\n var _a;\n const allowKeyboardControl =\n (_a = getConfig(\"allowKeyboardControl\")) != null ? _a : true;\n if (!allowKeyboardControl) {\n return;\n }\n if (e.key === \"Escape\") {\n emit(\"escapePress\");\n } else if (e.key === \"ArrowRight\") {\n emit(\"arrowRightPress\");\n } else if (e.key === \"ArrowLeft\") {\n emit(\"arrowLeftPress\");\n }\n }\n function onDriverClick(element, listener, shouldPreventDefault) {\n const listenerWrapper = (e, listener2) => {\n const target = e.target;\n if (!element.contains(target)) {\n return;\n }\n if (!shouldPreventDefault || shouldPreventDefault(target)) {\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n listener2 == null ? void 0 : listener2(e);\n };\n const useCapture = true;\n document.addEventListener(\"pointerdown\", listenerWrapper, useCapture);\n document.addEventListener(\"mousedown\", listenerWrapper, useCapture);\n document.addEventListener(\"pointerup\", listenerWrapper, useCapture);\n document.addEventListener(\"mouseup\", listenerWrapper, useCapture);\n document.addEventListener(\n \"click\",\n (e) => {\n listenerWrapper(e, listener);\n },\n useCapture\n );\n }\n function initEvents() {\n window.addEventListener(\"keyup\", onKeyup, false);\n window.addEventListener(\"keydown\", trapFocus, false);\n window.addEventListener(\"resize\", requireRefresh);\n window.addEventListener(\"scroll\", requireRefresh);\n }\n function destroyEvents() {\n window.removeEventListener(\"keyup\", onKeyup);\n window.removeEventListener(\"resize\", requireRefresh);\n window.removeEventListener(\"scroll\", requireRefresh);\n }\n function hidePopover() {\n const popover = getState(\"popover\");\n if (!popover) {\n return;\n }\n popover.wrapper.style.display = \"none\";\n }\n function renderPopover(element, step) {\n var _a, _b;\n let popover = getState(\"popover\");\n if (popover) {\n document.body.removeChild(popover.wrapper);\n }\n popover = createPopover();\n document.body.appendChild(popover.wrapper);\n const {\n title,\n description,\n showButtons,\n disableButtons,\n showProgress,\n nextBtnText = getConfig(\"nextBtnText\") || \"Next\",\n prevBtnText = getConfig(\"prevBtnText\") || \"Previous\",\n progressText = getConfig(\"progressText\") || \"{current} of {total}\",\n } = step.popover || {};\n popover.nextButton.innerHTML = nextBtnText;\n popover.previousButton.innerHTML = prevBtnText;\n popover.progress.innerHTML = progressText;\n if (title) {\n popover.title.innerHTML = title;\n popover.title.style.display = \"block\";\n } else {\n popover.title.style.display = \"none\";\n }\n if (description) {\n popover.description.innerHTML = description;\n popover.description.style.display = \"block\";\n } else {\n popover.description.style.display = \"none\";\n }\n const showButtonsConfig = showButtons || getConfig(\"showButtons\");\n const showProgressConfig =\n showProgress || getConfig(\"showProgress\") || false;\n const showFooter =\n (showButtonsConfig == null\n ? void 0\n : showButtonsConfig.includes(\"next\")) ||\n (showButtonsConfig == null\n ? void 0\n : showButtonsConfig.includes(\"previous\")) ||\n showProgressConfig;\n popover.closeButton.style.display = showButtonsConfig.includes(\"close\")\n ? \"block\"\n : \"none\";\n if (showFooter) {\n popover.footer.style.display = \"flex\";\n popover.progress.style.display = showProgressConfig ? \"block\" : \"none\";\n popover.nextButton.style.display = showButtonsConfig.includes(\"next\")\n ? \"block\"\n : \"none\";\n popover.previousButton.style.display = showButtonsConfig.includes(\n \"previous\"\n )\n ? \"block\"\n : \"none\";\n } else {\n popover.footer.style.display = \"none\";\n }\n const disabledButtonsConfig =\n disableButtons || getConfig(\"disableButtons\") || [];\n if (\n disabledButtonsConfig == null\n ? void 0\n : disabledButtonsConfig.includes(\"next\")\n ) {\n popover.nextButton.disabled = true;\n popover.nextButton.classList.add(\"gleap-tour-popover-btn-disabled\");\n }\n if (\n disabledButtonsConfig == null\n ? void 0\n : disabledButtonsConfig.includes(\"previous\")\n ) {\n popover.previousButton.disabled = true;\n popover.previousButton.classList.add(\"gleap-tour-popover-btn-disabled\");\n }\n if (\n disabledButtonsConfig == null\n ? void 0\n : disabledButtonsConfig.includes(\"close\")\n ) {\n popover.closeButton.disabled = true;\n popover.closeButton.classList.add(\"gleap-tour-popover-btn-disabled\");\n }\n const popoverWrapper = popover.wrapper;\n popoverWrapper.style.display = \"block\";\n popoverWrapper.style.left = \"\";\n popoverWrapper.style.top = \"\";\n popoverWrapper.style.bottom = \"\";\n popoverWrapper.style.right = \"\";\n popoverWrapper.id = \"gleap-tour-popover-content\";\n popoverWrapper.setAttribute(\"role\", \"dialog\");\n popoverWrapper.setAttribute(\"aria-labelledby\", \"gleap-tour-popover-title\");\n popoverWrapper.setAttribute(\n \"aria-describedby\",\n \"gleap-tour-popover-description\"\n );\n const popoverArrow = popover.arrow;\n popoverArrow.className = \"gleap-tour-popover-arrow\";\n const customPopoverClass =\n ((_a = step.popover) == null ? void 0 : _a.popoverClass) ||\n getConfig(\"popoverClass\") ||\n \"\";\n popoverWrapper.className =\n `gleap-tour-popover ${customPopoverClass}`.trim();\n onDriverClick(\n popover.wrapper,\n (e) => {\n var _a2, _b2, _c;\n const target = e.target;\n const onNextClick =\n ((_a2 = step.popover) == null ? void 0 : _a2.onNextClick) ||\n getConfig(\"onNextClick\");\n const onPrevClick =\n ((_b2 = step.popover) == null ? void 0 : _b2.onPrevClick) ||\n getConfig(\"onPrevClick\");\n const onCloseClick =\n ((_c = step.popover) == null ? void 0 : _c.onCloseClick) ||\n getConfig(\"onCloseClick\");\n if (target.classList.contains(\"gleap-tour-popover-next-btn\")) {\n if (onNextClick) {\n return onNextClick(element, step, {\n config: getConfig(),\n state: getState(),\n });\n } else {\n return emit(\"nextClick\");\n }\n }\n if (target.classList.contains(\"gleap-tour-popover-prev-btn\")) {\n if (onPrevClick) {\n return onPrevClick(element, step, {\n config: getConfig(),\n state: getState(),\n });\n } else {\n return emit(\"prevClick\");\n }\n }\n if (target.classList.contains(\"gleap-tour-popover-close-btn\")) {\n if (onCloseClick) {\n return onCloseClick(element, step, {\n config: getConfig(),\n state: getState(),\n });\n } else {\n return emit(\"closeClick\");\n }\n }\n return void 0;\n },\n (target) => {\n return (\n !(popover == null ? void 0 : popover.description.contains(target)) &&\n !(popover == null ? void 0 : popover.title.contains(target)) &&\n typeof target.className === \"string\" &&\n target.className.includes(\"gleap-tour-popover\")\n );\n }\n );\n setState(\"popover\", popover);\n const onPopoverRender =\n ((_b = step.popover) == null ? void 0 : _b.onPopoverRender) ||\n getConfig(\"onPopoverRender\");\n if (onPopoverRender) {\n onPopoverRender(popover, {\n config: getConfig(),\n state: getState(),\n });\n }\n repositionPopover(element, step);\n bringInView(popoverWrapper);\n const isToDummyElement = element.classList.contains(\n \"gleap-tour-dummy-element\"\n );\n const focusableElement = getFocusableElements([\n popoverWrapper,\n ...(isToDummyElement ? [] : [element]),\n ]);\n if (focusableElement.length > 0) {\n focusableElement[0].focus();\n }\n }\n function getPopoverDimensions() {\n const popover = getState(\"popover\");\n if (!(popover == null ? void 0 : popover.wrapper)) {\n return;\n }\n const boundingClientRect = popover.wrapper.getBoundingClientRect();\n const stagePadding = getConfig(\"stagePadding\") || 0;\n const popoverOffset = getConfig(\"popoverOffset\") || 0;\n return {\n width: boundingClientRect.width + stagePadding + popoverOffset,\n height: boundingClientRect.height + stagePadding + popoverOffset,\n realWidth: boundingClientRect.width,\n realHeight: boundingClientRect.height,\n };\n }\n function calculateTopForLeftRight(alignment, config) {\n const {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n } = config;\n if (alignment === \"start\") {\n return Math.max(\n Math.min(\n elementDimensions.top - popoverPadding,\n window.innerHeight -\n popoverDimensions.realHeight -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n if (alignment === \"end\") {\n return Math.max(\n Math.min(\n elementDimensions.top -\n (popoverDimensions == null\n ? void 0\n : popoverDimensions.realHeight) +\n elementDimensions.height +\n popoverPadding,\n window.innerHeight -\n (popoverDimensions == null\n ? void 0\n : popoverDimensions.realHeight) -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n if (alignment === \"center\") {\n return Math.max(\n Math.min(\n elementDimensions.top +\n elementDimensions.height / 2 -\n (popoverDimensions == null\n ? void 0\n : popoverDimensions.realHeight) /\n 2,\n window.innerHeight -\n (popoverDimensions == null\n ? void 0\n : popoverDimensions.realHeight) -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n return 0;\n }\n function calculateLeftForTopBottom(alignment, config) {\n const {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n } = config;\n if (alignment === \"start\") {\n return Math.max(\n Math.min(\n elementDimensions.left - popoverPadding,\n window.innerWidth -\n popoverDimensions.realWidth -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n if (alignment === \"end\") {\n return Math.max(\n Math.min(\n elementDimensions.left -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) +\n elementDimensions.width +\n popoverPadding,\n window.innerWidth -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n if (alignment === \"center\") {\n return Math.max(\n Math.min(\n elementDimensions.left +\n elementDimensions.width / 2 -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) /\n 2,\n window.innerWidth -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n return 0;\n }\n function repositionPopover(element, step) {\n const popover = getState(\"popover\");\n if (!popover) {\n return;\n }\n const { align = \"start\", side = \"left\" } =\n (step == null ? void 0 : step.popover) || {};\n const requiredAlignment = align;\n const requiredSide =\n element.id === \"gleap-tour-dummy-element\" ? \"over\" : side;\n const popoverPadding = getConfig(\"stagePadding\") || 0;\n const popoverDimensions = getPopoverDimensions();\n const popoverArrowDimensions = popover.arrow.getBoundingClientRect();\n const elementDimensions = element.getBoundingClientRect();\n const topValue = elementDimensions.top - popoverDimensions.height;\n let isTopOptimal = topValue >= 0;\n const bottomValue =\n window.innerHeight -\n (elementDimensions.bottom + popoverDimensions.height);\n let isBottomOptimal = bottomValue >= 0;\n const leftValue = elementDimensions.left - popoverDimensions.width;\n let isLeftOptimal = leftValue >= 0;\n const rightValue =\n window.innerWidth - (elementDimensions.right + popoverDimensions.width);\n let isRightOptimal = rightValue >= 0;\n const noneOptimal =\n !isTopOptimal && !isBottomOptimal && !isLeftOptimal && !isRightOptimal;\n let popoverRenderedSide = requiredSide;\n if (requiredSide === \"top\" && isTopOptimal) {\n isRightOptimal = isLeftOptimal = isBottomOptimal = false;\n } else if (requiredSide === \"bottom\" && isBottomOptimal) {\n isRightOptimal = isLeftOptimal = isTopOptimal = false;\n } else if (requiredSide === \"left\" && isLeftOptimal) {\n isRightOptimal = isTopOptimal = isBottomOptimal = false;\n } else if (requiredSide === \"right\" && isRightOptimal) {\n isLeftOptimal = isTopOptimal = isBottomOptimal = false;\n }\n if (requiredSide === \"over\") {\n const leftToSet = window.innerWidth / 2 - popoverDimensions.realWidth / 2;\n const topToSet =\n window.innerHeight / 2 - popoverDimensions.realHeight / 2;\n popover.wrapper.style.left = `${leftToSet}px`;\n popover.wrapper.style.right = `auto`;\n popover.wrapper.style.top = `${topToSet}px`;\n popover.wrapper.style.bottom = `auto`;\n } else if (noneOptimal) {\n const leftValue2 =\n window.innerWidth / 2 -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) / 2;\n const bottomValue2 = 10;\n popover.wrapper.style.left = `${leftValue2}px`;\n popover.wrapper.style.right = `auto`;\n popover.wrapper.style.bottom = `${bottomValue2}px`;\n popover.wrapper.style.top = `auto`;\n } else if (isLeftOptimal) {\n const leftToSet = Math.min(\n leftValue,\n window.innerWidth -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) -\n popoverArrowDimensions.width\n );\n const topToSet = calculateTopForLeftRight(requiredAlignment, {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n });\n popover.wrapper.style.left = `${leftToSet}px`;\n popover.wrapper.style.top = `${topToSet}px`;\n popover.wrapper.style.bottom = `auto`;\n popover.wrapper.style.right = \"auto\";\n popoverRenderedSide = \"left\";\n } else if (isRightOptimal) {\n const rightToSet = Math.min(\n rightValue,\n window.innerWidth -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) -\n popoverArrowDimensions.width\n );\n const topToSet = calculateTopForLeftRight(requiredAlignment, {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n });\n popover.wrapper.style.right = `${rightToSet}px`;\n popover.wrapper.style.top = `${topToSet}px`;\n popover.wrapper.style.bottom = `auto`;\n popover.wrapper.style.left = \"auto\";\n popoverRenderedSide = \"right\";\n } else if (isTopOptimal) {\n const topToSet = Math.min(\n topValue,\n window.innerHeight -\n popoverDimensions.realHeight -\n popoverArrowDimensions.width\n );\n let leftToSet = calculateLeftForTopBottom(requiredAlignment, {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n });\n popover.wrapper.style.top = `${topToSet}px`;\n popover.wrapper.style.left = `${leftToSet}px`;\n popover.wrapper.style.bottom = `auto`;\n popover.wrapper.style.right = \"auto\";\n popoverRenderedSide = \"top\";\n } else if (isBottomOptimal) {\n const bottomToSet = Math.min(\n bottomValue,\n window.innerHeight -\n (popoverDimensions == null ? void 0 : popoverDimensions.realHeight) -\n popoverArrowDimensions.width\n );\n let leftToSet = calculateLeftForTopBottom(requiredAlignment, {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n });\n popover.wrapper.style.left = `${leftToSet}px`;\n popover.wrapper.style.bottom = `${bottomToSet}px`;\n popover.wrapper.style.top = `auto`;\n popover.wrapper.style.right = \"auto\";\n popoverRenderedSide = \"bottom\";\n }\n if (!noneOptimal) {\n renderPopoverArrow(requiredAlignment, popoverRenderedSide, element);\n } else {\n popover.arrow.classList.add(\"gleap-tour-popover-arrow-none\");\n }\n }\n function renderPopoverArrow(alignment, side, element) {\n const popover = getState(\"popover\");\n if (!popover) {\n return;\n }\n const elementDimensions = element.getBoundingClientRect();\n const popoverDimensions = getPopoverDimensions();\n const popoverArrow = popover.arrow;\n const popoverWidth = popoverDimensions.width;\n const windowWidth = window.innerWidth;\n const elementWidth = elementDimensions.width;\n const elementLeft = elementDimensions.left;\n const popoverHeight = popoverDimensions.height;\n const windowHeight = window.innerHeight;\n const elementTop = elementDimensions.top;\n const elementHeight = elementDimensions.height;\n popoverArrow.className = \"gleap-tour-popover-arrow\";\n let arrowSide = side;\n let arrowAlignment = alignment;\n if (side === \"top\") {\n if (elementLeft + elementWidth <= 0) {\n arrowSide = \"right\";\n arrowAlignment = \"end\";\n } else if (elementLeft + elementWidth - popoverWidth <= 0) {\n arrowSide = \"top\";\n arrowAlignment = \"start\";\n }\n if (elementLeft >= windowWidth) {\n arrowSide = \"left\";\n arrowAlignment = \"end\";\n } else if (elementLeft + popoverWidth >= windowWidth) {\n arrowSide = \"top\";\n arrowAlignment = \"end\";\n }\n } else if (side === \"bottom\") {\n if (elementLeft + elementWidth <= 0) {\n arrowSide = \"right\";\n arrowAlignment = \"start\";\n } else if (elementLeft + elementWidth - popoverWidth <= 0) {\n arrowSide = \"bottom\";\n arrowAlignment = \"start\";\n }\n if (elementLeft >= windowWidth) {\n arrowSide = \"left\";\n arrowAlignment = \"start\";\n } else if (elementLeft + popoverWidth >= windowWidth) {\n arrowSide = \"bottom\";\n arrowAlignment = \"end\";\n }\n } else if (side === \"left\") {\n if (elementTop + elementHeight <= 0) {\n arrowSide = \"bottom\";\n arrowAlignment = \"end\";\n } else if (elementTop + elementHeight - popoverHeight <= 0) {\n arrowSide = \"left\";\n arrowAlignment = \"start\";\n }\n if (elementTop >= windowHeight) {\n arrowSide = \"top\";\n arrowAlignment = \"end\";\n } else if (elementTop + popoverHeight >= windowHeight) {\n arrowSide = \"left\";\n arrowAlignment = \"end\";\n }\n } else if (side === \"right\") {\n if (elementTop + elementHeight <= 0) {\n arrowSide = \"bottom\";\n arrowAlignment = \"start\";\n } else if (elementTop + elementHeight - popoverHeight <= 0) {\n arrowSide = \"right\";\n arrowAlignment = \"start\";\n }\n if (elementTop >= windowHeight) {\n arrowSide = \"top\";\n arrowAlignment = \"start\";\n } else if (elementTop + popoverHeight >= windowHeight) {\n arrowSide = \"right\";\n arrowAlignment = \"end\";\n }\n } else;\n if (!arrowSide) {\n popoverArrow.classList.add(\"gleap-tour-popover-arrow-none\");\n } else {\n popoverArrow.classList.add(`gleap-tour-popover-arrow-side-${arrowSide}`);\n popoverArrow.classList.add(\n `gleap-tour-popover-arrow-align-${arrowAlignment}`\n );\n }\n }\n function createPopover() {\n const wrapper = document.createElement(\"div\");\n wrapper.classList.add(\"gleap-tour-popover\");\n const arrow = document.createElement(\"div\");\n arrow.classList.add(\"gleap-tour-popover-arrow\");\n const title = document.createElement(\"div\");\n title.id = \"gleap-tour-popover-title\";\n title.classList.add(\"gleap-tour-popover-title\");\n title.style.display = \"none\";\n title.innerText = \"Popover Title\";\n const description = document.createElement(\"div\");\n description.id = \"gleap-tour-popover-description\";\n description.classList.add(\"gleap-tour-popover-description\");\n description.style.display = \"none\";\n description.innerText = \"Popover description is here\";\n const closeButton = document.createElement(\"button\");\n closeButton.type = \"button\";\n closeButton.classList.add(\"gleap-tour-popover-close-btn\");\n closeButton.setAttribute(\"aria-label\", \"Close\");\n closeButton.innerHTML = \"×\";\n const footer = document.createElement(\"div\");\n footer.classList.add(\"gleap-tour-popover-footer\");\n const progress = document.createElement(\"span\");\n progress.classList.add(\"gleap-tour-popover-progress-text\");\n progress.innerText = \"\";\n const footerButtons = document.createElement(\"span\");\n footerButtons.classList.add(\"gleap-tour-popover-navigation-btns\");\n const previousButton = document.createElement(\"button\");\n previousButton.type = \"button\";\n previousButton.classList.add(\"gleap-tour-popover-prev-btn\");\n previousButton.innerHTML = \"← Previous\";\n const nextButton = document.createElement(\"button\");\n nextButton.type = \"button\";\n nextButton.classList.add(\"gleap-tour-popover-next-btn\");\n nextButton.innerHTML = \"Next →\";\n footerButtons.appendChild(previousButton);\n footerButtons.appendChild(nextButton);\n footer.appendChild(progress);\n footer.appendChild(footerButtons);\n wrapper.appendChild(closeButton);\n wrapper.appendChild(arrow);\n wrapper.appendChild(title);\n wrapper.appendChild(description);\n wrapper.appendChild(footer);\n return {\n wrapper,\n arrow,\n title,\n description,\n footer,\n previousButton,\n nextButton,\n closeButton,\n footerButtons,\n progress,\n };\n }\n function destroyPopover() {\n var _a;\n const popover = getState(\"popover\");\n if (!popover) {\n return;\n }\n (_a = popover.wrapper.parentElement) == null\n ? void 0\n : _a.removeChild(popover.wrapper);\n }\n function driver(options = {}) {\n configure(options);\n function handleClose() {\n if (!getConfig(\"allowClose\")) {\n return;\n }\n destroy();\n }\n function moveNext() {\n const activeIndex = getState(\"activeIndex\");\n const steps = getConfig(\"steps\") || [];\n if (typeof activeIndex === \"undefined\") {\n return;\n }\n const nextStepIndex = activeIndex + 1;\n if (steps[nextStepIndex]) {\n drive(nextStepIndex);\n } else {\n destroy();\n }\n }\n function movePrevious() {\n const activeIndex = getState(\"activeIndex\");\n const steps = getConfig(\"steps\") || [];\n if (typeof activeIndex === \"undefined\") {\n return;\n }\n const previousStepIndex = activeIndex - 1;\n if (steps[previousStepIndex]) {\n drive(previousStepIndex);\n } else {\n destroy();\n }\n }\n function moveTo(index) {\n const steps = getConfig(\"steps\") || [];\n if (steps[index]) {\n drive(index);\n } else {\n destroy();\n }\n }\n function handleArrowLeft() {\n var _a;\n const isTransitioning = getState(\"__transitionCallback\");\n if (isTransitioning) {\n return;\n }\n const activeIndex = getState(\"activeIndex\");\n const activeStep = getState(\"__activeStep\");\n const activeElement = getState(\"__activeElement\");\n\n if (activeStep.mode === \"CLICK\") {\n return;\n }\n if (\n typeof activeIndex === \"undefined\" ||\n typeof activeStep === \"undefined\"\n ) {\n return;\n }\n const currentStepIndex = getState(\"activeIndex\");\n if (typeof currentStepIndex === \"undefined\") {\n return;\n }\n const onPrevClick =\n ((_a = activeStep.popover) == null ? void 0 : _a.onPrevClick) ||\n getConfig(\"onPrevClick\");\n if (onPrevClick) {\n return onPrevClick(activeElement, activeStep, {\n config: getConfig(),\n state: getState(),\n });\n }\n movePrevious();\n }\n function handleArrowRight() {\n var _a;\n const isTransitioning = getState(\"__transitionCallback\");\n if (isTransitioning) {\n return;\n }\n const activeIndex = getState(\"activeIndex\");\n const activeStep = getState(\"__activeStep\");\n const activeElement = getState(\"__activeElement\");\n\n if (activeStep.mode === \"CLICK\") {\n return;\n }\n if (\n typeof activeIndex === \"undefined\" ||\n typeof activeStep === \"undefined\"\n ) {\n return;\n }\n const onNextClick =\n ((_a = activeStep.popover) == null ? void 0 : _a.onNextClick) ||\n getConfig(\"onNextClick\");\n if (onNextClick) {\n return onNextClick(activeElement, activeStep, {\n config: getConfig(),\n state: getState(),\n });\n }\n moveNext();\n }\n function init() {\n if (getState(\"isInitialized\")) {\n return;\n }\n setState(\"isInitialized\", true);\n document.body.classList.add(\n \"gleap-tour-active\",\n getConfig(\"animate\") ? \"gleap-tour-fade\" : \"gleap-tour-simple\"\n );\n initEvents();\n listen(\"overlayClick\", handleClose);\n listen(\"escapePress\", handleClose);\n listen(\"arrowLeftPress\", handleArrowLeft);\n listen(\"arrowRightPress\", handleArrowRight);\n }\n function drive(stepIndex = 0) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n const steps = getConfig(\"steps\");\n if (!steps) {\n console.error(\"No steps to drive through\");\n destroy();\n return;\n }\n if (!steps[stepIndex]) {\n destroy();\n return;\n }\n setState(\"__activeOnDestroyed\", document.activeElement);\n setState(\"activeIndex\", stepIndex);\n const currentStep = steps[stepIndex];\n const hasNextStep = steps[stepIndex + 1];\n const hasPreviousStep = steps[stepIndex - 1];\n const doneBtnText =\n ((_a = currentStep.popover) == null ? void 0 : _a.doneBtnText) ||\n getConfig(\"doneBtnText\") ||\n \"Done\";\n const allowsClosing = getConfig(\"allowClose\");\n const showProgress =\n typeof ((_b = currentStep.popover) == null\n ? void 0\n : _b.showProgress) !== \"undefined\"\n ? (_c = currentStep.popover) == null\n ? void 0\n : _c.showProgress\n : getConfig(\"showProgress\");\n const progressText =\n ((_d = currentStep.popover) == null ? void 0 : _d.progressText) ||\n getConfig(\"progressText\") ||\n \"{{current}} of {{total}}\";\n const progressTextReplaced = progressText\n .replace(\"{{current}}\", `${stepIndex + 1}`)\n .replace(\"{{total}}\", `${steps.length}`);\n const configuredButtons =\n ((_e = currentStep.popover) == null ? void 0 : _e.showButtons) ||\n getConfig(\"showButtons\");\n const calculatedButtons = [\n \"next\",\n \"previous\",\n ...(allowsClosing ? [\"close\"] : []),\n ].filter((b) => {\n return (\n !(configuredButtons == null ? void 0 : configuredButtons.length) ||\n configuredButtons.includes(b)\n );\n });\n const onNextClick =\n ((_f = currentStep.popover) == null ? void 0 : _f.onNextClick) ||\n getConfig(\"onNextClick\");\n const onPrevClick =\n ((_g = currentStep.popover) == null ? void 0 : _g.onPrevClick) ||\n getConfig(\"onPrevClick\");\n const onCloseClick =\n ((_h = currentStep.popover) == null ? void 0 : _h.onCloseClick) ||\n getConfig(\"onCloseClick\");\n highlight({\n ...currentStep,\n popover: {\n showButtons: calculatedButtons,\n nextBtnText: !hasNextStep ? doneBtnText : void 0,\n disableButtons: [...(!hasPreviousStep ? [\"previous\"] : [])],\n showProgress,\n progressText: progressTextReplaced,\n onNextClick: onNextClick\n ? onNextClick\n : () => {\n if (!hasNextStep) {\n destroy();\n } else {\n drive(stepIndex + 1);\n }\n },\n onPrevClick: onPrevClick\n ? onPrevClick\n : () => {\n drive(stepIndex - 1);\n },\n onCloseClick: onCloseClick\n ? onCloseClick\n : () => {\n destroy();\n },\n ...((currentStep == null ? void 0 : currentStep.popover) || {}),\n },\n });\n }\n function destroy(withOnDestroyStartedHook = true) {\n const activeElement = getState(\"__activeElement\");\n const activeStep = getState(\"__activeStep\");\n const activeOnDestroyed = getState(\"__activeOnDestroyed\");\n const onDestroyStarted = getConfig(\"onDestroyStarted\");\n if (withOnDestroyStartedHook && onDestroyStarted) {\n const isActiveDummyElement =\n !activeElement ||\n (activeElement == null ? void 0 : activeElement.id) ===\n \"gleap-tour-dummy-element\";\n onDestroyStarted(\n isActiveDummyElement ? void 0 : activeElement,\n activeStep,\n {\n config: getConfig(),\n state: getState(),\n }\n );\n return;\n }\n const onDeselected =\n (activeStep == null ? void 0 : activeStep.onDeselected) ||\n getConfig(\"onDeselected\");\n const onDestroyed = getConfig(\"onDestroyed\");\n document.body.classList.remove(\n \"gleap-tour-active\",\n \"gleap-tour-fade\",\n \"gleap-tour-simple\"\n );\n destroyEvents();\n destroyPopover();\n destroyHighlight();\n destroyOverlay();\n destroyEmitter();\n resetState();\n if (activeElement && activeStep) {\n const isActiveDummyElement =\n activeElement.id === \"gleap-tour-dummy-element\";\n if (onDeselected) {\n onDeselected(\n isActiveDummyElement ? void 0 : activeElement,\n activeStep,\n {\n config: getConfig(),\n state: getState(),\n }\n );\n }\n if (onDestroyed) {\n onDestroyed(\n isActiveDummyElement ? void 0 : activeElement,\n activeStep,\n {\n config: getConfig(),\n state: getState(),\n }\n );\n }\n }\n if (activeOnDestroyed) {\n activeOnDestroyed.focus();\n }\n }\n return {\n isActive: () => getState(\"isInitialized\") || false,\n refresh: requireRefresh,\n drive: (stepIndex = 0) => {\n init();\n drive(stepIndex);\n },\n setConfig: configure,\n setSteps: (steps) => {\n resetState();\n configure({\n ...getConfig(),\n steps,\n });\n },\n getConfig,\n getState,\n getActiveIndex: () => getState(\"activeIndex\"),\n isFirstStep: () => getState(\"activeIndex\") === 0,\n isLastStep: () => {\n const steps = getConfig(\"steps\") || [];\n const activeIndex = getState(\"activeIndex\");\n return activeIndex !== void 0 && activeIndex === steps.length - 1;\n },\n getActiveStep: () => getState(\"activeStep\"),\n getActiveElement: () => getState(\"activeElement\"),\n getPreviousElement: () => getState(\"previousElement\"),\n getPreviousStep: () => getState(\"previousStep\"),\n moveNext,\n movePrevious,\n moveTo,\n hasNextStep: () => {\n const steps = getConfig(\"steps\") || [];\n const activeIndex = getState(\"activeIndex\");\n return activeIndex !== void 0 && steps[activeIndex + 1];\n },\n hasPreviousStep: () => {\n const steps = getConfig(\"steps\") || [];\n const activeIndex = getState(\"activeIndex\");\n return activeIndex !== void 0 && steps[activeIndex - 1];\n },\n highlight: (step) => {\n init();\n highlight({\n ...step,\n popover: step.popover\n ? {\n showButtons: [],\n showProgress: false,\n progressText: \"\",\n ...step.popover,\n }\n : void 0,\n });\n },\n destroy: () => {\n destroy(false);\n },\n };\n }\n return driver;\n})({});\n\nexport default GleapTours;\n","import { GleapConfigManager, GleapTranslationManager } from \"./Gleap\";\nimport { calculateContrast, loadIcon } from \"./UI\";\n\nconst localStorageKey = \"gleap-tour-data\";\nconst pointerContainerId = \"copilot-pointer-container\";\nconst styleId = \"copilot-tour-styles\";\nconst copilotJoinedContainerId = \"copilot-joined-container\";\n\nfunction estimateReadTime(text) {\n if (typeof window === \"undefined\") return;\n\n const wordsPerSecond = 3.6; // Average reading speed\n const wordCount = text.split(/\\s+/).filter((word) => word.length > 0).length;\n const readTimeInSeconds = Math.ceil(wordCount / wordsPerSecond);\n return readTimeInSeconds + 1;\n}\n\nfunction htmlToPlainText(html) {\n if (typeof window === \"undefined\") return;\n\n const tempDiv = document.createElement(\"div\");\n tempDiv.innerHTML = html;\n return tempDiv.textContent || \"\";\n}\n\nfunction scrollToElement(element) {\n if (typeof window === \"undefined\") return;\n\n if (element) {\n element.scrollIntoView({\n behavior: \"smooth\",\n block: \"center\",\n inline: \"center\",\n });\n }\n}\n\nfunction performClickAnimation(posX, posY) {\n if (typeof window === \"undefined\") return;\n\n const wave = document.createElement(\"div\");\n wave.className = \"click-wave\";\n wave.style.left = `${posX - 17}px`;\n wave.style.top = `${posY - 17}px`;\n document.body.appendChild(wave);\n setTimeout(() => {\n wave.remove();\n }, 800);\n}\n\nfunction waitForElement(selector, timeout = 5000) {\n if (typeof window === \"undefined\") return;\n\n const pollInterval = 100;\n const maxAttempts = timeout / pollInterval;\n let attempts = 0;\n return new Promise((resolve, reject) => {\n const interval = setInterval(() => {\n const element = document.querySelector(selector);\n if (element) {\n clearInterval(interval);\n resolve(element);\n } else if (attempts >= maxAttempts) {\n clearInterval(interval);\n reject(new Error(`Element not found for selector: ${selector}`));\n }\n attempts++;\n }, pollInterval);\n });\n}\n\nfunction smoothScrollToY(yPosition) {\n if (typeof window === \"undefined\") return;\n\n const viewportHeight = window.innerHeight;\n const targetScrollPosition = yPosition - viewportHeight / 2;\n window.scrollTo({\n top: targetScrollPosition,\n behavior: \"smooth\",\n });\n}\n\nasync function canPlayAudio() {\n if (typeof window === \"undefined\") return;\n\n const audio = new Audio(\n \"data:audio/wav;base64,UklGRigAAABXQVZFZm10IBAAAAABAAEARKwAABCxAgAEABAAZGF0YQAAAAA=\"\n );\n try {\n await audio.play();\n return true;\n } catch (err) {\n return false;\n }\n}\n\n// Helper: Check if an element is fully visible in the viewport.\nfunction isElementFullyVisible(el) {\n if (typeof window === \"undefined\") return;\n\n const rect = el.getBoundingClientRect();\n return (\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <= window.innerHeight &&\n rect.right <= window.innerWidth\n );\n}\n\n// Helper: Get scrollable ancestors of an element.\nfunction getScrollableAncestors(el) {\n if (typeof window === \"undefined\") return;\n\n let ancestors = [];\n let current = el.parentElement;\n while (current) {\n const style = window.getComputedStyle(current);\n if (\n (style.overflowY === \"auto\" || style.overflowY === \"scroll\") &&\n current.scrollHeight > current.clientHeight\n ) {\n ancestors.push(current);\n }\n current = current.parentElement;\n }\n return ancestors;\n}\n\nexport default class GleapCopilotTours {\n productTourData = undefined;\n productTourId = undefined;\n currentActiveIndex = undefined;\n lastArrowPositionX = undefined;\n lastArrowPositionY = undefined;\n onCompleteCallback = undefined;\n audioMuted = false;\n currentAudio = undefined;\n\n // Cached pointer container.\n _pointerContainer = null;\n // For scroll handling.\n _scrollListeners = [];\n _currentAnchor = null;\n _currentStep = null;\n _scrollDebounceTimer = null;\n\n // GleapReplayRecorder singleton.\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapCopilotTours();\n }\n return this.instance;\n }\n\n constructor() {\n const self = this;\n\n if (typeof window !== \"undefined\") {\n this._scrollListeners = [];\n this._currentAnchor = null;\n this._currentStep = null;\n this._scrollDebounceTimer = null;\n\n window.addEventListener(\"resize\", () => {\n if (\n self.productTourId &&\n self.currentActiveIndex >= 0 &&\n self.productTourData &&\n self.productTourData.steps\n ) {\n const steps = self.productTourData.steps;\n const currentStep = steps[self.currentActiveIndex];\n if (\n currentStep &&\n currentStep.selector &&\n currentStep.selector !== \"\"\n ) {\n self.updatePointerPosition(\n document.querySelector(currentStep.selector),\n currentStep\n );\n }\n }\n });\n }\n }\n\n disable() {\n this.disabled = true;\n \n this.cleanup();\n }\n\n startWithConfig(tourId, config, onCompleteCallback = undefined) {\n if (typeof window === \"undefined\") return;\n if (this.productTourId) return;\n if (this.disabled) return;\n\n this.productTourId = tourId;\n this.productTourData = config;\n this.currentActiveIndex = 0;\n this.onCompleteCallback = onCompleteCallback;\n this.start();\n }\n\n storeUncompletedTour() {\n if (typeof window === \"undefined\") return;\n if (this.productTourId && this.productTourData) {\n try {\n let data = JSON.parse(\n JSON.stringify({\n tourData: this.productTourData,\n tourId: this.productTourId,\n })\n );\n data.tourData.steps = data.tourData.steps.slice(\n this.currentActiveIndex || 0,\n data.tourData.steps.length\n );\n localStorage.setItem(localStorageKey, JSON.stringify(data));\n } catch (e) {\n // Optionally log error in development mode.\n }\n } else {\n localStorage.removeItem(localStorageKey);\n }\n }\n\n // Attach scroll listeners with a debounce to update the pointer position after scrolling stops.\n attachScrollListeners(anchor, currentStep) {\n if (typeof window === \"undefined\") return;\n if (!anchor) return;\n const scrollableAncestors = getScrollableAncestors(anchor);\n // Also include window.\n scrollableAncestors.push(window);\n scrollableAncestors.forEach((el) => {\n const handler = () => {\n clearTimeout(this._scrollDebounceTimer);\n this._scrollDebounceTimer = setTimeout(() => {\n this.updatePointerPosition(anchor, currentStep);\n }, 150);\n };\n el.addEventListener(\"scroll\", handler, { passive: true });\n this._scrollListeners.push({ el, handler });\n });\n }\n\n // Remove scroll listeners and clear debounce timer.\n removeScrollListeners() {\n if (typeof window === \"undefined\") return;\n if (this._scrollListeners && this._scrollListeners.length > 0) {\n this._scrollListeners.forEach(({ el, handler }) => {\n el.removeEventListener(\"scroll\", handler);\n });\n this._scrollListeners = [];\n }\n if (this._scrollDebounceTimer) {\n clearTimeout(this._scrollDebounceTimer);\n this._scrollDebounceTimer = null;\n }\n }\n\n // Updated pointer position:\n // 1. Scroll the element into view.\n // 2. After the element is fully visible (or after a maximum delay), update the pointer position to point towards the element.\n updatePointerPosition(anchor, currentStep) {\n if (typeof window === \"undefined\") return;\n try {\n const container =\n this._pointerContainer || document.getElementById(pointerContainerId);\n if (!container) return;\n\n if (!anchor) {\n container.style.position = \"fixed\";\n container.style.left = \"50%\";\n container.style.top = \"50%\";\n container.style.transform = \"translate(-50%, -50%)\";\n smoothScrollToY(window.innerHeight / 2);\n this.removeScrollListeners();\n this._currentAnchor = null;\n this._currentStep = null;\n return;\n }\n\n // Step 1: Scroll the element into view.\n scrollToElement(anchor);\n\n // Step 2: Poll until the element is fully visible (or after maximum polls).\n const pollInterval = 100;\n const maxPolls = 20;\n let pollCount = 0;\n const updateFinalPosition = () => {\n if (isElementFullyVisible(anchor) || pollCount >= maxPolls) {\n // Compute final target coordinates.\n const anchorRect = anchor.getBoundingClientRect();\n const targetX = anchorRect.left + anchorRect.width / 2;\n const targetY = anchorRect.top + anchorRect.height / 2 + 10; // 10px downward offset.\n container.style.position = \"fixed\";\n container.style.left = `${targetX}px`;\n container.style.top = `${targetY}px`;\n container.style.transform = \"translate(-50%, -50%)\";\n\n // Adjust container if too far right.\n let containerWidthSpace = 350;\n if (containerWidthSpace > window.innerWidth - 40) {\n containerWidthSpace = window.innerWidth - 40;\n }\n if (targetX + containerWidthSpace > window.innerWidth - 20) {\n container.classList.add(\"copilot-pointer-container-right\");\n } else {\n container.classList.remove(\"copilot-pointer-container-right\");\n }\n\n // Reattach scroll listeners if the target or step has changed.\n if (\n this._currentAnchor !== anchor ||\n this._currentStep !== currentStep\n ) {\n this.removeScrollListeners();\n this._currentAnchor = anchor;\n this._currentStep = currentStep;\n this.attachScrollListeners(anchor, currentStep);\n }\n } else {\n pollCount++;\n setTimeout(updateFinalPosition, pollInterval);\n }\n };\n updateFinalPosition();\n } catch (e) {\n // Optionally log errors.\n }\n }\n\n cleanup() {\n if (typeof window === \"undefined\") return;\n document.body.classList.add(\"gl-copilot-fade-out\");\n if (this.currentAudio) {\n this.currentAudio.pause();\n }\n setTimeout(() => {\n if (this._pointerContainer) {\n this._pointerContainer.remove();\n this._pointerContainer = null;\n } else {\n const container = document.getElementById(pointerContainerId);\n if (container) container.remove();\n }\n const copilotInfoContainer = document.getElementById(\n copilotJoinedContainerId\n );\n if (copilotInfoContainer) copilotInfoContainer.remove();\n const styleNode = document.getElementById(styleId);\n if (styleNode) styleNode.remove();\n document.body.classList.remove(\"gl-copilot-fade-out\");\n }, 800);\n\n this.productTourId = undefined;\n this.productTourData = undefined;\n \n this.removeScrollListeners();\n }\n\n toggleAudio(muted = false) {\n this.audioMuted = muted;\n if (this.currentAudio) {\n this.currentAudio.muted = this.audioMuted;\n }\n document.querySelector(`.${copilotJoinedContainerId}-mute`).innerHTML =\n loadIcon(this.audioMuted ? \"unmute\" : \"mute\");\n }\n\n setupCopilotTour() {\n if (typeof window === \"undefined\") return;\n\n const primaryColor =\n GleapConfigManager.getInstance().flowConfig?.color ?? \"#485BFF\";\n const contrastColor = calculateContrast(primaryColor);\n\n let styleNode = document.getElementById(styleId);\n if (!styleNode) {\n styleNode = document.createElement(\"style\");\n styleNode.id = styleId;\n styleNode.type = \"text/css\";\n styleNode.textContent = `\n #${pointerContainerId} {\n position: absolute;\n top: 0;\n left: 0;\n display: flex;\n align-items: flex-start;\n pointer-events: none;\n z-index: 2147483610;\n transition: all 0.5s ease;\n }\n .${pointerContainerId}-clickmode {\n cursor: pointer;\n pointer-events: all !important;\n }\n .${pointerContainerId}-clickmode #copilot-info-bubble-content {\n display: flex !important;\n }\n .${pointerContainerId}-clickmode svg {\n display: none !important;\n }\n #${pointerContainerId} svg {\n width: 20px;\n height: auto;\n fill: none;\n }\n #copilot-info-bubble {\n position: relative;\n }\n #copilot-info-bubble-content-container {\n position: absolute;\n top: 0px;\n left: 0px;\n min-width: min(300px, 80vw);\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n }\n .${pointerContainerId}-right #copilot-info-bubble-content-container {\n left: auto !important;\n right: 0px !important;\n align-items: flex-end;\n }\n .${pointerContainerId}-right .copilot-info-bubble-content {\n margin-right: 5px;\n }\n .${pointerContainerId}-right svg {\n transform: scaleX(-1);\n }\n #copilot-info-bubble-content svg {\n width: 16px;\n height: 16px;\n display: inline-block !important;\n margin-left: 5px;\n }\n #copilot-info-bubble-content {\n margin-top: 18px;\n margin-left: 5px;\n padding: 10px 15px;\n border-radius: 20px;\n background-color: black;\n color: white;\n font-family: Arial, sans-serif;\n font-size: 14px;\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);\n max-width: 100%;\n white-space: normal;\n overflow-wrap: break-word;\n word-break: normal;\n hyphens: none;\n }\n .${pointerContainerId}-right #copilot-info-bubble-content {\n margin-top: 30px;\n margin-left: 0px;\n margin-right: 5px;\n }\n .click-wave {\n position: absolute;\n width: 34px;\n height: 34px;\n border-radius: 50%;\n background-color: rgba(0, 0, 0, 0.5);\n pointer-events: none;\n z-index: 2147483611;\n animation: click-wave-animation 0.8s ease forwards;\n }\n @keyframes click-wave-animation {\n 0% {\n transform: scale(0.2);\n opacity: 1;\n }\n 100% {\n transform: scale(2);\n opacity: 0;\n }\n }\n @keyframes slideInFromTop {\n 0% {\n transform: translateY(-100%);\n opacity: 0;\n }\n 100% {\n transform: translateY(0);\n opacity: 1;\n }\n }\n .${copilotJoinedContainerId} {\n position: fixed;\n top: 20px;\n right: 20px;\n z-index: 2147483610;\n background: #fff;\n padding: 6px;\n border-radius: 10px;\n box-shadow: 0 0 20px 0 #C294F2;\n display: flex;\n align-items: center;\n gap: 8px;\n border: 1px solid rgba(192, 146, 242, 0.5);\n animation: slideInFromTop 0.5s ease-out forwards;\n }\n .${copilotJoinedContainerId} span {\n font-size: 13px;\n color: #000;\n font-family: sans-serif;\n }\n .${copilotJoinedContainerId}-avatar {\n width: 24px;\n height: 24px;\n flex-shrink: 0;\n border-radius: 6px;\n }\n .${copilotJoinedContainerId}-mute {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n .${copilotJoinedContainerId}-mute svg {\n width: 20px;\n height: auto;\n cursor: pointer;\n animation: pulsate 2s infinite;\n }\n .${copilotJoinedContainerId}-mute svg:hover {\n opacity: 0.8;\n }\n .${copilotJoinedContainerId}-dismiss {\n display: flex;\n align-items: center;\n justify-content: center;\n padding-right: 3px;\n }\n .${copilotJoinedContainerId}-dismiss svg {\n width: 15px;\n height: auto;\n cursor: pointer;\n }\n .${copilotJoinedContainerId}-dismiss svg:hover {\n opacity: 0.8;\n }\n @keyframes pulsate {\n 0% {\n transform: scale(1);\n opacity: 1;\n }\n 50% {\n transform: scale(1.1);\n opacity: 0.8;\n }\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n }\n @keyframes glCoFadeIn {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n @keyframes glCoFadeOut {\n 0% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n }\n\n .gleap-audio-unmute-modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n background-color: rgba(0, 0, 0, 0.5);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 2147483620;\n }\n\n .gleap-audio-unmute-modal {\n background-color: #fff;\n padding: 20px;\n border-radius: 8px;\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);\n text-align: center;\n max-width: 90%;\n width: 400px;\n }\n\n .gleap-audio-unmute-modal p {\n margin-bottom: 20px;\n font-size: 16px;\n line-height: 22px;\n font-weight: normal;\n }\n\n .gleap-audio-unmute-button {\n background: ${primaryColor};\n color: ${contrastColor};\n outline: none;\n border: none;\n padding: 10px 14px;\n border-radius: 12px;\n font-size: 14px;\n font-weight: bold;\n cursor: pointer;\n }\n\n .gleap-audio-unmute-button:hover {\n opacity: 0.8;\n }\n\n .gleap-tour-continue-button {\n color: ${primaryColor};\n text-decoration: none;\n cursor: pointer;\n font-size: 14px;\n font-weight: bold;\n border: none;\n background: none;\n padding: 0;\n margin: 0;\n margin-left: 20px;\n }\n\n .gleap-tour-continue-button:hover {\n opacity: 0.8;\n }\n\n body.gl-copilot-fade-out::before,\n body.gl-copilot-fade-out::after,\n body.gl-copilot-fade-out #${copilotJoinedContainerId} {\n animation: glCoFadeOut 0.8s ease-out forwards;\n }\n ${\n this.productTourData?.playVoice ?? true\n ? \"\"\n : `\n .${copilotJoinedContainerId}-mute {\n display: none;\n }\n `\n }\n ${\n this.productTourData.gradient\n ? `body::before {\n content: \"\";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n box-sizing: border-box;\n border: 18px solid transparent;\n filter: blur(25px);\n border-image-slice: 1;\n border-image-source: linear-gradient(45deg, #ED5587, #FBE6A9, #a6e3f8, #C294F2);\n animation: glCoFadeIn 1.5s ease-out forwards;\n }\n \n body::after {\n content: \"\";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n opacity: 0.5;\n box-sizing: border-box;\n border: 3px solid transparent;\n border-image-slice: 1;\n border-image-source: linear-gradient(45deg, #ED5587, #FBE6A9, #a6e3f8, #C294F2);\n animation: glCoFadeIn 1.5s ease-out forwards;\n }`\n : `body::after {\n content: \"\";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n opacity: 0;\n }`\n }\n `;\n document.head.appendChild(styleNode);\n }\n\n const container = document.createElement(\"div\");\n container.id = pointerContainerId;\n container.style.opacity = 0;\n // Cache the pointer container.\n this._pointerContainer = container;\n\n const svgMouse = document.createElementNS(\n \"http://www.w3.org/2000/svg\",\n \"svg\"\n );\n svgMouse.setAttribute(\"viewBox\", \"0 0 380 476\");\n svgMouse.innerHTML =\n '';\n\n const infoBubble = document.createElement(\"div\");\n infoBubble.id = \"copilot-info-bubble\";\n infoBubble.innerHTML = `
`;\n\n const copilotInfoContainer = document.createElement(\"div\");\n copilotInfoContainer.id = copilotJoinedContainerId;\n copilotInfoContainer.classList.add(copilotJoinedContainerId);\n copilotInfoContainer.innerHTML = `\n \n ${this.productTourData?.kaiSlug}\n
\n ${loadIcon(this.audioMuted ? \"unmute\" : \"mute\")}\n
\n ${\n this.productTourData?.allowClose\n ? `
\n ${loadIcon(\"dismiss\")}\n
`\n : \"\"\n }\n `;\n document.body.appendChild(copilotInfoContainer);\n\n const self = this;\n\n document\n .querySelector(`.${copilotJoinedContainerId}-mute`)\n .addEventListener(\"click\", () => {\n this.toggleAudio(!this.audioMuted);\n });\n\n if (this.productTourData?.allowClose) {\n document\n .querySelector(`.${copilotJoinedContainerId}-dismiss`)\n .addEventListener(\"click\", () => {\n this.completeTour(false);\n });\n }\n\n container.appendChild(svgMouse);\n container.appendChild(infoBubble);\n document.body.appendChild(container);\n }\n\n start() {\n if (typeof window === \"undefined\") return;\n if (this.disabled) return;\n\n const config = this.productTourData;\n if (!config) return;\n canPlayAudio().then((supported) => {\n this.audioMuted = !supported;\n this.setupCopilotTour();\n\n if (this.audioMuted && config?.showUnmuteModal) {\n this.showAudioUnmuteModal();\n } else {\n setTimeout(() => {\n this.renderNextStep();\n }, 1500);\n }\n });\n }\n\n showAudioUnmuteModal() {\n // Create the overlay element\n const modalOverlay = document.createElement(\"div\");\n modalOverlay.classList.add(\"gleap-audio-unmute-modal-overlay\");\n\n // Create the modal container element\n const modal = document.createElement(\"div\");\n modal.classList.add(\"gleap-audio-unmute-modal\");\n\n // Create and add the modal message\n const message = document.createElement(\"p\");\n message.textContent = this.productTourData?.unmuteModalTitle;\n modal.appendChild(message);\n\n // Create the \"Unmute Audio\" button\n const unmuteButton = document.createElement(\"button\");\n unmuteButton.classList.add(\"gleap-audio-unmute-button\");\n unmuteButton.textContent = this.productTourData?.unmuteModalButton;\n unmuteButton.addEventListener(\"click\", () => {\n this.toggleAudio(false);\n if (modalOverlay.parentNode) {\n modalOverlay.parentNode.removeChild(modalOverlay);\n }\n setTimeout(() => {\n this.renderNextStep();\n }, 1000);\n });\n modal.appendChild(unmuteButton);\n\n // Create the \"Start Anyway\" button\n const startAnywayButton = document.createElement(\"button\");\n startAnywayButton.classList.add(\"gleap-tour-continue-button\");\n startAnywayButton.textContent = this.productTourData?.unmuteModalContinue;\n startAnywayButton.addEventListener(\"click\", () => {\n if (modalOverlay.parentNode) {\n modalOverlay.parentNode.removeChild(modalOverlay);\n }\n setTimeout(() => {\n this.renderNextStep();\n }, 1000);\n });\n modal.appendChild(startAnywayButton);\n\n // Build the modal and attach it to the DOM\n modalOverlay.appendChild(modal);\n document.body.appendChild(modalOverlay);\n }\n\n completeTour(success = true) {\n if (typeof window === \"undefined\") return;\n this.cleanup();\n if (this.onCompleteCallback) {\n this.onCompleteCallback(success);\n }\n }\n\n renderNextStep() {\n if (typeof window === \"undefined\") return;\n if (this.disabled) return;\n\n const self = this;\n const config = this.productTourData;\n const steps = config.steps;\n if (this.currentActiveIndex >= steps.length) {\n setTimeout(() => {\n this.completeTour();\n }, 500);\n return;\n }\n const currentStep = steps[this.currentActiveIndex];\n const handleStep = (element) => {\n this._pointerContainer.style.display = \"flex\";\n if (currentStep.selector && currentStep.selector.length > 0 && !element) {\n this.completeTour(false);\n return;\n }\n const gotToNextStep = () => {\n if (currentStep.mode === \"INPUT\" && element) {\n function proceedClickmode() {\n document\n .querySelector(`#${pointerContainerId}`)\n .classList.remove(\"copilot-pointer-container-clickmode\");\n element.classList.remove(\"gleap-input-highlight\");\n document.getElementById(pointerContainerId).style.display = \"none\";\n self.currentActiveIndex++;\n self.storeUncompletedTour();\n self.renderNextStep();\n }\n const inputModeType = currentStep.inputType ?? \"default\";\n if (inputModeType === \"default\") {\n function handleInputEvent(e) {\n if (e?.target?.value?.length === 0) return;\n const cursor = document.getElementById(\n `copilot-info-bubble-content`\n );\n if (!cursor) return;\n cursor.innerHTML = `${GleapTranslationManager.translateText(\n \"next\"\n )} \n \n`;\n cursor.addEventListener(\"click\", proceedClickmode, {\n once: true,\n });\n element.classList.add(\"gleap-input-highlight\");\n document\n .querySelector(`#${pointerContainerId}`)\n .classList.add(\"copilot-pointer-container-clickmode\");\n element.removeEventListener(\"input\", handleInputEvent);\n }\n element.addEventListener(\"input\", handleInputEvent, {\n once: false,\n });\n if (element.hasAttribute(\"contenteditable\")) {\n element.addEventListener(\"keyup\", handleInputEvent, {\n once: false,\n });\n }\n element.addEventListener(\n \"blur\",\n () => {\n element.focus();\n },\n { once: true }\n );\n element.focus();\n } else {\n const inputValue = currentStep.inputValue ?? \"\";\n let index = 0;\n function typeCharacter() {\n if (index < inputValue.length) {\n element.value += inputValue[index];\n index++;\n setTimeout(typeCharacter, 100);\n } else {\n setTimeout(() => {\n proceedClickmode();\n }, 1200);\n }\n }\n typeCharacter();\n }\n return;\n }\n self.currentActiveIndex++;\n self.storeUncompletedTour();\n if (currentStep.mode === \"CLICK\" && element) {\n const rect = element.getBoundingClientRect();\n const scrollX = window.scrollX || 0;\n const scrollY = window.scrollY || 0;\n performClickAnimation(\n rect.left + rect.width / 2 + scrollX,\n rect.top + rect.height / 2 + scrollY\n );\n element.click();\n }\n self.renderNextStep();\n };\n\n this.updatePointerPosition(element, currentStep);\n const message = currentStep?.message\n ? htmlToPlainText(currentStep.message)\n : \"🤔\";\n document.getElementById(`copilot-info-bubble-content`).textContent =\n message;\n this._pointerContainer.style.opacity = 1;\n const readTime = estimateReadTime(message);\n const continueWithNoAudio = () => {\n this.currentAudio = undefined;\n setTimeout(() => {\n gotToNextStep();\n }, readTime * 1000);\n };\n if (currentStep.voice && currentStep.voice.length > 0) {\n this.currentAudio = new Audio(currentStep.voice);\n if (this.audioMuted) {\n this.currentAudio.muted = true;\n }\n this.currentAudio.addEventListener(\"ended\", () => {\n setTimeout(() => {\n gotToNextStep();\n }, 1000);\n });\n this.currentAudio\n .play()\n .then(() => {})\n .catch((error) => {\n continueWithNoAudio();\n });\n } else {\n continueWithNoAudio();\n }\n };\n\n const elementPromise = currentStep.selector\n ? waitForElement(currentStep.selector)\n : Promise.resolve(null);\n elementPromise.then(handleStep).catch(() => handleStep(null));\n }\n}\n","import { loadIcon } from \"./UI\";\nimport GleapTours from \"./GleapTours\";\nimport Gleap, { GleapEventManager, GleapSession } from \"./Gleap\";\nimport GleapCopilotTours from \"./GleapCopilotTours\";\n\nconst localStorageKey = \"gleap-tour-data\";\n\nexport default class GleapProductTours {\n productTourData = undefined;\n productTourId = undefined;\n unmuted = false;\n currentActiveIndex = undefined;\n gleapTourObj = undefined;\n disabled = false;\n\n // GleapReplayRecorder singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapProductTours();\n return this.instance;\n } else {\n return this.instance;\n }\n }\n\n disable() {\n if (this.gleapTourObj) {\n this.gleapTourObj.destroy();\n }\n\n // Disable copilot tours.\n GleapCopilotTours.getInstance().disable();\n\n this.gleapTourObj = undefined;\n this.disabled = true;\n }\n\n constructor() {\n const self = this;\n\n if (typeof window !== \"undefined\") {\n const beforeUnloadListener = (event) => {\n if (\n !self?.disabled &&\n self?.productTourId &&\n self?.productTourData &&\n self?.productTourData?.tourType !== \"cobrowse\"\n ) {\n self.storeUncompletedTour();\n }\n };\n\n if (typeof window !== \"undefined\") {\n window.addEventListener(\"beforeunload\", beforeUnloadListener);\n }\n }\n }\n\n startWithConfig(tourId, config, delay = 0, manually = false) {\n // Prevent multiple tours from being started.\n if (this.productTourId || this.disabled) {\n return;\n }\n\n this.productTourId = tourId;\n this.productTourData = config;\n this.currentActiveIndex = 0;\n\n if (manually) {\n this.start();\n } else {\n const self = this;\n\n // Validate product tour.\n GleapSession.getInstance()\n .validateProductTour(tourId)\n .then(() => {\n if (delay > 0) {\n return setTimeout(() => {\n self.start();\n }, delay);\n } else {\n return this.start();\n }\n })\n .catch((error) => {\n console.log(\"Product tour is not live. Cleaning up...\");\n console.error(error);\n\n self.onComplete(false);\n });\n }\n }\n\n onComplete(success = true) {\n const comData = {\n tourId: this.productTourId,\n };\n\n if (success) {\n GleapEventManager.notifyEvent(\"productTourCompleted\", comData);\n Gleap.trackEvent(`tour-${this.productTourId}-completed`, comData);\n } else {\n GleapEventManager.notifyEvent(\"productTourQuit\", comData);\n Gleap.trackEvent(`tour-${this.productTourId}-quit`, comData);\n }\n\n // Clear data.\n if (this.gleapTourObj) {\n this.gleapTourObj.destroy();\n }\n\n this.gleapTourObj = undefined;\n this.productTourData = undefined;\n this.productTourId = undefined;\n this.currentActiveIndex = undefined;\n this.clearUncompletedTour();\n }\n\n loadUncompletedTour() {\n try {\n const data = JSON.parse(localStorage.getItem(localStorageKey));\n if (data?.tourData && data?.tourId) {\n return data;\n }\n } catch (e) {}\n\n return null;\n }\n\n storeUncompletedTour() {\n if (this.productTourId && this.productTourData) {\n try {\n let data = JSON.parse(\n JSON.stringify({\n tourData: this.productTourData,\n tourId: this.productTourId,\n })\n );\n\n data.tourData.steps = data.tourData.steps.slice(\n this.currentActiveIndex || 0,\n data.tourData.steps.length\n );\n\n localStorage.setItem(localStorageKey, JSON.stringify(data));\n } catch (e) {}\n } else {\n this.clearUncompletedTour();\n }\n }\n\n clearUncompletedTour() {\n try {\n localStorage.removeItem(localStorageKey);\n } catch (e) {}\n }\n\n start() {\n const config = this.productTourData;\n if (!config) {\n return;\n }\n\n if (config.tourType === \"cobrowse\") {\n return GleapCopilotTours.getInstance().startWithConfig(\n this.productTourId,\n config,\n (success) => {\n this.onComplete(success);\n }\n );\n }\n\n this.unmuted = false;\n const steps = config.steps;\n const self = this;\n\n var driverSteps = [];\n\n for (let i = 0; i < steps.length; i++) {\n const step = steps[i];\n\n const isClickMode = step.mode === \"CLICK\";\n const isInputMode = step.mode === \"INPUT\";\n\n var message = \"\";\n var hasSender = false;\n\n if (step.type === \"video-pointer\") {\n message = `
\n \n
${loadIcon(\n \"unmute\"\n )}
\n
`;\n } else {\n var senderHTML = ``;\n\n if (config.sender && config.sender.firstName) {\n hasSender = true;\n senderHTML = `
\n
\n
${config.sender.firstName}
\n
`;\n }\n\n message = `${senderHTML}
${step.message}
`;\n }\n\n const disableInteraction = !isClickMode && !isInputMode;\n\n var driverStep = {\n disableActiveInteraction: disableInteraction,\n mode: step.mode,\n popover: {\n description: message,\n popoverClass: `gleap-tour-popover-${step.type} ${\n !hasSender && \"gleap-tour-popover-no-sender\"\n } ${config.allowClose && \"gleap-tour-popover-can-close\"}`,\n ...(isClickMode\n ? {\n showButtons: [],\n }\n : {}),\n },\n };\n if (step.selector && step.selector.length > 0) {\n driverStep.element = step.selector;\n }\n driverSteps.push(driverStep);\n }\n\n var buttons = [\"next\", \"close\"];\n\n if (config.backButton) {\n buttons.push(\"previous\");\n }\n\n function onDocumentClick(evnt) {\n try {\n var gleapTourPopover = document.querySelector(\".gleap-tour-popover\");\n if (gleapTourPopover && !gleapTourPopover.contains(evnt.target)) {\n const stepIndex = self.gleapTourObj.getActiveIndex();\n const step = steps[stepIndex];\n const element = self.gleapTourObj.getActiveElement();\n\n if (step?.mode === \"CLICK\" && evnt?.target !== element) {\n const isInsideElement = element.contains(evnt?.target);\n if (!isInsideElement) {\n // Ignore clicks outside of the actual element.\n return;\n }\n }\n\n // Store next step index.\n self.currentActiveIndex = (self.currentActiveIndex || 0) + 1;\n self.storeUncompletedTour();\n\n if (\n (element && element.tagName === \"INPUT\") ||\n step.mode === \"INPUT\" ||\n evnt?.target?.id.includes(\"tooltip-svg\")\n ) {\n // Prevent.\n } else {\n self.gleapTourObj.moveNext();\n }\n }\n } catch (e) {}\n }\n\n this.gleapTourObj = GleapTours({\n showProgress: true,\n allowKeyboardControl: false,\n steps: driverSteps,\n showProgress: steps.length > 1,\n allowClose: config.allowClose,\n nextBtnText: config.nextText,\n doneBtnText: config.doneText,\n prevBtnText: config.prevText,\n showButtons: buttons,\n onHighlightStarted: (element, step, config) => {\n this.currentActiveIndex = config?.state?.activeIndex;\n this.storeUncompletedTour();\n },\n onElementNotFound: (step) => {\n document.removeEventListener(\"click\", onDocumentClick);\n\n this.onComplete(false);\n },\n onDestroyStarted: () => {\n if (!this.gleapTourObj.hasNextStep()) {\n // Mark as completed.\n this.onComplete(true);\n } else {\n // Mark as quit.\n this.onComplete(false);\n }\n\n document.removeEventListener(\"click\", onDocumentClick);\n },\n onPopoverRender: (popoverElement) => {\n // Fix for images and videos.\n if (popoverElement) {\n const mediaElements = document.querySelectorAll(\n \".gleap-tour-popover-description img, .gleap-tour-popover-description video\"\n );\n\n const performRequentialRefresh = () => {\n setTimeout(() => {\n this.gleapTourObj.refresh();\n }, 500);\n setTimeout(() => {\n this.gleapTourObj.refresh();\n }, 750);\n };\n\n for (let i = 0; i < mediaElements.length; i++) {\n const mediaElement = mediaElements[i];\n if (mediaElement.tagName === \"IMG\") {\n mediaElement.addEventListener(\"load\", () => {\n performRequentialRefresh();\n });\n mediaElement.addEventListener(\"error\", () => {\n performRequentialRefresh();\n });\n } else if (mediaElement.tagName === \"VIDEO\") {\n mediaElement.addEventListener(\"canplaythrough\", () => {\n performRequentialRefresh();\n });\n mediaElement.addEventListener(\"error\", () => {\n performRequentialRefresh();\n });\n }\n }\n }\n\n const playingClass = \"gleap-tour-video--playing\";\n const playPauseContainer = document.querySelector(\n \".gleap-tour-video-playpause\"\n );\n\n const videoElement = document.querySelector(\".gleap-tour-video-obj\");\n if (videoElement) {\n const videoContainer = videoElement.closest(\".gleap-tour-video\");\n\n if (self.unmuted) {\n if (videoElement) {\n videoElement.pause();\n videoElement.muted = false;\n videoElement.play();\n videoContainer.classList.add(playingClass);\n }\n }\n\n videoElement.addEventListener(\"ended\", function () {\n playPauseContainer.innerHTML = loadIcon(\"replay\");\n playPauseContainer.classList.add(\n \"gleap-tour-video-svg--fullscreen\"\n );\n videoContainer.classList.remove(playingClass);\n });\n\n videoElement.addEventListener(\"play\", function () {\n playPauseContainer.classList.remove(\n \"gleap-tour-video-svg--fullscreen\"\n );\n });\n\n if (playPauseContainer) {\n playPauseContainer.addEventListener(\"click\", () => clickVideo());\n }\n\n const clickVideo = () => {\n if (videoElement.muted) {\n self.unmuted = true;\n\n videoElement.pause();\n videoElement.currentTime = 0;\n videoElement.muted = false;\n videoElement.play();\n\n playPauseContainer.innerHTML = loadIcon(\"mute\");\n videoContainer.classList.add(playingClass);\n } else if (videoElement.paused) {\n videoElement.muted = false;\n videoElement.play();\n\n playPauseContainer.innerHTML = loadIcon(\"mute\");\n videoContainer.classList.add(playingClass);\n } else {\n videoElement.pause();\n playPauseContainer.innerHTML = loadIcon(\"unmute\");\n videoContainer.classList.remove(playingClass);\n }\n };\n }\n },\n });\n this.gleapTourObj.drive();\n\n document.addEventListener(\"click\", onDocumentClick, true);\n }\n}\n","import { injectStyledCSS } from \"./UI\";\nimport GleapNetworkIntercepter from \"./GleapNetworkIntercepter\";\nimport {\n fixGleapHeight,\n gleapDataParser,\n runFunctionWhenDomIsReady,\n} from \"./GleapHelper\";\nimport GleapSession from \"./GleapSession\";\nimport GleapStreamedEvent from \"./GleapStreamedEvent\";\nimport GleapConfigManager from \"./GleapConfigManager\";\nimport GleapFeedback from \"./GleapFeedback\";\nimport GleapFrameManager from \"./GleapFrameManager\";\nimport GleapMetaDataManager from \"./GleapMetaDataManager\";\nimport GleapConsoleLogManager from \"./GleapConsoleLogManager\";\nimport GleapClickListener from \"./GleapClickListener\";\nimport GleapFeedbackButtonManager from \"./GleapFeedbackButtonManager\";\nimport GleapCustomDataManager from \"./GleapCustomDataManager\";\nimport GleapEventManager from \"./GleapEventManager\";\nimport GleapCustomActionManager from \"./GleapCustomActionManager\";\nimport GleapReplayRecorder from \"./GleapReplayRecorder\";\nimport GleapMarkerManager from \"./GleapMarkerManager\";\nimport GleapTranslationManager from \"./GleapTranslationManager\";\nimport GleapShortcutListener from \"./GleapShortcutListener\";\nimport GleapPreFillManager from \"./GleapPreFillManager\";\nimport GleapNotificationManager from \"./GleapNotificationManager\";\nimport GleapBannerManager from \"./GleapBannerManager\";\nimport GleapModalManager from \"./GleapModalManager\";\nimport GleapAudioManager from \"./GleapAudioManager\";\nimport GleapTagManager from \"./GleapTagManager\";\nimport GleapAdminManager from \"./GleapAdminManager\";\nimport GleapProductTours from \"./GleapProductTours\";\nimport { checkPageFilter } from \"./GleapPageFilter\";\nimport { registerGleapChecklist } from \"./GleapChecklist\";\nimport ChecklistNetworkManager from \"./ChecklistNetworkManager\";\n\nif (\n typeof window !== \"undefined\" &&\n typeof HTMLCanvasElement !== \"undefined\" &&\n HTMLCanvasElement.prototype &&\n HTMLCanvasElement.prototype.__originalGetContext === undefined\n) {\n HTMLCanvasElement.prototype.__originalGetContext =\n HTMLCanvasElement.prototype.getContext;\n HTMLCanvasElement.prototype.getContext = function (type, options) {\n return this.__originalGetContext(type, {\n ...options,\n preserveDrawingBuffer: true,\n });\n };\n}\n\nif (\n typeof customElements !== \"undefined\" &&\n typeof HTMLElement !== \"undefined\" &&\n typeof window !== \"undefined\"\n) {\n registerGleapChecklist();\n}\n\nclass Gleap {\n static invoked = true;\n static silentCrashReportSent = false;\n initialized = false;\n offlineMode = false;\n disablePageTracking = false;\n disableInAppNotifications = false;\n\n // Global data\n globalData = {\n screenRecordingData: null,\n webReplay: null,\n snapshotPosition: {\n x: 0,\n y: 0,\n },\n };\n\n // Gleap singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new Gleap();\n return this.instance;\n } else {\n return this.instance;\n }\n }\n\n /**\n * Main constructor\n */\n constructor() {\n if (typeof window !== \"undefined\") {\n // Make sure all instances are ready.\n GleapMetaDataManager.getInstance();\n GleapConsoleLogManager.getInstance().start();\n GleapClickListener.getInstance().start();\n GleapAdminManager.getInstance().start();\n }\n }\n\n /**\n * Sets the development environment\n * @param {*} environment\n */\n static setEnvironment(environment) {\n GleapMetaDataManager.getInstance().environment = environment;\n }\n\n /**\n * Set tags to be submitted with each ticket.\n * @param {*} tags\n */\n static setTags(tags) {\n GleapTagManager.getInstance().setTags(tags);\n }\n\n /**\n * Sets a custom URL handler.\n * @param {*} urlHandler\n */\n static setUrlHandler(urlHandler) {\n GleapFrameManager.getInstance().setUrlHandler(urlHandler);\n }\n\n /**\n * Active the Gleap offline mode.\n * @param {*} offlineMode\n */\n static setOfflineMode(offlineMode) {\n const instance = this.getInstance();\n instance.offlineMode = offlineMode;\n }\n\n /**\n * Disable the in-app notifications.\n * @param {*} disableInAppNotifications\n */\n static setDisableInAppNotifications(disableInAppNotifications) {\n const instance = this.getInstance();\n instance.disableInAppNotifications = disableInAppNotifications;\n }\n\n /**\n * Disable the default page tracking.\n * @param {*} disablePageTracking\n */\n static setDisablePageTracking(disablePageTracking) {\n const instance = this.getInstance();\n instance.disablePageTracking = disablePageTracking;\n }\n\n /**\n * Revert console log overwrite.\n */\n static disableConsoleLogOverwrite() {\n GleapConsoleLogManager.getInstance().stop();\n }\n\n /**\n * Set the AI tools.\n * @param {*} tools\n */\n static setAiTools(tools) {\n GleapConfigManager.getInstance().setAiTools(tools);\n GleapFrameManager.getInstance().sendConfigUpdate();\n }\n\n /**\n * Attaches external network logs.\n */\n static attachNetworkLogs(networkLogs) {\n GleapNetworkIntercepter.getInstance().externalRequests =\n gleapDataParser(networkLogs);\n }\n\n /**\n * Add entry to logs.\n * @param {*} message\n * @param {*} logLevel\n * @returns\n */\n static log(message, logLevel = \"INFO\") {\n GleapConsoleLogManager.getInstance().addLog(message, logLevel);\n }\n\n /**\n * Initializes the SDK\n * @param {*} sdkKey\n */\n static initialize(sdkKey) {\n const instance = this.getInstance();\n if (instance.initialized) {\n console.warn(\"Gleap already initialized.\");\n return;\n }\n\n instance.initialized = true;\n\n try {\n fixGleapHeight();\n } catch (error) {}\n\n // Start session\n const sessionInstance = GleapSession.getInstance();\n sessionInstance.sdkKey = sdkKey;\n sessionInstance.setOnSessionReady(() => {\n // Run auto configuration.\n setTimeout(() => {\n GleapConfigManager.getInstance()\n .start()\n .then(() => {\n GleapStreamedEvent.getInstance().start();\n\n runFunctionWhenDomIsReady(() => {\n // Inject the widget buttons\n GleapFeedbackButtonManager.getInstance().injectFeedbackButton();\n\n // Inject the notification container\n GleapNotificationManager.getInstance().injectNotificationUI();\n\n // Check for uncompleted tour.\n Gleap.checkForUncompletedTour();\n\n // Check for URL params.\n Gleap.checkForUrlParams();\n\n // Notify event.\n GleapEventManager.notifyEvent(\"initialized\");\n });\n })\n .catch(function (err) {\n console.warn(\"Failed to initialize Gleap.\");\n });\n }, 0);\n });\n sessionInstance.startSession();\n }\n\n static openURL(url, newTab = false) {\n GleapFrameManager.getInstance().urlHandler(url, newTab);\n }\n\n static checkForUrlParams() {\n if (typeof window === \"undefined\" || !window.location.search) {\n return;\n }\n\n try {\n const urlParams = new URLSearchParams(window.location.search);\n\n const widget = urlParams.get(\"gleap_widget\");\n if (widget && widget.length > 0) {\n Gleap.open();\n }\n\n const conversationFlow = urlParams.get(\"gleap_conversation\");\n if (conversationFlow && conversationFlow.length > 0) {\n if (conversationFlow === \"true\") {\n Gleap.startConversation(true);\n } else {\n Gleap.startBot(conversationFlow, true);\n }\n }\n\n const feedbackFlow = urlParams.get(\"gleap_feedback\");\n if (feedbackFlow && feedbackFlow.length > 0) {\n Gleap.startFeedbackFlow(feedbackFlow);\n }\n const surveyFlow = urlParams.get(\"gleap_survey\");\n const surveyFlowFormat = urlParams.get(\"gleap_survey_format\");\n if (surveyFlow && surveyFlow.length > 0) {\n Gleap.showSurvey(\n surveyFlow,\n surveyFlowFormat === \"survey_full\" ? \"survey_full\" : \"survey\"\n );\n }\n const tourId = urlParams.get(\"gleap_tour\");\n if (tourId && tourId.length > 0) {\n var tourDelay = parseInt(urlParams.get(\"gleap_tour_delay\"));\n if (isNaN(tourDelay)) {\n tourDelay = 2;\n }\n\n setTimeout(() => {\n Gleap.startProductTour(tourId);\n }, tourDelay * 1000);\n }\n } catch (exp) {}\n }\n\n /**\n * Destroy\n * @returns\n */\n static destroy() {\n GleapReplayRecorder.getInstance().stop();\n GleapStreamedEvent.getInstance().stop();\n GleapFrameManager.getInstance().destroy();\n GleapFeedbackButtonManager.getInstance().destroy();\n GleapNotificationManager.getInstance().clearAllNotifications(true);\n GleapSession.getInstance().clearSession(0, false);\n GleapBannerManager.getInstance().removeBannerUI();\n\n // Reset the initialized flag and clear the instance\n this.instance = null;\n }\n\n /**\n * Close any open banner.\n */\n static closeBanner() {\n GleapBannerManager.getInstance().removeBannerUI();\n }\n\n /**\n * Close any open modal.\n */\n static closeModal() {\n GleapModalManager.getInstance().hideModal();\n }\n\n /**\n * Enable or disable Gleap session tracking through cookies.\n * @param {*} useCookies\n */\n static setUseCookies(useCookies) {\n GleapSession.getInstance().useCookies = useCookies;\n }\n\n /**\n * Indentifies the user session\n * @param {string} userId\n * @param {*} userData\n */\n static identify(userId, userData, userHash) {\n return GleapSession.getInstance().identifySession(\n userId,\n gleapDataParser(userData),\n userHash\n );\n }\n\n /**\n * Updates the contact data.\n * @param {*} userData\n */\n static updateContact(userData) {\n return GleapSession.getInstance().updateSession(gleapDataParser(userData));\n }\n\n /**\n * Clears the current contact.\n */\n static clearIdentity() {\n GleapSession.getInstance().clearSession();\n }\n\n /**\n * Returns the current user session\n */\n static getIdentity() {\n return GleapSession.getInstance().getSession();\n }\n\n /**\n * Returns whether the user is identified or not.\n */\n static isUserIdentified() {\n const session = GleapSession.getInstance().session;\n if (session && session.userId && session.userId.length > 0) {\n return true;\n }\n return false;\n }\n\n /**\n * Widget opened status\n * @returns {boolean} isOpened\n */\n static isOpened() {\n return GleapFrameManager.getInstance().isOpened();\n }\n\n /**\n * Hides any open Gleap dialogs.\n */\n static hide() {\n GleapFrameManager.getInstance().hideWidget();\n }\n\n /**\n * Sets the maximum network request count.\n */\n static setMaxNetworkRequests(maxRequests) {\n GleapNetworkIntercepter.getInstance().setMaxRequests(maxRequests);\n }\n\n /**\n * Sets the maximum network request count.\n */\n static startNetworkLogger() {\n GleapNetworkIntercepter.getInstance().start();\n }\n\n /**\n * Sets the network logger blacklist.\n * @param {Array} networkLogBlacklist\n */\n static setNetworkLogsBlacklist(networkLogBlacklist) {\n GleapNetworkIntercepter.getInstance().setBlacklist(networkLogBlacklist);\n }\n\n /**\n * Sets the network logger props to ignore.\n * @param {Array} filters\n */\n static setNetworkLogPropsToIgnore(filters) {\n GleapNetworkIntercepter.getInstance().setFilters(filters);\n }\n\n /**\n * Set custom replay options.\n * @param {*} options\n */\n static setReplayOptions(options) {\n GleapReplayRecorder.getInstance().setOptions(options);\n }\n\n /**\n * Closes any open Gleap dialogs.\n * @param {boolean} resetRoutes\n */\n static close(resetRoutes = false) {\n GleapFrameManager.getInstance().hideWidget(resetRoutes);\n }\n\n /**\n * Starts the Gleap flow.\n */\n static open() {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Track a custom event\n * @param {string} name\n * @param {any} data\n */\n static trackEvent(name, data) {\n GleapStreamedEvent.getInstance().logEvent(name, data);\n }\n\n /**\n * Logs a custom event\n * @param {string} name\n * @param {any} data\n * @deprecated Please use trackEvent instead.\n */\n static logEvent(name, data) {\n GleapStreamedEvent.getInstance().logEvent(name, data);\n }\n\n /**\n * Prefills a specific form field.\n * @param {*} key\n * @param {*} value\n */\n static preFillForm(data) {\n const cleanedData = gleapDataParser(data);\n GleapPreFillManager.getInstance().formPreFill = cleanedData;\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"prefill-form-data\",\n data: cleanedData,\n },\n true\n );\n }\n\n /**\n * Register events for Gleap.\n * @param {*} eventName\n * @param {*} callback\n */\n static on(eventName, callback) {\n GleapEventManager.on(eventName, callback);\n }\n\n /**\n * Enable or disable shortcuts\n * @param {boolean} enabled\n */\n static enableShortcuts(enabled) {\n if (enabled) {\n GleapShortcutListener.getInstance().start();\n } else {\n GleapShortcutListener.getInstance().stop();\n }\n }\n\n /**\n * Show or hide the feedback button\n * @param {*} show\n * @returns\n */\n static showFeedbackButton(show) {\n GleapFeedbackButtonManager.getInstance().toggleFeedbackButton(show);\n }\n\n /**\n * Sets the app version code.\n * @param {string} appVersionCode\n */\n static setAppVersionCode(appVersionCode) {\n GleapMetaDataManager.setAppVersionCode(appVersionCode);\n }\n\n /**\n * Sets the app version code.\n * @param {string} appVersionCode\n */\n static setAppBuildNumber(appBuildNumber) {\n GleapMetaDataManager.setAppBuildNumber(appBuildNumber);\n }\n\n /**\n * Set a custom ws api url.\n * @param {string} wsApiUrl\n */\n static setWSApiUrl(wsApiUrl) {\n GleapSession.getInstance().wsApiUrl = wsApiUrl;\n }\n\n /**\n * Set a custom api url.\n * @param {string} apiUrl\n */\n static setApiUrl(apiUrl) {\n GleapSession.getInstance().apiUrl = apiUrl;\n }\n\n /**\n * Set a custom banner url.\n * @param {string} bannerUrl\n */\n static setBannerUrl(bannerUrl) {\n GleapBannerManager.getInstance().setBannerUrl(bannerUrl);\n }\n\n /**\n * Set a custom modal url.\n * @param {string} modalUrl\n */\n static setModalUrl(modalUrl) {\n GleapModalManager.getInstance().setModalUrl(modalUrl);\n }\n\n /**\n * Set a custom frame api url.\n * @param {string} frameUrl\n */\n static setFrameUrl(frameUrl) {\n GleapFrameManager.getInstance().frameUrl = frameUrl;\n }\n\n /**\n * This method is used to set ticket attributes programmatically.\n * @param {*} key The key of the attribute you want to add.\n * @param {*} value The value to set.\n */\n static setTicketAttribute(key, value) {\n GleapCustomDataManager.getInstance().setTicketAttribute(key, value);\n }\n\n /**\n * This method is used to unset ticket attributes programmatically.\n * @param {*} key The key of the attribute you want to unset.\n */\n static unsetTicketAttribute(key) {\n GleapCustomDataManager.getInstance().unsetTicketAttribute(key);\n }\n\n /**\n * This method is used to clear ticket attributes programmatically.\n */\n static clearTicketAttributes() {\n GleapCustomDataManager.getInstance().clearTicketAttributes();\n }\n\n /**\n * Set custom data that will be attached to the bug-report.\n * @param {*} data\n */\n static attachCustomData(data) {\n GleapCustomDataManager.getInstance().attachCustomData(data);\n }\n\n /**\n * Add one key value pair to the custom data object\n * @param {*} key The key of the custom data entry you want to add.\n * @param {*} value The custom data you want to add.\n */\n static setCustomData(key, value) {\n GleapCustomDataManager.getInstance().setCustomData(key, value);\n }\n\n /**\n * Remove one key value pair of the custom data object\n * @param {*} key The key of the custom data entry you want to remove.\n */\n static removeCustomData(key) {\n GleapCustomDataManager.getInstance().removeCustomData(key);\n }\n\n /**\n * Clear the custom data\n */\n static clearCustomData() {\n GleapCustomDataManager.getInstance().clearCustomData();\n }\n\n /**\n * Play or mute the sound.\n * @param {*} play\n */\n static playSound(play) {\n GleapAudioManager.playSound(play);\n }\n\n /**\n * Show or hide the notification badge count.\n * @param {boolean} showNotificationBadge show or hide the notification badge\n *\n */\n static showTabNotificationBadge(showNotificationBadge) {\n const notificationInstance = GleapNotificationManager.getInstance();\n notificationInstance.showNotificationBadge = showNotificationBadge;\n notificationInstance.updateTabBarNotificationCount();\n }\n\n /**\n * Override the browser language.\n * @param {string} language country code with two letters\n */\n static setLanguage(language) {\n GleapTranslationManager.getInstance().setOverrideLanguage(language);\n\n if (Gleap.getInstance().initialized) {\n setTimeout(() => {\n Gleap.getInstance().softReInitialize();\n\n // Update language for contact.\n Gleap.updateContact({\n lang: language,\n });\n }, 1000);\n }\n }\n\n /**\n * Register custom action\n * @param {*} action\n */\n static registerCustomAction(customAction) {\n GleapCustomActionManager.registerCustomAction(customAction);\n }\n\n /**\n * Triggers a custom action\n * @param {*} actionName\n */\n static triggerCustomAction(name) {\n GleapCustomActionManager.triggerCustomAction(name);\n }\n\n /**\n * Sets a custom color scheme.\n * @param {string} primaryColor\n */\n static setStyles(\n primaryColor,\n headerColor,\n buttonColor,\n backgroundColor = \"#ffffff\",\n borderRadius = 20,\n buttonX = 20,\n buttonY = 20,\n buttonStyle = GleapFeedbackButtonManager.FEEDBACK_BUTTON_BOTTOM_LEFT\n ) {\n runFunctionWhenDomIsReady(() => {\n injectStyledCSS(\n primaryColor,\n headerColor,\n buttonColor,\n borderRadius,\n backgroundColor,\n buttonX,\n buttonY,\n buttonStyle\n );\n });\n }\n\n /**\n * Sends a silent feedback report\n * @param {*} formData\n * @param {*} priority\n * @param {*} excludeData\n */\n static sendSilentCrashReport(\n description = \"\",\n priority = \"MEDIUM\",\n excludeData = {\n screenshot: true,\n replays: true,\n attachments: true,\n }\n ) {\n return Gleap.sendSilentCrashReportWithFormData(\n {\n description,\n },\n priority,\n excludeData\n );\n }\n\n /**\n * Sends a silent feedback report\n * @param {*} formData\n * @param {*} priority\n * @param {*} excludeData\n */\n static sendSilentCrashReportWithFormData(\n formData,\n priority = \"MEDIUM\",\n excludeData = {\n screenshot: true,\n replays: true,\n attachments: true,\n }\n ) {\n if (this.silentCrashReportSent) {\n return;\n }\n\n this.silentCrashReportSent = true;\n setTimeout(() => {\n this.silentCrashReportSent = false;\n }, 10000);\n\n const excludeDataCleaned = excludeData ? gleapDataParser(excludeData) : {};\n const sessionInstance = GleapSession.getInstance();\n if (!sessionInstance.ready) {\n return;\n }\n\n var newFormData = formData ? formData : {};\n if (sessionInstance.session.email) {\n newFormData.reportedBy = sessionInstance.session.email;\n }\n\n const feedback = new GleapFeedback(\n \"CRASH\",\n priority,\n newFormData,\n true,\n excludeDataCleaned\n );\n feedback\n .sendFeedback()\n .then(() => {})\n .catch((error) => {});\n }\n\n /**\n * Shows a survey manually.\n * @param {*} actionType\n * @param {*} format\n */\n static showSurvey(actionType, format = \"survey\") {\n Gleap.startFeedbackFlowWithOptions(\n actionType,\n {\n hideBackButton: true,\n format,\n },\n true\n );\n }\n\n /**\n * Starts a classic feedback form.\n */\n static startClassicForm(formId, showBackButton) {\n Gleap.startFeedbackFlowWithOptions(formId, {\n hideBackButton: !showBackButton,\n });\n }\n\n /**\n * Starts the bug reporting flow.\n */\n static startFeedbackFlow(feedbackFlow, showBackButton) {\n Gleap.startFeedbackFlowWithOptions(feedbackFlow, {\n hideBackButton: !showBackButton,\n });\n }\n\n /**\n * Starts the bug reporting flow.\n */\n static startFeedbackFlowWithOptions(\n feedbackFlow,\n options = {},\n isSurvey = false\n ) {\n const { autostartDrawing, hideBackButton, format } = options;\n const sessionInstance = GleapSession.getInstance();\n if (!sessionInstance.ready) {\n return;\n }\n\n // Initially set scroll position\n Gleap.getInstance().setGlobalDataItem(\"snapshotPosition\", {\n x: window.scrollX,\n y: window.scrollY,\n });\n\n var action = \"start-feedbackflow\";\n if (isSurvey) {\n action = \"start-survey\";\n }\n\n GleapFrameManager.getInstance().setAppMode(isSurvey ? format : \"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: action,\n data: {\n flow: feedbackFlow,\n hideBackButton: hideBackButton,\n format,\n },\n },\n true\n );\n\n if (autostartDrawing) {\n GleapFrameManager.getInstance().showDrawingScreen(\"screenshot\");\n } else {\n GleapFrameManager.getInstance().showWidget();\n }\n }\n\n /**\n * Opens the conversations overview.\n */\n static openConversations(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-conversations\",\n data: {\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens a conversation\n */\n static openConversation(shareToken, showBackButton = true) {\n if (!shareToken) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-conversation\",\n data: {\n shareToken,\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Starts a new conversation\n */\n static startConversation(showBackButton = true) {\n Gleap.startBot(\"\", showBackButton);\n }\n\n /**\n * Starts a new conversation and attaches the bot with the given id.\n */\n static startBot(botId, showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"start-bot\",\n data: {\n botId: botId ? botId : \"\",\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens a help center collection\n */\n static openHelpCenterCollection(collectionId, showBackButton = true) {\n if (!collectionId) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-help-collection\",\n data: {\n collectionId,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens a help article\n */\n static openHelpCenterArticle(articleId, showBackButton = true) {\n if (!articleId) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-help-article\",\n data: {\n articleId,\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens the help center.\n */\n static openHelpCenter(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-helpcenter\",\n data: {\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Search for news articles in the help center\n */\n static searchHelpCenter(term, showBackButton = true) {\n if (!term) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-helpcenter-search\",\n data: {\n term,\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens a news article\n */\n static openNewsArticle(id, showBackButton = true) {\n if (!id) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-news-article\",\n data: {\n id,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Open the checklists overview.\n */\n static openChecklists(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-checklists\",\n data: {},\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Starts a new checklist and opens it.\n */\n static startChecklist(\n outboundId,\n showBackButton = true,\n sharedKey = undefined\n ) {\n if (!outboundId) {\n return false;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"start-checklist\",\n data: {\n outboundId: outboundId,\n hideBackButton: !showBackButton,\n ...(sharedKey ? { sharedKey: sharedKey } : {}),\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n\n return true;\n }\n\n /**\n * Open an existing checklist.\n */\n static openChecklist(checklistId, showBackButton = true) {\n if (!checklistId) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-checklist\",\n data: {\n id: checklistId,\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Gets the full checklist data by validating the outbound ID and fetching the data.\n * @param {string} outboundId - The outbound checklist ID to get data for.\n * @param {string} [sharedKey] - Optional shared key for the checklist.\n * @returns {Promise} A promise that resolves with the full checklist data.\n *\n * Available events for checklist updates (use Gleap.on() to listen):\n * - 'checklist-loaded': Fired when a checklist is initially loaded\n * - 'checklist-update': Fired when checklist data is updated\n * - 'checklist-step-completed': Fired when a step is marked as completed\n * - 'checklist-completed': Fired when the entire checklist is completed\n */\n static getChecklistData(outboundId, sharedKey) {\n if (!outboundId) {\n return Promise.reject(new Error(\"outboundId is required\"));\n }\n\n const networkManager = ChecklistNetworkManager.getInstance();\n\n // First validate the checklist to get the internal ID\n return networkManager\n .validateChecklist(outboundId, sharedKey)\n .then((internalId) => {\n // Then fetch the full checklist data\n return networkManager.fetchChecklist(internalId);\n });\n }\n\n /**\n * Opens the news overview.\n */\n static openNews(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-news\",\n data: {\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens the feature requests overview.\n */\n static openFeatureRequests(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-feature-requests\",\n data: {},\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n isLiveMode() {\n if (this.offlineMode === true) {\n return false;\n }\n\n var hostname = window.location.hostname;\n const isLocalHost =\n [\"localhost\", \"127.0.0.1\", \"0.0.0.0\", \"\", \"::1\"].includes(hostname) ||\n hostname.startsWith(\"192.168.\") ||\n hostname.startsWith(\"10.0.\") ||\n hostname.endsWith(\".local\") ||\n !hostname.includes(\".\");\n return !isLocalHost;\n }\n\n softReInitialize() {\n GleapFrameManager.getInstance().destroy();\n GleapConfigManager.getInstance()\n .start()\n .then(() => {\n // Update the feedback button.\n GleapFeedbackButtonManager.getInstance().refresh();\n\n // Inject the notification container\n GleapNotificationManager.getInstance().injectNotificationUI();\n })\n .catch(function (err) {\n console.warn(\"Failed to initialize Gleap.\");\n });\n }\n\n /**\n * Performs an action.\n * @param {*} action\n */\n performActions(actions) {\n for (let i = 0; i < actions.length; i++) {\n const action = actions[i];\n if (action && action.actionType) {\n if (action.pageFilter && window && window.location) {\n const passed = checkPageFilter(\n window.location.href,\n action.pageFilter,\n action.pageFilterType\n );\n\n if (!passed) {\n continue;\n }\n }\n\n if (action.actionType === \"notification\") {\n if (action?.data?.checklist?.popupType === \"widget\") {\n Gleap.openChecklist(action.data.checklist.id, true);\n } else {\n if (!this.disableInAppNotifications) {\n Gleap.showNotification(action);\n }\n }\n } else if (action.actionType === \"banner\") {\n Gleap.showBanner(action);\n } else if (action.actionType === \"modal\") {\n Gleap.showModal(action);\n } else if (action.actionType === \"tour\") {\n Gleap.startProductTourWithConfig(action.outbound, action.data, false);\n } else {\n Gleap.showSurvey(action.actionType, action.format);\n }\n }\n }\n }\n\n static startProductTour(tourId, checkStartUrl = false) {\n const self = this;\n GleapSession.getInstance()\n .startProductTourConfig(tourId)\n .then((config) => {\n if (\n checkStartUrl &&\n config?.startURL &&\n !window?.location?.href?.includes(config?.baseURL)\n ) {\n window.location.href = `${config.startURL}?gleap_tour=${tourId}&gleap_tour_delay=1`;\n return;\n }\n\n self.startProductTourWithConfig(tourId, config, true);\n })\n .catch((error) => {});\n }\n\n static checkForUncompletedTour() {\n const tourData = GleapProductTours.getInstance().loadUncompletedTour();\n if (tourData) {\n GleapProductTours.getInstance().startWithConfig(\n tourData.tourId,\n tourData.tourData,\n 500\n );\n }\n }\n\n static startProductTourWithConfig(tourId, config, manually = false) {\n GleapProductTours.getInstance().startWithConfig(\n tourId,\n config,\n 0,\n manually\n );\n }\n\n static showBanner(data) {\n try {\n GleapBannerManager.getInstance().showBanner(data);\n } catch (e) {}\n }\n\n static showModal(data) {\n try {\n GleapModalManager.getInstance().showModal(data);\n } catch (e) {}\n }\n\n static showNotification(data) {\n GleapNotificationManager.getInstance().showNotification(data);\n }\n\n /**\n * Sets a global data value\n * @param {*} key\n * @param {*} value\n */\n setGlobalDataItem(key, value) {\n this.globalData[key] = value;\n }\n\n /**\n * Gets a global data value\n * @param {*} key\n * @returns\n */\n getGlobalDataItem(key) {\n return this.globalData[key];\n }\n\n /**\n * Takes the current replay and assigns it to the global data array.\n */\n takeCurrentReplay() {\n const replayData = GleapReplayRecorder.getInstance().getReplayData();\n this.setGlobalDataItem(\"webReplay\", replayData);\n }\n}\n\n// Check for unperformed Gleap actions.\nif (typeof window !== \"undefined\") {\n const GleapActions = window.GleapActions;\n if (GleapActions && GleapActions.length > 0) {\n for (var i = 0; i < GleapActions.length; i++) {\n const GLAction = GleapActions[i];\n if (GLAction && GLAction.e && Gleap[GLAction.e]) {\n Gleap[GLAction.e].apply(Gleap, GLAction.a);\n }\n }\n }\n}\n\nconst handleGleapLink = (href) => {\n try {\n const urlParts = href.split(\"/\");\n const type = urlParts[2];\n if (type === \"article\") {\n const identifier = urlParts[3];\n Gleap.openHelpCenterArticle(identifier, true);\n }\n\n if (type === \"collection\") {\n const identifier = urlParts[3];\n Gleap.openHelpCenterCollection(identifier, true);\n }\n\n if (type === \"flow\") {\n const identifier = urlParts[3];\n Gleap.startFeedbackFlow(identifier, true);\n }\n\n if (type === \"survey\") {\n const identifier = urlParts[3];\n Gleap.showSurvey(identifier);\n }\n\n if (type === \"bot\") {\n const identifier = urlParts[3];\n Gleap.startBot(identifier, true);\n }\n\n if (type === \"news\") {\n const identifier = urlParts[3];\n Gleap.openNewsArticle(identifier, true);\n }\n\n if (type === \"checklist\") {\n const identifier = urlParts[3];\n Gleap.startChecklist(identifier, true, urlParts[4]);\n }\n\n if (type === \"tour\") {\n const identifier = urlParts[3];\n Gleap.startProductTour(identifier);\n }\n } catch (e) {\n console.error(\"Failed to handle Gleap link: \", href);\n }\n};\n\nexport {\n GleapNetworkIntercepter,\n GleapAudioManager,\n GleapNotificationManager,\n GleapBannerManager,\n GleapModalManager,\n GleapPreFillManager,\n GleapShortcutListener,\n GleapMarkerManager,\n GleapTranslationManager,\n GleapReplayRecorder,\n GleapFeedback,\n GleapConsoleLogManager,\n GleapCustomActionManager,\n GleapEventManager,\n GleapCustomDataManager,\n GleapFeedbackButtonManager,\n GleapClickListener,\n GleapSession,\n GleapStreamedEvent,\n GleapConfigManager,\n GleapFrameManager,\n GleapMetaDataManager,\n GleapTagManager,\n GleapProductTours,\n handleGleapLink,\n};\n\nexport default Gleap;\n","/**\n * Gleap Checklist Web Component\n *\n * Displays an interactive checklist fetched from the Gleap API.\n * Allows users to view steps, mark them as done, trigger actions,\n * and automatically updates based on external events. Includes localization support\n * via GleapTranslationManager.\n *\n * Waits for a Gleap session to be available before initializing and\n * reloads when the session changes (via 'session-updated' event).\n *\n * @element gleap-checklist\n *\n * @attr {string} checklistId - The outbound ID of the checklist to display. Required.\n * @attr {boolean} [info=true] - Whether to display the info section (title, description, sender).\n * @attr {boolean} [progressbar=true] - Whether to display the progress bar.\n * @attr {boolean} [dark=false] - Apply dark mode styling.\n * @attr {boolean} [floating=false] - When set to \"true\", shows a small bubble that expands on click.\n *\n * @cssprop --color-bg - Background color.\n * @cssprop --color-font-title - Title text color.\n * @cssprop --color-font-text - Body text color.\n * @cssprop --color-font-light - Lighter text color.\n * @cssprop --color-primary - Primary accent color.\n * @cssprop --color-primary-light - Light primary color shade.\n * @cssprop --color-primary-contrast - Text color for primary buttons.\n * @cssprop --color-border - Border color.\n * @cssprop --color-gray-light - Light gray background/border color.\n * @cssprop --color-gray-lighter - Even lighter gray background.\n * @cssprop --color-gray-dark - Darker gray text/icon color.\n * @cssprop --color-success - Success color (e.g., for completed items).\n * @cssprop --color-success-light - Contrast color for success elements.\n * @cssprop --radius-sm - Small border radius.\n * @cssprop --radius-lg - Large border radius.\n * @cssprop --radius-full - Full (pill) border radius.\n * @cssprop --shadow-sm - Small box shadow.\n * @cssprop --shadow-md - Medium box shadow.\n * @cssprop --animation-duration - Duration for animations (e.g., accordion).\n * @cssprop --animation-timing - Timing function for animations.\n */\nimport ChecklistNetworkManager from \"./ChecklistNetworkManager\";\nimport Gleap, {\n GleapConfigManager,\n GleapSession,\n GleapTranslationManager,\n GleapEventManager,\n} from \"./Gleap\";\n\nexport const registerGleapChecklist = () => {\n if (\n typeof customElements !== \"undefined\" &&\n typeof HTMLElement !== \"undefined\" &&\n typeof window !== \"undefined\"\n ) {\n class GleapChecklist extends HTMLElement {\n /** @private {number} */\n activeStep = -1;\n /** @private {object|null} */\n checklistData = null;\n /** @private {boolean} */\n _isInitialLoad = false;\n /** @private {boolean} */\n _initialActiveSet = false;\n /** @private {boolean} Flag indicating if the component has loaded data at least once. */\n _hasLoaded = false;\n /** @private {boolean} Flag indicating if a Gleap session is currently considered active by the component. */\n _isSessionReady = false;\n\n /** @private {Function} */\n _boundHandleChecklistUpdate = this.handleChecklistUpdate.bind(this);\n /** @private {Function} */\n _boundHandleSessionUpdate = this.handleSessionUpdate.bind(this);\n\n constructor() {\n super();\n this.attachShadow({ mode: \"open\" });\n // Ensure NetworkManager instance is created only if Gleap is available\n try {\n if (\n typeof GleapSession !== \"undefined\" &&\n typeof ChecklistNetworkManager !== \"undefined\"\n ) {\n this._networkManager = ChecklistNetworkManager.getInstance();\n } else {\n this._networkManager = null;\n }\n } catch (e) {\n this._networkManager = null;\n }\n // Bind click handlers for floating mode.\n this._boundFloatingLauncherClick =\n this.handleFloatingLauncherClick.bind(this);\n this._boundFloatingCloseClick =\n this.handleFloatingCloseClick.bind(this);\n this._floatingHideTimeout = null;\n }\n\n // --- Observed Attributes ---\n static get observedAttributes() {\n return [\n \"checklistId\",\n \"info\",\n \"progressbar\",\n \"dark\",\n \"floating\",\n \"sharedKey\",\n ];\n }\n\n // --- Lifecycle Callbacks ---\n connectedCallback() {\n window.addEventListener(\n \"checkListUpdate\",\n this._boundHandleChecklistUpdate\n );\n window.addEventListener(\n \"session-updated\",\n this._boundHandleSessionUpdate\n );\n window.addEventListener(\n \"resize\",\n (this._boundResizeHandler = this.handleResize.bind(this))\n );\n this._checkSessionAndLoad();\n }\n\n disconnectedCallback() {\n window.removeEventListener(\n \"checkListUpdate\",\n this._boundHandleChecklistUpdate\n );\n window.removeEventListener(\n \"session-updated\",\n this._boundHandleSessionUpdate\n );\n window.removeEventListener(\"resize\", this._boundResizeHandler);\n this.removeFloatingClickListeners();\n if (this._floatingHideTimeout) {\n clearTimeout(this._floatingHideTimeout);\n this._floatingHideTimeout = null;\n }\n this.checklistData = null;\n this.activeStep = -1;\n this._hasLoaded = false;\n this._isSessionReady = false;\n this._initialActiveSet = false;\n this.renderResponse();\n }\n\n handleResize() {\n this.updateActiveTaskMaxHeight();\n }\n\n attributeChangedCallback(name, oldValue, newValue) {\n if (oldValue !== newValue) {\n if (name === \"checklistId\" && this._isSessionReady) {\n this.loadChecklist();\n } else if (name !== \"checklistId\" && this._hasLoaded) {\n if (this.checklistData) {\n this.renderChecklist(this.checklistData);\n }\n }\n }\n }\n\n // --- Session Handling ---\n _checkSessionAndLoad() {\n const gleapSessionInstance = this._getGleapSessionInstance();\n const hasChecklistId = this.getAttribute(\"checklistId\");\n\n if (gleapSessionInstance.ready && hasChecklistId) {\n this._isSessionReady = true;\n this._networkManager = ChecklistNetworkManager.getInstance();\n this.loadChecklist();\n } else {\n this._isSessionReady = false;\n this._hasLoaded = false;\n this.checklistData = null;\n this.activeStep = -1;\n this._initialActiveSet = false;\n this.renderResponse();\n }\n }\n\n handleSessionUpdate() {\n this._checkSessionAndLoad();\n }\n\n _getGleapSessionInstance() {\n try {\n return typeof GleapSession !== \"undefined\"\n ? GleapSession.getInstance()\n : null;\n } catch (e) {\n return null;\n }\n }\n\n // --- Getters for Configuration ---\n get infoEnabled() {\n const attr = this.getAttribute(\"info\");\n return attr === null || attr.toLowerCase() !== \"false\";\n }\n\n get progressbarEnabled() {\n const attr = this.getAttribute(\"progressbar\");\n return attr === null || attr.toLowerCase() !== \"false\";\n }\n\n get floatingEnabled() {\n return this.getAttribute(\"floating\") === \"true\";\n }\n\n // --- Translation Helpers ---\n _translate(key, defaultValue = \"\") {\n return GleapTranslationManager.translateText(key) || defaultValue;\n }\n\n _translateWithVars(key, vars, defaultValue = \"\") {\n return (\n GleapTranslationManager.translateTextWithVars(key, vars) ||\n defaultValue\n );\n }\n\n // --- SVG Icons ---\n getCheckIcon() {\n return `\n \n `;\n }\n\n // --- Data Loading and Handling ---\n loadChecklist() {\n if (!this._isSessionReady || !this._networkManager) {\n return;\n }\n const checklistId = this.getAttribute(\"checklistId\");\n if (checklistId) {\n this.activeStep = -1;\n this._initialActiveSet = false;\n this.validateChecklist(checklistId);\n } else {\n this.renderResponse();\n this.checklistData = null;\n this._hasLoaded = false;\n }\n }\n\n getQueryParams() {\n const gleapSessionInstance = this._getGleapSessionInstance();\n if (!gleapSessionInstance?.session) {\n return \"\";\n }\n const session = gleapSessionInstance.session;\n let lang = \"en\";\n try {\n if (typeof GleapTranslationManager !== \"undefined\") {\n lang =\n GleapTranslationManager.getInstance().getActiveLanguage() || \"en\";\n }\n } catch (e) {}\n return `gleapId=${session.gleapId || \"\"}&gleapHash=${\n session.gleapHash || \"\"\n }&lang=${lang}`;\n }\n\n makeRequest(method, url, data, callback) {\n const gleapSessionInstance = this._getGleapSessionInstance();\n if (!gleapSessionInstance?.session) {\n const mockXhr = {\n readyState: 4,\n status: 0,\n responseText: \"Session unavailable\",\n _isMock: true,\n };\n callback(mockXhr);\n return;\n }\n const xhr = new XMLHttpRequest();\n xhr.open(method, url);\n try {\n gleapSessionInstance.injectSession(xhr);\n } catch (e) {}\n if (data) {\n xhr.setRequestHeader(\n \"Content-Type\",\n \"application/json;charset=UTF-8\"\n );\n }\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n callback(xhr);\n }\n };\n xhr.onerror = () => {\n callback(xhr);\n };\n xhr.send(data ? JSON.stringify(data) : null);\n }\n\n validateChecklist(outboundId) {\n if (!this._isSessionReady || !this._networkManager) {\n return;\n }\n this.checklistData = null;\n this._hasLoaded = false;\n this.renderResponse();\n const sharedKey = this.getAttribute(\"sharedKey\");\n\n this._networkManager\n .validateChecklist(outboundId, sharedKey)\n .then((internalId) => {\n if (!this.isConnected || !this._isSessionReady || !internalId) {\n return;\n }\n this.fetchChecklist(internalId);\n })\n .catch((error) => {\n this.renderResponse();\n this.checklistData = null;\n this._hasLoaded = false;\n });\n }\n\n fetchChecklist(checklistId) {\n if (!this._isSessionReady || !this._networkManager) {\n return;\n }\n this._isInitialLoad = !this._hasLoaded;\n this._networkManager\n .fetchChecklist(checklistId)\n .then((data) => {\n if (!this.isConnected || !this._isSessionReady || !data) {\n this._hasLoaded = false;\n this.checklistData = null;\n this._checkSessionAndLoad();\n return;\n }\n this.checklistData = data;\n this._hasLoaded = true;\n if (data.status === \"done\") {\n this.renderResponse();\n return;\n }\n if (this._isInitialLoad && !this._initialActiveSet) {\n const steps = data.outbound?.config?.steps || [];\n const completedSteps = data.completedSteps || [];\n const firstIncompleteIndex = steps.findIndex(\n (step) => !completedSteps.includes(step.id)\n );\n this.activeStep =\n firstIncompleteIndex >= 0 ? firstIncompleteIndex : -1;\n if (this.activeStep !== -1) {\n this._initialActiveSet = true;\n }\n }\n this.renderChecklist(this.checklistData);\n \n // Notify external listeners about the initial checklist load\n GleapEventManager.notifyEvent(\"checklist-loaded\", {\n checklistId: this.checklistData.id,\n outboundId: this.checklistData.outbound?.id,\n completedSteps: this.checklistData.completedSteps,\n status: this.checklistData.status,\n data: this.checklistData\n });\n })\n .catch((error) => {\n this.renderResponse();\n this.checklistData = null;\n this._hasLoaded = false;\n });\n }\n\n updateChecklist(id, data) {\n const gleapSessionInstance = this._getGleapSessionInstance();\n if (!gleapSessionInstance?.session) {\n return;\n }\n const apiUrl = gleapSessionInstance.apiUrl;\n if (!apiUrl) {\n return;\n }\n const session = gleapSessionInstance.session;\n const gleapId = session?.gleapId ?? \"\";\n const gleapHash = session?.gleapHash ?? \"\";\n let lang = \"en\";\n try {\n if (typeof GleapTranslationManager !== \"undefined\") {\n lang =\n GleapTranslationManager.getInstance().getActiveLanguage() || \"en\";\n }\n } catch (e) {}\n let url = `${apiUrl}/outbound/checklists/${id}`;\n if (data.checkedStep) {\n url += `/increment/${data.checkedStep}`;\n }\n url += `?gleapId=${gleapId}&gleapHash=${gleapHash}&lang=${lang}`;\n this.makeRequest(\"PUT\", url, data, (xhr) => {\n if (xhr._isMock) return;\n if (!(xhr.status === 200 || xhr.status === 204)) {\n // Update failed\n }\n });\n }\n\n // --- External Update Handling ---\n handleChecklistUpdate(event) {\n if (!this._hasLoaded || !this.checklistData) {\n return;\n }\n const updateData = event.detail;\n if (!updateData || updateData.id !== this.checklistData.id) {\n return;\n }\n const previousCompletedSteps = [\n ...(this.checklistData.completedSteps || []),\n ];\n let dataChanged = false;\n let activeStepCompleted = false;\n const currentlyActiveStepIndex = this.activeStep;\n if (\n updateData.completedSteps &&\n JSON.stringify(updateData.completedSteps) !==\n JSON.stringify(previousCompletedSteps)\n ) {\n this.checklistData.completedSteps = [...updateData.completedSteps];\n dataChanged = true;\n if (currentlyActiveStepIndex !== -1) {\n const activeStepId =\n this.checklistData.outbound?.config?.steps?.[\n currentlyActiveStepIndex\n ]?.id;\n if (\n activeStepId &&\n this.checklistData.completedSteps.includes(activeStepId) &&\n !previousCompletedSteps.includes(activeStepId)\n ) {\n activeStepCompleted = true;\n }\n }\n }\n if (\n updateData.status &&\n updateData.status !== this.checklistData.status\n ) {\n this.checklistData.status = updateData.status;\n dataChanged = true;\n }\n if (activeStepCompleted) {\n const steps = this.checklistData.outbound?.config?.steps || [];\n let nextActiveStep = -1;\n for (let i = currentlyActiveStepIndex + 1; i < steps.length; i++) {\n if (!this.checklistData.completedSteps.includes(steps[i].id)) {\n nextActiveStep = i;\n break;\n }\n }\n if (this.activeStep !== nextActiveStep) {\n this.setActiveStep(nextActiveStep);\n }\n dataChanged = true;\n }\n if (dataChanged) {\n this.renderChecklist(this.checklistData);\n \n // Notify external listeners about the checklist update\n GleapEventManager.notifyEvent(\"checklist-update\", {\n checklistId: this.checklistData.id,\n outboundId: this.checklistData.outbound?.id,\n completedSteps: this.checklistData.completedSteps,\n status: this.checklistData.status,\n data: this.checklistData\n });\n }\n }\n\n // --- Floating (Click-based) Listeners ---\n handleFloatingLauncherClick(event) {\n event.stopPropagation();\n\n if (this.checklistData.status === \"done\") {\n return;\n }\n\n const tasks = this.shadowRoot.querySelector(\".checklist-tasks\");\n if (tasks) {\n tasks.style.display =\n tasks.style.display === \"block\" ? \"none\" : \"block\";\n }\n }\n\n handleFloatingCloseClick(event) {\n event.stopPropagation();\n const tasks = this.shadowRoot.querySelector(\".checklist-tasks\");\n if (tasks) {\n tasks.style.display = \"none\";\n }\n }\n\n addFloatingClickListeners() {\n const launcher = this.shadowRoot.querySelector(\n \".checklist-floating-launcher\"\n );\n if (launcher) {\n launcher.addEventListener(\"click\", this._boundFloatingLauncherClick);\n }\n const header = this.shadowRoot.querySelector(\n \".checklist-floating-header\"\n );\n if (header) {\n header.addEventListener(\"click\", this._boundFloatingCloseClick);\n }\n }\n\n removeFloatingClickListeners() {\n const launcher = this.shadowRoot.querySelector(\n \".checklist-floating-launcher\"\n );\n if (launcher) {\n launcher.removeEventListener(\n \"click\",\n this._boundFloatingLauncherClick\n );\n }\n const header = this.shadowRoot.querySelector(\n \".checklist-floating-header\"\n );\n if (header) {\n header.removeEventListener(\"click\", this._boundFloatingCloseClick);\n }\n }\n\n // --- Rendering Logic ---\n renderResponse() {\n this.shadowRoot.innerHTML = \"\";\n }\n\n /**\n * Renders the floating launcher. When called with the default class (\"checklist-floating\")\n * it shows a chevron icon; when called with \"checklist-floating-header\" it shows a close icon.\n */\n renderFloatingLauncher(\n outbound,\n className = \"checklist-floating\",\n renderDoneState = false\n ) {\n const steps = outbound.config?.steps || [];\n const completedSteps = this.checklistData?.completedSteps || [];\n let progress = 0;\n if (this.progressbarEnabled && steps.length > 0) {\n const totalSteps = steps.length;\n const doneSteps = completedSteps.length;\n progress = totalSteps > 0 ? (doneSteps / totalSteps) * 100 : 0;\n }\n\n // Determine the next incomplete step\n const nextIncompleteStep = steps.find(\n (step) => !completedSteps.includes(step.id)\n );\n let titleText =\n steps.length > 0\n ? nextIncompleteStep\n ? nextIncompleteStep.title ||\n this._translateWithVars(\n \"stepDefaultTitle\",\n { index: steps.indexOf(nextIncompleteStep) + 1 },\n `Step ${steps.indexOf(nextIncompleteStep) + 1}`\n )\n : \"\"\n : outbound.subject || \"\";\n\n let subtitleText =\n steps.length > 0\n ? nextIncompleteStep\n ? nextIncompleteStep.description || \"\"\n : \"\"\n : outbound.message || \"\";\n\n if (renderDoneState) {\n titleText = outbound.config?.successTitle || \"\";\n subtitleText = outbound.config?.successMessage || \"\";\n progress = 100;\n }\n\n const circumference = 2 * Math.PI * 7;\n const computedOffset = circumference - (progress / 100) * circumference;\n\n const isHeader = className === \"checklist-floating-header\";\n const icon = isHeader\n ? `\n \n \n `\n : `\n \n `;\n\n return `\n
\n
\n
\n \n \n \n \n
\n
${titleText}
\n ${\n renderDoneState\n ? \"\"\n : `${icon}`\n }\n
\n
${subtitleText}
\n
\n `;\n }\n\n renderInfoSection(outbound) {\n if (!this.infoEnabled || !outbound) return \"\";\n const subject =\n outbound.subject ||\n this._translate(\"checklistDefaultTitle\", \"Checklist\");\n const message = outbound.message || \"\";\n let senderHtml = \"\";\n if (outbound.sender?.profileImageUrl) {\n senderHtml = `\n
\n \"${\n\n ${outbound.sender.firstName || \"\"}\n
`;\n }\n return `\n
\n ${\n subject\n ? `
${subject}
`\n : \"\"\n }\n ${\n message\n ? `
${message}
`\n : \"\"\n }\n ${senderHtml}\n
`;\n }\n\n renderProgressSection(steps = [], completedSteps = []) {\n if (!this.progressbarEnabled || !steps.length) return \"\";\n const totalSteps = steps.length;\n const doneSteps = completedSteps.length;\n const progress = totalSteps > 0 ? (doneSteps / totalSteps) * 100 : 0;\n let duration = 0;\n steps.forEach((step) => {\n if (!completedSteps.includes(step.id) && step.duration > 0) {\n duration += step.duration;\n }\n });\n const progressLabel = this._translateWithVars(\n \"taskProgress\",\n { a: doneSteps, b: totalSteps },\n `${doneSteps} of ${totalSteps} done`\n );\n const durationLabel =\n duration > 0\n ? this._translateWithVars(\n \"aboutMinutes\",\n { a: duration },\n `About ${duration} min left`\n )\n : \"\";\n return `\n
\n
${progressLabel}
\n ${\n durationLabel\n ? `
${durationLabel}
`\n : \"\"\n }\n
\n
\n
\n
`;\n }\n\n renderTasks(steps = [], completedSteps = []) {\n if (!steps || steps.length === 0)\n return `

${this._translate(\n \"noStepsDefined\",\n \"No steps defined.\"\n )}

`;\n return steps\n .map((step, index) => {\n const isTaskDone = completedSteps.includes(step.id);\n const isActive = this.activeStep === index;\n const badge = isTaskDone\n ? `${this.getCheckIcon()}`\n : `${\n index + 1\n }`;\n const stepTitle =\n step.title ||\n this._translateWithVars(\n \"stepDefaultTitle\",\n { index: index + 1 },\n `Step ${index + 1}`\n );\n const stepDescription = step.description || \"\";\n const actionButtonText =\n step.actionTitle ||\n this._translate(\"actionDefaultTitle\", \"Action\");\n const actionHtml =\n step.action && step.action !== \"none\"\n ? `
\n \n
`\n : \"\";\n const markDoneLabel = this._translate(\"markAsDone\", \"Mark as done\");\n const markDoneHtml =\n step.allowMarkDone && !isTaskDone\n ? `
\n ${this.getCheckIcon()}\n
${markDoneLabel}
\n
`\n : \"\";\n const taskClasses = [\n \"checklist-task\",\n isTaskDone ? \"checklist-task--done\" : \"\",\n isActive ? \"checklist-task--active\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n return `\n
\n
\n ${badge}\n
${stepTitle}
\n \n \n \n \n \n
\n
\n
\n ${\n stepDescription\n ? `
${stepDescription}
`\n : \"\"\n }\n ${actionHtml}\n ${markDoneHtml}\n
\n
\n
`;\n })\n .join(\"\");\n }\n\n renderChecklist(data) {\n if (!this._hasLoaded || !data || !data.outbound) {\n this._checkSessionAndLoad();\n return;\n }\n const { outbound } = data;\n const steps = outbound.config?.steps || [];\n const completedSteps = data.completedSteps || [];\n const isDone =\n data.status === \"done\" ||\n (steps.length > 0 && completedSteps.length >= steps.length);\n let content = \"\";\n if (isDone) {\n const successTitle = outbound.config?.successTitle || \"\";\n const successMessage = outbound.config?.successMessage || \"\";\n if (this.floatingEnabled) {\n content = this.renderFloatingLauncher(\n outbound,\n \"checklist-floating-launcher\",\n true\n );\n } else {\n content = `\n
\n
\n ${this.getCheckIcon()}\n
\n
${successTitle}
\n
${successMessage}
\n
`;\n }\n if (this.activeStep !== -1) this.activeStep = -1;\n } else {\n content = `\n
\n ${!this.floatingEnabled ? this.renderInfoSection(outbound) : \"\"}\n ${\n !this.floatingEnabled\n ? this.renderProgressSection(steps, completedSteps)\n : \"\"\n }\n ${\n this.floatingEnabled\n ? this.renderFloatingLauncher(outbound)\n : \"\"\n }\n
\n ${\n this.floatingEnabled\n ? this.renderFloatingLauncher(\n outbound,\n \"checklist-floating-header\"\n )\n : \"\"\n }\n ${this.renderTasks(steps, completedSteps)}\n
\n
`;\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const primaryColor = flowConfig.color ? flowConfig.color : \"#485BFF\";\n\n const styles = `\n \n `;\n this.shadowRoot.innerHTML = styles + content;\n this.addTaskEventListeners();\n if (this.floatingEnabled) {\n this.addFloatingClickListeners();\n }\n if (this.activeStep !== -1) {\n this.toggleTask(this.activeStep, true);\n }\n }\n\n updateActiveTaskMaxHeight() {\n if (this.activeStep !== -1) {\n const taskBodyInner = this.shadowRoot.querySelector(\n `.checklist-task[data-task-index=\"${this.activeStep}\"] .checklist-task-body-inner`\n );\n const container = this.shadowRoot.querySelector(\n `.checklist-task[data-task-index=\"${this.activeStep}\"] .checklist-task-body`\n );\n if (taskBodyInner && container) {\n const height = taskBodyInner.offsetHeight;\n container.style.setProperty(\n \"--task-body-active-height\",\n `${height}px`\n );\n }\n }\n }\n\n // --- Event Listener Setup ---\n addTaskEventListeners() {\n const tasks = this.shadowRoot.querySelectorAll(\".checklist-task\");\n tasks.forEach((task) => {\n const header = task.querySelector(\".checklist-task-header\");\n const index = parseInt(task.getAttribute(\"data-task-index\"), 10);\n if (header) {\n header.addEventListener(\"click\", () => {\n const newActiveStep = this.activeStep === index ? -1 : index;\n this.setActiveStep(newActiveStep);\n });\n }\n const markDoneBtn = task.querySelector(\n \".checklist-task-body-markdone\"\n );\n if (markDoneBtn) {\n markDoneBtn.addEventListener(\"click\", (e) => {\n e.stopPropagation();\n if (!this.checklistData?.outbound?.config?.steps) return;\n const step = this.checklistData.outbound.config.steps[index];\n if (!step) return;\n const previouslyActiveStep = this.activeStep;\n if (!this.checklistData.completedSteps)\n this.checklistData.completedSteps = [];\n if (!this.checklistData.completedSteps.includes(step.id)) {\n this.checklistData.completedSteps.push(step.id);\n \n // Notify external listeners about the step completion\n GleapEventManager.notifyEvent(\"checklist-step-completed\", {\n checklistId: this.checklistData.id,\n outboundId: this.checklistData.outbound?.id,\n stepId: step.id,\n stepIndex: index,\n step: step,\n completedSteps: this.checklistData.completedSteps,\n status: this.checklistData.status,\n data: this.checklistData\n });\n const allSteps = this.checklistData.outbound.config.steps;\n let nextActiveStep = -1;\n if (previouslyActiveStep === index) {\n for (let i = index + 1; i < allSteps.length; i++) {\n if (\n !this.checklistData.completedSteps.includes(\n allSteps[i].id\n )\n ) {\n nextActiveStep = i;\n break;\n }\n }\n this.setActiveStep(nextActiveStep);\n }\n // Preserve the state of the floating modal.\n setTimeout(() => {\n let isModalOpen = false;\n if (this.floatingEnabled) {\n const tasksModal =\n this.shadowRoot.querySelector(\".checklist-tasks\");\n isModalOpen =\n tasksModal && tasksModal.style.display === \"block\";\n }\n this.renderChecklist(this.checklistData);\n if (this.floatingEnabled && isModalOpen) {\n const tasksModal =\n this.shadowRoot.querySelector(\".checklist-tasks\");\n if (tasksModal) tasksModal.style.display = \"block\";\n }\n }, 300);\n const updateData = { checkedStep: step.id };\n if (\n allSteps.length > 0 &&\n this.checklistData.completedSteps.length >= allSteps.length\n ) {\n this.checklistData.status = \"done\";\n updateData.status = \"done\";\n \n // Notify external listeners about the checklist completion\n GleapEventManager.notifyEvent(\"checklist-completed\", {\n checklistId: this.checklistData.id,\n outboundId: this.checklistData.outbound?.id,\n completedSteps: this.checklistData.completedSteps,\n status: this.checklistData.status,\n data: this.checklistData\n });\n }\n this.updateChecklist(this.checklistData.id, updateData);\n }\n });\n }\n const actionBtn = task.querySelector(\n \".checklist-task-body-action .action-button\"\n );\n if (actionBtn) {\n actionBtn.addEventListener(\"click\", (e) => {\n e.stopPropagation();\n if (\n !this.checklistData?.outbound?.config?.steps ||\n typeof Gleap === \"undefined\"\n )\n return;\n const step = this.checklistData.outbound.config.steps[index];\n if (!step || !step.action || step.action === \"none\") return;\n try {\n if (step.action === \"BOT\") Gleap.startBot(step.botId);\n else if (step.action === \"CUSTOM_ACTION\")\n Gleap.triggerCustomAction(step.actionBody);\n else if (step.action === \"REDIRECT_URL\") {\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n Gleap.openURL(step.actionBody, !!step.actionOpenInNewTab);\n } else if (step.action === \"FEEDBACK_FLOW\")\n Gleap.startFeedbackFlow(step.formId);\n else if (step.action === \"NEWS_ARTICLE\")\n Gleap.openNewsArticle(step.articleId);\n else if (step.action === \"HELP_ARTICLE\")\n Gleap.openHelpCenterArticle(step.articleId);\n else if (step.action === \"CHECKLIST\")\n Gleap.startChecklist(step.outboundId, true, step?.sharedKey);\n } catch (gleapError) {}\n });\n }\n });\n }\n\n // --- Animation and State Management ---\n setActiveStep(index) {\n const previousActiveStep = this.activeStep;\n this.activeStep = index;\n const tasksToToggle = [];\n if (\n previousActiveStep !== -1 &&\n previousActiveStep !== this.activeStep\n ) {\n tasksToToggle.push({ index: previousActiveStep, open: false });\n }\n if (this.activeStep !== -1 && this.activeStep !== previousActiveStep) {\n tasksToToggle.push({ index: this.activeStep, open: true });\n }\n tasksToToggle.forEach(({ index, open }) => {\n this.toggleTask(index, open);\n });\n }\n\n toggleTask(index, forceOpen = null) {\n const taskElement = this.shadowRoot.querySelector(\n `.checklist-task[data-task-index=\"${index}\"]`\n );\n if (!taskElement) return;\n const header = taskElement.querySelector(\".checklist-task-header\");\n if (!header) return;\n const isOpen = taskElement.classList.contains(\"checklist-task--active\");\n const shouldOpen = forceOpen !== null ? forceOpen : !isOpen;\n if (shouldOpen && !isOpen) {\n taskElement.classList.add(\"checklist-task--active\");\n header.setAttribute(\"aria-expanded\", \"true\");\n const taskBodyInner = taskElement.querySelector(\n \".checklist-task-body-inner\"\n );\n if (taskBodyInner) {\n const height = taskBodyInner.offsetHeight;\n const taskBody = taskElement.querySelector(\".checklist-task-body\");\n if (taskBody) {\n taskBody.style.setProperty(\n \"--task-body-active-height\",\n `${height}px`\n );\n }\n }\n } else if (!shouldOpen && isOpen) {\n taskElement.classList.remove(\"checklist-task--active\");\n header.setAttribute(\"aria-expanded\", \"false\");\n }\n }\n }\n\n if (\n typeof customElements !== \"undefined\" &&\n !customElements.get(\"gleap-checklist\")\n ) {\n customElements.define(\"gleap-checklist\", GleapChecklist);\n }\n }\n};\n","import Gleap from \"./Gleap\";\n\nexport default Gleap;\n"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","GleapFeedbackButtonManager","_classCallCheck","_defineProperty","value","this","instance","feedbackButton","remove","buttonHidden","lastButtonIcon","injectedFeedbackButton","show","getInstance","updateFeedbackButtonState","GleapNotificationManager","updateContainerStyle","frameManager","GleapFrameManager","isOpened","hideWidget","setAppMode","showWidget","_this","elem","document","createElement","addEventListener","feedbackButtonPressed","body","appendChild","count","notificationBadge","querySelector","notificationHiddenClass","classList","innerText","add","updateFeedbackButtonText","injectFeedbackButton","flowConfig","GleapConfigManager","getFlowConfig","feedbackButtonPosition","FEEDBACK_BUTTON_CLASSIC","FEEDBACK_BUTTON_CLASSIC_BOTTOM","FEEDBACK_BUTTON_CLASSIC_LEFT","widgetButtonText","buttonIcon","buttonLogo","concat","loadIcon","className","setAttribute","GleapTranslationManager","isRTLLayout","innerHTML","hideButton","FEEDBACK_BUTTON_NONE","FEEDBACK_BUTTON_BOTTOM_LEFT","appMode","hideForGuests","GleapSession","isUser","calculateShadeColor","col","amt","replace","length","_col$match2","_slicedToArray","match","r","g","b","_ref","parseInt","Math","max","min","toString","rr","gg","bb","calculateContrast","hex","substr","name","color","GleapNetworkIntercepter","Date","now","loadAllResources","contentType","toLocaleLowerCase","supportedContentTypes","i","includes","requests","JSON","parse","stringify","values","externalRequests","filters","request","headers","j","payload","payloadObj","e","response","responseText","data","window","performance","resources","getEntriesByType","resource","indexOf","initiatorType","find","url","push","type","date","startTimestamp","startTime","duration","round","exp","blacklist","defaultBlacklist","filter","maxRequests","stopped","keys","keysToRemove","slice","bbRequestId","startDate","getTime","text","size","TextEncoder","encode","encodeURI","s","split","Blob","getTextContentSize","undefined","TextDecoder","_typeof","ArrayBuffer","isView","decode","payloadText","cleanupPayload","cleanupContentSize","initialized","self","interceptNetworkRequests","onFetch","params","fromEntries","entries","method","preparePayload","cleanRequests","onFetchLoad","req","status","statusText","calcRequestTime","isContentTypeSupported","then","err","onFetchFailed","onOpen","args","onSend","requestHeaders","onError","currentTarget","onLoad","target","responseType","callback","originalFetch","open","XMLHttpRequest","send","gleapSetRequestHeader","setRequestHeader","header","requestId","arguments","bind","apply","fetch","clone","blob","Promise","resolve","reject","fr","FileReader","onload","evt","result","onerror","readAsText","resizeImage","base64Str","maxWidth","maxHeight","isJPEG","img","Image","src","canvas","MAX_WIDTH","MAX_HEIGHT","width","height","getContext","drawImage","toDataURL","isMobile","test","navigator","userAgent","gleapDataParser","String","truncateString","str","num","removeSubDomain","v","parts","is2ndLevelDomain","secondLevel","join","loadFromGleapCache","cachedData","localStorage","getItem","saveToGleapCache","k","setItem","removeItem","runFunctionWhenDomIsReady","readyState","RequestStatus","ChecklistNetworkManager","Map","validationCache","clear","fetchCache","validationRequests","fetchRequests","gleapSessionInstance","session","lang","getActiveLanguage","gleapId","gleapHash","apiUrl","xhr","injectSession","onreadystatechange","responseData","error","outboundId","sharedKey","cacheKey","_createCacheKey","cachedResult","internalId","has","_getApiUrl","Error","set","_getQueryParams","requestPromise","_makeRequest","id","_this2","floor","createCoords","x","y","oppositeSideMap","left","right","bottom","top","oppositeAlignmentMap","start","end","clamp","param","placement","axis","getAxisLength","getAlignmentAxis","alignment","getOppositePlacement","side","padding","expandPaddingObject","rect","computeCoordsFromPlacement","rtl","reference","floating","sideAxis","alignmentAxis","alignLength","isVertical","commonX","commonY","commonAlign","coords","async","detectOverflow","state","options","_await$platform$isEle","platform","rects","elements","strategy","boundary","rootBoundary","elementContext","altBoundary","paddingObject","element","clippingClientRect","getClippingRect","isElement","contextElement","getDocumentElement","offsetParent","getOffsetParent","offsetScale","getScale","elementClientRect","convertOffsetParentRelativeRectToViewportRelativeRect","offset","fn","_middlewareData$offse","_middlewareData$arrow","middlewareData","diffCoords","isRTL","mainAxisMulti","crossAxisMulti","rawValue","mainAxis","crossAxis","convertValueToCoords","arrow","alignmentOffset","getNodeName","node","isNode","nodeName","toLowerCase","getWindow","_node$ownerDocument","ownerDocument","defaultView","documentElement","Node","Element","isHTMLElement","HTMLElement","isShadowRoot","ShadowRoot","isOverflowElement","overflow","overflowX","overflowY","display","isTableElement","isContainingBlock","webkit","isWebKit","css","transform","perspective","containerType","backdropFilter","some","willChange","contain","CSS","supports","isLastTraversableNode","getComputedStyle","getNodeScroll","scrollLeft","scrollTop","pageXOffset","pageYOffset","getParentNode","assignedSlot","parentNode","host","getNearestOverflowAncestor","getOverflowAncestors","list","traverseIframes","_node$ownerDocument2","scrollableAncestor","isBody","win","visualViewport","frameElement","getCssDimensions","parseFloat","hasOffset","offsetWidth","offsetHeight","shouldFallback","$","unwrapElement","domElement","getBoundingClientRect","Number","isFinite","noOffsets","getVisualOffsets","offsetLeft","offsetTop","includeScale","isFixedStrategy","clientRect","scale","visualOffsets","isFixed","floatingOffsetParent","shouldAddVisualOffsets","offsetWin","currentWin","currentIFrame","iframeScale","iframeRect","clientLeft","paddingLeft","clientTop","paddingTop","topLayerSelectors","isTopLayer","selector","matches","getWindowScrollBarX","getClientRectFromClippingAncestor","clippingAncestor","html","clientWidth","clientHeight","visualViewportBased","getViewportRect","scroll","scrollWidth","scrollHeight","direction","getDocumentRect","getInnerBoundingClientRect","hasFixedPositionAncestor","stopNode","position","getRectRelativeToOffsetParent","isOffsetParentAnElement","offsets","offsetRect","getTrueOffsetParent","polyfill","currentNode","getContainingBlock","topLayer","elementClippingAncestors","cache","el","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","ancestor","getClippingElementAncestors","_c","clippingAncestors","firstClippingAncestor","clippingRect","reduce","accRect","getElementRects","getOffsetParentFn","getDimensionsFn","getDimensions","getClientRects","Array","from","autoUpdate","update","ancestorScroll","ancestorResize","elementResize","ResizeObserver","layoutShift","IntersectionObserver","animationFrame","referenceEl","ancestors","forEach","passive","cleanupIo","onMove","timeoutId","io","root","cleanup","_io","clearTimeout","disconnect","refresh","skip","threshold","rootMargin","isFirstUpdate","handleObserve","ratio","intersectionRatio","setTimeout","observe","observeMove","frameId","reobserveFrame","resizeObserver","firstEntry","unobserve","cancelAnimationFrame","requestAnimationFrame","_resizeObserver","prevRefRect","frameLoop","nextRefRect","_resizeObserver2","removeEventListener","checkMainAxis","checkCrossAxis","limiter","detectOverflowOptions","mainAxisCoord","crossAxisCoord","maxSide","limitedCoords","_middlewareData$flip","initialPlacement","fallbackPlacements","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","flipAlignment","isBasePlacement","oppositePlacement","getExpandedPlacements","isStart","lr","rl","tb","bt","getSideList","map","getOppositeAxisPlacements","placements","overflows","overflowsData","flip","sides","mainAlignmentSide","every","_middlewareData$flip2","_overflowsData$filter","nextIndex","index","nextPlacement","reset","resetPlacement","d","sort","a","_overflowsData$map$so","acc","arrowDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","min$1","center","shouldAddOffset","centerOffset","mergedOptions","platformWithCache","config","middleware","validMiddleware","Boolean","statefulPlacement","resetCount","nextX","nextY","computePosition","checkPageFilter","currentUrl","pageFilter","pageFilterType","removeTrailingSlash","isMatchingUrl","regex","regexPattern","RegExp","generateRegex","matched","startsWith","endsWith","GleapTooltipManager","WeakMap","tooltip","hasAttribute","nextId","tooltipElem","mode","hotspotContainer","canEmbed","firstChild","insertBefore","nextSibling","hotspot","icon","animated","repositionHotspot","elementToTooltipMap","floatingUIInstance","createTooltip","elementToFloatingUIMap","filteredTooltips","getFilteredTooltips","checkForTooltips","tooltips","location","href","page","pageType","querySelectorAll","linkTooltip","sessionInstance","http","sdkKey","console","updateFilteredTooltips","nodeType","ELEMENT_NODE","checkNodeTooltip","childNodes","childNode","processNodeInsertion","_this3","_this4","time","timeout","handleResizeThrottled","updateHotspotPositions","context","_toConsumableArray","observer","MutationObserver","mutations","lastUrl","mutation","addedNodes","removedNodes","floatingUI","childList","subtree","attributes","attributeFilter","_this5","tooltipText","tooltipData","hideTimeout","arrowEl","posX","shift","assign","style","arrowPos","visibility","opacity","pointerEvents","hide","voidElements","Set","tagName","resizeListener","anchor","removeAttribute","tooltipId","getAttribute","posY","offsetX","offsetY","elementRect","range","createRange","selectNodeContents","fixedWidth","anchorRect","tooltipSize","email","userId","phone","onSessionReady","ready","onSessionReadyListener","attemp","retry","GleapEventManager","notifyEvent","useCookies","cookie","eraseGleapCookie","sendMessage","clearAllNotifications","setNotificationCount","GleapBannerManager","removeBannerUI","GleapModalManager","hideModal","isNaN","newTimeout","pow","startSession","_this$session","sessionChanged","days","expires","setTime","toUTCString","setGleapCookie","encodeURIComponent","clearCache","GleapStreamedEvent","restart","tooltipManager","destroy","load","dispatchEvent","CustomEvent","notifySessionReady","sessionCookie","nameEQ","ca","c","charAt","substring","getGleapCookie","sessionData","decodeURIComponent","validateSession","cachedSession","clearSession","userData","checkIfSessionDataNeedsUpdate","userDataKeys","userDataKey","customData","setOnSessionReady","_objectSpread","sdkVersion","SDK_VERSION","ws","userHash","checkIfSessionNeedsUpdate","dataToSend","tourId","tourData","_window","passedPageFilter","sendSessionUpdate","streamEvents","mainLoopTimeout","runEventStreamLoop","streamingEvents","errorCount","streamedEventArray","socket","OPEN","sessionDuration","GleapMetaDataManager","getSessionDuration","events","opened","handleOpenBound","handleOpen","handleErrorBound","handleError","handleMessageBound","handleMessage","handleCloseBound","handleClose","connectionTimeout","pingWS","clearInterval","close","cleanupWebSocket","connectedWebSocketGleapId","WebSocket","wsApiUrl","event","setInterval","processMessage","initWebSocket","message","_message$data","u","listOfActionsWhereIgnoreOpened","filteredActions","action","_action$actionType","actionType","Gleap","performActions","detail","eventArray","cleanupMainLoop","trackInitialEvents","startPageListener","resetErrorCountLoop","logEvent","logCurrentPage","disablePageTracking","log","eventMaxLength","parseIntWithDefault","val","def","parsed","onConfigLoaded","onConfigLoadedListener","aiTools","sendConfigUpdate","cachedConfig","applyConfig","loadConfigFromServer","setStyles","headerColor","buttonColor","backgroundColor","borderRadius","buttonX","buttonY","applyStylesFromConfig","enableWebReplays","GleapReplayRecorder","stop","enableNetworkLogs","setLoadAllResources","sendNetworkResources","networkLogPropsToIgnore","setFilters","networkLogBlacklist","setBlacklist","updateRTLSupport","enableShortcuts","notifyConfigLoaded","_regeneratorRuntime","t","n","Symbol","iterator","asyncIterator","toStringTag","define","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","arg","h","l","f","GeneratorFunction","GeneratorFunctionPrototype","p","getPrototypeOf","defineIteratorMethods","_invoke","AsyncIterator","invoke","__await","callInvokeWithMethodAndArg","done","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","displayName","isGeneratorFunction","constructor","mark","setPrototypeOf","__proto__","awrap","reverse","pop","prev","rval","handle","complete","finish","delegateYield","asyncGeneratorStep","gen","_next","_throw","info","_asyncToGenerator","documentToHTML","doctype","publicId","systemId","outerHTML","loadCSSUrlResources","basePath","remote","asyncFn","matchedData","matchedUrl","replaceAll","resourcePath","URL","fetchCSSResource","resourceData","promises","_len","_key","promise","all","reader","onloadend","readAsDataURL","fetchItemResource","isBlacklisted","warn","progressResource","replaceStyleNodes","styleSheet","cssTextContent","styleId","cloneTargetNode","ownerNode","replacementNode","head","styleNode","cssText","createTextNode","linkNode","rel","media","getTextContentFromStyleSheet","cssRules","rules","cssRuleItem","downloadAllCSSUrlResources","basePathURL","_loop","styleSheets","mediaText","baseTags","getElementsByTagName","origin","lastIndexOf","replacedStyle","styletext","stylesheet","results","prepareRemoteData","dom","imgItems","imgItemsPromises","item","downloadAllImages","handleAdoptedStyleSheets","doc","shadowNodeId","adoptedStyleSheets","shadowStyleNode","firstElementChild","extractFinalCSSState","getAnimations","animations","finalCSSState","animation","_animation$effect","keyframes","effect","getKeyframes","finalKeyframe","property","deepClone","_callee3","cloneNode","fragment","clonedHead","_context3","_ref2","_callee2","parent","shadowRoot","walkTree","webAnimations","boundingRect","resizedImage","_boundingRect","rootShadowNodeId","_context2","_ref3","_callee","nextn","nextp","innerShadowRoot","_context","nextElementSibling","_x5","_x6","_x7","HTMLCanvasElement","t0","toUpperCase","contains","checked","_x2","_x3","_x4","createDocumentFragment","_x","prepareScreenshotData","_ref4","_callee4","styleTags","linkImportElems","referenceNode","scriptElems","existingBasePath","baseElems","baseUrl","newBaseUrl","baseNode","dialogElems","bbElems","_context4","innerWidth","innerHeight","_x8","_x9","_createForOfIteratorHelper","allowArrayLike","it","isArray","minLen","_arrayLikeToArray","_unsupportedIterableToArray","F","_e","normalCompletion","didErr","step","_e2","arr","len","arr2","_defineProperties","props","descriptor","_toPropertyKey","toPrimitive","_toPrimitive","GleapScreenRecorder","rerender","permissionErrorText","Constructor","MAX_RECORD_TIME","mediaDevices","getDisplayMedia","available","RERENDER_DELAY","protoProps","staticProps","_uploadScreenRecording","_startAudioRecording","_startScreenRecording","_step","_iterator","MIME_TYPES","MediaRecorder","isTypeSupported","stream","getTracks","track","_","tracks","validTracks","MediaStream","videoTracks","getVideoTracks","audioTracks","getAudioTracks","displayStream","composed","isRecording","video","ideal","screen","frameRate","IDEAL_FRAME_RATE","MAX_FRAME_RATE","displaySurface","audio","selfBrowserSurface","_displayStream","_displayVideoTrack","getFirstVideoTrack","audioMuted","startAudioRecording","audioAvailable","createMediaStream","handleRecord","alert","mediaRecorder","recordingTimer","stopStreamTracks","_micStream","voiceStream","micTrack","_composed","getUserMedia","echoCancellation","noiseSuppression","autoGainControl","getFirstAudioTrack","enabled","videoEl","SELECTORS","PREVIEW_VIDEO","file","recordedChunks","mimeType","getSupportedMimeType","recordTime","timerLabel","TIMER_LABEL","remainingTime","maxRecordTime","formatTime","stopScreenRecording","TIMER_UPDATE_INTERVAL","ondataavailable","videoTrack","onended","prepareRecording","onstop","CHUNK_INTERVAL","completeBlob","extension","File","previewVideoElement","createObjectURL","screenRecordingData","formData","FormData","append","fileUrl","GleapFeedback","priority","isSilent","excludeData","spamToken","gleapInstance","GleapCustomDataManager","getCustomData","metaData","getMetaData","consoleLog","GleapConsoleLogManager","getLogs","networkLogs","getRequests","customEventLog","getEventArray","ticketAttributes","getTicketAttributes","dataPromises","webReplay","getGlobalDataItem","isLiveSite","recordingUrlPromise","uploadScreenRecording","recordingUrl","screenRecordingUrl","screenshot","screenshotDataPromise","isLiveMode","screenshotData","snapshotPosition","feedbackData","outbound","tags","GleapTagManager","getTags","keysToExclude","keyToExclude","takeSnapshot","getData","feedback","newTab","newWindow","focus","cmp_block_ignoredomains","injectedFrame","autoWhiteListCookieManager","frameUrl","gleapFrameContainer","gleapFrame","updateFrameStyle","showFrameContainer","closeElement","surveyStyle","extendedStyle","surveyFullStyle","classicStyle","classicStyleLeft","modernStyleLeft","noButtonStyleLeft","allStyles","styleToApply","startCommunication","appHeight","setProperty","handler","urlHandler","innerContainer","escListener","widgetOpened","markerManager","showLoader","loadingClass","disableBGFade","disableBGGradient","updateUI","workThroughQueue","setGlobalDataItem","scrollX","scrollY","updateWidgetStatus","registerEscListener","isSurvey","updateNotificationBadge","runWidgetShouldOpenCallback","injectFrame","isWidgetOpen","resetRoutes","hideMarkerManager","reloadNotificationsFromCache","unregisterEscListener","queue","comReady","contentWindow","postMessage","getSession","getAiTools","overrideLanguage","getOverrideLanguage","GleapMarkerManager","success","workQueue","_this6","addMessageListener","GleapAudioManager","ping","showImage","ticketData","frameHeight","_data$data","startProductTour","GleapCustomActionManager","triggerCustomAction","shareToken","feedbackType","sendFeedback","reportedBy","trackEvent","showDrawingScreen","bannerUrl","listeners","appVersionCode","appBuildNumber","sessionStart","nameOffset","verOffset","ix","nAgt","browserName","appName","fullVersion","appVersion","majorVersion","OSName","browser","systemName","buildVersionNumber","releaseVersionNumber","devicePixelRatio","screenWidth","screenHeight","language","userLanguage","mobile","sdkType","environment","logArray","disabled","originalConsoleLog","logLevel","logMaxLength","addLog","origConsole","addLogWithArgs","GleapClickListener","protocol","preventDefault","handleGleapLink","elementId","elementClass","elemId","elemClass","elementTag","htmlPre","htmlPost","getDOMElementDescription","takeCurrentReplay","eventListeners","eventListener","eventName","customAction","customActionCallbacks","_a","__defProp","__publicField","__defNormalProp","__defProp$1","__publicField$1","__defNormalProp$1","NodeType$3","NodeType2","testableAccessors$1","testableMethods$1","untaintedBasePrototype$1","isAngularZonePresent$1","globalThis","Zone","getUntaintedPrototype$1","defaultObj","defaultPrototype","accessorNames","isUntaintedAccessors","accessor","_a2","_b","getOwnPropertyDescriptor","methodNames","isUntaintedMethods","iframeEl","untaintedObject","removeChild","untaintedAccessorCache$1","getUntaintedAccessor$1","untaintedPrototype","untaintedAccessor","untaintedMethodCache$1","getUntaintedMethod$1","untaintedMethod","index$1","n2","parentElement","textContent","other","getRootNode","selectors","mutationObserver","hostEl","isNativeShadowDom","shadowRoot2","stringifyStylesheet","s2","rules2","sheetHref","stringifiedRules","rule2","stringifyRule","isCSSImportRule","importStringified","statement","layerName","supportsText","escapeImportStatement","absolutifyURLs","ruleStringified","isCSSStyleRule","selectorText","cssStringified","fixSafariColons","Mirror","getId","getMeta","getNode","idNodeMap","getIds","nodeMetaMap","removeNodeFromMap","delete","hasNode","node2","meta","oldNode","maskInputValue","maskInputOptions","maskInputFn","actualType","repeat","ORIGINAL_ATTRIBUTE_NAME","getInputType","extractFileExtension","path","baseURL","pathname","URL_IN_CSS_REF","URL_PROTOCOL_MATCH","URL_WWW_MATCH","DATA_URI","quote1","path1","quote2","path2","path3","filePath","maybeQuote","extractOrigin","stack","part","normalizeCssString","markCssSplits","childNodes2","splits","cssTextNorm","i2","textContentNorm","bit","splitNorm","splitCssText","_id","tagNameRegex","IGNORED_NODE","genId","canvasService","canvasCtx","SRCSET_NOT_SPACES","SRCSET_COMMAS_OR_SPACES","cachedDocument","absoluteToDoc","attributeValue","trim","getHref","isSVGElement","ownerSVGElement","customHref","a2","transformAttribute","pos","collectCharacters","regEx","chars2","exec","output","descriptorsStr","inParens","c2","getAbsoluteSrcsetString","ignoreAttribute","_value","classMatchesRegex","checkAncestors","eIndex","needMaskingText","maskTextClass","maskTextSelector","closest","e2","serializeNode","mirror","mirror2","blockClass","blockSelector","needsMask","inlineStylesheet","maskTextFn","dataURLOptions","inlineImages","recordCanvas","keepIframeSrcFn","newlyAddedElement","cssCaptured","rootId","docId","getRootId","DOCUMENT_NODE","compatMode","Document","DOCUMENT_TYPE_NODE","DocumentType","needBlock","_isBlockedElement","HTMLFormElement","processedTagName","getValidTagName$1","attr","_cssText","sheet","selected","rr_open_mode","__context","ctx","x2","getImageData","originalGetImageData","Uint32Array","buffer","pixel","is2DCanvasBlank","rr_dataURL","quality","canvasDataURL","blankCanvas","image","imageSrc","currentSrc","priorCrossOrigin","crossOrigin","recordInlineImage","naturalWidth","naturalHeight","mediaAttributes","rr_mediaState","paused","rr_mediaCurrentTime","currentTime","rr_mediaPlaybackRate","playbackRate","rr_mediaMuted","muted","rr_mediaLoop","loop","rr_mediaVolume","volume","rr_scrollLeft","rr_scrollTop","class","rr_width","rr_height","contentDocument","rr_src","isCustomElement","customElements","isSVG","isCustom","serializeElementNode","TEXT_NODE","parentTagName","textContent2","isStyle","isScript","Text","serializeTextNode","CDATA_SECTION_NODE","CDATA","COMMENT_NODE","Comment","lowerIfExists","maybeAttr","serializeNodeWithId","skipChild","slimDOMOptions","onSerialize","onIframeLoad","iframeLoadTimeout","onStylesheetLoad","stylesheetLoadTimeout","preserveWhiteSpace","_serializedNode","sn","comment","script","as","headFavicon","headMetaDescKeywords","headMetaSocial","headMetaRobots","headMetaHttpEquiv","headMetaAuthorship","headMetaVerification","slimDOMExcluded","serializedNode","recordChild","shadowRootEl","isShadowHost","headWhitespace","bypassOptions","childN","serializedChildNode","isShadow","listener","fired","timer","blankUrl","onceIframeLoaded","iframeDoc","serializedIframeNode","link","styleSheetLoadTimeout","styleSheetLoaded","onceStylesheetLoaded","serializedLinkNode","getDefaultExportFromCjs$1","__esModule","getAugmentedNamespace$1","f2","default","a22","Reflect","construct","picocolors_browser$1","x$1","create$1","isColorSupported","bold","dim","italic","underline","inverse","hidden","strikethrough","black","red","green","yellow","blue","magenta","cyan","white","gray","bgBlack","bgRed","bgGreen","bgYellow","bgBlue","bgMagenta","bgCyan","bgWhite","createColors","picocolors_browserExports$1","require$$2$1","freeze","pico$1","terminalHighlight$1$1","CssSyntaxError$3$1","CssSyntaxError","line","column","source","plugin22","super","reason","plugin","endLine","endColumn","setMessage","captureStackTrace","showSourceCode","aside","lines","index2","number","gutter","spacing","code","cssSyntaxError$1","symbols$1","isClean","my","DEFAULT_RAW$1","after","beforeClose","beforeComment","beforeDecl","beforeOpen","beforeRule","colon","commentLeft","commentRight","emptyBody","indent","semicolon","Stringifier$2$1","builder","atrule","raws","afterName","nodes","block","between","beforeAfter","detect","raw","buf","depth","last","child","before","decl","string","important","own","first","root2","rawCache","walk","rawBeforeClose","rawBeforeComment","walkComments","rawBeforeDecl","walkDecls","rawBeforeOpen","rawBeforeRule","rawColon","rawEmptyBody","rawIndent","rawSemicolon","rule","ownSemicolon","stringifier$1","Stringifier$1$1","stringify$4$1","stringify_1$1","isClean$2$1","my$2$1","CssSyntaxError$2$1","Stringifier2$1","stringify$3$1","cloneNode$1","cloned","Node$4$1","defaults","addToError","postcssNode","input","insertAfter","overrides","cleanRaws","keepBetween","cloneAfter","cloneBefore","opts","rangeBy","getProxyProcessor","toProxy","markDirty","positionBy","stringRepresentation","positionInside","word","endIndex","defaultType","replaceWith","bookmark","foundSelf","result2","toJSON","inputs","fixed","emitInputs","inputsNextIndex","inputId","input2","proxyCache","Proxy","stringifier2","proxyOf","node$1","Node$3$1","Declaration$4$1","variable","declaration$1","nonSecure$1","nanoid","random","customAlphabet","alphabet","defaultSize","SourceMapConsumer","SourceMapConsumer$2$1","SourceMapGenerator","SourceMapGenerator$2$1","existsSync","existsSync$1","readFileSync","readFileSync$1","dirname","dirname$1$1","join$1","PreviousMap$2$1","loadAnnotation","inline","startWith","annotation","loadMap","mapFile","consumer","consumerCache","decodeInline","lastMatch","Buffer","atob","encoding","getAnnotationURL","sourceMapString","isMap","mappings","_mappings","sections","comments","loadFile","fromSourceMap","prevPath","withContent","sourcesContent","previousMap$1","SourceMapConsumer$1$1","SourceMapGenerator$1$1","fileURLToPath","fileURLToPath$1","pathToFileURL","pathToFileURL$1$1","isAbsolute","isAbsolute$1","resolve$1$1","nanoid$2","terminalHighlight$2","CssSyntaxError$1$1","PreviousMap$1$1","fromOffsetCache$1","sourceMapAvailable$1$1","pathAvailable$1$1","Input$4$1","hasBOM","mapResolve","fromOffset","lastLine","lineToIndex","prevIndex","l2","mid","sourceRoot","to","fromUrl","originalPositionFor","sourceContentFor","json","input$1","registerInput","SourceMapConsumer$3","SourceMapGenerator$3","dirname$2","relative","relative$1","resolve$2","sep","sep$1","pathToFileURL$2","Input$3$1","sourceMapAvailable$2","pathAvailable$2","mapGenerator$1","stringify2","cssString","mapOpts","originalCSS","usesFileUrls","absolute","memoizedFileURLs","memoizedPaths","memoizedURLs","addAnnotation","content","isInline","toBase64","outputFile","eol","applyPrevMaps","previous","toUrl","applySourceMap","clearAnnotation","generate","generateMap","generateString","ignoreInvalidMapping","addMapping","generated","original","isSourcesContent","setSourcesContent","isAnnotation","noSource","mapping","sourcePath","charCodeAt","cached","previousMaps","already","toFileUrl","setSourceContent","btoa","unescape","fileURL","Node$2$1","Comment$4$1","comment$1","parse$4$1","Rule$4$1","AtRule$4$1","Root$6$1","isClean$1$1","my$1$1","Declaration$3$1","Comment$3$1","Node$1$1","cleanSource$1","markDirtyUp$1","Container$7$1","Container","children","normalize","each","getIterator","indexes","condition","lastEach","cb","exist","existIndex","splice","sample","rebuild","prepend","unshift","removeAll","replaceValues","pattern","fast","walkAtRules","walkRules","registerParse","dependant","registerRule","registerAtRule","registerRoot","container$1","LazyResult$4$1","Processor$3$1","Container$6$1","Document$3$1","toResult","registerLazyResult","registerProcessor","document$1$1","Warning$2$1","opt","warning$1","Warning$1$1","Result$3$1","processor2","processor","messages","lastPlugin","postcssPlugin","warning2","warnings","result$1","SINGLE_QUOTE$1","DOUBLE_QUOTE$1","BACKSLASH$1","SLASH$1","NEWLINE$1","SPACE$1","FEED$1","TAB$1","CR$1","OPEN_SQUARE$1","CLOSE_SQUARE$1","OPEN_PARENTHESES$1","CLOSE_PARENTHESES$1","OPEN_CURLY$1","CLOSE_CURLY$1","SEMICOLON$1","ASTERISK$1","COLON$1","AT$1","RE_AT_END$1","RE_WORD_END$1","RE_BAD_BRACKET$1","RE_HEX_ESCAPE$1","Container$5$1","AtRule$3$1","atRule$1","LazyResult$3$1","Processor$2$1","Container$4$1","Root$5$1","ignore","root$1","list$2$1","comma","space","separators","array","current","func","inQuote","prevQuote","escape","letter","list_1$1","Container$3$1","list$1$1","Rule$3$1","sep2","rule$1","Declaration$2$1","tokenizer2$1","quote","escaped","escapePos","currentToken","valueOf","ignoreErrors","returned","unclosed","what","back","token","endOfFile","nextToken","ignoreUnclosed","controlChar","fromCharCode","lastIndex","Comment$2$1","AtRule$2$1","Root$4$1","Rule$2$1","SAFE_COMMENT_NEIGHBOR$1","empty","parser$1","spaces","createTokenizer","unnamedAtrule","init","brackets","tokenizer","getPosition","spacesAndCommentsFromEnd","spacesAndCommentsFromStart","checkMissedSemicolon","tokens","founded","doubleColon","customProperty","findLastWithPosition$1","unknownWord","firstSpaces","precheckMissedSemicolon","stringFrom","spacesFromEnd","emptyRule","unexpectedClose","endFile","unclosedBlock","freeSemicolon","bracket","unclosedBracket","clean","lastTokenType","Container$2$1","Parser2$1","Input$2$1","parse$3$1","parser2","parse_1$1","isClean$3","my$3","MapGenerator$1$1","stringify$2$1","Container$1$1","Document$2$1","Result$2$1","parse$2$1","Root$3$1","TYPE_TO_CLASS_NAME$1","PLUGIN_PROPS$1","AtRule","AtRuleExit","CommentExit","Declaration","DeclarationExit","DocumentExit","Once","OnceExit","prepare","Root","RootExit","Rule","RuleExit","NOT_VISITORS$1","CHILDREN$1","isPromise$1","getEvents$1","toStack$1","eventIndex","visitorIndex","visitors","cleanMarks$1","postcss$2$1","LazyResult$2$1","LazyResult","stringified","processed","syntax","parser","helpers","postcss","plugins","processing","runAsync","onRejected","catch","onFinally","getAsyncError","postcssVersion","prepareVisitors","version","hasListener","runOnRoot","visitTick","visitor","roots","subRoot","sync","stringifier","walkSync","visitSync","onFulfilled","visit2","registerPostcss","lazyResult$1","MapGenerator2$1","stringify$1$1","parse$1$1","Result$1$1","NoWorkResult$1$1","_processor","_css","_opts","_map","generatedCSS","generatedMap","_root","noWorkResult$1","NoWorkResult2$1","LazyResult$1$1","Document$1$1","Root$2$1","Processor$1$1","normalized","process","use","processor$1","Declaration$1$1","PreviousMap2$1","Comment$1$1","AtRule$1$1","Input$1$1","Root$1$1","Rule$1$1","fromJSON$1$1","ownInputs","inputHydrated","fromJSON_1$1","CssSyntaxError2$1","Declaration2$1","LazyResult2$1","Container2$1","Processor2$1","stringify$5","fromJSON$2","Document22","Warning2$1","Comment2$1","AtRule2$1","Result2$1","Input2$1","parse$5","list$3","Rule2$1","Root2$1","Node2$1","postcss$3","initializer","warningPrinted","creator","env","LANG","transformer","processOpts","pluginOpts","fromJSON","atRule","Processor","Warning","Result","Input","postcss_1$1","postcss$1$1","__defProp2","__publicField2","__defNormalProp2","getDefaultExportFromCjs","getAugmentedNamespace","picocolors_browser","picocolors_browserExports","require$$2","pico","terminalHighlight$1","CssSyntaxError$3","CssSyntaxError2","cssSyntaxError","symbols","DEFAULT_RAW","Stringifier$2","Stringifier$1","stringify$4","stringify_1","isClean$2","my$2","CssSyntaxError$2","Stringifier22","stringify$3","Node$4","Node$3","Declaration$4","declaration","nonSecure","SourceMapConsumer$2","SourceMapGenerator$2","dirname$1","PreviousMap$2","previousMap","SourceMapConsumer$1","SourceMapGenerator$1","pathToFileURL$1","resolve$1","terminalHighlight","CssSyntaxError$1","PreviousMap$1","fromOffsetCache","sourceMapAvailable$1","pathAvailable$1","Input$4","Input$3","sourceMapAvailable","pathAvailable","mapGenerator","Node$2","Comment$4","parse$4","Rule$4","AtRule$4","Root$6","isClean$1","my$1","Declaration$3","Comment$3","Node$1","cleanSource","markDirtyUp","Container$7","Container2","container","LazyResult$4","Processor$3","Container$6","Document$3","document$1","Warning$2","warning","Warning$1","Result$3","SINGLE_QUOTE","DOUBLE_QUOTE","BACKSLASH","SLASH","NEWLINE","SPACE","FEED","TAB","CR","OPEN_SQUARE","CLOSE_SQUARE","OPEN_PARENTHESES","CLOSE_PARENTHESES","OPEN_CURLY","CLOSE_CURLY","SEMICOLON","ASTERISK","COLON","AT","RE_AT_END","RE_WORD_END","RE_BAD_BRACKET","RE_HEX_ESCAPE","Container$5","AtRule$3","LazyResult$3","Processor$2","Container$4","Root$5","list$2","list_1","Container$3","list$1","Rule$3","Declaration$2","tokenizer22","Comment$2","AtRule$2","Root$4","Rule$2","SAFE_COMMENT_NEIGHBOR","findLastWithPosition","Container$2","Parser22","Input$2","parse$3","parse_1","MapGenerator$1","stringify$2","Container$1","Document$2","Result$2","parse$2","Root$3","TYPE_TO_CLASS_NAME","PLUGIN_PROPS","NOT_VISITORS","CHILDREN","isPromise","getEvents","toStack","cleanMarks","postcss$2","LazyResult$2","LazyResult2","lazyResult","MapGenerator22","stringify$1","parse$1","Result$1","NoWorkResult$1","noWorkResult","NoWorkResult22","LazyResult$1","Document$1","Root$2","Processor$1","Declaration$1","PreviousMap22","Comment$1","AtRule$1","Input$1","Root$1","Rule$1","fromJSON$1","fromJSON_1","CssSyntaxError22","Declaration22","LazyResult22","Container22","Processor22","Document222","Warning22","Comment22","AtRule22","Result22","Input22","Rule22","Root22","Node22","postcss_1","postcss$1","BaseRRNode","_args","childIterator","_newChild","_refChild","_node","testableAccessors","testableMethods","untaintedBasePrototype","isAngularZonePresent","getUntaintedPrototype","untaintedAccessorCache","getUntaintedAccessor","untaintedMethodCache","getUntaintedMethod","mutationObserverCtor","on","capture","DEPARTED_MIRROR_ACCESS_WARNING","_mirror","throttle","wait","leading","remaining","trailing","hookSetter","isRevoked","patch","replacement","wrapped","defineProperties","__rrweb_original__","receiver","nowTimestamp","getWindowScroll","_d","scrollingElement","getWindowHeight","getWindowWidth","closestElementOfNode","isBlocked","isIgnored","headTitleMutations","isAncestorRemoved","legacy_isTouchEvent","changedTouches","isSerializedIframe","isSerializedStylesheet","hasShadowRoot","StyleSheetMirror","styleIDMap","newId","idStyleMap","getStyle","generateId","getShadowHost","shadowHost","DOCUMENT_FRAGMENT_NODE","shadowHostInDom","rootShadowHost","getRootShadowHost","inDom","EventType","EventType2","IncrementalSource","IncrementalSource2","MouseInteractions","MouseInteractions2","PointerTypes","PointerTypes2","CanvasContext","CanvasContext2","MediaInteractions","MediaInteractions2","NodeType","isNodeInLinkedList","DoubleLinkedList","addNode","__ln","previousSibling","tail","removeNode","moveKey","parentId","MutationBuffer","processMutation","emit","frozen","locked","adds","addedIds","addList","getNextId","ns","pushAdd","parentTag","addedSet","currentN","iframeManager","addIframe","stylesheetManager","trackLinkElement","shadowDomManager","addShadowRoot","iframe","childSn","attachIframe","observeAttachShadow","attachLinkElement","mapRemoves","movedSet","isParentRemoved","removesSubTreeCache","isAncestorInSet","droppedSet","candidate","tailNode","unhandledNode","texts","genTextAreaValueMutation","attribute","diffAsStr","styleDiff","unchangedAsStr","_unchangedStyles","removes","attributeMap","movedMap","mutationCb","textarea","cn","m","oldValue","attributeName","unattachedDoc","implementation","createHTMLDocument","old","pname","newValue","getPropertyValue","newPriority","getPropertyPriority","genAdds","nodeId","isSerialized","deepDelete","n22","processRemoves","processedNodeManager","inOtherBuffer","targetId","canvasManager","unfreeze","isFrozen","lock","unlock","addsSet","_mirror2","_isParentRemoved","_isAncestorInSet","errorHandler","callbackWrapper","rest","mutationBuffers","getEventTarget","composedPath","initMutationObserver","rootEl","mutationBuffer","processMutations","attributeOldValue","characterData","characterDataOldValue","initMouseInteractionObserver","mouseInteractionCb","sampling","mouseInteraction","disableMap","handlers","currentPointerType","eventKey","pointerType","thisEventKey","Mouse","Touch","Pen","MouseDown","MouseUp","Click","clientX","clientY","getHandler","PointerEvent","TouchStart","TouchEnd","initScrollObserver","scrollCb","scrollLeftTop","INPUT_TAGS","lastInputValueMap","getNestedCSSRulePositions","childRule","hasNestedCSSRule","parentRule","CSSGroupingRule","CSSMediaRule","CSSSupportsRule","CSSConditionRule","parentStyleSheet","recurse","getIdAndStyleId","styleMirror","initAdoptedStyleSheetObserver","host2","hostId","patchTarget","originalPropertyDescriptor","_a3","sheets","adoptStyleSheets","initObservers","o2","hooks","currentWindow","mousemoveCb","viewportResizeCb","inputCb","mediaInteractionCb","styleSheetRuleCb","styleDeclarationCb","canvasMutationCb","fontCb","selectionCb","customElementCb","mousemove","viewportResize","mediaInteaction","styleSheetRule","styleDeclaration","canvasMutation","font","selection","customElement","mergeHooks","recordDOM","mousemoveHandler","callbackThreshold","mousemoveCallback","timeBaseline","positions","wrappedCb","totalOffset","timeOffset","updatePosition","DragEvent","Drag","MouseEvent","MouseMove","TouchMove","initMoveObserver","mouseInteractionHandler","scrollHandler","viewportResizeHandler","lastH","lastW","initViewportResizeObserver","inputHandler","ignoreClass","ignoreSelector","userTriggeredOnInput","eventHandler","userTriggered","isTrusted","isChecked","cbWithDedup","text2","v2","lastInputValue","propertyDescriptor","HTMLInputElement","hookProperties","HTMLSelectElement","HTMLTextAreaElement","HTMLOptionElement","initInputObserver","mediaInteractionHandler","Play","Pause","Seeked","VolumeChange","RateChange","initMediaInteractionObserver","styleSheetObserver","adoptedStyleSheetObserver","styleDeclarationObserver","fontObserver","CSSStyleSheet","insertRule","thisArg","argumentsList","addRule","styleBlock","deleteRule","replaceSync","removeRule","supportedNestedCSSRuleTypes","canMonkeyPatchNestedCSSRule","unmodifiedFunctions","typeKey","initStyleSheetObserver","ignoreCSSAttributes","CSSStyleDeclaration","removeProperty","initStyleDeclarationObserver","collectFonts","fontMap","originalFontFace","FontFace","family","descriptors","fontFace","fontSource","Uint8Array","restoreHandler","fonts","initFontObserver","selectionObserver","collapsed","updateSelection","getSelection","isCollapsed","ranges","rangeCount","getRangeAt","startContainer","startOffset","endContainer","endOffset","initSelectionObserver","customElementObserver","initCustomElementObserver","pluginHandlers","plugin3","CrossOriginIframeMirror","generateIdFn","remoteId","idToRemoteMap","remoteToIdMap","idToRemoteIdMap","getIdToRemoteIdMap","remoteIdToIdMap","getRemoteIdToIdMap","getRemoteId","getRemoteIds","ids","iframeIdToRemoteIdMap","iframeRemoteIdToIdMap","IframeManager","wrappedEmit","recordCrossOriginIframes","crossOriginIframeStyleMirror","iframes","crossOriginIframeMap","addLoadListener","loadListener","isAttachIframe","crossOriginMessageEvent","transformedEvent","transformCrossOriginEvent","isCheckout","FullSnapshot","crossOriginIframeMirror","replaceIdOnNode","crossOriginIframeRootIdMap","patchRootIdOnNode","timestamp","IncrementalSnapshot","Mutation","Meta","Load","DomContentLoaded","Plugin","Custom","replaceIds","ViewportResize","MediaInteraction","MouseInteraction","Scroll","CanvasMutation","StyleSheetRule","StyleDeclaration","replaceStyleIds","Font","Selection","AdoptedStyleSheet","styles","iframeMirror","ShadowDomManager","WeakSet","patchAttachShadow","shadowDoms","restoreHandlers","iframeElement","manager","option","sRoot","chars","lookup","i$1","canvasVarMap","saveWebGLVar","isInstanceOfWebGLObject","list2","ctor","contextMap","variableListFor$1","serializeArg","Float32Array","Float64Array","Int32Array","Uint16Array","Int16Array","Int8Array","Uint8ClampedArray","rr_type","base64","arraybuffer","bytes","DataView","byteOffset","byteLength","HTMLImageElement","ImageData","serializeArgs","supportedWebGLConstructorNames","initCanvasContextObserver","setPreserveDrawingBufferToTrue","contextType","ctxName","getNormalizedContextName","contextAttributes","preserveDrawingBuffer","patchGLPrototype","getOwnPropertyNames","recordArgs","hookHandler","setter","encodedJs","WorkerWrapper","objURL","webkitURL","worker","Worker","revokeObjectURL","CanvasManager","latestId","invokeId","rafStamps","pendingCanvasMutations","initCanvasMutationObserver","initCanvasFPSObserver","resetObservers","fps","canvasContextReset","snapshotInProgressMap","onmessage","commands","timeBetweenSnapshots","rafId","lastSnapshotTime","takeCanvasSnapshots","matchedCanvas","getCanvas","getContextAttributes","COLOR_BUFFER_BIT","bitmap","createImageBitmap","startRAFTimestamping","startPendingCanvasMutationFlusher","canvas2DReset","props2D","CanvasRenderingContext2D","initCanvas2DMutationObserver","canvasWebGL1and2Reset","WebGLRenderingContext","WebGL","WebGL2RenderingContext","WebGL2","initCanvasWebGLMutationObserver","flushPendingCanvasMutations","setLatestRAFTimestamp","_values","flushPendingCanvasMutationFor","valuesWithType","type2","StylesheetManager","adoptedStyleSheetCb","linkEl","trackedLinkElements","trackStylesheetInLinkElement","adoptedStyleSheetData","styleIds","CSSRule","r2","_linkEl","ProcessedNodeManager","thisBuffer","buffers","nodeMap","active","takeFullSnapshot$1","recording","cleanFrame","debug","record","checkoutEveryNms","checkoutEveryNth","maskAllInputs","_maskInputOptions","_slimDOMOptions","packFn","mousemoveWait","recordAfter","errorHandler2","inEmittingFrame","passEmitsToParent","month","search","tel","week","select","password","lastFullSnapshotEvent","NodeList","DOMTokenList","polyfill$1","incrementalSnapshotCount","eventProcessor","exceedCount","exceedTime","wrappedMutationEmit","wrappedScrollEmit","wrappedCanvasMutationEmit","getMirror","nodeMirror","slimDOM","snapshot","initialOffset","CustomElement","t2","addCustomEvent","tag","freezePage","takeFullSnapshot","NotStarted","Running","Stopped","customOptions","stopFunction","ContextMenu","DblClick","Focus","Blur","rrwebEvent","stringifiedData","dataURIRegex","matchAll","ensureMaxMessageSize","bufferSize","ScreenDrawer","svgElement","minHeight","mouseDown","colorpicker","fadeOutToolbar","tool","mouseDownPen","mouseDownRect","mouseMove","mouseMovePen","mouseMoveRect","mouseUp","fadeInToolbar","mouseUpPen","mouseUpRect","appendToBuffer","getMousePosition","updateSvgPath","w","abs","startPoint","setAttributeNS","createElementNS","strokeWidthRect","appendPathToSvg","strokeWidth","pt","strPath","touches","totalX","totalY","getAveragePoint","tmpPath","pathBuffer","fadeTarget","GleapScrollStopper","supportsPassive","wheelOpt","scrollDisabled","wheelEvent","preventDefaultForScrollKeys","keyCode","showWidgetUI","formKey","dirty","dialogUI","enableScroll","screenRecorder","unregisterListeners","cleanupMousePointer","screenDrawer","dialog","captureSVG","videoPreviewContainer","dismissUI","colorPicker","borderLayer","captureEditor","dragCursor","setMouseMove","mouseMoveEventHandler","touchMoveEventHandler","dragHandle","dragStart","drag","dragEnd","bugReportingEditor","translateText","pageLeaveListener","isEscape","isEnter","dismiss","showNextStep","returnValue","registerListeners","hideWidgetUI","createEditorUI","setupMousePointer","disableScroll","setupScreenRecording","captureScreenDrawerRerender","setupColorPicker","setupToolbar","selectedColor","colorItems","colorItem","hexColor","onclick","setColor","setPenColor","currentX","currentY","initialX","initialY","toolbar","isDragging","xOffset","yOffset","_getTransformValues","matrix","DOMMatrix","m41","m42","getTransformValues","nextButton","chooseTool","toolbarItem","toolbarTools","setTool","svgClone","toolbarItems","_loop2","toggleAudio","startScreenRecording","removeLastAddedPathFromSvg","itemInactiveClass","screenRecordingTooltip","audioRecordingTooltip","recordingClass","notRecordingClass","clearPreview","captureRenderer","penTips","fill","staticTranslation","staticTranslations","vars","template","localizationOptions","htmlLang","GleapShortcutListener","shortCutListener","char","keyIdentifier","ctrlKey","startFeedbackFlowWithOptions","autostartDrawing","GleapPreFillManager","unreadCount","notificationContainer","notificationsFromCache","unreadNotificationsKey","nots","notification","createdAt","notifications","renderNotifications","updateTabBarNotificationCount","sound","clearElem","currentNewsIndex","newsNotifications","news","otherNotifications","currentIndex","currentNews","newsElem","newsContainerElem","coverImageUrl","newsImageElem","stopPropagation","openNews","newsContentElem","newsTitleElem","getName","descHTML","renderDescription","descElem","paginationElem","pageIndicator","nextBtn","conversation","openConversation","checklist","openChecklist","progress","currentStep","totalSteps","nextStepTitle","sender","profileImageUrl","openNewsArticle","_notification$data","previewText","uiOnly","classLeft","classNoButton","_this$bannerUrl","_this$bannerData","_data$data2","_data$data3","_data$data4","_data$data5","_data$data6","_data$data7","_data$data8","_data$data9","_data$data10","bannerData","format","startBot","botId","startFeedbackFlow","formId","showSurvey","surveyFormat","articleId","openHelpCenterArticle","startChecklist","checklistId","bannerContainer","gleapBFrame","injectBannerUI","_listenForMessages","modalUrl","_this$modalUrl","_data$data11","modalData","primaryColor","_postMessage","modalContainer","wrapper","modalBackdropClickListener","_this2$modalData$show","_this2$modalData","showCloseButton","frame","_injectModalUI","play","settings","Audio","playPromise","getID","getClassSelectors","getClasses","cl","kCombinations","items","getNthChild","sibling","counter","getTag","isUnique","elems","getAllSelectors","attributesToIgnore","funcs","sum","getAttributes","res","testUniqueness","getFirstUnique","getUniqueCombination","combinations","getCombinations","firstUnique","combination","getUniqueSelector","selectorTypes","excludeRegex","foundSelector","elementSelectors","ID","Class","selectorType","Tag","Classes","Attributes","NthChild","unique","_step2","_options$selectorType","_options$attributesTo","_options$excludeRegex","allSelectors","parents","currentElement","getParents","_iterator2","_i","_allSelectors","ElementOverlay","overlay","background","borderColor","borderStyle","borderWidth","boxSizing","cursor","zIndex","margin","shadowContainer","attachShadow","_createClass","useShadowDOM","usingShadowDOM","setBounds","bounds","ElementPicker","overlayOptions","handleMouseMove","handleClick","tick","addToDOM","removeFromDOM","mouseX","mouseY","tickReq","stopImmediatePropagation","onClick","updateTarget","ignoreCursor","newTarget","elementFromPoint","captureCursor","elementFilter","onHover","GleapAdminHelper","picker","stopPicker","onElementPicked","startPicker","GleapAdminManager","COLLAPSE_UI_ACTIVE_CLASS","FRAME_CONTAINER_ACTIVE_CLASS","isActive","activeClass","gleapCollapseUI","toggle","injectedCollapseUI","toggleCollapseUI","_this$configData","configData","sendMessageToTourBuilder","GleapProductTours","disable","adminHelper","injectCollapseUI","setFrameHeight","gleapAdminDisabled","initAdminHelper","currentPage","click","opener","GleapTours","currentConfig","configure","animate","allowClose","overlayOpacity","smoothScroll","disableActiveInteraction","showProgress","stagePadding","stageRadius","popoverOffset","showButtons","disableButtons","overlayColor","getConfig","easeInOutQuad","elapsed","initialValue","amountOfChange","getFocusableElements","parentEls","focusableQuery","flatMap","parentEl","isParentFocusable","focusableEls","isElementVisible","bringInView","isElementInView","shouldSmoothScroll","scrollIntoView","behavior","hasScrollableParent","currentState","setState","getState","resetState","registeredListeners","listen","hook","trackActiveElement","activeStagePosition","renderOverlay","mountOverlay","stagePosition","overlaySvg","stage","windowX","windowY","svg","fillRule","clipRule","strokeLinejoin","strokeMiterlimit","stagePath","generateStageSvgPathString","createOverlaySvg","onDriverClick","pathElement","stageWidth","stageHeight","limitedRadius","normalizedRadius","highlightBoxX","highlightBoxY","highlightBoxWidth","highlightBoxHeight","highlight","attemptTime","elemObj","refactoredElement","hidePopover","existingDummy","getElementById","mountDummyElement","toElement","toStep","_toStep$disableActive","fromStep","fromElement","isFirstHighlight","isToDummyElement","isFromDummyElement","isAnimatedTour","highlightStartedHook","onHighlightStarted","highlightedHook","onHighlighted","deselectedHook","onDeselected","hasDelayedPopover","isPopoverRendered","isHalfwayThrough","popover","renderPopover","fromDefinition","toDefinition","transitionStage","transferHighlight","refreshActiveHighlight","activeHighlight","activeStep","refreshOverlay","repositionPopover","requireRefresh","resizeTimeout","trapFocus","activeElement","popoverEl","firstFocusableEl","lastFocusableEl","shiftKey","previousFocusableEl","nextFocusableEl","onKeyup","shouldPreventDefault","listenerWrapper","listener2","useCapture","title","description","closeButton","footer","footerButtons","previousButton","createPopover","_ref2$nextBtnText","nextBtnText","_ref2$prevBtnText","prevBtnText","_ref2$progressText","progressText","showButtonsConfig","showProgressConfig","showFooter","disabledButtonsConfig","popoverWrapper","customPopoverClass","popoverClass","_b2","onNextClick","onPrevClick","onCloseClick","onPopoverRender","focusableElement","getPopoverDimensions","boundingClientRect","realWidth","realHeight","calculateTopForLeftRight","elementDimensions","popoverDimensions","popoverPadding","popoverArrowDimensions","calculateLeftForTopBottom","_ref3$align","align","_ref3$side","requiredAlignment","requiredSide","topValue","isTopOptimal","bottomValue","isBottomOptimal","leftValue","isLeftOptimal","rightValue","isRightOptimal","noneOptimal","popoverRenderedSide","leftToSet","topToSet","leftValue2","rightToSet","bottomToSet","popoverArrow","popoverWidth","windowWidth","elementWidth","elementLeft","popoverHeight","windowHeight","elementTop","elementHeight","arrowSide","arrowAlignment","renderPopoverArrow","moveNext","activeIndex","steps","nextStepIndex","drive","movePrevious","previousStepIndex","handleArrowLeft","handleArrowRight","_f","_g","_h","stepIndex","hasNextStep","hasPreviousStep","doneBtnText","allowsClosing","progressTextReplaced","configuredButtons","calculatedButtons","withOnDestroyStartedHook","activeOnDestroyed","onDestroyStarted","onDestroyed","destroyPopover","destroyHighlight","isActiveDummyElement","setConfig","setSteps","getActiveIndex","isFirstStep","isLastStep","getActiveStep","getActiveElement","getPreviousElement","getPreviousStep","moveTo","localStorageKey","pointerContainerId","copilotJoinedContainerId","_canPlayAudio","GleapCopilotTours","_scrollListeners","_currentAnchor","_currentStep","_scrollDebounceTimer","productTourId","currentActiveIndex","productTourData","updatePointerPosition","onCompleteCallback","scrollableAncestors","getScrollableAncestors","_pointerContainer","yPosition","targetScrollPosition","scrollTo","smoothScrollToY","removeScrollListeners","pollCount","updateFinalPosition","isElementFullyVisible","targetX","targetY","containerWidthSpace","attachScrollListeners","currentAudio","pause","copilotInfoContainer","_GleapConfigManager$g","_GleapConfigManager$g2","_this$productTourData3","_this$productTourData4","_this$productTourData5","_this$productTourData6","_this$productTourData","_this$productTourData2","contrastColor","playVoice","gradient","svgMouse","infoBubble","kaiAvatar","kaiSlug","completeTour","canPlayAudio","supported","setupCopilotTour","showUnmuteModal","showAudioUnmuteModal","renderNextStep","_this$productTourData7","_this$productTourData8","_this$productTourData9","modalOverlay","modal","unmuteModalTitle","unmuteButton","unmuteModalButton","startAnywayButton","unmuteModalContinue","_this7","handleStep","gotToNextStep","_currentStep$inputTyp","proceedClickmode","storeUncompletedTour","inputType","handleInputEvent","_e$target","once","_currentStep$inputVal","inputValue","typeCharacter","wave","performClickAnimation","tempDiv","htmlToPlainText","readTime","wordCount","ceil","estimateReadTime","continueWithNoAudio","voice","elementPromise","maxAttempts","attempts","interval","waitForElement","_self$productTourData","tourType","gleapTourObj","delay","manually","validateProductTour","onComplete","comData","clearUncompletedTour","startWithConfig","unmuted","driverSteps","isClickMode","isInputMode","hasSender","videoUrl","senderHTML","firstName","driverStep","buttons","backButton","allowKeyboardControl","nextText","doneText","prevText","_config$state","onDocumentClick","popoverElement","mediaElements","performRequentialRefresh","mediaElement","playingClass","playPauseContainer","videoElement","videoContainer","clickVideo","evnt","gleapTourPopover","_evnt$target","__originalGetContext","GleapChecklist","_HTMLElement","_assertThisInitialized","_callSuper","handleChecklistUpdate","handleSessionUpdate","_networkManager","_boundFloatingLauncherClick","handleFloatingLauncherClick","_boundFloatingCloseClick","handleFloatingCloseClick","_floatingHideTimeout","_inherits","_wrapNativeSuper","_boundHandleChecklistUpdate","_boundHandleSessionUpdate","_boundResizeHandler","handleResize","_checkSessionAndLoad","removeFloatingClickListeners","checklistData","_hasLoaded","_isSessionReady","_initialActiveSet","renderResponse","updateActiveTaskMaxHeight","loadChecklist","renderChecklist","_getGleapSessionInstance","hasChecklistId","defaultValue","translateTextWithVars","validateChecklist","_isMock","isConnected","fetchChecklist","_isInitialLoad","_this3$checklistData$","_data$outbound","completedSteps","firstIncompleteIndex","findIndex","_session$gleapId","_session$gleapHash","checkedStep","makeRequest","updateData","_this$checklistData$o3","previousCompletedSteps","dataChanged","activeStepCompleted","currentlyActiveStepIndex","_this$checklistData$o","activeStepId","_this$checklistData$o2","nextActiveStep","setActiveStep","tasks","launcher","_outbound$config","_this$checklistData","renderDoneState","progressbarEnabled","doneSteps","_outbound$config2","_outbound$config3","nextIncompleteStep","titleText","_translateWithVars","subject","subtitleText","successTitle","successMessage","circumference","PI","computedOffset","isHeader","toFixed","_outbound$sender","infoEnabled","_translate","senderHtml","progressLabel","durationLabel","isTaskDone","badge","getCheckIcon","stepTitle","stepDescription","actionButtonText","actionTitle","actionHtml","markDoneLabel","markDoneHtml","allowMarkDone","taskClasses","_outbound$config4","_outbound$config5","_outbound$config6","floatingEnabled","renderFloatingLauncher","renderInfoSection","renderProgressSection","renderTasks","addTaskEventListeners","addFloatingClickListeners","toggleTask","taskBodyInner","task","newActiveStep","markDoneBtn","_this5$checklistData","previouslyActiveStep","_this5$checklistData$","stepId","allSteps","isModalOpen","tasksModal","_this5$checklistData$2","updateChecklist","actionBtn","_this5$checklistData2","actionBody","openURL","actionOpenInNewTab","gleapError","previousActiveStep","tasksToToggle","forceOpen","taskElement","isOpen","shouldOpen","taskBody","registerGleapChecklist","offlineMode","hostname","injectNotificationUI","actions","_action$data","popupType","disableInAppNotifications","showNotification","showBanner","showModal","startProductTourWithConfig","globalData","replayData","getReplayData","setTags","setUrlHandler","tools","setAiTools","updateContainerHeight","initialHeight","fixGleapHeight","checkForUncompletedTour","checkForUrlParams","urlParams","URLSearchParams","widget","conversationFlow","startConversation","feedbackFlow","surveyFlow","surveyFlowFormat","tourDelay","identifySession","updateSession","setMaxRequests","setOptions","cleanedData","formPreFill","toggleFeedbackButton","setAppVersionCode","setAppBuildNumber","setBannerUrl","setModalUrl","setTicketAttribute","unsetTicketAttribute","clearTicketAttributes","attachCustomData","setCustomData","removeCustomData","clearCustomData","playSound","showNotificationBadge","notificationInstance","setOverrideLanguage","softReInitialize","updateContact","registerCustomAction","buttonStyle","contrastButtonColor","contrastBackgroundColor","contrastHeaderColor","isDarkMode","headerDarkColor","subTextColor","backgroundColorHover","hoverHoverColor","buttonBorderRadius","containerRadius","chatRadius","formItemBorderRadius","formItemSmallBorderRadius","bottomInfoOffset","colorStyleSheet","zIndexBase","injectStyledCSS","replays","attachments","sendSilentCrashReportWithFormData","silentCrashReportSent","excludeDataCleaned","newFormData","hideBackButton","showBackButton","flow","collectionId","term","networkManager","checkStartUrl","startProductTourConfig","startURL","loadUncompletedTour","GleapActions","GLAction","urlParts","identifier","openHelpCenterCollection"],"sourceRoot":""} \ No newline at end of file diff --git a/demo/main.js b/demo/main.js index 6ff68ec5..8da2771b 100755 --- a/demo/main.js +++ b/demo/main.js @@ -1,10 +1,10 @@ const Gleap = window.Gleap; -Gleap.setFrameUrl("http://0.0.0.0:3001"); -Gleap.setApiUrl("http://0.0.0.0:9000"); -Gleap.setWSApiUrl("ws://0.0.0.0:9000"); +// Gleap.setFrameUrl("http://0.0.0.0:3001"); +// Gleap.setApiUrl("http://0.0.0.0:9000"); +// Gleap.setWSApiUrl("ws://0.0.0.0:9000"); -Gleap.initialize("iv2ADfF8Od1IaA0Bwg3Xcmc6NfonaZlg"); +Gleap.initialize("ogWhNhuiZcGWrva5nlDS8l7a78OfaLlV"); Gleap.identify("38473294732892", { name: "Luca", diff --git a/published/14.8.11/index.js b/published/14.8.11/index.js index fd2e2c0d..c174c431 100644 --- a/published/14.8.11/index.js +++ b/published/14.8.11/index.js @@ -1,2 +1,2 @@ -(()=>{var e={d:(t,n)=>{for(var o in n)e.o(n,o)&&!e.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:n[o]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};(()=>{"use strict";function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function o(e,t){for(var n=0;nUm});var a=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),r(this,"feedbackButton",null),r(this,"injectedFeedbackButton",!1),r(this,"buttonHidden",null),r(this,"lastButtonIcon",null)}var t,n,i;return t=e,i=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],(n=[{key:"destroy",value:function(){this.feedbackButton&&(this.feedbackButton.remove(),this.feedbackButton=null),this.buttonHidden=null,this.lastButtonIcon=null,this.injectedFeedbackButton=!1,this.instance=null}},{key:"toggleFeedbackButton",value:function(t){this.buttonHidden=!t,e.getInstance().updateFeedbackButtonState(),Mh.getInstance().updateContainerStyle()}},{key:"feedbackButtonPressed",value:function(){var e=Vt.getInstance();e.isOpened()?e.hideWidget():(e.setAppMode("widget"),e.showWidget())}},{key:"injectFeedbackButton",value:function(){var e=this;if(!this.injectedFeedbackButton){this.injectedFeedbackButton=!0;var t=document.createElement("div");t.addEventListener("click",(function(){e.feedbackButtonPressed()})),document.body.appendChild(t),this.feedbackButton=t,this.updateFeedbackButtonState()}}},{key:"updateNotificationBadge",value:function(e){var t=document.querySelector(".bb-notification-bubble");if(t){var n="bb-notification-bubble--hidden";e>0&&!Vt.getInstance().isOpened()?(t.classList.remove(n),t.innerText=e):t.classList.add(n)}}},{key:"refresh",value:function(){document.querySelector(".bb-feedback-button")?(this.updateFeedbackButtonText(),this.updateFeedbackButtonState()):(this.injectedFeedbackButton=!1,this.feedbackButton=null,this.buttonHidden=null,this.lastButtonIcon=null,this.injectFeedbackButton())}},{key:"updateFeedbackButtonText",value:function(){var t=dt.getInstance().getFlowConfig();if(t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC||t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC_BOTTOM||t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC_LEFT){var n=document.querySelector(".bb-feedback-button-classic");n&&(n.innerText=t.widgetButtonText)}}},{key:"updateFeedbackButtonState",value:function(){if(null!==this.feedbackButton){var t=dt.getInstance().getFlowConfig(),n="";n=t.buttonLogo?''):p("button","#fff"),this.feedbackButton.className="bb-feedback-button gleap-font gl-block",this.feedbackButton.setAttribute("dir",gh.getInstance().isRTLLayout?"rtl":"ltr"),t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC||t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC_BOTTOM||t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC_LEFT?(this.feedbackButton.classList.add("bb-feedback-button--classic-button-style"),this.feedbackButton.innerHTML='
').concat(t.widgetButtonText,"
")):n!==this.lastButtonIcon&&(this.feedbackButton.innerHTML='
'.concat(n).concat(p("arrowdown","#fff"),'
')),this.lastButtonIcon=n;var o=!1;null===e.getInstance().buttonHidden?t.feedbackButtonPosition===e.FEEDBACK_BUTTON_NONE&&(o=!0):e.getInstance().buttonHidden&&(o=!0),o&&this.feedbackButton.classList.add("bb-feedback-button--disabled"),t.feedbackButtonPosition===e.FEEDBACK_BUTTON_BOTTOM_LEFT&&this.feedbackButton.classList.add("bb-feedback-button--bottomleft"),Vt.getInstance().isOpened()&&this.feedbackButton.classList.add("bb-feedback-button--open");var r=Vt.getInstance().appMode;"survey"!==r&&"survey_full"!==r&&"survey_web"!==r||this.feedbackButton.classList.add("bb-feedback-button--survey"),!0!==t.hideForGuests||et.getInstance().isUser()||this.feedbackButton.classList.add("bb-feedback-button--hidden")}}}])&&o(t.prototype,n),i&&o(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}();function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var o,r,i,a,s=[],l=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(o=i.call(n)).done)&&(s.push(o.value),s.length!==t);l=!0);}catch(e){c=!0,r=e}finally{try{if(!l&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(c)throw r}}return s}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return c(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return c(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n=160?"#000000":"#ffffff"},p=function(e,t){return"button"===e?'':"drag"===e?'\x3c!--!Font Awesome Pro 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2025 Fonticons, Inc.--\x3e':"unmute"===e?'':"mute"===e?'':"replay"===e?'\n \n ':"dismiss"===e?'':"blur"===e?'\n \n':"pen"===e?'\n \n \n \n \n \n \n \n \n \n \n \n \n':"rect"===e?'\n \n \n \n \n \n \n \n \n \n \n':"pointer"===e?'\n \n ':"clip"===e?'\n \n \n \n \n \n':"mic"===e?'\n \n \n \n \n ':"camera"===e?'\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n':"recorderon"===e?'\n \n \n \n \n \n \n \n \n \n \n \n':"recorderoff"===e?'\n \n \n \n \n \n \n \n \n ':"arrowdown"===e?'\n \n '):"arrowleft"===e?'\n \n '):"close"===e?'\n \n '):"undo"===e?'\n \n \n \n \n \n \n \n \n \n ':"circle-dot"===e?''):"circle-question"===e?''):"circle-info"===e?''):"circle-exclamation"===e?''):"circle-up"===e?''):"circle-right"===e?''):""};function h(e){return h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},h(e)}function f(e,t){for(var n=0;n0&&(e=e.concat(this.externalRequests)),this.filters&&this.filters.length>0)for(var t=0;t-1)&&!e.find((function(e){return e.url===s.name}))&&e.push({type:"RESOURCE",date:new Date(this.startTimestamp+s.startTime),url:s.name,duration:Math.round(s.duration),initiatorType:s.initiatorType})}}}catch(u){}var l=this.blacklist.concat(this.defaultBlacklist);if(l&&l.length>0)try{e=e.filter((function(e){for(var t=0;t70&&(e=70),this.maxRequests=e}},{key:"setStopped",value:function(e){this.stopped=e}},{key:"setFilters",value:function(e){this.filters=this.filters.concat(e||[])}},{key:"setBlacklist",value:function(e){this.blacklist=this.blacklist.concat(e||[])}},{key:"cleanRequests",value:function(){var e=Object.keys(this.requests);if(e.length>this.maxRequests)for(var t=e.slice(0,e.length-this.maxRequests),n=0;n.15?"":e}},{key:"cleanupPayload",value:function(e){if(null==e)return"{}";try{if(void 0!==("undefined"==typeof TextDecoder?"undefined":h(TextDecoder))&&ArrayBuffer.isView(e))return(new TextDecoder).decode(e)}catch(t){}return e}},{key:"preparePayload",value:function(e){var t=this.cleanupPayload(e);return this.cleanupContentSize(t)}},{key:"start",value:function(){var e=this;if(!this.initialized){this.initialized=!0;var t=this;this.interceptNetworkRequests({onFetch:function(n,o){if(!e.stopped&&o&&e.requests){if(n.length>0&&void 0!==n[0]&&void 0!==n[0].url)e.requests[o]={url:n[0].url,date:new Date,request:{payload:"",headers:void 0!==n[0].headers?Object.fromEntries(n[0].headers.entries()):{}},type:void 0!==n[0].method?n[0].method:""};else if(n.length>=2&&n[1]){var r=n[1]&&n[1].method?n[1].method:"GET";e.requests[o]={request:{payload:t.preparePayload(n[1].body),headers:n[1].headers},type:r,url:n[0],date:new Date}}else e.requests[o]={url:n[0],date:new Date};e.cleanRequests()}},onFetchLoad:function(n,o){if(!e.stopped&&o&&e.requests&&e.requests[o]){try{e.requests[o].success=!0,e.requests[o].response={status:n.status,statusText:"",responseText:""},e.calcRequestTime(o)}catch(i){}try{var r="";n.headers&&void 0!==n.headers.get&&(r=n.headers.get("content-type")),e.isContentTypeSupported(r)?n.text().then((function(r){e.requests[o]&&(e.requests[o].success=!0,e.requests[o].response={status:n.status,statusText:n.statusText,responseText:t.cleanupContentSize(r)}),e.calcRequestTime(o),e.cleanRequests()})).catch((function(t){e.cleanRequests()})):(e.requests[o]&&(e.requests[o].success=!0,e.requests[o].response={status:n.status,statusText:n.statusText,responseText:""}),e.calcRequestTime(o),e.cleanRequests())}catch(i){}}},onFetchFailed:function(t,n){!e.stopped&&n&&e.requests&&e.requests[n]&&(e.requests[n].success=!1,e.calcRequestTime(n),e.cleanRequests())},onOpen:function(t,n){e.stopped||(t&&t.bbRequestId&&n.length>=2&&e.requests&&(e.requests[t.bbRequestId]={type:n[0],url:n[1],date:new Date}),e.cleanRequests())},onSend:function(t,n){e.stopped||(t&&t.bbRequestId&&e.requests&&e.requests[t.bbRequestId]&&(e.requests[t.bbRequestId].request={payload:e.preparePayload(n.length>0?n[0]:"{}"),headers:t.requestHeaders}),e.cleanRequests())},onError:function(t,n){!e.stopped&&e.requests&&t&&t.currentTarget&&t.currentTarget.bbRequestId&&e.requests[t.currentTarget.bbRequestId]&&(e.requests[t.currentTarget.bbRequestId].success=!1,e.calcRequestTime(t.bbRequestId)),e.cleanRequests()},onLoad:function(t,n){if(!e.stopped){if(t&&t.currentTarget&&t.currentTarget.bbRequestId&&e.requests&&e.requests[t.currentTarget.bbRequestId]){var o=t.currentTarget,r=o.responseType,i="<"+r+">";""!==r&&"text"!==r||(i=e.cleanupContentSize(o.responseText)),e.requests[o.bbRequestId].success=!0,e.requests[o.bbRequestId].response={status:o.status,statusText:o.statusText,responseText:i},e.calcRequestTime(o.bbRequestId)}e.cleanRequests()}}})}}},{key:"interceptNetworkRequests",value:function(e){var t,n=this,o=XMLHttpRequest.prototype.open,r=XMLHttpRequest.prototype.send;return void 0===XMLHttpRequest.prototype.gleapSetRequestHeader&&(XMLHttpRequest.prototype.gleapSetRequestHeader=XMLHttpRequest.prototype.setRequestHeader),XMLHttpRequest.prototype.gleapSetRequestHeader&&(XMLHttpRequest.prototype.setRequestHeader=function(e,t){this.requestHeaders||(this.requestHeaders={}),this.requestHeaders&&this.requestHeaders.hasOwnProperty(e)||(this.requestHeaders[e]||(this.requestHeaders[e]=[]),this.requestHeaders[e].push(t),this.gleapSetRequestHeader(e,t))}),XMLHttpRequest.prototype.open=function(){return this.bbRequestId=++n.requestId,e.onOpen&&e.onOpen(this,arguments),e.onLoad&&this.addEventListener("load",e.onLoad.bind(e)),e.onError&&this.addEventListener("error",e.onError.bind(e)),o.apply(this,arguments)},XMLHttpRequest.prototype.send=function(){return e.onSend&&e.onSend(this,arguments),r.apply(this,arguments)},window.fetch&&(t=window.fetch,window.fetch=function(){var o=++n.requestId;return e.onFetch(arguments,o),t.apply(this,arguments).then((function(t){if(t&&"function"==typeof t.clone){var n=t.clone();e.onFetchLoad(n,o)}return t})).catch((function(t){throw e.onFetchFailed(t,o),t}))}),e}},{key:"blobToTextPromise",value:function(e){return new Promise((function(t,n){var o=new FileReader;o.onload=function(e){e&&e.target&&e.target.result?t(e.target.result):n()},o.onerror=function(e){n(e)},o.readAsText(e)}))}}],o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],n&&f(t.prototype,n),o&&f(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();m(v,"instance",void 0);const y=v;var b=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:400,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:400;return new Promise((function(o,r){var i=0===e.indexOf("data:image/jpeg"),a=new Image;a.src=e,a.onerror=function(){r()},a.onload=function(){var e=document.createElement("canvas"),r=t,s=n;t>a.width/1.5&&(r=a.width/1.5),n>a.height/1.5&&(s=a.height/1.5);var l=a.width,c=a.height;l>c?l>r&&(c*=r/l,l=r):c>s&&(l*=s/c,c=s),e.width=l,e.height=c,e.getContext("2d").drawImage(a,0,0,l,c),o(i?e.toDataURL("image/jpeg",.7):e.toDataURL())}}))},w=function(){return!(!/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(navigator.userAgent)&&!/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(navigator.userAgent.substr(0,4)))},k=function(e){if("string"==typeof e||e instanceof String)try{return JSON.parse(e)}catch(t){return{}}return e},x=function(e,t){return e.length>t?e.slice(0,t)+"...":e},S=function(e){try{var t=e.split("."),n=!1,o=t[t.length-2];return"co"!==o&&"com"!==o&&"gv"!==o&&"ac"!==o&&"edu"!==o&&"gov"!==o&&"mil"!==o&&"net"!==o&&"org"!==o||(n=!0),(t=t.slice(n?-3:-2)).join(".")}catch(r){}return e},C=function(e){try{var t=localStorage.getItem("gleap-widget-".concat(e));if(t)return JSON.parse(t)}catch(n){}return null},I=function(e,t){var n="gleap-widget-".concat(e);if(t)try{localStorage.setItem(n,JSON.stringify(t))}catch(o){}else localStorage.removeItem(n)},O=function(e){"complete"===document.readyState||"loaded"===document.readyState||"interactive"===document.readyState?e():document.addEventListener("DOMContentLoaded",(function(){e()}))};function E(e){return E="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},E(e)}function T(e,t){for(var n=0;n=200&&i.status<300)try{var e=i.responseText?JSON.parse(i.responseText):null;o(e)}catch(t){r({status:i.status,statusText:"JSON Parse Error",responseText:i.responseText,error:t})}else r({status:i.status,statusText:i.statusText,responseText:i.responseText})},i.onerror=function(){r({status:0,statusText:"Network Error",responseText:null})},i.send(n?JSON.stringify(n):null)}))}},{key:"_createCacheKey",value:function(e,t){return t?"".concat(e,"::").concat(t):e}},{key:"validateChecklist",value:function(e,t){var n=this,o=this._createCacheKey(e,t),r=this.validationCache.get(o);if(r)return r.status===M?Promise.resolve(r.internalId):Promise.reject(r.error);if(this.validationRequests.has(o))return this.validationRequests.get(o);var i=this._getApiUrl();if(!i){var a=new Error("ChecklistNetworkManager: Gleap API URL not configured.");return this.validationCache.set(o,{status:R,error:a}),Promise.reject(a)}var s="".concat(i,"/outbound/checklists?").concat(this._getQueryParams()),l=this._makeRequest("POST",s,{outboundId:e,sharedKey:t}).then((function(e){if(e&&e.id)return n.validationCache.set(o,{status:M,internalId:e.id}),e.id;var t=new Error("Validation response missing checklist ID.");throw n.validationCache.set(o,{status:R,error:e||t}),t})).catch((function(e){throw n.validationCache.set(o,{status:R,error:e}),e})).finally((function(){n.validationRequests.delete(o)}));return this.validationRequests.set(o,l),l}},{key:"fetchChecklist",value:function(e){var t=this,n=this.fetchCache.get(e);if(n)return n.status===M?Promise.resolve(JSON.parse(JSON.stringify(n.data))):Promise.reject(n.error);if(this.fetchRequests.has(e))return this.fetchRequests.get(e).then((function(e){return JSON.parse(JSON.stringify(e))}));var o=this._getApiUrl();if(!o){var r=new Error("ChecklistNetworkManager: Gleap API URL not configured.");return this.fetchCache.set(e,{status:R,error:r}),Promise.reject(r)}var i="".concat(o,"/outbound/checklists/").concat(e,"?convertTipTap=true&").concat(this._getQueryParams()),a=this._makeRequest("GET",i,null).then((function(n){if(n)return t.fetchCache.set(e,{status:M,data:n}),JSON.parse(JSON.stringify(n));var o=new Error("Empty response received for checklist fetch.");throw t.fetchCache.set(e,{status:R,error:n||o}),o})).catch((function(n){throw t.fetchCache.set(e,{status:R,error:n}),n})).finally((function(){t.fetchRequests.delete(e)}));return this.fetchRequests.set(e,a),a.then((function(e){return JSON.parse(JSON.stringify(e))}))}}],o=[{key:"getInstance",value:function(){return e.instance||(e.instance=new e),e.instance}}],n&&T(t.prototype,n),o&&T(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();L(P,"instance",null);const D=P,N=Math.min,j=Math.max,F=Math.round,B=Math.floor,_=e=>({x:e,y:e}),U={left:"right",right:"left",bottom:"top",top:"bottom"},H={start:"end",end:"start"};function z(e,t,n){return j(e,N(t,n))}function q(e,t){return"function"==typeof e?e(t):e}function W(e){return e.split("-")[0]}function G(e){return e.split("-")[1]}function V(e){return"x"===e?"y":"x"}function J(e){return"y"===e?"height":"width"}function Z(e){return["top","bottom"].includes(W(e))?"y":"x"}function K(e){return V(Z(e))}function Y(e){return e.replace(/start|end/g,(e=>H[e]))}function X(e){return e.replace(/left|right|bottom|top/g,(e=>U[e]))}function $(e){return"number"!=typeof e?function(e){return{top:0,right:0,bottom:0,left:0,...e}}(e):{top:e,right:e,bottom:e,left:e}}function Q(e){return{...e,top:e.y,left:e.x,right:e.x+e.width,bottom:e.y+e.height}}function ee(e,t,n){let{reference:o,floating:r}=e;const i=Z(t),a=K(t),s=J(a),l=W(t),c="y"===i,u=o.x+o.width/2-r.width/2,d=o.y+o.height/2-r.height/2,p=o[s]/2-r[s]/2;let h;switch(l){case"top":h={x:u,y:o.y-r.height};break;case"bottom":h={x:u,y:o.y+o.height};break;case"right":h={x:o.x+o.width,y:d};break;case"left":h={x:o.x-r.width,y:d};break;default:h={x:o.x,y:o.y}}switch(G(t)){case"start":h[a]-=p*(n&&c?-1:1);break;case"end":h[a]+=p*(n&&c?-1:1)}return h}async function te(e,t){var n;void 0===t&&(t={});const{x:o,y:r,platform:i,rects:a,elements:s,strategy:l}=e,{boundary:c="clippingAncestors",rootBoundary:u="viewport",elementContext:d="floating",altBoundary:p=!1,padding:h=0}=q(t,e),f=$(h),m=s[p?"floating"===d?"reference":"floating":d],g=Q(await i.getClippingRect({element:null==(n=await(null==i.isElement?void 0:i.isElement(m)))||n?m:m.contextElement||await(null==i.getDocumentElement?void 0:i.getDocumentElement(s.floating)),boundary:c,rootBoundary:u,strategy:l})),v="floating"===d?{...a.floating,x:o,y:r}:a.reference,y=await(null==i.getOffsetParent?void 0:i.getOffsetParent(s.floating)),b=await(null==i.isElement?void 0:i.isElement(y))&&await(null==i.getScale?void 0:i.getScale(y))||{x:1,y:1},w=Q(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:s,rect:v,offsetParent:y,strategy:l}):v);return{top:(g.top-w.top+f.top)/b.y,bottom:(w.bottom-g.bottom+f.bottom)/b.y,left:(g.left-w.left+f.left)/b.x,right:(w.right-g.right+f.right)/b.x}}const ne=function(e){return void 0===e&&(e=0),{name:"offset",options:e,async fn(t){var n,o;const{x:r,y:i,placement:a,middlewareData:s}=t,l=await async function(e,t){const{placement:n,platform:o,elements:r}=e,i=await(null==o.isRTL?void 0:o.isRTL(r.floating)),a=W(n),s=G(n),l="y"===Z(n),c=["left","top"].includes(a)?-1:1,u=i&&l?-1:1,d=q(t,e);let{mainAxis:p,crossAxis:h,alignmentAxis:f}="number"==typeof d?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...d};return s&&"number"==typeof f&&(h="end"===s?-1*f:f),l?{x:h*u,y:p*c}:{x:p*c,y:h*u}}(t,e);return a===(null==(n=s.offset)?void 0:n.placement)&&null!=(o=s.arrow)&&o.alignmentOffset?{}:{x:r+l.x,y:i+l.y,data:{...l,placement:a}}}}};function oe(e){return ae(e)?(e.nodeName||"").toLowerCase():"#document"}function re(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function ie(e){var t;return null==(t=(ae(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement}function ae(e){return e instanceof Node||e instanceof re(e).Node}function se(e){return e instanceof Element||e instanceof re(e).Element}function le(e){return e instanceof HTMLElement||e instanceof re(e).HTMLElement}function ce(e){return"undefined"!=typeof ShadowRoot&&(e instanceof ShadowRoot||e instanceof re(e).ShadowRoot)}function ue(e){const{overflow:t,overflowX:n,overflowY:o,display:r}=me(e);return/auto|scroll|overlay|hidden|clip/.test(t+o+n)&&!["inline","contents"].includes(r)}function de(e){return["table","td","th"].includes(oe(e))}function pe(e){const t=he(),n=me(e);return"none"!==n.transform||"none"!==n.perspective||!!n.containerType&&"normal"!==n.containerType||!t&&!!n.backdropFilter&&"none"!==n.backdropFilter||!t&&!!n.filter&&"none"!==n.filter||["transform","perspective","filter"].some((e=>(n.willChange||"").includes(e)))||["paint","layout","strict","content"].some((e=>(n.contain||"").includes(e)))}function he(){return!("undefined"==typeof CSS||!CSS.supports)&&CSS.supports("-webkit-backdrop-filter","none")}function fe(e){return["html","body","#document"].includes(oe(e))}function me(e){return re(e).getComputedStyle(e)}function ge(e){return se(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function ve(e){if("html"===oe(e))return e;const t=e.assignedSlot||e.parentNode||ce(e)&&e.host||ie(e);return ce(t)?t.host:t}function ye(e){const t=ve(e);return fe(t)?e.ownerDocument?e.ownerDocument.body:e.body:le(t)&&ue(t)?t:ye(t)}function be(e,t,n){var o;void 0===t&&(t=[]),void 0===n&&(n=!0);const r=ye(e),i=r===(null==(o=e.ownerDocument)?void 0:o.body),a=re(r);return i?t.concat(a,a.visualViewport||[],ue(r)?r:[],a.frameElement&&n?be(a.frameElement):[]):t.concat(r,be(r,[],n))}function we(e){const t=me(e);let n=parseFloat(t.width)||0,o=parseFloat(t.height)||0;const r=le(e),i=r?e.offsetWidth:n,a=r?e.offsetHeight:o,s=F(n)!==i||F(o)!==a;return s&&(n=i,o=a),{width:n,height:o,$:s}}function ke(e){return se(e)?e:e.contextElement}function xe(e){const t=ke(e);if(!le(t))return _(1);const n=t.getBoundingClientRect(),{width:o,height:r,$:i}=we(t);let a=(i?F(n.width):n.width)/o,s=(i?F(n.height):n.height)/r;return a&&Number.isFinite(a)||(a=1),s&&Number.isFinite(s)||(s=1),{x:a,y:s}}const Se=_(0);function Ce(e){const t=re(e);return he()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:Se}function Ie(e,t,n,o){void 0===t&&(t=!1),void 0===n&&(n=!1);const r=e.getBoundingClientRect(),i=ke(e);let a=_(1);t&&(o?se(o)&&(a=xe(o)):a=xe(e));const s=function(e,t,n){return void 0===t&&(t=!1),!(!n||t&&n!==re(e))&&t}(i,n,o)?Ce(i):_(0);let l=(r.left+s.x)/a.x,c=(r.top+s.y)/a.y,u=r.width/a.x,d=r.height/a.y;if(i){const e=re(i),t=o&&se(o)?re(o):o;let n=e,r=n.frameElement;for(;r&&o&&t!==n;){const e=xe(r),t=r.getBoundingClientRect(),o=me(r),i=t.left+(r.clientLeft+parseFloat(o.paddingLeft))*e.x,a=t.top+(r.clientTop+parseFloat(o.paddingTop))*e.y;l*=e.x,c*=e.y,u*=e.x,d*=e.y,l+=i,c+=a,n=re(r),r=n.frameElement}}return Q({width:u,height:d,x:l,y:c})}const Oe=[":popover-open",":modal"];function Ee(e){return Oe.some((t=>{try{return e.matches(t)}catch(n){return!1}}))}function Te(e){return Ie(ie(e)).left+ge(e).scrollLeft}function Le(e,t,n){let o;if("viewport"===t)o=function(e,t){const n=re(e),o=ie(e),r=n.visualViewport;let i=o.clientWidth,a=o.clientHeight,s=0,l=0;if(r){i=r.width,a=r.height;const e=he();(!e||e&&"fixed"===t)&&(s=r.offsetLeft,l=r.offsetTop)}return{width:i,height:a,x:s,y:l}}(e,n);else if("document"===t)o=function(e){const t=ie(e),n=ge(e),o=e.ownerDocument.body,r=j(t.scrollWidth,t.clientWidth,o.scrollWidth,o.clientWidth),i=j(t.scrollHeight,t.clientHeight,o.scrollHeight,o.clientHeight);let a=-n.scrollLeft+Te(e);const s=-n.scrollTop;return"rtl"===me(o).direction&&(a+=j(t.clientWidth,o.clientWidth)-r),{width:r,height:i,x:a,y:s}}(ie(e));else if(se(t))o=function(e,t){const n=Ie(e,!0,"fixed"===t),o=n.top+e.clientTop,r=n.left+e.clientLeft,i=le(e)?xe(e):_(1);return{width:e.clientWidth*i.x,height:e.clientHeight*i.y,x:r*i.x,y:o*i.y}}(t,n);else{const n=Ce(e);o={...t,x:t.x-n.x,y:t.y-n.y}}return Q(o)}function Ae(e,t){const n=ve(e);return!(n===t||!se(n)||fe(n))&&("fixed"===me(n).position||Ae(n,t))}function Me(e,t,n){const o=le(t),r=ie(t),i="fixed"===n,a=Ie(e,!0,i,t);let s={scrollLeft:0,scrollTop:0};const l=_(0);if(o||!o&&!i)if(("body"!==oe(t)||ue(r))&&(s=ge(t)),o){const e=Ie(t,!0,i,t);l.x=e.x+t.clientLeft,l.y=e.y+t.clientTop}else r&&(l.x=Te(r));return{x:a.left+s.scrollLeft-l.x,y:a.top+s.scrollTop-l.y,width:a.width,height:a.height}}function Re(e,t){return le(e)&&"fixed"!==me(e).position?t?t(e):e.offsetParent:null}function Pe(e,t){const n=re(e);if(!le(e)||Ee(e))return n;let o=Re(e,t);for(;o&&de(o)&&"static"===me(o).position;)o=Re(o,t);return o&&("html"===oe(o)||"body"===oe(o)&&"static"===me(o).position&&!pe(o))?n:o||function(e){let t=ve(e);for(;le(t)&&!fe(t);){if(pe(t))return t;t=ve(t)}return null}(e)||n}const De={convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{elements:t,rect:n,offsetParent:o,strategy:r}=e;const i="fixed"===r,a=ie(o),s=!!t&&Ee(t.floating);if(o===a||s&&i)return n;let l={scrollLeft:0,scrollTop:0},c=_(1);const u=_(0),d=le(o);if((d||!d&&!i)&&(("body"!==oe(o)||ue(a))&&(l=ge(o)),le(o))){const e=Ie(o);c=xe(o),u.x=e.x+o.clientLeft,u.y=e.y+o.clientTop}return{width:n.width*c.x,height:n.height*c.y,x:n.x*c.x-l.scrollLeft*c.x+u.x,y:n.y*c.y-l.scrollTop*c.y+u.y}},getDocumentElement:ie,getClippingRect:function(e){let{element:t,boundary:n,rootBoundary:o,strategy:r}=e;const i="clippingAncestors"===n?function(e,t){const n=t.get(e);if(n)return n;let o=be(e,[],!1).filter((e=>se(e)&&"body"!==oe(e))),r=null;const i="fixed"===me(e).position;let a=i?ve(e):e;for(;se(a)&&!fe(a);){const t=me(a),n=pe(a);n||"fixed"!==t.position||(r=null),(i?!n&&!r:!n&&"static"===t.position&&r&&["absolute","fixed"].includes(r.position)||ue(a)&&!n&&Ae(e,a))?o=o.filter((e=>e!==a)):r=t,a=ve(a)}return t.set(e,o),o}(t,this._c):[].concat(n),a=[...i,o],s=a[0],l=a.reduce(((e,n)=>{const o=Le(t,n,r);return e.top=j(o.top,e.top),e.right=N(o.right,e.right),e.bottom=N(o.bottom,e.bottom),e.left=j(o.left,e.left),e}),Le(t,s,r));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}},getOffsetParent:Pe,getElementRects:async function(e){const t=this.getOffsetParent||Pe,n=this.getDimensions;return{reference:Me(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,...await n(e.floating)}}},getClientRects:function(e){return Array.from(e.getClientRects())},getDimensions:function(e){const{width:t,height:n}=we(e);return{width:t,height:n}},getScale:xe,isElement:se,isRTL:function(e){return"rtl"===me(e).direction}};function Ne(e,t,n,o){void 0===o&&(o={});const{ancestorScroll:r=!0,ancestorResize:i=!0,elementResize:a="function"==typeof ResizeObserver,layoutShift:s="function"==typeof IntersectionObserver,animationFrame:l=!1}=o,c=ke(e),u=r||i?[...c?be(c):[],...be(t)]:[];u.forEach((e=>{r&&e.addEventListener("scroll",n,{passive:!0}),i&&e.addEventListener("resize",n)}));const d=c&&s?function(e,t){let n,o=null;const r=ie(e);function i(){var e;clearTimeout(n),null==(e=o)||e.disconnect(),o=null}return function a(s,l){void 0===s&&(s=!1),void 0===l&&(l=1),i();const{left:c,top:u,width:d,height:p}=e.getBoundingClientRect();if(s||t(),!d||!p)return;const h={rootMargin:-B(u)+"px "+-B(r.clientWidth-(c+d))+"px "+-B(r.clientHeight-(u+p))+"px "+-B(c)+"px",threshold:j(0,N(1,l))||1};let f=!0;function m(e){const t=e[0].intersectionRatio;if(t!==l){if(!f)return a();t?a(!1,t):n=setTimeout((()=>{a(!1,1e-7)}),100)}f=!1}try{o=new IntersectionObserver(m,{...h,root:r.ownerDocument})}catch(g){o=new IntersectionObserver(m,h)}o.observe(e)}(!0),i}(c,n):null;let p,h=-1,f=null;a&&(f=new ResizeObserver((e=>{let[o]=e;o&&o.target===c&&f&&(f.unobserve(t),cancelAnimationFrame(h),h=requestAnimationFrame((()=>{var e;null==(e=f)||e.observe(t)}))),n()})),c&&!l&&f.observe(c),f.observe(t));let m=l?Ie(e):null;return l&&function t(){const o=Ie(e);!m||o.x===m.x&&o.y===m.y&&o.width===m.width&&o.height===m.height||n();m=o,p=requestAnimationFrame(t)}(),n(),()=>{var e;u.forEach((e=>{r&&e.removeEventListener("scroll",n),i&&e.removeEventListener("resize",n)})),null==d||d(),null==(e=f)||e.disconnect(),f=null,l&&cancelAnimationFrame(p)}}const je=function(e){return void 0===e&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:o,placement:r}=t,{mainAxis:i=!0,crossAxis:a=!1,limiter:s={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...l}=q(e,t),c={x:n,y:o},u=await te(t,l),d=Z(W(r)),p=V(d);let h=c[p],f=c[d];if(i){const e="y"===p?"bottom":"right";h=z(h+u["y"===p?"top":"left"],h,h-u[e])}if(a){const e="y"===d?"bottom":"right";f=z(f+u["y"===d?"top":"left"],f,f-u[e])}const m=s.fn({...t,[p]:h,[d]:f});return{...m,data:{x:m.x-n,y:m.y-o}}}}},Fe=function(e){return void 0===e&&(e={}),{name:"flip",options:e,async fn(t){var n,o;const{placement:r,middlewareData:i,rects:a,initialPlacement:s,platform:l,elements:c}=t,{mainAxis:u=!0,crossAxis:d=!0,fallbackPlacements:p,fallbackStrategy:h="bestFit",fallbackAxisSideDirection:f="none",flipAlignment:m=!0,...g}=q(e,t);if(null!=(n=i.arrow)&&n.alignmentOffset)return{};const v=W(r),y=W(s)===s,b=await(null==l.isRTL?void 0:l.isRTL(c.floating)),w=p||(y||!m?[X(s)]:function(e){const t=X(e);return[Y(e),t,Y(t)]}(s));p||"none"===f||w.push(...function(e,t,n,o){const r=G(e);let i=function(e,t,n){const o=["left","right"],r=["right","left"],i=["top","bottom"],a=["bottom","top"];switch(e){case"top":case"bottom":return n?t?r:o:t?o:r;case"left":case"right":return t?i:a;default:return[]}}(W(e),"start"===n,o);return r&&(i=i.map((e=>e+"-"+r)),t&&(i=i.concat(i.map(Y)))),i}(s,m,f,b));const k=[s,...w],x=await te(t,g),S=[];let C=(null==(o=i.flip)?void 0:o.overflows)||[];if(u&&S.push(x[v]),d){const e=function(e,t,n){void 0===n&&(n=!1);const o=G(e),r=K(e),i=J(r);let a="x"===r?o===(n?"end":"start")?"right":"left":"start"===o?"bottom":"top";return t.reference[i]>t.floating[i]&&(a=X(a)),[a,X(a)]}(r,a,b);S.push(x[e[0]],x[e[1]])}if(C=[...C,{placement:r,overflows:S}],!S.every((e=>e<=0))){var I,O;const e=((null==(I=i.flip)?void 0:I.index)||0)+1,t=k[e];if(t)return{data:{index:e,overflows:C},reset:{placement:t}};let n=null==(O=C.filter((e=>e.overflows[0]<=0)).sort(((e,t)=>e.overflows[1]-t.overflows[1]))[0])?void 0:O.placement;if(!n)switch(h){case"bestFit":{var E;const e=null==(E=C.map((e=>[e.placement,e.overflows.filter((e=>e>0)).reduce(((e,t)=>e+t),0)])).sort(((e,t)=>e[1]-t[1]))[0])?void 0:E[0];e&&(n=e);break}case"initialPlacement":n=s}if(r!==n)return{reset:{placement:n}}}return{}}}},Be=e=>({name:"arrow",options:e,async fn(t){const{x:n,y:o,placement:r,rects:i,platform:a,elements:s,middlewareData:l}=t,{element:c,padding:u=0}=q(e,t)||{};if(null==c)return{};const d=$(u),p={x:n,y:o},h=K(r),f=J(h),m=await a.getDimensions(c),g="y"===h,v=g?"top":"left",y=g?"bottom":"right",b=g?"clientHeight":"clientWidth",w=i.reference[f]+i.reference[h]-p[h]-i.floating[f],k=p[h]-i.reference[h],x=await(null==a.getOffsetParent?void 0:a.getOffsetParent(c));let S=x?x[b]:0;S&&await(null==a.isElement?void 0:a.isElement(x))||(S=s.floating[b]||i.floating[f]);const C=w/2-k/2,I=S/2-m[f]/2-1,O=N(d[v],I),E=N(d[y],I),T=O,L=S-m[f]-E,A=S/2-m[f]/2+C,M=z(T,A,L),R=!l.arrow&&null!=G(r)&&A!==M&&i.reference[f]/2-(A{const o=new Map,r={platform:De,...n},i={...r.platform,_c:o};return(async(e,t,n)=>{const{placement:o="bottom",strategy:r="absolute",middleware:i=[],platform:a}=n,s=i.filter(Boolean),l=await(null==a.isRTL?void 0:a.isRTL(t));let c=await a.getElementRects({reference:e,floating:t,strategy:r}),{x:u,y:d}=ee(c,o,l),p=o,h={},f=0;for(let m=0;me.length)&&(t=e.length);for(var n=0,o=new Array(t);n'):""),i.appendChild(a),t.repositionHotspot(e,n),r=a,t.elementToTooltipMap.set(e,n)}else r=e;var s=t.createTooltip(r,n.html,n);t.elementToFloatingUIMap.set(e,s)}}})),Ge(this,"updateFilteredTooltips",(function(){t.filteredTooltips=t.getFilteredTooltips(),t.checkForTooltips()})),Ge(this,"getFilteredTooltips",(function(){if(!t.tooltips)return[];var e=window.location.href;return t.tooltips.filter((function(t){return!t.page||0===t.page.length||!!Ue(e,t.page,t.pageType)}))})),Ge(this,"checkForTooltips",(function(){for(var e=0;e0&&this.filteredTooltips.forEach((function(n){n.selector&&e.matches(n.selector)&&t.linkTooltip(e,n)}))}},{key:"start",value:function(){var e=this,t=this;if(window){var n,o,r,i=(n=t.updateHotspotPositions.bind(t),o=250,r=null,function(){if(!r){var e=this,t=arguments;r=setTimeout((function(){n.call.apply(n,[e].concat(ze(t))),r=null}),o)}});window.addEventListener("resize",i),window.requestAnimationFrame((function(){e.observer=new MutationObserver((function(n){t.lastUrl!==window.location.href&&(t.lastUrl=window.location.href,t.filteredTooltips=t.getFilteredTooltips()),n.forEach((function(n){if("attributes"===n.type){var o=n.target;o.nodeType===Node.ELEMENT_NODE&&(o.querySelector("[data-gleap-tooltip-hotspot]")||o.hasAttribute("data-gleap-tooltip-mode")||o.hasAttribute("data-gleap-tooltip"))&&t.updateHotspotPositions()}n.addedNodes.forEach((function(e){e.nodeType===Node.ELEMENT_NODE&&t.processNodeInsertion(e)})),n.removedNodes.forEach((function(t){if(t.nodeType===Node.ELEMENT_NODE&&e.elementToFloatingUIMap.has(t)){var n=e.elementToFloatingUIMap.get(t);n&&(n.tooltip&&n.tooltip.remove(),n.cleanup(),e.elementToFloatingUIMap.delete(t))}e.elementToTooltipMap.has(t)&&e.elementToTooltipMap.delete(t)}))}))})),e.observer.observe(document.body,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["style","class"]})}))}}},{key:"updateHotspotPositions",value:function(){var e=this;document.querySelectorAll("[data-gleap-tooltip-mode='hotspot']").forEach((function(t){var n=e.elementToTooltipMap.get(t);n&&e.repositionHotspot(t,n)}))}},{key:"createTooltip",value:function(e,t,n){var o=document.createElement("div");o.className="gleap-tooltip",o.innerHTML='
\n '.concat(t,'\n
\n \n \n \n
\n
'),document.body.appendChild(o);var r,i=o.querySelector(".gleap-tooltip-arrow"),a=Ne(e,o,(function(){_e(e,o,{placement:"left"===n.posX?"left":"right",middleware:[ne(10),Fe(),je(),Be({element:i})]}).then((function(e){var t=e.x,n=e.y,r=e.middlewareData,a=e.placement;try{if(Object.assign(o.style,{left:"".concat(t,"px"),top:"".concat(n,"px")}),r.arrow){var s={left:"",top:"",transform:""};null!=r.arrow.x&&(s.left="".concat(r.arrow.x,"px"),"bottom"===a?(s.transform="translateY(-7px) rotate(180deg)",s.top="".concat(-20,"px")):"top"===a&&(s.transform="translateY(7px) rotate(0deg)",s.top="100%")),null!=r.arrow.y&&(s.top="".concat(r.arrow.y,"px"),"right"===a?(s.transform="translateX(-7px) rotate(90deg)",s.left="".concat(-20,"px")):"left"===a&&(s.transform="translateX(7px) rotate(270deg)",s.left="100%")),Object.assign(i.style,s)}}catch(l){}}))}));function s(){clearTimeout(r),o.style.visibility="visible",o.style.opacity="1",o.style.pointerEvents="auto"}function l(){r=setTimeout((function(){o.style.opacity="0",setTimeout((function(){o.style.visibility="hidden",o.style.pointerEvents="none"}),200)}),500)}return e.addEventListener("mouseenter",s),e.addEventListener("mouseleave",l),o.addEventListener("mouseenter",s),o.addEventListener("mouseleave",l),{cleanup:a,tooltip:o}}},{key:"canEmbed",value:function(e){var t=new Set(["area","base","br","embed","hr","img","input","source","track","wbr","canvas"]);return e&&!t.has(e.tagName.toLowerCase())}},{key:"destroy",value:function(){this.observer&&(this.observer.disconnect(),this.observer=null),this.resizeListener&&(window.removeEventListener("resize",this.resizeListener),this.resizeListener=null),document.querySelectorAll(".gleap-tooltip").forEach((function(e){return e.remove()})),document.querySelectorAll("[data-gleap-tooltip-anchor]").forEach((function(e){return e.remove()})),document.querySelectorAll("[data-gleap-tooltip-hotspot]").forEach((function(e){return e.remove()})),document.querySelectorAll("[data-gleap-tooltip]").forEach((function(e){return e.removeAttribute("data-gleap-tooltip")})),document.querySelectorAll("[data-gleap-tooltip-mode]").forEach((function(e){return e.removeAttribute("data-gleap-tooltip-mode")})),this.elementToFloatingUIMap=new WeakMap,this.elementToTooltipMap=new WeakMap,this.tooltips=[],this.filteredTooltips=[]}},{key:"repositionHotspot",value:function(e,t){if(e&&t){var n=e.getAttribute("data-gleap-tooltip");if(n){var o=document.querySelector('[data-gleap-tooltip-hotspot="'.concat(n,'"]'));if(o){t.posX||(t.posX="right"),t.posY||(t.posY="center"),t.offsetX||(t.offsetX=4),t.offsetY||(t.offsetY=0);var r=e.getBoundingClientRect();try{var i=document.createRange();i.selectNodeContents(e);var a=window.getComputedStyle(e),s=i.getBoundingClientRect().width+parseFloat(a.paddingLeft);s0&&void 0!==arguments[0]?arguments[0]:0,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];t.session&&t.session.gleapHash&&xn.notifyEvent("unregister-pushmessage-group","gleapuser-".concat(t.session.gleapHash));try{I("session-".concat(t.sdkKey),null)}catch(r){}if(t.useCookies)try{!function(e){try{var t=S(window.location.host.split(":")[0]);document.cookie=e+"=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT; Domain="+t}catch(r){}}("session-".concat(t.sdkKey))}catch(r){}if(t.ready=!1,t.session={gleapId:null,gleapHash:null,name:"",email:"",userId:"",phone:"",value:0},Vt.getInstance().sendMessage({name:"session-cleared"},!0),Mh.getInstance().clearAllNotifications(!1),Mh.getInstance().setNotificationCount(0),Bh.getInstance().removeBannerUI(),Gh.getInstance().hideModal(),n&&!isNaN(e)){var o=10*Math.pow(e,2);setTimeout((function(){t.startSession(e+1)}),1e3*o)}})),$e(this,"validateSession",(function(e){var n;if(e&&e.gleapId){var o=!1;(null===(n=t.session)||void 0===n?void 0:n.gleapId)!==(null==e?void 0:e.gleapId)&&(o=!0),t.session&&t.session.gleapHash&&xn.notifyEvent("unregister-pushmessage-group","gleapuser-".concat(t.session.gleapHash)),I("session-".concat(t.sdkKey),e),t.useCookies&&function(e,t,n){try{var o="";if(n){var r=new Date;r.setTime(r.getTime()+24*n*60*60*1e3),o="; expires="+r.toUTCString()}var i=S(window.location.host.split(":")[0]);document.cookie=e+"="+(t||"")+o+"; path=/; domain="+i}catch(a){}}("session-".concat(t.sdkKey),encodeURIComponent(JSON.stringify(e)),365),t.session=e,t.ready=!0,t.session&&t.session.gleapHash&&xn.notifyEvent("register-pushmessage-group","gleapuser-".concat(t.session.gleapHash)),o&&(setTimeout((function(){D.getInstance().clearCache(),it.getInstance().restart();var e=Je.getInstance();if(e){try{e.destroy()}catch(t){}e.load()}}),0),"function"==typeof window.dispatchEvent&&window.dispatchEvent(new CustomEvent("session-updated"))),t.notifySessionReady()}})),$e(this,"startSession",(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;try{if(t.useCookies){var n=function(e){try{for(var t=e+"=",n=document.cookie.split(";"),o=0;o0)){var r=C("session-".concat(t.sdkKey));r&&t.validateSession(r)}var i=t,a=new XMLHttpRequest;a.open("POST",i.apiUrl+"/sessions"),a.setRequestHeader("Content-Type","application/json;charset=UTF-8"),a.setRequestHeader("Api-Token",i.sdkKey);try{t.session&&t.session.gleapId&&t.session.gleapHash&&(a.setRequestHeader("Gleap-Id",t.session.gleapId),a.setRequestHeader("Gleap-Hash",t.session.gleapHash))}catch(s){}a.onreadystatechange=function(t){if(4===a.readyState)if(200===a.status||201===a.status)try{var n=JSON.parse(a.responseText);i.validateSession(n)}catch(s){}else 429!==a.status&&i.clearSession(e,!0)},a.send(JSON.stringify({lang:gh.getInstance().getActiveLanguage()}))})),$e(this,"checkIfSessionNeedsUpdate",(function(e,n){if(!t.session||!t.session.userId||!e)return!0;try{if(t.session.userId.toString()!==e.toString())return!0}catch(o){}return t.checkIfSessionDataNeedsUpdate(n)})),$e(this,"checkIfSessionDataNeedsUpdate",(function(e){if(e)for(var n=Object.keys(e),o=0;o0)for(var e=0;e2)&&0!==t.streamedEventArray.length&&t.socket&&t.socket.readyState===t.socket.OPEN){var e=t;t.streamingEvents=!0;var n=new XMLHttpRequest;n.open("POST",et.getInstance().apiUrl+"/sessions/ping"),n.setRequestHeader("Content-Type","application/json;charset=UTF-8"),et.getInstance().injectSession(n),n.onerror=function(){e.errorCount++,e.streamingEvents=!1},n.onreadystatechange=function(t){4===n.readyState&&(200===n.status||201===n.status?e.errorCount=0:e.errorCount++,e.streamingEvents=!1)};var o=Xt.getInstance().getSessionDuration();n.send(JSON.stringify({time:o,events:t.streamedEventArray,opened:Vt.getInstance().isOpened(),type:"js",sdkVersion:"14.8.11",ws:!0})),t.streamedEventArray=[]}})),this.handleOpenBound=this.handleOpen.bind(this),this.handleErrorBound=this.handleError.bind(this),this.handleMessageBound=this.handleMessage.bind(this),this.handleCloseBound=this.handleClose.bind(this)}var t,n,o;return t=e,o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],(n=[{key:"cleanupWebSocket",value:function(){this.connectionTimeout&&(clearTimeout(this.connectionTimeout),this.connectionTimeout=null),this.pingWS&&clearInterval(this.pingWS),this.socket&&(this.socket.removeEventListener("open",this.handleOpenBound),this.socket.removeEventListener("error",this.handleErrorBound),this.socket.removeEventListener("message",this.handleMessageBound),this.socket.removeEventListener("close",this.handleCloseBound),this.socket.close(),this.socket=null)}},{key:"initWebSocket",value:function(){this.cleanupWebSocket(),this.connectedWebSocketGleapId=et.getInstance().session.gleapId,et.getInstance().session&&et.getInstance().sdkKey&&(this.socket=new WebSocket("".concat(et.getInstance().wsApiUrl,"?gleapId=").concat(et.getInstance().session.gleapId,"&gleapHash=").concat(et.getInstance().session.gleapHash,"&apiKey=").concat(et.getInstance().sdkKey,"&sdkVersion=").concat("14.8.11")),this.socket.addEventListener("open",this.handleOpenBound),this.socket.addEventListener("message",this.handleMessageBound),this.socket.addEventListener("error",this.handleErrorBound),this.socket.addEventListener("close",this.handleCloseBound))}},{key:"handleOpen",value:function(e){var t=this;this.pingWS=setInterval((function(){t.socket.readyState===t.socket.OPEN&&(t.socket.send("PING"),t.socket.send(9))}),1e4),this.connectionTimeout&&(clearTimeout(this.connectionTimeout),this.connectionTimeout=null)}},{key:"handleMessage",value:function(e){this.processMessage(JSON.parse(e.data))}},{key:"handleError",value:function(e){}},{key:"handleClose",value:function(e){var t=this;setTimeout((function(){t.initWebSocket()}),5e3)}},{key:"processMessage",value:function(e){try{if("update"===e.name){var t=e.data,n=t.a,o=t.u,r=Vt.getInstance().isOpened();if(n){var i=["banner","modal"],a=n.filter((function(e){var t;return!r||i.includes(null==e||null===(t=e.actionType)||void 0===t?void 0:t.toLowerCase())}));_m.getInstance().performActions(a)}null!=o&&Mh.getInstance().setNotificationCount(o)}"checklist"===e.name&&null!=e&&e.data&&window&&"function"==typeof window.dispatchEvent&&window.dispatchEvent(new CustomEvent("checkListUpdate",{detail:e.data}))}catch(s){}}},{key:"getEventArray",value:function(){return this.eventArray}},{key:"stop",value:function(){this.cleanupMainLoop()}},{key:"resetErrorCountLoop",value:function(){var e=this;setInterval((function(){e.errorCount=0}),6e4)}},{key:"cleanupMainLoop",value:function(){this.mainLoopTimeout&&(clearInterval(this.mainLoopTimeout),this.mainLoopTimeout=null)}},{key:"restart",value:function(){this.connectedWebSocketGleapId!==et.getInstance().session.gleapId&&this.initWebSocket(),this.cleanupMainLoop(),this.trackInitialEvents(),this.runEventStreamLoop()}},{key:"start",value:function(){this.startPageListener(),this.resetErrorCountLoop()}},{key:"trackInitialEvents",value:function(){e.getInstance().logEvent("sessionStarted"),e.getInstance().logCurrentPage()}},{key:"logCurrentPage",value:function(){if(!_m.getInstance().disablePageTracking){var e=window.location.href;e&&e!==this.lastUrl&&(this.lastUrl=e,this.logEvent("pageView",{page:e}))}}},{key:"startPageListener",value:function(){var e=this;setInterval((function(){e.logCurrentPage()}),1e3)}},{key:"logEvent",value:function(e,t){var n={name:e,date:new Date};t&&(n.data=k(t)),this.eventArray.push(n),this.streamedEventArray.push(n),this.eventArray.length>this.eventMaxLength&&this.eventArray.shift(),this.streamedEventArray.length>this.eventMaxLength&&this.streamedEventArray.shift()}}])&&nt(t.prototype,n),o&&nt(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function at(e){return at="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},at(e)}function st(e,t){for(var n=0;n0)for(var e=0;e=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var l=o.call(a,"catchLoc"),c=o.call(a,"finallyLoc");if(l&&c){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&o.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),L(n),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var o=n.completion;if("throw"===o.type){var r=o.arg;L(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,o){return this.delegate={iterator:M(t),resultName:n,nextLoc:o},"next"===this.method&&(this.arg=e),g}},t}function ft(e,t,n,o,r,i,a){try{var s=e[i](a),l=s.value}catch(c){return void n(c)}s.done?t(l):Promise.resolve(l).then(o,r)}function mt(e){return function(){var t=this,n=arguments;return new Promise((function(o,r){var i=e.apply(t,n);function a(e){ft(i,o,r,a,s,"next",e)}function s(e){ft(i,o,r,a,s,"throw",e)}a(void 0)}))}}var gt=function(e){var t="",n=window.document.doctype;if(n&&(t=""),e&&e.childNodes&&e.childNodes.length>0)for(var o=0;o1?t-1:0),r=1;r0||t.scrollLeft>0)&&(s.setAttribute("bb-scrollpos",!0),s.setAttribute("bb-scrolltop",t.scrollTop),s.setAttribute("bb-scrollleft",t.scrollLeft)),"SELECT"!==d&&"TEXTAREA"!==d&&"INPUT"!==d||(h=t.value,("value"===t.getAttribute("gleap-ignore")||t.classList.contains("gl-mask"))&&(h=new Array(h.length+1).join("*")),s.setAttribute("bb-data-value",h),"checkbox"!==t.type&&"radio"!==t.type||!t.checked||s.setAttribute("bb-data-checked",!0))),r.appendChild(s),!t.shadowRoot){e.next=29;break}return f=n,n++,e.next=27,a(t.shadowRoot.firstChild,s,f);case 27:Ct(t.shadowRoot,s,f),void 0!==s.setAttribute&&s.setAttribute("bb-shadow-parent",f);case 29:return e.next=31,a(t.firstChild,s);case 31:case"end":return e.stop()}}),e,null,[[7,17]])})));return function(t,n,o){return e.apply(this,arguments)}}(),r=document.createDocumentFragment(),e.next=5,o(t,r);case 5:return(i=r.querySelector("head"))||(i=r),Ct(window.document,i),e.abrupt("return",r);case 9:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),Et=function(e){return new Promise(function(){var t=mt(ht().mark((function t(n,o){var r,i,a,s,l,c,u,d,p,h,f,m,g,v,y;return ht().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:for(r=window.document.querySelectorAll("style, link"),i=0;i0){for(c=l.childNodes;c.length>0;)l.parentNode.insertBefore(c[0],l);l.remove()}for(u=a.querySelectorAll("script, noscript"),i=0;i0?r.innerHTML=n.formatTime(e):(r.innerHTML="2:00",n.stopScreenRecording())}),1e3),this.mediaRecorder.ondataavailable=function(e){e.data.size>0&&o.push(e.data)},t.getVideoTracks()[0].onended=function(){n.prepareRecording(o)},this.mediaRecorder.onstop=function(){n.prepareRecording(o)},this.mediaRecorder.start(200),n.rerender()})),At(this,"prepareRecording",(function(e){var t=new Blob(e,{type:this.getSupportedMimeType()}),n=this.getSupportedMimeType(),o=n.includes("mp4")?"mp4":"webm";this.file=new File([t],"screen-recording.".concat(o),{type:n});var r=document.querySelector(".bb-capture-preview video");r&&(r.src=URL.createObjectURL(t),this.audioAvailable=!0,this.isRecording=!1,this.rerender())})),this.rerender=t,this.permissionErrorText=n,navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia||(this.available=!1),setTimeout((function(){o.rerender()}),100)}var t,n,o;return t=e,(n=[{key:"getSupportedMimeType",value:function(){for(var e=0,t=["video/webm","audio/webm","video/webm;codecs=vp8","video/webm;codecs=daala","video/webm;codecs=h264","audio/webm;codecs=opus","video/mp4"];e0&&(e.tags=t),this.excludeData)for(var n=Object.keys(this.excludeData),o=0;oe.length)&&(t=e.length);for(var n=0,o=new Array(t);n0)if(t){var n=window.open(e,"_blank");n&&n.focus()}else window.location.href=e})),Wt(this,"autoWhiteListCookieManager",(function(){window&&window.cmp_block_ignoredomains&&window.cmp_block_ignoredomains.concat(["messenger-app.gleap.io"])})),Wt(this,"injectFrame",(function(){t.injectedFrame||(t.injectedFrame=!0,t.autoWhiteListCookieManager(),O((function(){dt.getInstance().onConfigLoaded((function(){dt.getInstance().applyStylesFromConfig();var e=document.createElement("div");e.className="gleap-frame-container gleap-frame-container--hidden gl-block",e.innerHTML='
'),document.body.appendChild(e),t.gleapFrameContainer=e,t.gleapFrame=document.querySelector(".gleap-frame"),t.updateFrameStyle(),"widget"===t.appMode&&t.showFrameContainer(!0)}))})))})),Wt(this,"showImage",(function(e){O((function(){var t=document.createElement("div");t.className="gleap-image-view",t.innerHTML='
\n \n
'),document.body.appendChild(t);var n=function(){t.remove()};t.querySelector(".gleap-image-view-close").addEventListener("click",(function(){n()})),t.addEventListener("click",(function(e){e.target===t&&n()}))}))})),Wt(this,"updateFrameStyle",(function(){if(t.gleapFrameContainer){for(var e="gleap-frame-container--survey",n="gleap-frame-container--extended",o="gleap-frame-container--survey-full",r="gleap-frame-container--classic",i="gleap-frame-container--classic-left",s="gleap-frame-container--modern-left",l="gleap-frame-container--no-button",c=[r,i,n,s,l,e,o],u=0;u0&&void 0!==arguments[0]&&arguments[0];"survey_web"!==this.appMode&&(this.hideMarkerManager(),this.gleapFrameContainer&&(this.gleapFrameContainer.classList.add("gleap-frame-container--hidden"),this.gleapFrameContainer.classList.remove("gleap-frame-container--animate")),e&&this.sendMessage({name:"reset-routes",data:{}}),this.widgetOpened=!1,this.updateWidgetStatus(),a.getInstance().updateFeedbackButtonState(),xn.notifyEvent("close"),Mh.getInstance().reloadNotificationsFromCache(),this.unregisterEscListener(),"undefined"!=typeof window&&void 0!==window.focus&&window.focus())}},{key:"sendMessage",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];try{this.gleapFrame=document.querySelector(".gleap-frame"),this.comReady&&this.gleapFrame&&this.gleapFrame.contentWindow?this.gleapFrame.contentWindow.postMessage(JSON.stringify(e),"*"):t&&this.queue.push(e)}catch(n){}}},{key:"sendSessionUpdate",value:function(){this.sendMessage({name:"session-update",data:{sessionData:et.getInstance().getSession(),apiUrl:et.getInstance().apiUrl,sdkKey:et.getInstance().sdkKey}})}},{key:"sendConfigUpdate",value:function(){this.comReady&&(this.sendMessage({name:"config-update",data:{config:dt.getInstance().getFlowConfig(),aiTools:dt.getInstance().getAiTools(),overrideLanguage:gh.getInstance().getOverrideLanguage()}}),this.updateFrameStyle())}},{key:"showDrawingScreen",value:function(e){var t=this;this.hideWidget(),this.markerManager=new dh(e),this.markerManager.show((function(e){e||t.hideMarkerManager(),t.showWidget()}))}},{key:"workThroughQueue",value:function(){var e=Ht(this.queue);this.queue=[];for(var t=0;t0&&(n.tags=o),e.sendMessage({name:"collect-ticket-data",data:n})}if("height-update"===t.name){e.frameHeight=t.data;var r=document.querySelector(".gleap-frame-container-inner");"survey"!==e.appMode&&"survey_full"!==e.appMode&&"survey_web"!==e.appMode||!r||(r.style.maxHeight="".concat(e.frameHeight,"px"))}if("notify-event"===t.name&&xn.notifyEvent(t.data.type,t.data.data),"cleanup-drawings"===t.name&&e.hideMarkerManager(),"open-url"===t.name){var i=t.data,a=!!t.newTab;e.urlHandler(i,a)}var s;if("start-product-tour"===t.name&&_m.startProductTour(null===(s=t.data)||void 0===s?void 0:s.tourId,!0),"run-custom-action"===t.name&&Ln.triggerCustomAction(t.data,{shareToken:t.shareToken}),"close-widget"===t.name&&e.hideWidget(),"tool-execution"===t.name&&xn.notifyEvent("tool-execution",t.data),"send-feedback"===t.name){var l=t.data.formData,c=t.data.action,u=t.data.outboundId,d=t.data.spamToken;new _t(c.feedbackType,"MEDIUM",l,!1,c.excludeData,u,d).sendFeedback().then((function(t){if(e.sendMessage({name:"feedback-sent",data:t}),xn.notifyEvent("feedback-sent",l),u&&u.length>0){xn.notifyEvent("outbound-sent",{outboundId:u,outbound:c,formData:l});try{delete l.reportedBy}catch(n){}_m.trackEvent("outbound-".concat(u,"-submitted"),l)}})).catch((function(t){e.sendMessage({name:"feedback-sending-failed",data:"Something went wrong, please try again."}),xn.notifyEvent("error-while-sending")}))}"start-screen-drawing"===t.name&&e.showDrawingScreen(t.data)})),window.addEventListener("message",(function(t){if(t.origin===e.frameUrl||t.origin===Bh.getInstance().bannerUrl)try{for(var n=JSON.parse(t.data),o=0;o1&&void 0!==arguments[1]?arguments[1]:"INFO";!e||e.length<=0||(this.logArray.push({log:x(e,1e3),date:new Date,priority:t}),this.logArray.length>this.logMaxLength&&this.logArray.shift())}},{key:"addLogWithArgs",value:function(e,t){if(e&&!(e.length<=0)){var n="";try{for(var o=0;o1&&void 0!==arguments[1])||arguments[1],n=x(e.innerText||"",40).replace(/(\r\n|\n|\r)/gm,"").replace(/ +(?= )/g,""),o="",r="";if(void 0!==e.getAttribute){var i=e.getAttribute("id");i&&(o=' id="'.concat(i,'"'));var a=e.getAttribute("class");a&&(r=' class="'.concat(a,'"'))}var s=(e.tagName||"").toLowerCase(),l="<",c=">";return t||(l="[",c="]"),"".concat(l).concat(s).concat(o).concat(r).concat(c).concat(n).concat(l,"/").concat(s).concat(c)}(e.target),"CLICK")}}))}}],o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],n&&sn(t.prototype,n),o&&sn(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function hn(e){return hn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},hn(e)}function fn(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{};if("flow-started"===e){var n=_m.getInstance();n.setGlobalDataItem("webReplay",null),n.setGlobalDataItem("screenRecordingData",null),n.takeCurrentReplay()}var o=this.getInstance().eventListeners[e];if(o)for(var r=0;r((e,t,n)=>t in e?Mn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,"symbol"!=typeof t?t+"":t,n),Pn=Object.defineProperty,Dn=(e,t,n)=>((e,t,n)=>t in e?Pn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,"symbol"!=typeof t?t+"":t,n),Nn=(e=>(e[e.Document=0]="Document",e[e.DocumentType=1]="DocumentType",e[e.Element=2]="Element",e[e.Text=3]="Text",e[e.CDATA=4]="CDATA",e[e.Comment=5]="Comment",e))(Nn||{});const jn={Node:["childNodes","parentNode","parentElement","textContent"],ShadowRoot:["host","styleSheets"],Element:["shadowRoot","querySelector","querySelectorAll"],MutationObserver:[]},Fn={Node:["contains","getRootNode"],ShadowRoot:["getSelection"],Element:[],MutationObserver:["constructor"]},Bn={},_n=()=>!!globalThis.Zone;function Un(e){if(Bn[e])return Bn[e];const t=globalThis[e],n=t.prototype,o=e in jn?jn[e]:void 0,r=Boolean(o&&o.every((e=>{var t,o;return Boolean(null==(o=null==(t=Object.getOwnPropertyDescriptor(n,e))?void 0:t.get)?void 0:o.toString().includes("[native code]"))}))),i=e in Fn?Fn[e]:void 0,a=Boolean(i&&i.every((e=>{var t;return"function"==typeof n[e]&&(null==(t=n[e])?void 0:t.toString().includes("[native code]"))})));if(r&&a&&!_n())return Bn[e]=t.prototype,t.prototype;try{const o=document.createElement("iframe");document.body.appendChild(o);const r=o.contentWindow;if(!r)return t.prototype;const i=r[e].prototype;return document.body.removeChild(o),i?Bn[e]=i:n}catch{return n}}const Hn={};function zn(e,t,n){var o;const r=`${e}.${String(n)}`;if(Hn[r])return Hn[r].call(t);const i=Un(e),a=null==(o=Object.getOwnPropertyDescriptor(i,n))?void 0:o.get;return a?(Hn[r]=a,a.call(t)):t[n]}const qn={};function Wn(e,t,n){const o=`${e}.${String(n)}`;if(qn[o])return qn[o].bind(t);const r=Un(e)[n];return"function"!=typeof r?t[n]:(qn[o]=r,r.bind(t))}const Gn={childNodes:function(e){return zn("Node",e,"childNodes")},parentNode:function(e){return zn("Node",e,"parentNode")},parentElement:function(e){return zn("Node",e,"parentElement")},textContent:function(e){return zn("Node",e,"textContent")},contains:function(e,t){return Wn("Node",e,"contains")(t)},getRootNode:function(e){return Wn("Node",e,"getRootNode")()},host:function(e){return e&&"host"in e?zn("ShadowRoot",e,"host"):null},styleSheets:function(e){return e.styleSheets},shadowRoot:function(e){return e&&"shadowRoot"in e?zn("Element",e,"shadowRoot"):null},querySelector:function(e,t){return zn("Element",e,"querySelector")(t)},querySelectorAll:function(e,t){return zn("Element",e,"querySelectorAll")(t)},mutationObserver:function(){return Un("MutationObserver").constructor}};function Vn(e){return e.nodeType===e.ELEMENT_NODE}function Jn(e){const t=e&&"host"in e&&"mode"in e&&Gn.host(e)||null;return Boolean(t&&"shadowRoot"in t&&Gn.shadowRoot(t)===e)}function Zn(e){return"[object ShadowRoot]"===Object.prototype.toString.call(e)}function Kn(e){try{const n=e.rules||e.cssRules;if(!n)return null;let o=e.href;!o&&e.ownerNode&&e.ownerNode.ownerDocument&&(o=e.ownerNode.ownerDocument.location.href);const r=Array.from(n,(e=>Yn(e,o))).join("");return(t=r).includes(" background-clip: text;")&&!t.includes(" -webkit-background-clip: text;")&&(t=t.replace(/\sbackground-clip:\s*text;/g," -webkit-background-clip: text; background-clip: text;")),t}catch(n){return null}var t}function Yn(e,t){if(function(e){return"styleSheet"in e}(e)){let t;try{t=Kn(e.styleSheet)||function(e){const{cssText:t}=e;if(t.split('"').length<3)return t;const n=["@import",`url(${JSON.stringify(e.href)})`];return""===e.layerName?n.push("layer"):e.layerName&&n.push(`layer(${e.layerName})`),e.supportsText&&n.push(`supports(${e.supportsText})`),e.media.length&&n.push(e.media.mediaText),n.join(" ")+";"}(e)}catch(n){t=e.cssText}return e.styleSheet.href?so(t,e.styleSheet.href):t}{let n=e.cssText;return function(e){return"selectorText"in e}(e)&&e.selectorText.includes(":")&&(n=function(e){const t=/(\[(?:[\w-]+)[^\\])(:(?:[\w-]+)\])/gm;return e.replace(t,"$1\\$2")}(n)),t?so(n,t):n}}class Xn{constructor(){Dn(this,"idNodeMap",new Map),Dn(this,"nodeMetaMap",new WeakMap)}getId(e){var t;if(!e)return-1;return(null==(t=this.getMeta(e))?void 0:t.id)??-1}getNode(e){return this.idNodeMap.get(e)||null}getIds(){return Array.from(this.idNodeMap.keys())}getMeta(e){return this.nodeMetaMap.get(e)||null}removeNodeFromMap(e){const t=this.getId(e);this.idNodeMap.delete(t),e.childNodes&&e.childNodes.forEach((e=>this.removeNodeFromMap(e)))}has(e){return this.idNodeMap.has(e)}hasNode(e){return this.nodeMetaMap.has(e)}add(e,t){const n=t.id;this.idNodeMap.set(n,e),this.nodeMetaMap.set(e,t)}replace(e,t){const n=this.getNode(e);if(n){const e=this.nodeMetaMap.get(n);e&&this.nodeMetaMap.set(t,e)}this.idNodeMap.set(e,t)}reset(){this.idNodeMap=new Map,this.nodeMetaMap=new WeakMap}}function $n({element:e,maskInputOptions:t,tagName:n,type:o,value:r,maskInputFn:i}){let a=r||"";const s=o&&Qn(o);return(t[n.toLowerCase()]||s&&t[s])&&(a=i?i(a,e):"*".repeat(a.length)),a}function Qn(e){return e.toLowerCase()}const eo="__rrweb_original__";function to(e){const t=e.type;return e.hasAttribute("data-rr-is-password")?"password":t?Qn(t):null}function no(e,t){let n;try{n=new URL(e,t??window.location.href)}catch(r){return null}const o=n.pathname.match(/\.([0-9a-z]+)(?:$)/i);return(null==o?void 0:o[1])??null}const oo=/url\((?:(')([^']*)'|(")(.*?)"|([^)]*))\)/gm,ro=/^(?:[a-z+]+:)?\/\//i,io=/^www\..*/i,ao=/^(data:)([^,]*),(.*)/i;function so(e,t){return(e||"").replace(oo,((e,n,o,r,i,a)=>{const s=o||i||a,l=n||r||"";if(!s)return e;if(ro.test(s)||io.test(s))return`url(${l}${s}${l})`;if(ao.test(s))return`url(${l}${s}${l})`;if("/"===s[0])return`url(${l}${function(e){let t="";return t=e.indexOf("//")>-1?e.split("/").slice(0,3).join("/"):e.split("/")[0],t=t.split("?")[0],t}(t)+s}${l})`;const c=t.split("/"),u=s.split("/");c.pop();for(const t of u)"."!==t&&(".."===t?c.pop():c.push(t));return`url(${l}${c.join("/")}${l})`}))}function lo(e){return e.replace(/(\/\*[^*]*\*\/)|[\s;]/g,"")}function co(e,t){return function(e,t){const n=Array.from(t.childNodes),o=[];if(n.length>1&&e&&"string"==typeof e){const t=lo(e);for(let r=1;r=t.length);){let i=o(vo);if(","===i.slice(-1))i=wo(e,i.substring(0,i.length-1)),r.push(i);else{let o="";i=wo(e,i);let a=!1;for(;;){const e=t.charAt(n);if(""===e){r.push((i+o).trim());break}if(a)")"===e&&(a=!1);else{if(","===e){n+=1,r.push((i+o).trim());break}"("===e&&(a=!0)}o+=e,n+=1}}}return r.join(", ")}(e,o):"style"===n?so(o,xo(e)):"object"===t&&"data"===n?wo(e,o):o:wo(e,o):o}function Co(e,t,n){return("video"===e||"audio"===e)&&"autoplay"===t}function Io(e,t,n){if(!e)return!1;if(e.nodeType!==e.ELEMENT_NODE)return!!n&&Io(Gn.parentNode(e),t,n);for(let o=e.classList.length;o--;){const n=e.classList[o];if(t.test(n))return!0}return!!n&&Io(Gn.parentNode(e),t,n)}function Oo(e,t,n,o){let r;if(Vn(e)){if(r=e,!Gn.childNodes(r).length)return!1}else{if(null===Gn.parentElement(e))return!1;r=Gn.parentElement(e)}try{if("string"==typeof t){if(o){if(r.closest(`.${t}`))return!0}else if(r.classList.contains(t))return!0}else if(Io(r,t,o))return!0;if(n)if(o){if(r.closest(n))return!0}else if(r.matches(n))return!0}catch(i){}return!1}function Eo(e,t){const{doc:n,mirror:o,blockClass:r,blockSelector:i,needsMask:a,inlineStylesheet:s,maskInputOptions:l={},maskTextFn:c,maskInputFn:u,dataURLOptions:d={},inlineImages:p,recordCanvas:h,keepIframeSrcFn:f,newlyAddedElement:m=!1,cssCaptured:g=!1}=t,v=function(e,t){if(!t.hasNode(e))return;const n=t.getId(e);return 1===n?void 0:n}(n,o);switch(e.nodeType){case e.DOCUMENT_NODE:return"CSS1Compat"!==e.compatMode?{type:Nn.Document,childNodes:[],compatMode:e.compatMode}:{type:Nn.Document,childNodes:[]};case e.DOCUMENT_TYPE_NODE:return{type:Nn.DocumentType,name:e.name,publicId:e.publicId,systemId:e.systemId,rootId:v};case e.ELEMENT_NODE:return function(e,t){const{doc:n,blockClass:o,blockSelector:r,inlineStylesheet:i,maskInputOptions:a={},maskInputFn:s,dataURLOptions:l={},inlineImages:c,recordCanvas:u,keepIframeSrcFn:d,newlyAddedElement:p=!1,rootId:h}=t,f=function(e,t,n){try{if("string"==typeof t){if(e.classList.contains(t))return!0}else for(let n=e.classList.length;n--;){const o=e.classList[n];if(t.test(o))return!0}if(n)return e.matches(n)}catch(o){}return!1}(e,o,r),m=function(e){if(e instanceof HTMLFormElement)return"form";const t=Qn(e.tagName);return po.test(t)?"div":t}(e);let g={};const v=e.attributes.length;for(let w=0;wt.href===e.href));let o=null;t&&(o=Kn(t)),o&&(delete g.rel,delete g.href,g._cssText=o)}if("style"===m&&e.sheet){let t=Kn(e.sheet);t&&(e.childNodes.length>1&&(t=co(t,e)),g._cssText=t)}if("input"===m||"textarea"===m||"select"===m){const t=e.value,n=e.checked;"radio"!==g.type&&"checkbox"!==g.type&&"submit"!==g.type&&"button"!==g.type&&t?g.value=$n({element:e,type:to(e),tagName:m,value:t,maskInputOptions:a,maskInputFn:s}):n&&(g.checked=n)}"option"===m&&(e.selected&&!a.select?g.selected=!0:delete g.selected);"dialog"===m&&e.open&&(g.rr_open_mode=e.matches("dialog:modal")?"modal":"non-modal");if("canvas"===m&&u)if("2d"===e.__context)(function(e){const t=e.getContext("2d");if(!t)return!0;for(let n=0;n0!==e)))return!1}return!0})(e)||(g.rr_dataURL=e.toDataURL(l.type,l.quality));else if(!("__context"in e)){const t=e.toDataURL(l.type,l.quality),o=n.createElement("canvas");o.width=e.width,o.height=e.height;t!==o.toDataURL(l.type,l.quality)&&(g.rr_dataURL=t)}if("img"===m&&c){mo||(mo=n.createElement("canvas"),go=mo.getContext("2d"));const t=e,o=t.currentSrc||t.getAttribute("src")||"",r=t.crossOrigin,i=()=>{t.removeEventListener("load",i);try{mo.width=t.naturalWidth,mo.height=t.naturalHeight,go.drawImage(t,0,0),g.rr_dataURL=mo.toDataURL(l.type,l.quality)}catch(e){if("anonymous"!==t.crossOrigin)return t.crossOrigin="anonymous",void(t.complete&&0!==t.naturalWidth?i():t.addEventListener("load",i));console.warn(`Cannot inline img src=${o}! Error: ${e}`)}"anonymous"===t.crossOrigin&&(r?g.crossOrigin=r:t.removeAttribute("crossorigin"))};t.complete&&0!==t.naturalWidth?i():t.addEventListener("load",i)}if("audio"===m||"video"===m){const t=g;t.rr_mediaState=e.paused?"paused":"played",t.rr_mediaCurrentTime=e.currentTime,t.rr_mediaPlaybackRate=e.playbackRate,t.rr_mediaMuted=e.muted,t.rr_mediaLoop=e.loop,t.rr_mediaVolume=e.volume}p||(e.scrollLeft&&(g.rr_scrollLeft=e.scrollLeft),e.scrollTop&&(g.rr_scrollTop=e.scrollTop));if(f){const{width:t,height:n}=e.getBoundingClientRect();g={class:g.class,rr_width:`${t}px`,rr_height:`${n}px`}}"iframe"!==m||d(g.src)||(e.contentDocument||(g.rr_src=g.src),delete g.src);let y;try{customElements.get(m)&&(y=!0)}catch(b){}return{type:Nn.Element,tagName:m,attributes:g,childNodes:[],isSVG:ko(e)||void 0,needBlock:f,rootId:h,isCustom:y}}(e,{doc:n,blockClass:r,blockSelector:i,inlineStylesheet:s,maskInputOptions:l,maskInputFn:u,dataURLOptions:d,inlineImages:p,recordCanvas:h,keepIframeSrcFn:f,newlyAddedElement:m,rootId:v});case e.TEXT_NODE:return function(e,t){const{needsMask:n,maskTextFn:o,rootId:r,cssCaptured:i}=t,a=Gn.parentNode(e),s=a&&a.tagName;let l="";const c="STYLE"===s||void 0,u="SCRIPT"===s||void 0;u?l="SCRIPT_PLACEHOLDER":i||(l=Gn.textContent(e),c&&l&&(l=so(l,xo(t.doc))));!c&&!u&&l&&n&&(l=o?o(l,Gn.parentElement(e)):l.replace(/[\S]/g,"*"));return{type:Nn.Text,textContent:l||"",rootId:r}}(e,{doc:n,needsMask:a,maskTextFn:c,rootId:v,cssCaptured:g});case e.CDATA_SECTION_NODE:return{type:Nn.CDATA,textContent:"",rootId:v};case e.COMMENT_NODE:return{type:Nn.Comment,textContent:Gn.textContent(e)||"",rootId:v};default:return!1}}function To(e){return null==e?"":e.toLowerCase()}function Lo(e,t){const{doc:n,mirror:o,blockClass:r,blockSelector:i,maskTextClass:a,maskTextSelector:s,skipChild:l=!1,inlineStylesheet:c=!0,maskInputOptions:u={},maskTextFn:d,maskInputFn:p,slimDOMOptions:h,dataURLOptions:f={},inlineImages:m=!1,recordCanvas:g=!1,onSerialize:v,onIframeLoad:y,iframeLoadTimeout:b=5e3,onStylesheetLoad:w,stylesheetLoadTimeout:k=5e3,keepIframeSrcFn:x=(()=>!1),newlyAddedElement:S=!1,cssCaptured:C=!1}=t;let{needsMask:I}=t,{preserveWhiteSpace:O=!0}=t;if(!I){I=Oo(e,a,s,void 0===I)}const E=Eo(e,{doc:n,mirror:o,blockClass:r,blockSelector:i,needsMask:I,inlineStylesheet:c,maskInputOptions:u,maskTextFn:d,maskInputFn:p,dataURLOptions:f,inlineImages:m,recordCanvas:g,keepIframeSrcFn:x,newlyAddedElement:S,cssCaptured:C});if(!E)return console.warn(e,"not serialized"),null;let T;T=o.hasNode(e)?o.getId(e):function(e,t){if(t.comment&&e.type===Nn.Comment)return!0;if(e.type===Nn.Element){if(t.script&&("script"===e.tagName||"link"===e.tagName&&("preload"===e.attributes.rel||"modulepreload"===e.attributes.rel)&&"script"===e.attributes.as||"link"===e.tagName&&"prefetch"===e.attributes.rel&&"string"==typeof e.attributes.href&&"js"===no(e.attributes.href)))return!0;if(t.headFavicon&&("link"===e.tagName&&"shortcut icon"===e.attributes.rel||"meta"===e.tagName&&(To(e.attributes.name).match(/^msapplication-tile(image|color)$/)||"application-name"===To(e.attributes.name)||"icon"===To(e.attributes.rel)||"apple-touch-icon"===To(e.attributes.rel)||"shortcut icon"===To(e.attributes.rel))))return!0;if("meta"===e.tagName){if(t.headMetaDescKeywords&&To(e.attributes.name).match(/^description|keywords$/))return!0;if(t.headMetaSocial&&(To(e.attributes.property).match(/^(og|twitter|fb):/)||To(e.attributes.name).match(/^(og|twitter):/)||"pinterest"===To(e.attributes.name)))return!0;if(t.headMetaRobots&&("robots"===To(e.attributes.name)||"googlebot"===To(e.attributes.name)||"bingbot"===To(e.attributes.name)))return!0;if(t.headMetaHttpEquiv&&void 0!==e.attributes["http-equiv"])return!0;if(t.headMetaAuthorship&&("author"===To(e.attributes.name)||"generator"===To(e.attributes.name)||"framework"===To(e.attributes.name)||"publisher"===To(e.attributes.name)||"progid"===To(e.attributes.name)||To(e.attributes.property).match(/^article:/)||To(e.attributes.property).match(/^product:/)))return!0;if(t.headMetaVerification&&("google-site-verification"===To(e.attributes.name)||"yandex-verification"===To(e.attributes.name)||"csrf-token"===To(e.attributes.name)||"p:domain_verify"===To(e.attributes.name)||"verify-v1"===To(e.attributes.name)||"verification"===To(e.attributes.name)||"shopify-checkout-api-token"===To(e.attributes.name)))return!0}}return!1}(E,h)||!O&&E.type===Nn.Text&&!E.textContent.replace(/^\s+|\s+$/gm,"").length?ho:fo();const L=Object.assign(E,{id:T});if(o.add(e,L),T===ho)return null;v&&v(e);let A=!l;if(L.type===Nn.Element){A=A&&!L.needBlock,delete L.needBlock;const t=Gn.shadowRoot(e);t&&Zn(t)&&(L.isShadowHost=!0)}if((L.type===Nn.Document||L.type===Nn.Element)&&A){h.headWhitespace&&L.type===Nn.Element&&"head"===L.tagName&&(O=!1);const t={doc:n,mirror:o,blockClass:r,blockSelector:i,needsMask:I,maskTextClass:a,maskTextSelector:s,skipChild:l,inlineStylesheet:c,maskInputOptions:u,maskTextFn:d,maskInputFn:p,slimDOMOptions:h,dataURLOptions:f,inlineImages:m,recordCanvas:g,preserveWhiteSpace:O,onSerialize:v,onIframeLoad:y,iframeLoadTimeout:b,onStylesheetLoad:w,stylesheetLoadTimeout:k,keepIframeSrcFn:x,cssCaptured:!1};if(L.type===Nn.Element&&"textarea"===L.tagName&&void 0!==L.attributes.value);else{L.type===Nn.Element&&void 0!==L.attributes._cssText&&"string"==typeof L.attributes._cssText&&(t.cssCaptured=!0);for(const n of Array.from(Gn.childNodes(e))){const e=Lo(n,t);e&&L.childNodes.push(e)}}let S=null;if(Vn(e)&&(S=Gn.shadowRoot(e)))for(const e of Array.from(Gn.childNodes(S))){const n=Lo(e,t);n&&(Zn(S)&&(n.isShadow=!0),L.childNodes.push(n))}}const M=Gn.parentNode(e);return M&&Jn(M)&&Zn(M)&&(L.isShadow=!0),L.type===Nn.Element&&"iframe"===L.tagName&&function(e,t,n){const o=e.contentWindow;if(!o)return;let r,i=!1;try{r=o.document.readyState}catch(s){return}if("complete"!==r){const o=setTimeout((()=>{i||(t(),i=!0)}),n);return void e.addEventListener("load",(()=>{clearTimeout(o),i=!0,t()}))}const a="about:blank";if(o.location.href!==a||e.src===a||""===e.src)return setTimeout(t,0),e.addEventListener("load",t);e.addEventListener("load",t)}(e,(()=>{const t=e.contentDocument;if(t&&y){const n=Lo(t,{doc:t,mirror:o,blockClass:r,blockSelector:i,needsMask:I,maskTextClass:a,maskTextSelector:s,skipChild:!1,inlineStylesheet:c,maskInputOptions:u,maskTextFn:d,maskInputFn:p,slimDOMOptions:h,dataURLOptions:f,inlineImages:m,recordCanvas:g,preserveWhiteSpace:O,onSerialize:v,onIframeLoad:y,iframeLoadTimeout:b,onStylesheetLoad:w,stylesheetLoadTimeout:k,keepIframeSrcFn:x});n&&y(e,n)}}),b),L.type===Nn.Element&&"link"===L.tagName&&"string"==typeof L.attributes.rel&&("stylesheet"===L.attributes.rel||"preload"===L.attributes.rel&&"string"==typeof L.attributes.href&&"css"===no(L.attributes.href))&&function(e,t,n){let o,r=!1;try{o=e.sheet}catch(a){return}if(o)return;const i=setTimeout((()=>{r||(t(),r=!0)}),n);e.addEventListener("load",(()=>{clearTimeout(i),r=!0,t()}))}(e,(()=>{if(w){const t=Lo(e,{doc:n,mirror:o,blockClass:r,blockSelector:i,needsMask:I,maskTextClass:a,maskTextSelector:s,skipChild:!1,inlineStylesheet:c,maskInputOptions:u,maskTextFn:d,maskInputFn:p,slimDOMOptions:h,dataURLOptions:f,inlineImages:m,recordCanvas:g,preserveWhiteSpace:O,onSerialize:v,onIframeLoad:y,iframeLoadTimeout:b,onStylesheetLoad:w,stylesheetLoadTimeout:k,keepIframeSrcFn:x});t&&w(e,t)}}),k),L}function Ao(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function Mo(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var n=function e(){return this instanceof e?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,o.get?o:{enumerable:!0,get:function(){return e[t]}})})),n}var Ro={exports:{}},Po=String,Do=function(){return{isColorSupported:!1,reset:Po,bold:Po,dim:Po,italic:Po,underline:Po,inverse:Po,hidden:Po,strikethrough:Po,black:Po,red:Po,green:Po,yellow:Po,blue:Po,magenta:Po,cyan:Po,white:Po,gray:Po,bgBlack:Po,bgRed:Po,bgGreen:Po,bgYellow:Po,bgBlue:Po,bgMagenta:Po,bgCyan:Po,bgWhite:Po}};Ro.exports=Do(),Ro.exports.createColors=Do;var No=Ro.exports;const jo=Mo(Object.freeze(Object.defineProperty({__proto__:null,default:{}},Symbol.toStringTag,{value:"Module"})));let Fo=No,Bo=jo,_o=class e extends Error{constructor(t,n,o,r,i,a){super(t),this.name="CssSyntaxError",this.reason=t,i&&(this.file=i),r&&(this.source=r),a&&(this.plugin=a),void 0!==n&&void 0!==o&&("number"==typeof n?(this.line=n,this.column=o):(this.line=n.line,this.column=n.column,this.endLine=o.line,this.endColumn=o.column)),this.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(this,e)}setMessage(){this.message=this.plugin?this.plugin+": ":"",this.message+=this.file?this.file:"",void 0!==this.line&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason}showSourceCode(e){if(!this.source)return"";let t=this.source;null==e&&(e=Fo.isColorSupported),Bo&&e&&(t=Bo(t));let n,o,r=t.split(/\r?\n/),i=Math.max(this.line-3,0),a=Math.min(this.line+2,r.length),s=String(a).length;if(e){let{bold:e,gray:t,red:r}=Fo.createColors(!0);n=t=>e(r(t)),o=e=>t(e)}else n=o=e=>e;return r.slice(i,a).map(((e,t)=>{let r=i+1+t,a=" "+(" "+r).slice(-s)+" | ";if(r===this.line){let t=o(a.replace(/\d/g," "))+e.slice(0,this.column-1).replace(/[^\t]/g," ");return n(">")+o(a)+e+"\n "+t+n("^")}return" "+o(a)+e})).join("\n")}toString(){let e=this.showSourceCode();return e&&(e="\n\n"+e+"\n"),this.name+": "+this.message+e}};var Uo=_o;_o.default=_o;var Ho={};Ho.isClean=Symbol("isClean"),Ho.my=Symbol("my");const zo={after:"\n",beforeClose:"\n",beforeComment:"\n",beforeDecl:"\n",beforeOpen:" ",beforeRule:"\n",colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:!1};let qo=class{constructor(e){this.builder=e}atrule(e,t){let n="@"+e.name,o=e.params?this.rawValue(e,"params"):"";if(void 0!==e.raws.afterName?n+=e.raws.afterName:o&&(n+=" "),e.nodes)this.block(e,n+o);else{let r=(e.raws.between||"")+(t?";":"");this.builder(n+o+r,e)}}beforeAfter(e,t){let n;n="decl"===e.type?this.raw(e,null,"beforeDecl"):"comment"===e.type?this.raw(e,null,"beforeComment"):"before"===t?this.raw(e,null,"beforeRule"):this.raw(e,null,"beforeClose");let o=e.parent,r=0;for(;o&&"root"!==o.type;)r+=1,o=o.parent;if(n.includes("\n")){let t=this.raw(e,null,"indent");if(t.length)for(let e=0;e0&&"comment"===e.nodes[t].type;)t-=1;let n=this.raw(e,"semicolon");for(let o=0;o{if(o=e.raws[t],void 0!==o)return!1}))}var a;return void 0===o&&(o=zo[n]),i.rawCache[n]=o,o}rawBeforeClose(e){let t;return e.walk((e=>{if(e.nodes&&e.nodes.length>0&&void 0!==e.raws.after)return t=e.raws.after,t.includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1})),t&&(t=t.replace(/\S/g,"")),t}rawBeforeComment(e,t){let n;return e.walkComments((e=>{if(void 0!==e.raws.before)return n=e.raws.before,n.includes("\n")&&(n=n.replace(/[^\n]+$/,"")),!1})),void 0===n?n=this.raw(t,null,"beforeDecl"):n&&(n=n.replace(/\S/g,"")),n}rawBeforeDecl(e,t){let n;return e.walkDecls((e=>{if(void 0!==e.raws.before)return n=e.raws.before,n.includes("\n")&&(n=n.replace(/[^\n]+$/,"")),!1})),void 0===n?n=this.raw(t,null,"beforeRule"):n&&(n=n.replace(/\S/g,"")),n}rawBeforeOpen(e){let t;return e.walk((e=>{if("decl"!==e.type&&(t=e.raws.between,void 0!==t))return!1})),t}rawBeforeRule(e){let t;return e.walk((n=>{if(n.nodes&&(n.parent!==e||e.first!==n)&&void 0!==n.raws.before)return t=n.raws.before,t.includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1})),t&&(t=t.replace(/\S/g,"")),t}rawColon(e){let t;return e.walkDecls((e=>{if(void 0!==e.raws.between)return t=e.raws.between.replace(/[^\s:]/g,""),!1})),t}rawEmptyBody(e){let t;return e.walk((e=>{if(e.nodes&&0===e.nodes.length&&(t=e.raws.after,void 0!==t))return!1})),t}rawIndent(e){if(e.raws.indent)return e.raws.indent;let t;return e.walk((n=>{let o=n.parent;if(o&&o!==e&&o.parent&&o.parent===e&&void 0!==n.raws.before){let e=n.raws.before.split("\n");return t=e[e.length-1],t=t.replace(/\S/g,""),!1}})),t}rawSemicolon(e){let t;return e.walk((e=>{if(e.nodes&&e.nodes.length&&"decl"===e.last.type&&(t=e.raws.semicolon,void 0!==t))return!1})),t}rawValue(e,t){let n=e[t],o=e.raws[t];return o&&o.value===n?o.raw:n}root(e){this.body(e),e.raws.after&&this.builder(e.raws.after)}rule(e){this.block(e,this.rawValue(e,"selector")),e.raws.ownSemicolon&&this.builder(e.raws.ownSemicolon,e,"end")}stringify(e,t){if(!this[e.type])throw new Error("Unknown AST node type "+e.type+". Maybe you need to change PostCSS stringifier.");this[e.type](e,t)}};var Wo=qo;qo.default=qo;let Go=Wo;function Vo(e,t){new Go(t).stringify(e)}var Jo=Vo;Vo.default=Vo;let{isClean:Zo,my:Ko}=Ho,Yo=Uo,Xo=Wo,$o=Jo;function Qo(e,t){let n=new e.constructor;for(let o in e){if(!Object.prototype.hasOwnProperty.call(e,o))continue;if("proxyCache"===o)continue;let r=e[o],i=typeof r;"parent"===o&&"object"===i?t&&(n[o]=t):"source"===o?n[o]=r:Array.isArray(r)?n[o]=r.map((e=>Qo(e,n))):("object"===i&&null!==r&&(r=Qo(r)),n[o]=r)}return n}let er=class{constructor(e={}){this.raws={},this[Zo]=!1,this[Ko]=!0;for(let t in e)if("nodes"===t){this.nodes=[];for(let n of e[t])"function"==typeof n.clone?this.append(n.clone()):this.append(n)}else this[t]=e[t]}addToError(e){if(e.postcssNode=this,e.stack&&this.source&&/\n\s{4}at /.test(e.stack)){let t=this.source;e.stack=e.stack.replace(/\n\s{4}at /,`$&${t.input.from}:${t.start.line}:${t.start.column}$&`)}return e}after(e){return this.parent.insertAfter(this,e),this}assign(e={}){for(let t in e)this[t]=e[t];return this}before(e){return this.parent.insertBefore(this,e),this}cleanRaws(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between}clone(e={}){let t=Qo(this);for(let n in e)t[n]=e[n];return t}cloneAfter(e={}){let t=this.clone(e);return this.parent.insertAfter(this,t),t}cloneBefore(e={}){let t=this.clone(e);return this.parent.insertBefore(this,t),t}error(e,t={}){if(this.source){let{end:n,start:o}=this.rangeBy(t);return this.source.input.error(e,{column:o.column,line:o.line},{column:n.column,line:n.line},t)}return new Yo(e)}getProxyProcessor(){return{get:(e,t)=>"proxyOf"===t?e:"root"===t?()=>e.root().toProxy():e[t],set:(e,t,n)=>(e[t]===n||(e[t]=n,"prop"!==t&&"value"!==t&&"name"!==t&&"params"!==t&&"important"!==t&&"text"!==t||e.markDirty()),!0)}}markDirty(){if(this[Zo]){this[Zo]=!1;let e=this;for(;e=e.parent;)e[Zo]=!1}}next(){if(!this.parent)return;let e=this.parent.index(this);return this.parent.nodes[e+1]}positionBy(e,t){let n=this.source.start;if(e.index)n=this.positionInside(e.index,t);else if(e.word){let o=(t=this.toString()).indexOf(e.word);-1!==o&&(n=this.positionInside(o,t))}return n}positionInside(e,t){let n=t||this.toString(),o=this.source.start.column,r=this.source.start.line;for(let i=0;i"object"==typeof e&&e.toJSON?e.toJSON(null,t):e));else if("object"==typeof e&&e.toJSON)n[i]=e.toJSON(null,t);else if("source"===i){let o=t.get(e.input);null==o&&(o=r,t.set(e.input,r),r++),n[i]={end:e.end,inputId:o,start:e.start}}else n[i]=e}return o&&(n.inputs=[...t.keys()].map((e=>e.toJSON()))),n}toProxy(){return this.proxyCache||(this.proxyCache=new Proxy(this,this.getProxyProcessor())),this.proxyCache}toString(e=$o){e.stringify&&(e=e.stringify);let t="";return e(this,(e=>{t+=e})),t}warn(e,t,n){let o={node:this};for(let r in n)o[r]=n[r];return e.warn(t,o)}get proxyOf(){return this}};var tr=er;er.default=er;let nr=tr,or=class extends nr{constructor(e){e&&void 0!==e.value&&"string"!=typeof e.value&&(e={...e,value:String(e.value)}),super(e),this.type="decl"}get variable(){return this.prop.startsWith("--")||"$"===this.prop[0]}};var rr=or;or.default=or;var ir={nanoid:(e=21)=>{let t="",n=e;for(;n--;)t+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[64*Math.random()|0];return t},customAlphabet:(e,t=21)=>(n=t)=>{let o="",r=n;for(;r--;)o+=e[Math.random()*e.length|0];return o}};let{SourceMapConsumer:ar,SourceMapGenerator:sr}=jo,{existsSync:lr,readFileSync:cr}=jo,{dirname:ur,join:dr}=jo;let pr=class{constructor(e,t){if(!1===t.map)return;this.loadAnnotation(e),this.inline=this.startWith(this.annotation,"data:");let n=t.map?t.map.prev:void 0,o=this.loadMap(t.from,n);!this.mapFile&&t.from&&(this.mapFile=t.from),this.mapFile&&(this.root=ur(this.mapFile)),o&&(this.text=o)}consumer(){return this.consumerCache||(this.consumerCache=new ar(this.text)),this.consumerCache}decodeInline(e){if(/^data:application\/json;charset=utf-?8,/.test(e)||/^data:application\/json,/.test(e))return decodeURIComponent(e.substr(RegExp.lastMatch.length));if(/^data:application\/json;charset=utf-?8;base64,/.test(e)||/^data:application\/json;base64,/.test(e))return t=e.substr(RegExp.lastMatch.length),Buffer?Buffer.from(t,"base64").toString():window.atob(t);var t;let n=e.match(/data:application\/json;([^,]+),/)[1];throw new Error("Unsupported source map encoding "+n)}getAnnotationURL(e){return e.replace(/^\/\*\s*# sourceMappingURL=/,"").trim()}isMap(e){return"object"==typeof e&&("string"==typeof e.mappings||"string"==typeof e._mappings||Array.isArray(e.sections))}loadAnnotation(e){let t=e.match(/\/\*\s*# sourceMappingURL=/gm);if(!t)return;let n=e.lastIndexOf(t.pop()),o=e.indexOf("*/",n);n>-1&&o>-1&&(this.annotation=this.getAnnotationURL(e.substring(n,o)))}loadFile(e){if(this.root=ur(e),lr(e))return this.mapFile=e,cr(e,"utf-8").toString().trim()}loadMap(e,t){if(!1===t)return!1;if(t){if("string"==typeof t)return t;if("function"!=typeof t){if(t instanceof ar)return sr.fromSourceMap(t).toString();if(t instanceof sr)return t.toString();if(this.isMap(t))return JSON.stringify(t);throw new Error("Unsupported previous source map format: "+t.toString())}{let n=t(e);if(n){let e=this.loadFile(n);if(!e)throw new Error("Unable to load previous source map: "+n.toString());return e}}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){let t=this.annotation;return e&&(t=dr(ur(e),t)),this.loadFile(t)}}}startWith(e,t){return!!e&&e.substr(0,t.length)===t}withContent(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)}};var hr=pr;pr.default=pr;let{SourceMapConsumer:fr,SourceMapGenerator:mr}=jo,{fileURLToPath:gr,pathToFileURL:vr}=jo,{isAbsolute:yr,resolve:br}=jo,{nanoid:wr}=ir,kr=jo,xr=Uo,Sr=hr,Cr=Symbol("fromOffsetCache"),Ir=Boolean(fr&&mr),Or=Boolean(br&&yr),Er=class{constructor(e,t={}){if(null==e||"object"==typeof e&&!e.toString)throw new Error(`PostCSS received ${e} instead of CSS string`);if(this.css=e.toString(),"\ufeff"===this.css[0]||"￾"===this.css[0]?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,t.from&&(!Or||/^\w+:\/\//.test(t.from)||yr(t.from)?this.file=t.from:this.file=br(t.from)),Or&&Ir){let e=new Sr(this.css,t);if(e.text){this.map=e;let t=e.consumer().file;!this.file&&t&&(this.file=this.mapResolve(t))}}this.file||(this.id=""),this.map&&(this.map.file=this.from)}error(e,t,n,o={}){let r,i,a;if(t&&"object"==typeof t){let e=t,o=n;if("number"==typeof e.offset){let o=this.fromOffset(e.offset);t=o.line,n=o.col}else t=e.line,n=e.column;if("number"==typeof o.offset){let e=this.fromOffset(o.offset);i=e.line,a=e.col}else i=o.line,a=o.column}else if(!n){let e=this.fromOffset(t);t=e.line,n=e.col}let s=this.origin(t,n,i,a);return r=s?new xr(e,void 0===s.endLine?s.line:{column:s.column,line:s.line},void 0===s.endLine?s.column:{column:s.endColumn,line:s.endLine},s.source,s.file,o.plugin):new xr(e,void 0===i?t:{column:n,line:t},void 0===i?n:{column:a,line:i},this.css,this.file,o.plugin),r.input={column:n,endColumn:a,endLine:i,line:t,source:this.css},this.file&&(vr&&(r.input.url=vr(this.file).toString()),r.input.file=this.file),r}fromOffset(e){let t,n;if(this[Cr])n=this[Cr];else{let e=this.css.split("\n");n=new Array(e.length);let t=0;for(let o=0,r=e.length;o=t)o=n.length-1;else{let t,r=n.length-2;for(;o>1),e=n[t+1])){o=t;break}o=t+1}}return{col:e-n[o]+1,line:o+1}}mapResolve(e){return/^\w+:\/\//.test(e)?e:br(this.map.consumer().sourceRoot||this.map.root||".",e)}origin(e,t,n,o){if(!this.map)return!1;let r,i,a=this.map.consumer(),s=a.originalPositionFor({column:t,line:e});if(!s.source)return!1;"number"==typeof n&&(r=a.originalPositionFor({column:o,line:n})),i=yr(s.source)?vr(s.source):new URL(s.source,this.map.consumer().sourceRoot||vr(this.map.mapFile));let l={column:s.column,endColumn:r&&r.column,endLine:r&&r.line,line:s.line,url:i.toString()};if("file:"===i.protocol){if(!gr)throw new Error("file: protocol is not available in this PostCSS build");l.file=gr(i)}let c=a.sourceContentFor(s.source);return c&&(l.source=c),l}toJSON(){let e={};for(let t of["hasBOM","css","file","id"])null!=this[t]&&(e[t]=this[t]);return this.map&&(e.map={...this.map},e.map.consumerCache&&(e.map.consumerCache=void 0)),e}get from(){return this.file||this.id}};var Tr=Er;Er.default=Er,kr&&kr.registerInput&&kr.registerInput(Er);let{SourceMapConsumer:Lr,SourceMapGenerator:Ar}=jo,{dirname:Mr,relative:Rr,resolve:Pr,sep:Dr}=jo,{pathToFileURL:Nr}=jo,jr=Tr,Fr=Boolean(Lr&&Ar),Br=Boolean(Mr&&Pr&&Rr&&Dr);var _r=class{constructor(e,t,n,o){this.stringify=e,this.mapOpts=n.map||{},this.root=t,this.opts=n,this.css=o,this.originalCSS=o,this.usesFileUrls=!this.mapOpts.from&&this.mapOpts.absolute,this.memoizedFileURLs=new Map,this.memoizedPaths=new Map,this.memoizedURLs=new Map}addAnnotation(){let e;e=this.isInline()?"data:application/json;base64,"+this.toBase64(this.map.toString()):"string"==typeof this.mapOpts.annotation?this.mapOpts.annotation:"function"==typeof this.mapOpts.annotation?this.mapOpts.annotation(this.opts.to,this.root):this.outputFile()+".map";let t="\n";this.css.includes("\r\n")&&(t="\r\n"),this.css+=t+"/*# sourceMappingURL="+e+" */"}applyPrevMaps(){for(let e of this.previous()){let t,n=this.toUrl(this.path(e.file)),o=e.root||Mr(e.file);!1===this.mapOpts.sourcesContent?(t=new Lr(e.text),t.sourcesContent&&(t.sourcesContent=null)):t=e.consumer(),this.map.applySourceMap(t,n,this.toUrl(this.path(o)))}}clearAnnotation(){if(!1!==this.mapOpts.annotation)if(this.root){let e;for(let t=this.root.nodes.length-1;t>=0;t--)e=this.root.nodes[t],"comment"===e.type&&0===e.text.indexOf("# sourceMappingURL=")&&this.root.removeChild(t)}else this.css&&(this.css=this.css.replace(/\n*?\/\*#[\S\s]*?\*\/$/gm,""))}generate(){if(this.clearAnnotation(),Br&&Fr&&this.isMap())return this.generateMap();{let e="";return this.stringify(this.root,(t=>{e+=t})),[e]}}generateMap(){if(this.root)this.generateString();else if(1===this.previous().length){let e=this.previous()[0].consumer();e.file=this.outputFile(),this.map=Ar.fromSourceMap(e,{ignoreInvalidMapping:!0})}else this.map=new Ar({file:this.outputFile(),ignoreInvalidMapping:!0}),this.map.addMapping({generated:{column:0,line:1},original:{column:0,line:1},source:this.opts.from?this.toUrl(this.path(this.opts.from)):""});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]}generateString(){this.css="",this.map=new Ar({file:this.outputFile(),ignoreInvalidMapping:!0});let e,t,n=1,o=1,r="",i={generated:{column:0,line:0},original:{column:0,line:0},source:""};this.stringify(this.root,((a,s,l)=>{if(this.css+=a,s&&"end"!==l&&(i.generated.line=n,i.generated.column=o-1,s.source&&s.source.start?(i.source=this.sourcePath(s),i.original.line=s.source.start.line,i.original.column=s.source.start.column-1,this.map.addMapping(i)):(i.source=r,i.original.line=1,i.original.column=0,this.map.addMapping(i))),e=a.match(/\n/g),e?(n+=e.length,t=a.lastIndexOf("\n"),o=a.length-t):o+=a.length,s&&"start"!==l){let e=s.parent||{raws:{}};("decl"===s.type||"atrule"===s.type&&!s.nodes)&&s===e.last&&!e.raws.semicolon||(s.source&&s.source.end?(i.source=this.sourcePath(s),i.original.line=s.source.end.line,i.original.column=s.source.end.column-1,i.generated.line=n,i.generated.column=o-2,this.map.addMapping(i)):(i.source=r,i.original.line=1,i.original.column=0,i.generated.line=n,i.generated.column=o-1,this.map.addMapping(i)))}}))}isAnnotation(){return!!this.isInline()||(void 0!==this.mapOpts.annotation?this.mapOpts.annotation:!this.previous().length||this.previous().some((e=>e.annotation)))}isInline(){if(void 0!==this.mapOpts.inline)return this.mapOpts.inline;let e=this.mapOpts.annotation;return(void 0===e||!0===e)&&(!this.previous().length||this.previous().some((e=>e.inline)))}isMap(){return void 0!==this.opts.map?!!this.opts.map:this.previous().length>0}isSourcesContent(){return void 0!==this.mapOpts.sourcesContent?this.mapOpts.sourcesContent:!this.previous().length||this.previous().some((e=>e.withContent()))}outputFile(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"}path(e){if(this.mapOpts.absolute)return e;if(60===e.charCodeAt(0))return e;if(/^\w+:\/\//.test(e))return e;let t=this.memoizedPaths.get(e);if(t)return t;let n=this.opts.to?Mr(this.opts.to):".";"string"==typeof this.mapOpts.annotation&&(n=Mr(Pr(n,this.mapOpts.annotation)));let o=Rr(n,e);return this.memoizedPaths.set(e,o),o}previous(){if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk((e=>{if(e.source&&e.source.input.map){let t=e.source.input.map;this.previousMaps.includes(t)||this.previousMaps.push(t)}}));else{let e=new jr(this.originalCSS,this.opts);e.map&&this.previousMaps.push(e.map)}return this.previousMaps}setSourcesContent(){let e={};if(this.root)this.root.walk((t=>{if(t.source){let n=t.source.input.from;if(n&&!e[n]){e[n]=!0;let o=this.usesFileUrls?this.toFileUrl(n):this.toUrl(this.path(n));this.map.setSourceContent(o,t.source.input.css)}}}));else if(this.css){let e=this.opts.from?this.toUrl(this.path(this.opts.from)):"";this.map.setSourceContent(e,this.css)}}sourcePath(e){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(e.source.input.from):this.toUrl(this.path(e.source.input.from))}toBase64(e){return Buffer?Buffer.from(e).toString("base64"):window.btoa(unescape(encodeURIComponent(e)))}toFileUrl(e){let t=this.memoizedFileURLs.get(e);if(t)return t;if(Nr){let t=Nr(e).toString();return this.memoizedFileURLs.set(e,t),t}throw new Error("`map.absolute` option is not available in this PostCSS build")}toUrl(e){let t=this.memoizedURLs.get(e);if(t)return t;"\\"===Dr&&(e=e.replace(/\\/g,"/"));let n=encodeURI(e).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(e,n),n}};let Ur=tr,Hr=class extends Ur{constructor(e){super(e),this.type="comment"}};var zr=Hr;Hr.default=Hr;let qr,Wr,Gr,Vr,{isClean:Jr,my:Zr}=Ho,Kr=rr,Yr=zr,Xr=tr;function $r(e){return e.map((e=>(e.nodes&&(e.nodes=$r(e.nodes)),delete e.source,e)))}function Qr(e){if(e[Jr]=!1,e.proxyOf.nodes)for(let t of e.proxyOf.nodes)Qr(t)}let ei=class e extends Xr{append(...e){for(let t of e){let e=this.normalize(t,this.last);for(let t of e)this.proxyOf.nodes.push(t)}return this.markDirty(),this}cleanRaws(e){if(super.cleanRaws(e),this.nodes)for(let t of this.nodes)t.cleanRaws(e)}each(e){if(!this.proxyOf.nodes)return;let t,n,o=this.getIterator();for(;this.indexes[o]"proxyOf"===t?e:e[t]?"each"===t||"string"==typeof t&&t.startsWith("walk")?(...n)=>e[t](...n.map((e=>"function"==typeof e?(t,n)=>e(t.toProxy(),n):e))):"every"===t||"some"===t?n=>e[t](((e,...t)=>n(e.toProxy(),...t))):"root"===t?()=>e.root().toProxy():"nodes"===t?e.nodes.map((e=>e.toProxy())):"first"===t||"last"===t?e[t].toProxy():e[t]:e[t],set:(e,t,n)=>(e[t]===n||(e[t]=n,"name"!==t&&"params"!==t&&"selector"!==t||e.markDirty()),!0)}}index(e){return"number"==typeof e?e:(e.proxyOf&&(e=e.proxyOf),this.proxyOf.nodes.indexOf(e))}insertAfter(e,t){let n,o=this.index(e),r=this.normalize(t,this.proxyOf.nodes[o]).reverse();o=this.index(e);for(let i of r)this.proxyOf.nodes.splice(o+1,0,i);for(let i in this.indexes)n=this.indexes[i],o(t[Zr]||e.rebuild(t),(t=t.proxyOf).parent&&t.parent.removeChild(t),t[Jr]&&Qr(t),void 0===t.raws.before&&n&&void 0!==n.raws.before&&(t.raws.before=n.raws.before.replace(/\S/g,"")),t.parent=this.proxyOf,t)))}prepend(...e){e=e.reverse();for(let t of e){let e=this.normalize(t,this.first,"prepend").reverse();for(let t of e)this.proxyOf.nodes.unshift(t);for(let t in this.indexes)this.indexes[t]=this.indexes[t]+e.length}return this.markDirty(),this}push(e){return e.parent=this,this.proxyOf.nodes.push(e),this}removeAll(){for(let e of this.proxyOf.nodes)e.parent=void 0;return this.proxyOf.nodes=[],this.markDirty(),this}removeChild(e){let t;e=this.index(e),this.proxyOf.nodes[e].parent=void 0,this.proxyOf.nodes.splice(e,1);for(let n in this.indexes)t=this.indexes[n],t>=e&&(this.indexes[n]=t-1);return this.markDirty(),this}replaceValues(e,t,n){return n||(n=t,t={}),this.walkDecls((o=>{t.props&&!t.props.includes(o.prop)||t.fast&&!o.value.includes(t.fast)||(o.value=o.value.replace(e,n))})),this.markDirty(),this}some(e){return this.nodes.some(e)}walk(e){return this.each(((t,n)=>{let o;try{o=e(t,n)}catch(r){throw t.addToError(r)}return!1!==o&&t.walk&&(o=t.walk(e)),o}))}walkAtRules(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("atrule"===n.type&&e.test(n.name))return t(n,o)})):this.walk(((n,o)=>{if("atrule"===n.type&&n.name===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("atrule"===e.type)return t(e,n)})))}walkComments(e){return this.walk(((t,n)=>{if("comment"===t.type)return e(t,n)}))}walkDecls(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("decl"===n.type&&e.test(n.prop))return t(n,o)})):this.walk(((n,o)=>{if("decl"===n.type&&n.prop===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("decl"===e.type)return t(e,n)})))}walkRules(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("rule"===n.type&&e.test(n.selector))return t(n,o)})):this.walk(((n,o)=>{if("rule"===n.type&&n.selector===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("rule"===e.type)return t(e,n)})))}get first(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}get last(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}};ei.registerParse=e=>{qr=e},ei.registerRule=e=>{Wr=e},ei.registerAtRule=e=>{Gr=e},ei.registerRoot=e=>{Vr=e};var ti=ei;ei.default=ei,ei.rebuild=e=>{"atrule"===e.type?Object.setPrototypeOf(e,Gr.prototype):"rule"===e.type?Object.setPrototypeOf(e,Wr.prototype):"decl"===e.type?Object.setPrototypeOf(e,Kr.prototype):"comment"===e.type?Object.setPrototypeOf(e,Yr.prototype):"root"===e.type&&Object.setPrototypeOf(e,Vr.prototype),e[Zr]=!0,e.nodes&&e.nodes.forEach((e=>{ei.rebuild(e)}))};let ni,oi,ri=ti,ii=class extends ri{constructor(e){super({type:"document",...e}),this.nodes||(this.nodes=[])}toResult(e={}){return new ni(new oi,this,e).stringify()}};ii.registerLazyResult=e=>{ni=e},ii.registerProcessor=e=>{oi=e};var ai=ii;ii.default=ii;let si=class{constructor(e,t={}){if(this.type="warning",this.text=e,t.node&&t.node.source){let e=t.node.rangeBy(t);this.line=e.start.line,this.column=e.start.column,this.endLine=e.end.line,this.endColumn=e.end.column}for(let n in t)this[n]=t[n]}toString(){return this.node?this.node.error(this.text,{index:this.index,plugin:this.plugin,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text}};var li=si;si.default=si;let ci=li,ui=class{constructor(e,t,n){this.processor=e,this.messages=[],this.root=t,this.opts=n,this.css=void 0,this.map=void 0}toString(){return this.css}warn(e,t={}){t.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(t.plugin=this.lastPlugin.postcssPlugin);let n=new ci(e,t);return this.messages.push(n),n}warnings(){return this.messages.filter((e=>"warning"===e.type))}get content(){return this.css}};var di=ui;ui.default=ui;const pi="'".charCodeAt(0),hi='"'.charCodeAt(0),fi="\\".charCodeAt(0),mi="/".charCodeAt(0),gi="\n".charCodeAt(0),vi=" ".charCodeAt(0),yi="\f".charCodeAt(0),bi="\t".charCodeAt(0),wi="\r".charCodeAt(0),ki="[".charCodeAt(0),xi="]".charCodeAt(0),Si="(".charCodeAt(0),Ci=")".charCodeAt(0),Ii="{".charCodeAt(0),Oi="}".charCodeAt(0),Ei=";".charCodeAt(0),Ti="*".charCodeAt(0),Li=":".charCodeAt(0),Ai="@".charCodeAt(0),Mi=/[\t\n\f\r "#'()/;[\\\]{}]/g,Ri=/[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g,Pi=/.[\r\n"'(/\\]/,Di=/[\da-f]/i;let Ni=ti,ji=class extends Ni{constructor(e){super(e),this.type="atrule"}append(...e){return this.proxyOf.nodes||(this.nodes=[]),super.append(...e)}prepend(...e){return this.proxyOf.nodes||(this.nodes=[]),super.prepend(...e)}};var Fi=ji;ji.default=ji,Ni.registerAtRule(ji);let Bi,_i,Ui=ti,Hi=class extends Ui{constructor(e){super(e),this.type="root",this.nodes||(this.nodes=[])}normalize(e,t,n){let o=super.normalize(e);if(t)if("prepend"===n)this.nodes.length>1?t.raws.before=this.nodes[1].raws.before:delete t.raws.before;else if(this.first!==t)for(let r of o)r.raws.before=t.raws.before;return o}removeChild(e,t){let n=this.index(e);return!t&&0===n&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[n].raws.before),super.removeChild(e)}toResult(e={}){return new Bi(new _i,this,e).stringify()}};Hi.registerLazyResult=e=>{Bi=e},Hi.registerProcessor=e=>{_i=e};var zi=Hi;Hi.default=Hi,Ui.registerRoot(Hi);let qi={comma:e=>qi.split(e,[","],!0),space:e=>qi.split(e,[" ","\n","\t"]),split(e,t,n){let o=[],r="",i=!1,a=0,s=!1,l="",c=!1;for(let u of e)c?c=!1:"\\"===u?c=!0:s?u===l&&(s=!1):'"'===u||"'"===u?(s=!0,l=u):"("===u?a+=1:")"===u?a>0&&(a-=1):0===a&&t.includes(u)&&(i=!0),i?(""!==r&&o.push(r.trim()),r="",i=!1):r+=u;return(n||""!==r)&&o.push(r.trim()),o}};var Wi=qi;qi.default=qi;let Gi=ti,Vi=Wi,Ji=class extends Gi{constructor(e){super(e),this.type="rule",this.nodes||(this.nodes=[])}get selectors(){return Vi.comma(this.selector)}set selectors(e){let t=this.selector?this.selector.match(/,\s*/):null,n=t?t[0]:","+this.raw("between","beforeOpen");this.selector=e.join(n)}};var Zi=Ji;Ji.default=Ji,Gi.registerRule(Ji);let Ki=rr,Yi=function(e,t={}){let n,o,r,i,a,s,l,c,u,d,p=e.css.valueOf(),h=t.ignoreErrors,f=p.length,m=0,g=[],v=[];function y(t){throw e.error("Unclosed "+t,m)}return{back:function(e){v.push(e)},endOfFile:function(){return 0===v.length&&m>=f},nextToken:function(e){if(v.length)return v.pop();if(m>=f)return;let t=!!e&&e.ignoreUnclosed;switch(n=p.charCodeAt(m),n){case gi:case vi:case bi:case wi:case yi:o=m;do{o+=1,n=p.charCodeAt(o)}while(n===vi||n===gi||n===bi||n===wi||n===yi);d=["space",p.slice(m,o)],m=o-1;break;case ki:case xi:case Ii:case Oi:case Li:case Ei:case Ci:{let e=String.fromCharCode(n);d=[e,e,m];break}case Si:if(c=g.length?g.pop()[1]:"",u=p.charCodeAt(m+1),"url"===c&&u!==pi&&u!==hi&&u!==vi&&u!==gi&&u!==bi&&u!==yi&&u!==wi){o=m;do{if(s=!1,o=p.indexOf(")",o+1),-1===o){if(h||t){o=m;break}y("bracket")}for(l=o;p.charCodeAt(l-1)===fi;)l-=1,s=!s}while(s);d=["brackets",p.slice(m,o+1),m,o],m=o}else o=p.indexOf(")",m+1),i=p.slice(m,o+1),-1===o||Pi.test(i)?d=["(","(",m]:(d=["brackets",i,m,o],m=o);break;case pi:case hi:r=n===pi?"'":'"',o=m;do{if(s=!1,o=p.indexOf(r,o+1),-1===o){if(h||t){o=m+1;break}y("string")}for(l=o;p.charCodeAt(l-1)===fi;)l-=1,s=!s}while(s);d=["string",p.slice(m,o+1),m,o],m=o;break;case Ai:Mi.lastIndex=m+1,Mi.test(p),o=0===Mi.lastIndex?p.length-1:Mi.lastIndex-2,d=["at-word",p.slice(m,o+1),m,o],m=o;break;case fi:for(o=m,a=!0;p.charCodeAt(o+1)===fi;)o+=1,a=!a;if(n=p.charCodeAt(o+1),a&&n!==mi&&n!==vi&&n!==gi&&n!==bi&&n!==wi&&n!==yi&&(o+=1,Di.test(p.charAt(o)))){for(;Di.test(p.charAt(o+1));)o+=1;p.charCodeAt(o+1)===vi&&(o+=1)}d=["word",p.slice(m,o+1),m,o],m=o;break;default:n===mi&&p.charCodeAt(m+1)===Ti?(o=p.indexOf("*/",m+2)+1,0===o&&(h||t?o=p.length:y("comment")),d=["comment",p.slice(m,o+1),m,o],m=o):(Ri.lastIndex=m+1,Ri.test(p),o=0===Ri.lastIndex?p.length-1:Ri.lastIndex-2,d=["word",p.slice(m,o+1),m,o],g.push(d),m=o)}return m++,d},position:function(){return m}}},Xi=zr,$i=Fi,Qi=zi,ea=Zi;const ta={empty:!0,space:!0};var na=class{constructor(e){this.input=e,this.root=new Qi,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:e,start:{column:1,line:1,offset:0}}}atrule(e){let t,n,o,r=new $i;r.name=e[1].slice(1),""===r.name&&this.unnamedAtrule(r,e),this.init(r,e[2]);let i=!1,a=!1,s=[],l=[];for(;!this.tokenizer.endOfFile();){if(t=(e=this.tokenizer.nextToken())[0],"("===t||"["===t?l.push("("===t?")":"]"):"{"===t&&l.length>0?l.push("}"):t===l[l.length-1]&&l.pop(),0===l.length){if(";"===t){r.source.end=this.getPosition(e[2]),r.source.end.offset++,this.semicolon=!0;break}if("{"===t){a=!0;break}if("}"===t){if(s.length>0){for(o=s.length-1,n=s[o];n&&"space"===n[0];)n=s[--o];n&&(r.source.end=this.getPosition(n[3]||n[2]),r.source.end.offset++)}this.end(e);break}s.push(e)}else s.push(e);if(this.tokenizer.endOfFile()){i=!0;break}}r.raws.between=this.spacesAndCommentsFromEnd(s),s.length?(r.raws.afterName=this.spacesAndCommentsFromStart(s),this.raw(r,"params",s),i&&(e=s[s.length-1],r.source.end=this.getPosition(e[3]||e[2]),r.source.end.offset++,this.spaces=r.raws.between,r.raws.between="")):(r.raws.afterName="",r.params=""),a&&(r.nodes=[],this.current=r)}checkMissedSemicolon(e){let t=this.colon(e);if(!1===t)return;let n,o=0;for(let r=t-1;r>=0&&(n=e[r],"space"===n[0]||(o+=1,2!==o));r--);throw this.input.error("Missed semicolon","word"===n[0]?n[3]+1:n[2])}colon(e){let t,n,o,r=0;for(let[i,a]of e.entries()){if(t=a,n=t[0],"("===n&&(r+=1),")"===n&&(r-=1),0===r&&":"===n){if(o){if("word"===o[0]&&"progid"===o[1])continue;return i}this.doubleColon(t)}o=t}return!1}comment(e){let t=new Xi;this.init(t,e[2]),t.source.end=this.getPosition(e[3]||e[2]),t.source.end.offset++;let n=e[1].slice(2,-2);if(/^\s*$/.test(n))t.text="",t.raws.left=n,t.raws.right="";else{let e=n.match(/^(\s*)([^]*\S)(\s*)$/);t.text=e[2],t.raws.left=e[1],t.raws.right=e[3]}}createTokenizer(){this.tokenizer=Yi(this.input)}decl(e,t){let n=new Ki;this.init(n,e[0][2]);let o,r=e[e.length-1];for(";"===r[0]&&(this.semicolon=!0,e.pop()),n.source.end=this.getPosition(r[3]||r[2]||function(e){for(let t=e.length-1;t>=0;t--){let n=e[t],o=n[3]||n[2];if(o)return o}}(e)),n.source.end.offset++;"word"!==e[0][0];)1===e.length&&this.unknownWord(e),n.raws.before+=e.shift()[1];for(n.source.start=this.getPosition(e[0][2]),n.prop="";e.length;){let t=e[0][0];if(":"===t||"space"===t||"comment"===t)break;n.prop+=e.shift()[1]}for(n.raws.between="";e.length;){if(o=e.shift(),":"===o[0]){n.raws.between+=o[1];break}"word"===o[0]&&/\w/.test(o[1])&&this.unknownWord([o]),n.raws.between+=o[1]}"_"!==n.prop[0]&&"*"!==n.prop[0]||(n.raws.before+=n.prop[0],n.prop=n.prop.slice(1));let i,a=[];for(;e.length&&(i=e[0][0],"space"===i||"comment"===i);)a.push(e.shift());this.precheckMissedSemicolon(e);for(let s=e.length-1;s>=0;s--){if(o=e[s],"!important"===o[1].toLowerCase()){n.important=!0;let t=this.stringFrom(e,s);t=this.spacesFromEnd(e)+t," !important"!==t&&(n.raws.important=t);break}if("important"===o[1].toLowerCase()){let t=e.slice(0),o="";for(let e=s;e>0;e--){let n=t[e][0];if(0===o.trim().indexOf("!")&&"space"!==n)break;o=t.pop()[1]+o}0===o.trim().indexOf("!")&&(n.important=!0,n.raws.important=o,e=t)}if("space"!==o[0]&&"comment"!==o[0])break}e.some((e=>"space"!==e[0]&&"comment"!==e[0]))&&(n.raws.between+=a.map((e=>e[1])).join(""),a=[]),this.raw(n,"value",a.concat(e),t),n.value.includes(":")&&!t&&this.checkMissedSemicolon(e)}doubleColon(e){throw this.input.error("Double colon",{offset:e[2]},{offset:e[2]+e[1].length})}emptyRule(e){let t=new ea;this.init(t,e[2]),t.selector="",t.raws.between="",this.current=t}end(e){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(e[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(e)}endFile(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position())}freeSemicolon(e){if(this.spaces+=e[1],this.current.nodes){let e=this.current.nodes[this.current.nodes.length-1];e&&"rule"===e.type&&!e.raws.ownSemicolon&&(e.raws.ownSemicolon=this.spaces,this.spaces="")}}getPosition(e){let t=this.input.fromOffset(e);return{column:t.col,line:t.line,offset:e}}init(e,t){this.current.push(e),e.source={input:this.input,start:this.getPosition(t)},e.raws.before=this.spaces,this.spaces="","comment"!==e.type&&(this.semicolon=!1)}other(e){let t=!1,n=null,o=!1,r=null,i=[],a=e[1].startsWith("--"),s=[],l=e;for(;l;){if(n=l[0],s.push(l),"("===n||"["===n)r||(r=l),i.push("("===n?")":"]");else if(a&&o&&"{"===n)r||(r=l),i.push("}");else if(0===i.length){if(";"===n){if(o)return void this.decl(s,a);break}if("{"===n)return void this.rule(s);if("}"===n){this.tokenizer.back(s.pop()),t=!0;break}":"===n&&(o=!0)}else n===i[i.length-1]&&(i.pop(),0===i.length&&(r=null));l=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(t=!0),i.length>0&&this.unclosedBracket(r),t&&o){if(!a)for(;s.length&&(l=s[s.length-1][0],"space"===l||"comment"===l);)this.tokenizer.back(s.pop());this.decl(s,a)}else this.unknownWord(s)}parse(){let e;for(;!this.tokenizer.endOfFile();)switch(e=this.tokenizer.nextToken(),e[0]){case"space":this.spaces+=e[1];break;case";":this.freeSemicolon(e);break;case"}":this.end(e);break;case"comment":this.comment(e);break;case"at-word":this.atrule(e);break;case"{":this.emptyRule(e);break;default:this.other(e)}this.endFile()}precheckMissedSemicolon(){}raw(e,t,n,o){let r,i,a,s,l=n.length,c="",u=!0;for(let d=0;de+t[1]),"");e.raws[t]={raw:o,value:c}}e[t]=c}rule(e){e.pop();let t=new ea;this.init(t,e[0][2]),t.raws.between=this.spacesAndCommentsFromEnd(e),this.raw(t,"selector",e),this.current=t}spacesAndCommentsFromEnd(e){let t,n="";for(;e.length&&(t=e[e.length-1][0],"space"===t||"comment"===t);)n=e.pop()[1]+n;return n}spacesAndCommentsFromStart(e){let t,n="";for(;e.length&&(t=e[0][0],"space"===t||"comment"===t);)n+=e.shift()[1];return n}spacesFromEnd(e){let t,n="";for(;e.length&&(t=e[e.length-1][0],"space"===t);)n=e.pop()[1]+n;return n}stringFrom(e,t){let n="";for(let o=t;oCa(e))),e}let Ia={},Oa=class e{constructor(t,n,o){let r;if(this.stringified=!1,this.processed=!1,"object"!=typeof n||null===n||"root"!==n.type&&"document"!==n.type)if(n instanceof e||n instanceof fa)r=Ca(n.root),n.map&&(void 0===o.map&&(o.map={}),o.map.inline||(o.map.inline=!1),o.map.prev=n.map);else{let e=ma;o.syntax&&(e=o.syntax.parse),o.parser&&(e=o.parser),e.parse&&(e=e.parse);try{r=e(n,o)}catch(i){this.processed=!0,this.error=i}r&&!r[ca]&&pa.rebuild(r)}else r=Ca(n);this.result=new fa(t,r,o),this.helpers={...Ia,postcss:Ia,result:this.result},this.plugins=this.processor.plugins.map((e=>"object"==typeof e&&e.prepare?{...e,...e.prepare(this.result)}:e))}async(){return this.error?Promise.reject(this.error):this.processed?Promise.resolve(this.result):(this.processing||(this.processing=this.runAsync()),this.processing)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}getAsyncError(){throw new Error("Use process(css).then(cb) to work with async plugins")}handleError(e,t){let n=this.result.lastPlugin;try{t&&t.addToError(e),this.error=e,"CssSyntaxError"!==e.name||e.plugin?n.postcssVersion:(e.plugin=n.postcssPlugin,e.setMessage())}catch(o){console&&console.error&&console.error(o)}return e}prepareVisitors(){this.listeners={};let e=(e,t,n)=>{this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].push([e,n])};for(let t of this.plugins)if("object"==typeof t)for(let n in t){if(!ya[n]&&/^[A-Z]/.test(n))throw new Error(`Unknown event ${n} in ${t.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`);if(!ba[n])if("object"==typeof t[n])for(let o in t[n])e(t,"*"===o?n:n+"-"+o.toLowerCase(),t[n][o]);else"function"==typeof t[n]&&e(t,n,t[n])}this.hasListener=Object.keys(this.listeners).length>0}async runAsync(){this.plugin=0;for(let n=0;n0;){let e=this.visitTick(n);if(ka(e))try{await e}catch(t){let e=n[n.length-1].node;throw this.handleError(t,e)}}}if(this.listeners.OnceExit)for(let[n,o]of this.listeners.OnceExit){this.result.lastPlugin=n;try{if("document"===e.type){let t=e.nodes.map((e=>o(e,this.helpers)));await Promise.all(t)}else await o(e,this.helpers)}catch(t){throw this.handleError(t)}}}return this.processed=!0,this.stringify()}runOnRoot(e){this.result.lastPlugin=e;try{if("object"==typeof e&&e.Once){if("document"===this.result.root.type){let t=this.result.root.nodes.map((t=>e.Once(t,this.helpers)));return ka(t[0])?Promise.all(t):t}return e.Once(this.result.root,this.helpers)}if("function"==typeof e)return e(this.result.root,this.result)}catch(t){throw this.handleError(t)}}stringify(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();let e=this.result.opts,t=da;e.syntax&&(t=e.syntax.stringify),e.stringifier&&(t=e.stringifier),t.stringify&&(t=t.stringify);let n=new ua(t,this.result.root,this.result.opts).generate();return this.result.css=n[0],this.result.map=n[1],this.result}sync(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(let e of this.plugins){if(ka(this.runOnRoot(e)))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){let e=this.result.root;for(;!e[la];)e[la]=!0,this.walkSync(e);if(this.listeners.OnceExit)if("document"===e.type)for(let t of e.nodes)this.visitSync(this.listeners.OnceExit,t);else this.visitSync(this.listeners.OnceExit,e)}return this.result}then(e,t){return this.async().then(e,t)}toString(){return this.css}visitSync(e,t){for(let[o,r]of e){let e;this.result.lastPlugin=o;try{e=r(t,this.helpers)}catch(n){throw this.handleError(n,t.proxyOf)}if("root"!==t.type&&"document"!==t.type&&!t.parent)return!0;if(ka(e))throw this.getAsyncError()}}visitTick(e){let t=e[e.length-1],{node:n,visitors:o}=t;if("root"!==n.type&&"document"!==n.type&&!n.parent)return void e.pop();if(o.length>0&&t.visitorIndex{e[la]||this.walkSync(e)}));else{let t=this.listeners[n];if(t&&this.visitSync(t,e.toProxy()))return}}warnings(){return this.sync().warnings()}get content(){return this.stringify().content}get css(){return this.stringify().css}get map(){return this.stringify().map}get messages(){return this.sync().messages}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){return this.sync().root}get[Symbol.toStringTag](){return"LazyResult"}};Oa.registerPostcss=e=>{Ia=e};var Ea=Oa;Oa.default=Oa,ga.registerLazyResult(Oa),ha.registerLazyResult(Oa);let Ta=_r,La=Jo,Aa=sa;const Ma=di;let Ra=class{constructor(e,t,n){let o;t=t.toString(),this.stringified=!1,this._processor=e,this._css=t,this._opts=n,this._map=void 0;let r=La;this.result=new Ma(this._processor,o,this._opts),this.result.css=t;let i=this;Object.defineProperty(this.result,"root",{get:()=>i.root});let a=new Ta(r,o,this._opts,t);if(a.isMap()){let[e,t]=a.generate();e&&(this.result.css=e),t&&(this.result.map=t)}else a.clearAnnotation(),this.result.css=a.css}async(){return this.error?Promise.reject(this.error):Promise.resolve(this.result)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}sync(){if(this.error)throw this.error;return this.result}then(e,t){return this.async().then(e,t)}toString(){return this._css}warnings(){return[]}get content(){return this.result.css}get css(){return this.result.css}get map(){return this.result.map}get messages(){return[]}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){if(this._root)return this._root;let e,t=Aa;try{e=t(this._css,this._opts)}catch(n){this.error=n}if(this.error)throw this.error;return this._root=e,e}get[Symbol.toStringTag](){return"NoWorkResult"}};var Pa=Ra;Ra.default=Ra;let Da=Pa,Na=Ea,ja=ai,Fa=zi,Ba=class{constructor(e=[]){this.version="8.4.38",this.plugins=this.normalize(e)}normalize(e){let t=[];for(let n of e)if(!0===n.postcss?n=n():n.postcss&&(n=n.postcss),"object"==typeof n&&Array.isArray(n.plugins))t=t.concat(n.plugins);else if("object"==typeof n&&n.postcssPlugin)t.push(n);else if("function"==typeof n)t.push(n);else{if("object"!=typeof n||!n.parse&&!n.stringify)throw new Error(n+" is not a PostCSS plugin")}return t}process(e,t={}){return this.plugins.length||t.parser||t.stringifier||t.syntax?new Na(this,e,t):new Da(this,e,t)}use(e){return this.plugins=this.plugins.concat(this.normalize([e])),this}};var _a=Ba;Ba.default=Ba,Fa.registerProcessor(Ba),ja.registerProcessor(Ba);let Ua=rr,Ha=hr,za=zr,qa=Fi,Wa=Tr,Ga=zi,Va=Zi;function Ja(e,t){if(Array.isArray(e))return e.map((e=>Ja(e)));let{inputs:n,...o}=e;if(n){t=[];for(let e of n){let n={...e,__proto__:Wa.prototype};n.map&&(n.map={...n.map,__proto__:Ha.prototype}),t.push(n)}}if(o.nodes&&(o.nodes=e.nodes.map((e=>Ja(e,t)))),o.source){let{inputId:e,...n}=o.source;o.source=n,null!=e&&(o.source.input=t[e])}if("root"===o.type)return new Ga(o);if("decl"===o.type)return new Ua(o);if("rule"===o.type)return new Va(o);if("comment"===o.type)return new za(o);if("atrule"===o.type)return new qa(o);throw new Error("Unknown node type: "+e.type)}var Za=Ja;Ja.default=Ja;let Ka=Uo,Ya=rr,Xa=Ea,$a=ti,Qa=_a,es=Jo,ts=Za,ns=ai,os=li,rs=zr,is=Fi,as=di,ss=Tr,ls=sa,cs=Wi,us=Zi,ds=zi,ps=tr;function hs(...e){return 1===e.length&&Array.isArray(e[0])&&(e=e[0]),new Qa(e)}hs.plugin=function(e,t){let n,o=!1;function r(...n){console&&console.warn&&!o&&(o=!0,console.warn(e+": postcss.plugin was deprecated. Migration guide:\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration"),process.env.LANG&&process.env.LANG.startsWith("cn")&&console.warn(e+": 里面 postcss.plugin 被弃用. 迁移指南:\nhttps://www.w3ctech.com/topic/2226"));let r=t(...n);return r.postcssPlugin=e,r.postcssVersion=(new Qa).version,r}return Object.defineProperty(r,"postcss",{get:()=>(n||(n=r()),n)}),r.process=function(e,t,n){return hs([r(n)]).process(e,t)},r},hs.stringify=es,hs.parse=ls,hs.fromJSON=ts,hs.list=cs,hs.comment=e=>new rs(e),hs.atRule=e=>new is(e),hs.decl=e=>new Ya(e),hs.rule=e=>new us(e),hs.root=e=>new ds(e),hs.document=e=>new ns(e),hs.CssSyntaxError=Ka,hs.Declaration=Ya,hs.Container=$a,hs.Processor=Qa,hs.Document=ns,hs.Comment=rs,hs.Warning=os,hs.AtRule=is,hs.Result=as,hs.Input=ss,hs.Rule=us,hs.Root=ds,hs.Node=ps,Xa.registerPostcss(hs);var fs=hs;hs.default=hs;const ms=Ao(fs);ms.stringify,ms.fromJSON,ms.plugin,ms.parse,ms.list,ms.document,ms.comment,ms.atRule,ms.rule,ms.decl,ms.root,ms.CssSyntaxError,ms.Declaration,ms.Container,ms.Processor,ms.Document,ms.Comment,ms.Warning,ms.AtRule,ms.Result,ms.Input,ms.Rule,ms.Root,ms.Node;var gs=Object.defineProperty,vs=(e,t,n)=>((e,t,n)=>t in e?gs(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,"symbol"!=typeof t?t+"":t,n);function ys(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function bs(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var n=function e(){return this instanceof e?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,o.get?o:{enumerable:!0,get:function(){return e[t]}})})),n}var ws={exports:{}},ks=String,xs=function(){return{isColorSupported:!1,reset:ks,bold:ks,dim:ks,italic:ks,underline:ks,inverse:ks,hidden:ks,strikethrough:ks,black:ks,red:ks,green:ks,yellow:ks,blue:ks,magenta:ks,cyan:ks,white:ks,gray:ks,bgBlack:ks,bgRed:ks,bgGreen:ks,bgYellow:ks,bgBlue:ks,bgMagenta:ks,bgCyan:ks,bgWhite:ks}};ws.exports=xs(),ws.exports.createColors=xs;var Ss=ws.exports;const Cs=bs(Object.freeze(Object.defineProperty({__proto__:null,default:{}},Symbol.toStringTag,{value:"Module"})));let Is=Ss,Os=Cs,Es=class e extends Error{constructor(t,n,o,r,i,a){super(t),this.name="CssSyntaxError",this.reason=t,i&&(this.file=i),r&&(this.source=r),a&&(this.plugin=a),void 0!==n&&void 0!==o&&("number"==typeof n?(this.line=n,this.column=o):(this.line=n.line,this.column=n.column,this.endLine=o.line,this.endColumn=o.column)),this.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(this,e)}setMessage(){this.message=this.plugin?this.plugin+": ":"",this.message+=this.file?this.file:"",void 0!==this.line&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason}showSourceCode(e){if(!this.source)return"";let t=this.source;null==e&&(e=Is.isColorSupported),Os&&e&&(t=Os(t));let n,o,r=t.split(/\r?\n/),i=Math.max(this.line-3,0),a=Math.min(this.line+2,r.length),s=String(a).length;if(e){let{bold:e,gray:t,red:r}=Is.createColors(!0);n=t=>e(r(t)),o=e=>t(e)}else n=o=e=>e;return r.slice(i,a).map(((e,t)=>{let r=i+1+t,a=" "+(" "+r).slice(-s)+" | ";if(r===this.line){let t=o(a.replace(/\d/g," "))+e.slice(0,this.column-1).replace(/[^\t]/g," ");return n(">")+o(a)+e+"\n "+t+n("^")}return" "+o(a)+e})).join("\n")}toString(){let e=this.showSourceCode();return e&&(e="\n\n"+e+"\n"),this.name+": "+this.message+e}};var Ts=Es;Es.default=Es;var Ls={};Ls.isClean=Symbol("isClean"),Ls.my=Symbol("my");const As={after:"\n",beforeClose:"\n",beforeComment:"\n",beforeDecl:"\n",beforeOpen:" ",beforeRule:"\n",colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:!1};let Ms=class{constructor(e){this.builder=e}atrule(e,t){let n="@"+e.name,o=e.params?this.rawValue(e,"params"):"";if(void 0!==e.raws.afterName?n+=e.raws.afterName:o&&(n+=" "),e.nodes)this.block(e,n+o);else{let r=(e.raws.between||"")+(t?";":"");this.builder(n+o+r,e)}}beforeAfter(e,t){let n;n="decl"===e.type?this.raw(e,null,"beforeDecl"):"comment"===e.type?this.raw(e,null,"beforeComment"):"before"===t?this.raw(e,null,"beforeRule"):this.raw(e,null,"beforeClose");let o=e.parent,r=0;for(;o&&"root"!==o.type;)r+=1,o=o.parent;if(n.includes("\n")){let t=this.raw(e,null,"indent");if(t.length)for(let e=0;e0&&"comment"===e.nodes[t].type;)t-=1;let n=this.raw(e,"semicolon");for(let o=0;o{if(o=e.raws[t],void 0!==o)return!1}))}var a;return void 0===o&&(o=As[n]),i.rawCache[n]=o,o}rawBeforeClose(e){let t;return e.walk((e=>{if(e.nodes&&e.nodes.length>0&&void 0!==e.raws.after)return t=e.raws.after,t.includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1})),t&&(t=t.replace(/\S/g,"")),t}rawBeforeComment(e,t){let n;return e.walkComments((e=>{if(void 0!==e.raws.before)return n=e.raws.before,n.includes("\n")&&(n=n.replace(/[^\n]+$/,"")),!1})),void 0===n?n=this.raw(t,null,"beforeDecl"):n&&(n=n.replace(/\S/g,"")),n}rawBeforeDecl(e,t){let n;return e.walkDecls((e=>{if(void 0!==e.raws.before)return n=e.raws.before,n.includes("\n")&&(n=n.replace(/[^\n]+$/,"")),!1})),void 0===n?n=this.raw(t,null,"beforeRule"):n&&(n=n.replace(/\S/g,"")),n}rawBeforeOpen(e){let t;return e.walk((e=>{if("decl"!==e.type&&(t=e.raws.between,void 0!==t))return!1})),t}rawBeforeRule(e){let t;return e.walk((n=>{if(n.nodes&&(n.parent!==e||e.first!==n)&&void 0!==n.raws.before)return t=n.raws.before,t.includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1})),t&&(t=t.replace(/\S/g,"")),t}rawColon(e){let t;return e.walkDecls((e=>{if(void 0!==e.raws.between)return t=e.raws.between.replace(/[^\s:]/g,""),!1})),t}rawEmptyBody(e){let t;return e.walk((e=>{if(e.nodes&&0===e.nodes.length&&(t=e.raws.after,void 0!==t))return!1})),t}rawIndent(e){if(e.raws.indent)return e.raws.indent;let t;return e.walk((n=>{let o=n.parent;if(o&&o!==e&&o.parent&&o.parent===e&&void 0!==n.raws.before){let e=n.raws.before.split("\n");return t=e[e.length-1],t=t.replace(/\S/g,""),!1}})),t}rawSemicolon(e){let t;return e.walk((e=>{if(e.nodes&&e.nodes.length&&"decl"===e.last.type&&(t=e.raws.semicolon,void 0!==t))return!1})),t}rawValue(e,t){let n=e[t],o=e.raws[t];return o&&o.value===n?o.raw:n}root(e){this.body(e),e.raws.after&&this.builder(e.raws.after)}rule(e){this.block(e,this.rawValue(e,"selector")),e.raws.ownSemicolon&&this.builder(e.raws.ownSemicolon,e,"end")}stringify(e,t){if(!this[e.type])throw new Error("Unknown AST node type "+e.type+". Maybe you need to change PostCSS stringifier.");this[e.type](e,t)}};var Rs=Ms;Ms.default=Ms;let Ps=Rs;function Ds(e,t){new Ps(t).stringify(e)}var Ns=Ds;Ds.default=Ds;let{isClean:js,my:Fs}=Ls,Bs=Ts,_s=Rs,Us=Ns;function Hs(e,t){let n=new e.constructor;for(let o in e){if(!Object.prototype.hasOwnProperty.call(e,o))continue;if("proxyCache"===o)continue;let r=e[o],i=typeof r;"parent"===o&&"object"===i?t&&(n[o]=t):"source"===o?n[o]=r:Array.isArray(r)?n[o]=r.map((e=>Hs(e,n))):("object"===i&&null!==r&&(r=Hs(r)),n[o]=r)}return n}let zs=class{constructor(e={}){this.raws={},this[js]=!1,this[Fs]=!0;for(let t in e)if("nodes"===t){this.nodes=[];for(let n of e[t])"function"==typeof n.clone?this.append(n.clone()):this.append(n)}else this[t]=e[t]}addToError(e){if(e.postcssNode=this,e.stack&&this.source&&/\n\s{4}at /.test(e.stack)){let t=this.source;e.stack=e.stack.replace(/\n\s{4}at /,`$&${t.input.from}:${t.start.line}:${t.start.column}$&`)}return e}after(e){return this.parent.insertAfter(this,e),this}assign(e={}){for(let t in e)this[t]=e[t];return this}before(e){return this.parent.insertBefore(this,e),this}cleanRaws(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between}clone(e={}){let t=Hs(this);for(let n in e)t[n]=e[n];return t}cloneAfter(e={}){let t=this.clone(e);return this.parent.insertAfter(this,t),t}cloneBefore(e={}){let t=this.clone(e);return this.parent.insertBefore(this,t),t}error(e,t={}){if(this.source){let{end:n,start:o}=this.rangeBy(t);return this.source.input.error(e,{column:o.column,line:o.line},{column:n.column,line:n.line},t)}return new Bs(e)}getProxyProcessor(){return{get:(e,t)=>"proxyOf"===t?e:"root"===t?()=>e.root().toProxy():e[t],set:(e,t,n)=>(e[t]===n||(e[t]=n,"prop"!==t&&"value"!==t&&"name"!==t&&"params"!==t&&"important"!==t&&"text"!==t||e.markDirty()),!0)}}markDirty(){if(this[js]){this[js]=!1;let e=this;for(;e=e.parent;)e[js]=!1}}next(){if(!this.parent)return;let e=this.parent.index(this);return this.parent.nodes[e+1]}positionBy(e,t){let n=this.source.start;if(e.index)n=this.positionInside(e.index,t);else if(e.word){let o=(t=this.toString()).indexOf(e.word);-1!==o&&(n=this.positionInside(o,t))}return n}positionInside(e,t){let n=t||this.toString(),o=this.source.start.column,r=this.source.start.line;for(let i=0;i"object"==typeof e&&e.toJSON?e.toJSON(null,t):e));else if("object"==typeof e&&e.toJSON)n[i]=e.toJSON(null,t);else if("source"===i){let o=t.get(e.input);null==o&&(o=r,t.set(e.input,r),r++),n[i]={end:e.end,inputId:o,start:e.start}}else n[i]=e}return o&&(n.inputs=[...t.keys()].map((e=>e.toJSON()))),n}toProxy(){return this.proxyCache||(this.proxyCache=new Proxy(this,this.getProxyProcessor())),this.proxyCache}toString(e=Us){e.stringify&&(e=e.stringify);let t="";return e(this,(e=>{t+=e})),t}warn(e,t,n){let o={node:this};for(let r in n)o[r]=n[r];return e.warn(t,o)}get proxyOf(){return this}};var qs=zs;zs.default=zs;let Ws=qs,Gs=class extends Ws{constructor(e){e&&void 0!==e.value&&"string"!=typeof e.value&&(e={...e,value:String(e.value)}),super(e),this.type="decl"}get variable(){return this.prop.startsWith("--")||"$"===this.prop[0]}};var Vs=Gs;Gs.default=Gs;var Js={nanoid:(e=21)=>{let t="",n=e;for(;n--;)t+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[64*Math.random()|0];return t},customAlphabet:(e,t=21)=>(n=t)=>{let o="",r=n;for(;r--;)o+=e[Math.random()*e.length|0];return o}};let{SourceMapConsumer:Zs,SourceMapGenerator:Ks}=Cs,{existsSync:Ys,readFileSync:Xs}=Cs,{dirname:$s,join:Qs}=Cs;let el=class{constructor(e,t){if(!1===t.map)return;this.loadAnnotation(e),this.inline=this.startWith(this.annotation,"data:");let n=t.map?t.map.prev:void 0,o=this.loadMap(t.from,n);!this.mapFile&&t.from&&(this.mapFile=t.from),this.mapFile&&(this.root=$s(this.mapFile)),o&&(this.text=o)}consumer(){return this.consumerCache||(this.consumerCache=new Zs(this.text)),this.consumerCache}decodeInline(e){if(/^data:application\/json;charset=utf-?8,/.test(e)||/^data:application\/json,/.test(e))return decodeURIComponent(e.substr(RegExp.lastMatch.length));if(/^data:application\/json;charset=utf-?8;base64,/.test(e)||/^data:application\/json;base64,/.test(e))return t=e.substr(RegExp.lastMatch.length),Buffer?Buffer.from(t,"base64").toString():window.atob(t);var t;let n=e.match(/data:application\/json;([^,]+),/)[1];throw new Error("Unsupported source map encoding "+n)}getAnnotationURL(e){return e.replace(/^\/\*\s*# sourceMappingURL=/,"").trim()}isMap(e){return"object"==typeof e&&("string"==typeof e.mappings||"string"==typeof e._mappings||Array.isArray(e.sections))}loadAnnotation(e){let t=e.match(/\/\*\s*# sourceMappingURL=/gm);if(!t)return;let n=e.lastIndexOf(t.pop()),o=e.indexOf("*/",n);n>-1&&o>-1&&(this.annotation=this.getAnnotationURL(e.substring(n,o)))}loadFile(e){if(this.root=$s(e),Ys(e))return this.mapFile=e,Xs(e,"utf-8").toString().trim()}loadMap(e,t){if(!1===t)return!1;if(t){if("string"==typeof t)return t;if("function"!=typeof t){if(t instanceof Zs)return Ks.fromSourceMap(t).toString();if(t instanceof Ks)return t.toString();if(this.isMap(t))return JSON.stringify(t);throw new Error("Unsupported previous source map format: "+t.toString())}{let n=t(e);if(n){let e=this.loadFile(n);if(!e)throw new Error("Unable to load previous source map: "+n.toString());return e}}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){let t=this.annotation;return e&&(t=Qs($s(e),t)),this.loadFile(t)}}}startWith(e,t){return!!e&&e.substr(0,t.length)===t}withContent(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)}};var tl=el;el.default=el;let{SourceMapConsumer:nl,SourceMapGenerator:ol}=Cs,{fileURLToPath:rl,pathToFileURL:il}=Cs,{isAbsolute:al,resolve:sl}=Cs,{nanoid:ll}=Js,cl=Cs,ul=Ts,dl=tl,pl=Symbol("fromOffsetCache"),hl=Boolean(nl&&ol),fl=Boolean(sl&&al),ml=class{constructor(e,t={}){if(null==e||"object"==typeof e&&!e.toString)throw new Error(`PostCSS received ${e} instead of CSS string`);if(this.css=e.toString(),"\ufeff"===this.css[0]||"￾"===this.css[0]?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,t.from&&(!fl||/^\w+:\/\//.test(t.from)||al(t.from)?this.file=t.from:this.file=sl(t.from)),fl&&hl){let e=new dl(this.css,t);if(e.text){this.map=e;let t=e.consumer().file;!this.file&&t&&(this.file=this.mapResolve(t))}}this.file||(this.id=""),this.map&&(this.map.file=this.from)}error(e,t,n,o={}){let r,i,a;if(t&&"object"==typeof t){let e=t,o=n;if("number"==typeof e.offset){let o=this.fromOffset(e.offset);t=o.line,n=o.col}else t=e.line,n=e.column;if("number"==typeof o.offset){let e=this.fromOffset(o.offset);i=e.line,a=e.col}else i=o.line,a=o.column}else if(!n){let e=this.fromOffset(t);t=e.line,n=e.col}let s=this.origin(t,n,i,a);return r=s?new ul(e,void 0===s.endLine?s.line:{column:s.column,line:s.line},void 0===s.endLine?s.column:{column:s.endColumn,line:s.endLine},s.source,s.file,o.plugin):new ul(e,void 0===i?t:{column:n,line:t},void 0===i?n:{column:a,line:i},this.css,this.file,o.plugin),r.input={column:n,endColumn:a,endLine:i,line:t,source:this.css},this.file&&(il&&(r.input.url=il(this.file).toString()),r.input.file=this.file),r}fromOffset(e){let t,n;if(this[pl])n=this[pl];else{let e=this.css.split("\n");n=new Array(e.length);let t=0;for(let o=0,r=e.length;o=t)o=n.length-1;else{let t,r=n.length-2;for(;o>1),e=n[t+1])){o=t;break}o=t+1}}return{col:e-n[o]+1,line:o+1}}mapResolve(e){return/^\w+:\/\//.test(e)?e:sl(this.map.consumer().sourceRoot||this.map.root||".",e)}origin(e,t,n,o){if(!this.map)return!1;let r,i,a=this.map.consumer(),s=a.originalPositionFor({column:t,line:e});if(!s.source)return!1;"number"==typeof n&&(r=a.originalPositionFor({column:o,line:n})),i=al(s.source)?il(s.source):new URL(s.source,this.map.consumer().sourceRoot||il(this.map.mapFile));let l={column:s.column,endColumn:r&&r.column,endLine:r&&r.line,line:s.line,url:i.toString()};if("file:"===i.protocol){if(!rl)throw new Error("file: protocol is not available in this PostCSS build");l.file=rl(i)}let c=a.sourceContentFor(s.source);return c&&(l.source=c),l}toJSON(){let e={};for(let t of["hasBOM","css","file","id"])null!=this[t]&&(e[t]=this[t]);return this.map&&(e.map={...this.map},e.map.consumerCache&&(e.map.consumerCache=void 0)),e}get from(){return this.file||this.id}};var gl=ml;ml.default=ml,cl&&cl.registerInput&&cl.registerInput(ml);let{SourceMapConsumer:vl,SourceMapGenerator:yl}=Cs,{dirname:bl,relative:wl,resolve:kl,sep:xl}=Cs,{pathToFileURL:Sl}=Cs,Cl=gl,Il=Boolean(vl&&yl),Ol=Boolean(bl&&kl&&wl&&xl);var El=class{constructor(e,t,n,o){this.stringify=e,this.mapOpts=n.map||{},this.root=t,this.opts=n,this.css=o,this.originalCSS=o,this.usesFileUrls=!this.mapOpts.from&&this.mapOpts.absolute,this.memoizedFileURLs=new Map,this.memoizedPaths=new Map,this.memoizedURLs=new Map}addAnnotation(){let e;e=this.isInline()?"data:application/json;base64,"+this.toBase64(this.map.toString()):"string"==typeof this.mapOpts.annotation?this.mapOpts.annotation:"function"==typeof this.mapOpts.annotation?this.mapOpts.annotation(this.opts.to,this.root):this.outputFile()+".map";let t="\n";this.css.includes("\r\n")&&(t="\r\n"),this.css+=t+"/*# sourceMappingURL="+e+" */"}applyPrevMaps(){for(let e of this.previous()){let t,n=this.toUrl(this.path(e.file)),o=e.root||bl(e.file);!1===this.mapOpts.sourcesContent?(t=new vl(e.text),t.sourcesContent&&(t.sourcesContent=null)):t=e.consumer(),this.map.applySourceMap(t,n,this.toUrl(this.path(o)))}}clearAnnotation(){if(!1!==this.mapOpts.annotation)if(this.root){let e;for(let t=this.root.nodes.length-1;t>=0;t--)e=this.root.nodes[t],"comment"===e.type&&0===e.text.indexOf("# sourceMappingURL=")&&this.root.removeChild(t)}else this.css&&(this.css=this.css.replace(/\n*?\/\*#[\S\s]*?\*\/$/gm,""))}generate(){if(this.clearAnnotation(),Ol&&Il&&this.isMap())return this.generateMap();{let e="";return this.stringify(this.root,(t=>{e+=t})),[e]}}generateMap(){if(this.root)this.generateString();else if(1===this.previous().length){let e=this.previous()[0].consumer();e.file=this.outputFile(),this.map=yl.fromSourceMap(e,{ignoreInvalidMapping:!0})}else this.map=new yl({file:this.outputFile(),ignoreInvalidMapping:!0}),this.map.addMapping({generated:{column:0,line:1},original:{column:0,line:1},source:this.opts.from?this.toUrl(this.path(this.opts.from)):""});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]}generateString(){this.css="",this.map=new yl({file:this.outputFile(),ignoreInvalidMapping:!0});let e,t,n=1,o=1,r="",i={generated:{column:0,line:0},original:{column:0,line:0},source:""};this.stringify(this.root,((a,s,l)=>{if(this.css+=a,s&&"end"!==l&&(i.generated.line=n,i.generated.column=o-1,s.source&&s.source.start?(i.source=this.sourcePath(s),i.original.line=s.source.start.line,i.original.column=s.source.start.column-1,this.map.addMapping(i)):(i.source=r,i.original.line=1,i.original.column=0,this.map.addMapping(i))),e=a.match(/\n/g),e?(n+=e.length,t=a.lastIndexOf("\n"),o=a.length-t):o+=a.length,s&&"start"!==l){let e=s.parent||{raws:{}};("decl"===s.type||"atrule"===s.type&&!s.nodes)&&s===e.last&&!e.raws.semicolon||(s.source&&s.source.end?(i.source=this.sourcePath(s),i.original.line=s.source.end.line,i.original.column=s.source.end.column-1,i.generated.line=n,i.generated.column=o-2,this.map.addMapping(i)):(i.source=r,i.original.line=1,i.original.column=0,i.generated.line=n,i.generated.column=o-1,this.map.addMapping(i)))}}))}isAnnotation(){return!!this.isInline()||(void 0!==this.mapOpts.annotation?this.mapOpts.annotation:!this.previous().length||this.previous().some((e=>e.annotation)))}isInline(){if(void 0!==this.mapOpts.inline)return this.mapOpts.inline;let e=this.mapOpts.annotation;return(void 0===e||!0===e)&&(!this.previous().length||this.previous().some((e=>e.inline)))}isMap(){return void 0!==this.opts.map?!!this.opts.map:this.previous().length>0}isSourcesContent(){return void 0!==this.mapOpts.sourcesContent?this.mapOpts.sourcesContent:!this.previous().length||this.previous().some((e=>e.withContent()))}outputFile(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"}path(e){if(this.mapOpts.absolute)return e;if(60===e.charCodeAt(0))return e;if(/^\w+:\/\//.test(e))return e;let t=this.memoizedPaths.get(e);if(t)return t;let n=this.opts.to?bl(this.opts.to):".";"string"==typeof this.mapOpts.annotation&&(n=bl(kl(n,this.mapOpts.annotation)));let o=wl(n,e);return this.memoizedPaths.set(e,o),o}previous(){if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk((e=>{if(e.source&&e.source.input.map){let t=e.source.input.map;this.previousMaps.includes(t)||this.previousMaps.push(t)}}));else{let e=new Cl(this.originalCSS,this.opts);e.map&&this.previousMaps.push(e.map)}return this.previousMaps}setSourcesContent(){let e={};if(this.root)this.root.walk((t=>{if(t.source){let n=t.source.input.from;if(n&&!e[n]){e[n]=!0;let o=this.usesFileUrls?this.toFileUrl(n):this.toUrl(this.path(n));this.map.setSourceContent(o,t.source.input.css)}}}));else if(this.css){let e=this.opts.from?this.toUrl(this.path(this.opts.from)):"";this.map.setSourceContent(e,this.css)}}sourcePath(e){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(e.source.input.from):this.toUrl(this.path(e.source.input.from))}toBase64(e){return Buffer?Buffer.from(e).toString("base64"):window.btoa(unescape(encodeURIComponent(e)))}toFileUrl(e){let t=this.memoizedFileURLs.get(e);if(t)return t;if(Sl){let t=Sl(e).toString();return this.memoizedFileURLs.set(e,t),t}throw new Error("`map.absolute` option is not available in this PostCSS build")}toUrl(e){let t=this.memoizedURLs.get(e);if(t)return t;"\\"===xl&&(e=e.replace(/\\/g,"/"));let n=encodeURI(e).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(e,n),n}};let Tl=qs,Ll=class extends Tl{constructor(e){super(e),this.type="comment"}};var Al=Ll;Ll.default=Ll;let Ml,Rl,Pl,Dl,{isClean:Nl,my:jl}=Ls,Fl=Vs,Bl=Al,_l=qs;function Ul(e){return e.map((e=>(e.nodes&&(e.nodes=Ul(e.nodes)),delete e.source,e)))}function Hl(e){if(e[Nl]=!1,e.proxyOf.nodes)for(let t of e.proxyOf.nodes)Hl(t)}let zl=class e extends _l{append(...e){for(let t of e){let e=this.normalize(t,this.last);for(let t of e)this.proxyOf.nodes.push(t)}return this.markDirty(),this}cleanRaws(e){if(super.cleanRaws(e),this.nodes)for(let t of this.nodes)t.cleanRaws(e)}each(e){if(!this.proxyOf.nodes)return;let t,n,o=this.getIterator();for(;this.indexes[o]"proxyOf"===t?e:e[t]?"each"===t||"string"==typeof t&&t.startsWith("walk")?(...n)=>e[t](...n.map((e=>"function"==typeof e?(t,n)=>e(t.toProxy(),n):e))):"every"===t||"some"===t?n=>e[t](((e,...t)=>n(e.toProxy(),...t))):"root"===t?()=>e.root().toProxy():"nodes"===t?e.nodes.map((e=>e.toProxy())):"first"===t||"last"===t?e[t].toProxy():e[t]:e[t],set:(e,t,n)=>(e[t]===n||(e[t]=n,"name"!==t&&"params"!==t&&"selector"!==t||e.markDirty()),!0)}}index(e){return"number"==typeof e?e:(e.proxyOf&&(e=e.proxyOf),this.proxyOf.nodes.indexOf(e))}insertAfter(e,t){let n,o=this.index(e),r=this.normalize(t,this.proxyOf.nodes[o]).reverse();o=this.index(e);for(let i of r)this.proxyOf.nodes.splice(o+1,0,i);for(let i in this.indexes)n=this.indexes[i],o(t[jl]||e.rebuild(t),(t=t.proxyOf).parent&&t.parent.removeChild(t),t[Nl]&&Hl(t),void 0===t.raws.before&&n&&void 0!==n.raws.before&&(t.raws.before=n.raws.before.replace(/\S/g,"")),t.parent=this.proxyOf,t)))}prepend(...e){e=e.reverse();for(let t of e){let e=this.normalize(t,this.first,"prepend").reverse();for(let t of e)this.proxyOf.nodes.unshift(t);for(let t in this.indexes)this.indexes[t]=this.indexes[t]+e.length}return this.markDirty(),this}push(e){return e.parent=this,this.proxyOf.nodes.push(e),this}removeAll(){for(let e of this.proxyOf.nodes)e.parent=void 0;return this.proxyOf.nodes=[],this.markDirty(),this}removeChild(e){let t;e=this.index(e),this.proxyOf.nodes[e].parent=void 0,this.proxyOf.nodes.splice(e,1);for(let n in this.indexes)t=this.indexes[n],t>=e&&(this.indexes[n]=t-1);return this.markDirty(),this}replaceValues(e,t,n){return n||(n=t,t={}),this.walkDecls((o=>{t.props&&!t.props.includes(o.prop)||t.fast&&!o.value.includes(t.fast)||(o.value=o.value.replace(e,n))})),this.markDirty(),this}some(e){return this.nodes.some(e)}walk(e){return this.each(((t,n)=>{let o;try{o=e(t,n)}catch(r){throw t.addToError(r)}return!1!==o&&t.walk&&(o=t.walk(e)),o}))}walkAtRules(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("atrule"===n.type&&e.test(n.name))return t(n,o)})):this.walk(((n,o)=>{if("atrule"===n.type&&n.name===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("atrule"===e.type)return t(e,n)})))}walkComments(e){return this.walk(((t,n)=>{if("comment"===t.type)return e(t,n)}))}walkDecls(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("decl"===n.type&&e.test(n.prop))return t(n,o)})):this.walk(((n,o)=>{if("decl"===n.type&&n.prop===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("decl"===e.type)return t(e,n)})))}walkRules(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("rule"===n.type&&e.test(n.selector))return t(n,o)})):this.walk(((n,o)=>{if("rule"===n.type&&n.selector===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("rule"===e.type)return t(e,n)})))}get first(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}get last(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}};zl.registerParse=e=>{Ml=e},zl.registerRule=e=>{Rl=e},zl.registerAtRule=e=>{Pl=e},zl.registerRoot=e=>{Dl=e};var ql=zl;zl.default=zl,zl.rebuild=e=>{"atrule"===e.type?Object.setPrototypeOf(e,Pl.prototype):"rule"===e.type?Object.setPrototypeOf(e,Rl.prototype):"decl"===e.type?Object.setPrototypeOf(e,Fl.prototype):"comment"===e.type?Object.setPrototypeOf(e,Bl.prototype):"root"===e.type&&Object.setPrototypeOf(e,Dl.prototype),e[jl]=!0,e.nodes&&e.nodes.forEach((e=>{zl.rebuild(e)}))};let Wl,Gl,Vl=ql,Jl=class extends Vl{constructor(e){super({type:"document",...e}),this.nodes||(this.nodes=[])}toResult(e={}){return new Wl(new Gl,this,e).stringify()}};Jl.registerLazyResult=e=>{Wl=e},Jl.registerProcessor=e=>{Gl=e};var Zl=Jl;Jl.default=Jl;let Kl=class{constructor(e,t={}){if(this.type="warning",this.text=e,t.node&&t.node.source){let e=t.node.rangeBy(t);this.line=e.start.line,this.column=e.start.column,this.endLine=e.end.line,this.endColumn=e.end.column}for(let n in t)this[n]=t[n]}toString(){return this.node?this.node.error(this.text,{index:this.index,plugin:this.plugin,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text}};var Yl=Kl;Kl.default=Kl;let Xl=Yl,$l=class{constructor(e,t,n){this.processor=e,this.messages=[],this.root=t,this.opts=n,this.css=void 0,this.map=void 0}toString(){return this.css}warn(e,t={}){t.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(t.plugin=this.lastPlugin.postcssPlugin);let n=new Xl(e,t);return this.messages.push(n),n}warnings(){return this.messages.filter((e=>"warning"===e.type))}get content(){return this.css}};var Ql=$l;$l.default=$l;const ec="'".charCodeAt(0),tc='"'.charCodeAt(0),nc="\\".charCodeAt(0),oc="/".charCodeAt(0),rc="\n".charCodeAt(0),ic=" ".charCodeAt(0),ac="\f".charCodeAt(0),sc="\t".charCodeAt(0),lc="\r".charCodeAt(0),cc="[".charCodeAt(0),uc="]".charCodeAt(0),dc="(".charCodeAt(0),pc=")".charCodeAt(0),hc="{".charCodeAt(0),fc="}".charCodeAt(0),mc=";".charCodeAt(0),gc="*".charCodeAt(0),vc=":".charCodeAt(0),yc="@".charCodeAt(0),bc=/[\t\n\f\r "#'()/;[\\\]{}]/g,wc=/[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g,kc=/.[\r\n"'(/\\]/,xc=/[\da-f]/i;let Sc=ql,Cc=class extends Sc{constructor(e){super(e),this.type="atrule"}append(...e){return this.proxyOf.nodes||(this.nodes=[]),super.append(...e)}prepend(...e){return this.proxyOf.nodes||(this.nodes=[]),super.prepend(...e)}};var Ic=Cc;Cc.default=Cc,Sc.registerAtRule(Cc);let Oc,Ec,Tc=ql,Lc=class extends Tc{constructor(e){super(e),this.type="root",this.nodes||(this.nodes=[])}normalize(e,t,n){let o=super.normalize(e);if(t)if("prepend"===n)this.nodes.length>1?t.raws.before=this.nodes[1].raws.before:delete t.raws.before;else if(this.first!==t)for(let r of o)r.raws.before=t.raws.before;return o}removeChild(e,t){let n=this.index(e);return!t&&0===n&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[n].raws.before),super.removeChild(e)}toResult(e={}){return new Oc(new Ec,this,e).stringify()}};Lc.registerLazyResult=e=>{Oc=e},Lc.registerProcessor=e=>{Ec=e};var Ac=Lc;Lc.default=Lc,Tc.registerRoot(Lc);let Mc={comma:e=>Mc.split(e,[","],!0),space:e=>Mc.split(e,[" ","\n","\t"]),split(e,t,n){let o=[],r="",i=!1,a=0,s=!1,l="",c=!1;for(let u of e)c?c=!1:"\\"===u?c=!0:s?u===l&&(s=!1):'"'===u||"'"===u?(s=!0,l=u):"("===u?a+=1:")"===u?a>0&&(a-=1):0===a&&t.includes(u)&&(i=!0),i?(""!==r&&o.push(r.trim()),r="",i=!1):r+=u;return(n||""!==r)&&o.push(r.trim()),o}};var Rc=Mc;Mc.default=Mc;let Pc=ql,Dc=Rc,Nc=class extends Pc{constructor(e){super(e),this.type="rule",this.nodes||(this.nodes=[])}get selectors(){return Dc.comma(this.selector)}set selectors(e){let t=this.selector?this.selector.match(/,\s*/):null,n=t?t[0]:","+this.raw("between","beforeOpen");this.selector=e.join(n)}};var jc=Nc;Nc.default=Nc,Pc.registerRule(Nc);let Fc=Vs,Bc=function(e,t={}){let n,o,r,i,a,s,l,c,u,d,p=e.css.valueOf(),h=t.ignoreErrors,f=p.length,m=0,g=[],v=[];function y(t){throw e.error("Unclosed "+t,m)}return{back:function(e){v.push(e)},endOfFile:function(){return 0===v.length&&m>=f},nextToken:function(e){if(v.length)return v.pop();if(m>=f)return;let t=!!e&&e.ignoreUnclosed;switch(n=p.charCodeAt(m),n){case rc:case ic:case sc:case lc:case ac:o=m;do{o+=1,n=p.charCodeAt(o)}while(n===ic||n===rc||n===sc||n===lc||n===ac);d=["space",p.slice(m,o)],m=o-1;break;case cc:case uc:case hc:case fc:case vc:case mc:case pc:{let e=String.fromCharCode(n);d=[e,e,m];break}case dc:if(c=g.length?g.pop()[1]:"",u=p.charCodeAt(m+1),"url"===c&&u!==ec&&u!==tc&&u!==ic&&u!==rc&&u!==sc&&u!==ac&&u!==lc){o=m;do{if(s=!1,o=p.indexOf(")",o+1),-1===o){if(h||t){o=m;break}y("bracket")}for(l=o;p.charCodeAt(l-1)===nc;)l-=1,s=!s}while(s);d=["brackets",p.slice(m,o+1),m,o],m=o}else o=p.indexOf(")",m+1),i=p.slice(m,o+1),-1===o||kc.test(i)?d=["(","(",m]:(d=["brackets",i,m,o],m=o);break;case ec:case tc:r=n===ec?"'":'"',o=m;do{if(s=!1,o=p.indexOf(r,o+1),-1===o){if(h||t){o=m+1;break}y("string")}for(l=o;p.charCodeAt(l-1)===nc;)l-=1,s=!s}while(s);d=["string",p.slice(m,o+1),m,o],m=o;break;case yc:bc.lastIndex=m+1,bc.test(p),o=0===bc.lastIndex?p.length-1:bc.lastIndex-2,d=["at-word",p.slice(m,o+1),m,o],m=o;break;case nc:for(o=m,a=!0;p.charCodeAt(o+1)===nc;)o+=1,a=!a;if(n=p.charCodeAt(o+1),a&&n!==oc&&n!==ic&&n!==rc&&n!==sc&&n!==lc&&n!==ac&&(o+=1,xc.test(p.charAt(o)))){for(;xc.test(p.charAt(o+1));)o+=1;p.charCodeAt(o+1)===ic&&(o+=1)}d=["word",p.slice(m,o+1),m,o],m=o;break;default:n===oc&&p.charCodeAt(m+1)===gc?(o=p.indexOf("*/",m+2)+1,0===o&&(h||t?o=p.length:y("comment")),d=["comment",p.slice(m,o+1),m,o],m=o):(wc.lastIndex=m+1,wc.test(p),o=0===wc.lastIndex?p.length-1:wc.lastIndex-2,d=["word",p.slice(m,o+1),m,o],g.push(d),m=o)}return m++,d},position:function(){return m}}},_c=Al,Uc=Ic,Hc=Ac,zc=jc;const qc={empty:!0,space:!0};var Wc=class{constructor(e){this.input=e,this.root=new Hc,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:e,start:{column:1,line:1,offset:0}}}atrule(e){let t,n,o,r=new Uc;r.name=e[1].slice(1),""===r.name&&this.unnamedAtrule(r,e),this.init(r,e[2]);let i=!1,a=!1,s=[],l=[];for(;!this.tokenizer.endOfFile();){if(t=(e=this.tokenizer.nextToken())[0],"("===t||"["===t?l.push("("===t?")":"]"):"{"===t&&l.length>0?l.push("}"):t===l[l.length-1]&&l.pop(),0===l.length){if(";"===t){r.source.end=this.getPosition(e[2]),r.source.end.offset++,this.semicolon=!0;break}if("{"===t){a=!0;break}if("}"===t){if(s.length>0){for(o=s.length-1,n=s[o];n&&"space"===n[0];)n=s[--o];n&&(r.source.end=this.getPosition(n[3]||n[2]),r.source.end.offset++)}this.end(e);break}s.push(e)}else s.push(e);if(this.tokenizer.endOfFile()){i=!0;break}}r.raws.between=this.spacesAndCommentsFromEnd(s),s.length?(r.raws.afterName=this.spacesAndCommentsFromStart(s),this.raw(r,"params",s),i&&(e=s[s.length-1],r.source.end=this.getPosition(e[3]||e[2]),r.source.end.offset++,this.spaces=r.raws.between,r.raws.between="")):(r.raws.afterName="",r.params=""),a&&(r.nodes=[],this.current=r)}checkMissedSemicolon(e){let t=this.colon(e);if(!1===t)return;let n,o=0;for(let r=t-1;r>=0&&(n=e[r],"space"===n[0]||(o+=1,2!==o));r--);throw this.input.error("Missed semicolon","word"===n[0]?n[3]+1:n[2])}colon(e){let t,n,o,r=0;for(let[i,a]of e.entries()){if(t=a,n=t[0],"("===n&&(r+=1),")"===n&&(r-=1),0===r&&":"===n){if(o){if("word"===o[0]&&"progid"===o[1])continue;return i}this.doubleColon(t)}o=t}return!1}comment(e){let t=new _c;this.init(t,e[2]),t.source.end=this.getPosition(e[3]||e[2]),t.source.end.offset++;let n=e[1].slice(2,-2);if(/^\s*$/.test(n))t.text="",t.raws.left=n,t.raws.right="";else{let e=n.match(/^(\s*)([^]*\S)(\s*)$/);t.text=e[2],t.raws.left=e[1],t.raws.right=e[3]}}createTokenizer(){this.tokenizer=Bc(this.input)}decl(e,t){let n=new Fc;this.init(n,e[0][2]);let o,r=e[e.length-1];for(";"===r[0]&&(this.semicolon=!0,e.pop()),n.source.end=this.getPosition(r[3]||r[2]||function(e){for(let t=e.length-1;t>=0;t--){let n=e[t],o=n[3]||n[2];if(o)return o}}(e)),n.source.end.offset++;"word"!==e[0][0];)1===e.length&&this.unknownWord(e),n.raws.before+=e.shift()[1];for(n.source.start=this.getPosition(e[0][2]),n.prop="";e.length;){let t=e[0][0];if(":"===t||"space"===t||"comment"===t)break;n.prop+=e.shift()[1]}for(n.raws.between="";e.length;){if(o=e.shift(),":"===o[0]){n.raws.between+=o[1];break}"word"===o[0]&&/\w/.test(o[1])&&this.unknownWord([o]),n.raws.between+=o[1]}"_"!==n.prop[0]&&"*"!==n.prop[0]||(n.raws.before+=n.prop[0],n.prop=n.prop.slice(1));let i,a=[];for(;e.length&&(i=e[0][0],"space"===i||"comment"===i);)a.push(e.shift());this.precheckMissedSemicolon(e);for(let s=e.length-1;s>=0;s--){if(o=e[s],"!important"===o[1].toLowerCase()){n.important=!0;let t=this.stringFrom(e,s);t=this.spacesFromEnd(e)+t," !important"!==t&&(n.raws.important=t);break}if("important"===o[1].toLowerCase()){let t=e.slice(0),o="";for(let e=s;e>0;e--){let n=t[e][0];if(0===o.trim().indexOf("!")&&"space"!==n)break;o=t.pop()[1]+o}0===o.trim().indexOf("!")&&(n.important=!0,n.raws.important=o,e=t)}if("space"!==o[0]&&"comment"!==o[0])break}e.some((e=>"space"!==e[0]&&"comment"!==e[0]))&&(n.raws.between+=a.map((e=>e[1])).join(""),a=[]),this.raw(n,"value",a.concat(e),t),n.value.includes(":")&&!t&&this.checkMissedSemicolon(e)}doubleColon(e){throw this.input.error("Double colon",{offset:e[2]},{offset:e[2]+e[1].length})}emptyRule(e){let t=new zc;this.init(t,e[2]),t.selector="",t.raws.between="",this.current=t}end(e){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(e[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(e)}endFile(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position())}freeSemicolon(e){if(this.spaces+=e[1],this.current.nodes){let e=this.current.nodes[this.current.nodes.length-1];e&&"rule"===e.type&&!e.raws.ownSemicolon&&(e.raws.ownSemicolon=this.spaces,this.spaces="")}}getPosition(e){let t=this.input.fromOffset(e);return{column:t.col,line:t.line,offset:e}}init(e,t){this.current.push(e),e.source={input:this.input,start:this.getPosition(t)},e.raws.before=this.spaces,this.spaces="","comment"!==e.type&&(this.semicolon=!1)}other(e){let t=!1,n=null,o=!1,r=null,i=[],a=e[1].startsWith("--"),s=[],l=e;for(;l;){if(n=l[0],s.push(l),"("===n||"["===n)r||(r=l),i.push("("===n?")":"]");else if(a&&o&&"{"===n)r||(r=l),i.push("}");else if(0===i.length){if(";"===n){if(o)return void this.decl(s,a);break}if("{"===n)return void this.rule(s);if("}"===n){this.tokenizer.back(s.pop()),t=!0;break}":"===n&&(o=!0)}else n===i[i.length-1]&&(i.pop(),0===i.length&&(r=null));l=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(t=!0),i.length>0&&this.unclosedBracket(r),t&&o){if(!a)for(;s.length&&(l=s[s.length-1][0],"space"===l||"comment"===l);)this.tokenizer.back(s.pop());this.decl(s,a)}else this.unknownWord(s)}parse(){let e;for(;!this.tokenizer.endOfFile();)switch(e=this.tokenizer.nextToken(),e[0]){case"space":this.spaces+=e[1];break;case";":this.freeSemicolon(e);break;case"}":this.end(e);break;case"comment":this.comment(e);break;case"at-word":this.atrule(e);break;case"{":this.emptyRule(e);break;default:this.other(e)}this.endFile()}precheckMissedSemicolon(){}raw(e,t,n,o){let r,i,a,s,l=n.length,c="",u=!0;for(let d=0;de+t[1]),"");e.raws[t]={raw:o,value:c}}e[t]=c}rule(e){e.pop();let t=new zc;this.init(t,e[0][2]),t.raws.between=this.spacesAndCommentsFromEnd(e),this.raw(t,"selector",e),this.current=t}spacesAndCommentsFromEnd(e){let t,n="";for(;e.length&&(t=e[e.length-1][0],"space"===t||"comment"===t);)n=e.pop()[1]+n;return n}spacesAndCommentsFromStart(e){let t,n="";for(;e.length&&(t=e[0][0],"space"===t||"comment"===t);)n+=e.shift()[1];return n}spacesFromEnd(e){let t,n="";for(;e.length&&(t=e[e.length-1][0],"space"===t);)n=e.pop()[1]+n;return n}stringFrom(e,t){let n="";for(let o=t;opu(e))),e}let hu={},fu=class e{constructor(t,n,o){let r;if(this.stringified=!1,this.processed=!1,"object"!=typeof n||null===n||"root"!==n.type&&"document"!==n.type)if(n instanceof e||n instanceof nu)r=pu(n.root),n.map&&(void 0===o.map&&(o.map={}),o.map.inline||(o.map.inline=!1),o.map.prev=n.map);else{let e=ou;o.syntax&&(e=o.syntax.parse),o.parser&&(e=o.parser),e.parse&&(e=e.parse);try{r=e(n,o)}catch(i){this.processed=!0,this.error=i}r&&!r[Xc]&&eu.rebuild(r)}else r=pu(n);this.result=new nu(t,r,o),this.helpers={...hu,postcss:hu,result:this.result},this.plugins=this.processor.plugins.map((e=>"object"==typeof e&&e.prepare?{...e,...e.prepare(this.result)}:e))}async(){return this.error?Promise.reject(this.error):this.processed?Promise.resolve(this.result):(this.processing||(this.processing=this.runAsync()),this.processing)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}getAsyncError(){throw new Error("Use process(css).then(cb) to work with async plugins")}handleError(e,t){let n=this.result.lastPlugin;try{t&&t.addToError(e),this.error=e,"CssSyntaxError"!==e.name||e.plugin?n.postcssVersion:(e.plugin=n.postcssPlugin,e.setMessage())}catch(o){console&&console.error&&console.error(o)}return e}prepareVisitors(){this.listeners={};let e=(e,t,n)=>{this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].push([e,n])};for(let t of this.plugins)if("object"==typeof t)for(let n in t){if(!au[n]&&/^[A-Z]/.test(n))throw new Error(`Unknown event ${n} in ${t.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`);if(!su[n])if("object"==typeof t[n])for(let o in t[n])e(t,"*"===o?n:n+"-"+o.toLowerCase(),t[n][o]);else"function"==typeof t[n]&&e(t,n,t[n])}this.hasListener=Object.keys(this.listeners).length>0}async runAsync(){this.plugin=0;for(let n=0;n0;){let e=this.visitTick(n);if(cu(e))try{await e}catch(t){let e=n[n.length-1].node;throw this.handleError(t,e)}}}if(this.listeners.OnceExit)for(let[n,o]of this.listeners.OnceExit){this.result.lastPlugin=n;try{if("document"===e.type){let t=e.nodes.map((e=>o(e,this.helpers)));await Promise.all(t)}else await o(e,this.helpers)}catch(t){throw this.handleError(t)}}}return this.processed=!0,this.stringify()}runOnRoot(e){this.result.lastPlugin=e;try{if("object"==typeof e&&e.Once){if("document"===this.result.root.type){let t=this.result.root.nodes.map((t=>e.Once(t,this.helpers)));return cu(t[0])?Promise.all(t):t}return e.Once(this.result.root,this.helpers)}if("function"==typeof e)return e(this.result.root,this.result)}catch(t){throw this.handleError(t)}}stringify(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();let e=this.result.opts,t=Qc;e.syntax&&(t=e.syntax.stringify),e.stringifier&&(t=e.stringifier),t.stringify&&(t=t.stringify);let n=new $c(t,this.result.root,this.result.opts).generate();return this.result.css=n[0],this.result.map=n[1],this.result}sync(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(let e of this.plugins){if(cu(this.runOnRoot(e)))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){let e=this.result.root;for(;!e[Yc];)e[Yc]=!0,this.walkSync(e);if(this.listeners.OnceExit)if("document"===e.type)for(let t of e.nodes)this.visitSync(this.listeners.OnceExit,t);else this.visitSync(this.listeners.OnceExit,e)}return this.result}then(e,t){return this.async().then(e,t)}toString(){return this.css}visitSync(e,t){for(let[o,r]of e){let e;this.result.lastPlugin=o;try{e=r(t,this.helpers)}catch(n){throw this.handleError(n,t.proxyOf)}if("root"!==t.type&&"document"!==t.type&&!t.parent)return!0;if(cu(e))throw this.getAsyncError()}}visitTick(e){let t=e[e.length-1],{node:n,visitors:o}=t;if("root"!==n.type&&"document"!==n.type&&!n.parent)return void e.pop();if(o.length>0&&t.visitorIndex{e[Yc]||this.walkSync(e)}));else{let t=this.listeners[n];if(t&&this.visitSync(t,e.toProxy()))return}}warnings(){return this.sync().warnings()}get content(){return this.stringify().content}get css(){return this.stringify().css}get map(){return this.stringify().map}get messages(){return this.sync().messages}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){return this.sync().root}get[Symbol.toStringTag](){return"LazyResult"}};fu.registerPostcss=e=>{hu=e};var mu=fu;fu.default=fu,ru.registerLazyResult(fu),tu.registerLazyResult(fu);let gu=El,vu=Ns,yu=Kc;const bu=Ql;let wu=class{constructor(e,t,n){let o;t=t.toString(),this.stringified=!1,this._processor=e,this._css=t,this._opts=n,this._map=void 0;let r=vu;this.result=new bu(this._processor,o,this._opts),this.result.css=t;let i=this;Object.defineProperty(this.result,"root",{get:()=>i.root});let a=new gu(r,o,this._opts,t);if(a.isMap()){let[e,t]=a.generate();e&&(this.result.css=e),t&&(this.result.map=t)}else a.clearAnnotation(),this.result.css=a.css}async(){return this.error?Promise.reject(this.error):Promise.resolve(this.result)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}sync(){if(this.error)throw this.error;return this.result}then(e,t){return this.async().then(e,t)}toString(){return this._css}warnings(){return[]}get content(){return this.result.css}get css(){return this.result.css}get map(){return this.result.map}get messages(){return[]}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){if(this._root)return this._root;let e,t=yu;try{e=t(this._css,this._opts)}catch(n){this.error=n}if(this.error)throw this.error;return this._root=e,e}get[Symbol.toStringTag](){return"NoWorkResult"}};var ku=wu;wu.default=wu;let xu=ku,Su=mu,Cu=Zl,Iu=Ac,Ou=class{constructor(e=[]){this.version="8.4.38",this.plugins=this.normalize(e)}normalize(e){let t=[];for(let n of e)if(!0===n.postcss?n=n():n.postcss&&(n=n.postcss),"object"==typeof n&&Array.isArray(n.plugins))t=t.concat(n.plugins);else if("object"==typeof n&&n.postcssPlugin)t.push(n);else if("function"==typeof n)t.push(n);else{if("object"!=typeof n||!n.parse&&!n.stringify)throw new Error(n+" is not a PostCSS plugin")}return t}process(e,t={}){return this.plugins.length||t.parser||t.stringifier||t.syntax?new Su(this,e,t):new xu(this,e,t)}use(e){return this.plugins=this.plugins.concat(this.normalize([e])),this}};var Eu=Ou;Ou.default=Ou,Iu.registerProcessor(Ou),Cu.registerProcessor(Ou);let Tu=Vs,Lu=tl,Au=Al,Mu=Ic,Ru=gl,Pu=Ac,Du=jc;function Nu(e,t){if(Array.isArray(e))return e.map((e=>Nu(e)));let{inputs:n,...o}=e;if(n){t=[];for(let e of n){let n={...e,__proto__:Ru.prototype};n.map&&(n.map={...n.map,__proto__:Lu.prototype}),t.push(n)}}if(o.nodes&&(o.nodes=e.nodes.map((e=>Nu(e,t)))),o.source){let{inputId:e,...n}=o.source;o.source=n,null!=e&&(o.source.input=t[e])}if("root"===o.type)return new Pu(o);if("decl"===o.type)return new Tu(o);if("rule"===o.type)return new Du(o);if("comment"===o.type)return new Au(o);if("atrule"===o.type)return new Mu(o);throw new Error("Unknown node type: "+e.type)}var ju=Nu;Nu.default=Nu;let Fu=Ts,Bu=Vs,_u=mu,Uu=ql,Hu=Eu,zu=Ns,qu=ju,Wu=Zl,Gu=Yl,Vu=Al,Ju=Ic,Zu=Ql,Ku=gl,Yu=Kc,Xu=Rc,$u=jc,Qu=Ac,ed=qs;function td(...e){return 1===e.length&&Array.isArray(e[0])&&(e=e[0]),new Hu(e)}td.plugin=function(e,t){let n,o=!1;function r(...n){console&&console.warn&&!o&&(o=!0,console.warn(e+": postcss.plugin was deprecated. Migration guide:\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration"),process.env.LANG&&process.env.LANG.startsWith("cn")&&console.warn(e+": 里面 postcss.plugin 被弃用. 迁移指南:\nhttps://www.w3ctech.com/topic/2226"));let r=t(...n);return r.postcssPlugin=e,r.postcssVersion=(new Hu).version,r}return Object.defineProperty(r,"postcss",{get:()=>(n||(n=r()),n)}),r.process=function(e,t,n){return td([r(n)]).process(e,t)},r},td.stringify=zu,td.parse=Yu,td.fromJSON=qu,td.list=Xu,td.comment=e=>new Vu(e),td.atRule=e=>new Ju(e),td.decl=e=>new Bu(e),td.rule=e=>new $u(e),td.root=e=>new Qu(e),td.document=e=>new Wu(e),td.CssSyntaxError=Fu,td.Declaration=Bu,td.Container=Uu,td.Processor=Hu,td.Document=Wu,td.Comment=Vu,td.Warning=Gu,td.AtRule=Ju,td.Result=Zu,td.Input=Ku,td.Rule=$u,td.Root=Qu,td.Node=ed,_u.registerPostcss(td);var nd=td;td.default=td;const od=ys(nd);od.stringify,od.fromJSON,od.plugin,od.parse,od.list,od.document,od.comment,od.atRule,od.rule,od.decl,od.root,od.CssSyntaxError,od.Declaration,od.Container,od.Processor,od.Document,od.Comment,od.Warning,od.AtRule,od.Result,od.Input,od.Rule,od.Root,od.Node;class rd{constructor(...e){vs(this,"parentElement",null),vs(this,"parentNode",null),vs(this,"ownerDocument"),vs(this,"firstChild",null),vs(this,"lastChild",null),vs(this,"previousSibling",null),vs(this,"nextSibling",null),vs(this,"ELEMENT_NODE",1),vs(this,"TEXT_NODE",3),vs(this,"nodeType"),vs(this,"nodeName"),vs(this,"RRNodeType")}get childNodes(){const e=[];let t=this.firstChild;for(;t;)e.push(t),t=t.nextSibling;return e}contains(e){if(!(e instanceof rd))return!1;if(e.ownerDocument!==this.ownerDocument)return!1;if(e===this)return!0;for(;e.parentNode;){if(e.parentNode===this)return!0;e=e.parentNode}return!1}appendChild(e){throw new Error("RRDomException: Failed to execute 'appendChild' on 'RRNode': This RRNode type does not support this method.")}insertBefore(e,t){throw new Error("RRDomException: Failed to execute 'insertBefore' on 'RRNode': This RRNode type does not support this method.")}removeChild(e){throw new Error("RRDomException: Failed to execute 'removeChild' on 'RRNode': This RRNode type does not support this method.")}toString(){return"RRNode"}}const id={Node:["childNodes","parentNode","parentElement","textContent"],ShadowRoot:["host","styleSheets"],Element:["shadowRoot","querySelector","querySelectorAll"],MutationObserver:[]},ad={Node:["contains","getRootNode"],ShadowRoot:["getSelection"],Element:[],MutationObserver:["constructor"]},sd={},ld=()=>!!globalThis.Zone;function cd(e){if(sd[e])return sd[e];const t=globalThis[e],n=t.prototype,o=e in id?id[e]:void 0,r=Boolean(o&&o.every((e=>{var t,o;return Boolean(null==(o=null==(t=Object.getOwnPropertyDescriptor(n,e))?void 0:t.get)?void 0:o.toString().includes("[native code]"))}))),i=e in ad?ad[e]:void 0,a=Boolean(i&&i.every((e=>{var t;return"function"==typeof n[e]&&(null==(t=n[e])?void 0:t.toString().includes("[native code]"))})));if(r&&a&&!ld())return sd[e]=t.prototype,t.prototype;try{const o=document.createElement("iframe");document.body.appendChild(o);const r=o.contentWindow;if(!r)return t.prototype;const i=r[e].prototype;return document.body.removeChild(o),i?sd[e]=i:n}catch{return n}}const ud={};function dd(e,t,n){var o;const r=`${e}.${String(n)}`;if(ud[r])return ud[r].call(t);const i=cd(e),a=null==(o=Object.getOwnPropertyDescriptor(i,n))?void 0:o.get;return a?(ud[r]=a,a.call(t)):t[n]}const pd={};function hd(e,t,n){const o=`${e}.${String(n)}`;if(pd[o])return pd[o].bind(t);const r=cd(e)[n];return"function"!=typeof r?t[n]:(pd[o]=r,r.bind(t))}function fd(){return cd("MutationObserver").constructor}const md={childNodes:function(e){return dd("Node",e,"childNodes")},parentNode:function(e){return dd("Node",e,"parentNode")},parentElement:function(e){return dd("Node",e,"parentElement")},textContent:function(e){return dd("Node",e,"textContent")},contains:function(e,t){return hd("Node",e,"contains")(t)},getRootNode:function(e){return hd("Node",e,"getRootNode")()},host:function(e){return e&&"host"in e?dd("ShadowRoot",e,"host"):null},styleSheets:function(e){return e.styleSheets},shadowRoot:function(e){return e&&"shadowRoot"in e?dd("Element",e,"shadowRoot"):null},querySelector:function(e,t){return dd("Element",e,"querySelector")(t)},querySelectorAll:function(e,t){return dd("Element",e,"querySelectorAll")(t)},mutationObserver:fd};function gd(e,t,n=document){const o={capture:!0,passive:!0};return n.addEventListener(e,t,o),()=>n.removeEventListener(e,t,o)}const vd="Please stop import mirror directly. Instead of that,\r\nnow you can use replayer.getMirror() to access the mirror instance of a replayer,\r\nor you can use record.mirror to access the mirror instance during recording.";let yd={map:{},getId:()=>(console.error(vd),-1),getNode:()=>(console.error(vd),null),removeNodeFromMap(){console.error(vd)},has:()=>(console.error(vd),!1),reset(){console.error(vd)}};function bd(e,t,n={}){let o=null,r=0;return function(...i){const a=Date.now();r||!1!==n.leading||(r=a);const s=t-(a-r),l=this;s<=0||s>t?(o&&(clearTimeout(o),o=null),r=a,e.apply(l,i)):o||!1===n.trailing||(o=setTimeout((()=>{r=!1===n.leading?0:Date.now(),o=null,e.apply(l,i)}),s))}}function wd(e,t,n,o,r=window){const i=r.Object.getOwnPropertyDescriptor(e,t);return r.Object.defineProperty(e,t,o?n:{set(e){setTimeout((()=>{n.set.call(this,e)}),0),i&&i.set&&i.set.call(this,e)}}),()=>wd(e,t,i||{},!0)}function kd(e,t,n){try{if(!(t in e))return()=>{};const o=e[t],r=n(o);return"function"==typeof r&&(r.prototype=r.prototype||{},Object.defineProperties(r,{__rrweb_original__:{enumerable:!1,value:o}})),e[t]=r,()=>{e[t]=o}}catch{return()=>{}}}"undefined"!=typeof window&&window.Proxy&&window.Reflect&&(yd=new Proxy(yd,{get:(e,t,n)=>("map"===t&&console.error(vd),Reflect.get(e,t,n))}));let xd=Date.now;function Sd(e){var t,n,o,r;const i=e.document;return{left:i.scrollingElement?i.scrollingElement.scrollLeft:void 0!==e.pageXOffset?e.pageXOffset:i.documentElement.scrollLeft||(null==i?void 0:i.body)&&(null==(t=md.parentElement(i.body))?void 0:t.scrollLeft)||(null==(n=null==i?void 0:i.body)?void 0:n.scrollLeft)||0,top:i.scrollingElement?i.scrollingElement.scrollTop:void 0!==e.pageYOffset?e.pageYOffset:(null==i?void 0:i.documentElement.scrollTop)||(null==i?void 0:i.body)&&(null==(o=md.parentElement(i.body))?void 0:o.scrollTop)||(null==(r=null==i?void 0:i.body)?void 0:r.scrollTop)||0}}function Cd(){return window.innerHeight||document.documentElement&&document.documentElement.clientHeight||document.body&&document.body.clientHeight}function Id(){return window.innerWidth||document.documentElement&&document.documentElement.clientWidth||document.body&&document.body.clientWidth}function Od(e){if(!e)return null;return e.nodeType===e.ELEMENT_NODE?e:md.parentElement(e)}function Ed(e,t,n,o){if(!e)return!1;const r=Od(e);if(!r)return!1;try{if("string"==typeof t){if(r.classList.contains(t))return!0;if(o&&null!==r.closest("."+t))return!0}else if(Io(r,t,o))return!0}catch(i){}if(n){if(r.matches(n))return!0;if(o&&null!==r.closest(n))return!0}return!1}function Td(e,t,n){return!("TITLE"!==e.tagName||!n.headTitleMutations)||t.getId(e)===ho}function Ld(e,t){if(Jn(e))return!1;const n=t.getId(e);if(!t.has(n))return!0;const o=md.parentNode(e);return(!o||o.nodeType!==e.DOCUMENT_NODE)&&(!o||Ld(o,t))}function Ad(e){return Boolean(e.changedTouches)}function Md(e,t){return Boolean("IFRAME"===e.nodeName&&t.getMeta(e))}function Rd(e,t){return Boolean("LINK"===e.nodeName&&e.nodeType===e.ELEMENT_NODE&&e.getAttribute&&"stylesheet"===e.getAttribute("rel")&&t.getMeta(e))}function Pd(e){return!!e&&(e instanceof rd&&"shadowRoot"in e?Boolean(e.shadowRoot):Boolean(md.shadowRoot(e)))}/[1-9][0-9]{12}/.test(Date.now().toString())||(xd=()=>(new Date).getTime());class Dd{constructor(){Rn(this,"id",1),Rn(this,"styleIDMap",new WeakMap),Rn(this,"idStyleMap",new Map)}getId(e){return this.styleIDMap.get(e)??-1}has(e){return this.styleIDMap.has(e)}add(e,t){if(this.has(e))return this.getId(e);let n;return n=void 0===t?this.id++:t,this.styleIDMap.set(e,n),this.idStyleMap.set(n,e),n}getStyle(e){return this.idStyleMap.get(e)||null}reset(){this.styleIDMap=new WeakMap,this.idStyleMap=new Map,this.id=1}generateId(){return this.id++}}function Nd(e){var t;let n=null;return"getRootNode"in e&&(null==(t=md.getRootNode(e))?void 0:t.nodeType)===Node.DOCUMENT_FRAGMENT_NODE&&md.host(md.getRootNode(e))&&(n=md.host(md.getRootNode(e))),n}function jd(e){const t=e.ownerDocument;if(!t)return!1;const n=function(e){let t,n=e;for(;t=Nd(n);)n=t;return n}(e);return md.contains(t,n)}function Fd(e){const t=e.ownerDocument;return!!t&&(md.contains(t,e)||jd(e))}var Bd=(e=>(e[e.DomContentLoaded=0]="DomContentLoaded",e[e.Load=1]="Load",e[e.FullSnapshot=2]="FullSnapshot",e[e.IncrementalSnapshot=3]="IncrementalSnapshot",e[e.Meta=4]="Meta",e[e.Custom=5]="Custom",e[e.Plugin=6]="Plugin",e))(Bd||{}),_d=(e=>(e[e.Mutation=0]="Mutation",e[e.MouseMove=1]="MouseMove",e[e.MouseInteraction=2]="MouseInteraction",e[e.Scroll=3]="Scroll",e[e.ViewportResize=4]="ViewportResize",e[e.Input=5]="Input",e[e.TouchMove=6]="TouchMove",e[e.MediaInteraction=7]="MediaInteraction",e[e.StyleSheetRule=8]="StyleSheetRule",e[e.CanvasMutation=9]="CanvasMutation",e[e.Font=10]="Font",e[e.Log=11]="Log",e[e.Drag=12]="Drag",e[e.StyleDeclaration=13]="StyleDeclaration",e[e.Selection=14]="Selection",e[e.AdoptedStyleSheet=15]="AdoptedStyleSheet",e[e.CustomElement=16]="CustomElement",e))(_d||{}),Ud=(e=>(e[e.MouseUp=0]="MouseUp",e[e.MouseDown=1]="MouseDown",e[e.Click=2]="Click",e[e.ContextMenu=3]="ContextMenu",e[e.DblClick=4]="DblClick",e[e.Focus=5]="Focus",e[e.Blur=6]="Blur",e[e.TouchStart=7]="TouchStart",e[e.TouchMove_Departed=8]="TouchMove_Departed",e[e.TouchEnd=9]="TouchEnd",e[e.TouchCancel=10]="TouchCancel",e))(Ud||{}),Hd=(e=>(e[e.Mouse=0]="Mouse",e[e.Pen=1]="Pen",e[e.Touch=2]="Touch",e))(Hd||{}),zd=(e=>(e[e["2D"]=0]="2D",e[e.WebGL=1]="WebGL",e[e.WebGL2=2]="WebGL2",e))(zd||{}),qd=(e=>(e[e.Play=0]="Play",e[e.Pause=1]="Pause",e[e.Seeked=2]="Seeked",e[e.VolumeChange=3]="VolumeChange",e[e.RateChange=4]="RateChange",e))(qd||{}),Wd=(e=>(e[e.Document=0]="Document",e[e.DocumentType=1]="DocumentType",e[e.Element=2]="Element",e[e.Text=3]="Text",e[e.CDATA=4]="CDATA",e[e.Comment=5]="Comment",e))(Wd||{});function Gd(e){return"__ln"in e}class Vd{constructor(){Rn(this,"length",0),Rn(this,"head",null),Rn(this,"tail",null)}get(e){if(e>=this.length)throw new Error("Position outside of list range");let t=this.head;for(let n=0;n`${e}@${t}`;class Zd{constructor(){Rn(this,"frozen",!1),Rn(this,"locked",!1),Rn(this,"texts",[]),Rn(this,"attributes",[]),Rn(this,"attributeMap",new WeakMap),Rn(this,"removes",[]),Rn(this,"mapRemoves",[]),Rn(this,"movedMap",{}),Rn(this,"addedSet",new Set),Rn(this,"movedSet",new Set),Rn(this,"droppedSet",new Set),Rn(this,"removesSubTreeCache",new Set),Rn(this,"mutationCb"),Rn(this,"blockClass"),Rn(this,"blockSelector"),Rn(this,"maskTextClass"),Rn(this,"maskTextSelector"),Rn(this,"inlineStylesheet"),Rn(this,"maskInputOptions"),Rn(this,"maskTextFn"),Rn(this,"maskInputFn"),Rn(this,"keepIframeSrcFn"),Rn(this,"recordCanvas"),Rn(this,"inlineImages"),Rn(this,"slimDOMOptions"),Rn(this,"dataURLOptions"),Rn(this,"doc"),Rn(this,"mirror"),Rn(this,"iframeManager"),Rn(this,"stylesheetManager"),Rn(this,"shadowDomManager"),Rn(this,"canvasManager"),Rn(this,"processedNodeManager"),Rn(this,"unattachedDoc"),Rn(this,"processMutations",(e=>{e.forEach(this.processMutation),this.emit()})),Rn(this,"emit",(()=>{if(this.frozen||this.locked)return;const e=[],t=new Set,n=new Vd,o=e=>{let t=e,n=ho;for(;n===ho;)t=t&&t.nextSibling,n=t&&this.mirror.getId(t);return n},r=r=>{const i=md.parentNode(r);if(!i||!Fd(r))return;let a=!1;if(r.nodeType===Node.TEXT_NODE){const e=i.tagName;if("TEXTAREA"===e)return;"STYLE"===e&&this.addedSet.has(i)&&(a=!0)}const s=Jn(i)?this.mirror.getId(Nd(r)):this.mirror.getId(i),l=o(r);if(-1===s||-1===l)return n.addNode(r);const c=Lo(r,{doc:this.doc,mirror:this.mirror,blockClass:this.blockClass,blockSelector:this.blockSelector,maskTextClass:this.maskTextClass,maskTextSelector:this.maskTextSelector,skipChild:!0,newlyAddedElement:!0,inlineStylesheet:this.inlineStylesheet,maskInputOptions:this.maskInputOptions,maskTextFn:this.maskTextFn,maskInputFn:this.maskInputFn,slimDOMOptions:this.slimDOMOptions,dataURLOptions:this.dataURLOptions,recordCanvas:this.recordCanvas,inlineImages:this.inlineImages,onSerialize:e=>{Md(e,this.mirror)&&this.iframeManager.addIframe(e),Rd(e,this.mirror)&&this.stylesheetManager.trackLinkElement(e),Pd(r)&&this.shadowDomManager.addShadowRoot(md.shadowRoot(r),this.doc)},onIframeLoad:(e,t)=>{this.iframeManager.attachIframe(e,t),this.shadowDomManager.observeAttachShadow(e)},onStylesheetLoad:(e,t)=>{this.stylesheetManager.attachLinkElement(e,t)},cssCaptured:a});c&&(e.push({parentId:s,nextId:l,node:c}),t.add(c.id))};for(;this.mapRemoves.length;)this.mirror.removeNodeFromMap(this.mapRemoves.shift());for(const s of this.movedSet)Yd(this.removesSubTreeCache,s,this.mirror)&&!this.movedSet.has(md.parentNode(s))||r(s);for(const s of this.addedSet)Xd(this.droppedSet,s)||Yd(this.removesSubTreeCache,s,this.mirror)?Xd(this.movedSet,s)?r(s):this.droppedSet.add(s):r(s);let i=null;for(;n.length;){let e=null;if(i){const t=this.mirror.getId(md.parentNode(i.value)),n=o(i.value);-1!==t&&-1!==n&&(e=i)}if(!e){let t=n.tail;for(;t;){const n=t;if(t=t.previous,n){const t=this.mirror.getId(md.parentNode(n.value));if(-1===o(n.value))continue;if(-1!==t){e=n;break}{const t=n.value,o=md.parentNode(t);if(o&&o.nodeType===Node.DOCUMENT_FRAGMENT_NODE){const t=md.host(o);if(-1!==this.mirror.getId(t)){e=n;break}}}}}}if(!e){for(;n.head;)n.removeNode(n.head.value);break}i=e.previous,n.removeNode(e.value),r(e.value)}const a={texts:this.texts.map((e=>{const t=e.node,n=md.parentNode(t);return n&&"TEXTAREA"===n.tagName&&this.genTextAreaValueMutation(n),{id:this.mirror.getId(t),value:e.value}})).filter((e=>!t.has(e.id))).filter((e=>this.mirror.has(e.id))),attributes:this.attributes.map((e=>{const{attributes:t}=e;if("string"==typeof t.style){const n=JSON.stringify(e.styleDiff),o=JSON.stringify(e._unchangedStyles);n.length!t.has(e.id))).filter((e=>this.mirror.has(e.id))),removes:this.removes,adds:e};(a.texts.length||a.attributes.length||a.removes.length||a.adds.length)&&(this.texts=[],this.attributes=[],this.attributeMap=new WeakMap,this.removes=[],this.addedSet=new Set,this.movedSet=new Set,this.droppedSet=new Set,this.removesSubTreeCache=new Set,this.movedMap={},this.mutationCb(a))})),Rn(this,"genTextAreaValueMutation",(e=>{let t=this.attributeMap.get(e);t||(t={node:e,attributes:{},styleDiff:{},_unchangedStyles:{}},this.attributes.push(t),this.attributeMap.set(e,t)),t.attributes.value=Array.from(md.childNodes(e),(e=>md.textContent(e)||"")).join("")})),Rn(this,"processMutation",(e=>{if(!Td(e.target,this.mirror,this.slimDOMOptions))switch(e.type){case"characterData":{const t=md.textContent(e.target);Ed(e.target,this.blockClass,this.blockSelector,!1)||t===e.oldValue||this.texts.push({value:Oo(e.target,this.maskTextClass,this.maskTextSelector,!0)&&t?this.maskTextFn?this.maskTextFn(t,Od(e.target)):t.replace(/[\S]/g,"*"):t,node:e.target});break}case"attributes":{const n=e.target;let o=e.attributeName,r=e.target.getAttribute(o);if("value"===o){const e=to(n);r=$n({element:n,maskInputOptions:this.maskInputOptions,tagName:n.tagName,type:e,value:r,maskInputFn:this.maskInputFn})}if(Ed(e.target,this.blockClass,this.blockSelector,!1)||r===e.oldValue)return;let i=this.attributeMap.get(e.target);if("IFRAME"===n.tagName&&"src"===o&&!this.keepIframeSrcFn(r)){if(n.contentDocument)return;o="rr_src"}if(i||(i={node:e.target,attributes:{},styleDiff:{},_unchangedStyles:{}},this.attributes.push(i),this.attributeMap.set(e.target,i)),"type"===o&&"INPUT"===n.tagName&&"password"===(e.oldValue||"").toLowerCase()&&n.setAttribute("data-rr-is-password","true"),!Co(n.tagName,o))if(i.attributes[o]=So(this.doc,Qn(n.tagName),Qn(o),r),"style"===o){if(!this.unattachedDoc)try{this.unattachedDoc=document.implementation.createHTMLDocument()}catch(t){this.unattachedDoc=this.doc}const o=this.unattachedDoc.createElement("span");e.oldValue&&o.setAttribute("style",e.oldValue);for(const e of Array.from(n.style)){const t=n.style.getPropertyValue(e),r=n.style.getPropertyPriority(e);t!==o.style.getPropertyValue(e)||r!==o.style.getPropertyPriority(e)?i.styleDiff[e]=""===r?t:[t,r]:i._unchangedStyles[e]=[t,r]}for(const e of Array.from(o.style))""===n.style.getPropertyValue(e)&&(i.styleDiff[e]=!1)}else"open"===o&&"DIALOG"===n.tagName&&(n.matches("dialog:modal")?i.attributes.rr_open_mode="modal":i.attributes.rr_open_mode="non-modal");break}case"childList":if(Ed(e.target,this.blockClass,this.blockSelector,!0))return;if("TEXTAREA"===e.target.tagName)return void this.genTextAreaValueMutation(e.target);e.addedNodes.forEach((t=>this.genAdds(t,e.target))),e.removedNodes.forEach((t=>{const n=this.mirror.getId(t),o=Jn(e.target)?this.mirror.getId(md.host(e.target)):this.mirror.getId(e.target);Ed(e.target,this.blockClass,this.blockSelector,!1)||Td(t,this.mirror,this.slimDOMOptions)||!function(e,t){return-1!==t.getId(e)}(t,this.mirror)||(this.addedSet.has(t)?(Kd(this.addedSet,t),this.droppedSet.add(t)):this.addedSet.has(e.target)&&-1===n||Ld(e.target,this.mirror)||(this.movedSet.has(t)&&this.movedMap[Jd(n,o)]?Kd(this.movedSet,t):(this.removes.push({parentId:o,id:n,isShadow:!(!Jn(e.target)||!Zn(e.target))||void 0}),function(e,t){const n=[e];for(;n.length;){const e=n.pop();t.has(e)||(t.add(e),md.childNodes(e).forEach((e=>n.push(e))))}}(t,this.removesSubTreeCache))),this.mapRemoves.push(t))}))}})),Rn(this,"genAdds",((e,t)=>{if(!this.processedNodeManager.inOtherBuffer(e,this)&&!this.addedSet.has(e)&&!this.movedSet.has(e)){if(this.mirror.hasNode(e)){if(Td(e,this.mirror,this.slimDOMOptions))return;this.movedSet.add(e);let n=null;t&&this.mirror.hasNode(t)&&(n=this.mirror.getId(t)),n&&-1!==n&&(this.movedMap[Jd(this.mirror.getId(e),n)]=!0)}else this.addedSet.add(e),this.droppedSet.delete(e);Ed(e,this.blockClass,this.blockSelector,!1)||(md.childNodes(e).forEach((e=>this.genAdds(e))),Pd(e)&&md.childNodes(md.shadowRoot(e)).forEach((t=>{this.processedNodeManager.add(t,this),this.genAdds(t,e)})))}}))}init(e){["mutationCb","blockClass","blockSelector","maskTextClass","maskTextSelector","inlineStylesheet","maskInputOptions","maskTextFn","maskInputFn","keepIframeSrcFn","recordCanvas","inlineImages","slimDOMOptions","dataURLOptions","doc","mirror","iframeManager","stylesheetManager","shadowDomManager","canvasManager","processedNodeManager"].forEach((t=>{this[t]=e[t]}))}freeze(){this.frozen=!0,this.canvasManager.freeze()}unfreeze(){this.frozen=!1,this.canvasManager.unfreeze(),this.emit()}isFrozen(){return this.frozen}lock(){this.locked=!0,this.canvasManager.lock()}unlock(){this.locked=!1,this.canvasManager.unlock(),this.emit()}reset(){this.shadowDomManager.reset(),this.canvasManager.reset()}}function Kd(e,t){e.delete(t),md.childNodes(t).forEach((t=>Kd(e,t)))}function Yd(e,t,n){return 0!==e.size&&function(e,t,n){const o=md.parentNode(t);return!!o&&e.has(o)}(e,t)}function Xd(e,t){return 0!==e.size&&$d(e,t)}function $d(e,t){const n=md.parentNode(t);return!!n&&(!!e.has(n)||$d(e,n))}let Qd;const ep=e=>{if(!Qd)return e;return(...t)=>{try{return e(...t)}catch(n){if(Qd&&!0===Qd(n))return;throw n}}},tp=[];function np(e){try{if("composedPath"in e){const t=e.composedPath();if(t.length)return t[0]}else if("path"in e&&e.path.length)return e.path[0]}catch{}return e&&e.target}function op(e,t){const n=new Zd;tp.push(n),n.init(e);const o=new(fd())(ep(n.processMutations.bind(n)));return o.observe(t,{attributes:!0,attributeOldValue:!0,characterData:!0,characterDataOldValue:!0,childList:!0,subtree:!0}),o}function rp({mouseInteractionCb:e,doc:t,mirror:n,blockClass:o,blockSelector:r,sampling:i}){if(!1===i.mouseInteraction)return()=>{};const a=!0===i.mouseInteraction||void 0===i.mouseInteraction?{}:i.mouseInteraction,s=[];let l=null;return Object.keys(Ud).filter((e=>Number.isNaN(Number(e))&&!e.endsWith("_Departed")&&!1!==a[e])).forEach((i=>{let a=Qn(i);const c=(t=>i=>{const a=np(i);if(Ed(a,o,r,!0))return;let s=null,c=t;if("pointerType"in i){switch(i.pointerType){case"mouse":s=Hd.Mouse;break;case"touch":s=Hd.Touch;break;case"pen":s=Hd.Pen}s===Hd.Touch?Ud[t]===Ud.MouseDown?c="TouchStart":Ud[t]===Ud.MouseUp&&(c="TouchEnd"):Hd.Pen}else Ad(i)&&(s=Hd.Touch);null!==s?(l=s,(c.startsWith("Touch")&&s===Hd.Touch||c.startsWith("Mouse")&&s===Hd.Mouse)&&(s=null)):Ud[t]===Ud.Click&&(s=l,l=null);const u=Ad(i)?i.changedTouches[0]:i;if(!u)return;const d=n.getId(a),{clientX:p,clientY:h}=u;ep(e)({type:Ud[c],id:d,x:p,y:h,...null!==s&&{pointerType:s}})})(i);if(window.PointerEvent)switch(Ud[i]){case Ud.MouseDown:case Ud.MouseUp:a=a.replace("mouse","pointer");break;case Ud.TouchStart:case Ud.TouchEnd:return}s.push(gd(a,c,t))})),ep((()=>{s.forEach((e=>e()))}))}function ip({scrollCb:e,doc:t,mirror:n,blockClass:o,blockSelector:r,sampling:i}){return gd("scroll",ep(bd(ep((i=>{const a=np(i);if(!a||Ed(a,o,r,!0))return;const s=n.getId(a);if(a===t&&t.defaultView){const n=Sd(t.defaultView);e({id:s,x:n.left,y:n.top})}else e({id:s,x:a.scrollLeft,y:a.scrollTop})})),i.scroll||100)),t)}const ap=["INPUT","TEXTAREA","SELECT"],sp=new WeakMap;function lp(e){return function(e,t){if(pp("CSSGroupingRule")&&e.parentRule instanceof CSSGroupingRule||pp("CSSMediaRule")&&e.parentRule instanceof CSSMediaRule||pp("CSSSupportsRule")&&e.parentRule instanceof CSSSupportsRule||pp("CSSConditionRule")&&e.parentRule instanceof CSSConditionRule){const n=Array.from(e.parentRule.cssRules).indexOf(e);t.unshift(n)}else if(e.parentStyleSheet){const n=Array.from(e.parentStyleSheet.cssRules).indexOf(e);t.unshift(n)}return t}(e,[])}function cp(e,t,n){let o,r;return e?(e.ownerNode?o=t.getId(e.ownerNode):r=n.getId(e),{styleId:r,id:o}):{}}function up({mirror:e,stylesheetManager:t},n){var o,r,i;let a=null;a="#document"===n.nodeName?e.getId(n):e.getId(md.host(n));const s="#document"===n.nodeName?null==(o=n.defaultView)?void 0:o.Document:null==(i=null==(r=n.ownerDocument)?void 0:r.defaultView)?void 0:i.ShadowRoot,l=(null==s?void 0:s.prototype)?Object.getOwnPropertyDescriptor(null==s?void 0:s.prototype,"adoptedStyleSheets"):void 0;return null!==a&&-1!==a&&s&&l?(Object.defineProperty(n,"adoptedStyleSheets",{configurable:l.configurable,enumerable:l.enumerable,get(){var e;return null==(e=l.get)?void 0:e.call(this)},set(e){var n;const o=null==(n=l.set)?void 0:n.call(this,e);if(null!==a&&-1!==a)try{t.adoptStyleSheets(e,a)}catch(r){}return o}}),ep((()=>{Object.defineProperty(n,"adoptedStyleSheets",{configurable:l.configurable,enumerable:l.enumerable,get:l.get,set:l.set})}))):()=>{}}function dp(e,t={}){const n=e.doc.defaultView;if(!n)return()=>{};let o;!function(e,t){const{mutationCb:n,mousemoveCb:o,mouseInteractionCb:r,scrollCb:i,viewportResizeCb:a,inputCb:s,mediaInteractionCb:l,styleSheetRuleCb:c,styleDeclarationCb:u,canvasMutationCb:d,fontCb:p,selectionCb:h,customElementCb:f}=e;e.mutationCb=(...e)=>{t.mutation&&t.mutation(...e),n(...e)},e.mousemoveCb=(...e)=>{t.mousemove&&t.mousemove(...e),o(...e)},e.mouseInteractionCb=(...e)=>{t.mouseInteraction&&t.mouseInteraction(...e),r(...e)},e.scrollCb=(...e)=>{t.scroll&&t.scroll(...e),i(...e)},e.viewportResizeCb=(...e)=>{t.viewportResize&&t.viewportResize(...e),a(...e)},e.inputCb=(...e)=>{t.input&&t.input(...e),s(...e)},e.mediaInteractionCb=(...e)=>{t.mediaInteaction&&t.mediaInteaction(...e),l(...e)},e.styleSheetRuleCb=(...e)=>{t.styleSheetRule&&t.styleSheetRule(...e),c(...e)},e.styleDeclarationCb=(...e)=>{t.styleDeclaration&&t.styleDeclaration(...e),u(...e)},e.canvasMutationCb=(...e)=>{t.canvasMutation&&t.canvasMutation(...e),d(...e)},e.fontCb=(...e)=>{t.font&&t.font(...e),p(...e)},e.selectionCb=(...e)=>{t.selection&&t.selection(...e),h(...e)},e.customElementCb=(...e)=>{t.customElement&&t.customElement(...e),f(...e)}}(e,t),e.recordDOM&&(o=op(e,e.doc));const r=function({mousemoveCb:e,sampling:t,doc:n,mirror:o}){if(!1===t.mousemove)return()=>{};const r="number"==typeof t.mousemove?t.mousemove:50,i="number"==typeof t.mousemoveCallback?t.mousemoveCallback:500;let a,s=[];const l=bd(ep((t=>{const n=Date.now()-a;e(s.map((e=>(e.timeOffset-=n,e))),t),s=[],a=null})),i),c=ep(bd(ep((e=>{const t=np(e),{clientX:n,clientY:r}=Ad(e)?e.changedTouches[0]:e;a||(a=xd()),s.push({x:n,y:r,id:o.getId(t),timeOffset:xd()-a}),l("undefined"!=typeof DragEvent&&e instanceof DragEvent?_d.Drag:e instanceof MouseEvent?_d.MouseMove:_d.TouchMove)})),r,{trailing:!1})),u=[gd("mousemove",c,n),gd("touchmove",c,n),gd("drag",c,n)];return ep((()=>{u.forEach((e=>e()))}))}(e),i=rp(e),a=ip(e),s=function({viewportResizeCb:e},{win:t}){let n=-1,o=-1;return gd("resize",ep(bd(ep((()=>{const t=Cd(),r=Id();n===t&&o===r||(e({width:Number(r),height:Number(t)}),n=t,o=r)})),200)),t)}(e,{win:n}),l=function({inputCb:e,doc:t,mirror:n,blockClass:o,blockSelector:r,ignoreClass:i,ignoreSelector:a,maskInputOptions:s,maskInputFn:l,sampling:c,userTriggeredOnInput:u}){function d(e){let n=np(e);const c=e.isTrusted,d=n&&n.tagName;if(n&&"OPTION"===d&&(n=md.parentElement(n)),!n||!d||ap.indexOf(d)<0||Ed(n,o,r,!0))return;if(n.classList.contains(i)||a&&n.matches(a))return;let h=n.value,f=!1;const m=to(n)||"";"radio"===m||"checkbox"===m?f=n.checked:(s[d.toLowerCase()]||s[m])&&(h=$n({element:n,maskInputOptions:s,tagName:d,type:m,value:h,maskInputFn:l})),p(n,u?{text:h,isChecked:f,userTriggered:c}:{text:h,isChecked:f});const g=n.name;"radio"===m&&g&&f&&t.querySelectorAll(`input[type="radio"][name="${g}"]`).forEach((e=>{if(e!==n){const t=e.value;p(e,u?{text:t,isChecked:!f,userTriggered:!1}:{text:t,isChecked:!f})}}))}function p(t,o){const r=sp.get(t);if(!r||r.text!==o.text||r.isChecked!==o.isChecked){sp.set(t,o);const r=n.getId(t);ep(e)({...o,id:r})}}const h=("last"===c.input?["change"]:["input","change"]).map((e=>gd(e,ep(d),t))),f=t.defaultView;if(!f)return()=>{h.forEach((e=>e()))};const m=f.Object.getOwnPropertyDescriptor(f.HTMLInputElement.prototype,"value"),g=[[f.HTMLInputElement.prototype,"value"],[f.HTMLInputElement.prototype,"checked"],[f.HTMLSelectElement.prototype,"value"],[f.HTMLTextAreaElement.prototype,"value"],[f.HTMLSelectElement.prototype,"selectedIndex"],[f.HTMLOptionElement.prototype,"selected"]];return m&&m.set&&h.push(...g.map((e=>wd(e[0],e[1],{set(){ep(d)({target:this,isTrusted:!1})}},!1,f)))),ep((()=>{h.forEach((e=>e()))}))}(e),c=function({mediaInteractionCb:e,blockClass:t,blockSelector:n,mirror:o,sampling:r,doc:i}){const a=ep((i=>bd(ep((r=>{const a=np(r);if(!a||Ed(a,t,n,!0))return;const{currentTime:s,volume:l,muted:c,playbackRate:u,loop:d}=a;e({type:i,id:o.getId(a),currentTime:s,volume:l,muted:c,playbackRate:u,loop:d})})),r.media||500))),s=[gd("play",a(qd.Play),i),gd("pause",a(qd.Pause),i),gd("seeked",a(qd.Seeked),i),gd("volumechange",a(qd.VolumeChange),i),gd("ratechange",a(qd.RateChange),i)];return ep((()=>{s.forEach((e=>e()))}))}(e);let u=()=>{},d=()=>{},p=()=>{},h=()=>{};e.recordDOM&&(u=function({styleSheetRuleCb:e,mirror:t,stylesheetManager:n},{win:o}){if(!o.CSSStyleSheet||!o.CSSStyleSheet.prototype)return()=>{};const r=o.CSSStyleSheet.prototype.insertRule;o.CSSStyleSheet.prototype.insertRule=new Proxy(r,{apply:ep(((o,r,i)=>{const[a,s]=i,{id:l,styleId:c}=cp(r,t,n.styleMirror);return(l&&-1!==l||c&&-1!==c)&&e({id:l,styleId:c,adds:[{rule:a,index:s}]}),o.apply(r,i)}))}),o.CSSStyleSheet.prototype.addRule=function(e,t,n=this.cssRules.length){const r=`${e} { ${t} }`;return o.CSSStyleSheet.prototype.insertRule.apply(this,[r,n])};const i=o.CSSStyleSheet.prototype.deleteRule;let a,s;o.CSSStyleSheet.prototype.deleteRule=new Proxy(i,{apply:ep(((o,r,i)=>{const[a]=i,{id:s,styleId:l}=cp(r,t,n.styleMirror);return(s&&-1!==s||l&&-1!==l)&&e({id:s,styleId:l,removes:[{index:a}]}),o.apply(r,i)}))}),o.CSSStyleSheet.prototype.removeRule=function(e){return o.CSSStyleSheet.prototype.deleteRule.apply(this,[e])},o.CSSStyleSheet.prototype.replace&&(a=o.CSSStyleSheet.prototype.replace,o.CSSStyleSheet.prototype.replace=new Proxy(a,{apply:ep(((o,r,i)=>{const[a]=i,{id:s,styleId:l}=cp(r,t,n.styleMirror);return(s&&-1!==s||l&&-1!==l)&&e({id:s,styleId:l,replace:a}),o.apply(r,i)}))})),o.CSSStyleSheet.prototype.replaceSync&&(s=o.CSSStyleSheet.prototype.replaceSync,o.CSSStyleSheet.prototype.replaceSync=new Proxy(s,{apply:ep(((o,r,i)=>{const[a]=i,{id:s,styleId:l}=cp(r,t,n.styleMirror);return(s&&-1!==s||l&&-1!==l)&&e({id:s,styleId:l,replaceSync:a}),o.apply(r,i)}))}));const l={};hp("CSSGroupingRule")?l.CSSGroupingRule=o.CSSGroupingRule:(hp("CSSMediaRule")&&(l.CSSMediaRule=o.CSSMediaRule),hp("CSSConditionRule")&&(l.CSSConditionRule=o.CSSConditionRule),hp("CSSSupportsRule")&&(l.CSSSupportsRule=o.CSSSupportsRule));const c={};return Object.entries(l).forEach((([o,r])=>{c[o]={insertRule:r.prototype.insertRule,deleteRule:r.prototype.deleteRule},r.prototype.insertRule=new Proxy(c[o].insertRule,{apply:ep(((o,r,i)=>{const[a,s]=i,{id:l,styleId:c}=cp(r.parentStyleSheet,t,n.styleMirror);return(l&&-1!==l||c&&-1!==c)&&e({id:l,styleId:c,adds:[{rule:a,index:[...lp(r),s||0]}]}),o.apply(r,i)}))}),r.prototype.deleteRule=new Proxy(c[o].deleteRule,{apply:ep(((o,r,i)=>{const[a]=i,{id:s,styleId:l}=cp(r.parentStyleSheet,t,n.styleMirror);return(s&&-1!==s||l&&-1!==l)&&e({id:s,styleId:l,removes:[{index:[...lp(r),a]}]}),o.apply(r,i)}))})})),ep((()=>{o.CSSStyleSheet.prototype.insertRule=r,o.CSSStyleSheet.prototype.deleteRule=i,a&&(o.CSSStyleSheet.prototype.replace=a),s&&(o.CSSStyleSheet.prototype.replaceSync=s),Object.entries(l).forEach((([e,t])=>{t.prototype.insertRule=c[e].insertRule,t.prototype.deleteRule=c[e].deleteRule}))}))}(e,{win:n}),d=up(e,e.doc),p=function({styleDeclarationCb:e,mirror:t,ignoreCSSAttributes:n,stylesheetManager:o},{win:r}){const i=r.CSSStyleDeclaration.prototype.setProperty;r.CSSStyleDeclaration.prototype.setProperty=new Proxy(i,{apply:ep(((r,a,s)=>{var l;const[c,u,d]=s;if(n.has(c))return i.apply(a,[c,u,d]);const{id:p,styleId:h}=cp(null==(l=a.parentRule)?void 0:l.parentStyleSheet,t,o.styleMirror);return(p&&-1!==p||h&&-1!==h)&&e({id:p,styleId:h,set:{property:c,value:u,priority:d},index:lp(a.parentRule)}),r.apply(a,s)}))});const a=r.CSSStyleDeclaration.prototype.removeProperty;return r.CSSStyleDeclaration.prototype.removeProperty=new Proxy(a,{apply:ep(((r,i,s)=>{var l;const[c]=s;if(n.has(c))return a.apply(i,[c]);const{id:u,styleId:d}=cp(null==(l=i.parentRule)?void 0:l.parentStyleSheet,t,o.styleMirror);return(u&&-1!==u||d&&-1!==d)&&e({id:u,styleId:d,remove:{property:c},index:lp(i.parentRule)}),r.apply(i,s)}))}),ep((()=>{r.CSSStyleDeclaration.prototype.setProperty=i,r.CSSStyleDeclaration.prototype.removeProperty=a}))}(e,{win:n}),e.collectFonts&&(h=function({fontCb:e,doc:t}){const n=t.defaultView;if(!n)return()=>{};const o=[],r=new WeakMap,i=n.FontFace;n.FontFace=function(e,t,n){const o=new i(e,t,n);return r.set(o,{family:e,buffer:"string"!=typeof t,descriptors:n,fontSource:"string"==typeof t?t:JSON.stringify(Array.from(new Uint8Array(t)))}),o};const a=kd(t.fonts,"add",(function(t){return function(n){return setTimeout(ep((()=>{const t=r.get(n);t&&(e(t),r.delete(n))})),0),t.apply(this,[n])}}));return o.push((()=>{n.FontFace=i})),o.push(a),ep((()=>{o.forEach((e=>e()))}))}(e)));const f=function(e){const{doc:t,mirror:n,blockClass:o,blockSelector:r,selectionCb:i}=e;let a=!0;const s=ep((()=>{const e=t.getSelection();if(!e||a&&(null==e?void 0:e.isCollapsed))return;a=e.isCollapsed||!1;const s=[],l=e.rangeCount||0;for(let t=0;t{}}(e),g=[];for(const v of e.plugins)g.push(v.observer(v.callback,n,v.options));return ep((()=>{tp.forEach((e=>e.reset())),null==o||o.disconnect(),r(),i(),a(),s(),l(),c(),u(),d(),p(),h(),f(),m(),g.forEach((e=>e()))}))}function pp(e){return void 0!==window[e]}function hp(e){return Boolean(void 0!==window[e]&&window[e].prototype&&"insertRule"in window[e].prototype&&"deleteRule"in window[e].prototype)}class fp{constructor(e){Rn(this,"iframeIdToRemoteIdMap",new WeakMap),Rn(this,"iframeRemoteIdToIdMap",new WeakMap),this.generateIdFn=e}getId(e,t,n,o){const r=n||this.getIdToRemoteIdMap(e),i=o||this.getRemoteIdToIdMap(e);let a=r.get(t);return a||(a=this.generateIdFn(),r.set(t,a),i.set(a,t)),a}getIds(e,t){const n=this.getIdToRemoteIdMap(e),o=this.getRemoteIdToIdMap(e);return t.map((t=>this.getId(e,t,n,o)))}getRemoteId(e,t,n){const o=n||this.getRemoteIdToIdMap(e);if("number"!=typeof t)return t;const r=o.get(t);return r||-1}getRemoteIds(e,t){const n=this.getRemoteIdToIdMap(e);return t.map((t=>this.getRemoteId(e,t,n)))}reset(e){if(!e)return this.iframeIdToRemoteIdMap=new WeakMap,void(this.iframeRemoteIdToIdMap=new WeakMap);this.iframeIdToRemoteIdMap.delete(e),this.iframeRemoteIdToIdMap.delete(e)}getIdToRemoteIdMap(e){let t=this.iframeIdToRemoteIdMap.get(e);return t||(t=new Map,this.iframeIdToRemoteIdMap.set(e,t)),t}getRemoteIdToIdMap(e){let t=this.iframeRemoteIdToIdMap.get(e);return t||(t=new Map,this.iframeRemoteIdToIdMap.set(e,t)),t}}class mp{constructor(e){Rn(this,"iframes",new WeakMap),Rn(this,"crossOriginIframeMap",new WeakMap),Rn(this,"crossOriginIframeMirror",new fp(fo)),Rn(this,"crossOriginIframeStyleMirror"),Rn(this,"crossOriginIframeRootIdMap",new WeakMap),Rn(this,"mirror"),Rn(this,"mutationCb"),Rn(this,"wrappedEmit"),Rn(this,"loadListener"),Rn(this,"stylesheetManager"),Rn(this,"recordCrossOriginIframes"),this.mutationCb=e.mutationCb,this.wrappedEmit=e.wrappedEmit,this.stylesheetManager=e.stylesheetManager,this.recordCrossOriginIframes=e.recordCrossOriginIframes,this.crossOriginIframeStyleMirror=new fp(this.stylesheetManager.styleMirror.generateId.bind(this.stylesheetManager.styleMirror)),this.mirror=e.mirror,this.recordCrossOriginIframes&&window.addEventListener("message",this.handleMessage.bind(this))}addIframe(e){this.iframes.set(e,!0),e.contentWindow&&this.crossOriginIframeMap.set(e.contentWindow,e)}addLoadListener(e){this.loadListener=e}attachIframe(e,t){var n,o;this.mutationCb({adds:[{parentId:this.mirror.getId(e),nextId:null,node:t}],removes:[],texts:[],attributes:[],isAttachIframe:!0}),this.recordCrossOriginIframes&&(null==(n=e.contentWindow)||n.addEventListener("message",this.handleMessage.bind(this))),null==(o=this.loadListener)||o.call(this,e),e.contentDocument&&e.contentDocument.adoptedStyleSheets&&e.contentDocument.adoptedStyleSheets.length>0&&this.stylesheetManager.adoptStyleSheets(e.contentDocument.adoptedStyleSheets,this.mirror.getId(e.contentDocument))}handleMessage(e){const t=e;if("rrweb"!==t.data.type||t.origin!==t.data.origin)return;if(!e.source)return;const n=this.crossOriginIframeMap.get(e.source);if(!n)return;const o=this.transformCrossOriginEvent(n,t.data.event);o&&this.wrappedEmit(o,t.data.isCheckout)}transformCrossOriginEvent(e,t){var n;switch(t.type){case Bd.FullSnapshot:{this.crossOriginIframeMirror.reset(e),this.crossOriginIframeStyleMirror.reset(e),this.replaceIdOnNode(t.data.node,e);const n=t.data.node.id;return this.crossOriginIframeRootIdMap.set(e,n),this.patchRootIdOnNode(t.data.node,n),{timestamp:t.timestamp,type:Bd.IncrementalSnapshot,data:{source:_d.Mutation,adds:[{parentId:this.mirror.getId(e),nextId:null,node:t.data.node}],removes:[],texts:[],attributes:[],isAttachIframe:!0}}}case Bd.Meta:case Bd.Load:case Bd.DomContentLoaded:return!1;case Bd.Plugin:return t;case Bd.Custom:return this.replaceIds(t.data.payload,e,["id","parentId","previousId","nextId"]),t;case Bd.IncrementalSnapshot:switch(t.data.source){case _d.Mutation:return t.data.adds.forEach((t=>{this.replaceIds(t,e,["parentId","nextId","previousId"]),this.replaceIdOnNode(t.node,e);const n=this.crossOriginIframeRootIdMap.get(e);n&&this.patchRootIdOnNode(t.node,n)})),t.data.removes.forEach((t=>{this.replaceIds(t,e,["parentId","id"])})),t.data.attributes.forEach((t=>{this.replaceIds(t,e,["id"])})),t.data.texts.forEach((t=>{this.replaceIds(t,e,["id"])})),t;case _d.Drag:case _d.TouchMove:case _d.MouseMove:return t.data.positions.forEach((t=>{this.replaceIds(t,e,["id"])})),t;case _d.ViewportResize:return!1;case _d.MediaInteraction:case _d.MouseInteraction:case _d.Scroll:case _d.CanvasMutation:case _d.Input:return this.replaceIds(t.data,e,["id"]),t;case _d.StyleSheetRule:case _d.StyleDeclaration:return this.replaceIds(t.data,e,["id"]),this.replaceStyleIds(t.data,e,["styleId"]),t;case _d.Font:return t;case _d.Selection:return t.data.ranges.forEach((t=>{this.replaceIds(t,e,["start","end"])})),t;case _d.AdoptedStyleSheet:return this.replaceIds(t.data,e,["id"]),this.replaceStyleIds(t.data,e,["styleIds"]),null==(n=t.data.styles)||n.forEach((t=>{this.replaceStyleIds(t,e,["styleId"])})),t}}return!1}replace(e,t,n,o){for(const r of o)(Array.isArray(t[r])||"number"==typeof t[r])&&(Array.isArray(t[r])?t[r]=e.getIds(n,t[r]):t[r]=e.getId(n,t[r]));return t}replaceIds(e,t,n){return this.replace(this.crossOriginIframeMirror,e,t,n)}replaceStyleIds(e,t,n){return this.replace(this.crossOriginIframeStyleMirror,e,t,n)}replaceIdOnNode(e,t){this.replaceIds(e,t,["id","rootId"]),"childNodes"in e&&e.childNodes.forEach((e=>{this.replaceIdOnNode(e,t)}))}patchRootIdOnNode(e,t){e.type===Wd.Document||e.rootId||(e.rootId=t),"childNodes"in e&&e.childNodes.forEach((e=>{this.patchRootIdOnNode(e,t)}))}}class gp{constructor(e){Rn(this,"shadowDoms",new WeakSet),Rn(this,"mutationCb"),Rn(this,"scrollCb"),Rn(this,"bypassOptions"),Rn(this,"mirror"),Rn(this,"restoreHandlers",[]),this.mutationCb=e.mutationCb,this.scrollCb=e.scrollCb,this.bypassOptions=e.bypassOptions,this.mirror=e.mirror,this.init()}init(){this.reset(),this.patchAttachShadow(Element,document)}addShadowRoot(e,t){if(!Zn(e))return;if(this.shadowDoms.has(e))return;this.shadowDoms.add(e);const n=op({...this.bypassOptions,doc:t,mutationCb:this.mutationCb,mirror:this.mirror,shadowDomManager:this},e);this.restoreHandlers.push((()=>n.disconnect())),this.restoreHandlers.push(ip({...this.bypassOptions,scrollCb:this.scrollCb,doc:e,mirror:this.mirror})),setTimeout((()=>{e.adoptedStyleSheets&&e.adoptedStyleSheets.length>0&&this.bypassOptions.stylesheetManager.adoptStyleSheets(e.adoptedStyleSheets,this.mirror.getId(md.host(e))),this.restoreHandlers.push(up({mirror:this.mirror,stylesheetManager:this.bypassOptions.stylesheetManager},e))}),0)}observeAttachShadow(e){e.contentWindow&&e.contentDocument&&this.patchAttachShadow(e.contentWindow.Element,e.contentDocument)}patchAttachShadow(e,t){const n=this;this.restoreHandlers.push(kd(e.prototype,"attachShadow",(function(e){return function(o){const r=e.call(this,o),i=md.shadowRoot(this);return i&&Fd(this)&&n.addShadowRoot(i,t),r}})))}reset(){this.restoreHandlers.forEach((e=>{try{e()}catch(t){}})),this.restoreHandlers=[],this.shadowDoms=new WeakSet}}for(var vp="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",yp="undefined"==typeof Uint8Array?[]:new Uint8Array(256),bp=0;bp<64;bp++)yp[vp.charCodeAt(bp)]=bp;const wp=new Map;const kp=(e,t,n)=>{if(!e||!Cp(e,t)&&"object"!=typeof e)return;const o=function(e,t){let n=wp.get(e);return n||(n=new Map,wp.set(e,n)),n.has(t)||n.set(t,[]),n.get(t)}(n,e.constructor.name);let r=o.indexOf(e);return-1===r&&(r=o.length,o.push(e)),r};function xp(e,t,n){if(e instanceof Array)return e.map((e=>xp(e,t,n)));if(null===e)return e;if(e instanceof Float32Array||e instanceof Float64Array||e instanceof Int32Array||e instanceof Uint32Array||e instanceof Uint8Array||e instanceof Uint16Array||e instanceof Int16Array||e instanceof Int8Array||e instanceof Uint8ClampedArray){return{rr_type:e.constructor.name,args:[Object.values(e)]}}if(e instanceof ArrayBuffer){return{rr_type:e.constructor.name,base64:function(e){var t,n=new Uint8Array(e),o=n.length,r="";for(t=0;t>2],r+=vp[(3&n[t])<<4|n[t+1]>>4],r+=vp[(15&n[t+1])<<2|n[t+2]>>6],r+=vp[63&n[t+2]];return o%3==2?r=r.substring(0,r.length-1)+"=":o%3==1&&(r=r.substring(0,r.length-2)+"=="),r}(e)}}if(e instanceof DataView){return{rr_type:e.constructor.name,args:[xp(e.buffer,t,n),e.byteOffset,e.byteLength]}}if(e instanceof HTMLImageElement){const t=e.constructor.name,{src:n}=e;return{rr_type:t,src:n}}if(e instanceof HTMLCanvasElement){return{rr_type:"HTMLImageElement",src:e.toDataURL()}}if(e instanceof ImageData){return{rr_type:e.constructor.name,args:[xp(e.data,t,n),e.width,e.height]}}if(Cp(e,t)||"object"==typeof e){return{rr_type:e.constructor.name,index:kp(e,t,n)}}return e}const Sp=(e,t,n)=>e.map((e=>xp(e,t,n))),Cp=(e,t)=>{const n=["WebGLActiveInfo","WebGLBuffer","WebGLFramebuffer","WebGLProgram","WebGLRenderbuffer","WebGLShader","WebGLShaderPrecisionFormat","WebGLTexture","WebGLUniformLocation","WebGLVertexArrayObject","WebGLVertexArrayObjectOES"].filter((e=>"function"==typeof t[e]));return Boolean(n.find((n=>e instanceof t[n])))};function Ip(e,t,n,o){const r=[];try{const i=kd(e.HTMLCanvasElement.prototype,"getContext",(function(e){return function(r,...i){if(!Ed(this,t,n,!0)){const e=function(e){return"experimental-webgl"===e?"webgl":e}(r);if("__context"in this||(this.__context=e),o&&["webgl","webgl2"].includes(e))if(i[0]&&"object"==typeof i[0]){const e=i[0];e.preserveDrawingBuffer||(e.preserveDrawingBuffer=!0)}else i.splice(0,1,{preserveDrawingBuffer:!0})}return e.apply(this,[r,...i])}}));r.push(i)}catch{console.error("failed to patch HTMLCanvasElement.prototype.getContext")}return()=>{r.forEach((e=>e()))}}function Op(e,t,n,o,r,i){const a=[],s=Object.getOwnPropertyNames(e);for(const l of s)if(!["isContextLost","canvas","drawingBufferWidth","drawingBufferHeight"].includes(l))try{if("function"!=typeof e[l])continue;const s=kd(e,l,(function(e){return function(...a){const s=e.apply(this,a);if(kp(s,i,this),"tagName"in this.canvas&&!Ed(this.canvas,o,r,!0)){const e=Sp(a,i,this),o={type:t,property:l,args:e};n(this.canvas,o)}return s}}));a.push(s)}catch{const o=wd(e,l,{set(e){n(this.canvas,{type:t,property:l,args:[e],setter:!0})}});a.push(o)}return a}const Ep="KGZ1bmN0aW9uKCkgewogICJ1c2Ugc3RyaWN0IjsKICB2YXIgY2hhcnMgPSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7CiAgdmFyIGxvb2t1cCA9IHR5cGVvZiBVaW50OEFycmF5ID09PSAidW5kZWZpbmVkIiA/IFtdIDogbmV3IFVpbnQ4QXJyYXkoMjU2KTsKICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYXJzLmxlbmd0aDsgaSsrKSB7CiAgICBsb29rdXBbY2hhcnMuY2hhckNvZGVBdChpKV0gPSBpOwogIH0KICB2YXIgZW5jb2RlID0gZnVuY3Rpb24oYXJyYXlidWZmZXIpIHsKICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGFycmF5YnVmZmVyKSwgaTIsIGxlbiA9IGJ5dGVzLmxlbmd0aCwgYmFzZTY0ID0gIiI7CiAgICBmb3IgKGkyID0gMDsgaTIgPCBsZW47IGkyICs9IDMpIHsKICAgICAgYmFzZTY0ICs9IGNoYXJzW2J5dGVzW2kyXSA+PiAyXTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMl0gJiAzKSA8PCA0IHwgYnl0ZXNbaTIgKyAxXSA+PiA0XTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMiArIDFdICYgMTUpIDw8IDIgfCBieXRlc1tpMiArIDJdID4+IDZdOwogICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaTIgKyAyXSAmIDYzXTsKICAgIH0KICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgIj0iOwogICAgfSBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgIj09IjsKICAgIH0KICAgIHJldHVybiBiYXNlNjQ7CiAgfTsKICBjb25zdCBsYXN0QmxvYk1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7CiAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTsKICBhc3luYyBmdW5jdGlvbiBnZXRUcmFuc3BhcmVudEJsb2JGb3Iod2lkdGgsIGhlaWdodCwgZGF0YVVSTE9wdGlvbnMpIHsKICAgIGNvbnN0IGlkID0gYCR7d2lkdGh9LSR7aGVpZ2h0fWA7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBpZiAodHJhbnNwYXJlbnRCbG9iTWFwLmhhcyhpZCkpIHJldHVybiB0cmFuc3BhcmVudEJsb2JNYXAuZ2V0KGlkKTsKICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsKICAgICAgb2Zmc2NyZWVuLmdldENvbnRleHQoIjJkIik7CiAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCBvZmZzY3JlZW4uY29udmVydFRvQmxvYihkYXRhVVJMT3B0aW9ucyk7CiAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gYXdhaXQgYmxvYi5hcnJheUJ1ZmZlcigpOwogICAgICBjb25zdCBiYXNlNjQgPSBlbmNvZGUoYXJyYXlCdWZmZXIpOwogICAgICB0cmFuc3BhcmVudEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICByZXR1cm4gYmFzZTY0OwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuICIiOwogICAgfQogIH0KICBjb25zdCB3b3JrZXIgPSBzZWxmOwogIHdvcmtlci5vbm1lc3NhZ2UgPSBhc3luYyBmdW5jdGlvbihlKSB7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBjb25zdCB7IGlkLCBiaXRtYXAsIHdpZHRoLCBoZWlnaHQsIGRhdGFVUkxPcHRpb25zIH0gPSBlLmRhdGE7CiAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKAogICAgICAgIHdpZHRoLAogICAgICAgIGhlaWdodCwKICAgICAgICBkYXRhVVJMT3B0aW9ucwogICAgICApOwogICAgICBjb25zdCBvZmZzY3JlZW4gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpOwogICAgICBjb25zdCBjdHggPSBvZmZzY3JlZW4uZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgY3R4LmRyYXdJbWFnZShiaXRtYXAsIDAsIDApOwogICAgICBiaXRtYXAuY2xvc2UoKTsKICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IG9mZnNjcmVlbi5jb252ZXJ0VG9CbG9iKGRhdGFVUkxPcHRpb25zKTsKICAgICAgY29uc3QgdHlwZSA9IGJsb2IudHlwZTsKICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBhd2FpdCBibG9iLmFycmF5QnVmZmVyKCk7CiAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7CiAgICAgIGlmICghbGFzdEJsb2JNYXAuaGFzKGlkKSAmJiBhd2FpdCB0cmFuc3BhcmVudEJhc2U2NCA9PT0gYmFzZTY0KSB7CiAgICAgICAgbGFzdEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICAgIHJldHVybiB3b3JrZXIucG9zdE1lc3NhZ2UoeyBpZCB9KTsKICAgICAgfQogICAgICBpZiAobGFzdEJsb2JNYXAuZ2V0KGlkKSA9PT0gYmFzZTY0KSByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQgfSk7CiAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7CiAgICAgICAgaWQsCiAgICAgICAgdHlwZSwKICAgICAgICBiYXNlNjQsCiAgICAgICAgd2lkdGgsCiAgICAgICAgaGVpZ2h0CiAgICAgIH0pOwogICAgICBsYXN0QmxvYk1hcC5zZXQoaWQsIGJhc2U2NCk7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IGUuZGF0YS5pZCB9KTsKICAgIH0KICB9Owp9KSgpOwovLyMgc291cmNlTWFwcGluZ1VSTD1pbWFnZS1iaXRtYXAtZGF0YS11cmwtd29ya2VyLUlKcEM3Z19iLmpzLm1hcAo=",Tp="undefined"!=typeof window&&window.Blob&&new Blob([(Lp=Ep,Uint8Array.from(atob(Lp),(e=>e.charCodeAt(0))))],{type:"text/javascript;charset=utf-8"});var Lp;function Ap(e){let t;try{if(t=Tp&&(window.URL||window.webkitURL).createObjectURL(Tp),!t)throw"";const n=new Worker(t,{name:null==e?void 0:e.name});return n.addEventListener("error",(()=>{(window.URL||window.webkitURL).revokeObjectURL(t)})),n}catch(n){return new Worker("data:text/javascript;base64,"+Ep,{name:null==e?void 0:e.name})}finally{t&&(window.URL||window.webkitURL).revokeObjectURL(t)}}class Mp{constructor(e){Rn(this,"pendingCanvasMutations",new Map),Rn(this,"rafStamps",{latestId:0,invokeId:null}),Rn(this,"mirror"),Rn(this,"mutationCb"),Rn(this,"resetObservers"),Rn(this,"frozen",!1),Rn(this,"locked",!1),Rn(this,"processMutation",((e,t)=>{!(this.rafStamps.invokeId&&this.rafStamps.latestId!==this.rafStamps.invokeId)&&this.rafStamps.invokeId||(this.rafStamps.invokeId=this.rafStamps.latestId),this.pendingCanvasMutations.has(e)||this.pendingCanvasMutations.set(e,[]),this.pendingCanvasMutations.get(e).push(t)}));const{sampling:t="all",win:n,blockClass:o,blockSelector:r,recordCanvas:i,dataURLOptions:a}=e;this.mutationCb=e.mutationCb,this.mirror=e.mirror,i&&"all"===t&&this.initCanvasMutationObserver(n,o,r),i&&"number"==typeof t&&this.initCanvasFPSObserver(t,n,o,r,{dataURLOptions:a})}reset(){this.pendingCanvasMutations.clear(),this.resetObservers&&this.resetObservers()}freeze(){this.frozen=!0}unfreeze(){this.frozen=!1}lock(){this.locked=!0}unlock(){this.locked=!1}initCanvasFPSObserver(e,t,n,o,r){const i=Ip(t,n,o,!0),a=new Map,s=new Ap;s.onmessage=e=>{const{id:t}=e.data;if(a.set(t,!1),!("base64"in e.data))return;const{base64:n,type:o,width:r,height:i}=e.data;this.mutationCb({id:t,type:zd["2D"],commands:[{property:"clearRect",args:[0,0,r,i]},{property:"drawImage",args:[{rr_type:"ImageBitmap",args:[{rr_type:"Blob",data:[{rr_type:"ArrayBuffer",base64:n}],type:o}]},0,0]}]})};const l=1e3/e;let c,u=0;const d=e=>{u&&e-u{const e=[];return t.document.querySelectorAll("canvas").forEach((t=>{Ed(t,n,o,!0)||e.push(t)})),e})().forEach((async e=>{var t;const n=this.mirror.getId(e);if(a.get(n))return;if(0===e.width||0===e.height)return;if(a.set(n,!0),["webgl","webgl2"].includes(e.__context)){const n=e.getContext(e.__context);!1===(null==(t=null==n?void 0:n.getContextAttributes())?void 0:t.preserveDrawingBuffer)&&n.clear(n.COLOR_BUFFER_BIT)}const o=await createImageBitmap(e);s.postMessage({id:n,bitmap:o,width:e.width,height:e.height,dataURLOptions:r.dataURLOptions},[o])}))),c=requestAnimationFrame(d)};c=requestAnimationFrame(d),this.resetObservers=()=>{i(),cancelAnimationFrame(c)}}initCanvasMutationObserver(e,t,n){this.startRAFTimestamping(),this.startPendingCanvasMutationFlusher();const o=Ip(e,t,n,!1),r=function(e,t,n,o){const r=[],i=Object.getOwnPropertyNames(t.CanvasRenderingContext2D.prototype);for(const a of i)try{if("function"!=typeof t.CanvasRenderingContext2D.prototype[a])continue;const i=kd(t.CanvasRenderingContext2D.prototype,a,(function(r){return function(...i){return Ed(this.canvas,n,o,!0)||setTimeout((()=>{const n=Sp(i,t,this);e(this.canvas,{type:zd["2D"],property:a,args:n})}),0),r.apply(this,i)}}));r.push(i)}catch{const n=wd(t.CanvasRenderingContext2D.prototype,a,{set(t){e(this.canvas,{type:zd["2D"],property:a,args:[t],setter:!0})}});r.push(n)}return()=>{r.forEach((e=>e()))}}(this.processMutation.bind(this),e,t,n),i=function(e,t,n,o){const r=[];return r.push(...Op(t.WebGLRenderingContext.prototype,zd.WebGL,e,n,o,t)),void 0!==t.WebGL2RenderingContext&&r.push(...Op(t.WebGL2RenderingContext.prototype,zd.WebGL2,e,n,o,t)),()=>{r.forEach((e=>e()))}}(this.processMutation.bind(this),e,t,n);this.resetObservers=()=>{o(),r(),i()}}startPendingCanvasMutationFlusher(){requestAnimationFrame((()=>this.flushPendingCanvasMutations()))}startRAFTimestamping(){const e=t=>{this.rafStamps.latestId=t,requestAnimationFrame(e)};requestAnimationFrame(e)}flushPendingCanvasMutations(){this.pendingCanvasMutations.forEach(((e,t)=>{const n=this.mirror.getId(t);this.flushPendingCanvasMutationFor(t,n)})),requestAnimationFrame((()=>this.flushPendingCanvasMutations()))}flushPendingCanvasMutationFor(e,t){if(this.frozen||this.locked)return;const n=this.pendingCanvasMutations.get(e);if(!n||-1===t)return;const o=n.map((e=>{const{type:t,...n}=e;return n})),{type:r}=n[0];this.mutationCb({id:t,type:r,commands:o}),this.pendingCanvasMutations.delete(e)}}class Rp{constructor(e){Rn(this,"trackedLinkElements",new WeakSet),Rn(this,"mutationCb"),Rn(this,"adoptedStyleSheetCb"),Rn(this,"styleMirror",new Dd),this.mutationCb=e.mutationCb,this.adoptedStyleSheetCb=e.adoptedStyleSheetCb}attachLinkElement(e,t){"_cssText"in t.attributes&&this.mutationCb({adds:[],removes:[],texts:[],attributes:[{id:t.id,attributes:t.attributes}]}),this.trackLinkElement(e)}trackLinkElement(e){this.trackedLinkElements.has(e)||(this.trackedLinkElements.add(e),this.trackStylesheetInLinkElement(e))}adoptStyleSheets(e,t){if(0===e.length)return;const n={id:t,styleIds:[]},o=[];for(const r of e){let e;this.styleMirror.has(r)?e=this.styleMirror.getId(r):(e=this.styleMirror.add(r),o.push({styleId:e,rules:Array.from(r.rules||CSSRule,((e,t)=>({rule:Yn(e,r.href),index:t})))})),n.styleIds.push(e)}o.length>0&&(n.styles=o),this.adoptedStyleSheetCb(n)}reset(){this.styleMirror.reset(),this.trackedLinkElements=new WeakSet}trackStylesheetInLinkElement(e){}}class Pp{constructor(){Rn(this,"nodeMap",new WeakMap),Rn(this,"active",!1)}inOtherBuffer(e,t){const n=this.nodeMap.get(e);return n&&Array.from(n).some((e=>e!==t))}add(e,t){this.active||(this.active=!0,requestAnimationFrame((()=>{this.nodeMap=new WeakMap,this.active=!1}))),this.nodeMap.set(e,(this.nodeMap.get(e)||new Set).add(t))}destroy(){}}let Dp,Np,jp,Fp=!1;try{if(2!==Array.from([1],(e=>2*e))[0]){const e=document.createElement("iframe");document.body.appendChild(e),Array.from=(null==(An=e.contentWindow)?void 0:An.Array.from)||Array.from,document.body.removeChild(e)}}catch(Hm){console.debug("Unable to override Array.from",Hm)}const Bp=new Xn;function _p(e={}){const{emit:t,checkoutEveryNms:n,checkoutEveryNth:o,blockClass:r="rr-block",blockSelector:i=null,ignoreClass:a="rr-ignore",ignoreSelector:s=null,maskTextClass:l="rr-mask",maskTextSelector:c=null,inlineStylesheet:u=!0,maskAllInputs:d,maskInputOptions:p,slimDOMOptions:h,maskInputFn:f,maskTextFn:m,hooks:g,packFn:v,sampling:y={},dataURLOptions:b={},mousemoveWait:w,recordDOM:k=!0,recordCanvas:x=!1,recordCrossOriginIframes:S=!1,recordAfter:C=("DOMContentLoaded"===e.recordAfter?e.recordAfter:"load"),userTriggeredOnInput:I=!1,collectFonts:O=!1,inlineImages:E=!1,plugins:T,keepIframeSrcFn:L=(()=>!1),ignoreCSSAttributes:A=new Set([]),errorHandler:M}=e;Qd=M;const R=!S||window.parent===window;let P=!1;if(!R)try{window.parent.document&&(P=!1)}catch(V){P=!0}if(R&&!t)throw new Error("emit function is required");if(!R&&!P)return()=>{};void 0!==w&&void 0===y.mousemove&&(y.mousemove=w),Bp.reset();const D=!0===d?{color:!0,date:!0,"datetime-local":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0,password:!0}:void 0!==p?p:{password:!0},N=!0===h||"all"===h?{script:!0,comment:!0,headFavicon:!0,headWhitespace:!0,headMetaSocial:!0,headMetaRobots:!0,headMetaHttpEquiv:!0,headMetaVerification:!0,headMetaAuthorship:"all"===h,headMetaDescKeywords:"all"===h,headTitleMutations:"all"===h}:h||{};let j;!function(e=window){"NodeList"in e&&!e.NodeList.prototype.forEach&&(e.NodeList.prototype.forEach=Array.prototype.forEach),"DOMTokenList"in e&&!e.DOMTokenList.prototype.forEach&&(e.DOMTokenList.prototype.forEach=Array.prototype.forEach)}();let F=0;const B=e=>{for(const t of T||[])t.eventProcessor&&(e=t.eventProcessor(e));return v&&!P&&(e=v(e)),e};Dp=(e,r)=>{var i;const a=e;if(a.timestamp=xd(),!(null==(i=tp[0])?void 0:i.isFrozen())||a.type===Bd.FullSnapshot||a.type===Bd.IncrementalSnapshot&&a.data.source===_d.Mutation||tp.forEach((e=>e.unfreeze())),R)null==t||t(B(a),r);else if(P){const e={type:"rrweb",event:B(a),origin:window.location.origin,isCheckout:r};window.parent.postMessage(e,"*")}if(a.type===Bd.FullSnapshot)j=a,F=0;else if(a.type===Bd.IncrementalSnapshot){if(a.data.source===_d.Mutation&&a.data.isAttachIframe)return;F++;const e=o&&F>=o,t=n&&a.timestamp-j.timestamp>n;(e||t)&&Np(!0)}};const _=e=>{Dp({type:Bd.IncrementalSnapshot,data:{source:_d.Mutation,...e}})},U=e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.Scroll,...e}}),H=e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.CanvasMutation,...e}}),z=new Rp({mutationCb:_,adoptedStyleSheetCb:e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.AdoptedStyleSheet,...e}})}),q=new mp({mirror:Bp,mutationCb:_,stylesheetManager:z,recordCrossOriginIframes:S,wrappedEmit:Dp});for(const Z of T||[])Z.getMirror&&Z.getMirror({nodeMirror:Bp,crossOriginIframeMirror:q.crossOriginIframeMirror,crossOriginIframeStyleMirror:q.crossOriginIframeStyleMirror});const W=new Pp;jp=new Mp({recordCanvas:x,mutationCb:H,win:window,blockClass:r,blockSelector:i,mirror:Bp,sampling:y.canvas,dataURLOptions:b});const G=new gp({mutationCb:_,scrollCb:U,bypassOptions:{blockClass:r,blockSelector:i,maskTextClass:l,maskTextSelector:c,inlineStylesheet:u,maskInputOptions:D,dataURLOptions:b,maskTextFn:m,maskInputFn:f,recordCanvas:x,inlineImages:E,sampling:y,slimDOMOptions:N,iframeManager:q,stylesheetManager:z,canvasManager:jp,keepIframeSrcFn:L,processedNodeManager:W},mirror:Bp});Np=(e=!1)=>{if(!k)return;Dp({type:Bd.Meta,data:{href:window.location.href,width:Id(),height:Cd()}},e),z.reset(),G.init(),tp.forEach((e=>e.lock()));const t=function(e,t){const{mirror:n=new Xn,blockClass:o="rr-block",blockSelector:r=null,maskTextClass:i="rr-mask",maskTextSelector:a=null,inlineStylesheet:s=!0,inlineImages:l=!1,recordCanvas:c=!1,maskAllInputs:u=!1,maskTextFn:d,maskInputFn:p,slimDOM:h=!1,dataURLOptions:f,preserveWhiteSpace:m,onSerialize:g,onIframeLoad:v,iframeLoadTimeout:y,onStylesheetLoad:b,stylesheetLoadTimeout:w,keepIframeSrcFn:k=(()=>!1)}=t||{};return Lo(e,{doc:e,mirror:n,blockClass:o,blockSelector:r,maskTextClass:i,maskTextSelector:a,skipChild:!1,inlineStylesheet:s,maskInputOptions:!0===u?{color:!0,date:!0,"datetime-local":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0,password:!0}:!1===u?{password:!0}:u,maskTextFn:d,maskInputFn:p,slimDOMOptions:!0===h||"all"===h?{script:!0,comment:!0,headFavicon:!0,headWhitespace:!0,headMetaDescKeywords:"all"===h,headMetaSocial:!0,headMetaRobots:!0,headMetaHttpEquiv:!0,headMetaAuthorship:!0,headMetaVerification:!0}:!1===h?{}:h,dataURLOptions:f,inlineImages:l,recordCanvas:c,preserveWhiteSpace:m,onSerialize:g,onIframeLoad:v,iframeLoadTimeout:y,onStylesheetLoad:b,stylesheetLoadTimeout:w,keepIframeSrcFn:k,newlyAddedElement:!1})}(document,{mirror:Bp,blockClass:r,blockSelector:i,maskTextClass:l,maskTextSelector:c,inlineStylesheet:u,maskAllInputs:D,maskTextFn:m,maskInputFn:f,slimDOM:N,dataURLOptions:b,recordCanvas:x,inlineImages:E,onSerialize:e=>{Md(e,Bp)&&q.addIframe(e),Rd(e,Bp)&&z.trackLinkElement(e),Pd(e)&&G.addShadowRoot(md.shadowRoot(e),document)},onIframeLoad:(e,t)=>{q.attachIframe(e,t),G.observeAttachShadow(e)},onStylesheetLoad:(e,t)=>{z.attachLinkElement(e,t)},keepIframeSrcFn:L});if(!t)return console.warn("Failed to snapshot the document");Dp({type:Bd.FullSnapshot,data:{node:t,initialOffset:Sd(window)}},e),tp.forEach((e=>e.unlock())),document.adoptedStyleSheets&&document.adoptedStyleSheets.length>0&&z.adoptStyleSheets(document.adoptedStyleSheets,Bp.getId(document))};try{const e=[],t=e=>{var t;return ep(dp)({mutationCb:_,mousemoveCb:(e,t)=>Dp({type:Bd.IncrementalSnapshot,data:{source:t,positions:e}}),mouseInteractionCb:e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.MouseInteraction,...e}}),scrollCb:U,viewportResizeCb:e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.ViewportResize,...e}}),inputCb:e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.Input,...e}}),mediaInteractionCb:e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.MediaInteraction,...e}}),styleSheetRuleCb:e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.StyleSheetRule,...e}}),styleDeclarationCb:e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.StyleDeclaration,...e}}),canvasMutationCb:H,fontCb:e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.Font,...e}}),selectionCb:e=>{Dp({type:Bd.IncrementalSnapshot,data:{source:_d.Selection,...e}})},customElementCb:e=>{Dp({type:Bd.IncrementalSnapshot,data:{source:_d.CustomElement,...e}})},blockClass:r,ignoreClass:a,ignoreSelector:s,maskTextClass:l,maskTextSelector:c,maskInputOptions:D,inlineStylesheet:u,sampling:y,recordDOM:k,recordCanvas:x,inlineImages:E,userTriggeredOnInput:I,collectFonts:O,doc:e,maskInputFn:f,maskTextFn:m,keepIframeSrcFn:L,blockSelector:i,slimDOMOptions:N,dataURLOptions:b,mirror:Bp,iframeManager:q,stylesheetManager:z,shadowDomManager:G,processedNodeManager:W,canvasManager:jp,ignoreCSSAttributes:A,plugins:(null==(t=null==T?void 0:T.filter((e=>e.observer)))?void 0:t.map((e=>({observer:e.observer,options:e.options,callback:t=>Dp({type:Bd.Plugin,data:{plugin:e.name,payload:t}})}))))||[]},g)};q.addLoadListener((n=>{try{e.push(t(n.contentDocument))}catch(o){console.warn(o)}}));const n=()=>{Np(),e.push(t(document)),Fp=!0};return"interactive"===document.readyState||"complete"===document.readyState?n():(e.push(gd("DOMContentLoaded",(()=>{Dp({type:Bd.DomContentLoaded,data:{}}),"DOMContentLoaded"===C&&n()}))),e.push(gd("load",(()=>{Dp({type:Bd.Load,data:{}}),"load"===C&&n()}),window))),()=>{e.forEach((e=>e())),W.destroy(),Fp=!1,Qd=void 0}}catch(J){console.warn(J)}}var Up,Hp;function zp(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return qp(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return qp(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0,r=function(){};return{s:r,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){s=!0,i=e},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw i}}}}function qp(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n{if(!Fp)throw new Error("please add custom event after start recording");Dp({type:Bd.Custom,data:{tag:e,payload:t}})},_p.freezePage=()=>{tp.forEach((e=>e.freeze()))},_p.takeFullSnapshot=e=>{if(!Fp)throw new Error("please take full snapshot after start recording");Np(e)},_p.mirror=Bp,(Hp=Up||(Up={}))[Hp.NotStarted=0]="NotStarted",Hp[Hp.Running=1]="Running",Hp[Hp.Stopped=2]="Stopped";var Yp=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),Zp(this,"startDate",void 0),Zp(this,"events",[]),Zp(this,"bufferSize",0),Zp(this,"stopFunction",void 0),Zp(this,"customOptions",{})}var t,n,o;return t=e,o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],(n=[{key:"setOptions",value:function(e){this.customOptions=e}},{key:"start",value:function(){this.stop(),this.startDate=Date.now();var e=this.events;try{this.stopFunction=_p(Vp(Vp(Vp({},{inlineStylesheet:!0,blockClass:"gl-block",ignoreClass:"gl-ignore",maskTextClass:"gl-mask",dataURLOptions:{quality:.7},recordCanvas:!1,sampling:{scroll:150,mouseInteraction:{MouseUp:!1,MouseDown:!1,Click:!0,ContextMenu:!0,DblClick:!0,Focus:!0,Blur:!0,TouchStart:!0,TouchEnd:!1}},collectFonts:!1,recordCrossOriginIframes:!1}),this.customOptions),{},{emit:function(t){var n=function(e){var t=JSON.stringify(e);if(t.length>4e6){var n,o=/data:([\w\/\-\.]+);(\w+),([^)"]*)/gim,r=zp(t.matchAll(o));try{for(r.s();!(n=r.n()).done;){var i=n.value;t="image/"===i[1].toLocaleLowerCase().slice(0,6)?t.replace(i[0],"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAQSURBVHgBAQUA+v8ABRg5/wHSAVZN1mnaAAAAAElFTkSuQmCC"):t.replace(i[0],"")}}catch(Hm){r.e(Hm)}finally{r.f()}}return{event:JSON.parse(t),size:t.length}}(t).event;e.push(n)}}))}catch(t){console.error(t)}}},{key:"stop",value:function(){this.stopFunction&&this.stopFunction(),this.startDate=void 0,this.events=[],this.bufferSize=0}},{key:"getReplayData",value:function(){return{startDate:this.startDate,events:this.events,baseUrl:window.location.origin,width:window.innerWidth,height:window.innerHeight,isMobile:w(),type:"rrweb"}}}])&&Jp(t.prototype,n),o&&Jp(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Xp(e){return Xp="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Xp(e)}function $p(e,t){for(var n=0;nthis.startPoint.x&&(r=this.startPoint.x),t.y>this.startPoint.y&&(i=this.startPoint.y),this.path.setAttributeNS(null,"x",r),this.path.setAttributeNS(null,"y",i),this.path.setAttributeNS(null,"width",n),this.path.setAttributeNS(null,"height",o)}}},{key:"mouseDownRect",value:function(e){this.path=document.createElementNS("http://www.w3.org/2000/svg","rect"),this.path.setAttribute("fill","none"),this.path.setAttribute("stroke",this.color),this.path.setAttribute("stroke-linecap","round"),this.path.setAttribute("stroke-width",this.strokeWidthRect),this.startPoint=this.getMousePosition(e),this.appendPathToSvg(this.path)}},{key:"mouseDownPen",value:function(e){var t=this.color+"AA",n=this.strokeWidth;"blur"===this.tool&&(t="#000000",n=40),this.path=document.createElementNS("http://www.w3.org/2000/svg","path"),this.path.setAttribute("fill","none"),this.path.setAttribute("stroke",t),this.path.setAttribute("stroke-linecap","round"),this.path.setAttribute("stroke-width",n),this.buffer=[];var o=this.getMousePosition(e);this.appendToBuffer(o),this.strPath="M"+o.x+" "+o.y,this.path.setAttribute("d",this.strPath),this.appendPathToSvg(this.path)}},{key:"setTool",value:function(e){this.tool=e}},{key:"setColor",value:function(e){this.color=e}},{key:"getMousePosition",value:function(e){return e.touches&&e.touches.length>0?{x:e.touches[0].clientX,y:e.touches[0].clientY}:{x:e.clientX,y:e.clientY}}},{key:"getAveragePoint",value:function(e){var t=this.buffer.length;if(t%2==1||t>=this.bufferSize){var n,o,r=0,i=0,a=0;for(o=e;othis.bufferSize;)this.buffer.shift()}},{key:"appendPathToSvg",value:function(e){this.svgElement.appendChild(e),this.pathBuffer.push(e),this.rerender()}},{key:"removeLastAddedPathFromSvg",value:function(){this.pathBuffer.length<=0||!this.svgElement||(this.svgElement.removeChild(this.pathBuffer[this.pathBuffer.length-1]),this.pathBuffer.pop(),this.rerender())}},{key:"fadeOutToolbar",value:function(){var e=document.querySelector(".bb-capture-toolbar");e&&(e.style.opacity=0,e.style.pointerEvents="none")}},{key:"fadeInToolbar",value:function(){var e=document.querySelector(".bb-capture-toolbar");e&&(e.style.opacity=1,e.style.pointerEvents="auto")}}],n&&$p(t.prototype,n),o&&$p(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function nh(e){return nh="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},nh(e)}function oh(e,t){for(var n=0;n\n \n
'.concat(p("dismiss"),"
\n
").concat(p("rect"),'
\n
\n
\n ').concat(p("drag"),"\n
\n ").concat("capture"===this.type?'
\n '.concat(p("recorderon"),"\n ").concat(p("recorderoff"),'\n \n
\n
\n ').concat(p("mic"),'\n \n
\n
2:00
\n
\n
\n ').concat(p("pointer"),"\n
"):"",'\n
\n ').concat(p("rect"),'\n
\n
\n ').concat(p("pen"),'\n
\n
\n ').concat(p("blur"),'\n
\n
\n
\n ').concat(gh.translateText("pickAColor"),'\n
\n
\n ').concat(p("undo"),'\n ').concat(gh.translateText("undo"),"\n
\n ").concat("capture"!==this.type?'
'.concat(gh.translateText("next"),"
"):"",'\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
').concat(gh.translateText("retry"),'
\n
').concat(gh.translateText("next"),"
\n
\n
\n
\n "),document.body.appendChild(e),e.setAttribute("dir",gh.getInstance().isRTLLayout?"rtl":"ltr")}},{key:"unregisterListeners",value:function(){this.escListener&&document.removeEventListener("keydown",this.escListener),this.pageLeaveListener&&window.removeEventListener("beforeunload",this.pageLeaveListener)}},{key:"registerListeners",value:function(){var e=this;this.escListener=function(t){var n=!1,o=!1;"key"in(t=t||window.event)&&(n="Escape"===t.key,o="Enter"===t.key),n&&e.dismiss(),"screenshot"===e.type&&o&&e.showNextStep()},document.addEventListener("keydown",this.escListener),this.pageLeaveListener=function(e){e.preventDefault(),e.returnValue=""},window.addEventListener("beforeunload",this.pageLeaveListener)}},{key:"show",value:function(e){this.callback=e,this.registerListeners(),this.hideWidgetUI(),this.createEditorUI(),this.setupMousePointer(),"screenshot"===this.type?(_m.getInstance().setGlobalDataItem("snapshotPosition",{x:window.scrollX,y:window.scrollY}),ah.disableScroll()):this.setupScreenRecording(),this.screenDrawer=new th(this.captureScreenDrawerRerender.bind(this)),this.setupColorPicker(),this.setupToolbar()}},{key:"setupColorPicker",value:function(){for(var t=this,n=document.querySelector(".bb-capture-toolbar-item-selectedcolor"),o=document.querySelectorAll(".bb-capture-toolbar-item-color"),r=document.querySelector(".bb-capture-toolbar-item-colorpicker"),i=function(){var i=o[a],s=i.getAttribute("data-color");i.style.backgroundColor=s,i.onclick=function(){i&&(t.screenDrawer.setColor(s),r&&(r.style.display="none"),n.style.backgroundColor=i.style.backgroundColor,e.setPenColor(s))}},a=0;a0?o.classList.remove(e):o.classList.add(e))}}},{key:"captureRenderer",value:function(){if(this.screenRecorder){this.screenRecorder.file&&_m.getInstance().setGlobalDataItem("screenRecordingData",this.screenRecorder.file);var e="bb-capture-editor-item-inactive",t=document.querySelector(".bb-capture-toolbar-item-timer"),n=document.querySelectorAll(".bb-capture-toolbar-item"),o=document.querySelector(".bb-tooltip-screen-recording"),r=document.querySelector(".bb-tooltip-audio-recording"),i=document.querySelector(".bb-capture-editor"),a="bb-capture-editor-recording",s="bb-capture-editor-notrecording";this.screenRecorder.isRecording?(i.classList.add(a),i.classList.remove(s)):(i.classList.add(s),i.classList.remove(a));var l=document.querySelector(".bb-capture-toolbar");document.querySelector(".bb-capture-preview").style.display=this.screenRecorder.file?"flex":"none",l.style.display=this.screenRecorder.file?"none":"flex";for(var c=0;c0){var t=e.filter((function(e){return new Date(e.createdAt)>new Date(Date.now()-36e5)}));t.length>2?this.notifications=t.splice(0,t.length-2):this.notifications=t,this.renderNotifications()}}catch(n){}}},{key:"setNotificationCount",value:function(e){this.unreadCount=e,this.updateTabBarNotificationCount(),a.getInstance().updateNotificationBadge(this.unreadCount)}},{key:"showNotification",value:function(e){this.notificationContainer&&e&&e.data&&(this.notifications.find((function(t){return e.outbound===t.outbound}))||(this.notifications.push(e),e.sound&&Yh.ping()),this.notifications.length>2&&this.notifications.shift(),I(this.unreadNotificationsKey,this.notifications),this.renderNotifications())}},{key:"renderNotifications",value:function(){var e=this;if(this.notificationContainer){this.clearAllNotifications(!0);var t=document.createElement("div");t.onclick=function(){e.clearAllNotifications(),e.currentNewsIndex=0},t.className="gleap-notification-close",t.innerHTML=p("dismiss"),this.notificationContainer.appendChild(t);var n=this.notifications.filter((function(e){return e.data.news})).sort((function(e,t){return new Date(e.createdAt)-new Date(t.createdAt)})),o=this.notifications.filter((function(e){return!e.data.news}));if(n.length>0){var r=this.currentNewsIndex1){var m=document.createElement("div");m.className="gleap-news-pagination";var g=document.createElement("span");g.className="gleap-news-page-indicator",g.innerText="".concat(r+1," / ").concat(n.length),m.appendChild(g);var v=document.createElement("button");v.className="gleap-news-next-button",r\n
\n
\n '.concat(t.data.text,'\n
\n
\n
\n
\n
\n \n \n \n ').concat(t.data.nextStepTitle,"\n
\n
\n ")}else r.className="gleap-notification-item",r.innerHTML="\n ".concat(t.data.sender&&t.data.sender.profileImageUrl&&''),'\n
\n ').concat(t.data.sender?'
\n '.concat(t.data.sender.name,"\n
"):"",'\n
').concat(n,"
\n
");e.notificationContainer.appendChild(r)},b=0;b0||o.length>0||this.clearAllNotifications(!0)}}},{key:"openNews",value:function(e){e.data.news?_m.openNewsArticle(e.data.news.id,!0):_m.open()}},{key:"renderDescription",value:function(e){var t=e.data,n=t.previewText,o=t.sender;return n&&n.length>0?n:o?'\n
\n '.concat(o.profileImageUrl?'').concat(o.name,''):"","\n ").concat(o.name,"\n
\n "):""}},{key:"clearAllNotifications",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(this.notificationContainer)for(e||(this.notifications=[],this.currentNewsIndex=0,I(this.unreadNotificationsKey,this.notifications));this.notificationContainer.firstChild;)this.notificationContainer.removeChild(this.notificationContainer.firstChild)}},{key:"updateContainerStyle",value:function(){if(this.notificationContainer){var e=dt.getInstance().getFlowConfig(),t="gleap-notification-container--left",n="gleap-notification-container--no-button";this.notificationContainer.classList.remove(t),this.notificationContainer.classList.remove(n),e.feedbackButtonPosition!==a.FEEDBACK_BUTTON_CLASSIC_LEFT&&e.feedbackButtonPosition!==a.FEEDBACK_BUTTON_BOTTOM_LEFT||this.notificationContainer.classList.add(t),null===a.getInstance().buttonHidden?e.feedbackButtonPosition===a.FEEDBACK_BUTTON_NONE&&this.notificationContainer.classList.add(n):a.getInstance().buttonHidden&&this.notificationContainer.classList.add(n),this.notificationContainer.setAttribute("dir",gh.getInstance().isRTLLayout?"rtl":"ltr")}}}],o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],n&&Th(t.prototype,n),o&&Th(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Rh(e){return Rh="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Rh(e)}function Ph(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Dh(e){for(var t=1;t'),document.body.appendChild(t),this.bannerContainer=t}},{key:"sendMessage",value:function(e){try{var t=document.querySelector(".gleap-b-frame");t&&t.contentWindow&&t.contentWindow.postMessage(JSON.stringify(Dh(Dh({},e),{},{type:"banner"})),"*")}catch(n){}}},{key:"showBanner",value:function(e){this.injectBannerUI(e)}}])&&Nh(t.prototype,n),o&&Nh(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function _h(e){return _h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},_h(e)}function Uh(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Hh(e){for(var t=1;t\n
\n \n
\n '),document.body.appendChild(n),this.modalContainer=n,this.modalBackdropClickListener=this.modalContainer.querySelector(".gleap-modal-backdrop").addEventListener("click",(function(){var e,n;(null===(e=null===(n=t.modalData)||void 0===n?void 0:n.showCloseButton)||void 0===e||e)&&t.hideModal()})),document.body.classList.add("gleap-modal-open")}},{key:"_postMessage",value:function(e){try{var t=this.modalContainer.querySelector(".gleap-modal-frame");null!=t&&t.contentWindow&&t.contentWindow.postMessage(JSON.stringify(Hh(Hh({},e),{},{type:"modal"})),this.modalUrl)}catch(Hm){}}},{key:"showModal",value:function(e){e&&e.config&&this._injectModalUI(e.config)}},{key:"hideModal",value:function(){this.modalContainer&&(this.modalBackdropClickListener&&this.modalContainer.querySelector(".gleap-modal-backdrop").removeEventListener("click",this.modalBackdropClickListener),document.body.removeChild(this.modalContainer),this.modalContainer=null,document.body.classList.remove("gleap-modal-open"))}}])&&zh(t.prototype,n),o&&zh(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Vh(e){return Vh="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Vh(e)}function Jh(e,t){for(var n=0;n=a-i;++s)n[i]=t[s],rf(e,t,n,s+1,r,i+1,a);else e.push(n.slice(0,i).join(""))}function af(e){return function(e){if(Array.isArray(e))return sf(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return sf(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return sf(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function sf(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){s=!0,i=e},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw i}}}}function ff(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n1&&void 0!==arguments[1]?arguments[1]:["id","class","length"];return af(e.attributes).reduce((function(e,n){return t.indexOf(n.nodeName)>-1||e.push("[".concat(n.nodeName,'="').concat(n.value,'"]')),e}),[])}(e,n)},Class:of,ID:nf};return t.reduce((function(t,n){return t[n]=o[n](e),t}),{})}function gf(e,t){try{var n=e.parentNode.querySelectorAll(t);return 1===n.length&&n[0]===e}catch(o){return!1}}function vf(e,t){return t.find(gf.bind(null,e))}function yf(e,t,n){var o=function(e,t){for(var n=[],o=e.length,r=[],i=1;i<=t;++i)rf(n,e,r,0,o-1,0,i);return n}(t,3),r=vf(e,o);return Boolean(r)||Boolean(n)&&(r=vf(e,o=o.map((function(e){return n+e}))),Boolean(r))?r:null}function bf(e,t,n,o){var r,i=mf(e,t,n);o&&o instanceof RegExp&&(i.ID=o.test(i.ID)?null:i.ID,i.Class=i.Class.filter((function(e){return!o.test(e)})));var a,s=hf(t);try{for(s.s();!(a=s.n()).done;){var l=a.value,c=i.ID,u=i.Tag,d=i.Class,p=i.Attributes,h=i.NthChild;switch(l){case"ID":if(Boolean(c)&&gf(e,c))return c;break;case"Tag":if(Boolean(u)&&gf(e,u))return u;break;case"Class":if(Boolean(d)&&d.length&&(r=yf(e,d,u)))return r;break;case"Attributes":if(Boolean(p)&&p.length&&(r=yf(e,p,u)))return r;break;case"NthChild":if(Boolean(h))return h}}}catch(Hm){s.e(Hm)}finally{s.f()}return"*"}function wf(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=n.selectorTypes,r=void 0===o?["ID","Class","Tag","NthChild"]:o,i=n.attributesToIgnore,a=void 0===i?["id","class","length"]:i,s=n.excludeRegex,l=void 0===s?null:s,c=[],u=function(e){for(var t=[],n=e;cf(n);)t.push(n),n=n.parentNode;return t}(e),d=hf(u);try{for(d.s();!(t=d.n()).done;){var p=bf(t.value,r,a,l);Boolean(p)&&c.push(p)}}catch(Hm){d.e(Hm)}finally{d.f()}for(var h=[],f=0,m=c;f ");if(pf(e,v))return v}return null}function kf(e){return kf="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},kf(e)}function xf(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Sf(e,t){for(var n=0;n0&&void 0!==arguments[0]&&arguments[0])||o(t.gleapCollapseUI,e)&&o(t.gleapFrameContainer,n))&&(t.gleapCollapseUI&&t.gleapCollapseUI.classList.toggle(e),t.gleapFrameContainer&&t.gleapFrameContainer.classList.toggle(n))})),_f(this,"injectCollapseUI",(function(){if(!t.injectedCollapseUI){t.injectedCollapseUI=!0;var e=document.createElement("div");e.className="gleap-admin-collapse-ui",e.innerHTML='
\n '.concat(p("arrowdown"),"\n
"),document.body.appendChild(e),t.gleapCollapseUI=e,e.addEventListener("click",(function(e){e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t.toggleCollapseUI()}))}})),_f(this,"injectFrame",(function(){var e;if(!t.injectedFrame){t.injectedFrame=!0;var n=document.createElement("div");n.className="gleap-admin-frame-container",n.innerHTML=''),document.body.appendChild(n),t.gleapFrameContainer=n,t.gleapFrame=document.querySelector(".gleap-admin-frame")}}))}var t,n,o;return t=e,o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],(n=[{key:"logCurrentPage",value:function(){var e=window.location.href;e&&e!==this.lastUrl&&(this.lastUrl=e,this.sendMessageToTourBuilder({name:"page-changed",data:{page:e}}))}},{key:"startPageListener",value:function(){var e=this;setInterval((function(){e.logCurrentPage()}),1e3)}},{key:"initAdminHelper",value:function(){var e=this;mm.getInstance().disable(),e.adminHelper=new Df;try{e.adminHelper.onElementPicked=function(t){e.toggleCollapseUI(!0),e.sendMessageToTourBuilder({name:"element-picked",data:{selector:t}})}}catch(t){console.log(t)}e.injectFrame(),e.injectCollapseUI(),e.setFrameHeight("loading")}},{key:"setFrameHeight",value:function(e){if(this.gleapFrameContainer){var t="";t="picker"===e||"navigate"===e?"65px":"editor"===e?"100vh":"0px",this.gleapFrameContainer.style.height=t}}},{key:"start",value:function(){var e=this;if("undefined"!=typeof window&&!window.gleapAdminDisabled){var t=this;window.addEventListener("message",(function(n){if("https://app.gleap.io"===n.origin)try{var o=JSON.parse(n.data);if("admin"===o.type&&("load"===o.name&&(t.configData=o.data,t.initAdminHelper()),"smartlink-search-result"===o.name&&e.sendMessageToTourBuilder({name:"smartlink-search-result",data:o.data}),"translate-complete"===o.name&&e.sendMessageToTourBuilder({name:"translate-complete",data:o.data})),"tourbuilder"===o.type){var r;if("loaddata"===o.name&&e.sendMessageToTourBuilder({name:"data",data:Ff(Ff({},t.configData),{},{currentPage:window.location.href})}),"highlight-element"===o.name&&(document.querySelectorAll(".gleap-admin-highlight").forEach((function(e){e.classList.remove("gleap-admin-highlight")})),null!=o&&null!==(r=o.data)&&void 0!==r&&r.selector)){var i,a=document.querySelector(null==o||null===(i=o.data)||void 0===i?void 0:i.selector);a&&a.classList.add("gleap-admin-highlight")}if("smartlink-search"===o.name&&e.sendMessage({name:"smartlink-search",data:o.data}),"product-tour-started"===o.name&&e.sendMessage({name:"product-tour-started",data:o.data}),"translate"===o.name&&e.sendMessage({name:"translate",data:o.data}),"save"===o.name&&e.sendMessage({name:"save",data:o.data}),"update-steps"===o.name&&e.sendMessage({name:"update-steps",data:o.data}),"click"===o.name)try{document.querySelector(o.data.selector).click()}catch(s){console.log(s)}"status-changed"===o.name&&(t.status=o.data,e.setFrameHeight(t.status),t.adminHelper.stopPicker(),"picker"===t.status&&t.adminHelper.startPicker())}}catch(l){}})),this.sendMessage({name:"init"}),this.startPageListener()}}},{key:"sendMessage",value:function(e){try{window&&window.opener&&window.opener.postMessage(JSON.stringify(Ff(Ff({},e),{},{type:"admin"})),"*")}catch(t){}}},{key:"sendMessageToTourBuilder",value:function(e){try{this.gleapFrame&&this.gleapFrame.contentWindow&&this.gleapFrame.contentWindow.postMessage(JSON.stringify(Ff(Ff({},e),{},{type:"tourbuilder"})),"*")}catch(t){}}}])&&Bf(t.prototype,n),o&&Bf(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function zf(e){return zf="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},zf(e)}function qf(e){return function(e){if(Array.isArray(e))return Wf(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return Wf(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Wf(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Wf(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n0&&void 0!==arguments[0]?arguments[0]:{})}function n(t){return t?e[t]:e}function o(e,t,n,o){return(e/=o/2)<1?n/2*e*e+t:-n/2*(--e*(e-2)-1)+t}function r(e){var t='a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type="text"]:not([disabled]), input[type="radio"]:not([disabled]), input[type="checkbox"]:not([disabled]), select:not([disabled])';return e.flatMap((function(e){var n=e.matches(t),o=Array.from(e.querySelectorAll(t));return[].concat(qf(n?[e]:[]),o)})).filter((function(e){return"none"!==getComputedStyle(e).pointerEvents&&function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)}(e)}))}function i(e){if(e&&!function(e){var t=e.getBoundingClientRect();return t.top>=0&&t.left>=0&&t.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&t.right<=(window.innerWidth||document.documentElement.clientWidth)}(e)){var t=n("smoothScroll");e.scrollIntoView({behavior:!t||a(e)?"auto":"smooth",inline:"center",block:"center"})}}function a(e){if(e&&e.parentElement){var t=e.parentElement;return t.scrollHeight>t.clientHeight}}var s={};function l(e,t){s[e]=t}function c(e){return e?s[e]:s}function u(){s={}}var d={};function p(e,t){d[e]=t}function h(e){var t;null==(t=d[e])||t.call(d)}function f(e){if(e){var t=e.getBoundingClientRect(),n={x:t.x,y:t.y,width:t.width,height:t.height};l("__activeStagePosition",n),g(n)}}function m(e){var t=function(e){var t=window.innerWidth,o=window.innerHeight,r=document.createElementNS("http://www.w3.org/2000/svg","svg");r.classList.add("gleap-tour-overlay","gleap-tour-overlay-animated"),r.setAttribute("viewBox","0 0 ".concat(t," ").concat(o)),r.setAttribute("xmlSpace","preserve"),r.setAttribute("xmlnsXlink","http://www.w3.org/1999/xlink"),r.setAttribute("version","1.1"),r.setAttribute("preserveAspectRatio","xMinYMin slice"),r.style.fillRule="evenodd",r.style.clipRule="evenodd",r.style.strokeLinejoin="round",r.style.strokeMiterlimit="2",r.style.zIndex="10000",r.style.position="fixed",r.style.top="0",r.style.left="0",r.style.width="100%",r.style.height="100%";var i=document.createElementNS("http://www.w3.org/2000/svg","path");return i.setAttribute("d",v(e)),i.style.fill=n("overlayColor")||"rgb(0,0,0)",i.style.opacity="".concat(n("overlayOpacity")),i.style.pointerEvents="auto",i.style.cursor="auto",r.appendChild(i),r}(e);document.body.appendChild(t),S(t,(function(e){"path"===e.target.tagName&&h("overlayClick")})),l("__overlaySvg",t)}function g(e){var t=c("__overlaySvg");if(t){var n=t.firstElementChild;if("path"!==(null==n?void 0:n.tagName))throw new Error("no path element found in stage svg");n.setAttribute("d",v(e))}else m(e)}function v(e){var t=window.innerWidth,o=window.innerHeight,r=n("stagePadding")||0,i=n("stageRadius")||0,a=e.width+2*r,s=e.height+2*r,l=Math.min(i,a/2,s/2),c=Math.floor(Math.max(l,0)),u=e.x-r+c,d=e.y-r,p=a-2*c,h=s-2*c;return"M".concat(t,",0L0,0L0,").concat(o,"L").concat(t,",").concat(o,"L").concat(t,",0Z\n M").concat(u,",").concat(d," h").concat(p," a").concat(c,",").concat(c," 0 0 1 ").concat(c,",").concat(c," v").concat(h," a").concat(c,",").concat(c," 0 0 1 -").concat(c,",").concat(c," h-").concat(p," a").concat(c,",").concat(c," 0 0 1 -").concat(c,",-").concat(c," v-").concat(h," a").concat(c,",").concat(c," 0 0 1 ").concat(c,",-").concat(c," z")}function y(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:5e3,r=e.element,a=r;if("string"==typeof a)try{a=document.querySelector(r)}catch(u){var s=r.replace(/(#[^#\s]+)/g,(function(e){return e.replace(/:/g,"\\:")}));a=document.querySelector(s)}if(r&&!a&&t>=0)setTimeout((function(){C(),y(e,t-100)}),100);else{if(!a&&("INPUT"===e.mode||"CLICK"===e.mode))return n("onElementNotFound")(e);a||(a=function(){var e=document.getElementById("gleap-tour-dummy-element");if(e)return e;var t=document.createElement("div");return t.id="gleap-tour-dummy-element",t.style.width="0",t.style.height="0",t.style.pointerEvents="none",t.style.opacity="0",t.style.position="fixed",t.style.top="50%",t.style.left="50%",document.body.appendChild(t),t}()),function(e,t){var r,a,s=400,u=Date.now(),d=c("__activeStep"),p=c("__activeElement")||e,h=!p||p===e,m="gleap-tour-dummy-element"===e.id,v="gleap-tour-dummy-element"===p.id,y=n("animate"),b=t.onHighlightStarted||n("onHighlightStarted"),w=(null==t?void 0:t.onHighlighted)||n("onHighlighted"),k=(null==d?void 0:d.onDeselected)||n("onDeselected"),x=n(),S=c();!h&&k&&k(v?void 0:p,d,{config:x,state:S});b&&b(m?void 0:e,t,{config:x,state:S});var O=!h&&y,E=!1;C(),l("previousStep",d),l("previousElement",p),l("activeStep",t),l("activeElement",e);var T=function r(){if(c("__transitionCallback")===r){var i=Date.now()-u,a=s-i<=s/2;t.popover&&a&&!E&&O&&(I(e,t),E=!0),n("animate")&&i0&&P[0].focus()}function O(){var e=c("popover");if(null==e?void 0:e.wrapper){var t=e.wrapper.getBoundingClientRect(),o=n("stagePadding")||0,r=n("popoverOffset")||0;return{width:t.width+o+r,height:t.height+o+r,realWidth:t.width,realHeight:t.height}}}function E(e,t){var n=t.elementDimensions,o=t.popoverDimensions,r=t.popoverPadding,i=t.popoverArrowDimensions;return"start"===e?Math.max(Math.min(n.top-r,window.innerHeight-o.realHeight-i.width),i.width):"end"===e?Math.max(Math.min(n.top-(null==o?void 0:o.realHeight)+n.height+r,window.innerHeight-(null==o?void 0:o.realHeight)-i.width),i.width):"center"===e?Math.max(Math.min(n.top+n.height/2-(null==o?void 0:o.realHeight)/2,window.innerHeight-(null==o?void 0:o.realHeight)-i.width),i.width):0}function T(e,t){var n=t.elementDimensions,o=t.popoverDimensions,r=t.popoverPadding,i=t.popoverArrowDimensions;return"start"===e?Math.max(Math.min(n.left-r,window.innerWidth-o.realWidth-i.width),i.width):"end"===e?Math.max(Math.min(n.left-(null==o?void 0:o.realWidth)+n.width+r,window.innerWidth-(null==o?void 0:o.realWidth)-i.width),i.width):"center"===e?Math.max(Math.min(n.left+n.width/2-(null==o?void 0:o.realWidth)/2,window.innerWidth-(null==o?void 0:o.realWidth)-i.width),i.width):0}function L(e,t){var o=c("popover");if(o){var r=(null==t?void 0:t.popover)||{},i=r.align,a=void 0===i?"start":i,s=r.side,l=void 0===s?"left":s,u=a,d="gleap-tour-dummy-element"===e.id?"over":l,p=n("stagePadding")||0,h=O(),f=o.arrow.getBoundingClientRect(),m=e.getBoundingClientRect(),g=m.top-h.height,v=g>=0,y=window.innerHeight-(m.bottom+h.height),b=y>=0,w=m.left-h.width,k=w>=0,x=window.innerWidth-(m.right+h.width),S=x>=0,C=!(v||b||k||S),I=d;if("top"===d&&v?S=k=b=!1:"bottom"===d&&b?S=k=v=!1:"left"===d&&k?S=v=b=!1:"right"===d&&S&&(k=v=b=!1),"over"===d){var L=window.innerWidth/2-h.realWidth/2,A=window.innerHeight/2-h.realHeight/2;o.wrapper.style.left="".concat(L,"px"),o.wrapper.style.right="auto",o.wrapper.style.top="".concat(A,"px"),o.wrapper.style.bottom="auto"}else if(C){var M=window.innerWidth/2-(null==h?void 0:h.realWidth)/2;o.wrapper.style.left="".concat(M,"px"),o.wrapper.style.right="auto",o.wrapper.style.bottom="".concat(10,"px"),o.wrapper.style.top="auto"}else if(k){var R=Math.min(w,window.innerWidth-(null==h?void 0:h.realWidth)-f.width),P=E(u,{elementDimensions:m,popoverDimensions:h,popoverPadding:p,popoverArrowDimensions:f});o.wrapper.style.left="".concat(R,"px"),o.wrapper.style.top="".concat(P,"px"),o.wrapper.style.bottom="auto",o.wrapper.style.right="auto",I="left"}else if(S){var D=Math.min(x,window.innerWidth-(null==h?void 0:h.realWidth)-f.width),N=E(u,{elementDimensions:m,popoverDimensions:h,popoverPadding:p,popoverArrowDimensions:f});o.wrapper.style.right="".concat(D,"px"),o.wrapper.style.top="".concat(N,"px"),o.wrapper.style.bottom="auto",o.wrapper.style.left="auto",I="right"}else if(v){var j=Math.min(g,window.innerHeight-h.realHeight-f.width),F=T(u,{elementDimensions:m,popoverDimensions:h,popoverPadding:p,popoverArrowDimensions:f});o.wrapper.style.top="".concat(j,"px"),o.wrapper.style.left="".concat(F,"px"),o.wrapper.style.bottom="auto",o.wrapper.style.right="auto",I="top"}else if(b){var B=Math.min(y,window.innerHeight-(null==h?void 0:h.realHeight)-f.width),_=T(u,{elementDimensions:m,popoverDimensions:h,popoverPadding:p,popoverArrowDimensions:f});o.wrapper.style.left="".concat(_,"px"),o.wrapper.style.bottom="".concat(B,"px"),o.wrapper.style.top="auto",o.wrapper.style.right="auto",I="bottom"}C?o.arrow.classList.add("gleap-tour-popover-arrow-none"):function(e,t,n){var o=c("popover");if(!o)return;var r=n.getBoundingClientRect(),i=O(),a=o.arrow,s=i.width,l=window.innerWidth,u=r.width,d=r.left,p=i.height,h=window.innerHeight,f=r.top,m=r.height;a.className="gleap-tour-popover-arrow";var g=t,v=e;"top"===t?(d+u<=0?(g="right",v="end"):d+u-s<=0&&(g="top",v="start"),d>=l?(g="left",v="end"):d+s>=l&&(g="top",v="end")):"bottom"===t?(d+u<=0?(g="right",v="start"):d+u-s<=0&&(g="bottom",v="start"),d>=l?(g="left",v="start"):d+s>=l&&(g="bottom",v="end")):"left"===t?(f+m<=0?(g="bottom",v="end"):f+m-p<=0&&(g="left",v="start"),f>=h?(g="top",v="end"):f+p>=h&&(g="left",v="end")):"right"===t&&(f+m<=0?(g="bottom",v="start"):f+m-p<=0&&(g="right",v="start"),f>=h?(g="top",v="start"):f+p>=h&&(g="right",v="end"));g?(a.classList.add("gleap-tour-popover-arrow-side-".concat(g)),a.classList.add("gleap-tour-popover-arrow-align-".concat(v))):a.classList.add("gleap-tour-popover-arrow-none")}(u,I,e)}}return function(){function e(){n("allowClose")&&f()}function o(){var e=c("activeIndex"),t=n("steps")||[];if(void 0!==e){var o=e+1;t[o]?h(o):f()}}function r(){var e=c("activeIndex"),t=n("steps")||[];if(void 0!==e){var o=e-1;t[o]?h(o):f()}}function i(){var e;if(!c("__transitionCallback")){var t=c("activeIndex"),o=c("__activeStep"),i=c("__activeElement");if("CLICK"!==o.mode)if(void 0!==t&&void 0!==o)if(void 0!==c("activeIndex")){var a=(null==(e=o.popover)?void 0:e.onPrevClick)||n("onPrevClick");if(a)return a(i,o,{config:n(),state:c()});r()}}}function a(){var e;if(!c("__transitionCallback")){var t=c("activeIndex"),r=c("__activeStep"),i=c("__activeElement");if("CLICK"!==r.mode&&void 0!==t&&void 0!==r){var a=(null==(e=r.popover)?void 0:e.onNextClick)||n("onNextClick");if(a)return a(i,r,{config:n(),state:c()});o()}}}function s(){c("isInitialized")||(l("isInitialized",!0),document.body.classList.add("gleap-tour-active",n("animate")?"gleap-tour-fade":"gleap-tour-simple"),window.addEventListener("keyup",x,!1),window.addEventListener("keydown",k,!1),window.addEventListener("resize",w),window.addEventListener("scroll",w),p("overlayClick",e),p("escapePress",e),p("arrowLeftPress",i),p("arrowRightPress",a))}function h(){var e,t,o,r,i,a,s,c,u=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,d=n("steps");if(!d)return console.error("No steps to drive through"),void f();if(d[u]){l("__activeOnDestroyed",document.activeElement),l("activeIndex",u);var p=d[u],m=d[u+1],g=d[u-1],v=(null==(e=p.popover)?void 0:e.doneBtnText)||n("doneBtnText")||"Done",b=n("allowClose"),w=void 0!==(null==(t=p.popover)?void 0:t.showProgress)?null==(o=p.popover)?void 0:o.showProgress:n("showProgress"),k=((null==(r=p.popover)?void 0:r.progressText)||n("progressText")||"{{current}} of {{total}}").replace("{{current}}","".concat(u+1)).replace("{{total}}","".concat(d.length)),x=(null==(i=p.popover)?void 0:i.showButtons)||n("showButtons"),S=["next","previous"].concat(qf(b?["close"]:[])).filter((function(e){return!(null==x?void 0:x.length)||x.includes(e)})),C=(null==(a=p.popover)?void 0:a.onNextClick)||n("onNextClick"),I=(null==(s=p.popover)?void 0:s.onPrevClick)||n("onPrevClick"),O=(null==(c=p.popover)?void 0:c.onCloseClick)||n("onCloseClick");y(Vf(Vf({},p),{},{popover:Vf({showButtons:S,nextBtnText:m?void 0:v,disableButtons:qf(g?[]:["previous"]),showProgress:w,progressText:k,onNextClick:C||function(){m?h(u+1):f()},onPrevClick:I||function(){h(u-1)},onCloseClick:O||function(){f()}},(null==p?void 0:p.popover)||{})}))}else f()}function f(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=c("__activeElement"),o=c("__activeStep"),r=c("__activeOnDestroyed"),i=n("onDestroyStarted");if(e&&i){i(!t||"gleap-tour-dummy-element"===(null==t?void 0:t.id)?void 0:t,o,{config:n(),state:c()})}else{var a,s=(null==o?void 0:o.onDeselected)||n("onDeselected"),l=n("onDestroyed");if(document.body.classList.remove("gleap-tour-active","gleap-tour-fade","gleap-tour-simple"),window.removeEventListener("keyup",x),window.removeEventListener("resize",w),window.removeEventListener("scroll",w),function(){var e,t=c("popover");t&&(null==(e=t.wrapper.parentElement)||e.removeChild(t.wrapper))}(),function(){var e;null==(e=document.getElementById("gleap-tour-dummy-element"))||e.remove(),document.querySelectorAll(".gleap-tour-active-element").forEach((function(e){e.classList.remove("gleap-tour-active-element","gleap-tour-no-interaction"),e.removeAttribute("aria-haspopup"),e.removeAttribute("aria-expanded"),e.removeAttribute("aria-controls")}))}(),(a=c("__overlaySvg"))&&a.remove(),d={},u(),t&&o){var p="gleap-tour-dummy-element"===t.id;s&&s(p?void 0:t,o,{config:n(),state:c()}),l&&l(p?void 0:t,o,{config:n(),state:c()})}r&&r.focus()}}return t(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),{isActive:function(){return c("isInitialized")||!1},refresh:w,drive:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;s(),h(e)},setConfig:t,setSteps:function(e){u(),t(Vf(Vf({},n()),{},{steps:e}))},getConfig:n,getState:c,getActiveIndex:function(){return c("activeIndex")},isFirstStep:function(){return 0===c("activeIndex")},isLastStep:function(){var e=n("steps")||[],t=c("activeIndex");return void 0!==t&&t===e.length-1},getActiveStep:function(){return c("activeStep")},getActiveElement:function(){return c("activeElement")},getPreviousElement:function(){return c("previousElement")},getPreviousStep:function(){return c("previousStep")},moveNext:o,movePrevious:r,moveTo:function(e){(n("steps")||[])[e]?h(e):f()},hasNextStep:function(){var e=n("steps")||[],t=c("activeIndex");return void 0!==t&&e[t+1]},hasPreviousStep:function(){var e=n("steps")||[],t=c("activeIndex");return void 0!==t&&e[t-1]},highlight:function(e){s(),y(Vf(Vf({},e),{},{popover:e.popover?Vf({showButtons:[],showProgress:!1,progressText:""},e.popover):void 0}))},destroy:function(){f(!1)}}}}();const Kf=Zf;function Yf(e){return Yf="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Yf(e)}function Xf(){Xf=function(){return t};var e,t={},n=Object.prototype,o=n.hasOwnProperty,r=Object.defineProperty||function(e,t,n){e[t]=n.value},i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",s=i.asyncIterator||"@@asyncIterator",l=i.toStringTag||"@@toStringTag";function c(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,n){return e[t]=n}}function u(e,t,n,o){var i=t&&t.prototype instanceof v?t:v,a=Object.create(i.prototype),s=new A(o||[]);return r(a,"_invoke",{value:O(e,n,s)}),a}function d(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=u;var p="suspendedStart",h="suspendedYield",f="executing",m="completed",g={};function v(){}function y(){}function b(){}var w={};c(w,a,(function(){return this}));var k=Object.getPrototypeOf,x=k&&k(k(M([])));x&&x!==n&&o.call(x,a)&&(w=x);var S=b.prototype=v.prototype=Object.create(w);function C(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function I(e,t){function n(r,i,a,s){var l=d(e[r],e,i);if("throw"!==l.type){var c=l.arg,u=c.value;return u&&"object"==Yf(u)&&o.call(u,"__await")?t.resolve(u.__await).then((function(e){n("next",e,a,s)}),(function(e){n("throw",e,a,s)})):t.resolve(u).then((function(e){c.value=e,a(c)}),(function(e){return n("throw",e,a,s)}))}s(l.arg)}var i;r(this,"_invoke",{value:function(e,o){function r(){return new t((function(t,r){n(e,o,t,r)}))}return i=i?i.then(r,r):r()}})}function O(t,n,o){var r=p;return function(i,a){if(r===f)throw new Error("Generator is already running");if(r===m){if("throw"===i)throw a;return{value:e,done:!0}}for(o.method=i,o.arg=a;;){var s=o.delegate;if(s){var l=E(s,o);if(l){if(l===g)continue;return l}}if("next"===o.method)o.sent=o._sent=o.arg;else if("throw"===o.method){if(r===p)throw r=m,o.arg;o.dispatchException(o.arg)}else"return"===o.method&&o.abrupt("return",o.arg);r=f;var c=d(t,n,o);if("normal"===c.type){if(r=o.done?m:h,c.arg===g)continue;return{value:c.arg,done:o.done}}"throw"===c.type&&(r=m,o.method="throw",o.arg=c.arg)}}}function E(t,n){var o=n.method,r=t.iterator[o];if(r===e)return n.delegate=null,"throw"===o&&t.iterator.return&&(n.method="return",n.arg=e,E(t,n),"throw"===n.method)||"return"!==o&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+o+"' method")),g;var i=d(r,t.iterator,n.arg);if("throw"===i.type)return n.method="throw",n.arg=i.arg,n.delegate=null,g;var a=i.arg;return a?a.done?(n[t.resultName]=a.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,g):a:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,g)}function T(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function L(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function A(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(T,this),this.reset(!0)}function M(t){if(t||""===t){var n=t[a];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,i=function n(){for(;++r=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var l=o.call(a,"catchLoc"),c=o.call(a,"finallyLoc");if(l&&c){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&o.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),L(n),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var o=n.completion;if("throw"===o.type){var r=o.arg;L(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,o){return this.delegate={iterator:M(t),resultName:n,nextLoc:o},"next"===this.method&&(this.arg=e),g}},t}function $f(e,t){for(var n=0;n=0&&t.productTourData&&t.productTourData.steps){var e=t.productTourData.steps[t.currentActiveIndex];e&&e.selector&&""!==e.selector&&t.updatePointerPosition(document.querySelector(e.selector),e)}})))}var t,n,o;return t=e,n=[{key:"disable",value:function(){this.disabled=!0,this.cleanup()}},{key:"startWithConfig",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;"undefined"!=typeof window&&(this.productTourId||this.disabled||(this.productTourId=e,this.productTourData=t,this.currentActiveIndex=0,this.onCompleteCallback=n,this.start()))}},{key:"storeUncompletedTour",value:function(){if("undefined"!=typeof window)if(this.productTourId&&this.productTourData)try{var e=JSON.parse(JSON.stringify({tourData:this.productTourData,tourId:this.productTourId}));e.tourData.steps=e.tourData.steps.slice(this.currentActiveIndex||0,e.tourData.steps.length),localStorage.setItem(nm,JSON.stringify(e))}catch(t){}else localStorage.removeItem(nm)}},{key:"attachScrollListeners",value:function(e,t){var n=this;if("undefined"!=typeof window&&e){var o=function(e){if("undefined"!=typeof window){for(var t=[],n=e.parentElement;n;){var o=window.getComputedStyle(n);("auto"===o.overflowY||"scroll"===o.overflowY)&&n.scrollHeight>n.clientHeight&&t.push(n),n=n.parentElement}return t}}(e);o.push(window),o.forEach((function(o){var r=function(){clearTimeout(n._scrollDebounceTimer),n._scrollDebounceTimer=setTimeout((function(){n.updatePointerPosition(e,t)}),150)};o.addEventListener("scroll",r,{passive:!0}),n._scrollListeners.push({el:o,handler:r})}))}}},{key:"removeScrollListeners",value:function(){"undefined"!=typeof window&&(this._scrollListeners&&this._scrollListeners.length>0&&(this._scrollListeners.forEach((function(e){var t=e.el,n=e.handler;t.removeEventListener("scroll",n)})),this._scrollListeners=[]),this._scrollDebounceTimer&&(clearTimeout(this._scrollDebounceTimer),this._scrollDebounceTimer=null))}},{key:"updatePointerPosition",value:function(e,t){var n,o=this;if("undefined"!=typeof window)try{var r=this._pointerContainer||document.getElementById(om);if(!r)return;if(!e)return r.style.position="fixed",r.style.left="50%",r.style.top="50%",r.style.transform="translate(-50%, -50%)",function(e){if("undefined"!=typeof window){var t=e-window.innerHeight/2;window.scrollTo({top:t,behavior:"smooth"})}}(window.innerHeight/2),this.removeScrollListeners(),this._currentAnchor=null,void(this._currentStep=null);n=e,"undefined"!=typeof window&&n&&n.scrollIntoView({behavior:"smooth",block:"center",inline:"center"});var i=0;!function n(){if(function(e){if("undefined"!=typeof window){var t=e.getBoundingClientRect();return t.top>=0&&t.left>=0&&t.bottom<=window.innerHeight&&t.right<=window.innerWidth}}(e)||i>=20){var a=e.getBoundingClientRect(),s=a.left+a.width/2,l=a.top+a.height/2+10;r.style.position="fixed",r.style.left="".concat(s,"px"),r.style.top="".concat(l,"px"),r.style.transform="translate(-50%, -50%)";var c=350;c>window.innerWidth-40&&(c=window.innerWidth-40),s+c>window.innerWidth-20?r.classList.add("copilot-pointer-container-right"):r.classList.remove("copilot-pointer-container-right"),o._currentAnchor===e&&o._currentStep===t||(o.removeScrollListeners(),o._currentAnchor=e,o._currentStep=t,o.attachScrollListeners(e,t))}else i++,setTimeout(n,100)}()}catch(a){}}},{key:"cleanup",value:function(){var e=this;"undefined"!=typeof window&&(document.body.classList.add("gl-copilot-fade-out"),this.currentAudio&&this.currentAudio.pause(),setTimeout((function(){if(e._pointerContainer)e._pointerContainer.remove(),e._pointerContainer=null;else{var t=document.getElementById(om);t&&t.remove()}var n=document.getElementById(im);n&&n.remove();var o=document.getElementById(rm);o&&o.remove(),document.body.classList.remove("gl-copilot-fade-out")}),800),this.productTourId=void 0,this.productTourData=void 0,this.removeScrollListeners())}},{key:"toggleAudio",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.audioMuted=e,this.currentAudio&&(this.currentAudio.muted=this.audioMuted),document.querySelector(".".concat(im,"-mute")).innerHTML=p(this.audioMuted?"unmute":"mute")}},{key:"setupCopilotTour",value:function(){var e,t,n,o,r,i,a=this;if("undefined"!=typeof window){var s,l,c=null!==(e=null===(t=dt.getInstance().flowConfig)||void 0===t?void 0:t.color)&&void 0!==e?e:"#485BFF",u=d(c),h=document.getElementById(rm);h||((h=document.createElement("style")).id=rm,h.type="text/css",h.textContent="\n #".concat(om," {\n position: absolute;\n top: 0;\n left: 0;\n display: flex;\n align-items: flex-start;\n pointer-events: none;\n z-index: 2147483610;\n transition: all 0.5s ease;\n }\n .").concat(om,"-clickmode {\n cursor: pointer;\n pointer-events: all !important;\n }\n .").concat(om,"-clickmode #copilot-info-bubble-content {\n display: flex !important;\n }\n .").concat(om,"-clickmode svg {\n display: none !important;\n }\n #").concat(om," svg {\n width: 20px;\n height: auto;\n fill: none;\n }\n #copilot-info-bubble {\n position: relative;\n }\n #copilot-info-bubble-content-container {\n position: absolute;\n top: 0px;\n left: 0px;\n min-width: min(300px, 80vw);\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n }\n .").concat(om,"-right #copilot-info-bubble-content-container {\n left: auto !important;\n right: 0px !important;\n align-items: flex-end;\n }\n .").concat(om,"-right .copilot-info-bubble-content {\n margin-right: 5px;\n }\n .").concat(om,"-right svg {\n transform: scaleX(-1);\n }\n #copilot-info-bubble-content svg {\n width: 16px;\n height: 16px;\n display: inline-block !important;\n margin-left: 5px;\n }\n #copilot-info-bubble-content {\n margin-top: 18px;\n margin-left: 5px;\n padding: 10px 15px;\n border-radius: 20px;\n background-color: black;\n color: white;\n font-family: Arial, sans-serif;\n font-size: 14px;\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);\n max-width: 100%;\n white-space: normal;\n overflow-wrap: break-word;\n word-break: normal;\n hyphens: none;\n }\n .").concat(om,"-right #copilot-info-bubble-content {\n margin-top: 30px;\n margin-left: 0px;\n margin-right: 5px;\n }\n .click-wave {\n position: absolute;\n width: 34px;\n height: 34px;\n border-radius: 50%;\n background-color: rgba(0, 0, 0, 0.5);\n pointer-events: none;\n z-index: 2147483611;\n animation: click-wave-animation 0.8s ease forwards;\n }\n @keyframes click-wave-animation {\n 0% {\n transform: scale(0.2);\n opacity: 1;\n }\n 100% {\n transform: scale(2);\n opacity: 0;\n }\n }\n @keyframes slideInFromTop {\n 0% {\n transform: translateY(-100%);\n opacity: 0;\n }\n 100% {\n transform: translateY(0);\n opacity: 1;\n }\n }\n .").concat(im," {\n position: fixed;\n top: 20px;\n right: 20px;\n z-index: 2147483610;\n background: #fff;\n padding: 6px;\n border-radius: 10px;\n box-shadow: 0 0 20px 0 #C294F2;\n display: flex;\n align-items: center;\n gap: 8px;\n border: 1px solid rgba(192, 146, 242, 0.5);\n animation: slideInFromTop 0.5s ease-out forwards;\n }\n .").concat(im," span {\n font-size: 13px;\n color: #000;\n font-family: sans-serif;\n }\n .").concat(im,"-avatar {\n width: 24px;\n height: 24px;\n flex-shrink: 0;\n border-radius: 6px;\n }\n .").concat(im,"-mute {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n .").concat(im,"-mute svg {\n width: 20px;\n height: auto;\n cursor: pointer;\n animation: pulsate 2s infinite;\n }\n .").concat(im,"-mute svg:hover {\n opacity: 0.8;\n }\n .").concat(im,"-dismiss {\n display: flex;\n align-items: center;\n justify-content: center;\n padding-right: 3px;\n }\n .").concat(im,"-dismiss svg {\n width: 15px;\n height: auto;\n cursor: pointer;\n }\n .").concat(im,"-dismiss svg:hover {\n opacity: 0.8;\n }\n @keyframes pulsate {\n 0% {\n transform: scale(1);\n opacity: 1;\n }\n 50% {\n transform: scale(1.1);\n opacity: 0.8;\n }\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n }\n @keyframes glCoFadeIn {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n @keyframes glCoFadeOut {\n 0% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n }\n\n .gleap-audio-unmute-modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n background-color: rgba(0, 0, 0, 0.5);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 2147483620;\n }\n\n .gleap-audio-unmute-modal {\n background-color: #fff;\n padding: 20px;\n border-radius: 8px;\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);\n text-align: center;\n max-width: 90%;\n width: 400px;\n }\n\n .gleap-audio-unmute-modal p {\n margin-bottom: 20px;\n font-size: 16px;\n line-height: 22px;\n font-weight: normal;\n }\n\n .gleap-audio-unmute-button {\n background: ").concat(c,";\n color: ").concat(u,";\n outline: none;\n border: none;\n padding: 10px 14px;\n border-radius: 12px;\n font-size: 14px;\n font-weight: bold;\n cursor: pointer;\n }\n\n .gleap-audio-unmute-button:hover {\n opacity: 0.8;\n }\n\n .gleap-tour-continue-button {\n color: ").concat(c,";\n text-decoration: none;\n cursor: pointer;\n font-size: 14px;\n font-weight: bold;\n border: none;\n background: none;\n padding: 0;\n margin: 0;\n margin-left: 20px;\n }\n\n .gleap-tour-continue-button:hover {\n opacity: 0.8;\n }\n\n body.gl-copilot-fade-out::before,\n body.gl-copilot-fade-out::after,\n body.gl-copilot-fade-out #").concat(im," {\n animation: glCoFadeOut 0.8s ease-out forwards;\n }\n ").concat(null===(s=null===(l=this.productTourData)||void 0===l?void 0:l.playVoice)||void 0===s||s?"":"\n .".concat(im,"-mute {\n display: none;\n }\n "),"\n ").concat(this.productTourData.gradient?'body::before {\n content: "";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n box-sizing: border-box;\n border: 18px solid transparent;\n filter: blur(25px);\n border-image-slice: 1;\n border-image-source: linear-gradient(45deg, #ED5587, #FBE6A9, #a6e3f8, #C294F2);\n animation: glCoFadeIn 1.5s ease-out forwards;\n }\n \n body::after {\n content: "";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n opacity: 0.5;\n box-sizing: border-box;\n border: 3px solid transparent;\n border-image-slice: 1;\n border-image-source: linear-gradient(45deg, #ED5587, #FBE6A9, #a6e3f8, #C294F2);\n animation: glCoFadeIn 1.5s ease-out forwards;\n }':'body::after {\n content: "";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n opacity: 0;\n }',"\n "),document.head.appendChild(h));var f=document.createElement("div");f.id=om,f.style.opacity=0,this._pointerContainer=f;var m=document.createElementNS("http://www.w3.org/2000/svg","svg");m.setAttribute("viewBox","0 0 380 476"),m.innerHTML='';var g=document.createElement("div");g.id="copilot-info-bubble",g.innerHTML="
";var v=document.createElement("div");v.id=im,v.classList.add(im),v.innerHTML='\n \n ').concat(null===(o=this.productTourData)||void 0===o?void 0:o.kaiSlug,'\n
\n ').concat(p(this.audioMuted?"unmute":"mute"),"\n
\n ").concat(null!==(r=this.productTourData)&&void 0!==r&&r.allowClose?'
\n ').concat(p("dismiss"),"\n
"):"","\n "),document.body.appendChild(v),document.querySelector(".".concat(im,"-mute")).addEventListener("click",(function(){a.toggleAudio(!a.audioMuted)})),null!==(i=this.productTourData)&&void 0!==i&&i.allowClose&&document.querySelector(".".concat(im,"-dismiss")).addEventListener("click",(function(){a.completeTour(!1)})),f.appendChild(m),f.appendChild(g),document.body.appendChild(f)}}},{key:"start",value:function(){var e=this;if("undefined"!=typeof window&&!this.disabled){var t=this.productTourData;t&&function(){return am.apply(this,arguments)}().then((function(n){e.audioMuted=!n,e.setupCopilotTour(),e.audioMuted&&null!=t&&t.showUnmuteModal?e.showAudioUnmuteModal():setTimeout((function(){e.renderNextStep()}),1500)}))}}},{key:"showAudioUnmuteModal",value:function(){var e,t,n,o=this,r=document.createElement("div");r.classList.add("gleap-audio-unmute-modal-overlay");var i=document.createElement("div");i.classList.add("gleap-audio-unmute-modal");var a=document.createElement("p");a.textContent=null===(e=this.productTourData)||void 0===e?void 0:e.unmuteModalTitle,i.appendChild(a);var s=document.createElement("button");s.classList.add("gleap-audio-unmute-button"),s.textContent=null===(t=this.productTourData)||void 0===t?void 0:t.unmuteModalButton,s.addEventListener("click",(function(){o.toggleAudio(!1),r.parentNode&&r.parentNode.removeChild(r),setTimeout((function(){o.renderNextStep()}),1e3)})),i.appendChild(s);var l=document.createElement("button");l.classList.add("gleap-tour-continue-button"),l.textContent=null===(n=this.productTourData)||void 0===n?void 0:n.unmuteModalContinue,l.addEventListener("click",(function(){r.parentNode&&r.parentNode.removeChild(r),setTimeout((function(){o.renderNextStep()}),1e3)})),i.appendChild(l),r.appendChild(i),document.body.appendChild(r)}},{key:"completeTour",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];"undefined"!=typeof window&&(this.cleanup(),this.onCompleteCallback&&this.onCompleteCallback(e))}},{key:"renderNextStep",value:function(){var e=this;if("undefined"!=typeof window&&!this.disabled){var t=this,n=this.productTourData.steps;if(this.currentActiveIndex>=n.length)setTimeout((function(){e.completeTour()}),500);else{var o=n[this.currentActiveIndex],r=function(n){if(e._pointerContainer.style.display="flex",o.selector&&o.selector.length>0&&!n)e.completeTour(!1);else{var r=function(){if("INPUT"===o.mode&&n){var e,r=function(){document.querySelector("#".concat(om)).classList.remove("copilot-pointer-container-clickmode"),n.classList.remove("gleap-input-highlight"),document.getElementById(om).style.display="none",t.currentActiveIndex++,t.storeUncompletedTour(),t.renderNextStep()};if("default"===(null!==(e=o.inputType)&&void 0!==e?e:"default")){var i=function e(t){var o;if(0!==(null==t||null===(o=t.target)||void 0===o||null===(o=o.value)||void 0===o?void 0:o.length)){var i=document.getElementById("copilot-info-bubble-content");i&&(i.innerHTML="".concat(gh.translateText("next"),' \n \n'),i.addEventListener("click",r,{once:!0}),n.classList.add("gleap-input-highlight"),document.querySelector("#".concat(om)).classList.add("copilot-pointer-container-clickmode"),n.removeEventListener("input",e))}};n.addEventListener("input",i,{once:!1}),n.hasAttribute("contenteditable")&&n.addEventListener("keyup",i,{once:!1}),n.addEventListener("blur",(function(){n.focus()}),{once:!0}),n.focus()}else{var a,s=null!==(a=o.inputValue)&&void 0!==a?a:"",l=0;!function e(){l0})).length;return Math.ceil(t/3.6)+1}}(i),s=function(){e.currentAudio=void 0,setTimeout((function(){r()}),1e3*a)};o.voice&&o.voice.length>0?(e.currentAudio=new Audio(o.voice),e.audioMuted&&(e.currentAudio.muted=!0),e.currentAudio.addEventListener("ended",(function(){setTimeout((function(){r()}),1e3)})),e.currentAudio.play().then((function(){})).catch((function(e){s()}))):s()}},i=o.selector?function(e){if("undefined"!=typeof window){var t=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:5e3)/100,n=0;return new Promise((function(o,r){var i=setInterval((function(){var a=document.querySelector(e);a?(clearInterval(i),o(a)):n>=t&&(clearInterval(i),r(new Error("Element not found for selector: ".concat(e)))),n++}),100)}))}}(o.selector):Promise.resolve(null);i.then(r).catch((function(){return r(null)}))}}}}],o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],n&&$f(t.prototype,n),o&&$f(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function lm(e){return lm="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},lm(e)}function cm(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function um(e){for(var t=1;t2&&void 0!==arguments[2]?arguments[2]:0,r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(!this.productTourId&&!this.disabled)if(this.productTourId=e,this.productTourData=t,this.currentActiveIndex=0,r)this.start();else{var i=this;et.getInstance().validateProductTour(e).then((function(){return o>0?setTimeout((function(){i.start()}),o):n.start()})).catch((function(e){console.log("Product tour is not live. Cleaning up..."),console.error(e),i.onComplete(!1)}))}}},{key:"onComplete",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t={tourId:this.productTourId};e?(xn.notifyEvent("productTourCompleted",t),_m.trackEvent("tour-".concat(this.productTourId,"-completed"),t)):(xn.notifyEvent("productTourQuit",t),_m.trackEvent("tour-".concat(this.productTourId,"-quit"),t)),this.gleapTourObj&&this.gleapTourObj.destroy(),this.gleapTourObj=void 0,this.productTourData=void 0,this.productTourId=void 0,this.currentActiveIndex=void 0,this.clearUncompletedTour()}},{key:"loadUncompletedTour",value:function(){try{var e=JSON.parse(localStorage.getItem(fm));if(null!=e&&e.tourData&&null!=e&&e.tourId)return e}catch(t){}return null}},{key:"storeUncompletedTour",value:function(){if(this.productTourId&&this.productTourData)try{var e=JSON.parse(JSON.stringify({tourData:this.productTourData,tourId:this.productTourId}));e.tourData.steps=e.tourData.steps.slice(this.currentActiveIndex||0,e.tourData.steps.length),localStorage.setItem(fm,JSON.stringify(e))}catch(t){}else this.clearUncompletedTour()}},{key:"clearUncompletedTour",value:function(){try{localStorage.removeItem(fm)}catch(e){}}},{key:"start",value:function(){var e=this,t=this.productTourData;if(t){if("cobrowse"===t.tourType)return sm.getInstance().startWithConfig(this.productTourId,t,(function(t){e.onComplete(t)}));this.unmuted=!1;for(var n=t.steps,o=this,r=[],i=0;i\n \n
').concat(p("unmute"),"
\n ");else{var d="";t.sender&&t.sender.firstName&&(u=!0,d='
\n
\n
').concat(t.sender.firstName,"
\n
")),c="".concat(d,'
').concat(a.message,"
")}var h={disableActiveInteraction:!s&&!l,mode:a.mode,popover:um({description:c,popoverClass:"gleap-tour-popover-".concat(a.type," ").concat(!u&&"gleap-tour-popover-no-sender"," ").concat(t.allowClose&&"gleap-tour-popover-can-close")},s?{showButtons:[]}:{})};a.selector&&a.selector.length>0&&(h.element=a.selector),r.push(h)}var f=["next","close"];t.backButton&&f.push("previous"),this.gleapTourObj=Kf(pm(pm(pm(pm(pm(pm(pm(pm(pm(pm({showProgress:!0,allowKeyboardControl:!1,steps:r},"showProgress",n.length>1),"allowClose",t.allowClose),"nextBtnText",t.nextText),"doneBtnText",t.doneText),"prevBtnText",t.prevText),"showButtons",f),"onHighlightStarted",(function(t,n,o){var r;e.currentActiveIndex=null==o||null===(r=o.state)||void 0===r?void 0:r.activeIndex,e.storeUncompletedTour()})),"onElementNotFound",(function(t){document.removeEventListener("click",m),e.onComplete(!1)})),"onDestroyStarted",(function(){e.gleapTourObj.hasNextStep()?e.onComplete(!1):e.onComplete(!0),document.removeEventListener("click",m)})),"onPopoverRender",(function(t){if(t)for(var n=document.querySelectorAll(".gleap-tour-popover-description img, .gleap-tour-popover-description video"),r=function(){setTimeout((function(){e.gleapTourObj.refresh()}),500),setTimeout((function(){e.gleapTourObj.refresh()}),750)},i=0;ie.length)&&(t=e.length);for(var n=0,o=new Array(t);n1&&void 0!==arguments[1]?arguments[1]:"";return gh.translateText(e)||t}},{key:"_translateWithVars",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return gh.translateTextWithVars(e,t)||n}},{key:"getCheckIcon",value:function(){return'\n \n '}},{key:"loadChecklist",value:function(){if(this._isSessionReady&&this._networkManager){var e=this.getAttribute("checklistId");e?(this.activeStep=-1,this._initialActiveSet=!1,this.validateChecklist(e)):(this.renderResponse(),this.checklistData=null,this._hasLoaded=!1)}}},{key:"getQueryParams",value:function(){var e=this._getGleapSessionInstance();if(null==e||!e.session)return"";var t=e.session,n="en";try{void 0!==gh&&(n=gh.getInstance().getActiveLanguage()||"en")}catch(o){}return"gleapId=".concat(t.gleapId||"","&gleapHash=").concat(t.gleapHash||"","&lang=").concat(n)}},{key:"makeRequest",value:function(e,t,n,o){var r=this._getGleapSessionInstance();if(null!=r&&r.session){var i=new XMLHttpRequest;i.open(e,t);try{r.injectSession(i)}catch(a){}n&&i.setRequestHeader("Content-Type","application/json;charset=UTF-8"),i.onreadystatechange=function(){4===i.readyState&&o(i)},i.onerror=function(){o(i)},i.send(n?JSON.stringify(n):null)}else o({readyState:4,status:0,responseText:"Session unavailable",_isMock:!0})}},{key:"validateChecklist",value:function(e){var t=this;if(this._isSessionReady&&this._networkManager){this.checklistData=null,this._hasLoaded=!1,this.renderResponse();var n=this.getAttribute("sharedKey");this._networkManager.validateChecklist(e,n).then((function(e){t.isConnected&&t._isSessionReady&&e&&t.fetchChecklist(e)})).catch((function(e){t.renderResponse(),t.checklistData=null,t._hasLoaded=!1}))}}},{key:"fetchChecklist",value:function(e){var t=this;this._isSessionReady&&this._networkManager&&(this._isInitialLoad=!this._hasLoaded,this._networkManager.fetchChecklist(e).then((function(e){var n;if(!t.isConnected||!t._isSessionReady||!e)return t._hasLoaded=!1,t.checklistData=null,void t._checkSessionAndLoad();if(t.checklistData=e,t._hasLoaded=!0,"done"!==e.status){if(t._isInitialLoad&&!t._initialActiveSet){var o,r=(null===(o=e.outbound)||void 0===o||null===(o=o.config)||void 0===o?void 0:o.steps)||[],i=e.completedSteps||[],a=r.findIndex((function(e){return!i.includes(e.id)}));t.activeStep=a>=0?a:-1,-1!==t.activeStep&&(t._initialActiveSet=!0)}t.renderChecklist(t.checklistData),xn.notifyEvent("checklist-loaded",{checklistId:t.checklistData.id,outboundId:null===(n=t.checklistData.outbound)||void 0===n?void 0:n.id,completedSteps:t.checklistData.completedSteps,status:t.checklistData.status,data:t.checklistData})}else t.renderResponse()})).catch((function(e){t.renderResponse(),t.checklistData=null,t._hasLoaded=!1})))}},{key:"updateChecklist",value:function(e,t){var n,o,r=this._getGleapSessionInstance();if(null!=r&&r.session){var i=r.apiUrl;if(i){var a=r.session,s=null!==(n=null==a?void 0:a.gleapId)&&void 0!==n?n:"",l=null!==(o=null==a?void 0:a.gleapHash)&&void 0!==o?o:"",c="en";try{void 0!==gh&&(c=gh.getInstance().getActiveLanguage()||"en")}catch(d){}var u="".concat(i,"/outbound/checklists/").concat(e);t.checkedStep&&(u+="/increment/".concat(t.checkedStep)),u+="?gleapId=".concat(s,"&gleapHash=").concat(l,"&lang=").concat(c),this.makeRequest("PUT",u,t,(function(e){e._isMock||200!==e.status&&e.status}))}}}},{key:"handleChecklistUpdate",value:function(e){if(this._hasLoaded&&this.checklistData){var t=e.detail;if(t&&t.id===this.checklistData.id){var n,o=vm(this.checklistData.completedSteps||[]),r=!1,i=!1,a=this.activeStep;if(t.completedSteps&&JSON.stringify(t.completedSteps)!==JSON.stringify(o)&&(this.checklistData.completedSteps=vm(t.completedSteps),r=!0,-1!==a)){var s,l=null===(s=this.checklistData.outbound)||void 0===s||null===(s=s.config)||void 0===s||null===(s=s.steps)||void 0===s||null===(s=s[a])||void 0===s?void 0:s.id;l&&this.checklistData.completedSteps.includes(l)&&!o.includes(l)&&(i=!0)}if(t.status&&t.status!==this.checklistData.status&&(this.checklistData.status=t.status,r=!0),i){for(var c,u=(null===(c=this.checklistData.outbound)||void 0===c||null===(c=c.config)||void 0===c?void 0:c.steps)||[],d=-1,p=a+1;p1&&void 0!==arguments[1]?arguments[1]:"checklist-floating",r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=(null===(t=e.config)||void 0===t?void 0:t.steps)||[],a=(null===(n=this.checklistData)||void 0===n?void 0:n.completedSteps)||[],s=0;if(this.progressbarEnabled&&i.length>0){var l=i.length,c=a.length;s=l>0?c/l*100:0}var u,d,p=i.find((function(e){return!a.includes(e.id)})),h=i.length>0?p?p.title||this._translateWithVars("stepDefaultTitle",{index:i.indexOf(p)+1},"Step ".concat(i.indexOf(p)+1)):"":e.subject||"",f=i.length>0?p&&p.description||"":e.message||"";r&&(h=(null===(u=e.config)||void 0===u?void 0:u.successTitle)||"",f=(null===(d=e.config)||void 0===d?void 0:d.successMessage)||"",s=100);var m=2*Math.PI*7,g=m-s/100*m,v="checklist-floating-header"===o,y=v?'\n \n \n ':'\n \n ';return'\n
\n
\n
\n \n \n \n \n
\n
').concat(h,"
\n ").concat(r?"":''.concat(y,""),'\n
\n
').concat(f,"
\n
\n ")}},{key:"renderInfoSection",value:function(e){var t;if(!this.infoEnabled||!e)return"";var n=e.subject||this._translate("checklistDefaultTitle","Checklist"),o=e.message||"",r="";return null!==(t=e.sender)&&void 0!==t&&t.profileImageUrl&&(r='\n
\n ').concat(e.sender.firstName||\n ').concat(e.sender.firstName||"","\n
")),'\n
\n '.concat(n?'
'.concat(n,"
"):"","\n ").concat(o?'
'.concat(o,"
"):"","\n ").concat(r,"\n
")}},{key:"renderProgressSection",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];if(!this.progressbarEnabled||!e.length)return"";var n=e.length,o=t.length,r=n>0?o/n*100:0,i=0;e.forEach((function(e){!t.includes(e.id)&&e.duration>0&&(i+=e.duration)}));var a=this._translateWithVars("taskProgress",{a:o,b:n},"".concat(o," of ").concat(n," done")),s=i>0?this._translateWithVars("aboutMinutes",{a:i},"About ".concat(i," min left")):"";return'\n
\n
'.concat(a,"
\n ").concat(s?'
'.concat(s,"
"):"",'\n
\n
\n
\n
')}},{key:"renderTasks",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return t&&0!==t.length?t.map((function(t,o){var r=n.includes(t.id),i=e.activeStep===o,a=r?''.concat(e.getCheckIcon(),""):''.concat(o+1,""),s=t.title||e._translateWithVars("stepDefaultTitle",{index:o+1},"Step ".concat(o+1)),l=t.description||"",c=t.actionTitle||e._translate("actionDefaultTitle","Action"),u=t.action&&"none"!==t.action?'
\n \n
"):"",d=e._translate("markAsDone","Mark as done"),p=t.allowMarkDone&&!r?'
\n ').concat(e.getCheckIcon(),'\n
').concat(d,"
\n
"):"",h=["checklist-task",r?"checklist-task--done":"",i?"checklist-task--active":""].filter(Boolean).join(" ");return'\n
\n
\n ').concat(a,'\n
').concat(s,'
\n \n \n \n \n \n
\n
\n
\n ').concat(l?'
'.concat(l,"
"):"","\n ").concat(u,"\n ").concat(p,"\n
\n
\n
")})).join(""):"

".concat(this._translate("noStepsDefined","No steps defined."),"

")}},{key:"renderChecklist",value:function(e){var t;if(this._hasLoaded&&e&&e.outbound){var n=e.outbound,o=(null===(t=n.config)||void 0===t?void 0:t.steps)||[],r=e.completedSteps||[],i="";if("done"===e.status||o.length>0&&r.length>=o.length){var a,s,l=(null===(a=n.config)||void 0===a?void 0:a.successTitle)||"",c=(null===(s=n.config)||void 0===s?void 0:s.successMessage)||"";i=this.floatingEnabled?this.renderFloatingLauncher(n,"checklist-floating-launcher",!0):'\n
\n
\n '.concat(this.getCheckIcon(),'\n
\n
').concat(l,'
\n
').concat(c,"
\n
"),-1!==this.activeStep&&(this.activeStep=-1)}else i='\n
\n '.concat(this.floatingEnabled?"":this.renderInfoSection(n),"\n ").concat(this.floatingEnabled?"":this.renderProgressSection(o,r),"\n ").concat(this.floatingEnabled?this.renderFloatingLauncher(n):"",'\n
\n ').concat(this.floatingEnabled?this.renderFloatingLauncher(n,"checklist-floating-header"):"","\n ").concat(this.renderTasks(o,r),"\n
\n
");var u=dt.getInstance().getFlowConfig(),d=u.color?u.color:"#485BFF",p="\n \n ');this.shadowRoot.innerHTML=p+i,this.addTaskEventListeners(),this.floatingEnabled&&this.addFloatingClickListeners(),-1!==this.activeStep&&this.toggleTask(this.activeStep,!0)}else this._checkSessionAndLoad()}},{key:"updateActiveTaskMaxHeight",value:function(){if(-1!==this.activeStep){var e=this.shadowRoot.querySelector('.checklist-task[data-task-index="'.concat(this.activeStep,'"] .checklist-task-body-inner')),t=this.shadowRoot.querySelector('.checklist-task[data-task-index="'.concat(this.activeStep,'"] .checklist-task-body'));if(e&&t){var n=e.offsetHeight;t.style.setProperty("--task-body-active-height","".concat(n,"px"))}}}},{key:"addTaskEventListeners",value:function(){var e=this;this.shadowRoot.querySelectorAll(".checklist-task").forEach((function(t){var n=t.querySelector(".checklist-task-header"),o=parseInt(t.getAttribute("data-task-index"),10);n&&n.addEventListener("click",(function(){var t=e.activeStep===o?-1:o;e.setActiveStep(t)}));var r=t.querySelector(".checklist-task-body-markdone");r&&r.addEventListener("click",(function(t){var n;if(t.stopPropagation(),null!==(n=e.checklistData)&&void 0!==n&&null!==(n=n.outbound)&&void 0!==n&&null!==(n=n.config)&&void 0!==n&&n.steps){var r=e.checklistData.outbound.config.steps[o];if(r){var i=e.activeStep;if(e.checklistData.completedSteps||(e.checklistData.completedSteps=[]),!e.checklistData.completedSteps.includes(r.id)){var a;e.checklistData.completedSteps.push(r.id),xn.notifyEvent("checklist-step-completed",{checklistId:e.checklistData.id,outboundId:null===(a=e.checklistData.outbound)||void 0===a?void 0:a.id,stepId:r.id,stepIndex:o,step:r,completedSteps:e.checklistData.completedSteps,status:e.checklistData.status,data:e.checklistData});var s=e.checklistData.outbound.config.steps,l=-1;if(i===o){for(var c=o+1;c0&&e.checklistData.completedSteps.length>=s.length&&(e.checklistData.status="done",d.status="done",xn.notifyEvent("checklist-completed",{checklistId:e.checklistData.id,outboundId:null===(u=e.checklistData.outbound)||void 0===u?void 0:u.id,completedSteps:e.checklistData.completedSteps,status:e.checklistData.status,data:e.checklistData})),e.updateChecklist(e.checklistData.id,d)}}}}));var i=t.querySelector(".checklist-task-body-action .action-button");i&&i.addEventListener("click",(function(t){var n;if(t.stopPropagation(),null!==(n=e.checklistData)&&void 0!==n&&null!==(n=n.outbound)&&void 0!==n&&null!==(n=n.config)&&void 0!==n&&n.steps&&void 0!==_m){var r=e.checklistData.outbound.config.steps[o];if(r&&r.action&&"none"!==r.action)try{"BOT"===r.action?_m.startBot(r.botId):"CUSTOM_ACTION"===r.action?_m.triggerCustomAction(r.actionBody):"REDIRECT_URL"===r.action?(t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation(),_m.openURL(r.actionBody,!!r.actionOpenInNewTab)):"FEEDBACK_FLOW"===r.action?_m.startFeedbackFlow(r.formId):"NEWS_ARTICLE"===r.action?_m.openNewsArticle(r.articleId):"HELP_ARTICLE"===r.action?_m.openHelpCenterArticle(r.articleId):"CHECKLIST"===r.action&&_m.startChecklist(r.outboundId,!0,null==r?void 0:r.sharedKey)}catch(i){}}}))}))}},{key:"setActiveStep",value:function(e){var t=this,n=this.activeStep;this.activeStep=e;var o=[];-1!==n&&n!==this.activeStep&&o.push({index:n,open:!1}),-1!==this.activeStep&&this.activeStep!==n&&o.push({index:this.activeStep,open:!0}),o.forEach((function(e){var n=e.index,o=e.open;t.toggleTask(n,o)}))}},{key:"toggleTask",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=this.shadowRoot.querySelector('.checklist-task[data-task-index="'.concat(e,'"]'));if(n){var o=n.querySelector(".checklist-task-header");if(o){var r=n.classList.contains("checklist-task--active"),i=null!==t?t:!r;if(i&&!r){n.classList.add("checklist-task--active"),o.setAttribute("aria-expanded","true");var a=n.querySelector(".checklist-task-body-inner");if(a){var s=a.offsetHeight,l=n.querySelector(".checklist-task-body");l&&l.style.setProperty("--task-body-active-height","".concat(s,"px"))}}else!i&&r&&(n.classList.remove("checklist-task--active"),o.setAttribute("aria-expanded","false"))}}}}],r=[{key:"observedAttributes",get:function(){return["checklistId","info","progressbar","dark","floating","sharedKey"]}}],o&&bm(n.prototype,o),r&&bm(n,r),Object.defineProperty(n,"prototype",{writable:!1}),t}(xm(HTMLElement));"undefined"==typeof customElements||customElements.get("gleap-checklist")||customElements.define("gleap-checklist",e)}}();var Dm=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),Rm(this,"initialized",!1),Rm(this,"offlineMode",!1),Rm(this,"disablePageTracking",!1),Rm(this,"disableInAppNotifications",!1),Rm(this,"globalData",{screenRecordingData:null,webReplay:null,snapshotPosition:{x:0,y:0}}),"undefined"!=typeof window&&(Xt.getInstance(),rn.getInstance().start(),pn.getInstance().start(),Hf.getInstance().start())}var t,n,o;return t=e,n=[{key:"isLiveMode",value:function(){if(!0===this.offlineMode)return!1;var e=window.location.hostname;return!(["localhost","127.0.0.1","0.0.0.0","","::1"].includes(e)||e.startsWith("192.168.")||e.startsWith("10.0.")||e.endsWith(".local")||!e.includes("."))}},{key:"softReInitialize",value:function(){Vt.getInstance().destroy(),dt.getInstance().start().then((function(){a.getInstance().refresh(),Mh.getInstance().injectNotificationUI()})).catch((function(e){console.warn("Failed to initialize Gleap.")}))}},{key:"performActions",value:function(t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:"INFO";rn.getInstance().addLog(e,t)}},{key:"initialize",value:function(t){var n=this.getInstance();if(n.initialized)console.warn("Gleap already initialized.");else{n.initialized=!0;try{!function(){try{if("visualViewport"in window&&/iPad|iPhone|iPod/.test(navigator.userAgent)){var e=function(){try{var e=document.querySelector(".gleap-frame-container-inner iframe");if(!e)return;window.visualViewport.height1&&void 0!==arguments[1]&&arguments[1];Vt.getInstance().urlHandler(e,t)}},{key:"checkForUrlParams",value:function(){if("undefined"!=typeof window&&window.location.search)try{var t=new URLSearchParams(window.location.search),n=t.get("gleap_widget");n&&n.length>0&&e.open();var o=t.get("gleap_conversation");o&&o.length>0&&("true"===o?e.startConversation(!0):e.startBot(o,!0));var r=t.get("gleap_feedback");r&&r.length>0&&e.startFeedbackFlow(r);var i=t.get("gleap_survey"),a=t.get("gleap_survey_format");i&&i.length>0&&e.showSurvey(i,"survey_full"===a?"survey_full":"survey");var s=t.get("gleap_tour");if(s&&s.length>0){var l=parseInt(t.get("gleap_tour_delay"));isNaN(l)&&(l=2),setTimeout((function(){e.startProductTour(s)}),1e3*l)}}catch(c){}}},{key:"destroy",value:function(){Yp.getInstance().stop(),it.getInstance().stop(),Vt.getInstance().destroy(),a.getInstance().destroy(),Mh.getInstance().clearAllNotifications(!0),et.getInstance().clearSession(0,!1),Bh.getInstance().removeBannerUI(),this.instance=null}},{key:"closeBanner",value:function(){Bh.getInstance().removeBannerUI()}},{key:"closeModal",value:function(){Gh.getInstance().hideModal()}},{key:"setUseCookies",value:function(e){et.getInstance().useCookies=e}},{key:"identify",value:function(e,t,n){return et.getInstance().identifySession(e,k(t),n)}},{key:"updateContact",value:function(e){return et.getInstance().updateSession(k(e))}},{key:"clearIdentity",value:function(){et.getInstance().clearSession()}},{key:"getIdentity",value:function(){return et.getInstance().getSession()}},{key:"isUserIdentified",value:function(){var e=et.getInstance().session;return!!(e&&e.userId&&e.userId.length>0)}},{key:"isOpened",value:function(){return Vt.getInstance().isOpened()}},{key:"hide",value:function(){Vt.getInstance().hideWidget()}},{key:"setMaxNetworkRequests",value:function(e){y.getInstance().setMaxRequests(e)}},{key:"startNetworkLogger",value:function(){y.getInstance().start()}},{key:"setNetworkLogsBlacklist",value:function(e){y.getInstance().setBlacklist(e)}},{key:"setNetworkLogPropsToIgnore",value:function(e){y.getInstance().setFilters(e)}},{key:"setReplayOptions",value:function(e){Yp.getInstance().setOptions(e)}},{key:"close",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];Vt.getInstance().hideWidget(e)}},{key:"open",value:function(){Vt.getInstance().setAppMode("widget"),Vt.getInstance().showWidget()}},{key:"trackEvent",value:function(e,t){it.getInstance().logEvent(e,t)}},{key:"logEvent",value:function(e,t){it.getInstance().logEvent(e,t)}},{key:"preFillForm",value:function(e){var t=k(e);Oh.getInstance().formPreFill=t,Vt.getInstance().sendMessage({name:"prefill-form-data",data:t},!0)}},{key:"on",value:function(e,t){xn.on(e,t)}},{key:"enableShortcuts",value:function(e){e?kh.getInstance().start():kh.getInstance().stop()}},{key:"showFeedbackButton",value:function(e){a.getInstance().toggleFeedbackButton(e)}},{key:"setAppVersionCode",value:function(e){Xt.setAppVersionCode(e)}},{key:"setAppBuildNumber",value:function(e){Xt.setAppBuildNumber(e)}},{key:"setWSApiUrl",value:function(e){et.getInstance().wsApiUrl=e}},{key:"setApiUrl",value:function(e){et.getInstance().apiUrl=e}},{key:"setBannerUrl",value:function(e){Bh.getInstance().setBannerUrl(e)}},{key:"setModalUrl",value:function(e){Gh.getInstance().setModalUrl(e)}},{key:"setFrameUrl",value:function(e){Vt.getInstance().frameUrl=e}},{key:"setTicketAttribute",value:function(e,t){vn.getInstance().setTicketAttribute(e,t)}},{key:"unsetTicketAttribute",value:function(e){vn.getInstance().unsetTicketAttribute(e)}},{key:"clearTicketAttributes",value:function(){vn.getInstance().clearTicketAttributes()}},{key:"attachCustomData",value:function(e){vn.getInstance().attachCustomData(e)}},{key:"setCustomData",value:function(e,t){vn.getInstance().setCustomData(e,t)}},{key:"removeCustomData",value:function(e){vn.getInstance().removeCustomData(e)}},{key:"clearCustomData",value:function(){vn.getInstance().clearCustomData()}},{key:"playSound",value:function(e){Yh.playSound(e)}},{key:"showTabNotificationBadge",value:function(e){var t=Mh.getInstance();t.showNotificationBadge=e,t.updateTabBarNotificationCount()}},{key:"setLanguage",value:function(t){gh.getInstance().setOverrideLanguage(t),e.getInstance().initialized&&setTimeout((function(){e.getInstance().softReInitialize(),e.updateContact({lang:t})}),1e3)}},{key:"registerCustomAction",value:function(e){Ln.registerCustomAction(e)}},{key:"triggerCustomAction",value:function(e){Ln.triggerCustomAction(e)}},{key:"setStyles",value:function(e,t,n){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"#ffffff",r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:20,i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:20,s=arguments.length>6&&void 0!==arguments[6]?arguments[6]:20,l=arguments.length>7&&void 0!==arguments[7]?arguments[7]:a.FEEDBACK_BUTTON_BOTTOM_LEFT;O((function(){!function(e,t,n,o,r,i,s,l){var c=d(e),p=d(n),h=d(r),f=d(t),m="#ffffff"===h,g=u(t,"#ffffff"===f?-35:-15),v=u(r,m?100:-120),y=u(r,m?30:-12),b=u(r,m?80:-30),w=(o=parseInt(o,10),Math.round(1.05*o)),k=Math.round(.8*o),x=Math.round(.6*o),S=Math.round(.4*o),C=Math.round(.25*o),I=57+s;l===a.FEEDBACK_BUTTON_CLASSIC_BOTTOM?I=s+15:(l&&l.includes("CLASSIC")||l===a.FEEDBACK_BUTTON_NONE)&&(I=s);var O='\n .gleap-font, .gleap-font * {\n font-style: normal;\n font-variant-caps: normal;\n font-variant-ligatures: normal;\n font-variant-numeric: normal;\n font-variant-east-asian: normal;\n font-weight: normal;\n font-stretch: normal;\n font-size: 100%;\n line-height: 1;\n font-family: system-ui, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";\n }\n .gleap-input-highlight {\n box-shadow: 0 0 0 3px '.concat(e," !important;\n }\n .gleap-frame-container {\n right: ").concat(i,"px;\n bottom: ").concat(61+s,"px;\n width: calc(100% - 40px);\n max-width: 410px;\n position: fixed;\n z-index: ").concat(2147483631,";\n visibility: visible;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.16);\n border-radius: ").concat(k,"px;\n overflow: hidden;\n animation-duration: .3s;\n animation-fill-mode: both;\n animation-name: gleapFadeInUp;\n user-select: none;\n pointer-events: none;\n transition: max-width 0.3s ease-out;\n }\n\n .gleap-admin-highlight {\n box-shadow: 0px 0px 0px 4px red;\n }\n\n :root {\n --gleap-margin-top: 50px;\n }\n\n .gleap-tooltip-anchor {\n position: relative;\n display: inline-block;\n float: left;\n max-width: 0px;\n width: 17px;\n }\n\n .gleap-tooltip-hotspot {\n position: absolute;\n display: block;\n width: 17px;\n height: 17px;\n cursor: pointer;\n top: 0px;\n left: 0px;\n }\n\n @keyframes gleap-pulse {\n 0% {\n transform: scale(0);\n opacity: 0.25;\n }\n 45% {\n transform: scale(2.5);\n opacity: 0;\n }\n 100% {\n transform: scale(0);\n opacity: 0;\n }\n }\n\n .gleap-tooltip-hotspot-animation {\n position: absolute;\n border-radius: 17px;\n opacity: 0.25;\n display: block;\n width: 17px;\n height: 17px;\n cursor: pointer;\n top: 0px;\n left: 0px;\n animation: gleap-pulse 5s infinite;\n }\n\n .gleap-tooltip-hotspot svg {\n width: 17px;\n height: 17px;\n object-fit: contain;\n display: block;\n }\n\n .gleap-tooltip-inner {\n position: relative;\n overflow: visible;\n font-size: 14px;\n font-weight: normal;\n color: #000;\n line-height: 1.3;\n }\n\n .gleap-tooltip {\n position: absolute;\n background-color: #fff;\n color: #000;\n font-size: 15px;\n line-height: 18px;\n padding: 16px;\n padding-top: 8px;\n padding-bottom: 8px;\n border-radius: 4px;\n max-width: min(350px, 80vw);\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n opacity: 0;\n visibility: hidden;\n transition: opacity 0.2s, visibility 0.2s;\n z-index: ").concat(2147483700,";\n }\n\n .gleap-tooltip a {\n color: ").concat(e,";\n text-decoration: underline;\n display: inline !important;\n margin: 0px !important;\n padding: 0px !important;\n word-break: break-word;\n }\n\n .gleap-tooltip ul {\n padding-left: 16px;\n }\n\n .gleap-tooltip b {\n font-weight: 600;\n }\n\n .gleap-tooltip h2 {\n font-size: 18px;\n line-height: 20px;\n font-weight: 600;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip h3 {\n font-size: 16px;\n line-height: 18px;\n font-weight: 600;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip p {\n padding: 0px;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip img {\n max-width: 100%;\n max-height: 300px;\n width: 100%;\n height: auto;\n object-fit: cover;\n margin-top: 8px;\n margin-bottom: 8px;\n border-radius: 4px;\n }\n\n .gleap-tooltip iframe,\n .gleap-tooltip video {\n max-width: 100%;\n width: 100%;\n height: auto;\n min-height: 200px;\n display: block;\n border: none;\n outline: none;\n padding: 0px;\n margin-top: 8px;\n margin-bottom: 8px;\n border-radius: 4px;\n }\n\n .gleap-tooltip-arrow {\n position: absolute;\n width: 20px;\n height: 20px;\n }\n\n .gleap-tooltip-arrow svg {\n width: 20px;\n height: 20px;\n object-fit: contain;\n }\n\n .gleap-b-frame {\n width: 100%;\n height: 100%;\n border: none;\n pointer-events: auto;\n padding: 0px;\n margin: 0px;\n }\n\n .gleap-b-shown {\n transition: margin 0.3s ease-out;\n margin-top: var(--gleap-margin-top);\n position: relative;\n z-index: 10000;\n }\n\n .gleap-b-f {\n margin-top: 0px;\n }\n\n .gleap-b {\n display: none;\n position: absolute;\n top: calc(-1 * var(--gleap-margin-top));\n left: 0px;\n width: 100vw;\n height: var(--gleap-margin-top);\n z-index: ").concat(2147483699,";\n }\n\n @keyframes gleapSlideIn {\n from {\n top: calc(-1 * var(--gleap-margin-top));\n }\n to {\n top: 10px;\n }\n }\n\n .gleap-b-f .gleap-b {\n position: fixed;\n top: 10px;\n animation: gleapSlideIn .25s ease-out forwards;\n max-width: 800px;\n width: calc(100% - 20px);\n left: 50%;\n z-index: ").concat(2147483699,";\n transform: translateX(-50%);\n border-radius: ").concat(S,"px;\n overflow: hidden;\n box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.15), 0px 5px 5px rgba(0, 0, 0, 0.05);\n }\n\n .gleap-b-shown .gleap-b {\n display: block;\n }\n\n .gleap-image-view {\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n z-index: ").concat(2147483699,";\n background-color: ").concat(h,"cc;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .gleap-image-view-image {\n width: 90%;\n height: auto;\n max-width: 90%;\n max-height: 90%;\n object-fit: contain;\n }\n\n .gleap-image-view-close {\n position: fixed;\n top: 20px;\n right: 20px;\n width: 32px;\n height: 32px;\n opacity: 0.8;\n z-index: ").concat(2147483740,";\n box-shadow: 0px 5px 18px rgba(0, 0, 0, 0.16);\n cursor: pointer;\n }\n\n .gleap-image-view-close:hover {\n opacity: 1;\n }\n\n .gleap-image-view-close svg path {\n fill: ").concat(r,";\n }\n\n [dir=rtl].gleap-frame-container {\n right: auto;\n left: ").concat(i,"px;\n bottom: ").concat(61+s,'px;\n }\n\n .gleap-frame-container--loading iframe {\n opacity: 0;\n }\n\n .gleap-frame-container--loading::before {\n content: " ";\n position: fixed;\n top: 0px;\n left: 0px;\n right: 0px;\n height: 100%;\n max-height: 380px;\n background: linear-gradient(\n 130deg,\n ').concat(g," 0%,\n ").concat(t,' 100%\n );\n }\n \n .gleap-frame-container--loading::after {\n content: " ";\n position: fixed;\n top: 0px;\n left: 0px;\n right: 0px;\n height: 100%;\n height: 100%;\n max-height: 380px;\n background: linear-gradient(\n 180deg,\n transparent 60%,\n ').concat(r,"1A 70%,\n ").concat(r," 100%\n );\n }\n\n .gleap-frame-container--loading-nogradient::before {\n max-height: 340px;\n background: ").concat(t," !important;\n }\n\n .gleap-frame-container--loading-nofade::after {\n display: none !important;\n }\n\n .gleap-frame-container--survey {\n bottom: ").concat(s,"px !important;\n }\n\n .gleap-frame-container--extended {\n max-width: 690px !important;\n }\n\n .gleap-frame-container--survey-full {\n position: fixed;\n top: 0 !important;\n left: 0 !important;\n bottom: 0 !important;\n right: 0 !important;\n width: 100vw !important;\n max-width: 100vw !important;\n height: 100vh;\n height: 100dvh !important;\n background-color: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(6px);\n display: flex !important;\n justify-content: center !important;\n align-items: center !important;\n max-height: 100vh;\n max-height: 100dvh !important;\n border-radius: 0 !important;\n animation-name: none !important;\n }\n\n .gleap-frame-container--survey-full .gleap-frame-container-inner {\n max-width: 640px !important;\n width: calc(100% - 24px);\n border-radius: ").concat(k,"px;\n overflow: hidden;\n }\n\n .gleap-frame-container--classic {\n right: ").concat(i,"px;\n bottom: ").concat(s,"px;\n }\n\n [dir=rtl].gleap-frame-container--classic {\n right: auto;\n left: ").concat(i,"px;\n bottom: ").concat(s,"px;\n }\n\n .gleap-frame-container--no-button {\n bottom: ").concat(s,"px;\n }\n\n [dir=rtl].gleap-frame-container--classic-left {\n bottom: ").concat(s,"px;\n }\n\n .gleap-frame-container--classic-left {\n right: auto;\n left: ").concat(i,"px;\n bottom: ").concat(s,"px;\n }\n\n [dir=rtl].gleap-frame-container--classic-left {\n left: auto;\n right: ").concat(i,"px;\n bottom: ").concat(s,"px;\n }\n\n .gleap-frame-container--modern-left {\n right: auto;\n left: ").concat(i,"px;\n bottom: ").concat(61+s,"px;\n }\n\n [dir=rtl].gleap-frame-container--modern-left {\n left: auto;\n right: ").concat(i,"px;\n bottom: ").concat(61+s,"px;\n }\n\n .gleap-frame-container--animate {\n pointer-events: auto !important;\n }\n\n @keyframes gleapFadeInUp {\n from {\n opacity: 0;\n transform: translate3d(0, 100%, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n\n @keyframes gleapFadeInUpMobile {\n from {\n opacity: 0;\n transform: translate3d(0, 10%, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n\n .gleap-notification-container {\n position: fixed;\n bottom: ").concat(I,"px;\n right: ").concat(i,"px;\n z-index: ").concat(2147483630,";\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n width: 100%;\n max-width: min(340px, 80vw);\n }\n\n .gleap-notification-container--left {\n left: ").concat(4+i,"px;\n right: initial !important;\n }\n\n [dir=rtl].gleap-notification-container {\n left: ").concat(4+i,"px;\n right: initial !important;\n }\n\n [dir=rtl].gleap-notification-container--left {\n left: initial !important;\n right: ").concat(i,"px !important;\n align-items: flex-start !important;\n }\n\n .gleap-notification-container--no-button {\n bottom: ").concat(s,"px;\n }\n\n .gleap-notification-item {\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n\n .gleap-notification-close {\n border-radius: 100%;\n width: 28px;\n height: 28px;\n background-color: ").concat(v,";\n display: flex;\n justify-content: center;\n align-items: center;\n margin-bottom: 8px;\n cursor: pointer;\n visibility: hidden;\n pointer-events: none;\n }\n\n .gleap-notification-container:hover .gleap-notification-close {\n visibility: visible;\n pointer-events: auto;\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-notification-close {\n visibility: visible;\n pointer-events: auto;\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n }\n\n .gleap-notification-close svg {\n width: 45%;\n height: 45%;\n object-fit: contain;\n fill: ").concat(r,";\n }\n\n .gleap-notification-item-checklist-container {\n display: flex;\n animation: fadeIn;\n animation-duration: .45s;\n background-color: ").concat(r,";\n border-radius: ").concat(v,";\n box-sizing: border-box;\n cursor: pointer;\n flex-direction: column;\n overflow: hidden;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ").concat(x,"px;\n margin-bottom: 12px;\n }\n\n .gleap-notification-item-checklist-content {\n align-items: flex-start;\n display: flex;\n flex-direction: column;\n padding: 15px;\n width: 100%;\n width: min(310px, 70vw);\n max-width: min(310px, 70vw);\n }\n\n .gleap-notification-item-checklist-content-title {\n color: ").concat(h,";\n font-size: 15px;\n font-weight: 500;\n line-height: 21px;\n margin-bottom: 10px;\n max-width: 100%;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .gleap-notification-item-checklist-content-progress {\n width: 100%;\n height: 8px;\n border-radius: 8px;\n background-color: ").concat(y,";\n }\n\n .gleap-notification-item-checklist-content-progress-inner {\n height: 100%;\n border-radius: 8px;\n background-color: ").concat(e,";\n }\n\n .gleap-notification-item-checklist-content-next {\n color: ").concat(v,";\n font-size: 15px;\n font-weight: normal;\n line-height: 21px;\n margin-top: 10px;\n max-width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: flex;\n align-items: center;\n }\n\n .gleap-notification-item-checklist-content-next svg {\n height: 18px;\n margin-right: 5px;\n width: auto;\n }\n\n .gleap-notification-item-checklist-content-next b {\n font-size: 15px;\n font-weight: normal;\n color: ").concat(h,";\n }\n\n .gleap-notification-item-news {\n width: 100%;\n }\n\n .gleap-news-pagination {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 10px;\n width: 100%;\n }\n\n .gleap-news-page-indicator {\n font-size: 12px;\n color: ").concat(v,";\n }\n\n .gleap-news-next-button {\n background-color: ").concat(e,";\n color: ").concat(c,";\n border-radius: ").concat(C,"px;\n box-sizing: border-box;\n padding: 5px 10px;\n font-size: 14px;\n font-weight: bold;\n line-height: 21px;\n border: none;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: none !important;\n outline: none !important;^\n }\n\n .gleap-notification-item-news-content {\n align-items: flex-start;\n display: flex;\n flex-direction: column;\n padding: 15px;\n }\n\n .gleap-notification-item-news-preview {\n color: ").concat(v,";\n font-size: 14px;\n line-height: 21px;\n font-weight: 400;\n overflow-wrap: break-word;\n word-break: break-word;\n display: block;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .gleap-notification-item-news-sender {\n display: flex;\n align-items: center;\n color: ").concat(v,";\n font-size: 15px;\n line-height: 21px;\n font-weight: 400;\n }\n \n .gleap-notification-item-news-content-title {\n color: ").concat(h,";\n font-size: 15px;\n font-weight: 500;\n line-height: 21px;\n margin-bottom: 6px;\n max-width: 100%;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n cursor: pointer;\n }\n\n .gleap-notification-item-news-sender img {\n border-radius: 100%;\n height: 20px;\n margin-right: 8px;\n object-fit: cover;\n width: 20px;\n }\n\n [dir=rtl] .gleap-notification-item-news-sender img {\n margin-left: 8px;\n margin-right: 0px !important;\n }\n\n .gleap-notification-item-news-container {\n display: flex;\n animation: fadeIn;\n animation-duration: .45s;\n background-color: ").concat(r,";\n border-radius: ").concat(v,";\n box-sizing: border-box;\n flex-direction: column;\n overflow: hidden;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ").concat(x,"px;\n margin-bottom: 12px;\n }\n\n .gleap-notification-item-news-image {\n background-color: ").concat(v,";\n height: 170px;\n max-height: 170px;\n object-fit: cover;\n width: 100%;\n cursor: pointer;\n }\n \n .gleap-notification-item-news-content-title:hover {\n color: ").concat(e,";\n }\n\n .gleap-notification-item {\n display: flex;\n align-items: flex-end;\n cursor: pointer;\n }\n\n .gleap-notification-item img {\n width: 32px;\n height: 32px;\n min-width: 32px;\n border-radius: 100%;\n object-fit: cover;\n margin-right: 8px;\n margin-bottom: 12px;\n cursor: pointer;\n }\n\n [dir=rtl] .gleap-notification-item img {\n margin-left: 8px;\n margin-right: 0px !important;\n }\n\n .gleap-notification-item-container {\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ").concat(x,"px;\n border-bottom-left-radius: 0px;\n padding: 20px;\n background-color: ").concat(r,";\n margin-bottom: 12px;\n cursor: pointer;\n font-size: 15px;\n line-height: 21px;\n color: ").concat(h,';\n position: relative;\n }\n\n .gleap-notification-item-container::after {\n content: " ";\n position: absolute;\n bottom: 0px;\n width: 0px;\n height: 0px;\n left: -6px;\n border-style: solid;\n border-width: 0px 0px 10px 6px;\n border-color: transparent transparent ').concat(r,";\n }\n\n .gleap-notification-item-sender {\n color: ").concat(v,";\n line-height: 20px;\n }\n\n .gleap-notification-item-content {\n line-height: 20px;\n color: ").concat(h,";\n margin-top: 4px;\n min-width: min(200px, 50vw);\n word-wrap: break-word;\n word-break: break-word;\n }\n\n .gleap-frame-container-inner {\n position: relative;\n width: 100%;\n height: calc(100vh - ").concat(84+s,"px);\n max-height: ").concat(700,'px;\n }\n\n .gleap-frame-container--survey .gleap-frame-container-inner {\n height: calc(100vh - 40px);\n }\n \n .gleap-frame-container-inner:before {\n content: " ";\n position: absolute;\n width: 100%;\n height: calc(100% - ').concat(k,"px);\n top: ").concat(k,"px;\n background-color: ").concat(r,";\n z-index: -1;\n }\n \n .gleap-frame-container iframe {\n height: 100% !important;\n width: 100% !important;\n max-width: 100% !important;\n display: block !important;\n pointer-events: auto !important;\n }\n \n .gleap-frame-container--hidden {\n display: none !important;\n pointer-events: none;\n animation: none !important;\n }\n \n .bb-feedback-button {\n margin: 0px;\n position: fixed;\n bottom: ").concat(s,"px;\n right: ").concat(i,"px;\n border-radius: 30px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n background-color: transparent;\n color: #000000;\n z-index: ").concat(2147483630,";\n box-sizing: border-box;\n display: flex;\n align-items: center;\n padding: 0px;\n }\n\n [dir=rtl].bb-feedback-button {\n bottom: ").concat(s,"px;\n right: auto;\n left: ").concat(i,"px;\n }\n \n .bb-feedback-button--bottomleft {\n bottom: ").concat(s,"px;\n right: auto;\n left: ").concat(i,"px;\n }\n\n [dir=rtl].bb-feedback-button--bottomleft {\n bottom: ").concat(s,"px;\n right: ").concat(i,'px;\n left: auto;\n }\n \n .bb-feedback-button--disabled {\n display: none !important;\n }\n\n .bb-feedback-button--hidden {\n display: none !important;\n }\n \n .bb-feedback-button-text {\n padding: 8px 12px;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n background-color: #fff;\n border-radius: 8px;\n box-shadow: 0px 0px 14px 0px rgba(0, 0, 0, 0.15);\n position: relative;\n z-index: 99;\n }\n \n .bb-feedback-button-text:before {\n content: "";\n position: absolute;\n box-shadow: rgba(0, 0, 0, 0.04) 6px 6px 5px;\n transform: rotate(315deg);\n bottom: 16px;\n right: -4px;\n border-width: 10px;\n border-style: solid;\n border-color: transparent #fff #fff transparent;\n }\n \n .bb-feedback-button--bottomleft .bb-feedback-button-text:before {\n display: none;\n }\n \n .bb-feedback-button-text:after {\n content: "";\n position: absolute;\n bottom: 12px;\n right: 0px;\n background-color: #fff;\n width: 5px;\n height: 30px;\n }\n \n .bb-feedback-button-text-title {\n font-family: sans-serif;\n font-size: 14px;\n color: #666;\n line-height: 18px;\n max-width: 220px;\n }\n \n .bb-feedback-button-text-title b {\n color: #000000;\n font-weight: 600;\n }\n\n .bb-notification-bubble {\n position: absolute;\n top: -5px;\n right: -5px;\n min-width: 12px;\n padding: 0px 4px;\n height: 20px;\n min-width: 20px;\n border-radius: 20px;\n background-color: red;\n color: #fff;\n font-size: 11px;\n font-family: sans-serif;\n text-align: center;\n line-height: 20px;\n }\n\n .bb-notification-bubble--hidden {\n display: none;\n }\n \n .bb-feedback-button-icon {\n width: 48px;\n height: 48px;\n border-radius: 48px;\n background-color: #485bff;\n transition: box-shadow, transform 0.2s ease-in-out;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n position: relative;\n }\n \n .bb-feedback-button-classic {\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n top: 50%;\n right: 0px;\n position: fixed;\n transform: rotate(-90deg) translate(50%, -50%);\n transform-origin: 100% 50%;\n padding: 9px 20px;\n text-align: center;\n background-color: #485bff;\n border-top-left-radius: 8px;\n border-top-right-radius: 8px;\n font-family: sans-serif;\n font-size: 16px;\n color: #fff;\n box-shadow: 0px 0px 14px 0px rgba(0, 0, 0, 0.25);\n }\n\n [dir=rtl].bb-feedback-button .bb-feedback-button-classic {\n top: 50%;\n left: 0px;\n right: auto;\n transform: rotate(90deg) translate(-50%, -100%);\n transform-origin: 0% 0%;\n }\n \n .bb-feedback-button-classic--left {\n top: 50%;\n left: 0px;\n right: auto;\n transform: rotate(90deg) translate(-50%, -100%);\n transform-origin: 0% 0%;\n }\n\n [dir=rtl].bb-feedback-button .bb-feedback-button-classic--left {\n top: 50%;\n right: 0px;\n left: auto;\n transform: rotate(-90deg) translate(50%, -50%);\n transform-origin: 100% 50%;\n }\n \n .bb-feedback-button-classic--bottom {\n top: auto;\n bottom: 0px;\n transform: none;\n right: ').concat(i,"px;\n left: auto;\n }\n \n [dir=rtl].bb-feedback-button .bb-feedback-button-classic--bottom {\n top: auto;\n bottom: 0px;\n transform: none;\n left: ").concat(i,"px;\n right: auto;\n }\n\n .bb-feedback-button--classic-button-style {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n \n .bb-feedback-button--open.bb-feedback-button--classic-button-style {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: bbFadeOutRight;\n }\n \n .bb-feedback-button .bb-logo-logo {\n position: absolute;\n width: 30px;\n height: 30px;\n top: 9px;\n left: 9px;\n object-fit: contain;\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-name: bbZoomIn;\n }\n \n .bb-feedback-button .bb-logo-arrowdown {\n position: absolute;\n width: 14px;\n height: 14px;\n top: 17px;\n left: 17px;\n object-fit: contain;\n animation-duration: 0.3s;\n animation-fill-mode: both;\n }\n \n .bb-feedback-button .bb-logo-arrowdown {\n animation-name: bbZoomOut;\n }\n \n .bb-feedback-button--open .bb-logo-arrowdown {\n animation-name: bbZoomIn;\n }\n \n .bb-feedback-button--open .bb-logo-logo {\n animation-name: bbZoomOut;\n }\n \n .bb-feedback-button-icon:hover {\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.25), 0px 0px 20px rgba(0, 0, 0, 0.2);\n transform: scale(1.1);\n }\n \n .bb-feedback-button--open .bb-feedback-button-text {\n animation-name: bbFadeOutDown;\n }\n \n .bb-feedback-button--open .bb-feedback-button-icon {\n display: flex;\n }\n \n .bb-capture-svg {\n position: fixed;\n z-index: ").concat(2147483614,";\n top: 0px;\n left: 0px;\n right: 0px;\n width: 100%;\n height: 100%;\n padding: 0px;\n margin: 0px;\n cursor: crosshair;\n }\n\n .bb-capture-svg--preview {\n cursor: auto !important;\n }\n \n .bb-rec-on-circle {\n animation-name: bbRecIconFade;\n animation-duration: 2s;\n animation-iteration-count: infinite;\n animation-direction: alternate;\n }\n \n .bb-rec-on-cont {\n animation-name: bbRecIconContFade;\n animation-duration: 2s;\n animation-iteration-count: infinite;\n animation-direction: alternate;\n }\n \n .bb-capture-editor-drag-info {\n position: fixed;\n top: -200px;\n left: 0px;\n z-index: ").concat(2147483616,";\n transition: opacity 0.3s ease-in-out;\n }\n \n .bb-capture-editor-drag-info svg {\n width: 24px;\n height: 24px;\n }\n \n .bb-capture-editor-borderlayer {\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n border: 4px solid ").concat(e,";\n cursor: crosshair;\n z-index: ").concat(2147483610,";\n box-sizing: border-box;\n pointer-events: none;\n }\n \n .bb-capture-editor-notrecording .bb-capture-editor-borderlayer {\n background-color: rgba(0, 0, 0, 0.8);\n }\n\n .bb-capture-editor-recording .bb-capture-editor-borderlayer {\n border: 4px solid #eb144c !important;\n }\n \n .bb-capture-editor-recording .bb-capture-dismiss {\n display: none;\n }\n \n .bb-capture-editor-item-inactive {\n opacity: 0.3;\n cursor: not-allowed !important;\n }\n \n .bb-capture-editor-notrecording .bb-capture-toolbar-drawingitem {\n opacity: 0.3;\n cursor: not-allowed !important;\n }\n \n .bb-capture-editor-notrecording .bb-capture-editor-drag-info {\n display: none;\n }\n \n .bb-capture-editor-notrecording .bb-capture-svg {\n pointer-events: none !important;\n }\n \n .bb-capture-toolbar {\n position: fixed;\n top: 20px;\n left: 50%;\n transform: translateX(-50%);\n z-index: ").concat(2147483618,";\n background-color: #fff;\n padding: 5px;\n display: flex;\n align-items: center;\n border-radius: 8px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n transition: opacity 0.3s ease-in-out;\n }\n \n .bb-capture-dismiss {\n position: fixed;\n top: 0px;\n right: 0px;\n z-index: ").concat(2147483618,";\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n width: 36px;\n height: 36px;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: ").concat(e,";\n border-bottom-left-radius: ").concat(C,"px;\n }\n\n [dir=rtl] .bb-capture-dismiss {\n top: 0px;\n left: 0px;\n right: auto;\n border-bottom-left-radius: 0px !important;\n border-bottom-right-radius: ").concat(C,"px;\n }\n \n .bb-capture-dismiss svg path {\n fill: ").concat(c,';\n }\n \n .bb-capture-dismiss svg {\n width: 20px;\n height: 20px;\n object-fit: contain;\n }\n \n .bb-capture-button-next {\n font-family: sans-serif;\n box-sizing: border-box;\n font-weight: 600;\n text-align: center;\n width: auto;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n margin: 0px;\n line-height: 36px;\n padding: 0px 12px;\n font-size: 15px;\n margin-left: 12px;\n }\n\n [dir=rtl].bb-capture-editor .bb-capture-button-next {\n margin-left: auto;\n margin-right: 12px;\n }\n \n .bb-capture-toolbar-item-spacer {\n width: 1px;\n height: 38px;\n min-width: 1px;\n margin: 0px 5px;\n }\n \n .bb-capture-toolbar-item {\n width: 42px;\n height: 38px;\n min-width: 42px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n position: relative;\n margin-right: 5px;\n }\n\n .drag-handle-item {\n cursor: grab !important;\n width: 34px;\n min-width: 34px;\n }\n\n .drag-handle-item svg {\n width: 18px !important;\n height: 18px !important;\n }\n \n .bb-capture-toolbar-item svg {\n width: 23px;\n height: 23px;\n object-fit: contain;\n }\n \n .bb-capture-toolbar-item-selectedcolor {\n border-radius: 100%;\n width: 20px;\n height: 20px;\n background-color: #db4035;\n }\n \n .bb-capture-toolbar-item[data-type="undo"] svg {\n width: 18px;\n height: 18px;\n }\n \n .bb-capture-toolbar-item[data-active="true"] {\n position: relative;\n }\n \n .bb-capture-preview {\n display: none;\n background-color: rgba(0, 0, 0, 0.6);\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n justify-content: center;\n align-items: center;\n z-index: ').concat(2147483620,";\n }\n \n .bb-capture-preview-inner {\n background-color: #fff;\n padding: 0px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n border-radius: 8px;\n flex-direction: column;\n max-width: 640px;\n width: 100%;\n margin: 20px;\n }\n \n .bb-capture-preview-inner video {\n border-radius: 8px 8px 0px 0px;\n display: block;\n border: 0px;\n outline: none;\n width: 100%;\n max-height: 60vh;\n }\n \n .bb-capture-preview-buttons {\n display: flex;\n justify-content: space-between;\n padding: 14px;\n }\n \n .bb-capture-preview-retrybutton {\n font-family: sans-serif;\n border-radius: 21px;\n box-sizing: border-box;\n padding: 12px 26px;\n font-size: 16px;\n line-height: 19px;\n font-weight: 600;\n text-align: center;\n margin-top: 0px;\n margin-bottom: 0px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-preview-sendbutton {\n font-family: sans-serif;\n border-radius: 21px;\n box-sizing: border-box;\n padding: 12px 26px;\n font-size: 16px;\n line-height: 19px;\n font-weight: 600;\n text-align: center;\n margin-top: 0px;\n margin-bottom: 0px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-preview-retrybutton:hover,\n .bb-capture-preview-sendbutton:hover {\n opacity: 0.9;\n }\n \n .bb-capture-toolbar-item-recording {\n margin-right: 0px;\n }\n \n .bb-capture-toolbar-item-recording svg {\n width: 33px;\n height: 33px;\n }\n \n .bb-capture-toolbar-item-colorpicker {\n position: fixed;\n top: 70px;\n left: 50%;\n transform: translateX(-50%);\n z-index: ").concat(2147483618,';\n background-color: #fff;\n display: none;\n padding: 10px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n border-radius: 8px;\n }\n \n .bb-capture-toolbar-item-color {\n width: 20px;\n height: 20px;\n border-radius: 100%;\n margin-right: 12px;\n box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.15);\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-toolbar-item-color:hover {\n box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.25);\n }\n \n .bb-capture-toolbar-item-color:last-of-type {\n margin-right: 0px;\n }\n \n [dir=rtl].bb-capture-editor .bb-capture-toolbar-item-color {\n margin-right: auto;\n margin-left: 12px;\n }\n \n [dir=rtl].bb-capture-editor .bb-capture-toolbar-item-color:last-of-type {\n margin-right: auto;\n margin-left: 0px;\n }\n \n .bb-capture-toolbar-item-recording[data-active="true"] svg:first-of-type {\n display: none;\n }\n \n .bb-capture-toolbar-item-recording[data-active="true"] svg:nth-of-type(2) {\n display: block;\n }\n \n .bb-capture-toolbar-item-recording[data-active="false"] svg:first-of-type {\n display: block;\n }\n \n .bb-capture-toolbar-item-recording[data-active="false"] svg:nth-of-type(2) {\n display: none;\n }\n \n .bb-capture-toolbar-item--active {\n background-color: #eee;\n }\n \n .bb-capture-toolbar-item:hover svg {\n opacity: 1;\n }\n \n .bb-capture-toolbar-item--active {\n background-color: #f8f8f8;\n }\n \n .bb-capture-toolbar-item--active svg {\n opacity: 1;\n }\n \n .bb-capture-toolbar-item--inactivecross::before {\n content: "";\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n height: 3px;\n width: 26px;\n margin: auto;\n border-radius: 4px;\n background-color: #e80000;\n transform: rotate(45deg);\n }\n \n .bb-capture-toolbar-item--inactivecross svg {\n fill: #eee;\n }\n \n .bb-capture-toolbar-item-timer {\n text-align: left;\n line-height: 32px;\n font-size: 14px;\n font-family: sans-serif;\n margin: 5px;\n min-width: 40px;\n display: none;\n }\n \n .bb-capture-toolbar-item .bb-tooltip {\n background-color: #555;\n color: #fff;\n visibility: hidden;\n font-size: 14px;\n font-family: sans-serif;\n text-align: center;\n padding: 5px 10px;\n position: absolute;\n z-index: 1;\n top: 45px;\n left: 0px;\n transform: translateX(calc(-50% + 21px));\n opacity: 0;\n transition: opacity 0.3s;\n white-space: nowrap;\n }\n \n .bb-capture-toolbar-item .bb-tooltip::after {\n content: "";\n position: absolute;\n bottom: 100%;\n left: 50%;\n margin-left: -5px;\n border-width: 5px;\n border-style: solid;\n transform: rotate(180deg);\n border-color: #555 transparent transparent transparent;\n }\n \n .bb-capture-toolbar-item:hover .bb-tooltip {\n visibility: visible;\n opacity: 1;\n }\n \n .bb-capture-options {\n display: none;\n }\n \n .bb-capture-options--active {\n display: flex;\n }\n\n @keyframes bbFadeOutRight {\n from {\n opacity: 1;\n }\n \n to {\n opacity: 0;\n }\n }\n \n @keyframes bbFadeOutDown {\n from {\n opacity: 1;\n }\n \n to {\n opacity: 0;\n transform: translate3d(0, 100%, 0);\n }\n }\n \n @keyframes bbFadeInOpacity {\n from {\n opacity: 0;\n }\n \n to {\n opacity: 1;\n }\n }\n \n @keyframes bbZoomOut {\n from {\n opacity: 1;\n }\n \n 50% {\n opacity: 0;\n transform: scale3d(0.3, 0.3, 0.3);\n }\n \n to {\n opacity: 0;\n }\n }\n \n @keyframes bbZoomIn {\n from {\n opacity: 0;\n transform: scale3d(0.3, 0.3, 0.3);\n }\n \n 50% {\n opacity: 1;\n }\n }\n \n @keyframes bbRecIconContFade {\n 0% {\n fill: #b10802;\n }\n 50% {\n fill: #ff0000;\n }\n 100% {\n fill: #b10802;\n }\n } \n .bb-capture-preview-retrybutton {\n color: ').concat(h,";\n border-radius: ").concat(w,"px;\n background-color: ").concat(y,";\n }\n .bb-capture-preview-retrybutton:hover {\n background-color: ").concat(b,";\n }\n @keyframes bb-suc-fill {\n 100% {\n box-shadow: inset 0px 0px 0px 30px ").concat(e,";\n }\n }\n .bb-capture-toolbar-item-spacer {\n background-color: ").concat(y,";\n }\n .bb-tooltip {\n border-radius: ").concat(S,"px;\n }\n @keyframes bbRecIconFade {\n 0% {\n fill: transparent;\n }\n 50% {\n fill: ").concat(b,";\n }\n 100% {\n fill: transparent;\n }\n }\n .bb-capture-preview-sendbutton {\n color: ").concat(c,";\n background-color: ").concat(e,";\n border-radius: ").concat(w,"px;\n }\n .bb-capture-button-next {\n color: ").concat(c,";\n background-color: ").concat(e,";\n border-radius: ").concat(C,"px;\n }\n .bb-capture-preview-inner {\n background-color: ").concat(r,";\n border-radius: ").concat(S,"px;\n }\n .bb-capture-toolbar-item-timer {\n color: ").concat(v,";\n }\n .bb-svg-path {\n fill: ").concat(h,";\n }\n .bb-capture-toolbar-item {\n border-radius: ").concat(S,"px;\n }\n .bb-capture-toolbar {\n background-color: ").concat(r,";\n border-radius: ").concat(S,"px;\n }\n .bb-capture-toolbar-item-colorpicker {\n background-color: ").concat(r,";\n }\n .bb-capture-toolbar-item--active {\n background-color: ").concat(y,";\n }\n .bb-feedback-button-classic {\n border-top-left-radius: ").concat(S,"px;\n border-top-right-radius: ").concat(S,"px;\n }\n .bb-logo-logo--default path {\n fill: ").concat(p,";\n }\n .bb-logo-arrowdown {\n fill: ").concat(p,";\n }\n .bb-feedback-button-icon {\n background-color: ").concat(n,";\n }\n .bb-feedback-button-classic {\n background-color: ").concat(n,";\n color: ").concat(p,";\n }\n\n @media only screen and (max-width: 450px) {\n [dir=rtl].gleap-frame-container,\n .gleap-frame-container {\n left: 0px;\n right: 0px;\n width: 100vw;\n max-width: 100vw;\n min-height: 100vh;\n max-height: 100vh;\n min-height: 100dvh !important;\n max-height: 100dvh !important;\n top: 0px;\n bottom: 0px;\n border-radius: 0px;\n animation-name: gleapFadeInUpMobile;\n }\n\n .gleap-frame-container-inner {\n width: 100vw;\n height: 100%;\n }\n\n .gleap-frame-container:not(.gleap-frame-container--survey):not(.gleap-frame-container--survey-full) .gleap-frame-container-inner {\n max-height: calc(var(--glvh, 1vh) * 100) !important;\n }\n\n .gleap-frame-container--survey {\n height: auto !important;\n top: initial !important;\n bottom: 0px !important;\n min-height: initial !important;\n }\n\n .gleap-frame-container--survey .gleap-frame-container-inner {\n height: 100vh !important;\n }\n\n .bb-tooltip {\n display: none !important;\n }\n \n .bb-capture-toolbar-item-colorpicker {\n top: 75px;\n }\n \n .bb-capture-button-next {\n margin-left: auto;\n }\n \n .bb-capture-dismiss {\n display: none;\n }\n \n .bb-capture-toolbar {\n top: 15px;\n right: 15px;\n left: 15px;\n width: auto;\n transform: none;\n }\n\n .bb-capture-editor-drag-info {\n display: none;\n }\n \n .bb-capture-editor-borderlayer {\n border-width: 4px;\n }\n }\n \n @media print {\n .bb-feedback-button {\n display: none !important;\n }\n \n .gleap-frame-container {\n display: none !important;\n }\n }\n\n .gleap-tour-sender {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n margin-bottom: 10px;\n }\n\n .gleap-tour-sender-image {\n width: 32px;\n height: 32px;\n border-radius: 32px;\n margin-right: 10px;\n background-size: cover;\n background-repeat: no-repeat;\n }\n\n .gleap-tour-popover.gleap-tour-popover-post {\n min-width: 550px;\n max-width: 550px;\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-tour-popover.gleap-tour-popover-post {\n min-width: calc(100vw - 40px);\n max-width: calc(100vw - 40px);\n }\n }\n\n .gleap-tour-message,\n .gleap-tour-message p,\n .gleap-tour-message ul {\n color: ").concat(h,";\n }\n\n .gleap-tour-message h2 {\n font-weight: 600;\n font-size: 22px;\n }\n\n .gleap-tour-message h3 {\n font-weight: 600;\n font-size: 18px;\n }\n\n .gleap-tour-message p {\n line-height: 1.3;\n margin-bottom: 10px !important;\n margin-top: 10px !important;\n }\n\n .gleap-tour-message ul {\n line-height: 1.3;\n padding-left: 20px;\n margin-top: 10px !important;\n margin-bottom: 10px !important;\n }\n\n .gleap-tour-message {\n max-height: calc(80vh - 100px) !important;\n overflow-y: auto;\n min-width: 270px;\n }\n\n .gleap-tour-message::-webkit-scrollbar {\n width: 5px;\n }\n\n .gleap-tour-message::-webkit-scrollbar-track {\n border-radius: 0px;\n }\n \n .gleap-tour-message::-webkit-scrollbar-thumb {\n background: ").concat(b,"; \n border-radius: 5px;\n }\n\n .gleap-tour-message::-webkit-scrollbar-thumb:hover {\n background: ").concat(v,";\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-tour-message {\n min-width: auto !important;\n }\n }\n\n .gleap-tour-message iframe {\n width: 100%;\n height: 300px;\n margin-top: 10px;\n margin-bottom: 10px;\n border: none;\n outline: none;\n display: block;\n }\n\n .gleap-tour-sender-name {\n font-size: 15px;\n }\n\n .gleap-tour-video {\n width: 100%;\n max-width: 100%;\n }\n\n .gleap-tour-video-svg--fullscreen {\n width: 100% !important;\n height: 100% !important;\n top: 0px !important;\n left: 0px !important;\n right: 0px !important;\n bottom: 0px !important;\n }\n\n .gleap-tour-video--playing .gleap-tour-video-playpause {\n opacity: 0;\n }\n \n .gleap-tour-video--playing:hover .gleap-tour-video-playpause {\n opacity: 1;\n }\n\n .gleap-tour-popover-video-pointer {\n padding: 0px !important;\n border-radius: 8px;\n position: relative;\n background-color: transparent !important;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-footer {\n position: absolute;\n top: 0px;\n left: 20px;\n right: 20px;\n opacity: 0;\n transition: opacity 200ms ease-in-out;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-footer button {\n padding: 5px 12px;\n }\n\n .gleap-tour-popover-video-pointer.gleap-tour-popover-can-close .gleap-tour-popover-footer {\n right: 40px !important;\n }\n\n .gleap-tour-popover-video-pointer:hover .gleap-tour-popover-footer {\n opacity: 1;\n }\n\n .gleap-tour-popover-pointer.gleap-tour-popover-no-sender .gleap-tour-message {\n padding-right: 20px;\n }\n\n .gleap-tour-video video {\n width: 100%;\n max-width: 100%;\n height: auto;\n border: none;\n outline: none;\n display: block;\n border-radius: 8px;\n }\n\n .gleap-admin-collapse-ui {\n z-index: ").concat(2147483635,";\n cursor: pointer;\n position: fixed;\n bottom: 75px;\n right: 20px;\n width: 32px;\n height: 32px;\n border-radius: 100%;\n background-color: #fff;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: rgba(0, 0, 0, 0.16) 0px 10px 36px 0px, rgba(0, 0, 0, 0.06) 0px 0px 0px 1px;\n }\n\n .gleap-admin-collapse-ui svg {\n width: 20px;\n height: 14px;\n fill: #000 !important;\n }\n\n .gleap-admin-collapse-ui-active {\n bottom: 20px !important;\n }\n\n .gleap-admin-collapse-ui-active svg {\n transform: rotate(180deg);\n }\n\n .gleap-admin-frame-container-active {\n display: none !important;\n }\n\n .gleap-admin-frame-container {\n position: fixed;\n bottom: 0px;\n left: 0px;\n right: 0px;\n width: 100vw;\n z-index: ").concat(2147483640,";\n }\n\n .gleap-admin-frame {\n width: 100%;\n height: 100% !important;\n border: none;\n outline: none;\n display: block;\n }\n \n .gleap-tour-message .linktype-link {\n display: inline-block !important;\n background-color: transparent !important;\n color: ").concat(n," !important;\n }\n\n .gleap-tooltip .linktype-button,\n .gleap-tour-message .linktype-button {\n display: inline-block !important;\n border-radius: 5px;\n box-sizing: border-box;\n padding: 10px 20px !important;\n text-decoration: none !important;\n background-color: ").concat(n," !important;\n color: ").concat(p," !important;\n }\n\n .gleap-tour-message img {\n width: 100%;\n max-width: 100%;\n min-height: 260px;\n height: auto;\n margin-top: 10px;\n margin-bottom: 10px;\n object-fit: cover;\n }\n\n .gleap-tour-active .gleap-tour-overlay {\n pointer-events: none;\n }\n \n .gleap-tour-active * {\n pointer-events: none;\n }\n \n .gleap-tour-active .gleap-tour-active-element,\n .gleap-tour-active .gleap-tour-active-element *,\n .gleap-tour-popover,\n .gleap-tour-popover * {\n pointer-events: auto;\n }\n \n @keyframes animate-fade-in {\n 0% {\n opacity: 0;\n }\n \n to {\n opacity: 1;\n }\n }\n \n .gleap-tour-fade .gleap-tour-overlay {\n animation: animate-fade-in 200ms ease-in-out;\n }\n \n .gleap-tour-fade .gleap-tour-popover {\n animation: animate-fade-in 200ms;\n }\n\n .gleap-tour-video-playpause {\n position: absolute;\n bottom: 8px;\n left: 8px;\n width: 32px;\n height: 32px;\n padding: 4px;\n background-color: rgba(0,0,0,0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border-radius: 8px;\n transition: opacity 200ms ease-in-out;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-arrow {\n display: none !important;\n }\n\n .gleap-tour-video-playpause svg {\n width: 34px;\n height: auto;\n fill: #fff;\n }\n \n /* Popover styles */\n .gleap-tour-popover {\n all: unset;\n box-sizing: border-box;\n color: #2d2d2d;\n margin: 0;\n padding: 15px;\n border-radius: ").concat(S,'px;\n min-width: 250px;\n max-width: 300px;\n box-shadow: 0 1px 10px #0006;\n z-index: 1000000000;\n position: fixed;\n top: 0;\n right: 0;\n background-color: #fff;\n }\n \n .gleap-tour-popover * {\n font-family: "Helvetica Neue", Inter, ui-sans-serif, "Apple Color Emoji", Helvetica, Arial, sans-serif;\n }\n \n .gleap-tour-popover-title {\n font: 19px / normal sans-serif;\n font-weight: 700;\n display: block;\n position: relative;\n line-height: 1.5;\n zoom: 1;\n margin: 0;\n }\n \n .gleap-tour-popover-close-btn {\n all: unset;\n position: absolute;\n top: 5px;\n right: 5px;\n width: 32px;\n height: 32px;\n cursor: pointer;\n font-size: 30px;\n font-weight: 500;\n line-height: 32px;\n color: #d2d2d2;\n z-index: 1;\n text-align: center;\n transition: color;\n transition-duration: 200ms;\n }\n \n .gleap-tour-popover-close-btn:hover,\n .gleap-tour-popover-close-btn:focus {\n color: #2d2d2d;\n }\n \n .gleap-tour-popover-title[style*="block"] + .gleap-tour-popover-description {\n margin-top: 5px;\n }\n \n .gleap-tour-popover-description {\n margin-bottom: 0;\n font: 15px / normal sans-serif;\n line-height: 1.5;\n font-weight: 400;\n zoom: 1;\n }\n \n .gleap-tour-popover-footer {\n margin-top: 15px;\n text-align: right;\n zoom: 1;\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n \n .gleap-tour-popover-progress-text {\n font-size: 13px;\n font-weight: 400;\n color: #727272;\n zoom: 1;\n }\n \n .gleap-tour-popover-footer button {\n background-color: ').concat(e,";\n color: ").concat(c,";\n border-radius: ").concat(C,"px;\n box-sizing: border-box;\n padding: 10px 20px;\n font-size: 14px;\n font-weight: bold;\n line-height: 21px;\n border: none;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: none !important;\n outline: none !important;\n }\n\n .gleap-tour-popover-prev-btn {\n color: ").concat(h," !important;\n background-color: ").concat(y," !important;\n margin-right: 3px;\n }\n\n .gleap-tour-popover-prev-btn:hover {\n background-color: ").concat(e,"22 !important;\n color: ").concat(e,' !important;\n }\n \n .gleap-tour-popover-footer .gleap-tour-popover-btn-disabled {\n opacity: 0.5;\n pointer-events: none;\n }\n \n /* Disable the scrolling of parent element if it has an active element*/\n :not(body):has(> .gleap-tour-active-element) {\n overflow: hidden !important;\n }\n \n .gleap-tour-no-interaction, .gleap-tour-no-interaction * {\n pointer-events: none !important;\n }\n \n .gleap-tour-popover-navigation-btns {\n display: flex;\n flex-grow: 1;\n justify-content: flex-end;\n }\n \n .gleap-tour-popover-navigation-btns button + button {\n margin-left: 4px;\n }\n \n .gleap-tour-popover-arrow {\n content: "";\n position: absolute;\n border: 5px solid #fff;\n }\n \n .gleap-tour-popover-arrow-side-over {\n display: none;\n }\n \n /** Popover Arrow Sides **/\n .gleap-tour-popover-arrow-side-left {\n left: 100%;\n border-right-color: transparent;\n border-bottom-color: transparent;\n border-top-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-right {\n right: 100%;\n border-left-color: transparent;\n border-bottom-color: transparent;\n border-top-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-top {\n top: 100%;\n border-right-color: transparent;\n border-bottom-color: transparent;\n border-left-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-bottom {\n bottom: 100%;\n border-left-color: transparent;\n border-top-color: transparent;\n border-right-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-center {\n display: none;\n }\n \n /* Left/Start + Right/Start */\n .gleap-tour-popover-arrow-side-left.gleap-tour-popover-arrow-align-start,\n .gleap-tour-popover-arrow-side-right.gleap-tour-popover-arrow-align-start {\n top: 15px;\n }\n \n /* Top/Start + Bottom/Start */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-start,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-start {\n left: 15px;\n }\n \n /* End/Left + End/Right */\n .gleap-tour-popover-arrow-align-end.gleap-tour-popover-arrow-side-left,\n .gleap-tour-popover-arrow-align-end.gleap-tour-popover-arrow-side-right {\n bottom: 15px;\n }\n \n /* Top/End + Bottom/End */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-end,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-end {\n right: 15px;\n }\n \n /* Left/Center + Right/Center */\n .gleap-tour-popover-arrow-side-left.gleap-tour-popover-arrow-align-center,\n .gleap-tour-popover-arrow-side-right.gleap-tour-popover-arrow-align-center {\n top: 50%;\n margin-top: -5px;\n }\n \n /* Top/Center + Bottom/Center */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-center,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-center {\n left: 50%;\n margin-left: -5px;\n }\n \n /* No arrow */\n .gleap-tour-popover-arrow-none {\n display: none;\n } \n\n /* Modal styles */\n .gleap-modal-wrapper {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: ').concat(2147483640,";\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .gleap-modal-backdrop {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.5);\n z-index: ").concat(2147483641,";\n }\n\n .gleap-modal {\n position: relative;\n width: 90%;\n max-width: 600px;\n max-height: 90vh;\n z-index: ").concat(2147483700,";\n background-color: ").concat(r,";\n border-radius: ").concat(k,"px;\n overflow: hidden;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-name: gleapFadeInUp;\n }\n\n .gleap-modal-frame {\n width: 100%;\n border: none;\n display: block;\n outline: none;\n }\n\n body.gleap-modal-open {\n overflow: hidden;\n }\n\n @keyframes gleapFadeInUp {\n from {\n opacity: 0;\n transform: translate3d(0, 20px, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n "),E=document.querySelector(".gleap-styles");E&&E.remove();var T=document.createElement("style");T.innerHTML=O,T.className="gleap-styles",document.body.appendChild(T)}(e,t,n,r,o,i,s,l)}))}},{key:"sendSilentCrashReport",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"MEDIUM",o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{screenshot:!0,replays:!0,attachments:!0};return e.sendSilentCrashReportWithFormData({description:t},n,o)}},{key:"sendSilentCrashReportWithFormData",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"MEDIUM",o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{screenshot:!0,replays:!0,attachments:!0};if(!this.silentCrashReportSent){this.silentCrashReportSent=!0,setTimeout((function(){t.silentCrashReportSent=!1}),1e4);var r=o?k(o):{},i=et.getInstance();if(i.ready){var a=e||{};i.session.email&&(a.reportedBy=i.session.email),new _t("CRASH",n,a,!0,r).sendFeedback().then((function(){})).catch((function(e){}))}}}},{key:"showSurvey",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"survey";e.startFeedbackFlowWithOptions(t,{hideBackButton:!0,format:n},!0)}},{key:"startClassicForm",value:function(t,n){e.startFeedbackFlowWithOptions(t,{hideBackButton:!n})}},{key:"startFeedbackFlow",value:function(t,n){e.startFeedbackFlowWithOptions(t,{hideBackButton:!n})}},{key:"startFeedbackFlowWithOptions",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=n.autostartDrawing,i=n.hideBackButton,a=n.format;if(et.getInstance().ready){e.getInstance().setGlobalDataItem("snapshotPosition",{x:window.scrollX,y:window.scrollY});var s="start-feedbackflow";o&&(s="start-survey"),Vt.getInstance().setAppMode(o?a:"widget"),Vt.getInstance().sendMessage({name:s,data:{flow:t,hideBackButton:i,format:a}},!0),r?Vt.getInstance().showDrawingScreen("screenshot"):Vt.getInstance().showWidget()}}},{key:"openConversations",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-conversations",data:{hideBackButton:!e}},!0),Vt.getInstance().showWidget()}},{key:"openConversation",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e&&(Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-conversation",data:{shareToken:e,hideBackButton:!t}},!0),Vt.getInstance().showWidget())}},{key:"startConversation",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];e.startBot("",t)}},{key:"startBot",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"start-bot",data:{botId:e||"",hideBackButton:!t}},!0),Vt.getInstance().showWidget()}},{key:"openHelpCenterCollection",value:function(e){e&&(Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-help-collection",data:{collectionId:e}},!0),Vt.getInstance().showWidget())}},{key:"openHelpCenterArticle",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e&&(Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-help-article",data:{articleId:e,hideBackButton:!t}},!0),Vt.getInstance().showWidget())}},{key:"openHelpCenter",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-helpcenter",data:{hideBackButton:!e}},!0),Vt.getInstance().showWidget()}},{key:"searchHelpCenter",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e&&(Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-helpcenter-search",data:{term:e,hideBackButton:!t}},!0),Vt.getInstance().showWidget())}},{key:"openNewsArticle",value:function(e){e&&(Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-news-article",data:{id:e}},!0),Vt.getInstance().showWidget())}},{key:"openChecklists",value:function(){Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-checklists",data:{}},!0),Vt.getInstance().showWidget()}},{key:"startChecklist",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;return!!e&&(Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"start-checklist",data:Mm({outboundId:e,hideBackButton:!t},n?{sharedKey:n}:{})},!0),Vt.getInstance().showWidget(),!0)}},{key:"openChecklist",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e&&(Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-checklist",data:{id:e,hideBackButton:!t}},!0),Vt.getInstance().showWidget())}},{key:"getChecklistData",value:function(e,t){if(!e)return Promise.reject(new Error("outboundId is required"));var n=D.getInstance();return n.validateChecklist(e,t).then((function(e){return n.fetchChecklist(e)}))}},{key:"openNews",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-news",data:{hideBackButton:!e}},!0),Vt.getInstance().showWidget()}},{key:"openFeatureRequests",value:function(){Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-feature-requests",data:{}},!0),Vt.getInstance().showWidget()}},{key:"startProductTour",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this;et.getInstance().startProductTourConfig(e).then((function(o){var r;!t||null==o||!o.startURL||null!==(r=window)&&void 0!==r&&null!==(r=r.location)&&void 0!==r&&null!==(r=r.href)&&void 0!==r&&r.includes(null==o?void 0:o.baseURL)?n.startProductTourWithConfig(e,o,!0):window.location.href="".concat(o.startURL,"?gleap_tour=").concat(e,"&gleap_tour_delay=1")})).catch((function(e){}))}},{key:"checkForUncompletedTour",value:function(){var e=mm.getInstance().loadUncompletedTour();e&&mm.getInstance().startWithConfig(e.tourId,e.tourData,500)}},{key:"startProductTourWithConfig",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];mm.getInstance().startWithConfig(e,t,0,n)}},{key:"showBanner",value:function(e){try{Bh.getInstance().showBanner(e)}catch(t){}}},{key:"showModal",value:function(e){try{Gh.getInstance().showModal(e)}catch(t){}}},{key:"showNotification",value:function(e){Mh.getInstance().showNotification(e)}}],n&&Lm(t.prototype,n),o&&Lm(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();if(Rm(Dm,"invoked",!0),Rm(Dm,"silentCrashReportSent",!1),Rm(Dm,"instance",void 0),"undefined"!=typeof window){var Nm=window.GleapActions;if(Nm&&Nm.length>0)for(var jm=0;jm{var e={d:(t,n)=>{for(var o in n)e.o(n,o)&&!e.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:n[o]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};(()=>{"use strict";function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function o(e,t){for(var n=0;nVm});var a=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),r(this,"feedbackButton",null),r(this,"injectedFeedbackButton",!1),r(this,"buttonHidden",null),r(this,"lastButtonIcon",null)}var t,n,i;return t=e,i=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],(n=[{key:"destroy",value:function(){this.feedbackButton&&(this.feedbackButton.remove(),this.feedbackButton=null),this.buttonHidden=null,this.lastButtonIcon=null,this.injectedFeedbackButton=!1,this.instance=null}},{key:"toggleFeedbackButton",value:function(t){this.buttonHidden=!t,e.getInstance().updateFeedbackButtonState(),jh.getInstance().updateContainerStyle()}},{key:"feedbackButtonPressed",value:function(){var e=Zt.getInstance();e.isOpened()?e.hideWidget():(e.setAppMode("widget"),e.showWidget())}},{key:"injectFeedbackButton",value:function(){var e=this;if(!this.injectedFeedbackButton){this.injectedFeedbackButton=!0;var t=document.createElement("div");t.addEventListener("click",(function(){e.feedbackButtonPressed()})),document.body.appendChild(t),this.feedbackButton=t,this.updateFeedbackButtonState()}}},{key:"updateNotificationBadge",value:function(e){var t=document.querySelector(".bb-notification-bubble");if(t){var n="bb-notification-bubble--hidden";e>0&&!Zt.getInstance().isOpened()?(t.classList.remove(n),t.innerText=e):t.classList.add(n)}}},{key:"refresh",value:function(){document.querySelector(".bb-feedback-button")?(this.updateFeedbackButtonText(),this.updateFeedbackButtonState()):(this.injectedFeedbackButton=!1,this.feedbackButton=null,this.buttonHidden=null,this.lastButtonIcon=null,this.injectFeedbackButton())}},{key:"updateFeedbackButtonText",value:function(){var t=dt.getInstance().getFlowConfig();if(t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC||t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC_BOTTOM||t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC_LEFT){var n=document.querySelector(".bb-feedback-button-classic");n&&(n.innerText=t.widgetButtonText)}}},{key:"updateFeedbackButtonState",value:function(){if(null!==this.feedbackButton){var t=dt.getInstance().getFlowConfig(),n="";n=t.buttonLogo?''):p("button","#fff"),this.feedbackButton.className="bb-feedback-button gleap-font gl-block",this.feedbackButton.setAttribute("dir",kh.getInstance().isRTLLayout?"rtl":"ltr"),t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC||t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC_BOTTOM||t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC_LEFT?(this.feedbackButton.classList.add("bb-feedback-button--classic-button-style"),this.feedbackButton.innerHTML='
').concat(t.widgetButtonText,"
")):n!==this.lastButtonIcon&&(this.feedbackButton.innerHTML='
'.concat(n).concat(p("arrowdown","#fff"),'
')),this.lastButtonIcon=n;var o=!1;null===e.getInstance().buttonHidden?t.feedbackButtonPosition===e.FEEDBACK_BUTTON_NONE&&(o=!0):e.getInstance().buttonHidden&&(o=!0),o&&this.feedbackButton.classList.add("bb-feedback-button--disabled"),t.feedbackButtonPosition===e.FEEDBACK_BUTTON_BOTTOM_LEFT&&this.feedbackButton.classList.add("bb-feedback-button--bottomleft"),Zt.getInstance().isOpened()&&this.feedbackButton.classList.add("bb-feedback-button--open");var r=Zt.getInstance().appMode;"survey"!==r&&"survey_full"!==r&&"survey_web"!==r||this.feedbackButton.classList.add("bb-feedback-button--survey"),!0!==t.hideForGuests||et.getInstance().isUser()||this.feedbackButton.classList.add("bb-feedback-button--hidden")}}}])&&o(t.prototype,n),i&&o(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}();function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var o,r,i,a,s=[],l=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(o=i.call(n)).done)&&(s.push(o.value),s.length!==t);l=!0);}catch(e){c=!0,r=e}finally{try{if(!l&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(c)throw r}}return s}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return c(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return c(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n=160?"#000000":"#ffffff"},p=function(e,t){return"button"===e?'':"drag"===e?'\x3c!--!Font Awesome Pro 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2025 Fonticons, Inc.--\x3e':"unmute"===e?'':"mute"===e?'':"replay"===e?'\n \n ':"dismiss"===e?'':"blur"===e?'\n \n':"pen"===e?'\n \n \n \n \n \n \n \n \n \n \n \n \n':"rect"===e?'\n \n \n \n \n \n \n \n \n \n \n':"pointer"===e?'\n \n ':"clip"===e?'\n \n \n \n \n \n':"mic"===e?'\n \n \n \n \n ':"camera"===e?'\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n':"recorderon"===e?'\n \n \n \n \n \n \n \n \n \n \n \n':"recorderoff"===e?'\n \n \n \n \n \n \n \n \n ':"arrowdown"===e?'\n \n '):"arrowleft"===e?'\n \n '):"close"===e?'\n \n '):"undo"===e?'\n \n \n \n \n \n \n \n \n \n ':"circle-dot"===e?''):"circle-question"===e?''):"circle-info"===e?''):"circle-exclamation"===e?''):"circle-up"===e?''):"circle-right"===e?''):""};function h(e){return h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},h(e)}function f(e,t){for(var n=0;n0&&(e=e.concat(this.externalRequests)),this.filters&&this.filters.length>0)for(var t=0;t-1)&&!e.find((function(e){return e.url===s.name}))&&e.push({type:"RESOURCE",date:new Date(this.startTimestamp+s.startTime),url:s.name,duration:Math.round(s.duration),initiatorType:s.initiatorType})}}}catch(u){}var l=this.blacklist.concat(this.defaultBlacklist);if(l&&l.length>0)try{e=e.filter((function(e){for(var t=0;t70&&(e=70),this.maxRequests=e}},{key:"setStopped",value:function(e){this.stopped=e}},{key:"setFilters",value:function(e){this.filters=this.filters.concat(e||[])}},{key:"setBlacklist",value:function(e){this.blacklist=this.blacklist.concat(e||[])}},{key:"cleanRequests",value:function(){var e=Object.keys(this.requests);if(e.length>this.maxRequests)for(var t=e.slice(0,e.length-this.maxRequests),n=0;n.15?"":e}},{key:"cleanupPayload",value:function(e){if(null==e)return"{}";try{if(void 0!==("undefined"==typeof TextDecoder?"undefined":h(TextDecoder))&&ArrayBuffer.isView(e))return(new TextDecoder).decode(e)}catch(t){}return e}},{key:"preparePayload",value:function(e){var t=this.cleanupPayload(e);return this.cleanupContentSize(t)}},{key:"start",value:function(){var e=this;if(!this.initialized){this.initialized=!0;var t=this;this.interceptNetworkRequests({onFetch:function(n,o){if(!e.stopped&&o&&e.requests){if(n.length>0&&void 0!==n[0]&&void 0!==n[0].url)e.requests[o]={url:n[0].url,date:new Date,request:{payload:"",headers:void 0!==n[0].headers?Object.fromEntries(n[0].headers.entries()):{}},type:void 0!==n[0].method?n[0].method:""};else if(n.length>=2&&n[1]){var r=n[1]&&n[1].method?n[1].method:"GET";e.requests[o]={request:{payload:t.preparePayload(n[1].body),headers:n[1].headers},type:r,url:n[0],date:new Date}}else e.requests[o]={url:n[0],date:new Date};e.cleanRequests()}},onFetchLoad:function(n,o){if(!e.stopped&&o&&e.requests&&e.requests[o]){try{e.requests[o].success=!0,e.requests[o].response={status:n.status,statusText:"",responseText:""},e.calcRequestTime(o)}catch(i){}try{var r="";n.headers&&void 0!==n.headers.get&&(r=n.headers.get("content-type")),e.isContentTypeSupported(r)?n.text().then((function(r){e.requests[o]&&(e.requests[o].success=!0,e.requests[o].response={status:n.status,statusText:n.statusText,responseText:t.cleanupContentSize(r)}),e.calcRequestTime(o),e.cleanRequests()})).catch((function(t){e.cleanRequests()})):(e.requests[o]&&(e.requests[o].success=!0,e.requests[o].response={status:n.status,statusText:n.statusText,responseText:""}),e.calcRequestTime(o),e.cleanRequests())}catch(i){}}},onFetchFailed:function(t,n){!e.stopped&&n&&e.requests&&e.requests[n]&&(e.requests[n].success=!1,e.calcRequestTime(n),e.cleanRequests())},onOpen:function(t,n){e.stopped||(t&&t.bbRequestId&&n.length>=2&&e.requests&&(e.requests[t.bbRequestId]={type:n[0],url:n[1],date:new Date}),e.cleanRequests())},onSend:function(t,n){e.stopped||(t&&t.bbRequestId&&e.requests&&e.requests[t.bbRequestId]&&(e.requests[t.bbRequestId].request={payload:e.preparePayload(n.length>0?n[0]:"{}"),headers:t.requestHeaders}),e.cleanRequests())},onError:function(t,n){!e.stopped&&e.requests&&t&&t.currentTarget&&t.currentTarget.bbRequestId&&e.requests[t.currentTarget.bbRequestId]&&(e.requests[t.currentTarget.bbRequestId].success=!1,e.calcRequestTime(t.bbRequestId)),e.cleanRequests()},onLoad:function(t,n){if(!e.stopped){if(t&&t.currentTarget&&t.currentTarget.bbRequestId&&e.requests&&e.requests[t.currentTarget.bbRequestId]){var o=t.currentTarget,r=o.responseType,i="<"+r+">";""!==r&&"text"!==r||(i=e.cleanupContentSize(o.responseText)),e.requests[o.bbRequestId].success=!0,e.requests[o.bbRequestId].response={status:o.status,statusText:o.statusText,responseText:i},e.calcRequestTime(o.bbRequestId)}e.cleanRequests()}}})}}},{key:"interceptNetworkRequests",value:function(e){var t,n=this,o=XMLHttpRequest.prototype.open,r=XMLHttpRequest.prototype.send;return void 0===XMLHttpRequest.prototype.gleapSetRequestHeader&&(XMLHttpRequest.prototype.gleapSetRequestHeader=XMLHttpRequest.prototype.setRequestHeader),XMLHttpRequest.prototype.gleapSetRequestHeader&&(XMLHttpRequest.prototype.setRequestHeader=function(e,t){this.requestHeaders||(this.requestHeaders={}),this.requestHeaders&&this.requestHeaders.hasOwnProperty(e)||(this.requestHeaders[e]||(this.requestHeaders[e]=[]),this.requestHeaders[e].push(t),this.gleapSetRequestHeader(e,t))}),XMLHttpRequest.prototype.open=function(){return this.bbRequestId=++n.requestId,e.onOpen&&e.onOpen(this,arguments),e.onLoad&&this.addEventListener("load",e.onLoad.bind(e)),e.onError&&this.addEventListener("error",e.onError.bind(e)),o.apply(this,arguments)},XMLHttpRequest.prototype.send=function(){return e.onSend&&e.onSend(this,arguments),r.apply(this,arguments)},window.fetch&&(t=window.fetch,window.fetch=function(){var o=++n.requestId;return e.onFetch(arguments,o),t.apply(this,arguments).then((function(t){if(t&&"function"==typeof t.clone){var n=t.clone();e.onFetchLoad(n,o)}return t})).catch((function(t){throw e.onFetchFailed(t,o),t}))}),e}},{key:"blobToTextPromise",value:function(e){return new Promise((function(t,n){var o=new FileReader;o.onload=function(e){e&&e.target&&e.target.result?t(e.target.result):n()},o.onerror=function(e){n(e)},o.readAsText(e)}))}}],o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],n&&f(t.prototype,n),o&&f(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();m(v,"instance",void 0);const y=v;var b=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:400,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:400;return new Promise((function(o,r){var i=0===e.indexOf("data:image/jpeg"),a=new Image;a.src=e,a.onerror=function(){r()},a.onload=function(){var e=document.createElement("canvas"),r=t,s=n;t>a.width/1.5&&(r=a.width/1.5),n>a.height/1.5&&(s=a.height/1.5);var l=a.width,c=a.height;l>c?l>r&&(c*=r/l,l=r):c>s&&(l*=s/c,c=s),e.width=l,e.height=c,e.getContext("2d").drawImage(a,0,0,l,c),o(i?e.toDataURL("image/jpeg",.7):e.toDataURL())}}))},w=function(){return!(!/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(navigator.userAgent)&&!/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(navigator.userAgent.substr(0,4)))},k=function(e){if("string"==typeof e||e instanceof String)try{return JSON.parse(e)}catch(t){return{}}return e},x=function(e,t){return e.length>t?e.slice(0,t)+"...":e},S=function(e){try{var t=e.split("."),n=!1,o=t[t.length-2];return"co"!==o&&"com"!==o&&"gv"!==o&&"ac"!==o&&"edu"!==o&&"gov"!==o&&"mil"!==o&&"net"!==o&&"org"!==o||(n=!0),(t=t.slice(n?-3:-2)).join(".")}catch(r){}return e},C=function(e){try{var t=localStorage.getItem("gleap-widget-".concat(e));if(t)return JSON.parse(t)}catch(n){}return null},I=function(e,t){var n="gleap-widget-".concat(e);if(t)try{localStorage.setItem(n,JSON.stringify(t))}catch(o){}else localStorage.removeItem(n)},E=function(e){"complete"===document.readyState||"loaded"===document.readyState||"interactive"===document.readyState?e():document.addEventListener("DOMContentLoaded",(function(){e()}))};function T(e){return T="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},T(e)}function O(e,t){for(var n=0;n=200&&i.status<300)try{var e=i.responseText?JSON.parse(i.responseText):null;o(e)}catch(t){r({status:i.status,statusText:"JSON Parse Error",responseText:i.responseText,error:t})}else r({status:i.status,statusText:i.statusText,responseText:i.responseText})},i.onerror=function(){r({status:0,statusText:"Network Error",responseText:null})},i.send(n?JSON.stringify(n):null)}))}},{key:"_createCacheKey",value:function(e,t){return t?"".concat(e,"::").concat(t):e}},{key:"validateChecklist",value:function(e,t){var n=this,o=this._createCacheKey(e,t),r=this.validationCache.get(o);if(r)return r.status===M?Promise.resolve(r.internalId):Promise.reject(r.error);if(this.validationRequests.has(o))return this.validationRequests.get(o);var i=this._getApiUrl();if(!i){var a=new Error("ChecklistNetworkManager: Gleap API URL not configured.");return this.validationCache.set(o,{status:R,error:a}),Promise.reject(a)}var s="".concat(i,"/outbound/checklists?").concat(this._getQueryParams()),l=this._makeRequest("POST",s,{outboundId:e,sharedKey:t}).then((function(e){if(e&&e.id)return n.validationCache.set(o,{status:M,internalId:e.id}),e.id;var t=new Error("Validation response missing checklist ID.");throw n.validationCache.set(o,{status:R,error:e||t}),t})).catch((function(e){throw n.validationCache.set(o,{status:R,error:e}),e})).finally((function(){n.validationRequests.delete(o)}));return this.validationRequests.set(o,l),l}},{key:"fetchChecklist",value:function(e){var t=this,n=this.fetchCache.get(e);if(n)return n.status===M?Promise.resolve(JSON.parse(JSON.stringify(n.data))):Promise.reject(n.error);if(this.fetchRequests.has(e))return this.fetchRequests.get(e).then((function(e){return JSON.parse(JSON.stringify(e))}));var o=this._getApiUrl();if(!o){var r=new Error("ChecklistNetworkManager: Gleap API URL not configured.");return this.fetchCache.set(e,{status:R,error:r}),Promise.reject(r)}var i="".concat(o,"/outbound/checklists/").concat(e,"?convertTipTap=true&").concat(this._getQueryParams()),a=this._makeRequest("GET",i,null).then((function(n){if(n)return t.fetchCache.set(e,{status:M,data:n}),JSON.parse(JSON.stringify(n));var o=new Error("Empty response received for checklist fetch.");throw t.fetchCache.set(e,{status:R,error:n||o}),o})).catch((function(n){throw t.fetchCache.set(e,{status:R,error:n}),n})).finally((function(){t.fetchRequests.delete(e)}));return this.fetchRequests.set(e,a),a.then((function(e){return JSON.parse(JSON.stringify(e))}))}}],o=[{key:"getInstance",value:function(){return e.instance||(e.instance=new e),e.instance}}],n&&O(t.prototype,n),o&&O(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();L(P,"instance",null);const D=P,N=Math.min,j=Math.max,F=Math.round,B=Math.floor,_=e=>({x:e,y:e}),U={left:"right",right:"left",bottom:"top",top:"bottom"},H={start:"end",end:"start"};function z(e,t,n){return j(e,N(t,n))}function q(e,t){return"function"==typeof e?e(t):e}function W(e){return e.split("-")[0]}function V(e){return e.split("-")[1]}function G(e){return"x"===e?"y":"x"}function X(e){return"y"===e?"height":"width"}function Y(e){return["top","bottom"].includes(W(e))?"y":"x"}function J(e){return G(Y(e))}function K(e){return e.replace(/start|end/g,(e=>H[e]))}function Z(e){return e.replace(/left|right|bottom|top/g,(e=>U[e]))}function $(e){return"number"!=typeof e?function(e){return{top:0,right:0,bottom:0,left:0,...e}}(e):{top:e,right:e,bottom:e,left:e}}function Q(e){return{...e,top:e.y,left:e.x,right:e.x+e.width,bottom:e.y+e.height}}function ee(e,t,n){let{reference:o,floating:r}=e;const i=Y(t),a=J(t),s=X(a),l=W(t),c="y"===i,u=o.x+o.width/2-r.width/2,d=o.y+o.height/2-r.height/2,p=o[s]/2-r[s]/2;let h;switch(l){case"top":h={x:u,y:o.y-r.height};break;case"bottom":h={x:u,y:o.y+o.height};break;case"right":h={x:o.x+o.width,y:d};break;case"left":h={x:o.x-r.width,y:d};break;default:h={x:o.x,y:o.y}}switch(V(t)){case"start":h[a]-=p*(n&&c?-1:1);break;case"end":h[a]+=p*(n&&c?-1:1)}return h}async function te(e,t){var n;void 0===t&&(t={});const{x:o,y:r,platform:i,rects:a,elements:s,strategy:l}=e,{boundary:c="clippingAncestors",rootBoundary:u="viewport",elementContext:d="floating",altBoundary:p=!1,padding:h=0}=q(t,e),f=$(h),m=s[p?"floating"===d?"reference":"floating":d],g=Q(await i.getClippingRect({element:null==(n=await(null==i.isElement?void 0:i.isElement(m)))||n?m:m.contextElement||await(null==i.getDocumentElement?void 0:i.getDocumentElement(s.floating)),boundary:c,rootBoundary:u,strategy:l})),v="floating"===d?{...a.floating,x:o,y:r}:a.reference,y=await(null==i.getOffsetParent?void 0:i.getOffsetParent(s.floating)),b=await(null==i.isElement?void 0:i.isElement(y))&&await(null==i.getScale?void 0:i.getScale(y))||{x:1,y:1},w=Q(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:s,rect:v,offsetParent:y,strategy:l}):v);return{top:(g.top-w.top+f.top)/b.y,bottom:(w.bottom-g.bottom+f.bottom)/b.y,left:(g.left-w.left+f.left)/b.x,right:(w.right-g.right+f.right)/b.x}}const ne=function(e){return void 0===e&&(e=0),{name:"offset",options:e,async fn(t){var n,o;const{x:r,y:i,placement:a,middlewareData:s}=t,l=await async function(e,t){const{placement:n,platform:o,elements:r}=e,i=await(null==o.isRTL?void 0:o.isRTL(r.floating)),a=W(n),s=V(n),l="y"===Y(n),c=["left","top"].includes(a)?-1:1,u=i&&l?-1:1,d=q(t,e);let{mainAxis:p,crossAxis:h,alignmentAxis:f}="number"==typeof d?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...d};return s&&"number"==typeof f&&(h="end"===s?-1*f:f),l?{x:h*u,y:p*c}:{x:p*c,y:h*u}}(t,e);return a===(null==(n=s.offset)?void 0:n.placement)&&null!=(o=s.arrow)&&o.alignmentOffset?{}:{x:r+l.x,y:i+l.y,data:{...l,placement:a}}}}};function oe(e){return ae(e)?(e.nodeName||"").toLowerCase():"#document"}function re(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function ie(e){var t;return null==(t=(ae(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement}function ae(e){return e instanceof Node||e instanceof re(e).Node}function se(e){return e instanceof Element||e instanceof re(e).Element}function le(e){return e instanceof HTMLElement||e instanceof re(e).HTMLElement}function ce(e){return"undefined"!=typeof ShadowRoot&&(e instanceof ShadowRoot||e instanceof re(e).ShadowRoot)}function ue(e){const{overflow:t,overflowX:n,overflowY:o,display:r}=me(e);return/auto|scroll|overlay|hidden|clip/.test(t+o+n)&&!["inline","contents"].includes(r)}function de(e){return["table","td","th"].includes(oe(e))}function pe(e){const t=he(),n=me(e);return"none"!==n.transform||"none"!==n.perspective||!!n.containerType&&"normal"!==n.containerType||!t&&!!n.backdropFilter&&"none"!==n.backdropFilter||!t&&!!n.filter&&"none"!==n.filter||["transform","perspective","filter"].some((e=>(n.willChange||"").includes(e)))||["paint","layout","strict","content"].some((e=>(n.contain||"").includes(e)))}function he(){return!("undefined"==typeof CSS||!CSS.supports)&&CSS.supports("-webkit-backdrop-filter","none")}function fe(e){return["html","body","#document"].includes(oe(e))}function me(e){return re(e).getComputedStyle(e)}function ge(e){return se(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function ve(e){if("html"===oe(e))return e;const t=e.assignedSlot||e.parentNode||ce(e)&&e.host||ie(e);return ce(t)?t.host:t}function ye(e){const t=ve(e);return fe(t)?e.ownerDocument?e.ownerDocument.body:e.body:le(t)&&ue(t)?t:ye(t)}function be(e,t,n){var o;void 0===t&&(t=[]),void 0===n&&(n=!0);const r=ye(e),i=r===(null==(o=e.ownerDocument)?void 0:o.body),a=re(r);return i?t.concat(a,a.visualViewport||[],ue(r)?r:[],a.frameElement&&n?be(a.frameElement):[]):t.concat(r,be(r,[],n))}function we(e){const t=me(e);let n=parseFloat(t.width)||0,o=parseFloat(t.height)||0;const r=le(e),i=r?e.offsetWidth:n,a=r?e.offsetHeight:o,s=F(n)!==i||F(o)!==a;return s&&(n=i,o=a),{width:n,height:o,$:s}}function ke(e){return se(e)?e:e.contextElement}function xe(e){const t=ke(e);if(!le(t))return _(1);const n=t.getBoundingClientRect(),{width:o,height:r,$:i}=we(t);let a=(i?F(n.width):n.width)/o,s=(i?F(n.height):n.height)/r;return a&&Number.isFinite(a)||(a=1),s&&Number.isFinite(s)||(s=1),{x:a,y:s}}const Se=_(0);function Ce(e){const t=re(e);return he()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:Se}function Ie(e,t,n,o){void 0===t&&(t=!1),void 0===n&&(n=!1);const r=e.getBoundingClientRect(),i=ke(e);let a=_(1);t&&(o?se(o)&&(a=xe(o)):a=xe(e));const s=function(e,t,n){return void 0===t&&(t=!1),!(!n||t&&n!==re(e))&&t}(i,n,o)?Ce(i):_(0);let l=(r.left+s.x)/a.x,c=(r.top+s.y)/a.y,u=r.width/a.x,d=r.height/a.y;if(i){const e=re(i),t=o&&se(o)?re(o):o;let n=e,r=n.frameElement;for(;r&&o&&t!==n;){const e=xe(r),t=r.getBoundingClientRect(),o=me(r),i=t.left+(r.clientLeft+parseFloat(o.paddingLeft))*e.x,a=t.top+(r.clientTop+parseFloat(o.paddingTop))*e.y;l*=e.x,c*=e.y,u*=e.x,d*=e.y,l+=i,c+=a,n=re(r),r=n.frameElement}}return Q({width:u,height:d,x:l,y:c})}const Ee=[":popover-open",":modal"];function Te(e){return Ee.some((t=>{try{return e.matches(t)}catch(n){return!1}}))}function Oe(e){return Ie(ie(e)).left+ge(e).scrollLeft}function Le(e,t,n){let o;if("viewport"===t)o=function(e,t){const n=re(e),o=ie(e),r=n.visualViewport;let i=o.clientWidth,a=o.clientHeight,s=0,l=0;if(r){i=r.width,a=r.height;const e=he();(!e||e&&"fixed"===t)&&(s=r.offsetLeft,l=r.offsetTop)}return{width:i,height:a,x:s,y:l}}(e,n);else if("document"===t)o=function(e){const t=ie(e),n=ge(e),o=e.ownerDocument.body,r=j(t.scrollWidth,t.clientWidth,o.scrollWidth,o.clientWidth),i=j(t.scrollHeight,t.clientHeight,o.scrollHeight,o.clientHeight);let a=-n.scrollLeft+Oe(e);const s=-n.scrollTop;return"rtl"===me(o).direction&&(a+=j(t.clientWidth,o.clientWidth)-r),{width:r,height:i,x:a,y:s}}(ie(e));else if(se(t))o=function(e,t){const n=Ie(e,!0,"fixed"===t),o=n.top+e.clientTop,r=n.left+e.clientLeft,i=le(e)?xe(e):_(1);return{width:e.clientWidth*i.x,height:e.clientHeight*i.y,x:r*i.x,y:o*i.y}}(t,n);else{const n=Ce(e);o={...t,x:t.x-n.x,y:t.y-n.y}}return Q(o)}function Ae(e,t){const n=ve(e);return!(n===t||!se(n)||fe(n))&&("fixed"===me(n).position||Ae(n,t))}function Me(e,t,n){const o=le(t),r=ie(t),i="fixed"===n,a=Ie(e,!0,i,t);let s={scrollLeft:0,scrollTop:0};const l=_(0);if(o||!o&&!i)if(("body"!==oe(t)||ue(r))&&(s=ge(t)),o){const e=Ie(t,!0,i,t);l.x=e.x+t.clientLeft,l.y=e.y+t.clientTop}else r&&(l.x=Oe(r));return{x:a.left+s.scrollLeft-l.x,y:a.top+s.scrollTop-l.y,width:a.width,height:a.height}}function Re(e,t){return le(e)&&"fixed"!==me(e).position?t?t(e):e.offsetParent:null}function Pe(e,t){const n=re(e);if(!le(e)||Te(e))return n;let o=Re(e,t);for(;o&&de(o)&&"static"===me(o).position;)o=Re(o,t);return o&&("html"===oe(o)||"body"===oe(o)&&"static"===me(o).position&&!pe(o))?n:o||function(e){let t=ve(e);for(;le(t)&&!fe(t);){if(pe(t))return t;t=ve(t)}return null}(e)||n}const De={convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{elements:t,rect:n,offsetParent:o,strategy:r}=e;const i="fixed"===r,a=ie(o),s=!!t&&Te(t.floating);if(o===a||s&&i)return n;let l={scrollLeft:0,scrollTop:0},c=_(1);const u=_(0),d=le(o);if((d||!d&&!i)&&(("body"!==oe(o)||ue(a))&&(l=ge(o)),le(o))){const e=Ie(o);c=xe(o),u.x=e.x+o.clientLeft,u.y=e.y+o.clientTop}return{width:n.width*c.x,height:n.height*c.y,x:n.x*c.x-l.scrollLeft*c.x+u.x,y:n.y*c.y-l.scrollTop*c.y+u.y}},getDocumentElement:ie,getClippingRect:function(e){let{element:t,boundary:n,rootBoundary:o,strategy:r}=e;const i="clippingAncestors"===n?function(e,t){const n=t.get(e);if(n)return n;let o=be(e,[],!1).filter((e=>se(e)&&"body"!==oe(e))),r=null;const i="fixed"===me(e).position;let a=i?ve(e):e;for(;se(a)&&!fe(a);){const t=me(a),n=pe(a);n||"fixed"!==t.position||(r=null),(i?!n&&!r:!n&&"static"===t.position&&r&&["absolute","fixed"].includes(r.position)||ue(a)&&!n&&Ae(e,a))?o=o.filter((e=>e!==a)):r=t,a=ve(a)}return t.set(e,o),o}(t,this._c):[].concat(n),a=[...i,o],s=a[0],l=a.reduce(((e,n)=>{const o=Le(t,n,r);return e.top=j(o.top,e.top),e.right=N(o.right,e.right),e.bottom=N(o.bottom,e.bottom),e.left=j(o.left,e.left),e}),Le(t,s,r));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}},getOffsetParent:Pe,getElementRects:async function(e){const t=this.getOffsetParent||Pe,n=this.getDimensions;return{reference:Me(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,...await n(e.floating)}}},getClientRects:function(e){return Array.from(e.getClientRects())},getDimensions:function(e){const{width:t,height:n}=we(e);return{width:t,height:n}},getScale:xe,isElement:se,isRTL:function(e){return"rtl"===me(e).direction}};function Ne(e,t,n,o){void 0===o&&(o={});const{ancestorScroll:r=!0,ancestorResize:i=!0,elementResize:a="function"==typeof ResizeObserver,layoutShift:s="function"==typeof IntersectionObserver,animationFrame:l=!1}=o,c=ke(e),u=r||i?[...c?be(c):[],...be(t)]:[];u.forEach((e=>{r&&e.addEventListener("scroll",n,{passive:!0}),i&&e.addEventListener("resize",n)}));const d=c&&s?function(e,t){let n,o=null;const r=ie(e);function i(){var e;clearTimeout(n),null==(e=o)||e.disconnect(),o=null}return function a(s,l){void 0===s&&(s=!1),void 0===l&&(l=1),i();const{left:c,top:u,width:d,height:p}=e.getBoundingClientRect();if(s||t(),!d||!p)return;const h={rootMargin:-B(u)+"px "+-B(r.clientWidth-(c+d))+"px "+-B(r.clientHeight-(u+p))+"px "+-B(c)+"px",threshold:j(0,N(1,l))||1};let f=!0;function m(e){const t=e[0].intersectionRatio;if(t!==l){if(!f)return a();t?a(!1,t):n=setTimeout((()=>{a(!1,1e-7)}),100)}f=!1}try{o=new IntersectionObserver(m,{...h,root:r.ownerDocument})}catch(g){o=new IntersectionObserver(m,h)}o.observe(e)}(!0),i}(c,n):null;let p,h=-1,f=null;a&&(f=new ResizeObserver((e=>{let[o]=e;o&&o.target===c&&f&&(f.unobserve(t),cancelAnimationFrame(h),h=requestAnimationFrame((()=>{var e;null==(e=f)||e.observe(t)}))),n()})),c&&!l&&f.observe(c),f.observe(t));let m=l?Ie(e):null;return l&&function t(){const o=Ie(e);!m||o.x===m.x&&o.y===m.y&&o.width===m.width&&o.height===m.height||n();m=o,p=requestAnimationFrame(t)}(),n(),()=>{var e;u.forEach((e=>{r&&e.removeEventListener("scroll",n),i&&e.removeEventListener("resize",n)})),null==d||d(),null==(e=f)||e.disconnect(),f=null,l&&cancelAnimationFrame(p)}}const je=function(e){return void 0===e&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:o,placement:r}=t,{mainAxis:i=!0,crossAxis:a=!1,limiter:s={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...l}=q(e,t),c={x:n,y:o},u=await te(t,l),d=Y(W(r)),p=G(d);let h=c[p],f=c[d];if(i){const e="y"===p?"bottom":"right";h=z(h+u["y"===p?"top":"left"],h,h-u[e])}if(a){const e="y"===d?"bottom":"right";f=z(f+u["y"===d?"top":"left"],f,f-u[e])}const m=s.fn({...t,[p]:h,[d]:f});return{...m,data:{x:m.x-n,y:m.y-o}}}}},Fe=function(e){return void 0===e&&(e={}),{name:"flip",options:e,async fn(t){var n,o;const{placement:r,middlewareData:i,rects:a,initialPlacement:s,platform:l,elements:c}=t,{mainAxis:u=!0,crossAxis:d=!0,fallbackPlacements:p,fallbackStrategy:h="bestFit",fallbackAxisSideDirection:f="none",flipAlignment:m=!0,...g}=q(e,t);if(null!=(n=i.arrow)&&n.alignmentOffset)return{};const v=W(r),y=W(s)===s,b=await(null==l.isRTL?void 0:l.isRTL(c.floating)),w=p||(y||!m?[Z(s)]:function(e){const t=Z(e);return[K(e),t,K(t)]}(s));p||"none"===f||w.push(...function(e,t,n,o){const r=V(e);let i=function(e,t,n){const o=["left","right"],r=["right","left"],i=["top","bottom"],a=["bottom","top"];switch(e){case"top":case"bottom":return n?t?r:o:t?o:r;case"left":case"right":return t?i:a;default:return[]}}(W(e),"start"===n,o);return r&&(i=i.map((e=>e+"-"+r)),t&&(i=i.concat(i.map(K)))),i}(s,m,f,b));const k=[s,...w],x=await te(t,g),S=[];let C=(null==(o=i.flip)?void 0:o.overflows)||[];if(u&&S.push(x[v]),d){const e=function(e,t,n){void 0===n&&(n=!1);const o=V(e),r=J(e),i=X(r);let a="x"===r?o===(n?"end":"start")?"right":"left":"start"===o?"bottom":"top";return t.reference[i]>t.floating[i]&&(a=Z(a)),[a,Z(a)]}(r,a,b);S.push(x[e[0]],x[e[1]])}if(C=[...C,{placement:r,overflows:S}],!S.every((e=>e<=0))){var I,E;const e=((null==(I=i.flip)?void 0:I.index)||0)+1,t=k[e];if(t)return{data:{index:e,overflows:C},reset:{placement:t}};let n=null==(E=C.filter((e=>e.overflows[0]<=0)).sort(((e,t)=>e.overflows[1]-t.overflows[1]))[0])?void 0:E.placement;if(!n)switch(h){case"bestFit":{var T;const e=null==(T=C.map((e=>[e.placement,e.overflows.filter((e=>e>0)).reduce(((e,t)=>e+t),0)])).sort(((e,t)=>e[1]-t[1]))[0])?void 0:T[0];e&&(n=e);break}case"initialPlacement":n=s}if(r!==n)return{reset:{placement:n}}}return{}}}},Be=e=>({name:"arrow",options:e,async fn(t){const{x:n,y:o,placement:r,rects:i,platform:a,elements:s,middlewareData:l}=t,{element:c,padding:u=0}=q(e,t)||{};if(null==c)return{};const d=$(u),p={x:n,y:o},h=J(r),f=X(h),m=await a.getDimensions(c),g="y"===h,v=g?"top":"left",y=g?"bottom":"right",b=g?"clientHeight":"clientWidth",w=i.reference[f]+i.reference[h]-p[h]-i.floating[f],k=p[h]-i.reference[h],x=await(null==a.getOffsetParent?void 0:a.getOffsetParent(c));let S=x?x[b]:0;S&&await(null==a.isElement?void 0:a.isElement(x))||(S=s.floating[b]||i.floating[f]);const C=w/2-k/2,I=S/2-m[f]/2-1,E=N(d[v],I),T=N(d[y],I),O=E,L=S-m[f]-T,A=S/2-m[f]/2+C,M=z(O,A,L),R=!l.arrow&&null!=V(r)&&A!==M&&i.reference[f]/2-(A{const o=new Map,r={platform:De,...n},i={...r.platform,_c:o};return(async(e,t,n)=>{const{placement:o="bottom",strategy:r="absolute",middleware:i=[],platform:a}=n,s=i.filter(Boolean),l=await(null==a.isRTL?void 0:a.isRTL(t));let c=await a.getElementRects({reference:e,floating:t,strategy:r}),{x:u,y:d}=ee(c,o,l),p=o,h={},f=0;for(let m=0;me.length)&&(t=e.length);for(var n=0,o=new Array(t);n'):""),i.appendChild(a),t.repositionHotspot(e,n),r=a,t.elementToTooltipMap.set(e,n)}else r=e;var s=t.createTooltip(r,n.html,n);t.elementToFloatingUIMap.set(e,s)}}})),Ve(this,"updateFilteredTooltips",(function(){t.filteredTooltips=t.getFilteredTooltips(),t.checkForTooltips()})),Ve(this,"getFilteredTooltips",(function(){if(!t.tooltips)return[];var e=window.location.href;return t.tooltips.filter((function(t){return!t.page||0===t.page.length||!!Ue(e,t.page,t.pageType)}))})),Ve(this,"checkForTooltips",(function(){for(var e=0;e0&&this.filteredTooltips.forEach((function(n){n.selector&&e.matches(n.selector)&&t.linkTooltip(e,n)}))}},{key:"start",value:function(){var e=this,t=this;if(window){var n,o,r,i=(n=t.updateHotspotPositions.bind(t),o=250,r=null,function(){if(!r){var e=this,t=arguments;r=setTimeout((function(){n.call.apply(n,[e].concat(ze(t))),r=null}),o)}});window.addEventListener("resize",i),window.requestAnimationFrame((function(){e.observer=new MutationObserver((function(n){t.lastUrl!==window.location.href&&(t.lastUrl=window.location.href,t.filteredTooltips=t.getFilteredTooltips()),n.forEach((function(n){if("attributes"===n.type){var o=n.target;o.nodeType===Node.ELEMENT_NODE&&(o.querySelector("[data-gleap-tooltip-hotspot]")||o.hasAttribute("data-gleap-tooltip-mode")||o.hasAttribute("data-gleap-tooltip"))&&t.updateHotspotPositions()}n.addedNodes.forEach((function(e){e.nodeType===Node.ELEMENT_NODE&&t.processNodeInsertion(e)})),n.removedNodes.forEach((function(t){if(t.nodeType===Node.ELEMENT_NODE&&e.elementToFloatingUIMap.has(t)){var n=e.elementToFloatingUIMap.get(t);n&&(n.tooltip&&n.tooltip.remove(),n.cleanup(),e.elementToFloatingUIMap.delete(t))}e.elementToTooltipMap.has(t)&&e.elementToTooltipMap.delete(t)}))}))})),e.observer.observe(document.body,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["style","class"]})}))}}},{key:"updateHotspotPositions",value:function(){var e=this;document.querySelectorAll("[data-gleap-tooltip-mode='hotspot']").forEach((function(t){var n=e.elementToTooltipMap.get(t);n&&e.repositionHotspot(t,n)}))}},{key:"createTooltip",value:function(e,t,n){var o=document.createElement("div");o.className="gleap-tooltip",o.innerHTML='
\n '.concat(t,'\n
\n \n \n \n
\n
'),document.body.appendChild(o);var r,i=o.querySelector(".gleap-tooltip-arrow"),a=Ne(e,o,(function(){_e(e,o,{placement:"left"===n.posX?"left":"right",middleware:[ne(10),Fe(),je(),Be({element:i})]}).then((function(e){var t=e.x,n=e.y,r=e.middlewareData,a=e.placement;try{if(Object.assign(o.style,{left:"".concat(t,"px"),top:"".concat(n,"px")}),r.arrow){var s={left:"",top:"",transform:""};null!=r.arrow.x&&(s.left="".concat(r.arrow.x,"px"),"bottom"===a?(s.transform="translateY(-7px) rotate(180deg)",s.top="".concat(-20,"px")):"top"===a&&(s.transform="translateY(7px) rotate(0deg)",s.top="100%")),null!=r.arrow.y&&(s.top="".concat(r.arrow.y,"px"),"right"===a?(s.transform="translateX(-7px) rotate(90deg)",s.left="".concat(-20,"px")):"left"===a&&(s.transform="translateX(7px) rotate(270deg)",s.left="100%")),Object.assign(i.style,s)}}catch(l){}}))}));function s(){clearTimeout(r),o.style.visibility="visible",o.style.opacity="1",o.style.pointerEvents="auto"}function l(){r=setTimeout((function(){o.style.opacity="0",setTimeout((function(){o.style.visibility="hidden",o.style.pointerEvents="none"}),200)}),500)}return e.addEventListener("mouseenter",s),e.addEventListener("mouseleave",l),o.addEventListener("mouseenter",s),o.addEventListener("mouseleave",l),{cleanup:a,tooltip:o}}},{key:"canEmbed",value:function(e){var t=new Set(["area","base","br","embed","hr","img","input","source","track","wbr","canvas"]);return e&&!t.has(e.tagName.toLowerCase())}},{key:"destroy",value:function(){this.observer&&(this.observer.disconnect(),this.observer=null),this.resizeListener&&(window.removeEventListener("resize",this.resizeListener),this.resizeListener=null),document.querySelectorAll(".gleap-tooltip").forEach((function(e){return e.remove()})),document.querySelectorAll("[data-gleap-tooltip-anchor]").forEach((function(e){return e.remove()})),document.querySelectorAll("[data-gleap-tooltip-hotspot]").forEach((function(e){return e.remove()})),document.querySelectorAll("[data-gleap-tooltip]").forEach((function(e){return e.removeAttribute("data-gleap-tooltip")})),document.querySelectorAll("[data-gleap-tooltip-mode]").forEach((function(e){return e.removeAttribute("data-gleap-tooltip-mode")})),this.elementToFloatingUIMap=new WeakMap,this.elementToTooltipMap=new WeakMap,this.tooltips=[],this.filteredTooltips=[]}},{key:"repositionHotspot",value:function(e,t){if(e&&t){var n=e.getAttribute("data-gleap-tooltip");if(n){var o=document.querySelector('[data-gleap-tooltip-hotspot="'.concat(n,'"]'));if(o){t.posX||(t.posX="right"),t.posY||(t.posY="center"),t.offsetX||(t.offsetX=4),t.offsetY||(t.offsetY=0);var r=e.getBoundingClientRect();try{var i=document.createRange();i.selectNodeContents(e);var a=window.getComputedStyle(e),s=i.getBoundingClientRect().width+parseFloat(a.paddingLeft);s0&&void 0!==arguments[0]?arguments[0]:0,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];t.session&&t.session.gleapHash&&Tn.notifyEvent("unregister-pushmessage-group","gleapuser-".concat(t.session.gleapHash));try{I("session-".concat(t.sdkKey),null)}catch(r){}if(t.useCookies)try{!function(e){try{var t=S(window.location.host.split(":")[0]);document.cookie=e+"=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT; Domain="+t}catch(r){}}("session-".concat(t.sdkKey))}catch(r){}if(t.ready=!1,t.session={gleapId:null,gleapHash:null,name:"",email:"",userId:"",phone:"",value:0},Zt.getInstance().sendMessage({name:"session-cleared"},!0),jh.getInstance().clearAllNotifications(!1),jh.getInstance().setNotificationCount(0),qh.getInstance().removeBannerUI(),Kh.getInstance().hideModal(),n&&!isNaN(e)){var o=10*Math.pow(e,2);setTimeout((function(){t.startSession(e+1)}),1e3*o)}})),$e(this,"validateSession",(function(e){var n;if(e&&e.gleapId){var o=!1;(null===(n=t.session)||void 0===n?void 0:n.gleapId)!==(null==e?void 0:e.gleapId)&&(o=!0),t.session&&t.session.gleapHash&&Tn.notifyEvent("unregister-pushmessage-group","gleapuser-".concat(t.session.gleapHash)),I("session-".concat(t.sdkKey),e),t.useCookies&&function(e,t,n){try{var o="";if(n){var r=new Date;r.setTime(r.getTime()+24*n*60*60*1e3),o="; expires="+r.toUTCString()}var i=S(window.location.host.split(":")[0]);document.cookie=e+"="+(t||"")+o+"; path=/; domain="+i}catch(a){}}("session-".concat(t.sdkKey),encodeURIComponent(JSON.stringify(e)),365),t.session=e,t.ready=!0,t.session&&t.session.gleapHash&&Tn.notifyEvent("register-pushmessage-group","gleapuser-".concat(t.session.gleapHash)),o&&(setTimeout((function(){D.getInstance().clearCache(),it.getInstance().restart();var e=Xe.getInstance();if(e){try{e.destroy()}catch(t){}e.load()}}),0),"function"==typeof window.dispatchEvent&&window.dispatchEvent(new CustomEvent("session-updated"))),t.notifySessionReady()}})),$e(this,"startSession",(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;try{if(t.useCookies){var n=function(e){try{for(var t=e+"=",n=document.cookie.split(";"),o=0;o0)){var r=C("session-".concat(t.sdkKey));r&&t.validateSession(r)}var i=t,a=new XMLHttpRequest;a.open("POST",i.apiUrl+"/sessions"),a.setRequestHeader("Content-Type","application/json;charset=UTF-8"),a.setRequestHeader("Api-Token",i.sdkKey);try{t.session&&t.session.gleapId&&t.session.gleapHash&&(a.setRequestHeader("Gleap-Id",t.session.gleapId),a.setRequestHeader("Gleap-Hash",t.session.gleapHash))}catch(s){}a.onreadystatechange=function(t){if(4===a.readyState)if(200===a.status||201===a.status)try{var n=JSON.parse(a.responseText);i.validateSession(n)}catch(s){}else 429!==a.status&&i.clearSession(e,!0)},a.send(JSON.stringify({lang:kh.getInstance().getActiveLanguage()}))})),$e(this,"checkIfSessionNeedsUpdate",(function(e,n){if(!t.session||!t.session.userId||!e)return!0;try{if(t.session.userId.toString()!==e.toString())return!0}catch(o){}return t.checkIfSessionDataNeedsUpdate(n)})),$e(this,"checkIfSessionDataNeedsUpdate",(function(e){if(e)for(var n=Object.keys(e),o=0;o0)for(var e=0;e2)&&0!==t.streamedEventArray.length&&t.socket&&t.socket.readyState===t.socket.OPEN){var e=t;t.streamingEvents=!0;var n=new XMLHttpRequest;n.open("POST",et.getInstance().apiUrl+"/sessions/ping"),n.setRequestHeader("Content-Type","application/json;charset=UTF-8"),et.getInstance().injectSession(n),n.onerror=function(){e.errorCount++,e.streamingEvents=!1},n.onreadystatechange=function(t){4===n.readyState&&(200===n.status||201===n.status?e.errorCount=0:e.errorCount++,e.streamingEvents=!1)};var o=nn.getInstance().getSessionDuration();n.send(JSON.stringify({time:o,events:t.streamedEventArray,opened:Zt.getInstance().isOpened(),type:"js",sdkVersion:"14.8.11",ws:!0})),t.streamedEventArray=[]}})),this.handleOpenBound=this.handleOpen.bind(this),this.handleErrorBound=this.handleError.bind(this),this.handleMessageBound=this.handleMessage.bind(this),this.handleCloseBound=this.handleClose.bind(this)}var t,n,o;return t=e,o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],(n=[{key:"cleanupWebSocket",value:function(){this.connectionTimeout&&(clearTimeout(this.connectionTimeout),this.connectionTimeout=null),this.pingWS&&clearInterval(this.pingWS),this.socket&&(this.socket.removeEventListener("open",this.handleOpenBound),this.socket.removeEventListener("error",this.handleErrorBound),this.socket.removeEventListener("message",this.handleMessageBound),this.socket.removeEventListener("close",this.handleCloseBound),this.socket.close(),this.socket=null)}},{key:"initWebSocket",value:function(){this.cleanupWebSocket(),this.connectedWebSocketGleapId=et.getInstance().session.gleapId,et.getInstance().session&&et.getInstance().sdkKey&&(this.socket=new WebSocket("".concat(et.getInstance().wsApiUrl,"?gleapId=").concat(et.getInstance().session.gleapId,"&gleapHash=").concat(et.getInstance().session.gleapHash,"&apiKey=").concat(et.getInstance().sdkKey,"&sdkVersion=").concat("14.8.11")),this.socket.addEventListener("open",this.handleOpenBound),this.socket.addEventListener("message",this.handleMessageBound),this.socket.addEventListener("error",this.handleErrorBound),this.socket.addEventListener("close",this.handleCloseBound))}},{key:"handleOpen",value:function(e){var t=this;this.pingWS=setInterval((function(){t.socket.readyState===t.socket.OPEN&&(t.socket.send("PING"),t.socket.send(9))}),1e4),this.connectionTimeout&&(clearTimeout(this.connectionTimeout),this.connectionTimeout=null)}},{key:"handleMessage",value:function(e){this.processMessage(JSON.parse(e.data))}},{key:"handleError",value:function(e){}},{key:"handleClose",value:function(e){var t=this;setTimeout((function(){t.initWebSocket()}),5e3)}},{key:"processMessage",value:function(e){try{if("update"===e.name){var t=e.data,n=t.a,o=t.u,r=Zt.getInstance().isOpened();if(n){var i=["banner","modal"],a=n.filter((function(e){var t;return!r||i.includes(null==e||null===(t=e.actionType)||void 0===t?void 0:t.toLowerCase())}));Wm.getInstance().performActions(a)}null!=o&&jh.getInstance().setNotificationCount(o)}"checklist"===e.name&&null!=e&&e.data&&window&&"function"==typeof window.dispatchEvent&&window.dispatchEvent(new CustomEvent("checkListUpdate",{detail:e.data}))}catch(s){}}},{key:"getEventArray",value:function(){return this.eventArray}},{key:"stop",value:function(){this.cleanupMainLoop()}},{key:"resetErrorCountLoop",value:function(){var e=this;setInterval((function(){e.errorCount=0}),6e4)}},{key:"cleanupMainLoop",value:function(){this.mainLoopTimeout&&(clearInterval(this.mainLoopTimeout),this.mainLoopTimeout=null)}},{key:"restart",value:function(){this.connectedWebSocketGleapId!==et.getInstance().session.gleapId&&this.initWebSocket(),this.cleanupMainLoop(),this.trackInitialEvents(),this.runEventStreamLoop()}},{key:"start",value:function(){this.startPageListener(),this.resetErrorCountLoop()}},{key:"trackInitialEvents",value:function(){e.getInstance().logEvent("sessionStarted"),e.getInstance().logCurrentPage()}},{key:"logCurrentPage",value:function(){if(!Wm.getInstance().disablePageTracking){var e=window.location.href;e&&e!==this.lastUrl&&(this.lastUrl=e,this.logEvent("pageView",{page:e}))}}},{key:"startPageListener",value:function(){var e=this;setInterval((function(){e.logCurrentPage()}),1e3)}},{key:"logEvent",value:function(e,t){var n={name:e,date:new Date};t&&(n.data=k(t)),this.eventArray.push(n),this.streamedEventArray.push(n),this.eventArray.length>this.eventMaxLength&&this.eventArray.shift(),this.streamedEventArray.length>this.eventMaxLength&&this.streamedEventArray.shift()}}])&&nt(t.prototype,n),o&&nt(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function at(e){return at="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},at(e)}function st(e,t){for(var n=0;n0)for(var e=0;e=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var l=o.call(a,"catchLoc"),c=o.call(a,"finallyLoc");if(l&&c){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&o.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),L(n),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var o=n.completion;if("throw"===o.type){var r=o.arg;L(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,o){return this.delegate={iterator:M(t),resultName:n,nextLoc:o},"next"===this.method&&(this.arg=e),g}},t}function ft(e,t,n,o,r,i,a){try{var s=e[i](a),l=s.value}catch(c){return void n(c)}s.done?t(l):Promise.resolve(l).then(o,r)}function mt(e){return function(){var t=this,n=arguments;return new Promise((function(o,r){var i=e.apply(t,n);function a(e){ft(i,o,r,a,s,"next",e)}function s(e){ft(i,o,r,a,s,"throw",e)}a(void 0)}))}}var gt=function(e){var t="",n=window.document.doctype;if(n&&(t=""),e&&e.childNodes&&e.childNodes.length>0)for(var o=0;o1?t-1:0),r=1;r0||t.scrollLeft>0)&&(s.setAttribute("bb-scrollpos",!0),s.setAttribute("bb-scrolltop",t.scrollTop),s.setAttribute("bb-scrollleft",t.scrollLeft)),"SELECT"!==d&&"TEXTAREA"!==d&&"INPUT"!==d||(h=t.value,("value"===t.getAttribute("gleap-ignore")||t.classList.contains("gl-mask"))&&(h=new Array(h.length+1).join("*")),s.setAttribute("bb-data-value",h),"checkbox"!==t.type&&"radio"!==t.type||!t.checked||s.setAttribute("bb-data-checked",!0))),r.appendChild(s),!t.shadowRoot){e.next=29;break}return f=n,n++,e.next=27,a(t.shadowRoot.firstChild,s,f);case 27:Ct(t.shadowRoot,s,f),void 0!==s.setAttribute&&s.setAttribute("bb-shadow-parent",f);case 29:return e.next=31,a(t.firstChild,s);case 31:case"end":return e.stop()}}),e,null,[[7,17]])})));return function(t,n,o){return e.apply(this,arguments)}}(),r=document.createDocumentFragment(),e.next=5,o(t,r);case 5:return(i=r.querySelector("head"))||(i=r),Ct(window.document,i),e.abrupt("return",r);case 9:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),Tt=function(e){return new Promise(function(){var t=mt(ht().mark((function t(n,o){var r,i,a,s,l,c,u,d,p,h,f,m,g,v,y;return ht().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:for(r=window.document.querySelectorAll("style, link"),i=0;i0){for(c=l.childNodes;c.length>0;)l.parentNode.insertBefore(c[0],l);l.remove()}for(u=a.querySelectorAll("script, noscript"),i=0;i=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var l=o.call(a,"catchLoc"),c=o.call(a,"finallyLoc");if(l&&c){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&o.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),L(n),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var o=n.completion;if("throw"===o.type){var r=o.arg;L(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,o){return this.delegate={iterator:M(t),resultName:n,nextLoc:o},"next"===this.method&&(this.arg=e),g}},t}function At(e,t,n,o,r,i,a){try{var s=e[i](a),l=s.value}catch(c){return void n(c)}s.done?t(l):Promise.resolve(l).then(o,r)}function Mt(e){return function(){var t=this,n=arguments;return new Promise((function(o,r){var i=e.apply(t,n);function a(e){At(i,o,r,a,s,"next",e)}function s(e){At(i,o,r,a,s,"throw",e)}a(void 0)}))}}function Rt(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return Pt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Pt(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0,r=function(){};return{s:r,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){s=!0,i=e},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw i}}}}function Pt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n0?t[0]:null}},{key:"getFirstAudioTrack",value:function(e){if(!e)return null;var t=e.getAudioTracks();return t.length>0?t[0]:null}},{key:"startScreenRecording",value:(a=Mt(Lt().mark((function t(){var n,o;return Lt().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia&&!this.isRecording){t.next=4;break}return this.available=!1,this.rerender(),t.abrupt("return");case 4:return t.prev=4,t.next=7,navigator.mediaDevices.getDisplayMedia({video:{width:{ideal:Math.min(window.screen.width,e.MAX_WIDTH)},height:{ideal:Math.min(window.screen.height,e.MAX_HEIGHT)},frameRate:{ideal:e.IDEAL_FRAME_RATE,max:e.MAX_FRAME_RATE},displaySurface:"monitor"},audio:!1,selfBrowserSurface:"include"});case 7:if(n=t.sent,this._displayStream=n,this._displayVideoTrack=this.getFirstVideoTrack(n),this.audioMuted){t.next=15;break}return t.next=13,this.startAudioRecording();case 13:t.next=19;break;case 15:this.audioAvailable=!1,o=this.createMediaStream([this._displayVideoTrack]),this.stream=o,this.handleRecord({stream:o});case 19:this.rerender(),t.next=26;break;case 22:t.prev=22,t.t0=t.catch(4),window.alert(this.permissionErrorText),this.rerender();case 26:case"end":return t.stop()}}),t,this,[[4,22]])}))),function(){return a.apply(this,arguments)})},{key:"stopScreenRecording",value:function(){if(this.mediaRecorder&&this.stream&&this.isRecording){this.recordingTimer&&(clearInterval(this.recordingTimer),this.recordingTimer=null);try{this.mediaRecorder.stop()}catch(e){}this.stopStreamTracks(this.stream),this._displayStream&&(this.stopStreamTracks(this._displayStream),this._displayStream=null),this._micStream&&(this.stopStreamTracks(this._micStream),this._micStream=null),this._displayVideoTrack=null,this.rerender()}}},{key:"startAudioRecording",value:(i=Mt(Lt().mark((function e(){var t,n,o,r;return Lt().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._displayVideoTrack){e.next=2;break}return e.abrupt("return");case 2:return e.prev=2,e.next=5,navigator.mediaDevices.getUserMedia({audio:{echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0},video:!1});case 5:t=e.sent,this._micStream=t,n=this.getFirstAudioTrack(t),this.audioMuted=!1,this.audioAvailable=!!n,o=this.createMediaStream([this._displayVideoTrack,n]),this.stream=o,this.handleRecord({stream:o}),this.rerender(),e.next=23;break;case 16:e.prev=16,e.t0=e.catch(2),this.audioAvailable=!1,r=this.createMediaStream([this._displayVideoTrack]),this.stream=r,this.handleRecord({stream:r}),this.rerender();case 23:case"end":return e.stop()}}),e,this,[[2,16]])}))),function(){return i.apply(this,arguments)})},{key:"toggleAudio",value:function(){if(this.audioMuted=!this.audioMuted,this.rerender(),this.stream)for(var e=this.stream.getAudioTracks(),t=0;t0?i.innerHTML=o.formatTime(e):(i.innerHTML="2:00",o.stopScreenRecording()):e<=0&&o.stopScreenRecording()}),e.TIMER_UPDATE_INTERVAL),this.mediaRecorder.ondataavailable=function(e){e.data&&e.data.size>0&&r.push(e.data)};var a=this.getFirstVideoTrack(n);a&&(a.onended=function(){o.prepareRecording(r)}),this.mediaRecorder.onstop=function(){o.prepareRecording(r)},this.mediaRecorder.start(e.CHUNK_INTERVAL),o.rerender()}},{key:"prepareRecording",value:function(t){var n=this.getSupportedMimeType(),o=new Blob(t,{type:n}),r=n.includes("mp4")?"mp4":"webm";this.file=new File([o],"screen-recording.".concat(r),{type:n});var i=document.querySelector(e.SELECTORS.PREVIEW_VIDEO);i&&(i.src=URL.createObjectURL(o),this.audioAvailable=this.stream?this.stream.getAudioTracks().length>0:this.audioAvailable,this.isRecording=!1,this.rerender())}}],o=[{key:"uploadScreenRecording",value:(r=Mt(Lt().mark((function e(t){return Lt().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(null!=t){e.next=2;break}return e.abrupt("return",null);case 2:return e.abrupt("return",new Promise((function(e,n){var o=new XMLHttpRequest;o.open("POST",et.getInstance().apiUrl+"/uploads/sdk"),et.getInstance().injectSession(o);var r=new FormData;r.append("file",t),o.onerror=function(){n(new Error("Network error during file upload"))},o.onreadystatechange=function(){4==o.readyState&&(200==o.status?e(JSON.parse(o.response).fileUrl):n(new Error("Upload failed with status ".concat(o.status))))},o.send(r)})));case 3:case"end":return e.stop()}}),e)}))),function(e){return r.apply(this,arguments)})}],n&&Dt(t.prototype,n),o&&Dt(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Bt(e){return Bt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Bt(e)}function _t(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Ut(e){for(var t=1;t0&&(e.tags=t),this.excludeData)for(var n=Object.keys(this.excludeData),o=0;oe.length)&&(t=e.length);for(var n=0,o=new Array(t);n0)if(t){var n=window.open(e,"_blank");n&&n.focus()}else window.location.href=e})),Jt(this,"autoWhiteListCookieManager",(function(){window&&window.cmp_block_ignoredomains&&window.cmp_block_ignoredomains.concat(["messenger-app.gleap.io"])})),Jt(this,"injectFrame",(function(){t.injectedFrame||(t.injectedFrame=!0,t.autoWhiteListCookieManager(),E((function(){dt.getInstance().onConfigLoaded((function(){dt.getInstance().applyStylesFromConfig();var e=document.createElement("div");e.className="gleap-frame-container gleap-frame-container--hidden gl-block",e.innerHTML='
'),document.body.appendChild(e),t.gleapFrameContainer=e,t.gleapFrame=document.querySelector(".gleap-frame"),t.updateFrameStyle(),"widget"===t.appMode&&t.showFrameContainer(!0)}))})))})),Jt(this,"showImage",(function(e){E((function(){var t=document.createElement("div");t.className="gleap-image-view",t.innerHTML='
\n \n
'),document.body.appendChild(t);var n=function(){t.remove()};t.querySelector(".gleap-image-view-close").addEventListener("click",(function(){n()})),t.addEventListener("click",(function(e){e.target===t&&n()}))}))})),Jt(this,"updateFrameStyle",(function(){if(t.gleapFrameContainer){for(var e="gleap-frame-container--survey",n="gleap-frame-container--extended",o="gleap-frame-container--survey-full",r="gleap-frame-container--classic",i="gleap-frame-container--classic-left",s="gleap-frame-container--modern-left",l="gleap-frame-container--no-button",c=[r,i,n,s,l,e,o],u=0;u0&&void 0!==arguments[0]&&arguments[0];"survey_web"!==this.appMode&&(this.hideMarkerManager(),this.gleapFrameContainer&&(this.gleapFrameContainer.classList.add("gleap-frame-container--hidden"),this.gleapFrameContainer.classList.remove("gleap-frame-container--animate")),e&&this.sendMessage({name:"reset-routes",data:{}}),this.widgetOpened=!1,this.updateWidgetStatus(),a.getInstance().updateFeedbackButtonState(),Tn.notifyEvent("close"),jh.getInstance().reloadNotificationsFromCache(),this.unregisterEscListener(),"undefined"!=typeof window&&void 0!==window.focus&&window.focus())}},{key:"sendMessage",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];try{this.gleapFrame=document.querySelector(".gleap-frame"),this.comReady&&this.gleapFrame&&this.gleapFrame.contentWindow?this.gleapFrame.contentWindow.postMessage(JSON.stringify(e),"*"):t&&this.queue.push(e)}catch(n){}}},{key:"sendSessionUpdate",value:function(){this.sendMessage({name:"session-update",data:{sessionData:et.getInstance().getSession(),apiUrl:et.getInstance().apiUrl,sdkKey:et.getInstance().sdkKey}})}},{key:"sendConfigUpdate",value:function(){this.comReady&&(this.sendMessage({name:"config-update",data:{config:dt.getInstance().getFlowConfig(),aiTools:dt.getInstance().getAiTools(),overrideLanguage:kh.getInstance().getOverrideLanguage()}}),this.updateFrameStyle())}},{key:"showDrawingScreen",value:function(e){var t=this;this.hideWidget(),this.markerManager=new gh(e),this.markerManager.show((function(e){e||t.hideMarkerManager(),t.showWidget()}))}},{key:"workThroughQueue",value:function(){var e=Gt(this.queue);this.queue=[];for(var t=0;t0&&(n.tags=o),e.sendMessage({name:"collect-ticket-data",data:n})}if("height-update"===t.name){e.frameHeight=t.data;var r=document.querySelector(".gleap-frame-container-inner");"survey"!==e.appMode&&"survey_full"!==e.appMode&&"survey_web"!==e.appMode||!r||(r.style.maxHeight="".concat(e.frameHeight,"px"))}if("notify-event"===t.name&&Tn.notifyEvent(t.data.type,t.data.data),"cleanup-drawings"===t.name&&e.hideMarkerManager(),"open-url"===t.name){var i=t.data,a=!!t.newTab;e.urlHandler(i,a)}var s;if("start-product-tour"===t.name&&Wm.startProductTour(null===(s=t.data)||void 0===s?void 0:s.tourId,!0),"run-custom-action"===t.name&&Dn.triggerCustomAction(t.data,{shareToken:t.shareToken}),"close-widget"===t.name&&e.hideWidget(),"tool-execution"===t.name&&Tn.notifyEvent("tool-execution",t.data),"send-feedback"===t.name){var l=t.data.formData,c=t.data.action,u=t.data.outboundId,d=t.data.spamToken;new Wt(c.feedbackType,"MEDIUM",l,!1,c.excludeData,u,d).sendFeedback().then((function(t){if(e.sendMessage({name:"feedback-sent",data:t}),Tn.notifyEvent("feedback-sent",l),u&&u.length>0){Tn.notifyEvent("outbound-sent",{outboundId:u,outbound:c,formData:l});try{delete l.reportedBy}catch(n){}Wm.trackEvent("outbound-".concat(u,"-submitted"),l)}})).catch((function(t){e.sendMessage({name:"feedback-sending-failed",data:"Something went wrong, please try again."}),Tn.notifyEvent("error-while-sending")}))}"start-screen-drawing"===t.name&&e.showDrawingScreen(t.data)})),window.addEventListener("message",(function(t){if(t.origin===e.frameUrl||t.origin===qh.getInstance().bannerUrl)try{for(var n=JSON.parse(t.data),o=0;o1&&void 0!==arguments[1]?arguments[1]:"INFO";!e||e.length<=0||(this.logArray.push({log:x(e,1e3),date:new Date,priority:t}),this.logArray.length>this.logMaxLength&&this.logArray.shift())}},{key:"addLogWithArgs",value:function(e,t){if(e&&!(e.length<=0)){var n="";try{for(var o=0;o1&&void 0!==arguments[1])||arguments[1],n=x(e.innerText||"",40).replace(/(\r\n|\n|\r)/gm,"").replace(/ +(?= )/g,""),o="",r="";if(void 0!==e.getAttribute){var i=e.getAttribute("id");i&&(o=' id="'.concat(i,'"'));var a=e.getAttribute("class");a&&(r=' class="'.concat(a,'"'))}var s=(e.tagName||"").toLowerCase(),l="<",c=">";return t||(l="[",c="]"),"".concat(l).concat(s).concat(o).concat(r).concat(c).concat(n).concat(l,"/").concat(s).concat(c)}(e.target),"CLICK")}}))}}],o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],n&&pn(t.prototype,n),o&&pn(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function yn(e){return yn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},yn(e)}function bn(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{};if("flow-started"===e){var n=Wm.getInstance();n.setGlobalDataItem("webReplay",null),n.setGlobalDataItem("screenRecordingData",null),n.takeCurrentReplay()}var o=this.getInstance().eventListeners[e];if(o)for(var r=0;r((e,t,n)=>t in e?jn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,"symbol"!=typeof t?t+"":t,n),Bn=Object.defineProperty,_n=(e,t,n)=>((e,t,n)=>t in e?Bn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,"symbol"!=typeof t?t+"":t,n),Un=(e=>(e[e.Document=0]="Document",e[e.DocumentType=1]="DocumentType",e[e.Element=2]="Element",e[e.Text=3]="Text",e[e.CDATA=4]="CDATA",e[e.Comment=5]="Comment",e))(Un||{});const Hn={Node:["childNodes","parentNode","parentElement","textContent"],ShadowRoot:["host","styleSheets"],Element:["shadowRoot","querySelector","querySelectorAll"],MutationObserver:[]},zn={Node:["contains","getRootNode"],ShadowRoot:["getSelection"],Element:[],MutationObserver:["constructor"]},qn={},Wn=()=>!!globalThis.Zone;function Vn(e){if(qn[e])return qn[e];const t=globalThis[e],n=t.prototype,o=e in Hn?Hn[e]:void 0,r=Boolean(o&&o.every((e=>{var t,o;return Boolean(null==(o=null==(t=Object.getOwnPropertyDescriptor(n,e))?void 0:t.get)?void 0:o.toString().includes("[native code]"))}))),i=e in zn?zn[e]:void 0,a=Boolean(i&&i.every((e=>{var t;return"function"==typeof n[e]&&(null==(t=n[e])?void 0:t.toString().includes("[native code]"))})));if(r&&a&&!Wn())return qn[e]=t.prototype,t.prototype;try{const o=document.createElement("iframe");document.body.appendChild(o);const r=o.contentWindow;if(!r)return t.prototype;const i=r[e].prototype;return document.body.removeChild(o),i?qn[e]=i:n}catch{return n}}const Gn={};function Xn(e,t,n){var o;const r=`${e}.${String(n)}`;if(Gn[r])return Gn[r].call(t);const i=Vn(e),a=null==(o=Object.getOwnPropertyDescriptor(i,n))?void 0:o.get;return a?(Gn[r]=a,a.call(t)):t[n]}const Yn={};function Jn(e,t,n){const o=`${e}.${String(n)}`;if(Yn[o])return Yn[o].bind(t);const r=Vn(e)[n];return"function"!=typeof r?t[n]:(Yn[o]=r,r.bind(t))}const Kn={childNodes:function(e){return Xn("Node",e,"childNodes")},parentNode:function(e){return Xn("Node",e,"parentNode")},parentElement:function(e){return Xn("Node",e,"parentElement")},textContent:function(e){return Xn("Node",e,"textContent")},contains:function(e,t){return Jn("Node",e,"contains")(t)},getRootNode:function(e){return Jn("Node",e,"getRootNode")()},host:function(e){return e&&"host"in e?Xn("ShadowRoot",e,"host"):null},styleSheets:function(e){return e.styleSheets},shadowRoot:function(e){return e&&"shadowRoot"in e?Xn("Element",e,"shadowRoot"):null},querySelector:function(e,t){return Xn("Element",e,"querySelector")(t)},querySelectorAll:function(e,t){return Xn("Element",e,"querySelectorAll")(t)},mutationObserver:function(){return Vn("MutationObserver").constructor}};function Zn(e){return e.nodeType===e.ELEMENT_NODE}function $n(e){const t=e&&"host"in e&&"mode"in e&&Kn.host(e)||null;return Boolean(t&&"shadowRoot"in t&&Kn.shadowRoot(t)===e)}function Qn(e){return"[object ShadowRoot]"===Object.prototype.toString.call(e)}function eo(e){try{const n=e.rules||e.cssRules;if(!n)return null;let o=e.href;!o&&e.ownerNode&&e.ownerNode.ownerDocument&&(o=e.ownerNode.ownerDocument.location.href);const r=Array.from(n,(e=>to(e,o))).join("");return(t=r).includes(" background-clip: text;")&&!t.includes(" -webkit-background-clip: text;")&&(t=t.replace(/\sbackground-clip:\s*text;/g," -webkit-background-clip: text; background-clip: text;")),t}catch(n){return null}var t}function to(e,t){if(function(e){return"styleSheet"in e}(e)){let t;try{t=eo(e.styleSheet)||function(e){const{cssText:t}=e;if(t.split('"').length<3)return t;const n=["@import",`url(${JSON.stringify(e.href)})`];return""===e.layerName?n.push("layer"):e.layerName&&n.push(`layer(${e.layerName})`),e.supportsText&&n.push(`supports(${e.supportsText})`),e.media.length&&n.push(e.media.mediaText),n.join(" ")+";"}(e)}catch(n){t=e.cssText}return e.styleSheet.href?ho(t,e.styleSheet.href):t}{let n=e.cssText;return function(e){return"selectorText"in e}(e)&&e.selectorText.includes(":")&&(n=function(e){const t=/(\[(?:[\w-]+)[^\\])(:(?:[\w-]+)\])/gm;return e.replace(t,"$1\\$2")}(n)),t?ho(n,t):n}}class no{constructor(){_n(this,"idNodeMap",new Map),_n(this,"nodeMetaMap",new WeakMap)}getId(e){var t;if(!e)return-1;return(null==(t=this.getMeta(e))?void 0:t.id)??-1}getNode(e){return this.idNodeMap.get(e)||null}getIds(){return Array.from(this.idNodeMap.keys())}getMeta(e){return this.nodeMetaMap.get(e)||null}removeNodeFromMap(e){const t=this.getId(e);this.idNodeMap.delete(t),e.childNodes&&e.childNodes.forEach((e=>this.removeNodeFromMap(e)))}has(e){return this.idNodeMap.has(e)}hasNode(e){return this.nodeMetaMap.has(e)}add(e,t){const n=t.id;this.idNodeMap.set(n,e),this.nodeMetaMap.set(e,t)}replace(e,t){const n=this.getNode(e);if(n){const e=this.nodeMetaMap.get(n);e&&this.nodeMetaMap.set(t,e)}this.idNodeMap.set(e,t)}reset(){this.idNodeMap=new Map,this.nodeMetaMap=new WeakMap}}function oo({element:e,maskInputOptions:t,tagName:n,type:o,value:r,maskInputFn:i}){let a=r||"";const s=o&&ro(o);return(t[n.toLowerCase()]||s&&t[s])&&(a=i?i(a,e):"*".repeat(a.length)),a}function ro(e){return e.toLowerCase()}const io="__rrweb_original__";function ao(e){const t=e.type;return e.hasAttribute("data-rr-is-password")?"password":t?ro(t):null}function so(e,t){let n;try{n=new URL(e,t??window.location.href)}catch(r){return null}const o=n.pathname.match(/\.([0-9a-z]+)(?:$)/i);return(null==o?void 0:o[1])??null}const lo=/url\((?:(')([^']*)'|(")(.*?)"|([^)]*))\)/gm,co=/^(?:[a-z+]+:)?\/\//i,uo=/^www\..*/i,po=/^(data:)([^,]*),(.*)/i;function ho(e,t){return(e||"").replace(lo,((e,n,o,r,i,a)=>{const s=o||i||a,l=n||r||"";if(!s)return e;if(co.test(s)||uo.test(s))return`url(${l}${s}${l})`;if(po.test(s))return`url(${l}${s}${l})`;if("/"===s[0])return`url(${l}${function(e){let t="";return t=e.indexOf("//")>-1?e.split("/").slice(0,3).join("/"):e.split("/")[0],t=t.split("?")[0],t}(t)+s}${l})`;const c=t.split("/"),u=s.split("/");c.pop();for(const t of u)"."!==t&&(".."===t?c.pop():c.push(t));return`url(${l}${c.join("/")}${l})`}))}function fo(e){return e.replace(/(\/\*[^*]*\*\/)|[\s;]/g,"")}function mo(e,t){return function(e,t){const n=Array.from(t.childNodes),o=[];if(n.length>1&&e&&"string"==typeof e){const t=fo(e);for(let r=1;r=t.length);){let i=o(xo);if(","===i.slice(-1))i=Io(e,i.substring(0,i.length-1)),r.push(i);else{let o="";i=Io(e,i);let a=!1;for(;;){const e=t.charAt(n);if(""===e){r.push((i+o).trim());break}if(a)")"===e&&(a=!1);else{if(","===e){n+=1,r.push((i+o).trim());break}"("===e&&(a=!0)}o+=e,n+=1}}}return r.join(", ")}(e,o):"style"===n?ho(o,To(e)):"object"===t&&"data"===n?Io(e,o):o:Io(e,o):o}function Lo(e,t,n){return("video"===e||"audio"===e)&&"autoplay"===t}function Ao(e,t,n){if(!e)return!1;if(e.nodeType!==e.ELEMENT_NODE)return!!n&&Ao(Kn.parentNode(e),t,n);for(let o=e.classList.length;o--;){const n=e.classList[o];if(t.test(n))return!0}return!!n&&Ao(Kn.parentNode(e),t,n)}function Mo(e,t,n,o){let r;if(Zn(e)){if(r=e,!Kn.childNodes(r).length)return!1}else{if(null===Kn.parentElement(e))return!1;r=Kn.parentElement(e)}try{if("string"==typeof t){if(o){if(r.closest(`.${t}`))return!0}else if(r.classList.contains(t))return!0}else if(Ao(r,t,o))return!0;if(n)if(o){if(r.closest(n))return!0}else if(r.matches(n))return!0}catch(i){}return!1}function Ro(e,t){const{doc:n,mirror:o,blockClass:r,blockSelector:i,needsMask:a,inlineStylesheet:s,maskInputOptions:l={},maskTextFn:c,maskInputFn:u,dataURLOptions:d={},inlineImages:p,recordCanvas:h,keepIframeSrcFn:f,newlyAddedElement:m=!1,cssCaptured:g=!1}=t,v=function(e,t){if(!t.hasNode(e))return;const n=t.getId(e);return 1===n?void 0:n}(n,o);switch(e.nodeType){case e.DOCUMENT_NODE:return"CSS1Compat"!==e.compatMode?{type:Un.Document,childNodes:[],compatMode:e.compatMode}:{type:Un.Document,childNodes:[]};case e.DOCUMENT_TYPE_NODE:return{type:Un.DocumentType,name:e.name,publicId:e.publicId,systemId:e.systemId,rootId:v};case e.ELEMENT_NODE:return function(e,t){const{doc:n,blockClass:o,blockSelector:r,inlineStylesheet:i,maskInputOptions:a={},maskInputFn:s,dataURLOptions:l={},inlineImages:c,recordCanvas:u,keepIframeSrcFn:d,newlyAddedElement:p=!1,rootId:h}=t,f=function(e,t,n){try{if("string"==typeof t){if(e.classList.contains(t))return!0}else for(let n=e.classList.length;n--;){const o=e.classList[n];if(t.test(o))return!0}if(n)return e.matches(n)}catch(o){}return!1}(e,o,r),m=function(e){if(e instanceof HTMLFormElement)return"form";const t=ro(e.tagName);return vo.test(t)?"div":t}(e);let g={};const v=e.attributes.length;for(let w=0;wt.href===e.href));let o=null;t&&(o=eo(t)),o&&(delete g.rel,delete g.href,g._cssText=o)}if("style"===m&&e.sheet){let t=eo(e.sheet);t&&(e.childNodes.length>1&&(t=mo(t,e)),g._cssText=t)}if("input"===m||"textarea"===m||"select"===m){const t=e.value,n=e.checked;"radio"!==g.type&&"checkbox"!==g.type&&"submit"!==g.type&&"button"!==g.type&&t?g.value=oo({element:e,type:ao(e),tagName:m,value:t,maskInputOptions:a,maskInputFn:s}):n&&(g.checked=n)}"option"===m&&(e.selected&&!a.select?g.selected=!0:delete g.selected);"dialog"===m&&e.open&&(g.rr_open_mode=e.matches("dialog:modal")?"modal":"non-modal");if("canvas"===m&&u)if("2d"===e.__context)(function(e){const t=e.getContext("2d");if(!t)return!0;for(let n=0;n0!==e)))return!1}return!0})(e)||(g.rr_dataURL=e.toDataURL(l.type,l.quality));else if(!("__context"in e)){const t=e.toDataURL(l.type,l.quality),o=n.createElement("canvas");o.width=e.width,o.height=e.height;t!==o.toDataURL(l.type,l.quality)&&(g.rr_dataURL=t)}if("img"===m&&c){wo||(wo=n.createElement("canvas"),ko=wo.getContext("2d"));const t=e,o=t.currentSrc||t.getAttribute("src")||"",r=t.crossOrigin,i=()=>{t.removeEventListener("load",i);try{wo.width=t.naturalWidth,wo.height=t.naturalHeight,ko.drawImage(t,0,0),g.rr_dataURL=wo.toDataURL(l.type,l.quality)}catch(e){if("anonymous"!==t.crossOrigin)return t.crossOrigin="anonymous",void(t.complete&&0!==t.naturalWidth?i():t.addEventListener("load",i));console.warn(`Cannot inline img src=${o}! Error: ${e}`)}"anonymous"===t.crossOrigin&&(r?g.crossOrigin=r:t.removeAttribute("crossorigin"))};t.complete&&0!==t.naturalWidth?i():t.addEventListener("load",i)}if("audio"===m||"video"===m){const t=g;t.rr_mediaState=e.paused?"paused":"played",t.rr_mediaCurrentTime=e.currentTime,t.rr_mediaPlaybackRate=e.playbackRate,t.rr_mediaMuted=e.muted,t.rr_mediaLoop=e.loop,t.rr_mediaVolume=e.volume}p||(e.scrollLeft&&(g.rr_scrollLeft=e.scrollLeft),e.scrollTop&&(g.rr_scrollTop=e.scrollTop));if(f){const{width:t,height:n}=e.getBoundingClientRect();g={class:g.class,rr_width:`${t}px`,rr_height:`${n}px`}}"iframe"!==m||d(g.src)||(e.contentDocument||(g.rr_src=g.src),delete g.src);let y;try{customElements.get(m)&&(y=!0)}catch(b){}return{type:Un.Element,tagName:m,attributes:g,childNodes:[],isSVG:Eo(e)||void 0,needBlock:f,rootId:h,isCustom:y}}(e,{doc:n,blockClass:r,blockSelector:i,inlineStylesheet:s,maskInputOptions:l,maskInputFn:u,dataURLOptions:d,inlineImages:p,recordCanvas:h,keepIframeSrcFn:f,newlyAddedElement:m,rootId:v});case e.TEXT_NODE:return function(e,t){const{needsMask:n,maskTextFn:o,rootId:r,cssCaptured:i}=t,a=Kn.parentNode(e),s=a&&a.tagName;let l="";const c="STYLE"===s||void 0,u="SCRIPT"===s||void 0;u?l="SCRIPT_PLACEHOLDER":i||(l=Kn.textContent(e),c&&l&&(l=ho(l,To(t.doc))));!c&&!u&&l&&n&&(l=o?o(l,Kn.parentElement(e)):l.replace(/[\S]/g,"*"));return{type:Un.Text,textContent:l||"",rootId:r}}(e,{doc:n,needsMask:a,maskTextFn:c,rootId:v,cssCaptured:g});case e.CDATA_SECTION_NODE:return{type:Un.CDATA,textContent:"",rootId:v};case e.COMMENT_NODE:return{type:Un.Comment,textContent:Kn.textContent(e)||"",rootId:v};default:return!1}}function Po(e){return null==e?"":e.toLowerCase()}function Do(e,t){const{doc:n,mirror:o,blockClass:r,blockSelector:i,maskTextClass:a,maskTextSelector:s,skipChild:l=!1,inlineStylesheet:c=!0,maskInputOptions:u={},maskTextFn:d,maskInputFn:p,slimDOMOptions:h,dataURLOptions:f={},inlineImages:m=!1,recordCanvas:g=!1,onSerialize:v,onIframeLoad:y,iframeLoadTimeout:b=5e3,onStylesheetLoad:w,stylesheetLoadTimeout:k=5e3,keepIframeSrcFn:x=(()=>!1),newlyAddedElement:S=!1,cssCaptured:C=!1}=t;let{needsMask:I}=t,{preserveWhiteSpace:E=!0}=t;if(!I){I=Mo(e,a,s,void 0===I)}const T=Ro(e,{doc:n,mirror:o,blockClass:r,blockSelector:i,needsMask:I,inlineStylesheet:c,maskInputOptions:u,maskTextFn:d,maskInputFn:p,dataURLOptions:f,inlineImages:m,recordCanvas:g,keepIframeSrcFn:x,newlyAddedElement:S,cssCaptured:C});if(!T)return console.warn(e,"not serialized"),null;let O;O=o.hasNode(e)?o.getId(e):function(e,t){if(t.comment&&e.type===Un.Comment)return!0;if(e.type===Un.Element){if(t.script&&("script"===e.tagName||"link"===e.tagName&&("preload"===e.attributes.rel||"modulepreload"===e.attributes.rel)&&"script"===e.attributes.as||"link"===e.tagName&&"prefetch"===e.attributes.rel&&"string"==typeof e.attributes.href&&"js"===so(e.attributes.href)))return!0;if(t.headFavicon&&("link"===e.tagName&&"shortcut icon"===e.attributes.rel||"meta"===e.tagName&&(Po(e.attributes.name).match(/^msapplication-tile(image|color)$/)||"application-name"===Po(e.attributes.name)||"icon"===Po(e.attributes.rel)||"apple-touch-icon"===Po(e.attributes.rel)||"shortcut icon"===Po(e.attributes.rel))))return!0;if("meta"===e.tagName){if(t.headMetaDescKeywords&&Po(e.attributes.name).match(/^description|keywords$/))return!0;if(t.headMetaSocial&&(Po(e.attributes.property).match(/^(og|twitter|fb):/)||Po(e.attributes.name).match(/^(og|twitter):/)||"pinterest"===Po(e.attributes.name)))return!0;if(t.headMetaRobots&&("robots"===Po(e.attributes.name)||"googlebot"===Po(e.attributes.name)||"bingbot"===Po(e.attributes.name)))return!0;if(t.headMetaHttpEquiv&&void 0!==e.attributes["http-equiv"])return!0;if(t.headMetaAuthorship&&("author"===Po(e.attributes.name)||"generator"===Po(e.attributes.name)||"framework"===Po(e.attributes.name)||"publisher"===Po(e.attributes.name)||"progid"===Po(e.attributes.name)||Po(e.attributes.property).match(/^article:/)||Po(e.attributes.property).match(/^product:/)))return!0;if(t.headMetaVerification&&("google-site-verification"===Po(e.attributes.name)||"yandex-verification"===Po(e.attributes.name)||"csrf-token"===Po(e.attributes.name)||"p:domain_verify"===Po(e.attributes.name)||"verify-v1"===Po(e.attributes.name)||"verification"===Po(e.attributes.name)||"shopify-checkout-api-token"===Po(e.attributes.name)))return!0}}return!1}(T,h)||!E&&T.type===Un.Text&&!T.textContent.replace(/^\s+|\s+$/gm,"").length?yo:bo();const L=Object.assign(T,{id:O});if(o.add(e,L),O===yo)return null;v&&v(e);let A=!l;if(L.type===Un.Element){A=A&&!L.needBlock,delete L.needBlock;const t=Kn.shadowRoot(e);t&&Qn(t)&&(L.isShadowHost=!0)}if((L.type===Un.Document||L.type===Un.Element)&&A){h.headWhitespace&&L.type===Un.Element&&"head"===L.tagName&&(E=!1);const t={doc:n,mirror:o,blockClass:r,blockSelector:i,needsMask:I,maskTextClass:a,maskTextSelector:s,skipChild:l,inlineStylesheet:c,maskInputOptions:u,maskTextFn:d,maskInputFn:p,slimDOMOptions:h,dataURLOptions:f,inlineImages:m,recordCanvas:g,preserveWhiteSpace:E,onSerialize:v,onIframeLoad:y,iframeLoadTimeout:b,onStylesheetLoad:w,stylesheetLoadTimeout:k,keepIframeSrcFn:x,cssCaptured:!1};if(L.type===Un.Element&&"textarea"===L.tagName&&void 0!==L.attributes.value);else{L.type===Un.Element&&void 0!==L.attributes._cssText&&"string"==typeof L.attributes._cssText&&(t.cssCaptured=!0);for(const n of Array.from(Kn.childNodes(e))){const e=Do(n,t);e&&L.childNodes.push(e)}}let S=null;if(Zn(e)&&(S=Kn.shadowRoot(e)))for(const e of Array.from(Kn.childNodes(S))){const n=Do(e,t);n&&(Qn(S)&&(n.isShadow=!0),L.childNodes.push(n))}}const M=Kn.parentNode(e);return M&&$n(M)&&Qn(M)&&(L.isShadow=!0),L.type===Un.Element&&"iframe"===L.tagName&&function(e,t,n){const o=e.contentWindow;if(!o)return;let r,i=!1;try{r=o.document.readyState}catch(s){return}if("complete"!==r){const o=setTimeout((()=>{i||(t(),i=!0)}),n);return void e.addEventListener("load",(()=>{clearTimeout(o),i=!0,t()}))}const a="about:blank";if(o.location.href!==a||e.src===a||""===e.src)return setTimeout(t,0),e.addEventListener("load",t);e.addEventListener("load",t)}(e,(()=>{const t=e.contentDocument;if(t&&y){const n=Do(t,{doc:t,mirror:o,blockClass:r,blockSelector:i,needsMask:I,maskTextClass:a,maskTextSelector:s,skipChild:!1,inlineStylesheet:c,maskInputOptions:u,maskTextFn:d,maskInputFn:p,slimDOMOptions:h,dataURLOptions:f,inlineImages:m,recordCanvas:g,preserveWhiteSpace:E,onSerialize:v,onIframeLoad:y,iframeLoadTimeout:b,onStylesheetLoad:w,stylesheetLoadTimeout:k,keepIframeSrcFn:x});n&&y(e,n)}}),b),L.type===Un.Element&&"link"===L.tagName&&"string"==typeof L.attributes.rel&&("stylesheet"===L.attributes.rel||"preload"===L.attributes.rel&&"string"==typeof L.attributes.href&&"css"===so(L.attributes.href))&&function(e,t,n){let o,r=!1;try{o=e.sheet}catch(a){return}if(o)return;const i=setTimeout((()=>{r||(t(),r=!0)}),n);e.addEventListener("load",(()=>{clearTimeout(i),r=!0,t()}))}(e,(()=>{if(w){const t=Do(e,{doc:n,mirror:o,blockClass:r,blockSelector:i,needsMask:I,maskTextClass:a,maskTextSelector:s,skipChild:!1,inlineStylesheet:c,maskInputOptions:u,maskTextFn:d,maskInputFn:p,slimDOMOptions:h,dataURLOptions:f,inlineImages:m,recordCanvas:g,preserveWhiteSpace:E,onSerialize:v,onIframeLoad:y,iframeLoadTimeout:b,onStylesheetLoad:w,stylesheetLoadTimeout:k,keepIframeSrcFn:x});t&&w(e,t)}}),k),L}function No(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function jo(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var n=function e(){return this instanceof e?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,o.get?o:{enumerable:!0,get:function(){return e[t]}})})),n}var Fo={exports:{}},Bo=String,_o=function(){return{isColorSupported:!1,reset:Bo,bold:Bo,dim:Bo,italic:Bo,underline:Bo,inverse:Bo,hidden:Bo,strikethrough:Bo,black:Bo,red:Bo,green:Bo,yellow:Bo,blue:Bo,magenta:Bo,cyan:Bo,white:Bo,gray:Bo,bgBlack:Bo,bgRed:Bo,bgGreen:Bo,bgYellow:Bo,bgBlue:Bo,bgMagenta:Bo,bgCyan:Bo,bgWhite:Bo}};Fo.exports=_o(),Fo.exports.createColors=_o;var Uo=Fo.exports;const Ho=jo(Object.freeze(Object.defineProperty({__proto__:null,default:{}},Symbol.toStringTag,{value:"Module"})));let zo=Uo,qo=Ho,Wo=class e extends Error{constructor(t,n,o,r,i,a){super(t),this.name="CssSyntaxError",this.reason=t,i&&(this.file=i),r&&(this.source=r),a&&(this.plugin=a),void 0!==n&&void 0!==o&&("number"==typeof n?(this.line=n,this.column=o):(this.line=n.line,this.column=n.column,this.endLine=o.line,this.endColumn=o.column)),this.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(this,e)}setMessage(){this.message=this.plugin?this.plugin+": ":"",this.message+=this.file?this.file:"",void 0!==this.line&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason}showSourceCode(e){if(!this.source)return"";let t=this.source;null==e&&(e=zo.isColorSupported),qo&&e&&(t=qo(t));let n,o,r=t.split(/\r?\n/),i=Math.max(this.line-3,0),a=Math.min(this.line+2,r.length),s=String(a).length;if(e){let{bold:e,gray:t,red:r}=zo.createColors(!0);n=t=>e(r(t)),o=e=>t(e)}else n=o=e=>e;return r.slice(i,a).map(((e,t)=>{let r=i+1+t,a=" "+(" "+r).slice(-s)+" | ";if(r===this.line){let t=o(a.replace(/\d/g," "))+e.slice(0,this.column-1).replace(/[^\t]/g," ");return n(">")+o(a)+e+"\n "+t+n("^")}return" "+o(a)+e})).join("\n")}toString(){let e=this.showSourceCode();return e&&(e="\n\n"+e+"\n"),this.name+": "+this.message+e}};var Vo=Wo;Wo.default=Wo;var Go={};Go.isClean=Symbol("isClean"),Go.my=Symbol("my");const Xo={after:"\n",beforeClose:"\n",beforeComment:"\n",beforeDecl:"\n",beforeOpen:" ",beforeRule:"\n",colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:!1};let Yo=class{constructor(e){this.builder=e}atrule(e,t){let n="@"+e.name,o=e.params?this.rawValue(e,"params"):"";if(void 0!==e.raws.afterName?n+=e.raws.afterName:o&&(n+=" "),e.nodes)this.block(e,n+o);else{let r=(e.raws.between||"")+(t?";":"");this.builder(n+o+r,e)}}beforeAfter(e,t){let n;n="decl"===e.type?this.raw(e,null,"beforeDecl"):"comment"===e.type?this.raw(e,null,"beforeComment"):"before"===t?this.raw(e,null,"beforeRule"):this.raw(e,null,"beforeClose");let o=e.parent,r=0;for(;o&&"root"!==o.type;)r+=1,o=o.parent;if(n.includes("\n")){let t=this.raw(e,null,"indent");if(t.length)for(let e=0;e0&&"comment"===e.nodes[t].type;)t-=1;let n=this.raw(e,"semicolon");for(let o=0;o{if(o=e.raws[t],void 0!==o)return!1}))}var a;return void 0===o&&(o=Xo[n]),i.rawCache[n]=o,o}rawBeforeClose(e){let t;return e.walk((e=>{if(e.nodes&&e.nodes.length>0&&void 0!==e.raws.after)return t=e.raws.after,t.includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1})),t&&(t=t.replace(/\S/g,"")),t}rawBeforeComment(e,t){let n;return e.walkComments((e=>{if(void 0!==e.raws.before)return n=e.raws.before,n.includes("\n")&&(n=n.replace(/[^\n]+$/,"")),!1})),void 0===n?n=this.raw(t,null,"beforeDecl"):n&&(n=n.replace(/\S/g,"")),n}rawBeforeDecl(e,t){let n;return e.walkDecls((e=>{if(void 0!==e.raws.before)return n=e.raws.before,n.includes("\n")&&(n=n.replace(/[^\n]+$/,"")),!1})),void 0===n?n=this.raw(t,null,"beforeRule"):n&&(n=n.replace(/\S/g,"")),n}rawBeforeOpen(e){let t;return e.walk((e=>{if("decl"!==e.type&&(t=e.raws.between,void 0!==t))return!1})),t}rawBeforeRule(e){let t;return e.walk((n=>{if(n.nodes&&(n.parent!==e||e.first!==n)&&void 0!==n.raws.before)return t=n.raws.before,t.includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1})),t&&(t=t.replace(/\S/g,"")),t}rawColon(e){let t;return e.walkDecls((e=>{if(void 0!==e.raws.between)return t=e.raws.between.replace(/[^\s:]/g,""),!1})),t}rawEmptyBody(e){let t;return e.walk((e=>{if(e.nodes&&0===e.nodes.length&&(t=e.raws.after,void 0!==t))return!1})),t}rawIndent(e){if(e.raws.indent)return e.raws.indent;let t;return e.walk((n=>{let o=n.parent;if(o&&o!==e&&o.parent&&o.parent===e&&void 0!==n.raws.before){let e=n.raws.before.split("\n");return t=e[e.length-1],t=t.replace(/\S/g,""),!1}})),t}rawSemicolon(e){let t;return e.walk((e=>{if(e.nodes&&e.nodes.length&&"decl"===e.last.type&&(t=e.raws.semicolon,void 0!==t))return!1})),t}rawValue(e,t){let n=e[t],o=e.raws[t];return o&&o.value===n?o.raw:n}root(e){this.body(e),e.raws.after&&this.builder(e.raws.after)}rule(e){this.block(e,this.rawValue(e,"selector")),e.raws.ownSemicolon&&this.builder(e.raws.ownSemicolon,e,"end")}stringify(e,t){if(!this[e.type])throw new Error("Unknown AST node type "+e.type+". Maybe you need to change PostCSS stringifier.");this[e.type](e,t)}};var Jo=Yo;Yo.default=Yo;let Ko=Jo;function Zo(e,t){new Ko(t).stringify(e)}var $o=Zo;Zo.default=Zo;let{isClean:Qo,my:er}=Go,tr=Vo,nr=Jo,or=$o;function rr(e,t){let n=new e.constructor;for(let o in e){if(!Object.prototype.hasOwnProperty.call(e,o))continue;if("proxyCache"===o)continue;let r=e[o],i=typeof r;"parent"===o&&"object"===i?t&&(n[o]=t):"source"===o?n[o]=r:Array.isArray(r)?n[o]=r.map((e=>rr(e,n))):("object"===i&&null!==r&&(r=rr(r)),n[o]=r)}return n}let ir=class{constructor(e={}){this.raws={},this[Qo]=!1,this[er]=!0;for(let t in e)if("nodes"===t){this.nodes=[];for(let n of e[t])"function"==typeof n.clone?this.append(n.clone()):this.append(n)}else this[t]=e[t]}addToError(e){if(e.postcssNode=this,e.stack&&this.source&&/\n\s{4}at /.test(e.stack)){let t=this.source;e.stack=e.stack.replace(/\n\s{4}at /,`$&${t.input.from}:${t.start.line}:${t.start.column}$&`)}return e}after(e){return this.parent.insertAfter(this,e),this}assign(e={}){for(let t in e)this[t]=e[t];return this}before(e){return this.parent.insertBefore(this,e),this}cleanRaws(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between}clone(e={}){let t=rr(this);for(let n in e)t[n]=e[n];return t}cloneAfter(e={}){let t=this.clone(e);return this.parent.insertAfter(this,t),t}cloneBefore(e={}){let t=this.clone(e);return this.parent.insertBefore(this,t),t}error(e,t={}){if(this.source){let{end:n,start:o}=this.rangeBy(t);return this.source.input.error(e,{column:o.column,line:o.line},{column:n.column,line:n.line},t)}return new tr(e)}getProxyProcessor(){return{get:(e,t)=>"proxyOf"===t?e:"root"===t?()=>e.root().toProxy():e[t],set:(e,t,n)=>(e[t]===n||(e[t]=n,"prop"!==t&&"value"!==t&&"name"!==t&&"params"!==t&&"important"!==t&&"text"!==t||e.markDirty()),!0)}}markDirty(){if(this[Qo]){this[Qo]=!1;let e=this;for(;e=e.parent;)e[Qo]=!1}}next(){if(!this.parent)return;let e=this.parent.index(this);return this.parent.nodes[e+1]}positionBy(e,t){let n=this.source.start;if(e.index)n=this.positionInside(e.index,t);else if(e.word){let o=(t=this.toString()).indexOf(e.word);-1!==o&&(n=this.positionInside(o,t))}return n}positionInside(e,t){let n=t||this.toString(),o=this.source.start.column,r=this.source.start.line;for(let i=0;i"object"==typeof e&&e.toJSON?e.toJSON(null,t):e));else if("object"==typeof e&&e.toJSON)n[i]=e.toJSON(null,t);else if("source"===i){let o=t.get(e.input);null==o&&(o=r,t.set(e.input,r),r++),n[i]={end:e.end,inputId:o,start:e.start}}else n[i]=e}return o&&(n.inputs=[...t.keys()].map((e=>e.toJSON()))),n}toProxy(){return this.proxyCache||(this.proxyCache=new Proxy(this,this.getProxyProcessor())),this.proxyCache}toString(e=or){e.stringify&&(e=e.stringify);let t="";return e(this,(e=>{t+=e})),t}warn(e,t,n){let o={node:this};for(let r in n)o[r]=n[r];return e.warn(t,o)}get proxyOf(){return this}};var ar=ir;ir.default=ir;let sr=ar,lr=class extends sr{constructor(e){e&&void 0!==e.value&&"string"!=typeof e.value&&(e={...e,value:String(e.value)}),super(e),this.type="decl"}get variable(){return this.prop.startsWith("--")||"$"===this.prop[0]}};var cr=lr;lr.default=lr;var ur={nanoid:(e=21)=>{let t="",n=e;for(;n--;)t+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[64*Math.random()|0];return t},customAlphabet:(e,t=21)=>(n=t)=>{let o="",r=n;for(;r--;)o+=e[Math.random()*e.length|0];return o}};let{SourceMapConsumer:dr,SourceMapGenerator:pr}=Ho,{existsSync:hr,readFileSync:fr}=Ho,{dirname:mr,join:gr}=Ho;let vr=class{constructor(e,t){if(!1===t.map)return;this.loadAnnotation(e),this.inline=this.startWith(this.annotation,"data:");let n=t.map?t.map.prev:void 0,o=this.loadMap(t.from,n);!this.mapFile&&t.from&&(this.mapFile=t.from),this.mapFile&&(this.root=mr(this.mapFile)),o&&(this.text=o)}consumer(){return this.consumerCache||(this.consumerCache=new dr(this.text)),this.consumerCache}decodeInline(e){if(/^data:application\/json;charset=utf-?8,/.test(e)||/^data:application\/json,/.test(e))return decodeURIComponent(e.substr(RegExp.lastMatch.length));if(/^data:application\/json;charset=utf-?8;base64,/.test(e)||/^data:application\/json;base64,/.test(e))return t=e.substr(RegExp.lastMatch.length),Buffer?Buffer.from(t,"base64").toString():window.atob(t);var t;let n=e.match(/data:application\/json;([^,]+),/)[1];throw new Error("Unsupported source map encoding "+n)}getAnnotationURL(e){return e.replace(/^\/\*\s*# sourceMappingURL=/,"").trim()}isMap(e){return"object"==typeof e&&("string"==typeof e.mappings||"string"==typeof e._mappings||Array.isArray(e.sections))}loadAnnotation(e){let t=e.match(/\/\*\s*# sourceMappingURL=/gm);if(!t)return;let n=e.lastIndexOf(t.pop()),o=e.indexOf("*/",n);n>-1&&o>-1&&(this.annotation=this.getAnnotationURL(e.substring(n,o)))}loadFile(e){if(this.root=mr(e),hr(e))return this.mapFile=e,fr(e,"utf-8").toString().trim()}loadMap(e,t){if(!1===t)return!1;if(t){if("string"==typeof t)return t;if("function"!=typeof t){if(t instanceof dr)return pr.fromSourceMap(t).toString();if(t instanceof pr)return t.toString();if(this.isMap(t))return JSON.stringify(t);throw new Error("Unsupported previous source map format: "+t.toString())}{let n=t(e);if(n){let e=this.loadFile(n);if(!e)throw new Error("Unable to load previous source map: "+n.toString());return e}}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){let t=this.annotation;return e&&(t=gr(mr(e),t)),this.loadFile(t)}}}startWith(e,t){return!!e&&e.substr(0,t.length)===t}withContent(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)}};var yr=vr;vr.default=vr;let{SourceMapConsumer:br,SourceMapGenerator:wr}=Ho,{fileURLToPath:kr,pathToFileURL:xr}=Ho,{isAbsolute:Sr,resolve:Cr}=Ho,{nanoid:Ir}=ur,Er=Ho,Tr=Vo,Or=yr,Lr=Symbol("fromOffsetCache"),Ar=Boolean(br&&wr),Mr=Boolean(Cr&&Sr),Rr=class{constructor(e,t={}){if(null==e||"object"==typeof e&&!e.toString)throw new Error(`PostCSS received ${e} instead of CSS string`);if(this.css=e.toString(),"\ufeff"===this.css[0]||"￾"===this.css[0]?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,t.from&&(!Mr||/^\w+:\/\//.test(t.from)||Sr(t.from)?this.file=t.from:this.file=Cr(t.from)),Mr&&Ar){let e=new Or(this.css,t);if(e.text){this.map=e;let t=e.consumer().file;!this.file&&t&&(this.file=this.mapResolve(t))}}this.file||(this.id=""),this.map&&(this.map.file=this.from)}error(e,t,n,o={}){let r,i,a;if(t&&"object"==typeof t){let e=t,o=n;if("number"==typeof e.offset){let o=this.fromOffset(e.offset);t=o.line,n=o.col}else t=e.line,n=e.column;if("number"==typeof o.offset){let e=this.fromOffset(o.offset);i=e.line,a=e.col}else i=o.line,a=o.column}else if(!n){let e=this.fromOffset(t);t=e.line,n=e.col}let s=this.origin(t,n,i,a);return r=s?new Tr(e,void 0===s.endLine?s.line:{column:s.column,line:s.line},void 0===s.endLine?s.column:{column:s.endColumn,line:s.endLine},s.source,s.file,o.plugin):new Tr(e,void 0===i?t:{column:n,line:t},void 0===i?n:{column:a,line:i},this.css,this.file,o.plugin),r.input={column:n,endColumn:a,endLine:i,line:t,source:this.css},this.file&&(xr&&(r.input.url=xr(this.file).toString()),r.input.file=this.file),r}fromOffset(e){let t,n;if(this[Lr])n=this[Lr];else{let e=this.css.split("\n");n=new Array(e.length);let t=0;for(let o=0,r=e.length;o=t)o=n.length-1;else{let t,r=n.length-2;for(;o>1),e=n[t+1])){o=t;break}o=t+1}}return{col:e-n[o]+1,line:o+1}}mapResolve(e){return/^\w+:\/\//.test(e)?e:Cr(this.map.consumer().sourceRoot||this.map.root||".",e)}origin(e,t,n,o){if(!this.map)return!1;let r,i,a=this.map.consumer(),s=a.originalPositionFor({column:t,line:e});if(!s.source)return!1;"number"==typeof n&&(r=a.originalPositionFor({column:o,line:n})),i=Sr(s.source)?xr(s.source):new URL(s.source,this.map.consumer().sourceRoot||xr(this.map.mapFile));let l={column:s.column,endColumn:r&&r.column,endLine:r&&r.line,line:s.line,url:i.toString()};if("file:"===i.protocol){if(!kr)throw new Error("file: protocol is not available in this PostCSS build");l.file=kr(i)}let c=a.sourceContentFor(s.source);return c&&(l.source=c),l}toJSON(){let e={};for(let t of["hasBOM","css","file","id"])null!=this[t]&&(e[t]=this[t]);return this.map&&(e.map={...this.map},e.map.consumerCache&&(e.map.consumerCache=void 0)),e}get from(){return this.file||this.id}};var Pr=Rr;Rr.default=Rr,Er&&Er.registerInput&&Er.registerInput(Rr);let{SourceMapConsumer:Dr,SourceMapGenerator:Nr}=Ho,{dirname:jr,relative:Fr,resolve:Br,sep:_r}=Ho,{pathToFileURL:Ur}=Ho,Hr=Pr,zr=Boolean(Dr&&Nr),qr=Boolean(jr&&Br&&Fr&&_r);var Wr=class{constructor(e,t,n,o){this.stringify=e,this.mapOpts=n.map||{},this.root=t,this.opts=n,this.css=o,this.originalCSS=o,this.usesFileUrls=!this.mapOpts.from&&this.mapOpts.absolute,this.memoizedFileURLs=new Map,this.memoizedPaths=new Map,this.memoizedURLs=new Map}addAnnotation(){let e;e=this.isInline()?"data:application/json;base64,"+this.toBase64(this.map.toString()):"string"==typeof this.mapOpts.annotation?this.mapOpts.annotation:"function"==typeof this.mapOpts.annotation?this.mapOpts.annotation(this.opts.to,this.root):this.outputFile()+".map";let t="\n";this.css.includes("\r\n")&&(t="\r\n"),this.css+=t+"/*# sourceMappingURL="+e+" */"}applyPrevMaps(){for(let e of this.previous()){let t,n=this.toUrl(this.path(e.file)),o=e.root||jr(e.file);!1===this.mapOpts.sourcesContent?(t=new Dr(e.text),t.sourcesContent&&(t.sourcesContent=null)):t=e.consumer(),this.map.applySourceMap(t,n,this.toUrl(this.path(o)))}}clearAnnotation(){if(!1!==this.mapOpts.annotation)if(this.root){let e;for(let t=this.root.nodes.length-1;t>=0;t--)e=this.root.nodes[t],"comment"===e.type&&0===e.text.indexOf("# sourceMappingURL=")&&this.root.removeChild(t)}else this.css&&(this.css=this.css.replace(/\n*?\/\*#[\S\s]*?\*\/$/gm,""))}generate(){if(this.clearAnnotation(),qr&&zr&&this.isMap())return this.generateMap();{let e="";return this.stringify(this.root,(t=>{e+=t})),[e]}}generateMap(){if(this.root)this.generateString();else if(1===this.previous().length){let e=this.previous()[0].consumer();e.file=this.outputFile(),this.map=Nr.fromSourceMap(e,{ignoreInvalidMapping:!0})}else this.map=new Nr({file:this.outputFile(),ignoreInvalidMapping:!0}),this.map.addMapping({generated:{column:0,line:1},original:{column:0,line:1},source:this.opts.from?this.toUrl(this.path(this.opts.from)):""});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]}generateString(){this.css="",this.map=new Nr({file:this.outputFile(),ignoreInvalidMapping:!0});let e,t,n=1,o=1,r="",i={generated:{column:0,line:0},original:{column:0,line:0},source:""};this.stringify(this.root,((a,s,l)=>{if(this.css+=a,s&&"end"!==l&&(i.generated.line=n,i.generated.column=o-1,s.source&&s.source.start?(i.source=this.sourcePath(s),i.original.line=s.source.start.line,i.original.column=s.source.start.column-1,this.map.addMapping(i)):(i.source=r,i.original.line=1,i.original.column=0,this.map.addMapping(i))),e=a.match(/\n/g),e?(n+=e.length,t=a.lastIndexOf("\n"),o=a.length-t):o+=a.length,s&&"start"!==l){let e=s.parent||{raws:{}};("decl"===s.type||"atrule"===s.type&&!s.nodes)&&s===e.last&&!e.raws.semicolon||(s.source&&s.source.end?(i.source=this.sourcePath(s),i.original.line=s.source.end.line,i.original.column=s.source.end.column-1,i.generated.line=n,i.generated.column=o-2,this.map.addMapping(i)):(i.source=r,i.original.line=1,i.original.column=0,i.generated.line=n,i.generated.column=o-1,this.map.addMapping(i)))}}))}isAnnotation(){return!!this.isInline()||(void 0!==this.mapOpts.annotation?this.mapOpts.annotation:!this.previous().length||this.previous().some((e=>e.annotation)))}isInline(){if(void 0!==this.mapOpts.inline)return this.mapOpts.inline;let e=this.mapOpts.annotation;return(void 0===e||!0===e)&&(!this.previous().length||this.previous().some((e=>e.inline)))}isMap(){return void 0!==this.opts.map?!!this.opts.map:this.previous().length>0}isSourcesContent(){return void 0!==this.mapOpts.sourcesContent?this.mapOpts.sourcesContent:!this.previous().length||this.previous().some((e=>e.withContent()))}outputFile(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"}path(e){if(this.mapOpts.absolute)return e;if(60===e.charCodeAt(0))return e;if(/^\w+:\/\//.test(e))return e;let t=this.memoizedPaths.get(e);if(t)return t;let n=this.opts.to?jr(this.opts.to):".";"string"==typeof this.mapOpts.annotation&&(n=jr(Br(n,this.mapOpts.annotation)));let o=Fr(n,e);return this.memoizedPaths.set(e,o),o}previous(){if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk((e=>{if(e.source&&e.source.input.map){let t=e.source.input.map;this.previousMaps.includes(t)||this.previousMaps.push(t)}}));else{let e=new Hr(this.originalCSS,this.opts);e.map&&this.previousMaps.push(e.map)}return this.previousMaps}setSourcesContent(){let e={};if(this.root)this.root.walk((t=>{if(t.source){let n=t.source.input.from;if(n&&!e[n]){e[n]=!0;let o=this.usesFileUrls?this.toFileUrl(n):this.toUrl(this.path(n));this.map.setSourceContent(o,t.source.input.css)}}}));else if(this.css){let e=this.opts.from?this.toUrl(this.path(this.opts.from)):"";this.map.setSourceContent(e,this.css)}}sourcePath(e){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(e.source.input.from):this.toUrl(this.path(e.source.input.from))}toBase64(e){return Buffer?Buffer.from(e).toString("base64"):window.btoa(unescape(encodeURIComponent(e)))}toFileUrl(e){let t=this.memoizedFileURLs.get(e);if(t)return t;if(Ur){let t=Ur(e).toString();return this.memoizedFileURLs.set(e,t),t}throw new Error("`map.absolute` option is not available in this PostCSS build")}toUrl(e){let t=this.memoizedURLs.get(e);if(t)return t;"\\"===_r&&(e=e.replace(/\\/g,"/"));let n=encodeURI(e).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(e,n),n}};let Vr=ar,Gr=class extends Vr{constructor(e){super(e),this.type="comment"}};var Xr=Gr;Gr.default=Gr;let Yr,Jr,Kr,Zr,{isClean:$r,my:Qr}=Go,ei=cr,ti=Xr,ni=ar;function oi(e){return e.map((e=>(e.nodes&&(e.nodes=oi(e.nodes)),delete e.source,e)))}function ri(e){if(e[$r]=!1,e.proxyOf.nodes)for(let t of e.proxyOf.nodes)ri(t)}let ii=class e extends ni{append(...e){for(let t of e){let e=this.normalize(t,this.last);for(let t of e)this.proxyOf.nodes.push(t)}return this.markDirty(),this}cleanRaws(e){if(super.cleanRaws(e),this.nodes)for(let t of this.nodes)t.cleanRaws(e)}each(e){if(!this.proxyOf.nodes)return;let t,n,o=this.getIterator();for(;this.indexes[o]"proxyOf"===t?e:e[t]?"each"===t||"string"==typeof t&&t.startsWith("walk")?(...n)=>e[t](...n.map((e=>"function"==typeof e?(t,n)=>e(t.toProxy(),n):e))):"every"===t||"some"===t?n=>e[t](((e,...t)=>n(e.toProxy(),...t))):"root"===t?()=>e.root().toProxy():"nodes"===t?e.nodes.map((e=>e.toProxy())):"first"===t||"last"===t?e[t].toProxy():e[t]:e[t],set:(e,t,n)=>(e[t]===n||(e[t]=n,"name"!==t&&"params"!==t&&"selector"!==t||e.markDirty()),!0)}}index(e){return"number"==typeof e?e:(e.proxyOf&&(e=e.proxyOf),this.proxyOf.nodes.indexOf(e))}insertAfter(e,t){let n,o=this.index(e),r=this.normalize(t,this.proxyOf.nodes[o]).reverse();o=this.index(e);for(let i of r)this.proxyOf.nodes.splice(o+1,0,i);for(let i in this.indexes)n=this.indexes[i],o(t[Qr]||e.rebuild(t),(t=t.proxyOf).parent&&t.parent.removeChild(t),t[$r]&&ri(t),void 0===t.raws.before&&n&&void 0!==n.raws.before&&(t.raws.before=n.raws.before.replace(/\S/g,"")),t.parent=this.proxyOf,t)))}prepend(...e){e=e.reverse();for(let t of e){let e=this.normalize(t,this.first,"prepend").reverse();for(let t of e)this.proxyOf.nodes.unshift(t);for(let t in this.indexes)this.indexes[t]=this.indexes[t]+e.length}return this.markDirty(),this}push(e){return e.parent=this,this.proxyOf.nodes.push(e),this}removeAll(){for(let e of this.proxyOf.nodes)e.parent=void 0;return this.proxyOf.nodes=[],this.markDirty(),this}removeChild(e){let t;e=this.index(e),this.proxyOf.nodes[e].parent=void 0,this.proxyOf.nodes.splice(e,1);for(let n in this.indexes)t=this.indexes[n],t>=e&&(this.indexes[n]=t-1);return this.markDirty(),this}replaceValues(e,t,n){return n||(n=t,t={}),this.walkDecls((o=>{t.props&&!t.props.includes(o.prop)||t.fast&&!o.value.includes(t.fast)||(o.value=o.value.replace(e,n))})),this.markDirty(),this}some(e){return this.nodes.some(e)}walk(e){return this.each(((t,n)=>{let o;try{o=e(t,n)}catch(r){throw t.addToError(r)}return!1!==o&&t.walk&&(o=t.walk(e)),o}))}walkAtRules(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("atrule"===n.type&&e.test(n.name))return t(n,o)})):this.walk(((n,o)=>{if("atrule"===n.type&&n.name===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("atrule"===e.type)return t(e,n)})))}walkComments(e){return this.walk(((t,n)=>{if("comment"===t.type)return e(t,n)}))}walkDecls(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("decl"===n.type&&e.test(n.prop))return t(n,o)})):this.walk(((n,o)=>{if("decl"===n.type&&n.prop===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("decl"===e.type)return t(e,n)})))}walkRules(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("rule"===n.type&&e.test(n.selector))return t(n,o)})):this.walk(((n,o)=>{if("rule"===n.type&&n.selector===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("rule"===e.type)return t(e,n)})))}get first(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}get last(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}};ii.registerParse=e=>{Yr=e},ii.registerRule=e=>{Jr=e},ii.registerAtRule=e=>{Kr=e},ii.registerRoot=e=>{Zr=e};var ai=ii;ii.default=ii,ii.rebuild=e=>{"atrule"===e.type?Object.setPrototypeOf(e,Kr.prototype):"rule"===e.type?Object.setPrototypeOf(e,Jr.prototype):"decl"===e.type?Object.setPrototypeOf(e,ei.prototype):"comment"===e.type?Object.setPrototypeOf(e,ti.prototype):"root"===e.type&&Object.setPrototypeOf(e,Zr.prototype),e[Qr]=!0,e.nodes&&e.nodes.forEach((e=>{ii.rebuild(e)}))};let si,li,ci=ai,ui=class extends ci{constructor(e){super({type:"document",...e}),this.nodes||(this.nodes=[])}toResult(e={}){return new si(new li,this,e).stringify()}};ui.registerLazyResult=e=>{si=e},ui.registerProcessor=e=>{li=e};var di=ui;ui.default=ui;let pi=class{constructor(e,t={}){if(this.type="warning",this.text=e,t.node&&t.node.source){let e=t.node.rangeBy(t);this.line=e.start.line,this.column=e.start.column,this.endLine=e.end.line,this.endColumn=e.end.column}for(let n in t)this[n]=t[n]}toString(){return this.node?this.node.error(this.text,{index:this.index,plugin:this.plugin,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text}};var hi=pi;pi.default=pi;let fi=hi,mi=class{constructor(e,t,n){this.processor=e,this.messages=[],this.root=t,this.opts=n,this.css=void 0,this.map=void 0}toString(){return this.css}warn(e,t={}){t.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(t.plugin=this.lastPlugin.postcssPlugin);let n=new fi(e,t);return this.messages.push(n),n}warnings(){return this.messages.filter((e=>"warning"===e.type))}get content(){return this.css}};var gi=mi;mi.default=mi;const vi="'".charCodeAt(0),yi='"'.charCodeAt(0),bi="\\".charCodeAt(0),wi="/".charCodeAt(0),ki="\n".charCodeAt(0),xi=" ".charCodeAt(0),Si="\f".charCodeAt(0),Ci="\t".charCodeAt(0),Ii="\r".charCodeAt(0),Ei="[".charCodeAt(0),Ti="]".charCodeAt(0),Oi="(".charCodeAt(0),Li=")".charCodeAt(0),Ai="{".charCodeAt(0),Mi="}".charCodeAt(0),Ri=";".charCodeAt(0),Pi="*".charCodeAt(0),Di=":".charCodeAt(0),Ni="@".charCodeAt(0),ji=/[\t\n\f\r "#'()/;[\\\]{}]/g,Fi=/[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g,Bi=/.[\r\n"'(/\\]/,_i=/[\da-f]/i;let Ui=ai,Hi=class extends Ui{constructor(e){super(e),this.type="atrule"}append(...e){return this.proxyOf.nodes||(this.nodes=[]),super.append(...e)}prepend(...e){return this.proxyOf.nodes||(this.nodes=[]),super.prepend(...e)}};var zi=Hi;Hi.default=Hi,Ui.registerAtRule(Hi);let qi,Wi,Vi=ai,Gi=class extends Vi{constructor(e){super(e),this.type="root",this.nodes||(this.nodes=[])}normalize(e,t,n){let o=super.normalize(e);if(t)if("prepend"===n)this.nodes.length>1?t.raws.before=this.nodes[1].raws.before:delete t.raws.before;else if(this.first!==t)for(let r of o)r.raws.before=t.raws.before;return o}removeChild(e,t){let n=this.index(e);return!t&&0===n&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[n].raws.before),super.removeChild(e)}toResult(e={}){return new qi(new Wi,this,e).stringify()}};Gi.registerLazyResult=e=>{qi=e},Gi.registerProcessor=e=>{Wi=e};var Xi=Gi;Gi.default=Gi,Vi.registerRoot(Gi);let Yi={comma:e=>Yi.split(e,[","],!0),space:e=>Yi.split(e,[" ","\n","\t"]),split(e,t,n){let o=[],r="",i=!1,a=0,s=!1,l="",c=!1;for(let u of e)c?c=!1:"\\"===u?c=!0:s?u===l&&(s=!1):'"'===u||"'"===u?(s=!0,l=u):"("===u?a+=1:")"===u?a>0&&(a-=1):0===a&&t.includes(u)&&(i=!0),i?(""!==r&&o.push(r.trim()),r="",i=!1):r+=u;return(n||""!==r)&&o.push(r.trim()),o}};var Ji=Yi;Yi.default=Yi;let Ki=ai,Zi=Ji,$i=class extends Ki{constructor(e){super(e),this.type="rule",this.nodes||(this.nodes=[])}get selectors(){return Zi.comma(this.selector)}set selectors(e){let t=this.selector?this.selector.match(/,\s*/):null,n=t?t[0]:","+this.raw("between","beforeOpen");this.selector=e.join(n)}};var Qi=$i;$i.default=$i,Ki.registerRule($i);let ea=cr,ta=function(e,t={}){let n,o,r,i,a,s,l,c,u,d,p=e.css.valueOf(),h=t.ignoreErrors,f=p.length,m=0,g=[],v=[];function y(t){throw e.error("Unclosed "+t,m)}return{back:function(e){v.push(e)},endOfFile:function(){return 0===v.length&&m>=f},nextToken:function(e){if(v.length)return v.pop();if(m>=f)return;let t=!!e&&e.ignoreUnclosed;switch(n=p.charCodeAt(m),n){case ki:case xi:case Ci:case Ii:case Si:o=m;do{o+=1,n=p.charCodeAt(o)}while(n===xi||n===ki||n===Ci||n===Ii||n===Si);d=["space",p.slice(m,o)],m=o-1;break;case Ei:case Ti:case Ai:case Mi:case Di:case Ri:case Li:{let e=String.fromCharCode(n);d=[e,e,m];break}case Oi:if(c=g.length?g.pop()[1]:"",u=p.charCodeAt(m+1),"url"===c&&u!==vi&&u!==yi&&u!==xi&&u!==ki&&u!==Ci&&u!==Si&&u!==Ii){o=m;do{if(s=!1,o=p.indexOf(")",o+1),-1===o){if(h||t){o=m;break}y("bracket")}for(l=o;p.charCodeAt(l-1)===bi;)l-=1,s=!s}while(s);d=["brackets",p.slice(m,o+1),m,o],m=o}else o=p.indexOf(")",m+1),i=p.slice(m,o+1),-1===o||Bi.test(i)?d=["(","(",m]:(d=["brackets",i,m,o],m=o);break;case vi:case yi:r=n===vi?"'":'"',o=m;do{if(s=!1,o=p.indexOf(r,o+1),-1===o){if(h||t){o=m+1;break}y("string")}for(l=o;p.charCodeAt(l-1)===bi;)l-=1,s=!s}while(s);d=["string",p.slice(m,o+1),m,o],m=o;break;case Ni:ji.lastIndex=m+1,ji.test(p),o=0===ji.lastIndex?p.length-1:ji.lastIndex-2,d=["at-word",p.slice(m,o+1),m,o],m=o;break;case bi:for(o=m,a=!0;p.charCodeAt(o+1)===bi;)o+=1,a=!a;if(n=p.charCodeAt(o+1),a&&n!==wi&&n!==xi&&n!==ki&&n!==Ci&&n!==Ii&&n!==Si&&(o+=1,_i.test(p.charAt(o)))){for(;_i.test(p.charAt(o+1));)o+=1;p.charCodeAt(o+1)===xi&&(o+=1)}d=["word",p.slice(m,o+1),m,o],m=o;break;default:n===wi&&p.charCodeAt(m+1)===Pi?(o=p.indexOf("*/",m+2)+1,0===o&&(h||t?o=p.length:y("comment")),d=["comment",p.slice(m,o+1),m,o],m=o):(Fi.lastIndex=m+1,Fi.test(p),o=0===Fi.lastIndex?p.length-1:Fi.lastIndex-2,d=["word",p.slice(m,o+1),m,o],g.push(d),m=o)}return m++,d},position:function(){return m}}},na=Xr,oa=zi,ra=Xi,ia=Qi;const aa={empty:!0,space:!0};var sa=class{constructor(e){this.input=e,this.root=new ra,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:e,start:{column:1,line:1,offset:0}}}atrule(e){let t,n,o,r=new oa;r.name=e[1].slice(1),""===r.name&&this.unnamedAtrule(r,e),this.init(r,e[2]);let i=!1,a=!1,s=[],l=[];for(;!this.tokenizer.endOfFile();){if(t=(e=this.tokenizer.nextToken())[0],"("===t||"["===t?l.push("("===t?")":"]"):"{"===t&&l.length>0?l.push("}"):t===l[l.length-1]&&l.pop(),0===l.length){if(";"===t){r.source.end=this.getPosition(e[2]),r.source.end.offset++,this.semicolon=!0;break}if("{"===t){a=!0;break}if("}"===t){if(s.length>0){for(o=s.length-1,n=s[o];n&&"space"===n[0];)n=s[--o];n&&(r.source.end=this.getPosition(n[3]||n[2]),r.source.end.offset++)}this.end(e);break}s.push(e)}else s.push(e);if(this.tokenizer.endOfFile()){i=!0;break}}r.raws.between=this.spacesAndCommentsFromEnd(s),s.length?(r.raws.afterName=this.spacesAndCommentsFromStart(s),this.raw(r,"params",s),i&&(e=s[s.length-1],r.source.end=this.getPosition(e[3]||e[2]),r.source.end.offset++,this.spaces=r.raws.between,r.raws.between="")):(r.raws.afterName="",r.params=""),a&&(r.nodes=[],this.current=r)}checkMissedSemicolon(e){let t=this.colon(e);if(!1===t)return;let n,o=0;for(let r=t-1;r>=0&&(n=e[r],"space"===n[0]||(o+=1,2!==o));r--);throw this.input.error("Missed semicolon","word"===n[0]?n[3]+1:n[2])}colon(e){let t,n,o,r=0;for(let[i,a]of e.entries()){if(t=a,n=t[0],"("===n&&(r+=1),")"===n&&(r-=1),0===r&&":"===n){if(o){if("word"===o[0]&&"progid"===o[1])continue;return i}this.doubleColon(t)}o=t}return!1}comment(e){let t=new na;this.init(t,e[2]),t.source.end=this.getPosition(e[3]||e[2]),t.source.end.offset++;let n=e[1].slice(2,-2);if(/^\s*$/.test(n))t.text="",t.raws.left=n,t.raws.right="";else{let e=n.match(/^(\s*)([^]*\S)(\s*)$/);t.text=e[2],t.raws.left=e[1],t.raws.right=e[3]}}createTokenizer(){this.tokenizer=ta(this.input)}decl(e,t){let n=new ea;this.init(n,e[0][2]);let o,r=e[e.length-1];for(";"===r[0]&&(this.semicolon=!0,e.pop()),n.source.end=this.getPosition(r[3]||r[2]||function(e){for(let t=e.length-1;t>=0;t--){let n=e[t],o=n[3]||n[2];if(o)return o}}(e)),n.source.end.offset++;"word"!==e[0][0];)1===e.length&&this.unknownWord(e),n.raws.before+=e.shift()[1];for(n.source.start=this.getPosition(e[0][2]),n.prop="";e.length;){let t=e[0][0];if(":"===t||"space"===t||"comment"===t)break;n.prop+=e.shift()[1]}for(n.raws.between="";e.length;){if(o=e.shift(),":"===o[0]){n.raws.between+=o[1];break}"word"===o[0]&&/\w/.test(o[1])&&this.unknownWord([o]),n.raws.between+=o[1]}"_"!==n.prop[0]&&"*"!==n.prop[0]||(n.raws.before+=n.prop[0],n.prop=n.prop.slice(1));let i,a=[];for(;e.length&&(i=e[0][0],"space"===i||"comment"===i);)a.push(e.shift());this.precheckMissedSemicolon(e);for(let s=e.length-1;s>=0;s--){if(o=e[s],"!important"===o[1].toLowerCase()){n.important=!0;let t=this.stringFrom(e,s);t=this.spacesFromEnd(e)+t," !important"!==t&&(n.raws.important=t);break}if("important"===o[1].toLowerCase()){let t=e.slice(0),o="";for(let e=s;e>0;e--){let n=t[e][0];if(0===o.trim().indexOf("!")&&"space"!==n)break;o=t.pop()[1]+o}0===o.trim().indexOf("!")&&(n.important=!0,n.raws.important=o,e=t)}if("space"!==o[0]&&"comment"!==o[0])break}e.some((e=>"space"!==e[0]&&"comment"!==e[0]))&&(n.raws.between+=a.map((e=>e[1])).join(""),a=[]),this.raw(n,"value",a.concat(e),t),n.value.includes(":")&&!t&&this.checkMissedSemicolon(e)}doubleColon(e){throw this.input.error("Double colon",{offset:e[2]},{offset:e[2]+e[1].length})}emptyRule(e){let t=new ia;this.init(t,e[2]),t.selector="",t.raws.between="",this.current=t}end(e){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(e[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(e)}endFile(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position())}freeSemicolon(e){if(this.spaces+=e[1],this.current.nodes){let e=this.current.nodes[this.current.nodes.length-1];e&&"rule"===e.type&&!e.raws.ownSemicolon&&(e.raws.ownSemicolon=this.spaces,this.spaces="")}}getPosition(e){let t=this.input.fromOffset(e);return{column:t.col,line:t.line,offset:e}}init(e,t){this.current.push(e),e.source={input:this.input,start:this.getPosition(t)},e.raws.before=this.spaces,this.spaces="","comment"!==e.type&&(this.semicolon=!1)}other(e){let t=!1,n=null,o=!1,r=null,i=[],a=e[1].startsWith("--"),s=[],l=e;for(;l;){if(n=l[0],s.push(l),"("===n||"["===n)r||(r=l),i.push("("===n?")":"]");else if(a&&o&&"{"===n)r||(r=l),i.push("}");else if(0===i.length){if(";"===n){if(o)return void this.decl(s,a);break}if("{"===n)return void this.rule(s);if("}"===n){this.tokenizer.back(s.pop()),t=!0;break}":"===n&&(o=!0)}else n===i[i.length-1]&&(i.pop(),0===i.length&&(r=null));l=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(t=!0),i.length>0&&this.unclosedBracket(r),t&&o){if(!a)for(;s.length&&(l=s[s.length-1][0],"space"===l||"comment"===l);)this.tokenizer.back(s.pop());this.decl(s,a)}else this.unknownWord(s)}parse(){let e;for(;!this.tokenizer.endOfFile();)switch(e=this.tokenizer.nextToken(),e[0]){case"space":this.spaces+=e[1];break;case";":this.freeSemicolon(e);break;case"}":this.end(e);break;case"comment":this.comment(e);break;case"at-word":this.atrule(e);break;case"{":this.emptyRule(e);break;default:this.other(e)}this.endFile()}precheckMissedSemicolon(){}raw(e,t,n,o){let r,i,a,s,l=n.length,c="",u=!0;for(let d=0;de+t[1]),"");e.raws[t]={raw:o,value:c}}e[t]=c}rule(e){e.pop();let t=new ia;this.init(t,e[0][2]),t.raws.between=this.spacesAndCommentsFromEnd(e),this.raw(t,"selector",e),this.current=t}spacesAndCommentsFromEnd(e){let t,n="";for(;e.length&&(t=e[e.length-1][0],"space"===t||"comment"===t);)n=e.pop()[1]+n;return n}spacesAndCommentsFromStart(e){let t,n="";for(;e.length&&(t=e[0][0],"space"===t||"comment"===t);)n+=e.shift()[1];return n}spacesFromEnd(e){let t,n="";for(;e.length&&(t=e[e.length-1][0],"space"===t);)n=e.pop()[1]+n;return n}stringFrom(e,t){let n="";for(let o=t;oLa(e))),e}let Aa={},Ma=class e{constructor(t,n,o){let r;if(this.stringified=!1,this.processed=!1,"object"!=typeof n||null===n||"root"!==n.type&&"document"!==n.type)if(n instanceof e||n instanceof ba)r=La(n.root),n.map&&(void 0===o.map&&(o.map={}),o.map.inline||(o.map.inline=!1),o.map.prev=n.map);else{let e=wa;o.syntax&&(e=o.syntax.parse),o.parser&&(e=o.parser),e.parse&&(e=e.parse);try{r=e(n,o)}catch(i){this.processed=!0,this.error=i}r&&!r[fa]&&va.rebuild(r)}else r=La(n);this.result=new ba(t,r,o),this.helpers={...Aa,postcss:Aa,result:this.result},this.plugins=this.processor.plugins.map((e=>"object"==typeof e&&e.prepare?{...e,...e.prepare(this.result)}:e))}async(){return this.error?Promise.reject(this.error):this.processed?Promise.resolve(this.result):(this.processing||(this.processing=this.runAsync()),this.processing)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}getAsyncError(){throw new Error("Use process(css).then(cb) to work with async plugins")}handleError(e,t){let n=this.result.lastPlugin;try{t&&t.addToError(e),this.error=e,"CssSyntaxError"!==e.name||e.plugin?n.postcssVersion:(e.plugin=n.postcssPlugin,e.setMessage())}catch(o){console&&console.error&&console.error(o)}return e}prepareVisitors(){this.listeners={};let e=(e,t,n)=>{this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].push([e,n])};for(let t of this.plugins)if("object"==typeof t)for(let n in t){if(!Sa[n]&&/^[A-Z]/.test(n))throw new Error(`Unknown event ${n} in ${t.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`);if(!Ca[n])if("object"==typeof t[n])for(let o in t[n])e(t,"*"===o?n:n+"-"+o.toLowerCase(),t[n][o]);else"function"==typeof t[n]&&e(t,n,t[n])}this.hasListener=Object.keys(this.listeners).length>0}async runAsync(){this.plugin=0;for(let n=0;n0;){let e=this.visitTick(n);if(Ea(e))try{await e}catch(t){let e=n[n.length-1].node;throw this.handleError(t,e)}}}if(this.listeners.OnceExit)for(let[n,o]of this.listeners.OnceExit){this.result.lastPlugin=n;try{if("document"===e.type){let t=e.nodes.map((e=>o(e,this.helpers)));await Promise.all(t)}else await o(e,this.helpers)}catch(t){throw this.handleError(t)}}}return this.processed=!0,this.stringify()}runOnRoot(e){this.result.lastPlugin=e;try{if("object"==typeof e&&e.Once){if("document"===this.result.root.type){let t=this.result.root.nodes.map((t=>e.Once(t,this.helpers)));return Ea(t[0])?Promise.all(t):t}return e.Once(this.result.root,this.helpers)}if("function"==typeof e)return e(this.result.root,this.result)}catch(t){throw this.handleError(t)}}stringify(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();let e=this.result.opts,t=ga;e.syntax&&(t=e.syntax.stringify),e.stringifier&&(t=e.stringifier),t.stringify&&(t=t.stringify);let n=new ma(t,this.result.root,this.result.opts).generate();return this.result.css=n[0],this.result.map=n[1],this.result}sync(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(let e of this.plugins){if(Ea(this.runOnRoot(e)))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){let e=this.result.root;for(;!e[ha];)e[ha]=!0,this.walkSync(e);if(this.listeners.OnceExit)if("document"===e.type)for(let t of e.nodes)this.visitSync(this.listeners.OnceExit,t);else this.visitSync(this.listeners.OnceExit,e)}return this.result}then(e,t){return this.async().then(e,t)}toString(){return this.css}visitSync(e,t){for(let[o,r]of e){let e;this.result.lastPlugin=o;try{e=r(t,this.helpers)}catch(n){throw this.handleError(n,t.proxyOf)}if("root"!==t.type&&"document"!==t.type&&!t.parent)return!0;if(Ea(e))throw this.getAsyncError()}}visitTick(e){let t=e[e.length-1],{node:n,visitors:o}=t;if("root"!==n.type&&"document"!==n.type&&!n.parent)return void e.pop();if(o.length>0&&t.visitorIndex{e[ha]||this.walkSync(e)}));else{let t=this.listeners[n];if(t&&this.visitSync(t,e.toProxy()))return}}warnings(){return this.sync().warnings()}get content(){return this.stringify().content}get css(){return this.stringify().css}get map(){return this.stringify().map}get messages(){return this.sync().messages}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){return this.sync().root}get[Symbol.toStringTag](){return"LazyResult"}};Ma.registerPostcss=e=>{Aa=e};var Ra=Ma;Ma.default=Ma,ka.registerLazyResult(Ma),ya.registerLazyResult(Ma);let Pa=Wr,Da=$o,Na=pa;const ja=gi;let Fa=class{constructor(e,t,n){let o;t=t.toString(),this.stringified=!1,this._processor=e,this._css=t,this._opts=n,this._map=void 0;let r=Da;this.result=new ja(this._processor,o,this._opts),this.result.css=t;let i=this;Object.defineProperty(this.result,"root",{get:()=>i.root});let a=new Pa(r,o,this._opts,t);if(a.isMap()){let[e,t]=a.generate();e&&(this.result.css=e),t&&(this.result.map=t)}else a.clearAnnotation(),this.result.css=a.css}async(){return this.error?Promise.reject(this.error):Promise.resolve(this.result)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}sync(){if(this.error)throw this.error;return this.result}then(e,t){return this.async().then(e,t)}toString(){return this._css}warnings(){return[]}get content(){return this.result.css}get css(){return this.result.css}get map(){return this.result.map}get messages(){return[]}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){if(this._root)return this._root;let e,t=Na;try{e=t(this._css,this._opts)}catch(n){this.error=n}if(this.error)throw this.error;return this._root=e,e}get[Symbol.toStringTag](){return"NoWorkResult"}};var Ba=Fa;Fa.default=Fa;let _a=Ba,Ua=Ra,Ha=di,za=Xi,qa=class{constructor(e=[]){this.version="8.4.38",this.plugins=this.normalize(e)}normalize(e){let t=[];for(let n of e)if(!0===n.postcss?n=n():n.postcss&&(n=n.postcss),"object"==typeof n&&Array.isArray(n.plugins))t=t.concat(n.plugins);else if("object"==typeof n&&n.postcssPlugin)t.push(n);else if("function"==typeof n)t.push(n);else{if("object"!=typeof n||!n.parse&&!n.stringify)throw new Error(n+" is not a PostCSS plugin")}return t}process(e,t={}){return this.plugins.length||t.parser||t.stringifier||t.syntax?new Ua(this,e,t):new _a(this,e,t)}use(e){return this.plugins=this.plugins.concat(this.normalize([e])),this}};var Wa=qa;qa.default=qa,za.registerProcessor(qa),Ha.registerProcessor(qa);let Va=cr,Ga=yr,Xa=Xr,Ya=zi,Ja=Pr,Ka=Xi,Za=Qi;function $a(e,t){if(Array.isArray(e))return e.map((e=>$a(e)));let{inputs:n,...o}=e;if(n){t=[];for(let e of n){let n={...e,__proto__:Ja.prototype};n.map&&(n.map={...n.map,__proto__:Ga.prototype}),t.push(n)}}if(o.nodes&&(o.nodes=e.nodes.map((e=>$a(e,t)))),o.source){let{inputId:e,...n}=o.source;o.source=n,null!=e&&(o.source.input=t[e])}if("root"===o.type)return new Ka(o);if("decl"===o.type)return new Va(o);if("rule"===o.type)return new Za(o);if("comment"===o.type)return new Xa(o);if("atrule"===o.type)return new Ya(o);throw new Error("Unknown node type: "+e.type)}var Qa=$a;$a.default=$a;let es=Vo,ts=cr,ns=Ra,os=ai,rs=Wa,is=$o,as=Qa,ss=di,ls=hi,cs=Xr,us=zi,ds=gi,ps=Pr,hs=pa,fs=Ji,ms=Qi,gs=Xi,vs=ar;function ys(...e){return 1===e.length&&Array.isArray(e[0])&&(e=e[0]),new rs(e)}ys.plugin=function(e,t){let n,o=!1;function r(...n){console&&console.warn&&!o&&(o=!0,console.warn(e+": postcss.plugin was deprecated. Migration guide:\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration"),process.env.LANG&&process.env.LANG.startsWith("cn")&&console.warn(e+": 里面 postcss.plugin 被弃用. 迁移指南:\nhttps://www.w3ctech.com/topic/2226"));let r=t(...n);return r.postcssPlugin=e,r.postcssVersion=(new rs).version,r}return Object.defineProperty(r,"postcss",{get:()=>(n||(n=r()),n)}),r.process=function(e,t,n){return ys([r(n)]).process(e,t)},r},ys.stringify=is,ys.parse=hs,ys.fromJSON=as,ys.list=fs,ys.comment=e=>new cs(e),ys.atRule=e=>new us(e),ys.decl=e=>new ts(e),ys.rule=e=>new ms(e),ys.root=e=>new gs(e),ys.document=e=>new ss(e),ys.CssSyntaxError=es,ys.Declaration=ts,ys.Container=os,ys.Processor=rs,ys.Document=ss,ys.Comment=cs,ys.Warning=ls,ys.AtRule=us,ys.Result=ds,ys.Input=ps,ys.Rule=ms,ys.Root=gs,ys.Node=vs,ns.registerPostcss(ys);var bs=ys;ys.default=ys;const ws=No(bs);ws.stringify,ws.fromJSON,ws.plugin,ws.parse,ws.list,ws.document,ws.comment,ws.atRule,ws.rule,ws.decl,ws.root,ws.CssSyntaxError,ws.Declaration,ws.Container,ws.Processor,ws.Document,ws.Comment,ws.Warning,ws.AtRule,ws.Result,ws.Input,ws.Rule,ws.Root,ws.Node;var ks=Object.defineProperty,xs=(e,t,n)=>((e,t,n)=>t in e?ks(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,"symbol"!=typeof t?t+"":t,n);function Ss(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function Cs(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var n=function e(){return this instanceof e?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,o.get?o:{enumerable:!0,get:function(){return e[t]}})})),n}var Is={exports:{}},Es=String,Ts=function(){return{isColorSupported:!1,reset:Es,bold:Es,dim:Es,italic:Es,underline:Es,inverse:Es,hidden:Es,strikethrough:Es,black:Es,red:Es,green:Es,yellow:Es,blue:Es,magenta:Es,cyan:Es,white:Es,gray:Es,bgBlack:Es,bgRed:Es,bgGreen:Es,bgYellow:Es,bgBlue:Es,bgMagenta:Es,bgCyan:Es,bgWhite:Es}};Is.exports=Ts(),Is.exports.createColors=Ts;var Os=Is.exports;const Ls=Cs(Object.freeze(Object.defineProperty({__proto__:null,default:{}},Symbol.toStringTag,{value:"Module"})));let As=Os,Ms=Ls,Rs=class e extends Error{constructor(t,n,o,r,i,a){super(t),this.name="CssSyntaxError",this.reason=t,i&&(this.file=i),r&&(this.source=r),a&&(this.plugin=a),void 0!==n&&void 0!==o&&("number"==typeof n?(this.line=n,this.column=o):(this.line=n.line,this.column=n.column,this.endLine=o.line,this.endColumn=o.column)),this.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(this,e)}setMessage(){this.message=this.plugin?this.plugin+": ":"",this.message+=this.file?this.file:"",void 0!==this.line&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason}showSourceCode(e){if(!this.source)return"";let t=this.source;null==e&&(e=As.isColorSupported),Ms&&e&&(t=Ms(t));let n,o,r=t.split(/\r?\n/),i=Math.max(this.line-3,0),a=Math.min(this.line+2,r.length),s=String(a).length;if(e){let{bold:e,gray:t,red:r}=As.createColors(!0);n=t=>e(r(t)),o=e=>t(e)}else n=o=e=>e;return r.slice(i,a).map(((e,t)=>{let r=i+1+t,a=" "+(" "+r).slice(-s)+" | ";if(r===this.line){let t=o(a.replace(/\d/g," "))+e.slice(0,this.column-1).replace(/[^\t]/g," ");return n(">")+o(a)+e+"\n "+t+n("^")}return" "+o(a)+e})).join("\n")}toString(){let e=this.showSourceCode();return e&&(e="\n\n"+e+"\n"),this.name+": "+this.message+e}};var Ps=Rs;Rs.default=Rs;var Ds={};Ds.isClean=Symbol("isClean"),Ds.my=Symbol("my");const Ns={after:"\n",beforeClose:"\n",beforeComment:"\n",beforeDecl:"\n",beforeOpen:" ",beforeRule:"\n",colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:!1};let js=class{constructor(e){this.builder=e}atrule(e,t){let n="@"+e.name,o=e.params?this.rawValue(e,"params"):"";if(void 0!==e.raws.afterName?n+=e.raws.afterName:o&&(n+=" "),e.nodes)this.block(e,n+o);else{let r=(e.raws.between||"")+(t?";":"");this.builder(n+o+r,e)}}beforeAfter(e,t){let n;n="decl"===e.type?this.raw(e,null,"beforeDecl"):"comment"===e.type?this.raw(e,null,"beforeComment"):"before"===t?this.raw(e,null,"beforeRule"):this.raw(e,null,"beforeClose");let o=e.parent,r=0;for(;o&&"root"!==o.type;)r+=1,o=o.parent;if(n.includes("\n")){let t=this.raw(e,null,"indent");if(t.length)for(let e=0;e0&&"comment"===e.nodes[t].type;)t-=1;let n=this.raw(e,"semicolon");for(let o=0;o{if(o=e.raws[t],void 0!==o)return!1}))}var a;return void 0===o&&(o=Ns[n]),i.rawCache[n]=o,o}rawBeforeClose(e){let t;return e.walk((e=>{if(e.nodes&&e.nodes.length>0&&void 0!==e.raws.after)return t=e.raws.after,t.includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1})),t&&(t=t.replace(/\S/g,"")),t}rawBeforeComment(e,t){let n;return e.walkComments((e=>{if(void 0!==e.raws.before)return n=e.raws.before,n.includes("\n")&&(n=n.replace(/[^\n]+$/,"")),!1})),void 0===n?n=this.raw(t,null,"beforeDecl"):n&&(n=n.replace(/\S/g,"")),n}rawBeforeDecl(e,t){let n;return e.walkDecls((e=>{if(void 0!==e.raws.before)return n=e.raws.before,n.includes("\n")&&(n=n.replace(/[^\n]+$/,"")),!1})),void 0===n?n=this.raw(t,null,"beforeRule"):n&&(n=n.replace(/\S/g,"")),n}rawBeforeOpen(e){let t;return e.walk((e=>{if("decl"!==e.type&&(t=e.raws.between,void 0!==t))return!1})),t}rawBeforeRule(e){let t;return e.walk((n=>{if(n.nodes&&(n.parent!==e||e.first!==n)&&void 0!==n.raws.before)return t=n.raws.before,t.includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1})),t&&(t=t.replace(/\S/g,"")),t}rawColon(e){let t;return e.walkDecls((e=>{if(void 0!==e.raws.between)return t=e.raws.between.replace(/[^\s:]/g,""),!1})),t}rawEmptyBody(e){let t;return e.walk((e=>{if(e.nodes&&0===e.nodes.length&&(t=e.raws.after,void 0!==t))return!1})),t}rawIndent(e){if(e.raws.indent)return e.raws.indent;let t;return e.walk((n=>{let o=n.parent;if(o&&o!==e&&o.parent&&o.parent===e&&void 0!==n.raws.before){let e=n.raws.before.split("\n");return t=e[e.length-1],t=t.replace(/\S/g,""),!1}})),t}rawSemicolon(e){let t;return e.walk((e=>{if(e.nodes&&e.nodes.length&&"decl"===e.last.type&&(t=e.raws.semicolon,void 0!==t))return!1})),t}rawValue(e,t){let n=e[t],o=e.raws[t];return o&&o.value===n?o.raw:n}root(e){this.body(e),e.raws.after&&this.builder(e.raws.after)}rule(e){this.block(e,this.rawValue(e,"selector")),e.raws.ownSemicolon&&this.builder(e.raws.ownSemicolon,e,"end")}stringify(e,t){if(!this[e.type])throw new Error("Unknown AST node type "+e.type+". Maybe you need to change PostCSS stringifier.");this[e.type](e,t)}};var Fs=js;js.default=js;let Bs=Fs;function _s(e,t){new Bs(t).stringify(e)}var Us=_s;_s.default=_s;let{isClean:Hs,my:zs}=Ds,qs=Ps,Ws=Fs,Vs=Us;function Gs(e,t){let n=new e.constructor;for(let o in e){if(!Object.prototype.hasOwnProperty.call(e,o))continue;if("proxyCache"===o)continue;let r=e[o],i=typeof r;"parent"===o&&"object"===i?t&&(n[o]=t):"source"===o?n[o]=r:Array.isArray(r)?n[o]=r.map((e=>Gs(e,n))):("object"===i&&null!==r&&(r=Gs(r)),n[o]=r)}return n}let Xs=class{constructor(e={}){this.raws={},this[Hs]=!1,this[zs]=!0;for(let t in e)if("nodes"===t){this.nodes=[];for(let n of e[t])"function"==typeof n.clone?this.append(n.clone()):this.append(n)}else this[t]=e[t]}addToError(e){if(e.postcssNode=this,e.stack&&this.source&&/\n\s{4}at /.test(e.stack)){let t=this.source;e.stack=e.stack.replace(/\n\s{4}at /,`$&${t.input.from}:${t.start.line}:${t.start.column}$&`)}return e}after(e){return this.parent.insertAfter(this,e),this}assign(e={}){for(let t in e)this[t]=e[t];return this}before(e){return this.parent.insertBefore(this,e),this}cleanRaws(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between}clone(e={}){let t=Gs(this);for(let n in e)t[n]=e[n];return t}cloneAfter(e={}){let t=this.clone(e);return this.parent.insertAfter(this,t),t}cloneBefore(e={}){let t=this.clone(e);return this.parent.insertBefore(this,t),t}error(e,t={}){if(this.source){let{end:n,start:o}=this.rangeBy(t);return this.source.input.error(e,{column:o.column,line:o.line},{column:n.column,line:n.line},t)}return new qs(e)}getProxyProcessor(){return{get:(e,t)=>"proxyOf"===t?e:"root"===t?()=>e.root().toProxy():e[t],set:(e,t,n)=>(e[t]===n||(e[t]=n,"prop"!==t&&"value"!==t&&"name"!==t&&"params"!==t&&"important"!==t&&"text"!==t||e.markDirty()),!0)}}markDirty(){if(this[Hs]){this[Hs]=!1;let e=this;for(;e=e.parent;)e[Hs]=!1}}next(){if(!this.parent)return;let e=this.parent.index(this);return this.parent.nodes[e+1]}positionBy(e,t){let n=this.source.start;if(e.index)n=this.positionInside(e.index,t);else if(e.word){let o=(t=this.toString()).indexOf(e.word);-1!==o&&(n=this.positionInside(o,t))}return n}positionInside(e,t){let n=t||this.toString(),o=this.source.start.column,r=this.source.start.line;for(let i=0;i"object"==typeof e&&e.toJSON?e.toJSON(null,t):e));else if("object"==typeof e&&e.toJSON)n[i]=e.toJSON(null,t);else if("source"===i){let o=t.get(e.input);null==o&&(o=r,t.set(e.input,r),r++),n[i]={end:e.end,inputId:o,start:e.start}}else n[i]=e}return o&&(n.inputs=[...t.keys()].map((e=>e.toJSON()))),n}toProxy(){return this.proxyCache||(this.proxyCache=new Proxy(this,this.getProxyProcessor())),this.proxyCache}toString(e=Vs){e.stringify&&(e=e.stringify);let t="";return e(this,(e=>{t+=e})),t}warn(e,t,n){let o={node:this};for(let r in n)o[r]=n[r];return e.warn(t,o)}get proxyOf(){return this}};var Ys=Xs;Xs.default=Xs;let Js=Ys,Ks=class extends Js{constructor(e){e&&void 0!==e.value&&"string"!=typeof e.value&&(e={...e,value:String(e.value)}),super(e),this.type="decl"}get variable(){return this.prop.startsWith("--")||"$"===this.prop[0]}};var Zs=Ks;Ks.default=Ks;var $s={nanoid:(e=21)=>{let t="",n=e;for(;n--;)t+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[64*Math.random()|0];return t},customAlphabet:(e,t=21)=>(n=t)=>{let o="",r=n;for(;r--;)o+=e[Math.random()*e.length|0];return o}};let{SourceMapConsumer:Qs,SourceMapGenerator:el}=Ls,{existsSync:tl,readFileSync:nl}=Ls,{dirname:ol,join:rl}=Ls;let il=class{constructor(e,t){if(!1===t.map)return;this.loadAnnotation(e),this.inline=this.startWith(this.annotation,"data:");let n=t.map?t.map.prev:void 0,o=this.loadMap(t.from,n);!this.mapFile&&t.from&&(this.mapFile=t.from),this.mapFile&&(this.root=ol(this.mapFile)),o&&(this.text=o)}consumer(){return this.consumerCache||(this.consumerCache=new Qs(this.text)),this.consumerCache}decodeInline(e){if(/^data:application\/json;charset=utf-?8,/.test(e)||/^data:application\/json,/.test(e))return decodeURIComponent(e.substr(RegExp.lastMatch.length));if(/^data:application\/json;charset=utf-?8;base64,/.test(e)||/^data:application\/json;base64,/.test(e))return t=e.substr(RegExp.lastMatch.length),Buffer?Buffer.from(t,"base64").toString():window.atob(t);var t;let n=e.match(/data:application\/json;([^,]+),/)[1];throw new Error("Unsupported source map encoding "+n)}getAnnotationURL(e){return e.replace(/^\/\*\s*# sourceMappingURL=/,"").trim()}isMap(e){return"object"==typeof e&&("string"==typeof e.mappings||"string"==typeof e._mappings||Array.isArray(e.sections))}loadAnnotation(e){let t=e.match(/\/\*\s*# sourceMappingURL=/gm);if(!t)return;let n=e.lastIndexOf(t.pop()),o=e.indexOf("*/",n);n>-1&&o>-1&&(this.annotation=this.getAnnotationURL(e.substring(n,o)))}loadFile(e){if(this.root=ol(e),tl(e))return this.mapFile=e,nl(e,"utf-8").toString().trim()}loadMap(e,t){if(!1===t)return!1;if(t){if("string"==typeof t)return t;if("function"!=typeof t){if(t instanceof Qs)return el.fromSourceMap(t).toString();if(t instanceof el)return t.toString();if(this.isMap(t))return JSON.stringify(t);throw new Error("Unsupported previous source map format: "+t.toString())}{let n=t(e);if(n){let e=this.loadFile(n);if(!e)throw new Error("Unable to load previous source map: "+n.toString());return e}}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){let t=this.annotation;return e&&(t=rl(ol(e),t)),this.loadFile(t)}}}startWith(e,t){return!!e&&e.substr(0,t.length)===t}withContent(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)}};var al=il;il.default=il;let{SourceMapConsumer:sl,SourceMapGenerator:ll}=Ls,{fileURLToPath:cl,pathToFileURL:ul}=Ls,{isAbsolute:dl,resolve:pl}=Ls,{nanoid:hl}=$s,fl=Ls,ml=Ps,gl=al,vl=Symbol("fromOffsetCache"),yl=Boolean(sl&&ll),bl=Boolean(pl&&dl),wl=class{constructor(e,t={}){if(null==e||"object"==typeof e&&!e.toString)throw new Error(`PostCSS received ${e} instead of CSS string`);if(this.css=e.toString(),"\ufeff"===this.css[0]||"￾"===this.css[0]?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,t.from&&(!bl||/^\w+:\/\//.test(t.from)||dl(t.from)?this.file=t.from:this.file=pl(t.from)),bl&&yl){let e=new gl(this.css,t);if(e.text){this.map=e;let t=e.consumer().file;!this.file&&t&&(this.file=this.mapResolve(t))}}this.file||(this.id=""),this.map&&(this.map.file=this.from)}error(e,t,n,o={}){let r,i,a;if(t&&"object"==typeof t){let e=t,o=n;if("number"==typeof e.offset){let o=this.fromOffset(e.offset);t=o.line,n=o.col}else t=e.line,n=e.column;if("number"==typeof o.offset){let e=this.fromOffset(o.offset);i=e.line,a=e.col}else i=o.line,a=o.column}else if(!n){let e=this.fromOffset(t);t=e.line,n=e.col}let s=this.origin(t,n,i,a);return r=s?new ml(e,void 0===s.endLine?s.line:{column:s.column,line:s.line},void 0===s.endLine?s.column:{column:s.endColumn,line:s.endLine},s.source,s.file,o.plugin):new ml(e,void 0===i?t:{column:n,line:t},void 0===i?n:{column:a,line:i},this.css,this.file,o.plugin),r.input={column:n,endColumn:a,endLine:i,line:t,source:this.css},this.file&&(ul&&(r.input.url=ul(this.file).toString()),r.input.file=this.file),r}fromOffset(e){let t,n;if(this[vl])n=this[vl];else{let e=this.css.split("\n");n=new Array(e.length);let t=0;for(let o=0,r=e.length;o=t)o=n.length-1;else{let t,r=n.length-2;for(;o>1),e=n[t+1])){o=t;break}o=t+1}}return{col:e-n[o]+1,line:o+1}}mapResolve(e){return/^\w+:\/\//.test(e)?e:pl(this.map.consumer().sourceRoot||this.map.root||".",e)}origin(e,t,n,o){if(!this.map)return!1;let r,i,a=this.map.consumer(),s=a.originalPositionFor({column:t,line:e});if(!s.source)return!1;"number"==typeof n&&(r=a.originalPositionFor({column:o,line:n})),i=dl(s.source)?ul(s.source):new URL(s.source,this.map.consumer().sourceRoot||ul(this.map.mapFile));let l={column:s.column,endColumn:r&&r.column,endLine:r&&r.line,line:s.line,url:i.toString()};if("file:"===i.protocol){if(!cl)throw new Error("file: protocol is not available in this PostCSS build");l.file=cl(i)}let c=a.sourceContentFor(s.source);return c&&(l.source=c),l}toJSON(){let e={};for(let t of["hasBOM","css","file","id"])null!=this[t]&&(e[t]=this[t]);return this.map&&(e.map={...this.map},e.map.consumerCache&&(e.map.consumerCache=void 0)),e}get from(){return this.file||this.id}};var kl=wl;wl.default=wl,fl&&fl.registerInput&&fl.registerInput(wl);let{SourceMapConsumer:xl,SourceMapGenerator:Sl}=Ls,{dirname:Cl,relative:Il,resolve:El,sep:Tl}=Ls,{pathToFileURL:Ol}=Ls,Ll=kl,Al=Boolean(xl&&Sl),Ml=Boolean(Cl&&El&&Il&&Tl);var Rl=class{constructor(e,t,n,o){this.stringify=e,this.mapOpts=n.map||{},this.root=t,this.opts=n,this.css=o,this.originalCSS=o,this.usesFileUrls=!this.mapOpts.from&&this.mapOpts.absolute,this.memoizedFileURLs=new Map,this.memoizedPaths=new Map,this.memoizedURLs=new Map}addAnnotation(){let e;e=this.isInline()?"data:application/json;base64,"+this.toBase64(this.map.toString()):"string"==typeof this.mapOpts.annotation?this.mapOpts.annotation:"function"==typeof this.mapOpts.annotation?this.mapOpts.annotation(this.opts.to,this.root):this.outputFile()+".map";let t="\n";this.css.includes("\r\n")&&(t="\r\n"),this.css+=t+"/*# sourceMappingURL="+e+" */"}applyPrevMaps(){for(let e of this.previous()){let t,n=this.toUrl(this.path(e.file)),o=e.root||Cl(e.file);!1===this.mapOpts.sourcesContent?(t=new xl(e.text),t.sourcesContent&&(t.sourcesContent=null)):t=e.consumer(),this.map.applySourceMap(t,n,this.toUrl(this.path(o)))}}clearAnnotation(){if(!1!==this.mapOpts.annotation)if(this.root){let e;for(let t=this.root.nodes.length-1;t>=0;t--)e=this.root.nodes[t],"comment"===e.type&&0===e.text.indexOf("# sourceMappingURL=")&&this.root.removeChild(t)}else this.css&&(this.css=this.css.replace(/\n*?\/\*#[\S\s]*?\*\/$/gm,""))}generate(){if(this.clearAnnotation(),Ml&&Al&&this.isMap())return this.generateMap();{let e="";return this.stringify(this.root,(t=>{e+=t})),[e]}}generateMap(){if(this.root)this.generateString();else if(1===this.previous().length){let e=this.previous()[0].consumer();e.file=this.outputFile(),this.map=Sl.fromSourceMap(e,{ignoreInvalidMapping:!0})}else this.map=new Sl({file:this.outputFile(),ignoreInvalidMapping:!0}),this.map.addMapping({generated:{column:0,line:1},original:{column:0,line:1},source:this.opts.from?this.toUrl(this.path(this.opts.from)):""});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]}generateString(){this.css="",this.map=new Sl({file:this.outputFile(),ignoreInvalidMapping:!0});let e,t,n=1,o=1,r="",i={generated:{column:0,line:0},original:{column:0,line:0},source:""};this.stringify(this.root,((a,s,l)=>{if(this.css+=a,s&&"end"!==l&&(i.generated.line=n,i.generated.column=o-1,s.source&&s.source.start?(i.source=this.sourcePath(s),i.original.line=s.source.start.line,i.original.column=s.source.start.column-1,this.map.addMapping(i)):(i.source=r,i.original.line=1,i.original.column=0,this.map.addMapping(i))),e=a.match(/\n/g),e?(n+=e.length,t=a.lastIndexOf("\n"),o=a.length-t):o+=a.length,s&&"start"!==l){let e=s.parent||{raws:{}};("decl"===s.type||"atrule"===s.type&&!s.nodes)&&s===e.last&&!e.raws.semicolon||(s.source&&s.source.end?(i.source=this.sourcePath(s),i.original.line=s.source.end.line,i.original.column=s.source.end.column-1,i.generated.line=n,i.generated.column=o-2,this.map.addMapping(i)):(i.source=r,i.original.line=1,i.original.column=0,i.generated.line=n,i.generated.column=o-1,this.map.addMapping(i)))}}))}isAnnotation(){return!!this.isInline()||(void 0!==this.mapOpts.annotation?this.mapOpts.annotation:!this.previous().length||this.previous().some((e=>e.annotation)))}isInline(){if(void 0!==this.mapOpts.inline)return this.mapOpts.inline;let e=this.mapOpts.annotation;return(void 0===e||!0===e)&&(!this.previous().length||this.previous().some((e=>e.inline)))}isMap(){return void 0!==this.opts.map?!!this.opts.map:this.previous().length>0}isSourcesContent(){return void 0!==this.mapOpts.sourcesContent?this.mapOpts.sourcesContent:!this.previous().length||this.previous().some((e=>e.withContent()))}outputFile(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"}path(e){if(this.mapOpts.absolute)return e;if(60===e.charCodeAt(0))return e;if(/^\w+:\/\//.test(e))return e;let t=this.memoizedPaths.get(e);if(t)return t;let n=this.opts.to?Cl(this.opts.to):".";"string"==typeof this.mapOpts.annotation&&(n=Cl(El(n,this.mapOpts.annotation)));let o=Il(n,e);return this.memoizedPaths.set(e,o),o}previous(){if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk((e=>{if(e.source&&e.source.input.map){let t=e.source.input.map;this.previousMaps.includes(t)||this.previousMaps.push(t)}}));else{let e=new Ll(this.originalCSS,this.opts);e.map&&this.previousMaps.push(e.map)}return this.previousMaps}setSourcesContent(){let e={};if(this.root)this.root.walk((t=>{if(t.source){let n=t.source.input.from;if(n&&!e[n]){e[n]=!0;let o=this.usesFileUrls?this.toFileUrl(n):this.toUrl(this.path(n));this.map.setSourceContent(o,t.source.input.css)}}}));else if(this.css){let e=this.opts.from?this.toUrl(this.path(this.opts.from)):"";this.map.setSourceContent(e,this.css)}}sourcePath(e){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(e.source.input.from):this.toUrl(this.path(e.source.input.from))}toBase64(e){return Buffer?Buffer.from(e).toString("base64"):window.btoa(unescape(encodeURIComponent(e)))}toFileUrl(e){let t=this.memoizedFileURLs.get(e);if(t)return t;if(Ol){let t=Ol(e).toString();return this.memoizedFileURLs.set(e,t),t}throw new Error("`map.absolute` option is not available in this PostCSS build")}toUrl(e){let t=this.memoizedURLs.get(e);if(t)return t;"\\"===Tl&&(e=e.replace(/\\/g,"/"));let n=encodeURI(e).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(e,n),n}};let Pl=Ys,Dl=class extends Pl{constructor(e){super(e),this.type="comment"}};var Nl=Dl;Dl.default=Dl;let jl,Fl,Bl,_l,{isClean:Ul,my:Hl}=Ds,zl=Zs,ql=Nl,Wl=Ys;function Vl(e){return e.map((e=>(e.nodes&&(e.nodes=Vl(e.nodes)),delete e.source,e)))}function Gl(e){if(e[Ul]=!1,e.proxyOf.nodes)for(let t of e.proxyOf.nodes)Gl(t)}let Xl=class e extends Wl{append(...e){for(let t of e){let e=this.normalize(t,this.last);for(let t of e)this.proxyOf.nodes.push(t)}return this.markDirty(),this}cleanRaws(e){if(super.cleanRaws(e),this.nodes)for(let t of this.nodes)t.cleanRaws(e)}each(e){if(!this.proxyOf.nodes)return;let t,n,o=this.getIterator();for(;this.indexes[o]"proxyOf"===t?e:e[t]?"each"===t||"string"==typeof t&&t.startsWith("walk")?(...n)=>e[t](...n.map((e=>"function"==typeof e?(t,n)=>e(t.toProxy(),n):e))):"every"===t||"some"===t?n=>e[t](((e,...t)=>n(e.toProxy(),...t))):"root"===t?()=>e.root().toProxy():"nodes"===t?e.nodes.map((e=>e.toProxy())):"first"===t||"last"===t?e[t].toProxy():e[t]:e[t],set:(e,t,n)=>(e[t]===n||(e[t]=n,"name"!==t&&"params"!==t&&"selector"!==t||e.markDirty()),!0)}}index(e){return"number"==typeof e?e:(e.proxyOf&&(e=e.proxyOf),this.proxyOf.nodes.indexOf(e))}insertAfter(e,t){let n,o=this.index(e),r=this.normalize(t,this.proxyOf.nodes[o]).reverse();o=this.index(e);for(let i of r)this.proxyOf.nodes.splice(o+1,0,i);for(let i in this.indexes)n=this.indexes[i],o(t[Hl]||e.rebuild(t),(t=t.proxyOf).parent&&t.parent.removeChild(t),t[Ul]&&Gl(t),void 0===t.raws.before&&n&&void 0!==n.raws.before&&(t.raws.before=n.raws.before.replace(/\S/g,"")),t.parent=this.proxyOf,t)))}prepend(...e){e=e.reverse();for(let t of e){let e=this.normalize(t,this.first,"prepend").reverse();for(let t of e)this.proxyOf.nodes.unshift(t);for(let t in this.indexes)this.indexes[t]=this.indexes[t]+e.length}return this.markDirty(),this}push(e){return e.parent=this,this.proxyOf.nodes.push(e),this}removeAll(){for(let e of this.proxyOf.nodes)e.parent=void 0;return this.proxyOf.nodes=[],this.markDirty(),this}removeChild(e){let t;e=this.index(e),this.proxyOf.nodes[e].parent=void 0,this.proxyOf.nodes.splice(e,1);for(let n in this.indexes)t=this.indexes[n],t>=e&&(this.indexes[n]=t-1);return this.markDirty(),this}replaceValues(e,t,n){return n||(n=t,t={}),this.walkDecls((o=>{t.props&&!t.props.includes(o.prop)||t.fast&&!o.value.includes(t.fast)||(o.value=o.value.replace(e,n))})),this.markDirty(),this}some(e){return this.nodes.some(e)}walk(e){return this.each(((t,n)=>{let o;try{o=e(t,n)}catch(r){throw t.addToError(r)}return!1!==o&&t.walk&&(o=t.walk(e)),o}))}walkAtRules(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("atrule"===n.type&&e.test(n.name))return t(n,o)})):this.walk(((n,o)=>{if("atrule"===n.type&&n.name===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("atrule"===e.type)return t(e,n)})))}walkComments(e){return this.walk(((t,n)=>{if("comment"===t.type)return e(t,n)}))}walkDecls(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("decl"===n.type&&e.test(n.prop))return t(n,o)})):this.walk(((n,o)=>{if("decl"===n.type&&n.prop===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("decl"===e.type)return t(e,n)})))}walkRules(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("rule"===n.type&&e.test(n.selector))return t(n,o)})):this.walk(((n,o)=>{if("rule"===n.type&&n.selector===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("rule"===e.type)return t(e,n)})))}get first(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}get last(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}};Xl.registerParse=e=>{jl=e},Xl.registerRule=e=>{Fl=e},Xl.registerAtRule=e=>{Bl=e},Xl.registerRoot=e=>{_l=e};var Yl=Xl;Xl.default=Xl,Xl.rebuild=e=>{"atrule"===e.type?Object.setPrototypeOf(e,Bl.prototype):"rule"===e.type?Object.setPrototypeOf(e,Fl.prototype):"decl"===e.type?Object.setPrototypeOf(e,zl.prototype):"comment"===e.type?Object.setPrototypeOf(e,ql.prototype):"root"===e.type&&Object.setPrototypeOf(e,_l.prototype),e[Hl]=!0,e.nodes&&e.nodes.forEach((e=>{Xl.rebuild(e)}))};let Jl,Kl,Zl=Yl,$l=class extends Zl{constructor(e){super({type:"document",...e}),this.nodes||(this.nodes=[])}toResult(e={}){return new Jl(new Kl,this,e).stringify()}};$l.registerLazyResult=e=>{Jl=e},$l.registerProcessor=e=>{Kl=e};var Ql=$l;$l.default=$l;let ec=class{constructor(e,t={}){if(this.type="warning",this.text=e,t.node&&t.node.source){let e=t.node.rangeBy(t);this.line=e.start.line,this.column=e.start.column,this.endLine=e.end.line,this.endColumn=e.end.column}for(let n in t)this[n]=t[n]}toString(){return this.node?this.node.error(this.text,{index:this.index,plugin:this.plugin,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text}};var tc=ec;ec.default=ec;let nc=tc,oc=class{constructor(e,t,n){this.processor=e,this.messages=[],this.root=t,this.opts=n,this.css=void 0,this.map=void 0}toString(){return this.css}warn(e,t={}){t.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(t.plugin=this.lastPlugin.postcssPlugin);let n=new nc(e,t);return this.messages.push(n),n}warnings(){return this.messages.filter((e=>"warning"===e.type))}get content(){return this.css}};var rc=oc;oc.default=oc;const ic="'".charCodeAt(0),ac='"'.charCodeAt(0),sc="\\".charCodeAt(0),lc="/".charCodeAt(0),cc="\n".charCodeAt(0),uc=" ".charCodeAt(0),dc="\f".charCodeAt(0),pc="\t".charCodeAt(0),hc="\r".charCodeAt(0),fc="[".charCodeAt(0),mc="]".charCodeAt(0),gc="(".charCodeAt(0),vc=")".charCodeAt(0),yc="{".charCodeAt(0),bc="}".charCodeAt(0),wc=";".charCodeAt(0),kc="*".charCodeAt(0),xc=":".charCodeAt(0),Sc="@".charCodeAt(0),Cc=/[\t\n\f\r "#'()/;[\\\]{}]/g,Ic=/[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g,Ec=/.[\r\n"'(/\\]/,Tc=/[\da-f]/i;let Oc=Yl,Lc=class extends Oc{constructor(e){super(e),this.type="atrule"}append(...e){return this.proxyOf.nodes||(this.nodes=[]),super.append(...e)}prepend(...e){return this.proxyOf.nodes||(this.nodes=[]),super.prepend(...e)}};var Ac=Lc;Lc.default=Lc,Oc.registerAtRule(Lc);let Mc,Rc,Pc=Yl,Dc=class extends Pc{constructor(e){super(e),this.type="root",this.nodes||(this.nodes=[])}normalize(e,t,n){let o=super.normalize(e);if(t)if("prepend"===n)this.nodes.length>1?t.raws.before=this.nodes[1].raws.before:delete t.raws.before;else if(this.first!==t)for(let r of o)r.raws.before=t.raws.before;return o}removeChild(e,t){let n=this.index(e);return!t&&0===n&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[n].raws.before),super.removeChild(e)}toResult(e={}){return new Mc(new Rc,this,e).stringify()}};Dc.registerLazyResult=e=>{Mc=e},Dc.registerProcessor=e=>{Rc=e};var Nc=Dc;Dc.default=Dc,Pc.registerRoot(Dc);let jc={comma:e=>jc.split(e,[","],!0),space:e=>jc.split(e,[" ","\n","\t"]),split(e,t,n){let o=[],r="",i=!1,a=0,s=!1,l="",c=!1;for(let u of e)c?c=!1:"\\"===u?c=!0:s?u===l&&(s=!1):'"'===u||"'"===u?(s=!0,l=u):"("===u?a+=1:")"===u?a>0&&(a-=1):0===a&&t.includes(u)&&(i=!0),i?(""!==r&&o.push(r.trim()),r="",i=!1):r+=u;return(n||""!==r)&&o.push(r.trim()),o}};var Fc=jc;jc.default=jc;let Bc=Yl,_c=Fc,Uc=class extends Bc{constructor(e){super(e),this.type="rule",this.nodes||(this.nodes=[])}get selectors(){return _c.comma(this.selector)}set selectors(e){let t=this.selector?this.selector.match(/,\s*/):null,n=t?t[0]:","+this.raw("between","beforeOpen");this.selector=e.join(n)}};var Hc=Uc;Uc.default=Uc,Bc.registerRule(Uc);let zc=Zs,qc=function(e,t={}){let n,o,r,i,a,s,l,c,u,d,p=e.css.valueOf(),h=t.ignoreErrors,f=p.length,m=0,g=[],v=[];function y(t){throw e.error("Unclosed "+t,m)}return{back:function(e){v.push(e)},endOfFile:function(){return 0===v.length&&m>=f},nextToken:function(e){if(v.length)return v.pop();if(m>=f)return;let t=!!e&&e.ignoreUnclosed;switch(n=p.charCodeAt(m),n){case cc:case uc:case pc:case hc:case dc:o=m;do{o+=1,n=p.charCodeAt(o)}while(n===uc||n===cc||n===pc||n===hc||n===dc);d=["space",p.slice(m,o)],m=o-1;break;case fc:case mc:case yc:case bc:case xc:case wc:case vc:{let e=String.fromCharCode(n);d=[e,e,m];break}case gc:if(c=g.length?g.pop()[1]:"",u=p.charCodeAt(m+1),"url"===c&&u!==ic&&u!==ac&&u!==uc&&u!==cc&&u!==pc&&u!==dc&&u!==hc){o=m;do{if(s=!1,o=p.indexOf(")",o+1),-1===o){if(h||t){o=m;break}y("bracket")}for(l=o;p.charCodeAt(l-1)===sc;)l-=1,s=!s}while(s);d=["brackets",p.slice(m,o+1),m,o],m=o}else o=p.indexOf(")",m+1),i=p.slice(m,o+1),-1===o||Ec.test(i)?d=["(","(",m]:(d=["brackets",i,m,o],m=o);break;case ic:case ac:r=n===ic?"'":'"',o=m;do{if(s=!1,o=p.indexOf(r,o+1),-1===o){if(h||t){o=m+1;break}y("string")}for(l=o;p.charCodeAt(l-1)===sc;)l-=1,s=!s}while(s);d=["string",p.slice(m,o+1),m,o],m=o;break;case Sc:Cc.lastIndex=m+1,Cc.test(p),o=0===Cc.lastIndex?p.length-1:Cc.lastIndex-2,d=["at-word",p.slice(m,o+1),m,o],m=o;break;case sc:for(o=m,a=!0;p.charCodeAt(o+1)===sc;)o+=1,a=!a;if(n=p.charCodeAt(o+1),a&&n!==lc&&n!==uc&&n!==cc&&n!==pc&&n!==hc&&n!==dc&&(o+=1,Tc.test(p.charAt(o)))){for(;Tc.test(p.charAt(o+1));)o+=1;p.charCodeAt(o+1)===uc&&(o+=1)}d=["word",p.slice(m,o+1),m,o],m=o;break;default:n===lc&&p.charCodeAt(m+1)===kc?(o=p.indexOf("*/",m+2)+1,0===o&&(h||t?o=p.length:y("comment")),d=["comment",p.slice(m,o+1),m,o],m=o):(Ic.lastIndex=m+1,Ic.test(p),o=0===Ic.lastIndex?p.length-1:Ic.lastIndex-2,d=["word",p.slice(m,o+1),m,o],g.push(d),m=o)}return m++,d},position:function(){return m}}},Wc=Nl,Vc=Ac,Gc=Nc,Xc=Hc;const Yc={empty:!0,space:!0};var Jc=class{constructor(e){this.input=e,this.root=new Gc,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:e,start:{column:1,line:1,offset:0}}}atrule(e){let t,n,o,r=new Vc;r.name=e[1].slice(1),""===r.name&&this.unnamedAtrule(r,e),this.init(r,e[2]);let i=!1,a=!1,s=[],l=[];for(;!this.tokenizer.endOfFile();){if(t=(e=this.tokenizer.nextToken())[0],"("===t||"["===t?l.push("("===t?")":"]"):"{"===t&&l.length>0?l.push("}"):t===l[l.length-1]&&l.pop(),0===l.length){if(";"===t){r.source.end=this.getPosition(e[2]),r.source.end.offset++,this.semicolon=!0;break}if("{"===t){a=!0;break}if("}"===t){if(s.length>0){for(o=s.length-1,n=s[o];n&&"space"===n[0];)n=s[--o];n&&(r.source.end=this.getPosition(n[3]||n[2]),r.source.end.offset++)}this.end(e);break}s.push(e)}else s.push(e);if(this.tokenizer.endOfFile()){i=!0;break}}r.raws.between=this.spacesAndCommentsFromEnd(s),s.length?(r.raws.afterName=this.spacesAndCommentsFromStart(s),this.raw(r,"params",s),i&&(e=s[s.length-1],r.source.end=this.getPosition(e[3]||e[2]),r.source.end.offset++,this.spaces=r.raws.between,r.raws.between="")):(r.raws.afterName="",r.params=""),a&&(r.nodes=[],this.current=r)}checkMissedSemicolon(e){let t=this.colon(e);if(!1===t)return;let n,o=0;for(let r=t-1;r>=0&&(n=e[r],"space"===n[0]||(o+=1,2!==o));r--);throw this.input.error("Missed semicolon","word"===n[0]?n[3]+1:n[2])}colon(e){let t,n,o,r=0;for(let[i,a]of e.entries()){if(t=a,n=t[0],"("===n&&(r+=1),")"===n&&(r-=1),0===r&&":"===n){if(o){if("word"===o[0]&&"progid"===o[1])continue;return i}this.doubleColon(t)}o=t}return!1}comment(e){let t=new Wc;this.init(t,e[2]),t.source.end=this.getPosition(e[3]||e[2]),t.source.end.offset++;let n=e[1].slice(2,-2);if(/^\s*$/.test(n))t.text="",t.raws.left=n,t.raws.right="";else{let e=n.match(/^(\s*)([^]*\S)(\s*)$/);t.text=e[2],t.raws.left=e[1],t.raws.right=e[3]}}createTokenizer(){this.tokenizer=qc(this.input)}decl(e,t){let n=new zc;this.init(n,e[0][2]);let o,r=e[e.length-1];for(";"===r[0]&&(this.semicolon=!0,e.pop()),n.source.end=this.getPosition(r[3]||r[2]||function(e){for(let t=e.length-1;t>=0;t--){let n=e[t],o=n[3]||n[2];if(o)return o}}(e)),n.source.end.offset++;"word"!==e[0][0];)1===e.length&&this.unknownWord(e),n.raws.before+=e.shift()[1];for(n.source.start=this.getPosition(e[0][2]),n.prop="";e.length;){let t=e[0][0];if(":"===t||"space"===t||"comment"===t)break;n.prop+=e.shift()[1]}for(n.raws.between="";e.length;){if(o=e.shift(),":"===o[0]){n.raws.between+=o[1];break}"word"===o[0]&&/\w/.test(o[1])&&this.unknownWord([o]),n.raws.between+=o[1]}"_"!==n.prop[0]&&"*"!==n.prop[0]||(n.raws.before+=n.prop[0],n.prop=n.prop.slice(1));let i,a=[];for(;e.length&&(i=e[0][0],"space"===i||"comment"===i);)a.push(e.shift());this.precheckMissedSemicolon(e);for(let s=e.length-1;s>=0;s--){if(o=e[s],"!important"===o[1].toLowerCase()){n.important=!0;let t=this.stringFrom(e,s);t=this.spacesFromEnd(e)+t," !important"!==t&&(n.raws.important=t);break}if("important"===o[1].toLowerCase()){let t=e.slice(0),o="";for(let e=s;e>0;e--){let n=t[e][0];if(0===o.trim().indexOf("!")&&"space"!==n)break;o=t.pop()[1]+o}0===o.trim().indexOf("!")&&(n.important=!0,n.raws.important=o,e=t)}if("space"!==o[0]&&"comment"!==o[0])break}e.some((e=>"space"!==e[0]&&"comment"!==e[0]))&&(n.raws.between+=a.map((e=>e[1])).join(""),a=[]),this.raw(n,"value",a.concat(e),t),n.value.includes(":")&&!t&&this.checkMissedSemicolon(e)}doubleColon(e){throw this.input.error("Double colon",{offset:e[2]},{offset:e[2]+e[1].length})}emptyRule(e){let t=new Xc;this.init(t,e[2]),t.selector="",t.raws.between="",this.current=t}end(e){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(e[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(e)}endFile(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position())}freeSemicolon(e){if(this.spaces+=e[1],this.current.nodes){let e=this.current.nodes[this.current.nodes.length-1];e&&"rule"===e.type&&!e.raws.ownSemicolon&&(e.raws.ownSemicolon=this.spaces,this.spaces="")}}getPosition(e){let t=this.input.fromOffset(e);return{column:t.col,line:t.line,offset:e}}init(e,t){this.current.push(e),e.source={input:this.input,start:this.getPosition(t)},e.raws.before=this.spaces,this.spaces="","comment"!==e.type&&(this.semicolon=!1)}other(e){let t=!1,n=null,o=!1,r=null,i=[],a=e[1].startsWith("--"),s=[],l=e;for(;l;){if(n=l[0],s.push(l),"("===n||"["===n)r||(r=l),i.push("("===n?")":"]");else if(a&&o&&"{"===n)r||(r=l),i.push("}");else if(0===i.length){if(";"===n){if(o)return void this.decl(s,a);break}if("{"===n)return void this.rule(s);if("}"===n){this.tokenizer.back(s.pop()),t=!0;break}":"===n&&(o=!0)}else n===i[i.length-1]&&(i.pop(),0===i.length&&(r=null));l=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(t=!0),i.length>0&&this.unclosedBracket(r),t&&o){if(!a)for(;s.length&&(l=s[s.length-1][0],"space"===l||"comment"===l);)this.tokenizer.back(s.pop());this.decl(s,a)}else this.unknownWord(s)}parse(){let e;for(;!this.tokenizer.endOfFile();)switch(e=this.tokenizer.nextToken(),e[0]){case"space":this.spaces+=e[1];break;case";":this.freeSemicolon(e);break;case"}":this.end(e);break;case"comment":this.comment(e);break;case"at-word":this.atrule(e);break;case"{":this.emptyRule(e);break;default:this.other(e)}this.endFile()}precheckMissedSemicolon(){}raw(e,t,n,o){let r,i,a,s,l=n.length,c="",u=!0;for(let d=0;de+t[1]),"");e.raws[t]={raw:o,value:c}}e[t]=c}rule(e){e.pop();let t=new Xc;this.init(t,e[0][2]),t.raws.between=this.spacesAndCommentsFromEnd(e),this.raw(t,"selector",e),this.current=t}spacesAndCommentsFromEnd(e){let t,n="";for(;e.length&&(t=e[e.length-1][0],"space"===t||"comment"===t);)n=e.pop()[1]+n;return n}spacesAndCommentsFromStart(e){let t,n="";for(;e.length&&(t=e[0][0],"space"===t||"comment"===t);)n+=e.shift()[1];return n}spacesFromEnd(e){let t,n="";for(;e.length&&(t=e[e.length-1][0],"space"===t);)n=e.pop()[1]+n;return n}stringFrom(e,t){let n="";for(let o=t;ovu(e))),e}let yu={},bu=class e{constructor(t,n,o){let r;if(this.stringified=!1,this.processed=!1,"object"!=typeof n||null===n||"root"!==n.type&&"document"!==n.type)if(n instanceof e||n instanceof su)r=vu(n.root),n.map&&(void 0===o.map&&(o.map={}),o.map.inline||(o.map.inline=!1),o.map.prev=n.map);else{let e=lu;o.syntax&&(e=o.syntax.parse),o.parser&&(e=o.parser),e.parse&&(e=e.parse);try{r=e(n,o)}catch(i){this.processed=!0,this.error=i}r&&!r[nu]&&iu.rebuild(r)}else r=vu(n);this.result=new su(t,r,o),this.helpers={...yu,postcss:yu,result:this.result},this.plugins=this.processor.plugins.map((e=>"object"==typeof e&&e.prepare?{...e,...e.prepare(this.result)}:e))}async(){return this.error?Promise.reject(this.error):this.processed?Promise.resolve(this.result):(this.processing||(this.processing=this.runAsync()),this.processing)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}getAsyncError(){throw new Error("Use process(css).then(cb) to work with async plugins")}handleError(e,t){let n=this.result.lastPlugin;try{t&&t.addToError(e),this.error=e,"CssSyntaxError"!==e.name||e.plugin?n.postcssVersion:(e.plugin=n.postcssPlugin,e.setMessage())}catch(o){console&&console.error&&console.error(o)}return e}prepareVisitors(){this.listeners={};let e=(e,t,n)=>{this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].push([e,n])};for(let t of this.plugins)if("object"==typeof t)for(let n in t){if(!du[n]&&/^[A-Z]/.test(n))throw new Error(`Unknown event ${n} in ${t.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`);if(!pu[n])if("object"==typeof t[n])for(let o in t[n])e(t,"*"===o?n:n+"-"+o.toLowerCase(),t[n][o]);else"function"==typeof t[n]&&e(t,n,t[n])}this.hasListener=Object.keys(this.listeners).length>0}async runAsync(){this.plugin=0;for(let n=0;n0;){let e=this.visitTick(n);if(fu(e))try{await e}catch(t){let e=n[n.length-1].node;throw this.handleError(t,e)}}}if(this.listeners.OnceExit)for(let[n,o]of this.listeners.OnceExit){this.result.lastPlugin=n;try{if("document"===e.type){let t=e.nodes.map((e=>o(e,this.helpers)));await Promise.all(t)}else await o(e,this.helpers)}catch(t){throw this.handleError(t)}}}return this.processed=!0,this.stringify()}runOnRoot(e){this.result.lastPlugin=e;try{if("object"==typeof e&&e.Once){if("document"===this.result.root.type){let t=this.result.root.nodes.map((t=>e.Once(t,this.helpers)));return fu(t[0])?Promise.all(t):t}return e.Once(this.result.root,this.helpers)}if("function"==typeof e)return e(this.result.root,this.result)}catch(t){throw this.handleError(t)}}stringify(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();let e=this.result.opts,t=ru;e.syntax&&(t=e.syntax.stringify),e.stringifier&&(t=e.stringifier),t.stringify&&(t=t.stringify);let n=new ou(t,this.result.root,this.result.opts).generate();return this.result.css=n[0],this.result.map=n[1],this.result}sync(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(let e of this.plugins){if(fu(this.runOnRoot(e)))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){let e=this.result.root;for(;!e[tu];)e[tu]=!0,this.walkSync(e);if(this.listeners.OnceExit)if("document"===e.type)for(let t of e.nodes)this.visitSync(this.listeners.OnceExit,t);else this.visitSync(this.listeners.OnceExit,e)}return this.result}then(e,t){return this.async().then(e,t)}toString(){return this.css}visitSync(e,t){for(let[o,r]of e){let e;this.result.lastPlugin=o;try{e=r(t,this.helpers)}catch(n){throw this.handleError(n,t.proxyOf)}if("root"!==t.type&&"document"!==t.type&&!t.parent)return!0;if(fu(e))throw this.getAsyncError()}}visitTick(e){let t=e[e.length-1],{node:n,visitors:o}=t;if("root"!==n.type&&"document"!==n.type&&!n.parent)return void e.pop();if(o.length>0&&t.visitorIndex{e[tu]||this.walkSync(e)}));else{let t=this.listeners[n];if(t&&this.visitSync(t,e.toProxy()))return}}warnings(){return this.sync().warnings()}get content(){return this.stringify().content}get css(){return this.stringify().css}get map(){return this.stringify().map}get messages(){return this.sync().messages}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){return this.sync().root}get[Symbol.toStringTag](){return"LazyResult"}};bu.registerPostcss=e=>{yu=e};var wu=bu;bu.default=bu,cu.registerLazyResult(bu),au.registerLazyResult(bu);let ku=Rl,xu=Us,Su=eu;const Cu=rc;let Iu=class{constructor(e,t,n){let o;t=t.toString(),this.stringified=!1,this._processor=e,this._css=t,this._opts=n,this._map=void 0;let r=xu;this.result=new Cu(this._processor,o,this._opts),this.result.css=t;let i=this;Object.defineProperty(this.result,"root",{get:()=>i.root});let a=new ku(r,o,this._opts,t);if(a.isMap()){let[e,t]=a.generate();e&&(this.result.css=e),t&&(this.result.map=t)}else a.clearAnnotation(),this.result.css=a.css}async(){return this.error?Promise.reject(this.error):Promise.resolve(this.result)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}sync(){if(this.error)throw this.error;return this.result}then(e,t){return this.async().then(e,t)}toString(){return this._css}warnings(){return[]}get content(){return this.result.css}get css(){return this.result.css}get map(){return this.result.map}get messages(){return[]}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){if(this._root)return this._root;let e,t=Su;try{e=t(this._css,this._opts)}catch(n){this.error=n}if(this.error)throw this.error;return this._root=e,e}get[Symbol.toStringTag](){return"NoWorkResult"}};var Eu=Iu;Iu.default=Iu;let Tu=Eu,Ou=wu,Lu=Ql,Au=Nc,Mu=class{constructor(e=[]){this.version="8.4.38",this.plugins=this.normalize(e)}normalize(e){let t=[];for(let n of e)if(!0===n.postcss?n=n():n.postcss&&(n=n.postcss),"object"==typeof n&&Array.isArray(n.plugins))t=t.concat(n.plugins);else if("object"==typeof n&&n.postcssPlugin)t.push(n);else if("function"==typeof n)t.push(n);else{if("object"!=typeof n||!n.parse&&!n.stringify)throw new Error(n+" is not a PostCSS plugin")}return t}process(e,t={}){return this.plugins.length||t.parser||t.stringifier||t.syntax?new Ou(this,e,t):new Tu(this,e,t)}use(e){return this.plugins=this.plugins.concat(this.normalize([e])),this}};var Ru=Mu;Mu.default=Mu,Au.registerProcessor(Mu),Lu.registerProcessor(Mu);let Pu=Zs,Du=al,Nu=Nl,ju=Ac,Fu=kl,Bu=Nc,_u=Hc;function Uu(e,t){if(Array.isArray(e))return e.map((e=>Uu(e)));let{inputs:n,...o}=e;if(n){t=[];for(let e of n){let n={...e,__proto__:Fu.prototype};n.map&&(n.map={...n.map,__proto__:Du.prototype}),t.push(n)}}if(o.nodes&&(o.nodes=e.nodes.map((e=>Uu(e,t)))),o.source){let{inputId:e,...n}=o.source;o.source=n,null!=e&&(o.source.input=t[e])}if("root"===o.type)return new Bu(o);if("decl"===o.type)return new Pu(o);if("rule"===o.type)return new _u(o);if("comment"===o.type)return new Nu(o);if("atrule"===o.type)return new ju(o);throw new Error("Unknown node type: "+e.type)}var Hu=Uu;Uu.default=Uu;let zu=Ps,qu=Zs,Wu=wu,Vu=Yl,Gu=Ru,Xu=Us,Yu=Hu,Ju=Ql,Ku=tc,Zu=Nl,$u=Ac,Qu=rc,ed=kl,td=eu,nd=Fc,od=Hc,rd=Nc,id=Ys;function ad(...e){return 1===e.length&&Array.isArray(e[0])&&(e=e[0]),new Gu(e)}ad.plugin=function(e,t){let n,o=!1;function r(...n){console&&console.warn&&!o&&(o=!0,console.warn(e+": postcss.plugin was deprecated. Migration guide:\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration"),process.env.LANG&&process.env.LANG.startsWith("cn")&&console.warn(e+": 里面 postcss.plugin 被弃用. 迁移指南:\nhttps://www.w3ctech.com/topic/2226"));let r=t(...n);return r.postcssPlugin=e,r.postcssVersion=(new Gu).version,r}return Object.defineProperty(r,"postcss",{get:()=>(n||(n=r()),n)}),r.process=function(e,t,n){return ad([r(n)]).process(e,t)},r},ad.stringify=Xu,ad.parse=td,ad.fromJSON=Yu,ad.list=nd,ad.comment=e=>new Zu(e),ad.atRule=e=>new $u(e),ad.decl=e=>new qu(e),ad.rule=e=>new od(e),ad.root=e=>new rd(e),ad.document=e=>new Ju(e),ad.CssSyntaxError=zu,ad.Declaration=qu,ad.Container=Vu,ad.Processor=Gu,ad.Document=Ju,ad.Comment=Zu,ad.Warning=Ku,ad.AtRule=$u,ad.Result=Qu,ad.Input=ed,ad.Rule=od,ad.Root=rd,ad.Node=id,Wu.registerPostcss(ad);var sd=ad;ad.default=ad;const ld=Ss(sd);ld.stringify,ld.fromJSON,ld.plugin,ld.parse,ld.list,ld.document,ld.comment,ld.atRule,ld.rule,ld.decl,ld.root,ld.CssSyntaxError,ld.Declaration,ld.Container,ld.Processor,ld.Document,ld.Comment,ld.Warning,ld.AtRule,ld.Result,ld.Input,ld.Rule,ld.Root,ld.Node;class cd{constructor(...e){xs(this,"parentElement",null),xs(this,"parentNode",null),xs(this,"ownerDocument"),xs(this,"firstChild",null),xs(this,"lastChild",null),xs(this,"previousSibling",null),xs(this,"nextSibling",null),xs(this,"ELEMENT_NODE",1),xs(this,"TEXT_NODE",3),xs(this,"nodeType"),xs(this,"nodeName"),xs(this,"RRNodeType")}get childNodes(){const e=[];let t=this.firstChild;for(;t;)e.push(t),t=t.nextSibling;return e}contains(e){if(!(e instanceof cd))return!1;if(e.ownerDocument!==this.ownerDocument)return!1;if(e===this)return!0;for(;e.parentNode;){if(e.parentNode===this)return!0;e=e.parentNode}return!1}appendChild(e){throw new Error("RRDomException: Failed to execute 'appendChild' on 'RRNode': This RRNode type does not support this method.")}insertBefore(e,t){throw new Error("RRDomException: Failed to execute 'insertBefore' on 'RRNode': This RRNode type does not support this method.")}removeChild(e){throw new Error("RRDomException: Failed to execute 'removeChild' on 'RRNode': This RRNode type does not support this method.")}toString(){return"RRNode"}}const ud={Node:["childNodes","parentNode","parentElement","textContent"],ShadowRoot:["host","styleSheets"],Element:["shadowRoot","querySelector","querySelectorAll"],MutationObserver:[]},dd={Node:["contains","getRootNode"],ShadowRoot:["getSelection"],Element:[],MutationObserver:["constructor"]},pd={},hd=()=>!!globalThis.Zone;function fd(e){if(pd[e])return pd[e];const t=globalThis[e],n=t.prototype,o=e in ud?ud[e]:void 0,r=Boolean(o&&o.every((e=>{var t,o;return Boolean(null==(o=null==(t=Object.getOwnPropertyDescriptor(n,e))?void 0:t.get)?void 0:o.toString().includes("[native code]"))}))),i=e in dd?dd[e]:void 0,a=Boolean(i&&i.every((e=>{var t;return"function"==typeof n[e]&&(null==(t=n[e])?void 0:t.toString().includes("[native code]"))})));if(r&&a&&!hd())return pd[e]=t.prototype,t.prototype;try{const o=document.createElement("iframe");document.body.appendChild(o);const r=o.contentWindow;if(!r)return t.prototype;const i=r[e].prototype;return document.body.removeChild(o),i?pd[e]=i:n}catch{return n}}const md={};function gd(e,t,n){var o;const r=`${e}.${String(n)}`;if(md[r])return md[r].call(t);const i=fd(e),a=null==(o=Object.getOwnPropertyDescriptor(i,n))?void 0:o.get;return a?(md[r]=a,a.call(t)):t[n]}const vd={};function yd(e,t,n){const o=`${e}.${String(n)}`;if(vd[o])return vd[o].bind(t);const r=fd(e)[n];return"function"!=typeof r?t[n]:(vd[o]=r,r.bind(t))}function bd(){return fd("MutationObserver").constructor}const wd={childNodes:function(e){return gd("Node",e,"childNodes")},parentNode:function(e){return gd("Node",e,"parentNode")},parentElement:function(e){return gd("Node",e,"parentElement")},textContent:function(e){return gd("Node",e,"textContent")},contains:function(e,t){return yd("Node",e,"contains")(t)},getRootNode:function(e){return yd("Node",e,"getRootNode")()},host:function(e){return e&&"host"in e?gd("ShadowRoot",e,"host"):null},styleSheets:function(e){return e.styleSheets},shadowRoot:function(e){return e&&"shadowRoot"in e?gd("Element",e,"shadowRoot"):null},querySelector:function(e,t){return gd("Element",e,"querySelector")(t)},querySelectorAll:function(e,t){return gd("Element",e,"querySelectorAll")(t)},mutationObserver:bd};function kd(e,t,n=document){const o={capture:!0,passive:!0};return n.addEventListener(e,t,o),()=>n.removeEventListener(e,t,o)}const xd="Please stop import mirror directly. Instead of that,\r\nnow you can use replayer.getMirror() to access the mirror instance of a replayer,\r\nor you can use record.mirror to access the mirror instance during recording.";let Sd={map:{},getId:()=>(console.error(xd),-1),getNode:()=>(console.error(xd),null),removeNodeFromMap(){console.error(xd)},has:()=>(console.error(xd),!1),reset(){console.error(xd)}};function Cd(e,t,n={}){let o=null,r=0;return function(...i){const a=Date.now();r||!1!==n.leading||(r=a);const s=t-(a-r),l=this;s<=0||s>t?(o&&(clearTimeout(o),o=null),r=a,e.apply(l,i)):o||!1===n.trailing||(o=setTimeout((()=>{r=!1===n.leading?0:Date.now(),o=null,e.apply(l,i)}),s))}}function Id(e,t,n,o,r=window){const i=r.Object.getOwnPropertyDescriptor(e,t);return r.Object.defineProperty(e,t,o?n:{set(e){setTimeout((()=>{n.set.call(this,e)}),0),i&&i.set&&i.set.call(this,e)}}),()=>Id(e,t,i||{},!0)}function Ed(e,t,n){try{if(!(t in e))return()=>{};const o=e[t],r=n(o);return"function"==typeof r&&(r.prototype=r.prototype||{},Object.defineProperties(r,{__rrweb_original__:{enumerable:!1,value:o}})),e[t]=r,()=>{e[t]=o}}catch{return()=>{}}}"undefined"!=typeof window&&window.Proxy&&window.Reflect&&(Sd=new Proxy(Sd,{get:(e,t,n)=>("map"===t&&console.error(xd),Reflect.get(e,t,n))}));let Td=Date.now;function Od(e){var t,n,o,r;const i=e.document;return{left:i.scrollingElement?i.scrollingElement.scrollLeft:void 0!==e.pageXOffset?e.pageXOffset:i.documentElement.scrollLeft||(null==i?void 0:i.body)&&(null==(t=wd.parentElement(i.body))?void 0:t.scrollLeft)||(null==(n=null==i?void 0:i.body)?void 0:n.scrollLeft)||0,top:i.scrollingElement?i.scrollingElement.scrollTop:void 0!==e.pageYOffset?e.pageYOffset:(null==i?void 0:i.documentElement.scrollTop)||(null==i?void 0:i.body)&&(null==(o=wd.parentElement(i.body))?void 0:o.scrollTop)||(null==(r=null==i?void 0:i.body)?void 0:r.scrollTop)||0}}function Ld(){return window.innerHeight||document.documentElement&&document.documentElement.clientHeight||document.body&&document.body.clientHeight}function Ad(){return window.innerWidth||document.documentElement&&document.documentElement.clientWidth||document.body&&document.body.clientWidth}function Md(e){if(!e)return null;return e.nodeType===e.ELEMENT_NODE?e:wd.parentElement(e)}function Rd(e,t,n,o){if(!e)return!1;const r=Md(e);if(!r)return!1;try{if("string"==typeof t){if(r.classList.contains(t))return!0;if(o&&null!==r.closest("."+t))return!0}else if(Ao(r,t,o))return!0}catch(i){}if(n){if(r.matches(n))return!0;if(o&&null!==r.closest(n))return!0}return!1}function Pd(e,t,n){return!("TITLE"!==e.tagName||!n.headTitleMutations)||t.getId(e)===yo}function Dd(e,t){if($n(e))return!1;const n=t.getId(e);if(!t.has(n))return!0;const o=wd.parentNode(e);return(!o||o.nodeType!==e.DOCUMENT_NODE)&&(!o||Dd(o,t))}function Nd(e){return Boolean(e.changedTouches)}function jd(e,t){return Boolean("IFRAME"===e.nodeName&&t.getMeta(e))}function Fd(e,t){return Boolean("LINK"===e.nodeName&&e.nodeType===e.ELEMENT_NODE&&e.getAttribute&&"stylesheet"===e.getAttribute("rel")&&t.getMeta(e))}function Bd(e){return!!e&&(e instanceof cd&&"shadowRoot"in e?Boolean(e.shadowRoot):Boolean(wd.shadowRoot(e)))}/[1-9][0-9]{12}/.test(Date.now().toString())||(Td=()=>(new Date).getTime());class _d{constructor(){Fn(this,"id",1),Fn(this,"styleIDMap",new WeakMap),Fn(this,"idStyleMap",new Map)}getId(e){return this.styleIDMap.get(e)??-1}has(e){return this.styleIDMap.has(e)}add(e,t){if(this.has(e))return this.getId(e);let n;return n=void 0===t?this.id++:t,this.styleIDMap.set(e,n),this.idStyleMap.set(n,e),n}getStyle(e){return this.idStyleMap.get(e)||null}reset(){this.styleIDMap=new WeakMap,this.idStyleMap=new Map,this.id=1}generateId(){return this.id++}}function Ud(e){var t;let n=null;return"getRootNode"in e&&(null==(t=wd.getRootNode(e))?void 0:t.nodeType)===Node.DOCUMENT_FRAGMENT_NODE&&wd.host(wd.getRootNode(e))&&(n=wd.host(wd.getRootNode(e))),n}function Hd(e){const t=e.ownerDocument;if(!t)return!1;const n=function(e){let t,n=e;for(;t=Ud(n);)n=t;return n}(e);return wd.contains(t,n)}function zd(e){const t=e.ownerDocument;return!!t&&(wd.contains(t,e)||Hd(e))}var qd=(e=>(e[e.DomContentLoaded=0]="DomContentLoaded",e[e.Load=1]="Load",e[e.FullSnapshot=2]="FullSnapshot",e[e.IncrementalSnapshot=3]="IncrementalSnapshot",e[e.Meta=4]="Meta",e[e.Custom=5]="Custom",e[e.Plugin=6]="Plugin",e))(qd||{}),Wd=(e=>(e[e.Mutation=0]="Mutation",e[e.MouseMove=1]="MouseMove",e[e.MouseInteraction=2]="MouseInteraction",e[e.Scroll=3]="Scroll",e[e.ViewportResize=4]="ViewportResize",e[e.Input=5]="Input",e[e.TouchMove=6]="TouchMove",e[e.MediaInteraction=7]="MediaInteraction",e[e.StyleSheetRule=8]="StyleSheetRule",e[e.CanvasMutation=9]="CanvasMutation",e[e.Font=10]="Font",e[e.Log=11]="Log",e[e.Drag=12]="Drag",e[e.StyleDeclaration=13]="StyleDeclaration",e[e.Selection=14]="Selection",e[e.AdoptedStyleSheet=15]="AdoptedStyleSheet",e[e.CustomElement=16]="CustomElement",e))(Wd||{}),Vd=(e=>(e[e.MouseUp=0]="MouseUp",e[e.MouseDown=1]="MouseDown",e[e.Click=2]="Click",e[e.ContextMenu=3]="ContextMenu",e[e.DblClick=4]="DblClick",e[e.Focus=5]="Focus",e[e.Blur=6]="Blur",e[e.TouchStart=7]="TouchStart",e[e.TouchMove_Departed=8]="TouchMove_Departed",e[e.TouchEnd=9]="TouchEnd",e[e.TouchCancel=10]="TouchCancel",e))(Vd||{}),Gd=(e=>(e[e.Mouse=0]="Mouse",e[e.Pen=1]="Pen",e[e.Touch=2]="Touch",e))(Gd||{}),Xd=(e=>(e[e["2D"]=0]="2D",e[e.WebGL=1]="WebGL",e[e.WebGL2=2]="WebGL2",e))(Xd||{}),Yd=(e=>(e[e.Play=0]="Play",e[e.Pause=1]="Pause",e[e.Seeked=2]="Seeked",e[e.VolumeChange=3]="VolumeChange",e[e.RateChange=4]="RateChange",e))(Yd||{}),Jd=(e=>(e[e.Document=0]="Document",e[e.DocumentType=1]="DocumentType",e[e.Element=2]="Element",e[e.Text=3]="Text",e[e.CDATA=4]="CDATA",e[e.Comment=5]="Comment",e))(Jd||{});function Kd(e){return"__ln"in e}class Zd{constructor(){Fn(this,"length",0),Fn(this,"head",null),Fn(this,"tail",null)}get(e){if(e>=this.length)throw new Error("Position outside of list range");let t=this.head;for(let n=0;n`${e}@${t}`;class Qd{constructor(){Fn(this,"frozen",!1),Fn(this,"locked",!1),Fn(this,"texts",[]),Fn(this,"attributes",[]),Fn(this,"attributeMap",new WeakMap),Fn(this,"removes",[]),Fn(this,"mapRemoves",[]),Fn(this,"movedMap",{}),Fn(this,"addedSet",new Set),Fn(this,"movedSet",new Set),Fn(this,"droppedSet",new Set),Fn(this,"removesSubTreeCache",new Set),Fn(this,"mutationCb"),Fn(this,"blockClass"),Fn(this,"blockSelector"),Fn(this,"maskTextClass"),Fn(this,"maskTextSelector"),Fn(this,"inlineStylesheet"),Fn(this,"maskInputOptions"),Fn(this,"maskTextFn"),Fn(this,"maskInputFn"),Fn(this,"keepIframeSrcFn"),Fn(this,"recordCanvas"),Fn(this,"inlineImages"),Fn(this,"slimDOMOptions"),Fn(this,"dataURLOptions"),Fn(this,"doc"),Fn(this,"mirror"),Fn(this,"iframeManager"),Fn(this,"stylesheetManager"),Fn(this,"shadowDomManager"),Fn(this,"canvasManager"),Fn(this,"processedNodeManager"),Fn(this,"unattachedDoc"),Fn(this,"processMutations",(e=>{e.forEach(this.processMutation),this.emit()})),Fn(this,"emit",(()=>{if(this.frozen||this.locked)return;const e=[],t=new Set,n=new Zd,o=e=>{let t=e,n=yo;for(;n===yo;)t=t&&t.nextSibling,n=t&&this.mirror.getId(t);return n},r=r=>{const i=wd.parentNode(r);if(!i||!zd(r))return;let a=!1;if(r.nodeType===Node.TEXT_NODE){const e=i.tagName;if("TEXTAREA"===e)return;"STYLE"===e&&this.addedSet.has(i)&&(a=!0)}const s=$n(i)?this.mirror.getId(Ud(r)):this.mirror.getId(i),l=o(r);if(-1===s||-1===l)return n.addNode(r);const c=Do(r,{doc:this.doc,mirror:this.mirror,blockClass:this.blockClass,blockSelector:this.blockSelector,maskTextClass:this.maskTextClass,maskTextSelector:this.maskTextSelector,skipChild:!0,newlyAddedElement:!0,inlineStylesheet:this.inlineStylesheet,maskInputOptions:this.maskInputOptions,maskTextFn:this.maskTextFn,maskInputFn:this.maskInputFn,slimDOMOptions:this.slimDOMOptions,dataURLOptions:this.dataURLOptions,recordCanvas:this.recordCanvas,inlineImages:this.inlineImages,onSerialize:e=>{jd(e,this.mirror)&&this.iframeManager.addIframe(e),Fd(e,this.mirror)&&this.stylesheetManager.trackLinkElement(e),Bd(r)&&this.shadowDomManager.addShadowRoot(wd.shadowRoot(r),this.doc)},onIframeLoad:(e,t)=>{this.iframeManager.attachIframe(e,t),this.shadowDomManager.observeAttachShadow(e)},onStylesheetLoad:(e,t)=>{this.stylesheetManager.attachLinkElement(e,t)},cssCaptured:a});c&&(e.push({parentId:s,nextId:l,node:c}),t.add(c.id))};for(;this.mapRemoves.length;)this.mirror.removeNodeFromMap(this.mapRemoves.shift());for(const s of this.movedSet)tp(this.removesSubTreeCache,s,this.mirror)&&!this.movedSet.has(wd.parentNode(s))||r(s);for(const s of this.addedSet)np(this.droppedSet,s)||tp(this.removesSubTreeCache,s,this.mirror)?np(this.movedSet,s)?r(s):this.droppedSet.add(s):r(s);let i=null;for(;n.length;){let e=null;if(i){const t=this.mirror.getId(wd.parentNode(i.value)),n=o(i.value);-1!==t&&-1!==n&&(e=i)}if(!e){let t=n.tail;for(;t;){const n=t;if(t=t.previous,n){const t=this.mirror.getId(wd.parentNode(n.value));if(-1===o(n.value))continue;if(-1!==t){e=n;break}{const t=n.value,o=wd.parentNode(t);if(o&&o.nodeType===Node.DOCUMENT_FRAGMENT_NODE){const t=wd.host(o);if(-1!==this.mirror.getId(t)){e=n;break}}}}}}if(!e){for(;n.head;)n.removeNode(n.head.value);break}i=e.previous,n.removeNode(e.value),r(e.value)}const a={texts:this.texts.map((e=>{const t=e.node,n=wd.parentNode(t);return n&&"TEXTAREA"===n.tagName&&this.genTextAreaValueMutation(n),{id:this.mirror.getId(t),value:e.value}})).filter((e=>!t.has(e.id))).filter((e=>this.mirror.has(e.id))),attributes:this.attributes.map((e=>{const{attributes:t}=e;if("string"==typeof t.style){const n=JSON.stringify(e.styleDiff),o=JSON.stringify(e._unchangedStyles);n.length!t.has(e.id))).filter((e=>this.mirror.has(e.id))),removes:this.removes,adds:e};(a.texts.length||a.attributes.length||a.removes.length||a.adds.length)&&(this.texts=[],this.attributes=[],this.attributeMap=new WeakMap,this.removes=[],this.addedSet=new Set,this.movedSet=new Set,this.droppedSet=new Set,this.removesSubTreeCache=new Set,this.movedMap={},this.mutationCb(a))})),Fn(this,"genTextAreaValueMutation",(e=>{let t=this.attributeMap.get(e);t||(t={node:e,attributes:{},styleDiff:{},_unchangedStyles:{}},this.attributes.push(t),this.attributeMap.set(e,t)),t.attributes.value=Array.from(wd.childNodes(e),(e=>wd.textContent(e)||"")).join("")})),Fn(this,"processMutation",(e=>{if(!Pd(e.target,this.mirror,this.slimDOMOptions))switch(e.type){case"characterData":{const t=wd.textContent(e.target);Rd(e.target,this.blockClass,this.blockSelector,!1)||t===e.oldValue||this.texts.push({value:Mo(e.target,this.maskTextClass,this.maskTextSelector,!0)&&t?this.maskTextFn?this.maskTextFn(t,Md(e.target)):t.replace(/[\S]/g,"*"):t,node:e.target});break}case"attributes":{const n=e.target;let o=e.attributeName,r=e.target.getAttribute(o);if("value"===o){const e=ao(n);r=oo({element:n,maskInputOptions:this.maskInputOptions,tagName:n.tagName,type:e,value:r,maskInputFn:this.maskInputFn})}if(Rd(e.target,this.blockClass,this.blockSelector,!1)||r===e.oldValue)return;let i=this.attributeMap.get(e.target);if("IFRAME"===n.tagName&&"src"===o&&!this.keepIframeSrcFn(r)){if(n.contentDocument)return;o="rr_src"}if(i||(i={node:e.target,attributes:{},styleDiff:{},_unchangedStyles:{}},this.attributes.push(i),this.attributeMap.set(e.target,i)),"type"===o&&"INPUT"===n.tagName&&"password"===(e.oldValue||"").toLowerCase()&&n.setAttribute("data-rr-is-password","true"),!Lo(n.tagName,o))if(i.attributes[o]=Oo(this.doc,ro(n.tagName),ro(o),r),"style"===o){if(!this.unattachedDoc)try{this.unattachedDoc=document.implementation.createHTMLDocument()}catch(t){this.unattachedDoc=this.doc}const o=this.unattachedDoc.createElement("span");e.oldValue&&o.setAttribute("style",e.oldValue);for(const e of Array.from(n.style)){const t=n.style.getPropertyValue(e),r=n.style.getPropertyPriority(e);t!==o.style.getPropertyValue(e)||r!==o.style.getPropertyPriority(e)?i.styleDiff[e]=""===r?t:[t,r]:i._unchangedStyles[e]=[t,r]}for(const e of Array.from(o.style))""===n.style.getPropertyValue(e)&&(i.styleDiff[e]=!1)}else"open"===o&&"DIALOG"===n.tagName&&(n.matches("dialog:modal")?i.attributes.rr_open_mode="modal":i.attributes.rr_open_mode="non-modal");break}case"childList":if(Rd(e.target,this.blockClass,this.blockSelector,!0))return;if("TEXTAREA"===e.target.tagName)return void this.genTextAreaValueMutation(e.target);e.addedNodes.forEach((t=>this.genAdds(t,e.target))),e.removedNodes.forEach((t=>{const n=this.mirror.getId(t),o=$n(e.target)?this.mirror.getId(wd.host(e.target)):this.mirror.getId(e.target);Rd(e.target,this.blockClass,this.blockSelector,!1)||Pd(t,this.mirror,this.slimDOMOptions)||!function(e,t){return-1!==t.getId(e)}(t,this.mirror)||(this.addedSet.has(t)?(ep(this.addedSet,t),this.droppedSet.add(t)):this.addedSet.has(e.target)&&-1===n||Dd(e.target,this.mirror)||(this.movedSet.has(t)&&this.movedMap[$d(n,o)]?ep(this.movedSet,t):(this.removes.push({parentId:o,id:n,isShadow:!(!$n(e.target)||!Qn(e.target))||void 0}),function(e,t){const n=[e];for(;n.length;){const e=n.pop();t.has(e)||(t.add(e),wd.childNodes(e).forEach((e=>n.push(e))))}}(t,this.removesSubTreeCache))),this.mapRemoves.push(t))}))}})),Fn(this,"genAdds",((e,t)=>{if(!this.processedNodeManager.inOtherBuffer(e,this)&&!this.addedSet.has(e)&&!this.movedSet.has(e)){if(this.mirror.hasNode(e)){if(Pd(e,this.mirror,this.slimDOMOptions))return;this.movedSet.add(e);let n=null;t&&this.mirror.hasNode(t)&&(n=this.mirror.getId(t)),n&&-1!==n&&(this.movedMap[$d(this.mirror.getId(e),n)]=!0)}else this.addedSet.add(e),this.droppedSet.delete(e);Rd(e,this.blockClass,this.blockSelector,!1)||(wd.childNodes(e).forEach((e=>this.genAdds(e))),Bd(e)&&wd.childNodes(wd.shadowRoot(e)).forEach((t=>{this.processedNodeManager.add(t,this),this.genAdds(t,e)})))}}))}init(e){["mutationCb","blockClass","blockSelector","maskTextClass","maskTextSelector","inlineStylesheet","maskInputOptions","maskTextFn","maskInputFn","keepIframeSrcFn","recordCanvas","inlineImages","slimDOMOptions","dataURLOptions","doc","mirror","iframeManager","stylesheetManager","shadowDomManager","canvasManager","processedNodeManager"].forEach((t=>{this[t]=e[t]}))}freeze(){this.frozen=!0,this.canvasManager.freeze()}unfreeze(){this.frozen=!1,this.canvasManager.unfreeze(),this.emit()}isFrozen(){return this.frozen}lock(){this.locked=!0,this.canvasManager.lock()}unlock(){this.locked=!1,this.canvasManager.unlock(),this.emit()}reset(){this.shadowDomManager.reset(),this.canvasManager.reset()}}function ep(e,t){e.delete(t),wd.childNodes(t).forEach((t=>ep(e,t)))}function tp(e,t,n){return 0!==e.size&&function(e,t,n){const o=wd.parentNode(t);return!!o&&e.has(o)}(e,t)}function np(e,t){return 0!==e.size&&op(e,t)}function op(e,t){const n=wd.parentNode(t);return!!n&&(!!e.has(n)||op(e,n))}let rp;const ip=e=>{if(!rp)return e;return(...t)=>{try{return e(...t)}catch(n){if(rp&&!0===rp(n))return;throw n}}},ap=[];function sp(e){try{if("composedPath"in e){const t=e.composedPath();if(t.length)return t[0]}else if("path"in e&&e.path.length)return e.path[0]}catch{}return e&&e.target}function lp(e,t){const n=new Qd;ap.push(n),n.init(e);const o=new(bd())(ip(n.processMutations.bind(n)));return o.observe(t,{attributes:!0,attributeOldValue:!0,characterData:!0,characterDataOldValue:!0,childList:!0,subtree:!0}),o}function cp({mouseInteractionCb:e,doc:t,mirror:n,blockClass:o,blockSelector:r,sampling:i}){if(!1===i.mouseInteraction)return()=>{};const a=!0===i.mouseInteraction||void 0===i.mouseInteraction?{}:i.mouseInteraction,s=[];let l=null;return Object.keys(Vd).filter((e=>Number.isNaN(Number(e))&&!e.endsWith("_Departed")&&!1!==a[e])).forEach((i=>{let a=ro(i);const c=(t=>i=>{const a=sp(i);if(Rd(a,o,r,!0))return;let s=null,c=t;if("pointerType"in i){switch(i.pointerType){case"mouse":s=Gd.Mouse;break;case"touch":s=Gd.Touch;break;case"pen":s=Gd.Pen}s===Gd.Touch?Vd[t]===Vd.MouseDown?c="TouchStart":Vd[t]===Vd.MouseUp&&(c="TouchEnd"):Gd.Pen}else Nd(i)&&(s=Gd.Touch);null!==s?(l=s,(c.startsWith("Touch")&&s===Gd.Touch||c.startsWith("Mouse")&&s===Gd.Mouse)&&(s=null)):Vd[t]===Vd.Click&&(s=l,l=null);const u=Nd(i)?i.changedTouches[0]:i;if(!u)return;const d=n.getId(a),{clientX:p,clientY:h}=u;ip(e)({type:Vd[c],id:d,x:p,y:h,...null!==s&&{pointerType:s}})})(i);if(window.PointerEvent)switch(Vd[i]){case Vd.MouseDown:case Vd.MouseUp:a=a.replace("mouse","pointer");break;case Vd.TouchStart:case Vd.TouchEnd:return}s.push(kd(a,c,t))})),ip((()=>{s.forEach((e=>e()))}))}function up({scrollCb:e,doc:t,mirror:n,blockClass:o,blockSelector:r,sampling:i}){return kd("scroll",ip(Cd(ip((i=>{const a=sp(i);if(!a||Rd(a,o,r,!0))return;const s=n.getId(a);if(a===t&&t.defaultView){const n=Od(t.defaultView);e({id:s,x:n.left,y:n.top})}else e({id:s,x:a.scrollLeft,y:a.scrollTop})})),i.scroll||100)),t)}const dp=["INPUT","TEXTAREA","SELECT"],pp=new WeakMap;function hp(e){return function(e,t){if(vp("CSSGroupingRule")&&e.parentRule instanceof CSSGroupingRule||vp("CSSMediaRule")&&e.parentRule instanceof CSSMediaRule||vp("CSSSupportsRule")&&e.parentRule instanceof CSSSupportsRule||vp("CSSConditionRule")&&e.parentRule instanceof CSSConditionRule){const n=Array.from(e.parentRule.cssRules).indexOf(e);t.unshift(n)}else if(e.parentStyleSheet){const n=Array.from(e.parentStyleSheet.cssRules).indexOf(e);t.unshift(n)}return t}(e,[])}function fp(e,t,n){let o,r;return e?(e.ownerNode?o=t.getId(e.ownerNode):r=n.getId(e),{styleId:r,id:o}):{}}function mp({mirror:e,stylesheetManager:t},n){var o,r,i;let a=null;a="#document"===n.nodeName?e.getId(n):e.getId(wd.host(n));const s="#document"===n.nodeName?null==(o=n.defaultView)?void 0:o.Document:null==(i=null==(r=n.ownerDocument)?void 0:r.defaultView)?void 0:i.ShadowRoot,l=(null==s?void 0:s.prototype)?Object.getOwnPropertyDescriptor(null==s?void 0:s.prototype,"adoptedStyleSheets"):void 0;return null!==a&&-1!==a&&s&&l?(Object.defineProperty(n,"adoptedStyleSheets",{configurable:l.configurable,enumerable:l.enumerable,get(){var e;return null==(e=l.get)?void 0:e.call(this)},set(e){var n;const o=null==(n=l.set)?void 0:n.call(this,e);if(null!==a&&-1!==a)try{t.adoptStyleSheets(e,a)}catch(r){}return o}}),ip((()=>{Object.defineProperty(n,"adoptedStyleSheets",{configurable:l.configurable,enumerable:l.enumerable,get:l.get,set:l.set})}))):()=>{}}function gp(e,t={}){const n=e.doc.defaultView;if(!n)return()=>{};let o;!function(e,t){const{mutationCb:n,mousemoveCb:o,mouseInteractionCb:r,scrollCb:i,viewportResizeCb:a,inputCb:s,mediaInteractionCb:l,styleSheetRuleCb:c,styleDeclarationCb:u,canvasMutationCb:d,fontCb:p,selectionCb:h,customElementCb:f}=e;e.mutationCb=(...e)=>{t.mutation&&t.mutation(...e),n(...e)},e.mousemoveCb=(...e)=>{t.mousemove&&t.mousemove(...e),o(...e)},e.mouseInteractionCb=(...e)=>{t.mouseInteraction&&t.mouseInteraction(...e),r(...e)},e.scrollCb=(...e)=>{t.scroll&&t.scroll(...e),i(...e)},e.viewportResizeCb=(...e)=>{t.viewportResize&&t.viewportResize(...e),a(...e)},e.inputCb=(...e)=>{t.input&&t.input(...e),s(...e)},e.mediaInteractionCb=(...e)=>{t.mediaInteaction&&t.mediaInteaction(...e),l(...e)},e.styleSheetRuleCb=(...e)=>{t.styleSheetRule&&t.styleSheetRule(...e),c(...e)},e.styleDeclarationCb=(...e)=>{t.styleDeclaration&&t.styleDeclaration(...e),u(...e)},e.canvasMutationCb=(...e)=>{t.canvasMutation&&t.canvasMutation(...e),d(...e)},e.fontCb=(...e)=>{t.font&&t.font(...e),p(...e)},e.selectionCb=(...e)=>{t.selection&&t.selection(...e),h(...e)},e.customElementCb=(...e)=>{t.customElement&&t.customElement(...e),f(...e)}}(e,t),e.recordDOM&&(o=lp(e,e.doc));const r=function({mousemoveCb:e,sampling:t,doc:n,mirror:o}){if(!1===t.mousemove)return()=>{};const r="number"==typeof t.mousemove?t.mousemove:50,i="number"==typeof t.mousemoveCallback?t.mousemoveCallback:500;let a,s=[];const l=Cd(ip((t=>{const n=Date.now()-a;e(s.map((e=>(e.timeOffset-=n,e))),t),s=[],a=null})),i),c=ip(Cd(ip((e=>{const t=sp(e),{clientX:n,clientY:r}=Nd(e)?e.changedTouches[0]:e;a||(a=Td()),s.push({x:n,y:r,id:o.getId(t),timeOffset:Td()-a}),l("undefined"!=typeof DragEvent&&e instanceof DragEvent?Wd.Drag:e instanceof MouseEvent?Wd.MouseMove:Wd.TouchMove)})),r,{trailing:!1})),u=[kd("mousemove",c,n),kd("touchmove",c,n),kd("drag",c,n)];return ip((()=>{u.forEach((e=>e()))}))}(e),i=cp(e),a=up(e),s=function({viewportResizeCb:e},{win:t}){let n=-1,o=-1;return kd("resize",ip(Cd(ip((()=>{const t=Ld(),r=Ad();n===t&&o===r||(e({width:Number(r),height:Number(t)}),n=t,o=r)})),200)),t)}(e,{win:n}),l=function({inputCb:e,doc:t,mirror:n,blockClass:o,blockSelector:r,ignoreClass:i,ignoreSelector:a,maskInputOptions:s,maskInputFn:l,sampling:c,userTriggeredOnInput:u}){function d(e){let n=sp(e);const c=e.isTrusted,d=n&&n.tagName;if(n&&"OPTION"===d&&(n=wd.parentElement(n)),!n||!d||dp.indexOf(d)<0||Rd(n,o,r,!0))return;if(n.classList.contains(i)||a&&n.matches(a))return;let h=n.value,f=!1;const m=ao(n)||"";"radio"===m||"checkbox"===m?f=n.checked:(s[d.toLowerCase()]||s[m])&&(h=oo({element:n,maskInputOptions:s,tagName:d,type:m,value:h,maskInputFn:l})),p(n,u?{text:h,isChecked:f,userTriggered:c}:{text:h,isChecked:f});const g=n.name;"radio"===m&&g&&f&&t.querySelectorAll(`input[type="radio"][name="${g}"]`).forEach((e=>{if(e!==n){const t=e.value;p(e,u?{text:t,isChecked:!f,userTriggered:!1}:{text:t,isChecked:!f})}}))}function p(t,o){const r=pp.get(t);if(!r||r.text!==o.text||r.isChecked!==o.isChecked){pp.set(t,o);const r=n.getId(t);ip(e)({...o,id:r})}}const h=("last"===c.input?["change"]:["input","change"]).map((e=>kd(e,ip(d),t))),f=t.defaultView;if(!f)return()=>{h.forEach((e=>e()))};const m=f.Object.getOwnPropertyDescriptor(f.HTMLInputElement.prototype,"value"),g=[[f.HTMLInputElement.prototype,"value"],[f.HTMLInputElement.prototype,"checked"],[f.HTMLSelectElement.prototype,"value"],[f.HTMLTextAreaElement.prototype,"value"],[f.HTMLSelectElement.prototype,"selectedIndex"],[f.HTMLOptionElement.prototype,"selected"]];return m&&m.set&&h.push(...g.map((e=>Id(e[0],e[1],{set(){ip(d)({target:this,isTrusted:!1})}},!1,f)))),ip((()=>{h.forEach((e=>e()))}))}(e),c=function({mediaInteractionCb:e,blockClass:t,blockSelector:n,mirror:o,sampling:r,doc:i}){const a=ip((i=>Cd(ip((r=>{const a=sp(r);if(!a||Rd(a,t,n,!0))return;const{currentTime:s,volume:l,muted:c,playbackRate:u,loop:d}=a;e({type:i,id:o.getId(a),currentTime:s,volume:l,muted:c,playbackRate:u,loop:d})})),r.media||500))),s=[kd("play",a(Yd.Play),i),kd("pause",a(Yd.Pause),i),kd("seeked",a(Yd.Seeked),i),kd("volumechange",a(Yd.VolumeChange),i),kd("ratechange",a(Yd.RateChange),i)];return ip((()=>{s.forEach((e=>e()))}))}(e);let u=()=>{},d=()=>{},p=()=>{},h=()=>{};e.recordDOM&&(u=function({styleSheetRuleCb:e,mirror:t,stylesheetManager:n},{win:o}){if(!o.CSSStyleSheet||!o.CSSStyleSheet.prototype)return()=>{};const r=o.CSSStyleSheet.prototype.insertRule;o.CSSStyleSheet.prototype.insertRule=new Proxy(r,{apply:ip(((o,r,i)=>{const[a,s]=i,{id:l,styleId:c}=fp(r,t,n.styleMirror);return(l&&-1!==l||c&&-1!==c)&&e({id:l,styleId:c,adds:[{rule:a,index:s}]}),o.apply(r,i)}))}),o.CSSStyleSheet.prototype.addRule=function(e,t,n=this.cssRules.length){const r=`${e} { ${t} }`;return o.CSSStyleSheet.prototype.insertRule.apply(this,[r,n])};const i=o.CSSStyleSheet.prototype.deleteRule;let a,s;o.CSSStyleSheet.prototype.deleteRule=new Proxy(i,{apply:ip(((o,r,i)=>{const[a]=i,{id:s,styleId:l}=fp(r,t,n.styleMirror);return(s&&-1!==s||l&&-1!==l)&&e({id:s,styleId:l,removes:[{index:a}]}),o.apply(r,i)}))}),o.CSSStyleSheet.prototype.removeRule=function(e){return o.CSSStyleSheet.prototype.deleteRule.apply(this,[e])},o.CSSStyleSheet.prototype.replace&&(a=o.CSSStyleSheet.prototype.replace,o.CSSStyleSheet.prototype.replace=new Proxy(a,{apply:ip(((o,r,i)=>{const[a]=i,{id:s,styleId:l}=fp(r,t,n.styleMirror);return(s&&-1!==s||l&&-1!==l)&&e({id:s,styleId:l,replace:a}),o.apply(r,i)}))})),o.CSSStyleSheet.prototype.replaceSync&&(s=o.CSSStyleSheet.prototype.replaceSync,o.CSSStyleSheet.prototype.replaceSync=new Proxy(s,{apply:ip(((o,r,i)=>{const[a]=i,{id:s,styleId:l}=fp(r,t,n.styleMirror);return(s&&-1!==s||l&&-1!==l)&&e({id:s,styleId:l,replaceSync:a}),o.apply(r,i)}))}));const l={};yp("CSSGroupingRule")?l.CSSGroupingRule=o.CSSGroupingRule:(yp("CSSMediaRule")&&(l.CSSMediaRule=o.CSSMediaRule),yp("CSSConditionRule")&&(l.CSSConditionRule=o.CSSConditionRule),yp("CSSSupportsRule")&&(l.CSSSupportsRule=o.CSSSupportsRule));const c={};return Object.entries(l).forEach((([o,r])=>{c[o]={insertRule:r.prototype.insertRule,deleteRule:r.prototype.deleteRule},r.prototype.insertRule=new Proxy(c[o].insertRule,{apply:ip(((o,r,i)=>{const[a,s]=i,{id:l,styleId:c}=fp(r.parentStyleSheet,t,n.styleMirror);return(l&&-1!==l||c&&-1!==c)&&e({id:l,styleId:c,adds:[{rule:a,index:[...hp(r),s||0]}]}),o.apply(r,i)}))}),r.prototype.deleteRule=new Proxy(c[o].deleteRule,{apply:ip(((o,r,i)=>{const[a]=i,{id:s,styleId:l}=fp(r.parentStyleSheet,t,n.styleMirror);return(s&&-1!==s||l&&-1!==l)&&e({id:s,styleId:l,removes:[{index:[...hp(r),a]}]}),o.apply(r,i)}))})})),ip((()=>{o.CSSStyleSheet.prototype.insertRule=r,o.CSSStyleSheet.prototype.deleteRule=i,a&&(o.CSSStyleSheet.prototype.replace=a),s&&(o.CSSStyleSheet.prototype.replaceSync=s),Object.entries(l).forEach((([e,t])=>{t.prototype.insertRule=c[e].insertRule,t.prototype.deleteRule=c[e].deleteRule}))}))}(e,{win:n}),d=mp(e,e.doc),p=function({styleDeclarationCb:e,mirror:t,ignoreCSSAttributes:n,stylesheetManager:o},{win:r}){const i=r.CSSStyleDeclaration.prototype.setProperty;r.CSSStyleDeclaration.prototype.setProperty=new Proxy(i,{apply:ip(((r,a,s)=>{var l;const[c,u,d]=s;if(n.has(c))return i.apply(a,[c,u,d]);const{id:p,styleId:h}=fp(null==(l=a.parentRule)?void 0:l.parentStyleSheet,t,o.styleMirror);return(p&&-1!==p||h&&-1!==h)&&e({id:p,styleId:h,set:{property:c,value:u,priority:d},index:hp(a.parentRule)}),r.apply(a,s)}))});const a=r.CSSStyleDeclaration.prototype.removeProperty;return r.CSSStyleDeclaration.prototype.removeProperty=new Proxy(a,{apply:ip(((r,i,s)=>{var l;const[c]=s;if(n.has(c))return a.apply(i,[c]);const{id:u,styleId:d}=fp(null==(l=i.parentRule)?void 0:l.parentStyleSheet,t,o.styleMirror);return(u&&-1!==u||d&&-1!==d)&&e({id:u,styleId:d,remove:{property:c},index:hp(i.parentRule)}),r.apply(i,s)}))}),ip((()=>{r.CSSStyleDeclaration.prototype.setProperty=i,r.CSSStyleDeclaration.prototype.removeProperty=a}))}(e,{win:n}),e.collectFonts&&(h=function({fontCb:e,doc:t}){const n=t.defaultView;if(!n)return()=>{};const o=[],r=new WeakMap,i=n.FontFace;n.FontFace=function(e,t,n){const o=new i(e,t,n);return r.set(o,{family:e,buffer:"string"!=typeof t,descriptors:n,fontSource:"string"==typeof t?t:JSON.stringify(Array.from(new Uint8Array(t)))}),o};const a=Ed(t.fonts,"add",(function(t){return function(n){return setTimeout(ip((()=>{const t=r.get(n);t&&(e(t),r.delete(n))})),0),t.apply(this,[n])}}));return o.push((()=>{n.FontFace=i})),o.push(a),ip((()=>{o.forEach((e=>e()))}))}(e)));const f=function(e){const{doc:t,mirror:n,blockClass:o,blockSelector:r,selectionCb:i}=e;let a=!0;const s=ip((()=>{const e=t.getSelection();if(!e||a&&(null==e?void 0:e.isCollapsed))return;a=e.isCollapsed||!1;const s=[],l=e.rangeCount||0;for(let t=0;t{}}(e),g=[];for(const v of e.plugins)g.push(v.observer(v.callback,n,v.options));return ip((()=>{ap.forEach((e=>e.reset())),null==o||o.disconnect(),r(),i(),a(),s(),l(),c(),u(),d(),p(),h(),f(),m(),g.forEach((e=>e()))}))}function vp(e){return void 0!==window[e]}function yp(e){return Boolean(void 0!==window[e]&&window[e].prototype&&"insertRule"in window[e].prototype&&"deleteRule"in window[e].prototype)}class bp{constructor(e){Fn(this,"iframeIdToRemoteIdMap",new WeakMap),Fn(this,"iframeRemoteIdToIdMap",new WeakMap),this.generateIdFn=e}getId(e,t,n,o){const r=n||this.getIdToRemoteIdMap(e),i=o||this.getRemoteIdToIdMap(e);let a=r.get(t);return a||(a=this.generateIdFn(),r.set(t,a),i.set(a,t)),a}getIds(e,t){const n=this.getIdToRemoteIdMap(e),o=this.getRemoteIdToIdMap(e);return t.map((t=>this.getId(e,t,n,o)))}getRemoteId(e,t,n){const o=n||this.getRemoteIdToIdMap(e);if("number"!=typeof t)return t;const r=o.get(t);return r||-1}getRemoteIds(e,t){const n=this.getRemoteIdToIdMap(e);return t.map((t=>this.getRemoteId(e,t,n)))}reset(e){if(!e)return this.iframeIdToRemoteIdMap=new WeakMap,void(this.iframeRemoteIdToIdMap=new WeakMap);this.iframeIdToRemoteIdMap.delete(e),this.iframeRemoteIdToIdMap.delete(e)}getIdToRemoteIdMap(e){let t=this.iframeIdToRemoteIdMap.get(e);return t||(t=new Map,this.iframeIdToRemoteIdMap.set(e,t)),t}getRemoteIdToIdMap(e){let t=this.iframeRemoteIdToIdMap.get(e);return t||(t=new Map,this.iframeRemoteIdToIdMap.set(e,t)),t}}class wp{constructor(e){Fn(this,"iframes",new WeakMap),Fn(this,"crossOriginIframeMap",new WeakMap),Fn(this,"crossOriginIframeMirror",new bp(bo)),Fn(this,"crossOriginIframeStyleMirror"),Fn(this,"crossOriginIframeRootIdMap",new WeakMap),Fn(this,"mirror"),Fn(this,"mutationCb"),Fn(this,"wrappedEmit"),Fn(this,"loadListener"),Fn(this,"stylesheetManager"),Fn(this,"recordCrossOriginIframes"),this.mutationCb=e.mutationCb,this.wrappedEmit=e.wrappedEmit,this.stylesheetManager=e.stylesheetManager,this.recordCrossOriginIframes=e.recordCrossOriginIframes,this.crossOriginIframeStyleMirror=new bp(this.stylesheetManager.styleMirror.generateId.bind(this.stylesheetManager.styleMirror)),this.mirror=e.mirror,this.recordCrossOriginIframes&&window.addEventListener("message",this.handleMessage.bind(this))}addIframe(e){this.iframes.set(e,!0),e.contentWindow&&this.crossOriginIframeMap.set(e.contentWindow,e)}addLoadListener(e){this.loadListener=e}attachIframe(e,t){var n,o;this.mutationCb({adds:[{parentId:this.mirror.getId(e),nextId:null,node:t}],removes:[],texts:[],attributes:[],isAttachIframe:!0}),this.recordCrossOriginIframes&&(null==(n=e.contentWindow)||n.addEventListener("message",this.handleMessage.bind(this))),null==(o=this.loadListener)||o.call(this,e),e.contentDocument&&e.contentDocument.adoptedStyleSheets&&e.contentDocument.adoptedStyleSheets.length>0&&this.stylesheetManager.adoptStyleSheets(e.contentDocument.adoptedStyleSheets,this.mirror.getId(e.contentDocument))}handleMessage(e){const t=e;if("rrweb"!==t.data.type||t.origin!==t.data.origin)return;if(!e.source)return;const n=this.crossOriginIframeMap.get(e.source);if(!n)return;const o=this.transformCrossOriginEvent(n,t.data.event);o&&this.wrappedEmit(o,t.data.isCheckout)}transformCrossOriginEvent(e,t){var n;switch(t.type){case qd.FullSnapshot:{this.crossOriginIframeMirror.reset(e),this.crossOriginIframeStyleMirror.reset(e),this.replaceIdOnNode(t.data.node,e);const n=t.data.node.id;return this.crossOriginIframeRootIdMap.set(e,n),this.patchRootIdOnNode(t.data.node,n),{timestamp:t.timestamp,type:qd.IncrementalSnapshot,data:{source:Wd.Mutation,adds:[{parentId:this.mirror.getId(e),nextId:null,node:t.data.node}],removes:[],texts:[],attributes:[],isAttachIframe:!0}}}case qd.Meta:case qd.Load:case qd.DomContentLoaded:return!1;case qd.Plugin:return t;case qd.Custom:return this.replaceIds(t.data.payload,e,["id","parentId","previousId","nextId"]),t;case qd.IncrementalSnapshot:switch(t.data.source){case Wd.Mutation:return t.data.adds.forEach((t=>{this.replaceIds(t,e,["parentId","nextId","previousId"]),this.replaceIdOnNode(t.node,e);const n=this.crossOriginIframeRootIdMap.get(e);n&&this.patchRootIdOnNode(t.node,n)})),t.data.removes.forEach((t=>{this.replaceIds(t,e,["parentId","id"])})),t.data.attributes.forEach((t=>{this.replaceIds(t,e,["id"])})),t.data.texts.forEach((t=>{this.replaceIds(t,e,["id"])})),t;case Wd.Drag:case Wd.TouchMove:case Wd.MouseMove:return t.data.positions.forEach((t=>{this.replaceIds(t,e,["id"])})),t;case Wd.ViewportResize:return!1;case Wd.MediaInteraction:case Wd.MouseInteraction:case Wd.Scroll:case Wd.CanvasMutation:case Wd.Input:return this.replaceIds(t.data,e,["id"]),t;case Wd.StyleSheetRule:case Wd.StyleDeclaration:return this.replaceIds(t.data,e,["id"]),this.replaceStyleIds(t.data,e,["styleId"]),t;case Wd.Font:return t;case Wd.Selection:return t.data.ranges.forEach((t=>{this.replaceIds(t,e,["start","end"])})),t;case Wd.AdoptedStyleSheet:return this.replaceIds(t.data,e,["id"]),this.replaceStyleIds(t.data,e,["styleIds"]),null==(n=t.data.styles)||n.forEach((t=>{this.replaceStyleIds(t,e,["styleId"])})),t}}return!1}replace(e,t,n,o){for(const r of o)(Array.isArray(t[r])||"number"==typeof t[r])&&(Array.isArray(t[r])?t[r]=e.getIds(n,t[r]):t[r]=e.getId(n,t[r]));return t}replaceIds(e,t,n){return this.replace(this.crossOriginIframeMirror,e,t,n)}replaceStyleIds(e,t,n){return this.replace(this.crossOriginIframeStyleMirror,e,t,n)}replaceIdOnNode(e,t){this.replaceIds(e,t,["id","rootId"]),"childNodes"in e&&e.childNodes.forEach((e=>{this.replaceIdOnNode(e,t)}))}patchRootIdOnNode(e,t){e.type===Jd.Document||e.rootId||(e.rootId=t),"childNodes"in e&&e.childNodes.forEach((e=>{this.patchRootIdOnNode(e,t)}))}}class kp{constructor(e){Fn(this,"shadowDoms",new WeakSet),Fn(this,"mutationCb"),Fn(this,"scrollCb"),Fn(this,"bypassOptions"),Fn(this,"mirror"),Fn(this,"restoreHandlers",[]),this.mutationCb=e.mutationCb,this.scrollCb=e.scrollCb,this.bypassOptions=e.bypassOptions,this.mirror=e.mirror,this.init()}init(){this.reset(),this.patchAttachShadow(Element,document)}addShadowRoot(e,t){if(!Qn(e))return;if(this.shadowDoms.has(e))return;this.shadowDoms.add(e);const n=lp({...this.bypassOptions,doc:t,mutationCb:this.mutationCb,mirror:this.mirror,shadowDomManager:this},e);this.restoreHandlers.push((()=>n.disconnect())),this.restoreHandlers.push(up({...this.bypassOptions,scrollCb:this.scrollCb,doc:e,mirror:this.mirror})),setTimeout((()=>{e.adoptedStyleSheets&&e.adoptedStyleSheets.length>0&&this.bypassOptions.stylesheetManager.adoptStyleSheets(e.adoptedStyleSheets,this.mirror.getId(wd.host(e))),this.restoreHandlers.push(mp({mirror:this.mirror,stylesheetManager:this.bypassOptions.stylesheetManager},e))}),0)}observeAttachShadow(e){e.contentWindow&&e.contentDocument&&this.patchAttachShadow(e.contentWindow.Element,e.contentDocument)}patchAttachShadow(e,t){const n=this;this.restoreHandlers.push(Ed(e.prototype,"attachShadow",(function(e){return function(o){const r=e.call(this,o),i=wd.shadowRoot(this);return i&&zd(this)&&n.addShadowRoot(i,t),r}})))}reset(){this.restoreHandlers.forEach((e=>{try{e()}catch(t){}})),this.restoreHandlers=[],this.shadowDoms=new WeakSet}}for(var xp="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Sp="undefined"==typeof Uint8Array?[]:new Uint8Array(256),Cp=0;Cp<64;Cp++)Sp[xp.charCodeAt(Cp)]=Cp;const Ip=new Map;const Ep=(e,t,n)=>{if(!e||!Lp(e,t)&&"object"!=typeof e)return;const o=function(e,t){let n=Ip.get(e);return n||(n=new Map,Ip.set(e,n)),n.has(t)||n.set(t,[]),n.get(t)}(n,e.constructor.name);let r=o.indexOf(e);return-1===r&&(r=o.length,o.push(e)),r};function Tp(e,t,n){if(e instanceof Array)return e.map((e=>Tp(e,t,n)));if(null===e)return e;if(e instanceof Float32Array||e instanceof Float64Array||e instanceof Int32Array||e instanceof Uint32Array||e instanceof Uint8Array||e instanceof Uint16Array||e instanceof Int16Array||e instanceof Int8Array||e instanceof Uint8ClampedArray){return{rr_type:e.constructor.name,args:[Object.values(e)]}}if(e instanceof ArrayBuffer){return{rr_type:e.constructor.name,base64:function(e){var t,n=new Uint8Array(e),o=n.length,r="";for(t=0;t>2],r+=xp[(3&n[t])<<4|n[t+1]>>4],r+=xp[(15&n[t+1])<<2|n[t+2]>>6],r+=xp[63&n[t+2]];return o%3==2?r=r.substring(0,r.length-1)+"=":o%3==1&&(r=r.substring(0,r.length-2)+"=="),r}(e)}}if(e instanceof DataView){return{rr_type:e.constructor.name,args:[Tp(e.buffer,t,n),e.byteOffset,e.byteLength]}}if(e instanceof HTMLImageElement){const t=e.constructor.name,{src:n}=e;return{rr_type:t,src:n}}if(e instanceof HTMLCanvasElement){return{rr_type:"HTMLImageElement",src:e.toDataURL()}}if(e instanceof ImageData){return{rr_type:e.constructor.name,args:[Tp(e.data,t,n),e.width,e.height]}}if(Lp(e,t)||"object"==typeof e){return{rr_type:e.constructor.name,index:Ep(e,t,n)}}return e}const Op=(e,t,n)=>e.map((e=>Tp(e,t,n))),Lp=(e,t)=>{const n=["WebGLActiveInfo","WebGLBuffer","WebGLFramebuffer","WebGLProgram","WebGLRenderbuffer","WebGLShader","WebGLShaderPrecisionFormat","WebGLTexture","WebGLUniformLocation","WebGLVertexArrayObject","WebGLVertexArrayObjectOES"].filter((e=>"function"==typeof t[e]));return Boolean(n.find((n=>e instanceof t[n])))};function Ap(e,t,n,o){const r=[];try{const i=Ed(e.HTMLCanvasElement.prototype,"getContext",(function(e){return function(r,...i){if(!Rd(this,t,n,!0)){const e=function(e){return"experimental-webgl"===e?"webgl":e}(r);if("__context"in this||(this.__context=e),o&&["webgl","webgl2"].includes(e))if(i[0]&&"object"==typeof i[0]){const e=i[0];e.preserveDrawingBuffer||(e.preserveDrawingBuffer=!0)}else i.splice(0,1,{preserveDrawingBuffer:!0})}return e.apply(this,[r,...i])}}));r.push(i)}catch{console.error("failed to patch HTMLCanvasElement.prototype.getContext")}return()=>{r.forEach((e=>e()))}}function Mp(e,t,n,o,r,i){const a=[],s=Object.getOwnPropertyNames(e);for(const l of s)if(!["isContextLost","canvas","drawingBufferWidth","drawingBufferHeight"].includes(l))try{if("function"!=typeof e[l])continue;const s=Ed(e,l,(function(e){return function(...a){const s=e.apply(this,a);if(Ep(s,i,this),"tagName"in this.canvas&&!Rd(this.canvas,o,r,!0)){const e=Op(a,i,this),o={type:t,property:l,args:e};n(this.canvas,o)}return s}}));a.push(s)}catch{const o=Id(e,l,{set(e){n(this.canvas,{type:t,property:l,args:[e],setter:!0})}});a.push(o)}return a}const Rp="KGZ1bmN0aW9uKCkgewogICJ1c2Ugc3RyaWN0IjsKICB2YXIgY2hhcnMgPSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7CiAgdmFyIGxvb2t1cCA9IHR5cGVvZiBVaW50OEFycmF5ID09PSAidW5kZWZpbmVkIiA/IFtdIDogbmV3IFVpbnQ4QXJyYXkoMjU2KTsKICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYXJzLmxlbmd0aDsgaSsrKSB7CiAgICBsb29rdXBbY2hhcnMuY2hhckNvZGVBdChpKV0gPSBpOwogIH0KICB2YXIgZW5jb2RlID0gZnVuY3Rpb24oYXJyYXlidWZmZXIpIHsKICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGFycmF5YnVmZmVyKSwgaTIsIGxlbiA9IGJ5dGVzLmxlbmd0aCwgYmFzZTY0ID0gIiI7CiAgICBmb3IgKGkyID0gMDsgaTIgPCBsZW47IGkyICs9IDMpIHsKICAgICAgYmFzZTY0ICs9IGNoYXJzW2J5dGVzW2kyXSA+PiAyXTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMl0gJiAzKSA8PCA0IHwgYnl0ZXNbaTIgKyAxXSA+PiA0XTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMiArIDFdICYgMTUpIDw8IDIgfCBieXRlc1tpMiArIDJdID4+IDZdOwogICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaTIgKyAyXSAmIDYzXTsKICAgIH0KICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgIj0iOwogICAgfSBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgIj09IjsKICAgIH0KICAgIHJldHVybiBiYXNlNjQ7CiAgfTsKICBjb25zdCBsYXN0QmxvYk1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7CiAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTsKICBhc3luYyBmdW5jdGlvbiBnZXRUcmFuc3BhcmVudEJsb2JGb3Iod2lkdGgsIGhlaWdodCwgZGF0YVVSTE9wdGlvbnMpIHsKICAgIGNvbnN0IGlkID0gYCR7d2lkdGh9LSR7aGVpZ2h0fWA7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBpZiAodHJhbnNwYXJlbnRCbG9iTWFwLmhhcyhpZCkpIHJldHVybiB0cmFuc3BhcmVudEJsb2JNYXAuZ2V0KGlkKTsKICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsKICAgICAgb2Zmc2NyZWVuLmdldENvbnRleHQoIjJkIik7CiAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCBvZmZzY3JlZW4uY29udmVydFRvQmxvYihkYXRhVVJMT3B0aW9ucyk7CiAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gYXdhaXQgYmxvYi5hcnJheUJ1ZmZlcigpOwogICAgICBjb25zdCBiYXNlNjQgPSBlbmNvZGUoYXJyYXlCdWZmZXIpOwogICAgICB0cmFuc3BhcmVudEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICByZXR1cm4gYmFzZTY0OwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuICIiOwogICAgfQogIH0KICBjb25zdCB3b3JrZXIgPSBzZWxmOwogIHdvcmtlci5vbm1lc3NhZ2UgPSBhc3luYyBmdW5jdGlvbihlKSB7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBjb25zdCB7IGlkLCBiaXRtYXAsIHdpZHRoLCBoZWlnaHQsIGRhdGFVUkxPcHRpb25zIH0gPSBlLmRhdGE7CiAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKAogICAgICAgIHdpZHRoLAogICAgICAgIGhlaWdodCwKICAgICAgICBkYXRhVVJMT3B0aW9ucwogICAgICApOwogICAgICBjb25zdCBvZmZzY3JlZW4gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpOwogICAgICBjb25zdCBjdHggPSBvZmZzY3JlZW4uZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgY3R4LmRyYXdJbWFnZShiaXRtYXAsIDAsIDApOwogICAgICBiaXRtYXAuY2xvc2UoKTsKICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IG9mZnNjcmVlbi5jb252ZXJ0VG9CbG9iKGRhdGFVUkxPcHRpb25zKTsKICAgICAgY29uc3QgdHlwZSA9IGJsb2IudHlwZTsKICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBhd2FpdCBibG9iLmFycmF5QnVmZmVyKCk7CiAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7CiAgICAgIGlmICghbGFzdEJsb2JNYXAuaGFzKGlkKSAmJiBhd2FpdCB0cmFuc3BhcmVudEJhc2U2NCA9PT0gYmFzZTY0KSB7CiAgICAgICAgbGFzdEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICAgIHJldHVybiB3b3JrZXIucG9zdE1lc3NhZ2UoeyBpZCB9KTsKICAgICAgfQogICAgICBpZiAobGFzdEJsb2JNYXAuZ2V0KGlkKSA9PT0gYmFzZTY0KSByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQgfSk7CiAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7CiAgICAgICAgaWQsCiAgICAgICAgdHlwZSwKICAgICAgICBiYXNlNjQsCiAgICAgICAgd2lkdGgsCiAgICAgICAgaGVpZ2h0CiAgICAgIH0pOwogICAgICBsYXN0QmxvYk1hcC5zZXQoaWQsIGJhc2U2NCk7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IGUuZGF0YS5pZCB9KTsKICAgIH0KICB9Owp9KSgpOwovLyMgc291cmNlTWFwcGluZ1VSTD1pbWFnZS1iaXRtYXAtZGF0YS11cmwtd29ya2VyLUlKcEM3Z19iLmpzLm1hcAo=",Pp="undefined"!=typeof window&&window.Blob&&new Blob([(Dp=Rp,Uint8Array.from(atob(Dp),(e=>e.charCodeAt(0))))],{type:"text/javascript;charset=utf-8"});var Dp;function Np(e){let t;try{if(t=Pp&&(window.URL||window.webkitURL).createObjectURL(Pp),!t)throw"";const n=new Worker(t,{name:null==e?void 0:e.name});return n.addEventListener("error",(()=>{(window.URL||window.webkitURL).revokeObjectURL(t)})),n}catch(n){return new Worker("data:text/javascript;base64,"+Rp,{name:null==e?void 0:e.name})}finally{t&&(window.URL||window.webkitURL).revokeObjectURL(t)}}class jp{constructor(e){Fn(this,"pendingCanvasMutations",new Map),Fn(this,"rafStamps",{latestId:0,invokeId:null}),Fn(this,"mirror"),Fn(this,"mutationCb"),Fn(this,"resetObservers"),Fn(this,"frozen",!1),Fn(this,"locked",!1),Fn(this,"processMutation",((e,t)=>{!(this.rafStamps.invokeId&&this.rafStamps.latestId!==this.rafStamps.invokeId)&&this.rafStamps.invokeId||(this.rafStamps.invokeId=this.rafStamps.latestId),this.pendingCanvasMutations.has(e)||this.pendingCanvasMutations.set(e,[]),this.pendingCanvasMutations.get(e).push(t)}));const{sampling:t="all",win:n,blockClass:o,blockSelector:r,recordCanvas:i,dataURLOptions:a}=e;this.mutationCb=e.mutationCb,this.mirror=e.mirror,i&&"all"===t&&this.initCanvasMutationObserver(n,o,r),i&&"number"==typeof t&&this.initCanvasFPSObserver(t,n,o,r,{dataURLOptions:a})}reset(){this.pendingCanvasMutations.clear(),this.resetObservers&&this.resetObservers()}freeze(){this.frozen=!0}unfreeze(){this.frozen=!1}lock(){this.locked=!0}unlock(){this.locked=!1}initCanvasFPSObserver(e,t,n,o,r){const i=Ap(t,n,o,!0),a=new Map,s=new Np;s.onmessage=e=>{const{id:t}=e.data;if(a.set(t,!1),!("base64"in e.data))return;const{base64:n,type:o,width:r,height:i}=e.data;this.mutationCb({id:t,type:Xd["2D"],commands:[{property:"clearRect",args:[0,0,r,i]},{property:"drawImage",args:[{rr_type:"ImageBitmap",args:[{rr_type:"Blob",data:[{rr_type:"ArrayBuffer",base64:n}],type:o}]},0,0]}]})};const l=1e3/e;let c,u=0;const d=e=>{u&&e-u{const e=[];return t.document.querySelectorAll("canvas").forEach((t=>{Rd(t,n,o,!0)||e.push(t)})),e})().forEach((async e=>{var t;const n=this.mirror.getId(e);if(a.get(n))return;if(0===e.width||0===e.height)return;if(a.set(n,!0),["webgl","webgl2"].includes(e.__context)){const n=e.getContext(e.__context);!1===(null==(t=null==n?void 0:n.getContextAttributes())?void 0:t.preserveDrawingBuffer)&&n.clear(n.COLOR_BUFFER_BIT)}const o=await createImageBitmap(e);s.postMessage({id:n,bitmap:o,width:e.width,height:e.height,dataURLOptions:r.dataURLOptions},[o])}))),c=requestAnimationFrame(d)};c=requestAnimationFrame(d),this.resetObservers=()=>{i(),cancelAnimationFrame(c)}}initCanvasMutationObserver(e,t,n){this.startRAFTimestamping(),this.startPendingCanvasMutationFlusher();const o=Ap(e,t,n,!1),r=function(e,t,n,o){const r=[],i=Object.getOwnPropertyNames(t.CanvasRenderingContext2D.prototype);for(const a of i)try{if("function"!=typeof t.CanvasRenderingContext2D.prototype[a])continue;const i=Ed(t.CanvasRenderingContext2D.prototype,a,(function(r){return function(...i){return Rd(this.canvas,n,o,!0)||setTimeout((()=>{const n=Op(i,t,this);e(this.canvas,{type:Xd["2D"],property:a,args:n})}),0),r.apply(this,i)}}));r.push(i)}catch{const n=Id(t.CanvasRenderingContext2D.prototype,a,{set(t){e(this.canvas,{type:Xd["2D"],property:a,args:[t],setter:!0})}});r.push(n)}return()=>{r.forEach((e=>e()))}}(this.processMutation.bind(this),e,t,n),i=function(e,t,n,o){const r=[];return r.push(...Mp(t.WebGLRenderingContext.prototype,Xd.WebGL,e,n,o,t)),void 0!==t.WebGL2RenderingContext&&r.push(...Mp(t.WebGL2RenderingContext.prototype,Xd.WebGL2,e,n,o,t)),()=>{r.forEach((e=>e()))}}(this.processMutation.bind(this),e,t,n);this.resetObservers=()=>{o(),r(),i()}}startPendingCanvasMutationFlusher(){requestAnimationFrame((()=>this.flushPendingCanvasMutations()))}startRAFTimestamping(){const e=t=>{this.rafStamps.latestId=t,requestAnimationFrame(e)};requestAnimationFrame(e)}flushPendingCanvasMutations(){this.pendingCanvasMutations.forEach(((e,t)=>{const n=this.mirror.getId(t);this.flushPendingCanvasMutationFor(t,n)})),requestAnimationFrame((()=>this.flushPendingCanvasMutations()))}flushPendingCanvasMutationFor(e,t){if(this.frozen||this.locked)return;const n=this.pendingCanvasMutations.get(e);if(!n||-1===t)return;const o=n.map((e=>{const{type:t,...n}=e;return n})),{type:r}=n[0];this.mutationCb({id:t,type:r,commands:o}),this.pendingCanvasMutations.delete(e)}}class Fp{constructor(e){Fn(this,"trackedLinkElements",new WeakSet),Fn(this,"mutationCb"),Fn(this,"adoptedStyleSheetCb"),Fn(this,"styleMirror",new _d),this.mutationCb=e.mutationCb,this.adoptedStyleSheetCb=e.adoptedStyleSheetCb}attachLinkElement(e,t){"_cssText"in t.attributes&&this.mutationCb({adds:[],removes:[],texts:[],attributes:[{id:t.id,attributes:t.attributes}]}),this.trackLinkElement(e)}trackLinkElement(e){this.trackedLinkElements.has(e)||(this.trackedLinkElements.add(e),this.trackStylesheetInLinkElement(e))}adoptStyleSheets(e,t){if(0===e.length)return;const n={id:t,styleIds:[]},o=[];for(const r of e){let e;this.styleMirror.has(r)?e=this.styleMirror.getId(r):(e=this.styleMirror.add(r),o.push({styleId:e,rules:Array.from(r.rules||CSSRule,((e,t)=>({rule:to(e,r.href),index:t})))})),n.styleIds.push(e)}o.length>0&&(n.styles=o),this.adoptedStyleSheetCb(n)}reset(){this.styleMirror.reset(),this.trackedLinkElements=new WeakSet}trackStylesheetInLinkElement(e){}}class Bp{constructor(){Fn(this,"nodeMap",new WeakMap),Fn(this,"active",!1)}inOtherBuffer(e,t){const n=this.nodeMap.get(e);return n&&Array.from(n).some((e=>e!==t))}add(e,t){this.active||(this.active=!0,requestAnimationFrame((()=>{this.nodeMap=new WeakMap,this.active=!1}))),this.nodeMap.set(e,(this.nodeMap.get(e)||new Set).add(t))}destroy(){}}let _p,Up,Hp,zp=!1;try{if(2!==Array.from([1],(e=>2*e))[0]){const e=document.createElement("iframe");document.body.appendChild(e),Array.from=(null==(Nn=e.contentWindow)?void 0:Nn.Array.from)||Array.from,document.body.removeChild(e)}}catch(Gm){console.debug("Unable to override Array.from",Gm)}const qp=new no;function Wp(e={}){const{emit:t,checkoutEveryNms:n,checkoutEveryNth:o,blockClass:r="rr-block",blockSelector:i=null,ignoreClass:a="rr-ignore",ignoreSelector:s=null,maskTextClass:l="rr-mask",maskTextSelector:c=null,inlineStylesheet:u=!0,maskAllInputs:d,maskInputOptions:p,slimDOMOptions:h,maskInputFn:f,maskTextFn:m,hooks:g,packFn:v,sampling:y={},dataURLOptions:b={},mousemoveWait:w,recordDOM:k=!0,recordCanvas:x=!1,recordCrossOriginIframes:S=!1,recordAfter:C=("DOMContentLoaded"===e.recordAfter?e.recordAfter:"load"),userTriggeredOnInput:I=!1,collectFonts:E=!1,inlineImages:T=!1,plugins:O,keepIframeSrcFn:L=(()=>!1),ignoreCSSAttributes:A=new Set([]),errorHandler:M}=e;rp=M;const R=!S||window.parent===window;let P=!1;if(!R)try{window.parent.document&&(P=!1)}catch(G){P=!0}if(R&&!t)throw new Error("emit function is required");if(!R&&!P)return()=>{};void 0!==w&&void 0===y.mousemove&&(y.mousemove=w),qp.reset();const D=!0===d?{color:!0,date:!0,"datetime-local":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0,password:!0}:void 0!==p?p:{password:!0},N=!0===h||"all"===h?{script:!0,comment:!0,headFavicon:!0,headWhitespace:!0,headMetaSocial:!0,headMetaRobots:!0,headMetaHttpEquiv:!0,headMetaVerification:!0,headMetaAuthorship:"all"===h,headMetaDescKeywords:"all"===h,headTitleMutations:"all"===h}:h||{};let j;!function(e=window){"NodeList"in e&&!e.NodeList.prototype.forEach&&(e.NodeList.prototype.forEach=Array.prototype.forEach),"DOMTokenList"in e&&!e.DOMTokenList.prototype.forEach&&(e.DOMTokenList.prototype.forEach=Array.prototype.forEach)}();let F=0;const B=e=>{for(const t of O||[])t.eventProcessor&&(e=t.eventProcessor(e));return v&&!P&&(e=v(e)),e};_p=(e,r)=>{var i;const a=e;if(a.timestamp=Td(),!(null==(i=ap[0])?void 0:i.isFrozen())||a.type===qd.FullSnapshot||a.type===qd.IncrementalSnapshot&&a.data.source===Wd.Mutation||ap.forEach((e=>e.unfreeze())),R)null==t||t(B(a),r);else if(P){const e={type:"rrweb",event:B(a),origin:window.location.origin,isCheckout:r};window.parent.postMessage(e,"*")}if(a.type===qd.FullSnapshot)j=a,F=0;else if(a.type===qd.IncrementalSnapshot){if(a.data.source===Wd.Mutation&&a.data.isAttachIframe)return;F++;const e=o&&F>=o,t=n&&a.timestamp-j.timestamp>n;(e||t)&&Up(!0)}};const _=e=>{_p({type:qd.IncrementalSnapshot,data:{source:Wd.Mutation,...e}})},U=e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.Scroll,...e}}),H=e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.CanvasMutation,...e}}),z=new Fp({mutationCb:_,adoptedStyleSheetCb:e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.AdoptedStyleSheet,...e}})}),q=new wp({mirror:qp,mutationCb:_,stylesheetManager:z,recordCrossOriginIframes:S,wrappedEmit:_p});for(const Y of O||[])Y.getMirror&&Y.getMirror({nodeMirror:qp,crossOriginIframeMirror:q.crossOriginIframeMirror,crossOriginIframeStyleMirror:q.crossOriginIframeStyleMirror});const W=new Bp;Hp=new jp({recordCanvas:x,mutationCb:H,win:window,blockClass:r,blockSelector:i,mirror:qp,sampling:y.canvas,dataURLOptions:b});const V=new kp({mutationCb:_,scrollCb:U,bypassOptions:{blockClass:r,blockSelector:i,maskTextClass:l,maskTextSelector:c,inlineStylesheet:u,maskInputOptions:D,dataURLOptions:b,maskTextFn:m,maskInputFn:f,recordCanvas:x,inlineImages:T,sampling:y,slimDOMOptions:N,iframeManager:q,stylesheetManager:z,canvasManager:Hp,keepIframeSrcFn:L,processedNodeManager:W},mirror:qp});Up=(e=!1)=>{if(!k)return;_p({type:qd.Meta,data:{href:window.location.href,width:Ad(),height:Ld()}},e),z.reset(),V.init(),ap.forEach((e=>e.lock()));const t=function(e,t){const{mirror:n=new no,blockClass:o="rr-block",blockSelector:r=null,maskTextClass:i="rr-mask",maskTextSelector:a=null,inlineStylesheet:s=!0,inlineImages:l=!1,recordCanvas:c=!1,maskAllInputs:u=!1,maskTextFn:d,maskInputFn:p,slimDOM:h=!1,dataURLOptions:f,preserveWhiteSpace:m,onSerialize:g,onIframeLoad:v,iframeLoadTimeout:y,onStylesheetLoad:b,stylesheetLoadTimeout:w,keepIframeSrcFn:k=(()=>!1)}=t||{};return Do(e,{doc:e,mirror:n,blockClass:o,blockSelector:r,maskTextClass:i,maskTextSelector:a,skipChild:!1,inlineStylesheet:s,maskInputOptions:!0===u?{color:!0,date:!0,"datetime-local":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0,password:!0}:!1===u?{password:!0}:u,maskTextFn:d,maskInputFn:p,slimDOMOptions:!0===h||"all"===h?{script:!0,comment:!0,headFavicon:!0,headWhitespace:!0,headMetaDescKeywords:"all"===h,headMetaSocial:!0,headMetaRobots:!0,headMetaHttpEquiv:!0,headMetaAuthorship:!0,headMetaVerification:!0}:!1===h?{}:h,dataURLOptions:f,inlineImages:l,recordCanvas:c,preserveWhiteSpace:m,onSerialize:g,onIframeLoad:v,iframeLoadTimeout:y,onStylesheetLoad:b,stylesheetLoadTimeout:w,keepIframeSrcFn:k,newlyAddedElement:!1})}(document,{mirror:qp,blockClass:r,blockSelector:i,maskTextClass:l,maskTextSelector:c,inlineStylesheet:u,maskAllInputs:D,maskTextFn:m,maskInputFn:f,slimDOM:N,dataURLOptions:b,recordCanvas:x,inlineImages:T,onSerialize:e=>{jd(e,qp)&&q.addIframe(e),Fd(e,qp)&&z.trackLinkElement(e),Bd(e)&&V.addShadowRoot(wd.shadowRoot(e),document)},onIframeLoad:(e,t)=>{q.attachIframe(e,t),V.observeAttachShadow(e)},onStylesheetLoad:(e,t)=>{z.attachLinkElement(e,t)},keepIframeSrcFn:L});if(!t)return console.warn("Failed to snapshot the document");_p({type:qd.FullSnapshot,data:{node:t,initialOffset:Od(window)}},e),ap.forEach((e=>e.unlock())),document.adoptedStyleSheets&&document.adoptedStyleSheets.length>0&&z.adoptStyleSheets(document.adoptedStyleSheets,qp.getId(document))};try{const e=[],t=e=>{var t;return ip(gp)({mutationCb:_,mousemoveCb:(e,t)=>_p({type:qd.IncrementalSnapshot,data:{source:t,positions:e}}),mouseInteractionCb:e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.MouseInteraction,...e}}),scrollCb:U,viewportResizeCb:e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.ViewportResize,...e}}),inputCb:e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.Input,...e}}),mediaInteractionCb:e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.MediaInteraction,...e}}),styleSheetRuleCb:e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.StyleSheetRule,...e}}),styleDeclarationCb:e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.StyleDeclaration,...e}}),canvasMutationCb:H,fontCb:e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.Font,...e}}),selectionCb:e=>{_p({type:qd.IncrementalSnapshot,data:{source:Wd.Selection,...e}})},customElementCb:e=>{_p({type:qd.IncrementalSnapshot,data:{source:Wd.CustomElement,...e}})},blockClass:r,ignoreClass:a,ignoreSelector:s,maskTextClass:l,maskTextSelector:c,maskInputOptions:D,inlineStylesheet:u,sampling:y,recordDOM:k,recordCanvas:x,inlineImages:T,userTriggeredOnInput:I,collectFonts:E,doc:e,maskInputFn:f,maskTextFn:m,keepIframeSrcFn:L,blockSelector:i,slimDOMOptions:N,dataURLOptions:b,mirror:qp,iframeManager:q,stylesheetManager:z,shadowDomManager:V,processedNodeManager:W,canvasManager:Hp,ignoreCSSAttributes:A,plugins:(null==(t=null==O?void 0:O.filter((e=>e.observer)))?void 0:t.map((e=>({observer:e.observer,options:e.options,callback:t=>_p({type:qd.Plugin,data:{plugin:e.name,payload:t}})}))))||[]},g)};q.addLoadListener((n=>{try{e.push(t(n.contentDocument))}catch(o){console.warn(o)}}));const n=()=>{Up(),e.push(t(document)),zp=!0};return"interactive"===document.readyState||"complete"===document.readyState?n():(e.push(kd("DOMContentLoaded",(()=>{_p({type:qd.DomContentLoaded,data:{}}),"DOMContentLoaded"===C&&n()}))),e.push(kd("load",(()=>{_p({type:qd.Load,data:{}}),"load"===C&&n()}),window))),()=>{e.forEach((e=>e())),W.destroy(),zp=!1,rp=void 0}}catch(X){console.warn(X)}}var Vp,Gp;function Xp(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return Yp(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Yp(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0,r=function(){};return{s:r,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){s=!0,i=e},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw i}}}}function Yp(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n{if(!zp)throw new Error("please add custom event after start recording");_p({type:qd.Custom,data:{tag:e,payload:t}})},Wp.freezePage=()=>{ap.forEach((e=>e.freeze()))},Wp.takeFullSnapshot=e=>{if(!zp)throw new Error("please take full snapshot after start recording");Up(e)},Wp.mirror=qp,(Gp=Vp||(Vp={}))[Gp.NotStarted=0]="NotStarted",Gp[Gp.Running=1]="Running",Gp[Gp.Stopped=2]="Stopped";var th=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),Qp(this,"startDate",void 0),Qp(this,"events",[]),Qp(this,"bufferSize",0),Qp(this,"stopFunction",void 0),Qp(this,"customOptions",{})}var t,n,o;return t=e,o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],(n=[{key:"setOptions",value:function(e){this.customOptions=e}},{key:"start",value:function(){this.stop(),this.startDate=Date.now();var e=this.events;try{this.stopFunction=Wp(Zp(Zp(Zp({},{inlineStylesheet:!0,blockClass:"gl-block",ignoreClass:"gl-ignore",maskTextClass:"gl-mask",dataURLOptions:{quality:.7},recordCanvas:!1,sampling:{scroll:150,mouseInteraction:{MouseUp:!1,MouseDown:!1,Click:!0,ContextMenu:!0,DblClick:!0,Focus:!0,Blur:!0,TouchStart:!0,TouchEnd:!1}},collectFonts:!1,recordCrossOriginIframes:!1}),this.customOptions),{},{emit:function(t){var n=function(e){var t=JSON.stringify(e);if(t.length>4e6){var n,o=/data:([\w\/\-\.]+);(\w+),([^)"]*)/gim,r=Xp(t.matchAll(o));try{for(r.s();!(n=r.n()).done;){var i=n.value;t="image/"===i[1].toLocaleLowerCase().slice(0,6)?t.replace(i[0],"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAQSURBVHgBAQUA+v8ABRg5/wHSAVZN1mnaAAAAAElFTkSuQmCC"):t.replace(i[0],"")}}catch(Gm){r.e(Gm)}finally{r.f()}}return{event:JSON.parse(t),size:t.length}}(t).event;e.push(n)}}))}catch(t){console.error(t)}}},{key:"stop",value:function(){this.stopFunction&&this.stopFunction(),this.startDate=void 0,this.events=[],this.bufferSize=0}},{key:"getReplayData",value:function(){return{startDate:this.startDate,events:this.events,baseUrl:window.location.origin,width:window.innerWidth,height:window.innerHeight,isMobile:w(),type:"rrweb"}}}])&&$p(t.prototype,n),o&&$p(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function nh(e){return nh="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},nh(e)}function oh(e,t){for(var n=0;nthis.startPoint.x&&(r=this.startPoint.x),t.y>this.startPoint.y&&(i=this.startPoint.y),this.path.setAttributeNS(null,"x",r),this.path.setAttributeNS(null,"y",i),this.path.setAttributeNS(null,"width",n),this.path.setAttributeNS(null,"height",o)}}},{key:"mouseDownRect",value:function(e){this.path=document.createElementNS("http://www.w3.org/2000/svg","rect"),this.path.setAttribute("fill","none"),this.path.setAttribute("stroke",this.color),this.path.setAttribute("stroke-linecap","round"),this.path.setAttribute("stroke-width",this.strokeWidthRect),this.startPoint=this.getMousePosition(e),this.appendPathToSvg(this.path)}},{key:"mouseDownPen",value:function(e){var t=this.color+"AA",n=this.strokeWidth;"blur"===this.tool&&(t="#000000",n=40),this.path=document.createElementNS("http://www.w3.org/2000/svg","path"),this.path.setAttribute("fill","none"),this.path.setAttribute("stroke",t),this.path.setAttribute("stroke-linecap","round"),this.path.setAttribute("stroke-width",n),this.buffer=[];var o=this.getMousePosition(e);this.appendToBuffer(o),this.strPath="M"+o.x+" "+o.y,this.path.setAttribute("d",this.strPath),this.appendPathToSvg(this.path)}},{key:"setTool",value:function(e){this.tool=e}},{key:"setColor",value:function(e){this.color=e}},{key:"getMousePosition",value:function(e){return e.touches&&e.touches.length>0?{x:e.touches[0].clientX,y:e.touches[0].clientY}:{x:e.clientX,y:e.clientY}}},{key:"getAveragePoint",value:function(e){var t=this.buffer.length;if(t%2==1||t>=this.bufferSize){var n,o,r=0,i=0,a=0;for(o=e;othis.bufferSize;)this.buffer.shift()}},{key:"appendPathToSvg",value:function(e){this.svgElement.appendChild(e),this.pathBuffer.push(e),this.rerender()}},{key:"removeLastAddedPathFromSvg",value:function(){this.pathBuffer.length<=0||!this.svgElement||(this.svgElement.removeChild(this.pathBuffer[this.pathBuffer.length-1]),this.pathBuffer.pop(),this.rerender())}},{key:"fadeOutToolbar",value:function(){var e=document.querySelector(".bb-capture-toolbar");e&&(e.style.opacity=0,e.style.pointerEvents="none")}},{key:"fadeInToolbar",value:function(){var e=document.querySelector(".bb-capture-toolbar");e&&(e.style.opacity=1,e.style.pointerEvents="auto")}}],n&&oh(t.prototype,n),o&&oh(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function sh(e){return sh="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},sh(e)}function lh(e,t){for(var n=0;n\n \n
'.concat(p("dismiss"),"
\n
").concat(p("rect"),'
\n
\n
\n ').concat(p("drag"),"\n
\n ").concat("capture"===this.type?'
\n '.concat(p("recorderon"),"\n ").concat(p("recorderoff"),'\n \n
\n
\n ').concat(p("mic"),'\n \n
\n
2:00
\n
\n
\n ').concat(p("pointer"),"\n
"):"",'\n
\n ').concat(p("rect"),'\n
\n
\n ').concat(p("pen"),'\n
\n
\n ').concat(p("blur"),'\n
\n
\n
\n ').concat(kh.translateText("pickAColor"),'\n
\n
\n ').concat(p("undo"),'\n ').concat(kh.translateText("undo"),"\n
\n ").concat("capture"!==this.type?'
'.concat(kh.translateText("next"),"
"):"",'\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
').concat(kh.translateText("retry"),'
\n
').concat(kh.translateText("next"),"
\n
\n
\n
\n "),document.body.appendChild(e),e.setAttribute("dir",kh.getInstance().isRTLLayout?"rtl":"ltr")}},{key:"unregisterListeners",value:function(){this.escListener&&document.removeEventListener("keydown",this.escListener),this.pageLeaveListener&&window.removeEventListener("beforeunload",this.pageLeaveListener)}},{key:"registerListeners",value:function(){var e=this;this.escListener=function(t){var n=!1,o=!1;"key"in(t=t||window.event)&&(n="Escape"===t.key,o="Enter"===t.key),n&&e.dismiss(),"screenshot"===e.type&&o&&e.showNextStep()},document.addEventListener("keydown",this.escListener),this.pageLeaveListener=function(e){e.preventDefault(),e.returnValue=""},window.addEventListener("beforeunload",this.pageLeaveListener)}},{key:"show",value:function(e){this.callback=e,this.registerListeners(),this.hideWidgetUI(),this.createEditorUI(),this.setupMousePointer(),"screenshot"===this.type?(Wm.getInstance().setGlobalDataItem("snapshotPosition",{x:window.scrollX,y:window.scrollY}),dh.disableScroll()):this.setupScreenRecording(),this.screenDrawer=new ah(this.captureScreenDrawerRerender.bind(this)),this.setupColorPicker(),this.setupToolbar()}},{key:"setupColorPicker",value:function(){for(var t=this,n=document.querySelector(".bb-capture-toolbar-item-selectedcolor"),o=document.querySelectorAll(".bb-capture-toolbar-item-color"),r=document.querySelector(".bb-capture-toolbar-item-colorpicker"),i=function(){var i=o[a],s=i.getAttribute("data-color");i.style.backgroundColor=s,i.onclick=function(){i&&(t.screenDrawer.setColor(s),r&&(r.style.display="none"),n.style.backgroundColor=i.style.backgroundColor,e.setPenColor(s))}},a=0;a0?o.classList.remove(e):o.classList.add(e))}}},{key:"captureRenderer",value:function(){if(this.screenRecorder){this.screenRecorder.file&&Wm.getInstance().setGlobalDataItem("screenRecordingData",this.screenRecorder.file);var e="bb-capture-editor-item-inactive",t=document.querySelector(".bb-capture-toolbar-item-timer"),n=document.querySelectorAll(".bb-capture-toolbar-item"),o=document.querySelector(".bb-tooltip-screen-recording"),r=document.querySelector(".bb-tooltip-audio-recording"),i=document.querySelector(".bb-capture-editor"),a="bb-capture-editor-recording",s="bb-capture-editor-notrecording";this.screenRecorder.isRecording?(i.classList.add(a),i.classList.remove(s)):(i.classList.add(s),i.classList.remove(a));var l=document.querySelector(".bb-capture-toolbar");document.querySelector(".bb-capture-preview").style.display=this.screenRecorder.file?"flex":"none",l.style.display=this.screenRecorder.file?"none":"flex";for(var c=0;c0){var t=e.filter((function(e){return new Date(e.createdAt)>new Date(Date.now()-36e5)}));t.length>2?this.notifications=t.splice(0,t.length-2):this.notifications=t,this.renderNotifications()}}catch(n){}}},{key:"setNotificationCount",value:function(e){this.unreadCount=e,this.updateTabBarNotificationCount(),a.getInstance().updateNotificationBadge(this.unreadCount)}},{key:"showNotification",value:function(e){this.notificationContainer&&e&&e.data&&(this.notifications.find((function(t){return e.outbound===t.outbound}))||(this.notifications.push(e),e.sound&&tf.ping()),this.notifications.length>2&&this.notifications.shift(),I(this.unreadNotificationsKey,this.notifications),this.renderNotifications())}},{key:"renderNotifications",value:function(){var e=this;if(this.notificationContainer){this.clearAllNotifications(!0);var t=document.createElement("div");t.onclick=function(){e.clearAllNotifications(),e.currentNewsIndex=0},t.className="gleap-notification-close",t.innerHTML=p("dismiss"),this.notificationContainer.appendChild(t);var n=this.notifications.filter((function(e){return e.data.news})).sort((function(e,t){return new Date(e.createdAt)-new Date(t.createdAt)})),o=this.notifications.filter((function(e){return!e.data.news}));if(n.length>0){var r=this.currentNewsIndex1){var m=document.createElement("div");m.className="gleap-news-pagination";var g=document.createElement("span");g.className="gleap-news-page-indicator",g.innerText="".concat(r+1," / ").concat(n.length),m.appendChild(g);var v=document.createElement("button");v.className="gleap-news-next-button",r\n
\n
\n '.concat(t.data.text,'\n
\n
\n
\n
\n
\n \n \n \n ').concat(t.data.nextStepTitle,"\n
\n
\n ")}else r.className="gleap-notification-item",r.innerHTML="\n ".concat(t.data.sender&&t.data.sender.profileImageUrl&&''),'\n
\n ').concat(t.data.sender?'
\n '.concat(t.data.sender.name,"\n
"):"",'\n
').concat(n,"
\n
");e.notificationContainer.appendChild(r)},b=0;b0||o.length>0||this.clearAllNotifications(!0)}}},{key:"openNews",value:function(e){e.data.news?Wm.openNewsArticle(e.data.news.id,!0):Wm.open()}},{key:"renderDescription",value:function(e){var t=e.data,n=t.previewText,o=t.sender;return n&&n.length>0?n:o?'\n
\n '.concat(o.profileImageUrl?'').concat(o.name,''):"","\n ").concat(o.name,"\n
\n "):""}},{key:"clearAllNotifications",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(this.notificationContainer)for(e||(this.notifications=[],this.currentNewsIndex=0,I(this.unreadNotificationsKey,this.notifications));this.notificationContainer.firstChild;)this.notificationContainer.removeChild(this.notificationContainer.firstChild)}},{key:"updateContainerStyle",value:function(){if(this.notificationContainer){var e=dt.getInstance().getFlowConfig(),t="gleap-notification-container--left",n="gleap-notification-container--no-button";this.notificationContainer.classList.remove(t),this.notificationContainer.classList.remove(n),e.feedbackButtonPosition!==a.FEEDBACK_BUTTON_CLASSIC_LEFT&&e.feedbackButtonPosition!==a.FEEDBACK_BUTTON_BOTTOM_LEFT||this.notificationContainer.classList.add(t),null===a.getInstance().buttonHidden?e.feedbackButtonPosition===a.FEEDBACK_BUTTON_NONE&&this.notificationContainer.classList.add(n):a.getInstance().buttonHidden&&this.notificationContainer.classList.add(n),this.notificationContainer.setAttribute("dir",kh.getInstance().isRTLLayout?"rtl":"ltr")}}}],o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],n&&Ph(t.prototype,n),o&&Ph(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Fh(e){return Fh="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Fh(e)}function Bh(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function _h(e){for(var t=1;t'),document.body.appendChild(t),this.bannerContainer=t}},{key:"sendMessage",value:function(e){try{var t=document.querySelector(".gleap-b-frame");t&&t.contentWindow&&t.contentWindow.postMessage(JSON.stringify(_h(_h({},e),{},{type:"banner"})),"*")}catch(n){}}},{key:"showBanner",value:function(e){this.injectBannerUI(e)}}])&&Uh(t.prototype,n),o&&Uh(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Wh(e){return Wh="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Wh(e)}function Vh(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Gh(e){for(var t=1;t\n
\n \n
\n '),document.body.appendChild(n),this.modalContainer=n,this.modalBackdropClickListener=this.modalContainer.querySelector(".gleap-modal-backdrop").addEventListener("click",(function(){var e,n;(null===(e=null===(n=t.modalData)||void 0===n?void 0:n.showCloseButton)||void 0===e||e)&&t.hideModal()})),document.body.classList.add("gleap-modal-open")}},{key:"_postMessage",value:function(e){try{var t=this.modalContainer.querySelector(".gleap-modal-frame");null!=t&&t.contentWindow&&t.contentWindow.postMessage(JSON.stringify(Gh(Gh({},e),{},{type:"modal"})),this.modalUrl)}catch(Gm){}}},{key:"showModal",value:function(e){e&&e.config&&this._injectModalUI(e.config)}},{key:"hideModal",value:function(){this.modalContainer&&(this.modalBackdropClickListener&&this.modalContainer.querySelector(".gleap-modal-backdrop").removeEventListener("click",this.modalBackdropClickListener),document.body.removeChild(this.modalContainer),this.modalContainer=null,document.body.classList.remove("gleap-modal-open"))}}])&&Xh(t.prototype,n),o&&Xh(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Zh(e){return Zh="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Zh(e)}function $h(e,t){for(var n=0;n=a-i;++s)n[i]=t[s],uf(e,t,n,s+1,r,i+1,a);else e.push(n.slice(0,i).join(""))}function df(e){return function(e){if(Array.isArray(e))return pf(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return pf(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return pf(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function pf(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){s=!0,i=e},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw i}}}}function bf(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n1&&void 0!==arguments[1]?arguments[1]:["id","class","length"];return df(e.attributes).reduce((function(e,n){return t.indexOf(n.nodeName)>-1||e.push("[".concat(n.nodeName,'="').concat(n.value,'"]')),e}),[])}(e,n)},Class:cf,ID:lf};return t.reduce((function(t,n){return t[n]=o[n](e),t}),{})}function kf(e,t){try{var n=e.parentNode.querySelectorAll(t);return 1===n.length&&n[0]===e}catch(o){return!1}}function xf(e,t){return t.find(kf.bind(null,e))}function Sf(e,t,n){var o=function(e,t){for(var n=[],o=e.length,r=[],i=1;i<=t;++i)uf(n,e,r,0,o-1,0,i);return n}(t,3),r=xf(e,o);return Boolean(r)||Boolean(n)&&(r=xf(e,o=o.map((function(e){return n+e}))),Boolean(r))?r:null}function Cf(e,t,n,o){var r,i=wf(e,t,n);o&&o instanceof RegExp&&(i.ID=o.test(i.ID)?null:i.ID,i.Class=i.Class.filter((function(e){return!o.test(e)})));var a,s=yf(t);try{for(s.s();!(a=s.n()).done;){var l=a.value,c=i.ID,u=i.Tag,d=i.Class,p=i.Attributes,h=i.NthChild;switch(l){case"ID":if(Boolean(c)&&kf(e,c))return c;break;case"Tag":if(Boolean(u)&&kf(e,u))return u;break;case"Class":if(Boolean(d)&&d.length&&(r=Sf(e,d,u)))return r;break;case"Attributes":if(Boolean(p)&&p.length&&(r=Sf(e,p,u)))return r;break;case"NthChild":if(Boolean(h))return h}}}catch(Gm){s.e(Gm)}finally{s.f()}return"*"}function If(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=n.selectorTypes,r=void 0===o?["ID","Class","Tag","NthChild"]:o,i=n.attributesToIgnore,a=void 0===i?["id","class","length"]:i,s=n.excludeRegex,l=void 0===s?null:s,c=[],u=function(e){for(var t=[],n=e;ff(n);)t.push(n),n=n.parentNode;return t}(e),d=yf(u);try{for(d.s();!(t=d.n()).done;){var p=Cf(t.value,r,a,l);Boolean(p)&&c.push(p)}}catch(Gm){d.e(Gm)}finally{d.f()}for(var h=[],f=0,m=c;f ");if(vf(e,v))return v}return null}function Ef(e){return Ef="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ef(e)}function Tf(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Of(e,t){for(var n=0;n0&&void 0!==arguments[0]&&arguments[0])||o(t.gleapCollapseUI,e)&&o(t.gleapFrameContainer,n))&&(t.gleapCollapseUI&&t.gleapCollapseUI.classList.toggle(e),t.gleapFrameContainer&&t.gleapFrameContainer.classList.toggle(n))})),Wf(this,"injectCollapseUI",(function(){if(!t.injectedCollapseUI){t.injectedCollapseUI=!0;var e=document.createElement("div");e.className="gleap-admin-collapse-ui",e.innerHTML='
\n '.concat(p("arrowdown"),"\n
"),document.body.appendChild(e),t.gleapCollapseUI=e,e.addEventListener("click",(function(e){e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t.toggleCollapseUI()}))}})),Wf(this,"injectFrame",(function(){var e;if(!t.injectedFrame){t.injectedFrame=!0;var n=document.createElement("div");n.className="gleap-admin-frame-container",n.innerHTML=''),document.body.appendChild(n),t.gleapFrameContainer=n,t.gleapFrame=document.querySelector(".gleap-admin-frame")}}))}var t,n,o;return t=e,o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],(n=[{key:"logCurrentPage",value:function(){var e=window.location.href;e&&e!==this.lastUrl&&(this.lastUrl=e,this.sendMessageToTourBuilder({name:"page-changed",data:{page:e}}))}},{key:"startPageListener",value:function(){var e=this;setInterval((function(){e.logCurrentPage()}),1e3)}},{key:"initAdminHelper",value:function(){var e=this;wm.getInstance().disable(),e.adminHelper=new _f;try{e.adminHelper.onElementPicked=function(t){e.toggleCollapseUI(!0),e.sendMessageToTourBuilder({name:"element-picked",data:{selector:t}})}}catch(t){console.log(t)}e.injectFrame(),e.injectCollapseUI(),e.setFrameHeight("loading")}},{key:"setFrameHeight",value:function(e){if(this.gleapFrameContainer){var t="";t="picker"===e||"navigate"===e?"65px":"editor"===e?"100vh":"0px",this.gleapFrameContainer.style.height=t}}},{key:"start",value:function(){var e=this;if("undefined"!=typeof window&&!window.gleapAdminDisabled){var t=this;window.addEventListener("message",(function(n){if("https://app.gleap.io"===n.origin)try{var o=JSON.parse(n.data);if("admin"===o.type&&("load"===o.name&&(t.configData=o.data,t.initAdminHelper()),"smartlink-search-result"===o.name&&e.sendMessageToTourBuilder({name:"smartlink-search-result",data:o.data}),"translate-complete"===o.name&&e.sendMessageToTourBuilder({name:"translate-complete",data:o.data})),"tourbuilder"===o.type){var r;if("loaddata"===o.name&&e.sendMessageToTourBuilder({name:"data",data:zf(zf({},t.configData),{},{currentPage:window.location.href})}),"highlight-element"===o.name&&(document.querySelectorAll(".gleap-admin-highlight").forEach((function(e){e.classList.remove("gleap-admin-highlight")})),null!=o&&null!==(r=o.data)&&void 0!==r&&r.selector)){var i,a=document.querySelector(null==o||null===(i=o.data)||void 0===i?void 0:i.selector);a&&a.classList.add("gleap-admin-highlight")}if("smartlink-search"===o.name&&e.sendMessage({name:"smartlink-search",data:o.data}),"product-tour-started"===o.name&&e.sendMessage({name:"product-tour-started",data:o.data}),"translate"===o.name&&e.sendMessage({name:"translate",data:o.data}),"save"===o.name&&e.sendMessage({name:"save",data:o.data}),"update-steps"===o.name&&e.sendMessage({name:"update-steps",data:o.data}),"click"===o.name)try{document.querySelector(o.data.selector).click()}catch(s){console.log(s)}"status-changed"===o.name&&(t.status=o.data,e.setFrameHeight(t.status),t.adminHelper.stopPicker(),"picker"===t.status&&t.adminHelper.startPicker())}}catch(l){}})),this.sendMessage({name:"init"}),this.startPageListener()}}},{key:"sendMessage",value:function(e){try{window&&window.opener&&window.opener.postMessage(JSON.stringify(zf(zf({},e),{},{type:"admin"})),"*")}catch(t){}}},{key:"sendMessageToTourBuilder",value:function(e){try{this.gleapFrame&&this.gleapFrame.contentWindow&&this.gleapFrame.contentWindow.postMessage(JSON.stringify(zf(zf({},e),{},{type:"tourbuilder"})),"*")}catch(t){}}}])&&qf(t.prototype,n),o&&qf(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Xf(e){return Xf="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Xf(e)}function Yf(e){return function(e){if(Array.isArray(e))return Jf(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return Jf(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Jf(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Jf(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n0&&void 0!==arguments[0]?arguments[0]:{})}function n(t){return t?e[t]:e}function o(e,t,n,o){return(e/=o/2)<1?n/2*e*e+t:-n/2*(--e*(e-2)-1)+t}function r(e){var t='a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type="text"]:not([disabled]), input[type="radio"]:not([disabled]), input[type="checkbox"]:not([disabled]), select:not([disabled])';return e.flatMap((function(e){var n=e.matches(t),o=Array.from(e.querySelectorAll(t));return[].concat(Yf(n?[e]:[]),o)})).filter((function(e){return"none"!==getComputedStyle(e).pointerEvents&&function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)}(e)}))}function i(e){if(e&&!function(e){var t=e.getBoundingClientRect();return t.top>=0&&t.left>=0&&t.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&t.right<=(window.innerWidth||document.documentElement.clientWidth)}(e)){var t=n("smoothScroll");e.scrollIntoView({behavior:!t||a(e)?"auto":"smooth",inline:"center",block:"center"})}}function a(e){if(e&&e.parentElement){var t=e.parentElement;return t.scrollHeight>t.clientHeight}}var s={};function l(e,t){s[e]=t}function c(e){return e?s[e]:s}function u(){s={}}var d={};function p(e,t){d[e]=t}function h(e){var t;null==(t=d[e])||t.call(d)}function f(e){if(e){var t=e.getBoundingClientRect(),n={x:t.x,y:t.y,width:t.width,height:t.height};l("__activeStagePosition",n),g(n)}}function m(e){var t=function(e){var t=window.innerWidth,o=window.innerHeight,r=document.createElementNS("http://www.w3.org/2000/svg","svg");r.classList.add("gleap-tour-overlay","gleap-tour-overlay-animated"),r.setAttribute("viewBox","0 0 ".concat(t," ").concat(o)),r.setAttribute("xmlSpace","preserve"),r.setAttribute("xmlnsXlink","http://www.w3.org/1999/xlink"),r.setAttribute("version","1.1"),r.setAttribute("preserveAspectRatio","xMinYMin slice"),r.style.fillRule="evenodd",r.style.clipRule="evenodd",r.style.strokeLinejoin="round",r.style.strokeMiterlimit="2",r.style.zIndex="10000",r.style.position="fixed",r.style.top="0",r.style.left="0",r.style.width="100%",r.style.height="100%";var i=document.createElementNS("http://www.w3.org/2000/svg","path");return i.setAttribute("d",v(e)),i.style.fill=n("overlayColor")||"rgb(0,0,0)",i.style.opacity="".concat(n("overlayOpacity")),i.style.pointerEvents="auto",i.style.cursor="auto",r.appendChild(i),r}(e);document.body.appendChild(t),S(t,(function(e){"path"===e.target.tagName&&h("overlayClick")})),l("__overlaySvg",t)}function g(e){var t=c("__overlaySvg");if(t){var n=t.firstElementChild;if("path"!==(null==n?void 0:n.tagName))throw new Error("no path element found in stage svg");n.setAttribute("d",v(e))}else m(e)}function v(e){var t=window.innerWidth,o=window.innerHeight,r=n("stagePadding")||0,i=n("stageRadius")||0,a=e.width+2*r,s=e.height+2*r,l=Math.min(i,a/2,s/2),c=Math.floor(Math.max(l,0)),u=e.x-r+c,d=e.y-r,p=a-2*c,h=s-2*c;return"M".concat(t,",0L0,0L0,").concat(o,"L").concat(t,",").concat(o,"L").concat(t,",0Z\n M").concat(u,",").concat(d," h").concat(p," a").concat(c,",").concat(c," 0 0 1 ").concat(c,",").concat(c," v").concat(h," a").concat(c,",").concat(c," 0 0 1 -").concat(c,",").concat(c," h-").concat(p," a").concat(c,",").concat(c," 0 0 1 -").concat(c,",-").concat(c," v-").concat(h," a").concat(c,",").concat(c," 0 0 1 ").concat(c,",-").concat(c," z")}function y(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:5e3,r=e.element,a=r;if("string"==typeof a)try{a=document.querySelector(r)}catch(u){var s=r.replace(/(#[^#\s]+)/g,(function(e){return e.replace(/:/g,"\\:")}));a=document.querySelector(s)}if(r&&!a&&t>=0)setTimeout((function(){C(),y(e,t-100)}),100);else{if(!a&&("INPUT"===e.mode||"CLICK"===e.mode))return n("onElementNotFound")(e);a||(a=function(){var e=document.getElementById("gleap-tour-dummy-element");if(e)return e;var t=document.createElement("div");return t.id="gleap-tour-dummy-element",t.style.width="0",t.style.height="0",t.style.pointerEvents="none",t.style.opacity="0",t.style.position="fixed",t.style.top="50%",t.style.left="50%",document.body.appendChild(t),t}()),function(e,t){var r,a,s=400,u=Date.now(),d=c("__activeStep"),p=c("__activeElement")||e,h=!p||p===e,m="gleap-tour-dummy-element"===e.id,v="gleap-tour-dummy-element"===p.id,y=n("animate"),b=t.onHighlightStarted||n("onHighlightStarted"),w=(null==t?void 0:t.onHighlighted)||n("onHighlighted"),k=(null==d?void 0:d.onDeselected)||n("onDeselected"),x=n(),S=c();!h&&k&&k(v?void 0:p,d,{config:x,state:S});b&&b(m?void 0:e,t,{config:x,state:S});var E=!h&&y,T=!1;C(),l("previousStep",d),l("previousElement",p),l("activeStep",t),l("activeElement",e);var O=function r(){if(c("__transitionCallback")===r){var i=Date.now()-u,a=s-i<=s/2;t.popover&&a&&!T&&E&&(I(e,t),T=!0),n("animate")&&i0&&P[0].focus()}function E(){var e=c("popover");if(null==e?void 0:e.wrapper){var t=e.wrapper.getBoundingClientRect(),o=n("stagePadding")||0,r=n("popoverOffset")||0;return{width:t.width+o+r,height:t.height+o+r,realWidth:t.width,realHeight:t.height}}}function T(e,t){var n=t.elementDimensions,o=t.popoverDimensions,r=t.popoverPadding,i=t.popoverArrowDimensions;return"start"===e?Math.max(Math.min(n.top-r,window.innerHeight-o.realHeight-i.width),i.width):"end"===e?Math.max(Math.min(n.top-(null==o?void 0:o.realHeight)+n.height+r,window.innerHeight-(null==o?void 0:o.realHeight)-i.width),i.width):"center"===e?Math.max(Math.min(n.top+n.height/2-(null==o?void 0:o.realHeight)/2,window.innerHeight-(null==o?void 0:o.realHeight)-i.width),i.width):0}function O(e,t){var n=t.elementDimensions,o=t.popoverDimensions,r=t.popoverPadding,i=t.popoverArrowDimensions;return"start"===e?Math.max(Math.min(n.left-r,window.innerWidth-o.realWidth-i.width),i.width):"end"===e?Math.max(Math.min(n.left-(null==o?void 0:o.realWidth)+n.width+r,window.innerWidth-(null==o?void 0:o.realWidth)-i.width),i.width):"center"===e?Math.max(Math.min(n.left+n.width/2-(null==o?void 0:o.realWidth)/2,window.innerWidth-(null==o?void 0:o.realWidth)-i.width),i.width):0}function L(e,t){var o=c("popover");if(o){var r=(null==t?void 0:t.popover)||{},i=r.align,a=void 0===i?"start":i,s=r.side,l=void 0===s?"left":s,u=a,d="gleap-tour-dummy-element"===e.id?"over":l,p=n("stagePadding")||0,h=E(),f=o.arrow.getBoundingClientRect(),m=e.getBoundingClientRect(),g=m.top-h.height,v=g>=0,y=window.innerHeight-(m.bottom+h.height),b=y>=0,w=m.left-h.width,k=w>=0,x=window.innerWidth-(m.right+h.width),S=x>=0,C=!(v||b||k||S),I=d;if("top"===d&&v?S=k=b=!1:"bottom"===d&&b?S=k=v=!1:"left"===d&&k?S=v=b=!1:"right"===d&&S&&(k=v=b=!1),"over"===d){var L=window.innerWidth/2-h.realWidth/2,A=window.innerHeight/2-h.realHeight/2;o.wrapper.style.left="".concat(L,"px"),o.wrapper.style.right="auto",o.wrapper.style.top="".concat(A,"px"),o.wrapper.style.bottom="auto"}else if(C){var M=window.innerWidth/2-(null==h?void 0:h.realWidth)/2;o.wrapper.style.left="".concat(M,"px"),o.wrapper.style.right="auto",o.wrapper.style.bottom="".concat(10,"px"),o.wrapper.style.top="auto"}else if(k){var R=Math.min(w,window.innerWidth-(null==h?void 0:h.realWidth)-f.width),P=T(u,{elementDimensions:m,popoverDimensions:h,popoverPadding:p,popoverArrowDimensions:f});o.wrapper.style.left="".concat(R,"px"),o.wrapper.style.top="".concat(P,"px"),o.wrapper.style.bottom="auto",o.wrapper.style.right="auto",I="left"}else if(S){var D=Math.min(x,window.innerWidth-(null==h?void 0:h.realWidth)-f.width),N=T(u,{elementDimensions:m,popoverDimensions:h,popoverPadding:p,popoverArrowDimensions:f});o.wrapper.style.right="".concat(D,"px"),o.wrapper.style.top="".concat(N,"px"),o.wrapper.style.bottom="auto",o.wrapper.style.left="auto",I="right"}else if(v){var j=Math.min(g,window.innerHeight-h.realHeight-f.width),F=O(u,{elementDimensions:m,popoverDimensions:h,popoverPadding:p,popoverArrowDimensions:f});o.wrapper.style.top="".concat(j,"px"),o.wrapper.style.left="".concat(F,"px"),o.wrapper.style.bottom="auto",o.wrapper.style.right="auto",I="top"}else if(b){var B=Math.min(y,window.innerHeight-(null==h?void 0:h.realHeight)-f.width),_=O(u,{elementDimensions:m,popoverDimensions:h,popoverPadding:p,popoverArrowDimensions:f});o.wrapper.style.left="".concat(_,"px"),o.wrapper.style.bottom="".concat(B,"px"),o.wrapper.style.top="auto",o.wrapper.style.right="auto",I="bottom"}C?o.arrow.classList.add("gleap-tour-popover-arrow-none"):function(e,t,n){var o=c("popover");if(!o)return;var r=n.getBoundingClientRect(),i=E(),a=o.arrow,s=i.width,l=window.innerWidth,u=r.width,d=r.left,p=i.height,h=window.innerHeight,f=r.top,m=r.height;a.className="gleap-tour-popover-arrow";var g=t,v=e;"top"===t?(d+u<=0?(g="right",v="end"):d+u-s<=0&&(g="top",v="start"),d>=l?(g="left",v="end"):d+s>=l&&(g="top",v="end")):"bottom"===t?(d+u<=0?(g="right",v="start"):d+u-s<=0&&(g="bottom",v="start"),d>=l?(g="left",v="start"):d+s>=l&&(g="bottom",v="end")):"left"===t?(f+m<=0?(g="bottom",v="end"):f+m-p<=0&&(g="left",v="start"),f>=h?(g="top",v="end"):f+p>=h&&(g="left",v="end")):"right"===t&&(f+m<=0?(g="bottom",v="start"):f+m-p<=0&&(g="right",v="start"),f>=h?(g="top",v="start"):f+p>=h&&(g="right",v="end"));g?(a.classList.add("gleap-tour-popover-arrow-side-".concat(g)),a.classList.add("gleap-tour-popover-arrow-align-".concat(v))):a.classList.add("gleap-tour-popover-arrow-none")}(u,I,e)}}return function(){function e(){n("allowClose")&&f()}function o(){var e=c("activeIndex"),t=n("steps")||[];if(void 0!==e){var o=e+1;t[o]?h(o):f()}}function r(){var e=c("activeIndex"),t=n("steps")||[];if(void 0!==e){var o=e-1;t[o]?h(o):f()}}function i(){var e;if(!c("__transitionCallback")){var t=c("activeIndex"),o=c("__activeStep"),i=c("__activeElement");if("CLICK"!==o.mode)if(void 0!==t&&void 0!==o)if(void 0!==c("activeIndex")){var a=(null==(e=o.popover)?void 0:e.onPrevClick)||n("onPrevClick");if(a)return a(i,o,{config:n(),state:c()});r()}}}function a(){var e;if(!c("__transitionCallback")){var t=c("activeIndex"),r=c("__activeStep"),i=c("__activeElement");if("CLICK"!==r.mode&&void 0!==t&&void 0!==r){var a=(null==(e=r.popover)?void 0:e.onNextClick)||n("onNextClick");if(a)return a(i,r,{config:n(),state:c()});o()}}}function s(){c("isInitialized")||(l("isInitialized",!0),document.body.classList.add("gleap-tour-active",n("animate")?"gleap-tour-fade":"gleap-tour-simple"),window.addEventListener("keyup",x,!1),window.addEventListener("keydown",k,!1),window.addEventListener("resize",w),window.addEventListener("scroll",w),p("overlayClick",e),p("escapePress",e),p("arrowLeftPress",i),p("arrowRightPress",a))}function h(){var e,t,o,r,i,a,s,c,u=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,d=n("steps");if(!d)return console.error("No steps to drive through"),void f();if(d[u]){l("__activeOnDestroyed",document.activeElement),l("activeIndex",u);var p=d[u],m=d[u+1],g=d[u-1],v=(null==(e=p.popover)?void 0:e.doneBtnText)||n("doneBtnText")||"Done",b=n("allowClose"),w=void 0!==(null==(t=p.popover)?void 0:t.showProgress)?null==(o=p.popover)?void 0:o.showProgress:n("showProgress"),k=((null==(r=p.popover)?void 0:r.progressText)||n("progressText")||"{{current}} of {{total}}").replace("{{current}}","".concat(u+1)).replace("{{total}}","".concat(d.length)),x=(null==(i=p.popover)?void 0:i.showButtons)||n("showButtons"),S=["next","previous"].concat(Yf(b?["close"]:[])).filter((function(e){return!(null==x?void 0:x.length)||x.includes(e)})),C=(null==(a=p.popover)?void 0:a.onNextClick)||n("onNextClick"),I=(null==(s=p.popover)?void 0:s.onPrevClick)||n("onPrevClick"),E=(null==(c=p.popover)?void 0:c.onCloseClick)||n("onCloseClick");y(Zf(Zf({},p),{},{popover:Zf({showButtons:S,nextBtnText:m?void 0:v,disableButtons:Yf(g?[]:["previous"]),showProgress:w,progressText:k,onNextClick:C||function(){m?h(u+1):f()},onPrevClick:I||function(){h(u-1)},onCloseClick:E||function(){f()}},(null==p?void 0:p.popover)||{})}))}else f()}function f(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=c("__activeElement"),o=c("__activeStep"),r=c("__activeOnDestroyed"),i=n("onDestroyStarted");if(e&&i){i(!t||"gleap-tour-dummy-element"===(null==t?void 0:t.id)?void 0:t,o,{config:n(),state:c()})}else{var a,s=(null==o?void 0:o.onDeselected)||n("onDeselected"),l=n("onDestroyed");if(document.body.classList.remove("gleap-tour-active","gleap-tour-fade","gleap-tour-simple"),window.removeEventListener("keyup",x),window.removeEventListener("resize",w),window.removeEventListener("scroll",w),function(){var e,t=c("popover");t&&(null==(e=t.wrapper.parentElement)||e.removeChild(t.wrapper))}(),function(){var e;null==(e=document.getElementById("gleap-tour-dummy-element"))||e.remove(),document.querySelectorAll(".gleap-tour-active-element").forEach((function(e){e.classList.remove("gleap-tour-active-element","gleap-tour-no-interaction"),e.removeAttribute("aria-haspopup"),e.removeAttribute("aria-expanded"),e.removeAttribute("aria-controls")}))}(),(a=c("__overlaySvg"))&&a.remove(),d={},u(),t&&o){var p="gleap-tour-dummy-element"===t.id;s&&s(p?void 0:t,o,{config:n(),state:c()}),l&&l(p?void 0:t,o,{config:n(),state:c()})}r&&r.focus()}}return t(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),{isActive:function(){return c("isInitialized")||!1},refresh:w,drive:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;s(),h(e)},setConfig:t,setSteps:function(e){u(),t(Zf(Zf({},n()),{},{steps:e}))},getConfig:n,getState:c,getActiveIndex:function(){return c("activeIndex")},isFirstStep:function(){return 0===c("activeIndex")},isLastStep:function(){var e=n("steps")||[],t=c("activeIndex");return void 0!==t&&t===e.length-1},getActiveStep:function(){return c("activeStep")},getActiveElement:function(){return c("activeElement")},getPreviousElement:function(){return c("previousElement")},getPreviousStep:function(){return c("previousStep")},moveNext:o,movePrevious:r,moveTo:function(e){(n("steps")||[])[e]?h(e):f()},hasNextStep:function(){var e=n("steps")||[],t=c("activeIndex");return void 0!==t&&e[t+1]},hasPreviousStep:function(){var e=n("steps")||[],t=c("activeIndex");return void 0!==t&&e[t-1]},highlight:function(e){s(),y(Zf(Zf({},e),{},{popover:e.popover?Zf({showButtons:[],showProgress:!1,progressText:""},e.popover):void 0}))},destroy:function(){f(!1)}}}}();const em=Qf;function tm(e){return tm="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},tm(e)}function nm(){nm=function(){return t};var e,t={},n=Object.prototype,o=n.hasOwnProperty,r=Object.defineProperty||function(e,t,n){e[t]=n.value},i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",s=i.asyncIterator||"@@asyncIterator",l=i.toStringTag||"@@toStringTag";function c(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,n){return e[t]=n}}function u(e,t,n,o){var i=t&&t.prototype instanceof v?t:v,a=Object.create(i.prototype),s=new A(o||[]);return r(a,"_invoke",{value:E(e,n,s)}),a}function d(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=u;var p="suspendedStart",h="suspendedYield",f="executing",m="completed",g={};function v(){}function y(){}function b(){}var w={};c(w,a,(function(){return this}));var k=Object.getPrototypeOf,x=k&&k(k(M([])));x&&x!==n&&o.call(x,a)&&(w=x);var S=b.prototype=v.prototype=Object.create(w);function C(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function I(e,t){function n(r,i,a,s){var l=d(e[r],e,i);if("throw"!==l.type){var c=l.arg,u=c.value;return u&&"object"==tm(u)&&o.call(u,"__await")?t.resolve(u.__await).then((function(e){n("next",e,a,s)}),(function(e){n("throw",e,a,s)})):t.resolve(u).then((function(e){c.value=e,a(c)}),(function(e){return n("throw",e,a,s)}))}s(l.arg)}var i;r(this,"_invoke",{value:function(e,o){function r(){return new t((function(t,r){n(e,o,t,r)}))}return i=i?i.then(r,r):r()}})}function E(t,n,o){var r=p;return function(i,a){if(r===f)throw new Error("Generator is already running");if(r===m){if("throw"===i)throw a;return{value:e,done:!0}}for(o.method=i,o.arg=a;;){var s=o.delegate;if(s){var l=T(s,o);if(l){if(l===g)continue;return l}}if("next"===o.method)o.sent=o._sent=o.arg;else if("throw"===o.method){if(r===p)throw r=m,o.arg;o.dispatchException(o.arg)}else"return"===o.method&&o.abrupt("return",o.arg);r=f;var c=d(t,n,o);if("normal"===c.type){if(r=o.done?m:h,c.arg===g)continue;return{value:c.arg,done:o.done}}"throw"===c.type&&(r=m,o.method="throw",o.arg=c.arg)}}}function T(t,n){var o=n.method,r=t.iterator[o];if(r===e)return n.delegate=null,"throw"===o&&t.iterator.return&&(n.method="return",n.arg=e,T(t,n),"throw"===n.method)||"return"!==o&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+o+"' method")),g;var i=d(r,t.iterator,n.arg);if("throw"===i.type)return n.method="throw",n.arg=i.arg,n.delegate=null,g;var a=i.arg;return a?a.done?(n[t.resultName]=a.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,g):a:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,g)}function O(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function L(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function A(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(O,this),this.reset(!0)}function M(t){if(t||""===t){var n=t[a];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,i=function n(){for(;++r=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var l=o.call(a,"catchLoc"),c=o.call(a,"finallyLoc");if(l&&c){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&o.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),L(n),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var o=n.completion;if("throw"===o.type){var r=o.arg;L(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,o){return this.delegate={iterator:M(t),resultName:n,nextLoc:o},"next"===this.method&&(this.arg=e),g}},t}function om(e,t){for(var n=0;n=0&&t.productTourData&&t.productTourData.steps){var e=t.productTourData.steps[t.currentActiveIndex];e&&e.selector&&""!==e.selector&&t.updatePointerPosition(document.querySelector(e.selector),e)}})))}var t,n,o;return t=e,n=[{key:"disable",value:function(){this.disabled=!0,this.cleanup()}},{key:"startWithConfig",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;"undefined"!=typeof window&&(this.productTourId||this.disabled||(this.productTourId=e,this.productTourData=t,this.currentActiveIndex=0,this.onCompleteCallback=n,this.start()))}},{key:"storeUncompletedTour",value:function(){if("undefined"!=typeof window)if(this.productTourId&&this.productTourData)try{var e=JSON.parse(JSON.stringify({tourData:this.productTourData,tourId:this.productTourId}));e.tourData.steps=e.tourData.steps.slice(this.currentActiveIndex||0,e.tourData.steps.length),localStorage.setItem(sm,JSON.stringify(e))}catch(t){}else localStorage.removeItem(sm)}},{key:"attachScrollListeners",value:function(e,t){var n=this;if("undefined"!=typeof window&&e){var o=function(e){if("undefined"!=typeof window){for(var t=[],n=e.parentElement;n;){var o=window.getComputedStyle(n);("auto"===o.overflowY||"scroll"===o.overflowY)&&n.scrollHeight>n.clientHeight&&t.push(n),n=n.parentElement}return t}}(e);o.push(window),o.forEach((function(o){var r=function(){clearTimeout(n._scrollDebounceTimer),n._scrollDebounceTimer=setTimeout((function(){n.updatePointerPosition(e,t)}),150)};o.addEventListener("scroll",r,{passive:!0}),n._scrollListeners.push({el:o,handler:r})}))}}},{key:"removeScrollListeners",value:function(){"undefined"!=typeof window&&(this._scrollListeners&&this._scrollListeners.length>0&&(this._scrollListeners.forEach((function(e){var t=e.el,n=e.handler;t.removeEventListener("scroll",n)})),this._scrollListeners=[]),this._scrollDebounceTimer&&(clearTimeout(this._scrollDebounceTimer),this._scrollDebounceTimer=null))}},{key:"updatePointerPosition",value:function(e,t){var n,o=this;if("undefined"!=typeof window)try{var r=this._pointerContainer||document.getElementById(lm);if(!r)return;if(!e)return r.style.position="fixed",r.style.left="50%",r.style.top="50%",r.style.transform="translate(-50%, -50%)",function(e){if("undefined"!=typeof window){var t=e-window.innerHeight/2;window.scrollTo({top:t,behavior:"smooth"})}}(window.innerHeight/2),this.removeScrollListeners(),this._currentAnchor=null,void(this._currentStep=null);n=e,"undefined"!=typeof window&&n&&n.scrollIntoView({behavior:"smooth",block:"center",inline:"center"});var i=0;!function n(){if(function(e){if("undefined"!=typeof window){var t=e.getBoundingClientRect();return t.top>=0&&t.left>=0&&t.bottom<=window.innerHeight&&t.right<=window.innerWidth}}(e)||i>=20){var a=e.getBoundingClientRect(),s=a.left+a.width/2,l=a.top+a.height/2+10;r.style.position="fixed",r.style.left="".concat(s,"px"),r.style.top="".concat(l,"px"),r.style.transform="translate(-50%, -50%)";var c=350;c>window.innerWidth-40&&(c=window.innerWidth-40),s+c>window.innerWidth-20?r.classList.add("copilot-pointer-container-right"):r.classList.remove("copilot-pointer-container-right"),o._currentAnchor===e&&o._currentStep===t||(o.removeScrollListeners(),o._currentAnchor=e,o._currentStep=t,o.attachScrollListeners(e,t))}else i++,setTimeout(n,100)}()}catch(a){}}},{key:"cleanup",value:function(){var e=this;"undefined"!=typeof window&&(document.body.classList.add("gl-copilot-fade-out"),this.currentAudio&&this.currentAudio.pause(),setTimeout((function(){if(e._pointerContainer)e._pointerContainer.remove(),e._pointerContainer=null;else{var t=document.getElementById(lm);t&&t.remove()}var n=document.getElementById(um);n&&n.remove();var o=document.getElementById(cm);o&&o.remove(),document.body.classList.remove("gl-copilot-fade-out")}),800),this.productTourId=void 0,this.productTourData=void 0,this.removeScrollListeners())}},{key:"toggleAudio",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.audioMuted=e,this.currentAudio&&(this.currentAudio.muted=this.audioMuted),document.querySelector(".".concat(um,"-mute")).innerHTML=p(this.audioMuted?"unmute":"mute")}},{key:"setupCopilotTour",value:function(){var e,t,n,o,r,i,a=this;if("undefined"!=typeof window){var s,l,c=null!==(e=null===(t=dt.getInstance().flowConfig)||void 0===t?void 0:t.color)&&void 0!==e?e:"#485BFF",u=d(c),h=document.getElementById(cm);h||((h=document.createElement("style")).id=cm,h.type="text/css",h.textContent="\n #".concat(lm," {\n position: absolute;\n top: 0;\n left: 0;\n display: flex;\n align-items: flex-start;\n pointer-events: none;\n z-index: 2147483610;\n transition: all 0.5s ease;\n }\n .").concat(lm,"-clickmode {\n cursor: pointer;\n pointer-events: all !important;\n }\n .").concat(lm,"-clickmode #copilot-info-bubble-content {\n display: flex !important;\n }\n .").concat(lm,"-clickmode svg {\n display: none !important;\n }\n #").concat(lm," svg {\n width: 20px;\n height: auto;\n fill: none;\n }\n #copilot-info-bubble {\n position: relative;\n }\n #copilot-info-bubble-content-container {\n position: absolute;\n top: 0px;\n left: 0px;\n min-width: min(300px, 80vw);\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n }\n .").concat(lm,"-right #copilot-info-bubble-content-container {\n left: auto !important;\n right: 0px !important;\n align-items: flex-end;\n }\n .").concat(lm,"-right .copilot-info-bubble-content {\n margin-right: 5px;\n }\n .").concat(lm,"-right svg {\n transform: scaleX(-1);\n }\n #copilot-info-bubble-content svg {\n width: 16px;\n height: 16px;\n display: inline-block !important;\n margin-left: 5px;\n }\n #copilot-info-bubble-content {\n margin-top: 18px;\n margin-left: 5px;\n padding: 10px 15px;\n border-radius: 20px;\n background-color: black;\n color: white;\n font-family: Arial, sans-serif;\n font-size: 14px;\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);\n max-width: 100%;\n white-space: normal;\n overflow-wrap: break-word;\n word-break: normal;\n hyphens: none;\n }\n .").concat(lm,"-right #copilot-info-bubble-content {\n margin-top: 30px;\n margin-left: 0px;\n margin-right: 5px;\n }\n .click-wave {\n position: absolute;\n width: 34px;\n height: 34px;\n border-radius: 50%;\n background-color: rgba(0, 0, 0, 0.5);\n pointer-events: none;\n z-index: 2147483611;\n animation: click-wave-animation 0.8s ease forwards;\n }\n @keyframes click-wave-animation {\n 0% {\n transform: scale(0.2);\n opacity: 1;\n }\n 100% {\n transform: scale(2);\n opacity: 0;\n }\n }\n @keyframes slideInFromTop {\n 0% {\n transform: translateY(-100%);\n opacity: 0;\n }\n 100% {\n transform: translateY(0);\n opacity: 1;\n }\n }\n .").concat(um," {\n position: fixed;\n top: 20px;\n right: 20px;\n z-index: 2147483610;\n background: #fff;\n padding: 6px;\n border-radius: 10px;\n box-shadow: 0 0 20px 0 #C294F2;\n display: flex;\n align-items: center;\n gap: 8px;\n border: 1px solid rgba(192, 146, 242, 0.5);\n animation: slideInFromTop 0.5s ease-out forwards;\n }\n .").concat(um," span {\n font-size: 13px;\n color: #000;\n font-family: sans-serif;\n }\n .").concat(um,"-avatar {\n width: 24px;\n height: 24px;\n flex-shrink: 0;\n border-radius: 6px;\n }\n .").concat(um,"-mute {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n .").concat(um,"-mute svg {\n width: 20px;\n height: auto;\n cursor: pointer;\n animation: pulsate 2s infinite;\n }\n .").concat(um,"-mute svg:hover {\n opacity: 0.8;\n }\n .").concat(um,"-dismiss {\n display: flex;\n align-items: center;\n justify-content: center;\n padding-right: 3px;\n }\n .").concat(um,"-dismiss svg {\n width: 15px;\n height: auto;\n cursor: pointer;\n }\n .").concat(um,"-dismiss svg:hover {\n opacity: 0.8;\n }\n @keyframes pulsate {\n 0% {\n transform: scale(1);\n opacity: 1;\n }\n 50% {\n transform: scale(1.1);\n opacity: 0.8;\n }\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n }\n @keyframes glCoFadeIn {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n @keyframes glCoFadeOut {\n 0% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n }\n\n .gleap-audio-unmute-modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n background-color: rgba(0, 0, 0, 0.5);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 2147483620;\n }\n\n .gleap-audio-unmute-modal {\n background-color: #fff;\n padding: 20px;\n border-radius: 8px;\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);\n text-align: center;\n max-width: 90%;\n width: 400px;\n }\n\n .gleap-audio-unmute-modal p {\n margin-bottom: 20px;\n font-size: 16px;\n line-height: 22px;\n font-weight: normal;\n }\n\n .gleap-audio-unmute-button {\n background: ").concat(c,";\n color: ").concat(u,";\n outline: none;\n border: none;\n padding: 10px 14px;\n border-radius: 12px;\n font-size: 14px;\n font-weight: bold;\n cursor: pointer;\n }\n\n .gleap-audio-unmute-button:hover {\n opacity: 0.8;\n }\n\n .gleap-tour-continue-button {\n color: ").concat(c,";\n text-decoration: none;\n cursor: pointer;\n font-size: 14px;\n font-weight: bold;\n border: none;\n background: none;\n padding: 0;\n margin: 0;\n margin-left: 20px;\n }\n\n .gleap-tour-continue-button:hover {\n opacity: 0.8;\n }\n\n body.gl-copilot-fade-out::before,\n body.gl-copilot-fade-out::after,\n body.gl-copilot-fade-out #").concat(um," {\n animation: glCoFadeOut 0.8s ease-out forwards;\n }\n ").concat(null===(s=null===(l=this.productTourData)||void 0===l?void 0:l.playVoice)||void 0===s||s?"":"\n .".concat(um,"-mute {\n display: none;\n }\n "),"\n ").concat(this.productTourData.gradient?'body::before {\n content: "";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n box-sizing: border-box;\n border: 18px solid transparent;\n filter: blur(25px);\n border-image-slice: 1;\n border-image-source: linear-gradient(45deg, #ED5587, #FBE6A9, #a6e3f8, #C294F2);\n animation: glCoFadeIn 1.5s ease-out forwards;\n }\n \n body::after {\n content: "";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n opacity: 0.5;\n box-sizing: border-box;\n border: 3px solid transparent;\n border-image-slice: 1;\n border-image-source: linear-gradient(45deg, #ED5587, #FBE6A9, #a6e3f8, #C294F2);\n animation: glCoFadeIn 1.5s ease-out forwards;\n }':'body::after {\n content: "";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n opacity: 0;\n }',"\n "),document.head.appendChild(h));var f=document.createElement("div");f.id=lm,f.style.opacity=0,this._pointerContainer=f;var m=document.createElementNS("http://www.w3.org/2000/svg","svg");m.setAttribute("viewBox","0 0 380 476"),m.innerHTML='';var g=document.createElement("div");g.id="copilot-info-bubble",g.innerHTML="
";var v=document.createElement("div");v.id=um,v.classList.add(um),v.innerHTML='\n \n ').concat(null===(o=this.productTourData)||void 0===o?void 0:o.kaiSlug,'\n
\n ').concat(p(this.audioMuted?"unmute":"mute"),"\n
\n ").concat(null!==(r=this.productTourData)&&void 0!==r&&r.allowClose?'
\n ').concat(p("dismiss"),"\n
"):"","\n "),document.body.appendChild(v),document.querySelector(".".concat(um,"-mute")).addEventListener("click",(function(){a.toggleAudio(!a.audioMuted)})),null!==(i=this.productTourData)&&void 0!==i&&i.allowClose&&document.querySelector(".".concat(um,"-dismiss")).addEventListener("click",(function(){a.completeTour(!1)})),f.appendChild(m),f.appendChild(g),document.body.appendChild(f)}}},{key:"start",value:function(){var e=this;if("undefined"!=typeof window&&!this.disabled){var t=this.productTourData;t&&function(){return dm.apply(this,arguments)}().then((function(n){e.audioMuted=!n,e.setupCopilotTour(),e.audioMuted&&null!=t&&t.showUnmuteModal?e.showAudioUnmuteModal():setTimeout((function(){e.renderNextStep()}),1500)}))}}},{key:"showAudioUnmuteModal",value:function(){var e,t,n,o=this,r=document.createElement("div");r.classList.add("gleap-audio-unmute-modal-overlay");var i=document.createElement("div");i.classList.add("gleap-audio-unmute-modal");var a=document.createElement("p");a.textContent=null===(e=this.productTourData)||void 0===e?void 0:e.unmuteModalTitle,i.appendChild(a);var s=document.createElement("button");s.classList.add("gleap-audio-unmute-button"),s.textContent=null===(t=this.productTourData)||void 0===t?void 0:t.unmuteModalButton,s.addEventListener("click",(function(){o.toggleAudio(!1),r.parentNode&&r.parentNode.removeChild(r),setTimeout((function(){o.renderNextStep()}),1e3)})),i.appendChild(s);var l=document.createElement("button");l.classList.add("gleap-tour-continue-button"),l.textContent=null===(n=this.productTourData)||void 0===n?void 0:n.unmuteModalContinue,l.addEventListener("click",(function(){r.parentNode&&r.parentNode.removeChild(r),setTimeout((function(){o.renderNextStep()}),1e3)})),i.appendChild(l),r.appendChild(i),document.body.appendChild(r)}},{key:"completeTour",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];"undefined"!=typeof window&&(this.cleanup(),this.onCompleteCallback&&this.onCompleteCallback(e))}},{key:"renderNextStep",value:function(){var e=this;if("undefined"!=typeof window&&!this.disabled){var t=this,n=this.productTourData.steps;if(this.currentActiveIndex>=n.length)setTimeout((function(){e.completeTour()}),500);else{var o=n[this.currentActiveIndex],r=function(n){if(e._pointerContainer.style.display="flex",o.selector&&o.selector.length>0&&!n)e.completeTour(!1);else{var r=function(){if("INPUT"===o.mode&&n){var e,r=function(){document.querySelector("#".concat(lm)).classList.remove("copilot-pointer-container-clickmode"),n.classList.remove("gleap-input-highlight"),document.getElementById(lm).style.display="none",t.currentActiveIndex++,t.storeUncompletedTour(),t.renderNextStep()};if("default"===(null!==(e=o.inputType)&&void 0!==e?e:"default")){var i=function e(t){var o;if(0!==(null==t||null===(o=t.target)||void 0===o||null===(o=o.value)||void 0===o?void 0:o.length)){var i=document.getElementById("copilot-info-bubble-content");i&&(i.innerHTML="".concat(kh.translateText("next"),' \n \n'),i.addEventListener("click",r,{once:!0}),n.classList.add("gleap-input-highlight"),document.querySelector("#".concat(lm)).classList.add("copilot-pointer-container-clickmode"),n.removeEventListener("input",e))}};n.addEventListener("input",i,{once:!1}),n.hasAttribute("contenteditable")&&n.addEventListener("keyup",i,{once:!1}),n.addEventListener("blur",(function(){n.focus()}),{once:!0}),n.focus()}else{var a,s=null!==(a=o.inputValue)&&void 0!==a?a:"",l=0;!function e(){l0})).length;return Math.ceil(t/3.6)+1}}(i),s=function(){e.currentAudio=void 0,setTimeout((function(){r()}),1e3*a)};o.voice&&o.voice.length>0?(e.currentAudio=new Audio(o.voice),e.audioMuted&&(e.currentAudio.muted=!0),e.currentAudio.addEventListener("ended",(function(){setTimeout((function(){r()}),1e3)})),e.currentAudio.play().then((function(){})).catch((function(e){s()}))):s()}},i=o.selector?function(e){if("undefined"!=typeof window){var t=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:5e3)/100,n=0;return new Promise((function(o,r){var i=setInterval((function(){var a=document.querySelector(e);a?(clearInterval(i),o(a)):n>=t&&(clearInterval(i),r(new Error("Element not found for selector: ".concat(e)))),n++}),100)}))}}(o.selector):Promise.resolve(null);i.then(r).catch((function(){return r(null)}))}}}}],o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],n&&om(t.prototype,n),o&&om(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function hm(e){return hm="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},hm(e)}function fm(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function mm(e){for(var t=1;t2&&void 0!==arguments[2]?arguments[2]:0,r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(!this.productTourId&&!this.disabled)if(this.productTourId=e,this.productTourData=t,this.currentActiveIndex=0,r)this.start();else{var i=this;et.getInstance().validateProductTour(e).then((function(){return o>0?setTimeout((function(){i.start()}),o):n.start()})).catch((function(e){console.log("Product tour is not live. Cleaning up..."),console.error(e),i.onComplete(!1)}))}}},{key:"onComplete",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t={tourId:this.productTourId};e?(Tn.notifyEvent("productTourCompleted",t),Wm.trackEvent("tour-".concat(this.productTourId,"-completed"),t)):(Tn.notifyEvent("productTourQuit",t),Wm.trackEvent("tour-".concat(this.productTourId,"-quit"),t)),this.gleapTourObj&&this.gleapTourObj.destroy(),this.gleapTourObj=void 0,this.productTourData=void 0,this.productTourId=void 0,this.currentActiveIndex=void 0,this.clearUncompletedTour()}},{key:"loadUncompletedTour",value:function(){try{var e=JSON.parse(localStorage.getItem(bm));if(null!=e&&e.tourData&&null!=e&&e.tourId)return e}catch(t){}return null}},{key:"storeUncompletedTour",value:function(){if(this.productTourId&&this.productTourData)try{var e=JSON.parse(JSON.stringify({tourData:this.productTourData,tourId:this.productTourId}));e.tourData.steps=e.tourData.steps.slice(this.currentActiveIndex||0,e.tourData.steps.length),localStorage.setItem(bm,JSON.stringify(e))}catch(t){}else this.clearUncompletedTour()}},{key:"clearUncompletedTour",value:function(){try{localStorage.removeItem(bm)}catch(e){}}},{key:"start",value:function(){var e=this,t=this.productTourData;if(t){if("cobrowse"===t.tourType)return pm.getInstance().startWithConfig(this.productTourId,t,(function(t){e.onComplete(t)}));this.unmuted=!1;for(var n=t.steps,o=this,r=[],i=0;i\n \n
').concat(p("unmute"),"
\n ");else{var d="";t.sender&&t.sender.firstName&&(u=!0,d='
\n
\n
').concat(t.sender.firstName,"
\n
")),c="".concat(d,'
').concat(a.message,"
")}var h={disableActiveInteraction:!s&&!l,mode:a.mode,popover:mm({description:c,popoverClass:"gleap-tour-popover-".concat(a.type," ").concat(!u&&"gleap-tour-popover-no-sender"," ").concat(t.allowClose&&"gleap-tour-popover-can-close")},s?{showButtons:[]}:{})};a.selector&&a.selector.length>0&&(h.element=a.selector),r.push(h)}var f=["next","close"];t.backButton&&f.push("previous"),this.gleapTourObj=em(vm(vm(vm(vm(vm(vm(vm(vm(vm(vm({showProgress:!0,allowKeyboardControl:!1,steps:r},"showProgress",n.length>1),"allowClose",t.allowClose),"nextBtnText",t.nextText),"doneBtnText",t.doneText),"prevBtnText",t.prevText),"showButtons",f),"onHighlightStarted",(function(t,n,o){var r;e.currentActiveIndex=null==o||null===(r=o.state)||void 0===r?void 0:r.activeIndex,e.storeUncompletedTour()})),"onElementNotFound",(function(t){document.removeEventListener("click",m),e.onComplete(!1)})),"onDestroyStarted",(function(){e.gleapTourObj.hasNextStep()?e.onComplete(!1):e.onComplete(!0),document.removeEventListener("click",m)})),"onPopoverRender",(function(t){if(t)for(var n=document.querySelectorAll(".gleap-tour-popover-description img, .gleap-tour-popover-description video"),r=function(){setTimeout((function(){e.gleapTourObj.refresh()}),500),setTimeout((function(){e.gleapTourObj.refresh()}),750)},i=0;ie.length)&&(t=e.length);for(var n=0,o=new Array(t);n1&&void 0!==arguments[1]?arguments[1]:"";return kh.translateText(e)||t}},{key:"_translateWithVars",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return kh.translateTextWithVars(e,t)||n}},{key:"getCheckIcon",value:function(){return'\n \n '}},{key:"loadChecklist",value:function(){if(this._isSessionReady&&this._networkManager){var e=this.getAttribute("checklistId");e?(this.activeStep=-1,this._initialActiveSet=!1,this.validateChecklist(e)):(this.renderResponse(),this.checklistData=null,this._hasLoaded=!1)}}},{key:"getQueryParams",value:function(){var e=this._getGleapSessionInstance();if(null==e||!e.session)return"";var t=e.session,n="en";try{void 0!==kh&&(n=kh.getInstance().getActiveLanguage()||"en")}catch(o){}return"gleapId=".concat(t.gleapId||"","&gleapHash=").concat(t.gleapHash||"","&lang=").concat(n)}},{key:"makeRequest",value:function(e,t,n,o){var r=this._getGleapSessionInstance();if(null!=r&&r.session){var i=new XMLHttpRequest;i.open(e,t);try{r.injectSession(i)}catch(a){}n&&i.setRequestHeader("Content-Type","application/json;charset=UTF-8"),i.onreadystatechange=function(){4===i.readyState&&o(i)},i.onerror=function(){o(i)},i.send(n?JSON.stringify(n):null)}else o({readyState:4,status:0,responseText:"Session unavailable",_isMock:!0})}},{key:"validateChecklist",value:function(e){var t=this;if(this._isSessionReady&&this._networkManager){this.checklistData=null,this._hasLoaded=!1,this.renderResponse();var n=this.getAttribute("sharedKey");this._networkManager.validateChecklist(e,n).then((function(e){t.isConnected&&t._isSessionReady&&e&&t.fetchChecklist(e)})).catch((function(e){t.renderResponse(),t.checklistData=null,t._hasLoaded=!1}))}}},{key:"fetchChecklist",value:function(e){var t=this;this._isSessionReady&&this._networkManager&&(this._isInitialLoad=!this._hasLoaded,this._networkManager.fetchChecklist(e).then((function(e){var n;if(!t.isConnected||!t._isSessionReady||!e)return t._hasLoaded=!1,t.checklistData=null,void t._checkSessionAndLoad();if(t.checklistData=e,t._hasLoaded=!0,"done"!==e.status){if(t._isInitialLoad&&!t._initialActiveSet){var o,r=(null===(o=e.outbound)||void 0===o||null===(o=o.config)||void 0===o?void 0:o.steps)||[],i=e.completedSteps||[],a=r.findIndex((function(e){return!i.includes(e.id)}));t.activeStep=a>=0?a:-1,-1!==t.activeStep&&(t._initialActiveSet=!0)}t.renderChecklist(t.checklistData),Tn.notifyEvent("checklist-loaded",{checklistId:t.checklistData.id,outboundId:null===(n=t.checklistData.outbound)||void 0===n?void 0:n.id,completedSteps:t.checklistData.completedSteps,status:t.checklistData.status,data:t.checklistData})}else t.renderResponse()})).catch((function(e){t.renderResponse(),t.checklistData=null,t._hasLoaded=!1})))}},{key:"updateChecklist",value:function(e,t){var n,o,r=this._getGleapSessionInstance();if(null!=r&&r.session){var i=r.apiUrl;if(i){var a=r.session,s=null!==(n=null==a?void 0:a.gleapId)&&void 0!==n?n:"",l=null!==(o=null==a?void 0:a.gleapHash)&&void 0!==o?o:"",c="en";try{void 0!==kh&&(c=kh.getInstance().getActiveLanguage()||"en")}catch(d){}var u="".concat(i,"/outbound/checklists/").concat(e);t.checkedStep&&(u+="/increment/".concat(t.checkedStep)),u+="?gleapId=".concat(s,"&gleapHash=").concat(l,"&lang=").concat(c),this.makeRequest("PUT",u,t,(function(e){e._isMock||200!==e.status&&e.status}))}}}},{key:"handleChecklistUpdate",value:function(e){if(this._hasLoaded&&this.checklistData){var t=e.detail;if(t&&t.id===this.checklistData.id){var n,o=xm(this.checklistData.completedSteps||[]),r=!1,i=!1,a=this.activeStep;if(t.completedSteps&&JSON.stringify(t.completedSteps)!==JSON.stringify(o)&&(this.checklistData.completedSteps=xm(t.completedSteps),r=!0,-1!==a)){var s,l=null===(s=this.checklistData.outbound)||void 0===s||null===(s=s.config)||void 0===s||null===(s=s.steps)||void 0===s||null===(s=s[a])||void 0===s?void 0:s.id;l&&this.checklistData.completedSteps.includes(l)&&!o.includes(l)&&(i=!0)}if(t.status&&t.status!==this.checklistData.status&&(this.checklistData.status=t.status,r=!0),i){for(var c,u=(null===(c=this.checklistData.outbound)||void 0===c||null===(c=c.config)||void 0===c?void 0:c.steps)||[],d=-1,p=a+1;p1&&void 0!==arguments[1]?arguments[1]:"checklist-floating",r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=(null===(t=e.config)||void 0===t?void 0:t.steps)||[],a=(null===(n=this.checklistData)||void 0===n?void 0:n.completedSteps)||[],s=0;if(this.progressbarEnabled&&i.length>0){var l=i.length,c=a.length;s=l>0?c/l*100:0}var u,d,p=i.find((function(e){return!a.includes(e.id)})),h=i.length>0?p?p.title||this._translateWithVars("stepDefaultTitle",{index:i.indexOf(p)+1},"Step ".concat(i.indexOf(p)+1)):"":e.subject||"",f=i.length>0?p&&p.description||"":e.message||"";r&&(h=(null===(u=e.config)||void 0===u?void 0:u.successTitle)||"",f=(null===(d=e.config)||void 0===d?void 0:d.successMessage)||"",s=100);var m=2*Math.PI*7,g=m-s/100*m,v="checklist-floating-header"===o,y=v?'\n \n \n ':'\n \n ';return'\n
\n
\n
\n \n \n \n \n
\n
').concat(h,"
\n ").concat(r?"":''.concat(y,""),'\n
\n
').concat(f,"
\n
\n ")}},{key:"renderInfoSection",value:function(e){var t;if(!this.infoEnabled||!e)return"";var n=e.subject||this._translate("checklistDefaultTitle","Checklist"),o=e.message||"",r="";return null!==(t=e.sender)&&void 0!==t&&t.profileImageUrl&&(r='\n
\n ').concat(e.sender.firstName||\n ').concat(e.sender.firstName||"","\n
")),'\n
\n '.concat(n?'
'.concat(n,"
"):"","\n ").concat(o?'
'.concat(o,"
"):"","\n ").concat(r,"\n
")}},{key:"renderProgressSection",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];if(!this.progressbarEnabled||!e.length)return"";var n=e.length,o=t.length,r=n>0?o/n*100:0,i=0;e.forEach((function(e){!t.includes(e.id)&&e.duration>0&&(i+=e.duration)}));var a=this._translateWithVars("taskProgress",{a:o,b:n},"".concat(o," of ").concat(n," done")),s=i>0?this._translateWithVars("aboutMinutes",{a:i},"About ".concat(i," min left")):"";return'\n
\n
'.concat(a,"
\n ").concat(s?'
'.concat(s,"
"):"",'\n
\n
\n
\n
')}},{key:"renderTasks",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return t&&0!==t.length?t.map((function(t,o){var r=n.includes(t.id),i=e.activeStep===o,a=r?''.concat(e.getCheckIcon(),""):''.concat(o+1,""),s=t.title||e._translateWithVars("stepDefaultTitle",{index:o+1},"Step ".concat(o+1)),l=t.description||"",c=t.actionTitle||e._translate("actionDefaultTitle","Action"),u=t.action&&"none"!==t.action?'
\n \n
"):"",d=e._translate("markAsDone","Mark as done"),p=t.allowMarkDone&&!r?'
\n ').concat(e.getCheckIcon(),'\n
').concat(d,"
\n
"):"",h=["checklist-task",r?"checklist-task--done":"",i?"checklist-task--active":""].filter(Boolean).join(" ");return'\n
\n
\n ').concat(a,'\n
').concat(s,'
\n \n \n \n \n \n
\n
\n
\n ').concat(l?'
'.concat(l,"
"):"","\n ").concat(u,"\n ").concat(p,"\n
\n
\n
")})).join(""):"

".concat(this._translate("noStepsDefined","No steps defined."),"

")}},{key:"renderChecklist",value:function(e){var t;if(this._hasLoaded&&e&&e.outbound){var n=e.outbound,o=(null===(t=n.config)||void 0===t?void 0:t.steps)||[],r=e.completedSteps||[],i="";if("done"===e.status||o.length>0&&r.length>=o.length){var a,s,l=(null===(a=n.config)||void 0===a?void 0:a.successTitle)||"",c=(null===(s=n.config)||void 0===s?void 0:s.successMessage)||"";i=this.floatingEnabled?this.renderFloatingLauncher(n,"checklist-floating-launcher",!0):'\n
\n
\n '.concat(this.getCheckIcon(),'\n
\n
').concat(l,'
\n
').concat(c,"
\n
"),-1!==this.activeStep&&(this.activeStep=-1)}else i='\n
\n '.concat(this.floatingEnabled?"":this.renderInfoSection(n),"\n ").concat(this.floatingEnabled?"":this.renderProgressSection(o,r),"\n ").concat(this.floatingEnabled?this.renderFloatingLauncher(n):"",'\n
\n ').concat(this.floatingEnabled?this.renderFloatingLauncher(n,"checklist-floating-header"):"","\n ").concat(this.renderTasks(o,r),"\n
\n
");var u=dt.getInstance().getFlowConfig(),d=u.color?u.color:"#485BFF",p="\n \n ');this.shadowRoot.innerHTML=p+i,this.addTaskEventListeners(),this.floatingEnabled&&this.addFloatingClickListeners(),-1!==this.activeStep&&this.toggleTask(this.activeStep,!0)}else this._checkSessionAndLoad()}},{key:"updateActiveTaskMaxHeight",value:function(){if(-1!==this.activeStep){var e=this.shadowRoot.querySelector('.checklist-task[data-task-index="'.concat(this.activeStep,'"] .checklist-task-body-inner')),t=this.shadowRoot.querySelector('.checklist-task[data-task-index="'.concat(this.activeStep,'"] .checklist-task-body'));if(e&&t){var n=e.offsetHeight;t.style.setProperty("--task-body-active-height","".concat(n,"px"))}}}},{key:"addTaskEventListeners",value:function(){var e=this;this.shadowRoot.querySelectorAll(".checklist-task").forEach((function(t){var n=t.querySelector(".checklist-task-header"),o=parseInt(t.getAttribute("data-task-index"),10);n&&n.addEventListener("click",(function(){var t=e.activeStep===o?-1:o;e.setActiveStep(t)}));var r=t.querySelector(".checklist-task-body-markdone");r&&r.addEventListener("click",(function(t){var n;if(t.stopPropagation(),null!==(n=e.checklistData)&&void 0!==n&&null!==(n=n.outbound)&&void 0!==n&&null!==(n=n.config)&&void 0!==n&&n.steps){var r=e.checklistData.outbound.config.steps[o];if(r){var i=e.activeStep;if(e.checklistData.completedSteps||(e.checklistData.completedSteps=[]),!e.checklistData.completedSteps.includes(r.id)){var a;e.checklistData.completedSteps.push(r.id),Tn.notifyEvent("checklist-step-completed",{checklistId:e.checklistData.id,outboundId:null===(a=e.checklistData.outbound)||void 0===a?void 0:a.id,stepId:r.id,stepIndex:o,step:r,completedSteps:e.checklistData.completedSteps,status:e.checklistData.status,data:e.checklistData});var s=e.checklistData.outbound.config.steps,l=-1;if(i===o){for(var c=o+1;c0&&e.checklistData.completedSteps.length>=s.length&&(e.checklistData.status="done",d.status="done",Tn.notifyEvent("checklist-completed",{checklistId:e.checklistData.id,outboundId:null===(u=e.checklistData.outbound)||void 0===u?void 0:u.id,completedSteps:e.checklistData.completedSteps,status:e.checklistData.status,data:e.checklistData})),e.updateChecklist(e.checklistData.id,d)}}}}));var i=t.querySelector(".checklist-task-body-action .action-button");i&&i.addEventListener("click",(function(t){var n;if(t.stopPropagation(),null!==(n=e.checklistData)&&void 0!==n&&null!==(n=n.outbound)&&void 0!==n&&null!==(n=n.config)&&void 0!==n&&n.steps&&void 0!==Wm){var r=e.checklistData.outbound.config.steps[o];if(r&&r.action&&"none"!==r.action)try{"BOT"===r.action?Wm.startBot(r.botId):"CUSTOM_ACTION"===r.action?Wm.triggerCustomAction(r.actionBody):"REDIRECT_URL"===r.action?(t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation(),Wm.openURL(r.actionBody,!!r.actionOpenInNewTab)):"FEEDBACK_FLOW"===r.action?Wm.startFeedbackFlow(r.formId):"NEWS_ARTICLE"===r.action?Wm.openNewsArticle(r.articleId):"HELP_ARTICLE"===r.action?Wm.openHelpCenterArticle(r.articleId):"CHECKLIST"===r.action&&Wm.startChecklist(r.outboundId,!0,null==r?void 0:r.sharedKey)}catch(i){}}}))}))}},{key:"setActiveStep",value:function(e){var t=this,n=this.activeStep;this.activeStep=e;var o=[];-1!==n&&n!==this.activeStep&&o.push({index:n,open:!1}),-1!==this.activeStep&&this.activeStep!==n&&o.push({index:this.activeStep,open:!0}),o.forEach((function(e){var n=e.index,o=e.open;t.toggleTask(n,o)}))}},{key:"toggleTask",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=this.shadowRoot.querySelector('.checklist-task[data-task-index="'.concat(e,'"]'));if(n){var o=n.querySelector(".checklist-task-header");if(o){var r=n.classList.contains("checklist-task--active"),i=null!==t?t:!r;if(i&&!r){n.classList.add("checklist-task--active"),o.setAttribute("aria-expanded","true");var a=n.querySelector(".checklist-task-body-inner");if(a){var s=a.offsetHeight,l=n.querySelector(".checklist-task-body");l&&l.style.setProperty("--task-body-active-height","".concat(s,"px"))}}else!i&&r&&(n.classList.remove("checklist-task--active"),o.setAttribute("aria-expanded","false"))}}}}],r=[{key:"observedAttributes",get:function(){return["checklistId","info","progressbar","dark","floating","sharedKey"]}}],o&&Cm(n.prototype,o),r&&Cm(n,r),Object.defineProperty(n,"prototype",{writable:!1}),t}(Tm(HTMLElement));"undefined"==typeof customElements||customElements.get("gleap-checklist")||customElements.define("gleap-checklist",e)}}();var _m=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),Fm(this,"initialized",!1),Fm(this,"offlineMode",!1),Fm(this,"disablePageTracking",!1),Fm(this,"disableInAppNotifications",!1),Fm(this,"globalData",{screenRecordingData:null,webReplay:null,snapshotPosition:{x:0,y:0}}),"undefined"!=typeof window&&(nn.getInstance(),un.getInstance().start(),vn.getInstance().start(),Gf.getInstance().start())}var t,n,o;return t=e,n=[{key:"isLiveMode",value:function(){if(!0===this.offlineMode)return!1;var e=window.location.hostname;return!(["localhost","127.0.0.1","0.0.0.0","","::1"].includes(e)||e.startsWith("192.168.")||e.startsWith("10.0.")||e.endsWith(".local")||!e.includes("."))}},{key:"softReInitialize",value:function(){Zt.getInstance().destroy(),dt.getInstance().start().then((function(){a.getInstance().refresh(),jh.getInstance().injectNotificationUI()})).catch((function(e){console.warn("Failed to initialize Gleap.")}))}},{key:"performActions",value:function(t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:"INFO";un.getInstance().addLog(e,t)}},{key:"initialize",value:function(t){var n=this.getInstance();if(n.initialized)console.warn("Gleap already initialized.");else{n.initialized=!0;try{!function(){try{if("visualViewport"in window&&/iPad|iPhone|iPod/.test(navigator.userAgent)){var e=function(){try{var e=document.querySelector(".gleap-frame-container-inner iframe");if(!e)return;window.visualViewport.height1&&void 0!==arguments[1]&&arguments[1];Zt.getInstance().urlHandler(e,t)}},{key:"checkForUrlParams",value:function(){if("undefined"!=typeof window&&window.location.search)try{var t=new URLSearchParams(window.location.search),n=t.get("gleap_widget");n&&n.length>0&&e.open();var o=t.get("gleap_conversation");o&&o.length>0&&("true"===o?e.startConversation(!0):e.startBot(o,!0));var r=t.get("gleap_feedback");r&&r.length>0&&e.startFeedbackFlow(r);var i=t.get("gleap_survey"),a=t.get("gleap_survey_format");i&&i.length>0&&e.showSurvey(i,"survey_full"===a?"survey_full":"survey");var s=t.get("gleap_tour");if(s&&s.length>0){var l=parseInt(t.get("gleap_tour_delay"));isNaN(l)&&(l=2),setTimeout((function(){e.startProductTour(s)}),1e3*l)}}catch(c){}}},{key:"destroy",value:function(){th.getInstance().stop(),it.getInstance().stop(),Zt.getInstance().destroy(),a.getInstance().destroy(),jh.getInstance().clearAllNotifications(!0),et.getInstance().clearSession(0,!1),qh.getInstance().removeBannerUI(),this.instance=null}},{key:"closeBanner",value:function(){qh.getInstance().removeBannerUI()}},{key:"closeModal",value:function(){Kh.getInstance().hideModal()}},{key:"setUseCookies",value:function(e){et.getInstance().useCookies=e}},{key:"identify",value:function(e,t,n){return et.getInstance().identifySession(e,k(t),n)}},{key:"updateContact",value:function(e){return et.getInstance().updateSession(k(e))}},{key:"clearIdentity",value:function(){et.getInstance().clearSession()}},{key:"getIdentity",value:function(){return et.getInstance().getSession()}},{key:"isUserIdentified",value:function(){var e=et.getInstance().session;return!!(e&&e.userId&&e.userId.length>0)}},{key:"isOpened",value:function(){return Zt.getInstance().isOpened()}},{key:"hide",value:function(){Zt.getInstance().hideWidget()}},{key:"setMaxNetworkRequests",value:function(e){y.getInstance().setMaxRequests(e)}},{key:"startNetworkLogger",value:function(){y.getInstance().start()}},{key:"setNetworkLogsBlacklist",value:function(e){y.getInstance().setBlacklist(e)}},{key:"setNetworkLogPropsToIgnore",value:function(e){y.getInstance().setFilters(e)}},{key:"setReplayOptions",value:function(e){th.getInstance().setOptions(e)}},{key:"close",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];Zt.getInstance().hideWidget(e)}},{key:"open",value:function(){Zt.getInstance().setAppMode("widget"),Zt.getInstance().showWidget()}},{key:"trackEvent",value:function(e,t){it.getInstance().logEvent(e,t)}},{key:"logEvent",value:function(e,t){it.getInstance().logEvent(e,t)}},{key:"preFillForm",value:function(e){var t=k(e);Mh.getInstance().formPreFill=t,Zt.getInstance().sendMessage({name:"prefill-form-data",data:t},!0)}},{key:"on",value:function(e,t){Tn.on(e,t)}},{key:"enableShortcuts",value:function(e){e?Eh.getInstance().start():Eh.getInstance().stop()}},{key:"showFeedbackButton",value:function(e){a.getInstance().toggleFeedbackButton(e)}},{key:"setAppVersionCode",value:function(e){nn.setAppVersionCode(e)}},{key:"setAppBuildNumber",value:function(e){nn.setAppBuildNumber(e)}},{key:"setWSApiUrl",value:function(e){et.getInstance().wsApiUrl=e}},{key:"setApiUrl",value:function(e){et.getInstance().apiUrl=e}},{key:"setBannerUrl",value:function(e){qh.getInstance().setBannerUrl(e)}},{key:"setModalUrl",value:function(e){Kh.getInstance().setModalUrl(e)}},{key:"setFrameUrl",value:function(e){Zt.getInstance().frameUrl=e}},{key:"setTicketAttribute",value:function(e,t){xn.getInstance().setTicketAttribute(e,t)}},{key:"unsetTicketAttribute",value:function(e){xn.getInstance().unsetTicketAttribute(e)}},{key:"clearTicketAttributes",value:function(){xn.getInstance().clearTicketAttributes()}},{key:"attachCustomData",value:function(e){xn.getInstance().attachCustomData(e)}},{key:"setCustomData",value:function(e,t){xn.getInstance().setCustomData(e,t)}},{key:"removeCustomData",value:function(e){xn.getInstance().removeCustomData(e)}},{key:"clearCustomData",value:function(){xn.getInstance().clearCustomData()}},{key:"playSound",value:function(e){tf.playSound(e)}},{key:"showTabNotificationBadge",value:function(e){var t=jh.getInstance();t.showNotificationBadge=e,t.updateTabBarNotificationCount()}},{key:"setLanguage",value:function(t){kh.getInstance().setOverrideLanguage(t),e.getInstance().initialized&&setTimeout((function(){e.getInstance().softReInitialize(),e.updateContact({lang:t})}),1e3)}},{key:"registerCustomAction",value:function(e){Dn.registerCustomAction(e)}},{key:"triggerCustomAction",value:function(e){Dn.triggerCustomAction(e)}},{key:"setStyles",value:function(e,t,n){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"#ffffff",r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:20,i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:20,s=arguments.length>6&&void 0!==arguments[6]?arguments[6]:20,l=arguments.length>7&&void 0!==arguments[7]?arguments[7]:a.FEEDBACK_BUTTON_BOTTOM_LEFT;E((function(){!function(e,t,n,o,r,i,s,l){var c=d(e),p=d(n),h=d(r),f=d(t),m="#ffffff"===h,g=u(t,"#ffffff"===f?-35:-15),v=u(r,m?100:-120),y=u(r,m?30:-12),b=u(r,m?80:-30),w=(o=parseInt(o,10),Math.round(1.05*o)),k=Math.round(.8*o),x=Math.round(.6*o),S=Math.round(.4*o),C=Math.round(.25*o),I=57+s;l===a.FEEDBACK_BUTTON_CLASSIC_BOTTOM?I=s+15:(l&&l.includes("CLASSIC")||l===a.FEEDBACK_BUTTON_NONE)&&(I=s);var E='\n .gleap-font, .gleap-font * {\n font-style: normal;\n font-variant-caps: normal;\n font-variant-ligatures: normal;\n font-variant-numeric: normal;\n font-variant-east-asian: normal;\n font-weight: normal;\n font-stretch: normal;\n font-size: 100%;\n line-height: 1;\n font-family: system-ui, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";\n }\n .gleap-input-highlight {\n box-shadow: 0 0 0 3px '.concat(e," !important;\n }\n .gleap-frame-container {\n right: ").concat(i,"px;\n bottom: ").concat(61+s,"px;\n width: calc(100% - 40px);\n max-width: 410px;\n position: fixed;\n z-index: ").concat(2147483631,";\n visibility: visible;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.16);\n border-radius: ").concat(k,"px;\n overflow: hidden;\n animation-duration: .3s;\n animation-fill-mode: both;\n animation-name: gleapFadeInUp;\n user-select: none;\n pointer-events: none;\n transition: max-width 0.3s ease-out;\n }\n\n .gleap-admin-highlight {\n box-shadow: 0px 0px 0px 4px red;\n }\n\n :root {\n --gleap-margin-top: 50px;\n }\n\n .gleap-tooltip-anchor {\n position: relative;\n display: inline-block;\n float: left;\n max-width: 0px;\n width: 17px;\n }\n\n .gleap-tooltip-hotspot {\n position: absolute;\n display: block;\n width: 17px;\n height: 17px;\n cursor: pointer;\n top: 0px;\n left: 0px;\n }\n\n @keyframes gleap-pulse {\n 0% {\n transform: scale(0);\n opacity: 0.25;\n }\n 45% {\n transform: scale(2.5);\n opacity: 0;\n }\n 100% {\n transform: scale(0);\n opacity: 0;\n }\n }\n\n .gleap-tooltip-hotspot-animation {\n position: absolute;\n border-radius: 17px;\n opacity: 0.25;\n display: block;\n width: 17px;\n height: 17px;\n cursor: pointer;\n top: 0px;\n left: 0px;\n animation: gleap-pulse 5s infinite;\n }\n\n .gleap-tooltip-hotspot svg {\n width: 17px;\n height: 17px;\n object-fit: contain;\n display: block;\n }\n\n .gleap-tooltip-inner {\n position: relative;\n overflow: visible;\n font-size: 14px;\n font-weight: normal;\n color: #000;\n line-height: 1.3;\n }\n\n .gleap-tooltip {\n position: absolute;\n background-color: #fff;\n color: #000;\n font-size: 15px;\n line-height: 18px;\n padding: 16px;\n padding-top: 8px;\n padding-bottom: 8px;\n border-radius: 4px;\n max-width: min(350px, 80vw);\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n opacity: 0;\n visibility: hidden;\n transition: opacity 0.2s, visibility 0.2s;\n z-index: ").concat(2147483700,";\n }\n\n .gleap-tooltip a {\n color: ").concat(e,";\n text-decoration: underline;\n display: inline !important;\n margin: 0px !important;\n padding: 0px !important;\n word-break: break-word;\n }\n\n .gleap-tooltip ul {\n padding-left: 16px;\n }\n\n .gleap-tooltip b {\n font-weight: 600;\n }\n\n .gleap-tooltip h2 {\n font-size: 18px;\n line-height: 20px;\n font-weight: 600;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip h3 {\n font-size: 16px;\n line-height: 18px;\n font-weight: 600;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip p {\n padding: 0px;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip img {\n max-width: 100%;\n max-height: 300px;\n width: 100%;\n height: auto;\n object-fit: cover;\n margin-top: 8px;\n margin-bottom: 8px;\n border-radius: 4px;\n }\n\n .gleap-tooltip iframe,\n .gleap-tooltip video {\n max-width: 100%;\n width: 100%;\n height: auto;\n min-height: 200px;\n display: block;\n border: none;\n outline: none;\n padding: 0px;\n margin-top: 8px;\n margin-bottom: 8px;\n border-radius: 4px;\n }\n\n .gleap-tooltip-arrow {\n position: absolute;\n width: 20px;\n height: 20px;\n }\n\n .gleap-tooltip-arrow svg {\n width: 20px;\n height: 20px;\n object-fit: contain;\n }\n\n .gleap-b-frame {\n width: 100%;\n height: 100%;\n border: none;\n pointer-events: auto;\n padding: 0px;\n margin: 0px;\n }\n\n .gleap-b-shown {\n transition: margin 0.3s ease-out;\n margin-top: var(--gleap-margin-top);\n position: relative;\n z-index: 10000;\n }\n\n .gleap-b-f {\n margin-top: 0px;\n }\n\n .gleap-b {\n display: none;\n position: absolute;\n top: calc(-1 * var(--gleap-margin-top));\n left: 0px;\n width: 100vw;\n height: var(--gleap-margin-top);\n z-index: ").concat(2147483699,";\n }\n\n @keyframes gleapSlideIn {\n from {\n top: calc(-1 * var(--gleap-margin-top));\n }\n to {\n top: 10px;\n }\n }\n\n .gleap-b-f .gleap-b {\n position: fixed;\n top: 10px;\n animation: gleapSlideIn .25s ease-out forwards;\n max-width: 800px;\n width: calc(100% - 20px);\n left: 50%;\n z-index: ").concat(2147483699,";\n transform: translateX(-50%);\n border-radius: ").concat(S,"px;\n overflow: hidden;\n box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.15), 0px 5px 5px rgba(0, 0, 0, 0.05);\n }\n\n .gleap-b-shown .gleap-b {\n display: block;\n }\n\n .gleap-image-view {\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n z-index: ").concat(2147483699,";\n background-color: ").concat(h,"cc;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .gleap-image-view-image {\n width: 90%;\n height: auto;\n max-width: 90%;\n max-height: 90%;\n object-fit: contain;\n }\n\n .gleap-image-view-close {\n position: fixed;\n top: 20px;\n right: 20px;\n width: 32px;\n height: 32px;\n opacity: 0.8;\n z-index: ").concat(2147483740,";\n box-shadow: 0px 5px 18px rgba(0, 0, 0, 0.16);\n cursor: pointer;\n }\n\n .gleap-image-view-close:hover {\n opacity: 1;\n }\n\n .gleap-image-view-close svg path {\n fill: ").concat(r,";\n }\n\n [dir=rtl].gleap-frame-container {\n right: auto;\n left: ").concat(i,"px;\n bottom: ").concat(61+s,'px;\n }\n\n .gleap-frame-container--loading iframe {\n opacity: 0;\n }\n\n .gleap-frame-container--loading::before {\n content: " ";\n position: fixed;\n top: 0px;\n left: 0px;\n right: 0px;\n height: 100%;\n max-height: 380px;\n background: linear-gradient(\n 130deg,\n ').concat(g," 0%,\n ").concat(t,' 100%\n );\n }\n \n .gleap-frame-container--loading::after {\n content: " ";\n position: fixed;\n top: 0px;\n left: 0px;\n right: 0px;\n height: 100%;\n height: 100%;\n max-height: 380px;\n background: linear-gradient(\n 180deg,\n transparent 60%,\n ').concat(r,"1A 70%,\n ").concat(r," 100%\n );\n }\n\n .gleap-frame-container--loading-nogradient::before {\n max-height: 340px;\n background: ").concat(t," !important;\n }\n\n .gleap-frame-container--loading-nofade::after {\n display: none !important;\n }\n\n .gleap-frame-container--survey {\n bottom: ").concat(s,"px !important;\n }\n\n .gleap-frame-container--extended {\n max-width: 690px !important;\n }\n\n .gleap-frame-container--survey-full {\n position: fixed;\n top: 0 !important;\n left: 0 !important;\n bottom: 0 !important;\n right: 0 !important;\n width: 100vw !important;\n max-width: 100vw !important;\n height: 100vh;\n height: 100dvh !important;\n background-color: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(6px);\n display: flex !important;\n justify-content: center !important;\n align-items: center !important;\n max-height: 100vh;\n max-height: 100dvh !important;\n border-radius: 0 !important;\n animation-name: none !important;\n }\n\n .gleap-frame-container--survey-full .gleap-frame-container-inner {\n max-width: 640px !important;\n width: calc(100% - 24px);\n border-radius: ").concat(k,"px;\n overflow: hidden;\n }\n\n .gleap-frame-container--classic {\n right: ").concat(i,"px;\n bottom: ").concat(s,"px;\n }\n\n [dir=rtl].gleap-frame-container--classic {\n right: auto;\n left: ").concat(i,"px;\n bottom: ").concat(s,"px;\n }\n\n .gleap-frame-container--no-button {\n bottom: ").concat(s,"px;\n }\n\n [dir=rtl].gleap-frame-container--classic-left {\n bottom: ").concat(s,"px;\n }\n\n .gleap-frame-container--classic-left {\n right: auto;\n left: ").concat(i,"px;\n bottom: ").concat(s,"px;\n }\n\n [dir=rtl].gleap-frame-container--classic-left {\n left: auto;\n right: ").concat(i,"px;\n bottom: ").concat(s,"px;\n }\n\n .gleap-frame-container--modern-left {\n right: auto;\n left: ").concat(i,"px;\n bottom: ").concat(61+s,"px;\n }\n\n [dir=rtl].gleap-frame-container--modern-left {\n left: auto;\n right: ").concat(i,"px;\n bottom: ").concat(61+s,"px;\n }\n\n .gleap-frame-container--animate {\n pointer-events: auto !important;\n }\n\n @keyframes gleapFadeInUp {\n from {\n opacity: 0;\n transform: translate3d(0, 100%, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n\n @keyframes gleapFadeInUpMobile {\n from {\n opacity: 0;\n transform: translate3d(0, 10%, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n\n .gleap-notification-container {\n position: fixed;\n bottom: ").concat(I,"px;\n right: ").concat(i,"px;\n z-index: ").concat(2147483630,";\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n width: 100%;\n max-width: min(340px, 80vw);\n }\n\n .gleap-notification-container--left {\n left: ").concat(4+i,"px;\n right: initial !important;\n }\n\n [dir=rtl].gleap-notification-container {\n left: ").concat(4+i,"px;\n right: initial !important;\n }\n\n [dir=rtl].gleap-notification-container--left {\n left: initial !important;\n right: ").concat(i,"px !important;\n align-items: flex-start !important;\n }\n\n .gleap-notification-container--no-button {\n bottom: ").concat(s,"px;\n }\n\n .gleap-notification-item {\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n\n .gleap-notification-close {\n border-radius: 100%;\n width: 28px;\n height: 28px;\n background-color: ").concat(v,";\n display: flex;\n justify-content: center;\n align-items: center;\n margin-bottom: 8px;\n cursor: pointer;\n visibility: hidden;\n pointer-events: none;\n }\n\n .gleap-notification-container:hover .gleap-notification-close {\n visibility: visible;\n pointer-events: auto;\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-notification-close {\n visibility: visible;\n pointer-events: auto;\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n }\n\n .gleap-notification-close svg {\n width: 45%;\n height: 45%;\n object-fit: contain;\n fill: ").concat(r,";\n }\n\n .gleap-notification-item-checklist-container {\n display: flex;\n animation: fadeIn;\n animation-duration: .45s;\n background-color: ").concat(r,";\n border-radius: ").concat(v,";\n box-sizing: border-box;\n cursor: pointer;\n flex-direction: column;\n overflow: hidden;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ").concat(x,"px;\n margin-bottom: 12px;\n }\n\n .gleap-notification-item-checklist-content {\n align-items: flex-start;\n display: flex;\n flex-direction: column;\n padding: 15px;\n width: 100%;\n width: min(310px, 70vw);\n max-width: min(310px, 70vw);\n }\n\n .gleap-notification-item-checklist-content-title {\n color: ").concat(h,";\n font-size: 15px;\n font-weight: 500;\n line-height: 21px;\n margin-bottom: 10px;\n max-width: 100%;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .gleap-notification-item-checklist-content-progress {\n width: 100%;\n height: 8px;\n border-radius: 8px;\n background-color: ").concat(y,";\n }\n\n .gleap-notification-item-checklist-content-progress-inner {\n height: 100%;\n border-radius: 8px;\n background-color: ").concat(e,";\n }\n\n .gleap-notification-item-checklist-content-next {\n color: ").concat(v,";\n font-size: 15px;\n font-weight: normal;\n line-height: 21px;\n margin-top: 10px;\n max-width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: flex;\n align-items: center;\n }\n\n .gleap-notification-item-checklist-content-next svg {\n height: 18px;\n margin-right: 5px;\n width: auto;\n }\n\n .gleap-notification-item-checklist-content-next b {\n font-size: 15px;\n font-weight: normal;\n color: ").concat(h,";\n }\n\n .gleap-notification-item-news {\n width: 100%;\n }\n\n .gleap-news-pagination {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 10px;\n width: 100%;\n }\n\n .gleap-news-page-indicator {\n font-size: 12px;\n color: ").concat(v,";\n }\n\n .gleap-news-next-button {\n background-color: ").concat(e,";\n color: ").concat(c,";\n border-radius: ").concat(C,"px;\n box-sizing: border-box;\n padding: 5px 10px;\n font-size: 14px;\n font-weight: bold;\n line-height: 21px;\n border: none;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: none !important;\n outline: none !important;^\n }\n\n .gleap-notification-item-news-content {\n align-items: flex-start;\n display: flex;\n flex-direction: column;\n padding: 15px;\n }\n\n .gleap-notification-item-news-preview {\n color: ").concat(v,";\n font-size: 14px;\n line-height: 21px;\n font-weight: 400;\n overflow-wrap: break-word;\n word-break: break-word;\n display: block;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .gleap-notification-item-news-sender {\n display: flex;\n align-items: center;\n color: ").concat(v,";\n font-size: 15px;\n line-height: 21px;\n font-weight: 400;\n }\n \n .gleap-notification-item-news-content-title {\n color: ").concat(h,";\n font-size: 15px;\n font-weight: 500;\n line-height: 21px;\n margin-bottom: 6px;\n max-width: 100%;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n cursor: pointer;\n }\n\n .gleap-notification-item-news-sender img {\n border-radius: 100%;\n height: 20px;\n margin-right: 8px;\n object-fit: cover;\n width: 20px;\n }\n\n [dir=rtl] .gleap-notification-item-news-sender img {\n margin-left: 8px;\n margin-right: 0px !important;\n }\n\n .gleap-notification-item-news-container {\n display: flex;\n animation: fadeIn;\n animation-duration: .45s;\n background-color: ").concat(r,";\n border-radius: ").concat(v,";\n box-sizing: border-box;\n flex-direction: column;\n overflow: hidden;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ").concat(x,"px;\n margin-bottom: 12px;\n }\n\n .gleap-notification-item-news-image {\n background-color: ").concat(v,";\n height: 170px;\n max-height: 170px;\n object-fit: cover;\n width: 100%;\n cursor: pointer;\n }\n \n .gleap-notification-item-news-content-title:hover {\n color: ").concat(e,";\n }\n\n .gleap-notification-item {\n display: flex;\n align-items: flex-end;\n cursor: pointer;\n }\n\n .gleap-notification-item img {\n width: 32px;\n height: 32px;\n min-width: 32px;\n border-radius: 100%;\n object-fit: cover;\n margin-right: 8px;\n margin-bottom: 12px;\n cursor: pointer;\n }\n\n [dir=rtl] .gleap-notification-item img {\n margin-left: 8px;\n margin-right: 0px !important;\n }\n\n .gleap-notification-item-container {\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ").concat(x,"px;\n border-bottom-left-radius: 0px;\n padding: 20px;\n background-color: ").concat(r,";\n margin-bottom: 12px;\n cursor: pointer;\n font-size: 15px;\n line-height: 21px;\n color: ").concat(h,';\n position: relative;\n }\n\n .gleap-notification-item-container::after {\n content: " ";\n position: absolute;\n bottom: 0px;\n width: 0px;\n height: 0px;\n left: -6px;\n border-style: solid;\n border-width: 0px 0px 10px 6px;\n border-color: transparent transparent ').concat(r,";\n }\n\n .gleap-notification-item-sender {\n color: ").concat(v,";\n line-height: 20px;\n }\n\n .gleap-notification-item-content {\n line-height: 20px;\n color: ").concat(h,";\n margin-top: 4px;\n min-width: min(200px, 50vw);\n word-wrap: break-word;\n word-break: break-word;\n }\n\n .gleap-frame-container-inner {\n position: relative;\n width: 100%;\n height: calc(100vh - ").concat(84+s,"px);\n max-height: ").concat(700,'px;\n }\n\n .gleap-frame-container--survey .gleap-frame-container-inner {\n height: calc(100vh - 40px);\n }\n \n .gleap-frame-container-inner:before {\n content: " ";\n position: absolute;\n width: 100%;\n height: calc(100% - ').concat(k,"px);\n top: ").concat(k,"px;\n background-color: ").concat(r,";\n z-index: -1;\n }\n \n .gleap-frame-container iframe {\n height: 100% !important;\n width: 100% !important;\n max-width: 100% !important;\n display: block !important;\n pointer-events: auto !important;\n }\n \n .gleap-frame-container--hidden {\n display: none !important;\n pointer-events: none;\n animation: none !important;\n }\n \n .bb-feedback-button {\n margin: 0px;\n position: fixed;\n bottom: ").concat(s,"px;\n right: ").concat(i,"px;\n border-radius: 30px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n background-color: transparent;\n color: #000000;\n z-index: ").concat(2147483630,";\n box-sizing: border-box;\n display: flex;\n align-items: center;\n padding: 0px;\n }\n\n [dir=rtl].bb-feedback-button {\n bottom: ").concat(s,"px;\n right: auto;\n left: ").concat(i,"px;\n }\n \n .bb-feedback-button--bottomleft {\n bottom: ").concat(s,"px;\n right: auto;\n left: ").concat(i,"px;\n }\n\n [dir=rtl].bb-feedback-button--bottomleft {\n bottom: ").concat(s,"px;\n right: ").concat(i,'px;\n left: auto;\n }\n \n .bb-feedback-button--disabled {\n display: none !important;\n }\n\n .bb-feedback-button--hidden {\n display: none !important;\n }\n \n .bb-feedback-button-text {\n padding: 8px 12px;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n background-color: #fff;\n border-radius: 8px;\n box-shadow: 0px 0px 14px 0px rgba(0, 0, 0, 0.15);\n position: relative;\n z-index: 99;\n }\n \n .bb-feedback-button-text:before {\n content: "";\n position: absolute;\n box-shadow: rgba(0, 0, 0, 0.04) 6px 6px 5px;\n transform: rotate(315deg);\n bottom: 16px;\n right: -4px;\n border-width: 10px;\n border-style: solid;\n border-color: transparent #fff #fff transparent;\n }\n \n .bb-feedback-button--bottomleft .bb-feedback-button-text:before {\n display: none;\n }\n \n .bb-feedback-button-text:after {\n content: "";\n position: absolute;\n bottom: 12px;\n right: 0px;\n background-color: #fff;\n width: 5px;\n height: 30px;\n }\n \n .bb-feedback-button-text-title {\n font-family: sans-serif;\n font-size: 14px;\n color: #666;\n line-height: 18px;\n max-width: 220px;\n }\n \n .bb-feedback-button-text-title b {\n color: #000000;\n font-weight: 600;\n }\n\n .bb-notification-bubble {\n position: absolute;\n top: -5px;\n right: -5px;\n min-width: 12px;\n padding: 0px 4px;\n height: 20px;\n min-width: 20px;\n border-radius: 20px;\n background-color: red;\n color: #fff;\n font-size: 11px;\n font-family: sans-serif;\n text-align: center;\n line-height: 20px;\n }\n\n .bb-notification-bubble--hidden {\n display: none;\n }\n \n .bb-feedback-button-icon {\n width: 48px;\n height: 48px;\n border-radius: 48px;\n background-color: #485bff;\n transition: box-shadow, transform 0.2s ease-in-out;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n position: relative;\n }\n \n .bb-feedback-button-classic {\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n top: 50%;\n right: 0px;\n position: fixed;\n transform: rotate(-90deg) translate(50%, -50%);\n transform-origin: 100% 50%;\n padding: 9px 20px;\n text-align: center;\n background-color: #485bff;\n border-top-left-radius: 8px;\n border-top-right-radius: 8px;\n font-family: sans-serif;\n font-size: 16px;\n color: #fff;\n box-shadow: 0px 0px 14px 0px rgba(0, 0, 0, 0.25);\n }\n\n [dir=rtl].bb-feedback-button .bb-feedback-button-classic {\n top: 50%;\n left: 0px;\n right: auto;\n transform: rotate(90deg) translate(-50%, -100%);\n transform-origin: 0% 0%;\n }\n \n .bb-feedback-button-classic--left {\n top: 50%;\n left: 0px;\n right: auto;\n transform: rotate(90deg) translate(-50%, -100%);\n transform-origin: 0% 0%;\n }\n\n [dir=rtl].bb-feedback-button .bb-feedback-button-classic--left {\n top: 50%;\n right: 0px;\n left: auto;\n transform: rotate(-90deg) translate(50%, -50%);\n transform-origin: 100% 50%;\n }\n \n .bb-feedback-button-classic--bottom {\n top: auto;\n bottom: 0px;\n transform: none;\n right: ').concat(i,"px;\n left: auto;\n }\n \n [dir=rtl].bb-feedback-button .bb-feedback-button-classic--bottom {\n top: auto;\n bottom: 0px;\n transform: none;\n left: ").concat(i,"px;\n right: auto;\n }\n\n .bb-feedback-button--classic-button-style {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n \n .bb-feedback-button--open.bb-feedback-button--classic-button-style {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: bbFadeOutRight;\n }\n \n .bb-feedback-button .bb-logo-logo {\n position: absolute;\n width: 30px;\n height: 30px;\n top: 9px;\n left: 9px;\n object-fit: contain;\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-name: bbZoomIn;\n }\n \n .bb-feedback-button .bb-logo-arrowdown {\n position: absolute;\n width: 14px;\n height: 14px;\n top: 17px;\n left: 17px;\n object-fit: contain;\n animation-duration: 0.3s;\n animation-fill-mode: both;\n }\n \n .bb-feedback-button .bb-logo-arrowdown {\n animation-name: bbZoomOut;\n }\n \n .bb-feedback-button--open .bb-logo-arrowdown {\n animation-name: bbZoomIn;\n }\n \n .bb-feedback-button--open .bb-logo-logo {\n animation-name: bbZoomOut;\n }\n \n .bb-feedback-button-icon:hover {\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.25), 0px 0px 20px rgba(0, 0, 0, 0.2);\n transform: scale(1.1);\n }\n \n .bb-feedback-button--open .bb-feedback-button-text {\n animation-name: bbFadeOutDown;\n }\n \n .bb-feedback-button--open .bb-feedback-button-icon {\n display: flex;\n }\n \n .bb-capture-svg {\n position: fixed;\n z-index: ").concat(2147483614,";\n top: 0px;\n left: 0px;\n right: 0px;\n width: 100%;\n height: 100%;\n padding: 0px;\n margin: 0px;\n cursor: crosshair;\n }\n\n .bb-capture-svg--preview {\n cursor: auto !important;\n }\n \n .bb-rec-on-circle {\n animation-name: bbRecIconFade;\n animation-duration: 2s;\n animation-iteration-count: infinite;\n animation-direction: alternate;\n }\n \n .bb-rec-on-cont {\n animation-name: bbRecIconContFade;\n animation-duration: 2s;\n animation-iteration-count: infinite;\n animation-direction: alternate;\n }\n \n .bb-capture-editor-drag-info {\n position: fixed;\n top: -200px;\n left: 0px;\n z-index: ").concat(2147483616,";\n transition: opacity 0.3s ease-in-out;\n }\n \n .bb-capture-editor-drag-info svg {\n width: 24px;\n height: 24px;\n }\n \n .bb-capture-editor-borderlayer {\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n border: 4px solid ").concat(e,";\n cursor: crosshair;\n z-index: ").concat(2147483610,";\n box-sizing: border-box;\n pointer-events: none;\n }\n \n .bb-capture-editor-notrecording .bb-capture-editor-borderlayer {\n background-color: rgba(0, 0, 0, 0.8);\n }\n\n .bb-capture-editor-recording .bb-capture-editor-borderlayer {\n border: 4px solid #eb144c !important;\n }\n \n .bb-capture-editor-recording .bb-capture-dismiss {\n display: none;\n }\n \n .bb-capture-editor-item-inactive {\n opacity: 0.3;\n cursor: not-allowed !important;\n }\n \n .bb-capture-editor-notrecording .bb-capture-toolbar-drawingitem {\n opacity: 0.3;\n cursor: not-allowed !important;\n }\n \n .bb-capture-editor-notrecording .bb-capture-editor-drag-info {\n display: none;\n }\n \n .bb-capture-editor-notrecording .bb-capture-svg {\n pointer-events: none !important;\n }\n \n .bb-capture-toolbar {\n position: fixed;\n top: 20px;\n left: 50%;\n transform: translateX(-50%);\n z-index: ").concat(2147483618,";\n background-color: #fff;\n padding: 5px;\n display: flex;\n align-items: center;\n border-radius: 8px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n transition: opacity 0.3s ease-in-out;\n }\n \n .bb-capture-dismiss {\n position: fixed;\n top: 0px;\n right: 0px;\n z-index: ").concat(2147483618,";\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n width: 36px;\n height: 36px;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: ").concat(e,";\n border-bottom-left-radius: ").concat(C,"px;\n }\n\n [dir=rtl] .bb-capture-dismiss {\n top: 0px;\n left: 0px;\n right: auto;\n border-bottom-left-radius: 0px !important;\n border-bottom-right-radius: ").concat(C,"px;\n }\n \n .bb-capture-dismiss svg path {\n fill: ").concat(c,';\n }\n \n .bb-capture-dismiss svg {\n width: 20px;\n height: 20px;\n object-fit: contain;\n }\n \n .bb-capture-button-next {\n font-family: sans-serif;\n box-sizing: border-box;\n font-weight: 600;\n text-align: center;\n width: auto;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n margin: 0px;\n line-height: 36px;\n padding: 0px 12px;\n font-size: 15px;\n margin-left: 12px;\n }\n\n [dir=rtl].bb-capture-editor .bb-capture-button-next {\n margin-left: auto;\n margin-right: 12px;\n }\n \n .bb-capture-toolbar-item-spacer {\n width: 1px;\n height: 38px;\n min-width: 1px;\n margin: 0px 5px;\n }\n \n .bb-capture-toolbar-item {\n width: 42px;\n height: 38px;\n min-width: 42px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n position: relative;\n margin-right: 5px;\n }\n\n .drag-handle-item {\n cursor: grab !important;\n width: 34px;\n min-width: 34px;\n }\n\n .drag-handle-item svg {\n width: 18px !important;\n height: 18px !important;\n }\n \n .bb-capture-toolbar-item svg {\n width: 23px;\n height: 23px;\n object-fit: contain;\n }\n \n .bb-capture-toolbar-item-selectedcolor {\n border-radius: 100%;\n width: 20px;\n height: 20px;\n background-color: #db4035;\n }\n \n .bb-capture-toolbar-item[data-type="undo"] svg {\n width: 18px;\n height: 18px;\n }\n \n .bb-capture-toolbar-item[data-active="true"] {\n position: relative;\n }\n \n .bb-capture-preview {\n display: none;\n background-color: rgba(0, 0, 0, 0.6);\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n justify-content: center;\n align-items: center;\n z-index: ').concat(2147483620,";\n }\n \n .bb-capture-preview-inner {\n background-color: #fff;\n padding: 0px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n border-radius: 8px;\n flex-direction: column;\n max-width: 640px;\n width: 100%;\n margin: 20px;\n }\n \n .bb-capture-preview-inner video {\n border-radius: 8px 8px 0px 0px;\n display: block;\n border: 0px;\n outline: none;\n width: 100%;\n max-height: 60vh;\n }\n \n .bb-capture-preview-buttons {\n display: flex;\n justify-content: space-between;\n padding: 14px;\n }\n \n .bb-capture-preview-retrybutton {\n font-family: sans-serif;\n border-radius: 21px;\n box-sizing: border-box;\n padding: 12px 26px;\n font-size: 16px;\n line-height: 19px;\n font-weight: 600;\n text-align: center;\n margin-top: 0px;\n margin-bottom: 0px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-preview-sendbutton {\n font-family: sans-serif;\n border-radius: 21px;\n box-sizing: border-box;\n padding: 12px 26px;\n font-size: 16px;\n line-height: 19px;\n font-weight: 600;\n text-align: center;\n margin-top: 0px;\n margin-bottom: 0px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-preview-retrybutton:hover,\n .bb-capture-preview-sendbutton:hover {\n opacity: 0.9;\n }\n \n .bb-capture-toolbar-item-recording {\n margin-right: 0px;\n }\n \n .bb-capture-toolbar-item-recording svg {\n width: 33px;\n height: 33px;\n }\n \n .bb-capture-toolbar-item-colorpicker {\n position: fixed;\n top: 70px;\n left: 50%;\n transform: translateX(-50%);\n z-index: ").concat(2147483618,';\n background-color: #fff;\n display: none;\n padding: 10px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n border-radius: 8px;\n }\n \n .bb-capture-toolbar-item-color {\n width: 20px;\n height: 20px;\n border-radius: 100%;\n margin-right: 12px;\n box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.15);\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-toolbar-item-color:hover {\n box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.25);\n }\n \n .bb-capture-toolbar-item-color:last-of-type {\n margin-right: 0px;\n }\n \n [dir=rtl].bb-capture-editor .bb-capture-toolbar-item-color {\n margin-right: auto;\n margin-left: 12px;\n }\n \n [dir=rtl].bb-capture-editor .bb-capture-toolbar-item-color:last-of-type {\n margin-right: auto;\n margin-left: 0px;\n }\n \n .bb-capture-toolbar-item-recording[data-active="true"] svg:first-of-type {\n display: none;\n }\n \n .bb-capture-toolbar-item-recording[data-active="true"] svg:nth-of-type(2) {\n display: block;\n }\n \n .bb-capture-toolbar-item-recording[data-active="false"] svg:first-of-type {\n display: block;\n }\n \n .bb-capture-toolbar-item-recording[data-active="false"] svg:nth-of-type(2) {\n display: none;\n }\n \n .bb-capture-toolbar-item--active {\n background-color: #eee;\n }\n \n .bb-capture-toolbar-item:hover svg {\n opacity: 1;\n }\n \n .bb-capture-toolbar-item--active {\n background-color: #f8f8f8;\n }\n \n .bb-capture-toolbar-item--active svg {\n opacity: 1;\n }\n \n .bb-capture-toolbar-item--inactivecross::before {\n content: "";\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n height: 3px;\n width: 26px;\n margin: auto;\n border-radius: 4px;\n background-color: #e80000;\n transform: rotate(45deg);\n }\n \n .bb-capture-toolbar-item--inactivecross svg {\n fill: #eee;\n }\n \n .bb-capture-toolbar-item-timer {\n text-align: left;\n line-height: 32px;\n font-size: 14px;\n font-family: sans-serif;\n margin: 5px;\n min-width: 40px;\n display: none;\n }\n \n .bb-capture-toolbar-item .bb-tooltip {\n background-color: #555;\n color: #fff;\n visibility: hidden;\n font-size: 14px;\n font-family: sans-serif;\n text-align: center;\n padding: 5px 10px;\n position: absolute;\n z-index: 1;\n top: 45px;\n left: 0px;\n transform: translateX(calc(-50% + 21px));\n opacity: 0;\n transition: opacity 0.3s;\n white-space: nowrap;\n }\n \n .bb-capture-toolbar-item .bb-tooltip::after {\n content: "";\n position: absolute;\n bottom: 100%;\n left: 50%;\n margin-left: -5px;\n border-width: 5px;\n border-style: solid;\n transform: rotate(180deg);\n border-color: #555 transparent transparent transparent;\n }\n \n .bb-capture-toolbar-item:hover .bb-tooltip {\n visibility: visible;\n opacity: 1;\n }\n \n .bb-capture-options {\n display: none;\n }\n \n .bb-capture-options--active {\n display: flex;\n }\n\n @keyframes bbFadeOutRight {\n from {\n opacity: 1;\n }\n \n to {\n opacity: 0;\n }\n }\n \n @keyframes bbFadeOutDown {\n from {\n opacity: 1;\n }\n \n to {\n opacity: 0;\n transform: translate3d(0, 100%, 0);\n }\n }\n \n @keyframes bbFadeInOpacity {\n from {\n opacity: 0;\n }\n \n to {\n opacity: 1;\n }\n }\n \n @keyframes bbZoomOut {\n from {\n opacity: 1;\n }\n \n 50% {\n opacity: 0;\n transform: scale3d(0.3, 0.3, 0.3);\n }\n \n to {\n opacity: 0;\n }\n }\n \n @keyframes bbZoomIn {\n from {\n opacity: 0;\n transform: scale3d(0.3, 0.3, 0.3);\n }\n \n 50% {\n opacity: 1;\n }\n }\n \n @keyframes bbRecIconContFade {\n 0% {\n fill: #b10802;\n }\n 50% {\n fill: #ff0000;\n }\n 100% {\n fill: #b10802;\n }\n } \n .bb-capture-preview-retrybutton {\n color: ').concat(h,";\n border-radius: ").concat(w,"px;\n background-color: ").concat(y,";\n }\n .bb-capture-preview-retrybutton:hover {\n background-color: ").concat(b,";\n }\n @keyframes bb-suc-fill {\n 100% {\n box-shadow: inset 0px 0px 0px 30px ").concat(e,";\n }\n }\n .bb-capture-toolbar-item-spacer {\n background-color: ").concat(y,";\n }\n .bb-tooltip {\n border-radius: ").concat(S,"px;\n }\n @keyframes bbRecIconFade {\n 0% {\n fill: transparent;\n }\n 50% {\n fill: ").concat(b,";\n }\n 100% {\n fill: transparent;\n }\n }\n .bb-capture-preview-sendbutton {\n color: ").concat(c,";\n background-color: ").concat(e,";\n border-radius: ").concat(w,"px;\n }\n .bb-capture-button-next {\n color: ").concat(c,";\n background-color: ").concat(e,";\n border-radius: ").concat(C,"px;\n }\n .bb-capture-preview-inner {\n background-color: ").concat(r,";\n border-radius: ").concat(S,"px;\n }\n .bb-capture-toolbar-item-timer {\n color: ").concat(v,";\n }\n .bb-svg-path {\n fill: ").concat(h,";\n }\n .bb-capture-toolbar-item {\n border-radius: ").concat(S,"px;\n }\n .bb-capture-toolbar {\n background-color: ").concat(r,";\n border-radius: ").concat(S,"px;\n }\n .bb-capture-toolbar-item-colorpicker {\n background-color: ").concat(r,";\n }\n .bb-capture-toolbar-item--active {\n background-color: ").concat(y,";\n }\n .bb-feedback-button-classic {\n border-top-left-radius: ").concat(S,"px;\n border-top-right-radius: ").concat(S,"px;\n }\n .bb-logo-logo--default path {\n fill: ").concat(p,";\n }\n .bb-logo-arrowdown {\n fill: ").concat(p,";\n }\n .bb-feedback-button-icon {\n background-color: ").concat(n,";\n }\n .bb-feedback-button-classic {\n background-color: ").concat(n,";\n color: ").concat(p,";\n }\n\n @media only screen and (max-width: 450px) {\n [dir=rtl].gleap-frame-container,\n .gleap-frame-container {\n left: 0px;\n right: 0px;\n width: 100vw;\n max-width: 100vw;\n min-height: 100vh;\n max-height: 100vh;\n min-height: 100dvh !important;\n max-height: 100dvh !important;\n top: 0px;\n bottom: 0px;\n border-radius: 0px;\n animation-name: gleapFadeInUpMobile;\n }\n\n .gleap-frame-container-inner {\n width: 100vw;\n height: 100%;\n }\n\n .gleap-frame-container:not(.gleap-frame-container--survey):not(.gleap-frame-container--survey-full) .gleap-frame-container-inner {\n max-height: calc(var(--glvh, 1vh) * 100) !important;\n }\n\n .gleap-frame-container--survey {\n height: auto !important;\n top: initial !important;\n bottom: 0px !important;\n min-height: initial !important;\n }\n\n .gleap-frame-container--survey .gleap-frame-container-inner {\n height: 100vh !important;\n }\n\n .bb-tooltip {\n display: none !important;\n }\n \n .bb-capture-toolbar-item-colorpicker {\n top: 75px;\n }\n \n .bb-capture-button-next {\n margin-left: auto;\n }\n \n .bb-capture-dismiss {\n display: none;\n }\n \n .bb-capture-toolbar {\n top: 15px;\n right: 15px;\n left: 15px;\n width: auto;\n transform: none;\n }\n\n .bb-capture-editor-drag-info {\n display: none;\n }\n \n .bb-capture-editor-borderlayer {\n border-width: 4px;\n }\n }\n \n @media print {\n .bb-feedback-button {\n display: none !important;\n }\n \n .gleap-frame-container {\n display: none !important;\n }\n }\n\n .gleap-tour-sender {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n margin-bottom: 10px;\n }\n\n .gleap-tour-sender-image {\n width: 32px;\n height: 32px;\n border-radius: 32px;\n margin-right: 10px;\n background-size: cover;\n background-repeat: no-repeat;\n }\n\n .gleap-tour-popover.gleap-tour-popover-post {\n min-width: 550px;\n max-width: 550px;\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-tour-popover.gleap-tour-popover-post {\n min-width: calc(100vw - 40px);\n max-width: calc(100vw - 40px);\n }\n }\n\n .gleap-tour-message,\n .gleap-tour-message p,\n .gleap-tour-message ul {\n color: ").concat(h,";\n }\n\n .gleap-tour-message h2 {\n font-weight: 600;\n font-size: 22px;\n }\n\n .gleap-tour-message h3 {\n font-weight: 600;\n font-size: 18px;\n }\n\n .gleap-tour-message p {\n line-height: 1.3;\n margin-bottom: 10px !important;\n margin-top: 10px !important;\n }\n\n .gleap-tour-message ul {\n line-height: 1.3;\n padding-left: 20px;\n margin-top: 10px !important;\n margin-bottom: 10px !important;\n }\n\n .gleap-tour-message {\n max-height: calc(80vh - 100px) !important;\n overflow-y: auto;\n min-width: 270px;\n }\n\n .gleap-tour-message::-webkit-scrollbar {\n width: 5px;\n }\n\n .gleap-tour-message::-webkit-scrollbar-track {\n border-radius: 0px;\n }\n \n .gleap-tour-message::-webkit-scrollbar-thumb {\n background: ").concat(b,"; \n border-radius: 5px;\n }\n\n .gleap-tour-message::-webkit-scrollbar-thumb:hover {\n background: ").concat(v,";\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-tour-message {\n min-width: auto !important;\n }\n }\n\n .gleap-tour-message iframe {\n width: 100%;\n height: 300px;\n margin-top: 10px;\n margin-bottom: 10px;\n border: none;\n outline: none;\n display: block;\n }\n\n .gleap-tour-sender-name {\n font-size: 15px;\n }\n\n .gleap-tour-video {\n width: 100%;\n max-width: 100%;\n }\n\n .gleap-tour-video-svg--fullscreen {\n width: 100% !important;\n height: 100% !important;\n top: 0px !important;\n left: 0px !important;\n right: 0px !important;\n bottom: 0px !important;\n }\n\n .gleap-tour-video--playing .gleap-tour-video-playpause {\n opacity: 0;\n }\n \n .gleap-tour-video--playing:hover .gleap-tour-video-playpause {\n opacity: 1;\n }\n\n .gleap-tour-popover-video-pointer {\n padding: 0px !important;\n border-radius: 8px;\n position: relative;\n background-color: transparent !important;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-footer {\n position: absolute;\n top: 0px;\n left: 20px;\n right: 20px;\n opacity: 0;\n transition: opacity 200ms ease-in-out;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-footer button {\n padding: 5px 12px;\n }\n\n .gleap-tour-popover-video-pointer.gleap-tour-popover-can-close .gleap-tour-popover-footer {\n right: 40px !important;\n }\n\n .gleap-tour-popover-video-pointer:hover .gleap-tour-popover-footer {\n opacity: 1;\n }\n\n .gleap-tour-popover-pointer.gleap-tour-popover-no-sender .gleap-tour-message {\n padding-right: 20px;\n }\n\n .gleap-tour-video video {\n width: 100%;\n max-width: 100%;\n height: auto;\n border: none;\n outline: none;\n display: block;\n border-radius: 8px;\n }\n\n .gleap-admin-collapse-ui {\n z-index: ").concat(2147483635,";\n cursor: pointer;\n position: fixed;\n bottom: 75px;\n right: 20px;\n width: 32px;\n height: 32px;\n border-radius: 100%;\n background-color: #fff;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: rgba(0, 0, 0, 0.16) 0px 10px 36px 0px, rgba(0, 0, 0, 0.06) 0px 0px 0px 1px;\n }\n\n .gleap-admin-collapse-ui svg {\n width: 20px;\n height: 14px;\n fill: #000 !important;\n }\n\n .gleap-admin-collapse-ui-active {\n bottom: 20px !important;\n }\n\n .gleap-admin-collapse-ui-active svg {\n transform: rotate(180deg);\n }\n\n .gleap-admin-frame-container-active {\n display: none !important;\n }\n\n .gleap-admin-frame-container {\n position: fixed;\n bottom: 0px;\n left: 0px;\n right: 0px;\n width: 100vw;\n z-index: ").concat(2147483640,";\n }\n\n .gleap-admin-frame {\n width: 100%;\n height: 100% !important;\n border: none;\n outline: none;\n display: block;\n }\n \n .gleap-tour-message .linktype-link {\n display: inline-block !important;\n background-color: transparent !important;\n color: ").concat(n," !important;\n }\n\n .gleap-tooltip .linktype-button,\n .gleap-tour-message .linktype-button {\n display: inline-block !important;\n border-radius: 5px;\n box-sizing: border-box;\n padding: 10px 20px !important;\n text-decoration: none !important;\n background-color: ").concat(n," !important;\n color: ").concat(p," !important;\n }\n\n .gleap-tour-message img {\n width: 100%;\n max-width: 100%;\n min-height: 260px;\n height: auto;\n margin-top: 10px;\n margin-bottom: 10px;\n object-fit: cover;\n }\n\n .gleap-tour-active .gleap-tour-overlay {\n pointer-events: none;\n }\n \n .gleap-tour-active * {\n pointer-events: none;\n }\n \n .gleap-tour-active .gleap-tour-active-element,\n .gleap-tour-active .gleap-tour-active-element *,\n .gleap-tour-popover,\n .gleap-tour-popover * {\n pointer-events: auto;\n }\n \n @keyframes animate-fade-in {\n 0% {\n opacity: 0;\n }\n \n to {\n opacity: 1;\n }\n }\n \n .gleap-tour-fade .gleap-tour-overlay {\n animation: animate-fade-in 200ms ease-in-out;\n }\n \n .gleap-tour-fade .gleap-tour-popover {\n animation: animate-fade-in 200ms;\n }\n\n .gleap-tour-video-playpause {\n position: absolute;\n bottom: 8px;\n left: 8px;\n width: 32px;\n height: 32px;\n padding: 4px;\n background-color: rgba(0,0,0,0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border-radius: 8px;\n transition: opacity 200ms ease-in-out;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-arrow {\n display: none !important;\n }\n\n .gleap-tour-video-playpause svg {\n width: 34px;\n height: auto;\n fill: #fff;\n }\n \n /* Popover styles */\n .gleap-tour-popover {\n all: unset;\n box-sizing: border-box;\n color: #2d2d2d;\n margin: 0;\n padding: 15px;\n border-radius: ").concat(S,'px;\n min-width: 250px;\n max-width: 300px;\n box-shadow: 0 1px 10px #0006;\n z-index: 1000000000;\n position: fixed;\n top: 0;\n right: 0;\n background-color: #fff;\n }\n \n .gleap-tour-popover * {\n font-family: "Helvetica Neue", Inter, ui-sans-serif, "Apple Color Emoji", Helvetica, Arial, sans-serif;\n }\n \n .gleap-tour-popover-title {\n font: 19px / normal sans-serif;\n font-weight: 700;\n display: block;\n position: relative;\n line-height: 1.5;\n zoom: 1;\n margin: 0;\n }\n \n .gleap-tour-popover-close-btn {\n all: unset;\n position: absolute;\n top: 5px;\n right: 5px;\n width: 32px;\n height: 32px;\n cursor: pointer;\n font-size: 30px;\n font-weight: 500;\n line-height: 32px;\n color: #d2d2d2;\n z-index: 1;\n text-align: center;\n transition: color;\n transition-duration: 200ms;\n }\n \n .gleap-tour-popover-close-btn:hover,\n .gleap-tour-popover-close-btn:focus {\n color: #2d2d2d;\n }\n \n .gleap-tour-popover-title[style*="block"] + .gleap-tour-popover-description {\n margin-top: 5px;\n }\n \n .gleap-tour-popover-description {\n margin-bottom: 0;\n font: 15px / normal sans-serif;\n line-height: 1.5;\n font-weight: 400;\n zoom: 1;\n }\n \n .gleap-tour-popover-footer {\n margin-top: 15px;\n text-align: right;\n zoom: 1;\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n \n .gleap-tour-popover-progress-text {\n font-size: 13px;\n font-weight: 400;\n color: #727272;\n zoom: 1;\n }\n \n .gleap-tour-popover-footer button {\n background-color: ').concat(e,";\n color: ").concat(c,";\n border-radius: ").concat(C,"px;\n box-sizing: border-box;\n padding: 10px 20px;\n font-size: 14px;\n font-weight: bold;\n line-height: 21px;\n border: none;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: none !important;\n outline: none !important;\n }\n\n .gleap-tour-popover-prev-btn {\n color: ").concat(h," !important;\n background-color: ").concat(y," !important;\n margin-right: 3px;\n }\n\n .gleap-tour-popover-prev-btn:hover {\n background-color: ").concat(e,"22 !important;\n color: ").concat(e,' !important;\n }\n \n .gleap-tour-popover-footer .gleap-tour-popover-btn-disabled {\n opacity: 0.5;\n pointer-events: none;\n }\n \n /* Disable the scrolling of parent element if it has an active element*/\n :not(body):has(> .gleap-tour-active-element) {\n overflow: hidden !important;\n }\n \n .gleap-tour-no-interaction, .gleap-tour-no-interaction * {\n pointer-events: none !important;\n }\n \n .gleap-tour-popover-navigation-btns {\n display: flex;\n flex-grow: 1;\n justify-content: flex-end;\n }\n \n .gleap-tour-popover-navigation-btns button + button {\n margin-left: 4px;\n }\n \n .gleap-tour-popover-arrow {\n content: "";\n position: absolute;\n border: 5px solid #fff;\n }\n \n .gleap-tour-popover-arrow-side-over {\n display: none;\n }\n \n /** Popover Arrow Sides **/\n .gleap-tour-popover-arrow-side-left {\n left: 100%;\n border-right-color: transparent;\n border-bottom-color: transparent;\n border-top-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-right {\n right: 100%;\n border-left-color: transparent;\n border-bottom-color: transparent;\n border-top-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-top {\n top: 100%;\n border-right-color: transparent;\n border-bottom-color: transparent;\n border-left-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-bottom {\n bottom: 100%;\n border-left-color: transparent;\n border-top-color: transparent;\n border-right-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-center {\n display: none;\n }\n \n /* Left/Start + Right/Start */\n .gleap-tour-popover-arrow-side-left.gleap-tour-popover-arrow-align-start,\n .gleap-tour-popover-arrow-side-right.gleap-tour-popover-arrow-align-start {\n top: 15px;\n }\n \n /* Top/Start + Bottom/Start */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-start,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-start {\n left: 15px;\n }\n \n /* End/Left + End/Right */\n .gleap-tour-popover-arrow-align-end.gleap-tour-popover-arrow-side-left,\n .gleap-tour-popover-arrow-align-end.gleap-tour-popover-arrow-side-right {\n bottom: 15px;\n }\n \n /* Top/End + Bottom/End */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-end,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-end {\n right: 15px;\n }\n \n /* Left/Center + Right/Center */\n .gleap-tour-popover-arrow-side-left.gleap-tour-popover-arrow-align-center,\n .gleap-tour-popover-arrow-side-right.gleap-tour-popover-arrow-align-center {\n top: 50%;\n margin-top: -5px;\n }\n \n /* Top/Center + Bottom/Center */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-center,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-center {\n left: 50%;\n margin-left: -5px;\n }\n \n /* No arrow */\n .gleap-tour-popover-arrow-none {\n display: none;\n } \n\n /* Modal styles */\n .gleap-modal-wrapper {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: ').concat(2147483640,";\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .gleap-modal-backdrop {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.5);\n z-index: ").concat(2147483641,";\n }\n\n .gleap-modal {\n position: relative;\n width: 90%;\n max-width: 600px;\n max-height: 90vh;\n z-index: ").concat(2147483700,";\n background-color: ").concat(r,";\n border-radius: ").concat(k,"px;\n overflow: hidden;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-name: gleapFadeInUp;\n }\n\n .gleap-modal-frame {\n width: 100%;\n border: none;\n display: block;\n outline: none;\n }\n\n body.gleap-modal-open {\n overflow: hidden;\n }\n\n @keyframes gleapFadeInUp {\n from {\n opacity: 0;\n transform: translate3d(0, 20px, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n "),T=document.querySelector(".gleap-styles");T&&T.remove();var O=document.createElement("style");O.innerHTML=E,O.className="gleap-styles",document.body.appendChild(O)}(e,t,n,r,o,i,s,l)}))}},{key:"sendSilentCrashReport",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"MEDIUM",o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{screenshot:!0,replays:!0,attachments:!0};return e.sendSilentCrashReportWithFormData({description:t},n,o)}},{key:"sendSilentCrashReportWithFormData",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"MEDIUM",o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{screenshot:!0,replays:!0,attachments:!0};if(!this.silentCrashReportSent){this.silentCrashReportSent=!0,setTimeout((function(){t.silentCrashReportSent=!1}),1e4);var r=o?k(o):{},i=et.getInstance();if(i.ready){var a=e||{};i.session.email&&(a.reportedBy=i.session.email),new Wt("CRASH",n,a,!0,r).sendFeedback().then((function(){})).catch((function(e){}))}}}},{key:"showSurvey",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"survey";e.startFeedbackFlowWithOptions(t,{hideBackButton:!0,format:n},!0)}},{key:"startClassicForm",value:function(t,n){e.startFeedbackFlowWithOptions(t,{hideBackButton:!n})}},{key:"startFeedbackFlow",value:function(t,n){e.startFeedbackFlowWithOptions(t,{hideBackButton:!n})}},{key:"startFeedbackFlowWithOptions",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=n.autostartDrawing,i=n.hideBackButton,a=n.format;if(et.getInstance().ready){e.getInstance().setGlobalDataItem("snapshotPosition",{x:window.scrollX,y:window.scrollY});var s="start-feedbackflow";o&&(s="start-survey"),Zt.getInstance().setAppMode(o?a:"widget"),Zt.getInstance().sendMessage({name:s,data:{flow:t,hideBackButton:i,format:a}},!0),r?Zt.getInstance().showDrawingScreen("screenshot"):Zt.getInstance().showWidget()}}},{key:"openConversations",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-conversations",data:{hideBackButton:!e}},!0),Zt.getInstance().showWidget()}},{key:"openConversation",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e&&(Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-conversation",data:{shareToken:e,hideBackButton:!t}},!0),Zt.getInstance().showWidget())}},{key:"startConversation",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];e.startBot("",t)}},{key:"startBot",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"start-bot",data:{botId:e||"",hideBackButton:!t}},!0),Zt.getInstance().showWidget()}},{key:"openHelpCenterCollection",value:function(e){e&&(Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-help-collection",data:{collectionId:e}},!0),Zt.getInstance().showWidget())}},{key:"openHelpCenterArticle",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e&&(Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-help-article",data:{articleId:e,hideBackButton:!t}},!0),Zt.getInstance().showWidget())}},{key:"openHelpCenter",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-helpcenter",data:{hideBackButton:!e}},!0),Zt.getInstance().showWidget()}},{key:"searchHelpCenter",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e&&(Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-helpcenter-search",data:{term:e,hideBackButton:!t}},!0),Zt.getInstance().showWidget())}},{key:"openNewsArticle",value:function(e){e&&(Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-news-article",data:{id:e}},!0),Zt.getInstance().showWidget())}},{key:"openChecklists",value:function(){Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-checklists",data:{}},!0),Zt.getInstance().showWidget()}},{key:"startChecklist",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;return!!e&&(Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"start-checklist",data:jm({outboundId:e,hideBackButton:!t},n?{sharedKey:n}:{})},!0),Zt.getInstance().showWidget(),!0)}},{key:"openChecklist",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e&&(Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-checklist",data:{id:e,hideBackButton:!t}},!0),Zt.getInstance().showWidget())}},{key:"getChecklistData",value:function(e,t){if(!e)return Promise.reject(new Error("outboundId is required"));var n=D.getInstance();return n.validateChecklist(e,t).then((function(e){return n.fetchChecklist(e)}))}},{key:"openNews",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-news",data:{hideBackButton:!e}},!0),Zt.getInstance().showWidget()}},{key:"openFeatureRequests",value:function(){Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-feature-requests",data:{}},!0),Zt.getInstance().showWidget()}},{key:"startProductTour",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this;et.getInstance().startProductTourConfig(e).then((function(o){var r;!t||null==o||!o.startURL||null!==(r=window)&&void 0!==r&&null!==(r=r.location)&&void 0!==r&&null!==(r=r.href)&&void 0!==r&&r.includes(null==o?void 0:o.baseURL)?n.startProductTourWithConfig(e,o,!0):window.location.href="".concat(o.startURL,"?gleap_tour=").concat(e,"&gleap_tour_delay=1")})).catch((function(e){}))}},{key:"checkForUncompletedTour",value:function(){var e=wm.getInstance().loadUncompletedTour();e&&wm.getInstance().startWithConfig(e.tourId,e.tourData,500)}},{key:"startProductTourWithConfig",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];wm.getInstance().startWithConfig(e,t,0,n)}},{key:"showBanner",value:function(e){try{qh.getInstance().showBanner(e)}catch(t){}}},{key:"showModal",value:function(e){try{Kh.getInstance().showModal(e)}catch(t){}}},{key:"showNotification",value:function(e){jh.getInstance().showNotification(e)}}],n&&Dm(t.prototype,n),o&&Dm(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();if(Fm(_m,"invoked",!0),Fm(_m,"silentCrashReportSent",!1),Fm(_m,"instance",void 0),"undefined"!=typeof window){var Um=window.GleapActions;if(Um&&Um.length>0)for(var Hm=0;Hm {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","import {\n GleapFrameManager,\n GleapConfigManager,\n GleapNotificationManager,\n GleapTranslationManager,\n GleapSession,\n} from \"./Gleap\";\nimport { loadIcon } from \"./UI\";\n\nexport default class GleapFeedbackButtonManager {\n feedbackButton = null;\n injectedFeedbackButton = false;\n buttonHidden = null;\n lastButtonIcon = null;\n\n // Feedback button types\n static FEEDBACK_BUTTON_BOTTOM_RIGHT = \"BOTTOM_RIGHT\";\n static FEEDBACK_BUTTON_BOTTOM_LEFT = \"BOTTOM_LEFT\";\n static FEEDBACK_BUTTON_CLASSIC = \"BUTTON_CLASSIC\";\n static FEEDBACK_BUTTON_CLASSIC_LEFT = \"BUTTON_CLASSIC_LEFT\";\n static FEEDBACK_BUTTON_CLASSIC_BOTTOM = \"BUTTON_CLASSIC_BOTTOM\";\n static FEEDBACK_BUTTON_NONE = \"BUTTON_NONE\";\n\n // GleapFeedbackButtonManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapFeedbackButtonManager();\n }\n return this.instance;\n }\n\n destroy() {\n if (this.feedbackButton) {\n this.feedbackButton.remove();\n this.feedbackButton = null;\n }\n\n this.buttonHidden = null;\n this.lastButtonIcon = null;\n this.injectedFeedbackButton = false;\n this.instance = null;\n }\n\n /**\n * Toggles the feedback button visibility.\n * @param {*} show\n * @returns\n */\n toggleFeedbackButton(show) {\n this.buttonHidden = !show;\n\n GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n GleapNotificationManager.getInstance().updateContainerStyle();\n }\n\n feedbackButtonPressed() {\n var frameManager = GleapFrameManager.getInstance();\n if (frameManager.isOpened()) {\n frameManager.hideWidget();\n } else {\n frameManager.setAppMode(\"widget\");\n frameManager.showWidget();\n }\n }\n\n /**\n * Injects the feedback button into the current DOM.\n */\n injectFeedbackButton() {\n if (this.injectedFeedbackButton) {\n return;\n }\n this.injectedFeedbackButton = true;\n\n var elem = document.createElement(\"div\");\n elem.addEventListener(\"click\", () => {\n this.feedbackButtonPressed();\n });\n document.body.appendChild(elem);\n this.feedbackButton = elem;\n\n this.updateFeedbackButtonState();\n }\n\n updateNotificationBadge(count) {\n const notificationBadge = document.querySelector(\".bb-notification-bubble\");\n if (!notificationBadge) {\n return;\n }\n\n const notificationHiddenClass = \"bb-notification-bubble--hidden\";\n if (count > 0 && !GleapFrameManager.getInstance().isOpened()) {\n notificationBadge.classList.remove(notificationHiddenClass);\n notificationBadge.innerText = count;\n } else {\n notificationBadge.classList.add(notificationHiddenClass);\n }\n }\n\n refresh() {\n const feedbackButton = document.querySelector(\".bb-feedback-button\");\n if (feedbackButton) {\n this.updateFeedbackButtonText();\n this.updateFeedbackButtonState();\n } else {\n this.injectedFeedbackButton = false;\n this.feedbackButton = null;\n this.buttonHidden = null;\n this.lastButtonIcon = null;\n this.injectFeedbackButton();\n }\n }\n\n updateFeedbackButtonText() {\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n\n if (\n !(\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT\n )\n ) {\n return;\n }\n\n const feedbackButton = document.querySelector(\n \".bb-feedback-button-classic\"\n );\n if (!feedbackButton) {\n return;\n }\n\n feedbackButton.innerText = flowConfig.widgetButtonText;\n }\n\n /**\n * Updates the feedback button state\n * @returns\n */\n updateFeedbackButtonState() {\n if (this.feedbackButton === null) {\n return;\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n\n var buttonIcon = \"\";\n if (flowConfig.buttonLogo) {\n buttonIcon = `\"Feedback`;\n } else {\n buttonIcon = loadIcon(\"button\", \"#fff\");\n }\n\n this.feedbackButton.className = \"bb-feedback-button gleap-font gl-block\";\n this.feedbackButton.setAttribute(\n \"dir\",\n GleapTranslationManager.getInstance().isRTLLayout ? \"rtl\" : \"ltr\"\n );\n\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT\n ) {\n this.feedbackButton.classList.add(\n \"bb-feedback-button--classic-button-style\"\n );\n\n this.feedbackButton.innerHTML = `
${flowConfig.widgetButtonText}
`;\n } else {\n if (buttonIcon !== this.lastButtonIcon) {\n this.feedbackButton.innerHTML = `
${buttonIcon}${loadIcon(\n \"arrowdown\",\n \"#fff\"\n )}
`;\n }\n }\n\n // Prevent dom update if not needed.\n this.lastButtonIcon = buttonIcon;\n\n var hideButton = false;\n if (GleapFeedbackButtonManager.getInstance().buttonHidden === null) {\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_NONE\n ) {\n hideButton = true;\n }\n } else {\n if (GleapFeedbackButtonManager.getInstance().buttonHidden) {\n hideButton = true;\n }\n }\n if (hideButton) {\n this.feedbackButton.classList.add(\"bb-feedback-button--disabled\");\n }\n\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_BOTTOM_LEFT\n ) {\n this.feedbackButton.classList.add(\"bb-feedback-button--bottomleft\");\n }\n\n if (GleapFrameManager.getInstance().isOpened()) {\n this.feedbackButton.classList.add(\"bb-feedback-button--open\");\n }\n\n const appMode = GleapFrameManager.getInstance().appMode;\n if (\n appMode === \"survey\" ||\n appMode === \"survey_full\" ||\n appMode === \"survey_web\"\n ) {\n this.feedbackButton.classList.add(\"bb-feedback-button--survey\");\n }\n\n if (\n flowConfig.hideForGuests === true &&\n !GleapSession.getInstance().isUser()\n ) {\n this.feedbackButton.classList.add(\"bb-feedback-button--hidden\");\n }\n }\n}\n","import GleapFeedbackButtonManager from \"./GleapFeedbackButtonManager\";\n\nconst calculateShadeColor = function (col, amt) {\n col = col.replace(/^#/, \"\");\n if (col.length === 3)\n col = col[0] + col[0] + col[1] + col[1] + col[2] + col[2];\n\n let [r, g, b] = col.match(/.{2}/g);\n [r, g, b] = [\n parseInt(r, 16) + amt,\n parseInt(g, 16) + amt,\n parseInt(b, 16) + amt,\n ];\n\n r = Math.max(Math.min(255, r), 0).toString(16);\n g = Math.max(Math.min(255, g), 0).toString(16);\n b = Math.max(Math.min(255, b), 0).toString(16);\n\n const rr = (r.length < 2 ? \"0\" : \"\") + r;\n const gg = (g.length < 2 ? \"0\" : \"\") + g;\n const bb = (b.length < 2 ? \"0\" : \"\") + b;\n\n return `#${rr}${gg}${bb}`;\n};\n\nexport const calculateContrast = (hex) => {\n var r = parseInt(hex.substr(1, 2), 16),\n g = parseInt(hex.substr(3, 2), 16),\n b = parseInt(hex.substr(5, 2), 16),\n yiq = (r * 299 + g * 587 + b * 114) / 1000;\n return yiq >= 160 ? \"#000000\" : \"#ffffff\";\n};\n\nexport const widgetMaxHeight = 700;\n\nexport const injectStyledCSS = (\n primaryColor,\n headerColor,\n buttonColor,\n borderRadius,\n backgroundColor,\n buttonX,\n buttonY,\n buttonStyle\n) => {\n const contrastColor = calculateContrast(primaryColor);\n const contrastButtonColor = calculateContrast(buttonColor);\n const contrastBackgroundColor = calculateContrast(backgroundColor);\n const contrastHeaderColor = calculateContrast(headerColor);\n const isDarkMode = contrastBackgroundColor === \"#ffffff\";\n const headerDarkColor = calculateShadeColor(\n headerColor,\n contrastHeaderColor === \"#ffffff\" ? -35 : -15\n );\n const subTextColor = isDarkMode\n ? calculateShadeColor(backgroundColor, 100)\n : calculateShadeColor(backgroundColor, -120);\n const backgroundColorHover = isDarkMode\n ? calculateShadeColor(backgroundColor, 30)\n : calculateShadeColor(backgroundColor, -12);\n const hoverHoverColor = isDarkMode\n ? calculateShadeColor(backgroundColor, 80)\n : calculateShadeColor(backgroundColor, -30);\n\n var borderRadius = parseInt(borderRadius, 10);\n const buttonBorderRadius = Math.round(borderRadius * 1.05);\n const containerRadius = Math.round(borderRadius * 0.8);\n const chatRadius = Math.round(borderRadius * 0.6);\n const formItemBorderRadius = Math.round(borderRadius * 0.4);\n const formItemSmallBorderRadius = Math.round(borderRadius * 0.25);\n const zIndexBase = 2147483600;\n\n var bottomInfoOffset = 57 + buttonY;\n if (\n buttonStyle === GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM\n ) {\n bottomInfoOffset = buttonY + 15;\n } else if (buttonStyle && buttonStyle.includes(\"CLASSIC\")) {\n bottomInfoOffset = buttonY;\n } else if (buttonStyle === GleapFeedbackButtonManager.FEEDBACK_BUTTON_NONE) {\n bottomInfoOffset = buttonY;\n }\n\n const colorStyleSheet = `\n .gleap-font, .gleap-font * {\n font-style: normal;\n font-variant-caps: normal;\n font-variant-ligatures: normal;\n font-variant-numeric: normal;\n font-variant-east-asian: normal;\n font-weight: normal;\n font-stretch: normal;\n font-size: 100%;\n line-height: 1;\n font-family: system-ui, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n }\n .gleap-input-highlight {\n box-shadow: 0 0 0 3px ${primaryColor} !important;\n }\n .gleap-frame-container {\n right: ${buttonX}px;\n bottom: ${61 + buttonY}px;\n width: calc(100% - 40px);\n max-width: 410px;\n position: fixed;\n z-index: ${zIndexBase + 31};\n visibility: visible;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.16);\n border-radius: ${containerRadius}px;\n overflow: hidden;\n animation-duration: .3s;\n animation-fill-mode: both;\n animation-name: gleapFadeInUp;\n user-select: none;\n pointer-events: none;\n transition: max-width 0.3s ease-out;\n }\n\n .gleap-admin-highlight {\n box-shadow: 0px 0px 0px 4px red;\n }\n\n :root {\n --gleap-margin-top: 50px;\n }\n\n .gleap-tooltip-anchor {\n position: relative;\n display: inline-block;\n float: left;\n max-width: 0px;\n width: 17px;\n }\n\n .gleap-tooltip-hotspot {\n position: absolute;\n display: block;\n width: 17px;\n height: 17px;\n cursor: pointer;\n top: 0px;\n left: 0px;\n }\n\n @keyframes gleap-pulse {\n 0% {\n transform: scale(0);\n opacity: 0.25;\n }\n 45% {\n transform: scale(2.5);\n opacity: 0;\n }\n 100% {\n transform: scale(0);\n opacity: 0;\n }\n }\n\n .gleap-tooltip-hotspot-animation {\n position: absolute;\n border-radius: 17px;\n opacity: 0.25;\n display: block;\n width: 17px;\n height: 17px;\n cursor: pointer;\n top: 0px;\n left: 0px;\n animation: gleap-pulse 5s infinite;\n }\n\n .gleap-tooltip-hotspot svg {\n width: 17px;\n height: 17px;\n object-fit: contain;\n display: block;\n }\n\n .gleap-tooltip-inner {\n position: relative;\n overflow: visible;\n font-size: 14px;\n font-weight: normal;\n color: #000;\n line-height: 1.3;\n }\n\n .gleap-tooltip {\n position: absolute;\n background-color: #fff;\n color: #000;\n font-size: 15px;\n line-height: 18px;\n padding: 16px;\n padding-top: 8px;\n padding-bottom: 8px;\n border-radius: 4px;\n max-width: min(350px, 80vw);\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n opacity: 0;\n visibility: hidden;\n transition: opacity 0.2s, visibility 0.2s;\n z-index: ${zIndexBase + 100};\n }\n\n .gleap-tooltip a {\n color: ${primaryColor};\n text-decoration: underline;\n display: inline !important;\n margin: 0px !important;\n padding: 0px !important;\n word-break: break-word;\n }\n\n .gleap-tooltip ul {\n padding-left: 16px;\n }\n\n .gleap-tooltip b {\n font-weight: 600;\n }\n\n .gleap-tooltip h2 {\n font-size: 18px;\n line-height: 20px;\n font-weight: 600;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip h3 {\n font-size: 16px;\n line-height: 18px;\n font-weight: 600;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip p {\n padding: 0px;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip img {\n max-width: 100%;\n max-height: 300px;\n width: 100%;\n height: auto;\n object-fit: cover;\n margin-top: 8px;\n margin-bottom: 8px;\n border-radius: 4px;\n }\n\n .gleap-tooltip iframe,\n .gleap-tooltip video {\n max-width: 100%;\n width: 100%;\n height: auto;\n min-height: 200px;\n display: block;\n border: none;\n outline: none;\n padding: 0px;\n margin-top: 8px;\n margin-bottom: 8px;\n border-radius: 4px;\n }\n\n .gleap-tooltip-arrow {\n position: absolute;\n width: 20px;\n height: 20px;\n }\n\n .gleap-tooltip-arrow svg {\n width: 20px;\n height: 20px;\n object-fit: contain;\n }\n\n .gleap-b-frame {\n width: 100%;\n height: 100%;\n border: none;\n pointer-events: auto;\n padding: 0px;\n margin: 0px;\n }\n\n .gleap-b-shown {\n transition: margin 0.3s ease-out;\n margin-top: var(--gleap-margin-top);\n position: relative;\n z-index: 10000;\n }\n\n .gleap-b-f {\n margin-top: 0px;\n }\n\n .gleap-b {\n display: none;\n position: absolute;\n top: calc(-1 * var(--gleap-margin-top));\n left: 0px;\n width: 100vw;\n height: var(--gleap-margin-top);\n z-index: ${zIndexBase + 99};\n }\n\n @keyframes gleapSlideIn {\n from {\n top: calc(-1 * var(--gleap-margin-top));\n }\n to {\n top: 10px;\n }\n }\n\n .gleap-b-f .gleap-b {\n position: fixed;\n top: 10px;\n animation: gleapSlideIn .25s ease-out forwards;\n max-width: 800px;\n width: calc(100% - 20px);\n left: 50%;\n z-index: ${zIndexBase + 99};\n transform: translateX(-50%);\n border-radius: ${formItemBorderRadius}px;\n overflow: hidden;\n box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.15), 0px 5px 5px rgba(0, 0, 0, 0.05);\n }\n\n .gleap-b-shown .gleap-b {\n display: block;\n }\n\n .gleap-image-view {\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n z-index: ${zIndexBase + 99};\n background-color: ${contrastBackgroundColor}cc;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .gleap-image-view-image {\n width: 90%;\n height: auto;\n max-width: 90%;\n max-height: 90%;\n object-fit: contain;\n }\n\n .gleap-image-view-close {\n position: fixed;\n top: 20px;\n right: 20px;\n width: 32px;\n height: 32px;\n opacity: 0.8;\n z-index: ${zIndexBase + 140};\n box-shadow: 0px 5px 18px rgba(0, 0, 0, 0.16);\n cursor: pointer;\n }\n\n .gleap-image-view-close:hover {\n opacity: 1;\n }\n\n .gleap-image-view-close svg path {\n fill: ${backgroundColor};\n }\n\n [dir=rtl].gleap-frame-container {\n right: auto;\n left: ${buttonX}px;\n bottom: ${61 + buttonY}px;\n }\n\n .gleap-frame-container--loading iframe {\n opacity: 0;\n }\n\n .gleap-frame-container--loading::before {\n content: \" \";\n position: fixed;\n top: 0px;\n left: 0px;\n right: 0px;\n height: 100%;\n max-height: 380px;\n background: linear-gradient(\n 130deg,\n ${headerDarkColor} 0%,\n ${headerColor} 100%\n );\n }\n \n .gleap-frame-container--loading::after {\n content: \" \";\n position: fixed;\n top: 0px;\n left: 0px;\n right: 0px;\n height: 100%;\n height: 100%;\n max-height: 380px;\n background: linear-gradient(\n 180deg,\n transparent 60%,\n ${backgroundColor}1A 70%,\n ${backgroundColor} 100%\n );\n }\n\n .gleap-frame-container--loading-nogradient::before {\n max-height: 340px;\n background: ${headerColor} !important;\n }\n\n .gleap-frame-container--loading-nofade::after {\n display: none !important;\n }\n\n .gleap-frame-container--survey {\n bottom: ${buttonY}px !important;\n }\n\n .gleap-frame-container--extended {\n max-width: 690px !important;\n }\n\n .gleap-frame-container--survey-full {\n position: fixed;\n top: 0 !important;\n left: 0 !important;\n bottom: 0 !important;\n right: 0 !important;\n width: 100vw !important;\n max-width: 100vw !important;\n height: 100vh;\n height: 100dvh !important;\n background-color: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(6px);\n display: flex !important;\n justify-content: center !important;\n align-items: center !important;\n max-height: 100vh;\n max-height: 100dvh !important;\n border-radius: 0 !important;\n animation-name: none !important;\n }\n\n .gleap-frame-container--survey-full .gleap-frame-container-inner {\n max-width: 640px !important;\n width: calc(100% - 24px);\n border-radius: ${containerRadius}px;\n overflow: hidden;\n }\n\n .gleap-frame-container--classic {\n right: ${buttonX}px;\n bottom: ${buttonY}px;\n }\n\n [dir=rtl].gleap-frame-container--classic {\n right: auto;\n left: ${buttonX}px;\n bottom: ${buttonY}px;\n }\n\n .gleap-frame-container--no-button {\n bottom: ${buttonY}px;\n }\n\n [dir=rtl].gleap-frame-container--classic-left {\n bottom: ${buttonY}px;\n }\n\n .gleap-frame-container--classic-left {\n right: auto;\n left: ${buttonX}px;\n bottom: ${buttonY}px;\n }\n\n [dir=rtl].gleap-frame-container--classic-left {\n left: auto;\n right: ${buttonX}px;\n bottom: ${buttonY}px;\n }\n\n .gleap-frame-container--modern-left {\n right: auto;\n left: ${buttonX}px;\n bottom: ${61 + buttonY}px;\n }\n\n [dir=rtl].gleap-frame-container--modern-left {\n left: auto;\n right: ${buttonX}px;\n bottom: ${61 + buttonY}px;\n }\n\n .gleap-frame-container--animate {\n pointer-events: auto !important;\n }\n\n @keyframes gleapFadeInUp {\n from {\n opacity: 0;\n transform: translate3d(0, 100%, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n\n @keyframes gleapFadeInUpMobile {\n from {\n opacity: 0;\n transform: translate3d(0, 10%, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n\n .gleap-notification-container {\n position: fixed;\n bottom: ${bottomInfoOffset}px;\n right: ${buttonX}px;\n z-index: ${zIndexBase + 30};\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n width: 100%;\n max-width: min(340px, 80vw);\n }\n\n .gleap-notification-container--left {\n left: ${4 + buttonX}px;\n right: initial !important;\n }\n\n [dir=rtl].gleap-notification-container {\n left: ${4 + buttonX}px;\n right: initial !important;\n }\n\n [dir=rtl].gleap-notification-container--left {\n left: initial !important;\n right: ${buttonX}px !important;\n align-items: flex-start !important;\n }\n\n .gleap-notification-container--no-button {\n bottom: ${buttonY}px;\n }\n\n .gleap-notification-item {\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n\n .gleap-notification-close {\n border-radius: 100%;\n width: 28px;\n height: 28px;\n background-color: ${subTextColor};\n display: flex;\n justify-content: center;\n align-items: center;\n margin-bottom: 8px;\n cursor: pointer;\n visibility: hidden;\n pointer-events: none;\n }\n\n .gleap-notification-container:hover .gleap-notification-close {\n visibility: visible;\n pointer-events: auto;\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-notification-close {\n visibility: visible;\n pointer-events: auto;\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n }\n\n .gleap-notification-close svg {\n width: 45%;\n height: 45%;\n object-fit: contain;\n fill: ${backgroundColor};\n }\n\n .gleap-notification-item-checklist-container {\n display: flex;\n animation: fadeIn;\n animation-duration: .45s;\n background-color: ${backgroundColor};\n border-radius: ${subTextColor};\n box-sizing: border-box;\n cursor: pointer;\n flex-direction: column;\n overflow: hidden;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ${chatRadius}px;\n margin-bottom: 12px;\n }\n\n .gleap-notification-item-checklist-content {\n align-items: flex-start;\n display: flex;\n flex-direction: column;\n padding: 15px;\n width: 100%;\n width: min(310px, 70vw);\n max-width: min(310px, 70vw);\n }\n\n .gleap-notification-item-checklist-content-title {\n color: ${contrastBackgroundColor};\n font-size: 15px;\n font-weight: 500;\n line-height: 21px;\n margin-bottom: 10px;\n max-width: 100%;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .gleap-notification-item-checklist-content-progress {\n width: 100%;\n height: 8px;\n border-radius: 8px;\n background-color: ${backgroundColorHover};\n }\n\n .gleap-notification-item-checklist-content-progress-inner {\n height: 100%;\n border-radius: 8px;\n background-color: ${primaryColor};\n }\n\n .gleap-notification-item-checklist-content-next {\n color: ${subTextColor};\n font-size: 15px;\n font-weight: normal;\n line-height: 21px;\n margin-top: 10px;\n max-width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: flex;\n align-items: center;\n }\n\n .gleap-notification-item-checklist-content-next svg {\n height: 18px;\n margin-right: 5px;\n width: auto;\n }\n\n .gleap-notification-item-checklist-content-next b {\n font-size: 15px;\n font-weight: normal;\n color: ${contrastBackgroundColor};\n }\n\n .gleap-notification-item-news {\n width: 100%;\n }\n\n .gleap-news-pagination {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 10px;\n width: 100%;\n }\n\n .gleap-news-page-indicator {\n font-size: 12px;\n color: ${subTextColor};\n }\n\n .gleap-news-next-button {\n background-color: ${primaryColor};\n color: ${contrastColor};\n border-radius: ${formItemSmallBorderRadius}px;\n box-sizing: border-box;\n padding: 5px 10px;\n font-size: 14px;\n font-weight: bold;\n line-height: 21px;\n border: none;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: none !important;\n outline: none !important;^\n }\n\n .gleap-notification-item-news-content {\n align-items: flex-start;\n display: flex;\n flex-direction: column;\n padding: 15px;\n }\n\n .gleap-notification-item-news-preview {\n color: ${subTextColor};\n font-size: 14px;\n line-height: 21px;\n font-weight: 400;\n overflow-wrap: break-word;\n word-break: break-word;\n display: block;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .gleap-notification-item-news-sender {\n display: flex;\n align-items: center;\n color: ${subTextColor};\n font-size: 15px;\n line-height: 21px;\n font-weight: 400;\n }\n \n .gleap-notification-item-news-content-title {\n color: ${contrastBackgroundColor};\n font-size: 15px;\n font-weight: 500;\n line-height: 21px;\n margin-bottom: 6px;\n max-width: 100%;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n cursor: pointer;\n }\n\n .gleap-notification-item-news-sender img {\n border-radius: 100%;\n height: 20px;\n margin-right: 8px;\n object-fit: cover;\n width: 20px;\n }\n\n [dir=rtl] .gleap-notification-item-news-sender img {\n margin-left: 8px;\n margin-right: 0px !important;\n }\n\n .gleap-notification-item-news-container {\n display: flex;\n animation: fadeIn;\n animation-duration: .45s;\n background-color: ${backgroundColor};\n border-radius: ${subTextColor};\n box-sizing: border-box;\n flex-direction: column;\n overflow: hidden;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ${chatRadius}px;\n margin-bottom: 12px;\n }\n\n .gleap-notification-item-news-image {\n background-color: ${subTextColor};\n height: 170px;\n max-height: 170px;\n object-fit: cover;\n width: 100%;\n cursor: pointer;\n }\n \n .gleap-notification-item-news-content-title:hover {\n color: ${primaryColor};\n }\n\n .gleap-notification-item {\n display: flex;\n align-items: flex-end;\n cursor: pointer;\n }\n\n .gleap-notification-item img {\n width: 32px;\n height: 32px;\n min-width: 32px;\n border-radius: 100%;\n object-fit: cover;\n margin-right: 8px;\n margin-bottom: 12px;\n cursor: pointer;\n }\n\n [dir=rtl] .gleap-notification-item img {\n margin-left: 8px;\n margin-right: 0px !important;\n }\n\n .gleap-notification-item-container {\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ${chatRadius}px;\n border-bottom-left-radius: 0px;\n padding: 20px;\n background-color: ${backgroundColor};\n margin-bottom: 12px;\n cursor: pointer;\n font-size: 15px;\n line-height: 21px;\n color: ${contrastBackgroundColor};\n position: relative;\n }\n\n .gleap-notification-item-container::after {\n content: \" \";\n position: absolute;\n bottom: 0px;\n width: 0px;\n height: 0px;\n left: -6px;\n border-style: solid;\n border-width: 0px 0px 10px 6px;\n border-color: transparent transparent ${backgroundColor};\n }\n\n .gleap-notification-item-sender {\n color: ${subTextColor};\n line-height: 20px;\n }\n\n .gleap-notification-item-content {\n line-height: 20px;\n color: ${contrastBackgroundColor};\n margin-top: 4px;\n min-width: min(200px, 50vw);\n word-wrap: break-word;\n word-break: break-word;\n }\n\n .gleap-frame-container-inner {\n position: relative;\n width: 100%;\n height: calc(100vh - ${84 + buttonY}px);\n max-height: ${widgetMaxHeight}px;\n }\n\n .gleap-frame-container--survey .gleap-frame-container-inner {\n height: calc(100vh - 40px);\n }\n \n .gleap-frame-container-inner:before {\n content: \" \";\n position: absolute;\n width: 100%;\n height: calc(100% - ${containerRadius}px);\n top: ${containerRadius}px;\n background-color: ${backgroundColor};\n z-index: -1;\n }\n \n .gleap-frame-container iframe {\n height: 100% !important;\n width: 100% !important;\n max-width: 100% !important;\n display: block !important;\n pointer-events: auto !important;\n }\n \n .gleap-frame-container--hidden {\n display: none !important;\n pointer-events: none;\n animation: none !important;\n }\n \n .bb-feedback-button {\n margin: 0px;\n position: fixed;\n bottom: ${buttonY}px;\n right: ${buttonX}px;\n border-radius: 30px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n background-color: transparent;\n color: #000000;\n z-index: ${zIndexBase + 30};\n box-sizing: border-box;\n display: flex;\n align-items: center;\n padding: 0px;\n }\n\n [dir=rtl].bb-feedback-button {\n bottom: ${buttonY}px;\n right: auto;\n left: ${buttonX}px;\n }\n \n .bb-feedback-button--bottomleft {\n bottom: ${buttonY}px;\n right: auto;\n left: ${buttonX}px;\n }\n\n [dir=rtl].bb-feedback-button--bottomleft {\n bottom: ${buttonY}px;\n right: ${buttonX}px;\n left: auto;\n }\n \n .bb-feedback-button--disabled {\n display: none !important;\n }\n\n .bb-feedback-button--hidden {\n display: none !important;\n }\n \n .bb-feedback-button-text {\n padding: 8px 12px;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n background-color: #fff;\n border-radius: 8px;\n box-shadow: 0px 0px 14px 0px rgba(0, 0, 0, 0.15);\n position: relative;\n z-index: 99;\n }\n \n .bb-feedback-button-text:before {\n content: \"\";\n position: absolute;\n box-shadow: rgba(0, 0, 0, 0.04) 6px 6px 5px;\n transform: rotate(315deg);\n bottom: 16px;\n right: -4px;\n border-width: 10px;\n border-style: solid;\n border-color: transparent #fff #fff transparent;\n }\n \n .bb-feedback-button--bottomleft .bb-feedback-button-text:before {\n display: none;\n }\n \n .bb-feedback-button-text:after {\n content: \"\";\n position: absolute;\n bottom: 12px;\n right: 0px;\n background-color: #fff;\n width: 5px;\n height: 30px;\n }\n \n .bb-feedback-button-text-title {\n font-family: sans-serif;\n font-size: 14px;\n color: #666;\n line-height: 18px;\n max-width: 220px;\n }\n \n .bb-feedback-button-text-title b {\n color: #000000;\n font-weight: 600;\n }\n\n .bb-notification-bubble {\n position: absolute;\n top: -5px;\n right: -5px;\n min-width: 12px;\n padding: 0px 4px;\n height: 20px;\n min-width: 20px;\n border-radius: 20px;\n background-color: red;\n color: #fff;\n font-size: 11px;\n font-family: sans-serif;\n text-align: center;\n line-height: 20px;\n }\n\n .bb-notification-bubble--hidden {\n display: none;\n }\n \n .bb-feedback-button-icon {\n width: 48px;\n height: 48px;\n border-radius: 48px;\n background-color: #485bff;\n transition: box-shadow, transform 0.2s ease-in-out;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n position: relative;\n }\n \n .bb-feedback-button-classic {\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n top: 50%;\n right: 0px;\n position: fixed;\n transform: rotate(-90deg) translate(50%, -50%);\n transform-origin: 100% 50%;\n padding: 9px 20px;\n text-align: center;\n background-color: #485bff;\n border-top-left-radius: 8px;\n border-top-right-radius: 8px;\n font-family: sans-serif;\n font-size: 16px;\n color: #fff;\n box-shadow: 0px 0px 14px 0px rgba(0, 0, 0, 0.25);\n }\n\n [dir=rtl].bb-feedback-button .bb-feedback-button-classic {\n top: 50%;\n left: 0px;\n right: auto;\n transform: rotate(90deg) translate(-50%, -100%);\n transform-origin: 0% 0%;\n }\n \n .bb-feedback-button-classic--left {\n top: 50%;\n left: 0px;\n right: auto;\n transform: rotate(90deg) translate(-50%, -100%);\n transform-origin: 0% 0%;\n }\n\n [dir=rtl].bb-feedback-button .bb-feedback-button-classic--left {\n top: 50%;\n right: 0px;\n left: auto;\n transform: rotate(-90deg) translate(50%, -50%);\n transform-origin: 100% 50%;\n }\n \n .bb-feedback-button-classic--bottom {\n top: auto;\n bottom: 0px;\n transform: none;\n right: ${buttonX}px;\n left: auto;\n }\n \n [dir=rtl].bb-feedback-button .bb-feedback-button-classic--bottom {\n top: auto;\n bottom: 0px;\n transform: none;\n left: ${buttonX}px;\n right: auto;\n }\n\n .bb-feedback-button--classic-button-style {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n \n .bb-feedback-button--open.bb-feedback-button--classic-button-style {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: bbFadeOutRight;\n }\n \n .bb-feedback-button .bb-logo-logo {\n position: absolute;\n width: 30px;\n height: 30px;\n top: 9px;\n left: 9px;\n object-fit: contain;\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-name: bbZoomIn;\n }\n \n .bb-feedback-button .bb-logo-arrowdown {\n position: absolute;\n width: 14px;\n height: 14px;\n top: 17px;\n left: 17px;\n object-fit: contain;\n animation-duration: 0.3s;\n animation-fill-mode: both;\n }\n \n .bb-feedback-button .bb-logo-arrowdown {\n animation-name: bbZoomOut;\n }\n \n .bb-feedback-button--open .bb-logo-arrowdown {\n animation-name: bbZoomIn;\n }\n \n .bb-feedback-button--open .bb-logo-logo {\n animation-name: bbZoomOut;\n }\n \n .bb-feedback-button-icon:hover {\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.25), 0px 0px 20px rgba(0, 0, 0, 0.2);\n transform: scale(1.1);\n }\n \n .bb-feedback-button--open .bb-feedback-button-text {\n animation-name: bbFadeOutDown;\n }\n \n .bb-feedback-button--open .bb-feedback-button-icon {\n display: flex;\n }\n \n .bb-capture-svg {\n position: fixed;\n z-index: ${zIndexBase + 14};\n top: 0px;\n left: 0px;\n right: 0px;\n width: 100%;\n height: 100%;\n padding: 0px;\n margin: 0px;\n cursor: crosshair;\n }\n\n .bb-capture-svg--preview {\n cursor: auto !important;\n }\n \n .bb-rec-on-circle {\n animation-name: bbRecIconFade;\n animation-duration: 2s;\n animation-iteration-count: infinite;\n animation-direction: alternate;\n }\n \n .bb-rec-on-cont {\n animation-name: bbRecIconContFade;\n animation-duration: 2s;\n animation-iteration-count: infinite;\n animation-direction: alternate;\n }\n \n .bb-capture-editor-drag-info {\n position: fixed;\n top: -200px;\n left: 0px;\n z-index: ${zIndexBase + 16};\n transition: opacity 0.3s ease-in-out;\n }\n \n .bb-capture-editor-drag-info svg {\n width: 24px;\n height: 24px;\n }\n \n .bb-capture-editor-borderlayer {\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n border: 4px solid ${primaryColor};\n cursor: crosshair;\n z-index: ${zIndexBase + 10};\n box-sizing: border-box;\n pointer-events: none;\n }\n \n .bb-capture-editor-notrecording .bb-capture-editor-borderlayer {\n background-color: rgba(0, 0, 0, 0.8);\n }\n\n .bb-capture-editor-recording .bb-capture-editor-borderlayer {\n border: 4px solid #eb144c !important;\n }\n \n .bb-capture-editor-recording .bb-capture-dismiss {\n display: none;\n }\n \n .bb-capture-editor-item-inactive {\n opacity: 0.3;\n cursor: not-allowed !important;\n }\n \n .bb-capture-editor-notrecording .bb-capture-toolbar-drawingitem {\n opacity: 0.3;\n cursor: not-allowed !important;\n }\n \n .bb-capture-editor-notrecording .bb-capture-editor-drag-info {\n display: none;\n }\n \n .bb-capture-editor-notrecording .bb-capture-svg {\n pointer-events: none !important;\n }\n \n .bb-capture-toolbar {\n position: fixed;\n top: 20px;\n left: 50%;\n transform: translateX(-50%);\n z-index: ${zIndexBase + 18};\n background-color: #fff;\n padding: 5px;\n display: flex;\n align-items: center;\n border-radius: 8px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n transition: opacity 0.3s ease-in-out;\n }\n \n .bb-capture-dismiss {\n position: fixed;\n top: 0px;\n right: 0px;\n z-index: ${zIndexBase + 18};\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n width: 36px;\n height: 36px;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: ${primaryColor};\n border-bottom-left-radius: ${formItemSmallBorderRadius}px;\n }\n\n [dir=rtl] .bb-capture-dismiss {\n top: 0px;\n left: 0px;\n right: auto;\n border-bottom-left-radius: 0px !important;\n border-bottom-right-radius: ${formItemSmallBorderRadius}px;\n }\n \n .bb-capture-dismiss svg path {\n fill: ${contrastColor};\n }\n \n .bb-capture-dismiss svg {\n width: 20px;\n height: 20px;\n object-fit: contain;\n }\n \n .bb-capture-button-next {\n font-family: sans-serif;\n box-sizing: border-box;\n font-weight: 600;\n text-align: center;\n width: auto;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n margin: 0px;\n line-height: 36px;\n padding: 0px 12px;\n font-size: 15px;\n margin-left: 12px;\n }\n\n [dir=rtl].bb-capture-editor .bb-capture-button-next {\n margin-left: auto;\n margin-right: 12px;\n }\n \n .bb-capture-toolbar-item-spacer {\n width: 1px;\n height: 38px;\n min-width: 1px;\n margin: 0px 5px;\n }\n \n .bb-capture-toolbar-item {\n width: 42px;\n height: 38px;\n min-width: 42px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n position: relative;\n margin-right: 5px;\n }\n\n .drag-handle-item {\n cursor: grab !important;\n width: 34px;\n min-width: 34px;\n }\n\n .drag-handle-item svg {\n width: 18px !important;\n height: 18px !important;\n }\n \n .bb-capture-toolbar-item svg {\n width: 23px;\n height: 23px;\n object-fit: contain;\n }\n \n .bb-capture-toolbar-item-selectedcolor {\n border-radius: 100%;\n width: 20px;\n height: 20px;\n background-color: #db4035;\n }\n \n .bb-capture-toolbar-item[data-type=\"undo\"] svg {\n width: 18px;\n height: 18px;\n }\n \n .bb-capture-toolbar-item[data-active=\"true\"] {\n position: relative;\n }\n \n .bb-capture-preview {\n display: none;\n background-color: rgba(0, 0, 0, 0.6);\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n justify-content: center;\n align-items: center;\n z-index: ${zIndexBase + 20};\n }\n \n .bb-capture-preview-inner {\n background-color: #fff;\n padding: 0px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n border-radius: 8px;\n flex-direction: column;\n max-width: 640px;\n width: 100%;\n margin: 20px;\n }\n \n .bb-capture-preview-inner video {\n border-radius: 8px 8px 0px 0px;\n display: block;\n border: 0px;\n outline: none;\n width: 100%;\n max-height: 60vh;\n }\n \n .bb-capture-preview-buttons {\n display: flex;\n justify-content: space-between;\n padding: 14px;\n }\n \n .bb-capture-preview-retrybutton {\n font-family: sans-serif;\n border-radius: 21px;\n box-sizing: border-box;\n padding: 12px 26px;\n font-size: 16px;\n line-height: 19px;\n font-weight: 600;\n text-align: center;\n margin-top: 0px;\n margin-bottom: 0px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-preview-sendbutton {\n font-family: sans-serif;\n border-radius: 21px;\n box-sizing: border-box;\n padding: 12px 26px;\n font-size: 16px;\n line-height: 19px;\n font-weight: 600;\n text-align: center;\n margin-top: 0px;\n margin-bottom: 0px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-preview-retrybutton:hover,\n .bb-capture-preview-sendbutton:hover {\n opacity: 0.9;\n }\n \n .bb-capture-toolbar-item-recording {\n margin-right: 0px;\n }\n \n .bb-capture-toolbar-item-recording svg {\n width: 33px;\n height: 33px;\n }\n \n .bb-capture-toolbar-item-colorpicker {\n position: fixed;\n top: 70px;\n left: 50%;\n transform: translateX(-50%);\n z-index: ${zIndexBase + 18};\n background-color: #fff;\n display: none;\n padding: 10px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n border-radius: 8px;\n }\n \n .bb-capture-toolbar-item-color {\n width: 20px;\n height: 20px;\n border-radius: 100%;\n margin-right: 12px;\n box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.15);\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-toolbar-item-color:hover {\n box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.25);\n }\n \n .bb-capture-toolbar-item-color:last-of-type {\n margin-right: 0px;\n }\n \n [dir=rtl].bb-capture-editor .bb-capture-toolbar-item-color {\n margin-right: auto;\n margin-left: 12px;\n }\n \n [dir=rtl].bb-capture-editor .bb-capture-toolbar-item-color:last-of-type {\n margin-right: auto;\n margin-left: 0px;\n }\n \n .bb-capture-toolbar-item-recording[data-active=\"true\"] svg:first-of-type {\n display: none;\n }\n \n .bb-capture-toolbar-item-recording[data-active=\"true\"] svg:nth-of-type(2) {\n display: block;\n }\n \n .bb-capture-toolbar-item-recording[data-active=\"false\"] svg:first-of-type {\n display: block;\n }\n \n .bb-capture-toolbar-item-recording[data-active=\"false\"] svg:nth-of-type(2) {\n display: none;\n }\n \n .bb-capture-toolbar-item--active {\n background-color: #eee;\n }\n \n .bb-capture-toolbar-item:hover svg {\n opacity: 1;\n }\n \n .bb-capture-toolbar-item--active {\n background-color: #f8f8f8;\n }\n \n .bb-capture-toolbar-item--active svg {\n opacity: 1;\n }\n \n .bb-capture-toolbar-item--inactivecross::before {\n content: \"\";\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n height: 3px;\n width: 26px;\n margin: auto;\n border-radius: 4px;\n background-color: #e80000;\n transform: rotate(45deg);\n }\n \n .bb-capture-toolbar-item--inactivecross svg {\n fill: #eee;\n }\n \n .bb-capture-toolbar-item-timer {\n text-align: left;\n line-height: 32px;\n font-size: 14px;\n font-family: sans-serif;\n margin: 5px;\n min-width: 40px;\n display: none;\n }\n \n .bb-capture-toolbar-item .bb-tooltip {\n background-color: #555;\n color: #fff;\n visibility: hidden;\n font-size: 14px;\n font-family: sans-serif;\n text-align: center;\n padding: 5px 10px;\n position: absolute;\n z-index: 1;\n top: 45px;\n left: 0px;\n transform: translateX(calc(-50% + 21px));\n opacity: 0;\n transition: opacity 0.3s;\n white-space: nowrap;\n }\n \n .bb-capture-toolbar-item .bb-tooltip::after {\n content: \"\";\n position: absolute;\n bottom: 100%;\n left: 50%;\n margin-left: -5px;\n border-width: 5px;\n border-style: solid;\n transform: rotate(180deg);\n border-color: #555 transparent transparent transparent;\n }\n \n .bb-capture-toolbar-item:hover .bb-tooltip {\n visibility: visible;\n opacity: 1;\n }\n \n .bb-capture-options {\n display: none;\n }\n \n .bb-capture-options--active {\n display: flex;\n }\n\n @keyframes bbFadeOutRight {\n from {\n opacity: 1;\n }\n \n to {\n opacity: 0;\n }\n }\n \n @keyframes bbFadeOutDown {\n from {\n opacity: 1;\n }\n \n to {\n opacity: 0;\n transform: translate3d(0, 100%, 0);\n }\n }\n \n @keyframes bbFadeInOpacity {\n from {\n opacity: 0;\n }\n \n to {\n opacity: 1;\n }\n }\n \n @keyframes bbZoomOut {\n from {\n opacity: 1;\n }\n \n 50% {\n opacity: 0;\n transform: scale3d(0.3, 0.3, 0.3);\n }\n \n to {\n opacity: 0;\n }\n }\n \n @keyframes bbZoomIn {\n from {\n opacity: 0;\n transform: scale3d(0.3, 0.3, 0.3);\n }\n \n 50% {\n opacity: 1;\n }\n }\n \n @keyframes bbRecIconContFade {\n 0% {\n fill: #b10802;\n }\n 50% {\n fill: #ff0000;\n }\n 100% {\n fill: #b10802;\n }\n } \n .bb-capture-preview-retrybutton {\n color: ${contrastBackgroundColor};\n border-radius: ${buttonBorderRadius}px;\n background-color: ${backgroundColorHover};\n }\n .bb-capture-preview-retrybutton:hover {\n background-color: ${hoverHoverColor};\n }\n @keyframes bb-suc-fill {\n 100% {\n box-shadow: inset 0px 0px 0px 30px ${primaryColor};\n }\n }\n .bb-capture-toolbar-item-spacer {\n background-color: ${backgroundColorHover};\n }\n .bb-tooltip {\n border-radius: ${formItemBorderRadius}px;\n }\n @keyframes bbRecIconFade {\n 0% {\n fill: transparent;\n }\n 50% {\n fill: ${hoverHoverColor};\n }\n 100% {\n fill: transparent;\n }\n }\n .bb-capture-preview-sendbutton {\n color: ${contrastColor};\n background-color: ${primaryColor};\n border-radius: ${buttonBorderRadius}px;\n }\n .bb-capture-button-next {\n color: ${contrastColor};\n background-color: ${primaryColor};\n border-radius: ${formItemSmallBorderRadius}px;\n }\n .bb-capture-preview-inner {\n background-color: ${backgroundColor};\n border-radius: ${formItemBorderRadius}px;\n }\n .bb-capture-toolbar-item-timer {\n color: ${subTextColor};\n }\n .bb-svg-path {\n fill: ${contrastBackgroundColor};\n }\n .bb-capture-toolbar-item {\n border-radius: ${formItemBorderRadius}px;\n }\n .bb-capture-toolbar {\n background-color: ${backgroundColor};\n border-radius: ${formItemBorderRadius}px;\n }\n .bb-capture-toolbar-item-colorpicker {\n background-color: ${backgroundColor};\n }\n .bb-capture-toolbar-item--active {\n background-color: ${backgroundColorHover};\n }\n .bb-feedback-button-classic {\n border-top-left-radius: ${formItemBorderRadius}px;\n border-top-right-radius: ${formItemBorderRadius}px;\n }\n .bb-logo-logo--default path {\n fill: ${contrastButtonColor};\n }\n .bb-logo-arrowdown {\n fill: ${contrastButtonColor};\n }\n .bb-feedback-button-icon {\n background-color: ${buttonColor};\n }\n .bb-feedback-button-classic {\n background-color: ${buttonColor};\n color: ${contrastButtonColor};\n }\n\n @media only screen and (max-width: 450px) {\n [dir=rtl].gleap-frame-container,\n .gleap-frame-container {\n left: 0px;\n right: 0px;\n width: 100vw;\n max-width: 100vw;\n min-height: 100vh;\n max-height: 100vh;\n min-height: 100dvh !important;\n max-height: 100dvh !important;\n top: 0px;\n bottom: 0px;\n border-radius: 0px;\n animation-name: gleapFadeInUpMobile;\n }\n\n .gleap-frame-container-inner {\n width: 100vw;\n height: 100%;\n }\n\n .gleap-frame-container:not(.gleap-frame-container--survey):not(.gleap-frame-container--survey-full) .gleap-frame-container-inner {\n max-height: calc(var(--glvh, 1vh) * 100) !important;\n }\n\n .gleap-frame-container--survey {\n height: auto !important;\n top: initial !important;\n bottom: 0px !important;\n min-height: initial !important;\n }\n\n .gleap-frame-container--survey .gleap-frame-container-inner {\n height: 100vh !important;\n }\n\n .bb-tooltip {\n display: none !important;\n }\n \n .bb-capture-toolbar-item-colorpicker {\n top: 75px;\n }\n \n .bb-capture-button-next {\n margin-left: auto;\n }\n \n .bb-capture-dismiss {\n display: none;\n }\n \n .bb-capture-toolbar {\n top: 15px;\n right: 15px;\n left: 15px;\n width: auto;\n transform: none;\n }\n\n .bb-capture-editor-drag-info {\n display: none;\n }\n \n .bb-capture-editor-borderlayer {\n border-width: 4px;\n }\n }\n \n @media print {\n .bb-feedback-button {\n display: none !important;\n }\n \n .gleap-frame-container {\n display: none !important;\n }\n }\n\n .gleap-tour-sender {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n margin-bottom: 10px;\n }\n\n .gleap-tour-sender-image {\n width: 32px;\n height: 32px;\n border-radius: 32px;\n margin-right: 10px;\n background-size: cover;\n background-repeat: no-repeat;\n }\n\n .gleap-tour-popover.gleap-tour-popover-post {\n min-width: 550px;\n max-width: 550px;\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-tour-popover.gleap-tour-popover-post {\n min-width: calc(100vw - 40px);\n max-width: calc(100vw - 40px);\n }\n }\n\n .gleap-tour-message,\n .gleap-tour-message p,\n .gleap-tour-message ul {\n color: ${contrastBackgroundColor};\n }\n\n .gleap-tour-message h2 {\n font-weight: 600;\n font-size: 22px;\n }\n\n .gleap-tour-message h3 {\n font-weight: 600;\n font-size: 18px;\n }\n\n .gleap-tour-message p {\n line-height: 1.3;\n margin-bottom: 10px !important;\n margin-top: 10px !important;\n }\n\n .gleap-tour-message ul {\n line-height: 1.3;\n padding-left: 20px;\n margin-top: 10px !important;\n margin-bottom: 10px !important;\n }\n\n .gleap-tour-message {\n max-height: calc(80vh - 100px) !important;\n overflow-y: auto;\n min-width: 270px;\n }\n\n .gleap-tour-message::-webkit-scrollbar {\n width: 5px;\n }\n\n .gleap-tour-message::-webkit-scrollbar-track {\n border-radius: 0px;\n }\n \n .gleap-tour-message::-webkit-scrollbar-thumb {\n background: ${hoverHoverColor}; \n border-radius: 5px;\n }\n\n .gleap-tour-message::-webkit-scrollbar-thumb:hover {\n background: ${subTextColor};\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-tour-message {\n min-width: auto !important;\n }\n }\n\n .gleap-tour-message iframe {\n width: 100%;\n height: 300px;\n margin-top: 10px;\n margin-bottom: 10px;\n border: none;\n outline: none;\n display: block;\n }\n\n .gleap-tour-sender-name {\n font-size: 15px;\n }\n\n .gleap-tour-video {\n width: 100%;\n max-width: 100%;\n }\n\n .gleap-tour-video-svg--fullscreen {\n width: 100% !important;\n height: 100% !important;\n top: 0px !important;\n left: 0px !important;\n right: 0px !important;\n bottom: 0px !important;\n }\n\n .gleap-tour-video--playing .gleap-tour-video-playpause {\n opacity: 0;\n }\n \n .gleap-tour-video--playing:hover .gleap-tour-video-playpause {\n opacity: 1;\n }\n\n .gleap-tour-popover-video-pointer {\n padding: 0px !important;\n border-radius: 8px;\n position: relative;\n background-color: transparent !important;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-footer {\n position: absolute;\n top: 0px;\n left: 20px;\n right: 20px;\n opacity: 0;\n transition: opacity 200ms ease-in-out;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-footer button {\n padding: 5px 12px;\n }\n\n .gleap-tour-popover-video-pointer.gleap-tour-popover-can-close .gleap-tour-popover-footer {\n right: 40px !important;\n }\n\n .gleap-tour-popover-video-pointer:hover .gleap-tour-popover-footer {\n opacity: 1;\n }\n\n .gleap-tour-popover-pointer.gleap-tour-popover-no-sender .gleap-tour-message {\n padding-right: 20px;\n }\n\n .gleap-tour-video video {\n width: 100%;\n max-width: 100%;\n height: auto;\n border: none;\n outline: none;\n display: block;\n border-radius: 8px;\n }\n\n .gleap-admin-collapse-ui {\n z-index: ${zIndexBase + 35};\n cursor: pointer;\n position: fixed;\n bottom: 75px;\n right: 20px;\n width: 32px;\n height: 32px;\n border-radius: 100%;\n background-color: #fff;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: rgba(0, 0, 0, 0.16) 0px 10px 36px 0px, rgba(0, 0, 0, 0.06) 0px 0px 0px 1px;\n }\n\n .gleap-admin-collapse-ui svg {\n width: 20px;\n height: 14px;\n fill: #000 !important;\n }\n\n .gleap-admin-collapse-ui-active {\n bottom: 20px !important;\n }\n\n .gleap-admin-collapse-ui-active svg {\n transform: rotate(180deg);\n }\n\n .gleap-admin-frame-container-active {\n display: none !important;\n }\n\n .gleap-admin-frame-container {\n position: fixed;\n bottom: 0px;\n left: 0px;\n right: 0px;\n width: 100vw;\n z-index: ${zIndexBase + 40};\n }\n\n .gleap-admin-frame {\n width: 100%;\n height: 100% !important;\n border: none;\n outline: none;\n display: block;\n }\n \n .gleap-tour-message .linktype-link {\n display: inline-block !important;\n background-color: transparent !important;\n color: ${buttonColor} !important;\n }\n\n .gleap-tooltip .linktype-button,\n .gleap-tour-message .linktype-button {\n display: inline-block !important;\n border-radius: 5px;\n box-sizing: border-box;\n padding: 10px 20px !important;\n text-decoration: none !important;\n background-color: ${buttonColor} !important;\n color: ${contrastButtonColor} !important;\n }\n\n .gleap-tour-message img {\n width: 100%;\n max-width: 100%;\n min-height: 260px;\n height: auto;\n margin-top: 10px;\n margin-bottom: 10px;\n object-fit: cover;\n }\n\n .gleap-tour-active .gleap-tour-overlay {\n pointer-events: none;\n }\n \n .gleap-tour-active * {\n pointer-events: none;\n }\n \n .gleap-tour-active .gleap-tour-active-element,\n .gleap-tour-active .gleap-tour-active-element *,\n .gleap-tour-popover,\n .gleap-tour-popover * {\n pointer-events: auto;\n }\n \n @keyframes animate-fade-in {\n 0% {\n opacity: 0;\n }\n \n to {\n opacity: 1;\n }\n }\n \n .gleap-tour-fade .gleap-tour-overlay {\n animation: animate-fade-in 200ms ease-in-out;\n }\n \n .gleap-tour-fade .gleap-tour-popover {\n animation: animate-fade-in 200ms;\n }\n\n .gleap-tour-video-playpause {\n position: absolute;\n bottom: 8px;\n left: 8px;\n width: 32px;\n height: 32px;\n padding: 4px;\n background-color: rgba(0,0,0,0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border-radius: 8px;\n transition: opacity 200ms ease-in-out;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-arrow {\n display: none !important;\n }\n\n .gleap-tour-video-playpause svg {\n width: 34px;\n height: auto;\n fill: #fff;\n }\n \n /* Popover styles */\n .gleap-tour-popover {\n all: unset;\n box-sizing: border-box;\n color: #2d2d2d;\n margin: 0;\n padding: 15px;\n border-radius: ${formItemBorderRadius}px;\n min-width: 250px;\n max-width: 300px;\n box-shadow: 0 1px 10px #0006;\n z-index: 1000000000;\n position: fixed;\n top: 0;\n right: 0;\n background-color: #fff;\n }\n \n .gleap-tour-popover * {\n font-family: \"Helvetica Neue\", Inter, ui-sans-serif, \"Apple Color Emoji\", Helvetica, Arial, sans-serif;\n }\n \n .gleap-tour-popover-title {\n font: 19px / normal sans-serif;\n font-weight: 700;\n display: block;\n position: relative;\n line-height: 1.5;\n zoom: 1;\n margin: 0;\n }\n \n .gleap-tour-popover-close-btn {\n all: unset;\n position: absolute;\n top: 5px;\n right: 5px;\n width: 32px;\n height: 32px;\n cursor: pointer;\n font-size: 30px;\n font-weight: 500;\n line-height: 32px;\n color: #d2d2d2;\n z-index: 1;\n text-align: center;\n transition: color;\n transition-duration: 200ms;\n }\n \n .gleap-tour-popover-close-btn:hover,\n .gleap-tour-popover-close-btn:focus {\n color: #2d2d2d;\n }\n \n .gleap-tour-popover-title[style*=\"block\"] + .gleap-tour-popover-description {\n margin-top: 5px;\n }\n \n .gleap-tour-popover-description {\n margin-bottom: 0;\n font: 15px / normal sans-serif;\n line-height: 1.5;\n font-weight: 400;\n zoom: 1;\n }\n \n .gleap-tour-popover-footer {\n margin-top: 15px;\n text-align: right;\n zoom: 1;\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n \n .gleap-tour-popover-progress-text {\n font-size: 13px;\n font-weight: 400;\n color: #727272;\n zoom: 1;\n }\n \n .gleap-tour-popover-footer button {\n background-color: ${primaryColor};\n color: ${contrastColor};\n border-radius: ${formItemSmallBorderRadius}px;\n box-sizing: border-box;\n padding: 10px 20px;\n font-size: 14px;\n font-weight: bold;\n line-height: 21px;\n border: none;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: none !important;\n outline: none !important;\n }\n\n .gleap-tour-popover-prev-btn {\n color: ${contrastBackgroundColor} !important;\n background-color: ${backgroundColorHover} !important;\n margin-right: 3px;\n }\n\n .gleap-tour-popover-prev-btn:hover {\n background-color: ${primaryColor}22 !important;\n color: ${primaryColor} !important;\n }\n \n .gleap-tour-popover-footer .gleap-tour-popover-btn-disabled {\n opacity: 0.5;\n pointer-events: none;\n }\n \n /* Disable the scrolling of parent element if it has an active element*/\n :not(body):has(> .gleap-tour-active-element) {\n overflow: hidden !important;\n }\n \n .gleap-tour-no-interaction, .gleap-tour-no-interaction * {\n pointer-events: none !important;\n }\n \n .gleap-tour-popover-navigation-btns {\n display: flex;\n flex-grow: 1;\n justify-content: flex-end;\n }\n \n .gleap-tour-popover-navigation-btns button + button {\n margin-left: 4px;\n }\n \n .gleap-tour-popover-arrow {\n content: \"\";\n position: absolute;\n border: 5px solid #fff;\n }\n \n .gleap-tour-popover-arrow-side-over {\n display: none;\n }\n \n /** Popover Arrow Sides **/\n .gleap-tour-popover-arrow-side-left {\n left: 100%;\n border-right-color: transparent;\n border-bottom-color: transparent;\n border-top-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-right {\n right: 100%;\n border-left-color: transparent;\n border-bottom-color: transparent;\n border-top-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-top {\n top: 100%;\n border-right-color: transparent;\n border-bottom-color: transparent;\n border-left-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-bottom {\n bottom: 100%;\n border-left-color: transparent;\n border-top-color: transparent;\n border-right-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-center {\n display: none;\n }\n \n /* Left/Start + Right/Start */\n .gleap-tour-popover-arrow-side-left.gleap-tour-popover-arrow-align-start,\n .gleap-tour-popover-arrow-side-right.gleap-tour-popover-arrow-align-start {\n top: 15px;\n }\n \n /* Top/Start + Bottom/Start */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-start,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-start {\n left: 15px;\n }\n \n /* End/Left + End/Right */\n .gleap-tour-popover-arrow-align-end.gleap-tour-popover-arrow-side-left,\n .gleap-tour-popover-arrow-align-end.gleap-tour-popover-arrow-side-right {\n bottom: 15px;\n }\n \n /* Top/End + Bottom/End */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-end,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-end {\n right: 15px;\n }\n \n /* Left/Center + Right/Center */\n .gleap-tour-popover-arrow-side-left.gleap-tour-popover-arrow-align-center,\n .gleap-tour-popover-arrow-side-right.gleap-tour-popover-arrow-align-center {\n top: 50%;\n margin-top: -5px;\n }\n \n /* Top/Center + Bottom/Center */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-center,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-center {\n left: 50%;\n margin-left: -5px;\n }\n \n /* No arrow */\n .gleap-tour-popover-arrow-none {\n display: none;\n } \n\n /* Modal styles */\n .gleap-modal-wrapper {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: ${zIndexBase + 40};\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .gleap-modal-backdrop {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.5);\n z-index: ${zIndexBase + 41};\n }\n\n .gleap-modal {\n position: relative;\n width: 90%;\n max-width: 600px;\n max-height: 90vh;\n z-index: ${zIndexBase + 100};\n background-color: ${backgroundColor};\n border-radius: ${containerRadius}px;\n overflow: hidden;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-name: gleapFadeInUp;\n }\n\n .gleap-modal-frame {\n width: 100%;\n border: none;\n display: block;\n outline: none;\n }\n\n body.gleap-modal-open {\n overflow: hidden;\n }\n\n @keyframes gleapFadeInUp {\n from {\n opacity: 0;\n transform: translate3d(0, 20px, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n `;\n\n const oldNode = document.querySelector(\".gleap-styles\");\n if (oldNode) {\n oldNode.remove();\n }\n const node = document.createElement(\"style\");\n node.innerHTML = colorStyleSheet;\n node.className = \"gleap-styles\";\n document.body.appendChild(node);\n};\n\nexport const loadIcon = function (name, color) {\n if (name === \"button\") {\n return ``;\n }\n\n if (name === \"drag\") {\n return ``;\n }\n\n if (name === \"unmute\") {\n return ``;\n }\n\n if (name === \"mute\") {\n return ``;\n }\n\n if (name === \"replay\") {\n return `\n \n `;\n }\n\n if (name === \"dismiss\") {\n return ``;\n }\n\n if (name === \"blur\") {\n return `\n \n`;\n }\n\n if (name === \"pen\") {\n return `\n \n \n \n \n \n \n \n \n \n \n \n \n`;\n }\n\n if (name === \"rect\") {\n return `\n \n \n \n \n \n \n \n \n \n \n`;\n }\n\n if (name === \"pointer\") {\n return `\n \n `;\n }\n\n if (name === \"clip\") {\n return `\n \n \n \n \n \n`;\n }\n\n if (name === \"mic\") {\n return `\n \n \n \n \n `;\n }\n\n if (name === \"camera\") {\n return `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n`;\n }\n\n if (name === \"recorderon\") {\n return `\n \n \n \n \n \n \n \n \n \n \n \n`;\n }\n\n if (name === \"recorderoff\") {\n return `\n \n \n \n \n \n \n \n \n `;\n }\n\n if (name === \"arrowdown\") {\n return `\n \n `;\n }\n\n if (name === \"arrowleft\") {\n return `\n \n `;\n }\n\n if (name === \"close\") {\n return `\n \n `;\n }\n\n if (name === \"undo\") {\n return `\n \n \n \n \n \n \n \n \n \n `;\n }\n\n if (name === \"circle-dot\") {\n return ``;\n }\n\n if (name === \"circle-question\") {\n return ``;\n }\n\n if (name === \"circle-info\") {\n return ``;\n }\n\n if (name === \"circle-exclamation\") {\n return ``;\n }\n\n if (name === \"circle-up\") {\n return ``;\n }\n\n if (name === \"circle-right\") {\n return ``;\n }\n\n return \"\";\n};\n","class GleapNetworkIntercepter {\n startTimestamp = Date.now();\n requestId = 0;\n requests = {};\n externalRequests = [];\n maxRequests = 30;\n filters = [];\n defaultBlacklist = [\"gleap.io\"];\n blacklist = [];\n initialized = false;\n stopped = false;\n loadAllResources = false;\n\n // GleapNetworkIntercepter singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapNetworkIntercepter();\n }\n return this.instance;\n }\n\n setLoadAllResources(loadAllResources) {\n this.loadAllResources = loadAllResources;\n }\n\n isContentTypeSupported(contentType) {\n if (typeof contentType !== \"string\") {\n return false;\n }\n\n if (contentType === \"\") {\n return true;\n }\n\n contentType = contentType.toLocaleLowerCase();\n\n const supportedContentTypes = [\"text/\", \"xml\", \"json\"];\n for (var i = 0; i < supportedContentTypes.length; i++) {\n if (contentType.includes(supportedContentTypes[i])) {\n return true;\n }\n }\n\n return false;\n }\n\n getRequests() {\n var requests = JSON.parse(JSON.stringify(Object.values(this.requests)));\n\n // Merge external requests into internal requests.\n if (this.externalRequests && this.externalRequests.length > 0) {\n requests = requests.concat(this.externalRequests);\n }\n\n if (this.filters && this.filters.length > 0) {\n // Perform network log filtering.\n for (var i = 0; i < requests.length; i++) {\n var request = requests[i];\n\n // Headers\n if (request && request.request && request.request.headers) {\n for (var j = 0; j < this.filters.length; j++) {\n delete request.request.headers[this.filters[j]];\n }\n }\n\n // Payload\n if (request && request.request && request.request.payload) {\n var payloadObj = request.request.payload;\n try {\n payloadObj = JSON.parse(request.request.payload);\n } catch (e) { }\n\n if (payloadObj) {\n for (var j = 0; j < this.filters.length; j++) {\n delete payloadObj[this.filters[j]];\n }\n request.request.payload = JSON.stringify(payloadObj);\n }\n }\n\n // Response\n if (request && request.response && request.response.responseText) {\n try {\n var data = JSON.parse(request.response.responseText);\n for (var j = 0; j < this.filters.length; j++) {\n delete data[this.filters[j]];\n }\n request.response.responseText = JSON.stringify(data);\n } catch (e) { }\n }\n }\n }\n\n // Get static resources from performance.\n try {\n if (typeof window !== \"undefined\" && window.performance) {\n var resources = window.performance.getEntriesByType(\"resource\");\n for (var i = 0; i < resources.length; i++) {\n var resource = resources[i];\n if (resource && resource.name) {\n if ((this.loadAllResources || [\"xmlhttprequest\", \"fetch\"].indexOf(resource.initiatorType) > -1) && !requests.find(request => request.url === resource.name)) {\n requests.push({\n type: \"RESOURCE\",\n date: new Date(this.startTimestamp + resource.startTime),\n url: resource.name,\n duration: Math.round(resource.duration),\n initiatorType: resource.initiatorType\n });\n }\n }\n }\n }\n } catch (exp) { }\n\n var blacklist = this.blacklist.concat(this.defaultBlacklist);\n if (blacklist && blacklist.length > 0) {\n try {\n requests = requests.filter((request) => {\n for (var i = 0; i < blacklist.length; i++) {\n if (request && request.url && request.url.includes(blacklist[i])) {\n return false;\n }\n }\n return true;\n });\n } catch (exp) { }\n }\n\n return requests;\n }\n\n setMaxRequests(maxRequests) {\n if (maxRequests > 70) {\n maxRequests = 70;\n }\n this.maxRequests = maxRequests;\n }\n\n setStopped(stopped) {\n this.stopped = stopped;\n }\n\n setFilters(filters) {\n this.filters = this.filters.concat(filters ? filters : []);\n }\n\n setBlacklist(blacklist) {\n this.blacklist = this.blacklist.concat(blacklist ? blacklist : []);\n }\n\n cleanRequests() {\n var keys = Object.keys(this.requests);\n if (keys.length > this.maxRequests) {\n var keysToRemove = keys.slice(0, keys.length - this.maxRequests);\n for (var i = 0; i < keysToRemove.length; i++) {\n delete this.requests[keysToRemove[i]];\n }\n }\n }\n\n calcRequestTime(bbRequestId) {\n if (!bbRequestId || !this.requests || !this.requests[bbRequestId]) {\n return;\n }\n\n var startDate = this.requests[bbRequestId][\"date\"];\n if (startDate) {\n this.requests[bbRequestId][\"duration\"] =\n new Date().getTime() - startDate.getTime();\n }\n }\n\n getTextContentSize(text) {\n var size = 0;\n try {\n size = new TextEncoder().encode(text).length;\n } catch (exp) {\n try {\n size = encodeURI(s).split(/%..|./).length - 1;\n } catch (exp) {\n try {\n size = new Blob([text]).size;\n } catch (exp) {\n size = text.length;\n }\n }\n }\n\n const kiloBytes = size / 1024;\n const megaBytes = kiloBytes / 1024;\n return megaBytes;\n }\n\n cleanupContentSize(text) {\n const contentSize = this.getTextContentSize(text);\n if (contentSize > 0.15) {\n return \"\";\n }\n\n return text;\n }\n\n cleanupPayload(payload) {\n if (payload === undefined || payload === null) {\n return \"{}\";\n }\n\n try {\n if (typeof TextDecoder !== undefined && ArrayBuffer.isView(payload)) {\n let value = new TextDecoder().decode(payload);\n return value;\n }\n } catch (exp) { }\n\n return payload;\n }\n\n preparePayload(payload) {\n var payloadText = this.cleanupPayload(payload);\n return this.cleanupContentSize(payloadText);\n }\n\n start() {\n if (this.initialized) {\n return;\n }\n\n this.initialized = true;\n const self = this;\n this.interceptNetworkRequests({\n onFetch: (params, bbRequestId) => {\n if (this.stopped || !bbRequestId || !this.requests) {\n return;\n }\n\n if (\n params.length > 0 &&\n typeof params[0] !== \"undefined\" &&\n typeof params[0].url !== \"undefined\"\n ) {\n this.requests[bbRequestId] = {\n url: params[0].url,\n date: new Date(),\n request: {\n payload: \"\",\n headers:\n typeof params[0].headers !== \"undefined\"\n ? Object.fromEntries(params[0].headers.entries())\n : {},\n },\n type:\n typeof params[0].method !== \"undefined\" ? params[0].method : \"\",\n };\n } else {\n if (params.length >= 2 && params[1]) {\n var method =\n params[1] && params[1].method ? params[1].method : \"GET\";\n this.requests[bbRequestId] = {\n request: {\n payload: self.preparePayload(params[1].body),\n headers: params[1].headers,\n },\n type: method,\n url: params[0],\n date: new Date(),\n };\n } else {\n this.requests[bbRequestId] = {\n url: params[0],\n date: new Date(),\n };\n }\n }\n\n this.cleanRequests();\n },\n onFetchLoad: (req, bbRequestId) => {\n if (\n this.stopped ||\n !bbRequestId ||\n !this.requests ||\n !this.requests[bbRequestId]\n ) {\n return;\n }\n\n try {\n this.requests[bbRequestId][\"success\"] = true;\n this.requests[bbRequestId][\"response\"] = {\n status: req.status,\n statusText: \"\",\n responseText: \"\",\n };\n this.calcRequestTime(bbRequestId);\n } catch (exp) { }\n\n try {\n var contentType = \"\";\n if (req.headers && typeof req.headers.get !== \"undefined\") {\n contentType = req.headers.get(\"content-type\");\n }\n\n if (this.isContentTypeSupported(contentType)) {\n req\n .text()\n .then((responseText) => {\n if (this.requests[bbRequestId]) {\n this.requests[bbRequestId][\"success\"] = true;\n this.requests[bbRequestId][\"response\"] = {\n status: req.status,\n statusText: req.statusText,\n responseText: self.cleanupContentSize(responseText)\n };\n }\n this.calcRequestTime(bbRequestId);\n this.cleanRequests();\n })\n .catch((err) => {\n this.cleanRequests();\n });\n } else {\n if (this.requests[bbRequestId]) {\n this.requests[bbRequestId][\"success\"] = true;\n this.requests[bbRequestId][\"response\"] = {\n status: req.status,\n statusText: req.statusText,\n responseText: \"\",\n };\n }\n this.calcRequestTime(bbRequestId);\n this.cleanRequests();\n }\n } catch (exp) { }\n },\n onFetchFailed: (err, bbRequestId) => {\n if (\n this.stopped ||\n !bbRequestId ||\n !this.requests ||\n !this.requests[bbRequestId]\n ) {\n return;\n }\n\n this.requests[bbRequestId][\"success\"] = false;\n this.calcRequestTime(bbRequestId);\n this.cleanRequests();\n },\n onOpen: (request, args) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.bbRequestId &&\n args.length >= 2 &&\n this.requests\n ) {\n this.requests[request.bbRequestId] = {\n type: args[0],\n url: args[1],\n date: new Date(),\n };\n }\n\n this.cleanRequests();\n },\n onSend: (request, args) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.bbRequestId &&\n this.requests &&\n this.requests[request.bbRequestId]\n ) {\n this.requests[request.bbRequestId][\"request\"] = {\n payload: this.preparePayload(args.length > 0 ? args[0] : \"{}\"),\n headers: request.requestHeaders,\n };\n }\n\n this.cleanRequests();\n },\n onError: (request, args) => {\n if (\n !this.stopped &&\n this.requests &&\n request &&\n request.currentTarget &&\n request.currentTarget.bbRequestId &&\n this.requests[request.currentTarget.bbRequestId]\n ) {\n this.requests[request.currentTarget.bbRequestId][\"success\"] = false;\n this.calcRequestTime(request.bbRequestId);\n }\n\n this.cleanRequests();\n },\n onLoad: (request, args) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.currentTarget &&\n request.currentTarget.bbRequestId &&\n this.requests &&\n this.requests[request.currentTarget.bbRequestId]\n ) {\n var target = request.currentTarget;\n var responseType = target.responseType;\n var responseText = \"<\" + responseType + \">\";\n if (responseType === \"\" || responseType === \"text\") {\n responseText = this.cleanupContentSize(target.responseText);\n }\n\n this.requests[target.bbRequestId][\"success\"] = true;\n this.requests[target.bbRequestId][\"response\"] = {\n status: target.status,\n statusText: target.statusText,\n responseText: responseText,\n };\n\n this.calcRequestTime(target.bbRequestId);\n }\n\n this.cleanRequests();\n },\n });\n }\n\n interceptNetworkRequests(callback) {\n var self = this;\n const open = XMLHttpRequest.prototype.open;\n const send = XMLHttpRequest.prototype.send;\n\n // Only override open and send if they haven't been overridden already.\n if (XMLHttpRequest.prototype.gleapSetRequestHeader === undefined) {\n XMLHttpRequest.prototype.gleapSetRequestHeader =\n XMLHttpRequest.prototype.setRequestHeader;\n }\n\n if (XMLHttpRequest.prototype.gleapSetRequestHeader) {\n XMLHttpRequest.prototype.setRequestHeader = function (header, value) {\n if (!this.requestHeaders) {\n this.requestHeaders = {};\n }\n\n if (this.requestHeaders && this.requestHeaders.hasOwnProperty(header)) {\n return;\n }\n\n if (!this.requestHeaders[header]) {\n this.requestHeaders[header] = [];\n }\n\n this.requestHeaders[header].push(value);\n this.gleapSetRequestHeader(header, value);\n };\n }\n\n XMLHttpRequest.prototype.open = function () {\n this[\"bbRequestId\"] = ++self.requestId;\n callback.onOpen && callback.onOpen(this, arguments);\n if (callback.onLoad) {\n this.addEventListener(\"load\", callback.onLoad.bind(callback));\n }\n if (callback.onError) {\n this.addEventListener(\"error\", callback.onError.bind(callback));\n }\n return open.apply(this, arguments);\n };\n XMLHttpRequest.prototype.send = function () {\n callback.onSend && callback.onSend(this, arguments);\n return send.apply(this, arguments);\n };\n\n if (window.fetch) {\n (function () {\n var originalFetch = window.fetch;\n window.fetch = function () {\n var bbRequestId = ++self.requestId;\n callback.onFetch(arguments, bbRequestId);\n\n return originalFetch\n .apply(this, arguments)\n .then(function (response) {\n if (response && typeof response.clone === \"function\") {\n const data = response.clone();\n callback.onFetchLoad(data, bbRequestId);\n }\n\n return response;\n })\n .catch((err) => {\n callback.onFetchFailed(err, bbRequestId);\n throw err;\n });\n };\n })();\n }\n\n return callback;\n }\n\n blobToTextPromise(blob) {\n return new Promise(function (resolve, reject) {\n var fr = new FileReader();\n fr.onload = function (evt) {\n if (evt && evt.target && evt.target.result) {\n resolve(evt.target.result);\n } else {\n reject();\n }\n };\n fr.onerror = function (err) {\n reject(err);\n };\n fr.readAsText(blob);\n });\n }\n}\n\nexport default GleapNetworkIntercepter;\n","export const resizeImage = (base64Str, maxWidth = 400, maxHeight = 400) => {\n return new Promise((resolve, reject) => {\n var isJPEG = base64Str.indexOf(\"data:image/jpeg\") === 0;\n var img = new Image();\n img.src = base64Str;\n img.onerror = () => {\n reject();\n };\n img.onload = () => {\n var canvas = document.createElement(\"canvas\");\n var MAX_WIDTH = maxWidth;\n var MAX_HEIGHT = maxHeight;\n\n // Adjust max width / height based on image props\n if (maxWidth > img.width / 1.5) {\n MAX_WIDTH = img.width / 1.5;\n }\n\n if (maxHeight > img.height / 1.5) {\n MAX_HEIGHT = img.height / 1.5;\n }\n\n var width = img.width;\n var height = img.height;\n\n if (width > height) {\n if (width > MAX_WIDTH) {\n height *= MAX_WIDTH / width;\n width = MAX_WIDTH;\n }\n } else {\n if (height > MAX_HEIGHT) {\n width *= MAX_HEIGHT / height;\n height = MAX_HEIGHT;\n }\n }\n canvas.width = width;\n canvas.height = height;\n var ctx = canvas.getContext(\"2d\");\n ctx.drawImage(img, 0, 0, width, height);\n\n if (isJPEG) {\n resolve(canvas.toDataURL(\"image/jpeg\", 0.7));\n } else {\n resolve(canvas.toDataURL());\n }\n };\n });\n};\n\nexport const isMobile = () => {\n if (\n /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(\n navigator.userAgent\n ) ||\n /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(\n navigator.userAgent.substr(0, 4)\n )\n ) {\n return true;\n }\n return false;\n};\n\nexport const gleapDataParser = function (data) {\n if (typeof data === \"string\" || data instanceof String) {\n try {\n return JSON.parse(data);\n } catch (e) {\n return {};\n }\n }\n return data;\n};\n\nexport const truncateString = (str, num) => {\n if (str.length > num) {\n return str.slice(0, num) + \"...\";\n } else {\n return str;\n }\n};\n\nconst removeSubDomain = (v) => {\n try {\n var parts = v.split(\".\");\n var is2ndLevelDomain = false;\n const secondLevel = parts[parts.length - 2];\n if (\n secondLevel === \"co\" ||\n secondLevel === \"com\" ||\n secondLevel === \"gv\" ||\n secondLevel === \"ac\" ||\n secondLevel === \"edu\" ||\n secondLevel === \"gov\" ||\n secondLevel === \"mil\" ||\n secondLevel === \"net\" ||\n secondLevel === \"org\"\n ) {\n is2ndLevelDomain = true;\n }\n parts = parts.slice(is2ndLevelDomain ? -3 : -2);\n return parts.join(\".\");\n } catch (exp) {}\n return v;\n};\n\nexport const loadFromGleapCache = (key) => {\n try {\n const cachedData = localStorage.getItem(`gleap-widget-${key}`);\n if (cachedData) {\n const config = JSON.parse(cachedData);\n return config;\n }\n } catch (exp) {}\n return null;\n};\n\nexport const saveToGleapCache = (key, data) => {\n const k = `gleap-widget-${key}`;\n if (data) {\n try {\n localStorage.setItem(k, JSON.stringify(data));\n } catch (exp) {}\n } else {\n localStorage.removeItem(k);\n }\n};\n\nexport const setGleapCookie = (name, value, days) => {\n try {\n var expires = \"\";\n if (days) {\n var date = new Date();\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\n expires = \"; expires=\" + date.toUTCString();\n }\n const host = removeSubDomain(window.location.host.split(\":\")[0]);\n document.cookie =\n name + \"=\" + (value || \"\") + expires + \"; path=/; domain=\" + host;\n } catch (exp) {}\n};\n\nexport const getGleapCookie = (name) => {\n try {\n var nameEQ = name + \"=\";\n var ca = document.cookie.split(\";\");\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n while (c.charAt(0) == \" \") c = c.substring(1, c.length);\n if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);\n }\n } catch (exp) {}\n return null;\n};\n\nexport const eraseGleapCookie = (name) => {\n try {\n const host = removeSubDomain(window.location.host.split(\":\")[0]);\n document.cookie =\n name + \"=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT; Domain=\" + host;\n } catch (exp) {}\n};\n\nexport const getDOMElementDescription = (element, html = true) => {\n var innerText = truncateString(element.innerText || \"\", 40)\n .replace(/(\\r\\n|\\n|\\r)/gm, \"\")\n .replace(/ +(?= )/g, \"\");\n var elementId = \"\";\n var elementClass = \"\";\n if (typeof element.getAttribute !== \"undefined\") {\n const elemId = element.getAttribute(\"id\");\n if (elemId) {\n elementId = ` id=\"${elemId}\"`;\n }\n const elemClass = element.getAttribute(\"class\");\n if (elemClass) {\n elementClass = ` class=\"${elemClass}\"`;\n }\n }\n const elementTag = (element.tagName || \"\").toLowerCase();\n\n var htmlPre = \"<\";\n var htmlPost = \">\";\n if (!html) {\n htmlPre = \"[\";\n htmlPost = \"]\";\n }\n\n return `${htmlPre}${elementTag}${elementId}${elementClass}${htmlPost}${innerText}${htmlPre}/${elementTag}${htmlPost}`;\n};\n\nexport const runFunctionWhenDomIsReady = (callback) => {\n if (\n document.readyState === \"complete\" ||\n document.readyState === \"loaded\" ||\n document.readyState === \"interactive\"\n ) {\n callback();\n } else {\n document.addEventListener(\"DOMContentLoaded\", () => {\n callback();\n });\n }\n};\n\nexport const fixGleapHeight = () => {\n try {\n if (\n \"visualViewport\" in window &&\n /iPad|iPhone|iPod/.test(navigator.userAgent)\n ) {\n let initialHeight = window.innerHeight;\n\n function updateContainerHeight() {\n try {\n const gleapFrameContainer = document.querySelector(\n \".gleap-frame-container-inner iframe\"\n );\n\n if (!gleapFrameContainer) {\n return;\n }\n\n // Check if the keyboard is open\n if (window.visualViewport.height < initialHeight) {\n gleapFrameContainer.style.setProperty(\n \"max-height\",\n window.visualViewport.height + \"px\",\n \"important\"\n );\n } else {\n // Remove the padding bottom\n gleapFrameContainer.style.removeProperty(\"max-height\");\n }\n } catch (error) {}\n }\n\n function handleOrientationChange() {\n try {\n // Update initial dimensions\n initialHeight = window.innerHeight;\n updateContainerHeight();\n } catch (error) {}\n }\n\n // Update on resize (keyboard show/hide and viewport resize)\n window.visualViewport.addEventListener(\"resize\", updateContainerHeight);\n\n // Handle orientation changes\n window.addEventListener(\"orientationchange\", handleOrientationChange);\n\n // Update initially\n updateContainerHeight();\n }\n } catch (error) {}\n};\n","import { GleapSession, GleapTranslationManager } from \"./Gleap\"; // Adjust path if needed\n\n// Enum for request states\nconst RequestStatus = {\n PENDING: \"pending\",\n SUCCESS: \"success\",\n ERROR: \"error\",\n};\n\nclass ChecklistNetworkManager {\n static instance = null;\n\n /** @private {Map>} outboundId -> Promise */\n validationRequests = new Map();\n /** @private {Map} */\n validationCache = new Map(); // Caches final results (success/error)\n\n /** @private {Map>} internalId -> Promise */\n fetchRequests = new Map();\n /** @private {Map} */\n fetchCache = new Map(); // Caches final results (success/error)\n\n // Private constructor for Singleton\n constructor() {\n if (ChecklistNetworkManager.instance) {\n return ChecklistNetworkManager.instance;\n }\n ChecklistNetworkManager.instance = this;\n }\n\n /**\n * Gets the singleton instance of the ChecklistNetworkManager.\n * @returns {ChecklistNetworkManager} The singleton instance.\n */\n static getInstance() {\n if (!ChecklistNetworkManager.instance) {\n ChecklistNetworkManager.instance = new ChecklistNetworkManager();\n }\n return ChecklistNetworkManager.instance;\n }\n\n clearCache() {\n this.validationCache.clear();\n this.fetchCache.clear();\n this.validationRequests.clear();\n this.fetchRequests.clear();\n }\n\n /**\n * @private\n * Gets common query parameters for API requests.\n * @returns {string} Query parameter string.\n */\n _getQueryParams() {\n const gleapSessionInstance = GleapSession.getInstance();\n const session = gleapSessionInstance?.session;\n const lang =\n GleapTranslationManager.getInstance().getActiveLanguage() || \"en\";\n return `gleapId=${session?.gleapId || \"\"}&gleapHash=${\n session?.gleapHash || \"\"\n }&lang=${lang}`;\n }\n\n /**\n * @private\n * Gets the API base URL.\n * @returns {string | null} The API URL or null if not configured.\n */\n _getApiUrl() {\n const gleapSessionInstance = GleapSession.getInstance();\n return gleapSessionInstance?.apiUrl || null;\n }\n\n /**\n * @private\n * Makes an XMLHttpRequest and returns a Promise.\n * @param {string} method - HTTP method.\n * @param {string} url - The request URL.\n * @param {object|null} data - Data to send in the request body.\n * @returns {Promise} Promise resolving with parsed JSON response on success, rejecting on error.\n */\n _makeRequest(method, url, data) {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n xhr.open(method, url);\n\n const gleapSessionInstance = GleapSession.getInstance();\n gleapSessionInstance?.injectSession(xhr); // Inject session headers\n\n if (data) {\n xhr.setRequestHeader(\"Content-Type\", \"application/json;charset=UTF-8\");\n }\n\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n if (xhr.status >= 200 && xhr.status < 300) {\n try {\n // Handle potential empty success responses (e.g., 204)\n const responseData = xhr.responseText\n ? JSON.parse(xhr.responseText)\n : null;\n resolve(responseData);\n } catch (err) {\n reject({\n status: xhr.status,\n statusText: \"JSON Parse Error\",\n responseText: xhr.responseText,\n error: err,\n });\n }\n } else {\n reject({\n status: xhr.status,\n statusText: xhr.statusText,\n responseText: xhr.responseText,\n });\n }\n }\n };\n\n xhr.onerror = () => {\n reject({ status: 0, statusText: \"Network Error\", responseText: null });\n };\n\n xhr.send(data ? JSON.stringify(data) : null);\n });\n }\n\n /**\n * @private\n * Creates a cache key from outboundId and sharedKey\n * @param {string} outboundId - The public/outbound checklist ID.\n * @param {string|undefined} sharedKey - Optional shared key.\n * @returns {string} Combined cache key.\n */\n _createCacheKey(outboundId, sharedKey) {\n return sharedKey ? `${outboundId}::${sharedKey}` : outboundId;\n }\n\n /**\n * Validates an outbound checklist ID, returning a Promise for the internal ID.\n * Manages caching and deduplicates requests.\n * @param {string} outboundId - The public/outbound checklist ID.\n * @param {string} [sharedKey] - Optional shared key for the checklist.\n * @returns {Promise} A promise that resolves with the internal checklist ID.\n */\n validateChecklist(outboundId, sharedKey) {\n const cacheKey = this._createCacheKey(outboundId, sharedKey);\n\n // 1. Check cache for final result (success or error)\n const cachedResult = this.validationCache.get(cacheKey);\n if (cachedResult) {\n if (cachedResult.status === RequestStatus.SUCCESS) {\n return Promise.resolve(cachedResult.internalId);\n } else {\n return Promise.reject(cachedResult.error);\n }\n }\n\n // 2. Check for an ongoing request\n if (this.validationRequests.has(cacheKey)) {\n return this.validationRequests.get(cacheKey);\n }\n\n // 3. Start a new request\n const apiUrl = this._getApiUrl();\n if (!apiUrl) {\n const error = new Error(\n \"ChecklistNetworkManager: Gleap API URL not configured.\"\n );\n this.validationCache.set(cacheKey, {\n status: RequestStatus.ERROR,\n error,\n });\n return Promise.reject(error);\n }\n\n const url = `${apiUrl}/outbound/checklists?${this._getQueryParams()}`;\n const requestPromise = this._makeRequest(\"POST\", url, {\n outboundId,\n sharedKey,\n })\n .then((responseData) => {\n if (responseData && responseData.id) {\n this.validationCache.set(cacheKey, {\n status: RequestStatus.SUCCESS,\n internalId: responseData.id,\n });\n return responseData.id;\n } else {\n const error = new Error(\"Validation response missing checklist ID.\");\n this.validationCache.set(cacheKey, {\n status: RequestStatus.ERROR,\n error: responseData || error,\n });\n throw error; // Rethrow to be caught by catch block\n }\n })\n .catch((error) => {\n // Store the error object itself in the cache\n this.validationCache.set(cacheKey, {\n status: RequestStatus.ERROR,\n error,\n });\n throw error; // Re-throw so callers can catch it\n })\n .finally(() => {\n // Remove from pending requests map once done (success or fail)\n this.validationRequests.delete(cacheKey);\n });\n\n // Store the promise for potential concurrent requests\n this.validationRequests.set(cacheKey, requestPromise);\n return requestPromise;\n }\n\n /**\n * Fetches the full checklist data using the internal ID, returning a Promise.\n * Manages caching and deduplicates requests.\n * @param {string} internalId - The internal checklist ID.\n * @returns {Promise} A promise that resolves with the full checklist data.\n */\n fetchChecklist(internalId) {\n // 1. Check cache for final result (success or error)\n const cachedResult = this.fetchCache.get(internalId);\n if (cachedResult) {\n if (cachedResult.status === RequestStatus.SUCCESS) {\n // Return a deep copy to prevent mutation issues if multiple components use it\n return Promise.resolve(JSON.parse(JSON.stringify(cachedResult.data)));\n } else {\n return Promise.reject(cachedResult.error);\n }\n }\n\n // 2. Check for an ongoing request\n if (this.fetchRequests.has(internalId)) {\n // Return a promise that resolves with a deep copy\n return this.fetchRequests\n .get(internalId)\n .then((data) => JSON.parse(JSON.stringify(data)));\n }\n\n // 3. Start a new request\n const apiUrl = this._getApiUrl();\n if (!apiUrl) {\n const error = new Error(\n \"ChecklistNetworkManager: Gleap API URL not configured.\"\n );\n this.fetchCache.set(internalId, { status: RequestStatus.ERROR, error });\n return Promise.reject(error);\n }\n\n const url = `${apiUrl}/outbound/checklists/${internalId}?convertTipTap=true&${this._getQueryParams()}`;\n const requestPromise = this._makeRequest(\"GET\", url, null)\n .then((responseData) => {\n if (responseData) {\n // Cache the successful data\n this.fetchCache.set(internalId, {\n status: RequestStatus.SUCCESS,\n data: responseData,\n });\n // Return a deep copy of the data\n return JSON.parse(JSON.stringify(responseData));\n } else {\n // Should not happen with successful GET usually, but handle defensively\n const error = new Error(\n \"Empty response received for checklist fetch.\"\n );\n this.fetchCache.set(internalId, {\n status: RequestStatus.ERROR,\n error: responseData || error,\n });\n throw error;\n }\n })\n .catch((error) => {\n this.fetchCache.set(internalId, { status: RequestStatus.ERROR, error });\n throw error; // Re-throw so callers can catch it\n })\n .finally(() => {\n // Remove from pending requests map once done (success or fail)\n this.fetchRequests.delete(internalId);\n });\n\n this.fetchRequests.set(internalId, requestPromise);\n // Return a promise that resolves with a deep copy\n return requestPromise.then((data) => JSON.parse(JSON.stringify(data)));\n }\n}\n\nexport default ChecklistNetworkManager;\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n const lr = ['left', 'right'];\n const rl = ['right', 'left'];\n const tb = ['top', 'bottom'];\n const bt = ['bottom', 'top'];\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rl : lr;\n return isStart ? lr : rl;\n case 'left':\n case 'right':\n return isStart ? tb : bt;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n return {\n ...rect,\n top: rect.y,\n left: rect.x,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n ...rects.floating,\n x,\n y\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n if (!specifiedFallbackPlacements && fallbackAxisSideDirection !== 'none') {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$map$so;\n const placement = (_overflowsData$map$so = overflowsData.map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$map$so[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: 0,\n crossAxis: 0,\n alignmentAxis: null,\n ...rawValue\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = ['top', 'left'].includes(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const overflowAvailableHeight = height - overflow[heightSide];\n const overflowAvailableWidth = width - overflow[widthSide];\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if (isYAxis) {\n const maximumClippingWidth = width - overflow.left - overflow.right;\n availableWidth = alignment || noShift ? min(overflowAvailableWidth, maximumClippingWidth) : maximumClippingWidth;\n } else {\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n availableHeight = alignment || noShift ? min(overflowAvailableHeight, maximumClippingHeight) : maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n // Browsers without `ShadowRoot` support.\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isContainingBlock(element) {\n const webkit = isWebKit();\n const css = getComputedStyle(element);\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n return css.transform !== 'none' || css.perspective !== 'none' || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else {\n currentNode = getParentNode(currentNode);\n }\n }\n return null;\n}\nfunction isWebKit() {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nfunction isLastTraversableNode(node) {\n return ['html', 'body', '#document'].includes(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.pageXOffset,\n scrollTop: element.pageYOffset\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], win.frameElement && traverseIframes ? getOverflowAncestors(win.frameElement) : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isWebKit };\n","import { rectToClientRect, autoPlacement as autoPlacement$1, shift as shift$1, flip as flip$1, size as size$1, hide as hide$1, arrow as arrow$1, inline as inline$1, limitShift as limitShift$1, computePosition as computePosition$1 } from '@floating-ui/core';\nexport { detectOverflow, offset } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement, isElement, getWindow, isWebKit, getDocumentElement, getNodeName, isOverflowElement, getNodeScroll, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = currentWin.frameElement;\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = currentWin.frameElement;\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\nconst topLayerSelectors = [':popover-open', ':modal'];\nfunction isTopLayer(floating) {\n return topLayerSelectors.some(selector => {\n try {\n return floating.matches(selector);\n } catch (e) {\n return false;\n }\n });\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\nfunction getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n ...clippingAncestor,\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n const x = rect.left + scroll.scrollLeft - offsets.x;\n const y = rect.top + scroll.scrollTop - offsets.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n return element.offsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const window = getWindow(element);\n if (!isHTMLElement(element) || isTopLayer(element)) {\n return window;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && !isContainingBlock(offsetParent))) {\n return window;\n }\n return offsetParent || getContainingBlock(element) || window;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n ...(await getDimensionsFn(data.floating))\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const {\n left,\n top,\n width,\n height\n } = element.getBoundingClientRect();\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 100);\n } else {\n refresh(false, ratio);\n }\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle `;\n document.body.appendChild(elem);\n\n this.gleapFrameContainer = elem;\n this.gleapFrame = document.querySelector(\".gleap-frame\");\n\n this.updateFrameStyle();\n\n // Show loading preview for widget app mode.\n if (this.appMode === \"widget\") {\n this.showFrameContainer(true);\n }\n });\n });\n };\n\n showImage = (url) => {\n runFunctionWhenDomIsReady(() => {\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-image-view\";\n elem.innerHTML = `
\n \n
`;\n document.body.appendChild(elem);\n\n const closeElement = () => {\n elem.remove();\n };\n\n const close = elem.querySelector(\".gleap-image-view-close\");\n close.addEventListener(\"click\", () => {\n closeElement();\n });\n\n elem.addEventListener(\"click\", (e) => {\n if (e.target === elem) {\n closeElement();\n }\n });\n });\n };\n\n updateFrameStyle = () => {\n if (!this.gleapFrameContainer) {\n return;\n }\n\n const surveyStyle = \"gleap-frame-container--survey\";\n const extendedStyle = \"gleap-frame-container--extended\";\n const surveyFullStyle = \"gleap-frame-container--survey-full\";\n const classicStyle = \"gleap-frame-container--classic\";\n const classicStyleLeft = \"gleap-frame-container--classic-left\";\n const modernStyleLeft = \"gleap-frame-container--modern-left\";\n const noButtonStyleLeft = \"gleap-frame-container--no-button\";\n const allStyles = [\n classicStyle,\n classicStyleLeft,\n extendedStyle,\n modernStyleLeft,\n noButtonStyleLeft,\n surveyStyle,\n surveyFullStyle,\n ];\n for (let i = 0; i < allStyles.length; i++) {\n this.gleapFrameContainer.classList.remove(allStyles[i]);\n }\n\n var styleToApply = undefined;\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM\n ) {\n styleToApply = classicStyle;\n }\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT\n ) {\n styleToApply = classicStyleLeft;\n }\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_BOTTOM_LEFT\n ) {\n styleToApply = modernStyleLeft;\n }\n if (GleapFeedbackButtonManager.getInstance().buttonHidden === null) {\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_NONE\n ) {\n styleToApply = noButtonStyleLeft;\n }\n } else {\n if (GleapFeedbackButtonManager.getInstance().buttonHidden) {\n styleToApply = noButtonStyleLeft;\n }\n }\n if (styleToApply) {\n this.gleapFrameContainer.classList.add(styleToApply);\n }\n\n if (this.appMode === \"survey\") {\n this.gleapFrameContainer.classList.add(surveyStyle);\n }\n if (this.appMode === \"survey_full\" || this.appMode === \"survey_web\") {\n this.gleapFrameContainer.classList.add(surveyFullStyle);\n }\n if (this.appMode === \"extended\") {\n this.gleapFrameContainer.classList.add(extendedStyle);\n }\n\n this.gleapFrameContainer.setAttribute(\n \"dir\",\n GleapTranslationManager.getInstance().isRTLLayout ? \"rtl\" : \"ltr\"\n );\n };\n\n showFrameContainer(showLoader) {\n if (!this.gleapFrameContainer) {\n return;\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const loadingClass = \"gleap-frame-container--loading\";\n if (this.gleapFrameContainer.classList) {\n this.gleapFrameContainer.classList.remove(\n \"gleap-frame-container--hidden\"\n );\n if (showLoader) {\n this.gleapFrameContainer.classList.add(loadingClass);\n\n if (flowConfig.disableBGFade) {\n this.gleapFrameContainer.classList.add(\n \"gleap-frame-container--loading-nofade\"\n );\n }\n if (flowConfig.disableBGGradient) {\n this.gleapFrameContainer.classList.add(\n \"gleap-frame-container--loading-nogradient\"\n );\n }\n } else {\n this.gleapFrameContainer.classList.remove(loadingClass);\n }\n\n setTimeout(() => {\n this.gleapFrameContainer.classList.add(\n \"gleap-frame-container--animate\"\n );\n }, 500);\n }\n\n this.widgetOpened = true;\n this.updateUI();\n }\n\n runWidgetShouldOpenCallback() {\n if (!this.gleapFrameContainer) {\n return;\n }\n\n this.workThroughQueue();\n\n Gleap.getInstance().setGlobalDataItem(\"snapshotPosition\", {\n x: window.scrollX,\n y: window.scrollY,\n });\n\n this.showFrameContainer(false);\n this.updateWidgetStatus();\n\n GleapEventManager.notifyEvent(\"open\");\n this.registerEscListener();\n }\n\n updateUI() {\n // Clear notifications only when not opening a survey.\n GleapNotificationManager.getInstance().clearAllNotifications(\n this.isSurvey()\n );\n\n GleapFeedbackButtonManager.getInstance().updateNotificationBadge(0);\n GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n }\n\n showWidget() {\n setTimeout(() => {\n if (this.gleapFrameContainer) {\n this.runWidgetShouldOpenCallback();\n } else {\n GleapFrameManager.getInstance().injectFrame();\n }\n this.updateUI();\n }, 0);\n }\n\n updateWidgetStatus() {\n this.sendMessage({\n name: \"widget-status-update\",\n data: {\n isWidgetOpen: this.widgetOpened,\n },\n });\n }\n\n hideMarkerManager() {\n if (this.markerManager) {\n this.markerManager.clear();\n this.markerManager = null;\n }\n }\n\n hideWidget(resetRoutes = false) {\n // Prevent for survey web.\n if (this.appMode === \"survey_web\") {\n return;\n }\n\n this.hideMarkerManager();\n if (this.gleapFrameContainer) {\n this.gleapFrameContainer.classList.add(\"gleap-frame-container--hidden\");\n this.gleapFrameContainer.classList.remove(\n \"gleap-frame-container--animate\"\n );\n }\n if (resetRoutes) {\n this.sendMessage({\n name: \"reset-routes\",\n data: {},\n });\n }\n this.widgetOpened = false;\n this.updateWidgetStatus();\n GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n GleapEventManager.notifyEvent(\"close\");\n GleapNotificationManager.getInstance().reloadNotificationsFromCache();\n\n this.unregisterEscListener();\n\n if (typeof window !== \"undefined\" && typeof window.focus !== \"undefined\") {\n window.focus();\n }\n }\n\n sendMessage(data, queue = false) {\n try {\n this.gleapFrame = document.querySelector(\".gleap-frame\");\n if (this.comReady && this.gleapFrame && this.gleapFrame.contentWindow) {\n this.gleapFrame.contentWindow.postMessage(JSON.stringify(data), \"*\");\n } else {\n if (queue) {\n this.queue.push(data);\n }\n }\n } catch (e) {}\n }\n\n sendSessionUpdate() {\n this.sendMessage({\n name: \"session-update\",\n data: {\n sessionData: GleapSession.getInstance().getSession(),\n apiUrl: GleapSession.getInstance().apiUrl,\n sdkKey: GleapSession.getInstance().sdkKey,\n },\n });\n }\n\n sendConfigUpdate() {\n if (!this.comReady) {\n return;\n }\n\n this.sendMessage({\n name: \"config-update\",\n data: {\n config: GleapConfigManager.getInstance().getFlowConfig(),\n aiTools: GleapConfigManager.getInstance().getAiTools(),\n overrideLanguage:\n GleapTranslationManager.getInstance().getOverrideLanguage(),\n },\n });\n\n this.updateFrameStyle();\n }\n\n showDrawingScreen(type) {\n this.hideWidget();\n\n // Show screen drawing.\n this.markerManager = new GleapMarkerManager(type);\n this.markerManager.show((success) => {\n if (!success) {\n this.hideMarkerManager();\n }\n this.showWidget();\n });\n }\n\n workThroughQueue() {\n const workQueue = [...this.queue];\n this.queue = [];\n for (let i = 0; i < workQueue.length; i++) {\n this.sendMessage(workQueue[i], true);\n }\n }\n\n startCommunication() {\n // Listen for messages.\n this.addMessageListener((data) => {\n if (data.name === \"ping\") {\n this.comReady = true;\n this.sendConfigUpdate();\n this.sendSessionUpdate();\n this.workThroughQueue();\n setTimeout(() => {\n this.runWidgetShouldOpenCallback();\n }, 300);\n }\n\n if (data.name === \"play-ping\") {\n GleapAudioManager.ping();\n }\n\n if (data.name === \"open-image\") {\n this.showImage(data.data.url);\n }\n\n if (data.name === \"page-changed\") {\n if (\n data.data &&\n (data.data.name === \"newsdetails\" || data.data.name === \"appextended\")\n ) {\n this.setAppMode(\"extended\");\n } else {\n if (this.appMode === \"extended\") {\n this.setAppMode(\"widget\");\n }\n }\n }\n\n if (data.name === \"collect-ticket-data\") {\n var ticketData = {\n customData: GleapCustomDataManager.getInstance().getCustomData(),\n metaData: GleapMetaDataManager.getInstance().getMetaData(),\n consoleLog: GleapConsoleLogManager.getInstance().getLogs(),\n networkLogs: GleapNetworkIntercepter.getInstance().getRequests(),\n customEventLog: GleapStreamedEvent.getInstance().getEventArray(),\n formData: GleapCustomDataManager.getInstance().getTicketAttributes(),\n };\n\n // Add tags\n const tags = GleapTagManager.getInstance().getTags();\n if (tags && tags.length > 0) {\n ticketData.tags = tags;\n }\n\n this.sendMessage({\n name: \"collect-ticket-data\",\n data: ticketData,\n });\n }\n\n if (data.name === \"height-update\") {\n this.frameHeight = data.data;\n\n const innerContainer = document.querySelector(\n \".gleap-frame-container-inner\"\n );\n if (\n (this.appMode === \"survey\" ||\n this.appMode === \"survey_full\" ||\n this.appMode === \"survey_web\") &&\n innerContainer\n ) {\n innerContainer.style.maxHeight = `${this.frameHeight}px`;\n }\n }\n\n if (data.name === \"notify-event\") {\n GleapEventManager.notifyEvent(data.data.type, data.data.data);\n }\n\n if (data.name === \"cleanup-drawings\") {\n this.hideMarkerManager();\n }\n\n if (data.name === \"open-url\") {\n const url = data.data;\n const newTab = data.newTab ? true : false;\n this.urlHandler(url, newTab);\n }\n\n if (data.name === \"start-product-tour\") {\n Gleap.startProductTour(data.data?.tourId, true);\n }\n\n if (data.name === \"run-custom-action\") {\n GleapCustomActionManager.triggerCustomAction(data.data, {\n shareToken: data.shareToken,\n });\n }\n\n if (data.name === \"close-widget\") {\n this.hideWidget();\n }\n\n if (data.name === \"tool-execution\") {\n GleapEventManager.notifyEvent(\"tool-execution\", data.data);\n }\n\n if (data.name === \"send-feedback\") {\n const formData = data.data.formData;\n const action = data.data.action;\n const outboundId = data.data.outboundId;\n const spamToken = data.data.spamToken;\n\n const feedback = new GleapFeedback(\n action.feedbackType,\n \"MEDIUM\",\n formData,\n false,\n action.excludeData,\n outboundId,\n spamToken\n );\n feedback\n .sendFeedback()\n .then((feedbackData) => {\n this.sendMessage({\n name: \"feedback-sent\",\n data: feedbackData,\n });\n GleapEventManager.notifyEvent(\"feedback-sent\", formData);\n\n if (outboundId && outboundId.length > 0) {\n GleapEventManager.notifyEvent(\"outbound-sent\", {\n outboundId: outboundId,\n outbound: action,\n formData: formData,\n });\n\n try {\n delete formData.reportedBy;\n } catch (e) {}\n Gleap.trackEvent(`outbound-${outboundId}-submitted`, formData);\n }\n })\n .catch((error) => {\n this.sendMessage({\n name: \"feedback-sending-failed\",\n data: \"Something went wrong, please try again.\",\n });\n GleapEventManager.notifyEvent(\"error-while-sending\");\n });\n }\n\n if (data.name === \"start-screen-drawing\") {\n this.showDrawingScreen(data.data);\n }\n });\n\n // Add window message listener.\n window.addEventListener(\"message\", (event) => {\n if (\n event.origin !== this.frameUrl &&\n event.origin !== GleapBannerManager.getInstance().bannerUrl\n ) {\n return;\n }\n\n try {\n const data = JSON.parse(event.data);\n for (var i = 0; i < this.listeners.length; i++) {\n if (this.listeners[i]) {\n this.listeners[i](data);\n }\n }\n } catch (exp) {}\n });\n }\n\n addMessageListener(callback) {\n this.listeners.push(callback);\n }\n}\n","import { isMobile } from \"./GleapHelper\";\n\nexport default class GleapMetaDataManager {\n sessionStart = new Date();\n appBuildNumber = \"\";\n appVersionCode = \"\";\n environment = \"prod\";\n\n // GleapMetaDataManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapMetaDataManager();\n }\n return this.instance;\n }\n\n /**\n * Sets the app version code.\n * @param {string} appVersionCode\n */\n static setAppVersionCode(appVersionCode) {\n this.getInstance().appVersionCode = appVersionCode;\n }\n\n /**\n * Sets the app version code.\n * @param {string} appVersionCode\n */\n static setAppBuildNumber(appBuildNumber) {\n this.getInstance().appBuildNumber = appBuildNumber;\n }\n\n getSessionDuration() {\n const now = new Date();\n return Math.round((now.getTime() - this.sessionStart.getTime()) / 1000);\n }\n\n getMetaData() {\n var nAgt = navigator.userAgent;\n var browserName = navigator.appName;\n var fullVersion = \"\" + parseFloat(navigator.appVersion);\n var majorVersion = parseInt(navigator.appVersion, 10);\n var nameOffset, verOffset, ix;\n\n // In Opera, the true version is after \"Opera\" or after \"Version\"\n if ((verOffset = nAgt.indexOf(\"Opera\")) !== -1) {\n browserName = \"Opera\";\n fullVersion = nAgt.substring(verOffset + 6);\n if ((verOffset = nAgt.indexOf(\"Version\")) !== -1)\n fullVersion = nAgt.substring(verOffset + 8);\n }\n // In MSIE, the true version is after \"MSIE\" in userAgent\n else if ((verOffset = nAgt.indexOf(\"MSIE\")) !== -1) {\n browserName = \"Microsoft Internet Explorer\";\n fullVersion = nAgt.substring(verOffset + 5);\n }\n // In Chrome, the true version is after \"Chrome\"\n else if ((verOffset = nAgt.indexOf(\"Chrome\")) !== -1) {\n browserName = \"Chrome\";\n fullVersion = nAgt.substring(verOffset + 7);\n }\n // In Safari, the true version is after \"Safari\" or after \"Version\"\n else if ((verOffset = nAgt.indexOf(\"Safari\")) !== -1) {\n browserName = \"Safari\";\n fullVersion = nAgt.substring(verOffset + 7);\n if ((verOffset = nAgt.indexOf(\"Version\")) !== -1)\n fullVersion = nAgt.substring(verOffset + 8);\n }\n // In Firefox, the true version is after \"Firefox\"\n else if ((verOffset = nAgt.indexOf(\"Firefox\")) !== -1) {\n browserName = \"Firefox\";\n fullVersion = nAgt.substring(verOffset + 8);\n }\n // In most other browsers, \"name/version\" is at the end of userAgent\n else if (\n (nameOffset = nAgt.lastIndexOf(\" \") + 1) <\n (verOffset = nAgt.lastIndexOf(\"/\"))\n ) {\n browserName = nAgt.substring(nameOffset, verOffset);\n fullVersion = nAgt.substring(verOffset + 1);\n if (browserName.toLowerCase() === browserName.toUpperCase()) {\n browserName = navigator.appName;\n }\n }\n // trim the fullVersion string at semicolon/space if present\n if ((ix = fullVersion.indexOf(\";\")) !== -1)\n fullVersion = fullVersion.substring(0, ix);\n if ((ix = fullVersion.indexOf(\" \")) !== -1)\n fullVersion = fullVersion.substring(0, ix);\n\n majorVersion = parseInt(\"\" + fullVersion, 10);\n if (isNaN(majorVersion)) {\n fullVersion = \"\" + parseFloat(navigator.appVersion);\n majorVersion = parseInt(navigator.appVersion, 10);\n }\n\n var OSName = \"Unknown OS\";\n if (navigator.appVersion.indexOf(\"Win\") !== -1) OSName = \"Windows\";\n if (navigator.appVersion.indexOf(\"Mac\") !== -1) OSName = \"MacOS\";\n if (navigator.appVersion.indexOf(\"X11\") !== -1) OSName = \"UNIX\";\n if (navigator.appVersion.indexOf(\"Linux\") !== -1) OSName = \"Linux\";\n if (navigator.appVersion.indexOf(\"iPad\") !== -1) OSName = \"iPad\";\n if (navigator.appVersion.indexOf(\"iPhone\") !== -1) OSName = \"iPhone\";\n if (navigator.appVersion.indexOf(\"Android\") !== -1) OSName = \"Android\";\n\n return {\n browserName: browserName + \"(\" + fullVersion + \")\",\n userAgent: nAgt,\n browser: browserName,\n systemName: OSName,\n buildVersionNumber: this.appBuildNumber,\n releaseVersionNumber: this.appVersionCode,\n sessionDuration: this.getSessionDuration(),\n devicePixelRatio: window.devicePixelRatio,\n screenWidth: window.screen.width,\n screenHeight: window.screen.height,\n innerWidth: window.innerWidth,\n innerHeight: window.innerHeight,\n currentUrl: window.location.href,\n language: navigator.language || navigator.userLanguage,\n mobile: isMobile(),\n sdkVersion: SDK_VERSION,\n sdkType: \"javascript\",\n environment: this.environment,\n };\n }\n}\n","import { truncateString } from \"./GleapHelper\";\n\nexport default class GleapConsoleLogManager {\n logArray = [];\n disabled = false;\n originalConsoleLog;\n logMaxLength = 500;\n\n // GleapConsoleLogManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapConsoleLogManager();\n }\n return this.instance;\n }\n\n /**\n * Return the console logs\n * @returns {any[]} logs\n */\n getLogs() {\n return this.logArray;\n }\n\n /**\n * Revert console log overwrite.\n */\n stop() {\n this.disabled = true;\n if (this.originalConsoleLog) {\n window.console = this.originalConsoleLog;\n }\n }\n\n /**\n * Add message with log level to logs.\n * @param {*} message\n * @param {*} logLevel\n * @returns\n */\n addLog(message, logLevel = \"INFO\") {\n if (!message || message.length <= 0) {\n return;\n }\n\n this.logArray.push({\n log: truncateString(message, 1000),\n date: new Date(),\n priority: logLevel,\n });\n\n if (this.logArray.length > this.logMaxLength) {\n this.logArray.shift();\n }\n }\n\n /**\n * Add entry to logs.\n * @param {*} args\n * @param {*} logLevel\n * @returns\n */\n addLogWithArgs(args, logLevel) {\n if (!args || args.length <= 0) {\n return;\n }\n\n var log = \"\";\n try {\n for (var i = 0; i < args.length; i++) {\n log += args[i] + \" \";\n }\n } catch (exp) {}\n\n this.addLog(log, logLevel);\n }\n\n /**\n * Start console log overwrite.\n */\n start() {\n if (this.disabled) {\n return;\n }\n\n const self = this;\n window.console = (function (origConsole) {\n if (!window.console || !origConsole) {\n origConsole = {};\n }\n\n self.originalConsoleLog = origConsole;\n\n return {\n ...origConsole,\n log: function () {\n self.addLogWithArgs(arguments, \"INFO\");\n origConsole.log && origConsole.log.apply(origConsole, arguments);\n },\n warn: function () {\n self.addLogWithArgs(arguments, \"WARNING\");\n origConsole.warn && origConsole.warn.apply(origConsole, arguments);\n },\n error: function () {\n self.addLogWithArgs(arguments, \"ERROR\");\n origConsole.error && origConsole.error.apply(origConsole, arguments);\n },\n info: function (v) {\n self.addLogWithArgs(arguments, \"INFO\");\n origConsole.info && origConsole.info.apply(origConsole, arguments);\n },\n };\n })(window.console);\n }\n}\n","import { GleapConsoleLogManager, GleapFrameManager, handleGleapLink } from \"./Gleap\";\nimport { getDOMElementDescription } from \"./GleapHelper\";\n\nexport default class GleapClickListener {\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapClickListener();\n }\n return this.instance;\n }\n\n start() {\n document.addEventListener(\"click\", (e) => {\n if (!e.target) {\n return;\n }\n\n if (e.target.tagName === 'A' && e.target.protocol === 'gleap:') {\n e.preventDefault();\n\n const href = e.target.href;\n handleGleapLink(href);\n }\n\n if (!GleapFrameManager.getInstance().isOpened()) {\n GleapConsoleLogManager.getInstance().addLog(\n getDOMElementDescription(e.target),\n \"CLICK\"\n );\n }\n });\n }\n}\n","import { gleapDataParser } from \"./GleapHelper\";\n\nexport default class GleapCustomDataManager {\n customData = {};\n ticketAttributes = {};\n\n // GleapCustomDataManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapCustomDataManager();\n }\n return this.instance;\n }\n\n /**\n * Returns the custom data object\n * @returns {*}\n */\n getCustomData() {\n return this.customData;\n }\n\n /**\n * Set custom data that will be attached to the bug-report.\n * @param {*} data\n */\n attachCustomData(data) {\n this.customData = Object.assign(\n this.customData,\n gleapDataParser(data)\n );\n }\n\n /**\n * Add one key value pair to the custom data object\n * @param {*} key The key of the custom data entry you want to add.\n * @param {*} value The custom data you want to add.\n */\n setCustomData(key, value) {\n this.customData[key] = value;\n }\n\n /**\n * Remove one key value pair of the custom data object\n * @param {*} key The key of the custom data entry you want to remove.\n */\n removeCustomData(key) {\n delete this.customData[key];\n }\n\n /**\n * Clear the custom data\n */\n clearCustomData() {\n this.customData = {};\n }\n\n /**\n * This method is used to set ticket attributes programmatically.\n * @param {*} key The key of the attribute you want to add.\n * @param {*} value The value to set.\n */\n setTicketAttribute(key, value) {\n this.ticketAttributes[key] = value;\n }\n\n /**\n * This method is used to unset ticket attributes programmatically.\n * @param {*} key The key of the attribute you want to unset.\n */\n unsetTicketAttribute(key) {\n delete this.ticketAttributes[key];\n }\n\n /**\n * This method is used to clear ticket attributes programmatically.\n */\n clearTicketAttributes() {\n this.ticketAttributes = {};\n }\n\n getTicketAttributes() {\n return this.ticketAttributes;\n }\n}\n","import Gleap from \"./Gleap\";\n\nexport default class GleapEventManager {\n eventListeners = {};\n\n // GleapEventManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapEventManager();\n }\n return this.instance;\n }\n\n /**\n * Notify all registrants for event.\n */\n static notifyEvent(event, data = {}) {\n if (event === \"flow-started\") {\n\n const gleapInstance = Gleap.getInstance();\n gleapInstance.setGlobalDataItem(\"webReplay\", null);\n gleapInstance.setGlobalDataItem(\"screenRecordingData\", null);\n gleapInstance.takeCurrentReplay();\n }\n\n const eventListeners = this.getInstance().eventListeners[event];\n if (eventListeners) {\n for (var i = 0; i < eventListeners.length; i++) {\n const eventListener = eventListeners[i];\n if (eventListener) {\n eventListener(data);\n }\n }\n }\n }\n\n /**\n * Register events for Gleap.\n * @param {*} eventName\n * @param {*} callback\n */\n static on(eventName, callback) {\n const instance = this.getInstance();\n if (!instance.eventListeners[eventName]) {\n instance.eventListeners[eventName] = [];\n }\n instance.eventListeners[eventName].push(callback);\n }\n}\n","export default class GleapCustomActionManager {\n customActionCallbacks = [];\n\n // GleapCustomActionManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapCustomActionManager();\n }\n return this.instance;\n }\n\n /**\n * Register custom action\n */\n static registerCustomAction(customAction) {\n const instance = this.getInstance();\n if (instance.customActionCallbacks) {\n instance.customActionCallbacks.push(customAction);\n }\n }\n\n /**\n * Triggers a custom action\n */\n static triggerCustomAction(name, data) {\n const instance = this.getInstance();\n if (instance.customActionCallbacks) {\n for (var i = 0; i < instance.customActionCallbacks.length; i++) {\n var callback = instance.customActionCallbacks[i];\n if (callback) {\n callback({\n name,\n ...(data ? data : {}),\n });\n }\n }\n }\n }\n}\n","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar _a;\nvar __defProp$1 = Object.defineProperty;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$1 = (obj, key, value) => __defNormalProp$1(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar NodeType$3 = /* @__PURE__ */ ((NodeType2) => {\n NodeType2[NodeType2[\"Document\"] = 0] = \"Document\";\n NodeType2[NodeType2[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType2[NodeType2[\"Element\"] = 2] = \"Element\";\n NodeType2[NodeType2[\"Text\"] = 3] = \"Text\";\n NodeType2[NodeType2[\"CDATA\"] = 4] = \"CDATA\";\n NodeType2[NodeType2[\"Comment\"] = 5] = \"Comment\";\n return NodeType2;\n})(NodeType$3 || {});\nconst testableAccessors$1 = {\n Node: [\"childNodes\", \"parentNode\", \"parentElement\", \"textContent\"],\n ShadowRoot: [\"host\", \"styleSheets\"],\n Element: [\"shadowRoot\", \"querySelector\", \"querySelectorAll\"],\n MutationObserver: []\n};\nconst testableMethods$1 = {\n Node: [\"contains\", \"getRootNode\"],\n ShadowRoot: [\"getSelection\"],\n Element: [],\n MutationObserver: [\"constructor\"]\n};\nconst untaintedBasePrototype$1 = {};\nconst isAngularZonePresent$1 = () => {\n return !!globalThis.Zone;\n};\nfunction getUntaintedPrototype$1(key) {\n if (untaintedBasePrototype$1[key])\n return untaintedBasePrototype$1[key];\n const defaultObj = globalThis[key];\n const defaultPrototype = defaultObj.prototype;\n const accessorNames = key in testableAccessors$1 ? testableAccessors$1[key] : void 0;\n const isUntaintedAccessors = Boolean(\n accessorNames && // @ts-expect-error 2345\n accessorNames.every(\n (accessor) => {\n var _a2, _b;\n return Boolean(\n (_b = (_a2 = Object.getOwnPropertyDescriptor(defaultPrototype, accessor)) == null ? void 0 : _a2.get) == null ? void 0 : _b.toString().includes(\"[native code]\")\n );\n }\n )\n );\n const methodNames = key in testableMethods$1 ? testableMethods$1[key] : void 0;\n const isUntaintedMethods = Boolean(\n methodNames && methodNames.every(\n // @ts-expect-error 2345\n (method) => {\n var _a2;\n return typeof defaultPrototype[method] === \"function\" && ((_a2 = defaultPrototype[method]) == null ? void 0 : _a2.toString().includes(\"[native code]\"));\n }\n )\n );\n if (isUntaintedAccessors && isUntaintedMethods && !isAngularZonePresent$1()) {\n untaintedBasePrototype$1[key] = defaultObj.prototype;\n return defaultObj.prototype;\n }\n try {\n const iframeEl = document.createElement(\"iframe\");\n document.body.appendChild(iframeEl);\n const win = iframeEl.contentWindow;\n if (!win) return defaultObj.prototype;\n const untaintedObject = win[key].prototype;\n document.body.removeChild(iframeEl);\n if (!untaintedObject) return defaultPrototype;\n return untaintedBasePrototype$1[key] = untaintedObject;\n } catch {\n return defaultPrototype;\n }\n}\nconst untaintedAccessorCache$1 = {};\nfunction getUntaintedAccessor$1(key, instance, accessor) {\n var _a2;\n const cacheKey = `${key}.${String(accessor)}`;\n if (untaintedAccessorCache$1[cacheKey])\n return untaintedAccessorCache$1[cacheKey].call(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype$1(key);\n const untaintedAccessor = (_a2 = Object.getOwnPropertyDescriptor(\n untaintedPrototype,\n accessor\n )) == null ? void 0 : _a2.get;\n if (!untaintedAccessor) return instance[accessor];\n untaintedAccessorCache$1[cacheKey] = untaintedAccessor;\n return untaintedAccessor.call(instance);\n}\nconst untaintedMethodCache$1 = {};\nfunction getUntaintedMethod$1(key, instance, method) {\n const cacheKey = `${key}.${String(method)}`;\n if (untaintedMethodCache$1[cacheKey])\n return untaintedMethodCache$1[cacheKey].bind(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype$1(key);\n const untaintedMethod = untaintedPrototype[method];\n if (typeof untaintedMethod !== \"function\") return instance[method];\n untaintedMethodCache$1[cacheKey] = untaintedMethod;\n return untaintedMethod.bind(instance);\n}\nfunction childNodes$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"childNodes\");\n}\nfunction parentNode$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"parentNode\");\n}\nfunction parentElement$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"parentElement\");\n}\nfunction textContent$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"textContent\");\n}\nfunction contains$1(n2, other) {\n return getUntaintedMethod$1(\"Node\", n2, \"contains\")(other);\n}\nfunction getRootNode$1(n2) {\n return getUntaintedMethod$1(\"Node\", n2, \"getRootNode\")();\n}\nfunction host$1(n2) {\n if (!n2 || !(\"host\" in n2)) return null;\n return getUntaintedAccessor$1(\"ShadowRoot\", n2, \"host\");\n}\nfunction styleSheets$1(n2) {\n return n2.styleSheets;\n}\nfunction shadowRoot$1(n2) {\n if (!n2 || !(\"shadowRoot\" in n2)) return null;\n return getUntaintedAccessor$1(\"Element\", n2, \"shadowRoot\");\n}\nfunction querySelector$1(n2, selectors) {\n return getUntaintedAccessor$1(\"Element\", n2, \"querySelector\")(selectors);\n}\nfunction querySelectorAll$1(n2, selectors) {\n return getUntaintedAccessor$1(\"Element\", n2, \"querySelectorAll\")(selectors);\n}\nfunction mutationObserverCtor$1() {\n return getUntaintedPrototype$1(\"MutationObserver\").constructor;\n}\nconst index$1 = {\n childNodes: childNodes$1,\n parentNode: parentNode$1,\n parentElement: parentElement$1,\n textContent: textContent$1,\n contains: contains$1,\n getRootNode: getRootNode$1,\n host: host$1,\n styleSheets: styleSheets$1,\n shadowRoot: shadowRoot$1,\n querySelector: querySelector$1,\n querySelectorAll: querySelectorAll$1,\n mutationObserver: mutationObserverCtor$1\n};\nfunction isElement(n2) {\n return n2.nodeType === n2.ELEMENT_NODE;\n}\nfunction isShadowRoot(n2) {\n const hostEl = (\n // anchor and textarea elements also have a `host` property\n // but only shadow roots have a `mode` property\n n2 && \"host\" in n2 && \"mode\" in n2 && index$1.host(n2) || null\n );\n return Boolean(\n hostEl && \"shadowRoot\" in hostEl && index$1.shadowRoot(hostEl) === n2\n );\n}\nfunction isNativeShadowDom(shadowRoot2) {\n return Object.prototype.toString.call(shadowRoot2) === \"[object ShadowRoot]\";\n}\nfunction fixBrowserCompatibilityIssuesInCSS(cssText) {\n if (cssText.includes(\" background-clip: text;\") && !cssText.includes(\" -webkit-background-clip: text;\")) {\n cssText = cssText.replace(\n /\\sbackground-clip:\\s*text;/g,\n \" -webkit-background-clip: text; background-clip: text;\"\n );\n }\n return cssText;\n}\nfunction escapeImportStatement(rule2) {\n const { cssText } = rule2;\n if (cssText.split('\"').length < 3) return cssText;\n const statement = [\"@import\", `url(${JSON.stringify(rule2.href)})`];\n if (rule2.layerName === \"\") {\n statement.push(`layer`);\n } else if (rule2.layerName) {\n statement.push(`layer(${rule2.layerName})`);\n }\n if (rule2.supportsText) {\n statement.push(`supports(${rule2.supportsText})`);\n }\n if (rule2.media.length) {\n statement.push(rule2.media.mediaText);\n }\n return statement.join(\" \") + \";\";\n}\nfunction stringifyStylesheet(s2) {\n try {\n const rules2 = s2.rules || s2.cssRules;\n if (!rules2) {\n return null;\n }\n let sheetHref = s2.href;\n if (!sheetHref && s2.ownerNode && s2.ownerNode.ownerDocument) {\n sheetHref = s2.ownerNode.ownerDocument.location.href;\n }\n const stringifiedRules = Array.from(\n rules2,\n (rule2) => stringifyRule(rule2, sheetHref)\n ).join(\"\");\n return fixBrowserCompatibilityIssuesInCSS(stringifiedRules);\n } catch (error) {\n return null;\n }\n}\nfunction stringifyRule(rule2, sheetHref) {\n if (isCSSImportRule(rule2)) {\n let importStringified;\n try {\n importStringified = // for same-origin stylesheets,\n // we can access the imported stylesheet rules directly\n stringifyStylesheet(rule2.styleSheet) || // work around browser issues with the raw string `@import url(...)` statement\n escapeImportStatement(rule2);\n } catch (error) {\n importStringified = rule2.cssText;\n }\n if (rule2.styleSheet.href) {\n return absolutifyURLs(importStringified, rule2.styleSheet.href);\n }\n return importStringified;\n } else {\n let ruleStringified = rule2.cssText;\n if (isCSSStyleRule(rule2) && rule2.selectorText.includes(\":\")) {\n ruleStringified = fixSafariColons(ruleStringified);\n }\n if (sheetHref) {\n return absolutifyURLs(ruleStringified, sheetHref);\n }\n return ruleStringified;\n }\n}\nfunction fixSafariColons(cssStringified) {\n const regex = /(\\[(?:[\\w-]+)[^\\\\])(:(?:[\\w-]+)\\])/gm;\n return cssStringified.replace(regex, \"$1\\\\$2\");\n}\nfunction isCSSImportRule(rule2) {\n return \"styleSheet\" in rule2;\n}\nfunction isCSSStyleRule(rule2) {\n return \"selectorText\" in rule2;\n}\nclass Mirror {\n constructor() {\n __publicField$1(this, \"idNodeMap\", /* @__PURE__ */ new Map());\n __publicField$1(this, \"nodeMetaMap\", /* @__PURE__ */ new WeakMap());\n }\n getId(n2) {\n var _a2;\n if (!n2) return -1;\n const id = (_a2 = this.getMeta(n2)) == null ? void 0 : _a2.id;\n return id ?? -1;\n }\n getNode(id) {\n return this.idNodeMap.get(id) || null;\n }\n getIds() {\n return Array.from(this.idNodeMap.keys());\n }\n getMeta(n2) {\n return this.nodeMetaMap.get(n2) || null;\n }\n // removes the node from idNodeMap\n // doesn't remove the node from nodeMetaMap\n removeNodeFromMap(n2) {\n const id = this.getId(n2);\n this.idNodeMap.delete(id);\n if (n2.childNodes) {\n n2.childNodes.forEach(\n (childNode) => this.removeNodeFromMap(childNode)\n );\n }\n }\n has(id) {\n return this.idNodeMap.has(id);\n }\n hasNode(node2) {\n return this.nodeMetaMap.has(node2);\n }\n add(n2, meta) {\n const id = meta.id;\n this.idNodeMap.set(id, n2);\n this.nodeMetaMap.set(n2, meta);\n }\n replace(id, n2) {\n const oldNode = this.getNode(id);\n if (oldNode) {\n const meta = this.nodeMetaMap.get(oldNode);\n if (meta) this.nodeMetaMap.set(n2, meta);\n }\n this.idNodeMap.set(id, n2);\n }\n reset() {\n this.idNodeMap = /* @__PURE__ */ new Map();\n this.nodeMetaMap = /* @__PURE__ */ new WeakMap();\n }\n}\nfunction createMirror$2() {\n return new Mirror();\n}\nfunction maskInputValue({\n element,\n maskInputOptions,\n tagName,\n type,\n value,\n maskInputFn\n}) {\n let text = value || \"\";\n const actualType = type && toLowerCase(type);\n if (maskInputOptions[tagName.toLowerCase()] || actualType && maskInputOptions[actualType]) {\n if (maskInputFn) {\n text = maskInputFn(text, element);\n } else {\n text = \"*\".repeat(text.length);\n }\n }\n return text;\n}\nfunction toLowerCase(str) {\n return str.toLowerCase();\n}\nconst ORIGINAL_ATTRIBUTE_NAME = \"__rrweb_original__\";\nfunction is2DCanvasBlank(canvas) {\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) return true;\n const chunkSize = 50;\n for (let x2 = 0; x2 < canvas.width; x2 += chunkSize) {\n for (let y = 0; y < canvas.height; y += chunkSize) {\n const getImageData = ctx.getImageData;\n const originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData ? getImageData[ORIGINAL_ATTRIBUTE_NAME] : getImageData;\n const pixelBuffer = new Uint32Array(\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n originalGetImageData.call(\n ctx,\n x2,\n y,\n Math.min(chunkSize, canvas.width - x2),\n Math.min(chunkSize, canvas.height - y)\n ).data.buffer\n );\n if (pixelBuffer.some((pixel) => pixel !== 0)) return false;\n }\n }\n return true;\n}\nfunction getInputType(element) {\n const type = element.type;\n return element.hasAttribute(\"data-rr-is-password\") ? \"password\" : type ? (\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n toLowerCase(type)\n ) : null;\n}\nfunction extractFileExtension(path, baseURL) {\n let url;\n try {\n url = new URL(path, baseURL ?? window.location.href);\n } catch (err) {\n return null;\n }\n const regex = /\\.([0-9a-z]+)(?:$)/i;\n const match = url.pathname.match(regex);\n return (match == null ? void 0 : match[1]) ?? null;\n}\nfunction extractOrigin(url) {\n let origin = \"\";\n if (url.indexOf(\"//\") > -1) {\n origin = url.split(\"/\").slice(0, 3).join(\"/\");\n } else {\n origin = url.split(\"/\")[0];\n }\n origin = origin.split(\"?\")[0];\n return origin;\n}\nconst URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\nconst URL_PROTOCOL_MATCH = /^(?:[a-z+]+:)?\\/\\//i;\nconst URL_WWW_MATCH = /^www\\..*/i;\nconst DATA_URI = /^(data:)([^,]*),(.*)/i;\nfunction absolutifyURLs(cssText, href) {\n return (cssText || \"\").replace(\n URL_IN_CSS_REF,\n (origin, quote1, path1, quote2, path2, path3) => {\n const filePath = path1 || path2 || path3;\n const maybeQuote = quote1 || quote2 || \"\";\n if (!filePath) {\n return origin;\n }\n if (URL_PROTOCOL_MATCH.test(filePath) || URL_WWW_MATCH.test(filePath)) {\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\n }\n if (DATA_URI.test(filePath)) {\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\n }\n if (filePath[0] === \"/\") {\n return `url(${maybeQuote}${extractOrigin(href) + filePath}${maybeQuote})`;\n }\n const stack = href.split(\"/\");\n const parts = filePath.split(\"/\");\n stack.pop();\n for (const part of parts) {\n if (part === \".\") {\n continue;\n } else if (part === \"..\") {\n stack.pop();\n } else {\n stack.push(part);\n }\n }\n return `url(${maybeQuote}${stack.join(\"/\")}${maybeQuote})`;\n }\n );\n}\nfunction normalizeCssString(cssText) {\n return cssText.replace(/(\\/\\*[^*]*\\*\\/)|[\\s;]/g, \"\");\n}\nfunction splitCssText(cssText, style) {\n const childNodes2 = Array.from(style.childNodes);\n const splits = [];\n if (childNodes2.length > 1 && cssText && typeof cssText === \"string\") {\n const cssTextNorm = normalizeCssString(cssText);\n for (let i2 = 1; i2 < childNodes2.length; i2++) {\n if (childNodes2[i2].textContent && typeof childNodes2[i2].textContent === \"string\") {\n const textContentNorm = normalizeCssString(childNodes2[i2].textContent);\n for (let j = 3; j < textContentNorm.length; j++) {\n const bit = textContentNorm.substring(0, j);\n if (cssTextNorm.split(bit).length === 2) {\n const splitNorm = cssTextNorm.indexOf(bit);\n for (let k = splitNorm; k < cssText.length; k++) {\n if (normalizeCssString(cssText.substring(0, k)).length === splitNorm) {\n splits.push(cssText.substring(0, k));\n cssText = cssText.substring(k);\n break;\n }\n }\n break;\n }\n }\n }\n }\n }\n splits.push(cssText);\n return splits;\n}\nfunction markCssSplits(cssText, style) {\n return splitCssText(cssText, style).join(\"/* rr_split */\");\n}\nlet _id = 1;\nconst tagNameRegex = new RegExp(\"[^a-z0-9-_:]\");\nconst IGNORED_NODE = -2;\nfunction genId() {\n return _id++;\n}\nfunction getValidTagName$1(element) {\n if (element instanceof HTMLFormElement) {\n return \"form\";\n }\n const processedTagName = toLowerCase(element.tagName);\n if (tagNameRegex.test(processedTagName)) {\n return \"div\";\n }\n return processedTagName;\n}\nlet canvasService;\nlet canvasCtx;\nconst SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\nconst SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\n if (attributeValue.trim() === \"\") {\n return attributeValue;\n }\n let pos = 0;\n function collectCharacters(regEx) {\n let chars2;\n const match = regEx.exec(attributeValue.substring(pos));\n if (match) {\n chars2 = match[0];\n pos += chars2.length;\n return chars2;\n }\n return \"\";\n }\n const output = [];\n while (true) {\n collectCharacters(SRCSET_COMMAS_OR_SPACES);\n if (pos >= attributeValue.length) {\n break;\n }\n let url = collectCharacters(SRCSET_NOT_SPACES);\n if (url.slice(-1) === \",\") {\n url = absoluteToDoc(doc, url.substring(0, url.length - 1));\n output.push(url);\n } else {\n let descriptorsStr = \"\";\n url = absoluteToDoc(doc, url);\n let inParens = false;\n while (true) {\n const c2 = attributeValue.charAt(pos);\n if (c2 === \"\") {\n output.push((url + descriptorsStr).trim());\n break;\n } else if (!inParens) {\n if (c2 === \",\") {\n pos += 1;\n output.push((url + descriptorsStr).trim());\n break;\n } else if (c2 === \"(\") {\n inParens = true;\n }\n } else {\n if (c2 === \")\") {\n inParens = false;\n }\n }\n descriptorsStr += c2;\n pos += 1;\n }\n }\n }\n return output.join(\", \");\n}\nconst cachedDocument = /* @__PURE__ */ new WeakMap();\nfunction absoluteToDoc(doc, attributeValue) {\n if (!attributeValue || attributeValue.trim() === \"\") {\n return attributeValue;\n }\n return getHref(doc, attributeValue);\n}\nfunction isSVGElement(el) {\n return Boolean(el.tagName === \"svg\" || el.ownerSVGElement);\n}\nfunction getHref(doc, customHref) {\n let a2 = cachedDocument.get(doc);\n if (!a2) {\n a2 = doc.createElement(\"a\");\n cachedDocument.set(doc, a2);\n }\n if (!customHref) {\n customHref = \"\";\n } else if (customHref.startsWith(\"blob:\") || customHref.startsWith(\"data:\")) {\n return customHref;\n }\n a2.setAttribute(\"href\", customHref);\n return a2.href;\n}\nfunction transformAttribute(doc, tagName, name, value) {\n if (!value) {\n return value;\n }\n if (name === \"src\" || name === \"href\" && !(tagName === \"use\" && value[0] === \"#\")) {\n return absoluteToDoc(doc, value);\n } else if (name === \"xlink:href\" && value[0] !== \"#\") {\n return absoluteToDoc(doc, value);\n } else if (name === \"background\" && (tagName === \"table\" || tagName === \"td\" || tagName === \"th\")) {\n return absoluteToDoc(doc, value);\n } else if (name === \"srcset\") {\n return getAbsoluteSrcsetString(doc, value);\n } else if (name === \"style\") {\n return absolutifyURLs(value, getHref(doc));\n } else if (tagName === \"object\" && name === \"data\") {\n return absoluteToDoc(doc, value);\n }\n return value;\n}\nfunction ignoreAttribute(tagName, name, _value) {\n return (tagName === \"video\" || tagName === \"audio\") && name === \"autoplay\";\n}\nfunction _isBlockedElement(element, blockClass, blockSelector) {\n try {\n if (typeof blockClass === \"string\") {\n if (element.classList.contains(blockClass)) {\n return true;\n }\n } else {\n for (let eIndex = element.classList.length; eIndex--; ) {\n const className = element.classList[eIndex];\n if (blockClass.test(className)) {\n return true;\n }\n }\n }\n if (blockSelector) {\n return element.matches(blockSelector);\n }\n } catch (e2) {\n }\n return false;\n}\nfunction classMatchesRegex(node2, regex, checkAncestors) {\n if (!node2) return false;\n if (node2.nodeType !== node2.ELEMENT_NODE) {\n if (!checkAncestors) return false;\n return classMatchesRegex(index$1.parentNode(node2), regex, checkAncestors);\n }\n for (let eIndex = node2.classList.length; eIndex--; ) {\n const className = node2.classList[eIndex];\n if (regex.test(className)) {\n return true;\n }\n }\n if (!checkAncestors) return false;\n return classMatchesRegex(index$1.parentNode(node2), regex, checkAncestors);\n}\nfunction needMaskingText(node2, maskTextClass, maskTextSelector, checkAncestors) {\n let el;\n if (isElement(node2)) {\n el = node2;\n if (!index$1.childNodes(el).length) {\n return false;\n }\n } else if (index$1.parentElement(node2) === null) {\n return false;\n } else {\n el = index$1.parentElement(node2);\n }\n try {\n if (typeof maskTextClass === \"string\") {\n if (checkAncestors) {\n if (el.closest(`.${maskTextClass}`)) return true;\n } else {\n if (el.classList.contains(maskTextClass)) return true;\n }\n } else {\n if (classMatchesRegex(el, maskTextClass, checkAncestors)) return true;\n }\n if (maskTextSelector) {\n if (checkAncestors) {\n if (el.closest(maskTextSelector)) return true;\n } else {\n if (el.matches(maskTextSelector)) return true;\n }\n }\n } catch (e2) {\n }\n return false;\n}\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\n const win = iframeEl.contentWindow;\n if (!win) {\n return;\n }\n let fired = false;\n let readyState;\n try {\n readyState = win.document.readyState;\n } catch (error) {\n return;\n }\n if (readyState !== \"complete\") {\n const timer = setTimeout(() => {\n if (!fired) {\n listener();\n fired = true;\n }\n }, iframeLoadTimeout);\n iframeEl.addEventListener(\"load\", () => {\n clearTimeout(timer);\n fired = true;\n listener();\n });\n return;\n }\n const blankUrl = \"about:blank\";\n if (win.location.href !== blankUrl || iframeEl.src === blankUrl || iframeEl.src === \"\") {\n setTimeout(listener, 0);\n return iframeEl.addEventListener(\"load\", listener);\n }\n iframeEl.addEventListener(\"load\", listener);\n}\nfunction onceStylesheetLoaded(link, listener, styleSheetLoadTimeout) {\n let fired = false;\n let styleSheetLoaded;\n try {\n styleSheetLoaded = link.sheet;\n } catch (error) {\n return;\n }\n if (styleSheetLoaded) return;\n const timer = setTimeout(() => {\n if (!fired) {\n listener();\n fired = true;\n }\n }, styleSheetLoadTimeout);\n link.addEventListener(\"load\", () => {\n clearTimeout(timer);\n fired = true;\n listener();\n });\n}\nfunction serializeNode(n2, options) {\n const {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n inlineStylesheet,\n maskInputOptions = {},\n maskTextFn,\n maskInputFn,\n dataURLOptions = {},\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement = false,\n cssCaptured = false\n } = options;\n const rootId = getRootId(doc, mirror2);\n switch (n2.nodeType) {\n case n2.DOCUMENT_NODE:\n if (n2.compatMode !== \"CSS1Compat\") {\n return {\n type: NodeType$3.Document,\n childNodes: [],\n compatMode: n2.compatMode\n // probably \"BackCompat\"\n };\n } else {\n return {\n type: NodeType$3.Document,\n childNodes: []\n };\n }\n case n2.DOCUMENT_TYPE_NODE:\n return {\n type: NodeType$3.DocumentType,\n name: n2.name,\n publicId: n2.publicId,\n systemId: n2.systemId,\n rootId\n };\n case n2.ELEMENT_NODE:\n return serializeElementNode(n2, {\n doc,\n blockClass,\n blockSelector,\n inlineStylesheet,\n maskInputOptions,\n maskInputFn,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement,\n rootId\n });\n case n2.TEXT_NODE:\n return serializeTextNode(n2, {\n doc,\n needsMask,\n maskTextFn,\n rootId,\n cssCaptured\n });\n case n2.CDATA_SECTION_NODE:\n return {\n type: NodeType$3.CDATA,\n textContent: \"\",\n rootId\n };\n case n2.COMMENT_NODE:\n return {\n type: NodeType$3.Comment,\n textContent: index$1.textContent(n2) || \"\",\n rootId\n };\n default:\n return false;\n }\n}\nfunction getRootId(doc, mirror2) {\n if (!mirror2.hasNode(doc)) return void 0;\n const docId = mirror2.getId(doc);\n return docId === 1 ? void 0 : docId;\n}\nfunction serializeTextNode(n2, options) {\n const { needsMask, maskTextFn, rootId, cssCaptured } = options;\n const parent = index$1.parentNode(n2);\n const parentTagName = parent && parent.tagName;\n let textContent2 = \"\";\n const isStyle = parentTagName === \"STYLE\" ? true : void 0;\n const isScript = parentTagName === \"SCRIPT\" ? true : void 0;\n if (isScript) {\n textContent2 = \"SCRIPT_PLACEHOLDER\";\n } else if (!cssCaptured) {\n textContent2 = index$1.textContent(n2);\n if (isStyle && textContent2) {\n textContent2 = absolutifyURLs(textContent2, getHref(options.doc));\n }\n }\n if (!isStyle && !isScript && textContent2 && needsMask) {\n textContent2 = maskTextFn ? maskTextFn(textContent2, index$1.parentElement(n2)) : textContent2.replace(/[\\S]/g, \"*\");\n }\n return {\n type: NodeType$3.Text,\n textContent: textContent2 || \"\",\n rootId\n };\n}\nfunction serializeElementNode(n2, options) {\n const {\n doc,\n blockClass,\n blockSelector,\n inlineStylesheet,\n maskInputOptions = {},\n maskInputFn,\n dataURLOptions = {},\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement = false,\n rootId\n } = options;\n const needBlock = _isBlockedElement(n2, blockClass, blockSelector);\n const tagName = getValidTagName$1(n2);\n let attributes = {};\n const len = n2.attributes.length;\n for (let i2 = 0; i2 < len; i2++) {\n const attr = n2.attributes[i2];\n if (!ignoreAttribute(tagName, attr.name, attr.value)) {\n attributes[attr.name] = transformAttribute(\n doc,\n tagName,\n toLowerCase(attr.name),\n attr.value\n );\n }\n }\n if (tagName === \"link\" && inlineStylesheet) {\n const stylesheet = Array.from(doc.styleSheets).find((s2) => {\n return s2.href === n2.href;\n });\n let cssText = null;\n if (stylesheet) {\n cssText = stringifyStylesheet(stylesheet);\n }\n if (cssText) {\n delete attributes.rel;\n delete attributes.href;\n attributes._cssText = cssText;\n }\n }\n if (tagName === \"style\" && n2.sheet) {\n let cssText = stringifyStylesheet(\n n2.sheet\n );\n if (cssText) {\n if (n2.childNodes.length > 1) {\n cssText = markCssSplits(cssText, n2);\n }\n attributes._cssText = cssText;\n }\n }\n if (tagName === \"input\" || tagName === \"textarea\" || tagName === \"select\") {\n const value = n2.value;\n const checked = n2.checked;\n if (attributes.type !== \"radio\" && attributes.type !== \"checkbox\" && attributes.type !== \"submit\" && attributes.type !== \"button\" && value) {\n attributes.value = maskInputValue({\n element: n2,\n type: getInputType(n2),\n tagName,\n value,\n maskInputOptions,\n maskInputFn\n });\n } else if (checked) {\n attributes.checked = checked;\n }\n }\n if (tagName === \"option\") {\n if (n2.selected && !maskInputOptions[\"select\"]) {\n attributes.selected = true;\n } else {\n delete attributes.selected;\n }\n }\n if (tagName === \"dialog\" && n2.open) {\n attributes.rr_open_mode = n2.matches(\"dialog:modal\") ? \"modal\" : \"non-modal\";\n }\n if (tagName === \"canvas\" && recordCanvas) {\n if (n2.__context === \"2d\") {\n if (!is2DCanvasBlank(n2)) {\n attributes.rr_dataURL = n2.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n }\n } else if (!(\"__context\" in n2)) {\n const canvasDataURL = n2.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n const blankCanvas = doc.createElement(\"canvas\");\n blankCanvas.width = n2.width;\n blankCanvas.height = n2.height;\n const blankCanvasDataURL = blankCanvas.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n if (canvasDataURL !== blankCanvasDataURL) {\n attributes.rr_dataURL = canvasDataURL;\n }\n }\n }\n if (tagName === \"img\" && inlineImages) {\n if (!canvasService) {\n canvasService = doc.createElement(\"canvas\");\n canvasCtx = canvasService.getContext(\"2d\");\n }\n const image = n2;\n const imageSrc = image.currentSrc || image.getAttribute(\"src\") || \"\";\n const priorCrossOrigin = image.crossOrigin;\n const recordInlineImage = () => {\n image.removeEventListener(\"load\", recordInlineImage);\n try {\n canvasService.width = image.naturalWidth;\n canvasService.height = image.naturalHeight;\n canvasCtx.drawImage(image, 0, 0);\n attributes.rr_dataURL = canvasService.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n } catch (err) {\n if (image.crossOrigin !== \"anonymous\") {\n image.crossOrigin = \"anonymous\";\n if (image.complete && image.naturalWidth !== 0)\n recordInlineImage();\n else image.addEventListener(\"load\", recordInlineImage);\n return;\n } else {\n console.warn(\n `Cannot inline img src=${imageSrc}! Error: ${err}`\n );\n }\n }\n if (image.crossOrigin === \"anonymous\") {\n priorCrossOrigin ? attributes.crossOrigin = priorCrossOrigin : image.removeAttribute(\"crossorigin\");\n }\n };\n if (image.complete && image.naturalWidth !== 0) recordInlineImage();\n else image.addEventListener(\"load\", recordInlineImage);\n }\n if (tagName === \"audio\" || tagName === \"video\") {\n const mediaAttributes = attributes;\n mediaAttributes.rr_mediaState = n2.paused ? \"paused\" : \"played\";\n mediaAttributes.rr_mediaCurrentTime = n2.currentTime;\n mediaAttributes.rr_mediaPlaybackRate = n2.playbackRate;\n mediaAttributes.rr_mediaMuted = n2.muted;\n mediaAttributes.rr_mediaLoop = n2.loop;\n mediaAttributes.rr_mediaVolume = n2.volume;\n }\n if (!newlyAddedElement) {\n if (n2.scrollLeft) {\n attributes.rr_scrollLeft = n2.scrollLeft;\n }\n if (n2.scrollTop) {\n attributes.rr_scrollTop = n2.scrollTop;\n }\n }\n if (needBlock) {\n const { width, height } = n2.getBoundingClientRect();\n attributes = {\n class: attributes.class,\n rr_width: `${width}px`,\n rr_height: `${height}px`\n };\n }\n if (tagName === \"iframe\" && !keepIframeSrcFn(attributes.src)) {\n if (!n2.contentDocument) {\n attributes.rr_src = attributes.src;\n }\n delete attributes.src;\n }\n let isCustomElement;\n try {\n if (customElements.get(tagName)) isCustomElement = true;\n } catch (e2) {\n }\n return {\n type: NodeType$3.Element,\n tagName,\n attributes,\n childNodes: [],\n isSVG: isSVGElement(n2) || void 0,\n needBlock,\n rootId,\n isCustom: isCustomElement\n };\n}\nfunction lowerIfExists(maybeAttr) {\n if (maybeAttr === void 0 || maybeAttr === null) {\n return \"\";\n } else {\n return maybeAttr.toLowerCase();\n }\n}\nfunction slimDOMExcluded(sn, slimDOMOptions) {\n if (slimDOMOptions.comment && sn.type === NodeType$3.Comment) {\n return true;\n } else if (sn.type === NodeType$3.Element) {\n if (slimDOMOptions.script && // script tag\n (sn.tagName === \"script\" || // (module)preload link\n sn.tagName === \"link\" && (sn.attributes.rel === \"preload\" || sn.attributes.rel === \"modulepreload\") && sn.attributes.as === \"script\" || // prefetch link\n sn.tagName === \"link\" && sn.attributes.rel === \"prefetch\" && typeof sn.attributes.href === \"string\" && extractFileExtension(sn.attributes.href) === \"js\")) {\n return true;\n } else if (slimDOMOptions.headFavicon && (sn.tagName === \"link\" && sn.attributes.rel === \"shortcut icon\" || sn.tagName === \"meta\" && (lowerIfExists(sn.attributes.name).match(\n /^msapplication-tile(image|color)$/\n ) || lowerIfExists(sn.attributes.name) === \"application-name\" || lowerIfExists(sn.attributes.rel) === \"icon\" || lowerIfExists(sn.attributes.rel) === \"apple-touch-icon\" || lowerIfExists(sn.attributes.rel) === \"shortcut icon\"))) {\n return true;\n } else if (sn.tagName === \"meta\") {\n if (slimDOMOptions.headMetaDescKeywords && lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\n return true;\n } else if (slimDOMOptions.headMetaSocial && (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) || // og = opengraph (facebook)\n lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) || lowerIfExists(sn.attributes.name) === \"pinterest\")) {\n return true;\n } else if (slimDOMOptions.headMetaRobots && (lowerIfExists(sn.attributes.name) === \"robots\" || lowerIfExists(sn.attributes.name) === \"googlebot\" || lowerIfExists(sn.attributes.name) === \"bingbot\")) {\n return true;\n } else if (slimDOMOptions.headMetaHttpEquiv && sn.attributes[\"http-equiv\"] !== void 0) {\n return true;\n } else if (slimDOMOptions.headMetaAuthorship && (lowerIfExists(sn.attributes.name) === \"author\" || lowerIfExists(sn.attributes.name) === \"generator\" || lowerIfExists(sn.attributes.name) === \"framework\" || lowerIfExists(sn.attributes.name) === \"publisher\" || lowerIfExists(sn.attributes.name) === \"progid\" || lowerIfExists(sn.attributes.property).match(/^article:/) || lowerIfExists(sn.attributes.property).match(/^product:/))) {\n return true;\n } else if (slimDOMOptions.headMetaVerification && (lowerIfExists(sn.attributes.name) === \"google-site-verification\" || lowerIfExists(sn.attributes.name) === \"yandex-verification\" || lowerIfExists(sn.attributes.name) === \"csrf-token\" || lowerIfExists(sn.attributes.name) === \"p:domain_verify\" || lowerIfExists(sn.attributes.name) === \"verify-v1\" || lowerIfExists(sn.attributes.name) === \"verification\" || lowerIfExists(sn.attributes.name) === \"shopify-checkout-api-token\")) {\n return true;\n }\n }\n }\n return false;\n}\nfunction serializeNodeWithId(n2, options) {\n const {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n skipChild = false,\n inlineStylesheet = true,\n maskInputOptions = {},\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions = {},\n inlineImages = false,\n recordCanvas = false,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout = 5e3,\n onStylesheetLoad,\n stylesheetLoadTimeout = 5e3,\n keepIframeSrcFn = () => false,\n newlyAddedElement = false,\n cssCaptured = false\n } = options;\n let { needsMask } = options;\n let { preserveWhiteSpace = true } = options;\n if (!needsMask) {\n const checkAncestors = needsMask === void 0;\n needsMask = needMaskingText(\n n2,\n maskTextClass,\n maskTextSelector,\n checkAncestors\n );\n }\n const _serializedNode = serializeNode(n2, {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement,\n cssCaptured\n });\n if (!_serializedNode) {\n console.warn(n2, \"not serialized\");\n return null;\n }\n let id;\n if (mirror2.hasNode(n2)) {\n id = mirror2.getId(n2);\n } else if (slimDOMExcluded(_serializedNode, slimDOMOptions) || !preserveWhiteSpace && _serializedNode.type === NodeType$3.Text && !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, \"\").length) {\n id = IGNORED_NODE;\n } else {\n id = genId();\n }\n const serializedNode = Object.assign(_serializedNode, { id });\n mirror2.add(n2, serializedNode);\n if (id === IGNORED_NODE) {\n return null;\n }\n if (onSerialize) {\n onSerialize(n2);\n }\n let recordChild = !skipChild;\n if (serializedNode.type === NodeType$3.Element) {\n recordChild = recordChild && !serializedNode.needBlock;\n delete serializedNode.needBlock;\n const shadowRootEl = index$1.shadowRoot(n2);\n if (shadowRootEl && isNativeShadowDom(shadowRootEl))\n serializedNode.isShadowHost = true;\n }\n if ((serializedNode.type === NodeType$3.Document || serializedNode.type === NodeType$3.Element) && recordChild) {\n if (slimDOMOptions.headWhitespace && serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"head\") {\n preserveWhiteSpace = false;\n }\n const bypassOptions = {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n skipChild,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn,\n cssCaptured: false\n };\n if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"textarea\" && serializedNode.attributes.value !== void 0) ;\n else {\n if (serializedNode.type === NodeType$3.Element && serializedNode.attributes._cssText !== void 0 && typeof serializedNode.attributes._cssText === \"string\") {\n bypassOptions.cssCaptured = true;\n }\n for (const childN of Array.from(index$1.childNodes(n2))) {\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n }\n let shadowRootEl = null;\n if (isElement(n2) && (shadowRootEl = index$1.shadowRoot(n2))) {\n for (const childN of Array.from(index$1.childNodes(shadowRootEl))) {\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n isNativeShadowDom(shadowRootEl) && (serializedChildNode.isShadow = true);\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n }\n }\n const parent = index$1.parentNode(n2);\n if (parent && isShadowRoot(parent) && isNativeShadowDom(parent)) {\n serializedNode.isShadow = true;\n }\n if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"iframe\") {\n onceIframeLoaded(\n n2,\n () => {\n const iframeDoc = n2.contentDocument;\n if (iframeDoc && onIframeLoad) {\n const serializedIframeNode = serializeNodeWithId(iframeDoc, {\n doc: iframeDoc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn\n });\n if (serializedIframeNode) {\n onIframeLoad(\n n2,\n serializedIframeNode\n );\n }\n }\n },\n iframeLoadTimeout\n );\n }\n if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"link\" && typeof serializedNode.attributes.rel === \"string\" && (serializedNode.attributes.rel === \"stylesheet\" || serializedNode.attributes.rel === \"preload\" && typeof serializedNode.attributes.href === \"string\" && extractFileExtension(serializedNode.attributes.href) === \"css\")) {\n onceStylesheetLoaded(\n n2,\n () => {\n if (onStylesheetLoad) {\n const serializedLinkNode = serializeNodeWithId(n2, {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn\n });\n if (serializedLinkNode) {\n onStylesheetLoad(\n n2,\n serializedLinkNode\n );\n }\n }\n },\n stylesheetLoadTimeout\n );\n }\n return serializedNode;\n}\nfunction snapshot(n2, options) {\n const {\n mirror: mirror2 = new Mirror(),\n blockClass = \"rr-block\",\n blockSelector = null,\n maskTextClass = \"rr-mask\",\n maskTextSelector = null,\n inlineStylesheet = true,\n inlineImages = false,\n recordCanvas = false,\n maskAllInputs = false,\n maskTextFn,\n maskInputFn,\n slimDOM = false,\n dataURLOptions,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn = () => false\n } = options || {};\n const maskInputOptions = maskAllInputs === true ? {\n color: true,\n date: true,\n \"datetime-local\": true,\n email: true,\n month: true,\n number: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true,\n textarea: true,\n select: true,\n password: true\n } : maskAllInputs === false ? {\n password: true\n } : maskAllInputs;\n const slimDOMOptions = slimDOM === true || slimDOM === \"all\" ? (\n // if true: set of sensible options that should not throw away any information\n {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaDescKeywords: slimDOM === \"all\",\n // destructive\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaAuthorship: true,\n headMetaVerification: true\n }\n ) : slimDOM === false ? {} : slimDOM;\n return serializeNodeWithId(n2, {\n doc: n2,\n mirror: mirror2,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn,\n newlyAddedElement: false\n });\n}\nfunction getDefaultExportFromCjs$1(x2) {\n return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, \"default\") ? x2[\"default\"] : x2;\n}\nfunction getAugmentedNamespace$1(n2) {\n if (n2.__esModule) return n2;\n var f2 = n2.default;\n if (typeof f2 == \"function\") {\n var a2 = function a22() {\n if (this instanceof a22) {\n return Reflect.construct(f2, arguments, this.constructor);\n }\n return f2.apply(this, arguments);\n };\n a2.prototype = f2.prototype;\n } else a2 = {};\n Object.defineProperty(a2, \"__esModule\", { value: true });\n Object.keys(n2).forEach(function(k) {\n var d = Object.getOwnPropertyDescriptor(n2, k);\n Object.defineProperty(a2, k, d.get ? d : {\n enumerable: true,\n get: function() {\n return n2[k];\n }\n });\n });\n return a2;\n}\nvar picocolors_browser$1 = { exports: {} };\nvar x$1 = String;\nvar create$1 = function() {\n return { isColorSupported: false, reset: x$1, bold: x$1, dim: x$1, italic: x$1, underline: x$1, inverse: x$1, hidden: x$1, strikethrough: x$1, black: x$1, red: x$1, green: x$1, yellow: x$1, blue: x$1, magenta: x$1, cyan: x$1, white: x$1, gray: x$1, bgBlack: x$1, bgRed: x$1, bgGreen: x$1, bgYellow: x$1, bgBlue: x$1, bgMagenta: x$1, bgCyan: x$1, bgWhite: x$1 };\n};\npicocolors_browser$1.exports = create$1();\npicocolors_browser$1.exports.createColors = create$1;\nvar picocolors_browserExports$1 = picocolors_browser$1.exports;\nconst __viteBrowserExternal$2 = {};\nconst __viteBrowserExternal$1$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: __viteBrowserExternal$2\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst require$$2$1 = /* @__PURE__ */ getAugmentedNamespace$1(__viteBrowserExternal$1$1);\nlet pico$1 = picocolors_browserExports$1;\nlet terminalHighlight$1$1 = require$$2$1;\nlet CssSyntaxError$3$1 = class CssSyntaxError extends Error {\n constructor(message, line, column, source, file, plugin22) {\n super(message);\n this.name = \"CssSyntaxError\";\n this.reason = message;\n if (file) {\n this.file = file;\n }\n if (source) {\n this.source = source;\n }\n if (plugin22) {\n this.plugin = plugin22;\n }\n if (typeof line !== \"undefined\" && typeof column !== \"undefined\") {\n if (typeof line === \"number\") {\n this.line = line;\n this.column = column;\n } else {\n this.line = line.line;\n this.column = line.column;\n this.endLine = column.line;\n this.endColumn = column.column;\n }\n }\n this.setMessage();\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, CssSyntaxError);\n }\n }\n setMessage() {\n this.message = this.plugin ? this.plugin + \": \" : \"\";\n this.message += this.file ? this.file : \"\";\n if (typeof this.line !== \"undefined\") {\n this.message += \":\" + this.line + \":\" + this.column;\n }\n this.message += \": \" + this.reason;\n }\n showSourceCode(color) {\n if (!this.source) return \"\";\n let css = this.source;\n if (color == null) color = pico$1.isColorSupported;\n if (terminalHighlight$1$1) {\n if (color) css = terminalHighlight$1$1(css);\n }\n let lines = css.split(/\\r?\\n/);\n let start = Math.max(this.line - 3, 0);\n let end = Math.min(this.line + 2, lines.length);\n let maxWidth = String(end).length;\n let mark, aside;\n if (color) {\n let { bold, gray, red } = pico$1.createColors(true);\n mark = (text) => bold(red(text));\n aside = (text) => gray(text);\n } else {\n mark = aside = (str) => str;\n }\n return lines.slice(start, end).map((line, index2) => {\n let number = start + 1 + index2;\n let gutter = \" \" + (\" \" + number).slice(-maxWidth) + \" | \";\n if (number === this.line) {\n let spacing = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, this.column - 1).replace(/[^\\t]/g, \" \");\n return mark(\">\") + aside(gutter) + line + \"\\n \" + spacing + mark(\"^\");\n }\n return \" \" + aside(gutter) + line;\n }).join(\"\\n\");\n }\n toString() {\n let code = this.showSourceCode();\n if (code) {\n code = \"\\n\\n\" + code + \"\\n\";\n }\n return this.name + \": \" + this.message + code;\n }\n};\nvar cssSyntaxError$1 = CssSyntaxError$3$1;\nCssSyntaxError$3$1.default = CssSyntaxError$3$1;\nvar symbols$1 = {};\nsymbols$1.isClean = Symbol(\"isClean\");\nsymbols$1.my = Symbol(\"my\");\nconst DEFAULT_RAW$1 = {\n after: \"\\n\",\n beforeClose: \"\\n\",\n beforeComment: \"\\n\",\n beforeDecl: \"\\n\",\n beforeOpen: \" \",\n beforeRule: \"\\n\",\n colon: \": \",\n commentLeft: \" \",\n commentRight: \" \",\n emptyBody: \"\",\n indent: \" \",\n semicolon: false\n};\nfunction capitalize$1(str) {\n return str[0].toUpperCase() + str.slice(1);\n}\nlet Stringifier$2$1 = class Stringifier {\n constructor(builder) {\n this.builder = builder;\n }\n atrule(node2, semicolon) {\n let name = \"@\" + node2.name;\n let params = node2.params ? this.rawValue(node2, \"params\") : \"\";\n if (typeof node2.raws.afterName !== \"undefined\") {\n name += node2.raws.afterName;\n } else if (params) {\n name += \" \";\n }\n if (node2.nodes) {\n this.block(node2, name + params);\n } else {\n let end = (node2.raws.between || \"\") + (semicolon ? \";\" : \"\");\n this.builder(name + params + end, node2);\n }\n }\n beforeAfter(node2, detect) {\n let value;\n if (node2.type === \"decl\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (node2.type === \"comment\") {\n value = this.raw(node2, null, \"beforeComment\");\n } else if (detect === \"before\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else {\n value = this.raw(node2, null, \"beforeClose\");\n }\n let buf = node2.parent;\n let depth = 0;\n while (buf && buf.type !== \"root\") {\n depth += 1;\n buf = buf.parent;\n }\n if (value.includes(\"\\n\")) {\n let indent = this.raw(node2, null, \"indent\");\n if (indent.length) {\n for (let step = 0; step < depth; step++) value += indent;\n }\n }\n return value;\n }\n block(node2, start) {\n let between = this.raw(node2, \"between\", \"beforeOpen\");\n this.builder(start + between + \"{\", node2, \"start\");\n let after;\n if (node2.nodes && node2.nodes.length) {\n this.body(node2);\n after = this.raw(node2, \"after\");\n } else {\n after = this.raw(node2, \"after\", \"emptyBody\");\n }\n if (after) this.builder(after);\n this.builder(\"}\", node2, \"end\");\n }\n body(node2) {\n let last = node2.nodes.length - 1;\n while (last > 0) {\n if (node2.nodes[last].type !== \"comment\") break;\n last -= 1;\n }\n let semicolon = this.raw(node2, \"semicolon\");\n for (let i2 = 0; i2 < node2.nodes.length; i2++) {\n let child = node2.nodes[i2];\n let before = this.raw(child, \"before\");\n if (before) this.builder(before);\n this.stringify(child, last !== i2 || semicolon);\n }\n }\n comment(node2) {\n let left = this.raw(node2, \"left\", \"commentLeft\");\n let right = this.raw(node2, \"right\", \"commentRight\");\n this.builder(\"/*\" + left + node2.text + right + \"*/\", node2);\n }\n decl(node2, semicolon) {\n let between = this.raw(node2, \"between\", \"colon\");\n let string = node2.prop + between + this.rawValue(node2, \"value\");\n if (node2.important) {\n string += node2.raws.important || \" !important\";\n }\n if (semicolon) string += \";\";\n this.builder(string, node2);\n }\n document(node2) {\n this.body(node2);\n }\n raw(node2, own, detect) {\n let value;\n if (!detect) detect = own;\n if (own) {\n value = node2.raws[own];\n if (typeof value !== \"undefined\") return value;\n }\n let parent = node2.parent;\n if (detect === \"before\") {\n if (!parent || parent.type === \"root\" && parent.first === node2) {\n return \"\";\n }\n if (parent && parent.type === \"document\") {\n return \"\";\n }\n }\n if (!parent) return DEFAULT_RAW$1[detect];\n let root2 = node2.root();\n if (!root2.rawCache) root2.rawCache = {};\n if (typeof root2.rawCache[detect] !== \"undefined\") {\n return root2.rawCache[detect];\n }\n if (detect === \"before\" || detect === \"after\") {\n return this.beforeAfter(node2, detect);\n } else {\n let method = \"raw\" + capitalize$1(detect);\n if (this[method]) {\n value = this[method](root2, node2);\n } else {\n root2.walk((i2) => {\n value = i2.raws[own];\n if (typeof value !== \"undefined\") return false;\n });\n }\n }\n if (typeof value === \"undefined\") value = DEFAULT_RAW$1[detect];\n root2.rawCache[detect] = value;\n return value;\n }\n rawBeforeClose(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length > 0) {\n if (typeof i2.raws.after !== \"undefined\") {\n value = i2.raws.after;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawBeforeComment(root2, node2) {\n let value;\n root2.walkComments((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeDecl(root2, node2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeOpen(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.type !== \"decl\") {\n value = i2.raws.between;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawBeforeRule(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && (i2.parent !== root2 || root2.first !== i2)) {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawColon(root2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.between !== \"undefined\") {\n value = i2.raws.between.replace(/[^\\s:]/g, \"\");\n return false;\n }\n });\n return value;\n }\n rawEmptyBody(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length === 0) {\n value = i2.raws.after;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawIndent(root2) {\n if (root2.raws.indent) return root2.raws.indent;\n let value;\n root2.walk((i2) => {\n let p = i2.parent;\n if (p && p !== root2 && p.parent && p.parent === root2) {\n if (typeof i2.raws.before !== \"undefined\") {\n let parts = i2.raws.before.split(\"\\n\");\n value = parts[parts.length - 1];\n value = value.replace(/\\S/g, \"\");\n return false;\n }\n }\n });\n return value;\n }\n rawSemicolon(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length && i2.last.type === \"decl\") {\n value = i2.raws.semicolon;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawValue(node2, prop) {\n let value = node2[prop];\n let raw = node2.raws[prop];\n if (raw && raw.value === value) {\n return raw.raw;\n }\n return value;\n }\n root(node2) {\n this.body(node2);\n if (node2.raws.after) this.builder(node2.raws.after);\n }\n rule(node2) {\n this.block(node2, this.rawValue(node2, \"selector\"));\n if (node2.raws.ownSemicolon) {\n this.builder(node2.raws.ownSemicolon, node2, \"end\");\n }\n }\n stringify(node2, semicolon) {\n if (!this[node2.type]) {\n throw new Error(\n \"Unknown AST node type \" + node2.type + \". Maybe you need to change PostCSS stringifier.\"\n );\n }\n this[node2.type](node2, semicolon);\n }\n};\nvar stringifier$1 = Stringifier$2$1;\nStringifier$2$1.default = Stringifier$2$1;\nlet Stringifier$1$1 = stringifier$1;\nfunction stringify$4$1(node2, builder) {\n let str = new Stringifier$1$1(builder);\n str.stringify(node2);\n}\nvar stringify_1$1 = stringify$4$1;\nstringify$4$1.default = stringify$4$1;\nlet { isClean: isClean$2$1, my: my$2$1 } = symbols$1;\nlet CssSyntaxError$2$1 = cssSyntaxError$1;\nlet Stringifier2$1 = stringifier$1;\nlet stringify$3$1 = stringify_1$1;\nfunction cloneNode$1(obj, parent) {\n let cloned = new obj.constructor();\n for (let i2 in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, i2)) {\n continue;\n }\n if (i2 === \"proxyCache\") continue;\n let value = obj[i2];\n let type = typeof value;\n if (i2 === \"parent\" && type === \"object\") {\n if (parent) cloned[i2] = parent;\n } else if (i2 === \"source\") {\n cloned[i2] = value;\n } else if (Array.isArray(value)) {\n cloned[i2] = value.map((j) => cloneNode$1(j, cloned));\n } else {\n if (type === \"object\" && value !== null) value = cloneNode$1(value);\n cloned[i2] = value;\n }\n }\n return cloned;\n}\nlet Node$4$1 = class Node2 {\n constructor(defaults = {}) {\n this.raws = {};\n this[isClean$2$1] = false;\n this[my$2$1] = true;\n for (let name in defaults) {\n if (name === \"nodes\") {\n this.nodes = [];\n for (let node2 of defaults[name]) {\n if (typeof node2.clone === \"function\") {\n this.append(node2.clone());\n } else {\n this.append(node2);\n }\n }\n } else {\n this[name] = defaults[name];\n }\n }\n }\n addToError(error) {\n error.postcssNode = this;\n if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n let s2 = this.source;\n error.stack = error.stack.replace(\n /\\n\\s{4}at /,\n `$&${s2.input.from}:${s2.start.line}:${s2.start.column}$&`\n );\n }\n return error;\n }\n after(add) {\n this.parent.insertAfter(this, add);\n return this;\n }\n assign(overrides = {}) {\n for (let name in overrides) {\n this[name] = overrides[name];\n }\n return this;\n }\n before(add) {\n this.parent.insertBefore(this, add);\n return this;\n }\n cleanRaws(keepBetween) {\n delete this.raws.before;\n delete this.raws.after;\n if (!keepBetween) delete this.raws.between;\n }\n clone(overrides = {}) {\n let cloned = cloneNode$1(this);\n for (let name in overrides) {\n cloned[name] = overrides[name];\n }\n return cloned;\n }\n cloneAfter(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertAfter(this, cloned);\n return cloned;\n }\n cloneBefore(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertBefore(this, cloned);\n return cloned;\n }\n error(message, opts = {}) {\n if (this.source) {\n let { end, start } = this.rangeBy(opts);\n return this.source.input.error(\n message,\n { column: start.column, line: start.line },\n { column: end.column, line: end.line },\n opts\n );\n }\n return new CssSyntaxError$2$1(message);\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"prop\" || prop === \"value\" || prop === \"name\" || prop === \"params\" || prop === \"important\" || /* c8 ignore next */\n prop === \"text\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n markDirty() {\n if (this[isClean$2$1]) {\n this[isClean$2$1] = false;\n let next = this;\n while (next = next.parent) {\n next[isClean$2$1] = false;\n }\n }\n }\n next() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 + 1];\n }\n positionBy(opts, stringRepresentation) {\n let pos = this.source.start;\n if (opts.index) {\n pos = this.positionInside(opts.index, stringRepresentation);\n } else if (opts.word) {\n stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) pos = this.positionInside(index2, stringRepresentation);\n }\n return pos;\n }\n positionInside(index2, stringRepresentation) {\n let string = stringRepresentation || this.toString();\n let column = this.source.start.column;\n let line = this.source.start.line;\n for (let i2 = 0; i2 < index2; i2++) {\n if (string[i2] === \"\\n\") {\n column = 1;\n line += 1;\n } else {\n column += 1;\n }\n }\n return { column, line };\n }\n prev() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 - 1];\n }\n rangeBy(opts) {\n let start = {\n column: this.source.start.column,\n line: this.source.start.line\n };\n let end = this.source.end ? {\n column: this.source.end.column + 1,\n line: this.source.end.line\n } : {\n column: start.column + 1,\n line: start.line\n };\n if (opts.word) {\n let stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) {\n start = this.positionInside(index2, stringRepresentation);\n end = this.positionInside(index2 + opts.word.length, stringRepresentation);\n }\n } else {\n if (opts.start) {\n start = {\n column: opts.start.column,\n line: opts.start.line\n };\n } else if (opts.index) {\n start = this.positionInside(opts.index);\n }\n if (opts.end) {\n end = {\n column: opts.end.column,\n line: opts.end.line\n };\n } else if (typeof opts.endIndex === \"number\") {\n end = this.positionInside(opts.endIndex);\n } else if (opts.index) {\n end = this.positionInside(opts.index + 1);\n }\n }\n if (end.line < start.line || end.line === start.line && end.column <= start.column) {\n end = { column: start.column + 1, line: start.line };\n }\n return { end, start };\n }\n raw(prop, defaultType) {\n let str = new Stringifier2$1();\n return str.raw(this, prop, defaultType);\n }\n remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n this.parent = void 0;\n return this;\n }\n replaceWith(...nodes) {\n if (this.parent) {\n let bookmark = this;\n let foundSelf = false;\n for (let node2 of nodes) {\n if (node2 === this) {\n foundSelf = true;\n } else if (foundSelf) {\n this.parent.insertAfter(bookmark, node2);\n bookmark = node2;\n } else {\n this.parent.insertBefore(bookmark, node2);\n }\n }\n if (!foundSelf) {\n this.remove();\n }\n }\n return this;\n }\n root() {\n let result2 = this;\n while (result2.parent && result2.parent.type !== \"document\") {\n result2 = result2.parent;\n }\n return result2;\n }\n toJSON(_, inputs) {\n let fixed = {};\n let emitInputs = inputs == null;\n inputs = inputs || /* @__PURE__ */ new Map();\n let inputsNextIndex = 0;\n for (let name in this) {\n if (!Object.prototype.hasOwnProperty.call(this, name)) {\n continue;\n }\n if (name === \"parent\" || name === \"proxyCache\") continue;\n let value = this[name];\n if (Array.isArray(value)) {\n fixed[name] = value.map((i2) => {\n if (typeof i2 === \"object\" && i2.toJSON) {\n return i2.toJSON(null, inputs);\n } else {\n return i2;\n }\n });\n } else if (typeof value === \"object\" && value.toJSON) {\n fixed[name] = value.toJSON(null, inputs);\n } else if (name === \"source\") {\n let inputId = inputs.get(value.input);\n if (inputId == null) {\n inputId = inputsNextIndex;\n inputs.set(value.input, inputsNextIndex);\n inputsNextIndex++;\n }\n fixed[name] = {\n end: value.end,\n inputId,\n start: value.start\n };\n } else {\n fixed[name] = value;\n }\n }\n if (emitInputs) {\n fixed.inputs = [...inputs.keys()].map((input2) => input2.toJSON());\n }\n return fixed;\n }\n toProxy() {\n if (!this.proxyCache) {\n this.proxyCache = new Proxy(this, this.getProxyProcessor());\n }\n return this.proxyCache;\n }\n toString(stringifier2 = stringify$3$1) {\n if (stringifier2.stringify) stringifier2 = stringifier2.stringify;\n let result2 = \"\";\n stringifier2(this, (i2) => {\n result2 += i2;\n });\n return result2;\n }\n warn(result2, text, opts) {\n let data = { node: this };\n for (let i2 in opts) data[i2] = opts[i2];\n return result2.warn(text, data);\n }\n get proxyOf() {\n return this;\n }\n};\nvar node$1 = Node$4$1;\nNode$4$1.default = Node$4$1;\nlet Node$3$1 = node$1;\nlet Declaration$4$1 = class Declaration extends Node$3$1 {\n constructor(defaults) {\n if (defaults && typeof defaults.value !== \"undefined\" && typeof defaults.value !== \"string\") {\n defaults = { ...defaults, value: String(defaults.value) };\n }\n super(defaults);\n this.type = \"decl\";\n }\n get variable() {\n return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n }\n};\nvar declaration$1 = Declaration$4$1;\nDeclaration$4$1.default = Declaration$4$1;\nlet urlAlphabet$1 = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\nlet customAlphabet$1 = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = \"\";\n let i2 = size;\n while (i2--) {\n id += alphabet[Math.random() * alphabet.length | 0];\n }\n return id;\n };\n};\nlet nanoid$1$1 = (size = 21) => {\n let id = \"\";\n let i2 = size;\n while (i2--) {\n id += urlAlphabet$1[Math.random() * 64 | 0];\n }\n return id;\n};\nvar nonSecure$1 = { nanoid: nanoid$1$1, customAlphabet: customAlphabet$1 };\nlet { SourceMapConsumer: SourceMapConsumer$2$1, SourceMapGenerator: SourceMapGenerator$2$1 } = require$$2$1;\nlet { existsSync: existsSync$1, readFileSync: readFileSync$1 } = require$$2$1;\nlet { dirname: dirname$1$1, join: join$1 } = require$$2$1;\nfunction fromBase64$1(str) {\n if (Buffer) {\n return Buffer.from(str, \"base64\").toString();\n } else {\n return window.atob(str);\n }\n}\nlet PreviousMap$2$1 = class PreviousMap {\n constructor(css, opts) {\n if (opts.map === false) return;\n this.loadAnnotation(css);\n this.inline = this.startWith(this.annotation, \"data:\");\n let prev = opts.map ? opts.map.prev : void 0;\n let text = this.loadMap(opts.from, prev);\n if (!this.mapFile && opts.from) {\n this.mapFile = opts.from;\n }\n if (this.mapFile) this.root = dirname$1$1(this.mapFile);\n if (text) this.text = text;\n }\n consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new SourceMapConsumer$2$1(this.text);\n }\n return this.consumerCache;\n }\n decodeInline(text) {\n let baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/;\n let baseUri = /^data:application\\/json;base64,/;\n let charsetUri = /^data:application\\/json;charset=utf-?8,/;\n let uri = /^data:application\\/json,/;\n if (charsetUri.test(text) || uri.test(text)) {\n return decodeURIComponent(text.substr(RegExp.lastMatch.length));\n }\n if (baseCharsetUri.test(text) || baseUri.test(text)) {\n return fromBase64$1(text.substr(RegExp.lastMatch.length));\n }\n let encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n throw new Error(\"Unsupported source map encoding \" + encoding);\n }\n getAnnotationURL(sourceMapString) {\n return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n }\n isMap(map) {\n if (typeof map !== \"object\") return false;\n return typeof map.mappings === \"string\" || typeof map._mappings === \"string\" || Array.isArray(map.sections);\n }\n loadAnnotation(css) {\n let comments = css.match(/\\/\\*\\s*# sourceMappingURL=/gm);\n if (!comments) return;\n let start = css.lastIndexOf(comments.pop());\n let end = css.indexOf(\"*/\", start);\n if (start > -1 && end > -1) {\n this.annotation = this.getAnnotationURL(css.substring(start, end));\n }\n }\n loadFile(path) {\n this.root = dirname$1$1(path);\n if (existsSync$1(path)) {\n this.mapFile = path;\n return readFileSync$1(path, \"utf-8\").toString().trim();\n }\n }\n loadMap(file, prev) {\n if (prev === false) return false;\n if (prev) {\n if (typeof prev === \"string\") {\n return prev;\n } else if (typeof prev === \"function\") {\n let prevPath = prev(file);\n if (prevPath) {\n let map = this.loadFile(prevPath);\n if (!map) {\n throw new Error(\n \"Unable to load previous source map: \" + prevPath.toString()\n );\n }\n return map;\n }\n } else if (prev instanceof SourceMapConsumer$2$1) {\n return SourceMapGenerator$2$1.fromSourceMap(prev).toString();\n } else if (prev instanceof SourceMapGenerator$2$1) {\n return prev.toString();\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev);\n } else {\n throw new Error(\n \"Unsupported previous source map format: \" + prev.toString()\n );\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation);\n } else if (this.annotation) {\n let map = this.annotation;\n if (file) map = join$1(dirname$1$1(file), map);\n return this.loadFile(map);\n }\n }\n startWith(string, start) {\n if (!string) return false;\n return string.substr(0, start.length) === start;\n }\n withContent() {\n return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n }\n};\nvar previousMap$1 = PreviousMap$2$1;\nPreviousMap$2$1.default = PreviousMap$2$1;\nlet { SourceMapConsumer: SourceMapConsumer$1$1, SourceMapGenerator: SourceMapGenerator$1$1 } = require$$2$1;\nlet { fileURLToPath: fileURLToPath$1, pathToFileURL: pathToFileURL$1$1 } = require$$2$1;\nlet { isAbsolute: isAbsolute$1, resolve: resolve$1$1 } = require$$2$1;\nlet { nanoid: nanoid$2 } = nonSecure$1;\nlet terminalHighlight$2 = require$$2$1;\nlet CssSyntaxError$1$1 = cssSyntaxError$1;\nlet PreviousMap$1$1 = previousMap$1;\nlet fromOffsetCache$1 = Symbol(\"fromOffsetCache\");\nlet sourceMapAvailable$1$1 = Boolean(SourceMapConsumer$1$1 && SourceMapGenerator$1$1);\nlet pathAvailable$1$1 = Boolean(resolve$1$1 && isAbsolute$1);\nlet Input$4$1 = class Input {\n constructor(css, opts = {}) {\n if (css === null || typeof css === \"undefined\" || typeof css === \"object\" && !css.toString) {\n throw new Error(`PostCSS received ${css} instead of CSS string`);\n }\n this.css = css.toString();\n if (this.css[0] === \"\\uFEFF\" || this.css[0] === \"￾\") {\n this.hasBOM = true;\n this.css = this.css.slice(1);\n } else {\n this.hasBOM = false;\n }\n if (opts.from) {\n if (!pathAvailable$1$1 || /^\\w+:\\/\\//.test(opts.from) || isAbsolute$1(opts.from)) {\n this.file = opts.from;\n } else {\n this.file = resolve$1$1(opts.from);\n }\n }\n if (pathAvailable$1$1 && sourceMapAvailable$1$1) {\n let map = new PreviousMap$1$1(this.css, opts);\n if (map.text) {\n this.map = map;\n let file = map.consumer().file;\n if (!this.file && file) this.file = this.mapResolve(file);\n }\n }\n if (!this.file) {\n this.id = \"\";\n }\n if (this.map) this.map.file = this.from;\n }\n error(message, line, column, opts = {}) {\n let result2, endLine, endColumn;\n if (line && typeof line === \"object\") {\n let start = line;\n let end = column;\n if (typeof start.offset === \"number\") {\n let pos = this.fromOffset(start.offset);\n line = pos.line;\n column = pos.col;\n } else {\n line = start.line;\n column = start.column;\n }\n if (typeof end.offset === \"number\") {\n let pos = this.fromOffset(end.offset);\n endLine = pos.line;\n endColumn = pos.col;\n } else {\n endLine = end.line;\n endColumn = end.column;\n }\n } else if (!column) {\n let pos = this.fromOffset(line);\n line = pos.line;\n column = pos.col;\n }\n let origin = this.origin(line, column, endLine, endColumn);\n if (origin) {\n result2 = new CssSyntaxError$1$1(\n message,\n origin.endLine === void 0 ? origin.line : { column: origin.column, line: origin.line },\n origin.endLine === void 0 ? origin.column : { column: origin.endColumn, line: origin.endLine },\n origin.source,\n origin.file,\n opts.plugin\n );\n } else {\n result2 = new CssSyntaxError$1$1(\n message,\n endLine === void 0 ? line : { column, line },\n endLine === void 0 ? column : { column: endColumn, line: endLine },\n this.css,\n this.file,\n opts.plugin\n );\n }\n result2.input = { column, endColumn, endLine, line, source: this.css };\n if (this.file) {\n if (pathToFileURL$1$1) {\n result2.input.url = pathToFileURL$1$1(this.file).toString();\n }\n result2.input.file = this.file;\n }\n return result2;\n }\n fromOffset(offset) {\n let lastLine, lineToIndex;\n if (!this[fromOffsetCache$1]) {\n let lines = this.css.split(\"\\n\");\n lineToIndex = new Array(lines.length);\n let prevIndex = 0;\n for (let i2 = 0, l2 = lines.length; i2 < l2; i2++) {\n lineToIndex[i2] = prevIndex;\n prevIndex += lines[i2].length + 1;\n }\n this[fromOffsetCache$1] = lineToIndex;\n } else {\n lineToIndex = this[fromOffsetCache$1];\n }\n lastLine = lineToIndex[lineToIndex.length - 1];\n let min = 0;\n if (offset >= lastLine) {\n min = lineToIndex.length - 1;\n } else {\n let max = lineToIndex.length - 2;\n let mid;\n while (min < max) {\n mid = min + (max - min >> 1);\n if (offset < lineToIndex[mid]) {\n max = mid - 1;\n } else if (offset >= lineToIndex[mid + 1]) {\n min = mid + 1;\n } else {\n min = mid;\n break;\n }\n }\n }\n return {\n col: offset - lineToIndex[min] + 1,\n line: min + 1\n };\n }\n mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file;\n }\n return resolve$1$1(this.map.consumer().sourceRoot || this.map.root || \".\", file);\n }\n origin(line, column, endLine, endColumn) {\n if (!this.map) return false;\n let consumer = this.map.consumer();\n let from = consumer.originalPositionFor({ column, line });\n if (!from.source) return false;\n let to;\n if (typeof endLine === \"number\") {\n to = consumer.originalPositionFor({ column: endColumn, line: endLine });\n }\n let fromUrl;\n if (isAbsolute$1(from.source)) {\n fromUrl = pathToFileURL$1$1(from.source);\n } else {\n fromUrl = new URL(\n from.source,\n this.map.consumer().sourceRoot || pathToFileURL$1$1(this.map.mapFile)\n );\n }\n let result2 = {\n column: from.column,\n endColumn: to && to.column,\n endLine: to && to.line,\n line: from.line,\n url: fromUrl.toString()\n };\n if (fromUrl.protocol === \"file:\") {\n if (fileURLToPath$1) {\n result2.file = fileURLToPath$1(fromUrl);\n } else {\n throw new Error(`file: protocol is not available in this PostCSS build`);\n }\n }\n let source = consumer.sourceContentFor(from.source);\n if (source) result2.source = source;\n return result2;\n }\n toJSON() {\n let json = {};\n for (let name of [\"hasBOM\", \"css\", \"file\", \"id\"]) {\n if (this[name] != null) {\n json[name] = this[name];\n }\n }\n if (this.map) {\n json.map = { ...this.map };\n if (json.map.consumerCache) {\n json.map.consumerCache = void 0;\n }\n }\n return json;\n }\n get from() {\n return this.file || this.id;\n }\n};\nvar input$1 = Input$4$1;\nInput$4$1.default = Input$4$1;\nif (terminalHighlight$2 && terminalHighlight$2.registerInput) {\n terminalHighlight$2.registerInput(Input$4$1);\n}\nlet { SourceMapConsumer: SourceMapConsumer$3, SourceMapGenerator: SourceMapGenerator$3 } = require$$2$1;\nlet { dirname: dirname$2, relative: relative$1, resolve: resolve$2, sep: sep$1 } = require$$2$1;\nlet { pathToFileURL: pathToFileURL$2 } = require$$2$1;\nlet Input$3$1 = input$1;\nlet sourceMapAvailable$2 = Boolean(SourceMapConsumer$3 && SourceMapGenerator$3);\nlet pathAvailable$2 = Boolean(dirname$2 && resolve$2 && relative$1 && sep$1);\nlet MapGenerator$2$1 = class MapGenerator {\n constructor(stringify2, root2, opts, cssString) {\n this.stringify = stringify2;\n this.mapOpts = opts.map || {};\n this.root = root2;\n this.opts = opts;\n this.css = cssString;\n this.originalCSS = cssString;\n this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute;\n this.memoizedFileURLs = /* @__PURE__ */ new Map();\n this.memoizedPaths = /* @__PURE__ */ new Map();\n this.memoizedURLs = /* @__PURE__ */ new Map();\n }\n addAnnotation() {\n let content;\n if (this.isInline()) {\n content = \"data:application/json;base64,\" + this.toBase64(this.map.toString());\n } else if (typeof this.mapOpts.annotation === \"string\") {\n content = this.mapOpts.annotation;\n } else if (typeof this.mapOpts.annotation === \"function\") {\n content = this.mapOpts.annotation(this.opts.to, this.root);\n } else {\n content = this.outputFile() + \".map\";\n }\n let eol = \"\\n\";\n if (this.css.includes(\"\\r\\n\")) eol = \"\\r\\n\";\n this.css += eol + \"/*# sourceMappingURL=\" + content + \" */\";\n }\n applyPrevMaps() {\n for (let prev of this.previous()) {\n let from = this.toUrl(this.path(prev.file));\n let root2 = prev.root || dirname$2(prev.file);\n let map;\n if (this.mapOpts.sourcesContent === false) {\n map = new SourceMapConsumer$3(prev.text);\n if (map.sourcesContent) {\n map.sourcesContent = null;\n }\n } else {\n map = prev.consumer();\n }\n this.map.applySourceMap(map, from, this.toUrl(this.path(root2)));\n }\n }\n clearAnnotation() {\n if (this.mapOpts.annotation === false) return;\n if (this.root) {\n let node2;\n for (let i2 = this.root.nodes.length - 1; i2 >= 0; i2--) {\n node2 = this.root.nodes[i2];\n if (node2.type !== \"comment\") continue;\n if (node2.text.indexOf(\"# sourceMappingURL=\") === 0) {\n this.root.removeChild(i2);\n }\n }\n } else if (this.css) {\n this.css = this.css.replace(/\\n*?\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\");\n }\n }\n generate() {\n this.clearAnnotation();\n if (pathAvailable$2 && sourceMapAvailable$2 && this.isMap()) {\n return this.generateMap();\n } else {\n let result2 = \"\";\n this.stringify(this.root, (i2) => {\n result2 += i2;\n });\n return [result2];\n }\n }\n generateMap() {\n if (this.root) {\n this.generateString();\n } else if (this.previous().length === 1) {\n let prev = this.previous()[0].consumer();\n prev.file = this.outputFile();\n this.map = SourceMapGenerator$3.fromSourceMap(prev, {\n ignoreInvalidMapping: true\n });\n } else {\n this.map = new SourceMapGenerator$3({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n this.map.addMapping({\n generated: { column: 0, line: 1 },\n original: { column: 0, line: 1 },\n source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\"\n });\n }\n if (this.isSourcesContent()) this.setSourcesContent();\n if (this.root && this.previous().length > 0) this.applyPrevMaps();\n if (this.isAnnotation()) this.addAnnotation();\n if (this.isInline()) {\n return [this.css];\n } else {\n return [this.css, this.map];\n }\n }\n generateString() {\n this.css = \"\";\n this.map = new SourceMapGenerator$3({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n let line = 1;\n let column = 1;\n let noSource = \"\";\n let mapping = {\n generated: { column: 0, line: 0 },\n original: { column: 0, line: 0 },\n source: \"\"\n };\n let lines, last;\n this.stringify(this.root, (str, node2, type) => {\n this.css += str;\n if (node2 && type !== \"end\") {\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n if (node2.source && node2.source.start) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.start.line;\n mapping.original.column = node2.source.start.column - 1;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n this.map.addMapping(mapping);\n }\n }\n lines = str.match(/\\n/g);\n if (lines) {\n line += lines.length;\n last = str.lastIndexOf(\"\\n\");\n column = str.length - last;\n } else {\n column += str.length;\n }\n if (node2 && type !== \"start\") {\n let p = node2.parent || { raws: {} };\n let childless = node2.type === \"decl\" || node2.type === \"atrule\" && !node2.nodes;\n if (!childless || node2 !== p.last || p.raws.semicolon) {\n if (node2.source && node2.source.end) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.end.line;\n mapping.original.column = node2.source.end.column - 1;\n mapping.generated.line = line;\n mapping.generated.column = column - 2;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n this.map.addMapping(mapping);\n }\n }\n }\n });\n }\n isAnnotation() {\n if (this.isInline()) {\n return true;\n }\n if (typeof this.mapOpts.annotation !== \"undefined\") {\n return this.mapOpts.annotation;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.annotation);\n }\n return true;\n }\n isInline() {\n if (typeof this.mapOpts.inline !== \"undefined\") {\n return this.mapOpts.inline;\n }\n let annotation = this.mapOpts.annotation;\n if (typeof annotation !== \"undefined\" && annotation !== true) {\n return false;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.inline);\n }\n return true;\n }\n isMap() {\n if (typeof this.opts.map !== \"undefined\") {\n return !!this.opts.map;\n }\n return this.previous().length > 0;\n }\n isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== \"undefined\") {\n return this.mapOpts.sourcesContent;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.withContent());\n }\n return true;\n }\n outputFile() {\n if (this.opts.to) {\n return this.path(this.opts.to);\n } else if (this.opts.from) {\n return this.path(this.opts.from);\n } else {\n return \"to.css\";\n }\n }\n path(file) {\n if (this.mapOpts.absolute) return file;\n if (file.charCodeAt(0) === 60) return file;\n if (/^\\w+:\\/\\//.test(file)) return file;\n let cached = this.memoizedPaths.get(file);\n if (cached) return cached;\n let from = this.opts.to ? dirname$2(this.opts.to) : \".\";\n if (typeof this.mapOpts.annotation === \"string\") {\n from = dirname$2(resolve$2(from, this.mapOpts.annotation));\n }\n let path = relative$1(from, file);\n this.memoizedPaths.set(file, path);\n return path;\n }\n previous() {\n if (!this.previousMaps) {\n this.previousMaps = [];\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source && node2.source.input.map) {\n let map = node2.source.input.map;\n if (!this.previousMaps.includes(map)) {\n this.previousMaps.push(map);\n }\n }\n });\n } else {\n let input2 = new Input$3$1(this.originalCSS, this.opts);\n if (input2.map) this.previousMaps.push(input2.map);\n }\n }\n return this.previousMaps;\n }\n setSourcesContent() {\n let already = {};\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source) {\n let from = node2.source.input.from;\n if (from && !already[from]) {\n already[from] = true;\n let fromUrl = this.usesFileUrls ? this.toFileUrl(from) : this.toUrl(this.path(from));\n this.map.setSourceContent(fromUrl, node2.source.input.css);\n }\n }\n });\n } else if (this.css) {\n let from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\";\n this.map.setSourceContent(from, this.css);\n }\n }\n sourcePath(node2) {\n if (this.mapOpts.from) {\n return this.toUrl(this.mapOpts.from);\n } else if (this.usesFileUrls) {\n return this.toFileUrl(node2.source.input.from);\n } else {\n return this.toUrl(this.path(node2.source.input.from));\n }\n }\n toBase64(str) {\n if (Buffer) {\n return Buffer.from(str).toString(\"base64\");\n } else {\n return window.btoa(unescape(encodeURIComponent(str)));\n }\n }\n toFileUrl(path) {\n let cached = this.memoizedFileURLs.get(path);\n if (cached) return cached;\n if (pathToFileURL$2) {\n let fileURL = pathToFileURL$2(path).toString();\n this.memoizedFileURLs.set(path, fileURL);\n return fileURL;\n } else {\n throw new Error(\n \"`map.absolute` option is not available in this PostCSS build\"\n );\n }\n }\n toUrl(path) {\n let cached = this.memoizedURLs.get(path);\n if (cached) return cached;\n if (sep$1 === \"\\\\\") {\n path = path.replace(/\\\\/g, \"/\");\n }\n let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent);\n this.memoizedURLs.set(path, url);\n return url;\n }\n};\nvar mapGenerator$1 = MapGenerator$2$1;\nlet Node$2$1 = node$1;\nlet Comment$4$1 = class Comment extends Node$2$1 {\n constructor(defaults) {\n super(defaults);\n this.type = \"comment\";\n }\n};\nvar comment$1 = Comment$4$1;\nComment$4$1.default = Comment$4$1;\nlet { isClean: isClean$1$1, my: my$1$1 } = symbols$1;\nlet Declaration$3$1 = declaration$1;\nlet Comment$3$1 = comment$1;\nlet Node$1$1 = node$1;\nlet parse$4$1, Rule$4$1, AtRule$4$1, Root$6$1;\nfunction cleanSource$1(nodes) {\n return nodes.map((i2) => {\n if (i2.nodes) i2.nodes = cleanSource$1(i2.nodes);\n delete i2.source;\n return i2;\n });\n}\nfunction markDirtyUp$1(node2) {\n node2[isClean$1$1] = false;\n if (node2.proxyOf.nodes) {\n for (let i2 of node2.proxyOf.nodes) {\n markDirtyUp$1(i2);\n }\n }\n}\nlet Container$7$1 = class Container extends Node$1$1 {\n append(...children) {\n for (let child of children) {\n let nodes = this.normalize(child, this.last);\n for (let node2 of nodes) this.proxyOf.nodes.push(node2);\n }\n this.markDirty();\n return this;\n }\n cleanRaws(keepBetween) {\n super.cleanRaws(keepBetween);\n if (this.nodes) {\n for (let node2 of this.nodes) node2.cleanRaws(keepBetween);\n }\n }\n each(callback) {\n if (!this.proxyOf.nodes) return void 0;\n let iterator = this.getIterator();\n let index2, result2;\n while (this.indexes[iterator] < this.proxyOf.nodes.length) {\n index2 = this.indexes[iterator];\n result2 = callback(this.proxyOf.nodes[index2], index2);\n if (result2 === false) break;\n this.indexes[iterator] += 1;\n }\n delete this.indexes[iterator];\n return result2;\n }\n every(condition) {\n return this.nodes.every(condition);\n }\n getIterator() {\n if (!this.lastEach) this.lastEach = 0;\n if (!this.indexes) this.indexes = {};\n this.lastEach += 1;\n let iterator = this.lastEach;\n this.indexes[iterator] = 0;\n return iterator;\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (!node2[prop]) {\n return node2[prop];\n } else if (prop === \"each\" || typeof prop === \"string\" && prop.startsWith(\"walk\")) {\n return (...args) => {\n return node2[prop](\n ...args.map((i2) => {\n if (typeof i2 === \"function\") {\n return (child, index2) => i2(child.toProxy(), index2);\n } else {\n return i2;\n }\n })\n );\n };\n } else if (prop === \"every\" || prop === \"some\") {\n return (cb) => {\n return node2[prop](\n (child, ...other) => cb(child.toProxy(), ...other)\n );\n };\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else if (prop === \"nodes\") {\n return node2.nodes.map((i2) => i2.toProxy());\n } else if (prop === \"first\" || prop === \"last\") {\n return node2[prop].toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"name\" || prop === \"params\" || prop === \"selector\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n index(child) {\n if (typeof child === \"number\") return child;\n if (child.proxyOf) child = child.proxyOf;\n return this.proxyOf.nodes.indexOf(child);\n }\n insertAfter(exist, add) {\n let existIndex = this.index(exist);\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex < index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n insertBefore(exist, add) {\n let existIndex = this.index(exist);\n let type = existIndex === 0 ? \"prepend\" : false;\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex <= index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n normalize(nodes, sample) {\n if (typeof nodes === \"string\") {\n nodes = cleanSource$1(parse$4$1(nodes).nodes);\n } else if (typeof nodes === \"undefined\") {\n nodes = [];\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type === \"root\" && this.type !== \"document\") {\n nodes = nodes.nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type) {\n nodes = [nodes];\n } else if (nodes.prop) {\n if (typeof nodes.value === \"undefined\") {\n throw new Error(\"Value field is missed in node creation\");\n } else if (typeof nodes.value !== \"string\") {\n nodes.value = String(nodes.value);\n }\n nodes = [new Declaration$3$1(nodes)];\n } else if (nodes.selector) {\n nodes = [new Rule$4$1(nodes)];\n } else if (nodes.name) {\n nodes = [new AtRule$4$1(nodes)];\n } else if (nodes.text) {\n nodes = [new Comment$3$1(nodes)];\n } else {\n throw new Error(\"Unknown node type in node creation\");\n }\n let processed = nodes.map((i2) => {\n if (!i2[my$1$1]) Container.rebuild(i2);\n i2 = i2.proxyOf;\n if (i2.parent) i2.parent.removeChild(i2);\n if (i2[isClean$1$1]) markDirtyUp$1(i2);\n if (typeof i2.raws.before === \"undefined\") {\n if (sample && typeof sample.raws.before !== \"undefined\") {\n i2.raws.before = sample.raws.before.replace(/\\S/g, \"\");\n }\n }\n i2.parent = this.proxyOf;\n return i2;\n });\n return processed;\n }\n prepend(...children) {\n children = children.reverse();\n for (let child of children) {\n let nodes = this.normalize(child, this.first, \"prepend\").reverse();\n for (let node2 of nodes) this.proxyOf.nodes.unshift(node2);\n for (let id in this.indexes) {\n this.indexes[id] = this.indexes[id] + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n push(child) {\n child.parent = this;\n this.proxyOf.nodes.push(child);\n return this;\n }\n removeAll() {\n for (let node2 of this.proxyOf.nodes) node2.parent = void 0;\n this.proxyOf.nodes = [];\n this.markDirty();\n return this;\n }\n removeChild(child) {\n child = this.index(child);\n this.proxyOf.nodes[child].parent = void 0;\n this.proxyOf.nodes.splice(child, 1);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (index2 >= child) {\n this.indexes[id] = index2 - 1;\n }\n }\n this.markDirty();\n return this;\n }\n replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {};\n }\n this.walkDecls((decl) => {\n if (opts.props && !opts.props.includes(decl.prop)) return;\n if (opts.fast && !decl.value.includes(opts.fast)) return;\n decl.value = decl.value.replace(pattern, callback);\n });\n this.markDirty();\n return this;\n }\n some(condition) {\n return this.nodes.some(condition);\n }\n walk(callback) {\n return this.each((child, i2) => {\n let result2;\n try {\n result2 = callback(child, i2);\n } catch (e2) {\n throw child.addToError(e2);\n }\n if (result2 !== false && child.walk) {\n result2 = child.walk(callback);\n }\n return result2;\n });\n }\n walkAtRules(name, callback) {\n if (!callback) {\n callback = name;\n return this.walk((child, i2) => {\n if (child.type === \"atrule\") {\n return callback(child, i2);\n }\n });\n }\n if (name instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && name.test(child.name)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && child.name === name) {\n return callback(child, i2);\n }\n });\n }\n walkComments(callback) {\n return this.walk((child, i2) => {\n if (child.type === \"comment\") {\n return callback(child, i2);\n }\n });\n }\n walkDecls(prop, callback) {\n if (!callback) {\n callback = prop;\n return this.walk((child, i2) => {\n if (child.type === \"decl\") {\n return callback(child, i2);\n }\n });\n }\n if (prop instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && prop.test(child.prop)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && child.prop === prop) {\n return callback(child, i2);\n }\n });\n }\n walkRules(selector, callback) {\n if (!callback) {\n callback = selector;\n return this.walk((child, i2) => {\n if (child.type === \"rule\") {\n return callback(child, i2);\n }\n });\n }\n if (selector instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && selector.test(child.selector)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && child.selector === selector) {\n return callback(child, i2);\n }\n });\n }\n get first() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[0];\n }\n get last() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n }\n};\nContainer$7$1.registerParse = (dependant) => {\n parse$4$1 = dependant;\n};\nContainer$7$1.registerRule = (dependant) => {\n Rule$4$1 = dependant;\n};\nContainer$7$1.registerAtRule = (dependant) => {\n AtRule$4$1 = dependant;\n};\nContainer$7$1.registerRoot = (dependant) => {\n Root$6$1 = dependant;\n};\nvar container$1 = Container$7$1;\nContainer$7$1.default = Container$7$1;\nContainer$7$1.rebuild = (node2) => {\n if (node2.type === \"atrule\") {\n Object.setPrototypeOf(node2, AtRule$4$1.prototype);\n } else if (node2.type === \"rule\") {\n Object.setPrototypeOf(node2, Rule$4$1.prototype);\n } else if (node2.type === \"decl\") {\n Object.setPrototypeOf(node2, Declaration$3$1.prototype);\n } else if (node2.type === \"comment\") {\n Object.setPrototypeOf(node2, Comment$3$1.prototype);\n } else if (node2.type === \"root\") {\n Object.setPrototypeOf(node2, Root$6$1.prototype);\n }\n node2[my$1$1] = true;\n if (node2.nodes) {\n node2.nodes.forEach((child) => {\n Container$7$1.rebuild(child);\n });\n }\n};\nlet Container$6$1 = container$1;\nlet LazyResult$4$1, Processor$3$1;\nlet Document$3$1 = class Document2 extends Container$6$1 {\n constructor(defaults) {\n super({ type: \"document\", ...defaults });\n if (!this.nodes) {\n this.nodes = [];\n }\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$4$1(new Processor$3$1(), this, opts);\n return lazy.stringify();\n }\n};\nDocument$3$1.registerLazyResult = (dependant) => {\n LazyResult$4$1 = dependant;\n};\nDocument$3$1.registerProcessor = (dependant) => {\n Processor$3$1 = dependant;\n};\nvar document$1$1 = Document$3$1;\nDocument$3$1.default = Document$3$1;\nlet printed$1 = {};\nvar warnOnce$2$1 = function warnOnce(message) {\n if (printed$1[message]) return;\n printed$1[message] = true;\n if (typeof console !== \"undefined\" && console.warn) {\n console.warn(message);\n }\n};\nlet Warning$2$1 = class Warning {\n constructor(text, opts = {}) {\n this.type = \"warning\";\n this.text = text;\n if (opts.node && opts.node.source) {\n let range = opts.node.rangeBy(opts);\n this.line = range.start.line;\n this.column = range.start.column;\n this.endLine = range.end.line;\n this.endColumn = range.end.column;\n }\n for (let opt in opts) this[opt] = opts[opt];\n }\n toString() {\n if (this.node) {\n return this.node.error(this.text, {\n index: this.index,\n plugin: this.plugin,\n word: this.word\n }).message;\n }\n if (this.plugin) {\n return this.plugin + \": \" + this.text;\n }\n return this.text;\n }\n};\nvar warning$1 = Warning$2$1;\nWarning$2$1.default = Warning$2$1;\nlet Warning$1$1 = warning$1;\nlet Result$3$1 = class Result {\n constructor(processor2, root2, opts) {\n this.processor = processor2;\n this.messages = [];\n this.root = root2;\n this.opts = opts;\n this.css = void 0;\n this.map = void 0;\n }\n toString() {\n return this.css;\n }\n warn(text, opts = {}) {\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin;\n }\n }\n let warning2 = new Warning$1$1(text, opts);\n this.messages.push(warning2);\n return warning2;\n }\n warnings() {\n return this.messages.filter((i2) => i2.type === \"warning\");\n }\n get content() {\n return this.css;\n }\n};\nvar result$1 = Result$3$1;\nResult$3$1.default = Result$3$1;\nconst SINGLE_QUOTE$1 = \"'\".charCodeAt(0);\nconst DOUBLE_QUOTE$1 = '\"'.charCodeAt(0);\nconst BACKSLASH$1 = \"\\\\\".charCodeAt(0);\nconst SLASH$1 = \"/\".charCodeAt(0);\nconst NEWLINE$1 = \"\\n\".charCodeAt(0);\nconst SPACE$1 = \" \".charCodeAt(0);\nconst FEED$1 = \"\\f\".charCodeAt(0);\nconst TAB$1 = \"\t\".charCodeAt(0);\nconst CR$1 = \"\\r\".charCodeAt(0);\nconst OPEN_SQUARE$1 = \"[\".charCodeAt(0);\nconst CLOSE_SQUARE$1 = \"]\".charCodeAt(0);\nconst OPEN_PARENTHESES$1 = \"(\".charCodeAt(0);\nconst CLOSE_PARENTHESES$1 = \")\".charCodeAt(0);\nconst OPEN_CURLY$1 = \"{\".charCodeAt(0);\nconst CLOSE_CURLY$1 = \"}\".charCodeAt(0);\nconst SEMICOLON$1 = \";\".charCodeAt(0);\nconst ASTERISK$1 = \"*\".charCodeAt(0);\nconst COLON$1 = \":\".charCodeAt(0);\nconst AT$1 = \"@\".charCodeAt(0);\nconst RE_AT_END$1 = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g;\nconst RE_WORD_END$1 = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g;\nconst RE_BAD_BRACKET$1 = /.[\\r\\n\"'(/\\\\]/;\nconst RE_HEX_ESCAPE$1 = /[\\da-f]/i;\nvar tokenize$1 = function tokenizer(input2, options = {}) {\n let css = input2.css.valueOf();\n let ignore = options.ignoreErrors;\n let code, next, quote, content, escape;\n let escaped, escapePos, prev, n2, currentToken;\n let length = css.length;\n let pos = 0;\n let buffer = [];\n let returned = [];\n function position() {\n return pos;\n }\n function unclosed(what) {\n throw input2.error(\"Unclosed \" + what, pos);\n }\n function endOfFile() {\n return returned.length === 0 && pos >= length;\n }\n function nextToken(opts) {\n if (returned.length) return returned.pop();\n if (pos >= length) return;\n let ignoreUnclosed = opts ? opts.ignoreUnclosed : false;\n code = css.charCodeAt(pos);\n switch (code) {\n case NEWLINE$1:\n case SPACE$1:\n case TAB$1:\n case CR$1:\n case FEED$1: {\n next = pos;\n do {\n next += 1;\n code = css.charCodeAt(next);\n } while (code === SPACE$1 || code === NEWLINE$1 || code === TAB$1 || code === CR$1 || code === FEED$1);\n currentToken = [\"space\", css.slice(pos, next)];\n pos = next - 1;\n break;\n }\n case OPEN_SQUARE$1:\n case CLOSE_SQUARE$1:\n case OPEN_CURLY$1:\n case CLOSE_CURLY$1:\n case COLON$1:\n case SEMICOLON$1:\n case CLOSE_PARENTHESES$1: {\n let controlChar = String.fromCharCode(code);\n currentToken = [controlChar, controlChar, pos];\n break;\n }\n case OPEN_PARENTHESES$1: {\n prev = buffer.length ? buffer.pop()[1] : \"\";\n n2 = css.charCodeAt(pos + 1);\n if (prev === \"url\" && n2 !== SINGLE_QUOTE$1 && n2 !== DOUBLE_QUOTE$1 && n2 !== SPACE$1 && n2 !== NEWLINE$1 && n2 !== TAB$1 && n2 !== FEED$1 && n2 !== CR$1) {\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(\")\", next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos;\n break;\n } else {\n unclosed(\"bracket\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH$1) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"brackets\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n next = css.indexOf(\")\", pos + 1);\n content = css.slice(pos, next + 1);\n if (next === -1 || RE_BAD_BRACKET$1.test(content)) {\n currentToken = [\"(\", \"(\", pos];\n } else {\n currentToken = [\"brackets\", content, pos, next];\n pos = next;\n }\n }\n break;\n }\n case SINGLE_QUOTE$1:\n case DOUBLE_QUOTE$1: {\n quote = code === SINGLE_QUOTE$1 ? \"'\" : '\"';\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(quote, next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos + 1;\n break;\n } else {\n unclosed(\"string\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH$1) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"string\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case AT$1: {\n RE_AT_END$1.lastIndex = pos + 1;\n RE_AT_END$1.test(css);\n if (RE_AT_END$1.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_AT_END$1.lastIndex - 2;\n }\n currentToken = [\"at-word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case BACKSLASH$1: {\n next = pos;\n escape = true;\n while (css.charCodeAt(next + 1) === BACKSLASH$1) {\n next += 1;\n escape = !escape;\n }\n code = css.charCodeAt(next + 1);\n if (escape && code !== SLASH$1 && code !== SPACE$1 && code !== NEWLINE$1 && code !== TAB$1 && code !== CR$1 && code !== FEED$1) {\n next += 1;\n if (RE_HEX_ESCAPE$1.test(css.charAt(next))) {\n while (RE_HEX_ESCAPE$1.test(css.charAt(next + 1))) {\n next += 1;\n }\n if (css.charCodeAt(next + 1) === SPACE$1) {\n next += 1;\n }\n }\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n default: {\n if (code === SLASH$1 && css.charCodeAt(pos + 1) === ASTERISK$1) {\n next = css.indexOf(\"*/\", pos + 2) + 1;\n if (next === 0) {\n if (ignore || ignoreUnclosed) {\n next = css.length;\n } else {\n unclosed(\"comment\");\n }\n }\n currentToken = [\"comment\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n RE_WORD_END$1.lastIndex = pos + 1;\n RE_WORD_END$1.test(css);\n if (RE_WORD_END$1.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_WORD_END$1.lastIndex - 2;\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n buffer.push(currentToken);\n pos = next;\n }\n break;\n }\n }\n pos++;\n return currentToken;\n }\n function back(token) {\n returned.push(token);\n }\n return {\n back,\n endOfFile,\n nextToken,\n position\n };\n};\nlet Container$5$1 = container$1;\nlet AtRule$3$1 = class AtRule extends Container$5$1 {\n constructor(defaults) {\n super(defaults);\n this.type = \"atrule\";\n }\n append(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.append(...children);\n }\n prepend(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.prepend(...children);\n }\n};\nvar atRule$1 = AtRule$3$1;\nAtRule$3$1.default = AtRule$3$1;\nContainer$5$1.registerAtRule(AtRule$3$1);\nlet Container$4$1 = container$1;\nlet LazyResult$3$1, Processor$2$1;\nlet Root$5$1 = class Root extends Container$4$1 {\n constructor(defaults) {\n super(defaults);\n this.type = \"root\";\n if (!this.nodes) this.nodes = [];\n }\n normalize(child, sample, type) {\n let nodes = super.normalize(child);\n if (sample) {\n if (type === \"prepend\") {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before;\n } else {\n delete sample.raws.before;\n }\n } else if (this.first !== sample) {\n for (let node2 of nodes) {\n node2.raws.before = sample.raws.before;\n }\n }\n }\n return nodes;\n }\n removeChild(child, ignore) {\n let index2 = this.index(child);\n if (!ignore && index2 === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index2].raws.before;\n }\n return super.removeChild(child);\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$3$1(new Processor$2$1(), this, opts);\n return lazy.stringify();\n }\n};\nRoot$5$1.registerLazyResult = (dependant) => {\n LazyResult$3$1 = dependant;\n};\nRoot$5$1.registerProcessor = (dependant) => {\n Processor$2$1 = dependant;\n};\nvar root$1 = Root$5$1;\nRoot$5$1.default = Root$5$1;\nContainer$4$1.registerRoot(Root$5$1);\nlet list$2$1 = {\n comma(string) {\n return list$2$1.split(string, [\",\"], true);\n },\n space(string) {\n let spaces = [\" \", \"\\n\", \"\t\"];\n return list$2$1.split(string, spaces);\n },\n split(string, separators, last) {\n let array = [];\n let current = \"\";\n let split = false;\n let func = 0;\n let inQuote = false;\n let prevQuote = \"\";\n let escape = false;\n for (let letter of string) {\n if (escape) {\n escape = false;\n } else if (letter === \"\\\\\") {\n escape = true;\n } else if (inQuote) {\n if (letter === prevQuote) {\n inQuote = false;\n }\n } else if (letter === '\"' || letter === \"'\") {\n inQuote = true;\n prevQuote = letter;\n } else if (letter === \"(\") {\n func += 1;\n } else if (letter === \")\") {\n if (func > 0) func -= 1;\n } else if (func === 0) {\n if (separators.includes(letter)) split = true;\n }\n if (split) {\n if (current !== \"\") array.push(current.trim());\n current = \"\";\n split = false;\n } else {\n current += letter;\n }\n }\n if (last || current !== \"\") array.push(current.trim());\n return array;\n }\n};\nvar list_1$1 = list$2$1;\nlist$2$1.default = list$2$1;\nlet Container$3$1 = container$1;\nlet list$1$1 = list_1$1;\nlet Rule$3$1 = class Rule extends Container$3$1 {\n constructor(defaults) {\n super(defaults);\n this.type = \"rule\";\n if (!this.nodes) this.nodes = [];\n }\n get selectors() {\n return list$1$1.comma(this.selector);\n }\n set selectors(values) {\n let match = this.selector ? this.selector.match(/,\\s*/) : null;\n let sep2 = match ? match[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n this.selector = values.join(sep2);\n }\n};\nvar rule$1 = Rule$3$1;\nRule$3$1.default = Rule$3$1;\nContainer$3$1.registerRule(Rule$3$1);\nlet Declaration$2$1 = declaration$1;\nlet tokenizer2$1 = tokenize$1;\nlet Comment$2$1 = comment$1;\nlet AtRule$2$1 = atRule$1;\nlet Root$4$1 = root$1;\nlet Rule$2$1 = rule$1;\nconst SAFE_COMMENT_NEIGHBOR$1 = {\n empty: true,\n space: true\n};\nfunction findLastWithPosition$1(tokens) {\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n let token = tokens[i2];\n let pos = token[3] || token[2];\n if (pos) return pos;\n }\n}\nlet Parser$1$1 = class Parser {\n constructor(input2) {\n this.input = input2;\n this.root = new Root$4$1();\n this.current = this.root;\n this.spaces = \"\";\n this.semicolon = false;\n this.createTokenizer();\n this.root.source = { input: input2, start: { column: 1, line: 1, offset: 0 } };\n }\n atrule(token) {\n let node2 = new AtRule$2$1();\n node2.name = token[1].slice(1);\n if (node2.name === \"\") {\n this.unnamedAtrule(node2, token);\n }\n this.init(node2, token[2]);\n let type;\n let prev;\n let shift;\n let last = false;\n let open = false;\n let params = [];\n let brackets = [];\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n type = token[0];\n if (type === \"(\" || type === \"[\") {\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (type === \"{\" && brackets.length > 0) {\n brackets.push(\"}\");\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n }\n if (brackets.length === 0) {\n if (type === \";\") {\n node2.source.end = this.getPosition(token[2]);\n node2.source.end.offset++;\n this.semicolon = true;\n break;\n } else if (type === \"{\") {\n open = true;\n break;\n } else if (type === \"}\") {\n if (params.length > 0) {\n shift = params.length - 1;\n prev = params[shift];\n while (prev && prev[0] === \"space\") {\n prev = params[--shift];\n }\n if (prev) {\n node2.source.end = this.getPosition(prev[3] || prev[2]);\n node2.source.end.offset++;\n }\n }\n this.end(token);\n break;\n } else {\n params.push(token);\n }\n } else {\n params.push(token);\n }\n if (this.tokenizer.endOfFile()) {\n last = true;\n break;\n }\n }\n node2.raws.between = this.spacesAndCommentsFromEnd(params);\n if (params.length) {\n node2.raws.afterName = this.spacesAndCommentsFromStart(params);\n this.raw(node2, \"params\", params);\n if (last) {\n token = params[params.length - 1];\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n this.spaces = node2.raws.between;\n node2.raws.between = \"\";\n }\n } else {\n node2.raws.afterName = \"\";\n node2.params = \"\";\n }\n if (open) {\n node2.nodes = [];\n this.current = node2;\n }\n }\n checkMissedSemicolon(tokens) {\n let colon = this.colon(tokens);\n if (colon === false) return;\n let founded = 0;\n let token;\n for (let j = colon - 1; j >= 0; j--) {\n token = tokens[j];\n if (token[0] !== \"space\") {\n founded += 1;\n if (founded === 2) break;\n }\n }\n throw this.input.error(\n \"Missed semicolon\",\n token[0] === \"word\" ? token[3] + 1 : token[2]\n );\n }\n colon(tokens) {\n let brackets = 0;\n let token, type, prev;\n for (let [i2, element] of tokens.entries()) {\n token = element;\n type = token[0];\n if (type === \"(\") {\n brackets += 1;\n }\n if (type === \")\") {\n brackets -= 1;\n }\n if (brackets === 0 && type === \":\") {\n if (!prev) {\n this.doubleColon(token);\n } else if (prev[0] === \"word\" && prev[1] === \"progid\") {\n continue;\n } else {\n return i2;\n }\n }\n prev = token;\n }\n return false;\n }\n comment(token) {\n let node2 = new Comment$2$1();\n this.init(node2, token[2]);\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n let text = token[1].slice(2, -2);\n if (/^\\s*$/.test(text)) {\n node2.text = \"\";\n node2.raws.left = text;\n node2.raws.right = \"\";\n } else {\n let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n node2.text = match[2];\n node2.raws.left = match[1];\n node2.raws.right = match[3];\n }\n }\n createTokenizer() {\n this.tokenizer = tokenizer2$1(this.input);\n }\n decl(tokens, customProperty) {\n let node2 = new Declaration$2$1();\n this.init(node2, tokens[0][2]);\n let last = tokens[tokens.length - 1];\n if (last[0] === \";\") {\n this.semicolon = true;\n tokens.pop();\n }\n node2.source.end = this.getPosition(\n last[3] || last[2] || findLastWithPosition$1(tokens)\n );\n node2.source.end.offset++;\n while (tokens[0][0] !== \"word\") {\n if (tokens.length === 1) this.unknownWord(tokens);\n node2.raws.before += tokens.shift()[1];\n }\n node2.source.start = this.getPosition(tokens[0][2]);\n node2.prop = \"\";\n while (tokens.length) {\n let type = tokens[0][0];\n if (type === \":\" || type === \"space\" || type === \"comment\") {\n break;\n }\n node2.prop += tokens.shift()[1];\n }\n node2.raws.between = \"\";\n let token;\n while (tokens.length) {\n token = tokens.shift();\n if (token[0] === \":\") {\n node2.raws.between += token[1];\n break;\n } else {\n if (token[0] === \"word\" && /\\w/.test(token[1])) {\n this.unknownWord([token]);\n }\n node2.raws.between += token[1];\n }\n }\n if (node2.prop[0] === \"_\" || node2.prop[0] === \"*\") {\n node2.raws.before += node2.prop[0];\n node2.prop = node2.prop.slice(1);\n }\n let firstSpaces = [];\n let next;\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n firstSpaces.push(tokens.shift());\n }\n this.precheckMissedSemicolon(tokens);\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n token = tokens[i2];\n if (token[1].toLowerCase() === \"!important\") {\n node2.important = true;\n let string = this.stringFrom(tokens, i2);\n string = this.spacesFromEnd(tokens) + string;\n if (string !== \" !important\") node2.raws.important = string;\n break;\n } else if (token[1].toLowerCase() === \"important\") {\n let cache = tokens.slice(0);\n let str = \"\";\n for (let j = i2; j > 0; j--) {\n let type = cache[j][0];\n if (str.trim().indexOf(\"!\") === 0 && type !== \"space\") {\n break;\n }\n str = cache.pop()[1] + str;\n }\n if (str.trim().indexOf(\"!\") === 0) {\n node2.important = true;\n node2.raws.important = str;\n tokens = cache;\n }\n }\n if (token[0] !== \"space\" && token[0] !== \"comment\") {\n break;\n }\n }\n let hasWord = tokens.some((i2) => i2[0] !== \"space\" && i2[0] !== \"comment\");\n if (hasWord) {\n node2.raws.between += firstSpaces.map((i2) => i2[1]).join(\"\");\n firstSpaces = [];\n }\n this.raw(node2, \"value\", firstSpaces.concat(tokens), customProperty);\n if (node2.value.includes(\":\") && !customProperty) {\n this.checkMissedSemicolon(tokens);\n }\n }\n doubleColon(token) {\n throw this.input.error(\n \"Double colon\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n emptyRule(token) {\n let node2 = new Rule$2$1();\n this.init(node2, token[2]);\n node2.selector = \"\";\n node2.raws.between = \"\";\n this.current = node2;\n }\n end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.semicolon = false;\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.spaces = \"\";\n if (this.current.parent) {\n this.current.source.end = this.getPosition(token[2]);\n this.current.source.end.offset++;\n this.current = this.current.parent;\n } else {\n this.unexpectedClose(token);\n }\n }\n endFile() {\n if (this.current.parent) this.unclosedBlock();\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.root.source.end = this.getPosition(this.tokenizer.position());\n }\n freeSemicolon(token) {\n this.spaces += token[1];\n if (this.current.nodes) {\n let prev = this.current.nodes[this.current.nodes.length - 1];\n if (prev && prev.type === \"rule\" && !prev.raws.ownSemicolon) {\n prev.raws.ownSemicolon = this.spaces;\n this.spaces = \"\";\n }\n }\n }\n // Helpers\n getPosition(offset) {\n let pos = this.input.fromOffset(offset);\n return {\n column: pos.col,\n line: pos.line,\n offset\n };\n }\n init(node2, offset) {\n this.current.push(node2);\n node2.source = {\n input: this.input,\n start: this.getPosition(offset)\n };\n node2.raws.before = this.spaces;\n this.spaces = \"\";\n if (node2.type !== \"comment\") this.semicolon = false;\n }\n other(start) {\n let end = false;\n let type = null;\n let colon = false;\n let bracket = null;\n let brackets = [];\n let customProperty = start[1].startsWith(\"--\");\n let tokens = [];\n let token = start;\n while (token) {\n type = token[0];\n tokens.push(token);\n if (type === \"(\" || type === \"[\") {\n if (!bracket) bracket = token;\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (customProperty && colon && type === \"{\") {\n if (!bracket) bracket = token;\n brackets.push(\"}\");\n } else if (brackets.length === 0) {\n if (type === \";\") {\n if (colon) {\n this.decl(tokens, customProperty);\n return;\n } else {\n break;\n }\n } else if (type === \"{\") {\n this.rule(tokens);\n return;\n } else if (type === \"}\") {\n this.tokenizer.back(tokens.pop());\n end = true;\n break;\n } else if (type === \":\") {\n colon = true;\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n if (brackets.length === 0) bracket = null;\n }\n token = this.tokenizer.nextToken();\n }\n if (this.tokenizer.endOfFile()) end = true;\n if (brackets.length > 0) this.unclosedBracket(bracket);\n if (end && colon) {\n if (!customProperty) {\n while (tokens.length) {\n token = tokens[tokens.length - 1][0];\n if (token !== \"space\" && token !== \"comment\") break;\n this.tokenizer.back(tokens.pop());\n }\n }\n this.decl(tokens, customProperty);\n } else {\n this.unknownWord(tokens);\n }\n }\n parse() {\n let token;\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n switch (token[0]) {\n case \"space\":\n this.spaces += token[1];\n break;\n case \";\":\n this.freeSemicolon(token);\n break;\n case \"}\":\n this.end(token);\n break;\n case \"comment\":\n this.comment(token);\n break;\n case \"at-word\":\n this.atrule(token);\n break;\n case \"{\":\n this.emptyRule(token);\n break;\n default:\n this.other(token);\n break;\n }\n }\n this.endFile();\n }\n precheckMissedSemicolon() {\n }\n raw(node2, prop, tokens, customProperty) {\n let token, type;\n let length = tokens.length;\n let value = \"\";\n let clean = true;\n let next, prev;\n for (let i2 = 0; i2 < length; i2 += 1) {\n token = tokens[i2];\n type = token[0];\n if (type === \"space\" && i2 === length - 1 && !customProperty) {\n clean = false;\n } else if (type === \"comment\") {\n prev = tokens[i2 - 1] ? tokens[i2 - 1][0] : \"empty\";\n next = tokens[i2 + 1] ? tokens[i2 + 1][0] : \"empty\";\n if (!SAFE_COMMENT_NEIGHBOR$1[prev] && !SAFE_COMMENT_NEIGHBOR$1[next]) {\n if (value.slice(-1) === \",\") {\n clean = false;\n } else {\n value += token[1];\n }\n } else {\n clean = false;\n }\n } else {\n value += token[1];\n }\n }\n if (!clean) {\n let raw = tokens.reduce((all, i2) => all + i2[1], \"\");\n node2.raws[prop] = { raw, value };\n }\n node2[prop] = value;\n }\n rule(tokens) {\n tokens.pop();\n let node2 = new Rule$2$1();\n this.init(node2, tokens[0][2]);\n node2.raws.between = this.spacesAndCommentsFromEnd(tokens);\n this.raw(node2, \"selector\", tokens);\n this.current = node2;\n }\n spacesAndCommentsFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\" && lastTokenType !== \"comment\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n // Errors\n spacesAndCommentsFromStart(tokens) {\n let next;\n let spaces = \"\";\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n spaces += tokens.shift()[1];\n }\n return spaces;\n }\n spacesFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n stringFrom(tokens, from) {\n let result2 = \"\";\n for (let i2 = from; i2 < tokens.length; i2++) {\n result2 += tokens[i2][1];\n }\n tokens.splice(from, tokens.length - from);\n return result2;\n }\n unclosedBlock() {\n let pos = this.current.source.start;\n throw this.input.error(\"Unclosed block\", pos.line, pos.column);\n }\n unclosedBracket(bracket) {\n throw this.input.error(\n \"Unclosed bracket\",\n { offset: bracket[2] },\n { offset: bracket[2] + 1 }\n );\n }\n unexpectedClose(token) {\n throw this.input.error(\n \"Unexpected }\",\n { offset: token[2] },\n { offset: token[2] + 1 }\n );\n }\n unknownWord(tokens) {\n throw this.input.error(\n \"Unknown word\",\n { offset: tokens[0][2] },\n { offset: tokens[0][2] + tokens[0][1].length }\n );\n }\n unnamedAtrule(node2, token) {\n throw this.input.error(\n \"At-rule without name\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n};\nvar parser$1 = Parser$1$1;\nlet Container$2$1 = container$1;\nlet Parser2$1 = parser$1;\nlet Input$2$1 = input$1;\nfunction parse$3$1(css, opts) {\n let input2 = new Input$2$1(css, opts);\n let parser2 = new Parser2$1(input2);\n try {\n parser2.parse();\n } catch (e2) {\n if (process.env.NODE_ENV !== \"production\") {\n if (e2.name === \"CssSyntaxError\" && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser\";\n } else if (/\\.sass/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser\";\n } else if (/\\.less$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser\";\n }\n }\n }\n throw e2;\n }\n return parser2.root;\n}\nvar parse_1$1 = parse$3$1;\nparse$3$1.default = parse$3$1;\nContainer$2$1.registerParse(parse$3$1);\nlet { isClean: isClean$3, my: my$3 } = symbols$1;\nlet MapGenerator$1$1 = mapGenerator$1;\nlet stringify$2$1 = stringify_1$1;\nlet Container$1$1 = container$1;\nlet Document$2$1 = document$1$1;\nlet warnOnce$1$1 = warnOnce$2$1;\nlet Result$2$1 = result$1;\nlet parse$2$1 = parse_1$1;\nlet Root$3$1 = root$1;\nconst TYPE_TO_CLASS_NAME$1 = {\n atrule: \"AtRule\",\n comment: \"Comment\",\n decl: \"Declaration\",\n document: \"Document\",\n root: \"Root\",\n rule: \"Rule\"\n};\nconst PLUGIN_PROPS$1 = {\n AtRule: true,\n AtRuleExit: true,\n Comment: true,\n CommentExit: true,\n Declaration: true,\n DeclarationExit: true,\n Document: true,\n DocumentExit: true,\n Once: true,\n OnceExit: true,\n postcssPlugin: true,\n prepare: true,\n Root: true,\n RootExit: true,\n Rule: true,\n RuleExit: true\n};\nconst NOT_VISITORS$1 = {\n Once: true,\n postcssPlugin: true,\n prepare: true\n};\nconst CHILDREN$1 = 0;\nfunction isPromise$1(obj) {\n return typeof obj === \"object\" && typeof obj.then === \"function\";\n}\nfunction getEvents$1(node2) {\n let key = false;\n let type = TYPE_TO_CLASS_NAME$1[node2.type];\n if (node2.type === \"decl\") {\n key = node2.prop.toLowerCase();\n } else if (node2.type === \"atrule\") {\n key = node2.name.toLowerCase();\n }\n if (key && node2.append) {\n return [\n type,\n type + \"-\" + key,\n CHILDREN$1,\n type + \"Exit\",\n type + \"Exit-\" + key\n ];\n } else if (key) {\n return [type, type + \"-\" + key, type + \"Exit\", type + \"Exit-\" + key];\n } else if (node2.append) {\n return [type, CHILDREN$1, type + \"Exit\"];\n } else {\n return [type, type + \"Exit\"];\n }\n}\nfunction toStack$1(node2) {\n let events;\n if (node2.type === \"document\") {\n events = [\"Document\", CHILDREN$1, \"DocumentExit\"];\n } else if (node2.type === \"root\") {\n events = [\"Root\", CHILDREN$1, \"RootExit\"];\n } else {\n events = getEvents$1(node2);\n }\n return {\n eventIndex: 0,\n events,\n iterator: 0,\n node: node2,\n visitorIndex: 0,\n visitors: []\n };\n}\nfunction cleanMarks$1(node2) {\n node2[isClean$3] = false;\n if (node2.nodes) node2.nodes.forEach((i2) => cleanMarks$1(i2));\n return node2;\n}\nlet postcss$2$1 = {};\nlet LazyResult$2$1 = class LazyResult {\n constructor(processor2, css, opts) {\n this.stringified = false;\n this.processed = false;\n let root2;\n if (typeof css === \"object\" && css !== null && (css.type === \"root\" || css.type === \"document\")) {\n root2 = cleanMarks$1(css);\n } else if (css instanceof LazyResult || css instanceof Result$2$1) {\n root2 = cleanMarks$1(css.root);\n if (css.map) {\n if (typeof opts.map === \"undefined\") opts.map = {};\n if (!opts.map.inline) opts.map.inline = false;\n opts.map.prev = css.map;\n }\n } else {\n let parser2 = parse$2$1;\n if (opts.syntax) parser2 = opts.syntax.parse;\n if (opts.parser) parser2 = opts.parser;\n if (parser2.parse) parser2 = parser2.parse;\n try {\n root2 = parser2(css, opts);\n } catch (error) {\n this.processed = true;\n this.error = error;\n }\n if (root2 && !root2[my$3]) {\n Container$1$1.rebuild(root2);\n }\n }\n this.result = new Result$2$1(processor2, root2, opts);\n this.helpers = { ...postcss$2$1, postcss: postcss$2$1, result: this.result };\n this.plugins = this.processor.plugins.map((plugin22) => {\n if (typeof plugin22 === \"object\" && plugin22.prepare) {\n return { ...plugin22, ...plugin22.prepare(this.result) };\n } else {\n return plugin22;\n }\n });\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n if (this.processed) return Promise.resolve(this.result);\n if (!this.processing) {\n this.processing = this.runAsync();\n }\n return this.processing;\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n getAsyncError() {\n throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n }\n handleError(error, node2) {\n let plugin22 = this.result.lastPlugin;\n try {\n if (node2) node2.addToError(error);\n this.error = error;\n if (error.name === \"CssSyntaxError\" && !error.plugin) {\n error.plugin = plugin22.postcssPlugin;\n error.setMessage();\n } else if (plugin22.postcssVersion) {\n if (process.env.NODE_ENV !== \"production\") {\n let pluginName = plugin22.postcssPlugin;\n let pluginVer = plugin22.postcssVersion;\n let runtimeVer = this.result.processor.version;\n let a2 = pluginVer.split(\".\");\n let b = runtimeVer.split(\".\");\n if (a2[0] !== b[0] || parseInt(a2[1]) > parseInt(b[1])) {\n console.error(\n \"Unknown error from PostCSS plugin. Your current PostCSS version is \" + runtimeVer + \", but \" + pluginName + \" uses \" + pluginVer + \". Perhaps this is the source of the error below.\"\n );\n }\n }\n }\n } catch (err) {\n if (console && console.error) console.error(err);\n }\n return error;\n }\n prepareVisitors() {\n this.listeners = {};\n let add = (plugin22, type, cb) => {\n if (!this.listeners[type]) this.listeners[type] = [];\n this.listeners[type].push([plugin22, cb]);\n };\n for (let plugin22 of this.plugins) {\n if (typeof plugin22 === \"object\") {\n for (let event in plugin22) {\n if (!PLUGIN_PROPS$1[event] && /^[A-Z]/.test(event)) {\n throw new Error(\n `Unknown event ${event} in ${plugin22.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`\n );\n }\n if (!NOT_VISITORS$1[event]) {\n if (typeof plugin22[event] === \"object\") {\n for (let filter in plugin22[event]) {\n if (filter === \"*\") {\n add(plugin22, event, plugin22[event][filter]);\n } else {\n add(\n plugin22,\n event + \"-\" + filter.toLowerCase(),\n plugin22[event][filter]\n );\n }\n }\n } else if (typeof plugin22[event] === \"function\") {\n add(plugin22, event, plugin22[event]);\n }\n }\n }\n }\n }\n this.hasListener = Object.keys(this.listeners).length > 0;\n }\n async runAsync() {\n this.plugin = 0;\n for (let i2 = 0; i2 < this.plugins.length; i2++) {\n let plugin22 = this.plugins[i2];\n let promise = this.runOnRoot(plugin22);\n if (isPromise$1(promise)) {\n try {\n await promise;\n } catch (error) {\n throw this.handleError(error);\n }\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean$3]) {\n root2[isClean$3] = true;\n let stack = [toStack$1(root2)];\n while (stack.length > 0) {\n let promise = this.visitTick(stack);\n if (isPromise$1(promise)) {\n try {\n await promise;\n } catch (e2) {\n let node2 = stack[stack.length - 1].node;\n throw this.handleError(e2, node2);\n }\n }\n }\n }\n if (this.listeners.OnceExit) {\n for (let [plugin22, visitor] of this.listeners.OnceExit) {\n this.result.lastPlugin = plugin22;\n try {\n if (root2.type === \"document\") {\n let roots = root2.nodes.map(\n (subRoot) => visitor(subRoot, this.helpers)\n );\n await Promise.all(roots);\n } else {\n await visitor(root2, this.helpers);\n }\n } catch (e2) {\n throw this.handleError(e2);\n }\n }\n }\n }\n this.processed = true;\n return this.stringify();\n }\n runOnRoot(plugin22) {\n this.result.lastPlugin = plugin22;\n try {\n if (typeof plugin22 === \"object\" && plugin22.Once) {\n if (this.result.root.type === \"document\") {\n let roots = this.result.root.nodes.map(\n (root2) => plugin22.Once(root2, this.helpers)\n );\n if (isPromise$1(roots[0])) {\n return Promise.all(roots);\n }\n return roots;\n }\n return plugin22.Once(this.result.root, this.helpers);\n } else if (typeof plugin22 === \"function\") {\n return plugin22(this.result.root, this.result);\n }\n } catch (error) {\n throw this.handleError(error);\n }\n }\n stringify() {\n if (this.error) throw this.error;\n if (this.stringified) return this.result;\n this.stringified = true;\n this.sync();\n let opts = this.result.opts;\n let str = stringify$2$1;\n if (opts.syntax) str = opts.syntax.stringify;\n if (opts.stringifier) str = opts.stringifier;\n if (str.stringify) str = str.stringify;\n let map = new MapGenerator$1$1(str, this.result.root, this.result.opts);\n let data = map.generate();\n this.result.css = data[0];\n this.result.map = data[1];\n return this.result;\n }\n sync() {\n if (this.error) throw this.error;\n if (this.processed) return this.result;\n this.processed = true;\n if (this.processing) {\n throw this.getAsyncError();\n }\n for (let plugin22 of this.plugins) {\n let promise = this.runOnRoot(plugin22);\n if (isPromise$1(promise)) {\n throw this.getAsyncError();\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean$3]) {\n root2[isClean$3] = true;\n this.walkSync(root2);\n }\n if (this.listeners.OnceExit) {\n if (root2.type === \"document\") {\n for (let subRoot of root2.nodes) {\n this.visitSync(this.listeners.OnceExit, subRoot);\n }\n } else {\n this.visitSync(this.listeners.OnceExit, root2);\n }\n }\n }\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this.opts)) {\n warnOnce$1$1(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this.css;\n }\n visitSync(visitors, node2) {\n for (let [plugin22, visitor] of visitors) {\n this.result.lastPlugin = plugin22;\n let promise;\n try {\n promise = visitor(node2, this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2.proxyOf);\n }\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n return true;\n }\n if (isPromise$1(promise)) {\n throw this.getAsyncError();\n }\n }\n }\n visitTick(stack) {\n let visit2 = stack[stack.length - 1];\n let { node: node2, visitors } = visit2;\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n stack.pop();\n return;\n }\n if (visitors.length > 0 && visit2.visitorIndex < visitors.length) {\n let [plugin22, visitor] = visitors[visit2.visitorIndex];\n visit2.visitorIndex += 1;\n if (visit2.visitorIndex === visitors.length) {\n visit2.visitors = [];\n visit2.visitorIndex = 0;\n }\n this.result.lastPlugin = plugin22;\n try {\n return visitor(node2.toProxy(), this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2);\n }\n }\n if (visit2.iterator !== 0) {\n let iterator = visit2.iterator;\n let child;\n while (child = node2.nodes[node2.indexes[iterator]]) {\n node2.indexes[iterator] += 1;\n if (!child[isClean$3]) {\n child[isClean$3] = true;\n stack.push(toStack$1(child));\n return;\n }\n }\n visit2.iterator = 0;\n delete node2.indexes[iterator];\n }\n let events = visit2.events;\n while (visit2.eventIndex < events.length) {\n let event = events[visit2.eventIndex];\n visit2.eventIndex += 1;\n if (event === CHILDREN$1) {\n if (node2.nodes && node2.nodes.length) {\n node2[isClean$3] = true;\n visit2.iterator = node2.getIterator();\n }\n return;\n } else if (this.listeners[event]) {\n visit2.visitors = this.listeners[event];\n return;\n }\n }\n stack.pop();\n }\n walkSync(node2) {\n node2[isClean$3] = true;\n let events = getEvents$1(node2);\n for (let event of events) {\n if (event === CHILDREN$1) {\n if (node2.nodes) {\n node2.each((child) => {\n if (!child[isClean$3]) this.walkSync(child);\n });\n }\n } else {\n let visitors = this.listeners[event];\n if (visitors) {\n if (this.visitSync(visitors, node2.toProxy())) return;\n }\n }\n }\n }\n warnings() {\n return this.sync().warnings();\n }\n get content() {\n return this.stringify().content;\n }\n get css() {\n return this.stringify().css;\n }\n get map() {\n return this.stringify().map;\n }\n get messages() {\n return this.sync().messages;\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n return this.sync().root;\n }\n get [Symbol.toStringTag]() {\n return \"LazyResult\";\n }\n};\nLazyResult$2$1.registerPostcss = (dependant) => {\n postcss$2$1 = dependant;\n};\nvar lazyResult$1 = LazyResult$2$1;\nLazyResult$2$1.default = LazyResult$2$1;\nRoot$3$1.registerLazyResult(LazyResult$2$1);\nDocument$2$1.registerLazyResult(LazyResult$2$1);\nlet MapGenerator2$1 = mapGenerator$1;\nlet stringify$1$1 = stringify_1$1;\nlet warnOnce2$1 = warnOnce$2$1;\nlet parse$1$1 = parse_1$1;\nconst Result$1$1 = result$1;\nlet NoWorkResult$1$1 = class NoWorkResult {\n constructor(processor2, css, opts) {\n css = css.toString();\n this.stringified = false;\n this._processor = processor2;\n this._css = css;\n this._opts = opts;\n this._map = void 0;\n let root2;\n let str = stringify$1$1;\n this.result = new Result$1$1(this._processor, root2, this._opts);\n this.result.css = css;\n let self = this;\n Object.defineProperty(this.result, \"root\", {\n get() {\n return self.root;\n }\n });\n let map = new MapGenerator2$1(str, root2, this._opts, css);\n if (map.isMap()) {\n let [generatedCSS, generatedMap] = map.generate();\n if (generatedCSS) {\n this.result.css = generatedCSS;\n }\n if (generatedMap) {\n this.result.map = generatedMap;\n }\n } else {\n map.clearAnnotation();\n this.result.css = map.css;\n }\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n return Promise.resolve(this.result);\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n sync() {\n if (this.error) throw this.error;\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this._opts)) {\n warnOnce2$1(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this._css;\n }\n warnings() {\n return [];\n }\n get content() {\n return this.result.css;\n }\n get css() {\n return this.result.css;\n }\n get map() {\n return this.result.map;\n }\n get messages() {\n return [];\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n if (this._root) {\n return this._root;\n }\n let root2;\n let parser2 = parse$1$1;\n try {\n root2 = parser2(this._css, this._opts);\n } catch (error) {\n this.error = error;\n }\n if (this.error) {\n throw this.error;\n } else {\n this._root = root2;\n return root2;\n }\n }\n get [Symbol.toStringTag]() {\n return \"NoWorkResult\";\n }\n};\nvar noWorkResult$1 = NoWorkResult$1$1;\nNoWorkResult$1$1.default = NoWorkResult$1$1;\nlet NoWorkResult2$1 = noWorkResult$1;\nlet LazyResult$1$1 = lazyResult$1;\nlet Document$1$1 = document$1$1;\nlet Root$2$1 = root$1;\nlet Processor$1$1 = class Processor {\n constructor(plugins = []) {\n this.version = \"8.4.38\";\n this.plugins = this.normalize(plugins);\n }\n normalize(plugins) {\n let normalized = [];\n for (let i2 of plugins) {\n if (i2.postcss === true) {\n i2 = i2();\n } else if (i2.postcss) {\n i2 = i2.postcss;\n }\n if (typeof i2 === \"object\" && Array.isArray(i2.plugins)) {\n normalized = normalized.concat(i2.plugins);\n } else if (typeof i2 === \"object\" && i2.postcssPlugin) {\n normalized.push(i2);\n } else if (typeof i2 === \"function\") {\n normalized.push(i2);\n } else if (typeof i2 === \"object\" && (i2.parse || i2.stringify)) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error(\n \"PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.\"\n );\n }\n } else {\n throw new Error(i2 + \" is not a PostCSS plugin\");\n }\n }\n return normalized;\n }\n process(css, opts = {}) {\n if (!this.plugins.length && !opts.parser && !opts.stringifier && !opts.syntax) {\n return new NoWorkResult2$1(this, css, opts);\n } else {\n return new LazyResult$1$1(this, css, opts);\n }\n }\n use(plugin22) {\n this.plugins = this.plugins.concat(this.normalize([plugin22]));\n return this;\n }\n};\nvar processor$1 = Processor$1$1;\nProcessor$1$1.default = Processor$1$1;\nRoot$2$1.registerProcessor(Processor$1$1);\nDocument$1$1.registerProcessor(Processor$1$1);\nlet Declaration$1$1 = declaration$1;\nlet PreviousMap2$1 = previousMap$1;\nlet Comment$1$1 = comment$1;\nlet AtRule$1$1 = atRule$1;\nlet Input$1$1 = input$1;\nlet Root$1$1 = root$1;\nlet Rule$1$1 = rule$1;\nfunction fromJSON$1$1(json, inputs) {\n if (Array.isArray(json)) return json.map((n2) => fromJSON$1$1(n2));\n let { inputs: ownInputs, ...defaults } = json;\n if (ownInputs) {\n inputs = [];\n for (let input2 of ownInputs) {\n let inputHydrated = { ...input2, __proto__: Input$1$1.prototype };\n if (inputHydrated.map) {\n inputHydrated.map = {\n ...inputHydrated.map,\n __proto__: PreviousMap2$1.prototype\n };\n }\n inputs.push(inputHydrated);\n }\n }\n if (defaults.nodes) {\n defaults.nodes = json.nodes.map((n2) => fromJSON$1$1(n2, inputs));\n }\n if (defaults.source) {\n let { inputId, ...source } = defaults.source;\n defaults.source = source;\n if (inputId != null) {\n defaults.source.input = inputs[inputId];\n }\n }\n if (defaults.type === \"root\") {\n return new Root$1$1(defaults);\n } else if (defaults.type === \"decl\") {\n return new Declaration$1$1(defaults);\n } else if (defaults.type === \"rule\") {\n return new Rule$1$1(defaults);\n } else if (defaults.type === \"comment\") {\n return new Comment$1$1(defaults);\n } else if (defaults.type === \"atrule\") {\n return new AtRule$1$1(defaults);\n } else {\n throw new Error(\"Unknown node type: \" + json.type);\n }\n}\nvar fromJSON_1$1 = fromJSON$1$1;\nfromJSON$1$1.default = fromJSON$1$1;\nlet CssSyntaxError2$1 = cssSyntaxError$1;\nlet Declaration2$1 = declaration$1;\nlet LazyResult2$1 = lazyResult$1;\nlet Container2$1 = container$1;\nlet Processor2$1 = processor$1;\nlet stringify$5 = stringify_1$1;\nlet fromJSON$2 = fromJSON_1$1;\nlet Document22 = document$1$1;\nlet Warning2$1 = warning$1;\nlet Comment2$1 = comment$1;\nlet AtRule2$1 = atRule$1;\nlet Result2$1 = result$1;\nlet Input2$1 = input$1;\nlet parse$5 = parse_1$1;\nlet list$3 = list_1$1;\nlet Rule2$1 = rule$1;\nlet Root2$1 = root$1;\nlet Node2$1 = node$1;\nfunction postcss$3(...plugins) {\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0];\n }\n return new Processor2$1(plugins);\n}\npostcss$3.plugin = function plugin(name, initializer) {\n let warningPrinted = false;\n function creator(...args) {\n if (console && console.warn && !warningPrinted) {\n warningPrinted = true;\n console.warn(\n name + \": postcss.plugin was deprecated. Migration guide:\\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration\"\n );\n if (process.env.LANG && process.env.LANG.startsWith(\"cn\")) {\n console.warn(\n name + \": 里面 postcss.plugin 被弃用. 迁移指南:\\nhttps://www.w3ctech.com/topic/2226\"\n );\n }\n }\n let transformer = initializer(...args);\n transformer.postcssPlugin = name;\n transformer.postcssVersion = new Processor2$1().version;\n return transformer;\n }\n let cache;\n Object.defineProperty(creator, \"postcss\", {\n get() {\n if (!cache) cache = creator();\n return cache;\n }\n });\n creator.process = function(css, processOpts, pluginOpts) {\n return postcss$3([creator(pluginOpts)]).process(css, processOpts);\n };\n return creator;\n};\npostcss$3.stringify = stringify$5;\npostcss$3.parse = parse$5;\npostcss$3.fromJSON = fromJSON$2;\npostcss$3.list = list$3;\npostcss$3.comment = (defaults) => new Comment2$1(defaults);\npostcss$3.atRule = (defaults) => new AtRule2$1(defaults);\npostcss$3.decl = (defaults) => new Declaration2$1(defaults);\npostcss$3.rule = (defaults) => new Rule2$1(defaults);\npostcss$3.root = (defaults) => new Root2$1(defaults);\npostcss$3.document = (defaults) => new Document22(defaults);\npostcss$3.CssSyntaxError = CssSyntaxError2$1;\npostcss$3.Declaration = Declaration2$1;\npostcss$3.Container = Container2$1;\npostcss$3.Processor = Processor2$1;\npostcss$3.Document = Document22;\npostcss$3.Comment = Comment2$1;\npostcss$3.Warning = Warning2$1;\npostcss$3.AtRule = AtRule2$1;\npostcss$3.Result = Result2$1;\npostcss$3.Input = Input2$1;\npostcss$3.Rule = Rule2$1;\npostcss$3.Root = Root2$1;\npostcss$3.Node = Node2$1;\nLazyResult2$1.registerPostcss(postcss$3);\nvar postcss_1$1 = postcss$3;\npostcss$3.default = postcss$3;\nconst postcss$1$1 = /* @__PURE__ */ getDefaultExportFromCjs$1(postcss_1$1);\npostcss$1$1.stringify;\npostcss$1$1.fromJSON;\npostcss$1$1.plugin;\npostcss$1$1.parse;\npostcss$1$1.list;\npostcss$1$1.document;\npostcss$1$1.comment;\npostcss$1$1.atRule;\npostcss$1$1.rule;\npostcss$1$1.decl;\npostcss$1$1.root;\npostcss$1$1.CssSyntaxError;\npostcss$1$1.Declaration;\npostcss$1$1.Container;\npostcss$1$1.Processor;\npostcss$1$1.Document;\npostcss$1$1.Comment;\npostcss$1$1.Warning;\npostcss$1$1.AtRule;\npostcss$1$1.Result;\npostcss$1$1.Input;\npostcss$1$1.Rule;\npostcss$1$1.Root;\npostcss$1$1.Node;\nvar __defProp2 = Object.defineProperty;\nvar __defNormalProp2 = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField2 = (obj, key, value) => __defNormalProp2(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nfunction getDefaultExportFromCjs(x2) {\n return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, \"default\") ? x2[\"default\"] : x2;\n}\nfunction getAugmentedNamespace(n2) {\n if (n2.__esModule) return n2;\n var f2 = n2.default;\n if (typeof f2 == \"function\") {\n var a2 = function a22() {\n if (this instanceof a22) {\n return Reflect.construct(f2, arguments, this.constructor);\n }\n return f2.apply(this, arguments);\n };\n a2.prototype = f2.prototype;\n } else a2 = {};\n Object.defineProperty(a2, \"__esModule\", { value: true });\n Object.keys(n2).forEach(function(k) {\n var d = Object.getOwnPropertyDescriptor(n2, k);\n Object.defineProperty(a2, k, d.get ? d : {\n enumerable: true,\n get: function() {\n return n2[k];\n }\n });\n });\n return a2;\n}\nvar picocolors_browser = { exports: {} };\nvar x = String;\nvar create = function() {\n return { isColorSupported: false, reset: x, bold: x, dim: x, italic: x, underline: x, inverse: x, hidden: x, strikethrough: x, black: x, red: x, green: x, yellow: x, blue: x, magenta: x, cyan: x, white: x, gray: x, bgBlack: x, bgRed: x, bgGreen: x, bgYellow: x, bgBlue: x, bgMagenta: x, bgCyan: x, bgWhite: x };\n};\npicocolors_browser.exports = create();\npicocolors_browser.exports.createColors = create;\nvar picocolors_browserExports = picocolors_browser.exports;\nconst __viteBrowserExternal = {};\nconst __viteBrowserExternal$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: __viteBrowserExternal\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst require$$2 = /* @__PURE__ */ getAugmentedNamespace(__viteBrowserExternal$1);\nlet pico = picocolors_browserExports;\nlet terminalHighlight$1 = require$$2;\nlet CssSyntaxError$3 = class CssSyntaxError2 extends Error {\n constructor(message, line, column, source, file, plugin22) {\n super(message);\n this.name = \"CssSyntaxError\";\n this.reason = message;\n if (file) {\n this.file = file;\n }\n if (source) {\n this.source = source;\n }\n if (plugin22) {\n this.plugin = plugin22;\n }\n if (typeof line !== \"undefined\" && typeof column !== \"undefined\") {\n if (typeof line === \"number\") {\n this.line = line;\n this.column = column;\n } else {\n this.line = line.line;\n this.column = line.column;\n this.endLine = column.line;\n this.endColumn = column.column;\n }\n }\n this.setMessage();\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, CssSyntaxError2);\n }\n }\n setMessage() {\n this.message = this.plugin ? this.plugin + \": \" : \"\";\n this.message += this.file ? this.file : \"\";\n if (typeof this.line !== \"undefined\") {\n this.message += \":\" + this.line + \":\" + this.column;\n }\n this.message += \": \" + this.reason;\n }\n showSourceCode(color) {\n if (!this.source) return \"\";\n let css = this.source;\n if (color == null) color = pico.isColorSupported;\n if (terminalHighlight$1) {\n if (color) css = terminalHighlight$1(css);\n }\n let lines = css.split(/\\r?\\n/);\n let start = Math.max(this.line - 3, 0);\n let end = Math.min(this.line + 2, lines.length);\n let maxWidth = String(end).length;\n let mark, aside;\n if (color) {\n let { bold, gray, red } = pico.createColors(true);\n mark = (text) => bold(red(text));\n aside = (text) => gray(text);\n } else {\n mark = aside = (str) => str;\n }\n return lines.slice(start, end).map((line, index2) => {\n let number = start + 1 + index2;\n let gutter = \" \" + (\" \" + number).slice(-maxWidth) + \" | \";\n if (number === this.line) {\n let spacing = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, this.column - 1).replace(/[^\\t]/g, \" \");\n return mark(\">\") + aside(gutter) + line + \"\\n \" + spacing + mark(\"^\");\n }\n return \" \" + aside(gutter) + line;\n }).join(\"\\n\");\n }\n toString() {\n let code = this.showSourceCode();\n if (code) {\n code = \"\\n\\n\" + code + \"\\n\";\n }\n return this.name + \": \" + this.message + code;\n }\n};\nvar cssSyntaxError = CssSyntaxError$3;\nCssSyntaxError$3.default = CssSyntaxError$3;\nvar symbols = {};\nsymbols.isClean = Symbol(\"isClean\");\nsymbols.my = Symbol(\"my\");\nconst DEFAULT_RAW = {\n after: \"\\n\",\n beforeClose: \"\\n\",\n beforeComment: \"\\n\",\n beforeDecl: \"\\n\",\n beforeOpen: \" \",\n beforeRule: \"\\n\",\n colon: \": \",\n commentLeft: \" \",\n commentRight: \" \",\n emptyBody: \"\",\n indent: \" \",\n semicolon: false\n};\nfunction capitalize(str) {\n return str[0].toUpperCase() + str.slice(1);\n}\nlet Stringifier$2 = class Stringifier2 {\n constructor(builder) {\n this.builder = builder;\n }\n atrule(node2, semicolon) {\n let name = \"@\" + node2.name;\n let params = node2.params ? this.rawValue(node2, \"params\") : \"\";\n if (typeof node2.raws.afterName !== \"undefined\") {\n name += node2.raws.afterName;\n } else if (params) {\n name += \" \";\n }\n if (node2.nodes) {\n this.block(node2, name + params);\n } else {\n let end = (node2.raws.between || \"\") + (semicolon ? \";\" : \"\");\n this.builder(name + params + end, node2);\n }\n }\n beforeAfter(node2, detect) {\n let value;\n if (node2.type === \"decl\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (node2.type === \"comment\") {\n value = this.raw(node2, null, \"beforeComment\");\n } else if (detect === \"before\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else {\n value = this.raw(node2, null, \"beforeClose\");\n }\n let buf = node2.parent;\n let depth = 0;\n while (buf && buf.type !== \"root\") {\n depth += 1;\n buf = buf.parent;\n }\n if (value.includes(\"\\n\")) {\n let indent = this.raw(node2, null, \"indent\");\n if (indent.length) {\n for (let step = 0; step < depth; step++) value += indent;\n }\n }\n return value;\n }\n block(node2, start) {\n let between = this.raw(node2, \"between\", \"beforeOpen\");\n this.builder(start + between + \"{\", node2, \"start\");\n let after;\n if (node2.nodes && node2.nodes.length) {\n this.body(node2);\n after = this.raw(node2, \"after\");\n } else {\n after = this.raw(node2, \"after\", \"emptyBody\");\n }\n if (after) this.builder(after);\n this.builder(\"}\", node2, \"end\");\n }\n body(node2) {\n let last = node2.nodes.length - 1;\n while (last > 0) {\n if (node2.nodes[last].type !== \"comment\") break;\n last -= 1;\n }\n let semicolon = this.raw(node2, \"semicolon\");\n for (let i2 = 0; i2 < node2.nodes.length; i2++) {\n let child = node2.nodes[i2];\n let before = this.raw(child, \"before\");\n if (before) this.builder(before);\n this.stringify(child, last !== i2 || semicolon);\n }\n }\n comment(node2) {\n let left = this.raw(node2, \"left\", \"commentLeft\");\n let right = this.raw(node2, \"right\", \"commentRight\");\n this.builder(\"/*\" + left + node2.text + right + \"*/\", node2);\n }\n decl(node2, semicolon) {\n let between = this.raw(node2, \"between\", \"colon\");\n let string = node2.prop + between + this.rawValue(node2, \"value\");\n if (node2.important) {\n string += node2.raws.important || \" !important\";\n }\n if (semicolon) string += \";\";\n this.builder(string, node2);\n }\n document(node2) {\n this.body(node2);\n }\n raw(node2, own, detect) {\n let value;\n if (!detect) detect = own;\n if (own) {\n value = node2.raws[own];\n if (typeof value !== \"undefined\") return value;\n }\n let parent = node2.parent;\n if (detect === \"before\") {\n if (!parent || parent.type === \"root\" && parent.first === node2) {\n return \"\";\n }\n if (parent && parent.type === \"document\") {\n return \"\";\n }\n }\n if (!parent) return DEFAULT_RAW[detect];\n let root2 = node2.root();\n if (!root2.rawCache) root2.rawCache = {};\n if (typeof root2.rawCache[detect] !== \"undefined\") {\n return root2.rawCache[detect];\n }\n if (detect === \"before\" || detect === \"after\") {\n return this.beforeAfter(node2, detect);\n } else {\n let method = \"raw\" + capitalize(detect);\n if (this[method]) {\n value = this[method](root2, node2);\n } else {\n root2.walk((i2) => {\n value = i2.raws[own];\n if (typeof value !== \"undefined\") return false;\n });\n }\n }\n if (typeof value === \"undefined\") value = DEFAULT_RAW[detect];\n root2.rawCache[detect] = value;\n return value;\n }\n rawBeforeClose(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length > 0) {\n if (typeof i2.raws.after !== \"undefined\") {\n value = i2.raws.after;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawBeforeComment(root2, node2) {\n let value;\n root2.walkComments((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeDecl(root2, node2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeOpen(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.type !== \"decl\") {\n value = i2.raws.between;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawBeforeRule(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && (i2.parent !== root2 || root2.first !== i2)) {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawColon(root2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.between !== \"undefined\") {\n value = i2.raws.between.replace(/[^\\s:]/g, \"\");\n return false;\n }\n });\n return value;\n }\n rawEmptyBody(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length === 0) {\n value = i2.raws.after;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawIndent(root2) {\n if (root2.raws.indent) return root2.raws.indent;\n let value;\n root2.walk((i2) => {\n let p = i2.parent;\n if (p && p !== root2 && p.parent && p.parent === root2) {\n if (typeof i2.raws.before !== \"undefined\") {\n let parts = i2.raws.before.split(\"\\n\");\n value = parts[parts.length - 1];\n value = value.replace(/\\S/g, \"\");\n return false;\n }\n }\n });\n return value;\n }\n rawSemicolon(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length && i2.last.type === \"decl\") {\n value = i2.raws.semicolon;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawValue(node2, prop) {\n let value = node2[prop];\n let raw = node2.raws[prop];\n if (raw && raw.value === value) {\n return raw.raw;\n }\n return value;\n }\n root(node2) {\n this.body(node2);\n if (node2.raws.after) this.builder(node2.raws.after);\n }\n rule(node2) {\n this.block(node2, this.rawValue(node2, \"selector\"));\n if (node2.raws.ownSemicolon) {\n this.builder(node2.raws.ownSemicolon, node2, \"end\");\n }\n }\n stringify(node2, semicolon) {\n if (!this[node2.type]) {\n throw new Error(\n \"Unknown AST node type \" + node2.type + \". Maybe you need to change PostCSS stringifier.\"\n );\n }\n this[node2.type](node2, semicolon);\n }\n};\nvar stringifier = Stringifier$2;\nStringifier$2.default = Stringifier$2;\nlet Stringifier$1 = stringifier;\nfunction stringify$4(node2, builder) {\n let str = new Stringifier$1(builder);\n str.stringify(node2);\n}\nvar stringify_1 = stringify$4;\nstringify$4.default = stringify$4;\nlet { isClean: isClean$2, my: my$2 } = symbols;\nlet CssSyntaxError$2 = cssSyntaxError;\nlet Stringifier22 = stringifier;\nlet stringify$3 = stringify_1;\nfunction cloneNode(obj, parent) {\n let cloned = new obj.constructor();\n for (let i2 in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, i2)) {\n continue;\n }\n if (i2 === \"proxyCache\") continue;\n let value = obj[i2];\n let type = typeof value;\n if (i2 === \"parent\" && type === \"object\") {\n if (parent) cloned[i2] = parent;\n } else if (i2 === \"source\") {\n cloned[i2] = value;\n } else if (Array.isArray(value)) {\n cloned[i2] = value.map((j) => cloneNode(j, cloned));\n } else {\n if (type === \"object\" && value !== null) value = cloneNode(value);\n cloned[i2] = value;\n }\n }\n return cloned;\n}\nlet Node$4 = class Node3 {\n constructor(defaults = {}) {\n this.raws = {};\n this[isClean$2] = false;\n this[my$2] = true;\n for (let name in defaults) {\n if (name === \"nodes\") {\n this.nodes = [];\n for (let node2 of defaults[name]) {\n if (typeof node2.clone === \"function\") {\n this.append(node2.clone());\n } else {\n this.append(node2);\n }\n }\n } else {\n this[name] = defaults[name];\n }\n }\n }\n addToError(error) {\n error.postcssNode = this;\n if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n let s2 = this.source;\n error.stack = error.stack.replace(\n /\\n\\s{4}at /,\n `$&${s2.input.from}:${s2.start.line}:${s2.start.column}$&`\n );\n }\n return error;\n }\n after(add) {\n this.parent.insertAfter(this, add);\n return this;\n }\n assign(overrides = {}) {\n for (let name in overrides) {\n this[name] = overrides[name];\n }\n return this;\n }\n before(add) {\n this.parent.insertBefore(this, add);\n return this;\n }\n cleanRaws(keepBetween) {\n delete this.raws.before;\n delete this.raws.after;\n if (!keepBetween) delete this.raws.between;\n }\n clone(overrides = {}) {\n let cloned = cloneNode(this);\n for (let name in overrides) {\n cloned[name] = overrides[name];\n }\n return cloned;\n }\n cloneAfter(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertAfter(this, cloned);\n return cloned;\n }\n cloneBefore(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertBefore(this, cloned);\n return cloned;\n }\n error(message, opts = {}) {\n if (this.source) {\n let { end, start } = this.rangeBy(opts);\n return this.source.input.error(\n message,\n { column: start.column, line: start.line },\n { column: end.column, line: end.line },\n opts\n );\n }\n return new CssSyntaxError$2(message);\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"prop\" || prop === \"value\" || prop === \"name\" || prop === \"params\" || prop === \"important\" || /* c8 ignore next */\n prop === \"text\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n markDirty() {\n if (this[isClean$2]) {\n this[isClean$2] = false;\n let next = this;\n while (next = next.parent) {\n next[isClean$2] = false;\n }\n }\n }\n next() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 + 1];\n }\n positionBy(opts, stringRepresentation) {\n let pos = this.source.start;\n if (opts.index) {\n pos = this.positionInside(opts.index, stringRepresentation);\n } else if (opts.word) {\n stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) pos = this.positionInside(index2, stringRepresentation);\n }\n return pos;\n }\n positionInside(index2, stringRepresentation) {\n let string = stringRepresentation || this.toString();\n let column = this.source.start.column;\n let line = this.source.start.line;\n for (let i2 = 0; i2 < index2; i2++) {\n if (string[i2] === \"\\n\") {\n column = 1;\n line += 1;\n } else {\n column += 1;\n }\n }\n return { column, line };\n }\n prev() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 - 1];\n }\n rangeBy(opts) {\n let start = {\n column: this.source.start.column,\n line: this.source.start.line\n };\n let end = this.source.end ? {\n column: this.source.end.column + 1,\n line: this.source.end.line\n } : {\n column: start.column + 1,\n line: start.line\n };\n if (opts.word) {\n let stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) {\n start = this.positionInside(index2, stringRepresentation);\n end = this.positionInside(index2 + opts.word.length, stringRepresentation);\n }\n } else {\n if (opts.start) {\n start = {\n column: opts.start.column,\n line: opts.start.line\n };\n } else if (opts.index) {\n start = this.positionInside(opts.index);\n }\n if (opts.end) {\n end = {\n column: opts.end.column,\n line: opts.end.line\n };\n } else if (typeof opts.endIndex === \"number\") {\n end = this.positionInside(opts.endIndex);\n } else if (opts.index) {\n end = this.positionInside(opts.index + 1);\n }\n }\n if (end.line < start.line || end.line === start.line && end.column <= start.column) {\n end = { column: start.column + 1, line: start.line };\n }\n return { end, start };\n }\n raw(prop, defaultType) {\n let str = new Stringifier22();\n return str.raw(this, prop, defaultType);\n }\n remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n this.parent = void 0;\n return this;\n }\n replaceWith(...nodes) {\n if (this.parent) {\n let bookmark = this;\n let foundSelf = false;\n for (let node2 of nodes) {\n if (node2 === this) {\n foundSelf = true;\n } else if (foundSelf) {\n this.parent.insertAfter(bookmark, node2);\n bookmark = node2;\n } else {\n this.parent.insertBefore(bookmark, node2);\n }\n }\n if (!foundSelf) {\n this.remove();\n }\n }\n return this;\n }\n root() {\n let result2 = this;\n while (result2.parent && result2.parent.type !== \"document\") {\n result2 = result2.parent;\n }\n return result2;\n }\n toJSON(_, inputs) {\n let fixed = {};\n let emitInputs = inputs == null;\n inputs = inputs || /* @__PURE__ */ new Map();\n let inputsNextIndex = 0;\n for (let name in this) {\n if (!Object.prototype.hasOwnProperty.call(this, name)) {\n continue;\n }\n if (name === \"parent\" || name === \"proxyCache\") continue;\n let value = this[name];\n if (Array.isArray(value)) {\n fixed[name] = value.map((i2) => {\n if (typeof i2 === \"object\" && i2.toJSON) {\n return i2.toJSON(null, inputs);\n } else {\n return i2;\n }\n });\n } else if (typeof value === \"object\" && value.toJSON) {\n fixed[name] = value.toJSON(null, inputs);\n } else if (name === \"source\") {\n let inputId = inputs.get(value.input);\n if (inputId == null) {\n inputId = inputsNextIndex;\n inputs.set(value.input, inputsNextIndex);\n inputsNextIndex++;\n }\n fixed[name] = {\n end: value.end,\n inputId,\n start: value.start\n };\n } else {\n fixed[name] = value;\n }\n }\n if (emitInputs) {\n fixed.inputs = [...inputs.keys()].map((input2) => input2.toJSON());\n }\n return fixed;\n }\n toProxy() {\n if (!this.proxyCache) {\n this.proxyCache = new Proxy(this, this.getProxyProcessor());\n }\n return this.proxyCache;\n }\n toString(stringifier2 = stringify$3) {\n if (stringifier2.stringify) stringifier2 = stringifier2.stringify;\n let result2 = \"\";\n stringifier2(this, (i2) => {\n result2 += i2;\n });\n return result2;\n }\n warn(result2, text, opts) {\n let data = { node: this };\n for (let i2 in opts) data[i2] = opts[i2];\n return result2.warn(text, data);\n }\n get proxyOf() {\n return this;\n }\n};\nvar node = Node$4;\nNode$4.default = Node$4;\nlet Node$3 = node;\nlet Declaration$4 = class Declaration2 extends Node$3 {\n constructor(defaults) {\n if (defaults && typeof defaults.value !== \"undefined\" && typeof defaults.value !== \"string\") {\n defaults = { ...defaults, value: String(defaults.value) };\n }\n super(defaults);\n this.type = \"decl\";\n }\n get variable() {\n return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n }\n};\nvar declaration = Declaration$4;\nDeclaration$4.default = Declaration$4;\nlet urlAlphabet = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\nlet customAlphabet = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = \"\";\n let i2 = size;\n while (i2--) {\n id += alphabet[Math.random() * alphabet.length | 0];\n }\n return id;\n };\n};\nlet nanoid$1 = (size = 21) => {\n let id = \"\";\n let i2 = size;\n while (i2--) {\n id += urlAlphabet[Math.random() * 64 | 0];\n }\n return id;\n};\nvar nonSecure = { nanoid: nanoid$1, customAlphabet };\nlet { SourceMapConsumer: SourceMapConsumer$2, SourceMapGenerator: SourceMapGenerator$2 } = require$$2;\nlet { existsSync, readFileSync } = require$$2;\nlet { dirname: dirname$1, join } = require$$2;\nfunction fromBase64(str) {\n if (Buffer) {\n return Buffer.from(str, \"base64\").toString();\n } else {\n return window.atob(str);\n }\n}\nlet PreviousMap$2 = class PreviousMap2 {\n constructor(css, opts) {\n if (opts.map === false) return;\n this.loadAnnotation(css);\n this.inline = this.startWith(this.annotation, \"data:\");\n let prev = opts.map ? opts.map.prev : void 0;\n let text = this.loadMap(opts.from, prev);\n if (!this.mapFile && opts.from) {\n this.mapFile = opts.from;\n }\n if (this.mapFile) this.root = dirname$1(this.mapFile);\n if (text) this.text = text;\n }\n consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new SourceMapConsumer$2(this.text);\n }\n return this.consumerCache;\n }\n decodeInline(text) {\n let baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/;\n let baseUri = /^data:application\\/json;base64,/;\n let charsetUri = /^data:application\\/json;charset=utf-?8,/;\n let uri = /^data:application\\/json,/;\n if (charsetUri.test(text) || uri.test(text)) {\n return decodeURIComponent(text.substr(RegExp.lastMatch.length));\n }\n if (baseCharsetUri.test(text) || baseUri.test(text)) {\n return fromBase64(text.substr(RegExp.lastMatch.length));\n }\n let encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n throw new Error(\"Unsupported source map encoding \" + encoding);\n }\n getAnnotationURL(sourceMapString) {\n return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n }\n isMap(map) {\n if (typeof map !== \"object\") return false;\n return typeof map.mappings === \"string\" || typeof map._mappings === \"string\" || Array.isArray(map.sections);\n }\n loadAnnotation(css) {\n let comments = css.match(/\\/\\*\\s*# sourceMappingURL=/gm);\n if (!comments) return;\n let start = css.lastIndexOf(comments.pop());\n let end = css.indexOf(\"*/\", start);\n if (start > -1 && end > -1) {\n this.annotation = this.getAnnotationURL(css.substring(start, end));\n }\n }\n loadFile(path) {\n this.root = dirname$1(path);\n if (existsSync(path)) {\n this.mapFile = path;\n return readFileSync(path, \"utf-8\").toString().trim();\n }\n }\n loadMap(file, prev) {\n if (prev === false) return false;\n if (prev) {\n if (typeof prev === \"string\") {\n return prev;\n } else if (typeof prev === \"function\") {\n let prevPath = prev(file);\n if (prevPath) {\n let map = this.loadFile(prevPath);\n if (!map) {\n throw new Error(\n \"Unable to load previous source map: \" + prevPath.toString()\n );\n }\n return map;\n }\n } else if (prev instanceof SourceMapConsumer$2) {\n return SourceMapGenerator$2.fromSourceMap(prev).toString();\n } else if (prev instanceof SourceMapGenerator$2) {\n return prev.toString();\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev);\n } else {\n throw new Error(\n \"Unsupported previous source map format: \" + prev.toString()\n );\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation);\n } else if (this.annotation) {\n let map = this.annotation;\n if (file) map = join(dirname$1(file), map);\n return this.loadFile(map);\n }\n }\n startWith(string, start) {\n if (!string) return false;\n return string.substr(0, start.length) === start;\n }\n withContent() {\n return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n }\n};\nvar previousMap = PreviousMap$2;\nPreviousMap$2.default = PreviousMap$2;\nlet { SourceMapConsumer: SourceMapConsumer$1, SourceMapGenerator: SourceMapGenerator$1 } = require$$2;\nlet { fileURLToPath, pathToFileURL: pathToFileURL$1 } = require$$2;\nlet { isAbsolute, resolve: resolve$1 } = require$$2;\nlet { nanoid } = nonSecure;\nlet terminalHighlight = require$$2;\nlet CssSyntaxError$1 = cssSyntaxError;\nlet PreviousMap$1 = previousMap;\nlet fromOffsetCache = Symbol(\"fromOffsetCache\");\nlet sourceMapAvailable$1 = Boolean(SourceMapConsumer$1 && SourceMapGenerator$1);\nlet pathAvailable$1 = Boolean(resolve$1 && isAbsolute);\nlet Input$4 = class Input2 {\n constructor(css, opts = {}) {\n if (css === null || typeof css === \"undefined\" || typeof css === \"object\" && !css.toString) {\n throw new Error(`PostCSS received ${css} instead of CSS string`);\n }\n this.css = css.toString();\n if (this.css[0] === \"\\uFEFF\" || this.css[0] === \"￾\") {\n this.hasBOM = true;\n this.css = this.css.slice(1);\n } else {\n this.hasBOM = false;\n }\n if (opts.from) {\n if (!pathAvailable$1 || /^\\w+:\\/\\//.test(opts.from) || isAbsolute(opts.from)) {\n this.file = opts.from;\n } else {\n this.file = resolve$1(opts.from);\n }\n }\n if (pathAvailable$1 && sourceMapAvailable$1) {\n let map = new PreviousMap$1(this.css, opts);\n if (map.text) {\n this.map = map;\n let file = map.consumer().file;\n if (!this.file && file) this.file = this.mapResolve(file);\n }\n }\n if (!this.file) {\n this.id = \"\";\n }\n if (this.map) this.map.file = this.from;\n }\n error(message, line, column, opts = {}) {\n let result2, endLine, endColumn;\n if (line && typeof line === \"object\") {\n let start = line;\n let end = column;\n if (typeof start.offset === \"number\") {\n let pos = this.fromOffset(start.offset);\n line = pos.line;\n column = pos.col;\n } else {\n line = start.line;\n column = start.column;\n }\n if (typeof end.offset === \"number\") {\n let pos = this.fromOffset(end.offset);\n endLine = pos.line;\n endColumn = pos.col;\n } else {\n endLine = end.line;\n endColumn = end.column;\n }\n } else if (!column) {\n let pos = this.fromOffset(line);\n line = pos.line;\n column = pos.col;\n }\n let origin = this.origin(line, column, endLine, endColumn);\n if (origin) {\n result2 = new CssSyntaxError$1(\n message,\n origin.endLine === void 0 ? origin.line : { column: origin.column, line: origin.line },\n origin.endLine === void 0 ? origin.column : { column: origin.endColumn, line: origin.endLine },\n origin.source,\n origin.file,\n opts.plugin\n );\n } else {\n result2 = new CssSyntaxError$1(\n message,\n endLine === void 0 ? line : { column, line },\n endLine === void 0 ? column : { column: endColumn, line: endLine },\n this.css,\n this.file,\n opts.plugin\n );\n }\n result2.input = { column, endColumn, endLine, line, source: this.css };\n if (this.file) {\n if (pathToFileURL$1) {\n result2.input.url = pathToFileURL$1(this.file).toString();\n }\n result2.input.file = this.file;\n }\n return result2;\n }\n fromOffset(offset) {\n let lastLine, lineToIndex;\n if (!this[fromOffsetCache]) {\n let lines = this.css.split(\"\\n\");\n lineToIndex = new Array(lines.length);\n let prevIndex = 0;\n for (let i2 = 0, l2 = lines.length; i2 < l2; i2++) {\n lineToIndex[i2] = prevIndex;\n prevIndex += lines[i2].length + 1;\n }\n this[fromOffsetCache] = lineToIndex;\n } else {\n lineToIndex = this[fromOffsetCache];\n }\n lastLine = lineToIndex[lineToIndex.length - 1];\n let min = 0;\n if (offset >= lastLine) {\n min = lineToIndex.length - 1;\n } else {\n let max = lineToIndex.length - 2;\n let mid;\n while (min < max) {\n mid = min + (max - min >> 1);\n if (offset < lineToIndex[mid]) {\n max = mid - 1;\n } else if (offset >= lineToIndex[mid + 1]) {\n min = mid + 1;\n } else {\n min = mid;\n break;\n }\n }\n }\n return {\n col: offset - lineToIndex[min] + 1,\n line: min + 1\n };\n }\n mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file;\n }\n return resolve$1(this.map.consumer().sourceRoot || this.map.root || \".\", file);\n }\n origin(line, column, endLine, endColumn) {\n if (!this.map) return false;\n let consumer = this.map.consumer();\n let from = consumer.originalPositionFor({ column, line });\n if (!from.source) return false;\n let to;\n if (typeof endLine === \"number\") {\n to = consumer.originalPositionFor({ column: endColumn, line: endLine });\n }\n let fromUrl;\n if (isAbsolute(from.source)) {\n fromUrl = pathToFileURL$1(from.source);\n } else {\n fromUrl = new URL(\n from.source,\n this.map.consumer().sourceRoot || pathToFileURL$1(this.map.mapFile)\n );\n }\n let result2 = {\n column: from.column,\n endColumn: to && to.column,\n endLine: to && to.line,\n line: from.line,\n url: fromUrl.toString()\n };\n if (fromUrl.protocol === \"file:\") {\n if (fileURLToPath) {\n result2.file = fileURLToPath(fromUrl);\n } else {\n throw new Error(`file: protocol is not available in this PostCSS build`);\n }\n }\n let source = consumer.sourceContentFor(from.source);\n if (source) result2.source = source;\n return result2;\n }\n toJSON() {\n let json = {};\n for (let name of [\"hasBOM\", \"css\", \"file\", \"id\"]) {\n if (this[name] != null) {\n json[name] = this[name];\n }\n }\n if (this.map) {\n json.map = { ...this.map };\n if (json.map.consumerCache) {\n json.map.consumerCache = void 0;\n }\n }\n return json;\n }\n get from() {\n return this.file || this.id;\n }\n};\nvar input = Input$4;\nInput$4.default = Input$4;\nif (terminalHighlight && terminalHighlight.registerInput) {\n terminalHighlight.registerInput(Input$4);\n}\nlet { SourceMapConsumer, SourceMapGenerator } = require$$2;\nlet { dirname, relative, resolve, sep } = require$$2;\nlet { pathToFileURL } = require$$2;\nlet Input$3 = input;\nlet sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator);\nlet pathAvailable = Boolean(dirname && resolve && relative && sep);\nlet MapGenerator$2 = class MapGenerator2 {\n constructor(stringify2, root2, opts, cssString) {\n this.stringify = stringify2;\n this.mapOpts = opts.map || {};\n this.root = root2;\n this.opts = opts;\n this.css = cssString;\n this.originalCSS = cssString;\n this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute;\n this.memoizedFileURLs = /* @__PURE__ */ new Map();\n this.memoizedPaths = /* @__PURE__ */ new Map();\n this.memoizedURLs = /* @__PURE__ */ new Map();\n }\n addAnnotation() {\n let content;\n if (this.isInline()) {\n content = \"data:application/json;base64,\" + this.toBase64(this.map.toString());\n } else if (typeof this.mapOpts.annotation === \"string\") {\n content = this.mapOpts.annotation;\n } else if (typeof this.mapOpts.annotation === \"function\") {\n content = this.mapOpts.annotation(this.opts.to, this.root);\n } else {\n content = this.outputFile() + \".map\";\n }\n let eol = \"\\n\";\n if (this.css.includes(\"\\r\\n\")) eol = \"\\r\\n\";\n this.css += eol + \"/*# sourceMappingURL=\" + content + \" */\";\n }\n applyPrevMaps() {\n for (let prev of this.previous()) {\n let from = this.toUrl(this.path(prev.file));\n let root2 = prev.root || dirname(prev.file);\n let map;\n if (this.mapOpts.sourcesContent === false) {\n map = new SourceMapConsumer(prev.text);\n if (map.sourcesContent) {\n map.sourcesContent = null;\n }\n } else {\n map = prev.consumer();\n }\n this.map.applySourceMap(map, from, this.toUrl(this.path(root2)));\n }\n }\n clearAnnotation() {\n if (this.mapOpts.annotation === false) return;\n if (this.root) {\n let node2;\n for (let i2 = this.root.nodes.length - 1; i2 >= 0; i2--) {\n node2 = this.root.nodes[i2];\n if (node2.type !== \"comment\") continue;\n if (node2.text.indexOf(\"# sourceMappingURL=\") === 0) {\n this.root.removeChild(i2);\n }\n }\n } else if (this.css) {\n this.css = this.css.replace(/\\n*?\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\");\n }\n }\n generate() {\n this.clearAnnotation();\n if (pathAvailable && sourceMapAvailable && this.isMap()) {\n return this.generateMap();\n } else {\n let result2 = \"\";\n this.stringify(this.root, (i2) => {\n result2 += i2;\n });\n return [result2];\n }\n }\n generateMap() {\n if (this.root) {\n this.generateString();\n } else if (this.previous().length === 1) {\n let prev = this.previous()[0].consumer();\n prev.file = this.outputFile();\n this.map = SourceMapGenerator.fromSourceMap(prev, {\n ignoreInvalidMapping: true\n });\n } else {\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n this.map.addMapping({\n generated: { column: 0, line: 1 },\n original: { column: 0, line: 1 },\n source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\"\n });\n }\n if (this.isSourcesContent()) this.setSourcesContent();\n if (this.root && this.previous().length > 0) this.applyPrevMaps();\n if (this.isAnnotation()) this.addAnnotation();\n if (this.isInline()) {\n return [this.css];\n } else {\n return [this.css, this.map];\n }\n }\n generateString() {\n this.css = \"\";\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n let line = 1;\n let column = 1;\n let noSource = \"\";\n let mapping = {\n generated: { column: 0, line: 0 },\n original: { column: 0, line: 0 },\n source: \"\"\n };\n let lines, last;\n this.stringify(this.root, (str, node2, type) => {\n this.css += str;\n if (node2 && type !== \"end\") {\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n if (node2.source && node2.source.start) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.start.line;\n mapping.original.column = node2.source.start.column - 1;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n this.map.addMapping(mapping);\n }\n }\n lines = str.match(/\\n/g);\n if (lines) {\n line += lines.length;\n last = str.lastIndexOf(\"\\n\");\n column = str.length - last;\n } else {\n column += str.length;\n }\n if (node2 && type !== \"start\") {\n let p = node2.parent || { raws: {} };\n let childless = node2.type === \"decl\" || node2.type === \"atrule\" && !node2.nodes;\n if (!childless || node2 !== p.last || p.raws.semicolon) {\n if (node2.source && node2.source.end) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.end.line;\n mapping.original.column = node2.source.end.column - 1;\n mapping.generated.line = line;\n mapping.generated.column = column - 2;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n this.map.addMapping(mapping);\n }\n }\n }\n });\n }\n isAnnotation() {\n if (this.isInline()) {\n return true;\n }\n if (typeof this.mapOpts.annotation !== \"undefined\") {\n return this.mapOpts.annotation;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.annotation);\n }\n return true;\n }\n isInline() {\n if (typeof this.mapOpts.inline !== \"undefined\") {\n return this.mapOpts.inline;\n }\n let annotation = this.mapOpts.annotation;\n if (typeof annotation !== \"undefined\" && annotation !== true) {\n return false;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.inline);\n }\n return true;\n }\n isMap() {\n if (typeof this.opts.map !== \"undefined\") {\n return !!this.opts.map;\n }\n return this.previous().length > 0;\n }\n isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== \"undefined\") {\n return this.mapOpts.sourcesContent;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.withContent());\n }\n return true;\n }\n outputFile() {\n if (this.opts.to) {\n return this.path(this.opts.to);\n } else if (this.opts.from) {\n return this.path(this.opts.from);\n } else {\n return \"to.css\";\n }\n }\n path(file) {\n if (this.mapOpts.absolute) return file;\n if (file.charCodeAt(0) === 60) return file;\n if (/^\\w+:\\/\\//.test(file)) return file;\n let cached = this.memoizedPaths.get(file);\n if (cached) return cached;\n let from = this.opts.to ? dirname(this.opts.to) : \".\";\n if (typeof this.mapOpts.annotation === \"string\") {\n from = dirname(resolve(from, this.mapOpts.annotation));\n }\n let path = relative(from, file);\n this.memoizedPaths.set(file, path);\n return path;\n }\n previous() {\n if (!this.previousMaps) {\n this.previousMaps = [];\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source && node2.source.input.map) {\n let map = node2.source.input.map;\n if (!this.previousMaps.includes(map)) {\n this.previousMaps.push(map);\n }\n }\n });\n } else {\n let input2 = new Input$3(this.originalCSS, this.opts);\n if (input2.map) this.previousMaps.push(input2.map);\n }\n }\n return this.previousMaps;\n }\n setSourcesContent() {\n let already = {};\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source) {\n let from = node2.source.input.from;\n if (from && !already[from]) {\n already[from] = true;\n let fromUrl = this.usesFileUrls ? this.toFileUrl(from) : this.toUrl(this.path(from));\n this.map.setSourceContent(fromUrl, node2.source.input.css);\n }\n }\n });\n } else if (this.css) {\n let from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\";\n this.map.setSourceContent(from, this.css);\n }\n }\n sourcePath(node2) {\n if (this.mapOpts.from) {\n return this.toUrl(this.mapOpts.from);\n } else if (this.usesFileUrls) {\n return this.toFileUrl(node2.source.input.from);\n } else {\n return this.toUrl(this.path(node2.source.input.from));\n }\n }\n toBase64(str) {\n if (Buffer) {\n return Buffer.from(str).toString(\"base64\");\n } else {\n return window.btoa(unescape(encodeURIComponent(str)));\n }\n }\n toFileUrl(path) {\n let cached = this.memoizedFileURLs.get(path);\n if (cached) return cached;\n if (pathToFileURL) {\n let fileURL = pathToFileURL(path).toString();\n this.memoizedFileURLs.set(path, fileURL);\n return fileURL;\n } else {\n throw new Error(\n \"`map.absolute` option is not available in this PostCSS build\"\n );\n }\n }\n toUrl(path) {\n let cached = this.memoizedURLs.get(path);\n if (cached) return cached;\n if (sep === \"\\\\\") {\n path = path.replace(/\\\\/g, \"/\");\n }\n let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent);\n this.memoizedURLs.set(path, url);\n return url;\n }\n};\nvar mapGenerator = MapGenerator$2;\nlet Node$2 = node;\nlet Comment$4 = class Comment2 extends Node$2 {\n constructor(defaults) {\n super(defaults);\n this.type = \"comment\";\n }\n};\nvar comment = Comment$4;\nComment$4.default = Comment$4;\nlet { isClean: isClean$1, my: my$1 } = symbols;\nlet Declaration$3 = declaration;\nlet Comment$3 = comment;\nlet Node$1 = node;\nlet parse$4, Rule$4, AtRule$4, Root$6;\nfunction cleanSource(nodes) {\n return nodes.map((i2) => {\n if (i2.nodes) i2.nodes = cleanSource(i2.nodes);\n delete i2.source;\n return i2;\n });\n}\nfunction markDirtyUp(node2) {\n node2[isClean$1] = false;\n if (node2.proxyOf.nodes) {\n for (let i2 of node2.proxyOf.nodes) {\n markDirtyUp(i2);\n }\n }\n}\nlet Container$7 = class Container2 extends Node$1 {\n append(...children) {\n for (let child of children) {\n let nodes = this.normalize(child, this.last);\n for (let node2 of nodes) this.proxyOf.nodes.push(node2);\n }\n this.markDirty();\n return this;\n }\n cleanRaws(keepBetween) {\n super.cleanRaws(keepBetween);\n if (this.nodes) {\n for (let node2 of this.nodes) node2.cleanRaws(keepBetween);\n }\n }\n each(callback) {\n if (!this.proxyOf.nodes) return void 0;\n let iterator = this.getIterator();\n let index2, result2;\n while (this.indexes[iterator] < this.proxyOf.nodes.length) {\n index2 = this.indexes[iterator];\n result2 = callback(this.proxyOf.nodes[index2], index2);\n if (result2 === false) break;\n this.indexes[iterator] += 1;\n }\n delete this.indexes[iterator];\n return result2;\n }\n every(condition) {\n return this.nodes.every(condition);\n }\n getIterator() {\n if (!this.lastEach) this.lastEach = 0;\n if (!this.indexes) this.indexes = {};\n this.lastEach += 1;\n let iterator = this.lastEach;\n this.indexes[iterator] = 0;\n return iterator;\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (!node2[prop]) {\n return node2[prop];\n } else if (prop === \"each\" || typeof prop === \"string\" && prop.startsWith(\"walk\")) {\n return (...args) => {\n return node2[prop](\n ...args.map((i2) => {\n if (typeof i2 === \"function\") {\n return (child, index2) => i2(child.toProxy(), index2);\n } else {\n return i2;\n }\n })\n );\n };\n } else if (prop === \"every\" || prop === \"some\") {\n return (cb) => {\n return node2[prop](\n (child, ...other) => cb(child.toProxy(), ...other)\n );\n };\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else if (prop === \"nodes\") {\n return node2.nodes.map((i2) => i2.toProxy());\n } else if (prop === \"first\" || prop === \"last\") {\n return node2[prop].toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"name\" || prop === \"params\" || prop === \"selector\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n index(child) {\n if (typeof child === \"number\") return child;\n if (child.proxyOf) child = child.proxyOf;\n return this.proxyOf.nodes.indexOf(child);\n }\n insertAfter(exist, add) {\n let existIndex = this.index(exist);\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex < index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n insertBefore(exist, add) {\n let existIndex = this.index(exist);\n let type = existIndex === 0 ? \"prepend\" : false;\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex <= index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n normalize(nodes, sample) {\n if (typeof nodes === \"string\") {\n nodes = cleanSource(parse$4(nodes).nodes);\n } else if (typeof nodes === \"undefined\") {\n nodes = [];\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type === \"root\" && this.type !== \"document\") {\n nodes = nodes.nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type) {\n nodes = [nodes];\n } else if (nodes.prop) {\n if (typeof nodes.value === \"undefined\") {\n throw new Error(\"Value field is missed in node creation\");\n } else if (typeof nodes.value !== \"string\") {\n nodes.value = String(nodes.value);\n }\n nodes = [new Declaration$3(nodes)];\n } else if (nodes.selector) {\n nodes = [new Rule$4(nodes)];\n } else if (nodes.name) {\n nodes = [new AtRule$4(nodes)];\n } else if (nodes.text) {\n nodes = [new Comment$3(nodes)];\n } else {\n throw new Error(\"Unknown node type in node creation\");\n }\n let processed = nodes.map((i2) => {\n if (!i2[my$1]) Container2.rebuild(i2);\n i2 = i2.proxyOf;\n if (i2.parent) i2.parent.removeChild(i2);\n if (i2[isClean$1]) markDirtyUp(i2);\n if (typeof i2.raws.before === \"undefined\") {\n if (sample && typeof sample.raws.before !== \"undefined\") {\n i2.raws.before = sample.raws.before.replace(/\\S/g, \"\");\n }\n }\n i2.parent = this.proxyOf;\n return i2;\n });\n return processed;\n }\n prepend(...children) {\n children = children.reverse();\n for (let child of children) {\n let nodes = this.normalize(child, this.first, \"prepend\").reverse();\n for (let node2 of nodes) this.proxyOf.nodes.unshift(node2);\n for (let id in this.indexes) {\n this.indexes[id] = this.indexes[id] + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n push(child) {\n child.parent = this;\n this.proxyOf.nodes.push(child);\n return this;\n }\n removeAll() {\n for (let node2 of this.proxyOf.nodes) node2.parent = void 0;\n this.proxyOf.nodes = [];\n this.markDirty();\n return this;\n }\n removeChild(child) {\n child = this.index(child);\n this.proxyOf.nodes[child].parent = void 0;\n this.proxyOf.nodes.splice(child, 1);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (index2 >= child) {\n this.indexes[id] = index2 - 1;\n }\n }\n this.markDirty();\n return this;\n }\n replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {};\n }\n this.walkDecls((decl) => {\n if (opts.props && !opts.props.includes(decl.prop)) return;\n if (opts.fast && !decl.value.includes(opts.fast)) return;\n decl.value = decl.value.replace(pattern, callback);\n });\n this.markDirty();\n return this;\n }\n some(condition) {\n return this.nodes.some(condition);\n }\n walk(callback) {\n return this.each((child, i2) => {\n let result2;\n try {\n result2 = callback(child, i2);\n } catch (e2) {\n throw child.addToError(e2);\n }\n if (result2 !== false && child.walk) {\n result2 = child.walk(callback);\n }\n return result2;\n });\n }\n walkAtRules(name, callback) {\n if (!callback) {\n callback = name;\n return this.walk((child, i2) => {\n if (child.type === \"atrule\") {\n return callback(child, i2);\n }\n });\n }\n if (name instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && name.test(child.name)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && child.name === name) {\n return callback(child, i2);\n }\n });\n }\n walkComments(callback) {\n return this.walk((child, i2) => {\n if (child.type === \"comment\") {\n return callback(child, i2);\n }\n });\n }\n walkDecls(prop, callback) {\n if (!callback) {\n callback = prop;\n return this.walk((child, i2) => {\n if (child.type === \"decl\") {\n return callback(child, i2);\n }\n });\n }\n if (prop instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && prop.test(child.prop)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && child.prop === prop) {\n return callback(child, i2);\n }\n });\n }\n walkRules(selector, callback) {\n if (!callback) {\n callback = selector;\n return this.walk((child, i2) => {\n if (child.type === \"rule\") {\n return callback(child, i2);\n }\n });\n }\n if (selector instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && selector.test(child.selector)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && child.selector === selector) {\n return callback(child, i2);\n }\n });\n }\n get first() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[0];\n }\n get last() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n }\n};\nContainer$7.registerParse = (dependant) => {\n parse$4 = dependant;\n};\nContainer$7.registerRule = (dependant) => {\n Rule$4 = dependant;\n};\nContainer$7.registerAtRule = (dependant) => {\n AtRule$4 = dependant;\n};\nContainer$7.registerRoot = (dependant) => {\n Root$6 = dependant;\n};\nvar container = Container$7;\nContainer$7.default = Container$7;\nContainer$7.rebuild = (node2) => {\n if (node2.type === \"atrule\") {\n Object.setPrototypeOf(node2, AtRule$4.prototype);\n } else if (node2.type === \"rule\") {\n Object.setPrototypeOf(node2, Rule$4.prototype);\n } else if (node2.type === \"decl\") {\n Object.setPrototypeOf(node2, Declaration$3.prototype);\n } else if (node2.type === \"comment\") {\n Object.setPrototypeOf(node2, Comment$3.prototype);\n } else if (node2.type === \"root\") {\n Object.setPrototypeOf(node2, Root$6.prototype);\n }\n node2[my$1] = true;\n if (node2.nodes) {\n node2.nodes.forEach((child) => {\n Container$7.rebuild(child);\n });\n }\n};\nlet Container$6 = container;\nlet LazyResult$4, Processor$3;\nlet Document$3 = class Document23 extends Container$6 {\n constructor(defaults) {\n super({ type: \"document\", ...defaults });\n if (!this.nodes) {\n this.nodes = [];\n }\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$4(new Processor$3(), this, opts);\n return lazy.stringify();\n }\n};\nDocument$3.registerLazyResult = (dependant) => {\n LazyResult$4 = dependant;\n};\nDocument$3.registerProcessor = (dependant) => {\n Processor$3 = dependant;\n};\nvar document$1 = Document$3;\nDocument$3.default = Document$3;\nlet printed = {};\nvar warnOnce$2 = function warnOnce2(message) {\n if (printed[message]) return;\n printed[message] = true;\n if (typeof console !== \"undefined\" && console.warn) {\n console.warn(message);\n }\n};\nlet Warning$2 = class Warning2 {\n constructor(text, opts = {}) {\n this.type = \"warning\";\n this.text = text;\n if (opts.node && opts.node.source) {\n let range = opts.node.rangeBy(opts);\n this.line = range.start.line;\n this.column = range.start.column;\n this.endLine = range.end.line;\n this.endColumn = range.end.column;\n }\n for (let opt in opts) this[opt] = opts[opt];\n }\n toString() {\n if (this.node) {\n return this.node.error(this.text, {\n index: this.index,\n plugin: this.plugin,\n word: this.word\n }).message;\n }\n if (this.plugin) {\n return this.plugin + \": \" + this.text;\n }\n return this.text;\n }\n};\nvar warning = Warning$2;\nWarning$2.default = Warning$2;\nlet Warning$1 = warning;\nlet Result$3 = class Result2 {\n constructor(processor2, root2, opts) {\n this.processor = processor2;\n this.messages = [];\n this.root = root2;\n this.opts = opts;\n this.css = void 0;\n this.map = void 0;\n }\n toString() {\n return this.css;\n }\n warn(text, opts = {}) {\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin;\n }\n }\n let warning2 = new Warning$1(text, opts);\n this.messages.push(warning2);\n return warning2;\n }\n warnings() {\n return this.messages.filter((i2) => i2.type === \"warning\");\n }\n get content() {\n return this.css;\n }\n};\nvar result = Result$3;\nResult$3.default = Result$3;\nconst SINGLE_QUOTE = \"'\".charCodeAt(0);\nconst DOUBLE_QUOTE = '\"'.charCodeAt(0);\nconst BACKSLASH = \"\\\\\".charCodeAt(0);\nconst SLASH = \"/\".charCodeAt(0);\nconst NEWLINE = \"\\n\".charCodeAt(0);\nconst SPACE = \" \".charCodeAt(0);\nconst FEED = \"\\f\".charCodeAt(0);\nconst TAB = \"\t\".charCodeAt(0);\nconst CR = \"\\r\".charCodeAt(0);\nconst OPEN_SQUARE = \"[\".charCodeAt(0);\nconst CLOSE_SQUARE = \"]\".charCodeAt(0);\nconst OPEN_PARENTHESES = \"(\".charCodeAt(0);\nconst CLOSE_PARENTHESES = \")\".charCodeAt(0);\nconst OPEN_CURLY = \"{\".charCodeAt(0);\nconst CLOSE_CURLY = \"}\".charCodeAt(0);\nconst SEMICOLON = \";\".charCodeAt(0);\nconst ASTERISK = \"*\".charCodeAt(0);\nconst COLON = \":\".charCodeAt(0);\nconst AT = \"@\".charCodeAt(0);\nconst RE_AT_END = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g;\nconst RE_WORD_END = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g;\nconst RE_BAD_BRACKET = /.[\\r\\n\"'(/\\\\]/;\nconst RE_HEX_ESCAPE = /[\\da-f]/i;\nvar tokenize = function tokenizer2(input2, options = {}) {\n let css = input2.css.valueOf();\n let ignore = options.ignoreErrors;\n let code, next, quote, content, escape;\n let escaped, escapePos, prev, n2, currentToken;\n let length = css.length;\n let pos = 0;\n let buffer = [];\n let returned = [];\n function position() {\n return pos;\n }\n function unclosed(what) {\n throw input2.error(\"Unclosed \" + what, pos);\n }\n function endOfFile() {\n return returned.length === 0 && pos >= length;\n }\n function nextToken(opts) {\n if (returned.length) return returned.pop();\n if (pos >= length) return;\n let ignoreUnclosed = opts ? opts.ignoreUnclosed : false;\n code = css.charCodeAt(pos);\n switch (code) {\n case NEWLINE:\n case SPACE:\n case TAB:\n case CR:\n case FEED: {\n next = pos;\n do {\n next += 1;\n code = css.charCodeAt(next);\n } while (code === SPACE || code === NEWLINE || code === TAB || code === CR || code === FEED);\n currentToken = [\"space\", css.slice(pos, next)];\n pos = next - 1;\n break;\n }\n case OPEN_SQUARE:\n case CLOSE_SQUARE:\n case OPEN_CURLY:\n case CLOSE_CURLY:\n case COLON:\n case SEMICOLON:\n case CLOSE_PARENTHESES: {\n let controlChar = String.fromCharCode(code);\n currentToken = [controlChar, controlChar, pos];\n break;\n }\n case OPEN_PARENTHESES: {\n prev = buffer.length ? buffer.pop()[1] : \"\";\n n2 = css.charCodeAt(pos + 1);\n if (prev === \"url\" && n2 !== SINGLE_QUOTE && n2 !== DOUBLE_QUOTE && n2 !== SPACE && n2 !== NEWLINE && n2 !== TAB && n2 !== FEED && n2 !== CR) {\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(\")\", next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos;\n break;\n } else {\n unclosed(\"bracket\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"brackets\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n next = css.indexOf(\")\", pos + 1);\n content = css.slice(pos, next + 1);\n if (next === -1 || RE_BAD_BRACKET.test(content)) {\n currentToken = [\"(\", \"(\", pos];\n } else {\n currentToken = [\"brackets\", content, pos, next];\n pos = next;\n }\n }\n break;\n }\n case SINGLE_QUOTE:\n case DOUBLE_QUOTE: {\n quote = code === SINGLE_QUOTE ? \"'\" : '\"';\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(quote, next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos + 1;\n break;\n } else {\n unclosed(\"string\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"string\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case AT: {\n RE_AT_END.lastIndex = pos + 1;\n RE_AT_END.test(css);\n if (RE_AT_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_AT_END.lastIndex - 2;\n }\n currentToken = [\"at-word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case BACKSLASH: {\n next = pos;\n escape = true;\n while (css.charCodeAt(next + 1) === BACKSLASH) {\n next += 1;\n escape = !escape;\n }\n code = css.charCodeAt(next + 1);\n if (escape && code !== SLASH && code !== SPACE && code !== NEWLINE && code !== TAB && code !== CR && code !== FEED) {\n next += 1;\n if (RE_HEX_ESCAPE.test(css.charAt(next))) {\n while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {\n next += 1;\n }\n if (css.charCodeAt(next + 1) === SPACE) {\n next += 1;\n }\n }\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n default: {\n if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {\n next = css.indexOf(\"*/\", pos + 2) + 1;\n if (next === 0) {\n if (ignore || ignoreUnclosed) {\n next = css.length;\n } else {\n unclosed(\"comment\");\n }\n }\n currentToken = [\"comment\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n RE_WORD_END.lastIndex = pos + 1;\n RE_WORD_END.test(css);\n if (RE_WORD_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_WORD_END.lastIndex - 2;\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n buffer.push(currentToken);\n pos = next;\n }\n break;\n }\n }\n pos++;\n return currentToken;\n }\n function back(token) {\n returned.push(token);\n }\n return {\n back,\n endOfFile,\n nextToken,\n position\n };\n};\nlet Container$5 = container;\nlet AtRule$3 = class AtRule2 extends Container$5 {\n constructor(defaults) {\n super(defaults);\n this.type = \"atrule\";\n }\n append(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.append(...children);\n }\n prepend(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.prepend(...children);\n }\n};\nvar atRule = AtRule$3;\nAtRule$3.default = AtRule$3;\nContainer$5.registerAtRule(AtRule$3);\nlet Container$4 = container;\nlet LazyResult$3, Processor$2;\nlet Root$5 = class Root2 extends Container$4 {\n constructor(defaults) {\n super(defaults);\n this.type = \"root\";\n if (!this.nodes) this.nodes = [];\n }\n normalize(child, sample, type) {\n let nodes = super.normalize(child);\n if (sample) {\n if (type === \"prepend\") {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before;\n } else {\n delete sample.raws.before;\n }\n } else if (this.first !== sample) {\n for (let node2 of nodes) {\n node2.raws.before = sample.raws.before;\n }\n }\n }\n return nodes;\n }\n removeChild(child, ignore) {\n let index2 = this.index(child);\n if (!ignore && index2 === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index2].raws.before;\n }\n return super.removeChild(child);\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$3(new Processor$2(), this, opts);\n return lazy.stringify();\n }\n};\nRoot$5.registerLazyResult = (dependant) => {\n LazyResult$3 = dependant;\n};\nRoot$5.registerProcessor = (dependant) => {\n Processor$2 = dependant;\n};\nvar root = Root$5;\nRoot$5.default = Root$5;\nContainer$4.registerRoot(Root$5);\nlet list$2 = {\n comma(string) {\n return list$2.split(string, [\",\"], true);\n },\n space(string) {\n let spaces = [\" \", \"\\n\", \"\t\"];\n return list$2.split(string, spaces);\n },\n split(string, separators, last) {\n let array = [];\n let current = \"\";\n let split = false;\n let func = 0;\n let inQuote = false;\n let prevQuote = \"\";\n let escape = false;\n for (let letter of string) {\n if (escape) {\n escape = false;\n } else if (letter === \"\\\\\") {\n escape = true;\n } else if (inQuote) {\n if (letter === prevQuote) {\n inQuote = false;\n }\n } else if (letter === '\"' || letter === \"'\") {\n inQuote = true;\n prevQuote = letter;\n } else if (letter === \"(\") {\n func += 1;\n } else if (letter === \")\") {\n if (func > 0) func -= 1;\n } else if (func === 0) {\n if (separators.includes(letter)) split = true;\n }\n if (split) {\n if (current !== \"\") array.push(current.trim());\n current = \"\";\n split = false;\n } else {\n current += letter;\n }\n }\n if (last || current !== \"\") array.push(current.trim());\n return array;\n }\n};\nvar list_1 = list$2;\nlist$2.default = list$2;\nlet Container$3 = container;\nlet list$1 = list_1;\nlet Rule$3 = class Rule2 extends Container$3 {\n constructor(defaults) {\n super(defaults);\n this.type = \"rule\";\n if (!this.nodes) this.nodes = [];\n }\n get selectors() {\n return list$1.comma(this.selector);\n }\n set selectors(values) {\n let match = this.selector ? this.selector.match(/,\\s*/) : null;\n let sep2 = match ? match[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n this.selector = values.join(sep2);\n }\n};\nvar rule = Rule$3;\nRule$3.default = Rule$3;\nContainer$3.registerRule(Rule$3);\nlet Declaration$2 = declaration;\nlet tokenizer22 = tokenize;\nlet Comment$2 = comment;\nlet AtRule$2 = atRule;\nlet Root$4 = root;\nlet Rule$2 = rule;\nconst SAFE_COMMENT_NEIGHBOR = {\n empty: true,\n space: true\n};\nfunction findLastWithPosition(tokens) {\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n let token = tokens[i2];\n let pos = token[3] || token[2];\n if (pos) return pos;\n }\n}\nlet Parser$1 = class Parser2 {\n constructor(input2) {\n this.input = input2;\n this.root = new Root$4();\n this.current = this.root;\n this.spaces = \"\";\n this.semicolon = false;\n this.createTokenizer();\n this.root.source = { input: input2, start: { column: 1, line: 1, offset: 0 } };\n }\n atrule(token) {\n let node2 = new AtRule$2();\n node2.name = token[1].slice(1);\n if (node2.name === \"\") {\n this.unnamedAtrule(node2, token);\n }\n this.init(node2, token[2]);\n let type;\n let prev;\n let shift;\n let last = false;\n let open = false;\n let params = [];\n let brackets = [];\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n type = token[0];\n if (type === \"(\" || type === \"[\") {\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (type === \"{\" && brackets.length > 0) {\n brackets.push(\"}\");\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n }\n if (brackets.length === 0) {\n if (type === \";\") {\n node2.source.end = this.getPosition(token[2]);\n node2.source.end.offset++;\n this.semicolon = true;\n break;\n } else if (type === \"{\") {\n open = true;\n break;\n } else if (type === \"}\") {\n if (params.length > 0) {\n shift = params.length - 1;\n prev = params[shift];\n while (prev && prev[0] === \"space\") {\n prev = params[--shift];\n }\n if (prev) {\n node2.source.end = this.getPosition(prev[3] || prev[2]);\n node2.source.end.offset++;\n }\n }\n this.end(token);\n break;\n } else {\n params.push(token);\n }\n } else {\n params.push(token);\n }\n if (this.tokenizer.endOfFile()) {\n last = true;\n break;\n }\n }\n node2.raws.between = this.spacesAndCommentsFromEnd(params);\n if (params.length) {\n node2.raws.afterName = this.spacesAndCommentsFromStart(params);\n this.raw(node2, \"params\", params);\n if (last) {\n token = params[params.length - 1];\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n this.spaces = node2.raws.between;\n node2.raws.between = \"\";\n }\n } else {\n node2.raws.afterName = \"\";\n node2.params = \"\";\n }\n if (open) {\n node2.nodes = [];\n this.current = node2;\n }\n }\n checkMissedSemicolon(tokens) {\n let colon = this.colon(tokens);\n if (colon === false) return;\n let founded = 0;\n let token;\n for (let j = colon - 1; j >= 0; j--) {\n token = tokens[j];\n if (token[0] !== \"space\") {\n founded += 1;\n if (founded === 2) break;\n }\n }\n throw this.input.error(\n \"Missed semicolon\",\n token[0] === \"word\" ? token[3] + 1 : token[2]\n );\n }\n colon(tokens) {\n let brackets = 0;\n let token, type, prev;\n for (let [i2, element] of tokens.entries()) {\n token = element;\n type = token[0];\n if (type === \"(\") {\n brackets += 1;\n }\n if (type === \")\") {\n brackets -= 1;\n }\n if (brackets === 0 && type === \":\") {\n if (!prev) {\n this.doubleColon(token);\n } else if (prev[0] === \"word\" && prev[1] === \"progid\") {\n continue;\n } else {\n return i2;\n }\n }\n prev = token;\n }\n return false;\n }\n comment(token) {\n let node2 = new Comment$2();\n this.init(node2, token[2]);\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n let text = token[1].slice(2, -2);\n if (/^\\s*$/.test(text)) {\n node2.text = \"\";\n node2.raws.left = text;\n node2.raws.right = \"\";\n } else {\n let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n node2.text = match[2];\n node2.raws.left = match[1];\n node2.raws.right = match[3];\n }\n }\n createTokenizer() {\n this.tokenizer = tokenizer22(this.input);\n }\n decl(tokens, customProperty) {\n let node2 = new Declaration$2();\n this.init(node2, tokens[0][2]);\n let last = tokens[tokens.length - 1];\n if (last[0] === \";\") {\n this.semicolon = true;\n tokens.pop();\n }\n node2.source.end = this.getPosition(\n last[3] || last[2] || findLastWithPosition(tokens)\n );\n node2.source.end.offset++;\n while (tokens[0][0] !== \"word\") {\n if (tokens.length === 1) this.unknownWord(tokens);\n node2.raws.before += tokens.shift()[1];\n }\n node2.source.start = this.getPosition(tokens[0][2]);\n node2.prop = \"\";\n while (tokens.length) {\n let type = tokens[0][0];\n if (type === \":\" || type === \"space\" || type === \"comment\") {\n break;\n }\n node2.prop += tokens.shift()[1];\n }\n node2.raws.between = \"\";\n let token;\n while (tokens.length) {\n token = tokens.shift();\n if (token[0] === \":\") {\n node2.raws.between += token[1];\n break;\n } else {\n if (token[0] === \"word\" && /\\w/.test(token[1])) {\n this.unknownWord([token]);\n }\n node2.raws.between += token[1];\n }\n }\n if (node2.prop[0] === \"_\" || node2.prop[0] === \"*\") {\n node2.raws.before += node2.prop[0];\n node2.prop = node2.prop.slice(1);\n }\n let firstSpaces = [];\n let next;\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n firstSpaces.push(tokens.shift());\n }\n this.precheckMissedSemicolon(tokens);\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n token = tokens[i2];\n if (token[1].toLowerCase() === \"!important\") {\n node2.important = true;\n let string = this.stringFrom(tokens, i2);\n string = this.spacesFromEnd(tokens) + string;\n if (string !== \" !important\") node2.raws.important = string;\n break;\n } else if (token[1].toLowerCase() === \"important\") {\n let cache = tokens.slice(0);\n let str = \"\";\n for (let j = i2; j > 0; j--) {\n let type = cache[j][0];\n if (str.trim().indexOf(\"!\") === 0 && type !== \"space\") {\n break;\n }\n str = cache.pop()[1] + str;\n }\n if (str.trim().indexOf(\"!\") === 0) {\n node2.important = true;\n node2.raws.important = str;\n tokens = cache;\n }\n }\n if (token[0] !== \"space\" && token[0] !== \"comment\") {\n break;\n }\n }\n let hasWord = tokens.some((i2) => i2[0] !== \"space\" && i2[0] !== \"comment\");\n if (hasWord) {\n node2.raws.between += firstSpaces.map((i2) => i2[1]).join(\"\");\n firstSpaces = [];\n }\n this.raw(node2, \"value\", firstSpaces.concat(tokens), customProperty);\n if (node2.value.includes(\":\") && !customProperty) {\n this.checkMissedSemicolon(tokens);\n }\n }\n doubleColon(token) {\n throw this.input.error(\n \"Double colon\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n emptyRule(token) {\n let node2 = new Rule$2();\n this.init(node2, token[2]);\n node2.selector = \"\";\n node2.raws.between = \"\";\n this.current = node2;\n }\n end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.semicolon = false;\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.spaces = \"\";\n if (this.current.parent) {\n this.current.source.end = this.getPosition(token[2]);\n this.current.source.end.offset++;\n this.current = this.current.parent;\n } else {\n this.unexpectedClose(token);\n }\n }\n endFile() {\n if (this.current.parent) this.unclosedBlock();\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.root.source.end = this.getPosition(this.tokenizer.position());\n }\n freeSemicolon(token) {\n this.spaces += token[1];\n if (this.current.nodes) {\n let prev = this.current.nodes[this.current.nodes.length - 1];\n if (prev && prev.type === \"rule\" && !prev.raws.ownSemicolon) {\n prev.raws.ownSemicolon = this.spaces;\n this.spaces = \"\";\n }\n }\n }\n // Helpers\n getPosition(offset) {\n let pos = this.input.fromOffset(offset);\n return {\n column: pos.col,\n line: pos.line,\n offset\n };\n }\n init(node2, offset) {\n this.current.push(node2);\n node2.source = {\n input: this.input,\n start: this.getPosition(offset)\n };\n node2.raws.before = this.spaces;\n this.spaces = \"\";\n if (node2.type !== \"comment\") this.semicolon = false;\n }\n other(start) {\n let end = false;\n let type = null;\n let colon = false;\n let bracket = null;\n let brackets = [];\n let customProperty = start[1].startsWith(\"--\");\n let tokens = [];\n let token = start;\n while (token) {\n type = token[0];\n tokens.push(token);\n if (type === \"(\" || type === \"[\") {\n if (!bracket) bracket = token;\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (customProperty && colon && type === \"{\") {\n if (!bracket) bracket = token;\n brackets.push(\"}\");\n } else if (brackets.length === 0) {\n if (type === \";\") {\n if (colon) {\n this.decl(tokens, customProperty);\n return;\n } else {\n break;\n }\n } else if (type === \"{\") {\n this.rule(tokens);\n return;\n } else if (type === \"}\") {\n this.tokenizer.back(tokens.pop());\n end = true;\n break;\n } else if (type === \":\") {\n colon = true;\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n if (brackets.length === 0) bracket = null;\n }\n token = this.tokenizer.nextToken();\n }\n if (this.tokenizer.endOfFile()) end = true;\n if (brackets.length > 0) this.unclosedBracket(bracket);\n if (end && colon) {\n if (!customProperty) {\n while (tokens.length) {\n token = tokens[tokens.length - 1][0];\n if (token !== \"space\" && token !== \"comment\") break;\n this.tokenizer.back(tokens.pop());\n }\n }\n this.decl(tokens, customProperty);\n } else {\n this.unknownWord(tokens);\n }\n }\n parse() {\n let token;\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n switch (token[0]) {\n case \"space\":\n this.spaces += token[1];\n break;\n case \";\":\n this.freeSemicolon(token);\n break;\n case \"}\":\n this.end(token);\n break;\n case \"comment\":\n this.comment(token);\n break;\n case \"at-word\":\n this.atrule(token);\n break;\n case \"{\":\n this.emptyRule(token);\n break;\n default:\n this.other(token);\n break;\n }\n }\n this.endFile();\n }\n precheckMissedSemicolon() {\n }\n raw(node2, prop, tokens, customProperty) {\n let token, type;\n let length = tokens.length;\n let value = \"\";\n let clean = true;\n let next, prev;\n for (let i2 = 0; i2 < length; i2 += 1) {\n token = tokens[i2];\n type = token[0];\n if (type === \"space\" && i2 === length - 1 && !customProperty) {\n clean = false;\n } else if (type === \"comment\") {\n prev = tokens[i2 - 1] ? tokens[i2 - 1][0] : \"empty\";\n next = tokens[i2 + 1] ? tokens[i2 + 1][0] : \"empty\";\n if (!SAFE_COMMENT_NEIGHBOR[prev] && !SAFE_COMMENT_NEIGHBOR[next]) {\n if (value.slice(-1) === \",\") {\n clean = false;\n } else {\n value += token[1];\n }\n } else {\n clean = false;\n }\n } else {\n value += token[1];\n }\n }\n if (!clean) {\n let raw = tokens.reduce((all, i2) => all + i2[1], \"\");\n node2.raws[prop] = { raw, value };\n }\n node2[prop] = value;\n }\n rule(tokens) {\n tokens.pop();\n let node2 = new Rule$2();\n this.init(node2, tokens[0][2]);\n node2.raws.between = this.spacesAndCommentsFromEnd(tokens);\n this.raw(node2, \"selector\", tokens);\n this.current = node2;\n }\n spacesAndCommentsFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\" && lastTokenType !== \"comment\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n // Errors\n spacesAndCommentsFromStart(tokens) {\n let next;\n let spaces = \"\";\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n spaces += tokens.shift()[1];\n }\n return spaces;\n }\n spacesFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n stringFrom(tokens, from) {\n let result2 = \"\";\n for (let i2 = from; i2 < tokens.length; i2++) {\n result2 += tokens[i2][1];\n }\n tokens.splice(from, tokens.length - from);\n return result2;\n }\n unclosedBlock() {\n let pos = this.current.source.start;\n throw this.input.error(\"Unclosed block\", pos.line, pos.column);\n }\n unclosedBracket(bracket) {\n throw this.input.error(\n \"Unclosed bracket\",\n { offset: bracket[2] },\n { offset: bracket[2] + 1 }\n );\n }\n unexpectedClose(token) {\n throw this.input.error(\n \"Unexpected }\",\n { offset: token[2] },\n { offset: token[2] + 1 }\n );\n }\n unknownWord(tokens) {\n throw this.input.error(\n \"Unknown word\",\n { offset: tokens[0][2] },\n { offset: tokens[0][2] + tokens[0][1].length }\n );\n }\n unnamedAtrule(node2, token) {\n throw this.input.error(\n \"At-rule without name\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n};\nvar parser = Parser$1;\nlet Container$2 = container;\nlet Parser22 = parser;\nlet Input$2 = input;\nfunction parse$3(css, opts) {\n let input2 = new Input$2(css, opts);\n let parser2 = new Parser22(input2);\n try {\n parser2.parse();\n } catch (e2) {\n if (process.env.NODE_ENV !== \"production\") {\n if (e2.name === \"CssSyntaxError\" && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser\";\n } else if (/\\.sass/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser\";\n } else if (/\\.less$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser\";\n }\n }\n }\n throw e2;\n }\n return parser2.root;\n}\nvar parse_1 = parse$3;\nparse$3.default = parse$3;\nContainer$2.registerParse(parse$3);\nlet { isClean, my } = symbols;\nlet MapGenerator$1 = mapGenerator;\nlet stringify$2 = stringify_1;\nlet Container$1 = container;\nlet Document$2 = document$1;\nlet warnOnce$1 = warnOnce$2;\nlet Result$2 = result;\nlet parse$2 = parse_1;\nlet Root$3 = root;\nconst TYPE_TO_CLASS_NAME = {\n atrule: \"AtRule\",\n comment: \"Comment\",\n decl: \"Declaration\",\n document: \"Document\",\n root: \"Root\",\n rule: \"Rule\"\n};\nconst PLUGIN_PROPS = {\n AtRule: true,\n AtRuleExit: true,\n Comment: true,\n CommentExit: true,\n Declaration: true,\n DeclarationExit: true,\n Document: true,\n DocumentExit: true,\n Once: true,\n OnceExit: true,\n postcssPlugin: true,\n prepare: true,\n Root: true,\n RootExit: true,\n Rule: true,\n RuleExit: true\n};\nconst NOT_VISITORS = {\n Once: true,\n postcssPlugin: true,\n prepare: true\n};\nconst CHILDREN = 0;\nfunction isPromise(obj) {\n return typeof obj === \"object\" && typeof obj.then === \"function\";\n}\nfunction getEvents(node2) {\n let key = false;\n let type = TYPE_TO_CLASS_NAME[node2.type];\n if (node2.type === \"decl\") {\n key = node2.prop.toLowerCase();\n } else if (node2.type === \"atrule\") {\n key = node2.name.toLowerCase();\n }\n if (key && node2.append) {\n return [\n type,\n type + \"-\" + key,\n CHILDREN,\n type + \"Exit\",\n type + \"Exit-\" + key\n ];\n } else if (key) {\n return [type, type + \"-\" + key, type + \"Exit\", type + \"Exit-\" + key];\n } else if (node2.append) {\n return [type, CHILDREN, type + \"Exit\"];\n } else {\n return [type, type + \"Exit\"];\n }\n}\nfunction toStack(node2) {\n let events;\n if (node2.type === \"document\") {\n events = [\"Document\", CHILDREN, \"DocumentExit\"];\n } else if (node2.type === \"root\") {\n events = [\"Root\", CHILDREN, \"RootExit\"];\n } else {\n events = getEvents(node2);\n }\n return {\n eventIndex: 0,\n events,\n iterator: 0,\n node: node2,\n visitorIndex: 0,\n visitors: []\n };\n}\nfunction cleanMarks(node2) {\n node2[isClean] = false;\n if (node2.nodes) node2.nodes.forEach((i2) => cleanMarks(i2));\n return node2;\n}\nlet postcss$2 = {};\nlet LazyResult$2 = class LazyResult2 {\n constructor(processor2, css, opts) {\n this.stringified = false;\n this.processed = false;\n let root2;\n if (typeof css === \"object\" && css !== null && (css.type === \"root\" || css.type === \"document\")) {\n root2 = cleanMarks(css);\n } else if (css instanceof LazyResult2 || css instanceof Result$2) {\n root2 = cleanMarks(css.root);\n if (css.map) {\n if (typeof opts.map === \"undefined\") opts.map = {};\n if (!opts.map.inline) opts.map.inline = false;\n opts.map.prev = css.map;\n }\n } else {\n let parser2 = parse$2;\n if (opts.syntax) parser2 = opts.syntax.parse;\n if (opts.parser) parser2 = opts.parser;\n if (parser2.parse) parser2 = parser2.parse;\n try {\n root2 = parser2(css, opts);\n } catch (error) {\n this.processed = true;\n this.error = error;\n }\n if (root2 && !root2[my]) {\n Container$1.rebuild(root2);\n }\n }\n this.result = new Result$2(processor2, root2, opts);\n this.helpers = { ...postcss$2, postcss: postcss$2, result: this.result };\n this.plugins = this.processor.plugins.map((plugin22) => {\n if (typeof plugin22 === \"object\" && plugin22.prepare) {\n return { ...plugin22, ...plugin22.prepare(this.result) };\n } else {\n return plugin22;\n }\n });\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n if (this.processed) return Promise.resolve(this.result);\n if (!this.processing) {\n this.processing = this.runAsync();\n }\n return this.processing;\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n getAsyncError() {\n throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n }\n handleError(error, node2) {\n let plugin22 = this.result.lastPlugin;\n try {\n if (node2) node2.addToError(error);\n this.error = error;\n if (error.name === \"CssSyntaxError\" && !error.plugin) {\n error.plugin = plugin22.postcssPlugin;\n error.setMessage();\n } else if (plugin22.postcssVersion) {\n if (process.env.NODE_ENV !== \"production\") {\n let pluginName = plugin22.postcssPlugin;\n let pluginVer = plugin22.postcssVersion;\n let runtimeVer = this.result.processor.version;\n let a2 = pluginVer.split(\".\");\n let b = runtimeVer.split(\".\");\n if (a2[0] !== b[0] || parseInt(a2[1]) > parseInt(b[1])) {\n console.error(\n \"Unknown error from PostCSS plugin. Your current PostCSS version is \" + runtimeVer + \", but \" + pluginName + \" uses \" + pluginVer + \". Perhaps this is the source of the error below.\"\n );\n }\n }\n }\n } catch (err) {\n if (console && console.error) console.error(err);\n }\n return error;\n }\n prepareVisitors() {\n this.listeners = {};\n let add = (plugin22, type, cb) => {\n if (!this.listeners[type]) this.listeners[type] = [];\n this.listeners[type].push([plugin22, cb]);\n };\n for (let plugin22 of this.plugins) {\n if (typeof plugin22 === \"object\") {\n for (let event in plugin22) {\n if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) {\n throw new Error(\n `Unknown event ${event} in ${plugin22.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`\n );\n }\n if (!NOT_VISITORS[event]) {\n if (typeof plugin22[event] === \"object\") {\n for (let filter in plugin22[event]) {\n if (filter === \"*\") {\n add(plugin22, event, plugin22[event][filter]);\n } else {\n add(\n plugin22,\n event + \"-\" + filter.toLowerCase(),\n plugin22[event][filter]\n );\n }\n }\n } else if (typeof plugin22[event] === \"function\") {\n add(plugin22, event, plugin22[event]);\n }\n }\n }\n }\n }\n this.hasListener = Object.keys(this.listeners).length > 0;\n }\n async runAsync() {\n this.plugin = 0;\n for (let i2 = 0; i2 < this.plugins.length; i2++) {\n let plugin22 = this.plugins[i2];\n let promise = this.runOnRoot(plugin22);\n if (isPromise(promise)) {\n try {\n await promise;\n } catch (error) {\n throw this.handleError(error);\n }\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean]) {\n root2[isClean] = true;\n let stack = [toStack(root2)];\n while (stack.length > 0) {\n let promise = this.visitTick(stack);\n if (isPromise(promise)) {\n try {\n await promise;\n } catch (e2) {\n let node2 = stack[stack.length - 1].node;\n throw this.handleError(e2, node2);\n }\n }\n }\n }\n if (this.listeners.OnceExit) {\n for (let [plugin22, visitor] of this.listeners.OnceExit) {\n this.result.lastPlugin = plugin22;\n try {\n if (root2.type === \"document\") {\n let roots = root2.nodes.map(\n (subRoot) => visitor(subRoot, this.helpers)\n );\n await Promise.all(roots);\n } else {\n await visitor(root2, this.helpers);\n }\n } catch (e2) {\n throw this.handleError(e2);\n }\n }\n }\n }\n this.processed = true;\n return this.stringify();\n }\n runOnRoot(plugin22) {\n this.result.lastPlugin = plugin22;\n try {\n if (typeof plugin22 === \"object\" && plugin22.Once) {\n if (this.result.root.type === \"document\") {\n let roots = this.result.root.nodes.map(\n (root2) => plugin22.Once(root2, this.helpers)\n );\n if (isPromise(roots[0])) {\n return Promise.all(roots);\n }\n return roots;\n }\n return plugin22.Once(this.result.root, this.helpers);\n } else if (typeof plugin22 === \"function\") {\n return plugin22(this.result.root, this.result);\n }\n } catch (error) {\n throw this.handleError(error);\n }\n }\n stringify() {\n if (this.error) throw this.error;\n if (this.stringified) return this.result;\n this.stringified = true;\n this.sync();\n let opts = this.result.opts;\n let str = stringify$2;\n if (opts.syntax) str = opts.syntax.stringify;\n if (opts.stringifier) str = opts.stringifier;\n if (str.stringify) str = str.stringify;\n let map = new MapGenerator$1(str, this.result.root, this.result.opts);\n let data = map.generate();\n this.result.css = data[0];\n this.result.map = data[1];\n return this.result;\n }\n sync() {\n if (this.error) throw this.error;\n if (this.processed) return this.result;\n this.processed = true;\n if (this.processing) {\n throw this.getAsyncError();\n }\n for (let plugin22 of this.plugins) {\n let promise = this.runOnRoot(plugin22);\n if (isPromise(promise)) {\n throw this.getAsyncError();\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean]) {\n root2[isClean] = true;\n this.walkSync(root2);\n }\n if (this.listeners.OnceExit) {\n if (root2.type === \"document\") {\n for (let subRoot of root2.nodes) {\n this.visitSync(this.listeners.OnceExit, subRoot);\n }\n } else {\n this.visitSync(this.listeners.OnceExit, root2);\n }\n }\n }\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this.opts)) {\n warnOnce$1(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this.css;\n }\n visitSync(visitors, node2) {\n for (let [plugin22, visitor] of visitors) {\n this.result.lastPlugin = plugin22;\n let promise;\n try {\n promise = visitor(node2, this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2.proxyOf);\n }\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n return true;\n }\n if (isPromise(promise)) {\n throw this.getAsyncError();\n }\n }\n }\n visitTick(stack) {\n let visit2 = stack[stack.length - 1];\n let { node: node2, visitors } = visit2;\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n stack.pop();\n return;\n }\n if (visitors.length > 0 && visit2.visitorIndex < visitors.length) {\n let [plugin22, visitor] = visitors[visit2.visitorIndex];\n visit2.visitorIndex += 1;\n if (visit2.visitorIndex === visitors.length) {\n visit2.visitors = [];\n visit2.visitorIndex = 0;\n }\n this.result.lastPlugin = plugin22;\n try {\n return visitor(node2.toProxy(), this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2);\n }\n }\n if (visit2.iterator !== 0) {\n let iterator = visit2.iterator;\n let child;\n while (child = node2.nodes[node2.indexes[iterator]]) {\n node2.indexes[iterator] += 1;\n if (!child[isClean]) {\n child[isClean] = true;\n stack.push(toStack(child));\n return;\n }\n }\n visit2.iterator = 0;\n delete node2.indexes[iterator];\n }\n let events = visit2.events;\n while (visit2.eventIndex < events.length) {\n let event = events[visit2.eventIndex];\n visit2.eventIndex += 1;\n if (event === CHILDREN) {\n if (node2.nodes && node2.nodes.length) {\n node2[isClean] = true;\n visit2.iterator = node2.getIterator();\n }\n return;\n } else if (this.listeners[event]) {\n visit2.visitors = this.listeners[event];\n return;\n }\n }\n stack.pop();\n }\n walkSync(node2) {\n node2[isClean] = true;\n let events = getEvents(node2);\n for (let event of events) {\n if (event === CHILDREN) {\n if (node2.nodes) {\n node2.each((child) => {\n if (!child[isClean]) this.walkSync(child);\n });\n }\n } else {\n let visitors = this.listeners[event];\n if (visitors) {\n if (this.visitSync(visitors, node2.toProxy())) return;\n }\n }\n }\n }\n warnings() {\n return this.sync().warnings();\n }\n get content() {\n return this.stringify().content;\n }\n get css() {\n return this.stringify().css;\n }\n get map() {\n return this.stringify().map;\n }\n get messages() {\n return this.sync().messages;\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n return this.sync().root;\n }\n get [Symbol.toStringTag]() {\n return \"LazyResult\";\n }\n};\nLazyResult$2.registerPostcss = (dependant) => {\n postcss$2 = dependant;\n};\nvar lazyResult = LazyResult$2;\nLazyResult$2.default = LazyResult$2;\nRoot$3.registerLazyResult(LazyResult$2);\nDocument$2.registerLazyResult(LazyResult$2);\nlet MapGenerator22 = mapGenerator;\nlet stringify$1 = stringify_1;\nlet warnOnce22 = warnOnce$2;\nlet parse$1 = parse_1;\nconst Result$1 = result;\nlet NoWorkResult$1 = class NoWorkResult2 {\n constructor(processor2, css, opts) {\n css = css.toString();\n this.stringified = false;\n this._processor = processor2;\n this._css = css;\n this._opts = opts;\n this._map = void 0;\n let root2;\n let str = stringify$1;\n this.result = new Result$1(this._processor, root2, this._opts);\n this.result.css = css;\n let self = this;\n Object.defineProperty(this.result, \"root\", {\n get() {\n return self.root;\n }\n });\n let map = new MapGenerator22(str, root2, this._opts, css);\n if (map.isMap()) {\n let [generatedCSS, generatedMap] = map.generate();\n if (generatedCSS) {\n this.result.css = generatedCSS;\n }\n if (generatedMap) {\n this.result.map = generatedMap;\n }\n } else {\n map.clearAnnotation();\n this.result.css = map.css;\n }\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n return Promise.resolve(this.result);\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n sync() {\n if (this.error) throw this.error;\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this._opts)) {\n warnOnce22(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this._css;\n }\n warnings() {\n return [];\n }\n get content() {\n return this.result.css;\n }\n get css() {\n return this.result.css;\n }\n get map() {\n return this.result.map;\n }\n get messages() {\n return [];\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n if (this._root) {\n return this._root;\n }\n let root2;\n let parser2 = parse$1;\n try {\n root2 = parser2(this._css, this._opts);\n } catch (error) {\n this.error = error;\n }\n if (this.error) {\n throw this.error;\n } else {\n this._root = root2;\n return root2;\n }\n }\n get [Symbol.toStringTag]() {\n return \"NoWorkResult\";\n }\n};\nvar noWorkResult = NoWorkResult$1;\nNoWorkResult$1.default = NoWorkResult$1;\nlet NoWorkResult22 = noWorkResult;\nlet LazyResult$1 = lazyResult;\nlet Document$1 = document$1;\nlet Root$2 = root;\nlet Processor$1 = class Processor2 {\n constructor(plugins = []) {\n this.version = \"8.4.38\";\n this.plugins = this.normalize(plugins);\n }\n normalize(plugins) {\n let normalized = [];\n for (let i2 of plugins) {\n if (i2.postcss === true) {\n i2 = i2();\n } else if (i2.postcss) {\n i2 = i2.postcss;\n }\n if (typeof i2 === \"object\" && Array.isArray(i2.plugins)) {\n normalized = normalized.concat(i2.plugins);\n } else if (typeof i2 === \"object\" && i2.postcssPlugin) {\n normalized.push(i2);\n } else if (typeof i2 === \"function\") {\n normalized.push(i2);\n } else if (typeof i2 === \"object\" && (i2.parse || i2.stringify)) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error(\n \"PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.\"\n );\n }\n } else {\n throw new Error(i2 + \" is not a PostCSS plugin\");\n }\n }\n return normalized;\n }\n process(css, opts = {}) {\n if (!this.plugins.length && !opts.parser && !opts.stringifier && !opts.syntax) {\n return new NoWorkResult22(this, css, opts);\n } else {\n return new LazyResult$1(this, css, opts);\n }\n }\n use(plugin22) {\n this.plugins = this.plugins.concat(this.normalize([plugin22]));\n return this;\n }\n};\nvar processor = Processor$1;\nProcessor$1.default = Processor$1;\nRoot$2.registerProcessor(Processor$1);\nDocument$1.registerProcessor(Processor$1);\nlet Declaration$1 = declaration;\nlet PreviousMap22 = previousMap;\nlet Comment$1 = comment;\nlet AtRule$1 = atRule;\nlet Input$1 = input;\nlet Root$1 = root;\nlet Rule$1 = rule;\nfunction fromJSON$1(json, inputs) {\n if (Array.isArray(json)) return json.map((n2) => fromJSON$1(n2));\n let { inputs: ownInputs, ...defaults } = json;\n if (ownInputs) {\n inputs = [];\n for (let input2 of ownInputs) {\n let inputHydrated = { ...input2, __proto__: Input$1.prototype };\n if (inputHydrated.map) {\n inputHydrated.map = {\n ...inputHydrated.map,\n __proto__: PreviousMap22.prototype\n };\n }\n inputs.push(inputHydrated);\n }\n }\n if (defaults.nodes) {\n defaults.nodes = json.nodes.map((n2) => fromJSON$1(n2, inputs));\n }\n if (defaults.source) {\n let { inputId, ...source } = defaults.source;\n defaults.source = source;\n if (inputId != null) {\n defaults.source.input = inputs[inputId];\n }\n }\n if (defaults.type === \"root\") {\n return new Root$1(defaults);\n } else if (defaults.type === \"decl\") {\n return new Declaration$1(defaults);\n } else if (defaults.type === \"rule\") {\n return new Rule$1(defaults);\n } else if (defaults.type === \"comment\") {\n return new Comment$1(defaults);\n } else if (defaults.type === \"atrule\") {\n return new AtRule$1(defaults);\n } else {\n throw new Error(\"Unknown node type: \" + json.type);\n }\n}\nvar fromJSON_1 = fromJSON$1;\nfromJSON$1.default = fromJSON$1;\nlet CssSyntaxError22 = cssSyntaxError;\nlet Declaration22 = declaration;\nlet LazyResult22 = lazyResult;\nlet Container22 = container;\nlet Processor22 = processor;\nlet stringify = stringify_1;\nlet fromJSON = fromJSON_1;\nlet Document222 = document$1;\nlet Warning22 = warning;\nlet Comment22 = comment;\nlet AtRule22 = atRule;\nlet Result22 = result;\nlet Input22 = input;\nlet parse = parse_1;\nlet list = list_1;\nlet Rule22 = rule;\nlet Root22 = root;\nlet Node22 = node;\nfunction postcss(...plugins) {\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0];\n }\n return new Processor22(plugins);\n}\npostcss.plugin = function plugin2(name, initializer) {\n let warningPrinted = false;\n function creator(...args) {\n if (console && console.warn && !warningPrinted) {\n warningPrinted = true;\n console.warn(\n name + \": postcss.plugin was deprecated. Migration guide:\\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration\"\n );\n if (process.env.LANG && process.env.LANG.startsWith(\"cn\")) {\n console.warn(\n name + \": 里面 postcss.plugin 被弃用. 迁移指南:\\nhttps://www.w3ctech.com/topic/2226\"\n );\n }\n }\n let transformer = initializer(...args);\n transformer.postcssPlugin = name;\n transformer.postcssVersion = new Processor22().version;\n return transformer;\n }\n let cache;\n Object.defineProperty(creator, \"postcss\", {\n get() {\n if (!cache) cache = creator();\n return cache;\n }\n });\n creator.process = function(css, processOpts, pluginOpts) {\n return postcss([creator(pluginOpts)]).process(css, processOpts);\n };\n return creator;\n};\npostcss.stringify = stringify;\npostcss.parse = parse;\npostcss.fromJSON = fromJSON;\npostcss.list = list;\npostcss.comment = (defaults) => new Comment22(defaults);\npostcss.atRule = (defaults) => new AtRule22(defaults);\npostcss.decl = (defaults) => new Declaration22(defaults);\npostcss.rule = (defaults) => new Rule22(defaults);\npostcss.root = (defaults) => new Root22(defaults);\npostcss.document = (defaults) => new Document222(defaults);\npostcss.CssSyntaxError = CssSyntaxError22;\npostcss.Declaration = Declaration22;\npostcss.Container = Container22;\npostcss.Processor = Processor22;\npostcss.Document = Document222;\npostcss.Comment = Comment22;\npostcss.Warning = Warning22;\npostcss.AtRule = AtRule22;\npostcss.Result = Result22;\npostcss.Input = Input22;\npostcss.Rule = Rule22;\npostcss.Root = Root22;\npostcss.Node = Node22;\nLazyResult22.registerPostcss(postcss);\nvar postcss_1 = postcss;\npostcss.default = postcss;\nconst postcss$1 = /* @__PURE__ */ getDefaultExportFromCjs(postcss_1);\npostcss$1.stringify;\npostcss$1.fromJSON;\npostcss$1.plugin;\npostcss$1.parse;\npostcss$1.list;\npostcss$1.document;\npostcss$1.comment;\npostcss$1.atRule;\npostcss$1.rule;\npostcss$1.decl;\npostcss$1.root;\npostcss$1.CssSyntaxError;\npostcss$1.Declaration;\npostcss$1.Container;\npostcss$1.Processor;\npostcss$1.Document;\npostcss$1.Comment;\npostcss$1.Warning;\npostcss$1.AtRule;\npostcss$1.Result;\npostcss$1.Input;\npostcss$1.Rule;\npostcss$1.Root;\npostcss$1.Node;\nclass BaseRRNode {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any\n constructor(..._args) {\n __publicField2(this, \"parentElement\", null);\n __publicField2(this, \"parentNode\", null);\n __publicField2(this, \"ownerDocument\");\n __publicField2(this, \"firstChild\", null);\n __publicField2(this, \"lastChild\", null);\n __publicField2(this, \"previousSibling\", null);\n __publicField2(this, \"nextSibling\", null);\n __publicField2(this, \"ELEMENT_NODE\", 1);\n __publicField2(this, \"TEXT_NODE\", 3);\n __publicField2(this, \"nodeType\");\n __publicField2(this, \"nodeName\");\n __publicField2(this, \"RRNodeType\");\n }\n get childNodes() {\n const childNodes2 = [];\n let childIterator = this.firstChild;\n while (childIterator) {\n childNodes2.push(childIterator);\n childIterator = childIterator.nextSibling;\n }\n return childNodes2;\n }\n contains(node2) {\n if (!(node2 instanceof BaseRRNode)) return false;\n else if (node2.ownerDocument !== this.ownerDocument) return false;\n else if (node2 === this) return true;\n while (node2.parentNode) {\n if (node2.parentNode === this) return true;\n node2 = node2.parentNode;\n }\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n appendChild(_newChild) {\n throw new Error(\n `RRDomException: Failed to execute 'appendChild' on 'RRNode': This RRNode type does not support this method.`\n );\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n insertBefore(_newChild, _refChild) {\n throw new Error(\n `RRDomException: Failed to execute 'insertBefore' on 'RRNode': This RRNode type does not support this method.`\n );\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n removeChild(_node) {\n throw new Error(\n `RRDomException: Failed to execute 'removeChild' on 'RRNode': This RRNode type does not support this method.`\n );\n }\n toString() {\n return \"RRNode\";\n }\n}\nconst testableAccessors = {\n Node: [\"childNodes\", \"parentNode\", \"parentElement\", \"textContent\"],\n ShadowRoot: [\"host\", \"styleSheets\"],\n Element: [\"shadowRoot\", \"querySelector\", \"querySelectorAll\"],\n MutationObserver: []\n};\nconst testableMethods = {\n Node: [\"contains\", \"getRootNode\"],\n ShadowRoot: [\"getSelection\"],\n Element: [],\n MutationObserver: [\"constructor\"]\n};\nconst untaintedBasePrototype = {};\nconst isAngularZonePresent = () => {\n return !!globalThis.Zone;\n};\nfunction getUntaintedPrototype(key) {\n if (untaintedBasePrototype[key])\n return untaintedBasePrototype[key];\n const defaultObj = globalThis[key];\n const defaultPrototype = defaultObj.prototype;\n const accessorNames = key in testableAccessors ? testableAccessors[key] : void 0;\n const isUntaintedAccessors = Boolean(\n accessorNames && // @ts-expect-error 2345\n accessorNames.every(\n (accessor) => {\n var _a2, _b;\n return Boolean(\n (_b = (_a2 = Object.getOwnPropertyDescriptor(defaultPrototype, accessor)) == null ? void 0 : _a2.get) == null ? void 0 : _b.toString().includes(\"[native code]\")\n );\n }\n )\n );\n const methodNames = key in testableMethods ? testableMethods[key] : void 0;\n const isUntaintedMethods = Boolean(\n methodNames && methodNames.every(\n // @ts-expect-error 2345\n (method) => {\n var _a2;\n return typeof defaultPrototype[method] === \"function\" && ((_a2 = defaultPrototype[method]) == null ? void 0 : _a2.toString().includes(\"[native code]\"));\n }\n )\n );\n if (isUntaintedAccessors && isUntaintedMethods && !isAngularZonePresent()) {\n untaintedBasePrototype[key] = defaultObj.prototype;\n return defaultObj.prototype;\n }\n try {\n const iframeEl = document.createElement(\"iframe\");\n document.body.appendChild(iframeEl);\n const win = iframeEl.contentWindow;\n if (!win) return defaultObj.prototype;\n const untaintedObject = win[key].prototype;\n document.body.removeChild(iframeEl);\n if (!untaintedObject) return defaultPrototype;\n return untaintedBasePrototype[key] = untaintedObject;\n } catch {\n return defaultPrototype;\n }\n}\nconst untaintedAccessorCache = {};\nfunction getUntaintedAccessor(key, instance, accessor) {\n var _a2;\n const cacheKey = `${key}.${String(accessor)}`;\n if (untaintedAccessorCache[cacheKey])\n return untaintedAccessorCache[cacheKey].call(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype(key);\n const untaintedAccessor = (_a2 = Object.getOwnPropertyDescriptor(\n untaintedPrototype,\n accessor\n )) == null ? void 0 : _a2.get;\n if (!untaintedAccessor) return instance[accessor];\n untaintedAccessorCache[cacheKey] = untaintedAccessor;\n return untaintedAccessor.call(instance);\n}\nconst untaintedMethodCache = {};\nfunction getUntaintedMethod(key, instance, method) {\n const cacheKey = `${key}.${String(method)}`;\n if (untaintedMethodCache[cacheKey])\n return untaintedMethodCache[cacheKey].bind(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype(key);\n const untaintedMethod = untaintedPrototype[method];\n if (typeof untaintedMethod !== \"function\") return instance[method];\n untaintedMethodCache[cacheKey] = untaintedMethod;\n return untaintedMethod.bind(instance);\n}\nfunction childNodes(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"childNodes\");\n}\nfunction parentNode(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"parentNode\");\n}\nfunction parentElement(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"parentElement\");\n}\nfunction textContent(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"textContent\");\n}\nfunction contains(n2, other) {\n return getUntaintedMethod(\"Node\", n2, \"contains\")(other);\n}\nfunction getRootNode(n2) {\n return getUntaintedMethod(\"Node\", n2, \"getRootNode\")();\n}\nfunction host(n2) {\n if (!n2 || !(\"host\" in n2)) return null;\n return getUntaintedAccessor(\"ShadowRoot\", n2, \"host\");\n}\nfunction styleSheets(n2) {\n return n2.styleSheets;\n}\nfunction shadowRoot(n2) {\n if (!n2 || !(\"shadowRoot\" in n2)) return null;\n return getUntaintedAccessor(\"Element\", n2, \"shadowRoot\");\n}\nfunction querySelector(n2, selectors) {\n return getUntaintedAccessor(\"Element\", n2, \"querySelector\")(selectors);\n}\nfunction querySelectorAll(n2, selectors) {\n return getUntaintedAccessor(\"Element\", n2, \"querySelectorAll\")(selectors);\n}\nfunction mutationObserverCtor() {\n return getUntaintedPrototype(\"MutationObserver\").constructor;\n}\nconst index = {\n childNodes,\n parentNode,\n parentElement,\n textContent,\n contains,\n getRootNode,\n host,\n styleSheets,\n shadowRoot,\n querySelector,\n querySelectorAll,\n mutationObserver: mutationObserverCtor\n};\nfunction on(type, fn, target = document) {\n const options = { capture: true, passive: true };\n target.addEventListener(type, fn, options);\n return () => target.removeEventListener(type, fn, options);\n}\nconst DEPARTED_MIRROR_ACCESS_WARNING = \"Please stop import mirror directly. Instead of that,\\r\\nnow you can use replayer.getMirror() to access the mirror instance of a replayer,\\r\\nor you can use record.mirror to access the mirror instance during recording.\";\nlet _mirror = {\n map: {},\n getId() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return -1;\n },\n getNode() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return null;\n },\n removeNodeFromMap() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n },\n has() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return false;\n },\n reset() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n }\n};\nif (typeof window !== \"undefined\" && window.Proxy && window.Reflect) {\n _mirror = new Proxy(_mirror, {\n get(target, prop, receiver) {\n if (prop === \"map\") {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n }\n return Reflect.get(target, prop, receiver);\n }\n });\n}\nfunction throttle(func, wait, options = {}) {\n let timeout = null;\n let previous = 0;\n return function(...args) {\n const now = Date.now();\n if (!previous && options.leading === false) {\n previous = now;\n }\n const remaining = wait - (now - previous);\n const context = this;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n func.apply(context, args);\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(() => {\n previous = options.leading === false ? 0 : Date.now();\n timeout = null;\n func.apply(context, args);\n }, remaining);\n }\n };\n}\nfunction hookSetter(target, key, d, isRevoked, win = window) {\n const original = win.Object.getOwnPropertyDescriptor(target, key);\n win.Object.defineProperty(\n target,\n key,\n isRevoked ? d : {\n set(value) {\n setTimeout(() => {\n d.set.call(this, value);\n }, 0);\n if (original && original.set) {\n original.set.call(this, value);\n }\n }\n }\n );\n return () => hookSetter(target, key, original || {}, true);\n}\nfunction patch(source, name, replacement) {\n try {\n if (!(name in source)) {\n return () => {\n };\n }\n const original = source[name];\n const wrapped = replacement(original);\n if (typeof wrapped === \"function\") {\n wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __rrweb_original__: {\n enumerable: false,\n value: original\n }\n });\n }\n source[name] = wrapped;\n return () => {\n source[name] = original;\n };\n } catch {\n return () => {\n };\n }\n}\nlet nowTimestamp = Date.now;\nif (!/* @__PURE__ */ /[1-9][0-9]{12}/.test(Date.now().toString())) {\n nowTimestamp = () => (/* @__PURE__ */ new Date()).getTime();\n}\nfunction getWindowScroll(win) {\n var _a2, _b, _c, _d;\n const doc = win.document;\n return {\n left: doc.scrollingElement ? doc.scrollingElement.scrollLeft : win.pageXOffset !== void 0 ? win.pageXOffset : doc.documentElement.scrollLeft || (doc == null ? void 0 : doc.body) && ((_a2 = index.parentElement(doc.body)) == null ? void 0 : _a2.scrollLeft) || ((_b = doc == null ? void 0 : doc.body) == null ? void 0 : _b.scrollLeft) || 0,\n top: doc.scrollingElement ? doc.scrollingElement.scrollTop : win.pageYOffset !== void 0 ? win.pageYOffset : (doc == null ? void 0 : doc.documentElement.scrollTop) || (doc == null ? void 0 : doc.body) && ((_c = index.parentElement(doc.body)) == null ? void 0 : _c.scrollTop) || ((_d = doc == null ? void 0 : doc.body) == null ? void 0 : _d.scrollTop) || 0\n };\n}\nfunction getWindowHeight() {\n return window.innerHeight || document.documentElement && document.documentElement.clientHeight || document.body && document.body.clientHeight;\n}\nfunction getWindowWidth() {\n return window.innerWidth || document.documentElement && document.documentElement.clientWidth || document.body && document.body.clientWidth;\n}\nfunction closestElementOfNode(node2) {\n if (!node2) {\n return null;\n }\n const el = node2.nodeType === node2.ELEMENT_NODE ? node2 : index.parentElement(node2);\n return el;\n}\nfunction isBlocked(node2, blockClass, blockSelector, checkAncestors) {\n if (!node2) {\n return false;\n }\n const el = closestElementOfNode(node2);\n if (!el) {\n return false;\n }\n try {\n if (typeof blockClass === \"string\") {\n if (el.classList.contains(blockClass)) return true;\n if (checkAncestors && el.closest(\".\" + blockClass) !== null) return true;\n } else {\n if (classMatchesRegex(el, blockClass, checkAncestors)) return true;\n }\n } catch (e2) {\n }\n if (blockSelector) {\n if (el.matches(blockSelector)) return true;\n if (checkAncestors && el.closest(blockSelector) !== null) return true;\n }\n return false;\n}\nfunction isSerialized(n2, mirror2) {\n return mirror2.getId(n2) !== -1;\n}\nfunction isIgnored(n2, mirror2, slimDOMOptions) {\n if (n2.tagName === \"TITLE\" && slimDOMOptions.headTitleMutations) {\n return true;\n }\n return mirror2.getId(n2) === IGNORED_NODE;\n}\nfunction isAncestorRemoved(target, mirror2) {\n if (isShadowRoot(target)) {\n return false;\n }\n const id = mirror2.getId(target);\n if (!mirror2.has(id)) {\n return true;\n }\n const parent = index.parentNode(target);\n if (parent && parent.nodeType === target.DOCUMENT_NODE) {\n return false;\n }\n if (!parent) {\n return true;\n }\n return isAncestorRemoved(parent, mirror2);\n}\nfunction legacy_isTouchEvent(event) {\n return Boolean(event.changedTouches);\n}\nfunction polyfill$1(win = window) {\n if (\"NodeList\" in win && !win.NodeList.prototype.forEach) {\n win.NodeList.prototype.forEach = Array.prototype.forEach;\n }\n if (\"DOMTokenList\" in win && !win.DOMTokenList.prototype.forEach) {\n win.DOMTokenList.prototype.forEach = Array.prototype.forEach;\n }\n}\nfunction isSerializedIframe(n2, mirror2) {\n return Boolean(n2.nodeName === \"IFRAME\" && mirror2.getMeta(n2));\n}\nfunction isSerializedStylesheet(n2, mirror2) {\n return Boolean(\n n2.nodeName === \"LINK\" && n2.nodeType === n2.ELEMENT_NODE && n2.getAttribute && n2.getAttribute(\"rel\") === \"stylesheet\" && mirror2.getMeta(n2)\n );\n}\nfunction hasShadowRoot(n2) {\n if (!n2) return false;\n if (n2 instanceof BaseRRNode && \"shadowRoot\" in n2) {\n return Boolean(n2.shadowRoot);\n }\n return Boolean(index.shadowRoot(n2));\n}\nclass StyleSheetMirror {\n constructor() {\n __publicField(this, \"id\", 1);\n __publicField(this, \"styleIDMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"idStyleMap\", /* @__PURE__ */ new Map());\n }\n getId(stylesheet) {\n return this.styleIDMap.get(stylesheet) ?? -1;\n }\n has(stylesheet) {\n return this.styleIDMap.has(stylesheet);\n }\n /**\n * @returns If the stylesheet is in the mirror, returns the id of the stylesheet. If not, return the new assigned id.\n */\n add(stylesheet, id) {\n if (this.has(stylesheet)) return this.getId(stylesheet);\n let newId;\n if (id === void 0) {\n newId = this.id++;\n } else newId = id;\n this.styleIDMap.set(stylesheet, newId);\n this.idStyleMap.set(newId, stylesheet);\n return newId;\n }\n getStyle(id) {\n return this.idStyleMap.get(id) || null;\n }\n reset() {\n this.styleIDMap = /* @__PURE__ */ new WeakMap();\n this.idStyleMap = /* @__PURE__ */ new Map();\n this.id = 1;\n }\n generateId() {\n return this.id++;\n }\n}\nfunction getShadowHost(n2) {\n var _a2;\n let shadowHost = null;\n if (\"getRootNode\" in n2 && ((_a2 = index.getRootNode(n2)) == null ? void 0 : _a2.nodeType) === Node.DOCUMENT_FRAGMENT_NODE && index.host(index.getRootNode(n2)))\n shadowHost = index.host(index.getRootNode(n2));\n return shadowHost;\n}\nfunction getRootShadowHost(n2) {\n let rootShadowHost = n2;\n let shadowHost;\n while (shadowHost = getShadowHost(rootShadowHost))\n rootShadowHost = shadowHost;\n return rootShadowHost;\n}\nfunction shadowHostInDom(n2) {\n const doc = n2.ownerDocument;\n if (!doc) return false;\n const shadowHost = getRootShadowHost(n2);\n return index.contains(doc, shadowHost);\n}\nfunction inDom(n2) {\n const doc = n2.ownerDocument;\n if (!doc) return false;\n return index.contains(doc, n2) || shadowHostInDom(n2);\n}\nvar EventType = /* @__PURE__ */ ((EventType2) => {\n EventType2[EventType2[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n EventType2[EventType2[\"Load\"] = 1] = \"Load\";\n EventType2[EventType2[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n EventType2[EventType2[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n EventType2[EventType2[\"Meta\"] = 4] = \"Meta\";\n EventType2[EventType2[\"Custom\"] = 5] = \"Custom\";\n EventType2[EventType2[\"Plugin\"] = 6] = \"Plugin\";\n return EventType2;\n})(EventType || {});\nvar IncrementalSource = /* @__PURE__ */ ((IncrementalSource2) => {\n IncrementalSource2[IncrementalSource2[\"Mutation\"] = 0] = \"Mutation\";\n IncrementalSource2[IncrementalSource2[\"MouseMove\"] = 1] = \"MouseMove\";\n IncrementalSource2[IncrementalSource2[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n IncrementalSource2[IncrementalSource2[\"Scroll\"] = 3] = \"Scroll\";\n IncrementalSource2[IncrementalSource2[\"ViewportResize\"] = 4] = \"ViewportResize\";\n IncrementalSource2[IncrementalSource2[\"Input\"] = 5] = \"Input\";\n IncrementalSource2[IncrementalSource2[\"TouchMove\"] = 6] = \"TouchMove\";\n IncrementalSource2[IncrementalSource2[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n IncrementalSource2[IncrementalSource2[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n IncrementalSource2[IncrementalSource2[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n IncrementalSource2[IncrementalSource2[\"Font\"] = 10] = \"Font\";\n IncrementalSource2[IncrementalSource2[\"Log\"] = 11] = \"Log\";\n IncrementalSource2[IncrementalSource2[\"Drag\"] = 12] = \"Drag\";\n IncrementalSource2[IncrementalSource2[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n IncrementalSource2[IncrementalSource2[\"Selection\"] = 14] = \"Selection\";\n IncrementalSource2[IncrementalSource2[\"AdoptedStyleSheet\"] = 15] = \"AdoptedStyleSheet\";\n IncrementalSource2[IncrementalSource2[\"CustomElement\"] = 16] = \"CustomElement\";\n return IncrementalSource2;\n})(IncrementalSource || {});\nvar MouseInteractions = /* @__PURE__ */ ((MouseInteractions2) => {\n MouseInteractions2[MouseInteractions2[\"MouseUp\"] = 0] = \"MouseUp\";\n MouseInteractions2[MouseInteractions2[\"MouseDown\"] = 1] = \"MouseDown\";\n MouseInteractions2[MouseInteractions2[\"Click\"] = 2] = \"Click\";\n MouseInteractions2[MouseInteractions2[\"ContextMenu\"] = 3] = \"ContextMenu\";\n MouseInteractions2[MouseInteractions2[\"DblClick\"] = 4] = \"DblClick\";\n MouseInteractions2[MouseInteractions2[\"Focus\"] = 5] = \"Focus\";\n MouseInteractions2[MouseInteractions2[\"Blur\"] = 6] = \"Blur\";\n MouseInteractions2[MouseInteractions2[\"TouchStart\"] = 7] = \"TouchStart\";\n MouseInteractions2[MouseInteractions2[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n MouseInteractions2[MouseInteractions2[\"TouchEnd\"] = 9] = \"TouchEnd\";\n MouseInteractions2[MouseInteractions2[\"TouchCancel\"] = 10] = \"TouchCancel\";\n return MouseInteractions2;\n})(MouseInteractions || {});\nvar PointerTypes = /* @__PURE__ */ ((PointerTypes2) => {\n PointerTypes2[PointerTypes2[\"Mouse\"] = 0] = \"Mouse\";\n PointerTypes2[PointerTypes2[\"Pen\"] = 1] = \"Pen\";\n PointerTypes2[PointerTypes2[\"Touch\"] = 2] = \"Touch\";\n return PointerTypes2;\n})(PointerTypes || {});\nvar CanvasContext = /* @__PURE__ */ ((CanvasContext2) => {\n CanvasContext2[CanvasContext2[\"2D\"] = 0] = \"2D\";\n CanvasContext2[CanvasContext2[\"WebGL\"] = 1] = \"WebGL\";\n CanvasContext2[CanvasContext2[\"WebGL2\"] = 2] = \"WebGL2\";\n return CanvasContext2;\n})(CanvasContext || {});\nvar MediaInteractions = /* @__PURE__ */ ((MediaInteractions2) => {\n MediaInteractions2[MediaInteractions2[\"Play\"] = 0] = \"Play\";\n MediaInteractions2[MediaInteractions2[\"Pause\"] = 1] = \"Pause\";\n MediaInteractions2[MediaInteractions2[\"Seeked\"] = 2] = \"Seeked\";\n MediaInteractions2[MediaInteractions2[\"VolumeChange\"] = 3] = \"VolumeChange\";\n MediaInteractions2[MediaInteractions2[\"RateChange\"] = 4] = \"RateChange\";\n return MediaInteractions2;\n})(MediaInteractions || {});\nvar NodeType = /* @__PURE__ */ ((NodeType2) => {\n NodeType2[NodeType2[\"Document\"] = 0] = \"Document\";\n NodeType2[NodeType2[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType2[NodeType2[\"Element\"] = 2] = \"Element\";\n NodeType2[NodeType2[\"Text\"] = 3] = \"Text\";\n NodeType2[NodeType2[\"CDATA\"] = 4] = \"CDATA\";\n NodeType2[NodeType2[\"Comment\"] = 5] = \"Comment\";\n return NodeType2;\n})(NodeType || {});\nfunction isNodeInLinkedList(n2) {\n return \"__ln\" in n2;\n}\nclass DoubleLinkedList {\n constructor() {\n __publicField(this, \"length\", 0);\n __publicField(this, \"head\", null);\n __publicField(this, \"tail\", null);\n }\n get(position) {\n if (position >= this.length) {\n throw new Error(\"Position outside of list range\");\n }\n let current = this.head;\n for (let index2 = 0; index2 < position; index2++) {\n current = (current == null ? void 0 : current.next) || null;\n }\n return current;\n }\n addNode(n2) {\n const node2 = {\n value: n2,\n previous: null,\n next: null\n };\n n2.__ln = node2;\n if (n2.previousSibling && isNodeInLinkedList(n2.previousSibling)) {\n const current = n2.previousSibling.__ln.next;\n node2.next = current;\n node2.previous = n2.previousSibling.__ln;\n n2.previousSibling.__ln.next = node2;\n if (current) {\n current.previous = node2;\n }\n } else if (n2.nextSibling && isNodeInLinkedList(n2.nextSibling) && n2.nextSibling.__ln.previous) {\n const current = n2.nextSibling.__ln.previous;\n node2.previous = current;\n node2.next = n2.nextSibling.__ln;\n n2.nextSibling.__ln.previous = node2;\n if (current) {\n current.next = node2;\n }\n } else {\n if (this.head) {\n this.head.previous = node2;\n }\n node2.next = this.head;\n this.head = node2;\n }\n if (node2.next === null) {\n this.tail = node2;\n }\n this.length++;\n }\n removeNode(n2) {\n const current = n2.__ln;\n if (!this.head) {\n return;\n }\n if (!current.previous) {\n this.head = current.next;\n if (this.head) {\n this.head.previous = null;\n } else {\n this.tail = null;\n }\n } else {\n current.previous.next = current.next;\n if (current.next) {\n current.next.previous = current.previous;\n } else {\n this.tail = current.previous;\n }\n }\n if (n2.__ln) {\n delete n2.__ln;\n }\n this.length--;\n }\n}\nconst moveKey = (id, parentId) => `${id}@${parentId}`;\nclass MutationBuffer {\n constructor() {\n __publicField(this, \"frozen\", false);\n __publicField(this, \"locked\", false);\n __publicField(this, \"texts\", []);\n __publicField(this, \"attributes\", []);\n __publicField(this, \"attributeMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"removes\", []);\n __publicField(this, \"mapRemoves\", []);\n __publicField(this, \"movedMap\", {});\n __publicField(this, \"addedSet\", /* @__PURE__ */ new Set());\n __publicField(this, \"movedSet\", /* @__PURE__ */ new Set());\n __publicField(this, \"droppedSet\", /* @__PURE__ */ new Set());\n __publicField(this, \"removesSubTreeCache\", /* @__PURE__ */ new Set());\n __publicField(this, \"mutationCb\");\n __publicField(this, \"blockClass\");\n __publicField(this, \"blockSelector\");\n __publicField(this, \"maskTextClass\");\n __publicField(this, \"maskTextSelector\");\n __publicField(this, \"inlineStylesheet\");\n __publicField(this, \"maskInputOptions\");\n __publicField(this, \"maskTextFn\");\n __publicField(this, \"maskInputFn\");\n __publicField(this, \"keepIframeSrcFn\");\n __publicField(this, \"recordCanvas\");\n __publicField(this, \"inlineImages\");\n __publicField(this, \"slimDOMOptions\");\n __publicField(this, \"dataURLOptions\");\n __publicField(this, \"doc\");\n __publicField(this, \"mirror\");\n __publicField(this, \"iframeManager\");\n __publicField(this, \"stylesheetManager\");\n __publicField(this, \"shadowDomManager\");\n __publicField(this, \"canvasManager\");\n __publicField(this, \"processedNodeManager\");\n __publicField(this, \"unattachedDoc\");\n __publicField(this, \"processMutations\", (mutations) => {\n mutations.forEach(this.processMutation);\n this.emit();\n });\n __publicField(this, \"emit\", () => {\n if (this.frozen || this.locked) {\n return;\n }\n const adds = [];\n const addedIds = /* @__PURE__ */ new Set();\n const addList = new DoubleLinkedList();\n const getNextId = (n2) => {\n let ns = n2;\n let nextId = IGNORED_NODE;\n while (nextId === IGNORED_NODE) {\n ns = ns && ns.nextSibling;\n nextId = ns && this.mirror.getId(ns);\n }\n return nextId;\n };\n const pushAdd = (n2) => {\n const parent = index.parentNode(n2);\n if (!parent || !inDom(n2)) {\n return;\n }\n let cssCaptured = false;\n if (n2.nodeType === Node.TEXT_NODE) {\n const parentTag = parent.tagName;\n if (parentTag === \"TEXTAREA\") {\n return;\n } else if (parentTag === \"STYLE\" && this.addedSet.has(parent)) {\n cssCaptured = true;\n }\n }\n const parentId = isShadowRoot(parent) ? this.mirror.getId(getShadowHost(n2)) : this.mirror.getId(parent);\n const nextId = getNextId(n2);\n if (parentId === -1 || nextId === -1) {\n return addList.addNode(n2);\n }\n const sn = serializeNodeWithId(n2, {\n doc: this.doc,\n mirror: this.mirror,\n blockClass: this.blockClass,\n blockSelector: this.blockSelector,\n maskTextClass: this.maskTextClass,\n maskTextSelector: this.maskTextSelector,\n skipChild: true,\n newlyAddedElement: true,\n inlineStylesheet: this.inlineStylesheet,\n maskInputOptions: this.maskInputOptions,\n maskTextFn: this.maskTextFn,\n maskInputFn: this.maskInputFn,\n slimDOMOptions: this.slimDOMOptions,\n dataURLOptions: this.dataURLOptions,\n recordCanvas: this.recordCanvas,\n inlineImages: this.inlineImages,\n onSerialize: (currentN) => {\n if (isSerializedIframe(currentN, this.mirror)) {\n this.iframeManager.addIframe(currentN);\n }\n if (isSerializedStylesheet(currentN, this.mirror)) {\n this.stylesheetManager.trackLinkElement(\n currentN\n );\n }\n if (hasShadowRoot(n2)) {\n this.shadowDomManager.addShadowRoot(index.shadowRoot(n2), this.doc);\n }\n },\n onIframeLoad: (iframe, childSn) => {\n this.iframeManager.attachIframe(iframe, childSn);\n this.shadowDomManager.observeAttachShadow(iframe);\n },\n onStylesheetLoad: (link, childSn) => {\n this.stylesheetManager.attachLinkElement(link, childSn);\n },\n cssCaptured\n });\n if (sn) {\n adds.push({\n parentId,\n nextId,\n node: sn\n });\n addedIds.add(sn.id);\n }\n };\n while (this.mapRemoves.length) {\n this.mirror.removeNodeFromMap(this.mapRemoves.shift());\n }\n for (const n2 of this.movedSet) {\n if (isParentRemoved(this.removesSubTreeCache, n2, this.mirror) && !this.movedSet.has(index.parentNode(n2))) {\n continue;\n }\n pushAdd(n2);\n }\n for (const n2 of this.addedSet) {\n if (!isAncestorInSet(this.droppedSet, n2) && !isParentRemoved(this.removesSubTreeCache, n2, this.mirror)) {\n pushAdd(n2);\n } else if (isAncestorInSet(this.movedSet, n2)) {\n pushAdd(n2);\n } else {\n this.droppedSet.add(n2);\n }\n }\n let candidate = null;\n while (addList.length) {\n let node2 = null;\n if (candidate) {\n const parentId = this.mirror.getId(index.parentNode(candidate.value));\n const nextId = getNextId(candidate.value);\n if (parentId !== -1 && nextId !== -1) {\n node2 = candidate;\n }\n }\n if (!node2) {\n let tailNode = addList.tail;\n while (tailNode) {\n const _node = tailNode;\n tailNode = tailNode.previous;\n if (_node) {\n const parentId = this.mirror.getId(index.parentNode(_node.value));\n const nextId = getNextId(_node.value);\n if (nextId === -1) continue;\n else if (parentId !== -1) {\n node2 = _node;\n break;\n } else {\n const unhandledNode = _node.value;\n const parent = index.parentNode(unhandledNode);\n if (parent && parent.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n const shadowHost = index.host(parent);\n const parentId2 = this.mirror.getId(shadowHost);\n if (parentId2 !== -1) {\n node2 = _node;\n break;\n }\n }\n }\n }\n }\n }\n if (!node2) {\n while (addList.head) {\n addList.removeNode(addList.head.value);\n }\n break;\n }\n candidate = node2.previous;\n addList.removeNode(node2.value);\n pushAdd(node2.value);\n }\n const payload = {\n texts: this.texts.map((text) => {\n const n2 = text.node;\n const parent = index.parentNode(n2);\n if (parent && parent.tagName === \"TEXTAREA\") {\n this.genTextAreaValueMutation(parent);\n }\n return {\n id: this.mirror.getId(n2),\n value: text.value\n };\n }).filter((text) => !addedIds.has(text.id)).filter((text) => this.mirror.has(text.id)),\n attributes: this.attributes.map((attribute) => {\n const { attributes } = attribute;\n if (typeof attributes.style === \"string\") {\n const diffAsStr = JSON.stringify(attribute.styleDiff);\n const unchangedAsStr = JSON.stringify(attribute._unchangedStyles);\n if (diffAsStr.length < attributes.style.length) {\n if ((diffAsStr + unchangedAsStr).split(\"var(\").length === attributes.style.split(\"var(\").length) {\n attributes.style = attribute.styleDiff;\n }\n }\n }\n return {\n id: this.mirror.getId(attribute.node),\n attributes\n };\n }).filter((attribute) => !addedIds.has(attribute.id)).filter((attribute) => this.mirror.has(attribute.id)),\n removes: this.removes,\n adds\n };\n if (!payload.texts.length && !payload.attributes.length && !payload.removes.length && !payload.adds.length) {\n return;\n }\n this.texts = [];\n this.attributes = [];\n this.attributeMap = /* @__PURE__ */ new WeakMap();\n this.removes = [];\n this.addedSet = /* @__PURE__ */ new Set();\n this.movedSet = /* @__PURE__ */ new Set();\n this.droppedSet = /* @__PURE__ */ new Set();\n this.removesSubTreeCache = /* @__PURE__ */ new Set();\n this.movedMap = {};\n this.mutationCb(payload);\n });\n __publicField(this, \"genTextAreaValueMutation\", (textarea) => {\n let item = this.attributeMap.get(textarea);\n if (!item) {\n item = {\n node: textarea,\n attributes: {},\n styleDiff: {},\n _unchangedStyles: {}\n };\n this.attributes.push(item);\n this.attributeMap.set(textarea, item);\n }\n item.attributes.value = Array.from(\n index.childNodes(textarea),\n (cn) => index.textContent(cn) || \"\"\n ).join(\"\");\n });\n __publicField(this, \"processMutation\", (m) => {\n if (isIgnored(m.target, this.mirror, this.slimDOMOptions)) {\n return;\n }\n switch (m.type) {\n case \"characterData\": {\n const value = index.textContent(m.target);\n if (!isBlocked(m.target, this.blockClass, this.blockSelector, false) && value !== m.oldValue) {\n this.texts.push({\n value: needMaskingText(\n m.target,\n this.maskTextClass,\n this.maskTextSelector,\n true\n // checkAncestors\n ) && value ? this.maskTextFn ? this.maskTextFn(value, closestElementOfNode(m.target)) : value.replace(/[\\S]/g, \"*\") : value,\n node: m.target\n });\n }\n break;\n }\n case \"attributes\": {\n const target = m.target;\n let attributeName = m.attributeName;\n let value = m.target.getAttribute(attributeName);\n if (attributeName === \"value\") {\n const type = getInputType(target);\n value = maskInputValue({\n element: target,\n maskInputOptions: this.maskInputOptions,\n tagName: target.tagName,\n type,\n value,\n maskInputFn: this.maskInputFn\n });\n }\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) || value === m.oldValue) {\n return;\n }\n let item = this.attributeMap.get(m.target);\n if (target.tagName === \"IFRAME\" && attributeName === \"src\" && !this.keepIframeSrcFn(value)) {\n if (!target.contentDocument) {\n attributeName = \"rr_src\";\n } else {\n return;\n }\n }\n if (!item) {\n item = {\n node: m.target,\n attributes: {},\n styleDiff: {},\n _unchangedStyles: {}\n };\n this.attributes.push(item);\n this.attributeMap.set(m.target, item);\n }\n if (attributeName === \"type\" && target.tagName === \"INPUT\" && (m.oldValue || \"\").toLowerCase() === \"password\") {\n target.setAttribute(\"data-rr-is-password\", \"true\");\n }\n if (!ignoreAttribute(target.tagName, attributeName)) {\n item.attributes[attributeName] = transformAttribute(\n this.doc,\n toLowerCase(target.tagName),\n toLowerCase(attributeName),\n value\n );\n if (attributeName === \"style\") {\n if (!this.unattachedDoc) {\n try {\n this.unattachedDoc = document.implementation.createHTMLDocument();\n } catch (e2) {\n this.unattachedDoc = this.doc;\n }\n }\n const old = this.unattachedDoc.createElement(\"span\");\n if (m.oldValue) {\n old.setAttribute(\"style\", m.oldValue);\n }\n for (const pname of Array.from(target.style)) {\n const newValue = target.style.getPropertyValue(pname);\n const newPriority = target.style.getPropertyPriority(pname);\n if (newValue !== old.style.getPropertyValue(pname) || newPriority !== old.style.getPropertyPriority(pname)) {\n if (newPriority === \"\") {\n item.styleDiff[pname] = newValue;\n } else {\n item.styleDiff[pname] = [newValue, newPriority];\n }\n } else {\n item._unchangedStyles[pname] = [newValue, newPriority];\n }\n }\n for (const pname of Array.from(old.style)) {\n if (target.style.getPropertyValue(pname) === \"\") {\n item.styleDiff[pname] = false;\n }\n }\n } else if (attributeName === \"open\" && target.tagName === \"DIALOG\") {\n if (target.matches(\"dialog:modal\")) {\n item.attributes[\"rr_open_mode\"] = \"modal\";\n } else {\n item.attributes[\"rr_open_mode\"] = \"non-modal\";\n }\n }\n }\n break;\n }\n case \"childList\": {\n if (isBlocked(m.target, this.blockClass, this.blockSelector, true))\n return;\n if (m.target.tagName === \"TEXTAREA\") {\n this.genTextAreaValueMutation(m.target);\n return;\n }\n m.addedNodes.forEach((n2) => this.genAdds(n2, m.target));\n m.removedNodes.forEach((n2) => {\n const nodeId = this.mirror.getId(n2);\n const parentId = isShadowRoot(m.target) ? this.mirror.getId(index.host(m.target)) : this.mirror.getId(m.target);\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) || isIgnored(n2, this.mirror, this.slimDOMOptions) || !isSerialized(n2, this.mirror)) {\n return;\n }\n if (this.addedSet.has(n2)) {\n deepDelete(this.addedSet, n2);\n this.droppedSet.add(n2);\n } else if (this.addedSet.has(m.target) && nodeId === -1) ;\n else if (isAncestorRemoved(m.target, this.mirror)) ;\n else if (this.movedSet.has(n2) && this.movedMap[moveKey(nodeId, parentId)]) {\n deepDelete(this.movedSet, n2);\n } else {\n this.removes.push({\n parentId,\n id: nodeId,\n isShadow: isShadowRoot(m.target) && isNativeShadowDom(m.target) ? true : void 0\n });\n processRemoves(n2, this.removesSubTreeCache);\n }\n this.mapRemoves.push(n2);\n });\n break;\n }\n }\n });\n __publicField(this, \"genAdds\", (n2, target) => {\n if (this.processedNodeManager.inOtherBuffer(n2, this)) return;\n if (this.addedSet.has(n2) || this.movedSet.has(n2)) return;\n if (this.mirror.hasNode(n2)) {\n if (isIgnored(n2, this.mirror, this.slimDOMOptions)) {\n return;\n }\n this.movedSet.add(n2);\n let targetId = null;\n if (target && this.mirror.hasNode(target)) {\n targetId = this.mirror.getId(target);\n }\n if (targetId && targetId !== -1) {\n this.movedMap[moveKey(this.mirror.getId(n2), targetId)] = true;\n }\n } else {\n this.addedSet.add(n2);\n this.droppedSet.delete(n2);\n }\n if (!isBlocked(n2, this.blockClass, this.blockSelector, false)) {\n index.childNodes(n2).forEach((childN) => this.genAdds(childN));\n if (hasShadowRoot(n2)) {\n index.childNodes(index.shadowRoot(n2)).forEach((childN) => {\n this.processedNodeManager.add(childN, this);\n this.genAdds(childN, n2);\n });\n }\n }\n });\n }\n init(options) {\n [\n \"mutationCb\",\n \"blockClass\",\n \"blockSelector\",\n \"maskTextClass\",\n \"maskTextSelector\",\n \"inlineStylesheet\",\n \"maskInputOptions\",\n \"maskTextFn\",\n \"maskInputFn\",\n \"keepIframeSrcFn\",\n \"recordCanvas\",\n \"inlineImages\",\n \"slimDOMOptions\",\n \"dataURLOptions\",\n \"doc\",\n \"mirror\",\n \"iframeManager\",\n \"stylesheetManager\",\n \"shadowDomManager\",\n \"canvasManager\",\n \"processedNodeManager\"\n ].forEach((key) => {\n this[key] = options[key];\n });\n }\n freeze() {\n this.frozen = true;\n this.canvasManager.freeze();\n }\n unfreeze() {\n this.frozen = false;\n this.canvasManager.unfreeze();\n this.emit();\n }\n isFrozen() {\n return this.frozen;\n }\n lock() {\n this.locked = true;\n this.canvasManager.lock();\n }\n unlock() {\n this.locked = false;\n this.canvasManager.unlock();\n this.emit();\n }\n reset() {\n this.shadowDomManager.reset();\n this.canvasManager.reset();\n }\n}\nfunction deepDelete(addsSet, n2) {\n addsSet.delete(n2);\n index.childNodes(n2).forEach((childN) => deepDelete(addsSet, childN));\n}\nfunction processRemoves(n2, cache) {\n const queue = [n2];\n while (queue.length) {\n const next = queue.pop();\n if (cache.has(next)) continue;\n cache.add(next);\n index.childNodes(next).forEach((n22) => queue.push(n22));\n }\n return;\n}\nfunction isParentRemoved(removes, n2, mirror2) {\n if (removes.size === 0) return false;\n return _isParentRemoved(removes, n2);\n}\nfunction _isParentRemoved(removes, n2, _mirror2) {\n const node2 = index.parentNode(n2);\n if (!node2) return false;\n return removes.has(node2);\n}\nfunction isAncestorInSet(set, n2) {\n if (set.size === 0) return false;\n return _isAncestorInSet(set, n2);\n}\nfunction _isAncestorInSet(set, n2) {\n const parent = index.parentNode(n2);\n if (!parent) {\n return false;\n }\n if (set.has(parent)) {\n return true;\n }\n return _isAncestorInSet(set, parent);\n}\nlet errorHandler;\nfunction registerErrorHandler(handler) {\n errorHandler = handler;\n}\nfunction unregisterErrorHandler() {\n errorHandler = void 0;\n}\nconst callbackWrapper = (cb) => {\n if (!errorHandler) {\n return cb;\n }\n const rrwebWrapped = (...rest) => {\n try {\n return cb(...rest);\n } catch (error) {\n if (errorHandler && errorHandler(error) === true) {\n return;\n }\n throw error;\n }\n };\n return rrwebWrapped;\n};\nconst mutationBuffers = [];\nfunction getEventTarget(event) {\n try {\n if (\"composedPath\" in event) {\n const path = event.composedPath();\n if (path.length) {\n return path[0];\n }\n } else if (\"path\" in event && event.path.length) {\n return event.path[0];\n }\n } catch {\n }\n return event && event.target;\n}\nfunction initMutationObserver(options, rootEl) {\n const mutationBuffer = new MutationBuffer();\n mutationBuffers.push(mutationBuffer);\n mutationBuffer.init(options);\n const observer = new (mutationObserverCtor())(\n callbackWrapper(mutationBuffer.processMutations.bind(mutationBuffer))\n );\n observer.observe(rootEl, {\n attributes: true,\n attributeOldValue: true,\n characterData: true,\n characterDataOldValue: true,\n childList: true,\n subtree: true\n });\n return observer;\n}\nfunction initMoveObserver({\n mousemoveCb,\n sampling,\n doc,\n mirror: mirror2\n}) {\n if (sampling.mousemove === false) {\n return () => {\n };\n }\n const threshold = typeof sampling.mousemove === \"number\" ? sampling.mousemove : 50;\n const callbackThreshold = typeof sampling.mousemoveCallback === \"number\" ? sampling.mousemoveCallback : 500;\n let positions = [];\n let timeBaseline;\n const wrappedCb = throttle(\n callbackWrapper(\n (source) => {\n const totalOffset = Date.now() - timeBaseline;\n mousemoveCb(\n positions.map((p) => {\n p.timeOffset -= totalOffset;\n return p;\n }),\n source\n );\n positions = [];\n timeBaseline = null;\n }\n ),\n callbackThreshold\n );\n const updatePosition = callbackWrapper(\n throttle(\n callbackWrapper((evt) => {\n const target = getEventTarget(evt);\n const { clientX, clientY } = legacy_isTouchEvent(evt) ? evt.changedTouches[0] : evt;\n if (!timeBaseline) {\n timeBaseline = nowTimestamp();\n }\n positions.push({\n x: clientX,\n y: clientY,\n id: mirror2.getId(target),\n timeOffset: nowTimestamp() - timeBaseline\n });\n wrappedCb(\n typeof DragEvent !== \"undefined\" && evt instanceof DragEvent ? IncrementalSource.Drag : evt instanceof MouseEvent ? IncrementalSource.MouseMove : IncrementalSource.TouchMove\n );\n }),\n threshold,\n {\n trailing: false\n }\n )\n );\n const handlers = [\n on(\"mousemove\", updatePosition, doc),\n on(\"touchmove\", updatePosition, doc),\n on(\"drag\", updatePosition, doc)\n ];\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initMouseInteractionObserver({\n mouseInteractionCb,\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n sampling\n}) {\n if (sampling.mouseInteraction === false) {\n return () => {\n };\n }\n const disableMap = sampling.mouseInteraction === true || sampling.mouseInteraction === void 0 ? {} : sampling.mouseInteraction;\n const handlers = [];\n let currentPointerType = null;\n const getHandler = (eventKey) => {\n return (event) => {\n const target = getEventTarget(event);\n if (isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n let pointerType = null;\n let thisEventKey = eventKey;\n if (\"pointerType\" in event) {\n switch (event.pointerType) {\n case \"mouse\":\n pointerType = PointerTypes.Mouse;\n break;\n case \"touch\":\n pointerType = PointerTypes.Touch;\n break;\n case \"pen\":\n pointerType = PointerTypes.Pen;\n break;\n }\n if (pointerType === PointerTypes.Touch) {\n if (MouseInteractions[eventKey] === MouseInteractions.MouseDown) {\n thisEventKey = \"TouchStart\";\n } else if (MouseInteractions[eventKey] === MouseInteractions.MouseUp) {\n thisEventKey = \"TouchEnd\";\n }\n } else if (pointerType === PointerTypes.Pen) ;\n } else if (legacy_isTouchEvent(event)) {\n pointerType = PointerTypes.Touch;\n }\n if (pointerType !== null) {\n currentPointerType = pointerType;\n if (thisEventKey.startsWith(\"Touch\") && pointerType === PointerTypes.Touch || thisEventKey.startsWith(\"Mouse\") && pointerType === PointerTypes.Mouse) {\n pointerType = null;\n }\n } else if (MouseInteractions[eventKey] === MouseInteractions.Click) {\n pointerType = currentPointerType;\n currentPointerType = null;\n }\n const e2 = legacy_isTouchEvent(event) ? event.changedTouches[0] : event;\n if (!e2) {\n return;\n }\n const id = mirror2.getId(target);\n const { clientX, clientY } = e2;\n callbackWrapper(mouseInteractionCb)({\n type: MouseInteractions[thisEventKey],\n id,\n x: clientX,\n y: clientY,\n ...pointerType !== null && { pointerType }\n });\n };\n };\n Object.keys(MouseInteractions).filter(\n (key) => Number.isNaN(Number(key)) && !key.endsWith(\"_Departed\") && disableMap[key] !== false\n ).forEach((eventKey) => {\n let eventName = toLowerCase(eventKey);\n const handler = getHandler(eventKey);\n if (window.PointerEvent) {\n switch (MouseInteractions[eventKey]) {\n case MouseInteractions.MouseDown:\n case MouseInteractions.MouseUp:\n eventName = eventName.replace(\n \"mouse\",\n \"pointer\"\n );\n break;\n case MouseInteractions.TouchStart:\n case MouseInteractions.TouchEnd:\n return;\n }\n }\n handlers.push(on(eventName, handler, doc));\n });\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initScrollObserver({\n scrollCb,\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n sampling\n}) {\n const updatePosition = callbackWrapper(\n throttle(\n callbackWrapper((evt) => {\n const target = getEventTarget(evt);\n if (!target || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n const id = mirror2.getId(target);\n if (target === doc && doc.defaultView) {\n const scrollLeftTop = getWindowScroll(doc.defaultView);\n scrollCb({\n id,\n x: scrollLeftTop.left,\n y: scrollLeftTop.top\n });\n } else {\n scrollCb({\n id,\n x: target.scrollLeft,\n y: target.scrollTop\n });\n }\n }),\n sampling.scroll || 100\n )\n );\n return on(\"scroll\", updatePosition, doc);\n}\nfunction initViewportResizeObserver({ viewportResizeCb }, { win }) {\n let lastH = -1;\n let lastW = -1;\n const updateDimension = callbackWrapper(\n throttle(\n callbackWrapper(() => {\n const height = getWindowHeight();\n const width = getWindowWidth();\n if (lastH !== height || lastW !== width) {\n viewportResizeCb({\n width: Number(width),\n height: Number(height)\n });\n lastH = height;\n lastW = width;\n }\n }),\n 200\n )\n );\n return on(\"resize\", updateDimension, win);\n}\nconst INPUT_TAGS = [\"INPUT\", \"TEXTAREA\", \"SELECT\"];\nconst lastInputValueMap = /* @__PURE__ */ new WeakMap();\nfunction initInputObserver({\n inputCb,\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n ignoreClass,\n ignoreSelector,\n maskInputOptions,\n maskInputFn,\n sampling,\n userTriggeredOnInput\n}) {\n function eventHandler(event) {\n let target = getEventTarget(event);\n const userTriggered = event.isTrusted;\n const tagName = target && target.tagName;\n if (target && tagName === \"OPTION\") {\n target = index.parentElement(target);\n }\n if (!target || !tagName || INPUT_TAGS.indexOf(tagName) < 0 || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n if (target.classList.contains(ignoreClass) || ignoreSelector && target.matches(ignoreSelector)) {\n return;\n }\n let text = target.value;\n let isChecked = false;\n const type = getInputType(target) || \"\";\n if (type === \"radio\" || type === \"checkbox\") {\n isChecked = target.checked;\n } else if (maskInputOptions[tagName.toLowerCase()] || maskInputOptions[type]) {\n text = maskInputValue({\n element: target,\n maskInputOptions,\n tagName,\n type,\n value: text,\n maskInputFn\n });\n }\n cbWithDedup(\n target,\n userTriggeredOnInput ? { text, isChecked, userTriggered } : { text, isChecked }\n );\n const name = target.name;\n if (type === \"radio\" && name && isChecked) {\n doc.querySelectorAll(`input[type=\"radio\"][name=\"${name}\"]`).forEach((el) => {\n if (el !== target) {\n const text2 = el.value;\n cbWithDedup(\n el,\n userTriggeredOnInput ? { text: text2, isChecked: !isChecked, userTriggered: false } : { text: text2, isChecked: !isChecked }\n );\n }\n });\n }\n }\n function cbWithDedup(target, v2) {\n const lastInputValue = lastInputValueMap.get(target);\n if (!lastInputValue || lastInputValue.text !== v2.text || lastInputValue.isChecked !== v2.isChecked) {\n lastInputValueMap.set(target, v2);\n const id = mirror2.getId(target);\n callbackWrapper(inputCb)({\n ...v2,\n id\n });\n }\n }\n const events = sampling.input === \"last\" ? [\"change\"] : [\"input\", \"change\"];\n const handlers = events.map(\n (eventName) => on(eventName, callbackWrapper(eventHandler), doc)\n );\n const currentWindow = doc.defaultView;\n if (!currentWindow) {\n return () => {\n handlers.forEach((h) => h());\n };\n }\n const propertyDescriptor = currentWindow.Object.getOwnPropertyDescriptor(\n currentWindow.HTMLInputElement.prototype,\n \"value\"\n );\n const hookProperties = [\n [currentWindow.HTMLInputElement.prototype, \"value\"],\n [currentWindow.HTMLInputElement.prototype, \"checked\"],\n [currentWindow.HTMLSelectElement.prototype, \"value\"],\n [currentWindow.HTMLTextAreaElement.prototype, \"value\"],\n // Some UI library use selectedIndex to set select value\n [currentWindow.HTMLSelectElement.prototype, \"selectedIndex\"],\n [currentWindow.HTMLOptionElement.prototype, \"selected\"]\n ];\n if (propertyDescriptor && propertyDescriptor.set) {\n handlers.push(\n ...hookProperties.map(\n (p) => hookSetter(\n p[0],\n p[1],\n {\n set() {\n callbackWrapper(eventHandler)({\n target: this,\n isTrusted: false\n // userTriggered to false as this could well be programmatic\n });\n }\n },\n false,\n currentWindow\n )\n )\n );\n }\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction getNestedCSSRulePositions(rule2) {\n const positions = [];\n function recurse(childRule, pos) {\n if (hasNestedCSSRule(\"CSSGroupingRule\") && childRule.parentRule instanceof CSSGroupingRule || hasNestedCSSRule(\"CSSMediaRule\") && childRule.parentRule instanceof CSSMediaRule || hasNestedCSSRule(\"CSSSupportsRule\") && childRule.parentRule instanceof CSSSupportsRule || hasNestedCSSRule(\"CSSConditionRule\") && childRule.parentRule instanceof CSSConditionRule) {\n const rules2 = Array.from(\n childRule.parentRule.cssRules\n );\n const index2 = rules2.indexOf(childRule);\n pos.unshift(index2);\n } else if (childRule.parentStyleSheet) {\n const rules2 = Array.from(childRule.parentStyleSheet.cssRules);\n const index2 = rules2.indexOf(childRule);\n pos.unshift(index2);\n }\n return pos;\n }\n return recurse(rule2, positions);\n}\nfunction getIdAndStyleId(sheet, mirror2, styleMirror) {\n let id, styleId;\n if (!sheet) return {};\n if (sheet.ownerNode) id = mirror2.getId(sheet.ownerNode);\n else styleId = styleMirror.getId(sheet);\n return {\n styleId,\n id\n };\n}\nfunction initStyleSheetObserver({ styleSheetRuleCb, mirror: mirror2, stylesheetManager }, { win }) {\n if (!win.CSSStyleSheet || !win.CSSStyleSheet.prototype) {\n return () => {\n };\n }\n const insertRule = win.CSSStyleSheet.prototype.insertRule;\n win.CSSStyleSheet.prototype.insertRule = new Proxy(insertRule, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [rule2, index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n adds: [{ rule: rule2, index: index2 }]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n win.CSSStyleSheet.prototype.addRule = function(selector, styleBlock, index2 = this.cssRules.length) {\n const rule2 = `${selector} { ${styleBlock} }`;\n return win.CSSStyleSheet.prototype.insertRule.apply(this, [rule2, index2]);\n };\n const deleteRule = win.CSSStyleSheet.prototype.deleteRule;\n win.CSSStyleSheet.prototype.deleteRule = new Proxy(deleteRule, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n removes: [{ index: index2 }]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n win.CSSStyleSheet.prototype.removeRule = function(index2) {\n return win.CSSStyleSheet.prototype.deleteRule.apply(this, [index2]);\n };\n let replace;\n if (win.CSSStyleSheet.prototype.replace) {\n replace = win.CSSStyleSheet.prototype.replace;\n win.CSSStyleSheet.prototype.replace = new Proxy(replace, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [text] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n replace: text\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n }\n let replaceSync;\n if (win.CSSStyleSheet.prototype.replaceSync) {\n replaceSync = win.CSSStyleSheet.prototype.replaceSync;\n win.CSSStyleSheet.prototype.replaceSync = new Proxy(replaceSync, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [text] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n replaceSync: text\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n }\n const supportedNestedCSSRuleTypes = {};\n if (canMonkeyPatchNestedCSSRule(\"CSSGroupingRule\")) {\n supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\n } else {\n if (canMonkeyPatchNestedCSSRule(\"CSSMediaRule\")) {\n supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\n }\n if (canMonkeyPatchNestedCSSRule(\"CSSConditionRule\")) {\n supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\n }\n if (canMonkeyPatchNestedCSSRule(\"CSSSupportsRule\")) {\n supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\n }\n }\n const unmodifiedFunctions = {};\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n unmodifiedFunctions[typeKey] = {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n insertRule: type.prototype.insertRule,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n deleteRule: type.prototype.deleteRule\n };\n type.prototype.insertRule = new Proxy(\n unmodifiedFunctions[typeKey].insertRule,\n {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [rule2, index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n adds: [\n {\n rule: rule2,\n index: [\n ...getNestedCSSRulePositions(thisArg),\n index2 || 0\n // defaults to 0\n ]\n }\n ]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n }\n );\n type.prototype.deleteRule = new Proxy(\n unmodifiedFunctions[typeKey].deleteRule,\n {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n removes: [\n { index: [...getNestedCSSRulePositions(thisArg), index2] }\n ]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n }\n );\n });\n return callbackWrapper(() => {\n win.CSSStyleSheet.prototype.insertRule = insertRule;\n win.CSSStyleSheet.prototype.deleteRule = deleteRule;\n replace && (win.CSSStyleSheet.prototype.replace = replace);\n replaceSync && (win.CSSStyleSheet.prototype.replaceSync = replaceSync);\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\n type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\n });\n });\n}\nfunction initAdoptedStyleSheetObserver({\n mirror: mirror2,\n stylesheetManager\n}, host2) {\n var _a2, _b, _c;\n let hostId = null;\n if (host2.nodeName === \"#document\") hostId = mirror2.getId(host2);\n else hostId = mirror2.getId(index.host(host2));\n const patchTarget = host2.nodeName === \"#document\" ? (_a2 = host2.defaultView) == null ? void 0 : _a2.Document : (_c = (_b = host2.ownerDocument) == null ? void 0 : _b.defaultView) == null ? void 0 : _c.ShadowRoot;\n const originalPropertyDescriptor = (patchTarget == null ? void 0 : patchTarget.prototype) ? Object.getOwnPropertyDescriptor(\n patchTarget == null ? void 0 : patchTarget.prototype,\n \"adoptedStyleSheets\"\n ) : void 0;\n if (hostId === null || hostId === -1 || !patchTarget || !originalPropertyDescriptor)\n return () => {\n };\n Object.defineProperty(host2, \"adoptedStyleSheets\", {\n configurable: originalPropertyDescriptor.configurable,\n enumerable: originalPropertyDescriptor.enumerable,\n get() {\n var _a3;\n return (_a3 = originalPropertyDescriptor.get) == null ? void 0 : _a3.call(this);\n },\n set(sheets) {\n var _a3;\n const result2 = (_a3 = originalPropertyDescriptor.set) == null ? void 0 : _a3.call(this, sheets);\n if (hostId !== null && hostId !== -1) {\n try {\n stylesheetManager.adoptStyleSheets(sheets, hostId);\n } catch (e2) {\n }\n }\n return result2;\n }\n });\n return callbackWrapper(() => {\n Object.defineProperty(host2, \"adoptedStyleSheets\", {\n configurable: originalPropertyDescriptor.configurable,\n enumerable: originalPropertyDescriptor.enumerable,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n get: originalPropertyDescriptor.get,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n set: originalPropertyDescriptor.set\n });\n });\n}\nfunction initStyleDeclarationObserver({\n styleDeclarationCb,\n mirror: mirror2,\n ignoreCSSAttributes,\n stylesheetManager\n}, { win }) {\n const setProperty = win.CSSStyleDeclaration.prototype.setProperty;\n win.CSSStyleDeclaration.prototype.setProperty = new Proxy(setProperty, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n var _a2;\n const [property, value, priority] = argumentsList;\n if (ignoreCSSAttributes.has(property)) {\n return setProperty.apply(thisArg, [property, value, priority]);\n }\n const { id, styleId } = getIdAndStyleId(\n (_a2 = thisArg.parentRule) == null ? void 0 : _a2.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleDeclarationCb({\n id,\n styleId,\n set: {\n property,\n value,\n priority\n },\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n index: getNestedCSSRulePositions(thisArg.parentRule)\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n const removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = new Proxy(removeProperty, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n var _a2;\n const [property] = argumentsList;\n if (ignoreCSSAttributes.has(property)) {\n return removeProperty.apply(thisArg, [property]);\n }\n const { id, styleId } = getIdAndStyleId(\n (_a2 = thisArg.parentRule) == null ? void 0 : _a2.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleDeclarationCb({\n id,\n styleId,\n remove: {\n property\n },\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n index: getNestedCSSRulePositions(thisArg.parentRule)\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n return callbackWrapper(() => {\n win.CSSStyleDeclaration.prototype.setProperty = setProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\n });\n}\nfunction initMediaInteractionObserver({\n mediaInteractionCb,\n blockClass,\n blockSelector,\n mirror: mirror2,\n sampling,\n doc\n}) {\n const handler = callbackWrapper(\n (type) => throttle(\n callbackWrapper((event) => {\n const target = getEventTarget(event);\n if (!target || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n const { currentTime, volume, muted, playbackRate, loop } = target;\n mediaInteractionCb({\n type,\n id: mirror2.getId(target),\n currentTime,\n volume,\n muted,\n playbackRate,\n loop\n });\n }),\n sampling.media || 500\n )\n );\n const handlers = [\n on(\"play\", handler(MediaInteractions.Play), doc),\n on(\"pause\", handler(MediaInteractions.Pause), doc),\n on(\"seeked\", handler(MediaInteractions.Seeked), doc),\n on(\"volumechange\", handler(MediaInteractions.VolumeChange), doc),\n on(\"ratechange\", handler(MediaInteractions.RateChange), doc)\n ];\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initFontObserver({ fontCb, doc }) {\n const win = doc.defaultView;\n if (!win) {\n return () => {\n };\n }\n const handlers = [];\n const fontMap = /* @__PURE__ */ new WeakMap();\n const originalFontFace = win.FontFace;\n win.FontFace = function FontFace2(family, source, descriptors) {\n const fontFace = new originalFontFace(family, source, descriptors);\n fontMap.set(fontFace, {\n family,\n buffer: typeof source !== \"string\",\n descriptors,\n fontSource: typeof source === \"string\" ? source : JSON.stringify(Array.from(new Uint8Array(source)))\n });\n return fontFace;\n };\n const restoreHandler = patch(\n doc.fonts,\n \"add\",\n function(original) {\n return function(fontFace) {\n setTimeout(\n callbackWrapper(() => {\n const p = fontMap.get(fontFace);\n if (p) {\n fontCb(p);\n fontMap.delete(fontFace);\n }\n }),\n 0\n );\n return original.apply(this, [fontFace]);\n };\n }\n );\n handlers.push(() => {\n win.FontFace = originalFontFace;\n });\n handlers.push(restoreHandler);\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initSelectionObserver(param) {\n const { doc, mirror: mirror2, blockClass, blockSelector, selectionCb } = param;\n let collapsed = true;\n const updateSelection = callbackWrapper(() => {\n const selection = doc.getSelection();\n if (!selection || collapsed && (selection == null ? void 0 : selection.isCollapsed)) return;\n collapsed = selection.isCollapsed || false;\n const ranges = [];\n const count = selection.rangeCount || 0;\n for (let i2 = 0; i2 < count; i2++) {\n const range = selection.getRangeAt(i2);\n const { startContainer, startOffset, endContainer, endOffset } = range;\n const blocked = isBlocked(startContainer, blockClass, blockSelector, true) || isBlocked(endContainer, blockClass, blockSelector, true);\n if (blocked) continue;\n ranges.push({\n start: mirror2.getId(startContainer),\n startOffset,\n end: mirror2.getId(endContainer),\n endOffset\n });\n }\n selectionCb({ ranges });\n });\n updateSelection();\n return on(\"selectionchange\", updateSelection);\n}\nfunction initCustomElementObserver({\n doc,\n customElementCb\n}) {\n const win = doc.defaultView;\n if (!win || !win.customElements) return () => {\n };\n const restoreHandler = patch(\n win.customElements,\n \"define\",\n function(original) {\n return function(name, constructor, options) {\n try {\n customElementCb({\n define: {\n name\n }\n });\n } catch (e2) {\n console.warn(`Custom element callback failed for ${name}`);\n }\n return original.apply(this, [name, constructor, options]);\n };\n }\n );\n return restoreHandler;\n}\nfunction mergeHooks(o2, hooks) {\n const {\n mutationCb,\n mousemoveCb,\n mouseInteractionCb,\n scrollCb,\n viewportResizeCb,\n inputCb,\n mediaInteractionCb,\n styleSheetRuleCb,\n styleDeclarationCb,\n canvasMutationCb,\n fontCb,\n selectionCb,\n customElementCb\n } = o2;\n o2.mutationCb = (...p) => {\n if (hooks.mutation) {\n hooks.mutation(...p);\n }\n mutationCb(...p);\n };\n o2.mousemoveCb = (...p) => {\n if (hooks.mousemove) {\n hooks.mousemove(...p);\n }\n mousemoveCb(...p);\n };\n o2.mouseInteractionCb = (...p) => {\n if (hooks.mouseInteraction) {\n hooks.mouseInteraction(...p);\n }\n mouseInteractionCb(...p);\n };\n o2.scrollCb = (...p) => {\n if (hooks.scroll) {\n hooks.scroll(...p);\n }\n scrollCb(...p);\n };\n o2.viewportResizeCb = (...p) => {\n if (hooks.viewportResize) {\n hooks.viewportResize(...p);\n }\n viewportResizeCb(...p);\n };\n o2.inputCb = (...p) => {\n if (hooks.input) {\n hooks.input(...p);\n }\n inputCb(...p);\n };\n o2.mediaInteractionCb = (...p) => {\n if (hooks.mediaInteaction) {\n hooks.mediaInteaction(...p);\n }\n mediaInteractionCb(...p);\n };\n o2.styleSheetRuleCb = (...p) => {\n if (hooks.styleSheetRule) {\n hooks.styleSheetRule(...p);\n }\n styleSheetRuleCb(...p);\n };\n o2.styleDeclarationCb = (...p) => {\n if (hooks.styleDeclaration) {\n hooks.styleDeclaration(...p);\n }\n styleDeclarationCb(...p);\n };\n o2.canvasMutationCb = (...p) => {\n if (hooks.canvasMutation) {\n hooks.canvasMutation(...p);\n }\n canvasMutationCb(...p);\n };\n o2.fontCb = (...p) => {\n if (hooks.font) {\n hooks.font(...p);\n }\n fontCb(...p);\n };\n o2.selectionCb = (...p) => {\n if (hooks.selection) {\n hooks.selection(...p);\n }\n selectionCb(...p);\n };\n o2.customElementCb = (...c2) => {\n if (hooks.customElement) {\n hooks.customElement(...c2);\n }\n customElementCb(...c2);\n };\n}\nfunction initObservers(o2, hooks = {}) {\n const currentWindow = o2.doc.defaultView;\n if (!currentWindow) {\n return () => {\n };\n }\n mergeHooks(o2, hooks);\n let mutationObserver;\n if (o2.recordDOM) {\n mutationObserver = initMutationObserver(o2, o2.doc);\n }\n const mousemoveHandler = initMoveObserver(o2);\n const mouseInteractionHandler = initMouseInteractionObserver(o2);\n const scrollHandler = initScrollObserver(o2);\n const viewportResizeHandler = initViewportResizeObserver(o2, {\n win: currentWindow\n });\n const inputHandler = initInputObserver(o2);\n const mediaInteractionHandler = initMediaInteractionObserver(o2);\n let styleSheetObserver = () => {\n };\n let adoptedStyleSheetObserver = () => {\n };\n let styleDeclarationObserver = () => {\n };\n let fontObserver = () => {\n };\n if (o2.recordDOM) {\n styleSheetObserver = initStyleSheetObserver(o2, { win: currentWindow });\n adoptedStyleSheetObserver = initAdoptedStyleSheetObserver(o2, o2.doc);\n styleDeclarationObserver = initStyleDeclarationObserver(o2, {\n win: currentWindow\n });\n if (o2.collectFonts) {\n fontObserver = initFontObserver(o2);\n }\n }\n const selectionObserver = initSelectionObserver(o2);\n const customElementObserver = initCustomElementObserver(o2);\n const pluginHandlers = [];\n for (const plugin3 of o2.plugins) {\n pluginHandlers.push(\n plugin3.observer(plugin3.callback, currentWindow, plugin3.options)\n );\n }\n return callbackWrapper(() => {\n mutationBuffers.forEach((b) => b.reset());\n mutationObserver == null ? void 0 : mutationObserver.disconnect();\n mousemoveHandler();\n mouseInteractionHandler();\n scrollHandler();\n viewportResizeHandler();\n inputHandler();\n mediaInteractionHandler();\n styleSheetObserver();\n adoptedStyleSheetObserver();\n styleDeclarationObserver();\n fontObserver();\n selectionObserver();\n customElementObserver();\n pluginHandlers.forEach((h) => h());\n });\n}\nfunction hasNestedCSSRule(prop) {\n return typeof window[prop] !== \"undefined\";\n}\nfunction canMonkeyPatchNestedCSSRule(prop) {\n return Boolean(\n typeof window[prop] !== \"undefined\" && // Note: Generally, this check _shouldn't_ be necessary\n // However, in some scenarios (e.g. jsdom) this can sometimes fail, so we check for it here\n window[prop].prototype && \"insertRule\" in window[prop].prototype && \"deleteRule\" in window[prop].prototype\n );\n}\nclass CrossOriginIframeMirror {\n constructor(generateIdFn) {\n __publicField(this, \"iframeIdToRemoteIdMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"iframeRemoteIdToIdMap\", /* @__PURE__ */ new WeakMap());\n this.generateIdFn = generateIdFn;\n }\n getId(iframe, remoteId, idToRemoteMap, remoteToIdMap) {\n const idToRemoteIdMap = idToRemoteMap || this.getIdToRemoteIdMap(iframe);\n const remoteIdToIdMap = remoteToIdMap || this.getRemoteIdToIdMap(iframe);\n let id = idToRemoteIdMap.get(remoteId);\n if (!id) {\n id = this.generateIdFn();\n idToRemoteIdMap.set(remoteId, id);\n remoteIdToIdMap.set(id, remoteId);\n }\n return id;\n }\n getIds(iframe, remoteId) {\n const idToRemoteIdMap = this.getIdToRemoteIdMap(iframe);\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n return remoteId.map(\n (id) => this.getId(iframe, id, idToRemoteIdMap, remoteIdToIdMap)\n );\n }\n getRemoteId(iframe, id, map) {\n const remoteIdToIdMap = map || this.getRemoteIdToIdMap(iframe);\n if (typeof id !== \"number\") return id;\n const remoteId = remoteIdToIdMap.get(id);\n if (!remoteId) return -1;\n return remoteId;\n }\n getRemoteIds(iframe, ids) {\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n return ids.map((id) => this.getRemoteId(iframe, id, remoteIdToIdMap));\n }\n reset(iframe) {\n if (!iframe) {\n this.iframeIdToRemoteIdMap = /* @__PURE__ */ new WeakMap();\n this.iframeRemoteIdToIdMap = /* @__PURE__ */ new WeakMap();\n return;\n }\n this.iframeIdToRemoteIdMap.delete(iframe);\n this.iframeRemoteIdToIdMap.delete(iframe);\n }\n getIdToRemoteIdMap(iframe) {\n let idToRemoteIdMap = this.iframeIdToRemoteIdMap.get(iframe);\n if (!idToRemoteIdMap) {\n idToRemoteIdMap = /* @__PURE__ */ new Map();\n this.iframeIdToRemoteIdMap.set(iframe, idToRemoteIdMap);\n }\n return idToRemoteIdMap;\n }\n getRemoteIdToIdMap(iframe) {\n let remoteIdToIdMap = this.iframeRemoteIdToIdMap.get(iframe);\n if (!remoteIdToIdMap) {\n remoteIdToIdMap = /* @__PURE__ */ new Map();\n this.iframeRemoteIdToIdMap.set(iframe, remoteIdToIdMap);\n }\n return remoteIdToIdMap;\n }\n}\nclass IframeManager {\n constructor(options) {\n __publicField(this, \"iframes\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"crossOriginIframeMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"crossOriginIframeMirror\", new CrossOriginIframeMirror(genId));\n __publicField(this, \"crossOriginIframeStyleMirror\");\n __publicField(this, \"crossOriginIframeRootIdMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"mirror\");\n __publicField(this, \"mutationCb\");\n __publicField(this, \"wrappedEmit\");\n __publicField(this, \"loadListener\");\n __publicField(this, \"stylesheetManager\");\n __publicField(this, \"recordCrossOriginIframes\");\n this.mutationCb = options.mutationCb;\n this.wrappedEmit = options.wrappedEmit;\n this.stylesheetManager = options.stylesheetManager;\n this.recordCrossOriginIframes = options.recordCrossOriginIframes;\n this.crossOriginIframeStyleMirror = new CrossOriginIframeMirror(\n this.stylesheetManager.styleMirror.generateId.bind(\n this.stylesheetManager.styleMirror\n )\n );\n this.mirror = options.mirror;\n if (this.recordCrossOriginIframes) {\n window.addEventListener(\"message\", this.handleMessage.bind(this));\n }\n }\n addIframe(iframeEl) {\n this.iframes.set(iframeEl, true);\n if (iframeEl.contentWindow)\n this.crossOriginIframeMap.set(iframeEl.contentWindow, iframeEl);\n }\n addLoadListener(cb) {\n this.loadListener = cb;\n }\n attachIframe(iframeEl, childSn) {\n var _a2, _b;\n this.mutationCb({\n adds: [\n {\n parentId: this.mirror.getId(iframeEl),\n nextId: null,\n node: childSn\n }\n ],\n removes: [],\n texts: [],\n attributes: [],\n isAttachIframe: true\n });\n if (this.recordCrossOriginIframes)\n (_a2 = iframeEl.contentWindow) == null ? void 0 : _a2.addEventListener(\n \"message\",\n this.handleMessage.bind(this)\n );\n (_b = this.loadListener) == null ? void 0 : _b.call(this, iframeEl);\n if (iframeEl.contentDocument && iframeEl.contentDocument.adoptedStyleSheets && iframeEl.contentDocument.adoptedStyleSheets.length > 0)\n this.stylesheetManager.adoptStyleSheets(\n iframeEl.contentDocument.adoptedStyleSheets,\n this.mirror.getId(iframeEl.contentDocument)\n );\n }\n handleMessage(message) {\n const crossOriginMessageEvent = message;\n if (crossOriginMessageEvent.data.type !== \"rrweb\" || // To filter out the rrweb messages which are forwarded by some sites.\n crossOriginMessageEvent.origin !== crossOriginMessageEvent.data.origin)\n return;\n const iframeSourceWindow = message.source;\n if (!iframeSourceWindow) return;\n const iframeEl = this.crossOriginIframeMap.get(message.source);\n if (!iframeEl) return;\n const transformedEvent = this.transformCrossOriginEvent(\n iframeEl,\n crossOriginMessageEvent.data.event\n );\n if (transformedEvent)\n this.wrappedEmit(\n transformedEvent,\n crossOriginMessageEvent.data.isCheckout\n );\n }\n transformCrossOriginEvent(iframeEl, e2) {\n var _a2;\n switch (e2.type) {\n case EventType.FullSnapshot: {\n this.crossOriginIframeMirror.reset(iframeEl);\n this.crossOriginIframeStyleMirror.reset(iframeEl);\n this.replaceIdOnNode(e2.data.node, iframeEl);\n const rootId = e2.data.node.id;\n this.crossOriginIframeRootIdMap.set(iframeEl, rootId);\n this.patchRootIdOnNode(e2.data.node, rootId);\n return {\n timestamp: e2.timestamp,\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Mutation,\n adds: [\n {\n parentId: this.mirror.getId(iframeEl),\n nextId: null,\n node: e2.data.node\n }\n ],\n removes: [],\n texts: [],\n attributes: [],\n isAttachIframe: true\n }\n };\n }\n case EventType.Meta:\n case EventType.Load:\n case EventType.DomContentLoaded: {\n return false;\n }\n case EventType.Plugin: {\n return e2;\n }\n case EventType.Custom: {\n this.replaceIds(\n e2.data.payload,\n iframeEl,\n [\"id\", \"parentId\", \"previousId\", \"nextId\"]\n );\n return e2;\n }\n case EventType.IncrementalSnapshot: {\n switch (e2.data.source) {\n case IncrementalSource.Mutation: {\n e2.data.adds.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\n \"parentId\",\n \"nextId\",\n \"previousId\"\n ]);\n this.replaceIdOnNode(n2.node, iframeEl);\n const rootId = this.crossOriginIframeRootIdMap.get(iframeEl);\n rootId && this.patchRootIdOnNode(n2.node, rootId);\n });\n e2.data.removes.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\"parentId\", \"id\"]);\n });\n e2.data.attributes.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\"id\"]);\n });\n e2.data.texts.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\"id\"]);\n });\n return e2;\n }\n case IncrementalSource.Drag:\n case IncrementalSource.TouchMove:\n case IncrementalSource.MouseMove: {\n e2.data.positions.forEach((p) => {\n this.replaceIds(p, iframeEl, [\"id\"]);\n });\n return e2;\n }\n case IncrementalSource.ViewportResize: {\n return false;\n }\n case IncrementalSource.MediaInteraction:\n case IncrementalSource.MouseInteraction:\n case IncrementalSource.Scroll:\n case IncrementalSource.CanvasMutation:\n case IncrementalSource.Input: {\n this.replaceIds(e2.data, iframeEl, [\"id\"]);\n return e2;\n }\n case IncrementalSource.StyleSheetRule:\n case IncrementalSource.StyleDeclaration: {\n this.replaceIds(e2.data, iframeEl, [\"id\"]);\n this.replaceStyleIds(e2.data, iframeEl, [\"styleId\"]);\n return e2;\n }\n case IncrementalSource.Font: {\n return e2;\n }\n case IncrementalSource.Selection: {\n e2.data.ranges.forEach((range) => {\n this.replaceIds(range, iframeEl, [\"start\", \"end\"]);\n });\n return e2;\n }\n case IncrementalSource.AdoptedStyleSheet: {\n this.replaceIds(e2.data, iframeEl, [\"id\"]);\n this.replaceStyleIds(e2.data, iframeEl, [\"styleIds\"]);\n (_a2 = e2.data.styles) == null ? void 0 : _a2.forEach((style) => {\n this.replaceStyleIds(style, iframeEl, [\"styleId\"]);\n });\n return e2;\n }\n }\n }\n }\n return false;\n }\n replace(iframeMirror, obj, iframeEl, keys) {\n for (const key of keys) {\n if (!Array.isArray(obj[key]) && typeof obj[key] !== \"number\") continue;\n if (Array.isArray(obj[key])) {\n obj[key] = iframeMirror.getIds(\n iframeEl,\n obj[key]\n );\n } else {\n obj[key] = iframeMirror.getId(iframeEl, obj[key]);\n }\n }\n return obj;\n }\n replaceIds(obj, iframeEl, keys) {\n return this.replace(this.crossOriginIframeMirror, obj, iframeEl, keys);\n }\n replaceStyleIds(obj, iframeEl, keys) {\n return this.replace(this.crossOriginIframeStyleMirror, obj, iframeEl, keys);\n }\n replaceIdOnNode(node2, iframeEl) {\n this.replaceIds(node2, iframeEl, [\"id\", \"rootId\"]);\n if (\"childNodes\" in node2) {\n node2.childNodes.forEach((child) => {\n this.replaceIdOnNode(child, iframeEl);\n });\n }\n }\n patchRootIdOnNode(node2, rootId) {\n if (node2.type !== NodeType.Document && !node2.rootId) node2.rootId = rootId;\n if (\"childNodes\" in node2) {\n node2.childNodes.forEach((child) => {\n this.patchRootIdOnNode(child, rootId);\n });\n }\n }\n}\nclass ShadowDomManager {\n constructor(options) {\n __publicField(this, \"shadowDoms\", /* @__PURE__ */ new WeakSet());\n __publicField(this, \"mutationCb\");\n __publicField(this, \"scrollCb\");\n __publicField(this, \"bypassOptions\");\n __publicField(this, \"mirror\");\n __publicField(this, \"restoreHandlers\", []);\n this.mutationCb = options.mutationCb;\n this.scrollCb = options.scrollCb;\n this.bypassOptions = options.bypassOptions;\n this.mirror = options.mirror;\n this.init();\n }\n init() {\n this.reset();\n this.patchAttachShadow(Element, document);\n }\n addShadowRoot(shadowRoot2, doc) {\n if (!isNativeShadowDom(shadowRoot2)) return;\n if (this.shadowDoms.has(shadowRoot2)) return;\n this.shadowDoms.add(shadowRoot2);\n const observer = initMutationObserver(\n {\n ...this.bypassOptions,\n doc,\n mutationCb: this.mutationCb,\n mirror: this.mirror,\n shadowDomManager: this\n },\n shadowRoot2\n );\n this.restoreHandlers.push(() => observer.disconnect());\n this.restoreHandlers.push(\n initScrollObserver({\n ...this.bypassOptions,\n scrollCb: this.scrollCb,\n // https://gist.github.com/praveenpuglia/0832da687ed5a5d7a0907046c9ef1813\n // scroll is not allowed to pass the boundary, so we need to listen the shadow document\n doc: shadowRoot2,\n mirror: this.mirror\n })\n );\n setTimeout(() => {\n if (shadowRoot2.adoptedStyleSheets && shadowRoot2.adoptedStyleSheets.length > 0)\n this.bypassOptions.stylesheetManager.adoptStyleSheets(\n shadowRoot2.adoptedStyleSheets,\n this.mirror.getId(index.host(shadowRoot2))\n );\n this.restoreHandlers.push(\n initAdoptedStyleSheetObserver(\n {\n mirror: this.mirror,\n stylesheetManager: this.bypassOptions.stylesheetManager\n },\n shadowRoot2\n )\n );\n }, 0);\n }\n /**\n * Monkey patch 'attachShadow' of an IFrameElement to observe newly added shadow doms.\n */\n observeAttachShadow(iframeElement) {\n if (!iframeElement.contentWindow || !iframeElement.contentDocument) return;\n this.patchAttachShadow(\n iframeElement.contentWindow.Element,\n iframeElement.contentDocument\n );\n }\n /**\n * Patch 'attachShadow' to observe newly added shadow doms.\n */\n patchAttachShadow(element, doc) {\n const manager = this;\n this.restoreHandlers.push(\n patch(\n element.prototype,\n \"attachShadow\",\n function(original) {\n return function(option) {\n const sRoot = original.call(this, option);\n const shadowRootEl = index.shadowRoot(this);\n if (shadowRootEl && inDom(this))\n manager.addShadowRoot(shadowRootEl, doc);\n return sRoot;\n };\n }\n )\n );\n }\n reset() {\n this.restoreHandlers.forEach((handler) => {\n try {\n handler();\n } catch (e2) {\n }\n });\n this.restoreHandlers = [];\n this.shadowDoms = /* @__PURE__ */ new WeakSet();\n }\n}\nvar chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nvar lookup = typeof Uint8Array === \"undefined\" ? [] : new Uint8Array(256);\nfor (var i$1 = 0; i$1 < chars.length; i$1++) {\n lookup[chars.charCodeAt(i$1)] = i$1;\n}\nvar encode = function(arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i2, len = bytes.length, base64 = \"\";\n for (i2 = 0; i2 < len; i2 += 3) {\n base64 += chars[bytes[i2] >> 2];\n base64 += chars[(bytes[i2] & 3) << 4 | bytes[i2 + 1] >> 4];\n base64 += chars[(bytes[i2 + 1] & 15) << 2 | bytes[i2 + 2] >> 6];\n base64 += chars[bytes[i2 + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + \"=\";\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + \"==\";\n }\n return base64;\n};\nconst canvasVarMap = /* @__PURE__ */ new Map();\nfunction variableListFor$1(ctx, ctor) {\n let contextMap = canvasVarMap.get(ctx);\n if (!contextMap) {\n contextMap = /* @__PURE__ */ new Map();\n canvasVarMap.set(ctx, contextMap);\n }\n if (!contextMap.has(ctor)) {\n contextMap.set(ctor, []);\n }\n return contextMap.get(ctor);\n}\nconst saveWebGLVar = (value, win, ctx) => {\n if (!value || !(isInstanceOfWebGLObject(value, win) || typeof value === \"object\"))\n return;\n const name = value.constructor.name;\n const list2 = variableListFor$1(ctx, name);\n let index2 = list2.indexOf(value);\n if (index2 === -1) {\n index2 = list2.length;\n list2.push(value);\n }\n return index2;\n};\nfunction serializeArg(value, win, ctx) {\n if (value instanceof Array) {\n return value.map((arg) => serializeArg(arg, win, ctx));\n } else if (value === null) {\n return value;\n } else if (value instanceof Float32Array || value instanceof Float64Array || value instanceof Int32Array || value instanceof Uint32Array || value instanceof Uint8Array || value instanceof Uint16Array || value instanceof Int16Array || value instanceof Int8Array || value instanceof Uint8ClampedArray) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [Object.values(value)]\n };\n } else if (\n // SharedArrayBuffer disabled on most browsers due to spectre.\n // More info: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/SharedArrayBuffer\n // value instanceof SharedArrayBuffer ||\n value instanceof ArrayBuffer\n ) {\n const name = value.constructor.name;\n const base64 = encode(value);\n return {\n rr_type: name,\n base64\n };\n } else if (value instanceof DataView) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [\n serializeArg(value.buffer, win, ctx),\n value.byteOffset,\n value.byteLength\n ]\n };\n } else if (value instanceof HTMLImageElement) {\n const name = value.constructor.name;\n const { src } = value;\n return {\n rr_type: name,\n src\n };\n } else if (value instanceof HTMLCanvasElement) {\n const name = \"HTMLImageElement\";\n const src = value.toDataURL();\n return {\n rr_type: name,\n src\n };\n } else if (value instanceof ImageData) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [serializeArg(value.data, win, ctx), value.width, value.height]\n };\n } else if (isInstanceOfWebGLObject(value, win) || typeof value === \"object\") {\n const name = value.constructor.name;\n const index2 = saveWebGLVar(value, win, ctx);\n return {\n rr_type: name,\n index: index2\n };\n }\n return value;\n}\nconst serializeArgs = (args, win, ctx) => {\n return args.map((arg) => serializeArg(arg, win, ctx));\n};\nconst isInstanceOfWebGLObject = (value, win) => {\n const webGLConstructorNames = [\n \"WebGLActiveInfo\",\n \"WebGLBuffer\",\n \"WebGLFramebuffer\",\n \"WebGLProgram\",\n \"WebGLRenderbuffer\",\n \"WebGLShader\",\n \"WebGLShaderPrecisionFormat\",\n \"WebGLTexture\",\n \"WebGLUniformLocation\",\n \"WebGLVertexArrayObject\",\n // In old Chrome versions, value won't be an instanceof WebGLVertexArrayObject.\n \"WebGLVertexArrayObjectOES\"\n ];\n const supportedWebGLConstructorNames = webGLConstructorNames.filter(\n (name) => typeof win[name] === \"function\"\n );\n return Boolean(\n supportedWebGLConstructorNames.find(\n (name) => value instanceof win[name]\n )\n );\n};\nfunction initCanvas2DMutationObserver(cb, win, blockClass, blockSelector) {\n const handlers = [];\n const props2D = Object.getOwnPropertyNames(\n win.CanvasRenderingContext2D.prototype\n );\n for (const prop of props2D) {\n try {\n if (typeof win.CanvasRenderingContext2D.prototype[prop] !== \"function\") {\n continue;\n }\n const restoreHandler = patch(\n win.CanvasRenderingContext2D.prototype,\n prop,\n function(original) {\n return function(...args) {\n if (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\n setTimeout(() => {\n const recordArgs = serializeArgs(args, win, this);\n cb(this.canvas, {\n type: CanvasContext[\"2D\"],\n property: prop,\n args: recordArgs\n });\n }, 0);\n }\n return original.apply(this, args);\n };\n }\n );\n handlers.push(restoreHandler);\n } catch {\n const hookHandler = hookSetter(\n win.CanvasRenderingContext2D.prototype,\n prop,\n {\n set(v2) {\n cb(this.canvas, {\n type: CanvasContext[\"2D\"],\n property: prop,\n args: [v2],\n setter: true\n });\n }\n }\n );\n handlers.push(hookHandler);\n }\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\nfunction getNormalizedContextName(contextType) {\n return contextType === \"experimental-webgl\" ? \"webgl\" : contextType;\n}\nfunction initCanvasContextObserver(win, blockClass, blockSelector, setPreserveDrawingBufferToTrue) {\n const handlers = [];\n try {\n const restoreHandler = patch(\n win.HTMLCanvasElement.prototype,\n \"getContext\",\n function(original) {\n return function(contextType, ...args) {\n if (!isBlocked(this, blockClass, blockSelector, true)) {\n const ctxName = getNormalizedContextName(contextType);\n if (!(\"__context\" in this)) this.__context = ctxName;\n if (setPreserveDrawingBufferToTrue && [\"webgl\", \"webgl2\"].includes(ctxName)) {\n if (args[0] && typeof args[0] === \"object\") {\n const contextAttributes = args[0];\n if (!contextAttributes.preserveDrawingBuffer) {\n contextAttributes.preserveDrawingBuffer = true;\n }\n } else {\n args.splice(0, 1, {\n preserveDrawingBuffer: true\n });\n }\n }\n }\n return original.apply(this, [contextType, ...args]);\n };\n }\n );\n handlers.push(restoreHandler);\n } catch {\n console.error(\"failed to patch HTMLCanvasElement.prototype.getContext\");\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\nfunction patchGLPrototype(prototype, type, cb, blockClass, blockSelector, win) {\n const handlers = [];\n const props = Object.getOwnPropertyNames(prototype);\n for (const prop of props) {\n if (\n //prop.startsWith('get') || // e.g. getProgramParameter, but too risky\n [\n \"isContextLost\",\n \"canvas\",\n \"drawingBufferWidth\",\n \"drawingBufferHeight\"\n ].includes(prop)\n ) {\n continue;\n }\n try {\n if (typeof prototype[prop] !== \"function\") {\n continue;\n }\n const restoreHandler = patch(\n prototype,\n prop,\n function(original) {\n return function(...args) {\n const result2 = original.apply(this, args);\n saveWebGLVar(result2, win, this);\n if (\"tagName\" in this.canvas && !isBlocked(this.canvas, blockClass, blockSelector, true)) {\n const recordArgs = serializeArgs(args, win, this);\n const mutation = {\n type,\n property: prop,\n args: recordArgs\n };\n cb(this.canvas, mutation);\n }\n return result2;\n };\n }\n );\n handlers.push(restoreHandler);\n } catch {\n const hookHandler = hookSetter(prototype, prop, {\n set(v2) {\n cb(this.canvas, {\n type,\n property: prop,\n args: [v2],\n setter: true\n });\n }\n });\n handlers.push(hookHandler);\n }\n }\n return handlers;\n}\nfunction initCanvasWebGLMutationObserver(cb, win, blockClass, blockSelector) {\n const handlers = [];\n handlers.push(\n ...patchGLPrototype(\n win.WebGLRenderingContext.prototype,\n CanvasContext.WebGL,\n cb,\n blockClass,\n blockSelector,\n win\n )\n );\n if (typeof win.WebGL2RenderingContext !== \"undefined\") {\n handlers.push(\n ...patchGLPrototype(\n win.WebGL2RenderingContext.prototype,\n CanvasContext.WebGL2,\n cb,\n blockClass,\n blockSelector,\n win\n )\n );\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\nconst encodedJs = \"KGZ1bmN0aW9uKCkgewogICJ1c2Ugc3RyaWN0IjsKICB2YXIgY2hhcnMgPSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7CiAgdmFyIGxvb2t1cCA9IHR5cGVvZiBVaW50OEFycmF5ID09PSAidW5kZWZpbmVkIiA/IFtdIDogbmV3IFVpbnQ4QXJyYXkoMjU2KTsKICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYXJzLmxlbmd0aDsgaSsrKSB7CiAgICBsb29rdXBbY2hhcnMuY2hhckNvZGVBdChpKV0gPSBpOwogIH0KICB2YXIgZW5jb2RlID0gZnVuY3Rpb24oYXJyYXlidWZmZXIpIHsKICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGFycmF5YnVmZmVyKSwgaTIsIGxlbiA9IGJ5dGVzLmxlbmd0aCwgYmFzZTY0ID0gIiI7CiAgICBmb3IgKGkyID0gMDsgaTIgPCBsZW47IGkyICs9IDMpIHsKICAgICAgYmFzZTY0ICs9IGNoYXJzW2J5dGVzW2kyXSA+PiAyXTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMl0gJiAzKSA8PCA0IHwgYnl0ZXNbaTIgKyAxXSA+PiA0XTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMiArIDFdICYgMTUpIDw8IDIgfCBieXRlc1tpMiArIDJdID4+IDZdOwogICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaTIgKyAyXSAmIDYzXTsKICAgIH0KICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgIj0iOwogICAgfSBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgIj09IjsKICAgIH0KICAgIHJldHVybiBiYXNlNjQ7CiAgfTsKICBjb25zdCBsYXN0QmxvYk1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7CiAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTsKICBhc3luYyBmdW5jdGlvbiBnZXRUcmFuc3BhcmVudEJsb2JGb3Iod2lkdGgsIGhlaWdodCwgZGF0YVVSTE9wdGlvbnMpIHsKICAgIGNvbnN0IGlkID0gYCR7d2lkdGh9LSR7aGVpZ2h0fWA7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBpZiAodHJhbnNwYXJlbnRCbG9iTWFwLmhhcyhpZCkpIHJldHVybiB0cmFuc3BhcmVudEJsb2JNYXAuZ2V0KGlkKTsKICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsKICAgICAgb2Zmc2NyZWVuLmdldENvbnRleHQoIjJkIik7CiAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCBvZmZzY3JlZW4uY29udmVydFRvQmxvYihkYXRhVVJMT3B0aW9ucyk7CiAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gYXdhaXQgYmxvYi5hcnJheUJ1ZmZlcigpOwogICAgICBjb25zdCBiYXNlNjQgPSBlbmNvZGUoYXJyYXlCdWZmZXIpOwogICAgICB0cmFuc3BhcmVudEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICByZXR1cm4gYmFzZTY0OwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuICIiOwogICAgfQogIH0KICBjb25zdCB3b3JrZXIgPSBzZWxmOwogIHdvcmtlci5vbm1lc3NhZ2UgPSBhc3luYyBmdW5jdGlvbihlKSB7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBjb25zdCB7IGlkLCBiaXRtYXAsIHdpZHRoLCBoZWlnaHQsIGRhdGFVUkxPcHRpb25zIH0gPSBlLmRhdGE7CiAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKAogICAgICAgIHdpZHRoLAogICAgICAgIGhlaWdodCwKICAgICAgICBkYXRhVVJMT3B0aW9ucwogICAgICApOwogICAgICBjb25zdCBvZmZzY3JlZW4gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpOwogICAgICBjb25zdCBjdHggPSBvZmZzY3JlZW4uZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgY3R4LmRyYXdJbWFnZShiaXRtYXAsIDAsIDApOwogICAgICBiaXRtYXAuY2xvc2UoKTsKICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IG9mZnNjcmVlbi5jb252ZXJ0VG9CbG9iKGRhdGFVUkxPcHRpb25zKTsKICAgICAgY29uc3QgdHlwZSA9IGJsb2IudHlwZTsKICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBhd2FpdCBibG9iLmFycmF5QnVmZmVyKCk7CiAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7CiAgICAgIGlmICghbGFzdEJsb2JNYXAuaGFzKGlkKSAmJiBhd2FpdCB0cmFuc3BhcmVudEJhc2U2NCA9PT0gYmFzZTY0KSB7CiAgICAgICAgbGFzdEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICAgIHJldHVybiB3b3JrZXIucG9zdE1lc3NhZ2UoeyBpZCB9KTsKICAgICAgfQogICAgICBpZiAobGFzdEJsb2JNYXAuZ2V0KGlkKSA9PT0gYmFzZTY0KSByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQgfSk7CiAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7CiAgICAgICAgaWQsCiAgICAgICAgdHlwZSwKICAgICAgICBiYXNlNjQsCiAgICAgICAgd2lkdGgsCiAgICAgICAgaGVpZ2h0CiAgICAgIH0pOwogICAgICBsYXN0QmxvYk1hcC5zZXQoaWQsIGJhc2U2NCk7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IGUuZGF0YS5pZCB9KTsKICAgIH0KICB9Owp9KSgpOwovLyMgc291cmNlTWFwcGluZ1VSTD1pbWFnZS1iaXRtYXAtZGF0YS11cmwtd29ya2VyLUlKcEM3Z19iLmpzLm1hcAo=\";\nconst decodeBase64 = (base64) => Uint8Array.from(atob(base64), (c2) => c2.charCodeAt(0));\nconst blob = typeof window !== \"undefined\" && window.Blob && new Blob([decodeBase64(encodedJs)], { type: \"text/javascript;charset=utf-8\" });\nfunction WorkerWrapper(options) {\n let objURL;\n try {\n objURL = blob && (window.URL || window.webkitURL).createObjectURL(blob);\n if (!objURL) throw \"\";\n const worker = new Worker(objURL, {\n name: options == null ? void 0 : options.name\n });\n worker.addEventListener(\"error\", () => {\n (window.URL || window.webkitURL).revokeObjectURL(objURL);\n });\n return worker;\n } catch (e2) {\n return new Worker(\n \"data:text/javascript;base64,\" + encodedJs,\n {\n name: options == null ? void 0 : options.name\n }\n );\n } finally {\n objURL && (window.URL || window.webkitURL).revokeObjectURL(objURL);\n }\n}\nclass CanvasManager {\n constructor(options) {\n __publicField(this, \"pendingCanvasMutations\", /* @__PURE__ */ new Map());\n __publicField(this, \"rafStamps\", { latestId: 0, invokeId: null });\n __publicField(this, \"mirror\");\n __publicField(this, \"mutationCb\");\n __publicField(this, \"resetObservers\");\n __publicField(this, \"frozen\", false);\n __publicField(this, \"locked\", false);\n __publicField(this, \"processMutation\", (target, mutation) => {\n const newFrame = this.rafStamps.invokeId && this.rafStamps.latestId !== this.rafStamps.invokeId;\n if (newFrame || !this.rafStamps.invokeId)\n this.rafStamps.invokeId = this.rafStamps.latestId;\n if (!this.pendingCanvasMutations.has(target)) {\n this.pendingCanvasMutations.set(target, []);\n }\n this.pendingCanvasMutations.get(target).push(mutation);\n });\n const {\n sampling = \"all\",\n win,\n blockClass,\n blockSelector,\n recordCanvas,\n dataURLOptions\n } = options;\n this.mutationCb = options.mutationCb;\n this.mirror = options.mirror;\n if (recordCanvas && sampling === \"all\")\n this.initCanvasMutationObserver(win, blockClass, blockSelector);\n if (recordCanvas && typeof sampling === \"number\")\n this.initCanvasFPSObserver(sampling, win, blockClass, blockSelector, {\n dataURLOptions\n });\n }\n reset() {\n this.pendingCanvasMutations.clear();\n this.resetObservers && this.resetObservers();\n }\n freeze() {\n this.frozen = true;\n }\n unfreeze() {\n this.frozen = false;\n }\n lock() {\n this.locked = true;\n }\n unlock() {\n this.locked = false;\n }\n initCanvasFPSObserver(fps, win, blockClass, blockSelector, options) {\n const canvasContextReset = initCanvasContextObserver(\n win,\n blockClass,\n blockSelector,\n true\n );\n const snapshotInProgressMap = /* @__PURE__ */ new Map();\n const worker = new WorkerWrapper();\n worker.onmessage = (e2) => {\n const { id } = e2.data;\n snapshotInProgressMap.set(id, false);\n if (!(\"base64\" in e2.data)) return;\n const { base64, type, width, height } = e2.data;\n this.mutationCb({\n id,\n type: CanvasContext[\"2D\"],\n commands: [\n {\n property: \"clearRect\",\n // wipe canvas\n args: [0, 0, width, height]\n },\n {\n property: \"drawImage\",\n // draws (semi-transparent) image\n args: [\n {\n rr_type: \"ImageBitmap\",\n args: [\n {\n rr_type: \"Blob\",\n data: [{ rr_type: \"ArrayBuffer\", base64 }],\n type\n }\n ]\n },\n 0,\n 0\n ]\n }\n ]\n });\n };\n const timeBetweenSnapshots = 1e3 / fps;\n let lastSnapshotTime = 0;\n let rafId;\n const getCanvas = () => {\n const matchedCanvas = [];\n win.document.querySelectorAll(\"canvas\").forEach((canvas) => {\n if (!isBlocked(canvas, blockClass, blockSelector, true)) {\n matchedCanvas.push(canvas);\n }\n });\n return matchedCanvas;\n };\n const takeCanvasSnapshots = (timestamp) => {\n if (lastSnapshotTime && timestamp - lastSnapshotTime < timeBetweenSnapshots) {\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n return;\n }\n lastSnapshotTime = timestamp;\n getCanvas().forEach(async (canvas) => {\n var _a2;\n const id = this.mirror.getId(canvas);\n if (snapshotInProgressMap.get(id)) return;\n if (canvas.width === 0 || canvas.height === 0) return;\n snapshotInProgressMap.set(id, true);\n if ([\"webgl\", \"webgl2\"].includes(canvas.__context)) {\n const context = canvas.getContext(canvas.__context);\n if (((_a2 = context == null ? void 0 : context.getContextAttributes()) == null ? void 0 : _a2.preserveDrawingBuffer) === false) {\n context.clear(context.COLOR_BUFFER_BIT);\n }\n }\n const bitmap = await createImageBitmap(canvas);\n worker.postMessage(\n {\n id,\n bitmap,\n width: canvas.width,\n height: canvas.height,\n dataURLOptions: options.dataURLOptions\n },\n [bitmap]\n );\n });\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n };\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n this.resetObservers = () => {\n canvasContextReset();\n cancelAnimationFrame(rafId);\n };\n }\n initCanvasMutationObserver(win, blockClass, blockSelector) {\n this.startRAFTimestamping();\n this.startPendingCanvasMutationFlusher();\n const canvasContextReset = initCanvasContextObserver(\n win,\n blockClass,\n blockSelector,\n false\n );\n const canvas2DReset = initCanvas2DMutationObserver(\n this.processMutation.bind(this),\n win,\n blockClass,\n blockSelector\n );\n const canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(\n this.processMutation.bind(this),\n win,\n blockClass,\n blockSelector\n );\n this.resetObservers = () => {\n canvasContextReset();\n canvas2DReset();\n canvasWebGL1and2Reset();\n };\n }\n startPendingCanvasMutationFlusher() {\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\n }\n startRAFTimestamping() {\n const setLatestRAFTimestamp = (timestamp) => {\n this.rafStamps.latestId = timestamp;\n requestAnimationFrame(setLatestRAFTimestamp);\n };\n requestAnimationFrame(setLatestRAFTimestamp);\n }\n flushPendingCanvasMutations() {\n this.pendingCanvasMutations.forEach(\n (_values, canvas) => {\n const id = this.mirror.getId(canvas);\n this.flushPendingCanvasMutationFor(canvas, id);\n }\n );\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\n }\n flushPendingCanvasMutationFor(canvas, id) {\n if (this.frozen || this.locked) {\n return;\n }\n const valuesWithType = this.pendingCanvasMutations.get(canvas);\n if (!valuesWithType || id === -1) return;\n const values = valuesWithType.map((value) => {\n const { type: type2, ...rest } = value;\n return rest;\n });\n const { type } = valuesWithType[0];\n this.mutationCb({ id, type, commands: values });\n this.pendingCanvasMutations.delete(canvas);\n }\n}\nclass StylesheetManager {\n constructor(options) {\n __publicField(this, \"trackedLinkElements\", /* @__PURE__ */ new WeakSet());\n __publicField(this, \"mutationCb\");\n __publicField(this, \"adoptedStyleSheetCb\");\n __publicField(this, \"styleMirror\", new StyleSheetMirror());\n this.mutationCb = options.mutationCb;\n this.adoptedStyleSheetCb = options.adoptedStyleSheetCb;\n }\n attachLinkElement(linkEl, childSn) {\n if (\"_cssText\" in childSn.attributes)\n this.mutationCb({\n adds: [],\n removes: [],\n texts: [],\n attributes: [\n {\n id: childSn.id,\n attributes: childSn.attributes\n }\n ]\n });\n this.trackLinkElement(linkEl);\n }\n trackLinkElement(linkEl) {\n if (this.trackedLinkElements.has(linkEl)) return;\n this.trackedLinkElements.add(linkEl);\n this.trackStylesheetInLinkElement(linkEl);\n }\n adoptStyleSheets(sheets, hostId) {\n if (sheets.length === 0) return;\n const adoptedStyleSheetData = {\n id: hostId,\n styleIds: []\n };\n const styles = [];\n for (const sheet of sheets) {\n let styleId;\n if (!this.styleMirror.has(sheet)) {\n styleId = this.styleMirror.add(sheet);\n styles.push({\n styleId,\n rules: Array.from(sheet.rules || CSSRule, (r2, index2) => ({\n rule: stringifyRule(r2, sheet.href),\n index: index2\n }))\n });\n } else styleId = this.styleMirror.getId(sheet);\n adoptedStyleSheetData.styleIds.push(styleId);\n }\n if (styles.length > 0) adoptedStyleSheetData.styles = styles;\n this.adoptedStyleSheetCb(adoptedStyleSheetData);\n }\n reset() {\n this.styleMirror.reset();\n this.trackedLinkElements = /* @__PURE__ */ new WeakSet();\n }\n // TODO: take snapshot on stylesheet reload by applying event listener\n trackStylesheetInLinkElement(_linkEl) {\n }\n}\nclass ProcessedNodeManager {\n constructor() {\n __publicField(this, \"nodeMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"active\", false);\n }\n inOtherBuffer(node2, thisBuffer) {\n const buffers = this.nodeMap.get(node2);\n return buffers && Array.from(buffers).some((buffer) => buffer !== thisBuffer);\n }\n add(node2, buffer) {\n if (!this.active) {\n this.active = true;\n requestAnimationFrame(() => {\n this.nodeMap = /* @__PURE__ */ new WeakMap();\n this.active = false;\n });\n }\n this.nodeMap.set(node2, (this.nodeMap.get(node2) || /* @__PURE__ */ new Set()).add(buffer));\n }\n destroy() {\n }\n}\nlet wrappedEmit;\nlet takeFullSnapshot$1;\nlet canvasManager;\nlet recording = false;\ntry {\n if (Array.from([1], (x2) => x2 * 2)[0] !== 2) {\n const cleanFrame = document.createElement(\"iframe\");\n document.body.appendChild(cleanFrame);\n Array.from = ((_a = cleanFrame.contentWindow) == null ? void 0 : _a.Array.from) || Array.from;\n document.body.removeChild(cleanFrame);\n }\n} catch (err) {\n console.debug(\"Unable to override Array.from\", err);\n}\nconst mirror = createMirror$2();\nfunction record(options = {}) {\n const {\n emit,\n checkoutEveryNms,\n checkoutEveryNth,\n blockClass = \"rr-block\",\n blockSelector = null,\n ignoreClass = \"rr-ignore\",\n ignoreSelector = null,\n maskTextClass = \"rr-mask\",\n maskTextSelector = null,\n inlineStylesheet = true,\n maskAllInputs,\n maskInputOptions: _maskInputOptions,\n slimDOMOptions: _slimDOMOptions,\n maskInputFn,\n maskTextFn,\n hooks,\n packFn,\n sampling = {},\n dataURLOptions = {},\n mousemoveWait,\n recordDOM = true,\n recordCanvas = false,\n recordCrossOriginIframes = false,\n recordAfter = options.recordAfter === \"DOMContentLoaded\" ? options.recordAfter : \"load\",\n userTriggeredOnInput = false,\n collectFonts = false,\n inlineImages = false,\n plugins,\n keepIframeSrcFn = () => false,\n ignoreCSSAttributes = /* @__PURE__ */ new Set([]),\n errorHandler: errorHandler2\n } = options;\n registerErrorHandler(errorHandler2);\n const inEmittingFrame = recordCrossOriginIframes ? window.parent === window : true;\n let passEmitsToParent = false;\n if (!inEmittingFrame) {\n try {\n if (window.parent.document) {\n passEmitsToParent = false;\n }\n } catch (e2) {\n passEmitsToParent = true;\n }\n }\n if (inEmittingFrame && !emit) {\n throw new Error(\"emit function is required\");\n }\n if (!inEmittingFrame && !passEmitsToParent) {\n return () => {\n };\n }\n if (mousemoveWait !== void 0 && sampling.mousemove === void 0) {\n sampling.mousemove = mousemoveWait;\n }\n mirror.reset();\n const maskInputOptions = maskAllInputs === true ? {\n color: true,\n date: true,\n \"datetime-local\": true,\n email: true,\n month: true,\n number: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true,\n textarea: true,\n select: true,\n password: true\n } : _maskInputOptions !== void 0 ? _maskInputOptions : { password: true };\n const slimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === \"all\" ? {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaVerification: true,\n // the following are off for slimDOMOptions === true,\n // as they destroy some (hidden) info:\n headMetaAuthorship: _slimDOMOptions === \"all\",\n headMetaDescKeywords: _slimDOMOptions === \"all\",\n headTitleMutations: _slimDOMOptions === \"all\"\n } : _slimDOMOptions ? _slimDOMOptions : {};\n polyfill$1();\n let lastFullSnapshotEvent;\n let incrementalSnapshotCount = 0;\n const eventProcessor = (e2) => {\n for (const plugin3 of plugins || []) {\n if (plugin3.eventProcessor) {\n e2 = plugin3.eventProcessor(e2);\n }\n }\n if (packFn && // Disable packing events which will be emitted to parent frames.\n !passEmitsToParent) {\n e2 = packFn(e2);\n }\n return e2;\n };\n wrappedEmit = (r2, isCheckout) => {\n var _a2;\n const e2 = r2;\n e2.timestamp = nowTimestamp();\n if (((_a2 = mutationBuffers[0]) == null ? void 0 : _a2.isFrozen()) && e2.type !== EventType.FullSnapshot && !(e2.type === EventType.IncrementalSnapshot && e2.data.source === IncrementalSource.Mutation)) {\n mutationBuffers.forEach((buf) => buf.unfreeze());\n }\n if (inEmittingFrame) {\n emit == null ? void 0 : emit(eventProcessor(e2), isCheckout);\n } else if (passEmitsToParent) {\n const message = {\n type: \"rrweb\",\n event: eventProcessor(e2),\n origin: window.location.origin,\n isCheckout\n };\n window.parent.postMessage(message, \"*\");\n }\n if (e2.type === EventType.FullSnapshot) {\n lastFullSnapshotEvent = e2;\n incrementalSnapshotCount = 0;\n } else if (e2.type === EventType.IncrementalSnapshot) {\n if (e2.data.source === IncrementalSource.Mutation && e2.data.isAttachIframe) {\n return;\n }\n incrementalSnapshotCount++;\n const exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\n const exceedTime = checkoutEveryNms && e2.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\n if (exceedCount || exceedTime) {\n takeFullSnapshot$1(true);\n }\n }\n };\n const wrappedMutationEmit = (m) => {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Mutation,\n ...m\n }\n });\n };\n const wrappedScrollEmit = (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Scroll,\n ...p\n }\n });\n const wrappedCanvasMutationEmit = (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.CanvasMutation,\n ...p\n }\n });\n const wrappedAdoptedStyleSheetEmit = (a2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.AdoptedStyleSheet,\n ...a2\n }\n });\n const stylesheetManager = new StylesheetManager({\n mutationCb: wrappedMutationEmit,\n adoptedStyleSheetCb: wrappedAdoptedStyleSheetEmit\n });\n const iframeManager = new IframeManager({\n mirror,\n mutationCb: wrappedMutationEmit,\n stylesheetManager,\n recordCrossOriginIframes,\n wrappedEmit\n });\n for (const plugin3 of plugins || []) {\n if (plugin3.getMirror)\n plugin3.getMirror({\n nodeMirror: mirror,\n crossOriginIframeMirror: iframeManager.crossOriginIframeMirror,\n crossOriginIframeStyleMirror: iframeManager.crossOriginIframeStyleMirror\n });\n }\n const processedNodeManager = new ProcessedNodeManager();\n canvasManager = new CanvasManager({\n recordCanvas,\n mutationCb: wrappedCanvasMutationEmit,\n win: window,\n blockClass,\n blockSelector,\n mirror,\n sampling: sampling.canvas,\n dataURLOptions\n });\n const shadowDomManager = new ShadowDomManager({\n mutationCb: wrappedMutationEmit,\n scrollCb: wrappedScrollEmit,\n bypassOptions: {\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n inlineStylesheet,\n maskInputOptions,\n dataURLOptions,\n maskTextFn,\n maskInputFn,\n recordCanvas,\n inlineImages,\n sampling,\n slimDOMOptions,\n iframeManager,\n stylesheetManager,\n canvasManager,\n keepIframeSrcFn,\n processedNodeManager\n },\n mirror\n });\n takeFullSnapshot$1 = (isCheckout = false) => {\n if (!recordDOM) {\n return;\n }\n wrappedEmit(\n {\n type: EventType.Meta,\n data: {\n href: window.location.href,\n width: getWindowWidth(),\n height: getWindowHeight()\n }\n },\n isCheckout\n );\n stylesheetManager.reset();\n shadowDomManager.init();\n mutationBuffers.forEach((buf) => buf.lock());\n const node2 = snapshot(document, {\n mirror,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n inlineStylesheet,\n maskAllInputs: maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOM: slimDOMOptions,\n dataURLOptions,\n recordCanvas,\n inlineImages,\n onSerialize: (n2) => {\n if (isSerializedIframe(n2, mirror)) {\n iframeManager.addIframe(n2);\n }\n if (isSerializedStylesheet(n2, mirror)) {\n stylesheetManager.trackLinkElement(n2);\n }\n if (hasShadowRoot(n2)) {\n shadowDomManager.addShadowRoot(index.shadowRoot(n2), document);\n }\n },\n onIframeLoad: (iframe, childSn) => {\n iframeManager.attachIframe(iframe, childSn);\n shadowDomManager.observeAttachShadow(iframe);\n },\n onStylesheetLoad: (linkEl, childSn) => {\n stylesheetManager.attachLinkElement(linkEl, childSn);\n },\n keepIframeSrcFn\n });\n if (!node2) {\n return console.warn(\"Failed to snapshot the document\");\n }\n wrappedEmit(\n {\n type: EventType.FullSnapshot,\n data: {\n node: node2,\n initialOffset: getWindowScroll(window)\n }\n },\n isCheckout\n );\n mutationBuffers.forEach((buf) => buf.unlock());\n if (document.adoptedStyleSheets && document.adoptedStyleSheets.length > 0)\n stylesheetManager.adoptStyleSheets(\n document.adoptedStyleSheets,\n mirror.getId(document)\n );\n };\n try {\n const handlers = [];\n const observe = (doc) => {\n var _a2;\n return callbackWrapper(initObservers)(\n {\n mutationCb: wrappedMutationEmit,\n mousemoveCb: (positions, source) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source,\n positions\n }\n }),\n mouseInteractionCb: (d) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.MouseInteraction,\n ...d\n }\n }),\n scrollCb: wrappedScrollEmit,\n viewportResizeCb: (d) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.ViewportResize,\n ...d\n }\n }),\n inputCb: (v2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Input,\n ...v2\n }\n }),\n mediaInteractionCb: (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.MediaInteraction,\n ...p\n }\n }),\n styleSheetRuleCb: (r2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.StyleSheetRule,\n ...r2\n }\n }),\n styleDeclarationCb: (r2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.StyleDeclaration,\n ...r2\n }\n }),\n canvasMutationCb: wrappedCanvasMutationEmit,\n fontCb: (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Font,\n ...p\n }\n }),\n selectionCb: (p) => {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Selection,\n ...p\n }\n });\n },\n customElementCb: (c2) => {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.CustomElement,\n ...c2\n }\n });\n },\n blockClass,\n ignoreClass,\n ignoreSelector,\n maskTextClass,\n maskTextSelector,\n maskInputOptions,\n inlineStylesheet,\n sampling,\n recordDOM,\n recordCanvas,\n inlineImages,\n userTriggeredOnInput,\n collectFonts,\n doc,\n maskInputFn,\n maskTextFn,\n keepIframeSrcFn,\n blockSelector,\n slimDOMOptions,\n dataURLOptions,\n mirror,\n iframeManager,\n stylesheetManager,\n shadowDomManager,\n processedNodeManager,\n canvasManager,\n ignoreCSSAttributes,\n plugins: ((_a2 = plugins == null ? void 0 : plugins.filter((p) => p.observer)) == null ? void 0 : _a2.map((p) => ({\n observer: p.observer,\n options: p.options,\n callback: (payload) => wrappedEmit({\n type: EventType.Plugin,\n data: {\n plugin: p.name,\n payload\n }\n })\n }))) || []\n },\n hooks\n );\n };\n iframeManager.addLoadListener((iframeEl) => {\n try {\n handlers.push(observe(iframeEl.contentDocument));\n } catch (error) {\n console.warn(error);\n }\n });\n const init = () => {\n takeFullSnapshot$1();\n handlers.push(observe(document));\n recording = true;\n };\n if (document.readyState === \"interactive\" || document.readyState === \"complete\") {\n init();\n } else {\n handlers.push(\n on(\"DOMContentLoaded\", () => {\n wrappedEmit({\n type: EventType.DomContentLoaded,\n data: {}\n });\n if (recordAfter === \"DOMContentLoaded\") init();\n })\n );\n handlers.push(\n on(\n \"load\",\n () => {\n wrappedEmit({\n type: EventType.Load,\n data: {}\n });\n if (recordAfter === \"load\") init();\n },\n window\n )\n );\n }\n return () => {\n handlers.forEach((h) => h());\n processedNodeManager.destroy();\n recording = false;\n unregisterErrorHandler();\n };\n } catch (error) {\n console.warn(error);\n }\n}\nrecord.addCustomEvent = (tag, payload) => {\n if (!recording) {\n throw new Error(\"please add custom event after start recording\");\n }\n wrappedEmit({\n type: EventType.Custom,\n data: {\n tag,\n payload\n }\n });\n};\nrecord.freezePage = () => {\n mutationBuffers.forEach((buf) => buf.freeze());\n};\nrecord.takeFullSnapshot = (isCheckout) => {\n if (!recording) {\n throw new Error(\"please take full snapshot after start recording\");\n }\n takeFullSnapshot$1(isCheckout);\n};\nrecord.mirror = mirror;\nvar n;\n!function(t2) {\n t2[t2.NotStarted = 0] = \"NotStarted\", t2[t2.Running = 1] = \"Running\", t2[t2.Stopped = 2] = \"Stopped\";\n}(n || (n = {}));\nexport {\n record\n};\n//# sourceMappingURL=record.js.map\n","import { isMobile } from \"./GleapHelper\";\nimport { record } from \"@rrweb/record\";\n\nexport default class GleapReplayRecorder {\n startDate = undefined;\n events = [];\n bufferSize = 0;\n stopFunction = undefined;\n customOptions = {};\n\n // GleapReplayRecorder singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapReplayRecorder();\n return this.instance;\n } else {\n return this.instance;\n }\n }\n\n constructor() {}\n\n setOptions(options) {\n this.customOptions = options;\n }\n\n /**\n * Start replays\n * @returns\n */\n start() {\n this.stop();\n\n this.startDate = Date.now();\n var events = this.events;\n\n var options = {\n inlineStylesheet: true,\n blockClass: \"gl-block\",\n ignoreClass: \"gl-ignore\",\n maskTextClass: \"gl-mask\",\n dataURLOptions: {\n quality: 0.7,\n },\n recordCanvas: false,\n sampling: {\n scroll: 150,\n mouseInteraction: {\n MouseUp: false,\n MouseDown: false,\n Click: true,\n ContextMenu: true,\n DblClick: true,\n Focus: true,\n Blur: true,\n TouchStart: true,\n TouchEnd: false,\n },\n },\n collectFonts: false,\n recordCrossOriginIframes: false,\n };\n\n try {\n this.stopFunction = record({\n ...options,\n ...this.customOptions,\n emit(rrwebEvent) {\n const { event } = ensureMaxMessageSize(rrwebEvent);\n events.push(event);\n },\n });\n } catch (e) {\n console.error(e);\n }\n }\n\n /**\n * Stop replays\n * @returns\n */\n stop() {\n if (this.stopFunction) {\n this.stopFunction();\n }\n\n this.startDate = undefined;\n this.events = [];\n this.bufferSize = 0;\n }\n\n /**\n * Get the current replay data\n * @returns {Promise}\n */\n getReplayData() {\n const replayResult = {\n startDate: this.startDate,\n events: this.events,\n baseUrl: window.location.origin,\n width: window.innerWidth,\n height: window.innerHeight,\n isMobile: isMobile(),\n type: \"rrweb\",\n };\n\n return replayResult;\n }\n}\n\nexport function ensureMaxMessageSize(data) {\n let stringifiedData = JSON.stringify(data);\n if (stringifiedData.length > 4000000) {\n const dataURIRegex = /data:([\\w\\/\\-\\.]+);(\\w+),([^)\"]*)/gim;\n const matches = stringifiedData.matchAll(dataURIRegex);\n for (const match of matches) {\n if (match[1].toLocaleLowerCase().slice(0, 6) === \"image/\") {\n stringifiedData = stringifiedData.replace(\n match[0],\n \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAQSURBVHgBAQUA+v8ABRg5/wHSAVZN1mnaAAAAAElFTkSuQmCC\"\n );\n } else {\n stringifiedData = stringifiedData.replace(match[0], \"\");\n }\n }\n }\n return { event: JSON.parse(stringifiedData), size: stringifiedData.length };\n}\n","export class ScreenDrawer {\n rerender;\n svgElement = null;\n path = null;\n strPath;\n strokeWidth = 12;\n strokeWidthRect = 6;\n bufferSize = 4;\n buffer = [];\n startPoint = null;\n tool = \"rect\";\n color = \"#EB144C\";\n mouseDown = null;\n mouseMove = null;\n mouseUp = null;\n resizeListener = null;\n pathBuffer = [];\n\n constructor(rerender) {\n const self = this;\n\n this.rerender = rerender;\n\n this.svgElement = document.querySelector(\".bb-capture-svg\");\n this.svgElement.style.minHeight = `${document.documentElement.scrollHeight}px`;\n\n // Window resize listener.\n this.resizeListener = function (e) {\n self.svgElement.style.minHeight = `${document.documentElement.scrollHeight}px`;\n };\n window.addEventListener(\"resize\", this.resizeListener, true);\n\n this.mouseDown = function (e) {\n e.preventDefault();\n\n const colorpicker = document.querySelector(\n \".bb-capture-toolbar-item-colorpicker\"\n );\n if (colorpicker) {\n colorpicker.style.display = \"none\";\n }\n\n self.fadeOutToolbar();\n if (self.tool === \"pen\" || self.tool === \"blur\") {\n self.mouseDownPen(e);\n }\n if (self.tool === \"rect\") {\n self.mouseDownRect(e);\n }\n };\n\n this.mouseMove = function (e) {\n e.preventDefault();\n if (self.tool === \"pen\" || self.tool === \"blur\") {\n self.mouseMovePen(e);\n }\n if (self.tool === \"rect\") {\n self.mouseMoveRect(e);\n }\n };\n\n this.mouseUp = function (e) {\n e.preventDefault();\n self.fadeInToolbar();\n if (self.tool === \"pen\" || self.tool === \"blur\") {\n self.mouseUpPen(e);\n }\n if (self.tool === \"rect\") {\n self.mouseUpRect(e);\n }\n };\n\n this.svgElement.addEventListener(\"mousedown\", this.mouseDown);\n this.svgElement.addEventListener(\"mousemove\", this.mouseMove);\n this.svgElement.addEventListener(\"mouseup\", this.mouseUp);\n this.svgElement.addEventListener(\"touchstart\", this.mouseDown, false);\n this.svgElement.addEventListener(\"touchmove\", this.mouseMove, false);\n this.svgElement.addEventListener(\"touchend\", this.mouseUp, false);\n\n setTimeout(() => {\n this.rerender();\n }, 100);\n }\n\n clear() {\n if (this.svgElement) {\n while (this.svgElement.firstChild) {\n this.svgElement.firstChild.remove();\n }\n }\n }\n\n destroy() {\n this.svgElement.removeEventListener(\"mousedown\", this.mouseDown);\n this.svgElement.removeEventListener(\"mousemove\", this.mouseMove);\n this.svgElement.removeEventListener(\"mouseup\", this.mouseUp);\n this.svgElement.removeEventListener(\"touchstart\", this.mouseDown);\n this.svgElement.removeEventListener(\"touchmove\", this.mouseMove);\n this.svgElement.removeEventListener(\"touchend\", this.mouseUp);\n window.removeEventListener(\"resize\", this.resizeListener);\n }\n\n mouseUpPen() {\n if (this.path) {\n this.path = null;\n }\n }\n\n mouseUpRect() {\n if (this.path) {\n this.path = null;\n }\n }\n\n mouseMovePen(e) {\n if (this.path) {\n this.appendToBuffer(this.getMousePosition(e));\n this.updateSvgPath();\n }\n }\n\n mouseMoveRect(e) {\n if (this.path) {\n var p = this.getMousePosition(e);\n var w = Math.abs(p.x - this.startPoint.x);\n var h = Math.abs(p.y - this.startPoint.y);\n var x = p.x;\n var y = p.y;\n if (p.x > this.startPoint.x) {\n x = this.startPoint.x;\n }\n if (p.y > this.startPoint.y) {\n y = this.startPoint.y;\n }\n\n this.path.setAttributeNS(null, \"x\", x);\n this.path.setAttributeNS(null, \"y\", y);\n this.path.setAttributeNS(null, \"width\", w);\n this.path.setAttributeNS(null, \"height\", h);\n }\n }\n\n mouseDownRect(e) {\n this.path = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n this.path.setAttribute(\"fill\", \"none\");\n this.path.setAttribute(\"stroke\", this.color);\n this.path.setAttribute(\"stroke-linecap\", \"round\");\n this.path.setAttribute(\"stroke-width\", this.strokeWidthRect);\n\n this.startPoint = this.getMousePosition(e);\n this.appendPathToSvg(this.path);\n }\n\n mouseDownPen(e) {\n var color = this.color + \"AA\";\n var strokeWidth = this.strokeWidth;\n\n if (this.tool === \"blur\") {\n color = \"#000000\";\n strokeWidth = 40;\n }\n\n this.path = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this.path.setAttribute(\"fill\", \"none\");\n this.path.setAttribute(\"stroke\", color);\n this.path.setAttribute(\"stroke-linecap\", \"round\");\n this.path.setAttribute(\"stroke-width\", strokeWidth);\n this.buffer = [];\n var pt = this.getMousePosition(e);\n this.appendToBuffer(pt);\n this.strPath = \"M\" + pt.x + \" \" + pt.y;\n this.path.setAttribute(\"d\", this.strPath);\n this.appendPathToSvg(this.path);\n }\n\n setTool(tool) {\n this.tool = tool;\n }\n\n setColor(color) {\n this.color = color;\n }\n\n getMousePosition(e) {\n if (e.touches && e.touches.length > 0) {\n return {\n x: e.touches[0].clientX,\n y: e.touches[0].clientY,\n };\n }\n\n return {\n x: e.clientX,\n y: e.clientY,\n };\n }\n\n // Calculate the average point, starting at offset in the buffer\n getAveragePoint(offset) {\n var len = this.buffer.length;\n if (len % 2 === 1 || len >= this.bufferSize) {\n var totalX = 0;\n var totalY = 0;\n var pt, i;\n var count = 0;\n for (i = offset; i < len; i++) {\n count++;\n pt = this.buffer[i];\n totalX += pt.x;\n totalY += pt.y;\n }\n return {\n x: totalX / count,\n y: totalY / count,\n };\n }\n return null;\n }\n\n updateSvgPath() {\n var pt = this.getAveragePoint(0);\n\n if (pt) {\n // Get the smoothed part of the path that will not change\n this.strPath += \" L\" + pt.x + \" \" + pt.y;\n\n // Get the last part of the path (close to the current mouse position)\n // This part will change if the mouse moves again\n var tmpPath = \"\";\n for (var offset = 2; offset < this.buffer.length; offset += 2) {\n pt = this.getAveragePoint(offset);\n tmpPath += \" L\" + pt.x + \" \" + pt.y;\n }\n\n // Set the complete current path coordinates\n this.path.setAttribute(\"d\", this.strPath + tmpPath);\n }\n }\n\n appendToBuffer(pt) {\n this.buffer.push(pt);\n while (this.buffer.length > this.bufferSize) {\n this.buffer.shift();\n }\n }\n\n appendPathToSvg(path) {\n this.svgElement.appendChild(path);\n this.pathBuffer.push(path);\n this.rerender();\n }\n\n removeLastAddedPathFromSvg() {\n if (this.pathBuffer.length <= 0 || !this.svgElement) {\n return;\n }\n\n this.svgElement.removeChild(this.pathBuffer[this.pathBuffer.length - 1]);\n\n this.pathBuffer.pop();\n\n this.rerender();\n }\n\n fadeOutToolbar() {\n var fadeTarget = document.querySelector(\".bb-capture-toolbar\");\n if (fadeTarget) {\n fadeTarget.style.opacity = 0;\n fadeTarget.style.pointerEvents = \"none\";\n }\n }\n\n fadeInToolbar() {\n var fadeTarget = document.querySelector(\".bb-capture-toolbar\");\n if (fadeTarget) {\n fadeTarget.style.opacity = 1;\n fadeTarget.style.pointerEvents = \"auto\";\n }\n }\n}\n","export class GleapScrollStopper {\n keys = { 37: 1, 38: 1, 39: 1, 40: 1 };\n supportsPassive = false;\n wheelOpt = this.supportsPassive ? { passive: false } : false;\n wheelEvent =\n \"onwheel\" in document.createElement(\"div\") ? \"wheel\" : \"mousewheel\";\n scrollDisabled = false;\n\n // GleapScrollStopper singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapScrollStopper();\n return this.instance;\n } else {\n return this.instance;\n }\n }\n\n constructor() {\n const self = this;\n try {\n window.addEventListener(\n \"test\",\n null,\n Object.defineProperty({}, \"passive\", {\n get: function () {\n self.supportsPassive = true;\n self.wheelOpt = self.supportsPassive ? { passive: false } : false;\n },\n })\n );\n } catch (e) {}\n }\n\n preventDefault(e) {\n e.preventDefault();\n }\n\n preventDefaultForScrollKeys(e) {\n if (this.keys && this.keys[e.keyCode]) {\n this.preventDefault(e);\n return false;\n }\n }\n\n static disableScroll() {\n const instance = this.getInstance();\n if (instance.scrollDisabled) {\n return;\n }\n\n instance.scrollDisabled = true;\n\n window.addEventListener(\"DOMMouseScroll\", instance.preventDefault, false); // older FF\n window.addEventListener(\n instance.wheelEvent,\n instance.preventDefault,\n instance.wheelOpt\n ); // modern desktop\n window.addEventListener(\n \"touchmove\",\n instance.preventDefault,\n instance.wheelOpt\n ); // mobile\n window.addEventListener(\n \"keydown\",\n instance.preventDefaultForScrollKeys,\n false\n );\n }\n\n static enableScroll() {\n const instance = this.getInstance();\n if (!instance.scrollDisabled) {\n return;\n }\n\n instance.scrollDisabled = false;\n window.removeEventListener(\n \"DOMMouseScroll\",\n instance.preventDefault,\n false\n );\n window.removeEventListener(\n instance.wheelEvent,\n instance.preventDefault,\n instance.wheelOpt\n );\n window.removeEventListener(\n \"touchmove\",\n instance.preventDefault,\n instance.wheelOpt\n );\n window.removeEventListener(\n \"keydown\",\n instance.preventDefaultForScrollKeys,\n false\n );\n }\n}\n","import Gleap, { GleapTranslationManager, GleapFrameManager } from \"./Gleap\";\nimport { ScreenDrawer } from \"./ScreenDrawer\";\nimport { GleapScrollStopper } from \"./GleapScrollStopper\";\nimport { GleapScreenRecorder } from \"./GleapScreenRecorder\";\nimport { loadIcon } from \"./UI\";\n\nexport default class GleapMarkerManager {\n type = \"screenshot\";\n dragCursor = null;\n screenRecorder = null;\n callback = null;\n screenDrawer = null;\n escListener = null;\n pageLeaveListener = null;\n overrideLanguage = Gleap.getInstance().overrideLanguage;\n\n constructor(type) {\n this.type = type;\n }\n\n hideWidgetUI() {\n const feedbackButton = document.querySelector(\".bb-feedback-button\");\n if (feedbackButton) {\n feedbackButton.style.display = \"none\";\n }\n\n const dialogUI = document.querySelector(\".bb-feedback-dialog-container\");\n if (dialogUI) {\n dialogUI.style.display = \"none\";\n }\n }\n\n showWidgetUI() {\n if (this.type === \"screenshot\") {\n GleapScrollStopper.enableScroll();\n }\n\n // Stop screenrecording.\n if (this.screenRecorder) {\n this.screenRecorder.stopScreenRecording();\n }\n\n // Unregister ESC listener\n this.unregisterListeners();\n\n // Cleanup mouse pointer\n this.cleanupMousePointer();\n\n if (this.screenDrawer) {\n this.screenDrawer.destroy();\n }\n\n // Remove the toolbar UI\n const dialog = document.querySelector(\".bb-capture-toolbar\");\n if (dialog) {\n dialog.remove();\n }\n\n // Capture SVG ref\n const captureSVG = document.querySelector(\".bb-capture-svg\");\n if (captureSVG) {\n captureSVG.classList.add(\"bb-capture-svg--preview\");\n }\n\n // Remove the preview UI\n const videoPreviewContainer = document.querySelector(\".bb-capture-preview\");\n if (videoPreviewContainer) {\n videoPreviewContainer.remove();\n }\n\n // Feedback button\n const feedbackButton = document.querySelector(\".bb-feedback-button\");\n if (feedbackButton) {\n feedbackButton.style.display = \"flex\";\n }\n\n // Feedback dialog container\n const dialogUI = document.querySelector(\".bb-feedback-dialog-container\");\n if (dialogUI) {\n dialogUI.style.display = \"block\";\n }\n\n // Dismiss button\n const dismissUI = document.querySelector(\".bb-capture-dismiss\");\n if (dismissUI) {\n dismissUI.style.display = \"none\";\n }\n\n // Hide the color picker\n const colorPicker = document.querySelector(\n \".bb-capture-toolbar-item-colorpicker\"\n );\n if (colorPicker) {\n colorPicker.style.display = \"none\";\n }\n\n // Border layer\n const borderLayer = document.querySelector(\n \".bb-capture-editor-borderlayer\"\n );\n if (borderLayer) {\n borderLayer.style.display = \"none\";\n }\n }\n\n clear() {\n const captureEditor = document.querySelector(\".bb-capture-editor\");\n if (captureEditor) {\n captureEditor.remove();\n }\n }\n\n setMouseMove(x, y) {\n if (!this.dragCursor) {\n return;\n }\n\n this.dragCursor.style.left = `${x + 6}px`;\n this.dragCursor.style.top = `${y - 26}px`;\n this.dragCursor.style.right = null;\n }\n\n mouseMoveEventHandler(e) {\n const x = e.clientX;\n const y = e.clientY;\n this.setMouseMove(x, y);\n }\n\n touchMoveEventHandler(e) {\n const x = e.touches[0].clientX;\n const y = e.touches[0].clientY;\n this.setMouseMove(x, y);\n }\n\n setupMousePointer() {\n const self = this;\n this.dragCursor = document.querySelector(\".bb-capture-editor-drag-info\");\n const captureSVG = document.querySelector(\".bb-capture-svg\");\n captureSVG.addEventListener(\"mouseenter\", (e) => {\n self.dragCursor.style.opacity = 1;\n });\n\n captureSVG.addEventListener(\"mouseleave\", (e) => {\n self.dragCursor.style.opacity = 0;\n });\n\n document.documentElement.addEventListener(\n \"mousemove\",\n this.mouseMoveEventHandler.bind(this)\n );\n document.documentElement.addEventListener(\n \"touchmove\",\n this.touchMoveEventHandler.bind(this)\n );\n }\n\n cleanupMousePointer() {\n document.documentElement.removeEventListener(\n \"mousemove\",\n this.mouseMoveEventHandler\n );\n document.documentElement.removeEventListener(\n \"touchmove\",\n this.touchMoveEventHandler\n );\n\n // Clean up toolbar drag listeners\n const dragHandle = document.querySelector(\".bb-capture-toolbar-item[data-type='drag']\");\n if (dragHandle) {\n dragHandle.removeEventListener(\"mousedown\", this.dragStart);\n dragHandle.removeEventListener(\"touchstart\", this.dragStart);\n document.removeEventListener(\"mousemove\", this.drag);\n document.removeEventListener(\"touchmove\", this.drag);\n document.removeEventListener(\"mouseup\", this.dragEnd);\n document.removeEventListener(\"touchend\", this.dragEnd);\n }\n\n if (this.dragCursor) {\n this.dragCursor.remove();\n }\n }\n\n createEditorUI() {\n // Add HTML for drawing and recording\n var bugReportingEditor = document.createElement(\"div\");\n bugReportingEditor.className = \"bb-capture-editor\";\n bugReportingEditor.innerHTML = `\n
\n \n
${loadIcon(\"dismiss\")}
\n
${loadIcon(\"rect\")}
\n
\n
\n ${loadIcon(\"drag\")}\n
\n ${this.type === \"capture\"\n ? `
\n ${loadIcon(\"recorderon\")}\n ${loadIcon(\"recorderoff\")}\n \n
\n
\n ${loadIcon(\"mic\")}\n \n
\n
2:00
\n
\n
\n ${loadIcon(\"pointer\")}\n
`\n : \"\"\n }\n
\n ${loadIcon(\"rect\")}\n
\n
\n ${loadIcon(\"pen\")}\n
\n
\n ${loadIcon(\"blur\")}\n
\n
\n
\n ${GleapTranslationManager.translateText(\n `pickAColor`\n )}\n
\n
\n ${loadIcon(\"undo\")}\n ${GleapTranslationManager.translateText(\n `undo`\n )}\n
\n ${this.type !== \"capture\"\n ? `
${GleapTranslationManager.translateText(\n `next`\n )}
`\n : \"\"\n }\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
${GleapTranslationManager.translateText(\n `retry`\n )}
\n
${GleapTranslationManager.translateText(\n `next`\n )}
\n
\n
\n
\n `;\n document.body.appendChild(bugReportingEditor);\n\n // Set RTL layout\n bugReportingEditor.setAttribute(\"dir\", GleapTranslationManager.getInstance().isRTLLayout ? \"rtl\" : \"ltr\");\n }\n\n showNextStep = function () {\n // Adapt the UI\n this.showWidgetUI();\n\n if (this.callback) {\n GleapFrameManager.getInstance().sendMessage({\n name: \"set-form-data\",\n data: {\n formKey: \"capture\",\n data: {\n value: this.type,\n dirty: true,\n }\n }\n });\n this.callback(true);\n }\n };\n\n unregisterListeners() {\n if (this.escListener) {\n document.removeEventListener(\"keydown\", this.escListener);\n }\n\n if (this.pageLeaveListener) {\n window.removeEventListener(\"beforeunload\", this.pageLeaveListener);\n }\n }\n\n registerListeners() {\n const self = this;\n\n // Esc listener\n this.escListener = function (evt) {\n evt = evt || window.event;\n var isEscape = false;\n var isEnter = false;\n if (\"key\" in evt) {\n isEscape = evt.key === \"Escape\";\n isEnter = evt.key === \"Enter\";\n }\n if (isEscape) {\n self.dismiss();\n }\n if (self.type === \"screenshot\" && isEnter) {\n self.showNextStep();\n }\n };\n document.addEventListener(\"keydown\", this.escListener);\n\n // Page leave listener\n this.pageLeaveListener = function (event) {\n event.preventDefault();\n event.returnValue = \"\";\n };\n window.addEventListener(\"beforeunload\", this.pageLeaveListener);\n }\n\n show(callback) {\n this.callback = callback;\n const self = this;\n\n // Register for listeners\n this.registerListeners();\n\n // Hide widget UI\n this.hideWidgetUI();\n\n // Create the editor UI\n this.createEditorUI();\n\n // Setup the mouse pointer\n this.setupMousePointer();\n\n // Setup screenshot data\n if (this.type === \"screenshot\") {\n // Overwrite snapshot position\n Gleap.getInstance().setGlobalDataItem(\"snapshotPosition\", {\n x: window.scrollX,\n y: window.scrollY,\n });\n\n // Disable scroll\n GleapScrollStopper.disableScroll();\n } else {\n // Setup screen recording\n this.setupScreenRecording();\n }\n\n // Hook up the drawing.\n this.screenDrawer = new ScreenDrawer(\n this.captureScreenDrawerRerender.bind(this)\n );\n\n this.setupColorPicker();\n this.setupToolbar();\n }\n\n setupColorPicker() {\n const self = this;\n const selectedColor = document.querySelector(\n \".bb-capture-toolbar-item-selectedcolor\"\n );\n const colorItems = document.querySelectorAll(\n \".bb-capture-toolbar-item-color\"\n );\n const colorpicker = document.querySelector(\n \".bb-capture-toolbar-item-colorpicker\"\n );\n\n for (var i = 0; i < colorItems.length; i++) {\n const colorItem = colorItems[i];\n const hexColor = colorItem.getAttribute(\"data-color\");\n colorItem.style.backgroundColor = hexColor;\n colorItem.onclick = function () {\n if (colorItem) {\n self.screenDrawer.setColor(hexColor);\n if (colorpicker) {\n colorpicker.style.display = \"none\";\n }\n selectedColor.style.backgroundColor = colorItem.style.backgroundColor;\n GleapMarkerManager.setPenColor(hexColor);\n }\n };\n }\n }\n\n static setPenColor(hexColor) {\n const penTips = document.querySelectorAll(\".bb-pen-tip\");\n for (var j = 0; j < penTips.length; j++) {\n penTips[j].style.fill = hexColor;\n }\n }\n\n dismiss() {\n this.showWidgetUI();\n\n if (this.callback) {\n this.callback(false);\n }\n }\n\n setupToolbar() {\n const self = this;\n const toolbar = document.querySelector(\".bb-capture-toolbar\");\n let isDragging = false;\n let currentX;\n let currentY;\n let initialX;\n let initialY;\n let xOffset = 0;\n let yOffset = 0;\n\n const getTransformValues = () => {\n const transform = window.getComputedStyle(toolbar).transform;\n if (transform === 'none') return { x: 0, y: 0 };\n const matrix = new DOMMatrix(transform);\n return { x: matrix.m41, y: matrix.m42 };\n };\n\n this.dragStart = (e) => {\n const { x, y } = getTransformValues();\n xOffset = x;\n yOffset = y;\n\n if (e.type === \"mousedown\") {\n initialX = e.clientX - xOffset;\n initialY = e.clientY - yOffset;\n } else {\n initialX = e.touches[0].clientX - xOffset;\n initialY = e.touches[0].clientY - yOffset;\n }\n isDragging = true;\n };\n\n this.dragEnd = () => {\n isDragging = false;\n };\n\n this.drag = (e) => {\n if (isDragging) {\n e.preventDefault();\n if (e.type === \"mousemove\") {\n currentX = e.clientX - initialX;\n currentY = e.clientY - initialY;\n } else {\n currentX = e.touches[0].clientX - initialX;\n currentY = e.touches[0].clientY - initialY;\n }\n\n xOffset = currentX;\n yOffset = currentY;\n\n toolbar.style.transform = `translate(${currentX}px, ${currentY}px)`;\n }\n };\n\n const dragHandle = document.querySelector(\".bb-capture-toolbar-item[data-type='drag']\");\n\n dragHandle.addEventListener(\"mousedown\", this.dragStart);\n dragHandle.addEventListener(\"touchstart\", this.dragStart);\n document.addEventListener(\"mousemove\", this.drag);\n document.addEventListener(\"touchmove\", this.drag);\n document.addEventListener(\"mouseup\", this.dragEnd);\n document.addEventListener(\"touchend\", this.dragEnd);\n\n // Hook up dismiss button\n const dismissButton = document.querySelector(\".bb-capture-dismiss\");\n dismissButton.onclick = function () {\n self.dismiss();\n };\n\n // Hook up send button\n const nextButton = document.querySelector(\".bb-capture-button-next\");\n if (nextButton) {\n nextButton.onclick = this.showNextStep.bind(this);\n }\n\n const colorpicker = document.querySelector(\n \".bb-capture-toolbar-item-colorpicker\"\n );\n\n // Capture SVG ref\n const captureSVG = document.querySelector(\".bb-capture-svg\");\n\n const chooseTool = function (type, toolbarItem) {\n const toolbarTools = document.querySelectorAll(\n \".bb-capture-toolbar-item-tool\"\n );\n for (let j = 0; j < toolbarTools.length; j++) {\n toolbarTools[j].classList.remove(\"bb-capture-toolbar-item--active\");\n }\n toolbarItem.classList.add(\"bb-capture-toolbar-item--active\");\n self.screenDrawer.setTool(type);\n self.dragCursor.innerHTML = \"\";\n if (type === \"pointer\") {\n captureSVG.style.pointerEvents = \"none\";\n } else {\n captureSVG.style.pointerEvents = \"auto\";\n try {\n var svgClone = toolbarItem.querySelector(\"svg\").cloneNode(true);\n if (svgClone && self.dragCursor) {\n self.dragCursor.appendChild(svgClone);\n }\n } catch (exp) { }\n }\n }\n\n // Setup toolbar items\n var toolbarItems = document.querySelectorAll(\".bb-capture-toolbar-item\");\n for (var i = 0; i < toolbarItems.length; i++) {\n const toolbarItem = toolbarItems[i];\n toolbarItem.onclick = function () {\n const type = toolbarItem.getAttribute(\"data-type\");\n if (colorpicker && type !== \"colorpicker\") {\n colorpicker.style.display = \"none\";\n }\n\n // Mic & recording buttons\n if (type === \"mic\") {\n self.screenRecorder.toggleAudio();\n }\n if (type === \"recording\") {\n if (self.screenRecorder.isRecording) {\n self.screenRecorder.stopScreenRecording();\n } else {\n self.screenRecorder.startScreenRecording();\n chooseTool(\"pointer\", document.querySelector(\".bb-capture-toolbar-item[data-type='pointer']\"));\n }\n }\n\n // Marker buttons\n if (self.type === \"capture\" && !self.screenRecorder.isRecording) {\n // Inactivate buttons.\n return;\n }\n if (\n type === \"pen\" ||\n type === \"blur\" ||\n type === \"rect\" ||\n type === \"pointer\"\n ) {\n chooseTool(type, toolbarItem);\n }\n if (type === \"colorpicker\") {\n if (colorpicker.style.display === \"flex\") {\n colorpicker.style.display = \"none\";\n } else {\n colorpicker.style.display = \"flex\";\n }\n }\n if (type === \"undo\") {\n self.screenDrawer.removeLastAddedPathFromSvg();\n }\n };\n }\n }\n\n captureScreenDrawerRerender() {\n if (!this.screenDrawer) {\n return;\n }\n\n const itemInactiveClass = \"bb-capture-editor-item-inactive\";\n const toolbarItems = document.querySelectorAll(\".bb-capture-toolbar-item\");\n for (var i = 0; i < toolbarItems.length; i++) {\n const toolbarItem = toolbarItems[i];\n const type = toolbarItem.getAttribute(\"data-type\");\n switch (type) {\n case \"undo\":\n if (\n this.screenDrawer.pathBuffer != null &&\n this.screenDrawer.pathBuffer.length > 0\n ) {\n toolbarItem.classList.remove(itemInactiveClass);\n } else {\n toolbarItem.classList.add(itemInactiveClass);\n }\n break;\n default:\n break;\n }\n }\n }\n\n captureRenderer() {\n if (!this.screenRecorder) {\n return;\n }\n\n if (this.screenRecorder.file) {\n Gleap.getInstance().setGlobalDataItem(\"screenRecordingData\", this.screenRecorder.file);\n }\n\n const itemInactiveClass = \"bb-capture-editor-item-inactive\";\n const timerLabel = document.querySelector(\".bb-capture-toolbar-item-timer\");\n const toolbarItems = document.querySelectorAll(\".bb-capture-toolbar-item\");\n const screenRecordingTooltip = document.querySelector(\n \".bb-tooltip-screen-recording\"\n );\n const audioRecordingTooltip = document.querySelector(\n \".bb-tooltip-audio-recording\"\n );\n const captureEditor = document.querySelector(\".bb-capture-editor\");\n const recordingClass = \"bb-capture-editor-recording\";\n const notRecordingClass = \"bb-capture-editor-notrecording\";\n if (this.screenRecorder.isRecording) {\n captureEditor.classList.add(recordingClass);\n captureEditor.classList.remove(notRecordingClass);\n } else {\n captureEditor.classList.add(notRecordingClass);\n captureEditor.classList.remove(recordingClass);\n }\n \n // Update UI.\n const dialog = document.querySelector(\".bb-capture-toolbar\");\n const videoPreviewContainer = document.querySelector(\".bb-capture-preview\");\n videoPreviewContainer.style.display = this.screenRecorder.file\n ? \"flex\"\n : \"none\";\n dialog.style.display = !this.screenRecorder.file ? \"flex\" : \"none\";\n\n for (var i = 0; i < toolbarItems.length; i++) {\n const toolbarItem = toolbarItems[i];\n const type = toolbarItem.getAttribute(\"data-type\");\n switch (type) {\n case \"mic\":\n if (\n this.screenRecorder.audioAvailable &&\n this.screenRecorder.available\n ) {\n toolbarItem.classList.remove(itemInactiveClass);\n if (!this.screenRecorder.audioMuted) {\n toolbarItem.classList.remove(\n \"bb-capture-toolbar-item--inactivecross\"\n );\n audioRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"mute\"\n );\n } else {\n toolbarItem.classList.add(\n \"bb-capture-toolbar-item--inactivecross\"\n );\n audioRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"unmute\"\n );\n }\n } else {\n toolbarItem.classList.add(itemInactiveClass);\n toolbarItem.classList.add(\"bb-capture-toolbar-item--inactivecross\");\n audioRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"browserNotSupported\"\n );\n }\n break;\n\n case \"recording\":\n if (this.screenRecorder.available) {\n toolbarItem.classList.remove(itemInactiveClass);\n if (this.screenRecorder.isRecording) {\n toolbarItem.setAttribute(\"data-active\", \"true\");\n screenRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"stopRecording\"\n );\n timerLabel.style.display = \"block\";\n } else {\n toolbarItem.setAttribute(\"data-active\", \"false\");\n screenRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"startRecording\"\n );\n timerLabel.style.display = \"none\";\n }\n } else {\n // Recording is not available.\n toolbarItem.classList.add(itemInactiveClass);\n screenRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"browserNotSupported\"\n );\n }\n break;\n\n default:\n break;\n }\n }\n }\n\n setupScreenRecording() {\n const self = this;\n\n // Hook preview next button\n const nextButtonPreview = document.querySelector(\n \".bb-capture-preview-sendbutton\"\n );\n nextButtonPreview.onclick = this.showNextStep.bind(this);\n\n // Hook retry button\n const retryButton = document.querySelector(\n \".bb-capture-preview-retrybutton\"\n );\n retryButton.onclick = function () {\n self.screenRecorder.clearPreview();\n if (self.screenDrawer) {\n self.screenDrawer.clear();\n }\n };\n\n // Setup screen recorder\n this.screenRecorder = new GleapScreenRecorder(\n this.captureRenderer.bind(this),\n GleapTranslationManager.translateText(\n \"accessToScreenSharingDenied\"\n )\n );\n }\n}\n","import {\n GleapFrameManager,\n GleapFeedbackButtonManager,\n GleapConfigManager,\n} from \"./Gleap\";\n\nexport default class GleapTranslationManager {\n overrideLanguage = \"\";\n isRTLLayout = false;\n\n // GleapTranslationManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapTranslationManager();\n }\n return this.instance;\n }\n\n /**\n * Returns the language to override the default language.\n * @returns {string}\n */\n getOverrideLanguage() {\n return this.overrideLanguage;\n }\n\n /**\n * Sets the language to override the default language.\n * @param {*} language\n */\n setOverrideLanguage(language) {\n this.overrideLanguage = language;\n }\n\n updateRTLSupport() {\n // Update RTL support.\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n\n this.isRTLLayout = false;\n if (\n flowConfig &&\n flowConfig.localizationOptions &&\n flowConfig.localizationOptions.rtl\n ) {\n this.isRTLLayout = true;\n }\n\n GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n GleapFrameManager.getInstance().updateFrameStyle();\n }\n\n getActiveLanguage() {\n var language = \"en\";\n if (typeof navigator !== \"undefined\") {\n language = navigator.language.toLowerCase();\n }\n\n // Get language from HTML lang attribute if available\n if (typeof document !== \"undefined\" && document.documentElement) {\n const htmlLang = document.documentElement.lang;\n if (htmlLang && htmlLang.trim() !== \"\") {\n language = htmlLang.toLowerCase().trim();\n }\n }\n\n if (this.overrideLanguage && this.overrideLanguage !== \"\") {\n language = this.overrideLanguage.toLowerCase();\n }\n\n return language;\n }\n\n static translateText(key) {\n if (!key) {\n return \"\";\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const staticTranslation = flowConfig.staticTranslations;\n\n if (staticTranslation && staticTranslation[key]) {\n return staticTranslation[key];\n }\n\n return key;\n }\n\n static translateTextWithVars(key, vars) {\n if (!key) {\n return \"\";\n }\n\n var template = this.translateText(key);\n if (!template) {\n return \"\";\n }\n\n return template.replace(/{(\\w+)}/g, function (_, key) {\n return vars[key];\n });\n }\n}\n","import Gleap from \"./Gleap\";\n\nexport default class GleapShortcutListener {\n shortCutListener = undefined;\n\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapShortcutListener();\n }\n return this.instance;\n }\n\n start() {\n if (this.shortCutListener) {\n return;\n }\n\n const charForEvent = function (event) {\n var code;\n\n if (event.key !== undefined) {\n code = event.key;\n } else if (event.keyIdentifier !== undefined) {\n code = event.keyIdentifier;\n } else if (event.keyCode !== undefined) {\n code = event.keyCode;\n }\n\n return code;\n };\n\n this.shortCutListener = document.addEventListener(\"keyup\", function (e) {\n const char = charForEvent(e);\n if (\n e.ctrlKey &&\n (char === \"u\" || char === \"U\" || char === 85)\n ) {\n Gleap.startFeedbackFlowWithOptions(\"bugreporting\", {\n autostartDrawing: true\n });\n }\n });\n }\n\n stop() {\n if (this.shortCutListener) {\n document.removeEventListener(\"keyup\", this.shortCutListener);\n this.shortCutListener = undefined;\n }\n }\n}","\nexport default class GleapPreFillManager {\n formPreFill = {};\n \n // GleapPreFillManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapPreFillManager();\n }\n return this.instance;\n }\n }\n ","import Gleap, {\n GleapFeedbackButtonManager,\n GleapConfigManager,\n GleapFrameManager,\n GleapSession,\n GleapAudioManager,\n GleapTranslationManager,\n GleapEventManager,\n} from \"./Gleap\";\nimport { loadFromGleapCache, saveToGleapCache } from \"./GleapHelper\";\nimport { loadIcon } from \"./UI\";\n\nexport default class GleapNotificationManager {\n notificationContainer = null;\n notifications = [];\n unreadCount = 0;\n unreadNotificationsKey = \"unread-notifications\";\n isTabActive = true;\n showNotificationBadge = true;\n\n // Keep track of the current index of news being shown\n currentNewsIndex = 0;\n\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapNotificationManager();\n }\n return this.instance;\n }\n\n constructor() {}\n\n updateTabBarNotificationCount() {\n GleapEventManager.notifyEvent(\"unread-count-changed\", this.unreadCount);\n }\n\n injectNotificationUI() {\n if (this.notificationContainer) {\n return;\n }\n\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-notification-container gleap-font\";\n document.body.appendChild(elem);\n this.notificationContainer = elem;\n\n this.updateContainerStyle();\n this.reloadNotificationsFromCache();\n }\n\n reloadNotificationsFromCache() {\n try {\n const notificationsFromCache = loadFromGleapCache(\n this.unreadNotificationsKey\n );\n if (notificationsFromCache && notificationsFromCache.length > 0) {\n let nots = notificationsFromCache.filter(\n (notification) =>\n new Date(notification.createdAt) >\n new Date(Date.now() - 1 * 60 * 60 * 1000)\n );\n\n if (nots.length > 2) {\n this.notifications = nots.splice(0, nots.length - 2);\n } else {\n this.notifications = nots;\n }\n this.renderNotifications();\n }\n } catch (exp) {}\n }\n\n setNotificationCount(unreadCount) {\n this.unreadCount = unreadCount;\n this.updateTabBarNotificationCount();\n\n // Update the badge counter.\n GleapFeedbackButtonManager.getInstance().updateNotificationBadge(\n this.unreadCount\n );\n }\n\n showNotification(notification) {\n if (!(this.notificationContainer && notification && notification.data)) {\n return;\n }\n\n const notificationsForOutbound = this.notifications.find(\n (e) => notification.outbound === e.outbound\n );\n if (!notificationsForOutbound) {\n this.notifications.push(notification);\n\n // Play sound only if it's a new one\n if (notification.sound) {\n GleapAudioManager.ping();\n }\n }\n if (this.notifications.length > 2) {\n this.notifications.shift();\n }\n\n // Persist notifications.\n saveToGleapCache(this.unreadNotificationsKey, this.notifications);\n\n this.renderNotifications();\n }\n\n /**\n * Renders notifications. For news-type notifications, only show\n * one at a time if there are multiple, with a \"Next\" button to cycle.\n * The \"Next\" button + pagination are placed within the news content area.\n *\n * - Sorts news notifications by createdAt (oldest first).\n * - Shows \"Done\" on the last news item instead of \"Next\".\n */\n renderNotifications() {\n if (!this.notificationContainer) {\n return;\n }\n\n // Clear the existing notifications in the container (UI only).\n this.clearAllNotifications(true);\n\n // Append a close button (which clears everything).\n const clearElem = document.createElement(\"div\");\n clearElem.onclick = () => {\n this.clearAllNotifications();\n // Reset the news index when everything is closed\n this.currentNewsIndex = 0;\n };\n clearElem.className = \"gleap-notification-close\";\n clearElem.innerHTML = loadIcon(\"dismiss\");\n this.notificationContainer.appendChild(clearElem);\n\n // Separate out news notifications vs. others, then sort news by date ascending\n const newsNotifications = this.notifications\n .filter((n) => n.data.news)\n .sort((a, b) => new Date(a.createdAt) - new Date(b.createdAt));\n\n const otherNotifications = this.notifications.filter((n) => !n.data.news);\n\n // --- Render NEWS notifications (with pagination) ---\n if (newsNotifications.length > 0) {\n // We only show ONE news item at a time if there's more than one\n const currentIndex =\n this.currentNewsIndex < newsNotifications.length\n ? this.currentNewsIndex\n : 0;\n const currentNews = newsNotifications[currentIndex];\n\n // Main wrapper for the news notification\n const newsElem = document.createElement(\"div\");\n newsElem.className = \"gleap-notification-item-news\";\n\n // The container that holds image + content\n const newsContainerElem = document.createElement(\"div\");\n newsContainerElem.className = \"gleap-notification-item-news-container\";\n\n // Create the image element (clickable)\n if (\n currentNews.data.coverImageUrl &&\n currentNews.data.coverImageUrl !== \"\" &&\n !currentNews.data.coverImageUrl.includes(\"NewsImagePlaceholder\")\n ) {\n const newsImageElem = document.createElement(\"img\");\n newsImageElem.className = \"gleap-notification-item-news-image\";\n newsImageElem.src = currentNews.data.coverImageUrl;\n\n // Only the image is clickable\n newsImageElem.onclick = (e) => {\n e.stopPropagation();\n this.openNews(currentNews);\n };\n newsContainerElem.appendChild(newsImageElem);\n }\n\n // The content container\n const newsContentElem = document.createElement(\"div\");\n newsContentElem.className = \"gleap-notification-item-news-content\";\n\n // Title (clickable)\n const newsTitleElem = document.createElement(\"div\");\n newsTitleElem.className = \"gleap-notification-item-news-content-title\";\n\n let content = currentNews.data.text || \"\";\n content = content.replaceAll(\n \"{{name}}\",\n GleapSession.getInstance().getName()\n );\n newsTitleElem.innerText = content;\n\n // Only the title is clickable\n newsTitleElem.onclick = (e) => {\n e.stopPropagation();\n this.openNews(currentNews);\n };\n\n newsContentElem.appendChild(newsTitleElem);\n\n // Description / Sender\n const descHTML = this.renderDescription(currentNews);\n if (descHTML) {\n const descElem = document.createElement(\"div\");\n descElem.className = \"gleap-notification-item-news-preview\";\n descElem.innerHTML = descHTML;\n newsContentElem.appendChild(descElem);\n }\n\n // If there's more than one news item, show pagination + next/done button\n if (newsNotifications.length > 1) {\n // Pagination container (still inside .gleap-notification-item-news-content)\n const paginationElem = document.createElement(\"div\");\n paginationElem.className = \"gleap-news-pagination\";\n\n // Show current item / total\n const pageIndicator = document.createElement(\"span\");\n pageIndicator.className = \"gleap-news-page-indicator\";\n pageIndicator.innerText = `${currentIndex + 1} / ${\n newsNotifications.length\n }`;\n paginationElem.appendChild(pageIndicator);\n\n // Next or Done button\n const nextBtn = document.createElement(\"button\");\n nextBtn.className = \"gleap-news-next-button\";\n\n if (currentIndex < newsNotifications.length - 1) {\n nextBtn.innerText = GleapTranslationManager.translateText(`next`);\n nextBtn.onclick = (e) => {\n e.stopPropagation(); // so we can click the button freely\n this.currentNewsIndex++;\n this.renderNotifications();\n };\n } else {\n nextBtn.innerText = GleapTranslationManager.translateText(`done`);\n nextBtn.onclick = (e) => {\n e.stopPropagation();\n this.clearAllNotifications();\n this.currentNewsIndex = 0;\n };\n }\n paginationElem.appendChild(nextBtn);\n newsContentElem.appendChild(paginationElem);\n }\n\n // Append content to container\n newsContainerElem.appendChild(newsContentElem);\n // Append container to the main element\n newsElem.appendChild(newsContainerElem);\n // Finally append to the notification container\n this.notificationContainer.appendChild(newsElem);\n }\n\n // --- Render OTHER notifications normally ---\n for (let i = 0; i < otherNotifications.length; i++) {\n const notification = otherNotifications[i];\n let content = notification.data.text || \"\";\n // Replace placeholders\n content = content.replaceAll(\n \"{{name}}\",\n GleapSession.getInstance().getName()\n );\n\n const elem = document.createElement(\"div\");\n elem.onclick = () => {\n if (notification.data.conversation) {\n Gleap.openConversation(\n notification.data.conversation.shareToken,\n true\n );\n } else if (notification.data.checklist) {\n Gleap.openChecklist(notification.data.checklist.id, true);\n } else {\n Gleap.open();\n }\n };\n\n // Check if it's a checklist type\n if (notification.data.checklist) {\n let progress = Math.round(\n (notification.data.currentStep / notification.data.totalSteps) * 100\n );\n if (progress < 100) {\n progress += 4;\n }\n\n elem.className = \"gleap-notification-item-checklist\";\n elem.innerHTML = `\n
\n
\n
\n ${notification.data.text}\n
\n
\n
\n
\n
\n \n \n \n ${notification.data.nextStepTitle}\n
\n
\n
`;\n } else {\n // Standard non-news notification\n elem.className = \"gleap-notification-item\";\n elem.innerHTML = `\n ${\n notification.data.sender &&\n notification.data.sender.profileImageUrl &&\n ``\n }\n
\n ${\n notification.data.sender\n ? `
\n ${notification.data.sender.name}\n
`\n : \"\"\n }\n
${content}
\n
`;\n }\n this.notificationContainer.appendChild(elem);\n }\n\n const hasNotifications =\n newsNotifications.length > 0 || otherNotifications.length > 0;\n if (!hasNotifications) {\n // Clear the notification container\n this.clearAllNotifications(true);\n }\n }\n\n /**\n * Helper to open news from a given notification.\n */\n openNews(notification) {\n if (notification.data.news) {\n Gleap.openNewsArticle(notification.data.news.id, true);\n } else {\n Gleap.open();\n }\n }\n\n /**\n * Helper to render preview or sender info for news notifications.\n */\n renderDescription(notification) {\n const { previewText, sender } = notification.data;\n if (previewText && previewText.length > 0) {\n return previewText;\n } else if (sender) {\n // Return HTML for the sender name + optional image\n return `\n
\n ${\n sender.profileImageUrl\n ? `\"${sender.name}\"`\n : \"\"\n }\n ${sender.name}\n
\n `;\n }\n return \"\";\n }\n\n /**\n * Clears all notifications from the container.\n *\n * @param {boolean} uiOnly - Whether to only clear the UI or also the notifications.\n */\n clearAllNotifications(uiOnly = false) {\n if (!this.notificationContainer) {\n return;\n }\n\n if (!uiOnly) {\n this.notifications = [];\n // Reset currentNewsIndex whenever we clear them out\n this.currentNewsIndex = 0;\n saveToGleapCache(this.unreadNotificationsKey, this.notifications);\n }\n\n while (this.notificationContainer.firstChild) {\n this.notificationContainer.removeChild(\n this.notificationContainer.firstChild\n );\n }\n }\n\n updateContainerStyle() {\n if (!this.notificationContainer) {\n return;\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const classLeft = \"gleap-notification-container--left\";\n const classNoButton = \"gleap-notification-container--no-button\";\n this.notificationContainer.classList.remove(classLeft);\n this.notificationContainer.classList.remove(classNoButton);\n\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_BOTTOM_LEFT\n ) {\n this.notificationContainer.classList.add(classLeft);\n }\n\n if (GleapFeedbackButtonManager.getInstance().buttonHidden === null) {\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_NONE\n ) {\n this.notificationContainer.classList.add(classNoButton);\n }\n } else {\n if (GleapFeedbackButtonManager.getInstance().buttonHidden) {\n this.notificationContainer.classList.add(classNoButton);\n }\n }\n\n this.notificationContainer.setAttribute(\n \"dir\",\n GleapTranslationManager.getInstance().isRTLLayout ? \"rtl\" : \"ltr\"\n );\n }\n}\n","import Gleap, { GleapFrameManager } from \"./Gleap\";\n\nexport default class GleapBannerManager {\n bannerUrl = \"https://outboundmedia.gleap.io\";\n bannerContainer = null;\n bannerData = null;\n\n // GleapBannerManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapBannerManager();\n }\n return this.instance;\n }\n\n constructor() {\n this.startCommunication();\n }\n\n setBannerUrl(url) {\n this.bannerUrl = url;\n }\n\n startCommunication() {\n // Add window message listener.\n window.addEventListener(\"message\", (event) => {\n if (!this.bannerUrl?.includes(event.origin)) {\n return;\n }\n\n try {\n const data = JSON.parse(event.data);\n\n if (data?.type !== \"BANNER\") {\n return;\n }\n\n if (data.name === \"banner-loaded\" && this.bannerData) {\n this.sendMessage({\n name: \"banner-data\",\n data: this.bannerData,\n });\n }\n if (data.name === \"banner-height\") {\n document.documentElement.style.setProperty(\n \"--gleap-margin-top\",\n data.data.height + \"px\"\n );\n }\n if (data.name === \"banner-data-set\") {\n document.body.classList.add(\"gleap-b-shown\");\n\n if (this.bannerData?.format === \"floating\") {\n document.body.classList.add(\"gleap-b-f\");\n }\n }\n if (data.name === \"banner-close\") {\n this.removeBannerUI();\n }\n if (data.name === \"start-conversation\") {\n Gleap.startBot(data.data?.botId);\n }\n if (data.name === \"start-custom-action\") {\n Gleap.triggerCustomAction(data.data?.action);\n }\n if (data.name === \"start-product-tour\") {\n Gleap.startProductTour(data.data?.tourId, true);\n }\n if (data.name === \"open-url\") {\n const url = data.data;\n const newTab = data.newTab ? true : false;\n GleapFrameManager.getInstance().urlHandler(url, newTab);\n }\n if (data.name === \"show-form\") {\n Gleap.startFeedbackFlow(data.data?.formId);\n }\n if (data.name === \"show-survey\") {\n Gleap.showSurvey(data.data?.formId, data.data?.surveyFormat);\n }\n if (data.name === \"show-news-article\") {\n Gleap.openNewsArticle(data.data?.articleId);\n }\n if (data.name === \"show-help-article\") {\n Gleap.openHelpCenterArticle(data.data?.articleId);\n }\n if (data.name === \"show-checklist\") {\n Gleap.startChecklist(\n data.data?.checklistId,\n true,\n data.data?.sharedKey\n );\n }\n } catch (exp) {}\n });\n }\n\n removeBannerUI() {\n if (this.bannerContainer) {\n document.body.removeChild(this.bannerContainer);\n this.bannerContainer = null;\n }\n\n document.body.classList.remove(\"gleap-b-shown\");\n document.body.classList.remove(\"gleap-b-f\");\n }\n\n /**\n * Injects the feedback button into the current DOM.\n */\n injectBannerUI(bannerData) {\n if (!document.body) {\n return false;\n }\n\n if (this.bannerContainer) {\n this.removeBannerUI();\n }\n\n this.bannerData = bannerData;\n\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-b\";\n elem.innerHTML = ``;\n document.body.appendChild(elem);\n this.bannerContainer = elem;\n }\n\n sendMessage(data) {\n try {\n const gleapBFrame = document.querySelector(\".gleap-b-frame\");\n if (gleapBFrame && gleapBFrame.contentWindow) {\n gleapBFrame.contentWindow.postMessage(\n JSON.stringify({\n ...data,\n type: \"banner\",\n }),\n \"*\"\n );\n }\n } catch (e) {}\n }\n\n showBanner(bannerData) {\n this.injectBannerUI(bannerData);\n }\n}\n","import Gleap, { GleapConfigManager, GleapFrameManager } from \"./Gleap\";\n\nexport default class GleapModalManager {\n modalUrl = \"https://outboundmedia.gleap.io/modal\";\n modalContainer = null;\n modalData = null;\n modalBackdropClickListener = null;\n\n // singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapModalManager();\n }\n return this.instance;\n }\n\n constructor() {\n this._listenForMessages();\n }\n\n setModalUrl(url) {\n this.modalUrl = url;\n }\n\n _listenForMessages() {\n window.addEventListener(\"message\", (event) => {\n if (!this.modalUrl?.includes(event.origin)) {\n return;\n }\n\n try {\n const data = JSON.parse(event.data);\n\n if (data?.type !== \"MODAL\") {\n return;\n }\n\n if (data.name === \"modal-loaded\" && this.modalData) {\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const primaryColor = flowConfig.color ? flowConfig.color : \"#485BFF\";\n const backgroundColor = flowConfig.backgroundColor\n ? flowConfig.backgroundColor\n : \"#FFFFFF\";\n\n this._postMessage({\n name: \"modal-data\",\n data: {\n ...this.modalData,\n primaryColor: primaryColor,\n backgroundColor: backgroundColor,\n },\n });\n }\n if (data.name === \"modal-height\") {\n const height = data?.data?.height;\n if (height) {\n // Set the height of the modal iframe\n const iframe =\n this.modalContainer.querySelector(\".gleap-modal-frame\");\n if (iframe) {\n iframe.style.height = `${height}px`;\n }\n }\n }\n if (data.name === \"modal-data-set\") {\n // TODO: Implement\n }\n if (data.name === \"modal-close\") {\n this.hideModal();\n }\n if (data.name === \"start-conversation\") {\n Gleap.startBot(data.data?.botId);\n }\n if (data.name === \"start-custom-action\") {\n Gleap.triggerCustomAction(data.data?.action);\n }\n if (data.name === \"start-product-tour\") {\n Gleap.startProductTour(data.data?.tourId, true);\n }\n if (data.name === \"open-url\") {\n const url = data.data;\n const newTab = data.newTab ? true : false;\n GleapFrameManager.getInstance().urlHandler(url, newTab);\n }\n if (data.name === \"show-form\") {\n Gleap.startFeedbackFlow(data.data?.formId);\n }\n if (data.name === \"show-survey\") {\n Gleap.showSurvey(data.data?.formId, data.data?.surveyFormat);\n }\n if (data.name === \"show-news-article\") {\n Gleap.openNewsArticle(data.data?.articleId);\n }\n if (data.name === \"show-help-article\") {\n Gleap.openHelpCenterArticle(data.data?.articleId);\n }\n if (data.name === \"show-checklist\") {\n Gleap.startChecklist(\n data.data?.checklistId,\n true,\n data.data?.sharedKey\n );\n }\n } catch (exp) {}\n });\n }\n\n _injectModalUI(modalData) {\n if (!document.body) return false;\n\n if (this.modalContainer) {\n this.hideModal();\n }\n\n this.modalData = modalData;\n\n const wrapper = document.createElement(\"div\");\n wrapper.className = \"gleap-modal-wrapper\";\n wrapper.innerHTML = `\n
\n
\n \n
\n `;\n document.body.appendChild(wrapper);\n this.modalContainer = wrapper;\n\n // Add on backdrop click listener\n this.modalBackdropClickListener = this.modalContainer\n .querySelector(\".gleap-modal-backdrop\")\n .addEventListener(\"click\", () => {\n if (this.modalData?.showCloseButton ?? true) {\n this.hideModal();\n }\n });\n\n // lock background scroll\n document.body.classList.add(\"gleap-modal-open\");\n }\n\n _postMessage(message) {\n try {\n const frame = this.modalContainer.querySelector(\".gleap-modal-frame\");\n if (frame?.contentWindow) {\n frame.contentWindow.postMessage(\n JSON.stringify({ ...message, type: \"modal\" }),\n this.modalUrl\n );\n }\n } catch (err) {}\n }\n\n showModal(modalData) {\n if (modalData && modalData.config) {\n this._injectModalUI(modalData.config);\n }\n }\n\n hideModal() {\n if (!this.modalContainer) return;\n\n if (this.modalBackdropClickListener) {\n this.modalContainer\n .querySelector(\".gleap-modal-backdrop\")\n .removeEventListener(\"click\", this.modalBackdropClickListener);\n }\n\n document.body.removeChild(this.modalContainer);\n this.modalContainer = null;\n document.body.classList.remove(\"gleap-modal-open\");\n }\n}\n","export default class GleapAudioManager {\n static audio;\n static settings = {\n play: true\n };\n\n static playSound(play) {\n this.settings.play = play;\n }\n\n static ping() {\n try {\n if (!this.settings.play) {\n return;\n }\n\n if (!this.audio) {\n this.audio = new Audio('https://js.gleap.io/res/ping.mp3');\n }\n\n const playPromise = this.audio.play();\n if (playPromise !== undefined) {\n playPromise.then(_ => { })\n .catch(error => { });\n }\n } catch (exp) { }\n }\n}\n","export default class GleapTagManager {\n tags = [];\n\n // GleapTagManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapTagManager();\n }\n return this.instance;\n }\n\n /**\n * Returns the tags\n * @returns {*}\n */\n getTags() {\n return this.tags;\n }\n\n /**\n * Sets the tags sent with every ticket.\n * @param {*} tags Array of strings\n */\n setTags(tags) {\n this.tags = tags;\n }\n}\n","/**\n * Returns the Tag of the element\n * @param { Object } element\n * @return { String }\n */\nexport function getID( el )\n{\n const id = el.getAttribute( 'id' );\n\n if( id !== null && id !== '')\n {\n // if the ID starts with a number or contains \":\" selecting with a hash will cause a DOMException\n return id.match(/(?:^\\d|:)/) ? `[id=\"${id}\"]` : '#' + id;\n }\n return null;\n}\n","/**\n * Get class names for an element\n *\n * @pararm { Element } el\n * @return { Array }\n */\nexport function getClasses( el )\n{\n if( !el.hasAttribute( 'class' ) )\n {\n return [];\n }\n\n try {\n let classList = Array.prototype.slice.call( el.classList )\n\n // return only the valid CSS selectors based on RegEx\n return classList.filter(item => !/^[a-z_-][a-z\\d_-]*$/i.test( item ) ? null : item );\n } catch (e) {\n let className = el.getAttribute( 'class' );\n\n // remove duplicate and leading/trailing whitespaces\n className = className.trim().replace( /\\s+/g, ' ' );\n\n // split into separate classnames\n return className.split( ' ' );\n }\n}\n\n/**\n * Returns the Class selectors of the element\n * @param { Object } element\n * @return { Array }\n */\nexport function getClassSelectors( el )\n{\n const classList = getClasses( el ).filter( Boolean );\n return classList.map( cl => `.${cl}` );\n}\n","/**\n * Recursively combinate items.\n * @param { Array } result\n * @param { Array } items\n * @param { Array } data\n * @param { Number } start\n * @param { Number } end\n * @param { Number } index\n * @param { Number } k\n */\nfunction kCombinations( result, items, data, start, end, index, k )\n{\n if( index === k )\n {\n result.push( data.slice( 0, index ).join( '' ) );\n return;\n }\n\n for( let i = start; i <= end && end - i + 1 >= k - index; ++i )\n {\n data[index] = items[i];\n kCombinations( result, items, data, i + 1, end, index + 1, k );\n }\n}\n\n/**\n * Returns all the possible selector combinations\n * @param { Array } items\n * @param { Number } k\n * @return { Array }\n */\nexport function getCombinations( items, k )\n{\n const result = [],\n n = items.length,\n data = [];\n\n for( var l = 1; l <= k; ++l )\n {\n kCombinations( result, items, data, 0, n - 1, 0, l );\n }\n\n return result;\n}\n","/**\n * Determines if the passed el is a DOM element\n */\nexport function isElement( el )\n{\n let isElem;\n\n if ( typeof HTMLElement === 'object' )\n {\n isElem = el instanceof HTMLElement;\n }\n else\n {\n isElem = !!el && ( typeof el === 'object' ) && el.nodeType === 1 && typeof el.nodeName === 'string';\n }\n return isElem;\n}\n","import { isElement } from './isElement';\n\n/**\n * Returns the selectors based on the position of the element relative to its siblings\n * @param { Object } element\n * @return { Array }\n */\nexport function getNthChild( element )\n{\n let counter = 0;\n let k;\n let sibling;\n const { parentNode } = element;\n\n if( Boolean( parentNode ) )\n {\n const { childNodes } = parentNode;\n const len = childNodes.length;\n for ( k = 0; k < len; k++ )\n {\n sibling = childNodes[ k ];\n if( isElement( sibling ) )\n {\n counter++;\n if( sibling === element )\n {\n return `:nth-child(${counter})`;\n }\n }\n }\n }\n return null;\n}\n","/**\n * Returns the Tag of the element\n * @param { Object } element\n * @return { String }\n */\nexport function getTag( el )\n{\n return el.tagName.toLowerCase().replace(/:/g, '\\\\:');\n}\n","/**\n * Checks if the selector is unique\n * @param { Object } element\n * @param { String } selector\n * @return { Array }\n */\nexport function isUnique( el, selector )\n{\n if( !Boolean( selector ) ) return false;\n const elems = el.ownerDocument.querySelectorAll( selector );\n return elems.length === 1 && elems[ 0 ] === el;\n}\n","/**\n * Expose `unique`\n */\n\nimport { getID } from './getID';\nimport { getClassSelectors } from './getClasses';\nimport { getCombinations } from './getCombinations';\nimport { getAttributes } from './getAttributes';\nimport { getNthChild } from './getNthChild';\nimport { getTag } from './getTag';\nimport { isUnique } from './isUnique';\nimport { getParents } from './getParents';\n\n\n/**\n * Returns all the selectors of the elmenet\n * @param { Object } element\n * @return { Object }\n */\nfunction getAllSelectors( el, selectors, attributesToIgnore )\n{\n const funcs =\n {\n 'Tag' : getTag,\n 'NthChild' : getNthChild,\n 'Attributes' : elem => getAttributes( elem, attributesToIgnore ),\n 'Class' : getClassSelectors,\n 'ID' : getID,\n };\n\n return selectors.reduce( ( res, next ) =>\n {\n res[ next ] = funcs[ next ]( el );\n return res;\n }, {} );\n}\n\n/**\n * Tests uniqueNess of the element inside its parent\n * @param { Object } element\n * @param { String } Selectors\n * @return { Boolean }\n */\nfunction testUniqueness( element, selector )\n{\n try {\n const { parentNode } = element;\n const elements = parentNode.querySelectorAll( selector );\n return elements.length === 1 && elements[ 0 ] === element;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tests all selectors for uniqueness and returns the first unique selector.\n * @param { Object } element\n * @param { Array } selectors\n * @return { String }\n */\nfunction getFirstUnique( element, selectors )\n{\n return selectors.find( testUniqueness.bind( null, element ) );\n}\n\n/**\n * Checks all the possible selectors of an element to find one unique and return it\n * @param { Object } element\n * @param { Array } items\n * @param { String } tag\n * @return { String }\n */\nfunction getUniqueCombination( element, items, tag )\n{\n let combinations = getCombinations( items, 3 ),\n firstUnique = getFirstUnique( element, combinations );\n\n if( Boolean( firstUnique ) )\n {\n return firstUnique;\n }\n\n if( Boolean( tag ) )\n {\n combinations = combinations.map( combination => tag + combination );\n firstUnique = getFirstUnique( element, combinations );\n\n if( Boolean( firstUnique ) )\n {\n return firstUnique;\n }\n }\n\n return null;\n}\n\n/**\n * Returns a uniqueSelector based on the passed options\n * @param { DOM } element\n * @param { Array } options\n * @return { String }\n */\nfunction getUniqueSelector( element, selectorTypes, attributesToIgnore, excludeRegex )\n{\n let foundSelector;\n\n const elementSelectors = getAllSelectors( element, selectorTypes, attributesToIgnore );\n\n if( excludeRegex && excludeRegex instanceof RegExp )\n {\n elementSelectors.ID = excludeRegex.test( elementSelectors.ID ) ? null : elementSelectors.ID;\n elementSelectors.Class = elementSelectors.Class.filter( className => !excludeRegex.test( className ) );\n }\n\n for( let selectorType of selectorTypes )\n {\n const { ID, Tag, Class : Classes, Attributes, NthChild } = elementSelectors;\n switch ( selectorType )\n {\n case 'ID' :\n if ( Boolean( ID ) && testUniqueness( element, ID ) )\n {\n return ID;\n }\n break;\n\n case 'Tag':\n if ( Boolean( Tag ) && testUniqueness( element, Tag ) )\n {\n return Tag;\n }\n break;\n\n case 'Class':\n if ( Boolean( Classes ) && Classes.length )\n {\n foundSelector = getUniqueCombination( element, Classes, Tag );\n if (foundSelector) {\n return foundSelector;\n }\n }\n break;\n\n case 'Attributes':\n if ( Boolean( Attributes ) && Attributes.length )\n {\n foundSelector = getUniqueCombination( element, Attributes, Tag );\n if ( foundSelector )\n {\n return foundSelector;\n }\n }\n break;\n\n case 'NthChild':\n if ( Boolean( NthChild ) )\n {\n return NthChild\n }\n }\n }\n return '*';\n}\n\n/**\n * Generate unique CSS selector for given DOM element\n *\n * @param {Element} el\n * @return {String}\n * @api private\n */\n\nexport default function unique( el, options={} )\n{\n const {\n selectorTypes = ['ID', 'Class', 'Tag', 'NthChild'],\n attributesToIgnore = ['id', 'class', 'length'],\n excludeRegex = null,\n } = options;\n const allSelectors = [];\n const parents = getParents( el );\n\n for( let elem of parents )\n {\n const selector = getUniqueSelector( elem, selectorTypes, attributesToIgnore, excludeRegex );\n if( Boolean( selector ) )\n {\n allSelectors.push( selector );\n }\n }\n\n const selectors = [];\n for( let it of allSelectors )\n {\n selectors.unshift( it );\n const selector = selectors.join( ' > ' );\n if( isUnique( el, selector ) )\n {\n return selector;\n }\n }\n\n return null;\n}\n","/**\n * Returns the Attribute selectors of the element\n * @param { DOM Element } element\n * @param { Array } array of attributes to ignore\n * @return { Array }\n */\nexport function getAttributes( el, attributesToIgnore = ['id', 'class', 'length'] )\n{\n const { attributes } = el;\n const attrs = [ ...attributes ];\n\n return attrs.reduce( ( sum, next ) =>\n {\n if ( ! ( attributesToIgnore.indexOf( next.nodeName ) > -1 ) )\n {\n sum.push( `[${next.nodeName}=\"${next.value}\"]` );\n }\n return sum;\n }, [] );\n}\n","import { isElement } from './isElement';\n\n/**\n * Returns all the element and all of its parents\n * @param { DOM Element }\n * @return { Array of DOM elements }\n */\nexport function getParents( el )\n{\n const parents = [];\n let currentElement = el;\n while( isElement( currentElement ) )\n {\n parents.push( currentElement );\n currentElement = currentElement.parentNode;\n }\n\n return parents;\n}\n","/**\n * Utility function to get the bounding rectangle of an element.\n * @param {HTMLElement} el - The target element.\n * @returns {Object} An object containing x, y, width, and height.\n */\nfunction getElementBounds(el) {\n const rect = el.getBoundingClientRect();\n return {\n x: window.pageXOffset + rect.left,\n y: window.pageYOffset + rect.top,\n width: el.offsetWidth,\n height: el.offsetHeight,\n };\n}\n\n/**\n * Class representing an overlay element.\n */\nclass ElementOverlay {\n /**\n * Create an ElementOverlay.\n * @param {Object} options - Configuration options.\n * @param {string} [options.className] - CSS class name for the overlay.\n * @param {Object} [options.style] - Style overrides for the overlay.\n */\n constructor(options) {\n // Create and style the overlay element.\n this.overlay = document.createElement(\"div\");\n this.overlay.className = options.className || \"_ext-element-overlay\";\n this.overlay.style.background =\n (options.style && options.style.background) || \"rgba(250, 240, 202, 0.2)\";\n this.overlay.style.borderColor =\n (options.style && options.style.borderColor) || \"#F95738\";\n this.overlay.style.borderStyle =\n (options.style && options.style.borderStyle) || \"solid\";\n this.overlay.style.borderRadius =\n (options.style && options.style.borderRadius) || \"1px\";\n this.overlay.style.borderWidth =\n (options.style && options.style.borderWidth) || \"1px\";\n this.overlay.style.boxSizing =\n (options.style && options.style.boxSizing) || \"border-box\";\n this.overlay.style.cursor =\n (options.style && options.style.cursor) || \"crosshair\";\n this.overlay.style.position =\n (options.style && options.style.position) || \"absolute\";\n this.overlay.style.zIndex =\n (options.style && options.style.zIndex) || \"2147483647\";\n this.overlay.style.margin =\n (options.style && options.style.margin) || \"0px\";\n this.overlay.style.padding =\n (options.style && options.style.padding) || \"0px\";\n\n // Create a container that will host a Shadow DOM.\n this.shadowContainer = document.createElement(\"div\");\n this.shadowContainer.className = \"_ext-element-overlay-container\";\n this.shadowContainer.style.position = \"absolute\";\n this.shadowContainer.style.top = \"0px\";\n this.shadowContainer.style.left = \"0px\";\n this.shadowContainer.style.margin = \"0px\";\n this.shadowContainer.style.padding = \"0px\";\n this.shadowRoot = this.shadowContainer.attachShadow({ mode: \"open\" });\n }\n\n /**\n * Adds the overlay to the DOM.\n * @param {Node} parent - The parent element.\n * @param {boolean} useShadowDOM - Whether to use Shadow DOM.\n */\n addToDOM(parent, useShadowDOM) {\n this.usingShadowDOM = useShadowDOM;\n if (useShadowDOM) {\n parent.insertBefore(this.shadowContainer, parent.firstChild);\n this.shadowRoot.appendChild(this.overlay);\n } else {\n parent.appendChild(this.overlay);\n }\n }\n\n /**\n * Removes the overlay from the DOM.\n */\n removeFromDOM() {\n this.setBounds({ x: 0, y: 0, width: 0, height: 0 });\n if (this.overlay.remove) {\n this.overlay.remove();\n } else if (this.overlay.parentNode) {\n this.overlay.parentNode.removeChild(this.overlay);\n }\n if (this.usingShadowDOM) {\n if (this.shadowContainer.remove) {\n this.shadowContainer.remove();\n } else if (this.shadowContainer.parentNode) {\n this.shadowContainer.parentNode.removeChild(this.shadowContainer);\n }\n }\n }\n\n /**\n * Enables pointer events on the overlay.\n */\n captureCursor() {\n this.overlay.style.pointerEvents = \"auto\";\n }\n\n /**\n * Disables pointer events on the overlay.\n */\n ignoreCursor() {\n this.overlay.style.pointerEvents = \"none\";\n }\n\n /**\n * Sets the position and size of the overlay.\n * @param {Object} bounds - The bounding box.\n * @param {number} bounds.x - The x-coordinate.\n * @param {number} bounds.y - The y-coordinate.\n * @param {number} bounds.width - The width.\n * @param {number} bounds.height - The height.\n */\n setBounds(bounds) {\n const { x, y, width, height } = bounds;\n this.overlay.style.left = x + \"px\";\n this.overlay.style.top = y + \"px\";\n this.overlay.style.width = width + \"px\";\n this.overlay.style.height = height + \"px\";\n }\n}\n\n/**\n * Class representing an element picker that uses the overlay.\n */\nclass ElementPicker {\n /**\n * Create an ElementPicker.\n * @param {Object} [overlayOptions] - Options to pass to ElementOverlay.\n */\n constructor(overlayOptions) {\n this.active = false;\n this.overlay = new ElementOverlay(overlayOptions || {});\n this.handleMouseMove = this.handleMouseMove.bind(this);\n this.handleClick = this.handleClick.bind(this);\n this.tick = this.tick.bind(this);\n }\n\n /**\n * Starts the element picking process.\n * @param {Object} options - Picker options.\n * @param {Node} [options.parentElement] - Parent element to attach the overlay.\n * @param {boolean} [options.useShadowDOM=true] - Whether to use Shadow DOM.\n * @param {Function} [options.onClick] - Callback invoked on click.\n * @param {Function} [options.onHover] - Callback invoked on hover.\n * @param {Function} [options.elementFilter] - Function to filter elements.\n * @returns {boolean} True if started successfully, false if already active.\n */\n start(options) {\n if (this.active) {\n return false;\n }\n this.active = true;\n this.options = options;\n\n document.addEventListener(\"mousemove\", this.handleMouseMove, true);\n document.addEventListener(\"click\", this.handleClick, true);\n\n const parentElement = options.parentElement || document.body;\n const useShadowDOM =\n options.useShadowDOM !== undefined ? options.useShadowDOM : true;\n this.overlay.addToDOM(parentElement, useShadowDOM);\n this.tick();\n\n return true;\n }\n\n /**\n * Stops the element picking process.\n */\n stop() {\n this.active = false;\n this.options = undefined;\n\n document.removeEventListener(\"mousemove\", this.handleMouseMove, true);\n document.removeEventListener(\"click\", this.handleClick, true);\n\n this.overlay.removeFromDOM();\n this.target = undefined;\n this.mouseX = undefined;\n this.mouseY = undefined;\n\n if (this.tickReq) {\n window.cancelAnimationFrame(this.tickReq);\n }\n }\n\n /**\n * Handles mouse move events.\n * @param {MouseEvent} event - The mousemove event.\n */\n handleMouseMove(event) {\n this.mouseX = event.clientX;\n this.mouseY = event.clientY;\n }\n\n /**\n * Handles click events.\n * @param {MouseEvent} event - The click event.\n */\n handleClick(event) {\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n\n if (this.target && this.options && this.options.onClick) {\n this.options.onClick(this.target);\n }\n }\n\n /**\n * The tick function that continuously updates the target element.\n */\n tick() {\n this.updateTarget();\n this.tickReq = window.requestAnimationFrame(this.tick);\n }\n\n /**\n * Updates the target element based on the current mouse position.\n */\n updateTarget() {\n if (this.mouseX === undefined || this.mouseY === undefined) {\n return;\n }\n\n // Temporarily ignore the overlay's pointer events to detect the underlying element.\n this.overlay.ignoreCursor();\n const elAtCursor = document.elementFromPoint(this.mouseX, this.mouseY);\n const newTarget = elAtCursor;\n this.overlay.captureCursor();\n\n // If the target hasn't changed, do nothing.\n if (!newTarget || newTarget === this.target) {\n return;\n }\n\n // If an element filter is provided and the new target doesn't match, clear the target.\n if (this.options && this.options.elementFilter) {\n if (!this.options.elementFilter(newTarget)) {\n this.target = undefined;\n this.overlay.setBounds({ x: 0, y: 0, width: 0, height: 0 });\n return;\n }\n }\n\n this.target = newTarget;\n const bounds = getElementBounds(newTarget);\n this.overlay.setBounds(bounds);\n\n if (this.options && this.options.onHover) {\n this.options.onHover(newTarget);\n }\n }\n}\n\nexport default ElementPicker;\n","import unique from \"./unique-selector/src/unique-selector\";\nimport ElementPicker from \"./ElementPicker\";\n\nclass GleapAdminHelper {\n picker = null;\n onElementPicked = null;\n\n stopPicker = () => {\n if (this.picker) {\n this.picker.stop();\n this.picker = null;\n return;\n }\n };\n\n startPicker = () => {\n this.stopPicker();\n var self = this;\n\n const style = {\n borderColor: \"#2142E7\",\n background: \"transparent\",\n borderWidth: \"4px\",\n borderRadius: \"5px\",\n };\n this.picker = new ElementPicker({ style });\n this.picker.start({\n useShadowDOM: false,\n onClick: (el) => {\n try {\n let selector;\n const tourId = el.getAttribute(\"data-gleap-tour\");\n if (tourId) {\n selector = `[data-gleap-tour=\"${tourId}\"]`;\n } else {\n selector = unique(el);\n }\n\n self.onElementPicked && self.onElementPicked(selector);\n } catch (e) {\n console.error(\"Error while getting unique selector\", e);\n }\n },\n elementFilter: (el) => {\n if (\n el.classList.contains(\"gleap-admin-collapse-ui\") ||\n el.closest(\".gleap-admin-collapse-ui\")\n ) {\n return false;\n }\n return true;\n },\n });\n };\n\n setMode = (mode) => {\n this.mode = mode;\n if (mode === \"navigate\") {\n this.stopPicker();\n }\n if (mode === \"picker\") {\n this.startPicker();\n }\n };\n}\n\nexport default GleapAdminHelper;\n","import { loadIcon } from \"./UI\";\nimport GleapAdminHelper from \"./GleapAdminHelper\";\nimport { GleapProductTours } from \"./Gleap\";\n\nexport default class GleapAdminManager {\n libraryInstance = null;\n lastUrl = undefined;\n injectedFrame = false;\n gleapFrameContainer = null;\n gleapCollapseUI = null;\n injectedCollapseUI = false;\n gleapFrame = null;\n configData = null;\n adminHelper = null;\n status = \"navigate\";\n\n // GleapAdminManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapAdminManager();\n }\n\n return this.instance;\n }\n\n logCurrentPage() {\n const currentUrl = window.location.href;\n if (currentUrl && currentUrl !== this.lastUrl) {\n this.lastUrl = currentUrl;\n\n this.sendMessageToTourBuilder({\n name: \"page-changed\",\n data: {\n page: currentUrl,\n },\n });\n }\n }\n\n startPageListener() {\n const self = this;\n setInterval(function () {\n self.logCurrentPage();\n }, 1000);\n }\n\n initAdminHelper() {\n const self = this;\n\n // Disable product tours.\n GleapProductTours.getInstance().disable();\n\n self.adminHelper = new GleapAdminHelper();\n\n try {\n self.adminHelper.onElementPicked = (selector) => {\n self.toggleCollapseUI(true);\n self.sendMessageToTourBuilder({\n name: \"element-picked\",\n data: {\n selector,\n },\n });\n };\n } catch (e) {\n console.log(e);\n }\n\n self.injectFrame();\n self.injectCollapseUI();\n self.setFrameHeight(\"loading\");\n }\n\n setFrameHeight(state) {\n if (this.gleapFrameContainer) {\n var height = \"\";\n if (state === \"picker\" || state === \"navigate\") {\n height = \"65px\";\n } else if (state === \"editor\") {\n height = \"100vh\";\n } else {\n height = \"0px\";\n }\n this.gleapFrameContainer.style.height = height;\n }\n }\n\n start() {\n if (typeof window === \"undefined\") {\n return;\n }\n\n if (window.gleapAdminDisabled) {\n return;\n }\n\n var self = this;\n\n // Add window message listener.\n window.addEventListener(\"message\", (event) => {\n if (event.origin !== \"https://app.gleap.io\") {\n return;\n }\n\n try {\n const data = JSON.parse(event.data);\n\n if (data.type === \"admin\") {\n if (data.name === \"load\") {\n self.configData = data.data;\n self.initAdminHelper();\n }\n\n if (data.name === \"smartlink-search-result\") {\n this.sendMessageToTourBuilder({\n name: \"smartlink-search-result\",\n data: data.data,\n });\n }\n\n if (data.name === \"translate-complete\") {\n this.sendMessageToTourBuilder({\n name: \"translate-complete\",\n data: data.data,\n });\n }\n }\n\n if (data.type === \"tourbuilder\") {\n if (data.name === \"loaddata\") {\n this.sendMessageToTourBuilder({\n name: \"data\",\n data: {\n ...self.configData,\n currentPage: window.location.href,\n },\n });\n }\n\n if (data.name === \"highlight-element\") {\n // Cleanup.\n document\n .querySelectorAll(\".gleap-admin-highlight\")\n .forEach((el) => {\n el.classList.remove(\"gleap-admin-highlight\");\n });\n\n // Find the element and highlight it.\n if (data?.data?.selector) {\n const element = document.querySelector(data?.data?.selector);\n if (element) {\n element.classList.add(\"gleap-admin-highlight\");\n }\n }\n }\n\n if (data.name === \"smartlink-search\") {\n this.sendMessage({\n name: \"smartlink-search\",\n data: data.data,\n });\n }\n\n if (data.name === \"product-tour-started\") {\n this.sendMessage({\n name: \"product-tour-started\",\n data: data.data,\n });\n }\n\n if (data.name === \"translate\") {\n this.sendMessage({\n name: \"translate\",\n data: data.data,\n });\n }\n\n if (data.name === \"save\") {\n this.sendMessage({\n name: \"save\",\n data: data.data,\n });\n }\n\n if (data.name === \"update-steps\") {\n this.sendMessage({\n name: \"update-steps\",\n data: data.data,\n });\n }\n\n if (data.name === \"click\") {\n try {\n document.querySelector(data.data.selector).click();\n } catch (e) {\n console.log(e);\n }\n }\n\n if (data.name === \"status-changed\") {\n self.status = data.data;\n this.setFrameHeight(self.status);\n self.adminHelper.stopPicker();\n\n if (self.status === \"picker\") {\n self.adminHelper.startPicker();\n }\n }\n }\n } catch (exp) {}\n });\n\n this.sendMessage({\n name: \"init\",\n });\n\n this.startPageListener();\n }\n\n sendMessage(data) {\n try {\n if (window && window.opener) {\n window.opener.postMessage(\n JSON.stringify({\n ...data,\n type: \"admin\",\n }),\n \"*\"\n );\n }\n } catch (e) {}\n }\n\n sendMessageToTourBuilder(data) {\n try {\n if (this.gleapFrame && this.gleapFrame.contentWindow) {\n this.gleapFrame.contentWindow.postMessage(\n JSON.stringify({\n ...data,\n type: \"tourbuilder\",\n }),\n \"*\"\n );\n }\n } catch (e) {}\n }\n\n toggleCollapseUI = (onlyIfActive = false) => {\n const COLLAPSE_UI_ACTIVE_CLASS = \"gleap-admin-collapse-ui-active\";\n const FRAME_CONTAINER_ACTIVE_CLASS = \"gleap-admin-frame-container-active\";\n\n // Helper function to check if an element has an active class\n const isActive = (element, activeClass) =>\n element && element.classList.contains(activeClass);\n\n // Check if onlyIfActive is true and if the UI elements are already inactive\n if (\n onlyIfActive &&\n (!isActive(this.gleapCollapseUI, COLLAPSE_UI_ACTIVE_CLASS) ||\n !isActive(this.gleapFrameContainer, FRAME_CONTAINER_ACTIVE_CLASS))\n ) {\n return; // Return early without toggling the UI\n }\n\n // Toggle the UI elements\n if (this.gleapCollapseUI) {\n this.gleapCollapseUI.classList.toggle(COLLAPSE_UI_ACTIVE_CLASS);\n }\n if (this.gleapFrameContainer) {\n this.gleapFrameContainer.classList.toggle(FRAME_CONTAINER_ACTIVE_CLASS);\n }\n };\n\n injectCollapseUI = () => {\n if (this.injectedCollapseUI) {\n return;\n }\n this.injectedCollapseUI = true;\n\n // Inject widget HTML.\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-admin-collapse-ui\";\n elem.innerHTML = `
\n ${loadIcon(\"arrowdown\")}\n
`;\n document.body.appendChild(elem);\n\n this.gleapCollapseUI = elem;\n\n elem.addEventListener(\"click\", (e) => {\n e.stopImmediatePropagation();\n e.stopPropagation();\n e.preventDefault();\n\n this.toggleCollapseUI();\n });\n };\n\n injectFrame = () => {\n if (this.injectedFrame) {\n return;\n }\n this.injectedFrame = true;\n\n // Inject widget HTML.\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-admin-frame-container\";\n elem.innerHTML = ``;\n document.body.appendChild(elem);\n\n this.gleapFrameContainer = elem;\n this.gleapFrame = document.querySelector(\".gleap-admin-frame\");\n };\n}\n","const GleapTours = (function () {\n \"use strict\";\n let currentConfig = {};\n function configure(config = {}) {\n currentConfig = {\n animate: true,\n allowClose: true,\n overlayOpacity: 0.7,\n smoothScroll: false,\n disableActiveInteraction: false,\n showProgress: false,\n stagePadding: 10,\n stageRadius: 5,\n popoverOffset: 10,\n showButtons: [\"next\", \"previous\", \"close\"],\n disableButtons: [],\n overlayColor: \"#000\",\n ...config,\n };\n }\n function getConfig(key) {\n return key ? currentConfig[key] : currentConfig;\n }\n function easeInOutQuad(elapsed, initialValue, amountOfChange, duration) {\n if ((elapsed /= duration / 2) < 1) {\n return (amountOfChange / 2) * elapsed * elapsed + initialValue;\n }\n return (\n (-amountOfChange / 2) * (--elapsed * (elapsed - 2) - 1) + initialValue\n );\n }\n function getFocusableElements(parentEls) {\n const focusableQuery =\n 'a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type=\"text\"]:not([disabled]), input[type=\"radio\"]:not([disabled]), input[type=\"checkbox\"]:not([disabled]), select:not([disabled])';\n return parentEls\n .flatMap((parentEl) => {\n const isParentFocusable = parentEl.matches(focusableQuery);\n const focusableEls = Array.from(\n parentEl.querySelectorAll(focusableQuery)\n );\n return [...(isParentFocusable ? [parentEl] : []), ...focusableEls];\n })\n .filter((el) => {\n return (\n getComputedStyle(el).pointerEvents !== \"none\" && isElementVisible(el)\n );\n });\n }\n function bringInView(element) {\n if (!element || isElementInView(element)) {\n return;\n }\n const shouldSmoothScroll = getConfig(\"smoothScroll\");\n element.scrollIntoView({\n // Removing the smooth scrolling for elements which exist inside the scrollable parent\n // This was causing the highlight to not properly render\n behavior:\n !shouldSmoothScroll || hasScrollableParent(element) ? \"auto\" : \"smooth\",\n inline: \"center\",\n block: \"center\",\n });\n }\n function hasScrollableParent(e) {\n if (!e || !e.parentElement) {\n return;\n }\n const parent = e.parentElement;\n return parent.scrollHeight > parent.clientHeight;\n }\n function isElementInView(element) {\n const rect = element.getBoundingClientRect();\n return (\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <=\n (window.innerHeight || document.documentElement.clientHeight) &&\n rect.right <= (window.innerWidth || document.documentElement.clientWidth)\n );\n }\n function isElementVisible(el) {\n return !!(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\n }\n let currentState = {};\n function setState(key, value) {\n currentState[key] = value;\n }\n function getState(key) {\n return key ? currentState[key] : currentState;\n }\n function resetState() {\n currentState = {};\n }\n let registeredListeners = {};\n function listen(hook, callback) {\n registeredListeners[hook] = callback;\n }\n function emit(hook) {\n var _a;\n (_a = registeredListeners[hook]) == null\n ? void 0\n : _a.call(registeredListeners);\n }\n function destroyEmitter() {\n registeredListeners = {};\n }\n function transitionStage(elapsed, duration, from, to) {\n let activeStagePosition = getState(\"__activeStagePosition\");\n const fromDefinition = activeStagePosition\n ? activeStagePosition\n : from.getBoundingClientRect();\n const toDefinition = to.getBoundingClientRect();\n const x = easeInOutQuad(\n elapsed,\n fromDefinition.x,\n toDefinition.x - fromDefinition.x,\n duration\n );\n const y = easeInOutQuad(\n elapsed,\n fromDefinition.y,\n toDefinition.y - fromDefinition.y,\n duration\n );\n const width = easeInOutQuad(\n elapsed,\n fromDefinition.width,\n toDefinition.width - fromDefinition.width,\n duration\n );\n const height = easeInOutQuad(\n elapsed,\n fromDefinition.height,\n toDefinition.height - fromDefinition.height,\n duration\n );\n activeStagePosition = {\n x,\n y,\n width,\n height,\n };\n renderOverlay(activeStagePosition);\n setState(\"__activeStagePosition\", activeStagePosition);\n }\n function trackActiveElement(element) {\n if (!element) {\n return;\n }\n const definition = element.getBoundingClientRect();\n const activeStagePosition = {\n x: definition.x,\n y: definition.y,\n width: definition.width,\n height: definition.height,\n };\n setState(\"__activeStagePosition\", activeStagePosition);\n renderOverlay(activeStagePosition);\n }\n function refreshOverlay() {\n const activeStagePosition = getState(\"__activeStagePosition\");\n const overlaySvg = getState(\"__overlaySvg\");\n if (!activeStagePosition) {\n return;\n }\n if (!overlaySvg) {\n console.warn(\"No stage svg found.\");\n return;\n }\n const windowX = window.innerWidth;\n const windowY = window.innerHeight;\n overlaySvg.setAttribute(\"viewBox\", `0 0 ${windowX} ${windowY}`);\n }\n function mountOverlay(stagePosition) {\n const overlaySvg = createOverlaySvg(stagePosition);\n document.body.appendChild(overlaySvg);\n onDriverClick(overlaySvg, (e) => {\n const target = e.target;\n if (target.tagName !== \"path\") {\n return;\n }\n emit(\"overlayClick\");\n });\n setState(\"__overlaySvg\", overlaySvg);\n }\n function renderOverlay(stagePosition) {\n const overlaySvg = getState(\"__overlaySvg\");\n if (!overlaySvg) {\n mountOverlay(stagePosition);\n return;\n }\n const pathElement = overlaySvg.firstElementChild;\n if ((pathElement == null ? void 0 : pathElement.tagName) !== \"path\") {\n throw new Error(\"no path element found in stage svg\");\n }\n pathElement.setAttribute(\"d\", generateStageSvgPathString(stagePosition));\n }\n function createOverlaySvg(stage) {\n const windowX = window.innerWidth;\n const windowY = window.innerHeight;\n const svg = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n svg.classList.add(\"gleap-tour-overlay\", \"gleap-tour-overlay-animated\");\n svg.setAttribute(\"viewBox\", `0 0 ${windowX} ${windowY}`);\n svg.setAttribute(\"xmlSpace\", \"preserve\");\n svg.setAttribute(\"xmlnsXlink\", \"http://www.w3.org/1999/xlink\");\n svg.setAttribute(\"version\", \"1.1\");\n svg.setAttribute(\"preserveAspectRatio\", \"xMinYMin slice\");\n svg.style.fillRule = \"evenodd\";\n svg.style.clipRule = \"evenodd\";\n svg.style.strokeLinejoin = \"round\";\n svg.style.strokeMiterlimit = \"2\";\n svg.style.zIndex = \"10000\";\n svg.style.position = \"fixed\";\n svg.style.top = \"0\";\n svg.style.left = \"0\";\n svg.style.width = \"100%\";\n svg.style.height = \"100%\";\n const stagePath = document.createElementNS(\n \"http://www.w3.org/2000/svg\",\n \"path\"\n );\n stagePath.setAttribute(\"d\", generateStageSvgPathString(stage));\n stagePath.style.fill = getConfig(\"overlayColor\") || \"rgb(0,0,0)\";\n stagePath.style.opacity = `${getConfig(\"overlayOpacity\")}`;\n stagePath.style.pointerEvents = \"auto\";\n stagePath.style.cursor = \"auto\";\n svg.appendChild(stagePath);\n return svg;\n }\n function generateStageSvgPathString(stage) {\n const windowX = window.innerWidth;\n const windowY = window.innerHeight;\n const stagePadding = getConfig(\"stagePadding\") || 0;\n const stageRadius = getConfig(\"stageRadius\") || 0;\n const stageWidth = stage.width + stagePadding * 2;\n const stageHeight = stage.height + stagePadding * 2;\n const limitedRadius = Math.min(\n stageRadius,\n stageWidth / 2,\n stageHeight / 2\n );\n const normalizedRadius = Math.floor(Math.max(limitedRadius, 0));\n const highlightBoxX = stage.x - stagePadding + normalizedRadius;\n const highlightBoxY = stage.y - stagePadding;\n const highlightBoxWidth = stageWidth - normalizedRadius * 2;\n const highlightBoxHeight = stageHeight - normalizedRadius * 2;\n return `M${windowX},0L0,0L0,${windowY}L${windowX},${windowY}L${windowX},0Z\n M${highlightBoxX},${highlightBoxY} h${highlightBoxWidth} a${normalizedRadius},${normalizedRadius} 0 0 1 ${normalizedRadius},${normalizedRadius} v${highlightBoxHeight} a${normalizedRadius},${normalizedRadius} 0 0 1 -${normalizedRadius},${normalizedRadius} h-${highlightBoxWidth} a${normalizedRadius},${normalizedRadius} 0 0 1 -${normalizedRadius},-${normalizedRadius} v-${highlightBoxHeight} a${normalizedRadius},${normalizedRadius} 0 0 1 ${normalizedRadius},-${normalizedRadius} z`;\n }\n function destroyOverlay() {\n const overlaySvg = getState(\"__overlaySvg\");\n if (overlaySvg) {\n overlaySvg.remove();\n }\n }\n function mountDummyElement() {\n const existingDummy = document.getElementById(\"gleap-tour-dummy-element\");\n if (existingDummy) {\n return existingDummy;\n }\n let element = document.createElement(\"div\");\n element.id = \"gleap-tour-dummy-element\";\n element.style.width = \"0\";\n element.style.height = \"0\";\n element.style.pointerEvents = \"none\";\n element.style.opacity = \"0\";\n element.style.position = \"fixed\";\n element.style.top = \"50%\";\n element.style.left = \"50%\";\n document.body.appendChild(element);\n return element;\n }\n function highlight(step, attemptTime = 5000) {\n const { element } = step;\n let elemObj = element;\n if (typeof elemObj === \"string\") {\n try {\n elemObj = document.querySelector(element);\n } catch (error) {\n // This will escape colons within IDs but not affect pseudo-classes or other valid uses of colons\n let refactoredElement = element.replace(\n /(#[^#\\s]+)/g,\n function (match) {\n return match.replace(/:/g, \"\\\\:\");\n }\n );\n elemObj = document.querySelector(refactoredElement);\n }\n }\n if (element && !elemObj && attemptTime >= 0) {\n setTimeout(() => {\n hidePopover();\n highlight(step, attemptTime - 100);\n }, 100);\n\n return;\n }\n\n if (!elemObj) {\n if (step.mode === \"INPUT\" || step.mode === \"CLICK\") {\n return getConfig(\"onElementNotFound\")(step);\n }\n }\n\n if (!elemObj) {\n elemObj = mountDummyElement();\n }\n\n transferHighlight(elemObj, step);\n }\n function refreshActiveHighlight() {\n const activeHighlight = getState(\"__activeElement\");\n const activeStep = getState(\"__activeStep\");\n if (!activeHighlight) {\n return;\n }\n trackActiveElement(activeHighlight);\n refreshOverlay();\n repositionPopover(activeHighlight, activeStep);\n }\n function transferHighlight(toElement, toStep) {\n const duration = 400;\n const start = Date.now();\n const fromStep = getState(\"__activeStep\");\n const fromElement = getState(\"__activeElement\") || toElement;\n const isFirstHighlight = !fromElement || fromElement === toElement;\n const isToDummyElement = toElement.id === \"gleap-tour-dummy-element\";\n const isFromDummyElement = fromElement.id === \"gleap-tour-dummy-element\";\n const isAnimatedTour = getConfig(\"animate\");\n const highlightStartedHook =\n toStep.onHighlightStarted || getConfig(\"onHighlightStarted\");\n const highlightedHook =\n (toStep == null ? void 0 : toStep.onHighlighted) ||\n getConfig(\"onHighlighted\");\n const deselectedHook =\n (fromStep == null ? void 0 : fromStep.onDeselected) ||\n getConfig(\"onDeselected\");\n const config = getConfig();\n const state = getState();\n if (!isFirstHighlight && deselectedHook) {\n deselectedHook(isFromDummyElement ? void 0 : fromElement, fromStep, {\n config,\n state,\n });\n }\n if (highlightStartedHook) {\n highlightStartedHook(isToDummyElement ? void 0 : toElement, toStep, {\n config,\n state,\n });\n }\n const hasDelayedPopover = !isFirstHighlight && isAnimatedTour;\n let isPopoverRendered = false;\n hidePopover();\n setState(\"previousStep\", fromStep);\n setState(\"previousElement\", fromElement);\n setState(\"activeStep\", toStep);\n setState(\"activeElement\", toElement);\n const animate = () => {\n const transitionCallback = getState(\"__transitionCallback\");\n if (transitionCallback !== animate) {\n return;\n }\n const elapsed = Date.now() - start;\n const timeRemaining = duration - elapsed;\n const isHalfwayThrough = timeRemaining <= duration / 2;\n if (\n toStep.popover &&\n isHalfwayThrough &&\n !isPopoverRendered &&\n hasDelayedPopover\n ) {\n renderPopover(toElement, toStep);\n isPopoverRendered = true;\n }\n if (getConfig(\"animate\") && elapsed < duration) {\n transitionStage(elapsed, duration, fromElement, toElement);\n } else {\n trackActiveElement(toElement);\n if (highlightedHook) {\n highlightedHook(isToDummyElement ? void 0 : toElement, toStep, {\n config: getConfig(),\n state: getState(),\n });\n }\n setState(\"__transitionCallback\", void 0);\n setState(\"__previousStep\", fromStep);\n setState(\"__previousElement\", fromElement);\n setState(\"__activeStep\", toStep);\n setState(\"__activeElement\", toElement);\n }\n window.requestAnimationFrame(animate);\n };\n setState(\"__transitionCallback\", animate);\n window.requestAnimationFrame(animate);\n bringInView(toElement);\n if (!hasDelayedPopover && toStep.popover) {\n renderPopover(toElement, toStep);\n }\n fromElement.classList.remove(\n \"gleap-tour-active-element\",\n \"gleap-tour-no-interaction\"\n );\n fromElement.removeAttribute(\"aria-haspopup\");\n fromElement.removeAttribute(\"aria-expanded\");\n fromElement.removeAttribute(\"aria-controls\");\n const disableActiveInteraction =\n toStep.disableActiveInteraction ??\n getConfig(\"disableActiveInteraction\") ??\n false;\n if (disableActiveInteraction) {\n toElement.classList.add(\"gleap-tour-no-interaction\");\n }\n toElement.classList.add(\"gleap-tour-active-element\");\n toElement.setAttribute(\"aria-haspopup\", \"dialog\");\n toElement.setAttribute(\"aria-expanded\", \"true\");\n toElement.setAttribute(\"aria-controls\", \"gleap-tour-popover-content\");\n }\n function destroyHighlight() {\n var _a;\n (_a = document.getElementById(\"gleap-tour-dummy-element\")) == null\n ? void 0\n : _a.remove();\n document\n .querySelectorAll(\".gleap-tour-active-element\")\n .forEach((element) => {\n element.classList.remove(\n \"gleap-tour-active-element\",\n \"gleap-tour-no-interaction\"\n );\n element.removeAttribute(\"aria-haspopup\");\n element.removeAttribute(\"aria-expanded\");\n element.removeAttribute(\"aria-controls\");\n });\n }\n function requireRefresh() {\n const resizeTimeout = getState(\"__resizeTimeout\");\n if (resizeTimeout) {\n window.cancelAnimationFrame(resizeTimeout);\n }\n setState(\n \"__resizeTimeout\",\n window.requestAnimationFrame(refreshActiveHighlight)\n );\n }\n function trapFocus(e) {\n var _a;\n const isActivated = getState(\"isInitialized\");\n if (!isActivated) {\n return;\n }\n const isTabKey = e.key === \"Tab\" || e.keyCode === 9;\n if (!isTabKey) {\n return;\n }\n const activeElement = getState(\"__activeElement\");\n const popoverEl = (_a = getState(\"popover\")) == null ? void 0 : _a.wrapper;\n const focusableEls = getFocusableElements([\n ...(popoverEl ? [popoverEl] : []),\n ...(activeElement ? [activeElement] : []),\n ]);\n const firstFocusableEl = focusableEls[0];\n const lastFocusableEl = focusableEls[focusableEls.length - 1];\n e.preventDefault();\n if (e.shiftKey) {\n const previousFocusableEl =\n focusableEls[focusableEls.indexOf(document.activeElement) - 1] ||\n lastFocusableEl;\n previousFocusableEl == null ? void 0 : previousFocusableEl.focus();\n } else {\n const nextFocusableEl =\n focusableEls[focusableEls.indexOf(document.activeElement) + 1] ||\n firstFocusableEl;\n nextFocusableEl == null ? void 0 : nextFocusableEl.focus();\n }\n }\n function onKeyup(e) {\n var _a;\n const allowKeyboardControl =\n (_a = getConfig(\"allowKeyboardControl\")) != null ? _a : true;\n if (!allowKeyboardControl) {\n return;\n }\n if (e.key === \"Escape\") {\n emit(\"escapePress\");\n } else if (e.key === \"ArrowRight\") {\n emit(\"arrowRightPress\");\n } else if (e.key === \"ArrowLeft\") {\n emit(\"arrowLeftPress\");\n }\n }\n function onDriverClick(element, listener, shouldPreventDefault) {\n const listenerWrapper = (e, listener2) => {\n const target = e.target;\n if (!element.contains(target)) {\n return;\n }\n if (!shouldPreventDefault || shouldPreventDefault(target)) {\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n listener2 == null ? void 0 : listener2(e);\n };\n const useCapture = true;\n document.addEventListener(\"pointerdown\", listenerWrapper, useCapture);\n document.addEventListener(\"mousedown\", listenerWrapper, useCapture);\n document.addEventListener(\"pointerup\", listenerWrapper, useCapture);\n document.addEventListener(\"mouseup\", listenerWrapper, useCapture);\n document.addEventListener(\n \"click\",\n (e) => {\n listenerWrapper(e, listener);\n },\n useCapture\n );\n }\n function initEvents() {\n window.addEventListener(\"keyup\", onKeyup, false);\n window.addEventListener(\"keydown\", trapFocus, false);\n window.addEventListener(\"resize\", requireRefresh);\n window.addEventListener(\"scroll\", requireRefresh);\n }\n function destroyEvents() {\n window.removeEventListener(\"keyup\", onKeyup);\n window.removeEventListener(\"resize\", requireRefresh);\n window.removeEventListener(\"scroll\", requireRefresh);\n }\n function hidePopover() {\n const popover = getState(\"popover\");\n if (!popover) {\n return;\n }\n popover.wrapper.style.display = \"none\";\n }\n function renderPopover(element, step) {\n var _a, _b;\n let popover = getState(\"popover\");\n if (popover) {\n document.body.removeChild(popover.wrapper);\n }\n popover = createPopover();\n document.body.appendChild(popover.wrapper);\n const {\n title,\n description,\n showButtons,\n disableButtons,\n showProgress,\n nextBtnText = getConfig(\"nextBtnText\") || \"Next\",\n prevBtnText = getConfig(\"prevBtnText\") || \"Previous\",\n progressText = getConfig(\"progressText\") || \"{current} of {total}\",\n } = step.popover || {};\n popover.nextButton.innerHTML = nextBtnText;\n popover.previousButton.innerHTML = prevBtnText;\n popover.progress.innerHTML = progressText;\n if (title) {\n popover.title.innerHTML = title;\n popover.title.style.display = \"block\";\n } else {\n popover.title.style.display = \"none\";\n }\n if (description) {\n popover.description.innerHTML = description;\n popover.description.style.display = \"block\";\n } else {\n popover.description.style.display = \"none\";\n }\n const showButtonsConfig = showButtons || getConfig(\"showButtons\");\n const showProgressConfig =\n showProgress || getConfig(\"showProgress\") || false;\n const showFooter =\n (showButtonsConfig == null\n ? void 0\n : showButtonsConfig.includes(\"next\")) ||\n (showButtonsConfig == null\n ? void 0\n : showButtonsConfig.includes(\"previous\")) ||\n showProgressConfig;\n popover.closeButton.style.display = showButtonsConfig.includes(\"close\")\n ? \"block\"\n : \"none\";\n if (showFooter) {\n popover.footer.style.display = \"flex\";\n popover.progress.style.display = showProgressConfig ? \"block\" : \"none\";\n popover.nextButton.style.display = showButtonsConfig.includes(\"next\")\n ? \"block\"\n : \"none\";\n popover.previousButton.style.display = showButtonsConfig.includes(\n \"previous\"\n )\n ? \"block\"\n : \"none\";\n } else {\n popover.footer.style.display = \"none\";\n }\n const disabledButtonsConfig =\n disableButtons || getConfig(\"disableButtons\") || [];\n if (\n disabledButtonsConfig == null\n ? void 0\n : disabledButtonsConfig.includes(\"next\")\n ) {\n popover.nextButton.disabled = true;\n popover.nextButton.classList.add(\"gleap-tour-popover-btn-disabled\");\n }\n if (\n disabledButtonsConfig == null\n ? void 0\n : disabledButtonsConfig.includes(\"previous\")\n ) {\n popover.previousButton.disabled = true;\n popover.previousButton.classList.add(\"gleap-tour-popover-btn-disabled\");\n }\n if (\n disabledButtonsConfig == null\n ? void 0\n : disabledButtonsConfig.includes(\"close\")\n ) {\n popover.closeButton.disabled = true;\n popover.closeButton.classList.add(\"gleap-tour-popover-btn-disabled\");\n }\n const popoverWrapper = popover.wrapper;\n popoverWrapper.style.display = \"block\";\n popoverWrapper.style.left = \"\";\n popoverWrapper.style.top = \"\";\n popoverWrapper.style.bottom = \"\";\n popoverWrapper.style.right = \"\";\n popoverWrapper.id = \"gleap-tour-popover-content\";\n popoverWrapper.setAttribute(\"role\", \"dialog\");\n popoverWrapper.setAttribute(\"aria-labelledby\", \"gleap-tour-popover-title\");\n popoverWrapper.setAttribute(\n \"aria-describedby\",\n \"gleap-tour-popover-description\"\n );\n const popoverArrow = popover.arrow;\n popoverArrow.className = \"gleap-tour-popover-arrow\";\n const customPopoverClass =\n ((_a = step.popover) == null ? void 0 : _a.popoverClass) ||\n getConfig(\"popoverClass\") ||\n \"\";\n popoverWrapper.className =\n `gleap-tour-popover ${customPopoverClass}`.trim();\n onDriverClick(\n popover.wrapper,\n (e) => {\n var _a2, _b2, _c;\n const target = e.target;\n const onNextClick =\n ((_a2 = step.popover) == null ? void 0 : _a2.onNextClick) ||\n getConfig(\"onNextClick\");\n const onPrevClick =\n ((_b2 = step.popover) == null ? void 0 : _b2.onPrevClick) ||\n getConfig(\"onPrevClick\");\n const onCloseClick =\n ((_c = step.popover) == null ? void 0 : _c.onCloseClick) ||\n getConfig(\"onCloseClick\");\n if (target.classList.contains(\"gleap-tour-popover-next-btn\")) {\n if (onNextClick) {\n return onNextClick(element, step, {\n config: getConfig(),\n state: getState(),\n });\n } else {\n return emit(\"nextClick\");\n }\n }\n if (target.classList.contains(\"gleap-tour-popover-prev-btn\")) {\n if (onPrevClick) {\n return onPrevClick(element, step, {\n config: getConfig(),\n state: getState(),\n });\n } else {\n return emit(\"prevClick\");\n }\n }\n if (target.classList.contains(\"gleap-tour-popover-close-btn\")) {\n if (onCloseClick) {\n return onCloseClick(element, step, {\n config: getConfig(),\n state: getState(),\n });\n } else {\n return emit(\"closeClick\");\n }\n }\n return void 0;\n },\n (target) => {\n return (\n !(popover == null ? void 0 : popover.description.contains(target)) &&\n !(popover == null ? void 0 : popover.title.contains(target)) &&\n typeof target.className === \"string\" &&\n target.className.includes(\"gleap-tour-popover\")\n );\n }\n );\n setState(\"popover\", popover);\n const onPopoverRender =\n ((_b = step.popover) == null ? void 0 : _b.onPopoverRender) ||\n getConfig(\"onPopoverRender\");\n if (onPopoverRender) {\n onPopoverRender(popover, {\n config: getConfig(),\n state: getState(),\n });\n }\n repositionPopover(element, step);\n bringInView(popoverWrapper);\n const isToDummyElement = element.classList.contains(\n \"gleap-tour-dummy-element\"\n );\n const focusableElement = getFocusableElements([\n popoverWrapper,\n ...(isToDummyElement ? [] : [element]),\n ]);\n if (focusableElement.length > 0) {\n focusableElement[0].focus();\n }\n }\n function getPopoverDimensions() {\n const popover = getState(\"popover\");\n if (!(popover == null ? void 0 : popover.wrapper)) {\n return;\n }\n const boundingClientRect = popover.wrapper.getBoundingClientRect();\n const stagePadding = getConfig(\"stagePadding\") || 0;\n const popoverOffset = getConfig(\"popoverOffset\") || 0;\n return {\n width: boundingClientRect.width + stagePadding + popoverOffset,\n height: boundingClientRect.height + stagePadding + popoverOffset,\n realWidth: boundingClientRect.width,\n realHeight: boundingClientRect.height,\n };\n }\n function calculateTopForLeftRight(alignment, config) {\n const {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n } = config;\n if (alignment === \"start\") {\n return Math.max(\n Math.min(\n elementDimensions.top - popoverPadding,\n window.innerHeight -\n popoverDimensions.realHeight -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n if (alignment === \"end\") {\n return Math.max(\n Math.min(\n elementDimensions.top -\n (popoverDimensions == null\n ? void 0\n : popoverDimensions.realHeight) +\n elementDimensions.height +\n popoverPadding,\n window.innerHeight -\n (popoverDimensions == null\n ? void 0\n : popoverDimensions.realHeight) -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n if (alignment === \"center\") {\n return Math.max(\n Math.min(\n elementDimensions.top +\n elementDimensions.height / 2 -\n (popoverDimensions == null\n ? void 0\n : popoverDimensions.realHeight) /\n 2,\n window.innerHeight -\n (popoverDimensions == null\n ? void 0\n : popoverDimensions.realHeight) -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n return 0;\n }\n function calculateLeftForTopBottom(alignment, config) {\n const {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n } = config;\n if (alignment === \"start\") {\n return Math.max(\n Math.min(\n elementDimensions.left - popoverPadding,\n window.innerWidth -\n popoverDimensions.realWidth -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n if (alignment === \"end\") {\n return Math.max(\n Math.min(\n elementDimensions.left -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) +\n elementDimensions.width +\n popoverPadding,\n window.innerWidth -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n if (alignment === \"center\") {\n return Math.max(\n Math.min(\n elementDimensions.left +\n elementDimensions.width / 2 -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) /\n 2,\n window.innerWidth -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n return 0;\n }\n function repositionPopover(element, step) {\n const popover = getState(\"popover\");\n if (!popover) {\n return;\n }\n const { align = \"start\", side = \"left\" } =\n (step == null ? void 0 : step.popover) || {};\n const requiredAlignment = align;\n const requiredSide =\n element.id === \"gleap-tour-dummy-element\" ? \"over\" : side;\n const popoverPadding = getConfig(\"stagePadding\") || 0;\n const popoverDimensions = getPopoverDimensions();\n const popoverArrowDimensions = popover.arrow.getBoundingClientRect();\n const elementDimensions = element.getBoundingClientRect();\n const topValue = elementDimensions.top - popoverDimensions.height;\n let isTopOptimal = topValue >= 0;\n const bottomValue =\n window.innerHeight -\n (elementDimensions.bottom + popoverDimensions.height);\n let isBottomOptimal = bottomValue >= 0;\n const leftValue = elementDimensions.left - popoverDimensions.width;\n let isLeftOptimal = leftValue >= 0;\n const rightValue =\n window.innerWidth - (elementDimensions.right + popoverDimensions.width);\n let isRightOptimal = rightValue >= 0;\n const noneOptimal =\n !isTopOptimal && !isBottomOptimal && !isLeftOptimal && !isRightOptimal;\n let popoverRenderedSide = requiredSide;\n if (requiredSide === \"top\" && isTopOptimal) {\n isRightOptimal = isLeftOptimal = isBottomOptimal = false;\n } else if (requiredSide === \"bottom\" && isBottomOptimal) {\n isRightOptimal = isLeftOptimal = isTopOptimal = false;\n } else if (requiredSide === \"left\" && isLeftOptimal) {\n isRightOptimal = isTopOptimal = isBottomOptimal = false;\n } else if (requiredSide === \"right\" && isRightOptimal) {\n isLeftOptimal = isTopOptimal = isBottomOptimal = false;\n }\n if (requiredSide === \"over\") {\n const leftToSet = window.innerWidth / 2 - popoverDimensions.realWidth / 2;\n const topToSet =\n window.innerHeight / 2 - popoverDimensions.realHeight / 2;\n popover.wrapper.style.left = `${leftToSet}px`;\n popover.wrapper.style.right = `auto`;\n popover.wrapper.style.top = `${topToSet}px`;\n popover.wrapper.style.bottom = `auto`;\n } else if (noneOptimal) {\n const leftValue2 =\n window.innerWidth / 2 -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) / 2;\n const bottomValue2 = 10;\n popover.wrapper.style.left = `${leftValue2}px`;\n popover.wrapper.style.right = `auto`;\n popover.wrapper.style.bottom = `${bottomValue2}px`;\n popover.wrapper.style.top = `auto`;\n } else if (isLeftOptimal) {\n const leftToSet = Math.min(\n leftValue,\n window.innerWidth -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) -\n popoverArrowDimensions.width\n );\n const topToSet = calculateTopForLeftRight(requiredAlignment, {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n });\n popover.wrapper.style.left = `${leftToSet}px`;\n popover.wrapper.style.top = `${topToSet}px`;\n popover.wrapper.style.bottom = `auto`;\n popover.wrapper.style.right = \"auto\";\n popoverRenderedSide = \"left\";\n } else if (isRightOptimal) {\n const rightToSet = Math.min(\n rightValue,\n window.innerWidth -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) -\n popoverArrowDimensions.width\n );\n const topToSet = calculateTopForLeftRight(requiredAlignment, {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n });\n popover.wrapper.style.right = `${rightToSet}px`;\n popover.wrapper.style.top = `${topToSet}px`;\n popover.wrapper.style.bottom = `auto`;\n popover.wrapper.style.left = \"auto\";\n popoverRenderedSide = \"right\";\n } else if (isTopOptimal) {\n const topToSet = Math.min(\n topValue,\n window.innerHeight -\n popoverDimensions.realHeight -\n popoverArrowDimensions.width\n );\n let leftToSet = calculateLeftForTopBottom(requiredAlignment, {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n });\n popover.wrapper.style.top = `${topToSet}px`;\n popover.wrapper.style.left = `${leftToSet}px`;\n popover.wrapper.style.bottom = `auto`;\n popover.wrapper.style.right = \"auto\";\n popoverRenderedSide = \"top\";\n } else if (isBottomOptimal) {\n const bottomToSet = Math.min(\n bottomValue,\n window.innerHeight -\n (popoverDimensions == null ? void 0 : popoverDimensions.realHeight) -\n popoverArrowDimensions.width\n );\n let leftToSet = calculateLeftForTopBottom(requiredAlignment, {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n });\n popover.wrapper.style.left = `${leftToSet}px`;\n popover.wrapper.style.bottom = `${bottomToSet}px`;\n popover.wrapper.style.top = `auto`;\n popover.wrapper.style.right = \"auto\";\n popoverRenderedSide = \"bottom\";\n }\n if (!noneOptimal) {\n renderPopoverArrow(requiredAlignment, popoverRenderedSide, element);\n } else {\n popover.arrow.classList.add(\"gleap-tour-popover-arrow-none\");\n }\n }\n function renderPopoverArrow(alignment, side, element) {\n const popover = getState(\"popover\");\n if (!popover) {\n return;\n }\n const elementDimensions = element.getBoundingClientRect();\n const popoverDimensions = getPopoverDimensions();\n const popoverArrow = popover.arrow;\n const popoverWidth = popoverDimensions.width;\n const windowWidth = window.innerWidth;\n const elementWidth = elementDimensions.width;\n const elementLeft = elementDimensions.left;\n const popoverHeight = popoverDimensions.height;\n const windowHeight = window.innerHeight;\n const elementTop = elementDimensions.top;\n const elementHeight = elementDimensions.height;\n popoverArrow.className = \"gleap-tour-popover-arrow\";\n let arrowSide = side;\n let arrowAlignment = alignment;\n if (side === \"top\") {\n if (elementLeft + elementWidth <= 0) {\n arrowSide = \"right\";\n arrowAlignment = \"end\";\n } else if (elementLeft + elementWidth - popoverWidth <= 0) {\n arrowSide = \"top\";\n arrowAlignment = \"start\";\n }\n if (elementLeft >= windowWidth) {\n arrowSide = \"left\";\n arrowAlignment = \"end\";\n } else if (elementLeft + popoverWidth >= windowWidth) {\n arrowSide = \"top\";\n arrowAlignment = \"end\";\n }\n } else if (side === \"bottom\") {\n if (elementLeft + elementWidth <= 0) {\n arrowSide = \"right\";\n arrowAlignment = \"start\";\n } else if (elementLeft + elementWidth - popoverWidth <= 0) {\n arrowSide = \"bottom\";\n arrowAlignment = \"start\";\n }\n if (elementLeft >= windowWidth) {\n arrowSide = \"left\";\n arrowAlignment = \"start\";\n } else if (elementLeft + popoverWidth >= windowWidth) {\n arrowSide = \"bottom\";\n arrowAlignment = \"end\";\n }\n } else if (side === \"left\") {\n if (elementTop + elementHeight <= 0) {\n arrowSide = \"bottom\";\n arrowAlignment = \"end\";\n } else if (elementTop + elementHeight - popoverHeight <= 0) {\n arrowSide = \"left\";\n arrowAlignment = \"start\";\n }\n if (elementTop >= windowHeight) {\n arrowSide = \"top\";\n arrowAlignment = \"end\";\n } else if (elementTop + popoverHeight >= windowHeight) {\n arrowSide = \"left\";\n arrowAlignment = \"end\";\n }\n } else if (side === \"right\") {\n if (elementTop + elementHeight <= 0) {\n arrowSide = \"bottom\";\n arrowAlignment = \"start\";\n } else if (elementTop + elementHeight - popoverHeight <= 0) {\n arrowSide = \"right\";\n arrowAlignment = \"start\";\n }\n if (elementTop >= windowHeight) {\n arrowSide = \"top\";\n arrowAlignment = \"start\";\n } else if (elementTop + popoverHeight >= windowHeight) {\n arrowSide = \"right\";\n arrowAlignment = \"end\";\n }\n } else;\n if (!arrowSide) {\n popoverArrow.classList.add(\"gleap-tour-popover-arrow-none\");\n } else {\n popoverArrow.classList.add(`gleap-tour-popover-arrow-side-${arrowSide}`);\n popoverArrow.classList.add(\n `gleap-tour-popover-arrow-align-${arrowAlignment}`\n );\n }\n }\n function createPopover() {\n const wrapper = document.createElement(\"div\");\n wrapper.classList.add(\"gleap-tour-popover\");\n const arrow = document.createElement(\"div\");\n arrow.classList.add(\"gleap-tour-popover-arrow\");\n const title = document.createElement(\"div\");\n title.id = \"gleap-tour-popover-title\";\n title.classList.add(\"gleap-tour-popover-title\");\n title.style.display = \"none\";\n title.innerText = \"Popover Title\";\n const description = document.createElement(\"div\");\n description.id = \"gleap-tour-popover-description\";\n description.classList.add(\"gleap-tour-popover-description\");\n description.style.display = \"none\";\n description.innerText = \"Popover description is here\";\n const closeButton = document.createElement(\"button\");\n closeButton.type = \"button\";\n closeButton.classList.add(\"gleap-tour-popover-close-btn\");\n closeButton.setAttribute(\"aria-label\", \"Close\");\n closeButton.innerHTML = \"×\";\n const footer = document.createElement(\"div\");\n footer.classList.add(\"gleap-tour-popover-footer\");\n const progress = document.createElement(\"span\");\n progress.classList.add(\"gleap-tour-popover-progress-text\");\n progress.innerText = \"\";\n const footerButtons = document.createElement(\"span\");\n footerButtons.classList.add(\"gleap-tour-popover-navigation-btns\");\n const previousButton = document.createElement(\"button\");\n previousButton.type = \"button\";\n previousButton.classList.add(\"gleap-tour-popover-prev-btn\");\n previousButton.innerHTML = \"← Previous\";\n const nextButton = document.createElement(\"button\");\n nextButton.type = \"button\";\n nextButton.classList.add(\"gleap-tour-popover-next-btn\");\n nextButton.innerHTML = \"Next →\";\n footerButtons.appendChild(previousButton);\n footerButtons.appendChild(nextButton);\n footer.appendChild(progress);\n footer.appendChild(footerButtons);\n wrapper.appendChild(closeButton);\n wrapper.appendChild(arrow);\n wrapper.appendChild(title);\n wrapper.appendChild(description);\n wrapper.appendChild(footer);\n return {\n wrapper,\n arrow,\n title,\n description,\n footer,\n previousButton,\n nextButton,\n closeButton,\n footerButtons,\n progress,\n };\n }\n function destroyPopover() {\n var _a;\n const popover = getState(\"popover\");\n if (!popover) {\n return;\n }\n (_a = popover.wrapper.parentElement) == null\n ? void 0\n : _a.removeChild(popover.wrapper);\n }\n function driver(options = {}) {\n configure(options);\n function handleClose() {\n if (!getConfig(\"allowClose\")) {\n return;\n }\n destroy();\n }\n function moveNext() {\n const activeIndex = getState(\"activeIndex\");\n const steps = getConfig(\"steps\") || [];\n if (typeof activeIndex === \"undefined\") {\n return;\n }\n const nextStepIndex = activeIndex + 1;\n if (steps[nextStepIndex]) {\n drive(nextStepIndex);\n } else {\n destroy();\n }\n }\n function movePrevious() {\n const activeIndex = getState(\"activeIndex\");\n const steps = getConfig(\"steps\") || [];\n if (typeof activeIndex === \"undefined\") {\n return;\n }\n const previousStepIndex = activeIndex - 1;\n if (steps[previousStepIndex]) {\n drive(previousStepIndex);\n } else {\n destroy();\n }\n }\n function moveTo(index) {\n const steps = getConfig(\"steps\") || [];\n if (steps[index]) {\n drive(index);\n } else {\n destroy();\n }\n }\n function handleArrowLeft() {\n var _a;\n const isTransitioning = getState(\"__transitionCallback\");\n if (isTransitioning) {\n return;\n }\n const activeIndex = getState(\"activeIndex\");\n const activeStep = getState(\"__activeStep\");\n const activeElement = getState(\"__activeElement\");\n\n if (activeStep.mode === \"CLICK\") {\n return;\n }\n if (\n typeof activeIndex === \"undefined\" ||\n typeof activeStep === \"undefined\"\n ) {\n return;\n }\n const currentStepIndex = getState(\"activeIndex\");\n if (typeof currentStepIndex === \"undefined\") {\n return;\n }\n const onPrevClick =\n ((_a = activeStep.popover) == null ? void 0 : _a.onPrevClick) ||\n getConfig(\"onPrevClick\");\n if (onPrevClick) {\n return onPrevClick(activeElement, activeStep, {\n config: getConfig(),\n state: getState(),\n });\n }\n movePrevious();\n }\n function handleArrowRight() {\n var _a;\n const isTransitioning = getState(\"__transitionCallback\");\n if (isTransitioning) {\n return;\n }\n const activeIndex = getState(\"activeIndex\");\n const activeStep = getState(\"__activeStep\");\n const activeElement = getState(\"__activeElement\");\n\n if (activeStep.mode === \"CLICK\") {\n return;\n }\n if (\n typeof activeIndex === \"undefined\" ||\n typeof activeStep === \"undefined\"\n ) {\n return;\n }\n const onNextClick =\n ((_a = activeStep.popover) == null ? void 0 : _a.onNextClick) ||\n getConfig(\"onNextClick\");\n if (onNextClick) {\n return onNextClick(activeElement, activeStep, {\n config: getConfig(),\n state: getState(),\n });\n }\n moveNext();\n }\n function init() {\n if (getState(\"isInitialized\")) {\n return;\n }\n setState(\"isInitialized\", true);\n document.body.classList.add(\n \"gleap-tour-active\",\n getConfig(\"animate\") ? \"gleap-tour-fade\" : \"gleap-tour-simple\"\n );\n initEvents();\n listen(\"overlayClick\", handleClose);\n listen(\"escapePress\", handleClose);\n listen(\"arrowLeftPress\", handleArrowLeft);\n listen(\"arrowRightPress\", handleArrowRight);\n }\n function drive(stepIndex = 0) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n const steps = getConfig(\"steps\");\n if (!steps) {\n console.error(\"No steps to drive through\");\n destroy();\n return;\n }\n if (!steps[stepIndex]) {\n destroy();\n return;\n }\n setState(\"__activeOnDestroyed\", document.activeElement);\n setState(\"activeIndex\", stepIndex);\n const currentStep = steps[stepIndex];\n const hasNextStep = steps[stepIndex + 1];\n const hasPreviousStep = steps[stepIndex - 1];\n const doneBtnText =\n ((_a = currentStep.popover) == null ? void 0 : _a.doneBtnText) ||\n getConfig(\"doneBtnText\") ||\n \"Done\";\n const allowsClosing = getConfig(\"allowClose\");\n const showProgress =\n typeof ((_b = currentStep.popover) == null\n ? void 0\n : _b.showProgress) !== \"undefined\"\n ? (_c = currentStep.popover) == null\n ? void 0\n : _c.showProgress\n : getConfig(\"showProgress\");\n const progressText =\n ((_d = currentStep.popover) == null ? void 0 : _d.progressText) ||\n getConfig(\"progressText\") ||\n \"{{current}} of {{total}}\";\n const progressTextReplaced = progressText\n .replace(\"{{current}}\", `${stepIndex + 1}`)\n .replace(\"{{total}}\", `${steps.length}`);\n const configuredButtons =\n ((_e = currentStep.popover) == null ? void 0 : _e.showButtons) ||\n getConfig(\"showButtons\");\n const calculatedButtons = [\n \"next\",\n \"previous\",\n ...(allowsClosing ? [\"close\"] : []),\n ].filter((b) => {\n return (\n !(configuredButtons == null ? void 0 : configuredButtons.length) ||\n configuredButtons.includes(b)\n );\n });\n const onNextClick =\n ((_f = currentStep.popover) == null ? void 0 : _f.onNextClick) ||\n getConfig(\"onNextClick\");\n const onPrevClick =\n ((_g = currentStep.popover) == null ? void 0 : _g.onPrevClick) ||\n getConfig(\"onPrevClick\");\n const onCloseClick =\n ((_h = currentStep.popover) == null ? void 0 : _h.onCloseClick) ||\n getConfig(\"onCloseClick\");\n highlight({\n ...currentStep,\n popover: {\n showButtons: calculatedButtons,\n nextBtnText: !hasNextStep ? doneBtnText : void 0,\n disableButtons: [...(!hasPreviousStep ? [\"previous\"] : [])],\n showProgress,\n progressText: progressTextReplaced,\n onNextClick: onNextClick\n ? onNextClick\n : () => {\n if (!hasNextStep) {\n destroy();\n } else {\n drive(stepIndex + 1);\n }\n },\n onPrevClick: onPrevClick\n ? onPrevClick\n : () => {\n drive(stepIndex - 1);\n },\n onCloseClick: onCloseClick\n ? onCloseClick\n : () => {\n destroy();\n },\n ...((currentStep == null ? void 0 : currentStep.popover) || {}),\n },\n });\n }\n function destroy(withOnDestroyStartedHook = true) {\n const activeElement = getState(\"__activeElement\");\n const activeStep = getState(\"__activeStep\");\n const activeOnDestroyed = getState(\"__activeOnDestroyed\");\n const onDestroyStarted = getConfig(\"onDestroyStarted\");\n if (withOnDestroyStartedHook && onDestroyStarted) {\n const isActiveDummyElement =\n !activeElement ||\n (activeElement == null ? void 0 : activeElement.id) ===\n \"gleap-tour-dummy-element\";\n onDestroyStarted(\n isActiveDummyElement ? void 0 : activeElement,\n activeStep,\n {\n config: getConfig(),\n state: getState(),\n }\n );\n return;\n }\n const onDeselected =\n (activeStep == null ? void 0 : activeStep.onDeselected) ||\n getConfig(\"onDeselected\");\n const onDestroyed = getConfig(\"onDestroyed\");\n document.body.classList.remove(\n \"gleap-tour-active\",\n \"gleap-tour-fade\",\n \"gleap-tour-simple\"\n );\n destroyEvents();\n destroyPopover();\n destroyHighlight();\n destroyOverlay();\n destroyEmitter();\n resetState();\n if (activeElement && activeStep) {\n const isActiveDummyElement =\n activeElement.id === \"gleap-tour-dummy-element\";\n if (onDeselected) {\n onDeselected(\n isActiveDummyElement ? void 0 : activeElement,\n activeStep,\n {\n config: getConfig(),\n state: getState(),\n }\n );\n }\n if (onDestroyed) {\n onDestroyed(\n isActiveDummyElement ? void 0 : activeElement,\n activeStep,\n {\n config: getConfig(),\n state: getState(),\n }\n );\n }\n }\n if (activeOnDestroyed) {\n activeOnDestroyed.focus();\n }\n }\n return {\n isActive: () => getState(\"isInitialized\") || false,\n refresh: requireRefresh,\n drive: (stepIndex = 0) => {\n init();\n drive(stepIndex);\n },\n setConfig: configure,\n setSteps: (steps) => {\n resetState();\n configure({\n ...getConfig(),\n steps,\n });\n },\n getConfig,\n getState,\n getActiveIndex: () => getState(\"activeIndex\"),\n isFirstStep: () => getState(\"activeIndex\") === 0,\n isLastStep: () => {\n const steps = getConfig(\"steps\") || [];\n const activeIndex = getState(\"activeIndex\");\n return activeIndex !== void 0 && activeIndex === steps.length - 1;\n },\n getActiveStep: () => getState(\"activeStep\"),\n getActiveElement: () => getState(\"activeElement\"),\n getPreviousElement: () => getState(\"previousElement\"),\n getPreviousStep: () => getState(\"previousStep\"),\n moveNext,\n movePrevious,\n moveTo,\n hasNextStep: () => {\n const steps = getConfig(\"steps\") || [];\n const activeIndex = getState(\"activeIndex\");\n return activeIndex !== void 0 && steps[activeIndex + 1];\n },\n hasPreviousStep: () => {\n const steps = getConfig(\"steps\") || [];\n const activeIndex = getState(\"activeIndex\");\n return activeIndex !== void 0 && steps[activeIndex - 1];\n },\n highlight: (step) => {\n init();\n highlight({\n ...step,\n popover: step.popover\n ? {\n showButtons: [],\n showProgress: false,\n progressText: \"\",\n ...step.popover,\n }\n : void 0,\n });\n },\n destroy: () => {\n destroy(false);\n },\n };\n }\n return driver;\n})({});\n\nexport default GleapTours;\n","import { GleapConfigManager, GleapTranslationManager } from \"./Gleap\";\nimport { calculateContrast, loadIcon } from \"./UI\";\n\nconst localStorageKey = \"gleap-tour-data\";\nconst pointerContainerId = \"copilot-pointer-container\";\nconst styleId = \"copilot-tour-styles\";\nconst copilotJoinedContainerId = \"copilot-joined-container\";\n\nfunction estimateReadTime(text) {\n if (typeof window === \"undefined\") return;\n\n const wordsPerSecond = 3.6; // Average reading speed\n const wordCount = text.split(/\\s+/).filter((word) => word.length > 0).length;\n const readTimeInSeconds = Math.ceil(wordCount / wordsPerSecond);\n return readTimeInSeconds + 1;\n}\n\nfunction htmlToPlainText(html) {\n if (typeof window === \"undefined\") return;\n\n const tempDiv = document.createElement(\"div\");\n tempDiv.innerHTML = html;\n return tempDiv.textContent || \"\";\n}\n\nfunction scrollToElement(element) {\n if (typeof window === \"undefined\") return;\n\n if (element) {\n element.scrollIntoView({\n behavior: \"smooth\",\n block: \"center\",\n inline: \"center\",\n });\n }\n}\n\nfunction performClickAnimation(posX, posY) {\n if (typeof window === \"undefined\") return;\n\n const wave = document.createElement(\"div\");\n wave.className = \"click-wave\";\n wave.style.left = `${posX - 17}px`;\n wave.style.top = `${posY - 17}px`;\n document.body.appendChild(wave);\n setTimeout(() => {\n wave.remove();\n }, 800);\n}\n\nfunction waitForElement(selector, timeout = 5000) {\n if (typeof window === \"undefined\") return;\n\n const pollInterval = 100;\n const maxAttempts = timeout / pollInterval;\n let attempts = 0;\n return new Promise((resolve, reject) => {\n const interval = setInterval(() => {\n const element = document.querySelector(selector);\n if (element) {\n clearInterval(interval);\n resolve(element);\n } else if (attempts >= maxAttempts) {\n clearInterval(interval);\n reject(new Error(`Element not found for selector: ${selector}`));\n }\n attempts++;\n }, pollInterval);\n });\n}\n\nfunction smoothScrollToY(yPosition) {\n if (typeof window === \"undefined\") return;\n\n const viewportHeight = window.innerHeight;\n const targetScrollPosition = yPosition - viewportHeight / 2;\n window.scrollTo({\n top: targetScrollPosition,\n behavior: \"smooth\",\n });\n}\n\nasync function canPlayAudio() {\n if (typeof window === \"undefined\") return;\n\n const audio = new Audio(\n \"data:audio/wav;base64,UklGRigAAABXQVZFZm10IBAAAAABAAEARKwAABCxAgAEABAAZGF0YQAAAAA=\"\n );\n try {\n await audio.play();\n return true;\n } catch (err) {\n return false;\n }\n}\n\n// Helper: Check if an element is fully visible in the viewport.\nfunction isElementFullyVisible(el) {\n if (typeof window === \"undefined\") return;\n\n const rect = el.getBoundingClientRect();\n return (\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <= window.innerHeight &&\n rect.right <= window.innerWidth\n );\n}\n\n// Helper: Get scrollable ancestors of an element.\nfunction getScrollableAncestors(el) {\n if (typeof window === \"undefined\") return;\n\n let ancestors = [];\n let current = el.parentElement;\n while (current) {\n const style = window.getComputedStyle(current);\n if (\n (style.overflowY === \"auto\" || style.overflowY === \"scroll\") &&\n current.scrollHeight > current.clientHeight\n ) {\n ancestors.push(current);\n }\n current = current.parentElement;\n }\n return ancestors;\n}\n\nexport default class GleapCopilotTours {\n productTourData = undefined;\n productTourId = undefined;\n currentActiveIndex = undefined;\n lastArrowPositionX = undefined;\n lastArrowPositionY = undefined;\n onCompleteCallback = undefined;\n audioMuted = false;\n currentAudio = undefined;\n\n // Cached pointer container.\n _pointerContainer = null;\n // For scroll handling.\n _scrollListeners = [];\n _currentAnchor = null;\n _currentStep = null;\n _scrollDebounceTimer = null;\n\n // GleapReplayRecorder singleton.\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapCopilotTours();\n }\n return this.instance;\n }\n\n constructor() {\n const self = this;\n\n if (typeof window !== \"undefined\") {\n this._scrollListeners = [];\n this._currentAnchor = null;\n this._currentStep = null;\n this._scrollDebounceTimer = null;\n\n window.addEventListener(\"resize\", () => {\n if (\n self.productTourId &&\n self.currentActiveIndex >= 0 &&\n self.productTourData &&\n self.productTourData.steps\n ) {\n const steps = self.productTourData.steps;\n const currentStep = steps[self.currentActiveIndex];\n if (\n currentStep &&\n currentStep.selector &&\n currentStep.selector !== \"\"\n ) {\n self.updatePointerPosition(\n document.querySelector(currentStep.selector),\n currentStep\n );\n }\n }\n });\n }\n }\n\n disable() {\n this.disabled = true;\n \n this.cleanup();\n }\n\n startWithConfig(tourId, config, onCompleteCallback = undefined) {\n if (typeof window === \"undefined\") return;\n if (this.productTourId) return;\n if (this.disabled) return;\n\n this.productTourId = tourId;\n this.productTourData = config;\n this.currentActiveIndex = 0;\n this.onCompleteCallback = onCompleteCallback;\n this.start();\n }\n\n storeUncompletedTour() {\n if (typeof window === \"undefined\") return;\n if (this.productTourId && this.productTourData) {\n try {\n let data = JSON.parse(\n JSON.stringify({\n tourData: this.productTourData,\n tourId: this.productTourId,\n })\n );\n data.tourData.steps = data.tourData.steps.slice(\n this.currentActiveIndex || 0,\n data.tourData.steps.length\n );\n localStorage.setItem(localStorageKey, JSON.stringify(data));\n } catch (e) {\n // Optionally log error in development mode.\n }\n } else {\n localStorage.removeItem(localStorageKey);\n }\n }\n\n // Attach scroll listeners with a debounce to update the pointer position after scrolling stops.\n attachScrollListeners(anchor, currentStep) {\n if (typeof window === \"undefined\") return;\n if (!anchor) return;\n const scrollableAncestors = getScrollableAncestors(anchor);\n // Also include window.\n scrollableAncestors.push(window);\n scrollableAncestors.forEach((el) => {\n const handler = () => {\n clearTimeout(this._scrollDebounceTimer);\n this._scrollDebounceTimer = setTimeout(() => {\n this.updatePointerPosition(anchor, currentStep);\n }, 150);\n };\n el.addEventListener(\"scroll\", handler, { passive: true });\n this._scrollListeners.push({ el, handler });\n });\n }\n\n // Remove scroll listeners and clear debounce timer.\n removeScrollListeners() {\n if (typeof window === \"undefined\") return;\n if (this._scrollListeners && this._scrollListeners.length > 0) {\n this._scrollListeners.forEach(({ el, handler }) => {\n el.removeEventListener(\"scroll\", handler);\n });\n this._scrollListeners = [];\n }\n if (this._scrollDebounceTimer) {\n clearTimeout(this._scrollDebounceTimer);\n this._scrollDebounceTimer = null;\n }\n }\n\n // Updated pointer position:\n // 1. Scroll the element into view.\n // 2. After the element is fully visible (or after a maximum delay), update the pointer position to point towards the element.\n updatePointerPosition(anchor, currentStep) {\n if (typeof window === \"undefined\") return;\n try {\n const container =\n this._pointerContainer || document.getElementById(pointerContainerId);\n if (!container) return;\n\n if (!anchor) {\n container.style.position = \"fixed\";\n container.style.left = \"50%\";\n container.style.top = \"50%\";\n container.style.transform = \"translate(-50%, -50%)\";\n smoothScrollToY(window.innerHeight / 2);\n this.removeScrollListeners();\n this._currentAnchor = null;\n this._currentStep = null;\n return;\n }\n\n // Step 1: Scroll the element into view.\n scrollToElement(anchor);\n\n // Step 2: Poll until the element is fully visible (or after maximum polls).\n const pollInterval = 100;\n const maxPolls = 20;\n let pollCount = 0;\n const updateFinalPosition = () => {\n if (isElementFullyVisible(anchor) || pollCount >= maxPolls) {\n // Compute final target coordinates.\n const anchorRect = anchor.getBoundingClientRect();\n const targetX = anchorRect.left + anchorRect.width / 2;\n const targetY = anchorRect.top + anchorRect.height / 2 + 10; // 10px downward offset.\n container.style.position = \"fixed\";\n container.style.left = `${targetX}px`;\n container.style.top = `${targetY}px`;\n container.style.transform = \"translate(-50%, -50%)\";\n\n // Adjust container if too far right.\n let containerWidthSpace = 350;\n if (containerWidthSpace > window.innerWidth - 40) {\n containerWidthSpace = window.innerWidth - 40;\n }\n if (targetX + containerWidthSpace > window.innerWidth - 20) {\n container.classList.add(\"copilot-pointer-container-right\");\n } else {\n container.classList.remove(\"copilot-pointer-container-right\");\n }\n\n // Reattach scroll listeners if the target or step has changed.\n if (\n this._currentAnchor !== anchor ||\n this._currentStep !== currentStep\n ) {\n this.removeScrollListeners();\n this._currentAnchor = anchor;\n this._currentStep = currentStep;\n this.attachScrollListeners(anchor, currentStep);\n }\n } else {\n pollCount++;\n setTimeout(updateFinalPosition, pollInterval);\n }\n };\n updateFinalPosition();\n } catch (e) {\n // Optionally log errors.\n }\n }\n\n cleanup() {\n if (typeof window === \"undefined\") return;\n document.body.classList.add(\"gl-copilot-fade-out\");\n if (this.currentAudio) {\n this.currentAudio.pause();\n }\n setTimeout(() => {\n if (this._pointerContainer) {\n this._pointerContainer.remove();\n this._pointerContainer = null;\n } else {\n const container = document.getElementById(pointerContainerId);\n if (container) container.remove();\n }\n const copilotInfoContainer = document.getElementById(\n copilotJoinedContainerId\n );\n if (copilotInfoContainer) copilotInfoContainer.remove();\n const styleNode = document.getElementById(styleId);\n if (styleNode) styleNode.remove();\n document.body.classList.remove(\"gl-copilot-fade-out\");\n }, 800);\n\n this.productTourId = undefined;\n this.productTourData = undefined;\n \n this.removeScrollListeners();\n }\n\n toggleAudio(muted = false) {\n this.audioMuted = muted;\n if (this.currentAudio) {\n this.currentAudio.muted = this.audioMuted;\n }\n document.querySelector(`.${copilotJoinedContainerId}-mute`).innerHTML =\n loadIcon(this.audioMuted ? \"unmute\" : \"mute\");\n }\n\n setupCopilotTour() {\n if (typeof window === \"undefined\") return;\n\n const primaryColor =\n GleapConfigManager.getInstance().flowConfig?.color ?? \"#485BFF\";\n const contrastColor = calculateContrast(primaryColor);\n\n let styleNode = document.getElementById(styleId);\n if (!styleNode) {\n styleNode = document.createElement(\"style\");\n styleNode.id = styleId;\n styleNode.type = \"text/css\";\n styleNode.textContent = `\n #${pointerContainerId} {\n position: absolute;\n top: 0;\n left: 0;\n display: flex;\n align-items: flex-start;\n pointer-events: none;\n z-index: 2147483610;\n transition: all 0.5s ease;\n }\n .${pointerContainerId}-clickmode {\n cursor: pointer;\n pointer-events: all !important;\n }\n .${pointerContainerId}-clickmode #copilot-info-bubble-content {\n display: flex !important;\n }\n .${pointerContainerId}-clickmode svg {\n display: none !important;\n }\n #${pointerContainerId} svg {\n width: 20px;\n height: auto;\n fill: none;\n }\n #copilot-info-bubble {\n position: relative;\n }\n #copilot-info-bubble-content-container {\n position: absolute;\n top: 0px;\n left: 0px;\n min-width: min(300px, 80vw);\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n }\n .${pointerContainerId}-right #copilot-info-bubble-content-container {\n left: auto !important;\n right: 0px !important;\n align-items: flex-end;\n }\n .${pointerContainerId}-right .copilot-info-bubble-content {\n margin-right: 5px;\n }\n .${pointerContainerId}-right svg {\n transform: scaleX(-1);\n }\n #copilot-info-bubble-content svg {\n width: 16px;\n height: 16px;\n display: inline-block !important;\n margin-left: 5px;\n }\n #copilot-info-bubble-content {\n margin-top: 18px;\n margin-left: 5px;\n padding: 10px 15px;\n border-radius: 20px;\n background-color: black;\n color: white;\n font-family: Arial, sans-serif;\n font-size: 14px;\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);\n max-width: 100%;\n white-space: normal;\n overflow-wrap: break-word;\n word-break: normal;\n hyphens: none;\n }\n .${pointerContainerId}-right #copilot-info-bubble-content {\n margin-top: 30px;\n margin-left: 0px;\n margin-right: 5px;\n }\n .click-wave {\n position: absolute;\n width: 34px;\n height: 34px;\n border-radius: 50%;\n background-color: rgba(0, 0, 0, 0.5);\n pointer-events: none;\n z-index: 2147483611;\n animation: click-wave-animation 0.8s ease forwards;\n }\n @keyframes click-wave-animation {\n 0% {\n transform: scale(0.2);\n opacity: 1;\n }\n 100% {\n transform: scale(2);\n opacity: 0;\n }\n }\n @keyframes slideInFromTop {\n 0% {\n transform: translateY(-100%);\n opacity: 0;\n }\n 100% {\n transform: translateY(0);\n opacity: 1;\n }\n }\n .${copilotJoinedContainerId} {\n position: fixed;\n top: 20px;\n right: 20px;\n z-index: 2147483610;\n background: #fff;\n padding: 6px;\n border-radius: 10px;\n box-shadow: 0 0 20px 0 #C294F2;\n display: flex;\n align-items: center;\n gap: 8px;\n border: 1px solid rgba(192, 146, 242, 0.5);\n animation: slideInFromTop 0.5s ease-out forwards;\n }\n .${copilotJoinedContainerId} span {\n font-size: 13px;\n color: #000;\n font-family: sans-serif;\n }\n .${copilotJoinedContainerId}-avatar {\n width: 24px;\n height: 24px;\n flex-shrink: 0;\n border-radius: 6px;\n }\n .${copilotJoinedContainerId}-mute {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n .${copilotJoinedContainerId}-mute svg {\n width: 20px;\n height: auto;\n cursor: pointer;\n animation: pulsate 2s infinite;\n }\n .${copilotJoinedContainerId}-mute svg:hover {\n opacity: 0.8;\n }\n .${copilotJoinedContainerId}-dismiss {\n display: flex;\n align-items: center;\n justify-content: center;\n padding-right: 3px;\n }\n .${copilotJoinedContainerId}-dismiss svg {\n width: 15px;\n height: auto;\n cursor: pointer;\n }\n .${copilotJoinedContainerId}-dismiss svg:hover {\n opacity: 0.8;\n }\n @keyframes pulsate {\n 0% {\n transform: scale(1);\n opacity: 1;\n }\n 50% {\n transform: scale(1.1);\n opacity: 0.8;\n }\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n }\n @keyframes glCoFadeIn {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n @keyframes glCoFadeOut {\n 0% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n }\n\n .gleap-audio-unmute-modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n background-color: rgba(0, 0, 0, 0.5);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 2147483620;\n }\n\n .gleap-audio-unmute-modal {\n background-color: #fff;\n padding: 20px;\n border-radius: 8px;\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);\n text-align: center;\n max-width: 90%;\n width: 400px;\n }\n\n .gleap-audio-unmute-modal p {\n margin-bottom: 20px;\n font-size: 16px;\n line-height: 22px;\n font-weight: normal;\n }\n\n .gleap-audio-unmute-button {\n background: ${primaryColor};\n color: ${contrastColor};\n outline: none;\n border: none;\n padding: 10px 14px;\n border-radius: 12px;\n font-size: 14px;\n font-weight: bold;\n cursor: pointer;\n }\n\n .gleap-audio-unmute-button:hover {\n opacity: 0.8;\n }\n\n .gleap-tour-continue-button {\n color: ${primaryColor};\n text-decoration: none;\n cursor: pointer;\n font-size: 14px;\n font-weight: bold;\n border: none;\n background: none;\n padding: 0;\n margin: 0;\n margin-left: 20px;\n }\n\n .gleap-tour-continue-button:hover {\n opacity: 0.8;\n }\n\n body.gl-copilot-fade-out::before,\n body.gl-copilot-fade-out::after,\n body.gl-copilot-fade-out #${copilotJoinedContainerId} {\n animation: glCoFadeOut 0.8s ease-out forwards;\n }\n ${\n this.productTourData?.playVoice ?? true\n ? \"\"\n : `\n .${copilotJoinedContainerId}-mute {\n display: none;\n }\n `\n }\n ${\n this.productTourData.gradient\n ? `body::before {\n content: \"\";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n box-sizing: border-box;\n border: 18px solid transparent;\n filter: blur(25px);\n border-image-slice: 1;\n border-image-source: linear-gradient(45deg, #ED5587, #FBE6A9, #a6e3f8, #C294F2);\n animation: glCoFadeIn 1.5s ease-out forwards;\n }\n \n body::after {\n content: \"\";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n opacity: 0.5;\n box-sizing: border-box;\n border: 3px solid transparent;\n border-image-slice: 1;\n border-image-source: linear-gradient(45deg, #ED5587, #FBE6A9, #a6e3f8, #C294F2);\n animation: glCoFadeIn 1.5s ease-out forwards;\n }`\n : `body::after {\n content: \"\";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n opacity: 0;\n }`\n }\n `;\n document.head.appendChild(styleNode);\n }\n\n const container = document.createElement(\"div\");\n container.id = pointerContainerId;\n container.style.opacity = 0;\n // Cache the pointer container.\n this._pointerContainer = container;\n\n const svgMouse = document.createElementNS(\n \"http://www.w3.org/2000/svg\",\n \"svg\"\n );\n svgMouse.setAttribute(\"viewBox\", \"0 0 380 476\");\n svgMouse.innerHTML =\n '';\n\n const infoBubble = document.createElement(\"div\");\n infoBubble.id = \"copilot-info-bubble\";\n infoBubble.innerHTML = `
`;\n\n const copilotInfoContainer = document.createElement(\"div\");\n copilotInfoContainer.id = copilotJoinedContainerId;\n copilotInfoContainer.classList.add(copilotJoinedContainerId);\n copilotInfoContainer.innerHTML = `\n \n ${this.productTourData?.kaiSlug}\n
\n ${loadIcon(this.audioMuted ? \"unmute\" : \"mute\")}\n
\n ${\n this.productTourData?.allowClose\n ? `
\n ${loadIcon(\"dismiss\")}\n
`\n : \"\"\n }\n `;\n document.body.appendChild(copilotInfoContainer);\n\n const self = this;\n\n document\n .querySelector(`.${copilotJoinedContainerId}-mute`)\n .addEventListener(\"click\", () => {\n this.toggleAudio(!this.audioMuted);\n });\n\n if (this.productTourData?.allowClose) {\n document\n .querySelector(`.${copilotJoinedContainerId}-dismiss`)\n .addEventListener(\"click\", () => {\n this.completeTour(false);\n });\n }\n\n container.appendChild(svgMouse);\n container.appendChild(infoBubble);\n document.body.appendChild(container);\n }\n\n start() {\n if (typeof window === \"undefined\") return;\n if (this.disabled) return;\n\n const config = this.productTourData;\n if (!config) return;\n canPlayAudio().then((supported) => {\n this.audioMuted = !supported;\n this.setupCopilotTour();\n\n if (this.audioMuted && config?.showUnmuteModal) {\n this.showAudioUnmuteModal();\n } else {\n setTimeout(() => {\n this.renderNextStep();\n }, 1500);\n }\n });\n }\n\n showAudioUnmuteModal() {\n // Create the overlay element\n const modalOverlay = document.createElement(\"div\");\n modalOverlay.classList.add(\"gleap-audio-unmute-modal-overlay\");\n\n // Create the modal container element\n const modal = document.createElement(\"div\");\n modal.classList.add(\"gleap-audio-unmute-modal\");\n\n // Create and add the modal message\n const message = document.createElement(\"p\");\n message.textContent = this.productTourData?.unmuteModalTitle;\n modal.appendChild(message);\n\n // Create the \"Unmute Audio\" button\n const unmuteButton = document.createElement(\"button\");\n unmuteButton.classList.add(\"gleap-audio-unmute-button\");\n unmuteButton.textContent = this.productTourData?.unmuteModalButton;\n unmuteButton.addEventListener(\"click\", () => {\n this.toggleAudio(false);\n if (modalOverlay.parentNode) {\n modalOverlay.parentNode.removeChild(modalOverlay);\n }\n setTimeout(() => {\n this.renderNextStep();\n }, 1000);\n });\n modal.appendChild(unmuteButton);\n\n // Create the \"Start Anyway\" button\n const startAnywayButton = document.createElement(\"button\");\n startAnywayButton.classList.add(\"gleap-tour-continue-button\");\n startAnywayButton.textContent = this.productTourData?.unmuteModalContinue;\n startAnywayButton.addEventListener(\"click\", () => {\n if (modalOverlay.parentNode) {\n modalOverlay.parentNode.removeChild(modalOverlay);\n }\n setTimeout(() => {\n this.renderNextStep();\n }, 1000);\n });\n modal.appendChild(startAnywayButton);\n\n // Build the modal and attach it to the DOM\n modalOverlay.appendChild(modal);\n document.body.appendChild(modalOverlay);\n }\n\n completeTour(success = true) {\n if (typeof window === \"undefined\") return;\n this.cleanup();\n if (this.onCompleteCallback) {\n this.onCompleteCallback(success);\n }\n }\n\n renderNextStep() {\n if (typeof window === \"undefined\") return;\n if (this.disabled) return;\n\n const self = this;\n const config = this.productTourData;\n const steps = config.steps;\n if (this.currentActiveIndex >= steps.length) {\n setTimeout(() => {\n this.completeTour();\n }, 500);\n return;\n }\n const currentStep = steps[this.currentActiveIndex];\n const handleStep = (element) => {\n this._pointerContainer.style.display = \"flex\";\n if (currentStep.selector && currentStep.selector.length > 0 && !element) {\n this.completeTour(false);\n return;\n }\n const gotToNextStep = () => {\n if (currentStep.mode === \"INPUT\" && element) {\n function proceedClickmode() {\n document\n .querySelector(`#${pointerContainerId}`)\n .classList.remove(\"copilot-pointer-container-clickmode\");\n element.classList.remove(\"gleap-input-highlight\");\n document.getElementById(pointerContainerId).style.display = \"none\";\n self.currentActiveIndex++;\n self.storeUncompletedTour();\n self.renderNextStep();\n }\n const inputModeType = currentStep.inputType ?? \"default\";\n if (inputModeType === \"default\") {\n function handleInputEvent(e) {\n if (e?.target?.value?.length === 0) return;\n const cursor = document.getElementById(\n `copilot-info-bubble-content`\n );\n if (!cursor) return;\n cursor.innerHTML = `${GleapTranslationManager.translateText(\n \"next\"\n )} \n \n`;\n cursor.addEventListener(\"click\", proceedClickmode, {\n once: true,\n });\n element.classList.add(\"gleap-input-highlight\");\n document\n .querySelector(`#${pointerContainerId}`)\n .classList.add(\"copilot-pointer-container-clickmode\");\n element.removeEventListener(\"input\", handleInputEvent);\n }\n element.addEventListener(\"input\", handleInputEvent, {\n once: false,\n });\n if (element.hasAttribute(\"contenteditable\")) {\n element.addEventListener(\"keyup\", handleInputEvent, {\n once: false,\n });\n }\n element.addEventListener(\n \"blur\",\n () => {\n element.focus();\n },\n { once: true }\n );\n element.focus();\n } else {\n const inputValue = currentStep.inputValue ?? \"\";\n let index = 0;\n function typeCharacter() {\n if (index < inputValue.length) {\n element.value += inputValue[index];\n index++;\n setTimeout(typeCharacter, 100);\n } else {\n setTimeout(() => {\n proceedClickmode();\n }, 1200);\n }\n }\n typeCharacter();\n }\n return;\n }\n self.currentActiveIndex++;\n self.storeUncompletedTour();\n if (currentStep.mode === \"CLICK\" && element) {\n const rect = element.getBoundingClientRect();\n const scrollX = window.scrollX || 0;\n const scrollY = window.scrollY || 0;\n performClickAnimation(\n rect.left + rect.width / 2 + scrollX,\n rect.top + rect.height / 2 + scrollY\n );\n element.click();\n }\n self.renderNextStep();\n };\n\n this.updatePointerPosition(element, currentStep);\n const message = currentStep?.message\n ? htmlToPlainText(currentStep.message)\n : \"🤔\";\n document.getElementById(`copilot-info-bubble-content`).textContent =\n message;\n this._pointerContainer.style.opacity = 1;\n const readTime = estimateReadTime(message);\n const continueWithNoAudio = () => {\n this.currentAudio = undefined;\n setTimeout(() => {\n gotToNextStep();\n }, readTime * 1000);\n };\n if (currentStep.voice && currentStep.voice.length > 0) {\n this.currentAudio = new Audio(currentStep.voice);\n if (this.audioMuted) {\n this.currentAudio.muted = true;\n }\n this.currentAudio.addEventListener(\"ended\", () => {\n setTimeout(() => {\n gotToNextStep();\n }, 1000);\n });\n this.currentAudio\n .play()\n .then(() => {})\n .catch((error) => {\n continueWithNoAudio();\n });\n } else {\n continueWithNoAudio();\n }\n };\n\n const elementPromise = currentStep.selector\n ? waitForElement(currentStep.selector)\n : Promise.resolve(null);\n elementPromise.then(handleStep).catch(() => handleStep(null));\n }\n}\n","import { loadIcon } from \"./UI\";\nimport GleapTours from \"./GleapTours\";\nimport Gleap, { GleapEventManager, GleapSession } from \"./Gleap\";\nimport GleapCopilotTours from \"./GleapCopilotTours\";\n\nconst localStorageKey = \"gleap-tour-data\";\n\nexport default class GleapProductTours {\n productTourData = undefined;\n productTourId = undefined;\n unmuted = false;\n currentActiveIndex = undefined;\n gleapTourObj = undefined;\n disabled = false;\n\n // GleapReplayRecorder singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapProductTours();\n return this.instance;\n } else {\n return this.instance;\n }\n }\n\n disable() {\n if (this.gleapTourObj) {\n this.gleapTourObj.destroy();\n }\n\n // Disable copilot tours.\n GleapCopilotTours.getInstance().disable();\n\n this.gleapTourObj = undefined;\n this.disabled = true;\n }\n\n constructor() {\n const self = this;\n\n if (typeof window !== \"undefined\") {\n const beforeUnloadListener = (event) => {\n if (\n !self?.disabled &&\n self?.productTourId &&\n self?.productTourData &&\n self?.productTourData?.tourType !== \"cobrowse\"\n ) {\n self.storeUncompletedTour();\n }\n };\n\n if (typeof window !== \"undefined\") {\n window.addEventListener(\"beforeunload\", beforeUnloadListener);\n }\n }\n }\n\n startWithConfig(tourId, config, delay = 0, manually = false) {\n // Prevent multiple tours from being started.\n if (this.productTourId || this.disabled) {\n return;\n }\n\n this.productTourId = tourId;\n this.productTourData = config;\n this.currentActiveIndex = 0;\n\n if (manually) {\n this.start();\n } else {\n const self = this;\n\n // Validate product tour.\n GleapSession.getInstance()\n .validateProductTour(tourId)\n .then(() => {\n if (delay > 0) {\n return setTimeout(() => {\n self.start();\n }, delay);\n } else {\n return this.start();\n }\n })\n .catch((error) => {\n console.log(\"Product tour is not live. Cleaning up...\");\n console.error(error);\n\n self.onComplete(false);\n });\n }\n }\n\n onComplete(success = true) {\n const comData = {\n tourId: this.productTourId,\n };\n\n if (success) {\n GleapEventManager.notifyEvent(\"productTourCompleted\", comData);\n Gleap.trackEvent(`tour-${this.productTourId}-completed`, comData);\n } else {\n GleapEventManager.notifyEvent(\"productTourQuit\", comData);\n Gleap.trackEvent(`tour-${this.productTourId}-quit`, comData);\n }\n\n // Clear data.\n if (this.gleapTourObj) {\n this.gleapTourObj.destroy();\n }\n\n this.gleapTourObj = undefined;\n this.productTourData = undefined;\n this.productTourId = undefined;\n this.currentActiveIndex = undefined;\n this.clearUncompletedTour();\n }\n\n loadUncompletedTour() {\n try {\n const data = JSON.parse(localStorage.getItem(localStorageKey));\n if (data?.tourData && data?.tourId) {\n return data;\n }\n } catch (e) {}\n\n return null;\n }\n\n storeUncompletedTour() {\n if (this.productTourId && this.productTourData) {\n try {\n let data = JSON.parse(\n JSON.stringify({\n tourData: this.productTourData,\n tourId: this.productTourId,\n })\n );\n\n data.tourData.steps = data.tourData.steps.slice(\n this.currentActiveIndex || 0,\n data.tourData.steps.length\n );\n\n localStorage.setItem(localStorageKey, JSON.stringify(data));\n } catch (e) {}\n } else {\n this.clearUncompletedTour();\n }\n }\n\n clearUncompletedTour() {\n try {\n localStorage.removeItem(localStorageKey);\n } catch (e) {}\n }\n\n start() {\n const config = this.productTourData;\n if (!config) {\n return;\n }\n\n if (config.tourType === \"cobrowse\") {\n return GleapCopilotTours.getInstance().startWithConfig(\n this.productTourId,\n config,\n (success) => {\n this.onComplete(success);\n }\n );\n }\n\n this.unmuted = false;\n const steps = config.steps;\n const self = this;\n\n var driverSteps = [];\n\n for (let i = 0; i < steps.length; i++) {\n const step = steps[i];\n\n const isClickMode = step.mode === \"CLICK\";\n const isInputMode = step.mode === \"INPUT\";\n\n var message = \"\";\n var hasSender = false;\n\n if (step.type === \"video-pointer\") {\n message = `
\n \n
${loadIcon(\n \"unmute\"\n )}
\n
`;\n } else {\n var senderHTML = ``;\n\n if (config.sender && config.sender.firstName) {\n hasSender = true;\n senderHTML = `
\n
\n
${config.sender.firstName}
\n
`;\n }\n\n message = `${senderHTML}
${step.message}
`;\n }\n\n const disableInteraction = !isClickMode && !isInputMode;\n\n var driverStep = {\n disableActiveInteraction: disableInteraction,\n mode: step.mode,\n popover: {\n description: message,\n popoverClass: `gleap-tour-popover-${step.type} ${\n !hasSender && \"gleap-tour-popover-no-sender\"\n } ${config.allowClose && \"gleap-tour-popover-can-close\"}`,\n ...(isClickMode\n ? {\n showButtons: [],\n }\n : {}),\n },\n };\n if (step.selector && step.selector.length > 0) {\n driverStep.element = step.selector;\n }\n driverSteps.push(driverStep);\n }\n\n var buttons = [\"next\", \"close\"];\n\n if (config.backButton) {\n buttons.push(\"previous\");\n }\n\n function onDocumentClick(evnt) {\n try {\n var gleapTourPopover = document.querySelector(\".gleap-tour-popover\");\n if (gleapTourPopover && !gleapTourPopover.contains(evnt.target)) {\n const stepIndex = self.gleapTourObj.getActiveIndex();\n const step = steps[stepIndex];\n const element = self.gleapTourObj.getActiveElement();\n\n if (step?.mode === \"CLICK\" && evnt?.target !== element) {\n const isInsideElement = element.contains(evnt?.target);\n if (!isInsideElement) {\n // Ignore clicks outside of the actual element.\n return;\n }\n }\n\n // Store next step index.\n self.currentActiveIndex = (self.currentActiveIndex || 0) + 1;\n self.storeUncompletedTour();\n\n if (\n (element && element.tagName === \"INPUT\") ||\n step.mode === \"INPUT\" ||\n evnt?.target?.id.includes(\"tooltip-svg\")\n ) {\n // Prevent.\n } else {\n self.gleapTourObj.moveNext();\n }\n }\n } catch (e) {}\n }\n\n this.gleapTourObj = GleapTours({\n showProgress: true,\n allowKeyboardControl: false,\n steps: driverSteps,\n showProgress: steps.length > 1,\n allowClose: config.allowClose,\n nextBtnText: config.nextText,\n doneBtnText: config.doneText,\n prevBtnText: config.prevText,\n showButtons: buttons,\n onHighlightStarted: (element, step, config) => {\n this.currentActiveIndex = config?.state?.activeIndex;\n this.storeUncompletedTour();\n },\n onElementNotFound: (step) => {\n document.removeEventListener(\"click\", onDocumentClick);\n\n this.onComplete(false);\n },\n onDestroyStarted: () => {\n if (!this.gleapTourObj.hasNextStep()) {\n // Mark as completed.\n this.onComplete(true);\n } else {\n // Mark as quit.\n this.onComplete(false);\n }\n\n document.removeEventListener(\"click\", onDocumentClick);\n },\n onPopoverRender: (popoverElement) => {\n // Fix for images and videos.\n if (popoverElement) {\n const mediaElements = document.querySelectorAll(\n \".gleap-tour-popover-description img, .gleap-tour-popover-description video\"\n );\n\n const performRequentialRefresh = () => {\n setTimeout(() => {\n this.gleapTourObj.refresh();\n }, 500);\n setTimeout(() => {\n this.gleapTourObj.refresh();\n }, 750);\n };\n\n for (let i = 0; i < mediaElements.length; i++) {\n const mediaElement = mediaElements[i];\n if (mediaElement.tagName === \"IMG\") {\n mediaElement.addEventListener(\"load\", () => {\n performRequentialRefresh();\n });\n mediaElement.addEventListener(\"error\", () => {\n performRequentialRefresh();\n });\n } else if (mediaElement.tagName === \"VIDEO\") {\n mediaElement.addEventListener(\"canplaythrough\", () => {\n performRequentialRefresh();\n });\n mediaElement.addEventListener(\"error\", () => {\n performRequentialRefresh();\n });\n }\n }\n }\n\n const playingClass = \"gleap-tour-video--playing\";\n const playPauseContainer = document.querySelector(\n \".gleap-tour-video-playpause\"\n );\n\n const videoElement = document.querySelector(\".gleap-tour-video-obj\");\n if (videoElement) {\n const videoContainer = videoElement.closest(\".gleap-tour-video\");\n\n if (self.unmuted) {\n if (videoElement) {\n videoElement.pause();\n videoElement.muted = false;\n videoElement.play();\n videoContainer.classList.add(playingClass);\n }\n }\n\n videoElement.addEventListener(\"ended\", function () {\n playPauseContainer.innerHTML = loadIcon(\"replay\");\n playPauseContainer.classList.add(\n \"gleap-tour-video-svg--fullscreen\"\n );\n videoContainer.classList.remove(playingClass);\n });\n\n videoElement.addEventListener(\"play\", function () {\n playPauseContainer.classList.remove(\n \"gleap-tour-video-svg--fullscreen\"\n );\n });\n\n if (playPauseContainer) {\n playPauseContainer.addEventListener(\"click\", () => clickVideo());\n }\n\n const clickVideo = () => {\n if (videoElement.muted) {\n self.unmuted = true;\n\n videoElement.pause();\n videoElement.currentTime = 0;\n videoElement.muted = false;\n videoElement.play();\n\n playPauseContainer.innerHTML = loadIcon(\"mute\");\n videoContainer.classList.add(playingClass);\n } else if (videoElement.paused) {\n videoElement.muted = false;\n videoElement.play();\n\n playPauseContainer.innerHTML = loadIcon(\"mute\");\n videoContainer.classList.add(playingClass);\n } else {\n videoElement.pause();\n playPauseContainer.innerHTML = loadIcon(\"unmute\");\n videoContainer.classList.remove(playingClass);\n }\n };\n }\n },\n });\n this.gleapTourObj.drive();\n\n document.addEventListener(\"click\", onDocumentClick, true);\n }\n}\n","import { injectStyledCSS } from \"./UI\";\nimport GleapNetworkIntercepter from \"./GleapNetworkIntercepter\";\nimport {\n fixGleapHeight,\n gleapDataParser,\n runFunctionWhenDomIsReady,\n} from \"./GleapHelper\";\nimport GleapSession from \"./GleapSession\";\nimport GleapStreamedEvent from \"./GleapStreamedEvent\";\nimport GleapConfigManager from \"./GleapConfigManager\";\nimport GleapFeedback from \"./GleapFeedback\";\nimport GleapFrameManager from \"./GleapFrameManager\";\nimport GleapMetaDataManager from \"./GleapMetaDataManager\";\nimport GleapConsoleLogManager from \"./GleapConsoleLogManager\";\nimport GleapClickListener from \"./GleapClickListener\";\nimport GleapFeedbackButtonManager from \"./GleapFeedbackButtonManager\";\nimport GleapCustomDataManager from \"./GleapCustomDataManager\";\nimport GleapEventManager from \"./GleapEventManager\";\nimport GleapCustomActionManager from \"./GleapCustomActionManager\";\nimport GleapReplayRecorder from \"./GleapReplayRecorder\";\nimport GleapMarkerManager from \"./GleapMarkerManager\";\nimport GleapTranslationManager from \"./GleapTranslationManager\";\nimport GleapShortcutListener from \"./GleapShortcutListener\";\nimport GleapPreFillManager from \"./GleapPreFillManager\";\nimport GleapNotificationManager from \"./GleapNotificationManager\";\nimport GleapBannerManager from \"./GleapBannerManager\";\nimport GleapModalManager from \"./GleapModalManager\";\nimport GleapAudioManager from \"./GleapAudioManager\";\nimport GleapTagManager from \"./GleapTagManager\";\nimport GleapAdminManager from \"./GleapAdminManager\";\nimport GleapProductTours from \"./GleapProductTours\";\nimport { checkPageFilter } from \"./GleapPageFilter\";\nimport { registerGleapChecklist } from \"./GleapChecklist\";\nimport ChecklistNetworkManager from \"./ChecklistNetworkManager\";\n\nif (\n typeof window !== \"undefined\" &&\n typeof HTMLCanvasElement !== \"undefined\" &&\n HTMLCanvasElement.prototype &&\n HTMLCanvasElement.prototype.__originalGetContext === undefined\n) {\n HTMLCanvasElement.prototype.__originalGetContext =\n HTMLCanvasElement.prototype.getContext;\n HTMLCanvasElement.prototype.getContext = function (type, options) {\n return this.__originalGetContext(type, {\n ...options,\n preserveDrawingBuffer: true,\n });\n };\n}\n\nif (\n typeof customElements !== \"undefined\" &&\n typeof HTMLElement !== \"undefined\" &&\n typeof window !== \"undefined\"\n) {\n registerGleapChecklist();\n}\n\nclass Gleap {\n static invoked = true;\n static silentCrashReportSent = false;\n initialized = false;\n offlineMode = false;\n disablePageTracking = false;\n disableInAppNotifications = false;\n\n // Global data\n globalData = {\n screenRecordingData: null,\n webReplay: null,\n snapshotPosition: {\n x: 0,\n y: 0,\n },\n };\n\n // Gleap singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new Gleap();\n return this.instance;\n } else {\n return this.instance;\n }\n }\n\n /**\n * Main constructor\n */\n constructor() {\n if (typeof window !== \"undefined\") {\n // Make sure all instances are ready.\n GleapMetaDataManager.getInstance();\n GleapConsoleLogManager.getInstance().start();\n GleapClickListener.getInstance().start();\n GleapAdminManager.getInstance().start();\n }\n }\n\n /**\n * Sets the development environment\n * @param {*} environment\n */\n static setEnvironment(environment) {\n GleapMetaDataManager.getInstance().environment = environment;\n }\n\n /**\n * Set tags to be submitted with each ticket.\n * @param {*} tags\n */\n static setTags(tags) {\n GleapTagManager.getInstance().setTags(tags);\n }\n\n /**\n * Sets a custom URL handler.\n * @param {*} urlHandler\n */\n static setUrlHandler(urlHandler) {\n GleapFrameManager.getInstance().setUrlHandler(urlHandler);\n }\n\n /**\n * Active the Gleap offline mode.\n * @param {*} offlineMode\n */\n static setOfflineMode(offlineMode) {\n const instance = this.getInstance();\n instance.offlineMode = offlineMode;\n }\n\n /**\n * Disable the in-app notifications.\n * @param {*} disableInAppNotifications\n */\n static setDisableInAppNotifications(disableInAppNotifications) {\n const instance = this.getInstance();\n instance.disableInAppNotifications = disableInAppNotifications;\n }\n\n /**\n * Disable the default page tracking.\n * @param {*} disablePageTracking\n */\n static setDisablePageTracking(disablePageTracking) {\n const instance = this.getInstance();\n instance.disablePageTracking = disablePageTracking;\n }\n\n /**\n * Revert console log overwrite.\n */\n static disableConsoleLogOverwrite() {\n GleapConsoleLogManager.getInstance().stop();\n }\n\n /**\n * Set the AI tools.\n * @param {*} tools\n */\n static setAiTools(tools) {\n GleapConfigManager.getInstance().setAiTools(tools);\n GleapFrameManager.getInstance().sendConfigUpdate();\n }\n\n /**\n * Attaches external network logs.\n */\n static attachNetworkLogs(networkLogs) {\n GleapNetworkIntercepter.getInstance().externalRequests =\n gleapDataParser(networkLogs);\n }\n\n /**\n * Add entry to logs.\n * @param {*} message\n * @param {*} logLevel\n * @returns\n */\n static log(message, logLevel = \"INFO\") {\n GleapConsoleLogManager.getInstance().addLog(message, logLevel);\n }\n\n /**\n * Initializes the SDK\n * @param {*} sdkKey\n */\n static initialize(sdkKey) {\n const instance = this.getInstance();\n if (instance.initialized) {\n console.warn(\"Gleap already initialized.\");\n return;\n }\n\n instance.initialized = true;\n\n try {\n fixGleapHeight();\n } catch (error) {}\n\n // Start session\n const sessionInstance = GleapSession.getInstance();\n sessionInstance.sdkKey = sdkKey;\n sessionInstance.setOnSessionReady(() => {\n // Run auto configuration.\n setTimeout(() => {\n GleapConfigManager.getInstance()\n .start()\n .then(() => {\n GleapStreamedEvent.getInstance().start();\n\n runFunctionWhenDomIsReady(() => {\n // Inject the widget buttons\n GleapFeedbackButtonManager.getInstance().injectFeedbackButton();\n\n // Inject the notification container\n GleapNotificationManager.getInstance().injectNotificationUI();\n\n // Check for uncompleted tour.\n Gleap.checkForUncompletedTour();\n\n // Check for URL params.\n Gleap.checkForUrlParams();\n\n // Notify event.\n GleapEventManager.notifyEvent(\"initialized\");\n });\n })\n .catch(function (err) {\n console.warn(\"Failed to initialize Gleap.\");\n });\n }, 0);\n });\n sessionInstance.startSession();\n }\n\n static openURL(url, newTab = false) {\n GleapFrameManager.getInstance().urlHandler(url, newTab);\n }\n\n static checkForUrlParams() {\n if (typeof window === \"undefined\" || !window.location.search) {\n return;\n }\n\n try {\n const urlParams = new URLSearchParams(window.location.search);\n\n const widget = urlParams.get(\"gleap_widget\");\n if (widget && widget.length > 0) {\n Gleap.open();\n }\n\n const conversationFlow = urlParams.get(\"gleap_conversation\");\n if (conversationFlow && conversationFlow.length > 0) {\n if (conversationFlow === \"true\") {\n Gleap.startConversation(true);\n } else {\n Gleap.startBot(conversationFlow, true);\n }\n }\n\n const feedbackFlow = urlParams.get(\"gleap_feedback\");\n if (feedbackFlow && feedbackFlow.length > 0) {\n Gleap.startFeedbackFlow(feedbackFlow);\n }\n const surveyFlow = urlParams.get(\"gleap_survey\");\n const surveyFlowFormat = urlParams.get(\"gleap_survey_format\");\n if (surveyFlow && surveyFlow.length > 0) {\n Gleap.showSurvey(\n surveyFlow,\n surveyFlowFormat === \"survey_full\" ? \"survey_full\" : \"survey\"\n );\n }\n const tourId = urlParams.get(\"gleap_tour\");\n if (tourId && tourId.length > 0) {\n var tourDelay = parseInt(urlParams.get(\"gleap_tour_delay\"));\n if (isNaN(tourDelay)) {\n tourDelay = 2;\n }\n\n setTimeout(() => {\n Gleap.startProductTour(tourId);\n }, tourDelay * 1000);\n }\n } catch (exp) {}\n }\n\n /**\n * Destroy\n * @returns\n */\n static destroy() {\n GleapReplayRecorder.getInstance().stop();\n GleapStreamedEvent.getInstance().stop();\n GleapFrameManager.getInstance().destroy();\n GleapFeedbackButtonManager.getInstance().destroy();\n GleapNotificationManager.getInstance().clearAllNotifications(true);\n GleapSession.getInstance().clearSession(0, false);\n GleapBannerManager.getInstance().removeBannerUI();\n\n // Reset the initialized flag and clear the instance\n this.instance = null;\n }\n\n /**\n * Close any open banner.\n */\n static closeBanner() {\n GleapBannerManager.getInstance().removeBannerUI();\n }\n\n /**\n * Close any open modal.\n */\n static closeModal() {\n GleapModalManager.getInstance().hideModal();\n }\n\n /**\n * Enable or disable Gleap session tracking through cookies.\n * @param {*} useCookies\n */\n static setUseCookies(useCookies) {\n GleapSession.getInstance().useCookies = useCookies;\n }\n\n /**\n * Indentifies the user session\n * @param {string} userId\n * @param {*} userData\n */\n static identify(userId, userData, userHash) {\n return GleapSession.getInstance().identifySession(\n userId,\n gleapDataParser(userData),\n userHash\n );\n }\n\n /**\n * Updates the contact data.\n * @param {*} userData\n */\n static updateContact(userData) {\n return GleapSession.getInstance().updateSession(gleapDataParser(userData));\n }\n\n /**\n * Clears the current contact.\n */\n static clearIdentity() {\n GleapSession.getInstance().clearSession();\n }\n\n /**\n * Returns the current user session\n */\n static getIdentity() {\n return GleapSession.getInstance().getSession();\n }\n\n /**\n * Returns whether the user is identified or not.\n */\n static isUserIdentified() {\n const session = GleapSession.getInstance().session;\n if (session && session.userId && session.userId.length > 0) {\n return true;\n }\n return false;\n }\n\n /**\n * Widget opened status\n * @returns {boolean} isOpened\n */\n static isOpened() {\n return GleapFrameManager.getInstance().isOpened();\n }\n\n /**\n * Hides any open Gleap dialogs.\n */\n static hide() {\n GleapFrameManager.getInstance().hideWidget();\n }\n\n /**\n * Sets the maximum network request count.\n */\n static setMaxNetworkRequests(maxRequests) {\n GleapNetworkIntercepter.getInstance().setMaxRequests(maxRequests);\n }\n\n /**\n * Sets the maximum network request count.\n */\n static startNetworkLogger() {\n GleapNetworkIntercepter.getInstance().start();\n }\n\n /**\n * Sets the network logger blacklist.\n * @param {Array} networkLogBlacklist\n */\n static setNetworkLogsBlacklist(networkLogBlacklist) {\n GleapNetworkIntercepter.getInstance().setBlacklist(networkLogBlacklist);\n }\n\n /**\n * Sets the network logger props to ignore.\n * @param {Array} filters\n */\n static setNetworkLogPropsToIgnore(filters) {\n GleapNetworkIntercepter.getInstance().setFilters(filters);\n }\n\n /**\n * Set custom replay options.\n * @param {*} options\n */\n static setReplayOptions(options) {\n GleapReplayRecorder.getInstance().setOptions(options);\n }\n\n /**\n * Closes any open Gleap dialogs.\n * @param {boolean} resetRoutes\n */\n static close(resetRoutes = false) {\n GleapFrameManager.getInstance().hideWidget(resetRoutes);\n }\n\n /**\n * Starts the Gleap flow.\n */\n static open() {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Track a custom event\n * @param {string} name\n * @param {any} data\n */\n static trackEvent(name, data) {\n GleapStreamedEvent.getInstance().logEvent(name, data);\n }\n\n /**\n * Logs a custom event\n * @param {string} name\n * @param {any} data\n * @deprecated Please use trackEvent instead.\n */\n static logEvent(name, data) {\n GleapStreamedEvent.getInstance().logEvent(name, data);\n }\n\n /**\n * Prefills a specific form field.\n * @param {*} key\n * @param {*} value\n */\n static preFillForm(data) {\n const cleanedData = gleapDataParser(data);\n GleapPreFillManager.getInstance().formPreFill = cleanedData;\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"prefill-form-data\",\n data: cleanedData,\n },\n true\n );\n }\n\n /**\n * Register events for Gleap.\n * @param {*} eventName\n * @param {*} callback\n */\n static on(eventName, callback) {\n GleapEventManager.on(eventName, callback);\n }\n\n /**\n * Enable or disable shortcuts\n * @param {boolean} enabled\n */\n static enableShortcuts(enabled) {\n if (enabled) {\n GleapShortcutListener.getInstance().start();\n } else {\n GleapShortcutListener.getInstance().stop();\n }\n }\n\n /**\n * Show or hide the feedback button\n * @param {*} show\n * @returns\n */\n static showFeedbackButton(show) {\n GleapFeedbackButtonManager.getInstance().toggleFeedbackButton(show);\n }\n\n /**\n * Sets the app version code.\n * @param {string} appVersionCode\n */\n static setAppVersionCode(appVersionCode) {\n GleapMetaDataManager.setAppVersionCode(appVersionCode);\n }\n\n /**\n * Sets the app version code.\n * @param {string} appVersionCode\n */\n static setAppBuildNumber(appBuildNumber) {\n GleapMetaDataManager.setAppBuildNumber(appBuildNumber);\n }\n\n /**\n * Set a custom ws api url.\n * @param {string} wsApiUrl\n */\n static setWSApiUrl(wsApiUrl) {\n GleapSession.getInstance().wsApiUrl = wsApiUrl;\n }\n\n /**\n * Set a custom api url.\n * @param {string} apiUrl\n */\n static setApiUrl(apiUrl) {\n GleapSession.getInstance().apiUrl = apiUrl;\n }\n\n /**\n * Set a custom banner url.\n * @param {string} bannerUrl\n */\n static setBannerUrl(bannerUrl) {\n GleapBannerManager.getInstance().setBannerUrl(bannerUrl);\n }\n\n /**\n * Set a custom modal url.\n * @param {string} modalUrl\n */\n static setModalUrl(modalUrl) {\n GleapModalManager.getInstance().setModalUrl(modalUrl);\n }\n\n /**\n * Set a custom frame api url.\n * @param {string} frameUrl\n */\n static setFrameUrl(frameUrl) {\n GleapFrameManager.getInstance().frameUrl = frameUrl;\n }\n\n /**\n * This method is used to set ticket attributes programmatically.\n * @param {*} key The key of the attribute you want to add.\n * @param {*} value The value to set.\n */\n static setTicketAttribute(key, value) {\n GleapCustomDataManager.getInstance().setTicketAttribute(key, value);\n }\n\n /**\n * This method is used to unset ticket attributes programmatically.\n * @param {*} key The key of the attribute you want to unset.\n */\n static unsetTicketAttribute(key) {\n GleapCustomDataManager.getInstance().unsetTicketAttribute(key);\n }\n\n /**\n * This method is used to clear ticket attributes programmatically.\n */\n static clearTicketAttributes() {\n GleapCustomDataManager.getInstance().clearTicketAttributes();\n }\n\n /**\n * Set custom data that will be attached to the bug-report.\n * @param {*} data\n */\n static attachCustomData(data) {\n GleapCustomDataManager.getInstance().attachCustomData(data);\n }\n\n /**\n * Add one key value pair to the custom data object\n * @param {*} key The key of the custom data entry you want to add.\n * @param {*} value The custom data you want to add.\n */\n static setCustomData(key, value) {\n GleapCustomDataManager.getInstance().setCustomData(key, value);\n }\n\n /**\n * Remove one key value pair of the custom data object\n * @param {*} key The key of the custom data entry you want to remove.\n */\n static removeCustomData(key) {\n GleapCustomDataManager.getInstance().removeCustomData(key);\n }\n\n /**\n * Clear the custom data\n */\n static clearCustomData() {\n GleapCustomDataManager.getInstance().clearCustomData();\n }\n\n /**\n * Play or mute the sound.\n * @param {*} play\n */\n static playSound(play) {\n GleapAudioManager.playSound(play);\n }\n\n /**\n * Show or hide the notification badge count.\n * @param {boolean} showNotificationBadge show or hide the notification badge\n *\n */\n static showTabNotificationBadge(showNotificationBadge) {\n const notificationInstance = GleapNotificationManager.getInstance();\n notificationInstance.showNotificationBadge = showNotificationBadge;\n notificationInstance.updateTabBarNotificationCount();\n }\n\n /**\n * Override the browser language.\n * @param {string} language country code with two letters\n */\n static setLanguage(language) {\n GleapTranslationManager.getInstance().setOverrideLanguage(language);\n\n if (Gleap.getInstance().initialized) {\n setTimeout(() => {\n Gleap.getInstance().softReInitialize();\n\n // Update language for contact.\n Gleap.updateContact({\n lang: language,\n });\n }, 1000);\n }\n }\n\n /**\n * Register custom action\n * @param {*} action\n */\n static registerCustomAction(customAction) {\n GleapCustomActionManager.registerCustomAction(customAction);\n }\n\n /**\n * Triggers a custom action\n * @param {*} actionName\n */\n static triggerCustomAction(name) {\n GleapCustomActionManager.triggerCustomAction(name);\n }\n\n /**\n * Sets a custom color scheme.\n * @param {string} primaryColor\n */\n static setStyles(\n primaryColor,\n headerColor,\n buttonColor,\n backgroundColor = \"#ffffff\",\n borderRadius = 20,\n buttonX = 20,\n buttonY = 20,\n buttonStyle = GleapFeedbackButtonManager.FEEDBACK_BUTTON_BOTTOM_LEFT\n ) {\n runFunctionWhenDomIsReady(() => {\n injectStyledCSS(\n primaryColor,\n headerColor,\n buttonColor,\n borderRadius,\n backgroundColor,\n buttonX,\n buttonY,\n buttonStyle\n );\n });\n }\n\n /**\n * Sends a silent feedback report\n * @param {*} formData\n * @param {*} priority\n * @param {*} excludeData\n */\n static sendSilentCrashReport(\n description = \"\",\n priority = \"MEDIUM\",\n excludeData = {\n screenshot: true,\n replays: true,\n attachments: true,\n }\n ) {\n return Gleap.sendSilentCrashReportWithFormData(\n {\n description,\n },\n priority,\n excludeData\n );\n }\n\n /**\n * Sends a silent feedback report\n * @param {*} formData\n * @param {*} priority\n * @param {*} excludeData\n */\n static sendSilentCrashReportWithFormData(\n formData,\n priority = \"MEDIUM\",\n excludeData = {\n screenshot: true,\n replays: true,\n attachments: true,\n }\n ) {\n if (this.silentCrashReportSent) {\n return;\n }\n\n this.silentCrashReportSent = true;\n setTimeout(() => {\n this.silentCrashReportSent = false;\n }, 10000);\n\n const excludeDataCleaned = excludeData ? gleapDataParser(excludeData) : {};\n const sessionInstance = GleapSession.getInstance();\n if (!sessionInstance.ready) {\n return;\n }\n\n var newFormData = formData ? formData : {};\n if (sessionInstance.session.email) {\n newFormData.reportedBy = sessionInstance.session.email;\n }\n\n const feedback = new GleapFeedback(\n \"CRASH\",\n priority,\n newFormData,\n true,\n excludeDataCleaned\n );\n feedback\n .sendFeedback()\n .then(() => {})\n .catch((error) => {});\n }\n\n /**\n * Shows a survey manually.\n * @param {*} actionType\n * @param {*} format\n */\n static showSurvey(actionType, format = \"survey\") {\n Gleap.startFeedbackFlowWithOptions(\n actionType,\n {\n hideBackButton: true,\n format,\n },\n true\n );\n }\n\n /**\n * Starts a classic feedback form.\n */\n static startClassicForm(formId, showBackButton) {\n Gleap.startFeedbackFlowWithOptions(formId, {\n hideBackButton: !showBackButton,\n });\n }\n\n /**\n * Starts the bug reporting flow.\n */\n static startFeedbackFlow(feedbackFlow, showBackButton) {\n Gleap.startFeedbackFlowWithOptions(feedbackFlow, {\n hideBackButton: !showBackButton,\n });\n }\n\n /**\n * Starts the bug reporting flow.\n */\n static startFeedbackFlowWithOptions(\n feedbackFlow,\n options = {},\n isSurvey = false\n ) {\n const { autostartDrawing, hideBackButton, format } = options;\n const sessionInstance = GleapSession.getInstance();\n if (!sessionInstance.ready) {\n return;\n }\n\n // Initially set scroll position\n Gleap.getInstance().setGlobalDataItem(\"snapshotPosition\", {\n x: window.scrollX,\n y: window.scrollY,\n });\n\n var action = \"start-feedbackflow\";\n if (isSurvey) {\n action = \"start-survey\";\n }\n\n GleapFrameManager.getInstance().setAppMode(isSurvey ? format : \"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: action,\n data: {\n flow: feedbackFlow,\n hideBackButton: hideBackButton,\n format,\n },\n },\n true\n );\n\n if (autostartDrawing) {\n GleapFrameManager.getInstance().showDrawingScreen(\"screenshot\");\n } else {\n GleapFrameManager.getInstance().showWidget();\n }\n }\n\n /**\n * Opens the conversations overview.\n */\n static openConversations(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-conversations\",\n data: {\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens a conversation\n */\n static openConversation(shareToken, showBackButton = true) {\n if (!shareToken) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-conversation\",\n data: {\n shareToken,\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Starts a new conversation\n */\n static startConversation(showBackButton = true) {\n Gleap.startBot(\"\", showBackButton);\n }\n\n /**\n * Starts a new conversation and attaches the bot with the given id.\n */\n static startBot(botId, showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"start-bot\",\n data: {\n botId: botId ? botId : \"\",\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens a help center collection\n */\n static openHelpCenterCollection(collectionId, showBackButton = true) {\n if (!collectionId) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-help-collection\",\n data: {\n collectionId,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens a help article\n */\n static openHelpCenterArticle(articleId, showBackButton = true) {\n if (!articleId) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-help-article\",\n data: {\n articleId,\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens the help center.\n */\n static openHelpCenter(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-helpcenter\",\n data: {\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Search for news articles in the help center\n */\n static searchHelpCenter(term, showBackButton = true) {\n if (!term) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-helpcenter-search\",\n data: {\n term,\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens a news article\n */\n static openNewsArticle(id, showBackButton = true) {\n if (!id) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-news-article\",\n data: {\n id,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Open the checklists overview.\n */\n static openChecklists(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-checklists\",\n data: {},\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Starts a new checklist and opens it.\n */\n static startChecklist(\n outboundId,\n showBackButton = true,\n sharedKey = undefined\n ) {\n if (!outboundId) {\n return false;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"start-checklist\",\n data: {\n outboundId: outboundId,\n hideBackButton: !showBackButton,\n ...(sharedKey ? { sharedKey: sharedKey } : {}),\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n\n return true;\n }\n\n /**\n * Open an existing checklist.\n */\n static openChecklist(checklistId, showBackButton = true) {\n if (!checklistId) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-checklist\",\n data: {\n id: checklistId,\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Gets the full checklist data by validating the outbound ID and fetching the data.\n * @param {string} outboundId - The outbound checklist ID to get data for.\n * @param {string} [sharedKey] - Optional shared key for the checklist.\n * @returns {Promise} A promise that resolves with the full checklist data.\n *\n * Available events for checklist updates (use Gleap.on() to listen):\n * - 'checklist-loaded': Fired when a checklist is initially loaded\n * - 'checklist-update': Fired when checklist data is updated\n * - 'checklist-step-completed': Fired when a step is marked as completed\n * - 'checklist-completed': Fired when the entire checklist is completed\n */\n static getChecklistData(outboundId, sharedKey) {\n if (!outboundId) {\n return Promise.reject(new Error(\"outboundId is required\"));\n }\n\n const networkManager = ChecklistNetworkManager.getInstance();\n\n // First validate the checklist to get the internal ID\n return networkManager\n .validateChecklist(outboundId, sharedKey)\n .then((internalId) => {\n // Then fetch the full checklist data\n return networkManager.fetchChecklist(internalId);\n });\n }\n\n /**\n * Opens the news overview.\n */\n static openNews(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-news\",\n data: {\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens the feature requests overview.\n */\n static openFeatureRequests(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-feature-requests\",\n data: {},\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n isLiveMode() {\n if (this.offlineMode === true) {\n return false;\n }\n\n var hostname = window.location.hostname;\n const isLocalHost =\n [\"localhost\", \"127.0.0.1\", \"0.0.0.0\", \"\", \"::1\"].includes(hostname) ||\n hostname.startsWith(\"192.168.\") ||\n hostname.startsWith(\"10.0.\") ||\n hostname.endsWith(\".local\") ||\n !hostname.includes(\".\");\n return !isLocalHost;\n }\n\n softReInitialize() {\n GleapFrameManager.getInstance().destroy();\n GleapConfigManager.getInstance()\n .start()\n .then(() => {\n // Update the feedback button.\n GleapFeedbackButtonManager.getInstance().refresh();\n\n // Inject the notification container\n GleapNotificationManager.getInstance().injectNotificationUI();\n })\n .catch(function (err) {\n console.warn(\"Failed to initialize Gleap.\");\n });\n }\n\n /**\n * Performs an action.\n * @param {*} action\n */\n performActions(actions) {\n for (let i = 0; i < actions.length; i++) {\n const action = actions[i];\n if (action && action.actionType) {\n if (action.pageFilter && window && window.location) {\n const passed = checkPageFilter(\n window.location.href,\n action.pageFilter,\n action.pageFilterType\n );\n\n if (!passed) {\n continue;\n }\n }\n\n if (action.actionType === \"notification\") {\n if (action?.data?.checklist?.popupType === \"widget\") {\n Gleap.openChecklist(action.data.checklist.id, true);\n } else {\n if (!this.disableInAppNotifications) {\n Gleap.showNotification(action);\n }\n }\n } else if (action.actionType === \"banner\") {\n Gleap.showBanner(action);\n } else if (action.actionType === \"modal\") {\n Gleap.showModal(action);\n } else if (action.actionType === \"tour\") {\n Gleap.startProductTourWithConfig(action.outbound, action.data, false);\n } else {\n Gleap.showSurvey(action.actionType, action.format);\n }\n }\n }\n }\n\n static startProductTour(tourId, checkStartUrl = false) {\n const self = this;\n GleapSession.getInstance()\n .startProductTourConfig(tourId)\n .then((config) => {\n if (\n checkStartUrl &&\n config?.startURL &&\n !window?.location?.href?.includes(config?.baseURL)\n ) {\n window.location.href = `${config.startURL}?gleap_tour=${tourId}&gleap_tour_delay=1`;\n return;\n }\n\n self.startProductTourWithConfig(tourId, config, true);\n })\n .catch((error) => {});\n }\n\n static checkForUncompletedTour() {\n const tourData = GleapProductTours.getInstance().loadUncompletedTour();\n if (tourData) {\n GleapProductTours.getInstance().startWithConfig(\n tourData.tourId,\n tourData.tourData,\n 500\n );\n }\n }\n\n static startProductTourWithConfig(tourId, config, manually = false) {\n GleapProductTours.getInstance().startWithConfig(\n tourId,\n config,\n 0,\n manually\n );\n }\n\n static showBanner(data) {\n try {\n GleapBannerManager.getInstance().showBanner(data);\n } catch (e) {}\n }\n\n static showModal(data) {\n try {\n GleapModalManager.getInstance().showModal(data);\n } catch (e) {}\n }\n\n static showNotification(data) {\n GleapNotificationManager.getInstance().showNotification(data);\n }\n\n /**\n * Sets a global data value\n * @param {*} key\n * @param {*} value\n */\n setGlobalDataItem(key, value) {\n this.globalData[key] = value;\n }\n\n /**\n * Gets a global data value\n * @param {*} key\n * @returns\n */\n getGlobalDataItem(key) {\n return this.globalData[key];\n }\n\n /**\n * Takes the current replay and assigns it to the global data array.\n */\n takeCurrentReplay() {\n const replayData = GleapReplayRecorder.getInstance().getReplayData();\n this.setGlobalDataItem(\"webReplay\", replayData);\n }\n}\n\n// Check for unperformed Gleap actions.\nif (typeof window !== \"undefined\") {\n const GleapActions = window.GleapActions;\n if (GleapActions && GleapActions.length > 0) {\n for (var i = 0; i < GleapActions.length; i++) {\n const GLAction = GleapActions[i];\n if (GLAction && GLAction.e && Gleap[GLAction.e]) {\n Gleap[GLAction.e].apply(Gleap, GLAction.a);\n }\n }\n }\n}\n\nconst handleGleapLink = (href) => {\n try {\n const urlParts = href.split(\"/\");\n const type = urlParts[2];\n if (type === \"article\") {\n const identifier = urlParts[3];\n Gleap.openHelpCenterArticle(identifier, true);\n }\n\n if (type === \"collection\") {\n const identifier = urlParts[3];\n Gleap.openHelpCenterCollection(identifier, true);\n }\n\n if (type === \"flow\") {\n const identifier = urlParts[3];\n Gleap.startFeedbackFlow(identifier, true);\n }\n\n if (type === \"survey\") {\n const identifier = urlParts[3];\n Gleap.showSurvey(identifier);\n }\n\n if (type === \"bot\") {\n const identifier = urlParts[3];\n Gleap.startBot(identifier, true);\n }\n\n if (type === \"news\") {\n const identifier = urlParts[3];\n Gleap.openNewsArticle(identifier, true);\n }\n\n if (type === \"checklist\") {\n const identifier = urlParts[3];\n Gleap.startChecklist(identifier, true, urlParts[4]);\n }\n\n if (type === \"tour\") {\n const identifier = urlParts[3];\n Gleap.startProductTour(identifier);\n }\n } catch (e) {\n console.error(\"Failed to handle Gleap link: \", href);\n }\n};\n\nexport {\n GleapNetworkIntercepter,\n GleapAudioManager,\n GleapNotificationManager,\n GleapBannerManager,\n GleapModalManager,\n GleapPreFillManager,\n GleapShortcutListener,\n GleapMarkerManager,\n GleapTranslationManager,\n GleapReplayRecorder,\n GleapFeedback,\n GleapConsoleLogManager,\n GleapCustomActionManager,\n GleapEventManager,\n GleapCustomDataManager,\n GleapFeedbackButtonManager,\n GleapClickListener,\n GleapSession,\n GleapStreamedEvent,\n GleapConfigManager,\n GleapFrameManager,\n GleapMetaDataManager,\n GleapTagManager,\n GleapProductTours,\n handleGleapLink,\n};\n\nexport default Gleap;\n","/**\n * Gleap Checklist Web Component\n *\n * Displays an interactive checklist fetched from the Gleap API.\n * Allows users to view steps, mark them as done, trigger actions,\n * and automatically updates based on external events. Includes localization support\n * via GleapTranslationManager.\n *\n * Waits for a Gleap session to be available before initializing and\n * reloads when the session changes (via 'session-updated' event).\n *\n * @element gleap-checklist\n *\n * @attr {string} checklistId - The outbound ID of the checklist to display. Required.\n * @attr {boolean} [info=true] - Whether to display the info section (title, description, sender).\n * @attr {boolean} [progressbar=true] - Whether to display the progress bar.\n * @attr {boolean} [dark=false] - Apply dark mode styling.\n * @attr {boolean} [floating=false] - When set to \"true\", shows a small bubble that expands on click.\n *\n * @cssprop --color-bg - Background color.\n * @cssprop --color-font-title - Title text color.\n * @cssprop --color-font-text - Body text color.\n * @cssprop --color-font-light - Lighter text color.\n * @cssprop --color-primary - Primary accent color.\n * @cssprop --color-primary-light - Light primary color shade.\n * @cssprop --color-primary-contrast - Text color for primary buttons.\n * @cssprop --color-border - Border color.\n * @cssprop --color-gray-light - Light gray background/border color.\n * @cssprop --color-gray-lighter - Even lighter gray background.\n * @cssprop --color-gray-dark - Darker gray text/icon color.\n * @cssprop --color-success - Success color (e.g., for completed items).\n * @cssprop --color-success-light - Contrast color for success elements.\n * @cssprop --radius-sm - Small border radius.\n * @cssprop --radius-lg - Large border radius.\n * @cssprop --radius-full - Full (pill) border radius.\n * @cssprop --shadow-sm - Small box shadow.\n * @cssprop --shadow-md - Medium box shadow.\n * @cssprop --animation-duration - Duration for animations (e.g., accordion).\n * @cssprop --animation-timing - Timing function for animations.\n */\nimport ChecklistNetworkManager from \"./ChecklistNetworkManager\";\nimport Gleap, {\n GleapConfigManager,\n GleapSession,\n GleapTranslationManager,\n GleapEventManager,\n} from \"./Gleap\";\n\nexport const registerGleapChecklist = () => {\n if (\n typeof customElements !== \"undefined\" &&\n typeof HTMLElement !== \"undefined\" &&\n typeof window !== \"undefined\"\n ) {\n class GleapChecklist extends HTMLElement {\n /** @private {number} */\n activeStep = -1;\n /** @private {object|null} */\n checklistData = null;\n /** @private {boolean} */\n _isInitialLoad = false;\n /** @private {boolean} */\n _initialActiveSet = false;\n /** @private {boolean} Flag indicating if the component has loaded data at least once. */\n _hasLoaded = false;\n /** @private {boolean} Flag indicating if a Gleap session is currently considered active by the component. */\n _isSessionReady = false;\n\n /** @private {Function} */\n _boundHandleChecklistUpdate = this.handleChecklistUpdate.bind(this);\n /** @private {Function} */\n _boundHandleSessionUpdate = this.handleSessionUpdate.bind(this);\n\n constructor() {\n super();\n this.attachShadow({ mode: \"open\" });\n // Ensure NetworkManager instance is created only if Gleap is available\n try {\n if (\n typeof GleapSession !== \"undefined\" &&\n typeof ChecklistNetworkManager !== \"undefined\"\n ) {\n this._networkManager = ChecklistNetworkManager.getInstance();\n } else {\n this._networkManager = null;\n }\n } catch (e) {\n this._networkManager = null;\n }\n // Bind click handlers for floating mode.\n this._boundFloatingLauncherClick =\n this.handleFloatingLauncherClick.bind(this);\n this._boundFloatingCloseClick =\n this.handleFloatingCloseClick.bind(this);\n this._floatingHideTimeout = null;\n }\n\n // --- Observed Attributes ---\n static get observedAttributes() {\n return [\n \"checklistId\",\n \"info\",\n \"progressbar\",\n \"dark\",\n \"floating\",\n \"sharedKey\",\n ];\n }\n\n // --- Lifecycle Callbacks ---\n connectedCallback() {\n window.addEventListener(\n \"checkListUpdate\",\n this._boundHandleChecklistUpdate\n );\n window.addEventListener(\n \"session-updated\",\n this._boundHandleSessionUpdate\n );\n window.addEventListener(\n \"resize\",\n (this._boundResizeHandler = this.handleResize.bind(this))\n );\n this._checkSessionAndLoad();\n }\n\n disconnectedCallback() {\n window.removeEventListener(\n \"checkListUpdate\",\n this._boundHandleChecklistUpdate\n );\n window.removeEventListener(\n \"session-updated\",\n this._boundHandleSessionUpdate\n );\n window.removeEventListener(\"resize\", this._boundResizeHandler);\n this.removeFloatingClickListeners();\n if (this._floatingHideTimeout) {\n clearTimeout(this._floatingHideTimeout);\n this._floatingHideTimeout = null;\n }\n this.checklistData = null;\n this.activeStep = -1;\n this._hasLoaded = false;\n this._isSessionReady = false;\n this._initialActiveSet = false;\n this.renderResponse();\n }\n\n handleResize() {\n this.updateActiveTaskMaxHeight();\n }\n\n attributeChangedCallback(name, oldValue, newValue) {\n if (oldValue !== newValue) {\n if (name === \"checklistId\" && this._isSessionReady) {\n this.loadChecklist();\n } else if (name !== \"checklistId\" && this._hasLoaded) {\n if (this.checklistData) {\n this.renderChecklist(this.checklistData);\n }\n }\n }\n }\n\n // --- Session Handling ---\n _checkSessionAndLoad() {\n const gleapSessionInstance = this._getGleapSessionInstance();\n const hasChecklistId = this.getAttribute(\"checklistId\");\n\n if (gleapSessionInstance.ready && hasChecklistId) {\n this._isSessionReady = true;\n this._networkManager = ChecklistNetworkManager.getInstance();\n this.loadChecklist();\n } else {\n this._isSessionReady = false;\n this._hasLoaded = false;\n this.checklistData = null;\n this.activeStep = -1;\n this._initialActiveSet = false;\n this.renderResponse();\n }\n }\n\n handleSessionUpdate() {\n this._checkSessionAndLoad();\n }\n\n _getGleapSessionInstance() {\n try {\n return typeof GleapSession !== \"undefined\"\n ? GleapSession.getInstance()\n : null;\n } catch (e) {\n return null;\n }\n }\n\n // --- Getters for Configuration ---\n get infoEnabled() {\n const attr = this.getAttribute(\"info\");\n return attr === null || attr.toLowerCase() !== \"false\";\n }\n\n get progressbarEnabled() {\n const attr = this.getAttribute(\"progressbar\");\n return attr === null || attr.toLowerCase() !== \"false\";\n }\n\n get floatingEnabled() {\n return this.getAttribute(\"floating\") === \"true\";\n }\n\n // --- Translation Helpers ---\n _translate(key, defaultValue = \"\") {\n return GleapTranslationManager.translateText(key) || defaultValue;\n }\n\n _translateWithVars(key, vars, defaultValue = \"\") {\n return (\n GleapTranslationManager.translateTextWithVars(key, vars) ||\n defaultValue\n );\n }\n\n // --- SVG Icons ---\n getCheckIcon() {\n return `\n \n `;\n }\n\n // --- Data Loading and Handling ---\n loadChecklist() {\n if (!this._isSessionReady || !this._networkManager) {\n return;\n }\n const checklistId = this.getAttribute(\"checklistId\");\n if (checklistId) {\n this.activeStep = -1;\n this._initialActiveSet = false;\n this.validateChecklist(checklistId);\n } else {\n this.renderResponse();\n this.checklistData = null;\n this._hasLoaded = false;\n }\n }\n\n getQueryParams() {\n const gleapSessionInstance = this._getGleapSessionInstance();\n if (!gleapSessionInstance?.session) {\n return \"\";\n }\n const session = gleapSessionInstance.session;\n let lang = \"en\";\n try {\n if (typeof GleapTranslationManager !== \"undefined\") {\n lang =\n GleapTranslationManager.getInstance().getActiveLanguage() || \"en\";\n }\n } catch (e) {}\n return `gleapId=${session.gleapId || \"\"}&gleapHash=${\n session.gleapHash || \"\"\n }&lang=${lang}`;\n }\n\n makeRequest(method, url, data, callback) {\n const gleapSessionInstance = this._getGleapSessionInstance();\n if (!gleapSessionInstance?.session) {\n const mockXhr = {\n readyState: 4,\n status: 0,\n responseText: \"Session unavailable\",\n _isMock: true,\n };\n callback(mockXhr);\n return;\n }\n const xhr = new XMLHttpRequest();\n xhr.open(method, url);\n try {\n gleapSessionInstance.injectSession(xhr);\n } catch (e) {}\n if (data) {\n xhr.setRequestHeader(\n \"Content-Type\",\n \"application/json;charset=UTF-8\"\n );\n }\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n callback(xhr);\n }\n };\n xhr.onerror = () => {\n callback(xhr);\n };\n xhr.send(data ? JSON.stringify(data) : null);\n }\n\n validateChecklist(outboundId) {\n if (!this._isSessionReady || !this._networkManager) {\n return;\n }\n this.checklistData = null;\n this._hasLoaded = false;\n this.renderResponse();\n const sharedKey = this.getAttribute(\"sharedKey\");\n\n this._networkManager\n .validateChecklist(outboundId, sharedKey)\n .then((internalId) => {\n if (!this.isConnected || !this._isSessionReady || !internalId) {\n return;\n }\n this.fetchChecklist(internalId);\n })\n .catch((error) => {\n this.renderResponse();\n this.checklistData = null;\n this._hasLoaded = false;\n });\n }\n\n fetchChecklist(checklistId) {\n if (!this._isSessionReady || !this._networkManager) {\n return;\n }\n this._isInitialLoad = !this._hasLoaded;\n this._networkManager\n .fetchChecklist(checklistId)\n .then((data) => {\n if (!this.isConnected || !this._isSessionReady || !data) {\n this._hasLoaded = false;\n this.checklistData = null;\n this._checkSessionAndLoad();\n return;\n }\n this.checklistData = data;\n this._hasLoaded = true;\n if (data.status === \"done\") {\n this.renderResponse();\n return;\n }\n if (this._isInitialLoad && !this._initialActiveSet) {\n const steps = data.outbound?.config?.steps || [];\n const completedSteps = data.completedSteps || [];\n const firstIncompleteIndex = steps.findIndex(\n (step) => !completedSteps.includes(step.id)\n );\n this.activeStep =\n firstIncompleteIndex >= 0 ? firstIncompleteIndex : -1;\n if (this.activeStep !== -1) {\n this._initialActiveSet = true;\n }\n }\n this.renderChecklist(this.checklistData);\n \n // Notify external listeners about the initial checklist load\n GleapEventManager.notifyEvent(\"checklist-loaded\", {\n checklistId: this.checklistData.id,\n outboundId: this.checklistData.outbound?.id,\n completedSteps: this.checklistData.completedSteps,\n status: this.checklistData.status,\n data: this.checklistData\n });\n })\n .catch((error) => {\n this.renderResponse();\n this.checklistData = null;\n this._hasLoaded = false;\n });\n }\n\n updateChecklist(id, data) {\n const gleapSessionInstance = this._getGleapSessionInstance();\n if (!gleapSessionInstance?.session) {\n return;\n }\n const apiUrl = gleapSessionInstance.apiUrl;\n if (!apiUrl) {\n return;\n }\n const session = gleapSessionInstance.session;\n const gleapId = session?.gleapId ?? \"\";\n const gleapHash = session?.gleapHash ?? \"\";\n let lang = \"en\";\n try {\n if (typeof GleapTranslationManager !== \"undefined\") {\n lang =\n GleapTranslationManager.getInstance().getActiveLanguage() || \"en\";\n }\n } catch (e) {}\n let url = `${apiUrl}/outbound/checklists/${id}`;\n if (data.checkedStep) {\n url += `/increment/${data.checkedStep}`;\n }\n url += `?gleapId=${gleapId}&gleapHash=${gleapHash}&lang=${lang}`;\n this.makeRequest(\"PUT\", url, data, (xhr) => {\n if (xhr._isMock) return;\n if (!(xhr.status === 200 || xhr.status === 204)) {\n // Update failed\n }\n });\n }\n\n // --- External Update Handling ---\n handleChecklistUpdate(event) {\n if (!this._hasLoaded || !this.checklistData) {\n return;\n }\n const updateData = event.detail;\n if (!updateData || updateData.id !== this.checklistData.id) {\n return;\n }\n const previousCompletedSteps = [\n ...(this.checklistData.completedSteps || []),\n ];\n let dataChanged = false;\n let activeStepCompleted = false;\n const currentlyActiveStepIndex = this.activeStep;\n if (\n updateData.completedSteps &&\n JSON.stringify(updateData.completedSteps) !==\n JSON.stringify(previousCompletedSteps)\n ) {\n this.checklistData.completedSteps = [...updateData.completedSteps];\n dataChanged = true;\n if (currentlyActiveStepIndex !== -1) {\n const activeStepId =\n this.checklistData.outbound?.config?.steps?.[\n currentlyActiveStepIndex\n ]?.id;\n if (\n activeStepId &&\n this.checklistData.completedSteps.includes(activeStepId) &&\n !previousCompletedSteps.includes(activeStepId)\n ) {\n activeStepCompleted = true;\n }\n }\n }\n if (\n updateData.status &&\n updateData.status !== this.checklistData.status\n ) {\n this.checklistData.status = updateData.status;\n dataChanged = true;\n }\n if (activeStepCompleted) {\n const steps = this.checklistData.outbound?.config?.steps || [];\n let nextActiveStep = -1;\n for (let i = currentlyActiveStepIndex + 1; i < steps.length; i++) {\n if (!this.checklistData.completedSteps.includes(steps[i].id)) {\n nextActiveStep = i;\n break;\n }\n }\n if (this.activeStep !== nextActiveStep) {\n this.setActiveStep(nextActiveStep);\n }\n dataChanged = true;\n }\n if (dataChanged) {\n this.renderChecklist(this.checklistData);\n \n // Notify external listeners about the checklist update\n GleapEventManager.notifyEvent(\"checklist-update\", {\n checklistId: this.checklistData.id,\n outboundId: this.checklistData.outbound?.id,\n completedSteps: this.checklistData.completedSteps,\n status: this.checklistData.status,\n data: this.checklistData\n });\n }\n }\n\n // --- Floating (Click-based) Listeners ---\n handleFloatingLauncherClick(event) {\n event.stopPropagation();\n\n if (this.checklistData.status === \"done\") {\n return;\n }\n\n const tasks = this.shadowRoot.querySelector(\".checklist-tasks\");\n if (tasks) {\n tasks.style.display =\n tasks.style.display === \"block\" ? \"none\" : \"block\";\n }\n }\n\n handleFloatingCloseClick(event) {\n event.stopPropagation();\n const tasks = this.shadowRoot.querySelector(\".checklist-tasks\");\n if (tasks) {\n tasks.style.display = \"none\";\n }\n }\n\n addFloatingClickListeners() {\n const launcher = this.shadowRoot.querySelector(\n \".checklist-floating-launcher\"\n );\n if (launcher) {\n launcher.addEventListener(\"click\", this._boundFloatingLauncherClick);\n }\n const header = this.shadowRoot.querySelector(\n \".checklist-floating-header\"\n );\n if (header) {\n header.addEventListener(\"click\", this._boundFloatingCloseClick);\n }\n }\n\n removeFloatingClickListeners() {\n const launcher = this.shadowRoot.querySelector(\n \".checklist-floating-launcher\"\n );\n if (launcher) {\n launcher.removeEventListener(\n \"click\",\n this._boundFloatingLauncherClick\n );\n }\n const header = this.shadowRoot.querySelector(\n \".checklist-floating-header\"\n );\n if (header) {\n header.removeEventListener(\"click\", this._boundFloatingCloseClick);\n }\n }\n\n // --- Rendering Logic ---\n renderResponse() {\n this.shadowRoot.innerHTML = \"\";\n }\n\n /**\n * Renders the floating launcher. When called with the default class (\"checklist-floating\")\n * it shows a chevron icon; when called with \"checklist-floating-header\" it shows a close icon.\n */\n renderFloatingLauncher(\n outbound,\n className = \"checklist-floating\",\n renderDoneState = false\n ) {\n const steps = outbound.config?.steps || [];\n const completedSteps = this.checklistData?.completedSteps || [];\n let progress = 0;\n if (this.progressbarEnabled && steps.length > 0) {\n const totalSteps = steps.length;\n const doneSteps = completedSteps.length;\n progress = totalSteps > 0 ? (doneSteps / totalSteps) * 100 : 0;\n }\n\n // Determine the next incomplete step\n const nextIncompleteStep = steps.find(\n (step) => !completedSteps.includes(step.id)\n );\n let titleText =\n steps.length > 0\n ? nextIncompleteStep\n ? nextIncompleteStep.title ||\n this._translateWithVars(\n \"stepDefaultTitle\",\n { index: steps.indexOf(nextIncompleteStep) + 1 },\n `Step ${steps.indexOf(nextIncompleteStep) + 1}`\n )\n : \"\"\n : outbound.subject || \"\";\n\n let subtitleText =\n steps.length > 0\n ? nextIncompleteStep\n ? nextIncompleteStep.description || \"\"\n : \"\"\n : outbound.message || \"\";\n\n if (renderDoneState) {\n titleText = outbound.config?.successTitle || \"\";\n subtitleText = outbound.config?.successMessage || \"\";\n progress = 100;\n }\n\n const circumference = 2 * Math.PI * 7;\n const computedOffset = circumference - (progress / 100) * circumference;\n\n const isHeader = className === \"checklist-floating-header\";\n const icon = isHeader\n ? `\n \n \n `\n : `\n \n `;\n\n return `\n
\n
\n
\n \n \n \n \n
\n
${titleText}
\n ${\n renderDoneState\n ? \"\"\n : `${icon}`\n }\n
\n
${subtitleText}
\n
\n `;\n }\n\n renderInfoSection(outbound) {\n if (!this.infoEnabled || !outbound) return \"\";\n const subject =\n outbound.subject ||\n this._translate(\"checklistDefaultTitle\", \"Checklist\");\n const message = outbound.message || \"\";\n let senderHtml = \"\";\n if (outbound.sender?.profileImageUrl) {\n senderHtml = `\n
\n \"${\n\n ${outbound.sender.firstName || \"\"}\n
`;\n }\n return `\n
\n ${\n subject\n ? `
${subject}
`\n : \"\"\n }\n ${\n message\n ? `
${message}
`\n : \"\"\n }\n ${senderHtml}\n
`;\n }\n\n renderProgressSection(steps = [], completedSteps = []) {\n if (!this.progressbarEnabled || !steps.length) return \"\";\n const totalSteps = steps.length;\n const doneSteps = completedSteps.length;\n const progress = totalSteps > 0 ? (doneSteps / totalSteps) * 100 : 0;\n let duration = 0;\n steps.forEach((step) => {\n if (!completedSteps.includes(step.id) && step.duration > 0) {\n duration += step.duration;\n }\n });\n const progressLabel = this._translateWithVars(\n \"taskProgress\",\n { a: doneSteps, b: totalSteps },\n `${doneSteps} of ${totalSteps} done`\n );\n const durationLabel =\n duration > 0\n ? this._translateWithVars(\n \"aboutMinutes\",\n { a: duration },\n `About ${duration} min left`\n )\n : \"\";\n return `\n
\n
${progressLabel}
\n ${\n durationLabel\n ? `
${durationLabel}
`\n : \"\"\n }\n
\n
\n
\n
`;\n }\n\n renderTasks(steps = [], completedSteps = []) {\n if (!steps || steps.length === 0)\n return `

${this._translate(\n \"noStepsDefined\",\n \"No steps defined.\"\n )}

`;\n return steps\n .map((step, index) => {\n const isTaskDone = completedSteps.includes(step.id);\n const isActive = this.activeStep === index;\n const badge = isTaskDone\n ? `${this.getCheckIcon()}`\n : `${\n index + 1\n }`;\n const stepTitle =\n step.title ||\n this._translateWithVars(\n \"stepDefaultTitle\",\n { index: index + 1 },\n `Step ${index + 1}`\n );\n const stepDescription = step.description || \"\";\n const actionButtonText =\n step.actionTitle ||\n this._translate(\"actionDefaultTitle\", \"Action\");\n const actionHtml =\n step.action && step.action !== \"none\"\n ? `
\n \n
`\n : \"\";\n const markDoneLabel = this._translate(\"markAsDone\", \"Mark as done\");\n const markDoneHtml =\n step.allowMarkDone && !isTaskDone\n ? `
\n ${this.getCheckIcon()}\n
${markDoneLabel}
\n
`\n : \"\";\n const taskClasses = [\n \"checklist-task\",\n isTaskDone ? \"checklist-task--done\" : \"\",\n isActive ? \"checklist-task--active\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n return `\n
\n
\n ${badge}\n
${stepTitle}
\n \n \n \n \n \n
\n
\n
\n ${\n stepDescription\n ? `
${stepDescription}
`\n : \"\"\n }\n ${actionHtml}\n ${markDoneHtml}\n
\n
\n
`;\n })\n .join(\"\");\n }\n\n renderChecklist(data) {\n if (!this._hasLoaded || !data || !data.outbound) {\n this._checkSessionAndLoad();\n return;\n }\n const { outbound } = data;\n const steps = outbound.config?.steps || [];\n const completedSteps = data.completedSteps || [];\n const isDone =\n data.status === \"done\" ||\n (steps.length > 0 && completedSteps.length >= steps.length);\n let content = \"\";\n if (isDone) {\n const successTitle = outbound.config?.successTitle || \"\";\n const successMessage = outbound.config?.successMessage || \"\";\n if (this.floatingEnabled) {\n content = this.renderFloatingLauncher(\n outbound,\n \"checklist-floating-launcher\",\n true\n );\n } else {\n content = `\n
\n
\n ${this.getCheckIcon()}\n
\n
${successTitle}
\n
${successMessage}
\n
`;\n }\n if (this.activeStep !== -1) this.activeStep = -1;\n } else {\n content = `\n
\n ${!this.floatingEnabled ? this.renderInfoSection(outbound) : \"\"}\n ${\n !this.floatingEnabled\n ? this.renderProgressSection(steps, completedSteps)\n : \"\"\n }\n ${\n this.floatingEnabled\n ? this.renderFloatingLauncher(outbound)\n : \"\"\n }\n
\n ${\n this.floatingEnabled\n ? this.renderFloatingLauncher(\n outbound,\n \"checklist-floating-header\"\n )\n : \"\"\n }\n ${this.renderTasks(steps, completedSteps)}\n
\n
`;\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const primaryColor = flowConfig.color ? flowConfig.color : \"#485BFF\";\n\n const styles = `\n \n `;\n this.shadowRoot.innerHTML = styles + content;\n this.addTaskEventListeners();\n if (this.floatingEnabled) {\n this.addFloatingClickListeners();\n }\n if (this.activeStep !== -1) {\n this.toggleTask(this.activeStep, true);\n }\n }\n\n updateActiveTaskMaxHeight() {\n if (this.activeStep !== -1) {\n const taskBodyInner = this.shadowRoot.querySelector(\n `.checklist-task[data-task-index=\"${this.activeStep}\"] .checklist-task-body-inner`\n );\n const container = this.shadowRoot.querySelector(\n `.checklist-task[data-task-index=\"${this.activeStep}\"] .checklist-task-body`\n );\n if (taskBodyInner && container) {\n const height = taskBodyInner.offsetHeight;\n container.style.setProperty(\n \"--task-body-active-height\",\n `${height}px`\n );\n }\n }\n }\n\n // --- Event Listener Setup ---\n addTaskEventListeners() {\n const tasks = this.shadowRoot.querySelectorAll(\".checklist-task\");\n tasks.forEach((task) => {\n const header = task.querySelector(\".checklist-task-header\");\n const index = parseInt(task.getAttribute(\"data-task-index\"), 10);\n if (header) {\n header.addEventListener(\"click\", () => {\n const newActiveStep = this.activeStep === index ? -1 : index;\n this.setActiveStep(newActiveStep);\n });\n }\n const markDoneBtn = task.querySelector(\n \".checklist-task-body-markdone\"\n );\n if (markDoneBtn) {\n markDoneBtn.addEventListener(\"click\", (e) => {\n e.stopPropagation();\n if (!this.checklistData?.outbound?.config?.steps) return;\n const step = this.checklistData.outbound.config.steps[index];\n if (!step) return;\n const previouslyActiveStep = this.activeStep;\n if (!this.checklistData.completedSteps)\n this.checklistData.completedSteps = [];\n if (!this.checklistData.completedSteps.includes(step.id)) {\n this.checklistData.completedSteps.push(step.id);\n \n // Notify external listeners about the step completion\n GleapEventManager.notifyEvent(\"checklist-step-completed\", {\n checklistId: this.checklistData.id,\n outboundId: this.checklistData.outbound?.id,\n stepId: step.id,\n stepIndex: index,\n step: step,\n completedSteps: this.checklistData.completedSteps,\n status: this.checklistData.status,\n data: this.checklistData\n });\n const allSteps = this.checklistData.outbound.config.steps;\n let nextActiveStep = -1;\n if (previouslyActiveStep === index) {\n for (let i = index + 1; i < allSteps.length; i++) {\n if (\n !this.checklistData.completedSteps.includes(\n allSteps[i].id\n )\n ) {\n nextActiveStep = i;\n break;\n }\n }\n this.setActiveStep(nextActiveStep);\n }\n // Preserve the state of the floating modal.\n setTimeout(() => {\n let isModalOpen = false;\n if (this.floatingEnabled) {\n const tasksModal =\n this.shadowRoot.querySelector(\".checklist-tasks\");\n isModalOpen =\n tasksModal && tasksModal.style.display === \"block\";\n }\n this.renderChecklist(this.checklistData);\n if (this.floatingEnabled && isModalOpen) {\n const tasksModal =\n this.shadowRoot.querySelector(\".checklist-tasks\");\n if (tasksModal) tasksModal.style.display = \"block\";\n }\n }, 300);\n const updateData = { checkedStep: step.id };\n if (\n allSteps.length > 0 &&\n this.checklistData.completedSteps.length >= allSteps.length\n ) {\n this.checklistData.status = \"done\";\n updateData.status = \"done\";\n \n // Notify external listeners about the checklist completion\n GleapEventManager.notifyEvent(\"checklist-completed\", {\n checklistId: this.checklistData.id,\n outboundId: this.checklistData.outbound?.id,\n completedSteps: this.checklistData.completedSteps,\n status: this.checklistData.status,\n data: this.checklistData\n });\n }\n this.updateChecklist(this.checklistData.id, updateData);\n }\n });\n }\n const actionBtn = task.querySelector(\n \".checklist-task-body-action .action-button\"\n );\n if (actionBtn) {\n actionBtn.addEventListener(\"click\", (e) => {\n e.stopPropagation();\n if (\n !this.checklistData?.outbound?.config?.steps ||\n typeof Gleap === \"undefined\"\n )\n return;\n const step = this.checklistData.outbound.config.steps[index];\n if (!step || !step.action || step.action === \"none\") return;\n try {\n if (step.action === \"BOT\") Gleap.startBot(step.botId);\n else if (step.action === \"CUSTOM_ACTION\")\n Gleap.triggerCustomAction(step.actionBody);\n else if (step.action === \"REDIRECT_URL\") {\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n Gleap.openURL(step.actionBody, !!step.actionOpenInNewTab);\n } else if (step.action === \"FEEDBACK_FLOW\")\n Gleap.startFeedbackFlow(step.formId);\n else if (step.action === \"NEWS_ARTICLE\")\n Gleap.openNewsArticle(step.articleId);\n else if (step.action === \"HELP_ARTICLE\")\n Gleap.openHelpCenterArticle(step.articleId);\n else if (step.action === \"CHECKLIST\")\n Gleap.startChecklist(step.outboundId, true, step?.sharedKey);\n } catch (gleapError) {}\n });\n }\n });\n }\n\n // --- Animation and State Management ---\n setActiveStep(index) {\n const previousActiveStep = this.activeStep;\n this.activeStep = index;\n const tasksToToggle = [];\n if (\n previousActiveStep !== -1 &&\n previousActiveStep !== this.activeStep\n ) {\n tasksToToggle.push({ index: previousActiveStep, open: false });\n }\n if (this.activeStep !== -1 && this.activeStep !== previousActiveStep) {\n tasksToToggle.push({ index: this.activeStep, open: true });\n }\n tasksToToggle.forEach(({ index, open }) => {\n this.toggleTask(index, open);\n });\n }\n\n toggleTask(index, forceOpen = null) {\n const taskElement = this.shadowRoot.querySelector(\n `.checklist-task[data-task-index=\"${index}\"]`\n );\n if (!taskElement) return;\n const header = taskElement.querySelector(\".checklist-task-header\");\n if (!header) return;\n const isOpen = taskElement.classList.contains(\"checklist-task--active\");\n const shouldOpen = forceOpen !== null ? forceOpen : !isOpen;\n if (shouldOpen && !isOpen) {\n taskElement.classList.add(\"checklist-task--active\");\n header.setAttribute(\"aria-expanded\", \"true\");\n const taskBodyInner = taskElement.querySelector(\n \".checklist-task-body-inner\"\n );\n if (taskBodyInner) {\n const height = taskBodyInner.offsetHeight;\n const taskBody = taskElement.querySelector(\".checklist-task-body\");\n if (taskBody) {\n taskBody.style.setProperty(\n \"--task-body-active-height\",\n `${height}px`\n );\n }\n }\n } else if (!shouldOpen && isOpen) {\n taskElement.classList.remove(\"checklist-task--active\");\n header.setAttribute(\"aria-expanded\", \"false\");\n }\n }\n }\n\n if (\n typeof customElements !== \"undefined\" &&\n !customElements.get(\"gleap-checklist\")\n ) {\n customElements.define(\"gleap-checklist\", GleapChecklist);\n }\n }\n};\n","import Gleap from \"./Gleap\";\n\nexport default Gleap;\n"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","GleapFeedbackButtonManager","_classCallCheck","_defineProperty","value","this","instance","feedbackButton","remove","buttonHidden","lastButtonIcon","injectedFeedbackButton","show","getInstance","updateFeedbackButtonState","GleapNotificationManager","updateContainerStyle","frameManager","GleapFrameManager","isOpened","hideWidget","setAppMode","showWidget","_this","elem","document","createElement","addEventListener","feedbackButtonPressed","body","appendChild","count","notificationBadge","querySelector","notificationHiddenClass","classList","innerText","add","updateFeedbackButtonText","injectFeedbackButton","flowConfig","GleapConfigManager","getFlowConfig","feedbackButtonPosition","FEEDBACK_BUTTON_CLASSIC","FEEDBACK_BUTTON_CLASSIC_BOTTOM","FEEDBACK_BUTTON_CLASSIC_LEFT","widgetButtonText","buttonIcon","buttonLogo","concat","loadIcon","className","setAttribute","GleapTranslationManager","isRTLLayout","innerHTML","hideButton","FEEDBACK_BUTTON_NONE","FEEDBACK_BUTTON_BOTTOM_LEFT","appMode","hideForGuests","GleapSession","isUser","calculateShadeColor","col","amt","replace","length","_col$match2","_slicedToArray","match","r","g","b","_ref","parseInt","Math","max","min","toString","rr","gg","bb","calculateContrast","hex","substr","name","color","GleapNetworkIntercepter","Date","now","loadAllResources","contentType","toLocaleLowerCase","supportedContentTypes","i","includes","requests","JSON","parse","stringify","values","externalRequests","filters","request","headers","j","payload","payloadObj","e","response","responseText","data","window","performance","resources","getEntriesByType","resource","indexOf","initiatorType","find","url","push","type","date","startTimestamp","startTime","duration","round","exp","blacklist","defaultBlacklist","filter","maxRequests","stopped","keys","keysToRemove","slice","bbRequestId","startDate","getTime","text","size","TextEncoder","encode","encodeURI","s","split","Blob","getTextContentSize","undefined","TextDecoder","_typeof","ArrayBuffer","isView","decode","payloadText","cleanupPayload","cleanupContentSize","initialized","self","interceptNetworkRequests","onFetch","params","fromEntries","entries","method","preparePayload","cleanRequests","onFetchLoad","req","status","statusText","calcRequestTime","isContentTypeSupported","then","err","onFetchFailed","onOpen","args","onSend","requestHeaders","onError","currentTarget","onLoad","target","responseType","callback","originalFetch","open","XMLHttpRequest","send","gleapSetRequestHeader","setRequestHeader","header","requestId","arguments","bind","apply","fetch","clone","blob","Promise","resolve","reject","fr","FileReader","onload","evt","result","onerror","readAsText","resizeImage","base64Str","maxWidth","maxHeight","isJPEG","img","Image","src","canvas","MAX_WIDTH","MAX_HEIGHT","width","height","getContext","drawImage","toDataURL","isMobile","test","navigator","userAgent","gleapDataParser","String","truncateString","str","num","removeSubDomain","v","parts","is2ndLevelDomain","secondLevel","join","loadFromGleapCache","cachedData","localStorage","getItem","saveToGleapCache","k","setItem","removeItem","runFunctionWhenDomIsReady","readyState","RequestStatus","ChecklistNetworkManager","Map","validationCache","clear","fetchCache","validationRequests","fetchRequests","gleapSessionInstance","session","lang","getActiveLanguage","gleapId","gleapHash","apiUrl","xhr","injectSession","onreadystatechange","responseData","error","outboundId","sharedKey","cacheKey","_createCacheKey","cachedResult","internalId","has","_getApiUrl","Error","set","_getQueryParams","requestPromise","_makeRequest","id","_this2","floor","createCoords","x","y","oppositeSideMap","left","right","bottom","top","oppositeAlignmentMap","start","end","clamp","param","placement","axis","getAxisLength","getAlignmentAxis","alignment","getOppositePlacement","side","padding","expandPaddingObject","rect","computeCoordsFromPlacement","rtl","reference","floating","sideAxis","alignmentAxis","alignLength","isVertical","commonX","commonY","commonAlign","coords","async","detectOverflow","state","options","_await$platform$isEle","platform","rects","elements","strategy","boundary","rootBoundary","elementContext","altBoundary","paddingObject","element","clippingClientRect","getClippingRect","isElement","contextElement","getDocumentElement","offsetParent","getOffsetParent","offsetScale","getScale","elementClientRect","convertOffsetParentRelativeRectToViewportRelativeRect","offset","fn","_middlewareData$offse","_middlewareData$arrow","middlewareData","diffCoords","isRTL","mainAxisMulti","crossAxisMulti","rawValue","mainAxis","crossAxis","convertValueToCoords","arrow","alignmentOffset","getNodeName","node","isNode","nodeName","toLowerCase","getWindow","_node$ownerDocument","ownerDocument","defaultView","documentElement","Node","Element","isHTMLElement","HTMLElement","isShadowRoot","ShadowRoot","isOverflowElement","overflow","overflowX","overflowY","display","isTableElement","isContainingBlock","webkit","isWebKit","css","transform","perspective","containerType","backdropFilter","some","willChange","contain","CSS","supports","isLastTraversableNode","getComputedStyle","getNodeScroll","scrollLeft","scrollTop","pageXOffset","pageYOffset","getParentNode","assignedSlot","parentNode","host","getNearestOverflowAncestor","getOverflowAncestors","list","traverseIframes","_node$ownerDocument2","scrollableAncestor","isBody","win","visualViewport","frameElement","getCssDimensions","parseFloat","hasOffset","offsetWidth","offsetHeight","shouldFallback","$","unwrapElement","domElement","getBoundingClientRect","Number","isFinite","noOffsets","getVisualOffsets","offsetLeft","offsetTop","includeScale","isFixedStrategy","clientRect","scale","visualOffsets","isFixed","floatingOffsetParent","shouldAddVisualOffsets","offsetWin","currentWin","currentIFrame","iframeScale","iframeRect","clientLeft","paddingLeft","clientTop","paddingTop","topLayerSelectors","isTopLayer","selector","matches","getWindowScrollBarX","getClientRectFromClippingAncestor","clippingAncestor","html","clientWidth","clientHeight","visualViewportBased","getViewportRect","scroll","scrollWidth","scrollHeight","direction","getDocumentRect","getInnerBoundingClientRect","hasFixedPositionAncestor","stopNode","position","getRectRelativeToOffsetParent","isOffsetParentAnElement","offsets","offsetRect","getTrueOffsetParent","polyfill","currentNode","getContainingBlock","topLayer","elementClippingAncestors","cache","el","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","ancestor","getClippingElementAncestors","_c","clippingAncestors","firstClippingAncestor","clippingRect","reduce","accRect","getElementRects","getOffsetParentFn","getDimensionsFn","getDimensions","getClientRects","Array","from","autoUpdate","update","ancestorScroll","ancestorResize","elementResize","ResizeObserver","layoutShift","IntersectionObserver","animationFrame","referenceEl","ancestors","forEach","passive","cleanupIo","onMove","timeoutId","io","root","cleanup","_io","clearTimeout","disconnect","refresh","skip","threshold","rootMargin","isFirstUpdate","handleObserve","ratio","intersectionRatio","setTimeout","observe","observeMove","frameId","reobserveFrame","resizeObserver","firstEntry","unobserve","cancelAnimationFrame","requestAnimationFrame","_resizeObserver","prevRefRect","frameLoop","nextRefRect","_resizeObserver2","removeEventListener","checkMainAxis","checkCrossAxis","limiter","detectOverflowOptions","mainAxisCoord","crossAxisCoord","maxSide","limitedCoords","_middlewareData$flip","initialPlacement","fallbackPlacements","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","flipAlignment","isBasePlacement","oppositePlacement","getExpandedPlacements","isStart","lr","rl","tb","bt","getSideList","map","getOppositeAxisPlacements","placements","overflows","overflowsData","flip","sides","mainAlignmentSide","every","_middlewareData$flip2","_overflowsData$filter","nextIndex","index","nextPlacement","reset","resetPlacement","d","sort","a","_overflowsData$map$so","acc","arrowDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","min$1","center","shouldAddOffset","centerOffset","mergedOptions","platformWithCache","config","middleware","validMiddleware","Boolean","statefulPlacement","resetCount","nextX","nextY","computePosition","checkPageFilter","currentUrl","pageFilter","pageFilterType","removeTrailingSlash","isMatchingUrl","regex","regexPattern","RegExp","generateRegex","matched","startsWith","endsWith","GleapTooltipManager","WeakMap","tooltip","hasAttribute","nextId","tooltipElem","mode","hotspotContainer","canEmbed","firstChild","insertBefore","nextSibling","hotspot","icon","animated","repositionHotspot","elementToTooltipMap","floatingUIInstance","createTooltip","elementToFloatingUIMap","filteredTooltips","getFilteredTooltips","checkForTooltips","tooltips","location","href","page","pageType","querySelectorAll","linkTooltip","sessionInstance","http","sdkKey","console","updateFilteredTooltips","nodeType","ELEMENT_NODE","checkNodeTooltip","childNodes","childNode","processNodeInsertion","_this3","_this4","time","timeout","handleResizeThrottled","updateHotspotPositions","context","_toConsumableArray","observer","MutationObserver","mutations","lastUrl","mutation","addedNodes","removedNodes","floatingUI","childList","subtree","attributes","attributeFilter","_this5","tooltipText","tooltipData","hideTimeout","arrowEl","posX","shift","assign","style","arrowPos","visibility","opacity","pointerEvents","hide","voidElements","Set","tagName","resizeListener","anchor","removeAttribute","tooltipId","getAttribute","posY","offsetX","offsetY","elementRect","range","createRange","selectNodeContents","fixedWidth","anchorRect","tooltipSize","email","userId","phone","onSessionReady","ready","onSessionReadyListener","attemp","retry","GleapEventManager","notifyEvent","useCookies","cookie","eraseGleapCookie","sendMessage","clearAllNotifications","setNotificationCount","GleapBannerManager","removeBannerUI","GleapModalManager","hideModal","isNaN","newTimeout","pow","startSession","_this$session","sessionChanged","days","expires","setTime","toUTCString","setGleapCookie","encodeURIComponent","clearCache","GleapStreamedEvent","restart","tooltipManager","destroy","load","dispatchEvent","CustomEvent","notifySessionReady","sessionCookie","nameEQ","ca","c","charAt","substring","getGleapCookie","sessionData","decodeURIComponent","validateSession","cachedSession","clearSession","userData","checkIfSessionDataNeedsUpdate","userDataKeys","userDataKey","customData","setOnSessionReady","_objectSpread","sdkVersion","SDK_VERSION","ws","userHash","checkIfSessionNeedsUpdate","dataToSend","tourId","tourData","_window","passedPageFilter","sendSessionUpdate","streamEvents","mainLoopTimeout","runEventStreamLoop","streamingEvents","errorCount","streamedEventArray","socket","OPEN","sessionDuration","GleapMetaDataManager","getSessionDuration","events","opened","handleOpenBound","handleOpen","handleErrorBound","handleError","handleMessageBound","handleMessage","handleCloseBound","handleClose","connectionTimeout","pingWS","clearInterval","close","cleanupWebSocket","connectedWebSocketGleapId","WebSocket","wsApiUrl","event","setInterval","processMessage","initWebSocket","message","_message$data","u","listOfActionsWhereIgnoreOpened","filteredActions","action","_action$actionType","actionType","Gleap","performActions","detail","eventArray","cleanupMainLoop","trackInitialEvents","startPageListener","resetErrorCountLoop","logEvent","logCurrentPage","disablePageTracking","log","eventMaxLength","parseIntWithDefault","val","def","parsed","onConfigLoaded","onConfigLoadedListener","aiTools","sendConfigUpdate","cachedConfig","applyConfig","loadConfigFromServer","setStyles","headerColor","buttonColor","backgroundColor","borderRadius","buttonX","buttonY","applyStylesFromConfig","enableWebReplays","GleapReplayRecorder","stop","enableNetworkLogs","setLoadAllResources","sendNetworkResources","networkLogPropsToIgnore","setFilters","networkLogBlacklist","setBlacklist","updateRTLSupport","enableShortcuts","notifyConfigLoaded","_regeneratorRuntime","t","n","Symbol","iterator","asyncIterator","toStringTag","define","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","arg","h","l","f","GeneratorFunction","GeneratorFunctionPrototype","p","getPrototypeOf","defineIteratorMethods","_invoke","AsyncIterator","invoke","__await","callInvokeWithMethodAndArg","done","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","displayName","isGeneratorFunction","constructor","mark","setPrototypeOf","__proto__","awrap","reverse","pop","prev","rval","handle","complete","finish","delegateYield","asyncGeneratorStep","gen","_next","_throw","info","_asyncToGenerator","documentToHTML","doctype","publicId","systemId","outerHTML","loadCSSUrlResources","basePath","remote","asyncFn","matchedData","matchedUrl","replaceAll","resourcePath","URL","fetchCSSResource","resourceData","promises","_len","_key","promise","all","reader","onloadend","readAsDataURL","fetchItemResource","isBlacklisted","warn","progressResource","replaceStyleNodes","styleSheet","cssTextContent","styleId","cloneTargetNode","ownerNode","replacementNode","head","styleNode","cssText","createTextNode","linkNode","rel","media","getTextContentFromStyleSheet","cssRules","rules","cssRuleItem","downloadAllCSSUrlResources","basePathURL","_loop","styleSheets","mediaText","baseTags","getElementsByTagName","origin","lastIndexOf","replacedStyle","styletext","stylesheet","results","prepareRemoteData","dom","imgItems","imgItemsPromises","item","downloadAllImages","handleAdoptedStyleSheets","doc","shadowNodeId","adoptedStyleSheets","shadowStyleNode","firstElementChild","extractFinalCSSState","getAnimations","animations","finalCSSState","animation","_animation$effect","keyframes","effect","getKeyframes","finalKeyframe","property","deepClone","_callee3","cloneNode","fragment","clonedHead","_context3","_ref2","_callee2","parent","shadowRoot","walkTree","webAnimations","boundingRect","resizedImage","_boundingRect","rootShadowNodeId","_context2","_ref3","_callee","nextn","nextp","innerShadowRoot","_context","nextElementSibling","_x5","_x6","_x7","HTMLCanvasElement","t0","toUpperCase","contains","checked","_x2","_x3","_x4","createDocumentFragment","_x","prepareScreenshotData","_ref4","_callee4","styleTags","linkImportElems","referenceNode","scriptElems","existingBasePath","baseElems","baseUrl","newBaseUrl","baseNode","dialogElems","bbElems","_context4","innerWidth","innerHeight","_x8","_x9","GleapScreenRecorder","rerender","permissionErrorText","mediaDevices","getDisplayMedia","isRecording","available","video","ideal","screen","frameRate","displaySurface","selfBrowserSurface","audio","displayStream","stream","audioMuted","audioAvailable","handleRecord","startAudioRecording","alert","mediaRecorder","recordingTimer","getTracks","track","getUserMedia","voiceStream","getAudioTracks","addTrack","audioErr","audioTracks","enabled","file","recordedChunks","MediaRecorder","mimeType","getSupportedMimeType","recordTime","timerLabel","remainingTime","maxRecordTime","formatTime","stopScreenRecording","ondataavailable","getVideoTracks","onended","prepareRecording","onstop","completeBlob","extension","File","previewVideoElement","createObjectURL","_i","_types","isTypeSupported","screenRecordingData","formdata","FormData","append","fileUrl","GleapFeedback","priority","formData","isSilent","excludeData","spamToken","gleapInstance","GleapCustomDataManager","getCustomData","metaData","getMetaData","consoleLog","GleapConsoleLogManager","getLogs","networkLogs","getRequests","customEventLog","getEventArray","ticketAttributes","getTicketAttributes","dataPromises","webReplay","getGlobalDataItem","isLiveSite","recordingUrlPromise","uploadScreenRecording","recordingUrl","screenRecordingUrl","screenshot","screenshotDataPromise","isLiveMode","screenshotData","snapshotPosition","feedbackData","outbound","tags","GleapTagManager","getTags","keysToExclude","keyToExclude","takeSnapshot","getData","feedback","newTab","newWindow","focus","cmp_block_ignoredomains","injectedFrame","autoWhiteListCookieManager","frameUrl","gleapFrameContainer","gleapFrame","updateFrameStyle","showFrameContainer","closeElement","surveyStyle","extendedStyle","surveyFullStyle","classicStyle","classicStyleLeft","modernStyleLeft","noButtonStyleLeft","allStyles","styleToApply","startCommunication","appHeight","setProperty","handler","urlHandler","innerContainer","escListener","widgetOpened","markerManager","showLoader","loadingClass","disableBGFade","disableBGGradient","updateUI","workThroughQueue","setGlobalDataItem","scrollX","scrollY","updateWidgetStatus","registerEscListener","isSurvey","updateNotificationBadge","runWidgetShouldOpenCallback","injectFrame","isWidgetOpen","resetRoutes","hideMarkerManager","reloadNotificationsFromCache","unregisterEscListener","queue","comReady","contentWindow","postMessage","getSession","getAiTools","overrideLanguage","getOverrideLanguage","GleapMarkerManager","success","workQueue","_this6","addMessageListener","GleapAudioManager","ping","showImage","ticketData","frameHeight","_data$data","startProductTour","GleapCustomActionManager","triggerCustomAction","shareToken","feedbackType","sendFeedback","reportedBy","trackEvent","showDrawingScreen","bannerUrl","listeners","appVersionCode","appBuildNumber","sessionStart","nameOffset","verOffset","ix","nAgt","browserName","appName","fullVersion","appVersion","majorVersion","OSName","browser","systemName","buildVersionNumber","releaseVersionNumber","devicePixelRatio","screenWidth","screenHeight","language","userLanguage","mobile","sdkType","environment","logArray","disabled","originalConsoleLog","logLevel","logMaxLength","addLog","origConsole","addLogWithArgs","GleapClickListener","protocol","preventDefault","handleGleapLink","elementId","elementClass","elemId","elemClass","elementTag","htmlPre","htmlPost","getDOMElementDescription","takeCurrentReplay","eventListeners","eventListener","eventName","customAction","customActionCallbacks","_a","__defProp","__publicField","__defNormalProp","__defProp$1","__publicField$1","__defNormalProp$1","NodeType$3","NodeType2","testableAccessors$1","testableMethods$1","untaintedBasePrototype$1","isAngularZonePresent$1","globalThis","Zone","getUntaintedPrototype$1","defaultObj","defaultPrototype","accessorNames","isUntaintedAccessors","accessor","_a2","_b","getOwnPropertyDescriptor","methodNames","isUntaintedMethods","iframeEl","untaintedObject","removeChild","untaintedAccessorCache$1","getUntaintedAccessor$1","untaintedPrototype","untaintedAccessor","untaintedMethodCache$1","getUntaintedMethod$1","untaintedMethod","index$1","n2","parentElement","textContent","other","getRootNode","selectors","mutationObserver","hostEl","isNativeShadowDom","shadowRoot2","stringifyStylesheet","s2","rules2","sheetHref","stringifiedRules","rule2","stringifyRule","isCSSImportRule","importStringified","statement","layerName","supportsText","escapeImportStatement","absolutifyURLs","ruleStringified","isCSSStyleRule","selectorText","cssStringified","fixSafariColons","Mirror","getId","getMeta","getNode","idNodeMap","getIds","nodeMetaMap","removeNodeFromMap","delete","hasNode","node2","meta","oldNode","maskInputValue","maskInputOptions","maskInputFn","actualType","repeat","ORIGINAL_ATTRIBUTE_NAME","getInputType","extractFileExtension","path","baseURL","pathname","URL_IN_CSS_REF","URL_PROTOCOL_MATCH","URL_WWW_MATCH","DATA_URI","quote1","path1","quote2","path2","path3","filePath","maybeQuote","extractOrigin","stack","part","normalizeCssString","markCssSplits","childNodes2","splits","cssTextNorm","i2","textContentNorm","bit","splitNorm","splitCssText","_id","tagNameRegex","IGNORED_NODE","genId","canvasService","canvasCtx","SRCSET_NOT_SPACES","SRCSET_COMMAS_OR_SPACES","cachedDocument","absoluteToDoc","attributeValue","trim","getHref","isSVGElement","ownerSVGElement","customHref","a2","transformAttribute","pos","collectCharacters","regEx","chars2","exec","output","descriptorsStr","inParens","c2","getAbsoluteSrcsetString","ignoreAttribute","_value","classMatchesRegex","checkAncestors","eIndex","needMaskingText","maskTextClass","maskTextSelector","closest","e2","serializeNode","mirror","mirror2","blockClass","blockSelector","needsMask","inlineStylesheet","maskTextFn","dataURLOptions","inlineImages","recordCanvas","keepIframeSrcFn","newlyAddedElement","cssCaptured","rootId","docId","getRootId","DOCUMENT_NODE","compatMode","Document","DOCUMENT_TYPE_NODE","DocumentType","needBlock","_isBlockedElement","HTMLFormElement","processedTagName","getValidTagName$1","len","attr","_cssText","sheet","selected","rr_open_mode","__context","ctx","x2","getImageData","originalGetImageData","Uint32Array","buffer","pixel","is2DCanvasBlank","rr_dataURL","quality","canvasDataURL","blankCanvas","image","imageSrc","currentSrc","priorCrossOrigin","crossOrigin","recordInlineImage","naturalWidth","naturalHeight","mediaAttributes","rr_mediaState","paused","rr_mediaCurrentTime","currentTime","rr_mediaPlaybackRate","playbackRate","rr_mediaMuted","muted","rr_mediaLoop","loop","rr_mediaVolume","volume","rr_scrollLeft","rr_scrollTop","class","rr_width","rr_height","contentDocument","rr_src","isCustomElement","customElements","isSVG","isCustom","serializeElementNode","TEXT_NODE","parentTagName","textContent2","isStyle","isScript","Text","serializeTextNode","CDATA_SECTION_NODE","CDATA","COMMENT_NODE","Comment","lowerIfExists","maybeAttr","serializeNodeWithId","skipChild","slimDOMOptions","onSerialize","onIframeLoad","iframeLoadTimeout","onStylesheetLoad","stylesheetLoadTimeout","preserveWhiteSpace","_serializedNode","sn","comment","script","as","headFavicon","headMetaDescKeywords","headMetaSocial","headMetaRobots","headMetaHttpEquiv","headMetaAuthorship","headMetaVerification","slimDOMExcluded","serializedNode","recordChild","shadowRootEl","isShadowHost","headWhitespace","bypassOptions","childN","serializedChildNode","isShadow","listener","fired","timer","blankUrl","onceIframeLoaded","iframeDoc","serializedIframeNode","link","styleSheetLoadTimeout","styleSheetLoaded","onceStylesheetLoaded","serializedLinkNode","getDefaultExportFromCjs$1","__esModule","getAugmentedNamespace$1","f2","default","a22","Reflect","construct","picocolors_browser$1","x$1","create$1","isColorSupported","bold","dim","italic","underline","inverse","hidden","strikethrough","black","red","green","yellow","blue","magenta","cyan","white","gray","bgBlack","bgRed","bgGreen","bgYellow","bgBlue","bgMagenta","bgCyan","bgWhite","createColors","picocolors_browserExports$1","require$$2$1","freeze","pico$1","terminalHighlight$1$1","CssSyntaxError$3$1","CssSyntaxError","line","column","source","plugin22","super","reason","plugin","endLine","endColumn","setMessage","captureStackTrace","showSourceCode","aside","lines","index2","number","gutter","spacing","code","cssSyntaxError$1","symbols$1","isClean","my","DEFAULT_RAW$1","after","beforeClose","beforeComment","beforeDecl","beforeOpen","beforeRule","colon","commentLeft","commentRight","emptyBody","indent","semicolon","Stringifier$2$1","builder","atrule","raws","afterName","nodes","block","between","beforeAfter","detect","raw","buf","depth","step","last","child","before","decl","string","important","own","first","root2","rawCache","walk","rawBeforeClose","rawBeforeComment","walkComments","rawBeforeDecl","walkDecls","rawBeforeOpen","rawBeforeRule","rawColon","rawEmptyBody","rawIndent","rawSemicolon","rule","ownSemicolon","stringifier$1","Stringifier$1$1","stringify$4$1","stringify_1$1","isClean$2$1","my$2$1","CssSyntaxError$2$1","Stringifier2$1","stringify$3$1","cloneNode$1","cloned","isArray","Node$4$1","defaults","addToError","postcssNode","input","insertAfter","overrides","cleanRaws","keepBetween","cloneAfter","cloneBefore","opts","rangeBy","getProxyProcessor","toProxy","markDirty","positionBy","stringRepresentation","positionInside","word","endIndex","defaultType","replaceWith","bookmark","foundSelf","result2","toJSON","_","inputs","fixed","emitInputs","inputsNextIndex","inputId","input2","proxyCache","Proxy","stringifier2","proxyOf","node$1","Node$3$1","Declaration$4$1","variable","declaration$1","nonSecure$1","nanoid","random","customAlphabet","alphabet","defaultSize","SourceMapConsumer","SourceMapConsumer$2$1","SourceMapGenerator","SourceMapGenerator$2$1","existsSync","existsSync$1","readFileSync","readFileSync$1","dirname","dirname$1$1","join$1","PreviousMap$2$1","loadAnnotation","inline","startWith","annotation","loadMap","mapFile","consumer","consumerCache","decodeInline","lastMatch","Buffer","atob","encoding","getAnnotationURL","sourceMapString","isMap","mappings","_mappings","sections","comments","loadFile","fromSourceMap","prevPath","withContent","sourcesContent","previousMap$1","SourceMapConsumer$1$1","SourceMapGenerator$1$1","fileURLToPath","fileURLToPath$1","pathToFileURL","pathToFileURL$1$1","isAbsolute","isAbsolute$1","resolve$1$1","nanoid$2","terminalHighlight$2","CssSyntaxError$1$1","PreviousMap$1$1","fromOffsetCache$1","sourceMapAvailable$1$1","pathAvailable$1$1","Input$4$1","hasBOM","mapResolve","fromOffset","lastLine","lineToIndex","prevIndex","l2","mid","sourceRoot","to","fromUrl","originalPositionFor","sourceContentFor","json","input$1","registerInput","SourceMapConsumer$3","SourceMapGenerator$3","dirname$2","relative","relative$1","resolve$2","sep","sep$1","pathToFileURL$2","Input$3$1","sourceMapAvailable$2","pathAvailable$2","mapGenerator$1","stringify2","cssString","mapOpts","originalCSS","usesFileUrls","absolute","memoizedFileURLs","memoizedPaths","memoizedURLs","addAnnotation","content","isInline","toBase64","outputFile","eol","applyPrevMaps","previous","toUrl","applySourceMap","clearAnnotation","generate","generateMap","generateString","ignoreInvalidMapping","addMapping","generated","original","isSourcesContent","setSourcesContent","isAnnotation","noSource","mapping","sourcePath","charCodeAt","cached","previousMaps","already","toFileUrl","setSourceContent","btoa","unescape","fileURL","Node$2$1","Comment$4$1","comment$1","parse$4$1","Rule$4$1","AtRule$4$1","Root$6$1","isClean$1$1","my$1$1","Declaration$3$1","Comment$3$1","Node$1$1","cleanSource$1","markDirtyUp$1","Container$7$1","Container","children","normalize","each","getIterator","indexes","condition","lastEach","cb","exist","existIndex","splice","sample","rebuild","prepend","unshift","removeAll","replaceValues","pattern","props","fast","walkAtRules","walkRules","registerParse","dependant","registerRule","registerAtRule","registerRoot","container$1","LazyResult$4$1","Processor$3$1","Container$6$1","Document$3$1","toResult","registerLazyResult","registerProcessor","document$1$1","Warning$2$1","opt","warning$1","Warning$1$1","Result$3$1","processor2","processor","messages","lastPlugin","postcssPlugin","warning2","warnings","result$1","SINGLE_QUOTE$1","DOUBLE_QUOTE$1","BACKSLASH$1","SLASH$1","NEWLINE$1","SPACE$1","FEED$1","TAB$1","CR$1","OPEN_SQUARE$1","CLOSE_SQUARE$1","OPEN_PARENTHESES$1","CLOSE_PARENTHESES$1","OPEN_CURLY$1","CLOSE_CURLY$1","SEMICOLON$1","ASTERISK$1","COLON$1","AT$1","RE_AT_END$1","RE_WORD_END$1","RE_BAD_BRACKET$1","RE_HEX_ESCAPE$1","Container$5$1","AtRule$3$1","atRule$1","LazyResult$3$1","Processor$2$1","Container$4$1","Root$5$1","ignore","root$1","list$2$1","comma","space","separators","array","current","func","inQuote","prevQuote","escape","letter","list_1$1","Container$3$1","list$1$1","Rule$3$1","sep2","rule$1","Declaration$2$1","tokenizer2$1","quote","escaped","escapePos","currentToken","valueOf","ignoreErrors","returned","unclosed","what","back","token","endOfFile","nextToken","ignoreUnclosed","controlChar","fromCharCode","lastIndex","Comment$2$1","AtRule$2$1","Root$4$1","Rule$2$1","SAFE_COMMENT_NEIGHBOR$1","empty","parser$1","spaces","createTokenizer","unnamedAtrule","init","brackets","tokenizer","getPosition","spacesAndCommentsFromEnd","spacesAndCommentsFromStart","checkMissedSemicolon","tokens","founded","doubleColon","customProperty","findLastWithPosition$1","unknownWord","firstSpaces","precheckMissedSemicolon","stringFrom","spacesFromEnd","emptyRule","unexpectedClose","endFile","unclosedBlock","freeSemicolon","bracket","unclosedBracket","clean","lastTokenType","Container$2$1","Parser2$1","Input$2$1","parse$3$1","parser2","parse_1$1","isClean$3","my$3","MapGenerator$1$1","stringify$2$1","Container$1$1","Document$2$1","Result$2$1","parse$2$1","Root$3$1","TYPE_TO_CLASS_NAME$1","PLUGIN_PROPS$1","AtRule","AtRuleExit","CommentExit","Declaration","DeclarationExit","DocumentExit","Once","OnceExit","prepare","Root","RootExit","Rule","RuleExit","NOT_VISITORS$1","CHILDREN$1","isPromise$1","getEvents$1","toStack$1","eventIndex","visitorIndex","visitors","cleanMarks$1","postcss$2$1","LazyResult$2$1","LazyResult","stringified","processed","syntax","parser","helpers","postcss","plugins","processing","runAsync","onRejected","catch","onFinally","getAsyncError","postcssVersion","prepareVisitors","version","hasListener","runOnRoot","visitTick","visitor","roots","subRoot","sync","stringifier","walkSync","visitSync","onFulfilled","visit2","registerPostcss","lazyResult$1","MapGenerator2$1","stringify$1$1","parse$1$1","Result$1$1","NoWorkResult$1$1","_processor","_css","_opts","_map","generatedCSS","generatedMap","_root","noWorkResult$1","NoWorkResult2$1","LazyResult$1$1","Document$1$1","Root$2$1","Processor$1$1","normalized","process","use","processor$1","Declaration$1$1","PreviousMap2$1","Comment$1$1","AtRule$1$1","Input$1$1","Root$1$1","Rule$1$1","fromJSON$1$1","ownInputs","inputHydrated","fromJSON_1$1","CssSyntaxError2$1","Declaration2$1","LazyResult2$1","Container2$1","Processor2$1","stringify$5","fromJSON$2","Document22","Warning2$1","Comment2$1","AtRule2$1","Result2$1","Input2$1","parse$5","list$3","Rule2$1","Root2$1","Node2$1","postcss$3","initializer","warningPrinted","creator","env","LANG","transformer","processOpts","pluginOpts","fromJSON","atRule","Processor","Warning","Result","Input","postcss_1$1","postcss$1$1","__defProp2","__publicField2","__defNormalProp2","getDefaultExportFromCjs","getAugmentedNamespace","picocolors_browser","picocolors_browserExports","require$$2","pico","terminalHighlight$1","CssSyntaxError$3","CssSyntaxError2","cssSyntaxError","symbols","DEFAULT_RAW","Stringifier$2","Stringifier$1","stringify$4","stringify_1","isClean$2","my$2","CssSyntaxError$2","Stringifier22","stringify$3","Node$4","Node$3","Declaration$4","declaration","nonSecure","SourceMapConsumer$2","SourceMapGenerator$2","dirname$1","PreviousMap$2","previousMap","SourceMapConsumer$1","SourceMapGenerator$1","pathToFileURL$1","resolve$1","terminalHighlight","CssSyntaxError$1","PreviousMap$1","fromOffsetCache","sourceMapAvailable$1","pathAvailable$1","Input$4","Input$3","sourceMapAvailable","pathAvailable","mapGenerator","Node$2","Comment$4","parse$4","Rule$4","AtRule$4","Root$6","isClean$1","my$1","Declaration$3","Comment$3","Node$1","cleanSource","markDirtyUp","Container$7","Container2","container","LazyResult$4","Processor$3","Container$6","Document$3","document$1","Warning$2","warning","Warning$1","Result$3","SINGLE_QUOTE","DOUBLE_QUOTE","BACKSLASH","SLASH","NEWLINE","SPACE","FEED","TAB","CR","OPEN_SQUARE","CLOSE_SQUARE","OPEN_PARENTHESES","CLOSE_PARENTHESES","OPEN_CURLY","CLOSE_CURLY","SEMICOLON","ASTERISK","COLON","AT","RE_AT_END","RE_WORD_END","RE_BAD_BRACKET","RE_HEX_ESCAPE","Container$5","AtRule$3","LazyResult$3","Processor$2","Container$4","Root$5","list$2","list_1","Container$3","list$1","Rule$3","Declaration$2","tokenizer22","Comment$2","AtRule$2","Root$4","Rule$2","SAFE_COMMENT_NEIGHBOR","findLastWithPosition","Container$2","Parser22","Input$2","parse$3","parse_1","MapGenerator$1","stringify$2","Container$1","Document$2","Result$2","parse$2","Root$3","TYPE_TO_CLASS_NAME","PLUGIN_PROPS","NOT_VISITORS","CHILDREN","isPromise","getEvents","toStack","cleanMarks","postcss$2","LazyResult$2","LazyResult2","lazyResult","MapGenerator22","stringify$1","parse$1","Result$1","NoWorkResult$1","noWorkResult","NoWorkResult22","LazyResult$1","Document$1","Root$2","Processor$1","Declaration$1","PreviousMap22","Comment$1","AtRule$1","Input$1","Root$1","Rule$1","fromJSON$1","fromJSON_1","CssSyntaxError22","Declaration22","LazyResult22","Container22","Processor22","Document222","Warning22","Comment22","AtRule22","Result22","Input22","Rule22","Root22","Node22","postcss_1","postcss$1","BaseRRNode","_args","childIterator","_newChild","_refChild","_node","testableAccessors","testableMethods","untaintedBasePrototype","isAngularZonePresent","getUntaintedPrototype","untaintedAccessorCache","getUntaintedAccessor","untaintedMethodCache","getUntaintedMethod","mutationObserverCtor","on","capture","DEPARTED_MIRROR_ACCESS_WARNING","_mirror","throttle","wait","leading","remaining","trailing","hookSetter","isRevoked","patch","replacement","wrapped","defineProperties","__rrweb_original__","receiver","nowTimestamp","getWindowScroll","_d","scrollingElement","getWindowHeight","getWindowWidth","closestElementOfNode","isBlocked","isIgnored","headTitleMutations","isAncestorRemoved","legacy_isTouchEvent","changedTouches","isSerializedIframe","isSerializedStylesheet","hasShadowRoot","StyleSheetMirror","styleIDMap","newId","idStyleMap","getStyle","generateId","getShadowHost","shadowHost","DOCUMENT_FRAGMENT_NODE","shadowHostInDom","rootShadowHost","getRootShadowHost","inDom","EventType","EventType2","IncrementalSource","IncrementalSource2","MouseInteractions","MouseInteractions2","PointerTypes","PointerTypes2","CanvasContext","CanvasContext2","MediaInteractions","MediaInteractions2","NodeType","isNodeInLinkedList","DoubleLinkedList","addNode","__ln","previousSibling","tail","removeNode","moveKey","parentId","MutationBuffer","processMutation","emit","frozen","locked","adds","addedIds","addList","getNextId","ns","pushAdd","parentTag","addedSet","currentN","iframeManager","addIframe","stylesheetManager","trackLinkElement","shadowDomManager","addShadowRoot","iframe","childSn","attachIframe","observeAttachShadow","attachLinkElement","mapRemoves","movedSet","isParentRemoved","removesSubTreeCache","isAncestorInSet","droppedSet","candidate","tailNode","unhandledNode","texts","genTextAreaValueMutation","attribute","diffAsStr","styleDiff","unchangedAsStr","_unchangedStyles","removes","attributeMap","movedMap","mutationCb","textarea","cn","m","oldValue","attributeName","unattachedDoc","implementation","createHTMLDocument","old","pname","newValue","getPropertyValue","newPriority","getPropertyPriority","genAdds","nodeId","isSerialized","deepDelete","n22","processRemoves","processedNodeManager","inOtherBuffer","targetId","canvasManager","unfreeze","isFrozen","lock","unlock","addsSet","_mirror2","_isParentRemoved","_isAncestorInSet","errorHandler","callbackWrapper","rest","mutationBuffers","getEventTarget","composedPath","initMutationObserver","rootEl","mutationBuffer","processMutations","attributeOldValue","characterData","characterDataOldValue","initMouseInteractionObserver","mouseInteractionCb","sampling","mouseInteraction","disableMap","handlers","currentPointerType","eventKey","pointerType","thisEventKey","Mouse","Touch","Pen","MouseDown","MouseUp","Click","clientX","clientY","getHandler","PointerEvent","TouchStart","TouchEnd","initScrollObserver","scrollCb","scrollLeftTop","INPUT_TAGS","lastInputValueMap","getNestedCSSRulePositions","childRule","hasNestedCSSRule","parentRule","CSSGroupingRule","CSSMediaRule","CSSSupportsRule","CSSConditionRule","parentStyleSheet","recurse","getIdAndStyleId","styleMirror","initAdoptedStyleSheetObserver","host2","hostId","patchTarget","originalPropertyDescriptor","_a3","sheets","adoptStyleSheets","initObservers","o2","hooks","currentWindow","mousemoveCb","viewportResizeCb","inputCb","mediaInteractionCb","styleSheetRuleCb","styleDeclarationCb","canvasMutationCb","fontCb","selectionCb","customElementCb","mousemove","viewportResize","mediaInteaction","styleSheetRule","styleDeclaration","canvasMutation","font","selection","customElement","mergeHooks","recordDOM","mousemoveHandler","callbackThreshold","mousemoveCallback","timeBaseline","positions","wrappedCb","totalOffset","timeOffset","updatePosition","DragEvent","Drag","MouseEvent","MouseMove","TouchMove","initMoveObserver","mouseInteractionHandler","scrollHandler","viewportResizeHandler","lastH","lastW","initViewportResizeObserver","inputHandler","ignoreClass","ignoreSelector","userTriggeredOnInput","eventHandler","userTriggered","isTrusted","isChecked","cbWithDedup","text2","v2","lastInputValue","propertyDescriptor","HTMLInputElement","hookProperties","HTMLSelectElement","HTMLTextAreaElement","HTMLOptionElement","initInputObserver","mediaInteractionHandler","Play","Pause","Seeked","VolumeChange","RateChange","initMediaInteractionObserver","styleSheetObserver","adoptedStyleSheetObserver","styleDeclarationObserver","fontObserver","CSSStyleSheet","insertRule","thisArg","argumentsList","addRule","styleBlock","deleteRule","replaceSync","removeRule","supportedNestedCSSRuleTypes","canMonkeyPatchNestedCSSRule","unmodifiedFunctions","typeKey","initStyleSheetObserver","ignoreCSSAttributes","CSSStyleDeclaration","removeProperty","initStyleDeclarationObserver","collectFonts","fontMap","originalFontFace","FontFace","family","descriptors","fontFace","fontSource","Uint8Array","restoreHandler","fonts","initFontObserver","selectionObserver","collapsed","updateSelection","getSelection","isCollapsed","ranges","rangeCount","getRangeAt","startContainer","startOffset","endContainer","endOffset","initSelectionObserver","customElementObserver","initCustomElementObserver","pluginHandlers","plugin3","CrossOriginIframeMirror","generateIdFn","remoteId","idToRemoteMap","remoteToIdMap","idToRemoteIdMap","getIdToRemoteIdMap","remoteIdToIdMap","getRemoteIdToIdMap","getRemoteId","getRemoteIds","ids","iframeIdToRemoteIdMap","iframeRemoteIdToIdMap","IframeManager","wrappedEmit","recordCrossOriginIframes","crossOriginIframeStyleMirror","iframes","crossOriginIframeMap","addLoadListener","loadListener","isAttachIframe","crossOriginMessageEvent","transformedEvent","transformCrossOriginEvent","isCheckout","FullSnapshot","crossOriginIframeMirror","replaceIdOnNode","crossOriginIframeRootIdMap","patchRootIdOnNode","timestamp","IncrementalSnapshot","Mutation","Meta","Load","DomContentLoaded","Plugin","Custom","replaceIds","ViewportResize","MediaInteraction","MouseInteraction","Scroll","CanvasMutation","StyleSheetRule","StyleDeclaration","replaceStyleIds","Font","Selection","AdoptedStyleSheet","styles","iframeMirror","ShadowDomManager","WeakSet","patchAttachShadow","shadowDoms","restoreHandlers","iframeElement","manager","option","sRoot","chars","lookup","i$1","canvasVarMap","saveWebGLVar","isInstanceOfWebGLObject","list2","ctor","contextMap","variableListFor$1","serializeArg","Float32Array","Float64Array","Int32Array","Uint16Array","Int16Array","Int8Array","Uint8ClampedArray","rr_type","base64","arraybuffer","bytes","DataView","byteOffset","byteLength","HTMLImageElement","ImageData","serializeArgs","supportedWebGLConstructorNames","initCanvasContextObserver","setPreserveDrawingBufferToTrue","contextType","ctxName","getNormalizedContextName","contextAttributes","preserveDrawingBuffer","patchGLPrototype","getOwnPropertyNames","recordArgs","hookHandler","setter","encodedJs","WorkerWrapper","objURL","webkitURL","worker","Worker","revokeObjectURL","CanvasManager","latestId","invokeId","rafStamps","pendingCanvasMutations","initCanvasMutationObserver","initCanvasFPSObserver","resetObservers","fps","canvasContextReset","snapshotInProgressMap","onmessage","commands","timeBetweenSnapshots","rafId","lastSnapshotTime","takeCanvasSnapshots","matchedCanvas","getCanvas","getContextAttributes","COLOR_BUFFER_BIT","bitmap","createImageBitmap","startRAFTimestamping","startPendingCanvasMutationFlusher","canvas2DReset","props2D","CanvasRenderingContext2D","initCanvas2DMutationObserver","canvasWebGL1and2Reset","WebGLRenderingContext","WebGL","WebGL2RenderingContext","WebGL2","initCanvasWebGLMutationObserver","flushPendingCanvasMutations","setLatestRAFTimestamp","_values","flushPendingCanvasMutationFor","valuesWithType","type2","StylesheetManager","adoptedStyleSheetCb","linkEl","trackedLinkElements","trackStylesheetInLinkElement","adoptedStyleSheetData","styleIds","CSSRule","r2","_linkEl","ProcessedNodeManager","thisBuffer","buffers","nodeMap","active","takeFullSnapshot$1","recording","cleanFrame","debug","record","checkoutEveryNms","checkoutEveryNth","maskAllInputs","_maskInputOptions","_slimDOMOptions","packFn","mousemoveWait","recordAfter","errorHandler2","inEmittingFrame","passEmitsToParent","month","search","tel","week","select","password","lastFullSnapshotEvent","NodeList","DOMTokenList","polyfill$1","incrementalSnapshotCount","eventProcessor","exceedCount","exceedTime","wrappedMutationEmit","wrappedScrollEmit","wrappedCanvasMutationEmit","getMirror","nodeMirror","slimDOM","snapshot","initialOffset","CustomElement","t2","addCustomEvent","tag","freezePage","takeFullSnapshot","NotStarted","Running","Stopped","customOptions","stopFunction","ContextMenu","DblClick","Focus","Blur","rrwebEvent","stringifiedData","_step","dataURIRegex","_iterator","_createForOfIteratorHelper","matchAll","ensureMaxMessageSize","bufferSize","ScreenDrawer","svgElement","minHeight","mouseDown","colorpicker","fadeOutToolbar","tool","mouseDownPen","mouseDownRect","mouseMove","mouseMovePen","mouseMoveRect","mouseUp","fadeInToolbar","mouseUpPen","mouseUpRect","appendToBuffer","getMousePosition","updateSvgPath","w","abs","startPoint","setAttributeNS","createElementNS","strokeWidthRect","appendPathToSvg","strokeWidth","pt","strPath","touches","totalX","totalY","getAveragePoint","tmpPath","pathBuffer","fadeTarget","GleapScrollStopper","supportsPassive","wheelOpt","scrollDisabled","wheelEvent","preventDefaultForScrollKeys","keyCode","showWidgetUI","formKey","dirty","dialogUI","enableScroll","screenRecorder","unregisterListeners","cleanupMousePointer","screenDrawer","dialog","captureSVG","videoPreviewContainer","dismissUI","colorPicker","borderLayer","captureEditor","dragCursor","setMouseMove","mouseMoveEventHandler","touchMoveEventHandler","dragHandle","dragStart","drag","dragEnd","bugReportingEditor","translateText","pageLeaveListener","isEscape","isEnter","dismiss","showNextStep","returnValue","registerListeners","hideWidgetUI","createEditorUI","setupMousePointer","disableScroll","setupScreenRecording","captureScreenDrawerRerender","setupColorPicker","setupToolbar","selectedColor","colorItems","colorItem","hexColor","onclick","setColor","setPenColor","currentX","currentY","initialX","initialY","toolbar","isDragging","xOffset","yOffset","_getTransformValues","matrix","DOMMatrix","m41","m42","getTransformValues","nextButton","chooseTool","toolbarItem","toolbarTools","setTool","svgClone","toolbarItems","_loop2","toggleAudio","startScreenRecording","removeLastAddedPathFromSvg","itemInactiveClass","screenRecordingTooltip","audioRecordingTooltip","recordingClass","notRecordingClass","clearPreview","captureRenderer","penTips","fill","staticTranslation","staticTranslations","vars","template","localizationOptions","htmlLang","GleapShortcutListener","shortCutListener","char","keyIdentifier","ctrlKey","startFeedbackFlowWithOptions","autostartDrawing","GleapPreFillManager","unreadCount","notificationContainer","notificationsFromCache","unreadNotificationsKey","nots","notification","createdAt","notifications","renderNotifications","updateTabBarNotificationCount","sound","clearElem","currentNewsIndex","newsNotifications","news","otherNotifications","currentIndex","currentNews","newsElem","newsContainerElem","coverImageUrl","newsImageElem","stopPropagation","openNews","newsContentElem","newsTitleElem","getName","descHTML","renderDescription","descElem","paginationElem","pageIndicator","nextBtn","conversation","openConversation","checklist","openChecklist","progress","currentStep","totalSteps","nextStepTitle","sender","profileImageUrl","openNewsArticle","_notification$data","previewText","uiOnly","classLeft","classNoButton","_this$bannerUrl","_this$bannerData","_data$data2","_data$data3","_data$data4","_data$data5","_data$data6","_data$data7","_data$data8","_data$data9","_data$data10","bannerData","format","startBot","botId","startFeedbackFlow","formId","showSurvey","surveyFormat","articleId","openHelpCenterArticle","startChecklist","checklistId","bannerContainer","gleapBFrame","injectBannerUI","_listenForMessages","modalUrl","_this$modalUrl","_data$data11","modalData","primaryColor","_postMessage","modalContainer","wrapper","modalBackdropClickListener","_this2$modalData$show","_this2$modalData","showCloseButton","frame","_injectModalUI","play","settings","Audio","playPromise","getID","getClassSelectors","getClasses","cl","kCombinations","items","getNthChild","sibling","counter","getTag","isUnique","elems","getAllSelectors","attributesToIgnore","funcs","sum","getAttributes","res","testUniqueness","getFirstUnique","getUniqueCombination","combinations","getCombinations","firstUnique","combination","getUniqueSelector","selectorTypes","excludeRegex","foundSelector","elementSelectors","ID","Class","selectorType","Tag","Classes","Attributes","NthChild","unique","_step2","_options$selectorType","_options$attributesTo","_options$excludeRegex","allSelectors","parents","currentElement","getParents","_iterator2","_allSelectors","it","ElementOverlay","overlay","background","borderColor","borderStyle","borderWidth","boxSizing","cursor","zIndex","margin","shadowContainer","attachShadow","_createClass","useShadowDOM","usingShadowDOM","setBounds","bounds","ElementPicker","overlayOptions","handleMouseMove","handleClick","tick","addToDOM","removeFromDOM","mouseX","mouseY","tickReq","stopImmediatePropagation","onClick","updateTarget","ignoreCursor","newTarget","elementFromPoint","captureCursor","elementFilter","onHover","GleapAdminHelper","picker","stopPicker","onElementPicked","startPicker","GleapAdminManager","COLLAPSE_UI_ACTIVE_CLASS","FRAME_CONTAINER_ACTIVE_CLASS","isActive","activeClass","gleapCollapseUI","toggle","injectedCollapseUI","toggleCollapseUI","_this$configData","configData","sendMessageToTourBuilder","GleapProductTours","disable","adminHelper","injectCollapseUI","setFrameHeight","gleapAdminDisabled","initAdminHelper","currentPage","click","opener","GleapTours","currentConfig","configure","animate","allowClose","overlayOpacity","smoothScroll","disableActiveInteraction","showProgress","stagePadding","stageRadius","popoverOffset","showButtons","disableButtons","overlayColor","getConfig","easeInOutQuad","elapsed","initialValue","amountOfChange","getFocusableElements","parentEls","focusableQuery","flatMap","parentEl","isParentFocusable","focusableEls","isElementVisible","bringInView","isElementInView","shouldSmoothScroll","scrollIntoView","behavior","hasScrollableParent","currentState","setState","getState","resetState","registeredListeners","listen","hook","trackActiveElement","activeStagePosition","renderOverlay","mountOverlay","stagePosition","overlaySvg","stage","windowX","windowY","svg","fillRule","clipRule","strokeLinejoin","strokeMiterlimit","stagePath","generateStageSvgPathString","createOverlaySvg","onDriverClick","pathElement","stageWidth","stageHeight","limitedRadius","normalizedRadius","highlightBoxX","highlightBoxY","highlightBoxWidth","highlightBoxHeight","highlight","attemptTime","elemObj","refactoredElement","hidePopover","existingDummy","getElementById","mountDummyElement","toElement","toStep","_toStep$disableActive","fromStep","fromElement","isFirstHighlight","isToDummyElement","isFromDummyElement","isAnimatedTour","highlightStartedHook","onHighlightStarted","highlightedHook","onHighlighted","deselectedHook","onDeselected","hasDelayedPopover","isPopoverRendered","isHalfwayThrough","popover","renderPopover","fromDefinition","toDefinition","transitionStage","transferHighlight","refreshActiveHighlight","activeHighlight","activeStep","refreshOverlay","repositionPopover","requireRefresh","resizeTimeout","trapFocus","activeElement","popoverEl","firstFocusableEl","lastFocusableEl","shiftKey","previousFocusableEl","nextFocusableEl","onKeyup","shouldPreventDefault","listenerWrapper","listener2","useCapture","title","description","closeButton","footer","footerButtons","previousButton","createPopover","_ref2$nextBtnText","nextBtnText","_ref2$prevBtnText","prevBtnText","_ref2$progressText","progressText","showButtonsConfig","showProgressConfig","showFooter","disabledButtonsConfig","popoverWrapper","customPopoverClass","popoverClass","_b2","onNextClick","onPrevClick","onCloseClick","onPopoverRender","focusableElement","getPopoverDimensions","boundingClientRect","realWidth","realHeight","calculateTopForLeftRight","elementDimensions","popoverDimensions","popoverPadding","popoverArrowDimensions","calculateLeftForTopBottom","_ref3$align","align","_ref3$side","requiredAlignment","requiredSide","topValue","isTopOptimal","bottomValue","isBottomOptimal","leftValue","isLeftOptimal","rightValue","isRightOptimal","noneOptimal","popoverRenderedSide","leftToSet","topToSet","leftValue2","rightToSet","bottomToSet","popoverArrow","popoverWidth","windowWidth","elementWidth","elementLeft","popoverHeight","windowHeight","elementTop","elementHeight","arrowSide","arrowAlignment","renderPopoverArrow","moveNext","activeIndex","steps","nextStepIndex","drive","movePrevious","previousStepIndex","handleArrowLeft","handleArrowRight","_e","_f","_g","_h","stepIndex","hasNextStep","hasPreviousStep","doneBtnText","allowsClosing","progressTextReplaced","configuredButtons","calculatedButtons","withOnDestroyStartedHook","activeOnDestroyed","onDestroyStarted","onDestroyed","destroyPopover","destroyHighlight","isActiveDummyElement","setConfig","setSteps","getActiveIndex","isFirstStep","isLastStep","getActiveStep","getActiveElement","getPreviousElement","getPreviousStep","moveTo","_defineProperties","descriptor","_toPropertyKey","toPrimitive","_toPrimitive","localStorageKey","pointerContainerId","copilotJoinedContainerId","_canPlayAudio","GleapCopilotTours","Constructor","_scrollListeners","_currentAnchor","_currentStep","_scrollDebounceTimer","productTourId","currentActiveIndex","productTourData","updatePointerPosition","protoProps","staticProps","onCompleteCallback","scrollableAncestors","getScrollableAncestors","_pointerContainer","yPosition","targetScrollPosition","scrollTo","smoothScrollToY","removeScrollListeners","pollCount","updateFinalPosition","isElementFullyVisible","targetX","targetY","containerWidthSpace","attachScrollListeners","currentAudio","pause","copilotInfoContainer","_GleapConfigManager$g","_GleapConfigManager$g2","_this$productTourData3","_this$productTourData4","_this$productTourData5","_this$productTourData6","_this$productTourData","_this$productTourData2","contrastColor","playVoice","gradient","svgMouse","infoBubble","kaiAvatar","kaiSlug","completeTour","canPlayAudio","supported","setupCopilotTour","showUnmuteModal","showAudioUnmuteModal","renderNextStep","_this$productTourData7","_this$productTourData8","_this$productTourData9","modalOverlay","modal","unmuteModalTitle","unmuteButton","unmuteModalButton","startAnywayButton","unmuteModalContinue","_this7","handleStep","gotToNextStep","_currentStep$inputTyp","proceedClickmode","storeUncompletedTour","inputType","handleInputEvent","_e$target","once","_currentStep$inputVal","inputValue","typeCharacter","wave","performClickAnimation","tempDiv","htmlToPlainText","readTime","wordCount","ceil","estimateReadTime","continueWithNoAudio","voice","elementPromise","maxAttempts","attempts","interval","waitForElement","_self$productTourData","tourType","gleapTourObj","delay","manually","validateProductTour","onComplete","comData","clearUncompletedTour","startWithConfig","unmuted","driverSteps","isClickMode","isInputMode","hasSender","videoUrl","senderHTML","firstName","driverStep","buttons","backButton","allowKeyboardControl","nextText","doneText","prevText","_config$state","onDocumentClick","popoverElement","mediaElements","performRequentialRefresh","mediaElement","playingClass","playPauseContainer","videoElement","videoContainer","clickVideo","evnt","gleapTourPopover","_evnt$target","__originalGetContext","GleapChecklist","_HTMLElement","_assertThisInitialized","_callSuper","handleChecklistUpdate","handleSessionUpdate","_networkManager","_boundFloatingLauncherClick","handleFloatingLauncherClick","_boundFloatingCloseClick","handleFloatingCloseClick","_floatingHideTimeout","_inherits","_boundHandleChecklistUpdate","_boundHandleSessionUpdate","_boundResizeHandler","handleResize","_checkSessionAndLoad","removeFloatingClickListeners","checklistData","_hasLoaded","_isSessionReady","_initialActiveSet","renderResponse","updateActiveTaskMaxHeight","loadChecklist","renderChecklist","_getGleapSessionInstance","hasChecklistId","defaultValue","translateTextWithVars","validateChecklist","_isMock","isConnected","fetchChecklist","_isInitialLoad","_this3$checklistData$","_data$outbound","completedSteps","firstIncompleteIndex","findIndex","_session$gleapId","_session$gleapHash","checkedStep","makeRequest","updateData","_this$checklistData$o3","previousCompletedSteps","dataChanged","activeStepCompleted","currentlyActiveStepIndex","_this$checklistData$o","activeStepId","_this$checklistData$o2","nextActiveStep","setActiveStep","tasks","launcher","_outbound$config","_this$checklistData","renderDoneState","progressbarEnabled","doneSteps","_outbound$config2","_outbound$config3","nextIncompleteStep","titleText","_translateWithVars","subject","subtitleText","successTitle","successMessage","circumference","PI","computedOffset","isHeader","toFixed","_outbound$sender","infoEnabled","_translate","senderHtml","progressLabel","durationLabel","isTaskDone","badge","getCheckIcon","stepTitle","stepDescription","actionButtonText","actionTitle","actionHtml","markDoneLabel","markDoneHtml","allowMarkDone","taskClasses","_outbound$config4","_outbound$config5","_outbound$config6","floatingEnabled","renderFloatingLauncher","renderInfoSection","renderProgressSection","renderTasks","addTaskEventListeners","addFloatingClickListeners","toggleTask","taskBodyInner","task","newActiveStep","markDoneBtn","_this5$checklistData","previouslyActiveStep","_this5$checklistData$","stepId","allSteps","isModalOpen","tasksModal","_this5$checklistData$2","updateChecklist","actionBtn","_this5$checklistData2","actionBody","openURL","actionOpenInNewTab","gleapError","previousActiveStep","tasksToToggle","forceOpen","taskElement","isOpen","shouldOpen","taskBody","_wrapNativeSuper","registerGleapChecklist","offlineMode","hostname","injectNotificationUI","actions","_action$data","popupType","disableInAppNotifications","showNotification","showBanner","showModal","startProductTourWithConfig","globalData","replayData","getReplayData","setTags","setUrlHandler","tools","setAiTools","updateContainerHeight","initialHeight","fixGleapHeight","checkForUncompletedTour","checkForUrlParams","urlParams","URLSearchParams","widget","conversationFlow","startConversation","feedbackFlow","surveyFlow","surveyFlowFormat","tourDelay","identifySession","updateSession","setMaxRequests","setOptions","cleanedData","formPreFill","toggleFeedbackButton","setAppVersionCode","setAppBuildNumber","setBannerUrl","setModalUrl","setTicketAttribute","unsetTicketAttribute","clearTicketAttributes","attachCustomData","setCustomData","removeCustomData","clearCustomData","playSound","showNotificationBadge","notificationInstance","setOverrideLanguage","softReInitialize","updateContact","registerCustomAction","buttonStyle","contrastButtonColor","contrastBackgroundColor","contrastHeaderColor","isDarkMode","headerDarkColor","subTextColor","backgroundColorHover","hoverHoverColor","buttonBorderRadius","containerRadius","chatRadius","formItemBorderRadius","formItemSmallBorderRadius","bottomInfoOffset","colorStyleSheet","zIndexBase","injectStyledCSS","replays","attachments","sendSilentCrashReportWithFormData","silentCrashReportSent","excludeDataCleaned","newFormData","hideBackButton","showBackButton","flow","collectionId","term","networkManager","checkStartUrl","startProductTourConfig","startURL","loadUncompletedTour","GleapActions","GLAction","urlParts","identifier","openHelpCenterCollection"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"index.js","mappings":"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","sources":["webpack://Gleap/webpack/bootstrap","webpack://Gleap/webpack/runtime/define property getters","webpack://Gleap/webpack/runtime/hasOwnProperty shorthand","webpack://Gleap/./src/GleapFeedbackButtonManager.js","webpack://Gleap/./src/UI.js","webpack://Gleap/./src/GleapNetworkIntercepter.js","webpack://Gleap/./src/GleapHelper.js","webpack://Gleap/./src/ChecklistNetworkManager.js","webpack://Gleap/./node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","webpack://Gleap/./node_modules/@floating-ui/core/dist/floating-ui.core.mjs","webpack://Gleap/./node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","webpack://Gleap/./node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","webpack://Gleap/./src/GleapPageFilter.js","webpack://Gleap/./src/GleapTooltipManager.js","webpack://Gleap/./src/GleapSession.js","webpack://Gleap/./src/GleapStreamedEvent.js","webpack://Gleap/./src/GleapConfigManager.js","webpack://Gleap/./src/ScreenCapture.js","webpack://Gleap/./src/ResourceExclusionList.js","webpack://Gleap/./src/GleapScreenRecorder.js","webpack://Gleap/./src/GleapFeedback.js","webpack://Gleap/./src/GleapFrameManager.js","webpack://Gleap/./src/GleapMetaDataManager.js","webpack://Gleap/./src/GleapConsoleLogManager.js","webpack://Gleap/./src/GleapClickListener.js","webpack://Gleap/./src/GleapCustomDataManager.js","webpack://Gleap/./src/GleapEventManager.js","webpack://Gleap/./src/GleapCustomActionManager.js","webpack://Gleap/./node_modules/@rrweb/record/dist/record.js","webpack://Gleap/./src/GleapReplayRecorder.js","webpack://Gleap/./src/ScreenDrawer.js","webpack://Gleap/./src/GleapScrollStopper.js","webpack://Gleap/./src/GleapMarkerManager.js","webpack://Gleap/./src/GleapTranslationManager.js","webpack://Gleap/./src/GleapShortcutListener.js","webpack://Gleap/./src/GleapPreFillManager.js","webpack://Gleap/./src/GleapNotificationManager.js","webpack://Gleap/./src/GleapBannerManager.js","webpack://Gleap/./src/GleapModalManager.js","webpack://Gleap/./src/GleapAudioManager.js","webpack://Gleap/./src/GleapTagManager.js","webpack://Gleap/./src/unique-selector/src/getID.js","webpack://Gleap/./src/unique-selector/src/getClasses.js","webpack://Gleap/./src/unique-selector/src/getCombinations.js","webpack://Gleap/./src/unique-selector/src/isElement.js","webpack://Gleap/./src/unique-selector/src/getNthChild.js","webpack://Gleap/./src/unique-selector/src/getTag.js","webpack://Gleap/./src/unique-selector/src/isUnique.js","webpack://Gleap/./src/unique-selector/src/unique-selector.js","webpack://Gleap/./src/unique-selector/src/getAttributes.js","webpack://Gleap/./src/unique-selector/src/getParents.js","webpack://Gleap/./src/ElementPicker.js","webpack://Gleap/./src/GleapAdminHelper.js","webpack://Gleap/./src/GleapAdminManager.js","webpack://Gleap/./src/GleapTours.js","webpack://Gleap/./src/GleapCopilotTours.js","webpack://Gleap/./src/GleapProductTours.js","webpack://Gleap/./src/Gleap.js","webpack://Gleap/./src/GleapChecklist.js","webpack://Gleap/./src/index.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","import {\n GleapFrameManager,\n GleapConfigManager,\n GleapNotificationManager,\n GleapTranslationManager,\n GleapSession,\n} from \"./Gleap\";\nimport { loadIcon } from \"./UI\";\n\nexport default class GleapFeedbackButtonManager {\n feedbackButton = null;\n injectedFeedbackButton = false;\n buttonHidden = null;\n lastButtonIcon = null;\n\n // Feedback button types\n static FEEDBACK_BUTTON_BOTTOM_RIGHT = \"BOTTOM_RIGHT\";\n static FEEDBACK_BUTTON_BOTTOM_LEFT = \"BOTTOM_LEFT\";\n static FEEDBACK_BUTTON_CLASSIC = \"BUTTON_CLASSIC\";\n static FEEDBACK_BUTTON_CLASSIC_LEFT = \"BUTTON_CLASSIC_LEFT\";\n static FEEDBACK_BUTTON_CLASSIC_BOTTOM = \"BUTTON_CLASSIC_BOTTOM\";\n static FEEDBACK_BUTTON_NONE = \"BUTTON_NONE\";\n\n // GleapFeedbackButtonManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapFeedbackButtonManager();\n }\n return this.instance;\n }\n\n destroy() {\n if (this.feedbackButton) {\n this.feedbackButton.remove();\n this.feedbackButton = null;\n }\n\n this.buttonHidden = null;\n this.lastButtonIcon = null;\n this.injectedFeedbackButton = false;\n this.instance = null;\n }\n\n /**\n * Toggles the feedback button visibility.\n * @param {*} show\n * @returns\n */\n toggleFeedbackButton(show) {\n this.buttonHidden = !show;\n\n GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n GleapNotificationManager.getInstance().updateContainerStyle();\n }\n\n feedbackButtonPressed() {\n var frameManager = GleapFrameManager.getInstance();\n if (frameManager.isOpened()) {\n frameManager.hideWidget();\n } else {\n frameManager.setAppMode(\"widget\");\n frameManager.showWidget();\n }\n }\n\n /**\n * Injects the feedback button into the current DOM.\n */\n injectFeedbackButton() {\n if (this.injectedFeedbackButton) {\n return;\n }\n this.injectedFeedbackButton = true;\n\n var elem = document.createElement(\"div\");\n elem.addEventListener(\"click\", () => {\n this.feedbackButtonPressed();\n });\n document.body.appendChild(elem);\n this.feedbackButton = elem;\n\n this.updateFeedbackButtonState();\n }\n\n updateNotificationBadge(count) {\n const notificationBadge = document.querySelector(\".bb-notification-bubble\");\n if (!notificationBadge) {\n return;\n }\n\n const notificationHiddenClass = \"bb-notification-bubble--hidden\";\n if (count > 0 && !GleapFrameManager.getInstance().isOpened()) {\n notificationBadge.classList.remove(notificationHiddenClass);\n notificationBadge.innerText = count;\n } else {\n notificationBadge.classList.add(notificationHiddenClass);\n }\n }\n\n refresh() {\n const feedbackButton = document.querySelector(\".bb-feedback-button\");\n if (feedbackButton) {\n this.updateFeedbackButtonText();\n this.updateFeedbackButtonState();\n } else {\n this.injectedFeedbackButton = false;\n this.feedbackButton = null;\n this.buttonHidden = null;\n this.lastButtonIcon = null;\n this.injectFeedbackButton();\n }\n }\n\n updateFeedbackButtonText() {\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n\n if (\n !(\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT\n )\n ) {\n return;\n }\n\n const feedbackButton = document.querySelector(\n \".bb-feedback-button-classic\"\n );\n if (!feedbackButton) {\n return;\n }\n\n feedbackButton.innerText = flowConfig.widgetButtonText;\n }\n\n /**\n * Updates the feedback button state\n * @returns\n */\n updateFeedbackButtonState() {\n if (this.feedbackButton === null) {\n return;\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n\n var buttonIcon = \"\";\n if (flowConfig.buttonLogo) {\n buttonIcon = `\"Feedback`;\n } else {\n buttonIcon = loadIcon(\"button\", \"#fff\");\n }\n\n this.feedbackButton.className = \"bb-feedback-button gleap-font gl-block\";\n this.feedbackButton.setAttribute(\n \"dir\",\n GleapTranslationManager.getInstance().isRTLLayout ? \"rtl\" : \"ltr\"\n );\n\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT\n ) {\n this.feedbackButton.classList.add(\n \"bb-feedback-button--classic-button-style\"\n );\n\n this.feedbackButton.innerHTML = `
${flowConfig.widgetButtonText}
`;\n } else {\n if (buttonIcon !== this.lastButtonIcon) {\n this.feedbackButton.innerHTML = `
${buttonIcon}${loadIcon(\n \"arrowdown\",\n \"#fff\"\n )}
`;\n }\n }\n\n // Prevent dom update if not needed.\n this.lastButtonIcon = buttonIcon;\n\n var hideButton = false;\n if (GleapFeedbackButtonManager.getInstance().buttonHidden === null) {\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_NONE\n ) {\n hideButton = true;\n }\n } else {\n if (GleapFeedbackButtonManager.getInstance().buttonHidden) {\n hideButton = true;\n }\n }\n if (hideButton) {\n this.feedbackButton.classList.add(\"bb-feedback-button--disabled\");\n }\n\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_BOTTOM_LEFT\n ) {\n this.feedbackButton.classList.add(\"bb-feedback-button--bottomleft\");\n }\n\n if (GleapFrameManager.getInstance().isOpened()) {\n this.feedbackButton.classList.add(\"bb-feedback-button--open\");\n }\n\n const appMode = GleapFrameManager.getInstance().appMode;\n if (\n appMode === \"survey\" ||\n appMode === \"survey_full\" ||\n appMode === \"survey_web\"\n ) {\n this.feedbackButton.classList.add(\"bb-feedback-button--survey\");\n }\n\n if (\n flowConfig.hideForGuests === true &&\n !GleapSession.getInstance().isUser()\n ) {\n this.feedbackButton.classList.add(\"bb-feedback-button--hidden\");\n }\n }\n}\n","import GleapFeedbackButtonManager from \"./GleapFeedbackButtonManager\";\n\nconst calculateShadeColor = function (col, amt) {\n col = col.replace(/^#/, \"\");\n if (col.length === 3)\n col = col[0] + col[0] + col[1] + col[1] + col[2] + col[2];\n\n let [r, g, b] = col.match(/.{2}/g);\n [r, g, b] = [\n parseInt(r, 16) + amt,\n parseInt(g, 16) + amt,\n parseInt(b, 16) + amt,\n ];\n\n r = Math.max(Math.min(255, r), 0).toString(16);\n g = Math.max(Math.min(255, g), 0).toString(16);\n b = Math.max(Math.min(255, b), 0).toString(16);\n\n const rr = (r.length < 2 ? \"0\" : \"\") + r;\n const gg = (g.length < 2 ? \"0\" : \"\") + g;\n const bb = (b.length < 2 ? \"0\" : \"\") + b;\n\n return `#${rr}${gg}${bb}`;\n};\n\nexport const calculateContrast = (hex) => {\n var r = parseInt(hex.substr(1, 2), 16),\n g = parseInt(hex.substr(3, 2), 16),\n b = parseInt(hex.substr(5, 2), 16),\n yiq = (r * 299 + g * 587 + b * 114) / 1000;\n return yiq >= 160 ? \"#000000\" : \"#ffffff\";\n};\n\nexport const widgetMaxHeight = 700;\n\nexport const injectStyledCSS = (\n primaryColor,\n headerColor,\n buttonColor,\n borderRadius,\n backgroundColor,\n buttonX,\n buttonY,\n buttonStyle\n) => {\n const contrastColor = calculateContrast(primaryColor);\n const contrastButtonColor = calculateContrast(buttonColor);\n const contrastBackgroundColor = calculateContrast(backgroundColor);\n const contrastHeaderColor = calculateContrast(headerColor);\n const isDarkMode = contrastBackgroundColor === \"#ffffff\";\n const headerDarkColor = calculateShadeColor(\n headerColor,\n contrastHeaderColor === \"#ffffff\" ? -35 : -15\n );\n const subTextColor = isDarkMode\n ? calculateShadeColor(backgroundColor, 100)\n : calculateShadeColor(backgroundColor, -120);\n const backgroundColorHover = isDarkMode\n ? calculateShadeColor(backgroundColor, 30)\n : calculateShadeColor(backgroundColor, -12);\n const hoverHoverColor = isDarkMode\n ? calculateShadeColor(backgroundColor, 80)\n : calculateShadeColor(backgroundColor, -30);\n\n var borderRadius = parseInt(borderRadius, 10);\n const buttonBorderRadius = Math.round(borderRadius * 1.05);\n const containerRadius = Math.round(borderRadius * 0.8);\n const chatRadius = Math.round(borderRadius * 0.6);\n const formItemBorderRadius = Math.round(borderRadius * 0.4);\n const formItemSmallBorderRadius = Math.round(borderRadius * 0.25);\n const zIndexBase = 2147483600;\n\n var bottomInfoOffset = 57 + buttonY;\n if (\n buttonStyle === GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM\n ) {\n bottomInfoOffset = buttonY + 15;\n } else if (buttonStyle && buttonStyle.includes(\"CLASSIC\")) {\n bottomInfoOffset = buttonY;\n } else if (buttonStyle === GleapFeedbackButtonManager.FEEDBACK_BUTTON_NONE) {\n bottomInfoOffset = buttonY;\n }\n\n const colorStyleSheet = `\n .gleap-font, .gleap-font * {\n font-style: normal;\n font-variant-caps: normal;\n font-variant-ligatures: normal;\n font-variant-numeric: normal;\n font-variant-east-asian: normal;\n font-weight: normal;\n font-stretch: normal;\n font-size: 100%;\n line-height: 1;\n font-family: system-ui, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n }\n .gleap-input-highlight {\n box-shadow: 0 0 0 3px ${primaryColor} !important;\n }\n .gleap-frame-container {\n right: ${buttonX}px;\n bottom: ${61 + buttonY}px;\n width: calc(100% - 40px);\n max-width: 410px;\n position: fixed;\n z-index: ${zIndexBase + 31};\n visibility: visible;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.16);\n border-radius: ${containerRadius}px;\n overflow: hidden;\n animation-duration: .3s;\n animation-fill-mode: both;\n animation-name: gleapFadeInUp;\n user-select: none;\n pointer-events: none;\n transition: max-width 0.3s ease-out;\n }\n\n .gleap-admin-highlight {\n box-shadow: 0px 0px 0px 4px red;\n }\n\n :root {\n --gleap-margin-top: 50px;\n }\n\n .gleap-tooltip-anchor {\n position: relative;\n display: inline-block;\n float: left;\n max-width: 0px;\n width: 17px;\n }\n\n .gleap-tooltip-hotspot {\n position: absolute;\n display: block;\n width: 17px;\n height: 17px;\n cursor: pointer;\n top: 0px;\n left: 0px;\n }\n\n @keyframes gleap-pulse {\n 0% {\n transform: scale(0);\n opacity: 0.25;\n }\n 45% {\n transform: scale(2.5);\n opacity: 0;\n }\n 100% {\n transform: scale(0);\n opacity: 0;\n }\n }\n\n .gleap-tooltip-hotspot-animation {\n position: absolute;\n border-radius: 17px;\n opacity: 0.25;\n display: block;\n width: 17px;\n height: 17px;\n cursor: pointer;\n top: 0px;\n left: 0px;\n animation: gleap-pulse 5s infinite;\n }\n\n .gleap-tooltip-hotspot svg {\n width: 17px;\n height: 17px;\n object-fit: contain;\n display: block;\n }\n\n .gleap-tooltip-inner {\n position: relative;\n overflow: visible;\n font-size: 14px;\n font-weight: normal;\n color: #000;\n line-height: 1.3;\n }\n\n .gleap-tooltip {\n position: absolute;\n background-color: #fff;\n color: #000;\n font-size: 15px;\n line-height: 18px;\n padding: 16px;\n padding-top: 8px;\n padding-bottom: 8px;\n border-radius: 4px;\n max-width: min(350px, 80vw);\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n opacity: 0;\n visibility: hidden;\n transition: opacity 0.2s, visibility 0.2s;\n z-index: ${zIndexBase + 100};\n }\n\n .gleap-tooltip a {\n color: ${primaryColor};\n text-decoration: underline;\n display: inline !important;\n margin: 0px !important;\n padding: 0px !important;\n word-break: break-word;\n }\n\n .gleap-tooltip ul {\n padding-left: 16px;\n }\n\n .gleap-tooltip b {\n font-weight: 600;\n }\n\n .gleap-tooltip h2 {\n font-size: 18px;\n line-height: 20px;\n font-weight: 600;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip h3 {\n font-size: 16px;\n line-height: 18px;\n font-weight: 600;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip p {\n padding: 0px;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip img {\n max-width: 100%;\n max-height: 300px;\n width: 100%;\n height: auto;\n object-fit: cover;\n margin-top: 8px;\n margin-bottom: 8px;\n border-radius: 4px;\n }\n\n .gleap-tooltip iframe,\n .gleap-tooltip video {\n max-width: 100%;\n width: 100%;\n height: auto;\n min-height: 200px;\n display: block;\n border: none;\n outline: none;\n padding: 0px;\n margin-top: 8px;\n margin-bottom: 8px;\n border-radius: 4px;\n }\n\n .gleap-tooltip-arrow {\n position: absolute;\n width: 20px;\n height: 20px;\n }\n\n .gleap-tooltip-arrow svg {\n width: 20px;\n height: 20px;\n object-fit: contain;\n }\n\n .gleap-b-frame {\n width: 100%;\n height: 100%;\n border: none;\n pointer-events: auto;\n padding: 0px;\n margin: 0px;\n }\n\n .gleap-b-shown {\n transition: margin 0.3s ease-out;\n margin-top: var(--gleap-margin-top);\n position: relative;\n z-index: 10000;\n }\n\n .gleap-b-f {\n margin-top: 0px;\n }\n\n .gleap-b {\n display: none;\n position: absolute;\n top: calc(-1 * var(--gleap-margin-top));\n left: 0px;\n width: 100vw;\n height: var(--gleap-margin-top);\n z-index: ${zIndexBase + 99};\n }\n\n @keyframes gleapSlideIn {\n from {\n top: calc(-1 * var(--gleap-margin-top));\n }\n to {\n top: 10px;\n }\n }\n\n .gleap-b-f .gleap-b {\n position: fixed;\n top: 10px;\n animation: gleapSlideIn .25s ease-out forwards;\n max-width: 800px;\n width: calc(100% - 20px);\n left: 50%;\n z-index: ${zIndexBase + 99};\n transform: translateX(-50%);\n border-radius: ${formItemBorderRadius}px;\n overflow: hidden;\n box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.15), 0px 5px 5px rgba(0, 0, 0, 0.05);\n }\n\n .gleap-b-shown .gleap-b {\n display: block;\n }\n\n .gleap-image-view {\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n z-index: ${zIndexBase + 99};\n background-color: ${contrastBackgroundColor}cc;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .gleap-image-view-image {\n width: 90%;\n height: auto;\n max-width: 90%;\n max-height: 90%;\n object-fit: contain;\n }\n\n .gleap-image-view-close {\n position: fixed;\n top: 20px;\n right: 20px;\n width: 32px;\n height: 32px;\n opacity: 0.8;\n z-index: ${zIndexBase + 140};\n box-shadow: 0px 5px 18px rgba(0, 0, 0, 0.16);\n cursor: pointer;\n }\n\n .gleap-image-view-close:hover {\n opacity: 1;\n }\n\n .gleap-image-view-close svg path {\n fill: ${backgroundColor};\n }\n\n [dir=rtl].gleap-frame-container {\n right: auto;\n left: ${buttonX}px;\n bottom: ${61 + buttonY}px;\n }\n\n .gleap-frame-container--loading iframe {\n opacity: 0;\n }\n\n .gleap-frame-container--loading::before {\n content: \" \";\n position: fixed;\n top: 0px;\n left: 0px;\n right: 0px;\n height: 100%;\n max-height: 380px;\n background: linear-gradient(\n 130deg,\n ${headerDarkColor} 0%,\n ${headerColor} 100%\n );\n }\n \n .gleap-frame-container--loading::after {\n content: \" \";\n position: fixed;\n top: 0px;\n left: 0px;\n right: 0px;\n height: 100%;\n height: 100%;\n max-height: 380px;\n background: linear-gradient(\n 180deg,\n transparent 60%,\n ${backgroundColor}1A 70%,\n ${backgroundColor} 100%\n );\n }\n\n .gleap-frame-container--loading-nogradient::before {\n max-height: 340px;\n background: ${headerColor} !important;\n }\n\n .gleap-frame-container--loading-nofade::after {\n display: none !important;\n }\n\n .gleap-frame-container--survey {\n bottom: ${buttonY}px !important;\n }\n\n .gleap-frame-container--extended {\n max-width: 690px !important;\n }\n\n .gleap-frame-container--survey-full {\n position: fixed;\n top: 0 !important;\n left: 0 !important;\n bottom: 0 !important;\n right: 0 !important;\n width: 100vw !important;\n max-width: 100vw !important;\n height: 100vh;\n height: 100dvh !important;\n background-color: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(6px);\n display: flex !important;\n justify-content: center !important;\n align-items: center !important;\n max-height: 100vh;\n max-height: 100dvh !important;\n border-radius: 0 !important;\n animation-name: none !important;\n }\n\n .gleap-frame-container--survey-full .gleap-frame-container-inner {\n max-width: 640px !important;\n width: calc(100% - 24px);\n border-radius: ${containerRadius}px;\n overflow: hidden;\n }\n\n .gleap-frame-container--classic {\n right: ${buttonX}px;\n bottom: ${buttonY}px;\n }\n\n [dir=rtl].gleap-frame-container--classic {\n right: auto;\n left: ${buttonX}px;\n bottom: ${buttonY}px;\n }\n\n .gleap-frame-container--no-button {\n bottom: ${buttonY}px;\n }\n\n [dir=rtl].gleap-frame-container--classic-left {\n bottom: ${buttonY}px;\n }\n\n .gleap-frame-container--classic-left {\n right: auto;\n left: ${buttonX}px;\n bottom: ${buttonY}px;\n }\n\n [dir=rtl].gleap-frame-container--classic-left {\n left: auto;\n right: ${buttonX}px;\n bottom: ${buttonY}px;\n }\n\n .gleap-frame-container--modern-left {\n right: auto;\n left: ${buttonX}px;\n bottom: ${61 + buttonY}px;\n }\n\n [dir=rtl].gleap-frame-container--modern-left {\n left: auto;\n right: ${buttonX}px;\n bottom: ${61 + buttonY}px;\n }\n\n .gleap-frame-container--animate {\n pointer-events: auto !important;\n }\n\n @keyframes gleapFadeInUp {\n from {\n opacity: 0;\n transform: translate3d(0, 100%, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n\n @keyframes gleapFadeInUpMobile {\n from {\n opacity: 0;\n transform: translate3d(0, 10%, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n\n .gleap-notification-container {\n position: fixed;\n bottom: ${bottomInfoOffset}px;\n right: ${buttonX}px;\n z-index: ${zIndexBase + 30};\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n width: 100%;\n max-width: min(340px, 80vw);\n }\n\n .gleap-notification-container--left {\n left: ${4 + buttonX}px;\n right: initial !important;\n }\n\n [dir=rtl].gleap-notification-container {\n left: ${4 + buttonX}px;\n right: initial !important;\n }\n\n [dir=rtl].gleap-notification-container--left {\n left: initial !important;\n right: ${buttonX}px !important;\n align-items: flex-start !important;\n }\n\n .gleap-notification-container--no-button {\n bottom: ${buttonY}px;\n }\n\n .gleap-notification-item {\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n\n .gleap-notification-close {\n border-radius: 100%;\n width: 28px;\n height: 28px;\n background-color: ${subTextColor};\n display: flex;\n justify-content: center;\n align-items: center;\n margin-bottom: 8px;\n cursor: pointer;\n visibility: hidden;\n pointer-events: none;\n }\n\n .gleap-notification-container:hover .gleap-notification-close {\n visibility: visible;\n pointer-events: auto;\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-notification-close {\n visibility: visible;\n pointer-events: auto;\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n }\n\n .gleap-notification-close svg {\n width: 45%;\n height: 45%;\n object-fit: contain;\n fill: ${backgroundColor};\n }\n\n .gleap-notification-item-checklist-container {\n display: flex;\n animation: fadeIn;\n animation-duration: .45s;\n background-color: ${backgroundColor};\n border-radius: ${subTextColor};\n box-sizing: border-box;\n cursor: pointer;\n flex-direction: column;\n overflow: hidden;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ${chatRadius}px;\n margin-bottom: 12px;\n }\n\n .gleap-notification-item-checklist-content {\n align-items: flex-start;\n display: flex;\n flex-direction: column;\n padding: 15px;\n width: 100%;\n width: min(310px, 70vw);\n max-width: min(310px, 70vw);\n }\n\n .gleap-notification-item-checklist-content-title {\n color: ${contrastBackgroundColor};\n font-size: 15px;\n font-weight: 500;\n line-height: 21px;\n margin-bottom: 10px;\n max-width: 100%;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .gleap-notification-item-checklist-content-progress {\n width: 100%;\n height: 8px;\n border-radius: 8px;\n background-color: ${backgroundColorHover};\n }\n\n .gleap-notification-item-checklist-content-progress-inner {\n height: 100%;\n border-radius: 8px;\n background-color: ${primaryColor};\n }\n\n .gleap-notification-item-checklist-content-next {\n color: ${subTextColor};\n font-size: 15px;\n font-weight: normal;\n line-height: 21px;\n margin-top: 10px;\n max-width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: flex;\n align-items: center;\n }\n\n .gleap-notification-item-checklist-content-next svg {\n height: 18px;\n margin-right: 5px;\n width: auto;\n }\n\n .gleap-notification-item-checklist-content-next b {\n font-size: 15px;\n font-weight: normal;\n color: ${contrastBackgroundColor};\n }\n\n .gleap-notification-item-news {\n width: 100%;\n }\n\n .gleap-news-pagination {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 10px;\n width: 100%;\n }\n\n .gleap-news-page-indicator {\n font-size: 12px;\n color: ${subTextColor};\n }\n\n .gleap-news-next-button {\n background-color: ${primaryColor};\n color: ${contrastColor};\n border-radius: ${formItemSmallBorderRadius}px;\n box-sizing: border-box;\n padding: 5px 10px;\n font-size: 14px;\n font-weight: bold;\n line-height: 21px;\n border: none;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: none !important;\n outline: none !important;^\n }\n\n .gleap-notification-item-news-content {\n align-items: flex-start;\n display: flex;\n flex-direction: column;\n padding: 15px;\n }\n\n .gleap-notification-item-news-preview {\n color: ${subTextColor};\n font-size: 14px;\n line-height: 21px;\n font-weight: 400;\n overflow-wrap: break-word;\n word-break: break-word;\n display: block;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .gleap-notification-item-news-sender {\n display: flex;\n align-items: center;\n color: ${subTextColor};\n font-size: 15px;\n line-height: 21px;\n font-weight: 400;\n }\n \n .gleap-notification-item-news-content-title {\n color: ${contrastBackgroundColor};\n font-size: 15px;\n font-weight: 500;\n line-height: 21px;\n margin-bottom: 6px;\n max-width: 100%;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n cursor: pointer;\n }\n\n .gleap-notification-item-news-sender img {\n border-radius: 100%;\n height: 20px;\n margin-right: 8px;\n object-fit: cover;\n width: 20px;\n }\n\n [dir=rtl] .gleap-notification-item-news-sender img {\n margin-left: 8px;\n margin-right: 0px !important;\n }\n\n .gleap-notification-item-news-container {\n display: flex;\n animation: fadeIn;\n animation-duration: .45s;\n background-color: ${backgroundColor};\n border-radius: ${subTextColor};\n box-sizing: border-box;\n flex-direction: column;\n overflow: hidden;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ${chatRadius}px;\n margin-bottom: 12px;\n }\n\n .gleap-notification-item-news-image {\n background-color: ${subTextColor};\n height: 170px;\n max-height: 170px;\n object-fit: cover;\n width: 100%;\n cursor: pointer;\n }\n \n .gleap-notification-item-news-content-title:hover {\n color: ${primaryColor};\n }\n\n .gleap-notification-item {\n display: flex;\n align-items: flex-end;\n cursor: pointer;\n }\n\n .gleap-notification-item img {\n width: 32px;\n height: 32px;\n min-width: 32px;\n border-radius: 100%;\n object-fit: cover;\n margin-right: 8px;\n margin-bottom: 12px;\n cursor: pointer;\n }\n\n [dir=rtl] .gleap-notification-item img {\n margin-left: 8px;\n margin-right: 0px !important;\n }\n\n .gleap-notification-item-container {\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ${chatRadius}px;\n border-bottom-left-radius: 0px;\n padding: 20px;\n background-color: ${backgroundColor};\n margin-bottom: 12px;\n cursor: pointer;\n font-size: 15px;\n line-height: 21px;\n color: ${contrastBackgroundColor};\n position: relative;\n }\n\n .gleap-notification-item-container::after {\n content: \" \";\n position: absolute;\n bottom: 0px;\n width: 0px;\n height: 0px;\n left: -6px;\n border-style: solid;\n border-width: 0px 0px 10px 6px;\n border-color: transparent transparent ${backgroundColor};\n }\n\n .gleap-notification-item-sender {\n color: ${subTextColor};\n line-height: 20px;\n }\n\n .gleap-notification-item-content {\n line-height: 20px;\n color: ${contrastBackgroundColor};\n margin-top: 4px;\n min-width: min(200px, 50vw);\n word-wrap: break-word;\n word-break: break-word;\n }\n\n .gleap-frame-container-inner {\n position: relative;\n width: 100%;\n height: calc(100vh - ${84 + buttonY}px);\n max-height: ${widgetMaxHeight}px;\n }\n\n .gleap-frame-container--survey .gleap-frame-container-inner {\n height: calc(100vh - 40px);\n }\n \n .gleap-frame-container-inner:before {\n content: \" \";\n position: absolute;\n width: 100%;\n height: calc(100% - ${containerRadius}px);\n top: ${containerRadius}px;\n background-color: ${backgroundColor};\n z-index: -1;\n }\n \n .gleap-frame-container iframe {\n height: 100% !important;\n width: 100% !important;\n max-width: 100% !important;\n display: block !important;\n pointer-events: auto !important;\n }\n \n .gleap-frame-container--hidden {\n display: none !important;\n pointer-events: none;\n animation: none !important;\n }\n \n .bb-feedback-button {\n margin: 0px;\n position: fixed;\n bottom: ${buttonY}px;\n right: ${buttonX}px;\n border-radius: 30px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n background-color: transparent;\n color: #000000;\n z-index: ${zIndexBase + 30};\n box-sizing: border-box;\n display: flex;\n align-items: center;\n padding: 0px;\n }\n\n [dir=rtl].bb-feedback-button {\n bottom: ${buttonY}px;\n right: auto;\n left: ${buttonX}px;\n }\n \n .bb-feedback-button--bottomleft {\n bottom: ${buttonY}px;\n right: auto;\n left: ${buttonX}px;\n }\n\n [dir=rtl].bb-feedback-button--bottomleft {\n bottom: ${buttonY}px;\n right: ${buttonX}px;\n left: auto;\n }\n \n .bb-feedback-button--disabled {\n display: none !important;\n }\n\n .bb-feedback-button--hidden {\n display: none !important;\n }\n \n .bb-feedback-button-text {\n padding: 8px 12px;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n background-color: #fff;\n border-radius: 8px;\n box-shadow: 0px 0px 14px 0px rgba(0, 0, 0, 0.15);\n position: relative;\n z-index: 99;\n }\n \n .bb-feedback-button-text:before {\n content: \"\";\n position: absolute;\n box-shadow: rgba(0, 0, 0, 0.04) 6px 6px 5px;\n transform: rotate(315deg);\n bottom: 16px;\n right: -4px;\n border-width: 10px;\n border-style: solid;\n border-color: transparent #fff #fff transparent;\n }\n \n .bb-feedback-button--bottomleft .bb-feedback-button-text:before {\n display: none;\n }\n \n .bb-feedback-button-text:after {\n content: \"\";\n position: absolute;\n bottom: 12px;\n right: 0px;\n background-color: #fff;\n width: 5px;\n height: 30px;\n }\n \n .bb-feedback-button-text-title {\n font-family: sans-serif;\n font-size: 14px;\n color: #666;\n line-height: 18px;\n max-width: 220px;\n }\n \n .bb-feedback-button-text-title b {\n color: #000000;\n font-weight: 600;\n }\n\n .bb-notification-bubble {\n position: absolute;\n top: -5px;\n right: -5px;\n min-width: 12px;\n padding: 0px 4px;\n height: 20px;\n min-width: 20px;\n border-radius: 20px;\n background-color: red;\n color: #fff;\n font-size: 11px;\n font-family: sans-serif;\n text-align: center;\n line-height: 20px;\n }\n\n .bb-notification-bubble--hidden {\n display: none;\n }\n \n .bb-feedback-button-icon {\n width: 48px;\n height: 48px;\n border-radius: 48px;\n background-color: #485bff;\n transition: box-shadow, transform 0.2s ease-in-out;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n position: relative;\n }\n \n .bb-feedback-button-classic {\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n top: 50%;\n right: 0px;\n position: fixed;\n transform: rotate(-90deg) translate(50%, -50%);\n transform-origin: 100% 50%;\n padding: 9px 20px;\n text-align: center;\n background-color: #485bff;\n border-top-left-radius: 8px;\n border-top-right-radius: 8px;\n font-family: sans-serif;\n font-size: 16px;\n color: #fff;\n box-shadow: 0px 0px 14px 0px rgba(0, 0, 0, 0.25);\n }\n\n [dir=rtl].bb-feedback-button .bb-feedback-button-classic {\n top: 50%;\n left: 0px;\n right: auto;\n transform: rotate(90deg) translate(-50%, -100%);\n transform-origin: 0% 0%;\n }\n \n .bb-feedback-button-classic--left {\n top: 50%;\n left: 0px;\n right: auto;\n transform: rotate(90deg) translate(-50%, -100%);\n transform-origin: 0% 0%;\n }\n\n [dir=rtl].bb-feedback-button .bb-feedback-button-classic--left {\n top: 50%;\n right: 0px;\n left: auto;\n transform: rotate(-90deg) translate(50%, -50%);\n transform-origin: 100% 50%;\n }\n \n .bb-feedback-button-classic--bottom {\n top: auto;\n bottom: 0px;\n transform: none;\n right: ${buttonX}px;\n left: auto;\n }\n \n [dir=rtl].bb-feedback-button .bb-feedback-button-classic--bottom {\n top: auto;\n bottom: 0px;\n transform: none;\n left: ${buttonX}px;\n right: auto;\n }\n\n .bb-feedback-button--classic-button-style {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n \n .bb-feedback-button--open.bb-feedback-button--classic-button-style {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: bbFadeOutRight;\n }\n \n .bb-feedback-button .bb-logo-logo {\n position: absolute;\n width: 30px;\n height: 30px;\n top: 9px;\n left: 9px;\n object-fit: contain;\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-name: bbZoomIn;\n }\n \n .bb-feedback-button .bb-logo-arrowdown {\n position: absolute;\n width: 14px;\n height: 14px;\n top: 17px;\n left: 17px;\n object-fit: contain;\n animation-duration: 0.3s;\n animation-fill-mode: both;\n }\n \n .bb-feedback-button .bb-logo-arrowdown {\n animation-name: bbZoomOut;\n }\n \n .bb-feedback-button--open .bb-logo-arrowdown {\n animation-name: bbZoomIn;\n }\n \n .bb-feedback-button--open .bb-logo-logo {\n animation-name: bbZoomOut;\n }\n \n .bb-feedback-button-icon:hover {\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.25), 0px 0px 20px rgba(0, 0, 0, 0.2);\n transform: scale(1.1);\n }\n \n .bb-feedback-button--open .bb-feedback-button-text {\n animation-name: bbFadeOutDown;\n }\n \n .bb-feedback-button--open .bb-feedback-button-icon {\n display: flex;\n }\n \n .bb-capture-svg {\n position: fixed;\n z-index: ${zIndexBase + 14};\n top: 0px;\n left: 0px;\n right: 0px;\n width: 100%;\n height: 100%;\n padding: 0px;\n margin: 0px;\n cursor: crosshair;\n }\n\n .bb-capture-svg--preview {\n cursor: auto !important;\n }\n \n .bb-rec-on-circle {\n animation-name: bbRecIconFade;\n animation-duration: 2s;\n animation-iteration-count: infinite;\n animation-direction: alternate;\n }\n \n .bb-rec-on-cont {\n animation-name: bbRecIconContFade;\n animation-duration: 2s;\n animation-iteration-count: infinite;\n animation-direction: alternate;\n }\n \n .bb-capture-editor-drag-info {\n position: fixed;\n top: -200px;\n left: 0px;\n z-index: ${zIndexBase + 16};\n transition: opacity 0.3s ease-in-out;\n }\n \n .bb-capture-editor-drag-info svg {\n width: 24px;\n height: 24px;\n }\n \n .bb-capture-editor-borderlayer {\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n border: 4px solid ${primaryColor};\n cursor: crosshair;\n z-index: ${zIndexBase + 10};\n box-sizing: border-box;\n pointer-events: none;\n }\n \n .bb-capture-editor-notrecording .bb-capture-editor-borderlayer {\n background-color: rgba(0, 0, 0, 0.8);\n }\n\n .bb-capture-editor-recording .bb-capture-editor-borderlayer {\n border: 4px solid #eb144c !important;\n }\n \n .bb-capture-editor-recording .bb-capture-dismiss {\n display: none;\n }\n \n .bb-capture-editor-item-inactive {\n opacity: 0.3;\n cursor: not-allowed !important;\n }\n \n .bb-capture-editor-notrecording .bb-capture-toolbar-drawingitem {\n opacity: 0.3;\n cursor: not-allowed !important;\n }\n \n .bb-capture-editor-notrecording .bb-capture-editor-drag-info {\n display: none;\n }\n \n .bb-capture-editor-notrecording .bb-capture-svg {\n pointer-events: none !important;\n }\n \n .bb-capture-toolbar {\n position: fixed;\n top: 20px;\n left: 50%;\n transform: translateX(-50%);\n z-index: ${zIndexBase + 18};\n background-color: #fff;\n padding: 5px;\n display: flex;\n align-items: center;\n border-radius: 8px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n transition: opacity 0.3s ease-in-out;\n }\n \n .bb-capture-dismiss {\n position: fixed;\n top: 0px;\n right: 0px;\n z-index: ${zIndexBase + 18};\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n width: 36px;\n height: 36px;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: ${primaryColor};\n border-bottom-left-radius: ${formItemSmallBorderRadius}px;\n }\n\n [dir=rtl] .bb-capture-dismiss {\n top: 0px;\n left: 0px;\n right: auto;\n border-bottom-left-radius: 0px !important;\n border-bottom-right-radius: ${formItemSmallBorderRadius}px;\n }\n \n .bb-capture-dismiss svg path {\n fill: ${contrastColor};\n }\n \n .bb-capture-dismiss svg {\n width: 20px;\n height: 20px;\n object-fit: contain;\n }\n \n .bb-capture-button-next {\n font-family: sans-serif;\n box-sizing: border-box;\n font-weight: 600;\n text-align: center;\n width: auto;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n margin: 0px;\n line-height: 36px;\n padding: 0px 12px;\n font-size: 15px;\n margin-left: 12px;\n }\n\n [dir=rtl].bb-capture-editor .bb-capture-button-next {\n margin-left: auto;\n margin-right: 12px;\n }\n \n .bb-capture-toolbar-item-spacer {\n width: 1px;\n height: 38px;\n min-width: 1px;\n margin: 0px 5px;\n }\n \n .bb-capture-toolbar-item {\n width: 42px;\n height: 38px;\n min-width: 42px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n position: relative;\n margin-right: 5px;\n }\n\n .drag-handle-item {\n cursor: grab !important;\n width: 34px;\n min-width: 34px;\n }\n\n .drag-handle-item svg {\n width: 18px !important;\n height: 18px !important;\n }\n \n .bb-capture-toolbar-item svg {\n width: 23px;\n height: 23px;\n object-fit: contain;\n }\n \n .bb-capture-toolbar-item-selectedcolor {\n border-radius: 100%;\n width: 20px;\n height: 20px;\n background-color: #db4035;\n }\n \n .bb-capture-toolbar-item[data-type=\"undo\"] svg {\n width: 18px;\n height: 18px;\n }\n \n .bb-capture-toolbar-item[data-active=\"true\"] {\n position: relative;\n }\n \n .bb-capture-preview {\n display: none;\n background-color: rgba(0, 0, 0, 0.6);\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n justify-content: center;\n align-items: center;\n z-index: ${zIndexBase + 20};\n }\n \n .bb-capture-preview-inner {\n background-color: #fff;\n padding: 0px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n border-radius: 8px;\n flex-direction: column;\n max-width: 640px;\n width: 100%;\n margin: 20px;\n }\n \n .bb-capture-preview-inner video {\n border-radius: 8px 8px 0px 0px;\n display: block;\n border: 0px;\n outline: none;\n width: 100%;\n max-height: 60vh;\n }\n \n .bb-capture-preview-buttons {\n display: flex;\n justify-content: space-between;\n padding: 14px;\n }\n \n .bb-capture-preview-retrybutton {\n font-family: sans-serif;\n border-radius: 21px;\n box-sizing: border-box;\n padding: 12px 26px;\n font-size: 16px;\n line-height: 19px;\n font-weight: 600;\n text-align: center;\n margin-top: 0px;\n margin-bottom: 0px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-preview-sendbutton {\n font-family: sans-serif;\n border-radius: 21px;\n box-sizing: border-box;\n padding: 12px 26px;\n font-size: 16px;\n line-height: 19px;\n font-weight: 600;\n text-align: center;\n margin-top: 0px;\n margin-bottom: 0px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-preview-retrybutton:hover,\n .bb-capture-preview-sendbutton:hover {\n opacity: 0.9;\n }\n \n .bb-capture-toolbar-item-recording {\n margin-right: 0px;\n }\n \n .bb-capture-toolbar-item-recording svg {\n width: 33px;\n height: 33px;\n }\n \n .bb-capture-toolbar-item-colorpicker {\n position: fixed;\n top: 70px;\n left: 50%;\n transform: translateX(-50%);\n z-index: ${zIndexBase + 18};\n background-color: #fff;\n display: none;\n padding: 10px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n border-radius: 8px;\n }\n \n .bb-capture-toolbar-item-color {\n width: 20px;\n height: 20px;\n border-radius: 100%;\n margin-right: 12px;\n box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.15);\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-toolbar-item-color:hover {\n box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.25);\n }\n \n .bb-capture-toolbar-item-color:last-of-type {\n margin-right: 0px;\n }\n \n [dir=rtl].bb-capture-editor .bb-capture-toolbar-item-color {\n margin-right: auto;\n margin-left: 12px;\n }\n \n [dir=rtl].bb-capture-editor .bb-capture-toolbar-item-color:last-of-type {\n margin-right: auto;\n margin-left: 0px;\n }\n \n .bb-capture-toolbar-item-recording[data-active=\"true\"] svg:first-of-type {\n display: none;\n }\n \n .bb-capture-toolbar-item-recording[data-active=\"true\"] svg:nth-of-type(2) {\n display: block;\n }\n \n .bb-capture-toolbar-item-recording[data-active=\"false\"] svg:first-of-type {\n display: block;\n }\n \n .bb-capture-toolbar-item-recording[data-active=\"false\"] svg:nth-of-type(2) {\n display: none;\n }\n \n .bb-capture-toolbar-item--active {\n background-color: #eee;\n }\n \n .bb-capture-toolbar-item:hover svg {\n opacity: 1;\n }\n \n .bb-capture-toolbar-item--active {\n background-color: #f8f8f8;\n }\n \n .bb-capture-toolbar-item--active svg {\n opacity: 1;\n }\n \n .bb-capture-toolbar-item--inactivecross::before {\n content: \"\";\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n height: 3px;\n width: 26px;\n margin: auto;\n border-radius: 4px;\n background-color: #e80000;\n transform: rotate(45deg);\n }\n \n .bb-capture-toolbar-item--inactivecross svg {\n fill: #eee;\n }\n \n .bb-capture-toolbar-item-timer {\n text-align: left;\n line-height: 32px;\n font-size: 14px;\n font-family: sans-serif;\n margin: 5px;\n min-width: 40px;\n display: none;\n }\n \n .bb-capture-toolbar-item .bb-tooltip {\n background-color: #555;\n color: #fff;\n visibility: hidden;\n font-size: 14px;\n font-family: sans-serif;\n text-align: center;\n padding: 5px 10px;\n position: absolute;\n z-index: 1;\n top: 45px;\n left: 0px;\n transform: translateX(calc(-50% + 21px));\n opacity: 0;\n transition: opacity 0.3s;\n white-space: nowrap;\n }\n \n .bb-capture-toolbar-item .bb-tooltip::after {\n content: \"\";\n position: absolute;\n bottom: 100%;\n left: 50%;\n margin-left: -5px;\n border-width: 5px;\n border-style: solid;\n transform: rotate(180deg);\n border-color: #555 transparent transparent transparent;\n }\n \n .bb-capture-toolbar-item:hover .bb-tooltip {\n visibility: visible;\n opacity: 1;\n }\n \n .bb-capture-options {\n display: none;\n }\n \n .bb-capture-options--active {\n display: flex;\n }\n\n @keyframes bbFadeOutRight {\n from {\n opacity: 1;\n }\n \n to {\n opacity: 0;\n }\n }\n \n @keyframes bbFadeOutDown {\n from {\n opacity: 1;\n }\n \n to {\n opacity: 0;\n transform: translate3d(0, 100%, 0);\n }\n }\n \n @keyframes bbFadeInOpacity {\n from {\n opacity: 0;\n }\n \n to {\n opacity: 1;\n }\n }\n \n @keyframes bbZoomOut {\n from {\n opacity: 1;\n }\n \n 50% {\n opacity: 0;\n transform: scale3d(0.3, 0.3, 0.3);\n }\n \n to {\n opacity: 0;\n }\n }\n \n @keyframes bbZoomIn {\n from {\n opacity: 0;\n transform: scale3d(0.3, 0.3, 0.3);\n }\n \n 50% {\n opacity: 1;\n }\n }\n \n @keyframes bbRecIconContFade {\n 0% {\n fill: #b10802;\n }\n 50% {\n fill: #ff0000;\n }\n 100% {\n fill: #b10802;\n }\n } \n .bb-capture-preview-retrybutton {\n color: ${contrastBackgroundColor};\n border-radius: ${buttonBorderRadius}px;\n background-color: ${backgroundColorHover};\n }\n .bb-capture-preview-retrybutton:hover {\n background-color: ${hoverHoverColor};\n }\n @keyframes bb-suc-fill {\n 100% {\n box-shadow: inset 0px 0px 0px 30px ${primaryColor};\n }\n }\n .bb-capture-toolbar-item-spacer {\n background-color: ${backgroundColorHover};\n }\n .bb-tooltip {\n border-radius: ${formItemBorderRadius}px;\n }\n @keyframes bbRecIconFade {\n 0% {\n fill: transparent;\n }\n 50% {\n fill: ${hoverHoverColor};\n }\n 100% {\n fill: transparent;\n }\n }\n .bb-capture-preview-sendbutton {\n color: ${contrastColor};\n background-color: ${primaryColor};\n border-radius: ${buttonBorderRadius}px;\n }\n .bb-capture-button-next {\n color: ${contrastColor};\n background-color: ${primaryColor};\n border-radius: ${formItemSmallBorderRadius}px;\n }\n .bb-capture-preview-inner {\n background-color: ${backgroundColor};\n border-radius: ${formItemBorderRadius}px;\n }\n .bb-capture-toolbar-item-timer {\n color: ${subTextColor};\n }\n .bb-svg-path {\n fill: ${contrastBackgroundColor};\n }\n .bb-capture-toolbar-item {\n border-radius: ${formItemBorderRadius}px;\n }\n .bb-capture-toolbar {\n background-color: ${backgroundColor};\n border-radius: ${formItemBorderRadius}px;\n }\n .bb-capture-toolbar-item-colorpicker {\n background-color: ${backgroundColor};\n }\n .bb-capture-toolbar-item--active {\n background-color: ${backgroundColorHover};\n }\n .bb-feedback-button-classic {\n border-top-left-radius: ${formItemBorderRadius}px;\n border-top-right-radius: ${formItemBorderRadius}px;\n }\n .bb-logo-logo--default path {\n fill: ${contrastButtonColor};\n }\n .bb-logo-arrowdown {\n fill: ${contrastButtonColor};\n }\n .bb-feedback-button-icon {\n background-color: ${buttonColor};\n }\n .bb-feedback-button-classic {\n background-color: ${buttonColor};\n color: ${contrastButtonColor};\n }\n\n @media only screen and (max-width: 450px) {\n [dir=rtl].gleap-frame-container,\n .gleap-frame-container {\n left: 0px;\n right: 0px;\n width: 100vw;\n max-width: 100vw;\n min-height: 100vh;\n max-height: 100vh;\n min-height: 100dvh !important;\n max-height: 100dvh !important;\n top: 0px;\n bottom: 0px;\n border-radius: 0px;\n animation-name: gleapFadeInUpMobile;\n }\n\n .gleap-frame-container-inner {\n width: 100vw;\n height: 100%;\n }\n\n .gleap-frame-container:not(.gleap-frame-container--survey):not(.gleap-frame-container--survey-full) .gleap-frame-container-inner {\n max-height: calc(var(--glvh, 1vh) * 100) !important;\n }\n\n .gleap-frame-container--survey {\n height: auto !important;\n top: initial !important;\n bottom: 0px !important;\n min-height: initial !important;\n }\n\n .gleap-frame-container--survey .gleap-frame-container-inner {\n height: 100vh !important;\n }\n\n .bb-tooltip {\n display: none !important;\n }\n \n .bb-capture-toolbar-item-colorpicker {\n top: 75px;\n }\n \n .bb-capture-button-next {\n margin-left: auto;\n }\n \n .bb-capture-dismiss {\n display: none;\n }\n \n .bb-capture-toolbar {\n top: 15px;\n right: 15px;\n left: 15px;\n width: auto;\n transform: none;\n }\n\n .bb-capture-editor-drag-info {\n display: none;\n }\n \n .bb-capture-editor-borderlayer {\n border-width: 4px;\n }\n }\n \n @media print {\n .bb-feedback-button {\n display: none !important;\n }\n \n .gleap-frame-container {\n display: none !important;\n }\n }\n\n .gleap-tour-sender {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n margin-bottom: 10px;\n }\n\n .gleap-tour-sender-image {\n width: 32px;\n height: 32px;\n border-radius: 32px;\n margin-right: 10px;\n background-size: cover;\n background-repeat: no-repeat;\n }\n\n .gleap-tour-popover.gleap-tour-popover-post {\n min-width: 550px;\n max-width: 550px;\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-tour-popover.gleap-tour-popover-post {\n min-width: calc(100vw - 40px);\n max-width: calc(100vw - 40px);\n }\n }\n\n .gleap-tour-message,\n .gleap-tour-message p,\n .gleap-tour-message ul {\n color: ${contrastBackgroundColor};\n }\n\n .gleap-tour-message h2 {\n font-weight: 600;\n font-size: 22px;\n }\n\n .gleap-tour-message h3 {\n font-weight: 600;\n font-size: 18px;\n }\n\n .gleap-tour-message p {\n line-height: 1.3;\n margin-bottom: 10px !important;\n margin-top: 10px !important;\n }\n\n .gleap-tour-message ul {\n line-height: 1.3;\n padding-left: 20px;\n margin-top: 10px !important;\n margin-bottom: 10px !important;\n }\n\n .gleap-tour-message {\n max-height: calc(80vh - 100px) !important;\n overflow-y: auto;\n min-width: 270px;\n }\n\n .gleap-tour-message::-webkit-scrollbar {\n width: 5px;\n }\n\n .gleap-tour-message::-webkit-scrollbar-track {\n border-radius: 0px;\n }\n \n .gleap-tour-message::-webkit-scrollbar-thumb {\n background: ${hoverHoverColor}; \n border-radius: 5px;\n }\n\n .gleap-tour-message::-webkit-scrollbar-thumb:hover {\n background: ${subTextColor};\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-tour-message {\n min-width: auto !important;\n }\n }\n\n .gleap-tour-message iframe {\n width: 100%;\n height: 300px;\n margin-top: 10px;\n margin-bottom: 10px;\n border: none;\n outline: none;\n display: block;\n }\n\n .gleap-tour-sender-name {\n font-size: 15px;\n }\n\n .gleap-tour-video {\n width: 100%;\n max-width: 100%;\n }\n\n .gleap-tour-video-svg--fullscreen {\n width: 100% !important;\n height: 100% !important;\n top: 0px !important;\n left: 0px !important;\n right: 0px !important;\n bottom: 0px !important;\n }\n\n .gleap-tour-video--playing .gleap-tour-video-playpause {\n opacity: 0;\n }\n \n .gleap-tour-video--playing:hover .gleap-tour-video-playpause {\n opacity: 1;\n }\n\n .gleap-tour-popover-video-pointer {\n padding: 0px !important;\n border-radius: 8px;\n position: relative;\n background-color: transparent !important;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-footer {\n position: absolute;\n top: 0px;\n left: 20px;\n right: 20px;\n opacity: 0;\n transition: opacity 200ms ease-in-out;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-footer button {\n padding: 5px 12px;\n }\n\n .gleap-tour-popover-video-pointer.gleap-tour-popover-can-close .gleap-tour-popover-footer {\n right: 40px !important;\n }\n\n .gleap-tour-popover-video-pointer:hover .gleap-tour-popover-footer {\n opacity: 1;\n }\n\n .gleap-tour-popover-pointer.gleap-tour-popover-no-sender .gleap-tour-message {\n padding-right: 20px;\n }\n\n .gleap-tour-video video {\n width: 100%;\n max-width: 100%;\n height: auto;\n border: none;\n outline: none;\n display: block;\n border-radius: 8px;\n }\n\n .gleap-admin-collapse-ui {\n z-index: ${zIndexBase + 35};\n cursor: pointer;\n position: fixed;\n bottom: 75px;\n right: 20px;\n width: 32px;\n height: 32px;\n border-radius: 100%;\n background-color: #fff;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: rgba(0, 0, 0, 0.16) 0px 10px 36px 0px, rgba(0, 0, 0, 0.06) 0px 0px 0px 1px;\n }\n\n .gleap-admin-collapse-ui svg {\n width: 20px;\n height: 14px;\n fill: #000 !important;\n }\n\n .gleap-admin-collapse-ui-active {\n bottom: 20px !important;\n }\n\n .gleap-admin-collapse-ui-active svg {\n transform: rotate(180deg);\n }\n\n .gleap-admin-frame-container-active {\n display: none !important;\n }\n\n .gleap-admin-frame-container {\n position: fixed;\n bottom: 0px;\n left: 0px;\n right: 0px;\n width: 100vw;\n z-index: ${zIndexBase + 40};\n }\n\n .gleap-admin-frame {\n width: 100%;\n height: 100% !important;\n border: none;\n outline: none;\n display: block;\n }\n \n .gleap-tour-message .linktype-link {\n display: inline-block !important;\n background-color: transparent !important;\n color: ${buttonColor} !important;\n }\n\n .gleap-tooltip .linktype-button,\n .gleap-tour-message .linktype-button {\n display: inline-block !important;\n border-radius: 5px;\n box-sizing: border-box;\n padding: 10px 20px !important;\n text-decoration: none !important;\n background-color: ${buttonColor} !important;\n color: ${contrastButtonColor} !important;\n }\n\n .gleap-tour-message img {\n width: 100%;\n max-width: 100%;\n min-height: 260px;\n height: auto;\n margin-top: 10px;\n margin-bottom: 10px;\n object-fit: cover;\n }\n\n .gleap-tour-active .gleap-tour-overlay {\n pointer-events: none;\n }\n \n .gleap-tour-active * {\n pointer-events: none;\n }\n \n .gleap-tour-active .gleap-tour-active-element,\n .gleap-tour-active .gleap-tour-active-element *,\n .gleap-tour-popover,\n .gleap-tour-popover * {\n pointer-events: auto;\n }\n \n @keyframes animate-fade-in {\n 0% {\n opacity: 0;\n }\n \n to {\n opacity: 1;\n }\n }\n \n .gleap-tour-fade .gleap-tour-overlay {\n animation: animate-fade-in 200ms ease-in-out;\n }\n \n .gleap-tour-fade .gleap-tour-popover {\n animation: animate-fade-in 200ms;\n }\n\n .gleap-tour-video-playpause {\n position: absolute;\n bottom: 8px;\n left: 8px;\n width: 32px;\n height: 32px;\n padding: 4px;\n background-color: rgba(0,0,0,0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border-radius: 8px;\n transition: opacity 200ms ease-in-out;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-arrow {\n display: none !important;\n }\n\n .gleap-tour-video-playpause svg {\n width: 34px;\n height: auto;\n fill: #fff;\n }\n \n /* Popover styles */\n .gleap-tour-popover {\n all: unset;\n box-sizing: border-box;\n color: #2d2d2d;\n margin: 0;\n padding: 15px;\n border-radius: ${formItemBorderRadius}px;\n min-width: 250px;\n max-width: 300px;\n box-shadow: 0 1px 10px #0006;\n z-index: 1000000000;\n position: fixed;\n top: 0;\n right: 0;\n background-color: #fff;\n }\n \n .gleap-tour-popover * {\n font-family: \"Helvetica Neue\", Inter, ui-sans-serif, \"Apple Color Emoji\", Helvetica, Arial, sans-serif;\n }\n \n .gleap-tour-popover-title {\n font: 19px / normal sans-serif;\n font-weight: 700;\n display: block;\n position: relative;\n line-height: 1.5;\n zoom: 1;\n margin: 0;\n }\n \n .gleap-tour-popover-close-btn {\n all: unset;\n position: absolute;\n top: 5px;\n right: 5px;\n width: 32px;\n height: 32px;\n cursor: pointer;\n font-size: 30px;\n font-weight: 500;\n line-height: 32px;\n color: #d2d2d2;\n z-index: 1;\n text-align: center;\n transition: color;\n transition-duration: 200ms;\n }\n \n .gleap-tour-popover-close-btn:hover,\n .gleap-tour-popover-close-btn:focus {\n color: #2d2d2d;\n }\n \n .gleap-tour-popover-title[style*=\"block\"] + .gleap-tour-popover-description {\n margin-top: 5px;\n }\n \n .gleap-tour-popover-description {\n margin-bottom: 0;\n font: 15px / normal sans-serif;\n line-height: 1.5;\n font-weight: 400;\n zoom: 1;\n }\n \n .gleap-tour-popover-footer {\n margin-top: 15px;\n text-align: right;\n zoom: 1;\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n \n .gleap-tour-popover-progress-text {\n font-size: 13px;\n font-weight: 400;\n color: #727272;\n zoom: 1;\n }\n \n .gleap-tour-popover-footer button {\n background-color: ${primaryColor};\n color: ${contrastColor};\n border-radius: ${formItemSmallBorderRadius}px;\n box-sizing: border-box;\n padding: 10px 20px;\n font-size: 14px;\n font-weight: bold;\n line-height: 21px;\n border: none;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: none !important;\n outline: none !important;\n }\n\n .gleap-tour-popover-prev-btn {\n color: ${contrastBackgroundColor} !important;\n background-color: ${backgroundColorHover} !important;\n margin-right: 3px;\n }\n\n .gleap-tour-popover-prev-btn:hover {\n background-color: ${primaryColor}22 !important;\n color: ${primaryColor} !important;\n }\n \n .gleap-tour-popover-footer .gleap-tour-popover-btn-disabled {\n opacity: 0.5;\n pointer-events: none;\n }\n \n /* Disable the scrolling of parent element if it has an active element*/\n :not(body):has(> .gleap-tour-active-element) {\n overflow: hidden !important;\n }\n \n .gleap-tour-no-interaction, .gleap-tour-no-interaction * {\n pointer-events: none !important;\n }\n \n .gleap-tour-popover-navigation-btns {\n display: flex;\n flex-grow: 1;\n justify-content: flex-end;\n }\n \n .gleap-tour-popover-navigation-btns button + button {\n margin-left: 4px;\n }\n \n .gleap-tour-popover-arrow {\n content: \"\";\n position: absolute;\n border: 5px solid #fff;\n }\n \n .gleap-tour-popover-arrow-side-over {\n display: none;\n }\n \n /** Popover Arrow Sides **/\n .gleap-tour-popover-arrow-side-left {\n left: 100%;\n border-right-color: transparent;\n border-bottom-color: transparent;\n border-top-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-right {\n right: 100%;\n border-left-color: transparent;\n border-bottom-color: transparent;\n border-top-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-top {\n top: 100%;\n border-right-color: transparent;\n border-bottom-color: transparent;\n border-left-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-bottom {\n bottom: 100%;\n border-left-color: transparent;\n border-top-color: transparent;\n border-right-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-center {\n display: none;\n }\n \n /* Left/Start + Right/Start */\n .gleap-tour-popover-arrow-side-left.gleap-tour-popover-arrow-align-start,\n .gleap-tour-popover-arrow-side-right.gleap-tour-popover-arrow-align-start {\n top: 15px;\n }\n \n /* Top/Start + Bottom/Start */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-start,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-start {\n left: 15px;\n }\n \n /* End/Left + End/Right */\n .gleap-tour-popover-arrow-align-end.gleap-tour-popover-arrow-side-left,\n .gleap-tour-popover-arrow-align-end.gleap-tour-popover-arrow-side-right {\n bottom: 15px;\n }\n \n /* Top/End + Bottom/End */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-end,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-end {\n right: 15px;\n }\n \n /* Left/Center + Right/Center */\n .gleap-tour-popover-arrow-side-left.gleap-tour-popover-arrow-align-center,\n .gleap-tour-popover-arrow-side-right.gleap-tour-popover-arrow-align-center {\n top: 50%;\n margin-top: -5px;\n }\n \n /* Top/Center + Bottom/Center */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-center,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-center {\n left: 50%;\n margin-left: -5px;\n }\n \n /* No arrow */\n .gleap-tour-popover-arrow-none {\n display: none;\n } \n\n /* Modal styles */\n .gleap-modal-wrapper {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: ${zIndexBase + 40};\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .gleap-modal-backdrop {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.5);\n z-index: ${zIndexBase + 41};\n }\n\n .gleap-modal {\n position: relative;\n width: 90%;\n max-width: 600px;\n max-height: 90vh;\n z-index: ${zIndexBase + 100};\n background-color: ${backgroundColor};\n border-radius: ${containerRadius}px;\n overflow: hidden;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-name: gleapFadeInUp;\n }\n\n .gleap-modal-frame {\n width: 100%;\n border: none;\n display: block;\n outline: none;\n }\n\n body.gleap-modal-open {\n overflow: hidden;\n }\n\n @keyframes gleapFadeInUp {\n from {\n opacity: 0;\n transform: translate3d(0, 20px, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n `;\n\n const oldNode = document.querySelector(\".gleap-styles\");\n if (oldNode) {\n oldNode.remove();\n }\n const node = document.createElement(\"style\");\n node.innerHTML = colorStyleSheet;\n node.className = \"gleap-styles\";\n document.body.appendChild(node);\n};\n\nexport const loadIcon = function (name, color) {\n if (name === \"button\") {\n return ``;\n }\n\n if (name === \"drag\") {\n return ``;\n }\n\n if (name === \"unmute\") {\n return ``;\n }\n\n if (name === \"mute\") {\n return ``;\n }\n\n if (name === \"replay\") {\n return `\n \n `;\n }\n\n if (name === \"dismiss\") {\n return ``;\n }\n\n if (name === \"blur\") {\n return `\n \n`;\n }\n\n if (name === \"pen\") {\n return `\n \n \n \n \n \n \n \n \n \n \n \n \n`;\n }\n\n if (name === \"rect\") {\n return `\n \n \n \n \n \n \n \n \n \n \n`;\n }\n\n if (name === \"pointer\") {\n return `\n \n `;\n }\n\n if (name === \"clip\") {\n return `\n \n \n \n \n \n`;\n }\n\n if (name === \"mic\") {\n return `\n \n \n \n \n `;\n }\n\n if (name === \"camera\") {\n return `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n`;\n }\n\n if (name === \"recorderon\") {\n return `\n \n \n \n \n \n \n \n \n \n \n \n`;\n }\n\n if (name === \"recorderoff\") {\n return `\n \n \n \n \n \n \n \n \n `;\n }\n\n if (name === \"arrowdown\") {\n return `\n \n `;\n }\n\n if (name === \"arrowleft\") {\n return `\n \n `;\n }\n\n if (name === \"close\") {\n return `\n \n `;\n }\n\n if (name === \"undo\") {\n return `\n \n \n \n \n \n \n \n \n \n `;\n }\n\n if (name === \"circle-dot\") {\n return ``;\n }\n\n if (name === \"circle-question\") {\n return ``;\n }\n\n if (name === \"circle-info\") {\n return ``;\n }\n\n if (name === \"circle-exclamation\") {\n return ``;\n }\n\n if (name === \"circle-up\") {\n return ``;\n }\n\n if (name === \"circle-right\") {\n return ``;\n }\n\n return \"\";\n};\n","class GleapNetworkIntercepter {\n startTimestamp = Date.now();\n requestId = 0;\n requests = {};\n externalRequests = [];\n maxRequests = 30;\n filters = [];\n defaultBlacklist = [\"gleap.io\"];\n blacklist = [];\n initialized = false;\n stopped = false;\n loadAllResources = false;\n\n // GleapNetworkIntercepter singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapNetworkIntercepter();\n }\n return this.instance;\n }\n\n setLoadAllResources(loadAllResources) {\n this.loadAllResources = loadAllResources;\n }\n\n isContentTypeSupported(contentType) {\n if (typeof contentType !== \"string\") {\n return false;\n }\n\n if (contentType === \"\") {\n return true;\n }\n\n contentType = contentType.toLocaleLowerCase();\n\n const supportedContentTypes = [\"text/\", \"xml\", \"json\"];\n for (var i = 0; i < supportedContentTypes.length; i++) {\n if (contentType.includes(supportedContentTypes[i])) {\n return true;\n }\n }\n\n return false;\n }\n\n getRequests() {\n var requests = JSON.parse(JSON.stringify(Object.values(this.requests)));\n\n // Merge external requests into internal requests.\n if (this.externalRequests && this.externalRequests.length > 0) {\n requests = requests.concat(this.externalRequests);\n }\n\n if (this.filters && this.filters.length > 0) {\n // Perform network log filtering.\n for (var i = 0; i < requests.length; i++) {\n var request = requests[i];\n\n // Headers\n if (request && request.request && request.request.headers) {\n for (var j = 0; j < this.filters.length; j++) {\n delete request.request.headers[this.filters[j]];\n }\n }\n\n // Payload\n if (request && request.request && request.request.payload) {\n var payloadObj = request.request.payload;\n try {\n payloadObj = JSON.parse(request.request.payload);\n } catch (e) { }\n\n if (payloadObj) {\n for (var j = 0; j < this.filters.length; j++) {\n delete payloadObj[this.filters[j]];\n }\n request.request.payload = JSON.stringify(payloadObj);\n }\n }\n\n // Response\n if (request && request.response && request.response.responseText) {\n try {\n var data = JSON.parse(request.response.responseText);\n for (var j = 0; j < this.filters.length; j++) {\n delete data[this.filters[j]];\n }\n request.response.responseText = JSON.stringify(data);\n } catch (e) { }\n }\n }\n }\n\n // Get static resources from performance.\n try {\n if (typeof window !== \"undefined\" && window.performance) {\n var resources = window.performance.getEntriesByType(\"resource\");\n for (var i = 0; i < resources.length; i++) {\n var resource = resources[i];\n if (resource && resource.name) {\n if ((this.loadAllResources || [\"xmlhttprequest\", \"fetch\"].indexOf(resource.initiatorType) > -1) && !requests.find(request => request.url === resource.name)) {\n requests.push({\n type: \"RESOURCE\",\n date: new Date(this.startTimestamp + resource.startTime),\n url: resource.name,\n duration: Math.round(resource.duration),\n initiatorType: resource.initiatorType\n });\n }\n }\n }\n }\n } catch (exp) { }\n\n var blacklist = this.blacklist.concat(this.defaultBlacklist);\n if (blacklist && blacklist.length > 0) {\n try {\n requests = requests.filter((request) => {\n for (var i = 0; i < blacklist.length; i++) {\n if (request && request.url && request.url.includes(blacklist[i])) {\n return false;\n }\n }\n return true;\n });\n } catch (exp) { }\n }\n\n return requests;\n }\n\n setMaxRequests(maxRequests) {\n if (maxRequests > 70) {\n maxRequests = 70;\n }\n this.maxRequests = maxRequests;\n }\n\n setStopped(stopped) {\n this.stopped = stopped;\n }\n\n setFilters(filters) {\n this.filters = this.filters.concat(filters ? filters : []);\n }\n\n setBlacklist(blacklist) {\n this.blacklist = this.blacklist.concat(blacklist ? blacklist : []);\n }\n\n cleanRequests() {\n var keys = Object.keys(this.requests);\n if (keys.length > this.maxRequests) {\n var keysToRemove = keys.slice(0, keys.length - this.maxRequests);\n for (var i = 0; i < keysToRemove.length; i++) {\n delete this.requests[keysToRemove[i]];\n }\n }\n }\n\n calcRequestTime(bbRequestId) {\n if (!bbRequestId || !this.requests || !this.requests[bbRequestId]) {\n return;\n }\n\n var startDate = this.requests[bbRequestId][\"date\"];\n if (startDate) {\n this.requests[bbRequestId][\"duration\"] =\n new Date().getTime() - startDate.getTime();\n }\n }\n\n getTextContentSize(text) {\n var size = 0;\n try {\n size = new TextEncoder().encode(text).length;\n } catch (exp) {\n try {\n size = encodeURI(s).split(/%..|./).length - 1;\n } catch (exp) {\n try {\n size = new Blob([text]).size;\n } catch (exp) {\n size = text.length;\n }\n }\n }\n\n const kiloBytes = size / 1024;\n const megaBytes = kiloBytes / 1024;\n return megaBytes;\n }\n\n cleanupContentSize(text) {\n const contentSize = this.getTextContentSize(text);\n if (contentSize > 0.15) {\n return \"\";\n }\n\n return text;\n }\n\n cleanupPayload(payload) {\n if (payload === undefined || payload === null) {\n return \"{}\";\n }\n\n try {\n if (typeof TextDecoder !== undefined && ArrayBuffer.isView(payload)) {\n let value = new TextDecoder().decode(payload);\n return value;\n }\n } catch (exp) { }\n\n return payload;\n }\n\n preparePayload(payload) {\n var payloadText = this.cleanupPayload(payload);\n return this.cleanupContentSize(payloadText);\n }\n\n start() {\n if (this.initialized) {\n return;\n }\n\n this.initialized = true;\n const self = this;\n this.interceptNetworkRequests({\n onFetch: (params, bbRequestId) => {\n if (this.stopped || !bbRequestId || !this.requests) {\n return;\n }\n\n if (\n params.length > 0 &&\n typeof params[0] !== \"undefined\" &&\n typeof params[0].url !== \"undefined\"\n ) {\n this.requests[bbRequestId] = {\n url: params[0].url,\n date: new Date(),\n request: {\n payload: \"\",\n headers:\n typeof params[0].headers !== \"undefined\"\n ? Object.fromEntries(params[0].headers.entries())\n : {},\n },\n type:\n typeof params[0].method !== \"undefined\" ? params[0].method : \"\",\n };\n } else {\n if (params.length >= 2 && params[1]) {\n var method =\n params[1] && params[1].method ? params[1].method : \"GET\";\n this.requests[bbRequestId] = {\n request: {\n payload: self.preparePayload(params[1].body),\n headers: params[1].headers,\n },\n type: method,\n url: params[0],\n date: new Date(),\n };\n } else {\n this.requests[bbRequestId] = {\n url: params[0],\n date: new Date(),\n };\n }\n }\n\n this.cleanRequests();\n },\n onFetchLoad: (req, bbRequestId) => {\n if (\n this.stopped ||\n !bbRequestId ||\n !this.requests ||\n !this.requests[bbRequestId]\n ) {\n return;\n }\n\n try {\n this.requests[bbRequestId][\"success\"] = true;\n this.requests[bbRequestId][\"response\"] = {\n status: req.status,\n statusText: \"\",\n responseText: \"\",\n };\n this.calcRequestTime(bbRequestId);\n } catch (exp) { }\n\n try {\n var contentType = \"\";\n if (req.headers && typeof req.headers.get !== \"undefined\") {\n contentType = req.headers.get(\"content-type\");\n }\n\n if (this.isContentTypeSupported(contentType)) {\n req\n .text()\n .then((responseText) => {\n if (this.requests[bbRequestId]) {\n this.requests[bbRequestId][\"success\"] = true;\n this.requests[bbRequestId][\"response\"] = {\n status: req.status,\n statusText: req.statusText,\n responseText: self.cleanupContentSize(responseText)\n };\n }\n this.calcRequestTime(bbRequestId);\n this.cleanRequests();\n })\n .catch((err) => {\n this.cleanRequests();\n });\n } else {\n if (this.requests[bbRequestId]) {\n this.requests[bbRequestId][\"success\"] = true;\n this.requests[bbRequestId][\"response\"] = {\n status: req.status,\n statusText: req.statusText,\n responseText: \"\",\n };\n }\n this.calcRequestTime(bbRequestId);\n this.cleanRequests();\n }\n } catch (exp) { }\n },\n onFetchFailed: (err, bbRequestId) => {\n if (\n this.stopped ||\n !bbRequestId ||\n !this.requests ||\n !this.requests[bbRequestId]\n ) {\n return;\n }\n\n this.requests[bbRequestId][\"success\"] = false;\n this.calcRequestTime(bbRequestId);\n this.cleanRequests();\n },\n onOpen: (request, args) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.bbRequestId &&\n args.length >= 2 &&\n this.requests\n ) {\n this.requests[request.bbRequestId] = {\n type: args[0],\n url: args[1],\n date: new Date(),\n };\n }\n\n this.cleanRequests();\n },\n onSend: (request, args) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.bbRequestId &&\n this.requests &&\n this.requests[request.bbRequestId]\n ) {\n this.requests[request.bbRequestId][\"request\"] = {\n payload: this.preparePayload(args.length > 0 ? args[0] : \"{}\"),\n headers: request.requestHeaders,\n };\n }\n\n this.cleanRequests();\n },\n onError: (request, args) => {\n if (\n !this.stopped &&\n this.requests &&\n request &&\n request.currentTarget &&\n request.currentTarget.bbRequestId &&\n this.requests[request.currentTarget.bbRequestId]\n ) {\n this.requests[request.currentTarget.bbRequestId][\"success\"] = false;\n this.calcRequestTime(request.bbRequestId);\n }\n\n this.cleanRequests();\n },\n onLoad: (request, args) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.currentTarget &&\n request.currentTarget.bbRequestId &&\n this.requests &&\n this.requests[request.currentTarget.bbRequestId]\n ) {\n var target = request.currentTarget;\n var responseType = target.responseType;\n var responseText = \"<\" + responseType + \">\";\n if (responseType === \"\" || responseType === \"text\") {\n responseText = this.cleanupContentSize(target.responseText);\n }\n\n this.requests[target.bbRequestId][\"success\"] = true;\n this.requests[target.bbRequestId][\"response\"] = {\n status: target.status,\n statusText: target.statusText,\n responseText: responseText,\n };\n\n this.calcRequestTime(target.bbRequestId);\n }\n\n this.cleanRequests();\n },\n });\n }\n\n interceptNetworkRequests(callback) {\n var self = this;\n const open = XMLHttpRequest.prototype.open;\n const send = XMLHttpRequest.prototype.send;\n\n // Only override open and send if they haven't been overridden already.\n if (XMLHttpRequest.prototype.gleapSetRequestHeader === undefined) {\n XMLHttpRequest.prototype.gleapSetRequestHeader =\n XMLHttpRequest.prototype.setRequestHeader;\n }\n\n if (XMLHttpRequest.prototype.gleapSetRequestHeader) {\n XMLHttpRequest.prototype.setRequestHeader = function (header, value) {\n if (!this.requestHeaders) {\n this.requestHeaders = {};\n }\n\n if (this.requestHeaders && this.requestHeaders.hasOwnProperty(header)) {\n return;\n }\n\n if (!this.requestHeaders[header]) {\n this.requestHeaders[header] = [];\n }\n\n this.requestHeaders[header].push(value);\n this.gleapSetRequestHeader(header, value);\n };\n }\n\n XMLHttpRequest.prototype.open = function () {\n this[\"bbRequestId\"] = ++self.requestId;\n callback.onOpen && callback.onOpen(this, arguments);\n if (callback.onLoad) {\n this.addEventListener(\"load\", callback.onLoad.bind(callback));\n }\n if (callback.onError) {\n this.addEventListener(\"error\", callback.onError.bind(callback));\n }\n return open.apply(this, arguments);\n };\n XMLHttpRequest.prototype.send = function () {\n callback.onSend && callback.onSend(this, arguments);\n return send.apply(this, arguments);\n };\n\n if (window.fetch) {\n (function () {\n var originalFetch = window.fetch;\n window.fetch = function () {\n var bbRequestId = ++self.requestId;\n callback.onFetch(arguments, bbRequestId);\n\n return originalFetch\n .apply(this, arguments)\n .then(function (response) {\n if (response && typeof response.clone === \"function\") {\n const data = response.clone();\n callback.onFetchLoad(data, bbRequestId);\n }\n\n return response;\n })\n .catch((err) => {\n callback.onFetchFailed(err, bbRequestId);\n throw err;\n });\n };\n })();\n }\n\n return callback;\n }\n\n blobToTextPromise(blob) {\n return new Promise(function (resolve, reject) {\n var fr = new FileReader();\n fr.onload = function (evt) {\n if (evt && evt.target && evt.target.result) {\n resolve(evt.target.result);\n } else {\n reject();\n }\n };\n fr.onerror = function (err) {\n reject(err);\n };\n fr.readAsText(blob);\n });\n }\n}\n\nexport default GleapNetworkIntercepter;\n","export const resizeImage = (base64Str, maxWidth = 400, maxHeight = 400) => {\n return new Promise((resolve, reject) => {\n var isJPEG = base64Str.indexOf(\"data:image/jpeg\") === 0;\n var img = new Image();\n img.src = base64Str;\n img.onerror = () => {\n reject();\n };\n img.onload = () => {\n var canvas = document.createElement(\"canvas\");\n var MAX_WIDTH = maxWidth;\n var MAX_HEIGHT = maxHeight;\n\n // Adjust max width / height based on image props\n if (maxWidth > img.width / 1.5) {\n MAX_WIDTH = img.width / 1.5;\n }\n\n if (maxHeight > img.height / 1.5) {\n MAX_HEIGHT = img.height / 1.5;\n }\n\n var width = img.width;\n var height = img.height;\n\n if (width > height) {\n if (width > MAX_WIDTH) {\n height *= MAX_WIDTH / width;\n width = MAX_WIDTH;\n }\n } else {\n if (height > MAX_HEIGHT) {\n width *= MAX_HEIGHT / height;\n height = MAX_HEIGHT;\n }\n }\n canvas.width = width;\n canvas.height = height;\n var ctx = canvas.getContext(\"2d\");\n ctx.drawImage(img, 0, 0, width, height);\n\n if (isJPEG) {\n resolve(canvas.toDataURL(\"image/jpeg\", 0.7));\n } else {\n resolve(canvas.toDataURL());\n }\n };\n });\n};\n\nexport const isMobile = () => {\n if (\n /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(\n navigator.userAgent\n ) ||\n /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(\n navigator.userAgent.substr(0, 4)\n )\n ) {\n return true;\n }\n return false;\n};\n\nexport const gleapDataParser = function (data) {\n if (typeof data === \"string\" || data instanceof String) {\n try {\n return JSON.parse(data);\n } catch (e) {\n return {};\n }\n }\n return data;\n};\n\nexport const truncateString = (str, num) => {\n if (str.length > num) {\n return str.slice(0, num) + \"...\";\n } else {\n return str;\n }\n};\n\nconst removeSubDomain = (v) => {\n try {\n var parts = v.split(\".\");\n var is2ndLevelDomain = false;\n const secondLevel = parts[parts.length - 2];\n if (\n secondLevel === \"co\" ||\n secondLevel === \"com\" ||\n secondLevel === \"gv\" ||\n secondLevel === \"ac\" ||\n secondLevel === \"edu\" ||\n secondLevel === \"gov\" ||\n secondLevel === \"mil\" ||\n secondLevel === \"net\" ||\n secondLevel === \"org\"\n ) {\n is2ndLevelDomain = true;\n }\n parts = parts.slice(is2ndLevelDomain ? -3 : -2);\n return parts.join(\".\");\n } catch (exp) {}\n return v;\n};\n\nexport const loadFromGleapCache = (key) => {\n try {\n const cachedData = localStorage.getItem(`gleap-widget-${key}`);\n if (cachedData) {\n const config = JSON.parse(cachedData);\n return config;\n }\n } catch (exp) {}\n return null;\n};\n\nexport const saveToGleapCache = (key, data) => {\n const k = `gleap-widget-${key}`;\n if (data) {\n try {\n localStorage.setItem(k, JSON.stringify(data));\n } catch (exp) {}\n } else {\n localStorage.removeItem(k);\n }\n};\n\nexport const setGleapCookie = (name, value, days) => {\n try {\n var expires = \"\";\n if (days) {\n var date = new Date();\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\n expires = \"; expires=\" + date.toUTCString();\n }\n const host = removeSubDomain(window.location.host.split(\":\")[0]);\n document.cookie =\n name + \"=\" + (value || \"\") + expires + \"; path=/; domain=\" + host;\n } catch (exp) {}\n};\n\nexport const getGleapCookie = (name) => {\n try {\n var nameEQ = name + \"=\";\n var ca = document.cookie.split(\";\");\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n while (c.charAt(0) == \" \") c = c.substring(1, c.length);\n if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);\n }\n } catch (exp) {}\n return null;\n};\n\nexport const eraseGleapCookie = (name) => {\n try {\n const host = removeSubDomain(window.location.host.split(\":\")[0]);\n document.cookie =\n name + \"=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT; Domain=\" + host;\n } catch (exp) {}\n};\n\nexport const getDOMElementDescription = (element, html = true) => {\n var innerText = truncateString(element.innerText || \"\", 40)\n .replace(/(\\r\\n|\\n|\\r)/gm, \"\")\n .replace(/ +(?= )/g, \"\");\n var elementId = \"\";\n var elementClass = \"\";\n if (typeof element.getAttribute !== \"undefined\") {\n const elemId = element.getAttribute(\"id\");\n if (elemId) {\n elementId = ` id=\"${elemId}\"`;\n }\n const elemClass = element.getAttribute(\"class\");\n if (elemClass) {\n elementClass = ` class=\"${elemClass}\"`;\n }\n }\n const elementTag = (element.tagName || \"\").toLowerCase();\n\n var htmlPre = \"<\";\n var htmlPost = \">\";\n if (!html) {\n htmlPre = \"[\";\n htmlPost = \"]\";\n }\n\n return `${htmlPre}${elementTag}${elementId}${elementClass}${htmlPost}${innerText}${htmlPre}/${elementTag}${htmlPost}`;\n};\n\nexport const runFunctionWhenDomIsReady = (callback) => {\n if (\n document.readyState === \"complete\" ||\n document.readyState === \"loaded\" ||\n document.readyState === \"interactive\"\n ) {\n callback();\n } else {\n document.addEventListener(\"DOMContentLoaded\", () => {\n callback();\n });\n }\n};\n\nexport const fixGleapHeight = () => {\n try {\n if (\n \"visualViewport\" in window &&\n /iPad|iPhone|iPod/.test(navigator.userAgent)\n ) {\n let initialHeight = window.innerHeight;\n\n function updateContainerHeight() {\n try {\n const gleapFrameContainer = document.querySelector(\n \".gleap-frame-container-inner iframe\"\n );\n\n if (!gleapFrameContainer) {\n return;\n }\n\n // Check if the keyboard is open\n if (window.visualViewport.height < initialHeight) {\n gleapFrameContainer.style.setProperty(\n \"max-height\",\n window.visualViewport.height + \"px\",\n \"important\"\n );\n } else {\n // Remove the padding bottom\n gleapFrameContainer.style.removeProperty(\"max-height\");\n }\n } catch (error) {}\n }\n\n function handleOrientationChange() {\n try {\n // Update initial dimensions\n initialHeight = window.innerHeight;\n updateContainerHeight();\n } catch (error) {}\n }\n\n // Update on resize (keyboard show/hide and viewport resize)\n window.visualViewport.addEventListener(\"resize\", updateContainerHeight);\n\n // Handle orientation changes\n window.addEventListener(\"orientationchange\", handleOrientationChange);\n\n // Update initially\n updateContainerHeight();\n }\n } catch (error) {}\n};\n","import { GleapSession, GleapTranslationManager } from \"./Gleap\"; // Adjust path if needed\n\n// Enum for request states\nconst RequestStatus = {\n PENDING: \"pending\",\n SUCCESS: \"success\",\n ERROR: \"error\",\n};\n\nclass ChecklistNetworkManager {\n static instance = null;\n\n /** @private {Map>} outboundId -> Promise */\n validationRequests = new Map();\n /** @private {Map} */\n validationCache = new Map(); // Caches final results (success/error)\n\n /** @private {Map>} internalId -> Promise */\n fetchRequests = new Map();\n /** @private {Map} */\n fetchCache = new Map(); // Caches final results (success/error)\n\n // Private constructor for Singleton\n constructor() {\n if (ChecklistNetworkManager.instance) {\n return ChecklistNetworkManager.instance;\n }\n ChecklistNetworkManager.instance = this;\n }\n\n /**\n * Gets the singleton instance of the ChecklistNetworkManager.\n * @returns {ChecklistNetworkManager} The singleton instance.\n */\n static getInstance() {\n if (!ChecklistNetworkManager.instance) {\n ChecklistNetworkManager.instance = new ChecklistNetworkManager();\n }\n return ChecklistNetworkManager.instance;\n }\n\n clearCache() {\n this.validationCache.clear();\n this.fetchCache.clear();\n this.validationRequests.clear();\n this.fetchRequests.clear();\n }\n\n /**\n * @private\n * Gets common query parameters for API requests.\n * @returns {string} Query parameter string.\n */\n _getQueryParams() {\n const gleapSessionInstance = GleapSession.getInstance();\n const session = gleapSessionInstance?.session;\n const lang =\n GleapTranslationManager.getInstance().getActiveLanguage() || \"en\";\n return `gleapId=${session?.gleapId || \"\"}&gleapHash=${\n session?.gleapHash || \"\"\n }&lang=${lang}`;\n }\n\n /**\n * @private\n * Gets the API base URL.\n * @returns {string | null} The API URL or null if not configured.\n */\n _getApiUrl() {\n const gleapSessionInstance = GleapSession.getInstance();\n return gleapSessionInstance?.apiUrl || null;\n }\n\n /**\n * @private\n * Makes an XMLHttpRequest and returns a Promise.\n * @param {string} method - HTTP method.\n * @param {string} url - The request URL.\n * @param {object|null} data - Data to send in the request body.\n * @returns {Promise} Promise resolving with parsed JSON response on success, rejecting on error.\n */\n _makeRequest(method, url, data) {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n xhr.open(method, url);\n\n const gleapSessionInstance = GleapSession.getInstance();\n gleapSessionInstance?.injectSession(xhr); // Inject session headers\n\n if (data) {\n xhr.setRequestHeader(\"Content-Type\", \"application/json;charset=UTF-8\");\n }\n\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n if (xhr.status >= 200 && xhr.status < 300) {\n try {\n // Handle potential empty success responses (e.g., 204)\n const responseData = xhr.responseText\n ? JSON.parse(xhr.responseText)\n : null;\n resolve(responseData);\n } catch (err) {\n reject({\n status: xhr.status,\n statusText: \"JSON Parse Error\",\n responseText: xhr.responseText,\n error: err,\n });\n }\n } else {\n reject({\n status: xhr.status,\n statusText: xhr.statusText,\n responseText: xhr.responseText,\n });\n }\n }\n };\n\n xhr.onerror = () => {\n reject({ status: 0, statusText: \"Network Error\", responseText: null });\n };\n\n xhr.send(data ? JSON.stringify(data) : null);\n });\n }\n\n /**\n * @private\n * Creates a cache key from outboundId and sharedKey\n * @param {string} outboundId - The public/outbound checklist ID.\n * @param {string|undefined} sharedKey - Optional shared key.\n * @returns {string} Combined cache key.\n */\n _createCacheKey(outboundId, sharedKey) {\n return sharedKey ? `${outboundId}::${sharedKey}` : outboundId;\n }\n\n /**\n * Validates an outbound checklist ID, returning a Promise for the internal ID.\n * Manages caching and deduplicates requests.\n * @param {string} outboundId - The public/outbound checklist ID.\n * @param {string} [sharedKey] - Optional shared key for the checklist.\n * @returns {Promise} A promise that resolves with the internal checklist ID.\n */\n validateChecklist(outboundId, sharedKey) {\n const cacheKey = this._createCacheKey(outboundId, sharedKey);\n\n // 1. Check cache for final result (success or error)\n const cachedResult = this.validationCache.get(cacheKey);\n if (cachedResult) {\n if (cachedResult.status === RequestStatus.SUCCESS) {\n return Promise.resolve(cachedResult.internalId);\n } else {\n return Promise.reject(cachedResult.error);\n }\n }\n\n // 2. Check for an ongoing request\n if (this.validationRequests.has(cacheKey)) {\n return this.validationRequests.get(cacheKey);\n }\n\n // 3. Start a new request\n const apiUrl = this._getApiUrl();\n if (!apiUrl) {\n const error = new Error(\n \"ChecklistNetworkManager: Gleap API URL not configured.\"\n );\n this.validationCache.set(cacheKey, {\n status: RequestStatus.ERROR,\n error,\n });\n return Promise.reject(error);\n }\n\n const url = `${apiUrl}/outbound/checklists?${this._getQueryParams()}`;\n const requestPromise = this._makeRequest(\"POST\", url, {\n outboundId,\n sharedKey,\n })\n .then((responseData) => {\n if (responseData && responseData.id) {\n this.validationCache.set(cacheKey, {\n status: RequestStatus.SUCCESS,\n internalId: responseData.id,\n });\n return responseData.id;\n } else {\n const error = new Error(\"Validation response missing checklist ID.\");\n this.validationCache.set(cacheKey, {\n status: RequestStatus.ERROR,\n error: responseData || error,\n });\n throw error; // Rethrow to be caught by catch block\n }\n })\n .catch((error) => {\n // Store the error object itself in the cache\n this.validationCache.set(cacheKey, {\n status: RequestStatus.ERROR,\n error,\n });\n throw error; // Re-throw so callers can catch it\n })\n .finally(() => {\n // Remove from pending requests map once done (success or fail)\n this.validationRequests.delete(cacheKey);\n });\n\n // Store the promise for potential concurrent requests\n this.validationRequests.set(cacheKey, requestPromise);\n return requestPromise;\n }\n\n /**\n * Fetches the full checklist data using the internal ID, returning a Promise.\n * Manages caching and deduplicates requests.\n * @param {string} internalId - The internal checklist ID.\n * @returns {Promise} A promise that resolves with the full checklist data.\n */\n fetchChecklist(internalId) {\n // 1. Check cache for final result (success or error)\n const cachedResult = this.fetchCache.get(internalId);\n if (cachedResult) {\n if (cachedResult.status === RequestStatus.SUCCESS) {\n // Return a deep copy to prevent mutation issues if multiple components use it\n return Promise.resolve(JSON.parse(JSON.stringify(cachedResult.data)));\n } else {\n return Promise.reject(cachedResult.error);\n }\n }\n\n // 2. Check for an ongoing request\n if (this.fetchRequests.has(internalId)) {\n // Return a promise that resolves with a deep copy\n return this.fetchRequests\n .get(internalId)\n .then((data) => JSON.parse(JSON.stringify(data)));\n }\n\n // 3. Start a new request\n const apiUrl = this._getApiUrl();\n if (!apiUrl) {\n const error = new Error(\n \"ChecklistNetworkManager: Gleap API URL not configured.\"\n );\n this.fetchCache.set(internalId, { status: RequestStatus.ERROR, error });\n return Promise.reject(error);\n }\n\n const url = `${apiUrl}/outbound/checklists/${internalId}?convertTipTap=true&${this._getQueryParams()}`;\n const requestPromise = this._makeRequest(\"GET\", url, null)\n .then((responseData) => {\n if (responseData) {\n // Cache the successful data\n this.fetchCache.set(internalId, {\n status: RequestStatus.SUCCESS,\n data: responseData,\n });\n // Return a deep copy of the data\n return JSON.parse(JSON.stringify(responseData));\n } else {\n // Should not happen with successful GET usually, but handle defensively\n const error = new Error(\n \"Empty response received for checklist fetch.\"\n );\n this.fetchCache.set(internalId, {\n status: RequestStatus.ERROR,\n error: responseData || error,\n });\n throw error;\n }\n })\n .catch((error) => {\n this.fetchCache.set(internalId, { status: RequestStatus.ERROR, error });\n throw error; // Re-throw so callers can catch it\n })\n .finally(() => {\n // Remove from pending requests map once done (success or fail)\n this.fetchRequests.delete(internalId);\n });\n\n this.fetchRequests.set(internalId, requestPromise);\n // Return a promise that resolves with a deep copy\n return requestPromise.then((data) => JSON.parse(JSON.stringify(data)));\n }\n}\n\nexport default ChecklistNetworkManager;\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n const lr = ['left', 'right'];\n const rl = ['right', 'left'];\n const tb = ['top', 'bottom'];\n const bt = ['bottom', 'top'];\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rl : lr;\n return isStart ? lr : rl;\n case 'left':\n case 'right':\n return isStart ? tb : bt;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n return {\n ...rect,\n top: rect.y,\n left: rect.x,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n ...rects.floating,\n x,\n y\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n if (!specifiedFallbackPlacements && fallbackAxisSideDirection !== 'none') {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$map$so;\n const placement = (_overflowsData$map$so = overflowsData.map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$map$so[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: 0,\n crossAxis: 0,\n alignmentAxis: null,\n ...rawValue\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = ['top', 'left'].includes(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const overflowAvailableHeight = height - overflow[heightSide];\n const overflowAvailableWidth = width - overflow[widthSide];\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if (isYAxis) {\n const maximumClippingWidth = width - overflow.left - overflow.right;\n availableWidth = alignment || noShift ? min(overflowAvailableWidth, maximumClippingWidth) : maximumClippingWidth;\n } else {\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n availableHeight = alignment || noShift ? min(overflowAvailableHeight, maximumClippingHeight) : maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n // Browsers without `ShadowRoot` support.\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isContainingBlock(element) {\n const webkit = isWebKit();\n const css = getComputedStyle(element);\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n return css.transform !== 'none' || css.perspective !== 'none' || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else {\n currentNode = getParentNode(currentNode);\n }\n }\n return null;\n}\nfunction isWebKit() {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nfunction isLastTraversableNode(node) {\n return ['html', 'body', '#document'].includes(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.pageXOffset,\n scrollTop: element.pageYOffset\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], win.frameElement && traverseIframes ? getOverflowAncestors(win.frameElement) : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isWebKit };\n","import { rectToClientRect, autoPlacement as autoPlacement$1, shift as shift$1, flip as flip$1, size as size$1, hide as hide$1, arrow as arrow$1, inline as inline$1, limitShift as limitShift$1, computePosition as computePosition$1 } from '@floating-ui/core';\nexport { detectOverflow, offset } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement, isElement, getWindow, isWebKit, getDocumentElement, getNodeName, isOverflowElement, getNodeScroll, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = currentWin.frameElement;\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = currentWin.frameElement;\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\nconst topLayerSelectors = [':popover-open', ':modal'];\nfunction isTopLayer(floating) {\n return topLayerSelectors.some(selector => {\n try {\n return floating.matches(selector);\n } catch (e) {\n return false;\n }\n });\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\nfunction getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n ...clippingAncestor,\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n const x = rect.left + scroll.scrollLeft - offsets.x;\n const y = rect.top + scroll.scrollTop - offsets.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n return element.offsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const window = getWindow(element);\n if (!isHTMLElement(element) || isTopLayer(element)) {\n return window;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && !isContainingBlock(offsetParent))) {\n return window;\n }\n return offsetParent || getContainingBlock(element) || window;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n ...(await getDimensionsFn(data.floating))\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const {\n left,\n top,\n width,\n height\n } = element.getBoundingClientRect();\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 100);\n } else {\n refresh(false, ratio);\n }\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle `;\n document.body.appendChild(elem);\n\n this.gleapFrameContainer = elem;\n this.gleapFrame = document.querySelector(\".gleap-frame\");\n\n this.updateFrameStyle();\n\n // Show loading preview for widget app mode.\n if (this.appMode === \"widget\") {\n this.showFrameContainer(true);\n }\n });\n });\n };\n\n showImage = (url) => {\n runFunctionWhenDomIsReady(() => {\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-image-view\";\n elem.innerHTML = `
\n \n
`;\n document.body.appendChild(elem);\n\n const closeElement = () => {\n elem.remove();\n };\n\n const close = elem.querySelector(\".gleap-image-view-close\");\n close.addEventListener(\"click\", () => {\n closeElement();\n });\n\n elem.addEventListener(\"click\", (e) => {\n if (e.target === elem) {\n closeElement();\n }\n });\n });\n };\n\n updateFrameStyle = () => {\n if (!this.gleapFrameContainer) {\n return;\n }\n\n const surveyStyle = \"gleap-frame-container--survey\";\n const extendedStyle = \"gleap-frame-container--extended\";\n const surveyFullStyle = \"gleap-frame-container--survey-full\";\n const classicStyle = \"gleap-frame-container--classic\";\n const classicStyleLeft = \"gleap-frame-container--classic-left\";\n const modernStyleLeft = \"gleap-frame-container--modern-left\";\n const noButtonStyleLeft = \"gleap-frame-container--no-button\";\n const allStyles = [\n classicStyle,\n classicStyleLeft,\n extendedStyle,\n modernStyleLeft,\n noButtonStyleLeft,\n surveyStyle,\n surveyFullStyle,\n ];\n for (let i = 0; i < allStyles.length; i++) {\n this.gleapFrameContainer.classList.remove(allStyles[i]);\n }\n\n var styleToApply = undefined;\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM\n ) {\n styleToApply = classicStyle;\n }\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT\n ) {\n styleToApply = classicStyleLeft;\n }\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_BOTTOM_LEFT\n ) {\n styleToApply = modernStyleLeft;\n }\n if (GleapFeedbackButtonManager.getInstance().buttonHidden === null) {\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_NONE\n ) {\n styleToApply = noButtonStyleLeft;\n }\n } else {\n if (GleapFeedbackButtonManager.getInstance().buttonHidden) {\n styleToApply = noButtonStyleLeft;\n }\n }\n if (styleToApply) {\n this.gleapFrameContainer.classList.add(styleToApply);\n }\n\n if (this.appMode === \"survey\") {\n this.gleapFrameContainer.classList.add(surveyStyle);\n }\n if (this.appMode === \"survey_full\" || this.appMode === \"survey_web\") {\n this.gleapFrameContainer.classList.add(surveyFullStyle);\n }\n if (this.appMode === \"extended\") {\n this.gleapFrameContainer.classList.add(extendedStyle);\n }\n\n this.gleapFrameContainer.setAttribute(\n \"dir\",\n GleapTranslationManager.getInstance().isRTLLayout ? \"rtl\" : \"ltr\"\n );\n };\n\n showFrameContainer(showLoader) {\n if (!this.gleapFrameContainer) {\n return;\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const loadingClass = \"gleap-frame-container--loading\";\n if (this.gleapFrameContainer.classList) {\n this.gleapFrameContainer.classList.remove(\n \"gleap-frame-container--hidden\"\n );\n if (showLoader) {\n this.gleapFrameContainer.classList.add(loadingClass);\n\n if (flowConfig.disableBGFade) {\n this.gleapFrameContainer.classList.add(\n \"gleap-frame-container--loading-nofade\"\n );\n }\n if (flowConfig.disableBGGradient) {\n this.gleapFrameContainer.classList.add(\n \"gleap-frame-container--loading-nogradient\"\n );\n }\n } else {\n this.gleapFrameContainer.classList.remove(loadingClass);\n }\n\n setTimeout(() => {\n this.gleapFrameContainer.classList.add(\n \"gleap-frame-container--animate\"\n );\n }, 500);\n }\n\n this.widgetOpened = true;\n this.updateUI();\n }\n\n runWidgetShouldOpenCallback() {\n if (!this.gleapFrameContainer) {\n return;\n }\n\n this.workThroughQueue();\n\n Gleap.getInstance().setGlobalDataItem(\"snapshotPosition\", {\n x: window.scrollX,\n y: window.scrollY,\n });\n\n this.showFrameContainer(false);\n this.updateWidgetStatus();\n\n GleapEventManager.notifyEvent(\"open\");\n this.registerEscListener();\n }\n\n updateUI() {\n // Clear notifications only when not opening a survey.\n GleapNotificationManager.getInstance().clearAllNotifications(\n this.isSurvey()\n );\n\n GleapFeedbackButtonManager.getInstance().updateNotificationBadge(0);\n GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n }\n\n showWidget() {\n setTimeout(() => {\n if (this.gleapFrameContainer) {\n this.runWidgetShouldOpenCallback();\n } else {\n GleapFrameManager.getInstance().injectFrame();\n }\n this.updateUI();\n }, 0);\n }\n\n updateWidgetStatus() {\n this.sendMessage({\n name: \"widget-status-update\",\n data: {\n isWidgetOpen: this.widgetOpened,\n },\n });\n }\n\n hideMarkerManager() {\n if (this.markerManager) {\n this.markerManager.clear();\n this.markerManager = null;\n }\n }\n\n hideWidget(resetRoutes = false) {\n // Prevent for survey web.\n if (this.appMode === \"survey_web\") {\n return;\n }\n\n this.hideMarkerManager();\n if (this.gleapFrameContainer) {\n this.gleapFrameContainer.classList.add(\"gleap-frame-container--hidden\");\n this.gleapFrameContainer.classList.remove(\n \"gleap-frame-container--animate\"\n );\n }\n if (resetRoutes) {\n this.sendMessage({\n name: \"reset-routes\",\n data: {},\n });\n }\n this.widgetOpened = false;\n this.updateWidgetStatus();\n GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n GleapEventManager.notifyEvent(\"close\");\n GleapNotificationManager.getInstance().reloadNotificationsFromCache();\n\n this.unregisterEscListener();\n\n if (typeof window !== \"undefined\" && typeof window.focus !== \"undefined\") {\n window.focus();\n }\n }\n\n sendMessage(data, queue = false) {\n try {\n this.gleapFrame = document.querySelector(\".gleap-frame\");\n if (this.comReady && this.gleapFrame && this.gleapFrame.contentWindow) {\n this.gleapFrame.contentWindow.postMessage(JSON.stringify(data), \"*\");\n } else {\n if (queue) {\n this.queue.push(data);\n }\n }\n } catch (e) {}\n }\n\n sendSessionUpdate() {\n this.sendMessage({\n name: \"session-update\",\n data: {\n sessionData: GleapSession.getInstance().getSession(),\n apiUrl: GleapSession.getInstance().apiUrl,\n sdkKey: GleapSession.getInstance().sdkKey,\n },\n });\n }\n\n sendConfigUpdate() {\n if (!this.comReady) {\n return;\n }\n\n this.sendMessage({\n name: \"config-update\",\n data: {\n config: GleapConfigManager.getInstance().getFlowConfig(),\n aiTools: GleapConfigManager.getInstance().getAiTools(),\n overrideLanguage:\n GleapTranslationManager.getInstance().getOverrideLanguage(),\n },\n });\n\n this.updateFrameStyle();\n }\n\n showDrawingScreen(type) {\n this.hideWidget();\n\n // Show screen drawing.\n this.markerManager = new GleapMarkerManager(type);\n this.markerManager.show((success) => {\n if (!success) {\n this.hideMarkerManager();\n }\n this.showWidget();\n });\n }\n\n workThroughQueue() {\n const workQueue = [...this.queue];\n this.queue = [];\n for (let i = 0; i < workQueue.length; i++) {\n this.sendMessage(workQueue[i], true);\n }\n }\n\n startCommunication() {\n // Listen for messages.\n this.addMessageListener((data) => {\n if (data.name === \"ping\") {\n this.comReady = true;\n this.sendConfigUpdate();\n this.sendSessionUpdate();\n this.workThroughQueue();\n setTimeout(() => {\n this.runWidgetShouldOpenCallback();\n }, 300);\n }\n\n if (data.name === \"play-ping\") {\n GleapAudioManager.ping();\n }\n\n if (data.name === \"open-image\") {\n this.showImage(data.data.url);\n }\n\n if (data.name === \"page-changed\") {\n if (\n data.data &&\n (data.data.name === \"newsdetails\" || data.data.name === \"appextended\")\n ) {\n this.setAppMode(\"extended\");\n } else {\n if (this.appMode === \"extended\") {\n this.setAppMode(\"widget\");\n }\n }\n }\n\n if (data.name === \"collect-ticket-data\") {\n var ticketData = {\n customData: GleapCustomDataManager.getInstance().getCustomData(),\n metaData: GleapMetaDataManager.getInstance().getMetaData(),\n consoleLog: GleapConsoleLogManager.getInstance().getLogs(),\n networkLogs: GleapNetworkIntercepter.getInstance().getRequests(),\n customEventLog: GleapStreamedEvent.getInstance().getEventArray(),\n formData: GleapCustomDataManager.getInstance().getTicketAttributes(),\n };\n\n // Add tags\n const tags = GleapTagManager.getInstance().getTags();\n if (tags && tags.length > 0) {\n ticketData.tags = tags;\n }\n\n this.sendMessage({\n name: \"collect-ticket-data\",\n data: ticketData,\n });\n }\n\n if (data.name === \"height-update\") {\n this.frameHeight = data.data;\n\n const innerContainer = document.querySelector(\n \".gleap-frame-container-inner\"\n );\n if (\n (this.appMode === \"survey\" ||\n this.appMode === \"survey_full\" ||\n this.appMode === \"survey_web\") &&\n innerContainer\n ) {\n innerContainer.style.maxHeight = `${this.frameHeight}px`;\n }\n }\n\n if (data.name === \"notify-event\") {\n GleapEventManager.notifyEvent(data.data.type, data.data.data);\n }\n\n if (data.name === \"cleanup-drawings\") {\n this.hideMarkerManager();\n }\n\n if (data.name === \"open-url\") {\n const url = data.data;\n const newTab = data.newTab ? true : false;\n this.urlHandler(url, newTab);\n }\n\n if (data.name === \"start-product-tour\") {\n Gleap.startProductTour(data.data?.tourId, true);\n }\n\n if (data.name === \"run-custom-action\") {\n GleapCustomActionManager.triggerCustomAction(data.data, {\n shareToken: data.shareToken,\n });\n }\n\n if (data.name === \"close-widget\") {\n this.hideWidget();\n }\n\n if (data.name === \"tool-execution\") {\n GleapEventManager.notifyEvent(\"tool-execution\", data.data);\n }\n\n if (data.name === \"send-feedback\") {\n const formData = data.data.formData;\n const action = data.data.action;\n const outboundId = data.data.outboundId;\n const spamToken = data.data.spamToken;\n\n const feedback = new GleapFeedback(\n action.feedbackType,\n \"MEDIUM\",\n formData,\n false,\n action.excludeData,\n outboundId,\n spamToken\n );\n feedback\n .sendFeedback()\n .then((feedbackData) => {\n this.sendMessage({\n name: \"feedback-sent\",\n data: feedbackData,\n });\n GleapEventManager.notifyEvent(\"feedback-sent\", formData);\n\n if (outboundId && outboundId.length > 0) {\n GleapEventManager.notifyEvent(\"outbound-sent\", {\n outboundId: outboundId,\n outbound: action,\n formData: formData,\n });\n\n try {\n delete formData.reportedBy;\n } catch (e) {}\n Gleap.trackEvent(`outbound-${outboundId}-submitted`, formData);\n }\n })\n .catch((error) => {\n this.sendMessage({\n name: \"feedback-sending-failed\",\n data: \"Something went wrong, please try again.\",\n });\n GleapEventManager.notifyEvent(\"error-while-sending\");\n });\n }\n\n if (data.name === \"start-screen-drawing\") {\n this.showDrawingScreen(data.data);\n }\n });\n\n // Add window message listener.\n window.addEventListener(\"message\", (event) => {\n if (\n event.origin !== this.frameUrl &&\n event.origin !== GleapBannerManager.getInstance().bannerUrl\n ) {\n return;\n }\n\n try {\n const data = JSON.parse(event.data);\n for (var i = 0; i < this.listeners.length; i++) {\n if (this.listeners[i]) {\n this.listeners[i](data);\n }\n }\n } catch (exp) {}\n });\n }\n\n addMessageListener(callback) {\n this.listeners.push(callback);\n }\n}\n","import { isMobile } from \"./GleapHelper\";\n\nexport default class GleapMetaDataManager {\n sessionStart = new Date();\n appBuildNumber = \"\";\n appVersionCode = \"\";\n environment = \"prod\";\n\n // GleapMetaDataManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapMetaDataManager();\n }\n return this.instance;\n }\n\n /**\n * Sets the app version code.\n * @param {string} appVersionCode\n */\n static setAppVersionCode(appVersionCode) {\n this.getInstance().appVersionCode = appVersionCode;\n }\n\n /**\n * Sets the app version code.\n * @param {string} appVersionCode\n */\n static setAppBuildNumber(appBuildNumber) {\n this.getInstance().appBuildNumber = appBuildNumber;\n }\n\n getSessionDuration() {\n const now = new Date();\n return Math.round((now.getTime() - this.sessionStart.getTime()) / 1000);\n }\n\n getMetaData() {\n var nAgt = navigator.userAgent;\n var browserName = navigator.appName;\n var fullVersion = \"\" + parseFloat(navigator.appVersion);\n var majorVersion = parseInt(navigator.appVersion, 10);\n var nameOffset, verOffset, ix;\n\n // In Opera, the true version is after \"Opera\" or after \"Version\"\n if ((verOffset = nAgt.indexOf(\"Opera\")) !== -1) {\n browserName = \"Opera\";\n fullVersion = nAgt.substring(verOffset + 6);\n if ((verOffset = nAgt.indexOf(\"Version\")) !== -1)\n fullVersion = nAgt.substring(verOffset + 8);\n }\n // In MSIE, the true version is after \"MSIE\" in userAgent\n else if ((verOffset = nAgt.indexOf(\"MSIE\")) !== -1) {\n browserName = \"Microsoft Internet Explorer\";\n fullVersion = nAgt.substring(verOffset + 5);\n }\n // In Chrome, the true version is after \"Chrome\"\n else if ((verOffset = nAgt.indexOf(\"Chrome\")) !== -1) {\n browserName = \"Chrome\";\n fullVersion = nAgt.substring(verOffset + 7);\n }\n // In Safari, the true version is after \"Safari\" or after \"Version\"\n else if ((verOffset = nAgt.indexOf(\"Safari\")) !== -1) {\n browserName = \"Safari\";\n fullVersion = nAgt.substring(verOffset + 7);\n if ((verOffset = nAgt.indexOf(\"Version\")) !== -1)\n fullVersion = nAgt.substring(verOffset + 8);\n }\n // In Firefox, the true version is after \"Firefox\"\n else if ((verOffset = nAgt.indexOf(\"Firefox\")) !== -1) {\n browserName = \"Firefox\";\n fullVersion = nAgt.substring(verOffset + 8);\n }\n // In most other browsers, \"name/version\" is at the end of userAgent\n else if (\n (nameOffset = nAgt.lastIndexOf(\" \") + 1) <\n (verOffset = nAgt.lastIndexOf(\"/\"))\n ) {\n browserName = nAgt.substring(nameOffset, verOffset);\n fullVersion = nAgt.substring(verOffset + 1);\n if (browserName.toLowerCase() === browserName.toUpperCase()) {\n browserName = navigator.appName;\n }\n }\n // trim the fullVersion string at semicolon/space if present\n if ((ix = fullVersion.indexOf(\";\")) !== -1)\n fullVersion = fullVersion.substring(0, ix);\n if ((ix = fullVersion.indexOf(\" \")) !== -1)\n fullVersion = fullVersion.substring(0, ix);\n\n majorVersion = parseInt(\"\" + fullVersion, 10);\n if (isNaN(majorVersion)) {\n fullVersion = \"\" + parseFloat(navigator.appVersion);\n majorVersion = parseInt(navigator.appVersion, 10);\n }\n\n var OSName = \"Unknown OS\";\n if (navigator.appVersion.indexOf(\"Win\") !== -1) OSName = \"Windows\";\n if (navigator.appVersion.indexOf(\"Mac\") !== -1) OSName = \"MacOS\";\n if (navigator.appVersion.indexOf(\"X11\") !== -1) OSName = \"UNIX\";\n if (navigator.appVersion.indexOf(\"Linux\") !== -1) OSName = \"Linux\";\n if (navigator.appVersion.indexOf(\"iPad\") !== -1) OSName = \"iPad\";\n if (navigator.appVersion.indexOf(\"iPhone\") !== -1) OSName = \"iPhone\";\n if (navigator.appVersion.indexOf(\"Android\") !== -1) OSName = \"Android\";\n\n return {\n browserName: browserName + \"(\" + fullVersion + \")\",\n userAgent: nAgt,\n browser: browserName,\n systemName: OSName,\n buildVersionNumber: this.appBuildNumber,\n releaseVersionNumber: this.appVersionCode,\n sessionDuration: this.getSessionDuration(),\n devicePixelRatio: window.devicePixelRatio,\n screenWidth: window.screen.width,\n screenHeight: window.screen.height,\n innerWidth: window.innerWidth,\n innerHeight: window.innerHeight,\n currentUrl: window.location.href,\n language: navigator.language || navigator.userLanguage,\n mobile: isMobile(),\n sdkVersion: SDK_VERSION,\n sdkType: \"javascript\",\n environment: this.environment,\n };\n }\n}\n","import { truncateString } from \"./GleapHelper\";\n\nexport default class GleapConsoleLogManager {\n logArray = [];\n disabled = false;\n originalConsoleLog;\n logMaxLength = 500;\n\n // GleapConsoleLogManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapConsoleLogManager();\n }\n return this.instance;\n }\n\n /**\n * Return the console logs\n * @returns {any[]} logs\n */\n getLogs() {\n return this.logArray;\n }\n\n /**\n * Revert console log overwrite.\n */\n stop() {\n this.disabled = true;\n if (this.originalConsoleLog) {\n window.console = this.originalConsoleLog;\n }\n }\n\n /**\n * Add message with log level to logs.\n * @param {*} message\n * @param {*} logLevel\n * @returns\n */\n addLog(message, logLevel = \"INFO\") {\n if (!message || message.length <= 0) {\n return;\n }\n\n this.logArray.push({\n log: truncateString(message, 1000),\n date: new Date(),\n priority: logLevel,\n });\n\n if (this.logArray.length > this.logMaxLength) {\n this.logArray.shift();\n }\n }\n\n /**\n * Add entry to logs.\n * @param {*} args\n * @param {*} logLevel\n * @returns\n */\n addLogWithArgs(args, logLevel) {\n if (!args || args.length <= 0) {\n return;\n }\n\n var log = \"\";\n try {\n for (var i = 0; i < args.length; i++) {\n log += args[i] + \" \";\n }\n } catch (exp) {}\n\n this.addLog(log, logLevel);\n }\n\n /**\n * Start console log overwrite.\n */\n start() {\n if (this.disabled) {\n return;\n }\n\n const self = this;\n window.console = (function (origConsole) {\n if (!window.console || !origConsole) {\n origConsole = {};\n }\n\n self.originalConsoleLog = origConsole;\n\n return {\n ...origConsole,\n log: function () {\n self.addLogWithArgs(arguments, \"INFO\");\n origConsole.log && origConsole.log.apply(origConsole, arguments);\n },\n warn: function () {\n self.addLogWithArgs(arguments, \"WARNING\");\n origConsole.warn && origConsole.warn.apply(origConsole, arguments);\n },\n error: function () {\n self.addLogWithArgs(arguments, \"ERROR\");\n origConsole.error && origConsole.error.apply(origConsole, arguments);\n },\n info: function (v) {\n self.addLogWithArgs(arguments, \"INFO\");\n origConsole.info && origConsole.info.apply(origConsole, arguments);\n },\n };\n })(window.console);\n }\n}\n","import { GleapConsoleLogManager, GleapFrameManager, handleGleapLink } from \"./Gleap\";\nimport { getDOMElementDescription } from \"./GleapHelper\";\n\nexport default class GleapClickListener {\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapClickListener();\n }\n return this.instance;\n }\n\n start() {\n document.addEventListener(\"click\", (e) => {\n if (!e.target) {\n return;\n }\n\n if (e.target.tagName === 'A' && e.target.protocol === 'gleap:') {\n e.preventDefault();\n\n const href = e.target.href;\n handleGleapLink(href);\n }\n\n if (!GleapFrameManager.getInstance().isOpened()) {\n GleapConsoleLogManager.getInstance().addLog(\n getDOMElementDescription(e.target),\n \"CLICK\"\n );\n }\n });\n }\n}\n","import { gleapDataParser } from \"./GleapHelper\";\n\nexport default class GleapCustomDataManager {\n customData = {};\n ticketAttributes = {};\n\n // GleapCustomDataManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapCustomDataManager();\n }\n return this.instance;\n }\n\n /**\n * Returns the custom data object\n * @returns {*}\n */\n getCustomData() {\n return this.customData;\n }\n\n /**\n * Set custom data that will be attached to the bug-report.\n * @param {*} data\n */\n attachCustomData(data) {\n this.customData = Object.assign(\n this.customData,\n gleapDataParser(data)\n );\n }\n\n /**\n * Add one key value pair to the custom data object\n * @param {*} key The key of the custom data entry you want to add.\n * @param {*} value The custom data you want to add.\n */\n setCustomData(key, value) {\n this.customData[key] = value;\n }\n\n /**\n * Remove one key value pair of the custom data object\n * @param {*} key The key of the custom data entry you want to remove.\n */\n removeCustomData(key) {\n delete this.customData[key];\n }\n\n /**\n * Clear the custom data\n */\n clearCustomData() {\n this.customData = {};\n }\n\n /**\n * This method is used to set ticket attributes programmatically.\n * @param {*} key The key of the attribute you want to add.\n * @param {*} value The value to set.\n */\n setTicketAttribute(key, value) {\n this.ticketAttributes[key] = value;\n }\n\n /**\n * This method is used to unset ticket attributes programmatically.\n * @param {*} key The key of the attribute you want to unset.\n */\n unsetTicketAttribute(key) {\n delete this.ticketAttributes[key];\n }\n\n /**\n * This method is used to clear ticket attributes programmatically.\n */\n clearTicketAttributes() {\n this.ticketAttributes = {};\n }\n\n getTicketAttributes() {\n return this.ticketAttributes;\n }\n}\n","import Gleap from \"./Gleap\";\n\nexport default class GleapEventManager {\n eventListeners = {};\n\n // GleapEventManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapEventManager();\n }\n return this.instance;\n }\n\n /**\n * Notify all registrants for event.\n */\n static notifyEvent(event, data = {}) {\n if (event === \"flow-started\") {\n\n const gleapInstance = Gleap.getInstance();\n gleapInstance.setGlobalDataItem(\"webReplay\", null);\n gleapInstance.setGlobalDataItem(\"screenRecordingData\", null);\n gleapInstance.takeCurrentReplay();\n }\n\n const eventListeners = this.getInstance().eventListeners[event];\n if (eventListeners) {\n for (var i = 0; i < eventListeners.length; i++) {\n const eventListener = eventListeners[i];\n if (eventListener) {\n eventListener(data);\n }\n }\n }\n }\n\n /**\n * Register events for Gleap.\n * @param {*} eventName\n * @param {*} callback\n */\n static on(eventName, callback) {\n const instance = this.getInstance();\n if (!instance.eventListeners[eventName]) {\n instance.eventListeners[eventName] = [];\n }\n instance.eventListeners[eventName].push(callback);\n }\n}\n","export default class GleapCustomActionManager {\n customActionCallbacks = [];\n\n // GleapCustomActionManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapCustomActionManager();\n }\n return this.instance;\n }\n\n /**\n * Register custom action\n */\n static registerCustomAction(customAction) {\n const instance = this.getInstance();\n if (instance.customActionCallbacks) {\n instance.customActionCallbacks.push(customAction);\n }\n }\n\n /**\n * Triggers a custom action\n */\n static triggerCustomAction(name, data) {\n const instance = this.getInstance();\n if (instance.customActionCallbacks) {\n for (var i = 0; i < instance.customActionCallbacks.length; i++) {\n var callback = instance.customActionCallbacks[i];\n if (callback) {\n callback({\n name,\n ...(data ? data : {}),\n });\n }\n }\n }\n }\n}\n","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar _a;\nvar __defProp$1 = Object.defineProperty;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$1 = (obj, key, value) => __defNormalProp$1(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar NodeType$3 = /* @__PURE__ */ ((NodeType2) => {\n NodeType2[NodeType2[\"Document\"] = 0] = \"Document\";\n NodeType2[NodeType2[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType2[NodeType2[\"Element\"] = 2] = \"Element\";\n NodeType2[NodeType2[\"Text\"] = 3] = \"Text\";\n NodeType2[NodeType2[\"CDATA\"] = 4] = \"CDATA\";\n NodeType2[NodeType2[\"Comment\"] = 5] = \"Comment\";\n return NodeType2;\n})(NodeType$3 || {});\nconst testableAccessors$1 = {\n Node: [\"childNodes\", \"parentNode\", \"parentElement\", \"textContent\"],\n ShadowRoot: [\"host\", \"styleSheets\"],\n Element: [\"shadowRoot\", \"querySelector\", \"querySelectorAll\"],\n MutationObserver: []\n};\nconst testableMethods$1 = {\n Node: [\"contains\", \"getRootNode\"],\n ShadowRoot: [\"getSelection\"],\n Element: [],\n MutationObserver: [\"constructor\"]\n};\nconst untaintedBasePrototype$1 = {};\nconst isAngularZonePresent$1 = () => {\n return !!globalThis.Zone;\n};\nfunction getUntaintedPrototype$1(key) {\n if (untaintedBasePrototype$1[key])\n return untaintedBasePrototype$1[key];\n const defaultObj = globalThis[key];\n const defaultPrototype = defaultObj.prototype;\n const accessorNames = key in testableAccessors$1 ? testableAccessors$1[key] : void 0;\n const isUntaintedAccessors = Boolean(\n accessorNames && // @ts-expect-error 2345\n accessorNames.every(\n (accessor) => {\n var _a2, _b;\n return Boolean(\n (_b = (_a2 = Object.getOwnPropertyDescriptor(defaultPrototype, accessor)) == null ? void 0 : _a2.get) == null ? void 0 : _b.toString().includes(\"[native code]\")\n );\n }\n )\n );\n const methodNames = key in testableMethods$1 ? testableMethods$1[key] : void 0;\n const isUntaintedMethods = Boolean(\n methodNames && methodNames.every(\n // @ts-expect-error 2345\n (method) => {\n var _a2;\n return typeof defaultPrototype[method] === \"function\" && ((_a2 = defaultPrototype[method]) == null ? void 0 : _a2.toString().includes(\"[native code]\"));\n }\n )\n );\n if (isUntaintedAccessors && isUntaintedMethods && !isAngularZonePresent$1()) {\n untaintedBasePrototype$1[key] = defaultObj.prototype;\n return defaultObj.prototype;\n }\n try {\n const iframeEl = document.createElement(\"iframe\");\n document.body.appendChild(iframeEl);\n const win = iframeEl.contentWindow;\n if (!win) return defaultObj.prototype;\n const untaintedObject = win[key].prototype;\n document.body.removeChild(iframeEl);\n if (!untaintedObject) return defaultPrototype;\n return untaintedBasePrototype$1[key] = untaintedObject;\n } catch {\n return defaultPrototype;\n }\n}\nconst untaintedAccessorCache$1 = {};\nfunction getUntaintedAccessor$1(key, instance, accessor) {\n var _a2;\n const cacheKey = `${key}.${String(accessor)}`;\n if (untaintedAccessorCache$1[cacheKey])\n return untaintedAccessorCache$1[cacheKey].call(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype$1(key);\n const untaintedAccessor = (_a2 = Object.getOwnPropertyDescriptor(\n untaintedPrototype,\n accessor\n )) == null ? void 0 : _a2.get;\n if (!untaintedAccessor) return instance[accessor];\n untaintedAccessorCache$1[cacheKey] = untaintedAccessor;\n return untaintedAccessor.call(instance);\n}\nconst untaintedMethodCache$1 = {};\nfunction getUntaintedMethod$1(key, instance, method) {\n const cacheKey = `${key}.${String(method)}`;\n if (untaintedMethodCache$1[cacheKey])\n return untaintedMethodCache$1[cacheKey].bind(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype$1(key);\n const untaintedMethod = untaintedPrototype[method];\n if (typeof untaintedMethod !== \"function\") return instance[method];\n untaintedMethodCache$1[cacheKey] = untaintedMethod;\n return untaintedMethod.bind(instance);\n}\nfunction childNodes$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"childNodes\");\n}\nfunction parentNode$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"parentNode\");\n}\nfunction parentElement$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"parentElement\");\n}\nfunction textContent$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"textContent\");\n}\nfunction contains$1(n2, other) {\n return getUntaintedMethod$1(\"Node\", n2, \"contains\")(other);\n}\nfunction getRootNode$1(n2) {\n return getUntaintedMethod$1(\"Node\", n2, \"getRootNode\")();\n}\nfunction host$1(n2) {\n if (!n2 || !(\"host\" in n2)) return null;\n return getUntaintedAccessor$1(\"ShadowRoot\", n2, \"host\");\n}\nfunction styleSheets$1(n2) {\n return n2.styleSheets;\n}\nfunction shadowRoot$1(n2) {\n if (!n2 || !(\"shadowRoot\" in n2)) return null;\n return getUntaintedAccessor$1(\"Element\", n2, \"shadowRoot\");\n}\nfunction querySelector$1(n2, selectors) {\n return getUntaintedAccessor$1(\"Element\", n2, \"querySelector\")(selectors);\n}\nfunction querySelectorAll$1(n2, selectors) {\n return getUntaintedAccessor$1(\"Element\", n2, \"querySelectorAll\")(selectors);\n}\nfunction mutationObserverCtor$1() {\n return getUntaintedPrototype$1(\"MutationObserver\").constructor;\n}\nconst index$1 = {\n childNodes: childNodes$1,\n parentNode: parentNode$1,\n parentElement: parentElement$1,\n textContent: textContent$1,\n contains: contains$1,\n getRootNode: getRootNode$1,\n host: host$1,\n styleSheets: styleSheets$1,\n shadowRoot: shadowRoot$1,\n querySelector: querySelector$1,\n querySelectorAll: querySelectorAll$1,\n mutationObserver: mutationObserverCtor$1\n};\nfunction isElement(n2) {\n return n2.nodeType === n2.ELEMENT_NODE;\n}\nfunction isShadowRoot(n2) {\n const hostEl = (\n // anchor and textarea elements also have a `host` property\n // but only shadow roots have a `mode` property\n n2 && \"host\" in n2 && \"mode\" in n2 && index$1.host(n2) || null\n );\n return Boolean(\n hostEl && \"shadowRoot\" in hostEl && index$1.shadowRoot(hostEl) === n2\n );\n}\nfunction isNativeShadowDom(shadowRoot2) {\n return Object.prototype.toString.call(shadowRoot2) === \"[object ShadowRoot]\";\n}\nfunction fixBrowserCompatibilityIssuesInCSS(cssText) {\n if (cssText.includes(\" background-clip: text;\") && !cssText.includes(\" -webkit-background-clip: text;\")) {\n cssText = cssText.replace(\n /\\sbackground-clip:\\s*text;/g,\n \" -webkit-background-clip: text; background-clip: text;\"\n );\n }\n return cssText;\n}\nfunction escapeImportStatement(rule2) {\n const { cssText } = rule2;\n if (cssText.split('\"').length < 3) return cssText;\n const statement = [\"@import\", `url(${JSON.stringify(rule2.href)})`];\n if (rule2.layerName === \"\") {\n statement.push(`layer`);\n } else if (rule2.layerName) {\n statement.push(`layer(${rule2.layerName})`);\n }\n if (rule2.supportsText) {\n statement.push(`supports(${rule2.supportsText})`);\n }\n if (rule2.media.length) {\n statement.push(rule2.media.mediaText);\n }\n return statement.join(\" \") + \";\";\n}\nfunction stringifyStylesheet(s2) {\n try {\n const rules2 = s2.rules || s2.cssRules;\n if (!rules2) {\n return null;\n }\n let sheetHref = s2.href;\n if (!sheetHref && s2.ownerNode && s2.ownerNode.ownerDocument) {\n sheetHref = s2.ownerNode.ownerDocument.location.href;\n }\n const stringifiedRules = Array.from(\n rules2,\n (rule2) => stringifyRule(rule2, sheetHref)\n ).join(\"\");\n return fixBrowserCompatibilityIssuesInCSS(stringifiedRules);\n } catch (error) {\n return null;\n }\n}\nfunction stringifyRule(rule2, sheetHref) {\n if (isCSSImportRule(rule2)) {\n let importStringified;\n try {\n importStringified = // for same-origin stylesheets,\n // we can access the imported stylesheet rules directly\n stringifyStylesheet(rule2.styleSheet) || // work around browser issues with the raw string `@import url(...)` statement\n escapeImportStatement(rule2);\n } catch (error) {\n importStringified = rule2.cssText;\n }\n if (rule2.styleSheet.href) {\n return absolutifyURLs(importStringified, rule2.styleSheet.href);\n }\n return importStringified;\n } else {\n let ruleStringified = rule2.cssText;\n if (isCSSStyleRule(rule2) && rule2.selectorText.includes(\":\")) {\n ruleStringified = fixSafariColons(ruleStringified);\n }\n if (sheetHref) {\n return absolutifyURLs(ruleStringified, sheetHref);\n }\n return ruleStringified;\n }\n}\nfunction fixSafariColons(cssStringified) {\n const regex = /(\\[(?:[\\w-]+)[^\\\\])(:(?:[\\w-]+)\\])/gm;\n return cssStringified.replace(regex, \"$1\\\\$2\");\n}\nfunction isCSSImportRule(rule2) {\n return \"styleSheet\" in rule2;\n}\nfunction isCSSStyleRule(rule2) {\n return \"selectorText\" in rule2;\n}\nclass Mirror {\n constructor() {\n __publicField$1(this, \"idNodeMap\", /* @__PURE__ */ new Map());\n __publicField$1(this, \"nodeMetaMap\", /* @__PURE__ */ new WeakMap());\n }\n getId(n2) {\n var _a2;\n if (!n2) return -1;\n const id = (_a2 = this.getMeta(n2)) == null ? void 0 : _a2.id;\n return id ?? -1;\n }\n getNode(id) {\n return this.idNodeMap.get(id) || null;\n }\n getIds() {\n return Array.from(this.idNodeMap.keys());\n }\n getMeta(n2) {\n return this.nodeMetaMap.get(n2) || null;\n }\n // removes the node from idNodeMap\n // doesn't remove the node from nodeMetaMap\n removeNodeFromMap(n2) {\n const id = this.getId(n2);\n this.idNodeMap.delete(id);\n if (n2.childNodes) {\n n2.childNodes.forEach(\n (childNode) => this.removeNodeFromMap(childNode)\n );\n }\n }\n has(id) {\n return this.idNodeMap.has(id);\n }\n hasNode(node2) {\n return this.nodeMetaMap.has(node2);\n }\n add(n2, meta) {\n const id = meta.id;\n this.idNodeMap.set(id, n2);\n this.nodeMetaMap.set(n2, meta);\n }\n replace(id, n2) {\n const oldNode = this.getNode(id);\n if (oldNode) {\n const meta = this.nodeMetaMap.get(oldNode);\n if (meta) this.nodeMetaMap.set(n2, meta);\n }\n this.idNodeMap.set(id, n2);\n }\n reset() {\n this.idNodeMap = /* @__PURE__ */ new Map();\n this.nodeMetaMap = /* @__PURE__ */ new WeakMap();\n }\n}\nfunction createMirror$2() {\n return new Mirror();\n}\nfunction maskInputValue({\n element,\n maskInputOptions,\n tagName,\n type,\n value,\n maskInputFn\n}) {\n let text = value || \"\";\n const actualType = type && toLowerCase(type);\n if (maskInputOptions[tagName.toLowerCase()] || actualType && maskInputOptions[actualType]) {\n if (maskInputFn) {\n text = maskInputFn(text, element);\n } else {\n text = \"*\".repeat(text.length);\n }\n }\n return text;\n}\nfunction toLowerCase(str) {\n return str.toLowerCase();\n}\nconst ORIGINAL_ATTRIBUTE_NAME = \"__rrweb_original__\";\nfunction is2DCanvasBlank(canvas) {\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) return true;\n const chunkSize = 50;\n for (let x2 = 0; x2 < canvas.width; x2 += chunkSize) {\n for (let y = 0; y < canvas.height; y += chunkSize) {\n const getImageData = ctx.getImageData;\n const originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData ? getImageData[ORIGINAL_ATTRIBUTE_NAME] : getImageData;\n const pixelBuffer = new Uint32Array(\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n originalGetImageData.call(\n ctx,\n x2,\n y,\n Math.min(chunkSize, canvas.width - x2),\n Math.min(chunkSize, canvas.height - y)\n ).data.buffer\n );\n if (pixelBuffer.some((pixel) => pixel !== 0)) return false;\n }\n }\n return true;\n}\nfunction getInputType(element) {\n const type = element.type;\n return element.hasAttribute(\"data-rr-is-password\") ? \"password\" : type ? (\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n toLowerCase(type)\n ) : null;\n}\nfunction extractFileExtension(path, baseURL) {\n let url;\n try {\n url = new URL(path, baseURL ?? window.location.href);\n } catch (err) {\n return null;\n }\n const regex = /\\.([0-9a-z]+)(?:$)/i;\n const match = url.pathname.match(regex);\n return (match == null ? void 0 : match[1]) ?? null;\n}\nfunction extractOrigin(url) {\n let origin = \"\";\n if (url.indexOf(\"//\") > -1) {\n origin = url.split(\"/\").slice(0, 3).join(\"/\");\n } else {\n origin = url.split(\"/\")[0];\n }\n origin = origin.split(\"?\")[0];\n return origin;\n}\nconst URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\nconst URL_PROTOCOL_MATCH = /^(?:[a-z+]+:)?\\/\\//i;\nconst URL_WWW_MATCH = /^www\\..*/i;\nconst DATA_URI = /^(data:)([^,]*),(.*)/i;\nfunction absolutifyURLs(cssText, href) {\n return (cssText || \"\").replace(\n URL_IN_CSS_REF,\n (origin, quote1, path1, quote2, path2, path3) => {\n const filePath = path1 || path2 || path3;\n const maybeQuote = quote1 || quote2 || \"\";\n if (!filePath) {\n return origin;\n }\n if (URL_PROTOCOL_MATCH.test(filePath) || URL_WWW_MATCH.test(filePath)) {\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\n }\n if (DATA_URI.test(filePath)) {\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\n }\n if (filePath[0] === \"/\") {\n return `url(${maybeQuote}${extractOrigin(href) + filePath}${maybeQuote})`;\n }\n const stack = href.split(\"/\");\n const parts = filePath.split(\"/\");\n stack.pop();\n for (const part of parts) {\n if (part === \".\") {\n continue;\n } else if (part === \"..\") {\n stack.pop();\n } else {\n stack.push(part);\n }\n }\n return `url(${maybeQuote}${stack.join(\"/\")}${maybeQuote})`;\n }\n );\n}\nfunction normalizeCssString(cssText) {\n return cssText.replace(/(\\/\\*[^*]*\\*\\/)|[\\s;]/g, \"\");\n}\nfunction splitCssText(cssText, style) {\n const childNodes2 = Array.from(style.childNodes);\n const splits = [];\n if (childNodes2.length > 1 && cssText && typeof cssText === \"string\") {\n const cssTextNorm = normalizeCssString(cssText);\n for (let i2 = 1; i2 < childNodes2.length; i2++) {\n if (childNodes2[i2].textContent && typeof childNodes2[i2].textContent === \"string\") {\n const textContentNorm = normalizeCssString(childNodes2[i2].textContent);\n for (let j = 3; j < textContentNorm.length; j++) {\n const bit = textContentNorm.substring(0, j);\n if (cssTextNorm.split(bit).length === 2) {\n const splitNorm = cssTextNorm.indexOf(bit);\n for (let k = splitNorm; k < cssText.length; k++) {\n if (normalizeCssString(cssText.substring(0, k)).length === splitNorm) {\n splits.push(cssText.substring(0, k));\n cssText = cssText.substring(k);\n break;\n }\n }\n break;\n }\n }\n }\n }\n }\n splits.push(cssText);\n return splits;\n}\nfunction markCssSplits(cssText, style) {\n return splitCssText(cssText, style).join(\"/* rr_split */\");\n}\nlet _id = 1;\nconst tagNameRegex = new RegExp(\"[^a-z0-9-_:]\");\nconst IGNORED_NODE = -2;\nfunction genId() {\n return _id++;\n}\nfunction getValidTagName$1(element) {\n if (element instanceof HTMLFormElement) {\n return \"form\";\n }\n const processedTagName = toLowerCase(element.tagName);\n if (tagNameRegex.test(processedTagName)) {\n return \"div\";\n }\n return processedTagName;\n}\nlet canvasService;\nlet canvasCtx;\nconst SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\nconst SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\n if (attributeValue.trim() === \"\") {\n return attributeValue;\n }\n let pos = 0;\n function collectCharacters(regEx) {\n let chars2;\n const match = regEx.exec(attributeValue.substring(pos));\n if (match) {\n chars2 = match[0];\n pos += chars2.length;\n return chars2;\n }\n return \"\";\n }\n const output = [];\n while (true) {\n collectCharacters(SRCSET_COMMAS_OR_SPACES);\n if (pos >= attributeValue.length) {\n break;\n }\n let url = collectCharacters(SRCSET_NOT_SPACES);\n if (url.slice(-1) === \",\") {\n url = absoluteToDoc(doc, url.substring(0, url.length - 1));\n output.push(url);\n } else {\n let descriptorsStr = \"\";\n url = absoluteToDoc(doc, url);\n let inParens = false;\n while (true) {\n const c2 = attributeValue.charAt(pos);\n if (c2 === \"\") {\n output.push((url + descriptorsStr).trim());\n break;\n } else if (!inParens) {\n if (c2 === \",\") {\n pos += 1;\n output.push((url + descriptorsStr).trim());\n break;\n } else if (c2 === \"(\") {\n inParens = true;\n }\n } else {\n if (c2 === \")\") {\n inParens = false;\n }\n }\n descriptorsStr += c2;\n pos += 1;\n }\n }\n }\n return output.join(\", \");\n}\nconst cachedDocument = /* @__PURE__ */ new WeakMap();\nfunction absoluteToDoc(doc, attributeValue) {\n if (!attributeValue || attributeValue.trim() === \"\") {\n return attributeValue;\n }\n return getHref(doc, attributeValue);\n}\nfunction isSVGElement(el) {\n return Boolean(el.tagName === \"svg\" || el.ownerSVGElement);\n}\nfunction getHref(doc, customHref) {\n let a2 = cachedDocument.get(doc);\n if (!a2) {\n a2 = doc.createElement(\"a\");\n cachedDocument.set(doc, a2);\n }\n if (!customHref) {\n customHref = \"\";\n } else if (customHref.startsWith(\"blob:\") || customHref.startsWith(\"data:\")) {\n return customHref;\n }\n a2.setAttribute(\"href\", customHref);\n return a2.href;\n}\nfunction transformAttribute(doc, tagName, name, value) {\n if (!value) {\n return value;\n }\n if (name === \"src\" || name === \"href\" && !(tagName === \"use\" && value[0] === \"#\")) {\n return absoluteToDoc(doc, value);\n } else if (name === \"xlink:href\" && value[0] !== \"#\") {\n return absoluteToDoc(doc, value);\n } else if (name === \"background\" && (tagName === \"table\" || tagName === \"td\" || tagName === \"th\")) {\n return absoluteToDoc(doc, value);\n } else if (name === \"srcset\") {\n return getAbsoluteSrcsetString(doc, value);\n } else if (name === \"style\") {\n return absolutifyURLs(value, getHref(doc));\n } else if (tagName === \"object\" && name === \"data\") {\n return absoluteToDoc(doc, value);\n }\n return value;\n}\nfunction ignoreAttribute(tagName, name, _value) {\n return (tagName === \"video\" || tagName === \"audio\") && name === \"autoplay\";\n}\nfunction _isBlockedElement(element, blockClass, blockSelector) {\n try {\n if (typeof blockClass === \"string\") {\n if (element.classList.contains(blockClass)) {\n return true;\n }\n } else {\n for (let eIndex = element.classList.length; eIndex--; ) {\n const className = element.classList[eIndex];\n if (blockClass.test(className)) {\n return true;\n }\n }\n }\n if (blockSelector) {\n return element.matches(blockSelector);\n }\n } catch (e2) {\n }\n return false;\n}\nfunction classMatchesRegex(node2, regex, checkAncestors) {\n if (!node2) return false;\n if (node2.nodeType !== node2.ELEMENT_NODE) {\n if (!checkAncestors) return false;\n return classMatchesRegex(index$1.parentNode(node2), regex, checkAncestors);\n }\n for (let eIndex = node2.classList.length; eIndex--; ) {\n const className = node2.classList[eIndex];\n if (regex.test(className)) {\n return true;\n }\n }\n if (!checkAncestors) return false;\n return classMatchesRegex(index$1.parentNode(node2), regex, checkAncestors);\n}\nfunction needMaskingText(node2, maskTextClass, maskTextSelector, checkAncestors) {\n let el;\n if (isElement(node2)) {\n el = node2;\n if (!index$1.childNodes(el).length) {\n return false;\n }\n } else if (index$1.parentElement(node2) === null) {\n return false;\n } else {\n el = index$1.parentElement(node2);\n }\n try {\n if (typeof maskTextClass === \"string\") {\n if (checkAncestors) {\n if (el.closest(`.${maskTextClass}`)) return true;\n } else {\n if (el.classList.contains(maskTextClass)) return true;\n }\n } else {\n if (classMatchesRegex(el, maskTextClass, checkAncestors)) return true;\n }\n if (maskTextSelector) {\n if (checkAncestors) {\n if (el.closest(maskTextSelector)) return true;\n } else {\n if (el.matches(maskTextSelector)) return true;\n }\n }\n } catch (e2) {\n }\n return false;\n}\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\n const win = iframeEl.contentWindow;\n if (!win) {\n return;\n }\n let fired = false;\n let readyState;\n try {\n readyState = win.document.readyState;\n } catch (error) {\n return;\n }\n if (readyState !== \"complete\") {\n const timer = setTimeout(() => {\n if (!fired) {\n listener();\n fired = true;\n }\n }, iframeLoadTimeout);\n iframeEl.addEventListener(\"load\", () => {\n clearTimeout(timer);\n fired = true;\n listener();\n });\n return;\n }\n const blankUrl = \"about:blank\";\n if (win.location.href !== blankUrl || iframeEl.src === blankUrl || iframeEl.src === \"\") {\n setTimeout(listener, 0);\n return iframeEl.addEventListener(\"load\", listener);\n }\n iframeEl.addEventListener(\"load\", listener);\n}\nfunction onceStylesheetLoaded(link, listener, styleSheetLoadTimeout) {\n let fired = false;\n let styleSheetLoaded;\n try {\n styleSheetLoaded = link.sheet;\n } catch (error) {\n return;\n }\n if (styleSheetLoaded) return;\n const timer = setTimeout(() => {\n if (!fired) {\n listener();\n fired = true;\n }\n }, styleSheetLoadTimeout);\n link.addEventListener(\"load\", () => {\n clearTimeout(timer);\n fired = true;\n listener();\n });\n}\nfunction serializeNode(n2, options) {\n const {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n inlineStylesheet,\n maskInputOptions = {},\n maskTextFn,\n maskInputFn,\n dataURLOptions = {},\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement = false,\n cssCaptured = false\n } = options;\n const rootId = getRootId(doc, mirror2);\n switch (n2.nodeType) {\n case n2.DOCUMENT_NODE:\n if (n2.compatMode !== \"CSS1Compat\") {\n return {\n type: NodeType$3.Document,\n childNodes: [],\n compatMode: n2.compatMode\n // probably \"BackCompat\"\n };\n } else {\n return {\n type: NodeType$3.Document,\n childNodes: []\n };\n }\n case n2.DOCUMENT_TYPE_NODE:\n return {\n type: NodeType$3.DocumentType,\n name: n2.name,\n publicId: n2.publicId,\n systemId: n2.systemId,\n rootId\n };\n case n2.ELEMENT_NODE:\n return serializeElementNode(n2, {\n doc,\n blockClass,\n blockSelector,\n inlineStylesheet,\n maskInputOptions,\n maskInputFn,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement,\n rootId\n });\n case n2.TEXT_NODE:\n return serializeTextNode(n2, {\n doc,\n needsMask,\n maskTextFn,\n rootId,\n cssCaptured\n });\n case n2.CDATA_SECTION_NODE:\n return {\n type: NodeType$3.CDATA,\n textContent: \"\",\n rootId\n };\n case n2.COMMENT_NODE:\n return {\n type: NodeType$3.Comment,\n textContent: index$1.textContent(n2) || \"\",\n rootId\n };\n default:\n return false;\n }\n}\nfunction getRootId(doc, mirror2) {\n if (!mirror2.hasNode(doc)) return void 0;\n const docId = mirror2.getId(doc);\n return docId === 1 ? void 0 : docId;\n}\nfunction serializeTextNode(n2, options) {\n const { needsMask, maskTextFn, rootId, cssCaptured } = options;\n const parent = index$1.parentNode(n2);\n const parentTagName = parent && parent.tagName;\n let textContent2 = \"\";\n const isStyle = parentTagName === \"STYLE\" ? true : void 0;\n const isScript = parentTagName === \"SCRIPT\" ? true : void 0;\n if (isScript) {\n textContent2 = \"SCRIPT_PLACEHOLDER\";\n } else if (!cssCaptured) {\n textContent2 = index$1.textContent(n2);\n if (isStyle && textContent2) {\n textContent2 = absolutifyURLs(textContent2, getHref(options.doc));\n }\n }\n if (!isStyle && !isScript && textContent2 && needsMask) {\n textContent2 = maskTextFn ? maskTextFn(textContent2, index$1.parentElement(n2)) : textContent2.replace(/[\\S]/g, \"*\");\n }\n return {\n type: NodeType$3.Text,\n textContent: textContent2 || \"\",\n rootId\n };\n}\nfunction serializeElementNode(n2, options) {\n const {\n doc,\n blockClass,\n blockSelector,\n inlineStylesheet,\n maskInputOptions = {},\n maskInputFn,\n dataURLOptions = {},\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement = false,\n rootId\n } = options;\n const needBlock = _isBlockedElement(n2, blockClass, blockSelector);\n const tagName = getValidTagName$1(n2);\n let attributes = {};\n const len = n2.attributes.length;\n for (let i2 = 0; i2 < len; i2++) {\n const attr = n2.attributes[i2];\n if (!ignoreAttribute(tagName, attr.name, attr.value)) {\n attributes[attr.name] = transformAttribute(\n doc,\n tagName,\n toLowerCase(attr.name),\n attr.value\n );\n }\n }\n if (tagName === \"link\" && inlineStylesheet) {\n const stylesheet = Array.from(doc.styleSheets).find((s2) => {\n return s2.href === n2.href;\n });\n let cssText = null;\n if (stylesheet) {\n cssText = stringifyStylesheet(stylesheet);\n }\n if (cssText) {\n delete attributes.rel;\n delete attributes.href;\n attributes._cssText = cssText;\n }\n }\n if (tagName === \"style\" && n2.sheet) {\n let cssText = stringifyStylesheet(\n n2.sheet\n );\n if (cssText) {\n if (n2.childNodes.length > 1) {\n cssText = markCssSplits(cssText, n2);\n }\n attributes._cssText = cssText;\n }\n }\n if (tagName === \"input\" || tagName === \"textarea\" || tagName === \"select\") {\n const value = n2.value;\n const checked = n2.checked;\n if (attributes.type !== \"radio\" && attributes.type !== \"checkbox\" && attributes.type !== \"submit\" && attributes.type !== \"button\" && value) {\n attributes.value = maskInputValue({\n element: n2,\n type: getInputType(n2),\n tagName,\n value,\n maskInputOptions,\n maskInputFn\n });\n } else if (checked) {\n attributes.checked = checked;\n }\n }\n if (tagName === \"option\") {\n if (n2.selected && !maskInputOptions[\"select\"]) {\n attributes.selected = true;\n } else {\n delete attributes.selected;\n }\n }\n if (tagName === \"dialog\" && n2.open) {\n attributes.rr_open_mode = n2.matches(\"dialog:modal\") ? \"modal\" : \"non-modal\";\n }\n if (tagName === \"canvas\" && recordCanvas) {\n if (n2.__context === \"2d\") {\n if (!is2DCanvasBlank(n2)) {\n attributes.rr_dataURL = n2.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n }\n } else if (!(\"__context\" in n2)) {\n const canvasDataURL = n2.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n const blankCanvas = doc.createElement(\"canvas\");\n blankCanvas.width = n2.width;\n blankCanvas.height = n2.height;\n const blankCanvasDataURL = blankCanvas.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n if (canvasDataURL !== blankCanvasDataURL) {\n attributes.rr_dataURL = canvasDataURL;\n }\n }\n }\n if (tagName === \"img\" && inlineImages) {\n if (!canvasService) {\n canvasService = doc.createElement(\"canvas\");\n canvasCtx = canvasService.getContext(\"2d\");\n }\n const image = n2;\n const imageSrc = image.currentSrc || image.getAttribute(\"src\") || \"\";\n const priorCrossOrigin = image.crossOrigin;\n const recordInlineImage = () => {\n image.removeEventListener(\"load\", recordInlineImage);\n try {\n canvasService.width = image.naturalWidth;\n canvasService.height = image.naturalHeight;\n canvasCtx.drawImage(image, 0, 0);\n attributes.rr_dataURL = canvasService.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n } catch (err) {\n if (image.crossOrigin !== \"anonymous\") {\n image.crossOrigin = \"anonymous\";\n if (image.complete && image.naturalWidth !== 0)\n recordInlineImage();\n else image.addEventListener(\"load\", recordInlineImage);\n return;\n } else {\n console.warn(\n `Cannot inline img src=${imageSrc}! Error: ${err}`\n );\n }\n }\n if (image.crossOrigin === \"anonymous\") {\n priorCrossOrigin ? attributes.crossOrigin = priorCrossOrigin : image.removeAttribute(\"crossorigin\");\n }\n };\n if (image.complete && image.naturalWidth !== 0) recordInlineImage();\n else image.addEventListener(\"load\", recordInlineImage);\n }\n if (tagName === \"audio\" || tagName === \"video\") {\n const mediaAttributes = attributes;\n mediaAttributes.rr_mediaState = n2.paused ? \"paused\" : \"played\";\n mediaAttributes.rr_mediaCurrentTime = n2.currentTime;\n mediaAttributes.rr_mediaPlaybackRate = n2.playbackRate;\n mediaAttributes.rr_mediaMuted = n2.muted;\n mediaAttributes.rr_mediaLoop = n2.loop;\n mediaAttributes.rr_mediaVolume = n2.volume;\n }\n if (!newlyAddedElement) {\n if (n2.scrollLeft) {\n attributes.rr_scrollLeft = n2.scrollLeft;\n }\n if (n2.scrollTop) {\n attributes.rr_scrollTop = n2.scrollTop;\n }\n }\n if (needBlock) {\n const { width, height } = n2.getBoundingClientRect();\n attributes = {\n class: attributes.class,\n rr_width: `${width}px`,\n rr_height: `${height}px`\n };\n }\n if (tagName === \"iframe\" && !keepIframeSrcFn(attributes.src)) {\n if (!n2.contentDocument) {\n attributes.rr_src = attributes.src;\n }\n delete attributes.src;\n }\n let isCustomElement;\n try {\n if (customElements.get(tagName)) isCustomElement = true;\n } catch (e2) {\n }\n return {\n type: NodeType$3.Element,\n tagName,\n attributes,\n childNodes: [],\n isSVG: isSVGElement(n2) || void 0,\n needBlock,\n rootId,\n isCustom: isCustomElement\n };\n}\nfunction lowerIfExists(maybeAttr) {\n if (maybeAttr === void 0 || maybeAttr === null) {\n return \"\";\n } else {\n return maybeAttr.toLowerCase();\n }\n}\nfunction slimDOMExcluded(sn, slimDOMOptions) {\n if (slimDOMOptions.comment && sn.type === NodeType$3.Comment) {\n return true;\n } else if (sn.type === NodeType$3.Element) {\n if (slimDOMOptions.script && // script tag\n (sn.tagName === \"script\" || // (module)preload link\n sn.tagName === \"link\" && (sn.attributes.rel === \"preload\" || sn.attributes.rel === \"modulepreload\") && sn.attributes.as === \"script\" || // prefetch link\n sn.tagName === \"link\" && sn.attributes.rel === \"prefetch\" && typeof sn.attributes.href === \"string\" && extractFileExtension(sn.attributes.href) === \"js\")) {\n return true;\n } else if (slimDOMOptions.headFavicon && (sn.tagName === \"link\" && sn.attributes.rel === \"shortcut icon\" || sn.tagName === \"meta\" && (lowerIfExists(sn.attributes.name).match(\n /^msapplication-tile(image|color)$/\n ) || lowerIfExists(sn.attributes.name) === \"application-name\" || lowerIfExists(sn.attributes.rel) === \"icon\" || lowerIfExists(sn.attributes.rel) === \"apple-touch-icon\" || lowerIfExists(sn.attributes.rel) === \"shortcut icon\"))) {\n return true;\n } else if (sn.tagName === \"meta\") {\n if (slimDOMOptions.headMetaDescKeywords && lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\n return true;\n } else if (slimDOMOptions.headMetaSocial && (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) || // og = opengraph (facebook)\n lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) || lowerIfExists(sn.attributes.name) === \"pinterest\")) {\n return true;\n } else if (slimDOMOptions.headMetaRobots && (lowerIfExists(sn.attributes.name) === \"robots\" || lowerIfExists(sn.attributes.name) === \"googlebot\" || lowerIfExists(sn.attributes.name) === \"bingbot\")) {\n return true;\n } else if (slimDOMOptions.headMetaHttpEquiv && sn.attributes[\"http-equiv\"] !== void 0) {\n return true;\n } else if (slimDOMOptions.headMetaAuthorship && (lowerIfExists(sn.attributes.name) === \"author\" || lowerIfExists(sn.attributes.name) === \"generator\" || lowerIfExists(sn.attributes.name) === \"framework\" || lowerIfExists(sn.attributes.name) === \"publisher\" || lowerIfExists(sn.attributes.name) === \"progid\" || lowerIfExists(sn.attributes.property).match(/^article:/) || lowerIfExists(sn.attributes.property).match(/^product:/))) {\n return true;\n } else if (slimDOMOptions.headMetaVerification && (lowerIfExists(sn.attributes.name) === \"google-site-verification\" || lowerIfExists(sn.attributes.name) === \"yandex-verification\" || lowerIfExists(sn.attributes.name) === \"csrf-token\" || lowerIfExists(sn.attributes.name) === \"p:domain_verify\" || lowerIfExists(sn.attributes.name) === \"verify-v1\" || lowerIfExists(sn.attributes.name) === \"verification\" || lowerIfExists(sn.attributes.name) === \"shopify-checkout-api-token\")) {\n return true;\n }\n }\n }\n return false;\n}\nfunction serializeNodeWithId(n2, options) {\n const {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n skipChild = false,\n inlineStylesheet = true,\n maskInputOptions = {},\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions = {},\n inlineImages = false,\n recordCanvas = false,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout = 5e3,\n onStylesheetLoad,\n stylesheetLoadTimeout = 5e3,\n keepIframeSrcFn = () => false,\n newlyAddedElement = false,\n cssCaptured = false\n } = options;\n let { needsMask } = options;\n let { preserveWhiteSpace = true } = options;\n if (!needsMask) {\n const checkAncestors = needsMask === void 0;\n needsMask = needMaskingText(\n n2,\n maskTextClass,\n maskTextSelector,\n checkAncestors\n );\n }\n const _serializedNode = serializeNode(n2, {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement,\n cssCaptured\n });\n if (!_serializedNode) {\n console.warn(n2, \"not serialized\");\n return null;\n }\n let id;\n if (mirror2.hasNode(n2)) {\n id = mirror2.getId(n2);\n } else if (slimDOMExcluded(_serializedNode, slimDOMOptions) || !preserveWhiteSpace && _serializedNode.type === NodeType$3.Text && !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, \"\").length) {\n id = IGNORED_NODE;\n } else {\n id = genId();\n }\n const serializedNode = Object.assign(_serializedNode, { id });\n mirror2.add(n2, serializedNode);\n if (id === IGNORED_NODE) {\n return null;\n }\n if (onSerialize) {\n onSerialize(n2);\n }\n let recordChild = !skipChild;\n if (serializedNode.type === NodeType$3.Element) {\n recordChild = recordChild && !serializedNode.needBlock;\n delete serializedNode.needBlock;\n const shadowRootEl = index$1.shadowRoot(n2);\n if (shadowRootEl && isNativeShadowDom(shadowRootEl))\n serializedNode.isShadowHost = true;\n }\n if ((serializedNode.type === NodeType$3.Document || serializedNode.type === NodeType$3.Element) && recordChild) {\n if (slimDOMOptions.headWhitespace && serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"head\") {\n preserveWhiteSpace = false;\n }\n const bypassOptions = {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n skipChild,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn,\n cssCaptured: false\n };\n if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"textarea\" && serializedNode.attributes.value !== void 0) ;\n else {\n if (serializedNode.type === NodeType$3.Element && serializedNode.attributes._cssText !== void 0 && typeof serializedNode.attributes._cssText === \"string\") {\n bypassOptions.cssCaptured = true;\n }\n for (const childN of Array.from(index$1.childNodes(n2))) {\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n }\n let shadowRootEl = null;\n if (isElement(n2) && (shadowRootEl = index$1.shadowRoot(n2))) {\n for (const childN of Array.from(index$1.childNodes(shadowRootEl))) {\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n isNativeShadowDom(shadowRootEl) && (serializedChildNode.isShadow = true);\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n }\n }\n const parent = index$1.parentNode(n2);\n if (parent && isShadowRoot(parent) && isNativeShadowDom(parent)) {\n serializedNode.isShadow = true;\n }\n if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"iframe\") {\n onceIframeLoaded(\n n2,\n () => {\n const iframeDoc = n2.contentDocument;\n if (iframeDoc && onIframeLoad) {\n const serializedIframeNode = serializeNodeWithId(iframeDoc, {\n doc: iframeDoc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn\n });\n if (serializedIframeNode) {\n onIframeLoad(\n n2,\n serializedIframeNode\n );\n }\n }\n },\n iframeLoadTimeout\n );\n }\n if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"link\" && typeof serializedNode.attributes.rel === \"string\" && (serializedNode.attributes.rel === \"stylesheet\" || serializedNode.attributes.rel === \"preload\" && typeof serializedNode.attributes.href === \"string\" && extractFileExtension(serializedNode.attributes.href) === \"css\")) {\n onceStylesheetLoaded(\n n2,\n () => {\n if (onStylesheetLoad) {\n const serializedLinkNode = serializeNodeWithId(n2, {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn\n });\n if (serializedLinkNode) {\n onStylesheetLoad(\n n2,\n serializedLinkNode\n );\n }\n }\n },\n stylesheetLoadTimeout\n );\n }\n return serializedNode;\n}\nfunction snapshot(n2, options) {\n const {\n mirror: mirror2 = new Mirror(),\n blockClass = \"rr-block\",\n blockSelector = null,\n maskTextClass = \"rr-mask\",\n maskTextSelector = null,\n inlineStylesheet = true,\n inlineImages = false,\n recordCanvas = false,\n maskAllInputs = false,\n maskTextFn,\n maskInputFn,\n slimDOM = false,\n dataURLOptions,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn = () => false\n } = options || {};\n const maskInputOptions = maskAllInputs === true ? {\n color: true,\n date: true,\n \"datetime-local\": true,\n email: true,\n month: true,\n number: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true,\n textarea: true,\n select: true,\n password: true\n } : maskAllInputs === false ? {\n password: true\n } : maskAllInputs;\n const slimDOMOptions = slimDOM === true || slimDOM === \"all\" ? (\n // if true: set of sensible options that should not throw away any information\n {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaDescKeywords: slimDOM === \"all\",\n // destructive\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaAuthorship: true,\n headMetaVerification: true\n }\n ) : slimDOM === false ? {} : slimDOM;\n return serializeNodeWithId(n2, {\n doc: n2,\n mirror: mirror2,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn,\n newlyAddedElement: false\n });\n}\nfunction getDefaultExportFromCjs$1(x2) {\n return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, \"default\") ? x2[\"default\"] : x2;\n}\nfunction getAugmentedNamespace$1(n2) {\n if (n2.__esModule) return n2;\n var f2 = n2.default;\n if (typeof f2 == \"function\") {\n var a2 = function a22() {\n if (this instanceof a22) {\n return Reflect.construct(f2, arguments, this.constructor);\n }\n return f2.apply(this, arguments);\n };\n a2.prototype = f2.prototype;\n } else a2 = {};\n Object.defineProperty(a2, \"__esModule\", { value: true });\n Object.keys(n2).forEach(function(k) {\n var d = Object.getOwnPropertyDescriptor(n2, k);\n Object.defineProperty(a2, k, d.get ? d : {\n enumerable: true,\n get: function() {\n return n2[k];\n }\n });\n });\n return a2;\n}\nvar picocolors_browser$1 = { exports: {} };\nvar x$1 = String;\nvar create$1 = function() {\n return { isColorSupported: false, reset: x$1, bold: x$1, dim: x$1, italic: x$1, underline: x$1, inverse: x$1, hidden: x$1, strikethrough: x$1, black: x$1, red: x$1, green: x$1, yellow: x$1, blue: x$1, magenta: x$1, cyan: x$1, white: x$1, gray: x$1, bgBlack: x$1, bgRed: x$1, bgGreen: x$1, bgYellow: x$1, bgBlue: x$1, bgMagenta: x$1, bgCyan: x$1, bgWhite: x$1 };\n};\npicocolors_browser$1.exports = create$1();\npicocolors_browser$1.exports.createColors = create$1;\nvar picocolors_browserExports$1 = picocolors_browser$1.exports;\nconst __viteBrowserExternal$2 = {};\nconst __viteBrowserExternal$1$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: __viteBrowserExternal$2\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst require$$2$1 = /* @__PURE__ */ getAugmentedNamespace$1(__viteBrowserExternal$1$1);\nlet pico$1 = picocolors_browserExports$1;\nlet terminalHighlight$1$1 = require$$2$1;\nlet CssSyntaxError$3$1 = class CssSyntaxError extends Error {\n constructor(message, line, column, source, file, plugin22) {\n super(message);\n this.name = \"CssSyntaxError\";\n this.reason = message;\n if (file) {\n this.file = file;\n }\n if (source) {\n this.source = source;\n }\n if (plugin22) {\n this.plugin = plugin22;\n }\n if (typeof line !== \"undefined\" && typeof column !== \"undefined\") {\n if (typeof line === \"number\") {\n this.line = line;\n this.column = column;\n } else {\n this.line = line.line;\n this.column = line.column;\n this.endLine = column.line;\n this.endColumn = column.column;\n }\n }\n this.setMessage();\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, CssSyntaxError);\n }\n }\n setMessage() {\n this.message = this.plugin ? this.plugin + \": \" : \"\";\n this.message += this.file ? this.file : \"\";\n if (typeof this.line !== \"undefined\") {\n this.message += \":\" + this.line + \":\" + this.column;\n }\n this.message += \": \" + this.reason;\n }\n showSourceCode(color) {\n if (!this.source) return \"\";\n let css = this.source;\n if (color == null) color = pico$1.isColorSupported;\n if (terminalHighlight$1$1) {\n if (color) css = terminalHighlight$1$1(css);\n }\n let lines = css.split(/\\r?\\n/);\n let start = Math.max(this.line - 3, 0);\n let end = Math.min(this.line + 2, lines.length);\n let maxWidth = String(end).length;\n let mark, aside;\n if (color) {\n let { bold, gray, red } = pico$1.createColors(true);\n mark = (text) => bold(red(text));\n aside = (text) => gray(text);\n } else {\n mark = aside = (str) => str;\n }\n return lines.slice(start, end).map((line, index2) => {\n let number = start + 1 + index2;\n let gutter = \" \" + (\" \" + number).slice(-maxWidth) + \" | \";\n if (number === this.line) {\n let spacing = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, this.column - 1).replace(/[^\\t]/g, \" \");\n return mark(\">\") + aside(gutter) + line + \"\\n \" + spacing + mark(\"^\");\n }\n return \" \" + aside(gutter) + line;\n }).join(\"\\n\");\n }\n toString() {\n let code = this.showSourceCode();\n if (code) {\n code = \"\\n\\n\" + code + \"\\n\";\n }\n return this.name + \": \" + this.message + code;\n }\n};\nvar cssSyntaxError$1 = CssSyntaxError$3$1;\nCssSyntaxError$3$1.default = CssSyntaxError$3$1;\nvar symbols$1 = {};\nsymbols$1.isClean = Symbol(\"isClean\");\nsymbols$1.my = Symbol(\"my\");\nconst DEFAULT_RAW$1 = {\n after: \"\\n\",\n beforeClose: \"\\n\",\n beforeComment: \"\\n\",\n beforeDecl: \"\\n\",\n beforeOpen: \" \",\n beforeRule: \"\\n\",\n colon: \": \",\n commentLeft: \" \",\n commentRight: \" \",\n emptyBody: \"\",\n indent: \" \",\n semicolon: false\n};\nfunction capitalize$1(str) {\n return str[0].toUpperCase() + str.slice(1);\n}\nlet Stringifier$2$1 = class Stringifier {\n constructor(builder) {\n this.builder = builder;\n }\n atrule(node2, semicolon) {\n let name = \"@\" + node2.name;\n let params = node2.params ? this.rawValue(node2, \"params\") : \"\";\n if (typeof node2.raws.afterName !== \"undefined\") {\n name += node2.raws.afterName;\n } else if (params) {\n name += \" \";\n }\n if (node2.nodes) {\n this.block(node2, name + params);\n } else {\n let end = (node2.raws.between || \"\") + (semicolon ? \";\" : \"\");\n this.builder(name + params + end, node2);\n }\n }\n beforeAfter(node2, detect) {\n let value;\n if (node2.type === \"decl\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (node2.type === \"comment\") {\n value = this.raw(node2, null, \"beforeComment\");\n } else if (detect === \"before\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else {\n value = this.raw(node2, null, \"beforeClose\");\n }\n let buf = node2.parent;\n let depth = 0;\n while (buf && buf.type !== \"root\") {\n depth += 1;\n buf = buf.parent;\n }\n if (value.includes(\"\\n\")) {\n let indent = this.raw(node2, null, \"indent\");\n if (indent.length) {\n for (let step = 0; step < depth; step++) value += indent;\n }\n }\n return value;\n }\n block(node2, start) {\n let between = this.raw(node2, \"between\", \"beforeOpen\");\n this.builder(start + between + \"{\", node2, \"start\");\n let after;\n if (node2.nodes && node2.nodes.length) {\n this.body(node2);\n after = this.raw(node2, \"after\");\n } else {\n after = this.raw(node2, \"after\", \"emptyBody\");\n }\n if (after) this.builder(after);\n this.builder(\"}\", node2, \"end\");\n }\n body(node2) {\n let last = node2.nodes.length - 1;\n while (last > 0) {\n if (node2.nodes[last].type !== \"comment\") break;\n last -= 1;\n }\n let semicolon = this.raw(node2, \"semicolon\");\n for (let i2 = 0; i2 < node2.nodes.length; i2++) {\n let child = node2.nodes[i2];\n let before = this.raw(child, \"before\");\n if (before) this.builder(before);\n this.stringify(child, last !== i2 || semicolon);\n }\n }\n comment(node2) {\n let left = this.raw(node2, \"left\", \"commentLeft\");\n let right = this.raw(node2, \"right\", \"commentRight\");\n this.builder(\"/*\" + left + node2.text + right + \"*/\", node2);\n }\n decl(node2, semicolon) {\n let between = this.raw(node2, \"between\", \"colon\");\n let string = node2.prop + between + this.rawValue(node2, \"value\");\n if (node2.important) {\n string += node2.raws.important || \" !important\";\n }\n if (semicolon) string += \";\";\n this.builder(string, node2);\n }\n document(node2) {\n this.body(node2);\n }\n raw(node2, own, detect) {\n let value;\n if (!detect) detect = own;\n if (own) {\n value = node2.raws[own];\n if (typeof value !== \"undefined\") return value;\n }\n let parent = node2.parent;\n if (detect === \"before\") {\n if (!parent || parent.type === \"root\" && parent.first === node2) {\n return \"\";\n }\n if (parent && parent.type === \"document\") {\n return \"\";\n }\n }\n if (!parent) return DEFAULT_RAW$1[detect];\n let root2 = node2.root();\n if (!root2.rawCache) root2.rawCache = {};\n if (typeof root2.rawCache[detect] !== \"undefined\") {\n return root2.rawCache[detect];\n }\n if (detect === \"before\" || detect === \"after\") {\n return this.beforeAfter(node2, detect);\n } else {\n let method = \"raw\" + capitalize$1(detect);\n if (this[method]) {\n value = this[method](root2, node2);\n } else {\n root2.walk((i2) => {\n value = i2.raws[own];\n if (typeof value !== \"undefined\") return false;\n });\n }\n }\n if (typeof value === \"undefined\") value = DEFAULT_RAW$1[detect];\n root2.rawCache[detect] = value;\n return value;\n }\n rawBeforeClose(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length > 0) {\n if (typeof i2.raws.after !== \"undefined\") {\n value = i2.raws.after;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawBeforeComment(root2, node2) {\n let value;\n root2.walkComments((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeDecl(root2, node2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeOpen(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.type !== \"decl\") {\n value = i2.raws.between;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawBeforeRule(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && (i2.parent !== root2 || root2.first !== i2)) {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawColon(root2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.between !== \"undefined\") {\n value = i2.raws.between.replace(/[^\\s:]/g, \"\");\n return false;\n }\n });\n return value;\n }\n rawEmptyBody(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length === 0) {\n value = i2.raws.after;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawIndent(root2) {\n if (root2.raws.indent) return root2.raws.indent;\n let value;\n root2.walk((i2) => {\n let p = i2.parent;\n if (p && p !== root2 && p.parent && p.parent === root2) {\n if (typeof i2.raws.before !== \"undefined\") {\n let parts = i2.raws.before.split(\"\\n\");\n value = parts[parts.length - 1];\n value = value.replace(/\\S/g, \"\");\n return false;\n }\n }\n });\n return value;\n }\n rawSemicolon(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length && i2.last.type === \"decl\") {\n value = i2.raws.semicolon;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawValue(node2, prop) {\n let value = node2[prop];\n let raw = node2.raws[prop];\n if (raw && raw.value === value) {\n return raw.raw;\n }\n return value;\n }\n root(node2) {\n this.body(node2);\n if (node2.raws.after) this.builder(node2.raws.after);\n }\n rule(node2) {\n this.block(node2, this.rawValue(node2, \"selector\"));\n if (node2.raws.ownSemicolon) {\n this.builder(node2.raws.ownSemicolon, node2, \"end\");\n }\n }\n stringify(node2, semicolon) {\n if (!this[node2.type]) {\n throw new Error(\n \"Unknown AST node type \" + node2.type + \". Maybe you need to change PostCSS stringifier.\"\n );\n }\n this[node2.type](node2, semicolon);\n }\n};\nvar stringifier$1 = Stringifier$2$1;\nStringifier$2$1.default = Stringifier$2$1;\nlet Stringifier$1$1 = stringifier$1;\nfunction stringify$4$1(node2, builder) {\n let str = new Stringifier$1$1(builder);\n str.stringify(node2);\n}\nvar stringify_1$1 = stringify$4$1;\nstringify$4$1.default = stringify$4$1;\nlet { isClean: isClean$2$1, my: my$2$1 } = symbols$1;\nlet CssSyntaxError$2$1 = cssSyntaxError$1;\nlet Stringifier2$1 = stringifier$1;\nlet stringify$3$1 = stringify_1$1;\nfunction cloneNode$1(obj, parent) {\n let cloned = new obj.constructor();\n for (let i2 in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, i2)) {\n continue;\n }\n if (i2 === \"proxyCache\") continue;\n let value = obj[i2];\n let type = typeof value;\n if (i2 === \"parent\" && type === \"object\") {\n if (parent) cloned[i2] = parent;\n } else if (i2 === \"source\") {\n cloned[i2] = value;\n } else if (Array.isArray(value)) {\n cloned[i2] = value.map((j) => cloneNode$1(j, cloned));\n } else {\n if (type === \"object\" && value !== null) value = cloneNode$1(value);\n cloned[i2] = value;\n }\n }\n return cloned;\n}\nlet Node$4$1 = class Node2 {\n constructor(defaults = {}) {\n this.raws = {};\n this[isClean$2$1] = false;\n this[my$2$1] = true;\n for (let name in defaults) {\n if (name === \"nodes\") {\n this.nodes = [];\n for (let node2 of defaults[name]) {\n if (typeof node2.clone === \"function\") {\n this.append(node2.clone());\n } else {\n this.append(node2);\n }\n }\n } else {\n this[name] = defaults[name];\n }\n }\n }\n addToError(error) {\n error.postcssNode = this;\n if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n let s2 = this.source;\n error.stack = error.stack.replace(\n /\\n\\s{4}at /,\n `$&${s2.input.from}:${s2.start.line}:${s2.start.column}$&`\n );\n }\n return error;\n }\n after(add) {\n this.parent.insertAfter(this, add);\n return this;\n }\n assign(overrides = {}) {\n for (let name in overrides) {\n this[name] = overrides[name];\n }\n return this;\n }\n before(add) {\n this.parent.insertBefore(this, add);\n return this;\n }\n cleanRaws(keepBetween) {\n delete this.raws.before;\n delete this.raws.after;\n if (!keepBetween) delete this.raws.between;\n }\n clone(overrides = {}) {\n let cloned = cloneNode$1(this);\n for (let name in overrides) {\n cloned[name] = overrides[name];\n }\n return cloned;\n }\n cloneAfter(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertAfter(this, cloned);\n return cloned;\n }\n cloneBefore(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertBefore(this, cloned);\n return cloned;\n }\n error(message, opts = {}) {\n if (this.source) {\n let { end, start } = this.rangeBy(opts);\n return this.source.input.error(\n message,\n { column: start.column, line: start.line },\n { column: end.column, line: end.line },\n opts\n );\n }\n return new CssSyntaxError$2$1(message);\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"prop\" || prop === \"value\" || prop === \"name\" || prop === \"params\" || prop === \"important\" || /* c8 ignore next */\n prop === \"text\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n markDirty() {\n if (this[isClean$2$1]) {\n this[isClean$2$1] = false;\n let next = this;\n while (next = next.parent) {\n next[isClean$2$1] = false;\n }\n }\n }\n next() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 + 1];\n }\n positionBy(opts, stringRepresentation) {\n let pos = this.source.start;\n if (opts.index) {\n pos = this.positionInside(opts.index, stringRepresentation);\n } else if (opts.word) {\n stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) pos = this.positionInside(index2, stringRepresentation);\n }\n return pos;\n }\n positionInside(index2, stringRepresentation) {\n let string = stringRepresentation || this.toString();\n let column = this.source.start.column;\n let line = this.source.start.line;\n for (let i2 = 0; i2 < index2; i2++) {\n if (string[i2] === \"\\n\") {\n column = 1;\n line += 1;\n } else {\n column += 1;\n }\n }\n return { column, line };\n }\n prev() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 - 1];\n }\n rangeBy(opts) {\n let start = {\n column: this.source.start.column,\n line: this.source.start.line\n };\n let end = this.source.end ? {\n column: this.source.end.column + 1,\n line: this.source.end.line\n } : {\n column: start.column + 1,\n line: start.line\n };\n if (opts.word) {\n let stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) {\n start = this.positionInside(index2, stringRepresentation);\n end = this.positionInside(index2 + opts.word.length, stringRepresentation);\n }\n } else {\n if (opts.start) {\n start = {\n column: opts.start.column,\n line: opts.start.line\n };\n } else if (opts.index) {\n start = this.positionInside(opts.index);\n }\n if (opts.end) {\n end = {\n column: opts.end.column,\n line: opts.end.line\n };\n } else if (typeof opts.endIndex === \"number\") {\n end = this.positionInside(opts.endIndex);\n } else if (opts.index) {\n end = this.positionInside(opts.index + 1);\n }\n }\n if (end.line < start.line || end.line === start.line && end.column <= start.column) {\n end = { column: start.column + 1, line: start.line };\n }\n return { end, start };\n }\n raw(prop, defaultType) {\n let str = new Stringifier2$1();\n return str.raw(this, prop, defaultType);\n }\n remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n this.parent = void 0;\n return this;\n }\n replaceWith(...nodes) {\n if (this.parent) {\n let bookmark = this;\n let foundSelf = false;\n for (let node2 of nodes) {\n if (node2 === this) {\n foundSelf = true;\n } else if (foundSelf) {\n this.parent.insertAfter(bookmark, node2);\n bookmark = node2;\n } else {\n this.parent.insertBefore(bookmark, node2);\n }\n }\n if (!foundSelf) {\n this.remove();\n }\n }\n return this;\n }\n root() {\n let result2 = this;\n while (result2.parent && result2.parent.type !== \"document\") {\n result2 = result2.parent;\n }\n return result2;\n }\n toJSON(_, inputs) {\n let fixed = {};\n let emitInputs = inputs == null;\n inputs = inputs || /* @__PURE__ */ new Map();\n let inputsNextIndex = 0;\n for (let name in this) {\n if (!Object.prototype.hasOwnProperty.call(this, name)) {\n continue;\n }\n if (name === \"parent\" || name === \"proxyCache\") continue;\n let value = this[name];\n if (Array.isArray(value)) {\n fixed[name] = value.map((i2) => {\n if (typeof i2 === \"object\" && i2.toJSON) {\n return i2.toJSON(null, inputs);\n } else {\n return i2;\n }\n });\n } else if (typeof value === \"object\" && value.toJSON) {\n fixed[name] = value.toJSON(null, inputs);\n } else if (name === \"source\") {\n let inputId = inputs.get(value.input);\n if (inputId == null) {\n inputId = inputsNextIndex;\n inputs.set(value.input, inputsNextIndex);\n inputsNextIndex++;\n }\n fixed[name] = {\n end: value.end,\n inputId,\n start: value.start\n };\n } else {\n fixed[name] = value;\n }\n }\n if (emitInputs) {\n fixed.inputs = [...inputs.keys()].map((input2) => input2.toJSON());\n }\n return fixed;\n }\n toProxy() {\n if (!this.proxyCache) {\n this.proxyCache = new Proxy(this, this.getProxyProcessor());\n }\n return this.proxyCache;\n }\n toString(stringifier2 = stringify$3$1) {\n if (stringifier2.stringify) stringifier2 = stringifier2.stringify;\n let result2 = \"\";\n stringifier2(this, (i2) => {\n result2 += i2;\n });\n return result2;\n }\n warn(result2, text, opts) {\n let data = { node: this };\n for (let i2 in opts) data[i2] = opts[i2];\n return result2.warn(text, data);\n }\n get proxyOf() {\n return this;\n }\n};\nvar node$1 = Node$4$1;\nNode$4$1.default = Node$4$1;\nlet Node$3$1 = node$1;\nlet Declaration$4$1 = class Declaration extends Node$3$1 {\n constructor(defaults) {\n if (defaults && typeof defaults.value !== \"undefined\" && typeof defaults.value !== \"string\") {\n defaults = { ...defaults, value: String(defaults.value) };\n }\n super(defaults);\n this.type = \"decl\";\n }\n get variable() {\n return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n }\n};\nvar declaration$1 = Declaration$4$1;\nDeclaration$4$1.default = Declaration$4$1;\nlet urlAlphabet$1 = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\nlet customAlphabet$1 = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = \"\";\n let i2 = size;\n while (i2--) {\n id += alphabet[Math.random() * alphabet.length | 0];\n }\n return id;\n };\n};\nlet nanoid$1$1 = (size = 21) => {\n let id = \"\";\n let i2 = size;\n while (i2--) {\n id += urlAlphabet$1[Math.random() * 64 | 0];\n }\n return id;\n};\nvar nonSecure$1 = { nanoid: nanoid$1$1, customAlphabet: customAlphabet$1 };\nlet { SourceMapConsumer: SourceMapConsumer$2$1, SourceMapGenerator: SourceMapGenerator$2$1 } = require$$2$1;\nlet { existsSync: existsSync$1, readFileSync: readFileSync$1 } = require$$2$1;\nlet { dirname: dirname$1$1, join: join$1 } = require$$2$1;\nfunction fromBase64$1(str) {\n if (Buffer) {\n return Buffer.from(str, \"base64\").toString();\n } else {\n return window.atob(str);\n }\n}\nlet PreviousMap$2$1 = class PreviousMap {\n constructor(css, opts) {\n if (opts.map === false) return;\n this.loadAnnotation(css);\n this.inline = this.startWith(this.annotation, \"data:\");\n let prev = opts.map ? opts.map.prev : void 0;\n let text = this.loadMap(opts.from, prev);\n if (!this.mapFile && opts.from) {\n this.mapFile = opts.from;\n }\n if (this.mapFile) this.root = dirname$1$1(this.mapFile);\n if (text) this.text = text;\n }\n consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new SourceMapConsumer$2$1(this.text);\n }\n return this.consumerCache;\n }\n decodeInline(text) {\n let baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/;\n let baseUri = /^data:application\\/json;base64,/;\n let charsetUri = /^data:application\\/json;charset=utf-?8,/;\n let uri = /^data:application\\/json,/;\n if (charsetUri.test(text) || uri.test(text)) {\n return decodeURIComponent(text.substr(RegExp.lastMatch.length));\n }\n if (baseCharsetUri.test(text) || baseUri.test(text)) {\n return fromBase64$1(text.substr(RegExp.lastMatch.length));\n }\n let encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n throw new Error(\"Unsupported source map encoding \" + encoding);\n }\n getAnnotationURL(sourceMapString) {\n return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n }\n isMap(map) {\n if (typeof map !== \"object\") return false;\n return typeof map.mappings === \"string\" || typeof map._mappings === \"string\" || Array.isArray(map.sections);\n }\n loadAnnotation(css) {\n let comments = css.match(/\\/\\*\\s*# sourceMappingURL=/gm);\n if (!comments) return;\n let start = css.lastIndexOf(comments.pop());\n let end = css.indexOf(\"*/\", start);\n if (start > -1 && end > -1) {\n this.annotation = this.getAnnotationURL(css.substring(start, end));\n }\n }\n loadFile(path) {\n this.root = dirname$1$1(path);\n if (existsSync$1(path)) {\n this.mapFile = path;\n return readFileSync$1(path, \"utf-8\").toString().trim();\n }\n }\n loadMap(file, prev) {\n if (prev === false) return false;\n if (prev) {\n if (typeof prev === \"string\") {\n return prev;\n } else if (typeof prev === \"function\") {\n let prevPath = prev(file);\n if (prevPath) {\n let map = this.loadFile(prevPath);\n if (!map) {\n throw new Error(\n \"Unable to load previous source map: \" + prevPath.toString()\n );\n }\n return map;\n }\n } else if (prev instanceof SourceMapConsumer$2$1) {\n return SourceMapGenerator$2$1.fromSourceMap(prev).toString();\n } else if (prev instanceof SourceMapGenerator$2$1) {\n return prev.toString();\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev);\n } else {\n throw new Error(\n \"Unsupported previous source map format: \" + prev.toString()\n );\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation);\n } else if (this.annotation) {\n let map = this.annotation;\n if (file) map = join$1(dirname$1$1(file), map);\n return this.loadFile(map);\n }\n }\n startWith(string, start) {\n if (!string) return false;\n return string.substr(0, start.length) === start;\n }\n withContent() {\n return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n }\n};\nvar previousMap$1 = PreviousMap$2$1;\nPreviousMap$2$1.default = PreviousMap$2$1;\nlet { SourceMapConsumer: SourceMapConsumer$1$1, SourceMapGenerator: SourceMapGenerator$1$1 } = require$$2$1;\nlet { fileURLToPath: fileURLToPath$1, pathToFileURL: pathToFileURL$1$1 } = require$$2$1;\nlet { isAbsolute: isAbsolute$1, resolve: resolve$1$1 } = require$$2$1;\nlet { nanoid: nanoid$2 } = nonSecure$1;\nlet terminalHighlight$2 = require$$2$1;\nlet CssSyntaxError$1$1 = cssSyntaxError$1;\nlet PreviousMap$1$1 = previousMap$1;\nlet fromOffsetCache$1 = Symbol(\"fromOffsetCache\");\nlet sourceMapAvailable$1$1 = Boolean(SourceMapConsumer$1$1 && SourceMapGenerator$1$1);\nlet pathAvailable$1$1 = Boolean(resolve$1$1 && isAbsolute$1);\nlet Input$4$1 = class Input {\n constructor(css, opts = {}) {\n if (css === null || typeof css === \"undefined\" || typeof css === \"object\" && !css.toString) {\n throw new Error(`PostCSS received ${css} instead of CSS string`);\n }\n this.css = css.toString();\n if (this.css[0] === \"\\uFEFF\" || this.css[0] === \"￾\") {\n this.hasBOM = true;\n this.css = this.css.slice(1);\n } else {\n this.hasBOM = false;\n }\n if (opts.from) {\n if (!pathAvailable$1$1 || /^\\w+:\\/\\//.test(opts.from) || isAbsolute$1(opts.from)) {\n this.file = opts.from;\n } else {\n this.file = resolve$1$1(opts.from);\n }\n }\n if (pathAvailable$1$1 && sourceMapAvailable$1$1) {\n let map = new PreviousMap$1$1(this.css, opts);\n if (map.text) {\n this.map = map;\n let file = map.consumer().file;\n if (!this.file && file) this.file = this.mapResolve(file);\n }\n }\n if (!this.file) {\n this.id = \"\";\n }\n if (this.map) this.map.file = this.from;\n }\n error(message, line, column, opts = {}) {\n let result2, endLine, endColumn;\n if (line && typeof line === \"object\") {\n let start = line;\n let end = column;\n if (typeof start.offset === \"number\") {\n let pos = this.fromOffset(start.offset);\n line = pos.line;\n column = pos.col;\n } else {\n line = start.line;\n column = start.column;\n }\n if (typeof end.offset === \"number\") {\n let pos = this.fromOffset(end.offset);\n endLine = pos.line;\n endColumn = pos.col;\n } else {\n endLine = end.line;\n endColumn = end.column;\n }\n } else if (!column) {\n let pos = this.fromOffset(line);\n line = pos.line;\n column = pos.col;\n }\n let origin = this.origin(line, column, endLine, endColumn);\n if (origin) {\n result2 = new CssSyntaxError$1$1(\n message,\n origin.endLine === void 0 ? origin.line : { column: origin.column, line: origin.line },\n origin.endLine === void 0 ? origin.column : { column: origin.endColumn, line: origin.endLine },\n origin.source,\n origin.file,\n opts.plugin\n );\n } else {\n result2 = new CssSyntaxError$1$1(\n message,\n endLine === void 0 ? line : { column, line },\n endLine === void 0 ? column : { column: endColumn, line: endLine },\n this.css,\n this.file,\n opts.plugin\n );\n }\n result2.input = { column, endColumn, endLine, line, source: this.css };\n if (this.file) {\n if (pathToFileURL$1$1) {\n result2.input.url = pathToFileURL$1$1(this.file).toString();\n }\n result2.input.file = this.file;\n }\n return result2;\n }\n fromOffset(offset) {\n let lastLine, lineToIndex;\n if (!this[fromOffsetCache$1]) {\n let lines = this.css.split(\"\\n\");\n lineToIndex = new Array(lines.length);\n let prevIndex = 0;\n for (let i2 = 0, l2 = lines.length; i2 < l2; i2++) {\n lineToIndex[i2] = prevIndex;\n prevIndex += lines[i2].length + 1;\n }\n this[fromOffsetCache$1] = lineToIndex;\n } else {\n lineToIndex = this[fromOffsetCache$1];\n }\n lastLine = lineToIndex[lineToIndex.length - 1];\n let min = 0;\n if (offset >= lastLine) {\n min = lineToIndex.length - 1;\n } else {\n let max = lineToIndex.length - 2;\n let mid;\n while (min < max) {\n mid = min + (max - min >> 1);\n if (offset < lineToIndex[mid]) {\n max = mid - 1;\n } else if (offset >= lineToIndex[mid + 1]) {\n min = mid + 1;\n } else {\n min = mid;\n break;\n }\n }\n }\n return {\n col: offset - lineToIndex[min] + 1,\n line: min + 1\n };\n }\n mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file;\n }\n return resolve$1$1(this.map.consumer().sourceRoot || this.map.root || \".\", file);\n }\n origin(line, column, endLine, endColumn) {\n if (!this.map) return false;\n let consumer = this.map.consumer();\n let from = consumer.originalPositionFor({ column, line });\n if (!from.source) return false;\n let to;\n if (typeof endLine === \"number\") {\n to = consumer.originalPositionFor({ column: endColumn, line: endLine });\n }\n let fromUrl;\n if (isAbsolute$1(from.source)) {\n fromUrl = pathToFileURL$1$1(from.source);\n } else {\n fromUrl = new URL(\n from.source,\n this.map.consumer().sourceRoot || pathToFileURL$1$1(this.map.mapFile)\n );\n }\n let result2 = {\n column: from.column,\n endColumn: to && to.column,\n endLine: to && to.line,\n line: from.line,\n url: fromUrl.toString()\n };\n if (fromUrl.protocol === \"file:\") {\n if (fileURLToPath$1) {\n result2.file = fileURLToPath$1(fromUrl);\n } else {\n throw new Error(`file: protocol is not available in this PostCSS build`);\n }\n }\n let source = consumer.sourceContentFor(from.source);\n if (source) result2.source = source;\n return result2;\n }\n toJSON() {\n let json = {};\n for (let name of [\"hasBOM\", \"css\", \"file\", \"id\"]) {\n if (this[name] != null) {\n json[name] = this[name];\n }\n }\n if (this.map) {\n json.map = { ...this.map };\n if (json.map.consumerCache) {\n json.map.consumerCache = void 0;\n }\n }\n return json;\n }\n get from() {\n return this.file || this.id;\n }\n};\nvar input$1 = Input$4$1;\nInput$4$1.default = Input$4$1;\nif (terminalHighlight$2 && terminalHighlight$2.registerInput) {\n terminalHighlight$2.registerInput(Input$4$1);\n}\nlet { SourceMapConsumer: SourceMapConsumer$3, SourceMapGenerator: SourceMapGenerator$3 } = require$$2$1;\nlet { dirname: dirname$2, relative: relative$1, resolve: resolve$2, sep: sep$1 } = require$$2$1;\nlet { pathToFileURL: pathToFileURL$2 } = require$$2$1;\nlet Input$3$1 = input$1;\nlet sourceMapAvailable$2 = Boolean(SourceMapConsumer$3 && SourceMapGenerator$3);\nlet pathAvailable$2 = Boolean(dirname$2 && resolve$2 && relative$1 && sep$1);\nlet MapGenerator$2$1 = class MapGenerator {\n constructor(stringify2, root2, opts, cssString) {\n this.stringify = stringify2;\n this.mapOpts = opts.map || {};\n this.root = root2;\n this.opts = opts;\n this.css = cssString;\n this.originalCSS = cssString;\n this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute;\n this.memoizedFileURLs = /* @__PURE__ */ new Map();\n this.memoizedPaths = /* @__PURE__ */ new Map();\n this.memoizedURLs = /* @__PURE__ */ new Map();\n }\n addAnnotation() {\n let content;\n if (this.isInline()) {\n content = \"data:application/json;base64,\" + this.toBase64(this.map.toString());\n } else if (typeof this.mapOpts.annotation === \"string\") {\n content = this.mapOpts.annotation;\n } else if (typeof this.mapOpts.annotation === \"function\") {\n content = this.mapOpts.annotation(this.opts.to, this.root);\n } else {\n content = this.outputFile() + \".map\";\n }\n let eol = \"\\n\";\n if (this.css.includes(\"\\r\\n\")) eol = \"\\r\\n\";\n this.css += eol + \"/*# sourceMappingURL=\" + content + \" */\";\n }\n applyPrevMaps() {\n for (let prev of this.previous()) {\n let from = this.toUrl(this.path(prev.file));\n let root2 = prev.root || dirname$2(prev.file);\n let map;\n if (this.mapOpts.sourcesContent === false) {\n map = new SourceMapConsumer$3(prev.text);\n if (map.sourcesContent) {\n map.sourcesContent = null;\n }\n } else {\n map = prev.consumer();\n }\n this.map.applySourceMap(map, from, this.toUrl(this.path(root2)));\n }\n }\n clearAnnotation() {\n if (this.mapOpts.annotation === false) return;\n if (this.root) {\n let node2;\n for (let i2 = this.root.nodes.length - 1; i2 >= 0; i2--) {\n node2 = this.root.nodes[i2];\n if (node2.type !== \"comment\") continue;\n if (node2.text.indexOf(\"# sourceMappingURL=\") === 0) {\n this.root.removeChild(i2);\n }\n }\n } else if (this.css) {\n this.css = this.css.replace(/\\n*?\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\");\n }\n }\n generate() {\n this.clearAnnotation();\n if (pathAvailable$2 && sourceMapAvailable$2 && this.isMap()) {\n return this.generateMap();\n } else {\n let result2 = \"\";\n this.stringify(this.root, (i2) => {\n result2 += i2;\n });\n return [result2];\n }\n }\n generateMap() {\n if (this.root) {\n this.generateString();\n } else if (this.previous().length === 1) {\n let prev = this.previous()[0].consumer();\n prev.file = this.outputFile();\n this.map = SourceMapGenerator$3.fromSourceMap(prev, {\n ignoreInvalidMapping: true\n });\n } else {\n this.map = new SourceMapGenerator$3({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n this.map.addMapping({\n generated: { column: 0, line: 1 },\n original: { column: 0, line: 1 },\n source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\"\n });\n }\n if (this.isSourcesContent()) this.setSourcesContent();\n if (this.root && this.previous().length > 0) this.applyPrevMaps();\n if (this.isAnnotation()) this.addAnnotation();\n if (this.isInline()) {\n return [this.css];\n } else {\n return [this.css, this.map];\n }\n }\n generateString() {\n this.css = \"\";\n this.map = new SourceMapGenerator$3({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n let line = 1;\n let column = 1;\n let noSource = \"\";\n let mapping = {\n generated: { column: 0, line: 0 },\n original: { column: 0, line: 0 },\n source: \"\"\n };\n let lines, last;\n this.stringify(this.root, (str, node2, type) => {\n this.css += str;\n if (node2 && type !== \"end\") {\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n if (node2.source && node2.source.start) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.start.line;\n mapping.original.column = node2.source.start.column - 1;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n this.map.addMapping(mapping);\n }\n }\n lines = str.match(/\\n/g);\n if (lines) {\n line += lines.length;\n last = str.lastIndexOf(\"\\n\");\n column = str.length - last;\n } else {\n column += str.length;\n }\n if (node2 && type !== \"start\") {\n let p = node2.parent || { raws: {} };\n let childless = node2.type === \"decl\" || node2.type === \"atrule\" && !node2.nodes;\n if (!childless || node2 !== p.last || p.raws.semicolon) {\n if (node2.source && node2.source.end) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.end.line;\n mapping.original.column = node2.source.end.column - 1;\n mapping.generated.line = line;\n mapping.generated.column = column - 2;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n this.map.addMapping(mapping);\n }\n }\n }\n });\n }\n isAnnotation() {\n if (this.isInline()) {\n return true;\n }\n if (typeof this.mapOpts.annotation !== \"undefined\") {\n return this.mapOpts.annotation;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.annotation);\n }\n return true;\n }\n isInline() {\n if (typeof this.mapOpts.inline !== \"undefined\") {\n return this.mapOpts.inline;\n }\n let annotation = this.mapOpts.annotation;\n if (typeof annotation !== \"undefined\" && annotation !== true) {\n return false;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.inline);\n }\n return true;\n }\n isMap() {\n if (typeof this.opts.map !== \"undefined\") {\n return !!this.opts.map;\n }\n return this.previous().length > 0;\n }\n isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== \"undefined\") {\n return this.mapOpts.sourcesContent;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.withContent());\n }\n return true;\n }\n outputFile() {\n if (this.opts.to) {\n return this.path(this.opts.to);\n } else if (this.opts.from) {\n return this.path(this.opts.from);\n } else {\n return \"to.css\";\n }\n }\n path(file) {\n if (this.mapOpts.absolute) return file;\n if (file.charCodeAt(0) === 60) return file;\n if (/^\\w+:\\/\\//.test(file)) return file;\n let cached = this.memoizedPaths.get(file);\n if (cached) return cached;\n let from = this.opts.to ? dirname$2(this.opts.to) : \".\";\n if (typeof this.mapOpts.annotation === \"string\") {\n from = dirname$2(resolve$2(from, this.mapOpts.annotation));\n }\n let path = relative$1(from, file);\n this.memoizedPaths.set(file, path);\n return path;\n }\n previous() {\n if (!this.previousMaps) {\n this.previousMaps = [];\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source && node2.source.input.map) {\n let map = node2.source.input.map;\n if (!this.previousMaps.includes(map)) {\n this.previousMaps.push(map);\n }\n }\n });\n } else {\n let input2 = new Input$3$1(this.originalCSS, this.opts);\n if (input2.map) this.previousMaps.push(input2.map);\n }\n }\n return this.previousMaps;\n }\n setSourcesContent() {\n let already = {};\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source) {\n let from = node2.source.input.from;\n if (from && !already[from]) {\n already[from] = true;\n let fromUrl = this.usesFileUrls ? this.toFileUrl(from) : this.toUrl(this.path(from));\n this.map.setSourceContent(fromUrl, node2.source.input.css);\n }\n }\n });\n } else if (this.css) {\n let from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\";\n this.map.setSourceContent(from, this.css);\n }\n }\n sourcePath(node2) {\n if (this.mapOpts.from) {\n return this.toUrl(this.mapOpts.from);\n } else if (this.usesFileUrls) {\n return this.toFileUrl(node2.source.input.from);\n } else {\n return this.toUrl(this.path(node2.source.input.from));\n }\n }\n toBase64(str) {\n if (Buffer) {\n return Buffer.from(str).toString(\"base64\");\n } else {\n return window.btoa(unescape(encodeURIComponent(str)));\n }\n }\n toFileUrl(path) {\n let cached = this.memoizedFileURLs.get(path);\n if (cached) return cached;\n if (pathToFileURL$2) {\n let fileURL = pathToFileURL$2(path).toString();\n this.memoizedFileURLs.set(path, fileURL);\n return fileURL;\n } else {\n throw new Error(\n \"`map.absolute` option is not available in this PostCSS build\"\n );\n }\n }\n toUrl(path) {\n let cached = this.memoizedURLs.get(path);\n if (cached) return cached;\n if (sep$1 === \"\\\\\") {\n path = path.replace(/\\\\/g, \"/\");\n }\n let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent);\n this.memoizedURLs.set(path, url);\n return url;\n }\n};\nvar mapGenerator$1 = MapGenerator$2$1;\nlet Node$2$1 = node$1;\nlet Comment$4$1 = class Comment extends Node$2$1 {\n constructor(defaults) {\n super(defaults);\n this.type = \"comment\";\n }\n};\nvar comment$1 = Comment$4$1;\nComment$4$1.default = Comment$4$1;\nlet { isClean: isClean$1$1, my: my$1$1 } = symbols$1;\nlet Declaration$3$1 = declaration$1;\nlet Comment$3$1 = comment$1;\nlet Node$1$1 = node$1;\nlet parse$4$1, Rule$4$1, AtRule$4$1, Root$6$1;\nfunction cleanSource$1(nodes) {\n return nodes.map((i2) => {\n if (i2.nodes) i2.nodes = cleanSource$1(i2.nodes);\n delete i2.source;\n return i2;\n });\n}\nfunction markDirtyUp$1(node2) {\n node2[isClean$1$1] = false;\n if (node2.proxyOf.nodes) {\n for (let i2 of node2.proxyOf.nodes) {\n markDirtyUp$1(i2);\n }\n }\n}\nlet Container$7$1 = class Container extends Node$1$1 {\n append(...children) {\n for (let child of children) {\n let nodes = this.normalize(child, this.last);\n for (let node2 of nodes) this.proxyOf.nodes.push(node2);\n }\n this.markDirty();\n return this;\n }\n cleanRaws(keepBetween) {\n super.cleanRaws(keepBetween);\n if (this.nodes) {\n for (let node2 of this.nodes) node2.cleanRaws(keepBetween);\n }\n }\n each(callback) {\n if (!this.proxyOf.nodes) return void 0;\n let iterator = this.getIterator();\n let index2, result2;\n while (this.indexes[iterator] < this.proxyOf.nodes.length) {\n index2 = this.indexes[iterator];\n result2 = callback(this.proxyOf.nodes[index2], index2);\n if (result2 === false) break;\n this.indexes[iterator] += 1;\n }\n delete this.indexes[iterator];\n return result2;\n }\n every(condition) {\n return this.nodes.every(condition);\n }\n getIterator() {\n if (!this.lastEach) this.lastEach = 0;\n if (!this.indexes) this.indexes = {};\n this.lastEach += 1;\n let iterator = this.lastEach;\n this.indexes[iterator] = 0;\n return iterator;\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (!node2[prop]) {\n return node2[prop];\n } else if (prop === \"each\" || typeof prop === \"string\" && prop.startsWith(\"walk\")) {\n return (...args) => {\n return node2[prop](\n ...args.map((i2) => {\n if (typeof i2 === \"function\") {\n return (child, index2) => i2(child.toProxy(), index2);\n } else {\n return i2;\n }\n })\n );\n };\n } else if (prop === \"every\" || prop === \"some\") {\n return (cb) => {\n return node2[prop](\n (child, ...other) => cb(child.toProxy(), ...other)\n );\n };\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else if (prop === \"nodes\") {\n return node2.nodes.map((i2) => i2.toProxy());\n } else if (prop === \"first\" || prop === \"last\") {\n return node2[prop].toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"name\" || prop === \"params\" || prop === \"selector\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n index(child) {\n if (typeof child === \"number\") return child;\n if (child.proxyOf) child = child.proxyOf;\n return this.proxyOf.nodes.indexOf(child);\n }\n insertAfter(exist, add) {\n let existIndex = this.index(exist);\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex < index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n insertBefore(exist, add) {\n let existIndex = this.index(exist);\n let type = existIndex === 0 ? \"prepend\" : false;\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex <= index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n normalize(nodes, sample) {\n if (typeof nodes === \"string\") {\n nodes = cleanSource$1(parse$4$1(nodes).nodes);\n } else if (typeof nodes === \"undefined\") {\n nodes = [];\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type === \"root\" && this.type !== \"document\") {\n nodes = nodes.nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type) {\n nodes = [nodes];\n } else if (nodes.prop) {\n if (typeof nodes.value === \"undefined\") {\n throw new Error(\"Value field is missed in node creation\");\n } else if (typeof nodes.value !== \"string\") {\n nodes.value = String(nodes.value);\n }\n nodes = [new Declaration$3$1(nodes)];\n } else if (nodes.selector) {\n nodes = [new Rule$4$1(nodes)];\n } else if (nodes.name) {\n nodes = [new AtRule$4$1(nodes)];\n } else if (nodes.text) {\n nodes = [new Comment$3$1(nodes)];\n } else {\n throw new Error(\"Unknown node type in node creation\");\n }\n let processed = nodes.map((i2) => {\n if (!i2[my$1$1]) Container.rebuild(i2);\n i2 = i2.proxyOf;\n if (i2.parent) i2.parent.removeChild(i2);\n if (i2[isClean$1$1]) markDirtyUp$1(i2);\n if (typeof i2.raws.before === \"undefined\") {\n if (sample && typeof sample.raws.before !== \"undefined\") {\n i2.raws.before = sample.raws.before.replace(/\\S/g, \"\");\n }\n }\n i2.parent = this.proxyOf;\n return i2;\n });\n return processed;\n }\n prepend(...children) {\n children = children.reverse();\n for (let child of children) {\n let nodes = this.normalize(child, this.first, \"prepend\").reverse();\n for (let node2 of nodes) this.proxyOf.nodes.unshift(node2);\n for (let id in this.indexes) {\n this.indexes[id] = this.indexes[id] + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n push(child) {\n child.parent = this;\n this.proxyOf.nodes.push(child);\n return this;\n }\n removeAll() {\n for (let node2 of this.proxyOf.nodes) node2.parent = void 0;\n this.proxyOf.nodes = [];\n this.markDirty();\n return this;\n }\n removeChild(child) {\n child = this.index(child);\n this.proxyOf.nodes[child].parent = void 0;\n this.proxyOf.nodes.splice(child, 1);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (index2 >= child) {\n this.indexes[id] = index2 - 1;\n }\n }\n this.markDirty();\n return this;\n }\n replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {};\n }\n this.walkDecls((decl) => {\n if (opts.props && !opts.props.includes(decl.prop)) return;\n if (opts.fast && !decl.value.includes(opts.fast)) return;\n decl.value = decl.value.replace(pattern, callback);\n });\n this.markDirty();\n return this;\n }\n some(condition) {\n return this.nodes.some(condition);\n }\n walk(callback) {\n return this.each((child, i2) => {\n let result2;\n try {\n result2 = callback(child, i2);\n } catch (e2) {\n throw child.addToError(e2);\n }\n if (result2 !== false && child.walk) {\n result2 = child.walk(callback);\n }\n return result2;\n });\n }\n walkAtRules(name, callback) {\n if (!callback) {\n callback = name;\n return this.walk((child, i2) => {\n if (child.type === \"atrule\") {\n return callback(child, i2);\n }\n });\n }\n if (name instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && name.test(child.name)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && child.name === name) {\n return callback(child, i2);\n }\n });\n }\n walkComments(callback) {\n return this.walk((child, i2) => {\n if (child.type === \"comment\") {\n return callback(child, i2);\n }\n });\n }\n walkDecls(prop, callback) {\n if (!callback) {\n callback = prop;\n return this.walk((child, i2) => {\n if (child.type === \"decl\") {\n return callback(child, i2);\n }\n });\n }\n if (prop instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && prop.test(child.prop)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && child.prop === prop) {\n return callback(child, i2);\n }\n });\n }\n walkRules(selector, callback) {\n if (!callback) {\n callback = selector;\n return this.walk((child, i2) => {\n if (child.type === \"rule\") {\n return callback(child, i2);\n }\n });\n }\n if (selector instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && selector.test(child.selector)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && child.selector === selector) {\n return callback(child, i2);\n }\n });\n }\n get first() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[0];\n }\n get last() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n }\n};\nContainer$7$1.registerParse = (dependant) => {\n parse$4$1 = dependant;\n};\nContainer$7$1.registerRule = (dependant) => {\n Rule$4$1 = dependant;\n};\nContainer$7$1.registerAtRule = (dependant) => {\n AtRule$4$1 = dependant;\n};\nContainer$7$1.registerRoot = (dependant) => {\n Root$6$1 = dependant;\n};\nvar container$1 = Container$7$1;\nContainer$7$1.default = Container$7$1;\nContainer$7$1.rebuild = (node2) => {\n if (node2.type === \"atrule\") {\n Object.setPrototypeOf(node2, AtRule$4$1.prototype);\n } else if (node2.type === \"rule\") {\n Object.setPrototypeOf(node2, Rule$4$1.prototype);\n } else if (node2.type === \"decl\") {\n Object.setPrototypeOf(node2, Declaration$3$1.prototype);\n } else if (node2.type === \"comment\") {\n Object.setPrototypeOf(node2, Comment$3$1.prototype);\n } else if (node2.type === \"root\") {\n Object.setPrototypeOf(node2, Root$6$1.prototype);\n }\n node2[my$1$1] = true;\n if (node2.nodes) {\n node2.nodes.forEach((child) => {\n Container$7$1.rebuild(child);\n });\n }\n};\nlet Container$6$1 = container$1;\nlet LazyResult$4$1, Processor$3$1;\nlet Document$3$1 = class Document2 extends Container$6$1 {\n constructor(defaults) {\n super({ type: \"document\", ...defaults });\n if (!this.nodes) {\n this.nodes = [];\n }\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$4$1(new Processor$3$1(), this, opts);\n return lazy.stringify();\n }\n};\nDocument$3$1.registerLazyResult = (dependant) => {\n LazyResult$4$1 = dependant;\n};\nDocument$3$1.registerProcessor = (dependant) => {\n Processor$3$1 = dependant;\n};\nvar document$1$1 = Document$3$1;\nDocument$3$1.default = Document$3$1;\nlet printed$1 = {};\nvar warnOnce$2$1 = function warnOnce(message) {\n if (printed$1[message]) return;\n printed$1[message] = true;\n if (typeof console !== \"undefined\" && console.warn) {\n console.warn(message);\n }\n};\nlet Warning$2$1 = class Warning {\n constructor(text, opts = {}) {\n this.type = \"warning\";\n this.text = text;\n if (opts.node && opts.node.source) {\n let range = opts.node.rangeBy(opts);\n this.line = range.start.line;\n this.column = range.start.column;\n this.endLine = range.end.line;\n this.endColumn = range.end.column;\n }\n for (let opt in opts) this[opt] = opts[opt];\n }\n toString() {\n if (this.node) {\n return this.node.error(this.text, {\n index: this.index,\n plugin: this.plugin,\n word: this.word\n }).message;\n }\n if (this.plugin) {\n return this.plugin + \": \" + this.text;\n }\n return this.text;\n }\n};\nvar warning$1 = Warning$2$1;\nWarning$2$1.default = Warning$2$1;\nlet Warning$1$1 = warning$1;\nlet Result$3$1 = class Result {\n constructor(processor2, root2, opts) {\n this.processor = processor2;\n this.messages = [];\n this.root = root2;\n this.opts = opts;\n this.css = void 0;\n this.map = void 0;\n }\n toString() {\n return this.css;\n }\n warn(text, opts = {}) {\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin;\n }\n }\n let warning2 = new Warning$1$1(text, opts);\n this.messages.push(warning2);\n return warning2;\n }\n warnings() {\n return this.messages.filter((i2) => i2.type === \"warning\");\n }\n get content() {\n return this.css;\n }\n};\nvar result$1 = Result$3$1;\nResult$3$1.default = Result$3$1;\nconst SINGLE_QUOTE$1 = \"'\".charCodeAt(0);\nconst DOUBLE_QUOTE$1 = '\"'.charCodeAt(0);\nconst BACKSLASH$1 = \"\\\\\".charCodeAt(0);\nconst SLASH$1 = \"/\".charCodeAt(0);\nconst NEWLINE$1 = \"\\n\".charCodeAt(0);\nconst SPACE$1 = \" \".charCodeAt(0);\nconst FEED$1 = \"\\f\".charCodeAt(0);\nconst TAB$1 = \"\t\".charCodeAt(0);\nconst CR$1 = \"\\r\".charCodeAt(0);\nconst OPEN_SQUARE$1 = \"[\".charCodeAt(0);\nconst CLOSE_SQUARE$1 = \"]\".charCodeAt(0);\nconst OPEN_PARENTHESES$1 = \"(\".charCodeAt(0);\nconst CLOSE_PARENTHESES$1 = \")\".charCodeAt(0);\nconst OPEN_CURLY$1 = \"{\".charCodeAt(0);\nconst CLOSE_CURLY$1 = \"}\".charCodeAt(0);\nconst SEMICOLON$1 = \";\".charCodeAt(0);\nconst ASTERISK$1 = \"*\".charCodeAt(0);\nconst COLON$1 = \":\".charCodeAt(0);\nconst AT$1 = \"@\".charCodeAt(0);\nconst RE_AT_END$1 = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g;\nconst RE_WORD_END$1 = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g;\nconst RE_BAD_BRACKET$1 = /.[\\r\\n\"'(/\\\\]/;\nconst RE_HEX_ESCAPE$1 = /[\\da-f]/i;\nvar tokenize$1 = function tokenizer(input2, options = {}) {\n let css = input2.css.valueOf();\n let ignore = options.ignoreErrors;\n let code, next, quote, content, escape;\n let escaped, escapePos, prev, n2, currentToken;\n let length = css.length;\n let pos = 0;\n let buffer = [];\n let returned = [];\n function position() {\n return pos;\n }\n function unclosed(what) {\n throw input2.error(\"Unclosed \" + what, pos);\n }\n function endOfFile() {\n return returned.length === 0 && pos >= length;\n }\n function nextToken(opts) {\n if (returned.length) return returned.pop();\n if (pos >= length) return;\n let ignoreUnclosed = opts ? opts.ignoreUnclosed : false;\n code = css.charCodeAt(pos);\n switch (code) {\n case NEWLINE$1:\n case SPACE$1:\n case TAB$1:\n case CR$1:\n case FEED$1: {\n next = pos;\n do {\n next += 1;\n code = css.charCodeAt(next);\n } while (code === SPACE$1 || code === NEWLINE$1 || code === TAB$1 || code === CR$1 || code === FEED$1);\n currentToken = [\"space\", css.slice(pos, next)];\n pos = next - 1;\n break;\n }\n case OPEN_SQUARE$1:\n case CLOSE_SQUARE$1:\n case OPEN_CURLY$1:\n case CLOSE_CURLY$1:\n case COLON$1:\n case SEMICOLON$1:\n case CLOSE_PARENTHESES$1: {\n let controlChar = String.fromCharCode(code);\n currentToken = [controlChar, controlChar, pos];\n break;\n }\n case OPEN_PARENTHESES$1: {\n prev = buffer.length ? buffer.pop()[1] : \"\";\n n2 = css.charCodeAt(pos + 1);\n if (prev === \"url\" && n2 !== SINGLE_QUOTE$1 && n2 !== DOUBLE_QUOTE$1 && n2 !== SPACE$1 && n2 !== NEWLINE$1 && n2 !== TAB$1 && n2 !== FEED$1 && n2 !== CR$1) {\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(\")\", next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos;\n break;\n } else {\n unclosed(\"bracket\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH$1) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"brackets\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n next = css.indexOf(\")\", pos + 1);\n content = css.slice(pos, next + 1);\n if (next === -1 || RE_BAD_BRACKET$1.test(content)) {\n currentToken = [\"(\", \"(\", pos];\n } else {\n currentToken = [\"brackets\", content, pos, next];\n pos = next;\n }\n }\n break;\n }\n case SINGLE_QUOTE$1:\n case DOUBLE_QUOTE$1: {\n quote = code === SINGLE_QUOTE$1 ? \"'\" : '\"';\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(quote, next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos + 1;\n break;\n } else {\n unclosed(\"string\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH$1) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"string\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case AT$1: {\n RE_AT_END$1.lastIndex = pos + 1;\n RE_AT_END$1.test(css);\n if (RE_AT_END$1.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_AT_END$1.lastIndex - 2;\n }\n currentToken = [\"at-word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case BACKSLASH$1: {\n next = pos;\n escape = true;\n while (css.charCodeAt(next + 1) === BACKSLASH$1) {\n next += 1;\n escape = !escape;\n }\n code = css.charCodeAt(next + 1);\n if (escape && code !== SLASH$1 && code !== SPACE$1 && code !== NEWLINE$1 && code !== TAB$1 && code !== CR$1 && code !== FEED$1) {\n next += 1;\n if (RE_HEX_ESCAPE$1.test(css.charAt(next))) {\n while (RE_HEX_ESCAPE$1.test(css.charAt(next + 1))) {\n next += 1;\n }\n if (css.charCodeAt(next + 1) === SPACE$1) {\n next += 1;\n }\n }\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n default: {\n if (code === SLASH$1 && css.charCodeAt(pos + 1) === ASTERISK$1) {\n next = css.indexOf(\"*/\", pos + 2) + 1;\n if (next === 0) {\n if (ignore || ignoreUnclosed) {\n next = css.length;\n } else {\n unclosed(\"comment\");\n }\n }\n currentToken = [\"comment\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n RE_WORD_END$1.lastIndex = pos + 1;\n RE_WORD_END$1.test(css);\n if (RE_WORD_END$1.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_WORD_END$1.lastIndex - 2;\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n buffer.push(currentToken);\n pos = next;\n }\n break;\n }\n }\n pos++;\n return currentToken;\n }\n function back(token) {\n returned.push(token);\n }\n return {\n back,\n endOfFile,\n nextToken,\n position\n };\n};\nlet Container$5$1 = container$1;\nlet AtRule$3$1 = class AtRule extends Container$5$1 {\n constructor(defaults) {\n super(defaults);\n this.type = \"atrule\";\n }\n append(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.append(...children);\n }\n prepend(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.prepend(...children);\n }\n};\nvar atRule$1 = AtRule$3$1;\nAtRule$3$1.default = AtRule$3$1;\nContainer$5$1.registerAtRule(AtRule$3$1);\nlet Container$4$1 = container$1;\nlet LazyResult$3$1, Processor$2$1;\nlet Root$5$1 = class Root extends Container$4$1 {\n constructor(defaults) {\n super(defaults);\n this.type = \"root\";\n if (!this.nodes) this.nodes = [];\n }\n normalize(child, sample, type) {\n let nodes = super.normalize(child);\n if (sample) {\n if (type === \"prepend\") {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before;\n } else {\n delete sample.raws.before;\n }\n } else if (this.first !== sample) {\n for (let node2 of nodes) {\n node2.raws.before = sample.raws.before;\n }\n }\n }\n return nodes;\n }\n removeChild(child, ignore) {\n let index2 = this.index(child);\n if (!ignore && index2 === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index2].raws.before;\n }\n return super.removeChild(child);\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$3$1(new Processor$2$1(), this, opts);\n return lazy.stringify();\n }\n};\nRoot$5$1.registerLazyResult = (dependant) => {\n LazyResult$3$1 = dependant;\n};\nRoot$5$1.registerProcessor = (dependant) => {\n Processor$2$1 = dependant;\n};\nvar root$1 = Root$5$1;\nRoot$5$1.default = Root$5$1;\nContainer$4$1.registerRoot(Root$5$1);\nlet list$2$1 = {\n comma(string) {\n return list$2$1.split(string, [\",\"], true);\n },\n space(string) {\n let spaces = [\" \", \"\\n\", \"\t\"];\n return list$2$1.split(string, spaces);\n },\n split(string, separators, last) {\n let array = [];\n let current = \"\";\n let split = false;\n let func = 0;\n let inQuote = false;\n let prevQuote = \"\";\n let escape = false;\n for (let letter of string) {\n if (escape) {\n escape = false;\n } else if (letter === \"\\\\\") {\n escape = true;\n } else if (inQuote) {\n if (letter === prevQuote) {\n inQuote = false;\n }\n } else if (letter === '\"' || letter === \"'\") {\n inQuote = true;\n prevQuote = letter;\n } else if (letter === \"(\") {\n func += 1;\n } else if (letter === \")\") {\n if (func > 0) func -= 1;\n } else if (func === 0) {\n if (separators.includes(letter)) split = true;\n }\n if (split) {\n if (current !== \"\") array.push(current.trim());\n current = \"\";\n split = false;\n } else {\n current += letter;\n }\n }\n if (last || current !== \"\") array.push(current.trim());\n return array;\n }\n};\nvar list_1$1 = list$2$1;\nlist$2$1.default = list$2$1;\nlet Container$3$1 = container$1;\nlet list$1$1 = list_1$1;\nlet Rule$3$1 = class Rule extends Container$3$1 {\n constructor(defaults) {\n super(defaults);\n this.type = \"rule\";\n if (!this.nodes) this.nodes = [];\n }\n get selectors() {\n return list$1$1.comma(this.selector);\n }\n set selectors(values) {\n let match = this.selector ? this.selector.match(/,\\s*/) : null;\n let sep2 = match ? match[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n this.selector = values.join(sep2);\n }\n};\nvar rule$1 = Rule$3$1;\nRule$3$1.default = Rule$3$1;\nContainer$3$1.registerRule(Rule$3$1);\nlet Declaration$2$1 = declaration$1;\nlet tokenizer2$1 = tokenize$1;\nlet Comment$2$1 = comment$1;\nlet AtRule$2$1 = atRule$1;\nlet Root$4$1 = root$1;\nlet Rule$2$1 = rule$1;\nconst SAFE_COMMENT_NEIGHBOR$1 = {\n empty: true,\n space: true\n};\nfunction findLastWithPosition$1(tokens) {\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n let token = tokens[i2];\n let pos = token[3] || token[2];\n if (pos) return pos;\n }\n}\nlet Parser$1$1 = class Parser {\n constructor(input2) {\n this.input = input2;\n this.root = new Root$4$1();\n this.current = this.root;\n this.spaces = \"\";\n this.semicolon = false;\n this.createTokenizer();\n this.root.source = { input: input2, start: { column: 1, line: 1, offset: 0 } };\n }\n atrule(token) {\n let node2 = new AtRule$2$1();\n node2.name = token[1].slice(1);\n if (node2.name === \"\") {\n this.unnamedAtrule(node2, token);\n }\n this.init(node2, token[2]);\n let type;\n let prev;\n let shift;\n let last = false;\n let open = false;\n let params = [];\n let brackets = [];\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n type = token[0];\n if (type === \"(\" || type === \"[\") {\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (type === \"{\" && brackets.length > 0) {\n brackets.push(\"}\");\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n }\n if (brackets.length === 0) {\n if (type === \";\") {\n node2.source.end = this.getPosition(token[2]);\n node2.source.end.offset++;\n this.semicolon = true;\n break;\n } else if (type === \"{\") {\n open = true;\n break;\n } else if (type === \"}\") {\n if (params.length > 0) {\n shift = params.length - 1;\n prev = params[shift];\n while (prev && prev[0] === \"space\") {\n prev = params[--shift];\n }\n if (prev) {\n node2.source.end = this.getPosition(prev[3] || prev[2]);\n node2.source.end.offset++;\n }\n }\n this.end(token);\n break;\n } else {\n params.push(token);\n }\n } else {\n params.push(token);\n }\n if (this.tokenizer.endOfFile()) {\n last = true;\n break;\n }\n }\n node2.raws.between = this.spacesAndCommentsFromEnd(params);\n if (params.length) {\n node2.raws.afterName = this.spacesAndCommentsFromStart(params);\n this.raw(node2, \"params\", params);\n if (last) {\n token = params[params.length - 1];\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n this.spaces = node2.raws.between;\n node2.raws.between = \"\";\n }\n } else {\n node2.raws.afterName = \"\";\n node2.params = \"\";\n }\n if (open) {\n node2.nodes = [];\n this.current = node2;\n }\n }\n checkMissedSemicolon(tokens) {\n let colon = this.colon(tokens);\n if (colon === false) return;\n let founded = 0;\n let token;\n for (let j = colon - 1; j >= 0; j--) {\n token = tokens[j];\n if (token[0] !== \"space\") {\n founded += 1;\n if (founded === 2) break;\n }\n }\n throw this.input.error(\n \"Missed semicolon\",\n token[0] === \"word\" ? token[3] + 1 : token[2]\n );\n }\n colon(tokens) {\n let brackets = 0;\n let token, type, prev;\n for (let [i2, element] of tokens.entries()) {\n token = element;\n type = token[0];\n if (type === \"(\") {\n brackets += 1;\n }\n if (type === \")\") {\n brackets -= 1;\n }\n if (brackets === 0 && type === \":\") {\n if (!prev) {\n this.doubleColon(token);\n } else if (prev[0] === \"word\" && prev[1] === \"progid\") {\n continue;\n } else {\n return i2;\n }\n }\n prev = token;\n }\n return false;\n }\n comment(token) {\n let node2 = new Comment$2$1();\n this.init(node2, token[2]);\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n let text = token[1].slice(2, -2);\n if (/^\\s*$/.test(text)) {\n node2.text = \"\";\n node2.raws.left = text;\n node2.raws.right = \"\";\n } else {\n let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n node2.text = match[2];\n node2.raws.left = match[1];\n node2.raws.right = match[3];\n }\n }\n createTokenizer() {\n this.tokenizer = tokenizer2$1(this.input);\n }\n decl(tokens, customProperty) {\n let node2 = new Declaration$2$1();\n this.init(node2, tokens[0][2]);\n let last = tokens[tokens.length - 1];\n if (last[0] === \";\") {\n this.semicolon = true;\n tokens.pop();\n }\n node2.source.end = this.getPosition(\n last[3] || last[2] || findLastWithPosition$1(tokens)\n );\n node2.source.end.offset++;\n while (tokens[0][0] !== \"word\") {\n if (tokens.length === 1) this.unknownWord(tokens);\n node2.raws.before += tokens.shift()[1];\n }\n node2.source.start = this.getPosition(tokens[0][2]);\n node2.prop = \"\";\n while (tokens.length) {\n let type = tokens[0][0];\n if (type === \":\" || type === \"space\" || type === \"comment\") {\n break;\n }\n node2.prop += tokens.shift()[1];\n }\n node2.raws.between = \"\";\n let token;\n while (tokens.length) {\n token = tokens.shift();\n if (token[0] === \":\") {\n node2.raws.between += token[1];\n break;\n } else {\n if (token[0] === \"word\" && /\\w/.test(token[1])) {\n this.unknownWord([token]);\n }\n node2.raws.between += token[1];\n }\n }\n if (node2.prop[0] === \"_\" || node2.prop[0] === \"*\") {\n node2.raws.before += node2.prop[0];\n node2.prop = node2.prop.slice(1);\n }\n let firstSpaces = [];\n let next;\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n firstSpaces.push(tokens.shift());\n }\n this.precheckMissedSemicolon(tokens);\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n token = tokens[i2];\n if (token[1].toLowerCase() === \"!important\") {\n node2.important = true;\n let string = this.stringFrom(tokens, i2);\n string = this.spacesFromEnd(tokens) + string;\n if (string !== \" !important\") node2.raws.important = string;\n break;\n } else if (token[1].toLowerCase() === \"important\") {\n let cache = tokens.slice(0);\n let str = \"\";\n for (let j = i2; j > 0; j--) {\n let type = cache[j][0];\n if (str.trim().indexOf(\"!\") === 0 && type !== \"space\") {\n break;\n }\n str = cache.pop()[1] + str;\n }\n if (str.trim().indexOf(\"!\") === 0) {\n node2.important = true;\n node2.raws.important = str;\n tokens = cache;\n }\n }\n if (token[0] !== \"space\" && token[0] !== \"comment\") {\n break;\n }\n }\n let hasWord = tokens.some((i2) => i2[0] !== \"space\" && i2[0] !== \"comment\");\n if (hasWord) {\n node2.raws.between += firstSpaces.map((i2) => i2[1]).join(\"\");\n firstSpaces = [];\n }\n this.raw(node2, \"value\", firstSpaces.concat(tokens), customProperty);\n if (node2.value.includes(\":\") && !customProperty) {\n this.checkMissedSemicolon(tokens);\n }\n }\n doubleColon(token) {\n throw this.input.error(\n \"Double colon\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n emptyRule(token) {\n let node2 = new Rule$2$1();\n this.init(node2, token[2]);\n node2.selector = \"\";\n node2.raws.between = \"\";\n this.current = node2;\n }\n end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.semicolon = false;\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.spaces = \"\";\n if (this.current.parent) {\n this.current.source.end = this.getPosition(token[2]);\n this.current.source.end.offset++;\n this.current = this.current.parent;\n } else {\n this.unexpectedClose(token);\n }\n }\n endFile() {\n if (this.current.parent) this.unclosedBlock();\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.root.source.end = this.getPosition(this.tokenizer.position());\n }\n freeSemicolon(token) {\n this.spaces += token[1];\n if (this.current.nodes) {\n let prev = this.current.nodes[this.current.nodes.length - 1];\n if (prev && prev.type === \"rule\" && !prev.raws.ownSemicolon) {\n prev.raws.ownSemicolon = this.spaces;\n this.spaces = \"\";\n }\n }\n }\n // Helpers\n getPosition(offset) {\n let pos = this.input.fromOffset(offset);\n return {\n column: pos.col,\n line: pos.line,\n offset\n };\n }\n init(node2, offset) {\n this.current.push(node2);\n node2.source = {\n input: this.input,\n start: this.getPosition(offset)\n };\n node2.raws.before = this.spaces;\n this.spaces = \"\";\n if (node2.type !== \"comment\") this.semicolon = false;\n }\n other(start) {\n let end = false;\n let type = null;\n let colon = false;\n let bracket = null;\n let brackets = [];\n let customProperty = start[1].startsWith(\"--\");\n let tokens = [];\n let token = start;\n while (token) {\n type = token[0];\n tokens.push(token);\n if (type === \"(\" || type === \"[\") {\n if (!bracket) bracket = token;\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (customProperty && colon && type === \"{\") {\n if (!bracket) bracket = token;\n brackets.push(\"}\");\n } else if (brackets.length === 0) {\n if (type === \";\") {\n if (colon) {\n this.decl(tokens, customProperty);\n return;\n } else {\n break;\n }\n } else if (type === \"{\") {\n this.rule(tokens);\n return;\n } else if (type === \"}\") {\n this.tokenizer.back(tokens.pop());\n end = true;\n break;\n } else if (type === \":\") {\n colon = true;\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n if (brackets.length === 0) bracket = null;\n }\n token = this.tokenizer.nextToken();\n }\n if (this.tokenizer.endOfFile()) end = true;\n if (brackets.length > 0) this.unclosedBracket(bracket);\n if (end && colon) {\n if (!customProperty) {\n while (tokens.length) {\n token = tokens[tokens.length - 1][0];\n if (token !== \"space\" && token !== \"comment\") break;\n this.tokenizer.back(tokens.pop());\n }\n }\n this.decl(tokens, customProperty);\n } else {\n this.unknownWord(tokens);\n }\n }\n parse() {\n let token;\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n switch (token[0]) {\n case \"space\":\n this.spaces += token[1];\n break;\n case \";\":\n this.freeSemicolon(token);\n break;\n case \"}\":\n this.end(token);\n break;\n case \"comment\":\n this.comment(token);\n break;\n case \"at-word\":\n this.atrule(token);\n break;\n case \"{\":\n this.emptyRule(token);\n break;\n default:\n this.other(token);\n break;\n }\n }\n this.endFile();\n }\n precheckMissedSemicolon() {\n }\n raw(node2, prop, tokens, customProperty) {\n let token, type;\n let length = tokens.length;\n let value = \"\";\n let clean = true;\n let next, prev;\n for (let i2 = 0; i2 < length; i2 += 1) {\n token = tokens[i2];\n type = token[0];\n if (type === \"space\" && i2 === length - 1 && !customProperty) {\n clean = false;\n } else if (type === \"comment\") {\n prev = tokens[i2 - 1] ? tokens[i2 - 1][0] : \"empty\";\n next = tokens[i2 + 1] ? tokens[i2 + 1][0] : \"empty\";\n if (!SAFE_COMMENT_NEIGHBOR$1[prev] && !SAFE_COMMENT_NEIGHBOR$1[next]) {\n if (value.slice(-1) === \",\") {\n clean = false;\n } else {\n value += token[1];\n }\n } else {\n clean = false;\n }\n } else {\n value += token[1];\n }\n }\n if (!clean) {\n let raw = tokens.reduce((all, i2) => all + i2[1], \"\");\n node2.raws[prop] = { raw, value };\n }\n node2[prop] = value;\n }\n rule(tokens) {\n tokens.pop();\n let node2 = new Rule$2$1();\n this.init(node2, tokens[0][2]);\n node2.raws.between = this.spacesAndCommentsFromEnd(tokens);\n this.raw(node2, \"selector\", tokens);\n this.current = node2;\n }\n spacesAndCommentsFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\" && lastTokenType !== \"comment\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n // Errors\n spacesAndCommentsFromStart(tokens) {\n let next;\n let spaces = \"\";\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n spaces += tokens.shift()[1];\n }\n return spaces;\n }\n spacesFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n stringFrom(tokens, from) {\n let result2 = \"\";\n for (let i2 = from; i2 < tokens.length; i2++) {\n result2 += tokens[i2][1];\n }\n tokens.splice(from, tokens.length - from);\n return result2;\n }\n unclosedBlock() {\n let pos = this.current.source.start;\n throw this.input.error(\"Unclosed block\", pos.line, pos.column);\n }\n unclosedBracket(bracket) {\n throw this.input.error(\n \"Unclosed bracket\",\n { offset: bracket[2] },\n { offset: bracket[2] + 1 }\n );\n }\n unexpectedClose(token) {\n throw this.input.error(\n \"Unexpected }\",\n { offset: token[2] },\n { offset: token[2] + 1 }\n );\n }\n unknownWord(tokens) {\n throw this.input.error(\n \"Unknown word\",\n { offset: tokens[0][2] },\n { offset: tokens[0][2] + tokens[0][1].length }\n );\n }\n unnamedAtrule(node2, token) {\n throw this.input.error(\n \"At-rule without name\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n};\nvar parser$1 = Parser$1$1;\nlet Container$2$1 = container$1;\nlet Parser2$1 = parser$1;\nlet Input$2$1 = input$1;\nfunction parse$3$1(css, opts) {\n let input2 = new Input$2$1(css, opts);\n let parser2 = new Parser2$1(input2);\n try {\n parser2.parse();\n } catch (e2) {\n if (process.env.NODE_ENV !== \"production\") {\n if (e2.name === \"CssSyntaxError\" && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser\";\n } else if (/\\.sass/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser\";\n } else if (/\\.less$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser\";\n }\n }\n }\n throw e2;\n }\n return parser2.root;\n}\nvar parse_1$1 = parse$3$1;\nparse$3$1.default = parse$3$1;\nContainer$2$1.registerParse(parse$3$1);\nlet { isClean: isClean$3, my: my$3 } = symbols$1;\nlet MapGenerator$1$1 = mapGenerator$1;\nlet stringify$2$1 = stringify_1$1;\nlet Container$1$1 = container$1;\nlet Document$2$1 = document$1$1;\nlet warnOnce$1$1 = warnOnce$2$1;\nlet Result$2$1 = result$1;\nlet parse$2$1 = parse_1$1;\nlet Root$3$1 = root$1;\nconst TYPE_TO_CLASS_NAME$1 = {\n atrule: \"AtRule\",\n comment: \"Comment\",\n decl: \"Declaration\",\n document: \"Document\",\n root: \"Root\",\n rule: \"Rule\"\n};\nconst PLUGIN_PROPS$1 = {\n AtRule: true,\n AtRuleExit: true,\n Comment: true,\n CommentExit: true,\n Declaration: true,\n DeclarationExit: true,\n Document: true,\n DocumentExit: true,\n Once: true,\n OnceExit: true,\n postcssPlugin: true,\n prepare: true,\n Root: true,\n RootExit: true,\n Rule: true,\n RuleExit: true\n};\nconst NOT_VISITORS$1 = {\n Once: true,\n postcssPlugin: true,\n prepare: true\n};\nconst CHILDREN$1 = 0;\nfunction isPromise$1(obj) {\n return typeof obj === \"object\" && typeof obj.then === \"function\";\n}\nfunction getEvents$1(node2) {\n let key = false;\n let type = TYPE_TO_CLASS_NAME$1[node2.type];\n if (node2.type === \"decl\") {\n key = node2.prop.toLowerCase();\n } else if (node2.type === \"atrule\") {\n key = node2.name.toLowerCase();\n }\n if (key && node2.append) {\n return [\n type,\n type + \"-\" + key,\n CHILDREN$1,\n type + \"Exit\",\n type + \"Exit-\" + key\n ];\n } else if (key) {\n return [type, type + \"-\" + key, type + \"Exit\", type + \"Exit-\" + key];\n } else if (node2.append) {\n return [type, CHILDREN$1, type + \"Exit\"];\n } else {\n return [type, type + \"Exit\"];\n }\n}\nfunction toStack$1(node2) {\n let events;\n if (node2.type === \"document\") {\n events = [\"Document\", CHILDREN$1, \"DocumentExit\"];\n } else if (node2.type === \"root\") {\n events = [\"Root\", CHILDREN$1, \"RootExit\"];\n } else {\n events = getEvents$1(node2);\n }\n return {\n eventIndex: 0,\n events,\n iterator: 0,\n node: node2,\n visitorIndex: 0,\n visitors: []\n };\n}\nfunction cleanMarks$1(node2) {\n node2[isClean$3] = false;\n if (node2.nodes) node2.nodes.forEach((i2) => cleanMarks$1(i2));\n return node2;\n}\nlet postcss$2$1 = {};\nlet LazyResult$2$1 = class LazyResult {\n constructor(processor2, css, opts) {\n this.stringified = false;\n this.processed = false;\n let root2;\n if (typeof css === \"object\" && css !== null && (css.type === \"root\" || css.type === \"document\")) {\n root2 = cleanMarks$1(css);\n } else if (css instanceof LazyResult || css instanceof Result$2$1) {\n root2 = cleanMarks$1(css.root);\n if (css.map) {\n if (typeof opts.map === \"undefined\") opts.map = {};\n if (!opts.map.inline) opts.map.inline = false;\n opts.map.prev = css.map;\n }\n } else {\n let parser2 = parse$2$1;\n if (opts.syntax) parser2 = opts.syntax.parse;\n if (opts.parser) parser2 = opts.parser;\n if (parser2.parse) parser2 = parser2.parse;\n try {\n root2 = parser2(css, opts);\n } catch (error) {\n this.processed = true;\n this.error = error;\n }\n if (root2 && !root2[my$3]) {\n Container$1$1.rebuild(root2);\n }\n }\n this.result = new Result$2$1(processor2, root2, opts);\n this.helpers = { ...postcss$2$1, postcss: postcss$2$1, result: this.result };\n this.plugins = this.processor.plugins.map((plugin22) => {\n if (typeof plugin22 === \"object\" && plugin22.prepare) {\n return { ...plugin22, ...plugin22.prepare(this.result) };\n } else {\n return plugin22;\n }\n });\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n if (this.processed) return Promise.resolve(this.result);\n if (!this.processing) {\n this.processing = this.runAsync();\n }\n return this.processing;\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n getAsyncError() {\n throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n }\n handleError(error, node2) {\n let plugin22 = this.result.lastPlugin;\n try {\n if (node2) node2.addToError(error);\n this.error = error;\n if (error.name === \"CssSyntaxError\" && !error.plugin) {\n error.plugin = plugin22.postcssPlugin;\n error.setMessage();\n } else if (plugin22.postcssVersion) {\n if (process.env.NODE_ENV !== \"production\") {\n let pluginName = plugin22.postcssPlugin;\n let pluginVer = plugin22.postcssVersion;\n let runtimeVer = this.result.processor.version;\n let a2 = pluginVer.split(\".\");\n let b = runtimeVer.split(\".\");\n if (a2[0] !== b[0] || parseInt(a2[1]) > parseInt(b[1])) {\n console.error(\n \"Unknown error from PostCSS plugin. Your current PostCSS version is \" + runtimeVer + \", but \" + pluginName + \" uses \" + pluginVer + \". Perhaps this is the source of the error below.\"\n );\n }\n }\n }\n } catch (err) {\n if (console && console.error) console.error(err);\n }\n return error;\n }\n prepareVisitors() {\n this.listeners = {};\n let add = (plugin22, type, cb) => {\n if (!this.listeners[type]) this.listeners[type] = [];\n this.listeners[type].push([plugin22, cb]);\n };\n for (let plugin22 of this.plugins) {\n if (typeof plugin22 === \"object\") {\n for (let event in plugin22) {\n if (!PLUGIN_PROPS$1[event] && /^[A-Z]/.test(event)) {\n throw new Error(\n `Unknown event ${event} in ${plugin22.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`\n );\n }\n if (!NOT_VISITORS$1[event]) {\n if (typeof plugin22[event] === \"object\") {\n for (let filter in plugin22[event]) {\n if (filter === \"*\") {\n add(plugin22, event, plugin22[event][filter]);\n } else {\n add(\n plugin22,\n event + \"-\" + filter.toLowerCase(),\n plugin22[event][filter]\n );\n }\n }\n } else if (typeof plugin22[event] === \"function\") {\n add(plugin22, event, plugin22[event]);\n }\n }\n }\n }\n }\n this.hasListener = Object.keys(this.listeners).length > 0;\n }\n async runAsync() {\n this.plugin = 0;\n for (let i2 = 0; i2 < this.plugins.length; i2++) {\n let plugin22 = this.plugins[i2];\n let promise = this.runOnRoot(plugin22);\n if (isPromise$1(promise)) {\n try {\n await promise;\n } catch (error) {\n throw this.handleError(error);\n }\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean$3]) {\n root2[isClean$3] = true;\n let stack = [toStack$1(root2)];\n while (stack.length > 0) {\n let promise = this.visitTick(stack);\n if (isPromise$1(promise)) {\n try {\n await promise;\n } catch (e2) {\n let node2 = stack[stack.length - 1].node;\n throw this.handleError(e2, node2);\n }\n }\n }\n }\n if (this.listeners.OnceExit) {\n for (let [plugin22, visitor] of this.listeners.OnceExit) {\n this.result.lastPlugin = plugin22;\n try {\n if (root2.type === \"document\") {\n let roots = root2.nodes.map(\n (subRoot) => visitor(subRoot, this.helpers)\n );\n await Promise.all(roots);\n } else {\n await visitor(root2, this.helpers);\n }\n } catch (e2) {\n throw this.handleError(e2);\n }\n }\n }\n }\n this.processed = true;\n return this.stringify();\n }\n runOnRoot(plugin22) {\n this.result.lastPlugin = plugin22;\n try {\n if (typeof plugin22 === \"object\" && plugin22.Once) {\n if (this.result.root.type === \"document\") {\n let roots = this.result.root.nodes.map(\n (root2) => plugin22.Once(root2, this.helpers)\n );\n if (isPromise$1(roots[0])) {\n return Promise.all(roots);\n }\n return roots;\n }\n return plugin22.Once(this.result.root, this.helpers);\n } else if (typeof plugin22 === \"function\") {\n return plugin22(this.result.root, this.result);\n }\n } catch (error) {\n throw this.handleError(error);\n }\n }\n stringify() {\n if (this.error) throw this.error;\n if (this.stringified) return this.result;\n this.stringified = true;\n this.sync();\n let opts = this.result.opts;\n let str = stringify$2$1;\n if (opts.syntax) str = opts.syntax.stringify;\n if (opts.stringifier) str = opts.stringifier;\n if (str.stringify) str = str.stringify;\n let map = new MapGenerator$1$1(str, this.result.root, this.result.opts);\n let data = map.generate();\n this.result.css = data[0];\n this.result.map = data[1];\n return this.result;\n }\n sync() {\n if (this.error) throw this.error;\n if (this.processed) return this.result;\n this.processed = true;\n if (this.processing) {\n throw this.getAsyncError();\n }\n for (let plugin22 of this.plugins) {\n let promise = this.runOnRoot(plugin22);\n if (isPromise$1(promise)) {\n throw this.getAsyncError();\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean$3]) {\n root2[isClean$3] = true;\n this.walkSync(root2);\n }\n if (this.listeners.OnceExit) {\n if (root2.type === \"document\") {\n for (let subRoot of root2.nodes) {\n this.visitSync(this.listeners.OnceExit, subRoot);\n }\n } else {\n this.visitSync(this.listeners.OnceExit, root2);\n }\n }\n }\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this.opts)) {\n warnOnce$1$1(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this.css;\n }\n visitSync(visitors, node2) {\n for (let [plugin22, visitor] of visitors) {\n this.result.lastPlugin = plugin22;\n let promise;\n try {\n promise = visitor(node2, this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2.proxyOf);\n }\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n return true;\n }\n if (isPromise$1(promise)) {\n throw this.getAsyncError();\n }\n }\n }\n visitTick(stack) {\n let visit2 = stack[stack.length - 1];\n let { node: node2, visitors } = visit2;\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n stack.pop();\n return;\n }\n if (visitors.length > 0 && visit2.visitorIndex < visitors.length) {\n let [plugin22, visitor] = visitors[visit2.visitorIndex];\n visit2.visitorIndex += 1;\n if (visit2.visitorIndex === visitors.length) {\n visit2.visitors = [];\n visit2.visitorIndex = 0;\n }\n this.result.lastPlugin = plugin22;\n try {\n return visitor(node2.toProxy(), this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2);\n }\n }\n if (visit2.iterator !== 0) {\n let iterator = visit2.iterator;\n let child;\n while (child = node2.nodes[node2.indexes[iterator]]) {\n node2.indexes[iterator] += 1;\n if (!child[isClean$3]) {\n child[isClean$3] = true;\n stack.push(toStack$1(child));\n return;\n }\n }\n visit2.iterator = 0;\n delete node2.indexes[iterator];\n }\n let events = visit2.events;\n while (visit2.eventIndex < events.length) {\n let event = events[visit2.eventIndex];\n visit2.eventIndex += 1;\n if (event === CHILDREN$1) {\n if (node2.nodes && node2.nodes.length) {\n node2[isClean$3] = true;\n visit2.iterator = node2.getIterator();\n }\n return;\n } else if (this.listeners[event]) {\n visit2.visitors = this.listeners[event];\n return;\n }\n }\n stack.pop();\n }\n walkSync(node2) {\n node2[isClean$3] = true;\n let events = getEvents$1(node2);\n for (let event of events) {\n if (event === CHILDREN$1) {\n if (node2.nodes) {\n node2.each((child) => {\n if (!child[isClean$3]) this.walkSync(child);\n });\n }\n } else {\n let visitors = this.listeners[event];\n if (visitors) {\n if (this.visitSync(visitors, node2.toProxy())) return;\n }\n }\n }\n }\n warnings() {\n return this.sync().warnings();\n }\n get content() {\n return this.stringify().content;\n }\n get css() {\n return this.stringify().css;\n }\n get map() {\n return this.stringify().map;\n }\n get messages() {\n return this.sync().messages;\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n return this.sync().root;\n }\n get [Symbol.toStringTag]() {\n return \"LazyResult\";\n }\n};\nLazyResult$2$1.registerPostcss = (dependant) => {\n postcss$2$1 = dependant;\n};\nvar lazyResult$1 = LazyResult$2$1;\nLazyResult$2$1.default = LazyResult$2$1;\nRoot$3$1.registerLazyResult(LazyResult$2$1);\nDocument$2$1.registerLazyResult(LazyResult$2$1);\nlet MapGenerator2$1 = mapGenerator$1;\nlet stringify$1$1 = stringify_1$1;\nlet warnOnce2$1 = warnOnce$2$1;\nlet parse$1$1 = parse_1$1;\nconst Result$1$1 = result$1;\nlet NoWorkResult$1$1 = class NoWorkResult {\n constructor(processor2, css, opts) {\n css = css.toString();\n this.stringified = false;\n this._processor = processor2;\n this._css = css;\n this._opts = opts;\n this._map = void 0;\n let root2;\n let str = stringify$1$1;\n this.result = new Result$1$1(this._processor, root2, this._opts);\n this.result.css = css;\n let self = this;\n Object.defineProperty(this.result, \"root\", {\n get() {\n return self.root;\n }\n });\n let map = new MapGenerator2$1(str, root2, this._opts, css);\n if (map.isMap()) {\n let [generatedCSS, generatedMap] = map.generate();\n if (generatedCSS) {\n this.result.css = generatedCSS;\n }\n if (generatedMap) {\n this.result.map = generatedMap;\n }\n } else {\n map.clearAnnotation();\n this.result.css = map.css;\n }\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n return Promise.resolve(this.result);\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n sync() {\n if (this.error) throw this.error;\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this._opts)) {\n warnOnce2$1(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this._css;\n }\n warnings() {\n return [];\n }\n get content() {\n return this.result.css;\n }\n get css() {\n return this.result.css;\n }\n get map() {\n return this.result.map;\n }\n get messages() {\n return [];\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n if (this._root) {\n return this._root;\n }\n let root2;\n let parser2 = parse$1$1;\n try {\n root2 = parser2(this._css, this._opts);\n } catch (error) {\n this.error = error;\n }\n if (this.error) {\n throw this.error;\n } else {\n this._root = root2;\n return root2;\n }\n }\n get [Symbol.toStringTag]() {\n return \"NoWorkResult\";\n }\n};\nvar noWorkResult$1 = NoWorkResult$1$1;\nNoWorkResult$1$1.default = NoWorkResult$1$1;\nlet NoWorkResult2$1 = noWorkResult$1;\nlet LazyResult$1$1 = lazyResult$1;\nlet Document$1$1 = document$1$1;\nlet Root$2$1 = root$1;\nlet Processor$1$1 = class Processor {\n constructor(plugins = []) {\n this.version = \"8.4.38\";\n this.plugins = this.normalize(plugins);\n }\n normalize(plugins) {\n let normalized = [];\n for (let i2 of plugins) {\n if (i2.postcss === true) {\n i2 = i2();\n } else if (i2.postcss) {\n i2 = i2.postcss;\n }\n if (typeof i2 === \"object\" && Array.isArray(i2.plugins)) {\n normalized = normalized.concat(i2.plugins);\n } else if (typeof i2 === \"object\" && i2.postcssPlugin) {\n normalized.push(i2);\n } else if (typeof i2 === \"function\") {\n normalized.push(i2);\n } else if (typeof i2 === \"object\" && (i2.parse || i2.stringify)) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error(\n \"PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.\"\n );\n }\n } else {\n throw new Error(i2 + \" is not a PostCSS plugin\");\n }\n }\n return normalized;\n }\n process(css, opts = {}) {\n if (!this.plugins.length && !opts.parser && !opts.stringifier && !opts.syntax) {\n return new NoWorkResult2$1(this, css, opts);\n } else {\n return new LazyResult$1$1(this, css, opts);\n }\n }\n use(plugin22) {\n this.plugins = this.plugins.concat(this.normalize([plugin22]));\n return this;\n }\n};\nvar processor$1 = Processor$1$1;\nProcessor$1$1.default = Processor$1$1;\nRoot$2$1.registerProcessor(Processor$1$1);\nDocument$1$1.registerProcessor(Processor$1$1);\nlet Declaration$1$1 = declaration$1;\nlet PreviousMap2$1 = previousMap$1;\nlet Comment$1$1 = comment$1;\nlet AtRule$1$1 = atRule$1;\nlet Input$1$1 = input$1;\nlet Root$1$1 = root$1;\nlet Rule$1$1 = rule$1;\nfunction fromJSON$1$1(json, inputs) {\n if (Array.isArray(json)) return json.map((n2) => fromJSON$1$1(n2));\n let { inputs: ownInputs, ...defaults } = json;\n if (ownInputs) {\n inputs = [];\n for (let input2 of ownInputs) {\n let inputHydrated = { ...input2, __proto__: Input$1$1.prototype };\n if (inputHydrated.map) {\n inputHydrated.map = {\n ...inputHydrated.map,\n __proto__: PreviousMap2$1.prototype\n };\n }\n inputs.push(inputHydrated);\n }\n }\n if (defaults.nodes) {\n defaults.nodes = json.nodes.map((n2) => fromJSON$1$1(n2, inputs));\n }\n if (defaults.source) {\n let { inputId, ...source } = defaults.source;\n defaults.source = source;\n if (inputId != null) {\n defaults.source.input = inputs[inputId];\n }\n }\n if (defaults.type === \"root\") {\n return new Root$1$1(defaults);\n } else if (defaults.type === \"decl\") {\n return new Declaration$1$1(defaults);\n } else if (defaults.type === \"rule\") {\n return new Rule$1$1(defaults);\n } else if (defaults.type === \"comment\") {\n return new Comment$1$1(defaults);\n } else if (defaults.type === \"atrule\") {\n return new AtRule$1$1(defaults);\n } else {\n throw new Error(\"Unknown node type: \" + json.type);\n }\n}\nvar fromJSON_1$1 = fromJSON$1$1;\nfromJSON$1$1.default = fromJSON$1$1;\nlet CssSyntaxError2$1 = cssSyntaxError$1;\nlet Declaration2$1 = declaration$1;\nlet LazyResult2$1 = lazyResult$1;\nlet Container2$1 = container$1;\nlet Processor2$1 = processor$1;\nlet stringify$5 = stringify_1$1;\nlet fromJSON$2 = fromJSON_1$1;\nlet Document22 = document$1$1;\nlet Warning2$1 = warning$1;\nlet Comment2$1 = comment$1;\nlet AtRule2$1 = atRule$1;\nlet Result2$1 = result$1;\nlet Input2$1 = input$1;\nlet parse$5 = parse_1$1;\nlet list$3 = list_1$1;\nlet Rule2$1 = rule$1;\nlet Root2$1 = root$1;\nlet Node2$1 = node$1;\nfunction postcss$3(...plugins) {\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0];\n }\n return new Processor2$1(plugins);\n}\npostcss$3.plugin = function plugin(name, initializer) {\n let warningPrinted = false;\n function creator(...args) {\n if (console && console.warn && !warningPrinted) {\n warningPrinted = true;\n console.warn(\n name + \": postcss.plugin was deprecated. Migration guide:\\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration\"\n );\n if (process.env.LANG && process.env.LANG.startsWith(\"cn\")) {\n console.warn(\n name + \": 里面 postcss.plugin 被弃用. 迁移指南:\\nhttps://www.w3ctech.com/topic/2226\"\n );\n }\n }\n let transformer = initializer(...args);\n transformer.postcssPlugin = name;\n transformer.postcssVersion = new Processor2$1().version;\n return transformer;\n }\n let cache;\n Object.defineProperty(creator, \"postcss\", {\n get() {\n if (!cache) cache = creator();\n return cache;\n }\n });\n creator.process = function(css, processOpts, pluginOpts) {\n return postcss$3([creator(pluginOpts)]).process(css, processOpts);\n };\n return creator;\n};\npostcss$3.stringify = stringify$5;\npostcss$3.parse = parse$5;\npostcss$3.fromJSON = fromJSON$2;\npostcss$3.list = list$3;\npostcss$3.comment = (defaults) => new Comment2$1(defaults);\npostcss$3.atRule = (defaults) => new AtRule2$1(defaults);\npostcss$3.decl = (defaults) => new Declaration2$1(defaults);\npostcss$3.rule = (defaults) => new Rule2$1(defaults);\npostcss$3.root = (defaults) => new Root2$1(defaults);\npostcss$3.document = (defaults) => new Document22(defaults);\npostcss$3.CssSyntaxError = CssSyntaxError2$1;\npostcss$3.Declaration = Declaration2$1;\npostcss$3.Container = Container2$1;\npostcss$3.Processor = Processor2$1;\npostcss$3.Document = Document22;\npostcss$3.Comment = Comment2$1;\npostcss$3.Warning = Warning2$1;\npostcss$3.AtRule = AtRule2$1;\npostcss$3.Result = Result2$1;\npostcss$3.Input = Input2$1;\npostcss$3.Rule = Rule2$1;\npostcss$3.Root = Root2$1;\npostcss$3.Node = Node2$1;\nLazyResult2$1.registerPostcss(postcss$3);\nvar postcss_1$1 = postcss$3;\npostcss$3.default = postcss$3;\nconst postcss$1$1 = /* @__PURE__ */ getDefaultExportFromCjs$1(postcss_1$1);\npostcss$1$1.stringify;\npostcss$1$1.fromJSON;\npostcss$1$1.plugin;\npostcss$1$1.parse;\npostcss$1$1.list;\npostcss$1$1.document;\npostcss$1$1.comment;\npostcss$1$1.atRule;\npostcss$1$1.rule;\npostcss$1$1.decl;\npostcss$1$1.root;\npostcss$1$1.CssSyntaxError;\npostcss$1$1.Declaration;\npostcss$1$1.Container;\npostcss$1$1.Processor;\npostcss$1$1.Document;\npostcss$1$1.Comment;\npostcss$1$1.Warning;\npostcss$1$1.AtRule;\npostcss$1$1.Result;\npostcss$1$1.Input;\npostcss$1$1.Rule;\npostcss$1$1.Root;\npostcss$1$1.Node;\nvar __defProp2 = Object.defineProperty;\nvar __defNormalProp2 = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField2 = (obj, key, value) => __defNormalProp2(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nfunction getDefaultExportFromCjs(x2) {\n return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, \"default\") ? x2[\"default\"] : x2;\n}\nfunction getAugmentedNamespace(n2) {\n if (n2.__esModule) return n2;\n var f2 = n2.default;\n if (typeof f2 == \"function\") {\n var a2 = function a22() {\n if (this instanceof a22) {\n return Reflect.construct(f2, arguments, this.constructor);\n }\n return f2.apply(this, arguments);\n };\n a2.prototype = f2.prototype;\n } else a2 = {};\n Object.defineProperty(a2, \"__esModule\", { value: true });\n Object.keys(n2).forEach(function(k) {\n var d = Object.getOwnPropertyDescriptor(n2, k);\n Object.defineProperty(a2, k, d.get ? d : {\n enumerable: true,\n get: function() {\n return n2[k];\n }\n });\n });\n return a2;\n}\nvar picocolors_browser = { exports: {} };\nvar x = String;\nvar create = function() {\n return { isColorSupported: false, reset: x, bold: x, dim: x, italic: x, underline: x, inverse: x, hidden: x, strikethrough: x, black: x, red: x, green: x, yellow: x, blue: x, magenta: x, cyan: x, white: x, gray: x, bgBlack: x, bgRed: x, bgGreen: x, bgYellow: x, bgBlue: x, bgMagenta: x, bgCyan: x, bgWhite: x };\n};\npicocolors_browser.exports = create();\npicocolors_browser.exports.createColors = create;\nvar picocolors_browserExports = picocolors_browser.exports;\nconst __viteBrowserExternal = {};\nconst __viteBrowserExternal$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: __viteBrowserExternal\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst require$$2 = /* @__PURE__ */ getAugmentedNamespace(__viteBrowserExternal$1);\nlet pico = picocolors_browserExports;\nlet terminalHighlight$1 = require$$2;\nlet CssSyntaxError$3 = class CssSyntaxError2 extends Error {\n constructor(message, line, column, source, file, plugin22) {\n super(message);\n this.name = \"CssSyntaxError\";\n this.reason = message;\n if (file) {\n this.file = file;\n }\n if (source) {\n this.source = source;\n }\n if (plugin22) {\n this.plugin = plugin22;\n }\n if (typeof line !== \"undefined\" && typeof column !== \"undefined\") {\n if (typeof line === \"number\") {\n this.line = line;\n this.column = column;\n } else {\n this.line = line.line;\n this.column = line.column;\n this.endLine = column.line;\n this.endColumn = column.column;\n }\n }\n this.setMessage();\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, CssSyntaxError2);\n }\n }\n setMessage() {\n this.message = this.plugin ? this.plugin + \": \" : \"\";\n this.message += this.file ? this.file : \"\";\n if (typeof this.line !== \"undefined\") {\n this.message += \":\" + this.line + \":\" + this.column;\n }\n this.message += \": \" + this.reason;\n }\n showSourceCode(color) {\n if (!this.source) return \"\";\n let css = this.source;\n if (color == null) color = pico.isColorSupported;\n if (terminalHighlight$1) {\n if (color) css = terminalHighlight$1(css);\n }\n let lines = css.split(/\\r?\\n/);\n let start = Math.max(this.line - 3, 0);\n let end = Math.min(this.line + 2, lines.length);\n let maxWidth = String(end).length;\n let mark, aside;\n if (color) {\n let { bold, gray, red } = pico.createColors(true);\n mark = (text) => bold(red(text));\n aside = (text) => gray(text);\n } else {\n mark = aside = (str) => str;\n }\n return lines.slice(start, end).map((line, index2) => {\n let number = start + 1 + index2;\n let gutter = \" \" + (\" \" + number).slice(-maxWidth) + \" | \";\n if (number === this.line) {\n let spacing = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, this.column - 1).replace(/[^\\t]/g, \" \");\n return mark(\">\") + aside(gutter) + line + \"\\n \" + spacing + mark(\"^\");\n }\n return \" \" + aside(gutter) + line;\n }).join(\"\\n\");\n }\n toString() {\n let code = this.showSourceCode();\n if (code) {\n code = \"\\n\\n\" + code + \"\\n\";\n }\n return this.name + \": \" + this.message + code;\n }\n};\nvar cssSyntaxError = CssSyntaxError$3;\nCssSyntaxError$3.default = CssSyntaxError$3;\nvar symbols = {};\nsymbols.isClean = Symbol(\"isClean\");\nsymbols.my = Symbol(\"my\");\nconst DEFAULT_RAW = {\n after: \"\\n\",\n beforeClose: \"\\n\",\n beforeComment: \"\\n\",\n beforeDecl: \"\\n\",\n beforeOpen: \" \",\n beforeRule: \"\\n\",\n colon: \": \",\n commentLeft: \" \",\n commentRight: \" \",\n emptyBody: \"\",\n indent: \" \",\n semicolon: false\n};\nfunction capitalize(str) {\n return str[0].toUpperCase() + str.slice(1);\n}\nlet Stringifier$2 = class Stringifier2 {\n constructor(builder) {\n this.builder = builder;\n }\n atrule(node2, semicolon) {\n let name = \"@\" + node2.name;\n let params = node2.params ? this.rawValue(node2, \"params\") : \"\";\n if (typeof node2.raws.afterName !== \"undefined\") {\n name += node2.raws.afterName;\n } else if (params) {\n name += \" \";\n }\n if (node2.nodes) {\n this.block(node2, name + params);\n } else {\n let end = (node2.raws.between || \"\") + (semicolon ? \";\" : \"\");\n this.builder(name + params + end, node2);\n }\n }\n beforeAfter(node2, detect) {\n let value;\n if (node2.type === \"decl\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (node2.type === \"comment\") {\n value = this.raw(node2, null, \"beforeComment\");\n } else if (detect === \"before\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else {\n value = this.raw(node2, null, \"beforeClose\");\n }\n let buf = node2.parent;\n let depth = 0;\n while (buf && buf.type !== \"root\") {\n depth += 1;\n buf = buf.parent;\n }\n if (value.includes(\"\\n\")) {\n let indent = this.raw(node2, null, \"indent\");\n if (indent.length) {\n for (let step = 0; step < depth; step++) value += indent;\n }\n }\n return value;\n }\n block(node2, start) {\n let between = this.raw(node2, \"between\", \"beforeOpen\");\n this.builder(start + between + \"{\", node2, \"start\");\n let after;\n if (node2.nodes && node2.nodes.length) {\n this.body(node2);\n after = this.raw(node2, \"after\");\n } else {\n after = this.raw(node2, \"after\", \"emptyBody\");\n }\n if (after) this.builder(after);\n this.builder(\"}\", node2, \"end\");\n }\n body(node2) {\n let last = node2.nodes.length - 1;\n while (last > 0) {\n if (node2.nodes[last].type !== \"comment\") break;\n last -= 1;\n }\n let semicolon = this.raw(node2, \"semicolon\");\n for (let i2 = 0; i2 < node2.nodes.length; i2++) {\n let child = node2.nodes[i2];\n let before = this.raw(child, \"before\");\n if (before) this.builder(before);\n this.stringify(child, last !== i2 || semicolon);\n }\n }\n comment(node2) {\n let left = this.raw(node2, \"left\", \"commentLeft\");\n let right = this.raw(node2, \"right\", \"commentRight\");\n this.builder(\"/*\" + left + node2.text + right + \"*/\", node2);\n }\n decl(node2, semicolon) {\n let between = this.raw(node2, \"between\", \"colon\");\n let string = node2.prop + between + this.rawValue(node2, \"value\");\n if (node2.important) {\n string += node2.raws.important || \" !important\";\n }\n if (semicolon) string += \";\";\n this.builder(string, node2);\n }\n document(node2) {\n this.body(node2);\n }\n raw(node2, own, detect) {\n let value;\n if (!detect) detect = own;\n if (own) {\n value = node2.raws[own];\n if (typeof value !== \"undefined\") return value;\n }\n let parent = node2.parent;\n if (detect === \"before\") {\n if (!parent || parent.type === \"root\" && parent.first === node2) {\n return \"\";\n }\n if (parent && parent.type === \"document\") {\n return \"\";\n }\n }\n if (!parent) return DEFAULT_RAW[detect];\n let root2 = node2.root();\n if (!root2.rawCache) root2.rawCache = {};\n if (typeof root2.rawCache[detect] !== \"undefined\") {\n return root2.rawCache[detect];\n }\n if (detect === \"before\" || detect === \"after\") {\n return this.beforeAfter(node2, detect);\n } else {\n let method = \"raw\" + capitalize(detect);\n if (this[method]) {\n value = this[method](root2, node2);\n } else {\n root2.walk((i2) => {\n value = i2.raws[own];\n if (typeof value !== \"undefined\") return false;\n });\n }\n }\n if (typeof value === \"undefined\") value = DEFAULT_RAW[detect];\n root2.rawCache[detect] = value;\n return value;\n }\n rawBeforeClose(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length > 0) {\n if (typeof i2.raws.after !== \"undefined\") {\n value = i2.raws.after;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawBeforeComment(root2, node2) {\n let value;\n root2.walkComments((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeDecl(root2, node2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeOpen(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.type !== \"decl\") {\n value = i2.raws.between;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawBeforeRule(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && (i2.parent !== root2 || root2.first !== i2)) {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawColon(root2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.between !== \"undefined\") {\n value = i2.raws.between.replace(/[^\\s:]/g, \"\");\n return false;\n }\n });\n return value;\n }\n rawEmptyBody(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length === 0) {\n value = i2.raws.after;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawIndent(root2) {\n if (root2.raws.indent) return root2.raws.indent;\n let value;\n root2.walk((i2) => {\n let p = i2.parent;\n if (p && p !== root2 && p.parent && p.parent === root2) {\n if (typeof i2.raws.before !== \"undefined\") {\n let parts = i2.raws.before.split(\"\\n\");\n value = parts[parts.length - 1];\n value = value.replace(/\\S/g, \"\");\n return false;\n }\n }\n });\n return value;\n }\n rawSemicolon(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length && i2.last.type === \"decl\") {\n value = i2.raws.semicolon;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawValue(node2, prop) {\n let value = node2[prop];\n let raw = node2.raws[prop];\n if (raw && raw.value === value) {\n return raw.raw;\n }\n return value;\n }\n root(node2) {\n this.body(node2);\n if (node2.raws.after) this.builder(node2.raws.after);\n }\n rule(node2) {\n this.block(node2, this.rawValue(node2, \"selector\"));\n if (node2.raws.ownSemicolon) {\n this.builder(node2.raws.ownSemicolon, node2, \"end\");\n }\n }\n stringify(node2, semicolon) {\n if (!this[node2.type]) {\n throw new Error(\n \"Unknown AST node type \" + node2.type + \". Maybe you need to change PostCSS stringifier.\"\n );\n }\n this[node2.type](node2, semicolon);\n }\n};\nvar stringifier = Stringifier$2;\nStringifier$2.default = Stringifier$2;\nlet Stringifier$1 = stringifier;\nfunction stringify$4(node2, builder) {\n let str = new Stringifier$1(builder);\n str.stringify(node2);\n}\nvar stringify_1 = stringify$4;\nstringify$4.default = stringify$4;\nlet { isClean: isClean$2, my: my$2 } = symbols;\nlet CssSyntaxError$2 = cssSyntaxError;\nlet Stringifier22 = stringifier;\nlet stringify$3 = stringify_1;\nfunction cloneNode(obj, parent) {\n let cloned = new obj.constructor();\n for (let i2 in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, i2)) {\n continue;\n }\n if (i2 === \"proxyCache\") continue;\n let value = obj[i2];\n let type = typeof value;\n if (i2 === \"parent\" && type === \"object\") {\n if (parent) cloned[i2] = parent;\n } else if (i2 === \"source\") {\n cloned[i2] = value;\n } else if (Array.isArray(value)) {\n cloned[i2] = value.map((j) => cloneNode(j, cloned));\n } else {\n if (type === \"object\" && value !== null) value = cloneNode(value);\n cloned[i2] = value;\n }\n }\n return cloned;\n}\nlet Node$4 = class Node3 {\n constructor(defaults = {}) {\n this.raws = {};\n this[isClean$2] = false;\n this[my$2] = true;\n for (let name in defaults) {\n if (name === \"nodes\") {\n this.nodes = [];\n for (let node2 of defaults[name]) {\n if (typeof node2.clone === \"function\") {\n this.append(node2.clone());\n } else {\n this.append(node2);\n }\n }\n } else {\n this[name] = defaults[name];\n }\n }\n }\n addToError(error) {\n error.postcssNode = this;\n if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n let s2 = this.source;\n error.stack = error.stack.replace(\n /\\n\\s{4}at /,\n `$&${s2.input.from}:${s2.start.line}:${s2.start.column}$&`\n );\n }\n return error;\n }\n after(add) {\n this.parent.insertAfter(this, add);\n return this;\n }\n assign(overrides = {}) {\n for (let name in overrides) {\n this[name] = overrides[name];\n }\n return this;\n }\n before(add) {\n this.parent.insertBefore(this, add);\n return this;\n }\n cleanRaws(keepBetween) {\n delete this.raws.before;\n delete this.raws.after;\n if (!keepBetween) delete this.raws.between;\n }\n clone(overrides = {}) {\n let cloned = cloneNode(this);\n for (let name in overrides) {\n cloned[name] = overrides[name];\n }\n return cloned;\n }\n cloneAfter(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertAfter(this, cloned);\n return cloned;\n }\n cloneBefore(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertBefore(this, cloned);\n return cloned;\n }\n error(message, opts = {}) {\n if (this.source) {\n let { end, start } = this.rangeBy(opts);\n return this.source.input.error(\n message,\n { column: start.column, line: start.line },\n { column: end.column, line: end.line },\n opts\n );\n }\n return new CssSyntaxError$2(message);\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"prop\" || prop === \"value\" || prop === \"name\" || prop === \"params\" || prop === \"important\" || /* c8 ignore next */\n prop === \"text\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n markDirty() {\n if (this[isClean$2]) {\n this[isClean$2] = false;\n let next = this;\n while (next = next.parent) {\n next[isClean$2] = false;\n }\n }\n }\n next() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 + 1];\n }\n positionBy(opts, stringRepresentation) {\n let pos = this.source.start;\n if (opts.index) {\n pos = this.positionInside(opts.index, stringRepresentation);\n } else if (opts.word) {\n stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) pos = this.positionInside(index2, stringRepresentation);\n }\n return pos;\n }\n positionInside(index2, stringRepresentation) {\n let string = stringRepresentation || this.toString();\n let column = this.source.start.column;\n let line = this.source.start.line;\n for (let i2 = 0; i2 < index2; i2++) {\n if (string[i2] === \"\\n\") {\n column = 1;\n line += 1;\n } else {\n column += 1;\n }\n }\n return { column, line };\n }\n prev() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 - 1];\n }\n rangeBy(opts) {\n let start = {\n column: this.source.start.column,\n line: this.source.start.line\n };\n let end = this.source.end ? {\n column: this.source.end.column + 1,\n line: this.source.end.line\n } : {\n column: start.column + 1,\n line: start.line\n };\n if (opts.word) {\n let stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) {\n start = this.positionInside(index2, stringRepresentation);\n end = this.positionInside(index2 + opts.word.length, stringRepresentation);\n }\n } else {\n if (opts.start) {\n start = {\n column: opts.start.column,\n line: opts.start.line\n };\n } else if (opts.index) {\n start = this.positionInside(opts.index);\n }\n if (opts.end) {\n end = {\n column: opts.end.column,\n line: opts.end.line\n };\n } else if (typeof opts.endIndex === \"number\") {\n end = this.positionInside(opts.endIndex);\n } else if (opts.index) {\n end = this.positionInside(opts.index + 1);\n }\n }\n if (end.line < start.line || end.line === start.line && end.column <= start.column) {\n end = { column: start.column + 1, line: start.line };\n }\n return { end, start };\n }\n raw(prop, defaultType) {\n let str = new Stringifier22();\n return str.raw(this, prop, defaultType);\n }\n remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n this.parent = void 0;\n return this;\n }\n replaceWith(...nodes) {\n if (this.parent) {\n let bookmark = this;\n let foundSelf = false;\n for (let node2 of nodes) {\n if (node2 === this) {\n foundSelf = true;\n } else if (foundSelf) {\n this.parent.insertAfter(bookmark, node2);\n bookmark = node2;\n } else {\n this.parent.insertBefore(bookmark, node2);\n }\n }\n if (!foundSelf) {\n this.remove();\n }\n }\n return this;\n }\n root() {\n let result2 = this;\n while (result2.parent && result2.parent.type !== \"document\") {\n result2 = result2.parent;\n }\n return result2;\n }\n toJSON(_, inputs) {\n let fixed = {};\n let emitInputs = inputs == null;\n inputs = inputs || /* @__PURE__ */ new Map();\n let inputsNextIndex = 0;\n for (let name in this) {\n if (!Object.prototype.hasOwnProperty.call(this, name)) {\n continue;\n }\n if (name === \"parent\" || name === \"proxyCache\") continue;\n let value = this[name];\n if (Array.isArray(value)) {\n fixed[name] = value.map((i2) => {\n if (typeof i2 === \"object\" && i2.toJSON) {\n return i2.toJSON(null, inputs);\n } else {\n return i2;\n }\n });\n } else if (typeof value === \"object\" && value.toJSON) {\n fixed[name] = value.toJSON(null, inputs);\n } else if (name === \"source\") {\n let inputId = inputs.get(value.input);\n if (inputId == null) {\n inputId = inputsNextIndex;\n inputs.set(value.input, inputsNextIndex);\n inputsNextIndex++;\n }\n fixed[name] = {\n end: value.end,\n inputId,\n start: value.start\n };\n } else {\n fixed[name] = value;\n }\n }\n if (emitInputs) {\n fixed.inputs = [...inputs.keys()].map((input2) => input2.toJSON());\n }\n return fixed;\n }\n toProxy() {\n if (!this.proxyCache) {\n this.proxyCache = new Proxy(this, this.getProxyProcessor());\n }\n return this.proxyCache;\n }\n toString(stringifier2 = stringify$3) {\n if (stringifier2.stringify) stringifier2 = stringifier2.stringify;\n let result2 = \"\";\n stringifier2(this, (i2) => {\n result2 += i2;\n });\n return result2;\n }\n warn(result2, text, opts) {\n let data = { node: this };\n for (let i2 in opts) data[i2] = opts[i2];\n return result2.warn(text, data);\n }\n get proxyOf() {\n return this;\n }\n};\nvar node = Node$4;\nNode$4.default = Node$4;\nlet Node$3 = node;\nlet Declaration$4 = class Declaration2 extends Node$3 {\n constructor(defaults) {\n if (defaults && typeof defaults.value !== \"undefined\" && typeof defaults.value !== \"string\") {\n defaults = { ...defaults, value: String(defaults.value) };\n }\n super(defaults);\n this.type = \"decl\";\n }\n get variable() {\n return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n }\n};\nvar declaration = Declaration$4;\nDeclaration$4.default = Declaration$4;\nlet urlAlphabet = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\nlet customAlphabet = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = \"\";\n let i2 = size;\n while (i2--) {\n id += alphabet[Math.random() * alphabet.length | 0];\n }\n return id;\n };\n};\nlet nanoid$1 = (size = 21) => {\n let id = \"\";\n let i2 = size;\n while (i2--) {\n id += urlAlphabet[Math.random() * 64 | 0];\n }\n return id;\n};\nvar nonSecure = { nanoid: nanoid$1, customAlphabet };\nlet { SourceMapConsumer: SourceMapConsumer$2, SourceMapGenerator: SourceMapGenerator$2 } = require$$2;\nlet { existsSync, readFileSync } = require$$2;\nlet { dirname: dirname$1, join } = require$$2;\nfunction fromBase64(str) {\n if (Buffer) {\n return Buffer.from(str, \"base64\").toString();\n } else {\n return window.atob(str);\n }\n}\nlet PreviousMap$2 = class PreviousMap2 {\n constructor(css, opts) {\n if (opts.map === false) return;\n this.loadAnnotation(css);\n this.inline = this.startWith(this.annotation, \"data:\");\n let prev = opts.map ? opts.map.prev : void 0;\n let text = this.loadMap(opts.from, prev);\n if (!this.mapFile && opts.from) {\n this.mapFile = opts.from;\n }\n if (this.mapFile) this.root = dirname$1(this.mapFile);\n if (text) this.text = text;\n }\n consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new SourceMapConsumer$2(this.text);\n }\n return this.consumerCache;\n }\n decodeInline(text) {\n let baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/;\n let baseUri = /^data:application\\/json;base64,/;\n let charsetUri = /^data:application\\/json;charset=utf-?8,/;\n let uri = /^data:application\\/json,/;\n if (charsetUri.test(text) || uri.test(text)) {\n return decodeURIComponent(text.substr(RegExp.lastMatch.length));\n }\n if (baseCharsetUri.test(text) || baseUri.test(text)) {\n return fromBase64(text.substr(RegExp.lastMatch.length));\n }\n let encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n throw new Error(\"Unsupported source map encoding \" + encoding);\n }\n getAnnotationURL(sourceMapString) {\n return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n }\n isMap(map) {\n if (typeof map !== \"object\") return false;\n return typeof map.mappings === \"string\" || typeof map._mappings === \"string\" || Array.isArray(map.sections);\n }\n loadAnnotation(css) {\n let comments = css.match(/\\/\\*\\s*# sourceMappingURL=/gm);\n if (!comments) return;\n let start = css.lastIndexOf(comments.pop());\n let end = css.indexOf(\"*/\", start);\n if (start > -1 && end > -1) {\n this.annotation = this.getAnnotationURL(css.substring(start, end));\n }\n }\n loadFile(path) {\n this.root = dirname$1(path);\n if (existsSync(path)) {\n this.mapFile = path;\n return readFileSync(path, \"utf-8\").toString().trim();\n }\n }\n loadMap(file, prev) {\n if (prev === false) return false;\n if (prev) {\n if (typeof prev === \"string\") {\n return prev;\n } else if (typeof prev === \"function\") {\n let prevPath = prev(file);\n if (prevPath) {\n let map = this.loadFile(prevPath);\n if (!map) {\n throw new Error(\n \"Unable to load previous source map: \" + prevPath.toString()\n );\n }\n return map;\n }\n } else if (prev instanceof SourceMapConsumer$2) {\n return SourceMapGenerator$2.fromSourceMap(prev).toString();\n } else if (prev instanceof SourceMapGenerator$2) {\n return prev.toString();\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev);\n } else {\n throw new Error(\n \"Unsupported previous source map format: \" + prev.toString()\n );\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation);\n } else if (this.annotation) {\n let map = this.annotation;\n if (file) map = join(dirname$1(file), map);\n return this.loadFile(map);\n }\n }\n startWith(string, start) {\n if (!string) return false;\n return string.substr(0, start.length) === start;\n }\n withContent() {\n return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n }\n};\nvar previousMap = PreviousMap$2;\nPreviousMap$2.default = PreviousMap$2;\nlet { SourceMapConsumer: SourceMapConsumer$1, SourceMapGenerator: SourceMapGenerator$1 } = require$$2;\nlet { fileURLToPath, pathToFileURL: pathToFileURL$1 } = require$$2;\nlet { isAbsolute, resolve: resolve$1 } = require$$2;\nlet { nanoid } = nonSecure;\nlet terminalHighlight = require$$2;\nlet CssSyntaxError$1 = cssSyntaxError;\nlet PreviousMap$1 = previousMap;\nlet fromOffsetCache = Symbol(\"fromOffsetCache\");\nlet sourceMapAvailable$1 = Boolean(SourceMapConsumer$1 && SourceMapGenerator$1);\nlet pathAvailable$1 = Boolean(resolve$1 && isAbsolute);\nlet Input$4 = class Input2 {\n constructor(css, opts = {}) {\n if (css === null || typeof css === \"undefined\" || typeof css === \"object\" && !css.toString) {\n throw new Error(`PostCSS received ${css} instead of CSS string`);\n }\n this.css = css.toString();\n if (this.css[0] === \"\\uFEFF\" || this.css[0] === \"￾\") {\n this.hasBOM = true;\n this.css = this.css.slice(1);\n } else {\n this.hasBOM = false;\n }\n if (opts.from) {\n if (!pathAvailable$1 || /^\\w+:\\/\\//.test(opts.from) || isAbsolute(opts.from)) {\n this.file = opts.from;\n } else {\n this.file = resolve$1(opts.from);\n }\n }\n if (pathAvailable$1 && sourceMapAvailable$1) {\n let map = new PreviousMap$1(this.css, opts);\n if (map.text) {\n this.map = map;\n let file = map.consumer().file;\n if (!this.file && file) this.file = this.mapResolve(file);\n }\n }\n if (!this.file) {\n this.id = \"\";\n }\n if (this.map) this.map.file = this.from;\n }\n error(message, line, column, opts = {}) {\n let result2, endLine, endColumn;\n if (line && typeof line === \"object\") {\n let start = line;\n let end = column;\n if (typeof start.offset === \"number\") {\n let pos = this.fromOffset(start.offset);\n line = pos.line;\n column = pos.col;\n } else {\n line = start.line;\n column = start.column;\n }\n if (typeof end.offset === \"number\") {\n let pos = this.fromOffset(end.offset);\n endLine = pos.line;\n endColumn = pos.col;\n } else {\n endLine = end.line;\n endColumn = end.column;\n }\n } else if (!column) {\n let pos = this.fromOffset(line);\n line = pos.line;\n column = pos.col;\n }\n let origin = this.origin(line, column, endLine, endColumn);\n if (origin) {\n result2 = new CssSyntaxError$1(\n message,\n origin.endLine === void 0 ? origin.line : { column: origin.column, line: origin.line },\n origin.endLine === void 0 ? origin.column : { column: origin.endColumn, line: origin.endLine },\n origin.source,\n origin.file,\n opts.plugin\n );\n } else {\n result2 = new CssSyntaxError$1(\n message,\n endLine === void 0 ? line : { column, line },\n endLine === void 0 ? column : { column: endColumn, line: endLine },\n this.css,\n this.file,\n opts.plugin\n );\n }\n result2.input = { column, endColumn, endLine, line, source: this.css };\n if (this.file) {\n if (pathToFileURL$1) {\n result2.input.url = pathToFileURL$1(this.file).toString();\n }\n result2.input.file = this.file;\n }\n return result2;\n }\n fromOffset(offset) {\n let lastLine, lineToIndex;\n if (!this[fromOffsetCache]) {\n let lines = this.css.split(\"\\n\");\n lineToIndex = new Array(lines.length);\n let prevIndex = 0;\n for (let i2 = 0, l2 = lines.length; i2 < l2; i2++) {\n lineToIndex[i2] = prevIndex;\n prevIndex += lines[i2].length + 1;\n }\n this[fromOffsetCache] = lineToIndex;\n } else {\n lineToIndex = this[fromOffsetCache];\n }\n lastLine = lineToIndex[lineToIndex.length - 1];\n let min = 0;\n if (offset >= lastLine) {\n min = lineToIndex.length - 1;\n } else {\n let max = lineToIndex.length - 2;\n let mid;\n while (min < max) {\n mid = min + (max - min >> 1);\n if (offset < lineToIndex[mid]) {\n max = mid - 1;\n } else if (offset >= lineToIndex[mid + 1]) {\n min = mid + 1;\n } else {\n min = mid;\n break;\n }\n }\n }\n return {\n col: offset - lineToIndex[min] + 1,\n line: min + 1\n };\n }\n mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file;\n }\n return resolve$1(this.map.consumer().sourceRoot || this.map.root || \".\", file);\n }\n origin(line, column, endLine, endColumn) {\n if (!this.map) return false;\n let consumer = this.map.consumer();\n let from = consumer.originalPositionFor({ column, line });\n if (!from.source) return false;\n let to;\n if (typeof endLine === \"number\") {\n to = consumer.originalPositionFor({ column: endColumn, line: endLine });\n }\n let fromUrl;\n if (isAbsolute(from.source)) {\n fromUrl = pathToFileURL$1(from.source);\n } else {\n fromUrl = new URL(\n from.source,\n this.map.consumer().sourceRoot || pathToFileURL$1(this.map.mapFile)\n );\n }\n let result2 = {\n column: from.column,\n endColumn: to && to.column,\n endLine: to && to.line,\n line: from.line,\n url: fromUrl.toString()\n };\n if (fromUrl.protocol === \"file:\") {\n if (fileURLToPath) {\n result2.file = fileURLToPath(fromUrl);\n } else {\n throw new Error(`file: protocol is not available in this PostCSS build`);\n }\n }\n let source = consumer.sourceContentFor(from.source);\n if (source) result2.source = source;\n return result2;\n }\n toJSON() {\n let json = {};\n for (let name of [\"hasBOM\", \"css\", \"file\", \"id\"]) {\n if (this[name] != null) {\n json[name] = this[name];\n }\n }\n if (this.map) {\n json.map = { ...this.map };\n if (json.map.consumerCache) {\n json.map.consumerCache = void 0;\n }\n }\n return json;\n }\n get from() {\n return this.file || this.id;\n }\n};\nvar input = Input$4;\nInput$4.default = Input$4;\nif (terminalHighlight && terminalHighlight.registerInput) {\n terminalHighlight.registerInput(Input$4);\n}\nlet { SourceMapConsumer, SourceMapGenerator } = require$$2;\nlet { dirname, relative, resolve, sep } = require$$2;\nlet { pathToFileURL } = require$$2;\nlet Input$3 = input;\nlet sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator);\nlet pathAvailable = Boolean(dirname && resolve && relative && sep);\nlet MapGenerator$2 = class MapGenerator2 {\n constructor(stringify2, root2, opts, cssString) {\n this.stringify = stringify2;\n this.mapOpts = opts.map || {};\n this.root = root2;\n this.opts = opts;\n this.css = cssString;\n this.originalCSS = cssString;\n this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute;\n this.memoizedFileURLs = /* @__PURE__ */ new Map();\n this.memoizedPaths = /* @__PURE__ */ new Map();\n this.memoizedURLs = /* @__PURE__ */ new Map();\n }\n addAnnotation() {\n let content;\n if (this.isInline()) {\n content = \"data:application/json;base64,\" + this.toBase64(this.map.toString());\n } else if (typeof this.mapOpts.annotation === \"string\") {\n content = this.mapOpts.annotation;\n } else if (typeof this.mapOpts.annotation === \"function\") {\n content = this.mapOpts.annotation(this.opts.to, this.root);\n } else {\n content = this.outputFile() + \".map\";\n }\n let eol = \"\\n\";\n if (this.css.includes(\"\\r\\n\")) eol = \"\\r\\n\";\n this.css += eol + \"/*# sourceMappingURL=\" + content + \" */\";\n }\n applyPrevMaps() {\n for (let prev of this.previous()) {\n let from = this.toUrl(this.path(prev.file));\n let root2 = prev.root || dirname(prev.file);\n let map;\n if (this.mapOpts.sourcesContent === false) {\n map = new SourceMapConsumer(prev.text);\n if (map.sourcesContent) {\n map.sourcesContent = null;\n }\n } else {\n map = prev.consumer();\n }\n this.map.applySourceMap(map, from, this.toUrl(this.path(root2)));\n }\n }\n clearAnnotation() {\n if (this.mapOpts.annotation === false) return;\n if (this.root) {\n let node2;\n for (let i2 = this.root.nodes.length - 1; i2 >= 0; i2--) {\n node2 = this.root.nodes[i2];\n if (node2.type !== \"comment\") continue;\n if (node2.text.indexOf(\"# sourceMappingURL=\") === 0) {\n this.root.removeChild(i2);\n }\n }\n } else if (this.css) {\n this.css = this.css.replace(/\\n*?\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\");\n }\n }\n generate() {\n this.clearAnnotation();\n if (pathAvailable && sourceMapAvailable && this.isMap()) {\n return this.generateMap();\n } else {\n let result2 = \"\";\n this.stringify(this.root, (i2) => {\n result2 += i2;\n });\n return [result2];\n }\n }\n generateMap() {\n if (this.root) {\n this.generateString();\n } else if (this.previous().length === 1) {\n let prev = this.previous()[0].consumer();\n prev.file = this.outputFile();\n this.map = SourceMapGenerator.fromSourceMap(prev, {\n ignoreInvalidMapping: true\n });\n } else {\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n this.map.addMapping({\n generated: { column: 0, line: 1 },\n original: { column: 0, line: 1 },\n source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\"\n });\n }\n if (this.isSourcesContent()) this.setSourcesContent();\n if (this.root && this.previous().length > 0) this.applyPrevMaps();\n if (this.isAnnotation()) this.addAnnotation();\n if (this.isInline()) {\n return [this.css];\n } else {\n return [this.css, this.map];\n }\n }\n generateString() {\n this.css = \"\";\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n let line = 1;\n let column = 1;\n let noSource = \"\";\n let mapping = {\n generated: { column: 0, line: 0 },\n original: { column: 0, line: 0 },\n source: \"\"\n };\n let lines, last;\n this.stringify(this.root, (str, node2, type) => {\n this.css += str;\n if (node2 && type !== \"end\") {\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n if (node2.source && node2.source.start) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.start.line;\n mapping.original.column = node2.source.start.column - 1;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n this.map.addMapping(mapping);\n }\n }\n lines = str.match(/\\n/g);\n if (lines) {\n line += lines.length;\n last = str.lastIndexOf(\"\\n\");\n column = str.length - last;\n } else {\n column += str.length;\n }\n if (node2 && type !== \"start\") {\n let p = node2.parent || { raws: {} };\n let childless = node2.type === \"decl\" || node2.type === \"atrule\" && !node2.nodes;\n if (!childless || node2 !== p.last || p.raws.semicolon) {\n if (node2.source && node2.source.end) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.end.line;\n mapping.original.column = node2.source.end.column - 1;\n mapping.generated.line = line;\n mapping.generated.column = column - 2;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n this.map.addMapping(mapping);\n }\n }\n }\n });\n }\n isAnnotation() {\n if (this.isInline()) {\n return true;\n }\n if (typeof this.mapOpts.annotation !== \"undefined\") {\n return this.mapOpts.annotation;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.annotation);\n }\n return true;\n }\n isInline() {\n if (typeof this.mapOpts.inline !== \"undefined\") {\n return this.mapOpts.inline;\n }\n let annotation = this.mapOpts.annotation;\n if (typeof annotation !== \"undefined\" && annotation !== true) {\n return false;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.inline);\n }\n return true;\n }\n isMap() {\n if (typeof this.opts.map !== \"undefined\") {\n return !!this.opts.map;\n }\n return this.previous().length > 0;\n }\n isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== \"undefined\") {\n return this.mapOpts.sourcesContent;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.withContent());\n }\n return true;\n }\n outputFile() {\n if (this.opts.to) {\n return this.path(this.opts.to);\n } else if (this.opts.from) {\n return this.path(this.opts.from);\n } else {\n return \"to.css\";\n }\n }\n path(file) {\n if (this.mapOpts.absolute) return file;\n if (file.charCodeAt(0) === 60) return file;\n if (/^\\w+:\\/\\//.test(file)) return file;\n let cached = this.memoizedPaths.get(file);\n if (cached) return cached;\n let from = this.opts.to ? dirname(this.opts.to) : \".\";\n if (typeof this.mapOpts.annotation === \"string\") {\n from = dirname(resolve(from, this.mapOpts.annotation));\n }\n let path = relative(from, file);\n this.memoizedPaths.set(file, path);\n return path;\n }\n previous() {\n if (!this.previousMaps) {\n this.previousMaps = [];\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source && node2.source.input.map) {\n let map = node2.source.input.map;\n if (!this.previousMaps.includes(map)) {\n this.previousMaps.push(map);\n }\n }\n });\n } else {\n let input2 = new Input$3(this.originalCSS, this.opts);\n if (input2.map) this.previousMaps.push(input2.map);\n }\n }\n return this.previousMaps;\n }\n setSourcesContent() {\n let already = {};\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source) {\n let from = node2.source.input.from;\n if (from && !already[from]) {\n already[from] = true;\n let fromUrl = this.usesFileUrls ? this.toFileUrl(from) : this.toUrl(this.path(from));\n this.map.setSourceContent(fromUrl, node2.source.input.css);\n }\n }\n });\n } else if (this.css) {\n let from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\";\n this.map.setSourceContent(from, this.css);\n }\n }\n sourcePath(node2) {\n if (this.mapOpts.from) {\n return this.toUrl(this.mapOpts.from);\n } else if (this.usesFileUrls) {\n return this.toFileUrl(node2.source.input.from);\n } else {\n return this.toUrl(this.path(node2.source.input.from));\n }\n }\n toBase64(str) {\n if (Buffer) {\n return Buffer.from(str).toString(\"base64\");\n } else {\n return window.btoa(unescape(encodeURIComponent(str)));\n }\n }\n toFileUrl(path) {\n let cached = this.memoizedFileURLs.get(path);\n if (cached) return cached;\n if (pathToFileURL) {\n let fileURL = pathToFileURL(path).toString();\n this.memoizedFileURLs.set(path, fileURL);\n return fileURL;\n } else {\n throw new Error(\n \"`map.absolute` option is not available in this PostCSS build\"\n );\n }\n }\n toUrl(path) {\n let cached = this.memoizedURLs.get(path);\n if (cached) return cached;\n if (sep === \"\\\\\") {\n path = path.replace(/\\\\/g, \"/\");\n }\n let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent);\n this.memoizedURLs.set(path, url);\n return url;\n }\n};\nvar mapGenerator = MapGenerator$2;\nlet Node$2 = node;\nlet Comment$4 = class Comment2 extends Node$2 {\n constructor(defaults) {\n super(defaults);\n this.type = \"comment\";\n }\n};\nvar comment = Comment$4;\nComment$4.default = Comment$4;\nlet { isClean: isClean$1, my: my$1 } = symbols;\nlet Declaration$3 = declaration;\nlet Comment$3 = comment;\nlet Node$1 = node;\nlet parse$4, Rule$4, AtRule$4, Root$6;\nfunction cleanSource(nodes) {\n return nodes.map((i2) => {\n if (i2.nodes) i2.nodes = cleanSource(i2.nodes);\n delete i2.source;\n return i2;\n });\n}\nfunction markDirtyUp(node2) {\n node2[isClean$1] = false;\n if (node2.proxyOf.nodes) {\n for (let i2 of node2.proxyOf.nodes) {\n markDirtyUp(i2);\n }\n }\n}\nlet Container$7 = class Container2 extends Node$1 {\n append(...children) {\n for (let child of children) {\n let nodes = this.normalize(child, this.last);\n for (let node2 of nodes) this.proxyOf.nodes.push(node2);\n }\n this.markDirty();\n return this;\n }\n cleanRaws(keepBetween) {\n super.cleanRaws(keepBetween);\n if (this.nodes) {\n for (let node2 of this.nodes) node2.cleanRaws(keepBetween);\n }\n }\n each(callback) {\n if (!this.proxyOf.nodes) return void 0;\n let iterator = this.getIterator();\n let index2, result2;\n while (this.indexes[iterator] < this.proxyOf.nodes.length) {\n index2 = this.indexes[iterator];\n result2 = callback(this.proxyOf.nodes[index2], index2);\n if (result2 === false) break;\n this.indexes[iterator] += 1;\n }\n delete this.indexes[iterator];\n return result2;\n }\n every(condition) {\n return this.nodes.every(condition);\n }\n getIterator() {\n if (!this.lastEach) this.lastEach = 0;\n if (!this.indexes) this.indexes = {};\n this.lastEach += 1;\n let iterator = this.lastEach;\n this.indexes[iterator] = 0;\n return iterator;\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (!node2[prop]) {\n return node2[prop];\n } else if (prop === \"each\" || typeof prop === \"string\" && prop.startsWith(\"walk\")) {\n return (...args) => {\n return node2[prop](\n ...args.map((i2) => {\n if (typeof i2 === \"function\") {\n return (child, index2) => i2(child.toProxy(), index2);\n } else {\n return i2;\n }\n })\n );\n };\n } else if (prop === \"every\" || prop === \"some\") {\n return (cb) => {\n return node2[prop](\n (child, ...other) => cb(child.toProxy(), ...other)\n );\n };\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else if (prop === \"nodes\") {\n return node2.nodes.map((i2) => i2.toProxy());\n } else if (prop === \"first\" || prop === \"last\") {\n return node2[prop].toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"name\" || prop === \"params\" || prop === \"selector\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n index(child) {\n if (typeof child === \"number\") return child;\n if (child.proxyOf) child = child.proxyOf;\n return this.proxyOf.nodes.indexOf(child);\n }\n insertAfter(exist, add) {\n let existIndex = this.index(exist);\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex < index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n insertBefore(exist, add) {\n let existIndex = this.index(exist);\n let type = existIndex === 0 ? \"prepend\" : false;\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex <= index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n normalize(nodes, sample) {\n if (typeof nodes === \"string\") {\n nodes = cleanSource(parse$4(nodes).nodes);\n } else if (typeof nodes === \"undefined\") {\n nodes = [];\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type === \"root\" && this.type !== \"document\") {\n nodes = nodes.nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type) {\n nodes = [nodes];\n } else if (nodes.prop) {\n if (typeof nodes.value === \"undefined\") {\n throw new Error(\"Value field is missed in node creation\");\n } else if (typeof nodes.value !== \"string\") {\n nodes.value = String(nodes.value);\n }\n nodes = [new Declaration$3(nodes)];\n } else if (nodes.selector) {\n nodes = [new Rule$4(nodes)];\n } else if (nodes.name) {\n nodes = [new AtRule$4(nodes)];\n } else if (nodes.text) {\n nodes = [new Comment$3(nodes)];\n } else {\n throw new Error(\"Unknown node type in node creation\");\n }\n let processed = nodes.map((i2) => {\n if (!i2[my$1]) Container2.rebuild(i2);\n i2 = i2.proxyOf;\n if (i2.parent) i2.parent.removeChild(i2);\n if (i2[isClean$1]) markDirtyUp(i2);\n if (typeof i2.raws.before === \"undefined\") {\n if (sample && typeof sample.raws.before !== \"undefined\") {\n i2.raws.before = sample.raws.before.replace(/\\S/g, \"\");\n }\n }\n i2.parent = this.proxyOf;\n return i2;\n });\n return processed;\n }\n prepend(...children) {\n children = children.reverse();\n for (let child of children) {\n let nodes = this.normalize(child, this.first, \"prepend\").reverse();\n for (let node2 of nodes) this.proxyOf.nodes.unshift(node2);\n for (let id in this.indexes) {\n this.indexes[id] = this.indexes[id] + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n push(child) {\n child.parent = this;\n this.proxyOf.nodes.push(child);\n return this;\n }\n removeAll() {\n for (let node2 of this.proxyOf.nodes) node2.parent = void 0;\n this.proxyOf.nodes = [];\n this.markDirty();\n return this;\n }\n removeChild(child) {\n child = this.index(child);\n this.proxyOf.nodes[child].parent = void 0;\n this.proxyOf.nodes.splice(child, 1);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (index2 >= child) {\n this.indexes[id] = index2 - 1;\n }\n }\n this.markDirty();\n return this;\n }\n replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {};\n }\n this.walkDecls((decl) => {\n if (opts.props && !opts.props.includes(decl.prop)) return;\n if (opts.fast && !decl.value.includes(opts.fast)) return;\n decl.value = decl.value.replace(pattern, callback);\n });\n this.markDirty();\n return this;\n }\n some(condition) {\n return this.nodes.some(condition);\n }\n walk(callback) {\n return this.each((child, i2) => {\n let result2;\n try {\n result2 = callback(child, i2);\n } catch (e2) {\n throw child.addToError(e2);\n }\n if (result2 !== false && child.walk) {\n result2 = child.walk(callback);\n }\n return result2;\n });\n }\n walkAtRules(name, callback) {\n if (!callback) {\n callback = name;\n return this.walk((child, i2) => {\n if (child.type === \"atrule\") {\n return callback(child, i2);\n }\n });\n }\n if (name instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && name.test(child.name)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && child.name === name) {\n return callback(child, i2);\n }\n });\n }\n walkComments(callback) {\n return this.walk((child, i2) => {\n if (child.type === \"comment\") {\n return callback(child, i2);\n }\n });\n }\n walkDecls(prop, callback) {\n if (!callback) {\n callback = prop;\n return this.walk((child, i2) => {\n if (child.type === \"decl\") {\n return callback(child, i2);\n }\n });\n }\n if (prop instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && prop.test(child.prop)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && child.prop === prop) {\n return callback(child, i2);\n }\n });\n }\n walkRules(selector, callback) {\n if (!callback) {\n callback = selector;\n return this.walk((child, i2) => {\n if (child.type === \"rule\") {\n return callback(child, i2);\n }\n });\n }\n if (selector instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && selector.test(child.selector)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && child.selector === selector) {\n return callback(child, i2);\n }\n });\n }\n get first() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[0];\n }\n get last() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n }\n};\nContainer$7.registerParse = (dependant) => {\n parse$4 = dependant;\n};\nContainer$7.registerRule = (dependant) => {\n Rule$4 = dependant;\n};\nContainer$7.registerAtRule = (dependant) => {\n AtRule$4 = dependant;\n};\nContainer$7.registerRoot = (dependant) => {\n Root$6 = dependant;\n};\nvar container = Container$7;\nContainer$7.default = Container$7;\nContainer$7.rebuild = (node2) => {\n if (node2.type === \"atrule\") {\n Object.setPrototypeOf(node2, AtRule$4.prototype);\n } else if (node2.type === \"rule\") {\n Object.setPrototypeOf(node2, Rule$4.prototype);\n } else if (node2.type === \"decl\") {\n Object.setPrototypeOf(node2, Declaration$3.prototype);\n } else if (node2.type === \"comment\") {\n Object.setPrototypeOf(node2, Comment$3.prototype);\n } else if (node2.type === \"root\") {\n Object.setPrototypeOf(node2, Root$6.prototype);\n }\n node2[my$1] = true;\n if (node2.nodes) {\n node2.nodes.forEach((child) => {\n Container$7.rebuild(child);\n });\n }\n};\nlet Container$6 = container;\nlet LazyResult$4, Processor$3;\nlet Document$3 = class Document23 extends Container$6 {\n constructor(defaults) {\n super({ type: \"document\", ...defaults });\n if (!this.nodes) {\n this.nodes = [];\n }\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$4(new Processor$3(), this, opts);\n return lazy.stringify();\n }\n};\nDocument$3.registerLazyResult = (dependant) => {\n LazyResult$4 = dependant;\n};\nDocument$3.registerProcessor = (dependant) => {\n Processor$3 = dependant;\n};\nvar document$1 = Document$3;\nDocument$3.default = Document$3;\nlet printed = {};\nvar warnOnce$2 = function warnOnce2(message) {\n if (printed[message]) return;\n printed[message] = true;\n if (typeof console !== \"undefined\" && console.warn) {\n console.warn(message);\n }\n};\nlet Warning$2 = class Warning2 {\n constructor(text, opts = {}) {\n this.type = \"warning\";\n this.text = text;\n if (opts.node && opts.node.source) {\n let range = opts.node.rangeBy(opts);\n this.line = range.start.line;\n this.column = range.start.column;\n this.endLine = range.end.line;\n this.endColumn = range.end.column;\n }\n for (let opt in opts) this[opt] = opts[opt];\n }\n toString() {\n if (this.node) {\n return this.node.error(this.text, {\n index: this.index,\n plugin: this.plugin,\n word: this.word\n }).message;\n }\n if (this.plugin) {\n return this.plugin + \": \" + this.text;\n }\n return this.text;\n }\n};\nvar warning = Warning$2;\nWarning$2.default = Warning$2;\nlet Warning$1 = warning;\nlet Result$3 = class Result2 {\n constructor(processor2, root2, opts) {\n this.processor = processor2;\n this.messages = [];\n this.root = root2;\n this.opts = opts;\n this.css = void 0;\n this.map = void 0;\n }\n toString() {\n return this.css;\n }\n warn(text, opts = {}) {\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin;\n }\n }\n let warning2 = new Warning$1(text, opts);\n this.messages.push(warning2);\n return warning2;\n }\n warnings() {\n return this.messages.filter((i2) => i2.type === \"warning\");\n }\n get content() {\n return this.css;\n }\n};\nvar result = Result$3;\nResult$3.default = Result$3;\nconst SINGLE_QUOTE = \"'\".charCodeAt(0);\nconst DOUBLE_QUOTE = '\"'.charCodeAt(0);\nconst BACKSLASH = \"\\\\\".charCodeAt(0);\nconst SLASH = \"/\".charCodeAt(0);\nconst NEWLINE = \"\\n\".charCodeAt(0);\nconst SPACE = \" \".charCodeAt(0);\nconst FEED = \"\\f\".charCodeAt(0);\nconst TAB = \"\t\".charCodeAt(0);\nconst CR = \"\\r\".charCodeAt(0);\nconst OPEN_SQUARE = \"[\".charCodeAt(0);\nconst CLOSE_SQUARE = \"]\".charCodeAt(0);\nconst OPEN_PARENTHESES = \"(\".charCodeAt(0);\nconst CLOSE_PARENTHESES = \")\".charCodeAt(0);\nconst OPEN_CURLY = \"{\".charCodeAt(0);\nconst CLOSE_CURLY = \"}\".charCodeAt(0);\nconst SEMICOLON = \";\".charCodeAt(0);\nconst ASTERISK = \"*\".charCodeAt(0);\nconst COLON = \":\".charCodeAt(0);\nconst AT = \"@\".charCodeAt(0);\nconst RE_AT_END = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g;\nconst RE_WORD_END = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g;\nconst RE_BAD_BRACKET = /.[\\r\\n\"'(/\\\\]/;\nconst RE_HEX_ESCAPE = /[\\da-f]/i;\nvar tokenize = function tokenizer2(input2, options = {}) {\n let css = input2.css.valueOf();\n let ignore = options.ignoreErrors;\n let code, next, quote, content, escape;\n let escaped, escapePos, prev, n2, currentToken;\n let length = css.length;\n let pos = 0;\n let buffer = [];\n let returned = [];\n function position() {\n return pos;\n }\n function unclosed(what) {\n throw input2.error(\"Unclosed \" + what, pos);\n }\n function endOfFile() {\n return returned.length === 0 && pos >= length;\n }\n function nextToken(opts) {\n if (returned.length) return returned.pop();\n if (pos >= length) return;\n let ignoreUnclosed = opts ? opts.ignoreUnclosed : false;\n code = css.charCodeAt(pos);\n switch (code) {\n case NEWLINE:\n case SPACE:\n case TAB:\n case CR:\n case FEED: {\n next = pos;\n do {\n next += 1;\n code = css.charCodeAt(next);\n } while (code === SPACE || code === NEWLINE || code === TAB || code === CR || code === FEED);\n currentToken = [\"space\", css.slice(pos, next)];\n pos = next - 1;\n break;\n }\n case OPEN_SQUARE:\n case CLOSE_SQUARE:\n case OPEN_CURLY:\n case CLOSE_CURLY:\n case COLON:\n case SEMICOLON:\n case CLOSE_PARENTHESES: {\n let controlChar = String.fromCharCode(code);\n currentToken = [controlChar, controlChar, pos];\n break;\n }\n case OPEN_PARENTHESES: {\n prev = buffer.length ? buffer.pop()[1] : \"\";\n n2 = css.charCodeAt(pos + 1);\n if (prev === \"url\" && n2 !== SINGLE_QUOTE && n2 !== DOUBLE_QUOTE && n2 !== SPACE && n2 !== NEWLINE && n2 !== TAB && n2 !== FEED && n2 !== CR) {\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(\")\", next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos;\n break;\n } else {\n unclosed(\"bracket\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"brackets\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n next = css.indexOf(\")\", pos + 1);\n content = css.slice(pos, next + 1);\n if (next === -1 || RE_BAD_BRACKET.test(content)) {\n currentToken = [\"(\", \"(\", pos];\n } else {\n currentToken = [\"brackets\", content, pos, next];\n pos = next;\n }\n }\n break;\n }\n case SINGLE_QUOTE:\n case DOUBLE_QUOTE: {\n quote = code === SINGLE_QUOTE ? \"'\" : '\"';\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(quote, next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos + 1;\n break;\n } else {\n unclosed(\"string\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"string\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case AT: {\n RE_AT_END.lastIndex = pos + 1;\n RE_AT_END.test(css);\n if (RE_AT_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_AT_END.lastIndex - 2;\n }\n currentToken = [\"at-word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case BACKSLASH: {\n next = pos;\n escape = true;\n while (css.charCodeAt(next + 1) === BACKSLASH) {\n next += 1;\n escape = !escape;\n }\n code = css.charCodeAt(next + 1);\n if (escape && code !== SLASH && code !== SPACE && code !== NEWLINE && code !== TAB && code !== CR && code !== FEED) {\n next += 1;\n if (RE_HEX_ESCAPE.test(css.charAt(next))) {\n while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {\n next += 1;\n }\n if (css.charCodeAt(next + 1) === SPACE) {\n next += 1;\n }\n }\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n default: {\n if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {\n next = css.indexOf(\"*/\", pos + 2) + 1;\n if (next === 0) {\n if (ignore || ignoreUnclosed) {\n next = css.length;\n } else {\n unclosed(\"comment\");\n }\n }\n currentToken = [\"comment\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n RE_WORD_END.lastIndex = pos + 1;\n RE_WORD_END.test(css);\n if (RE_WORD_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_WORD_END.lastIndex - 2;\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n buffer.push(currentToken);\n pos = next;\n }\n break;\n }\n }\n pos++;\n return currentToken;\n }\n function back(token) {\n returned.push(token);\n }\n return {\n back,\n endOfFile,\n nextToken,\n position\n };\n};\nlet Container$5 = container;\nlet AtRule$3 = class AtRule2 extends Container$5 {\n constructor(defaults) {\n super(defaults);\n this.type = \"atrule\";\n }\n append(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.append(...children);\n }\n prepend(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.prepend(...children);\n }\n};\nvar atRule = AtRule$3;\nAtRule$3.default = AtRule$3;\nContainer$5.registerAtRule(AtRule$3);\nlet Container$4 = container;\nlet LazyResult$3, Processor$2;\nlet Root$5 = class Root2 extends Container$4 {\n constructor(defaults) {\n super(defaults);\n this.type = \"root\";\n if (!this.nodes) this.nodes = [];\n }\n normalize(child, sample, type) {\n let nodes = super.normalize(child);\n if (sample) {\n if (type === \"prepend\") {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before;\n } else {\n delete sample.raws.before;\n }\n } else if (this.first !== sample) {\n for (let node2 of nodes) {\n node2.raws.before = sample.raws.before;\n }\n }\n }\n return nodes;\n }\n removeChild(child, ignore) {\n let index2 = this.index(child);\n if (!ignore && index2 === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index2].raws.before;\n }\n return super.removeChild(child);\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$3(new Processor$2(), this, opts);\n return lazy.stringify();\n }\n};\nRoot$5.registerLazyResult = (dependant) => {\n LazyResult$3 = dependant;\n};\nRoot$5.registerProcessor = (dependant) => {\n Processor$2 = dependant;\n};\nvar root = Root$5;\nRoot$5.default = Root$5;\nContainer$4.registerRoot(Root$5);\nlet list$2 = {\n comma(string) {\n return list$2.split(string, [\",\"], true);\n },\n space(string) {\n let spaces = [\" \", \"\\n\", \"\t\"];\n return list$2.split(string, spaces);\n },\n split(string, separators, last) {\n let array = [];\n let current = \"\";\n let split = false;\n let func = 0;\n let inQuote = false;\n let prevQuote = \"\";\n let escape = false;\n for (let letter of string) {\n if (escape) {\n escape = false;\n } else if (letter === \"\\\\\") {\n escape = true;\n } else if (inQuote) {\n if (letter === prevQuote) {\n inQuote = false;\n }\n } else if (letter === '\"' || letter === \"'\") {\n inQuote = true;\n prevQuote = letter;\n } else if (letter === \"(\") {\n func += 1;\n } else if (letter === \")\") {\n if (func > 0) func -= 1;\n } else if (func === 0) {\n if (separators.includes(letter)) split = true;\n }\n if (split) {\n if (current !== \"\") array.push(current.trim());\n current = \"\";\n split = false;\n } else {\n current += letter;\n }\n }\n if (last || current !== \"\") array.push(current.trim());\n return array;\n }\n};\nvar list_1 = list$2;\nlist$2.default = list$2;\nlet Container$3 = container;\nlet list$1 = list_1;\nlet Rule$3 = class Rule2 extends Container$3 {\n constructor(defaults) {\n super(defaults);\n this.type = \"rule\";\n if (!this.nodes) this.nodes = [];\n }\n get selectors() {\n return list$1.comma(this.selector);\n }\n set selectors(values) {\n let match = this.selector ? this.selector.match(/,\\s*/) : null;\n let sep2 = match ? match[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n this.selector = values.join(sep2);\n }\n};\nvar rule = Rule$3;\nRule$3.default = Rule$3;\nContainer$3.registerRule(Rule$3);\nlet Declaration$2 = declaration;\nlet tokenizer22 = tokenize;\nlet Comment$2 = comment;\nlet AtRule$2 = atRule;\nlet Root$4 = root;\nlet Rule$2 = rule;\nconst SAFE_COMMENT_NEIGHBOR = {\n empty: true,\n space: true\n};\nfunction findLastWithPosition(tokens) {\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n let token = tokens[i2];\n let pos = token[3] || token[2];\n if (pos) return pos;\n }\n}\nlet Parser$1 = class Parser2 {\n constructor(input2) {\n this.input = input2;\n this.root = new Root$4();\n this.current = this.root;\n this.spaces = \"\";\n this.semicolon = false;\n this.createTokenizer();\n this.root.source = { input: input2, start: { column: 1, line: 1, offset: 0 } };\n }\n atrule(token) {\n let node2 = new AtRule$2();\n node2.name = token[1].slice(1);\n if (node2.name === \"\") {\n this.unnamedAtrule(node2, token);\n }\n this.init(node2, token[2]);\n let type;\n let prev;\n let shift;\n let last = false;\n let open = false;\n let params = [];\n let brackets = [];\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n type = token[0];\n if (type === \"(\" || type === \"[\") {\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (type === \"{\" && brackets.length > 0) {\n brackets.push(\"}\");\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n }\n if (brackets.length === 0) {\n if (type === \";\") {\n node2.source.end = this.getPosition(token[2]);\n node2.source.end.offset++;\n this.semicolon = true;\n break;\n } else if (type === \"{\") {\n open = true;\n break;\n } else if (type === \"}\") {\n if (params.length > 0) {\n shift = params.length - 1;\n prev = params[shift];\n while (prev && prev[0] === \"space\") {\n prev = params[--shift];\n }\n if (prev) {\n node2.source.end = this.getPosition(prev[3] || prev[2]);\n node2.source.end.offset++;\n }\n }\n this.end(token);\n break;\n } else {\n params.push(token);\n }\n } else {\n params.push(token);\n }\n if (this.tokenizer.endOfFile()) {\n last = true;\n break;\n }\n }\n node2.raws.between = this.spacesAndCommentsFromEnd(params);\n if (params.length) {\n node2.raws.afterName = this.spacesAndCommentsFromStart(params);\n this.raw(node2, \"params\", params);\n if (last) {\n token = params[params.length - 1];\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n this.spaces = node2.raws.between;\n node2.raws.between = \"\";\n }\n } else {\n node2.raws.afterName = \"\";\n node2.params = \"\";\n }\n if (open) {\n node2.nodes = [];\n this.current = node2;\n }\n }\n checkMissedSemicolon(tokens) {\n let colon = this.colon(tokens);\n if (colon === false) return;\n let founded = 0;\n let token;\n for (let j = colon - 1; j >= 0; j--) {\n token = tokens[j];\n if (token[0] !== \"space\") {\n founded += 1;\n if (founded === 2) break;\n }\n }\n throw this.input.error(\n \"Missed semicolon\",\n token[0] === \"word\" ? token[3] + 1 : token[2]\n );\n }\n colon(tokens) {\n let brackets = 0;\n let token, type, prev;\n for (let [i2, element] of tokens.entries()) {\n token = element;\n type = token[0];\n if (type === \"(\") {\n brackets += 1;\n }\n if (type === \")\") {\n brackets -= 1;\n }\n if (brackets === 0 && type === \":\") {\n if (!prev) {\n this.doubleColon(token);\n } else if (prev[0] === \"word\" && prev[1] === \"progid\") {\n continue;\n } else {\n return i2;\n }\n }\n prev = token;\n }\n return false;\n }\n comment(token) {\n let node2 = new Comment$2();\n this.init(node2, token[2]);\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n let text = token[1].slice(2, -2);\n if (/^\\s*$/.test(text)) {\n node2.text = \"\";\n node2.raws.left = text;\n node2.raws.right = \"\";\n } else {\n let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n node2.text = match[2];\n node2.raws.left = match[1];\n node2.raws.right = match[3];\n }\n }\n createTokenizer() {\n this.tokenizer = tokenizer22(this.input);\n }\n decl(tokens, customProperty) {\n let node2 = new Declaration$2();\n this.init(node2, tokens[0][2]);\n let last = tokens[tokens.length - 1];\n if (last[0] === \";\") {\n this.semicolon = true;\n tokens.pop();\n }\n node2.source.end = this.getPosition(\n last[3] || last[2] || findLastWithPosition(tokens)\n );\n node2.source.end.offset++;\n while (tokens[0][0] !== \"word\") {\n if (tokens.length === 1) this.unknownWord(tokens);\n node2.raws.before += tokens.shift()[1];\n }\n node2.source.start = this.getPosition(tokens[0][2]);\n node2.prop = \"\";\n while (tokens.length) {\n let type = tokens[0][0];\n if (type === \":\" || type === \"space\" || type === \"comment\") {\n break;\n }\n node2.prop += tokens.shift()[1];\n }\n node2.raws.between = \"\";\n let token;\n while (tokens.length) {\n token = tokens.shift();\n if (token[0] === \":\") {\n node2.raws.between += token[1];\n break;\n } else {\n if (token[0] === \"word\" && /\\w/.test(token[1])) {\n this.unknownWord([token]);\n }\n node2.raws.between += token[1];\n }\n }\n if (node2.prop[0] === \"_\" || node2.prop[0] === \"*\") {\n node2.raws.before += node2.prop[0];\n node2.prop = node2.prop.slice(1);\n }\n let firstSpaces = [];\n let next;\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n firstSpaces.push(tokens.shift());\n }\n this.precheckMissedSemicolon(tokens);\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n token = tokens[i2];\n if (token[1].toLowerCase() === \"!important\") {\n node2.important = true;\n let string = this.stringFrom(tokens, i2);\n string = this.spacesFromEnd(tokens) + string;\n if (string !== \" !important\") node2.raws.important = string;\n break;\n } else if (token[1].toLowerCase() === \"important\") {\n let cache = tokens.slice(0);\n let str = \"\";\n for (let j = i2; j > 0; j--) {\n let type = cache[j][0];\n if (str.trim().indexOf(\"!\") === 0 && type !== \"space\") {\n break;\n }\n str = cache.pop()[1] + str;\n }\n if (str.trim().indexOf(\"!\") === 0) {\n node2.important = true;\n node2.raws.important = str;\n tokens = cache;\n }\n }\n if (token[0] !== \"space\" && token[0] !== \"comment\") {\n break;\n }\n }\n let hasWord = tokens.some((i2) => i2[0] !== \"space\" && i2[0] !== \"comment\");\n if (hasWord) {\n node2.raws.between += firstSpaces.map((i2) => i2[1]).join(\"\");\n firstSpaces = [];\n }\n this.raw(node2, \"value\", firstSpaces.concat(tokens), customProperty);\n if (node2.value.includes(\":\") && !customProperty) {\n this.checkMissedSemicolon(tokens);\n }\n }\n doubleColon(token) {\n throw this.input.error(\n \"Double colon\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n emptyRule(token) {\n let node2 = new Rule$2();\n this.init(node2, token[2]);\n node2.selector = \"\";\n node2.raws.between = \"\";\n this.current = node2;\n }\n end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.semicolon = false;\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.spaces = \"\";\n if (this.current.parent) {\n this.current.source.end = this.getPosition(token[2]);\n this.current.source.end.offset++;\n this.current = this.current.parent;\n } else {\n this.unexpectedClose(token);\n }\n }\n endFile() {\n if (this.current.parent) this.unclosedBlock();\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.root.source.end = this.getPosition(this.tokenizer.position());\n }\n freeSemicolon(token) {\n this.spaces += token[1];\n if (this.current.nodes) {\n let prev = this.current.nodes[this.current.nodes.length - 1];\n if (prev && prev.type === \"rule\" && !prev.raws.ownSemicolon) {\n prev.raws.ownSemicolon = this.spaces;\n this.spaces = \"\";\n }\n }\n }\n // Helpers\n getPosition(offset) {\n let pos = this.input.fromOffset(offset);\n return {\n column: pos.col,\n line: pos.line,\n offset\n };\n }\n init(node2, offset) {\n this.current.push(node2);\n node2.source = {\n input: this.input,\n start: this.getPosition(offset)\n };\n node2.raws.before = this.spaces;\n this.spaces = \"\";\n if (node2.type !== \"comment\") this.semicolon = false;\n }\n other(start) {\n let end = false;\n let type = null;\n let colon = false;\n let bracket = null;\n let brackets = [];\n let customProperty = start[1].startsWith(\"--\");\n let tokens = [];\n let token = start;\n while (token) {\n type = token[0];\n tokens.push(token);\n if (type === \"(\" || type === \"[\") {\n if (!bracket) bracket = token;\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (customProperty && colon && type === \"{\") {\n if (!bracket) bracket = token;\n brackets.push(\"}\");\n } else if (brackets.length === 0) {\n if (type === \";\") {\n if (colon) {\n this.decl(tokens, customProperty);\n return;\n } else {\n break;\n }\n } else if (type === \"{\") {\n this.rule(tokens);\n return;\n } else if (type === \"}\") {\n this.tokenizer.back(tokens.pop());\n end = true;\n break;\n } else if (type === \":\") {\n colon = true;\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n if (brackets.length === 0) bracket = null;\n }\n token = this.tokenizer.nextToken();\n }\n if (this.tokenizer.endOfFile()) end = true;\n if (brackets.length > 0) this.unclosedBracket(bracket);\n if (end && colon) {\n if (!customProperty) {\n while (tokens.length) {\n token = tokens[tokens.length - 1][0];\n if (token !== \"space\" && token !== \"comment\") break;\n this.tokenizer.back(tokens.pop());\n }\n }\n this.decl(tokens, customProperty);\n } else {\n this.unknownWord(tokens);\n }\n }\n parse() {\n let token;\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n switch (token[0]) {\n case \"space\":\n this.spaces += token[1];\n break;\n case \";\":\n this.freeSemicolon(token);\n break;\n case \"}\":\n this.end(token);\n break;\n case \"comment\":\n this.comment(token);\n break;\n case \"at-word\":\n this.atrule(token);\n break;\n case \"{\":\n this.emptyRule(token);\n break;\n default:\n this.other(token);\n break;\n }\n }\n this.endFile();\n }\n precheckMissedSemicolon() {\n }\n raw(node2, prop, tokens, customProperty) {\n let token, type;\n let length = tokens.length;\n let value = \"\";\n let clean = true;\n let next, prev;\n for (let i2 = 0; i2 < length; i2 += 1) {\n token = tokens[i2];\n type = token[0];\n if (type === \"space\" && i2 === length - 1 && !customProperty) {\n clean = false;\n } else if (type === \"comment\") {\n prev = tokens[i2 - 1] ? tokens[i2 - 1][0] : \"empty\";\n next = tokens[i2 + 1] ? tokens[i2 + 1][0] : \"empty\";\n if (!SAFE_COMMENT_NEIGHBOR[prev] && !SAFE_COMMENT_NEIGHBOR[next]) {\n if (value.slice(-1) === \",\") {\n clean = false;\n } else {\n value += token[1];\n }\n } else {\n clean = false;\n }\n } else {\n value += token[1];\n }\n }\n if (!clean) {\n let raw = tokens.reduce((all, i2) => all + i2[1], \"\");\n node2.raws[prop] = { raw, value };\n }\n node2[prop] = value;\n }\n rule(tokens) {\n tokens.pop();\n let node2 = new Rule$2();\n this.init(node2, tokens[0][2]);\n node2.raws.between = this.spacesAndCommentsFromEnd(tokens);\n this.raw(node2, \"selector\", tokens);\n this.current = node2;\n }\n spacesAndCommentsFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\" && lastTokenType !== \"comment\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n // Errors\n spacesAndCommentsFromStart(tokens) {\n let next;\n let spaces = \"\";\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n spaces += tokens.shift()[1];\n }\n return spaces;\n }\n spacesFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n stringFrom(tokens, from) {\n let result2 = \"\";\n for (let i2 = from; i2 < tokens.length; i2++) {\n result2 += tokens[i2][1];\n }\n tokens.splice(from, tokens.length - from);\n return result2;\n }\n unclosedBlock() {\n let pos = this.current.source.start;\n throw this.input.error(\"Unclosed block\", pos.line, pos.column);\n }\n unclosedBracket(bracket) {\n throw this.input.error(\n \"Unclosed bracket\",\n { offset: bracket[2] },\n { offset: bracket[2] + 1 }\n );\n }\n unexpectedClose(token) {\n throw this.input.error(\n \"Unexpected }\",\n { offset: token[2] },\n { offset: token[2] + 1 }\n );\n }\n unknownWord(tokens) {\n throw this.input.error(\n \"Unknown word\",\n { offset: tokens[0][2] },\n { offset: tokens[0][2] + tokens[0][1].length }\n );\n }\n unnamedAtrule(node2, token) {\n throw this.input.error(\n \"At-rule without name\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n};\nvar parser = Parser$1;\nlet Container$2 = container;\nlet Parser22 = parser;\nlet Input$2 = input;\nfunction parse$3(css, opts) {\n let input2 = new Input$2(css, opts);\n let parser2 = new Parser22(input2);\n try {\n parser2.parse();\n } catch (e2) {\n if (process.env.NODE_ENV !== \"production\") {\n if (e2.name === \"CssSyntaxError\" && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser\";\n } else if (/\\.sass/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser\";\n } else if (/\\.less$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser\";\n }\n }\n }\n throw e2;\n }\n return parser2.root;\n}\nvar parse_1 = parse$3;\nparse$3.default = parse$3;\nContainer$2.registerParse(parse$3);\nlet { isClean, my } = symbols;\nlet MapGenerator$1 = mapGenerator;\nlet stringify$2 = stringify_1;\nlet Container$1 = container;\nlet Document$2 = document$1;\nlet warnOnce$1 = warnOnce$2;\nlet Result$2 = result;\nlet parse$2 = parse_1;\nlet Root$3 = root;\nconst TYPE_TO_CLASS_NAME = {\n atrule: \"AtRule\",\n comment: \"Comment\",\n decl: \"Declaration\",\n document: \"Document\",\n root: \"Root\",\n rule: \"Rule\"\n};\nconst PLUGIN_PROPS = {\n AtRule: true,\n AtRuleExit: true,\n Comment: true,\n CommentExit: true,\n Declaration: true,\n DeclarationExit: true,\n Document: true,\n DocumentExit: true,\n Once: true,\n OnceExit: true,\n postcssPlugin: true,\n prepare: true,\n Root: true,\n RootExit: true,\n Rule: true,\n RuleExit: true\n};\nconst NOT_VISITORS = {\n Once: true,\n postcssPlugin: true,\n prepare: true\n};\nconst CHILDREN = 0;\nfunction isPromise(obj) {\n return typeof obj === \"object\" && typeof obj.then === \"function\";\n}\nfunction getEvents(node2) {\n let key = false;\n let type = TYPE_TO_CLASS_NAME[node2.type];\n if (node2.type === \"decl\") {\n key = node2.prop.toLowerCase();\n } else if (node2.type === \"atrule\") {\n key = node2.name.toLowerCase();\n }\n if (key && node2.append) {\n return [\n type,\n type + \"-\" + key,\n CHILDREN,\n type + \"Exit\",\n type + \"Exit-\" + key\n ];\n } else if (key) {\n return [type, type + \"-\" + key, type + \"Exit\", type + \"Exit-\" + key];\n } else if (node2.append) {\n return [type, CHILDREN, type + \"Exit\"];\n } else {\n return [type, type + \"Exit\"];\n }\n}\nfunction toStack(node2) {\n let events;\n if (node2.type === \"document\") {\n events = [\"Document\", CHILDREN, \"DocumentExit\"];\n } else if (node2.type === \"root\") {\n events = [\"Root\", CHILDREN, \"RootExit\"];\n } else {\n events = getEvents(node2);\n }\n return {\n eventIndex: 0,\n events,\n iterator: 0,\n node: node2,\n visitorIndex: 0,\n visitors: []\n };\n}\nfunction cleanMarks(node2) {\n node2[isClean] = false;\n if (node2.nodes) node2.nodes.forEach((i2) => cleanMarks(i2));\n return node2;\n}\nlet postcss$2 = {};\nlet LazyResult$2 = class LazyResult2 {\n constructor(processor2, css, opts) {\n this.stringified = false;\n this.processed = false;\n let root2;\n if (typeof css === \"object\" && css !== null && (css.type === \"root\" || css.type === \"document\")) {\n root2 = cleanMarks(css);\n } else if (css instanceof LazyResult2 || css instanceof Result$2) {\n root2 = cleanMarks(css.root);\n if (css.map) {\n if (typeof opts.map === \"undefined\") opts.map = {};\n if (!opts.map.inline) opts.map.inline = false;\n opts.map.prev = css.map;\n }\n } else {\n let parser2 = parse$2;\n if (opts.syntax) parser2 = opts.syntax.parse;\n if (opts.parser) parser2 = opts.parser;\n if (parser2.parse) parser2 = parser2.parse;\n try {\n root2 = parser2(css, opts);\n } catch (error) {\n this.processed = true;\n this.error = error;\n }\n if (root2 && !root2[my]) {\n Container$1.rebuild(root2);\n }\n }\n this.result = new Result$2(processor2, root2, opts);\n this.helpers = { ...postcss$2, postcss: postcss$2, result: this.result };\n this.plugins = this.processor.plugins.map((plugin22) => {\n if (typeof plugin22 === \"object\" && plugin22.prepare) {\n return { ...plugin22, ...plugin22.prepare(this.result) };\n } else {\n return plugin22;\n }\n });\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n if (this.processed) return Promise.resolve(this.result);\n if (!this.processing) {\n this.processing = this.runAsync();\n }\n return this.processing;\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n getAsyncError() {\n throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n }\n handleError(error, node2) {\n let plugin22 = this.result.lastPlugin;\n try {\n if (node2) node2.addToError(error);\n this.error = error;\n if (error.name === \"CssSyntaxError\" && !error.plugin) {\n error.plugin = plugin22.postcssPlugin;\n error.setMessage();\n } else if (plugin22.postcssVersion) {\n if (process.env.NODE_ENV !== \"production\") {\n let pluginName = plugin22.postcssPlugin;\n let pluginVer = plugin22.postcssVersion;\n let runtimeVer = this.result.processor.version;\n let a2 = pluginVer.split(\".\");\n let b = runtimeVer.split(\".\");\n if (a2[0] !== b[0] || parseInt(a2[1]) > parseInt(b[1])) {\n console.error(\n \"Unknown error from PostCSS plugin. Your current PostCSS version is \" + runtimeVer + \", but \" + pluginName + \" uses \" + pluginVer + \". Perhaps this is the source of the error below.\"\n );\n }\n }\n }\n } catch (err) {\n if (console && console.error) console.error(err);\n }\n return error;\n }\n prepareVisitors() {\n this.listeners = {};\n let add = (plugin22, type, cb) => {\n if (!this.listeners[type]) this.listeners[type] = [];\n this.listeners[type].push([plugin22, cb]);\n };\n for (let plugin22 of this.plugins) {\n if (typeof plugin22 === \"object\") {\n for (let event in plugin22) {\n if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) {\n throw new Error(\n `Unknown event ${event} in ${plugin22.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`\n );\n }\n if (!NOT_VISITORS[event]) {\n if (typeof plugin22[event] === \"object\") {\n for (let filter in plugin22[event]) {\n if (filter === \"*\") {\n add(plugin22, event, plugin22[event][filter]);\n } else {\n add(\n plugin22,\n event + \"-\" + filter.toLowerCase(),\n plugin22[event][filter]\n );\n }\n }\n } else if (typeof plugin22[event] === \"function\") {\n add(plugin22, event, plugin22[event]);\n }\n }\n }\n }\n }\n this.hasListener = Object.keys(this.listeners).length > 0;\n }\n async runAsync() {\n this.plugin = 0;\n for (let i2 = 0; i2 < this.plugins.length; i2++) {\n let plugin22 = this.plugins[i2];\n let promise = this.runOnRoot(plugin22);\n if (isPromise(promise)) {\n try {\n await promise;\n } catch (error) {\n throw this.handleError(error);\n }\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean]) {\n root2[isClean] = true;\n let stack = [toStack(root2)];\n while (stack.length > 0) {\n let promise = this.visitTick(stack);\n if (isPromise(promise)) {\n try {\n await promise;\n } catch (e2) {\n let node2 = stack[stack.length - 1].node;\n throw this.handleError(e2, node2);\n }\n }\n }\n }\n if (this.listeners.OnceExit) {\n for (let [plugin22, visitor] of this.listeners.OnceExit) {\n this.result.lastPlugin = plugin22;\n try {\n if (root2.type === \"document\") {\n let roots = root2.nodes.map(\n (subRoot) => visitor(subRoot, this.helpers)\n );\n await Promise.all(roots);\n } else {\n await visitor(root2, this.helpers);\n }\n } catch (e2) {\n throw this.handleError(e2);\n }\n }\n }\n }\n this.processed = true;\n return this.stringify();\n }\n runOnRoot(plugin22) {\n this.result.lastPlugin = plugin22;\n try {\n if (typeof plugin22 === \"object\" && plugin22.Once) {\n if (this.result.root.type === \"document\") {\n let roots = this.result.root.nodes.map(\n (root2) => plugin22.Once(root2, this.helpers)\n );\n if (isPromise(roots[0])) {\n return Promise.all(roots);\n }\n return roots;\n }\n return plugin22.Once(this.result.root, this.helpers);\n } else if (typeof plugin22 === \"function\") {\n return plugin22(this.result.root, this.result);\n }\n } catch (error) {\n throw this.handleError(error);\n }\n }\n stringify() {\n if (this.error) throw this.error;\n if (this.stringified) return this.result;\n this.stringified = true;\n this.sync();\n let opts = this.result.opts;\n let str = stringify$2;\n if (opts.syntax) str = opts.syntax.stringify;\n if (opts.stringifier) str = opts.stringifier;\n if (str.stringify) str = str.stringify;\n let map = new MapGenerator$1(str, this.result.root, this.result.opts);\n let data = map.generate();\n this.result.css = data[0];\n this.result.map = data[1];\n return this.result;\n }\n sync() {\n if (this.error) throw this.error;\n if (this.processed) return this.result;\n this.processed = true;\n if (this.processing) {\n throw this.getAsyncError();\n }\n for (let plugin22 of this.plugins) {\n let promise = this.runOnRoot(plugin22);\n if (isPromise(promise)) {\n throw this.getAsyncError();\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean]) {\n root2[isClean] = true;\n this.walkSync(root2);\n }\n if (this.listeners.OnceExit) {\n if (root2.type === \"document\") {\n for (let subRoot of root2.nodes) {\n this.visitSync(this.listeners.OnceExit, subRoot);\n }\n } else {\n this.visitSync(this.listeners.OnceExit, root2);\n }\n }\n }\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this.opts)) {\n warnOnce$1(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this.css;\n }\n visitSync(visitors, node2) {\n for (let [plugin22, visitor] of visitors) {\n this.result.lastPlugin = plugin22;\n let promise;\n try {\n promise = visitor(node2, this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2.proxyOf);\n }\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n return true;\n }\n if (isPromise(promise)) {\n throw this.getAsyncError();\n }\n }\n }\n visitTick(stack) {\n let visit2 = stack[stack.length - 1];\n let { node: node2, visitors } = visit2;\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n stack.pop();\n return;\n }\n if (visitors.length > 0 && visit2.visitorIndex < visitors.length) {\n let [plugin22, visitor] = visitors[visit2.visitorIndex];\n visit2.visitorIndex += 1;\n if (visit2.visitorIndex === visitors.length) {\n visit2.visitors = [];\n visit2.visitorIndex = 0;\n }\n this.result.lastPlugin = plugin22;\n try {\n return visitor(node2.toProxy(), this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2);\n }\n }\n if (visit2.iterator !== 0) {\n let iterator = visit2.iterator;\n let child;\n while (child = node2.nodes[node2.indexes[iterator]]) {\n node2.indexes[iterator] += 1;\n if (!child[isClean]) {\n child[isClean] = true;\n stack.push(toStack(child));\n return;\n }\n }\n visit2.iterator = 0;\n delete node2.indexes[iterator];\n }\n let events = visit2.events;\n while (visit2.eventIndex < events.length) {\n let event = events[visit2.eventIndex];\n visit2.eventIndex += 1;\n if (event === CHILDREN) {\n if (node2.nodes && node2.nodes.length) {\n node2[isClean] = true;\n visit2.iterator = node2.getIterator();\n }\n return;\n } else if (this.listeners[event]) {\n visit2.visitors = this.listeners[event];\n return;\n }\n }\n stack.pop();\n }\n walkSync(node2) {\n node2[isClean] = true;\n let events = getEvents(node2);\n for (let event of events) {\n if (event === CHILDREN) {\n if (node2.nodes) {\n node2.each((child) => {\n if (!child[isClean]) this.walkSync(child);\n });\n }\n } else {\n let visitors = this.listeners[event];\n if (visitors) {\n if (this.visitSync(visitors, node2.toProxy())) return;\n }\n }\n }\n }\n warnings() {\n return this.sync().warnings();\n }\n get content() {\n return this.stringify().content;\n }\n get css() {\n return this.stringify().css;\n }\n get map() {\n return this.stringify().map;\n }\n get messages() {\n return this.sync().messages;\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n return this.sync().root;\n }\n get [Symbol.toStringTag]() {\n return \"LazyResult\";\n }\n};\nLazyResult$2.registerPostcss = (dependant) => {\n postcss$2 = dependant;\n};\nvar lazyResult = LazyResult$2;\nLazyResult$2.default = LazyResult$2;\nRoot$3.registerLazyResult(LazyResult$2);\nDocument$2.registerLazyResult(LazyResult$2);\nlet MapGenerator22 = mapGenerator;\nlet stringify$1 = stringify_1;\nlet warnOnce22 = warnOnce$2;\nlet parse$1 = parse_1;\nconst Result$1 = result;\nlet NoWorkResult$1 = class NoWorkResult2 {\n constructor(processor2, css, opts) {\n css = css.toString();\n this.stringified = false;\n this._processor = processor2;\n this._css = css;\n this._opts = opts;\n this._map = void 0;\n let root2;\n let str = stringify$1;\n this.result = new Result$1(this._processor, root2, this._opts);\n this.result.css = css;\n let self = this;\n Object.defineProperty(this.result, \"root\", {\n get() {\n return self.root;\n }\n });\n let map = new MapGenerator22(str, root2, this._opts, css);\n if (map.isMap()) {\n let [generatedCSS, generatedMap] = map.generate();\n if (generatedCSS) {\n this.result.css = generatedCSS;\n }\n if (generatedMap) {\n this.result.map = generatedMap;\n }\n } else {\n map.clearAnnotation();\n this.result.css = map.css;\n }\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n return Promise.resolve(this.result);\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n sync() {\n if (this.error) throw this.error;\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this._opts)) {\n warnOnce22(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this._css;\n }\n warnings() {\n return [];\n }\n get content() {\n return this.result.css;\n }\n get css() {\n return this.result.css;\n }\n get map() {\n return this.result.map;\n }\n get messages() {\n return [];\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n if (this._root) {\n return this._root;\n }\n let root2;\n let parser2 = parse$1;\n try {\n root2 = parser2(this._css, this._opts);\n } catch (error) {\n this.error = error;\n }\n if (this.error) {\n throw this.error;\n } else {\n this._root = root2;\n return root2;\n }\n }\n get [Symbol.toStringTag]() {\n return \"NoWorkResult\";\n }\n};\nvar noWorkResult = NoWorkResult$1;\nNoWorkResult$1.default = NoWorkResult$1;\nlet NoWorkResult22 = noWorkResult;\nlet LazyResult$1 = lazyResult;\nlet Document$1 = document$1;\nlet Root$2 = root;\nlet Processor$1 = class Processor2 {\n constructor(plugins = []) {\n this.version = \"8.4.38\";\n this.plugins = this.normalize(plugins);\n }\n normalize(plugins) {\n let normalized = [];\n for (let i2 of plugins) {\n if (i2.postcss === true) {\n i2 = i2();\n } else if (i2.postcss) {\n i2 = i2.postcss;\n }\n if (typeof i2 === \"object\" && Array.isArray(i2.plugins)) {\n normalized = normalized.concat(i2.plugins);\n } else if (typeof i2 === \"object\" && i2.postcssPlugin) {\n normalized.push(i2);\n } else if (typeof i2 === \"function\") {\n normalized.push(i2);\n } else if (typeof i2 === \"object\" && (i2.parse || i2.stringify)) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error(\n \"PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.\"\n );\n }\n } else {\n throw new Error(i2 + \" is not a PostCSS plugin\");\n }\n }\n return normalized;\n }\n process(css, opts = {}) {\n if (!this.plugins.length && !opts.parser && !opts.stringifier && !opts.syntax) {\n return new NoWorkResult22(this, css, opts);\n } else {\n return new LazyResult$1(this, css, opts);\n }\n }\n use(plugin22) {\n this.plugins = this.plugins.concat(this.normalize([plugin22]));\n return this;\n }\n};\nvar processor = Processor$1;\nProcessor$1.default = Processor$1;\nRoot$2.registerProcessor(Processor$1);\nDocument$1.registerProcessor(Processor$1);\nlet Declaration$1 = declaration;\nlet PreviousMap22 = previousMap;\nlet Comment$1 = comment;\nlet AtRule$1 = atRule;\nlet Input$1 = input;\nlet Root$1 = root;\nlet Rule$1 = rule;\nfunction fromJSON$1(json, inputs) {\n if (Array.isArray(json)) return json.map((n2) => fromJSON$1(n2));\n let { inputs: ownInputs, ...defaults } = json;\n if (ownInputs) {\n inputs = [];\n for (let input2 of ownInputs) {\n let inputHydrated = { ...input2, __proto__: Input$1.prototype };\n if (inputHydrated.map) {\n inputHydrated.map = {\n ...inputHydrated.map,\n __proto__: PreviousMap22.prototype\n };\n }\n inputs.push(inputHydrated);\n }\n }\n if (defaults.nodes) {\n defaults.nodes = json.nodes.map((n2) => fromJSON$1(n2, inputs));\n }\n if (defaults.source) {\n let { inputId, ...source } = defaults.source;\n defaults.source = source;\n if (inputId != null) {\n defaults.source.input = inputs[inputId];\n }\n }\n if (defaults.type === \"root\") {\n return new Root$1(defaults);\n } else if (defaults.type === \"decl\") {\n return new Declaration$1(defaults);\n } else if (defaults.type === \"rule\") {\n return new Rule$1(defaults);\n } else if (defaults.type === \"comment\") {\n return new Comment$1(defaults);\n } else if (defaults.type === \"atrule\") {\n return new AtRule$1(defaults);\n } else {\n throw new Error(\"Unknown node type: \" + json.type);\n }\n}\nvar fromJSON_1 = fromJSON$1;\nfromJSON$1.default = fromJSON$1;\nlet CssSyntaxError22 = cssSyntaxError;\nlet Declaration22 = declaration;\nlet LazyResult22 = lazyResult;\nlet Container22 = container;\nlet Processor22 = processor;\nlet stringify = stringify_1;\nlet fromJSON = fromJSON_1;\nlet Document222 = document$1;\nlet Warning22 = warning;\nlet Comment22 = comment;\nlet AtRule22 = atRule;\nlet Result22 = result;\nlet Input22 = input;\nlet parse = parse_1;\nlet list = list_1;\nlet Rule22 = rule;\nlet Root22 = root;\nlet Node22 = node;\nfunction postcss(...plugins) {\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0];\n }\n return new Processor22(plugins);\n}\npostcss.plugin = function plugin2(name, initializer) {\n let warningPrinted = false;\n function creator(...args) {\n if (console && console.warn && !warningPrinted) {\n warningPrinted = true;\n console.warn(\n name + \": postcss.plugin was deprecated. Migration guide:\\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration\"\n );\n if (process.env.LANG && process.env.LANG.startsWith(\"cn\")) {\n console.warn(\n name + \": 里面 postcss.plugin 被弃用. 迁移指南:\\nhttps://www.w3ctech.com/topic/2226\"\n );\n }\n }\n let transformer = initializer(...args);\n transformer.postcssPlugin = name;\n transformer.postcssVersion = new Processor22().version;\n return transformer;\n }\n let cache;\n Object.defineProperty(creator, \"postcss\", {\n get() {\n if (!cache) cache = creator();\n return cache;\n }\n });\n creator.process = function(css, processOpts, pluginOpts) {\n return postcss([creator(pluginOpts)]).process(css, processOpts);\n };\n return creator;\n};\npostcss.stringify = stringify;\npostcss.parse = parse;\npostcss.fromJSON = fromJSON;\npostcss.list = list;\npostcss.comment = (defaults) => new Comment22(defaults);\npostcss.atRule = (defaults) => new AtRule22(defaults);\npostcss.decl = (defaults) => new Declaration22(defaults);\npostcss.rule = (defaults) => new Rule22(defaults);\npostcss.root = (defaults) => new Root22(defaults);\npostcss.document = (defaults) => new Document222(defaults);\npostcss.CssSyntaxError = CssSyntaxError22;\npostcss.Declaration = Declaration22;\npostcss.Container = Container22;\npostcss.Processor = Processor22;\npostcss.Document = Document222;\npostcss.Comment = Comment22;\npostcss.Warning = Warning22;\npostcss.AtRule = AtRule22;\npostcss.Result = Result22;\npostcss.Input = Input22;\npostcss.Rule = Rule22;\npostcss.Root = Root22;\npostcss.Node = Node22;\nLazyResult22.registerPostcss(postcss);\nvar postcss_1 = postcss;\npostcss.default = postcss;\nconst postcss$1 = /* @__PURE__ */ getDefaultExportFromCjs(postcss_1);\npostcss$1.stringify;\npostcss$1.fromJSON;\npostcss$1.plugin;\npostcss$1.parse;\npostcss$1.list;\npostcss$1.document;\npostcss$1.comment;\npostcss$1.atRule;\npostcss$1.rule;\npostcss$1.decl;\npostcss$1.root;\npostcss$1.CssSyntaxError;\npostcss$1.Declaration;\npostcss$1.Container;\npostcss$1.Processor;\npostcss$1.Document;\npostcss$1.Comment;\npostcss$1.Warning;\npostcss$1.AtRule;\npostcss$1.Result;\npostcss$1.Input;\npostcss$1.Rule;\npostcss$1.Root;\npostcss$1.Node;\nclass BaseRRNode {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any\n constructor(..._args) {\n __publicField2(this, \"parentElement\", null);\n __publicField2(this, \"parentNode\", null);\n __publicField2(this, \"ownerDocument\");\n __publicField2(this, \"firstChild\", null);\n __publicField2(this, \"lastChild\", null);\n __publicField2(this, \"previousSibling\", null);\n __publicField2(this, \"nextSibling\", null);\n __publicField2(this, \"ELEMENT_NODE\", 1);\n __publicField2(this, \"TEXT_NODE\", 3);\n __publicField2(this, \"nodeType\");\n __publicField2(this, \"nodeName\");\n __publicField2(this, \"RRNodeType\");\n }\n get childNodes() {\n const childNodes2 = [];\n let childIterator = this.firstChild;\n while (childIterator) {\n childNodes2.push(childIterator);\n childIterator = childIterator.nextSibling;\n }\n return childNodes2;\n }\n contains(node2) {\n if (!(node2 instanceof BaseRRNode)) return false;\n else if (node2.ownerDocument !== this.ownerDocument) return false;\n else if (node2 === this) return true;\n while (node2.parentNode) {\n if (node2.parentNode === this) return true;\n node2 = node2.parentNode;\n }\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n appendChild(_newChild) {\n throw new Error(\n `RRDomException: Failed to execute 'appendChild' on 'RRNode': This RRNode type does not support this method.`\n );\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n insertBefore(_newChild, _refChild) {\n throw new Error(\n `RRDomException: Failed to execute 'insertBefore' on 'RRNode': This RRNode type does not support this method.`\n );\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n removeChild(_node) {\n throw new Error(\n `RRDomException: Failed to execute 'removeChild' on 'RRNode': This RRNode type does not support this method.`\n );\n }\n toString() {\n return \"RRNode\";\n }\n}\nconst testableAccessors = {\n Node: [\"childNodes\", \"parentNode\", \"parentElement\", \"textContent\"],\n ShadowRoot: [\"host\", \"styleSheets\"],\n Element: [\"shadowRoot\", \"querySelector\", \"querySelectorAll\"],\n MutationObserver: []\n};\nconst testableMethods = {\n Node: [\"contains\", \"getRootNode\"],\n ShadowRoot: [\"getSelection\"],\n Element: [],\n MutationObserver: [\"constructor\"]\n};\nconst untaintedBasePrototype = {};\nconst isAngularZonePresent = () => {\n return !!globalThis.Zone;\n};\nfunction getUntaintedPrototype(key) {\n if (untaintedBasePrototype[key])\n return untaintedBasePrototype[key];\n const defaultObj = globalThis[key];\n const defaultPrototype = defaultObj.prototype;\n const accessorNames = key in testableAccessors ? testableAccessors[key] : void 0;\n const isUntaintedAccessors = Boolean(\n accessorNames && // @ts-expect-error 2345\n accessorNames.every(\n (accessor) => {\n var _a2, _b;\n return Boolean(\n (_b = (_a2 = Object.getOwnPropertyDescriptor(defaultPrototype, accessor)) == null ? void 0 : _a2.get) == null ? void 0 : _b.toString().includes(\"[native code]\")\n );\n }\n )\n );\n const methodNames = key in testableMethods ? testableMethods[key] : void 0;\n const isUntaintedMethods = Boolean(\n methodNames && methodNames.every(\n // @ts-expect-error 2345\n (method) => {\n var _a2;\n return typeof defaultPrototype[method] === \"function\" && ((_a2 = defaultPrototype[method]) == null ? void 0 : _a2.toString().includes(\"[native code]\"));\n }\n )\n );\n if (isUntaintedAccessors && isUntaintedMethods && !isAngularZonePresent()) {\n untaintedBasePrototype[key] = defaultObj.prototype;\n return defaultObj.prototype;\n }\n try {\n const iframeEl = document.createElement(\"iframe\");\n document.body.appendChild(iframeEl);\n const win = iframeEl.contentWindow;\n if (!win) return defaultObj.prototype;\n const untaintedObject = win[key].prototype;\n document.body.removeChild(iframeEl);\n if (!untaintedObject) return defaultPrototype;\n return untaintedBasePrototype[key] = untaintedObject;\n } catch {\n return defaultPrototype;\n }\n}\nconst untaintedAccessorCache = {};\nfunction getUntaintedAccessor(key, instance, accessor) {\n var _a2;\n const cacheKey = `${key}.${String(accessor)}`;\n if (untaintedAccessorCache[cacheKey])\n return untaintedAccessorCache[cacheKey].call(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype(key);\n const untaintedAccessor = (_a2 = Object.getOwnPropertyDescriptor(\n untaintedPrototype,\n accessor\n )) == null ? void 0 : _a2.get;\n if (!untaintedAccessor) return instance[accessor];\n untaintedAccessorCache[cacheKey] = untaintedAccessor;\n return untaintedAccessor.call(instance);\n}\nconst untaintedMethodCache = {};\nfunction getUntaintedMethod(key, instance, method) {\n const cacheKey = `${key}.${String(method)}`;\n if (untaintedMethodCache[cacheKey])\n return untaintedMethodCache[cacheKey].bind(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype(key);\n const untaintedMethod = untaintedPrototype[method];\n if (typeof untaintedMethod !== \"function\") return instance[method];\n untaintedMethodCache[cacheKey] = untaintedMethod;\n return untaintedMethod.bind(instance);\n}\nfunction childNodes(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"childNodes\");\n}\nfunction parentNode(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"parentNode\");\n}\nfunction parentElement(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"parentElement\");\n}\nfunction textContent(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"textContent\");\n}\nfunction contains(n2, other) {\n return getUntaintedMethod(\"Node\", n2, \"contains\")(other);\n}\nfunction getRootNode(n2) {\n return getUntaintedMethod(\"Node\", n2, \"getRootNode\")();\n}\nfunction host(n2) {\n if (!n2 || !(\"host\" in n2)) return null;\n return getUntaintedAccessor(\"ShadowRoot\", n2, \"host\");\n}\nfunction styleSheets(n2) {\n return n2.styleSheets;\n}\nfunction shadowRoot(n2) {\n if (!n2 || !(\"shadowRoot\" in n2)) return null;\n return getUntaintedAccessor(\"Element\", n2, \"shadowRoot\");\n}\nfunction querySelector(n2, selectors) {\n return getUntaintedAccessor(\"Element\", n2, \"querySelector\")(selectors);\n}\nfunction querySelectorAll(n2, selectors) {\n return getUntaintedAccessor(\"Element\", n2, \"querySelectorAll\")(selectors);\n}\nfunction mutationObserverCtor() {\n return getUntaintedPrototype(\"MutationObserver\").constructor;\n}\nconst index = {\n childNodes,\n parentNode,\n parentElement,\n textContent,\n contains,\n getRootNode,\n host,\n styleSheets,\n shadowRoot,\n querySelector,\n querySelectorAll,\n mutationObserver: mutationObserverCtor\n};\nfunction on(type, fn, target = document) {\n const options = { capture: true, passive: true };\n target.addEventListener(type, fn, options);\n return () => target.removeEventListener(type, fn, options);\n}\nconst DEPARTED_MIRROR_ACCESS_WARNING = \"Please stop import mirror directly. Instead of that,\\r\\nnow you can use replayer.getMirror() to access the mirror instance of a replayer,\\r\\nor you can use record.mirror to access the mirror instance during recording.\";\nlet _mirror = {\n map: {},\n getId() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return -1;\n },\n getNode() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return null;\n },\n removeNodeFromMap() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n },\n has() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return false;\n },\n reset() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n }\n};\nif (typeof window !== \"undefined\" && window.Proxy && window.Reflect) {\n _mirror = new Proxy(_mirror, {\n get(target, prop, receiver) {\n if (prop === \"map\") {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n }\n return Reflect.get(target, prop, receiver);\n }\n });\n}\nfunction throttle(func, wait, options = {}) {\n let timeout = null;\n let previous = 0;\n return function(...args) {\n const now = Date.now();\n if (!previous && options.leading === false) {\n previous = now;\n }\n const remaining = wait - (now - previous);\n const context = this;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n func.apply(context, args);\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(() => {\n previous = options.leading === false ? 0 : Date.now();\n timeout = null;\n func.apply(context, args);\n }, remaining);\n }\n };\n}\nfunction hookSetter(target, key, d, isRevoked, win = window) {\n const original = win.Object.getOwnPropertyDescriptor(target, key);\n win.Object.defineProperty(\n target,\n key,\n isRevoked ? d : {\n set(value) {\n setTimeout(() => {\n d.set.call(this, value);\n }, 0);\n if (original && original.set) {\n original.set.call(this, value);\n }\n }\n }\n );\n return () => hookSetter(target, key, original || {}, true);\n}\nfunction patch(source, name, replacement) {\n try {\n if (!(name in source)) {\n return () => {\n };\n }\n const original = source[name];\n const wrapped = replacement(original);\n if (typeof wrapped === \"function\") {\n wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __rrweb_original__: {\n enumerable: false,\n value: original\n }\n });\n }\n source[name] = wrapped;\n return () => {\n source[name] = original;\n };\n } catch {\n return () => {\n };\n }\n}\nlet nowTimestamp = Date.now;\nif (!/* @__PURE__ */ /[1-9][0-9]{12}/.test(Date.now().toString())) {\n nowTimestamp = () => (/* @__PURE__ */ new Date()).getTime();\n}\nfunction getWindowScroll(win) {\n var _a2, _b, _c, _d;\n const doc = win.document;\n return {\n left: doc.scrollingElement ? doc.scrollingElement.scrollLeft : win.pageXOffset !== void 0 ? win.pageXOffset : doc.documentElement.scrollLeft || (doc == null ? void 0 : doc.body) && ((_a2 = index.parentElement(doc.body)) == null ? void 0 : _a2.scrollLeft) || ((_b = doc == null ? void 0 : doc.body) == null ? void 0 : _b.scrollLeft) || 0,\n top: doc.scrollingElement ? doc.scrollingElement.scrollTop : win.pageYOffset !== void 0 ? win.pageYOffset : (doc == null ? void 0 : doc.documentElement.scrollTop) || (doc == null ? void 0 : doc.body) && ((_c = index.parentElement(doc.body)) == null ? void 0 : _c.scrollTop) || ((_d = doc == null ? void 0 : doc.body) == null ? void 0 : _d.scrollTop) || 0\n };\n}\nfunction getWindowHeight() {\n return window.innerHeight || document.documentElement && document.documentElement.clientHeight || document.body && document.body.clientHeight;\n}\nfunction getWindowWidth() {\n return window.innerWidth || document.documentElement && document.documentElement.clientWidth || document.body && document.body.clientWidth;\n}\nfunction closestElementOfNode(node2) {\n if (!node2) {\n return null;\n }\n const el = node2.nodeType === node2.ELEMENT_NODE ? node2 : index.parentElement(node2);\n return el;\n}\nfunction isBlocked(node2, blockClass, blockSelector, checkAncestors) {\n if (!node2) {\n return false;\n }\n const el = closestElementOfNode(node2);\n if (!el) {\n return false;\n }\n try {\n if (typeof blockClass === \"string\") {\n if (el.classList.contains(blockClass)) return true;\n if (checkAncestors && el.closest(\".\" + blockClass) !== null) return true;\n } else {\n if (classMatchesRegex(el, blockClass, checkAncestors)) return true;\n }\n } catch (e2) {\n }\n if (blockSelector) {\n if (el.matches(blockSelector)) return true;\n if (checkAncestors && el.closest(blockSelector) !== null) return true;\n }\n return false;\n}\nfunction isSerialized(n2, mirror2) {\n return mirror2.getId(n2) !== -1;\n}\nfunction isIgnored(n2, mirror2, slimDOMOptions) {\n if (n2.tagName === \"TITLE\" && slimDOMOptions.headTitleMutations) {\n return true;\n }\n return mirror2.getId(n2) === IGNORED_NODE;\n}\nfunction isAncestorRemoved(target, mirror2) {\n if (isShadowRoot(target)) {\n return false;\n }\n const id = mirror2.getId(target);\n if (!mirror2.has(id)) {\n return true;\n }\n const parent = index.parentNode(target);\n if (parent && parent.nodeType === target.DOCUMENT_NODE) {\n return false;\n }\n if (!parent) {\n return true;\n }\n return isAncestorRemoved(parent, mirror2);\n}\nfunction legacy_isTouchEvent(event) {\n return Boolean(event.changedTouches);\n}\nfunction polyfill$1(win = window) {\n if (\"NodeList\" in win && !win.NodeList.prototype.forEach) {\n win.NodeList.prototype.forEach = Array.prototype.forEach;\n }\n if (\"DOMTokenList\" in win && !win.DOMTokenList.prototype.forEach) {\n win.DOMTokenList.prototype.forEach = Array.prototype.forEach;\n }\n}\nfunction isSerializedIframe(n2, mirror2) {\n return Boolean(n2.nodeName === \"IFRAME\" && mirror2.getMeta(n2));\n}\nfunction isSerializedStylesheet(n2, mirror2) {\n return Boolean(\n n2.nodeName === \"LINK\" && n2.nodeType === n2.ELEMENT_NODE && n2.getAttribute && n2.getAttribute(\"rel\") === \"stylesheet\" && mirror2.getMeta(n2)\n );\n}\nfunction hasShadowRoot(n2) {\n if (!n2) return false;\n if (n2 instanceof BaseRRNode && \"shadowRoot\" in n2) {\n return Boolean(n2.shadowRoot);\n }\n return Boolean(index.shadowRoot(n2));\n}\nclass StyleSheetMirror {\n constructor() {\n __publicField(this, \"id\", 1);\n __publicField(this, \"styleIDMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"idStyleMap\", /* @__PURE__ */ new Map());\n }\n getId(stylesheet) {\n return this.styleIDMap.get(stylesheet) ?? -1;\n }\n has(stylesheet) {\n return this.styleIDMap.has(stylesheet);\n }\n /**\n * @returns If the stylesheet is in the mirror, returns the id of the stylesheet. If not, return the new assigned id.\n */\n add(stylesheet, id) {\n if (this.has(stylesheet)) return this.getId(stylesheet);\n let newId;\n if (id === void 0) {\n newId = this.id++;\n } else newId = id;\n this.styleIDMap.set(stylesheet, newId);\n this.idStyleMap.set(newId, stylesheet);\n return newId;\n }\n getStyle(id) {\n return this.idStyleMap.get(id) || null;\n }\n reset() {\n this.styleIDMap = /* @__PURE__ */ new WeakMap();\n this.idStyleMap = /* @__PURE__ */ new Map();\n this.id = 1;\n }\n generateId() {\n return this.id++;\n }\n}\nfunction getShadowHost(n2) {\n var _a2;\n let shadowHost = null;\n if (\"getRootNode\" in n2 && ((_a2 = index.getRootNode(n2)) == null ? void 0 : _a2.nodeType) === Node.DOCUMENT_FRAGMENT_NODE && index.host(index.getRootNode(n2)))\n shadowHost = index.host(index.getRootNode(n2));\n return shadowHost;\n}\nfunction getRootShadowHost(n2) {\n let rootShadowHost = n2;\n let shadowHost;\n while (shadowHost = getShadowHost(rootShadowHost))\n rootShadowHost = shadowHost;\n return rootShadowHost;\n}\nfunction shadowHostInDom(n2) {\n const doc = n2.ownerDocument;\n if (!doc) return false;\n const shadowHost = getRootShadowHost(n2);\n return index.contains(doc, shadowHost);\n}\nfunction inDom(n2) {\n const doc = n2.ownerDocument;\n if (!doc) return false;\n return index.contains(doc, n2) || shadowHostInDom(n2);\n}\nvar EventType = /* @__PURE__ */ ((EventType2) => {\n EventType2[EventType2[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n EventType2[EventType2[\"Load\"] = 1] = \"Load\";\n EventType2[EventType2[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n EventType2[EventType2[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n EventType2[EventType2[\"Meta\"] = 4] = \"Meta\";\n EventType2[EventType2[\"Custom\"] = 5] = \"Custom\";\n EventType2[EventType2[\"Plugin\"] = 6] = \"Plugin\";\n return EventType2;\n})(EventType || {});\nvar IncrementalSource = /* @__PURE__ */ ((IncrementalSource2) => {\n IncrementalSource2[IncrementalSource2[\"Mutation\"] = 0] = \"Mutation\";\n IncrementalSource2[IncrementalSource2[\"MouseMove\"] = 1] = \"MouseMove\";\n IncrementalSource2[IncrementalSource2[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n IncrementalSource2[IncrementalSource2[\"Scroll\"] = 3] = \"Scroll\";\n IncrementalSource2[IncrementalSource2[\"ViewportResize\"] = 4] = \"ViewportResize\";\n IncrementalSource2[IncrementalSource2[\"Input\"] = 5] = \"Input\";\n IncrementalSource2[IncrementalSource2[\"TouchMove\"] = 6] = \"TouchMove\";\n IncrementalSource2[IncrementalSource2[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n IncrementalSource2[IncrementalSource2[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n IncrementalSource2[IncrementalSource2[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n IncrementalSource2[IncrementalSource2[\"Font\"] = 10] = \"Font\";\n IncrementalSource2[IncrementalSource2[\"Log\"] = 11] = \"Log\";\n IncrementalSource2[IncrementalSource2[\"Drag\"] = 12] = \"Drag\";\n IncrementalSource2[IncrementalSource2[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n IncrementalSource2[IncrementalSource2[\"Selection\"] = 14] = \"Selection\";\n IncrementalSource2[IncrementalSource2[\"AdoptedStyleSheet\"] = 15] = \"AdoptedStyleSheet\";\n IncrementalSource2[IncrementalSource2[\"CustomElement\"] = 16] = \"CustomElement\";\n return IncrementalSource2;\n})(IncrementalSource || {});\nvar MouseInteractions = /* @__PURE__ */ ((MouseInteractions2) => {\n MouseInteractions2[MouseInteractions2[\"MouseUp\"] = 0] = \"MouseUp\";\n MouseInteractions2[MouseInteractions2[\"MouseDown\"] = 1] = \"MouseDown\";\n MouseInteractions2[MouseInteractions2[\"Click\"] = 2] = \"Click\";\n MouseInteractions2[MouseInteractions2[\"ContextMenu\"] = 3] = \"ContextMenu\";\n MouseInteractions2[MouseInteractions2[\"DblClick\"] = 4] = \"DblClick\";\n MouseInteractions2[MouseInteractions2[\"Focus\"] = 5] = \"Focus\";\n MouseInteractions2[MouseInteractions2[\"Blur\"] = 6] = \"Blur\";\n MouseInteractions2[MouseInteractions2[\"TouchStart\"] = 7] = \"TouchStart\";\n MouseInteractions2[MouseInteractions2[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n MouseInteractions2[MouseInteractions2[\"TouchEnd\"] = 9] = \"TouchEnd\";\n MouseInteractions2[MouseInteractions2[\"TouchCancel\"] = 10] = \"TouchCancel\";\n return MouseInteractions2;\n})(MouseInteractions || {});\nvar PointerTypes = /* @__PURE__ */ ((PointerTypes2) => {\n PointerTypes2[PointerTypes2[\"Mouse\"] = 0] = \"Mouse\";\n PointerTypes2[PointerTypes2[\"Pen\"] = 1] = \"Pen\";\n PointerTypes2[PointerTypes2[\"Touch\"] = 2] = \"Touch\";\n return PointerTypes2;\n})(PointerTypes || {});\nvar CanvasContext = /* @__PURE__ */ ((CanvasContext2) => {\n CanvasContext2[CanvasContext2[\"2D\"] = 0] = \"2D\";\n CanvasContext2[CanvasContext2[\"WebGL\"] = 1] = \"WebGL\";\n CanvasContext2[CanvasContext2[\"WebGL2\"] = 2] = \"WebGL2\";\n return CanvasContext2;\n})(CanvasContext || {});\nvar MediaInteractions = /* @__PURE__ */ ((MediaInteractions2) => {\n MediaInteractions2[MediaInteractions2[\"Play\"] = 0] = \"Play\";\n MediaInteractions2[MediaInteractions2[\"Pause\"] = 1] = \"Pause\";\n MediaInteractions2[MediaInteractions2[\"Seeked\"] = 2] = \"Seeked\";\n MediaInteractions2[MediaInteractions2[\"VolumeChange\"] = 3] = \"VolumeChange\";\n MediaInteractions2[MediaInteractions2[\"RateChange\"] = 4] = \"RateChange\";\n return MediaInteractions2;\n})(MediaInteractions || {});\nvar NodeType = /* @__PURE__ */ ((NodeType2) => {\n NodeType2[NodeType2[\"Document\"] = 0] = \"Document\";\n NodeType2[NodeType2[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType2[NodeType2[\"Element\"] = 2] = \"Element\";\n NodeType2[NodeType2[\"Text\"] = 3] = \"Text\";\n NodeType2[NodeType2[\"CDATA\"] = 4] = \"CDATA\";\n NodeType2[NodeType2[\"Comment\"] = 5] = \"Comment\";\n return NodeType2;\n})(NodeType || {});\nfunction isNodeInLinkedList(n2) {\n return \"__ln\" in n2;\n}\nclass DoubleLinkedList {\n constructor() {\n __publicField(this, \"length\", 0);\n __publicField(this, \"head\", null);\n __publicField(this, \"tail\", null);\n }\n get(position) {\n if (position >= this.length) {\n throw new Error(\"Position outside of list range\");\n }\n let current = this.head;\n for (let index2 = 0; index2 < position; index2++) {\n current = (current == null ? void 0 : current.next) || null;\n }\n return current;\n }\n addNode(n2) {\n const node2 = {\n value: n2,\n previous: null,\n next: null\n };\n n2.__ln = node2;\n if (n2.previousSibling && isNodeInLinkedList(n2.previousSibling)) {\n const current = n2.previousSibling.__ln.next;\n node2.next = current;\n node2.previous = n2.previousSibling.__ln;\n n2.previousSibling.__ln.next = node2;\n if (current) {\n current.previous = node2;\n }\n } else if (n2.nextSibling && isNodeInLinkedList(n2.nextSibling) && n2.nextSibling.__ln.previous) {\n const current = n2.nextSibling.__ln.previous;\n node2.previous = current;\n node2.next = n2.nextSibling.__ln;\n n2.nextSibling.__ln.previous = node2;\n if (current) {\n current.next = node2;\n }\n } else {\n if (this.head) {\n this.head.previous = node2;\n }\n node2.next = this.head;\n this.head = node2;\n }\n if (node2.next === null) {\n this.tail = node2;\n }\n this.length++;\n }\n removeNode(n2) {\n const current = n2.__ln;\n if (!this.head) {\n return;\n }\n if (!current.previous) {\n this.head = current.next;\n if (this.head) {\n this.head.previous = null;\n } else {\n this.tail = null;\n }\n } else {\n current.previous.next = current.next;\n if (current.next) {\n current.next.previous = current.previous;\n } else {\n this.tail = current.previous;\n }\n }\n if (n2.__ln) {\n delete n2.__ln;\n }\n this.length--;\n }\n}\nconst moveKey = (id, parentId) => `${id}@${parentId}`;\nclass MutationBuffer {\n constructor() {\n __publicField(this, \"frozen\", false);\n __publicField(this, \"locked\", false);\n __publicField(this, \"texts\", []);\n __publicField(this, \"attributes\", []);\n __publicField(this, \"attributeMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"removes\", []);\n __publicField(this, \"mapRemoves\", []);\n __publicField(this, \"movedMap\", {});\n __publicField(this, \"addedSet\", /* @__PURE__ */ new Set());\n __publicField(this, \"movedSet\", /* @__PURE__ */ new Set());\n __publicField(this, \"droppedSet\", /* @__PURE__ */ new Set());\n __publicField(this, \"removesSubTreeCache\", /* @__PURE__ */ new Set());\n __publicField(this, \"mutationCb\");\n __publicField(this, \"blockClass\");\n __publicField(this, \"blockSelector\");\n __publicField(this, \"maskTextClass\");\n __publicField(this, \"maskTextSelector\");\n __publicField(this, \"inlineStylesheet\");\n __publicField(this, \"maskInputOptions\");\n __publicField(this, \"maskTextFn\");\n __publicField(this, \"maskInputFn\");\n __publicField(this, \"keepIframeSrcFn\");\n __publicField(this, \"recordCanvas\");\n __publicField(this, \"inlineImages\");\n __publicField(this, \"slimDOMOptions\");\n __publicField(this, \"dataURLOptions\");\n __publicField(this, \"doc\");\n __publicField(this, \"mirror\");\n __publicField(this, \"iframeManager\");\n __publicField(this, \"stylesheetManager\");\n __publicField(this, \"shadowDomManager\");\n __publicField(this, \"canvasManager\");\n __publicField(this, \"processedNodeManager\");\n __publicField(this, \"unattachedDoc\");\n __publicField(this, \"processMutations\", (mutations) => {\n mutations.forEach(this.processMutation);\n this.emit();\n });\n __publicField(this, \"emit\", () => {\n if (this.frozen || this.locked) {\n return;\n }\n const adds = [];\n const addedIds = /* @__PURE__ */ new Set();\n const addList = new DoubleLinkedList();\n const getNextId = (n2) => {\n let ns = n2;\n let nextId = IGNORED_NODE;\n while (nextId === IGNORED_NODE) {\n ns = ns && ns.nextSibling;\n nextId = ns && this.mirror.getId(ns);\n }\n return nextId;\n };\n const pushAdd = (n2) => {\n const parent = index.parentNode(n2);\n if (!parent || !inDom(n2)) {\n return;\n }\n let cssCaptured = false;\n if (n2.nodeType === Node.TEXT_NODE) {\n const parentTag = parent.tagName;\n if (parentTag === \"TEXTAREA\") {\n return;\n } else if (parentTag === \"STYLE\" && this.addedSet.has(parent)) {\n cssCaptured = true;\n }\n }\n const parentId = isShadowRoot(parent) ? this.mirror.getId(getShadowHost(n2)) : this.mirror.getId(parent);\n const nextId = getNextId(n2);\n if (parentId === -1 || nextId === -1) {\n return addList.addNode(n2);\n }\n const sn = serializeNodeWithId(n2, {\n doc: this.doc,\n mirror: this.mirror,\n blockClass: this.blockClass,\n blockSelector: this.blockSelector,\n maskTextClass: this.maskTextClass,\n maskTextSelector: this.maskTextSelector,\n skipChild: true,\n newlyAddedElement: true,\n inlineStylesheet: this.inlineStylesheet,\n maskInputOptions: this.maskInputOptions,\n maskTextFn: this.maskTextFn,\n maskInputFn: this.maskInputFn,\n slimDOMOptions: this.slimDOMOptions,\n dataURLOptions: this.dataURLOptions,\n recordCanvas: this.recordCanvas,\n inlineImages: this.inlineImages,\n onSerialize: (currentN) => {\n if (isSerializedIframe(currentN, this.mirror)) {\n this.iframeManager.addIframe(currentN);\n }\n if (isSerializedStylesheet(currentN, this.mirror)) {\n this.stylesheetManager.trackLinkElement(\n currentN\n );\n }\n if (hasShadowRoot(n2)) {\n this.shadowDomManager.addShadowRoot(index.shadowRoot(n2), this.doc);\n }\n },\n onIframeLoad: (iframe, childSn) => {\n this.iframeManager.attachIframe(iframe, childSn);\n this.shadowDomManager.observeAttachShadow(iframe);\n },\n onStylesheetLoad: (link, childSn) => {\n this.stylesheetManager.attachLinkElement(link, childSn);\n },\n cssCaptured\n });\n if (sn) {\n adds.push({\n parentId,\n nextId,\n node: sn\n });\n addedIds.add(sn.id);\n }\n };\n while (this.mapRemoves.length) {\n this.mirror.removeNodeFromMap(this.mapRemoves.shift());\n }\n for (const n2 of this.movedSet) {\n if (isParentRemoved(this.removesSubTreeCache, n2, this.mirror) && !this.movedSet.has(index.parentNode(n2))) {\n continue;\n }\n pushAdd(n2);\n }\n for (const n2 of this.addedSet) {\n if (!isAncestorInSet(this.droppedSet, n2) && !isParentRemoved(this.removesSubTreeCache, n2, this.mirror)) {\n pushAdd(n2);\n } else if (isAncestorInSet(this.movedSet, n2)) {\n pushAdd(n2);\n } else {\n this.droppedSet.add(n2);\n }\n }\n let candidate = null;\n while (addList.length) {\n let node2 = null;\n if (candidate) {\n const parentId = this.mirror.getId(index.parentNode(candidate.value));\n const nextId = getNextId(candidate.value);\n if (parentId !== -1 && nextId !== -1) {\n node2 = candidate;\n }\n }\n if (!node2) {\n let tailNode = addList.tail;\n while (tailNode) {\n const _node = tailNode;\n tailNode = tailNode.previous;\n if (_node) {\n const parentId = this.mirror.getId(index.parentNode(_node.value));\n const nextId = getNextId(_node.value);\n if (nextId === -1) continue;\n else if (parentId !== -1) {\n node2 = _node;\n break;\n } else {\n const unhandledNode = _node.value;\n const parent = index.parentNode(unhandledNode);\n if (parent && parent.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n const shadowHost = index.host(parent);\n const parentId2 = this.mirror.getId(shadowHost);\n if (parentId2 !== -1) {\n node2 = _node;\n break;\n }\n }\n }\n }\n }\n }\n if (!node2) {\n while (addList.head) {\n addList.removeNode(addList.head.value);\n }\n break;\n }\n candidate = node2.previous;\n addList.removeNode(node2.value);\n pushAdd(node2.value);\n }\n const payload = {\n texts: this.texts.map((text) => {\n const n2 = text.node;\n const parent = index.parentNode(n2);\n if (parent && parent.tagName === \"TEXTAREA\") {\n this.genTextAreaValueMutation(parent);\n }\n return {\n id: this.mirror.getId(n2),\n value: text.value\n };\n }).filter((text) => !addedIds.has(text.id)).filter((text) => this.mirror.has(text.id)),\n attributes: this.attributes.map((attribute) => {\n const { attributes } = attribute;\n if (typeof attributes.style === \"string\") {\n const diffAsStr = JSON.stringify(attribute.styleDiff);\n const unchangedAsStr = JSON.stringify(attribute._unchangedStyles);\n if (diffAsStr.length < attributes.style.length) {\n if ((diffAsStr + unchangedAsStr).split(\"var(\").length === attributes.style.split(\"var(\").length) {\n attributes.style = attribute.styleDiff;\n }\n }\n }\n return {\n id: this.mirror.getId(attribute.node),\n attributes\n };\n }).filter((attribute) => !addedIds.has(attribute.id)).filter((attribute) => this.mirror.has(attribute.id)),\n removes: this.removes,\n adds\n };\n if (!payload.texts.length && !payload.attributes.length && !payload.removes.length && !payload.adds.length) {\n return;\n }\n this.texts = [];\n this.attributes = [];\n this.attributeMap = /* @__PURE__ */ new WeakMap();\n this.removes = [];\n this.addedSet = /* @__PURE__ */ new Set();\n this.movedSet = /* @__PURE__ */ new Set();\n this.droppedSet = /* @__PURE__ */ new Set();\n this.removesSubTreeCache = /* @__PURE__ */ new Set();\n this.movedMap = {};\n this.mutationCb(payload);\n });\n __publicField(this, \"genTextAreaValueMutation\", (textarea) => {\n let item = this.attributeMap.get(textarea);\n if (!item) {\n item = {\n node: textarea,\n attributes: {},\n styleDiff: {},\n _unchangedStyles: {}\n };\n this.attributes.push(item);\n this.attributeMap.set(textarea, item);\n }\n item.attributes.value = Array.from(\n index.childNodes(textarea),\n (cn) => index.textContent(cn) || \"\"\n ).join(\"\");\n });\n __publicField(this, \"processMutation\", (m) => {\n if (isIgnored(m.target, this.mirror, this.slimDOMOptions)) {\n return;\n }\n switch (m.type) {\n case \"characterData\": {\n const value = index.textContent(m.target);\n if (!isBlocked(m.target, this.blockClass, this.blockSelector, false) && value !== m.oldValue) {\n this.texts.push({\n value: needMaskingText(\n m.target,\n this.maskTextClass,\n this.maskTextSelector,\n true\n // checkAncestors\n ) && value ? this.maskTextFn ? this.maskTextFn(value, closestElementOfNode(m.target)) : value.replace(/[\\S]/g, \"*\") : value,\n node: m.target\n });\n }\n break;\n }\n case \"attributes\": {\n const target = m.target;\n let attributeName = m.attributeName;\n let value = m.target.getAttribute(attributeName);\n if (attributeName === \"value\") {\n const type = getInputType(target);\n value = maskInputValue({\n element: target,\n maskInputOptions: this.maskInputOptions,\n tagName: target.tagName,\n type,\n value,\n maskInputFn: this.maskInputFn\n });\n }\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) || value === m.oldValue) {\n return;\n }\n let item = this.attributeMap.get(m.target);\n if (target.tagName === \"IFRAME\" && attributeName === \"src\" && !this.keepIframeSrcFn(value)) {\n if (!target.contentDocument) {\n attributeName = \"rr_src\";\n } else {\n return;\n }\n }\n if (!item) {\n item = {\n node: m.target,\n attributes: {},\n styleDiff: {},\n _unchangedStyles: {}\n };\n this.attributes.push(item);\n this.attributeMap.set(m.target, item);\n }\n if (attributeName === \"type\" && target.tagName === \"INPUT\" && (m.oldValue || \"\").toLowerCase() === \"password\") {\n target.setAttribute(\"data-rr-is-password\", \"true\");\n }\n if (!ignoreAttribute(target.tagName, attributeName)) {\n item.attributes[attributeName] = transformAttribute(\n this.doc,\n toLowerCase(target.tagName),\n toLowerCase(attributeName),\n value\n );\n if (attributeName === \"style\") {\n if (!this.unattachedDoc) {\n try {\n this.unattachedDoc = document.implementation.createHTMLDocument();\n } catch (e2) {\n this.unattachedDoc = this.doc;\n }\n }\n const old = this.unattachedDoc.createElement(\"span\");\n if (m.oldValue) {\n old.setAttribute(\"style\", m.oldValue);\n }\n for (const pname of Array.from(target.style)) {\n const newValue = target.style.getPropertyValue(pname);\n const newPriority = target.style.getPropertyPriority(pname);\n if (newValue !== old.style.getPropertyValue(pname) || newPriority !== old.style.getPropertyPriority(pname)) {\n if (newPriority === \"\") {\n item.styleDiff[pname] = newValue;\n } else {\n item.styleDiff[pname] = [newValue, newPriority];\n }\n } else {\n item._unchangedStyles[pname] = [newValue, newPriority];\n }\n }\n for (const pname of Array.from(old.style)) {\n if (target.style.getPropertyValue(pname) === \"\") {\n item.styleDiff[pname] = false;\n }\n }\n } else if (attributeName === \"open\" && target.tagName === \"DIALOG\") {\n if (target.matches(\"dialog:modal\")) {\n item.attributes[\"rr_open_mode\"] = \"modal\";\n } else {\n item.attributes[\"rr_open_mode\"] = \"non-modal\";\n }\n }\n }\n break;\n }\n case \"childList\": {\n if (isBlocked(m.target, this.blockClass, this.blockSelector, true))\n return;\n if (m.target.tagName === \"TEXTAREA\") {\n this.genTextAreaValueMutation(m.target);\n return;\n }\n m.addedNodes.forEach((n2) => this.genAdds(n2, m.target));\n m.removedNodes.forEach((n2) => {\n const nodeId = this.mirror.getId(n2);\n const parentId = isShadowRoot(m.target) ? this.mirror.getId(index.host(m.target)) : this.mirror.getId(m.target);\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) || isIgnored(n2, this.mirror, this.slimDOMOptions) || !isSerialized(n2, this.mirror)) {\n return;\n }\n if (this.addedSet.has(n2)) {\n deepDelete(this.addedSet, n2);\n this.droppedSet.add(n2);\n } else if (this.addedSet.has(m.target) && nodeId === -1) ;\n else if (isAncestorRemoved(m.target, this.mirror)) ;\n else if (this.movedSet.has(n2) && this.movedMap[moveKey(nodeId, parentId)]) {\n deepDelete(this.movedSet, n2);\n } else {\n this.removes.push({\n parentId,\n id: nodeId,\n isShadow: isShadowRoot(m.target) && isNativeShadowDom(m.target) ? true : void 0\n });\n processRemoves(n2, this.removesSubTreeCache);\n }\n this.mapRemoves.push(n2);\n });\n break;\n }\n }\n });\n __publicField(this, \"genAdds\", (n2, target) => {\n if (this.processedNodeManager.inOtherBuffer(n2, this)) return;\n if (this.addedSet.has(n2) || this.movedSet.has(n2)) return;\n if (this.mirror.hasNode(n2)) {\n if (isIgnored(n2, this.mirror, this.slimDOMOptions)) {\n return;\n }\n this.movedSet.add(n2);\n let targetId = null;\n if (target && this.mirror.hasNode(target)) {\n targetId = this.mirror.getId(target);\n }\n if (targetId && targetId !== -1) {\n this.movedMap[moveKey(this.mirror.getId(n2), targetId)] = true;\n }\n } else {\n this.addedSet.add(n2);\n this.droppedSet.delete(n2);\n }\n if (!isBlocked(n2, this.blockClass, this.blockSelector, false)) {\n index.childNodes(n2).forEach((childN) => this.genAdds(childN));\n if (hasShadowRoot(n2)) {\n index.childNodes(index.shadowRoot(n2)).forEach((childN) => {\n this.processedNodeManager.add(childN, this);\n this.genAdds(childN, n2);\n });\n }\n }\n });\n }\n init(options) {\n [\n \"mutationCb\",\n \"blockClass\",\n \"blockSelector\",\n \"maskTextClass\",\n \"maskTextSelector\",\n \"inlineStylesheet\",\n \"maskInputOptions\",\n \"maskTextFn\",\n \"maskInputFn\",\n \"keepIframeSrcFn\",\n \"recordCanvas\",\n \"inlineImages\",\n \"slimDOMOptions\",\n \"dataURLOptions\",\n \"doc\",\n \"mirror\",\n \"iframeManager\",\n \"stylesheetManager\",\n \"shadowDomManager\",\n \"canvasManager\",\n \"processedNodeManager\"\n ].forEach((key) => {\n this[key] = options[key];\n });\n }\n freeze() {\n this.frozen = true;\n this.canvasManager.freeze();\n }\n unfreeze() {\n this.frozen = false;\n this.canvasManager.unfreeze();\n this.emit();\n }\n isFrozen() {\n return this.frozen;\n }\n lock() {\n this.locked = true;\n this.canvasManager.lock();\n }\n unlock() {\n this.locked = false;\n this.canvasManager.unlock();\n this.emit();\n }\n reset() {\n this.shadowDomManager.reset();\n this.canvasManager.reset();\n }\n}\nfunction deepDelete(addsSet, n2) {\n addsSet.delete(n2);\n index.childNodes(n2).forEach((childN) => deepDelete(addsSet, childN));\n}\nfunction processRemoves(n2, cache) {\n const queue = [n2];\n while (queue.length) {\n const next = queue.pop();\n if (cache.has(next)) continue;\n cache.add(next);\n index.childNodes(next).forEach((n22) => queue.push(n22));\n }\n return;\n}\nfunction isParentRemoved(removes, n2, mirror2) {\n if (removes.size === 0) return false;\n return _isParentRemoved(removes, n2);\n}\nfunction _isParentRemoved(removes, n2, _mirror2) {\n const node2 = index.parentNode(n2);\n if (!node2) return false;\n return removes.has(node2);\n}\nfunction isAncestorInSet(set, n2) {\n if (set.size === 0) return false;\n return _isAncestorInSet(set, n2);\n}\nfunction _isAncestorInSet(set, n2) {\n const parent = index.parentNode(n2);\n if (!parent) {\n return false;\n }\n if (set.has(parent)) {\n return true;\n }\n return _isAncestorInSet(set, parent);\n}\nlet errorHandler;\nfunction registerErrorHandler(handler) {\n errorHandler = handler;\n}\nfunction unregisterErrorHandler() {\n errorHandler = void 0;\n}\nconst callbackWrapper = (cb) => {\n if (!errorHandler) {\n return cb;\n }\n const rrwebWrapped = (...rest) => {\n try {\n return cb(...rest);\n } catch (error) {\n if (errorHandler && errorHandler(error) === true) {\n return;\n }\n throw error;\n }\n };\n return rrwebWrapped;\n};\nconst mutationBuffers = [];\nfunction getEventTarget(event) {\n try {\n if (\"composedPath\" in event) {\n const path = event.composedPath();\n if (path.length) {\n return path[0];\n }\n } else if (\"path\" in event && event.path.length) {\n return event.path[0];\n }\n } catch {\n }\n return event && event.target;\n}\nfunction initMutationObserver(options, rootEl) {\n const mutationBuffer = new MutationBuffer();\n mutationBuffers.push(mutationBuffer);\n mutationBuffer.init(options);\n const observer = new (mutationObserverCtor())(\n callbackWrapper(mutationBuffer.processMutations.bind(mutationBuffer))\n );\n observer.observe(rootEl, {\n attributes: true,\n attributeOldValue: true,\n characterData: true,\n characterDataOldValue: true,\n childList: true,\n subtree: true\n });\n return observer;\n}\nfunction initMoveObserver({\n mousemoveCb,\n sampling,\n doc,\n mirror: mirror2\n}) {\n if (sampling.mousemove === false) {\n return () => {\n };\n }\n const threshold = typeof sampling.mousemove === \"number\" ? sampling.mousemove : 50;\n const callbackThreshold = typeof sampling.mousemoveCallback === \"number\" ? sampling.mousemoveCallback : 500;\n let positions = [];\n let timeBaseline;\n const wrappedCb = throttle(\n callbackWrapper(\n (source) => {\n const totalOffset = Date.now() - timeBaseline;\n mousemoveCb(\n positions.map((p) => {\n p.timeOffset -= totalOffset;\n return p;\n }),\n source\n );\n positions = [];\n timeBaseline = null;\n }\n ),\n callbackThreshold\n );\n const updatePosition = callbackWrapper(\n throttle(\n callbackWrapper((evt) => {\n const target = getEventTarget(evt);\n const { clientX, clientY } = legacy_isTouchEvent(evt) ? evt.changedTouches[0] : evt;\n if (!timeBaseline) {\n timeBaseline = nowTimestamp();\n }\n positions.push({\n x: clientX,\n y: clientY,\n id: mirror2.getId(target),\n timeOffset: nowTimestamp() - timeBaseline\n });\n wrappedCb(\n typeof DragEvent !== \"undefined\" && evt instanceof DragEvent ? IncrementalSource.Drag : evt instanceof MouseEvent ? IncrementalSource.MouseMove : IncrementalSource.TouchMove\n );\n }),\n threshold,\n {\n trailing: false\n }\n )\n );\n const handlers = [\n on(\"mousemove\", updatePosition, doc),\n on(\"touchmove\", updatePosition, doc),\n on(\"drag\", updatePosition, doc)\n ];\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initMouseInteractionObserver({\n mouseInteractionCb,\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n sampling\n}) {\n if (sampling.mouseInteraction === false) {\n return () => {\n };\n }\n const disableMap = sampling.mouseInteraction === true || sampling.mouseInteraction === void 0 ? {} : sampling.mouseInteraction;\n const handlers = [];\n let currentPointerType = null;\n const getHandler = (eventKey) => {\n return (event) => {\n const target = getEventTarget(event);\n if (isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n let pointerType = null;\n let thisEventKey = eventKey;\n if (\"pointerType\" in event) {\n switch (event.pointerType) {\n case \"mouse\":\n pointerType = PointerTypes.Mouse;\n break;\n case \"touch\":\n pointerType = PointerTypes.Touch;\n break;\n case \"pen\":\n pointerType = PointerTypes.Pen;\n break;\n }\n if (pointerType === PointerTypes.Touch) {\n if (MouseInteractions[eventKey] === MouseInteractions.MouseDown) {\n thisEventKey = \"TouchStart\";\n } else if (MouseInteractions[eventKey] === MouseInteractions.MouseUp) {\n thisEventKey = \"TouchEnd\";\n }\n } else if (pointerType === PointerTypes.Pen) ;\n } else if (legacy_isTouchEvent(event)) {\n pointerType = PointerTypes.Touch;\n }\n if (pointerType !== null) {\n currentPointerType = pointerType;\n if (thisEventKey.startsWith(\"Touch\") && pointerType === PointerTypes.Touch || thisEventKey.startsWith(\"Mouse\") && pointerType === PointerTypes.Mouse) {\n pointerType = null;\n }\n } else if (MouseInteractions[eventKey] === MouseInteractions.Click) {\n pointerType = currentPointerType;\n currentPointerType = null;\n }\n const e2 = legacy_isTouchEvent(event) ? event.changedTouches[0] : event;\n if (!e2) {\n return;\n }\n const id = mirror2.getId(target);\n const { clientX, clientY } = e2;\n callbackWrapper(mouseInteractionCb)({\n type: MouseInteractions[thisEventKey],\n id,\n x: clientX,\n y: clientY,\n ...pointerType !== null && { pointerType }\n });\n };\n };\n Object.keys(MouseInteractions).filter(\n (key) => Number.isNaN(Number(key)) && !key.endsWith(\"_Departed\") && disableMap[key] !== false\n ).forEach((eventKey) => {\n let eventName = toLowerCase(eventKey);\n const handler = getHandler(eventKey);\n if (window.PointerEvent) {\n switch (MouseInteractions[eventKey]) {\n case MouseInteractions.MouseDown:\n case MouseInteractions.MouseUp:\n eventName = eventName.replace(\n \"mouse\",\n \"pointer\"\n );\n break;\n case MouseInteractions.TouchStart:\n case MouseInteractions.TouchEnd:\n return;\n }\n }\n handlers.push(on(eventName, handler, doc));\n });\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initScrollObserver({\n scrollCb,\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n sampling\n}) {\n const updatePosition = callbackWrapper(\n throttle(\n callbackWrapper((evt) => {\n const target = getEventTarget(evt);\n if (!target || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n const id = mirror2.getId(target);\n if (target === doc && doc.defaultView) {\n const scrollLeftTop = getWindowScroll(doc.defaultView);\n scrollCb({\n id,\n x: scrollLeftTop.left,\n y: scrollLeftTop.top\n });\n } else {\n scrollCb({\n id,\n x: target.scrollLeft,\n y: target.scrollTop\n });\n }\n }),\n sampling.scroll || 100\n )\n );\n return on(\"scroll\", updatePosition, doc);\n}\nfunction initViewportResizeObserver({ viewportResizeCb }, { win }) {\n let lastH = -1;\n let lastW = -1;\n const updateDimension = callbackWrapper(\n throttle(\n callbackWrapper(() => {\n const height = getWindowHeight();\n const width = getWindowWidth();\n if (lastH !== height || lastW !== width) {\n viewportResizeCb({\n width: Number(width),\n height: Number(height)\n });\n lastH = height;\n lastW = width;\n }\n }),\n 200\n )\n );\n return on(\"resize\", updateDimension, win);\n}\nconst INPUT_TAGS = [\"INPUT\", \"TEXTAREA\", \"SELECT\"];\nconst lastInputValueMap = /* @__PURE__ */ new WeakMap();\nfunction initInputObserver({\n inputCb,\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n ignoreClass,\n ignoreSelector,\n maskInputOptions,\n maskInputFn,\n sampling,\n userTriggeredOnInput\n}) {\n function eventHandler(event) {\n let target = getEventTarget(event);\n const userTriggered = event.isTrusted;\n const tagName = target && target.tagName;\n if (target && tagName === \"OPTION\") {\n target = index.parentElement(target);\n }\n if (!target || !tagName || INPUT_TAGS.indexOf(tagName) < 0 || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n if (target.classList.contains(ignoreClass) || ignoreSelector && target.matches(ignoreSelector)) {\n return;\n }\n let text = target.value;\n let isChecked = false;\n const type = getInputType(target) || \"\";\n if (type === \"radio\" || type === \"checkbox\") {\n isChecked = target.checked;\n } else if (maskInputOptions[tagName.toLowerCase()] || maskInputOptions[type]) {\n text = maskInputValue({\n element: target,\n maskInputOptions,\n tagName,\n type,\n value: text,\n maskInputFn\n });\n }\n cbWithDedup(\n target,\n userTriggeredOnInput ? { text, isChecked, userTriggered } : { text, isChecked }\n );\n const name = target.name;\n if (type === \"radio\" && name && isChecked) {\n doc.querySelectorAll(`input[type=\"radio\"][name=\"${name}\"]`).forEach((el) => {\n if (el !== target) {\n const text2 = el.value;\n cbWithDedup(\n el,\n userTriggeredOnInput ? { text: text2, isChecked: !isChecked, userTriggered: false } : { text: text2, isChecked: !isChecked }\n );\n }\n });\n }\n }\n function cbWithDedup(target, v2) {\n const lastInputValue = lastInputValueMap.get(target);\n if (!lastInputValue || lastInputValue.text !== v2.text || lastInputValue.isChecked !== v2.isChecked) {\n lastInputValueMap.set(target, v2);\n const id = mirror2.getId(target);\n callbackWrapper(inputCb)({\n ...v2,\n id\n });\n }\n }\n const events = sampling.input === \"last\" ? [\"change\"] : [\"input\", \"change\"];\n const handlers = events.map(\n (eventName) => on(eventName, callbackWrapper(eventHandler), doc)\n );\n const currentWindow = doc.defaultView;\n if (!currentWindow) {\n return () => {\n handlers.forEach((h) => h());\n };\n }\n const propertyDescriptor = currentWindow.Object.getOwnPropertyDescriptor(\n currentWindow.HTMLInputElement.prototype,\n \"value\"\n );\n const hookProperties = [\n [currentWindow.HTMLInputElement.prototype, \"value\"],\n [currentWindow.HTMLInputElement.prototype, \"checked\"],\n [currentWindow.HTMLSelectElement.prototype, \"value\"],\n [currentWindow.HTMLTextAreaElement.prototype, \"value\"],\n // Some UI library use selectedIndex to set select value\n [currentWindow.HTMLSelectElement.prototype, \"selectedIndex\"],\n [currentWindow.HTMLOptionElement.prototype, \"selected\"]\n ];\n if (propertyDescriptor && propertyDescriptor.set) {\n handlers.push(\n ...hookProperties.map(\n (p) => hookSetter(\n p[0],\n p[1],\n {\n set() {\n callbackWrapper(eventHandler)({\n target: this,\n isTrusted: false\n // userTriggered to false as this could well be programmatic\n });\n }\n },\n false,\n currentWindow\n )\n )\n );\n }\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction getNestedCSSRulePositions(rule2) {\n const positions = [];\n function recurse(childRule, pos) {\n if (hasNestedCSSRule(\"CSSGroupingRule\") && childRule.parentRule instanceof CSSGroupingRule || hasNestedCSSRule(\"CSSMediaRule\") && childRule.parentRule instanceof CSSMediaRule || hasNestedCSSRule(\"CSSSupportsRule\") && childRule.parentRule instanceof CSSSupportsRule || hasNestedCSSRule(\"CSSConditionRule\") && childRule.parentRule instanceof CSSConditionRule) {\n const rules2 = Array.from(\n childRule.parentRule.cssRules\n );\n const index2 = rules2.indexOf(childRule);\n pos.unshift(index2);\n } else if (childRule.parentStyleSheet) {\n const rules2 = Array.from(childRule.parentStyleSheet.cssRules);\n const index2 = rules2.indexOf(childRule);\n pos.unshift(index2);\n }\n return pos;\n }\n return recurse(rule2, positions);\n}\nfunction getIdAndStyleId(sheet, mirror2, styleMirror) {\n let id, styleId;\n if (!sheet) return {};\n if (sheet.ownerNode) id = mirror2.getId(sheet.ownerNode);\n else styleId = styleMirror.getId(sheet);\n return {\n styleId,\n id\n };\n}\nfunction initStyleSheetObserver({ styleSheetRuleCb, mirror: mirror2, stylesheetManager }, { win }) {\n if (!win.CSSStyleSheet || !win.CSSStyleSheet.prototype) {\n return () => {\n };\n }\n const insertRule = win.CSSStyleSheet.prototype.insertRule;\n win.CSSStyleSheet.prototype.insertRule = new Proxy(insertRule, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [rule2, index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n adds: [{ rule: rule2, index: index2 }]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n win.CSSStyleSheet.prototype.addRule = function(selector, styleBlock, index2 = this.cssRules.length) {\n const rule2 = `${selector} { ${styleBlock} }`;\n return win.CSSStyleSheet.prototype.insertRule.apply(this, [rule2, index2]);\n };\n const deleteRule = win.CSSStyleSheet.prototype.deleteRule;\n win.CSSStyleSheet.prototype.deleteRule = new Proxy(deleteRule, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n removes: [{ index: index2 }]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n win.CSSStyleSheet.prototype.removeRule = function(index2) {\n return win.CSSStyleSheet.prototype.deleteRule.apply(this, [index2]);\n };\n let replace;\n if (win.CSSStyleSheet.prototype.replace) {\n replace = win.CSSStyleSheet.prototype.replace;\n win.CSSStyleSheet.prototype.replace = new Proxy(replace, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [text] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n replace: text\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n }\n let replaceSync;\n if (win.CSSStyleSheet.prototype.replaceSync) {\n replaceSync = win.CSSStyleSheet.prototype.replaceSync;\n win.CSSStyleSheet.prototype.replaceSync = new Proxy(replaceSync, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [text] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n replaceSync: text\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n }\n const supportedNestedCSSRuleTypes = {};\n if (canMonkeyPatchNestedCSSRule(\"CSSGroupingRule\")) {\n supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\n } else {\n if (canMonkeyPatchNestedCSSRule(\"CSSMediaRule\")) {\n supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\n }\n if (canMonkeyPatchNestedCSSRule(\"CSSConditionRule\")) {\n supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\n }\n if (canMonkeyPatchNestedCSSRule(\"CSSSupportsRule\")) {\n supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\n }\n }\n const unmodifiedFunctions = {};\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n unmodifiedFunctions[typeKey] = {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n insertRule: type.prototype.insertRule,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n deleteRule: type.prototype.deleteRule\n };\n type.prototype.insertRule = new Proxy(\n unmodifiedFunctions[typeKey].insertRule,\n {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [rule2, index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n adds: [\n {\n rule: rule2,\n index: [\n ...getNestedCSSRulePositions(thisArg),\n index2 || 0\n // defaults to 0\n ]\n }\n ]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n }\n );\n type.prototype.deleteRule = new Proxy(\n unmodifiedFunctions[typeKey].deleteRule,\n {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n removes: [\n { index: [...getNestedCSSRulePositions(thisArg), index2] }\n ]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n }\n );\n });\n return callbackWrapper(() => {\n win.CSSStyleSheet.prototype.insertRule = insertRule;\n win.CSSStyleSheet.prototype.deleteRule = deleteRule;\n replace && (win.CSSStyleSheet.prototype.replace = replace);\n replaceSync && (win.CSSStyleSheet.prototype.replaceSync = replaceSync);\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\n type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\n });\n });\n}\nfunction initAdoptedStyleSheetObserver({\n mirror: mirror2,\n stylesheetManager\n}, host2) {\n var _a2, _b, _c;\n let hostId = null;\n if (host2.nodeName === \"#document\") hostId = mirror2.getId(host2);\n else hostId = mirror2.getId(index.host(host2));\n const patchTarget = host2.nodeName === \"#document\" ? (_a2 = host2.defaultView) == null ? void 0 : _a2.Document : (_c = (_b = host2.ownerDocument) == null ? void 0 : _b.defaultView) == null ? void 0 : _c.ShadowRoot;\n const originalPropertyDescriptor = (patchTarget == null ? void 0 : patchTarget.prototype) ? Object.getOwnPropertyDescriptor(\n patchTarget == null ? void 0 : patchTarget.prototype,\n \"adoptedStyleSheets\"\n ) : void 0;\n if (hostId === null || hostId === -1 || !patchTarget || !originalPropertyDescriptor)\n return () => {\n };\n Object.defineProperty(host2, \"adoptedStyleSheets\", {\n configurable: originalPropertyDescriptor.configurable,\n enumerable: originalPropertyDescriptor.enumerable,\n get() {\n var _a3;\n return (_a3 = originalPropertyDescriptor.get) == null ? void 0 : _a3.call(this);\n },\n set(sheets) {\n var _a3;\n const result2 = (_a3 = originalPropertyDescriptor.set) == null ? void 0 : _a3.call(this, sheets);\n if (hostId !== null && hostId !== -1) {\n try {\n stylesheetManager.adoptStyleSheets(sheets, hostId);\n } catch (e2) {\n }\n }\n return result2;\n }\n });\n return callbackWrapper(() => {\n Object.defineProperty(host2, \"adoptedStyleSheets\", {\n configurable: originalPropertyDescriptor.configurable,\n enumerable: originalPropertyDescriptor.enumerable,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n get: originalPropertyDescriptor.get,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n set: originalPropertyDescriptor.set\n });\n });\n}\nfunction initStyleDeclarationObserver({\n styleDeclarationCb,\n mirror: mirror2,\n ignoreCSSAttributes,\n stylesheetManager\n}, { win }) {\n const setProperty = win.CSSStyleDeclaration.prototype.setProperty;\n win.CSSStyleDeclaration.prototype.setProperty = new Proxy(setProperty, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n var _a2;\n const [property, value, priority] = argumentsList;\n if (ignoreCSSAttributes.has(property)) {\n return setProperty.apply(thisArg, [property, value, priority]);\n }\n const { id, styleId } = getIdAndStyleId(\n (_a2 = thisArg.parentRule) == null ? void 0 : _a2.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleDeclarationCb({\n id,\n styleId,\n set: {\n property,\n value,\n priority\n },\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n index: getNestedCSSRulePositions(thisArg.parentRule)\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n const removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = new Proxy(removeProperty, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n var _a2;\n const [property] = argumentsList;\n if (ignoreCSSAttributes.has(property)) {\n return removeProperty.apply(thisArg, [property]);\n }\n const { id, styleId } = getIdAndStyleId(\n (_a2 = thisArg.parentRule) == null ? void 0 : _a2.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleDeclarationCb({\n id,\n styleId,\n remove: {\n property\n },\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n index: getNestedCSSRulePositions(thisArg.parentRule)\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n return callbackWrapper(() => {\n win.CSSStyleDeclaration.prototype.setProperty = setProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\n });\n}\nfunction initMediaInteractionObserver({\n mediaInteractionCb,\n blockClass,\n blockSelector,\n mirror: mirror2,\n sampling,\n doc\n}) {\n const handler = callbackWrapper(\n (type) => throttle(\n callbackWrapper((event) => {\n const target = getEventTarget(event);\n if (!target || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n const { currentTime, volume, muted, playbackRate, loop } = target;\n mediaInteractionCb({\n type,\n id: mirror2.getId(target),\n currentTime,\n volume,\n muted,\n playbackRate,\n loop\n });\n }),\n sampling.media || 500\n )\n );\n const handlers = [\n on(\"play\", handler(MediaInteractions.Play), doc),\n on(\"pause\", handler(MediaInteractions.Pause), doc),\n on(\"seeked\", handler(MediaInteractions.Seeked), doc),\n on(\"volumechange\", handler(MediaInteractions.VolumeChange), doc),\n on(\"ratechange\", handler(MediaInteractions.RateChange), doc)\n ];\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initFontObserver({ fontCb, doc }) {\n const win = doc.defaultView;\n if (!win) {\n return () => {\n };\n }\n const handlers = [];\n const fontMap = /* @__PURE__ */ new WeakMap();\n const originalFontFace = win.FontFace;\n win.FontFace = function FontFace2(family, source, descriptors) {\n const fontFace = new originalFontFace(family, source, descriptors);\n fontMap.set(fontFace, {\n family,\n buffer: typeof source !== \"string\",\n descriptors,\n fontSource: typeof source === \"string\" ? source : JSON.stringify(Array.from(new Uint8Array(source)))\n });\n return fontFace;\n };\n const restoreHandler = patch(\n doc.fonts,\n \"add\",\n function(original) {\n return function(fontFace) {\n setTimeout(\n callbackWrapper(() => {\n const p = fontMap.get(fontFace);\n if (p) {\n fontCb(p);\n fontMap.delete(fontFace);\n }\n }),\n 0\n );\n return original.apply(this, [fontFace]);\n };\n }\n );\n handlers.push(() => {\n win.FontFace = originalFontFace;\n });\n handlers.push(restoreHandler);\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initSelectionObserver(param) {\n const { doc, mirror: mirror2, blockClass, blockSelector, selectionCb } = param;\n let collapsed = true;\n const updateSelection = callbackWrapper(() => {\n const selection = doc.getSelection();\n if (!selection || collapsed && (selection == null ? void 0 : selection.isCollapsed)) return;\n collapsed = selection.isCollapsed || false;\n const ranges = [];\n const count = selection.rangeCount || 0;\n for (let i2 = 0; i2 < count; i2++) {\n const range = selection.getRangeAt(i2);\n const { startContainer, startOffset, endContainer, endOffset } = range;\n const blocked = isBlocked(startContainer, blockClass, blockSelector, true) || isBlocked(endContainer, blockClass, blockSelector, true);\n if (blocked) continue;\n ranges.push({\n start: mirror2.getId(startContainer),\n startOffset,\n end: mirror2.getId(endContainer),\n endOffset\n });\n }\n selectionCb({ ranges });\n });\n updateSelection();\n return on(\"selectionchange\", updateSelection);\n}\nfunction initCustomElementObserver({\n doc,\n customElementCb\n}) {\n const win = doc.defaultView;\n if (!win || !win.customElements) return () => {\n };\n const restoreHandler = patch(\n win.customElements,\n \"define\",\n function(original) {\n return function(name, constructor, options) {\n try {\n customElementCb({\n define: {\n name\n }\n });\n } catch (e2) {\n console.warn(`Custom element callback failed for ${name}`);\n }\n return original.apply(this, [name, constructor, options]);\n };\n }\n );\n return restoreHandler;\n}\nfunction mergeHooks(o2, hooks) {\n const {\n mutationCb,\n mousemoveCb,\n mouseInteractionCb,\n scrollCb,\n viewportResizeCb,\n inputCb,\n mediaInteractionCb,\n styleSheetRuleCb,\n styleDeclarationCb,\n canvasMutationCb,\n fontCb,\n selectionCb,\n customElementCb\n } = o2;\n o2.mutationCb = (...p) => {\n if (hooks.mutation) {\n hooks.mutation(...p);\n }\n mutationCb(...p);\n };\n o2.mousemoveCb = (...p) => {\n if (hooks.mousemove) {\n hooks.mousemove(...p);\n }\n mousemoveCb(...p);\n };\n o2.mouseInteractionCb = (...p) => {\n if (hooks.mouseInteraction) {\n hooks.mouseInteraction(...p);\n }\n mouseInteractionCb(...p);\n };\n o2.scrollCb = (...p) => {\n if (hooks.scroll) {\n hooks.scroll(...p);\n }\n scrollCb(...p);\n };\n o2.viewportResizeCb = (...p) => {\n if (hooks.viewportResize) {\n hooks.viewportResize(...p);\n }\n viewportResizeCb(...p);\n };\n o2.inputCb = (...p) => {\n if (hooks.input) {\n hooks.input(...p);\n }\n inputCb(...p);\n };\n o2.mediaInteractionCb = (...p) => {\n if (hooks.mediaInteaction) {\n hooks.mediaInteaction(...p);\n }\n mediaInteractionCb(...p);\n };\n o2.styleSheetRuleCb = (...p) => {\n if (hooks.styleSheetRule) {\n hooks.styleSheetRule(...p);\n }\n styleSheetRuleCb(...p);\n };\n o2.styleDeclarationCb = (...p) => {\n if (hooks.styleDeclaration) {\n hooks.styleDeclaration(...p);\n }\n styleDeclarationCb(...p);\n };\n o2.canvasMutationCb = (...p) => {\n if (hooks.canvasMutation) {\n hooks.canvasMutation(...p);\n }\n canvasMutationCb(...p);\n };\n o2.fontCb = (...p) => {\n if (hooks.font) {\n hooks.font(...p);\n }\n fontCb(...p);\n };\n o2.selectionCb = (...p) => {\n if (hooks.selection) {\n hooks.selection(...p);\n }\n selectionCb(...p);\n };\n o2.customElementCb = (...c2) => {\n if (hooks.customElement) {\n hooks.customElement(...c2);\n }\n customElementCb(...c2);\n };\n}\nfunction initObservers(o2, hooks = {}) {\n const currentWindow = o2.doc.defaultView;\n if (!currentWindow) {\n return () => {\n };\n }\n mergeHooks(o2, hooks);\n let mutationObserver;\n if (o2.recordDOM) {\n mutationObserver = initMutationObserver(o2, o2.doc);\n }\n const mousemoveHandler = initMoveObserver(o2);\n const mouseInteractionHandler = initMouseInteractionObserver(o2);\n const scrollHandler = initScrollObserver(o2);\n const viewportResizeHandler = initViewportResizeObserver(o2, {\n win: currentWindow\n });\n const inputHandler = initInputObserver(o2);\n const mediaInteractionHandler = initMediaInteractionObserver(o2);\n let styleSheetObserver = () => {\n };\n let adoptedStyleSheetObserver = () => {\n };\n let styleDeclarationObserver = () => {\n };\n let fontObserver = () => {\n };\n if (o2.recordDOM) {\n styleSheetObserver = initStyleSheetObserver(o2, { win: currentWindow });\n adoptedStyleSheetObserver = initAdoptedStyleSheetObserver(o2, o2.doc);\n styleDeclarationObserver = initStyleDeclarationObserver(o2, {\n win: currentWindow\n });\n if (o2.collectFonts) {\n fontObserver = initFontObserver(o2);\n }\n }\n const selectionObserver = initSelectionObserver(o2);\n const customElementObserver = initCustomElementObserver(o2);\n const pluginHandlers = [];\n for (const plugin3 of o2.plugins) {\n pluginHandlers.push(\n plugin3.observer(plugin3.callback, currentWindow, plugin3.options)\n );\n }\n return callbackWrapper(() => {\n mutationBuffers.forEach((b) => b.reset());\n mutationObserver == null ? void 0 : mutationObserver.disconnect();\n mousemoveHandler();\n mouseInteractionHandler();\n scrollHandler();\n viewportResizeHandler();\n inputHandler();\n mediaInteractionHandler();\n styleSheetObserver();\n adoptedStyleSheetObserver();\n styleDeclarationObserver();\n fontObserver();\n selectionObserver();\n customElementObserver();\n pluginHandlers.forEach((h) => h());\n });\n}\nfunction hasNestedCSSRule(prop) {\n return typeof window[prop] !== \"undefined\";\n}\nfunction canMonkeyPatchNestedCSSRule(prop) {\n return Boolean(\n typeof window[prop] !== \"undefined\" && // Note: Generally, this check _shouldn't_ be necessary\n // However, in some scenarios (e.g. jsdom) this can sometimes fail, so we check for it here\n window[prop].prototype && \"insertRule\" in window[prop].prototype && \"deleteRule\" in window[prop].prototype\n );\n}\nclass CrossOriginIframeMirror {\n constructor(generateIdFn) {\n __publicField(this, \"iframeIdToRemoteIdMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"iframeRemoteIdToIdMap\", /* @__PURE__ */ new WeakMap());\n this.generateIdFn = generateIdFn;\n }\n getId(iframe, remoteId, idToRemoteMap, remoteToIdMap) {\n const idToRemoteIdMap = idToRemoteMap || this.getIdToRemoteIdMap(iframe);\n const remoteIdToIdMap = remoteToIdMap || this.getRemoteIdToIdMap(iframe);\n let id = idToRemoteIdMap.get(remoteId);\n if (!id) {\n id = this.generateIdFn();\n idToRemoteIdMap.set(remoteId, id);\n remoteIdToIdMap.set(id, remoteId);\n }\n return id;\n }\n getIds(iframe, remoteId) {\n const idToRemoteIdMap = this.getIdToRemoteIdMap(iframe);\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n return remoteId.map(\n (id) => this.getId(iframe, id, idToRemoteIdMap, remoteIdToIdMap)\n );\n }\n getRemoteId(iframe, id, map) {\n const remoteIdToIdMap = map || this.getRemoteIdToIdMap(iframe);\n if (typeof id !== \"number\") return id;\n const remoteId = remoteIdToIdMap.get(id);\n if (!remoteId) return -1;\n return remoteId;\n }\n getRemoteIds(iframe, ids) {\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n return ids.map((id) => this.getRemoteId(iframe, id, remoteIdToIdMap));\n }\n reset(iframe) {\n if (!iframe) {\n this.iframeIdToRemoteIdMap = /* @__PURE__ */ new WeakMap();\n this.iframeRemoteIdToIdMap = /* @__PURE__ */ new WeakMap();\n return;\n }\n this.iframeIdToRemoteIdMap.delete(iframe);\n this.iframeRemoteIdToIdMap.delete(iframe);\n }\n getIdToRemoteIdMap(iframe) {\n let idToRemoteIdMap = this.iframeIdToRemoteIdMap.get(iframe);\n if (!idToRemoteIdMap) {\n idToRemoteIdMap = /* @__PURE__ */ new Map();\n this.iframeIdToRemoteIdMap.set(iframe, idToRemoteIdMap);\n }\n return idToRemoteIdMap;\n }\n getRemoteIdToIdMap(iframe) {\n let remoteIdToIdMap = this.iframeRemoteIdToIdMap.get(iframe);\n if (!remoteIdToIdMap) {\n remoteIdToIdMap = /* @__PURE__ */ new Map();\n this.iframeRemoteIdToIdMap.set(iframe, remoteIdToIdMap);\n }\n return remoteIdToIdMap;\n }\n}\nclass IframeManager {\n constructor(options) {\n __publicField(this, \"iframes\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"crossOriginIframeMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"crossOriginIframeMirror\", new CrossOriginIframeMirror(genId));\n __publicField(this, \"crossOriginIframeStyleMirror\");\n __publicField(this, \"crossOriginIframeRootIdMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"mirror\");\n __publicField(this, \"mutationCb\");\n __publicField(this, \"wrappedEmit\");\n __publicField(this, \"loadListener\");\n __publicField(this, \"stylesheetManager\");\n __publicField(this, \"recordCrossOriginIframes\");\n this.mutationCb = options.mutationCb;\n this.wrappedEmit = options.wrappedEmit;\n this.stylesheetManager = options.stylesheetManager;\n this.recordCrossOriginIframes = options.recordCrossOriginIframes;\n this.crossOriginIframeStyleMirror = new CrossOriginIframeMirror(\n this.stylesheetManager.styleMirror.generateId.bind(\n this.stylesheetManager.styleMirror\n )\n );\n this.mirror = options.mirror;\n if (this.recordCrossOriginIframes) {\n window.addEventListener(\"message\", this.handleMessage.bind(this));\n }\n }\n addIframe(iframeEl) {\n this.iframes.set(iframeEl, true);\n if (iframeEl.contentWindow)\n this.crossOriginIframeMap.set(iframeEl.contentWindow, iframeEl);\n }\n addLoadListener(cb) {\n this.loadListener = cb;\n }\n attachIframe(iframeEl, childSn) {\n var _a2, _b;\n this.mutationCb({\n adds: [\n {\n parentId: this.mirror.getId(iframeEl),\n nextId: null,\n node: childSn\n }\n ],\n removes: [],\n texts: [],\n attributes: [],\n isAttachIframe: true\n });\n if (this.recordCrossOriginIframes)\n (_a2 = iframeEl.contentWindow) == null ? void 0 : _a2.addEventListener(\n \"message\",\n this.handleMessage.bind(this)\n );\n (_b = this.loadListener) == null ? void 0 : _b.call(this, iframeEl);\n if (iframeEl.contentDocument && iframeEl.contentDocument.adoptedStyleSheets && iframeEl.contentDocument.adoptedStyleSheets.length > 0)\n this.stylesheetManager.adoptStyleSheets(\n iframeEl.contentDocument.adoptedStyleSheets,\n this.mirror.getId(iframeEl.contentDocument)\n );\n }\n handleMessage(message) {\n const crossOriginMessageEvent = message;\n if (crossOriginMessageEvent.data.type !== \"rrweb\" || // To filter out the rrweb messages which are forwarded by some sites.\n crossOriginMessageEvent.origin !== crossOriginMessageEvent.data.origin)\n return;\n const iframeSourceWindow = message.source;\n if (!iframeSourceWindow) return;\n const iframeEl = this.crossOriginIframeMap.get(message.source);\n if (!iframeEl) return;\n const transformedEvent = this.transformCrossOriginEvent(\n iframeEl,\n crossOriginMessageEvent.data.event\n );\n if (transformedEvent)\n this.wrappedEmit(\n transformedEvent,\n crossOriginMessageEvent.data.isCheckout\n );\n }\n transformCrossOriginEvent(iframeEl, e2) {\n var _a2;\n switch (e2.type) {\n case EventType.FullSnapshot: {\n this.crossOriginIframeMirror.reset(iframeEl);\n this.crossOriginIframeStyleMirror.reset(iframeEl);\n this.replaceIdOnNode(e2.data.node, iframeEl);\n const rootId = e2.data.node.id;\n this.crossOriginIframeRootIdMap.set(iframeEl, rootId);\n this.patchRootIdOnNode(e2.data.node, rootId);\n return {\n timestamp: e2.timestamp,\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Mutation,\n adds: [\n {\n parentId: this.mirror.getId(iframeEl),\n nextId: null,\n node: e2.data.node\n }\n ],\n removes: [],\n texts: [],\n attributes: [],\n isAttachIframe: true\n }\n };\n }\n case EventType.Meta:\n case EventType.Load:\n case EventType.DomContentLoaded: {\n return false;\n }\n case EventType.Plugin: {\n return e2;\n }\n case EventType.Custom: {\n this.replaceIds(\n e2.data.payload,\n iframeEl,\n [\"id\", \"parentId\", \"previousId\", \"nextId\"]\n );\n return e2;\n }\n case EventType.IncrementalSnapshot: {\n switch (e2.data.source) {\n case IncrementalSource.Mutation: {\n e2.data.adds.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\n \"parentId\",\n \"nextId\",\n \"previousId\"\n ]);\n this.replaceIdOnNode(n2.node, iframeEl);\n const rootId = this.crossOriginIframeRootIdMap.get(iframeEl);\n rootId && this.patchRootIdOnNode(n2.node, rootId);\n });\n e2.data.removes.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\"parentId\", \"id\"]);\n });\n e2.data.attributes.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\"id\"]);\n });\n e2.data.texts.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\"id\"]);\n });\n return e2;\n }\n case IncrementalSource.Drag:\n case IncrementalSource.TouchMove:\n case IncrementalSource.MouseMove: {\n e2.data.positions.forEach((p) => {\n this.replaceIds(p, iframeEl, [\"id\"]);\n });\n return e2;\n }\n case IncrementalSource.ViewportResize: {\n return false;\n }\n case IncrementalSource.MediaInteraction:\n case IncrementalSource.MouseInteraction:\n case IncrementalSource.Scroll:\n case IncrementalSource.CanvasMutation:\n case IncrementalSource.Input: {\n this.replaceIds(e2.data, iframeEl, [\"id\"]);\n return e2;\n }\n case IncrementalSource.StyleSheetRule:\n case IncrementalSource.StyleDeclaration: {\n this.replaceIds(e2.data, iframeEl, [\"id\"]);\n this.replaceStyleIds(e2.data, iframeEl, [\"styleId\"]);\n return e2;\n }\n case IncrementalSource.Font: {\n return e2;\n }\n case IncrementalSource.Selection: {\n e2.data.ranges.forEach((range) => {\n this.replaceIds(range, iframeEl, [\"start\", \"end\"]);\n });\n return e2;\n }\n case IncrementalSource.AdoptedStyleSheet: {\n this.replaceIds(e2.data, iframeEl, [\"id\"]);\n this.replaceStyleIds(e2.data, iframeEl, [\"styleIds\"]);\n (_a2 = e2.data.styles) == null ? void 0 : _a2.forEach((style) => {\n this.replaceStyleIds(style, iframeEl, [\"styleId\"]);\n });\n return e2;\n }\n }\n }\n }\n return false;\n }\n replace(iframeMirror, obj, iframeEl, keys) {\n for (const key of keys) {\n if (!Array.isArray(obj[key]) && typeof obj[key] !== \"number\") continue;\n if (Array.isArray(obj[key])) {\n obj[key] = iframeMirror.getIds(\n iframeEl,\n obj[key]\n );\n } else {\n obj[key] = iframeMirror.getId(iframeEl, obj[key]);\n }\n }\n return obj;\n }\n replaceIds(obj, iframeEl, keys) {\n return this.replace(this.crossOriginIframeMirror, obj, iframeEl, keys);\n }\n replaceStyleIds(obj, iframeEl, keys) {\n return this.replace(this.crossOriginIframeStyleMirror, obj, iframeEl, keys);\n }\n replaceIdOnNode(node2, iframeEl) {\n this.replaceIds(node2, iframeEl, [\"id\", \"rootId\"]);\n if (\"childNodes\" in node2) {\n node2.childNodes.forEach((child) => {\n this.replaceIdOnNode(child, iframeEl);\n });\n }\n }\n patchRootIdOnNode(node2, rootId) {\n if (node2.type !== NodeType.Document && !node2.rootId) node2.rootId = rootId;\n if (\"childNodes\" in node2) {\n node2.childNodes.forEach((child) => {\n this.patchRootIdOnNode(child, rootId);\n });\n }\n }\n}\nclass ShadowDomManager {\n constructor(options) {\n __publicField(this, \"shadowDoms\", /* @__PURE__ */ new WeakSet());\n __publicField(this, \"mutationCb\");\n __publicField(this, \"scrollCb\");\n __publicField(this, \"bypassOptions\");\n __publicField(this, \"mirror\");\n __publicField(this, \"restoreHandlers\", []);\n this.mutationCb = options.mutationCb;\n this.scrollCb = options.scrollCb;\n this.bypassOptions = options.bypassOptions;\n this.mirror = options.mirror;\n this.init();\n }\n init() {\n this.reset();\n this.patchAttachShadow(Element, document);\n }\n addShadowRoot(shadowRoot2, doc) {\n if (!isNativeShadowDom(shadowRoot2)) return;\n if (this.shadowDoms.has(shadowRoot2)) return;\n this.shadowDoms.add(shadowRoot2);\n const observer = initMutationObserver(\n {\n ...this.bypassOptions,\n doc,\n mutationCb: this.mutationCb,\n mirror: this.mirror,\n shadowDomManager: this\n },\n shadowRoot2\n );\n this.restoreHandlers.push(() => observer.disconnect());\n this.restoreHandlers.push(\n initScrollObserver({\n ...this.bypassOptions,\n scrollCb: this.scrollCb,\n // https://gist.github.com/praveenpuglia/0832da687ed5a5d7a0907046c9ef1813\n // scroll is not allowed to pass the boundary, so we need to listen the shadow document\n doc: shadowRoot2,\n mirror: this.mirror\n })\n );\n setTimeout(() => {\n if (shadowRoot2.adoptedStyleSheets && shadowRoot2.adoptedStyleSheets.length > 0)\n this.bypassOptions.stylesheetManager.adoptStyleSheets(\n shadowRoot2.adoptedStyleSheets,\n this.mirror.getId(index.host(shadowRoot2))\n );\n this.restoreHandlers.push(\n initAdoptedStyleSheetObserver(\n {\n mirror: this.mirror,\n stylesheetManager: this.bypassOptions.stylesheetManager\n },\n shadowRoot2\n )\n );\n }, 0);\n }\n /**\n * Monkey patch 'attachShadow' of an IFrameElement to observe newly added shadow doms.\n */\n observeAttachShadow(iframeElement) {\n if (!iframeElement.contentWindow || !iframeElement.contentDocument) return;\n this.patchAttachShadow(\n iframeElement.contentWindow.Element,\n iframeElement.contentDocument\n );\n }\n /**\n * Patch 'attachShadow' to observe newly added shadow doms.\n */\n patchAttachShadow(element, doc) {\n const manager = this;\n this.restoreHandlers.push(\n patch(\n element.prototype,\n \"attachShadow\",\n function(original) {\n return function(option) {\n const sRoot = original.call(this, option);\n const shadowRootEl = index.shadowRoot(this);\n if (shadowRootEl && inDom(this))\n manager.addShadowRoot(shadowRootEl, doc);\n return sRoot;\n };\n }\n )\n );\n }\n reset() {\n this.restoreHandlers.forEach((handler) => {\n try {\n handler();\n } catch (e2) {\n }\n });\n this.restoreHandlers = [];\n this.shadowDoms = /* @__PURE__ */ new WeakSet();\n }\n}\nvar chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nvar lookup = typeof Uint8Array === \"undefined\" ? [] : new Uint8Array(256);\nfor (var i$1 = 0; i$1 < chars.length; i$1++) {\n lookup[chars.charCodeAt(i$1)] = i$1;\n}\nvar encode = function(arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i2, len = bytes.length, base64 = \"\";\n for (i2 = 0; i2 < len; i2 += 3) {\n base64 += chars[bytes[i2] >> 2];\n base64 += chars[(bytes[i2] & 3) << 4 | bytes[i2 + 1] >> 4];\n base64 += chars[(bytes[i2 + 1] & 15) << 2 | bytes[i2 + 2] >> 6];\n base64 += chars[bytes[i2 + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + \"=\";\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + \"==\";\n }\n return base64;\n};\nconst canvasVarMap = /* @__PURE__ */ new Map();\nfunction variableListFor$1(ctx, ctor) {\n let contextMap = canvasVarMap.get(ctx);\n if (!contextMap) {\n contextMap = /* @__PURE__ */ new Map();\n canvasVarMap.set(ctx, contextMap);\n }\n if (!contextMap.has(ctor)) {\n contextMap.set(ctor, []);\n }\n return contextMap.get(ctor);\n}\nconst saveWebGLVar = (value, win, ctx) => {\n if (!value || !(isInstanceOfWebGLObject(value, win) || typeof value === \"object\"))\n return;\n const name = value.constructor.name;\n const list2 = variableListFor$1(ctx, name);\n let index2 = list2.indexOf(value);\n if (index2 === -1) {\n index2 = list2.length;\n list2.push(value);\n }\n return index2;\n};\nfunction serializeArg(value, win, ctx) {\n if (value instanceof Array) {\n return value.map((arg) => serializeArg(arg, win, ctx));\n } else if (value === null) {\n return value;\n } else if (value instanceof Float32Array || value instanceof Float64Array || value instanceof Int32Array || value instanceof Uint32Array || value instanceof Uint8Array || value instanceof Uint16Array || value instanceof Int16Array || value instanceof Int8Array || value instanceof Uint8ClampedArray) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [Object.values(value)]\n };\n } else if (\n // SharedArrayBuffer disabled on most browsers due to spectre.\n // More info: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/SharedArrayBuffer\n // value instanceof SharedArrayBuffer ||\n value instanceof ArrayBuffer\n ) {\n const name = value.constructor.name;\n const base64 = encode(value);\n return {\n rr_type: name,\n base64\n };\n } else if (value instanceof DataView) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [\n serializeArg(value.buffer, win, ctx),\n value.byteOffset,\n value.byteLength\n ]\n };\n } else if (value instanceof HTMLImageElement) {\n const name = value.constructor.name;\n const { src } = value;\n return {\n rr_type: name,\n src\n };\n } else if (value instanceof HTMLCanvasElement) {\n const name = \"HTMLImageElement\";\n const src = value.toDataURL();\n return {\n rr_type: name,\n src\n };\n } else if (value instanceof ImageData) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [serializeArg(value.data, win, ctx), value.width, value.height]\n };\n } else if (isInstanceOfWebGLObject(value, win) || typeof value === \"object\") {\n const name = value.constructor.name;\n const index2 = saveWebGLVar(value, win, ctx);\n return {\n rr_type: name,\n index: index2\n };\n }\n return value;\n}\nconst serializeArgs = (args, win, ctx) => {\n return args.map((arg) => serializeArg(arg, win, ctx));\n};\nconst isInstanceOfWebGLObject = (value, win) => {\n const webGLConstructorNames = [\n \"WebGLActiveInfo\",\n \"WebGLBuffer\",\n \"WebGLFramebuffer\",\n \"WebGLProgram\",\n \"WebGLRenderbuffer\",\n \"WebGLShader\",\n \"WebGLShaderPrecisionFormat\",\n \"WebGLTexture\",\n \"WebGLUniformLocation\",\n \"WebGLVertexArrayObject\",\n // In old Chrome versions, value won't be an instanceof WebGLVertexArrayObject.\n \"WebGLVertexArrayObjectOES\"\n ];\n const supportedWebGLConstructorNames = webGLConstructorNames.filter(\n (name) => typeof win[name] === \"function\"\n );\n return Boolean(\n supportedWebGLConstructorNames.find(\n (name) => value instanceof win[name]\n )\n );\n};\nfunction initCanvas2DMutationObserver(cb, win, blockClass, blockSelector) {\n const handlers = [];\n const props2D = Object.getOwnPropertyNames(\n win.CanvasRenderingContext2D.prototype\n );\n for (const prop of props2D) {\n try {\n if (typeof win.CanvasRenderingContext2D.prototype[prop] !== \"function\") {\n continue;\n }\n const restoreHandler = patch(\n win.CanvasRenderingContext2D.prototype,\n prop,\n function(original) {\n return function(...args) {\n if (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\n setTimeout(() => {\n const recordArgs = serializeArgs(args, win, this);\n cb(this.canvas, {\n type: CanvasContext[\"2D\"],\n property: prop,\n args: recordArgs\n });\n }, 0);\n }\n return original.apply(this, args);\n };\n }\n );\n handlers.push(restoreHandler);\n } catch {\n const hookHandler = hookSetter(\n win.CanvasRenderingContext2D.prototype,\n prop,\n {\n set(v2) {\n cb(this.canvas, {\n type: CanvasContext[\"2D\"],\n property: prop,\n args: [v2],\n setter: true\n });\n }\n }\n );\n handlers.push(hookHandler);\n }\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\nfunction getNormalizedContextName(contextType) {\n return contextType === \"experimental-webgl\" ? \"webgl\" : contextType;\n}\nfunction initCanvasContextObserver(win, blockClass, blockSelector, setPreserveDrawingBufferToTrue) {\n const handlers = [];\n try {\n const restoreHandler = patch(\n win.HTMLCanvasElement.prototype,\n \"getContext\",\n function(original) {\n return function(contextType, ...args) {\n if (!isBlocked(this, blockClass, blockSelector, true)) {\n const ctxName = getNormalizedContextName(contextType);\n if (!(\"__context\" in this)) this.__context = ctxName;\n if (setPreserveDrawingBufferToTrue && [\"webgl\", \"webgl2\"].includes(ctxName)) {\n if (args[0] && typeof args[0] === \"object\") {\n const contextAttributes = args[0];\n if (!contextAttributes.preserveDrawingBuffer) {\n contextAttributes.preserveDrawingBuffer = true;\n }\n } else {\n args.splice(0, 1, {\n preserveDrawingBuffer: true\n });\n }\n }\n }\n return original.apply(this, [contextType, ...args]);\n };\n }\n );\n handlers.push(restoreHandler);\n } catch {\n console.error(\"failed to patch HTMLCanvasElement.prototype.getContext\");\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\nfunction patchGLPrototype(prototype, type, cb, blockClass, blockSelector, win) {\n const handlers = [];\n const props = Object.getOwnPropertyNames(prototype);\n for (const prop of props) {\n if (\n //prop.startsWith('get') || // e.g. getProgramParameter, but too risky\n [\n \"isContextLost\",\n \"canvas\",\n \"drawingBufferWidth\",\n \"drawingBufferHeight\"\n ].includes(prop)\n ) {\n continue;\n }\n try {\n if (typeof prototype[prop] !== \"function\") {\n continue;\n }\n const restoreHandler = patch(\n prototype,\n prop,\n function(original) {\n return function(...args) {\n const result2 = original.apply(this, args);\n saveWebGLVar(result2, win, this);\n if (\"tagName\" in this.canvas && !isBlocked(this.canvas, blockClass, blockSelector, true)) {\n const recordArgs = serializeArgs(args, win, this);\n const mutation = {\n type,\n property: prop,\n args: recordArgs\n };\n cb(this.canvas, mutation);\n }\n return result2;\n };\n }\n );\n handlers.push(restoreHandler);\n } catch {\n const hookHandler = hookSetter(prototype, prop, {\n set(v2) {\n cb(this.canvas, {\n type,\n property: prop,\n args: [v2],\n setter: true\n });\n }\n });\n handlers.push(hookHandler);\n }\n }\n return handlers;\n}\nfunction initCanvasWebGLMutationObserver(cb, win, blockClass, blockSelector) {\n const handlers = [];\n handlers.push(\n ...patchGLPrototype(\n win.WebGLRenderingContext.prototype,\n CanvasContext.WebGL,\n cb,\n blockClass,\n blockSelector,\n win\n )\n );\n if (typeof win.WebGL2RenderingContext !== \"undefined\") {\n handlers.push(\n ...patchGLPrototype(\n win.WebGL2RenderingContext.prototype,\n CanvasContext.WebGL2,\n cb,\n blockClass,\n blockSelector,\n win\n )\n );\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\nconst encodedJs = \"KGZ1bmN0aW9uKCkgewogICJ1c2Ugc3RyaWN0IjsKICB2YXIgY2hhcnMgPSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7CiAgdmFyIGxvb2t1cCA9IHR5cGVvZiBVaW50OEFycmF5ID09PSAidW5kZWZpbmVkIiA/IFtdIDogbmV3IFVpbnQ4QXJyYXkoMjU2KTsKICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYXJzLmxlbmd0aDsgaSsrKSB7CiAgICBsb29rdXBbY2hhcnMuY2hhckNvZGVBdChpKV0gPSBpOwogIH0KICB2YXIgZW5jb2RlID0gZnVuY3Rpb24oYXJyYXlidWZmZXIpIHsKICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGFycmF5YnVmZmVyKSwgaTIsIGxlbiA9IGJ5dGVzLmxlbmd0aCwgYmFzZTY0ID0gIiI7CiAgICBmb3IgKGkyID0gMDsgaTIgPCBsZW47IGkyICs9IDMpIHsKICAgICAgYmFzZTY0ICs9IGNoYXJzW2J5dGVzW2kyXSA+PiAyXTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMl0gJiAzKSA8PCA0IHwgYnl0ZXNbaTIgKyAxXSA+PiA0XTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMiArIDFdICYgMTUpIDw8IDIgfCBieXRlc1tpMiArIDJdID4+IDZdOwogICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaTIgKyAyXSAmIDYzXTsKICAgIH0KICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgIj0iOwogICAgfSBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgIj09IjsKICAgIH0KICAgIHJldHVybiBiYXNlNjQ7CiAgfTsKICBjb25zdCBsYXN0QmxvYk1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7CiAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTsKICBhc3luYyBmdW5jdGlvbiBnZXRUcmFuc3BhcmVudEJsb2JGb3Iod2lkdGgsIGhlaWdodCwgZGF0YVVSTE9wdGlvbnMpIHsKICAgIGNvbnN0IGlkID0gYCR7d2lkdGh9LSR7aGVpZ2h0fWA7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBpZiAodHJhbnNwYXJlbnRCbG9iTWFwLmhhcyhpZCkpIHJldHVybiB0cmFuc3BhcmVudEJsb2JNYXAuZ2V0KGlkKTsKICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsKICAgICAgb2Zmc2NyZWVuLmdldENvbnRleHQoIjJkIik7CiAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCBvZmZzY3JlZW4uY29udmVydFRvQmxvYihkYXRhVVJMT3B0aW9ucyk7CiAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gYXdhaXQgYmxvYi5hcnJheUJ1ZmZlcigpOwogICAgICBjb25zdCBiYXNlNjQgPSBlbmNvZGUoYXJyYXlCdWZmZXIpOwogICAgICB0cmFuc3BhcmVudEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICByZXR1cm4gYmFzZTY0OwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuICIiOwogICAgfQogIH0KICBjb25zdCB3b3JrZXIgPSBzZWxmOwogIHdvcmtlci5vbm1lc3NhZ2UgPSBhc3luYyBmdW5jdGlvbihlKSB7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBjb25zdCB7IGlkLCBiaXRtYXAsIHdpZHRoLCBoZWlnaHQsIGRhdGFVUkxPcHRpb25zIH0gPSBlLmRhdGE7CiAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKAogICAgICAgIHdpZHRoLAogICAgICAgIGhlaWdodCwKICAgICAgICBkYXRhVVJMT3B0aW9ucwogICAgICApOwogICAgICBjb25zdCBvZmZzY3JlZW4gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpOwogICAgICBjb25zdCBjdHggPSBvZmZzY3JlZW4uZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgY3R4LmRyYXdJbWFnZShiaXRtYXAsIDAsIDApOwogICAgICBiaXRtYXAuY2xvc2UoKTsKICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IG9mZnNjcmVlbi5jb252ZXJ0VG9CbG9iKGRhdGFVUkxPcHRpb25zKTsKICAgICAgY29uc3QgdHlwZSA9IGJsb2IudHlwZTsKICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBhd2FpdCBibG9iLmFycmF5QnVmZmVyKCk7CiAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7CiAgICAgIGlmICghbGFzdEJsb2JNYXAuaGFzKGlkKSAmJiBhd2FpdCB0cmFuc3BhcmVudEJhc2U2NCA9PT0gYmFzZTY0KSB7CiAgICAgICAgbGFzdEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICAgIHJldHVybiB3b3JrZXIucG9zdE1lc3NhZ2UoeyBpZCB9KTsKICAgICAgfQogICAgICBpZiAobGFzdEJsb2JNYXAuZ2V0KGlkKSA9PT0gYmFzZTY0KSByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQgfSk7CiAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7CiAgICAgICAgaWQsCiAgICAgICAgdHlwZSwKICAgICAgICBiYXNlNjQsCiAgICAgICAgd2lkdGgsCiAgICAgICAgaGVpZ2h0CiAgICAgIH0pOwogICAgICBsYXN0QmxvYk1hcC5zZXQoaWQsIGJhc2U2NCk7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IGUuZGF0YS5pZCB9KTsKICAgIH0KICB9Owp9KSgpOwovLyMgc291cmNlTWFwcGluZ1VSTD1pbWFnZS1iaXRtYXAtZGF0YS11cmwtd29ya2VyLUlKcEM3Z19iLmpzLm1hcAo=\";\nconst decodeBase64 = (base64) => Uint8Array.from(atob(base64), (c2) => c2.charCodeAt(0));\nconst blob = typeof window !== \"undefined\" && window.Blob && new Blob([decodeBase64(encodedJs)], { type: \"text/javascript;charset=utf-8\" });\nfunction WorkerWrapper(options) {\n let objURL;\n try {\n objURL = blob && (window.URL || window.webkitURL).createObjectURL(blob);\n if (!objURL) throw \"\";\n const worker = new Worker(objURL, {\n name: options == null ? void 0 : options.name\n });\n worker.addEventListener(\"error\", () => {\n (window.URL || window.webkitURL).revokeObjectURL(objURL);\n });\n return worker;\n } catch (e2) {\n return new Worker(\n \"data:text/javascript;base64,\" + encodedJs,\n {\n name: options == null ? void 0 : options.name\n }\n );\n } finally {\n objURL && (window.URL || window.webkitURL).revokeObjectURL(objURL);\n }\n}\nclass CanvasManager {\n constructor(options) {\n __publicField(this, \"pendingCanvasMutations\", /* @__PURE__ */ new Map());\n __publicField(this, \"rafStamps\", { latestId: 0, invokeId: null });\n __publicField(this, \"mirror\");\n __publicField(this, \"mutationCb\");\n __publicField(this, \"resetObservers\");\n __publicField(this, \"frozen\", false);\n __publicField(this, \"locked\", false);\n __publicField(this, \"processMutation\", (target, mutation) => {\n const newFrame = this.rafStamps.invokeId && this.rafStamps.latestId !== this.rafStamps.invokeId;\n if (newFrame || !this.rafStamps.invokeId)\n this.rafStamps.invokeId = this.rafStamps.latestId;\n if (!this.pendingCanvasMutations.has(target)) {\n this.pendingCanvasMutations.set(target, []);\n }\n this.pendingCanvasMutations.get(target).push(mutation);\n });\n const {\n sampling = \"all\",\n win,\n blockClass,\n blockSelector,\n recordCanvas,\n dataURLOptions\n } = options;\n this.mutationCb = options.mutationCb;\n this.mirror = options.mirror;\n if (recordCanvas && sampling === \"all\")\n this.initCanvasMutationObserver(win, blockClass, blockSelector);\n if (recordCanvas && typeof sampling === \"number\")\n this.initCanvasFPSObserver(sampling, win, blockClass, blockSelector, {\n dataURLOptions\n });\n }\n reset() {\n this.pendingCanvasMutations.clear();\n this.resetObservers && this.resetObservers();\n }\n freeze() {\n this.frozen = true;\n }\n unfreeze() {\n this.frozen = false;\n }\n lock() {\n this.locked = true;\n }\n unlock() {\n this.locked = false;\n }\n initCanvasFPSObserver(fps, win, blockClass, blockSelector, options) {\n const canvasContextReset = initCanvasContextObserver(\n win,\n blockClass,\n blockSelector,\n true\n );\n const snapshotInProgressMap = /* @__PURE__ */ new Map();\n const worker = new WorkerWrapper();\n worker.onmessage = (e2) => {\n const { id } = e2.data;\n snapshotInProgressMap.set(id, false);\n if (!(\"base64\" in e2.data)) return;\n const { base64, type, width, height } = e2.data;\n this.mutationCb({\n id,\n type: CanvasContext[\"2D\"],\n commands: [\n {\n property: \"clearRect\",\n // wipe canvas\n args: [0, 0, width, height]\n },\n {\n property: \"drawImage\",\n // draws (semi-transparent) image\n args: [\n {\n rr_type: \"ImageBitmap\",\n args: [\n {\n rr_type: \"Blob\",\n data: [{ rr_type: \"ArrayBuffer\", base64 }],\n type\n }\n ]\n },\n 0,\n 0\n ]\n }\n ]\n });\n };\n const timeBetweenSnapshots = 1e3 / fps;\n let lastSnapshotTime = 0;\n let rafId;\n const getCanvas = () => {\n const matchedCanvas = [];\n win.document.querySelectorAll(\"canvas\").forEach((canvas) => {\n if (!isBlocked(canvas, blockClass, blockSelector, true)) {\n matchedCanvas.push(canvas);\n }\n });\n return matchedCanvas;\n };\n const takeCanvasSnapshots = (timestamp) => {\n if (lastSnapshotTime && timestamp - lastSnapshotTime < timeBetweenSnapshots) {\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n return;\n }\n lastSnapshotTime = timestamp;\n getCanvas().forEach(async (canvas) => {\n var _a2;\n const id = this.mirror.getId(canvas);\n if (snapshotInProgressMap.get(id)) return;\n if (canvas.width === 0 || canvas.height === 0) return;\n snapshotInProgressMap.set(id, true);\n if ([\"webgl\", \"webgl2\"].includes(canvas.__context)) {\n const context = canvas.getContext(canvas.__context);\n if (((_a2 = context == null ? void 0 : context.getContextAttributes()) == null ? void 0 : _a2.preserveDrawingBuffer) === false) {\n context.clear(context.COLOR_BUFFER_BIT);\n }\n }\n const bitmap = await createImageBitmap(canvas);\n worker.postMessage(\n {\n id,\n bitmap,\n width: canvas.width,\n height: canvas.height,\n dataURLOptions: options.dataURLOptions\n },\n [bitmap]\n );\n });\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n };\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n this.resetObservers = () => {\n canvasContextReset();\n cancelAnimationFrame(rafId);\n };\n }\n initCanvasMutationObserver(win, blockClass, blockSelector) {\n this.startRAFTimestamping();\n this.startPendingCanvasMutationFlusher();\n const canvasContextReset = initCanvasContextObserver(\n win,\n blockClass,\n blockSelector,\n false\n );\n const canvas2DReset = initCanvas2DMutationObserver(\n this.processMutation.bind(this),\n win,\n blockClass,\n blockSelector\n );\n const canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(\n this.processMutation.bind(this),\n win,\n blockClass,\n blockSelector\n );\n this.resetObservers = () => {\n canvasContextReset();\n canvas2DReset();\n canvasWebGL1and2Reset();\n };\n }\n startPendingCanvasMutationFlusher() {\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\n }\n startRAFTimestamping() {\n const setLatestRAFTimestamp = (timestamp) => {\n this.rafStamps.latestId = timestamp;\n requestAnimationFrame(setLatestRAFTimestamp);\n };\n requestAnimationFrame(setLatestRAFTimestamp);\n }\n flushPendingCanvasMutations() {\n this.pendingCanvasMutations.forEach(\n (_values, canvas) => {\n const id = this.mirror.getId(canvas);\n this.flushPendingCanvasMutationFor(canvas, id);\n }\n );\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\n }\n flushPendingCanvasMutationFor(canvas, id) {\n if (this.frozen || this.locked) {\n return;\n }\n const valuesWithType = this.pendingCanvasMutations.get(canvas);\n if (!valuesWithType || id === -1) return;\n const values = valuesWithType.map((value) => {\n const { type: type2, ...rest } = value;\n return rest;\n });\n const { type } = valuesWithType[0];\n this.mutationCb({ id, type, commands: values });\n this.pendingCanvasMutations.delete(canvas);\n }\n}\nclass StylesheetManager {\n constructor(options) {\n __publicField(this, \"trackedLinkElements\", /* @__PURE__ */ new WeakSet());\n __publicField(this, \"mutationCb\");\n __publicField(this, \"adoptedStyleSheetCb\");\n __publicField(this, \"styleMirror\", new StyleSheetMirror());\n this.mutationCb = options.mutationCb;\n this.adoptedStyleSheetCb = options.adoptedStyleSheetCb;\n }\n attachLinkElement(linkEl, childSn) {\n if (\"_cssText\" in childSn.attributes)\n this.mutationCb({\n adds: [],\n removes: [],\n texts: [],\n attributes: [\n {\n id: childSn.id,\n attributes: childSn.attributes\n }\n ]\n });\n this.trackLinkElement(linkEl);\n }\n trackLinkElement(linkEl) {\n if (this.trackedLinkElements.has(linkEl)) return;\n this.trackedLinkElements.add(linkEl);\n this.trackStylesheetInLinkElement(linkEl);\n }\n adoptStyleSheets(sheets, hostId) {\n if (sheets.length === 0) return;\n const adoptedStyleSheetData = {\n id: hostId,\n styleIds: []\n };\n const styles = [];\n for (const sheet of sheets) {\n let styleId;\n if (!this.styleMirror.has(sheet)) {\n styleId = this.styleMirror.add(sheet);\n styles.push({\n styleId,\n rules: Array.from(sheet.rules || CSSRule, (r2, index2) => ({\n rule: stringifyRule(r2, sheet.href),\n index: index2\n }))\n });\n } else styleId = this.styleMirror.getId(sheet);\n adoptedStyleSheetData.styleIds.push(styleId);\n }\n if (styles.length > 0) adoptedStyleSheetData.styles = styles;\n this.adoptedStyleSheetCb(adoptedStyleSheetData);\n }\n reset() {\n this.styleMirror.reset();\n this.trackedLinkElements = /* @__PURE__ */ new WeakSet();\n }\n // TODO: take snapshot on stylesheet reload by applying event listener\n trackStylesheetInLinkElement(_linkEl) {\n }\n}\nclass ProcessedNodeManager {\n constructor() {\n __publicField(this, \"nodeMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"active\", false);\n }\n inOtherBuffer(node2, thisBuffer) {\n const buffers = this.nodeMap.get(node2);\n return buffers && Array.from(buffers).some((buffer) => buffer !== thisBuffer);\n }\n add(node2, buffer) {\n if (!this.active) {\n this.active = true;\n requestAnimationFrame(() => {\n this.nodeMap = /* @__PURE__ */ new WeakMap();\n this.active = false;\n });\n }\n this.nodeMap.set(node2, (this.nodeMap.get(node2) || /* @__PURE__ */ new Set()).add(buffer));\n }\n destroy() {\n }\n}\nlet wrappedEmit;\nlet takeFullSnapshot$1;\nlet canvasManager;\nlet recording = false;\ntry {\n if (Array.from([1], (x2) => x2 * 2)[0] !== 2) {\n const cleanFrame = document.createElement(\"iframe\");\n document.body.appendChild(cleanFrame);\n Array.from = ((_a = cleanFrame.contentWindow) == null ? void 0 : _a.Array.from) || Array.from;\n document.body.removeChild(cleanFrame);\n }\n} catch (err) {\n console.debug(\"Unable to override Array.from\", err);\n}\nconst mirror = createMirror$2();\nfunction record(options = {}) {\n const {\n emit,\n checkoutEveryNms,\n checkoutEveryNth,\n blockClass = \"rr-block\",\n blockSelector = null,\n ignoreClass = \"rr-ignore\",\n ignoreSelector = null,\n maskTextClass = \"rr-mask\",\n maskTextSelector = null,\n inlineStylesheet = true,\n maskAllInputs,\n maskInputOptions: _maskInputOptions,\n slimDOMOptions: _slimDOMOptions,\n maskInputFn,\n maskTextFn,\n hooks,\n packFn,\n sampling = {},\n dataURLOptions = {},\n mousemoveWait,\n recordDOM = true,\n recordCanvas = false,\n recordCrossOriginIframes = false,\n recordAfter = options.recordAfter === \"DOMContentLoaded\" ? options.recordAfter : \"load\",\n userTriggeredOnInput = false,\n collectFonts = false,\n inlineImages = false,\n plugins,\n keepIframeSrcFn = () => false,\n ignoreCSSAttributes = /* @__PURE__ */ new Set([]),\n errorHandler: errorHandler2\n } = options;\n registerErrorHandler(errorHandler2);\n const inEmittingFrame = recordCrossOriginIframes ? window.parent === window : true;\n let passEmitsToParent = false;\n if (!inEmittingFrame) {\n try {\n if (window.parent.document) {\n passEmitsToParent = false;\n }\n } catch (e2) {\n passEmitsToParent = true;\n }\n }\n if (inEmittingFrame && !emit) {\n throw new Error(\"emit function is required\");\n }\n if (!inEmittingFrame && !passEmitsToParent) {\n return () => {\n };\n }\n if (mousemoveWait !== void 0 && sampling.mousemove === void 0) {\n sampling.mousemove = mousemoveWait;\n }\n mirror.reset();\n const maskInputOptions = maskAllInputs === true ? {\n color: true,\n date: true,\n \"datetime-local\": true,\n email: true,\n month: true,\n number: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true,\n textarea: true,\n select: true,\n password: true\n } : _maskInputOptions !== void 0 ? _maskInputOptions : { password: true };\n const slimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === \"all\" ? {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaVerification: true,\n // the following are off for slimDOMOptions === true,\n // as they destroy some (hidden) info:\n headMetaAuthorship: _slimDOMOptions === \"all\",\n headMetaDescKeywords: _slimDOMOptions === \"all\",\n headTitleMutations: _slimDOMOptions === \"all\"\n } : _slimDOMOptions ? _slimDOMOptions : {};\n polyfill$1();\n let lastFullSnapshotEvent;\n let incrementalSnapshotCount = 0;\n const eventProcessor = (e2) => {\n for (const plugin3 of plugins || []) {\n if (plugin3.eventProcessor) {\n e2 = plugin3.eventProcessor(e2);\n }\n }\n if (packFn && // Disable packing events which will be emitted to parent frames.\n !passEmitsToParent) {\n e2 = packFn(e2);\n }\n return e2;\n };\n wrappedEmit = (r2, isCheckout) => {\n var _a2;\n const e2 = r2;\n e2.timestamp = nowTimestamp();\n if (((_a2 = mutationBuffers[0]) == null ? void 0 : _a2.isFrozen()) && e2.type !== EventType.FullSnapshot && !(e2.type === EventType.IncrementalSnapshot && e2.data.source === IncrementalSource.Mutation)) {\n mutationBuffers.forEach((buf) => buf.unfreeze());\n }\n if (inEmittingFrame) {\n emit == null ? void 0 : emit(eventProcessor(e2), isCheckout);\n } else if (passEmitsToParent) {\n const message = {\n type: \"rrweb\",\n event: eventProcessor(e2),\n origin: window.location.origin,\n isCheckout\n };\n window.parent.postMessage(message, \"*\");\n }\n if (e2.type === EventType.FullSnapshot) {\n lastFullSnapshotEvent = e2;\n incrementalSnapshotCount = 0;\n } else if (e2.type === EventType.IncrementalSnapshot) {\n if (e2.data.source === IncrementalSource.Mutation && e2.data.isAttachIframe) {\n return;\n }\n incrementalSnapshotCount++;\n const exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\n const exceedTime = checkoutEveryNms && e2.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\n if (exceedCount || exceedTime) {\n takeFullSnapshot$1(true);\n }\n }\n };\n const wrappedMutationEmit = (m) => {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Mutation,\n ...m\n }\n });\n };\n const wrappedScrollEmit = (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Scroll,\n ...p\n }\n });\n const wrappedCanvasMutationEmit = (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.CanvasMutation,\n ...p\n }\n });\n const wrappedAdoptedStyleSheetEmit = (a2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.AdoptedStyleSheet,\n ...a2\n }\n });\n const stylesheetManager = new StylesheetManager({\n mutationCb: wrappedMutationEmit,\n adoptedStyleSheetCb: wrappedAdoptedStyleSheetEmit\n });\n const iframeManager = new IframeManager({\n mirror,\n mutationCb: wrappedMutationEmit,\n stylesheetManager,\n recordCrossOriginIframes,\n wrappedEmit\n });\n for (const plugin3 of plugins || []) {\n if (plugin3.getMirror)\n plugin3.getMirror({\n nodeMirror: mirror,\n crossOriginIframeMirror: iframeManager.crossOriginIframeMirror,\n crossOriginIframeStyleMirror: iframeManager.crossOriginIframeStyleMirror\n });\n }\n const processedNodeManager = new ProcessedNodeManager();\n canvasManager = new CanvasManager({\n recordCanvas,\n mutationCb: wrappedCanvasMutationEmit,\n win: window,\n blockClass,\n blockSelector,\n mirror,\n sampling: sampling.canvas,\n dataURLOptions\n });\n const shadowDomManager = new ShadowDomManager({\n mutationCb: wrappedMutationEmit,\n scrollCb: wrappedScrollEmit,\n bypassOptions: {\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n inlineStylesheet,\n maskInputOptions,\n dataURLOptions,\n maskTextFn,\n maskInputFn,\n recordCanvas,\n inlineImages,\n sampling,\n slimDOMOptions,\n iframeManager,\n stylesheetManager,\n canvasManager,\n keepIframeSrcFn,\n processedNodeManager\n },\n mirror\n });\n takeFullSnapshot$1 = (isCheckout = false) => {\n if (!recordDOM) {\n return;\n }\n wrappedEmit(\n {\n type: EventType.Meta,\n data: {\n href: window.location.href,\n width: getWindowWidth(),\n height: getWindowHeight()\n }\n },\n isCheckout\n );\n stylesheetManager.reset();\n shadowDomManager.init();\n mutationBuffers.forEach((buf) => buf.lock());\n const node2 = snapshot(document, {\n mirror,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n inlineStylesheet,\n maskAllInputs: maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOM: slimDOMOptions,\n dataURLOptions,\n recordCanvas,\n inlineImages,\n onSerialize: (n2) => {\n if (isSerializedIframe(n2, mirror)) {\n iframeManager.addIframe(n2);\n }\n if (isSerializedStylesheet(n2, mirror)) {\n stylesheetManager.trackLinkElement(n2);\n }\n if (hasShadowRoot(n2)) {\n shadowDomManager.addShadowRoot(index.shadowRoot(n2), document);\n }\n },\n onIframeLoad: (iframe, childSn) => {\n iframeManager.attachIframe(iframe, childSn);\n shadowDomManager.observeAttachShadow(iframe);\n },\n onStylesheetLoad: (linkEl, childSn) => {\n stylesheetManager.attachLinkElement(linkEl, childSn);\n },\n keepIframeSrcFn\n });\n if (!node2) {\n return console.warn(\"Failed to snapshot the document\");\n }\n wrappedEmit(\n {\n type: EventType.FullSnapshot,\n data: {\n node: node2,\n initialOffset: getWindowScroll(window)\n }\n },\n isCheckout\n );\n mutationBuffers.forEach((buf) => buf.unlock());\n if (document.adoptedStyleSheets && document.adoptedStyleSheets.length > 0)\n stylesheetManager.adoptStyleSheets(\n document.adoptedStyleSheets,\n mirror.getId(document)\n );\n };\n try {\n const handlers = [];\n const observe = (doc) => {\n var _a2;\n return callbackWrapper(initObservers)(\n {\n mutationCb: wrappedMutationEmit,\n mousemoveCb: (positions, source) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source,\n positions\n }\n }),\n mouseInteractionCb: (d) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.MouseInteraction,\n ...d\n }\n }),\n scrollCb: wrappedScrollEmit,\n viewportResizeCb: (d) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.ViewportResize,\n ...d\n }\n }),\n inputCb: (v2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Input,\n ...v2\n }\n }),\n mediaInteractionCb: (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.MediaInteraction,\n ...p\n }\n }),\n styleSheetRuleCb: (r2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.StyleSheetRule,\n ...r2\n }\n }),\n styleDeclarationCb: (r2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.StyleDeclaration,\n ...r2\n }\n }),\n canvasMutationCb: wrappedCanvasMutationEmit,\n fontCb: (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Font,\n ...p\n }\n }),\n selectionCb: (p) => {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Selection,\n ...p\n }\n });\n },\n customElementCb: (c2) => {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.CustomElement,\n ...c2\n }\n });\n },\n blockClass,\n ignoreClass,\n ignoreSelector,\n maskTextClass,\n maskTextSelector,\n maskInputOptions,\n inlineStylesheet,\n sampling,\n recordDOM,\n recordCanvas,\n inlineImages,\n userTriggeredOnInput,\n collectFonts,\n doc,\n maskInputFn,\n maskTextFn,\n keepIframeSrcFn,\n blockSelector,\n slimDOMOptions,\n dataURLOptions,\n mirror,\n iframeManager,\n stylesheetManager,\n shadowDomManager,\n processedNodeManager,\n canvasManager,\n ignoreCSSAttributes,\n plugins: ((_a2 = plugins == null ? void 0 : plugins.filter((p) => p.observer)) == null ? void 0 : _a2.map((p) => ({\n observer: p.observer,\n options: p.options,\n callback: (payload) => wrappedEmit({\n type: EventType.Plugin,\n data: {\n plugin: p.name,\n payload\n }\n })\n }))) || []\n },\n hooks\n );\n };\n iframeManager.addLoadListener((iframeEl) => {\n try {\n handlers.push(observe(iframeEl.contentDocument));\n } catch (error) {\n console.warn(error);\n }\n });\n const init = () => {\n takeFullSnapshot$1();\n handlers.push(observe(document));\n recording = true;\n };\n if (document.readyState === \"interactive\" || document.readyState === \"complete\") {\n init();\n } else {\n handlers.push(\n on(\"DOMContentLoaded\", () => {\n wrappedEmit({\n type: EventType.DomContentLoaded,\n data: {}\n });\n if (recordAfter === \"DOMContentLoaded\") init();\n })\n );\n handlers.push(\n on(\n \"load\",\n () => {\n wrappedEmit({\n type: EventType.Load,\n data: {}\n });\n if (recordAfter === \"load\") init();\n },\n window\n )\n );\n }\n return () => {\n handlers.forEach((h) => h());\n processedNodeManager.destroy();\n recording = false;\n unregisterErrorHandler();\n };\n } catch (error) {\n console.warn(error);\n }\n}\nrecord.addCustomEvent = (tag, payload) => {\n if (!recording) {\n throw new Error(\"please add custom event after start recording\");\n }\n wrappedEmit({\n type: EventType.Custom,\n data: {\n tag,\n payload\n }\n });\n};\nrecord.freezePage = () => {\n mutationBuffers.forEach((buf) => buf.freeze());\n};\nrecord.takeFullSnapshot = (isCheckout) => {\n if (!recording) {\n throw new Error(\"please take full snapshot after start recording\");\n }\n takeFullSnapshot$1(isCheckout);\n};\nrecord.mirror = mirror;\nvar n;\n!function(t2) {\n t2[t2.NotStarted = 0] = \"NotStarted\", t2[t2.Running = 1] = \"Running\", t2[t2.Stopped = 2] = \"Stopped\";\n}(n || (n = {}));\nexport {\n record\n};\n//# sourceMappingURL=record.js.map\n","import { isMobile } from \"./GleapHelper\";\nimport { record } from \"@rrweb/record\";\n\nexport default class GleapReplayRecorder {\n startDate = undefined;\n events = [];\n bufferSize = 0;\n stopFunction = undefined;\n customOptions = {};\n\n // GleapReplayRecorder singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapReplayRecorder();\n return this.instance;\n } else {\n return this.instance;\n }\n }\n\n constructor() {}\n\n setOptions(options) {\n this.customOptions = options;\n }\n\n /**\n * Start replays\n * @returns\n */\n start() {\n this.stop();\n\n this.startDate = Date.now();\n var events = this.events;\n\n var options = {\n inlineStylesheet: true,\n blockClass: \"gl-block\",\n ignoreClass: \"gl-ignore\",\n maskTextClass: \"gl-mask\",\n dataURLOptions: {\n quality: 0.7,\n },\n recordCanvas: false,\n sampling: {\n scroll: 150,\n mouseInteraction: {\n MouseUp: false,\n MouseDown: false,\n Click: true,\n ContextMenu: true,\n DblClick: true,\n Focus: true,\n Blur: true,\n TouchStart: true,\n TouchEnd: false,\n },\n },\n collectFonts: false,\n recordCrossOriginIframes: false,\n };\n\n try {\n this.stopFunction = record({\n ...options,\n ...this.customOptions,\n emit(rrwebEvent) {\n const { event } = ensureMaxMessageSize(rrwebEvent);\n events.push(event);\n },\n });\n } catch (e) {\n console.error(e);\n }\n }\n\n /**\n * Stop replays\n * @returns\n */\n stop() {\n if (this.stopFunction) {\n this.stopFunction();\n }\n\n this.startDate = undefined;\n this.events = [];\n this.bufferSize = 0;\n }\n\n /**\n * Get the current replay data\n * @returns {Promise}\n */\n getReplayData() {\n const replayResult = {\n startDate: this.startDate,\n events: this.events,\n baseUrl: window.location.origin,\n width: window.innerWidth,\n height: window.innerHeight,\n isMobile: isMobile(),\n type: \"rrweb\",\n };\n\n return replayResult;\n }\n}\n\nexport function ensureMaxMessageSize(data) {\n let stringifiedData = JSON.stringify(data);\n if (stringifiedData.length > 4000000) {\n const dataURIRegex = /data:([\\w\\/\\-\\.]+);(\\w+),([^)\"]*)/gim;\n const matches = stringifiedData.matchAll(dataURIRegex);\n for (const match of matches) {\n if (match[1].toLocaleLowerCase().slice(0, 6) === \"image/\") {\n stringifiedData = stringifiedData.replace(\n match[0],\n \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAQSURBVHgBAQUA+v8ABRg5/wHSAVZN1mnaAAAAAElFTkSuQmCC\"\n );\n } else {\n stringifiedData = stringifiedData.replace(match[0], \"\");\n }\n }\n }\n return { event: JSON.parse(stringifiedData), size: stringifiedData.length };\n}\n","export class ScreenDrawer {\n rerender;\n svgElement = null;\n path = null;\n strPath;\n strokeWidth = 12;\n strokeWidthRect = 6;\n bufferSize = 4;\n buffer = [];\n startPoint = null;\n tool = \"rect\";\n color = \"#EB144C\";\n mouseDown = null;\n mouseMove = null;\n mouseUp = null;\n resizeListener = null;\n pathBuffer = [];\n\n constructor(rerender) {\n const self = this;\n\n this.rerender = rerender;\n\n this.svgElement = document.querySelector(\".bb-capture-svg\");\n this.svgElement.style.minHeight = `${document.documentElement.scrollHeight}px`;\n\n // Window resize listener.\n this.resizeListener = function (e) {\n self.svgElement.style.minHeight = `${document.documentElement.scrollHeight}px`;\n };\n window.addEventListener(\"resize\", this.resizeListener, true);\n\n this.mouseDown = function (e) {\n e.preventDefault();\n\n const colorpicker = document.querySelector(\n \".bb-capture-toolbar-item-colorpicker\"\n );\n if (colorpicker) {\n colorpicker.style.display = \"none\";\n }\n\n self.fadeOutToolbar();\n if (self.tool === \"pen\" || self.tool === \"blur\") {\n self.mouseDownPen(e);\n }\n if (self.tool === \"rect\") {\n self.mouseDownRect(e);\n }\n };\n\n this.mouseMove = function (e) {\n e.preventDefault();\n if (self.tool === \"pen\" || self.tool === \"blur\") {\n self.mouseMovePen(e);\n }\n if (self.tool === \"rect\") {\n self.mouseMoveRect(e);\n }\n };\n\n this.mouseUp = function (e) {\n e.preventDefault();\n self.fadeInToolbar();\n if (self.tool === \"pen\" || self.tool === \"blur\") {\n self.mouseUpPen(e);\n }\n if (self.tool === \"rect\") {\n self.mouseUpRect(e);\n }\n };\n\n this.svgElement.addEventListener(\"mousedown\", this.mouseDown);\n this.svgElement.addEventListener(\"mousemove\", this.mouseMove);\n this.svgElement.addEventListener(\"mouseup\", this.mouseUp);\n this.svgElement.addEventListener(\"touchstart\", this.mouseDown, false);\n this.svgElement.addEventListener(\"touchmove\", this.mouseMove, false);\n this.svgElement.addEventListener(\"touchend\", this.mouseUp, false);\n\n setTimeout(() => {\n this.rerender();\n }, 100);\n }\n\n clear() {\n if (this.svgElement) {\n while (this.svgElement.firstChild) {\n this.svgElement.firstChild.remove();\n }\n }\n }\n\n destroy() {\n this.svgElement.removeEventListener(\"mousedown\", this.mouseDown);\n this.svgElement.removeEventListener(\"mousemove\", this.mouseMove);\n this.svgElement.removeEventListener(\"mouseup\", this.mouseUp);\n this.svgElement.removeEventListener(\"touchstart\", this.mouseDown);\n this.svgElement.removeEventListener(\"touchmove\", this.mouseMove);\n this.svgElement.removeEventListener(\"touchend\", this.mouseUp);\n window.removeEventListener(\"resize\", this.resizeListener);\n }\n\n mouseUpPen() {\n if (this.path) {\n this.path = null;\n }\n }\n\n mouseUpRect() {\n if (this.path) {\n this.path = null;\n }\n }\n\n mouseMovePen(e) {\n if (this.path) {\n this.appendToBuffer(this.getMousePosition(e));\n this.updateSvgPath();\n }\n }\n\n mouseMoveRect(e) {\n if (this.path) {\n var p = this.getMousePosition(e);\n var w = Math.abs(p.x - this.startPoint.x);\n var h = Math.abs(p.y - this.startPoint.y);\n var x = p.x;\n var y = p.y;\n if (p.x > this.startPoint.x) {\n x = this.startPoint.x;\n }\n if (p.y > this.startPoint.y) {\n y = this.startPoint.y;\n }\n\n this.path.setAttributeNS(null, \"x\", x);\n this.path.setAttributeNS(null, \"y\", y);\n this.path.setAttributeNS(null, \"width\", w);\n this.path.setAttributeNS(null, \"height\", h);\n }\n }\n\n mouseDownRect(e) {\n this.path = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n this.path.setAttribute(\"fill\", \"none\");\n this.path.setAttribute(\"stroke\", this.color);\n this.path.setAttribute(\"stroke-linecap\", \"round\");\n this.path.setAttribute(\"stroke-width\", this.strokeWidthRect);\n\n this.startPoint = this.getMousePosition(e);\n this.appendPathToSvg(this.path);\n }\n\n mouseDownPen(e) {\n var color = this.color + \"AA\";\n var strokeWidth = this.strokeWidth;\n\n if (this.tool === \"blur\") {\n color = \"#000000\";\n strokeWidth = 40;\n }\n\n this.path = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this.path.setAttribute(\"fill\", \"none\");\n this.path.setAttribute(\"stroke\", color);\n this.path.setAttribute(\"stroke-linecap\", \"round\");\n this.path.setAttribute(\"stroke-width\", strokeWidth);\n this.buffer = [];\n var pt = this.getMousePosition(e);\n this.appendToBuffer(pt);\n this.strPath = \"M\" + pt.x + \" \" + pt.y;\n this.path.setAttribute(\"d\", this.strPath);\n this.appendPathToSvg(this.path);\n }\n\n setTool(tool) {\n this.tool = tool;\n }\n\n setColor(color) {\n this.color = color;\n }\n\n getMousePosition(e) {\n if (e.touches && e.touches.length > 0) {\n return {\n x: e.touches[0].clientX,\n y: e.touches[0].clientY,\n };\n }\n\n return {\n x: e.clientX,\n y: e.clientY,\n };\n }\n\n // Calculate the average point, starting at offset in the buffer\n getAveragePoint(offset) {\n var len = this.buffer.length;\n if (len % 2 === 1 || len >= this.bufferSize) {\n var totalX = 0;\n var totalY = 0;\n var pt, i;\n var count = 0;\n for (i = offset; i < len; i++) {\n count++;\n pt = this.buffer[i];\n totalX += pt.x;\n totalY += pt.y;\n }\n return {\n x: totalX / count,\n y: totalY / count,\n };\n }\n return null;\n }\n\n updateSvgPath() {\n var pt = this.getAveragePoint(0);\n\n if (pt) {\n // Get the smoothed part of the path that will not change\n this.strPath += \" L\" + pt.x + \" \" + pt.y;\n\n // Get the last part of the path (close to the current mouse position)\n // This part will change if the mouse moves again\n var tmpPath = \"\";\n for (var offset = 2; offset < this.buffer.length; offset += 2) {\n pt = this.getAveragePoint(offset);\n tmpPath += \" L\" + pt.x + \" \" + pt.y;\n }\n\n // Set the complete current path coordinates\n this.path.setAttribute(\"d\", this.strPath + tmpPath);\n }\n }\n\n appendToBuffer(pt) {\n this.buffer.push(pt);\n while (this.buffer.length > this.bufferSize) {\n this.buffer.shift();\n }\n }\n\n appendPathToSvg(path) {\n this.svgElement.appendChild(path);\n this.pathBuffer.push(path);\n this.rerender();\n }\n\n removeLastAddedPathFromSvg() {\n if (this.pathBuffer.length <= 0 || !this.svgElement) {\n return;\n }\n\n this.svgElement.removeChild(this.pathBuffer[this.pathBuffer.length - 1]);\n\n this.pathBuffer.pop();\n\n this.rerender();\n }\n\n fadeOutToolbar() {\n var fadeTarget = document.querySelector(\".bb-capture-toolbar\");\n if (fadeTarget) {\n fadeTarget.style.opacity = 0;\n fadeTarget.style.pointerEvents = \"none\";\n }\n }\n\n fadeInToolbar() {\n var fadeTarget = document.querySelector(\".bb-capture-toolbar\");\n if (fadeTarget) {\n fadeTarget.style.opacity = 1;\n fadeTarget.style.pointerEvents = \"auto\";\n }\n }\n}\n","export class GleapScrollStopper {\n keys = { 37: 1, 38: 1, 39: 1, 40: 1 };\n supportsPassive = false;\n wheelOpt = this.supportsPassive ? { passive: false } : false;\n wheelEvent =\n \"onwheel\" in document.createElement(\"div\") ? \"wheel\" : \"mousewheel\";\n scrollDisabled = false;\n\n // GleapScrollStopper singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapScrollStopper();\n return this.instance;\n } else {\n return this.instance;\n }\n }\n\n constructor() {\n const self = this;\n try {\n window.addEventListener(\n \"test\",\n null,\n Object.defineProperty({}, \"passive\", {\n get: function () {\n self.supportsPassive = true;\n self.wheelOpt = self.supportsPassive ? { passive: false } : false;\n },\n })\n );\n } catch (e) {}\n }\n\n preventDefault(e) {\n e.preventDefault();\n }\n\n preventDefaultForScrollKeys(e) {\n if (this.keys && this.keys[e.keyCode]) {\n this.preventDefault(e);\n return false;\n }\n }\n\n static disableScroll() {\n const instance = this.getInstance();\n if (instance.scrollDisabled) {\n return;\n }\n\n instance.scrollDisabled = true;\n\n window.addEventListener(\"DOMMouseScroll\", instance.preventDefault, false); // older FF\n window.addEventListener(\n instance.wheelEvent,\n instance.preventDefault,\n instance.wheelOpt\n ); // modern desktop\n window.addEventListener(\n \"touchmove\",\n instance.preventDefault,\n instance.wheelOpt\n ); // mobile\n window.addEventListener(\n \"keydown\",\n instance.preventDefaultForScrollKeys,\n false\n );\n }\n\n static enableScroll() {\n const instance = this.getInstance();\n if (!instance.scrollDisabled) {\n return;\n }\n\n instance.scrollDisabled = false;\n window.removeEventListener(\n \"DOMMouseScroll\",\n instance.preventDefault,\n false\n );\n window.removeEventListener(\n instance.wheelEvent,\n instance.preventDefault,\n instance.wheelOpt\n );\n window.removeEventListener(\n \"touchmove\",\n instance.preventDefault,\n instance.wheelOpt\n );\n window.removeEventListener(\n \"keydown\",\n instance.preventDefaultForScrollKeys,\n false\n );\n }\n}\n","import Gleap, { GleapTranslationManager, GleapFrameManager } from \"./Gleap\";\nimport { ScreenDrawer } from \"./ScreenDrawer\";\nimport { GleapScrollStopper } from \"./GleapScrollStopper\";\nimport { GleapScreenRecorder } from \"./GleapScreenRecorder\";\nimport { loadIcon } from \"./UI\";\n\nexport default class GleapMarkerManager {\n type = \"screenshot\";\n dragCursor = null;\n screenRecorder = null;\n callback = null;\n screenDrawer = null;\n escListener = null;\n pageLeaveListener = null;\n overrideLanguage = Gleap.getInstance().overrideLanguage;\n\n constructor(type) {\n this.type = type;\n }\n\n hideWidgetUI() {\n const feedbackButton = document.querySelector(\".bb-feedback-button\");\n if (feedbackButton) {\n feedbackButton.style.display = \"none\";\n }\n\n const dialogUI = document.querySelector(\".bb-feedback-dialog-container\");\n if (dialogUI) {\n dialogUI.style.display = \"none\";\n }\n }\n\n showWidgetUI() {\n if (this.type === \"screenshot\") {\n GleapScrollStopper.enableScroll();\n }\n\n // Stop screenrecording.\n if (this.screenRecorder) {\n this.screenRecorder.stopScreenRecording();\n }\n\n // Unregister ESC listener\n this.unregisterListeners();\n\n // Cleanup mouse pointer\n this.cleanupMousePointer();\n\n if (this.screenDrawer) {\n this.screenDrawer.destroy();\n }\n\n // Remove the toolbar UI\n const dialog = document.querySelector(\".bb-capture-toolbar\");\n if (dialog) {\n dialog.remove();\n }\n\n // Capture SVG ref\n const captureSVG = document.querySelector(\".bb-capture-svg\");\n if (captureSVG) {\n captureSVG.classList.add(\"bb-capture-svg--preview\");\n }\n\n // Remove the preview UI\n const videoPreviewContainer = document.querySelector(\".bb-capture-preview\");\n if (videoPreviewContainer) {\n videoPreviewContainer.remove();\n }\n\n // Feedback button\n const feedbackButton = document.querySelector(\".bb-feedback-button\");\n if (feedbackButton) {\n feedbackButton.style.display = \"flex\";\n }\n\n // Feedback dialog container\n const dialogUI = document.querySelector(\".bb-feedback-dialog-container\");\n if (dialogUI) {\n dialogUI.style.display = \"block\";\n }\n\n // Dismiss button\n const dismissUI = document.querySelector(\".bb-capture-dismiss\");\n if (dismissUI) {\n dismissUI.style.display = \"none\";\n }\n\n // Hide the color picker\n const colorPicker = document.querySelector(\n \".bb-capture-toolbar-item-colorpicker\"\n );\n if (colorPicker) {\n colorPicker.style.display = \"none\";\n }\n\n // Border layer\n const borderLayer = document.querySelector(\n \".bb-capture-editor-borderlayer\"\n );\n if (borderLayer) {\n borderLayer.style.display = \"none\";\n }\n }\n\n clear() {\n const captureEditor = document.querySelector(\".bb-capture-editor\");\n if (captureEditor) {\n captureEditor.remove();\n }\n }\n\n setMouseMove(x, y) {\n if (!this.dragCursor) {\n return;\n }\n\n this.dragCursor.style.left = `${x + 6}px`;\n this.dragCursor.style.top = `${y - 26}px`;\n this.dragCursor.style.right = null;\n }\n\n mouseMoveEventHandler(e) {\n const x = e.clientX;\n const y = e.clientY;\n this.setMouseMove(x, y);\n }\n\n touchMoveEventHandler(e) {\n const x = e.touches[0].clientX;\n const y = e.touches[0].clientY;\n this.setMouseMove(x, y);\n }\n\n setupMousePointer() {\n const self = this;\n this.dragCursor = document.querySelector(\".bb-capture-editor-drag-info\");\n const captureSVG = document.querySelector(\".bb-capture-svg\");\n captureSVG.addEventListener(\"mouseenter\", (e) => {\n self.dragCursor.style.opacity = 1;\n });\n\n captureSVG.addEventListener(\"mouseleave\", (e) => {\n self.dragCursor.style.opacity = 0;\n });\n\n document.documentElement.addEventListener(\n \"mousemove\",\n this.mouseMoveEventHandler.bind(this)\n );\n document.documentElement.addEventListener(\n \"touchmove\",\n this.touchMoveEventHandler.bind(this)\n );\n }\n\n cleanupMousePointer() {\n document.documentElement.removeEventListener(\n \"mousemove\",\n this.mouseMoveEventHandler\n );\n document.documentElement.removeEventListener(\n \"touchmove\",\n this.touchMoveEventHandler\n );\n\n // Clean up toolbar drag listeners\n const dragHandle = document.querySelector(\".bb-capture-toolbar-item[data-type='drag']\");\n if (dragHandle) {\n dragHandle.removeEventListener(\"mousedown\", this.dragStart);\n dragHandle.removeEventListener(\"touchstart\", this.dragStart);\n document.removeEventListener(\"mousemove\", this.drag);\n document.removeEventListener(\"touchmove\", this.drag);\n document.removeEventListener(\"mouseup\", this.dragEnd);\n document.removeEventListener(\"touchend\", this.dragEnd);\n }\n\n if (this.dragCursor) {\n this.dragCursor.remove();\n }\n }\n\n createEditorUI() {\n // Add HTML for drawing and recording\n var bugReportingEditor = document.createElement(\"div\");\n bugReportingEditor.className = \"bb-capture-editor\";\n bugReportingEditor.innerHTML = `\n
\n \n
${loadIcon(\"dismiss\")}
\n
${loadIcon(\"rect\")}
\n
\n
\n ${loadIcon(\"drag\")}\n
\n ${this.type === \"capture\"\n ? `
\n ${loadIcon(\"recorderon\")}\n ${loadIcon(\"recorderoff\")}\n \n
\n
\n ${loadIcon(\"mic\")}\n \n
\n
2:00
\n
\n
\n ${loadIcon(\"pointer\")}\n
`\n : \"\"\n }\n
\n ${loadIcon(\"rect\")}\n
\n
\n ${loadIcon(\"pen\")}\n
\n
\n ${loadIcon(\"blur\")}\n
\n
\n
\n ${GleapTranslationManager.translateText(\n `pickAColor`\n )}\n
\n
\n ${loadIcon(\"undo\")}\n ${GleapTranslationManager.translateText(\n `undo`\n )}\n
\n ${this.type !== \"capture\"\n ? `
${GleapTranslationManager.translateText(\n `next`\n )}
`\n : \"\"\n }\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
${GleapTranslationManager.translateText(\n `retry`\n )}
\n
${GleapTranslationManager.translateText(\n `next`\n )}
\n
\n
\n
\n `;\n document.body.appendChild(bugReportingEditor);\n\n // Set RTL layout\n bugReportingEditor.setAttribute(\"dir\", GleapTranslationManager.getInstance().isRTLLayout ? \"rtl\" : \"ltr\");\n }\n\n showNextStep = function () {\n // Adapt the UI\n this.showWidgetUI();\n\n if (this.callback) {\n GleapFrameManager.getInstance().sendMessage({\n name: \"set-form-data\",\n data: {\n formKey: \"capture\",\n data: {\n value: this.type,\n dirty: true,\n }\n }\n });\n this.callback(true);\n }\n };\n\n unregisterListeners() {\n if (this.escListener) {\n document.removeEventListener(\"keydown\", this.escListener);\n }\n\n if (this.pageLeaveListener) {\n window.removeEventListener(\"beforeunload\", this.pageLeaveListener);\n }\n }\n\n registerListeners() {\n const self = this;\n\n // Esc listener\n this.escListener = function (evt) {\n evt = evt || window.event;\n var isEscape = false;\n var isEnter = false;\n if (\"key\" in evt) {\n isEscape = evt.key === \"Escape\";\n isEnter = evt.key === \"Enter\";\n }\n if (isEscape) {\n self.dismiss();\n }\n if (self.type === \"screenshot\" && isEnter) {\n self.showNextStep();\n }\n };\n document.addEventListener(\"keydown\", this.escListener);\n\n // Page leave listener\n this.pageLeaveListener = function (event) {\n event.preventDefault();\n event.returnValue = \"\";\n };\n window.addEventListener(\"beforeunload\", this.pageLeaveListener);\n }\n\n show(callback) {\n this.callback = callback;\n const self = this;\n\n // Register for listeners\n this.registerListeners();\n\n // Hide widget UI\n this.hideWidgetUI();\n\n // Create the editor UI\n this.createEditorUI();\n\n // Setup the mouse pointer\n this.setupMousePointer();\n\n // Setup screenshot data\n if (this.type === \"screenshot\") {\n // Overwrite snapshot position\n Gleap.getInstance().setGlobalDataItem(\"snapshotPosition\", {\n x: window.scrollX,\n y: window.scrollY,\n });\n\n // Disable scroll\n GleapScrollStopper.disableScroll();\n } else {\n // Setup screen recording\n this.setupScreenRecording();\n }\n\n // Hook up the drawing.\n this.screenDrawer = new ScreenDrawer(\n this.captureScreenDrawerRerender.bind(this)\n );\n\n this.setupColorPicker();\n this.setupToolbar();\n }\n\n setupColorPicker() {\n const self = this;\n const selectedColor = document.querySelector(\n \".bb-capture-toolbar-item-selectedcolor\"\n );\n const colorItems = document.querySelectorAll(\n \".bb-capture-toolbar-item-color\"\n );\n const colorpicker = document.querySelector(\n \".bb-capture-toolbar-item-colorpicker\"\n );\n\n for (var i = 0; i < colorItems.length; i++) {\n const colorItem = colorItems[i];\n const hexColor = colorItem.getAttribute(\"data-color\");\n colorItem.style.backgroundColor = hexColor;\n colorItem.onclick = function () {\n if (colorItem) {\n self.screenDrawer.setColor(hexColor);\n if (colorpicker) {\n colorpicker.style.display = \"none\";\n }\n selectedColor.style.backgroundColor = colorItem.style.backgroundColor;\n GleapMarkerManager.setPenColor(hexColor);\n }\n };\n }\n }\n\n static setPenColor(hexColor) {\n const penTips = document.querySelectorAll(\".bb-pen-tip\");\n for (var j = 0; j < penTips.length; j++) {\n penTips[j].style.fill = hexColor;\n }\n }\n\n dismiss() {\n this.showWidgetUI();\n\n if (this.callback) {\n this.callback(false);\n }\n }\n\n setupToolbar() {\n const self = this;\n const toolbar = document.querySelector(\".bb-capture-toolbar\");\n let isDragging = false;\n let currentX;\n let currentY;\n let initialX;\n let initialY;\n let xOffset = 0;\n let yOffset = 0;\n\n const getTransformValues = () => {\n const transform = window.getComputedStyle(toolbar).transform;\n if (transform === 'none') return { x: 0, y: 0 };\n const matrix = new DOMMatrix(transform);\n return { x: matrix.m41, y: matrix.m42 };\n };\n\n this.dragStart = (e) => {\n const { x, y } = getTransformValues();\n xOffset = x;\n yOffset = y;\n\n if (e.type === \"mousedown\") {\n initialX = e.clientX - xOffset;\n initialY = e.clientY - yOffset;\n } else {\n initialX = e.touches[0].clientX - xOffset;\n initialY = e.touches[0].clientY - yOffset;\n }\n isDragging = true;\n };\n\n this.dragEnd = () => {\n isDragging = false;\n };\n\n this.drag = (e) => {\n if (isDragging) {\n e.preventDefault();\n if (e.type === \"mousemove\") {\n currentX = e.clientX - initialX;\n currentY = e.clientY - initialY;\n } else {\n currentX = e.touches[0].clientX - initialX;\n currentY = e.touches[0].clientY - initialY;\n }\n\n xOffset = currentX;\n yOffset = currentY;\n\n toolbar.style.transform = `translate(${currentX}px, ${currentY}px)`;\n }\n };\n\n const dragHandle = document.querySelector(\".bb-capture-toolbar-item[data-type='drag']\");\n\n dragHandle.addEventListener(\"mousedown\", this.dragStart);\n dragHandle.addEventListener(\"touchstart\", this.dragStart);\n document.addEventListener(\"mousemove\", this.drag);\n document.addEventListener(\"touchmove\", this.drag);\n document.addEventListener(\"mouseup\", this.dragEnd);\n document.addEventListener(\"touchend\", this.dragEnd);\n\n // Hook up dismiss button\n const dismissButton = document.querySelector(\".bb-capture-dismiss\");\n dismissButton.onclick = function () {\n self.dismiss();\n };\n\n // Hook up send button\n const nextButton = document.querySelector(\".bb-capture-button-next\");\n if (nextButton) {\n nextButton.onclick = this.showNextStep.bind(this);\n }\n\n const colorpicker = document.querySelector(\n \".bb-capture-toolbar-item-colorpicker\"\n );\n\n // Capture SVG ref\n const captureSVG = document.querySelector(\".bb-capture-svg\");\n\n const chooseTool = function (type, toolbarItem) {\n const toolbarTools = document.querySelectorAll(\n \".bb-capture-toolbar-item-tool\"\n );\n for (let j = 0; j < toolbarTools.length; j++) {\n toolbarTools[j].classList.remove(\"bb-capture-toolbar-item--active\");\n }\n toolbarItem.classList.add(\"bb-capture-toolbar-item--active\");\n self.screenDrawer.setTool(type);\n self.dragCursor.innerHTML = \"\";\n if (type === \"pointer\") {\n captureSVG.style.pointerEvents = \"none\";\n } else {\n captureSVG.style.pointerEvents = \"auto\";\n try {\n var svgClone = toolbarItem.querySelector(\"svg\").cloneNode(true);\n if (svgClone && self.dragCursor) {\n self.dragCursor.appendChild(svgClone);\n }\n } catch (exp) { }\n }\n }\n\n // Setup toolbar items\n var toolbarItems = document.querySelectorAll(\".bb-capture-toolbar-item\");\n for (var i = 0; i < toolbarItems.length; i++) {\n const toolbarItem = toolbarItems[i];\n toolbarItem.onclick = function () {\n const type = toolbarItem.getAttribute(\"data-type\");\n if (colorpicker && type !== \"colorpicker\") {\n colorpicker.style.display = \"none\";\n }\n\n // Mic & recording buttons\n if (type === \"mic\") {\n self.screenRecorder.toggleAudio();\n }\n if (type === \"recording\") {\n if (self.screenRecorder.isRecording) {\n self.screenRecorder.stopScreenRecording();\n } else {\n self.screenRecorder.startScreenRecording();\n chooseTool(\"pointer\", document.querySelector(\".bb-capture-toolbar-item[data-type='pointer']\"));\n }\n }\n\n // Marker buttons\n if (self.type === \"capture\" && !self.screenRecorder.isRecording) {\n // Inactivate buttons.\n return;\n }\n if (\n type === \"pen\" ||\n type === \"blur\" ||\n type === \"rect\" ||\n type === \"pointer\"\n ) {\n chooseTool(type, toolbarItem);\n }\n if (type === \"colorpicker\") {\n if (colorpicker.style.display === \"flex\") {\n colorpicker.style.display = \"none\";\n } else {\n colorpicker.style.display = \"flex\";\n }\n }\n if (type === \"undo\") {\n self.screenDrawer.removeLastAddedPathFromSvg();\n }\n };\n }\n }\n\n captureScreenDrawerRerender() {\n if (!this.screenDrawer) {\n return;\n }\n\n const itemInactiveClass = \"bb-capture-editor-item-inactive\";\n const toolbarItems = document.querySelectorAll(\".bb-capture-toolbar-item\");\n for (var i = 0; i < toolbarItems.length; i++) {\n const toolbarItem = toolbarItems[i];\n const type = toolbarItem.getAttribute(\"data-type\");\n switch (type) {\n case \"undo\":\n if (\n this.screenDrawer.pathBuffer != null &&\n this.screenDrawer.pathBuffer.length > 0\n ) {\n toolbarItem.classList.remove(itemInactiveClass);\n } else {\n toolbarItem.classList.add(itemInactiveClass);\n }\n break;\n default:\n break;\n }\n }\n }\n\n captureRenderer() {\n if (!this.screenRecorder) {\n return;\n }\n\n if (this.screenRecorder.file) {\n Gleap.getInstance().setGlobalDataItem(\"screenRecordingData\", this.screenRecorder.file);\n }\n\n const itemInactiveClass = \"bb-capture-editor-item-inactive\";\n const timerLabel = document.querySelector(\".bb-capture-toolbar-item-timer\");\n const toolbarItems = document.querySelectorAll(\".bb-capture-toolbar-item\");\n const screenRecordingTooltip = document.querySelector(\n \".bb-tooltip-screen-recording\"\n );\n const audioRecordingTooltip = document.querySelector(\n \".bb-tooltip-audio-recording\"\n );\n const captureEditor = document.querySelector(\".bb-capture-editor\");\n const recordingClass = \"bb-capture-editor-recording\";\n const notRecordingClass = \"bb-capture-editor-notrecording\";\n if (this.screenRecorder.isRecording) {\n captureEditor.classList.add(recordingClass);\n captureEditor.classList.remove(notRecordingClass);\n } else {\n captureEditor.classList.add(notRecordingClass);\n captureEditor.classList.remove(recordingClass);\n }\n \n // Update UI.\n const dialog = document.querySelector(\".bb-capture-toolbar\");\n const videoPreviewContainer = document.querySelector(\".bb-capture-preview\");\n videoPreviewContainer.style.display = this.screenRecorder.file\n ? \"flex\"\n : \"none\";\n dialog.style.display = !this.screenRecorder.file ? \"flex\" : \"none\";\n\n for (var i = 0; i < toolbarItems.length; i++) {\n const toolbarItem = toolbarItems[i];\n const type = toolbarItem.getAttribute(\"data-type\");\n switch (type) {\n case \"mic\":\n if (\n this.screenRecorder.audioAvailable &&\n this.screenRecorder.available\n ) {\n toolbarItem.classList.remove(itemInactiveClass);\n if (!this.screenRecorder.audioMuted) {\n toolbarItem.classList.remove(\n \"bb-capture-toolbar-item--inactivecross\"\n );\n audioRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"mute\"\n );\n } else {\n toolbarItem.classList.add(\n \"bb-capture-toolbar-item--inactivecross\"\n );\n audioRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"unmute\"\n );\n }\n } else {\n toolbarItem.classList.add(itemInactiveClass);\n toolbarItem.classList.add(\"bb-capture-toolbar-item--inactivecross\");\n audioRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"browserNotSupported\"\n );\n }\n break;\n\n case \"recording\":\n if (this.screenRecorder.available) {\n toolbarItem.classList.remove(itemInactiveClass);\n if (this.screenRecorder.isRecording) {\n toolbarItem.setAttribute(\"data-active\", \"true\");\n screenRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"stopRecording\"\n );\n timerLabel.style.display = \"block\";\n } else {\n toolbarItem.setAttribute(\"data-active\", \"false\");\n screenRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"startRecording\"\n );\n timerLabel.style.display = \"none\";\n }\n } else {\n // Recording is not available.\n toolbarItem.classList.add(itemInactiveClass);\n screenRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"browserNotSupported\"\n );\n }\n break;\n\n default:\n break;\n }\n }\n }\n\n setupScreenRecording() {\n const self = this;\n\n // Hook preview next button\n const nextButtonPreview = document.querySelector(\n \".bb-capture-preview-sendbutton\"\n );\n nextButtonPreview.onclick = this.showNextStep.bind(this);\n\n // Hook retry button\n const retryButton = document.querySelector(\n \".bb-capture-preview-retrybutton\"\n );\n retryButton.onclick = function () {\n self.screenRecorder.clearPreview();\n if (self.screenDrawer) {\n self.screenDrawer.clear();\n }\n };\n\n // Setup screen recorder\n this.screenRecorder = new GleapScreenRecorder(\n this.captureRenderer.bind(this),\n GleapTranslationManager.translateText(\n \"accessToScreenSharingDenied\"\n )\n );\n }\n}\n","import {\n GleapFrameManager,\n GleapFeedbackButtonManager,\n GleapConfigManager,\n} from \"./Gleap\";\n\nexport default class GleapTranslationManager {\n overrideLanguage = \"\";\n isRTLLayout = false;\n\n // GleapTranslationManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapTranslationManager();\n }\n return this.instance;\n }\n\n /**\n * Returns the language to override the default language.\n * @returns {string}\n */\n getOverrideLanguage() {\n return this.overrideLanguage;\n }\n\n /**\n * Sets the language to override the default language.\n * @param {*} language\n */\n setOverrideLanguage(language) {\n this.overrideLanguage = language;\n }\n\n updateRTLSupport() {\n // Update RTL support.\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n\n this.isRTLLayout = false;\n if (\n flowConfig &&\n flowConfig.localizationOptions &&\n flowConfig.localizationOptions.rtl\n ) {\n this.isRTLLayout = true;\n }\n\n GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n GleapFrameManager.getInstance().updateFrameStyle();\n }\n\n getActiveLanguage() {\n var language = \"en\";\n if (typeof navigator !== \"undefined\") {\n language = navigator.language.toLowerCase();\n }\n\n // Get language from HTML lang attribute if available\n if (typeof document !== \"undefined\" && document.documentElement) {\n const htmlLang = document.documentElement.lang;\n if (htmlLang && htmlLang.trim() !== \"\") {\n language = htmlLang.toLowerCase().trim();\n }\n }\n\n if (this.overrideLanguage && this.overrideLanguage !== \"\") {\n language = this.overrideLanguage.toLowerCase();\n }\n\n return language;\n }\n\n static translateText(key) {\n if (!key) {\n return \"\";\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const staticTranslation = flowConfig.staticTranslations;\n\n if (staticTranslation && staticTranslation[key]) {\n return staticTranslation[key];\n }\n\n return key;\n }\n\n static translateTextWithVars(key, vars) {\n if (!key) {\n return \"\";\n }\n\n var template = this.translateText(key);\n if (!template) {\n return \"\";\n }\n\n return template.replace(/{(\\w+)}/g, function (_, key) {\n return vars[key];\n });\n }\n}\n","import Gleap from \"./Gleap\";\n\nexport default class GleapShortcutListener {\n shortCutListener = undefined;\n\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapShortcutListener();\n }\n return this.instance;\n }\n\n start() {\n if (this.shortCutListener) {\n return;\n }\n\n const charForEvent = function (event) {\n var code;\n\n if (event.key !== undefined) {\n code = event.key;\n } else if (event.keyIdentifier !== undefined) {\n code = event.keyIdentifier;\n } else if (event.keyCode !== undefined) {\n code = event.keyCode;\n }\n\n return code;\n };\n\n this.shortCutListener = document.addEventListener(\"keyup\", function (e) {\n const char = charForEvent(e);\n if (\n e.ctrlKey &&\n (char === \"u\" || char === \"U\" || char === 85)\n ) {\n Gleap.startFeedbackFlowWithOptions(\"bugreporting\", {\n autostartDrawing: true\n });\n }\n });\n }\n\n stop() {\n if (this.shortCutListener) {\n document.removeEventListener(\"keyup\", this.shortCutListener);\n this.shortCutListener = undefined;\n }\n }\n}","\nexport default class GleapPreFillManager {\n formPreFill = {};\n \n // GleapPreFillManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapPreFillManager();\n }\n return this.instance;\n }\n }\n ","import Gleap, {\n GleapFeedbackButtonManager,\n GleapConfigManager,\n GleapFrameManager,\n GleapSession,\n GleapAudioManager,\n GleapTranslationManager,\n GleapEventManager,\n} from \"./Gleap\";\nimport { loadFromGleapCache, saveToGleapCache } from \"./GleapHelper\";\nimport { loadIcon } from \"./UI\";\n\nexport default class GleapNotificationManager {\n notificationContainer = null;\n notifications = [];\n unreadCount = 0;\n unreadNotificationsKey = \"unread-notifications\";\n isTabActive = true;\n showNotificationBadge = true;\n\n // Keep track of the current index of news being shown\n currentNewsIndex = 0;\n\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapNotificationManager();\n }\n return this.instance;\n }\n\n constructor() {}\n\n updateTabBarNotificationCount() {\n GleapEventManager.notifyEvent(\"unread-count-changed\", this.unreadCount);\n }\n\n injectNotificationUI() {\n if (this.notificationContainer) {\n return;\n }\n\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-notification-container gleap-font\";\n document.body.appendChild(elem);\n this.notificationContainer = elem;\n\n this.updateContainerStyle();\n this.reloadNotificationsFromCache();\n }\n\n reloadNotificationsFromCache() {\n try {\n const notificationsFromCache = loadFromGleapCache(\n this.unreadNotificationsKey\n );\n if (notificationsFromCache && notificationsFromCache.length > 0) {\n let nots = notificationsFromCache.filter(\n (notification) =>\n new Date(notification.createdAt) >\n new Date(Date.now() - 1 * 60 * 60 * 1000)\n );\n\n if (nots.length > 2) {\n this.notifications = nots.splice(0, nots.length - 2);\n } else {\n this.notifications = nots;\n }\n this.renderNotifications();\n }\n } catch (exp) {}\n }\n\n setNotificationCount(unreadCount) {\n this.unreadCount = unreadCount;\n this.updateTabBarNotificationCount();\n\n // Update the badge counter.\n GleapFeedbackButtonManager.getInstance().updateNotificationBadge(\n this.unreadCount\n );\n }\n\n showNotification(notification) {\n if (!(this.notificationContainer && notification && notification.data)) {\n return;\n }\n\n const notificationsForOutbound = this.notifications.find(\n (e) => notification.outbound === e.outbound\n );\n if (!notificationsForOutbound) {\n this.notifications.push(notification);\n\n // Play sound only if it's a new one\n if (notification.sound) {\n GleapAudioManager.ping();\n }\n }\n if (this.notifications.length > 2) {\n this.notifications.shift();\n }\n\n // Persist notifications.\n saveToGleapCache(this.unreadNotificationsKey, this.notifications);\n\n this.renderNotifications();\n }\n\n /**\n * Renders notifications. For news-type notifications, only show\n * one at a time if there are multiple, with a \"Next\" button to cycle.\n * The \"Next\" button + pagination are placed within the news content area.\n *\n * - Sorts news notifications by createdAt (oldest first).\n * - Shows \"Done\" on the last news item instead of \"Next\".\n */\n renderNotifications() {\n if (!this.notificationContainer) {\n return;\n }\n\n // Clear the existing notifications in the container (UI only).\n this.clearAllNotifications(true);\n\n // Append a close button (which clears everything).\n const clearElem = document.createElement(\"div\");\n clearElem.onclick = () => {\n this.clearAllNotifications();\n // Reset the news index when everything is closed\n this.currentNewsIndex = 0;\n };\n clearElem.className = \"gleap-notification-close\";\n clearElem.innerHTML = loadIcon(\"dismiss\");\n this.notificationContainer.appendChild(clearElem);\n\n // Separate out news notifications vs. others, then sort news by date ascending\n const newsNotifications = this.notifications\n .filter((n) => n.data.news)\n .sort((a, b) => new Date(a.createdAt) - new Date(b.createdAt));\n\n const otherNotifications = this.notifications.filter((n) => !n.data.news);\n\n // --- Render NEWS notifications (with pagination) ---\n if (newsNotifications.length > 0) {\n // We only show ONE news item at a time if there's more than one\n const currentIndex =\n this.currentNewsIndex < newsNotifications.length\n ? this.currentNewsIndex\n : 0;\n const currentNews = newsNotifications[currentIndex];\n\n // Main wrapper for the news notification\n const newsElem = document.createElement(\"div\");\n newsElem.className = \"gleap-notification-item-news\";\n\n // The container that holds image + content\n const newsContainerElem = document.createElement(\"div\");\n newsContainerElem.className = \"gleap-notification-item-news-container\";\n\n // Create the image element (clickable)\n if (\n currentNews.data.coverImageUrl &&\n currentNews.data.coverImageUrl !== \"\" &&\n !currentNews.data.coverImageUrl.includes(\"NewsImagePlaceholder\")\n ) {\n const newsImageElem = document.createElement(\"img\");\n newsImageElem.className = \"gleap-notification-item-news-image\";\n newsImageElem.src = currentNews.data.coverImageUrl;\n\n // Only the image is clickable\n newsImageElem.onclick = (e) => {\n e.stopPropagation();\n this.openNews(currentNews);\n };\n newsContainerElem.appendChild(newsImageElem);\n }\n\n // The content container\n const newsContentElem = document.createElement(\"div\");\n newsContentElem.className = \"gleap-notification-item-news-content\";\n\n // Title (clickable)\n const newsTitleElem = document.createElement(\"div\");\n newsTitleElem.className = \"gleap-notification-item-news-content-title\";\n\n let content = currentNews.data.text || \"\";\n content = content.replaceAll(\n \"{{name}}\",\n GleapSession.getInstance().getName()\n );\n newsTitleElem.innerText = content;\n\n // Only the title is clickable\n newsTitleElem.onclick = (e) => {\n e.stopPropagation();\n this.openNews(currentNews);\n };\n\n newsContentElem.appendChild(newsTitleElem);\n\n // Description / Sender\n const descHTML = this.renderDescription(currentNews);\n if (descHTML) {\n const descElem = document.createElement(\"div\");\n descElem.className = \"gleap-notification-item-news-preview\";\n descElem.innerHTML = descHTML;\n newsContentElem.appendChild(descElem);\n }\n\n // If there's more than one news item, show pagination + next/done button\n if (newsNotifications.length > 1) {\n // Pagination container (still inside .gleap-notification-item-news-content)\n const paginationElem = document.createElement(\"div\");\n paginationElem.className = \"gleap-news-pagination\";\n\n // Show current item / total\n const pageIndicator = document.createElement(\"span\");\n pageIndicator.className = \"gleap-news-page-indicator\";\n pageIndicator.innerText = `${currentIndex + 1} / ${\n newsNotifications.length\n }`;\n paginationElem.appendChild(pageIndicator);\n\n // Next or Done button\n const nextBtn = document.createElement(\"button\");\n nextBtn.className = \"gleap-news-next-button\";\n\n if (currentIndex < newsNotifications.length - 1) {\n nextBtn.innerText = GleapTranslationManager.translateText(`next`);\n nextBtn.onclick = (e) => {\n e.stopPropagation(); // so we can click the button freely\n this.currentNewsIndex++;\n this.renderNotifications();\n };\n } else {\n nextBtn.innerText = GleapTranslationManager.translateText(`done`);\n nextBtn.onclick = (e) => {\n e.stopPropagation();\n this.clearAllNotifications();\n this.currentNewsIndex = 0;\n };\n }\n paginationElem.appendChild(nextBtn);\n newsContentElem.appendChild(paginationElem);\n }\n\n // Append content to container\n newsContainerElem.appendChild(newsContentElem);\n // Append container to the main element\n newsElem.appendChild(newsContainerElem);\n // Finally append to the notification container\n this.notificationContainer.appendChild(newsElem);\n }\n\n // --- Render OTHER notifications normally ---\n for (let i = 0; i < otherNotifications.length; i++) {\n const notification = otherNotifications[i];\n let content = notification.data.text || \"\";\n // Replace placeholders\n content = content.replaceAll(\n \"{{name}}\",\n GleapSession.getInstance().getName()\n );\n\n const elem = document.createElement(\"div\");\n elem.onclick = () => {\n if (notification.data.conversation) {\n Gleap.openConversation(\n notification.data.conversation.shareToken,\n true\n );\n } else if (notification.data.checklist) {\n Gleap.openChecklist(notification.data.checklist.id, true);\n } else {\n Gleap.open();\n }\n };\n\n // Check if it's a checklist type\n if (notification.data.checklist) {\n let progress = Math.round(\n (notification.data.currentStep / notification.data.totalSteps) * 100\n );\n if (progress < 100) {\n progress += 4;\n }\n\n elem.className = \"gleap-notification-item-checklist\";\n elem.innerHTML = `\n
\n
\n
\n ${notification.data.text}\n
\n
\n
\n
\n
\n \n \n \n ${notification.data.nextStepTitle}\n
\n
\n
`;\n } else {\n // Standard non-news notification\n elem.className = \"gleap-notification-item\";\n elem.innerHTML = `\n ${\n notification.data.sender &&\n notification.data.sender.profileImageUrl &&\n ``\n }\n
\n ${\n notification.data.sender\n ? `
\n ${notification.data.sender.name}\n
`\n : \"\"\n }\n
${content}
\n
`;\n }\n this.notificationContainer.appendChild(elem);\n }\n\n const hasNotifications =\n newsNotifications.length > 0 || otherNotifications.length > 0;\n if (!hasNotifications) {\n // Clear the notification container\n this.clearAllNotifications(true);\n }\n }\n\n /**\n * Helper to open news from a given notification.\n */\n openNews(notification) {\n if (notification.data.news) {\n Gleap.openNewsArticle(notification.data.news.id, true);\n } else {\n Gleap.open();\n }\n }\n\n /**\n * Helper to render preview or sender info for news notifications.\n */\n renderDescription(notification) {\n const { previewText, sender } = notification.data;\n if (previewText && previewText.length > 0) {\n return previewText;\n } else if (sender) {\n // Return HTML for the sender name + optional image\n return `\n
\n ${\n sender.profileImageUrl\n ? `\"${sender.name}\"`\n : \"\"\n }\n ${sender.name}\n
\n `;\n }\n return \"\";\n }\n\n /**\n * Clears all notifications from the container.\n *\n * @param {boolean} uiOnly - Whether to only clear the UI or also the notifications.\n */\n clearAllNotifications(uiOnly = false) {\n if (!this.notificationContainer) {\n return;\n }\n\n if (!uiOnly) {\n this.notifications = [];\n // Reset currentNewsIndex whenever we clear them out\n this.currentNewsIndex = 0;\n saveToGleapCache(this.unreadNotificationsKey, this.notifications);\n }\n\n while (this.notificationContainer.firstChild) {\n this.notificationContainer.removeChild(\n this.notificationContainer.firstChild\n );\n }\n }\n\n updateContainerStyle() {\n if (!this.notificationContainer) {\n return;\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const classLeft = \"gleap-notification-container--left\";\n const classNoButton = \"gleap-notification-container--no-button\";\n this.notificationContainer.classList.remove(classLeft);\n this.notificationContainer.classList.remove(classNoButton);\n\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_BOTTOM_LEFT\n ) {\n this.notificationContainer.classList.add(classLeft);\n }\n\n if (GleapFeedbackButtonManager.getInstance().buttonHidden === null) {\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_NONE\n ) {\n this.notificationContainer.classList.add(classNoButton);\n }\n } else {\n if (GleapFeedbackButtonManager.getInstance().buttonHidden) {\n this.notificationContainer.classList.add(classNoButton);\n }\n }\n\n this.notificationContainer.setAttribute(\n \"dir\",\n GleapTranslationManager.getInstance().isRTLLayout ? \"rtl\" : \"ltr\"\n );\n }\n}\n","import Gleap, { GleapFrameManager } from \"./Gleap\";\n\nexport default class GleapBannerManager {\n bannerUrl = \"https://outboundmedia.gleap.io\";\n bannerContainer = null;\n bannerData = null;\n\n // GleapBannerManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapBannerManager();\n }\n return this.instance;\n }\n\n constructor() {\n this.startCommunication();\n }\n\n setBannerUrl(url) {\n this.bannerUrl = url;\n }\n\n startCommunication() {\n // Add window message listener.\n window.addEventListener(\"message\", (event) => {\n if (!this.bannerUrl?.includes(event.origin)) {\n return;\n }\n\n try {\n const data = JSON.parse(event.data);\n\n if (data?.type !== \"BANNER\") {\n return;\n }\n\n if (data.name === \"banner-loaded\" && this.bannerData) {\n this.sendMessage({\n name: \"banner-data\",\n data: this.bannerData,\n });\n }\n if (data.name === \"banner-height\") {\n document.documentElement.style.setProperty(\n \"--gleap-margin-top\",\n data.data.height + \"px\"\n );\n }\n if (data.name === \"banner-data-set\") {\n document.body.classList.add(\"gleap-b-shown\");\n\n if (this.bannerData?.format === \"floating\") {\n document.body.classList.add(\"gleap-b-f\");\n }\n }\n if (data.name === \"banner-close\") {\n this.removeBannerUI();\n }\n if (data.name === \"start-conversation\") {\n Gleap.startBot(data.data?.botId);\n }\n if (data.name === \"start-custom-action\") {\n Gleap.triggerCustomAction(data.data?.action);\n }\n if (data.name === \"start-product-tour\") {\n Gleap.startProductTour(data.data?.tourId, true);\n }\n if (data.name === \"open-url\") {\n const url = data.data;\n const newTab = data.newTab ? true : false;\n GleapFrameManager.getInstance().urlHandler(url, newTab);\n }\n if (data.name === \"show-form\") {\n Gleap.startFeedbackFlow(data.data?.formId);\n }\n if (data.name === \"show-survey\") {\n Gleap.showSurvey(data.data?.formId, data.data?.surveyFormat);\n }\n if (data.name === \"show-news-article\") {\n Gleap.openNewsArticle(data.data?.articleId);\n }\n if (data.name === \"show-help-article\") {\n Gleap.openHelpCenterArticle(data.data?.articleId);\n }\n if (data.name === \"show-checklist\") {\n Gleap.startChecklist(\n data.data?.checklistId,\n true,\n data.data?.sharedKey\n );\n }\n } catch (exp) {}\n });\n }\n\n removeBannerUI() {\n if (this.bannerContainer) {\n document.body.removeChild(this.bannerContainer);\n this.bannerContainer = null;\n }\n\n document.body.classList.remove(\"gleap-b-shown\");\n document.body.classList.remove(\"gleap-b-f\");\n }\n\n /**\n * Injects the feedback button into the current DOM.\n */\n injectBannerUI(bannerData) {\n if (!document.body) {\n return false;\n }\n\n if (this.bannerContainer) {\n this.removeBannerUI();\n }\n\n this.bannerData = bannerData;\n\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-b\";\n elem.innerHTML = ``;\n document.body.appendChild(elem);\n this.bannerContainer = elem;\n }\n\n sendMessage(data) {\n try {\n const gleapBFrame = document.querySelector(\".gleap-b-frame\");\n if (gleapBFrame && gleapBFrame.contentWindow) {\n gleapBFrame.contentWindow.postMessage(\n JSON.stringify({\n ...data,\n type: \"banner\",\n }),\n \"*\"\n );\n }\n } catch (e) {}\n }\n\n showBanner(bannerData) {\n this.injectBannerUI(bannerData);\n }\n}\n","import Gleap, { GleapConfigManager, GleapFrameManager } from \"./Gleap\";\n\nexport default class GleapModalManager {\n modalUrl = \"https://outboundmedia.gleap.io/modal\";\n modalContainer = null;\n modalData = null;\n modalBackdropClickListener = null;\n\n // singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapModalManager();\n }\n return this.instance;\n }\n\n constructor() {\n this._listenForMessages();\n }\n\n setModalUrl(url) {\n this.modalUrl = url;\n }\n\n _listenForMessages() {\n window.addEventListener(\"message\", (event) => {\n if (!this.modalUrl?.includes(event.origin)) {\n return;\n }\n\n try {\n const data = JSON.parse(event.data);\n\n if (data?.type !== \"MODAL\") {\n return;\n }\n\n if (data.name === \"modal-loaded\" && this.modalData) {\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const primaryColor = flowConfig.color ? flowConfig.color : \"#485BFF\";\n const backgroundColor = flowConfig.backgroundColor\n ? flowConfig.backgroundColor\n : \"#FFFFFF\";\n\n this._postMessage({\n name: \"modal-data\",\n data: {\n ...this.modalData,\n primaryColor: primaryColor,\n backgroundColor: backgroundColor,\n },\n });\n }\n if (data.name === \"modal-height\") {\n const height = data?.data?.height;\n if (height) {\n // Set the height of the modal iframe\n const iframe =\n this.modalContainer.querySelector(\".gleap-modal-frame\");\n if (iframe) {\n iframe.style.height = `${height}px`;\n }\n }\n }\n if (data.name === \"modal-data-set\") {\n // TODO: Implement\n }\n if (data.name === \"modal-close\") {\n this.hideModal();\n }\n if (data.name === \"start-conversation\") {\n Gleap.startBot(data.data?.botId);\n }\n if (data.name === \"start-custom-action\") {\n Gleap.triggerCustomAction(data.data?.action);\n }\n if (data.name === \"start-product-tour\") {\n Gleap.startProductTour(data.data?.tourId, true);\n }\n if (data.name === \"open-url\") {\n const url = data.data;\n const newTab = data.newTab ? true : false;\n GleapFrameManager.getInstance().urlHandler(url, newTab);\n }\n if (data.name === \"show-form\") {\n Gleap.startFeedbackFlow(data.data?.formId);\n }\n if (data.name === \"show-survey\") {\n Gleap.showSurvey(data.data?.formId, data.data?.surveyFormat);\n }\n if (data.name === \"show-news-article\") {\n Gleap.openNewsArticle(data.data?.articleId);\n }\n if (data.name === \"show-help-article\") {\n Gleap.openHelpCenterArticle(data.data?.articleId);\n }\n if (data.name === \"show-checklist\") {\n Gleap.startChecklist(\n data.data?.checklistId,\n true,\n data.data?.sharedKey\n );\n }\n } catch (exp) {}\n });\n }\n\n _injectModalUI(modalData) {\n if (!document.body) return false;\n\n if (this.modalContainer) {\n this.hideModal();\n }\n\n this.modalData = modalData;\n\n const wrapper = document.createElement(\"div\");\n wrapper.className = \"gleap-modal-wrapper\";\n wrapper.innerHTML = `\n
\n
\n \n
\n `;\n document.body.appendChild(wrapper);\n this.modalContainer = wrapper;\n\n // Add on backdrop click listener\n this.modalBackdropClickListener = this.modalContainer\n .querySelector(\".gleap-modal-backdrop\")\n .addEventListener(\"click\", () => {\n if (this.modalData?.showCloseButton ?? true) {\n this.hideModal();\n }\n });\n\n // lock background scroll\n document.body.classList.add(\"gleap-modal-open\");\n }\n\n _postMessage(message) {\n try {\n const frame = this.modalContainer.querySelector(\".gleap-modal-frame\");\n if (frame?.contentWindow) {\n frame.contentWindow.postMessage(\n JSON.stringify({ ...message, type: \"modal\" }),\n this.modalUrl\n );\n }\n } catch (err) {}\n }\n\n showModal(modalData) {\n if (modalData && modalData.config) {\n this._injectModalUI(modalData.config);\n }\n }\n\n hideModal() {\n if (!this.modalContainer) return;\n\n if (this.modalBackdropClickListener) {\n this.modalContainer\n .querySelector(\".gleap-modal-backdrop\")\n .removeEventListener(\"click\", this.modalBackdropClickListener);\n }\n\n document.body.removeChild(this.modalContainer);\n this.modalContainer = null;\n document.body.classList.remove(\"gleap-modal-open\");\n }\n}\n","export default class GleapAudioManager {\n static audio;\n static settings = {\n play: true\n };\n\n static playSound(play) {\n this.settings.play = play;\n }\n\n static ping() {\n try {\n if (!this.settings.play) {\n return;\n }\n\n if (!this.audio) {\n this.audio = new Audio('https://js.gleap.io/res/ping.mp3');\n }\n\n const playPromise = this.audio.play();\n if (playPromise !== undefined) {\n playPromise.then(_ => { })\n .catch(error => { });\n }\n } catch (exp) { }\n }\n}\n","export default class GleapTagManager {\n tags = [];\n\n // GleapTagManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapTagManager();\n }\n return this.instance;\n }\n\n /**\n * Returns the tags\n * @returns {*}\n */\n getTags() {\n return this.tags;\n }\n\n /**\n * Sets the tags sent with every ticket.\n * @param {*} tags Array of strings\n */\n setTags(tags) {\n this.tags = tags;\n }\n}\n","/**\n * Returns the Tag of the element\n * @param { Object } element\n * @return { String }\n */\nexport function getID( el )\n{\n const id = el.getAttribute( 'id' );\n\n if( id !== null && id !== '')\n {\n // if the ID starts with a number or contains \":\" selecting with a hash will cause a DOMException\n return id.match(/(?:^\\d|:)/) ? `[id=\"${id}\"]` : '#' + id;\n }\n return null;\n}\n","/**\n * Get class names for an element\n *\n * @pararm { Element } el\n * @return { Array }\n */\nexport function getClasses( el )\n{\n if( !el.hasAttribute( 'class' ) )\n {\n return [];\n }\n\n try {\n let classList = Array.prototype.slice.call( el.classList )\n\n // return only the valid CSS selectors based on RegEx\n return classList.filter(item => !/^[a-z_-][a-z\\d_-]*$/i.test( item ) ? null : item );\n } catch (e) {\n let className = el.getAttribute( 'class' );\n\n // remove duplicate and leading/trailing whitespaces\n className = className.trim().replace( /\\s+/g, ' ' );\n\n // split into separate classnames\n return className.split( ' ' );\n }\n}\n\n/**\n * Returns the Class selectors of the element\n * @param { Object } element\n * @return { Array }\n */\nexport function getClassSelectors( el )\n{\n const classList = getClasses( el ).filter( Boolean );\n return classList.map( cl => `.${cl}` );\n}\n","/**\n * Recursively combinate items.\n * @param { Array } result\n * @param { Array } items\n * @param { Array } data\n * @param { Number } start\n * @param { Number } end\n * @param { Number } index\n * @param { Number } k\n */\nfunction kCombinations( result, items, data, start, end, index, k )\n{\n if( index === k )\n {\n result.push( data.slice( 0, index ).join( '' ) );\n return;\n }\n\n for( let i = start; i <= end && end - i + 1 >= k - index; ++i )\n {\n data[index] = items[i];\n kCombinations( result, items, data, i + 1, end, index + 1, k );\n }\n}\n\n/**\n * Returns all the possible selector combinations\n * @param { Array } items\n * @param { Number } k\n * @return { Array }\n */\nexport function getCombinations( items, k )\n{\n const result = [],\n n = items.length,\n data = [];\n\n for( var l = 1; l <= k; ++l )\n {\n kCombinations( result, items, data, 0, n - 1, 0, l );\n }\n\n return result;\n}\n","/**\n * Determines if the passed el is a DOM element\n */\nexport function isElement( el )\n{\n let isElem;\n\n if ( typeof HTMLElement === 'object' )\n {\n isElem = el instanceof HTMLElement;\n }\n else\n {\n isElem = !!el && ( typeof el === 'object' ) && el.nodeType === 1 && typeof el.nodeName === 'string';\n }\n return isElem;\n}\n","import { isElement } from './isElement';\n\n/**\n * Returns the selectors based on the position of the element relative to its siblings\n * @param { Object } element\n * @return { Array }\n */\nexport function getNthChild( element )\n{\n let counter = 0;\n let k;\n let sibling;\n const { parentNode } = element;\n\n if( Boolean( parentNode ) )\n {\n const { childNodes } = parentNode;\n const len = childNodes.length;\n for ( k = 0; k < len; k++ )\n {\n sibling = childNodes[ k ];\n if( isElement( sibling ) )\n {\n counter++;\n if( sibling === element )\n {\n return `:nth-child(${counter})`;\n }\n }\n }\n }\n return null;\n}\n","/**\n * Returns the Tag of the element\n * @param { Object } element\n * @return { String }\n */\nexport function getTag( el )\n{\n return el.tagName.toLowerCase().replace(/:/g, '\\\\:');\n}\n","/**\n * Checks if the selector is unique\n * @param { Object } element\n * @param { String } selector\n * @return { Array }\n */\nexport function isUnique( el, selector )\n{\n if( !Boolean( selector ) ) return false;\n const elems = el.ownerDocument.querySelectorAll( selector );\n return elems.length === 1 && elems[ 0 ] === el;\n}\n","/**\n * Expose `unique`\n */\n\nimport { getID } from './getID';\nimport { getClassSelectors } from './getClasses';\nimport { getCombinations } from './getCombinations';\nimport { getAttributes } from './getAttributes';\nimport { getNthChild } from './getNthChild';\nimport { getTag } from './getTag';\nimport { isUnique } from './isUnique';\nimport { getParents } from './getParents';\n\n\n/**\n * Returns all the selectors of the elmenet\n * @param { Object } element\n * @return { Object }\n */\nfunction getAllSelectors( el, selectors, attributesToIgnore )\n{\n const funcs =\n {\n 'Tag' : getTag,\n 'NthChild' : getNthChild,\n 'Attributes' : elem => getAttributes( elem, attributesToIgnore ),\n 'Class' : getClassSelectors,\n 'ID' : getID,\n };\n\n return selectors.reduce( ( res, next ) =>\n {\n res[ next ] = funcs[ next ]( el );\n return res;\n }, {} );\n}\n\n/**\n * Tests uniqueNess of the element inside its parent\n * @param { Object } element\n * @param { String } Selectors\n * @return { Boolean }\n */\nfunction testUniqueness( element, selector )\n{\n try {\n const { parentNode } = element;\n const elements = parentNode.querySelectorAll( selector );\n return elements.length === 1 && elements[ 0 ] === element;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tests all selectors for uniqueness and returns the first unique selector.\n * @param { Object } element\n * @param { Array } selectors\n * @return { String }\n */\nfunction getFirstUnique( element, selectors )\n{\n return selectors.find( testUniqueness.bind( null, element ) );\n}\n\n/**\n * Checks all the possible selectors of an element to find one unique and return it\n * @param { Object } element\n * @param { Array } items\n * @param { String } tag\n * @return { String }\n */\nfunction getUniqueCombination( element, items, tag )\n{\n let combinations = getCombinations( items, 3 ),\n firstUnique = getFirstUnique( element, combinations );\n\n if( Boolean( firstUnique ) )\n {\n return firstUnique;\n }\n\n if( Boolean( tag ) )\n {\n combinations = combinations.map( combination => tag + combination );\n firstUnique = getFirstUnique( element, combinations );\n\n if( Boolean( firstUnique ) )\n {\n return firstUnique;\n }\n }\n\n return null;\n}\n\n/**\n * Returns a uniqueSelector based on the passed options\n * @param { DOM } element\n * @param { Array } options\n * @return { String }\n */\nfunction getUniqueSelector( element, selectorTypes, attributesToIgnore, excludeRegex )\n{\n let foundSelector;\n\n const elementSelectors = getAllSelectors( element, selectorTypes, attributesToIgnore );\n\n if( excludeRegex && excludeRegex instanceof RegExp )\n {\n elementSelectors.ID = excludeRegex.test( elementSelectors.ID ) ? null : elementSelectors.ID;\n elementSelectors.Class = elementSelectors.Class.filter( className => !excludeRegex.test( className ) );\n }\n\n for( let selectorType of selectorTypes )\n {\n const { ID, Tag, Class : Classes, Attributes, NthChild } = elementSelectors;\n switch ( selectorType )\n {\n case 'ID' :\n if ( Boolean( ID ) && testUniqueness( element, ID ) )\n {\n return ID;\n }\n break;\n\n case 'Tag':\n if ( Boolean( Tag ) && testUniqueness( element, Tag ) )\n {\n return Tag;\n }\n break;\n\n case 'Class':\n if ( Boolean( Classes ) && Classes.length )\n {\n foundSelector = getUniqueCombination( element, Classes, Tag );\n if (foundSelector) {\n return foundSelector;\n }\n }\n break;\n\n case 'Attributes':\n if ( Boolean( Attributes ) && Attributes.length )\n {\n foundSelector = getUniqueCombination( element, Attributes, Tag );\n if ( foundSelector )\n {\n return foundSelector;\n }\n }\n break;\n\n case 'NthChild':\n if ( Boolean( NthChild ) )\n {\n return NthChild\n }\n }\n }\n return '*';\n}\n\n/**\n * Generate unique CSS selector for given DOM element\n *\n * @param {Element} el\n * @return {String}\n * @api private\n */\n\nexport default function unique( el, options={} )\n{\n const {\n selectorTypes = ['ID', 'Class', 'Tag', 'NthChild'],\n attributesToIgnore = ['id', 'class', 'length'],\n excludeRegex = null,\n } = options;\n const allSelectors = [];\n const parents = getParents( el );\n\n for( let elem of parents )\n {\n const selector = getUniqueSelector( elem, selectorTypes, attributesToIgnore, excludeRegex );\n if( Boolean( selector ) )\n {\n allSelectors.push( selector );\n }\n }\n\n const selectors = [];\n for( let it of allSelectors )\n {\n selectors.unshift( it );\n const selector = selectors.join( ' > ' );\n if( isUnique( el, selector ) )\n {\n return selector;\n }\n }\n\n return null;\n}\n","/**\n * Returns the Attribute selectors of the element\n * @param { DOM Element } element\n * @param { Array } array of attributes to ignore\n * @return { Array }\n */\nexport function getAttributes( el, attributesToIgnore = ['id', 'class', 'length'] )\n{\n const { attributes } = el;\n const attrs = [ ...attributes ];\n\n return attrs.reduce( ( sum, next ) =>\n {\n if ( ! ( attributesToIgnore.indexOf( next.nodeName ) > -1 ) )\n {\n sum.push( `[${next.nodeName}=\"${next.value}\"]` );\n }\n return sum;\n }, [] );\n}\n","import { isElement } from './isElement';\n\n/**\n * Returns all the element and all of its parents\n * @param { DOM Element }\n * @return { Array of DOM elements }\n */\nexport function getParents( el )\n{\n const parents = [];\n let currentElement = el;\n while( isElement( currentElement ) )\n {\n parents.push( currentElement );\n currentElement = currentElement.parentNode;\n }\n\n return parents;\n}\n","/**\n * Utility function to get the bounding rectangle of an element.\n * @param {HTMLElement} el - The target element.\n * @returns {Object} An object containing x, y, width, and height.\n */\nfunction getElementBounds(el) {\n const rect = el.getBoundingClientRect();\n return {\n x: window.pageXOffset + rect.left,\n y: window.pageYOffset + rect.top,\n width: el.offsetWidth,\n height: el.offsetHeight,\n };\n}\n\n/**\n * Class representing an overlay element.\n */\nclass ElementOverlay {\n /**\n * Create an ElementOverlay.\n * @param {Object} options - Configuration options.\n * @param {string} [options.className] - CSS class name for the overlay.\n * @param {Object} [options.style] - Style overrides for the overlay.\n */\n constructor(options) {\n // Create and style the overlay element.\n this.overlay = document.createElement(\"div\");\n this.overlay.className = options.className || \"_ext-element-overlay\";\n this.overlay.style.background =\n (options.style && options.style.background) || \"rgba(250, 240, 202, 0.2)\";\n this.overlay.style.borderColor =\n (options.style && options.style.borderColor) || \"#F95738\";\n this.overlay.style.borderStyle =\n (options.style && options.style.borderStyle) || \"solid\";\n this.overlay.style.borderRadius =\n (options.style && options.style.borderRadius) || \"1px\";\n this.overlay.style.borderWidth =\n (options.style && options.style.borderWidth) || \"1px\";\n this.overlay.style.boxSizing =\n (options.style && options.style.boxSizing) || \"border-box\";\n this.overlay.style.cursor =\n (options.style && options.style.cursor) || \"crosshair\";\n this.overlay.style.position =\n (options.style && options.style.position) || \"absolute\";\n this.overlay.style.zIndex =\n (options.style && options.style.zIndex) || \"2147483647\";\n this.overlay.style.margin =\n (options.style && options.style.margin) || \"0px\";\n this.overlay.style.padding =\n (options.style && options.style.padding) || \"0px\";\n\n // Create a container that will host a Shadow DOM.\n this.shadowContainer = document.createElement(\"div\");\n this.shadowContainer.className = \"_ext-element-overlay-container\";\n this.shadowContainer.style.position = \"absolute\";\n this.shadowContainer.style.top = \"0px\";\n this.shadowContainer.style.left = \"0px\";\n this.shadowContainer.style.margin = \"0px\";\n this.shadowContainer.style.padding = \"0px\";\n this.shadowRoot = this.shadowContainer.attachShadow({ mode: \"open\" });\n }\n\n /**\n * Adds the overlay to the DOM.\n * @param {Node} parent - The parent element.\n * @param {boolean} useShadowDOM - Whether to use Shadow DOM.\n */\n addToDOM(parent, useShadowDOM) {\n this.usingShadowDOM = useShadowDOM;\n if (useShadowDOM) {\n parent.insertBefore(this.shadowContainer, parent.firstChild);\n this.shadowRoot.appendChild(this.overlay);\n } else {\n parent.appendChild(this.overlay);\n }\n }\n\n /**\n * Removes the overlay from the DOM.\n */\n removeFromDOM() {\n this.setBounds({ x: 0, y: 0, width: 0, height: 0 });\n if (this.overlay.remove) {\n this.overlay.remove();\n } else if (this.overlay.parentNode) {\n this.overlay.parentNode.removeChild(this.overlay);\n }\n if (this.usingShadowDOM) {\n if (this.shadowContainer.remove) {\n this.shadowContainer.remove();\n } else if (this.shadowContainer.parentNode) {\n this.shadowContainer.parentNode.removeChild(this.shadowContainer);\n }\n }\n }\n\n /**\n * Enables pointer events on the overlay.\n */\n captureCursor() {\n this.overlay.style.pointerEvents = \"auto\";\n }\n\n /**\n * Disables pointer events on the overlay.\n */\n ignoreCursor() {\n this.overlay.style.pointerEvents = \"none\";\n }\n\n /**\n * Sets the position and size of the overlay.\n * @param {Object} bounds - The bounding box.\n * @param {number} bounds.x - The x-coordinate.\n * @param {number} bounds.y - The y-coordinate.\n * @param {number} bounds.width - The width.\n * @param {number} bounds.height - The height.\n */\n setBounds(bounds) {\n const { x, y, width, height } = bounds;\n this.overlay.style.left = x + \"px\";\n this.overlay.style.top = y + \"px\";\n this.overlay.style.width = width + \"px\";\n this.overlay.style.height = height + \"px\";\n }\n}\n\n/**\n * Class representing an element picker that uses the overlay.\n */\nclass ElementPicker {\n /**\n * Create an ElementPicker.\n * @param {Object} [overlayOptions] - Options to pass to ElementOverlay.\n */\n constructor(overlayOptions) {\n this.active = false;\n this.overlay = new ElementOverlay(overlayOptions || {});\n this.handleMouseMove = this.handleMouseMove.bind(this);\n this.handleClick = this.handleClick.bind(this);\n this.tick = this.tick.bind(this);\n }\n\n /**\n * Starts the element picking process.\n * @param {Object} options - Picker options.\n * @param {Node} [options.parentElement] - Parent element to attach the overlay.\n * @param {boolean} [options.useShadowDOM=true] - Whether to use Shadow DOM.\n * @param {Function} [options.onClick] - Callback invoked on click.\n * @param {Function} [options.onHover] - Callback invoked on hover.\n * @param {Function} [options.elementFilter] - Function to filter elements.\n * @returns {boolean} True if started successfully, false if already active.\n */\n start(options) {\n if (this.active) {\n return false;\n }\n this.active = true;\n this.options = options;\n\n document.addEventListener(\"mousemove\", this.handleMouseMove, true);\n document.addEventListener(\"click\", this.handleClick, true);\n\n const parentElement = options.parentElement || document.body;\n const useShadowDOM =\n options.useShadowDOM !== undefined ? options.useShadowDOM : true;\n this.overlay.addToDOM(parentElement, useShadowDOM);\n this.tick();\n\n return true;\n }\n\n /**\n * Stops the element picking process.\n */\n stop() {\n this.active = false;\n this.options = undefined;\n\n document.removeEventListener(\"mousemove\", this.handleMouseMove, true);\n document.removeEventListener(\"click\", this.handleClick, true);\n\n this.overlay.removeFromDOM();\n this.target = undefined;\n this.mouseX = undefined;\n this.mouseY = undefined;\n\n if (this.tickReq) {\n window.cancelAnimationFrame(this.tickReq);\n }\n }\n\n /**\n * Handles mouse move events.\n * @param {MouseEvent} event - The mousemove event.\n */\n handleMouseMove(event) {\n this.mouseX = event.clientX;\n this.mouseY = event.clientY;\n }\n\n /**\n * Handles click events.\n * @param {MouseEvent} event - The click event.\n */\n handleClick(event) {\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n\n if (this.target && this.options && this.options.onClick) {\n this.options.onClick(this.target);\n }\n }\n\n /**\n * The tick function that continuously updates the target element.\n */\n tick() {\n this.updateTarget();\n this.tickReq = window.requestAnimationFrame(this.tick);\n }\n\n /**\n * Updates the target element based on the current mouse position.\n */\n updateTarget() {\n if (this.mouseX === undefined || this.mouseY === undefined) {\n return;\n }\n\n // Temporarily ignore the overlay's pointer events to detect the underlying element.\n this.overlay.ignoreCursor();\n const elAtCursor = document.elementFromPoint(this.mouseX, this.mouseY);\n const newTarget = elAtCursor;\n this.overlay.captureCursor();\n\n // If the target hasn't changed, do nothing.\n if (!newTarget || newTarget === this.target) {\n return;\n }\n\n // If an element filter is provided and the new target doesn't match, clear the target.\n if (this.options && this.options.elementFilter) {\n if (!this.options.elementFilter(newTarget)) {\n this.target = undefined;\n this.overlay.setBounds({ x: 0, y: 0, width: 0, height: 0 });\n return;\n }\n }\n\n this.target = newTarget;\n const bounds = getElementBounds(newTarget);\n this.overlay.setBounds(bounds);\n\n if (this.options && this.options.onHover) {\n this.options.onHover(newTarget);\n }\n }\n}\n\nexport default ElementPicker;\n","import unique from \"./unique-selector/src/unique-selector\";\nimport ElementPicker from \"./ElementPicker\";\n\nclass GleapAdminHelper {\n picker = null;\n onElementPicked = null;\n\n stopPicker = () => {\n if (this.picker) {\n this.picker.stop();\n this.picker = null;\n return;\n }\n };\n\n startPicker = () => {\n this.stopPicker();\n var self = this;\n\n const style = {\n borderColor: \"#2142E7\",\n background: \"transparent\",\n borderWidth: \"4px\",\n borderRadius: \"5px\",\n };\n this.picker = new ElementPicker({ style });\n this.picker.start({\n useShadowDOM: false,\n onClick: (el) => {\n try {\n let selector;\n const tourId = el.getAttribute(\"data-gleap-tour\");\n if (tourId) {\n selector = `[data-gleap-tour=\"${tourId}\"]`;\n } else {\n selector = unique(el);\n }\n\n self.onElementPicked && self.onElementPicked(selector);\n } catch (e) {\n console.error(\"Error while getting unique selector\", e);\n }\n },\n elementFilter: (el) => {\n if (\n el.classList.contains(\"gleap-admin-collapse-ui\") ||\n el.closest(\".gleap-admin-collapse-ui\")\n ) {\n return false;\n }\n return true;\n },\n });\n };\n\n setMode = (mode) => {\n this.mode = mode;\n if (mode === \"navigate\") {\n this.stopPicker();\n }\n if (mode === \"picker\") {\n this.startPicker();\n }\n };\n}\n\nexport default GleapAdminHelper;\n","import { loadIcon } from \"./UI\";\nimport GleapAdminHelper from \"./GleapAdminHelper\";\nimport { GleapProductTours } from \"./Gleap\";\n\nexport default class GleapAdminManager {\n libraryInstance = null;\n lastUrl = undefined;\n injectedFrame = false;\n gleapFrameContainer = null;\n gleapCollapseUI = null;\n injectedCollapseUI = false;\n gleapFrame = null;\n configData = null;\n adminHelper = null;\n status = \"navigate\";\n\n // GleapAdminManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapAdminManager();\n }\n\n return this.instance;\n }\n\n logCurrentPage() {\n const currentUrl = window.location.href;\n if (currentUrl && currentUrl !== this.lastUrl) {\n this.lastUrl = currentUrl;\n\n this.sendMessageToTourBuilder({\n name: \"page-changed\",\n data: {\n page: currentUrl,\n },\n });\n }\n }\n\n startPageListener() {\n const self = this;\n setInterval(function () {\n self.logCurrentPage();\n }, 1000);\n }\n\n initAdminHelper() {\n const self = this;\n\n // Disable product tours.\n GleapProductTours.getInstance().disable();\n\n self.adminHelper = new GleapAdminHelper();\n\n try {\n self.adminHelper.onElementPicked = (selector) => {\n self.toggleCollapseUI(true);\n self.sendMessageToTourBuilder({\n name: \"element-picked\",\n data: {\n selector,\n },\n });\n };\n } catch (e) {\n console.log(e);\n }\n\n self.injectFrame();\n self.injectCollapseUI();\n self.setFrameHeight(\"loading\");\n }\n\n setFrameHeight(state) {\n if (this.gleapFrameContainer) {\n var height = \"\";\n if (state === \"picker\" || state === \"navigate\") {\n height = \"65px\";\n } else if (state === \"editor\") {\n height = \"100vh\";\n } else {\n height = \"0px\";\n }\n this.gleapFrameContainer.style.height = height;\n }\n }\n\n start() {\n if (typeof window === \"undefined\") {\n return;\n }\n\n if (window.gleapAdminDisabled) {\n return;\n }\n\n var self = this;\n\n // Add window message listener.\n window.addEventListener(\"message\", (event) => {\n if (event.origin !== \"https://app.gleap.io\") {\n return;\n }\n\n try {\n const data = JSON.parse(event.data);\n\n if (data.type === \"admin\") {\n if (data.name === \"load\") {\n self.configData = data.data;\n self.initAdminHelper();\n }\n\n if (data.name === \"smartlink-search-result\") {\n this.sendMessageToTourBuilder({\n name: \"smartlink-search-result\",\n data: data.data,\n });\n }\n\n if (data.name === \"translate-complete\") {\n this.sendMessageToTourBuilder({\n name: \"translate-complete\",\n data: data.data,\n });\n }\n }\n\n if (data.type === \"tourbuilder\") {\n if (data.name === \"loaddata\") {\n this.sendMessageToTourBuilder({\n name: \"data\",\n data: {\n ...self.configData,\n currentPage: window.location.href,\n },\n });\n }\n\n if (data.name === \"highlight-element\") {\n // Cleanup.\n document\n .querySelectorAll(\".gleap-admin-highlight\")\n .forEach((el) => {\n el.classList.remove(\"gleap-admin-highlight\");\n });\n\n // Find the element and highlight it.\n if (data?.data?.selector) {\n const element = document.querySelector(data?.data?.selector);\n if (element) {\n element.classList.add(\"gleap-admin-highlight\");\n }\n }\n }\n\n if (data.name === \"smartlink-search\") {\n this.sendMessage({\n name: \"smartlink-search\",\n data: data.data,\n });\n }\n\n if (data.name === \"product-tour-started\") {\n this.sendMessage({\n name: \"product-tour-started\",\n data: data.data,\n });\n }\n\n if (data.name === \"translate\") {\n this.sendMessage({\n name: \"translate\",\n data: data.data,\n });\n }\n\n if (data.name === \"save\") {\n this.sendMessage({\n name: \"save\",\n data: data.data,\n });\n }\n\n if (data.name === \"update-steps\") {\n this.sendMessage({\n name: \"update-steps\",\n data: data.data,\n });\n }\n\n if (data.name === \"click\") {\n try {\n document.querySelector(data.data.selector).click();\n } catch (e) {\n console.log(e);\n }\n }\n\n if (data.name === \"status-changed\") {\n self.status = data.data;\n this.setFrameHeight(self.status);\n self.adminHelper.stopPicker();\n\n if (self.status === \"picker\") {\n self.adminHelper.startPicker();\n }\n }\n }\n } catch (exp) {}\n });\n\n this.sendMessage({\n name: \"init\",\n });\n\n this.startPageListener();\n }\n\n sendMessage(data) {\n try {\n if (window && window.opener) {\n window.opener.postMessage(\n JSON.stringify({\n ...data,\n type: \"admin\",\n }),\n \"*\"\n );\n }\n } catch (e) {}\n }\n\n sendMessageToTourBuilder(data) {\n try {\n if (this.gleapFrame && this.gleapFrame.contentWindow) {\n this.gleapFrame.contentWindow.postMessage(\n JSON.stringify({\n ...data,\n type: \"tourbuilder\",\n }),\n \"*\"\n );\n }\n } catch (e) {}\n }\n\n toggleCollapseUI = (onlyIfActive = false) => {\n const COLLAPSE_UI_ACTIVE_CLASS = \"gleap-admin-collapse-ui-active\";\n const FRAME_CONTAINER_ACTIVE_CLASS = \"gleap-admin-frame-container-active\";\n\n // Helper function to check if an element has an active class\n const isActive = (element, activeClass) =>\n element && element.classList.contains(activeClass);\n\n // Check if onlyIfActive is true and if the UI elements are already inactive\n if (\n onlyIfActive &&\n (!isActive(this.gleapCollapseUI, COLLAPSE_UI_ACTIVE_CLASS) ||\n !isActive(this.gleapFrameContainer, FRAME_CONTAINER_ACTIVE_CLASS))\n ) {\n return; // Return early without toggling the UI\n }\n\n // Toggle the UI elements\n if (this.gleapCollapseUI) {\n this.gleapCollapseUI.classList.toggle(COLLAPSE_UI_ACTIVE_CLASS);\n }\n if (this.gleapFrameContainer) {\n this.gleapFrameContainer.classList.toggle(FRAME_CONTAINER_ACTIVE_CLASS);\n }\n };\n\n injectCollapseUI = () => {\n if (this.injectedCollapseUI) {\n return;\n }\n this.injectedCollapseUI = true;\n\n // Inject widget HTML.\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-admin-collapse-ui\";\n elem.innerHTML = `
\n ${loadIcon(\"arrowdown\")}\n
`;\n document.body.appendChild(elem);\n\n this.gleapCollapseUI = elem;\n\n elem.addEventListener(\"click\", (e) => {\n e.stopImmediatePropagation();\n e.stopPropagation();\n e.preventDefault();\n\n this.toggleCollapseUI();\n });\n };\n\n injectFrame = () => {\n if (this.injectedFrame) {\n return;\n }\n this.injectedFrame = true;\n\n // Inject widget HTML.\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-admin-frame-container\";\n elem.innerHTML = ``;\n document.body.appendChild(elem);\n\n this.gleapFrameContainer = elem;\n this.gleapFrame = document.querySelector(\".gleap-admin-frame\");\n };\n}\n","const GleapTours = (function () {\n \"use strict\";\n let currentConfig = {};\n function configure(config = {}) {\n currentConfig = {\n animate: true,\n allowClose: true,\n overlayOpacity: 0.7,\n smoothScroll: false,\n disableActiveInteraction: false,\n showProgress: false,\n stagePadding: 10,\n stageRadius: 5,\n popoverOffset: 10,\n showButtons: [\"next\", \"previous\", \"close\"],\n disableButtons: [],\n overlayColor: \"#000\",\n ...config,\n };\n }\n function getConfig(key) {\n return key ? currentConfig[key] : currentConfig;\n }\n function easeInOutQuad(elapsed, initialValue, amountOfChange, duration) {\n if ((elapsed /= duration / 2) < 1) {\n return (amountOfChange / 2) * elapsed * elapsed + initialValue;\n }\n return (\n (-amountOfChange / 2) * (--elapsed * (elapsed - 2) - 1) + initialValue\n );\n }\n function getFocusableElements(parentEls) {\n const focusableQuery =\n 'a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type=\"text\"]:not([disabled]), input[type=\"radio\"]:not([disabled]), input[type=\"checkbox\"]:not([disabled]), select:not([disabled])';\n return parentEls\n .flatMap((parentEl) => {\n const isParentFocusable = parentEl.matches(focusableQuery);\n const focusableEls = Array.from(\n parentEl.querySelectorAll(focusableQuery)\n );\n return [...(isParentFocusable ? [parentEl] : []), ...focusableEls];\n })\n .filter((el) => {\n return (\n getComputedStyle(el).pointerEvents !== \"none\" && isElementVisible(el)\n );\n });\n }\n function bringInView(element) {\n if (!element || isElementInView(element)) {\n return;\n }\n const shouldSmoothScroll = getConfig(\"smoothScroll\");\n element.scrollIntoView({\n // Removing the smooth scrolling for elements which exist inside the scrollable parent\n // This was causing the highlight to not properly render\n behavior:\n !shouldSmoothScroll || hasScrollableParent(element) ? \"auto\" : \"smooth\",\n inline: \"center\",\n block: \"center\",\n });\n }\n function hasScrollableParent(e) {\n if (!e || !e.parentElement) {\n return;\n }\n const parent = e.parentElement;\n return parent.scrollHeight > parent.clientHeight;\n }\n function isElementInView(element) {\n const rect = element.getBoundingClientRect();\n return (\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <=\n (window.innerHeight || document.documentElement.clientHeight) &&\n rect.right <= (window.innerWidth || document.documentElement.clientWidth)\n );\n }\n function isElementVisible(el) {\n return !!(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\n }\n let currentState = {};\n function setState(key, value) {\n currentState[key] = value;\n }\n function getState(key) {\n return key ? currentState[key] : currentState;\n }\n function resetState() {\n currentState = {};\n }\n let registeredListeners = {};\n function listen(hook, callback) {\n registeredListeners[hook] = callback;\n }\n function emit(hook) {\n var _a;\n (_a = registeredListeners[hook]) == null\n ? void 0\n : _a.call(registeredListeners);\n }\n function destroyEmitter() {\n registeredListeners = {};\n }\n function transitionStage(elapsed, duration, from, to) {\n let activeStagePosition = getState(\"__activeStagePosition\");\n const fromDefinition = activeStagePosition\n ? activeStagePosition\n : from.getBoundingClientRect();\n const toDefinition = to.getBoundingClientRect();\n const x = easeInOutQuad(\n elapsed,\n fromDefinition.x,\n toDefinition.x - fromDefinition.x,\n duration\n );\n const y = easeInOutQuad(\n elapsed,\n fromDefinition.y,\n toDefinition.y - fromDefinition.y,\n duration\n );\n const width = easeInOutQuad(\n elapsed,\n fromDefinition.width,\n toDefinition.width - fromDefinition.width,\n duration\n );\n const height = easeInOutQuad(\n elapsed,\n fromDefinition.height,\n toDefinition.height - fromDefinition.height,\n duration\n );\n activeStagePosition = {\n x,\n y,\n width,\n height,\n };\n renderOverlay(activeStagePosition);\n setState(\"__activeStagePosition\", activeStagePosition);\n }\n function trackActiveElement(element) {\n if (!element) {\n return;\n }\n const definition = element.getBoundingClientRect();\n const activeStagePosition = {\n x: definition.x,\n y: definition.y,\n width: definition.width,\n height: definition.height,\n };\n setState(\"__activeStagePosition\", activeStagePosition);\n renderOverlay(activeStagePosition);\n }\n function refreshOverlay() {\n const activeStagePosition = getState(\"__activeStagePosition\");\n const overlaySvg = getState(\"__overlaySvg\");\n if (!activeStagePosition) {\n return;\n }\n if (!overlaySvg) {\n console.warn(\"No stage svg found.\");\n return;\n }\n const windowX = window.innerWidth;\n const windowY = window.innerHeight;\n overlaySvg.setAttribute(\"viewBox\", `0 0 ${windowX} ${windowY}`);\n }\n function mountOverlay(stagePosition) {\n const overlaySvg = createOverlaySvg(stagePosition);\n document.body.appendChild(overlaySvg);\n onDriverClick(overlaySvg, (e) => {\n const target = e.target;\n if (target.tagName !== \"path\") {\n return;\n }\n emit(\"overlayClick\");\n });\n setState(\"__overlaySvg\", overlaySvg);\n }\n function renderOverlay(stagePosition) {\n const overlaySvg = getState(\"__overlaySvg\");\n if (!overlaySvg) {\n mountOverlay(stagePosition);\n return;\n }\n const pathElement = overlaySvg.firstElementChild;\n if ((pathElement == null ? void 0 : pathElement.tagName) !== \"path\") {\n throw new Error(\"no path element found in stage svg\");\n }\n pathElement.setAttribute(\"d\", generateStageSvgPathString(stagePosition));\n }\n function createOverlaySvg(stage) {\n const windowX = window.innerWidth;\n const windowY = window.innerHeight;\n const svg = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n svg.classList.add(\"gleap-tour-overlay\", \"gleap-tour-overlay-animated\");\n svg.setAttribute(\"viewBox\", `0 0 ${windowX} ${windowY}`);\n svg.setAttribute(\"xmlSpace\", \"preserve\");\n svg.setAttribute(\"xmlnsXlink\", \"http://www.w3.org/1999/xlink\");\n svg.setAttribute(\"version\", \"1.1\");\n svg.setAttribute(\"preserveAspectRatio\", \"xMinYMin slice\");\n svg.style.fillRule = \"evenodd\";\n svg.style.clipRule = \"evenodd\";\n svg.style.strokeLinejoin = \"round\";\n svg.style.strokeMiterlimit = \"2\";\n svg.style.zIndex = \"10000\";\n svg.style.position = \"fixed\";\n svg.style.top = \"0\";\n svg.style.left = \"0\";\n svg.style.width = \"100%\";\n svg.style.height = \"100%\";\n const stagePath = document.createElementNS(\n \"http://www.w3.org/2000/svg\",\n \"path\"\n );\n stagePath.setAttribute(\"d\", generateStageSvgPathString(stage));\n stagePath.style.fill = getConfig(\"overlayColor\") || \"rgb(0,0,0)\";\n stagePath.style.opacity = `${getConfig(\"overlayOpacity\")}`;\n stagePath.style.pointerEvents = \"auto\";\n stagePath.style.cursor = \"auto\";\n svg.appendChild(stagePath);\n return svg;\n }\n function generateStageSvgPathString(stage) {\n const windowX = window.innerWidth;\n const windowY = window.innerHeight;\n const stagePadding = getConfig(\"stagePadding\") || 0;\n const stageRadius = getConfig(\"stageRadius\") || 0;\n const stageWidth = stage.width + stagePadding * 2;\n const stageHeight = stage.height + stagePadding * 2;\n const limitedRadius = Math.min(\n stageRadius,\n stageWidth / 2,\n stageHeight / 2\n );\n const normalizedRadius = Math.floor(Math.max(limitedRadius, 0));\n const highlightBoxX = stage.x - stagePadding + normalizedRadius;\n const highlightBoxY = stage.y - stagePadding;\n const highlightBoxWidth = stageWidth - normalizedRadius * 2;\n const highlightBoxHeight = stageHeight - normalizedRadius * 2;\n return `M${windowX},0L0,0L0,${windowY}L${windowX},${windowY}L${windowX},0Z\n M${highlightBoxX},${highlightBoxY} h${highlightBoxWidth} a${normalizedRadius},${normalizedRadius} 0 0 1 ${normalizedRadius},${normalizedRadius} v${highlightBoxHeight} a${normalizedRadius},${normalizedRadius} 0 0 1 -${normalizedRadius},${normalizedRadius} h-${highlightBoxWidth} a${normalizedRadius},${normalizedRadius} 0 0 1 -${normalizedRadius},-${normalizedRadius} v-${highlightBoxHeight} a${normalizedRadius},${normalizedRadius} 0 0 1 ${normalizedRadius},-${normalizedRadius} z`;\n }\n function destroyOverlay() {\n const overlaySvg = getState(\"__overlaySvg\");\n if (overlaySvg) {\n overlaySvg.remove();\n }\n }\n function mountDummyElement() {\n const existingDummy = document.getElementById(\"gleap-tour-dummy-element\");\n if (existingDummy) {\n return existingDummy;\n }\n let element = document.createElement(\"div\");\n element.id = \"gleap-tour-dummy-element\";\n element.style.width = \"0\";\n element.style.height = \"0\";\n element.style.pointerEvents = \"none\";\n element.style.opacity = \"0\";\n element.style.position = \"fixed\";\n element.style.top = \"50%\";\n element.style.left = \"50%\";\n document.body.appendChild(element);\n return element;\n }\n function highlight(step, attemptTime = 5000) {\n const { element } = step;\n let elemObj = element;\n if (typeof elemObj === \"string\") {\n try {\n elemObj = document.querySelector(element);\n } catch (error) {\n // This will escape colons within IDs but not affect pseudo-classes or other valid uses of colons\n let refactoredElement = element.replace(\n /(#[^#\\s]+)/g,\n function (match) {\n return match.replace(/:/g, \"\\\\:\");\n }\n );\n elemObj = document.querySelector(refactoredElement);\n }\n }\n if (element && !elemObj && attemptTime >= 0) {\n setTimeout(() => {\n hidePopover();\n highlight(step, attemptTime - 100);\n }, 100);\n\n return;\n }\n\n if (!elemObj) {\n if (step.mode === \"INPUT\" || step.mode === \"CLICK\") {\n return getConfig(\"onElementNotFound\")(step);\n }\n }\n\n if (!elemObj) {\n elemObj = mountDummyElement();\n }\n\n transferHighlight(elemObj, step);\n }\n function refreshActiveHighlight() {\n const activeHighlight = getState(\"__activeElement\");\n const activeStep = getState(\"__activeStep\");\n if (!activeHighlight) {\n return;\n }\n trackActiveElement(activeHighlight);\n refreshOverlay();\n repositionPopover(activeHighlight, activeStep);\n }\n function transferHighlight(toElement, toStep) {\n const duration = 400;\n const start = Date.now();\n const fromStep = getState(\"__activeStep\");\n const fromElement = getState(\"__activeElement\") || toElement;\n const isFirstHighlight = !fromElement || fromElement === toElement;\n const isToDummyElement = toElement.id === \"gleap-tour-dummy-element\";\n const isFromDummyElement = fromElement.id === \"gleap-tour-dummy-element\";\n const isAnimatedTour = getConfig(\"animate\");\n const highlightStartedHook =\n toStep.onHighlightStarted || getConfig(\"onHighlightStarted\");\n const highlightedHook =\n (toStep == null ? void 0 : toStep.onHighlighted) ||\n getConfig(\"onHighlighted\");\n const deselectedHook =\n (fromStep == null ? void 0 : fromStep.onDeselected) ||\n getConfig(\"onDeselected\");\n const config = getConfig();\n const state = getState();\n if (!isFirstHighlight && deselectedHook) {\n deselectedHook(isFromDummyElement ? void 0 : fromElement, fromStep, {\n config,\n state,\n });\n }\n if (highlightStartedHook) {\n highlightStartedHook(isToDummyElement ? void 0 : toElement, toStep, {\n config,\n state,\n });\n }\n const hasDelayedPopover = !isFirstHighlight && isAnimatedTour;\n let isPopoverRendered = false;\n hidePopover();\n setState(\"previousStep\", fromStep);\n setState(\"previousElement\", fromElement);\n setState(\"activeStep\", toStep);\n setState(\"activeElement\", toElement);\n const animate = () => {\n const transitionCallback = getState(\"__transitionCallback\");\n if (transitionCallback !== animate) {\n return;\n }\n const elapsed = Date.now() - start;\n const timeRemaining = duration - elapsed;\n const isHalfwayThrough = timeRemaining <= duration / 2;\n if (\n toStep.popover &&\n isHalfwayThrough &&\n !isPopoverRendered &&\n hasDelayedPopover\n ) {\n renderPopover(toElement, toStep);\n isPopoverRendered = true;\n }\n if (getConfig(\"animate\") && elapsed < duration) {\n transitionStage(elapsed, duration, fromElement, toElement);\n } else {\n trackActiveElement(toElement);\n if (highlightedHook) {\n highlightedHook(isToDummyElement ? void 0 : toElement, toStep, {\n config: getConfig(),\n state: getState(),\n });\n }\n setState(\"__transitionCallback\", void 0);\n setState(\"__previousStep\", fromStep);\n setState(\"__previousElement\", fromElement);\n setState(\"__activeStep\", toStep);\n setState(\"__activeElement\", toElement);\n }\n window.requestAnimationFrame(animate);\n };\n setState(\"__transitionCallback\", animate);\n window.requestAnimationFrame(animate);\n bringInView(toElement);\n if (!hasDelayedPopover && toStep.popover) {\n renderPopover(toElement, toStep);\n }\n fromElement.classList.remove(\n \"gleap-tour-active-element\",\n \"gleap-tour-no-interaction\"\n );\n fromElement.removeAttribute(\"aria-haspopup\");\n fromElement.removeAttribute(\"aria-expanded\");\n fromElement.removeAttribute(\"aria-controls\");\n const disableActiveInteraction =\n toStep.disableActiveInteraction ??\n getConfig(\"disableActiveInteraction\") ??\n false;\n if (disableActiveInteraction) {\n toElement.classList.add(\"gleap-tour-no-interaction\");\n }\n toElement.classList.add(\"gleap-tour-active-element\");\n toElement.setAttribute(\"aria-haspopup\", \"dialog\");\n toElement.setAttribute(\"aria-expanded\", \"true\");\n toElement.setAttribute(\"aria-controls\", \"gleap-tour-popover-content\");\n }\n function destroyHighlight() {\n var _a;\n (_a = document.getElementById(\"gleap-tour-dummy-element\")) == null\n ? void 0\n : _a.remove();\n document\n .querySelectorAll(\".gleap-tour-active-element\")\n .forEach((element) => {\n element.classList.remove(\n \"gleap-tour-active-element\",\n \"gleap-tour-no-interaction\"\n );\n element.removeAttribute(\"aria-haspopup\");\n element.removeAttribute(\"aria-expanded\");\n element.removeAttribute(\"aria-controls\");\n });\n }\n function requireRefresh() {\n const resizeTimeout = getState(\"__resizeTimeout\");\n if (resizeTimeout) {\n window.cancelAnimationFrame(resizeTimeout);\n }\n setState(\n \"__resizeTimeout\",\n window.requestAnimationFrame(refreshActiveHighlight)\n );\n }\n function trapFocus(e) {\n var _a;\n const isActivated = getState(\"isInitialized\");\n if (!isActivated) {\n return;\n }\n const isTabKey = e.key === \"Tab\" || e.keyCode === 9;\n if (!isTabKey) {\n return;\n }\n const activeElement = getState(\"__activeElement\");\n const popoverEl = (_a = getState(\"popover\")) == null ? void 0 : _a.wrapper;\n const focusableEls = getFocusableElements([\n ...(popoverEl ? [popoverEl] : []),\n ...(activeElement ? [activeElement] : []),\n ]);\n const firstFocusableEl = focusableEls[0];\n const lastFocusableEl = focusableEls[focusableEls.length - 1];\n e.preventDefault();\n if (e.shiftKey) {\n const previousFocusableEl =\n focusableEls[focusableEls.indexOf(document.activeElement) - 1] ||\n lastFocusableEl;\n previousFocusableEl == null ? void 0 : previousFocusableEl.focus();\n } else {\n const nextFocusableEl =\n focusableEls[focusableEls.indexOf(document.activeElement) + 1] ||\n firstFocusableEl;\n nextFocusableEl == null ? void 0 : nextFocusableEl.focus();\n }\n }\n function onKeyup(e) {\n var _a;\n const allowKeyboardControl =\n (_a = getConfig(\"allowKeyboardControl\")) != null ? _a : true;\n if (!allowKeyboardControl) {\n return;\n }\n if (e.key === \"Escape\") {\n emit(\"escapePress\");\n } else if (e.key === \"ArrowRight\") {\n emit(\"arrowRightPress\");\n } else if (e.key === \"ArrowLeft\") {\n emit(\"arrowLeftPress\");\n }\n }\n function onDriverClick(element, listener, shouldPreventDefault) {\n const listenerWrapper = (e, listener2) => {\n const target = e.target;\n if (!element.contains(target)) {\n return;\n }\n if (!shouldPreventDefault || shouldPreventDefault(target)) {\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n listener2 == null ? void 0 : listener2(e);\n };\n const useCapture = true;\n document.addEventListener(\"pointerdown\", listenerWrapper, useCapture);\n document.addEventListener(\"mousedown\", listenerWrapper, useCapture);\n document.addEventListener(\"pointerup\", listenerWrapper, useCapture);\n document.addEventListener(\"mouseup\", listenerWrapper, useCapture);\n document.addEventListener(\n \"click\",\n (e) => {\n listenerWrapper(e, listener);\n },\n useCapture\n );\n }\n function initEvents() {\n window.addEventListener(\"keyup\", onKeyup, false);\n window.addEventListener(\"keydown\", trapFocus, false);\n window.addEventListener(\"resize\", requireRefresh);\n window.addEventListener(\"scroll\", requireRefresh);\n }\n function destroyEvents() {\n window.removeEventListener(\"keyup\", onKeyup);\n window.removeEventListener(\"resize\", requireRefresh);\n window.removeEventListener(\"scroll\", requireRefresh);\n }\n function hidePopover() {\n const popover = getState(\"popover\");\n if (!popover) {\n return;\n }\n popover.wrapper.style.display = \"none\";\n }\n function renderPopover(element, step) {\n var _a, _b;\n let popover = getState(\"popover\");\n if (popover) {\n document.body.removeChild(popover.wrapper);\n }\n popover = createPopover();\n document.body.appendChild(popover.wrapper);\n const {\n title,\n description,\n showButtons,\n disableButtons,\n showProgress,\n nextBtnText = getConfig(\"nextBtnText\") || \"Next\",\n prevBtnText = getConfig(\"prevBtnText\") || \"Previous\",\n progressText = getConfig(\"progressText\") || \"{current} of {total}\",\n } = step.popover || {};\n popover.nextButton.innerHTML = nextBtnText;\n popover.previousButton.innerHTML = prevBtnText;\n popover.progress.innerHTML = progressText;\n if (title) {\n popover.title.innerHTML = title;\n popover.title.style.display = \"block\";\n } else {\n popover.title.style.display = \"none\";\n }\n if (description) {\n popover.description.innerHTML = description;\n popover.description.style.display = \"block\";\n } else {\n popover.description.style.display = \"none\";\n }\n const showButtonsConfig = showButtons || getConfig(\"showButtons\");\n const showProgressConfig =\n showProgress || getConfig(\"showProgress\") || false;\n const showFooter =\n (showButtonsConfig == null\n ? void 0\n : showButtonsConfig.includes(\"next\")) ||\n (showButtonsConfig == null\n ? void 0\n : showButtonsConfig.includes(\"previous\")) ||\n showProgressConfig;\n popover.closeButton.style.display = showButtonsConfig.includes(\"close\")\n ? \"block\"\n : \"none\";\n if (showFooter) {\n popover.footer.style.display = \"flex\";\n popover.progress.style.display = showProgressConfig ? \"block\" : \"none\";\n popover.nextButton.style.display = showButtonsConfig.includes(\"next\")\n ? \"block\"\n : \"none\";\n popover.previousButton.style.display = showButtonsConfig.includes(\n \"previous\"\n )\n ? \"block\"\n : \"none\";\n } else {\n popover.footer.style.display = \"none\";\n }\n const disabledButtonsConfig =\n disableButtons || getConfig(\"disableButtons\") || [];\n if (\n disabledButtonsConfig == null\n ? void 0\n : disabledButtonsConfig.includes(\"next\")\n ) {\n popover.nextButton.disabled = true;\n popover.nextButton.classList.add(\"gleap-tour-popover-btn-disabled\");\n }\n if (\n disabledButtonsConfig == null\n ? void 0\n : disabledButtonsConfig.includes(\"previous\")\n ) {\n popover.previousButton.disabled = true;\n popover.previousButton.classList.add(\"gleap-tour-popover-btn-disabled\");\n }\n if (\n disabledButtonsConfig == null\n ? void 0\n : disabledButtonsConfig.includes(\"close\")\n ) {\n popover.closeButton.disabled = true;\n popover.closeButton.classList.add(\"gleap-tour-popover-btn-disabled\");\n }\n const popoverWrapper = popover.wrapper;\n popoverWrapper.style.display = \"block\";\n popoverWrapper.style.left = \"\";\n popoverWrapper.style.top = \"\";\n popoverWrapper.style.bottom = \"\";\n popoverWrapper.style.right = \"\";\n popoverWrapper.id = \"gleap-tour-popover-content\";\n popoverWrapper.setAttribute(\"role\", \"dialog\");\n popoverWrapper.setAttribute(\"aria-labelledby\", \"gleap-tour-popover-title\");\n popoverWrapper.setAttribute(\n \"aria-describedby\",\n \"gleap-tour-popover-description\"\n );\n const popoverArrow = popover.arrow;\n popoverArrow.className = \"gleap-tour-popover-arrow\";\n const customPopoverClass =\n ((_a = step.popover) == null ? void 0 : _a.popoverClass) ||\n getConfig(\"popoverClass\") ||\n \"\";\n popoverWrapper.className =\n `gleap-tour-popover ${customPopoverClass}`.trim();\n onDriverClick(\n popover.wrapper,\n (e) => {\n var _a2, _b2, _c;\n const target = e.target;\n const onNextClick =\n ((_a2 = step.popover) == null ? void 0 : _a2.onNextClick) ||\n getConfig(\"onNextClick\");\n const onPrevClick =\n ((_b2 = step.popover) == null ? void 0 : _b2.onPrevClick) ||\n getConfig(\"onPrevClick\");\n const onCloseClick =\n ((_c = step.popover) == null ? void 0 : _c.onCloseClick) ||\n getConfig(\"onCloseClick\");\n if (target.classList.contains(\"gleap-tour-popover-next-btn\")) {\n if (onNextClick) {\n return onNextClick(element, step, {\n config: getConfig(),\n state: getState(),\n });\n } else {\n return emit(\"nextClick\");\n }\n }\n if (target.classList.contains(\"gleap-tour-popover-prev-btn\")) {\n if (onPrevClick) {\n return onPrevClick(element, step, {\n config: getConfig(),\n state: getState(),\n });\n } else {\n return emit(\"prevClick\");\n }\n }\n if (target.classList.contains(\"gleap-tour-popover-close-btn\")) {\n if (onCloseClick) {\n return onCloseClick(element, step, {\n config: getConfig(),\n state: getState(),\n });\n } else {\n return emit(\"closeClick\");\n }\n }\n return void 0;\n },\n (target) => {\n return (\n !(popover == null ? void 0 : popover.description.contains(target)) &&\n !(popover == null ? void 0 : popover.title.contains(target)) &&\n typeof target.className === \"string\" &&\n target.className.includes(\"gleap-tour-popover\")\n );\n }\n );\n setState(\"popover\", popover);\n const onPopoverRender =\n ((_b = step.popover) == null ? void 0 : _b.onPopoverRender) ||\n getConfig(\"onPopoverRender\");\n if (onPopoverRender) {\n onPopoverRender(popover, {\n config: getConfig(),\n state: getState(),\n });\n }\n repositionPopover(element, step);\n bringInView(popoverWrapper);\n const isToDummyElement = element.classList.contains(\n \"gleap-tour-dummy-element\"\n );\n const focusableElement = getFocusableElements([\n popoverWrapper,\n ...(isToDummyElement ? [] : [element]),\n ]);\n if (focusableElement.length > 0) {\n focusableElement[0].focus();\n }\n }\n function getPopoverDimensions() {\n const popover = getState(\"popover\");\n if (!(popover == null ? void 0 : popover.wrapper)) {\n return;\n }\n const boundingClientRect = popover.wrapper.getBoundingClientRect();\n const stagePadding = getConfig(\"stagePadding\") || 0;\n const popoverOffset = getConfig(\"popoverOffset\") || 0;\n return {\n width: boundingClientRect.width + stagePadding + popoverOffset,\n height: boundingClientRect.height + stagePadding + popoverOffset,\n realWidth: boundingClientRect.width,\n realHeight: boundingClientRect.height,\n };\n }\n function calculateTopForLeftRight(alignment, config) {\n const {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n } = config;\n if (alignment === \"start\") {\n return Math.max(\n Math.min(\n elementDimensions.top - popoverPadding,\n window.innerHeight -\n popoverDimensions.realHeight -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n if (alignment === \"end\") {\n return Math.max(\n Math.min(\n elementDimensions.top -\n (popoverDimensions == null\n ? void 0\n : popoverDimensions.realHeight) +\n elementDimensions.height +\n popoverPadding,\n window.innerHeight -\n (popoverDimensions == null\n ? void 0\n : popoverDimensions.realHeight) -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n if (alignment === \"center\") {\n return Math.max(\n Math.min(\n elementDimensions.top +\n elementDimensions.height / 2 -\n (popoverDimensions == null\n ? void 0\n : popoverDimensions.realHeight) /\n 2,\n window.innerHeight -\n (popoverDimensions == null\n ? void 0\n : popoverDimensions.realHeight) -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n return 0;\n }\n function calculateLeftForTopBottom(alignment, config) {\n const {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n } = config;\n if (alignment === \"start\") {\n return Math.max(\n Math.min(\n elementDimensions.left - popoverPadding,\n window.innerWidth -\n popoverDimensions.realWidth -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n if (alignment === \"end\") {\n return Math.max(\n Math.min(\n elementDimensions.left -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) +\n elementDimensions.width +\n popoverPadding,\n window.innerWidth -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n if (alignment === \"center\") {\n return Math.max(\n Math.min(\n elementDimensions.left +\n elementDimensions.width / 2 -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) /\n 2,\n window.innerWidth -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n return 0;\n }\n function repositionPopover(element, step) {\n const popover = getState(\"popover\");\n if (!popover) {\n return;\n }\n const { align = \"start\", side = \"left\" } =\n (step == null ? void 0 : step.popover) || {};\n const requiredAlignment = align;\n const requiredSide =\n element.id === \"gleap-tour-dummy-element\" ? \"over\" : side;\n const popoverPadding = getConfig(\"stagePadding\") || 0;\n const popoverDimensions = getPopoverDimensions();\n const popoverArrowDimensions = popover.arrow.getBoundingClientRect();\n const elementDimensions = element.getBoundingClientRect();\n const topValue = elementDimensions.top - popoverDimensions.height;\n let isTopOptimal = topValue >= 0;\n const bottomValue =\n window.innerHeight -\n (elementDimensions.bottom + popoverDimensions.height);\n let isBottomOptimal = bottomValue >= 0;\n const leftValue = elementDimensions.left - popoverDimensions.width;\n let isLeftOptimal = leftValue >= 0;\n const rightValue =\n window.innerWidth - (elementDimensions.right + popoverDimensions.width);\n let isRightOptimal = rightValue >= 0;\n const noneOptimal =\n !isTopOptimal && !isBottomOptimal && !isLeftOptimal && !isRightOptimal;\n let popoverRenderedSide = requiredSide;\n if (requiredSide === \"top\" && isTopOptimal) {\n isRightOptimal = isLeftOptimal = isBottomOptimal = false;\n } else if (requiredSide === \"bottom\" && isBottomOptimal) {\n isRightOptimal = isLeftOptimal = isTopOptimal = false;\n } else if (requiredSide === \"left\" && isLeftOptimal) {\n isRightOptimal = isTopOptimal = isBottomOptimal = false;\n } else if (requiredSide === \"right\" && isRightOptimal) {\n isLeftOptimal = isTopOptimal = isBottomOptimal = false;\n }\n if (requiredSide === \"over\") {\n const leftToSet = window.innerWidth / 2 - popoverDimensions.realWidth / 2;\n const topToSet =\n window.innerHeight / 2 - popoverDimensions.realHeight / 2;\n popover.wrapper.style.left = `${leftToSet}px`;\n popover.wrapper.style.right = `auto`;\n popover.wrapper.style.top = `${topToSet}px`;\n popover.wrapper.style.bottom = `auto`;\n } else if (noneOptimal) {\n const leftValue2 =\n window.innerWidth / 2 -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) / 2;\n const bottomValue2 = 10;\n popover.wrapper.style.left = `${leftValue2}px`;\n popover.wrapper.style.right = `auto`;\n popover.wrapper.style.bottom = `${bottomValue2}px`;\n popover.wrapper.style.top = `auto`;\n } else if (isLeftOptimal) {\n const leftToSet = Math.min(\n leftValue,\n window.innerWidth -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) -\n popoverArrowDimensions.width\n );\n const topToSet = calculateTopForLeftRight(requiredAlignment, {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n });\n popover.wrapper.style.left = `${leftToSet}px`;\n popover.wrapper.style.top = `${topToSet}px`;\n popover.wrapper.style.bottom = `auto`;\n popover.wrapper.style.right = \"auto\";\n popoverRenderedSide = \"left\";\n } else if (isRightOptimal) {\n const rightToSet = Math.min(\n rightValue,\n window.innerWidth -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) -\n popoverArrowDimensions.width\n );\n const topToSet = calculateTopForLeftRight(requiredAlignment, {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n });\n popover.wrapper.style.right = `${rightToSet}px`;\n popover.wrapper.style.top = `${topToSet}px`;\n popover.wrapper.style.bottom = `auto`;\n popover.wrapper.style.left = \"auto\";\n popoverRenderedSide = \"right\";\n } else if (isTopOptimal) {\n const topToSet = Math.min(\n topValue,\n window.innerHeight -\n popoverDimensions.realHeight -\n popoverArrowDimensions.width\n );\n let leftToSet = calculateLeftForTopBottom(requiredAlignment, {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n });\n popover.wrapper.style.top = `${topToSet}px`;\n popover.wrapper.style.left = `${leftToSet}px`;\n popover.wrapper.style.bottom = `auto`;\n popover.wrapper.style.right = \"auto\";\n popoverRenderedSide = \"top\";\n } else if (isBottomOptimal) {\n const bottomToSet = Math.min(\n bottomValue,\n window.innerHeight -\n (popoverDimensions == null ? void 0 : popoverDimensions.realHeight) -\n popoverArrowDimensions.width\n );\n let leftToSet = calculateLeftForTopBottom(requiredAlignment, {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n });\n popover.wrapper.style.left = `${leftToSet}px`;\n popover.wrapper.style.bottom = `${bottomToSet}px`;\n popover.wrapper.style.top = `auto`;\n popover.wrapper.style.right = \"auto\";\n popoverRenderedSide = \"bottom\";\n }\n if (!noneOptimal) {\n renderPopoverArrow(requiredAlignment, popoverRenderedSide, element);\n } else {\n popover.arrow.classList.add(\"gleap-tour-popover-arrow-none\");\n }\n }\n function renderPopoverArrow(alignment, side, element) {\n const popover = getState(\"popover\");\n if (!popover) {\n return;\n }\n const elementDimensions = element.getBoundingClientRect();\n const popoverDimensions = getPopoverDimensions();\n const popoverArrow = popover.arrow;\n const popoverWidth = popoverDimensions.width;\n const windowWidth = window.innerWidth;\n const elementWidth = elementDimensions.width;\n const elementLeft = elementDimensions.left;\n const popoverHeight = popoverDimensions.height;\n const windowHeight = window.innerHeight;\n const elementTop = elementDimensions.top;\n const elementHeight = elementDimensions.height;\n popoverArrow.className = \"gleap-tour-popover-arrow\";\n let arrowSide = side;\n let arrowAlignment = alignment;\n if (side === \"top\") {\n if (elementLeft + elementWidth <= 0) {\n arrowSide = \"right\";\n arrowAlignment = \"end\";\n } else if (elementLeft + elementWidth - popoverWidth <= 0) {\n arrowSide = \"top\";\n arrowAlignment = \"start\";\n }\n if (elementLeft >= windowWidth) {\n arrowSide = \"left\";\n arrowAlignment = \"end\";\n } else if (elementLeft + popoverWidth >= windowWidth) {\n arrowSide = \"top\";\n arrowAlignment = \"end\";\n }\n } else if (side === \"bottom\") {\n if (elementLeft + elementWidth <= 0) {\n arrowSide = \"right\";\n arrowAlignment = \"start\";\n } else if (elementLeft + elementWidth - popoverWidth <= 0) {\n arrowSide = \"bottom\";\n arrowAlignment = \"start\";\n }\n if (elementLeft >= windowWidth) {\n arrowSide = \"left\";\n arrowAlignment = \"start\";\n } else if (elementLeft + popoverWidth >= windowWidth) {\n arrowSide = \"bottom\";\n arrowAlignment = \"end\";\n }\n } else if (side === \"left\") {\n if (elementTop + elementHeight <= 0) {\n arrowSide = \"bottom\";\n arrowAlignment = \"end\";\n } else if (elementTop + elementHeight - popoverHeight <= 0) {\n arrowSide = \"left\";\n arrowAlignment = \"start\";\n }\n if (elementTop >= windowHeight) {\n arrowSide = \"top\";\n arrowAlignment = \"end\";\n } else if (elementTop + popoverHeight >= windowHeight) {\n arrowSide = \"left\";\n arrowAlignment = \"end\";\n }\n } else if (side === \"right\") {\n if (elementTop + elementHeight <= 0) {\n arrowSide = \"bottom\";\n arrowAlignment = \"start\";\n } else if (elementTop + elementHeight - popoverHeight <= 0) {\n arrowSide = \"right\";\n arrowAlignment = \"start\";\n }\n if (elementTop >= windowHeight) {\n arrowSide = \"top\";\n arrowAlignment = \"start\";\n } else if (elementTop + popoverHeight >= windowHeight) {\n arrowSide = \"right\";\n arrowAlignment = \"end\";\n }\n } else;\n if (!arrowSide) {\n popoverArrow.classList.add(\"gleap-tour-popover-arrow-none\");\n } else {\n popoverArrow.classList.add(`gleap-tour-popover-arrow-side-${arrowSide}`);\n popoverArrow.classList.add(\n `gleap-tour-popover-arrow-align-${arrowAlignment}`\n );\n }\n }\n function createPopover() {\n const wrapper = document.createElement(\"div\");\n wrapper.classList.add(\"gleap-tour-popover\");\n const arrow = document.createElement(\"div\");\n arrow.classList.add(\"gleap-tour-popover-arrow\");\n const title = document.createElement(\"div\");\n title.id = \"gleap-tour-popover-title\";\n title.classList.add(\"gleap-tour-popover-title\");\n title.style.display = \"none\";\n title.innerText = \"Popover Title\";\n const description = document.createElement(\"div\");\n description.id = \"gleap-tour-popover-description\";\n description.classList.add(\"gleap-tour-popover-description\");\n description.style.display = \"none\";\n description.innerText = \"Popover description is here\";\n const closeButton = document.createElement(\"button\");\n closeButton.type = \"button\";\n closeButton.classList.add(\"gleap-tour-popover-close-btn\");\n closeButton.setAttribute(\"aria-label\", \"Close\");\n closeButton.innerHTML = \"×\";\n const footer = document.createElement(\"div\");\n footer.classList.add(\"gleap-tour-popover-footer\");\n const progress = document.createElement(\"span\");\n progress.classList.add(\"gleap-tour-popover-progress-text\");\n progress.innerText = \"\";\n const footerButtons = document.createElement(\"span\");\n footerButtons.classList.add(\"gleap-tour-popover-navigation-btns\");\n const previousButton = document.createElement(\"button\");\n previousButton.type = \"button\";\n previousButton.classList.add(\"gleap-tour-popover-prev-btn\");\n previousButton.innerHTML = \"← Previous\";\n const nextButton = document.createElement(\"button\");\n nextButton.type = \"button\";\n nextButton.classList.add(\"gleap-tour-popover-next-btn\");\n nextButton.innerHTML = \"Next →\";\n footerButtons.appendChild(previousButton);\n footerButtons.appendChild(nextButton);\n footer.appendChild(progress);\n footer.appendChild(footerButtons);\n wrapper.appendChild(closeButton);\n wrapper.appendChild(arrow);\n wrapper.appendChild(title);\n wrapper.appendChild(description);\n wrapper.appendChild(footer);\n return {\n wrapper,\n arrow,\n title,\n description,\n footer,\n previousButton,\n nextButton,\n closeButton,\n footerButtons,\n progress,\n };\n }\n function destroyPopover() {\n var _a;\n const popover = getState(\"popover\");\n if (!popover) {\n return;\n }\n (_a = popover.wrapper.parentElement) == null\n ? void 0\n : _a.removeChild(popover.wrapper);\n }\n function driver(options = {}) {\n configure(options);\n function handleClose() {\n if (!getConfig(\"allowClose\")) {\n return;\n }\n destroy();\n }\n function moveNext() {\n const activeIndex = getState(\"activeIndex\");\n const steps = getConfig(\"steps\") || [];\n if (typeof activeIndex === \"undefined\") {\n return;\n }\n const nextStepIndex = activeIndex + 1;\n if (steps[nextStepIndex]) {\n drive(nextStepIndex);\n } else {\n destroy();\n }\n }\n function movePrevious() {\n const activeIndex = getState(\"activeIndex\");\n const steps = getConfig(\"steps\") || [];\n if (typeof activeIndex === \"undefined\") {\n return;\n }\n const previousStepIndex = activeIndex - 1;\n if (steps[previousStepIndex]) {\n drive(previousStepIndex);\n } else {\n destroy();\n }\n }\n function moveTo(index) {\n const steps = getConfig(\"steps\") || [];\n if (steps[index]) {\n drive(index);\n } else {\n destroy();\n }\n }\n function handleArrowLeft() {\n var _a;\n const isTransitioning = getState(\"__transitionCallback\");\n if (isTransitioning) {\n return;\n }\n const activeIndex = getState(\"activeIndex\");\n const activeStep = getState(\"__activeStep\");\n const activeElement = getState(\"__activeElement\");\n\n if (activeStep.mode === \"CLICK\") {\n return;\n }\n if (\n typeof activeIndex === \"undefined\" ||\n typeof activeStep === \"undefined\"\n ) {\n return;\n }\n const currentStepIndex = getState(\"activeIndex\");\n if (typeof currentStepIndex === \"undefined\") {\n return;\n }\n const onPrevClick =\n ((_a = activeStep.popover) == null ? void 0 : _a.onPrevClick) ||\n getConfig(\"onPrevClick\");\n if (onPrevClick) {\n return onPrevClick(activeElement, activeStep, {\n config: getConfig(),\n state: getState(),\n });\n }\n movePrevious();\n }\n function handleArrowRight() {\n var _a;\n const isTransitioning = getState(\"__transitionCallback\");\n if (isTransitioning) {\n return;\n }\n const activeIndex = getState(\"activeIndex\");\n const activeStep = getState(\"__activeStep\");\n const activeElement = getState(\"__activeElement\");\n\n if (activeStep.mode === \"CLICK\") {\n return;\n }\n if (\n typeof activeIndex === \"undefined\" ||\n typeof activeStep === \"undefined\"\n ) {\n return;\n }\n const onNextClick =\n ((_a = activeStep.popover) == null ? void 0 : _a.onNextClick) ||\n getConfig(\"onNextClick\");\n if (onNextClick) {\n return onNextClick(activeElement, activeStep, {\n config: getConfig(),\n state: getState(),\n });\n }\n moveNext();\n }\n function init() {\n if (getState(\"isInitialized\")) {\n return;\n }\n setState(\"isInitialized\", true);\n document.body.classList.add(\n \"gleap-tour-active\",\n getConfig(\"animate\") ? \"gleap-tour-fade\" : \"gleap-tour-simple\"\n );\n initEvents();\n listen(\"overlayClick\", handleClose);\n listen(\"escapePress\", handleClose);\n listen(\"arrowLeftPress\", handleArrowLeft);\n listen(\"arrowRightPress\", handleArrowRight);\n }\n function drive(stepIndex = 0) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n const steps = getConfig(\"steps\");\n if (!steps) {\n console.error(\"No steps to drive through\");\n destroy();\n return;\n }\n if (!steps[stepIndex]) {\n destroy();\n return;\n }\n setState(\"__activeOnDestroyed\", document.activeElement);\n setState(\"activeIndex\", stepIndex);\n const currentStep = steps[stepIndex];\n const hasNextStep = steps[stepIndex + 1];\n const hasPreviousStep = steps[stepIndex - 1];\n const doneBtnText =\n ((_a = currentStep.popover) == null ? void 0 : _a.doneBtnText) ||\n getConfig(\"doneBtnText\") ||\n \"Done\";\n const allowsClosing = getConfig(\"allowClose\");\n const showProgress =\n typeof ((_b = currentStep.popover) == null\n ? void 0\n : _b.showProgress) !== \"undefined\"\n ? (_c = currentStep.popover) == null\n ? void 0\n : _c.showProgress\n : getConfig(\"showProgress\");\n const progressText =\n ((_d = currentStep.popover) == null ? void 0 : _d.progressText) ||\n getConfig(\"progressText\") ||\n \"{{current}} of {{total}}\";\n const progressTextReplaced = progressText\n .replace(\"{{current}}\", `${stepIndex + 1}`)\n .replace(\"{{total}}\", `${steps.length}`);\n const configuredButtons =\n ((_e = currentStep.popover) == null ? void 0 : _e.showButtons) ||\n getConfig(\"showButtons\");\n const calculatedButtons = [\n \"next\",\n \"previous\",\n ...(allowsClosing ? [\"close\"] : []),\n ].filter((b) => {\n return (\n !(configuredButtons == null ? void 0 : configuredButtons.length) ||\n configuredButtons.includes(b)\n );\n });\n const onNextClick =\n ((_f = currentStep.popover) == null ? void 0 : _f.onNextClick) ||\n getConfig(\"onNextClick\");\n const onPrevClick =\n ((_g = currentStep.popover) == null ? void 0 : _g.onPrevClick) ||\n getConfig(\"onPrevClick\");\n const onCloseClick =\n ((_h = currentStep.popover) == null ? void 0 : _h.onCloseClick) ||\n getConfig(\"onCloseClick\");\n highlight({\n ...currentStep,\n popover: {\n showButtons: calculatedButtons,\n nextBtnText: !hasNextStep ? doneBtnText : void 0,\n disableButtons: [...(!hasPreviousStep ? [\"previous\"] : [])],\n showProgress,\n progressText: progressTextReplaced,\n onNextClick: onNextClick\n ? onNextClick\n : () => {\n if (!hasNextStep) {\n destroy();\n } else {\n drive(stepIndex + 1);\n }\n },\n onPrevClick: onPrevClick\n ? onPrevClick\n : () => {\n drive(stepIndex - 1);\n },\n onCloseClick: onCloseClick\n ? onCloseClick\n : () => {\n destroy();\n },\n ...((currentStep == null ? void 0 : currentStep.popover) || {}),\n },\n });\n }\n function destroy(withOnDestroyStartedHook = true) {\n const activeElement = getState(\"__activeElement\");\n const activeStep = getState(\"__activeStep\");\n const activeOnDestroyed = getState(\"__activeOnDestroyed\");\n const onDestroyStarted = getConfig(\"onDestroyStarted\");\n if (withOnDestroyStartedHook && onDestroyStarted) {\n const isActiveDummyElement =\n !activeElement ||\n (activeElement == null ? void 0 : activeElement.id) ===\n \"gleap-tour-dummy-element\";\n onDestroyStarted(\n isActiveDummyElement ? void 0 : activeElement,\n activeStep,\n {\n config: getConfig(),\n state: getState(),\n }\n );\n return;\n }\n const onDeselected =\n (activeStep == null ? void 0 : activeStep.onDeselected) ||\n getConfig(\"onDeselected\");\n const onDestroyed = getConfig(\"onDestroyed\");\n document.body.classList.remove(\n \"gleap-tour-active\",\n \"gleap-tour-fade\",\n \"gleap-tour-simple\"\n );\n destroyEvents();\n destroyPopover();\n destroyHighlight();\n destroyOverlay();\n destroyEmitter();\n resetState();\n if (activeElement && activeStep) {\n const isActiveDummyElement =\n activeElement.id === \"gleap-tour-dummy-element\";\n if (onDeselected) {\n onDeselected(\n isActiveDummyElement ? void 0 : activeElement,\n activeStep,\n {\n config: getConfig(),\n state: getState(),\n }\n );\n }\n if (onDestroyed) {\n onDestroyed(\n isActiveDummyElement ? void 0 : activeElement,\n activeStep,\n {\n config: getConfig(),\n state: getState(),\n }\n );\n }\n }\n if (activeOnDestroyed) {\n activeOnDestroyed.focus();\n }\n }\n return {\n isActive: () => getState(\"isInitialized\") || false,\n refresh: requireRefresh,\n drive: (stepIndex = 0) => {\n init();\n drive(stepIndex);\n },\n setConfig: configure,\n setSteps: (steps) => {\n resetState();\n configure({\n ...getConfig(),\n steps,\n });\n },\n getConfig,\n getState,\n getActiveIndex: () => getState(\"activeIndex\"),\n isFirstStep: () => getState(\"activeIndex\") === 0,\n isLastStep: () => {\n const steps = getConfig(\"steps\") || [];\n const activeIndex = getState(\"activeIndex\");\n return activeIndex !== void 0 && activeIndex === steps.length - 1;\n },\n getActiveStep: () => getState(\"activeStep\"),\n getActiveElement: () => getState(\"activeElement\"),\n getPreviousElement: () => getState(\"previousElement\"),\n getPreviousStep: () => getState(\"previousStep\"),\n moveNext,\n movePrevious,\n moveTo,\n hasNextStep: () => {\n const steps = getConfig(\"steps\") || [];\n const activeIndex = getState(\"activeIndex\");\n return activeIndex !== void 0 && steps[activeIndex + 1];\n },\n hasPreviousStep: () => {\n const steps = getConfig(\"steps\") || [];\n const activeIndex = getState(\"activeIndex\");\n return activeIndex !== void 0 && steps[activeIndex - 1];\n },\n highlight: (step) => {\n init();\n highlight({\n ...step,\n popover: step.popover\n ? {\n showButtons: [],\n showProgress: false,\n progressText: \"\",\n ...step.popover,\n }\n : void 0,\n });\n },\n destroy: () => {\n destroy(false);\n },\n };\n }\n return driver;\n})({});\n\nexport default GleapTours;\n","import { GleapConfigManager, GleapTranslationManager } from \"./Gleap\";\nimport { calculateContrast, loadIcon } from \"./UI\";\n\nconst localStorageKey = \"gleap-tour-data\";\nconst pointerContainerId = \"copilot-pointer-container\";\nconst styleId = \"copilot-tour-styles\";\nconst copilotJoinedContainerId = \"copilot-joined-container\";\n\nfunction estimateReadTime(text) {\n if (typeof window === \"undefined\") return;\n\n const wordsPerSecond = 3.6; // Average reading speed\n const wordCount = text.split(/\\s+/).filter((word) => word.length > 0).length;\n const readTimeInSeconds = Math.ceil(wordCount / wordsPerSecond);\n return readTimeInSeconds + 1;\n}\n\nfunction htmlToPlainText(html) {\n if (typeof window === \"undefined\") return;\n\n const tempDiv = document.createElement(\"div\");\n tempDiv.innerHTML = html;\n return tempDiv.textContent || \"\";\n}\n\nfunction scrollToElement(element) {\n if (typeof window === \"undefined\") return;\n\n if (element) {\n element.scrollIntoView({\n behavior: \"smooth\",\n block: \"center\",\n inline: \"center\",\n });\n }\n}\n\nfunction performClickAnimation(posX, posY) {\n if (typeof window === \"undefined\") return;\n\n const wave = document.createElement(\"div\");\n wave.className = \"click-wave\";\n wave.style.left = `${posX - 17}px`;\n wave.style.top = `${posY - 17}px`;\n document.body.appendChild(wave);\n setTimeout(() => {\n wave.remove();\n }, 800);\n}\n\nfunction waitForElement(selector, timeout = 5000) {\n if (typeof window === \"undefined\") return;\n\n const pollInterval = 100;\n const maxAttempts = timeout / pollInterval;\n let attempts = 0;\n return new Promise((resolve, reject) => {\n const interval = setInterval(() => {\n const element = document.querySelector(selector);\n if (element) {\n clearInterval(interval);\n resolve(element);\n } else if (attempts >= maxAttempts) {\n clearInterval(interval);\n reject(new Error(`Element not found for selector: ${selector}`));\n }\n attempts++;\n }, pollInterval);\n });\n}\n\nfunction smoothScrollToY(yPosition) {\n if (typeof window === \"undefined\") return;\n\n const viewportHeight = window.innerHeight;\n const targetScrollPosition = yPosition - viewportHeight / 2;\n window.scrollTo({\n top: targetScrollPosition,\n behavior: \"smooth\",\n });\n}\n\nasync function canPlayAudio() {\n if (typeof window === \"undefined\") return;\n\n const audio = new Audio(\n \"data:audio/wav;base64,UklGRigAAABXQVZFZm10IBAAAAABAAEARKwAABCxAgAEABAAZGF0YQAAAAA=\"\n );\n try {\n await audio.play();\n return true;\n } catch (err) {\n return false;\n }\n}\n\n// Helper: Check if an element is fully visible in the viewport.\nfunction isElementFullyVisible(el) {\n if (typeof window === \"undefined\") return;\n\n const rect = el.getBoundingClientRect();\n return (\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <= window.innerHeight &&\n rect.right <= window.innerWidth\n );\n}\n\n// Helper: Get scrollable ancestors of an element.\nfunction getScrollableAncestors(el) {\n if (typeof window === \"undefined\") return;\n\n let ancestors = [];\n let current = el.parentElement;\n while (current) {\n const style = window.getComputedStyle(current);\n if (\n (style.overflowY === \"auto\" || style.overflowY === \"scroll\") &&\n current.scrollHeight > current.clientHeight\n ) {\n ancestors.push(current);\n }\n current = current.parentElement;\n }\n return ancestors;\n}\n\nexport default class GleapCopilotTours {\n productTourData = undefined;\n productTourId = undefined;\n currentActiveIndex = undefined;\n lastArrowPositionX = undefined;\n lastArrowPositionY = undefined;\n onCompleteCallback = undefined;\n audioMuted = false;\n currentAudio = undefined;\n\n // Cached pointer container.\n _pointerContainer = null;\n // For scroll handling.\n _scrollListeners = [];\n _currentAnchor = null;\n _currentStep = null;\n _scrollDebounceTimer = null;\n\n // GleapReplayRecorder singleton.\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapCopilotTours();\n }\n return this.instance;\n }\n\n constructor() {\n const self = this;\n\n if (typeof window !== \"undefined\") {\n this._scrollListeners = [];\n this._currentAnchor = null;\n this._currentStep = null;\n this._scrollDebounceTimer = null;\n\n window.addEventListener(\"resize\", () => {\n if (\n self.productTourId &&\n self.currentActiveIndex >= 0 &&\n self.productTourData &&\n self.productTourData.steps\n ) {\n const steps = self.productTourData.steps;\n const currentStep = steps[self.currentActiveIndex];\n if (\n currentStep &&\n currentStep.selector &&\n currentStep.selector !== \"\"\n ) {\n self.updatePointerPosition(\n document.querySelector(currentStep.selector),\n currentStep\n );\n }\n }\n });\n }\n }\n\n disable() {\n this.disabled = true;\n \n this.cleanup();\n }\n\n startWithConfig(tourId, config, onCompleteCallback = undefined) {\n if (typeof window === \"undefined\") return;\n if (this.productTourId) return;\n if (this.disabled) return;\n\n this.productTourId = tourId;\n this.productTourData = config;\n this.currentActiveIndex = 0;\n this.onCompleteCallback = onCompleteCallback;\n this.start();\n }\n\n storeUncompletedTour() {\n if (typeof window === \"undefined\") return;\n if (this.productTourId && this.productTourData) {\n try {\n let data = JSON.parse(\n JSON.stringify({\n tourData: this.productTourData,\n tourId: this.productTourId,\n })\n );\n data.tourData.steps = data.tourData.steps.slice(\n this.currentActiveIndex || 0,\n data.tourData.steps.length\n );\n localStorage.setItem(localStorageKey, JSON.stringify(data));\n } catch (e) {\n // Optionally log error in development mode.\n }\n } else {\n localStorage.removeItem(localStorageKey);\n }\n }\n\n // Attach scroll listeners with a debounce to update the pointer position after scrolling stops.\n attachScrollListeners(anchor, currentStep) {\n if (typeof window === \"undefined\") return;\n if (!anchor) return;\n const scrollableAncestors = getScrollableAncestors(anchor);\n // Also include window.\n scrollableAncestors.push(window);\n scrollableAncestors.forEach((el) => {\n const handler = () => {\n clearTimeout(this._scrollDebounceTimer);\n this._scrollDebounceTimer = setTimeout(() => {\n this.updatePointerPosition(anchor, currentStep);\n }, 150);\n };\n el.addEventListener(\"scroll\", handler, { passive: true });\n this._scrollListeners.push({ el, handler });\n });\n }\n\n // Remove scroll listeners and clear debounce timer.\n removeScrollListeners() {\n if (typeof window === \"undefined\") return;\n if (this._scrollListeners && this._scrollListeners.length > 0) {\n this._scrollListeners.forEach(({ el, handler }) => {\n el.removeEventListener(\"scroll\", handler);\n });\n this._scrollListeners = [];\n }\n if (this._scrollDebounceTimer) {\n clearTimeout(this._scrollDebounceTimer);\n this._scrollDebounceTimer = null;\n }\n }\n\n // Updated pointer position:\n // 1. Scroll the element into view.\n // 2. After the element is fully visible (or after a maximum delay), update the pointer position to point towards the element.\n updatePointerPosition(anchor, currentStep) {\n if (typeof window === \"undefined\") return;\n try {\n const container =\n this._pointerContainer || document.getElementById(pointerContainerId);\n if (!container) return;\n\n if (!anchor) {\n container.style.position = \"fixed\";\n container.style.left = \"50%\";\n container.style.top = \"50%\";\n container.style.transform = \"translate(-50%, -50%)\";\n smoothScrollToY(window.innerHeight / 2);\n this.removeScrollListeners();\n this._currentAnchor = null;\n this._currentStep = null;\n return;\n }\n\n // Step 1: Scroll the element into view.\n scrollToElement(anchor);\n\n // Step 2: Poll until the element is fully visible (or after maximum polls).\n const pollInterval = 100;\n const maxPolls = 20;\n let pollCount = 0;\n const updateFinalPosition = () => {\n if (isElementFullyVisible(anchor) || pollCount >= maxPolls) {\n // Compute final target coordinates.\n const anchorRect = anchor.getBoundingClientRect();\n const targetX = anchorRect.left + anchorRect.width / 2;\n const targetY = anchorRect.top + anchorRect.height / 2 + 10; // 10px downward offset.\n container.style.position = \"fixed\";\n container.style.left = `${targetX}px`;\n container.style.top = `${targetY}px`;\n container.style.transform = \"translate(-50%, -50%)\";\n\n // Adjust container if too far right.\n let containerWidthSpace = 350;\n if (containerWidthSpace > window.innerWidth - 40) {\n containerWidthSpace = window.innerWidth - 40;\n }\n if (targetX + containerWidthSpace > window.innerWidth - 20) {\n container.classList.add(\"copilot-pointer-container-right\");\n } else {\n container.classList.remove(\"copilot-pointer-container-right\");\n }\n\n // Reattach scroll listeners if the target or step has changed.\n if (\n this._currentAnchor !== anchor ||\n this._currentStep !== currentStep\n ) {\n this.removeScrollListeners();\n this._currentAnchor = anchor;\n this._currentStep = currentStep;\n this.attachScrollListeners(anchor, currentStep);\n }\n } else {\n pollCount++;\n setTimeout(updateFinalPosition, pollInterval);\n }\n };\n updateFinalPosition();\n } catch (e) {\n // Optionally log errors.\n }\n }\n\n cleanup() {\n if (typeof window === \"undefined\") return;\n document.body.classList.add(\"gl-copilot-fade-out\");\n if (this.currentAudio) {\n this.currentAudio.pause();\n }\n setTimeout(() => {\n if (this._pointerContainer) {\n this._pointerContainer.remove();\n this._pointerContainer = null;\n } else {\n const container = document.getElementById(pointerContainerId);\n if (container) container.remove();\n }\n const copilotInfoContainer = document.getElementById(\n copilotJoinedContainerId\n );\n if (copilotInfoContainer) copilotInfoContainer.remove();\n const styleNode = document.getElementById(styleId);\n if (styleNode) styleNode.remove();\n document.body.classList.remove(\"gl-copilot-fade-out\");\n }, 800);\n\n this.productTourId = undefined;\n this.productTourData = undefined;\n \n this.removeScrollListeners();\n }\n\n toggleAudio(muted = false) {\n this.audioMuted = muted;\n if (this.currentAudio) {\n this.currentAudio.muted = this.audioMuted;\n }\n document.querySelector(`.${copilotJoinedContainerId}-mute`).innerHTML =\n loadIcon(this.audioMuted ? \"unmute\" : \"mute\");\n }\n\n setupCopilotTour() {\n if (typeof window === \"undefined\") return;\n\n const primaryColor =\n GleapConfigManager.getInstance().flowConfig?.color ?? \"#485BFF\";\n const contrastColor = calculateContrast(primaryColor);\n\n let styleNode = document.getElementById(styleId);\n if (!styleNode) {\n styleNode = document.createElement(\"style\");\n styleNode.id = styleId;\n styleNode.type = \"text/css\";\n styleNode.textContent = `\n #${pointerContainerId} {\n position: absolute;\n top: 0;\n left: 0;\n display: flex;\n align-items: flex-start;\n pointer-events: none;\n z-index: 2147483610;\n transition: all 0.5s ease;\n }\n .${pointerContainerId}-clickmode {\n cursor: pointer;\n pointer-events: all !important;\n }\n .${pointerContainerId}-clickmode #copilot-info-bubble-content {\n display: flex !important;\n }\n .${pointerContainerId}-clickmode svg {\n display: none !important;\n }\n #${pointerContainerId} svg {\n width: 20px;\n height: auto;\n fill: none;\n }\n #copilot-info-bubble {\n position: relative;\n }\n #copilot-info-bubble-content-container {\n position: absolute;\n top: 0px;\n left: 0px;\n min-width: min(300px, 80vw);\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n }\n .${pointerContainerId}-right #copilot-info-bubble-content-container {\n left: auto !important;\n right: 0px !important;\n align-items: flex-end;\n }\n .${pointerContainerId}-right .copilot-info-bubble-content {\n margin-right: 5px;\n }\n .${pointerContainerId}-right svg {\n transform: scaleX(-1);\n }\n #copilot-info-bubble-content svg {\n width: 16px;\n height: 16px;\n display: inline-block !important;\n margin-left: 5px;\n }\n #copilot-info-bubble-content {\n margin-top: 18px;\n margin-left: 5px;\n padding: 10px 15px;\n border-radius: 20px;\n background-color: black;\n color: white;\n font-family: Arial, sans-serif;\n font-size: 14px;\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);\n max-width: 100%;\n white-space: normal;\n overflow-wrap: break-word;\n word-break: normal;\n hyphens: none;\n }\n .${pointerContainerId}-right #copilot-info-bubble-content {\n margin-top: 30px;\n margin-left: 0px;\n margin-right: 5px;\n }\n .click-wave {\n position: absolute;\n width: 34px;\n height: 34px;\n border-radius: 50%;\n background-color: rgba(0, 0, 0, 0.5);\n pointer-events: none;\n z-index: 2147483611;\n animation: click-wave-animation 0.8s ease forwards;\n }\n @keyframes click-wave-animation {\n 0% {\n transform: scale(0.2);\n opacity: 1;\n }\n 100% {\n transform: scale(2);\n opacity: 0;\n }\n }\n @keyframes slideInFromTop {\n 0% {\n transform: translateY(-100%);\n opacity: 0;\n }\n 100% {\n transform: translateY(0);\n opacity: 1;\n }\n }\n .${copilotJoinedContainerId} {\n position: fixed;\n top: 20px;\n right: 20px;\n z-index: 2147483610;\n background: #fff;\n padding: 6px;\n border-radius: 10px;\n box-shadow: 0 0 20px 0 #C294F2;\n display: flex;\n align-items: center;\n gap: 8px;\n border: 1px solid rgba(192, 146, 242, 0.5);\n animation: slideInFromTop 0.5s ease-out forwards;\n }\n .${copilotJoinedContainerId} span {\n font-size: 13px;\n color: #000;\n font-family: sans-serif;\n }\n .${copilotJoinedContainerId}-avatar {\n width: 24px;\n height: 24px;\n flex-shrink: 0;\n border-radius: 6px;\n }\n .${copilotJoinedContainerId}-mute {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n .${copilotJoinedContainerId}-mute svg {\n width: 20px;\n height: auto;\n cursor: pointer;\n animation: pulsate 2s infinite;\n }\n .${copilotJoinedContainerId}-mute svg:hover {\n opacity: 0.8;\n }\n .${copilotJoinedContainerId}-dismiss {\n display: flex;\n align-items: center;\n justify-content: center;\n padding-right: 3px;\n }\n .${copilotJoinedContainerId}-dismiss svg {\n width: 15px;\n height: auto;\n cursor: pointer;\n }\n .${copilotJoinedContainerId}-dismiss svg:hover {\n opacity: 0.8;\n }\n @keyframes pulsate {\n 0% {\n transform: scale(1);\n opacity: 1;\n }\n 50% {\n transform: scale(1.1);\n opacity: 0.8;\n }\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n }\n @keyframes glCoFadeIn {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n @keyframes glCoFadeOut {\n 0% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n }\n\n .gleap-audio-unmute-modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n background-color: rgba(0, 0, 0, 0.5);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 2147483620;\n }\n\n .gleap-audio-unmute-modal {\n background-color: #fff;\n padding: 20px;\n border-radius: 8px;\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);\n text-align: center;\n max-width: 90%;\n width: 400px;\n }\n\n .gleap-audio-unmute-modal p {\n margin-bottom: 20px;\n font-size: 16px;\n line-height: 22px;\n font-weight: normal;\n }\n\n .gleap-audio-unmute-button {\n background: ${primaryColor};\n color: ${contrastColor};\n outline: none;\n border: none;\n padding: 10px 14px;\n border-radius: 12px;\n font-size: 14px;\n font-weight: bold;\n cursor: pointer;\n }\n\n .gleap-audio-unmute-button:hover {\n opacity: 0.8;\n }\n\n .gleap-tour-continue-button {\n color: ${primaryColor};\n text-decoration: none;\n cursor: pointer;\n font-size: 14px;\n font-weight: bold;\n border: none;\n background: none;\n padding: 0;\n margin: 0;\n margin-left: 20px;\n }\n\n .gleap-tour-continue-button:hover {\n opacity: 0.8;\n }\n\n body.gl-copilot-fade-out::before,\n body.gl-copilot-fade-out::after,\n body.gl-copilot-fade-out #${copilotJoinedContainerId} {\n animation: glCoFadeOut 0.8s ease-out forwards;\n }\n ${\n this.productTourData?.playVoice ?? true\n ? \"\"\n : `\n .${copilotJoinedContainerId}-mute {\n display: none;\n }\n `\n }\n ${\n this.productTourData.gradient\n ? `body::before {\n content: \"\";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n box-sizing: border-box;\n border: 18px solid transparent;\n filter: blur(25px);\n border-image-slice: 1;\n border-image-source: linear-gradient(45deg, #ED5587, #FBE6A9, #a6e3f8, #C294F2);\n animation: glCoFadeIn 1.5s ease-out forwards;\n }\n \n body::after {\n content: \"\";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n opacity: 0.5;\n box-sizing: border-box;\n border: 3px solid transparent;\n border-image-slice: 1;\n border-image-source: linear-gradient(45deg, #ED5587, #FBE6A9, #a6e3f8, #C294F2);\n animation: glCoFadeIn 1.5s ease-out forwards;\n }`\n : `body::after {\n content: \"\";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n opacity: 0;\n }`\n }\n `;\n document.head.appendChild(styleNode);\n }\n\n const container = document.createElement(\"div\");\n container.id = pointerContainerId;\n container.style.opacity = 0;\n // Cache the pointer container.\n this._pointerContainer = container;\n\n const svgMouse = document.createElementNS(\n \"http://www.w3.org/2000/svg\",\n \"svg\"\n );\n svgMouse.setAttribute(\"viewBox\", \"0 0 380 476\");\n svgMouse.innerHTML =\n '';\n\n const infoBubble = document.createElement(\"div\");\n infoBubble.id = \"copilot-info-bubble\";\n infoBubble.innerHTML = `
`;\n\n const copilotInfoContainer = document.createElement(\"div\");\n copilotInfoContainer.id = copilotJoinedContainerId;\n copilotInfoContainer.classList.add(copilotJoinedContainerId);\n copilotInfoContainer.innerHTML = `\n \n ${this.productTourData?.kaiSlug}\n
\n ${loadIcon(this.audioMuted ? \"unmute\" : \"mute\")}\n
\n ${\n this.productTourData?.allowClose\n ? `
\n ${loadIcon(\"dismiss\")}\n
`\n : \"\"\n }\n `;\n document.body.appendChild(copilotInfoContainer);\n\n const self = this;\n\n document\n .querySelector(`.${copilotJoinedContainerId}-mute`)\n .addEventListener(\"click\", () => {\n this.toggleAudio(!this.audioMuted);\n });\n\n if (this.productTourData?.allowClose) {\n document\n .querySelector(`.${copilotJoinedContainerId}-dismiss`)\n .addEventListener(\"click\", () => {\n this.completeTour(false);\n });\n }\n\n container.appendChild(svgMouse);\n container.appendChild(infoBubble);\n document.body.appendChild(container);\n }\n\n start() {\n if (typeof window === \"undefined\") return;\n if (this.disabled) return;\n\n const config = this.productTourData;\n if (!config) return;\n canPlayAudio().then((supported) => {\n this.audioMuted = !supported;\n this.setupCopilotTour();\n\n if (this.audioMuted && config?.showUnmuteModal) {\n this.showAudioUnmuteModal();\n } else {\n setTimeout(() => {\n this.renderNextStep();\n }, 1500);\n }\n });\n }\n\n showAudioUnmuteModal() {\n // Create the overlay element\n const modalOverlay = document.createElement(\"div\");\n modalOverlay.classList.add(\"gleap-audio-unmute-modal-overlay\");\n\n // Create the modal container element\n const modal = document.createElement(\"div\");\n modal.classList.add(\"gleap-audio-unmute-modal\");\n\n // Create and add the modal message\n const message = document.createElement(\"p\");\n message.textContent = this.productTourData?.unmuteModalTitle;\n modal.appendChild(message);\n\n // Create the \"Unmute Audio\" button\n const unmuteButton = document.createElement(\"button\");\n unmuteButton.classList.add(\"gleap-audio-unmute-button\");\n unmuteButton.textContent = this.productTourData?.unmuteModalButton;\n unmuteButton.addEventListener(\"click\", () => {\n this.toggleAudio(false);\n if (modalOverlay.parentNode) {\n modalOverlay.parentNode.removeChild(modalOverlay);\n }\n setTimeout(() => {\n this.renderNextStep();\n }, 1000);\n });\n modal.appendChild(unmuteButton);\n\n // Create the \"Start Anyway\" button\n const startAnywayButton = document.createElement(\"button\");\n startAnywayButton.classList.add(\"gleap-tour-continue-button\");\n startAnywayButton.textContent = this.productTourData?.unmuteModalContinue;\n startAnywayButton.addEventListener(\"click\", () => {\n if (modalOverlay.parentNode) {\n modalOverlay.parentNode.removeChild(modalOverlay);\n }\n setTimeout(() => {\n this.renderNextStep();\n }, 1000);\n });\n modal.appendChild(startAnywayButton);\n\n // Build the modal and attach it to the DOM\n modalOverlay.appendChild(modal);\n document.body.appendChild(modalOverlay);\n }\n\n completeTour(success = true) {\n if (typeof window === \"undefined\") return;\n this.cleanup();\n if (this.onCompleteCallback) {\n this.onCompleteCallback(success);\n }\n }\n\n renderNextStep() {\n if (typeof window === \"undefined\") return;\n if (this.disabled) return;\n\n const self = this;\n const config = this.productTourData;\n const steps = config.steps;\n if (this.currentActiveIndex >= steps.length) {\n setTimeout(() => {\n this.completeTour();\n }, 500);\n return;\n }\n const currentStep = steps[this.currentActiveIndex];\n const handleStep = (element) => {\n this._pointerContainer.style.display = \"flex\";\n if (currentStep.selector && currentStep.selector.length > 0 && !element) {\n this.completeTour(false);\n return;\n }\n const gotToNextStep = () => {\n if (currentStep.mode === \"INPUT\" && element) {\n function proceedClickmode() {\n document\n .querySelector(`#${pointerContainerId}`)\n .classList.remove(\"copilot-pointer-container-clickmode\");\n element.classList.remove(\"gleap-input-highlight\");\n document.getElementById(pointerContainerId).style.display = \"none\";\n self.currentActiveIndex++;\n self.storeUncompletedTour();\n self.renderNextStep();\n }\n const inputModeType = currentStep.inputType ?? \"default\";\n if (inputModeType === \"default\") {\n function handleInputEvent(e) {\n if (e?.target?.value?.length === 0) return;\n const cursor = document.getElementById(\n `copilot-info-bubble-content`\n );\n if (!cursor) return;\n cursor.innerHTML = `${GleapTranslationManager.translateText(\n \"next\"\n )} \n \n`;\n cursor.addEventListener(\"click\", proceedClickmode, {\n once: true,\n });\n element.classList.add(\"gleap-input-highlight\");\n document\n .querySelector(`#${pointerContainerId}`)\n .classList.add(\"copilot-pointer-container-clickmode\");\n element.removeEventListener(\"input\", handleInputEvent);\n }\n element.addEventListener(\"input\", handleInputEvent, {\n once: false,\n });\n if (element.hasAttribute(\"contenteditable\")) {\n element.addEventListener(\"keyup\", handleInputEvent, {\n once: false,\n });\n }\n element.addEventListener(\n \"blur\",\n () => {\n element.focus();\n },\n { once: true }\n );\n element.focus();\n } else {\n const inputValue = currentStep.inputValue ?? \"\";\n let index = 0;\n function typeCharacter() {\n if (index < inputValue.length) {\n element.value += inputValue[index];\n index++;\n setTimeout(typeCharacter, 100);\n } else {\n setTimeout(() => {\n proceedClickmode();\n }, 1200);\n }\n }\n typeCharacter();\n }\n return;\n }\n self.currentActiveIndex++;\n self.storeUncompletedTour();\n if (currentStep.mode === \"CLICK\" && element) {\n const rect = element.getBoundingClientRect();\n const scrollX = window.scrollX || 0;\n const scrollY = window.scrollY || 0;\n performClickAnimation(\n rect.left + rect.width / 2 + scrollX,\n rect.top + rect.height / 2 + scrollY\n );\n element.click();\n }\n self.renderNextStep();\n };\n\n this.updatePointerPosition(element, currentStep);\n const message = currentStep?.message\n ? htmlToPlainText(currentStep.message)\n : \"🤔\";\n document.getElementById(`copilot-info-bubble-content`).textContent =\n message;\n this._pointerContainer.style.opacity = 1;\n const readTime = estimateReadTime(message);\n const continueWithNoAudio = () => {\n this.currentAudio = undefined;\n setTimeout(() => {\n gotToNextStep();\n }, readTime * 1000);\n };\n if (currentStep.voice && currentStep.voice.length > 0) {\n this.currentAudio = new Audio(currentStep.voice);\n if (this.audioMuted) {\n this.currentAudio.muted = true;\n }\n this.currentAudio.addEventListener(\"ended\", () => {\n setTimeout(() => {\n gotToNextStep();\n }, 1000);\n });\n this.currentAudio\n .play()\n .then(() => {})\n .catch((error) => {\n continueWithNoAudio();\n });\n } else {\n continueWithNoAudio();\n }\n };\n\n const elementPromise = currentStep.selector\n ? waitForElement(currentStep.selector)\n : Promise.resolve(null);\n elementPromise.then(handleStep).catch(() => handleStep(null));\n }\n}\n","import { loadIcon } from \"./UI\";\nimport GleapTours from \"./GleapTours\";\nimport Gleap, { GleapEventManager, GleapSession } from \"./Gleap\";\nimport GleapCopilotTours from \"./GleapCopilotTours\";\n\nconst localStorageKey = \"gleap-tour-data\";\n\nexport default class GleapProductTours {\n productTourData = undefined;\n productTourId = undefined;\n unmuted = false;\n currentActiveIndex = undefined;\n gleapTourObj = undefined;\n disabled = false;\n\n // GleapReplayRecorder singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapProductTours();\n return this.instance;\n } else {\n return this.instance;\n }\n }\n\n disable() {\n if (this.gleapTourObj) {\n this.gleapTourObj.destroy();\n }\n\n // Disable copilot tours.\n GleapCopilotTours.getInstance().disable();\n\n this.gleapTourObj = undefined;\n this.disabled = true;\n }\n\n constructor() {\n const self = this;\n\n if (typeof window !== \"undefined\") {\n const beforeUnloadListener = (event) => {\n if (\n !self?.disabled &&\n self?.productTourId &&\n self?.productTourData &&\n self?.productTourData?.tourType !== \"cobrowse\"\n ) {\n self.storeUncompletedTour();\n }\n };\n\n if (typeof window !== \"undefined\") {\n window.addEventListener(\"beforeunload\", beforeUnloadListener);\n }\n }\n }\n\n startWithConfig(tourId, config, delay = 0, manually = false) {\n // Prevent multiple tours from being started.\n if (this.productTourId || this.disabled) {\n return;\n }\n\n this.productTourId = tourId;\n this.productTourData = config;\n this.currentActiveIndex = 0;\n\n if (manually) {\n this.start();\n } else {\n const self = this;\n\n // Validate product tour.\n GleapSession.getInstance()\n .validateProductTour(tourId)\n .then(() => {\n if (delay > 0) {\n return setTimeout(() => {\n self.start();\n }, delay);\n } else {\n return this.start();\n }\n })\n .catch((error) => {\n console.log(\"Product tour is not live. Cleaning up...\");\n console.error(error);\n\n self.onComplete(false);\n });\n }\n }\n\n onComplete(success = true) {\n const comData = {\n tourId: this.productTourId,\n };\n\n if (success) {\n GleapEventManager.notifyEvent(\"productTourCompleted\", comData);\n Gleap.trackEvent(`tour-${this.productTourId}-completed`, comData);\n } else {\n GleapEventManager.notifyEvent(\"productTourQuit\", comData);\n Gleap.trackEvent(`tour-${this.productTourId}-quit`, comData);\n }\n\n // Clear data.\n if (this.gleapTourObj) {\n this.gleapTourObj.destroy();\n }\n\n this.gleapTourObj = undefined;\n this.productTourData = undefined;\n this.productTourId = undefined;\n this.currentActiveIndex = undefined;\n this.clearUncompletedTour();\n }\n\n loadUncompletedTour() {\n try {\n const data = JSON.parse(localStorage.getItem(localStorageKey));\n if (data?.tourData && data?.tourId) {\n return data;\n }\n } catch (e) {}\n\n return null;\n }\n\n storeUncompletedTour() {\n if (this.productTourId && this.productTourData) {\n try {\n let data = JSON.parse(\n JSON.stringify({\n tourData: this.productTourData,\n tourId: this.productTourId,\n })\n );\n\n data.tourData.steps = data.tourData.steps.slice(\n this.currentActiveIndex || 0,\n data.tourData.steps.length\n );\n\n localStorage.setItem(localStorageKey, JSON.stringify(data));\n } catch (e) {}\n } else {\n this.clearUncompletedTour();\n }\n }\n\n clearUncompletedTour() {\n try {\n localStorage.removeItem(localStorageKey);\n } catch (e) {}\n }\n\n start() {\n const config = this.productTourData;\n if (!config) {\n return;\n }\n\n if (config.tourType === \"cobrowse\") {\n return GleapCopilotTours.getInstance().startWithConfig(\n this.productTourId,\n config,\n (success) => {\n this.onComplete(success);\n }\n );\n }\n\n this.unmuted = false;\n const steps = config.steps;\n const self = this;\n\n var driverSteps = [];\n\n for (let i = 0; i < steps.length; i++) {\n const step = steps[i];\n\n const isClickMode = step.mode === \"CLICK\";\n const isInputMode = step.mode === \"INPUT\";\n\n var message = \"\";\n var hasSender = false;\n\n if (step.type === \"video-pointer\") {\n message = `
\n \n
${loadIcon(\n \"unmute\"\n )}
\n
`;\n } else {\n var senderHTML = ``;\n\n if (config.sender && config.sender.firstName) {\n hasSender = true;\n senderHTML = `
\n
\n
${config.sender.firstName}
\n
`;\n }\n\n message = `${senderHTML}
${step.message}
`;\n }\n\n const disableInteraction = !isClickMode && !isInputMode;\n\n var driverStep = {\n disableActiveInteraction: disableInteraction,\n mode: step.mode,\n popover: {\n description: message,\n popoverClass: `gleap-tour-popover-${step.type} ${\n !hasSender && \"gleap-tour-popover-no-sender\"\n } ${config.allowClose && \"gleap-tour-popover-can-close\"}`,\n ...(isClickMode\n ? {\n showButtons: [],\n }\n : {}),\n },\n };\n if (step.selector && step.selector.length > 0) {\n driverStep.element = step.selector;\n }\n driverSteps.push(driverStep);\n }\n\n var buttons = [\"next\", \"close\"];\n\n if (config.backButton) {\n buttons.push(\"previous\");\n }\n\n function onDocumentClick(evnt) {\n try {\n var gleapTourPopover = document.querySelector(\".gleap-tour-popover\");\n if (gleapTourPopover && !gleapTourPopover.contains(evnt.target)) {\n const stepIndex = self.gleapTourObj.getActiveIndex();\n const step = steps[stepIndex];\n const element = self.gleapTourObj.getActiveElement();\n\n if (step?.mode === \"CLICK\" && evnt?.target !== element) {\n const isInsideElement = element.contains(evnt?.target);\n if (!isInsideElement) {\n // Ignore clicks outside of the actual element.\n return;\n }\n }\n\n // Store next step index.\n self.currentActiveIndex = (self.currentActiveIndex || 0) + 1;\n self.storeUncompletedTour();\n\n if (\n (element && element.tagName === \"INPUT\") ||\n step.mode === \"INPUT\" ||\n evnt?.target?.id.includes(\"tooltip-svg\")\n ) {\n // Prevent.\n } else {\n self.gleapTourObj.moveNext();\n }\n }\n } catch (e) {}\n }\n\n this.gleapTourObj = GleapTours({\n showProgress: true,\n allowKeyboardControl: false,\n steps: driverSteps,\n showProgress: steps.length > 1,\n allowClose: config.allowClose,\n nextBtnText: config.nextText,\n doneBtnText: config.doneText,\n prevBtnText: config.prevText,\n showButtons: buttons,\n onHighlightStarted: (element, step, config) => {\n this.currentActiveIndex = config?.state?.activeIndex;\n this.storeUncompletedTour();\n },\n onElementNotFound: (step) => {\n document.removeEventListener(\"click\", onDocumentClick);\n\n this.onComplete(false);\n },\n onDestroyStarted: () => {\n if (!this.gleapTourObj.hasNextStep()) {\n // Mark as completed.\n this.onComplete(true);\n } else {\n // Mark as quit.\n this.onComplete(false);\n }\n\n document.removeEventListener(\"click\", onDocumentClick);\n },\n onPopoverRender: (popoverElement) => {\n // Fix for images and videos.\n if (popoverElement) {\n const mediaElements = document.querySelectorAll(\n \".gleap-tour-popover-description img, .gleap-tour-popover-description video\"\n );\n\n const performRequentialRefresh = () => {\n setTimeout(() => {\n this.gleapTourObj.refresh();\n }, 500);\n setTimeout(() => {\n this.gleapTourObj.refresh();\n }, 750);\n };\n\n for (let i = 0; i < mediaElements.length; i++) {\n const mediaElement = mediaElements[i];\n if (mediaElement.tagName === \"IMG\") {\n mediaElement.addEventListener(\"load\", () => {\n performRequentialRefresh();\n });\n mediaElement.addEventListener(\"error\", () => {\n performRequentialRefresh();\n });\n } else if (mediaElement.tagName === \"VIDEO\") {\n mediaElement.addEventListener(\"canplaythrough\", () => {\n performRequentialRefresh();\n });\n mediaElement.addEventListener(\"error\", () => {\n performRequentialRefresh();\n });\n }\n }\n }\n\n const playingClass = \"gleap-tour-video--playing\";\n const playPauseContainer = document.querySelector(\n \".gleap-tour-video-playpause\"\n );\n\n const videoElement = document.querySelector(\".gleap-tour-video-obj\");\n if (videoElement) {\n const videoContainer = videoElement.closest(\".gleap-tour-video\");\n\n if (self.unmuted) {\n if (videoElement) {\n videoElement.pause();\n videoElement.muted = false;\n videoElement.play();\n videoContainer.classList.add(playingClass);\n }\n }\n\n videoElement.addEventListener(\"ended\", function () {\n playPauseContainer.innerHTML = loadIcon(\"replay\");\n playPauseContainer.classList.add(\n \"gleap-tour-video-svg--fullscreen\"\n );\n videoContainer.classList.remove(playingClass);\n });\n\n videoElement.addEventListener(\"play\", function () {\n playPauseContainer.classList.remove(\n \"gleap-tour-video-svg--fullscreen\"\n );\n });\n\n if (playPauseContainer) {\n playPauseContainer.addEventListener(\"click\", () => clickVideo());\n }\n\n const clickVideo = () => {\n if (videoElement.muted) {\n self.unmuted = true;\n\n videoElement.pause();\n videoElement.currentTime = 0;\n videoElement.muted = false;\n videoElement.play();\n\n playPauseContainer.innerHTML = loadIcon(\"mute\");\n videoContainer.classList.add(playingClass);\n } else if (videoElement.paused) {\n videoElement.muted = false;\n videoElement.play();\n\n playPauseContainer.innerHTML = loadIcon(\"mute\");\n videoContainer.classList.add(playingClass);\n } else {\n videoElement.pause();\n playPauseContainer.innerHTML = loadIcon(\"unmute\");\n videoContainer.classList.remove(playingClass);\n }\n };\n }\n },\n });\n this.gleapTourObj.drive();\n\n document.addEventListener(\"click\", onDocumentClick, true);\n }\n}\n","import { injectStyledCSS } from \"./UI\";\nimport GleapNetworkIntercepter from \"./GleapNetworkIntercepter\";\nimport {\n fixGleapHeight,\n gleapDataParser,\n runFunctionWhenDomIsReady,\n} from \"./GleapHelper\";\nimport GleapSession from \"./GleapSession\";\nimport GleapStreamedEvent from \"./GleapStreamedEvent\";\nimport GleapConfigManager from \"./GleapConfigManager\";\nimport GleapFeedback from \"./GleapFeedback\";\nimport GleapFrameManager from \"./GleapFrameManager\";\nimport GleapMetaDataManager from \"./GleapMetaDataManager\";\nimport GleapConsoleLogManager from \"./GleapConsoleLogManager\";\nimport GleapClickListener from \"./GleapClickListener\";\nimport GleapFeedbackButtonManager from \"./GleapFeedbackButtonManager\";\nimport GleapCustomDataManager from \"./GleapCustomDataManager\";\nimport GleapEventManager from \"./GleapEventManager\";\nimport GleapCustomActionManager from \"./GleapCustomActionManager\";\nimport GleapReplayRecorder from \"./GleapReplayRecorder\";\nimport GleapMarkerManager from \"./GleapMarkerManager\";\nimport GleapTranslationManager from \"./GleapTranslationManager\";\nimport GleapShortcutListener from \"./GleapShortcutListener\";\nimport GleapPreFillManager from \"./GleapPreFillManager\";\nimport GleapNotificationManager from \"./GleapNotificationManager\";\nimport GleapBannerManager from \"./GleapBannerManager\";\nimport GleapModalManager from \"./GleapModalManager\";\nimport GleapAudioManager from \"./GleapAudioManager\";\nimport GleapTagManager from \"./GleapTagManager\";\nimport GleapAdminManager from \"./GleapAdminManager\";\nimport GleapProductTours from \"./GleapProductTours\";\nimport { checkPageFilter } from \"./GleapPageFilter\";\nimport { registerGleapChecklist } from \"./GleapChecklist\";\nimport ChecklistNetworkManager from \"./ChecklistNetworkManager\";\n\nif (\n typeof window !== \"undefined\" &&\n typeof HTMLCanvasElement !== \"undefined\" &&\n HTMLCanvasElement.prototype &&\n HTMLCanvasElement.prototype.__originalGetContext === undefined\n) {\n HTMLCanvasElement.prototype.__originalGetContext =\n HTMLCanvasElement.prototype.getContext;\n HTMLCanvasElement.prototype.getContext = function (type, options) {\n return this.__originalGetContext(type, {\n ...options,\n preserveDrawingBuffer: true,\n });\n };\n}\n\nif (\n typeof customElements !== \"undefined\" &&\n typeof HTMLElement !== \"undefined\" &&\n typeof window !== \"undefined\"\n) {\n registerGleapChecklist();\n}\n\nclass Gleap {\n static invoked = true;\n static silentCrashReportSent = false;\n initialized = false;\n offlineMode = false;\n disablePageTracking = false;\n disableInAppNotifications = false;\n\n // Global data\n globalData = {\n screenRecordingData: null,\n webReplay: null,\n snapshotPosition: {\n x: 0,\n y: 0,\n },\n };\n\n // Gleap singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new Gleap();\n return this.instance;\n } else {\n return this.instance;\n }\n }\n\n /**\n * Main constructor\n */\n constructor() {\n if (typeof window !== \"undefined\") {\n // Make sure all instances are ready.\n GleapMetaDataManager.getInstance();\n GleapConsoleLogManager.getInstance().start();\n GleapClickListener.getInstance().start();\n GleapAdminManager.getInstance().start();\n }\n }\n\n /**\n * Sets the development environment\n * @param {*} environment\n */\n static setEnvironment(environment) {\n GleapMetaDataManager.getInstance().environment = environment;\n }\n\n /**\n * Set tags to be submitted with each ticket.\n * @param {*} tags\n */\n static setTags(tags) {\n GleapTagManager.getInstance().setTags(tags);\n }\n\n /**\n * Sets a custom URL handler.\n * @param {*} urlHandler\n */\n static setUrlHandler(urlHandler) {\n GleapFrameManager.getInstance().setUrlHandler(urlHandler);\n }\n\n /**\n * Active the Gleap offline mode.\n * @param {*} offlineMode\n */\n static setOfflineMode(offlineMode) {\n const instance = this.getInstance();\n instance.offlineMode = offlineMode;\n }\n\n /**\n * Disable the in-app notifications.\n * @param {*} disableInAppNotifications\n */\n static setDisableInAppNotifications(disableInAppNotifications) {\n const instance = this.getInstance();\n instance.disableInAppNotifications = disableInAppNotifications;\n }\n\n /**\n * Disable the default page tracking.\n * @param {*} disablePageTracking\n */\n static setDisablePageTracking(disablePageTracking) {\n const instance = this.getInstance();\n instance.disablePageTracking = disablePageTracking;\n }\n\n /**\n * Revert console log overwrite.\n */\n static disableConsoleLogOverwrite() {\n GleapConsoleLogManager.getInstance().stop();\n }\n\n /**\n * Set the AI tools.\n * @param {*} tools\n */\n static setAiTools(tools) {\n GleapConfigManager.getInstance().setAiTools(tools);\n GleapFrameManager.getInstance().sendConfigUpdate();\n }\n\n /**\n * Attaches external network logs.\n */\n static attachNetworkLogs(networkLogs) {\n GleapNetworkIntercepter.getInstance().externalRequests =\n gleapDataParser(networkLogs);\n }\n\n /**\n * Add entry to logs.\n * @param {*} message\n * @param {*} logLevel\n * @returns\n */\n static log(message, logLevel = \"INFO\") {\n GleapConsoleLogManager.getInstance().addLog(message, logLevel);\n }\n\n /**\n * Initializes the SDK\n * @param {*} sdkKey\n */\n static initialize(sdkKey) {\n const instance = this.getInstance();\n if (instance.initialized) {\n console.warn(\"Gleap already initialized.\");\n return;\n }\n\n instance.initialized = true;\n\n try {\n fixGleapHeight();\n } catch (error) {}\n\n // Start session\n const sessionInstance = GleapSession.getInstance();\n sessionInstance.sdkKey = sdkKey;\n sessionInstance.setOnSessionReady(() => {\n // Run auto configuration.\n setTimeout(() => {\n GleapConfigManager.getInstance()\n .start()\n .then(() => {\n GleapStreamedEvent.getInstance().start();\n\n runFunctionWhenDomIsReady(() => {\n // Inject the widget buttons\n GleapFeedbackButtonManager.getInstance().injectFeedbackButton();\n\n // Inject the notification container\n GleapNotificationManager.getInstance().injectNotificationUI();\n\n // Check for uncompleted tour.\n Gleap.checkForUncompletedTour();\n\n // Check for URL params.\n Gleap.checkForUrlParams();\n\n // Notify event.\n GleapEventManager.notifyEvent(\"initialized\");\n });\n })\n .catch(function (err) {\n console.warn(\"Failed to initialize Gleap.\");\n });\n }, 0);\n });\n sessionInstance.startSession();\n }\n\n static openURL(url, newTab = false) {\n GleapFrameManager.getInstance().urlHandler(url, newTab);\n }\n\n static checkForUrlParams() {\n if (typeof window === \"undefined\" || !window.location.search) {\n return;\n }\n\n try {\n const urlParams = new URLSearchParams(window.location.search);\n\n const widget = urlParams.get(\"gleap_widget\");\n if (widget && widget.length > 0) {\n Gleap.open();\n }\n\n const conversationFlow = urlParams.get(\"gleap_conversation\");\n if (conversationFlow && conversationFlow.length > 0) {\n if (conversationFlow === \"true\") {\n Gleap.startConversation(true);\n } else {\n Gleap.startBot(conversationFlow, true);\n }\n }\n\n const feedbackFlow = urlParams.get(\"gleap_feedback\");\n if (feedbackFlow && feedbackFlow.length > 0) {\n Gleap.startFeedbackFlow(feedbackFlow);\n }\n const surveyFlow = urlParams.get(\"gleap_survey\");\n const surveyFlowFormat = urlParams.get(\"gleap_survey_format\");\n if (surveyFlow && surveyFlow.length > 0) {\n Gleap.showSurvey(\n surveyFlow,\n surveyFlowFormat === \"survey_full\" ? \"survey_full\" : \"survey\"\n );\n }\n const tourId = urlParams.get(\"gleap_tour\");\n if (tourId && tourId.length > 0) {\n var tourDelay = parseInt(urlParams.get(\"gleap_tour_delay\"));\n if (isNaN(tourDelay)) {\n tourDelay = 2;\n }\n\n setTimeout(() => {\n Gleap.startProductTour(tourId);\n }, tourDelay * 1000);\n }\n } catch (exp) {}\n }\n\n /**\n * Destroy\n * @returns\n */\n static destroy() {\n GleapReplayRecorder.getInstance().stop();\n GleapStreamedEvent.getInstance().stop();\n GleapFrameManager.getInstance().destroy();\n GleapFeedbackButtonManager.getInstance().destroy();\n GleapNotificationManager.getInstance().clearAllNotifications(true);\n GleapSession.getInstance().clearSession(0, false);\n GleapBannerManager.getInstance().removeBannerUI();\n\n // Reset the initialized flag and clear the instance\n this.instance = null;\n }\n\n /**\n * Close any open banner.\n */\n static closeBanner() {\n GleapBannerManager.getInstance().removeBannerUI();\n }\n\n /**\n * Close any open modal.\n */\n static closeModal() {\n GleapModalManager.getInstance().hideModal();\n }\n\n /**\n * Enable or disable Gleap session tracking through cookies.\n * @param {*} useCookies\n */\n static setUseCookies(useCookies) {\n GleapSession.getInstance().useCookies = useCookies;\n }\n\n /**\n * Indentifies the user session\n * @param {string} userId\n * @param {*} userData\n */\n static identify(userId, userData, userHash) {\n return GleapSession.getInstance().identifySession(\n userId,\n gleapDataParser(userData),\n userHash\n );\n }\n\n /**\n * Updates the contact data.\n * @param {*} userData\n */\n static updateContact(userData) {\n return GleapSession.getInstance().updateSession(gleapDataParser(userData));\n }\n\n /**\n * Clears the current contact.\n */\n static clearIdentity() {\n GleapSession.getInstance().clearSession();\n }\n\n /**\n * Returns the current user session\n */\n static getIdentity() {\n return GleapSession.getInstance().getSession();\n }\n\n /**\n * Returns whether the user is identified or not.\n */\n static isUserIdentified() {\n const session = GleapSession.getInstance().session;\n if (session && session.userId && session.userId.length > 0) {\n return true;\n }\n return false;\n }\n\n /**\n * Widget opened status\n * @returns {boolean} isOpened\n */\n static isOpened() {\n return GleapFrameManager.getInstance().isOpened();\n }\n\n /**\n * Hides any open Gleap dialogs.\n */\n static hide() {\n GleapFrameManager.getInstance().hideWidget();\n }\n\n /**\n * Sets the maximum network request count.\n */\n static setMaxNetworkRequests(maxRequests) {\n GleapNetworkIntercepter.getInstance().setMaxRequests(maxRequests);\n }\n\n /**\n * Sets the maximum network request count.\n */\n static startNetworkLogger() {\n GleapNetworkIntercepter.getInstance().start();\n }\n\n /**\n * Sets the network logger blacklist.\n * @param {Array} networkLogBlacklist\n */\n static setNetworkLogsBlacklist(networkLogBlacklist) {\n GleapNetworkIntercepter.getInstance().setBlacklist(networkLogBlacklist);\n }\n\n /**\n * Sets the network logger props to ignore.\n * @param {Array} filters\n */\n static setNetworkLogPropsToIgnore(filters) {\n GleapNetworkIntercepter.getInstance().setFilters(filters);\n }\n\n /**\n * Set custom replay options.\n * @param {*} options\n */\n static setReplayOptions(options) {\n GleapReplayRecorder.getInstance().setOptions(options);\n }\n\n /**\n * Closes any open Gleap dialogs.\n * @param {boolean} resetRoutes\n */\n static close(resetRoutes = false) {\n GleapFrameManager.getInstance().hideWidget(resetRoutes);\n }\n\n /**\n * Starts the Gleap flow.\n */\n static open() {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Track a custom event\n * @param {string} name\n * @param {any} data\n */\n static trackEvent(name, data) {\n GleapStreamedEvent.getInstance().logEvent(name, data);\n }\n\n /**\n * Logs a custom event\n * @param {string} name\n * @param {any} data\n * @deprecated Please use trackEvent instead.\n */\n static logEvent(name, data) {\n GleapStreamedEvent.getInstance().logEvent(name, data);\n }\n\n /**\n * Prefills a specific form field.\n * @param {*} key\n * @param {*} value\n */\n static preFillForm(data) {\n const cleanedData = gleapDataParser(data);\n GleapPreFillManager.getInstance().formPreFill = cleanedData;\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"prefill-form-data\",\n data: cleanedData,\n },\n true\n );\n }\n\n /**\n * Register events for Gleap.\n * @param {*} eventName\n * @param {*} callback\n */\n static on(eventName, callback) {\n GleapEventManager.on(eventName, callback);\n }\n\n /**\n * Enable or disable shortcuts\n * @param {boolean} enabled\n */\n static enableShortcuts(enabled) {\n if (enabled) {\n GleapShortcutListener.getInstance().start();\n } else {\n GleapShortcutListener.getInstance().stop();\n }\n }\n\n /**\n * Show or hide the feedback button\n * @param {*} show\n * @returns\n */\n static showFeedbackButton(show) {\n GleapFeedbackButtonManager.getInstance().toggleFeedbackButton(show);\n }\n\n /**\n * Sets the app version code.\n * @param {string} appVersionCode\n */\n static setAppVersionCode(appVersionCode) {\n GleapMetaDataManager.setAppVersionCode(appVersionCode);\n }\n\n /**\n * Sets the app version code.\n * @param {string} appVersionCode\n */\n static setAppBuildNumber(appBuildNumber) {\n GleapMetaDataManager.setAppBuildNumber(appBuildNumber);\n }\n\n /**\n * Set a custom ws api url.\n * @param {string} wsApiUrl\n */\n static setWSApiUrl(wsApiUrl) {\n GleapSession.getInstance().wsApiUrl = wsApiUrl;\n }\n\n /**\n * Set a custom api url.\n * @param {string} apiUrl\n */\n static setApiUrl(apiUrl) {\n GleapSession.getInstance().apiUrl = apiUrl;\n }\n\n /**\n * Set a custom banner url.\n * @param {string} bannerUrl\n */\n static setBannerUrl(bannerUrl) {\n GleapBannerManager.getInstance().setBannerUrl(bannerUrl);\n }\n\n /**\n * Set a custom modal url.\n * @param {string} modalUrl\n */\n static setModalUrl(modalUrl) {\n GleapModalManager.getInstance().setModalUrl(modalUrl);\n }\n\n /**\n * Set a custom frame api url.\n * @param {string} frameUrl\n */\n static setFrameUrl(frameUrl) {\n GleapFrameManager.getInstance().frameUrl = frameUrl;\n }\n\n /**\n * This method is used to set ticket attributes programmatically.\n * @param {*} key The key of the attribute you want to add.\n * @param {*} value The value to set.\n */\n static setTicketAttribute(key, value) {\n GleapCustomDataManager.getInstance().setTicketAttribute(key, value);\n }\n\n /**\n * This method is used to unset ticket attributes programmatically.\n * @param {*} key The key of the attribute you want to unset.\n */\n static unsetTicketAttribute(key) {\n GleapCustomDataManager.getInstance().unsetTicketAttribute(key);\n }\n\n /**\n * This method is used to clear ticket attributes programmatically.\n */\n static clearTicketAttributes() {\n GleapCustomDataManager.getInstance().clearTicketAttributes();\n }\n\n /**\n * Set custom data that will be attached to the bug-report.\n * @param {*} data\n */\n static attachCustomData(data) {\n GleapCustomDataManager.getInstance().attachCustomData(data);\n }\n\n /**\n * Add one key value pair to the custom data object\n * @param {*} key The key of the custom data entry you want to add.\n * @param {*} value The custom data you want to add.\n */\n static setCustomData(key, value) {\n GleapCustomDataManager.getInstance().setCustomData(key, value);\n }\n\n /**\n * Remove one key value pair of the custom data object\n * @param {*} key The key of the custom data entry you want to remove.\n */\n static removeCustomData(key) {\n GleapCustomDataManager.getInstance().removeCustomData(key);\n }\n\n /**\n * Clear the custom data\n */\n static clearCustomData() {\n GleapCustomDataManager.getInstance().clearCustomData();\n }\n\n /**\n * Play or mute the sound.\n * @param {*} play\n */\n static playSound(play) {\n GleapAudioManager.playSound(play);\n }\n\n /**\n * Show or hide the notification badge count.\n * @param {boolean} showNotificationBadge show or hide the notification badge\n *\n */\n static showTabNotificationBadge(showNotificationBadge) {\n const notificationInstance = GleapNotificationManager.getInstance();\n notificationInstance.showNotificationBadge = showNotificationBadge;\n notificationInstance.updateTabBarNotificationCount();\n }\n\n /**\n * Override the browser language.\n * @param {string} language country code with two letters\n */\n static setLanguage(language) {\n GleapTranslationManager.getInstance().setOverrideLanguage(language);\n\n if (Gleap.getInstance().initialized) {\n setTimeout(() => {\n Gleap.getInstance().softReInitialize();\n\n // Update language for contact.\n Gleap.updateContact({\n lang: language,\n });\n }, 1000);\n }\n }\n\n /**\n * Register custom action\n * @param {*} action\n */\n static registerCustomAction(customAction) {\n GleapCustomActionManager.registerCustomAction(customAction);\n }\n\n /**\n * Triggers a custom action\n * @param {*} actionName\n */\n static triggerCustomAction(name) {\n GleapCustomActionManager.triggerCustomAction(name);\n }\n\n /**\n * Sets a custom color scheme.\n * @param {string} primaryColor\n */\n static setStyles(\n primaryColor,\n headerColor,\n buttonColor,\n backgroundColor = \"#ffffff\",\n borderRadius = 20,\n buttonX = 20,\n buttonY = 20,\n buttonStyle = GleapFeedbackButtonManager.FEEDBACK_BUTTON_BOTTOM_LEFT\n ) {\n runFunctionWhenDomIsReady(() => {\n injectStyledCSS(\n primaryColor,\n headerColor,\n buttonColor,\n borderRadius,\n backgroundColor,\n buttonX,\n buttonY,\n buttonStyle\n );\n });\n }\n\n /**\n * Sends a silent feedback report\n * @param {*} formData\n * @param {*} priority\n * @param {*} excludeData\n */\n static sendSilentCrashReport(\n description = \"\",\n priority = \"MEDIUM\",\n excludeData = {\n screenshot: true,\n replays: true,\n attachments: true,\n }\n ) {\n return Gleap.sendSilentCrashReportWithFormData(\n {\n description,\n },\n priority,\n excludeData\n );\n }\n\n /**\n * Sends a silent feedback report\n * @param {*} formData\n * @param {*} priority\n * @param {*} excludeData\n */\n static sendSilentCrashReportWithFormData(\n formData,\n priority = \"MEDIUM\",\n excludeData = {\n screenshot: true,\n replays: true,\n attachments: true,\n }\n ) {\n if (this.silentCrashReportSent) {\n return;\n }\n\n this.silentCrashReportSent = true;\n setTimeout(() => {\n this.silentCrashReportSent = false;\n }, 10000);\n\n const excludeDataCleaned = excludeData ? gleapDataParser(excludeData) : {};\n const sessionInstance = GleapSession.getInstance();\n if (!sessionInstance.ready) {\n return;\n }\n\n var newFormData = formData ? formData : {};\n if (sessionInstance.session.email) {\n newFormData.reportedBy = sessionInstance.session.email;\n }\n\n const feedback = new GleapFeedback(\n \"CRASH\",\n priority,\n newFormData,\n true,\n excludeDataCleaned\n );\n feedback\n .sendFeedback()\n .then(() => {})\n .catch((error) => {});\n }\n\n /**\n * Shows a survey manually.\n * @param {*} actionType\n * @param {*} format\n */\n static showSurvey(actionType, format = \"survey\") {\n Gleap.startFeedbackFlowWithOptions(\n actionType,\n {\n hideBackButton: true,\n format,\n },\n true\n );\n }\n\n /**\n * Starts a classic feedback form.\n */\n static startClassicForm(formId, showBackButton) {\n Gleap.startFeedbackFlowWithOptions(formId, {\n hideBackButton: !showBackButton,\n });\n }\n\n /**\n * Starts the bug reporting flow.\n */\n static startFeedbackFlow(feedbackFlow, showBackButton) {\n Gleap.startFeedbackFlowWithOptions(feedbackFlow, {\n hideBackButton: !showBackButton,\n });\n }\n\n /**\n * Starts the bug reporting flow.\n */\n static startFeedbackFlowWithOptions(\n feedbackFlow,\n options = {},\n isSurvey = false\n ) {\n const { autostartDrawing, hideBackButton, format } = options;\n const sessionInstance = GleapSession.getInstance();\n if (!sessionInstance.ready) {\n return;\n }\n\n // Initially set scroll position\n Gleap.getInstance().setGlobalDataItem(\"snapshotPosition\", {\n x: window.scrollX,\n y: window.scrollY,\n });\n\n var action = \"start-feedbackflow\";\n if (isSurvey) {\n action = \"start-survey\";\n }\n\n GleapFrameManager.getInstance().setAppMode(isSurvey ? format : \"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: action,\n data: {\n flow: feedbackFlow,\n hideBackButton: hideBackButton,\n format,\n },\n },\n true\n );\n\n if (autostartDrawing) {\n GleapFrameManager.getInstance().showDrawingScreen(\"screenshot\");\n } else {\n GleapFrameManager.getInstance().showWidget();\n }\n }\n\n /**\n * Opens the conversations overview.\n */\n static openConversations(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-conversations\",\n data: {\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens a conversation\n */\n static openConversation(shareToken, showBackButton = true) {\n if (!shareToken) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-conversation\",\n data: {\n shareToken,\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Starts a new conversation\n */\n static startConversation(showBackButton = true) {\n Gleap.startBot(\"\", showBackButton);\n }\n\n /**\n * Starts a new conversation and attaches the bot with the given id.\n */\n static startBot(botId, showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"start-bot\",\n data: {\n botId: botId ? botId : \"\",\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens a help center collection\n */\n static openHelpCenterCollection(collectionId, showBackButton = true) {\n if (!collectionId) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-help-collection\",\n data: {\n collectionId,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens a help article\n */\n static openHelpCenterArticle(articleId, showBackButton = true) {\n if (!articleId) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-help-article\",\n data: {\n articleId,\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens the help center.\n */\n static openHelpCenter(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-helpcenter\",\n data: {\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Search for news articles in the help center\n */\n static searchHelpCenter(term, showBackButton = true) {\n if (!term) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-helpcenter-search\",\n data: {\n term,\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens a news article\n */\n static openNewsArticle(id, showBackButton = true) {\n if (!id) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-news-article\",\n data: {\n id,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Open the checklists overview.\n */\n static openChecklists(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-checklists\",\n data: {},\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Starts a new checklist and opens it.\n */\n static startChecklist(\n outboundId,\n showBackButton = true,\n sharedKey = undefined\n ) {\n if (!outboundId) {\n return false;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"start-checklist\",\n data: {\n outboundId: outboundId,\n hideBackButton: !showBackButton,\n ...(sharedKey ? { sharedKey: sharedKey } : {}),\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n\n return true;\n }\n\n /**\n * Open an existing checklist.\n */\n static openChecklist(checklistId, showBackButton = true) {\n if (!checklistId) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-checklist\",\n data: {\n id: checklistId,\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Gets the full checklist data by validating the outbound ID and fetching the data.\n * @param {string} outboundId - The outbound checklist ID to get data for.\n * @param {string} [sharedKey] - Optional shared key for the checklist.\n * @returns {Promise} A promise that resolves with the full checklist data.\n *\n * Available events for checklist updates (use Gleap.on() to listen):\n * - 'checklist-loaded': Fired when a checklist is initially loaded\n * - 'checklist-update': Fired when checklist data is updated\n * - 'checklist-step-completed': Fired when a step is marked as completed\n * - 'checklist-completed': Fired when the entire checklist is completed\n */\n static getChecklistData(outboundId, sharedKey) {\n if (!outboundId) {\n return Promise.reject(new Error(\"outboundId is required\"));\n }\n\n const networkManager = ChecklistNetworkManager.getInstance();\n\n // First validate the checklist to get the internal ID\n return networkManager\n .validateChecklist(outboundId, sharedKey)\n .then((internalId) => {\n // Then fetch the full checklist data\n return networkManager.fetchChecklist(internalId);\n });\n }\n\n /**\n * Opens the news overview.\n */\n static openNews(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-news\",\n data: {\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens the feature requests overview.\n */\n static openFeatureRequests(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-feature-requests\",\n data: {},\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n isLiveMode() {\n if (this.offlineMode === true) {\n return false;\n }\n\n var hostname = window.location.hostname;\n const isLocalHost =\n [\"localhost\", \"127.0.0.1\", \"0.0.0.0\", \"\", \"::1\"].includes(hostname) ||\n hostname.startsWith(\"192.168.\") ||\n hostname.startsWith(\"10.0.\") ||\n hostname.endsWith(\".local\") ||\n !hostname.includes(\".\");\n return !isLocalHost;\n }\n\n softReInitialize() {\n GleapFrameManager.getInstance().destroy();\n GleapConfigManager.getInstance()\n .start()\n .then(() => {\n // Update the feedback button.\n GleapFeedbackButtonManager.getInstance().refresh();\n\n // Inject the notification container\n GleapNotificationManager.getInstance().injectNotificationUI();\n })\n .catch(function (err) {\n console.warn(\"Failed to initialize Gleap.\");\n });\n }\n\n /**\n * Performs an action.\n * @param {*} action\n */\n performActions(actions) {\n for (let i = 0; i < actions.length; i++) {\n const action = actions[i];\n if (action && action.actionType) {\n if (action.pageFilter && window && window.location) {\n const passed = checkPageFilter(\n window.location.href,\n action.pageFilter,\n action.pageFilterType\n );\n\n if (!passed) {\n continue;\n }\n }\n\n if (action.actionType === \"notification\") {\n if (action?.data?.checklist?.popupType === \"widget\") {\n Gleap.openChecklist(action.data.checklist.id, true);\n } else {\n if (!this.disableInAppNotifications) {\n Gleap.showNotification(action);\n }\n }\n } else if (action.actionType === \"banner\") {\n Gleap.showBanner(action);\n } else if (action.actionType === \"modal\") {\n Gleap.showModal(action);\n } else if (action.actionType === \"tour\") {\n Gleap.startProductTourWithConfig(action.outbound, action.data, false);\n } else {\n Gleap.showSurvey(action.actionType, action.format);\n }\n }\n }\n }\n\n static startProductTour(tourId, checkStartUrl = false) {\n const self = this;\n GleapSession.getInstance()\n .startProductTourConfig(tourId)\n .then((config) => {\n if (\n checkStartUrl &&\n config?.startURL &&\n !window?.location?.href?.includes(config?.baseURL)\n ) {\n window.location.href = `${config.startURL}?gleap_tour=${tourId}&gleap_tour_delay=1`;\n return;\n }\n\n self.startProductTourWithConfig(tourId, config, true);\n })\n .catch((error) => {});\n }\n\n static checkForUncompletedTour() {\n const tourData = GleapProductTours.getInstance().loadUncompletedTour();\n if (tourData) {\n GleapProductTours.getInstance().startWithConfig(\n tourData.tourId,\n tourData.tourData,\n 500\n );\n }\n }\n\n static startProductTourWithConfig(tourId, config, manually = false) {\n GleapProductTours.getInstance().startWithConfig(\n tourId,\n config,\n 0,\n manually\n );\n }\n\n static showBanner(data) {\n try {\n GleapBannerManager.getInstance().showBanner(data);\n } catch (e) {}\n }\n\n static showModal(data) {\n try {\n GleapModalManager.getInstance().showModal(data);\n } catch (e) {}\n }\n\n static showNotification(data) {\n GleapNotificationManager.getInstance().showNotification(data);\n }\n\n /**\n * Sets a global data value\n * @param {*} key\n * @param {*} value\n */\n setGlobalDataItem(key, value) {\n this.globalData[key] = value;\n }\n\n /**\n * Gets a global data value\n * @param {*} key\n * @returns\n */\n getGlobalDataItem(key) {\n return this.globalData[key];\n }\n\n /**\n * Takes the current replay and assigns it to the global data array.\n */\n takeCurrentReplay() {\n const replayData = GleapReplayRecorder.getInstance().getReplayData();\n this.setGlobalDataItem(\"webReplay\", replayData);\n }\n}\n\n// Check for unperformed Gleap actions.\nif (typeof window !== \"undefined\") {\n const GleapActions = window.GleapActions;\n if (GleapActions && GleapActions.length > 0) {\n for (var i = 0; i < GleapActions.length; i++) {\n const GLAction = GleapActions[i];\n if (GLAction && GLAction.e && Gleap[GLAction.e]) {\n Gleap[GLAction.e].apply(Gleap, GLAction.a);\n }\n }\n }\n}\n\nconst handleGleapLink = (href) => {\n try {\n const urlParts = href.split(\"/\");\n const type = urlParts[2];\n if (type === \"article\") {\n const identifier = urlParts[3];\n Gleap.openHelpCenterArticle(identifier, true);\n }\n\n if (type === \"collection\") {\n const identifier = urlParts[3];\n Gleap.openHelpCenterCollection(identifier, true);\n }\n\n if (type === \"flow\") {\n const identifier = urlParts[3];\n Gleap.startFeedbackFlow(identifier, true);\n }\n\n if (type === \"survey\") {\n const identifier = urlParts[3];\n Gleap.showSurvey(identifier);\n }\n\n if (type === \"bot\") {\n const identifier = urlParts[3];\n Gleap.startBot(identifier, true);\n }\n\n if (type === \"news\") {\n const identifier = urlParts[3];\n Gleap.openNewsArticle(identifier, true);\n }\n\n if (type === \"checklist\") {\n const identifier = urlParts[3];\n Gleap.startChecklist(identifier, true, urlParts[4]);\n }\n\n if (type === \"tour\") {\n const identifier = urlParts[3];\n Gleap.startProductTour(identifier);\n }\n } catch (e) {\n console.error(\"Failed to handle Gleap link: \", href);\n }\n};\n\nexport {\n GleapNetworkIntercepter,\n GleapAudioManager,\n GleapNotificationManager,\n GleapBannerManager,\n GleapModalManager,\n GleapPreFillManager,\n GleapShortcutListener,\n GleapMarkerManager,\n GleapTranslationManager,\n GleapReplayRecorder,\n GleapFeedback,\n GleapConsoleLogManager,\n GleapCustomActionManager,\n GleapEventManager,\n GleapCustomDataManager,\n GleapFeedbackButtonManager,\n GleapClickListener,\n GleapSession,\n GleapStreamedEvent,\n GleapConfigManager,\n GleapFrameManager,\n GleapMetaDataManager,\n GleapTagManager,\n GleapProductTours,\n handleGleapLink,\n};\n\nexport default Gleap;\n","/**\n * Gleap Checklist Web Component\n *\n * Displays an interactive checklist fetched from the Gleap API.\n * Allows users to view steps, mark them as done, trigger actions,\n * and automatically updates based on external events. Includes localization support\n * via GleapTranslationManager.\n *\n * Waits for a Gleap session to be available before initializing and\n * reloads when the session changes (via 'session-updated' event).\n *\n * @element gleap-checklist\n *\n * @attr {string} checklistId - The outbound ID of the checklist to display. Required.\n * @attr {boolean} [info=true] - Whether to display the info section (title, description, sender).\n * @attr {boolean} [progressbar=true] - Whether to display the progress bar.\n * @attr {boolean} [dark=false] - Apply dark mode styling.\n * @attr {boolean} [floating=false] - When set to \"true\", shows a small bubble that expands on click.\n *\n * @cssprop --color-bg - Background color.\n * @cssprop --color-font-title - Title text color.\n * @cssprop --color-font-text - Body text color.\n * @cssprop --color-font-light - Lighter text color.\n * @cssprop --color-primary - Primary accent color.\n * @cssprop --color-primary-light - Light primary color shade.\n * @cssprop --color-primary-contrast - Text color for primary buttons.\n * @cssprop --color-border - Border color.\n * @cssprop --color-gray-light - Light gray background/border color.\n * @cssprop --color-gray-lighter - Even lighter gray background.\n * @cssprop --color-gray-dark - Darker gray text/icon color.\n * @cssprop --color-success - Success color (e.g., for completed items).\n * @cssprop --color-success-light - Contrast color for success elements.\n * @cssprop --radius-sm - Small border radius.\n * @cssprop --radius-lg - Large border radius.\n * @cssprop --radius-full - Full (pill) border radius.\n * @cssprop --shadow-sm - Small box shadow.\n * @cssprop --shadow-md - Medium box shadow.\n * @cssprop --animation-duration - Duration for animations (e.g., accordion).\n * @cssprop --animation-timing - Timing function for animations.\n */\nimport ChecklistNetworkManager from \"./ChecklistNetworkManager\";\nimport Gleap, {\n GleapConfigManager,\n GleapSession,\n GleapTranslationManager,\n GleapEventManager,\n} from \"./Gleap\";\n\nexport const registerGleapChecklist = () => {\n if (\n typeof customElements !== \"undefined\" &&\n typeof HTMLElement !== \"undefined\" &&\n typeof window !== \"undefined\"\n ) {\n class GleapChecklist extends HTMLElement {\n /** @private {number} */\n activeStep = -1;\n /** @private {object|null} */\n checklistData = null;\n /** @private {boolean} */\n _isInitialLoad = false;\n /** @private {boolean} */\n _initialActiveSet = false;\n /** @private {boolean} Flag indicating if the component has loaded data at least once. */\n _hasLoaded = false;\n /** @private {boolean} Flag indicating if a Gleap session is currently considered active by the component. */\n _isSessionReady = false;\n\n /** @private {Function} */\n _boundHandleChecklistUpdate = this.handleChecklistUpdate.bind(this);\n /** @private {Function} */\n _boundHandleSessionUpdate = this.handleSessionUpdate.bind(this);\n\n constructor() {\n super();\n this.attachShadow({ mode: \"open\" });\n // Ensure NetworkManager instance is created only if Gleap is available\n try {\n if (\n typeof GleapSession !== \"undefined\" &&\n typeof ChecklistNetworkManager !== \"undefined\"\n ) {\n this._networkManager = ChecklistNetworkManager.getInstance();\n } else {\n this._networkManager = null;\n }\n } catch (e) {\n this._networkManager = null;\n }\n // Bind click handlers for floating mode.\n this._boundFloatingLauncherClick =\n this.handleFloatingLauncherClick.bind(this);\n this._boundFloatingCloseClick =\n this.handleFloatingCloseClick.bind(this);\n this._floatingHideTimeout = null;\n }\n\n // --- Observed Attributes ---\n static get observedAttributes() {\n return [\n \"checklistId\",\n \"info\",\n \"progressbar\",\n \"dark\",\n \"floating\",\n \"sharedKey\",\n ];\n }\n\n // --- Lifecycle Callbacks ---\n connectedCallback() {\n window.addEventListener(\n \"checkListUpdate\",\n this._boundHandleChecklistUpdate\n );\n window.addEventListener(\n \"session-updated\",\n this._boundHandleSessionUpdate\n );\n window.addEventListener(\n \"resize\",\n (this._boundResizeHandler = this.handleResize.bind(this))\n );\n this._checkSessionAndLoad();\n }\n\n disconnectedCallback() {\n window.removeEventListener(\n \"checkListUpdate\",\n this._boundHandleChecklistUpdate\n );\n window.removeEventListener(\n \"session-updated\",\n this._boundHandleSessionUpdate\n );\n window.removeEventListener(\"resize\", this._boundResizeHandler);\n this.removeFloatingClickListeners();\n if (this._floatingHideTimeout) {\n clearTimeout(this._floatingHideTimeout);\n this._floatingHideTimeout = null;\n }\n this.checklistData = null;\n this.activeStep = -1;\n this._hasLoaded = false;\n this._isSessionReady = false;\n this._initialActiveSet = false;\n this.renderResponse();\n }\n\n handleResize() {\n this.updateActiveTaskMaxHeight();\n }\n\n attributeChangedCallback(name, oldValue, newValue) {\n if (oldValue !== newValue) {\n if (name === \"checklistId\" && this._isSessionReady) {\n this.loadChecklist();\n } else if (name !== \"checklistId\" && this._hasLoaded) {\n if (this.checklistData) {\n this.renderChecklist(this.checklistData);\n }\n }\n }\n }\n\n // --- Session Handling ---\n _checkSessionAndLoad() {\n const gleapSessionInstance = this._getGleapSessionInstance();\n const hasChecklistId = this.getAttribute(\"checklistId\");\n\n if (gleapSessionInstance.ready && hasChecklistId) {\n this._isSessionReady = true;\n this._networkManager = ChecklistNetworkManager.getInstance();\n this.loadChecklist();\n } else {\n this._isSessionReady = false;\n this._hasLoaded = false;\n this.checklistData = null;\n this.activeStep = -1;\n this._initialActiveSet = false;\n this.renderResponse();\n }\n }\n\n handleSessionUpdate() {\n this._checkSessionAndLoad();\n }\n\n _getGleapSessionInstance() {\n try {\n return typeof GleapSession !== \"undefined\"\n ? GleapSession.getInstance()\n : null;\n } catch (e) {\n return null;\n }\n }\n\n // --- Getters for Configuration ---\n get infoEnabled() {\n const attr = this.getAttribute(\"info\");\n return attr === null || attr.toLowerCase() !== \"false\";\n }\n\n get progressbarEnabled() {\n const attr = this.getAttribute(\"progressbar\");\n return attr === null || attr.toLowerCase() !== \"false\";\n }\n\n get floatingEnabled() {\n return this.getAttribute(\"floating\") === \"true\";\n }\n\n // --- Translation Helpers ---\n _translate(key, defaultValue = \"\") {\n return GleapTranslationManager.translateText(key) || defaultValue;\n }\n\n _translateWithVars(key, vars, defaultValue = \"\") {\n return (\n GleapTranslationManager.translateTextWithVars(key, vars) ||\n defaultValue\n );\n }\n\n // --- SVG Icons ---\n getCheckIcon() {\n return `\n \n `;\n }\n\n // --- Data Loading and Handling ---\n loadChecklist() {\n if (!this._isSessionReady || !this._networkManager) {\n return;\n }\n const checklistId = this.getAttribute(\"checklistId\");\n if (checklistId) {\n this.activeStep = -1;\n this._initialActiveSet = false;\n this.validateChecklist(checklistId);\n } else {\n this.renderResponse();\n this.checklistData = null;\n this._hasLoaded = false;\n }\n }\n\n getQueryParams() {\n const gleapSessionInstance = this._getGleapSessionInstance();\n if (!gleapSessionInstance?.session) {\n return \"\";\n }\n const session = gleapSessionInstance.session;\n let lang = \"en\";\n try {\n if (typeof GleapTranslationManager !== \"undefined\") {\n lang =\n GleapTranslationManager.getInstance().getActiveLanguage() || \"en\";\n }\n } catch (e) {}\n return `gleapId=${session.gleapId || \"\"}&gleapHash=${\n session.gleapHash || \"\"\n }&lang=${lang}`;\n }\n\n makeRequest(method, url, data, callback) {\n const gleapSessionInstance = this._getGleapSessionInstance();\n if (!gleapSessionInstance?.session) {\n const mockXhr = {\n readyState: 4,\n status: 0,\n responseText: \"Session unavailable\",\n _isMock: true,\n };\n callback(mockXhr);\n return;\n }\n const xhr = new XMLHttpRequest();\n xhr.open(method, url);\n try {\n gleapSessionInstance.injectSession(xhr);\n } catch (e) {}\n if (data) {\n xhr.setRequestHeader(\n \"Content-Type\",\n \"application/json;charset=UTF-8\"\n );\n }\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n callback(xhr);\n }\n };\n xhr.onerror = () => {\n callback(xhr);\n };\n xhr.send(data ? JSON.stringify(data) : null);\n }\n\n validateChecklist(outboundId) {\n if (!this._isSessionReady || !this._networkManager) {\n return;\n }\n this.checklistData = null;\n this._hasLoaded = false;\n this.renderResponse();\n const sharedKey = this.getAttribute(\"sharedKey\");\n\n this._networkManager\n .validateChecklist(outboundId, sharedKey)\n .then((internalId) => {\n if (!this.isConnected || !this._isSessionReady || !internalId) {\n return;\n }\n this.fetchChecklist(internalId);\n })\n .catch((error) => {\n this.renderResponse();\n this.checklistData = null;\n this._hasLoaded = false;\n });\n }\n\n fetchChecklist(checklistId) {\n if (!this._isSessionReady || !this._networkManager) {\n return;\n }\n this._isInitialLoad = !this._hasLoaded;\n this._networkManager\n .fetchChecklist(checklistId)\n .then((data) => {\n if (!this.isConnected || !this._isSessionReady || !data) {\n this._hasLoaded = false;\n this.checklistData = null;\n this._checkSessionAndLoad();\n return;\n }\n this.checklistData = data;\n this._hasLoaded = true;\n if (data.status === \"done\") {\n this.renderResponse();\n return;\n }\n if (this._isInitialLoad && !this._initialActiveSet) {\n const steps = data.outbound?.config?.steps || [];\n const completedSteps = data.completedSteps || [];\n const firstIncompleteIndex = steps.findIndex(\n (step) => !completedSteps.includes(step.id)\n );\n this.activeStep =\n firstIncompleteIndex >= 0 ? firstIncompleteIndex : -1;\n if (this.activeStep !== -1) {\n this._initialActiveSet = true;\n }\n }\n this.renderChecklist(this.checklistData);\n \n // Notify external listeners about the initial checklist load\n GleapEventManager.notifyEvent(\"checklist-loaded\", {\n checklistId: this.checklistData.id,\n outboundId: this.checklistData.outbound?.id,\n completedSteps: this.checklistData.completedSteps,\n status: this.checklistData.status,\n data: this.checklistData\n });\n })\n .catch((error) => {\n this.renderResponse();\n this.checklistData = null;\n this._hasLoaded = false;\n });\n }\n\n updateChecklist(id, data) {\n const gleapSessionInstance = this._getGleapSessionInstance();\n if (!gleapSessionInstance?.session) {\n return;\n }\n const apiUrl = gleapSessionInstance.apiUrl;\n if (!apiUrl) {\n return;\n }\n const session = gleapSessionInstance.session;\n const gleapId = session?.gleapId ?? \"\";\n const gleapHash = session?.gleapHash ?? \"\";\n let lang = \"en\";\n try {\n if (typeof GleapTranslationManager !== \"undefined\") {\n lang =\n GleapTranslationManager.getInstance().getActiveLanguage() || \"en\";\n }\n } catch (e) {}\n let url = `${apiUrl}/outbound/checklists/${id}`;\n if (data.checkedStep) {\n url += `/increment/${data.checkedStep}`;\n }\n url += `?gleapId=${gleapId}&gleapHash=${gleapHash}&lang=${lang}`;\n this.makeRequest(\"PUT\", url, data, (xhr) => {\n if (xhr._isMock) return;\n if (!(xhr.status === 200 || xhr.status === 204)) {\n // Update failed\n }\n });\n }\n\n // --- External Update Handling ---\n handleChecklistUpdate(event) {\n if (!this._hasLoaded || !this.checklistData) {\n return;\n }\n const updateData = event.detail;\n if (!updateData || updateData.id !== this.checklistData.id) {\n return;\n }\n const previousCompletedSteps = [\n ...(this.checklistData.completedSteps || []),\n ];\n let dataChanged = false;\n let activeStepCompleted = false;\n const currentlyActiveStepIndex = this.activeStep;\n if (\n updateData.completedSteps &&\n JSON.stringify(updateData.completedSteps) !==\n JSON.stringify(previousCompletedSteps)\n ) {\n this.checklistData.completedSteps = [...updateData.completedSteps];\n dataChanged = true;\n if (currentlyActiveStepIndex !== -1) {\n const activeStepId =\n this.checklistData.outbound?.config?.steps?.[\n currentlyActiveStepIndex\n ]?.id;\n if (\n activeStepId &&\n this.checklistData.completedSteps.includes(activeStepId) &&\n !previousCompletedSteps.includes(activeStepId)\n ) {\n activeStepCompleted = true;\n }\n }\n }\n if (\n updateData.status &&\n updateData.status !== this.checklistData.status\n ) {\n this.checklistData.status = updateData.status;\n dataChanged = true;\n }\n if (activeStepCompleted) {\n const steps = this.checklistData.outbound?.config?.steps || [];\n let nextActiveStep = -1;\n for (let i = currentlyActiveStepIndex + 1; i < steps.length; i++) {\n if (!this.checklistData.completedSteps.includes(steps[i].id)) {\n nextActiveStep = i;\n break;\n }\n }\n if (this.activeStep !== nextActiveStep) {\n this.setActiveStep(nextActiveStep);\n }\n dataChanged = true;\n }\n if (dataChanged) {\n this.renderChecklist(this.checklistData);\n \n // Notify external listeners about the checklist update\n GleapEventManager.notifyEvent(\"checklist-update\", {\n checklistId: this.checklistData.id,\n outboundId: this.checklistData.outbound?.id,\n completedSteps: this.checklistData.completedSteps,\n status: this.checklistData.status,\n data: this.checklistData\n });\n }\n }\n\n // --- Floating (Click-based) Listeners ---\n handleFloatingLauncherClick(event) {\n event.stopPropagation();\n\n if (this.checklistData.status === \"done\") {\n return;\n }\n\n const tasks = this.shadowRoot.querySelector(\".checklist-tasks\");\n if (tasks) {\n tasks.style.display =\n tasks.style.display === \"block\" ? \"none\" : \"block\";\n }\n }\n\n handleFloatingCloseClick(event) {\n event.stopPropagation();\n const tasks = this.shadowRoot.querySelector(\".checklist-tasks\");\n if (tasks) {\n tasks.style.display = \"none\";\n }\n }\n\n addFloatingClickListeners() {\n const launcher = this.shadowRoot.querySelector(\n \".checklist-floating-launcher\"\n );\n if (launcher) {\n launcher.addEventListener(\"click\", this._boundFloatingLauncherClick);\n }\n const header = this.shadowRoot.querySelector(\n \".checklist-floating-header\"\n );\n if (header) {\n header.addEventListener(\"click\", this._boundFloatingCloseClick);\n }\n }\n\n removeFloatingClickListeners() {\n const launcher = this.shadowRoot.querySelector(\n \".checklist-floating-launcher\"\n );\n if (launcher) {\n launcher.removeEventListener(\n \"click\",\n this._boundFloatingLauncherClick\n );\n }\n const header = this.shadowRoot.querySelector(\n \".checklist-floating-header\"\n );\n if (header) {\n header.removeEventListener(\"click\", this._boundFloatingCloseClick);\n }\n }\n\n // --- Rendering Logic ---\n renderResponse() {\n this.shadowRoot.innerHTML = \"\";\n }\n\n /**\n * Renders the floating launcher. When called with the default class (\"checklist-floating\")\n * it shows a chevron icon; when called with \"checklist-floating-header\" it shows a close icon.\n */\n renderFloatingLauncher(\n outbound,\n className = \"checklist-floating\",\n renderDoneState = false\n ) {\n const steps = outbound.config?.steps || [];\n const completedSteps = this.checklistData?.completedSteps || [];\n let progress = 0;\n if (this.progressbarEnabled && steps.length > 0) {\n const totalSteps = steps.length;\n const doneSteps = completedSteps.length;\n progress = totalSteps > 0 ? (doneSteps / totalSteps) * 100 : 0;\n }\n\n // Determine the next incomplete step\n const nextIncompleteStep = steps.find(\n (step) => !completedSteps.includes(step.id)\n );\n let titleText =\n steps.length > 0\n ? nextIncompleteStep\n ? nextIncompleteStep.title ||\n this._translateWithVars(\n \"stepDefaultTitle\",\n { index: steps.indexOf(nextIncompleteStep) + 1 },\n `Step ${steps.indexOf(nextIncompleteStep) + 1}`\n )\n : \"\"\n : outbound.subject || \"\";\n\n let subtitleText =\n steps.length > 0\n ? nextIncompleteStep\n ? nextIncompleteStep.description || \"\"\n : \"\"\n : outbound.message || \"\";\n\n if (renderDoneState) {\n titleText = outbound.config?.successTitle || \"\";\n subtitleText = outbound.config?.successMessage || \"\";\n progress = 100;\n }\n\n const circumference = 2 * Math.PI * 7;\n const computedOffset = circumference - (progress / 100) * circumference;\n\n const isHeader = className === \"checklist-floating-header\";\n const icon = isHeader\n ? `\n \n \n `\n : `\n \n `;\n\n return `\n
\n
\n
\n \n \n \n \n
\n
${titleText}
\n ${\n renderDoneState\n ? \"\"\n : `${icon}`\n }\n
\n
${subtitleText}
\n
\n `;\n }\n\n renderInfoSection(outbound) {\n if (!this.infoEnabled || !outbound) return \"\";\n const subject =\n outbound.subject ||\n this._translate(\"checklistDefaultTitle\", \"Checklist\");\n const message = outbound.message || \"\";\n let senderHtml = \"\";\n if (outbound.sender?.profileImageUrl) {\n senderHtml = `\n
\n \"${\n\n ${outbound.sender.firstName || \"\"}\n
`;\n }\n return `\n
\n ${\n subject\n ? `
${subject}
`\n : \"\"\n }\n ${\n message\n ? `
${message}
`\n : \"\"\n }\n ${senderHtml}\n
`;\n }\n\n renderProgressSection(steps = [], completedSteps = []) {\n if (!this.progressbarEnabled || !steps.length) return \"\";\n const totalSteps = steps.length;\n const doneSteps = completedSteps.length;\n const progress = totalSteps > 0 ? (doneSteps / totalSteps) * 100 : 0;\n let duration = 0;\n steps.forEach((step) => {\n if (!completedSteps.includes(step.id) && step.duration > 0) {\n duration += step.duration;\n }\n });\n const progressLabel = this._translateWithVars(\n \"taskProgress\",\n { a: doneSteps, b: totalSteps },\n `${doneSteps} of ${totalSteps} done`\n );\n const durationLabel =\n duration > 0\n ? this._translateWithVars(\n \"aboutMinutes\",\n { a: duration },\n `About ${duration} min left`\n )\n : \"\";\n return `\n
\n
${progressLabel}
\n ${\n durationLabel\n ? `
${durationLabel}
`\n : \"\"\n }\n
\n
\n
\n
`;\n }\n\n renderTasks(steps = [], completedSteps = []) {\n if (!steps || steps.length === 0)\n return `

${this._translate(\n \"noStepsDefined\",\n \"No steps defined.\"\n )}

`;\n return steps\n .map((step, index) => {\n const isTaskDone = completedSteps.includes(step.id);\n const isActive = this.activeStep === index;\n const badge = isTaskDone\n ? `${this.getCheckIcon()}`\n : `${\n index + 1\n }`;\n const stepTitle =\n step.title ||\n this._translateWithVars(\n \"stepDefaultTitle\",\n { index: index + 1 },\n `Step ${index + 1}`\n );\n const stepDescription = step.description || \"\";\n const actionButtonText =\n step.actionTitle ||\n this._translate(\"actionDefaultTitle\", \"Action\");\n const actionHtml =\n step.action && step.action !== \"none\"\n ? `
\n \n
`\n : \"\";\n const markDoneLabel = this._translate(\"markAsDone\", \"Mark as done\");\n const markDoneHtml =\n step.allowMarkDone && !isTaskDone\n ? `
\n ${this.getCheckIcon()}\n
${markDoneLabel}
\n
`\n : \"\";\n const taskClasses = [\n \"checklist-task\",\n isTaskDone ? \"checklist-task--done\" : \"\",\n isActive ? \"checklist-task--active\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n return `\n
\n
\n ${badge}\n
${stepTitle}
\n \n \n \n \n \n
\n
\n
\n ${\n stepDescription\n ? `
${stepDescription}
`\n : \"\"\n }\n ${actionHtml}\n ${markDoneHtml}\n
\n
\n
`;\n })\n .join(\"\");\n }\n\n renderChecklist(data) {\n if (!this._hasLoaded || !data || !data.outbound) {\n this._checkSessionAndLoad();\n return;\n }\n const { outbound } = data;\n const steps = outbound.config?.steps || [];\n const completedSteps = data.completedSteps || [];\n const isDone =\n data.status === \"done\" ||\n (steps.length > 0 && completedSteps.length >= steps.length);\n let content = \"\";\n if (isDone) {\n const successTitle = outbound.config?.successTitle || \"\";\n const successMessage = outbound.config?.successMessage || \"\";\n if (this.floatingEnabled) {\n content = this.renderFloatingLauncher(\n outbound,\n \"checklist-floating-launcher\",\n true\n );\n } else {\n content = `\n
\n
\n ${this.getCheckIcon()}\n
\n
${successTitle}
\n
${successMessage}
\n
`;\n }\n if (this.activeStep !== -1) this.activeStep = -1;\n } else {\n content = `\n
\n ${!this.floatingEnabled ? this.renderInfoSection(outbound) : \"\"}\n ${\n !this.floatingEnabled\n ? this.renderProgressSection(steps, completedSteps)\n : \"\"\n }\n ${\n this.floatingEnabled\n ? this.renderFloatingLauncher(outbound)\n : \"\"\n }\n
\n ${\n this.floatingEnabled\n ? this.renderFloatingLauncher(\n outbound,\n \"checklist-floating-header\"\n )\n : \"\"\n }\n ${this.renderTasks(steps, completedSteps)}\n
\n
`;\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const primaryColor = flowConfig.color ? flowConfig.color : \"#485BFF\";\n\n const styles = `\n \n `;\n this.shadowRoot.innerHTML = styles + content;\n this.addTaskEventListeners();\n if (this.floatingEnabled) {\n this.addFloatingClickListeners();\n }\n if (this.activeStep !== -1) {\n this.toggleTask(this.activeStep, true);\n }\n }\n\n updateActiveTaskMaxHeight() {\n if (this.activeStep !== -1) {\n const taskBodyInner = this.shadowRoot.querySelector(\n `.checklist-task[data-task-index=\"${this.activeStep}\"] .checklist-task-body-inner`\n );\n const container = this.shadowRoot.querySelector(\n `.checklist-task[data-task-index=\"${this.activeStep}\"] .checklist-task-body`\n );\n if (taskBodyInner && container) {\n const height = taskBodyInner.offsetHeight;\n container.style.setProperty(\n \"--task-body-active-height\",\n `${height}px`\n );\n }\n }\n }\n\n // --- Event Listener Setup ---\n addTaskEventListeners() {\n const tasks = this.shadowRoot.querySelectorAll(\".checklist-task\");\n tasks.forEach((task) => {\n const header = task.querySelector(\".checklist-task-header\");\n const index = parseInt(task.getAttribute(\"data-task-index\"), 10);\n if (header) {\n header.addEventListener(\"click\", () => {\n const newActiveStep = this.activeStep === index ? -1 : index;\n this.setActiveStep(newActiveStep);\n });\n }\n const markDoneBtn = task.querySelector(\n \".checklist-task-body-markdone\"\n );\n if (markDoneBtn) {\n markDoneBtn.addEventListener(\"click\", (e) => {\n e.stopPropagation();\n if (!this.checklistData?.outbound?.config?.steps) return;\n const step = this.checklistData.outbound.config.steps[index];\n if (!step) return;\n const previouslyActiveStep = this.activeStep;\n if (!this.checklistData.completedSteps)\n this.checklistData.completedSteps = [];\n if (!this.checklistData.completedSteps.includes(step.id)) {\n this.checklistData.completedSteps.push(step.id);\n \n // Notify external listeners about the step completion\n GleapEventManager.notifyEvent(\"checklist-step-completed\", {\n checklistId: this.checklistData.id,\n outboundId: this.checklistData.outbound?.id,\n stepId: step.id,\n stepIndex: index,\n step: step,\n completedSteps: this.checklistData.completedSteps,\n status: this.checklistData.status,\n data: this.checklistData\n });\n const allSteps = this.checklistData.outbound.config.steps;\n let nextActiveStep = -1;\n if (previouslyActiveStep === index) {\n for (let i = index + 1; i < allSteps.length; i++) {\n if (\n !this.checklistData.completedSteps.includes(\n allSteps[i].id\n )\n ) {\n nextActiveStep = i;\n break;\n }\n }\n this.setActiveStep(nextActiveStep);\n }\n // Preserve the state of the floating modal.\n setTimeout(() => {\n let isModalOpen = false;\n if (this.floatingEnabled) {\n const tasksModal =\n this.shadowRoot.querySelector(\".checklist-tasks\");\n isModalOpen =\n tasksModal && tasksModal.style.display === \"block\";\n }\n this.renderChecklist(this.checklistData);\n if (this.floatingEnabled && isModalOpen) {\n const tasksModal =\n this.shadowRoot.querySelector(\".checklist-tasks\");\n if (tasksModal) tasksModal.style.display = \"block\";\n }\n }, 300);\n const updateData = { checkedStep: step.id };\n if (\n allSteps.length > 0 &&\n this.checklistData.completedSteps.length >= allSteps.length\n ) {\n this.checklistData.status = \"done\";\n updateData.status = \"done\";\n \n // Notify external listeners about the checklist completion\n GleapEventManager.notifyEvent(\"checklist-completed\", {\n checklistId: this.checklistData.id,\n outboundId: this.checklistData.outbound?.id,\n completedSteps: this.checklistData.completedSteps,\n status: this.checklistData.status,\n data: this.checklistData\n });\n }\n this.updateChecklist(this.checklistData.id, updateData);\n }\n });\n }\n const actionBtn = task.querySelector(\n \".checklist-task-body-action .action-button\"\n );\n if (actionBtn) {\n actionBtn.addEventListener(\"click\", (e) => {\n e.stopPropagation();\n if (\n !this.checklistData?.outbound?.config?.steps ||\n typeof Gleap === \"undefined\"\n )\n return;\n const step = this.checklistData.outbound.config.steps[index];\n if (!step || !step.action || step.action === \"none\") return;\n try {\n if (step.action === \"BOT\") Gleap.startBot(step.botId);\n else if (step.action === \"CUSTOM_ACTION\")\n Gleap.triggerCustomAction(step.actionBody);\n else if (step.action === \"REDIRECT_URL\") {\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n Gleap.openURL(step.actionBody, !!step.actionOpenInNewTab);\n } else if (step.action === \"FEEDBACK_FLOW\")\n Gleap.startFeedbackFlow(step.formId);\n else if (step.action === \"NEWS_ARTICLE\")\n Gleap.openNewsArticle(step.articleId);\n else if (step.action === \"HELP_ARTICLE\")\n Gleap.openHelpCenterArticle(step.articleId);\n else if (step.action === \"CHECKLIST\")\n Gleap.startChecklist(step.outboundId, true, step?.sharedKey);\n } catch (gleapError) {}\n });\n }\n });\n }\n\n // --- Animation and State Management ---\n setActiveStep(index) {\n const previousActiveStep = this.activeStep;\n this.activeStep = index;\n const tasksToToggle = [];\n if (\n previousActiveStep !== -1 &&\n previousActiveStep !== this.activeStep\n ) {\n tasksToToggle.push({ index: previousActiveStep, open: false });\n }\n if (this.activeStep !== -1 && this.activeStep !== previousActiveStep) {\n tasksToToggle.push({ index: this.activeStep, open: true });\n }\n tasksToToggle.forEach(({ index, open }) => {\n this.toggleTask(index, open);\n });\n }\n\n toggleTask(index, forceOpen = null) {\n const taskElement = this.shadowRoot.querySelector(\n `.checklist-task[data-task-index=\"${index}\"]`\n );\n if (!taskElement) return;\n const header = taskElement.querySelector(\".checklist-task-header\");\n if (!header) return;\n const isOpen = taskElement.classList.contains(\"checklist-task--active\");\n const shouldOpen = forceOpen !== null ? forceOpen : !isOpen;\n if (shouldOpen && !isOpen) {\n taskElement.classList.add(\"checklist-task--active\");\n header.setAttribute(\"aria-expanded\", \"true\");\n const taskBodyInner = taskElement.querySelector(\n \".checklist-task-body-inner\"\n );\n if (taskBodyInner) {\n const height = taskBodyInner.offsetHeight;\n const taskBody = taskElement.querySelector(\".checklist-task-body\");\n if (taskBody) {\n taskBody.style.setProperty(\n \"--task-body-active-height\",\n `${height}px`\n );\n }\n }\n } else if (!shouldOpen && isOpen) {\n taskElement.classList.remove(\"checklist-task--active\");\n header.setAttribute(\"aria-expanded\", \"false\");\n }\n }\n }\n\n if (\n typeof customElements !== \"undefined\" &&\n !customElements.get(\"gleap-checklist\")\n ) {\n customElements.define(\"gleap-checklist\", GleapChecklist);\n }\n }\n};\n","import Gleap from \"./Gleap\";\n\nexport default Gleap;\n"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","GleapFeedbackButtonManager","_classCallCheck","_defineProperty","value","this","instance","feedbackButton","remove","buttonHidden","lastButtonIcon","injectedFeedbackButton","show","getInstance","updateFeedbackButtonState","GleapNotificationManager","updateContainerStyle","frameManager","GleapFrameManager","isOpened","hideWidget","setAppMode","showWidget","_this","elem","document","createElement","addEventListener","feedbackButtonPressed","body","appendChild","count","notificationBadge","querySelector","notificationHiddenClass","classList","innerText","add","updateFeedbackButtonText","injectFeedbackButton","flowConfig","GleapConfigManager","getFlowConfig","feedbackButtonPosition","FEEDBACK_BUTTON_CLASSIC","FEEDBACK_BUTTON_CLASSIC_BOTTOM","FEEDBACK_BUTTON_CLASSIC_LEFT","widgetButtonText","buttonIcon","buttonLogo","concat","loadIcon","className","setAttribute","GleapTranslationManager","isRTLLayout","innerHTML","hideButton","FEEDBACK_BUTTON_NONE","FEEDBACK_BUTTON_BOTTOM_LEFT","appMode","hideForGuests","GleapSession","isUser","calculateShadeColor","col","amt","replace","length","_col$match2","_slicedToArray","match","r","g","b","_ref","parseInt","Math","max","min","toString","rr","gg","bb","calculateContrast","hex","substr","name","color","GleapNetworkIntercepter","Date","now","loadAllResources","contentType","toLocaleLowerCase","supportedContentTypes","i","includes","requests","JSON","parse","stringify","values","externalRequests","filters","request","headers","j","payload","payloadObj","e","response","responseText","data","window","performance","resources","getEntriesByType","resource","indexOf","initiatorType","find","url","push","type","date","startTimestamp","startTime","duration","round","exp","blacklist","defaultBlacklist","filter","maxRequests","stopped","keys","keysToRemove","slice","bbRequestId","startDate","getTime","text","size","TextEncoder","encode","encodeURI","s","split","Blob","getTextContentSize","undefined","TextDecoder","_typeof","ArrayBuffer","isView","decode","payloadText","cleanupPayload","cleanupContentSize","initialized","self","interceptNetworkRequests","onFetch","params","fromEntries","entries","method","preparePayload","cleanRequests","onFetchLoad","req","status","statusText","calcRequestTime","isContentTypeSupported","then","err","onFetchFailed","onOpen","args","onSend","requestHeaders","onError","currentTarget","onLoad","target","responseType","callback","originalFetch","open","XMLHttpRequest","send","gleapSetRequestHeader","setRequestHeader","header","requestId","arguments","bind","apply","fetch","clone","blob","Promise","resolve","reject","fr","FileReader","onload","evt","result","onerror","readAsText","resizeImage","base64Str","maxWidth","maxHeight","isJPEG","img","Image","src","canvas","MAX_WIDTH","MAX_HEIGHT","width","height","getContext","drawImage","toDataURL","isMobile","test","navigator","userAgent","gleapDataParser","String","truncateString","str","num","removeSubDomain","v","parts","is2ndLevelDomain","secondLevel","join","loadFromGleapCache","cachedData","localStorage","getItem","saveToGleapCache","k","setItem","removeItem","runFunctionWhenDomIsReady","readyState","RequestStatus","ChecklistNetworkManager","Map","validationCache","clear","fetchCache","validationRequests","fetchRequests","gleapSessionInstance","session","lang","getActiveLanguage","gleapId","gleapHash","apiUrl","xhr","injectSession","onreadystatechange","responseData","error","outboundId","sharedKey","cacheKey","_createCacheKey","cachedResult","internalId","has","_getApiUrl","Error","set","_getQueryParams","requestPromise","_makeRequest","id","_this2","floor","createCoords","x","y","oppositeSideMap","left","right","bottom","top","oppositeAlignmentMap","start","end","clamp","param","placement","axis","getAxisLength","getAlignmentAxis","alignment","getOppositePlacement","side","padding","expandPaddingObject","rect","computeCoordsFromPlacement","rtl","reference","floating","sideAxis","alignmentAxis","alignLength","isVertical","commonX","commonY","commonAlign","coords","async","detectOverflow","state","options","_await$platform$isEle","platform","rects","elements","strategy","boundary","rootBoundary","elementContext","altBoundary","paddingObject","element","clippingClientRect","getClippingRect","isElement","contextElement","getDocumentElement","offsetParent","getOffsetParent","offsetScale","getScale","elementClientRect","convertOffsetParentRelativeRectToViewportRelativeRect","offset","fn","_middlewareData$offse","_middlewareData$arrow","middlewareData","diffCoords","isRTL","mainAxisMulti","crossAxisMulti","rawValue","mainAxis","crossAxis","convertValueToCoords","arrow","alignmentOffset","getNodeName","node","isNode","nodeName","toLowerCase","getWindow","_node$ownerDocument","ownerDocument","defaultView","documentElement","Node","Element","isHTMLElement","HTMLElement","isShadowRoot","ShadowRoot","isOverflowElement","overflow","overflowX","overflowY","display","isTableElement","isContainingBlock","webkit","isWebKit","css","transform","perspective","containerType","backdropFilter","some","willChange","contain","CSS","supports","isLastTraversableNode","getComputedStyle","getNodeScroll","scrollLeft","scrollTop","pageXOffset","pageYOffset","getParentNode","assignedSlot","parentNode","host","getNearestOverflowAncestor","getOverflowAncestors","list","traverseIframes","_node$ownerDocument2","scrollableAncestor","isBody","win","visualViewport","frameElement","getCssDimensions","parseFloat","hasOffset","offsetWidth","offsetHeight","shouldFallback","$","unwrapElement","domElement","getBoundingClientRect","Number","isFinite","noOffsets","getVisualOffsets","offsetLeft","offsetTop","includeScale","isFixedStrategy","clientRect","scale","visualOffsets","isFixed","floatingOffsetParent","shouldAddVisualOffsets","offsetWin","currentWin","currentIFrame","iframeScale","iframeRect","clientLeft","paddingLeft","clientTop","paddingTop","topLayerSelectors","isTopLayer","selector","matches","getWindowScrollBarX","getClientRectFromClippingAncestor","clippingAncestor","html","clientWidth","clientHeight","visualViewportBased","getViewportRect","scroll","scrollWidth","scrollHeight","direction","getDocumentRect","getInnerBoundingClientRect","hasFixedPositionAncestor","stopNode","position","getRectRelativeToOffsetParent","isOffsetParentAnElement","offsets","offsetRect","getTrueOffsetParent","polyfill","currentNode","getContainingBlock","topLayer","elementClippingAncestors","cache","el","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","ancestor","getClippingElementAncestors","_c","clippingAncestors","firstClippingAncestor","clippingRect","reduce","accRect","getElementRects","getOffsetParentFn","getDimensionsFn","getDimensions","getClientRects","Array","from","autoUpdate","update","ancestorScroll","ancestorResize","elementResize","ResizeObserver","layoutShift","IntersectionObserver","animationFrame","referenceEl","ancestors","forEach","passive","cleanupIo","onMove","timeoutId","io","root","cleanup","_io","clearTimeout","disconnect","refresh","skip","threshold","rootMargin","isFirstUpdate","handleObserve","ratio","intersectionRatio","setTimeout","observe","observeMove","frameId","reobserveFrame","resizeObserver","firstEntry","unobserve","cancelAnimationFrame","requestAnimationFrame","_resizeObserver","prevRefRect","frameLoop","nextRefRect","_resizeObserver2","removeEventListener","checkMainAxis","checkCrossAxis","limiter","detectOverflowOptions","mainAxisCoord","crossAxisCoord","maxSide","limitedCoords","_middlewareData$flip","initialPlacement","fallbackPlacements","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","flipAlignment","isBasePlacement","oppositePlacement","getExpandedPlacements","isStart","lr","rl","tb","bt","getSideList","map","getOppositeAxisPlacements","placements","overflows","overflowsData","flip","sides","mainAlignmentSide","every","_middlewareData$flip2","_overflowsData$filter","nextIndex","index","nextPlacement","reset","resetPlacement","d","sort","a","_overflowsData$map$so","acc","arrowDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","min$1","center","shouldAddOffset","centerOffset","mergedOptions","platformWithCache","config","middleware","validMiddleware","Boolean","statefulPlacement","resetCount","nextX","nextY","computePosition","checkPageFilter","currentUrl","pageFilter","pageFilterType","removeTrailingSlash","isMatchingUrl","regex","regexPattern","RegExp","generateRegex","matched","startsWith","endsWith","GleapTooltipManager","WeakMap","tooltip","hasAttribute","nextId","tooltipElem","mode","hotspotContainer","canEmbed","firstChild","insertBefore","nextSibling","hotspot","icon","animated","repositionHotspot","elementToTooltipMap","floatingUIInstance","createTooltip","elementToFloatingUIMap","filteredTooltips","getFilteredTooltips","checkForTooltips","tooltips","location","href","page","pageType","querySelectorAll","linkTooltip","sessionInstance","http","sdkKey","console","updateFilteredTooltips","nodeType","ELEMENT_NODE","checkNodeTooltip","childNodes","childNode","processNodeInsertion","_this3","_this4","time","timeout","handleResizeThrottled","updateHotspotPositions","context","_toConsumableArray","observer","MutationObserver","mutations","lastUrl","mutation","addedNodes","removedNodes","floatingUI","childList","subtree","attributes","attributeFilter","_this5","tooltipText","tooltipData","hideTimeout","arrowEl","posX","shift","assign","style","arrowPos","visibility","opacity","pointerEvents","hide","voidElements","Set","tagName","resizeListener","anchor","removeAttribute","tooltipId","getAttribute","posY","offsetX","offsetY","elementRect","range","createRange","selectNodeContents","fixedWidth","anchorRect","tooltipSize","email","userId","phone","onSessionReady","ready","onSessionReadyListener","attemp","retry","GleapEventManager","notifyEvent","useCookies","cookie","eraseGleapCookie","sendMessage","clearAllNotifications","setNotificationCount","GleapBannerManager","removeBannerUI","GleapModalManager","hideModal","isNaN","newTimeout","pow","startSession","_this$session","sessionChanged","days","expires","setTime","toUTCString","setGleapCookie","encodeURIComponent","clearCache","GleapStreamedEvent","restart","tooltipManager","destroy","load","dispatchEvent","CustomEvent","notifySessionReady","sessionCookie","nameEQ","ca","c","charAt","substring","getGleapCookie","sessionData","decodeURIComponent","validateSession","cachedSession","clearSession","userData","checkIfSessionDataNeedsUpdate","userDataKeys","userDataKey","customData","setOnSessionReady","_objectSpread","sdkVersion","SDK_VERSION","ws","userHash","checkIfSessionNeedsUpdate","dataToSend","tourId","tourData","_window","passedPageFilter","sendSessionUpdate","streamEvents","mainLoopTimeout","runEventStreamLoop","streamingEvents","errorCount","streamedEventArray","socket","OPEN","sessionDuration","GleapMetaDataManager","getSessionDuration","events","opened","handleOpenBound","handleOpen","handleErrorBound","handleError","handleMessageBound","handleMessage","handleCloseBound","handleClose","connectionTimeout","pingWS","clearInterval","close","cleanupWebSocket","connectedWebSocketGleapId","WebSocket","wsApiUrl","event","setInterval","processMessage","initWebSocket","message","_message$data","u","listOfActionsWhereIgnoreOpened","filteredActions","action","_action$actionType","actionType","Gleap","performActions","detail","eventArray","cleanupMainLoop","trackInitialEvents","startPageListener","resetErrorCountLoop","logEvent","logCurrentPage","disablePageTracking","log","eventMaxLength","parseIntWithDefault","val","def","parsed","onConfigLoaded","onConfigLoadedListener","aiTools","sendConfigUpdate","cachedConfig","applyConfig","loadConfigFromServer","setStyles","headerColor","buttonColor","backgroundColor","borderRadius","buttonX","buttonY","applyStylesFromConfig","enableWebReplays","GleapReplayRecorder","stop","enableNetworkLogs","setLoadAllResources","sendNetworkResources","networkLogPropsToIgnore","setFilters","networkLogBlacklist","setBlacklist","updateRTLSupport","enableShortcuts","notifyConfigLoaded","_regeneratorRuntime","t","n","Symbol","iterator","asyncIterator","toStringTag","define","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","arg","h","l","f","GeneratorFunction","GeneratorFunctionPrototype","p","getPrototypeOf","defineIteratorMethods","_invoke","AsyncIterator","invoke","__await","callInvokeWithMethodAndArg","done","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","displayName","isGeneratorFunction","constructor","mark","setPrototypeOf","__proto__","awrap","reverse","pop","prev","rval","handle","complete","finish","delegateYield","asyncGeneratorStep","gen","_next","_throw","info","_asyncToGenerator","documentToHTML","doctype","publicId","systemId","outerHTML","loadCSSUrlResources","basePath","remote","asyncFn","matchedData","matchedUrl","replaceAll","resourcePath","URL","fetchCSSResource","resourceData","promises","_len","_key","promise","all","reader","onloadend","readAsDataURL","fetchItemResource","isBlacklisted","warn","progressResource","replaceStyleNodes","styleSheet","cssTextContent","styleId","cloneTargetNode","ownerNode","replacementNode","head","styleNode","cssText","createTextNode","linkNode","rel","media","getTextContentFromStyleSheet","cssRules","rules","cssRuleItem","downloadAllCSSUrlResources","basePathURL","_loop","styleSheets","mediaText","baseTags","getElementsByTagName","origin","lastIndexOf","replacedStyle","styletext","stylesheet","results","prepareRemoteData","dom","imgItems","imgItemsPromises","item","downloadAllImages","handleAdoptedStyleSheets","doc","shadowNodeId","adoptedStyleSheets","shadowStyleNode","firstElementChild","extractFinalCSSState","getAnimations","animations","finalCSSState","animation","_animation$effect","keyframes","effect","getKeyframes","finalKeyframe","property","deepClone","_callee3","cloneNode","fragment","clonedHead","_context3","_ref2","_callee2","parent","shadowRoot","walkTree","webAnimations","boundingRect","resizedImage","_boundingRect","rootShadowNodeId","_context2","_ref3","_callee","nextn","nextp","innerShadowRoot","_context","nextElementSibling","_x5","_x6","_x7","HTMLCanvasElement","t0","toUpperCase","contains","checked","_x2","_x3","_x4","createDocumentFragment","_x","prepareScreenshotData","_ref4","_callee4","styleTags","linkImportElems","referenceNode","scriptElems","existingBasePath","baseElems","baseUrl","newBaseUrl","baseNode","dialogElems","bbElems","_context4","innerWidth","innerHeight","_x8","_x9","_createForOfIteratorHelper","allowArrayLike","it","isArray","minLen","_arrayLikeToArray","_unsupportedIterableToArray","F","_e","normalCompletion","didErr","step","_e2","arr","len","arr2","_defineProperties","props","descriptor","_toPropertyKey","toPrimitive","_toPrimitive","GleapScreenRecorder","rerender","permissionErrorText","Constructor","MAX_RECORD_TIME","mediaDevices","getDisplayMedia","available","RERENDER_DELAY","protoProps","staticProps","_uploadScreenRecording","_startAudioRecording","_startScreenRecording","_step","_iterator","MIME_TYPES","MediaRecorder","isTypeSupported","stream","getTracks","track","_","tracks","validTracks","MediaStream","videoTracks","getVideoTracks","audioTracks","getAudioTracks","displayStream","composed","isRecording","video","ideal","screen","frameRate","IDEAL_FRAME_RATE","MAX_FRAME_RATE","displaySurface","audio","selfBrowserSurface","_displayStream","_displayVideoTrack","getFirstVideoTrack","audioMuted","startAudioRecording","audioAvailable","createMediaStream","handleRecord","alert","mediaRecorder","recordingTimer","stopStreamTracks","_micStream","voiceStream","micTrack","_composed","getUserMedia","echoCancellation","noiseSuppression","autoGainControl","getFirstAudioTrack","enabled","videoEl","SELECTORS","PREVIEW_VIDEO","file","recordedChunks","mimeType","getSupportedMimeType","recordTime","timerLabel","TIMER_LABEL","remainingTime","maxRecordTime","formatTime","stopScreenRecording","TIMER_UPDATE_INTERVAL","ondataavailable","videoTrack","onended","prepareRecording","onstop","CHUNK_INTERVAL","completeBlob","extension","File","previewVideoElement","createObjectURL","screenRecordingData","formData","FormData","append","fileUrl","GleapFeedback","priority","isSilent","excludeData","spamToken","gleapInstance","GleapCustomDataManager","getCustomData","metaData","getMetaData","consoleLog","GleapConsoleLogManager","getLogs","networkLogs","getRequests","customEventLog","getEventArray","ticketAttributes","getTicketAttributes","dataPromises","webReplay","getGlobalDataItem","isLiveSite","recordingUrlPromise","uploadScreenRecording","recordingUrl","screenRecordingUrl","screenshot","screenshotDataPromise","isLiveMode","screenshotData","snapshotPosition","feedbackData","outbound","tags","GleapTagManager","getTags","keysToExclude","keyToExclude","takeSnapshot","getData","feedback","newTab","newWindow","focus","cmp_block_ignoredomains","injectedFrame","autoWhiteListCookieManager","frameUrl","gleapFrameContainer","gleapFrame","updateFrameStyle","showFrameContainer","closeElement","surveyStyle","extendedStyle","surveyFullStyle","classicStyle","classicStyleLeft","modernStyleLeft","noButtonStyleLeft","allStyles","styleToApply","startCommunication","appHeight","setProperty","handler","urlHandler","innerContainer","escListener","widgetOpened","markerManager","showLoader","loadingClass","disableBGFade","disableBGGradient","updateUI","workThroughQueue","setGlobalDataItem","scrollX","scrollY","updateWidgetStatus","registerEscListener","isSurvey","updateNotificationBadge","runWidgetShouldOpenCallback","injectFrame","isWidgetOpen","resetRoutes","hideMarkerManager","reloadNotificationsFromCache","unregisterEscListener","queue","comReady","contentWindow","postMessage","getSession","getAiTools","overrideLanguage","getOverrideLanguage","GleapMarkerManager","success","workQueue","_this6","addMessageListener","GleapAudioManager","ping","showImage","ticketData","frameHeight","_data$data","startProductTour","GleapCustomActionManager","triggerCustomAction","shareToken","feedbackType","sendFeedback","reportedBy","trackEvent","showDrawingScreen","bannerUrl","listeners","appVersionCode","appBuildNumber","sessionStart","nameOffset","verOffset","ix","nAgt","browserName","appName","fullVersion","appVersion","majorVersion","OSName","browser","systemName","buildVersionNumber","releaseVersionNumber","devicePixelRatio","screenWidth","screenHeight","language","userLanguage","mobile","sdkType","environment","logArray","disabled","originalConsoleLog","logLevel","logMaxLength","addLog","origConsole","addLogWithArgs","GleapClickListener","protocol","preventDefault","handleGleapLink","elementId","elementClass","elemId","elemClass","elementTag","htmlPre","htmlPost","getDOMElementDescription","takeCurrentReplay","eventListeners","eventListener","eventName","customAction","customActionCallbacks","_a","__defProp","__publicField","__defNormalProp","__defProp$1","__publicField$1","__defNormalProp$1","NodeType$3","NodeType2","testableAccessors$1","testableMethods$1","untaintedBasePrototype$1","isAngularZonePresent$1","globalThis","Zone","getUntaintedPrototype$1","defaultObj","defaultPrototype","accessorNames","isUntaintedAccessors","accessor","_a2","_b","getOwnPropertyDescriptor","methodNames","isUntaintedMethods","iframeEl","untaintedObject","removeChild","untaintedAccessorCache$1","getUntaintedAccessor$1","untaintedPrototype","untaintedAccessor","untaintedMethodCache$1","getUntaintedMethod$1","untaintedMethod","index$1","n2","parentElement","textContent","other","getRootNode","selectors","mutationObserver","hostEl","isNativeShadowDom","shadowRoot2","stringifyStylesheet","s2","rules2","sheetHref","stringifiedRules","rule2","stringifyRule","isCSSImportRule","importStringified","statement","layerName","supportsText","escapeImportStatement","absolutifyURLs","ruleStringified","isCSSStyleRule","selectorText","cssStringified","fixSafariColons","Mirror","getId","getMeta","getNode","idNodeMap","getIds","nodeMetaMap","removeNodeFromMap","delete","hasNode","node2","meta","oldNode","maskInputValue","maskInputOptions","maskInputFn","actualType","repeat","ORIGINAL_ATTRIBUTE_NAME","getInputType","extractFileExtension","path","baseURL","pathname","URL_IN_CSS_REF","URL_PROTOCOL_MATCH","URL_WWW_MATCH","DATA_URI","quote1","path1","quote2","path2","path3","filePath","maybeQuote","extractOrigin","stack","part","normalizeCssString","markCssSplits","childNodes2","splits","cssTextNorm","i2","textContentNorm","bit","splitNorm","splitCssText","_id","tagNameRegex","IGNORED_NODE","genId","canvasService","canvasCtx","SRCSET_NOT_SPACES","SRCSET_COMMAS_OR_SPACES","cachedDocument","absoluteToDoc","attributeValue","trim","getHref","isSVGElement","ownerSVGElement","customHref","a2","transformAttribute","pos","collectCharacters","regEx","chars2","exec","output","descriptorsStr","inParens","c2","getAbsoluteSrcsetString","ignoreAttribute","_value","classMatchesRegex","checkAncestors","eIndex","needMaskingText","maskTextClass","maskTextSelector","closest","e2","serializeNode","mirror","mirror2","blockClass","blockSelector","needsMask","inlineStylesheet","maskTextFn","dataURLOptions","inlineImages","recordCanvas","keepIframeSrcFn","newlyAddedElement","cssCaptured","rootId","docId","getRootId","DOCUMENT_NODE","compatMode","Document","DOCUMENT_TYPE_NODE","DocumentType","needBlock","_isBlockedElement","HTMLFormElement","processedTagName","getValidTagName$1","attr","_cssText","sheet","selected","rr_open_mode","__context","ctx","x2","getImageData","originalGetImageData","Uint32Array","buffer","pixel","is2DCanvasBlank","rr_dataURL","quality","canvasDataURL","blankCanvas","image","imageSrc","currentSrc","priorCrossOrigin","crossOrigin","recordInlineImage","naturalWidth","naturalHeight","mediaAttributes","rr_mediaState","paused","rr_mediaCurrentTime","currentTime","rr_mediaPlaybackRate","playbackRate","rr_mediaMuted","muted","rr_mediaLoop","loop","rr_mediaVolume","volume","rr_scrollLeft","rr_scrollTop","class","rr_width","rr_height","contentDocument","rr_src","isCustomElement","customElements","isSVG","isCustom","serializeElementNode","TEXT_NODE","parentTagName","textContent2","isStyle","isScript","Text","serializeTextNode","CDATA_SECTION_NODE","CDATA","COMMENT_NODE","Comment","lowerIfExists","maybeAttr","serializeNodeWithId","skipChild","slimDOMOptions","onSerialize","onIframeLoad","iframeLoadTimeout","onStylesheetLoad","stylesheetLoadTimeout","preserveWhiteSpace","_serializedNode","sn","comment","script","as","headFavicon","headMetaDescKeywords","headMetaSocial","headMetaRobots","headMetaHttpEquiv","headMetaAuthorship","headMetaVerification","slimDOMExcluded","serializedNode","recordChild","shadowRootEl","isShadowHost","headWhitespace","bypassOptions","childN","serializedChildNode","isShadow","listener","fired","timer","blankUrl","onceIframeLoaded","iframeDoc","serializedIframeNode","link","styleSheetLoadTimeout","styleSheetLoaded","onceStylesheetLoaded","serializedLinkNode","getDefaultExportFromCjs$1","__esModule","getAugmentedNamespace$1","f2","default","a22","Reflect","construct","picocolors_browser$1","x$1","create$1","isColorSupported","bold","dim","italic","underline","inverse","hidden","strikethrough","black","red","green","yellow","blue","magenta","cyan","white","gray","bgBlack","bgRed","bgGreen","bgYellow","bgBlue","bgMagenta","bgCyan","bgWhite","createColors","picocolors_browserExports$1","require$$2$1","freeze","pico$1","terminalHighlight$1$1","CssSyntaxError$3$1","CssSyntaxError","line","column","source","plugin22","super","reason","plugin","endLine","endColumn","setMessage","captureStackTrace","showSourceCode","aside","lines","index2","number","gutter","spacing","code","cssSyntaxError$1","symbols$1","isClean","my","DEFAULT_RAW$1","after","beforeClose","beforeComment","beforeDecl","beforeOpen","beforeRule","colon","commentLeft","commentRight","emptyBody","indent","semicolon","Stringifier$2$1","builder","atrule","raws","afterName","nodes","block","between","beforeAfter","detect","raw","buf","depth","last","child","before","decl","string","important","own","first","root2","rawCache","walk","rawBeforeClose","rawBeforeComment","walkComments","rawBeforeDecl","walkDecls","rawBeforeOpen","rawBeforeRule","rawColon","rawEmptyBody","rawIndent","rawSemicolon","rule","ownSemicolon","stringifier$1","Stringifier$1$1","stringify$4$1","stringify_1$1","isClean$2$1","my$2$1","CssSyntaxError$2$1","Stringifier2$1","stringify$3$1","cloneNode$1","cloned","Node$4$1","defaults","addToError","postcssNode","input","insertAfter","overrides","cleanRaws","keepBetween","cloneAfter","cloneBefore","opts","rangeBy","getProxyProcessor","toProxy","markDirty","positionBy","stringRepresentation","positionInside","word","endIndex","defaultType","replaceWith","bookmark","foundSelf","result2","toJSON","inputs","fixed","emitInputs","inputsNextIndex","inputId","input2","proxyCache","Proxy","stringifier2","proxyOf","node$1","Node$3$1","Declaration$4$1","variable","declaration$1","nonSecure$1","nanoid","random","customAlphabet","alphabet","defaultSize","SourceMapConsumer","SourceMapConsumer$2$1","SourceMapGenerator","SourceMapGenerator$2$1","existsSync","existsSync$1","readFileSync","readFileSync$1","dirname","dirname$1$1","join$1","PreviousMap$2$1","loadAnnotation","inline","startWith","annotation","loadMap","mapFile","consumer","consumerCache","decodeInline","lastMatch","Buffer","atob","encoding","getAnnotationURL","sourceMapString","isMap","mappings","_mappings","sections","comments","loadFile","fromSourceMap","prevPath","withContent","sourcesContent","previousMap$1","SourceMapConsumer$1$1","SourceMapGenerator$1$1","fileURLToPath","fileURLToPath$1","pathToFileURL","pathToFileURL$1$1","isAbsolute","isAbsolute$1","resolve$1$1","nanoid$2","terminalHighlight$2","CssSyntaxError$1$1","PreviousMap$1$1","fromOffsetCache$1","sourceMapAvailable$1$1","pathAvailable$1$1","Input$4$1","hasBOM","mapResolve","fromOffset","lastLine","lineToIndex","prevIndex","l2","mid","sourceRoot","to","fromUrl","originalPositionFor","sourceContentFor","json","input$1","registerInput","SourceMapConsumer$3","SourceMapGenerator$3","dirname$2","relative","relative$1","resolve$2","sep","sep$1","pathToFileURL$2","Input$3$1","sourceMapAvailable$2","pathAvailable$2","mapGenerator$1","stringify2","cssString","mapOpts","originalCSS","usesFileUrls","absolute","memoizedFileURLs","memoizedPaths","memoizedURLs","addAnnotation","content","isInline","toBase64","outputFile","eol","applyPrevMaps","previous","toUrl","applySourceMap","clearAnnotation","generate","generateMap","generateString","ignoreInvalidMapping","addMapping","generated","original","isSourcesContent","setSourcesContent","isAnnotation","noSource","mapping","sourcePath","charCodeAt","cached","previousMaps","already","toFileUrl","setSourceContent","btoa","unescape","fileURL","Node$2$1","Comment$4$1","comment$1","parse$4$1","Rule$4$1","AtRule$4$1","Root$6$1","isClean$1$1","my$1$1","Declaration$3$1","Comment$3$1","Node$1$1","cleanSource$1","markDirtyUp$1","Container$7$1","Container","children","normalize","each","getIterator","indexes","condition","lastEach","cb","exist","existIndex","splice","sample","rebuild","prepend","unshift","removeAll","replaceValues","pattern","fast","walkAtRules","walkRules","registerParse","dependant","registerRule","registerAtRule","registerRoot","container$1","LazyResult$4$1","Processor$3$1","Container$6$1","Document$3$1","toResult","registerLazyResult","registerProcessor","document$1$1","Warning$2$1","opt","warning$1","Warning$1$1","Result$3$1","processor2","processor","messages","lastPlugin","postcssPlugin","warning2","warnings","result$1","SINGLE_QUOTE$1","DOUBLE_QUOTE$1","BACKSLASH$1","SLASH$1","NEWLINE$1","SPACE$1","FEED$1","TAB$1","CR$1","OPEN_SQUARE$1","CLOSE_SQUARE$1","OPEN_PARENTHESES$1","CLOSE_PARENTHESES$1","OPEN_CURLY$1","CLOSE_CURLY$1","SEMICOLON$1","ASTERISK$1","COLON$1","AT$1","RE_AT_END$1","RE_WORD_END$1","RE_BAD_BRACKET$1","RE_HEX_ESCAPE$1","Container$5$1","AtRule$3$1","atRule$1","LazyResult$3$1","Processor$2$1","Container$4$1","Root$5$1","ignore","root$1","list$2$1","comma","space","separators","array","current","func","inQuote","prevQuote","escape","letter","list_1$1","Container$3$1","list$1$1","Rule$3$1","sep2","rule$1","Declaration$2$1","tokenizer2$1","quote","escaped","escapePos","currentToken","valueOf","ignoreErrors","returned","unclosed","what","back","token","endOfFile","nextToken","ignoreUnclosed","controlChar","fromCharCode","lastIndex","Comment$2$1","AtRule$2$1","Root$4$1","Rule$2$1","SAFE_COMMENT_NEIGHBOR$1","empty","parser$1","spaces","createTokenizer","unnamedAtrule","init","brackets","tokenizer","getPosition","spacesAndCommentsFromEnd","spacesAndCommentsFromStart","checkMissedSemicolon","tokens","founded","doubleColon","customProperty","findLastWithPosition$1","unknownWord","firstSpaces","precheckMissedSemicolon","stringFrom","spacesFromEnd","emptyRule","unexpectedClose","endFile","unclosedBlock","freeSemicolon","bracket","unclosedBracket","clean","lastTokenType","Container$2$1","Parser2$1","Input$2$1","parse$3$1","parser2","parse_1$1","isClean$3","my$3","MapGenerator$1$1","stringify$2$1","Container$1$1","Document$2$1","Result$2$1","parse$2$1","Root$3$1","TYPE_TO_CLASS_NAME$1","PLUGIN_PROPS$1","AtRule","AtRuleExit","CommentExit","Declaration","DeclarationExit","DocumentExit","Once","OnceExit","prepare","Root","RootExit","Rule","RuleExit","NOT_VISITORS$1","CHILDREN$1","isPromise$1","getEvents$1","toStack$1","eventIndex","visitorIndex","visitors","cleanMarks$1","postcss$2$1","LazyResult$2$1","LazyResult","stringified","processed","syntax","parser","helpers","postcss","plugins","processing","runAsync","onRejected","catch","onFinally","getAsyncError","postcssVersion","prepareVisitors","version","hasListener","runOnRoot","visitTick","visitor","roots","subRoot","sync","stringifier","walkSync","visitSync","onFulfilled","visit2","registerPostcss","lazyResult$1","MapGenerator2$1","stringify$1$1","parse$1$1","Result$1$1","NoWorkResult$1$1","_processor","_css","_opts","_map","generatedCSS","generatedMap","_root","noWorkResult$1","NoWorkResult2$1","LazyResult$1$1","Document$1$1","Root$2$1","Processor$1$1","normalized","process","use","processor$1","Declaration$1$1","PreviousMap2$1","Comment$1$1","AtRule$1$1","Input$1$1","Root$1$1","Rule$1$1","fromJSON$1$1","ownInputs","inputHydrated","fromJSON_1$1","CssSyntaxError2$1","Declaration2$1","LazyResult2$1","Container2$1","Processor2$1","stringify$5","fromJSON$2","Document22","Warning2$1","Comment2$1","AtRule2$1","Result2$1","Input2$1","parse$5","list$3","Rule2$1","Root2$1","Node2$1","postcss$3","initializer","warningPrinted","creator","env","LANG","transformer","processOpts","pluginOpts","fromJSON","atRule","Processor","Warning","Result","Input","postcss_1$1","postcss$1$1","__defProp2","__publicField2","__defNormalProp2","getDefaultExportFromCjs","getAugmentedNamespace","picocolors_browser","picocolors_browserExports","require$$2","pico","terminalHighlight$1","CssSyntaxError$3","CssSyntaxError2","cssSyntaxError","symbols","DEFAULT_RAW","Stringifier$2","Stringifier$1","stringify$4","stringify_1","isClean$2","my$2","CssSyntaxError$2","Stringifier22","stringify$3","Node$4","Node$3","Declaration$4","declaration","nonSecure","SourceMapConsumer$2","SourceMapGenerator$2","dirname$1","PreviousMap$2","previousMap","SourceMapConsumer$1","SourceMapGenerator$1","pathToFileURL$1","resolve$1","terminalHighlight","CssSyntaxError$1","PreviousMap$1","fromOffsetCache","sourceMapAvailable$1","pathAvailable$1","Input$4","Input$3","sourceMapAvailable","pathAvailable","mapGenerator","Node$2","Comment$4","parse$4","Rule$4","AtRule$4","Root$6","isClean$1","my$1","Declaration$3","Comment$3","Node$1","cleanSource","markDirtyUp","Container$7","Container2","container","LazyResult$4","Processor$3","Container$6","Document$3","document$1","Warning$2","warning","Warning$1","Result$3","SINGLE_QUOTE","DOUBLE_QUOTE","BACKSLASH","SLASH","NEWLINE","SPACE","FEED","TAB","CR","OPEN_SQUARE","CLOSE_SQUARE","OPEN_PARENTHESES","CLOSE_PARENTHESES","OPEN_CURLY","CLOSE_CURLY","SEMICOLON","ASTERISK","COLON","AT","RE_AT_END","RE_WORD_END","RE_BAD_BRACKET","RE_HEX_ESCAPE","Container$5","AtRule$3","LazyResult$3","Processor$2","Container$4","Root$5","list$2","list_1","Container$3","list$1","Rule$3","Declaration$2","tokenizer22","Comment$2","AtRule$2","Root$4","Rule$2","SAFE_COMMENT_NEIGHBOR","findLastWithPosition","Container$2","Parser22","Input$2","parse$3","parse_1","MapGenerator$1","stringify$2","Container$1","Document$2","Result$2","parse$2","Root$3","TYPE_TO_CLASS_NAME","PLUGIN_PROPS","NOT_VISITORS","CHILDREN","isPromise","getEvents","toStack","cleanMarks","postcss$2","LazyResult$2","LazyResult2","lazyResult","MapGenerator22","stringify$1","parse$1","Result$1","NoWorkResult$1","noWorkResult","NoWorkResult22","LazyResult$1","Document$1","Root$2","Processor$1","Declaration$1","PreviousMap22","Comment$1","AtRule$1","Input$1","Root$1","Rule$1","fromJSON$1","fromJSON_1","CssSyntaxError22","Declaration22","LazyResult22","Container22","Processor22","Document222","Warning22","Comment22","AtRule22","Result22","Input22","Rule22","Root22","Node22","postcss_1","postcss$1","BaseRRNode","_args","childIterator","_newChild","_refChild","_node","testableAccessors","testableMethods","untaintedBasePrototype","isAngularZonePresent","getUntaintedPrototype","untaintedAccessorCache","getUntaintedAccessor","untaintedMethodCache","getUntaintedMethod","mutationObserverCtor","on","capture","DEPARTED_MIRROR_ACCESS_WARNING","_mirror","throttle","wait","leading","remaining","trailing","hookSetter","isRevoked","patch","replacement","wrapped","defineProperties","__rrweb_original__","receiver","nowTimestamp","getWindowScroll","_d","scrollingElement","getWindowHeight","getWindowWidth","closestElementOfNode","isBlocked","isIgnored","headTitleMutations","isAncestorRemoved","legacy_isTouchEvent","changedTouches","isSerializedIframe","isSerializedStylesheet","hasShadowRoot","StyleSheetMirror","styleIDMap","newId","idStyleMap","getStyle","generateId","getShadowHost","shadowHost","DOCUMENT_FRAGMENT_NODE","shadowHostInDom","rootShadowHost","getRootShadowHost","inDom","EventType","EventType2","IncrementalSource","IncrementalSource2","MouseInteractions","MouseInteractions2","PointerTypes","PointerTypes2","CanvasContext","CanvasContext2","MediaInteractions","MediaInteractions2","NodeType","isNodeInLinkedList","DoubleLinkedList","addNode","__ln","previousSibling","tail","removeNode","moveKey","parentId","MutationBuffer","processMutation","emit","frozen","locked","adds","addedIds","addList","getNextId","ns","pushAdd","parentTag","addedSet","currentN","iframeManager","addIframe","stylesheetManager","trackLinkElement","shadowDomManager","addShadowRoot","iframe","childSn","attachIframe","observeAttachShadow","attachLinkElement","mapRemoves","movedSet","isParentRemoved","removesSubTreeCache","isAncestorInSet","droppedSet","candidate","tailNode","unhandledNode","texts","genTextAreaValueMutation","attribute","diffAsStr","styleDiff","unchangedAsStr","_unchangedStyles","removes","attributeMap","movedMap","mutationCb","textarea","cn","m","oldValue","attributeName","unattachedDoc","implementation","createHTMLDocument","old","pname","newValue","getPropertyValue","newPriority","getPropertyPriority","genAdds","nodeId","isSerialized","deepDelete","n22","processRemoves","processedNodeManager","inOtherBuffer","targetId","canvasManager","unfreeze","isFrozen","lock","unlock","addsSet","_mirror2","_isParentRemoved","_isAncestorInSet","errorHandler","callbackWrapper","rest","mutationBuffers","getEventTarget","composedPath","initMutationObserver","rootEl","mutationBuffer","processMutations","attributeOldValue","characterData","characterDataOldValue","initMouseInteractionObserver","mouseInteractionCb","sampling","mouseInteraction","disableMap","handlers","currentPointerType","eventKey","pointerType","thisEventKey","Mouse","Touch","Pen","MouseDown","MouseUp","Click","clientX","clientY","getHandler","PointerEvent","TouchStart","TouchEnd","initScrollObserver","scrollCb","scrollLeftTop","INPUT_TAGS","lastInputValueMap","getNestedCSSRulePositions","childRule","hasNestedCSSRule","parentRule","CSSGroupingRule","CSSMediaRule","CSSSupportsRule","CSSConditionRule","parentStyleSheet","recurse","getIdAndStyleId","styleMirror","initAdoptedStyleSheetObserver","host2","hostId","patchTarget","originalPropertyDescriptor","_a3","sheets","adoptStyleSheets","initObservers","o2","hooks","currentWindow","mousemoveCb","viewportResizeCb","inputCb","mediaInteractionCb","styleSheetRuleCb","styleDeclarationCb","canvasMutationCb","fontCb","selectionCb","customElementCb","mousemove","viewportResize","mediaInteaction","styleSheetRule","styleDeclaration","canvasMutation","font","selection","customElement","mergeHooks","recordDOM","mousemoveHandler","callbackThreshold","mousemoveCallback","timeBaseline","positions","wrappedCb","totalOffset","timeOffset","updatePosition","DragEvent","Drag","MouseEvent","MouseMove","TouchMove","initMoveObserver","mouseInteractionHandler","scrollHandler","viewportResizeHandler","lastH","lastW","initViewportResizeObserver","inputHandler","ignoreClass","ignoreSelector","userTriggeredOnInput","eventHandler","userTriggered","isTrusted","isChecked","cbWithDedup","text2","v2","lastInputValue","propertyDescriptor","HTMLInputElement","hookProperties","HTMLSelectElement","HTMLTextAreaElement","HTMLOptionElement","initInputObserver","mediaInteractionHandler","Play","Pause","Seeked","VolumeChange","RateChange","initMediaInteractionObserver","styleSheetObserver","adoptedStyleSheetObserver","styleDeclarationObserver","fontObserver","CSSStyleSheet","insertRule","thisArg","argumentsList","addRule","styleBlock","deleteRule","replaceSync","removeRule","supportedNestedCSSRuleTypes","canMonkeyPatchNestedCSSRule","unmodifiedFunctions","typeKey","initStyleSheetObserver","ignoreCSSAttributes","CSSStyleDeclaration","removeProperty","initStyleDeclarationObserver","collectFonts","fontMap","originalFontFace","FontFace","family","descriptors","fontFace","fontSource","Uint8Array","restoreHandler","fonts","initFontObserver","selectionObserver","collapsed","updateSelection","getSelection","isCollapsed","ranges","rangeCount","getRangeAt","startContainer","startOffset","endContainer","endOffset","initSelectionObserver","customElementObserver","initCustomElementObserver","pluginHandlers","plugin3","CrossOriginIframeMirror","generateIdFn","remoteId","idToRemoteMap","remoteToIdMap","idToRemoteIdMap","getIdToRemoteIdMap","remoteIdToIdMap","getRemoteIdToIdMap","getRemoteId","getRemoteIds","ids","iframeIdToRemoteIdMap","iframeRemoteIdToIdMap","IframeManager","wrappedEmit","recordCrossOriginIframes","crossOriginIframeStyleMirror","iframes","crossOriginIframeMap","addLoadListener","loadListener","isAttachIframe","crossOriginMessageEvent","transformedEvent","transformCrossOriginEvent","isCheckout","FullSnapshot","crossOriginIframeMirror","replaceIdOnNode","crossOriginIframeRootIdMap","patchRootIdOnNode","timestamp","IncrementalSnapshot","Mutation","Meta","Load","DomContentLoaded","Plugin","Custom","replaceIds","ViewportResize","MediaInteraction","MouseInteraction","Scroll","CanvasMutation","StyleSheetRule","StyleDeclaration","replaceStyleIds","Font","Selection","AdoptedStyleSheet","styles","iframeMirror","ShadowDomManager","WeakSet","patchAttachShadow","shadowDoms","restoreHandlers","iframeElement","manager","option","sRoot","chars","lookup","i$1","canvasVarMap","saveWebGLVar","isInstanceOfWebGLObject","list2","ctor","contextMap","variableListFor$1","serializeArg","Float32Array","Float64Array","Int32Array","Uint16Array","Int16Array","Int8Array","Uint8ClampedArray","rr_type","base64","arraybuffer","bytes","DataView","byteOffset","byteLength","HTMLImageElement","ImageData","serializeArgs","supportedWebGLConstructorNames","initCanvasContextObserver","setPreserveDrawingBufferToTrue","contextType","ctxName","getNormalizedContextName","contextAttributes","preserveDrawingBuffer","patchGLPrototype","getOwnPropertyNames","recordArgs","hookHandler","setter","encodedJs","WorkerWrapper","objURL","webkitURL","worker","Worker","revokeObjectURL","CanvasManager","latestId","invokeId","rafStamps","pendingCanvasMutations","initCanvasMutationObserver","initCanvasFPSObserver","resetObservers","fps","canvasContextReset","snapshotInProgressMap","onmessage","commands","timeBetweenSnapshots","rafId","lastSnapshotTime","takeCanvasSnapshots","matchedCanvas","getCanvas","getContextAttributes","COLOR_BUFFER_BIT","bitmap","createImageBitmap","startRAFTimestamping","startPendingCanvasMutationFlusher","canvas2DReset","props2D","CanvasRenderingContext2D","initCanvas2DMutationObserver","canvasWebGL1and2Reset","WebGLRenderingContext","WebGL","WebGL2RenderingContext","WebGL2","initCanvasWebGLMutationObserver","flushPendingCanvasMutations","setLatestRAFTimestamp","_values","flushPendingCanvasMutationFor","valuesWithType","type2","StylesheetManager","adoptedStyleSheetCb","linkEl","trackedLinkElements","trackStylesheetInLinkElement","adoptedStyleSheetData","styleIds","CSSRule","r2","_linkEl","ProcessedNodeManager","thisBuffer","buffers","nodeMap","active","takeFullSnapshot$1","recording","cleanFrame","debug","record","checkoutEveryNms","checkoutEveryNth","maskAllInputs","_maskInputOptions","_slimDOMOptions","packFn","mousemoveWait","recordAfter","errorHandler2","inEmittingFrame","passEmitsToParent","month","search","tel","week","select","password","lastFullSnapshotEvent","NodeList","DOMTokenList","polyfill$1","incrementalSnapshotCount","eventProcessor","exceedCount","exceedTime","wrappedMutationEmit","wrappedScrollEmit","wrappedCanvasMutationEmit","getMirror","nodeMirror","slimDOM","snapshot","initialOffset","CustomElement","t2","addCustomEvent","tag","freezePage","takeFullSnapshot","NotStarted","Running","Stopped","customOptions","stopFunction","ContextMenu","DblClick","Focus","Blur","rrwebEvent","stringifiedData","dataURIRegex","matchAll","ensureMaxMessageSize","bufferSize","ScreenDrawer","svgElement","minHeight","mouseDown","colorpicker","fadeOutToolbar","tool","mouseDownPen","mouseDownRect","mouseMove","mouseMovePen","mouseMoveRect","mouseUp","fadeInToolbar","mouseUpPen","mouseUpRect","appendToBuffer","getMousePosition","updateSvgPath","w","abs","startPoint","setAttributeNS","createElementNS","strokeWidthRect","appendPathToSvg","strokeWidth","pt","strPath","touches","totalX","totalY","getAveragePoint","tmpPath","pathBuffer","fadeTarget","GleapScrollStopper","supportsPassive","wheelOpt","scrollDisabled","wheelEvent","preventDefaultForScrollKeys","keyCode","showWidgetUI","formKey","dirty","dialogUI","enableScroll","screenRecorder","unregisterListeners","cleanupMousePointer","screenDrawer","dialog","captureSVG","videoPreviewContainer","dismissUI","colorPicker","borderLayer","captureEditor","dragCursor","setMouseMove","mouseMoveEventHandler","touchMoveEventHandler","dragHandle","dragStart","drag","dragEnd","bugReportingEditor","translateText","pageLeaveListener","isEscape","isEnter","dismiss","showNextStep","returnValue","registerListeners","hideWidgetUI","createEditorUI","setupMousePointer","disableScroll","setupScreenRecording","captureScreenDrawerRerender","setupColorPicker","setupToolbar","selectedColor","colorItems","colorItem","hexColor","onclick","setColor","setPenColor","currentX","currentY","initialX","initialY","toolbar","isDragging","xOffset","yOffset","_getTransformValues","matrix","DOMMatrix","m41","m42","getTransformValues","nextButton","chooseTool","toolbarItem","toolbarTools","setTool","svgClone","toolbarItems","_loop2","toggleAudio","startScreenRecording","removeLastAddedPathFromSvg","itemInactiveClass","screenRecordingTooltip","audioRecordingTooltip","recordingClass","notRecordingClass","clearPreview","captureRenderer","penTips","fill","staticTranslation","staticTranslations","vars","template","localizationOptions","htmlLang","GleapShortcutListener","shortCutListener","char","keyIdentifier","ctrlKey","startFeedbackFlowWithOptions","autostartDrawing","GleapPreFillManager","unreadCount","notificationContainer","notificationsFromCache","unreadNotificationsKey","nots","notification","createdAt","notifications","renderNotifications","updateTabBarNotificationCount","sound","clearElem","currentNewsIndex","newsNotifications","news","otherNotifications","currentIndex","currentNews","newsElem","newsContainerElem","coverImageUrl","newsImageElem","stopPropagation","openNews","newsContentElem","newsTitleElem","getName","descHTML","renderDescription","descElem","paginationElem","pageIndicator","nextBtn","conversation","openConversation","checklist","openChecklist","progress","currentStep","totalSteps","nextStepTitle","sender","profileImageUrl","openNewsArticle","_notification$data","previewText","uiOnly","classLeft","classNoButton","_this$bannerUrl","_this$bannerData","_data$data2","_data$data3","_data$data4","_data$data5","_data$data6","_data$data7","_data$data8","_data$data9","_data$data10","bannerData","format","startBot","botId","startFeedbackFlow","formId","showSurvey","surveyFormat","articleId","openHelpCenterArticle","startChecklist","checklistId","bannerContainer","gleapBFrame","injectBannerUI","_listenForMessages","modalUrl","_this$modalUrl","_data$data11","modalData","primaryColor","_postMessage","modalContainer","wrapper","modalBackdropClickListener","_this2$modalData$show","_this2$modalData","showCloseButton","frame","_injectModalUI","play","settings","Audio","playPromise","getID","getClassSelectors","getClasses","cl","kCombinations","items","getNthChild","sibling","counter","getTag","isUnique","elems","getAllSelectors","attributesToIgnore","funcs","sum","getAttributes","res","testUniqueness","getFirstUnique","getUniqueCombination","combinations","getCombinations","firstUnique","combination","getUniqueSelector","selectorTypes","excludeRegex","foundSelector","elementSelectors","ID","Class","selectorType","Tag","Classes","Attributes","NthChild","unique","_step2","_options$selectorType","_options$attributesTo","_options$excludeRegex","allSelectors","parents","currentElement","getParents","_iterator2","_i","_allSelectors","ElementOverlay","overlay","background","borderColor","borderStyle","borderWidth","boxSizing","cursor","zIndex","margin","shadowContainer","attachShadow","_createClass","useShadowDOM","usingShadowDOM","setBounds","bounds","ElementPicker","overlayOptions","handleMouseMove","handleClick","tick","addToDOM","removeFromDOM","mouseX","mouseY","tickReq","stopImmediatePropagation","onClick","updateTarget","ignoreCursor","newTarget","elementFromPoint","captureCursor","elementFilter","onHover","GleapAdminHelper","picker","stopPicker","onElementPicked","startPicker","GleapAdminManager","COLLAPSE_UI_ACTIVE_CLASS","FRAME_CONTAINER_ACTIVE_CLASS","isActive","activeClass","gleapCollapseUI","toggle","injectedCollapseUI","toggleCollapseUI","_this$configData","configData","sendMessageToTourBuilder","GleapProductTours","disable","adminHelper","injectCollapseUI","setFrameHeight","gleapAdminDisabled","initAdminHelper","currentPage","click","opener","GleapTours","currentConfig","configure","animate","allowClose","overlayOpacity","smoothScroll","disableActiveInteraction","showProgress","stagePadding","stageRadius","popoverOffset","showButtons","disableButtons","overlayColor","getConfig","easeInOutQuad","elapsed","initialValue","amountOfChange","getFocusableElements","parentEls","focusableQuery","flatMap","parentEl","isParentFocusable","focusableEls","isElementVisible","bringInView","isElementInView","shouldSmoothScroll","scrollIntoView","behavior","hasScrollableParent","currentState","setState","getState","resetState","registeredListeners","listen","hook","trackActiveElement","activeStagePosition","renderOverlay","mountOverlay","stagePosition","overlaySvg","stage","windowX","windowY","svg","fillRule","clipRule","strokeLinejoin","strokeMiterlimit","stagePath","generateStageSvgPathString","createOverlaySvg","onDriverClick","pathElement","stageWidth","stageHeight","limitedRadius","normalizedRadius","highlightBoxX","highlightBoxY","highlightBoxWidth","highlightBoxHeight","highlight","attemptTime","elemObj","refactoredElement","hidePopover","existingDummy","getElementById","mountDummyElement","toElement","toStep","_toStep$disableActive","fromStep","fromElement","isFirstHighlight","isToDummyElement","isFromDummyElement","isAnimatedTour","highlightStartedHook","onHighlightStarted","highlightedHook","onHighlighted","deselectedHook","onDeselected","hasDelayedPopover","isPopoverRendered","isHalfwayThrough","popover","renderPopover","fromDefinition","toDefinition","transitionStage","transferHighlight","refreshActiveHighlight","activeHighlight","activeStep","refreshOverlay","repositionPopover","requireRefresh","resizeTimeout","trapFocus","activeElement","popoverEl","firstFocusableEl","lastFocusableEl","shiftKey","previousFocusableEl","nextFocusableEl","onKeyup","shouldPreventDefault","listenerWrapper","listener2","useCapture","title","description","closeButton","footer","footerButtons","previousButton","createPopover","_ref2$nextBtnText","nextBtnText","_ref2$prevBtnText","prevBtnText","_ref2$progressText","progressText","showButtonsConfig","showProgressConfig","showFooter","disabledButtonsConfig","popoverWrapper","customPopoverClass","popoverClass","_b2","onNextClick","onPrevClick","onCloseClick","onPopoverRender","focusableElement","getPopoverDimensions","boundingClientRect","realWidth","realHeight","calculateTopForLeftRight","elementDimensions","popoverDimensions","popoverPadding","popoverArrowDimensions","calculateLeftForTopBottom","_ref3$align","align","_ref3$side","requiredAlignment","requiredSide","topValue","isTopOptimal","bottomValue","isBottomOptimal","leftValue","isLeftOptimal","rightValue","isRightOptimal","noneOptimal","popoverRenderedSide","leftToSet","topToSet","leftValue2","rightToSet","bottomToSet","popoverArrow","popoverWidth","windowWidth","elementWidth","elementLeft","popoverHeight","windowHeight","elementTop","elementHeight","arrowSide","arrowAlignment","renderPopoverArrow","moveNext","activeIndex","steps","nextStepIndex","drive","movePrevious","previousStepIndex","handleArrowLeft","handleArrowRight","_f","_g","_h","stepIndex","hasNextStep","hasPreviousStep","doneBtnText","allowsClosing","progressTextReplaced","configuredButtons","calculatedButtons","withOnDestroyStartedHook","activeOnDestroyed","onDestroyStarted","onDestroyed","destroyPopover","destroyHighlight","isActiveDummyElement","setConfig","setSteps","getActiveIndex","isFirstStep","isLastStep","getActiveStep","getActiveElement","getPreviousElement","getPreviousStep","moveTo","localStorageKey","pointerContainerId","copilotJoinedContainerId","_canPlayAudio","GleapCopilotTours","_scrollListeners","_currentAnchor","_currentStep","_scrollDebounceTimer","productTourId","currentActiveIndex","productTourData","updatePointerPosition","onCompleteCallback","scrollableAncestors","getScrollableAncestors","_pointerContainer","yPosition","targetScrollPosition","scrollTo","smoothScrollToY","removeScrollListeners","pollCount","updateFinalPosition","isElementFullyVisible","targetX","targetY","containerWidthSpace","attachScrollListeners","currentAudio","pause","copilotInfoContainer","_GleapConfigManager$g","_GleapConfigManager$g2","_this$productTourData3","_this$productTourData4","_this$productTourData5","_this$productTourData6","_this$productTourData","_this$productTourData2","contrastColor","playVoice","gradient","svgMouse","infoBubble","kaiAvatar","kaiSlug","completeTour","canPlayAudio","supported","setupCopilotTour","showUnmuteModal","showAudioUnmuteModal","renderNextStep","_this$productTourData7","_this$productTourData8","_this$productTourData9","modalOverlay","modal","unmuteModalTitle","unmuteButton","unmuteModalButton","startAnywayButton","unmuteModalContinue","_this7","handleStep","gotToNextStep","_currentStep$inputTyp","proceedClickmode","storeUncompletedTour","inputType","handleInputEvent","_e$target","once","_currentStep$inputVal","inputValue","typeCharacter","wave","performClickAnimation","tempDiv","htmlToPlainText","readTime","wordCount","ceil","estimateReadTime","continueWithNoAudio","voice","elementPromise","maxAttempts","attempts","interval","waitForElement","_self$productTourData","tourType","gleapTourObj","delay","manually","validateProductTour","onComplete","comData","clearUncompletedTour","startWithConfig","unmuted","driverSteps","isClickMode","isInputMode","hasSender","videoUrl","senderHTML","firstName","driverStep","buttons","backButton","allowKeyboardControl","nextText","doneText","prevText","_config$state","onDocumentClick","popoverElement","mediaElements","performRequentialRefresh","mediaElement","playingClass","playPauseContainer","videoElement","videoContainer","clickVideo","evnt","gleapTourPopover","_evnt$target","__originalGetContext","GleapChecklist","_HTMLElement","_assertThisInitialized","_callSuper","handleChecklistUpdate","handleSessionUpdate","_networkManager","_boundFloatingLauncherClick","handleFloatingLauncherClick","_boundFloatingCloseClick","handleFloatingCloseClick","_floatingHideTimeout","_inherits","_boundHandleChecklistUpdate","_boundHandleSessionUpdate","_boundResizeHandler","handleResize","_checkSessionAndLoad","removeFloatingClickListeners","checklistData","_hasLoaded","_isSessionReady","_initialActiveSet","renderResponse","updateActiveTaskMaxHeight","loadChecklist","renderChecklist","_getGleapSessionInstance","hasChecklistId","defaultValue","translateTextWithVars","validateChecklist","_isMock","isConnected","fetchChecklist","_isInitialLoad","_this3$checklistData$","_data$outbound","completedSteps","firstIncompleteIndex","findIndex","_session$gleapId","_session$gleapHash","checkedStep","makeRequest","updateData","_this$checklistData$o3","previousCompletedSteps","dataChanged","activeStepCompleted","currentlyActiveStepIndex","_this$checklistData$o","activeStepId","_this$checklistData$o2","nextActiveStep","setActiveStep","tasks","launcher","_outbound$config","_this$checklistData","renderDoneState","progressbarEnabled","doneSteps","_outbound$config2","_outbound$config3","nextIncompleteStep","titleText","_translateWithVars","subject","subtitleText","successTitle","successMessage","circumference","PI","computedOffset","isHeader","toFixed","_outbound$sender","infoEnabled","_translate","senderHtml","progressLabel","durationLabel","isTaskDone","badge","getCheckIcon","stepTitle","stepDescription","actionButtonText","actionTitle","actionHtml","markDoneLabel","markDoneHtml","allowMarkDone","taskClasses","_outbound$config4","_outbound$config5","_outbound$config6","floatingEnabled","renderFloatingLauncher","renderInfoSection","renderProgressSection","renderTasks","addTaskEventListeners","addFloatingClickListeners","toggleTask","taskBodyInner","task","newActiveStep","markDoneBtn","_this5$checklistData","previouslyActiveStep","_this5$checklistData$","stepId","allSteps","isModalOpen","tasksModal","_this5$checklistData$2","updateChecklist","actionBtn","_this5$checklistData2","actionBody","openURL","actionOpenInNewTab","gleapError","previousActiveStep","tasksToToggle","forceOpen","taskElement","isOpen","shouldOpen","taskBody","_wrapNativeSuper","registerGleapChecklist","offlineMode","hostname","injectNotificationUI","actions","_action$data","popupType","disableInAppNotifications","showNotification","showBanner","showModal","startProductTourWithConfig","globalData","replayData","getReplayData","setTags","setUrlHandler","tools","setAiTools","updateContainerHeight","initialHeight","fixGleapHeight","checkForUncompletedTour","checkForUrlParams","urlParams","URLSearchParams","widget","conversationFlow","startConversation","feedbackFlow","surveyFlow","surveyFlowFormat","tourDelay","identifySession","updateSession","setMaxRequests","setOptions","cleanedData","formPreFill","toggleFeedbackButton","setAppVersionCode","setAppBuildNumber","setBannerUrl","setModalUrl","setTicketAttribute","unsetTicketAttribute","clearTicketAttributes","attachCustomData","setCustomData","removeCustomData","clearCustomData","playSound","showNotificationBadge","notificationInstance","setOverrideLanguage","softReInitialize","updateContact","registerCustomAction","buttonStyle","contrastButtonColor","contrastBackgroundColor","contrastHeaderColor","isDarkMode","headerDarkColor","subTextColor","backgroundColorHover","hoverHoverColor","buttonBorderRadius","containerRadius","chatRadius","formItemBorderRadius","formItemSmallBorderRadius","bottomInfoOffset","colorStyleSheet","zIndexBase","injectStyledCSS","replays","attachments","sendSilentCrashReportWithFormData","silentCrashReportSent","excludeDataCleaned","newFormData","hideBackButton","showBackButton","flow","collectionId","term","networkManager","checkStartUrl","startProductTourConfig","startURL","loadUncompletedTour","GleapActions","GLAction","urlParts","identifier","openHelpCenterCollection"],"sourceRoot":""} \ No newline at end of file diff --git a/published/latest/index.js b/published/latest/index.js index fd2e2c0d..c174c431 100644 --- a/published/latest/index.js +++ b/published/latest/index.js @@ -1,2 +1,2 @@ -(()=>{var e={d:(t,n)=>{for(var o in n)e.o(n,o)&&!e.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:n[o]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};(()=>{"use strict";function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function o(e,t){for(var n=0;nUm});var a=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),r(this,"feedbackButton",null),r(this,"injectedFeedbackButton",!1),r(this,"buttonHidden",null),r(this,"lastButtonIcon",null)}var t,n,i;return t=e,i=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],(n=[{key:"destroy",value:function(){this.feedbackButton&&(this.feedbackButton.remove(),this.feedbackButton=null),this.buttonHidden=null,this.lastButtonIcon=null,this.injectedFeedbackButton=!1,this.instance=null}},{key:"toggleFeedbackButton",value:function(t){this.buttonHidden=!t,e.getInstance().updateFeedbackButtonState(),Mh.getInstance().updateContainerStyle()}},{key:"feedbackButtonPressed",value:function(){var e=Vt.getInstance();e.isOpened()?e.hideWidget():(e.setAppMode("widget"),e.showWidget())}},{key:"injectFeedbackButton",value:function(){var e=this;if(!this.injectedFeedbackButton){this.injectedFeedbackButton=!0;var t=document.createElement("div");t.addEventListener("click",(function(){e.feedbackButtonPressed()})),document.body.appendChild(t),this.feedbackButton=t,this.updateFeedbackButtonState()}}},{key:"updateNotificationBadge",value:function(e){var t=document.querySelector(".bb-notification-bubble");if(t){var n="bb-notification-bubble--hidden";e>0&&!Vt.getInstance().isOpened()?(t.classList.remove(n),t.innerText=e):t.classList.add(n)}}},{key:"refresh",value:function(){document.querySelector(".bb-feedback-button")?(this.updateFeedbackButtonText(),this.updateFeedbackButtonState()):(this.injectedFeedbackButton=!1,this.feedbackButton=null,this.buttonHidden=null,this.lastButtonIcon=null,this.injectFeedbackButton())}},{key:"updateFeedbackButtonText",value:function(){var t=dt.getInstance().getFlowConfig();if(t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC||t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC_BOTTOM||t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC_LEFT){var n=document.querySelector(".bb-feedback-button-classic");n&&(n.innerText=t.widgetButtonText)}}},{key:"updateFeedbackButtonState",value:function(){if(null!==this.feedbackButton){var t=dt.getInstance().getFlowConfig(),n="";n=t.buttonLogo?''):p("button","#fff"),this.feedbackButton.className="bb-feedback-button gleap-font gl-block",this.feedbackButton.setAttribute("dir",gh.getInstance().isRTLLayout?"rtl":"ltr"),t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC||t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC_BOTTOM||t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC_LEFT?(this.feedbackButton.classList.add("bb-feedback-button--classic-button-style"),this.feedbackButton.innerHTML='
').concat(t.widgetButtonText,"
")):n!==this.lastButtonIcon&&(this.feedbackButton.innerHTML='
'.concat(n).concat(p("arrowdown","#fff"),'
')),this.lastButtonIcon=n;var o=!1;null===e.getInstance().buttonHidden?t.feedbackButtonPosition===e.FEEDBACK_BUTTON_NONE&&(o=!0):e.getInstance().buttonHidden&&(o=!0),o&&this.feedbackButton.classList.add("bb-feedback-button--disabled"),t.feedbackButtonPosition===e.FEEDBACK_BUTTON_BOTTOM_LEFT&&this.feedbackButton.classList.add("bb-feedback-button--bottomleft"),Vt.getInstance().isOpened()&&this.feedbackButton.classList.add("bb-feedback-button--open");var r=Vt.getInstance().appMode;"survey"!==r&&"survey_full"!==r&&"survey_web"!==r||this.feedbackButton.classList.add("bb-feedback-button--survey"),!0!==t.hideForGuests||et.getInstance().isUser()||this.feedbackButton.classList.add("bb-feedback-button--hidden")}}}])&&o(t.prototype,n),i&&o(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}();function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var o,r,i,a,s=[],l=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(o=i.call(n)).done)&&(s.push(o.value),s.length!==t);l=!0);}catch(e){c=!0,r=e}finally{try{if(!l&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(c)throw r}}return s}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return c(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return c(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n=160?"#000000":"#ffffff"},p=function(e,t){return"button"===e?'':"drag"===e?'\x3c!--!Font Awesome Pro 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2025 Fonticons, Inc.--\x3e':"unmute"===e?'':"mute"===e?'':"replay"===e?'\n \n ':"dismiss"===e?'':"blur"===e?'\n \n':"pen"===e?'\n \n \n \n \n \n \n \n \n \n \n \n \n':"rect"===e?'\n \n \n \n \n \n \n \n \n \n \n':"pointer"===e?'\n \n ':"clip"===e?'\n \n \n \n \n \n':"mic"===e?'\n \n \n \n \n ':"camera"===e?'\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n':"recorderon"===e?'\n \n \n \n \n \n \n \n \n \n \n \n':"recorderoff"===e?'\n \n \n \n \n \n \n \n \n ':"arrowdown"===e?'\n \n '):"arrowleft"===e?'\n \n '):"close"===e?'\n \n '):"undo"===e?'\n \n \n \n \n \n \n \n \n \n ':"circle-dot"===e?''):"circle-question"===e?''):"circle-info"===e?''):"circle-exclamation"===e?''):"circle-up"===e?''):"circle-right"===e?''):""};function h(e){return h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},h(e)}function f(e,t){for(var n=0;n0&&(e=e.concat(this.externalRequests)),this.filters&&this.filters.length>0)for(var t=0;t-1)&&!e.find((function(e){return e.url===s.name}))&&e.push({type:"RESOURCE",date:new Date(this.startTimestamp+s.startTime),url:s.name,duration:Math.round(s.duration),initiatorType:s.initiatorType})}}}catch(u){}var l=this.blacklist.concat(this.defaultBlacklist);if(l&&l.length>0)try{e=e.filter((function(e){for(var t=0;t70&&(e=70),this.maxRequests=e}},{key:"setStopped",value:function(e){this.stopped=e}},{key:"setFilters",value:function(e){this.filters=this.filters.concat(e||[])}},{key:"setBlacklist",value:function(e){this.blacklist=this.blacklist.concat(e||[])}},{key:"cleanRequests",value:function(){var e=Object.keys(this.requests);if(e.length>this.maxRequests)for(var t=e.slice(0,e.length-this.maxRequests),n=0;n.15?"":e}},{key:"cleanupPayload",value:function(e){if(null==e)return"{}";try{if(void 0!==("undefined"==typeof TextDecoder?"undefined":h(TextDecoder))&&ArrayBuffer.isView(e))return(new TextDecoder).decode(e)}catch(t){}return e}},{key:"preparePayload",value:function(e){var t=this.cleanupPayload(e);return this.cleanupContentSize(t)}},{key:"start",value:function(){var e=this;if(!this.initialized){this.initialized=!0;var t=this;this.interceptNetworkRequests({onFetch:function(n,o){if(!e.stopped&&o&&e.requests){if(n.length>0&&void 0!==n[0]&&void 0!==n[0].url)e.requests[o]={url:n[0].url,date:new Date,request:{payload:"",headers:void 0!==n[0].headers?Object.fromEntries(n[0].headers.entries()):{}},type:void 0!==n[0].method?n[0].method:""};else if(n.length>=2&&n[1]){var r=n[1]&&n[1].method?n[1].method:"GET";e.requests[o]={request:{payload:t.preparePayload(n[1].body),headers:n[1].headers},type:r,url:n[0],date:new Date}}else e.requests[o]={url:n[0],date:new Date};e.cleanRequests()}},onFetchLoad:function(n,o){if(!e.stopped&&o&&e.requests&&e.requests[o]){try{e.requests[o].success=!0,e.requests[o].response={status:n.status,statusText:"",responseText:""},e.calcRequestTime(o)}catch(i){}try{var r="";n.headers&&void 0!==n.headers.get&&(r=n.headers.get("content-type")),e.isContentTypeSupported(r)?n.text().then((function(r){e.requests[o]&&(e.requests[o].success=!0,e.requests[o].response={status:n.status,statusText:n.statusText,responseText:t.cleanupContentSize(r)}),e.calcRequestTime(o),e.cleanRequests()})).catch((function(t){e.cleanRequests()})):(e.requests[o]&&(e.requests[o].success=!0,e.requests[o].response={status:n.status,statusText:n.statusText,responseText:""}),e.calcRequestTime(o),e.cleanRequests())}catch(i){}}},onFetchFailed:function(t,n){!e.stopped&&n&&e.requests&&e.requests[n]&&(e.requests[n].success=!1,e.calcRequestTime(n),e.cleanRequests())},onOpen:function(t,n){e.stopped||(t&&t.bbRequestId&&n.length>=2&&e.requests&&(e.requests[t.bbRequestId]={type:n[0],url:n[1],date:new Date}),e.cleanRequests())},onSend:function(t,n){e.stopped||(t&&t.bbRequestId&&e.requests&&e.requests[t.bbRequestId]&&(e.requests[t.bbRequestId].request={payload:e.preparePayload(n.length>0?n[0]:"{}"),headers:t.requestHeaders}),e.cleanRequests())},onError:function(t,n){!e.stopped&&e.requests&&t&&t.currentTarget&&t.currentTarget.bbRequestId&&e.requests[t.currentTarget.bbRequestId]&&(e.requests[t.currentTarget.bbRequestId].success=!1,e.calcRequestTime(t.bbRequestId)),e.cleanRequests()},onLoad:function(t,n){if(!e.stopped){if(t&&t.currentTarget&&t.currentTarget.bbRequestId&&e.requests&&e.requests[t.currentTarget.bbRequestId]){var o=t.currentTarget,r=o.responseType,i="<"+r+">";""!==r&&"text"!==r||(i=e.cleanupContentSize(o.responseText)),e.requests[o.bbRequestId].success=!0,e.requests[o.bbRequestId].response={status:o.status,statusText:o.statusText,responseText:i},e.calcRequestTime(o.bbRequestId)}e.cleanRequests()}}})}}},{key:"interceptNetworkRequests",value:function(e){var t,n=this,o=XMLHttpRequest.prototype.open,r=XMLHttpRequest.prototype.send;return void 0===XMLHttpRequest.prototype.gleapSetRequestHeader&&(XMLHttpRequest.prototype.gleapSetRequestHeader=XMLHttpRequest.prototype.setRequestHeader),XMLHttpRequest.prototype.gleapSetRequestHeader&&(XMLHttpRequest.prototype.setRequestHeader=function(e,t){this.requestHeaders||(this.requestHeaders={}),this.requestHeaders&&this.requestHeaders.hasOwnProperty(e)||(this.requestHeaders[e]||(this.requestHeaders[e]=[]),this.requestHeaders[e].push(t),this.gleapSetRequestHeader(e,t))}),XMLHttpRequest.prototype.open=function(){return this.bbRequestId=++n.requestId,e.onOpen&&e.onOpen(this,arguments),e.onLoad&&this.addEventListener("load",e.onLoad.bind(e)),e.onError&&this.addEventListener("error",e.onError.bind(e)),o.apply(this,arguments)},XMLHttpRequest.prototype.send=function(){return e.onSend&&e.onSend(this,arguments),r.apply(this,arguments)},window.fetch&&(t=window.fetch,window.fetch=function(){var o=++n.requestId;return e.onFetch(arguments,o),t.apply(this,arguments).then((function(t){if(t&&"function"==typeof t.clone){var n=t.clone();e.onFetchLoad(n,o)}return t})).catch((function(t){throw e.onFetchFailed(t,o),t}))}),e}},{key:"blobToTextPromise",value:function(e){return new Promise((function(t,n){var o=new FileReader;o.onload=function(e){e&&e.target&&e.target.result?t(e.target.result):n()},o.onerror=function(e){n(e)},o.readAsText(e)}))}}],o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],n&&f(t.prototype,n),o&&f(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();m(v,"instance",void 0);const y=v;var b=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:400,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:400;return new Promise((function(o,r){var i=0===e.indexOf("data:image/jpeg"),a=new Image;a.src=e,a.onerror=function(){r()},a.onload=function(){var e=document.createElement("canvas"),r=t,s=n;t>a.width/1.5&&(r=a.width/1.5),n>a.height/1.5&&(s=a.height/1.5);var l=a.width,c=a.height;l>c?l>r&&(c*=r/l,l=r):c>s&&(l*=s/c,c=s),e.width=l,e.height=c,e.getContext("2d").drawImage(a,0,0,l,c),o(i?e.toDataURL("image/jpeg",.7):e.toDataURL())}}))},w=function(){return!(!/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(navigator.userAgent)&&!/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(navigator.userAgent.substr(0,4)))},k=function(e){if("string"==typeof e||e instanceof String)try{return JSON.parse(e)}catch(t){return{}}return e},x=function(e,t){return e.length>t?e.slice(0,t)+"...":e},S=function(e){try{var t=e.split("."),n=!1,o=t[t.length-2];return"co"!==o&&"com"!==o&&"gv"!==o&&"ac"!==o&&"edu"!==o&&"gov"!==o&&"mil"!==o&&"net"!==o&&"org"!==o||(n=!0),(t=t.slice(n?-3:-2)).join(".")}catch(r){}return e},C=function(e){try{var t=localStorage.getItem("gleap-widget-".concat(e));if(t)return JSON.parse(t)}catch(n){}return null},I=function(e,t){var n="gleap-widget-".concat(e);if(t)try{localStorage.setItem(n,JSON.stringify(t))}catch(o){}else localStorage.removeItem(n)},O=function(e){"complete"===document.readyState||"loaded"===document.readyState||"interactive"===document.readyState?e():document.addEventListener("DOMContentLoaded",(function(){e()}))};function E(e){return E="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},E(e)}function T(e,t){for(var n=0;n=200&&i.status<300)try{var e=i.responseText?JSON.parse(i.responseText):null;o(e)}catch(t){r({status:i.status,statusText:"JSON Parse Error",responseText:i.responseText,error:t})}else r({status:i.status,statusText:i.statusText,responseText:i.responseText})},i.onerror=function(){r({status:0,statusText:"Network Error",responseText:null})},i.send(n?JSON.stringify(n):null)}))}},{key:"_createCacheKey",value:function(e,t){return t?"".concat(e,"::").concat(t):e}},{key:"validateChecklist",value:function(e,t){var n=this,o=this._createCacheKey(e,t),r=this.validationCache.get(o);if(r)return r.status===M?Promise.resolve(r.internalId):Promise.reject(r.error);if(this.validationRequests.has(o))return this.validationRequests.get(o);var i=this._getApiUrl();if(!i){var a=new Error("ChecklistNetworkManager: Gleap API URL not configured.");return this.validationCache.set(o,{status:R,error:a}),Promise.reject(a)}var s="".concat(i,"/outbound/checklists?").concat(this._getQueryParams()),l=this._makeRequest("POST",s,{outboundId:e,sharedKey:t}).then((function(e){if(e&&e.id)return n.validationCache.set(o,{status:M,internalId:e.id}),e.id;var t=new Error("Validation response missing checklist ID.");throw n.validationCache.set(o,{status:R,error:e||t}),t})).catch((function(e){throw n.validationCache.set(o,{status:R,error:e}),e})).finally((function(){n.validationRequests.delete(o)}));return this.validationRequests.set(o,l),l}},{key:"fetchChecklist",value:function(e){var t=this,n=this.fetchCache.get(e);if(n)return n.status===M?Promise.resolve(JSON.parse(JSON.stringify(n.data))):Promise.reject(n.error);if(this.fetchRequests.has(e))return this.fetchRequests.get(e).then((function(e){return JSON.parse(JSON.stringify(e))}));var o=this._getApiUrl();if(!o){var r=new Error("ChecklistNetworkManager: Gleap API URL not configured.");return this.fetchCache.set(e,{status:R,error:r}),Promise.reject(r)}var i="".concat(o,"/outbound/checklists/").concat(e,"?convertTipTap=true&").concat(this._getQueryParams()),a=this._makeRequest("GET",i,null).then((function(n){if(n)return t.fetchCache.set(e,{status:M,data:n}),JSON.parse(JSON.stringify(n));var o=new Error("Empty response received for checklist fetch.");throw t.fetchCache.set(e,{status:R,error:n||o}),o})).catch((function(n){throw t.fetchCache.set(e,{status:R,error:n}),n})).finally((function(){t.fetchRequests.delete(e)}));return this.fetchRequests.set(e,a),a.then((function(e){return JSON.parse(JSON.stringify(e))}))}}],o=[{key:"getInstance",value:function(){return e.instance||(e.instance=new e),e.instance}}],n&&T(t.prototype,n),o&&T(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();L(P,"instance",null);const D=P,N=Math.min,j=Math.max,F=Math.round,B=Math.floor,_=e=>({x:e,y:e}),U={left:"right",right:"left",bottom:"top",top:"bottom"},H={start:"end",end:"start"};function z(e,t,n){return j(e,N(t,n))}function q(e,t){return"function"==typeof e?e(t):e}function W(e){return e.split("-")[0]}function G(e){return e.split("-")[1]}function V(e){return"x"===e?"y":"x"}function J(e){return"y"===e?"height":"width"}function Z(e){return["top","bottom"].includes(W(e))?"y":"x"}function K(e){return V(Z(e))}function Y(e){return e.replace(/start|end/g,(e=>H[e]))}function X(e){return e.replace(/left|right|bottom|top/g,(e=>U[e]))}function $(e){return"number"!=typeof e?function(e){return{top:0,right:0,bottom:0,left:0,...e}}(e):{top:e,right:e,bottom:e,left:e}}function Q(e){return{...e,top:e.y,left:e.x,right:e.x+e.width,bottom:e.y+e.height}}function ee(e,t,n){let{reference:o,floating:r}=e;const i=Z(t),a=K(t),s=J(a),l=W(t),c="y"===i,u=o.x+o.width/2-r.width/2,d=o.y+o.height/2-r.height/2,p=o[s]/2-r[s]/2;let h;switch(l){case"top":h={x:u,y:o.y-r.height};break;case"bottom":h={x:u,y:o.y+o.height};break;case"right":h={x:o.x+o.width,y:d};break;case"left":h={x:o.x-r.width,y:d};break;default:h={x:o.x,y:o.y}}switch(G(t)){case"start":h[a]-=p*(n&&c?-1:1);break;case"end":h[a]+=p*(n&&c?-1:1)}return h}async function te(e,t){var n;void 0===t&&(t={});const{x:o,y:r,platform:i,rects:a,elements:s,strategy:l}=e,{boundary:c="clippingAncestors",rootBoundary:u="viewport",elementContext:d="floating",altBoundary:p=!1,padding:h=0}=q(t,e),f=$(h),m=s[p?"floating"===d?"reference":"floating":d],g=Q(await i.getClippingRect({element:null==(n=await(null==i.isElement?void 0:i.isElement(m)))||n?m:m.contextElement||await(null==i.getDocumentElement?void 0:i.getDocumentElement(s.floating)),boundary:c,rootBoundary:u,strategy:l})),v="floating"===d?{...a.floating,x:o,y:r}:a.reference,y=await(null==i.getOffsetParent?void 0:i.getOffsetParent(s.floating)),b=await(null==i.isElement?void 0:i.isElement(y))&&await(null==i.getScale?void 0:i.getScale(y))||{x:1,y:1},w=Q(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:s,rect:v,offsetParent:y,strategy:l}):v);return{top:(g.top-w.top+f.top)/b.y,bottom:(w.bottom-g.bottom+f.bottom)/b.y,left:(g.left-w.left+f.left)/b.x,right:(w.right-g.right+f.right)/b.x}}const ne=function(e){return void 0===e&&(e=0),{name:"offset",options:e,async fn(t){var n,o;const{x:r,y:i,placement:a,middlewareData:s}=t,l=await async function(e,t){const{placement:n,platform:o,elements:r}=e,i=await(null==o.isRTL?void 0:o.isRTL(r.floating)),a=W(n),s=G(n),l="y"===Z(n),c=["left","top"].includes(a)?-1:1,u=i&&l?-1:1,d=q(t,e);let{mainAxis:p,crossAxis:h,alignmentAxis:f}="number"==typeof d?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...d};return s&&"number"==typeof f&&(h="end"===s?-1*f:f),l?{x:h*u,y:p*c}:{x:p*c,y:h*u}}(t,e);return a===(null==(n=s.offset)?void 0:n.placement)&&null!=(o=s.arrow)&&o.alignmentOffset?{}:{x:r+l.x,y:i+l.y,data:{...l,placement:a}}}}};function oe(e){return ae(e)?(e.nodeName||"").toLowerCase():"#document"}function re(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function ie(e){var t;return null==(t=(ae(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement}function ae(e){return e instanceof Node||e instanceof re(e).Node}function se(e){return e instanceof Element||e instanceof re(e).Element}function le(e){return e instanceof HTMLElement||e instanceof re(e).HTMLElement}function ce(e){return"undefined"!=typeof ShadowRoot&&(e instanceof ShadowRoot||e instanceof re(e).ShadowRoot)}function ue(e){const{overflow:t,overflowX:n,overflowY:o,display:r}=me(e);return/auto|scroll|overlay|hidden|clip/.test(t+o+n)&&!["inline","contents"].includes(r)}function de(e){return["table","td","th"].includes(oe(e))}function pe(e){const t=he(),n=me(e);return"none"!==n.transform||"none"!==n.perspective||!!n.containerType&&"normal"!==n.containerType||!t&&!!n.backdropFilter&&"none"!==n.backdropFilter||!t&&!!n.filter&&"none"!==n.filter||["transform","perspective","filter"].some((e=>(n.willChange||"").includes(e)))||["paint","layout","strict","content"].some((e=>(n.contain||"").includes(e)))}function he(){return!("undefined"==typeof CSS||!CSS.supports)&&CSS.supports("-webkit-backdrop-filter","none")}function fe(e){return["html","body","#document"].includes(oe(e))}function me(e){return re(e).getComputedStyle(e)}function ge(e){return se(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function ve(e){if("html"===oe(e))return e;const t=e.assignedSlot||e.parentNode||ce(e)&&e.host||ie(e);return ce(t)?t.host:t}function ye(e){const t=ve(e);return fe(t)?e.ownerDocument?e.ownerDocument.body:e.body:le(t)&&ue(t)?t:ye(t)}function be(e,t,n){var o;void 0===t&&(t=[]),void 0===n&&(n=!0);const r=ye(e),i=r===(null==(o=e.ownerDocument)?void 0:o.body),a=re(r);return i?t.concat(a,a.visualViewport||[],ue(r)?r:[],a.frameElement&&n?be(a.frameElement):[]):t.concat(r,be(r,[],n))}function we(e){const t=me(e);let n=parseFloat(t.width)||0,o=parseFloat(t.height)||0;const r=le(e),i=r?e.offsetWidth:n,a=r?e.offsetHeight:o,s=F(n)!==i||F(o)!==a;return s&&(n=i,o=a),{width:n,height:o,$:s}}function ke(e){return se(e)?e:e.contextElement}function xe(e){const t=ke(e);if(!le(t))return _(1);const n=t.getBoundingClientRect(),{width:o,height:r,$:i}=we(t);let a=(i?F(n.width):n.width)/o,s=(i?F(n.height):n.height)/r;return a&&Number.isFinite(a)||(a=1),s&&Number.isFinite(s)||(s=1),{x:a,y:s}}const Se=_(0);function Ce(e){const t=re(e);return he()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:Se}function Ie(e,t,n,o){void 0===t&&(t=!1),void 0===n&&(n=!1);const r=e.getBoundingClientRect(),i=ke(e);let a=_(1);t&&(o?se(o)&&(a=xe(o)):a=xe(e));const s=function(e,t,n){return void 0===t&&(t=!1),!(!n||t&&n!==re(e))&&t}(i,n,o)?Ce(i):_(0);let l=(r.left+s.x)/a.x,c=(r.top+s.y)/a.y,u=r.width/a.x,d=r.height/a.y;if(i){const e=re(i),t=o&&se(o)?re(o):o;let n=e,r=n.frameElement;for(;r&&o&&t!==n;){const e=xe(r),t=r.getBoundingClientRect(),o=me(r),i=t.left+(r.clientLeft+parseFloat(o.paddingLeft))*e.x,a=t.top+(r.clientTop+parseFloat(o.paddingTop))*e.y;l*=e.x,c*=e.y,u*=e.x,d*=e.y,l+=i,c+=a,n=re(r),r=n.frameElement}}return Q({width:u,height:d,x:l,y:c})}const Oe=[":popover-open",":modal"];function Ee(e){return Oe.some((t=>{try{return e.matches(t)}catch(n){return!1}}))}function Te(e){return Ie(ie(e)).left+ge(e).scrollLeft}function Le(e,t,n){let o;if("viewport"===t)o=function(e,t){const n=re(e),o=ie(e),r=n.visualViewport;let i=o.clientWidth,a=o.clientHeight,s=0,l=0;if(r){i=r.width,a=r.height;const e=he();(!e||e&&"fixed"===t)&&(s=r.offsetLeft,l=r.offsetTop)}return{width:i,height:a,x:s,y:l}}(e,n);else if("document"===t)o=function(e){const t=ie(e),n=ge(e),o=e.ownerDocument.body,r=j(t.scrollWidth,t.clientWidth,o.scrollWidth,o.clientWidth),i=j(t.scrollHeight,t.clientHeight,o.scrollHeight,o.clientHeight);let a=-n.scrollLeft+Te(e);const s=-n.scrollTop;return"rtl"===me(o).direction&&(a+=j(t.clientWidth,o.clientWidth)-r),{width:r,height:i,x:a,y:s}}(ie(e));else if(se(t))o=function(e,t){const n=Ie(e,!0,"fixed"===t),o=n.top+e.clientTop,r=n.left+e.clientLeft,i=le(e)?xe(e):_(1);return{width:e.clientWidth*i.x,height:e.clientHeight*i.y,x:r*i.x,y:o*i.y}}(t,n);else{const n=Ce(e);o={...t,x:t.x-n.x,y:t.y-n.y}}return Q(o)}function Ae(e,t){const n=ve(e);return!(n===t||!se(n)||fe(n))&&("fixed"===me(n).position||Ae(n,t))}function Me(e,t,n){const o=le(t),r=ie(t),i="fixed"===n,a=Ie(e,!0,i,t);let s={scrollLeft:0,scrollTop:0};const l=_(0);if(o||!o&&!i)if(("body"!==oe(t)||ue(r))&&(s=ge(t)),o){const e=Ie(t,!0,i,t);l.x=e.x+t.clientLeft,l.y=e.y+t.clientTop}else r&&(l.x=Te(r));return{x:a.left+s.scrollLeft-l.x,y:a.top+s.scrollTop-l.y,width:a.width,height:a.height}}function Re(e,t){return le(e)&&"fixed"!==me(e).position?t?t(e):e.offsetParent:null}function Pe(e,t){const n=re(e);if(!le(e)||Ee(e))return n;let o=Re(e,t);for(;o&&de(o)&&"static"===me(o).position;)o=Re(o,t);return o&&("html"===oe(o)||"body"===oe(o)&&"static"===me(o).position&&!pe(o))?n:o||function(e){let t=ve(e);for(;le(t)&&!fe(t);){if(pe(t))return t;t=ve(t)}return null}(e)||n}const De={convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{elements:t,rect:n,offsetParent:o,strategy:r}=e;const i="fixed"===r,a=ie(o),s=!!t&&Ee(t.floating);if(o===a||s&&i)return n;let l={scrollLeft:0,scrollTop:0},c=_(1);const u=_(0),d=le(o);if((d||!d&&!i)&&(("body"!==oe(o)||ue(a))&&(l=ge(o)),le(o))){const e=Ie(o);c=xe(o),u.x=e.x+o.clientLeft,u.y=e.y+o.clientTop}return{width:n.width*c.x,height:n.height*c.y,x:n.x*c.x-l.scrollLeft*c.x+u.x,y:n.y*c.y-l.scrollTop*c.y+u.y}},getDocumentElement:ie,getClippingRect:function(e){let{element:t,boundary:n,rootBoundary:o,strategy:r}=e;const i="clippingAncestors"===n?function(e,t){const n=t.get(e);if(n)return n;let o=be(e,[],!1).filter((e=>se(e)&&"body"!==oe(e))),r=null;const i="fixed"===me(e).position;let a=i?ve(e):e;for(;se(a)&&!fe(a);){const t=me(a),n=pe(a);n||"fixed"!==t.position||(r=null),(i?!n&&!r:!n&&"static"===t.position&&r&&["absolute","fixed"].includes(r.position)||ue(a)&&!n&&Ae(e,a))?o=o.filter((e=>e!==a)):r=t,a=ve(a)}return t.set(e,o),o}(t,this._c):[].concat(n),a=[...i,o],s=a[0],l=a.reduce(((e,n)=>{const o=Le(t,n,r);return e.top=j(o.top,e.top),e.right=N(o.right,e.right),e.bottom=N(o.bottom,e.bottom),e.left=j(o.left,e.left),e}),Le(t,s,r));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}},getOffsetParent:Pe,getElementRects:async function(e){const t=this.getOffsetParent||Pe,n=this.getDimensions;return{reference:Me(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,...await n(e.floating)}}},getClientRects:function(e){return Array.from(e.getClientRects())},getDimensions:function(e){const{width:t,height:n}=we(e);return{width:t,height:n}},getScale:xe,isElement:se,isRTL:function(e){return"rtl"===me(e).direction}};function Ne(e,t,n,o){void 0===o&&(o={});const{ancestorScroll:r=!0,ancestorResize:i=!0,elementResize:a="function"==typeof ResizeObserver,layoutShift:s="function"==typeof IntersectionObserver,animationFrame:l=!1}=o,c=ke(e),u=r||i?[...c?be(c):[],...be(t)]:[];u.forEach((e=>{r&&e.addEventListener("scroll",n,{passive:!0}),i&&e.addEventListener("resize",n)}));const d=c&&s?function(e,t){let n,o=null;const r=ie(e);function i(){var e;clearTimeout(n),null==(e=o)||e.disconnect(),o=null}return function a(s,l){void 0===s&&(s=!1),void 0===l&&(l=1),i();const{left:c,top:u,width:d,height:p}=e.getBoundingClientRect();if(s||t(),!d||!p)return;const h={rootMargin:-B(u)+"px "+-B(r.clientWidth-(c+d))+"px "+-B(r.clientHeight-(u+p))+"px "+-B(c)+"px",threshold:j(0,N(1,l))||1};let f=!0;function m(e){const t=e[0].intersectionRatio;if(t!==l){if(!f)return a();t?a(!1,t):n=setTimeout((()=>{a(!1,1e-7)}),100)}f=!1}try{o=new IntersectionObserver(m,{...h,root:r.ownerDocument})}catch(g){o=new IntersectionObserver(m,h)}o.observe(e)}(!0),i}(c,n):null;let p,h=-1,f=null;a&&(f=new ResizeObserver((e=>{let[o]=e;o&&o.target===c&&f&&(f.unobserve(t),cancelAnimationFrame(h),h=requestAnimationFrame((()=>{var e;null==(e=f)||e.observe(t)}))),n()})),c&&!l&&f.observe(c),f.observe(t));let m=l?Ie(e):null;return l&&function t(){const o=Ie(e);!m||o.x===m.x&&o.y===m.y&&o.width===m.width&&o.height===m.height||n();m=o,p=requestAnimationFrame(t)}(),n(),()=>{var e;u.forEach((e=>{r&&e.removeEventListener("scroll",n),i&&e.removeEventListener("resize",n)})),null==d||d(),null==(e=f)||e.disconnect(),f=null,l&&cancelAnimationFrame(p)}}const je=function(e){return void 0===e&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:o,placement:r}=t,{mainAxis:i=!0,crossAxis:a=!1,limiter:s={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...l}=q(e,t),c={x:n,y:o},u=await te(t,l),d=Z(W(r)),p=V(d);let h=c[p],f=c[d];if(i){const e="y"===p?"bottom":"right";h=z(h+u["y"===p?"top":"left"],h,h-u[e])}if(a){const e="y"===d?"bottom":"right";f=z(f+u["y"===d?"top":"left"],f,f-u[e])}const m=s.fn({...t,[p]:h,[d]:f});return{...m,data:{x:m.x-n,y:m.y-o}}}}},Fe=function(e){return void 0===e&&(e={}),{name:"flip",options:e,async fn(t){var n,o;const{placement:r,middlewareData:i,rects:a,initialPlacement:s,platform:l,elements:c}=t,{mainAxis:u=!0,crossAxis:d=!0,fallbackPlacements:p,fallbackStrategy:h="bestFit",fallbackAxisSideDirection:f="none",flipAlignment:m=!0,...g}=q(e,t);if(null!=(n=i.arrow)&&n.alignmentOffset)return{};const v=W(r),y=W(s)===s,b=await(null==l.isRTL?void 0:l.isRTL(c.floating)),w=p||(y||!m?[X(s)]:function(e){const t=X(e);return[Y(e),t,Y(t)]}(s));p||"none"===f||w.push(...function(e,t,n,o){const r=G(e);let i=function(e,t,n){const o=["left","right"],r=["right","left"],i=["top","bottom"],a=["bottom","top"];switch(e){case"top":case"bottom":return n?t?r:o:t?o:r;case"left":case"right":return t?i:a;default:return[]}}(W(e),"start"===n,o);return r&&(i=i.map((e=>e+"-"+r)),t&&(i=i.concat(i.map(Y)))),i}(s,m,f,b));const k=[s,...w],x=await te(t,g),S=[];let C=(null==(o=i.flip)?void 0:o.overflows)||[];if(u&&S.push(x[v]),d){const e=function(e,t,n){void 0===n&&(n=!1);const o=G(e),r=K(e),i=J(r);let a="x"===r?o===(n?"end":"start")?"right":"left":"start"===o?"bottom":"top";return t.reference[i]>t.floating[i]&&(a=X(a)),[a,X(a)]}(r,a,b);S.push(x[e[0]],x[e[1]])}if(C=[...C,{placement:r,overflows:S}],!S.every((e=>e<=0))){var I,O;const e=((null==(I=i.flip)?void 0:I.index)||0)+1,t=k[e];if(t)return{data:{index:e,overflows:C},reset:{placement:t}};let n=null==(O=C.filter((e=>e.overflows[0]<=0)).sort(((e,t)=>e.overflows[1]-t.overflows[1]))[0])?void 0:O.placement;if(!n)switch(h){case"bestFit":{var E;const e=null==(E=C.map((e=>[e.placement,e.overflows.filter((e=>e>0)).reduce(((e,t)=>e+t),0)])).sort(((e,t)=>e[1]-t[1]))[0])?void 0:E[0];e&&(n=e);break}case"initialPlacement":n=s}if(r!==n)return{reset:{placement:n}}}return{}}}},Be=e=>({name:"arrow",options:e,async fn(t){const{x:n,y:o,placement:r,rects:i,platform:a,elements:s,middlewareData:l}=t,{element:c,padding:u=0}=q(e,t)||{};if(null==c)return{};const d=$(u),p={x:n,y:o},h=K(r),f=J(h),m=await a.getDimensions(c),g="y"===h,v=g?"top":"left",y=g?"bottom":"right",b=g?"clientHeight":"clientWidth",w=i.reference[f]+i.reference[h]-p[h]-i.floating[f],k=p[h]-i.reference[h],x=await(null==a.getOffsetParent?void 0:a.getOffsetParent(c));let S=x?x[b]:0;S&&await(null==a.isElement?void 0:a.isElement(x))||(S=s.floating[b]||i.floating[f]);const C=w/2-k/2,I=S/2-m[f]/2-1,O=N(d[v],I),E=N(d[y],I),T=O,L=S-m[f]-E,A=S/2-m[f]/2+C,M=z(T,A,L),R=!l.arrow&&null!=G(r)&&A!==M&&i.reference[f]/2-(A{const o=new Map,r={platform:De,...n},i={...r.platform,_c:o};return(async(e,t,n)=>{const{placement:o="bottom",strategy:r="absolute",middleware:i=[],platform:a}=n,s=i.filter(Boolean),l=await(null==a.isRTL?void 0:a.isRTL(t));let c=await a.getElementRects({reference:e,floating:t,strategy:r}),{x:u,y:d}=ee(c,o,l),p=o,h={},f=0;for(let m=0;me.length)&&(t=e.length);for(var n=0,o=new Array(t);n'):""),i.appendChild(a),t.repositionHotspot(e,n),r=a,t.elementToTooltipMap.set(e,n)}else r=e;var s=t.createTooltip(r,n.html,n);t.elementToFloatingUIMap.set(e,s)}}})),Ge(this,"updateFilteredTooltips",(function(){t.filteredTooltips=t.getFilteredTooltips(),t.checkForTooltips()})),Ge(this,"getFilteredTooltips",(function(){if(!t.tooltips)return[];var e=window.location.href;return t.tooltips.filter((function(t){return!t.page||0===t.page.length||!!Ue(e,t.page,t.pageType)}))})),Ge(this,"checkForTooltips",(function(){for(var e=0;e0&&this.filteredTooltips.forEach((function(n){n.selector&&e.matches(n.selector)&&t.linkTooltip(e,n)}))}},{key:"start",value:function(){var e=this,t=this;if(window){var n,o,r,i=(n=t.updateHotspotPositions.bind(t),o=250,r=null,function(){if(!r){var e=this,t=arguments;r=setTimeout((function(){n.call.apply(n,[e].concat(ze(t))),r=null}),o)}});window.addEventListener("resize",i),window.requestAnimationFrame((function(){e.observer=new MutationObserver((function(n){t.lastUrl!==window.location.href&&(t.lastUrl=window.location.href,t.filteredTooltips=t.getFilteredTooltips()),n.forEach((function(n){if("attributes"===n.type){var o=n.target;o.nodeType===Node.ELEMENT_NODE&&(o.querySelector("[data-gleap-tooltip-hotspot]")||o.hasAttribute("data-gleap-tooltip-mode")||o.hasAttribute("data-gleap-tooltip"))&&t.updateHotspotPositions()}n.addedNodes.forEach((function(e){e.nodeType===Node.ELEMENT_NODE&&t.processNodeInsertion(e)})),n.removedNodes.forEach((function(t){if(t.nodeType===Node.ELEMENT_NODE&&e.elementToFloatingUIMap.has(t)){var n=e.elementToFloatingUIMap.get(t);n&&(n.tooltip&&n.tooltip.remove(),n.cleanup(),e.elementToFloatingUIMap.delete(t))}e.elementToTooltipMap.has(t)&&e.elementToTooltipMap.delete(t)}))}))})),e.observer.observe(document.body,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["style","class"]})}))}}},{key:"updateHotspotPositions",value:function(){var e=this;document.querySelectorAll("[data-gleap-tooltip-mode='hotspot']").forEach((function(t){var n=e.elementToTooltipMap.get(t);n&&e.repositionHotspot(t,n)}))}},{key:"createTooltip",value:function(e,t,n){var o=document.createElement("div");o.className="gleap-tooltip",o.innerHTML='
\n '.concat(t,'\n
\n \n \n \n
\n
'),document.body.appendChild(o);var r,i=o.querySelector(".gleap-tooltip-arrow"),a=Ne(e,o,(function(){_e(e,o,{placement:"left"===n.posX?"left":"right",middleware:[ne(10),Fe(),je(),Be({element:i})]}).then((function(e){var t=e.x,n=e.y,r=e.middlewareData,a=e.placement;try{if(Object.assign(o.style,{left:"".concat(t,"px"),top:"".concat(n,"px")}),r.arrow){var s={left:"",top:"",transform:""};null!=r.arrow.x&&(s.left="".concat(r.arrow.x,"px"),"bottom"===a?(s.transform="translateY(-7px) rotate(180deg)",s.top="".concat(-20,"px")):"top"===a&&(s.transform="translateY(7px) rotate(0deg)",s.top="100%")),null!=r.arrow.y&&(s.top="".concat(r.arrow.y,"px"),"right"===a?(s.transform="translateX(-7px) rotate(90deg)",s.left="".concat(-20,"px")):"left"===a&&(s.transform="translateX(7px) rotate(270deg)",s.left="100%")),Object.assign(i.style,s)}}catch(l){}}))}));function s(){clearTimeout(r),o.style.visibility="visible",o.style.opacity="1",o.style.pointerEvents="auto"}function l(){r=setTimeout((function(){o.style.opacity="0",setTimeout((function(){o.style.visibility="hidden",o.style.pointerEvents="none"}),200)}),500)}return e.addEventListener("mouseenter",s),e.addEventListener("mouseleave",l),o.addEventListener("mouseenter",s),o.addEventListener("mouseleave",l),{cleanup:a,tooltip:o}}},{key:"canEmbed",value:function(e){var t=new Set(["area","base","br","embed","hr","img","input","source","track","wbr","canvas"]);return e&&!t.has(e.tagName.toLowerCase())}},{key:"destroy",value:function(){this.observer&&(this.observer.disconnect(),this.observer=null),this.resizeListener&&(window.removeEventListener("resize",this.resizeListener),this.resizeListener=null),document.querySelectorAll(".gleap-tooltip").forEach((function(e){return e.remove()})),document.querySelectorAll("[data-gleap-tooltip-anchor]").forEach((function(e){return e.remove()})),document.querySelectorAll("[data-gleap-tooltip-hotspot]").forEach((function(e){return e.remove()})),document.querySelectorAll("[data-gleap-tooltip]").forEach((function(e){return e.removeAttribute("data-gleap-tooltip")})),document.querySelectorAll("[data-gleap-tooltip-mode]").forEach((function(e){return e.removeAttribute("data-gleap-tooltip-mode")})),this.elementToFloatingUIMap=new WeakMap,this.elementToTooltipMap=new WeakMap,this.tooltips=[],this.filteredTooltips=[]}},{key:"repositionHotspot",value:function(e,t){if(e&&t){var n=e.getAttribute("data-gleap-tooltip");if(n){var o=document.querySelector('[data-gleap-tooltip-hotspot="'.concat(n,'"]'));if(o){t.posX||(t.posX="right"),t.posY||(t.posY="center"),t.offsetX||(t.offsetX=4),t.offsetY||(t.offsetY=0);var r=e.getBoundingClientRect();try{var i=document.createRange();i.selectNodeContents(e);var a=window.getComputedStyle(e),s=i.getBoundingClientRect().width+parseFloat(a.paddingLeft);s0&&void 0!==arguments[0]?arguments[0]:0,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];t.session&&t.session.gleapHash&&xn.notifyEvent("unregister-pushmessage-group","gleapuser-".concat(t.session.gleapHash));try{I("session-".concat(t.sdkKey),null)}catch(r){}if(t.useCookies)try{!function(e){try{var t=S(window.location.host.split(":")[0]);document.cookie=e+"=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT; Domain="+t}catch(r){}}("session-".concat(t.sdkKey))}catch(r){}if(t.ready=!1,t.session={gleapId:null,gleapHash:null,name:"",email:"",userId:"",phone:"",value:0},Vt.getInstance().sendMessage({name:"session-cleared"},!0),Mh.getInstance().clearAllNotifications(!1),Mh.getInstance().setNotificationCount(0),Bh.getInstance().removeBannerUI(),Gh.getInstance().hideModal(),n&&!isNaN(e)){var o=10*Math.pow(e,2);setTimeout((function(){t.startSession(e+1)}),1e3*o)}})),$e(this,"validateSession",(function(e){var n;if(e&&e.gleapId){var o=!1;(null===(n=t.session)||void 0===n?void 0:n.gleapId)!==(null==e?void 0:e.gleapId)&&(o=!0),t.session&&t.session.gleapHash&&xn.notifyEvent("unregister-pushmessage-group","gleapuser-".concat(t.session.gleapHash)),I("session-".concat(t.sdkKey),e),t.useCookies&&function(e,t,n){try{var o="";if(n){var r=new Date;r.setTime(r.getTime()+24*n*60*60*1e3),o="; expires="+r.toUTCString()}var i=S(window.location.host.split(":")[0]);document.cookie=e+"="+(t||"")+o+"; path=/; domain="+i}catch(a){}}("session-".concat(t.sdkKey),encodeURIComponent(JSON.stringify(e)),365),t.session=e,t.ready=!0,t.session&&t.session.gleapHash&&xn.notifyEvent("register-pushmessage-group","gleapuser-".concat(t.session.gleapHash)),o&&(setTimeout((function(){D.getInstance().clearCache(),it.getInstance().restart();var e=Je.getInstance();if(e){try{e.destroy()}catch(t){}e.load()}}),0),"function"==typeof window.dispatchEvent&&window.dispatchEvent(new CustomEvent("session-updated"))),t.notifySessionReady()}})),$e(this,"startSession",(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;try{if(t.useCookies){var n=function(e){try{for(var t=e+"=",n=document.cookie.split(";"),o=0;o0)){var r=C("session-".concat(t.sdkKey));r&&t.validateSession(r)}var i=t,a=new XMLHttpRequest;a.open("POST",i.apiUrl+"/sessions"),a.setRequestHeader("Content-Type","application/json;charset=UTF-8"),a.setRequestHeader("Api-Token",i.sdkKey);try{t.session&&t.session.gleapId&&t.session.gleapHash&&(a.setRequestHeader("Gleap-Id",t.session.gleapId),a.setRequestHeader("Gleap-Hash",t.session.gleapHash))}catch(s){}a.onreadystatechange=function(t){if(4===a.readyState)if(200===a.status||201===a.status)try{var n=JSON.parse(a.responseText);i.validateSession(n)}catch(s){}else 429!==a.status&&i.clearSession(e,!0)},a.send(JSON.stringify({lang:gh.getInstance().getActiveLanguage()}))})),$e(this,"checkIfSessionNeedsUpdate",(function(e,n){if(!t.session||!t.session.userId||!e)return!0;try{if(t.session.userId.toString()!==e.toString())return!0}catch(o){}return t.checkIfSessionDataNeedsUpdate(n)})),$e(this,"checkIfSessionDataNeedsUpdate",(function(e){if(e)for(var n=Object.keys(e),o=0;o0)for(var e=0;e2)&&0!==t.streamedEventArray.length&&t.socket&&t.socket.readyState===t.socket.OPEN){var e=t;t.streamingEvents=!0;var n=new XMLHttpRequest;n.open("POST",et.getInstance().apiUrl+"/sessions/ping"),n.setRequestHeader("Content-Type","application/json;charset=UTF-8"),et.getInstance().injectSession(n),n.onerror=function(){e.errorCount++,e.streamingEvents=!1},n.onreadystatechange=function(t){4===n.readyState&&(200===n.status||201===n.status?e.errorCount=0:e.errorCount++,e.streamingEvents=!1)};var o=Xt.getInstance().getSessionDuration();n.send(JSON.stringify({time:o,events:t.streamedEventArray,opened:Vt.getInstance().isOpened(),type:"js",sdkVersion:"14.8.11",ws:!0})),t.streamedEventArray=[]}})),this.handleOpenBound=this.handleOpen.bind(this),this.handleErrorBound=this.handleError.bind(this),this.handleMessageBound=this.handleMessage.bind(this),this.handleCloseBound=this.handleClose.bind(this)}var t,n,o;return t=e,o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],(n=[{key:"cleanupWebSocket",value:function(){this.connectionTimeout&&(clearTimeout(this.connectionTimeout),this.connectionTimeout=null),this.pingWS&&clearInterval(this.pingWS),this.socket&&(this.socket.removeEventListener("open",this.handleOpenBound),this.socket.removeEventListener("error",this.handleErrorBound),this.socket.removeEventListener("message",this.handleMessageBound),this.socket.removeEventListener("close",this.handleCloseBound),this.socket.close(),this.socket=null)}},{key:"initWebSocket",value:function(){this.cleanupWebSocket(),this.connectedWebSocketGleapId=et.getInstance().session.gleapId,et.getInstance().session&&et.getInstance().sdkKey&&(this.socket=new WebSocket("".concat(et.getInstance().wsApiUrl,"?gleapId=").concat(et.getInstance().session.gleapId,"&gleapHash=").concat(et.getInstance().session.gleapHash,"&apiKey=").concat(et.getInstance().sdkKey,"&sdkVersion=").concat("14.8.11")),this.socket.addEventListener("open",this.handleOpenBound),this.socket.addEventListener("message",this.handleMessageBound),this.socket.addEventListener("error",this.handleErrorBound),this.socket.addEventListener("close",this.handleCloseBound))}},{key:"handleOpen",value:function(e){var t=this;this.pingWS=setInterval((function(){t.socket.readyState===t.socket.OPEN&&(t.socket.send("PING"),t.socket.send(9))}),1e4),this.connectionTimeout&&(clearTimeout(this.connectionTimeout),this.connectionTimeout=null)}},{key:"handleMessage",value:function(e){this.processMessage(JSON.parse(e.data))}},{key:"handleError",value:function(e){}},{key:"handleClose",value:function(e){var t=this;setTimeout((function(){t.initWebSocket()}),5e3)}},{key:"processMessage",value:function(e){try{if("update"===e.name){var t=e.data,n=t.a,o=t.u,r=Vt.getInstance().isOpened();if(n){var i=["banner","modal"],a=n.filter((function(e){var t;return!r||i.includes(null==e||null===(t=e.actionType)||void 0===t?void 0:t.toLowerCase())}));_m.getInstance().performActions(a)}null!=o&&Mh.getInstance().setNotificationCount(o)}"checklist"===e.name&&null!=e&&e.data&&window&&"function"==typeof window.dispatchEvent&&window.dispatchEvent(new CustomEvent("checkListUpdate",{detail:e.data}))}catch(s){}}},{key:"getEventArray",value:function(){return this.eventArray}},{key:"stop",value:function(){this.cleanupMainLoop()}},{key:"resetErrorCountLoop",value:function(){var e=this;setInterval((function(){e.errorCount=0}),6e4)}},{key:"cleanupMainLoop",value:function(){this.mainLoopTimeout&&(clearInterval(this.mainLoopTimeout),this.mainLoopTimeout=null)}},{key:"restart",value:function(){this.connectedWebSocketGleapId!==et.getInstance().session.gleapId&&this.initWebSocket(),this.cleanupMainLoop(),this.trackInitialEvents(),this.runEventStreamLoop()}},{key:"start",value:function(){this.startPageListener(),this.resetErrorCountLoop()}},{key:"trackInitialEvents",value:function(){e.getInstance().logEvent("sessionStarted"),e.getInstance().logCurrentPage()}},{key:"logCurrentPage",value:function(){if(!_m.getInstance().disablePageTracking){var e=window.location.href;e&&e!==this.lastUrl&&(this.lastUrl=e,this.logEvent("pageView",{page:e}))}}},{key:"startPageListener",value:function(){var e=this;setInterval((function(){e.logCurrentPage()}),1e3)}},{key:"logEvent",value:function(e,t){var n={name:e,date:new Date};t&&(n.data=k(t)),this.eventArray.push(n),this.streamedEventArray.push(n),this.eventArray.length>this.eventMaxLength&&this.eventArray.shift(),this.streamedEventArray.length>this.eventMaxLength&&this.streamedEventArray.shift()}}])&&nt(t.prototype,n),o&&nt(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function at(e){return at="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},at(e)}function st(e,t){for(var n=0;n0)for(var e=0;e=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var l=o.call(a,"catchLoc"),c=o.call(a,"finallyLoc");if(l&&c){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&o.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),L(n),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var o=n.completion;if("throw"===o.type){var r=o.arg;L(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,o){return this.delegate={iterator:M(t),resultName:n,nextLoc:o},"next"===this.method&&(this.arg=e),g}},t}function ft(e,t,n,o,r,i,a){try{var s=e[i](a),l=s.value}catch(c){return void n(c)}s.done?t(l):Promise.resolve(l).then(o,r)}function mt(e){return function(){var t=this,n=arguments;return new Promise((function(o,r){var i=e.apply(t,n);function a(e){ft(i,o,r,a,s,"next",e)}function s(e){ft(i,o,r,a,s,"throw",e)}a(void 0)}))}}var gt=function(e){var t="",n=window.document.doctype;if(n&&(t=""),e&&e.childNodes&&e.childNodes.length>0)for(var o=0;o1?t-1:0),r=1;r0||t.scrollLeft>0)&&(s.setAttribute("bb-scrollpos",!0),s.setAttribute("bb-scrolltop",t.scrollTop),s.setAttribute("bb-scrollleft",t.scrollLeft)),"SELECT"!==d&&"TEXTAREA"!==d&&"INPUT"!==d||(h=t.value,("value"===t.getAttribute("gleap-ignore")||t.classList.contains("gl-mask"))&&(h=new Array(h.length+1).join("*")),s.setAttribute("bb-data-value",h),"checkbox"!==t.type&&"radio"!==t.type||!t.checked||s.setAttribute("bb-data-checked",!0))),r.appendChild(s),!t.shadowRoot){e.next=29;break}return f=n,n++,e.next=27,a(t.shadowRoot.firstChild,s,f);case 27:Ct(t.shadowRoot,s,f),void 0!==s.setAttribute&&s.setAttribute("bb-shadow-parent",f);case 29:return e.next=31,a(t.firstChild,s);case 31:case"end":return e.stop()}}),e,null,[[7,17]])})));return function(t,n,o){return e.apply(this,arguments)}}(),r=document.createDocumentFragment(),e.next=5,o(t,r);case 5:return(i=r.querySelector("head"))||(i=r),Ct(window.document,i),e.abrupt("return",r);case 9:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),Et=function(e){return new Promise(function(){var t=mt(ht().mark((function t(n,o){var r,i,a,s,l,c,u,d,p,h,f,m,g,v,y;return ht().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:for(r=window.document.querySelectorAll("style, link"),i=0;i0){for(c=l.childNodes;c.length>0;)l.parentNode.insertBefore(c[0],l);l.remove()}for(u=a.querySelectorAll("script, noscript"),i=0;i0?r.innerHTML=n.formatTime(e):(r.innerHTML="2:00",n.stopScreenRecording())}),1e3),this.mediaRecorder.ondataavailable=function(e){e.data.size>0&&o.push(e.data)},t.getVideoTracks()[0].onended=function(){n.prepareRecording(o)},this.mediaRecorder.onstop=function(){n.prepareRecording(o)},this.mediaRecorder.start(200),n.rerender()})),At(this,"prepareRecording",(function(e){var t=new Blob(e,{type:this.getSupportedMimeType()}),n=this.getSupportedMimeType(),o=n.includes("mp4")?"mp4":"webm";this.file=new File([t],"screen-recording.".concat(o),{type:n});var r=document.querySelector(".bb-capture-preview video");r&&(r.src=URL.createObjectURL(t),this.audioAvailable=!0,this.isRecording=!1,this.rerender())})),this.rerender=t,this.permissionErrorText=n,navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia||(this.available=!1),setTimeout((function(){o.rerender()}),100)}var t,n,o;return t=e,(n=[{key:"getSupportedMimeType",value:function(){for(var e=0,t=["video/webm","audio/webm","video/webm;codecs=vp8","video/webm;codecs=daala","video/webm;codecs=h264","audio/webm;codecs=opus","video/mp4"];e0&&(e.tags=t),this.excludeData)for(var n=Object.keys(this.excludeData),o=0;oe.length)&&(t=e.length);for(var n=0,o=new Array(t);n0)if(t){var n=window.open(e,"_blank");n&&n.focus()}else window.location.href=e})),Wt(this,"autoWhiteListCookieManager",(function(){window&&window.cmp_block_ignoredomains&&window.cmp_block_ignoredomains.concat(["messenger-app.gleap.io"])})),Wt(this,"injectFrame",(function(){t.injectedFrame||(t.injectedFrame=!0,t.autoWhiteListCookieManager(),O((function(){dt.getInstance().onConfigLoaded((function(){dt.getInstance().applyStylesFromConfig();var e=document.createElement("div");e.className="gleap-frame-container gleap-frame-container--hidden gl-block",e.innerHTML='
'),document.body.appendChild(e),t.gleapFrameContainer=e,t.gleapFrame=document.querySelector(".gleap-frame"),t.updateFrameStyle(),"widget"===t.appMode&&t.showFrameContainer(!0)}))})))})),Wt(this,"showImage",(function(e){O((function(){var t=document.createElement("div");t.className="gleap-image-view",t.innerHTML='
\n \n
'),document.body.appendChild(t);var n=function(){t.remove()};t.querySelector(".gleap-image-view-close").addEventListener("click",(function(){n()})),t.addEventListener("click",(function(e){e.target===t&&n()}))}))})),Wt(this,"updateFrameStyle",(function(){if(t.gleapFrameContainer){for(var e="gleap-frame-container--survey",n="gleap-frame-container--extended",o="gleap-frame-container--survey-full",r="gleap-frame-container--classic",i="gleap-frame-container--classic-left",s="gleap-frame-container--modern-left",l="gleap-frame-container--no-button",c=[r,i,n,s,l,e,o],u=0;u0&&void 0!==arguments[0]&&arguments[0];"survey_web"!==this.appMode&&(this.hideMarkerManager(),this.gleapFrameContainer&&(this.gleapFrameContainer.classList.add("gleap-frame-container--hidden"),this.gleapFrameContainer.classList.remove("gleap-frame-container--animate")),e&&this.sendMessage({name:"reset-routes",data:{}}),this.widgetOpened=!1,this.updateWidgetStatus(),a.getInstance().updateFeedbackButtonState(),xn.notifyEvent("close"),Mh.getInstance().reloadNotificationsFromCache(),this.unregisterEscListener(),"undefined"!=typeof window&&void 0!==window.focus&&window.focus())}},{key:"sendMessage",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];try{this.gleapFrame=document.querySelector(".gleap-frame"),this.comReady&&this.gleapFrame&&this.gleapFrame.contentWindow?this.gleapFrame.contentWindow.postMessage(JSON.stringify(e),"*"):t&&this.queue.push(e)}catch(n){}}},{key:"sendSessionUpdate",value:function(){this.sendMessage({name:"session-update",data:{sessionData:et.getInstance().getSession(),apiUrl:et.getInstance().apiUrl,sdkKey:et.getInstance().sdkKey}})}},{key:"sendConfigUpdate",value:function(){this.comReady&&(this.sendMessage({name:"config-update",data:{config:dt.getInstance().getFlowConfig(),aiTools:dt.getInstance().getAiTools(),overrideLanguage:gh.getInstance().getOverrideLanguage()}}),this.updateFrameStyle())}},{key:"showDrawingScreen",value:function(e){var t=this;this.hideWidget(),this.markerManager=new dh(e),this.markerManager.show((function(e){e||t.hideMarkerManager(),t.showWidget()}))}},{key:"workThroughQueue",value:function(){var e=Ht(this.queue);this.queue=[];for(var t=0;t0&&(n.tags=o),e.sendMessage({name:"collect-ticket-data",data:n})}if("height-update"===t.name){e.frameHeight=t.data;var r=document.querySelector(".gleap-frame-container-inner");"survey"!==e.appMode&&"survey_full"!==e.appMode&&"survey_web"!==e.appMode||!r||(r.style.maxHeight="".concat(e.frameHeight,"px"))}if("notify-event"===t.name&&xn.notifyEvent(t.data.type,t.data.data),"cleanup-drawings"===t.name&&e.hideMarkerManager(),"open-url"===t.name){var i=t.data,a=!!t.newTab;e.urlHandler(i,a)}var s;if("start-product-tour"===t.name&&_m.startProductTour(null===(s=t.data)||void 0===s?void 0:s.tourId,!0),"run-custom-action"===t.name&&Ln.triggerCustomAction(t.data,{shareToken:t.shareToken}),"close-widget"===t.name&&e.hideWidget(),"tool-execution"===t.name&&xn.notifyEvent("tool-execution",t.data),"send-feedback"===t.name){var l=t.data.formData,c=t.data.action,u=t.data.outboundId,d=t.data.spamToken;new _t(c.feedbackType,"MEDIUM",l,!1,c.excludeData,u,d).sendFeedback().then((function(t){if(e.sendMessage({name:"feedback-sent",data:t}),xn.notifyEvent("feedback-sent",l),u&&u.length>0){xn.notifyEvent("outbound-sent",{outboundId:u,outbound:c,formData:l});try{delete l.reportedBy}catch(n){}_m.trackEvent("outbound-".concat(u,"-submitted"),l)}})).catch((function(t){e.sendMessage({name:"feedback-sending-failed",data:"Something went wrong, please try again."}),xn.notifyEvent("error-while-sending")}))}"start-screen-drawing"===t.name&&e.showDrawingScreen(t.data)})),window.addEventListener("message",(function(t){if(t.origin===e.frameUrl||t.origin===Bh.getInstance().bannerUrl)try{for(var n=JSON.parse(t.data),o=0;o1&&void 0!==arguments[1]?arguments[1]:"INFO";!e||e.length<=0||(this.logArray.push({log:x(e,1e3),date:new Date,priority:t}),this.logArray.length>this.logMaxLength&&this.logArray.shift())}},{key:"addLogWithArgs",value:function(e,t){if(e&&!(e.length<=0)){var n="";try{for(var o=0;o1&&void 0!==arguments[1])||arguments[1],n=x(e.innerText||"",40).replace(/(\r\n|\n|\r)/gm,"").replace(/ +(?= )/g,""),o="",r="";if(void 0!==e.getAttribute){var i=e.getAttribute("id");i&&(o=' id="'.concat(i,'"'));var a=e.getAttribute("class");a&&(r=' class="'.concat(a,'"'))}var s=(e.tagName||"").toLowerCase(),l="<",c=">";return t||(l="[",c="]"),"".concat(l).concat(s).concat(o).concat(r).concat(c).concat(n).concat(l,"/").concat(s).concat(c)}(e.target),"CLICK")}}))}}],o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],n&&sn(t.prototype,n),o&&sn(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function hn(e){return hn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},hn(e)}function fn(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{};if("flow-started"===e){var n=_m.getInstance();n.setGlobalDataItem("webReplay",null),n.setGlobalDataItem("screenRecordingData",null),n.takeCurrentReplay()}var o=this.getInstance().eventListeners[e];if(o)for(var r=0;r((e,t,n)=>t in e?Mn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,"symbol"!=typeof t?t+"":t,n),Pn=Object.defineProperty,Dn=(e,t,n)=>((e,t,n)=>t in e?Pn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,"symbol"!=typeof t?t+"":t,n),Nn=(e=>(e[e.Document=0]="Document",e[e.DocumentType=1]="DocumentType",e[e.Element=2]="Element",e[e.Text=3]="Text",e[e.CDATA=4]="CDATA",e[e.Comment=5]="Comment",e))(Nn||{});const jn={Node:["childNodes","parentNode","parentElement","textContent"],ShadowRoot:["host","styleSheets"],Element:["shadowRoot","querySelector","querySelectorAll"],MutationObserver:[]},Fn={Node:["contains","getRootNode"],ShadowRoot:["getSelection"],Element:[],MutationObserver:["constructor"]},Bn={},_n=()=>!!globalThis.Zone;function Un(e){if(Bn[e])return Bn[e];const t=globalThis[e],n=t.prototype,o=e in jn?jn[e]:void 0,r=Boolean(o&&o.every((e=>{var t,o;return Boolean(null==(o=null==(t=Object.getOwnPropertyDescriptor(n,e))?void 0:t.get)?void 0:o.toString().includes("[native code]"))}))),i=e in Fn?Fn[e]:void 0,a=Boolean(i&&i.every((e=>{var t;return"function"==typeof n[e]&&(null==(t=n[e])?void 0:t.toString().includes("[native code]"))})));if(r&&a&&!_n())return Bn[e]=t.prototype,t.prototype;try{const o=document.createElement("iframe");document.body.appendChild(o);const r=o.contentWindow;if(!r)return t.prototype;const i=r[e].prototype;return document.body.removeChild(o),i?Bn[e]=i:n}catch{return n}}const Hn={};function zn(e,t,n){var o;const r=`${e}.${String(n)}`;if(Hn[r])return Hn[r].call(t);const i=Un(e),a=null==(o=Object.getOwnPropertyDescriptor(i,n))?void 0:o.get;return a?(Hn[r]=a,a.call(t)):t[n]}const qn={};function Wn(e,t,n){const o=`${e}.${String(n)}`;if(qn[o])return qn[o].bind(t);const r=Un(e)[n];return"function"!=typeof r?t[n]:(qn[o]=r,r.bind(t))}const Gn={childNodes:function(e){return zn("Node",e,"childNodes")},parentNode:function(e){return zn("Node",e,"parentNode")},parentElement:function(e){return zn("Node",e,"parentElement")},textContent:function(e){return zn("Node",e,"textContent")},contains:function(e,t){return Wn("Node",e,"contains")(t)},getRootNode:function(e){return Wn("Node",e,"getRootNode")()},host:function(e){return e&&"host"in e?zn("ShadowRoot",e,"host"):null},styleSheets:function(e){return e.styleSheets},shadowRoot:function(e){return e&&"shadowRoot"in e?zn("Element",e,"shadowRoot"):null},querySelector:function(e,t){return zn("Element",e,"querySelector")(t)},querySelectorAll:function(e,t){return zn("Element",e,"querySelectorAll")(t)},mutationObserver:function(){return Un("MutationObserver").constructor}};function Vn(e){return e.nodeType===e.ELEMENT_NODE}function Jn(e){const t=e&&"host"in e&&"mode"in e&&Gn.host(e)||null;return Boolean(t&&"shadowRoot"in t&&Gn.shadowRoot(t)===e)}function Zn(e){return"[object ShadowRoot]"===Object.prototype.toString.call(e)}function Kn(e){try{const n=e.rules||e.cssRules;if(!n)return null;let o=e.href;!o&&e.ownerNode&&e.ownerNode.ownerDocument&&(o=e.ownerNode.ownerDocument.location.href);const r=Array.from(n,(e=>Yn(e,o))).join("");return(t=r).includes(" background-clip: text;")&&!t.includes(" -webkit-background-clip: text;")&&(t=t.replace(/\sbackground-clip:\s*text;/g," -webkit-background-clip: text; background-clip: text;")),t}catch(n){return null}var t}function Yn(e,t){if(function(e){return"styleSheet"in e}(e)){let t;try{t=Kn(e.styleSheet)||function(e){const{cssText:t}=e;if(t.split('"').length<3)return t;const n=["@import",`url(${JSON.stringify(e.href)})`];return""===e.layerName?n.push("layer"):e.layerName&&n.push(`layer(${e.layerName})`),e.supportsText&&n.push(`supports(${e.supportsText})`),e.media.length&&n.push(e.media.mediaText),n.join(" ")+";"}(e)}catch(n){t=e.cssText}return e.styleSheet.href?so(t,e.styleSheet.href):t}{let n=e.cssText;return function(e){return"selectorText"in e}(e)&&e.selectorText.includes(":")&&(n=function(e){const t=/(\[(?:[\w-]+)[^\\])(:(?:[\w-]+)\])/gm;return e.replace(t,"$1\\$2")}(n)),t?so(n,t):n}}class Xn{constructor(){Dn(this,"idNodeMap",new Map),Dn(this,"nodeMetaMap",new WeakMap)}getId(e){var t;if(!e)return-1;return(null==(t=this.getMeta(e))?void 0:t.id)??-1}getNode(e){return this.idNodeMap.get(e)||null}getIds(){return Array.from(this.idNodeMap.keys())}getMeta(e){return this.nodeMetaMap.get(e)||null}removeNodeFromMap(e){const t=this.getId(e);this.idNodeMap.delete(t),e.childNodes&&e.childNodes.forEach((e=>this.removeNodeFromMap(e)))}has(e){return this.idNodeMap.has(e)}hasNode(e){return this.nodeMetaMap.has(e)}add(e,t){const n=t.id;this.idNodeMap.set(n,e),this.nodeMetaMap.set(e,t)}replace(e,t){const n=this.getNode(e);if(n){const e=this.nodeMetaMap.get(n);e&&this.nodeMetaMap.set(t,e)}this.idNodeMap.set(e,t)}reset(){this.idNodeMap=new Map,this.nodeMetaMap=new WeakMap}}function $n({element:e,maskInputOptions:t,tagName:n,type:o,value:r,maskInputFn:i}){let a=r||"";const s=o&&Qn(o);return(t[n.toLowerCase()]||s&&t[s])&&(a=i?i(a,e):"*".repeat(a.length)),a}function Qn(e){return e.toLowerCase()}const eo="__rrweb_original__";function to(e){const t=e.type;return e.hasAttribute("data-rr-is-password")?"password":t?Qn(t):null}function no(e,t){let n;try{n=new URL(e,t??window.location.href)}catch(r){return null}const o=n.pathname.match(/\.([0-9a-z]+)(?:$)/i);return(null==o?void 0:o[1])??null}const oo=/url\((?:(')([^']*)'|(")(.*?)"|([^)]*))\)/gm,ro=/^(?:[a-z+]+:)?\/\//i,io=/^www\..*/i,ao=/^(data:)([^,]*),(.*)/i;function so(e,t){return(e||"").replace(oo,((e,n,o,r,i,a)=>{const s=o||i||a,l=n||r||"";if(!s)return e;if(ro.test(s)||io.test(s))return`url(${l}${s}${l})`;if(ao.test(s))return`url(${l}${s}${l})`;if("/"===s[0])return`url(${l}${function(e){let t="";return t=e.indexOf("//")>-1?e.split("/").slice(0,3).join("/"):e.split("/")[0],t=t.split("?")[0],t}(t)+s}${l})`;const c=t.split("/"),u=s.split("/");c.pop();for(const t of u)"."!==t&&(".."===t?c.pop():c.push(t));return`url(${l}${c.join("/")}${l})`}))}function lo(e){return e.replace(/(\/\*[^*]*\*\/)|[\s;]/g,"")}function co(e,t){return function(e,t){const n=Array.from(t.childNodes),o=[];if(n.length>1&&e&&"string"==typeof e){const t=lo(e);for(let r=1;r=t.length);){let i=o(vo);if(","===i.slice(-1))i=wo(e,i.substring(0,i.length-1)),r.push(i);else{let o="";i=wo(e,i);let a=!1;for(;;){const e=t.charAt(n);if(""===e){r.push((i+o).trim());break}if(a)")"===e&&(a=!1);else{if(","===e){n+=1,r.push((i+o).trim());break}"("===e&&(a=!0)}o+=e,n+=1}}}return r.join(", ")}(e,o):"style"===n?so(o,xo(e)):"object"===t&&"data"===n?wo(e,o):o:wo(e,o):o}function Co(e,t,n){return("video"===e||"audio"===e)&&"autoplay"===t}function Io(e,t,n){if(!e)return!1;if(e.nodeType!==e.ELEMENT_NODE)return!!n&&Io(Gn.parentNode(e),t,n);for(let o=e.classList.length;o--;){const n=e.classList[o];if(t.test(n))return!0}return!!n&&Io(Gn.parentNode(e),t,n)}function Oo(e,t,n,o){let r;if(Vn(e)){if(r=e,!Gn.childNodes(r).length)return!1}else{if(null===Gn.parentElement(e))return!1;r=Gn.parentElement(e)}try{if("string"==typeof t){if(o){if(r.closest(`.${t}`))return!0}else if(r.classList.contains(t))return!0}else if(Io(r,t,o))return!0;if(n)if(o){if(r.closest(n))return!0}else if(r.matches(n))return!0}catch(i){}return!1}function Eo(e,t){const{doc:n,mirror:o,blockClass:r,blockSelector:i,needsMask:a,inlineStylesheet:s,maskInputOptions:l={},maskTextFn:c,maskInputFn:u,dataURLOptions:d={},inlineImages:p,recordCanvas:h,keepIframeSrcFn:f,newlyAddedElement:m=!1,cssCaptured:g=!1}=t,v=function(e,t){if(!t.hasNode(e))return;const n=t.getId(e);return 1===n?void 0:n}(n,o);switch(e.nodeType){case e.DOCUMENT_NODE:return"CSS1Compat"!==e.compatMode?{type:Nn.Document,childNodes:[],compatMode:e.compatMode}:{type:Nn.Document,childNodes:[]};case e.DOCUMENT_TYPE_NODE:return{type:Nn.DocumentType,name:e.name,publicId:e.publicId,systemId:e.systemId,rootId:v};case e.ELEMENT_NODE:return function(e,t){const{doc:n,blockClass:o,blockSelector:r,inlineStylesheet:i,maskInputOptions:a={},maskInputFn:s,dataURLOptions:l={},inlineImages:c,recordCanvas:u,keepIframeSrcFn:d,newlyAddedElement:p=!1,rootId:h}=t,f=function(e,t,n){try{if("string"==typeof t){if(e.classList.contains(t))return!0}else for(let n=e.classList.length;n--;){const o=e.classList[n];if(t.test(o))return!0}if(n)return e.matches(n)}catch(o){}return!1}(e,o,r),m=function(e){if(e instanceof HTMLFormElement)return"form";const t=Qn(e.tagName);return po.test(t)?"div":t}(e);let g={};const v=e.attributes.length;for(let w=0;wt.href===e.href));let o=null;t&&(o=Kn(t)),o&&(delete g.rel,delete g.href,g._cssText=o)}if("style"===m&&e.sheet){let t=Kn(e.sheet);t&&(e.childNodes.length>1&&(t=co(t,e)),g._cssText=t)}if("input"===m||"textarea"===m||"select"===m){const t=e.value,n=e.checked;"radio"!==g.type&&"checkbox"!==g.type&&"submit"!==g.type&&"button"!==g.type&&t?g.value=$n({element:e,type:to(e),tagName:m,value:t,maskInputOptions:a,maskInputFn:s}):n&&(g.checked=n)}"option"===m&&(e.selected&&!a.select?g.selected=!0:delete g.selected);"dialog"===m&&e.open&&(g.rr_open_mode=e.matches("dialog:modal")?"modal":"non-modal");if("canvas"===m&&u)if("2d"===e.__context)(function(e){const t=e.getContext("2d");if(!t)return!0;for(let n=0;n0!==e)))return!1}return!0})(e)||(g.rr_dataURL=e.toDataURL(l.type,l.quality));else if(!("__context"in e)){const t=e.toDataURL(l.type,l.quality),o=n.createElement("canvas");o.width=e.width,o.height=e.height;t!==o.toDataURL(l.type,l.quality)&&(g.rr_dataURL=t)}if("img"===m&&c){mo||(mo=n.createElement("canvas"),go=mo.getContext("2d"));const t=e,o=t.currentSrc||t.getAttribute("src")||"",r=t.crossOrigin,i=()=>{t.removeEventListener("load",i);try{mo.width=t.naturalWidth,mo.height=t.naturalHeight,go.drawImage(t,0,0),g.rr_dataURL=mo.toDataURL(l.type,l.quality)}catch(e){if("anonymous"!==t.crossOrigin)return t.crossOrigin="anonymous",void(t.complete&&0!==t.naturalWidth?i():t.addEventListener("load",i));console.warn(`Cannot inline img src=${o}! Error: ${e}`)}"anonymous"===t.crossOrigin&&(r?g.crossOrigin=r:t.removeAttribute("crossorigin"))};t.complete&&0!==t.naturalWidth?i():t.addEventListener("load",i)}if("audio"===m||"video"===m){const t=g;t.rr_mediaState=e.paused?"paused":"played",t.rr_mediaCurrentTime=e.currentTime,t.rr_mediaPlaybackRate=e.playbackRate,t.rr_mediaMuted=e.muted,t.rr_mediaLoop=e.loop,t.rr_mediaVolume=e.volume}p||(e.scrollLeft&&(g.rr_scrollLeft=e.scrollLeft),e.scrollTop&&(g.rr_scrollTop=e.scrollTop));if(f){const{width:t,height:n}=e.getBoundingClientRect();g={class:g.class,rr_width:`${t}px`,rr_height:`${n}px`}}"iframe"!==m||d(g.src)||(e.contentDocument||(g.rr_src=g.src),delete g.src);let y;try{customElements.get(m)&&(y=!0)}catch(b){}return{type:Nn.Element,tagName:m,attributes:g,childNodes:[],isSVG:ko(e)||void 0,needBlock:f,rootId:h,isCustom:y}}(e,{doc:n,blockClass:r,blockSelector:i,inlineStylesheet:s,maskInputOptions:l,maskInputFn:u,dataURLOptions:d,inlineImages:p,recordCanvas:h,keepIframeSrcFn:f,newlyAddedElement:m,rootId:v});case e.TEXT_NODE:return function(e,t){const{needsMask:n,maskTextFn:o,rootId:r,cssCaptured:i}=t,a=Gn.parentNode(e),s=a&&a.tagName;let l="";const c="STYLE"===s||void 0,u="SCRIPT"===s||void 0;u?l="SCRIPT_PLACEHOLDER":i||(l=Gn.textContent(e),c&&l&&(l=so(l,xo(t.doc))));!c&&!u&&l&&n&&(l=o?o(l,Gn.parentElement(e)):l.replace(/[\S]/g,"*"));return{type:Nn.Text,textContent:l||"",rootId:r}}(e,{doc:n,needsMask:a,maskTextFn:c,rootId:v,cssCaptured:g});case e.CDATA_SECTION_NODE:return{type:Nn.CDATA,textContent:"",rootId:v};case e.COMMENT_NODE:return{type:Nn.Comment,textContent:Gn.textContent(e)||"",rootId:v};default:return!1}}function To(e){return null==e?"":e.toLowerCase()}function Lo(e,t){const{doc:n,mirror:o,blockClass:r,blockSelector:i,maskTextClass:a,maskTextSelector:s,skipChild:l=!1,inlineStylesheet:c=!0,maskInputOptions:u={},maskTextFn:d,maskInputFn:p,slimDOMOptions:h,dataURLOptions:f={},inlineImages:m=!1,recordCanvas:g=!1,onSerialize:v,onIframeLoad:y,iframeLoadTimeout:b=5e3,onStylesheetLoad:w,stylesheetLoadTimeout:k=5e3,keepIframeSrcFn:x=(()=>!1),newlyAddedElement:S=!1,cssCaptured:C=!1}=t;let{needsMask:I}=t,{preserveWhiteSpace:O=!0}=t;if(!I){I=Oo(e,a,s,void 0===I)}const E=Eo(e,{doc:n,mirror:o,blockClass:r,blockSelector:i,needsMask:I,inlineStylesheet:c,maskInputOptions:u,maskTextFn:d,maskInputFn:p,dataURLOptions:f,inlineImages:m,recordCanvas:g,keepIframeSrcFn:x,newlyAddedElement:S,cssCaptured:C});if(!E)return console.warn(e,"not serialized"),null;let T;T=o.hasNode(e)?o.getId(e):function(e,t){if(t.comment&&e.type===Nn.Comment)return!0;if(e.type===Nn.Element){if(t.script&&("script"===e.tagName||"link"===e.tagName&&("preload"===e.attributes.rel||"modulepreload"===e.attributes.rel)&&"script"===e.attributes.as||"link"===e.tagName&&"prefetch"===e.attributes.rel&&"string"==typeof e.attributes.href&&"js"===no(e.attributes.href)))return!0;if(t.headFavicon&&("link"===e.tagName&&"shortcut icon"===e.attributes.rel||"meta"===e.tagName&&(To(e.attributes.name).match(/^msapplication-tile(image|color)$/)||"application-name"===To(e.attributes.name)||"icon"===To(e.attributes.rel)||"apple-touch-icon"===To(e.attributes.rel)||"shortcut icon"===To(e.attributes.rel))))return!0;if("meta"===e.tagName){if(t.headMetaDescKeywords&&To(e.attributes.name).match(/^description|keywords$/))return!0;if(t.headMetaSocial&&(To(e.attributes.property).match(/^(og|twitter|fb):/)||To(e.attributes.name).match(/^(og|twitter):/)||"pinterest"===To(e.attributes.name)))return!0;if(t.headMetaRobots&&("robots"===To(e.attributes.name)||"googlebot"===To(e.attributes.name)||"bingbot"===To(e.attributes.name)))return!0;if(t.headMetaHttpEquiv&&void 0!==e.attributes["http-equiv"])return!0;if(t.headMetaAuthorship&&("author"===To(e.attributes.name)||"generator"===To(e.attributes.name)||"framework"===To(e.attributes.name)||"publisher"===To(e.attributes.name)||"progid"===To(e.attributes.name)||To(e.attributes.property).match(/^article:/)||To(e.attributes.property).match(/^product:/)))return!0;if(t.headMetaVerification&&("google-site-verification"===To(e.attributes.name)||"yandex-verification"===To(e.attributes.name)||"csrf-token"===To(e.attributes.name)||"p:domain_verify"===To(e.attributes.name)||"verify-v1"===To(e.attributes.name)||"verification"===To(e.attributes.name)||"shopify-checkout-api-token"===To(e.attributes.name)))return!0}}return!1}(E,h)||!O&&E.type===Nn.Text&&!E.textContent.replace(/^\s+|\s+$/gm,"").length?ho:fo();const L=Object.assign(E,{id:T});if(o.add(e,L),T===ho)return null;v&&v(e);let A=!l;if(L.type===Nn.Element){A=A&&!L.needBlock,delete L.needBlock;const t=Gn.shadowRoot(e);t&&Zn(t)&&(L.isShadowHost=!0)}if((L.type===Nn.Document||L.type===Nn.Element)&&A){h.headWhitespace&&L.type===Nn.Element&&"head"===L.tagName&&(O=!1);const t={doc:n,mirror:o,blockClass:r,blockSelector:i,needsMask:I,maskTextClass:a,maskTextSelector:s,skipChild:l,inlineStylesheet:c,maskInputOptions:u,maskTextFn:d,maskInputFn:p,slimDOMOptions:h,dataURLOptions:f,inlineImages:m,recordCanvas:g,preserveWhiteSpace:O,onSerialize:v,onIframeLoad:y,iframeLoadTimeout:b,onStylesheetLoad:w,stylesheetLoadTimeout:k,keepIframeSrcFn:x,cssCaptured:!1};if(L.type===Nn.Element&&"textarea"===L.tagName&&void 0!==L.attributes.value);else{L.type===Nn.Element&&void 0!==L.attributes._cssText&&"string"==typeof L.attributes._cssText&&(t.cssCaptured=!0);for(const n of Array.from(Gn.childNodes(e))){const e=Lo(n,t);e&&L.childNodes.push(e)}}let S=null;if(Vn(e)&&(S=Gn.shadowRoot(e)))for(const e of Array.from(Gn.childNodes(S))){const n=Lo(e,t);n&&(Zn(S)&&(n.isShadow=!0),L.childNodes.push(n))}}const M=Gn.parentNode(e);return M&&Jn(M)&&Zn(M)&&(L.isShadow=!0),L.type===Nn.Element&&"iframe"===L.tagName&&function(e,t,n){const o=e.contentWindow;if(!o)return;let r,i=!1;try{r=o.document.readyState}catch(s){return}if("complete"!==r){const o=setTimeout((()=>{i||(t(),i=!0)}),n);return void e.addEventListener("load",(()=>{clearTimeout(o),i=!0,t()}))}const a="about:blank";if(o.location.href!==a||e.src===a||""===e.src)return setTimeout(t,0),e.addEventListener("load",t);e.addEventListener("load",t)}(e,(()=>{const t=e.contentDocument;if(t&&y){const n=Lo(t,{doc:t,mirror:o,blockClass:r,blockSelector:i,needsMask:I,maskTextClass:a,maskTextSelector:s,skipChild:!1,inlineStylesheet:c,maskInputOptions:u,maskTextFn:d,maskInputFn:p,slimDOMOptions:h,dataURLOptions:f,inlineImages:m,recordCanvas:g,preserveWhiteSpace:O,onSerialize:v,onIframeLoad:y,iframeLoadTimeout:b,onStylesheetLoad:w,stylesheetLoadTimeout:k,keepIframeSrcFn:x});n&&y(e,n)}}),b),L.type===Nn.Element&&"link"===L.tagName&&"string"==typeof L.attributes.rel&&("stylesheet"===L.attributes.rel||"preload"===L.attributes.rel&&"string"==typeof L.attributes.href&&"css"===no(L.attributes.href))&&function(e,t,n){let o,r=!1;try{o=e.sheet}catch(a){return}if(o)return;const i=setTimeout((()=>{r||(t(),r=!0)}),n);e.addEventListener("load",(()=>{clearTimeout(i),r=!0,t()}))}(e,(()=>{if(w){const t=Lo(e,{doc:n,mirror:o,blockClass:r,blockSelector:i,needsMask:I,maskTextClass:a,maskTextSelector:s,skipChild:!1,inlineStylesheet:c,maskInputOptions:u,maskTextFn:d,maskInputFn:p,slimDOMOptions:h,dataURLOptions:f,inlineImages:m,recordCanvas:g,preserveWhiteSpace:O,onSerialize:v,onIframeLoad:y,iframeLoadTimeout:b,onStylesheetLoad:w,stylesheetLoadTimeout:k,keepIframeSrcFn:x});t&&w(e,t)}}),k),L}function Ao(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function Mo(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var n=function e(){return this instanceof e?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,o.get?o:{enumerable:!0,get:function(){return e[t]}})})),n}var Ro={exports:{}},Po=String,Do=function(){return{isColorSupported:!1,reset:Po,bold:Po,dim:Po,italic:Po,underline:Po,inverse:Po,hidden:Po,strikethrough:Po,black:Po,red:Po,green:Po,yellow:Po,blue:Po,magenta:Po,cyan:Po,white:Po,gray:Po,bgBlack:Po,bgRed:Po,bgGreen:Po,bgYellow:Po,bgBlue:Po,bgMagenta:Po,bgCyan:Po,bgWhite:Po}};Ro.exports=Do(),Ro.exports.createColors=Do;var No=Ro.exports;const jo=Mo(Object.freeze(Object.defineProperty({__proto__:null,default:{}},Symbol.toStringTag,{value:"Module"})));let Fo=No,Bo=jo,_o=class e extends Error{constructor(t,n,o,r,i,a){super(t),this.name="CssSyntaxError",this.reason=t,i&&(this.file=i),r&&(this.source=r),a&&(this.plugin=a),void 0!==n&&void 0!==o&&("number"==typeof n?(this.line=n,this.column=o):(this.line=n.line,this.column=n.column,this.endLine=o.line,this.endColumn=o.column)),this.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(this,e)}setMessage(){this.message=this.plugin?this.plugin+": ":"",this.message+=this.file?this.file:"",void 0!==this.line&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason}showSourceCode(e){if(!this.source)return"";let t=this.source;null==e&&(e=Fo.isColorSupported),Bo&&e&&(t=Bo(t));let n,o,r=t.split(/\r?\n/),i=Math.max(this.line-3,0),a=Math.min(this.line+2,r.length),s=String(a).length;if(e){let{bold:e,gray:t,red:r}=Fo.createColors(!0);n=t=>e(r(t)),o=e=>t(e)}else n=o=e=>e;return r.slice(i,a).map(((e,t)=>{let r=i+1+t,a=" "+(" "+r).slice(-s)+" | ";if(r===this.line){let t=o(a.replace(/\d/g," "))+e.slice(0,this.column-1).replace(/[^\t]/g," ");return n(">")+o(a)+e+"\n "+t+n("^")}return" "+o(a)+e})).join("\n")}toString(){let e=this.showSourceCode();return e&&(e="\n\n"+e+"\n"),this.name+": "+this.message+e}};var Uo=_o;_o.default=_o;var Ho={};Ho.isClean=Symbol("isClean"),Ho.my=Symbol("my");const zo={after:"\n",beforeClose:"\n",beforeComment:"\n",beforeDecl:"\n",beforeOpen:" ",beforeRule:"\n",colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:!1};let qo=class{constructor(e){this.builder=e}atrule(e,t){let n="@"+e.name,o=e.params?this.rawValue(e,"params"):"";if(void 0!==e.raws.afterName?n+=e.raws.afterName:o&&(n+=" "),e.nodes)this.block(e,n+o);else{let r=(e.raws.between||"")+(t?";":"");this.builder(n+o+r,e)}}beforeAfter(e,t){let n;n="decl"===e.type?this.raw(e,null,"beforeDecl"):"comment"===e.type?this.raw(e,null,"beforeComment"):"before"===t?this.raw(e,null,"beforeRule"):this.raw(e,null,"beforeClose");let o=e.parent,r=0;for(;o&&"root"!==o.type;)r+=1,o=o.parent;if(n.includes("\n")){let t=this.raw(e,null,"indent");if(t.length)for(let e=0;e0&&"comment"===e.nodes[t].type;)t-=1;let n=this.raw(e,"semicolon");for(let o=0;o{if(o=e.raws[t],void 0!==o)return!1}))}var a;return void 0===o&&(o=zo[n]),i.rawCache[n]=o,o}rawBeforeClose(e){let t;return e.walk((e=>{if(e.nodes&&e.nodes.length>0&&void 0!==e.raws.after)return t=e.raws.after,t.includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1})),t&&(t=t.replace(/\S/g,"")),t}rawBeforeComment(e,t){let n;return e.walkComments((e=>{if(void 0!==e.raws.before)return n=e.raws.before,n.includes("\n")&&(n=n.replace(/[^\n]+$/,"")),!1})),void 0===n?n=this.raw(t,null,"beforeDecl"):n&&(n=n.replace(/\S/g,"")),n}rawBeforeDecl(e,t){let n;return e.walkDecls((e=>{if(void 0!==e.raws.before)return n=e.raws.before,n.includes("\n")&&(n=n.replace(/[^\n]+$/,"")),!1})),void 0===n?n=this.raw(t,null,"beforeRule"):n&&(n=n.replace(/\S/g,"")),n}rawBeforeOpen(e){let t;return e.walk((e=>{if("decl"!==e.type&&(t=e.raws.between,void 0!==t))return!1})),t}rawBeforeRule(e){let t;return e.walk((n=>{if(n.nodes&&(n.parent!==e||e.first!==n)&&void 0!==n.raws.before)return t=n.raws.before,t.includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1})),t&&(t=t.replace(/\S/g,"")),t}rawColon(e){let t;return e.walkDecls((e=>{if(void 0!==e.raws.between)return t=e.raws.between.replace(/[^\s:]/g,""),!1})),t}rawEmptyBody(e){let t;return e.walk((e=>{if(e.nodes&&0===e.nodes.length&&(t=e.raws.after,void 0!==t))return!1})),t}rawIndent(e){if(e.raws.indent)return e.raws.indent;let t;return e.walk((n=>{let o=n.parent;if(o&&o!==e&&o.parent&&o.parent===e&&void 0!==n.raws.before){let e=n.raws.before.split("\n");return t=e[e.length-1],t=t.replace(/\S/g,""),!1}})),t}rawSemicolon(e){let t;return e.walk((e=>{if(e.nodes&&e.nodes.length&&"decl"===e.last.type&&(t=e.raws.semicolon,void 0!==t))return!1})),t}rawValue(e,t){let n=e[t],o=e.raws[t];return o&&o.value===n?o.raw:n}root(e){this.body(e),e.raws.after&&this.builder(e.raws.after)}rule(e){this.block(e,this.rawValue(e,"selector")),e.raws.ownSemicolon&&this.builder(e.raws.ownSemicolon,e,"end")}stringify(e,t){if(!this[e.type])throw new Error("Unknown AST node type "+e.type+". Maybe you need to change PostCSS stringifier.");this[e.type](e,t)}};var Wo=qo;qo.default=qo;let Go=Wo;function Vo(e,t){new Go(t).stringify(e)}var Jo=Vo;Vo.default=Vo;let{isClean:Zo,my:Ko}=Ho,Yo=Uo,Xo=Wo,$o=Jo;function Qo(e,t){let n=new e.constructor;for(let o in e){if(!Object.prototype.hasOwnProperty.call(e,o))continue;if("proxyCache"===o)continue;let r=e[o],i=typeof r;"parent"===o&&"object"===i?t&&(n[o]=t):"source"===o?n[o]=r:Array.isArray(r)?n[o]=r.map((e=>Qo(e,n))):("object"===i&&null!==r&&(r=Qo(r)),n[o]=r)}return n}let er=class{constructor(e={}){this.raws={},this[Zo]=!1,this[Ko]=!0;for(let t in e)if("nodes"===t){this.nodes=[];for(let n of e[t])"function"==typeof n.clone?this.append(n.clone()):this.append(n)}else this[t]=e[t]}addToError(e){if(e.postcssNode=this,e.stack&&this.source&&/\n\s{4}at /.test(e.stack)){let t=this.source;e.stack=e.stack.replace(/\n\s{4}at /,`$&${t.input.from}:${t.start.line}:${t.start.column}$&`)}return e}after(e){return this.parent.insertAfter(this,e),this}assign(e={}){for(let t in e)this[t]=e[t];return this}before(e){return this.parent.insertBefore(this,e),this}cleanRaws(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between}clone(e={}){let t=Qo(this);for(let n in e)t[n]=e[n];return t}cloneAfter(e={}){let t=this.clone(e);return this.parent.insertAfter(this,t),t}cloneBefore(e={}){let t=this.clone(e);return this.parent.insertBefore(this,t),t}error(e,t={}){if(this.source){let{end:n,start:o}=this.rangeBy(t);return this.source.input.error(e,{column:o.column,line:o.line},{column:n.column,line:n.line},t)}return new Yo(e)}getProxyProcessor(){return{get:(e,t)=>"proxyOf"===t?e:"root"===t?()=>e.root().toProxy():e[t],set:(e,t,n)=>(e[t]===n||(e[t]=n,"prop"!==t&&"value"!==t&&"name"!==t&&"params"!==t&&"important"!==t&&"text"!==t||e.markDirty()),!0)}}markDirty(){if(this[Zo]){this[Zo]=!1;let e=this;for(;e=e.parent;)e[Zo]=!1}}next(){if(!this.parent)return;let e=this.parent.index(this);return this.parent.nodes[e+1]}positionBy(e,t){let n=this.source.start;if(e.index)n=this.positionInside(e.index,t);else if(e.word){let o=(t=this.toString()).indexOf(e.word);-1!==o&&(n=this.positionInside(o,t))}return n}positionInside(e,t){let n=t||this.toString(),o=this.source.start.column,r=this.source.start.line;for(let i=0;i"object"==typeof e&&e.toJSON?e.toJSON(null,t):e));else if("object"==typeof e&&e.toJSON)n[i]=e.toJSON(null,t);else if("source"===i){let o=t.get(e.input);null==o&&(o=r,t.set(e.input,r),r++),n[i]={end:e.end,inputId:o,start:e.start}}else n[i]=e}return o&&(n.inputs=[...t.keys()].map((e=>e.toJSON()))),n}toProxy(){return this.proxyCache||(this.proxyCache=new Proxy(this,this.getProxyProcessor())),this.proxyCache}toString(e=$o){e.stringify&&(e=e.stringify);let t="";return e(this,(e=>{t+=e})),t}warn(e,t,n){let o={node:this};for(let r in n)o[r]=n[r];return e.warn(t,o)}get proxyOf(){return this}};var tr=er;er.default=er;let nr=tr,or=class extends nr{constructor(e){e&&void 0!==e.value&&"string"!=typeof e.value&&(e={...e,value:String(e.value)}),super(e),this.type="decl"}get variable(){return this.prop.startsWith("--")||"$"===this.prop[0]}};var rr=or;or.default=or;var ir={nanoid:(e=21)=>{let t="",n=e;for(;n--;)t+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[64*Math.random()|0];return t},customAlphabet:(e,t=21)=>(n=t)=>{let o="",r=n;for(;r--;)o+=e[Math.random()*e.length|0];return o}};let{SourceMapConsumer:ar,SourceMapGenerator:sr}=jo,{existsSync:lr,readFileSync:cr}=jo,{dirname:ur,join:dr}=jo;let pr=class{constructor(e,t){if(!1===t.map)return;this.loadAnnotation(e),this.inline=this.startWith(this.annotation,"data:");let n=t.map?t.map.prev:void 0,o=this.loadMap(t.from,n);!this.mapFile&&t.from&&(this.mapFile=t.from),this.mapFile&&(this.root=ur(this.mapFile)),o&&(this.text=o)}consumer(){return this.consumerCache||(this.consumerCache=new ar(this.text)),this.consumerCache}decodeInline(e){if(/^data:application\/json;charset=utf-?8,/.test(e)||/^data:application\/json,/.test(e))return decodeURIComponent(e.substr(RegExp.lastMatch.length));if(/^data:application\/json;charset=utf-?8;base64,/.test(e)||/^data:application\/json;base64,/.test(e))return t=e.substr(RegExp.lastMatch.length),Buffer?Buffer.from(t,"base64").toString():window.atob(t);var t;let n=e.match(/data:application\/json;([^,]+),/)[1];throw new Error("Unsupported source map encoding "+n)}getAnnotationURL(e){return e.replace(/^\/\*\s*# sourceMappingURL=/,"").trim()}isMap(e){return"object"==typeof e&&("string"==typeof e.mappings||"string"==typeof e._mappings||Array.isArray(e.sections))}loadAnnotation(e){let t=e.match(/\/\*\s*# sourceMappingURL=/gm);if(!t)return;let n=e.lastIndexOf(t.pop()),o=e.indexOf("*/",n);n>-1&&o>-1&&(this.annotation=this.getAnnotationURL(e.substring(n,o)))}loadFile(e){if(this.root=ur(e),lr(e))return this.mapFile=e,cr(e,"utf-8").toString().trim()}loadMap(e,t){if(!1===t)return!1;if(t){if("string"==typeof t)return t;if("function"!=typeof t){if(t instanceof ar)return sr.fromSourceMap(t).toString();if(t instanceof sr)return t.toString();if(this.isMap(t))return JSON.stringify(t);throw new Error("Unsupported previous source map format: "+t.toString())}{let n=t(e);if(n){let e=this.loadFile(n);if(!e)throw new Error("Unable to load previous source map: "+n.toString());return e}}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){let t=this.annotation;return e&&(t=dr(ur(e),t)),this.loadFile(t)}}}startWith(e,t){return!!e&&e.substr(0,t.length)===t}withContent(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)}};var hr=pr;pr.default=pr;let{SourceMapConsumer:fr,SourceMapGenerator:mr}=jo,{fileURLToPath:gr,pathToFileURL:vr}=jo,{isAbsolute:yr,resolve:br}=jo,{nanoid:wr}=ir,kr=jo,xr=Uo,Sr=hr,Cr=Symbol("fromOffsetCache"),Ir=Boolean(fr&&mr),Or=Boolean(br&&yr),Er=class{constructor(e,t={}){if(null==e||"object"==typeof e&&!e.toString)throw new Error(`PostCSS received ${e} instead of CSS string`);if(this.css=e.toString(),"\ufeff"===this.css[0]||"￾"===this.css[0]?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,t.from&&(!Or||/^\w+:\/\//.test(t.from)||yr(t.from)?this.file=t.from:this.file=br(t.from)),Or&&Ir){let e=new Sr(this.css,t);if(e.text){this.map=e;let t=e.consumer().file;!this.file&&t&&(this.file=this.mapResolve(t))}}this.file||(this.id=""),this.map&&(this.map.file=this.from)}error(e,t,n,o={}){let r,i,a;if(t&&"object"==typeof t){let e=t,o=n;if("number"==typeof e.offset){let o=this.fromOffset(e.offset);t=o.line,n=o.col}else t=e.line,n=e.column;if("number"==typeof o.offset){let e=this.fromOffset(o.offset);i=e.line,a=e.col}else i=o.line,a=o.column}else if(!n){let e=this.fromOffset(t);t=e.line,n=e.col}let s=this.origin(t,n,i,a);return r=s?new xr(e,void 0===s.endLine?s.line:{column:s.column,line:s.line},void 0===s.endLine?s.column:{column:s.endColumn,line:s.endLine},s.source,s.file,o.plugin):new xr(e,void 0===i?t:{column:n,line:t},void 0===i?n:{column:a,line:i},this.css,this.file,o.plugin),r.input={column:n,endColumn:a,endLine:i,line:t,source:this.css},this.file&&(vr&&(r.input.url=vr(this.file).toString()),r.input.file=this.file),r}fromOffset(e){let t,n;if(this[Cr])n=this[Cr];else{let e=this.css.split("\n");n=new Array(e.length);let t=0;for(let o=0,r=e.length;o=t)o=n.length-1;else{let t,r=n.length-2;for(;o>1),e=n[t+1])){o=t;break}o=t+1}}return{col:e-n[o]+1,line:o+1}}mapResolve(e){return/^\w+:\/\//.test(e)?e:br(this.map.consumer().sourceRoot||this.map.root||".",e)}origin(e,t,n,o){if(!this.map)return!1;let r,i,a=this.map.consumer(),s=a.originalPositionFor({column:t,line:e});if(!s.source)return!1;"number"==typeof n&&(r=a.originalPositionFor({column:o,line:n})),i=yr(s.source)?vr(s.source):new URL(s.source,this.map.consumer().sourceRoot||vr(this.map.mapFile));let l={column:s.column,endColumn:r&&r.column,endLine:r&&r.line,line:s.line,url:i.toString()};if("file:"===i.protocol){if(!gr)throw new Error("file: protocol is not available in this PostCSS build");l.file=gr(i)}let c=a.sourceContentFor(s.source);return c&&(l.source=c),l}toJSON(){let e={};for(let t of["hasBOM","css","file","id"])null!=this[t]&&(e[t]=this[t]);return this.map&&(e.map={...this.map},e.map.consumerCache&&(e.map.consumerCache=void 0)),e}get from(){return this.file||this.id}};var Tr=Er;Er.default=Er,kr&&kr.registerInput&&kr.registerInput(Er);let{SourceMapConsumer:Lr,SourceMapGenerator:Ar}=jo,{dirname:Mr,relative:Rr,resolve:Pr,sep:Dr}=jo,{pathToFileURL:Nr}=jo,jr=Tr,Fr=Boolean(Lr&&Ar),Br=Boolean(Mr&&Pr&&Rr&&Dr);var _r=class{constructor(e,t,n,o){this.stringify=e,this.mapOpts=n.map||{},this.root=t,this.opts=n,this.css=o,this.originalCSS=o,this.usesFileUrls=!this.mapOpts.from&&this.mapOpts.absolute,this.memoizedFileURLs=new Map,this.memoizedPaths=new Map,this.memoizedURLs=new Map}addAnnotation(){let e;e=this.isInline()?"data:application/json;base64,"+this.toBase64(this.map.toString()):"string"==typeof this.mapOpts.annotation?this.mapOpts.annotation:"function"==typeof this.mapOpts.annotation?this.mapOpts.annotation(this.opts.to,this.root):this.outputFile()+".map";let t="\n";this.css.includes("\r\n")&&(t="\r\n"),this.css+=t+"/*# sourceMappingURL="+e+" */"}applyPrevMaps(){for(let e of this.previous()){let t,n=this.toUrl(this.path(e.file)),o=e.root||Mr(e.file);!1===this.mapOpts.sourcesContent?(t=new Lr(e.text),t.sourcesContent&&(t.sourcesContent=null)):t=e.consumer(),this.map.applySourceMap(t,n,this.toUrl(this.path(o)))}}clearAnnotation(){if(!1!==this.mapOpts.annotation)if(this.root){let e;for(let t=this.root.nodes.length-1;t>=0;t--)e=this.root.nodes[t],"comment"===e.type&&0===e.text.indexOf("# sourceMappingURL=")&&this.root.removeChild(t)}else this.css&&(this.css=this.css.replace(/\n*?\/\*#[\S\s]*?\*\/$/gm,""))}generate(){if(this.clearAnnotation(),Br&&Fr&&this.isMap())return this.generateMap();{let e="";return this.stringify(this.root,(t=>{e+=t})),[e]}}generateMap(){if(this.root)this.generateString();else if(1===this.previous().length){let e=this.previous()[0].consumer();e.file=this.outputFile(),this.map=Ar.fromSourceMap(e,{ignoreInvalidMapping:!0})}else this.map=new Ar({file:this.outputFile(),ignoreInvalidMapping:!0}),this.map.addMapping({generated:{column:0,line:1},original:{column:0,line:1},source:this.opts.from?this.toUrl(this.path(this.opts.from)):""});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]}generateString(){this.css="",this.map=new Ar({file:this.outputFile(),ignoreInvalidMapping:!0});let e,t,n=1,o=1,r="",i={generated:{column:0,line:0},original:{column:0,line:0},source:""};this.stringify(this.root,((a,s,l)=>{if(this.css+=a,s&&"end"!==l&&(i.generated.line=n,i.generated.column=o-1,s.source&&s.source.start?(i.source=this.sourcePath(s),i.original.line=s.source.start.line,i.original.column=s.source.start.column-1,this.map.addMapping(i)):(i.source=r,i.original.line=1,i.original.column=0,this.map.addMapping(i))),e=a.match(/\n/g),e?(n+=e.length,t=a.lastIndexOf("\n"),o=a.length-t):o+=a.length,s&&"start"!==l){let e=s.parent||{raws:{}};("decl"===s.type||"atrule"===s.type&&!s.nodes)&&s===e.last&&!e.raws.semicolon||(s.source&&s.source.end?(i.source=this.sourcePath(s),i.original.line=s.source.end.line,i.original.column=s.source.end.column-1,i.generated.line=n,i.generated.column=o-2,this.map.addMapping(i)):(i.source=r,i.original.line=1,i.original.column=0,i.generated.line=n,i.generated.column=o-1,this.map.addMapping(i)))}}))}isAnnotation(){return!!this.isInline()||(void 0!==this.mapOpts.annotation?this.mapOpts.annotation:!this.previous().length||this.previous().some((e=>e.annotation)))}isInline(){if(void 0!==this.mapOpts.inline)return this.mapOpts.inline;let e=this.mapOpts.annotation;return(void 0===e||!0===e)&&(!this.previous().length||this.previous().some((e=>e.inline)))}isMap(){return void 0!==this.opts.map?!!this.opts.map:this.previous().length>0}isSourcesContent(){return void 0!==this.mapOpts.sourcesContent?this.mapOpts.sourcesContent:!this.previous().length||this.previous().some((e=>e.withContent()))}outputFile(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"}path(e){if(this.mapOpts.absolute)return e;if(60===e.charCodeAt(0))return e;if(/^\w+:\/\//.test(e))return e;let t=this.memoizedPaths.get(e);if(t)return t;let n=this.opts.to?Mr(this.opts.to):".";"string"==typeof this.mapOpts.annotation&&(n=Mr(Pr(n,this.mapOpts.annotation)));let o=Rr(n,e);return this.memoizedPaths.set(e,o),o}previous(){if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk((e=>{if(e.source&&e.source.input.map){let t=e.source.input.map;this.previousMaps.includes(t)||this.previousMaps.push(t)}}));else{let e=new jr(this.originalCSS,this.opts);e.map&&this.previousMaps.push(e.map)}return this.previousMaps}setSourcesContent(){let e={};if(this.root)this.root.walk((t=>{if(t.source){let n=t.source.input.from;if(n&&!e[n]){e[n]=!0;let o=this.usesFileUrls?this.toFileUrl(n):this.toUrl(this.path(n));this.map.setSourceContent(o,t.source.input.css)}}}));else if(this.css){let e=this.opts.from?this.toUrl(this.path(this.opts.from)):"";this.map.setSourceContent(e,this.css)}}sourcePath(e){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(e.source.input.from):this.toUrl(this.path(e.source.input.from))}toBase64(e){return Buffer?Buffer.from(e).toString("base64"):window.btoa(unescape(encodeURIComponent(e)))}toFileUrl(e){let t=this.memoizedFileURLs.get(e);if(t)return t;if(Nr){let t=Nr(e).toString();return this.memoizedFileURLs.set(e,t),t}throw new Error("`map.absolute` option is not available in this PostCSS build")}toUrl(e){let t=this.memoizedURLs.get(e);if(t)return t;"\\"===Dr&&(e=e.replace(/\\/g,"/"));let n=encodeURI(e).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(e,n),n}};let Ur=tr,Hr=class extends Ur{constructor(e){super(e),this.type="comment"}};var zr=Hr;Hr.default=Hr;let qr,Wr,Gr,Vr,{isClean:Jr,my:Zr}=Ho,Kr=rr,Yr=zr,Xr=tr;function $r(e){return e.map((e=>(e.nodes&&(e.nodes=$r(e.nodes)),delete e.source,e)))}function Qr(e){if(e[Jr]=!1,e.proxyOf.nodes)for(let t of e.proxyOf.nodes)Qr(t)}let ei=class e extends Xr{append(...e){for(let t of e){let e=this.normalize(t,this.last);for(let t of e)this.proxyOf.nodes.push(t)}return this.markDirty(),this}cleanRaws(e){if(super.cleanRaws(e),this.nodes)for(let t of this.nodes)t.cleanRaws(e)}each(e){if(!this.proxyOf.nodes)return;let t,n,o=this.getIterator();for(;this.indexes[o]"proxyOf"===t?e:e[t]?"each"===t||"string"==typeof t&&t.startsWith("walk")?(...n)=>e[t](...n.map((e=>"function"==typeof e?(t,n)=>e(t.toProxy(),n):e))):"every"===t||"some"===t?n=>e[t](((e,...t)=>n(e.toProxy(),...t))):"root"===t?()=>e.root().toProxy():"nodes"===t?e.nodes.map((e=>e.toProxy())):"first"===t||"last"===t?e[t].toProxy():e[t]:e[t],set:(e,t,n)=>(e[t]===n||(e[t]=n,"name"!==t&&"params"!==t&&"selector"!==t||e.markDirty()),!0)}}index(e){return"number"==typeof e?e:(e.proxyOf&&(e=e.proxyOf),this.proxyOf.nodes.indexOf(e))}insertAfter(e,t){let n,o=this.index(e),r=this.normalize(t,this.proxyOf.nodes[o]).reverse();o=this.index(e);for(let i of r)this.proxyOf.nodes.splice(o+1,0,i);for(let i in this.indexes)n=this.indexes[i],o(t[Zr]||e.rebuild(t),(t=t.proxyOf).parent&&t.parent.removeChild(t),t[Jr]&&Qr(t),void 0===t.raws.before&&n&&void 0!==n.raws.before&&(t.raws.before=n.raws.before.replace(/\S/g,"")),t.parent=this.proxyOf,t)))}prepend(...e){e=e.reverse();for(let t of e){let e=this.normalize(t,this.first,"prepend").reverse();for(let t of e)this.proxyOf.nodes.unshift(t);for(let t in this.indexes)this.indexes[t]=this.indexes[t]+e.length}return this.markDirty(),this}push(e){return e.parent=this,this.proxyOf.nodes.push(e),this}removeAll(){for(let e of this.proxyOf.nodes)e.parent=void 0;return this.proxyOf.nodes=[],this.markDirty(),this}removeChild(e){let t;e=this.index(e),this.proxyOf.nodes[e].parent=void 0,this.proxyOf.nodes.splice(e,1);for(let n in this.indexes)t=this.indexes[n],t>=e&&(this.indexes[n]=t-1);return this.markDirty(),this}replaceValues(e,t,n){return n||(n=t,t={}),this.walkDecls((o=>{t.props&&!t.props.includes(o.prop)||t.fast&&!o.value.includes(t.fast)||(o.value=o.value.replace(e,n))})),this.markDirty(),this}some(e){return this.nodes.some(e)}walk(e){return this.each(((t,n)=>{let o;try{o=e(t,n)}catch(r){throw t.addToError(r)}return!1!==o&&t.walk&&(o=t.walk(e)),o}))}walkAtRules(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("atrule"===n.type&&e.test(n.name))return t(n,o)})):this.walk(((n,o)=>{if("atrule"===n.type&&n.name===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("atrule"===e.type)return t(e,n)})))}walkComments(e){return this.walk(((t,n)=>{if("comment"===t.type)return e(t,n)}))}walkDecls(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("decl"===n.type&&e.test(n.prop))return t(n,o)})):this.walk(((n,o)=>{if("decl"===n.type&&n.prop===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("decl"===e.type)return t(e,n)})))}walkRules(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("rule"===n.type&&e.test(n.selector))return t(n,o)})):this.walk(((n,o)=>{if("rule"===n.type&&n.selector===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("rule"===e.type)return t(e,n)})))}get first(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}get last(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}};ei.registerParse=e=>{qr=e},ei.registerRule=e=>{Wr=e},ei.registerAtRule=e=>{Gr=e},ei.registerRoot=e=>{Vr=e};var ti=ei;ei.default=ei,ei.rebuild=e=>{"atrule"===e.type?Object.setPrototypeOf(e,Gr.prototype):"rule"===e.type?Object.setPrototypeOf(e,Wr.prototype):"decl"===e.type?Object.setPrototypeOf(e,Kr.prototype):"comment"===e.type?Object.setPrototypeOf(e,Yr.prototype):"root"===e.type&&Object.setPrototypeOf(e,Vr.prototype),e[Zr]=!0,e.nodes&&e.nodes.forEach((e=>{ei.rebuild(e)}))};let ni,oi,ri=ti,ii=class extends ri{constructor(e){super({type:"document",...e}),this.nodes||(this.nodes=[])}toResult(e={}){return new ni(new oi,this,e).stringify()}};ii.registerLazyResult=e=>{ni=e},ii.registerProcessor=e=>{oi=e};var ai=ii;ii.default=ii;let si=class{constructor(e,t={}){if(this.type="warning",this.text=e,t.node&&t.node.source){let e=t.node.rangeBy(t);this.line=e.start.line,this.column=e.start.column,this.endLine=e.end.line,this.endColumn=e.end.column}for(let n in t)this[n]=t[n]}toString(){return this.node?this.node.error(this.text,{index:this.index,plugin:this.plugin,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text}};var li=si;si.default=si;let ci=li,ui=class{constructor(e,t,n){this.processor=e,this.messages=[],this.root=t,this.opts=n,this.css=void 0,this.map=void 0}toString(){return this.css}warn(e,t={}){t.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(t.plugin=this.lastPlugin.postcssPlugin);let n=new ci(e,t);return this.messages.push(n),n}warnings(){return this.messages.filter((e=>"warning"===e.type))}get content(){return this.css}};var di=ui;ui.default=ui;const pi="'".charCodeAt(0),hi='"'.charCodeAt(0),fi="\\".charCodeAt(0),mi="/".charCodeAt(0),gi="\n".charCodeAt(0),vi=" ".charCodeAt(0),yi="\f".charCodeAt(0),bi="\t".charCodeAt(0),wi="\r".charCodeAt(0),ki="[".charCodeAt(0),xi="]".charCodeAt(0),Si="(".charCodeAt(0),Ci=")".charCodeAt(0),Ii="{".charCodeAt(0),Oi="}".charCodeAt(0),Ei=";".charCodeAt(0),Ti="*".charCodeAt(0),Li=":".charCodeAt(0),Ai="@".charCodeAt(0),Mi=/[\t\n\f\r "#'()/;[\\\]{}]/g,Ri=/[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g,Pi=/.[\r\n"'(/\\]/,Di=/[\da-f]/i;let Ni=ti,ji=class extends Ni{constructor(e){super(e),this.type="atrule"}append(...e){return this.proxyOf.nodes||(this.nodes=[]),super.append(...e)}prepend(...e){return this.proxyOf.nodes||(this.nodes=[]),super.prepend(...e)}};var Fi=ji;ji.default=ji,Ni.registerAtRule(ji);let Bi,_i,Ui=ti,Hi=class extends Ui{constructor(e){super(e),this.type="root",this.nodes||(this.nodes=[])}normalize(e,t,n){let o=super.normalize(e);if(t)if("prepend"===n)this.nodes.length>1?t.raws.before=this.nodes[1].raws.before:delete t.raws.before;else if(this.first!==t)for(let r of o)r.raws.before=t.raws.before;return o}removeChild(e,t){let n=this.index(e);return!t&&0===n&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[n].raws.before),super.removeChild(e)}toResult(e={}){return new Bi(new _i,this,e).stringify()}};Hi.registerLazyResult=e=>{Bi=e},Hi.registerProcessor=e=>{_i=e};var zi=Hi;Hi.default=Hi,Ui.registerRoot(Hi);let qi={comma:e=>qi.split(e,[","],!0),space:e=>qi.split(e,[" ","\n","\t"]),split(e,t,n){let o=[],r="",i=!1,a=0,s=!1,l="",c=!1;for(let u of e)c?c=!1:"\\"===u?c=!0:s?u===l&&(s=!1):'"'===u||"'"===u?(s=!0,l=u):"("===u?a+=1:")"===u?a>0&&(a-=1):0===a&&t.includes(u)&&(i=!0),i?(""!==r&&o.push(r.trim()),r="",i=!1):r+=u;return(n||""!==r)&&o.push(r.trim()),o}};var Wi=qi;qi.default=qi;let Gi=ti,Vi=Wi,Ji=class extends Gi{constructor(e){super(e),this.type="rule",this.nodes||(this.nodes=[])}get selectors(){return Vi.comma(this.selector)}set selectors(e){let t=this.selector?this.selector.match(/,\s*/):null,n=t?t[0]:","+this.raw("between","beforeOpen");this.selector=e.join(n)}};var Zi=Ji;Ji.default=Ji,Gi.registerRule(Ji);let Ki=rr,Yi=function(e,t={}){let n,o,r,i,a,s,l,c,u,d,p=e.css.valueOf(),h=t.ignoreErrors,f=p.length,m=0,g=[],v=[];function y(t){throw e.error("Unclosed "+t,m)}return{back:function(e){v.push(e)},endOfFile:function(){return 0===v.length&&m>=f},nextToken:function(e){if(v.length)return v.pop();if(m>=f)return;let t=!!e&&e.ignoreUnclosed;switch(n=p.charCodeAt(m),n){case gi:case vi:case bi:case wi:case yi:o=m;do{o+=1,n=p.charCodeAt(o)}while(n===vi||n===gi||n===bi||n===wi||n===yi);d=["space",p.slice(m,o)],m=o-1;break;case ki:case xi:case Ii:case Oi:case Li:case Ei:case Ci:{let e=String.fromCharCode(n);d=[e,e,m];break}case Si:if(c=g.length?g.pop()[1]:"",u=p.charCodeAt(m+1),"url"===c&&u!==pi&&u!==hi&&u!==vi&&u!==gi&&u!==bi&&u!==yi&&u!==wi){o=m;do{if(s=!1,o=p.indexOf(")",o+1),-1===o){if(h||t){o=m;break}y("bracket")}for(l=o;p.charCodeAt(l-1)===fi;)l-=1,s=!s}while(s);d=["brackets",p.slice(m,o+1),m,o],m=o}else o=p.indexOf(")",m+1),i=p.slice(m,o+1),-1===o||Pi.test(i)?d=["(","(",m]:(d=["brackets",i,m,o],m=o);break;case pi:case hi:r=n===pi?"'":'"',o=m;do{if(s=!1,o=p.indexOf(r,o+1),-1===o){if(h||t){o=m+1;break}y("string")}for(l=o;p.charCodeAt(l-1)===fi;)l-=1,s=!s}while(s);d=["string",p.slice(m,o+1),m,o],m=o;break;case Ai:Mi.lastIndex=m+1,Mi.test(p),o=0===Mi.lastIndex?p.length-1:Mi.lastIndex-2,d=["at-word",p.slice(m,o+1),m,o],m=o;break;case fi:for(o=m,a=!0;p.charCodeAt(o+1)===fi;)o+=1,a=!a;if(n=p.charCodeAt(o+1),a&&n!==mi&&n!==vi&&n!==gi&&n!==bi&&n!==wi&&n!==yi&&(o+=1,Di.test(p.charAt(o)))){for(;Di.test(p.charAt(o+1));)o+=1;p.charCodeAt(o+1)===vi&&(o+=1)}d=["word",p.slice(m,o+1),m,o],m=o;break;default:n===mi&&p.charCodeAt(m+1)===Ti?(o=p.indexOf("*/",m+2)+1,0===o&&(h||t?o=p.length:y("comment")),d=["comment",p.slice(m,o+1),m,o],m=o):(Ri.lastIndex=m+1,Ri.test(p),o=0===Ri.lastIndex?p.length-1:Ri.lastIndex-2,d=["word",p.slice(m,o+1),m,o],g.push(d),m=o)}return m++,d},position:function(){return m}}},Xi=zr,$i=Fi,Qi=zi,ea=Zi;const ta={empty:!0,space:!0};var na=class{constructor(e){this.input=e,this.root=new Qi,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:e,start:{column:1,line:1,offset:0}}}atrule(e){let t,n,o,r=new $i;r.name=e[1].slice(1),""===r.name&&this.unnamedAtrule(r,e),this.init(r,e[2]);let i=!1,a=!1,s=[],l=[];for(;!this.tokenizer.endOfFile();){if(t=(e=this.tokenizer.nextToken())[0],"("===t||"["===t?l.push("("===t?")":"]"):"{"===t&&l.length>0?l.push("}"):t===l[l.length-1]&&l.pop(),0===l.length){if(";"===t){r.source.end=this.getPosition(e[2]),r.source.end.offset++,this.semicolon=!0;break}if("{"===t){a=!0;break}if("}"===t){if(s.length>0){for(o=s.length-1,n=s[o];n&&"space"===n[0];)n=s[--o];n&&(r.source.end=this.getPosition(n[3]||n[2]),r.source.end.offset++)}this.end(e);break}s.push(e)}else s.push(e);if(this.tokenizer.endOfFile()){i=!0;break}}r.raws.between=this.spacesAndCommentsFromEnd(s),s.length?(r.raws.afterName=this.spacesAndCommentsFromStart(s),this.raw(r,"params",s),i&&(e=s[s.length-1],r.source.end=this.getPosition(e[3]||e[2]),r.source.end.offset++,this.spaces=r.raws.between,r.raws.between="")):(r.raws.afterName="",r.params=""),a&&(r.nodes=[],this.current=r)}checkMissedSemicolon(e){let t=this.colon(e);if(!1===t)return;let n,o=0;for(let r=t-1;r>=0&&(n=e[r],"space"===n[0]||(o+=1,2!==o));r--);throw this.input.error("Missed semicolon","word"===n[0]?n[3]+1:n[2])}colon(e){let t,n,o,r=0;for(let[i,a]of e.entries()){if(t=a,n=t[0],"("===n&&(r+=1),")"===n&&(r-=1),0===r&&":"===n){if(o){if("word"===o[0]&&"progid"===o[1])continue;return i}this.doubleColon(t)}o=t}return!1}comment(e){let t=new Xi;this.init(t,e[2]),t.source.end=this.getPosition(e[3]||e[2]),t.source.end.offset++;let n=e[1].slice(2,-2);if(/^\s*$/.test(n))t.text="",t.raws.left=n,t.raws.right="";else{let e=n.match(/^(\s*)([^]*\S)(\s*)$/);t.text=e[2],t.raws.left=e[1],t.raws.right=e[3]}}createTokenizer(){this.tokenizer=Yi(this.input)}decl(e,t){let n=new Ki;this.init(n,e[0][2]);let o,r=e[e.length-1];for(";"===r[0]&&(this.semicolon=!0,e.pop()),n.source.end=this.getPosition(r[3]||r[2]||function(e){for(let t=e.length-1;t>=0;t--){let n=e[t],o=n[3]||n[2];if(o)return o}}(e)),n.source.end.offset++;"word"!==e[0][0];)1===e.length&&this.unknownWord(e),n.raws.before+=e.shift()[1];for(n.source.start=this.getPosition(e[0][2]),n.prop="";e.length;){let t=e[0][0];if(":"===t||"space"===t||"comment"===t)break;n.prop+=e.shift()[1]}for(n.raws.between="";e.length;){if(o=e.shift(),":"===o[0]){n.raws.between+=o[1];break}"word"===o[0]&&/\w/.test(o[1])&&this.unknownWord([o]),n.raws.between+=o[1]}"_"!==n.prop[0]&&"*"!==n.prop[0]||(n.raws.before+=n.prop[0],n.prop=n.prop.slice(1));let i,a=[];for(;e.length&&(i=e[0][0],"space"===i||"comment"===i);)a.push(e.shift());this.precheckMissedSemicolon(e);for(let s=e.length-1;s>=0;s--){if(o=e[s],"!important"===o[1].toLowerCase()){n.important=!0;let t=this.stringFrom(e,s);t=this.spacesFromEnd(e)+t," !important"!==t&&(n.raws.important=t);break}if("important"===o[1].toLowerCase()){let t=e.slice(0),o="";for(let e=s;e>0;e--){let n=t[e][0];if(0===o.trim().indexOf("!")&&"space"!==n)break;o=t.pop()[1]+o}0===o.trim().indexOf("!")&&(n.important=!0,n.raws.important=o,e=t)}if("space"!==o[0]&&"comment"!==o[0])break}e.some((e=>"space"!==e[0]&&"comment"!==e[0]))&&(n.raws.between+=a.map((e=>e[1])).join(""),a=[]),this.raw(n,"value",a.concat(e),t),n.value.includes(":")&&!t&&this.checkMissedSemicolon(e)}doubleColon(e){throw this.input.error("Double colon",{offset:e[2]},{offset:e[2]+e[1].length})}emptyRule(e){let t=new ea;this.init(t,e[2]),t.selector="",t.raws.between="",this.current=t}end(e){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(e[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(e)}endFile(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position())}freeSemicolon(e){if(this.spaces+=e[1],this.current.nodes){let e=this.current.nodes[this.current.nodes.length-1];e&&"rule"===e.type&&!e.raws.ownSemicolon&&(e.raws.ownSemicolon=this.spaces,this.spaces="")}}getPosition(e){let t=this.input.fromOffset(e);return{column:t.col,line:t.line,offset:e}}init(e,t){this.current.push(e),e.source={input:this.input,start:this.getPosition(t)},e.raws.before=this.spaces,this.spaces="","comment"!==e.type&&(this.semicolon=!1)}other(e){let t=!1,n=null,o=!1,r=null,i=[],a=e[1].startsWith("--"),s=[],l=e;for(;l;){if(n=l[0],s.push(l),"("===n||"["===n)r||(r=l),i.push("("===n?")":"]");else if(a&&o&&"{"===n)r||(r=l),i.push("}");else if(0===i.length){if(";"===n){if(o)return void this.decl(s,a);break}if("{"===n)return void this.rule(s);if("}"===n){this.tokenizer.back(s.pop()),t=!0;break}":"===n&&(o=!0)}else n===i[i.length-1]&&(i.pop(),0===i.length&&(r=null));l=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(t=!0),i.length>0&&this.unclosedBracket(r),t&&o){if(!a)for(;s.length&&(l=s[s.length-1][0],"space"===l||"comment"===l);)this.tokenizer.back(s.pop());this.decl(s,a)}else this.unknownWord(s)}parse(){let e;for(;!this.tokenizer.endOfFile();)switch(e=this.tokenizer.nextToken(),e[0]){case"space":this.spaces+=e[1];break;case";":this.freeSemicolon(e);break;case"}":this.end(e);break;case"comment":this.comment(e);break;case"at-word":this.atrule(e);break;case"{":this.emptyRule(e);break;default:this.other(e)}this.endFile()}precheckMissedSemicolon(){}raw(e,t,n,o){let r,i,a,s,l=n.length,c="",u=!0;for(let d=0;de+t[1]),"");e.raws[t]={raw:o,value:c}}e[t]=c}rule(e){e.pop();let t=new ea;this.init(t,e[0][2]),t.raws.between=this.spacesAndCommentsFromEnd(e),this.raw(t,"selector",e),this.current=t}spacesAndCommentsFromEnd(e){let t,n="";for(;e.length&&(t=e[e.length-1][0],"space"===t||"comment"===t);)n=e.pop()[1]+n;return n}spacesAndCommentsFromStart(e){let t,n="";for(;e.length&&(t=e[0][0],"space"===t||"comment"===t);)n+=e.shift()[1];return n}spacesFromEnd(e){let t,n="";for(;e.length&&(t=e[e.length-1][0],"space"===t);)n=e.pop()[1]+n;return n}stringFrom(e,t){let n="";for(let o=t;oCa(e))),e}let Ia={},Oa=class e{constructor(t,n,o){let r;if(this.stringified=!1,this.processed=!1,"object"!=typeof n||null===n||"root"!==n.type&&"document"!==n.type)if(n instanceof e||n instanceof fa)r=Ca(n.root),n.map&&(void 0===o.map&&(o.map={}),o.map.inline||(o.map.inline=!1),o.map.prev=n.map);else{let e=ma;o.syntax&&(e=o.syntax.parse),o.parser&&(e=o.parser),e.parse&&(e=e.parse);try{r=e(n,o)}catch(i){this.processed=!0,this.error=i}r&&!r[ca]&&pa.rebuild(r)}else r=Ca(n);this.result=new fa(t,r,o),this.helpers={...Ia,postcss:Ia,result:this.result},this.plugins=this.processor.plugins.map((e=>"object"==typeof e&&e.prepare?{...e,...e.prepare(this.result)}:e))}async(){return this.error?Promise.reject(this.error):this.processed?Promise.resolve(this.result):(this.processing||(this.processing=this.runAsync()),this.processing)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}getAsyncError(){throw new Error("Use process(css).then(cb) to work with async plugins")}handleError(e,t){let n=this.result.lastPlugin;try{t&&t.addToError(e),this.error=e,"CssSyntaxError"!==e.name||e.plugin?n.postcssVersion:(e.plugin=n.postcssPlugin,e.setMessage())}catch(o){console&&console.error&&console.error(o)}return e}prepareVisitors(){this.listeners={};let e=(e,t,n)=>{this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].push([e,n])};for(let t of this.plugins)if("object"==typeof t)for(let n in t){if(!ya[n]&&/^[A-Z]/.test(n))throw new Error(`Unknown event ${n} in ${t.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`);if(!ba[n])if("object"==typeof t[n])for(let o in t[n])e(t,"*"===o?n:n+"-"+o.toLowerCase(),t[n][o]);else"function"==typeof t[n]&&e(t,n,t[n])}this.hasListener=Object.keys(this.listeners).length>0}async runAsync(){this.plugin=0;for(let n=0;n0;){let e=this.visitTick(n);if(ka(e))try{await e}catch(t){let e=n[n.length-1].node;throw this.handleError(t,e)}}}if(this.listeners.OnceExit)for(let[n,o]of this.listeners.OnceExit){this.result.lastPlugin=n;try{if("document"===e.type){let t=e.nodes.map((e=>o(e,this.helpers)));await Promise.all(t)}else await o(e,this.helpers)}catch(t){throw this.handleError(t)}}}return this.processed=!0,this.stringify()}runOnRoot(e){this.result.lastPlugin=e;try{if("object"==typeof e&&e.Once){if("document"===this.result.root.type){let t=this.result.root.nodes.map((t=>e.Once(t,this.helpers)));return ka(t[0])?Promise.all(t):t}return e.Once(this.result.root,this.helpers)}if("function"==typeof e)return e(this.result.root,this.result)}catch(t){throw this.handleError(t)}}stringify(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();let e=this.result.opts,t=da;e.syntax&&(t=e.syntax.stringify),e.stringifier&&(t=e.stringifier),t.stringify&&(t=t.stringify);let n=new ua(t,this.result.root,this.result.opts).generate();return this.result.css=n[0],this.result.map=n[1],this.result}sync(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(let e of this.plugins){if(ka(this.runOnRoot(e)))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){let e=this.result.root;for(;!e[la];)e[la]=!0,this.walkSync(e);if(this.listeners.OnceExit)if("document"===e.type)for(let t of e.nodes)this.visitSync(this.listeners.OnceExit,t);else this.visitSync(this.listeners.OnceExit,e)}return this.result}then(e,t){return this.async().then(e,t)}toString(){return this.css}visitSync(e,t){for(let[o,r]of e){let e;this.result.lastPlugin=o;try{e=r(t,this.helpers)}catch(n){throw this.handleError(n,t.proxyOf)}if("root"!==t.type&&"document"!==t.type&&!t.parent)return!0;if(ka(e))throw this.getAsyncError()}}visitTick(e){let t=e[e.length-1],{node:n,visitors:o}=t;if("root"!==n.type&&"document"!==n.type&&!n.parent)return void e.pop();if(o.length>0&&t.visitorIndex{e[la]||this.walkSync(e)}));else{let t=this.listeners[n];if(t&&this.visitSync(t,e.toProxy()))return}}warnings(){return this.sync().warnings()}get content(){return this.stringify().content}get css(){return this.stringify().css}get map(){return this.stringify().map}get messages(){return this.sync().messages}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){return this.sync().root}get[Symbol.toStringTag](){return"LazyResult"}};Oa.registerPostcss=e=>{Ia=e};var Ea=Oa;Oa.default=Oa,ga.registerLazyResult(Oa),ha.registerLazyResult(Oa);let Ta=_r,La=Jo,Aa=sa;const Ma=di;let Ra=class{constructor(e,t,n){let o;t=t.toString(),this.stringified=!1,this._processor=e,this._css=t,this._opts=n,this._map=void 0;let r=La;this.result=new Ma(this._processor,o,this._opts),this.result.css=t;let i=this;Object.defineProperty(this.result,"root",{get:()=>i.root});let a=new Ta(r,o,this._opts,t);if(a.isMap()){let[e,t]=a.generate();e&&(this.result.css=e),t&&(this.result.map=t)}else a.clearAnnotation(),this.result.css=a.css}async(){return this.error?Promise.reject(this.error):Promise.resolve(this.result)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}sync(){if(this.error)throw this.error;return this.result}then(e,t){return this.async().then(e,t)}toString(){return this._css}warnings(){return[]}get content(){return this.result.css}get css(){return this.result.css}get map(){return this.result.map}get messages(){return[]}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){if(this._root)return this._root;let e,t=Aa;try{e=t(this._css,this._opts)}catch(n){this.error=n}if(this.error)throw this.error;return this._root=e,e}get[Symbol.toStringTag](){return"NoWorkResult"}};var Pa=Ra;Ra.default=Ra;let Da=Pa,Na=Ea,ja=ai,Fa=zi,Ba=class{constructor(e=[]){this.version="8.4.38",this.plugins=this.normalize(e)}normalize(e){let t=[];for(let n of e)if(!0===n.postcss?n=n():n.postcss&&(n=n.postcss),"object"==typeof n&&Array.isArray(n.plugins))t=t.concat(n.plugins);else if("object"==typeof n&&n.postcssPlugin)t.push(n);else if("function"==typeof n)t.push(n);else{if("object"!=typeof n||!n.parse&&!n.stringify)throw new Error(n+" is not a PostCSS plugin")}return t}process(e,t={}){return this.plugins.length||t.parser||t.stringifier||t.syntax?new Na(this,e,t):new Da(this,e,t)}use(e){return this.plugins=this.plugins.concat(this.normalize([e])),this}};var _a=Ba;Ba.default=Ba,Fa.registerProcessor(Ba),ja.registerProcessor(Ba);let Ua=rr,Ha=hr,za=zr,qa=Fi,Wa=Tr,Ga=zi,Va=Zi;function Ja(e,t){if(Array.isArray(e))return e.map((e=>Ja(e)));let{inputs:n,...o}=e;if(n){t=[];for(let e of n){let n={...e,__proto__:Wa.prototype};n.map&&(n.map={...n.map,__proto__:Ha.prototype}),t.push(n)}}if(o.nodes&&(o.nodes=e.nodes.map((e=>Ja(e,t)))),o.source){let{inputId:e,...n}=o.source;o.source=n,null!=e&&(o.source.input=t[e])}if("root"===o.type)return new Ga(o);if("decl"===o.type)return new Ua(o);if("rule"===o.type)return new Va(o);if("comment"===o.type)return new za(o);if("atrule"===o.type)return new qa(o);throw new Error("Unknown node type: "+e.type)}var Za=Ja;Ja.default=Ja;let Ka=Uo,Ya=rr,Xa=Ea,$a=ti,Qa=_a,es=Jo,ts=Za,ns=ai,os=li,rs=zr,is=Fi,as=di,ss=Tr,ls=sa,cs=Wi,us=Zi,ds=zi,ps=tr;function hs(...e){return 1===e.length&&Array.isArray(e[0])&&(e=e[0]),new Qa(e)}hs.plugin=function(e,t){let n,o=!1;function r(...n){console&&console.warn&&!o&&(o=!0,console.warn(e+": postcss.plugin was deprecated. Migration guide:\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration"),process.env.LANG&&process.env.LANG.startsWith("cn")&&console.warn(e+": 里面 postcss.plugin 被弃用. 迁移指南:\nhttps://www.w3ctech.com/topic/2226"));let r=t(...n);return r.postcssPlugin=e,r.postcssVersion=(new Qa).version,r}return Object.defineProperty(r,"postcss",{get:()=>(n||(n=r()),n)}),r.process=function(e,t,n){return hs([r(n)]).process(e,t)},r},hs.stringify=es,hs.parse=ls,hs.fromJSON=ts,hs.list=cs,hs.comment=e=>new rs(e),hs.atRule=e=>new is(e),hs.decl=e=>new Ya(e),hs.rule=e=>new us(e),hs.root=e=>new ds(e),hs.document=e=>new ns(e),hs.CssSyntaxError=Ka,hs.Declaration=Ya,hs.Container=$a,hs.Processor=Qa,hs.Document=ns,hs.Comment=rs,hs.Warning=os,hs.AtRule=is,hs.Result=as,hs.Input=ss,hs.Rule=us,hs.Root=ds,hs.Node=ps,Xa.registerPostcss(hs);var fs=hs;hs.default=hs;const ms=Ao(fs);ms.stringify,ms.fromJSON,ms.plugin,ms.parse,ms.list,ms.document,ms.comment,ms.atRule,ms.rule,ms.decl,ms.root,ms.CssSyntaxError,ms.Declaration,ms.Container,ms.Processor,ms.Document,ms.Comment,ms.Warning,ms.AtRule,ms.Result,ms.Input,ms.Rule,ms.Root,ms.Node;var gs=Object.defineProperty,vs=(e,t,n)=>((e,t,n)=>t in e?gs(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,"symbol"!=typeof t?t+"":t,n);function ys(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function bs(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var n=function e(){return this instanceof e?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,o.get?o:{enumerable:!0,get:function(){return e[t]}})})),n}var ws={exports:{}},ks=String,xs=function(){return{isColorSupported:!1,reset:ks,bold:ks,dim:ks,italic:ks,underline:ks,inverse:ks,hidden:ks,strikethrough:ks,black:ks,red:ks,green:ks,yellow:ks,blue:ks,magenta:ks,cyan:ks,white:ks,gray:ks,bgBlack:ks,bgRed:ks,bgGreen:ks,bgYellow:ks,bgBlue:ks,bgMagenta:ks,bgCyan:ks,bgWhite:ks}};ws.exports=xs(),ws.exports.createColors=xs;var Ss=ws.exports;const Cs=bs(Object.freeze(Object.defineProperty({__proto__:null,default:{}},Symbol.toStringTag,{value:"Module"})));let Is=Ss,Os=Cs,Es=class e extends Error{constructor(t,n,o,r,i,a){super(t),this.name="CssSyntaxError",this.reason=t,i&&(this.file=i),r&&(this.source=r),a&&(this.plugin=a),void 0!==n&&void 0!==o&&("number"==typeof n?(this.line=n,this.column=o):(this.line=n.line,this.column=n.column,this.endLine=o.line,this.endColumn=o.column)),this.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(this,e)}setMessage(){this.message=this.plugin?this.plugin+": ":"",this.message+=this.file?this.file:"",void 0!==this.line&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason}showSourceCode(e){if(!this.source)return"";let t=this.source;null==e&&(e=Is.isColorSupported),Os&&e&&(t=Os(t));let n,o,r=t.split(/\r?\n/),i=Math.max(this.line-3,0),a=Math.min(this.line+2,r.length),s=String(a).length;if(e){let{bold:e,gray:t,red:r}=Is.createColors(!0);n=t=>e(r(t)),o=e=>t(e)}else n=o=e=>e;return r.slice(i,a).map(((e,t)=>{let r=i+1+t,a=" "+(" "+r).slice(-s)+" | ";if(r===this.line){let t=o(a.replace(/\d/g," "))+e.slice(0,this.column-1).replace(/[^\t]/g," ");return n(">")+o(a)+e+"\n "+t+n("^")}return" "+o(a)+e})).join("\n")}toString(){let e=this.showSourceCode();return e&&(e="\n\n"+e+"\n"),this.name+": "+this.message+e}};var Ts=Es;Es.default=Es;var Ls={};Ls.isClean=Symbol("isClean"),Ls.my=Symbol("my");const As={after:"\n",beforeClose:"\n",beforeComment:"\n",beforeDecl:"\n",beforeOpen:" ",beforeRule:"\n",colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:!1};let Ms=class{constructor(e){this.builder=e}atrule(e,t){let n="@"+e.name,o=e.params?this.rawValue(e,"params"):"";if(void 0!==e.raws.afterName?n+=e.raws.afterName:o&&(n+=" "),e.nodes)this.block(e,n+o);else{let r=(e.raws.between||"")+(t?";":"");this.builder(n+o+r,e)}}beforeAfter(e,t){let n;n="decl"===e.type?this.raw(e,null,"beforeDecl"):"comment"===e.type?this.raw(e,null,"beforeComment"):"before"===t?this.raw(e,null,"beforeRule"):this.raw(e,null,"beforeClose");let o=e.parent,r=0;for(;o&&"root"!==o.type;)r+=1,o=o.parent;if(n.includes("\n")){let t=this.raw(e,null,"indent");if(t.length)for(let e=0;e0&&"comment"===e.nodes[t].type;)t-=1;let n=this.raw(e,"semicolon");for(let o=0;o{if(o=e.raws[t],void 0!==o)return!1}))}var a;return void 0===o&&(o=As[n]),i.rawCache[n]=o,o}rawBeforeClose(e){let t;return e.walk((e=>{if(e.nodes&&e.nodes.length>0&&void 0!==e.raws.after)return t=e.raws.after,t.includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1})),t&&(t=t.replace(/\S/g,"")),t}rawBeforeComment(e,t){let n;return e.walkComments((e=>{if(void 0!==e.raws.before)return n=e.raws.before,n.includes("\n")&&(n=n.replace(/[^\n]+$/,"")),!1})),void 0===n?n=this.raw(t,null,"beforeDecl"):n&&(n=n.replace(/\S/g,"")),n}rawBeforeDecl(e,t){let n;return e.walkDecls((e=>{if(void 0!==e.raws.before)return n=e.raws.before,n.includes("\n")&&(n=n.replace(/[^\n]+$/,"")),!1})),void 0===n?n=this.raw(t,null,"beforeRule"):n&&(n=n.replace(/\S/g,"")),n}rawBeforeOpen(e){let t;return e.walk((e=>{if("decl"!==e.type&&(t=e.raws.between,void 0!==t))return!1})),t}rawBeforeRule(e){let t;return e.walk((n=>{if(n.nodes&&(n.parent!==e||e.first!==n)&&void 0!==n.raws.before)return t=n.raws.before,t.includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1})),t&&(t=t.replace(/\S/g,"")),t}rawColon(e){let t;return e.walkDecls((e=>{if(void 0!==e.raws.between)return t=e.raws.between.replace(/[^\s:]/g,""),!1})),t}rawEmptyBody(e){let t;return e.walk((e=>{if(e.nodes&&0===e.nodes.length&&(t=e.raws.after,void 0!==t))return!1})),t}rawIndent(e){if(e.raws.indent)return e.raws.indent;let t;return e.walk((n=>{let o=n.parent;if(o&&o!==e&&o.parent&&o.parent===e&&void 0!==n.raws.before){let e=n.raws.before.split("\n");return t=e[e.length-1],t=t.replace(/\S/g,""),!1}})),t}rawSemicolon(e){let t;return e.walk((e=>{if(e.nodes&&e.nodes.length&&"decl"===e.last.type&&(t=e.raws.semicolon,void 0!==t))return!1})),t}rawValue(e,t){let n=e[t],o=e.raws[t];return o&&o.value===n?o.raw:n}root(e){this.body(e),e.raws.after&&this.builder(e.raws.after)}rule(e){this.block(e,this.rawValue(e,"selector")),e.raws.ownSemicolon&&this.builder(e.raws.ownSemicolon,e,"end")}stringify(e,t){if(!this[e.type])throw new Error("Unknown AST node type "+e.type+". Maybe you need to change PostCSS stringifier.");this[e.type](e,t)}};var Rs=Ms;Ms.default=Ms;let Ps=Rs;function Ds(e,t){new Ps(t).stringify(e)}var Ns=Ds;Ds.default=Ds;let{isClean:js,my:Fs}=Ls,Bs=Ts,_s=Rs,Us=Ns;function Hs(e,t){let n=new e.constructor;for(let o in e){if(!Object.prototype.hasOwnProperty.call(e,o))continue;if("proxyCache"===o)continue;let r=e[o],i=typeof r;"parent"===o&&"object"===i?t&&(n[o]=t):"source"===o?n[o]=r:Array.isArray(r)?n[o]=r.map((e=>Hs(e,n))):("object"===i&&null!==r&&(r=Hs(r)),n[o]=r)}return n}let zs=class{constructor(e={}){this.raws={},this[js]=!1,this[Fs]=!0;for(let t in e)if("nodes"===t){this.nodes=[];for(let n of e[t])"function"==typeof n.clone?this.append(n.clone()):this.append(n)}else this[t]=e[t]}addToError(e){if(e.postcssNode=this,e.stack&&this.source&&/\n\s{4}at /.test(e.stack)){let t=this.source;e.stack=e.stack.replace(/\n\s{4}at /,`$&${t.input.from}:${t.start.line}:${t.start.column}$&`)}return e}after(e){return this.parent.insertAfter(this,e),this}assign(e={}){for(let t in e)this[t]=e[t];return this}before(e){return this.parent.insertBefore(this,e),this}cleanRaws(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between}clone(e={}){let t=Hs(this);for(let n in e)t[n]=e[n];return t}cloneAfter(e={}){let t=this.clone(e);return this.parent.insertAfter(this,t),t}cloneBefore(e={}){let t=this.clone(e);return this.parent.insertBefore(this,t),t}error(e,t={}){if(this.source){let{end:n,start:o}=this.rangeBy(t);return this.source.input.error(e,{column:o.column,line:o.line},{column:n.column,line:n.line},t)}return new Bs(e)}getProxyProcessor(){return{get:(e,t)=>"proxyOf"===t?e:"root"===t?()=>e.root().toProxy():e[t],set:(e,t,n)=>(e[t]===n||(e[t]=n,"prop"!==t&&"value"!==t&&"name"!==t&&"params"!==t&&"important"!==t&&"text"!==t||e.markDirty()),!0)}}markDirty(){if(this[js]){this[js]=!1;let e=this;for(;e=e.parent;)e[js]=!1}}next(){if(!this.parent)return;let e=this.parent.index(this);return this.parent.nodes[e+1]}positionBy(e,t){let n=this.source.start;if(e.index)n=this.positionInside(e.index,t);else if(e.word){let o=(t=this.toString()).indexOf(e.word);-1!==o&&(n=this.positionInside(o,t))}return n}positionInside(e,t){let n=t||this.toString(),o=this.source.start.column,r=this.source.start.line;for(let i=0;i"object"==typeof e&&e.toJSON?e.toJSON(null,t):e));else if("object"==typeof e&&e.toJSON)n[i]=e.toJSON(null,t);else if("source"===i){let o=t.get(e.input);null==o&&(o=r,t.set(e.input,r),r++),n[i]={end:e.end,inputId:o,start:e.start}}else n[i]=e}return o&&(n.inputs=[...t.keys()].map((e=>e.toJSON()))),n}toProxy(){return this.proxyCache||(this.proxyCache=new Proxy(this,this.getProxyProcessor())),this.proxyCache}toString(e=Us){e.stringify&&(e=e.stringify);let t="";return e(this,(e=>{t+=e})),t}warn(e,t,n){let o={node:this};for(let r in n)o[r]=n[r];return e.warn(t,o)}get proxyOf(){return this}};var qs=zs;zs.default=zs;let Ws=qs,Gs=class extends Ws{constructor(e){e&&void 0!==e.value&&"string"!=typeof e.value&&(e={...e,value:String(e.value)}),super(e),this.type="decl"}get variable(){return this.prop.startsWith("--")||"$"===this.prop[0]}};var Vs=Gs;Gs.default=Gs;var Js={nanoid:(e=21)=>{let t="",n=e;for(;n--;)t+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[64*Math.random()|0];return t},customAlphabet:(e,t=21)=>(n=t)=>{let o="",r=n;for(;r--;)o+=e[Math.random()*e.length|0];return o}};let{SourceMapConsumer:Zs,SourceMapGenerator:Ks}=Cs,{existsSync:Ys,readFileSync:Xs}=Cs,{dirname:$s,join:Qs}=Cs;let el=class{constructor(e,t){if(!1===t.map)return;this.loadAnnotation(e),this.inline=this.startWith(this.annotation,"data:");let n=t.map?t.map.prev:void 0,o=this.loadMap(t.from,n);!this.mapFile&&t.from&&(this.mapFile=t.from),this.mapFile&&(this.root=$s(this.mapFile)),o&&(this.text=o)}consumer(){return this.consumerCache||(this.consumerCache=new Zs(this.text)),this.consumerCache}decodeInline(e){if(/^data:application\/json;charset=utf-?8,/.test(e)||/^data:application\/json,/.test(e))return decodeURIComponent(e.substr(RegExp.lastMatch.length));if(/^data:application\/json;charset=utf-?8;base64,/.test(e)||/^data:application\/json;base64,/.test(e))return t=e.substr(RegExp.lastMatch.length),Buffer?Buffer.from(t,"base64").toString():window.atob(t);var t;let n=e.match(/data:application\/json;([^,]+),/)[1];throw new Error("Unsupported source map encoding "+n)}getAnnotationURL(e){return e.replace(/^\/\*\s*# sourceMappingURL=/,"").trim()}isMap(e){return"object"==typeof e&&("string"==typeof e.mappings||"string"==typeof e._mappings||Array.isArray(e.sections))}loadAnnotation(e){let t=e.match(/\/\*\s*# sourceMappingURL=/gm);if(!t)return;let n=e.lastIndexOf(t.pop()),o=e.indexOf("*/",n);n>-1&&o>-1&&(this.annotation=this.getAnnotationURL(e.substring(n,o)))}loadFile(e){if(this.root=$s(e),Ys(e))return this.mapFile=e,Xs(e,"utf-8").toString().trim()}loadMap(e,t){if(!1===t)return!1;if(t){if("string"==typeof t)return t;if("function"!=typeof t){if(t instanceof Zs)return Ks.fromSourceMap(t).toString();if(t instanceof Ks)return t.toString();if(this.isMap(t))return JSON.stringify(t);throw new Error("Unsupported previous source map format: "+t.toString())}{let n=t(e);if(n){let e=this.loadFile(n);if(!e)throw new Error("Unable to load previous source map: "+n.toString());return e}}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){let t=this.annotation;return e&&(t=Qs($s(e),t)),this.loadFile(t)}}}startWith(e,t){return!!e&&e.substr(0,t.length)===t}withContent(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)}};var tl=el;el.default=el;let{SourceMapConsumer:nl,SourceMapGenerator:ol}=Cs,{fileURLToPath:rl,pathToFileURL:il}=Cs,{isAbsolute:al,resolve:sl}=Cs,{nanoid:ll}=Js,cl=Cs,ul=Ts,dl=tl,pl=Symbol("fromOffsetCache"),hl=Boolean(nl&&ol),fl=Boolean(sl&&al),ml=class{constructor(e,t={}){if(null==e||"object"==typeof e&&!e.toString)throw new Error(`PostCSS received ${e} instead of CSS string`);if(this.css=e.toString(),"\ufeff"===this.css[0]||"￾"===this.css[0]?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,t.from&&(!fl||/^\w+:\/\//.test(t.from)||al(t.from)?this.file=t.from:this.file=sl(t.from)),fl&&hl){let e=new dl(this.css,t);if(e.text){this.map=e;let t=e.consumer().file;!this.file&&t&&(this.file=this.mapResolve(t))}}this.file||(this.id=""),this.map&&(this.map.file=this.from)}error(e,t,n,o={}){let r,i,a;if(t&&"object"==typeof t){let e=t,o=n;if("number"==typeof e.offset){let o=this.fromOffset(e.offset);t=o.line,n=o.col}else t=e.line,n=e.column;if("number"==typeof o.offset){let e=this.fromOffset(o.offset);i=e.line,a=e.col}else i=o.line,a=o.column}else if(!n){let e=this.fromOffset(t);t=e.line,n=e.col}let s=this.origin(t,n,i,a);return r=s?new ul(e,void 0===s.endLine?s.line:{column:s.column,line:s.line},void 0===s.endLine?s.column:{column:s.endColumn,line:s.endLine},s.source,s.file,o.plugin):new ul(e,void 0===i?t:{column:n,line:t},void 0===i?n:{column:a,line:i},this.css,this.file,o.plugin),r.input={column:n,endColumn:a,endLine:i,line:t,source:this.css},this.file&&(il&&(r.input.url=il(this.file).toString()),r.input.file=this.file),r}fromOffset(e){let t,n;if(this[pl])n=this[pl];else{let e=this.css.split("\n");n=new Array(e.length);let t=0;for(let o=0,r=e.length;o=t)o=n.length-1;else{let t,r=n.length-2;for(;o>1),e=n[t+1])){o=t;break}o=t+1}}return{col:e-n[o]+1,line:o+1}}mapResolve(e){return/^\w+:\/\//.test(e)?e:sl(this.map.consumer().sourceRoot||this.map.root||".",e)}origin(e,t,n,o){if(!this.map)return!1;let r,i,a=this.map.consumer(),s=a.originalPositionFor({column:t,line:e});if(!s.source)return!1;"number"==typeof n&&(r=a.originalPositionFor({column:o,line:n})),i=al(s.source)?il(s.source):new URL(s.source,this.map.consumer().sourceRoot||il(this.map.mapFile));let l={column:s.column,endColumn:r&&r.column,endLine:r&&r.line,line:s.line,url:i.toString()};if("file:"===i.protocol){if(!rl)throw new Error("file: protocol is not available in this PostCSS build");l.file=rl(i)}let c=a.sourceContentFor(s.source);return c&&(l.source=c),l}toJSON(){let e={};for(let t of["hasBOM","css","file","id"])null!=this[t]&&(e[t]=this[t]);return this.map&&(e.map={...this.map},e.map.consumerCache&&(e.map.consumerCache=void 0)),e}get from(){return this.file||this.id}};var gl=ml;ml.default=ml,cl&&cl.registerInput&&cl.registerInput(ml);let{SourceMapConsumer:vl,SourceMapGenerator:yl}=Cs,{dirname:bl,relative:wl,resolve:kl,sep:xl}=Cs,{pathToFileURL:Sl}=Cs,Cl=gl,Il=Boolean(vl&&yl),Ol=Boolean(bl&&kl&&wl&&xl);var El=class{constructor(e,t,n,o){this.stringify=e,this.mapOpts=n.map||{},this.root=t,this.opts=n,this.css=o,this.originalCSS=o,this.usesFileUrls=!this.mapOpts.from&&this.mapOpts.absolute,this.memoizedFileURLs=new Map,this.memoizedPaths=new Map,this.memoizedURLs=new Map}addAnnotation(){let e;e=this.isInline()?"data:application/json;base64,"+this.toBase64(this.map.toString()):"string"==typeof this.mapOpts.annotation?this.mapOpts.annotation:"function"==typeof this.mapOpts.annotation?this.mapOpts.annotation(this.opts.to,this.root):this.outputFile()+".map";let t="\n";this.css.includes("\r\n")&&(t="\r\n"),this.css+=t+"/*# sourceMappingURL="+e+" */"}applyPrevMaps(){for(let e of this.previous()){let t,n=this.toUrl(this.path(e.file)),o=e.root||bl(e.file);!1===this.mapOpts.sourcesContent?(t=new vl(e.text),t.sourcesContent&&(t.sourcesContent=null)):t=e.consumer(),this.map.applySourceMap(t,n,this.toUrl(this.path(o)))}}clearAnnotation(){if(!1!==this.mapOpts.annotation)if(this.root){let e;for(let t=this.root.nodes.length-1;t>=0;t--)e=this.root.nodes[t],"comment"===e.type&&0===e.text.indexOf("# sourceMappingURL=")&&this.root.removeChild(t)}else this.css&&(this.css=this.css.replace(/\n*?\/\*#[\S\s]*?\*\/$/gm,""))}generate(){if(this.clearAnnotation(),Ol&&Il&&this.isMap())return this.generateMap();{let e="";return this.stringify(this.root,(t=>{e+=t})),[e]}}generateMap(){if(this.root)this.generateString();else if(1===this.previous().length){let e=this.previous()[0].consumer();e.file=this.outputFile(),this.map=yl.fromSourceMap(e,{ignoreInvalidMapping:!0})}else this.map=new yl({file:this.outputFile(),ignoreInvalidMapping:!0}),this.map.addMapping({generated:{column:0,line:1},original:{column:0,line:1},source:this.opts.from?this.toUrl(this.path(this.opts.from)):""});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]}generateString(){this.css="",this.map=new yl({file:this.outputFile(),ignoreInvalidMapping:!0});let e,t,n=1,o=1,r="",i={generated:{column:0,line:0},original:{column:0,line:0},source:""};this.stringify(this.root,((a,s,l)=>{if(this.css+=a,s&&"end"!==l&&(i.generated.line=n,i.generated.column=o-1,s.source&&s.source.start?(i.source=this.sourcePath(s),i.original.line=s.source.start.line,i.original.column=s.source.start.column-1,this.map.addMapping(i)):(i.source=r,i.original.line=1,i.original.column=0,this.map.addMapping(i))),e=a.match(/\n/g),e?(n+=e.length,t=a.lastIndexOf("\n"),o=a.length-t):o+=a.length,s&&"start"!==l){let e=s.parent||{raws:{}};("decl"===s.type||"atrule"===s.type&&!s.nodes)&&s===e.last&&!e.raws.semicolon||(s.source&&s.source.end?(i.source=this.sourcePath(s),i.original.line=s.source.end.line,i.original.column=s.source.end.column-1,i.generated.line=n,i.generated.column=o-2,this.map.addMapping(i)):(i.source=r,i.original.line=1,i.original.column=0,i.generated.line=n,i.generated.column=o-1,this.map.addMapping(i)))}}))}isAnnotation(){return!!this.isInline()||(void 0!==this.mapOpts.annotation?this.mapOpts.annotation:!this.previous().length||this.previous().some((e=>e.annotation)))}isInline(){if(void 0!==this.mapOpts.inline)return this.mapOpts.inline;let e=this.mapOpts.annotation;return(void 0===e||!0===e)&&(!this.previous().length||this.previous().some((e=>e.inline)))}isMap(){return void 0!==this.opts.map?!!this.opts.map:this.previous().length>0}isSourcesContent(){return void 0!==this.mapOpts.sourcesContent?this.mapOpts.sourcesContent:!this.previous().length||this.previous().some((e=>e.withContent()))}outputFile(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"}path(e){if(this.mapOpts.absolute)return e;if(60===e.charCodeAt(0))return e;if(/^\w+:\/\//.test(e))return e;let t=this.memoizedPaths.get(e);if(t)return t;let n=this.opts.to?bl(this.opts.to):".";"string"==typeof this.mapOpts.annotation&&(n=bl(kl(n,this.mapOpts.annotation)));let o=wl(n,e);return this.memoizedPaths.set(e,o),o}previous(){if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk((e=>{if(e.source&&e.source.input.map){let t=e.source.input.map;this.previousMaps.includes(t)||this.previousMaps.push(t)}}));else{let e=new Cl(this.originalCSS,this.opts);e.map&&this.previousMaps.push(e.map)}return this.previousMaps}setSourcesContent(){let e={};if(this.root)this.root.walk((t=>{if(t.source){let n=t.source.input.from;if(n&&!e[n]){e[n]=!0;let o=this.usesFileUrls?this.toFileUrl(n):this.toUrl(this.path(n));this.map.setSourceContent(o,t.source.input.css)}}}));else if(this.css){let e=this.opts.from?this.toUrl(this.path(this.opts.from)):"";this.map.setSourceContent(e,this.css)}}sourcePath(e){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(e.source.input.from):this.toUrl(this.path(e.source.input.from))}toBase64(e){return Buffer?Buffer.from(e).toString("base64"):window.btoa(unescape(encodeURIComponent(e)))}toFileUrl(e){let t=this.memoizedFileURLs.get(e);if(t)return t;if(Sl){let t=Sl(e).toString();return this.memoizedFileURLs.set(e,t),t}throw new Error("`map.absolute` option is not available in this PostCSS build")}toUrl(e){let t=this.memoizedURLs.get(e);if(t)return t;"\\"===xl&&(e=e.replace(/\\/g,"/"));let n=encodeURI(e).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(e,n),n}};let Tl=qs,Ll=class extends Tl{constructor(e){super(e),this.type="comment"}};var Al=Ll;Ll.default=Ll;let Ml,Rl,Pl,Dl,{isClean:Nl,my:jl}=Ls,Fl=Vs,Bl=Al,_l=qs;function Ul(e){return e.map((e=>(e.nodes&&(e.nodes=Ul(e.nodes)),delete e.source,e)))}function Hl(e){if(e[Nl]=!1,e.proxyOf.nodes)for(let t of e.proxyOf.nodes)Hl(t)}let zl=class e extends _l{append(...e){for(let t of e){let e=this.normalize(t,this.last);for(let t of e)this.proxyOf.nodes.push(t)}return this.markDirty(),this}cleanRaws(e){if(super.cleanRaws(e),this.nodes)for(let t of this.nodes)t.cleanRaws(e)}each(e){if(!this.proxyOf.nodes)return;let t,n,o=this.getIterator();for(;this.indexes[o]"proxyOf"===t?e:e[t]?"each"===t||"string"==typeof t&&t.startsWith("walk")?(...n)=>e[t](...n.map((e=>"function"==typeof e?(t,n)=>e(t.toProxy(),n):e))):"every"===t||"some"===t?n=>e[t](((e,...t)=>n(e.toProxy(),...t))):"root"===t?()=>e.root().toProxy():"nodes"===t?e.nodes.map((e=>e.toProxy())):"first"===t||"last"===t?e[t].toProxy():e[t]:e[t],set:(e,t,n)=>(e[t]===n||(e[t]=n,"name"!==t&&"params"!==t&&"selector"!==t||e.markDirty()),!0)}}index(e){return"number"==typeof e?e:(e.proxyOf&&(e=e.proxyOf),this.proxyOf.nodes.indexOf(e))}insertAfter(e,t){let n,o=this.index(e),r=this.normalize(t,this.proxyOf.nodes[o]).reverse();o=this.index(e);for(let i of r)this.proxyOf.nodes.splice(o+1,0,i);for(let i in this.indexes)n=this.indexes[i],o(t[jl]||e.rebuild(t),(t=t.proxyOf).parent&&t.parent.removeChild(t),t[Nl]&&Hl(t),void 0===t.raws.before&&n&&void 0!==n.raws.before&&(t.raws.before=n.raws.before.replace(/\S/g,"")),t.parent=this.proxyOf,t)))}prepend(...e){e=e.reverse();for(let t of e){let e=this.normalize(t,this.first,"prepend").reverse();for(let t of e)this.proxyOf.nodes.unshift(t);for(let t in this.indexes)this.indexes[t]=this.indexes[t]+e.length}return this.markDirty(),this}push(e){return e.parent=this,this.proxyOf.nodes.push(e),this}removeAll(){for(let e of this.proxyOf.nodes)e.parent=void 0;return this.proxyOf.nodes=[],this.markDirty(),this}removeChild(e){let t;e=this.index(e),this.proxyOf.nodes[e].parent=void 0,this.proxyOf.nodes.splice(e,1);for(let n in this.indexes)t=this.indexes[n],t>=e&&(this.indexes[n]=t-1);return this.markDirty(),this}replaceValues(e,t,n){return n||(n=t,t={}),this.walkDecls((o=>{t.props&&!t.props.includes(o.prop)||t.fast&&!o.value.includes(t.fast)||(o.value=o.value.replace(e,n))})),this.markDirty(),this}some(e){return this.nodes.some(e)}walk(e){return this.each(((t,n)=>{let o;try{o=e(t,n)}catch(r){throw t.addToError(r)}return!1!==o&&t.walk&&(o=t.walk(e)),o}))}walkAtRules(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("atrule"===n.type&&e.test(n.name))return t(n,o)})):this.walk(((n,o)=>{if("atrule"===n.type&&n.name===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("atrule"===e.type)return t(e,n)})))}walkComments(e){return this.walk(((t,n)=>{if("comment"===t.type)return e(t,n)}))}walkDecls(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("decl"===n.type&&e.test(n.prop))return t(n,o)})):this.walk(((n,o)=>{if("decl"===n.type&&n.prop===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("decl"===e.type)return t(e,n)})))}walkRules(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("rule"===n.type&&e.test(n.selector))return t(n,o)})):this.walk(((n,o)=>{if("rule"===n.type&&n.selector===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("rule"===e.type)return t(e,n)})))}get first(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}get last(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}};zl.registerParse=e=>{Ml=e},zl.registerRule=e=>{Rl=e},zl.registerAtRule=e=>{Pl=e},zl.registerRoot=e=>{Dl=e};var ql=zl;zl.default=zl,zl.rebuild=e=>{"atrule"===e.type?Object.setPrototypeOf(e,Pl.prototype):"rule"===e.type?Object.setPrototypeOf(e,Rl.prototype):"decl"===e.type?Object.setPrototypeOf(e,Fl.prototype):"comment"===e.type?Object.setPrototypeOf(e,Bl.prototype):"root"===e.type&&Object.setPrototypeOf(e,Dl.prototype),e[jl]=!0,e.nodes&&e.nodes.forEach((e=>{zl.rebuild(e)}))};let Wl,Gl,Vl=ql,Jl=class extends Vl{constructor(e){super({type:"document",...e}),this.nodes||(this.nodes=[])}toResult(e={}){return new Wl(new Gl,this,e).stringify()}};Jl.registerLazyResult=e=>{Wl=e},Jl.registerProcessor=e=>{Gl=e};var Zl=Jl;Jl.default=Jl;let Kl=class{constructor(e,t={}){if(this.type="warning",this.text=e,t.node&&t.node.source){let e=t.node.rangeBy(t);this.line=e.start.line,this.column=e.start.column,this.endLine=e.end.line,this.endColumn=e.end.column}for(let n in t)this[n]=t[n]}toString(){return this.node?this.node.error(this.text,{index:this.index,plugin:this.plugin,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text}};var Yl=Kl;Kl.default=Kl;let Xl=Yl,$l=class{constructor(e,t,n){this.processor=e,this.messages=[],this.root=t,this.opts=n,this.css=void 0,this.map=void 0}toString(){return this.css}warn(e,t={}){t.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(t.plugin=this.lastPlugin.postcssPlugin);let n=new Xl(e,t);return this.messages.push(n),n}warnings(){return this.messages.filter((e=>"warning"===e.type))}get content(){return this.css}};var Ql=$l;$l.default=$l;const ec="'".charCodeAt(0),tc='"'.charCodeAt(0),nc="\\".charCodeAt(0),oc="/".charCodeAt(0),rc="\n".charCodeAt(0),ic=" ".charCodeAt(0),ac="\f".charCodeAt(0),sc="\t".charCodeAt(0),lc="\r".charCodeAt(0),cc="[".charCodeAt(0),uc="]".charCodeAt(0),dc="(".charCodeAt(0),pc=")".charCodeAt(0),hc="{".charCodeAt(0),fc="}".charCodeAt(0),mc=";".charCodeAt(0),gc="*".charCodeAt(0),vc=":".charCodeAt(0),yc="@".charCodeAt(0),bc=/[\t\n\f\r "#'()/;[\\\]{}]/g,wc=/[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g,kc=/.[\r\n"'(/\\]/,xc=/[\da-f]/i;let Sc=ql,Cc=class extends Sc{constructor(e){super(e),this.type="atrule"}append(...e){return this.proxyOf.nodes||(this.nodes=[]),super.append(...e)}prepend(...e){return this.proxyOf.nodes||(this.nodes=[]),super.prepend(...e)}};var Ic=Cc;Cc.default=Cc,Sc.registerAtRule(Cc);let Oc,Ec,Tc=ql,Lc=class extends Tc{constructor(e){super(e),this.type="root",this.nodes||(this.nodes=[])}normalize(e,t,n){let o=super.normalize(e);if(t)if("prepend"===n)this.nodes.length>1?t.raws.before=this.nodes[1].raws.before:delete t.raws.before;else if(this.first!==t)for(let r of o)r.raws.before=t.raws.before;return o}removeChild(e,t){let n=this.index(e);return!t&&0===n&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[n].raws.before),super.removeChild(e)}toResult(e={}){return new Oc(new Ec,this,e).stringify()}};Lc.registerLazyResult=e=>{Oc=e},Lc.registerProcessor=e=>{Ec=e};var Ac=Lc;Lc.default=Lc,Tc.registerRoot(Lc);let Mc={comma:e=>Mc.split(e,[","],!0),space:e=>Mc.split(e,[" ","\n","\t"]),split(e,t,n){let o=[],r="",i=!1,a=0,s=!1,l="",c=!1;for(let u of e)c?c=!1:"\\"===u?c=!0:s?u===l&&(s=!1):'"'===u||"'"===u?(s=!0,l=u):"("===u?a+=1:")"===u?a>0&&(a-=1):0===a&&t.includes(u)&&(i=!0),i?(""!==r&&o.push(r.trim()),r="",i=!1):r+=u;return(n||""!==r)&&o.push(r.trim()),o}};var Rc=Mc;Mc.default=Mc;let Pc=ql,Dc=Rc,Nc=class extends Pc{constructor(e){super(e),this.type="rule",this.nodes||(this.nodes=[])}get selectors(){return Dc.comma(this.selector)}set selectors(e){let t=this.selector?this.selector.match(/,\s*/):null,n=t?t[0]:","+this.raw("between","beforeOpen");this.selector=e.join(n)}};var jc=Nc;Nc.default=Nc,Pc.registerRule(Nc);let Fc=Vs,Bc=function(e,t={}){let n,o,r,i,a,s,l,c,u,d,p=e.css.valueOf(),h=t.ignoreErrors,f=p.length,m=0,g=[],v=[];function y(t){throw e.error("Unclosed "+t,m)}return{back:function(e){v.push(e)},endOfFile:function(){return 0===v.length&&m>=f},nextToken:function(e){if(v.length)return v.pop();if(m>=f)return;let t=!!e&&e.ignoreUnclosed;switch(n=p.charCodeAt(m),n){case rc:case ic:case sc:case lc:case ac:o=m;do{o+=1,n=p.charCodeAt(o)}while(n===ic||n===rc||n===sc||n===lc||n===ac);d=["space",p.slice(m,o)],m=o-1;break;case cc:case uc:case hc:case fc:case vc:case mc:case pc:{let e=String.fromCharCode(n);d=[e,e,m];break}case dc:if(c=g.length?g.pop()[1]:"",u=p.charCodeAt(m+1),"url"===c&&u!==ec&&u!==tc&&u!==ic&&u!==rc&&u!==sc&&u!==ac&&u!==lc){o=m;do{if(s=!1,o=p.indexOf(")",o+1),-1===o){if(h||t){o=m;break}y("bracket")}for(l=o;p.charCodeAt(l-1)===nc;)l-=1,s=!s}while(s);d=["brackets",p.slice(m,o+1),m,o],m=o}else o=p.indexOf(")",m+1),i=p.slice(m,o+1),-1===o||kc.test(i)?d=["(","(",m]:(d=["brackets",i,m,o],m=o);break;case ec:case tc:r=n===ec?"'":'"',o=m;do{if(s=!1,o=p.indexOf(r,o+1),-1===o){if(h||t){o=m+1;break}y("string")}for(l=o;p.charCodeAt(l-1)===nc;)l-=1,s=!s}while(s);d=["string",p.slice(m,o+1),m,o],m=o;break;case yc:bc.lastIndex=m+1,bc.test(p),o=0===bc.lastIndex?p.length-1:bc.lastIndex-2,d=["at-word",p.slice(m,o+1),m,o],m=o;break;case nc:for(o=m,a=!0;p.charCodeAt(o+1)===nc;)o+=1,a=!a;if(n=p.charCodeAt(o+1),a&&n!==oc&&n!==ic&&n!==rc&&n!==sc&&n!==lc&&n!==ac&&(o+=1,xc.test(p.charAt(o)))){for(;xc.test(p.charAt(o+1));)o+=1;p.charCodeAt(o+1)===ic&&(o+=1)}d=["word",p.slice(m,o+1),m,o],m=o;break;default:n===oc&&p.charCodeAt(m+1)===gc?(o=p.indexOf("*/",m+2)+1,0===o&&(h||t?o=p.length:y("comment")),d=["comment",p.slice(m,o+1),m,o],m=o):(wc.lastIndex=m+1,wc.test(p),o=0===wc.lastIndex?p.length-1:wc.lastIndex-2,d=["word",p.slice(m,o+1),m,o],g.push(d),m=o)}return m++,d},position:function(){return m}}},_c=Al,Uc=Ic,Hc=Ac,zc=jc;const qc={empty:!0,space:!0};var Wc=class{constructor(e){this.input=e,this.root=new Hc,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:e,start:{column:1,line:1,offset:0}}}atrule(e){let t,n,o,r=new Uc;r.name=e[1].slice(1),""===r.name&&this.unnamedAtrule(r,e),this.init(r,e[2]);let i=!1,a=!1,s=[],l=[];for(;!this.tokenizer.endOfFile();){if(t=(e=this.tokenizer.nextToken())[0],"("===t||"["===t?l.push("("===t?")":"]"):"{"===t&&l.length>0?l.push("}"):t===l[l.length-1]&&l.pop(),0===l.length){if(";"===t){r.source.end=this.getPosition(e[2]),r.source.end.offset++,this.semicolon=!0;break}if("{"===t){a=!0;break}if("}"===t){if(s.length>0){for(o=s.length-1,n=s[o];n&&"space"===n[0];)n=s[--o];n&&(r.source.end=this.getPosition(n[3]||n[2]),r.source.end.offset++)}this.end(e);break}s.push(e)}else s.push(e);if(this.tokenizer.endOfFile()){i=!0;break}}r.raws.between=this.spacesAndCommentsFromEnd(s),s.length?(r.raws.afterName=this.spacesAndCommentsFromStart(s),this.raw(r,"params",s),i&&(e=s[s.length-1],r.source.end=this.getPosition(e[3]||e[2]),r.source.end.offset++,this.spaces=r.raws.between,r.raws.between="")):(r.raws.afterName="",r.params=""),a&&(r.nodes=[],this.current=r)}checkMissedSemicolon(e){let t=this.colon(e);if(!1===t)return;let n,o=0;for(let r=t-1;r>=0&&(n=e[r],"space"===n[0]||(o+=1,2!==o));r--);throw this.input.error("Missed semicolon","word"===n[0]?n[3]+1:n[2])}colon(e){let t,n,o,r=0;for(let[i,a]of e.entries()){if(t=a,n=t[0],"("===n&&(r+=1),")"===n&&(r-=1),0===r&&":"===n){if(o){if("word"===o[0]&&"progid"===o[1])continue;return i}this.doubleColon(t)}o=t}return!1}comment(e){let t=new _c;this.init(t,e[2]),t.source.end=this.getPosition(e[3]||e[2]),t.source.end.offset++;let n=e[1].slice(2,-2);if(/^\s*$/.test(n))t.text="",t.raws.left=n,t.raws.right="";else{let e=n.match(/^(\s*)([^]*\S)(\s*)$/);t.text=e[2],t.raws.left=e[1],t.raws.right=e[3]}}createTokenizer(){this.tokenizer=Bc(this.input)}decl(e,t){let n=new Fc;this.init(n,e[0][2]);let o,r=e[e.length-1];for(";"===r[0]&&(this.semicolon=!0,e.pop()),n.source.end=this.getPosition(r[3]||r[2]||function(e){for(let t=e.length-1;t>=0;t--){let n=e[t],o=n[3]||n[2];if(o)return o}}(e)),n.source.end.offset++;"word"!==e[0][0];)1===e.length&&this.unknownWord(e),n.raws.before+=e.shift()[1];for(n.source.start=this.getPosition(e[0][2]),n.prop="";e.length;){let t=e[0][0];if(":"===t||"space"===t||"comment"===t)break;n.prop+=e.shift()[1]}for(n.raws.between="";e.length;){if(o=e.shift(),":"===o[0]){n.raws.between+=o[1];break}"word"===o[0]&&/\w/.test(o[1])&&this.unknownWord([o]),n.raws.between+=o[1]}"_"!==n.prop[0]&&"*"!==n.prop[0]||(n.raws.before+=n.prop[0],n.prop=n.prop.slice(1));let i,a=[];for(;e.length&&(i=e[0][0],"space"===i||"comment"===i);)a.push(e.shift());this.precheckMissedSemicolon(e);for(let s=e.length-1;s>=0;s--){if(o=e[s],"!important"===o[1].toLowerCase()){n.important=!0;let t=this.stringFrom(e,s);t=this.spacesFromEnd(e)+t," !important"!==t&&(n.raws.important=t);break}if("important"===o[1].toLowerCase()){let t=e.slice(0),o="";for(let e=s;e>0;e--){let n=t[e][0];if(0===o.trim().indexOf("!")&&"space"!==n)break;o=t.pop()[1]+o}0===o.trim().indexOf("!")&&(n.important=!0,n.raws.important=o,e=t)}if("space"!==o[0]&&"comment"!==o[0])break}e.some((e=>"space"!==e[0]&&"comment"!==e[0]))&&(n.raws.between+=a.map((e=>e[1])).join(""),a=[]),this.raw(n,"value",a.concat(e),t),n.value.includes(":")&&!t&&this.checkMissedSemicolon(e)}doubleColon(e){throw this.input.error("Double colon",{offset:e[2]},{offset:e[2]+e[1].length})}emptyRule(e){let t=new zc;this.init(t,e[2]),t.selector="",t.raws.between="",this.current=t}end(e){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(e[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(e)}endFile(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position())}freeSemicolon(e){if(this.spaces+=e[1],this.current.nodes){let e=this.current.nodes[this.current.nodes.length-1];e&&"rule"===e.type&&!e.raws.ownSemicolon&&(e.raws.ownSemicolon=this.spaces,this.spaces="")}}getPosition(e){let t=this.input.fromOffset(e);return{column:t.col,line:t.line,offset:e}}init(e,t){this.current.push(e),e.source={input:this.input,start:this.getPosition(t)},e.raws.before=this.spaces,this.spaces="","comment"!==e.type&&(this.semicolon=!1)}other(e){let t=!1,n=null,o=!1,r=null,i=[],a=e[1].startsWith("--"),s=[],l=e;for(;l;){if(n=l[0],s.push(l),"("===n||"["===n)r||(r=l),i.push("("===n?")":"]");else if(a&&o&&"{"===n)r||(r=l),i.push("}");else if(0===i.length){if(";"===n){if(o)return void this.decl(s,a);break}if("{"===n)return void this.rule(s);if("}"===n){this.tokenizer.back(s.pop()),t=!0;break}":"===n&&(o=!0)}else n===i[i.length-1]&&(i.pop(),0===i.length&&(r=null));l=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(t=!0),i.length>0&&this.unclosedBracket(r),t&&o){if(!a)for(;s.length&&(l=s[s.length-1][0],"space"===l||"comment"===l);)this.tokenizer.back(s.pop());this.decl(s,a)}else this.unknownWord(s)}parse(){let e;for(;!this.tokenizer.endOfFile();)switch(e=this.tokenizer.nextToken(),e[0]){case"space":this.spaces+=e[1];break;case";":this.freeSemicolon(e);break;case"}":this.end(e);break;case"comment":this.comment(e);break;case"at-word":this.atrule(e);break;case"{":this.emptyRule(e);break;default:this.other(e)}this.endFile()}precheckMissedSemicolon(){}raw(e,t,n,o){let r,i,a,s,l=n.length,c="",u=!0;for(let d=0;de+t[1]),"");e.raws[t]={raw:o,value:c}}e[t]=c}rule(e){e.pop();let t=new zc;this.init(t,e[0][2]),t.raws.between=this.spacesAndCommentsFromEnd(e),this.raw(t,"selector",e),this.current=t}spacesAndCommentsFromEnd(e){let t,n="";for(;e.length&&(t=e[e.length-1][0],"space"===t||"comment"===t);)n=e.pop()[1]+n;return n}spacesAndCommentsFromStart(e){let t,n="";for(;e.length&&(t=e[0][0],"space"===t||"comment"===t);)n+=e.shift()[1];return n}spacesFromEnd(e){let t,n="";for(;e.length&&(t=e[e.length-1][0],"space"===t);)n=e.pop()[1]+n;return n}stringFrom(e,t){let n="";for(let o=t;opu(e))),e}let hu={},fu=class e{constructor(t,n,o){let r;if(this.stringified=!1,this.processed=!1,"object"!=typeof n||null===n||"root"!==n.type&&"document"!==n.type)if(n instanceof e||n instanceof nu)r=pu(n.root),n.map&&(void 0===o.map&&(o.map={}),o.map.inline||(o.map.inline=!1),o.map.prev=n.map);else{let e=ou;o.syntax&&(e=o.syntax.parse),o.parser&&(e=o.parser),e.parse&&(e=e.parse);try{r=e(n,o)}catch(i){this.processed=!0,this.error=i}r&&!r[Xc]&&eu.rebuild(r)}else r=pu(n);this.result=new nu(t,r,o),this.helpers={...hu,postcss:hu,result:this.result},this.plugins=this.processor.plugins.map((e=>"object"==typeof e&&e.prepare?{...e,...e.prepare(this.result)}:e))}async(){return this.error?Promise.reject(this.error):this.processed?Promise.resolve(this.result):(this.processing||(this.processing=this.runAsync()),this.processing)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}getAsyncError(){throw new Error("Use process(css).then(cb) to work with async plugins")}handleError(e,t){let n=this.result.lastPlugin;try{t&&t.addToError(e),this.error=e,"CssSyntaxError"!==e.name||e.plugin?n.postcssVersion:(e.plugin=n.postcssPlugin,e.setMessage())}catch(o){console&&console.error&&console.error(o)}return e}prepareVisitors(){this.listeners={};let e=(e,t,n)=>{this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].push([e,n])};for(let t of this.plugins)if("object"==typeof t)for(let n in t){if(!au[n]&&/^[A-Z]/.test(n))throw new Error(`Unknown event ${n} in ${t.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`);if(!su[n])if("object"==typeof t[n])for(let o in t[n])e(t,"*"===o?n:n+"-"+o.toLowerCase(),t[n][o]);else"function"==typeof t[n]&&e(t,n,t[n])}this.hasListener=Object.keys(this.listeners).length>0}async runAsync(){this.plugin=0;for(let n=0;n0;){let e=this.visitTick(n);if(cu(e))try{await e}catch(t){let e=n[n.length-1].node;throw this.handleError(t,e)}}}if(this.listeners.OnceExit)for(let[n,o]of this.listeners.OnceExit){this.result.lastPlugin=n;try{if("document"===e.type){let t=e.nodes.map((e=>o(e,this.helpers)));await Promise.all(t)}else await o(e,this.helpers)}catch(t){throw this.handleError(t)}}}return this.processed=!0,this.stringify()}runOnRoot(e){this.result.lastPlugin=e;try{if("object"==typeof e&&e.Once){if("document"===this.result.root.type){let t=this.result.root.nodes.map((t=>e.Once(t,this.helpers)));return cu(t[0])?Promise.all(t):t}return e.Once(this.result.root,this.helpers)}if("function"==typeof e)return e(this.result.root,this.result)}catch(t){throw this.handleError(t)}}stringify(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();let e=this.result.opts,t=Qc;e.syntax&&(t=e.syntax.stringify),e.stringifier&&(t=e.stringifier),t.stringify&&(t=t.stringify);let n=new $c(t,this.result.root,this.result.opts).generate();return this.result.css=n[0],this.result.map=n[1],this.result}sync(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(let e of this.plugins){if(cu(this.runOnRoot(e)))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){let e=this.result.root;for(;!e[Yc];)e[Yc]=!0,this.walkSync(e);if(this.listeners.OnceExit)if("document"===e.type)for(let t of e.nodes)this.visitSync(this.listeners.OnceExit,t);else this.visitSync(this.listeners.OnceExit,e)}return this.result}then(e,t){return this.async().then(e,t)}toString(){return this.css}visitSync(e,t){for(let[o,r]of e){let e;this.result.lastPlugin=o;try{e=r(t,this.helpers)}catch(n){throw this.handleError(n,t.proxyOf)}if("root"!==t.type&&"document"!==t.type&&!t.parent)return!0;if(cu(e))throw this.getAsyncError()}}visitTick(e){let t=e[e.length-1],{node:n,visitors:o}=t;if("root"!==n.type&&"document"!==n.type&&!n.parent)return void e.pop();if(o.length>0&&t.visitorIndex{e[Yc]||this.walkSync(e)}));else{let t=this.listeners[n];if(t&&this.visitSync(t,e.toProxy()))return}}warnings(){return this.sync().warnings()}get content(){return this.stringify().content}get css(){return this.stringify().css}get map(){return this.stringify().map}get messages(){return this.sync().messages}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){return this.sync().root}get[Symbol.toStringTag](){return"LazyResult"}};fu.registerPostcss=e=>{hu=e};var mu=fu;fu.default=fu,ru.registerLazyResult(fu),tu.registerLazyResult(fu);let gu=El,vu=Ns,yu=Kc;const bu=Ql;let wu=class{constructor(e,t,n){let o;t=t.toString(),this.stringified=!1,this._processor=e,this._css=t,this._opts=n,this._map=void 0;let r=vu;this.result=new bu(this._processor,o,this._opts),this.result.css=t;let i=this;Object.defineProperty(this.result,"root",{get:()=>i.root});let a=new gu(r,o,this._opts,t);if(a.isMap()){let[e,t]=a.generate();e&&(this.result.css=e),t&&(this.result.map=t)}else a.clearAnnotation(),this.result.css=a.css}async(){return this.error?Promise.reject(this.error):Promise.resolve(this.result)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}sync(){if(this.error)throw this.error;return this.result}then(e,t){return this.async().then(e,t)}toString(){return this._css}warnings(){return[]}get content(){return this.result.css}get css(){return this.result.css}get map(){return this.result.map}get messages(){return[]}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){if(this._root)return this._root;let e,t=yu;try{e=t(this._css,this._opts)}catch(n){this.error=n}if(this.error)throw this.error;return this._root=e,e}get[Symbol.toStringTag](){return"NoWorkResult"}};var ku=wu;wu.default=wu;let xu=ku,Su=mu,Cu=Zl,Iu=Ac,Ou=class{constructor(e=[]){this.version="8.4.38",this.plugins=this.normalize(e)}normalize(e){let t=[];for(let n of e)if(!0===n.postcss?n=n():n.postcss&&(n=n.postcss),"object"==typeof n&&Array.isArray(n.plugins))t=t.concat(n.plugins);else if("object"==typeof n&&n.postcssPlugin)t.push(n);else if("function"==typeof n)t.push(n);else{if("object"!=typeof n||!n.parse&&!n.stringify)throw new Error(n+" is not a PostCSS plugin")}return t}process(e,t={}){return this.plugins.length||t.parser||t.stringifier||t.syntax?new Su(this,e,t):new xu(this,e,t)}use(e){return this.plugins=this.plugins.concat(this.normalize([e])),this}};var Eu=Ou;Ou.default=Ou,Iu.registerProcessor(Ou),Cu.registerProcessor(Ou);let Tu=Vs,Lu=tl,Au=Al,Mu=Ic,Ru=gl,Pu=Ac,Du=jc;function Nu(e,t){if(Array.isArray(e))return e.map((e=>Nu(e)));let{inputs:n,...o}=e;if(n){t=[];for(let e of n){let n={...e,__proto__:Ru.prototype};n.map&&(n.map={...n.map,__proto__:Lu.prototype}),t.push(n)}}if(o.nodes&&(o.nodes=e.nodes.map((e=>Nu(e,t)))),o.source){let{inputId:e,...n}=o.source;o.source=n,null!=e&&(o.source.input=t[e])}if("root"===o.type)return new Pu(o);if("decl"===o.type)return new Tu(o);if("rule"===o.type)return new Du(o);if("comment"===o.type)return new Au(o);if("atrule"===o.type)return new Mu(o);throw new Error("Unknown node type: "+e.type)}var ju=Nu;Nu.default=Nu;let Fu=Ts,Bu=Vs,_u=mu,Uu=ql,Hu=Eu,zu=Ns,qu=ju,Wu=Zl,Gu=Yl,Vu=Al,Ju=Ic,Zu=Ql,Ku=gl,Yu=Kc,Xu=Rc,$u=jc,Qu=Ac,ed=qs;function td(...e){return 1===e.length&&Array.isArray(e[0])&&(e=e[0]),new Hu(e)}td.plugin=function(e,t){let n,o=!1;function r(...n){console&&console.warn&&!o&&(o=!0,console.warn(e+": postcss.plugin was deprecated. Migration guide:\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration"),process.env.LANG&&process.env.LANG.startsWith("cn")&&console.warn(e+": 里面 postcss.plugin 被弃用. 迁移指南:\nhttps://www.w3ctech.com/topic/2226"));let r=t(...n);return r.postcssPlugin=e,r.postcssVersion=(new Hu).version,r}return Object.defineProperty(r,"postcss",{get:()=>(n||(n=r()),n)}),r.process=function(e,t,n){return td([r(n)]).process(e,t)},r},td.stringify=zu,td.parse=Yu,td.fromJSON=qu,td.list=Xu,td.comment=e=>new Vu(e),td.atRule=e=>new Ju(e),td.decl=e=>new Bu(e),td.rule=e=>new $u(e),td.root=e=>new Qu(e),td.document=e=>new Wu(e),td.CssSyntaxError=Fu,td.Declaration=Bu,td.Container=Uu,td.Processor=Hu,td.Document=Wu,td.Comment=Vu,td.Warning=Gu,td.AtRule=Ju,td.Result=Zu,td.Input=Ku,td.Rule=$u,td.Root=Qu,td.Node=ed,_u.registerPostcss(td);var nd=td;td.default=td;const od=ys(nd);od.stringify,od.fromJSON,od.plugin,od.parse,od.list,od.document,od.comment,od.atRule,od.rule,od.decl,od.root,od.CssSyntaxError,od.Declaration,od.Container,od.Processor,od.Document,od.Comment,od.Warning,od.AtRule,od.Result,od.Input,od.Rule,od.Root,od.Node;class rd{constructor(...e){vs(this,"parentElement",null),vs(this,"parentNode",null),vs(this,"ownerDocument"),vs(this,"firstChild",null),vs(this,"lastChild",null),vs(this,"previousSibling",null),vs(this,"nextSibling",null),vs(this,"ELEMENT_NODE",1),vs(this,"TEXT_NODE",3),vs(this,"nodeType"),vs(this,"nodeName"),vs(this,"RRNodeType")}get childNodes(){const e=[];let t=this.firstChild;for(;t;)e.push(t),t=t.nextSibling;return e}contains(e){if(!(e instanceof rd))return!1;if(e.ownerDocument!==this.ownerDocument)return!1;if(e===this)return!0;for(;e.parentNode;){if(e.parentNode===this)return!0;e=e.parentNode}return!1}appendChild(e){throw new Error("RRDomException: Failed to execute 'appendChild' on 'RRNode': This RRNode type does not support this method.")}insertBefore(e,t){throw new Error("RRDomException: Failed to execute 'insertBefore' on 'RRNode': This RRNode type does not support this method.")}removeChild(e){throw new Error("RRDomException: Failed to execute 'removeChild' on 'RRNode': This RRNode type does not support this method.")}toString(){return"RRNode"}}const id={Node:["childNodes","parentNode","parentElement","textContent"],ShadowRoot:["host","styleSheets"],Element:["shadowRoot","querySelector","querySelectorAll"],MutationObserver:[]},ad={Node:["contains","getRootNode"],ShadowRoot:["getSelection"],Element:[],MutationObserver:["constructor"]},sd={},ld=()=>!!globalThis.Zone;function cd(e){if(sd[e])return sd[e];const t=globalThis[e],n=t.prototype,o=e in id?id[e]:void 0,r=Boolean(o&&o.every((e=>{var t,o;return Boolean(null==(o=null==(t=Object.getOwnPropertyDescriptor(n,e))?void 0:t.get)?void 0:o.toString().includes("[native code]"))}))),i=e in ad?ad[e]:void 0,a=Boolean(i&&i.every((e=>{var t;return"function"==typeof n[e]&&(null==(t=n[e])?void 0:t.toString().includes("[native code]"))})));if(r&&a&&!ld())return sd[e]=t.prototype,t.prototype;try{const o=document.createElement("iframe");document.body.appendChild(o);const r=o.contentWindow;if(!r)return t.prototype;const i=r[e].prototype;return document.body.removeChild(o),i?sd[e]=i:n}catch{return n}}const ud={};function dd(e,t,n){var o;const r=`${e}.${String(n)}`;if(ud[r])return ud[r].call(t);const i=cd(e),a=null==(o=Object.getOwnPropertyDescriptor(i,n))?void 0:o.get;return a?(ud[r]=a,a.call(t)):t[n]}const pd={};function hd(e,t,n){const o=`${e}.${String(n)}`;if(pd[o])return pd[o].bind(t);const r=cd(e)[n];return"function"!=typeof r?t[n]:(pd[o]=r,r.bind(t))}function fd(){return cd("MutationObserver").constructor}const md={childNodes:function(e){return dd("Node",e,"childNodes")},parentNode:function(e){return dd("Node",e,"parentNode")},parentElement:function(e){return dd("Node",e,"parentElement")},textContent:function(e){return dd("Node",e,"textContent")},contains:function(e,t){return hd("Node",e,"contains")(t)},getRootNode:function(e){return hd("Node",e,"getRootNode")()},host:function(e){return e&&"host"in e?dd("ShadowRoot",e,"host"):null},styleSheets:function(e){return e.styleSheets},shadowRoot:function(e){return e&&"shadowRoot"in e?dd("Element",e,"shadowRoot"):null},querySelector:function(e,t){return dd("Element",e,"querySelector")(t)},querySelectorAll:function(e,t){return dd("Element",e,"querySelectorAll")(t)},mutationObserver:fd};function gd(e,t,n=document){const o={capture:!0,passive:!0};return n.addEventListener(e,t,o),()=>n.removeEventListener(e,t,o)}const vd="Please stop import mirror directly. Instead of that,\r\nnow you can use replayer.getMirror() to access the mirror instance of a replayer,\r\nor you can use record.mirror to access the mirror instance during recording.";let yd={map:{},getId:()=>(console.error(vd),-1),getNode:()=>(console.error(vd),null),removeNodeFromMap(){console.error(vd)},has:()=>(console.error(vd),!1),reset(){console.error(vd)}};function bd(e,t,n={}){let o=null,r=0;return function(...i){const a=Date.now();r||!1!==n.leading||(r=a);const s=t-(a-r),l=this;s<=0||s>t?(o&&(clearTimeout(o),o=null),r=a,e.apply(l,i)):o||!1===n.trailing||(o=setTimeout((()=>{r=!1===n.leading?0:Date.now(),o=null,e.apply(l,i)}),s))}}function wd(e,t,n,o,r=window){const i=r.Object.getOwnPropertyDescriptor(e,t);return r.Object.defineProperty(e,t,o?n:{set(e){setTimeout((()=>{n.set.call(this,e)}),0),i&&i.set&&i.set.call(this,e)}}),()=>wd(e,t,i||{},!0)}function kd(e,t,n){try{if(!(t in e))return()=>{};const o=e[t],r=n(o);return"function"==typeof r&&(r.prototype=r.prototype||{},Object.defineProperties(r,{__rrweb_original__:{enumerable:!1,value:o}})),e[t]=r,()=>{e[t]=o}}catch{return()=>{}}}"undefined"!=typeof window&&window.Proxy&&window.Reflect&&(yd=new Proxy(yd,{get:(e,t,n)=>("map"===t&&console.error(vd),Reflect.get(e,t,n))}));let xd=Date.now;function Sd(e){var t,n,o,r;const i=e.document;return{left:i.scrollingElement?i.scrollingElement.scrollLeft:void 0!==e.pageXOffset?e.pageXOffset:i.documentElement.scrollLeft||(null==i?void 0:i.body)&&(null==(t=md.parentElement(i.body))?void 0:t.scrollLeft)||(null==(n=null==i?void 0:i.body)?void 0:n.scrollLeft)||0,top:i.scrollingElement?i.scrollingElement.scrollTop:void 0!==e.pageYOffset?e.pageYOffset:(null==i?void 0:i.documentElement.scrollTop)||(null==i?void 0:i.body)&&(null==(o=md.parentElement(i.body))?void 0:o.scrollTop)||(null==(r=null==i?void 0:i.body)?void 0:r.scrollTop)||0}}function Cd(){return window.innerHeight||document.documentElement&&document.documentElement.clientHeight||document.body&&document.body.clientHeight}function Id(){return window.innerWidth||document.documentElement&&document.documentElement.clientWidth||document.body&&document.body.clientWidth}function Od(e){if(!e)return null;return e.nodeType===e.ELEMENT_NODE?e:md.parentElement(e)}function Ed(e,t,n,o){if(!e)return!1;const r=Od(e);if(!r)return!1;try{if("string"==typeof t){if(r.classList.contains(t))return!0;if(o&&null!==r.closest("."+t))return!0}else if(Io(r,t,o))return!0}catch(i){}if(n){if(r.matches(n))return!0;if(o&&null!==r.closest(n))return!0}return!1}function Td(e,t,n){return!("TITLE"!==e.tagName||!n.headTitleMutations)||t.getId(e)===ho}function Ld(e,t){if(Jn(e))return!1;const n=t.getId(e);if(!t.has(n))return!0;const o=md.parentNode(e);return(!o||o.nodeType!==e.DOCUMENT_NODE)&&(!o||Ld(o,t))}function Ad(e){return Boolean(e.changedTouches)}function Md(e,t){return Boolean("IFRAME"===e.nodeName&&t.getMeta(e))}function Rd(e,t){return Boolean("LINK"===e.nodeName&&e.nodeType===e.ELEMENT_NODE&&e.getAttribute&&"stylesheet"===e.getAttribute("rel")&&t.getMeta(e))}function Pd(e){return!!e&&(e instanceof rd&&"shadowRoot"in e?Boolean(e.shadowRoot):Boolean(md.shadowRoot(e)))}/[1-9][0-9]{12}/.test(Date.now().toString())||(xd=()=>(new Date).getTime());class Dd{constructor(){Rn(this,"id",1),Rn(this,"styleIDMap",new WeakMap),Rn(this,"idStyleMap",new Map)}getId(e){return this.styleIDMap.get(e)??-1}has(e){return this.styleIDMap.has(e)}add(e,t){if(this.has(e))return this.getId(e);let n;return n=void 0===t?this.id++:t,this.styleIDMap.set(e,n),this.idStyleMap.set(n,e),n}getStyle(e){return this.idStyleMap.get(e)||null}reset(){this.styleIDMap=new WeakMap,this.idStyleMap=new Map,this.id=1}generateId(){return this.id++}}function Nd(e){var t;let n=null;return"getRootNode"in e&&(null==(t=md.getRootNode(e))?void 0:t.nodeType)===Node.DOCUMENT_FRAGMENT_NODE&&md.host(md.getRootNode(e))&&(n=md.host(md.getRootNode(e))),n}function jd(e){const t=e.ownerDocument;if(!t)return!1;const n=function(e){let t,n=e;for(;t=Nd(n);)n=t;return n}(e);return md.contains(t,n)}function Fd(e){const t=e.ownerDocument;return!!t&&(md.contains(t,e)||jd(e))}var Bd=(e=>(e[e.DomContentLoaded=0]="DomContentLoaded",e[e.Load=1]="Load",e[e.FullSnapshot=2]="FullSnapshot",e[e.IncrementalSnapshot=3]="IncrementalSnapshot",e[e.Meta=4]="Meta",e[e.Custom=5]="Custom",e[e.Plugin=6]="Plugin",e))(Bd||{}),_d=(e=>(e[e.Mutation=0]="Mutation",e[e.MouseMove=1]="MouseMove",e[e.MouseInteraction=2]="MouseInteraction",e[e.Scroll=3]="Scroll",e[e.ViewportResize=4]="ViewportResize",e[e.Input=5]="Input",e[e.TouchMove=6]="TouchMove",e[e.MediaInteraction=7]="MediaInteraction",e[e.StyleSheetRule=8]="StyleSheetRule",e[e.CanvasMutation=9]="CanvasMutation",e[e.Font=10]="Font",e[e.Log=11]="Log",e[e.Drag=12]="Drag",e[e.StyleDeclaration=13]="StyleDeclaration",e[e.Selection=14]="Selection",e[e.AdoptedStyleSheet=15]="AdoptedStyleSheet",e[e.CustomElement=16]="CustomElement",e))(_d||{}),Ud=(e=>(e[e.MouseUp=0]="MouseUp",e[e.MouseDown=1]="MouseDown",e[e.Click=2]="Click",e[e.ContextMenu=3]="ContextMenu",e[e.DblClick=4]="DblClick",e[e.Focus=5]="Focus",e[e.Blur=6]="Blur",e[e.TouchStart=7]="TouchStart",e[e.TouchMove_Departed=8]="TouchMove_Departed",e[e.TouchEnd=9]="TouchEnd",e[e.TouchCancel=10]="TouchCancel",e))(Ud||{}),Hd=(e=>(e[e.Mouse=0]="Mouse",e[e.Pen=1]="Pen",e[e.Touch=2]="Touch",e))(Hd||{}),zd=(e=>(e[e["2D"]=0]="2D",e[e.WebGL=1]="WebGL",e[e.WebGL2=2]="WebGL2",e))(zd||{}),qd=(e=>(e[e.Play=0]="Play",e[e.Pause=1]="Pause",e[e.Seeked=2]="Seeked",e[e.VolumeChange=3]="VolumeChange",e[e.RateChange=4]="RateChange",e))(qd||{}),Wd=(e=>(e[e.Document=0]="Document",e[e.DocumentType=1]="DocumentType",e[e.Element=2]="Element",e[e.Text=3]="Text",e[e.CDATA=4]="CDATA",e[e.Comment=5]="Comment",e))(Wd||{});function Gd(e){return"__ln"in e}class Vd{constructor(){Rn(this,"length",0),Rn(this,"head",null),Rn(this,"tail",null)}get(e){if(e>=this.length)throw new Error("Position outside of list range");let t=this.head;for(let n=0;n`${e}@${t}`;class Zd{constructor(){Rn(this,"frozen",!1),Rn(this,"locked",!1),Rn(this,"texts",[]),Rn(this,"attributes",[]),Rn(this,"attributeMap",new WeakMap),Rn(this,"removes",[]),Rn(this,"mapRemoves",[]),Rn(this,"movedMap",{}),Rn(this,"addedSet",new Set),Rn(this,"movedSet",new Set),Rn(this,"droppedSet",new Set),Rn(this,"removesSubTreeCache",new Set),Rn(this,"mutationCb"),Rn(this,"blockClass"),Rn(this,"blockSelector"),Rn(this,"maskTextClass"),Rn(this,"maskTextSelector"),Rn(this,"inlineStylesheet"),Rn(this,"maskInputOptions"),Rn(this,"maskTextFn"),Rn(this,"maskInputFn"),Rn(this,"keepIframeSrcFn"),Rn(this,"recordCanvas"),Rn(this,"inlineImages"),Rn(this,"slimDOMOptions"),Rn(this,"dataURLOptions"),Rn(this,"doc"),Rn(this,"mirror"),Rn(this,"iframeManager"),Rn(this,"stylesheetManager"),Rn(this,"shadowDomManager"),Rn(this,"canvasManager"),Rn(this,"processedNodeManager"),Rn(this,"unattachedDoc"),Rn(this,"processMutations",(e=>{e.forEach(this.processMutation),this.emit()})),Rn(this,"emit",(()=>{if(this.frozen||this.locked)return;const e=[],t=new Set,n=new Vd,o=e=>{let t=e,n=ho;for(;n===ho;)t=t&&t.nextSibling,n=t&&this.mirror.getId(t);return n},r=r=>{const i=md.parentNode(r);if(!i||!Fd(r))return;let a=!1;if(r.nodeType===Node.TEXT_NODE){const e=i.tagName;if("TEXTAREA"===e)return;"STYLE"===e&&this.addedSet.has(i)&&(a=!0)}const s=Jn(i)?this.mirror.getId(Nd(r)):this.mirror.getId(i),l=o(r);if(-1===s||-1===l)return n.addNode(r);const c=Lo(r,{doc:this.doc,mirror:this.mirror,blockClass:this.blockClass,blockSelector:this.blockSelector,maskTextClass:this.maskTextClass,maskTextSelector:this.maskTextSelector,skipChild:!0,newlyAddedElement:!0,inlineStylesheet:this.inlineStylesheet,maskInputOptions:this.maskInputOptions,maskTextFn:this.maskTextFn,maskInputFn:this.maskInputFn,slimDOMOptions:this.slimDOMOptions,dataURLOptions:this.dataURLOptions,recordCanvas:this.recordCanvas,inlineImages:this.inlineImages,onSerialize:e=>{Md(e,this.mirror)&&this.iframeManager.addIframe(e),Rd(e,this.mirror)&&this.stylesheetManager.trackLinkElement(e),Pd(r)&&this.shadowDomManager.addShadowRoot(md.shadowRoot(r),this.doc)},onIframeLoad:(e,t)=>{this.iframeManager.attachIframe(e,t),this.shadowDomManager.observeAttachShadow(e)},onStylesheetLoad:(e,t)=>{this.stylesheetManager.attachLinkElement(e,t)},cssCaptured:a});c&&(e.push({parentId:s,nextId:l,node:c}),t.add(c.id))};for(;this.mapRemoves.length;)this.mirror.removeNodeFromMap(this.mapRemoves.shift());for(const s of this.movedSet)Yd(this.removesSubTreeCache,s,this.mirror)&&!this.movedSet.has(md.parentNode(s))||r(s);for(const s of this.addedSet)Xd(this.droppedSet,s)||Yd(this.removesSubTreeCache,s,this.mirror)?Xd(this.movedSet,s)?r(s):this.droppedSet.add(s):r(s);let i=null;for(;n.length;){let e=null;if(i){const t=this.mirror.getId(md.parentNode(i.value)),n=o(i.value);-1!==t&&-1!==n&&(e=i)}if(!e){let t=n.tail;for(;t;){const n=t;if(t=t.previous,n){const t=this.mirror.getId(md.parentNode(n.value));if(-1===o(n.value))continue;if(-1!==t){e=n;break}{const t=n.value,o=md.parentNode(t);if(o&&o.nodeType===Node.DOCUMENT_FRAGMENT_NODE){const t=md.host(o);if(-1!==this.mirror.getId(t)){e=n;break}}}}}}if(!e){for(;n.head;)n.removeNode(n.head.value);break}i=e.previous,n.removeNode(e.value),r(e.value)}const a={texts:this.texts.map((e=>{const t=e.node,n=md.parentNode(t);return n&&"TEXTAREA"===n.tagName&&this.genTextAreaValueMutation(n),{id:this.mirror.getId(t),value:e.value}})).filter((e=>!t.has(e.id))).filter((e=>this.mirror.has(e.id))),attributes:this.attributes.map((e=>{const{attributes:t}=e;if("string"==typeof t.style){const n=JSON.stringify(e.styleDiff),o=JSON.stringify(e._unchangedStyles);n.length!t.has(e.id))).filter((e=>this.mirror.has(e.id))),removes:this.removes,adds:e};(a.texts.length||a.attributes.length||a.removes.length||a.adds.length)&&(this.texts=[],this.attributes=[],this.attributeMap=new WeakMap,this.removes=[],this.addedSet=new Set,this.movedSet=new Set,this.droppedSet=new Set,this.removesSubTreeCache=new Set,this.movedMap={},this.mutationCb(a))})),Rn(this,"genTextAreaValueMutation",(e=>{let t=this.attributeMap.get(e);t||(t={node:e,attributes:{},styleDiff:{},_unchangedStyles:{}},this.attributes.push(t),this.attributeMap.set(e,t)),t.attributes.value=Array.from(md.childNodes(e),(e=>md.textContent(e)||"")).join("")})),Rn(this,"processMutation",(e=>{if(!Td(e.target,this.mirror,this.slimDOMOptions))switch(e.type){case"characterData":{const t=md.textContent(e.target);Ed(e.target,this.blockClass,this.blockSelector,!1)||t===e.oldValue||this.texts.push({value:Oo(e.target,this.maskTextClass,this.maskTextSelector,!0)&&t?this.maskTextFn?this.maskTextFn(t,Od(e.target)):t.replace(/[\S]/g,"*"):t,node:e.target});break}case"attributes":{const n=e.target;let o=e.attributeName,r=e.target.getAttribute(o);if("value"===o){const e=to(n);r=$n({element:n,maskInputOptions:this.maskInputOptions,tagName:n.tagName,type:e,value:r,maskInputFn:this.maskInputFn})}if(Ed(e.target,this.blockClass,this.blockSelector,!1)||r===e.oldValue)return;let i=this.attributeMap.get(e.target);if("IFRAME"===n.tagName&&"src"===o&&!this.keepIframeSrcFn(r)){if(n.contentDocument)return;o="rr_src"}if(i||(i={node:e.target,attributes:{},styleDiff:{},_unchangedStyles:{}},this.attributes.push(i),this.attributeMap.set(e.target,i)),"type"===o&&"INPUT"===n.tagName&&"password"===(e.oldValue||"").toLowerCase()&&n.setAttribute("data-rr-is-password","true"),!Co(n.tagName,o))if(i.attributes[o]=So(this.doc,Qn(n.tagName),Qn(o),r),"style"===o){if(!this.unattachedDoc)try{this.unattachedDoc=document.implementation.createHTMLDocument()}catch(t){this.unattachedDoc=this.doc}const o=this.unattachedDoc.createElement("span");e.oldValue&&o.setAttribute("style",e.oldValue);for(const e of Array.from(n.style)){const t=n.style.getPropertyValue(e),r=n.style.getPropertyPriority(e);t!==o.style.getPropertyValue(e)||r!==o.style.getPropertyPriority(e)?i.styleDiff[e]=""===r?t:[t,r]:i._unchangedStyles[e]=[t,r]}for(const e of Array.from(o.style))""===n.style.getPropertyValue(e)&&(i.styleDiff[e]=!1)}else"open"===o&&"DIALOG"===n.tagName&&(n.matches("dialog:modal")?i.attributes.rr_open_mode="modal":i.attributes.rr_open_mode="non-modal");break}case"childList":if(Ed(e.target,this.blockClass,this.blockSelector,!0))return;if("TEXTAREA"===e.target.tagName)return void this.genTextAreaValueMutation(e.target);e.addedNodes.forEach((t=>this.genAdds(t,e.target))),e.removedNodes.forEach((t=>{const n=this.mirror.getId(t),o=Jn(e.target)?this.mirror.getId(md.host(e.target)):this.mirror.getId(e.target);Ed(e.target,this.blockClass,this.blockSelector,!1)||Td(t,this.mirror,this.slimDOMOptions)||!function(e,t){return-1!==t.getId(e)}(t,this.mirror)||(this.addedSet.has(t)?(Kd(this.addedSet,t),this.droppedSet.add(t)):this.addedSet.has(e.target)&&-1===n||Ld(e.target,this.mirror)||(this.movedSet.has(t)&&this.movedMap[Jd(n,o)]?Kd(this.movedSet,t):(this.removes.push({parentId:o,id:n,isShadow:!(!Jn(e.target)||!Zn(e.target))||void 0}),function(e,t){const n=[e];for(;n.length;){const e=n.pop();t.has(e)||(t.add(e),md.childNodes(e).forEach((e=>n.push(e))))}}(t,this.removesSubTreeCache))),this.mapRemoves.push(t))}))}})),Rn(this,"genAdds",((e,t)=>{if(!this.processedNodeManager.inOtherBuffer(e,this)&&!this.addedSet.has(e)&&!this.movedSet.has(e)){if(this.mirror.hasNode(e)){if(Td(e,this.mirror,this.slimDOMOptions))return;this.movedSet.add(e);let n=null;t&&this.mirror.hasNode(t)&&(n=this.mirror.getId(t)),n&&-1!==n&&(this.movedMap[Jd(this.mirror.getId(e),n)]=!0)}else this.addedSet.add(e),this.droppedSet.delete(e);Ed(e,this.blockClass,this.blockSelector,!1)||(md.childNodes(e).forEach((e=>this.genAdds(e))),Pd(e)&&md.childNodes(md.shadowRoot(e)).forEach((t=>{this.processedNodeManager.add(t,this),this.genAdds(t,e)})))}}))}init(e){["mutationCb","blockClass","blockSelector","maskTextClass","maskTextSelector","inlineStylesheet","maskInputOptions","maskTextFn","maskInputFn","keepIframeSrcFn","recordCanvas","inlineImages","slimDOMOptions","dataURLOptions","doc","mirror","iframeManager","stylesheetManager","shadowDomManager","canvasManager","processedNodeManager"].forEach((t=>{this[t]=e[t]}))}freeze(){this.frozen=!0,this.canvasManager.freeze()}unfreeze(){this.frozen=!1,this.canvasManager.unfreeze(),this.emit()}isFrozen(){return this.frozen}lock(){this.locked=!0,this.canvasManager.lock()}unlock(){this.locked=!1,this.canvasManager.unlock(),this.emit()}reset(){this.shadowDomManager.reset(),this.canvasManager.reset()}}function Kd(e,t){e.delete(t),md.childNodes(t).forEach((t=>Kd(e,t)))}function Yd(e,t,n){return 0!==e.size&&function(e,t,n){const o=md.parentNode(t);return!!o&&e.has(o)}(e,t)}function Xd(e,t){return 0!==e.size&&$d(e,t)}function $d(e,t){const n=md.parentNode(t);return!!n&&(!!e.has(n)||$d(e,n))}let Qd;const ep=e=>{if(!Qd)return e;return(...t)=>{try{return e(...t)}catch(n){if(Qd&&!0===Qd(n))return;throw n}}},tp=[];function np(e){try{if("composedPath"in e){const t=e.composedPath();if(t.length)return t[0]}else if("path"in e&&e.path.length)return e.path[0]}catch{}return e&&e.target}function op(e,t){const n=new Zd;tp.push(n),n.init(e);const o=new(fd())(ep(n.processMutations.bind(n)));return o.observe(t,{attributes:!0,attributeOldValue:!0,characterData:!0,characterDataOldValue:!0,childList:!0,subtree:!0}),o}function rp({mouseInteractionCb:e,doc:t,mirror:n,blockClass:o,blockSelector:r,sampling:i}){if(!1===i.mouseInteraction)return()=>{};const a=!0===i.mouseInteraction||void 0===i.mouseInteraction?{}:i.mouseInteraction,s=[];let l=null;return Object.keys(Ud).filter((e=>Number.isNaN(Number(e))&&!e.endsWith("_Departed")&&!1!==a[e])).forEach((i=>{let a=Qn(i);const c=(t=>i=>{const a=np(i);if(Ed(a,o,r,!0))return;let s=null,c=t;if("pointerType"in i){switch(i.pointerType){case"mouse":s=Hd.Mouse;break;case"touch":s=Hd.Touch;break;case"pen":s=Hd.Pen}s===Hd.Touch?Ud[t]===Ud.MouseDown?c="TouchStart":Ud[t]===Ud.MouseUp&&(c="TouchEnd"):Hd.Pen}else Ad(i)&&(s=Hd.Touch);null!==s?(l=s,(c.startsWith("Touch")&&s===Hd.Touch||c.startsWith("Mouse")&&s===Hd.Mouse)&&(s=null)):Ud[t]===Ud.Click&&(s=l,l=null);const u=Ad(i)?i.changedTouches[0]:i;if(!u)return;const d=n.getId(a),{clientX:p,clientY:h}=u;ep(e)({type:Ud[c],id:d,x:p,y:h,...null!==s&&{pointerType:s}})})(i);if(window.PointerEvent)switch(Ud[i]){case Ud.MouseDown:case Ud.MouseUp:a=a.replace("mouse","pointer");break;case Ud.TouchStart:case Ud.TouchEnd:return}s.push(gd(a,c,t))})),ep((()=>{s.forEach((e=>e()))}))}function ip({scrollCb:e,doc:t,mirror:n,blockClass:o,blockSelector:r,sampling:i}){return gd("scroll",ep(bd(ep((i=>{const a=np(i);if(!a||Ed(a,o,r,!0))return;const s=n.getId(a);if(a===t&&t.defaultView){const n=Sd(t.defaultView);e({id:s,x:n.left,y:n.top})}else e({id:s,x:a.scrollLeft,y:a.scrollTop})})),i.scroll||100)),t)}const ap=["INPUT","TEXTAREA","SELECT"],sp=new WeakMap;function lp(e){return function(e,t){if(pp("CSSGroupingRule")&&e.parentRule instanceof CSSGroupingRule||pp("CSSMediaRule")&&e.parentRule instanceof CSSMediaRule||pp("CSSSupportsRule")&&e.parentRule instanceof CSSSupportsRule||pp("CSSConditionRule")&&e.parentRule instanceof CSSConditionRule){const n=Array.from(e.parentRule.cssRules).indexOf(e);t.unshift(n)}else if(e.parentStyleSheet){const n=Array.from(e.parentStyleSheet.cssRules).indexOf(e);t.unshift(n)}return t}(e,[])}function cp(e,t,n){let o,r;return e?(e.ownerNode?o=t.getId(e.ownerNode):r=n.getId(e),{styleId:r,id:o}):{}}function up({mirror:e,stylesheetManager:t},n){var o,r,i;let a=null;a="#document"===n.nodeName?e.getId(n):e.getId(md.host(n));const s="#document"===n.nodeName?null==(o=n.defaultView)?void 0:o.Document:null==(i=null==(r=n.ownerDocument)?void 0:r.defaultView)?void 0:i.ShadowRoot,l=(null==s?void 0:s.prototype)?Object.getOwnPropertyDescriptor(null==s?void 0:s.prototype,"adoptedStyleSheets"):void 0;return null!==a&&-1!==a&&s&&l?(Object.defineProperty(n,"adoptedStyleSheets",{configurable:l.configurable,enumerable:l.enumerable,get(){var e;return null==(e=l.get)?void 0:e.call(this)},set(e){var n;const o=null==(n=l.set)?void 0:n.call(this,e);if(null!==a&&-1!==a)try{t.adoptStyleSheets(e,a)}catch(r){}return o}}),ep((()=>{Object.defineProperty(n,"adoptedStyleSheets",{configurable:l.configurable,enumerable:l.enumerable,get:l.get,set:l.set})}))):()=>{}}function dp(e,t={}){const n=e.doc.defaultView;if(!n)return()=>{};let o;!function(e,t){const{mutationCb:n,mousemoveCb:o,mouseInteractionCb:r,scrollCb:i,viewportResizeCb:a,inputCb:s,mediaInteractionCb:l,styleSheetRuleCb:c,styleDeclarationCb:u,canvasMutationCb:d,fontCb:p,selectionCb:h,customElementCb:f}=e;e.mutationCb=(...e)=>{t.mutation&&t.mutation(...e),n(...e)},e.mousemoveCb=(...e)=>{t.mousemove&&t.mousemove(...e),o(...e)},e.mouseInteractionCb=(...e)=>{t.mouseInteraction&&t.mouseInteraction(...e),r(...e)},e.scrollCb=(...e)=>{t.scroll&&t.scroll(...e),i(...e)},e.viewportResizeCb=(...e)=>{t.viewportResize&&t.viewportResize(...e),a(...e)},e.inputCb=(...e)=>{t.input&&t.input(...e),s(...e)},e.mediaInteractionCb=(...e)=>{t.mediaInteaction&&t.mediaInteaction(...e),l(...e)},e.styleSheetRuleCb=(...e)=>{t.styleSheetRule&&t.styleSheetRule(...e),c(...e)},e.styleDeclarationCb=(...e)=>{t.styleDeclaration&&t.styleDeclaration(...e),u(...e)},e.canvasMutationCb=(...e)=>{t.canvasMutation&&t.canvasMutation(...e),d(...e)},e.fontCb=(...e)=>{t.font&&t.font(...e),p(...e)},e.selectionCb=(...e)=>{t.selection&&t.selection(...e),h(...e)},e.customElementCb=(...e)=>{t.customElement&&t.customElement(...e),f(...e)}}(e,t),e.recordDOM&&(o=op(e,e.doc));const r=function({mousemoveCb:e,sampling:t,doc:n,mirror:o}){if(!1===t.mousemove)return()=>{};const r="number"==typeof t.mousemove?t.mousemove:50,i="number"==typeof t.mousemoveCallback?t.mousemoveCallback:500;let a,s=[];const l=bd(ep((t=>{const n=Date.now()-a;e(s.map((e=>(e.timeOffset-=n,e))),t),s=[],a=null})),i),c=ep(bd(ep((e=>{const t=np(e),{clientX:n,clientY:r}=Ad(e)?e.changedTouches[0]:e;a||(a=xd()),s.push({x:n,y:r,id:o.getId(t),timeOffset:xd()-a}),l("undefined"!=typeof DragEvent&&e instanceof DragEvent?_d.Drag:e instanceof MouseEvent?_d.MouseMove:_d.TouchMove)})),r,{trailing:!1})),u=[gd("mousemove",c,n),gd("touchmove",c,n),gd("drag",c,n)];return ep((()=>{u.forEach((e=>e()))}))}(e),i=rp(e),a=ip(e),s=function({viewportResizeCb:e},{win:t}){let n=-1,o=-1;return gd("resize",ep(bd(ep((()=>{const t=Cd(),r=Id();n===t&&o===r||(e({width:Number(r),height:Number(t)}),n=t,o=r)})),200)),t)}(e,{win:n}),l=function({inputCb:e,doc:t,mirror:n,blockClass:o,blockSelector:r,ignoreClass:i,ignoreSelector:a,maskInputOptions:s,maskInputFn:l,sampling:c,userTriggeredOnInput:u}){function d(e){let n=np(e);const c=e.isTrusted,d=n&&n.tagName;if(n&&"OPTION"===d&&(n=md.parentElement(n)),!n||!d||ap.indexOf(d)<0||Ed(n,o,r,!0))return;if(n.classList.contains(i)||a&&n.matches(a))return;let h=n.value,f=!1;const m=to(n)||"";"radio"===m||"checkbox"===m?f=n.checked:(s[d.toLowerCase()]||s[m])&&(h=$n({element:n,maskInputOptions:s,tagName:d,type:m,value:h,maskInputFn:l})),p(n,u?{text:h,isChecked:f,userTriggered:c}:{text:h,isChecked:f});const g=n.name;"radio"===m&&g&&f&&t.querySelectorAll(`input[type="radio"][name="${g}"]`).forEach((e=>{if(e!==n){const t=e.value;p(e,u?{text:t,isChecked:!f,userTriggered:!1}:{text:t,isChecked:!f})}}))}function p(t,o){const r=sp.get(t);if(!r||r.text!==o.text||r.isChecked!==o.isChecked){sp.set(t,o);const r=n.getId(t);ep(e)({...o,id:r})}}const h=("last"===c.input?["change"]:["input","change"]).map((e=>gd(e,ep(d),t))),f=t.defaultView;if(!f)return()=>{h.forEach((e=>e()))};const m=f.Object.getOwnPropertyDescriptor(f.HTMLInputElement.prototype,"value"),g=[[f.HTMLInputElement.prototype,"value"],[f.HTMLInputElement.prototype,"checked"],[f.HTMLSelectElement.prototype,"value"],[f.HTMLTextAreaElement.prototype,"value"],[f.HTMLSelectElement.prototype,"selectedIndex"],[f.HTMLOptionElement.prototype,"selected"]];return m&&m.set&&h.push(...g.map((e=>wd(e[0],e[1],{set(){ep(d)({target:this,isTrusted:!1})}},!1,f)))),ep((()=>{h.forEach((e=>e()))}))}(e),c=function({mediaInteractionCb:e,blockClass:t,blockSelector:n,mirror:o,sampling:r,doc:i}){const a=ep((i=>bd(ep((r=>{const a=np(r);if(!a||Ed(a,t,n,!0))return;const{currentTime:s,volume:l,muted:c,playbackRate:u,loop:d}=a;e({type:i,id:o.getId(a),currentTime:s,volume:l,muted:c,playbackRate:u,loop:d})})),r.media||500))),s=[gd("play",a(qd.Play),i),gd("pause",a(qd.Pause),i),gd("seeked",a(qd.Seeked),i),gd("volumechange",a(qd.VolumeChange),i),gd("ratechange",a(qd.RateChange),i)];return ep((()=>{s.forEach((e=>e()))}))}(e);let u=()=>{},d=()=>{},p=()=>{},h=()=>{};e.recordDOM&&(u=function({styleSheetRuleCb:e,mirror:t,stylesheetManager:n},{win:o}){if(!o.CSSStyleSheet||!o.CSSStyleSheet.prototype)return()=>{};const r=o.CSSStyleSheet.prototype.insertRule;o.CSSStyleSheet.prototype.insertRule=new Proxy(r,{apply:ep(((o,r,i)=>{const[a,s]=i,{id:l,styleId:c}=cp(r,t,n.styleMirror);return(l&&-1!==l||c&&-1!==c)&&e({id:l,styleId:c,adds:[{rule:a,index:s}]}),o.apply(r,i)}))}),o.CSSStyleSheet.prototype.addRule=function(e,t,n=this.cssRules.length){const r=`${e} { ${t} }`;return o.CSSStyleSheet.prototype.insertRule.apply(this,[r,n])};const i=o.CSSStyleSheet.prototype.deleteRule;let a,s;o.CSSStyleSheet.prototype.deleteRule=new Proxy(i,{apply:ep(((o,r,i)=>{const[a]=i,{id:s,styleId:l}=cp(r,t,n.styleMirror);return(s&&-1!==s||l&&-1!==l)&&e({id:s,styleId:l,removes:[{index:a}]}),o.apply(r,i)}))}),o.CSSStyleSheet.prototype.removeRule=function(e){return o.CSSStyleSheet.prototype.deleteRule.apply(this,[e])},o.CSSStyleSheet.prototype.replace&&(a=o.CSSStyleSheet.prototype.replace,o.CSSStyleSheet.prototype.replace=new Proxy(a,{apply:ep(((o,r,i)=>{const[a]=i,{id:s,styleId:l}=cp(r,t,n.styleMirror);return(s&&-1!==s||l&&-1!==l)&&e({id:s,styleId:l,replace:a}),o.apply(r,i)}))})),o.CSSStyleSheet.prototype.replaceSync&&(s=o.CSSStyleSheet.prototype.replaceSync,o.CSSStyleSheet.prototype.replaceSync=new Proxy(s,{apply:ep(((o,r,i)=>{const[a]=i,{id:s,styleId:l}=cp(r,t,n.styleMirror);return(s&&-1!==s||l&&-1!==l)&&e({id:s,styleId:l,replaceSync:a}),o.apply(r,i)}))}));const l={};hp("CSSGroupingRule")?l.CSSGroupingRule=o.CSSGroupingRule:(hp("CSSMediaRule")&&(l.CSSMediaRule=o.CSSMediaRule),hp("CSSConditionRule")&&(l.CSSConditionRule=o.CSSConditionRule),hp("CSSSupportsRule")&&(l.CSSSupportsRule=o.CSSSupportsRule));const c={};return Object.entries(l).forEach((([o,r])=>{c[o]={insertRule:r.prototype.insertRule,deleteRule:r.prototype.deleteRule},r.prototype.insertRule=new Proxy(c[o].insertRule,{apply:ep(((o,r,i)=>{const[a,s]=i,{id:l,styleId:c}=cp(r.parentStyleSheet,t,n.styleMirror);return(l&&-1!==l||c&&-1!==c)&&e({id:l,styleId:c,adds:[{rule:a,index:[...lp(r),s||0]}]}),o.apply(r,i)}))}),r.prototype.deleteRule=new Proxy(c[o].deleteRule,{apply:ep(((o,r,i)=>{const[a]=i,{id:s,styleId:l}=cp(r.parentStyleSheet,t,n.styleMirror);return(s&&-1!==s||l&&-1!==l)&&e({id:s,styleId:l,removes:[{index:[...lp(r),a]}]}),o.apply(r,i)}))})})),ep((()=>{o.CSSStyleSheet.prototype.insertRule=r,o.CSSStyleSheet.prototype.deleteRule=i,a&&(o.CSSStyleSheet.prototype.replace=a),s&&(o.CSSStyleSheet.prototype.replaceSync=s),Object.entries(l).forEach((([e,t])=>{t.prototype.insertRule=c[e].insertRule,t.prototype.deleteRule=c[e].deleteRule}))}))}(e,{win:n}),d=up(e,e.doc),p=function({styleDeclarationCb:e,mirror:t,ignoreCSSAttributes:n,stylesheetManager:o},{win:r}){const i=r.CSSStyleDeclaration.prototype.setProperty;r.CSSStyleDeclaration.prototype.setProperty=new Proxy(i,{apply:ep(((r,a,s)=>{var l;const[c,u,d]=s;if(n.has(c))return i.apply(a,[c,u,d]);const{id:p,styleId:h}=cp(null==(l=a.parentRule)?void 0:l.parentStyleSheet,t,o.styleMirror);return(p&&-1!==p||h&&-1!==h)&&e({id:p,styleId:h,set:{property:c,value:u,priority:d},index:lp(a.parentRule)}),r.apply(a,s)}))});const a=r.CSSStyleDeclaration.prototype.removeProperty;return r.CSSStyleDeclaration.prototype.removeProperty=new Proxy(a,{apply:ep(((r,i,s)=>{var l;const[c]=s;if(n.has(c))return a.apply(i,[c]);const{id:u,styleId:d}=cp(null==(l=i.parentRule)?void 0:l.parentStyleSheet,t,o.styleMirror);return(u&&-1!==u||d&&-1!==d)&&e({id:u,styleId:d,remove:{property:c},index:lp(i.parentRule)}),r.apply(i,s)}))}),ep((()=>{r.CSSStyleDeclaration.prototype.setProperty=i,r.CSSStyleDeclaration.prototype.removeProperty=a}))}(e,{win:n}),e.collectFonts&&(h=function({fontCb:e,doc:t}){const n=t.defaultView;if(!n)return()=>{};const o=[],r=new WeakMap,i=n.FontFace;n.FontFace=function(e,t,n){const o=new i(e,t,n);return r.set(o,{family:e,buffer:"string"!=typeof t,descriptors:n,fontSource:"string"==typeof t?t:JSON.stringify(Array.from(new Uint8Array(t)))}),o};const a=kd(t.fonts,"add",(function(t){return function(n){return setTimeout(ep((()=>{const t=r.get(n);t&&(e(t),r.delete(n))})),0),t.apply(this,[n])}}));return o.push((()=>{n.FontFace=i})),o.push(a),ep((()=>{o.forEach((e=>e()))}))}(e)));const f=function(e){const{doc:t,mirror:n,blockClass:o,blockSelector:r,selectionCb:i}=e;let a=!0;const s=ep((()=>{const e=t.getSelection();if(!e||a&&(null==e?void 0:e.isCollapsed))return;a=e.isCollapsed||!1;const s=[],l=e.rangeCount||0;for(let t=0;t{}}(e),g=[];for(const v of e.plugins)g.push(v.observer(v.callback,n,v.options));return ep((()=>{tp.forEach((e=>e.reset())),null==o||o.disconnect(),r(),i(),a(),s(),l(),c(),u(),d(),p(),h(),f(),m(),g.forEach((e=>e()))}))}function pp(e){return void 0!==window[e]}function hp(e){return Boolean(void 0!==window[e]&&window[e].prototype&&"insertRule"in window[e].prototype&&"deleteRule"in window[e].prototype)}class fp{constructor(e){Rn(this,"iframeIdToRemoteIdMap",new WeakMap),Rn(this,"iframeRemoteIdToIdMap",new WeakMap),this.generateIdFn=e}getId(e,t,n,o){const r=n||this.getIdToRemoteIdMap(e),i=o||this.getRemoteIdToIdMap(e);let a=r.get(t);return a||(a=this.generateIdFn(),r.set(t,a),i.set(a,t)),a}getIds(e,t){const n=this.getIdToRemoteIdMap(e),o=this.getRemoteIdToIdMap(e);return t.map((t=>this.getId(e,t,n,o)))}getRemoteId(e,t,n){const o=n||this.getRemoteIdToIdMap(e);if("number"!=typeof t)return t;const r=o.get(t);return r||-1}getRemoteIds(e,t){const n=this.getRemoteIdToIdMap(e);return t.map((t=>this.getRemoteId(e,t,n)))}reset(e){if(!e)return this.iframeIdToRemoteIdMap=new WeakMap,void(this.iframeRemoteIdToIdMap=new WeakMap);this.iframeIdToRemoteIdMap.delete(e),this.iframeRemoteIdToIdMap.delete(e)}getIdToRemoteIdMap(e){let t=this.iframeIdToRemoteIdMap.get(e);return t||(t=new Map,this.iframeIdToRemoteIdMap.set(e,t)),t}getRemoteIdToIdMap(e){let t=this.iframeRemoteIdToIdMap.get(e);return t||(t=new Map,this.iframeRemoteIdToIdMap.set(e,t)),t}}class mp{constructor(e){Rn(this,"iframes",new WeakMap),Rn(this,"crossOriginIframeMap",new WeakMap),Rn(this,"crossOriginIframeMirror",new fp(fo)),Rn(this,"crossOriginIframeStyleMirror"),Rn(this,"crossOriginIframeRootIdMap",new WeakMap),Rn(this,"mirror"),Rn(this,"mutationCb"),Rn(this,"wrappedEmit"),Rn(this,"loadListener"),Rn(this,"stylesheetManager"),Rn(this,"recordCrossOriginIframes"),this.mutationCb=e.mutationCb,this.wrappedEmit=e.wrappedEmit,this.stylesheetManager=e.stylesheetManager,this.recordCrossOriginIframes=e.recordCrossOriginIframes,this.crossOriginIframeStyleMirror=new fp(this.stylesheetManager.styleMirror.generateId.bind(this.stylesheetManager.styleMirror)),this.mirror=e.mirror,this.recordCrossOriginIframes&&window.addEventListener("message",this.handleMessage.bind(this))}addIframe(e){this.iframes.set(e,!0),e.contentWindow&&this.crossOriginIframeMap.set(e.contentWindow,e)}addLoadListener(e){this.loadListener=e}attachIframe(e,t){var n,o;this.mutationCb({adds:[{parentId:this.mirror.getId(e),nextId:null,node:t}],removes:[],texts:[],attributes:[],isAttachIframe:!0}),this.recordCrossOriginIframes&&(null==(n=e.contentWindow)||n.addEventListener("message",this.handleMessage.bind(this))),null==(o=this.loadListener)||o.call(this,e),e.contentDocument&&e.contentDocument.adoptedStyleSheets&&e.contentDocument.adoptedStyleSheets.length>0&&this.stylesheetManager.adoptStyleSheets(e.contentDocument.adoptedStyleSheets,this.mirror.getId(e.contentDocument))}handleMessage(e){const t=e;if("rrweb"!==t.data.type||t.origin!==t.data.origin)return;if(!e.source)return;const n=this.crossOriginIframeMap.get(e.source);if(!n)return;const o=this.transformCrossOriginEvent(n,t.data.event);o&&this.wrappedEmit(o,t.data.isCheckout)}transformCrossOriginEvent(e,t){var n;switch(t.type){case Bd.FullSnapshot:{this.crossOriginIframeMirror.reset(e),this.crossOriginIframeStyleMirror.reset(e),this.replaceIdOnNode(t.data.node,e);const n=t.data.node.id;return this.crossOriginIframeRootIdMap.set(e,n),this.patchRootIdOnNode(t.data.node,n),{timestamp:t.timestamp,type:Bd.IncrementalSnapshot,data:{source:_d.Mutation,adds:[{parentId:this.mirror.getId(e),nextId:null,node:t.data.node}],removes:[],texts:[],attributes:[],isAttachIframe:!0}}}case Bd.Meta:case Bd.Load:case Bd.DomContentLoaded:return!1;case Bd.Plugin:return t;case Bd.Custom:return this.replaceIds(t.data.payload,e,["id","parentId","previousId","nextId"]),t;case Bd.IncrementalSnapshot:switch(t.data.source){case _d.Mutation:return t.data.adds.forEach((t=>{this.replaceIds(t,e,["parentId","nextId","previousId"]),this.replaceIdOnNode(t.node,e);const n=this.crossOriginIframeRootIdMap.get(e);n&&this.patchRootIdOnNode(t.node,n)})),t.data.removes.forEach((t=>{this.replaceIds(t,e,["parentId","id"])})),t.data.attributes.forEach((t=>{this.replaceIds(t,e,["id"])})),t.data.texts.forEach((t=>{this.replaceIds(t,e,["id"])})),t;case _d.Drag:case _d.TouchMove:case _d.MouseMove:return t.data.positions.forEach((t=>{this.replaceIds(t,e,["id"])})),t;case _d.ViewportResize:return!1;case _d.MediaInteraction:case _d.MouseInteraction:case _d.Scroll:case _d.CanvasMutation:case _d.Input:return this.replaceIds(t.data,e,["id"]),t;case _d.StyleSheetRule:case _d.StyleDeclaration:return this.replaceIds(t.data,e,["id"]),this.replaceStyleIds(t.data,e,["styleId"]),t;case _d.Font:return t;case _d.Selection:return t.data.ranges.forEach((t=>{this.replaceIds(t,e,["start","end"])})),t;case _d.AdoptedStyleSheet:return this.replaceIds(t.data,e,["id"]),this.replaceStyleIds(t.data,e,["styleIds"]),null==(n=t.data.styles)||n.forEach((t=>{this.replaceStyleIds(t,e,["styleId"])})),t}}return!1}replace(e,t,n,o){for(const r of o)(Array.isArray(t[r])||"number"==typeof t[r])&&(Array.isArray(t[r])?t[r]=e.getIds(n,t[r]):t[r]=e.getId(n,t[r]));return t}replaceIds(e,t,n){return this.replace(this.crossOriginIframeMirror,e,t,n)}replaceStyleIds(e,t,n){return this.replace(this.crossOriginIframeStyleMirror,e,t,n)}replaceIdOnNode(e,t){this.replaceIds(e,t,["id","rootId"]),"childNodes"in e&&e.childNodes.forEach((e=>{this.replaceIdOnNode(e,t)}))}patchRootIdOnNode(e,t){e.type===Wd.Document||e.rootId||(e.rootId=t),"childNodes"in e&&e.childNodes.forEach((e=>{this.patchRootIdOnNode(e,t)}))}}class gp{constructor(e){Rn(this,"shadowDoms",new WeakSet),Rn(this,"mutationCb"),Rn(this,"scrollCb"),Rn(this,"bypassOptions"),Rn(this,"mirror"),Rn(this,"restoreHandlers",[]),this.mutationCb=e.mutationCb,this.scrollCb=e.scrollCb,this.bypassOptions=e.bypassOptions,this.mirror=e.mirror,this.init()}init(){this.reset(),this.patchAttachShadow(Element,document)}addShadowRoot(e,t){if(!Zn(e))return;if(this.shadowDoms.has(e))return;this.shadowDoms.add(e);const n=op({...this.bypassOptions,doc:t,mutationCb:this.mutationCb,mirror:this.mirror,shadowDomManager:this},e);this.restoreHandlers.push((()=>n.disconnect())),this.restoreHandlers.push(ip({...this.bypassOptions,scrollCb:this.scrollCb,doc:e,mirror:this.mirror})),setTimeout((()=>{e.adoptedStyleSheets&&e.adoptedStyleSheets.length>0&&this.bypassOptions.stylesheetManager.adoptStyleSheets(e.adoptedStyleSheets,this.mirror.getId(md.host(e))),this.restoreHandlers.push(up({mirror:this.mirror,stylesheetManager:this.bypassOptions.stylesheetManager},e))}),0)}observeAttachShadow(e){e.contentWindow&&e.contentDocument&&this.patchAttachShadow(e.contentWindow.Element,e.contentDocument)}patchAttachShadow(e,t){const n=this;this.restoreHandlers.push(kd(e.prototype,"attachShadow",(function(e){return function(o){const r=e.call(this,o),i=md.shadowRoot(this);return i&&Fd(this)&&n.addShadowRoot(i,t),r}})))}reset(){this.restoreHandlers.forEach((e=>{try{e()}catch(t){}})),this.restoreHandlers=[],this.shadowDoms=new WeakSet}}for(var vp="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",yp="undefined"==typeof Uint8Array?[]:new Uint8Array(256),bp=0;bp<64;bp++)yp[vp.charCodeAt(bp)]=bp;const wp=new Map;const kp=(e,t,n)=>{if(!e||!Cp(e,t)&&"object"!=typeof e)return;const o=function(e,t){let n=wp.get(e);return n||(n=new Map,wp.set(e,n)),n.has(t)||n.set(t,[]),n.get(t)}(n,e.constructor.name);let r=o.indexOf(e);return-1===r&&(r=o.length,o.push(e)),r};function xp(e,t,n){if(e instanceof Array)return e.map((e=>xp(e,t,n)));if(null===e)return e;if(e instanceof Float32Array||e instanceof Float64Array||e instanceof Int32Array||e instanceof Uint32Array||e instanceof Uint8Array||e instanceof Uint16Array||e instanceof Int16Array||e instanceof Int8Array||e instanceof Uint8ClampedArray){return{rr_type:e.constructor.name,args:[Object.values(e)]}}if(e instanceof ArrayBuffer){return{rr_type:e.constructor.name,base64:function(e){var t,n=new Uint8Array(e),o=n.length,r="";for(t=0;t>2],r+=vp[(3&n[t])<<4|n[t+1]>>4],r+=vp[(15&n[t+1])<<2|n[t+2]>>6],r+=vp[63&n[t+2]];return o%3==2?r=r.substring(0,r.length-1)+"=":o%3==1&&(r=r.substring(0,r.length-2)+"=="),r}(e)}}if(e instanceof DataView){return{rr_type:e.constructor.name,args:[xp(e.buffer,t,n),e.byteOffset,e.byteLength]}}if(e instanceof HTMLImageElement){const t=e.constructor.name,{src:n}=e;return{rr_type:t,src:n}}if(e instanceof HTMLCanvasElement){return{rr_type:"HTMLImageElement",src:e.toDataURL()}}if(e instanceof ImageData){return{rr_type:e.constructor.name,args:[xp(e.data,t,n),e.width,e.height]}}if(Cp(e,t)||"object"==typeof e){return{rr_type:e.constructor.name,index:kp(e,t,n)}}return e}const Sp=(e,t,n)=>e.map((e=>xp(e,t,n))),Cp=(e,t)=>{const n=["WebGLActiveInfo","WebGLBuffer","WebGLFramebuffer","WebGLProgram","WebGLRenderbuffer","WebGLShader","WebGLShaderPrecisionFormat","WebGLTexture","WebGLUniformLocation","WebGLVertexArrayObject","WebGLVertexArrayObjectOES"].filter((e=>"function"==typeof t[e]));return Boolean(n.find((n=>e instanceof t[n])))};function Ip(e,t,n,o){const r=[];try{const i=kd(e.HTMLCanvasElement.prototype,"getContext",(function(e){return function(r,...i){if(!Ed(this,t,n,!0)){const e=function(e){return"experimental-webgl"===e?"webgl":e}(r);if("__context"in this||(this.__context=e),o&&["webgl","webgl2"].includes(e))if(i[0]&&"object"==typeof i[0]){const e=i[0];e.preserveDrawingBuffer||(e.preserveDrawingBuffer=!0)}else i.splice(0,1,{preserveDrawingBuffer:!0})}return e.apply(this,[r,...i])}}));r.push(i)}catch{console.error("failed to patch HTMLCanvasElement.prototype.getContext")}return()=>{r.forEach((e=>e()))}}function Op(e,t,n,o,r,i){const a=[],s=Object.getOwnPropertyNames(e);for(const l of s)if(!["isContextLost","canvas","drawingBufferWidth","drawingBufferHeight"].includes(l))try{if("function"!=typeof e[l])continue;const s=kd(e,l,(function(e){return function(...a){const s=e.apply(this,a);if(kp(s,i,this),"tagName"in this.canvas&&!Ed(this.canvas,o,r,!0)){const e=Sp(a,i,this),o={type:t,property:l,args:e};n(this.canvas,o)}return s}}));a.push(s)}catch{const o=wd(e,l,{set(e){n(this.canvas,{type:t,property:l,args:[e],setter:!0})}});a.push(o)}return a}const Ep="KGZ1bmN0aW9uKCkgewogICJ1c2Ugc3RyaWN0IjsKICB2YXIgY2hhcnMgPSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7CiAgdmFyIGxvb2t1cCA9IHR5cGVvZiBVaW50OEFycmF5ID09PSAidW5kZWZpbmVkIiA/IFtdIDogbmV3IFVpbnQ4QXJyYXkoMjU2KTsKICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYXJzLmxlbmd0aDsgaSsrKSB7CiAgICBsb29rdXBbY2hhcnMuY2hhckNvZGVBdChpKV0gPSBpOwogIH0KICB2YXIgZW5jb2RlID0gZnVuY3Rpb24oYXJyYXlidWZmZXIpIHsKICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGFycmF5YnVmZmVyKSwgaTIsIGxlbiA9IGJ5dGVzLmxlbmd0aCwgYmFzZTY0ID0gIiI7CiAgICBmb3IgKGkyID0gMDsgaTIgPCBsZW47IGkyICs9IDMpIHsKICAgICAgYmFzZTY0ICs9IGNoYXJzW2J5dGVzW2kyXSA+PiAyXTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMl0gJiAzKSA8PCA0IHwgYnl0ZXNbaTIgKyAxXSA+PiA0XTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMiArIDFdICYgMTUpIDw8IDIgfCBieXRlc1tpMiArIDJdID4+IDZdOwogICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaTIgKyAyXSAmIDYzXTsKICAgIH0KICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgIj0iOwogICAgfSBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgIj09IjsKICAgIH0KICAgIHJldHVybiBiYXNlNjQ7CiAgfTsKICBjb25zdCBsYXN0QmxvYk1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7CiAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTsKICBhc3luYyBmdW5jdGlvbiBnZXRUcmFuc3BhcmVudEJsb2JGb3Iod2lkdGgsIGhlaWdodCwgZGF0YVVSTE9wdGlvbnMpIHsKICAgIGNvbnN0IGlkID0gYCR7d2lkdGh9LSR7aGVpZ2h0fWA7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBpZiAodHJhbnNwYXJlbnRCbG9iTWFwLmhhcyhpZCkpIHJldHVybiB0cmFuc3BhcmVudEJsb2JNYXAuZ2V0KGlkKTsKICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsKICAgICAgb2Zmc2NyZWVuLmdldENvbnRleHQoIjJkIik7CiAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCBvZmZzY3JlZW4uY29udmVydFRvQmxvYihkYXRhVVJMT3B0aW9ucyk7CiAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gYXdhaXQgYmxvYi5hcnJheUJ1ZmZlcigpOwogICAgICBjb25zdCBiYXNlNjQgPSBlbmNvZGUoYXJyYXlCdWZmZXIpOwogICAgICB0cmFuc3BhcmVudEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICByZXR1cm4gYmFzZTY0OwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuICIiOwogICAgfQogIH0KICBjb25zdCB3b3JrZXIgPSBzZWxmOwogIHdvcmtlci5vbm1lc3NhZ2UgPSBhc3luYyBmdW5jdGlvbihlKSB7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBjb25zdCB7IGlkLCBiaXRtYXAsIHdpZHRoLCBoZWlnaHQsIGRhdGFVUkxPcHRpb25zIH0gPSBlLmRhdGE7CiAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKAogICAgICAgIHdpZHRoLAogICAgICAgIGhlaWdodCwKICAgICAgICBkYXRhVVJMT3B0aW9ucwogICAgICApOwogICAgICBjb25zdCBvZmZzY3JlZW4gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpOwogICAgICBjb25zdCBjdHggPSBvZmZzY3JlZW4uZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgY3R4LmRyYXdJbWFnZShiaXRtYXAsIDAsIDApOwogICAgICBiaXRtYXAuY2xvc2UoKTsKICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IG9mZnNjcmVlbi5jb252ZXJ0VG9CbG9iKGRhdGFVUkxPcHRpb25zKTsKICAgICAgY29uc3QgdHlwZSA9IGJsb2IudHlwZTsKICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBhd2FpdCBibG9iLmFycmF5QnVmZmVyKCk7CiAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7CiAgICAgIGlmICghbGFzdEJsb2JNYXAuaGFzKGlkKSAmJiBhd2FpdCB0cmFuc3BhcmVudEJhc2U2NCA9PT0gYmFzZTY0KSB7CiAgICAgICAgbGFzdEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICAgIHJldHVybiB3b3JrZXIucG9zdE1lc3NhZ2UoeyBpZCB9KTsKICAgICAgfQogICAgICBpZiAobGFzdEJsb2JNYXAuZ2V0KGlkKSA9PT0gYmFzZTY0KSByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQgfSk7CiAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7CiAgICAgICAgaWQsCiAgICAgICAgdHlwZSwKICAgICAgICBiYXNlNjQsCiAgICAgICAgd2lkdGgsCiAgICAgICAgaGVpZ2h0CiAgICAgIH0pOwogICAgICBsYXN0QmxvYk1hcC5zZXQoaWQsIGJhc2U2NCk7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IGUuZGF0YS5pZCB9KTsKICAgIH0KICB9Owp9KSgpOwovLyMgc291cmNlTWFwcGluZ1VSTD1pbWFnZS1iaXRtYXAtZGF0YS11cmwtd29ya2VyLUlKcEM3Z19iLmpzLm1hcAo=",Tp="undefined"!=typeof window&&window.Blob&&new Blob([(Lp=Ep,Uint8Array.from(atob(Lp),(e=>e.charCodeAt(0))))],{type:"text/javascript;charset=utf-8"});var Lp;function Ap(e){let t;try{if(t=Tp&&(window.URL||window.webkitURL).createObjectURL(Tp),!t)throw"";const n=new Worker(t,{name:null==e?void 0:e.name});return n.addEventListener("error",(()=>{(window.URL||window.webkitURL).revokeObjectURL(t)})),n}catch(n){return new Worker("data:text/javascript;base64,"+Ep,{name:null==e?void 0:e.name})}finally{t&&(window.URL||window.webkitURL).revokeObjectURL(t)}}class Mp{constructor(e){Rn(this,"pendingCanvasMutations",new Map),Rn(this,"rafStamps",{latestId:0,invokeId:null}),Rn(this,"mirror"),Rn(this,"mutationCb"),Rn(this,"resetObservers"),Rn(this,"frozen",!1),Rn(this,"locked",!1),Rn(this,"processMutation",((e,t)=>{!(this.rafStamps.invokeId&&this.rafStamps.latestId!==this.rafStamps.invokeId)&&this.rafStamps.invokeId||(this.rafStamps.invokeId=this.rafStamps.latestId),this.pendingCanvasMutations.has(e)||this.pendingCanvasMutations.set(e,[]),this.pendingCanvasMutations.get(e).push(t)}));const{sampling:t="all",win:n,blockClass:o,blockSelector:r,recordCanvas:i,dataURLOptions:a}=e;this.mutationCb=e.mutationCb,this.mirror=e.mirror,i&&"all"===t&&this.initCanvasMutationObserver(n,o,r),i&&"number"==typeof t&&this.initCanvasFPSObserver(t,n,o,r,{dataURLOptions:a})}reset(){this.pendingCanvasMutations.clear(),this.resetObservers&&this.resetObservers()}freeze(){this.frozen=!0}unfreeze(){this.frozen=!1}lock(){this.locked=!0}unlock(){this.locked=!1}initCanvasFPSObserver(e,t,n,o,r){const i=Ip(t,n,o,!0),a=new Map,s=new Ap;s.onmessage=e=>{const{id:t}=e.data;if(a.set(t,!1),!("base64"in e.data))return;const{base64:n,type:o,width:r,height:i}=e.data;this.mutationCb({id:t,type:zd["2D"],commands:[{property:"clearRect",args:[0,0,r,i]},{property:"drawImage",args:[{rr_type:"ImageBitmap",args:[{rr_type:"Blob",data:[{rr_type:"ArrayBuffer",base64:n}],type:o}]},0,0]}]})};const l=1e3/e;let c,u=0;const d=e=>{u&&e-u{const e=[];return t.document.querySelectorAll("canvas").forEach((t=>{Ed(t,n,o,!0)||e.push(t)})),e})().forEach((async e=>{var t;const n=this.mirror.getId(e);if(a.get(n))return;if(0===e.width||0===e.height)return;if(a.set(n,!0),["webgl","webgl2"].includes(e.__context)){const n=e.getContext(e.__context);!1===(null==(t=null==n?void 0:n.getContextAttributes())?void 0:t.preserveDrawingBuffer)&&n.clear(n.COLOR_BUFFER_BIT)}const o=await createImageBitmap(e);s.postMessage({id:n,bitmap:o,width:e.width,height:e.height,dataURLOptions:r.dataURLOptions},[o])}))),c=requestAnimationFrame(d)};c=requestAnimationFrame(d),this.resetObservers=()=>{i(),cancelAnimationFrame(c)}}initCanvasMutationObserver(e,t,n){this.startRAFTimestamping(),this.startPendingCanvasMutationFlusher();const o=Ip(e,t,n,!1),r=function(e,t,n,o){const r=[],i=Object.getOwnPropertyNames(t.CanvasRenderingContext2D.prototype);for(const a of i)try{if("function"!=typeof t.CanvasRenderingContext2D.prototype[a])continue;const i=kd(t.CanvasRenderingContext2D.prototype,a,(function(r){return function(...i){return Ed(this.canvas,n,o,!0)||setTimeout((()=>{const n=Sp(i,t,this);e(this.canvas,{type:zd["2D"],property:a,args:n})}),0),r.apply(this,i)}}));r.push(i)}catch{const n=wd(t.CanvasRenderingContext2D.prototype,a,{set(t){e(this.canvas,{type:zd["2D"],property:a,args:[t],setter:!0})}});r.push(n)}return()=>{r.forEach((e=>e()))}}(this.processMutation.bind(this),e,t,n),i=function(e,t,n,o){const r=[];return r.push(...Op(t.WebGLRenderingContext.prototype,zd.WebGL,e,n,o,t)),void 0!==t.WebGL2RenderingContext&&r.push(...Op(t.WebGL2RenderingContext.prototype,zd.WebGL2,e,n,o,t)),()=>{r.forEach((e=>e()))}}(this.processMutation.bind(this),e,t,n);this.resetObservers=()=>{o(),r(),i()}}startPendingCanvasMutationFlusher(){requestAnimationFrame((()=>this.flushPendingCanvasMutations()))}startRAFTimestamping(){const e=t=>{this.rafStamps.latestId=t,requestAnimationFrame(e)};requestAnimationFrame(e)}flushPendingCanvasMutations(){this.pendingCanvasMutations.forEach(((e,t)=>{const n=this.mirror.getId(t);this.flushPendingCanvasMutationFor(t,n)})),requestAnimationFrame((()=>this.flushPendingCanvasMutations()))}flushPendingCanvasMutationFor(e,t){if(this.frozen||this.locked)return;const n=this.pendingCanvasMutations.get(e);if(!n||-1===t)return;const o=n.map((e=>{const{type:t,...n}=e;return n})),{type:r}=n[0];this.mutationCb({id:t,type:r,commands:o}),this.pendingCanvasMutations.delete(e)}}class Rp{constructor(e){Rn(this,"trackedLinkElements",new WeakSet),Rn(this,"mutationCb"),Rn(this,"adoptedStyleSheetCb"),Rn(this,"styleMirror",new Dd),this.mutationCb=e.mutationCb,this.adoptedStyleSheetCb=e.adoptedStyleSheetCb}attachLinkElement(e,t){"_cssText"in t.attributes&&this.mutationCb({adds:[],removes:[],texts:[],attributes:[{id:t.id,attributes:t.attributes}]}),this.trackLinkElement(e)}trackLinkElement(e){this.trackedLinkElements.has(e)||(this.trackedLinkElements.add(e),this.trackStylesheetInLinkElement(e))}adoptStyleSheets(e,t){if(0===e.length)return;const n={id:t,styleIds:[]},o=[];for(const r of e){let e;this.styleMirror.has(r)?e=this.styleMirror.getId(r):(e=this.styleMirror.add(r),o.push({styleId:e,rules:Array.from(r.rules||CSSRule,((e,t)=>({rule:Yn(e,r.href),index:t})))})),n.styleIds.push(e)}o.length>0&&(n.styles=o),this.adoptedStyleSheetCb(n)}reset(){this.styleMirror.reset(),this.trackedLinkElements=new WeakSet}trackStylesheetInLinkElement(e){}}class Pp{constructor(){Rn(this,"nodeMap",new WeakMap),Rn(this,"active",!1)}inOtherBuffer(e,t){const n=this.nodeMap.get(e);return n&&Array.from(n).some((e=>e!==t))}add(e,t){this.active||(this.active=!0,requestAnimationFrame((()=>{this.nodeMap=new WeakMap,this.active=!1}))),this.nodeMap.set(e,(this.nodeMap.get(e)||new Set).add(t))}destroy(){}}let Dp,Np,jp,Fp=!1;try{if(2!==Array.from([1],(e=>2*e))[0]){const e=document.createElement("iframe");document.body.appendChild(e),Array.from=(null==(An=e.contentWindow)?void 0:An.Array.from)||Array.from,document.body.removeChild(e)}}catch(Hm){console.debug("Unable to override Array.from",Hm)}const Bp=new Xn;function _p(e={}){const{emit:t,checkoutEveryNms:n,checkoutEveryNth:o,blockClass:r="rr-block",blockSelector:i=null,ignoreClass:a="rr-ignore",ignoreSelector:s=null,maskTextClass:l="rr-mask",maskTextSelector:c=null,inlineStylesheet:u=!0,maskAllInputs:d,maskInputOptions:p,slimDOMOptions:h,maskInputFn:f,maskTextFn:m,hooks:g,packFn:v,sampling:y={},dataURLOptions:b={},mousemoveWait:w,recordDOM:k=!0,recordCanvas:x=!1,recordCrossOriginIframes:S=!1,recordAfter:C=("DOMContentLoaded"===e.recordAfter?e.recordAfter:"load"),userTriggeredOnInput:I=!1,collectFonts:O=!1,inlineImages:E=!1,plugins:T,keepIframeSrcFn:L=(()=>!1),ignoreCSSAttributes:A=new Set([]),errorHandler:M}=e;Qd=M;const R=!S||window.parent===window;let P=!1;if(!R)try{window.parent.document&&(P=!1)}catch(V){P=!0}if(R&&!t)throw new Error("emit function is required");if(!R&&!P)return()=>{};void 0!==w&&void 0===y.mousemove&&(y.mousemove=w),Bp.reset();const D=!0===d?{color:!0,date:!0,"datetime-local":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0,password:!0}:void 0!==p?p:{password:!0},N=!0===h||"all"===h?{script:!0,comment:!0,headFavicon:!0,headWhitespace:!0,headMetaSocial:!0,headMetaRobots:!0,headMetaHttpEquiv:!0,headMetaVerification:!0,headMetaAuthorship:"all"===h,headMetaDescKeywords:"all"===h,headTitleMutations:"all"===h}:h||{};let j;!function(e=window){"NodeList"in e&&!e.NodeList.prototype.forEach&&(e.NodeList.prototype.forEach=Array.prototype.forEach),"DOMTokenList"in e&&!e.DOMTokenList.prototype.forEach&&(e.DOMTokenList.prototype.forEach=Array.prototype.forEach)}();let F=0;const B=e=>{for(const t of T||[])t.eventProcessor&&(e=t.eventProcessor(e));return v&&!P&&(e=v(e)),e};Dp=(e,r)=>{var i;const a=e;if(a.timestamp=xd(),!(null==(i=tp[0])?void 0:i.isFrozen())||a.type===Bd.FullSnapshot||a.type===Bd.IncrementalSnapshot&&a.data.source===_d.Mutation||tp.forEach((e=>e.unfreeze())),R)null==t||t(B(a),r);else if(P){const e={type:"rrweb",event:B(a),origin:window.location.origin,isCheckout:r};window.parent.postMessage(e,"*")}if(a.type===Bd.FullSnapshot)j=a,F=0;else if(a.type===Bd.IncrementalSnapshot){if(a.data.source===_d.Mutation&&a.data.isAttachIframe)return;F++;const e=o&&F>=o,t=n&&a.timestamp-j.timestamp>n;(e||t)&&Np(!0)}};const _=e=>{Dp({type:Bd.IncrementalSnapshot,data:{source:_d.Mutation,...e}})},U=e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.Scroll,...e}}),H=e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.CanvasMutation,...e}}),z=new Rp({mutationCb:_,adoptedStyleSheetCb:e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.AdoptedStyleSheet,...e}})}),q=new mp({mirror:Bp,mutationCb:_,stylesheetManager:z,recordCrossOriginIframes:S,wrappedEmit:Dp});for(const Z of T||[])Z.getMirror&&Z.getMirror({nodeMirror:Bp,crossOriginIframeMirror:q.crossOriginIframeMirror,crossOriginIframeStyleMirror:q.crossOriginIframeStyleMirror});const W=new Pp;jp=new Mp({recordCanvas:x,mutationCb:H,win:window,blockClass:r,blockSelector:i,mirror:Bp,sampling:y.canvas,dataURLOptions:b});const G=new gp({mutationCb:_,scrollCb:U,bypassOptions:{blockClass:r,blockSelector:i,maskTextClass:l,maskTextSelector:c,inlineStylesheet:u,maskInputOptions:D,dataURLOptions:b,maskTextFn:m,maskInputFn:f,recordCanvas:x,inlineImages:E,sampling:y,slimDOMOptions:N,iframeManager:q,stylesheetManager:z,canvasManager:jp,keepIframeSrcFn:L,processedNodeManager:W},mirror:Bp});Np=(e=!1)=>{if(!k)return;Dp({type:Bd.Meta,data:{href:window.location.href,width:Id(),height:Cd()}},e),z.reset(),G.init(),tp.forEach((e=>e.lock()));const t=function(e,t){const{mirror:n=new Xn,blockClass:o="rr-block",blockSelector:r=null,maskTextClass:i="rr-mask",maskTextSelector:a=null,inlineStylesheet:s=!0,inlineImages:l=!1,recordCanvas:c=!1,maskAllInputs:u=!1,maskTextFn:d,maskInputFn:p,slimDOM:h=!1,dataURLOptions:f,preserveWhiteSpace:m,onSerialize:g,onIframeLoad:v,iframeLoadTimeout:y,onStylesheetLoad:b,stylesheetLoadTimeout:w,keepIframeSrcFn:k=(()=>!1)}=t||{};return Lo(e,{doc:e,mirror:n,blockClass:o,blockSelector:r,maskTextClass:i,maskTextSelector:a,skipChild:!1,inlineStylesheet:s,maskInputOptions:!0===u?{color:!0,date:!0,"datetime-local":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0,password:!0}:!1===u?{password:!0}:u,maskTextFn:d,maskInputFn:p,slimDOMOptions:!0===h||"all"===h?{script:!0,comment:!0,headFavicon:!0,headWhitespace:!0,headMetaDescKeywords:"all"===h,headMetaSocial:!0,headMetaRobots:!0,headMetaHttpEquiv:!0,headMetaAuthorship:!0,headMetaVerification:!0}:!1===h?{}:h,dataURLOptions:f,inlineImages:l,recordCanvas:c,preserveWhiteSpace:m,onSerialize:g,onIframeLoad:v,iframeLoadTimeout:y,onStylesheetLoad:b,stylesheetLoadTimeout:w,keepIframeSrcFn:k,newlyAddedElement:!1})}(document,{mirror:Bp,blockClass:r,blockSelector:i,maskTextClass:l,maskTextSelector:c,inlineStylesheet:u,maskAllInputs:D,maskTextFn:m,maskInputFn:f,slimDOM:N,dataURLOptions:b,recordCanvas:x,inlineImages:E,onSerialize:e=>{Md(e,Bp)&&q.addIframe(e),Rd(e,Bp)&&z.trackLinkElement(e),Pd(e)&&G.addShadowRoot(md.shadowRoot(e),document)},onIframeLoad:(e,t)=>{q.attachIframe(e,t),G.observeAttachShadow(e)},onStylesheetLoad:(e,t)=>{z.attachLinkElement(e,t)},keepIframeSrcFn:L});if(!t)return console.warn("Failed to snapshot the document");Dp({type:Bd.FullSnapshot,data:{node:t,initialOffset:Sd(window)}},e),tp.forEach((e=>e.unlock())),document.adoptedStyleSheets&&document.adoptedStyleSheets.length>0&&z.adoptStyleSheets(document.adoptedStyleSheets,Bp.getId(document))};try{const e=[],t=e=>{var t;return ep(dp)({mutationCb:_,mousemoveCb:(e,t)=>Dp({type:Bd.IncrementalSnapshot,data:{source:t,positions:e}}),mouseInteractionCb:e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.MouseInteraction,...e}}),scrollCb:U,viewportResizeCb:e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.ViewportResize,...e}}),inputCb:e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.Input,...e}}),mediaInteractionCb:e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.MediaInteraction,...e}}),styleSheetRuleCb:e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.StyleSheetRule,...e}}),styleDeclarationCb:e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.StyleDeclaration,...e}}),canvasMutationCb:H,fontCb:e=>Dp({type:Bd.IncrementalSnapshot,data:{source:_d.Font,...e}}),selectionCb:e=>{Dp({type:Bd.IncrementalSnapshot,data:{source:_d.Selection,...e}})},customElementCb:e=>{Dp({type:Bd.IncrementalSnapshot,data:{source:_d.CustomElement,...e}})},blockClass:r,ignoreClass:a,ignoreSelector:s,maskTextClass:l,maskTextSelector:c,maskInputOptions:D,inlineStylesheet:u,sampling:y,recordDOM:k,recordCanvas:x,inlineImages:E,userTriggeredOnInput:I,collectFonts:O,doc:e,maskInputFn:f,maskTextFn:m,keepIframeSrcFn:L,blockSelector:i,slimDOMOptions:N,dataURLOptions:b,mirror:Bp,iframeManager:q,stylesheetManager:z,shadowDomManager:G,processedNodeManager:W,canvasManager:jp,ignoreCSSAttributes:A,plugins:(null==(t=null==T?void 0:T.filter((e=>e.observer)))?void 0:t.map((e=>({observer:e.observer,options:e.options,callback:t=>Dp({type:Bd.Plugin,data:{plugin:e.name,payload:t}})}))))||[]},g)};q.addLoadListener((n=>{try{e.push(t(n.contentDocument))}catch(o){console.warn(o)}}));const n=()=>{Np(),e.push(t(document)),Fp=!0};return"interactive"===document.readyState||"complete"===document.readyState?n():(e.push(gd("DOMContentLoaded",(()=>{Dp({type:Bd.DomContentLoaded,data:{}}),"DOMContentLoaded"===C&&n()}))),e.push(gd("load",(()=>{Dp({type:Bd.Load,data:{}}),"load"===C&&n()}),window))),()=>{e.forEach((e=>e())),W.destroy(),Fp=!1,Qd=void 0}}catch(J){console.warn(J)}}var Up,Hp;function zp(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return qp(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return qp(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0,r=function(){};return{s:r,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){s=!0,i=e},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw i}}}}function qp(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n{if(!Fp)throw new Error("please add custom event after start recording");Dp({type:Bd.Custom,data:{tag:e,payload:t}})},_p.freezePage=()=>{tp.forEach((e=>e.freeze()))},_p.takeFullSnapshot=e=>{if(!Fp)throw new Error("please take full snapshot after start recording");Np(e)},_p.mirror=Bp,(Hp=Up||(Up={}))[Hp.NotStarted=0]="NotStarted",Hp[Hp.Running=1]="Running",Hp[Hp.Stopped=2]="Stopped";var Yp=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),Zp(this,"startDate",void 0),Zp(this,"events",[]),Zp(this,"bufferSize",0),Zp(this,"stopFunction",void 0),Zp(this,"customOptions",{})}var t,n,o;return t=e,o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],(n=[{key:"setOptions",value:function(e){this.customOptions=e}},{key:"start",value:function(){this.stop(),this.startDate=Date.now();var e=this.events;try{this.stopFunction=_p(Vp(Vp(Vp({},{inlineStylesheet:!0,blockClass:"gl-block",ignoreClass:"gl-ignore",maskTextClass:"gl-mask",dataURLOptions:{quality:.7},recordCanvas:!1,sampling:{scroll:150,mouseInteraction:{MouseUp:!1,MouseDown:!1,Click:!0,ContextMenu:!0,DblClick:!0,Focus:!0,Blur:!0,TouchStart:!0,TouchEnd:!1}},collectFonts:!1,recordCrossOriginIframes:!1}),this.customOptions),{},{emit:function(t){var n=function(e){var t=JSON.stringify(e);if(t.length>4e6){var n,o=/data:([\w\/\-\.]+);(\w+),([^)"]*)/gim,r=zp(t.matchAll(o));try{for(r.s();!(n=r.n()).done;){var i=n.value;t="image/"===i[1].toLocaleLowerCase().slice(0,6)?t.replace(i[0],"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAQSURBVHgBAQUA+v8ABRg5/wHSAVZN1mnaAAAAAElFTkSuQmCC"):t.replace(i[0],"")}}catch(Hm){r.e(Hm)}finally{r.f()}}return{event:JSON.parse(t),size:t.length}}(t).event;e.push(n)}}))}catch(t){console.error(t)}}},{key:"stop",value:function(){this.stopFunction&&this.stopFunction(),this.startDate=void 0,this.events=[],this.bufferSize=0}},{key:"getReplayData",value:function(){return{startDate:this.startDate,events:this.events,baseUrl:window.location.origin,width:window.innerWidth,height:window.innerHeight,isMobile:w(),type:"rrweb"}}}])&&Jp(t.prototype,n),o&&Jp(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Xp(e){return Xp="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Xp(e)}function $p(e,t){for(var n=0;nthis.startPoint.x&&(r=this.startPoint.x),t.y>this.startPoint.y&&(i=this.startPoint.y),this.path.setAttributeNS(null,"x",r),this.path.setAttributeNS(null,"y",i),this.path.setAttributeNS(null,"width",n),this.path.setAttributeNS(null,"height",o)}}},{key:"mouseDownRect",value:function(e){this.path=document.createElementNS("http://www.w3.org/2000/svg","rect"),this.path.setAttribute("fill","none"),this.path.setAttribute("stroke",this.color),this.path.setAttribute("stroke-linecap","round"),this.path.setAttribute("stroke-width",this.strokeWidthRect),this.startPoint=this.getMousePosition(e),this.appendPathToSvg(this.path)}},{key:"mouseDownPen",value:function(e){var t=this.color+"AA",n=this.strokeWidth;"blur"===this.tool&&(t="#000000",n=40),this.path=document.createElementNS("http://www.w3.org/2000/svg","path"),this.path.setAttribute("fill","none"),this.path.setAttribute("stroke",t),this.path.setAttribute("stroke-linecap","round"),this.path.setAttribute("stroke-width",n),this.buffer=[];var o=this.getMousePosition(e);this.appendToBuffer(o),this.strPath="M"+o.x+" "+o.y,this.path.setAttribute("d",this.strPath),this.appendPathToSvg(this.path)}},{key:"setTool",value:function(e){this.tool=e}},{key:"setColor",value:function(e){this.color=e}},{key:"getMousePosition",value:function(e){return e.touches&&e.touches.length>0?{x:e.touches[0].clientX,y:e.touches[0].clientY}:{x:e.clientX,y:e.clientY}}},{key:"getAveragePoint",value:function(e){var t=this.buffer.length;if(t%2==1||t>=this.bufferSize){var n,o,r=0,i=0,a=0;for(o=e;othis.bufferSize;)this.buffer.shift()}},{key:"appendPathToSvg",value:function(e){this.svgElement.appendChild(e),this.pathBuffer.push(e),this.rerender()}},{key:"removeLastAddedPathFromSvg",value:function(){this.pathBuffer.length<=0||!this.svgElement||(this.svgElement.removeChild(this.pathBuffer[this.pathBuffer.length-1]),this.pathBuffer.pop(),this.rerender())}},{key:"fadeOutToolbar",value:function(){var e=document.querySelector(".bb-capture-toolbar");e&&(e.style.opacity=0,e.style.pointerEvents="none")}},{key:"fadeInToolbar",value:function(){var e=document.querySelector(".bb-capture-toolbar");e&&(e.style.opacity=1,e.style.pointerEvents="auto")}}],n&&$p(t.prototype,n),o&&$p(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function nh(e){return nh="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},nh(e)}function oh(e,t){for(var n=0;n\n \n
'.concat(p("dismiss"),"
\n
").concat(p("rect"),'
\n
\n
\n ').concat(p("drag"),"\n
\n ").concat("capture"===this.type?'
\n '.concat(p("recorderon"),"\n ").concat(p("recorderoff"),'\n \n
\n
\n ').concat(p("mic"),'\n \n
\n
2:00
\n
\n
\n ').concat(p("pointer"),"\n
"):"",'\n
\n ').concat(p("rect"),'\n
\n
\n ').concat(p("pen"),'\n
\n
\n ').concat(p("blur"),'\n
\n
\n
\n ').concat(gh.translateText("pickAColor"),'\n
\n
\n ').concat(p("undo"),'\n ').concat(gh.translateText("undo"),"\n
\n ").concat("capture"!==this.type?'
'.concat(gh.translateText("next"),"
"):"",'\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
').concat(gh.translateText("retry"),'
\n
').concat(gh.translateText("next"),"
\n
\n
\n
\n "),document.body.appendChild(e),e.setAttribute("dir",gh.getInstance().isRTLLayout?"rtl":"ltr")}},{key:"unregisterListeners",value:function(){this.escListener&&document.removeEventListener("keydown",this.escListener),this.pageLeaveListener&&window.removeEventListener("beforeunload",this.pageLeaveListener)}},{key:"registerListeners",value:function(){var e=this;this.escListener=function(t){var n=!1,o=!1;"key"in(t=t||window.event)&&(n="Escape"===t.key,o="Enter"===t.key),n&&e.dismiss(),"screenshot"===e.type&&o&&e.showNextStep()},document.addEventListener("keydown",this.escListener),this.pageLeaveListener=function(e){e.preventDefault(),e.returnValue=""},window.addEventListener("beforeunload",this.pageLeaveListener)}},{key:"show",value:function(e){this.callback=e,this.registerListeners(),this.hideWidgetUI(),this.createEditorUI(),this.setupMousePointer(),"screenshot"===this.type?(_m.getInstance().setGlobalDataItem("snapshotPosition",{x:window.scrollX,y:window.scrollY}),ah.disableScroll()):this.setupScreenRecording(),this.screenDrawer=new th(this.captureScreenDrawerRerender.bind(this)),this.setupColorPicker(),this.setupToolbar()}},{key:"setupColorPicker",value:function(){for(var t=this,n=document.querySelector(".bb-capture-toolbar-item-selectedcolor"),o=document.querySelectorAll(".bb-capture-toolbar-item-color"),r=document.querySelector(".bb-capture-toolbar-item-colorpicker"),i=function(){var i=o[a],s=i.getAttribute("data-color");i.style.backgroundColor=s,i.onclick=function(){i&&(t.screenDrawer.setColor(s),r&&(r.style.display="none"),n.style.backgroundColor=i.style.backgroundColor,e.setPenColor(s))}},a=0;a0?o.classList.remove(e):o.classList.add(e))}}},{key:"captureRenderer",value:function(){if(this.screenRecorder){this.screenRecorder.file&&_m.getInstance().setGlobalDataItem("screenRecordingData",this.screenRecorder.file);var e="bb-capture-editor-item-inactive",t=document.querySelector(".bb-capture-toolbar-item-timer"),n=document.querySelectorAll(".bb-capture-toolbar-item"),o=document.querySelector(".bb-tooltip-screen-recording"),r=document.querySelector(".bb-tooltip-audio-recording"),i=document.querySelector(".bb-capture-editor"),a="bb-capture-editor-recording",s="bb-capture-editor-notrecording";this.screenRecorder.isRecording?(i.classList.add(a),i.classList.remove(s)):(i.classList.add(s),i.classList.remove(a));var l=document.querySelector(".bb-capture-toolbar");document.querySelector(".bb-capture-preview").style.display=this.screenRecorder.file?"flex":"none",l.style.display=this.screenRecorder.file?"none":"flex";for(var c=0;c0){var t=e.filter((function(e){return new Date(e.createdAt)>new Date(Date.now()-36e5)}));t.length>2?this.notifications=t.splice(0,t.length-2):this.notifications=t,this.renderNotifications()}}catch(n){}}},{key:"setNotificationCount",value:function(e){this.unreadCount=e,this.updateTabBarNotificationCount(),a.getInstance().updateNotificationBadge(this.unreadCount)}},{key:"showNotification",value:function(e){this.notificationContainer&&e&&e.data&&(this.notifications.find((function(t){return e.outbound===t.outbound}))||(this.notifications.push(e),e.sound&&Yh.ping()),this.notifications.length>2&&this.notifications.shift(),I(this.unreadNotificationsKey,this.notifications),this.renderNotifications())}},{key:"renderNotifications",value:function(){var e=this;if(this.notificationContainer){this.clearAllNotifications(!0);var t=document.createElement("div");t.onclick=function(){e.clearAllNotifications(),e.currentNewsIndex=0},t.className="gleap-notification-close",t.innerHTML=p("dismiss"),this.notificationContainer.appendChild(t);var n=this.notifications.filter((function(e){return e.data.news})).sort((function(e,t){return new Date(e.createdAt)-new Date(t.createdAt)})),o=this.notifications.filter((function(e){return!e.data.news}));if(n.length>0){var r=this.currentNewsIndex1){var m=document.createElement("div");m.className="gleap-news-pagination";var g=document.createElement("span");g.className="gleap-news-page-indicator",g.innerText="".concat(r+1," / ").concat(n.length),m.appendChild(g);var v=document.createElement("button");v.className="gleap-news-next-button",r\n
\n
\n '.concat(t.data.text,'\n
\n
\n
\n
\n
\n \n \n \n ').concat(t.data.nextStepTitle,"\n
\n
\n ")}else r.className="gleap-notification-item",r.innerHTML="\n ".concat(t.data.sender&&t.data.sender.profileImageUrl&&''),'\n
\n ').concat(t.data.sender?'
\n '.concat(t.data.sender.name,"\n
"):"",'\n
').concat(n,"
\n
");e.notificationContainer.appendChild(r)},b=0;b0||o.length>0||this.clearAllNotifications(!0)}}},{key:"openNews",value:function(e){e.data.news?_m.openNewsArticle(e.data.news.id,!0):_m.open()}},{key:"renderDescription",value:function(e){var t=e.data,n=t.previewText,o=t.sender;return n&&n.length>0?n:o?'\n
\n '.concat(o.profileImageUrl?'').concat(o.name,''):"","\n ").concat(o.name,"\n
\n "):""}},{key:"clearAllNotifications",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(this.notificationContainer)for(e||(this.notifications=[],this.currentNewsIndex=0,I(this.unreadNotificationsKey,this.notifications));this.notificationContainer.firstChild;)this.notificationContainer.removeChild(this.notificationContainer.firstChild)}},{key:"updateContainerStyle",value:function(){if(this.notificationContainer){var e=dt.getInstance().getFlowConfig(),t="gleap-notification-container--left",n="gleap-notification-container--no-button";this.notificationContainer.classList.remove(t),this.notificationContainer.classList.remove(n),e.feedbackButtonPosition!==a.FEEDBACK_BUTTON_CLASSIC_LEFT&&e.feedbackButtonPosition!==a.FEEDBACK_BUTTON_BOTTOM_LEFT||this.notificationContainer.classList.add(t),null===a.getInstance().buttonHidden?e.feedbackButtonPosition===a.FEEDBACK_BUTTON_NONE&&this.notificationContainer.classList.add(n):a.getInstance().buttonHidden&&this.notificationContainer.classList.add(n),this.notificationContainer.setAttribute("dir",gh.getInstance().isRTLLayout?"rtl":"ltr")}}}],o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],n&&Th(t.prototype,n),o&&Th(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Rh(e){return Rh="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Rh(e)}function Ph(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Dh(e){for(var t=1;t'),document.body.appendChild(t),this.bannerContainer=t}},{key:"sendMessage",value:function(e){try{var t=document.querySelector(".gleap-b-frame");t&&t.contentWindow&&t.contentWindow.postMessage(JSON.stringify(Dh(Dh({},e),{},{type:"banner"})),"*")}catch(n){}}},{key:"showBanner",value:function(e){this.injectBannerUI(e)}}])&&Nh(t.prototype,n),o&&Nh(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function _h(e){return _h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},_h(e)}function Uh(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Hh(e){for(var t=1;t\n
\n \n
\n '),document.body.appendChild(n),this.modalContainer=n,this.modalBackdropClickListener=this.modalContainer.querySelector(".gleap-modal-backdrop").addEventListener("click",(function(){var e,n;(null===(e=null===(n=t.modalData)||void 0===n?void 0:n.showCloseButton)||void 0===e||e)&&t.hideModal()})),document.body.classList.add("gleap-modal-open")}},{key:"_postMessage",value:function(e){try{var t=this.modalContainer.querySelector(".gleap-modal-frame");null!=t&&t.contentWindow&&t.contentWindow.postMessage(JSON.stringify(Hh(Hh({},e),{},{type:"modal"})),this.modalUrl)}catch(Hm){}}},{key:"showModal",value:function(e){e&&e.config&&this._injectModalUI(e.config)}},{key:"hideModal",value:function(){this.modalContainer&&(this.modalBackdropClickListener&&this.modalContainer.querySelector(".gleap-modal-backdrop").removeEventListener("click",this.modalBackdropClickListener),document.body.removeChild(this.modalContainer),this.modalContainer=null,document.body.classList.remove("gleap-modal-open"))}}])&&zh(t.prototype,n),o&&zh(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Vh(e){return Vh="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Vh(e)}function Jh(e,t){for(var n=0;n=a-i;++s)n[i]=t[s],rf(e,t,n,s+1,r,i+1,a);else e.push(n.slice(0,i).join(""))}function af(e){return function(e){if(Array.isArray(e))return sf(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return sf(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return sf(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function sf(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){s=!0,i=e},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw i}}}}function ff(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n1&&void 0!==arguments[1]?arguments[1]:["id","class","length"];return af(e.attributes).reduce((function(e,n){return t.indexOf(n.nodeName)>-1||e.push("[".concat(n.nodeName,'="').concat(n.value,'"]')),e}),[])}(e,n)},Class:of,ID:nf};return t.reduce((function(t,n){return t[n]=o[n](e),t}),{})}function gf(e,t){try{var n=e.parentNode.querySelectorAll(t);return 1===n.length&&n[0]===e}catch(o){return!1}}function vf(e,t){return t.find(gf.bind(null,e))}function yf(e,t,n){var o=function(e,t){for(var n=[],o=e.length,r=[],i=1;i<=t;++i)rf(n,e,r,0,o-1,0,i);return n}(t,3),r=vf(e,o);return Boolean(r)||Boolean(n)&&(r=vf(e,o=o.map((function(e){return n+e}))),Boolean(r))?r:null}function bf(e,t,n,o){var r,i=mf(e,t,n);o&&o instanceof RegExp&&(i.ID=o.test(i.ID)?null:i.ID,i.Class=i.Class.filter((function(e){return!o.test(e)})));var a,s=hf(t);try{for(s.s();!(a=s.n()).done;){var l=a.value,c=i.ID,u=i.Tag,d=i.Class,p=i.Attributes,h=i.NthChild;switch(l){case"ID":if(Boolean(c)&&gf(e,c))return c;break;case"Tag":if(Boolean(u)&&gf(e,u))return u;break;case"Class":if(Boolean(d)&&d.length&&(r=yf(e,d,u)))return r;break;case"Attributes":if(Boolean(p)&&p.length&&(r=yf(e,p,u)))return r;break;case"NthChild":if(Boolean(h))return h}}}catch(Hm){s.e(Hm)}finally{s.f()}return"*"}function wf(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=n.selectorTypes,r=void 0===o?["ID","Class","Tag","NthChild"]:o,i=n.attributesToIgnore,a=void 0===i?["id","class","length"]:i,s=n.excludeRegex,l=void 0===s?null:s,c=[],u=function(e){for(var t=[],n=e;cf(n);)t.push(n),n=n.parentNode;return t}(e),d=hf(u);try{for(d.s();!(t=d.n()).done;){var p=bf(t.value,r,a,l);Boolean(p)&&c.push(p)}}catch(Hm){d.e(Hm)}finally{d.f()}for(var h=[],f=0,m=c;f ");if(pf(e,v))return v}return null}function kf(e){return kf="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},kf(e)}function xf(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Sf(e,t){for(var n=0;n0&&void 0!==arguments[0]&&arguments[0])||o(t.gleapCollapseUI,e)&&o(t.gleapFrameContainer,n))&&(t.gleapCollapseUI&&t.gleapCollapseUI.classList.toggle(e),t.gleapFrameContainer&&t.gleapFrameContainer.classList.toggle(n))})),_f(this,"injectCollapseUI",(function(){if(!t.injectedCollapseUI){t.injectedCollapseUI=!0;var e=document.createElement("div");e.className="gleap-admin-collapse-ui",e.innerHTML='
\n '.concat(p("arrowdown"),"\n
"),document.body.appendChild(e),t.gleapCollapseUI=e,e.addEventListener("click",(function(e){e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t.toggleCollapseUI()}))}})),_f(this,"injectFrame",(function(){var e;if(!t.injectedFrame){t.injectedFrame=!0;var n=document.createElement("div");n.className="gleap-admin-frame-container",n.innerHTML=''),document.body.appendChild(n),t.gleapFrameContainer=n,t.gleapFrame=document.querySelector(".gleap-admin-frame")}}))}var t,n,o;return t=e,o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],(n=[{key:"logCurrentPage",value:function(){var e=window.location.href;e&&e!==this.lastUrl&&(this.lastUrl=e,this.sendMessageToTourBuilder({name:"page-changed",data:{page:e}}))}},{key:"startPageListener",value:function(){var e=this;setInterval((function(){e.logCurrentPage()}),1e3)}},{key:"initAdminHelper",value:function(){var e=this;mm.getInstance().disable(),e.adminHelper=new Df;try{e.adminHelper.onElementPicked=function(t){e.toggleCollapseUI(!0),e.sendMessageToTourBuilder({name:"element-picked",data:{selector:t}})}}catch(t){console.log(t)}e.injectFrame(),e.injectCollapseUI(),e.setFrameHeight("loading")}},{key:"setFrameHeight",value:function(e){if(this.gleapFrameContainer){var t="";t="picker"===e||"navigate"===e?"65px":"editor"===e?"100vh":"0px",this.gleapFrameContainer.style.height=t}}},{key:"start",value:function(){var e=this;if("undefined"!=typeof window&&!window.gleapAdminDisabled){var t=this;window.addEventListener("message",(function(n){if("https://app.gleap.io"===n.origin)try{var o=JSON.parse(n.data);if("admin"===o.type&&("load"===o.name&&(t.configData=o.data,t.initAdminHelper()),"smartlink-search-result"===o.name&&e.sendMessageToTourBuilder({name:"smartlink-search-result",data:o.data}),"translate-complete"===o.name&&e.sendMessageToTourBuilder({name:"translate-complete",data:o.data})),"tourbuilder"===o.type){var r;if("loaddata"===o.name&&e.sendMessageToTourBuilder({name:"data",data:Ff(Ff({},t.configData),{},{currentPage:window.location.href})}),"highlight-element"===o.name&&(document.querySelectorAll(".gleap-admin-highlight").forEach((function(e){e.classList.remove("gleap-admin-highlight")})),null!=o&&null!==(r=o.data)&&void 0!==r&&r.selector)){var i,a=document.querySelector(null==o||null===(i=o.data)||void 0===i?void 0:i.selector);a&&a.classList.add("gleap-admin-highlight")}if("smartlink-search"===o.name&&e.sendMessage({name:"smartlink-search",data:o.data}),"product-tour-started"===o.name&&e.sendMessage({name:"product-tour-started",data:o.data}),"translate"===o.name&&e.sendMessage({name:"translate",data:o.data}),"save"===o.name&&e.sendMessage({name:"save",data:o.data}),"update-steps"===o.name&&e.sendMessage({name:"update-steps",data:o.data}),"click"===o.name)try{document.querySelector(o.data.selector).click()}catch(s){console.log(s)}"status-changed"===o.name&&(t.status=o.data,e.setFrameHeight(t.status),t.adminHelper.stopPicker(),"picker"===t.status&&t.adminHelper.startPicker())}}catch(l){}})),this.sendMessage({name:"init"}),this.startPageListener()}}},{key:"sendMessage",value:function(e){try{window&&window.opener&&window.opener.postMessage(JSON.stringify(Ff(Ff({},e),{},{type:"admin"})),"*")}catch(t){}}},{key:"sendMessageToTourBuilder",value:function(e){try{this.gleapFrame&&this.gleapFrame.contentWindow&&this.gleapFrame.contentWindow.postMessage(JSON.stringify(Ff(Ff({},e),{},{type:"tourbuilder"})),"*")}catch(t){}}}])&&Bf(t.prototype,n),o&&Bf(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function zf(e){return zf="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},zf(e)}function qf(e){return function(e){if(Array.isArray(e))return Wf(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return Wf(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Wf(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Wf(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n0&&void 0!==arguments[0]?arguments[0]:{})}function n(t){return t?e[t]:e}function o(e,t,n,o){return(e/=o/2)<1?n/2*e*e+t:-n/2*(--e*(e-2)-1)+t}function r(e){var t='a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type="text"]:not([disabled]), input[type="radio"]:not([disabled]), input[type="checkbox"]:not([disabled]), select:not([disabled])';return e.flatMap((function(e){var n=e.matches(t),o=Array.from(e.querySelectorAll(t));return[].concat(qf(n?[e]:[]),o)})).filter((function(e){return"none"!==getComputedStyle(e).pointerEvents&&function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)}(e)}))}function i(e){if(e&&!function(e){var t=e.getBoundingClientRect();return t.top>=0&&t.left>=0&&t.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&t.right<=(window.innerWidth||document.documentElement.clientWidth)}(e)){var t=n("smoothScroll");e.scrollIntoView({behavior:!t||a(e)?"auto":"smooth",inline:"center",block:"center"})}}function a(e){if(e&&e.parentElement){var t=e.parentElement;return t.scrollHeight>t.clientHeight}}var s={};function l(e,t){s[e]=t}function c(e){return e?s[e]:s}function u(){s={}}var d={};function p(e,t){d[e]=t}function h(e){var t;null==(t=d[e])||t.call(d)}function f(e){if(e){var t=e.getBoundingClientRect(),n={x:t.x,y:t.y,width:t.width,height:t.height};l("__activeStagePosition",n),g(n)}}function m(e){var t=function(e){var t=window.innerWidth,o=window.innerHeight,r=document.createElementNS("http://www.w3.org/2000/svg","svg");r.classList.add("gleap-tour-overlay","gleap-tour-overlay-animated"),r.setAttribute("viewBox","0 0 ".concat(t," ").concat(o)),r.setAttribute("xmlSpace","preserve"),r.setAttribute("xmlnsXlink","http://www.w3.org/1999/xlink"),r.setAttribute("version","1.1"),r.setAttribute("preserveAspectRatio","xMinYMin slice"),r.style.fillRule="evenodd",r.style.clipRule="evenodd",r.style.strokeLinejoin="round",r.style.strokeMiterlimit="2",r.style.zIndex="10000",r.style.position="fixed",r.style.top="0",r.style.left="0",r.style.width="100%",r.style.height="100%";var i=document.createElementNS("http://www.w3.org/2000/svg","path");return i.setAttribute("d",v(e)),i.style.fill=n("overlayColor")||"rgb(0,0,0)",i.style.opacity="".concat(n("overlayOpacity")),i.style.pointerEvents="auto",i.style.cursor="auto",r.appendChild(i),r}(e);document.body.appendChild(t),S(t,(function(e){"path"===e.target.tagName&&h("overlayClick")})),l("__overlaySvg",t)}function g(e){var t=c("__overlaySvg");if(t){var n=t.firstElementChild;if("path"!==(null==n?void 0:n.tagName))throw new Error("no path element found in stage svg");n.setAttribute("d",v(e))}else m(e)}function v(e){var t=window.innerWidth,o=window.innerHeight,r=n("stagePadding")||0,i=n("stageRadius")||0,a=e.width+2*r,s=e.height+2*r,l=Math.min(i,a/2,s/2),c=Math.floor(Math.max(l,0)),u=e.x-r+c,d=e.y-r,p=a-2*c,h=s-2*c;return"M".concat(t,",0L0,0L0,").concat(o,"L").concat(t,",").concat(o,"L").concat(t,",0Z\n M").concat(u,",").concat(d," h").concat(p," a").concat(c,",").concat(c," 0 0 1 ").concat(c,",").concat(c," v").concat(h," a").concat(c,",").concat(c," 0 0 1 -").concat(c,",").concat(c," h-").concat(p," a").concat(c,",").concat(c," 0 0 1 -").concat(c,",-").concat(c," v-").concat(h," a").concat(c,",").concat(c," 0 0 1 ").concat(c,",-").concat(c," z")}function y(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:5e3,r=e.element,a=r;if("string"==typeof a)try{a=document.querySelector(r)}catch(u){var s=r.replace(/(#[^#\s]+)/g,(function(e){return e.replace(/:/g,"\\:")}));a=document.querySelector(s)}if(r&&!a&&t>=0)setTimeout((function(){C(),y(e,t-100)}),100);else{if(!a&&("INPUT"===e.mode||"CLICK"===e.mode))return n("onElementNotFound")(e);a||(a=function(){var e=document.getElementById("gleap-tour-dummy-element");if(e)return e;var t=document.createElement("div");return t.id="gleap-tour-dummy-element",t.style.width="0",t.style.height="0",t.style.pointerEvents="none",t.style.opacity="0",t.style.position="fixed",t.style.top="50%",t.style.left="50%",document.body.appendChild(t),t}()),function(e,t){var r,a,s=400,u=Date.now(),d=c("__activeStep"),p=c("__activeElement")||e,h=!p||p===e,m="gleap-tour-dummy-element"===e.id,v="gleap-tour-dummy-element"===p.id,y=n("animate"),b=t.onHighlightStarted||n("onHighlightStarted"),w=(null==t?void 0:t.onHighlighted)||n("onHighlighted"),k=(null==d?void 0:d.onDeselected)||n("onDeselected"),x=n(),S=c();!h&&k&&k(v?void 0:p,d,{config:x,state:S});b&&b(m?void 0:e,t,{config:x,state:S});var O=!h&&y,E=!1;C(),l("previousStep",d),l("previousElement",p),l("activeStep",t),l("activeElement",e);var T=function r(){if(c("__transitionCallback")===r){var i=Date.now()-u,a=s-i<=s/2;t.popover&&a&&!E&&O&&(I(e,t),E=!0),n("animate")&&i0&&P[0].focus()}function O(){var e=c("popover");if(null==e?void 0:e.wrapper){var t=e.wrapper.getBoundingClientRect(),o=n("stagePadding")||0,r=n("popoverOffset")||0;return{width:t.width+o+r,height:t.height+o+r,realWidth:t.width,realHeight:t.height}}}function E(e,t){var n=t.elementDimensions,o=t.popoverDimensions,r=t.popoverPadding,i=t.popoverArrowDimensions;return"start"===e?Math.max(Math.min(n.top-r,window.innerHeight-o.realHeight-i.width),i.width):"end"===e?Math.max(Math.min(n.top-(null==o?void 0:o.realHeight)+n.height+r,window.innerHeight-(null==o?void 0:o.realHeight)-i.width),i.width):"center"===e?Math.max(Math.min(n.top+n.height/2-(null==o?void 0:o.realHeight)/2,window.innerHeight-(null==o?void 0:o.realHeight)-i.width),i.width):0}function T(e,t){var n=t.elementDimensions,o=t.popoverDimensions,r=t.popoverPadding,i=t.popoverArrowDimensions;return"start"===e?Math.max(Math.min(n.left-r,window.innerWidth-o.realWidth-i.width),i.width):"end"===e?Math.max(Math.min(n.left-(null==o?void 0:o.realWidth)+n.width+r,window.innerWidth-(null==o?void 0:o.realWidth)-i.width),i.width):"center"===e?Math.max(Math.min(n.left+n.width/2-(null==o?void 0:o.realWidth)/2,window.innerWidth-(null==o?void 0:o.realWidth)-i.width),i.width):0}function L(e,t){var o=c("popover");if(o){var r=(null==t?void 0:t.popover)||{},i=r.align,a=void 0===i?"start":i,s=r.side,l=void 0===s?"left":s,u=a,d="gleap-tour-dummy-element"===e.id?"over":l,p=n("stagePadding")||0,h=O(),f=o.arrow.getBoundingClientRect(),m=e.getBoundingClientRect(),g=m.top-h.height,v=g>=0,y=window.innerHeight-(m.bottom+h.height),b=y>=0,w=m.left-h.width,k=w>=0,x=window.innerWidth-(m.right+h.width),S=x>=0,C=!(v||b||k||S),I=d;if("top"===d&&v?S=k=b=!1:"bottom"===d&&b?S=k=v=!1:"left"===d&&k?S=v=b=!1:"right"===d&&S&&(k=v=b=!1),"over"===d){var L=window.innerWidth/2-h.realWidth/2,A=window.innerHeight/2-h.realHeight/2;o.wrapper.style.left="".concat(L,"px"),o.wrapper.style.right="auto",o.wrapper.style.top="".concat(A,"px"),o.wrapper.style.bottom="auto"}else if(C){var M=window.innerWidth/2-(null==h?void 0:h.realWidth)/2;o.wrapper.style.left="".concat(M,"px"),o.wrapper.style.right="auto",o.wrapper.style.bottom="".concat(10,"px"),o.wrapper.style.top="auto"}else if(k){var R=Math.min(w,window.innerWidth-(null==h?void 0:h.realWidth)-f.width),P=E(u,{elementDimensions:m,popoverDimensions:h,popoverPadding:p,popoverArrowDimensions:f});o.wrapper.style.left="".concat(R,"px"),o.wrapper.style.top="".concat(P,"px"),o.wrapper.style.bottom="auto",o.wrapper.style.right="auto",I="left"}else if(S){var D=Math.min(x,window.innerWidth-(null==h?void 0:h.realWidth)-f.width),N=E(u,{elementDimensions:m,popoverDimensions:h,popoverPadding:p,popoverArrowDimensions:f});o.wrapper.style.right="".concat(D,"px"),o.wrapper.style.top="".concat(N,"px"),o.wrapper.style.bottom="auto",o.wrapper.style.left="auto",I="right"}else if(v){var j=Math.min(g,window.innerHeight-h.realHeight-f.width),F=T(u,{elementDimensions:m,popoverDimensions:h,popoverPadding:p,popoverArrowDimensions:f});o.wrapper.style.top="".concat(j,"px"),o.wrapper.style.left="".concat(F,"px"),o.wrapper.style.bottom="auto",o.wrapper.style.right="auto",I="top"}else if(b){var B=Math.min(y,window.innerHeight-(null==h?void 0:h.realHeight)-f.width),_=T(u,{elementDimensions:m,popoverDimensions:h,popoverPadding:p,popoverArrowDimensions:f});o.wrapper.style.left="".concat(_,"px"),o.wrapper.style.bottom="".concat(B,"px"),o.wrapper.style.top="auto",o.wrapper.style.right="auto",I="bottom"}C?o.arrow.classList.add("gleap-tour-popover-arrow-none"):function(e,t,n){var o=c("popover");if(!o)return;var r=n.getBoundingClientRect(),i=O(),a=o.arrow,s=i.width,l=window.innerWidth,u=r.width,d=r.left,p=i.height,h=window.innerHeight,f=r.top,m=r.height;a.className="gleap-tour-popover-arrow";var g=t,v=e;"top"===t?(d+u<=0?(g="right",v="end"):d+u-s<=0&&(g="top",v="start"),d>=l?(g="left",v="end"):d+s>=l&&(g="top",v="end")):"bottom"===t?(d+u<=0?(g="right",v="start"):d+u-s<=0&&(g="bottom",v="start"),d>=l?(g="left",v="start"):d+s>=l&&(g="bottom",v="end")):"left"===t?(f+m<=0?(g="bottom",v="end"):f+m-p<=0&&(g="left",v="start"),f>=h?(g="top",v="end"):f+p>=h&&(g="left",v="end")):"right"===t&&(f+m<=0?(g="bottom",v="start"):f+m-p<=0&&(g="right",v="start"),f>=h?(g="top",v="start"):f+p>=h&&(g="right",v="end"));g?(a.classList.add("gleap-tour-popover-arrow-side-".concat(g)),a.classList.add("gleap-tour-popover-arrow-align-".concat(v))):a.classList.add("gleap-tour-popover-arrow-none")}(u,I,e)}}return function(){function e(){n("allowClose")&&f()}function o(){var e=c("activeIndex"),t=n("steps")||[];if(void 0!==e){var o=e+1;t[o]?h(o):f()}}function r(){var e=c("activeIndex"),t=n("steps")||[];if(void 0!==e){var o=e-1;t[o]?h(o):f()}}function i(){var e;if(!c("__transitionCallback")){var t=c("activeIndex"),o=c("__activeStep"),i=c("__activeElement");if("CLICK"!==o.mode)if(void 0!==t&&void 0!==o)if(void 0!==c("activeIndex")){var a=(null==(e=o.popover)?void 0:e.onPrevClick)||n("onPrevClick");if(a)return a(i,o,{config:n(),state:c()});r()}}}function a(){var e;if(!c("__transitionCallback")){var t=c("activeIndex"),r=c("__activeStep"),i=c("__activeElement");if("CLICK"!==r.mode&&void 0!==t&&void 0!==r){var a=(null==(e=r.popover)?void 0:e.onNextClick)||n("onNextClick");if(a)return a(i,r,{config:n(),state:c()});o()}}}function s(){c("isInitialized")||(l("isInitialized",!0),document.body.classList.add("gleap-tour-active",n("animate")?"gleap-tour-fade":"gleap-tour-simple"),window.addEventListener("keyup",x,!1),window.addEventListener("keydown",k,!1),window.addEventListener("resize",w),window.addEventListener("scroll",w),p("overlayClick",e),p("escapePress",e),p("arrowLeftPress",i),p("arrowRightPress",a))}function h(){var e,t,o,r,i,a,s,c,u=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,d=n("steps");if(!d)return console.error("No steps to drive through"),void f();if(d[u]){l("__activeOnDestroyed",document.activeElement),l("activeIndex",u);var p=d[u],m=d[u+1],g=d[u-1],v=(null==(e=p.popover)?void 0:e.doneBtnText)||n("doneBtnText")||"Done",b=n("allowClose"),w=void 0!==(null==(t=p.popover)?void 0:t.showProgress)?null==(o=p.popover)?void 0:o.showProgress:n("showProgress"),k=((null==(r=p.popover)?void 0:r.progressText)||n("progressText")||"{{current}} of {{total}}").replace("{{current}}","".concat(u+1)).replace("{{total}}","".concat(d.length)),x=(null==(i=p.popover)?void 0:i.showButtons)||n("showButtons"),S=["next","previous"].concat(qf(b?["close"]:[])).filter((function(e){return!(null==x?void 0:x.length)||x.includes(e)})),C=(null==(a=p.popover)?void 0:a.onNextClick)||n("onNextClick"),I=(null==(s=p.popover)?void 0:s.onPrevClick)||n("onPrevClick"),O=(null==(c=p.popover)?void 0:c.onCloseClick)||n("onCloseClick");y(Vf(Vf({},p),{},{popover:Vf({showButtons:S,nextBtnText:m?void 0:v,disableButtons:qf(g?[]:["previous"]),showProgress:w,progressText:k,onNextClick:C||function(){m?h(u+1):f()},onPrevClick:I||function(){h(u-1)},onCloseClick:O||function(){f()}},(null==p?void 0:p.popover)||{})}))}else f()}function f(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=c("__activeElement"),o=c("__activeStep"),r=c("__activeOnDestroyed"),i=n("onDestroyStarted");if(e&&i){i(!t||"gleap-tour-dummy-element"===(null==t?void 0:t.id)?void 0:t,o,{config:n(),state:c()})}else{var a,s=(null==o?void 0:o.onDeselected)||n("onDeselected"),l=n("onDestroyed");if(document.body.classList.remove("gleap-tour-active","gleap-tour-fade","gleap-tour-simple"),window.removeEventListener("keyup",x),window.removeEventListener("resize",w),window.removeEventListener("scroll",w),function(){var e,t=c("popover");t&&(null==(e=t.wrapper.parentElement)||e.removeChild(t.wrapper))}(),function(){var e;null==(e=document.getElementById("gleap-tour-dummy-element"))||e.remove(),document.querySelectorAll(".gleap-tour-active-element").forEach((function(e){e.classList.remove("gleap-tour-active-element","gleap-tour-no-interaction"),e.removeAttribute("aria-haspopup"),e.removeAttribute("aria-expanded"),e.removeAttribute("aria-controls")}))}(),(a=c("__overlaySvg"))&&a.remove(),d={},u(),t&&o){var p="gleap-tour-dummy-element"===t.id;s&&s(p?void 0:t,o,{config:n(),state:c()}),l&&l(p?void 0:t,o,{config:n(),state:c()})}r&&r.focus()}}return t(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),{isActive:function(){return c("isInitialized")||!1},refresh:w,drive:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;s(),h(e)},setConfig:t,setSteps:function(e){u(),t(Vf(Vf({},n()),{},{steps:e}))},getConfig:n,getState:c,getActiveIndex:function(){return c("activeIndex")},isFirstStep:function(){return 0===c("activeIndex")},isLastStep:function(){var e=n("steps")||[],t=c("activeIndex");return void 0!==t&&t===e.length-1},getActiveStep:function(){return c("activeStep")},getActiveElement:function(){return c("activeElement")},getPreviousElement:function(){return c("previousElement")},getPreviousStep:function(){return c("previousStep")},moveNext:o,movePrevious:r,moveTo:function(e){(n("steps")||[])[e]?h(e):f()},hasNextStep:function(){var e=n("steps")||[],t=c("activeIndex");return void 0!==t&&e[t+1]},hasPreviousStep:function(){var e=n("steps")||[],t=c("activeIndex");return void 0!==t&&e[t-1]},highlight:function(e){s(),y(Vf(Vf({},e),{},{popover:e.popover?Vf({showButtons:[],showProgress:!1,progressText:""},e.popover):void 0}))},destroy:function(){f(!1)}}}}();const Kf=Zf;function Yf(e){return Yf="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Yf(e)}function Xf(){Xf=function(){return t};var e,t={},n=Object.prototype,o=n.hasOwnProperty,r=Object.defineProperty||function(e,t,n){e[t]=n.value},i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",s=i.asyncIterator||"@@asyncIterator",l=i.toStringTag||"@@toStringTag";function c(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,n){return e[t]=n}}function u(e,t,n,o){var i=t&&t.prototype instanceof v?t:v,a=Object.create(i.prototype),s=new A(o||[]);return r(a,"_invoke",{value:O(e,n,s)}),a}function d(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=u;var p="suspendedStart",h="suspendedYield",f="executing",m="completed",g={};function v(){}function y(){}function b(){}var w={};c(w,a,(function(){return this}));var k=Object.getPrototypeOf,x=k&&k(k(M([])));x&&x!==n&&o.call(x,a)&&(w=x);var S=b.prototype=v.prototype=Object.create(w);function C(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function I(e,t){function n(r,i,a,s){var l=d(e[r],e,i);if("throw"!==l.type){var c=l.arg,u=c.value;return u&&"object"==Yf(u)&&o.call(u,"__await")?t.resolve(u.__await).then((function(e){n("next",e,a,s)}),(function(e){n("throw",e,a,s)})):t.resolve(u).then((function(e){c.value=e,a(c)}),(function(e){return n("throw",e,a,s)}))}s(l.arg)}var i;r(this,"_invoke",{value:function(e,o){function r(){return new t((function(t,r){n(e,o,t,r)}))}return i=i?i.then(r,r):r()}})}function O(t,n,o){var r=p;return function(i,a){if(r===f)throw new Error("Generator is already running");if(r===m){if("throw"===i)throw a;return{value:e,done:!0}}for(o.method=i,o.arg=a;;){var s=o.delegate;if(s){var l=E(s,o);if(l){if(l===g)continue;return l}}if("next"===o.method)o.sent=o._sent=o.arg;else if("throw"===o.method){if(r===p)throw r=m,o.arg;o.dispatchException(o.arg)}else"return"===o.method&&o.abrupt("return",o.arg);r=f;var c=d(t,n,o);if("normal"===c.type){if(r=o.done?m:h,c.arg===g)continue;return{value:c.arg,done:o.done}}"throw"===c.type&&(r=m,o.method="throw",o.arg=c.arg)}}}function E(t,n){var o=n.method,r=t.iterator[o];if(r===e)return n.delegate=null,"throw"===o&&t.iterator.return&&(n.method="return",n.arg=e,E(t,n),"throw"===n.method)||"return"!==o&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+o+"' method")),g;var i=d(r,t.iterator,n.arg);if("throw"===i.type)return n.method="throw",n.arg=i.arg,n.delegate=null,g;var a=i.arg;return a?a.done?(n[t.resultName]=a.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,g):a:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,g)}function T(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function L(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function A(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(T,this),this.reset(!0)}function M(t){if(t||""===t){var n=t[a];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,i=function n(){for(;++r=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var l=o.call(a,"catchLoc"),c=o.call(a,"finallyLoc");if(l&&c){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&o.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),L(n),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var o=n.completion;if("throw"===o.type){var r=o.arg;L(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,o){return this.delegate={iterator:M(t),resultName:n,nextLoc:o},"next"===this.method&&(this.arg=e),g}},t}function $f(e,t){for(var n=0;n=0&&t.productTourData&&t.productTourData.steps){var e=t.productTourData.steps[t.currentActiveIndex];e&&e.selector&&""!==e.selector&&t.updatePointerPosition(document.querySelector(e.selector),e)}})))}var t,n,o;return t=e,n=[{key:"disable",value:function(){this.disabled=!0,this.cleanup()}},{key:"startWithConfig",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;"undefined"!=typeof window&&(this.productTourId||this.disabled||(this.productTourId=e,this.productTourData=t,this.currentActiveIndex=0,this.onCompleteCallback=n,this.start()))}},{key:"storeUncompletedTour",value:function(){if("undefined"!=typeof window)if(this.productTourId&&this.productTourData)try{var e=JSON.parse(JSON.stringify({tourData:this.productTourData,tourId:this.productTourId}));e.tourData.steps=e.tourData.steps.slice(this.currentActiveIndex||0,e.tourData.steps.length),localStorage.setItem(nm,JSON.stringify(e))}catch(t){}else localStorage.removeItem(nm)}},{key:"attachScrollListeners",value:function(e,t){var n=this;if("undefined"!=typeof window&&e){var o=function(e){if("undefined"!=typeof window){for(var t=[],n=e.parentElement;n;){var o=window.getComputedStyle(n);("auto"===o.overflowY||"scroll"===o.overflowY)&&n.scrollHeight>n.clientHeight&&t.push(n),n=n.parentElement}return t}}(e);o.push(window),o.forEach((function(o){var r=function(){clearTimeout(n._scrollDebounceTimer),n._scrollDebounceTimer=setTimeout((function(){n.updatePointerPosition(e,t)}),150)};o.addEventListener("scroll",r,{passive:!0}),n._scrollListeners.push({el:o,handler:r})}))}}},{key:"removeScrollListeners",value:function(){"undefined"!=typeof window&&(this._scrollListeners&&this._scrollListeners.length>0&&(this._scrollListeners.forEach((function(e){var t=e.el,n=e.handler;t.removeEventListener("scroll",n)})),this._scrollListeners=[]),this._scrollDebounceTimer&&(clearTimeout(this._scrollDebounceTimer),this._scrollDebounceTimer=null))}},{key:"updatePointerPosition",value:function(e,t){var n,o=this;if("undefined"!=typeof window)try{var r=this._pointerContainer||document.getElementById(om);if(!r)return;if(!e)return r.style.position="fixed",r.style.left="50%",r.style.top="50%",r.style.transform="translate(-50%, -50%)",function(e){if("undefined"!=typeof window){var t=e-window.innerHeight/2;window.scrollTo({top:t,behavior:"smooth"})}}(window.innerHeight/2),this.removeScrollListeners(),this._currentAnchor=null,void(this._currentStep=null);n=e,"undefined"!=typeof window&&n&&n.scrollIntoView({behavior:"smooth",block:"center",inline:"center"});var i=0;!function n(){if(function(e){if("undefined"!=typeof window){var t=e.getBoundingClientRect();return t.top>=0&&t.left>=0&&t.bottom<=window.innerHeight&&t.right<=window.innerWidth}}(e)||i>=20){var a=e.getBoundingClientRect(),s=a.left+a.width/2,l=a.top+a.height/2+10;r.style.position="fixed",r.style.left="".concat(s,"px"),r.style.top="".concat(l,"px"),r.style.transform="translate(-50%, -50%)";var c=350;c>window.innerWidth-40&&(c=window.innerWidth-40),s+c>window.innerWidth-20?r.classList.add("copilot-pointer-container-right"):r.classList.remove("copilot-pointer-container-right"),o._currentAnchor===e&&o._currentStep===t||(o.removeScrollListeners(),o._currentAnchor=e,o._currentStep=t,o.attachScrollListeners(e,t))}else i++,setTimeout(n,100)}()}catch(a){}}},{key:"cleanup",value:function(){var e=this;"undefined"!=typeof window&&(document.body.classList.add("gl-copilot-fade-out"),this.currentAudio&&this.currentAudio.pause(),setTimeout((function(){if(e._pointerContainer)e._pointerContainer.remove(),e._pointerContainer=null;else{var t=document.getElementById(om);t&&t.remove()}var n=document.getElementById(im);n&&n.remove();var o=document.getElementById(rm);o&&o.remove(),document.body.classList.remove("gl-copilot-fade-out")}),800),this.productTourId=void 0,this.productTourData=void 0,this.removeScrollListeners())}},{key:"toggleAudio",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.audioMuted=e,this.currentAudio&&(this.currentAudio.muted=this.audioMuted),document.querySelector(".".concat(im,"-mute")).innerHTML=p(this.audioMuted?"unmute":"mute")}},{key:"setupCopilotTour",value:function(){var e,t,n,o,r,i,a=this;if("undefined"!=typeof window){var s,l,c=null!==(e=null===(t=dt.getInstance().flowConfig)||void 0===t?void 0:t.color)&&void 0!==e?e:"#485BFF",u=d(c),h=document.getElementById(rm);h||((h=document.createElement("style")).id=rm,h.type="text/css",h.textContent="\n #".concat(om," {\n position: absolute;\n top: 0;\n left: 0;\n display: flex;\n align-items: flex-start;\n pointer-events: none;\n z-index: 2147483610;\n transition: all 0.5s ease;\n }\n .").concat(om,"-clickmode {\n cursor: pointer;\n pointer-events: all !important;\n }\n .").concat(om,"-clickmode #copilot-info-bubble-content {\n display: flex !important;\n }\n .").concat(om,"-clickmode svg {\n display: none !important;\n }\n #").concat(om," svg {\n width: 20px;\n height: auto;\n fill: none;\n }\n #copilot-info-bubble {\n position: relative;\n }\n #copilot-info-bubble-content-container {\n position: absolute;\n top: 0px;\n left: 0px;\n min-width: min(300px, 80vw);\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n }\n .").concat(om,"-right #copilot-info-bubble-content-container {\n left: auto !important;\n right: 0px !important;\n align-items: flex-end;\n }\n .").concat(om,"-right .copilot-info-bubble-content {\n margin-right: 5px;\n }\n .").concat(om,"-right svg {\n transform: scaleX(-1);\n }\n #copilot-info-bubble-content svg {\n width: 16px;\n height: 16px;\n display: inline-block !important;\n margin-left: 5px;\n }\n #copilot-info-bubble-content {\n margin-top: 18px;\n margin-left: 5px;\n padding: 10px 15px;\n border-radius: 20px;\n background-color: black;\n color: white;\n font-family: Arial, sans-serif;\n font-size: 14px;\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);\n max-width: 100%;\n white-space: normal;\n overflow-wrap: break-word;\n word-break: normal;\n hyphens: none;\n }\n .").concat(om,"-right #copilot-info-bubble-content {\n margin-top: 30px;\n margin-left: 0px;\n margin-right: 5px;\n }\n .click-wave {\n position: absolute;\n width: 34px;\n height: 34px;\n border-radius: 50%;\n background-color: rgba(0, 0, 0, 0.5);\n pointer-events: none;\n z-index: 2147483611;\n animation: click-wave-animation 0.8s ease forwards;\n }\n @keyframes click-wave-animation {\n 0% {\n transform: scale(0.2);\n opacity: 1;\n }\n 100% {\n transform: scale(2);\n opacity: 0;\n }\n }\n @keyframes slideInFromTop {\n 0% {\n transform: translateY(-100%);\n opacity: 0;\n }\n 100% {\n transform: translateY(0);\n opacity: 1;\n }\n }\n .").concat(im," {\n position: fixed;\n top: 20px;\n right: 20px;\n z-index: 2147483610;\n background: #fff;\n padding: 6px;\n border-radius: 10px;\n box-shadow: 0 0 20px 0 #C294F2;\n display: flex;\n align-items: center;\n gap: 8px;\n border: 1px solid rgba(192, 146, 242, 0.5);\n animation: slideInFromTop 0.5s ease-out forwards;\n }\n .").concat(im," span {\n font-size: 13px;\n color: #000;\n font-family: sans-serif;\n }\n .").concat(im,"-avatar {\n width: 24px;\n height: 24px;\n flex-shrink: 0;\n border-radius: 6px;\n }\n .").concat(im,"-mute {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n .").concat(im,"-mute svg {\n width: 20px;\n height: auto;\n cursor: pointer;\n animation: pulsate 2s infinite;\n }\n .").concat(im,"-mute svg:hover {\n opacity: 0.8;\n }\n .").concat(im,"-dismiss {\n display: flex;\n align-items: center;\n justify-content: center;\n padding-right: 3px;\n }\n .").concat(im,"-dismiss svg {\n width: 15px;\n height: auto;\n cursor: pointer;\n }\n .").concat(im,"-dismiss svg:hover {\n opacity: 0.8;\n }\n @keyframes pulsate {\n 0% {\n transform: scale(1);\n opacity: 1;\n }\n 50% {\n transform: scale(1.1);\n opacity: 0.8;\n }\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n }\n @keyframes glCoFadeIn {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n @keyframes glCoFadeOut {\n 0% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n }\n\n .gleap-audio-unmute-modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n background-color: rgba(0, 0, 0, 0.5);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 2147483620;\n }\n\n .gleap-audio-unmute-modal {\n background-color: #fff;\n padding: 20px;\n border-radius: 8px;\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);\n text-align: center;\n max-width: 90%;\n width: 400px;\n }\n\n .gleap-audio-unmute-modal p {\n margin-bottom: 20px;\n font-size: 16px;\n line-height: 22px;\n font-weight: normal;\n }\n\n .gleap-audio-unmute-button {\n background: ").concat(c,";\n color: ").concat(u,";\n outline: none;\n border: none;\n padding: 10px 14px;\n border-radius: 12px;\n font-size: 14px;\n font-weight: bold;\n cursor: pointer;\n }\n\n .gleap-audio-unmute-button:hover {\n opacity: 0.8;\n }\n\n .gleap-tour-continue-button {\n color: ").concat(c,";\n text-decoration: none;\n cursor: pointer;\n font-size: 14px;\n font-weight: bold;\n border: none;\n background: none;\n padding: 0;\n margin: 0;\n margin-left: 20px;\n }\n\n .gleap-tour-continue-button:hover {\n opacity: 0.8;\n }\n\n body.gl-copilot-fade-out::before,\n body.gl-copilot-fade-out::after,\n body.gl-copilot-fade-out #").concat(im," {\n animation: glCoFadeOut 0.8s ease-out forwards;\n }\n ").concat(null===(s=null===(l=this.productTourData)||void 0===l?void 0:l.playVoice)||void 0===s||s?"":"\n .".concat(im,"-mute {\n display: none;\n }\n "),"\n ").concat(this.productTourData.gradient?'body::before {\n content: "";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n box-sizing: border-box;\n border: 18px solid transparent;\n filter: blur(25px);\n border-image-slice: 1;\n border-image-source: linear-gradient(45deg, #ED5587, #FBE6A9, #a6e3f8, #C294F2);\n animation: glCoFadeIn 1.5s ease-out forwards;\n }\n \n body::after {\n content: "";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n opacity: 0.5;\n box-sizing: border-box;\n border: 3px solid transparent;\n border-image-slice: 1;\n border-image-source: linear-gradient(45deg, #ED5587, #FBE6A9, #a6e3f8, #C294F2);\n animation: glCoFadeIn 1.5s ease-out forwards;\n }':'body::after {\n content: "";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n opacity: 0;\n }',"\n "),document.head.appendChild(h));var f=document.createElement("div");f.id=om,f.style.opacity=0,this._pointerContainer=f;var m=document.createElementNS("http://www.w3.org/2000/svg","svg");m.setAttribute("viewBox","0 0 380 476"),m.innerHTML='';var g=document.createElement("div");g.id="copilot-info-bubble",g.innerHTML="
";var v=document.createElement("div");v.id=im,v.classList.add(im),v.innerHTML='\n \n ').concat(null===(o=this.productTourData)||void 0===o?void 0:o.kaiSlug,'\n
\n ').concat(p(this.audioMuted?"unmute":"mute"),"\n
\n ").concat(null!==(r=this.productTourData)&&void 0!==r&&r.allowClose?'
\n ').concat(p("dismiss"),"\n
"):"","\n "),document.body.appendChild(v),document.querySelector(".".concat(im,"-mute")).addEventListener("click",(function(){a.toggleAudio(!a.audioMuted)})),null!==(i=this.productTourData)&&void 0!==i&&i.allowClose&&document.querySelector(".".concat(im,"-dismiss")).addEventListener("click",(function(){a.completeTour(!1)})),f.appendChild(m),f.appendChild(g),document.body.appendChild(f)}}},{key:"start",value:function(){var e=this;if("undefined"!=typeof window&&!this.disabled){var t=this.productTourData;t&&function(){return am.apply(this,arguments)}().then((function(n){e.audioMuted=!n,e.setupCopilotTour(),e.audioMuted&&null!=t&&t.showUnmuteModal?e.showAudioUnmuteModal():setTimeout((function(){e.renderNextStep()}),1500)}))}}},{key:"showAudioUnmuteModal",value:function(){var e,t,n,o=this,r=document.createElement("div");r.classList.add("gleap-audio-unmute-modal-overlay");var i=document.createElement("div");i.classList.add("gleap-audio-unmute-modal");var a=document.createElement("p");a.textContent=null===(e=this.productTourData)||void 0===e?void 0:e.unmuteModalTitle,i.appendChild(a);var s=document.createElement("button");s.classList.add("gleap-audio-unmute-button"),s.textContent=null===(t=this.productTourData)||void 0===t?void 0:t.unmuteModalButton,s.addEventListener("click",(function(){o.toggleAudio(!1),r.parentNode&&r.parentNode.removeChild(r),setTimeout((function(){o.renderNextStep()}),1e3)})),i.appendChild(s);var l=document.createElement("button");l.classList.add("gleap-tour-continue-button"),l.textContent=null===(n=this.productTourData)||void 0===n?void 0:n.unmuteModalContinue,l.addEventListener("click",(function(){r.parentNode&&r.parentNode.removeChild(r),setTimeout((function(){o.renderNextStep()}),1e3)})),i.appendChild(l),r.appendChild(i),document.body.appendChild(r)}},{key:"completeTour",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];"undefined"!=typeof window&&(this.cleanup(),this.onCompleteCallback&&this.onCompleteCallback(e))}},{key:"renderNextStep",value:function(){var e=this;if("undefined"!=typeof window&&!this.disabled){var t=this,n=this.productTourData.steps;if(this.currentActiveIndex>=n.length)setTimeout((function(){e.completeTour()}),500);else{var o=n[this.currentActiveIndex],r=function(n){if(e._pointerContainer.style.display="flex",o.selector&&o.selector.length>0&&!n)e.completeTour(!1);else{var r=function(){if("INPUT"===o.mode&&n){var e,r=function(){document.querySelector("#".concat(om)).classList.remove("copilot-pointer-container-clickmode"),n.classList.remove("gleap-input-highlight"),document.getElementById(om).style.display="none",t.currentActiveIndex++,t.storeUncompletedTour(),t.renderNextStep()};if("default"===(null!==(e=o.inputType)&&void 0!==e?e:"default")){var i=function e(t){var o;if(0!==(null==t||null===(o=t.target)||void 0===o||null===(o=o.value)||void 0===o?void 0:o.length)){var i=document.getElementById("copilot-info-bubble-content");i&&(i.innerHTML="".concat(gh.translateText("next"),' \n \n'),i.addEventListener("click",r,{once:!0}),n.classList.add("gleap-input-highlight"),document.querySelector("#".concat(om)).classList.add("copilot-pointer-container-clickmode"),n.removeEventListener("input",e))}};n.addEventListener("input",i,{once:!1}),n.hasAttribute("contenteditable")&&n.addEventListener("keyup",i,{once:!1}),n.addEventListener("blur",(function(){n.focus()}),{once:!0}),n.focus()}else{var a,s=null!==(a=o.inputValue)&&void 0!==a?a:"",l=0;!function e(){l0})).length;return Math.ceil(t/3.6)+1}}(i),s=function(){e.currentAudio=void 0,setTimeout((function(){r()}),1e3*a)};o.voice&&o.voice.length>0?(e.currentAudio=new Audio(o.voice),e.audioMuted&&(e.currentAudio.muted=!0),e.currentAudio.addEventListener("ended",(function(){setTimeout((function(){r()}),1e3)})),e.currentAudio.play().then((function(){})).catch((function(e){s()}))):s()}},i=o.selector?function(e){if("undefined"!=typeof window){var t=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:5e3)/100,n=0;return new Promise((function(o,r){var i=setInterval((function(){var a=document.querySelector(e);a?(clearInterval(i),o(a)):n>=t&&(clearInterval(i),r(new Error("Element not found for selector: ".concat(e)))),n++}),100)}))}}(o.selector):Promise.resolve(null);i.then(r).catch((function(){return r(null)}))}}}}],o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],n&&$f(t.prototype,n),o&&$f(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function lm(e){return lm="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},lm(e)}function cm(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function um(e){for(var t=1;t2&&void 0!==arguments[2]?arguments[2]:0,r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(!this.productTourId&&!this.disabled)if(this.productTourId=e,this.productTourData=t,this.currentActiveIndex=0,r)this.start();else{var i=this;et.getInstance().validateProductTour(e).then((function(){return o>0?setTimeout((function(){i.start()}),o):n.start()})).catch((function(e){console.log("Product tour is not live. Cleaning up..."),console.error(e),i.onComplete(!1)}))}}},{key:"onComplete",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t={tourId:this.productTourId};e?(xn.notifyEvent("productTourCompleted",t),_m.trackEvent("tour-".concat(this.productTourId,"-completed"),t)):(xn.notifyEvent("productTourQuit",t),_m.trackEvent("tour-".concat(this.productTourId,"-quit"),t)),this.gleapTourObj&&this.gleapTourObj.destroy(),this.gleapTourObj=void 0,this.productTourData=void 0,this.productTourId=void 0,this.currentActiveIndex=void 0,this.clearUncompletedTour()}},{key:"loadUncompletedTour",value:function(){try{var e=JSON.parse(localStorage.getItem(fm));if(null!=e&&e.tourData&&null!=e&&e.tourId)return e}catch(t){}return null}},{key:"storeUncompletedTour",value:function(){if(this.productTourId&&this.productTourData)try{var e=JSON.parse(JSON.stringify({tourData:this.productTourData,tourId:this.productTourId}));e.tourData.steps=e.tourData.steps.slice(this.currentActiveIndex||0,e.tourData.steps.length),localStorage.setItem(fm,JSON.stringify(e))}catch(t){}else this.clearUncompletedTour()}},{key:"clearUncompletedTour",value:function(){try{localStorage.removeItem(fm)}catch(e){}}},{key:"start",value:function(){var e=this,t=this.productTourData;if(t){if("cobrowse"===t.tourType)return sm.getInstance().startWithConfig(this.productTourId,t,(function(t){e.onComplete(t)}));this.unmuted=!1;for(var n=t.steps,o=this,r=[],i=0;i\n \n
').concat(p("unmute"),"
\n ");else{var d="";t.sender&&t.sender.firstName&&(u=!0,d='
\n
\n
').concat(t.sender.firstName,"
\n
")),c="".concat(d,'
').concat(a.message,"
")}var h={disableActiveInteraction:!s&&!l,mode:a.mode,popover:um({description:c,popoverClass:"gleap-tour-popover-".concat(a.type," ").concat(!u&&"gleap-tour-popover-no-sender"," ").concat(t.allowClose&&"gleap-tour-popover-can-close")},s?{showButtons:[]}:{})};a.selector&&a.selector.length>0&&(h.element=a.selector),r.push(h)}var f=["next","close"];t.backButton&&f.push("previous"),this.gleapTourObj=Kf(pm(pm(pm(pm(pm(pm(pm(pm(pm(pm({showProgress:!0,allowKeyboardControl:!1,steps:r},"showProgress",n.length>1),"allowClose",t.allowClose),"nextBtnText",t.nextText),"doneBtnText",t.doneText),"prevBtnText",t.prevText),"showButtons",f),"onHighlightStarted",(function(t,n,o){var r;e.currentActiveIndex=null==o||null===(r=o.state)||void 0===r?void 0:r.activeIndex,e.storeUncompletedTour()})),"onElementNotFound",(function(t){document.removeEventListener("click",m),e.onComplete(!1)})),"onDestroyStarted",(function(){e.gleapTourObj.hasNextStep()?e.onComplete(!1):e.onComplete(!0),document.removeEventListener("click",m)})),"onPopoverRender",(function(t){if(t)for(var n=document.querySelectorAll(".gleap-tour-popover-description img, .gleap-tour-popover-description video"),r=function(){setTimeout((function(){e.gleapTourObj.refresh()}),500),setTimeout((function(){e.gleapTourObj.refresh()}),750)},i=0;ie.length)&&(t=e.length);for(var n=0,o=new Array(t);n1&&void 0!==arguments[1]?arguments[1]:"";return gh.translateText(e)||t}},{key:"_translateWithVars",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return gh.translateTextWithVars(e,t)||n}},{key:"getCheckIcon",value:function(){return'\n \n '}},{key:"loadChecklist",value:function(){if(this._isSessionReady&&this._networkManager){var e=this.getAttribute("checklistId");e?(this.activeStep=-1,this._initialActiveSet=!1,this.validateChecklist(e)):(this.renderResponse(),this.checklistData=null,this._hasLoaded=!1)}}},{key:"getQueryParams",value:function(){var e=this._getGleapSessionInstance();if(null==e||!e.session)return"";var t=e.session,n="en";try{void 0!==gh&&(n=gh.getInstance().getActiveLanguage()||"en")}catch(o){}return"gleapId=".concat(t.gleapId||"","&gleapHash=").concat(t.gleapHash||"","&lang=").concat(n)}},{key:"makeRequest",value:function(e,t,n,o){var r=this._getGleapSessionInstance();if(null!=r&&r.session){var i=new XMLHttpRequest;i.open(e,t);try{r.injectSession(i)}catch(a){}n&&i.setRequestHeader("Content-Type","application/json;charset=UTF-8"),i.onreadystatechange=function(){4===i.readyState&&o(i)},i.onerror=function(){o(i)},i.send(n?JSON.stringify(n):null)}else o({readyState:4,status:0,responseText:"Session unavailable",_isMock:!0})}},{key:"validateChecklist",value:function(e){var t=this;if(this._isSessionReady&&this._networkManager){this.checklistData=null,this._hasLoaded=!1,this.renderResponse();var n=this.getAttribute("sharedKey");this._networkManager.validateChecklist(e,n).then((function(e){t.isConnected&&t._isSessionReady&&e&&t.fetchChecklist(e)})).catch((function(e){t.renderResponse(),t.checklistData=null,t._hasLoaded=!1}))}}},{key:"fetchChecklist",value:function(e){var t=this;this._isSessionReady&&this._networkManager&&(this._isInitialLoad=!this._hasLoaded,this._networkManager.fetchChecklist(e).then((function(e){var n;if(!t.isConnected||!t._isSessionReady||!e)return t._hasLoaded=!1,t.checklistData=null,void t._checkSessionAndLoad();if(t.checklistData=e,t._hasLoaded=!0,"done"!==e.status){if(t._isInitialLoad&&!t._initialActiveSet){var o,r=(null===(o=e.outbound)||void 0===o||null===(o=o.config)||void 0===o?void 0:o.steps)||[],i=e.completedSteps||[],a=r.findIndex((function(e){return!i.includes(e.id)}));t.activeStep=a>=0?a:-1,-1!==t.activeStep&&(t._initialActiveSet=!0)}t.renderChecklist(t.checklistData),xn.notifyEvent("checklist-loaded",{checklistId:t.checklistData.id,outboundId:null===(n=t.checklistData.outbound)||void 0===n?void 0:n.id,completedSteps:t.checklistData.completedSteps,status:t.checklistData.status,data:t.checklistData})}else t.renderResponse()})).catch((function(e){t.renderResponse(),t.checklistData=null,t._hasLoaded=!1})))}},{key:"updateChecklist",value:function(e,t){var n,o,r=this._getGleapSessionInstance();if(null!=r&&r.session){var i=r.apiUrl;if(i){var a=r.session,s=null!==(n=null==a?void 0:a.gleapId)&&void 0!==n?n:"",l=null!==(o=null==a?void 0:a.gleapHash)&&void 0!==o?o:"",c="en";try{void 0!==gh&&(c=gh.getInstance().getActiveLanguage()||"en")}catch(d){}var u="".concat(i,"/outbound/checklists/").concat(e);t.checkedStep&&(u+="/increment/".concat(t.checkedStep)),u+="?gleapId=".concat(s,"&gleapHash=").concat(l,"&lang=").concat(c),this.makeRequest("PUT",u,t,(function(e){e._isMock||200!==e.status&&e.status}))}}}},{key:"handleChecklistUpdate",value:function(e){if(this._hasLoaded&&this.checklistData){var t=e.detail;if(t&&t.id===this.checklistData.id){var n,o=vm(this.checklistData.completedSteps||[]),r=!1,i=!1,a=this.activeStep;if(t.completedSteps&&JSON.stringify(t.completedSteps)!==JSON.stringify(o)&&(this.checklistData.completedSteps=vm(t.completedSteps),r=!0,-1!==a)){var s,l=null===(s=this.checklistData.outbound)||void 0===s||null===(s=s.config)||void 0===s||null===(s=s.steps)||void 0===s||null===(s=s[a])||void 0===s?void 0:s.id;l&&this.checklistData.completedSteps.includes(l)&&!o.includes(l)&&(i=!0)}if(t.status&&t.status!==this.checklistData.status&&(this.checklistData.status=t.status,r=!0),i){for(var c,u=(null===(c=this.checklistData.outbound)||void 0===c||null===(c=c.config)||void 0===c?void 0:c.steps)||[],d=-1,p=a+1;p1&&void 0!==arguments[1]?arguments[1]:"checklist-floating",r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=(null===(t=e.config)||void 0===t?void 0:t.steps)||[],a=(null===(n=this.checklistData)||void 0===n?void 0:n.completedSteps)||[],s=0;if(this.progressbarEnabled&&i.length>0){var l=i.length,c=a.length;s=l>0?c/l*100:0}var u,d,p=i.find((function(e){return!a.includes(e.id)})),h=i.length>0?p?p.title||this._translateWithVars("stepDefaultTitle",{index:i.indexOf(p)+1},"Step ".concat(i.indexOf(p)+1)):"":e.subject||"",f=i.length>0?p&&p.description||"":e.message||"";r&&(h=(null===(u=e.config)||void 0===u?void 0:u.successTitle)||"",f=(null===(d=e.config)||void 0===d?void 0:d.successMessage)||"",s=100);var m=2*Math.PI*7,g=m-s/100*m,v="checklist-floating-header"===o,y=v?'\n \n \n ':'\n \n ';return'\n
\n
\n
\n \n \n \n \n
\n
').concat(h,"
\n ").concat(r?"":''.concat(y,""),'\n
\n
').concat(f,"
\n
\n ")}},{key:"renderInfoSection",value:function(e){var t;if(!this.infoEnabled||!e)return"";var n=e.subject||this._translate("checklistDefaultTitle","Checklist"),o=e.message||"",r="";return null!==(t=e.sender)&&void 0!==t&&t.profileImageUrl&&(r='\n
\n ').concat(e.sender.firstName||\n ').concat(e.sender.firstName||"","\n
")),'\n
\n '.concat(n?'
'.concat(n,"
"):"","\n ").concat(o?'
'.concat(o,"
"):"","\n ").concat(r,"\n
")}},{key:"renderProgressSection",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];if(!this.progressbarEnabled||!e.length)return"";var n=e.length,o=t.length,r=n>0?o/n*100:0,i=0;e.forEach((function(e){!t.includes(e.id)&&e.duration>0&&(i+=e.duration)}));var a=this._translateWithVars("taskProgress",{a:o,b:n},"".concat(o," of ").concat(n," done")),s=i>0?this._translateWithVars("aboutMinutes",{a:i},"About ".concat(i," min left")):"";return'\n
\n
'.concat(a,"
\n ").concat(s?'
'.concat(s,"
"):"",'\n
\n
\n
\n
')}},{key:"renderTasks",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return t&&0!==t.length?t.map((function(t,o){var r=n.includes(t.id),i=e.activeStep===o,a=r?''.concat(e.getCheckIcon(),""):''.concat(o+1,""),s=t.title||e._translateWithVars("stepDefaultTitle",{index:o+1},"Step ".concat(o+1)),l=t.description||"",c=t.actionTitle||e._translate("actionDefaultTitle","Action"),u=t.action&&"none"!==t.action?'
\n \n
"):"",d=e._translate("markAsDone","Mark as done"),p=t.allowMarkDone&&!r?'
\n ').concat(e.getCheckIcon(),'\n
').concat(d,"
\n
"):"",h=["checklist-task",r?"checklist-task--done":"",i?"checklist-task--active":""].filter(Boolean).join(" ");return'\n
\n
\n ').concat(a,'\n
').concat(s,'
\n \n \n \n \n \n
\n
\n
\n ').concat(l?'
'.concat(l,"
"):"","\n ").concat(u,"\n ").concat(p,"\n
\n
\n
")})).join(""):"

".concat(this._translate("noStepsDefined","No steps defined."),"

")}},{key:"renderChecklist",value:function(e){var t;if(this._hasLoaded&&e&&e.outbound){var n=e.outbound,o=(null===(t=n.config)||void 0===t?void 0:t.steps)||[],r=e.completedSteps||[],i="";if("done"===e.status||o.length>0&&r.length>=o.length){var a,s,l=(null===(a=n.config)||void 0===a?void 0:a.successTitle)||"",c=(null===(s=n.config)||void 0===s?void 0:s.successMessage)||"";i=this.floatingEnabled?this.renderFloatingLauncher(n,"checklist-floating-launcher",!0):'\n
\n
\n '.concat(this.getCheckIcon(),'\n
\n
').concat(l,'
\n
').concat(c,"
\n
"),-1!==this.activeStep&&(this.activeStep=-1)}else i='\n
\n '.concat(this.floatingEnabled?"":this.renderInfoSection(n),"\n ").concat(this.floatingEnabled?"":this.renderProgressSection(o,r),"\n ").concat(this.floatingEnabled?this.renderFloatingLauncher(n):"",'\n
\n ').concat(this.floatingEnabled?this.renderFloatingLauncher(n,"checklist-floating-header"):"","\n ").concat(this.renderTasks(o,r),"\n
\n
");var u=dt.getInstance().getFlowConfig(),d=u.color?u.color:"#485BFF",p="\n \n ');this.shadowRoot.innerHTML=p+i,this.addTaskEventListeners(),this.floatingEnabled&&this.addFloatingClickListeners(),-1!==this.activeStep&&this.toggleTask(this.activeStep,!0)}else this._checkSessionAndLoad()}},{key:"updateActiveTaskMaxHeight",value:function(){if(-1!==this.activeStep){var e=this.shadowRoot.querySelector('.checklist-task[data-task-index="'.concat(this.activeStep,'"] .checklist-task-body-inner')),t=this.shadowRoot.querySelector('.checklist-task[data-task-index="'.concat(this.activeStep,'"] .checklist-task-body'));if(e&&t){var n=e.offsetHeight;t.style.setProperty("--task-body-active-height","".concat(n,"px"))}}}},{key:"addTaskEventListeners",value:function(){var e=this;this.shadowRoot.querySelectorAll(".checklist-task").forEach((function(t){var n=t.querySelector(".checklist-task-header"),o=parseInt(t.getAttribute("data-task-index"),10);n&&n.addEventListener("click",(function(){var t=e.activeStep===o?-1:o;e.setActiveStep(t)}));var r=t.querySelector(".checklist-task-body-markdone");r&&r.addEventListener("click",(function(t){var n;if(t.stopPropagation(),null!==(n=e.checklistData)&&void 0!==n&&null!==(n=n.outbound)&&void 0!==n&&null!==(n=n.config)&&void 0!==n&&n.steps){var r=e.checklistData.outbound.config.steps[o];if(r){var i=e.activeStep;if(e.checklistData.completedSteps||(e.checklistData.completedSteps=[]),!e.checklistData.completedSteps.includes(r.id)){var a;e.checklistData.completedSteps.push(r.id),xn.notifyEvent("checklist-step-completed",{checklistId:e.checklistData.id,outboundId:null===(a=e.checklistData.outbound)||void 0===a?void 0:a.id,stepId:r.id,stepIndex:o,step:r,completedSteps:e.checklistData.completedSteps,status:e.checklistData.status,data:e.checklistData});var s=e.checklistData.outbound.config.steps,l=-1;if(i===o){for(var c=o+1;c0&&e.checklistData.completedSteps.length>=s.length&&(e.checklistData.status="done",d.status="done",xn.notifyEvent("checklist-completed",{checklistId:e.checklistData.id,outboundId:null===(u=e.checklistData.outbound)||void 0===u?void 0:u.id,completedSteps:e.checklistData.completedSteps,status:e.checklistData.status,data:e.checklistData})),e.updateChecklist(e.checklistData.id,d)}}}}));var i=t.querySelector(".checklist-task-body-action .action-button");i&&i.addEventListener("click",(function(t){var n;if(t.stopPropagation(),null!==(n=e.checklistData)&&void 0!==n&&null!==(n=n.outbound)&&void 0!==n&&null!==(n=n.config)&&void 0!==n&&n.steps&&void 0!==_m){var r=e.checklistData.outbound.config.steps[o];if(r&&r.action&&"none"!==r.action)try{"BOT"===r.action?_m.startBot(r.botId):"CUSTOM_ACTION"===r.action?_m.triggerCustomAction(r.actionBody):"REDIRECT_URL"===r.action?(t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation(),_m.openURL(r.actionBody,!!r.actionOpenInNewTab)):"FEEDBACK_FLOW"===r.action?_m.startFeedbackFlow(r.formId):"NEWS_ARTICLE"===r.action?_m.openNewsArticle(r.articleId):"HELP_ARTICLE"===r.action?_m.openHelpCenterArticle(r.articleId):"CHECKLIST"===r.action&&_m.startChecklist(r.outboundId,!0,null==r?void 0:r.sharedKey)}catch(i){}}}))}))}},{key:"setActiveStep",value:function(e){var t=this,n=this.activeStep;this.activeStep=e;var o=[];-1!==n&&n!==this.activeStep&&o.push({index:n,open:!1}),-1!==this.activeStep&&this.activeStep!==n&&o.push({index:this.activeStep,open:!0}),o.forEach((function(e){var n=e.index,o=e.open;t.toggleTask(n,o)}))}},{key:"toggleTask",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=this.shadowRoot.querySelector('.checklist-task[data-task-index="'.concat(e,'"]'));if(n){var o=n.querySelector(".checklist-task-header");if(o){var r=n.classList.contains("checklist-task--active"),i=null!==t?t:!r;if(i&&!r){n.classList.add("checklist-task--active"),o.setAttribute("aria-expanded","true");var a=n.querySelector(".checklist-task-body-inner");if(a){var s=a.offsetHeight,l=n.querySelector(".checklist-task-body");l&&l.style.setProperty("--task-body-active-height","".concat(s,"px"))}}else!i&&r&&(n.classList.remove("checklist-task--active"),o.setAttribute("aria-expanded","false"))}}}}],r=[{key:"observedAttributes",get:function(){return["checklistId","info","progressbar","dark","floating","sharedKey"]}}],o&&bm(n.prototype,o),r&&bm(n,r),Object.defineProperty(n,"prototype",{writable:!1}),t}(xm(HTMLElement));"undefined"==typeof customElements||customElements.get("gleap-checklist")||customElements.define("gleap-checklist",e)}}();var Dm=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),Rm(this,"initialized",!1),Rm(this,"offlineMode",!1),Rm(this,"disablePageTracking",!1),Rm(this,"disableInAppNotifications",!1),Rm(this,"globalData",{screenRecordingData:null,webReplay:null,snapshotPosition:{x:0,y:0}}),"undefined"!=typeof window&&(Xt.getInstance(),rn.getInstance().start(),pn.getInstance().start(),Hf.getInstance().start())}var t,n,o;return t=e,n=[{key:"isLiveMode",value:function(){if(!0===this.offlineMode)return!1;var e=window.location.hostname;return!(["localhost","127.0.0.1","0.0.0.0","","::1"].includes(e)||e.startsWith("192.168.")||e.startsWith("10.0.")||e.endsWith(".local")||!e.includes("."))}},{key:"softReInitialize",value:function(){Vt.getInstance().destroy(),dt.getInstance().start().then((function(){a.getInstance().refresh(),Mh.getInstance().injectNotificationUI()})).catch((function(e){console.warn("Failed to initialize Gleap.")}))}},{key:"performActions",value:function(t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:"INFO";rn.getInstance().addLog(e,t)}},{key:"initialize",value:function(t){var n=this.getInstance();if(n.initialized)console.warn("Gleap already initialized.");else{n.initialized=!0;try{!function(){try{if("visualViewport"in window&&/iPad|iPhone|iPod/.test(navigator.userAgent)){var e=function(){try{var e=document.querySelector(".gleap-frame-container-inner iframe");if(!e)return;window.visualViewport.height1&&void 0!==arguments[1]&&arguments[1];Vt.getInstance().urlHandler(e,t)}},{key:"checkForUrlParams",value:function(){if("undefined"!=typeof window&&window.location.search)try{var t=new URLSearchParams(window.location.search),n=t.get("gleap_widget");n&&n.length>0&&e.open();var o=t.get("gleap_conversation");o&&o.length>0&&("true"===o?e.startConversation(!0):e.startBot(o,!0));var r=t.get("gleap_feedback");r&&r.length>0&&e.startFeedbackFlow(r);var i=t.get("gleap_survey"),a=t.get("gleap_survey_format");i&&i.length>0&&e.showSurvey(i,"survey_full"===a?"survey_full":"survey");var s=t.get("gleap_tour");if(s&&s.length>0){var l=parseInt(t.get("gleap_tour_delay"));isNaN(l)&&(l=2),setTimeout((function(){e.startProductTour(s)}),1e3*l)}}catch(c){}}},{key:"destroy",value:function(){Yp.getInstance().stop(),it.getInstance().stop(),Vt.getInstance().destroy(),a.getInstance().destroy(),Mh.getInstance().clearAllNotifications(!0),et.getInstance().clearSession(0,!1),Bh.getInstance().removeBannerUI(),this.instance=null}},{key:"closeBanner",value:function(){Bh.getInstance().removeBannerUI()}},{key:"closeModal",value:function(){Gh.getInstance().hideModal()}},{key:"setUseCookies",value:function(e){et.getInstance().useCookies=e}},{key:"identify",value:function(e,t,n){return et.getInstance().identifySession(e,k(t),n)}},{key:"updateContact",value:function(e){return et.getInstance().updateSession(k(e))}},{key:"clearIdentity",value:function(){et.getInstance().clearSession()}},{key:"getIdentity",value:function(){return et.getInstance().getSession()}},{key:"isUserIdentified",value:function(){var e=et.getInstance().session;return!!(e&&e.userId&&e.userId.length>0)}},{key:"isOpened",value:function(){return Vt.getInstance().isOpened()}},{key:"hide",value:function(){Vt.getInstance().hideWidget()}},{key:"setMaxNetworkRequests",value:function(e){y.getInstance().setMaxRequests(e)}},{key:"startNetworkLogger",value:function(){y.getInstance().start()}},{key:"setNetworkLogsBlacklist",value:function(e){y.getInstance().setBlacklist(e)}},{key:"setNetworkLogPropsToIgnore",value:function(e){y.getInstance().setFilters(e)}},{key:"setReplayOptions",value:function(e){Yp.getInstance().setOptions(e)}},{key:"close",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];Vt.getInstance().hideWidget(e)}},{key:"open",value:function(){Vt.getInstance().setAppMode("widget"),Vt.getInstance().showWidget()}},{key:"trackEvent",value:function(e,t){it.getInstance().logEvent(e,t)}},{key:"logEvent",value:function(e,t){it.getInstance().logEvent(e,t)}},{key:"preFillForm",value:function(e){var t=k(e);Oh.getInstance().formPreFill=t,Vt.getInstance().sendMessage({name:"prefill-form-data",data:t},!0)}},{key:"on",value:function(e,t){xn.on(e,t)}},{key:"enableShortcuts",value:function(e){e?kh.getInstance().start():kh.getInstance().stop()}},{key:"showFeedbackButton",value:function(e){a.getInstance().toggleFeedbackButton(e)}},{key:"setAppVersionCode",value:function(e){Xt.setAppVersionCode(e)}},{key:"setAppBuildNumber",value:function(e){Xt.setAppBuildNumber(e)}},{key:"setWSApiUrl",value:function(e){et.getInstance().wsApiUrl=e}},{key:"setApiUrl",value:function(e){et.getInstance().apiUrl=e}},{key:"setBannerUrl",value:function(e){Bh.getInstance().setBannerUrl(e)}},{key:"setModalUrl",value:function(e){Gh.getInstance().setModalUrl(e)}},{key:"setFrameUrl",value:function(e){Vt.getInstance().frameUrl=e}},{key:"setTicketAttribute",value:function(e,t){vn.getInstance().setTicketAttribute(e,t)}},{key:"unsetTicketAttribute",value:function(e){vn.getInstance().unsetTicketAttribute(e)}},{key:"clearTicketAttributes",value:function(){vn.getInstance().clearTicketAttributes()}},{key:"attachCustomData",value:function(e){vn.getInstance().attachCustomData(e)}},{key:"setCustomData",value:function(e,t){vn.getInstance().setCustomData(e,t)}},{key:"removeCustomData",value:function(e){vn.getInstance().removeCustomData(e)}},{key:"clearCustomData",value:function(){vn.getInstance().clearCustomData()}},{key:"playSound",value:function(e){Yh.playSound(e)}},{key:"showTabNotificationBadge",value:function(e){var t=Mh.getInstance();t.showNotificationBadge=e,t.updateTabBarNotificationCount()}},{key:"setLanguage",value:function(t){gh.getInstance().setOverrideLanguage(t),e.getInstance().initialized&&setTimeout((function(){e.getInstance().softReInitialize(),e.updateContact({lang:t})}),1e3)}},{key:"registerCustomAction",value:function(e){Ln.registerCustomAction(e)}},{key:"triggerCustomAction",value:function(e){Ln.triggerCustomAction(e)}},{key:"setStyles",value:function(e,t,n){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"#ffffff",r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:20,i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:20,s=arguments.length>6&&void 0!==arguments[6]?arguments[6]:20,l=arguments.length>7&&void 0!==arguments[7]?arguments[7]:a.FEEDBACK_BUTTON_BOTTOM_LEFT;O((function(){!function(e,t,n,o,r,i,s,l){var c=d(e),p=d(n),h=d(r),f=d(t),m="#ffffff"===h,g=u(t,"#ffffff"===f?-35:-15),v=u(r,m?100:-120),y=u(r,m?30:-12),b=u(r,m?80:-30),w=(o=parseInt(o,10),Math.round(1.05*o)),k=Math.round(.8*o),x=Math.round(.6*o),S=Math.round(.4*o),C=Math.round(.25*o),I=57+s;l===a.FEEDBACK_BUTTON_CLASSIC_BOTTOM?I=s+15:(l&&l.includes("CLASSIC")||l===a.FEEDBACK_BUTTON_NONE)&&(I=s);var O='\n .gleap-font, .gleap-font * {\n font-style: normal;\n font-variant-caps: normal;\n font-variant-ligatures: normal;\n font-variant-numeric: normal;\n font-variant-east-asian: normal;\n font-weight: normal;\n font-stretch: normal;\n font-size: 100%;\n line-height: 1;\n font-family: system-ui, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";\n }\n .gleap-input-highlight {\n box-shadow: 0 0 0 3px '.concat(e," !important;\n }\n .gleap-frame-container {\n right: ").concat(i,"px;\n bottom: ").concat(61+s,"px;\n width: calc(100% - 40px);\n max-width: 410px;\n position: fixed;\n z-index: ").concat(2147483631,";\n visibility: visible;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.16);\n border-radius: ").concat(k,"px;\n overflow: hidden;\n animation-duration: .3s;\n animation-fill-mode: both;\n animation-name: gleapFadeInUp;\n user-select: none;\n pointer-events: none;\n transition: max-width 0.3s ease-out;\n }\n\n .gleap-admin-highlight {\n box-shadow: 0px 0px 0px 4px red;\n }\n\n :root {\n --gleap-margin-top: 50px;\n }\n\n .gleap-tooltip-anchor {\n position: relative;\n display: inline-block;\n float: left;\n max-width: 0px;\n width: 17px;\n }\n\n .gleap-tooltip-hotspot {\n position: absolute;\n display: block;\n width: 17px;\n height: 17px;\n cursor: pointer;\n top: 0px;\n left: 0px;\n }\n\n @keyframes gleap-pulse {\n 0% {\n transform: scale(0);\n opacity: 0.25;\n }\n 45% {\n transform: scale(2.5);\n opacity: 0;\n }\n 100% {\n transform: scale(0);\n opacity: 0;\n }\n }\n\n .gleap-tooltip-hotspot-animation {\n position: absolute;\n border-radius: 17px;\n opacity: 0.25;\n display: block;\n width: 17px;\n height: 17px;\n cursor: pointer;\n top: 0px;\n left: 0px;\n animation: gleap-pulse 5s infinite;\n }\n\n .gleap-tooltip-hotspot svg {\n width: 17px;\n height: 17px;\n object-fit: contain;\n display: block;\n }\n\n .gleap-tooltip-inner {\n position: relative;\n overflow: visible;\n font-size: 14px;\n font-weight: normal;\n color: #000;\n line-height: 1.3;\n }\n\n .gleap-tooltip {\n position: absolute;\n background-color: #fff;\n color: #000;\n font-size: 15px;\n line-height: 18px;\n padding: 16px;\n padding-top: 8px;\n padding-bottom: 8px;\n border-radius: 4px;\n max-width: min(350px, 80vw);\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n opacity: 0;\n visibility: hidden;\n transition: opacity 0.2s, visibility 0.2s;\n z-index: ").concat(2147483700,";\n }\n\n .gleap-tooltip a {\n color: ").concat(e,";\n text-decoration: underline;\n display: inline !important;\n margin: 0px !important;\n padding: 0px !important;\n word-break: break-word;\n }\n\n .gleap-tooltip ul {\n padding-left: 16px;\n }\n\n .gleap-tooltip b {\n font-weight: 600;\n }\n\n .gleap-tooltip h2 {\n font-size: 18px;\n line-height: 20px;\n font-weight: 600;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip h3 {\n font-size: 16px;\n line-height: 18px;\n font-weight: 600;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip p {\n padding: 0px;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip img {\n max-width: 100%;\n max-height: 300px;\n width: 100%;\n height: auto;\n object-fit: cover;\n margin-top: 8px;\n margin-bottom: 8px;\n border-radius: 4px;\n }\n\n .gleap-tooltip iframe,\n .gleap-tooltip video {\n max-width: 100%;\n width: 100%;\n height: auto;\n min-height: 200px;\n display: block;\n border: none;\n outline: none;\n padding: 0px;\n margin-top: 8px;\n margin-bottom: 8px;\n border-radius: 4px;\n }\n\n .gleap-tooltip-arrow {\n position: absolute;\n width: 20px;\n height: 20px;\n }\n\n .gleap-tooltip-arrow svg {\n width: 20px;\n height: 20px;\n object-fit: contain;\n }\n\n .gleap-b-frame {\n width: 100%;\n height: 100%;\n border: none;\n pointer-events: auto;\n padding: 0px;\n margin: 0px;\n }\n\n .gleap-b-shown {\n transition: margin 0.3s ease-out;\n margin-top: var(--gleap-margin-top);\n position: relative;\n z-index: 10000;\n }\n\n .gleap-b-f {\n margin-top: 0px;\n }\n\n .gleap-b {\n display: none;\n position: absolute;\n top: calc(-1 * var(--gleap-margin-top));\n left: 0px;\n width: 100vw;\n height: var(--gleap-margin-top);\n z-index: ").concat(2147483699,";\n }\n\n @keyframes gleapSlideIn {\n from {\n top: calc(-1 * var(--gleap-margin-top));\n }\n to {\n top: 10px;\n }\n }\n\n .gleap-b-f .gleap-b {\n position: fixed;\n top: 10px;\n animation: gleapSlideIn .25s ease-out forwards;\n max-width: 800px;\n width: calc(100% - 20px);\n left: 50%;\n z-index: ").concat(2147483699,";\n transform: translateX(-50%);\n border-radius: ").concat(S,"px;\n overflow: hidden;\n box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.15), 0px 5px 5px rgba(0, 0, 0, 0.05);\n }\n\n .gleap-b-shown .gleap-b {\n display: block;\n }\n\n .gleap-image-view {\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n z-index: ").concat(2147483699,";\n background-color: ").concat(h,"cc;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .gleap-image-view-image {\n width: 90%;\n height: auto;\n max-width: 90%;\n max-height: 90%;\n object-fit: contain;\n }\n\n .gleap-image-view-close {\n position: fixed;\n top: 20px;\n right: 20px;\n width: 32px;\n height: 32px;\n opacity: 0.8;\n z-index: ").concat(2147483740,";\n box-shadow: 0px 5px 18px rgba(0, 0, 0, 0.16);\n cursor: pointer;\n }\n\n .gleap-image-view-close:hover {\n opacity: 1;\n }\n\n .gleap-image-view-close svg path {\n fill: ").concat(r,";\n }\n\n [dir=rtl].gleap-frame-container {\n right: auto;\n left: ").concat(i,"px;\n bottom: ").concat(61+s,'px;\n }\n\n .gleap-frame-container--loading iframe {\n opacity: 0;\n }\n\n .gleap-frame-container--loading::before {\n content: " ";\n position: fixed;\n top: 0px;\n left: 0px;\n right: 0px;\n height: 100%;\n max-height: 380px;\n background: linear-gradient(\n 130deg,\n ').concat(g," 0%,\n ").concat(t,' 100%\n );\n }\n \n .gleap-frame-container--loading::after {\n content: " ";\n position: fixed;\n top: 0px;\n left: 0px;\n right: 0px;\n height: 100%;\n height: 100%;\n max-height: 380px;\n background: linear-gradient(\n 180deg,\n transparent 60%,\n ').concat(r,"1A 70%,\n ").concat(r," 100%\n );\n }\n\n .gleap-frame-container--loading-nogradient::before {\n max-height: 340px;\n background: ").concat(t," !important;\n }\n\n .gleap-frame-container--loading-nofade::after {\n display: none !important;\n }\n\n .gleap-frame-container--survey {\n bottom: ").concat(s,"px !important;\n }\n\n .gleap-frame-container--extended {\n max-width: 690px !important;\n }\n\n .gleap-frame-container--survey-full {\n position: fixed;\n top: 0 !important;\n left: 0 !important;\n bottom: 0 !important;\n right: 0 !important;\n width: 100vw !important;\n max-width: 100vw !important;\n height: 100vh;\n height: 100dvh !important;\n background-color: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(6px);\n display: flex !important;\n justify-content: center !important;\n align-items: center !important;\n max-height: 100vh;\n max-height: 100dvh !important;\n border-radius: 0 !important;\n animation-name: none !important;\n }\n\n .gleap-frame-container--survey-full .gleap-frame-container-inner {\n max-width: 640px !important;\n width: calc(100% - 24px);\n border-radius: ").concat(k,"px;\n overflow: hidden;\n }\n\n .gleap-frame-container--classic {\n right: ").concat(i,"px;\n bottom: ").concat(s,"px;\n }\n\n [dir=rtl].gleap-frame-container--classic {\n right: auto;\n left: ").concat(i,"px;\n bottom: ").concat(s,"px;\n }\n\n .gleap-frame-container--no-button {\n bottom: ").concat(s,"px;\n }\n\n [dir=rtl].gleap-frame-container--classic-left {\n bottom: ").concat(s,"px;\n }\n\n .gleap-frame-container--classic-left {\n right: auto;\n left: ").concat(i,"px;\n bottom: ").concat(s,"px;\n }\n\n [dir=rtl].gleap-frame-container--classic-left {\n left: auto;\n right: ").concat(i,"px;\n bottom: ").concat(s,"px;\n }\n\n .gleap-frame-container--modern-left {\n right: auto;\n left: ").concat(i,"px;\n bottom: ").concat(61+s,"px;\n }\n\n [dir=rtl].gleap-frame-container--modern-left {\n left: auto;\n right: ").concat(i,"px;\n bottom: ").concat(61+s,"px;\n }\n\n .gleap-frame-container--animate {\n pointer-events: auto !important;\n }\n\n @keyframes gleapFadeInUp {\n from {\n opacity: 0;\n transform: translate3d(0, 100%, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n\n @keyframes gleapFadeInUpMobile {\n from {\n opacity: 0;\n transform: translate3d(0, 10%, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n\n .gleap-notification-container {\n position: fixed;\n bottom: ").concat(I,"px;\n right: ").concat(i,"px;\n z-index: ").concat(2147483630,";\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n width: 100%;\n max-width: min(340px, 80vw);\n }\n\n .gleap-notification-container--left {\n left: ").concat(4+i,"px;\n right: initial !important;\n }\n\n [dir=rtl].gleap-notification-container {\n left: ").concat(4+i,"px;\n right: initial !important;\n }\n\n [dir=rtl].gleap-notification-container--left {\n left: initial !important;\n right: ").concat(i,"px !important;\n align-items: flex-start !important;\n }\n\n .gleap-notification-container--no-button {\n bottom: ").concat(s,"px;\n }\n\n .gleap-notification-item {\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n\n .gleap-notification-close {\n border-radius: 100%;\n width: 28px;\n height: 28px;\n background-color: ").concat(v,";\n display: flex;\n justify-content: center;\n align-items: center;\n margin-bottom: 8px;\n cursor: pointer;\n visibility: hidden;\n pointer-events: none;\n }\n\n .gleap-notification-container:hover .gleap-notification-close {\n visibility: visible;\n pointer-events: auto;\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-notification-close {\n visibility: visible;\n pointer-events: auto;\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n }\n\n .gleap-notification-close svg {\n width: 45%;\n height: 45%;\n object-fit: contain;\n fill: ").concat(r,";\n }\n\n .gleap-notification-item-checklist-container {\n display: flex;\n animation: fadeIn;\n animation-duration: .45s;\n background-color: ").concat(r,";\n border-radius: ").concat(v,";\n box-sizing: border-box;\n cursor: pointer;\n flex-direction: column;\n overflow: hidden;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ").concat(x,"px;\n margin-bottom: 12px;\n }\n\n .gleap-notification-item-checklist-content {\n align-items: flex-start;\n display: flex;\n flex-direction: column;\n padding: 15px;\n width: 100%;\n width: min(310px, 70vw);\n max-width: min(310px, 70vw);\n }\n\n .gleap-notification-item-checklist-content-title {\n color: ").concat(h,";\n font-size: 15px;\n font-weight: 500;\n line-height: 21px;\n margin-bottom: 10px;\n max-width: 100%;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .gleap-notification-item-checklist-content-progress {\n width: 100%;\n height: 8px;\n border-radius: 8px;\n background-color: ").concat(y,";\n }\n\n .gleap-notification-item-checklist-content-progress-inner {\n height: 100%;\n border-radius: 8px;\n background-color: ").concat(e,";\n }\n\n .gleap-notification-item-checklist-content-next {\n color: ").concat(v,";\n font-size: 15px;\n font-weight: normal;\n line-height: 21px;\n margin-top: 10px;\n max-width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: flex;\n align-items: center;\n }\n\n .gleap-notification-item-checklist-content-next svg {\n height: 18px;\n margin-right: 5px;\n width: auto;\n }\n\n .gleap-notification-item-checklist-content-next b {\n font-size: 15px;\n font-weight: normal;\n color: ").concat(h,";\n }\n\n .gleap-notification-item-news {\n width: 100%;\n }\n\n .gleap-news-pagination {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 10px;\n width: 100%;\n }\n\n .gleap-news-page-indicator {\n font-size: 12px;\n color: ").concat(v,";\n }\n\n .gleap-news-next-button {\n background-color: ").concat(e,";\n color: ").concat(c,";\n border-radius: ").concat(C,"px;\n box-sizing: border-box;\n padding: 5px 10px;\n font-size: 14px;\n font-weight: bold;\n line-height: 21px;\n border: none;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: none !important;\n outline: none !important;^\n }\n\n .gleap-notification-item-news-content {\n align-items: flex-start;\n display: flex;\n flex-direction: column;\n padding: 15px;\n }\n\n .gleap-notification-item-news-preview {\n color: ").concat(v,";\n font-size: 14px;\n line-height: 21px;\n font-weight: 400;\n overflow-wrap: break-word;\n word-break: break-word;\n display: block;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .gleap-notification-item-news-sender {\n display: flex;\n align-items: center;\n color: ").concat(v,";\n font-size: 15px;\n line-height: 21px;\n font-weight: 400;\n }\n \n .gleap-notification-item-news-content-title {\n color: ").concat(h,";\n font-size: 15px;\n font-weight: 500;\n line-height: 21px;\n margin-bottom: 6px;\n max-width: 100%;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n cursor: pointer;\n }\n\n .gleap-notification-item-news-sender img {\n border-radius: 100%;\n height: 20px;\n margin-right: 8px;\n object-fit: cover;\n width: 20px;\n }\n\n [dir=rtl] .gleap-notification-item-news-sender img {\n margin-left: 8px;\n margin-right: 0px !important;\n }\n\n .gleap-notification-item-news-container {\n display: flex;\n animation: fadeIn;\n animation-duration: .45s;\n background-color: ").concat(r,";\n border-radius: ").concat(v,";\n box-sizing: border-box;\n flex-direction: column;\n overflow: hidden;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ").concat(x,"px;\n margin-bottom: 12px;\n }\n\n .gleap-notification-item-news-image {\n background-color: ").concat(v,";\n height: 170px;\n max-height: 170px;\n object-fit: cover;\n width: 100%;\n cursor: pointer;\n }\n \n .gleap-notification-item-news-content-title:hover {\n color: ").concat(e,";\n }\n\n .gleap-notification-item {\n display: flex;\n align-items: flex-end;\n cursor: pointer;\n }\n\n .gleap-notification-item img {\n width: 32px;\n height: 32px;\n min-width: 32px;\n border-radius: 100%;\n object-fit: cover;\n margin-right: 8px;\n margin-bottom: 12px;\n cursor: pointer;\n }\n\n [dir=rtl] .gleap-notification-item img {\n margin-left: 8px;\n margin-right: 0px !important;\n }\n\n .gleap-notification-item-container {\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ").concat(x,"px;\n border-bottom-left-radius: 0px;\n padding: 20px;\n background-color: ").concat(r,";\n margin-bottom: 12px;\n cursor: pointer;\n font-size: 15px;\n line-height: 21px;\n color: ").concat(h,';\n position: relative;\n }\n\n .gleap-notification-item-container::after {\n content: " ";\n position: absolute;\n bottom: 0px;\n width: 0px;\n height: 0px;\n left: -6px;\n border-style: solid;\n border-width: 0px 0px 10px 6px;\n border-color: transparent transparent ').concat(r,";\n }\n\n .gleap-notification-item-sender {\n color: ").concat(v,";\n line-height: 20px;\n }\n\n .gleap-notification-item-content {\n line-height: 20px;\n color: ").concat(h,";\n margin-top: 4px;\n min-width: min(200px, 50vw);\n word-wrap: break-word;\n word-break: break-word;\n }\n\n .gleap-frame-container-inner {\n position: relative;\n width: 100%;\n height: calc(100vh - ").concat(84+s,"px);\n max-height: ").concat(700,'px;\n }\n\n .gleap-frame-container--survey .gleap-frame-container-inner {\n height: calc(100vh - 40px);\n }\n \n .gleap-frame-container-inner:before {\n content: " ";\n position: absolute;\n width: 100%;\n height: calc(100% - ').concat(k,"px);\n top: ").concat(k,"px;\n background-color: ").concat(r,";\n z-index: -1;\n }\n \n .gleap-frame-container iframe {\n height: 100% !important;\n width: 100% !important;\n max-width: 100% !important;\n display: block !important;\n pointer-events: auto !important;\n }\n \n .gleap-frame-container--hidden {\n display: none !important;\n pointer-events: none;\n animation: none !important;\n }\n \n .bb-feedback-button {\n margin: 0px;\n position: fixed;\n bottom: ").concat(s,"px;\n right: ").concat(i,"px;\n border-radius: 30px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n background-color: transparent;\n color: #000000;\n z-index: ").concat(2147483630,";\n box-sizing: border-box;\n display: flex;\n align-items: center;\n padding: 0px;\n }\n\n [dir=rtl].bb-feedback-button {\n bottom: ").concat(s,"px;\n right: auto;\n left: ").concat(i,"px;\n }\n \n .bb-feedback-button--bottomleft {\n bottom: ").concat(s,"px;\n right: auto;\n left: ").concat(i,"px;\n }\n\n [dir=rtl].bb-feedback-button--bottomleft {\n bottom: ").concat(s,"px;\n right: ").concat(i,'px;\n left: auto;\n }\n \n .bb-feedback-button--disabled {\n display: none !important;\n }\n\n .bb-feedback-button--hidden {\n display: none !important;\n }\n \n .bb-feedback-button-text {\n padding: 8px 12px;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n background-color: #fff;\n border-radius: 8px;\n box-shadow: 0px 0px 14px 0px rgba(0, 0, 0, 0.15);\n position: relative;\n z-index: 99;\n }\n \n .bb-feedback-button-text:before {\n content: "";\n position: absolute;\n box-shadow: rgba(0, 0, 0, 0.04) 6px 6px 5px;\n transform: rotate(315deg);\n bottom: 16px;\n right: -4px;\n border-width: 10px;\n border-style: solid;\n border-color: transparent #fff #fff transparent;\n }\n \n .bb-feedback-button--bottomleft .bb-feedback-button-text:before {\n display: none;\n }\n \n .bb-feedback-button-text:after {\n content: "";\n position: absolute;\n bottom: 12px;\n right: 0px;\n background-color: #fff;\n width: 5px;\n height: 30px;\n }\n \n .bb-feedback-button-text-title {\n font-family: sans-serif;\n font-size: 14px;\n color: #666;\n line-height: 18px;\n max-width: 220px;\n }\n \n .bb-feedback-button-text-title b {\n color: #000000;\n font-weight: 600;\n }\n\n .bb-notification-bubble {\n position: absolute;\n top: -5px;\n right: -5px;\n min-width: 12px;\n padding: 0px 4px;\n height: 20px;\n min-width: 20px;\n border-radius: 20px;\n background-color: red;\n color: #fff;\n font-size: 11px;\n font-family: sans-serif;\n text-align: center;\n line-height: 20px;\n }\n\n .bb-notification-bubble--hidden {\n display: none;\n }\n \n .bb-feedback-button-icon {\n width: 48px;\n height: 48px;\n border-radius: 48px;\n background-color: #485bff;\n transition: box-shadow, transform 0.2s ease-in-out;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n position: relative;\n }\n \n .bb-feedback-button-classic {\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n top: 50%;\n right: 0px;\n position: fixed;\n transform: rotate(-90deg) translate(50%, -50%);\n transform-origin: 100% 50%;\n padding: 9px 20px;\n text-align: center;\n background-color: #485bff;\n border-top-left-radius: 8px;\n border-top-right-radius: 8px;\n font-family: sans-serif;\n font-size: 16px;\n color: #fff;\n box-shadow: 0px 0px 14px 0px rgba(0, 0, 0, 0.25);\n }\n\n [dir=rtl].bb-feedback-button .bb-feedback-button-classic {\n top: 50%;\n left: 0px;\n right: auto;\n transform: rotate(90deg) translate(-50%, -100%);\n transform-origin: 0% 0%;\n }\n \n .bb-feedback-button-classic--left {\n top: 50%;\n left: 0px;\n right: auto;\n transform: rotate(90deg) translate(-50%, -100%);\n transform-origin: 0% 0%;\n }\n\n [dir=rtl].bb-feedback-button .bb-feedback-button-classic--left {\n top: 50%;\n right: 0px;\n left: auto;\n transform: rotate(-90deg) translate(50%, -50%);\n transform-origin: 100% 50%;\n }\n \n .bb-feedback-button-classic--bottom {\n top: auto;\n bottom: 0px;\n transform: none;\n right: ').concat(i,"px;\n left: auto;\n }\n \n [dir=rtl].bb-feedback-button .bb-feedback-button-classic--bottom {\n top: auto;\n bottom: 0px;\n transform: none;\n left: ").concat(i,"px;\n right: auto;\n }\n\n .bb-feedback-button--classic-button-style {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n \n .bb-feedback-button--open.bb-feedback-button--classic-button-style {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: bbFadeOutRight;\n }\n \n .bb-feedback-button .bb-logo-logo {\n position: absolute;\n width: 30px;\n height: 30px;\n top: 9px;\n left: 9px;\n object-fit: contain;\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-name: bbZoomIn;\n }\n \n .bb-feedback-button .bb-logo-arrowdown {\n position: absolute;\n width: 14px;\n height: 14px;\n top: 17px;\n left: 17px;\n object-fit: contain;\n animation-duration: 0.3s;\n animation-fill-mode: both;\n }\n \n .bb-feedback-button .bb-logo-arrowdown {\n animation-name: bbZoomOut;\n }\n \n .bb-feedback-button--open .bb-logo-arrowdown {\n animation-name: bbZoomIn;\n }\n \n .bb-feedback-button--open .bb-logo-logo {\n animation-name: bbZoomOut;\n }\n \n .bb-feedback-button-icon:hover {\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.25), 0px 0px 20px rgba(0, 0, 0, 0.2);\n transform: scale(1.1);\n }\n \n .bb-feedback-button--open .bb-feedback-button-text {\n animation-name: bbFadeOutDown;\n }\n \n .bb-feedback-button--open .bb-feedback-button-icon {\n display: flex;\n }\n \n .bb-capture-svg {\n position: fixed;\n z-index: ").concat(2147483614,";\n top: 0px;\n left: 0px;\n right: 0px;\n width: 100%;\n height: 100%;\n padding: 0px;\n margin: 0px;\n cursor: crosshair;\n }\n\n .bb-capture-svg--preview {\n cursor: auto !important;\n }\n \n .bb-rec-on-circle {\n animation-name: bbRecIconFade;\n animation-duration: 2s;\n animation-iteration-count: infinite;\n animation-direction: alternate;\n }\n \n .bb-rec-on-cont {\n animation-name: bbRecIconContFade;\n animation-duration: 2s;\n animation-iteration-count: infinite;\n animation-direction: alternate;\n }\n \n .bb-capture-editor-drag-info {\n position: fixed;\n top: -200px;\n left: 0px;\n z-index: ").concat(2147483616,";\n transition: opacity 0.3s ease-in-out;\n }\n \n .bb-capture-editor-drag-info svg {\n width: 24px;\n height: 24px;\n }\n \n .bb-capture-editor-borderlayer {\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n border: 4px solid ").concat(e,";\n cursor: crosshair;\n z-index: ").concat(2147483610,";\n box-sizing: border-box;\n pointer-events: none;\n }\n \n .bb-capture-editor-notrecording .bb-capture-editor-borderlayer {\n background-color: rgba(0, 0, 0, 0.8);\n }\n\n .bb-capture-editor-recording .bb-capture-editor-borderlayer {\n border: 4px solid #eb144c !important;\n }\n \n .bb-capture-editor-recording .bb-capture-dismiss {\n display: none;\n }\n \n .bb-capture-editor-item-inactive {\n opacity: 0.3;\n cursor: not-allowed !important;\n }\n \n .bb-capture-editor-notrecording .bb-capture-toolbar-drawingitem {\n opacity: 0.3;\n cursor: not-allowed !important;\n }\n \n .bb-capture-editor-notrecording .bb-capture-editor-drag-info {\n display: none;\n }\n \n .bb-capture-editor-notrecording .bb-capture-svg {\n pointer-events: none !important;\n }\n \n .bb-capture-toolbar {\n position: fixed;\n top: 20px;\n left: 50%;\n transform: translateX(-50%);\n z-index: ").concat(2147483618,";\n background-color: #fff;\n padding: 5px;\n display: flex;\n align-items: center;\n border-radius: 8px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n transition: opacity 0.3s ease-in-out;\n }\n \n .bb-capture-dismiss {\n position: fixed;\n top: 0px;\n right: 0px;\n z-index: ").concat(2147483618,";\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n width: 36px;\n height: 36px;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: ").concat(e,";\n border-bottom-left-radius: ").concat(C,"px;\n }\n\n [dir=rtl] .bb-capture-dismiss {\n top: 0px;\n left: 0px;\n right: auto;\n border-bottom-left-radius: 0px !important;\n border-bottom-right-radius: ").concat(C,"px;\n }\n \n .bb-capture-dismiss svg path {\n fill: ").concat(c,';\n }\n \n .bb-capture-dismiss svg {\n width: 20px;\n height: 20px;\n object-fit: contain;\n }\n \n .bb-capture-button-next {\n font-family: sans-serif;\n box-sizing: border-box;\n font-weight: 600;\n text-align: center;\n width: auto;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n margin: 0px;\n line-height: 36px;\n padding: 0px 12px;\n font-size: 15px;\n margin-left: 12px;\n }\n\n [dir=rtl].bb-capture-editor .bb-capture-button-next {\n margin-left: auto;\n margin-right: 12px;\n }\n \n .bb-capture-toolbar-item-spacer {\n width: 1px;\n height: 38px;\n min-width: 1px;\n margin: 0px 5px;\n }\n \n .bb-capture-toolbar-item {\n width: 42px;\n height: 38px;\n min-width: 42px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n position: relative;\n margin-right: 5px;\n }\n\n .drag-handle-item {\n cursor: grab !important;\n width: 34px;\n min-width: 34px;\n }\n\n .drag-handle-item svg {\n width: 18px !important;\n height: 18px !important;\n }\n \n .bb-capture-toolbar-item svg {\n width: 23px;\n height: 23px;\n object-fit: contain;\n }\n \n .bb-capture-toolbar-item-selectedcolor {\n border-radius: 100%;\n width: 20px;\n height: 20px;\n background-color: #db4035;\n }\n \n .bb-capture-toolbar-item[data-type="undo"] svg {\n width: 18px;\n height: 18px;\n }\n \n .bb-capture-toolbar-item[data-active="true"] {\n position: relative;\n }\n \n .bb-capture-preview {\n display: none;\n background-color: rgba(0, 0, 0, 0.6);\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n justify-content: center;\n align-items: center;\n z-index: ').concat(2147483620,";\n }\n \n .bb-capture-preview-inner {\n background-color: #fff;\n padding: 0px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n border-radius: 8px;\n flex-direction: column;\n max-width: 640px;\n width: 100%;\n margin: 20px;\n }\n \n .bb-capture-preview-inner video {\n border-radius: 8px 8px 0px 0px;\n display: block;\n border: 0px;\n outline: none;\n width: 100%;\n max-height: 60vh;\n }\n \n .bb-capture-preview-buttons {\n display: flex;\n justify-content: space-between;\n padding: 14px;\n }\n \n .bb-capture-preview-retrybutton {\n font-family: sans-serif;\n border-radius: 21px;\n box-sizing: border-box;\n padding: 12px 26px;\n font-size: 16px;\n line-height: 19px;\n font-weight: 600;\n text-align: center;\n margin-top: 0px;\n margin-bottom: 0px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-preview-sendbutton {\n font-family: sans-serif;\n border-radius: 21px;\n box-sizing: border-box;\n padding: 12px 26px;\n font-size: 16px;\n line-height: 19px;\n font-weight: 600;\n text-align: center;\n margin-top: 0px;\n margin-bottom: 0px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-preview-retrybutton:hover,\n .bb-capture-preview-sendbutton:hover {\n opacity: 0.9;\n }\n \n .bb-capture-toolbar-item-recording {\n margin-right: 0px;\n }\n \n .bb-capture-toolbar-item-recording svg {\n width: 33px;\n height: 33px;\n }\n \n .bb-capture-toolbar-item-colorpicker {\n position: fixed;\n top: 70px;\n left: 50%;\n transform: translateX(-50%);\n z-index: ").concat(2147483618,';\n background-color: #fff;\n display: none;\n padding: 10px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n border-radius: 8px;\n }\n \n .bb-capture-toolbar-item-color {\n width: 20px;\n height: 20px;\n border-radius: 100%;\n margin-right: 12px;\n box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.15);\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-toolbar-item-color:hover {\n box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.25);\n }\n \n .bb-capture-toolbar-item-color:last-of-type {\n margin-right: 0px;\n }\n \n [dir=rtl].bb-capture-editor .bb-capture-toolbar-item-color {\n margin-right: auto;\n margin-left: 12px;\n }\n \n [dir=rtl].bb-capture-editor .bb-capture-toolbar-item-color:last-of-type {\n margin-right: auto;\n margin-left: 0px;\n }\n \n .bb-capture-toolbar-item-recording[data-active="true"] svg:first-of-type {\n display: none;\n }\n \n .bb-capture-toolbar-item-recording[data-active="true"] svg:nth-of-type(2) {\n display: block;\n }\n \n .bb-capture-toolbar-item-recording[data-active="false"] svg:first-of-type {\n display: block;\n }\n \n .bb-capture-toolbar-item-recording[data-active="false"] svg:nth-of-type(2) {\n display: none;\n }\n \n .bb-capture-toolbar-item--active {\n background-color: #eee;\n }\n \n .bb-capture-toolbar-item:hover svg {\n opacity: 1;\n }\n \n .bb-capture-toolbar-item--active {\n background-color: #f8f8f8;\n }\n \n .bb-capture-toolbar-item--active svg {\n opacity: 1;\n }\n \n .bb-capture-toolbar-item--inactivecross::before {\n content: "";\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n height: 3px;\n width: 26px;\n margin: auto;\n border-radius: 4px;\n background-color: #e80000;\n transform: rotate(45deg);\n }\n \n .bb-capture-toolbar-item--inactivecross svg {\n fill: #eee;\n }\n \n .bb-capture-toolbar-item-timer {\n text-align: left;\n line-height: 32px;\n font-size: 14px;\n font-family: sans-serif;\n margin: 5px;\n min-width: 40px;\n display: none;\n }\n \n .bb-capture-toolbar-item .bb-tooltip {\n background-color: #555;\n color: #fff;\n visibility: hidden;\n font-size: 14px;\n font-family: sans-serif;\n text-align: center;\n padding: 5px 10px;\n position: absolute;\n z-index: 1;\n top: 45px;\n left: 0px;\n transform: translateX(calc(-50% + 21px));\n opacity: 0;\n transition: opacity 0.3s;\n white-space: nowrap;\n }\n \n .bb-capture-toolbar-item .bb-tooltip::after {\n content: "";\n position: absolute;\n bottom: 100%;\n left: 50%;\n margin-left: -5px;\n border-width: 5px;\n border-style: solid;\n transform: rotate(180deg);\n border-color: #555 transparent transparent transparent;\n }\n \n .bb-capture-toolbar-item:hover .bb-tooltip {\n visibility: visible;\n opacity: 1;\n }\n \n .bb-capture-options {\n display: none;\n }\n \n .bb-capture-options--active {\n display: flex;\n }\n\n @keyframes bbFadeOutRight {\n from {\n opacity: 1;\n }\n \n to {\n opacity: 0;\n }\n }\n \n @keyframes bbFadeOutDown {\n from {\n opacity: 1;\n }\n \n to {\n opacity: 0;\n transform: translate3d(0, 100%, 0);\n }\n }\n \n @keyframes bbFadeInOpacity {\n from {\n opacity: 0;\n }\n \n to {\n opacity: 1;\n }\n }\n \n @keyframes bbZoomOut {\n from {\n opacity: 1;\n }\n \n 50% {\n opacity: 0;\n transform: scale3d(0.3, 0.3, 0.3);\n }\n \n to {\n opacity: 0;\n }\n }\n \n @keyframes bbZoomIn {\n from {\n opacity: 0;\n transform: scale3d(0.3, 0.3, 0.3);\n }\n \n 50% {\n opacity: 1;\n }\n }\n \n @keyframes bbRecIconContFade {\n 0% {\n fill: #b10802;\n }\n 50% {\n fill: #ff0000;\n }\n 100% {\n fill: #b10802;\n }\n } \n .bb-capture-preview-retrybutton {\n color: ').concat(h,";\n border-radius: ").concat(w,"px;\n background-color: ").concat(y,";\n }\n .bb-capture-preview-retrybutton:hover {\n background-color: ").concat(b,";\n }\n @keyframes bb-suc-fill {\n 100% {\n box-shadow: inset 0px 0px 0px 30px ").concat(e,";\n }\n }\n .bb-capture-toolbar-item-spacer {\n background-color: ").concat(y,";\n }\n .bb-tooltip {\n border-radius: ").concat(S,"px;\n }\n @keyframes bbRecIconFade {\n 0% {\n fill: transparent;\n }\n 50% {\n fill: ").concat(b,";\n }\n 100% {\n fill: transparent;\n }\n }\n .bb-capture-preview-sendbutton {\n color: ").concat(c,";\n background-color: ").concat(e,";\n border-radius: ").concat(w,"px;\n }\n .bb-capture-button-next {\n color: ").concat(c,";\n background-color: ").concat(e,";\n border-radius: ").concat(C,"px;\n }\n .bb-capture-preview-inner {\n background-color: ").concat(r,";\n border-radius: ").concat(S,"px;\n }\n .bb-capture-toolbar-item-timer {\n color: ").concat(v,";\n }\n .bb-svg-path {\n fill: ").concat(h,";\n }\n .bb-capture-toolbar-item {\n border-radius: ").concat(S,"px;\n }\n .bb-capture-toolbar {\n background-color: ").concat(r,";\n border-radius: ").concat(S,"px;\n }\n .bb-capture-toolbar-item-colorpicker {\n background-color: ").concat(r,";\n }\n .bb-capture-toolbar-item--active {\n background-color: ").concat(y,";\n }\n .bb-feedback-button-classic {\n border-top-left-radius: ").concat(S,"px;\n border-top-right-radius: ").concat(S,"px;\n }\n .bb-logo-logo--default path {\n fill: ").concat(p,";\n }\n .bb-logo-arrowdown {\n fill: ").concat(p,";\n }\n .bb-feedback-button-icon {\n background-color: ").concat(n,";\n }\n .bb-feedback-button-classic {\n background-color: ").concat(n,";\n color: ").concat(p,";\n }\n\n @media only screen and (max-width: 450px) {\n [dir=rtl].gleap-frame-container,\n .gleap-frame-container {\n left: 0px;\n right: 0px;\n width: 100vw;\n max-width: 100vw;\n min-height: 100vh;\n max-height: 100vh;\n min-height: 100dvh !important;\n max-height: 100dvh !important;\n top: 0px;\n bottom: 0px;\n border-radius: 0px;\n animation-name: gleapFadeInUpMobile;\n }\n\n .gleap-frame-container-inner {\n width: 100vw;\n height: 100%;\n }\n\n .gleap-frame-container:not(.gleap-frame-container--survey):not(.gleap-frame-container--survey-full) .gleap-frame-container-inner {\n max-height: calc(var(--glvh, 1vh) * 100) !important;\n }\n\n .gleap-frame-container--survey {\n height: auto !important;\n top: initial !important;\n bottom: 0px !important;\n min-height: initial !important;\n }\n\n .gleap-frame-container--survey .gleap-frame-container-inner {\n height: 100vh !important;\n }\n\n .bb-tooltip {\n display: none !important;\n }\n \n .bb-capture-toolbar-item-colorpicker {\n top: 75px;\n }\n \n .bb-capture-button-next {\n margin-left: auto;\n }\n \n .bb-capture-dismiss {\n display: none;\n }\n \n .bb-capture-toolbar {\n top: 15px;\n right: 15px;\n left: 15px;\n width: auto;\n transform: none;\n }\n\n .bb-capture-editor-drag-info {\n display: none;\n }\n \n .bb-capture-editor-borderlayer {\n border-width: 4px;\n }\n }\n \n @media print {\n .bb-feedback-button {\n display: none !important;\n }\n \n .gleap-frame-container {\n display: none !important;\n }\n }\n\n .gleap-tour-sender {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n margin-bottom: 10px;\n }\n\n .gleap-tour-sender-image {\n width: 32px;\n height: 32px;\n border-radius: 32px;\n margin-right: 10px;\n background-size: cover;\n background-repeat: no-repeat;\n }\n\n .gleap-tour-popover.gleap-tour-popover-post {\n min-width: 550px;\n max-width: 550px;\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-tour-popover.gleap-tour-popover-post {\n min-width: calc(100vw - 40px);\n max-width: calc(100vw - 40px);\n }\n }\n\n .gleap-tour-message,\n .gleap-tour-message p,\n .gleap-tour-message ul {\n color: ").concat(h,";\n }\n\n .gleap-tour-message h2 {\n font-weight: 600;\n font-size: 22px;\n }\n\n .gleap-tour-message h3 {\n font-weight: 600;\n font-size: 18px;\n }\n\n .gleap-tour-message p {\n line-height: 1.3;\n margin-bottom: 10px !important;\n margin-top: 10px !important;\n }\n\n .gleap-tour-message ul {\n line-height: 1.3;\n padding-left: 20px;\n margin-top: 10px !important;\n margin-bottom: 10px !important;\n }\n\n .gleap-tour-message {\n max-height: calc(80vh - 100px) !important;\n overflow-y: auto;\n min-width: 270px;\n }\n\n .gleap-tour-message::-webkit-scrollbar {\n width: 5px;\n }\n\n .gleap-tour-message::-webkit-scrollbar-track {\n border-radius: 0px;\n }\n \n .gleap-tour-message::-webkit-scrollbar-thumb {\n background: ").concat(b,"; \n border-radius: 5px;\n }\n\n .gleap-tour-message::-webkit-scrollbar-thumb:hover {\n background: ").concat(v,";\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-tour-message {\n min-width: auto !important;\n }\n }\n\n .gleap-tour-message iframe {\n width: 100%;\n height: 300px;\n margin-top: 10px;\n margin-bottom: 10px;\n border: none;\n outline: none;\n display: block;\n }\n\n .gleap-tour-sender-name {\n font-size: 15px;\n }\n\n .gleap-tour-video {\n width: 100%;\n max-width: 100%;\n }\n\n .gleap-tour-video-svg--fullscreen {\n width: 100% !important;\n height: 100% !important;\n top: 0px !important;\n left: 0px !important;\n right: 0px !important;\n bottom: 0px !important;\n }\n\n .gleap-tour-video--playing .gleap-tour-video-playpause {\n opacity: 0;\n }\n \n .gleap-tour-video--playing:hover .gleap-tour-video-playpause {\n opacity: 1;\n }\n\n .gleap-tour-popover-video-pointer {\n padding: 0px !important;\n border-radius: 8px;\n position: relative;\n background-color: transparent !important;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-footer {\n position: absolute;\n top: 0px;\n left: 20px;\n right: 20px;\n opacity: 0;\n transition: opacity 200ms ease-in-out;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-footer button {\n padding: 5px 12px;\n }\n\n .gleap-tour-popover-video-pointer.gleap-tour-popover-can-close .gleap-tour-popover-footer {\n right: 40px !important;\n }\n\n .gleap-tour-popover-video-pointer:hover .gleap-tour-popover-footer {\n opacity: 1;\n }\n\n .gleap-tour-popover-pointer.gleap-tour-popover-no-sender .gleap-tour-message {\n padding-right: 20px;\n }\n\n .gleap-tour-video video {\n width: 100%;\n max-width: 100%;\n height: auto;\n border: none;\n outline: none;\n display: block;\n border-radius: 8px;\n }\n\n .gleap-admin-collapse-ui {\n z-index: ").concat(2147483635,";\n cursor: pointer;\n position: fixed;\n bottom: 75px;\n right: 20px;\n width: 32px;\n height: 32px;\n border-radius: 100%;\n background-color: #fff;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: rgba(0, 0, 0, 0.16) 0px 10px 36px 0px, rgba(0, 0, 0, 0.06) 0px 0px 0px 1px;\n }\n\n .gleap-admin-collapse-ui svg {\n width: 20px;\n height: 14px;\n fill: #000 !important;\n }\n\n .gleap-admin-collapse-ui-active {\n bottom: 20px !important;\n }\n\n .gleap-admin-collapse-ui-active svg {\n transform: rotate(180deg);\n }\n\n .gleap-admin-frame-container-active {\n display: none !important;\n }\n\n .gleap-admin-frame-container {\n position: fixed;\n bottom: 0px;\n left: 0px;\n right: 0px;\n width: 100vw;\n z-index: ").concat(2147483640,";\n }\n\n .gleap-admin-frame {\n width: 100%;\n height: 100% !important;\n border: none;\n outline: none;\n display: block;\n }\n \n .gleap-tour-message .linktype-link {\n display: inline-block !important;\n background-color: transparent !important;\n color: ").concat(n," !important;\n }\n\n .gleap-tooltip .linktype-button,\n .gleap-tour-message .linktype-button {\n display: inline-block !important;\n border-radius: 5px;\n box-sizing: border-box;\n padding: 10px 20px !important;\n text-decoration: none !important;\n background-color: ").concat(n," !important;\n color: ").concat(p," !important;\n }\n\n .gleap-tour-message img {\n width: 100%;\n max-width: 100%;\n min-height: 260px;\n height: auto;\n margin-top: 10px;\n margin-bottom: 10px;\n object-fit: cover;\n }\n\n .gleap-tour-active .gleap-tour-overlay {\n pointer-events: none;\n }\n \n .gleap-tour-active * {\n pointer-events: none;\n }\n \n .gleap-tour-active .gleap-tour-active-element,\n .gleap-tour-active .gleap-tour-active-element *,\n .gleap-tour-popover,\n .gleap-tour-popover * {\n pointer-events: auto;\n }\n \n @keyframes animate-fade-in {\n 0% {\n opacity: 0;\n }\n \n to {\n opacity: 1;\n }\n }\n \n .gleap-tour-fade .gleap-tour-overlay {\n animation: animate-fade-in 200ms ease-in-out;\n }\n \n .gleap-tour-fade .gleap-tour-popover {\n animation: animate-fade-in 200ms;\n }\n\n .gleap-tour-video-playpause {\n position: absolute;\n bottom: 8px;\n left: 8px;\n width: 32px;\n height: 32px;\n padding: 4px;\n background-color: rgba(0,0,0,0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border-radius: 8px;\n transition: opacity 200ms ease-in-out;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-arrow {\n display: none !important;\n }\n\n .gleap-tour-video-playpause svg {\n width: 34px;\n height: auto;\n fill: #fff;\n }\n \n /* Popover styles */\n .gleap-tour-popover {\n all: unset;\n box-sizing: border-box;\n color: #2d2d2d;\n margin: 0;\n padding: 15px;\n border-radius: ").concat(S,'px;\n min-width: 250px;\n max-width: 300px;\n box-shadow: 0 1px 10px #0006;\n z-index: 1000000000;\n position: fixed;\n top: 0;\n right: 0;\n background-color: #fff;\n }\n \n .gleap-tour-popover * {\n font-family: "Helvetica Neue", Inter, ui-sans-serif, "Apple Color Emoji", Helvetica, Arial, sans-serif;\n }\n \n .gleap-tour-popover-title {\n font: 19px / normal sans-serif;\n font-weight: 700;\n display: block;\n position: relative;\n line-height: 1.5;\n zoom: 1;\n margin: 0;\n }\n \n .gleap-tour-popover-close-btn {\n all: unset;\n position: absolute;\n top: 5px;\n right: 5px;\n width: 32px;\n height: 32px;\n cursor: pointer;\n font-size: 30px;\n font-weight: 500;\n line-height: 32px;\n color: #d2d2d2;\n z-index: 1;\n text-align: center;\n transition: color;\n transition-duration: 200ms;\n }\n \n .gleap-tour-popover-close-btn:hover,\n .gleap-tour-popover-close-btn:focus {\n color: #2d2d2d;\n }\n \n .gleap-tour-popover-title[style*="block"] + .gleap-tour-popover-description {\n margin-top: 5px;\n }\n \n .gleap-tour-popover-description {\n margin-bottom: 0;\n font: 15px / normal sans-serif;\n line-height: 1.5;\n font-weight: 400;\n zoom: 1;\n }\n \n .gleap-tour-popover-footer {\n margin-top: 15px;\n text-align: right;\n zoom: 1;\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n \n .gleap-tour-popover-progress-text {\n font-size: 13px;\n font-weight: 400;\n color: #727272;\n zoom: 1;\n }\n \n .gleap-tour-popover-footer button {\n background-color: ').concat(e,";\n color: ").concat(c,";\n border-radius: ").concat(C,"px;\n box-sizing: border-box;\n padding: 10px 20px;\n font-size: 14px;\n font-weight: bold;\n line-height: 21px;\n border: none;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: none !important;\n outline: none !important;\n }\n\n .gleap-tour-popover-prev-btn {\n color: ").concat(h," !important;\n background-color: ").concat(y," !important;\n margin-right: 3px;\n }\n\n .gleap-tour-popover-prev-btn:hover {\n background-color: ").concat(e,"22 !important;\n color: ").concat(e,' !important;\n }\n \n .gleap-tour-popover-footer .gleap-tour-popover-btn-disabled {\n opacity: 0.5;\n pointer-events: none;\n }\n \n /* Disable the scrolling of parent element if it has an active element*/\n :not(body):has(> .gleap-tour-active-element) {\n overflow: hidden !important;\n }\n \n .gleap-tour-no-interaction, .gleap-tour-no-interaction * {\n pointer-events: none !important;\n }\n \n .gleap-tour-popover-navigation-btns {\n display: flex;\n flex-grow: 1;\n justify-content: flex-end;\n }\n \n .gleap-tour-popover-navigation-btns button + button {\n margin-left: 4px;\n }\n \n .gleap-tour-popover-arrow {\n content: "";\n position: absolute;\n border: 5px solid #fff;\n }\n \n .gleap-tour-popover-arrow-side-over {\n display: none;\n }\n \n /** Popover Arrow Sides **/\n .gleap-tour-popover-arrow-side-left {\n left: 100%;\n border-right-color: transparent;\n border-bottom-color: transparent;\n border-top-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-right {\n right: 100%;\n border-left-color: transparent;\n border-bottom-color: transparent;\n border-top-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-top {\n top: 100%;\n border-right-color: transparent;\n border-bottom-color: transparent;\n border-left-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-bottom {\n bottom: 100%;\n border-left-color: transparent;\n border-top-color: transparent;\n border-right-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-center {\n display: none;\n }\n \n /* Left/Start + Right/Start */\n .gleap-tour-popover-arrow-side-left.gleap-tour-popover-arrow-align-start,\n .gleap-tour-popover-arrow-side-right.gleap-tour-popover-arrow-align-start {\n top: 15px;\n }\n \n /* Top/Start + Bottom/Start */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-start,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-start {\n left: 15px;\n }\n \n /* End/Left + End/Right */\n .gleap-tour-popover-arrow-align-end.gleap-tour-popover-arrow-side-left,\n .gleap-tour-popover-arrow-align-end.gleap-tour-popover-arrow-side-right {\n bottom: 15px;\n }\n \n /* Top/End + Bottom/End */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-end,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-end {\n right: 15px;\n }\n \n /* Left/Center + Right/Center */\n .gleap-tour-popover-arrow-side-left.gleap-tour-popover-arrow-align-center,\n .gleap-tour-popover-arrow-side-right.gleap-tour-popover-arrow-align-center {\n top: 50%;\n margin-top: -5px;\n }\n \n /* Top/Center + Bottom/Center */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-center,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-center {\n left: 50%;\n margin-left: -5px;\n }\n \n /* No arrow */\n .gleap-tour-popover-arrow-none {\n display: none;\n } \n\n /* Modal styles */\n .gleap-modal-wrapper {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: ').concat(2147483640,";\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .gleap-modal-backdrop {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.5);\n z-index: ").concat(2147483641,";\n }\n\n .gleap-modal {\n position: relative;\n width: 90%;\n max-width: 600px;\n max-height: 90vh;\n z-index: ").concat(2147483700,";\n background-color: ").concat(r,";\n border-radius: ").concat(k,"px;\n overflow: hidden;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-name: gleapFadeInUp;\n }\n\n .gleap-modal-frame {\n width: 100%;\n border: none;\n display: block;\n outline: none;\n }\n\n body.gleap-modal-open {\n overflow: hidden;\n }\n\n @keyframes gleapFadeInUp {\n from {\n opacity: 0;\n transform: translate3d(0, 20px, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n "),E=document.querySelector(".gleap-styles");E&&E.remove();var T=document.createElement("style");T.innerHTML=O,T.className="gleap-styles",document.body.appendChild(T)}(e,t,n,r,o,i,s,l)}))}},{key:"sendSilentCrashReport",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"MEDIUM",o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{screenshot:!0,replays:!0,attachments:!0};return e.sendSilentCrashReportWithFormData({description:t},n,o)}},{key:"sendSilentCrashReportWithFormData",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"MEDIUM",o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{screenshot:!0,replays:!0,attachments:!0};if(!this.silentCrashReportSent){this.silentCrashReportSent=!0,setTimeout((function(){t.silentCrashReportSent=!1}),1e4);var r=o?k(o):{},i=et.getInstance();if(i.ready){var a=e||{};i.session.email&&(a.reportedBy=i.session.email),new _t("CRASH",n,a,!0,r).sendFeedback().then((function(){})).catch((function(e){}))}}}},{key:"showSurvey",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"survey";e.startFeedbackFlowWithOptions(t,{hideBackButton:!0,format:n},!0)}},{key:"startClassicForm",value:function(t,n){e.startFeedbackFlowWithOptions(t,{hideBackButton:!n})}},{key:"startFeedbackFlow",value:function(t,n){e.startFeedbackFlowWithOptions(t,{hideBackButton:!n})}},{key:"startFeedbackFlowWithOptions",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=n.autostartDrawing,i=n.hideBackButton,a=n.format;if(et.getInstance().ready){e.getInstance().setGlobalDataItem("snapshotPosition",{x:window.scrollX,y:window.scrollY});var s="start-feedbackflow";o&&(s="start-survey"),Vt.getInstance().setAppMode(o?a:"widget"),Vt.getInstance().sendMessage({name:s,data:{flow:t,hideBackButton:i,format:a}},!0),r?Vt.getInstance().showDrawingScreen("screenshot"):Vt.getInstance().showWidget()}}},{key:"openConversations",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-conversations",data:{hideBackButton:!e}},!0),Vt.getInstance().showWidget()}},{key:"openConversation",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e&&(Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-conversation",data:{shareToken:e,hideBackButton:!t}},!0),Vt.getInstance().showWidget())}},{key:"startConversation",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];e.startBot("",t)}},{key:"startBot",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"start-bot",data:{botId:e||"",hideBackButton:!t}},!0),Vt.getInstance().showWidget()}},{key:"openHelpCenterCollection",value:function(e){e&&(Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-help-collection",data:{collectionId:e}},!0),Vt.getInstance().showWidget())}},{key:"openHelpCenterArticle",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e&&(Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-help-article",data:{articleId:e,hideBackButton:!t}},!0),Vt.getInstance().showWidget())}},{key:"openHelpCenter",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-helpcenter",data:{hideBackButton:!e}},!0),Vt.getInstance().showWidget()}},{key:"searchHelpCenter",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e&&(Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-helpcenter-search",data:{term:e,hideBackButton:!t}},!0),Vt.getInstance().showWidget())}},{key:"openNewsArticle",value:function(e){e&&(Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-news-article",data:{id:e}},!0),Vt.getInstance().showWidget())}},{key:"openChecklists",value:function(){Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-checklists",data:{}},!0),Vt.getInstance().showWidget()}},{key:"startChecklist",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;return!!e&&(Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"start-checklist",data:Mm({outboundId:e,hideBackButton:!t},n?{sharedKey:n}:{})},!0),Vt.getInstance().showWidget(),!0)}},{key:"openChecklist",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e&&(Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-checklist",data:{id:e,hideBackButton:!t}},!0),Vt.getInstance().showWidget())}},{key:"getChecklistData",value:function(e,t){if(!e)return Promise.reject(new Error("outboundId is required"));var n=D.getInstance();return n.validateChecklist(e,t).then((function(e){return n.fetchChecklist(e)}))}},{key:"openNews",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-news",data:{hideBackButton:!e}},!0),Vt.getInstance().showWidget()}},{key:"openFeatureRequests",value:function(){Vt.getInstance().setAppMode("widget"),Vt.getInstance().sendMessage({name:"open-feature-requests",data:{}},!0),Vt.getInstance().showWidget()}},{key:"startProductTour",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this;et.getInstance().startProductTourConfig(e).then((function(o){var r;!t||null==o||!o.startURL||null!==(r=window)&&void 0!==r&&null!==(r=r.location)&&void 0!==r&&null!==(r=r.href)&&void 0!==r&&r.includes(null==o?void 0:o.baseURL)?n.startProductTourWithConfig(e,o,!0):window.location.href="".concat(o.startURL,"?gleap_tour=").concat(e,"&gleap_tour_delay=1")})).catch((function(e){}))}},{key:"checkForUncompletedTour",value:function(){var e=mm.getInstance().loadUncompletedTour();e&&mm.getInstance().startWithConfig(e.tourId,e.tourData,500)}},{key:"startProductTourWithConfig",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];mm.getInstance().startWithConfig(e,t,0,n)}},{key:"showBanner",value:function(e){try{Bh.getInstance().showBanner(e)}catch(t){}}},{key:"showModal",value:function(e){try{Gh.getInstance().showModal(e)}catch(t){}}},{key:"showNotification",value:function(e){Mh.getInstance().showNotification(e)}}],n&&Lm(t.prototype,n),o&&Lm(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();if(Rm(Dm,"invoked",!0),Rm(Dm,"silentCrashReportSent",!1),Rm(Dm,"instance",void 0),"undefined"!=typeof window){var Nm=window.GleapActions;if(Nm&&Nm.length>0)for(var jm=0;jm{var e={d:(t,n)=>{for(var o in n)e.o(n,o)&&!e.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:n[o]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};(()=>{"use strict";function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function o(e,t){for(var n=0;nVm});var a=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),r(this,"feedbackButton",null),r(this,"injectedFeedbackButton",!1),r(this,"buttonHidden",null),r(this,"lastButtonIcon",null)}var t,n,i;return t=e,i=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],(n=[{key:"destroy",value:function(){this.feedbackButton&&(this.feedbackButton.remove(),this.feedbackButton=null),this.buttonHidden=null,this.lastButtonIcon=null,this.injectedFeedbackButton=!1,this.instance=null}},{key:"toggleFeedbackButton",value:function(t){this.buttonHidden=!t,e.getInstance().updateFeedbackButtonState(),jh.getInstance().updateContainerStyle()}},{key:"feedbackButtonPressed",value:function(){var e=Zt.getInstance();e.isOpened()?e.hideWidget():(e.setAppMode("widget"),e.showWidget())}},{key:"injectFeedbackButton",value:function(){var e=this;if(!this.injectedFeedbackButton){this.injectedFeedbackButton=!0;var t=document.createElement("div");t.addEventListener("click",(function(){e.feedbackButtonPressed()})),document.body.appendChild(t),this.feedbackButton=t,this.updateFeedbackButtonState()}}},{key:"updateNotificationBadge",value:function(e){var t=document.querySelector(".bb-notification-bubble");if(t){var n="bb-notification-bubble--hidden";e>0&&!Zt.getInstance().isOpened()?(t.classList.remove(n),t.innerText=e):t.classList.add(n)}}},{key:"refresh",value:function(){document.querySelector(".bb-feedback-button")?(this.updateFeedbackButtonText(),this.updateFeedbackButtonState()):(this.injectedFeedbackButton=!1,this.feedbackButton=null,this.buttonHidden=null,this.lastButtonIcon=null,this.injectFeedbackButton())}},{key:"updateFeedbackButtonText",value:function(){var t=dt.getInstance().getFlowConfig();if(t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC||t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC_BOTTOM||t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC_LEFT){var n=document.querySelector(".bb-feedback-button-classic");n&&(n.innerText=t.widgetButtonText)}}},{key:"updateFeedbackButtonState",value:function(){if(null!==this.feedbackButton){var t=dt.getInstance().getFlowConfig(),n="";n=t.buttonLogo?''):p("button","#fff"),this.feedbackButton.className="bb-feedback-button gleap-font gl-block",this.feedbackButton.setAttribute("dir",kh.getInstance().isRTLLayout?"rtl":"ltr"),t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC||t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC_BOTTOM||t.feedbackButtonPosition===e.FEEDBACK_BUTTON_CLASSIC_LEFT?(this.feedbackButton.classList.add("bb-feedback-button--classic-button-style"),this.feedbackButton.innerHTML='
').concat(t.widgetButtonText,"
")):n!==this.lastButtonIcon&&(this.feedbackButton.innerHTML='
'.concat(n).concat(p("arrowdown","#fff"),'
')),this.lastButtonIcon=n;var o=!1;null===e.getInstance().buttonHidden?t.feedbackButtonPosition===e.FEEDBACK_BUTTON_NONE&&(o=!0):e.getInstance().buttonHidden&&(o=!0),o&&this.feedbackButton.classList.add("bb-feedback-button--disabled"),t.feedbackButtonPosition===e.FEEDBACK_BUTTON_BOTTOM_LEFT&&this.feedbackButton.classList.add("bb-feedback-button--bottomleft"),Zt.getInstance().isOpened()&&this.feedbackButton.classList.add("bb-feedback-button--open");var r=Zt.getInstance().appMode;"survey"!==r&&"survey_full"!==r&&"survey_web"!==r||this.feedbackButton.classList.add("bb-feedback-button--survey"),!0!==t.hideForGuests||et.getInstance().isUser()||this.feedbackButton.classList.add("bb-feedback-button--hidden")}}}])&&o(t.prototype,n),i&&o(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}();function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var o,r,i,a,s=[],l=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(o=i.call(n)).done)&&(s.push(o.value),s.length!==t);l=!0);}catch(e){c=!0,r=e}finally{try{if(!l&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(c)throw r}}return s}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return c(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return c(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n=160?"#000000":"#ffffff"},p=function(e,t){return"button"===e?'':"drag"===e?'\x3c!--!Font Awesome Pro 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2025 Fonticons, Inc.--\x3e':"unmute"===e?'':"mute"===e?'':"replay"===e?'\n \n ':"dismiss"===e?'':"blur"===e?'\n \n':"pen"===e?'\n \n \n \n \n \n \n \n \n \n \n \n \n':"rect"===e?'\n \n \n \n \n \n \n \n \n \n \n':"pointer"===e?'\n \n ':"clip"===e?'\n \n \n \n \n \n':"mic"===e?'\n \n \n \n \n ':"camera"===e?'\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n':"recorderon"===e?'\n \n \n \n \n \n \n \n \n \n \n \n':"recorderoff"===e?'\n \n \n \n \n \n \n \n \n ':"arrowdown"===e?'\n \n '):"arrowleft"===e?'\n \n '):"close"===e?'\n \n '):"undo"===e?'\n \n \n \n \n \n \n \n \n \n ':"circle-dot"===e?''):"circle-question"===e?''):"circle-info"===e?''):"circle-exclamation"===e?''):"circle-up"===e?''):"circle-right"===e?''):""};function h(e){return h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},h(e)}function f(e,t){for(var n=0;n0&&(e=e.concat(this.externalRequests)),this.filters&&this.filters.length>0)for(var t=0;t-1)&&!e.find((function(e){return e.url===s.name}))&&e.push({type:"RESOURCE",date:new Date(this.startTimestamp+s.startTime),url:s.name,duration:Math.round(s.duration),initiatorType:s.initiatorType})}}}catch(u){}var l=this.blacklist.concat(this.defaultBlacklist);if(l&&l.length>0)try{e=e.filter((function(e){for(var t=0;t70&&(e=70),this.maxRequests=e}},{key:"setStopped",value:function(e){this.stopped=e}},{key:"setFilters",value:function(e){this.filters=this.filters.concat(e||[])}},{key:"setBlacklist",value:function(e){this.blacklist=this.blacklist.concat(e||[])}},{key:"cleanRequests",value:function(){var e=Object.keys(this.requests);if(e.length>this.maxRequests)for(var t=e.slice(0,e.length-this.maxRequests),n=0;n.15?"":e}},{key:"cleanupPayload",value:function(e){if(null==e)return"{}";try{if(void 0!==("undefined"==typeof TextDecoder?"undefined":h(TextDecoder))&&ArrayBuffer.isView(e))return(new TextDecoder).decode(e)}catch(t){}return e}},{key:"preparePayload",value:function(e){var t=this.cleanupPayload(e);return this.cleanupContentSize(t)}},{key:"start",value:function(){var e=this;if(!this.initialized){this.initialized=!0;var t=this;this.interceptNetworkRequests({onFetch:function(n,o){if(!e.stopped&&o&&e.requests){if(n.length>0&&void 0!==n[0]&&void 0!==n[0].url)e.requests[o]={url:n[0].url,date:new Date,request:{payload:"",headers:void 0!==n[0].headers?Object.fromEntries(n[0].headers.entries()):{}},type:void 0!==n[0].method?n[0].method:""};else if(n.length>=2&&n[1]){var r=n[1]&&n[1].method?n[1].method:"GET";e.requests[o]={request:{payload:t.preparePayload(n[1].body),headers:n[1].headers},type:r,url:n[0],date:new Date}}else e.requests[o]={url:n[0],date:new Date};e.cleanRequests()}},onFetchLoad:function(n,o){if(!e.stopped&&o&&e.requests&&e.requests[o]){try{e.requests[o].success=!0,e.requests[o].response={status:n.status,statusText:"",responseText:""},e.calcRequestTime(o)}catch(i){}try{var r="";n.headers&&void 0!==n.headers.get&&(r=n.headers.get("content-type")),e.isContentTypeSupported(r)?n.text().then((function(r){e.requests[o]&&(e.requests[o].success=!0,e.requests[o].response={status:n.status,statusText:n.statusText,responseText:t.cleanupContentSize(r)}),e.calcRequestTime(o),e.cleanRequests()})).catch((function(t){e.cleanRequests()})):(e.requests[o]&&(e.requests[o].success=!0,e.requests[o].response={status:n.status,statusText:n.statusText,responseText:""}),e.calcRequestTime(o),e.cleanRequests())}catch(i){}}},onFetchFailed:function(t,n){!e.stopped&&n&&e.requests&&e.requests[n]&&(e.requests[n].success=!1,e.calcRequestTime(n),e.cleanRequests())},onOpen:function(t,n){e.stopped||(t&&t.bbRequestId&&n.length>=2&&e.requests&&(e.requests[t.bbRequestId]={type:n[0],url:n[1],date:new Date}),e.cleanRequests())},onSend:function(t,n){e.stopped||(t&&t.bbRequestId&&e.requests&&e.requests[t.bbRequestId]&&(e.requests[t.bbRequestId].request={payload:e.preparePayload(n.length>0?n[0]:"{}"),headers:t.requestHeaders}),e.cleanRequests())},onError:function(t,n){!e.stopped&&e.requests&&t&&t.currentTarget&&t.currentTarget.bbRequestId&&e.requests[t.currentTarget.bbRequestId]&&(e.requests[t.currentTarget.bbRequestId].success=!1,e.calcRequestTime(t.bbRequestId)),e.cleanRequests()},onLoad:function(t,n){if(!e.stopped){if(t&&t.currentTarget&&t.currentTarget.bbRequestId&&e.requests&&e.requests[t.currentTarget.bbRequestId]){var o=t.currentTarget,r=o.responseType,i="<"+r+">";""!==r&&"text"!==r||(i=e.cleanupContentSize(o.responseText)),e.requests[o.bbRequestId].success=!0,e.requests[o.bbRequestId].response={status:o.status,statusText:o.statusText,responseText:i},e.calcRequestTime(o.bbRequestId)}e.cleanRequests()}}})}}},{key:"interceptNetworkRequests",value:function(e){var t,n=this,o=XMLHttpRequest.prototype.open,r=XMLHttpRequest.prototype.send;return void 0===XMLHttpRequest.prototype.gleapSetRequestHeader&&(XMLHttpRequest.prototype.gleapSetRequestHeader=XMLHttpRequest.prototype.setRequestHeader),XMLHttpRequest.prototype.gleapSetRequestHeader&&(XMLHttpRequest.prototype.setRequestHeader=function(e,t){this.requestHeaders||(this.requestHeaders={}),this.requestHeaders&&this.requestHeaders.hasOwnProperty(e)||(this.requestHeaders[e]||(this.requestHeaders[e]=[]),this.requestHeaders[e].push(t),this.gleapSetRequestHeader(e,t))}),XMLHttpRequest.prototype.open=function(){return this.bbRequestId=++n.requestId,e.onOpen&&e.onOpen(this,arguments),e.onLoad&&this.addEventListener("load",e.onLoad.bind(e)),e.onError&&this.addEventListener("error",e.onError.bind(e)),o.apply(this,arguments)},XMLHttpRequest.prototype.send=function(){return e.onSend&&e.onSend(this,arguments),r.apply(this,arguments)},window.fetch&&(t=window.fetch,window.fetch=function(){var o=++n.requestId;return e.onFetch(arguments,o),t.apply(this,arguments).then((function(t){if(t&&"function"==typeof t.clone){var n=t.clone();e.onFetchLoad(n,o)}return t})).catch((function(t){throw e.onFetchFailed(t,o),t}))}),e}},{key:"blobToTextPromise",value:function(e){return new Promise((function(t,n){var o=new FileReader;o.onload=function(e){e&&e.target&&e.target.result?t(e.target.result):n()},o.onerror=function(e){n(e)},o.readAsText(e)}))}}],o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],n&&f(t.prototype,n),o&&f(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();m(v,"instance",void 0);const y=v;var b=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:400,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:400;return new Promise((function(o,r){var i=0===e.indexOf("data:image/jpeg"),a=new Image;a.src=e,a.onerror=function(){r()},a.onload=function(){var e=document.createElement("canvas"),r=t,s=n;t>a.width/1.5&&(r=a.width/1.5),n>a.height/1.5&&(s=a.height/1.5);var l=a.width,c=a.height;l>c?l>r&&(c*=r/l,l=r):c>s&&(l*=s/c,c=s),e.width=l,e.height=c,e.getContext("2d").drawImage(a,0,0,l,c),o(i?e.toDataURL("image/jpeg",.7):e.toDataURL())}}))},w=function(){return!(!/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(navigator.userAgent)&&!/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(navigator.userAgent.substr(0,4)))},k=function(e){if("string"==typeof e||e instanceof String)try{return JSON.parse(e)}catch(t){return{}}return e},x=function(e,t){return e.length>t?e.slice(0,t)+"...":e},S=function(e){try{var t=e.split("."),n=!1,o=t[t.length-2];return"co"!==o&&"com"!==o&&"gv"!==o&&"ac"!==o&&"edu"!==o&&"gov"!==o&&"mil"!==o&&"net"!==o&&"org"!==o||(n=!0),(t=t.slice(n?-3:-2)).join(".")}catch(r){}return e},C=function(e){try{var t=localStorage.getItem("gleap-widget-".concat(e));if(t)return JSON.parse(t)}catch(n){}return null},I=function(e,t){var n="gleap-widget-".concat(e);if(t)try{localStorage.setItem(n,JSON.stringify(t))}catch(o){}else localStorage.removeItem(n)},E=function(e){"complete"===document.readyState||"loaded"===document.readyState||"interactive"===document.readyState?e():document.addEventListener("DOMContentLoaded",(function(){e()}))};function T(e){return T="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},T(e)}function O(e,t){for(var n=0;n=200&&i.status<300)try{var e=i.responseText?JSON.parse(i.responseText):null;o(e)}catch(t){r({status:i.status,statusText:"JSON Parse Error",responseText:i.responseText,error:t})}else r({status:i.status,statusText:i.statusText,responseText:i.responseText})},i.onerror=function(){r({status:0,statusText:"Network Error",responseText:null})},i.send(n?JSON.stringify(n):null)}))}},{key:"_createCacheKey",value:function(e,t){return t?"".concat(e,"::").concat(t):e}},{key:"validateChecklist",value:function(e,t){var n=this,o=this._createCacheKey(e,t),r=this.validationCache.get(o);if(r)return r.status===M?Promise.resolve(r.internalId):Promise.reject(r.error);if(this.validationRequests.has(o))return this.validationRequests.get(o);var i=this._getApiUrl();if(!i){var a=new Error("ChecklistNetworkManager: Gleap API URL not configured.");return this.validationCache.set(o,{status:R,error:a}),Promise.reject(a)}var s="".concat(i,"/outbound/checklists?").concat(this._getQueryParams()),l=this._makeRequest("POST",s,{outboundId:e,sharedKey:t}).then((function(e){if(e&&e.id)return n.validationCache.set(o,{status:M,internalId:e.id}),e.id;var t=new Error("Validation response missing checklist ID.");throw n.validationCache.set(o,{status:R,error:e||t}),t})).catch((function(e){throw n.validationCache.set(o,{status:R,error:e}),e})).finally((function(){n.validationRequests.delete(o)}));return this.validationRequests.set(o,l),l}},{key:"fetchChecklist",value:function(e){var t=this,n=this.fetchCache.get(e);if(n)return n.status===M?Promise.resolve(JSON.parse(JSON.stringify(n.data))):Promise.reject(n.error);if(this.fetchRequests.has(e))return this.fetchRequests.get(e).then((function(e){return JSON.parse(JSON.stringify(e))}));var o=this._getApiUrl();if(!o){var r=new Error("ChecklistNetworkManager: Gleap API URL not configured.");return this.fetchCache.set(e,{status:R,error:r}),Promise.reject(r)}var i="".concat(o,"/outbound/checklists/").concat(e,"?convertTipTap=true&").concat(this._getQueryParams()),a=this._makeRequest("GET",i,null).then((function(n){if(n)return t.fetchCache.set(e,{status:M,data:n}),JSON.parse(JSON.stringify(n));var o=new Error("Empty response received for checklist fetch.");throw t.fetchCache.set(e,{status:R,error:n||o}),o})).catch((function(n){throw t.fetchCache.set(e,{status:R,error:n}),n})).finally((function(){t.fetchRequests.delete(e)}));return this.fetchRequests.set(e,a),a.then((function(e){return JSON.parse(JSON.stringify(e))}))}}],o=[{key:"getInstance",value:function(){return e.instance||(e.instance=new e),e.instance}}],n&&O(t.prototype,n),o&&O(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();L(P,"instance",null);const D=P,N=Math.min,j=Math.max,F=Math.round,B=Math.floor,_=e=>({x:e,y:e}),U={left:"right",right:"left",bottom:"top",top:"bottom"},H={start:"end",end:"start"};function z(e,t,n){return j(e,N(t,n))}function q(e,t){return"function"==typeof e?e(t):e}function W(e){return e.split("-")[0]}function V(e){return e.split("-")[1]}function G(e){return"x"===e?"y":"x"}function X(e){return"y"===e?"height":"width"}function Y(e){return["top","bottom"].includes(W(e))?"y":"x"}function J(e){return G(Y(e))}function K(e){return e.replace(/start|end/g,(e=>H[e]))}function Z(e){return e.replace(/left|right|bottom|top/g,(e=>U[e]))}function $(e){return"number"!=typeof e?function(e){return{top:0,right:0,bottom:0,left:0,...e}}(e):{top:e,right:e,bottom:e,left:e}}function Q(e){return{...e,top:e.y,left:e.x,right:e.x+e.width,bottom:e.y+e.height}}function ee(e,t,n){let{reference:o,floating:r}=e;const i=Y(t),a=J(t),s=X(a),l=W(t),c="y"===i,u=o.x+o.width/2-r.width/2,d=o.y+o.height/2-r.height/2,p=o[s]/2-r[s]/2;let h;switch(l){case"top":h={x:u,y:o.y-r.height};break;case"bottom":h={x:u,y:o.y+o.height};break;case"right":h={x:o.x+o.width,y:d};break;case"left":h={x:o.x-r.width,y:d};break;default:h={x:o.x,y:o.y}}switch(V(t)){case"start":h[a]-=p*(n&&c?-1:1);break;case"end":h[a]+=p*(n&&c?-1:1)}return h}async function te(e,t){var n;void 0===t&&(t={});const{x:o,y:r,platform:i,rects:a,elements:s,strategy:l}=e,{boundary:c="clippingAncestors",rootBoundary:u="viewport",elementContext:d="floating",altBoundary:p=!1,padding:h=0}=q(t,e),f=$(h),m=s[p?"floating"===d?"reference":"floating":d],g=Q(await i.getClippingRect({element:null==(n=await(null==i.isElement?void 0:i.isElement(m)))||n?m:m.contextElement||await(null==i.getDocumentElement?void 0:i.getDocumentElement(s.floating)),boundary:c,rootBoundary:u,strategy:l})),v="floating"===d?{...a.floating,x:o,y:r}:a.reference,y=await(null==i.getOffsetParent?void 0:i.getOffsetParent(s.floating)),b=await(null==i.isElement?void 0:i.isElement(y))&&await(null==i.getScale?void 0:i.getScale(y))||{x:1,y:1},w=Q(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:s,rect:v,offsetParent:y,strategy:l}):v);return{top:(g.top-w.top+f.top)/b.y,bottom:(w.bottom-g.bottom+f.bottom)/b.y,left:(g.left-w.left+f.left)/b.x,right:(w.right-g.right+f.right)/b.x}}const ne=function(e){return void 0===e&&(e=0),{name:"offset",options:e,async fn(t){var n,o;const{x:r,y:i,placement:a,middlewareData:s}=t,l=await async function(e,t){const{placement:n,platform:o,elements:r}=e,i=await(null==o.isRTL?void 0:o.isRTL(r.floating)),a=W(n),s=V(n),l="y"===Y(n),c=["left","top"].includes(a)?-1:1,u=i&&l?-1:1,d=q(t,e);let{mainAxis:p,crossAxis:h,alignmentAxis:f}="number"==typeof d?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...d};return s&&"number"==typeof f&&(h="end"===s?-1*f:f),l?{x:h*u,y:p*c}:{x:p*c,y:h*u}}(t,e);return a===(null==(n=s.offset)?void 0:n.placement)&&null!=(o=s.arrow)&&o.alignmentOffset?{}:{x:r+l.x,y:i+l.y,data:{...l,placement:a}}}}};function oe(e){return ae(e)?(e.nodeName||"").toLowerCase():"#document"}function re(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function ie(e){var t;return null==(t=(ae(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement}function ae(e){return e instanceof Node||e instanceof re(e).Node}function se(e){return e instanceof Element||e instanceof re(e).Element}function le(e){return e instanceof HTMLElement||e instanceof re(e).HTMLElement}function ce(e){return"undefined"!=typeof ShadowRoot&&(e instanceof ShadowRoot||e instanceof re(e).ShadowRoot)}function ue(e){const{overflow:t,overflowX:n,overflowY:o,display:r}=me(e);return/auto|scroll|overlay|hidden|clip/.test(t+o+n)&&!["inline","contents"].includes(r)}function de(e){return["table","td","th"].includes(oe(e))}function pe(e){const t=he(),n=me(e);return"none"!==n.transform||"none"!==n.perspective||!!n.containerType&&"normal"!==n.containerType||!t&&!!n.backdropFilter&&"none"!==n.backdropFilter||!t&&!!n.filter&&"none"!==n.filter||["transform","perspective","filter"].some((e=>(n.willChange||"").includes(e)))||["paint","layout","strict","content"].some((e=>(n.contain||"").includes(e)))}function he(){return!("undefined"==typeof CSS||!CSS.supports)&&CSS.supports("-webkit-backdrop-filter","none")}function fe(e){return["html","body","#document"].includes(oe(e))}function me(e){return re(e).getComputedStyle(e)}function ge(e){return se(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function ve(e){if("html"===oe(e))return e;const t=e.assignedSlot||e.parentNode||ce(e)&&e.host||ie(e);return ce(t)?t.host:t}function ye(e){const t=ve(e);return fe(t)?e.ownerDocument?e.ownerDocument.body:e.body:le(t)&&ue(t)?t:ye(t)}function be(e,t,n){var o;void 0===t&&(t=[]),void 0===n&&(n=!0);const r=ye(e),i=r===(null==(o=e.ownerDocument)?void 0:o.body),a=re(r);return i?t.concat(a,a.visualViewport||[],ue(r)?r:[],a.frameElement&&n?be(a.frameElement):[]):t.concat(r,be(r,[],n))}function we(e){const t=me(e);let n=parseFloat(t.width)||0,o=parseFloat(t.height)||0;const r=le(e),i=r?e.offsetWidth:n,a=r?e.offsetHeight:o,s=F(n)!==i||F(o)!==a;return s&&(n=i,o=a),{width:n,height:o,$:s}}function ke(e){return se(e)?e:e.contextElement}function xe(e){const t=ke(e);if(!le(t))return _(1);const n=t.getBoundingClientRect(),{width:o,height:r,$:i}=we(t);let a=(i?F(n.width):n.width)/o,s=(i?F(n.height):n.height)/r;return a&&Number.isFinite(a)||(a=1),s&&Number.isFinite(s)||(s=1),{x:a,y:s}}const Se=_(0);function Ce(e){const t=re(e);return he()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:Se}function Ie(e,t,n,o){void 0===t&&(t=!1),void 0===n&&(n=!1);const r=e.getBoundingClientRect(),i=ke(e);let a=_(1);t&&(o?se(o)&&(a=xe(o)):a=xe(e));const s=function(e,t,n){return void 0===t&&(t=!1),!(!n||t&&n!==re(e))&&t}(i,n,o)?Ce(i):_(0);let l=(r.left+s.x)/a.x,c=(r.top+s.y)/a.y,u=r.width/a.x,d=r.height/a.y;if(i){const e=re(i),t=o&&se(o)?re(o):o;let n=e,r=n.frameElement;for(;r&&o&&t!==n;){const e=xe(r),t=r.getBoundingClientRect(),o=me(r),i=t.left+(r.clientLeft+parseFloat(o.paddingLeft))*e.x,a=t.top+(r.clientTop+parseFloat(o.paddingTop))*e.y;l*=e.x,c*=e.y,u*=e.x,d*=e.y,l+=i,c+=a,n=re(r),r=n.frameElement}}return Q({width:u,height:d,x:l,y:c})}const Ee=[":popover-open",":modal"];function Te(e){return Ee.some((t=>{try{return e.matches(t)}catch(n){return!1}}))}function Oe(e){return Ie(ie(e)).left+ge(e).scrollLeft}function Le(e,t,n){let o;if("viewport"===t)o=function(e,t){const n=re(e),o=ie(e),r=n.visualViewport;let i=o.clientWidth,a=o.clientHeight,s=0,l=0;if(r){i=r.width,a=r.height;const e=he();(!e||e&&"fixed"===t)&&(s=r.offsetLeft,l=r.offsetTop)}return{width:i,height:a,x:s,y:l}}(e,n);else if("document"===t)o=function(e){const t=ie(e),n=ge(e),o=e.ownerDocument.body,r=j(t.scrollWidth,t.clientWidth,o.scrollWidth,o.clientWidth),i=j(t.scrollHeight,t.clientHeight,o.scrollHeight,o.clientHeight);let a=-n.scrollLeft+Oe(e);const s=-n.scrollTop;return"rtl"===me(o).direction&&(a+=j(t.clientWidth,o.clientWidth)-r),{width:r,height:i,x:a,y:s}}(ie(e));else if(se(t))o=function(e,t){const n=Ie(e,!0,"fixed"===t),o=n.top+e.clientTop,r=n.left+e.clientLeft,i=le(e)?xe(e):_(1);return{width:e.clientWidth*i.x,height:e.clientHeight*i.y,x:r*i.x,y:o*i.y}}(t,n);else{const n=Ce(e);o={...t,x:t.x-n.x,y:t.y-n.y}}return Q(o)}function Ae(e,t){const n=ve(e);return!(n===t||!se(n)||fe(n))&&("fixed"===me(n).position||Ae(n,t))}function Me(e,t,n){const o=le(t),r=ie(t),i="fixed"===n,a=Ie(e,!0,i,t);let s={scrollLeft:0,scrollTop:0};const l=_(0);if(o||!o&&!i)if(("body"!==oe(t)||ue(r))&&(s=ge(t)),o){const e=Ie(t,!0,i,t);l.x=e.x+t.clientLeft,l.y=e.y+t.clientTop}else r&&(l.x=Oe(r));return{x:a.left+s.scrollLeft-l.x,y:a.top+s.scrollTop-l.y,width:a.width,height:a.height}}function Re(e,t){return le(e)&&"fixed"!==me(e).position?t?t(e):e.offsetParent:null}function Pe(e,t){const n=re(e);if(!le(e)||Te(e))return n;let o=Re(e,t);for(;o&&de(o)&&"static"===me(o).position;)o=Re(o,t);return o&&("html"===oe(o)||"body"===oe(o)&&"static"===me(o).position&&!pe(o))?n:o||function(e){let t=ve(e);for(;le(t)&&!fe(t);){if(pe(t))return t;t=ve(t)}return null}(e)||n}const De={convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{elements:t,rect:n,offsetParent:o,strategy:r}=e;const i="fixed"===r,a=ie(o),s=!!t&&Te(t.floating);if(o===a||s&&i)return n;let l={scrollLeft:0,scrollTop:0},c=_(1);const u=_(0),d=le(o);if((d||!d&&!i)&&(("body"!==oe(o)||ue(a))&&(l=ge(o)),le(o))){const e=Ie(o);c=xe(o),u.x=e.x+o.clientLeft,u.y=e.y+o.clientTop}return{width:n.width*c.x,height:n.height*c.y,x:n.x*c.x-l.scrollLeft*c.x+u.x,y:n.y*c.y-l.scrollTop*c.y+u.y}},getDocumentElement:ie,getClippingRect:function(e){let{element:t,boundary:n,rootBoundary:o,strategy:r}=e;const i="clippingAncestors"===n?function(e,t){const n=t.get(e);if(n)return n;let o=be(e,[],!1).filter((e=>se(e)&&"body"!==oe(e))),r=null;const i="fixed"===me(e).position;let a=i?ve(e):e;for(;se(a)&&!fe(a);){const t=me(a),n=pe(a);n||"fixed"!==t.position||(r=null),(i?!n&&!r:!n&&"static"===t.position&&r&&["absolute","fixed"].includes(r.position)||ue(a)&&!n&&Ae(e,a))?o=o.filter((e=>e!==a)):r=t,a=ve(a)}return t.set(e,o),o}(t,this._c):[].concat(n),a=[...i,o],s=a[0],l=a.reduce(((e,n)=>{const o=Le(t,n,r);return e.top=j(o.top,e.top),e.right=N(o.right,e.right),e.bottom=N(o.bottom,e.bottom),e.left=j(o.left,e.left),e}),Le(t,s,r));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}},getOffsetParent:Pe,getElementRects:async function(e){const t=this.getOffsetParent||Pe,n=this.getDimensions;return{reference:Me(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,...await n(e.floating)}}},getClientRects:function(e){return Array.from(e.getClientRects())},getDimensions:function(e){const{width:t,height:n}=we(e);return{width:t,height:n}},getScale:xe,isElement:se,isRTL:function(e){return"rtl"===me(e).direction}};function Ne(e,t,n,o){void 0===o&&(o={});const{ancestorScroll:r=!0,ancestorResize:i=!0,elementResize:a="function"==typeof ResizeObserver,layoutShift:s="function"==typeof IntersectionObserver,animationFrame:l=!1}=o,c=ke(e),u=r||i?[...c?be(c):[],...be(t)]:[];u.forEach((e=>{r&&e.addEventListener("scroll",n,{passive:!0}),i&&e.addEventListener("resize",n)}));const d=c&&s?function(e,t){let n,o=null;const r=ie(e);function i(){var e;clearTimeout(n),null==(e=o)||e.disconnect(),o=null}return function a(s,l){void 0===s&&(s=!1),void 0===l&&(l=1),i();const{left:c,top:u,width:d,height:p}=e.getBoundingClientRect();if(s||t(),!d||!p)return;const h={rootMargin:-B(u)+"px "+-B(r.clientWidth-(c+d))+"px "+-B(r.clientHeight-(u+p))+"px "+-B(c)+"px",threshold:j(0,N(1,l))||1};let f=!0;function m(e){const t=e[0].intersectionRatio;if(t!==l){if(!f)return a();t?a(!1,t):n=setTimeout((()=>{a(!1,1e-7)}),100)}f=!1}try{o=new IntersectionObserver(m,{...h,root:r.ownerDocument})}catch(g){o=new IntersectionObserver(m,h)}o.observe(e)}(!0),i}(c,n):null;let p,h=-1,f=null;a&&(f=new ResizeObserver((e=>{let[o]=e;o&&o.target===c&&f&&(f.unobserve(t),cancelAnimationFrame(h),h=requestAnimationFrame((()=>{var e;null==(e=f)||e.observe(t)}))),n()})),c&&!l&&f.observe(c),f.observe(t));let m=l?Ie(e):null;return l&&function t(){const o=Ie(e);!m||o.x===m.x&&o.y===m.y&&o.width===m.width&&o.height===m.height||n();m=o,p=requestAnimationFrame(t)}(),n(),()=>{var e;u.forEach((e=>{r&&e.removeEventListener("scroll",n),i&&e.removeEventListener("resize",n)})),null==d||d(),null==(e=f)||e.disconnect(),f=null,l&&cancelAnimationFrame(p)}}const je=function(e){return void 0===e&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:o,placement:r}=t,{mainAxis:i=!0,crossAxis:a=!1,limiter:s={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...l}=q(e,t),c={x:n,y:o},u=await te(t,l),d=Y(W(r)),p=G(d);let h=c[p],f=c[d];if(i){const e="y"===p?"bottom":"right";h=z(h+u["y"===p?"top":"left"],h,h-u[e])}if(a){const e="y"===d?"bottom":"right";f=z(f+u["y"===d?"top":"left"],f,f-u[e])}const m=s.fn({...t,[p]:h,[d]:f});return{...m,data:{x:m.x-n,y:m.y-o}}}}},Fe=function(e){return void 0===e&&(e={}),{name:"flip",options:e,async fn(t){var n,o;const{placement:r,middlewareData:i,rects:a,initialPlacement:s,platform:l,elements:c}=t,{mainAxis:u=!0,crossAxis:d=!0,fallbackPlacements:p,fallbackStrategy:h="bestFit",fallbackAxisSideDirection:f="none",flipAlignment:m=!0,...g}=q(e,t);if(null!=(n=i.arrow)&&n.alignmentOffset)return{};const v=W(r),y=W(s)===s,b=await(null==l.isRTL?void 0:l.isRTL(c.floating)),w=p||(y||!m?[Z(s)]:function(e){const t=Z(e);return[K(e),t,K(t)]}(s));p||"none"===f||w.push(...function(e,t,n,o){const r=V(e);let i=function(e,t,n){const o=["left","right"],r=["right","left"],i=["top","bottom"],a=["bottom","top"];switch(e){case"top":case"bottom":return n?t?r:o:t?o:r;case"left":case"right":return t?i:a;default:return[]}}(W(e),"start"===n,o);return r&&(i=i.map((e=>e+"-"+r)),t&&(i=i.concat(i.map(K)))),i}(s,m,f,b));const k=[s,...w],x=await te(t,g),S=[];let C=(null==(o=i.flip)?void 0:o.overflows)||[];if(u&&S.push(x[v]),d){const e=function(e,t,n){void 0===n&&(n=!1);const o=V(e),r=J(e),i=X(r);let a="x"===r?o===(n?"end":"start")?"right":"left":"start"===o?"bottom":"top";return t.reference[i]>t.floating[i]&&(a=Z(a)),[a,Z(a)]}(r,a,b);S.push(x[e[0]],x[e[1]])}if(C=[...C,{placement:r,overflows:S}],!S.every((e=>e<=0))){var I,E;const e=((null==(I=i.flip)?void 0:I.index)||0)+1,t=k[e];if(t)return{data:{index:e,overflows:C},reset:{placement:t}};let n=null==(E=C.filter((e=>e.overflows[0]<=0)).sort(((e,t)=>e.overflows[1]-t.overflows[1]))[0])?void 0:E.placement;if(!n)switch(h){case"bestFit":{var T;const e=null==(T=C.map((e=>[e.placement,e.overflows.filter((e=>e>0)).reduce(((e,t)=>e+t),0)])).sort(((e,t)=>e[1]-t[1]))[0])?void 0:T[0];e&&(n=e);break}case"initialPlacement":n=s}if(r!==n)return{reset:{placement:n}}}return{}}}},Be=e=>({name:"arrow",options:e,async fn(t){const{x:n,y:o,placement:r,rects:i,platform:a,elements:s,middlewareData:l}=t,{element:c,padding:u=0}=q(e,t)||{};if(null==c)return{};const d=$(u),p={x:n,y:o},h=J(r),f=X(h),m=await a.getDimensions(c),g="y"===h,v=g?"top":"left",y=g?"bottom":"right",b=g?"clientHeight":"clientWidth",w=i.reference[f]+i.reference[h]-p[h]-i.floating[f],k=p[h]-i.reference[h],x=await(null==a.getOffsetParent?void 0:a.getOffsetParent(c));let S=x?x[b]:0;S&&await(null==a.isElement?void 0:a.isElement(x))||(S=s.floating[b]||i.floating[f]);const C=w/2-k/2,I=S/2-m[f]/2-1,E=N(d[v],I),T=N(d[y],I),O=E,L=S-m[f]-T,A=S/2-m[f]/2+C,M=z(O,A,L),R=!l.arrow&&null!=V(r)&&A!==M&&i.reference[f]/2-(A{const o=new Map,r={platform:De,...n},i={...r.platform,_c:o};return(async(e,t,n)=>{const{placement:o="bottom",strategy:r="absolute",middleware:i=[],platform:a}=n,s=i.filter(Boolean),l=await(null==a.isRTL?void 0:a.isRTL(t));let c=await a.getElementRects({reference:e,floating:t,strategy:r}),{x:u,y:d}=ee(c,o,l),p=o,h={},f=0;for(let m=0;me.length)&&(t=e.length);for(var n=0,o=new Array(t);n'):""),i.appendChild(a),t.repositionHotspot(e,n),r=a,t.elementToTooltipMap.set(e,n)}else r=e;var s=t.createTooltip(r,n.html,n);t.elementToFloatingUIMap.set(e,s)}}})),Ve(this,"updateFilteredTooltips",(function(){t.filteredTooltips=t.getFilteredTooltips(),t.checkForTooltips()})),Ve(this,"getFilteredTooltips",(function(){if(!t.tooltips)return[];var e=window.location.href;return t.tooltips.filter((function(t){return!t.page||0===t.page.length||!!Ue(e,t.page,t.pageType)}))})),Ve(this,"checkForTooltips",(function(){for(var e=0;e0&&this.filteredTooltips.forEach((function(n){n.selector&&e.matches(n.selector)&&t.linkTooltip(e,n)}))}},{key:"start",value:function(){var e=this,t=this;if(window){var n,o,r,i=(n=t.updateHotspotPositions.bind(t),o=250,r=null,function(){if(!r){var e=this,t=arguments;r=setTimeout((function(){n.call.apply(n,[e].concat(ze(t))),r=null}),o)}});window.addEventListener("resize",i),window.requestAnimationFrame((function(){e.observer=new MutationObserver((function(n){t.lastUrl!==window.location.href&&(t.lastUrl=window.location.href,t.filteredTooltips=t.getFilteredTooltips()),n.forEach((function(n){if("attributes"===n.type){var o=n.target;o.nodeType===Node.ELEMENT_NODE&&(o.querySelector("[data-gleap-tooltip-hotspot]")||o.hasAttribute("data-gleap-tooltip-mode")||o.hasAttribute("data-gleap-tooltip"))&&t.updateHotspotPositions()}n.addedNodes.forEach((function(e){e.nodeType===Node.ELEMENT_NODE&&t.processNodeInsertion(e)})),n.removedNodes.forEach((function(t){if(t.nodeType===Node.ELEMENT_NODE&&e.elementToFloatingUIMap.has(t)){var n=e.elementToFloatingUIMap.get(t);n&&(n.tooltip&&n.tooltip.remove(),n.cleanup(),e.elementToFloatingUIMap.delete(t))}e.elementToTooltipMap.has(t)&&e.elementToTooltipMap.delete(t)}))}))})),e.observer.observe(document.body,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["style","class"]})}))}}},{key:"updateHotspotPositions",value:function(){var e=this;document.querySelectorAll("[data-gleap-tooltip-mode='hotspot']").forEach((function(t){var n=e.elementToTooltipMap.get(t);n&&e.repositionHotspot(t,n)}))}},{key:"createTooltip",value:function(e,t,n){var o=document.createElement("div");o.className="gleap-tooltip",o.innerHTML='
\n '.concat(t,'\n
\n \n \n \n
\n
'),document.body.appendChild(o);var r,i=o.querySelector(".gleap-tooltip-arrow"),a=Ne(e,o,(function(){_e(e,o,{placement:"left"===n.posX?"left":"right",middleware:[ne(10),Fe(),je(),Be({element:i})]}).then((function(e){var t=e.x,n=e.y,r=e.middlewareData,a=e.placement;try{if(Object.assign(o.style,{left:"".concat(t,"px"),top:"".concat(n,"px")}),r.arrow){var s={left:"",top:"",transform:""};null!=r.arrow.x&&(s.left="".concat(r.arrow.x,"px"),"bottom"===a?(s.transform="translateY(-7px) rotate(180deg)",s.top="".concat(-20,"px")):"top"===a&&(s.transform="translateY(7px) rotate(0deg)",s.top="100%")),null!=r.arrow.y&&(s.top="".concat(r.arrow.y,"px"),"right"===a?(s.transform="translateX(-7px) rotate(90deg)",s.left="".concat(-20,"px")):"left"===a&&(s.transform="translateX(7px) rotate(270deg)",s.left="100%")),Object.assign(i.style,s)}}catch(l){}}))}));function s(){clearTimeout(r),o.style.visibility="visible",o.style.opacity="1",o.style.pointerEvents="auto"}function l(){r=setTimeout((function(){o.style.opacity="0",setTimeout((function(){o.style.visibility="hidden",o.style.pointerEvents="none"}),200)}),500)}return e.addEventListener("mouseenter",s),e.addEventListener("mouseleave",l),o.addEventListener("mouseenter",s),o.addEventListener("mouseleave",l),{cleanup:a,tooltip:o}}},{key:"canEmbed",value:function(e){var t=new Set(["area","base","br","embed","hr","img","input","source","track","wbr","canvas"]);return e&&!t.has(e.tagName.toLowerCase())}},{key:"destroy",value:function(){this.observer&&(this.observer.disconnect(),this.observer=null),this.resizeListener&&(window.removeEventListener("resize",this.resizeListener),this.resizeListener=null),document.querySelectorAll(".gleap-tooltip").forEach((function(e){return e.remove()})),document.querySelectorAll("[data-gleap-tooltip-anchor]").forEach((function(e){return e.remove()})),document.querySelectorAll("[data-gleap-tooltip-hotspot]").forEach((function(e){return e.remove()})),document.querySelectorAll("[data-gleap-tooltip]").forEach((function(e){return e.removeAttribute("data-gleap-tooltip")})),document.querySelectorAll("[data-gleap-tooltip-mode]").forEach((function(e){return e.removeAttribute("data-gleap-tooltip-mode")})),this.elementToFloatingUIMap=new WeakMap,this.elementToTooltipMap=new WeakMap,this.tooltips=[],this.filteredTooltips=[]}},{key:"repositionHotspot",value:function(e,t){if(e&&t){var n=e.getAttribute("data-gleap-tooltip");if(n){var o=document.querySelector('[data-gleap-tooltip-hotspot="'.concat(n,'"]'));if(o){t.posX||(t.posX="right"),t.posY||(t.posY="center"),t.offsetX||(t.offsetX=4),t.offsetY||(t.offsetY=0);var r=e.getBoundingClientRect();try{var i=document.createRange();i.selectNodeContents(e);var a=window.getComputedStyle(e),s=i.getBoundingClientRect().width+parseFloat(a.paddingLeft);s0&&void 0!==arguments[0]?arguments[0]:0,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];t.session&&t.session.gleapHash&&Tn.notifyEvent("unregister-pushmessage-group","gleapuser-".concat(t.session.gleapHash));try{I("session-".concat(t.sdkKey),null)}catch(r){}if(t.useCookies)try{!function(e){try{var t=S(window.location.host.split(":")[0]);document.cookie=e+"=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT; Domain="+t}catch(r){}}("session-".concat(t.sdkKey))}catch(r){}if(t.ready=!1,t.session={gleapId:null,gleapHash:null,name:"",email:"",userId:"",phone:"",value:0},Zt.getInstance().sendMessage({name:"session-cleared"},!0),jh.getInstance().clearAllNotifications(!1),jh.getInstance().setNotificationCount(0),qh.getInstance().removeBannerUI(),Kh.getInstance().hideModal(),n&&!isNaN(e)){var o=10*Math.pow(e,2);setTimeout((function(){t.startSession(e+1)}),1e3*o)}})),$e(this,"validateSession",(function(e){var n;if(e&&e.gleapId){var o=!1;(null===(n=t.session)||void 0===n?void 0:n.gleapId)!==(null==e?void 0:e.gleapId)&&(o=!0),t.session&&t.session.gleapHash&&Tn.notifyEvent("unregister-pushmessage-group","gleapuser-".concat(t.session.gleapHash)),I("session-".concat(t.sdkKey),e),t.useCookies&&function(e,t,n){try{var o="";if(n){var r=new Date;r.setTime(r.getTime()+24*n*60*60*1e3),o="; expires="+r.toUTCString()}var i=S(window.location.host.split(":")[0]);document.cookie=e+"="+(t||"")+o+"; path=/; domain="+i}catch(a){}}("session-".concat(t.sdkKey),encodeURIComponent(JSON.stringify(e)),365),t.session=e,t.ready=!0,t.session&&t.session.gleapHash&&Tn.notifyEvent("register-pushmessage-group","gleapuser-".concat(t.session.gleapHash)),o&&(setTimeout((function(){D.getInstance().clearCache(),it.getInstance().restart();var e=Xe.getInstance();if(e){try{e.destroy()}catch(t){}e.load()}}),0),"function"==typeof window.dispatchEvent&&window.dispatchEvent(new CustomEvent("session-updated"))),t.notifySessionReady()}})),$e(this,"startSession",(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;try{if(t.useCookies){var n=function(e){try{for(var t=e+"=",n=document.cookie.split(";"),o=0;o0)){var r=C("session-".concat(t.sdkKey));r&&t.validateSession(r)}var i=t,a=new XMLHttpRequest;a.open("POST",i.apiUrl+"/sessions"),a.setRequestHeader("Content-Type","application/json;charset=UTF-8"),a.setRequestHeader("Api-Token",i.sdkKey);try{t.session&&t.session.gleapId&&t.session.gleapHash&&(a.setRequestHeader("Gleap-Id",t.session.gleapId),a.setRequestHeader("Gleap-Hash",t.session.gleapHash))}catch(s){}a.onreadystatechange=function(t){if(4===a.readyState)if(200===a.status||201===a.status)try{var n=JSON.parse(a.responseText);i.validateSession(n)}catch(s){}else 429!==a.status&&i.clearSession(e,!0)},a.send(JSON.stringify({lang:kh.getInstance().getActiveLanguage()}))})),$e(this,"checkIfSessionNeedsUpdate",(function(e,n){if(!t.session||!t.session.userId||!e)return!0;try{if(t.session.userId.toString()!==e.toString())return!0}catch(o){}return t.checkIfSessionDataNeedsUpdate(n)})),$e(this,"checkIfSessionDataNeedsUpdate",(function(e){if(e)for(var n=Object.keys(e),o=0;o0)for(var e=0;e2)&&0!==t.streamedEventArray.length&&t.socket&&t.socket.readyState===t.socket.OPEN){var e=t;t.streamingEvents=!0;var n=new XMLHttpRequest;n.open("POST",et.getInstance().apiUrl+"/sessions/ping"),n.setRequestHeader("Content-Type","application/json;charset=UTF-8"),et.getInstance().injectSession(n),n.onerror=function(){e.errorCount++,e.streamingEvents=!1},n.onreadystatechange=function(t){4===n.readyState&&(200===n.status||201===n.status?e.errorCount=0:e.errorCount++,e.streamingEvents=!1)};var o=nn.getInstance().getSessionDuration();n.send(JSON.stringify({time:o,events:t.streamedEventArray,opened:Zt.getInstance().isOpened(),type:"js",sdkVersion:"14.8.11",ws:!0})),t.streamedEventArray=[]}})),this.handleOpenBound=this.handleOpen.bind(this),this.handleErrorBound=this.handleError.bind(this),this.handleMessageBound=this.handleMessage.bind(this),this.handleCloseBound=this.handleClose.bind(this)}var t,n,o;return t=e,o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],(n=[{key:"cleanupWebSocket",value:function(){this.connectionTimeout&&(clearTimeout(this.connectionTimeout),this.connectionTimeout=null),this.pingWS&&clearInterval(this.pingWS),this.socket&&(this.socket.removeEventListener("open",this.handleOpenBound),this.socket.removeEventListener("error",this.handleErrorBound),this.socket.removeEventListener("message",this.handleMessageBound),this.socket.removeEventListener("close",this.handleCloseBound),this.socket.close(),this.socket=null)}},{key:"initWebSocket",value:function(){this.cleanupWebSocket(),this.connectedWebSocketGleapId=et.getInstance().session.gleapId,et.getInstance().session&&et.getInstance().sdkKey&&(this.socket=new WebSocket("".concat(et.getInstance().wsApiUrl,"?gleapId=").concat(et.getInstance().session.gleapId,"&gleapHash=").concat(et.getInstance().session.gleapHash,"&apiKey=").concat(et.getInstance().sdkKey,"&sdkVersion=").concat("14.8.11")),this.socket.addEventListener("open",this.handleOpenBound),this.socket.addEventListener("message",this.handleMessageBound),this.socket.addEventListener("error",this.handleErrorBound),this.socket.addEventListener("close",this.handleCloseBound))}},{key:"handleOpen",value:function(e){var t=this;this.pingWS=setInterval((function(){t.socket.readyState===t.socket.OPEN&&(t.socket.send("PING"),t.socket.send(9))}),1e4),this.connectionTimeout&&(clearTimeout(this.connectionTimeout),this.connectionTimeout=null)}},{key:"handleMessage",value:function(e){this.processMessage(JSON.parse(e.data))}},{key:"handleError",value:function(e){}},{key:"handleClose",value:function(e){var t=this;setTimeout((function(){t.initWebSocket()}),5e3)}},{key:"processMessage",value:function(e){try{if("update"===e.name){var t=e.data,n=t.a,o=t.u,r=Zt.getInstance().isOpened();if(n){var i=["banner","modal"],a=n.filter((function(e){var t;return!r||i.includes(null==e||null===(t=e.actionType)||void 0===t?void 0:t.toLowerCase())}));Wm.getInstance().performActions(a)}null!=o&&jh.getInstance().setNotificationCount(o)}"checklist"===e.name&&null!=e&&e.data&&window&&"function"==typeof window.dispatchEvent&&window.dispatchEvent(new CustomEvent("checkListUpdate",{detail:e.data}))}catch(s){}}},{key:"getEventArray",value:function(){return this.eventArray}},{key:"stop",value:function(){this.cleanupMainLoop()}},{key:"resetErrorCountLoop",value:function(){var e=this;setInterval((function(){e.errorCount=0}),6e4)}},{key:"cleanupMainLoop",value:function(){this.mainLoopTimeout&&(clearInterval(this.mainLoopTimeout),this.mainLoopTimeout=null)}},{key:"restart",value:function(){this.connectedWebSocketGleapId!==et.getInstance().session.gleapId&&this.initWebSocket(),this.cleanupMainLoop(),this.trackInitialEvents(),this.runEventStreamLoop()}},{key:"start",value:function(){this.startPageListener(),this.resetErrorCountLoop()}},{key:"trackInitialEvents",value:function(){e.getInstance().logEvent("sessionStarted"),e.getInstance().logCurrentPage()}},{key:"logCurrentPage",value:function(){if(!Wm.getInstance().disablePageTracking){var e=window.location.href;e&&e!==this.lastUrl&&(this.lastUrl=e,this.logEvent("pageView",{page:e}))}}},{key:"startPageListener",value:function(){var e=this;setInterval((function(){e.logCurrentPage()}),1e3)}},{key:"logEvent",value:function(e,t){var n={name:e,date:new Date};t&&(n.data=k(t)),this.eventArray.push(n),this.streamedEventArray.push(n),this.eventArray.length>this.eventMaxLength&&this.eventArray.shift(),this.streamedEventArray.length>this.eventMaxLength&&this.streamedEventArray.shift()}}])&&nt(t.prototype,n),o&&nt(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function at(e){return at="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},at(e)}function st(e,t){for(var n=0;n0)for(var e=0;e=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var l=o.call(a,"catchLoc"),c=o.call(a,"finallyLoc");if(l&&c){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&o.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),L(n),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var o=n.completion;if("throw"===o.type){var r=o.arg;L(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,o){return this.delegate={iterator:M(t),resultName:n,nextLoc:o},"next"===this.method&&(this.arg=e),g}},t}function ft(e,t,n,o,r,i,a){try{var s=e[i](a),l=s.value}catch(c){return void n(c)}s.done?t(l):Promise.resolve(l).then(o,r)}function mt(e){return function(){var t=this,n=arguments;return new Promise((function(o,r){var i=e.apply(t,n);function a(e){ft(i,o,r,a,s,"next",e)}function s(e){ft(i,o,r,a,s,"throw",e)}a(void 0)}))}}var gt=function(e){var t="",n=window.document.doctype;if(n&&(t=""),e&&e.childNodes&&e.childNodes.length>0)for(var o=0;o1?t-1:0),r=1;r0||t.scrollLeft>0)&&(s.setAttribute("bb-scrollpos",!0),s.setAttribute("bb-scrolltop",t.scrollTop),s.setAttribute("bb-scrollleft",t.scrollLeft)),"SELECT"!==d&&"TEXTAREA"!==d&&"INPUT"!==d||(h=t.value,("value"===t.getAttribute("gleap-ignore")||t.classList.contains("gl-mask"))&&(h=new Array(h.length+1).join("*")),s.setAttribute("bb-data-value",h),"checkbox"!==t.type&&"radio"!==t.type||!t.checked||s.setAttribute("bb-data-checked",!0))),r.appendChild(s),!t.shadowRoot){e.next=29;break}return f=n,n++,e.next=27,a(t.shadowRoot.firstChild,s,f);case 27:Ct(t.shadowRoot,s,f),void 0!==s.setAttribute&&s.setAttribute("bb-shadow-parent",f);case 29:return e.next=31,a(t.firstChild,s);case 31:case"end":return e.stop()}}),e,null,[[7,17]])})));return function(t,n,o){return e.apply(this,arguments)}}(),r=document.createDocumentFragment(),e.next=5,o(t,r);case 5:return(i=r.querySelector("head"))||(i=r),Ct(window.document,i),e.abrupt("return",r);case 9:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),Tt=function(e){return new Promise(function(){var t=mt(ht().mark((function t(n,o){var r,i,a,s,l,c,u,d,p,h,f,m,g,v,y;return ht().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:for(r=window.document.querySelectorAll("style, link"),i=0;i0){for(c=l.childNodes;c.length>0;)l.parentNode.insertBefore(c[0],l);l.remove()}for(u=a.querySelectorAll("script, noscript"),i=0;i=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var l=o.call(a,"catchLoc"),c=o.call(a,"finallyLoc");if(l&&c){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&o.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),L(n),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var o=n.completion;if("throw"===o.type){var r=o.arg;L(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,o){return this.delegate={iterator:M(t),resultName:n,nextLoc:o},"next"===this.method&&(this.arg=e),g}},t}function At(e,t,n,o,r,i,a){try{var s=e[i](a),l=s.value}catch(c){return void n(c)}s.done?t(l):Promise.resolve(l).then(o,r)}function Mt(e){return function(){var t=this,n=arguments;return new Promise((function(o,r){var i=e.apply(t,n);function a(e){At(i,o,r,a,s,"next",e)}function s(e){At(i,o,r,a,s,"throw",e)}a(void 0)}))}}function Rt(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return Pt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Pt(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0,r=function(){};return{s:r,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){s=!0,i=e},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw i}}}}function Pt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n0?t[0]:null}},{key:"getFirstAudioTrack",value:function(e){if(!e)return null;var t=e.getAudioTracks();return t.length>0?t[0]:null}},{key:"startScreenRecording",value:(a=Mt(Lt().mark((function t(){var n,o;return Lt().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia&&!this.isRecording){t.next=4;break}return this.available=!1,this.rerender(),t.abrupt("return");case 4:return t.prev=4,t.next=7,navigator.mediaDevices.getDisplayMedia({video:{width:{ideal:Math.min(window.screen.width,e.MAX_WIDTH)},height:{ideal:Math.min(window.screen.height,e.MAX_HEIGHT)},frameRate:{ideal:e.IDEAL_FRAME_RATE,max:e.MAX_FRAME_RATE},displaySurface:"monitor"},audio:!1,selfBrowserSurface:"include"});case 7:if(n=t.sent,this._displayStream=n,this._displayVideoTrack=this.getFirstVideoTrack(n),this.audioMuted){t.next=15;break}return t.next=13,this.startAudioRecording();case 13:t.next=19;break;case 15:this.audioAvailable=!1,o=this.createMediaStream([this._displayVideoTrack]),this.stream=o,this.handleRecord({stream:o});case 19:this.rerender(),t.next=26;break;case 22:t.prev=22,t.t0=t.catch(4),window.alert(this.permissionErrorText),this.rerender();case 26:case"end":return t.stop()}}),t,this,[[4,22]])}))),function(){return a.apply(this,arguments)})},{key:"stopScreenRecording",value:function(){if(this.mediaRecorder&&this.stream&&this.isRecording){this.recordingTimer&&(clearInterval(this.recordingTimer),this.recordingTimer=null);try{this.mediaRecorder.stop()}catch(e){}this.stopStreamTracks(this.stream),this._displayStream&&(this.stopStreamTracks(this._displayStream),this._displayStream=null),this._micStream&&(this.stopStreamTracks(this._micStream),this._micStream=null),this._displayVideoTrack=null,this.rerender()}}},{key:"startAudioRecording",value:(i=Mt(Lt().mark((function e(){var t,n,o,r;return Lt().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._displayVideoTrack){e.next=2;break}return e.abrupt("return");case 2:return e.prev=2,e.next=5,navigator.mediaDevices.getUserMedia({audio:{echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0},video:!1});case 5:t=e.sent,this._micStream=t,n=this.getFirstAudioTrack(t),this.audioMuted=!1,this.audioAvailable=!!n,o=this.createMediaStream([this._displayVideoTrack,n]),this.stream=o,this.handleRecord({stream:o}),this.rerender(),e.next=23;break;case 16:e.prev=16,e.t0=e.catch(2),this.audioAvailable=!1,r=this.createMediaStream([this._displayVideoTrack]),this.stream=r,this.handleRecord({stream:r}),this.rerender();case 23:case"end":return e.stop()}}),e,this,[[2,16]])}))),function(){return i.apply(this,arguments)})},{key:"toggleAudio",value:function(){if(this.audioMuted=!this.audioMuted,this.rerender(),this.stream)for(var e=this.stream.getAudioTracks(),t=0;t0?i.innerHTML=o.formatTime(e):(i.innerHTML="2:00",o.stopScreenRecording()):e<=0&&o.stopScreenRecording()}),e.TIMER_UPDATE_INTERVAL),this.mediaRecorder.ondataavailable=function(e){e.data&&e.data.size>0&&r.push(e.data)};var a=this.getFirstVideoTrack(n);a&&(a.onended=function(){o.prepareRecording(r)}),this.mediaRecorder.onstop=function(){o.prepareRecording(r)},this.mediaRecorder.start(e.CHUNK_INTERVAL),o.rerender()}},{key:"prepareRecording",value:function(t){var n=this.getSupportedMimeType(),o=new Blob(t,{type:n}),r=n.includes("mp4")?"mp4":"webm";this.file=new File([o],"screen-recording.".concat(r),{type:n});var i=document.querySelector(e.SELECTORS.PREVIEW_VIDEO);i&&(i.src=URL.createObjectURL(o),this.audioAvailable=this.stream?this.stream.getAudioTracks().length>0:this.audioAvailable,this.isRecording=!1,this.rerender())}}],o=[{key:"uploadScreenRecording",value:(r=Mt(Lt().mark((function e(t){return Lt().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(null!=t){e.next=2;break}return e.abrupt("return",null);case 2:return e.abrupt("return",new Promise((function(e,n){var o=new XMLHttpRequest;o.open("POST",et.getInstance().apiUrl+"/uploads/sdk"),et.getInstance().injectSession(o);var r=new FormData;r.append("file",t),o.onerror=function(){n(new Error("Network error during file upload"))},o.onreadystatechange=function(){4==o.readyState&&(200==o.status?e(JSON.parse(o.response).fileUrl):n(new Error("Upload failed with status ".concat(o.status))))},o.send(r)})));case 3:case"end":return e.stop()}}),e)}))),function(e){return r.apply(this,arguments)})}],n&&Dt(t.prototype,n),o&&Dt(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Bt(e){return Bt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Bt(e)}function _t(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Ut(e){for(var t=1;t0&&(e.tags=t),this.excludeData)for(var n=Object.keys(this.excludeData),o=0;oe.length)&&(t=e.length);for(var n=0,o=new Array(t);n0)if(t){var n=window.open(e,"_blank");n&&n.focus()}else window.location.href=e})),Jt(this,"autoWhiteListCookieManager",(function(){window&&window.cmp_block_ignoredomains&&window.cmp_block_ignoredomains.concat(["messenger-app.gleap.io"])})),Jt(this,"injectFrame",(function(){t.injectedFrame||(t.injectedFrame=!0,t.autoWhiteListCookieManager(),E((function(){dt.getInstance().onConfigLoaded((function(){dt.getInstance().applyStylesFromConfig();var e=document.createElement("div");e.className="gleap-frame-container gleap-frame-container--hidden gl-block",e.innerHTML='
'),document.body.appendChild(e),t.gleapFrameContainer=e,t.gleapFrame=document.querySelector(".gleap-frame"),t.updateFrameStyle(),"widget"===t.appMode&&t.showFrameContainer(!0)}))})))})),Jt(this,"showImage",(function(e){E((function(){var t=document.createElement("div");t.className="gleap-image-view",t.innerHTML='
\n \n
'),document.body.appendChild(t);var n=function(){t.remove()};t.querySelector(".gleap-image-view-close").addEventListener("click",(function(){n()})),t.addEventListener("click",(function(e){e.target===t&&n()}))}))})),Jt(this,"updateFrameStyle",(function(){if(t.gleapFrameContainer){for(var e="gleap-frame-container--survey",n="gleap-frame-container--extended",o="gleap-frame-container--survey-full",r="gleap-frame-container--classic",i="gleap-frame-container--classic-left",s="gleap-frame-container--modern-left",l="gleap-frame-container--no-button",c=[r,i,n,s,l,e,o],u=0;u0&&void 0!==arguments[0]&&arguments[0];"survey_web"!==this.appMode&&(this.hideMarkerManager(),this.gleapFrameContainer&&(this.gleapFrameContainer.classList.add("gleap-frame-container--hidden"),this.gleapFrameContainer.classList.remove("gleap-frame-container--animate")),e&&this.sendMessage({name:"reset-routes",data:{}}),this.widgetOpened=!1,this.updateWidgetStatus(),a.getInstance().updateFeedbackButtonState(),Tn.notifyEvent("close"),jh.getInstance().reloadNotificationsFromCache(),this.unregisterEscListener(),"undefined"!=typeof window&&void 0!==window.focus&&window.focus())}},{key:"sendMessage",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];try{this.gleapFrame=document.querySelector(".gleap-frame"),this.comReady&&this.gleapFrame&&this.gleapFrame.contentWindow?this.gleapFrame.contentWindow.postMessage(JSON.stringify(e),"*"):t&&this.queue.push(e)}catch(n){}}},{key:"sendSessionUpdate",value:function(){this.sendMessage({name:"session-update",data:{sessionData:et.getInstance().getSession(),apiUrl:et.getInstance().apiUrl,sdkKey:et.getInstance().sdkKey}})}},{key:"sendConfigUpdate",value:function(){this.comReady&&(this.sendMessage({name:"config-update",data:{config:dt.getInstance().getFlowConfig(),aiTools:dt.getInstance().getAiTools(),overrideLanguage:kh.getInstance().getOverrideLanguage()}}),this.updateFrameStyle())}},{key:"showDrawingScreen",value:function(e){var t=this;this.hideWidget(),this.markerManager=new gh(e),this.markerManager.show((function(e){e||t.hideMarkerManager(),t.showWidget()}))}},{key:"workThroughQueue",value:function(){var e=Gt(this.queue);this.queue=[];for(var t=0;t0&&(n.tags=o),e.sendMessage({name:"collect-ticket-data",data:n})}if("height-update"===t.name){e.frameHeight=t.data;var r=document.querySelector(".gleap-frame-container-inner");"survey"!==e.appMode&&"survey_full"!==e.appMode&&"survey_web"!==e.appMode||!r||(r.style.maxHeight="".concat(e.frameHeight,"px"))}if("notify-event"===t.name&&Tn.notifyEvent(t.data.type,t.data.data),"cleanup-drawings"===t.name&&e.hideMarkerManager(),"open-url"===t.name){var i=t.data,a=!!t.newTab;e.urlHandler(i,a)}var s;if("start-product-tour"===t.name&&Wm.startProductTour(null===(s=t.data)||void 0===s?void 0:s.tourId,!0),"run-custom-action"===t.name&&Dn.triggerCustomAction(t.data,{shareToken:t.shareToken}),"close-widget"===t.name&&e.hideWidget(),"tool-execution"===t.name&&Tn.notifyEvent("tool-execution",t.data),"send-feedback"===t.name){var l=t.data.formData,c=t.data.action,u=t.data.outboundId,d=t.data.spamToken;new Wt(c.feedbackType,"MEDIUM",l,!1,c.excludeData,u,d).sendFeedback().then((function(t){if(e.sendMessage({name:"feedback-sent",data:t}),Tn.notifyEvent("feedback-sent",l),u&&u.length>0){Tn.notifyEvent("outbound-sent",{outboundId:u,outbound:c,formData:l});try{delete l.reportedBy}catch(n){}Wm.trackEvent("outbound-".concat(u,"-submitted"),l)}})).catch((function(t){e.sendMessage({name:"feedback-sending-failed",data:"Something went wrong, please try again."}),Tn.notifyEvent("error-while-sending")}))}"start-screen-drawing"===t.name&&e.showDrawingScreen(t.data)})),window.addEventListener("message",(function(t){if(t.origin===e.frameUrl||t.origin===qh.getInstance().bannerUrl)try{for(var n=JSON.parse(t.data),o=0;o1&&void 0!==arguments[1]?arguments[1]:"INFO";!e||e.length<=0||(this.logArray.push({log:x(e,1e3),date:new Date,priority:t}),this.logArray.length>this.logMaxLength&&this.logArray.shift())}},{key:"addLogWithArgs",value:function(e,t){if(e&&!(e.length<=0)){var n="";try{for(var o=0;o1&&void 0!==arguments[1])||arguments[1],n=x(e.innerText||"",40).replace(/(\r\n|\n|\r)/gm,"").replace(/ +(?= )/g,""),o="",r="";if(void 0!==e.getAttribute){var i=e.getAttribute("id");i&&(o=' id="'.concat(i,'"'));var a=e.getAttribute("class");a&&(r=' class="'.concat(a,'"'))}var s=(e.tagName||"").toLowerCase(),l="<",c=">";return t||(l="[",c="]"),"".concat(l).concat(s).concat(o).concat(r).concat(c).concat(n).concat(l,"/").concat(s).concat(c)}(e.target),"CLICK")}}))}}],o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],n&&pn(t.prototype,n),o&&pn(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function yn(e){return yn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},yn(e)}function bn(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{};if("flow-started"===e){var n=Wm.getInstance();n.setGlobalDataItem("webReplay",null),n.setGlobalDataItem("screenRecordingData",null),n.takeCurrentReplay()}var o=this.getInstance().eventListeners[e];if(o)for(var r=0;r((e,t,n)=>t in e?jn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,"symbol"!=typeof t?t+"":t,n),Bn=Object.defineProperty,_n=(e,t,n)=>((e,t,n)=>t in e?Bn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,"symbol"!=typeof t?t+"":t,n),Un=(e=>(e[e.Document=0]="Document",e[e.DocumentType=1]="DocumentType",e[e.Element=2]="Element",e[e.Text=3]="Text",e[e.CDATA=4]="CDATA",e[e.Comment=5]="Comment",e))(Un||{});const Hn={Node:["childNodes","parentNode","parentElement","textContent"],ShadowRoot:["host","styleSheets"],Element:["shadowRoot","querySelector","querySelectorAll"],MutationObserver:[]},zn={Node:["contains","getRootNode"],ShadowRoot:["getSelection"],Element:[],MutationObserver:["constructor"]},qn={},Wn=()=>!!globalThis.Zone;function Vn(e){if(qn[e])return qn[e];const t=globalThis[e],n=t.prototype,o=e in Hn?Hn[e]:void 0,r=Boolean(o&&o.every((e=>{var t,o;return Boolean(null==(o=null==(t=Object.getOwnPropertyDescriptor(n,e))?void 0:t.get)?void 0:o.toString().includes("[native code]"))}))),i=e in zn?zn[e]:void 0,a=Boolean(i&&i.every((e=>{var t;return"function"==typeof n[e]&&(null==(t=n[e])?void 0:t.toString().includes("[native code]"))})));if(r&&a&&!Wn())return qn[e]=t.prototype,t.prototype;try{const o=document.createElement("iframe");document.body.appendChild(o);const r=o.contentWindow;if(!r)return t.prototype;const i=r[e].prototype;return document.body.removeChild(o),i?qn[e]=i:n}catch{return n}}const Gn={};function Xn(e,t,n){var o;const r=`${e}.${String(n)}`;if(Gn[r])return Gn[r].call(t);const i=Vn(e),a=null==(o=Object.getOwnPropertyDescriptor(i,n))?void 0:o.get;return a?(Gn[r]=a,a.call(t)):t[n]}const Yn={};function Jn(e,t,n){const o=`${e}.${String(n)}`;if(Yn[o])return Yn[o].bind(t);const r=Vn(e)[n];return"function"!=typeof r?t[n]:(Yn[o]=r,r.bind(t))}const Kn={childNodes:function(e){return Xn("Node",e,"childNodes")},parentNode:function(e){return Xn("Node",e,"parentNode")},parentElement:function(e){return Xn("Node",e,"parentElement")},textContent:function(e){return Xn("Node",e,"textContent")},contains:function(e,t){return Jn("Node",e,"contains")(t)},getRootNode:function(e){return Jn("Node",e,"getRootNode")()},host:function(e){return e&&"host"in e?Xn("ShadowRoot",e,"host"):null},styleSheets:function(e){return e.styleSheets},shadowRoot:function(e){return e&&"shadowRoot"in e?Xn("Element",e,"shadowRoot"):null},querySelector:function(e,t){return Xn("Element",e,"querySelector")(t)},querySelectorAll:function(e,t){return Xn("Element",e,"querySelectorAll")(t)},mutationObserver:function(){return Vn("MutationObserver").constructor}};function Zn(e){return e.nodeType===e.ELEMENT_NODE}function $n(e){const t=e&&"host"in e&&"mode"in e&&Kn.host(e)||null;return Boolean(t&&"shadowRoot"in t&&Kn.shadowRoot(t)===e)}function Qn(e){return"[object ShadowRoot]"===Object.prototype.toString.call(e)}function eo(e){try{const n=e.rules||e.cssRules;if(!n)return null;let o=e.href;!o&&e.ownerNode&&e.ownerNode.ownerDocument&&(o=e.ownerNode.ownerDocument.location.href);const r=Array.from(n,(e=>to(e,o))).join("");return(t=r).includes(" background-clip: text;")&&!t.includes(" -webkit-background-clip: text;")&&(t=t.replace(/\sbackground-clip:\s*text;/g," -webkit-background-clip: text; background-clip: text;")),t}catch(n){return null}var t}function to(e,t){if(function(e){return"styleSheet"in e}(e)){let t;try{t=eo(e.styleSheet)||function(e){const{cssText:t}=e;if(t.split('"').length<3)return t;const n=["@import",`url(${JSON.stringify(e.href)})`];return""===e.layerName?n.push("layer"):e.layerName&&n.push(`layer(${e.layerName})`),e.supportsText&&n.push(`supports(${e.supportsText})`),e.media.length&&n.push(e.media.mediaText),n.join(" ")+";"}(e)}catch(n){t=e.cssText}return e.styleSheet.href?ho(t,e.styleSheet.href):t}{let n=e.cssText;return function(e){return"selectorText"in e}(e)&&e.selectorText.includes(":")&&(n=function(e){const t=/(\[(?:[\w-]+)[^\\])(:(?:[\w-]+)\])/gm;return e.replace(t,"$1\\$2")}(n)),t?ho(n,t):n}}class no{constructor(){_n(this,"idNodeMap",new Map),_n(this,"nodeMetaMap",new WeakMap)}getId(e){var t;if(!e)return-1;return(null==(t=this.getMeta(e))?void 0:t.id)??-1}getNode(e){return this.idNodeMap.get(e)||null}getIds(){return Array.from(this.idNodeMap.keys())}getMeta(e){return this.nodeMetaMap.get(e)||null}removeNodeFromMap(e){const t=this.getId(e);this.idNodeMap.delete(t),e.childNodes&&e.childNodes.forEach((e=>this.removeNodeFromMap(e)))}has(e){return this.idNodeMap.has(e)}hasNode(e){return this.nodeMetaMap.has(e)}add(e,t){const n=t.id;this.idNodeMap.set(n,e),this.nodeMetaMap.set(e,t)}replace(e,t){const n=this.getNode(e);if(n){const e=this.nodeMetaMap.get(n);e&&this.nodeMetaMap.set(t,e)}this.idNodeMap.set(e,t)}reset(){this.idNodeMap=new Map,this.nodeMetaMap=new WeakMap}}function oo({element:e,maskInputOptions:t,tagName:n,type:o,value:r,maskInputFn:i}){let a=r||"";const s=o&&ro(o);return(t[n.toLowerCase()]||s&&t[s])&&(a=i?i(a,e):"*".repeat(a.length)),a}function ro(e){return e.toLowerCase()}const io="__rrweb_original__";function ao(e){const t=e.type;return e.hasAttribute("data-rr-is-password")?"password":t?ro(t):null}function so(e,t){let n;try{n=new URL(e,t??window.location.href)}catch(r){return null}const o=n.pathname.match(/\.([0-9a-z]+)(?:$)/i);return(null==o?void 0:o[1])??null}const lo=/url\((?:(')([^']*)'|(")(.*?)"|([^)]*))\)/gm,co=/^(?:[a-z+]+:)?\/\//i,uo=/^www\..*/i,po=/^(data:)([^,]*),(.*)/i;function ho(e,t){return(e||"").replace(lo,((e,n,o,r,i,a)=>{const s=o||i||a,l=n||r||"";if(!s)return e;if(co.test(s)||uo.test(s))return`url(${l}${s}${l})`;if(po.test(s))return`url(${l}${s}${l})`;if("/"===s[0])return`url(${l}${function(e){let t="";return t=e.indexOf("//")>-1?e.split("/").slice(0,3).join("/"):e.split("/")[0],t=t.split("?")[0],t}(t)+s}${l})`;const c=t.split("/"),u=s.split("/");c.pop();for(const t of u)"."!==t&&(".."===t?c.pop():c.push(t));return`url(${l}${c.join("/")}${l})`}))}function fo(e){return e.replace(/(\/\*[^*]*\*\/)|[\s;]/g,"")}function mo(e,t){return function(e,t){const n=Array.from(t.childNodes),o=[];if(n.length>1&&e&&"string"==typeof e){const t=fo(e);for(let r=1;r=t.length);){let i=o(xo);if(","===i.slice(-1))i=Io(e,i.substring(0,i.length-1)),r.push(i);else{let o="";i=Io(e,i);let a=!1;for(;;){const e=t.charAt(n);if(""===e){r.push((i+o).trim());break}if(a)")"===e&&(a=!1);else{if(","===e){n+=1,r.push((i+o).trim());break}"("===e&&(a=!0)}o+=e,n+=1}}}return r.join(", ")}(e,o):"style"===n?ho(o,To(e)):"object"===t&&"data"===n?Io(e,o):o:Io(e,o):o}function Lo(e,t,n){return("video"===e||"audio"===e)&&"autoplay"===t}function Ao(e,t,n){if(!e)return!1;if(e.nodeType!==e.ELEMENT_NODE)return!!n&&Ao(Kn.parentNode(e),t,n);for(let o=e.classList.length;o--;){const n=e.classList[o];if(t.test(n))return!0}return!!n&&Ao(Kn.parentNode(e),t,n)}function Mo(e,t,n,o){let r;if(Zn(e)){if(r=e,!Kn.childNodes(r).length)return!1}else{if(null===Kn.parentElement(e))return!1;r=Kn.parentElement(e)}try{if("string"==typeof t){if(o){if(r.closest(`.${t}`))return!0}else if(r.classList.contains(t))return!0}else if(Ao(r,t,o))return!0;if(n)if(o){if(r.closest(n))return!0}else if(r.matches(n))return!0}catch(i){}return!1}function Ro(e,t){const{doc:n,mirror:o,blockClass:r,blockSelector:i,needsMask:a,inlineStylesheet:s,maskInputOptions:l={},maskTextFn:c,maskInputFn:u,dataURLOptions:d={},inlineImages:p,recordCanvas:h,keepIframeSrcFn:f,newlyAddedElement:m=!1,cssCaptured:g=!1}=t,v=function(e,t){if(!t.hasNode(e))return;const n=t.getId(e);return 1===n?void 0:n}(n,o);switch(e.nodeType){case e.DOCUMENT_NODE:return"CSS1Compat"!==e.compatMode?{type:Un.Document,childNodes:[],compatMode:e.compatMode}:{type:Un.Document,childNodes:[]};case e.DOCUMENT_TYPE_NODE:return{type:Un.DocumentType,name:e.name,publicId:e.publicId,systemId:e.systemId,rootId:v};case e.ELEMENT_NODE:return function(e,t){const{doc:n,blockClass:o,blockSelector:r,inlineStylesheet:i,maskInputOptions:a={},maskInputFn:s,dataURLOptions:l={},inlineImages:c,recordCanvas:u,keepIframeSrcFn:d,newlyAddedElement:p=!1,rootId:h}=t,f=function(e,t,n){try{if("string"==typeof t){if(e.classList.contains(t))return!0}else for(let n=e.classList.length;n--;){const o=e.classList[n];if(t.test(o))return!0}if(n)return e.matches(n)}catch(o){}return!1}(e,o,r),m=function(e){if(e instanceof HTMLFormElement)return"form";const t=ro(e.tagName);return vo.test(t)?"div":t}(e);let g={};const v=e.attributes.length;for(let w=0;wt.href===e.href));let o=null;t&&(o=eo(t)),o&&(delete g.rel,delete g.href,g._cssText=o)}if("style"===m&&e.sheet){let t=eo(e.sheet);t&&(e.childNodes.length>1&&(t=mo(t,e)),g._cssText=t)}if("input"===m||"textarea"===m||"select"===m){const t=e.value,n=e.checked;"radio"!==g.type&&"checkbox"!==g.type&&"submit"!==g.type&&"button"!==g.type&&t?g.value=oo({element:e,type:ao(e),tagName:m,value:t,maskInputOptions:a,maskInputFn:s}):n&&(g.checked=n)}"option"===m&&(e.selected&&!a.select?g.selected=!0:delete g.selected);"dialog"===m&&e.open&&(g.rr_open_mode=e.matches("dialog:modal")?"modal":"non-modal");if("canvas"===m&&u)if("2d"===e.__context)(function(e){const t=e.getContext("2d");if(!t)return!0;for(let n=0;n0!==e)))return!1}return!0})(e)||(g.rr_dataURL=e.toDataURL(l.type,l.quality));else if(!("__context"in e)){const t=e.toDataURL(l.type,l.quality),o=n.createElement("canvas");o.width=e.width,o.height=e.height;t!==o.toDataURL(l.type,l.quality)&&(g.rr_dataURL=t)}if("img"===m&&c){wo||(wo=n.createElement("canvas"),ko=wo.getContext("2d"));const t=e,o=t.currentSrc||t.getAttribute("src")||"",r=t.crossOrigin,i=()=>{t.removeEventListener("load",i);try{wo.width=t.naturalWidth,wo.height=t.naturalHeight,ko.drawImage(t,0,0),g.rr_dataURL=wo.toDataURL(l.type,l.quality)}catch(e){if("anonymous"!==t.crossOrigin)return t.crossOrigin="anonymous",void(t.complete&&0!==t.naturalWidth?i():t.addEventListener("load",i));console.warn(`Cannot inline img src=${o}! Error: ${e}`)}"anonymous"===t.crossOrigin&&(r?g.crossOrigin=r:t.removeAttribute("crossorigin"))};t.complete&&0!==t.naturalWidth?i():t.addEventListener("load",i)}if("audio"===m||"video"===m){const t=g;t.rr_mediaState=e.paused?"paused":"played",t.rr_mediaCurrentTime=e.currentTime,t.rr_mediaPlaybackRate=e.playbackRate,t.rr_mediaMuted=e.muted,t.rr_mediaLoop=e.loop,t.rr_mediaVolume=e.volume}p||(e.scrollLeft&&(g.rr_scrollLeft=e.scrollLeft),e.scrollTop&&(g.rr_scrollTop=e.scrollTop));if(f){const{width:t,height:n}=e.getBoundingClientRect();g={class:g.class,rr_width:`${t}px`,rr_height:`${n}px`}}"iframe"!==m||d(g.src)||(e.contentDocument||(g.rr_src=g.src),delete g.src);let y;try{customElements.get(m)&&(y=!0)}catch(b){}return{type:Un.Element,tagName:m,attributes:g,childNodes:[],isSVG:Eo(e)||void 0,needBlock:f,rootId:h,isCustom:y}}(e,{doc:n,blockClass:r,blockSelector:i,inlineStylesheet:s,maskInputOptions:l,maskInputFn:u,dataURLOptions:d,inlineImages:p,recordCanvas:h,keepIframeSrcFn:f,newlyAddedElement:m,rootId:v});case e.TEXT_NODE:return function(e,t){const{needsMask:n,maskTextFn:o,rootId:r,cssCaptured:i}=t,a=Kn.parentNode(e),s=a&&a.tagName;let l="";const c="STYLE"===s||void 0,u="SCRIPT"===s||void 0;u?l="SCRIPT_PLACEHOLDER":i||(l=Kn.textContent(e),c&&l&&(l=ho(l,To(t.doc))));!c&&!u&&l&&n&&(l=o?o(l,Kn.parentElement(e)):l.replace(/[\S]/g,"*"));return{type:Un.Text,textContent:l||"",rootId:r}}(e,{doc:n,needsMask:a,maskTextFn:c,rootId:v,cssCaptured:g});case e.CDATA_SECTION_NODE:return{type:Un.CDATA,textContent:"",rootId:v};case e.COMMENT_NODE:return{type:Un.Comment,textContent:Kn.textContent(e)||"",rootId:v};default:return!1}}function Po(e){return null==e?"":e.toLowerCase()}function Do(e,t){const{doc:n,mirror:o,blockClass:r,blockSelector:i,maskTextClass:a,maskTextSelector:s,skipChild:l=!1,inlineStylesheet:c=!0,maskInputOptions:u={},maskTextFn:d,maskInputFn:p,slimDOMOptions:h,dataURLOptions:f={},inlineImages:m=!1,recordCanvas:g=!1,onSerialize:v,onIframeLoad:y,iframeLoadTimeout:b=5e3,onStylesheetLoad:w,stylesheetLoadTimeout:k=5e3,keepIframeSrcFn:x=(()=>!1),newlyAddedElement:S=!1,cssCaptured:C=!1}=t;let{needsMask:I}=t,{preserveWhiteSpace:E=!0}=t;if(!I){I=Mo(e,a,s,void 0===I)}const T=Ro(e,{doc:n,mirror:o,blockClass:r,blockSelector:i,needsMask:I,inlineStylesheet:c,maskInputOptions:u,maskTextFn:d,maskInputFn:p,dataURLOptions:f,inlineImages:m,recordCanvas:g,keepIframeSrcFn:x,newlyAddedElement:S,cssCaptured:C});if(!T)return console.warn(e,"not serialized"),null;let O;O=o.hasNode(e)?o.getId(e):function(e,t){if(t.comment&&e.type===Un.Comment)return!0;if(e.type===Un.Element){if(t.script&&("script"===e.tagName||"link"===e.tagName&&("preload"===e.attributes.rel||"modulepreload"===e.attributes.rel)&&"script"===e.attributes.as||"link"===e.tagName&&"prefetch"===e.attributes.rel&&"string"==typeof e.attributes.href&&"js"===so(e.attributes.href)))return!0;if(t.headFavicon&&("link"===e.tagName&&"shortcut icon"===e.attributes.rel||"meta"===e.tagName&&(Po(e.attributes.name).match(/^msapplication-tile(image|color)$/)||"application-name"===Po(e.attributes.name)||"icon"===Po(e.attributes.rel)||"apple-touch-icon"===Po(e.attributes.rel)||"shortcut icon"===Po(e.attributes.rel))))return!0;if("meta"===e.tagName){if(t.headMetaDescKeywords&&Po(e.attributes.name).match(/^description|keywords$/))return!0;if(t.headMetaSocial&&(Po(e.attributes.property).match(/^(og|twitter|fb):/)||Po(e.attributes.name).match(/^(og|twitter):/)||"pinterest"===Po(e.attributes.name)))return!0;if(t.headMetaRobots&&("robots"===Po(e.attributes.name)||"googlebot"===Po(e.attributes.name)||"bingbot"===Po(e.attributes.name)))return!0;if(t.headMetaHttpEquiv&&void 0!==e.attributes["http-equiv"])return!0;if(t.headMetaAuthorship&&("author"===Po(e.attributes.name)||"generator"===Po(e.attributes.name)||"framework"===Po(e.attributes.name)||"publisher"===Po(e.attributes.name)||"progid"===Po(e.attributes.name)||Po(e.attributes.property).match(/^article:/)||Po(e.attributes.property).match(/^product:/)))return!0;if(t.headMetaVerification&&("google-site-verification"===Po(e.attributes.name)||"yandex-verification"===Po(e.attributes.name)||"csrf-token"===Po(e.attributes.name)||"p:domain_verify"===Po(e.attributes.name)||"verify-v1"===Po(e.attributes.name)||"verification"===Po(e.attributes.name)||"shopify-checkout-api-token"===Po(e.attributes.name)))return!0}}return!1}(T,h)||!E&&T.type===Un.Text&&!T.textContent.replace(/^\s+|\s+$/gm,"").length?yo:bo();const L=Object.assign(T,{id:O});if(o.add(e,L),O===yo)return null;v&&v(e);let A=!l;if(L.type===Un.Element){A=A&&!L.needBlock,delete L.needBlock;const t=Kn.shadowRoot(e);t&&Qn(t)&&(L.isShadowHost=!0)}if((L.type===Un.Document||L.type===Un.Element)&&A){h.headWhitespace&&L.type===Un.Element&&"head"===L.tagName&&(E=!1);const t={doc:n,mirror:o,blockClass:r,blockSelector:i,needsMask:I,maskTextClass:a,maskTextSelector:s,skipChild:l,inlineStylesheet:c,maskInputOptions:u,maskTextFn:d,maskInputFn:p,slimDOMOptions:h,dataURLOptions:f,inlineImages:m,recordCanvas:g,preserveWhiteSpace:E,onSerialize:v,onIframeLoad:y,iframeLoadTimeout:b,onStylesheetLoad:w,stylesheetLoadTimeout:k,keepIframeSrcFn:x,cssCaptured:!1};if(L.type===Un.Element&&"textarea"===L.tagName&&void 0!==L.attributes.value);else{L.type===Un.Element&&void 0!==L.attributes._cssText&&"string"==typeof L.attributes._cssText&&(t.cssCaptured=!0);for(const n of Array.from(Kn.childNodes(e))){const e=Do(n,t);e&&L.childNodes.push(e)}}let S=null;if(Zn(e)&&(S=Kn.shadowRoot(e)))for(const e of Array.from(Kn.childNodes(S))){const n=Do(e,t);n&&(Qn(S)&&(n.isShadow=!0),L.childNodes.push(n))}}const M=Kn.parentNode(e);return M&&$n(M)&&Qn(M)&&(L.isShadow=!0),L.type===Un.Element&&"iframe"===L.tagName&&function(e,t,n){const o=e.contentWindow;if(!o)return;let r,i=!1;try{r=o.document.readyState}catch(s){return}if("complete"!==r){const o=setTimeout((()=>{i||(t(),i=!0)}),n);return void e.addEventListener("load",(()=>{clearTimeout(o),i=!0,t()}))}const a="about:blank";if(o.location.href!==a||e.src===a||""===e.src)return setTimeout(t,0),e.addEventListener("load",t);e.addEventListener("load",t)}(e,(()=>{const t=e.contentDocument;if(t&&y){const n=Do(t,{doc:t,mirror:o,blockClass:r,blockSelector:i,needsMask:I,maskTextClass:a,maskTextSelector:s,skipChild:!1,inlineStylesheet:c,maskInputOptions:u,maskTextFn:d,maskInputFn:p,slimDOMOptions:h,dataURLOptions:f,inlineImages:m,recordCanvas:g,preserveWhiteSpace:E,onSerialize:v,onIframeLoad:y,iframeLoadTimeout:b,onStylesheetLoad:w,stylesheetLoadTimeout:k,keepIframeSrcFn:x});n&&y(e,n)}}),b),L.type===Un.Element&&"link"===L.tagName&&"string"==typeof L.attributes.rel&&("stylesheet"===L.attributes.rel||"preload"===L.attributes.rel&&"string"==typeof L.attributes.href&&"css"===so(L.attributes.href))&&function(e,t,n){let o,r=!1;try{o=e.sheet}catch(a){return}if(o)return;const i=setTimeout((()=>{r||(t(),r=!0)}),n);e.addEventListener("load",(()=>{clearTimeout(i),r=!0,t()}))}(e,(()=>{if(w){const t=Do(e,{doc:n,mirror:o,blockClass:r,blockSelector:i,needsMask:I,maskTextClass:a,maskTextSelector:s,skipChild:!1,inlineStylesheet:c,maskInputOptions:u,maskTextFn:d,maskInputFn:p,slimDOMOptions:h,dataURLOptions:f,inlineImages:m,recordCanvas:g,preserveWhiteSpace:E,onSerialize:v,onIframeLoad:y,iframeLoadTimeout:b,onStylesheetLoad:w,stylesheetLoadTimeout:k,keepIframeSrcFn:x});t&&w(e,t)}}),k),L}function No(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function jo(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var n=function e(){return this instanceof e?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,o.get?o:{enumerable:!0,get:function(){return e[t]}})})),n}var Fo={exports:{}},Bo=String,_o=function(){return{isColorSupported:!1,reset:Bo,bold:Bo,dim:Bo,italic:Bo,underline:Bo,inverse:Bo,hidden:Bo,strikethrough:Bo,black:Bo,red:Bo,green:Bo,yellow:Bo,blue:Bo,magenta:Bo,cyan:Bo,white:Bo,gray:Bo,bgBlack:Bo,bgRed:Bo,bgGreen:Bo,bgYellow:Bo,bgBlue:Bo,bgMagenta:Bo,bgCyan:Bo,bgWhite:Bo}};Fo.exports=_o(),Fo.exports.createColors=_o;var Uo=Fo.exports;const Ho=jo(Object.freeze(Object.defineProperty({__proto__:null,default:{}},Symbol.toStringTag,{value:"Module"})));let zo=Uo,qo=Ho,Wo=class e extends Error{constructor(t,n,o,r,i,a){super(t),this.name="CssSyntaxError",this.reason=t,i&&(this.file=i),r&&(this.source=r),a&&(this.plugin=a),void 0!==n&&void 0!==o&&("number"==typeof n?(this.line=n,this.column=o):(this.line=n.line,this.column=n.column,this.endLine=o.line,this.endColumn=o.column)),this.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(this,e)}setMessage(){this.message=this.plugin?this.plugin+": ":"",this.message+=this.file?this.file:"",void 0!==this.line&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason}showSourceCode(e){if(!this.source)return"";let t=this.source;null==e&&(e=zo.isColorSupported),qo&&e&&(t=qo(t));let n,o,r=t.split(/\r?\n/),i=Math.max(this.line-3,0),a=Math.min(this.line+2,r.length),s=String(a).length;if(e){let{bold:e,gray:t,red:r}=zo.createColors(!0);n=t=>e(r(t)),o=e=>t(e)}else n=o=e=>e;return r.slice(i,a).map(((e,t)=>{let r=i+1+t,a=" "+(" "+r).slice(-s)+" | ";if(r===this.line){let t=o(a.replace(/\d/g," "))+e.slice(0,this.column-1).replace(/[^\t]/g," ");return n(">")+o(a)+e+"\n "+t+n("^")}return" "+o(a)+e})).join("\n")}toString(){let e=this.showSourceCode();return e&&(e="\n\n"+e+"\n"),this.name+": "+this.message+e}};var Vo=Wo;Wo.default=Wo;var Go={};Go.isClean=Symbol("isClean"),Go.my=Symbol("my");const Xo={after:"\n",beforeClose:"\n",beforeComment:"\n",beforeDecl:"\n",beforeOpen:" ",beforeRule:"\n",colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:!1};let Yo=class{constructor(e){this.builder=e}atrule(e,t){let n="@"+e.name,o=e.params?this.rawValue(e,"params"):"";if(void 0!==e.raws.afterName?n+=e.raws.afterName:o&&(n+=" "),e.nodes)this.block(e,n+o);else{let r=(e.raws.between||"")+(t?";":"");this.builder(n+o+r,e)}}beforeAfter(e,t){let n;n="decl"===e.type?this.raw(e,null,"beforeDecl"):"comment"===e.type?this.raw(e,null,"beforeComment"):"before"===t?this.raw(e,null,"beforeRule"):this.raw(e,null,"beforeClose");let o=e.parent,r=0;for(;o&&"root"!==o.type;)r+=1,o=o.parent;if(n.includes("\n")){let t=this.raw(e,null,"indent");if(t.length)for(let e=0;e0&&"comment"===e.nodes[t].type;)t-=1;let n=this.raw(e,"semicolon");for(let o=0;o{if(o=e.raws[t],void 0!==o)return!1}))}var a;return void 0===o&&(o=Xo[n]),i.rawCache[n]=o,o}rawBeforeClose(e){let t;return e.walk((e=>{if(e.nodes&&e.nodes.length>0&&void 0!==e.raws.after)return t=e.raws.after,t.includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1})),t&&(t=t.replace(/\S/g,"")),t}rawBeforeComment(e,t){let n;return e.walkComments((e=>{if(void 0!==e.raws.before)return n=e.raws.before,n.includes("\n")&&(n=n.replace(/[^\n]+$/,"")),!1})),void 0===n?n=this.raw(t,null,"beforeDecl"):n&&(n=n.replace(/\S/g,"")),n}rawBeforeDecl(e,t){let n;return e.walkDecls((e=>{if(void 0!==e.raws.before)return n=e.raws.before,n.includes("\n")&&(n=n.replace(/[^\n]+$/,"")),!1})),void 0===n?n=this.raw(t,null,"beforeRule"):n&&(n=n.replace(/\S/g,"")),n}rawBeforeOpen(e){let t;return e.walk((e=>{if("decl"!==e.type&&(t=e.raws.between,void 0!==t))return!1})),t}rawBeforeRule(e){let t;return e.walk((n=>{if(n.nodes&&(n.parent!==e||e.first!==n)&&void 0!==n.raws.before)return t=n.raws.before,t.includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1})),t&&(t=t.replace(/\S/g,"")),t}rawColon(e){let t;return e.walkDecls((e=>{if(void 0!==e.raws.between)return t=e.raws.between.replace(/[^\s:]/g,""),!1})),t}rawEmptyBody(e){let t;return e.walk((e=>{if(e.nodes&&0===e.nodes.length&&(t=e.raws.after,void 0!==t))return!1})),t}rawIndent(e){if(e.raws.indent)return e.raws.indent;let t;return e.walk((n=>{let o=n.parent;if(o&&o!==e&&o.parent&&o.parent===e&&void 0!==n.raws.before){let e=n.raws.before.split("\n");return t=e[e.length-1],t=t.replace(/\S/g,""),!1}})),t}rawSemicolon(e){let t;return e.walk((e=>{if(e.nodes&&e.nodes.length&&"decl"===e.last.type&&(t=e.raws.semicolon,void 0!==t))return!1})),t}rawValue(e,t){let n=e[t],o=e.raws[t];return o&&o.value===n?o.raw:n}root(e){this.body(e),e.raws.after&&this.builder(e.raws.after)}rule(e){this.block(e,this.rawValue(e,"selector")),e.raws.ownSemicolon&&this.builder(e.raws.ownSemicolon,e,"end")}stringify(e,t){if(!this[e.type])throw new Error("Unknown AST node type "+e.type+". Maybe you need to change PostCSS stringifier.");this[e.type](e,t)}};var Jo=Yo;Yo.default=Yo;let Ko=Jo;function Zo(e,t){new Ko(t).stringify(e)}var $o=Zo;Zo.default=Zo;let{isClean:Qo,my:er}=Go,tr=Vo,nr=Jo,or=$o;function rr(e,t){let n=new e.constructor;for(let o in e){if(!Object.prototype.hasOwnProperty.call(e,o))continue;if("proxyCache"===o)continue;let r=e[o],i=typeof r;"parent"===o&&"object"===i?t&&(n[o]=t):"source"===o?n[o]=r:Array.isArray(r)?n[o]=r.map((e=>rr(e,n))):("object"===i&&null!==r&&(r=rr(r)),n[o]=r)}return n}let ir=class{constructor(e={}){this.raws={},this[Qo]=!1,this[er]=!0;for(let t in e)if("nodes"===t){this.nodes=[];for(let n of e[t])"function"==typeof n.clone?this.append(n.clone()):this.append(n)}else this[t]=e[t]}addToError(e){if(e.postcssNode=this,e.stack&&this.source&&/\n\s{4}at /.test(e.stack)){let t=this.source;e.stack=e.stack.replace(/\n\s{4}at /,`$&${t.input.from}:${t.start.line}:${t.start.column}$&`)}return e}after(e){return this.parent.insertAfter(this,e),this}assign(e={}){for(let t in e)this[t]=e[t];return this}before(e){return this.parent.insertBefore(this,e),this}cleanRaws(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between}clone(e={}){let t=rr(this);for(let n in e)t[n]=e[n];return t}cloneAfter(e={}){let t=this.clone(e);return this.parent.insertAfter(this,t),t}cloneBefore(e={}){let t=this.clone(e);return this.parent.insertBefore(this,t),t}error(e,t={}){if(this.source){let{end:n,start:o}=this.rangeBy(t);return this.source.input.error(e,{column:o.column,line:o.line},{column:n.column,line:n.line},t)}return new tr(e)}getProxyProcessor(){return{get:(e,t)=>"proxyOf"===t?e:"root"===t?()=>e.root().toProxy():e[t],set:(e,t,n)=>(e[t]===n||(e[t]=n,"prop"!==t&&"value"!==t&&"name"!==t&&"params"!==t&&"important"!==t&&"text"!==t||e.markDirty()),!0)}}markDirty(){if(this[Qo]){this[Qo]=!1;let e=this;for(;e=e.parent;)e[Qo]=!1}}next(){if(!this.parent)return;let e=this.parent.index(this);return this.parent.nodes[e+1]}positionBy(e,t){let n=this.source.start;if(e.index)n=this.positionInside(e.index,t);else if(e.word){let o=(t=this.toString()).indexOf(e.word);-1!==o&&(n=this.positionInside(o,t))}return n}positionInside(e,t){let n=t||this.toString(),o=this.source.start.column,r=this.source.start.line;for(let i=0;i"object"==typeof e&&e.toJSON?e.toJSON(null,t):e));else if("object"==typeof e&&e.toJSON)n[i]=e.toJSON(null,t);else if("source"===i){let o=t.get(e.input);null==o&&(o=r,t.set(e.input,r),r++),n[i]={end:e.end,inputId:o,start:e.start}}else n[i]=e}return o&&(n.inputs=[...t.keys()].map((e=>e.toJSON()))),n}toProxy(){return this.proxyCache||(this.proxyCache=new Proxy(this,this.getProxyProcessor())),this.proxyCache}toString(e=or){e.stringify&&(e=e.stringify);let t="";return e(this,(e=>{t+=e})),t}warn(e,t,n){let o={node:this};for(let r in n)o[r]=n[r];return e.warn(t,o)}get proxyOf(){return this}};var ar=ir;ir.default=ir;let sr=ar,lr=class extends sr{constructor(e){e&&void 0!==e.value&&"string"!=typeof e.value&&(e={...e,value:String(e.value)}),super(e),this.type="decl"}get variable(){return this.prop.startsWith("--")||"$"===this.prop[0]}};var cr=lr;lr.default=lr;var ur={nanoid:(e=21)=>{let t="",n=e;for(;n--;)t+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[64*Math.random()|0];return t},customAlphabet:(e,t=21)=>(n=t)=>{let o="",r=n;for(;r--;)o+=e[Math.random()*e.length|0];return o}};let{SourceMapConsumer:dr,SourceMapGenerator:pr}=Ho,{existsSync:hr,readFileSync:fr}=Ho,{dirname:mr,join:gr}=Ho;let vr=class{constructor(e,t){if(!1===t.map)return;this.loadAnnotation(e),this.inline=this.startWith(this.annotation,"data:");let n=t.map?t.map.prev:void 0,o=this.loadMap(t.from,n);!this.mapFile&&t.from&&(this.mapFile=t.from),this.mapFile&&(this.root=mr(this.mapFile)),o&&(this.text=o)}consumer(){return this.consumerCache||(this.consumerCache=new dr(this.text)),this.consumerCache}decodeInline(e){if(/^data:application\/json;charset=utf-?8,/.test(e)||/^data:application\/json,/.test(e))return decodeURIComponent(e.substr(RegExp.lastMatch.length));if(/^data:application\/json;charset=utf-?8;base64,/.test(e)||/^data:application\/json;base64,/.test(e))return t=e.substr(RegExp.lastMatch.length),Buffer?Buffer.from(t,"base64").toString():window.atob(t);var t;let n=e.match(/data:application\/json;([^,]+),/)[1];throw new Error("Unsupported source map encoding "+n)}getAnnotationURL(e){return e.replace(/^\/\*\s*# sourceMappingURL=/,"").trim()}isMap(e){return"object"==typeof e&&("string"==typeof e.mappings||"string"==typeof e._mappings||Array.isArray(e.sections))}loadAnnotation(e){let t=e.match(/\/\*\s*# sourceMappingURL=/gm);if(!t)return;let n=e.lastIndexOf(t.pop()),o=e.indexOf("*/",n);n>-1&&o>-1&&(this.annotation=this.getAnnotationURL(e.substring(n,o)))}loadFile(e){if(this.root=mr(e),hr(e))return this.mapFile=e,fr(e,"utf-8").toString().trim()}loadMap(e,t){if(!1===t)return!1;if(t){if("string"==typeof t)return t;if("function"!=typeof t){if(t instanceof dr)return pr.fromSourceMap(t).toString();if(t instanceof pr)return t.toString();if(this.isMap(t))return JSON.stringify(t);throw new Error("Unsupported previous source map format: "+t.toString())}{let n=t(e);if(n){let e=this.loadFile(n);if(!e)throw new Error("Unable to load previous source map: "+n.toString());return e}}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){let t=this.annotation;return e&&(t=gr(mr(e),t)),this.loadFile(t)}}}startWith(e,t){return!!e&&e.substr(0,t.length)===t}withContent(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)}};var yr=vr;vr.default=vr;let{SourceMapConsumer:br,SourceMapGenerator:wr}=Ho,{fileURLToPath:kr,pathToFileURL:xr}=Ho,{isAbsolute:Sr,resolve:Cr}=Ho,{nanoid:Ir}=ur,Er=Ho,Tr=Vo,Or=yr,Lr=Symbol("fromOffsetCache"),Ar=Boolean(br&&wr),Mr=Boolean(Cr&&Sr),Rr=class{constructor(e,t={}){if(null==e||"object"==typeof e&&!e.toString)throw new Error(`PostCSS received ${e} instead of CSS string`);if(this.css=e.toString(),"\ufeff"===this.css[0]||"￾"===this.css[0]?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,t.from&&(!Mr||/^\w+:\/\//.test(t.from)||Sr(t.from)?this.file=t.from:this.file=Cr(t.from)),Mr&&Ar){let e=new Or(this.css,t);if(e.text){this.map=e;let t=e.consumer().file;!this.file&&t&&(this.file=this.mapResolve(t))}}this.file||(this.id=""),this.map&&(this.map.file=this.from)}error(e,t,n,o={}){let r,i,a;if(t&&"object"==typeof t){let e=t,o=n;if("number"==typeof e.offset){let o=this.fromOffset(e.offset);t=o.line,n=o.col}else t=e.line,n=e.column;if("number"==typeof o.offset){let e=this.fromOffset(o.offset);i=e.line,a=e.col}else i=o.line,a=o.column}else if(!n){let e=this.fromOffset(t);t=e.line,n=e.col}let s=this.origin(t,n,i,a);return r=s?new Tr(e,void 0===s.endLine?s.line:{column:s.column,line:s.line},void 0===s.endLine?s.column:{column:s.endColumn,line:s.endLine},s.source,s.file,o.plugin):new Tr(e,void 0===i?t:{column:n,line:t},void 0===i?n:{column:a,line:i},this.css,this.file,o.plugin),r.input={column:n,endColumn:a,endLine:i,line:t,source:this.css},this.file&&(xr&&(r.input.url=xr(this.file).toString()),r.input.file=this.file),r}fromOffset(e){let t,n;if(this[Lr])n=this[Lr];else{let e=this.css.split("\n");n=new Array(e.length);let t=0;for(let o=0,r=e.length;o=t)o=n.length-1;else{let t,r=n.length-2;for(;o>1),e=n[t+1])){o=t;break}o=t+1}}return{col:e-n[o]+1,line:o+1}}mapResolve(e){return/^\w+:\/\//.test(e)?e:Cr(this.map.consumer().sourceRoot||this.map.root||".",e)}origin(e,t,n,o){if(!this.map)return!1;let r,i,a=this.map.consumer(),s=a.originalPositionFor({column:t,line:e});if(!s.source)return!1;"number"==typeof n&&(r=a.originalPositionFor({column:o,line:n})),i=Sr(s.source)?xr(s.source):new URL(s.source,this.map.consumer().sourceRoot||xr(this.map.mapFile));let l={column:s.column,endColumn:r&&r.column,endLine:r&&r.line,line:s.line,url:i.toString()};if("file:"===i.protocol){if(!kr)throw new Error("file: protocol is not available in this PostCSS build");l.file=kr(i)}let c=a.sourceContentFor(s.source);return c&&(l.source=c),l}toJSON(){let e={};for(let t of["hasBOM","css","file","id"])null!=this[t]&&(e[t]=this[t]);return this.map&&(e.map={...this.map},e.map.consumerCache&&(e.map.consumerCache=void 0)),e}get from(){return this.file||this.id}};var Pr=Rr;Rr.default=Rr,Er&&Er.registerInput&&Er.registerInput(Rr);let{SourceMapConsumer:Dr,SourceMapGenerator:Nr}=Ho,{dirname:jr,relative:Fr,resolve:Br,sep:_r}=Ho,{pathToFileURL:Ur}=Ho,Hr=Pr,zr=Boolean(Dr&&Nr),qr=Boolean(jr&&Br&&Fr&&_r);var Wr=class{constructor(e,t,n,o){this.stringify=e,this.mapOpts=n.map||{},this.root=t,this.opts=n,this.css=o,this.originalCSS=o,this.usesFileUrls=!this.mapOpts.from&&this.mapOpts.absolute,this.memoizedFileURLs=new Map,this.memoizedPaths=new Map,this.memoizedURLs=new Map}addAnnotation(){let e;e=this.isInline()?"data:application/json;base64,"+this.toBase64(this.map.toString()):"string"==typeof this.mapOpts.annotation?this.mapOpts.annotation:"function"==typeof this.mapOpts.annotation?this.mapOpts.annotation(this.opts.to,this.root):this.outputFile()+".map";let t="\n";this.css.includes("\r\n")&&(t="\r\n"),this.css+=t+"/*# sourceMappingURL="+e+" */"}applyPrevMaps(){for(let e of this.previous()){let t,n=this.toUrl(this.path(e.file)),o=e.root||jr(e.file);!1===this.mapOpts.sourcesContent?(t=new Dr(e.text),t.sourcesContent&&(t.sourcesContent=null)):t=e.consumer(),this.map.applySourceMap(t,n,this.toUrl(this.path(o)))}}clearAnnotation(){if(!1!==this.mapOpts.annotation)if(this.root){let e;for(let t=this.root.nodes.length-1;t>=0;t--)e=this.root.nodes[t],"comment"===e.type&&0===e.text.indexOf("# sourceMappingURL=")&&this.root.removeChild(t)}else this.css&&(this.css=this.css.replace(/\n*?\/\*#[\S\s]*?\*\/$/gm,""))}generate(){if(this.clearAnnotation(),qr&&zr&&this.isMap())return this.generateMap();{let e="";return this.stringify(this.root,(t=>{e+=t})),[e]}}generateMap(){if(this.root)this.generateString();else if(1===this.previous().length){let e=this.previous()[0].consumer();e.file=this.outputFile(),this.map=Nr.fromSourceMap(e,{ignoreInvalidMapping:!0})}else this.map=new Nr({file:this.outputFile(),ignoreInvalidMapping:!0}),this.map.addMapping({generated:{column:0,line:1},original:{column:0,line:1},source:this.opts.from?this.toUrl(this.path(this.opts.from)):""});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]}generateString(){this.css="",this.map=new Nr({file:this.outputFile(),ignoreInvalidMapping:!0});let e,t,n=1,o=1,r="",i={generated:{column:0,line:0},original:{column:0,line:0},source:""};this.stringify(this.root,((a,s,l)=>{if(this.css+=a,s&&"end"!==l&&(i.generated.line=n,i.generated.column=o-1,s.source&&s.source.start?(i.source=this.sourcePath(s),i.original.line=s.source.start.line,i.original.column=s.source.start.column-1,this.map.addMapping(i)):(i.source=r,i.original.line=1,i.original.column=0,this.map.addMapping(i))),e=a.match(/\n/g),e?(n+=e.length,t=a.lastIndexOf("\n"),o=a.length-t):o+=a.length,s&&"start"!==l){let e=s.parent||{raws:{}};("decl"===s.type||"atrule"===s.type&&!s.nodes)&&s===e.last&&!e.raws.semicolon||(s.source&&s.source.end?(i.source=this.sourcePath(s),i.original.line=s.source.end.line,i.original.column=s.source.end.column-1,i.generated.line=n,i.generated.column=o-2,this.map.addMapping(i)):(i.source=r,i.original.line=1,i.original.column=0,i.generated.line=n,i.generated.column=o-1,this.map.addMapping(i)))}}))}isAnnotation(){return!!this.isInline()||(void 0!==this.mapOpts.annotation?this.mapOpts.annotation:!this.previous().length||this.previous().some((e=>e.annotation)))}isInline(){if(void 0!==this.mapOpts.inline)return this.mapOpts.inline;let e=this.mapOpts.annotation;return(void 0===e||!0===e)&&(!this.previous().length||this.previous().some((e=>e.inline)))}isMap(){return void 0!==this.opts.map?!!this.opts.map:this.previous().length>0}isSourcesContent(){return void 0!==this.mapOpts.sourcesContent?this.mapOpts.sourcesContent:!this.previous().length||this.previous().some((e=>e.withContent()))}outputFile(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"}path(e){if(this.mapOpts.absolute)return e;if(60===e.charCodeAt(0))return e;if(/^\w+:\/\//.test(e))return e;let t=this.memoizedPaths.get(e);if(t)return t;let n=this.opts.to?jr(this.opts.to):".";"string"==typeof this.mapOpts.annotation&&(n=jr(Br(n,this.mapOpts.annotation)));let o=Fr(n,e);return this.memoizedPaths.set(e,o),o}previous(){if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk((e=>{if(e.source&&e.source.input.map){let t=e.source.input.map;this.previousMaps.includes(t)||this.previousMaps.push(t)}}));else{let e=new Hr(this.originalCSS,this.opts);e.map&&this.previousMaps.push(e.map)}return this.previousMaps}setSourcesContent(){let e={};if(this.root)this.root.walk((t=>{if(t.source){let n=t.source.input.from;if(n&&!e[n]){e[n]=!0;let o=this.usesFileUrls?this.toFileUrl(n):this.toUrl(this.path(n));this.map.setSourceContent(o,t.source.input.css)}}}));else if(this.css){let e=this.opts.from?this.toUrl(this.path(this.opts.from)):"";this.map.setSourceContent(e,this.css)}}sourcePath(e){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(e.source.input.from):this.toUrl(this.path(e.source.input.from))}toBase64(e){return Buffer?Buffer.from(e).toString("base64"):window.btoa(unescape(encodeURIComponent(e)))}toFileUrl(e){let t=this.memoizedFileURLs.get(e);if(t)return t;if(Ur){let t=Ur(e).toString();return this.memoizedFileURLs.set(e,t),t}throw new Error("`map.absolute` option is not available in this PostCSS build")}toUrl(e){let t=this.memoizedURLs.get(e);if(t)return t;"\\"===_r&&(e=e.replace(/\\/g,"/"));let n=encodeURI(e).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(e,n),n}};let Vr=ar,Gr=class extends Vr{constructor(e){super(e),this.type="comment"}};var Xr=Gr;Gr.default=Gr;let Yr,Jr,Kr,Zr,{isClean:$r,my:Qr}=Go,ei=cr,ti=Xr,ni=ar;function oi(e){return e.map((e=>(e.nodes&&(e.nodes=oi(e.nodes)),delete e.source,e)))}function ri(e){if(e[$r]=!1,e.proxyOf.nodes)for(let t of e.proxyOf.nodes)ri(t)}let ii=class e extends ni{append(...e){for(let t of e){let e=this.normalize(t,this.last);for(let t of e)this.proxyOf.nodes.push(t)}return this.markDirty(),this}cleanRaws(e){if(super.cleanRaws(e),this.nodes)for(let t of this.nodes)t.cleanRaws(e)}each(e){if(!this.proxyOf.nodes)return;let t,n,o=this.getIterator();for(;this.indexes[o]"proxyOf"===t?e:e[t]?"each"===t||"string"==typeof t&&t.startsWith("walk")?(...n)=>e[t](...n.map((e=>"function"==typeof e?(t,n)=>e(t.toProxy(),n):e))):"every"===t||"some"===t?n=>e[t](((e,...t)=>n(e.toProxy(),...t))):"root"===t?()=>e.root().toProxy():"nodes"===t?e.nodes.map((e=>e.toProxy())):"first"===t||"last"===t?e[t].toProxy():e[t]:e[t],set:(e,t,n)=>(e[t]===n||(e[t]=n,"name"!==t&&"params"!==t&&"selector"!==t||e.markDirty()),!0)}}index(e){return"number"==typeof e?e:(e.proxyOf&&(e=e.proxyOf),this.proxyOf.nodes.indexOf(e))}insertAfter(e,t){let n,o=this.index(e),r=this.normalize(t,this.proxyOf.nodes[o]).reverse();o=this.index(e);for(let i of r)this.proxyOf.nodes.splice(o+1,0,i);for(let i in this.indexes)n=this.indexes[i],o(t[Qr]||e.rebuild(t),(t=t.proxyOf).parent&&t.parent.removeChild(t),t[$r]&&ri(t),void 0===t.raws.before&&n&&void 0!==n.raws.before&&(t.raws.before=n.raws.before.replace(/\S/g,"")),t.parent=this.proxyOf,t)))}prepend(...e){e=e.reverse();for(let t of e){let e=this.normalize(t,this.first,"prepend").reverse();for(let t of e)this.proxyOf.nodes.unshift(t);for(let t in this.indexes)this.indexes[t]=this.indexes[t]+e.length}return this.markDirty(),this}push(e){return e.parent=this,this.proxyOf.nodes.push(e),this}removeAll(){for(let e of this.proxyOf.nodes)e.parent=void 0;return this.proxyOf.nodes=[],this.markDirty(),this}removeChild(e){let t;e=this.index(e),this.proxyOf.nodes[e].parent=void 0,this.proxyOf.nodes.splice(e,1);for(let n in this.indexes)t=this.indexes[n],t>=e&&(this.indexes[n]=t-1);return this.markDirty(),this}replaceValues(e,t,n){return n||(n=t,t={}),this.walkDecls((o=>{t.props&&!t.props.includes(o.prop)||t.fast&&!o.value.includes(t.fast)||(o.value=o.value.replace(e,n))})),this.markDirty(),this}some(e){return this.nodes.some(e)}walk(e){return this.each(((t,n)=>{let o;try{o=e(t,n)}catch(r){throw t.addToError(r)}return!1!==o&&t.walk&&(o=t.walk(e)),o}))}walkAtRules(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("atrule"===n.type&&e.test(n.name))return t(n,o)})):this.walk(((n,o)=>{if("atrule"===n.type&&n.name===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("atrule"===e.type)return t(e,n)})))}walkComments(e){return this.walk(((t,n)=>{if("comment"===t.type)return e(t,n)}))}walkDecls(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("decl"===n.type&&e.test(n.prop))return t(n,o)})):this.walk(((n,o)=>{if("decl"===n.type&&n.prop===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("decl"===e.type)return t(e,n)})))}walkRules(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("rule"===n.type&&e.test(n.selector))return t(n,o)})):this.walk(((n,o)=>{if("rule"===n.type&&n.selector===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("rule"===e.type)return t(e,n)})))}get first(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}get last(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}};ii.registerParse=e=>{Yr=e},ii.registerRule=e=>{Jr=e},ii.registerAtRule=e=>{Kr=e},ii.registerRoot=e=>{Zr=e};var ai=ii;ii.default=ii,ii.rebuild=e=>{"atrule"===e.type?Object.setPrototypeOf(e,Kr.prototype):"rule"===e.type?Object.setPrototypeOf(e,Jr.prototype):"decl"===e.type?Object.setPrototypeOf(e,ei.prototype):"comment"===e.type?Object.setPrototypeOf(e,ti.prototype):"root"===e.type&&Object.setPrototypeOf(e,Zr.prototype),e[Qr]=!0,e.nodes&&e.nodes.forEach((e=>{ii.rebuild(e)}))};let si,li,ci=ai,ui=class extends ci{constructor(e){super({type:"document",...e}),this.nodes||(this.nodes=[])}toResult(e={}){return new si(new li,this,e).stringify()}};ui.registerLazyResult=e=>{si=e},ui.registerProcessor=e=>{li=e};var di=ui;ui.default=ui;let pi=class{constructor(e,t={}){if(this.type="warning",this.text=e,t.node&&t.node.source){let e=t.node.rangeBy(t);this.line=e.start.line,this.column=e.start.column,this.endLine=e.end.line,this.endColumn=e.end.column}for(let n in t)this[n]=t[n]}toString(){return this.node?this.node.error(this.text,{index:this.index,plugin:this.plugin,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text}};var hi=pi;pi.default=pi;let fi=hi,mi=class{constructor(e,t,n){this.processor=e,this.messages=[],this.root=t,this.opts=n,this.css=void 0,this.map=void 0}toString(){return this.css}warn(e,t={}){t.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(t.plugin=this.lastPlugin.postcssPlugin);let n=new fi(e,t);return this.messages.push(n),n}warnings(){return this.messages.filter((e=>"warning"===e.type))}get content(){return this.css}};var gi=mi;mi.default=mi;const vi="'".charCodeAt(0),yi='"'.charCodeAt(0),bi="\\".charCodeAt(0),wi="/".charCodeAt(0),ki="\n".charCodeAt(0),xi=" ".charCodeAt(0),Si="\f".charCodeAt(0),Ci="\t".charCodeAt(0),Ii="\r".charCodeAt(0),Ei="[".charCodeAt(0),Ti="]".charCodeAt(0),Oi="(".charCodeAt(0),Li=")".charCodeAt(0),Ai="{".charCodeAt(0),Mi="}".charCodeAt(0),Ri=";".charCodeAt(0),Pi="*".charCodeAt(0),Di=":".charCodeAt(0),Ni="@".charCodeAt(0),ji=/[\t\n\f\r "#'()/;[\\\]{}]/g,Fi=/[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g,Bi=/.[\r\n"'(/\\]/,_i=/[\da-f]/i;let Ui=ai,Hi=class extends Ui{constructor(e){super(e),this.type="atrule"}append(...e){return this.proxyOf.nodes||(this.nodes=[]),super.append(...e)}prepend(...e){return this.proxyOf.nodes||(this.nodes=[]),super.prepend(...e)}};var zi=Hi;Hi.default=Hi,Ui.registerAtRule(Hi);let qi,Wi,Vi=ai,Gi=class extends Vi{constructor(e){super(e),this.type="root",this.nodes||(this.nodes=[])}normalize(e,t,n){let o=super.normalize(e);if(t)if("prepend"===n)this.nodes.length>1?t.raws.before=this.nodes[1].raws.before:delete t.raws.before;else if(this.first!==t)for(let r of o)r.raws.before=t.raws.before;return o}removeChild(e,t){let n=this.index(e);return!t&&0===n&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[n].raws.before),super.removeChild(e)}toResult(e={}){return new qi(new Wi,this,e).stringify()}};Gi.registerLazyResult=e=>{qi=e},Gi.registerProcessor=e=>{Wi=e};var Xi=Gi;Gi.default=Gi,Vi.registerRoot(Gi);let Yi={comma:e=>Yi.split(e,[","],!0),space:e=>Yi.split(e,[" ","\n","\t"]),split(e,t,n){let o=[],r="",i=!1,a=0,s=!1,l="",c=!1;for(let u of e)c?c=!1:"\\"===u?c=!0:s?u===l&&(s=!1):'"'===u||"'"===u?(s=!0,l=u):"("===u?a+=1:")"===u?a>0&&(a-=1):0===a&&t.includes(u)&&(i=!0),i?(""!==r&&o.push(r.trim()),r="",i=!1):r+=u;return(n||""!==r)&&o.push(r.trim()),o}};var Ji=Yi;Yi.default=Yi;let Ki=ai,Zi=Ji,$i=class extends Ki{constructor(e){super(e),this.type="rule",this.nodes||(this.nodes=[])}get selectors(){return Zi.comma(this.selector)}set selectors(e){let t=this.selector?this.selector.match(/,\s*/):null,n=t?t[0]:","+this.raw("between","beforeOpen");this.selector=e.join(n)}};var Qi=$i;$i.default=$i,Ki.registerRule($i);let ea=cr,ta=function(e,t={}){let n,o,r,i,a,s,l,c,u,d,p=e.css.valueOf(),h=t.ignoreErrors,f=p.length,m=0,g=[],v=[];function y(t){throw e.error("Unclosed "+t,m)}return{back:function(e){v.push(e)},endOfFile:function(){return 0===v.length&&m>=f},nextToken:function(e){if(v.length)return v.pop();if(m>=f)return;let t=!!e&&e.ignoreUnclosed;switch(n=p.charCodeAt(m),n){case ki:case xi:case Ci:case Ii:case Si:o=m;do{o+=1,n=p.charCodeAt(o)}while(n===xi||n===ki||n===Ci||n===Ii||n===Si);d=["space",p.slice(m,o)],m=o-1;break;case Ei:case Ti:case Ai:case Mi:case Di:case Ri:case Li:{let e=String.fromCharCode(n);d=[e,e,m];break}case Oi:if(c=g.length?g.pop()[1]:"",u=p.charCodeAt(m+1),"url"===c&&u!==vi&&u!==yi&&u!==xi&&u!==ki&&u!==Ci&&u!==Si&&u!==Ii){o=m;do{if(s=!1,o=p.indexOf(")",o+1),-1===o){if(h||t){o=m;break}y("bracket")}for(l=o;p.charCodeAt(l-1)===bi;)l-=1,s=!s}while(s);d=["brackets",p.slice(m,o+1),m,o],m=o}else o=p.indexOf(")",m+1),i=p.slice(m,o+1),-1===o||Bi.test(i)?d=["(","(",m]:(d=["brackets",i,m,o],m=o);break;case vi:case yi:r=n===vi?"'":'"',o=m;do{if(s=!1,o=p.indexOf(r,o+1),-1===o){if(h||t){o=m+1;break}y("string")}for(l=o;p.charCodeAt(l-1)===bi;)l-=1,s=!s}while(s);d=["string",p.slice(m,o+1),m,o],m=o;break;case Ni:ji.lastIndex=m+1,ji.test(p),o=0===ji.lastIndex?p.length-1:ji.lastIndex-2,d=["at-word",p.slice(m,o+1),m,o],m=o;break;case bi:for(o=m,a=!0;p.charCodeAt(o+1)===bi;)o+=1,a=!a;if(n=p.charCodeAt(o+1),a&&n!==wi&&n!==xi&&n!==ki&&n!==Ci&&n!==Ii&&n!==Si&&(o+=1,_i.test(p.charAt(o)))){for(;_i.test(p.charAt(o+1));)o+=1;p.charCodeAt(o+1)===xi&&(o+=1)}d=["word",p.slice(m,o+1),m,o],m=o;break;default:n===wi&&p.charCodeAt(m+1)===Pi?(o=p.indexOf("*/",m+2)+1,0===o&&(h||t?o=p.length:y("comment")),d=["comment",p.slice(m,o+1),m,o],m=o):(Fi.lastIndex=m+1,Fi.test(p),o=0===Fi.lastIndex?p.length-1:Fi.lastIndex-2,d=["word",p.slice(m,o+1),m,o],g.push(d),m=o)}return m++,d},position:function(){return m}}},na=Xr,oa=zi,ra=Xi,ia=Qi;const aa={empty:!0,space:!0};var sa=class{constructor(e){this.input=e,this.root=new ra,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:e,start:{column:1,line:1,offset:0}}}atrule(e){let t,n,o,r=new oa;r.name=e[1].slice(1),""===r.name&&this.unnamedAtrule(r,e),this.init(r,e[2]);let i=!1,a=!1,s=[],l=[];for(;!this.tokenizer.endOfFile();){if(t=(e=this.tokenizer.nextToken())[0],"("===t||"["===t?l.push("("===t?")":"]"):"{"===t&&l.length>0?l.push("}"):t===l[l.length-1]&&l.pop(),0===l.length){if(";"===t){r.source.end=this.getPosition(e[2]),r.source.end.offset++,this.semicolon=!0;break}if("{"===t){a=!0;break}if("}"===t){if(s.length>0){for(o=s.length-1,n=s[o];n&&"space"===n[0];)n=s[--o];n&&(r.source.end=this.getPosition(n[3]||n[2]),r.source.end.offset++)}this.end(e);break}s.push(e)}else s.push(e);if(this.tokenizer.endOfFile()){i=!0;break}}r.raws.between=this.spacesAndCommentsFromEnd(s),s.length?(r.raws.afterName=this.spacesAndCommentsFromStart(s),this.raw(r,"params",s),i&&(e=s[s.length-1],r.source.end=this.getPosition(e[3]||e[2]),r.source.end.offset++,this.spaces=r.raws.between,r.raws.between="")):(r.raws.afterName="",r.params=""),a&&(r.nodes=[],this.current=r)}checkMissedSemicolon(e){let t=this.colon(e);if(!1===t)return;let n,o=0;for(let r=t-1;r>=0&&(n=e[r],"space"===n[0]||(o+=1,2!==o));r--);throw this.input.error("Missed semicolon","word"===n[0]?n[3]+1:n[2])}colon(e){let t,n,o,r=0;for(let[i,a]of e.entries()){if(t=a,n=t[0],"("===n&&(r+=1),")"===n&&(r-=1),0===r&&":"===n){if(o){if("word"===o[0]&&"progid"===o[1])continue;return i}this.doubleColon(t)}o=t}return!1}comment(e){let t=new na;this.init(t,e[2]),t.source.end=this.getPosition(e[3]||e[2]),t.source.end.offset++;let n=e[1].slice(2,-2);if(/^\s*$/.test(n))t.text="",t.raws.left=n,t.raws.right="";else{let e=n.match(/^(\s*)([^]*\S)(\s*)$/);t.text=e[2],t.raws.left=e[1],t.raws.right=e[3]}}createTokenizer(){this.tokenizer=ta(this.input)}decl(e,t){let n=new ea;this.init(n,e[0][2]);let o,r=e[e.length-1];for(";"===r[0]&&(this.semicolon=!0,e.pop()),n.source.end=this.getPosition(r[3]||r[2]||function(e){for(let t=e.length-1;t>=0;t--){let n=e[t],o=n[3]||n[2];if(o)return o}}(e)),n.source.end.offset++;"word"!==e[0][0];)1===e.length&&this.unknownWord(e),n.raws.before+=e.shift()[1];for(n.source.start=this.getPosition(e[0][2]),n.prop="";e.length;){let t=e[0][0];if(":"===t||"space"===t||"comment"===t)break;n.prop+=e.shift()[1]}for(n.raws.between="";e.length;){if(o=e.shift(),":"===o[0]){n.raws.between+=o[1];break}"word"===o[0]&&/\w/.test(o[1])&&this.unknownWord([o]),n.raws.between+=o[1]}"_"!==n.prop[0]&&"*"!==n.prop[0]||(n.raws.before+=n.prop[0],n.prop=n.prop.slice(1));let i,a=[];for(;e.length&&(i=e[0][0],"space"===i||"comment"===i);)a.push(e.shift());this.precheckMissedSemicolon(e);for(let s=e.length-1;s>=0;s--){if(o=e[s],"!important"===o[1].toLowerCase()){n.important=!0;let t=this.stringFrom(e,s);t=this.spacesFromEnd(e)+t," !important"!==t&&(n.raws.important=t);break}if("important"===o[1].toLowerCase()){let t=e.slice(0),o="";for(let e=s;e>0;e--){let n=t[e][0];if(0===o.trim().indexOf("!")&&"space"!==n)break;o=t.pop()[1]+o}0===o.trim().indexOf("!")&&(n.important=!0,n.raws.important=o,e=t)}if("space"!==o[0]&&"comment"!==o[0])break}e.some((e=>"space"!==e[0]&&"comment"!==e[0]))&&(n.raws.between+=a.map((e=>e[1])).join(""),a=[]),this.raw(n,"value",a.concat(e),t),n.value.includes(":")&&!t&&this.checkMissedSemicolon(e)}doubleColon(e){throw this.input.error("Double colon",{offset:e[2]},{offset:e[2]+e[1].length})}emptyRule(e){let t=new ia;this.init(t,e[2]),t.selector="",t.raws.between="",this.current=t}end(e){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(e[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(e)}endFile(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position())}freeSemicolon(e){if(this.spaces+=e[1],this.current.nodes){let e=this.current.nodes[this.current.nodes.length-1];e&&"rule"===e.type&&!e.raws.ownSemicolon&&(e.raws.ownSemicolon=this.spaces,this.spaces="")}}getPosition(e){let t=this.input.fromOffset(e);return{column:t.col,line:t.line,offset:e}}init(e,t){this.current.push(e),e.source={input:this.input,start:this.getPosition(t)},e.raws.before=this.spaces,this.spaces="","comment"!==e.type&&(this.semicolon=!1)}other(e){let t=!1,n=null,o=!1,r=null,i=[],a=e[1].startsWith("--"),s=[],l=e;for(;l;){if(n=l[0],s.push(l),"("===n||"["===n)r||(r=l),i.push("("===n?")":"]");else if(a&&o&&"{"===n)r||(r=l),i.push("}");else if(0===i.length){if(";"===n){if(o)return void this.decl(s,a);break}if("{"===n)return void this.rule(s);if("}"===n){this.tokenizer.back(s.pop()),t=!0;break}":"===n&&(o=!0)}else n===i[i.length-1]&&(i.pop(),0===i.length&&(r=null));l=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(t=!0),i.length>0&&this.unclosedBracket(r),t&&o){if(!a)for(;s.length&&(l=s[s.length-1][0],"space"===l||"comment"===l);)this.tokenizer.back(s.pop());this.decl(s,a)}else this.unknownWord(s)}parse(){let e;for(;!this.tokenizer.endOfFile();)switch(e=this.tokenizer.nextToken(),e[0]){case"space":this.spaces+=e[1];break;case";":this.freeSemicolon(e);break;case"}":this.end(e);break;case"comment":this.comment(e);break;case"at-word":this.atrule(e);break;case"{":this.emptyRule(e);break;default:this.other(e)}this.endFile()}precheckMissedSemicolon(){}raw(e,t,n,o){let r,i,a,s,l=n.length,c="",u=!0;for(let d=0;de+t[1]),"");e.raws[t]={raw:o,value:c}}e[t]=c}rule(e){e.pop();let t=new ia;this.init(t,e[0][2]),t.raws.between=this.spacesAndCommentsFromEnd(e),this.raw(t,"selector",e),this.current=t}spacesAndCommentsFromEnd(e){let t,n="";for(;e.length&&(t=e[e.length-1][0],"space"===t||"comment"===t);)n=e.pop()[1]+n;return n}spacesAndCommentsFromStart(e){let t,n="";for(;e.length&&(t=e[0][0],"space"===t||"comment"===t);)n+=e.shift()[1];return n}spacesFromEnd(e){let t,n="";for(;e.length&&(t=e[e.length-1][0],"space"===t);)n=e.pop()[1]+n;return n}stringFrom(e,t){let n="";for(let o=t;oLa(e))),e}let Aa={},Ma=class e{constructor(t,n,o){let r;if(this.stringified=!1,this.processed=!1,"object"!=typeof n||null===n||"root"!==n.type&&"document"!==n.type)if(n instanceof e||n instanceof ba)r=La(n.root),n.map&&(void 0===o.map&&(o.map={}),o.map.inline||(o.map.inline=!1),o.map.prev=n.map);else{let e=wa;o.syntax&&(e=o.syntax.parse),o.parser&&(e=o.parser),e.parse&&(e=e.parse);try{r=e(n,o)}catch(i){this.processed=!0,this.error=i}r&&!r[fa]&&va.rebuild(r)}else r=La(n);this.result=new ba(t,r,o),this.helpers={...Aa,postcss:Aa,result:this.result},this.plugins=this.processor.plugins.map((e=>"object"==typeof e&&e.prepare?{...e,...e.prepare(this.result)}:e))}async(){return this.error?Promise.reject(this.error):this.processed?Promise.resolve(this.result):(this.processing||(this.processing=this.runAsync()),this.processing)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}getAsyncError(){throw new Error("Use process(css).then(cb) to work with async plugins")}handleError(e,t){let n=this.result.lastPlugin;try{t&&t.addToError(e),this.error=e,"CssSyntaxError"!==e.name||e.plugin?n.postcssVersion:(e.plugin=n.postcssPlugin,e.setMessage())}catch(o){console&&console.error&&console.error(o)}return e}prepareVisitors(){this.listeners={};let e=(e,t,n)=>{this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].push([e,n])};for(let t of this.plugins)if("object"==typeof t)for(let n in t){if(!Sa[n]&&/^[A-Z]/.test(n))throw new Error(`Unknown event ${n} in ${t.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`);if(!Ca[n])if("object"==typeof t[n])for(let o in t[n])e(t,"*"===o?n:n+"-"+o.toLowerCase(),t[n][o]);else"function"==typeof t[n]&&e(t,n,t[n])}this.hasListener=Object.keys(this.listeners).length>0}async runAsync(){this.plugin=0;for(let n=0;n0;){let e=this.visitTick(n);if(Ea(e))try{await e}catch(t){let e=n[n.length-1].node;throw this.handleError(t,e)}}}if(this.listeners.OnceExit)for(let[n,o]of this.listeners.OnceExit){this.result.lastPlugin=n;try{if("document"===e.type){let t=e.nodes.map((e=>o(e,this.helpers)));await Promise.all(t)}else await o(e,this.helpers)}catch(t){throw this.handleError(t)}}}return this.processed=!0,this.stringify()}runOnRoot(e){this.result.lastPlugin=e;try{if("object"==typeof e&&e.Once){if("document"===this.result.root.type){let t=this.result.root.nodes.map((t=>e.Once(t,this.helpers)));return Ea(t[0])?Promise.all(t):t}return e.Once(this.result.root,this.helpers)}if("function"==typeof e)return e(this.result.root,this.result)}catch(t){throw this.handleError(t)}}stringify(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();let e=this.result.opts,t=ga;e.syntax&&(t=e.syntax.stringify),e.stringifier&&(t=e.stringifier),t.stringify&&(t=t.stringify);let n=new ma(t,this.result.root,this.result.opts).generate();return this.result.css=n[0],this.result.map=n[1],this.result}sync(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(let e of this.plugins){if(Ea(this.runOnRoot(e)))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){let e=this.result.root;for(;!e[ha];)e[ha]=!0,this.walkSync(e);if(this.listeners.OnceExit)if("document"===e.type)for(let t of e.nodes)this.visitSync(this.listeners.OnceExit,t);else this.visitSync(this.listeners.OnceExit,e)}return this.result}then(e,t){return this.async().then(e,t)}toString(){return this.css}visitSync(e,t){for(let[o,r]of e){let e;this.result.lastPlugin=o;try{e=r(t,this.helpers)}catch(n){throw this.handleError(n,t.proxyOf)}if("root"!==t.type&&"document"!==t.type&&!t.parent)return!0;if(Ea(e))throw this.getAsyncError()}}visitTick(e){let t=e[e.length-1],{node:n,visitors:o}=t;if("root"!==n.type&&"document"!==n.type&&!n.parent)return void e.pop();if(o.length>0&&t.visitorIndex{e[ha]||this.walkSync(e)}));else{let t=this.listeners[n];if(t&&this.visitSync(t,e.toProxy()))return}}warnings(){return this.sync().warnings()}get content(){return this.stringify().content}get css(){return this.stringify().css}get map(){return this.stringify().map}get messages(){return this.sync().messages}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){return this.sync().root}get[Symbol.toStringTag](){return"LazyResult"}};Ma.registerPostcss=e=>{Aa=e};var Ra=Ma;Ma.default=Ma,ka.registerLazyResult(Ma),ya.registerLazyResult(Ma);let Pa=Wr,Da=$o,Na=pa;const ja=gi;let Fa=class{constructor(e,t,n){let o;t=t.toString(),this.stringified=!1,this._processor=e,this._css=t,this._opts=n,this._map=void 0;let r=Da;this.result=new ja(this._processor,o,this._opts),this.result.css=t;let i=this;Object.defineProperty(this.result,"root",{get:()=>i.root});let a=new Pa(r,o,this._opts,t);if(a.isMap()){let[e,t]=a.generate();e&&(this.result.css=e),t&&(this.result.map=t)}else a.clearAnnotation(),this.result.css=a.css}async(){return this.error?Promise.reject(this.error):Promise.resolve(this.result)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}sync(){if(this.error)throw this.error;return this.result}then(e,t){return this.async().then(e,t)}toString(){return this._css}warnings(){return[]}get content(){return this.result.css}get css(){return this.result.css}get map(){return this.result.map}get messages(){return[]}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){if(this._root)return this._root;let e,t=Na;try{e=t(this._css,this._opts)}catch(n){this.error=n}if(this.error)throw this.error;return this._root=e,e}get[Symbol.toStringTag](){return"NoWorkResult"}};var Ba=Fa;Fa.default=Fa;let _a=Ba,Ua=Ra,Ha=di,za=Xi,qa=class{constructor(e=[]){this.version="8.4.38",this.plugins=this.normalize(e)}normalize(e){let t=[];for(let n of e)if(!0===n.postcss?n=n():n.postcss&&(n=n.postcss),"object"==typeof n&&Array.isArray(n.plugins))t=t.concat(n.plugins);else if("object"==typeof n&&n.postcssPlugin)t.push(n);else if("function"==typeof n)t.push(n);else{if("object"!=typeof n||!n.parse&&!n.stringify)throw new Error(n+" is not a PostCSS plugin")}return t}process(e,t={}){return this.plugins.length||t.parser||t.stringifier||t.syntax?new Ua(this,e,t):new _a(this,e,t)}use(e){return this.plugins=this.plugins.concat(this.normalize([e])),this}};var Wa=qa;qa.default=qa,za.registerProcessor(qa),Ha.registerProcessor(qa);let Va=cr,Ga=yr,Xa=Xr,Ya=zi,Ja=Pr,Ka=Xi,Za=Qi;function $a(e,t){if(Array.isArray(e))return e.map((e=>$a(e)));let{inputs:n,...o}=e;if(n){t=[];for(let e of n){let n={...e,__proto__:Ja.prototype};n.map&&(n.map={...n.map,__proto__:Ga.prototype}),t.push(n)}}if(o.nodes&&(o.nodes=e.nodes.map((e=>$a(e,t)))),o.source){let{inputId:e,...n}=o.source;o.source=n,null!=e&&(o.source.input=t[e])}if("root"===o.type)return new Ka(o);if("decl"===o.type)return new Va(o);if("rule"===o.type)return new Za(o);if("comment"===o.type)return new Xa(o);if("atrule"===o.type)return new Ya(o);throw new Error("Unknown node type: "+e.type)}var Qa=$a;$a.default=$a;let es=Vo,ts=cr,ns=Ra,os=ai,rs=Wa,is=$o,as=Qa,ss=di,ls=hi,cs=Xr,us=zi,ds=gi,ps=Pr,hs=pa,fs=Ji,ms=Qi,gs=Xi,vs=ar;function ys(...e){return 1===e.length&&Array.isArray(e[0])&&(e=e[0]),new rs(e)}ys.plugin=function(e,t){let n,o=!1;function r(...n){console&&console.warn&&!o&&(o=!0,console.warn(e+": postcss.plugin was deprecated. Migration guide:\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration"),process.env.LANG&&process.env.LANG.startsWith("cn")&&console.warn(e+": 里面 postcss.plugin 被弃用. 迁移指南:\nhttps://www.w3ctech.com/topic/2226"));let r=t(...n);return r.postcssPlugin=e,r.postcssVersion=(new rs).version,r}return Object.defineProperty(r,"postcss",{get:()=>(n||(n=r()),n)}),r.process=function(e,t,n){return ys([r(n)]).process(e,t)},r},ys.stringify=is,ys.parse=hs,ys.fromJSON=as,ys.list=fs,ys.comment=e=>new cs(e),ys.atRule=e=>new us(e),ys.decl=e=>new ts(e),ys.rule=e=>new ms(e),ys.root=e=>new gs(e),ys.document=e=>new ss(e),ys.CssSyntaxError=es,ys.Declaration=ts,ys.Container=os,ys.Processor=rs,ys.Document=ss,ys.Comment=cs,ys.Warning=ls,ys.AtRule=us,ys.Result=ds,ys.Input=ps,ys.Rule=ms,ys.Root=gs,ys.Node=vs,ns.registerPostcss(ys);var bs=ys;ys.default=ys;const ws=No(bs);ws.stringify,ws.fromJSON,ws.plugin,ws.parse,ws.list,ws.document,ws.comment,ws.atRule,ws.rule,ws.decl,ws.root,ws.CssSyntaxError,ws.Declaration,ws.Container,ws.Processor,ws.Document,ws.Comment,ws.Warning,ws.AtRule,ws.Result,ws.Input,ws.Rule,ws.Root,ws.Node;var ks=Object.defineProperty,xs=(e,t,n)=>((e,t,n)=>t in e?ks(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,"symbol"!=typeof t?t+"":t,n);function Ss(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function Cs(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var n=function e(){return this instanceof e?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,o.get?o:{enumerable:!0,get:function(){return e[t]}})})),n}var Is={exports:{}},Es=String,Ts=function(){return{isColorSupported:!1,reset:Es,bold:Es,dim:Es,italic:Es,underline:Es,inverse:Es,hidden:Es,strikethrough:Es,black:Es,red:Es,green:Es,yellow:Es,blue:Es,magenta:Es,cyan:Es,white:Es,gray:Es,bgBlack:Es,bgRed:Es,bgGreen:Es,bgYellow:Es,bgBlue:Es,bgMagenta:Es,bgCyan:Es,bgWhite:Es}};Is.exports=Ts(),Is.exports.createColors=Ts;var Os=Is.exports;const Ls=Cs(Object.freeze(Object.defineProperty({__proto__:null,default:{}},Symbol.toStringTag,{value:"Module"})));let As=Os,Ms=Ls,Rs=class e extends Error{constructor(t,n,o,r,i,a){super(t),this.name="CssSyntaxError",this.reason=t,i&&(this.file=i),r&&(this.source=r),a&&(this.plugin=a),void 0!==n&&void 0!==o&&("number"==typeof n?(this.line=n,this.column=o):(this.line=n.line,this.column=n.column,this.endLine=o.line,this.endColumn=o.column)),this.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(this,e)}setMessage(){this.message=this.plugin?this.plugin+": ":"",this.message+=this.file?this.file:"",void 0!==this.line&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason}showSourceCode(e){if(!this.source)return"";let t=this.source;null==e&&(e=As.isColorSupported),Ms&&e&&(t=Ms(t));let n,o,r=t.split(/\r?\n/),i=Math.max(this.line-3,0),a=Math.min(this.line+2,r.length),s=String(a).length;if(e){let{bold:e,gray:t,red:r}=As.createColors(!0);n=t=>e(r(t)),o=e=>t(e)}else n=o=e=>e;return r.slice(i,a).map(((e,t)=>{let r=i+1+t,a=" "+(" "+r).slice(-s)+" | ";if(r===this.line){let t=o(a.replace(/\d/g," "))+e.slice(0,this.column-1).replace(/[^\t]/g," ");return n(">")+o(a)+e+"\n "+t+n("^")}return" "+o(a)+e})).join("\n")}toString(){let e=this.showSourceCode();return e&&(e="\n\n"+e+"\n"),this.name+": "+this.message+e}};var Ps=Rs;Rs.default=Rs;var Ds={};Ds.isClean=Symbol("isClean"),Ds.my=Symbol("my");const Ns={after:"\n",beforeClose:"\n",beforeComment:"\n",beforeDecl:"\n",beforeOpen:" ",beforeRule:"\n",colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:!1};let js=class{constructor(e){this.builder=e}atrule(e,t){let n="@"+e.name,o=e.params?this.rawValue(e,"params"):"";if(void 0!==e.raws.afterName?n+=e.raws.afterName:o&&(n+=" "),e.nodes)this.block(e,n+o);else{let r=(e.raws.between||"")+(t?";":"");this.builder(n+o+r,e)}}beforeAfter(e,t){let n;n="decl"===e.type?this.raw(e,null,"beforeDecl"):"comment"===e.type?this.raw(e,null,"beforeComment"):"before"===t?this.raw(e,null,"beforeRule"):this.raw(e,null,"beforeClose");let o=e.parent,r=0;for(;o&&"root"!==o.type;)r+=1,o=o.parent;if(n.includes("\n")){let t=this.raw(e,null,"indent");if(t.length)for(let e=0;e0&&"comment"===e.nodes[t].type;)t-=1;let n=this.raw(e,"semicolon");for(let o=0;o{if(o=e.raws[t],void 0!==o)return!1}))}var a;return void 0===o&&(o=Ns[n]),i.rawCache[n]=o,o}rawBeforeClose(e){let t;return e.walk((e=>{if(e.nodes&&e.nodes.length>0&&void 0!==e.raws.after)return t=e.raws.after,t.includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1})),t&&(t=t.replace(/\S/g,"")),t}rawBeforeComment(e,t){let n;return e.walkComments((e=>{if(void 0!==e.raws.before)return n=e.raws.before,n.includes("\n")&&(n=n.replace(/[^\n]+$/,"")),!1})),void 0===n?n=this.raw(t,null,"beforeDecl"):n&&(n=n.replace(/\S/g,"")),n}rawBeforeDecl(e,t){let n;return e.walkDecls((e=>{if(void 0!==e.raws.before)return n=e.raws.before,n.includes("\n")&&(n=n.replace(/[^\n]+$/,"")),!1})),void 0===n?n=this.raw(t,null,"beforeRule"):n&&(n=n.replace(/\S/g,"")),n}rawBeforeOpen(e){let t;return e.walk((e=>{if("decl"!==e.type&&(t=e.raws.between,void 0!==t))return!1})),t}rawBeforeRule(e){let t;return e.walk((n=>{if(n.nodes&&(n.parent!==e||e.first!==n)&&void 0!==n.raws.before)return t=n.raws.before,t.includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1})),t&&(t=t.replace(/\S/g,"")),t}rawColon(e){let t;return e.walkDecls((e=>{if(void 0!==e.raws.between)return t=e.raws.between.replace(/[^\s:]/g,""),!1})),t}rawEmptyBody(e){let t;return e.walk((e=>{if(e.nodes&&0===e.nodes.length&&(t=e.raws.after,void 0!==t))return!1})),t}rawIndent(e){if(e.raws.indent)return e.raws.indent;let t;return e.walk((n=>{let o=n.parent;if(o&&o!==e&&o.parent&&o.parent===e&&void 0!==n.raws.before){let e=n.raws.before.split("\n");return t=e[e.length-1],t=t.replace(/\S/g,""),!1}})),t}rawSemicolon(e){let t;return e.walk((e=>{if(e.nodes&&e.nodes.length&&"decl"===e.last.type&&(t=e.raws.semicolon,void 0!==t))return!1})),t}rawValue(e,t){let n=e[t],o=e.raws[t];return o&&o.value===n?o.raw:n}root(e){this.body(e),e.raws.after&&this.builder(e.raws.after)}rule(e){this.block(e,this.rawValue(e,"selector")),e.raws.ownSemicolon&&this.builder(e.raws.ownSemicolon,e,"end")}stringify(e,t){if(!this[e.type])throw new Error("Unknown AST node type "+e.type+". Maybe you need to change PostCSS stringifier.");this[e.type](e,t)}};var Fs=js;js.default=js;let Bs=Fs;function _s(e,t){new Bs(t).stringify(e)}var Us=_s;_s.default=_s;let{isClean:Hs,my:zs}=Ds,qs=Ps,Ws=Fs,Vs=Us;function Gs(e,t){let n=new e.constructor;for(let o in e){if(!Object.prototype.hasOwnProperty.call(e,o))continue;if("proxyCache"===o)continue;let r=e[o],i=typeof r;"parent"===o&&"object"===i?t&&(n[o]=t):"source"===o?n[o]=r:Array.isArray(r)?n[o]=r.map((e=>Gs(e,n))):("object"===i&&null!==r&&(r=Gs(r)),n[o]=r)}return n}let Xs=class{constructor(e={}){this.raws={},this[Hs]=!1,this[zs]=!0;for(let t in e)if("nodes"===t){this.nodes=[];for(let n of e[t])"function"==typeof n.clone?this.append(n.clone()):this.append(n)}else this[t]=e[t]}addToError(e){if(e.postcssNode=this,e.stack&&this.source&&/\n\s{4}at /.test(e.stack)){let t=this.source;e.stack=e.stack.replace(/\n\s{4}at /,`$&${t.input.from}:${t.start.line}:${t.start.column}$&`)}return e}after(e){return this.parent.insertAfter(this,e),this}assign(e={}){for(let t in e)this[t]=e[t];return this}before(e){return this.parent.insertBefore(this,e),this}cleanRaws(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between}clone(e={}){let t=Gs(this);for(let n in e)t[n]=e[n];return t}cloneAfter(e={}){let t=this.clone(e);return this.parent.insertAfter(this,t),t}cloneBefore(e={}){let t=this.clone(e);return this.parent.insertBefore(this,t),t}error(e,t={}){if(this.source){let{end:n,start:o}=this.rangeBy(t);return this.source.input.error(e,{column:o.column,line:o.line},{column:n.column,line:n.line},t)}return new qs(e)}getProxyProcessor(){return{get:(e,t)=>"proxyOf"===t?e:"root"===t?()=>e.root().toProxy():e[t],set:(e,t,n)=>(e[t]===n||(e[t]=n,"prop"!==t&&"value"!==t&&"name"!==t&&"params"!==t&&"important"!==t&&"text"!==t||e.markDirty()),!0)}}markDirty(){if(this[Hs]){this[Hs]=!1;let e=this;for(;e=e.parent;)e[Hs]=!1}}next(){if(!this.parent)return;let e=this.parent.index(this);return this.parent.nodes[e+1]}positionBy(e,t){let n=this.source.start;if(e.index)n=this.positionInside(e.index,t);else if(e.word){let o=(t=this.toString()).indexOf(e.word);-1!==o&&(n=this.positionInside(o,t))}return n}positionInside(e,t){let n=t||this.toString(),o=this.source.start.column,r=this.source.start.line;for(let i=0;i"object"==typeof e&&e.toJSON?e.toJSON(null,t):e));else if("object"==typeof e&&e.toJSON)n[i]=e.toJSON(null,t);else if("source"===i){let o=t.get(e.input);null==o&&(o=r,t.set(e.input,r),r++),n[i]={end:e.end,inputId:o,start:e.start}}else n[i]=e}return o&&(n.inputs=[...t.keys()].map((e=>e.toJSON()))),n}toProxy(){return this.proxyCache||(this.proxyCache=new Proxy(this,this.getProxyProcessor())),this.proxyCache}toString(e=Vs){e.stringify&&(e=e.stringify);let t="";return e(this,(e=>{t+=e})),t}warn(e,t,n){let o={node:this};for(let r in n)o[r]=n[r];return e.warn(t,o)}get proxyOf(){return this}};var Ys=Xs;Xs.default=Xs;let Js=Ys,Ks=class extends Js{constructor(e){e&&void 0!==e.value&&"string"!=typeof e.value&&(e={...e,value:String(e.value)}),super(e),this.type="decl"}get variable(){return this.prop.startsWith("--")||"$"===this.prop[0]}};var Zs=Ks;Ks.default=Ks;var $s={nanoid:(e=21)=>{let t="",n=e;for(;n--;)t+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[64*Math.random()|0];return t},customAlphabet:(e,t=21)=>(n=t)=>{let o="",r=n;for(;r--;)o+=e[Math.random()*e.length|0];return o}};let{SourceMapConsumer:Qs,SourceMapGenerator:el}=Ls,{existsSync:tl,readFileSync:nl}=Ls,{dirname:ol,join:rl}=Ls;let il=class{constructor(e,t){if(!1===t.map)return;this.loadAnnotation(e),this.inline=this.startWith(this.annotation,"data:");let n=t.map?t.map.prev:void 0,o=this.loadMap(t.from,n);!this.mapFile&&t.from&&(this.mapFile=t.from),this.mapFile&&(this.root=ol(this.mapFile)),o&&(this.text=o)}consumer(){return this.consumerCache||(this.consumerCache=new Qs(this.text)),this.consumerCache}decodeInline(e){if(/^data:application\/json;charset=utf-?8,/.test(e)||/^data:application\/json,/.test(e))return decodeURIComponent(e.substr(RegExp.lastMatch.length));if(/^data:application\/json;charset=utf-?8;base64,/.test(e)||/^data:application\/json;base64,/.test(e))return t=e.substr(RegExp.lastMatch.length),Buffer?Buffer.from(t,"base64").toString():window.atob(t);var t;let n=e.match(/data:application\/json;([^,]+),/)[1];throw new Error("Unsupported source map encoding "+n)}getAnnotationURL(e){return e.replace(/^\/\*\s*# sourceMappingURL=/,"").trim()}isMap(e){return"object"==typeof e&&("string"==typeof e.mappings||"string"==typeof e._mappings||Array.isArray(e.sections))}loadAnnotation(e){let t=e.match(/\/\*\s*# sourceMappingURL=/gm);if(!t)return;let n=e.lastIndexOf(t.pop()),o=e.indexOf("*/",n);n>-1&&o>-1&&(this.annotation=this.getAnnotationURL(e.substring(n,o)))}loadFile(e){if(this.root=ol(e),tl(e))return this.mapFile=e,nl(e,"utf-8").toString().trim()}loadMap(e,t){if(!1===t)return!1;if(t){if("string"==typeof t)return t;if("function"!=typeof t){if(t instanceof Qs)return el.fromSourceMap(t).toString();if(t instanceof el)return t.toString();if(this.isMap(t))return JSON.stringify(t);throw new Error("Unsupported previous source map format: "+t.toString())}{let n=t(e);if(n){let e=this.loadFile(n);if(!e)throw new Error("Unable to load previous source map: "+n.toString());return e}}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){let t=this.annotation;return e&&(t=rl(ol(e),t)),this.loadFile(t)}}}startWith(e,t){return!!e&&e.substr(0,t.length)===t}withContent(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)}};var al=il;il.default=il;let{SourceMapConsumer:sl,SourceMapGenerator:ll}=Ls,{fileURLToPath:cl,pathToFileURL:ul}=Ls,{isAbsolute:dl,resolve:pl}=Ls,{nanoid:hl}=$s,fl=Ls,ml=Ps,gl=al,vl=Symbol("fromOffsetCache"),yl=Boolean(sl&&ll),bl=Boolean(pl&&dl),wl=class{constructor(e,t={}){if(null==e||"object"==typeof e&&!e.toString)throw new Error(`PostCSS received ${e} instead of CSS string`);if(this.css=e.toString(),"\ufeff"===this.css[0]||"￾"===this.css[0]?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,t.from&&(!bl||/^\w+:\/\//.test(t.from)||dl(t.from)?this.file=t.from:this.file=pl(t.from)),bl&&yl){let e=new gl(this.css,t);if(e.text){this.map=e;let t=e.consumer().file;!this.file&&t&&(this.file=this.mapResolve(t))}}this.file||(this.id=""),this.map&&(this.map.file=this.from)}error(e,t,n,o={}){let r,i,a;if(t&&"object"==typeof t){let e=t,o=n;if("number"==typeof e.offset){let o=this.fromOffset(e.offset);t=o.line,n=o.col}else t=e.line,n=e.column;if("number"==typeof o.offset){let e=this.fromOffset(o.offset);i=e.line,a=e.col}else i=o.line,a=o.column}else if(!n){let e=this.fromOffset(t);t=e.line,n=e.col}let s=this.origin(t,n,i,a);return r=s?new ml(e,void 0===s.endLine?s.line:{column:s.column,line:s.line},void 0===s.endLine?s.column:{column:s.endColumn,line:s.endLine},s.source,s.file,o.plugin):new ml(e,void 0===i?t:{column:n,line:t},void 0===i?n:{column:a,line:i},this.css,this.file,o.plugin),r.input={column:n,endColumn:a,endLine:i,line:t,source:this.css},this.file&&(ul&&(r.input.url=ul(this.file).toString()),r.input.file=this.file),r}fromOffset(e){let t,n;if(this[vl])n=this[vl];else{let e=this.css.split("\n");n=new Array(e.length);let t=0;for(let o=0,r=e.length;o=t)o=n.length-1;else{let t,r=n.length-2;for(;o>1),e=n[t+1])){o=t;break}o=t+1}}return{col:e-n[o]+1,line:o+1}}mapResolve(e){return/^\w+:\/\//.test(e)?e:pl(this.map.consumer().sourceRoot||this.map.root||".",e)}origin(e,t,n,o){if(!this.map)return!1;let r,i,a=this.map.consumer(),s=a.originalPositionFor({column:t,line:e});if(!s.source)return!1;"number"==typeof n&&(r=a.originalPositionFor({column:o,line:n})),i=dl(s.source)?ul(s.source):new URL(s.source,this.map.consumer().sourceRoot||ul(this.map.mapFile));let l={column:s.column,endColumn:r&&r.column,endLine:r&&r.line,line:s.line,url:i.toString()};if("file:"===i.protocol){if(!cl)throw new Error("file: protocol is not available in this PostCSS build");l.file=cl(i)}let c=a.sourceContentFor(s.source);return c&&(l.source=c),l}toJSON(){let e={};for(let t of["hasBOM","css","file","id"])null!=this[t]&&(e[t]=this[t]);return this.map&&(e.map={...this.map},e.map.consumerCache&&(e.map.consumerCache=void 0)),e}get from(){return this.file||this.id}};var kl=wl;wl.default=wl,fl&&fl.registerInput&&fl.registerInput(wl);let{SourceMapConsumer:xl,SourceMapGenerator:Sl}=Ls,{dirname:Cl,relative:Il,resolve:El,sep:Tl}=Ls,{pathToFileURL:Ol}=Ls,Ll=kl,Al=Boolean(xl&&Sl),Ml=Boolean(Cl&&El&&Il&&Tl);var Rl=class{constructor(e,t,n,o){this.stringify=e,this.mapOpts=n.map||{},this.root=t,this.opts=n,this.css=o,this.originalCSS=o,this.usesFileUrls=!this.mapOpts.from&&this.mapOpts.absolute,this.memoizedFileURLs=new Map,this.memoizedPaths=new Map,this.memoizedURLs=new Map}addAnnotation(){let e;e=this.isInline()?"data:application/json;base64,"+this.toBase64(this.map.toString()):"string"==typeof this.mapOpts.annotation?this.mapOpts.annotation:"function"==typeof this.mapOpts.annotation?this.mapOpts.annotation(this.opts.to,this.root):this.outputFile()+".map";let t="\n";this.css.includes("\r\n")&&(t="\r\n"),this.css+=t+"/*# sourceMappingURL="+e+" */"}applyPrevMaps(){for(let e of this.previous()){let t,n=this.toUrl(this.path(e.file)),o=e.root||Cl(e.file);!1===this.mapOpts.sourcesContent?(t=new xl(e.text),t.sourcesContent&&(t.sourcesContent=null)):t=e.consumer(),this.map.applySourceMap(t,n,this.toUrl(this.path(o)))}}clearAnnotation(){if(!1!==this.mapOpts.annotation)if(this.root){let e;for(let t=this.root.nodes.length-1;t>=0;t--)e=this.root.nodes[t],"comment"===e.type&&0===e.text.indexOf("# sourceMappingURL=")&&this.root.removeChild(t)}else this.css&&(this.css=this.css.replace(/\n*?\/\*#[\S\s]*?\*\/$/gm,""))}generate(){if(this.clearAnnotation(),Ml&&Al&&this.isMap())return this.generateMap();{let e="";return this.stringify(this.root,(t=>{e+=t})),[e]}}generateMap(){if(this.root)this.generateString();else if(1===this.previous().length){let e=this.previous()[0].consumer();e.file=this.outputFile(),this.map=Sl.fromSourceMap(e,{ignoreInvalidMapping:!0})}else this.map=new Sl({file:this.outputFile(),ignoreInvalidMapping:!0}),this.map.addMapping({generated:{column:0,line:1},original:{column:0,line:1},source:this.opts.from?this.toUrl(this.path(this.opts.from)):""});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]}generateString(){this.css="",this.map=new Sl({file:this.outputFile(),ignoreInvalidMapping:!0});let e,t,n=1,o=1,r="",i={generated:{column:0,line:0},original:{column:0,line:0},source:""};this.stringify(this.root,((a,s,l)=>{if(this.css+=a,s&&"end"!==l&&(i.generated.line=n,i.generated.column=o-1,s.source&&s.source.start?(i.source=this.sourcePath(s),i.original.line=s.source.start.line,i.original.column=s.source.start.column-1,this.map.addMapping(i)):(i.source=r,i.original.line=1,i.original.column=0,this.map.addMapping(i))),e=a.match(/\n/g),e?(n+=e.length,t=a.lastIndexOf("\n"),o=a.length-t):o+=a.length,s&&"start"!==l){let e=s.parent||{raws:{}};("decl"===s.type||"atrule"===s.type&&!s.nodes)&&s===e.last&&!e.raws.semicolon||(s.source&&s.source.end?(i.source=this.sourcePath(s),i.original.line=s.source.end.line,i.original.column=s.source.end.column-1,i.generated.line=n,i.generated.column=o-2,this.map.addMapping(i)):(i.source=r,i.original.line=1,i.original.column=0,i.generated.line=n,i.generated.column=o-1,this.map.addMapping(i)))}}))}isAnnotation(){return!!this.isInline()||(void 0!==this.mapOpts.annotation?this.mapOpts.annotation:!this.previous().length||this.previous().some((e=>e.annotation)))}isInline(){if(void 0!==this.mapOpts.inline)return this.mapOpts.inline;let e=this.mapOpts.annotation;return(void 0===e||!0===e)&&(!this.previous().length||this.previous().some((e=>e.inline)))}isMap(){return void 0!==this.opts.map?!!this.opts.map:this.previous().length>0}isSourcesContent(){return void 0!==this.mapOpts.sourcesContent?this.mapOpts.sourcesContent:!this.previous().length||this.previous().some((e=>e.withContent()))}outputFile(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"}path(e){if(this.mapOpts.absolute)return e;if(60===e.charCodeAt(0))return e;if(/^\w+:\/\//.test(e))return e;let t=this.memoizedPaths.get(e);if(t)return t;let n=this.opts.to?Cl(this.opts.to):".";"string"==typeof this.mapOpts.annotation&&(n=Cl(El(n,this.mapOpts.annotation)));let o=Il(n,e);return this.memoizedPaths.set(e,o),o}previous(){if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk((e=>{if(e.source&&e.source.input.map){let t=e.source.input.map;this.previousMaps.includes(t)||this.previousMaps.push(t)}}));else{let e=new Ll(this.originalCSS,this.opts);e.map&&this.previousMaps.push(e.map)}return this.previousMaps}setSourcesContent(){let e={};if(this.root)this.root.walk((t=>{if(t.source){let n=t.source.input.from;if(n&&!e[n]){e[n]=!0;let o=this.usesFileUrls?this.toFileUrl(n):this.toUrl(this.path(n));this.map.setSourceContent(o,t.source.input.css)}}}));else if(this.css){let e=this.opts.from?this.toUrl(this.path(this.opts.from)):"";this.map.setSourceContent(e,this.css)}}sourcePath(e){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(e.source.input.from):this.toUrl(this.path(e.source.input.from))}toBase64(e){return Buffer?Buffer.from(e).toString("base64"):window.btoa(unescape(encodeURIComponent(e)))}toFileUrl(e){let t=this.memoizedFileURLs.get(e);if(t)return t;if(Ol){let t=Ol(e).toString();return this.memoizedFileURLs.set(e,t),t}throw new Error("`map.absolute` option is not available in this PostCSS build")}toUrl(e){let t=this.memoizedURLs.get(e);if(t)return t;"\\"===Tl&&(e=e.replace(/\\/g,"/"));let n=encodeURI(e).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(e,n),n}};let Pl=Ys,Dl=class extends Pl{constructor(e){super(e),this.type="comment"}};var Nl=Dl;Dl.default=Dl;let jl,Fl,Bl,_l,{isClean:Ul,my:Hl}=Ds,zl=Zs,ql=Nl,Wl=Ys;function Vl(e){return e.map((e=>(e.nodes&&(e.nodes=Vl(e.nodes)),delete e.source,e)))}function Gl(e){if(e[Ul]=!1,e.proxyOf.nodes)for(let t of e.proxyOf.nodes)Gl(t)}let Xl=class e extends Wl{append(...e){for(let t of e){let e=this.normalize(t,this.last);for(let t of e)this.proxyOf.nodes.push(t)}return this.markDirty(),this}cleanRaws(e){if(super.cleanRaws(e),this.nodes)for(let t of this.nodes)t.cleanRaws(e)}each(e){if(!this.proxyOf.nodes)return;let t,n,o=this.getIterator();for(;this.indexes[o]"proxyOf"===t?e:e[t]?"each"===t||"string"==typeof t&&t.startsWith("walk")?(...n)=>e[t](...n.map((e=>"function"==typeof e?(t,n)=>e(t.toProxy(),n):e))):"every"===t||"some"===t?n=>e[t](((e,...t)=>n(e.toProxy(),...t))):"root"===t?()=>e.root().toProxy():"nodes"===t?e.nodes.map((e=>e.toProxy())):"first"===t||"last"===t?e[t].toProxy():e[t]:e[t],set:(e,t,n)=>(e[t]===n||(e[t]=n,"name"!==t&&"params"!==t&&"selector"!==t||e.markDirty()),!0)}}index(e){return"number"==typeof e?e:(e.proxyOf&&(e=e.proxyOf),this.proxyOf.nodes.indexOf(e))}insertAfter(e,t){let n,o=this.index(e),r=this.normalize(t,this.proxyOf.nodes[o]).reverse();o=this.index(e);for(let i of r)this.proxyOf.nodes.splice(o+1,0,i);for(let i in this.indexes)n=this.indexes[i],o(t[Hl]||e.rebuild(t),(t=t.proxyOf).parent&&t.parent.removeChild(t),t[Ul]&&Gl(t),void 0===t.raws.before&&n&&void 0!==n.raws.before&&(t.raws.before=n.raws.before.replace(/\S/g,"")),t.parent=this.proxyOf,t)))}prepend(...e){e=e.reverse();for(let t of e){let e=this.normalize(t,this.first,"prepend").reverse();for(let t of e)this.proxyOf.nodes.unshift(t);for(let t in this.indexes)this.indexes[t]=this.indexes[t]+e.length}return this.markDirty(),this}push(e){return e.parent=this,this.proxyOf.nodes.push(e),this}removeAll(){for(let e of this.proxyOf.nodes)e.parent=void 0;return this.proxyOf.nodes=[],this.markDirty(),this}removeChild(e){let t;e=this.index(e),this.proxyOf.nodes[e].parent=void 0,this.proxyOf.nodes.splice(e,1);for(let n in this.indexes)t=this.indexes[n],t>=e&&(this.indexes[n]=t-1);return this.markDirty(),this}replaceValues(e,t,n){return n||(n=t,t={}),this.walkDecls((o=>{t.props&&!t.props.includes(o.prop)||t.fast&&!o.value.includes(t.fast)||(o.value=o.value.replace(e,n))})),this.markDirty(),this}some(e){return this.nodes.some(e)}walk(e){return this.each(((t,n)=>{let o;try{o=e(t,n)}catch(r){throw t.addToError(r)}return!1!==o&&t.walk&&(o=t.walk(e)),o}))}walkAtRules(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("atrule"===n.type&&e.test(n.name))return t(n,o)})):this.walk(((n,o)=>{if("atrule"===n.type&&n.name===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("atrule"===e.type)return t(e,n)})))}walkComments(e){return this.walk(((t,n)=>{if("comment"===t.type)return e(t,n)}))}walkDecls(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("decl"===n.type&&e.test(n.prop))return t(n,o)})):this.walk(((n,o)=>{if("decl"===n.type&&n.prop===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("decl"===e.type)return t(e,n)})))}walkRules(e,t){return t?e instanceof RegExp?this.walk(((n,o)=>{if("rule"===n.type&&e.test(n.selector))return t(n,o)})):this.walk(((n,o)=>{if("rule"===n.type&&n.selector===e)return t(n,o)})):(t=e,this.walk(((e,n)=>{if("rule"===e.type)return t(e,n)})))}get first(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}get last(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}};Xl.registerParse=e=>{jl=e},Xl.registerRule=e=>{Fl=e},Xl.registerAtRule=e=>{Bl=e},Xl.registerRoot=e=>{_l=e};var Yl=Xl;Xl.default=Xl,Xl.rebuild=e=>{"atrule"===e.type?Object.setPrototypeOf(e,Bl.prototype):"rule"===e.type?Object.setPrototypeOf(e,Fl.prototype):"decl"===e.type?Object.setPrototypeOf(e,zl.prototype):"comment"===e.type?Object.setPrototypeOf(e,ql.prototype):"root"===e.type&&Object.setPrototypeOf(e,_l.prototype),e[Hl]=!0,e.nodes&&e.nodes.forEach((e=>{Xl.rebuild(e)}))};let Jl,Kl,Zl=Yl,$l=class extends Zl{constructor(e){super({type:"document",...e}),this.nodes||(this.nodes=[])}toResult(e={}){return new Jl(new Kl,this,e).stringify()}};$l.registerLazyResult=e=>{Jl=e},$l.registerProcessor=e=>{Kl=e};var Ql=$l;$l.default=$l;let ec=class{constructor(e,t={}){if(this.type="warning",this.text=e,t.node&&t.node.source){let e=t.node.rangeBy(t);this.line=e.start.line,this.column=e.start.column,this.endLine=e.end.line,this.endColumn=e.end.column}for(let n in t)this[n]=t[n]}toString(){return this.node?this.node.error(this.text,{index:this.index,plugin:this.plugin,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text}};var tc=ec;ec.default=ec;let nc=tc,oc=class{constructor(e,t,n){this.processor=e,this.messages=[],this.root=t,this.opts=n,this.css=void 0,this.map=void 0}toString(){return this.css}warn(e,t={}){t.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(t.plugin=this.lastPlugin.postcssPlugin);let n=new nc(e,t);return this.messages.push(n),n}warnings(){return this.messages.filter((e=>"warning"===e.type))}get content(){return this.css}};var rc=oc;oc.default=oc;const ic="'".charCodeAt(0),ac='"'.charCodeAt(0),sc="\\".charCodeAt(0),lc="/".charCodeAt(0),cc="\n".charCodeAt(0),uc=" ".charCodeAt(0),dc="\f".charCodeAt(0),pc="\t".charCodeAt(0),hc="\r".charCodeAt(0),fc="[".charCodeAt(0),mc="]".charCodeAt(0),gc="(".charCodeAt(0),vc=")".charCodeAt(0),yc="{".charCodeAt(0),bc="}".charCodeAt(0),wc=";".charCodeAt(0),kc="*".charCodeAt(0),xc=":".charCodeAt(0),Sc="@".charCodeAt(0),Cc=/[\t\n\f\r "#'()/;[\\\]{}]/g,Ic=/[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g,Ec=/.[\r\n"'(/\\]/,Tc=/[\da-f]/i;let Oc=Yl,Lc=class extends Oc{constructor(e){super(e),this.type="atrule"}append(...e){return this.proxyOf.nodes||(this.nodes=[]),super.append(...e)}prepend(...e){return this.proxyOf.nodes||(this.nodes=[]),super.prepend(...e)}};var Ac=Lc;Lc.default=Lc,Oc.registerAtRule(Lc);let Mc,Rc,Pc=Yl,Dc=class extends Pc{constructor(e){super(e),this.type="root",this.nodes||(this.nodes=[])}normalize(e,t,n){let o=super.normalize(e);if(t)if("prepend"===n)this.nodes.length>1?t.raws.before=this.nodes[1].raws.before:delete t.raws.before;else if(this.first!==t)for(let r of o)r.raws.before=t.raws.before;return o}removeChild(e,t){let n=this.index(e);return!t&&0===n&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[n].raws.before),super.removeChild(e)}toResult(e={}){return new Mc(new Rc,this,e).stringify()}};Dc.registerLazyResult=e=>{Mc=e},Dc.registerProcessor=e=>{Rc=e};var Nc=Dc;Dc.default=Dc,Pc.registerRoot(Dc);let jc={comma:e=>jc.split(e,[","],!0),space:e=>jc.split(e,[" ","\n","\t"]),split(e,t,n){let o=[],r="",i=!1,a=0,s=!1,l="",c=!1;for(let u of e)c?c=!1:"\\"===u?c=!0:s?u===l&&(s=!1):'"'===u||"'"===u?(s=!0,l=u):"("===u?a+=1:")"===u?a>0&&(a-=1):0===a&&t.includes(u)&&(i=!0),i?(""!==r&&o.push(r.trim()),r="",i=!1):r+=u;return(n||""!==r)&&o.push(r.trim()),o}};var Fc=jc;jc.default=jc;let Bc=Yl,_c=Fc,Uc=class extends Bc{constructor(e){super(e),this.type="rule",this.nodes||(this.nodes=[])}get selectors(){return _c.comma(this.selector)}set selectors(e){let t=this.selector?this.selector.match(/,\s*/):null,n=t?t[0]:","+this.raw("between","beforeOpen");this.selector=e.join(n)}};var Hc=Uc;Uc.default=Uc,Bc.registerRule(Uc);let zc=Zs,qc=function(e,t={}){let n,o,r,i,a,s,l,c,u,d,p=e.css.valueOf(),h=t.ignoreErrors,f=p.length,m=0,g=[],v=[];function y(t){throw e.error("Unclosed "+t,m)}return{back:function(e){v.push(e)},endOfFile:function(){return 0===v.length&&m>=f},nextToken:function(e){if(v.length)return v.pop();if(m>=f)return;let t=!!e&&e.ignoreUnclosed;switch(n=p.charCodeAt(m),n){case cc:case uc:case pc:case hc:case dc:o=m;do{o+=1,n=p.charCodeAt(o)}while(n===uc||n===cc||n===pc||n===hc||n===dc);d=["space",p.slice(m,o)],m=o-1;break;case fc:case mc:case yc:case bc:case xc:case wc:case vc:{let e=String.fromCharCode(n);d=[e,e,m];break}case gc:if(c=g.length?g.pop()[1]:"",u=p.charCodeAt(m+1),"url"===c&&u!==ic&&u!==ac&&u!==uc&&u!==cc&&u!==pc&&u!==dc&&u!==hc){o=m;do{if(s=!1,o=p.indexOf(")",o+1),-1===o){if(h||t){o=m;break}y("bracket")}for(l=o;p.charCodeAt(l-1)===sc;)l-=1,s=!s}while(s);d=["brackets",p.slice(m,o+1),m,o],m=o}else o=p.indexOf(")",m+1),i=p.slice(m,o+1),-1===o||Ec.test(i)?d=["(","(",m]:(d=["brackets",i,m,o],m=o);break;case ic:case ac:r=n===ic?"'":'"',o=m;do{if(s=!1,o=p.indexOf(r,o+1),-1===o){if(h||t){o=m+1;break}y("string")}for(l=o;p.charCodeAt(l-1)===sc;)l-=1,s=!s}while(s);d=["string",p.slice(m,o+1),m,o],m=o;break;case Sc:Cc.lastIndex=m+1,Cc.test(p),o=0===Cc.lastIndex?p.length-1:Cc.lastIndex-2,d=["at-word",p.slice(m,o+1),m,o],m=o;break;case sc:for(o=m,a=!0;p.charCodeAt(o+1)===sc;)o+=1,a=!a;if(n=p.charCodeAt(o+1),a&&n!==lc&&n!==uc&&n!==cc&&n!==pc&&n!==hc&&n!==dc&&(o+=1,Tc.test(p.charAt(o)))){for(;Tc.test(p.charAt(o+1));)o+=1;p.charCodeAt(o+1)===uc&&(o+=1)}d=["word",p.slice(m,o+1),m,o],m=o;break;default:n===lc&&p.charCodeAt(m+1)===kc?(o=p.indexOf("*/",m+2)+1,0===o&&(h||t?o=p.length:y("comment")),d=["comment",p.slice(m,o+1),m,o],m=o):(Ic.lastIndex=m+1,Ic.test(p),o=0===Ic.lastIndex?p.length-1:Ic.lastIndex-2,d=["word",p.slice(m,o+1),m,o],g.push(d),m=o)}return m++,d},position:function(){return m}}},Wc=Nl,Vc=Ac,Gc=Nc,Xc=Hc;const Yc={empty:!0,space:!0};var Jc=class{constructor(e){this.input=e,this.root=new Gc,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:e,start:{column:1,line:1,offset:0}}}atrule(e){let t,n,o,r=new Vc;r.name=e[1].slice(1),""===r.name&&this.unnamedAtrule(r,e),this.init(r,e[2]);let i=!1,a=!1,s=[],l=[];for(;!this.tokenizer.endOfFile();){if(t=(e=this.tokenizer.nextToken())[0],"("===t||"["===t?l.push("("===t?")":"]"):"{"===t&&l.length>0?l.push("}"):t===l[l.length-1]&&l.pop(),0===l.length){if(";"===t){r.source.end=this.getPosition(e[2]),r.source.end.offset++,this.semicolon=!0;break}if("{"===t){a=!0;break}if("}"===t){if(s.length>0){for(o=s.length-1,n=s[o];n&&"space"===n[0];)n=s[--o];n&&(r.source.end=this.getPosition(n[3]||n[2]),r.source.end.offset++)}this.end(e);break}s.push(e)}else s.push(e);if(this.tokenizer.endOfFile()){i=!0;break}}r.raws.between=this.spacesAndCommentsFromEnd(s),s.length?(r.raws.afterName=this.spacesAndCommentsFromStart(s),this.raw(r,"params",s),i&&(e=s[s.length-1],r.source.end=this.getPosition(e[3]||e[2]),r.source.end.offset++,this.spaces=r.raws.between,r.raws.between="")):(r.raws.afterName="",r.params=""),a&&(r.nodes=[],this.current=r)}checkMissedSemicolon(e){let t=this.colon(e);if(!1===t)return;let n,o=0;for(let r=t-1;r>=0&&(n=e[r],"space"===n[0]||(o+=1,2!==o));r--);throw this.input.error("Missed semicolon","word"===n[0]?n[3]+1:n[2])}colon(e){let t,n,o,r=0;for(let[i,a]of e.entries()){if(t=a,n=t[0],"("===n&&(r+=1),")"===n&&(r-=1),0===r&&":"===n){if(o){if("word"===o[0]&&"progid"===o[1])continue;return i}this.doubleColon(t)}o=t}return!1}comment(e){let t=new Wc;this.init(t,e[2]),t.source.end=this.getPosition(e[3]||e[2]),t.source.end.offset++;let n=e[1].slice(2,-2);if(/^\s*$/.test(n))t.text="",t.raws.left=n,t.raws.right="";else{let e=n.match(/^(\s*)([^]*\S)(\s*)$/);t.text=e[2],t.raws.left=e[1],t.raws.right=e[3]}}createTokenizer(){this.tokenizer=qc(this.input)}decl(e,t){let n=new zc;this.init(n,e[0][2]);let o,r=e[e.length-1];for(";"===r[0]&&(this.semicolon=!0,e.pop()),n.source.end=this.getPosition(r[3]||r[2]||function(e){for(let t=e.length-1;t>=0;t--){let n=e[t],o=n[3]||n[2];if(o)return o}}(e)),n.source.end.offset++;"word"!==e[0][0];)1===e.length&&this.unknownWord(e),n.raws.before+=e.shift()[1];for(n.source.start=this.getPosition(e[0][2]),n.prop="";e.length;){let t=e[0][0];if(":"===t||"space"===t||"comment"===t)break;n.prop+=e.shift()[1]}for(n.raws.between="";e.length;){if(o=e.shift(),":"===o[0]){n.raws.between+=o[1];break}"word"===o[0]&&/\w/.test(o[1])&&this.unknownWord([o]),n.raws.between+=o[1]}"_"!==n.prop[0]&&"*"!==n.prop[0]||(n.raws.before+=n.prop[0],n.prop=n.prop.slice(1));let i,a=[];for(;e.length&&(i=e[0][0],"space"===i||"comment"===i);)a.push(e.shift());this.precheckMissedSemicolon(e);for(let s=e.length-1;s>=0;s--){if(o=e[s],"!important"===o[1].toLowerCase()){n.important=!0;let t=this.stringFrom(e,s);t=this.spacesFromEnd(e)+t," !important"!==t&&(n.raws.important=t);break}if("important"===o[1].toLowerCase()){let t=e.slice(0),o="";for(let e=s;e>0;e--){let n=t[e][0];if(0===o.trim().indexOf("!")&&"space"!==n)break;o=t.pop()[1]+o}0===o.trim().indexOf("!")&&(n.important=!0,n.raws.important=o,e=t)}if("space"!==o[0]&&"comment"!==o[0])break}e.some((e=>"space"!==e[0]&&"comment"!==e[0]))&&(n.raws.between+=a.map((e=>e[1])).join(""),a=[]),this.raw(n,"value",a.concat(e),t),n.value.includes(":")&&!t&&this.checkMissedSemicolon(e)}doubleColon(e){throw this.input.error("Double colon",{offset:e[2]},{offset:e[2]+e[1].length})}emptyRule(e){let t=new Xc;this.init(t,e[2]),t.selector="",t.raws.between="",this.current=t}end(e){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(e[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(e)}endFile(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position())}freeSemicolon(e){if(this.spaces+=e[1],this.current.nodes){let e=this.current.nodes[this.current.nodes.length-1];e&&"rule"===e.type&&!e.raws.ownSemicolon&&(e.raws.ownSemicolon=this.spaces,this.spaces="")}}getPosition(e){let t=this.input.fromOffset(e);return{column:t.col,line:t.line,offset:e}}init(e,t){this.current.push(e),e.source={input:this.input,start:this.getPosition(t)},e.raws.before=this.spaces,this.spaces="","comment"!==e.type&&(this.semicolon=!1)}other(e){let t=!1,n=null,o=!1,r=null,i=[],a=e[1].startsWith("--"),s=[],l=e;for(;l;){if(n=l[0],s.push(l),"("===n||"["===n)r||(r=l),i.push("("===n?")":"]");else if(a&&o&&"{"===n)r||(r=l),i.push("}");else if(0===i.length){if(";"===n){if(o)return void this.decl(s,a);break}if("{"===n)return void this.rule(s);if("}"===n){this.tokenizer.back(s.pop()),t=!0;break}":"===n&&(o=!0)}else n===i[i.length-1]&&(i.pop(),0===i.length&&(r=null));l=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(t=!0),i.length>0&&this.unclosedBracket(r),t&&o){if(!a)for(;s.length&&(l=s[s.length-1][0],"space"===l||"comment"===l);)this.tokenizer.back(s.pop());this.decl(s,a)}else this.unknownWord(s)}parse(){let e;for(;!this.tokenizer.endOfFile();)switch(e=this.tokenizer.nextToken(),e[0]){case"space":this.spaces+=e[1];break;case";":this.freeSemicolon(e);break;case"}":this.end(e);break;case"comment":this.comment(e);break;case"at-word":this.atrule(e);break;case"{":this.emptyRule(e);break;default:this.other(e)}this.endFile()}precheckMissedSemicolon(){}raw(e,t,n,o){let r,i,a,s,l=n.length,c="",u=!0;for(let d=0;de+t[1]),"");e.raws[t]={raw:o,value:c}}e[t]=c}rule(e){e.pop();let t=new Xc;this.init(t,e[0][2]),t.raws.between=this.spacesAndCommentsFromEnd(e),this.raw(t,"selector",e),this.current=t}spacesAndCommentsFromEnd(e){let t,n="";for(;e.length&&(t=e[e.length-1][0],"space"===t||"comment"===t);)n=e.pop()[1]+n;return n}spacesAndCommentsFromStart(e){let t,n="";for(;e.length&&(t=e[0][0],"space"===t||"comment"===t);)n+=e.shift()[1];return n}spacesFromEnd(e){let t,n="";for(;e.length&&(t=e[e.length-1][0],"space"===t);)n=e.pop()[1]+n;return n}stringFrom(e,t){let n="";for(let o=t;ovu(e))),e}let yu={},bu=class e{constructor(t,n,o){let r;if(this.stringified=!1,this.processed=!1,"object"!=typeof n||null===n||"root"!==n.type&&"document"!==n.type)if(n instanceof e||n instanceof su)r=vu(n.root),n.map&&(void 0===o.map&&(o.map={}),o.map.inline||(o.map.inline=!1),o.map.prev=n.map);else{let e=lu;o.syntax&&(e=o.syntax.parse),o.parser&&(e=o.parser),e.parse&&(e=e.parse);try{r=e(n,o)}catch(i){this.processed=!0,this.error=i}r&&!r[nu]&&iu.rebuild(r)}else r=vu(n);this.result=new su(t,r,o),this.helpers={...yu,postcss:yu,result:this.result},this.plugins=this.processor.plugins.map((e=>"object"==typeof e&&e.prepare?{...e,...e.prepare(this.result)}:e))}async(){return this.error?Promise.reject(this.error):this.processed?Promise.resolve(this.result):(this.processing||(this.processing=this.runAsync()),this.processing)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}getAsyncError(){throw new Error("Use process(css).then(cb) to work with async plugins")}handleError(e,t){let n=this.result.lastPlugin;try{t&&t.addToError(e),this.error=e,"CssSyntaxError"!==e.name||e.plugin?n.postcssVersion:(e.plugin=n.postcssPlugin,e.setMessage())}catch(o){console&&console.error&&console.error(o)}return e}prepareVisitors(){this.listeners={};let e=(e,t,n)=>{this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].push([e,n])};for(let t of this.plugins)if("object"==typeof t)for(let n in t){if(!du[n]&&/^[A-Z]/.test(n))throw new Error(`Unknown event ${n} in ${t.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`);if(!pu[n])if("object"==typeof t[n])for(let o in t[n])e(t,"*"===o?n:n+"-"+o.toLowerCase(),t[n][o]);else"function"==typeof t[n]&&e(t,n,t[n])}this.hasListener=Object.keys(this.listeners).length>0}async runAsync(){this.plugin=0;for(let n=0;n0;){let e=this.visitTick(n);if(fu(e))try{await e}catch(t){let e=n[n.length-1].node;throw this.handleError(t,e)}}}if(this.listeners.OnceExit)for(let[n,o]of this.listeners.OnceExit){this.result.lastPlugin=n;try{if("document"===e.type){let t=e.nodes.map((e=>o(e,this.helpers)));await Promise.all(t)}else await o(e,this.helpers)}catch(t){throw this.handleError(t)}}}return this.processed=!0,this.stringify()}runOnRoot(e){this.result.lastPlugin=e;try{if("object"==typeof e&&e.Once){if("document"===this.result.root.type){let t=this.result.root.nodes.map((t=>e.Once(t,this.helpers)));return fu(t[0])?Promise.all(t):t}return e.Once(this.result.root,this.helpers)}if("function"==typeof e)return e(this.result.root,this.result)}catch(t){throw this.handleError(t)}}stringify(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();let e=this.result.opts,t=ru;e.syntax&&(t=e.syntax.stringify),e.stringifier&&(t=e.stringifier),t.stringify&&(t=t.stringify);let n=new ou(t,this.result.root,this.result.opts).generate();return this.result.css=n[0],this.result.map=n[1],this.result}sync(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(let e of this.plugins){if(fu(this.runOnRoot(e)))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){let e=this.result.root;for(;!e[tu];)e[tu]=!0,this.walkSync(e);if(this.listeners.OnceExit)if("document"===e.type)for(let t of e.nodes)this.visitSync(this.listeners.OnceExit,t);else this.visitSync(this.listeners.OnceExit,e)}return this.result}then(e,t){return this.async().then(e,t)}toString(){return this.css}visitSync(e,t){for(let[o,r]of e){let e;this.result.lastPlugin=o;try{e=r(t,this.helpers)}catch(n){throw this.handleError(n,t.proxyOf)}if("root"!==t.type&&"document"!==t.type&&!t.parent)return!0;if(fu(e))throw this.getAsyncError()}}visitTick(e){let t=e[e.length-1],{node:n,visitors:o}=t;if("root"!==n.type&&"document"!==n.type&&!n.parent)return void e.pop();if(o.length>0&&t.visitorIndex{e[tu]||this.walkSync(e)}));else{let t=this.listeners[n];if(t&&this.visitSync(t,e.toProxy()))return}}warnings(){return this.sync().warnings()}get content(){return this.stringify().content}get css(){return this.stringify().css}get map(){return this.stringify().map}get messages(){return this.sync().messages}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){return this.sync().root}get[Symbol.toStringTag](){return"LazyResult"}};bu.registerPostcss=e=>{yu=e};var wu=bu;bu.default=bu,cu.registerLazyResult(bu),au.registerLazyResult(bu);let ku=Rl,xu=Us,Su=eu;const Cu=rc;let Iu=class{constructor(e,t,n){let o;t=t.toString(),this.stringified=!1,this._processor=e,this._css=t,this._opts=n,this._map=void 0;let r=xu;this.result=new Cu(this._processor,o,this._opts),this.result.css=t;let i=this;Object.defineProperty(this.result,"root",{get:()=>i.root});let a=new ku(r,o,this._opts,t);if(a.isMap()){let[e,t]=a.generate();e&&(this.result.css=e),t&&(this.result.map=t)}else a.clearAnnotation(),this.result.css=a.css}async(){return this.error?Promise.reject(this.error):Promise.resolve(this.result)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}sync(){if(this.error)throw this.error;return this.result}then(e,t){return this.async().then(e,t)}toString(){return this._css}warnings(){return[]}get content(){return this.result.css}get css(){return this.result.css}get map(){return this.result.map}get messages(){return[]}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){if(this._root)return this._root;let e,t=Su;try{e=t(this._css,this._opts)}catch(n){this.error=n}if(this.error)throw this.error;return this._root=e,e}get[Symbol.toStringTag](){return"NoWorkResult"}};var Eu=Iu;Iu.default=Iu;let Tu=Eu,Ou=wu,Lu=Ql,Au=Nc,Mu=class{constructor(e=[]){this.version="8.4.38",this.plugins=this.normalize(e)}normalize(e){let t=[];for(let n of e)if(!0===n.postcss?n=n():n.postcss&&(n=n.postcss),"object"==typeof n&&Array.isArray(n.plugins))t=t.concat(n.plugins);else if("object"==typeof n&&n.postcssPlugin)t.push(n);else if("function"==typeof n)t.push(n);else{if("object"!=typeof n||!n.parse&&!n.stringify)throw new Error(n+" is not a PostCSS plugin")}return t}process(e,t={}){return this.plugins.length||t.parser||t.stringifier||t.syntax?new Ou(this,e,t):new Tu(this,e,t)}use(e){return this.plugins=this.plugins.concat(this.normalize([e])),this}};var Ru=Mu;Mu.default=Mu,Au.registerProcessor(Mu),Lu.registerProcessor(Mu);let Pu=Zs,Du=al,Nu=Nl,ju=Ac,Fu=kl,Bu=Nc,_u=Hc;function Uu(e,t){if(Array.isArray(e))return e.map((e=>Uu(e)));let{inputs:n,...o}=e;if(n){t=[];for(let e of n){let n={...e,__proto__:Fu.prototype};n.map&&(n.map={...n.map,__proto__:Du.prototype}),t.push(n)}}if(o.nodes&&(o.nodes=e.nodes.map((e=>Uu(e,t)))),o.source){let{inputId:e,...n}=o.source;o.source=n,null!=e&&(o.source.input=t[e])}if("root"===o.type)return new Bu(o);if("decl"===o.type)return new Pu(o);if("rule"===o.type)return new _u(o);if("comment"===o.type)return new Nu(o);if("atrule"===o.type)return new ju(o);throw new Error("Unknown node type: "+e.type)}var Hu=Uu;Uu.default=Uu;let zu=Ps,qu=Zs,Wu=wu,Vu=Yl,Gu=Ru,Xu=Us,Yu=Hu,Ju=Ql,Ku=tc,Zu=Nl,$u=Ac,Qu=rc,ed=kl,td=eu,nd=Fc,od=Hc,rd=Nc,id=Ys;function ad(...e){return 1===e.length&&Array.isArray(e[0])&&(e=e[0]),new Gu(e)}ad.plugin=function(e,t){let n,o=!1;function r(...n){console&&console.warn&&!o&&(o=!0,console.warn(e+": postcss.plugin was deprecated. Migration guide:\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration"),process.env.LANG&&process.env.LANG.startsWith("cn")&&console.warn(e+": 里面 postcss.plugin 被弃用. 迁移指南:\nhttps://www.w3ctech.com/topic/2226"));let r=t(...n);return r.postcssPlugin=e,r.postcssVersion=(new Gu).version,r}return Object.defineProperty(r,"postcss",{get:()=>(n||(n=r()),n)}),r.process=function(e,t,n){return ad([r(n)]).process(e,t)},r},ad.stringify=Xu,ad.parse=td,ad.fromJSON=Yu,ad.list=nd,ad.comment=e=>new Zu(e),ad.atRule=e=>new $u(e),ad.decl=e=>new qu(e),ad.rule=e=>new od(e),ad.root=e=>new rd(e),ad.document=e=>new Ju(e),ad.CssSyntaxError=zu,ad.Declaration=qu,ad.Container=Vu,ad.Processor=Gu,ad.Document=Ju,ad.Comment=Zu,ad.Warning=Ku,ad.AtRule=$u,ad.Result=Qu,ad.Input=ed,ad.Rule=od,ad.Root=rd,ad.Node=id,Wu.registerPostcss(ad);var sd=ad;ad.default=ad;const ld=Ss(sd);ld.stringify,ld.fromJSON,ld.plugin,ld.parse,ld.list,ld.document,ld.comment,ld.atRule,ld.rule,ld.decl,ld.root,ld.CssSyntaxError,ld.Declaration,ld.Container,ld.Processor,ld.Document,ld.Comment,ld.Warning,ld.AtRule,ld.Result,ld.Input,ld.Rule,ld.Root,ld.Node;class cd{constructor(...e){xs(this,"parentElement",null),xs(this,"parentNode",null),xs(this,"ownerDocument"),xs(this,"firstChild",null),xs(this,"lastChild",null),xs(this,"previousSibling",null),xs(this,"nextSibling",null),xs(this,"ELEMENT_NODE",1),xs(this,"TEXT_NODE",3),xs(this,"nodeType"),xs(this,"nodeName"),xs(this,"RRNodeType")}get childNodes(){const e=[];let t=this.firstChild;for(;t;)e.push(t),t=t.nextSibling;return e}contains(e){if(!(e instanceof cd))return!1;if(e.ownerDocument!==this.ownerDocument)return!1;if(e===this)return!0;for(;e.parentNode;){if(e.parentNode===this)return!0;e=e.parentNode}return!1}appendChild(e){throw new Error("RRDomException: Failed to execute 'appendChild' on 'RRNode': This RRNode type does not support this method.")}insertBefore(e,t){throw new Error("RRDomException: Failed to execute 'insertBefore' on 'RRNode': This RRNode type does not support this method.")}removeChild(e){throw new Error("RRDomException: Failed to execute 'removeChild' on 'RRNode': This RRNode type does not support this method.")}toString(){return"RRNode"}}const ud={Node:["childNodes","parentNode","parentElement","textContent"],ShadowRoot:["host","styleSheets"],Element:["shadowRoot","querySelector","querySelectorAll"],MutationObserver:[]},dd={Node:["contains","getRootNode"],ShadowRoot:["getSelection"],Element:[],MutationObserver:["constructor"]},pd={},hd=()=>!!globalThis.Zone;function fd(e){if(pd[e])return pd[e];const t=globalThis[e],n=t.prototype,o=e in ud?ud[e]:void 0,r=Boolean(o&&o.every((e=>{var t,o;return Boolean(null==(o=null==(t=Object.getOwnPropertyDescriptor(n,e))?void 0:t.get)?void 0:o.toString().includes("[native code]"))}))),i=e in dd?dd[e]:void 0,a=Boolean(i&&i.every((e=>{var t;return"function"==typeof n[e]&&(null==(t=n[e])?void 0:t.toString().includes("[native code]"))})));if(r&&a&&!hd())return pd[e]=t.prototype,t.prototype;try{const o=document.createElement("iframe");document.body.appendChild(o);const r=o.contentWindow;if(!r)return t.prototype;const i=r[e].prototype;return document.body.removeChild(o),i?pd[e]=i:n}catch{return n}}const md={};function gd(e,t,n){var o;const r=`${e}.${String(n)}`;if(md[r])return md[r].call(t);const i=fd(e),a=null==(o=Object.getOwnPropertyDescriptor(i,n))?void 0:o.get;return a?(md[r]=a,a.call(t)):t[n]}const vd={};function yd(e,t,n){const o=`${e}.${String(n)}`;if(vd[o])return vd[o].bind(t);const r=fd(e)[n];return"function"!=typeof r?t[n]:(vd[o]=r,r.bind(t))}function bd(){return fd("MutationObserver").constructor}const wd={childNodes:function(e){return gd("Node",e,"childNodes")},parentNode:function(e){return gd("Node",e,"parentNode")},parentElement:function(e){return gd("Node",e,"parentElement")},textContent:function(e){return gd("Node",e,"textContent")},contains:function(e,t){return yd("Node",e,"contains")(t)},getRootNode:function(e){return yd("Node",e,"getRootNode")()},host:function(e){return e&&"host"in e?gd("ShadowRoot",e,"host"):null},styleSheets:function(e){return e.styleSheets},shadowRoot:function(e){return e&&"shadowRoot"in e?gd("Element",e,"shadowRoot"):null},querySelector:function(e,t){return gd("Element",e,"querySelector")(t)},querySelectorAll:function(e,t){return gd("Element",e,"querySelectorAll")(t)},mutationObserver:bd};function kd(e,t,n=document){const o={capture:!0,passive:!0};return n.addEventListener(e,t,o),()=>n.removeEventListener(e,t,o)}const xd="Please stop import mirror directly. Instead of that,\r\nnow you can use replayer.getMirror() to access the mirror instance of a replayer,\r\nor you can use record.mirror to access the mirror instance during recording.";let Sd={map:{},getId:()=>(console.error(xd),-1),getNode:()=>(console.error(xd),null),removeNodeFromMap(){console.error(xd)},has:()=>(console.error(xd),!1),reset(){console.error(xd)}};function Cd(e,t,n={}){let o=null,r=0;return function(...i){const a=Date.now();r||!1!==n.leading||(r=a);const s=t-(a-r),l=this;s<=0||s>t?(o&&(clearTimeout(o),o=null),r=a,e.apply(l,i)):o||!1===n.trailing||(o=setTimeout((()=>{r=!1===n.leading?0:Date.now(),o=null,e.apply(l,i)}),s))}}function Id(e,t,n,o,r=window){const i=r.Object.getOwnPropertyDescriptor(e,t);return r.Object.defineProperty(e,t,o?n:{set(e){setTimeout((()=>{n.set.call(this,e)}),0),i&&i.set&&i.set.call(this,e)}}),()=>Id(e,t,i||{},!0)}function Ed(e,t,n){try{if(!(t in e))return()=>{};const o=e[t],r=n(o);return"function"==typeof r&&(r.prototype=r.prototype||{},Object.defineProperties(r,{__rrweb_original__:{enumerable:!1,value:o}})),e[t]=r,()=>{e[t]=o}}catch{return()=>{}}}"undefined"!=typeof window&&window.Proxy&&window.Reflect&&(Sd=new Proxy(Sd,{get:(e,t,n)=>("map"===t&&console.error(xd),Reflect.get(e,t,n))}));let Td=Date.now;function Od(e){var t,n,o,r;const i=e.document;return{left:i.scrollingElement?i.scrollingElement.scrollLeft:void 0!==e.pageXOffset?e.pageXOffset:i.documentElement.scrollLeft||(null==i?void 0:i.body)&&(null==(t=wd.parentElement(i.body))?void 0:t.scrollLeft)||(null==(n=null==i?void 0:i.body)?void 0:n.scrollLeft)||0,top:i.scrollingElement?i.scrollingElement.scrollTop:void 0!==e.pageYOffset?e.pageYOffset:(null==i?void 0:i.documentElement.scrollTop)||(null==i?void 0:i.body)&&(null==(o=wd.parentElement(i.body))?void 0:o.scrollTop)||(null==(r=null==i?void 0:i.body)?void 0:r.scrollTop)||0}}function Ld(){return window.innerHeight||document.documentElement&&document.documentElement.clientHeight||document.body&&document.body.clientHeight}function Ad(){return window.innerWidth||document.documentElement&&document.documentElement.clientWidth||document.body&&document.body.clientWidth}function Md(e){if(!e)return null;return e.nodeType===e.ELEMENT_NODE?e:wd.parentElement(e)}function Rd(e,t,n,o){if(!e)return!1;const r=Md(e);if(!r)return!1;try{if("string"==typeof t){if(r.classList.contains(t))return!0;if(o&&null!==r.closest("."+t))return!0}else if(Ao(r,t,o))return!0}catch(i){}if(n){if(r.matches(n))return!0;if(o&&null!==r.closest(n))return!0}return!1}function Pd(e,t,n){return!("TITLE"!==e.tagName||!n.headTitleMutations)||t.getId(e)===yo}function Dd(e,t){if($n(e))return!1;const n=t.getId(e);if(!t.has(n))return!0;const o=wd.parentNode(e);return(!o||o.nodeType!==e.DOCUMENT_NODE)&&(!o||Dd(o,t))}function Nd(e){return Boolean(e.changedTouches)}function jd(e,t){return Boolean("IFRAME"===e.nodeName&&t.getMeta(e))}function Fd(e,t){return Boolean("LINK"===e.nodeName&&e.nodeType===e.ELEMENT_NODE&&e.getAttribute&&"stylesheet"===e.getAttribute("rel")&&t.getMeta(e))}function Bd(e){return!!e&&(e instanceof cd&&"shadowRoot"in e?Boolean(e.shadowRoot):Boolean(wd.shadowRoot(e)))}/[1-9][0-9]{12}/.test(Date.now().toString())||(Td=()=>(new Date).getTime());class _d{constructor(){Fn(this,"id",1),Fn(this,"styleIDMap",new WeakMap),Fn(this,"idStyleMap",new Map)}getId(e){return this.styleIDMap.get(e)??-1}has(e){return this.styleIDMap.has(e)}add(e,t){if(this.has(e))return this.getId(e);let n;return n=void 0===t?this.id++:t,this.styleIDMap.set(e,n),this.idStyleMap.set(n,e),n}getStyle(e){return this.idStyleMap.get(e)||null}reset(){this.styleIDMap=new WeakMap,this.idStyleMap=new Map,this.id=1}generateId(){return this.id++}}function Ud(e){var t;let n=null;return"getRootNode"in e&&(null==(t=wd.getRootNode(e))?void 0:t.nodeType)===Node.DOCUMENT_FRAGMENT_NODE&&wd.host(wd.getRootNode(e))&&(n=wd.host(wd.getRootNode(e))),n}function Hd(e){const t=e.ownerDocument;if(!t)return!1;const n=function(e){let t,n=e;for(;t=Ud(n);)n=t;return n}(e);return wd.contains(t,n)}function zd(e){const t=e.ownerDocument;return!!t&&(wd.contains(t,e)||Hd(e))}var qd=(e=>(e[e.DomContentLoaded=0]="DomContentLoaded",e[e.Load=1]="Load",e[e.FullSnapshot=2]="FullSnapshot",e[e.IncrementalSnapshot=3]="IncrementalSnapshot",e[e.Meta=4]="Meta",e[e.Custom=5]="Custom",e[e.Plugin=6]="Plugin",e))(qd||{}),Wd=(e=>(e[e.Mutation=0]="Mutation",e[e.MouseMove=1]="MouseMove",e[e.MouseInteraction=2]="MouseInteraction",e[e.Scroll=3]="Scroll",e[e.ViewportResize=4]="ViewportResize",e[e.Input=5]="Input",e[e.TouchMove=6]="TouchMove",e[e.MediaInteraction=7]="MediaInteraction",e[e.StyleSheetRule=8]="StyleSheetRule",e[e.CanvasMutation=9]="CanvasMutation",e[e.Font=10]="Font",e[e.Log=11]="Log",e[e.Drag=12]="Drag",e[e.StyleDeclaration=13]="StyleDeclaration",e[e.Selection=14]="Selection",e[e.AdoptedStyleSheet=15]="AdoptedStyleSheet",e[e.CustomElement=16]="CustomElement",e))(Wd||{}),Vd=(e=>(e[e.MouseUp=0]="MouseUp",e[e.MouseDown=1]="MouseDown",e[e.Click=2]="Click",e[e.ContextMenu=3]="ContextMenu",e[e.DblClick=4]="DblClick",e[e.Focus=5]="Focus",e[e.Blur=6]="Blur",e[e.TouchStart=7]="TouchStart",e[e.TouchMove_Departed=8]="TouchMove_Departed",e[e.TouchEnd=9]="TouchEnd",e[e.TouchCancel=10]="TouchCancel",e))(Vd||{}),Gd=(e=>(e[e.Mouse=0]="Mouse",e[e.Pen=1]="Pen",e[e.Touch=2]="Touch",e))(Gd||{}),Xd=(e=>(e[e["2D"]=0]="2D",e[e.WebGL=1]="WebGL",e[e.WebGL2=2]="WebGL2",e))(Xd||{}),Yd=(e=>(e[e.Play=0]="Play",e[e.Pause=1]="Pause",e[e.Seeked=2]="Seeked",e[e.VolumeChange=3]="VolumeChange",e[e.RateChange=4]="RateChange",e))(Yd||{}),Jd=(e=>(e[e.Document=0]="Document",e[e.DocumentType=1]="DocumentType",e[e.Element=2]="Element",e[e.Text=3]="Text",e[e.CDATA=4]="CDATA",e[e.Comment=5]="Comment",e))(Jd||{});function Kd(e){return"__ln"in e}class Zd{constructor(){Fn(this,"length",0),Fn(this,"head",null),Fn(this,"tail",null)}get(e){if(e>=this.length)throw new Error("Position outside of list range");let t=this.head;for(let n=0;n`${e}@${t}`;class Qd{constructor(){Fn(this,"frozen",!1),Fn(this,"locked",!1),Fn(this,"texts",[]),Fn(this,"attributes",[]),Fn(this,"attributeMap",new WeakMap),Fn(this,"removes",[]),Fn(this,"mapRemoves",[]),Fn(this,"movedMap",{}),Fn(this,"addedSet",new Set),Fn(this,"movedSet",new Set),Fn(this,"droppedSet",new Set),Fn(this,"removesSubTreeCache",new Set),Fn(this,"mutationCb"),Fn(this,"blockClass"),Fn(this,"blockSelector"),Fn(this,"maskTextClass"),Fn(this,"maskTextSelector"),Fn(this,"inlineStylesheet"),Fn(this,"maskInputOptions"),Fn(this,"maskTextFn"),Fn(this,"maskInputFn"),Fn(this,"keepIframeSrcFn"),Fn(this,"recordCanvas"),Fn(this,"inlineImages"),Fn(this,"slimDOMOptions"),Fn(this,"dataURLOptions"),Fn(this,"doc"),Fn(this,"mirror"),Fn(this,"iframeManager"),Fn(this,"stylesheetManager"),Fn(this,"shadowDomManager"),Fn(this,"canvasManager"),Fn(this,"processedNodeManager"),Fn(this,"unattachedDoc"),Fn(this,"processMutations",(e=>{e.forEach(this.processMutation),this.emit()})),Fn(this,"emit",(()=>{if(this.frozen||this.locked)return;const e=[],t=new Set,n=new Zd,o=e=>{let t=e,n=yo;for(;n===yo;)t=t&&t.nextSibling,n=t&&this.mirror.getId(t);return n},r=r=>{const i=wd.parentNode(r);if(!i||!zd(r))return;let a=!1;if(r.nodeType===Node.TEXT_NODE){const e=i.tagName;if("TEXTAREA"===e)return;"STYLE"===e&&this.addedSet.has(i)&&(a=!0)}const s=$n(i)?this.mirror.getId(Ud(r)):this.mirror.getId(i),l=o(r);if(-1===s||-1===l)return n.addNode(r);const c=Do(r,{doc:this.doc,mirror:this.mirror,blockClass:this.blockClass,blockSelector:this.blockSelector,maskTextClass:this.maskTextClass,maskTextSelector:this.maskTextSelector,skipChild:!0,newlyAddedElement:!0,inlineStylesheet:this.inlineStylesheet,maskInputOptions:this.maskInputOptions,maskTextFn:this.maskTextFn,maskInputFn:this.maskInputFn,slimDOMOptions:this.slimDOMOptions,dataURLOptions:this.dataURLOptions,recordCanvas:this.recordCanvas,inlineImages:this.inlineImages,onSerialize:e=>{jd(e,this.mirror)&&this.iframeManager.addIframe(e),Fd(e,this.mirror)&&this.stylesheetManager.trackLinkElement(e),Bd(r)&&this.shadowDomManager.addShadowRoot(wd.shadowRoot(r),this.doc)},onIframeLoad:(e,t)=>{this.iframeManager.attachIframe(e,t),this.shadowDomManager.observeAttachShadow(e)},onStylesheetLoad:(e,t)=>{this.stylesheetManager.attachLinkElement(e,t)},cssCaptured:a});c&&(e.push({parentId:s,nextId:l,node:c}),t.add(c.id))};for(;this.mapRemoves.length;)this.mirror.removeNodeFromMap(this.mapRemoves.shift());for(const s of this.movedSet)tp(this.removesSubTreeCache,s,this.mirror)&&!this.movedSet.has(wd.parentNode(s))||r(s);for(const s of this.addedSet)np(this.droppedSet,s)||tp(this.removesSubTreeCache,s,this.mirror)?np(this.movedSet,s)?r(s):this.droppedSet.add(s):r(s);let i=null;for(;n.length;){let e=null;if(i){const t=this.mirror.getId(wd.parentNode(i.value)),n=o(i.value);-1!==t&&-1!==n&&(e=i)}if(!e){let t=n.tail;for(;t;){const n=t;if(t=t.previous,n){const t=this.mirror.getId(wd.parentNode(n.value));if(-1===o(n.value))continue;if(-1!==t){e=n;break}{const t=n.value,o=wd.parentNode(t);if(o&&o.nodeType===Node.DOCUMENT_FRAGMENT_NODE){const t=wd.host(o);if(-1!==this.mirror.getId(t)){e=n;break}}}}}}if(!e){for(;n.head;)n.removeNode(n.head.value);break}i=e.previous,n.removeNode(e.value),r(e.value)}const a={texts:this.texts.map((e=>{const t=e.node,n=wd.parentNode(t);return n&&"TEXTAREA"===n.tagName&&this.genTextAreaValueMutation(n),{id:this.mirror.getId(t),value:e.value}})).filter((e=>!t.has(e.id))).filter((e=>this.mirror.has(e.id))),attributes:this.attributes.map((e=>{const{attributes:t}=e;if("string"==typeof t.style){const n=JSON.stringify(e.styleDiff),o=JSON.stringify(e._unchangedStyles);n.length!t.has(e.id))).filter((e=>this.mirror.has(e.id))),removes:this.removes,adds:e};(a.texts.length||a.attributes.length||a.removes.length||a.adds.length)&&(this.texts=[],this.attributes=[],this.attributeMap=new WeakMap,this.removes=[],this.addedSet=new Set,this.movedSet=new Set,this.droppedSet=new Set,this.removesSubTreeCache=new Set,this.movedMap={},this.mutationCb(a))})),Fn(this,"genTextAreaValueMutation",(e=>{let t=this.attributeMap.get(e);t||(t={node:e,attributes:{},styleDiff:{},_unchangedStyles:{}},this.attributes.push(t),this.attributeMap.set(e,t)),t.attributes.value=Array.from(wd.childNodes(e),(e=>wd.textContent(e)||"")).join("")})),Fn(this,"processMutation",(e=>{if(!Pd(e.target,this.mirror,this.slimDOMOptions))switch(e.type){case"characterData":{const t=wd.textContent(e.target);Rd(e.target,this.blockClass,this.blockSelector,!1)||t===e.oldValue||this.texts.push({value:Mo(e.target,this.maskTextClass,this.maskTextSelector,!0)&&t?this.maskTextFn?this.maskTextFn(t,Md(e.target)):t.replace(/[\S]/g,"*"):t,node:e.target});break}case"attributes":{const n=e.target;let o=e.attributeName,r=e.target.getAttribute(o);if("value"===o){const e=ao(n);r=oo({element:n,maskInputOptions:this.maskInputOptions,tagName:n.tagName,type:e,value:r,maskInputFn:this.maskInputFn})}if(Rd(e.target,this.blockClass,this.blockSelector,!1)||r===e.oldValue)return;let i=this.attributeMap.get(e.target);if("IFRAME"===n.tagName&&"src"===o&&!this.keepIframeSrcFn(r)){if(n.contentDocument)return;o="rr_src"}if(i||(i={node:e.target,attributes:{},styleDiff:{},_unchangedStyles:{}},this.attributes.push(i),this.attributeMap.set(e.target,i)),"type"===o&&"INPUT"===n.tagName&&"password"===(e.oldValue||"").toLowerCase()&&n.setAttribute("data-rr-is-password","true"),!Lo(n.tagName,o))if(i.attributes[o]=Oo(this.doc,ro(n.tagName),ro(o),r),"style"===o){if(!this.unattachedDoc)try{this.unattachedDoc=document.implementation.createHTMLDocument()}catch(t){this.unattachedDoc=this.doc}const o=this.unattachedDoc.createElement("span");e.oldValue&&o.setAttribute("style",e.oldValue);for(const e of Array.from(n.style)){const t=n.style.getPropertyValue(e),r=n.style.getPropertyPriority(e);t!==o.style.getPropertyValue(e)||r!==o.style.getPropertyPriority(e)?i.styleDiff[e]=""===r?t:[t,r]:i._unchangedStyles[e]=[t,r]}for(const e of Array.from(o.style))""===n.style.getPropertyValue(e)&&(i.styleDiff[e]=!1)}else"open"===o&&"DIALOG"===n.tagName&&(n.matches("dialog:modal")?i.attributes.rr_open_mode="modal":i.attributes.rr_open_mode="non-modal");break}case"childList":if(Rd(e.target,this.blockClass,this.blockSelector,!0))return;if("TEXTAREA"===e.target.tagName)return void this.genTextAreaValueMutation(e.target);e.addedNodes.forEach((t=>this.genAdds(t,e.target))),e.removedNodes.forEach((t=>{const n=this.mirror.getId(t),o=$n(e.target)?this.mirror.getId(wd.host(e.target)):this.mirror.getId(e.target);Rd(e.target,this.blockClass,this.blockSelector,!1)||Pd(t,this.mirror,this.slimDOMOptions)||!function(e,t){return-1!==t.getId(e)}(t,this.mirror)||(this.addedSet.has(t)?(ep(this.addedSet,t),this.droppedSet.add(t)):this.addedSet.has(e.target)&&-1===n||Dd(e.target,this.mirror)||(this.movedSet.has(t)&&this.movedMap[$d(n,o)]?ep(this.movedSet,t):(this.removes.push({parentId:o,id:n,isShadow:!(!$n(e.target)||!Qn(e.target))||void 0}),function(e,t){const n=[e];for(;n.length;){const e=n.pop();t.has(e)||(t.add(e),wd.childNodes(e).forEach((e=>n.push(e))))}}(t,this.removesSubTreeCache))),this.mapRemoves.push(t))}))}})),Fn(this,"genAdds",((e,t)=>{if(!this.processedNodeManager.inOtherBuffer(e,this)&&!this.addedSet.has(e)&&!this.movedSet.has(e)){if(this.mirror.hasNode(e)){if(Pd(e,this.mirror,this.slimDOMOptions))return;this.movedSet.add(e);let n=null;t&&this.mirror.hasNode(t)&&(n=this.mirror.getId(t)),n&&-1!==n&&(this.movedMap[$d(this.mirror.getId(e),n)]=!0)}else this.addedSet.add(e),this.droppedSet.delete(e);Rd(e,this.blockClass,this.blockSelector,!1)||(wd.childNodes(e).forEach((e=>this.genAdds(e))),Bd(e)&&wd.childNodes(wd.shadowRoot(e)).forEach((t=>{this.processedNodeManager.add(t,this),this.genAdds(t,e)})))}}))}init(e){["mutationCb","blockClass","blockSelector","maskTextClass","maskTextSelector","inlineStylesheet","maskInputOptions","maskTextFn","maskInputFn","keepIframeSrcFn","recordCanvas","inlineImages","slimDOMOptions","dataURLOptions","doc","mirror","iframeManager","stylesheetManager","shadowDomManager","canvasManager","processedNodeManager"].forEach((t=>{this[t]=e[t]}))}freeze(){this.frozen=!0,this.canvasManager.freeze()}unfreeze(){this.frozen=!1,this.canvasManager.unfreeze(),this.emit()}isFrozen(){return this.frozen}lock(){this.locked=!0,this.canvasManager.lock()}unlock(){this.locked=!1,this.canvasManager.unlock(),this.emit()}reset(){this.shadowDomManager.reset(),this.canvasManager.reset()}}function ep(e,t){e.delete(t),wd.childNodes(t).forEach((t=>ep(e,t)))}function tp(e,t,n){return 0!==e.size&&function(e,t,n){const o=wd.parentNode(t);return!!o&&e.has(o)}(e,t)}function np(e,t){return 0!==e.size&&op(e,t)}function op(e,t){const n=wd.parentNode(t);return!!n&&(!!e.has(n)||op(e,n))}let rp;const ip=e=>{if(!rp)return e;return(...t)=>{try{return e(...t)}catch(n){if(rp&&!0===rp(n))return;throw n}}},ap=[];function sp(e){try{if("composedPath"in e){const t=e.composedPath();if(t.length)return t[0]}else if("path"in e&&e.path.length)return e.path[0]}catch{}return e&&e.target}function lp(e,t){const n=new Qd;ap.push(n),n.init(e);const o=new(bd())(ip(n.processMutations.bind(n)));return o.observe(t,{attributes:!0,attributeOldValue:!0,characterData:!0,characterDataOldValue:!0,childList:!0,subtree:!0}),o}function cp({mouseInteractionCb:e,doc:t,mirror:n,blockClass:o,blockSelector:r,sampling:i}){if(!1===i.mouseInteraction)return()=>{};const a=!0===i.mouseInteraction||void 0===i.mouseInteraction?{}:i.mouseInteraction,s=[];let l=null;return Object.keys(Vd).filter((e=>Number.isNaN(Number(e))&&!e.endsWith("_Departed")&&!1!==a[e])).forEach((i=>{let a=ro(i);const c=(t=>i=>{const a=sp(i);if(Rd(a,o,r,!0))return;let s=null,c=t;if("pointerType"in i){switch(i.pointerType){case"mouse":s=Gd.Mouse;break;case"touch":s=Gd.Touch;break;case"pen":s=Gd.Pen}s===Gd.Touch?Vd[t]===Vd.MouseDown?c="TouchStart":Vd[t]===Vd.MouseUp&&(c="TouchEnd"):Gd.Pen}else Nd(i)&&(s=Gd.Touch);null!==s?(l=s,(c.startsWith("Touch")&&s===Gd.Touch||c.startsWith("Mouse")&&s===Gd.Mouse)&&(s=null)):Vd[t]===Vd.Click&&(s=l,l=null);const u=Nd(i)?i.changedTouches[0]:i;if(!u)return;const d=n.getId(a),{clientX:p,clientY:h}=u;ip(e)({type:Vd[c],id:d,x:p,y:h,...null!==s&&{pointerType:s}})})(i);if(window.PointerEvent)switch(Vd[i]){case Vd.MouseDown:case Vd.MouseUp:a=a.replace("mouse","pointer");break;case Vd.TouchStart:case Vd.TouchEnd:return}s.push(kd(a,c,t))})),ip((()=>{s.forEach((e=>e()))}))}function up({scrollCb:e,doc:t,mirror:n,blockClass:o,blockSelector:r,sampling:i}){return kd("scroll",ip(Cd(ip((i=>{const a=sp(i);if(!a||Rd(a,o,r,!0))return;const s=n.getId(a);if(a===t&&t.defaultView){const n=Od(t.defaultView);e({id:s,x:n.left,y:n.top})}else e({id:s,x:a.scrollLeft,y:a.scrollTop})})),i.scroll||100)),t)}const dp=["INPUT","TEXTAREA","SELECT"],pp=new WeakMap;function hp(e){return function(e,t){if(vp("CSSGroupingRule")&&e.parentRule instanceof CSSGroupingRule||vp("CSSMediaRule")&&e.parentRule instanceof CSSMediaRule||vp("CSSSupportsRule")&&e.parentRule instanceof CSSSupportsRule||vp("CSSConditionRule")&&e.parentRule instanceof CSSConditionRule){const n=Array.from(e.parentRule.cssRules).indexOf(e);t.unshift(n)}else if(e.parentStyleSheet){const n=Array.from(e.parentStyleSheet.cssRules).indexOf(e);t.unshift(n)}return t}(e,[])}function fp(e,t,n){let o,r;return e?(e.ownerNode?o=t.getId(e.ownerNode):r=n.getId(e),{styleId:r,id:o}):{}}function mp({mirror:e,stylesheetManager:t},n){var o,r,i;let a=null;a="#document"===n.nodeName?e.getId(n):e.getId(wd.host(n));const s="#document"===n.nodeName?null==(o=n.defaultView)?void 0:o.Document:null==(i=null==(r=n.ownerDocument)?void 0:r.defaultView)?void 0:i.ShadowRoot,l=(null==s?void 0:s.prototype)?Object.getOwnPropertyDescriptor(null==s?void 0:s.prototype,"adoptedStyleSheets"):void 0;return null!==a&&-1!==a&&s&&l?(Object.defineProperty(n,"adoptedStyleSheets",{configurable:l.configurable,enumerable:l.enumerable,get(){var e;return null==(e=l.get)?void 0:e.call(this)},set(e){var n;const o=null==(n=l.set)?void 0:n.call(this,e);if(null!==a&&-1!==a)try{t.adoptStyleSheets(e,a)}catch(r){}return o}}),ip((()=>{Object.defineProperty(n,"adoptedStyleSheets",{configurable:l.configurable,enumerable:l.enumerable,get:l.get,set:l.set})}))):()=>{}}function gp(e,t={}){const n=e.doc.defaultView;if(!n)return()=>{};let o;!function(e,t){const{mutationCb:n,mousemoveCb:o,mouseInteractionCb:r,scrollCb:i,viewportResizeCb:a,inputCb:s,mediaInteractionCb:l,styleSheetRuleCb:c,styleDeclarationCb:u,canvasMutationCb:d,fontCb:p,selectionCb:h,customElementCb:f}=e;e.mutationCb=(...e)=>{t.mutation&&t.mutation(...e),n(...e)},e.mousemoveCb=(...e)=>{t.mousemove&&t.mousemove(...e),o(...e)},e.mouseInteractionCb=(...e)=>{t.mouseInteraction&&t.mouseInteraction(...e),r(...e)},e.scrollCb=(...e)=>{t.scroll&&t.scroll(...e),i(...e)},e.viewportResizeCb=(...e)=>{t.viewportResize&&t.viewportResize(...e),a(...e)},e.inputCb=(...e)=>{t.input&&t.input(...e),s(...e)},e.mediaInteractionCb=(...e)=>{t.mediaInteaction&&t.mediaInteaction(...e),l(...e)},e.styleSheetRuleCb=(...e)=>{t.styleSheetRule&&t.styleSheetRule(...e),c(...e)},e.styleDeclarationCb=(...e)=>{t.styleDeclaration&&t.styleDeclaration(...e),u(...e)},e.canvasMutationCb=(...e)=>{t.canvasMutation&&t.canvasMutation(...e),d(...e)},e.fontCb=(...e)=>{t.font&&t.font(...e),p(...e)},e.selectionCb=(...e)=>{t.selection&&t.selection(...e),h(...e)},e.customElementCb=(...e)=>{t.customElement&&t.customElement(...e),f(...e)}}(e,t),e.recordDOM&&(o=lp(e,e.doc));const r=function({mousemoveCb:e,sampling:t,doc:n,mirror:o}){if(!1===t.mousemove)return()=>{};const r="number"==typeof t.mousemove?t.mousemove:50,i="number"==typeof t.mousemoveCallback?t.mousemoveCallback:500;let a,s=[];const l=Cd(ip((t=>{const n=Date.now()-a;e(s.map((e=>(e.timeOffset-=n,e))),t),s=[],a=null})),i),c=ip(Cd(ip((e=>{const t=sp(e),{clientX:n,clientY:r}=Nd(e)?e.changedTouches[0]:e;a||(a=Td()),s.push({x:n,y:r,id:o.getId(t),timeOffset:Td()-a}),l("undefined"!=typeof DragEvent&&e instanceof DragEvent?Wd.Drag:e instanceof MouseEvent?Wd.MouseMove:Wd.TouchMove)})),r,{trailing:!1})),u=[kd("mousemove",c,n),kd("touchmove",c,n),kd("drag",c,n)];return ip((()=>{u.forEach((e=>e()))}))}(e),i=cp(e),a=up(e),s=function({viewportResizeCb:e},{win:t}){let n=-1,o=-1;return kd("resize",ip(Cd(ip((()=>{const t=Ld(),r=Ad();n===t&&o===r||(e({width:Number(r),height:Number(t)}),n=t,o=r)})),200)),t)}(e,{win:n}),l=function({inputCb:e,doc:t,mirror:n,blockClass:o,blockSelector:r,ignoreClass:i,ignoreSelector:a,maskInputOptions:s,maskInputFn:l,sampling:c,userTriggeredOnInput:u}){function d(e){let n=sp(e);const c=e.isTrusted,d=n&&n.tagName;if(n&&"OPTION"===d&&(n=wd.parentElement(n)),!n||!d||dp.indexOf(d)<0||Rd(n,o,r,!0))return;if(n.classList.contains(i)||a&&n.matches(a))return;let h=n.value,f=!1;const m=ao(n)||"";"radio"===m||"checkbox"===m?f=n.checked:(s[d.toLowerCase()]||s[m])&&(h=oo({element:n,maskInputOptions:s,tagName:d,type:m,value:h,maskInputFn:l})),p(n,u?{text:h,isChecked:f,userTriggered:c}:{text:h,isChecked:f});const g=n.name;"radio"===m&&g&&f&&t.querySelectorAll(`input[type="radio"][name="${g}"]`).forEach((e=>{if(e!==n){const t=e.value;p(e,u?{text:t,isChecked:!f,userTriggered:!1}:{text:t,isChecked:!f})}}))}function p(t,o){const r=pp.get(t);if(!r||r.text!==o.text||r.isChecked!==o.isChecked){pp.set(t,o);const r=n.getId(t);ip(e)({...o,id:r})}}const h=("last"===c.input?["change"]:["input","change"]).map((e=>kd(e,ip(d),t))),f=t.defaultView;if(!f)return()=>{h.forEach((e=>e()))};const m=f.Object.getOwnPropertyDescriptor(f.HTMLInputElement.prototype,"value"),g=[[f.HTMLInputElement.prototype,"value"],[f.HTMLInputElement.prototype,"checked"],[f.HTMLSelectElement.prototype,"value"],[f.HTMLTextAreaElement.prototype,"value"],[f.HTMLSelectElement.prototype,"selectedIndex"],[f.HTMLOptionElement.prototype,"selected"]];return m&&m.set&&h.push(...g.map((e=>Id(e[0],e[1],{set(){ip(d)({target:this,isTrusted:!1})}},!1,f)))),ip((()=>{h.forEach((e=>e()))}))}(e),c=function({mediaInteractionCb:e,blockClass:t,blockSelector:n,mirror:o,sampling:r,doc:i}){const a=ip((i=>Cd(ip((r=>{const a=sp(r);if(!a||Rd(a,t,n,!0))return;const{currentTime:s,volume:l,muted:c,playbackRate:u,loop:d}=a;e({type:i,id:o.getId(a),currentTime:s,volume:l,muted:c,playbackRate:u,loop:d})})),r.media||500))),s=[kd("play",a(Yd.Play),i),kd("pause",a(Yd.Pause),i),kd("seeked",a(Yd.Seeked),i),kd("volumechange",a(Yd.VolumeChange),i),kd("ratechange",a(Yd.RateChange),i)];return ip((()=>{s.forEach((e=>e()))}))}(e);let u=()=>{},d=()=>{},p=()=>{},h=()=>{};e.recordDOM&&(u=function({styleSheetRuleCb:e,mirror:t,stylesheetManager:n},{win:o}){if(!o.CSSStyleSheet||!o.CSSStyleSheet.prototype)return()=>{};const r=o.CSSStyleSheet.prototype.insertRule;o.CSSStyleSheet.prototype.insertRule=new Proxy(r,{apply:ip(((o,r,i)=>{const[a,s]=i,{id:l,styleId:c}=fp(r,t,n.styleMirror);return(l&&-1!==l||c&&-1!==c)&&e({id:l,styleId:c,adds:[{rule:a,index:s}]}),o.apply(r,i)}))}),o.CSSStyleSheet.prototype.addRule=function(e,t,n=this.cssRules.length){const r=`${e} { ${t} }`;return o.CSSStyleSheet.prototype.insertRule.apply(this,[r,n])};const i=o.CSSStyleSheet.prototype.deleteRule;let a,s;o.CSSStyleSheet.prototype.deleteRule=new Proxy(i,{apply:ip(((o,r,i)=>{const[a]=i,{id:s,styleId:l}=fp(r,t,n.styleMirror);return(s&&-1!==s||l&&-1!==l)&&e({id:s,styleId:l,removes:[{index:a}]}),o.apply(r,i)}))}),o.CSSStyleSheet.prototype.removeRule=function(e){return o.CSSStyleSheet.prototype.deleteRule.apply(this,[e])},o.CSSStyleSheet.prototype.replace&&(a=o.CSSStyleSheet.prototype.replace,o.CSSStyleSheet.prototype.replace=new Proxy(a,{apply:ip(((o,r,i)=>{const[a]=i,{id:s,styleId:l}=fp(r,t,n.styleMirror);return(s&&-1!==s||l&&-1!==l)&&e({id:s,styleId:l,replace:a}),o.apply(r,i)}))})),o.CSSStyleSheet.prototype.replaceSync&&(s=o.CSSStyleSheet.prototype.replaceSync,o.CSSStyleSheet.prototype.replaceSync=new Proxy(s,{apply:ip(((o,r,i)=>{const[a]=i,{id:s,styleId:l}=fp(r,t,n.styleMirror);return(s&&-1!==s||l&&-1!==l)&&e({id:s,styleId:l,replaceSync:a}),o.apply(r,i)}))}));const l={};yp("CSSGroupingRule")?l.CSSGroupingRule=o.CSSGroupingRule:(yp("CSSMediaRule")&&(l.CSSMediaRule=o.CSSMediaRule),yp("CSSConditionRule")&&(l.CSSConditionRule=o.CSSConditionRule),yp("CSSSupportsRule")&&(l.CSSSupportsRule=o.CSSSupportsRule));const c={};return Object.entries(l).forEach((([o,r])=>{c[o]={insertRule:r.prototype.insertRule,deleteRule:r.prototype.deleteRule},r.prototype.insertRule=new Proxy(c[o].insertRule,{apply:ip(((o,r,i)=>{const[a,s]=i,{id:l,styleId:c}=fp(r.parentStyleSheet,t,n.styleMirror);return(l&&-1!==l||c&&-1!==c)&&e({id:l,styleId:c,adds:[{rule:a,index:[...hp(r),s||0]}]}),o.apply(r,i)}))}),r.prototype.deleteRule=new Proxy(c[o].deleteRule,{apply:ip(((o,r,i)=>{const[a]=i,{id:s,styleId:l}=fp(r.parentStyleSheet,t,n.styleMirror);return(s&&-1!==s||l&&-1!==l)&&e({id:s,styleId:l,removes:[{index:[...hp(r),a]}]}),o.apply(r,i)}))})})),ip((()=>{o.CSSStyleSheet.prototype.insertRule=r,o.CSSStyleSheet.prototype.deleteRule=i,a&&(o.CSSStyleSheet.prototype.replace=a),s&&(o.CSSStyleSheet.prototype.replaceSync=s),Object.entries(l).forEach((([e,t])=>{t.prototype.insertRule=c[e].insertRule,t.prototype.deleteRule=c[e].deleteRule}))}))}(e,{win:n}),d=mp(e,e.doc),p=function({styleDeclarationCb:e,mirror:t,ignoreCSSAttributes:n,stylesheetManager:o},{win:r}){const i=r.CSSStyleDeclaration.prototype.setProperty;r.CSSStyleDeclaration.prototype.setProperty=new Proxy(i,{apply:ip(((r,a,s)=>{var l;const[c,u,d]=s;if(n.has(c))return i.apply(a,[c,u,d]);const{id:p,styleId:h}=fp(null==(l=a.parentRule)?void 0:l.parentStyleSheet,t,o.styleMirror);return(p&&-1!==p||h&&-1!==h)&&e({id:p,styleId:h,set:{property:c,value:u,priority:d},index:hp(a.parentRule)}),r.apply(a,s)}))});const a=r.CSSStyleDeclaration.prototype.removeProperty;return r.CSSStyleDeclaration.prototype.removeProperty=new Proxy(a,{apply:ip(((r,i,s)=>{var l;const[c]=s;if(n.has(c))return a.apply(i,[c]);const{id:u,styleId:d}=fp(null==(l=i.parentRule)?void 0:l.parentStyleSheet,t,o.styleMirror);return(u&&-1!==u||d&&-1!==d)&&e({id:u,styleId:d,remove:{property:c},index:hp(i.parentRule)}),r.apply(i,s)}))}),ip((()=>{r.CSSStyleDeclaration.prototype.setProperty=i,r.CSSStyleDeclaration.prototype.removeProperty=a}))}(e,{win:n}),e.collectFonts&&(h=function({fontCb:e,doc:t}){const n=t.defaultView;if(!n)return()=>{};const o=[],r=new WeakMap,i=n.FontFace;n.FontFace=function(e,t,n){const o=new i(e,t,n);return r.set(o,{family:e,buffer:"string"!=typeof t,descriptors:n,fontSource:"string"==typeof t?t:JSON.stringify(Array.from(new Uint8Array(t)))}),o};const a=Ed(t.fonts,"add",(function(t){return function(n){return setTimeout(ip((()=>{const t=r.get(n);t&&(e(t),r.delete(n))})),0),t.apply(this,[n])}}));return o.push((()=>{n.FontFace=i})),o.push(a),ip((()=>{o.forEach((e=>e()))}))}(e)));const f=function(e){const{doc:t,mirror:n,blockClass:o,blockSelector:r,selectionCb:i}=e;let a=!0;const s=ip((()=>{const e=t.getSelection();if(!e||a&&(null==e?void 0:e.isCollapsed))return;a=e.isCollapsed||!1;const s=[],l=e.rangeCount||0;for(let t=0;t{}}(e),g=[];for(const v of e.plugins)g.push(v.observer(v.callback,n,v.options));return ip((()=>{ap.forEach((e=>e.reset())),null==o||o.disconnect(),r(),i(),a(),s(),l(),c(),u(),d(),p(),h(),f(),m(),g.forEach((e=>e()))}))}function vp(e){return void 0!==window[e]}function yp(e){return Boolean(void 0!==window[e]&&window[e].prototype&&"insertRule"in window[e].prototype&&"deleteRule"in window[e].prototype)}class bp{constructor(e){Fn(this,"iframeIdToRemoteIdMap",new WeakMap),Fn(this,"iframeRemoteIdToIdMap",new WeakMap),this.generateIdFn=e}getId(e,t,n,o){const r=n||this.getIdToRemoteIdMap(e),i=o||this.getRemoteIdToIdMap(e);let a=r.get(t);return a||(a=this.generateIdFn(),r.set(t,a),i.set(a,t)),a}getIds(e,t){const n=this.getIdToRemoteIdMap(e),o=this.getRemoteIdToIdMap(e);return t.map((t=>this.getId(e,t,n,o)))}getRemoteId(e,t,n){const o=n||this.getRemoteIdToIdMap(e);if("number"!=typeof t)return t;const r=o.get(t);return r||-1}getRemoteIds(e,t){const n=this.getRemoteIdToIdMap(e);return t.map((t=>this.getRemoteId(e,t,n)))}reset(e){if(!e)return this.iframeIdToRemoteIdMap=new WeakMap,void(this.iframeRemoteIdToIdMap=new WeakMap);this.iframeIdToRemoteIdMap.delete(e),this.iframeRemoteIdToIdMap.delete(e)}getIdToRemoteIdMap(e){let t=this.iframeIdToRemoteIdMap.get(e);return t||(t=new Map,this.iframeIdToRemoteIdMap.set(e,t)),t}getRemoteIdToIdMap(e){let t=this.iframeRemoteIdToIdMap.get(e);return t||(t=new Map,this.iframeRemoteIdToIdMap.set(e,t)),t}}class wp{constructor(e){Fn(this,"iframes",new WeakMap),Fn(this,"crossOriginIframeMap",new WeakMap),Fn(this,"crossOriginIframeMirror",new bp(bo)),Fn(this,"crossOriginIframeStyleMirror"),Fn(this,"crossOriginIframeRootIdMap",new WeakMap),Fn(this,"mirror"),Fn(this,"mutationCb"),Fn(this,"wrappedEmit"),Fn(this,"loadListener"),Fn(this,"stylesheetManager"),Fn(this,"recordCrossOriginIframes"),this.mutationCb=e.mutationCb,this.wrappedEmit=e.wrappedEmit,this.stylesheetManager=e.stylesheetManager,this.recordCrossOriginIframes=e.recordCrossOriginIframes,this.crossOriginIframeStyleMirror=new bp(this.stylesheetManager.styleMirror.generateId.bind(this.stylesheetManager.styleMirror)),this.mirror=e.mirror,this.recordCrossOriginIframes&&window.addEventListener("message",this.handleMessage.bind(this))}addIframe(e){this.iframes.set(e,!0),e.contentWindow&&this.crossOriginIframeMap.set(e.contentWindow,e)}addLoadListener(e){this.loadListener=e}attachIframe(e,t){var n,o;this.mutationCb({adds:[{parentId:this.mirror.getId(e),nextId:null,node:t}],removes:[],texts:[],attributes:[],isAttachIframe:!0}),this.recordCrossOriginIframes&&(null==(n=e.contentWindow)||n.addEventListener("message",this.handleMessage.bind(this))),null==(o=this.loadListener)||o.call(this,e),e.contentDocument&&e.contentDocument.adoptedStyleSheets&&e.contentDocument.adoptedStyleSheets.length>0&&this.stylesheetManager.adoptStyleSheets(e.contentDocument.adoptedStyleSheets,this.mirror.getId(e.contentDocument))}handleMessage(e){const t=e;if("rrweb"!==t.data.type||t.origin!==t.data.origin)return;if(!e.source)return;const n=this.crossOriginIframeMap.get(e.source);if(!n)return;const o=this.transformCrossOriginEvent(n,t.data.event);o&&this.wrappedEmit(o,t.data.isCheckout)}transformCrossOriginEvent(e,t){var n;switch(t.type){case qd.FullSnapshot:{this.crossOriginIframeMirror.reset(e),this.crossOriginIframeStyleMirror.reset(e),this.replaceIdOnNode(t.data.node,e);const n=t.data.node.id;return this.crossOriginIframeRootIdMap.set(e,n),this.patchRootIdOnNode(t.data.node,n),{timestamp:t.timestamp,type:qd.IncrementalSnapshot,data:{source:Wd.Mutation,adds:[{parentId:this.mirror.getId(e),nextId:null,node:t.data.node}],removes:[],texts:[],attributes:[],isAttachIframe:!0}}}case qd.Meta:case qd.Load:case qd.DomContentLoaded:return!1;case qd.Plugin:return t;case qd.Custom:return this.replaceIds(t.data.payload,e,["id","parentId","previousId","nextId"]),t;case qd.IncrementalSnapshot:switch(t.data.source){case Wd.Mutation:return t.data.adds.forEach((t=>{this.replaceIds(t,e,["parentId","nextId","previousId"]),this.replaceIdOnNode(t.node,e);const n=this.crossOriginIframeRootIdMap.get(e);n&&this.patchRootIdOnNode(t.node,n)})),t.data.removes.forEach((t=>{this.replaceIds(t,e,["parentId","id"])})),t.data.attributes.forEach((t=>{this.replaceIds(t,e,["id"])})),t.data.texts.forEach((t=>{this.replaceIds(t,e,["id"])})),t;case Wd.Drag:case Wd.TouchMove:case Wd.MouseMove:return t.data.positions.forEach((t=>{this.replaceIds(t,e,["id"])})),t;case Wd.ViewportResize:return!1;case Wd.MediaInteraction:case Wd.MouseInteraction:case Wd.Scroll:case Wd.CanvasMutation:case Wd.Input:return this.replaceIds(t.data,e,["id"]),t;case Wd.StyleSheetRule:case Wd.StyleDeclaration:return this.replaceIds(t.data,e,["id"]),this.replaceStyleIds(t.data,e,["styleId"]),t;case Wd.Font:return t;case Wd.Selection:return t.data.ranges.forEach((t=>{this.replaceIds(t,e,["start","end"])})),t;case Wd.AdoptedStyleSheet:return this.replaceIds(t.data,e,["id"]),this.replaceStyleIds(t.data,e,["styleIds"]),null==(n=t.data.styles)||n.forEach((t=>{this.replaceStyleIds(t,e,["styleId"])})),t}}return!1}replace(e,t,n,o){for(const r of o)(Array.isArray(t[r])||"number"==typeof t[r])&&(Array.isArray(t[r])?t[r]=e.getIds(n,t[r]):t[r]=e.getId(n,t[r]));return t}replaceIds(e,t,n){return this.replace(this.crossOriginIframeMirror,e,t,n)}replaceStyleIds(e,t,n){return this.replace(this.crossOriginIframeStyleMirror,e,t,n)}replaceIdOnNode(e,t){this.replaceIds(e,t,["id","rootId"]),"childNodes"in e&&e.childNodes.forEach((e=>{this.replaceIdOnNode(e,t)}))}patchRootIdOnNode(e,t){e.type===Jd.Document||e.rootId||(e.rootId=t),"childNodes"in e&&e.childNodes.forEach((e=>{this.patchRootIdOnNode(e,t)}))}}class kp{constructor(e){Fn(this,"shadowDoms",new WeakSet),Fn(this,"mutationCb"),Fn(this,"scrollCb"),Fn(this,"bypassOptions"),Fn(this,"mirror"),Fn(this,"restoreHandlers",[]),this.mutationCb=e.mutationCb,this.scrollCb=e.scrollCb,this.bypassOptions=e.bypassOptions,this.mirror=e.mirror,this.init()}init(){this.reset(),this.patchAttachShadow(Element,document)}addShadowRoot(e,t){if(!Qn(e))return;if(this.shadowDoms.has(e))return;this.shadowDoms.add(e);const n=lp({...this.bypassOptions,doc:t,mutationCb:this.mutationCb,mirror:this.mirror,shadowDomManager:this},e);this.restoreHandlers.push((()=>n.disconnect())),this.restoreHandlers.push(up({...this.bypassOptions,scrollCb:this.scrollCb,doc:e,mirror:this.mirror})),setTimeout((()=>{e.adoptedStyleSheets&&e.adoptedStyleSheets.length>0&&this.bypassOptions.stylesheetManager.adoptStyleSheets(e.adoptedStyleSheets,this.mirror.getId(wd.host(e))),this.restoreHandlers.push(mp({mirror:this.mirror,stylesheetManager:this.bypassOptions.stylesheetManager},e))}),0)}observeAttachShadow(e){e.contentWindow&&e.contentDocument&&this.patchAttachShadow(e.contentWindow.Element,e.contentDocument)}patchAttachShadow(e,t){const n=this;this.restoreHandlers.push(Ed(e.prototype,"attachShadow",(function(e){return function(o){const r=e.call(this,o),i=wd.shadowRoot(this);return i&&zd(this)&&n.addShadowRoot(i,t),r}})))}reset(){this.restoreHandlers.forEach((e=>{try{e()}catch(t){}})),this.restoreHandlers=[],this.shadowDoms=new WeakSet}}for(var xp="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Sp="undefined"==typeof Uint8Array?[]:new Uint8Array(256),Cp=0;Cp<64;Cp++)Sp[xp.charCodeAt(Cp)]=Cp;const Ip=new Map;const Ep=(e,t,n)=>{if(!e||!Lp(e,t)&&"object"!=typeof e)return;const o=function(e,t){let n=Ip.get(e);return n||(n=new Map,Ip.set(e,n)),n.has(t)||n.set(t,[]),n.get(t)}(n,e.constructor.name);let r=o.indexOf(e);return-1===r&&(r=o.length,o.push(e)),r};function Tp(e,t,n){if(e instanceof Array)return e.map((e=>Tp(e,t,n)));if(null===e)return e;if(e instanceof Float32Array||e instanceof Float64Array||e instanceof Int32Array||e instanceof Uint32Array||e instanceof Uint8Array||e instanceof Uint16Array||e instanceof Int16Array||e instanceof Int8Array||e instanceof Uint8ClampedArray){return{rr_type:e.constructor.name,args:[Object.values(e)]}}if(e instanceof ArrayBuffer){return{rr_type:e.constructor.name,base64:function(e){var t,n=new Uint8Array(e),o=n.length,r="";for(t=0;t>2],r+=xp[(3&n[t])<<4|n[t+1]>>4],r+=xp[(15&n[t+1])<<2|n[t+2]>>6],r+=xp[63&n[t+2]];return o%3==2?r=r.substring(0,r.length-1)+"=":o%3==1&&(r=r.substring(0,r.length-2)+"=="),r}(e)}}if(e instanceof DataView){return{rr_type:e.constructor.name,args:[Tp(e.buffer,t,n),e.byteOffset,e.byteLength]}}if(e instanceof HTMLImageElement){const t=e.constructor.name,{src:n}=e;return{rr_type:t,src:n}}if(e instanceof HTMLCanvasElement){return{rr_type:"HTMLImageElement",src:e.toDataURL()}}if(e instanceof ImageData){return{rr_type:e.constructor.name,args:[Tp(e.data,t,n),e.width,e.height]}}if(Lp(e,t)||"object"==typeof e){return{rr_type:e.constructor.name,index:Ep(e,t,n)}}return e}const Op=(e,t,n)=>e.map((e=>Tp(e,t,n))),Lp=(e,t)=>{const n=["WebGLActiveInfo","WebGLBuffer","WebGLFramebuffer","WebGLProgram","WebGLRenderbuffer","WebGLShader","WebGLShaderPrecisionFormat","WebGLTexture","WebGLUniformLocation","WebGLVertexArrayObject","WebGLVertexArrayObjectOES"].filter((e=>"function"==typeof t[e]));return Boolean(n.find((n=>e instanceof t[n])))};function Ap(e,t,n,o){const r=[];try{const i=Ed(e.HTMLCanvasElement.prototype,"getContext",(function(e){return function(r,...i){if(!Rd(this,t,n,!0)){const e=function(e){return"experimental-webgl"===e?"webgl":e}(r);if("__context"in this||(this.__context=e),o&&["webgl","webgl2"].includes(e))if(i[0]&&"object"==typeof i[0]){const e=i[0];e.preserveDrawingBuffer||(e.preserveDrawingBuffer=!0)}else i.splice(0,1,{preserveDrawingBuffer:!0})}return e.apply(this,[r,...i])}}));r.push(i)}catch{console.error("failed to patch HTMLCanvasElement.prototype.getContext")}return()=>{r.forEach((e=>e()))}}function Mp(e,t,n,o,r,i){const a=[],s=Object.getOwnPropertyNames(e);for(const l of s)if(!["isContextLost","canvas","drawingBufferWidth","drawingBufferHeight"].includes(l))try{if("function"!=typeof e[l])continue;const s=Ed(e,l,(function(e){return function(...a){const s=e.apply(this,a);if(Ep(s,i,this),"tagName"in this.canvas&&!Rd(this.canvas,o,r,!0)){const e=Op(a,i,this),o={type:t,property:l,args:e};n(this.canvas,o)}return s}}));a.push(s)}catch{const o=Id(e,l,{set(e){n(this.canvas,{type:t,property:l,args:[e],setter:!0})}});a.push(o)}return a}const Rp="KGZ1bmN0aW9uKCkgewogICJ1c2Ugc3RyaWN0IjsKICB2YXIgY2hhcnMgPSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7CiAgdmFyIGxvb2t1cCA9IHR5cGVvZiBVaW50OEFycmF5ID09PSAidW5kZWZpbmVkIiA/IFtdIDogbmV3IFVpbnQ4QXJyYXkoMjU2KTsKICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYXJzLmxlbmd0aDsgaSsrKSB7CiAgICBsb29rdXBbY2hhcnMuY2hhckNvZGVBdChpKV0gPSBpOwogIH0KICB2YXIgZW5jb2RlID0gZnVuY3Rpb24oYXJyYXlidWZmZXIpIHsKICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGFycmF5YnVmZmVyKSwgaTIsIGxlbiA9IGJ5dGVzLmxlbmd0aCwgYmFzZTY0ID0gIiI7CiAgICBmb3IgKGkyID0gMDsgaTIgPCBsZW47IGkyICs9IDMpIHsKICAgICAgYmFzZTY0ICs9IGNoYXJzW2J5dGVzW2kyXSA+PiAyXTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMl0gJiAzKSA8PCA0IHwgYnl0ZXNbaTIgKyAxXSA+PiA0XTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMiArIDFdICYgMTUpIDw8IDIgfCBieXRlc1tpMiArIDJdID4+IDZdOwogICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaTIgKyAyXSAmIDYzXTsKICAgIH0KICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgIj0iOwogICAgfSBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgIj09IjsKICAgIH0KICAgIHJldHVybiBiYXNlNjQ7CiAgfTsKICBjb25zdCBsYXN0QmxvYk1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7CiAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTsKICBhc3luYyBmdW5jdGlvbiBnZXRUcmFuc3BhcmVudEJsb2JGb3Iod2lkdGgsIGhlaWdodCwgZGF0YVVSTE9wdGlvbnMpIHsKICAgIGNvbnN0IGlkID0gYCR7d2lkdGh9LSR7aGVpZ2h0fWA7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBpZiAodHJhbnNwYXJlbnRCbG9iTWFwLmhhcyhpZCkpIHJldHVybiB0cmFuc3BhcmVudEJsb2JNYXAuZ2V0KGlkKTsKICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsKICAgICAgb2Zmc2NyZWVuLmdldENvbnRleHQoIjJkIik7CiAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCBvZmZzY3JlZW4uY29udmVydFRvQmxvYihkYXRhVVJMT3B0aW9ucyk7CiAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gYXdhaXQgYmxvYi5hcnJheUJ1ZmZlcigpOwogICAgICBjb25zdCBiYXNlNjQgPSBlbmNvZGUoYXJyYXlCdWZmZXIpOwogICAgICB0cmFuc3BhcmVudEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICByZXR1cm4gYmFzZTY0OwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuICIiOwogICAgfQogIH0KICBjb25zdCB3b3JrZXIgPSBzZWxmOwogIHdvcmtlci5vbm1lc3NhZ2UgPSBhc3luYyBmdW5jdGlvbihlKSB7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBjb25zdCB7IGlkLCBiaXRtYXAsIHdpZHRoLCBoZWlnaHQsIGRhdGFVUkxPcHRpb25zIH0gPSBlLmRhdGE7CiAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKAogICAgICAgIHdpZHRoLAogICAgICAgIGhlaWdodCwKICAgICAgICBkYXRhVVJMT3B0aW9ucwogICAgICApOwogICAgICBjb25zdCBvZmZzY3JlZW4gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpOwogICAgICBjb25zdCBjdHggPSBvZmZzY3JlZW4uZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgY3R4LmRyYXdJbWFnZShiaXRtYXAsIDAsIDApOwogICAgICBiaXRtYXAuY2xvc2UoKTsKICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IG9mZnNjcmVlbi5jb252ZXJ0VG9CbG9iKGRhdGFVUkxPcHRpb25zKTsKICAgICAgY29uc3QgdHlwZSA9IGJsb2IudHlwZTsKICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBhd2FpdCBibG9iLmFycmF5QnVmZmVyKCk7CiAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7CiAgICAgIGlmICghbGFzdEJsb2JNYXAuaGFzKGlkKSAmJiBhd2FpdCB0cmFuc3BhcmVudEJhc2U2NCA9PT0gYmFzZTY0KSB7CiAgICAgICAgbGFzdEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICAgIHJldHVybiB3b3JrZXIucG9zdE1lc3NhZ2UoeyBpZCB9KTsKICAgICAgfQogICAgICBpZiAobGFzdEJsb2JNYXAuZ2V0KGlkKSA9PT0gYmFzZTY0KSByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQgfSk7CiAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7CiAgICAgICAgaWQsCiAgICAgICAgdHlwZSwKICAgICAgICBiYXNlNjQsCiAgICAgICAgd2lkdGgsCiAgICAgICAgaGVpZ2h0CiAgICAgIH0pOwogICAgICBsYXN0QmxvYk1hcC5zZXQoaWQsIGJhc2U2NCk7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IGUuZGF0YS5pZCB9KTsKICAgIH0KICB9Owp9KSgpOwovLyMgc291cmNlTWFwcGluZ1VSTD1pbWFnZS1iaXRtYXAtZGF0YS11cmwtd29ya2VyLUlKcEM3Z19iLmpzLm1hcAo=",Pp="undefined"!=typeof window&&window.Blob&&new Blob([(Dp=Rp,Uint8Array.from(atob(Dp),(e=>e.charCodeAt(0))))],{type:"text/javascript;charset=utf-8"});var Dp;function Np(e){let t;try{if(t=Pp&&(window.URL||window.webkitURL).createObjectURL(Pp),!t)throw"";const n=new Worker(t,{name:null==e?void 0:e.name});return n.addEventListener("error",(()=>{(window.URL||window.webkitURL).revokeObjectURL(t)})),n}catch(n){return new Worker("data:text/javascript;base64,"+Rp,{name:null==e?void 0:e.name})}finally{t&&(window.URL||window.webkitURL).revokeObjectURL(t)}}class jp{constructor(e){Fn(this,"pendingCanvasMutations",new Map),Fn(this,"rafStamps",{latestId:0,invokeId:null}),Fn(this,"mirror"),Fn(this,"mutationCb"),Fn(this,"resetObservers"),Fn(this,"frozen",!1),Fn(this,"locked",!1),Fn(this,"processMutation",((e,t)=>{!(this.rafStamps.invokeId&&this.rafStamps.latestId!==this.rafStamps.invokeId)&&this.rafStamps.invokeId||(this.rafStamps.invokeId=this.rafStamps.latestId),this.pendingCanvasMutations.has(e)||this.pendingCanvasMutations.set(e,[]),this.pendingCanvasMutations.get(e).push(t)}));const{sampling:t="all",win:n,blockClass:o,blockSelector:r,recordCanvas:i,dataURLOptions:a}=e;this.mutationCb=e.mutationCb,this.mirror=e.mirror,i&&"all"===t&&this.initCanvasMutationObserver(n,o,r),i&&"number"==typeof t&&this.initCanvasFPSObserver(t,n,o,r,{dataURLOptions:a})}reset(){this.pendingCanvasMutations.clear(),this.resetObservers&&this.resetObservers()}freeze(){this.frozen=!0}unfreeze(){this.frozen=!1}lock(){this.locked=!0}unlock(){this.locked=!1}initCanvasFPSObserver(e,t,n,o,r){const i=Ap(t,n,o,!0),a=new Map,s=new Np;s.onmessage=e=>{const{id:t}=e.data;if(a.set(t,!1),!("base64"in e.data))return;const{base64:n,type:o,width:r,height:i}=e.data;this.mutationCb({id:t,type:Xd["2D"],commands:[{property:"clearRect",args:[0,0,r,i]},{property:"drawImage",args:[{rr_type:"ImageBitmap",args:[{rr_type:"Blob",data:[{rr_type:"ArrayBuffer",base64:n}],type:o}]},0,0]}]})};const l=1e3/e;let c,u=0;const d=e=>{u&&e-u{const e=[];return t.document.querySelectorAll("canvas").forEach((t=>{Rd(t,n,o,!0)||e.push(t)})),e})().forEach((async e=>{var t;const n=this.mirror.getId(e);if(a.get(n))return;if(0===e.width||0===e.height)return;if(a.set(n,!0),["webgl","webgl2"].includes(e.__context)){const n=e.getContext(e.__context);!1===(null==(t=null==n?void 0:n.getContextAttributes())?void 0:t.preserveDrawingBuffer)&&n.clear(n.COLOR_BUFFER_BIT)}const o=await createImageBitmap(e);s.postMessage({id:n,bitmap:o,width:e.width,height:e.height,dataURLOptions:r.dataURLOptions},[o])}))),c=requestAnimationFrame(d)};c=requestAnimationFrame(d),this.resetObservers=()=>{i(),cancelAnimationFrame(c)}}initCanvasMutationObserver(e,t,n){this.startRAFTimestamping(),this.startPendingCanvasMutationFlusher();const o=Ap(e,t,n,!1),r=function(e,t,n,o){const r=[],i=Object.getOwnPropertyNames(t.CanvasRenderingContext2D.prototype);for(const a of i)try{if("function"!=typeof t.CanvasRenderingContext2D.prototype[a])continue;const i=Ed(t.CanvasRenderingContext2D.prototype,a,(function(r){return function(...i){return Rd(this.canvas,n,o,!0)||setTimeout((()=>{const n=Op(i,t,this);e(this.canvas,{type:Xd["2D"],property:a,args:n})}),0),r.apply(this,i)}}));r.push(i)}catch{const n=Id(t.CanvasRenderingContext2D.prototype,a,{set(t){e(this.canvas,{type:Xd["2D"],property:a,args:[t],setter:!0})}});r.push(n)}return()=>{r.forEach((e=>e()))}}(this.processMutation.bind(this),e,t,n),i=function(e,t,n,o){const r=[];return r.push(...Mp(t.WebGLRenderingContext.prototype,Xd.WebGL,e,n,o,t)),void 0!==t.WebGL2RenderingContext&&r.push(...Mp(t.WebGL2RenderingContext.prototype,Xd.WebGL2,e,n,o,t)),()=>{r.forEach((e=>e()))}}(this.processMutation.bind(this),e,t,n);this.resetObservers=()=>{o(),r(),i()}}startPendingCanvasMutationFlusher(){requestAnimationFrame((()=>this.flushPendingCanvasMutations()))}startRAFTimestamping(){const e=t=>{this.rafStamps.latestId=t,requestAnimationFrame(e)};requestAnimationFrame(e)}flushPendingCanvasMutations(){this.pendingCanvasMutations.forEach(((e,t)=>{const n=this.mirror.getId(t);this.flushPendingCanvasMutationFor(t,n)})),requestAnimationFrame((()=>this.flushPendingCanvasMutations()))}flushPendingCanvasMutationFor(e,t){if(this.frozen||this.locked)return;const n=this.pendingCanvasMutations.get(e);if(!n||-1===t)return;const o=n.map((e=>{const{type:t,...n}=e;return n})),{type:r}=n[0];this.mutationCb({id:t,type:r,commands:o}),this.pendingCanvasMutations.delete(e)}}class Fp{constructor(e){Fn(this,"trackedLinkElements",new WeakSet),Fn(this,"mutationCb"),Fn(this,"adoptedStyleSheetCb"),Fn(this,"styleMirror",new _d),this.mutationCb=e.mutationCb,this.adoptedStyleSheetCb=e.adoptedStyleSheetCb}attachLinkElement(e,t){"_cssText"in t.attributes&&this.mutationCb({adds:[],removes:[],texts:[],attributes:[{id:t.id,attributes:t.attributes}]}),this.trackLinkElement(e)}trackLinkElement(e){this.trackedLinkElements.has(e)||(this.trackedLinkElements.add(e),this.trackStylesheetInLinkElement(e))}adoptStyleSheets(e,t){if(0===e.length)return;const n={id:t,styleIds:[]},o=[];for(const r of e){let e;this.styleMirror.has(r)?e=this.styleMirror.getId(r):(e=this.styleMirror.add(r),o.push({styleId:e,rules:Array.from(r.rules||CSSRule,((e,t)=>({rule:to(e,r.href),index:t})))})),n.styleIds.push(e)}o.length>0&&(n.styles=o),this.adoptedStyleSheetCb(n)}reset(){this.styleMirror.reset(),this.trackedLinkElements=new WeakSet}trackStylesheetInLinkElement(e){}}class Bp{constructor(){Fn(this,"nodeMap",new WeakMap),Fn(this,"active",!1)}inOtherBuffer(e,t){const n=this.nodeMap.get(e);return n&&Array.from(n).some((e=>e!==t))}add(e,t){this.active||(this.active=!0,requestAnimationFrame((()=>{this.nodeMap=new WeakMap,this.active=!1}))),this.nodeMap.set(e,(this.nodeMap.get(e)||new Set).add(t))}destroy(){}}let _p,Up,Hp,zp=!1;try{if(2!==Array.from([1],(e=>2*e))[0]){const e=document.createElement("iframe");document.body.appendChild(e),Array.from=(null==(Nn=e.contentWindow)?void 0:Nn.Array.from)||Array.from,document.body.removeChild(e)}}catch(Gm){console.debug("Unable to override Array.from",Gm)}const qp=new no;function Wp(e={}){const{emit:t,checkoutEveryNms:n,checkoutEveryNth:o,blockClass:r="rr-block",blockSelector:i=null,ignoreClass:a="rr-ignore",ignoreSelector:s=null,maskTextClass:l="rr-mask",maskTextSelector:c=null,inlineStylesheet:u=!0,maskAllInputs:d,maskInputOptions:p,slimDOMOptions:h,maskInputFn:f,maskTextFn:m,hooks:g,packFn:v,sampling:y={},dataURLOptions:b={},mousemoveWait:w,recordDOM:k=!0,recordCanvas:x=!1,recordCrossOriginIframes:S=!1,recordAfter:C=("DOMContentLoaded"===e.recordAfter?e.recordAfter:"load"),userTriggeredOnInput:I=!1,collectFonts:E=!1,inlineImages:T=!1,plugins:O,keepIframeSrcFn:L=(()=>!1),ignoreCSSAttributes:A=new Set([]),errorHandler:M}=e;rp=M;const R=!S||window.parent===window;let P=!1;if(!R)try{window.parent.document&&(P=!1)}catch(G){P=!0}if(R&&!t)throw new Error("emit function is required");if(!R&&!P)return()=>{};void 0!==w&&void 0===y.mousemove&&(y.mousemove=w),qp.reset();const D=!0===d?{color:!0,date:!0,"datetime-local":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0,password:!0}:void 0!==p?p:{password:!0},N=!0===h||"all"===h?{script:!0,comment:!0,headFavicon:!0,headWhitespace:!0,headMetaSocial:!0,headMetaRobots:!0,headMetaHttpEquiv:!0,headMetaVerification:!0,headMetaAuthorship:"all"===h,headMetaDescKeywords:"all"===h,headTitleMutations:"all"===h}:h||{};let j;!function(e=window){"NodeList"in e&&!e.NodeList.prototype.forEach&&(e.NodeList.prototype.forEach=Array.prototype.forEach),"DOMTokenList"in e&&!e.DOMTokenList.prototype.forEach&&(e.DOMTokenList.prototype.forEach=Array.prototype.forEach)}();let F=0;const B=e=>{for(const t of O||[])t.eventProcessor&&(e=t.eventProcessor(e));return v&&!P&&(e=v(e)),e};_p=(e,r)=>{var i;const a=e;if(a.timestamp=Td(),!(null==(i=ap[0])?void 0:i.isFrozen())||a.type===qd.FullSnapshot||a.type===qd.IncrementalSnapshot&&a.data.source===Wd.Mutation||ap.forEach((e=>e.unfreeze())),R)null==t||t(B(a),r);else if(P){const e={type:"rrweb",event:B(a),origin:window.location.origin,isCheckout:r};window.parent.postMessage(e,"*")}if(a.type===qd.FullSnapshot)j=a,F=0;else if(a.type===qd.IncrementalSnapshot){if(a.data.source===Wd.Mutation&&a.data.isAttachIframe)return;F++;const e=o&&F>=o,t=n&&a.timestamp-j.timestamp>n;(e||t)&&Up(!0)}};const _=e=>{_p({type:qd.IncrementalSnapshot,data:{source:Wd.Mutation,...e}})},U=e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.Scroll,...e}}),H=e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.CanvasMutation,...e}}),z=new Fp({mutationCb:_,adoptedStyleSheetCb:e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.AdoptedStyleSheet,...e}})}),q=new wp({mirror:qp,mutationCb:_,stylesheetManager:z,recordCrossOriginIframes:S,wrappedEmit:_p});for(const Y of O||[])Y.getMirror&&Y.getMirror({nodeMirror:qp,crossOriginIframeMirror:q.crossOriginIframeMirror,crossOriginIframeStyleMirror:q.crossOriginIframeStyleMirror});const W=new Bp;Hp=new jp({recordCanvas:x,mutationCb:H,win:window,blockClass:r,blockSelector:i,mirror:qp,sampling:y.canvas,dataURLOptions:b});const V=new kp({mutationCb:_,scrollCb:U,bypassOptions:{blockClass:r,blockSelector:i,maskTextClass:l,maskTextSelector:c,inlineStylesheet:u,maskInputOptions:D,dataURLOptions:b,maskTextFn:m,maskInputFn:f,recordCanvas:x,inlineImages:T,sampling:y,slimDOMOptions:N,iframeManager:q,stylesheetManager:z,canvasManager:Hp,keepIframeSrcFn:L,processedNodeManager:W},mirror:qp});Up=(e=!1)=>{if(!k)return;_p({type:qd.Meta,data:{href:window.location.href,width:Ad(),height:Ld()}},e),z.reset(),V.init(),ap.forEach((e=>e.lock()));const t=function(e,t){const{mirror:n=new no,blockClass:o="rr-block",blockSelector:r=null,maskTextClass:i="rr-mask",maskTextSelector:a=null,inlineStylesheet:s=!0,inlineImages:l=!1,recordCanvas:c=!1,maskAllInputs:u=!1,maskTextFn:d,maskInputFn:p,slimDOM:h=!1,dataURLOptions:f,preserveWhiteSpace:m,onSerialize:g,onIframeLoad:v,iframeLoadTimeout:y,onStylesheetLoad:b,stylesheetLoadTimeout:w,keepIframeSrcFn:k=(()=>!1)}=t||{};return Do(e,{doc:e,mirror:n,blockClass:o,blockSelector:r,maskTextClass:i,maskTextSelector:a,skipChild:!1,inlineStylesheet:s,maskInputOptions:!0===u?{color:!0,date:!0,"datetime-local":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0,password:!0}:!1===u?{password:!0}:u,maskTextFn:d,maskInputFn:p,slimDOMOptions:!0===h||"all"===h?{script:!0,comment:!0,headFavicon:!0,headWhitespace:!0,headMetaDescKeywords:"all"===h,headMetaSocial:!0,headMetaRobots:!0,headMetaHttpEquiv:!0,headMetaAuthorship:!0,headMetaVerification:!0}:!1===h?{}:h,dataURLOptions:f,inlineImages:l,recordCanvas:c,preserveWhiteSpace:m,onSerialize:g,onIframeLoad:v,iframeLoadTimeout:y,onStylesheetLoad:b,stylesheetLoadTimeout:w,keepIframeSrcFn:k,newlyAddedElement:!1})}(document,{mirror:qp,blockClass:r,blockSelector:i,maskTextClass:l,maskTextSelector:c,inlineStylesheet:u,maskAllInputs:D,maskTextFn:m,maskInputFn:f,slimDOM:N,dataURLOptions:b,recordCanvas:x,inlineImages:T,onSerialize:e=>{jd(e,qp)&&q.addIframe(e),Fd(e,qp)&&z.trackLinkElement(e),Bd(e)&&V.addShadowRoot(wd.shadowRoot(e),document)},onIframeLoad:(e,t)=>{q.attachIframe(e,t),V.observeAttachShadow(e)},onStylesheetLoad:(e,t)=>{z.attachLinkElement(e,t)},keepIframeSrcFn:L});if(!t)return console.warn("Failed to snapshot the document");_p({type:qd.FullSnapshot,data:{node:t,initialOffset:Od(window)}},e),ap.forEach((e=>e.unlock())),document.adoptedStyleSheets&&document.adoptedStyleSheets.length>0&&z.adoptStyleSheets(document.adoptedStyleSheets,qp.getId(document))};try{const e=[],t=e=>{var t;return ip(gp)({mutationCb:_,mousemoveCb:(e,t)=>_p({type:qd.IncrementalSnapshot,data:{source:t,positions:e}}),mouseInteractionCb:e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.MouseInteraction,...e}}),scrollCb:U,viewportResizeCb:e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.ViewportResize,...e}}),inputCb:e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.Input,...e}}),mediaInteractionCb:e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.MediaInteraction,...e}}),styleSheetRuleCb:e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.StyleSheetRule,...e}}),styleDeclarationCb:e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.StyleDeclaration,...e}}),canvasMutationCb:H,fontCb:e=>_p({type:qd.IncrementalSnapshot,data:{source:Wd.Font,...e}}),selectionCb:e=>{_p({type:qd.IncrementalSnapshot,data:{source:Wd.Selection,...e}})},customElementCb:e=>{_p({type:qd.IncrementalSnapshot,data:{source:Wd.CustomElement,...e}})},blockClass:r,ignoreClass:a,ignoreSelector:s,maskTextClass:l,maskTextSelector:c,maskInputOptions:D,inlineStylesheet:u,sampling:y,recordDOM:k,recordCanvas:x,inlineImages:T,userTriggeredOnInput:I,collectFonts:E,doc:e,maskInputFn:f,maskTextFn:m,keepIframeSrcFn:L,blockSelector:i,slimDOMOptions:N,dataURLOptions:b,mirror:qp,iframeManager:q,stylesheetManager:z,shadowDomManager:V,processedNodeManager:W,canvasManager:Hp,ignoreCSSAttributes:A,plugins:(null==(t=null==O?void 0:O.filter((e=>e.observer)))?void 0:t.map((e=>({observer:e.observer,options:e.options,callback:t=>_p({type:qd.Plugin,data:{plugin:e.name,payload:t}})}))))||[]},g)};q.addLoadListener((n=>{try{e.push(t(n.contentDocument))}catch(o){console.warn(o)}}));const n=()=>{Up(),e.push(t(document)),zp=!0};return"interactive"===document.readyState||"complete"===document.readyState?n():(e.push(kd("DOMContentLoaded",(()=>{_p({type:qd.DomContentLoaded,data:{}}),"DOMContentLoaded"===C&&n()}))),e.push(kd("load",(()=>{_p({type:qd.Load,data:{}}),"load"===C&&n()}),window))),()=>{e.forEach((e=>e())),W.destroy(),zp=!1,rp=void 0}}catch(X){console.warn(X)}}var Vp,Gp;function Xp(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return Yp(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Yp(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0,r=function(){};return{s:r,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){s=!0,i=e},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw i}}}}function Yp(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n{if(!zp)throw new Error("please add custom event after start recording");_p({type:qd.Custom,data:{tag:e,payload:t}})},Wp.freezePage=()=>{ap.forEach((e=>e.freeze()))},Wp.takeFullSnapshot=e=>{if(!zp)throw new Error("please take full snapshot after start recording");Up(e)},Wp.mirror=qp,(Gp=Vp||(Vp={}))[Gp.NotStarted=0]="NotStarted",Gp[Gp.Running=1]="Running",Gp[Gp.Stopped=2]="Stopped";var th=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),Qp(this,"startDate",void 0),Qp(this,"events",[]),Qp(this,"bufferSize",0),Qp(this,"stopFunction",void 0),Qp(this,"customOptions",{})}var t,n,o;return t=e,o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],(n=[{key:"setOptions",value:function(e){this.customOptions=e}},{key:"start",value:function(){this.stop(),this.startDate=Date.now();var e=this.events;try{this.stopFunction=Wp(Zp(Zp(Zp({},{inlineStylesheet:!0,blockClass:"gl-block",ignoreClass:"gl-ignore",maskTextClass:"gl-mask",dataURLOptions:{quality:.7},recordCanvas:!1,sampling:{scroll:150,mouseInteraction:{MouseUp:!1,MouseDown:!1,Click:!0,ContextMenu:!0,DblClick:!0,Focus:!0,Blur:!0,TouchStart:!0,TouchEnd:!1}},collectFonts:!1,recordCrossOriginIframes:!1}),this.customOptions),{},{emit:function(t){var n=function(e){var t=JSON.stringify(e);if(t.length>4e6){var n,o=/data:([\w\/\-\.]+);(\w+),([^)"]*)/gim,r=Xp(t.matchAll(o));try{for(r.s();!(n=r.n()).done;){var i=n.value;t="image/"===i[1].toLocaleLowerCase().slice(0,6)?t.replace(i[0],"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAQSURBVHgBAQUA+v8ABRg5/wHSAVZN1mnaAAAAAElFTkSuQmCC"):t.replace(i[0],"")}}catch(Gm){r.e(Gm)}finally{r.f()}}return{event:JSON.parse(t),size:t.length}}(t).event;e.push(n)}}))}catch(t){console.error(t)}}},{key:"stop",value:function(){this.stopFunction&&this.stopFunction(),this.startDate=void 0,this.events=[],this.bufferSize=0}},{key:"getReplayData",value:function(){return{startDate:this.startDate,events:this.events,baseUrl:window.location.origin,width:window.innerWidth,height:window.innerHeight,isMobile:w(),type:"rrweb"}}}])&&$p(t.prototype,n),o&&$p(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function nh(e){return nh="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},nh(e)}function oh(e,t){for(var n=0;nthis.startPoint.x&&(r=this.startPoint.x),t.y>this.startPoint.y&&(i=this.startPoint.y),this.path.setAttributeNS(null,"x",r),this.path.setAttributeNS(null,"y",i),this.path.setAttributeNS(null,"width",n),this.path.setAttributeNS(null,"height",o)}}},{key:"mouseDownRect",value:function(e){this.path=document.createElementNS("http://www.w3.org/2000/svg","rect"),this.path.setAttribute("fill","none"),this.path.setAttribute("stroke",this.color),this.path.setAttribute("stroke-linecap","round"),this.path.setAttribute("stroke-width",this.strokeWidthRect),this.startPoint=this.getMousePosition(e),this.appendPathToSvg(this.path)}},{key:"mouseDownPen",value:function(e){var t=this.color+"AA",n=this.strokeWidth;"blur"===this.tool&&(t="#000000",n=40),this.path=document.createElementNS("http://www.w3.org/2000/svg","path"),this.path.setAttribute("fill","none"),this.path.setAttribute("stroke",t),this.path.setAttribute("stroke-linecap","round"),this.path.setAttribute("stroke-width",n),this.buffer=[];var o=this.getMousePosition(e);this.appendToBuffer(o),this.strPath="M"+o.x+" "+o.y,this.path.setAttribute("d",this.strPath),this.appendPathToSvg(this.path)}},{key:"setTool",value:function(e){this.tool=e}},{key:"setColor",value:function(e){this.color=e}},{key:"getMousePosition",value:function(e){return e.touches&&e.touches.length>0?{x:e.touches[0].clientX,y:e.touches[0].clientY}:{x:e.clientX,y:e.clientY}}},{key:"getAveragePoint",value:function(e){var t=this.buffer.length;if(t%2==1||t>=this.bufferSize){var n,o,r=0,i=0,a=0;for(o=e;othis.bufferSize;)this.buffer.shift()}},{key:"appendPathToSvg",value:function(e){this.svgElement.appendChild(e),this.pathBuffer.push(e),this.rerender()}},{key:"removeLastAddedPathFromSvg",value:function(){this.pathBuffer.length<=0||!this.svgElement||(this.svgElement.removeChild(this.pathBuffer[this.pathBuffer.length-1]),this.pathBuffer.pop(),this.rerender())}},{key:"fadeOutToolbar",value:function(){var e=document.querySelector(".bb-capture-toolbar");e&&(e.style.opacity=0,e.style.pointerEvents="none")}},{key:"fadeInToolbar",value:function(){var e=document.querySelector(".bb-capture-toolbar");e&&(e.style.opacity=1,e.style.pointerEvents="auto")}}],n&&oh(t.prototype,n),o&&oh(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function sh(e){return sh="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},sh(e)}function lh(e,t){for(var n=0;n\n \n
'.concat(p("dismiss"),"
\n
").concat(p("rect"),'
\n
\n
\n ').concat(p("drag"),"\n
\n ").concat("capture"===this.type?'
\n '.concat(p("recorderon"),"\n ").concat(p("recorderoff"),'\n \n
\n
\n ').concat(p("mic"),'\n \n
\n
2:00
\n
\n
\n ').concat(p("pointer"),"\n
"):"",'\n
\n ').concat(p("rect"),'\n
\n
\n ').concat(p("pen"),'\n
\n
\n ').concat(p("blur"),'\n
\n
\n
\n ').concat(kh.translateText("pickAColor"),'\n
\n
\n ').concat(p("undo"),'\n ').concat(kh.translateText("undo"),"\n
\n ").concat("capture"!==this.type?'
'.concat(kh.translateText("next"),"
"):"",'\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
').concat(kh.translateText("retry"),'
\n
').concat(kh.translateText("next"),"
\n
\n
\n
\n "),document.body.appendChild(e),e.setAttribute("dir",kh.getInstance().isRTLLayout?"rtl":"ltr")}},{key:"unregisterListeners",value:function(){this.escListener&&document.removeEventListener("keydown",this.escListener),this.pageLeaveListener&&window.removeEventListener("beforeunload",this.pageLeaveListener)}},{key:"registerListeners",value:function(){var e=this;this.escListener=function(t){var n=!1,o=!1;"key"in(t=t||window.event)&&(n="Escape"===t.key,o="Enter"===t.key),n&&e.dismiss(),"screenshot"===e.type&&o&&e.showNextStep()},document.addEventListener("keydown",this.escListener),this.pageLeaveListener=function(e){e.preventDefault(),e.returnValue=""},window.addEventListener("beforeunload",this.pageLeaveListener)}},{key:"show",value:function(e){this.callback=e,this.registerListeners(),this.hideWidgetUI(),this.createEditorUI(),this.setupMousePointer(),"screenshot"===this.type?(Wm.getInstance().setGlobalDataItem("snapshotPosition",{x:window.scrollX,y:window.scrollY}),dh.disableScroll()):this.setupScreenRecording(),this.screenDrawer=new ah(this.captureScreenDrawerRerender.bind(this)),this.setupColorPicker(),this.setupToolbar()}},{key:"setupColorPicker",value:function(){for(var t=this,n=document.querySelector(".bb-capture-toolbar-item-selectedcolor"),o=document.querySelectorAll(".bb-capture-toolbar-item-color"),r=document.querySelector(".bb-capture-toolbar-item-colorpicker"),i=function(){var i=o[a],s=i.getAttribute("data-color");i.style.backgroundColor=s,i.onclick=function(){i&&(t.screenDrawer.setColor(s),r&&(r.style.display="none"),n.style.backgroundColor=i.style.backgroundColor,e.setPenColor(s))}},a=0;a0?o.classList.remove(e):o.classList.add(e))}}},{key:"captureRenderer",value:function(){if(this.screenRecorder){this.screenRecorder.file&&Wm.getInstance().setGlobalDataItem("screenRecordingData",this.screenRecorder.file);var e="bb-capture-editor-item-inactive",t=document.querySelector(".bb-capture-toolbar-item-timer"),n=document.querySelectorAll(".bb-capture-toolbar-item"),o=document.querySelector(".bb-tooltip-screen-recording"),r=document.querySelector(".bb-tooltip-audio-recording"),i=document.querySelector(".bb-capture-editor"),a="bb-capture-editor-recording",s="bb-capture-editor-notrecording";this.screenRecorder.isRecording?(i.classList.add(a),i.classList.remove(s)):(i.classList.add(s),i.classList.remove(a));var l=document.querySelector(".bb-capture-toolbar");document.querySelector(".bb-capture-preview").style.display=this.screenRecorder.file?"flex":"none",l.style.display=this.screenRecorder.file?"none":"flex";for(var c=0;c0){var t=e.filter((function(e){return new Date(e.createdAt)>new Date(Date.now()-36e5)}));t.length>2?this.notifications=t.splice(0,t.length-2):this.notifications=t,this.renderNotifications()}}catch(n){}}},{key:"setNotificationCount",value:function(e){this.unreadCount=e,this.updateTabBarNotificationCount(),a.getInstance().updateNotificationBadge(this.unreadCount)}},{key:"showNotification",value:function(e){this.notificationContainer&&e&&e.data&&(this.notifications.find((function(t){return e.outbound===t.outbound}))||(this.notifications.push(e),e.sound&&tf.ping()),this.notifications.length>2&&this.notifications.shift(),I(this.unreadNotificationsKey,this.notifications),this.renderNotifications())}},{key:"renderNotifications",value:function(){var e=this;if(this.notificationContainer){this.clearAllNotifications(!0);var t=document.createElement("div");t.onclick=function(){e.clearAllNotifications(),e.currentNewsIndex=0},t.className="gleap-notification-close",t.innerHTML=p("dismiss"),this.notificationContainer.appendChild(t);var n=this.notifications.filter((function(e){return e.data.news})).sort((function(e,t){return new Date(e.createdAt)-new Date(t.createdAt)})),o=this.notifications.filter((function(e){return!e.data.news}));if(n.length>0){var r=this.currentNewsIndex1){var m=document.createElement("div");m.className="gleap-news-pagination";var g=document.createElement("span");g.className="gleap-news-page-indicator",g.innerText="".concat(r+1," / ").concat(n.length),m.appendChild(g);var v=document.createElement("button");v.className="gleap-news-next-button",r\n
\n
\n '.concat(t.data.text,'\n
\n
\n
\n
\n
\n \n \n \n ').concat(t.data.nextStepTitle,"\n
\n
\n ")}else r.className="gleap-notification-item",r.innerHTML="\n ".concat(t.data.sender&&t.data.sender.profileImageUrl&&''),'\n
\n ').concat(t.data.sender?'
\n '.concat(t.data.sender.name,"\n
"):"",'\n
').concat(n,"
\n
");e.notificationContainer.appendChild(r)},b=0;b0||o.length>0||this.clearAllNotifications(!0)}}},{key:"openNews",value:function(e){e.data.news?Wm.openNewsArticle(e.data.news.id,!0):Wm.open()}},{key:"renderDescription",value:function(e){var t=e.data,n=t.previewText,o=t.sender;return n&&n.length>0?n:o?'\n
\n '.concat(o.profileImageUrl?'').concat(o.name,''):"","\n ").concat(o.name,"\n
\n "):""}},{key:"clearAllNotifications",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(this.notificationContainer)for(e||(this.notifications=[],this.currentNewsIndex=0,I(this.unreadNotificationsKey,this.notifications));this.notificationContainer.firstChild;)this.notificationContainer.removeChild(this.notificationContainer.firstChild)}},{key:"updateContainerStyle",value:function(){if(this.notificationContainer){var e=dt.getInstance().getFlowConfig(),t="gleap-notification-container--left",n="gleap-notification-container--no-button";this.notificationContainer.classList.remove(t),this.notificationContainer.classList.remove(n),e.feedbackButtonPosition!==a.FEEDBACK_BUTTON_CLASSIC_LEFT&&e.feedbackButtonPosition!==a.FEEDBACK_BUTTON_BOTTOM_LEFT||this.notificationContainer.classList.add(t),null===a.getInstance().buttonHidden?e.feedbackButtonPosition===a.FEEDBACK_BUTTON_NONE&&this.notificationContainer.classList.add(n):a.getInstance().buttonHidden&&this.notificationContainer.classList.add(n),this.notificationContainer.setAttribute("dir",kh.getInstance().isRTLLayout?"rtl":"ltr")}}}],o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],n&&Ph(t.prototype,n),o&&Ph(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Fh(e){return Fh="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Fh(e)}function Bh(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function _h(e){for(var t=1;t'),document.body.appendChild(t),this.bannerContainer=t}},{key:"sendMessage",value:function(e){try{var t=document.querySelector(".gleap-b-frame");t&&t.contentWindow&&t.contentWindow.postMessage(JSON.stringify(_h(_h({},e),{},{type:"banner"})),"*")}catch(n){}}},{key:"showBanner",value:function(e){this.injectBannerUI(e)}}])&&Uh(t.prototype,n),o&&Uh(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Wh(e){return Wh="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Wh(e)}function Vh(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Gh(e){for(var t=1;t\n
\n \n
\n '),document.body.appendChild(n),this.modalContainer=n,this.modalBackdropClickListener=this.modalContainer.querySelector(".gleap-modal-backdrop").addEventListener("click",(function(){var e,n;(null===(e=null===(n=t.modalData)||void 0===n?void 0:n.showCloseButton)||void 0===e||e)&&t.hideModal()})),document.body.classList.add("gleap-modal-open")}},{key:"_postMessage",value:function(e){try{var t=this.modalContainer.querySelector(".gleap-modal-frame");null!=t&&t.contentWindow&&t.contentWindow.postMessage(JSON.stringify(Gh(Gh({},e),{},{type:"modal"})),this.modalUrl)}catch(Gm){}}},{key:"showModal",value:function(e){e&&e.config&&this._injectModalUI(e.config)}},{key:"hideModal",value:function(){this.modalContainer&&(this.modalBackdropClickListener&&this.modalContainer.querySelector(".gleap-modal-backdrop").removeEventListener("click",this.modalBackdropClickListener),document.body.removeChild(this.modalContainer),this.modalContainer=null,document.body.classList.remove("gleap-modal-open"))}}])&&Xh(t.prototype,n),o&&Xh(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Zh(e){return Zh="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Zh(e)}function $h(e,t){for(var n=0;n=a-i;++s)n[i]=t[s],uf(e,t,n,s+1,r,i+1,a);else e.push(n.slice(0,i).join(""))}function df(e){return function(e){if(Array.isArray(e))return pf(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return pf(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return pf(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function pf(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){s=!0,i=e},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw i}}}}function bf(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n1&&void 0!==arguments[1]?arguments[1]:["id","class","length"];return df(e.attributes).reduce((function(e,n){return t.indexOf(n.nodeName)>-1||e.push("[".concat(n.nodeName,'="').concat(n.value,'"]')),e}),[])}(e,n)},Class:cf,ID:lf};return t.reduce((function(t,n){return t[n]=o[n](e),t}),{})}function kf(e,t){try{var n=e.parentNode.querySelectorAll(t);return 1===n.length&&n[0]===e}catch(o){return!1}}function xf(e,t){return t.find(kf.bind(null,e))}function Sf(e,t,n){var o=function(e,t){for(var n=[],o=e.length,r=[],i=1;i<=t;++i)uf(n,e,r,0,o-1,0,i);return n}(t,3),r=xf(e,o);return Boolean(r)||Boolean(n)&&(r=xf(e,o=o.map((function(e){return n+e}))),Boolean(r))?r:null}function Cf(e,t,n,o){var r,i=wf(e,t,n);o&&o instanceof RegExp&&(i.ID=o.test(i.ID)?null:i.ID,i.Class=i.Class.filter((function(e){return!o.test(e)})));var a,s=yf(t);try{for(s.s();!(a=s.n()).done;){var l=a.value,c=i.ID,u=i.Tag,d=i.Class,p=i.Attributes,h=i.NthChild;switch(l){case"ID":if(Boolean(c)&&kf(e,c))return c;break;case"Tag":if(Boolean(u)&&kf(e,u))return u;break;case"Class":if(Boolean(d)&&d.length&&(r=Sf(e,d,u)))return r;break;case"Attributes":if(Boolean(p)&&p.length&&(r=Sf(e,p,u)))return r;break;case"NthChild":if(Boolean(h))return h}}}catch(Gm){s.e(Gm)}finally{s.f()}return"*"}function If(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=n.selectorTypes,r=void 0===o?["ID","Class","Tag","NthChild"]:o,i=n.attributesToIgnore,a=void 0===i?["id","class","length"]:i,s=n.excludeRegex,l=void 0===s?null:s,c=[],u=function(e){for(var t=[],n=e;ff(n);)t.push(n),n=n.parentNode;return t}(e),d=yf(u);try{for(d.s();!(t=d.n()).done;){var p=Cf(t.value,r,a,l);Boolean(p)&&c.push(p)}}catch(Gm){d.e(Gm)}finally{d.f()}for(var h=[],f=0,m=c;f ");if(vf(e,v))return v}return null}function Ef(e){return Ef="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ef(e)}function Tf(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Of(e,t){for(var n=0;n0&&void 0!==arguments[0]&&arguments[0])||o(t.gleapCollapseUI,e)&&o(t.gleapFrameContainer,n))&&(t.gleapCollapseUI&&t.gleapCollapseUI.classList.toggle(e),t.gleapFrameContainer&&t.gleapFrameContainer.classList.toggle(n))})),Wf(this,"injectCollapseUI",(function(){if(!t.injectedCollapseUI){t.injectedCollapseUI=!0;var e=document.createElement("div");e.className="gleap-admin-collapse-ui",e.innerHTML='
\n '.concat(p("arrowdown"),"\n
"),document.body.appendChild(e),t.gleapCollapseUI=e,e.addEventListener("click",(function(e){e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t.toggleCollapseUI()}))}})),Wf(this,"injectFrame",(function(){var e;if(!t.injectedFrame){t.injectedFrame=!0;var n=document.createElement("div");n.className="gleap-admin-frame-container",n.innerHTML=''),document.body.appendChild(n),t.gleapFrameContainer=n,t.gleapFrame=document.querySelector(".gleap-admin-frame")}}))}var t,n,o;return t=e,o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],(n=[{key:"logCurrentPage",value:function(){var e=window.location.href;e&&e!==this.lastUrl&&(this.lastUrl=e,this.sendMessageToTourBuilder({name:"page-changed",data:{page:e}}))}},{key:"startPageListener",value:function(){var e=this;setInterval((function(){e.logCurrentPage()}),1e3)}},{key:"initAdminHelper",value:function(){var e=this;wm.getInstance().disable(),e.adminHelper=new _f;try{e.adminHelper.onElementPicked=function(t){e.toggleCollapseUI(!0),e.sendMessageToTourBuilder({name:"element-picked",data:{selector:t}})}}catch(t){console.log(t)}e.injectFrame(),e.injectCollapseUI(),e.setFrameHeight("loading")}},{key:"setFrameHeight",value:function(e){if(this.gleapFrameContainer){var t="";t="picker"===e||"navigate"===e?"65px":"editor"===e?"100vh":"0px",this.gleapFrameContainer.style.height=t}}},{key:"start",value:function(){var e=this;if("undefined"!=typeof window&&!window.gleapAdminDisabled){var t=this;window.addEventListener("message",(function(n){if("https://app.gleap.io"===n.origin)try{var o=JSON.parse(n.data);if("admin"===o.type&&("load"===o.name&&(t.configData=o.data,t.initAdminHelper()),"smartlink-search-result"===o.name&&e.sendMessageToTourBuilder({name:"smartlink-search-result",data:o.data}),"translate-complete"===o.name&&e.sendMessageToTourBuilder({name:"translate-complete",data:o.data})),"tourbuilder"===o.type){var r;if("loaddata"===o.name&&e.sendMessageToTourBuilder({name:"data",data:zf(zf({},t.configData),{},{currentPage:window.location.href})}),"highlight-element"===o.name&&(document.querySelectorAll(".gleap-admin-highlight").forEach((function(e){e.classList.remove("gleap-admin-highlight")})),null!=o&&null!==(r=o.data)&&void 0!==r&&r.selector)){var i,a=document.querySelector(null==o||null===(i=o.data)||void 0===i?void 0:i.selector);a&&a.classList.add("gleap-admin-highlight")}if("smartlink-search"===o.name&&e.sendMessage({name:"smartlink-search",data:o.data}),"product-tour-started"===o.name&&e.sendMessage({name:"product-tour-started",data:o.data}),"translate"===o.name&&e.sendMessage({name:"translate",data:o.data}),"save"===o.name&&e.sendMessage({name:"save",data:o.data}),"update-steps"===o.name&&e.sendMessage({name:"update-steps",data:o.data}),"click"===o.name)try{document.querySelector(o.data.selector).click()}catch(s){console.log(s)}"status-changed"===o.name&&(t.status=o.data,e.setFrameHeight(t.status),t.adminHelper.stopPicker(),"picker"===t.status&&t.adminHelper.startPicker())}}catch(l){}})),this.sendMessage({name:"init"}),this.startPageListener()}}},{key:"sendMessage",value:function(e){try{window&&window.opener&&window.opener.postMessage(JSON.stringify(zf(zf({},e),{},{type:"admin"})),"*")}catch(t){}}},{key:"sendMessageToTourBuilder",value:function(e){try{this.gleapFrame&&this.gleapFrame.contentWindow&&this.gleapFrame.contentWindow.postMessage(JSON.stringify(zf(zf({},e),{},{type:"tourbuilder"})),"*")}catch(t){}}}])&&qf(t.prototype,n),o&&qf(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Xf(e){return Xf="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Xf(e)}function Yf(e){return function(e){if(Array.isArray(e))return Jf(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return Jf(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Jf(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Jf(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n0&&void 0!==arguments[0]?arguments[0]:{})}function n(t){return t?e[t]:e}function o(e,t,n,o){return(e/=o/2)<1?n/2*e*e+t:-n/2*(--e*(e-2)-1)+t}function r(e){var t='a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type="text"]:not([disabled]), input[type="radio"]:not([disabled]), input[type="checkbox"]:not([disabled]), select:not([disabled])';return e.flatMap((function(e){var n=e.matches(t),o=Array.from(e.querySelectorAll(t));return[].concat(Yf(n?[e]:[]),o)})).filter((function(e){return"none"!==getComputedStyle(e).pointerEvents&&function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)}(e)}))}function i(e){if(e&&!function(e){var t=e.getBoundingClientRect();return t.top>=0&&t.left>=0&&t.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&t.right<=(window.innerWidth||document.documentElement.clientWidth)}(e)){var t=n("smoothScroll");e.scrollIntoView({behavior:!t||a(e)?"auto":"smooth",inline:"center",block:"center"})}}function a(e){if(e&&e.parentElement){var t=e.parentElement;return t.scrollHeight>t.clientHeight}}var s={};function l(e,t){s[e]=t}function c(e){return e?s[e]:s}function u(){s={}}var d={};function p(e,t){d[e]=t}function h(e){var t;null==(t=d[e])||t.call(d)}function f(e){if(e){var t=e.getBoundingClientRect(),n={x:t.x,y:t.y,width:t.width,height:t.height};l("__activeStagePosition",n),g(n)}}function m(e){var t=function(e){var t=window.innerWidth,o=window.innerHeight,r=document.createElementNS("http://www.w3.org/2000/svg","svg");r.classList.add("gleap-tour-overlay","gleap-tour-overlay-animated"),r.setAttribute("viewBox","0 0 ".concat(t," ").concat(o)),r.setAttribute("xmlSpace","preserve"),r.setAttribute("xmlnsXlink","http://www.w3.org/1999/xlink"),r.setAttribute("version","1.1"),r.setAttribute("preserveAspectRatio","xMinYMin slice"),r.style.fillRule="evenodd",r.style.clipRule="evenodd",r.style.strokeLinejoin="round",r.style.strokeMiterlimit="2",r.style.zIndex="10000",r.style.position="fixed",r.style.top="0",r.style.left="0",r.style.width="100%",r.style.height="100%";var i=document.createElementNS("http://www.w3.org/2000/svg","path");return i.setAttribute("d",v(e)),i.style.fill=n("overlayColor")||"rgb(0,0,0)",i.style.opacity="".concat(n("overlayOpacity")),i.style.pointerEvents="auto",i.style.cursor="auto",r.appendChild(i),r}(e);document.body.appendChild(t),S(t,(function(e){"path"===e.target.tagName&&h("overlayClick")})),l("__overlaySvg",t)}function g(e){var t=c("__overlaySvg");if(t){var n=t.firstElementChild;if("path"!==(null==n?void 0:n.tagName))throw new Error("no path element found in stage svg");n.setAttribute("d",v(e))}else m(e)}function v(e){var t=window.innerWidth,o=window.innerHeight,r=n("stagePadding")||0,i=n("stageRadius")||0,a=e.width+2*r,s=e.height+2*r,l=Math.min(i,a/2,s/2),c=Math.floor(Math.max(l,0)),u=e.x-r+c,d=e.y-r,p=a-2*c,h=s-2*c;return"M".concat(t,",0L0,0L0,").concat(o,"L").concat(t,",").concat(o,"L").concat(t,",0Z\n M").concat(u,",").concat(d," h").concat(p," a").concat(c,",").concat(c," 0 0 1 ").concat(c,",").concat(c," v").concat(h," a").concat(c,",").concat(c," 0 0 1 -").concat(c,",").concat(c," h-").concat(p," a").concat(c,",").concat(c," 0 0 1 -").concat(c,",-").concat(c," v-").concat(h," a").concat(c,",").concat(c," 0 0 1 ").concat(c,",-").concat(c," z")}function y(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:5e3,r=e.element,a=r;if("string"==typeof a)try{a=document.querySelector(r)}catch(u){var s=r.replace(/(#[^#\s]+)/g,(function(e){return e.replace(/:/g,"\\:")}));a=document.querySelector(s)}if(r&&!a&&t>=0)setTimeout((function(){C(),y(e,t-100)}),100);else{if(!a&&("INPUT"===e.mode||"CLICK"===e.mode))return n("onElementNotFound")(e);a||(a=function(){var e=document.getElementById("gleap-tour-dummy-element");if(e)return e;var t=document.createElement("div");return t.id="gleap-tour-dummy-element",t.style.width="0",t.style.height="0",t.style.pointerEvents="none",t.style.opacity="0",t.style.position="fixed",t.style.top="50%",t.style.left="50%",document.body.appendChild(t),t}()),function(e,t){var r,a,s=400,u=Date.now(),d=c("__activeStep"),p=c("__activeElement")||e,h=!p||p===e,m="gleap-tour-dummy-element"===e.id,v="gleap-tour-dummy-element"===p.id,y=n("animate"),b=t.onHighlightStarted||n("onHighlightStarted"),w=(null==t?void 0:t.onHighlighted)||n("onHighlighted"),k=(null==d?void 0:d.onDeselected)||n("onDeselected"),x=n(),S=c();!h&&k&&k(v?void 0:p,d,{config:x,state:S});b&&b(m?void 0:e,t,{config:x,state:S});var E=!h&&y,T=!1;C(),l("previousStep",d),l("previousElement",p),l("activeStep",t),l("activeElement",e);var O=function r(){if(c("__transitionCallback")===r){var i=Date.now()-u,a=s-i<=s/2;t.popover&&a&&!T&&E&&(I(e,t),T=!0),n("animate")&&i0&&P[0].focus()}function E(){var e=c("popover");if(null==e?void 0:e.wrapper){var t=e.wrapper.getBoundingClientRect(),o=n("stagePadding")||0,r=n("popoverOffset")||0;return{width:t.width+o+r,height:t.height+o+r,realWidth:t.width,realHeight:t.height}}}function T(e,t){var n=t.elementDimensions,o=t.popoverDimensions,r=t.popoverPadding,i=t.popoverArrowDimensions;return"start"===e?Math.max(Math.min(n.top-r,window.innerHeight-o.realHeight-i.width),i.width):"end"===e?Math.max(Math.min(n.top-(null==o?void 0:o.realHeight)+n.height+r,window.innerHeight-(null==o?void 0:o.realHeight)-i.width),i.width):"center"===e?Math.max(Math.min(n.top+n.height/2-(null==o?void 0:o.realHeight)/2,window.innerHeight-(null==o?void 0:o.realHeight)-i.width),i.width):0}function O(e,t){var n=t.elementDimensions,o=t.popoverDimensions,r=t.popoverPadding,i=t.popoverArrowDimensions;return"start"===e?Math.max(Math.min(n.left-r,window.innerWidth-o.realWidth-i.width),i.width):"end"===e?Math.max(Math.min(n.left-(null==o?void 0:o.realWidth)+n.width+r,window.innerWidth-(null==o?void 0:o.realWidth)-i.width),i.width):"center"===e?Math.max(Math.min(n.left+n.width/2-(null==o?void 0:o.realWidth)/2,window.innerWidth-(null==o?void 0:o.realWidth)-i.width),i.width):0}function L(e,t){var o=c("popover");if(o){var r=(null==t?void 0:t.popover)||{},i=r.align,a=void 0===i?"start":i,s=r.side,l=void 0===s?"left":s,u=a,d="gleap-tour-dummy-element"===e.id?"over":l,p=n("stagePadding")||0,h=E(),f=o.arrow.getBoundingClientRect(),m=e.getBoundingClientRect(),g=m.top-h.height,v=g>=0,y=window.innerHeight-(m.bottom+h.height),b=y>=0,w=m.left-h.width,k=w>=0,x=window.innerWidth-(m.right+h.width),S=x>=0,C=!(v||b||k||S),I=d;if("top"===d&&v?S=k=b=!1:"bottom"===d&&b?S=k=v=!1:"left"===d&&k?S=v=b=!1:"right"===d&&S&&(k=v=b=!1),"over"===d){var L=window.innerWidth/2-h.realWidth/2,A=window.innerHeight/2-h.realHeight/2;o.wrapper.style.left="".concat(L,"px"),o.wrapper.style.right="auto",o.wrapper.style.top="".concat(A,"px"),o.wrapper.style.bottom="auto"}else if(C){var M=window.innerWidth/2-(null==h?void 0:h.realWidth)/2;o.wrapper.style.left="".concat(M,"px"),o.wrapper.style.right="auto",o.wrapper.style.bottom="".concat(10,"px"),o.wrapper.style.top="auto"}else if(k){var R=Math.min(w,window.innerWidth-(null==h?void 0:h.realWidth)-f.width),P=T(u,{elementDimensions:m,popoverDimensions:h,popoverPadding:p,popoverArrowDimensions:f});o.wrapper.style.left="".concat(R,"px"),o.wrapper.style.top="".concat(P,"px"),o.wrapper.style.bottom="auto",o.wrapper.style.right="auto",I="left"}else if(S){var D=Math.min(x,window.innerWidth-(null==h?void 0:h.realWidth)-f.width),N=T(u,{elementDimensions:m,popoverDimensions:h,popoverPadding:p,popoverArrowDimensions:f});o.wrapper.style.right="".concat(D,"px"),o.wrapper.style.top="".concat(N,"px"),o.wrapper.style.bottom="auto",o.wrapper.style.left="auto",I="right"}else if(v){var j=Math.min(g,window.innerHeight-h.realHeight-f.width),F=O(u,{elementDimensions:m,popoverDimensions:h,popoverPadding:p,popoverArrowDimensions:f});o.wrapper.style.top="".concat(j,"px"),o.wrapper.style.left="".concat(F,"px"),o.wrapper.style.bottom="auto",o.wrapper.style.right="auto",I="top"}else if(b){var B=Math.min(y,window.innerHeight-(null==h?void 0:h.realHeight)-f.width),_=O(u,{elementDimensions:m,popoverDimensions:h,popoverPadding:p,popoverArrowDimensions:f});o.wrapper.style.left="".concat(_,"px"),o.wrapper.style.bottom="".concat(B,"px"),o.wrapper.style.top="auto",o.wrapper.style.right="auto",I="bottom"}C?o.arrow.classList.add("gleap-tour-popover-arrow-none"):function(e,t,n){var o=c("popover");if(!o)return;var r=n.getBoundingClientRect(),i=E(),a=o.arrow,s=i.width,l=window.innerWidth,u=r.width,d=r.left,p=i.height,h=window.innerHeight,f=r.top,m=r.height;a.className="gleap-tour-popover-arrow";var g=t,v=e;"top"===t?(d+u<=0?(g="right",v="end"):d+u-s<=0&&(g="top",v="start"),d>=l?(g="left",v="end"):d+s>=l&&(g="top",v="end")):"bottom"===t?(d+u<=0?(g="right",v="start"):d+u-s<=0&&(g="bottom",v="start"),d>=l?(g="left",v="start"):d+s>=l&&(g="bottom",v="end")):"left"===t?(f+m<=0?(g="bottom",v="end"):f+m-p<=0&&(g="left",v="start"),f>=h?(g="top",v="end"):f+p>=h&&(g="left",v="end")):"right"===t&&(f+m<=0?(g="bottom",v="start"):f+m-p<=0&&(g="right",v="start"),f>=h?(g="top",v="start"):f+p>=h&&(g="right",v="end"));g?(a.classList.add("gleap-tour-popover-arrow-side-".concat(g)),a.classList.add("gleap-tour-popover-arrow-align-".concat(v))):a.classList.add("gleap-tour-popover-arrow-none")}(u,I,e)}}return function(){function e(){n("allowClose")&&f()}function o(){var e=c("activeIndex"),t=n("steps")||[];if(void 0!==e){var o=e+1;t[o]?h(o):f()}}function r(){var e=c("activeIndex"),t=n("steps")||[];if(void 0!==e){var o=e-1;t[o]?h(o):f()}}function i(){var e;if(!c("__transitionCallback")){var t=c("activeIndex"),o=c("__activeStep"),i=c("__activeElement");if("CLICK"!==o.mode)if(void 0!==t&&void 0!==o)if(void 0!==c("activeIndex")){var a=(null==(e=o.popover)?void 0:e.onPrevClick)||n("onPrevClick");if(a)return a(i,o,{config:n(),state:c()});r()}}}function a(){var e;if(!c("__transitionCallback")){var t=c("activeIndex"),r=c("__activeStep"),i=c("__activeElement");if("CLICK"!==r.mode&&void 0!==t&&void 0!==r){var a=(null==(e=r.popover)?void 0:e.onNextClick)||n("onNextClick");if(a)return a(i,r,{config:n(),state:c()});o()}}}function s(){c("isInitialized")||(l("isInitialized",!0),document.body.classList.add("gleap-tour-active",n("animate")?"gleap-tour-fade":"gleap-tour-simple"),window.addEventListener("keyup",x,!1),window.addEventListener("keydown",k,!1),window.addEventListener("resize",w),window.addEventListener("scroll",w),p("overlayClick",e),p("escapePress",e),p("arrowLeftPress",i),p("arrowRightPress",a))}function h(){var e,t,o,r,i,a,s,c,u=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,d=n("steps");if(!d)return console.error("No steps to drive through"),void f();if(d[u]){l("__activeOnDestroyed",document.activeElement),l("activeIndex",u);var p=d[u],m=d[u+1],g=d[u-1],v=(null==(e=p.popover)?void 0:e.doneBtnText)||n("doneBtnText")||"Done",b=n("allowClose"),w=void 0!==(null==(t=p.popover)?void 0:t.showProgress)?null==(o=p.popover)?void 0:o.showProgress:n("showProgress"),k=((null==(r=p.popover)?void 0:r.progressText)||n("progressText")||"{{current}} of {{total}}").replace("{{current}}","".concat(u+1)).replace("{{total}}","".concat(d.length)),x=(null==(i=p.popover)?void 0:i.showButtons)||n("showButtons"),S=["next","previous"].concat(Yf(b?["close"]:[])).filter((function(e){return!(null==x?void 0:x.length)||x.includes(e)})),C=(null==(a=p.popover)?void 0:a.onNextClick)||n("onNextClick"),I=(null==(s=p.popover)?void 0:s.onPrevClick)||n("onPrevClick"),E=(null==(c=p.popover)?void 0:c.onCloseClick)||n("onCloseClick");y(Zf(Zf({},p),{},{popover:Zf({showButtons:S,nextBtnText:m?void 0:v,disableButtons:Yf(g?[]:["previous"]),showProgress:w,progressText:k,onNextClick:C||function(){m?h(u+1):f()},onPrevClick:I||function(){h(u-1)},onCloseClick:E||function(){f()}},(null==p?void 0:p.popover)||{})}))}else f()}function f(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=c("__activeElement"),o=c("__activeStep"),r=c("__activeOnDestroyed"),i=n("onDestroyStarted");if(e&&i){i(!t||"gleap-tour-dummy-element"===(null==t?void 0:t.id)?void 0:t,o,{config:n(),state:c()})}else{var a,s=(null==o?void 0:o.onDeselected)||n("onDeselected"),l=n("onDestroyed");if(document.body.classList.remove("gleap-tour-active","gleap-tour-fade","gleap-tour-simple"),window.removeEventListener("keyup",x),window.removeEventListener("resize",w),window.removeEventListener("scroll",w),function(){var e,t=c("popover");t&&(null==(e=t.wrapper.parentElement)||e.removeChild(t.wrapper))}(),function(){var e;null==(e=document.getElementById("gleap-tour-dummy-element"))||e.remove(),document.querySelectorAll(".gleap-tour-active-element").forEach((function(e){e.classList.remove("gleap-tour-active-element","gleap-tour-no-interaction"),e.removeAttribute("aria-haspopup"),e.removeAttribute("aria-expanded"),e.removeAttribute("aria-controls")}))}(),(a=c("__overlaySvg"))&&a.remove(),d={},u(),t&&o){var p="gleap-tour-dummy-element"===t.id;s&&s(p?void 0:t,o,{config:n(),state:c()}),l&&l(p?void 0:t,o,{config:n(),state:c()})}r&&r.focus()}}return t(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),{isActive:function(){return c("isInitialized")||!1},refresh:w,drive:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;s(),h(e)},setConfig:t,setSteps:function(e){u(),t(Zf(Zf({},n()),{},{steps:e}))},getConfig:n,getState:c,getActiveIndex:function(){return c("activeIndex")},isFirstStep:function(){return 0===c("activeIndex")},isLastStep:function(){var e=n("steps")||[],t=c("activeIndex");return void 0!==t&&t===e.length-1},getActiveStep:function(){return c("activeStep")},getActiveElement:function(){return c("activeElement")},getPreviousElement:function(){return c("previousElement")},getPreviousStep:function(){return c("previousStep")},moveNext:o,movePrevious:r,moveTo:function(e){(n("steps")||[])[e]?h(e):f()},hasNextStep:function(){var e=n("steps")||[],t=c("activeIndex");return void 0!==t&&e[t+1]},hasPreviousStep:function(){var e=n("steps")||[],t=c("activeIndex");return void 0!==t&&e[t-1]},highlight:function(e){s(),y(Zf(Zf({},e),{},{popover:e.popover?Zf({showButtons:[],showProgress:!1,progressText:""},e.popover):void 0}))},destroy:function(){f(!1)}}}}();const em=Qf;function tm(e){return tm="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},tm(e)}function nm(){nm=function(){return t};var e,t={},n=Object.prototype,o=n.hasOwnProperty,r=Object.defineProperty||function(e,t,n){e[t]=n.value},i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",s=i.asyncIterator||"@@asyncIterator",l=i.toStringTag||"@@toStringTag";function c(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,n){return e[t]=n}}function u(e,t,n,o){var i=t&&t.prototype instanceof v?t:v,a=Object.create(i.prototype),s=new A(o||[]);return r(a,"_invoke",{value:E(e,n,s)}),a}function d(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=u;var p="suspendedStart",h="suspendedYield",f="executing",m="completed",g={};function v(){}function y(){}function b(){}var w={};c(w,a,(function(){return this}));var k=Object.getPrototypeOf,x=k&&k(k(M([])));x&&x!==n&&o.call(x,a)&&(w=x);var S=b.prototype=v.prototype=Object.create(w);function C(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function I(e,t){function n(r,i,a,s){var l=d(e[r],e,i);if("throw"!==l.type){var c=l.arg,u=c.value;return u&&"object"==tm(u)&&o.call(u,"__await")?t.resolve(u.__await).then((function(e){n("next",e,a,s)}),(function(e){n("throw",e,a,s)})):t.resolve(u).then((function(e){c.value=e,a(c)}),(function(e){return n("throw",e,a,s)}))}s(l.arg)}var i;r(this,"_invoke",{value:function(e,o){function r(){return new t((function(t,r){n(e,o,t,r)}))}return i=i?i.then(r,r):r()}})}function E(t,n,o){var r=p;return function(i,a){if(r===f)throw new Error("Generator is already running");if(r===m){if("throw"===i)throw a;return{value:e,done:!0}}for(o.method=i,o.arg=a;;){var s=o.delegate;if(s){var l=T(s,o);if(l){if(l===g)continue;return l}}if("next"===o.method)o.sent=o._sent=o.arg;else if("throw"===o.method){if(r===p)throw r=m,o.arg;o.dispatchException(o.arg)}else"return"===o.method&&o.abrupt("return",o.arg);r=f;var c=d(t,n,o);if("normal"===c.type){if(r=o.done?m:h,c.arg===g)continue;return{value:c.arg,done:o.done}}"throw"===c.type&&(r=m,o.method="throw",o.arg=c.arg)}}}function T(t,n){var o=n.method,r=t.iterator[o];if(r===e)return n.delegate=null,"throw"===o&&t.iterator.return&&(n.method="return",n.arg=e,T(t,n),"throw"===n.method)||"return"!==o&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+o+"' method")),g;var i=d(r,t.iterator,n.arg);if("throw"===i.type)return n.method="throw",n.arg=i.arg,n.delegate=null,g;var a=i.arg;return a?a.done?(n[t.resultName]=a.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,g):a:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,g)}function O(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function L(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function A(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(O,this),this.reset(!0)}function M(t){if(t||""===t){var n=t[a];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,i=function n(){for(;++r=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var l=o.call(a,"catchLoc"),c=o.call(a,"finallyLoc");if(l&&c){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&o.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),L(n),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var o=n.completion;if("throw"===o.type){var r=o.arg;L(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,o){return this.delegate={iterator:M(t),resultName:n,nextLoc:o},"next"===this.method&&(this.arg=e),g}},t}function om(e,t){for(var n=0;n=0&&t.productTourData&&t.productTourData.steps){var e=t.productTourData.steps[t.currentActiveIndex];e&&e.selector&&""!==e.selector&&t.updatePointerPosition(document.querySelector(e.selector),e)}})))}var t,n,o;return t=e,n=[{key:"disable",value:function(){this.disabled=!0,this.cleanup()}},{key:"startWithConfig",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;"undefined"!=typeof window&&(this.productTourId||this.disabled||(this.productTourId=e,this.productTourData=t,this.currentActiveIndex=0,this.onCompleteCallback=n,this.start()))}},{key:"storeUncompletedTour",value:function(){if("undefined"!=typeof window)if(this.productTourId&&this.productTourData)try{var e=JSON.parse(JSON.stringify({tourData:this.productTourData,tourId:this.productTourId}));e.tourData.steps=e.tourData.steps.slice(this.currentActiveIndex||0,e.tourData.steps.length),localStorage.setItem(sm,JSON.stringify(e))}catch(t){}else localStorage.removeItem(sm)}},{key:"attachScrollListeners",value:function(e,t){var n=this;if("undefined"!=typeof window&&e){var o=function(e){if("undefined"!=typeof window){for(var t=[],n=e.parentElement;n;){var o=window.getComputedStyle(n);("auto"===o.overflowY||"scroll"===o.overflowY)&&n.scrollHeight>n.clientHeight&&t.push(n),n=n.parentElement}return t}}(e);o.push(window),o.forEach((function(o){var r=function(){clearTimeout(n._scrollDebounceTimer),n._scrollDebounceTimer=setTimeout((function(){n.updatePointerPosition(e,t)}),150)};o.addEventListener("scroll",r,{passive:!0}),n._scrollListeners.push({el:o,handler:r})}))}}},{key:"removeScrollListeners",value:function(){"undefined"!=typeof window&&(this._scrollListeners&&this._scrollListeners.length>0&&(this._scrollListeners.forEach((function(e){var t=e.el,n=e.handler;t.removeEventListener("scroll",n)})),this._scrollListeners=[]),this._scrollDebounceTimer&&(clearTimeout(this._scrollDebounceTimer),this._scrollDebounceTimer=null))}},{key:"updatePointerPosition",value:function(e,t){var n,o=this;if("undefined"!=typeof window)try{var r=this._pointerContainer||document.getElementById(lm);if(!r)return;if(!e)return r.style.position="fixed",r.style.left="50%",r.style.top="50%",r.style.transform="translate(-50%, -50%)",function(e){if("undefined"!=typeof window){var t=e-window.innerHeight/2;window.scrollTo({top:t,behavior:"smooth"})}}(window.innerHeight/2),this.removeScrollListeners(),this._currentAnchor=null,void(this._currentStep=null);n=e,"undefined"!=typeof window&&n&&n.scrollIntoView({behavior:"smooth",block:"center",inline:"center"});var i=0;!function n(){if(function(e){if("undefined"!=typeof window){var t=e.getBoundingClientRect();return t.top>=0&&t.left>=0&&t.bottom<=window.innerHeight&&t.right<=window.innerWidth}}(e)||i>=20){var a=e.getBoundingClientRect(),s=a.left+a.width/2,l=a.top+a.height/2+10;r.style.position="fixed",r.style.left="".concat(s,"px"),r.style.top="".concat(l,"px"),r.style.transform="translate(-50%, -50%)";var c=350;c>window.innerWidth-40&&(c=window.innerWidth-40),s+c>window.innerWidth-20?r.classList.add("copilot-pointer-container-right"):r.classList.remove("copilot-pointer-container-right"),o._currentAnchor===e&&o._currentStep===t||(o.removeScrollListeners(),o._currentAnchor=e,o._currentStep=t,o.attachScrollListeners(e,t))}else i++,setTimeout(n,100)}()}catch(a){}}},{key:"cleanup",value:function(){var e=this;"undefined"!=typeof window&&(document.body.classList.add("gl-copilot-fade-out"),this.currentAudio&&this.currentAudio.pause(),setTimeout((function(){if(e._pointerContainer)e._pointerContainer.remove(),e._pointerContainer=null;else{var t=document.getElementById(lm);t&&t.remove()}var n=document.getElementById(um);n&&n.remove();var o=document.getElementById(cm);o&&o.remove(),document.body.classList.remove("gl-copilot-fade-out")}),800),this.productTourId=void 0,this.productTourData=void 0,this.removeScrollListeners())}},{key:"toggleAudio",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.audioMuted=e,this.currentAudio&&(this.currentAudio.muted=this.audioMuted),document.querySelector(".".concat(um,"-mute")).innerHTML=p(this.audioMuted?"unmute":"mute")}},{key:"setupCopilotTour",value:function(){var e,t,n,o,r,i,a=this;if("undefined"!=typeof window){var s,l,c=null!==(e=null===(t=dt.getInstance().flowConfig)||void 0===t?void 0:t.color)&&void 0!==e?e:"#485BFF",u=d(c),h=document.getElementById(cm);h||((h=document.createElement("style")).id=cm,h.type="text/css",h.textContent="\n #".concat(lm," {\n position: absolute;\n top: 0;\n left: 0;\n display: flex;\n align-items: flex-start;\n pointer-events: none;\n z-index: 2147483610;\n transition: all 0.5s ease;\n }\n .").concat(lm,"-clickmode {\n cursor: pointer;\n pointer-events: all !important;\n }\n .").concat(lm,"-clickmode #copilot-info-bubble-content {\n display: flex !important;\n }\n .").concat(lm,"-clickmode svg {\n display: none !important;\n }\n #").concat(lm," svg {\n width: 20px;\n height: auto;\n fill: none;\n }\n #copilot-info-bubble {\n position: relative;\n }\n #copilot-info-bubble-content-container {\n position: absolute;\n top: 0px;\n left: 0px;\n min-width: min(300px, 80vw);\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n }\n .").concat(lm,"-right #copilot-info-bubble-content-container {\n left: auto !important;\n right: 0px !important;\n align-items: flex-end;\n }\n .").concat(lm,"-right .copilot-info-bubble-content {\n margin-right: 5px;\n }\n .").concat(lm,"-right svg {\n transform: scaleX(-1);\n }\n #copilot-info-bubble-content svg {\n width: 16px;\n height: 16px;\n display: inline-block !important;\n margin-left: 5px;\n }\n #copilot-info-bubble-content {\n margin-top: 18px;\n margin-left: 5px;\n padding: 10px 15px;\n border-radius: 20px;\n background-color: black;\n color: white;\n font-family: Arial, sans-serif;\n font-size: 14px;\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);\n max-width: 100%;\n white-space: normal;\n overflow-wrap: break-word;\n word-break: normal;\n hyphens: none;\n }\n .").concat(lm,"-right #copilot-info-bubble-content {\n margin-top: 30px;\n margin-left: 0px;\n margin-right: 5px;\n }\n .click-wave {\n position: absolute;\n width: 34px;\n height: 34px;\n border-radius: 50%;\n background-color: rgba(0, 0, 0, 0.5);\n pointer-events: none;\n z-index: 2147483611;\n animation: click-wave-animation 0.8s ease forwards;\n }\n @keyframes click-wave-animation {\n 0% {\n transform: scale(0.2);\n opacity: 1;\n }\n 100% {\n transform: scale(2);\n opacity: 0;\n }\n }\n @keyframes slideInFromTop {\n 0% {\n transform: translateY(-100%);\n opacity: 0;\n }\n 100% {\n transform: translateY(0);\n opacity: 1;\n }\n }\n .").concat(um," {\n position: fixed;\n top: 20px;\n right: 20px;\n z-index: 2147483610;\n background: #fff;\n padding: 6px;\n border-radius: 10px;\n box-shadow: 0 0 20px 0 #C294F2;\n display: flex;\n align-items: center;\n gap: 8px;\n border: 1px solid rgba(192, 146, 242, 0.5);\n animation: slideInFromTop 0.5s ease-out forwards;\n }\n .").concat(um," span {\n font-size: 13px;\n color: #000;\n font-family: sans-serif;\n }\n .").concat(um,"-avatar {\n width: 24px;\n height: 24px;\n flex-shrink: 0;\n border-radius: 6px;\n }\n .").concat(um,"-mute {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n .").concat(um,"-mute svg {\n width: 20px;\n height: auto;\n cursor: pointer;\n animation: pulsate 2s infinite;\n }\n .").concat(um,"-mute svg:hover {\n opacity: 0.8;\n }\n .").concat(um,"-dismiss {\n display: flex;\n align-items: center;\n justify-content: center;\n padding-right: 3px;\n }\n .").concat(um,"-dismiss svg {\n width: 15px;\n height: auto;\n cursor: pointer;\n }\n .").concat(um,"-dismiss svg:hover {\n opacity: 0.8;\n }\n @keyframes pulsate {\n 0% {\n transform: scale(1);\n opacity: 1;\n }\n 50% {\n transform: scale(1.1);\n opacity: 0.8;\n }\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n }\n @keyframes glCoFadeIn {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n @keyframes glCoFadeOut {\n 0% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n }\n\n .gleap-audio-unmute-modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n background-color: rgba(0, 0, 0, 0.5);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 2147483620;\n }\n\n .gleap-audio-unmute-modal {\n background-color: #fff;\n padding: 20px;\n border-radius: 8px;\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);\n text-align: center;\n max-width: 90%;\n width: 400px;\n }\n\n .gleap-audio-unmute-modal p {\n margin-bottom: 20px;\n font-size: 16px;\n line-height: 22px;\n font-weight: normal;\n }\n\n .gleap-audio-unmute-button {\n background: ").concat(c,";\n color: ").concat(u,";\n outline: none;\n border: none;\n padding: 10px 14px;\n border-radius: 12px;\n font-size: 14px;\n font-weight: bold;\n cursor: pointer;\n }\n\n .gleap-audio-unmute-button:hover {\n opacity: 0.8;\n }\n\n .gleap-tour-continue-button {\n color: ").concat(c,";\n text-decoration: none;\n cursor: pointer;\n font-size: 14px;\n font-weight: bold;\n border: none;\n background: none;\n padding: 0;\n margin: 0;\n margin-left: 20px;\n }\n\n .gleap-tour-continue-button:hover {\n opacity: 0.8;\n }\n\n body.gl-copilot-fade-out::before,\n body.gl-copilot-fade-out::after,\n body.gl-copilot-fade-out #").concat(um," {\n animation: glCoFadeOut 0.8s ease-out forwards;\n }\n ").concat(null===(s=null===(l=this.productTourData)||void 0===l?void 0:l.playVoice)||void 0===s||s?"":"\n .".concat(um,"-mute {\n display: none;\n }\n "),"\n ").concat(this.productTourData.gradient?'body::before {\n content: "";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n box-sizing: border-box;\n border: 18px solid transparent;\n filter: blur(25px);\n border-image-slice: 1;\n border-image-source: linear-gradient(45deg, #ED5587, #FBE6A9, #a6e3f8, #C294F2);\n animation: glCoFadeIn 1.5s ease-out forwards;\n }\n \n body::after {\n content: "";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n opacity: 0.5;\n box-sizing: border-box;\n border: 3px solid transparent;\n border-image-slice: 1;\n border-image-source: linear-gradient(45deg, #ED5587, #FBE6A9, #a6e3f8, #C294F2);\n animation: glCoFadeIn 1.5s ease-out forwards;\n }':'body::after {\n content: "";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n opacity: 0;\n }',"\n "),document.head.appendChild(h));var f=document.createElement("div");f.id=lm,f.style.opacity=0,this._pointerContainer=f;var m=document.createElementNS("http://www.w3.org/2000/svg","svg");m.setAttribute("viewBox","0 0 380 476"),m.innerHTML='';var g=document.createElement("div");g.id="copilot-info-bubble",g.innerHTML="
";var v=document.createElement("div");v.id=um,v.classList.add(um),v.innerHTML='\n \n ').concat(null===(o=this.productTourData)||void 0===o?void 0:o.kaiSlug,'\n
\n ').concat(p(this.audioMuted?"unmute":"mute"),"\n
\n ").concat(null!==(r=this.productTourData)&&void 0!==r&&r.allowClose?'
\n ').concat(p("dismiss"),"\n
"):"","\n "),document.body.appendChild(v),document.querySelector(".".concat(um,"-mute")).addEventListener("click",(function(){a.toggleAudio(!a.audioMuted)})),null!==(i=this.productTourData)&&void 0!==i&&i.allowClose&&document.querySelector(".".concat(um,"-dismiss")).addEventListener("click",(function(){a.completeTour(!1)})),f.appendChild(m),f.appendChild(g),document.body.appendChild(f)}}},{key:"start",value:function(){var e=this;if("undefined"!=typeof window&&!this.disabled){var t=this.productTourData;t&&function(){return dm.apply(this,arguments)}().then((function(n){e.audioMuted=!n,e.setupCopilotTour(),e.audioMuted&&null!=t&&t.showUnmuteModal?e.showAudioUnmuteModal():setTimeout((function(){e.renderNextStep()}),1500)}))}}},{key:"showAudioUnmuteModal",value:function(){var e,t,n,o=this,r=document.createElement("div");r.classList.add("gleap-audio-unmute-modal-overlay");var i=document.createElement("div");i.classList.add("gleap-audio-unmute-modal");var a=document.createElement("p");a.textContent=null===(e=this.productTourData)||void 0===e?void 0:e.unmuteModalTitle,i.appendChild(a);var s=document.createElement("button");s.classList.add("gleap-audio-unmute-button"),s.textContent=null===(t=this.productTourData)||void 0===t?void 0:t.unmuteModalButton,s.addEventListener("click",(function(){o.toggleAudio(!1),r.parentNode&&r.parentNode.removeChild(r),setTimeout((function(){o.renderNextStep()}),1e3)})),i.appendChild(s);var l=document.createElement("button");l.classList.add("gleap-tour-continue-button"),l.textContent=null===(n=this.productTourData)||void 0===n?void 0:n.unmuteModalContinue,l.addEventListener("click",(function(){r.parentNode&&r.parentNode.removeChild(r),setTimeout((function(){o.renderNextStep()}),1e3)})),i.appendChild(l),r.appendChild(i),document.body.appendChild(r)}},{key:"completeTour",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];"undefined"!=typeof window&&(this.cleanup(),this.onCompleteCallback&&this.onCompleteCallback(e))}},{key:"renderNextStep",value:function(){var e=this;if("undefined"!=typeof window&&!this.disabled){var t=this,n=this.productTourData.steps;if(this.currentActiveIndex>=n.length)setTimeout((function(){e.completeTour()}),500);else{var o=n[this.currentActiveIndex],r=function(n){if(e._pointerContainer.style.display="flex",o.selector&&o.selector.length>0&&!n)e.completeTour(!1);else{var r=function(){if("INPUT"===o.mode&&n){var e,r=function(){document.querySelector("#".concat(lm)).classList.remove("copilot-pointer-container-clickmode"),n.classList.remove("gleap-input-highlight"),document.getElementById(lm).style.display="none",t.currentActiveIndex++,t.storeUncompletedTour(),t.renderNextStep()};if("default"===(null!==(e=o.inputType)&&void 0!==e?e:"default")){var i=function e(t){var o;if(0!==(null==t||null===(o=t.target)||void 0===o||null===(o=o.value)||void 0===o?void 0:o.length)){var i=document.getElementById("copilot-info-bubble-content");i&&(i.innerHTML="".concat(kh.translateText("next"),' \n \n'),i.addEventListener("click",r,{once:!0}),n.classList.add("gleap-input-highlight"),document.querySelector("#".concat(lm)).classList.add("copilot-pointer-container-clickmode"),n.removeEventListener("input",e))}};n.addEventListener("input",i,{once:!1}),n.hasAttribute("contenteditable")&&n.addEventListener("keyup",i,{once:!1}),n.addEventListener("blur",(function(){n.focus()}),{once:!0}),n.focus()}else{var a,s=null!==(a=o.inputValue)&&void 0!==a?a:"",l=0;!function e(){l0})).length;return Math.ceil(t/3.6)+1}}(i),s=function(){e.currentAudio=void 0,setTimeout((function(){r()}),1e3*a)};o.voice&&o.voice.length>0?(e.currentAudio=new Audio(o.voice),e.audioMuted&&(e.currentAudio.muted=!0),e.currentAudio.addEventListener("ended",(function(){setTimeout((function(){r()}),1e3)})),e.currentAudio.play().then((function(){})).catch((function(e){s()}))):s()}},i=o.selector?function(e){if("undefined"!=typeof window){var t=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:5e3)/100,n=0;return new Promise((function(o,r){var i=setInterval((function(){var a=document.querySelector(e);a?(clearInterval(i),o(a)):n>=t&&(clearInterval(i),r(new Error("Element not found for selector: ".concat(e)))),n++}),100)}))}}(o.selector):Promise.resolve(null);i.then(r).catch((function(){return r(null)}))}}}}],o=[{key:"getInstance",value:function(){return this.instance||(this.instance=new e),this.instance}}],n&&om(t.prototype,n),o&&om(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function hm(e){return hm="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},hm(e)}function fm(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function mm(e){for(var t=1;t2&&void 0!==arguments[2]?arguments[2]:0,r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(!this.productTourId&&!this.disabled)if(this.productTourId=e,this.productTourData=t,this.currentActiveIndex=0,r)this.start();else{var i=this;et.getInstance().validateProductTour(e).then((function(){return o>0?setTimeout((function(){i.start()}),o):n.start()})).catch((function(e){console.log("Product tour is not live. Cleaning up..."),console.error(e),i.onComplete(!1)}))}}},{key:"onComplete",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t={tourId:this.productTourId};e?(Tn.notifyEvent("productTourCompleted",t),Wm.trackEvent("tour-".concat(this.productTourId,"-completed"),t)):(Tn.notifyEvent("productTourQuit",t),Wm.trackEvent("tour-".concat(this.productTourId,"-quit"),t)),this.gleapTourObj&&this.gleapTourObj.destroy(),this.gleapTourObj=void 0,this.productTourData=void 0,this.productTourId=void 0,this.currentActiveIndex=void 0,this.clearUncompletedTour()}},{key:"loadUncompletedTour",value:function(){try{var e=JSON.parse(localStorage.getItem(bm));if(null!=e&&e.tourData&&null!=e&&e.tourId)return e}catch(t){}return null}},{key:"storeUncompletedTour",value:function(){if(this.productTourId&&this.productTourData)try{var e=JSON.parse(JSON.stringify({tourData:this.productTourData,tourId:this.productTourId}));e.tourData.steps=e.tourData.steps.slice(this.currentActiveIndex||0,e.tourData.steps.length),localStorage.setItem(bm,JSON.stringify(e))}catch(t){}else this.clearUncompletedTour()}},{key:"clearUncompletedTour",value:function(){try{localStorage.removeItem(bm)}catch(e){}}},{key:"start",value:function(){var e=this,t=this.productTourData;if(t){if("cobrowse"===t.tourType)return pm.getInstance().startWithConfig(this.productTourId,t,(function(t){e.onComplete(t)}));this.unmuted=!1;for(var n=t.steps,o=this,r=[],i=0;i\n \n
').concat(p("unmute"),"
\n ");else{var d="";t.sender&&t.sender.firstName&&(u=!0,d='
\n
\n
').concat(t.sender.firstName,"
\n
")),c="".concat(d,'
').concat(a.message,"
")}var h={disableActiveInteraction:!s&&!l,mode:a.mode,popover:mm({description:c,popoverClass:"gleap-tour-popover-".concat(a.type," ").concat(!u&&"gleap-tour-popover-no-sender"," ").concat(t.allowClose&&"gleap-tour-popover-can-close")},s?{showButtons:[]}:{})};a.selector&&a.selector.length>0&&(h.element=a.selector),r.push(h)}var f=["next","close"];t.backButton&&f.push("previous"),this.gleapTourObj=em(vm(vm(vm(vm(vm(vm(vm(vm(vm(vm({showProgress:!0,allowKeyboardControl:!1,steps:r},"showProgress",n.length>1),"allowClose",t.allowClose),"nextBtnText",t.nextText),"doneBtnText",t.doneText),"prevBtnText",t.prevText),"showButtons",f),"onHighlightStarted",(function(t,n,o){var r;e.currentActiveIndex=null==o||null===(r=o.state)||void 0===r?void 0:r.activeIndex,e.storeUncompletedTour()})),"onElementNotFound",(function(t){document.removeEventListener("click",m),e.onComplete(!1)})),"onDestroyStarted",(function(){e.gleapTourObj.hasNextStep()?e.onComplete(!1):e.onComplete(!0),document.removeEventListener("click",m)})),"onPopoverRender",(function(t){if(t)for(var n=document.querySelectorAll(".gleap-tour-popover-description img, .gleap-tour-popover-description video"),r=function(){setTimeout((function(){e.gleapTourObj.refresh()}),500),setTimeout((function(){e.gleapTourObj.refresh()}),750)},i=0;ie.length)&&(t=e.length);for(var n=0,o=new Array(t);n1&&void 0!==arguments[1]?arguments[1]:"";return kh.translateText(e)||t}},{key:"_translateWithVars",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return kh.translateTextWithVars(e,t)||n}},{key:"getCheckIcon",value:function(){return'\n \n '}},{key:"loadChecklist",value:function(){if(this._isSessionReady&&this._networkManager){var e=this.getAttribute("checklistId");e?(this.activeStep=-1,this._initialActiveSet=!1,this.validateChecklist(e)):(this.renderResponse(),this.checklistData=null,this._hasLoaded=!1)}}},{key:"getQueryParams",value:function(){var e=this._getGleapSessionInstance();if(null==e||!e.session)return"";var t=e.session,n="en";try{void 0!==kh&&(n=kh.getInstance().getActiveLanguage()||"en")}catch(o){}return"gleapId=".concat(t.gleapId||"","&gleapHash=").concat(t.gleapHash||"","&lang=").concat(n)}},{key:"makeRequest",value:function(e,t,n,o){var r=this._getGleapSessionInstance();if(null!=r&&r.session){var i=new XMLHttpRequest;i.open(e,t);try{r.injectSession(i)}catch(a){}n&&i.setRequestHeader("Content-Type","application/json;charset=UTF-8"),i.onreadystatechange=function(){4===i.readyState&&o(i)},i.onerror=function(){o(i)},i.send(n?JSON.stringify(n):null)}else o({readyState:4,status:0,responseText:"Session unavailable",_isMock:!0})}},{key:"validateChecklist",value:function(e){var t=this;if(this._isSessionReady&&this._networkManager){this.checklistData=null,this._hasLoaded=!1,this.renderResponse();var n=this.getAttribute("sharedKey");this._networkManager.validateChecklist(e,n).then((function(e){t.isConnected&&t._isSessionReady&&e&&t.fetchChecklist(e)})).catch((function(e){t.renderResponse(),t.checklistData=null,t._hasLoaded=!1}))}}},{key:"fetchChecklist",value:function(e){var t=this;this._isSessionReady&&this._networkManager&&(this._isInitialLoad=!this._hasLoaded,this._networkManager.fetchChecklist(e).then((function(e){var n;if(!t.isConnected||!t._isSessionReady||!e)return t._hasLoaded=!1,t.checklistData=null,void t._checkSessionAndLoad();if(t.checklistData=e,t._hasLoaded=!0,"done"!==e.status){if(t._isInitialLoad&&!t._initialActiveSet){var o,r=(null===(o=e.outbound)||void 0===o||null===(o=o.config)||void 0===o?void 0:o.steps)||[],i=e.completedSteps||[],a=r.findIndex((function(e){return!i.includes(e.id)}));t.activeStep=a>=0?a:-1,-1!==t.activeStep&&(t._initialActiveSet=!0)}t.renderChecklist(t.checklistData),Tn.notifyEvent("checklist-loaded",{checklistId:t.checklistData.id,outboundId:null===(n=t.checklistData.outbound)||void 0===n?void 0:n.id,completedSteps:t.checklistData.completedSteps,status:t.checklistData.status,data:t.checklistData})}else t.renderResponse()})).catch((function(e){t.renderResponse(),t.checklistData=null,t._hasLoaded=!1})))}},{key:"updateChecklist",value:function(e,t){var n,o,r=this._getGleapSessionInstance();if(null!=r&&r.session){var i=r.apiUrl;if(i){var a=r.session,s=null!==(n=null==a?void 0:a.gleapId)&&void 0!==n?n:"",l=null!==(o=null==a?void 0:a.gleapHash)&&void 0!==o?o:"",c="en";try{void 0!==kh&&(c=kh.getInstance().getActiveLanguage()||"en")}catch(d){}var u="".concat(i,"/outbound/checklists/").concat(e);t.checkedStep&&(u+="/increment/".concat(t.checkedStep)),u+="?gleapId=".concat(s,"&gleapHash=").concat(l,"&lang=").concat(c),this.makeRequest("PUT",u,t,(function(e){e._isMock||200!==e.status&&e.status}))}}}},{key:"handleChecklistUpdate",value:function(e){if(this._hasLoaded&&this.checklistData){var t=e.detail;if(t&&t.id===this.checklistData.id){var n,o=xm(this.checklistData.completedSteps||[]),r=!1,i=!1,a=this.activeStep;if(t.completedSteps&&JSON.stringify(t.completedSteps)!==JSON.stringify(o)&&(this.checklistData.completedSteps=xm(t.completedSteps),r=!0,-1!==a)){var s,l=null===(s=this.checklistData.outbound)||void 0===s||null===(s=s.config)||void 0===s||null===(s=s.steps)||void 0===s||null===(s=s[a])||void 0===s?void 0:s.id;l&&this.checklistData.completedSteps.includes(l)&&!o.includes(l)&&(i=!0)}if(t.status&&t.status!==this.checklistData.status&&(this.checklistData.status=t.status,r=!0),i){for(var c,u=(null===(c=this.checklistData.outbound)||void 0===c||null===(c=c.config)||void 0===c?void 0:c.steps)||[],d=-1,p=a+1;p1&&void 0!==arguments[1]?arguments[1]:"checklist-floating",r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=(null===(t=e.config)||void 0===t?void 0:t.steps)||[],a=(null===(n=this.checklistData)||void 0===n?void 0:n.completedSteps)||[],s=0;if(this.progressbarEnabled&&i.length>0){var l=i.length,c=a.length;s=l>0?c/l*100:0}var u,d,p=i.find((function(e){return!a.includes(e.id)})),h=i.length>0?p?p.title||this._translateWithVars("stepDefaultTitle",{index:i.indexOf(p)+1},"Step ".concat(i.indexOf(p)+1)):"":e.subject||"",f=i.length>0?p&&p.description||"":e.message||"";r&&(h=(null===(u=e.config)||void 0===u?void 0:u.successTitle)||"",f=(null===(d=e.config)||void 0===d?void 0:d.successMessage)||"",s=100);var m=2*Math.PI*7,g=m-s/100*m,v="checklist-floating-header"===o,y=v?'\n \n \n ':'\n \n ';return'\n
\n
\n
\n \n \n \n \n
\n
').concat(h,"
\n ").concat(r?"":''.concat(y,""),'\n
\n
').concat(f,"
\n
\n ")}},{key:"renderInfoSection",value:function(e){var t;if(!this.infoEnabled||!e)return"";var n=e.subject||this._translate("checklistDefaultTitle","Checklist"),o=e.message||"",r="";return null!==(t=e.sender)&&void 0!==t&&t.profileImageUrl&&(r='\n
\n ').concat(e.sender.firstName||\n ').concat(e.sender.firstName||"","\n
")),'\n
\n '.concat(n?'
'.concat(n,"
"):"","\n ").concat(o?'
'.concat(o,"
"):"","\n ").concat(r,"\n
")}},{key:"renderProgressSection",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];if(!this.progressbarEnabled||!e.length)return"";var n=e.length,o=t.length,r=n>0?o/n*100:0,i=0;e.forEach((function(e){!t.includes(e.id)&&e.duration>0&&(i+=e.duration)}));var a=this._translateWithVars("taskProgress",{a:o,b:n},"".concat(o," of ").concat(n," done")),s=i>0?this._translateWithVars("aboutMinutes",{a:i},"About ".concat(i," min left")):"";return'\n
\n
'.concat(a,"
\n ").concat(s?'
'.concat(s,"
"):"",'\n
\n
\n
\n
')}},{key:"renderTasks",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return t&&0!==t.length?t.map((function(t,o){var r=n.includes(t.id),i=e.activeStep===o,a=r?''.concat(e.getCheckIcon(),""):''.concat(o+1,""),s=t.title||e._translateWithVars("stepDefaultTitle",{index:o+1},"Step ".concat(o+1)),l=t.description||"",c=t.actionTitle||e._translate("actionDefaultTitle","Action"),u=t.action&&"none"!==t.action?'
\n \n
"):"",d=e._translate("markAsDone","Mark as done"),p=t.allowMarkDone&&!r?'
\n ').concat(e.getCheckIcon(),'\n
').concat(d,"
\n
"):"",h=["checklist-task",r?"checklist-task--done":"",i?"checklist-task--active":""].filter(Boolean).join(" ");return'\n
\n
\n ').concat(a,'\n
').concat(s,'
\n \n \n \n \n \n
\n
\n
\n ').concat(l?'
'.concat(l,"
"):"","\n ").concat(u,"\n ").concat(p,"\n
\n
\n
")})).join(""):"

".concat(this._translate("noStepsDefined","No steps defined."),"

")}},{key:"renderChecklist",value:function(e){var t;if(this._hasLoaded&&e&&e.outbound){var n=e.outbound,o=(null===(t=n.config)||void 0===t?void 0:t.steps)||[],r=e.completedSteps||[],i="";if("done"===e.status||o.length>0&&r.length>=o.length){var a,s,l=(null===(a=n.config)||void 0===a?void 0:a.successTitle)||"",c=(null===(s=n.config)||void 0===s?void 0:s.successMessage)||"";i=this.floatingEnabled?this.renderFloatingLauncher(n,"checklist-floating-launcher",!0):'\n
\n
\n '.concat(this.getCheckIcon(),'\n
\n
').concat(l,'
\n
').concat(c,"
\n
"),-1!==this.activeStep&&(this.activeStep=-1)}else i='\n
\n '.concat(this.floatingEnabled?"":this.renderInfoSection(n),"\n ").concat(this.floatingEnabled?"":this.renderProgressSection(o,r),"\n ").concat(this.floatingEnabled?this.renderFloatingLauncher(n):"",'\n
\n ').concat(this.floatingEnabled?this.renderFloatingLauncher(n,"checklist-floating-header"):"","\n ").concat(this.renderTasks(o,r),"\n
\n
");var u=dt.getInstance().getFlowConfig(),d=u.color?u.color:"#485BFF",p="\n \n ');this.shadowRoot.innerHTML=p+i,this.addTaskEventListeners(),this.floatingEnabled&&this.addFloatingClickListeners(),-1!==this.activeStep&&this.toggleTask(this.activeStep,!0)}else this._checkSessionAndLoad()}},{key:"updateActiveTaskMaxHeight",value:function(){if(-1!==this.activeStep){var e=this.shadowRoot.querySelector('.checklist-task[data-task-index="'.concat(this.activeStep,'"] .checklist-task-body-inner')),t=this.shadowRoot.querySelector('.checklist-task[data-task-index="'.concat(this.activeStep,'"] .checklist-task-body'));if(e&&t){var n=e.offsetHeight;t.style.setProperty("--task-body-active-height","".concat(n,"px"))}}}},{key:"addTaskEventListeners",value:function(){var e=this;this.shadowRoot.querySelectorAll(".checklist-task").forEach((function(t){var n=t.querySelector(".checklist-task-header"),o=parseInt(t.getAttribute("data-task-index"),10);n&&n.addEventListener("click",(function(){var t=e.activeStep===o?-1:o;e.setActiveStep(t)}));var r=t.querySelector(".checklist-task-body-markdone");r&&r.addEventListener("click",(function(t){var n;if(t.stopPropagation(),null!==(n=e.checklistData)&&void 0!==n&&null!==(n=n.outbound)&&void 0!==n&&null!==(n=n.config)&&void 0!==n&&n.steps){var r=e.checklistData.outbound.config.steps[o];if(r){var i=e.activeStep;if(e.checklistData.completedSteps||(e.checklistData.completedSteps=[]),!e.checklistData.completedSteps.includes(r.id)){var a;e.checklistData.completedSteps.push(r.id),Tn.notifyEvent("checklist-step-completed",{checklistId:e.checklistData.id,outboundId:null===(a=e.checklistData.outbound)||void 0===a?void 0:a.id,stepId:r.id,stepIndex:o,step:r,completedSteps:e.checklistData.completedSteps,status:e.checklistData.status,data:e.checklistData});var s=e.checklistData.outbound.config.steps,l=-1;if(i===o){for(var c=o+1;c0&&e.checklistData.completedSteps.length>=s.length&&(e.checklistData.status="done",d.status="done",Tn.notifyEvent("checklist-completed",{checklistId:e.checklistData.id,outboundId:null===(u=e.checklistData.outbound)||void 0===u?void 0:u.id,completedSteps:e.checklistData.completedSteps,status:e.checklistData.status,data:e.checklistData})),e.updateChecklist(e.checklistData.id,d)}}}}));var i=t.querySelector(".checklist-task-body-action .action-button");i&&i.addEventListener("click",(function(t){var n;if(t.stopPropagation(),null!==(n=e.checklistData)&&void 0!==n&&null!==(n=n.outbound)&&void 0!==n&&null!==(n=n.config)&&void 0!==n&&n.steps&&void 0!==Wm){var r=e.checklistData.outbound.config.steps[o];if(r&&r.action&&"none"!==r.action)try{"BOT"===r.action?Wm.startBot(r.botId):"CUSTOM_ACTION"===r.action?Wm.triggerCustomAction(r.actionBody):"REDIRECT_URL"===r.action?(t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation(),Wm.openURL(r.actionBody,!!r.actionOpenInNewTab)):"FEEDBACK_FLOW"===r.action?Wm.startFeedbackFlow(r.formId):"NEWS_ARTICLE"===r.action?Wm.openNewsArticle(r.articleId):"HELP_ARTICLE"===r.action?Wm.openHelpCenterArticle(r.articleId):"CHECKLIST"===r.action&&Wm.startChecklist(r.outboundId,!0,null==r?void 0:r.sharedKey)}catch(i){}}}))}))}},{key:"setActiveStep",value:function(e){var t=this,n=this.activeStep;this.activeStep=e;var o=[];-1!==n&&n!==this.activeStep&&o.push({index:n,open:!1}),-1!==this.activeStep&&this.activeStep!==n&&o.push({index:this.activeStep,open:!0}),o.forEach((function(e){var n=e.index,o=e.open;t.toggleTask(n,o)}))}},{key:"toggleTask",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=this.shadowRoot.querySelector('.checklist-task[data-task-index="'.concat(e,'"]'));if(n){var o=n.querySelector(".checklist-task-header");if(o){var r=n.classList.contains("checklist-task--active"),i=null!==t?t:!r;if(i&&!r){n.classList.add("checklist-task--active"),o.setAttribute("aria-expanded","true");var a=n.querySelector(".checklist-task-body-inner");if(a){var s=a.offsetHeight,l=n.querySelector(".checklist-task-body");l&&l.style.setProperty("--task-body-active-height","".concat(s,"px"))}}else!i&&r&&(n.classList.remove("checklist-task--active"),o.setAttribute("aria-expanded","false"))}}}}],r=[{key:"observedAttributes",get:function(){return["checklistId","info","progressbar","dark","floating","sharedKey"]}}],o&&Cm(n.prototype,o),r&&Cm(n,r),Object.defineProperty(n,"prototype",{writable:!1}),t}(Tm(HTMLElement));"undefined"==typeof customElements||customElements.get("gleap-checklist")||customElements.define("gleap-checklist",e)}}();var _m=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),Fm(this,"initialized",!1),Fm(this,"offlineMode",!1),Fm(this,"disablePageTracking",!1),Fm(this,"disableInAppNotifications",!1),Fm(this,"globalData",{screenRecordingData:null,webReplay:null,snapshotPosition:{x:0,y:0}}),"undefined"!=typeof window&&(nn.getInstance(),un.getInstance().start(),vn.getInstance().start(),Gf.getInstance().start())}var t,n,o;return t=e,n=[{key:"isLiveMode",value:function(){if(!0===this.offlineMode)return!1;var e=window.location.hostname;return!(["localhost","127.0.0.1","0.0.0.0","","::1"].includes(e)||e.startsWith("192.168.")||e.startsWith("10.0.")||e.endsWith(".local")||!e.includes("."))}},{key:"softReInitialize",value:function(){Zt.getInstance().destroy(),dt.getInstance().start().then((function(){a.getInstance().refresh(),jh.getInstance().injectNotificationUI()})).catch((function(e){console.warn("Failed to initialize Gleap.")}))}},{key:"performActions",value:function(t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:"INFO";un.getInstance().addLog(e,t)}},{key:"initialize",value:function(t){var n=this.getInstance();if(n.initialized)console.warn("Gleap already initialized.");else{n.initialized=!0;try{!function(){try{if("visualViewport"in window&&/iPad|iPhone|iPod/.test(navigator.userAgent)){var e=function(){try{var e=document.querySelector(".gleap-frame-container-inner iframe");if(!e)return;window.visualViewport.height1&&void 0!==arguments[1]&&arguments[1];Zt.getInstance().urlHandler(e,t)}},{key:"checkForUrlParams",value:function(){if("undefined"!=typeof window&&window.location.search)try{var t=new URLSearchParams(window.location.search),n=t.get("gleap_widget");n&&n.length>0&&e.open();var o=t.get("gleap_conversation");o&&o.length>0&&("true"===o?e.startConversation(!0):e.startBot(o,!0));var r=t.get("gleap_feedback");r&&r.length>0&&e.startFeedbackFlow(r);var i=t.get("gleap_survey"),a=t.get("gleap_survey_format");i&&i.length>0&&e.showSurvey(i,"survey_full"===a?"survey_full":"survey");var s=t.get("gleap_tour");if(s&&s.length>0){var l=parseInt(t.get("gleap_tour_delay"));isNaN(l)&&(l=2),setTimeout((function(){e.startProductTour(s)}),1e3*l)}}catch(c){}}},{key:"destroy",value:function(){th.getInstance().stop(),it.getInstance().stop(),Zt.getInstance().destroy(),a.getInstance().destroy(),jh.getInstance().clearAllNotifications(!0),et.getInstance().clearSession(0,!1),qh.getInstance().removeBannerUI(),this.instance=null}},{key:"closeBanner",value:function(){qh.getInstance().removeBannerUI()}},{key:"closeModal",value:function(){Kh.getInstance().hideModal()}},{key:"setUseCookies",value:function(e){et.getInstance().useCookies=e}},{key:"identify",value:function(e,t,n){return et.getInstance().identifySession(e,k(t),n)}},{key:"updateContact",value:function(e){return et.getInstance().updateSession(k(e))}},{key:"clearIdentity",value:function(){et.getInstance().clearSession()}},{key:"getIdentity",value:function(){return et.getInstance().getSession()}},{key:"isUserIdentified",value:function(){var e=et.getInstance().session;return!!(e&&e.userId&&e.userId.length>0)}},{key:"isOpened",value:function(){return Zt.getInstance().isOpened()}},{key:"hide",value:function(){Zt.getInstance().hideWidget()}},{key:"setMaxNetworkRequests",value:function(e){y.getInstance().setMaxRequests(e)}},{key:"startNetworkLogger",value:function(){y.getInstance().start()}},{key:"setNetworkLogsBlacklist",value:function(e){y.getInstance().setBlacklist(e)}},{key:"setNetworkLogPropsToIgnore",value:function(e){y.getInstance().setFilters(e)}},{key:"setReplayOptions",value:function(e){th.getInstance().setOptions(e)}},{key:"close",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];Zt.getInstance().hideWidget(e)}},{key:"open",value:function(){Zt.getInstance().setAppMode("widget"),Zt.getInstance().showWidget()}},{key:"trackEvent",value:function(e,t){it.getInstance().logEvent(e,t)}},{key:"logEvent",value:function(e,t){it.getInstance().logEvent(e,t)}},{key:"preFillForm",value:function(e){var t=k(e);Mh.getInstance().formPreFill=t,Zt.getInstance().sendMessage({name:"prefill-form-data",data:t},!0)}},{key:"on",value:function(e,t){Tn.on(e,t)}},{key:"enableShortcuts",value:function(e){e?Eh.getInstance().start():Eh.getInstance().stop()}},{key:"showFeedbackButton",value:function(e){a.getInstance().toggleFeedbackButton(e)}},{key:"setAppVersionCode",value:function(e){nn.setAppVersionCode(e)}},{key:"setAppBuildNumber",value:function(e){nn.setAppBuildNumber(e)}},{key:"setWSApiUrl",value:function(e){et.getInstance().wsApiUrl=e}},{key:"setApiUrl",value:function(e){et.getInstance().apiUrl=e}},{key:"setBannerUrl",value:function(e){qh.getInstance().setBannerUrl(e)}},{key:"setModalUrl",value:function(e){Kh.getInstance().setModalUrl(e)}},{key:"setFrameUrl",value:function(e){Zt.getInstance().frameUrl=e}},{key:"setTicketAttribute",value:function(e,t){xn.getInstance().setTicketAttribute(e,t)}},{key:"unsetTicketAttribute",value:function(e){xn.getInstance().unsetTicketAttribute(e)}},{key:"clearTicketAttributes",value:function(){xn.getInstance().clearTicketAttributes()}},{key:"attachCustomData",value:function(e){xn.getInstance().attachCustomData(e)}},{key:"setCustomData",value:function(e,t){xn.getInstance().setCustomData(e,t)}},{key:"removeCustomData",value:function(e){xn.getInstance().removeCustomData(e)}},{key:"clearCustomData",value:function(){xn.getInstance().clearCustomData()}},{key:"playSound",value:function(e){tf.playSound(e)}},{key:"showTabNotificationBadge",value:function(e){var t=jh.getInstance();t.showNotificationBadge=e,t.updateTabBarNotificationCount()}},{key:"setLanguage",value:function(t){kh.getInstance().setOverrideLanguage(t),e.getInstance().initialized&&setTimeout((function(){e.getInstance().softReInitialize(),e.updateContact({lang:t})}),1e3)}},{key:"registerCustomAction",value:function(e){Dn.registerCustomAction(e)}},{key:"triggerCustomAction",value:function(e){Dn.triggerCustomAction(e)}},{key:"setStyles",value:function(e,t,n){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"#ffffff",r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:20,i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:20,s=arguments.length>6&&void 0!==arguments[6]?arguments[6]:20,l=arguments.length>7&&void 0!==arguments[7]?arguments[7]:a.FEEDBACK_BUTTON_BOTTOM_LEFT;E((function(){!function(e,t,n,o,r,i,s,l){var c=d(e),p=d(n),h=d(r),f=d(t),m="#ffffff"===h,g=u(t,"#ffffff"===f?-35:-15),v=u(r,m?100:-120),y=u(r,m?30:-12),b=u(r,m?80:-30),w=(o=parseInt(o,10),Math.round(1.05*o)),k=Math.round(.8*o),x=Math.round(.6*o),S=Math.round(.4*o),C=Math.round(.25*o),I=57+s;l===a.FEEDBACK_BUTTON_CLASSIC_BOTTOM?I=s+15:(l&&l.includes("CLASSIC")||l===a.FEEDBACK_BUTTON_NONE)&&(I=s);var E='\n .gleap-font, .gleap-font * {\n font-style: normal;\n font-variant-caps: normal;\n font-variant-ligatures: normal;\n font-variant-numeric: normal;\n font-variant-east-asian: normal;\n font-weight: normal;\n font-stretch: normal;\n font-size: 100%;\n line-height: 1;\n font-family: system-ui, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";\n }\n .gleap-input-highlight {\n box-shadow: 0 0 0 3px '.concat(e," !important;\n }\n .gleap-frame-container {\n right: ").concat(i,"px;\n bottom: ").concat(61+s,"px;\n width: calc(100% - 40px);\n max-width: 410px;\n position: fixed;\n z-index: ").concat(2147483631,";\n visibility: visible;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.16);\n border-radius: ").concat(k,"px;\n overflow: hidden;\n animation-duration: .3s;\n animation-fill-mode: both;\n animation-name: gleapFadeInUp;\n user-select: none;\n pointer-events: none;\n transition: max-width 0.3s ease-out;\n }\n\n .gleap-admin-highlight {\n box-shadow: 0px 0px 0px 4px red;\n }\n\n :root {\n --gleap-margin-top: 50px;\n }\n\n .gleap-tooltip-anchor {\n position: relative;\n display: inline-block;\n float: left;\n max-width: 0px;\n width: 17px;\n }\n\n .gleap-tooltip-hotspot {\n position: absolute;\n display: block;\n width: 17px;\n height: 17px;\n cursor: pointer;\n top: 0px;\n left: 0px;\n }\n\n @keyframes gleap-pulse {\n 0% {\n transform: scale(0);\n opacity: 0.25;\n }\n 45% {\n transform: scale(2.5);\n opacity: 0;\n }\n 100% {\n transform: scale(0);\n opacity: 0;\n }\n }\n\n .gleap-tooltip-hotspot-animation {\n position: absolute;\n border-radius: 17px;\n opacity: 0.25;\n display: block;\n width: 17px;\n height: 17px;\n cursor: pointer;\n top: 0px;\n left: 0px;\n animation: gleap-pulse 5s infinite;\n }\n\n .gleap-tooltip-hotspot svg {\n width: 17px;\n height: 17px;\n object-fit: contain;\n display: block;\n }\n\n .gleap-tooltip-inner {\n position: relative;\n overflow: visible;\n font-size: 14px;\n font-weight: normal;\n color: #000;\n line-height: 1.3;\n }\n\n .gleap-tooltip {\n position: absolute;\n background-color: #fff;\n color: #000;\n font-size: 15px;\n line-height: 18px;\n padding: 16px;\n padding-top: 8px;\n padding-bottom: 8px;\n border-radius: 4px;\n max-width: min(350px, 80vw);\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n opacity: 0;\n visibility: hidden;\n transition: opacity 0.2s, visibility 0.2s;\n z-index: ").concat(2147483700,";\n }\n\n .gleap-tooltip a {\n color: ").concat(e,";\n text-decoration: underline;\n display: inline !important;\n margin: 0px !important;\n padding: 0px !important;\n word-break: break-word;\n }\n\n .gleap-tooltip ul {\n padding-left: 16px;\n }\n\n .gleap-tooltip b {\n font-weight: 600;\n }\n\n .gleap-tooltip h2 {\n font-size: 18px;\n line-height: 20px;\n font-weight: 600;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip h3 {\n font-size: 16px;\n line-height: 18px;\n font-weight: 600;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip p {\n padding: 0px;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip img {\n max-width: 100%;\n max-height: 300px;\n width: 100%;\n height: auto;\n object-fit: cover;\n margin-top: 8px;\n margin-bottom: 8px;\n border-radius: 4px;\n }\n\n .gleap-tooltip iframe,\n .gleap-tooltip video {\n max-width: 100%;\n width: 100%;\n height: auto;\n min-height: 200px;\n display: block;\n border: none;\n outline: none;\n padding: 0px;\n margin-top: 8px;\n margin-bottom: 8px;\n border-radius: 4px;\n }\n\n .gleap-tooltip-arrow {\n position: absolute;\n width: 20px;\n height: 20px;\n }\n\n .gleap-tooltip-arrow svg {\n width: 20px;\n height: 20px;\n object-fit: contain;\n }\n\n .gleap-b-frame {\n width: 100%;\n height: 100%;\n border: none;\n pointer-events: auto;\n padding: 0px;\n margin: 0px;\n }\n\n .gleap-b-shown {\n transition: margin 0.3s ease-out;\n margin-top: var(--gleap-margin-top);\n position: relative;\n z-index: 10000;\n }\n\n .gleap-b-f {\n margin-top: 0px;\n }\n\n .gleap-b {\n display: none;\n position: absolute;\n top: calc(-1 * var(--gleap-margin-top));\n left: 0px;\n width: 100vw;\n height: var(--gleap-margin-top);\n z-index: ").concat(2147483699,";\n }\n\n @keyframes gleapSlideIn {\n from {\n top: calc(-1 * var(--gleap-margin-top));\n }\n to {\n top: 10px;\n }\n }\n\n .gleap-b-f .gleap-b {\n position: fixed;\n top: 10px;\n animation: gleapSlideIn .25s ease-out forwards;\n max-width: 800px;\n width: calc(100% - 20px);\n left: 50%;\n z-index: ").concat(2147483699,";\n transform: translateX(-50%);\n border-radius: ").concat(S,"px;\n overflow: hidden;\n box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.15), 0px 5px 5px rgba(0, 0, 0, 0.05);\n }\n\n .gleap-b-shown .gleap-b {\n display: block;\n }\n\n .gleap-image-view {\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n z-index: ").concat(2147483699,";\n background-color: ").concat(h,"cc;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .gleap-image-view-image {\n width: 90%;\n height: auto;\n max-width: 90%;\n max-height: 90%;\n object-fit: contain;\n }\n\n .gleap-image-view-close {\n position: fixed;\n top: 20px;\n right: 20px;\n width: 32px;\n height: 32px;\n opacity: 0.8;\n z-index: ").concat(2147483740,";\n box-shadow: 0px 5px 18px rgba(0, 0, 0, 0.16);\n cursor: pointer;\n }\n\n .gleap-image-view-close:hover {\n opacity: 1;\n }\n\n .gleap-image-view-close svg path {\n fill: ").concat(r,";\n }\n\n [dir=rtl].gleap-frame-container {\n right: auto;\n left: ").concat(i,"px;\n bottom: ").concat(61+s,'px;\n }\n\n .gleap-frame-container--loading iframe {\n opacity: 0;\n }\n\n .gleap-frame-container--loading::before {\n content: " ";\n position: fixed;\n top: 0px;\n left: 0px;\n right: 0px;\n height: 100%;\n max-height: 380px;\n background: linear-gradient(\n 130deg,\n ').concat(g," 0%,\n ").concat(t,' 100%\n );\n }\n \n .gleap-frame-container--loading::after {\n content: " ";\n position: fixed;\n top: 0px;\n left: 0px;\n right: 0px;\n height: 100%;\n height: 100%;\n max-height: 380px;\n background: linear-gradient(\n 180deg,\n transparent 60%,\n ').concat(r,"1A 70%,\n ").concat(r," 100%\n );\n }\n\n .gleap-frame-container--loading-nogradient::before {\n max-height: 340px;\n background: ").concat(t," !important;\n }\n\n .gleap-frame-container--loading-nofade::after {\n display: none !important;\n }\n\n .gleap-frame-container--survey {\n bottom: ").concat(s,"px !important;\n }\n\n .gleap-frame-container--extended {\n max-width: 690px !important;\n }\n\n .gleap-frame-container--survey-full {\n position: fixed;\n top: 0 !important;\n left: 0 !important;\n bottom: 0 !important;\n right: 0 !important;\n width: 100vw !important;\n max-width: 100vw !important;\n height: 100vh;\n height: 100dvh !important;\n background-color: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(6px);\n display: flex !important;\n justify-content: center !important;\n align-items: center !important;\n max-height: 100vh;\n max-height: 100dvh !important;\n border-radius: 0 !important;\n animation-name: none !important;\n }\n\n .gleap-frame-container--survey-full .gleap-frame-container-inner {\n max-width: 640px !important;\n width: calc(100% - 24px);\n border-radius: ").concat(k,"px;\n overflow: hidden;\n }\n\n .gleap-frame-container--classic {\n right: ").concat(i,"px;\n bottom: ").concat(s,"px;\n }\n\n [dir=rtl].gleap-frame-container--classic {\n right: auto;\n left: ").concat(i,"px;\n bottom: ").concat(s,"px;\n }\n\n .gleap-frame-container--no-button {\n bottom: ").concat(s,"px;\n }\n\n [dir=rtl].gleap-frame-container--classic-left {\n bottom: ").concat(s,"px;\n }\n\n .gleap-frame-container--classic-left {\n right: auto;\n left: ").concat(i,"px;\n bottom: ").concat(s,"px;\n }\n\n [dir=rtl].gleap-frame-container--classic-left {\n left: auto;\n right: ").concat(i,"px;\n bottom: ").concat(s,"px;\n }\n\n .gleap-frame-container--modern-left {\n right: auto;\n left: ").concat(i,"px;\n bottom: ").concat(61+s,"px;\n }\n\n [dir=rtl].gleap-frame-container--modern-left {\n left: auto;\n right: ").concat(i,"px;\n bottom: ").concat(61+s,"px;\n }\n\n .gleap-frame-container--animate {\n pointer-events: auto !important;\n }\n\n @keyframes gleapFadeInUp {\n from {\n opacity: 0;\n transform: translate3d(0, 100%, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n\n @keyframes gleapFadeInUpMobile {\n from {\n opacity: 0;\n transform: translate3d(0, 10%, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n\n .gleap-notification-container {\n position: fixed;\n bottom: ").concat(I,"px;\n right: ").concat(i,"px;\n z-index: ").concat(2147483630,";\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n width: 100%;\n max-width: min(340px, 80vw);\n }\n\n .gleap-notification-container--left {\n left: ").concat(4+i,"px;\n right: initial !important;\n }\n\n [dir=rtl].gleap-notification-container {\n left: ").concat(4+i,"px;\n right: initial !important;\n }\n\n [dir=rtl].gleap-notification-container--left {\n left: initial !important;\n right: ").concat(i,"px !important;\n align-items: flex-start !important;\n }\n\n .gleap-notification-container--no-button {\n bottom: ").concat(s,"px;\n }\n\n .gleap-notification-item {\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n\n .gleap-notification-close {\n border-radius: 100%;\n width: 28px;\n height: 28px;\n background-color: ").concat(v,";\n display: flex;\n justify-content: center;\n align-items: center;\n margin-bottom: 8px;\n cursor: pointer;\n visibility: hidden;\n pointer-events: none;\n }\n\n .gleap-notification-container:hover .gleap-notification-close {\n visibility: visible;\n pointer-events: auto;\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-notification-close {\n visibility: visible;\n pointer-events: auto;\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n }\n\n .gleap-notification-close svg {\n width: 45%;\n height: 45%;\n object-fit: contain;\n fill: ").concat(r,";\n }\n\n .gleap-notification-item-checklist-container {\n display: flex;\n animation: fadeIn;\n animation-duration: .45s;\n background-color: ").concat(r,";\n border-radius: ").concat(v,";\n box-sizing: border-box;\n cursor: pointer;\n flex-direction: column;\n overflow: hidden;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ").concat(x,"px;\n margin-bottom: 12px;\n }\n\n .gleap-notification-item-checklist-content {\n align-items: flex-start;\n display: flex;\n flex-direction: column;\n padding: 15px;\n width: 100%;\n width: min(310px, 70vw);\n max-width: min(310px, 70vw);\n }\n\n .gleap-notification-item-checklist-content-title {\n color: ").concat(h,";\n font-size: 15px;\n font-weight: 500;\n line-height: 21px;\n margin-bottom: 10px;\n max-width: 100%;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .gleap-notification-item-checklist-content-progress {\n width: 100%;\n height: 8px;\n border-radius: 8px;\n background-color: ").concat(y,";\n }\n\n .gleap-notification-item-checklist-content-progress-inner {\n height: 100%;\n border-radius: 8px;\n background-color: ").concat(e,";\n }\n\n .gleap-notification-item-checklist-content-next {\n color: ").concat(v,";\n font-size: 15px;\n font-weight: normal;\n line-height: 21px;\n margin-top: 10px;\n max-width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: flex;\n align-items: center;\n }\n\n .gleap-notification-item-checklist-content-next svg {\n height: 18px;\n margin-right: 5px;\n width: auto;\n }\n\n .gleap-notification-item-checklist-content-next b {\n font-size: 15px;\n font-weight: normal;\n color: ").concat(h,";\n }\n\n .gleap-notification-item-news {\n width: 100%;\n }\n\n .gleap-news-pagination {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 10px;\n width: 100%;\n }\n\n .gleap-news-page-indicator {\n font-size: 12px;\n color: ").concat(v,";\n }\n\n .gleap-news-next-button {\n background-color: ").concat(e,";\n color: ").concat(c,";\n border-radius: ").concat(C,"px;\n box-sizing: border-box;\n padding: 5px 10px;\n font-size: 14px;\n font-weight: bold;\n line-height: 21px;\n border: none;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: none !important;\n outline: none !important;^\n }\n\n .gleap-notification-item-news-content {\n align-items: flex-start;\n display: flex;\n flex-direction: column;\n padding: 15px;\n }\n\n .gleap-notification-item-news-preview {\n color: ").concat(v,";\n font-size: 14px;\n line-height: 21px;\n font-weight: 400;\n overflow-wrap: break-word;\n word-break: break-word;\n display: block;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .gleap-notification-item-news-sender {\n display: flex;\n align-items: center;\n color: ").concat(v,";\n font-size: 15px;\n line-height: 21px;\n font-weight: 400;\n }\n \n .gleap-notification-item-news-content-title {\n color: ").concat(h,";\n font-size: 15px;\n font-weight: 500;\n line-height: 21px;\n margin-bottom: 6px;\n max-width: 100%;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n cursor: pointer;\n }\n\n .gleap-notification-item-news-sender img {\n border-radius: 100%;\n height: 20px;\n margin-right: 8px;\n object-fit: cover;\n width: 20px;\n }\n\n [dir=rtl] .gleap-notification-item-news-sender img {\n margin-left: 8px;\n margin-right: 0px !important;\n }\n\n .gleap-notification-item-news-container {\n display: flex;\n animation: fadeIn;\n animation-duration: .45s;\n background-color: ").concat(r,";\n border-radius: ").concat(v,";\n box-sizing: border-box;\n flex-direction: column;\n overflow: hidden;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ").concat(x,"px;\n margin-bottom: 12px;\n }\n\n .gleap-notification-item-news-image {\n background-color: ").concat(v,";\n height: 170px;\n max-height: 170px;\n object-fit: cover;\n width: 100%;\n cursor: pointer;\n }\n \n .gleap-notification-item-news-content-title:hover {\n color: ").concat(e,";\n }\n\n .gleap-notification-item {\n display: flex;\n align-items: flex-end;\n cursor: pointer;\n }\n\n .gleap-notification-item img {\n width: 32px;\n height: 32px;\n min-width: 32px;\n border-radius: 100%;\n object-fit: cover;\n margin-right: 8px;\n margin-bottom: 12px;\n cursor: pointer;\n }\n\n [dir=rtl] .gleap-notification-item img {\n margin-left: 8px;\n margin-right: 0px !important;\n }\n\n .gleap-notification-item-container {\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ").concat(x,"px;\n border-bottom-left-radius: 0px;\n padding: 20px;\n background-color: ").concat(r,";\n margin-bottom: 12px;\n cursor: pointer;\n font-size: 15px;\n line-height: 21px;\n color: ").concat(h,';\n position: relative;\n }\n\n .gleap-notification-item-container::after {\n content: " ";\n position: absolute;\n bottom: 0px;\n width: 0px;\n height: 0px;\n left: -6px;\n border-style: solid;\n border-width: 0px 0px 10px 6px;\n border-color: transparent transparent ').concat(r,";\n }\n\n .gleap-notification-item-sender {\n color: ").concat(v,";\n line-height: 20px;\n }\n\n .gleap-notification-item-content {\n line-height: 20px;\n color: ").concat(h,";\n margin-top: 4px;\n min-width: min(200px, 50vw);\n word-wrap: break-word;\n word-break: break-word;\n }\n\n .gleap-frame-container-inner {\n position: relative;\n width: 100%;\n height: calc(100vh - ").concat(84+s,"px);\n max-height: ").concat(700,'px;\n }\n\n .gleap-frame-container--survey .gleap-frame-container-inner {\n height: calc(100vh - 40px);\n }\n \n .gleap-frame-container-inner:before {\n content: " ";\n position: absolute;\n width: 100%;\n height: calc(100% - ').concat(k,"px);\n top: ").concat(k,"px;\n background-color: ").concat(r,";\n z-index: -1;\n }\n \n .gleap-frame-container iframe {\n height: 100% !important;\n width: 100% !important;\n max-width: 100% !important;\n display: block !important;\n pointer-events: auto !important;\n }\n \n .gleap-frame-container--hidden {\n display: none !important;\n pointer-events: none;\n animation: none !important;\n }\n \n .bb-feedback-button {\n margin: 0px;\n position: fixed;\n bottom: ").concat(s,"px;\n right: ").concat(i,"px;\n border-radius: 30px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n background-color: transparent;\n color: #000000;\n z-index: ").concat(2147483630,";\n box-sizing: border-box;\n display: flex;\n align-items: center;\n padding: 0px;\n }\n\n [dir=rtl].bb-feedback-button {\n bottom: ").concat(s,"px;\n right: auto;\n left: ").concat(i,"px;\n }\n \n .bb-feedback-button--bottomleft {\n bottom: ").concat(s,"px;\n right: auto;\n left: ").concat(i,"px;\n }\n\n [dir=rtl].bb-feedback-button--bottomleft {\n bottom: ").concat(s,"px;\n right: ").concat(i,'px;\n left: auto;\n }\n \n .bb-feedback-button--disabled {\n display: none !important;\n }\n\n .bb-feedback-button--hidden {\n display: none !important;\n }\n \n .bb-feedback-button-text {\n padding: 8px 12px;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n background-color: #fff;\n border-radius: 8px;\n box-shadow: 0px 0px 14px 0px rgba(0, 0, 0, 0.15);\n position: relative;\n z-index: 99;\n }\n \n .bb-feedback-button-text:before {\n content: "";\n position: absolute;\n box-shadow: rgba(0, 0, 0, 0.04) 6px 6px 5px;\n transform: rotate(315deg);\n bottom: 16px;\n right: -4px;\n border-width: 10px;\n border-style: solid;\n border-color: transparent #fff #fff transparent;\n }\n \n .bb-feedback-button--bottomleft .bb-feedback-button-text:before {\n display: none;\n }\n \n .bb-feedback-button-text:after {\n content: "";\n position: absolute;\n bottom: 12px;\n right: 0px;\n background-color: #fff;\n width: 5px;\n height: 30px;\n }\n \n .bb-feedback-button-text-title {\n font-family: sans-serif;\n font-size: 14px;\n color: #666;\n line-height: 18px;\n max-width: 220px;\n }\n \n .bb-feedback-button-text-title b {\n color: #000000;\n font-weight: 600;\n }\n\n .bb-notification-bubble {\n position: absolute;\n top: -5px;\n right: -5px;\n min-width: 12px;\n padding: 0px 4px;\n height: 20px;\n min-width: 20px;\n border-radius: 20px;\n background-color: red;\n color: #fff;\n font-size: 11px;\n font-family: sans-serif;\n text-align: center;\n line-height: 20px;\n }\n\n .bb-notification-bubble--hidden {\n display: none;\n }\n \n .bb-feedback-button-icon {\n width: 48px;\n height: 48px;\n border-radius: 48px;\n background-color: #485bff;\n transition: box-shadow, transform 0.2s ease-in-out;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n position: relative;\n }\n \n .bb-feedback-button-classic {\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n top: 50%;\n right: 0px;\n position: fixed;\n transform: rotate(-90deg) translate(50%, -50%);\n transform-origin: 100% 50%;\n padding: 9px 20px;\n text-align: center;\n background-color: #485bff;\n border-top-left-radius: 8px;\n border-top-right-radius: 8px;\n font-family: sans-serif;\n font-size: 16px;\n color: #fff;\n box-shadow: 0px 0px 14px 0px rgba(0, 0, 0, 0.25);\n }\n\n [dir=rtl].bb-feedback-button .bb-feedback-button-classic {\n top: 50%;\n left: 0px;\n right: auto;\n transform: rotate(90deg) translate(-50%, -100%);\n transform-origin: 0% 0%;\n }\n \n .bb-feedback-button-classic--left {\n top: 50%;\n left: 0px;\n right: auto;\n transform: rotate(90deg) translate(-50%, -100%);\n transform-origin: 0% 0%;\n }\n\n [dir=rtl].bb-feedback-button .bb-feedback-button-classic--left {\n top: 50%;\n right: 0px;\n left: auto;\n transform: rotate(-90deg) translate(50%, -50%);\n transform-origin: 100% 50%;\n }\n \n .bb-feedback-button-classic--bottom {\n top: auto;\n bottom: 0px;\n transform: none;\n right: ').concat(i,"px;\n left: auto;\n }\n \n [dir=rtl].bb-feedback-button .bb-feedback-button-classic--bottom {\n top: auto;\n bottom: 0px;\n transform: none;\n left: ").concat(i,"px;\n right: auto;\n }\n\n .bb-feedback-button--classic-button-style {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n \n .bb-feedback-button--open.bb-feedback-button--classic-button-style {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: bbFadeOutRight;\n }\n \n .bb-feedback-button .bb-logo-logo {\n position: absolute;\n width: 30px;\n height: 30px;\n top: 9px;\n left: 9px;\n object-fit: contain;\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-name: bbZoomIn;\n }\n \n .bb-feedback-button .bb-logo-arrowdown {\n position: absolute;\n width: 14px;\n height: 14px;\n top: 17px;\n left: 17px;\n object-fit: contain;\n animation-duration: 0.3s;\n animation-fill-mode: both;\n }\n \n .bb-feedback-button .bb-logo-arrowdown {\n animation-name: bbZoomOut;\n }\n \n .bb-feedback-button--open .bb-logo-arrowdown {\n animation-name: bbZoomIn;\n }\n \n .bb-feedback-button--open .bb-logo-logo {\n animation-name: bbZoomOut;\n }\n \n .bb-feedback-button-icon:hover {\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.25), 0px 0px 20px rgba(0, 0, 0, 0.2);\n transform: scale(1.1);\n }\n \n .bb-feedback-button--open .bb-feedback-button-text {\n animation-name: bbFadeOutDown;\n }\n \n .bb-feedback-button--open .bb-feedback-button-icon {\n display: flex;\n }\n \n .bb-capture-svg {\n position: fixed;\n z-index: ").concat(2147483614,";\n top: 0px;\n left: 0px;\n right: 0px;\n width: 100%;\n height: 100%;\n padding: 0px;\n margin: 0px;\n cursor: crosshair;\n }\n\n .bb-capture-svg--preview {\n cursor: auto !important;\n }\n \n .bb-rec-on-circle {\n animation-name: bbRecIconFade;\n animation-duration: 2s;\n animation-iteration-count: infinite;\n animation-direction: alternate;\n }\n \n .bb-rec-on-cont {\n animation-name: bbRecIconContFade;\n animation-duration: 2s;\n animation-iteration-count: infinite;\n animation-direction: alternate;\n }\n \n .bb-capture-editor-drag-info {\n position: fixed;\n top: -200px;\n left: 0px;\n z-index: ").concat(2147483616,";\n transition: opacity 0.3s ease-in-out;\n }\n \n .bb-capture-editor-drag-info svg {\n width: 24px;\n height: 24px;\n }\n \n .bb-capture-editor-borderlayer {\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n border: 4px solid ").concat(e,";\n cursor: crosshair;\n z-index: ").concat(2147483610,";\n box-sizing: border-box;\n pointer-events: none;\n }\n \n .bb-capture-editor-notrecording .bb-capture-editor-borderlayer {\n background-color: rgba(0, 0, 0, 0.8);\n }\n\n .bb-capture-editor-recording .bb-capture-editor-borderlayer {\n border: 4px solid #eb144c !important;\n }\n \n .bb-capture-editor-recording .bb-capture-dismiss {\n display: none;\n }\n \n .bb-capture-editor-item-inactive {\n opacity: 0.3;\n cursor: not-allowed !important;\n }\n \n .bb-capture-editor-notrecording .bb-capture-toolbar-drawingitem {\n opacity: 0.3;\n cursor: not-allowed !important;\n }\n \n .bb-capture-editor-notrecording .bb-capture-editor-drag-info {\n display: none;\n }\n \n .bb-capture-editor-notrecording .bb-capture-svg {\n pointer-events: none !important;\n }\n \n .bb-capture-toolbar {\n position: fixed;\n top: 20px;\n left: 50%;\n transform: translateX(-50%);\n z-index: ").concat(2147483618,";\n background-color: #fff;\n padding: 5px;\n display: flex;\n align-items: center;\n border-radius: 8px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n transition: opacity 0.3s ease-in-out;\n }\n \n .bb-capture-dismiss {\n position: fixed;\n top: 0px;\n right: 0px;\n z-index: ").concat(2147483618,";\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n width: 36px;\n height: 36px;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: ").concat(e,";\n border-bottom-left-radius: ").concat(C,"px;\n }\n\n [dir=rtl] .bb-capture-dismiss {\n top: 0px;\n left: 0px;\n right: auto;\n border-bottom-left-radius: 0px !important;\n border-bottom-right-radius: ").concat(C,"px;\n }\n \n .bb-capture-dismiss svg path {\n fill: ").concat(c,';\n }\n \n .bb-capture-dismiss svg {\n width: 20px;\n height: 20px;\n object-fit: contain;\n }\n \n .bb-capture-button-next {\n font-family: sans-serif;\n box-sizing: border-box;\n font-weight: 600;\n text-align: center;\n width: auto;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n margin: 0px;\n line-height: 36px;\n padding: 0px 12px;\n font-size: 15px;\n margin-left: 12px;\n }\n\n [dir=rtl].bb-capture-editor .bb-capture-button-next {\n margin-left: auto;\n margin-right: 12px;\n }\n \n .bb-capture-toolbar-item-spacer {\n width: 1px;\n height: 38px;\n min-width: 1px;\n margin: 0px 5px;\n }\n \n .bb-capture-toolbar-item {\n width: 42px;\n height: 38px;\n min-width: 42px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n position: relative;\n margin-right: 5px;\n }\n\n .drag-handle-item {\n cursor: grab !important;\n width: 34px;\n min-width: 34px;\n }\n\n .drag-handle-item svg {\n width: 18px !important;\n height: 18px !important;\n }\n \n .bb-capture-toolbar-item svg {\n width: 23px;\n height: 23px;\n object-fit: contain;\n }\n \n .bb-capture-toolbar-item-selectedcolor {\n border-radius: 100%;\n width: 20px;\n height: 20px;\n background-color: #db4035;\n }\n \n .bb-capture-toolbar-item[data-type="undo"] svg {\n width: 18px;\n height: 18px;\n }\n \n .bb-capture-toolbar-item[data-active="true"] {\n position: relative;\n }\n \n .bb-capture-preview {\n display: none;\n background-color: rgba(0, 0, 0, 0.6);\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n justify-content: center;\n align-items: center;\n z-index: ').concat(2147483620,";\n }\n \n .bb-capture-preview-inner {\n background-color: #fff;\n padding: 0px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n border-radius: 8px;\n flex-direction: column;\n max-width: 640px;\n width: 100%;\n margin: 20px;\n }\n \n .bb-capture-preview-inner video {\n border-radius: 8px 8px 0px 0px;\n display: block;\n border: 0px;\n outline: none;\n width: 100%;\n max-height: 60vh;\n }\n \n .bb-capture-preview-buttons {\n display: flex;\n justify-content: space-between;\n padding: 14px;\n }\n \n .bb-capture-preview-retrybutton {\n font-family: sans-serif;\n border-radius: 21px;\n box-sizing: border-box;\n padding: 12px 26px;\n font-size: 16px;\n line-height: 19px;\n font-weight: 600;\n text-align: center;\n margin-top: 0px;\n margin-bottom: 0px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-preview-sendbutton {\n font-family: sans-serif;\n border-radius: 21px;\n box-sizing: border-box;\n padding: 12px 26px;\n font-size: 16px;\n line-height: 19px;\n font-weight: 600;\n text-align: center;\n margin-top: 0px;\n margin-bottom: 0px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-preview-retrybutton:hover,\n .bb-capture-preview-sendbutton:hover {\n opacity: 0.9;\n }\n \n .bb-capture-toolbar-item-recording {\n margin-right: 0px;\n }\n \n .bb-capture-toolbar-item-recording svg {\n width: 33px;\n height: 33px;\n }\n \n .bb-capture-toolbar-item-colorpicker {\n position: fixed;\n top: 70px;\n left: 50%;\n transform: translateX(-50%);\n z-index: ").concat(2147483618,';\n background-color: #fff;\n display: none;\n padding: 10px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n border-radius: 8px;\n }\n \n .bb-capture-toolbar-item-color {\n width: 20px;\n height: 20px;\n border-radius: 100%;\n margin-right: 12px;\n box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.15);\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-toolbar-item-color:hover {\n box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.25);\n }\n \n .bb-capture-toolbar-item-color:last-of-type {\n margin-right: 0px;\n }\n \n [dir=rtl].bb-capture-editor .bb-capture-toolbar-item-color {\n margin-right: auto;\n margin-left: 12px;\n }\n \n [dir=rtl].bb-capture-editor .bb-capture-toolbar-item-color:last-of-type {\n margin-right: auto;\n margin-left: 0px;\n }\n \n .bb-capture-toolbar-item-recording[data-active="true"] svg:first-of-type {\n display: none;\n }\n \n .bb-capture-toolbar-item-recording[data-active="true"] svg:nth-of-type(2) {\n display: block;\n }\n \n .bb-capture-toolbar-item-recording[data-active="false"] svg:first-of-type {\n display: block;\n }\n \n .bb-capture-toolbar-item-recording[data-active="false"] svg:nth-of-type(2) {\n display: none;\n }\n \n .bb-capture-toolbar-item--active {\n background-color: #eee;\n }\n \n .bb-capture-toolbar-item:hover svg {\n opacity: 1;\n }\n \n .bb-capture-toolbar-item--active {\n background-color: #f8f8f8;\n }\n \n .bb-capture-toolbar-item--active svg {\n opacity: 1;\n }\n \n .bb-capture-toolbar-item--inactivecross::before {\n content: "";\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n height: 3px;\n width: 26px;\n margin: auto;\n border-radius: 4px;\n background-color: #e80000;\n transform: rotate(45deg);\n }\n \n .bb-capture-toolbar-item--inactivecross svg {\n fill: #eee;\n }\n \n .bb-capture-toolbar-item-timer {\n text-align: left;\n line-height: 32px;\n font-size: 14px;\n font-family: sans-serif;\n margin: 5px;\n min-width: 40px;\n display: none;\n }\n \n .bb-capture-toolbar-item .bb-tooltip {\n background-color: #555;\n color: #fff;\n visibility: hidden;\n font-size: 14px;\n font-family: sans-serif;\n text-align: center;\n padding: 5px 10px;\n position: absolute;\n z-index: 1;\n top: 45px;\n left: 0px;\n transform: translateX(calc(-50% + 21px));\n opacity: 0;\n transition: opacity 0.3s;\n white-space: nowrap;\n }\n \n .bb-capture-toolbar-item .bb-tooltip::after {\n content: "";\n position: absolute;\n bottom: 100%;\n left: 50%;\n margin-left: -5px;\n border-width: 5px;\n border-style: solid;\n transform: rotate(180deg);\n border-color: #555 transparent transparent transparent;\n }\n \n .bb-capture-toolbar-item:hover .bb-tooltip {\n visibility: visible;\n opacity: 1;\n }\n \n .bb-capture-options {\n display: none;\n }\n \n .bb-capture-options--active {\n display: flex;\n }\n\n @keyframes bbFadeOutRight {\n from {\n opacity: 1;\n }\n \n to {\n opacity: 0;\n }\n }\n \n @keyframes bbFadeOutDown {\n from {\n opacity: 1;\n }\n \n to {\n opacity: 0;\n transform: translate3d(0, 100%, 0);\n }\n }\n \n @keyframes bbFadeInOpacity {\n from {\n opacity: 0;\n }\n \n to {\n opacity: 1;\n }\n }\n \n @keyframes bbZoomOut {\n from {\n opacity: 1;\n }\n \n 50% {\n opacity: 0;\n transform: scale3d(0.3, 0.3, 0.3);\n }\n \n to {\n opacity: 0;\n }\n }\n \n @keyframes bbZoomIn {\n from {\n opacity: 0;\n transform: scale3d(0.3, 0.3, 0.3);\n }\n \n 50% {\n opacity: 1;\n }\n }\n \n @keyframes bbRecIconContFade {\n 0% {\n fill: #b10802;\n }\n 50% {\n fill: #ff0000;\n }\n 100% {\n fill: #b10802;\n }\n } \n .bb-capture-preview-retrybutton {\n color: ').concat(h,";\n border-radius: ").concat(w,"px;\n background-color: ").concat(y,";\n }\n .bb-capture-preview-retrybutton:hover {\n background-color: ").concat(b,";\n }\n @keyframes bb-suc-fill {\n 100% {\n box-shadow: inset 0px 0px 0px 30px ").concat(e,";\n }\n }\n .bb-capture-toolbar-item-spacer {\n background-color: ").concat(y,";\n }\n .bb-tooltip {\n border-radius: ").concat(S,"px;\n }\n @keyframes bbRecIconFade {\n 0% {\n fill: transparent;\n }\n 50% {\n fill: ").concat(b,";\n }\n 100% {\n fill: transparent;\n }\n }\n .bb-capture-preview-sendbutton {\n color: ").concat(c,";\n background-color: ").concat(e,";\n border-radius: ").concat(w,"px;\n }\n .bb-capture-button-next {\n color: ").concat(c,";\n background-color: ").concat(e,";\n border-radius: ").concat(C,"px;\n }\n .bb-capture-preview-inner {\n background-color: ").concat(r,";\n border-radius: ").concat(S,"px;\n }\n .bb-capture-toolbar-item-timer {\n color: ").concat(v,";\n }\n .bb-svg-path {\n fill: ").concat(h,";\n }\n .bb-capture-toolbar-item {\n border-radius: ").concat(S,"px;\n }\n .bb-capture-toolbar {\n background-color: ").concat(r,";\n border-radius: ").concat(S,"px;\n }\n .bb-capture-toolbar-item-colorpicker {\n background-color: ").concat(r,";\n }\n .bb-capture-toolbar-item--active {\n background-color: ").concat(y,";\n }\n .bb-feedback-button-classic {\n border-top-left-radius: ").concat(S,"px;\n border-top-right-radius: ").concat(S,"px;\n }\n .bb-logo-logo--default path {\n fill: ").concat(p,";\n }\n .bb-logo-arrowdown {\n fill: ").concat(p,";\n }\n .bb-feedback-button-icon {\n background-color: ").concat(n,";\n }\n .bb-feedback-button-classic {\n background-color: ").concat(n,";\n color: ").concat(p,";\n }\n\n @media only screen and (max-width: 450px) {\n [dir=rtl].gleap-frame-container,\n .gleap-frame-container {\n left: 0px;\n right: 0px;\n width: 100vw;\n max-width: 100vw;\n min-height: 100vh;\n max-height: 100vh;\n min-height: 100dvh !important;\n max-height: 100dvh !important;\n top: 0px;\n bottom: 0px;\n border-radius: 0px;\n animation-name: gleapFadeInUpMobile;\n }\n\n .gleap-frame-container-inner {\n width: 100vw;\n height: 100%;\n }\n\n .gleap-frame-container:not(.gleap-frame-container--survey):not(.gleap-frame-container--survey-full) .gleap-frame-container-inner {\n max-height: calc(var(--glvh, 1vh) * 100) !important;\n }\n\n .gleap-frame-container--survey {\n height: auto !important;\n top: initial !important;\n bottom: 0px !important;\n min-height: initial !important;\n }\n\n .gleap-frame-container--survey .gleap-frame-container-inner {\n height: 100vh !important;\n }\n\n .bb-tooltip {\n display: none !important;\n }\n \n .bb-capture-toolbar-item-colorpicker {\n top: 75px;\n }\n \n .bb-capture-button-next {\n margin-left: auto;\n }\n \n .bb-capture-dismiss {\n display: none;\n }\n \n .bb-capture-toolbar {\n top: 15px;\n right: 15px;\n left: 15px;\n width: auto;\n transform: none;\n }\n\n .bb-capture-editor-drag-info {\n display: none;\n }\n \n .bb-capture-editor-borderlayer {\n border-width: 4px;\n }\n }\n \n @media print {\n .bb-feedback-button {\n display: none !important;\n }\n \n .gleap-frame-container {\n display: none !important;\n }\n }\n\n .gleap-tour-sender {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n margin-bottom: 10px;\n }\n\n .gleap-tour-sender-image {\n width: 32px;\n height: 32px;\n border-radius: 32px;\n margin-right: 10px;\n background-size: cover;\n background-repeat: no-repeat;\n }\n\n .gleap-tour-popover.gleap-tour-popover-post {\n min-width: 550px;\n max-width: 550px;\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-tour-popover.gleap-tour-popover-post {\n min-width: calc(100vw - 40px);\n max-width: calc(100vw - 40px);\n }\n }\n\n .gleap-tour-message,\n .gleap-tour-message p,\n .gleap-tour-message ul {\n color: ").concat(h,";\n }\n\n .gleap-tour-message h2 {\n font-weight: 600;\n font-size: 22px;\n }\n\n .gleap-tour-message h3 {\n font-weight: 600;\n font-size: 18px;\n }\n\n .gleap-tour-message p {\n line-height: 1.3;\n margin-bottom: 10px !important;\n margin-top: 10px !important;\n }\n\n .gleap-tour-message ul {\n line-height: 1.3;\n padding-left: 20px;\n margin-top: 10px !important;\n margin-bottom: 10px !important;\n }\n\n .gleap-tour-message {\n max-height: calc(80vh - 100px) !important;\n overflow-y: auto;\n min-width: 270px;\n }\n\n .gleap-tour-message::-webkit-scrollbar {\n width: 5px;\n }\n\n .gleap-tour-message::-webkit-scrollbar-track {\n border-radius: 0px;\n }\n \n .gleap-tour-message::-webkit-scrollbar-thumb {\n background: ").concat(b,"; \n border-radius: 5px;\n }\n\n .gleap-tour-message::-webkit-scrollbar-thumb:hover {\n background: ").concat(v,";\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-tour-message {\n min-width: auto !important;\n }\n }\n\n .gleap-tour-message iframe {\n width: 100%;\n height: 300px;\n margin-top: 10px;\n margin-bottom: 10px;\n border: none;\n outline: none;\n display: block;\n }\n\n .gleap-tour-sender-name {\n font-size: 15px;\n }\n\n .gleap-tour-video {\n width: 100%;\n max-width: 100%;\n }\n\n .gleap-tour-video-svg--fullscreen {\n width: 100% !important;\n height: 100% !important;\n top: 0px !important;\n left: 0px !important;\n right: 0px !important;\n bottom: 0px !important;\n }\n\n .gleap-tour-video--playing .gleap-tour-video-playpause {\n opacity: 0;\n }\n \n .gleap-tour-video--playing:hover .gleap-tour-video-playpause {\n opacity: 1;\n }\n\n .gleap-tour-popover-video-pointer {\n padding: 0px !important;\n border-radius: 8px;\n position: relative;\n background-color: transparent !important;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-footer {\n position: absolute;\n top: 0px;\n left: 20px;\n right: 20px;\n opacity: 0;\n transition: opacity 200ms ease-in-out;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-footer button {\n padding: 5px 12px;\n }\n\n .gleap-tour-popover-video-pointer.gleap-tour-popover-can-close .gleap-tour-popover-footer {\n right: 40px !important;\n }\n\n .gleap-tour-popover-video-pointer:hover .gleap-tour-popover-footer {\n opacity: 1;\n }\n\n .gleap-tour-popover-pointer.gleap-tour-popover-no-sender .gleap-tour-message {\n padding-right: 20px;\n }\n\n .gleap-tour-video video {\n width: 100%;\n max-width: 100%;\n height: auto;\n border: none;\n outline: none;\n display: block;\n border-radius: 8px;\n }\n\n .gleap-admin-collapse-ui {\n z-index: ").concat(2147483635,";\n cursor: pointer;\n position: fixed;\n bottom: 75px;\n right: 20px;\n width: 32px;\n height: 32px;\n border-radius: 100%;\n background-color: #fff;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: rgba(0, 0, 0, 0.16) 0px 10px 36px 0px, rgba(0, 0, 0, 0.06) 0px 0px 0px 1px;\n }\n\n .gleap-admin-collapse-ui svg {\n width: 20px;\n height: 14px;\n fill: #000 !important;\n }\n\n .gleap-admin-collapse-ui-active {\n bottom: 20px !important;\n }\n\n .gleap-admin-collapse-ui-active svg {\n transform: rotate(180deg);\n }\n\n .gleap-admin-frame-container-active {\n display: none !important;\n }\n\n .gleap-admin-frame-container {\n position: fixed;\n bottom: 0px;\n left: 0px;\n right: 0px;\n width: 100vw;\n z-index: ").concat(2147483640,";\n }\n\n .gleap-admin-frame {\n width: 100%;\n height: 100% !important;\n border: none;\n outline: none;\n display: block;\n }\n \n .gleap-tour-message .linktype-link {\n display: inline-block !important;\n background-color: transparent !important;\n color: ").concat(n," !important;\n }\n\n .gleap-tooltip .linktype-button,\n .gleap-tour-message .linktype-button {\n display: inline-block !important;\n border-radius: 5px;\n box-sizing: border-box;\n padding: 10px 20px !important;\n text-decoration: none !important;\n background-color: ").concat(n," !important;\n color: ").concat(p," !important;\n }\n\n .gleap-tour-message img {\n width: 100%;\n max-width: 100%;\n min-height: 260px;\n height: auto;\n margin-top: 10px;\n margin-bottom: 10px;\n object-fit: cover;\n }\n\n .gleap-tour-active .gleap-tour-overlay {\n pointer-events: none;\n }\n \n .gleap-tour-active * {\n pointer-events: none;\n }\n \n .gleap-tour-active .gleap-tour-active-element,\n .gleap-tour-active .gleap-tour-active-element *,\n .gleap-tour-popover,\n .gleap-tour-popover * {\n pointer-events: auto;\n }\n \n @keyframes animate-fade-in {\n 0% {\n opacity: 0;\n }\n \n to {\n opacity: 1;\n }\n }\n \n .gleap-tour-fade .gleap-tour-overlay {\n animation: animate-fade-in 200ms ease-in-out;\n }\n \n .gleap-tour-fade .gleap-tour-popover {\n animation: animate-fade-in 200ms;\n }\n\n .gleap-tour-video-playpause {\n position: absolute;\n bottom: 8px;\n left: 8px;\n width: 32px;\n height: 32px;\n padding: 4px;\n background-color: rgba(0,0,0,0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border-radius: 8px;\n transition: opacity 200ms ease-in-out;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-arrow {\n display: none !important;\n }\n\n .gleap-tour-video-playpause svg {\n width: 34px;\n height: auto;\n fill: #fff;\n }\n \n /* Popover styles */\n .gleap-tour-popover {\n all: unset;\n box-sizing: border-box;\n color: #2d2d2d;\n margin: 0;\n padding: 15px;\n border-radius: ").concat(S,'px;\n min-width: 250px;\n max-width: 300px;\n box-shadow: 0 1px 10px #0006;\n z-index: 1000000000;\n position: fixed;\n top: 0;\n right: 0;\n background-color: #fff;\n }\n \n .gleap-tour-popover * {\n font-family: "Helvetica Neue", Inter, ui-sans-serif, "Apple Color Emoji", Helvetica, Arial, sans-serif;\n }\n \n .gleap-tour-popover-title {\n font: 19px / normal sans-serif;\n font-weight: 700;\n display: block;\n position: relative;\n line-height: 1.5;\n zoom: 1;\n margin: 0;\n }\n \n .gleap-tour-popover-close-btn {\n all: unset;\n position: absolute;\n top: 5px;\n right: 5px;\n width: 32px;\n height: 32px;\n cursor: pointer;\n font-size: 30px;\n font-weight: 500;\n line-height: 32px;\n color: #d2d2d2;\n z-index: 1;\n text-align: center;\n transition: color;\n transition-duration: 200ms;\n }\n \n .gleap-tour-popover-close-btn:hover,\n .gleap-tour-popover-close-btn:focus {\n color: #2d2d2d;\n }\n \n .gleap-tour-popover-title[style*="block"] + .gleap-tour-popover-description {\n margin-top: 5px;\n }\n \n .gleap-tour-popover-description {\n margin-bottom: 0;\n font: 15px / normal sans-serif;\n line-height: 1.5;\n font-weight: 400;\n zoom: 1;\n }\n \n .gleap-tour-popover-footer {\n margin-top: 15px;\n text-align: right;\n zoom: 1;\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n \n .gleap-tour-popover-progress-text {\n font-size: 13px;\n font-weight: 400;\n color: #727272;\n zoom: 1;\n }\n \n .gleap-tour-popover-footer button {\n background-color: ').concat(e,";\n color: ").concat(c,";\n border-radius: ").concat(C,"px;\n box-sizing: border-box;\n padding: 10px 20px;\n font-size: 14px;\n font-weight: bold;\n line-height: 21px;\n border: none;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: none !important;\n outline: none !important;\n }\n\n .gleap-tour-popover-prev-btn {\n color: ").concat(h," !important;\n background-color: ").concat(y," !important;\n margin-right: 3px;\n }\n\n .gleap-tour-popover-prev-btn:hover {\n background-color: ").concat(e,"22 !important;\n color: ").concat(e,' !important;\n }\n \n .gleap-tour-popover-footer .gleap-tour-popover-btn-disabled {\n opacity: 0.5;\n pointer-events: none;\n }\n \n /* Disable the scrolling of parent element if it has an active element*/\n :not(body):has(> .gleap-tour-active-element) {\n overflow: hidden !important;\n }\n \n .gleap-tour-no-interaction, .gleap-tour-no-interaction * {\n pointer-events: none !important;\n }\n \n .gleap-tour-popover-navigation-btns {\n display: flex;\n flex-grow: 1;\n justify-content: flex-end;\n }\n \n .gleap-tour-popover-navigation-btns button + button {\n margin-left: 4px;\n }\n \n .gleap-tour-popover-arrow {\n content: "";\n position: absolute;\n border: 5px solid #fff;\n }\n \n .gleap-tour-popover-arrow-side-over {\n display: none;\n }\n \n /** Popover Arrow Sides **/\n .gleap-tour-popover-arrow-side-left {\n left: 100%;\n border-right-color: transparent;\n border-bottom-color: transparent;\n border-top-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-right {\n right: 100%;\n border-left-color: transparent;\n border-bottom-color: transparent;\n border-top-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-top {\n top: 100%;\n border-right-color: transparent;\n border-bottom-color: transparent;\n border-left-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-bottom {\n bottom: 100%;\n border-left-color: transparent;\n border-top-color: transparent;\n border-right-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-center {\n display: none;\n }\n \n /* Left/Start + Right/Start */\n .gleap-tour-popover-arrow-side-left.gleap-tour-popover-arrow-align-start,\n .gleap-tour-popover-arrow-side-right.gleap-tour-popover-arrow-align-start {\n top: 15px;\n }\n \n /* Top/Start + Bottom/Start */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-start,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-start {\n left: 15px;\n }\n \n /* End/Left + End/Right */\n .gleap-tour-popover-arrow-align-end.gleap-tour-popover-arrow-side-left,\n .gleap-tour-popover-arrow-align-end.gleap-tour-popover-arrow-side-right {\n bottom: 15px;\n }\n \n /* Top/End + Bottom/End */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-end,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-end {\n right: 15px;\n }\n \n /* Left/Center + Right/Center */\n .gleap-tour-popover-arrow-side-left.gleap-tour-popover-arrow-align-center,\n .gleap-tour-popover-arrow-side-right.gleap-tour-popover-arrow-align-center {\n top: 50%;\n margin-top: -5px;\n }\n \n /* Top/Center + Bottom/Center */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-center,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-center {\n left: 50%;\n margin-left: -5px;\n }\n \n /* No arrow */\n .gleap-tour-popover-arrow-none {\n display: none;\n } \n\n /* Modal styles */\n .gleap-modal-wrapper {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: ').concat(2147483640,";\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .gleap-modal-backdrop {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.5);\n z-index: ").concat(2147483641,";\n }\n\n .gleap-modal {\n position: relative;\n width: 90%;\n max-width: 600px;\n max-height: 90vh;\n z-index: ").concat(2147483700,";\n background-color: ").concat(r,";\n border-radius: ").concat(k,"px;\n overflow: hidden;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-name: gleapFadeInUp;\n }\n\n .gleap-modal-frame {\n width: 100%;\n border: none;\n display: block;\n outline: none;\n }\n\n body.gleap-modal-open {\n overflow: hidden;\n }\n\n @keyframes gleapFadeInUp {\n from {\n opacity: 0;\n transform: translate3d(0, 20px, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n "),T=document.querySelector(".gleap-styles");T&&T.remove();var O=document.createElement("style");O.innerHTML=E,O.className="gleap-styles",document.body.appendChild(O)}(e,t,n,r,o,i,s,l)}))}},{key:"sendSilentCrashReport",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"MEDIUM",o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{screenshot:!0,replays:!0,attachments:!0};return e.sendSilentCrashReportWithFormData({description:t},n,o)}},{key:"sendSilentCrashReportWithFormData",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"MEDIUM",o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{screenshot:!0,replays:!0,attachments:!0};if(!this.silentCrashReportSent){this.silentCrashReportSent=!0,setTimeout((function(){t.silentCrashReportSent=!1}),1e4);var r=o?k(o):{},i=et.getInstance();if(i.ready){var a=e||{};i.session.email&&(a.reportedBy=i.session.email),new Wt("CRASH",n,a,!0,r).sendFeedback().then((function(){})).catch((function(e){}))}}}},{key:"showSurvey",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"survey";e.startFeedbackFlowWithOptions(t,{hideBackButton:!0,format:n},!0)}},{key:"startClassicForm",value:function(t,n){e.startFeedbackFlowWithOptions(t,{hideBackButton:!n})}},{key:"startFeedbackFlow",value:function(t,n){e.startFeedbackFlowWithOptions(t,{hideBackButton:!n})}},{key:"startFeedbackFlowWithOptions",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=n.autostartDrawing,i=n.hideBackButton,a=n.format;if(et.getInstance().ready){e.getInstance().setGlobalDataItem("snapshotPosition",{x:window.scrollX,y:window.scrollY});var s="start-feedbackflow";o&&(s="start-survey"),Zt.getInstance().setAppMode(o?a:"widget"),Zt.getInstance().sendMessage({name:s,data:{flow:t,hideBackButton:i,format:a}},!0),r?Zt.getInstance().showDrawingScreen("screenshot"):Zt.getInstance().showWidget()}}},{key:"openConversations",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-conversations",data:{hideBackButton:!e}},!0),Zt.getInstance().showWidget()}},{key:"openConversation",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e&&(Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-conversation",data:{shareToken:e,hideBackButton:!t}},!0),Zt.getInstance().showWidget())}},{key:"startConversation",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];e.startBot("",t)}},{key:"startBot",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"start-bot",data:{botId:e||"",hideBackButton:!t}},!0),Zt.getInstance().showWidget()}},{key:"openHelpCenterCollection",value:function(e){e&&(Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-help-collection",data:{collectionId:e}},!0),Zt.getInstance().showWidget())}},{key:"openHelpCenterArticle",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e&&(Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-help-article",data:{articleId:e,hideBackButton:!t}},!0),Zt.getInstance().showWidget())}},{key:"openHelpCenter",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-helpcenter",data:{hideBackButton:!e}},!0),Zt.getInstance().showWidget()}},{key:"searchHelpCenter",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e&&(Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-helpcenter-search",data:{term:e,hideBackButton:!t}},!0),Zt.getInstance().showWidget())}},{key:"openNewsArticle",value:function(e){e&&(Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-news-article",data:{id:e}},!0),Zt.getInstance().showWidget())}},{key:"openChecklists",value:function(){Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-checklists",data:{}},!0),Zt.getInstance().showWidget()}},{key:"startChecklist",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;return!!e&&(Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"start-checklist",data:jm({outboundId:e,hideBackButton:!t},n?{sharedKey:n}:{})},!0),Zt.getInstance().showWidget(),!0)}},{key:"openChecklist",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e&&(Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-checklist",data:{id:e,hideBackButton:!t}},!0),Zt.getInstance().showWidget())}},{key:"getChecklistData",value:function(e,t){if(!e)return Promise.reject(new Error("outboundId is required"));var n=D.getInstance();return n.validateChecklist(e,t).then((function(e){return n.fetchChecklist(e)}))}},{key:"openNews",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-news",data:{hideBackButton:!e}},!0),Zt.getInstance().showWidget()}},{key:"openFeatureRequests",value:function(){Zt.getInstance().setAppMode("widget"),Zt.getInstance().sendMessage({name:"open-feature-requests",data:{}},!0),Zt.getInstance().showWidget()}},{key:"startProductTour",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this;et.getInstance().startProductTourConfig(e).then((function(o){var r;!t||null==o||!o.startURL||null!==(r=window)&&void 0!==r&&null!==(r=r.location)&&void 0!==r&&null!==(r=r.href)&&void 0!==r&&r.includes(null==o?void 0:o.baseURL)?n.startProductTourWithConfig(e,o,!0):window.location.href="".concat(o.startURL,"?gleap_tour=").concat(e,"&gleap_tour_delay=1")})).catch((function(e){}))}},{key:"checkForUncompletedTour",value:function(){var e=wm.getInstance().loadUncompletedTour();e&&wm.getInstance().startWithConfig(e.tourId,e.tourData,500)}},{key:"startProductTourWithConfig",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];wm.getInstance().startWithConfig(e,t,0,n)}},{key:"showBanner",value:function(e){try{qh.getInstance().showBanner(e)}catch(t){}}},{key:"showModal",value:function(e){try{Kh.getInstance().showModal(e)}catch(t){}}},{key:"showNotification",value:function(e){jh.getInstance().showNotification(e)}}],n&&Dm(t.prototype,n),o&&Dm(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();if(Fm(_m,"invoked",!0),Fm(_m,"silentCrashReportSent",!1),Fm(_m,"instance",void 0),"undefined"!=typeof window){var Um=window.GleapActions;if(Um&&Um.length>0)for(var Hm=0;Hm {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","import {\n GleapFrameManager,\n GleapConfigManager,\n GleapNotificationManager,\n GleapTranslationManager,\n GleapSession,\n} from \"./Gleap\";\nimport { loadIcon } from \"./UI\";\n\nexport default class GleapFeedbackButtonManager {\n feedbackButton = null;\n injectedFeedbackButton = false;\n buttonHidden = null;\n lastButtonIcon = null;\n\n // Feedback button types\n static FEEDBACK_BUTTON_BOTTOM_RIGHT = \"BOTTOM_RIGHT\";\n static FEEDBACK_BUTTON_BOTTOM_LEFT = \"BOTTOM_LEFT\";\n static FEEDBACK_BUTTON_CLASSIC = \"BUTTON_CLASSIC\";\n static FEEDBACK_BUTTON_CLASSIC_LEFT = \"BUTTON_CLASSIC_LEFT\";\n static FEEDBACK_BUTTON_CLASSIC_BOTTOM = \"BUTTON_CLASSIC_BOTTOM\";\n static FEEDBACK_BUTTON_NONE = \"BUTTON_NONE\";\n\n // GleapFeedbackButtonManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapFeedbackButtonManager();\n }\n return this.instance;\n }\n\n destroy() {\n if (this.feedbackButton) {\n this.feedbackButton.remove();\n this.feedbackButton = null;\n }\n\n this.buttonHidden = null;\n this.lastButtonIcon = null;\n this.injectedFeedbackButton = false;\n this.instance = null;\n }\n\n /**\n * Toggles the feedback button visibility.\n * @param {*} show\n * @returns\n */\n toggleFeedbackButton(show) {\n this.buttonHidden = !show;\n\n GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n GleapNotificationManager.getInstance().updateContainerStyle();\n }\n\n feedbackButtonPressed() {\n var frameManager = GleapFrameManager.getInstance();\n if (frameManager.isOpened()) {\n frameManager.hideWidget();\n } else {\n frameManager.setAppMode(\"widget\");\n frameManager.showWidget();\n }\n }\n\n /**\n * Injects the feedback button into the current DOM.\n */\n injectFeedbackButton() {\n if (this.injectedFeedbackButton) {\n return;\n }\n this.injectedFeedbackButton = true;\n\n var elem = document.createElement(\"div\");\n elem.addEventListener(\"click\", () => {\n this.feedbackButtonPressed();\n });\n document.body.appendChild(elem);\n this.feedbackButton = elem;\n\n this.updateFeedbackButtonState();\n }\n\n updateNotificationBadge(count) {\n const notificationBadge = document.querySelector(\".bb-notification-bubble\");\n if (!notificationBadge) {\n return;\n }\n\n const notificationHiddenClass = \"bb-notification-bubble--hidden\";\n if (count > 0 && !GleapFrameManager.getInstance().isOpened()) {\n notificationBadge.classList.remove(notificationHiddenClass);\n notificationBadge.innerText = count;\n } else {\n notificationBadge.classList.add(notificationHiddenClass);\n }\n }\n\n refresh() {\n const feedbackButton = document.querySelector(\".bb-feedback-button\");\n if (feedbackButton) {\n this.updateFeedbackButtonText();\n this.updateFeedbackButtonState();\n } else {\n this.injectedFeedbackButton = false;\n this.feedbackButton = null;\n this.buttonHidden = null;\n this.lastButtonIcon = null;\n this.injectFeedbackButton();\n }\n }\n\n updateFeedbackButtonText() {\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n\n if (\n !(\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT\n )\n ) {\n return;\n }\n\n const feedbackButton = document.querySelector(\n \".bb-feedback-button-classic\"\n );\n if (!feedbackButton) {\n return;\n }\n\n feedbackButton.innerText = flowConfig.widgetButtonText;\n }\n\n /**\n * Updates the feedback button state\n * @returns\n */\n updateFeedbackButtonState() {\n if (this.feedbackButton === null) {\n return;\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n\n var buttonIcon = \"\";\n if (flowConfig.buttonLogo) {\n buttonIcon = `\"Feedback`;\n } else {\n buttonIcon = loadIcon(\"button\", \"#fff\");\n }\n\n this.feedbackButton.className = \"bb-feedback-button gleap-font gl-block\";\n this.feedbackButton.setAttribute(\n \"dir\",\n GleapTranslationManager.getInstance().isRTLLayout ? \"rtl\" : \"ltr\"\n );\n\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT\n ) {\n this.feedbackButton.classList.add(\n \"bb-feedback-button--classic-button-style\"\n );\n\n this.feedbackButton.innerHTML = `
${flowConfig.widgetButtonText}
`;\n } else {\n if (buttonIcon !== this.lastButtonIcon) {\n this.feedbackButton.innerHTML = `
${buttonIcon}${loadIcon(\n \"arrowdown\",\n \"#fff\"\n )}
`;\n }\n }\n\n // Prevent dom update if not needed.\n this.lastButtonIcon = buttonIcon;\n\n var hideButton = false;\n if (GleapFeedbackButtonManager.getInstance().buttonHidden === null) {\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_NONE\n ) {\n hideButton = true;\n }\n } else {\n if (GleapFeedbackButtonManager.getInstance().buttonHidden) {\n hideButton = true;\n }\n }\n if (hideButton) {\n this.feedbackButton.classList.add(\"bb-feedback-button--disabled\");\n }\n\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_BOTTOM_LEFT\n ) {\n this.feedbackButton.classList.add(\"bb-feedback-button--bottomleft\");\n }\n\n if (GleapFrameManager.getInstance().isOpened()) {\n this.feedbackButton.classList.add(\"bb-feedback-button--open\");\n }\n\n const appMode = GleapFrameManager.getInstance().appMode;\n if (\n appMode === \"survey\" ||\n appMode === \"survey_full\" ||\n appMode === \"survey_web\"\n ) {\n this.feedbackButton.classList.add(\"bb-feedback-button--survey\");\n }\n\n if (\n flowConfig.hideForGuests === true &&\n !GleapSession.getInstance().isUser()\n ) {\n this.feedbackButton.classList.add(\"bb-feedback-button--hidden\");\n }\n }\n}\n","import GleapFeedbackButtonManager from \"./GleapFeedbackButtonManager\";\n\nconst calculateShadeColor = function (col, amt) {\n col = col.replace(/^#/, \"\");\n if (col.length === 3)\n col = col[0] + col[0] + col[1] + col[1] + col[2] + col[2];\n\n let [r, g, b] = col.match(/.{2}/g);\n [r, g, b] = [\n parseInt(r, 16) + amt,\n parseInt(g, 16) + amt,\n parseInt(b, 16) + amt,\n ];\n\n r = Math.max(Math.min(255, r), 0).toString(16);\n g = Math.max(Math.min(255, g), 0).toString(16);\n b = Math.max(Math.min(255, b), 0).toString(16);\n\n const rr = (r.length < 2 ? \"0\" : \"\") + r;\n const gg = (g.length < 2 ? \"0\" : \"\") + g;\n const bb = (b.length < 2 ? \"0\" : \"\") + b;\n\n return `#${rr}${gg}${bb}`;\n};\n\nexport const calculateContrast = (hex) => {\n var r = parseInt(hex.substr(1, 2), 16),\n g = parseInt(hex.substr(3, 2), 16),\n b = parseInt(hex.substr(5, 2), 16),\n yiq = (r * 299 + g * 587 + b * 114) / 1000;\n return yiq >= 160 ? \"#000000\" : \"#ffffff\";\n};\n\nexport const widgetMaxHeight = 700;\n\nexport const injectStyledCSS = (\n primaryColor,\n headerColor,\n buttonColor,\n borderRadius,\n backgroundColor,\n buttonX,\n buttonY,\n buttonStyle\n) => {\n const contrastColor = calculateContrast(primaryColor);\n const contrastButtonColor = calculateContrast(buttonColor);\n const contrastBackgroundColor = calculateContrast(backgroundColor);\n const contrastHeaderColor = calculateContrast(headerColor);\n const isDarkMode = contrastBackgroundColor === \"#ffffff\";\n const headerDarkColor = calculateShadeColor(\n headerColor,\n contrastHeaderColor === \"#ffffff\" ? -35 : -15\n );\n const subTextColor = isDarkMode\n ? calculateShadeColor(backgroundColor, 100)\n : calculateShadeColor(backgroundColor, -120);\n const backgroundColorHover = isDarkMode\n ? calculateShadeColor(backgroundColor, 30)\n : calculateShadeColor(backgroundColor, -12);\n const hoverHoverColor = isDarkMode\n ? calculateShadeColor(backgroundColor, 80)\n : calculateShadeColor(backgroundColor, -30);\n\n var borderRadius = parseInt(borderRadius, 10);\n const buttonBorderRadius = Math.round(borderRadius * 1.05);\n const containerRadius = Math.round(borderRadius * 0.8);\n const chatRadius = Math.round(borderRadius * 0.6);\n const formItemBorderRadius = Math.round(borderRadius * 0.4);\n const formItemSmallBorderRadius = Math.round(borderRadius * 0.25);\n const zIndexBase = 2147483600;\n\n var bottomInfoOffset = 57 + buttonY;\n if (\n buttonStyle === GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM\n ) {\n bottomInfoOffset = buttonY + 15;\n } else if (buttonStyle && buttonStyle.includes(\"CLASSIC\")) {\n bottomInfoOffset = buttonY;\n } else if (buttonStyle === GleapFeedbackButtonManager.FEEDBACK_BUTTON_NONE) {\n bottomInfoOffset = buttonY;\n }\n\n const colorStyleSheet = `\n .gleap-font, .gleap-font * {\n font-style: normal;\n font-variant-caps: normal;\n font-variant-ligatures: normal;\n font-variant-numeric: normal;\n font-variant-east-asian: normal;\n font-weight: normal;\n font-stretch: normal;\n font-size: 100%;\n line-height: 1;\n font-family: system-ui, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n }\n .gleap-input-highlight {\n box-shadow: 0 0 0 3px ${primaryColor} !important;\n }\n .gleap-frame-container {\n right: ${buttonX}px;\n bottom: ${61 + buttonY}px;\n width: calc(100% - 40px);\n max-width: 410px;\n position: fixed;\n z-index: ${zIndexBase + 31};\n visibility: visible;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.16);\n border-radius: ${containerRadius}px;\n overflow: hidden;\n animation-duration: .3s;\n animation-fill-mode: both;\n animation-name: gleapFadeInUp;\n user-select: none;\n pointer-events: none;\n transition: max-width 0.3s ease-out;\n }\n\n .gleap-admin-highlight {\n box-shadow: 0px 0px 0px 4px red;\n }\n\n :root {\n --gleap-margin-top: 50px;\n }\n\n .gleap-tooltip-anchor {\n position: relative;\n display: inline-block;\n float: left;\n max-width: 0px;\n width: 17px;\n }\n\n .gleap-tooltip-hotspot {\n position: absolute;\n display: block;\n width: 17px;\n height: 17px;\n cursor: pointer;\n top: 0px;\n left: 0px;\n }\n\n @keyframes gleap-pulse {\n 0% {\n transform: scale(0);\n opacity: 0.25;\n }\n 45% {\n transform: scale(2.5);\n opacity: 0;\n }\n 100% {\n transform: scale(0);\n opacity: 0;\n }\n }\n\n .gleap-tooltip-hotspot-animation {\n position: absolute;\n border-radius: 17px;\n opacity: 0.25;\n display: block;\n width: 17px;\n height: 17px;\n cursor: pointer;\n top: 0px;\n left: 0px;\n animation: gleap-pulse 5s infinite;\n }\n\n .gleap-tooltip-hotspot svg {\n width: 17px;\n height: 17px;\n object-fit: contain;\n display: block;\n }\n\n .gleap-tooltip-inner {\n position: relative;\n overflow: visible;\n font-size: 14px;\n font-weight: normal;\n color: #000;\n line-height: 1.3;\n }\n\n .gleap-tooltip {\n position: absolute;\n background-color: #fff;\n color: #000;\n font-size: 15px;\n line-height: 18px;\n padding: 16px;\n padding-top: 8px;\n padding-bottom: 8px;\n border-radius: 4px;\n max-width: min(350px, 80vw);\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n opacity: 0;\n visibility: hidden;\n transition: opacity 0.2s, visibility 0.2s;\n z-index: ${zIndexBase + 100};\n }\n\n .gleap-tooltip a {\n color: ${primaryColor};\n text-decoration: underline;\n display: inline !important;\n margin: 0px !important;\n padding: 0px !important;\n word-break: break-word;\n }\n\n .gleap-tooltip ul {\n padding-left: 16px;\n }\n\n .gleap-tooltip b {\n font-weight: 600;\n }\n\n .gleap-tooltip h2 {\n font-size: 18px;\n line-height: 20px;\n font-weight: 600;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip h3 {\n font-size: 16px;\n line-height: 18px;\n font-weight: 600;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip p {\n padding: 0px;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip img {\n max-width: 100%;\n max-height: 300px;\n width: 100%;\n height: auto;\n object-fit: cover;\n margin-top: 8px;\n margin-bottom: 8px;\n border-radius: 4px;\n }\n\n .gleap-tooltip iframe,\n .gleap-tooltip video {\n max-width: 100%;\n width: 100%;\n height: auto;\n min-height: 200px;\n display: block;\n border: none;\n outline: none;\n padding: 0px;\n margin-top: 8px;\n margin-bottom: 8px;\n border-radius: 4px;\n }\n\n .gleap-tooltip-arrow {\n position: absolute;\n width: 20px;\n height: 20px;\n }\n\n .gleap-tooltip-arrow svg {\n width: 20px;\n height: 20px;\n object-fit: contain;\n }\n\n .gleap-b-frame {\n width: 100%;\n height: 100%;\n border: none;\n pointer-events: auto;\n padding: 0px;\n margin: 0px;\n }\n\n .gleap-b-shown {\n transition: margin 0.3s ease-out;\n margin-top: var(--gleap-margin-top);\n position: relative;\n z-index: 10000;\n }\n\n .gleap-b-f {\n margin-top: 0px;\n }\n\n .gleap-b {\n display: none;\n position: absolute;\n top: calc(-1 * var(--gleap-margin-top));\n left: 0px;\n width: 100vw;\n height: var(--gleap-margin-top);\n z-index: ${zIndexBase + 99};\n }\n\n @keyframes gleapSlideIn {\n from {\n top: calc(-1 * var(--gleap-margin-top));\n }\n to {\n top: 10px;\n }\n }\n\n .gleap-b-f .gleap-b {\n position: fixed;\n top: 10px;\n animation: gleapSlideIn .25s ease-out forwards;\n max-width: 800px;\n width: calc(100% - 20px);\n left: 50%;\n z-index: ${zIndexBase + 99};\n transform: translateX(-50%);\n border-radius: ${formItemBorderRadius}px;\n overflow: hidden;\n box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.15), 0px 5px 5px rgba(0, 0, 0, 0.05);\n }\n\n .gleap-b-shown .gleap-b {\n display: block;\n }\n\n .gleap-image-view {\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n z-index: ${zIndexBase + 99};\n background-color: ${contrastBackgroundColor}cc;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .gleap-image-view-image {\n width: 90%;\n height: auto;\n max-width: 90%;\n max-height: 90%;\n object-fit: contain;\n }\n\n .gleap-image-view-close {\n position: fixed;\n top: 20px;\n right: 20px;\n width: 32px;\n height: 32px;\n opacity: 0.8;\n z-index: ${zIndexBase + 140};\n box-shadow: 0px 5px 18px rgba(0, 0, 0, 0.16);\n cursor: pointer;\n }\n\n .gleap-image-view-close:hover {\n opacity: 1;\n }\n\n .gleap-image-view-close svg path {\n fill: ${backgroundColor};\n }\n\n [dir=rtl].gleap-frame-container {\n right: auto;\n left: ${buttonX}px;\n bottom: ${61 + buttonY}px;\n }\n\n .gleap-frame-container--loading iframe {\n opacity: 0;\n }\n\n .gleap-frame-container--loading::before {\n content: \" \";\n position: fixed;\n top: 0px;\n left: 0px;\n right: 0px;\n height: 100%;\n max-height: 380px;\n background: linear-gradient(\n 130deg,\n ${headerDarkColor} 0%,\n ${headerColor} 100%\n );\n }\n \n .gleap-frame-container--loading::after {\n content: \" \";\n position: fixed;\n top: 0px;\n left: 0px;\n right: 0px;\n height: 100%;\n height: 100%;\n max-height: 380px;\n background: linear-gradient(\n 180deg,\n transparent 60%,\n ${backgroundColor}1A 70%,\n ${backgroundColor} 100%\n );\n }\n\n .gleap-frame-container--loading-nogradient::before {\n max-height: 340px;\n background: ${headerColor} !important;\n }\n\n .gleap-frame-container--loading-nofade::after {\n display: none !important;\n }\n\n .gleap-frame-container--survey {\n bottom: ${buttonY}px !important;\n }\n\n .gleap-frame-container--extended {\n max-width: 690px !important;\n }\n\n .gleap-frame-container--survey-full {\n position: fixed;\n top: 0 !important;\n left: 0 !important;\n bottom: 0 !important;\n right: 0 !important;\n width: 100vw !important;\n max-width: 100vw !important;\n height: 100vh;\n height: 100dvh !important;\n background-color: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(6px);\n display: flex !important;\n justify-content: center !important;\n align-items: center !important;\n max-height: 100vh;\n max-height: 100dvh !important;\n border-radius: 0 !important;\n animation-name: none !important;\n }\n\n .gleap-frame-container--survey-full .gleap-frame-container-inner {\n max-width: 640px !important;\n width: calc(100% - 24px);\n border-radius: ${containerRadius}px;\n overflow: hidden;\n }\n\n .gleap-frame-container--classic {\n right: ${buttonX}px;\n bottom: ${buttonY}px;\n }\n\n [dir=rtl].gleap-frame-container--classic {\n right: auto;\n left: ${buttonX}px;\n bottom: ${buttonY}px;\n }\n\n .gleap-frame-container--no-button {\n bottom: ${buttonY}px;\n }\n\n [dir=rtl].gleap-frame-container--classic-left {\n bottom: ${buttonY}px;\n }\n\n .gleap-frame-container--classic-left {\n right: auto;\n left: ${buttonX}px;\n bottom: ${buttonY}px;\n }\n\n [dir=rtl].gleap-frame-container--classic-left {\n left: auto;\n right: ${buttonX}px;\n bottom: ${buttonY}px;\n }\n\n .gleap-frame-container--modern-left {\n right: auto;\n left: ${buttonX}px;\n bottom: ${61 + buttonY}px;\n }\n\n [dir=rtl].gleap-frame-container--modern-left {\n left: auto;\n right: ${buttonX}px;\n bottom: ${61 + buttonY}px;\n }\n\n .gleap-frame-container--animate {\n pointer-events: auto !important;\n }\n\n @keyframes gleapFadeInUp {\n from {\n opacity: 0;\n transform: translate3d(0, 100%, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n\n @keyframes gleapFadeInUpMobile {\n from {\n opacity: 0;\n transform: translate3d(0, 10%, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n\n .gleap-notification-container {\n position: fixed;\n bottom: ${bottomInfoOffset}px;\n right: ${buttonX}px;\n z-index: ${zIndexBase + 30};\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n width: 100%;\n max-width: min(340px, 80vw);\n }\n\n .gleap-notification-container--left {\n left: ${4 + buttonX}px;\n right: initial !important;\n }\n\n [dir=rtl].gleap-notification-container {\n left: ${4 + buttonX}px;\n right: initial !important;\n }\n\n [dir=rtl].gleap-notification-container--left {\n left: initial !important;\n right: ${buttonX}px !important;\n align-items: flex-start !important;\n }\n\n .gleap-notification-container--no-button {\n bottom: ${buttonY}px;\n }\n\n .gleap-notification-item {\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n\n .gleap-notification-close {\n border-radius: 100%;\n width: 28px;\n height: 28px;\n background-color: ${subTextColor};\n display: flex;\n justify-content: center;\n align-items: center;\n margin-bottom: 8px;\n cursor: pointer;\n visibility: hidden;\n pointer-events: none;\n }\n\n .gleap-notification-container:hover .gleap-notification-close {\n visibility: visible;\n pointer-events: auto;\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-notification-close {\n visibility: visible;\n pointer-events: auto;\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n }\n\n .gleap-notification-close svg {\n width: 45%;\n height: 45%;\n object-fit: contain;\n fill: ${backgroundColor};\n }\n\n .gleap-notification-item-checklist-container {\n display: flex;\n animation: fadeIn;\n animation-duration: .45s;\n background-color: ${backgroundColor};\n border-radius: ${subTextColor};\n box-sizing: border-box;\n cursor: pointer;\n flex-direction: column;\n overflow: hidden;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ${chatRadius}px;\n margin-bottom: 12px;\n }\n\n .gleap-notification-item-checklist-content {\n align-items: flex-start;\n display: flex;\n flex-direction: column;\n padding: 15px;\n width: 100%;\n width: min(310px, 70vw);\n max-width: min(310px, 70vw);\n }\n\n .gleap-notification-item-checklist-content-title {\n color: ${contrastBackgroundColor};\n font-size: 15px;\n font-weight: 500;\n line-height: 21px;\n margin-bottom: 10px;\n max-width: 100%;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .gleap-notification-item-checklist-content-progress {\n width: 100%;\n height: 8px;\n border-radius: 8px;\n background-color: ${backgroundColorHover};\n }\n\n .gleap-notification-item-checklist-content-progress-inner {\n height: 100%;\n border-radius: 8px;\n background-color: ${primaryColor};\n }\n\n .gleap-notification-item-checklist-content-next {\n color: ${subTextColor};\n font-size: 15px;\n font-weight: normal;\n line-height: 21px;\n margin-top: 10px;\n max-width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: flex;\n align-items: center;\n }\n\n .gleap-notification-item-checklist-content-next svg {\n height: 18px;\n margin-right: 5px;\n width: auto;\n }\n\n .gleap-notification-item-checklist-content-next b {\n font-size: 15px;\n font-weight: normal;\n color: ${contrastBackgroundColor};\n }\n\n .gleap-notification-item-news {\n width: 100%;\n }\n\n .gleap-news-pagination {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 10px;\n width: 100%;\n }\n\n .gleap-news-page-indicator {\n font-size: 12px;\n color: ${subTextColor};\n }\n\n .gleap-news-next-button {\n background-color: ${primaryColor};\n color: ${contrastColor};\n border-radius: ${formItemSmallBorderRadius}px;\n box-sizing: border-box;\n padding: 5px 10px;\n font-size: 14px;\n font-weight: bold;\n line-height: 21px;\n border: none;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: none !important;\n outline: none !important;^\n }\n\n .gleap-notification-item-news-content {\n align-items: flex-start;\n display: flex;\n flex-direction: column;\n padding: 15px;\n }\n\n .gleap-notification-item-news-preview {\n color: ${subTextColor};\n font-size: 14px;\n line-height: 21px;\n font-weight: 400;\n overflow-wrap: break-word;\n word-break: break-word;\n display: block;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .gleap-notification-item-news-sender {\n display: flex;\n align-items: center;\n color: ${subTextColor};\n font-size: 15px;\n line-height: 21px;\n font-weight: 400;\n }\n \n .gleap-notification-item-news-content-title {\n color: ${contrastBackgroundColor};\n font-size: 15px;\n font-weight: 500;\n line-height: 21px;\n margin-bottom: 6px;\n max-width: 100%;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n cursor: pointer;\n }\n\n .gleap-notification-item-news-sender img {\n border-radius: 100%;\n height: 20px;\n margin-right: 8px;\n object-fit: cover;\n width: 20px;\n }\n\n [dir=rtl] .gleap-notification-item-news-sender img {\n margin-left: 8px;\n margin-right: 0px !important;\n }\n\n .gleap-notification-item-news-container {\n display: flex;\n animation: fadeIn;\n animation-duration: .45s;\n background-color: ${backgroundColor};\n border-radius: ${subTextColor};\n box-sizing: border-box;\n flex-direction: column;\n overflow: hidden;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ${chatRadius}px;\n margin-bottom: 12px;\n }\n\n .gleap-notification-item-news-image {\n background-color: ${subTextColor};\n height: 170px;\n max-height: 170px;\n object-fit: cover;\n width: 100%;\n cursor: pointer;\n }\n \n .gleap-notification-item-news-content-title:hover {\n color: ${primaryColor};\n }\n\n .gleap-notification-item {\n display: flex;\n align-items: flex-end;\n cursor: pointer;\n }\n\n .gleap-notification-item img {\n width: 32px;\n height: 32px;\n min-width: 32px;\n border-radius: 100%;\n object-fit: cover;\n margin-right: 8px;\n margin-bottom: 12px;\n cursor: pointer;\n }\n\n [dir=rtl] .gleap-notification-item img {\n margin-left: 8px;\n margin-right: 0px !important;\n }\n\n .gleap-notification-item-container {\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ${chatRadius}px;\n border-bottom-left-radius: 0px;\n padding: 20px;\n background-color: ${backgroundColor};\n margin-bottom: 12px;\n cursor: pointer;\n font-size: 15px;\n line-height: 21px;\n color: ${contrastBackgroundColor};\n position: relative;\n }\n\n .gleap-notification-item-container::after {\n content: \" \";\n position: absolute;\n bottom: 0px;\n width: 0px;\n height: 0px;\n left: -6px;\n border-style: solid;\n border-width: 0px 0px 10px 6px;\n border-color: transparent transparent ${backgroundColor};\n }\n\n .gleap-notification-item-sender {\n color: ${subTextColor};\n line-height: 20px;\n }\n\n .gleap-notification-item-content {\n line-height: 20px;\n color: ${contrastBackgroundColor};\n margin-top: 4px;\n min-width: min(200px, 50vw);\n word-wrap: break-word;\n word-break: break-word;\n }\n\n .gleap-frame-container-inner {\n position: relative;\n width: 100%;\n height: calc(100vh - ${84 + buttonY}px);\n max-height: ${widgetMaxHeight}px;\n }\n\n .gleap-frame-container--survey .gleap-frame-container-inner {\n height: calc(100vh - 40px);\n }\n \n .gleap-frame-container-inner:before {\n content: \" \";\n position: absolute;\n width: 100%;\n height: calc(100% - ${containerRadius}px);\n top: ${containerRadius}px;\n background-color: ${backgroundColor};\n z-index: -1;\n }\n \n .gleap-frame-container iframe {\n height: 100% !important;\n width: 100% !important;\n max-width: 100% !important;\n display: block !important;\n pointer-events: auto !important;\n }\n \n .gleap-frame-container--hidden {\n display: none !important;\n pointer-events: none;\n animation: none !important;\n }\n \n .bb-feedback-button {\n margin: 0px;\n position: fixed;\n bottom: ${buttonY}px;\n right: ${buttonX}px;\n border-radius: 30px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n background-color: transparent;\n color: #000000;\n z-index: ${zIndexBase + 30};\n box-sizing: border-box;\n display: flex;\n align-items: center;\n padding: 0px;\n }\n\n [dir=rtl].bb-feedback-button {\n bottom: ${buttonY}px;\n right: auto;\n left: ${buttonX}px;\n }\n \n .bb-feedback-button--bottomleft {\n bottom: ${buttonY}px;\n right: auto;\n left: ${buttonX}px;\n }\n\n [dir=rtl].bb-feedback-button--bottomleft {\n bottom: ${buttonY}px;\n right: ${buttonX}px;\n left: auto;\n }\n \n .bb-feedback-button--disabled {\n display: none !important;\n }\n\n .bb-feedback-button--hidden {\n display: none !important;\n }\n \n .bb-feedback-button-text {\n padding: 8px 12px;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n background-color: #fff;\n border-radius: 8px;\n box-shadow: 0px 0px 14px 0px rgba(0, 0, 0, 0.15);\n position: relative;\n z-index: 99;\n }\n \n .bb-feedback-button-text:before {\n content: \"\";\n position: absolute;\n box-shadow: rgba(0, 0, 0, 0.04) 6px 6px 5px;\n transform: rotate(315deg);\n bottom: 16px;\n right: -4px;\n border-width: 10px;\n border-style: solid;\n border-color: transparent #fff #fff transparent;\n }\n \n .bb-feedback-button--bottomleft .bb-feedback-button-text:before {\n display: none;\n }\n \n .bb-feedback-button-text:after {\n content: \"\";\n position: absolute;\n bottom: 12px;\n right: 0px;\n background-color: #fff;\n width: 5px;\n height: 30px;\n }\n \n .bb-feedback-button-text-title {\n font-family: sans-serif;\n font-size: 14px;\n color: #666;\n line-height: 18px;\n max-width: 220px;\n }\n \n .bb-feedback-button-text-title b {\n color: #000000;\n font-weight: 600;\n }\n\n .bb-notification-bubble {\n position: absolute;\n top: -5px;\n right: -5px;\n min-width: 12px;\n padding: 0px 4px;\n height: 20px;\n min-width: 20px;\n border-radius: 20px;\n background-color: red;\n color: #fff;\n font-size: 11px;\n font-family: sans-serif;\n text-align: center;\n line-height: 20px;\n }\n\n .bb-notification-bubble--hidden {\n display: none;\n }\n \n .bb-feedback-button-icon {\n width: 48px;\n height: 48px;\n border-radius: 48px;\n background-color: #485bff;\n transition: box-shadow, transform 0.2s ease-in-out;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n position: relative;\n }\n \n .bb-feedback-button-classic {\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n top: 50%;\n right: 0px;\n position: fixed;\n transform: rotate(-90deg) translate(50%, -50%);\n transform-origin: 100% 50%;\n padding: 9px 20px;\n text-align: center;\n background-color: #485bff;\n border-top-left-radius: 8px;\n border-top-right-radius: 8px;\n font-family: sans-serif;\n font-size: 16px;\n color: #fff;\n box-shadow: 0px 0px 14px 0px rgba(0, 0, 0, 0.25);\n }\n\n [dir=rtl].bb-feedback-button .bb-feedback-button-classic {\n top: 50%;\n left: 0px;\n right: auto;\n transform: rotate(90deg) translate(-50%, -100%);\n transform-origin: 0% 0%;\n }\n \n .bb-feedback-button-classic--left {\n top: 50%;\n left: 0px;\n right: auto;\n transform: rotate(90deg) translate(-50%, -100%);\n transform-origin: 0% 0%;\n }\n\n [dir=rtl].bb-feedback-button .bb-feedback-button-classic--left {\n top: 50%;\n right: 0px;\n left: auto;\n transform: rotate(-90deg) translate(50%, -50%);\n transform-origin: 100% 50%;\n }\n \n .bb-feedback-button-classic--bottom {\n top: auto;\n bottom: 0px;\n transform: none;\n right: ${buttonX}px;\n left: auto;\n }\n \n [dir=rtl].bb-feedback-button .bb-feedback-button-classic--bottom {\n top: auto;\n bottom: 0px;\n transform: none;\n left: ${buttonX}px;\n right: auto;\n }\n\n .bb-feedback-button--classic-button-style {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n \n .bb-feedback-button--open.bb-feedback-button--classic-button-style {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: bbFadeOutRight;\n }\n \n .bb-feedback-button .bb-logo-logo {\n position: absolute;\n width: 30px;\n height: 30px;\n top: 9px;\n left: 9px;\n object-fit: contain;\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-name: bbZoomIn;\n }\n \n .bb-feedback-button .bb-logo-arrowdown {\n position: absolute;\n width: 14px;\n height: 14px;\n top: 17px;\n left: 17px;\n object-fit: contain;\n animation-duration: 0.3s;\n animation-fill-mode: both;\n }\n \n .bb-feedback-button .bb-logo-arrowdown {\n animation-name: bbZoomOut;\n }\n \n .bb-feedback-button--open .bb-logo-arrowdown {\n animation-name: bbZoomIn;\n }\n \n .bb-feedback-button--open .bb-logo-logo {\n animation-name: bbZoomOut;\n }\n \n .bb-feedback-button-icon:hover {\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.25), 0px 0px 20px rgba(0, 0, 0, 0.2);\n transform: scale(1.1);\n }\n \n .bb-feedback-button--open .bb-feedback-button-text {\n animation-name: bbFadeOutDown;\n }\n \n .bb-feedback-button--open .bb-feedback-button-icon {\n display: flex;\n }\n \n .bb-capture-svg {\n position: fixed;\n z-index: ${zIndexBase + 14};\n top: 0px;\n left: 0px;\n right: 0px;\n width: 100%;\n height: 100%;\n padding: 0px;\n margin: 0px;\n cursor: crosshair;\n }\n\n .bb-capture-svg--preview {\n cursor: auto !important;\n }\n \n .bb-rec-on-circle {\n animation-name: bbRecIconFade;\n animation-duration: 2s;\n animation-iteration-count: infinite;\n animation-direction: alternate;\n }\n \n .bb-rec-on-cont {\n animation-name: bbRecIconContFade;\n animation-duration: 2s;\n animation-iteration-count: infinite;\n animation-direction: alternate;\n }\n \n .bb-capture-editor-drag-info {\n position: fixed;\n top: -200px;\n left: 0px;\n z-index: ${zIndexBase + 16};\n transition: opacity 0.3s ease-in-out;\n }\n \n .bb-capture-editor-drag-info svg {\n width: 24px;\n height: 24px;\n }\n \n .bb-capture-editor-borderlayer {\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n border: 4px solid ${primaryColor};\n cursor: crosshair;\n z-index: ${zIndexBase + 10};\n box-sizing: border-box;\n pointer-events: none;\n }\n \n .bb-capture-editor-notrecording .bb-capture-editor-borderlayer {\n background-color: rgba(0, 0, 0, 0.8);\n }\n\n .bb-capture-editor-recording .bb-capture-editor-borderlayer {\n border: 4px solid #eb144c !important;\n }\n \n .bb-capture-editor-recording .bb-capture-dismiss {\n display: none;\n }\n \n .bb-capture-editor-item-inactive {\n opacity: 0.3;\n cursor: not-allowed !important;\n }\n \n .bb-capture-editor-notrecording .bb-capture-toolbar-drawingitem {\n opacity: 0.3;\n cursor: not-allowed !important;\n }\n \n .bb-capture-editor-notrecording .bb-capture-editor-drag-info {\n display: none;\n }\n \n .bb-capture-editor-notrecording .bb-capture-svg {\n pointer-events: none !important;\n }\n \n .bb-capture-toolbar {\n position: fixed;\n top: 20px;\n left: 50%;\n transform: translateX(-50%);\n z-index: ${zIndexBase + 18};\n background-color: #fff;\n padding: 5px;\n display: flex;\n align-items: center;\n border-radius: 8px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n transition: opacity 0.3s ease-in-out;\n }\n \n .bb-capture-dismiss {\n position: fixed;\n top: 0px;\n right: 0px;\n z-index: ${zIndexBase + 18};\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n width: 36px;\n height: 36px;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: ${primaryColor};\n border-bottom-left-radius: ${formItemSmallBorderRadius}px;\n }\n\n [dir=rtl] .bb-capture-dismiss {\n top: 0px;\n left: 0px;\n right: auto;\n border-bottom-left-radius: 0px !important;\n border-bottom-right-radius: ${formItemSmallBorderRadius}px;\n }\n \n .bb-capture-dismiss svg path {\n fill: ${contrastColor};\n }\n \n .bb-capture-dismiss svg {\n width: 20px;\n height: 20px;\n object-fit: contain;\n }\n \n .bb-capture-button-next {\n font-family: sans-serif;\n box-sizing: border-box;\n font-weight: 600;\n text-align: center;\n width: auto;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n margin: 0px;\n line-height: 36px;\n padding: 0px 12px;\n font-size: 15px;\n margin-left: 12px;\n }\n\n [dir=rtl].bb-capture-editor .bb-capture-button-next {\n margin-left: auto;\n margin-right: 12px;\n }\n \n .bb-capture-toolbar-item-spacer {\n width: 1px;\n height: 38px;\n min-width: 1px;\n margin: 0px 5px;\n }\n \n .bb-capture-toolbar-item {\n width: 42px;\n height: 38px;\n min-width: 42px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n position: relative;\n margin-right: 5px;\n }\n\n .drag-handle-item {\n cursor: grab !important;\n width: 34px;\n min-width: 34px;\n }\n\n .drag-handle-item svg {\n width: 18px !important;\n height: 18px !important;\n }\n \n .bb-capture-toolbar-item svg {\n width: 23px;\n height: 23px;\n object-fit: contain;\n }\n \n .bb-capture-toolbar-item-selectedcolor {\n border-radius: 100%;\n width: 20px;\n height: 20px;\n background-color: #db4035;\n }\n \n .bb-capture-toolbar-item[data-type=\"undo\"] svg {\n width: 18px;\n height: 18px;\n }\n \n .bb-capture-toolbar-item[data-active=\"true\"] {\n position: relative;\n }\n \n .bb-capture-preview {\n display: none;\n background-color: rgba(0, 0, 0, 0.6);\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n justify-content: center;\n align-items: center;\n z-index: ${zIndexBase + 20};\n }\n \n .bb-capture-preview-inner {\n background-color: #fff;\n padding: 0px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n border-radius: 8px;\n flex-direction: column;\n max-width: 640px;\n width: 100%;\n margin: 20px;\n }\n \n .bb-capture-preview-inner video {\n border-radius: 8px 8px 0px 0px;\n display: block;\n border: 0px;\n outline: none;\n width: 100%;\n max-height: 60vh;\n }\n \n .bb-capture-preview-buttons {\n display: flex;\n justify-content: space-between;\n padding: 14px;\n }\n \n .bb-capture-preview-retrybutton {\n font-family: sans-serif;\n border-radius: 21px;\n box-sizing: border-box;\n padding: 12px 26px;\n font-size: 16px;\n line-height: 19px;\n font-weight: 600;\n text-align: center;\n margin-top: 0px;\n margin-bottom: 0px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-preview-sendbutton {\n font-family: sans-serif;\n border-radius: 21px;\n box-sizing: border-box;\n padding: 12px 26px;\n font-size: 16px;\n line-height: 19px;\n font-weight: 600;\n text-align: center;\n margin-top: 0px;\n margin-bottom: 0px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-preview-retrybutton:hover,\n .bb-capture-preview-sendbutton:hover {\n opacity: 0.9;\n }\n \n .bb-capture-toolbar-item-recording {\n margin-right: 0px;\n }\n \n .bb-capture-toolbar-item-recording svg {\n width: 33px;\n height: 33px;\n }\n \n .bb-capture-toolbar-item-colorpicker {\n position: fixed;\n top: 70px;\n left: 50%;\n transform: translateX(-50%);\n z-index: ${zIndexBase + 18};\n background-color: #fff;\n display: none;\n padding: 10px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n border-radius: 8px;\n }\n \n .bb-capture-toolbar-item-color {\n width: 20px;\n height: 20px;\n border-radius: 100%;\n margin-right: 12px;\n box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.15);\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-toolbar-item-color:hover {\n box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.25);\n }\n \n .bb-capture-toolbar-item-color:last-of-type {\n margin-right: 0px;\n }\n \n [dir=rtl].bb-capture-editor .bb-capture-toolbar-item-color {\n margin-right: auto;\n margin-left: 12px;\n }\n \n [dir=rtl].bb-capture-editor .bb-capture-toolbar-item-color:last-of-type {\n margin-right: auto;\n margin-left: 0px;\n }\n \n .bb-capture-toolbar-item-recording[data-active=\"true\"] svg:first-of-type {\n display: none;\n }\n \n .bb-capture-toolbar-item-recording[data-active=\"true\"] svg:nth-of-type(2) {\n display: block;\n }\n \n .bb-capture-toolbar-item-recording[data-active=\"false\"] svg:first-of-type {\n display: block;\n }\n \n .bb-capture-toolbar-item-recording[data-active=\"false\"] svg:nth-of-type(2) {\n display: none;\n }\n \n .bb-capture-toolbar-item--active {\n background-color: #eee;\n }\n \n .bb-capture-toolbar-item:hover svg {\n opacity: 1;\n }\n \n .bb-capture-toolbar-item--active {\n background-color: #f8f8f8;\n }\n \n .bb-capture-toolbar-item--active svg {\n opacity: 1;\n }\n \n .bb-capture-toolbar-item--inactivecross::before {\n content: \"\";\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n height: 3px;\n width: 26px;\n margin: auto;\n border-radius: 4px;\n background-color: #e80000;\n transform: rotate(45deg);\n }\n \n .bb-capture-toolbar-item--inactivecross svg {\n fill: #eee;\n }\n \n .bb-capture-toolbar-item-timer {\n text-align: left;\n line-height: 32px;\n font-size: 14px;\n font-family: sans-serif;\n margin: 5px;\n min-width: 40px;\n display: none;\n }\n \n .bb-capture-toolbar-item .bb-tooltip {\n background-color: #555;\n color: #fff;\n visibility: hidden;\n font-size: 14px;\n font-family: sans-serif;\n text-align: center;\n padding: 5px 10px;\n position: absolute;\n z-index: 1;\n top: 45px;\n left: 0px;\n transform: translateX(calc(-50% + 21px));\n opacity: 0;\n transition: opacity 0.3s;\n white-space: nowrap;\n }\n \n .bb-capture-toolbar-item .bb-tooltip::after {\n content: \"\";\n position: absolute;\n bottom: 100%;\n left: 50%;\n margin-left: -5px;\n border-width: 5px;\n border-style: solid;\n transform: rotate(180deg);\n border-color: #555 transparent transparent transparent;\n }\n \n .bb-capture-toolbar-item:hover .bb-tooltip {\n visibility: visible;\n opacity: 1;\n }\n \n .bb-capture-options {\n display: none;\n }\n \n .bb-capture-options--active {\n display: flex;\n }\n\n @keyframes bbFadeOutRight {\n from {\n opacity: 1;\n }\n \n to {\n opacity: 0;\n }\n }\n \n @keyframes bbFadeOutDown {\n from {\n opacity: 1;\n }\n \n to {\n opacity: 0;\n transform: translate3d(0, 100%, 0);\n }\n }\n \n @keyframes bbFadeInOpacity {\n from {\n opacity: 0;\n }\n \n to {\n opacity: 1;\n }\n }\n \n @keyframes bbZoomOut {\n from {\n opacity: 1;\n }\n \n 50% {\n opacity: 0;\n transform: scale3d(0.3, 0.3, 0.3);\n }\n \n to {\n opacity: 0;\n }\n }\n \n @keyframes bbZoomIn {\n from {\n opacity: 0;\n transform: scale3d(0.3, 0.3, 0.3);\n }\n \n 50% {\n opacity: 1;\n }\n }\n \n @keyframes bbRecIconContFade {\n 0% {\n fill: #b10802;\n }\n 50% {\n fill: #ff0000;\n }\n 100% {\n fill: #b10802;\n }\n } \n .bb-capture-preview-retrybutton {\n color: ${contrastBackgroundColor};\n border-radius: ${buttonBorderRadius}px;\n background-color: ${backgroundColorHover};\n }\n .bb-capture-preview-retrybutton:hover {\n background-color: ${hoverHoverColor};\n }\n @keyframes bb-suc-fill {\n 100% {\n box-shadow: inset 0px 0px 0px 30px ${primaryColor};\n }\n }\n .bb-capture-toolbar-item-spacer {\n background-color: ${backgroundColorHover};\n }\n .bb-tooltip {\n border-radius: ${formItemBorderRadius}px;\n }\n @keyframes bbRecIconFade {\n 0% {\n fill: transparent;\n }\n 50% {\n fill: ${hoverHoverColor};\n }\n 100% {\n fill: transparent;\n }\n }\n .bb-capture-preview-sendbutton {\n color: ${contrastColor};\n background-color: ${primaryColor};\n border-radius: ${buttonBorderRadius}px;\n }\n .bb-capture-button-next {\n color: ${contrastColor};\n background-color: ${primaryColor};\n border-radius: ${formItemSmallBorderRadius}px;\n }\n .bb-capture-preview-inner {\n background-color: ${backgroundColor};\n border-radius: ${formItemBorderRadius}px;\n }\n .bb-capture-toolbar-item-timer {\n color: ${subTextColor};\n }\n .bb-svg-path {\n fill: ${contrastBackgroundColor};\n }\n .bb-capture-toolbar-item {\n border-radius: ${formItemBorderRadius}px;\n }\n .bb-capture-toolbar {\n background-color: ${backgroundColor};\n border-radius: ${formItemBorderRadius}px;\n }\n .bb-capture-toolbar-item-colorpicker {\n background-color: ${backgroundColor};\n }\n .bb-capture-toolbar-item--active {\n background-color: ${backgroundColorHover};\n }\n .bb-feedback-button-classic {\n border-top-left-radius: ${formItemBorderRadius}px;\n border-top-right-radius: ${formItemBorderRadius}px;\n }\n .bb-logo-logo--default path {\n fill: ${contrastButtonColor};\n }\n .bb-logo-arrowdown {\n fill: ${contrastButtonColor};\n }\n .bb-feedback-button-icon {\n background-color: ${buttonColor};\n }\n .bb-feedback-button-classic {\n background-color: ${buttonColor};\n color: ${contrastButtonColor};\n }\n\n @media only screen and (max-width: 450px) {\n [dir=rtl].gleap-frame-container,\n .gleap-frame-container {\n left: 0px;\n right: 0px;\n width: 100vw;\n max-width: 100vw;\n min-height: 100vh;\n max-height: 100vh;\n min-height: 100dvh !important;\n max-height: 100dvh !important;\n top: 0px;\n bottom: 0px;\n border-radius: 0px;\n animation-name: gleapFadeInUpMobile;\n }\n\n .gleap-frame-container-inner {\n width: 100vw;\n height: 100%;\n }\n\n .gleap-frame-container:not(.gleap-frame-container--survey):not(.gleap-frame-container--survey-full) .gleap-frame-container-inner {\n max-height: calc(var(--glvh, 1vh) * 100) !important;\n }\n\n .gleap-frame-container--survey {\n height: auto !important;\n top: initial !important;\n bottom: 0px !important;\n min-height: initial !important;\n }\n\n .gleap-frame-container--survey .gleap-frame-container-inner {\n height: 100vh !important;\n }\n\n .bb-tooltip {\n display: none !important;\n }\n \n .bb-capture-toolbar-item-colorpicker {\n top: 75px;\n }\n \n .bb-capture-button-next {\n margin-left: auto;\n }\n \n .bb-capture-dismiss {\n display: none;\n }\n \n .bb-capture-toolbar {\n top: 15px;\n right: 15px;\n left: 15px;\n width: auto;\n transform: none;\n }\n\n .bb-capture-editor-drag-info {\n display: none;\n }\n \n .bb-capture-editor-borderlayer {\n border-width: 4px;\n }\n }\n \n @media print {\n .bb-feedback-button {\n display: none !important;\n }\n \n .gleap-frame-container {\n display: none !important;\n }\n }\n\n .gleap-tour-sender {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n margin-bottom: 10px;\n }\n\n .gleap-tour-sender-image {\n width: 32px;\n height: 32px;\n border-radius: 32px;\n margin-right: 10px;\n background-size: cover;\n background-repeat: no-repeat;\n }\n\n .gleap-tour-popover.gleap-tour-popover-post {\n min-width: 550px;\n max-width: 550px;\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-tour-popover.gleap-tour-popover-post {\n min-width: calc(100vw - 40px);\n max-width: calc(100vw - 40px);\n }\n }\n\n .gleap-tour-message,\n .gleap-tour-message p,\n .gleap-tour-message ul {\n color: ${contrastBackgroundColor};\n }\n\n .gleap-tour-message h2 {\n font-weight: 600;\n font-size: 22px;\n }\n\n .gleap-tour-message h3 {\n font-weight: 600;\n font-size: 18px;\n }\n\n .gleap-tour-message p {\n line-height: 1.3;\n margin-bottom: 10px !important;\n margin-top: 10px !important;\n }\n\n .gleap-tour-message ul {\n line-height: 1.3;\n padding-left: 20px;\n margin-top: 10px !important;\n margin-bottom: 10px !important;\n }\n\n .gleap-tour-message {\n max-height: calc(80vh - 100px) !important;\n overflow-y: auto;\n min-width: 270px;\n }\n\n .gleap-tour-message::-webkit-scrollbar {\n width: 5px;\n }\n\n .gleap-tour-message::-webkit-scrollbar-track {\n border-radius: 0px;\n }\n \n .gleap-tour-message::-webkit-scrollbar-thumb {\n background: ${hoverHoverColor}; \n border-radius: 5px;\n }\n\n .gleap-tour-message::-webkit-scrollbar-thumb:hover {\n background: ${subTextColor};\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-tour-message {\n min-width: auto !important;\n }\n }\n\n .gleap-tour-message iframe {\n width: 100%;\n height: 300px;\n margin-top: 10px;\n margin-bottom: 10px;\n border: none;\n outline: none;\n display: block;\n }\n\n .gleap-tour-sender-name {\n font-size: 15px;\n }\n\n .gleap-tour-video {\n width: 100%;\n max-width: 100%;\n }\n\n .gleap-tour-video-svg--fullscreen {\n width: 100% !important;\n height: 100% !important;\n top: 0px !important;\n left: 0px !important;\n right: 0px !important;\n bottom: 0px !important;\n }\n\n .gleap-tour-video--playing .gleap-tour-video-playpause {\n opacity: 0;\n }\n \n .gleap-tour-video--playing:hover .gleap-tour-video-playpause {\n opacity: 1;\n }\n\n .gleap-tour-popover-video-pointer {\n padding: 0px !important;\n border-radius: 8px;\n position: relative;\n background-color: transparent !important;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-footer {\n position: absolute;\n top: 0px;\n left: 20px;\n right: 20px;\n opacity: 0;\n transition: opacity 200ms ease-in-out;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-footer button {\n padding: 5px 12px;\n }\n\n .gleap-tour-popover-video-pointer.gleap-tour-popover-can-close .gleap-tour-popover-footer {\n right: 40px !important;\n }\n\n .gleap-tour-popover-video-pointer:hover .gleap-tour-popover-footer {\n opacity: 1;\n }\n\n .gleap-tour-popover-pointer.gleap-tour-popover-no-sender .gleap-tour-message {\n padding-right: 20px;\n }\n\n .gleap-tour-video video {\n width: 100%;\n max-width: 100%;\n height: auto;\n border: none;\n outline: none;\n display: block;\n border-radius: 8px;\n }\n\n .gleap-admin-collapse-ui {\n z-index: ${zIndexBase + 35};\n cursor: pointer;\n position: fixed;\n bottom: 75px;\n right: 20px;\n width: 32px;\n height: 32px;\n border-radius: 100%;\n background-color: #fff;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: rgba(0, 0, 0, 0.16) 0px 10px 36px 0px, rgba(0, 0, 0, 0.06) 0px 0px 0px 1px;\n }\n\n .gleap-admin-collapse-ui svg {\n width: 20px;\n height: 14px;\n fill: #000 !important;\n }\n\n .gleap-admin-collapse-ui-active {\n bottom: 20px !important;\n }\n\n .gleap-admin-collapse-ui-active svg {\n transform: rotate(180deg);\n }\n\n .gleap-admin-frame-container-active {\n display: none !important;\n }\n\n .gleap-admin-frame-container {\n position: fixed;\n bottom: 0px;\n left: 0px;\n right: 0px;\n width: 100vw;\n z-index: ${zIndexBase + 40};\n }\n\n .gleap-admin-frame {\n width: 100%;\n height: 100% !important;\n border: none;\n outline: none;\n display: block;\n }\n \n .gleap-tour-message .linktype-link {\n display: inline-block !important;\n background-color: transparent !important;\n color: ${buttonColor} !important;\n }\n\n .gleap-tooltip .linktype-button,\n .gleap-tour-message .linktype-button {\n display: inline-block !important;\n border-radius: 5px;\n box-sizing: border-box;\n padding: 10px 20px !important;\n text-decoration: none !important;\n background-color: ${buttonColor} !important;\n color: ${contrastButtonColor} !important;\n }\n\n .gleap-tour-message img {\n width: 100%;\n max-width: 100%;\n min-height: 260px;\n height: auto;\n margin-top: 10px;\n margin-bottom: 10px;\n object-fit: cover;\n }\n\n .gleap-tour-active .gleap-tour-overlay {\n pointer-events: none;\n }\n \n .gleap-tour-active * {\n pointer-events: none;\n }\n \n .gleap-tour-active .gleap-tour-active-element,\n .gleap-tour-active .gleap-tour-active-element *,\n .gleap-tour-popover,\n .gleap-tour-popover * {\n pointer-events: auto;\n }\n \n @keyframes animate-fade-in {\n 0% {\n opacity: 0;\n }\n \n to {\n opacity: 1;\n }\n }\n \n .gleap-tour-fade .gleap-tour-overlay {\n animation: animate-fade-in 200ms ease-in-out;\n }\n \n .gleap-tour-fade .gleap-tour-popover {\n animation: animate-fade-in 200ms;\n }\n\n .gleap-tour-video-playpause {\n position: absolute;\n bottom: 8px;\n left: 8px;\n width: 32px;\n height: 32px;\n padding: 4px;\n background-color: rgba(0,0,0,0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border-radius: 8px;\n transition: opacity 200ms ease-in-out;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-arrow {\n display: none !important;\n }\n\n .gleap-tour-video-playpause svg {\n width: 34px;\n height: auto;\n fill: #fff;\n }\n \n /* Popover styles */\n .gleap-tour-popover {\n all: unset;\n box-sizing: border-box;\n color: #2d2d2d;\n margin: 0;\n padding: 15px;\n border-radius: ${formItemBorderRadius}px;\n min-width: 250px;\n max-width: 300px;\n box-shadow: 0 1px 10px #0006;\n z-index: 1000000000;\n position: fixed;\n top: 0;\n right: 0;\n background-color: #fff;\n }\n \n .gleap-tour-popover * {\n font-family: \"Helvetica Neue\", Inter, ui-sans-serif, \"Apple Color Emoji\", Helvetica, Arial, sans-serif;\n }\n \n .gleap-tour-popover-title {\n font: 19px / normal sans-serif;\n font-weight: 700;\n display: block;\n position: relative;\n line-height: 1.5;\n zoom: 1;\n margin: 0;\n }\n \n .gleap-tour-popover-close-btn {\n all: unset;\n position: absolute;\n top: 5px;\n right: 5px;\n width: 32px;\n height: 32px;\n cursor: pointer;\n font-size: 30px;\n font-weight: 500;\n line-height: 32px;\n color: #d2d2d2;\n z-index: 1;\n text-align: center;\n transition: color;\n transition-duration: 200ms;\n }\n \n .gleap-tour-popover-close-btn:hover,\n .gleap-tour-popover-close-btn:focus {\n color: #2d2d2d;\n }\n \n .gleap-tour-popover-title[style*=\"block\"] + .gleap-tour-popover-description {\n margin-top: 5px;\n }\n \n .gleap-tour-popover-description {\n margin-bottom: 0;\n font: 15px / normal sans-serif;\n line-height: 1.5;\n font-weight: 400;\n zoom: 1;\n }\n \n .gleap-tour-popover-footer {\n margin-top: 15px;\n text-align: right;\n zoom: 1;\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n \n .gleap-tour-popover-progress-text {\n font-size: 13px;\n font-weight: 400;\n color: #727272;\n zoom: 1;\n }\n \n .gleap-tour-popover-footer button {\n background-color: ${primaryColor};\n color: ${contrastColor};\n border-radius: ${formItemSmallBorderRadius}px;\n box-sizing: border-box;\n padding: 10px 20px;\n font-size: 14px;\n font-weight: bold;\n line-height: 21px;\n border: none;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: none !important;\n outline: none !important;\n }\n\n .gleap-tour-popover-prev-btn {\n color: ${contrastBackgroundColor} !important;\n background-color: ${backgroundColorHover} !important;\n margin-right: 3px;\n }\n\n .gleap-tour-popover-prev-btn:hover {\n background-color: ${primaryColor}22 !important;\n color: ${primaryColor} !important;\n }\n \n .gleap-tour-popover-footer .gleap-tour-popover-btn-disabled {\n opacity: 0.5;\n pointer-events: none;\n }\n \n /* Disable the scrolling of parent element if it has an active element*/\n :not(body):has(> .gleap-tour-active-element) {\n overflow: hidden !important;\n }\n \n .gleap-tour-no-interaction, .gleap-tour-no-interaction * {\n pointer-events: none !important;\n }\n \n .gleap-tour-popover-navigation-btns {\n display: flex;\n flex-grow: 1;\n justify-content: flex-end;\n }\n \n .gleap-tour-popover-navigation-btns button + button {\n margin-left: 4px;\n }\n \n .gleap-tour-popover-arrow {\n content: \"\";\n position: absolute;\n border: 5px solid #fff;\n }\n \n .gleap-tour-popover-arrow-side-over {\n display: none;\n }\n \n /** Popover Arrow Sides **/\n .gleap-tour-popover-arrow-side-left {\n left: 100%;\n border-right-color: transparent;\n border-bottom-color: transparent;\n border-top-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-right {\n right: 100%;\n border-left-color: transparent;\n border-bottom-color: transparent;\n border-top-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-top {\n top: 100%;\n border-right-color: transparent;\n border-bottom-color: transparent;\n border-left-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-bottom {\n bottom: 100%;\n border-left-color: transparent;\n border-top-color: transparent;\n border-right-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-center {\n display: none;\n }\n \n /* Left/Start + Right/Start */\n .gleap-tour-popover-arrow-side-left.gleap-tour-popover-arrow-align-start,\n .gleap-tour-popover-arrow-side-right.gleap-tour-popover-arrow-align-start {\n top: 15px;\n }\n \n /* Top/Start + Bottom/Start */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-start,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-start {\n left: 15px;\n }\n \n /* End/Left + End/Right */\n .gleap-tour-popover-arrow-align-end.gleap-tour-popover-arrow-side-left,\n .gleap-tour-popover-arrow-align-end.gleap-tour-popover-arrow-side-right {\n bottom: 15px;\n }\n \n /* Top/End + Bottom/End */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-end,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-end {\n right: 15px;\n }\n \n /* Left/Center + Right/Center */\n .gleap-tour-popover-arrow-side-left.gleap-tour-popover-arrow-align-center,\n .gleap-tour-popover-arrow-side-right.gleap-tour-popover-arrow-align-center {\n top: 50%;\n margin-top: -5px;\n }\n \n /* Top/Center + Bottom/Center */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-center,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-center {\n left: 50%;\n margin-left: -5px;\n }\n \n /* No arrow */\n .gleap-tour-popover-arrow-none {\n display: none;\n } \n\n /* Modal styles */\n .gleap-modal-wrapper {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: ${zIndexBase + 40};\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .gleap-modal-backdrop {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.5);\n z-index: ${zIndexBase + 41};\n }\n\n .gleap-modal {\n position: relative;\n width: 90%;\n max-width: 600px;\n max-height: 90vh;\n z-index: ${zIndexBase + 100};\n background-color: ${backgroundColor};\n border-radius: ${containerRadius}px;\n overflow: hidden;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-name: gleapFadeInUp;\n }\n\n .gleap-modal-frame {\n width: 100%;\n border: none;\n display: block;\n outline: none;\n }\n\n body.gleap-modal-open {\n overflow: hidden;\n }\n\n @keyframes gleapFadeInUp {\n from {\n opacity: 0;\n transform: translate3d(0, 20px, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n `;\n\n const oldNode = document.querySelector(\".gleap-styles\");\n if (oldNode) {\n oldNode.remove();\n }\n const node = document.createElement(\"style\");\n node.innerHTML = colorStyleSheet;\n node.className = \"gleap-styles\";\n document.body.appendChild(node);\n};\n\nexport const loadIcon = function (name, color) {\n if (name === \"button\") {\n return ``;\n }\n\n if (name === \"drag\") {\n return ``;\n }\n\n if (name === \"unmute\") {\n return ``;\n }\n\n if (name === \"mute\") {\n return ``;\n }\n\n if (name === \"replay\") {\n return `\n \n `;\n }\n\n if (name === \"dismiss\") {\n return ``;\n }\n\n if (name === \"blur\") {\n return `\n \n`;\n }\n\n if (name === \"pen\") {\n return `\n \n \n \n \n \n \n \n \n \n \n \n \n`;\n }\n\n if (name === \"rect\") {\n return `\n \n \n \n \n \n \n \n \n \n \n`;\n }\n\n if (name === \"pointer\") {\n return `\n \n `;\n }\n\n if (name === \"clip\") {\n return `\n \n \n \n \n \n`;\n }\n\n if (name === \"mic\") {\n return `\n \n \n \n \n `;\n }\n\n if (name === \"camera\") {\n return `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n`;\n }\n\n if (name === \"recorderon\") {\n return `\n \n \n \n \n \n \n \n \n \n \n \n`;\n }\n\n if (name === \"recorderoff\") {\n return `\n \n \n \n \n \n \n \n \n `;\n }\n\n if (name === \"arrowdown\") {\n return `\n \n `;\n }\n\n if (name === \"arrowleft\") {\n return `\n \n `;\n }\n\n if (name === \"close\") {\n return `\n \n `;\n }\n\n if (name === \"undo\") {\n return `\n \n \n \n \n \n \n \n \n \n `;\n }\n\n if (name === \"circle-dot\") {\n return ``;\n }\n\n if (name === \"circle-question\") {\n return ``;\n }\n\n if (name === \"circle-info\") {\n return ``;\n }\n\n if (name === \"circle-exclamation\") {\n return ``;\n }\n\n if (name === \"circle-up\") {\n return ``;\n }\n\n if (name === \"circle-right\") {\n return ``;\n }\n\n return \"\";\n};\n","class GleapNetworkIntercepter {\n startTimestamp = Date.now();\n requestId = 0;\n requests = {};\n externalRequests = [];\n maxRequests = 30;\n filters = [];\n defaultBlacklist = [\"gleap.io\"];\n blacklist = [];\n initialized = false;\n stopped = false;\n loadAllResources = false;\n\n // GleapNetworkIntercepter singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapNetworkIntercepter();\n }\n return this.instance;\n }\n\n setLoadAllResources(loadAllResources) {\n this.loadAllResources = loadAllResources;\n }\n\n isContentTypeSupported(contentType) {\n if (typeof contentType !== \"string\") {\n return false;\n }\n\n if (contentType === \"\") {\n return true;\n }\n\n contentType = contentType.toLocaleLowerCase();\n\n const supportedContentTypes = [\"text/\", \"xml\", \"json\"];\n for (var i = 0; i < supportedContentTypes.length; i++) {\n if (contentType.includes(supportedContentTypes[i])) {\n return true;\n }\n }\n\n return false;\n }\n\n getRequests() {\n var requests = JSON.parse(JSON.stringify(Object.values(this.requests)));\n\n // Merge external requests into internal requests.\n if (this.externalRequests && this.externalRequests.length > 0) {\n requests = requests.concat(this.externalRequests);\n }\n\n if (this.filters && this.filters.length > 0) {\n // Perform network log filtering.\n for (var i = 0; i < requests.length; i++) {\n var request = requests[i];\n\n // Headers\n if (request && request.request && request.request.headers) {\n for (var j = 0; j < this.filters.length; j++) {\n delete request.request.headers[this.filters[j]];\n }\n }\n\n // Payload\n if (request && request.request && request.request.payload) {\n var payloadObj = request.request.payload;\n try {\n payloadObj = JSON.parse(request.request.payload);\n } catch (e) { }\n\n if (payloadObj) {\n for (var j = 0; j < this.filters.length; j++) {\n delete payloadObj[this.filters[j]];\n }\n request.request.payload = JSON.stringify(payloadObj);\n }\n }\n\n // Response\n if (request && request.response && request.response.responseText) {\n try {\n var data = JSON.parse(request.response.responseText);\n for (var j = 0; j < this.filters.length; j++) {\n delete data[this.filters[j]];\n }\n request.response.responseText = JSON.stringify(data);\n } catch (e) { }\n }\n }\n }\n\n // Get static resources from performance.\n try {\n if (typeof window !== \"undefined\" && window.performance) {\n var resources = window.performance.getEntriesByType(\"resource\");\n for (var i = 0; i < resources.length; i++) {\n var resource = resources[i];\n if (resource && resource.name) {\n if ((this.loadAllResources || [\"xmlhttprequest\", \"fetch\"].indexOf(resource.initiatorType) > -1) && !requests.find(request => request.url === resource.name)) {\n requests.push({\n type: \"RESOURCE\",\n date: new Date(this.startTimestamp + resource.startTime),\n url: resource.name,\n duration: Math.round(resource.duration),\n initiatorType: resource.initiatorType\n });\n }\n }\n }\n }\n } catch (exp) { }\n\n var blacklist = this.blacklist.concat(this.defaultBlacklist);\n if (blacklist && blacklist.length > 0) {\n try {\n requests = requests.filter((request) => {\n for (var i = 0; i < blacklist.length; i++) {\n if (request && request.url && request.url.includes(blacklist[i])) {\n return false;\n }\n }\n return true;\n });\n } catch (exp) { }\n }\n\n return requests;\n }\n\n setMaxRequests(maxRequests) {\n if (maxRequests > 70) {\n maxRequests = 70;\n }\n this.maxRequests = maxRequests;\n }\n\n setStopped(stopped) {\n this.stopped = stopped;\n }\n\n setFilters(filters) {\n this.filters = this.filters.concat(filters ? filters : []);\n }\n\n setBlacklist(blacklist) {\n this.blacklist = this.blacklist.concat(blacklist ? blacklist : []);\n }\n\n cleanRequests() {\n var keys = Object.keys(this.requests);\n if (keys.length > this.maxRequests) {\n var keysToRemove = keys.slice(0, keys.length - this.maxRequests);\n for (var i = 0; i < keysToRemove.length; i++) {\n delete this.requests[keysToRemove[i]];\n }\n }\n }\n\n calcRequestTime(bbRequestId) {\n if (!bbRequestId || !this.requests || !this.requests[bbRequestId]) {\n return;\n }\n\n var startDate = this.requests[bbRequestId][\"date\"];\n if (startDate) {\n this.requests[bbRequestId][\"duration\"] =\n new Date().getTime() - startDate.getTime();\n }\n }\n\n getTextContentSize(text) {\n var size = 0;\n try {\n size = new TextEncoder().encode(text).length;\n } catch (exp) {\n try {\n size = encodeURI(s).split(/%..|./).length - 1;\n } catch (exp) {\n try {\n size = new Blob([text]).size;\n } catch (exp) {\n size = text.length;\n }\n }\n }\n\n const kiloBytes = size / 1024;\n const megaBytes = kiloBytes / 1024;\n return megaBytes;\n }\n\n cleanupContentSize(text) {\n const contentSize = this.getTextContentSize(text);\n if (contentSize > 0.15) {\n return \"\";\n }\n\n return text;\n }\n\n cleanupPayload(payload) {\n if (payload === undefined || payload === null) {\n return \"{}\";\n }\n\n try {\n if (typeof TextDecoder !== undefined && ArrayBuffer.isView(payload)) {\n let value = new TextDecoder().decode(payload);\n return value;\n }\n } catch (exp) { }\n\n return payload;\n }\n\n preparePayload(payload) {\n var payloadText = this.cleanupPayload(payload);\n return this.cleanupContentSize(payloadText);\n }\n\n start() {\n if (this.initialized) {\n return;\n }\n\n this.initialized = true;\n const self = this;\n this.interceptNetworkRequests({\n onFetch: (params, bbRequestId) => {\n if (this.stopped || !bbRequestId || !this.requests) {\n return;\n }\n\n if (\n params.length > 0 &&\n typeof params[0] !== \"undefined\" &&\n typeof params[0].url !== \"undefined\"\n ) {\n this.requests[bbRequestId] = {\n url: params[0].url,\n date: new Date(),\n request: {\n payload: \"\",\n headers:\n typeof params[0].headers !== \"undefined\"\n ? Object.fromEntries(params[0].headers.entries())\n : {},\n },\n type:\n typeof params[0].method !== \"undefined\" ? params[0].method : \"\",\n };\n } else {\n if (params.length >= 2 && params[1]) {\n var method =\n params[1] && params[1].method ? params[1].method : \"GET\";\n this.requests[bbRequestId] = {\n request: {\n payload: self.preparePayload(params[1].body),\n headers: params[1].headers,\n },\n type: method,\n url: params[0],\n date: new Date(),\n };\n } else {\n this.requests[bbRequestId] = {\n url: params[0],\n date: new Date(),\n };\n }\n }\n\n this.cleanRequests();\n },\n onFetchLoad: (req, bbRequestId) => {\n if (\n this.stopped ||\n !bbRequestId ||\n !this.requests ||\n !this.requests[bbRequestId]\n ) {\n return;\n }\n\n try {\n this.requests[bbRequestId][\"success\"] = true;\n this.requests[bbRequestId][\"response\"] = {\n status: req.status,\n statusText: \"\",\n responseText: \"\",\n };\n this.calcRequestTime(bbRequestId);\n } catch (exp) { }\n\n try {\n var contentType = \"\";\n if (req.headers && typeof req.headers.get !== \"undefined\") {\n contentType = req.headers.get(\"content-type\");\n }\n\n if (this.isContentTypeSupported(contentType)) {\n req\n .text()\n .then((responseText) => {\n if (this.requests[bbRequestId]) {\n this.requests[bbRequestId][\"success\"] = true;\n this.requests[bbRequestId][\"response\"] = {\n status: req.status,\n statusText: req.statusText,\n responseText: self.cleanupContentSize(responseText)\n };\n }\n this.calcRequestTime(bbRequestId);\n this.cleanRequests();\n })\n .catch((err) => {\n this.cleanRequests();\n });\n } else {\n if (this.requests[bbRequestId]) {\n this.requests[bbRequestId][\"success\"] = true;\n this.requests[bbRequestId][\"response\"] = {\n status: req.status,\n statusText: req.statusText,\n responseText: \"\",\n };\n }\n this.calcRequestTime(bbRequestId);\n this.cleanRequests();\n }\n } catch (exp) { }\n },\n onFetchFailed: (err, bbRequestId) => {\n if (\n this.stopped ||\n !bbRequestId ||\n !this.requests ||\n !this.requests[bbRequestId]\n ) {\n return;\n }\n\n this.requests[bbRequestId][\"success\"] = false;\n this.calcRequestTime(bbRequestId);\n this.cleanRequests();\n },\n onOpen: (request, args) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.bbRequestId &&\n args.length >= 2 &&\n this.requests\n ) {\n this.requests[request.bbRequestId] = {\n type: args[0],\n url: args[1],\n date: new Date(),\n };\n }\n\n this.cleanRequests();\n },\n onSend: (request, args) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.bbRequestId &&\n this.requests &&\n this.requests[request.bbRequestId]\n ) {\n this.requests[request.bbRequestId][\"request\"] = {\n payload: this.preparePayload(args.length > 0 ? args[0] : \"{}\"),\n headers: request.requestHeaders,\n };\n }\n\n this.cleanRequests();\n },\n onError: (request, args) => {\n if (\n !this.stopped &&\n this.requests &&\n request &&\n request.currentTarget &&\n request.currentTarget.bbRequestId &&\n this.requests[request.currentTarget.bbRequestId]\n ) {\n this.requests[request.currentTarget.bbRequestId][\"success\"] = false;\n this.calcRequestTime(request.bbRequestId);\n }\n\n this.cleanRequests();\n },\n onLoad: (request, args) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.currentTarget &&\n request.currentTarget.bbRequestId &&\n this.requests &&\n this.requests[request.currentTarget.bbRequestId]\n ) {\n var target = request.currentTarget;\n var responseType = target.responseType;\n var responseText = \"<\" + responseType + \">\";\n if (responseType === \"\" || responseType === \"text\") {\n responseText = this.cleanupContentSize(target.responseText);\n }\n\n this.requests[target.bbRequestId][\"success\"] = true;\n this.requests[target.bbRequestId][\"response\"] = {\n status: target.status,\n statusText: target.statusText,\n responseText: responseText,\n };\n\n this.calcRequestTime(target.bbRequestId);\n }\n\n this.cleanRequests();\n },\n });\n }\n\n interceptNetworkRequests(callback) {\n var self = this;\n const open = XMLHttpRequest.prototype.open;\n const send = XMLHttpRequest.prototype.send;\n\n // Only override open and send if they haven't been overridden already.\n if (XMLHttpRequest.prototype.gleapSetRequestHeader === undefined) {\n XMLHttpRequest.prototype.gleapSetRequestHeader =\n XMLHttpRequest.prototype.setRequestHeader;\n }\n\n if (XMLHttpRequest.prototype.gleapSetRequestHeader) {\n XMLHttpRequest.prototype.setRequestHeader = function (header, value) {\n if (!this.requestHeaders) {\n this.requestHeaders = {};\n }\n\n if (this.requestHeaders && this.requestHeaders.hasOwnProperty(header)) {\n return;\n }\n\n if (!this.requestHeaders[header]) {\n this.requestHeaders[header] = [];\n }\n\n this.requestHeaders[header].push(value);\n this.gleapSetRequestHeader(header, value);\n };\n }\n\n XMLHttpRequest.prototype.open = function () {\n this[\"bbRequestId\"] = ++self.requestId;\n callback.onOpen && callback.onOpen(this, arguments);\n if (callback.onLoad) {\n this.addEventListener(\"load\", callback.onLoad.bind(callback));\n }\n if (callback.onError) {\n this.addEventListener(\"error\", callback.onError.bind(callback));\n }\n return open.apply(this, arguments);\n };\n XMLHttpRequest.prototype.send = function () {\n callback.onSend && callback.onSend(this, arguments);\n return send.apply(this, arguments);\n };\n\n if (window.fetch) {\n (function () {\n var originalFetch = window.fetch;\n window.fetch = function () {\n var bbRequestId = ++self.requestId;\n callback.onFetch(arguments, bbRequestId);\n\n return originalFetch\n .apply(this, arguments)\n .then(function (response) {\n if (response && typeof response.clone === \"function\") {\n const data = response.clone();\n callback.onFetchLoad(data, bbRequestId);\n }\n\n return response;\n })\n .catch((err) => {\n callback.onFetchFailed(err, bbRequestId);\n throw err;\n });\n };\n })();\n }\n\n return callback;\n }\n\n blobToTextPromise(blob) {\n return new Promise(function (resolve, reject) {\n var fr = new FileReader();\n fr.onload = function (evt) {\n if (evt && evt.target && evt.target.result) {\n resolve(evt.target.result);\n } else {\n reject();\n }\n };\n fr.onerror = function (err) {\n reject(err);\n };\n fr.readAsText(blob);\n });\n }\n}\n\nexport default GleapNetworkIntercepter;\n","export const resizeImage = (base64Str, maxWidth = 400, maxHeight = 400) => {\n return new Promise((resolve, reject) => {\n var isJPEG = base64Str.indexOf(\"data:image/jpeg\") === 0;\n var img = new Image();\n img.src = base64Str;\n img.onerror = () => {\n reject();\n };\n img.onload = () => {\n var canvas = document.createElement(\"canvas\");\n var MAX_WIDTH = maxWidth;\n var MAX_HEIGHT = maxHeight;\n\n // Adjust max width / height based on image props\n if (maxWidth > img.width / 1.5) {\n MAX_WIDTH = img.width / 1.5;\n }\n\n if (maxHeight > img.height / 1.5) {\n MAX_HEIGHT = img.height / 1.5;\n }\n\n var width = img.width;\n var height = img.height;\n\n if (width > height) {\n if (width > MAX_WIDTH) {\n height *= MAX_WIDTH / width;\n width = MAX_WIDTH;\n }\n } else {\n if (height > MAX_HEIGHT) {\n width *= MAX_HEIGHT / height;\n height = MAX_HEIGHT;\n }\n }\n canvas.width = width;\n canvas.height = height;\n var ctx = canvas.getContext(\"2d\");\n ctx.drawImage(img, 0, 0, width, height);\n\n if (isJPEG) {\n resolve(canvas.toDataURL(\"image/jpeg\", 0.7));\n } else {\n resolve(canvas.toDataURL());\n }\n };\n });\n};\n\nexport const isMobile = () => {\n if (\n /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(\n navigator.userAgent\n ) ||\n /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(\n navigator.userAgent.substr(0, 4)\n )\n ) {\n return true;\n }\n return false;\n};\n\nexport const gleapDataParser = function (data) {\n if (typeof data === \"string\" || data instanceof String) {\n try {\n return JSON.parse(data);\n } catch (e) {\n return {};\n }\n }\n return data;\n};\n\nexport const truncateString = (str, num) => {\n if (str.length > num) {\n return str.slice(0, num) + \"...\";\n } else {\n return str;\n }\n};\n\nconst removeSubDomain = (v) => {\n try {\n var parts = v.split(\".\");\n var is2ndLevelDomain = false;\n const secondLevel = parts[parts.length - 2];\n if (\n secondLevel === \"co\" ||\n secondLevel === \"com\" ||\n secondLevel === \"gv\" ||\n secondLevel === \"ac\" ||\n secondLevel === \"edu\" ||\n secondLevel === \"gov\" ||\n secondLevel === \"mil\" ||\n secondLevel === \"net\" ||\n secondLevel === \"org\"\n ) {\n is2ndLevelDomain = true;\n }\n parts = parts.slice(is2ndLevelDomain ? -3 : -2);\n return parts.join(\".\");\n } catch (exp) {}\n return v;\n};\n\nexport const loadFromGleapCache = (key) => {\n try {\n const cachedData = localStorage.getItem(`gleap-widget-${key}`);\n if (cachedData) {\n const config = JSON.parse(cachedData);\n return config;\n }\n } catch (exp) {}\n return null;\n};\n\nexport const saveToGleapCache = (key, data) => {\n const k = `gleap-widget-${key}`;\n if (data) {\n try {\n localStorage.setItem(k, JSON.stringify(data));\n } catch (exp) {}\n } else {\n localStorage.removeItem(k);\n }\n};\n\nexport const setGleapCookie = (name, value, days) => {\n try {\n var expires = \"\";\n if (days) {\n var date = new Date();\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\n expires = \"; expires=\" + date.toUTCString();\n }\n const host = removeSubDomain(window.location.host.split(\":\")[0]);\n document.cookie =\n name + \"=\" + (value || \"\") + expires + \"; path=/; domain=\" + host;\n } catch (exp) {}\n};\n\nexport const getGleapCookie = (name) => {\n try {\n var nameEQ = name + \"=\";\n var ca = document.cookie.split(\";\");\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n while (c.charAt(0) == \" \") c = c.substring(1, c.length);\n if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);\n }\n } catch (exp) {}\n return null;\n};\n\nexport const eraseGleapCookie = (name) => {\n try {\n const host = removeSubDomain(window.location.host.split(\":\")[0]);\n document.cookie =\n name + \"=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT; Domain=\" + host;\n } catch (exp) {}\n};\n\nexport const getDOMElementDescription = (element, html = true) => {\n var innerText = truncateString(element.innerText || \"\", 40)\n .replace(/(\\r\\n|\\n|\\r)/gm, \"\")\n .replace(/ +(?= )/g, \"\");\n var elementId = \"\";\n var elementClass = \"\";\n if (typeof element.getAttribute !== \"undefined\") {\n const elemId = element.getAttribute(\"id\");\n if (elemId) {\n elementId = ` id=\"${elemId}\"`;\n }\n const elemClass = element.getAttribute(\"class\");\n if (elemClass) {\n elementClass = ` class=\"${elemClass}\"`;\n }\n }\n const elementTag = (element.tagName || \"\").toLowerCase();\n\n var htmlPre = \"<\";\n var htmlPost = \">\";\n if (!html) {\n htmlPre = \"[\";\n htmlPost = \"]\";\n }\n\n return `${htmlPre}${elementTag}${elementId}${elementClass}${htmlPost}${innerText}${htmlPre}/${elementTag}${htmlPost}`;\n};\n\nexport const runFunctionWhenDomIsReady = (callback) => {\n if (\n document.readyState === \"complete\" ||\n document.readyState === \"loaded\" ||\n document.readyState === \"interactive\"\n ) {\n callback();\n } else {\n document.addEventListener(\"DOMContentLoaded\", () => {\n callback();\n });\n }\n};\n\nexport const fixGleapHeight = () => {\n try {\n if (\n \"visualViewport\" in window &&\n /iPad|iPhone|iPod/.test(navigator.userAgent)\n ) {\n let initialHeight = window.innerHeight;\n\n function updateContainerHeight() {\n try {\n const gleapFrameContainer = document.querySelector(\n \".gleap-frame-container-inner iframe\"\n );\n\n if (!gleapFrameContainer) {\n return;\n }\n\n // Check if the keyboard is open\n if (window.visualViewport.height < initialHeight) {\n gleapFrameContainer.style.setProperty(\n \"max-height\",\n window.visualViewport.height + \"px\",\n \"important\"\n );\n } else {\n // Remove the padding bottom\n gleapFrameContainer.style.removeProperty(\"max-height\");\n }\n } catch (error) {}\n }\n\n function handleOrientationChange() {\n try {\n // Update initial dimensions\n initialHeight = window.innerHeight;\n updateContainerHeight();\n } catch (error) {}\n }\n\n // Update on resize (keyboard show/hide and viewport resize)\n window.visualViewport.addEventListener(\"resize\", updateContainerHeight);\n\n // Handle orientation changes\n window.addEventListener(\"orientationchange\", handleOrientationChange);\n\n // Update initially\n updateContainerHeight();\n }\n } catch (error) {}\n};\n","import { GleapSession, GleapTranslationManager } from \"./Gleap\"; // Adjust path if needed\n\n// Enum for request states\nconst RequestStatus = {\n PENDING: \"pending\",\n SUCCESS: \"success\",\n ERROR: \"error\",\n};\n\nclass ChecklistNetworkManager {\n static instance = null;\n\n /** @private {Map>} outboundId -> Promise */\n validationRequests = new Map();\n /** @private {Map} */\n validationCache = new Map(); // Caches final results (success/error)\n\n /** @private {Map>} internalId -> Promise */\n fetchRequests = new Map();\n /** @private {Map} */\n fetchCache = new Map(); // Caches final results (success/error)\n\n // Private constructor for Singleton\n constructor() {\n if (ChecklistNetworkManager.instance) {\n return ChecklistNetworkManager.instance;\n }\n ChecklistNetworkManager.instance = this;\n }\n\n /**\n * Gets the singleton instance of the ChecklistNetworkManager.\n * @returns {ChecklistNetworkManager} The singleton instance.\n */\n static getInstance() {\n if (!ChecklistNetworkManager.instance) {\n ChecklistNetworkManager.instance = new ChecklistNetworkManager();\n }\n return ChecklistNetworkManager.instance;\n }\n\n clearCache() {\n this.validationCache.clear();\n this.fetchCache.clear();\n this.validationRequests.clear();\n this.fetchRequests.clear();\n }\n\n /**\n * @private\n * Gets common query parameters for API requests.\n * @returns {string} Query parameter string.\n */\n _getQueryParams() {\n const gleapSessionInstance = GleapSession.getInstance();\n const session = gleapSessionInstance?.session;\n const lang =\n GleapTranslationManager.getInstance().getActiveLanguage() || \"en\";\n return `gleapId=${session?.gleapId || \"\"}&gleapHash=${\n session?.gleapHash || \"\"\n }&lang=${lang}`;\n }\n\n /**\n * @private\n * Gets the API base URL.\n * @returns {string | null} The API URL or null if not configured.\n */\n _getApiUrl() {\n const gleapSessionInstance = GleapSession.getInstance();\n return gleapSessionInstance?.apiUrl || null;\n }\n\n /**\n * @private\n * Makes an XMLHttpRequest and returns a Promise.\n * @param {string} method - HTTP method.\n * @param {string} url - The request URL.\n * @param {object|null} data - Data to send in the request body.\n * @returns {Promise} Promise resolving with parsed JSON response on success, rejecting on error.\n */\n _makeRequest(method, url, data) {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n xhr.open(method, url);\n\n const gleapSessionInstance = GleapSession.getInstance();\n gleapSessionInstance?.injectSession(xhr); // Inject session headers\n\n if (data) {\n xhr.setRequestHeader(\"Content-Type\", \"application/json;charset=UTF-8\");\n }\n\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n if (xhr.status >= 200 && xhr.status < 300) {\n try {\n // Handle potential empty success responses (e.g., 204)\n const responseData = xhr.responseText\n ? JSON.parse(xhr.responseText)\n : null;\n resolve(responseData);\n } catch (err) {\n reject({\n status: xhr.status,\n statusText: \"JSON Parse Error\",\n responseText: xhr.responseText,\n error: err,\n });\n }\n } else {\n reject({\n status: xhr.status,\n statusText: xhr.statusText,\n responseText: xhr.responseText,\n });\n }\n }\n };\n\n xhr.onerror = () => {\n reject({ status: 0, statusText: \"Network Error\", responseText: null });\n };\n\n xhr.send(data ? JSON.stringify(data) : null);\n });\n }\n\n /**\n * @private\n * Creates a cache key from outboundId and sharedKey\n * @param {string} outboundId - The public/outbound checklist ID.\n * @param {string|undefined} sharedKey - Optional shared key.\n * @returns {string} Combined cache key.\n */\n _createCacheKey(outboundId, sharedKey) {\n return sharedKey ? `${outboundId}::${sharedKey}` : outboundId;\n }\n\n /**\n * Validates an outbound checklist ID, returning a Promise for the internal ID.\n * Manages caching and deduplicates requests.\n * @param {string} outboundId - The public/outbound checklist ID.\n * @param {string} [sharedKey] - Optional shared key for the checklist.\n * @returns {Promise} A promise that resolves with the internal checklist ID.\n */\n validateChecklist(outboundId, sharedKey) {\n const cacheKey = this._createCacheKey(outboundId, sharedKey);\n\n // 1. Check cache for final result (success or error)\n const cachedResult = this.validationCache.get(cacheKey);\n if (cachedResult) {\n if (cachedResult.status === RequestStatus.SUCCESS) {\n return Promise.resolve(cachedResult.internalId);\n } else {\n return Promise.reject(cachedResult.error);\n }\n }\n\n // 2. Check for an ongoing request\n if (this.validationRequests.has(cacheKey)) {\n return this.validationRequests.get(cacheKey);\n }\n\n // 3. Start a new request\n const apiUrl = this._getApiUrl();\n if (!apiUrl) {\n const error = new Error(\n \"ChecklistNetworkManager: Gleap API URL not configured.\"\n );\n this.validationCache.set(cacheKey, {\n status: RequestStatus.ERROR,\n error,\n });\n return Promise.reject(error);\n }\n\n const url = `${apiUrl}/outbound/checklists?${this._getQueryParams()}`;\n const requestPromise = this._makeRequest(\"POST\", url, {\n outboundId,\n sharedKey,\n })\n .then((responseData) => {\n if (responseData && responseData.id) {\n this.validationCache.set(cacheKey, {\n status: RequestStatus.SUCCESS,\n internalId: responseData.id,\n });\n return responseData.id;\n } else {\n const error = new Error(\"Validation response missing checklist ID.\");\n this.validationCache.set(cacheKey, {\n status: RequestStatus.ERROR,\n error: responseData || error,\n });\n throw error; // Rethrow to be caught by catch block\n }\n })\n .catch((error) => {\n // Store the error object itself in the cache\n this.validationCache.set(cacheKey, {\n status: RequestStatus.ERROR,\n error,\n });\n throw error; // Re-throw so callers can catch it\n })\n .finally(() => {\n // Remove from pending requests map once done (success or fail)\n this.validationRequests.delete(cacheKey);\n });\n\n // Store the promise for potential concurrent requests\n this.validationRequests.set(cacheKey, requestPromise);\n return requestPromise;\n }\n\n /**\n * Fetches the full checklist data using the internal ID, returning a Promise.\n * Manages caching and deduplicates requests.\n * @param {string} internalId - The internal checklist ID.\n * @returns {Promise} A promise that resolves with the full checklist data.\n */\n fetchChecklist(internalId) {\n // 1. Check cache for final result (success or error)\n const cachedResult = this.fetchCache.get(internalId);\n if (cachedResult) {\n if (cachedResult.status === RequestStatus.SUCCESS) {\n // Return a deep copy to prevent mutation issues if multiple components use it\n return Promise.resolve(JSON.parse(JSON.stringify(cachedResult.data)));\n } else {\n return Promise.reject(cachedResult.error);\n }\n }\n\n // 2. Check for an ongoing request\n if (this.fetchRequests.has(internalId)) {\n // Return a promise that resolves with a deep copy\n return this.fetchRequests\n .get(internalId)\n .then((data) => JSON.parse(JSON.stringify(data)));\n }\n\n // 3. Start a new request\n const apiUrl = this._getApiUrl();\n if (!apiUrl) {\n const error = new Error(\n \"ChecklistNetworkManager: Gleap API URL not configured.\"\n );\n this.fetchCache.set(internalId, { status: RequestStatus.ERROR, error });\n return Promise.reject(error);\n }\n\n const url = `${apiUrl}/outbound/checklists/${internalId}?convertTipTap=true&${this._getQueryParams()}`;\n const requestPromise = this._makeRequest(\"GET\", url, null)\n .then((responseData) => {\n if (responseData) {\n // Cache the successful data\n this.fetchCache.set(internalId, {\n status: RequestStatus.SUCCESS,\n data: responseData,\n });\n // Return a deep copy of the data\n return JSON.parse(JSON.stringify(responseData));\n } else {\n // Should not happen with successful GET usually, but handle defensively\n const error = new Error(\n \"Empty response received for checklist fetch.\"\n );\n this.fetchCache.set(internalId, {\n status: RequestStatus.ERROR,\n error: responseData || error,\n });\n throw error;\n }\n })\n .catch((error) => {\n this.fetchCache.set(internalId, { status: RequestStatus.ERROR, error });\n throw error; // Re-throw so callers can catch it\n })\n .finally(() => {\n // Remove from pending requests map once done (success or fail)\n this.fetchRequests.delete(internalId);\n });\n\n this.fetchRequests.set(internalId, requestPromise);\n // Return a promise that resolves with a deep copy\n return requestPromise.then((data) => JSON.parse(JSON.stringify(data)));\n }\n}\n\nexport default ChecklistNetworkManager;\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n const lr = ['left', 'right'];\n const rl = ['right', 'left'];\n const tb = ['top', 'bottom'];\n const bt = ['bottom', 'top'];\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rl : lr;\n return isStart ? lr : rl;\n case 'left':\n case 'right':\n return isStart ? tb : bt;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n return {\n ...rect,\n top: rect.y,\n left: rect.x,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n ...rects.floating,\n x,\n y\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n if (!specifiedFallbackPlacements && fallbackAxisSideDirection !== 'none') {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$map$so;\n const placement = (_overflowsData$map$so = overflowsData.map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$map$so[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: 0,\n crossAxis: 0,\n alignmentAxis: null,\n ...rawValue\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = ['top', 'left'].includes(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const overflowAvailableHeight = height - overflow[heightSide];\n const overflowAvailableWidth = width - overflow[widthSide];\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if (isYAxis) {\n const maximumClippingWidth = width - overflow.left - overflow.right;\n availableWidth = alignment || noShift ? min(overflowAvailableWidth, maximumClippingWidth) : maximumClippingWidth;\n } else {\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n availableHeight = alignment || noShift ? min(overflowAvailableHeight, maximumClippingHeight) : maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n // Browsers without `ShadowRoot` support.\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isContainingBlock(element) {\n const webkit = isWebKit();\n const css = getComputedStyle(element);\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n return css.transform !== 'none' || css.perspective !== 'none' || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else {\n currentNode = getParentNode(currentNode);\n }\n }\n return null;\n}\nfunction isWebKit() {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nfunction isLastTraversableNode(node) {\n return ['html', 'body', '#document'].includes(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.pageXOffset,\n scrollTop: element.pageYOffset\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], win.frameElement && traverseIframes ? getOverflowAncestors(win.frameElement) : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isWebKit };\n","import { rectToClientRect, autoPlacement as autoPlacement$1, shift as shift$1, flip as flip$1, size as size$1, hide as hide$1, arrow as arrow$1, inline as inline$1, limitShift as limitShift$1, computePosition as computePosition$1 } from '@floating-ui/core';\nexport { detectOverflow, offset } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement, isElement, getWindow, isWebKit, getDocumentElement, getNodeName, isOverflowElement, getNodeScroll, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = currentWin.frameElement;\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = currentWin.frameElement;\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\nconst topLayerSelectors = [':popover-open', ':modal'];\nfunction isTopLayer(floating) {\n return topLayerSelectors.some(selector => {\n try {\n return floating.matches(selector);\n } catch (e) {\n return false;\n }\n });\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\nfunction getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n ...clippingAncestor,\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n const x = rect.left + scroll.scrollLeft - offsets.x;\n const y = rect.top + scroll.scrollTop - offsets.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n return element.offsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const window = getWindow(element);\n if (!isHTMLElement(element) || isTopLayer(element)) {\n return window;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && !isContainingBlock(offsetParent))) {\n return window;\n }\n return offsetParent || getContainingBlock(element) || window;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n ...(await getDimensionsFn(data.floating))\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const {\n left,\n top,\n width,\n height\n } = element.getBoundingClientRect();\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 100);\n } else {\n refresh(false, ratio);\n }\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle `;\n document.body.appendChild(elem);\n\n this.gleapFrameContainer = elem;\n this.gleapFrame = document.querySelector(\".gleap-frame\");\n\n this.updateFrameStyle();\n\n // Show loading preview for widget app mode.\n if (this.appMode === \"widget\") {\n this.showFrameContainer(true);\n }\n });\n });\n };\n\n showImage = (url) => {\n runFunctionWhenDomIsReady(() => {\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-image-view\";\n elem.innerHTML = `
\n \n
`;\n document.body.appendChild(elem);\n\n const closeElement = () => {\n elem.remove();\n };\n\n const close = elem.querySelector(\".gleap-image-view-close\");\n close.addEventListener(\"click\", () => {\n closeElement();\n });\n\n elem.addEventListener(\"click\", (e) => {\n if (e.target === elem) {\n closeElement();\n }\n });\n });\n };\n\n updateFrameStyle = () => {\n if (!this.gleapFrameContainer) {\n return;\n }\n\n const surveyStyle = \"gleap-frame-container--survey\";\n const extendedStyle = \"gleap-frame-container--extended\";\n const surveyFullStyle = \"gleap-frame-container--survey-full\";\n const classicStyle = \"gleap-frame-container--classic\";\n const classicStyleLeft = \"gleap-frame-container--classic-left\";\n const modernStyleLeft = \"gleap-frame-container--modern-left\";\n const noButtonStyleLeft = \"gleap-frame-container--no-button\";\n const allStyles = [\n classicStyle,\n classicStyleLeft,\n extendedStyle,\n modernStyleLeft,\n noButtonStyleLeft,\n surveyStyle,\n surveyFullStyle,\n ];\n for (let i = 0; i < allStyles.length; i++) {\n this.gleapFrameContainer.classList.remove(allStyles[i]);\n }\n\n var styleToApply = undefined;\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM\n ) {\n styleToApply = classicStyle;\n }\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT\n ) {\n styleToApply = classicStyleLeft;\n }\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_BOTTOM_LEFT\n ) {\n styleToApply = modernStyleLeft;\n }\n if (GleapFeedbackButtonManager.getInstance().buttonHidden === null) {\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_NONE\n ) {\n styleToApply = noButtonStyleLeft;\n }\n } else {\n if (GleapFeedbackButtonManager.getInstance().buttonHidden) {\n styleToApply = noButtonStyleLeft;\n }\n }\n if (styleToApply) {\n this.gleapFrameContainer.classList.add(styleToApply);\n }\n\n if (this.appMode === \"survey\") {\n this.gleapFrameContainer.classList.add(surveyStyle);\n }\n if (this.appMode === \"survey_full\" || this.appMode === \"survey_web\") {\n this.gleapFrameContainer.classList.add(surveyFullStyle);\n }\n if (this.appMode === \"extended\") {\n this.gleapFrameContainer.classList.add(extendedStyle);\n }\n\n this.gleapFrameContainer.setAttribute(\n \"dir\",\n GleapTranslationManager.getInstance().isRTLLayout ? \"rtl\" : \"ltr\"\n );\n };\n\n showFrameContainer(showLoader) {\n if (!this.gleapFrameContainer) {\n return;\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const loadingClass = \"gleap-frame-container--loading\";\n if (this.gleapFrameContainer.classList) {\n this.gleapFrameContainer.classList.remove(\n \"gleap-frame-container--hidden\"\n );\n if (showLoader) {\n this.gleapFrameContainer.classList.add(loadingClass);\n\n if (flowConfig.disableBGFade) {\n this.gleapFrameContainer.classList.add(\n \"gleap-frame-container--loading-nofade\"\n );\n }\n if (flowConfig.disableBGGradient) {\n this.gleapFrameContainer.classList.add(\n \"gleap-frame-container--loading-nogradient\"\n );\n }\n } else {\n this.gleapFrameContainer.classList.remove(loadingClass);\n }\n\n setTimeout(() => {\n this.gleapFrameContainer.classList.add(\n \"gleap-frame-container--animate\"\n );\n }, 500);\n }\n\n this.widgetOpened = true;\n this.updateUI();\n }\n\n runWidgetShouldOpenCallback() {\n if (!this.gleapFrameContainer) {\n return;\n }\n\n this.workThroughQueue();\n\n Gleap.getInstance().setGlobalDataItem(\"snapshotPosition\", {\n x: window.scrollX,\n y: window.scrollY,\n });\n\n this.showFrameContainer(false);\n this.updateWidgetStatus();\n\n GleapEventManager.notifyEvent(\"open\");\n this.registerEscListener();\n }\n\n updateUI() {\n // Clear notifications only when not opening a survey.\n GleapNotificationManager.getInstance().clearAllNotifications(\n this.isSurvey()\n );\n\n GleapFeedbackButtonManager.getInstance().updateNotificationBadge(0);\n GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n }\n\n showWidget() {\n setTimeout(() => {\n if (this.gleapFrameContainer) {\n this.runWidgetShouldOpenCallback();\n } else {\n GleapFrameManager.getInstance().injectFrame();\n }\n this.updateUI();\n }, 0);\n }\n\n updateWidgetStatus() {\n this.sendMessage({\n name: \"widget-status-update\",\n data: {\n isWidgetOpen: this.widgetOpened,\n },\n });\n }\n\n hideMarkerManager() {\n if (this.markerManager) {\n this.markerManager.clear();\n this.markerManager = null;\n }\n }\n\n hideWidget(resetRoutes = false) {\n // Prevent for survey web.\n if (this.appMode === \"survey_web\") {\n return;\n }\n\n this.hideMarkerManager();\n if (this.gleapFrameContainer) {\n this.gleapFrameContainer.classList.add(\"gleap-frame-container--hidden\");\n this.gleapFrameContainer.classList.remove(\n \"gleap-frame-container--animate\"\n );\n }\n if (resetRoutes) {\n this.sendMessage({\n name: \"reset-routes\",\n data: {},\n });\n }\n this.widgetOpened = false;\n this.updateWidgetStatus();\n GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n GleapEventManager.notifyEvent(\"close\");\n GleapNotificationManager.getInstance().reloadNotificationsFromCache();\n\n this.unregisterEscListener();\n\n if (typeof window !== \"undefined\" && typeof window.focus !== \"undefined\") {\n window.focus();\n }\n }\n\n sendMessage(data, queue = false) {\n try {\n this.gleapFrame = document.querySelector(\".gleap-frame\");\n if (this.comReady && this.gleapFrame && this.gleapFrame.contentWindow) {\n this.gleapFrame.contentWindow.postMessage(JSON.stringify(data), \"*\");\n } else {\n if (queue) {\n this.queue.push(data);\n }\n }\n } catch (e) {}\n }\n\n sendSessionUpdate() {\n this.sendMessage({\n name: \"session-update\",\n data: {\n sessionData: GleapSession.getInstance().getSession(),\n apiUrl: GleapSession.getInstance().apiUrl,\n sdkKey: GleapSession.getInstance().sdkKey,\n },\n });\n }\n\n sendConfigUpdate() {\n if (!this.comReady) {\n return;\n }\n\n this.sendMessage({\n name: \"config-update\",\n data: {\n config: GleapConfigManager.getInstance().getFlowConfig(),\n aiTools: GleapConfigManager.getInstance().getAiTools(),\n overrideLanguage:\n GleapTranslationManager.getInstance().getOverrideLanguage(),\n },\n });\n\n this.updateFrameStyle();\n }\n\n showDrawingScreen(type) {\n this.hideWidget();\n\n // Show screen drawing.\n this.markerManager = new GleapMarkerManager(type);\n this.markerManager.show((success) => {\n if (!success) {\n this.hideMarkerManager();\n }\n this.showWidget();\n });\n }\n\n workThroughQueue() {\n const workQueue = [...this.queue];\n this.queue = [];\n for (let i = 0; i < workQueue.length; i++) {\n this.sendMessage(workQueue[i], true);\n }\n }\n\n startCommunication() {\n // Listen for messages.\n this.addMessageListener((data) => {\n if (data.name === \"ping\") {\n this.comReady = true;\n this.sendConfigUpdate();\n this.sendSessionUpdate();\n this.workThroughQueue();\n setTimeout(() => {\n this.runWidgetShouldOpenCallback();\n }, 300);\n }\n\n if (data.name === \"play-ping\") {\n GleapAudioManager.ping();\n }\n\n if (data.name === \"open-image\") {\n this.showImage(data.data.url);\n }\n\n if (data.name === \"page-changed\") {\n if (\n data.data &&\n (data.data.name === \"newsdetails\" || data.data.name === \"appextended\")\n ) {\n this.setAppMode(\"extended\");\n } else {\n if (this.appMode === \"extended\") {\n this.setAppMode(\"widget\");\n }\n }\n }\n\n if (data.name === \"collect-ticket-data\") {\n var ticketData = {\n customData: GleapCustomDataManager.getInstance().getCustomData(),\n metaData: GleapMetaDataManager.getInstance().getMetaData(),\n consoleLog: GleapConsoleLogManager.getInstance().getLogs(),\n networkLogs: GleapNetworkIntercepter.getInstance().getRequests(),\n customEventLog: GleapStreamedEvent.getInstance().getEventArray(),\n formData: GleapCustomDataManager.getInstance().getTicketAttributes(),\n };\n\n // Add tags\n const tags = GleapTagManager.getInstance().getTags();\n if (tags && tags.length > 0) {\n ticketData.tags = tags;\n }\n\n this.sendMessage({\n name: \"collect-ticket-data\",\n data: ticketData,\n });\n }\n\n if (data.name === \"height-update\") {\n this.frameHeight = data.data;\n\n const innerContainer = document.querySelector(\n \".gleap-frame-container-inner\"\n );\n if (\n (this.appMode === \"survey\" ||\n this.appMode === \"survey_full\" ||\n this.appMode === \"survey_web\") &&\n innerContainer\n ) {\n innerContainer.style.maxHeight = `${this.frameHeight}px`;\n }\n }\n\n if (data.name === \"notify-event\") {\n GleapEventManager.notifyEvent(data.data.type, data.data.data);\n }\n\n if (data.name === \"cleanup-drawings\") {\n this.hideMarkerManager();\n }\n\n if (data.name === \"open-url\") {\n const url = data.data;\n const newTab = data.newTab ? true : false;\n this.urlHandler(url, newTab);\n }\n\n if (data.name === \"start-product-tour\") {\n Gleap.startProductTour(data.data?.tourId, true);\n }\n\n if (data.name === \"run-custom-action\") {\n GleapCustomActionManager.triggerCustomAction(data.data, {\n shareToken: data.shareToken,\n });\n }\n\n if (data.name === \"close-widget\") {\n this.hideWidget();\n }\n\n if (data.name === \"tool-execution\") {\n GleapEventManager.notifyEvent(\"tool-execution\", data.data);\n }\n\n if (data.name === \"send-feedback\") {\n const formData = data.data.formData;\n const action = data.data.action;\n const outboundId = data.data.outboundId;\n const spamToken = data.data.spamToken;\n\n const feedback = new GleapFeedback(\n action.feedbackType,\n \"MEDIUM\",\n formData,\n false,\n action.excludeData,\n outboundId,\n spamToken\n );\n feedback\n .sendFeedback()\n .then((feedbackData) => {\n this.sendMessage({\n name: \"feedback-sent\",\n data: feedbackData,\n });\n GleapEventManager.notifyEvent(\"feedback-sent\", formData);\n\n if (outboundId && outboundId.length > 0) {\n GleapEventManager.notifyEvent(\"outbound-sent\", {\n outboundId: outboundId,\n outbound: action,\n formData: formData,\n });\n\n try {\n delete formData.reportedBy;\n } catch (e) {}\n Gleap.trackEvent(`outbound-${outboundId}-submitted`, formData);\n }\n })\n .catch((error) => {\n this.sendMessage({\n name: \"feedback-sending-failed\",\n data: \"Something went wrong, please try again.\",\n });\n GleapEventManager.notifyEvent(\"error-while-sending\");\n });\n }\n\n if (data.name === \"start-screen-drawing\") {\n this.showDrawingScreen(data.data);\n }\n });\n\n // Add window message listener.\n window.addEventListener(\"message\", (event) => {\n if (\n event.origin !== this.frameUrl &&\n event.origin !== GleapBannerManager.getInstance().bannerUrl\n ) {\n return;\n }\n\n try {\n const data = JSON.parse(event.data);\n for (var i = 0; i < this.listeners.length; i++) {\n if (this.listeners[i]) {\n this.listeners[i](data);\n }\n }\n } catch (exp) {}\n });\n }\n\n addMessageListener(callback) {\n this.listeners.push(callback);\n }\n}\n","import { isMobile } from \"./GleapHelper\";\n\nexport default class GleapMetaDataManager {\n sessionStart = new Date();\n appBuildNumber = \"\";\n appVersionCode = \"\";\n environment = \"prod\";\n\n // GleapMetaDataManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapMetaDataManager();\n }\n return this.instance;\n }\n\n /**\n * Sets the app version code.\n * @param {string} appVersionCode\n */\n static setAppVersionCode(appVersionCode) {\n this.getInstance().appVersionCode = appVersionCode;\n }\n\n /**\n * Sets the app version code.\n * @param {string} appVersionCode\n */\n static setAppBuildNumber(appBuildNumber) {\n this.getInstance().appBuildNumber = appBuildNumber;\n }\n\n getSessionDuration() {\n const now = new Date();\n return Math.round((now.getTime() - this.sessionStart.getTime()) / 1000);\n }\n\n getMetaData() {\n var nAgt = navigator.userAgent;\n var browserName = navigator.appName;\n var fullVersion = \"\" + parseFloat(navigator.appVersion);\n var majorVersion = parseInt(navigator.appVersion, 10);\n var nameOffset, verOffset, ix;\n\n // In Opera, the true version is after \"Opera\" or after \"Version\"\n if ((verOffset = nAgt.indexOf(\"Opera\")) !== -1) {\n browserName = \"Opera\";\n fullVersion = nAgt.substring(verOffset + 6);\n if ((verOffset = nAgt.indexOf(\"Version\")) !== -1)\n fullVersion = nAgt.substring(verOffset + 8);\n }\n // In MSIE, the true version is after \"MSIE\" in userAgent\n else if ((verOffset = nAgt.indexOf(\"MSIE\")) !== -1) {\n browserName = \"Microsoft Internet Explorer\";\n fullVersion = nAgt.substring(verOffset + 5);\n }\n // In Chrome, the true version is after \"Chrome\"\n else if ((verOffset = nAgt.indexOf(\"Chrome\")) !== -1) {\n browserName = \"Chrome\";\n fullVersion = nAgt.substring(verOffset + 7);\n }\n // In Safari, the true version is after \"Safari\" or after \"Version\"\n else if ((verOffset = nAgt.indexOf(\"Safari\")) !== -1) {\n browserName = \"Safari\";\n fullVersion = nAgt.substring(verOffset + 7);\n if ((verOffset = nAgt.indexOf(\"Version\")) !== -1)\n fullVersion = nAgt.substring(verOffset + 8);\n }\n // In Firefox, the true version is after \"Firefox\"\n else if ((verOffset = nAgt.indexOf(\"Firefox\")) !== -1) {\n browserName = \"Firefox\";\n fullVersion = nAgt.substring(verOffset + 8);\n }\n // In most other browsers, \"name/version\" is at the end of userAgent\n else if (\n (nameOffset = nAgt.lastIndexOf(\" \") + 1) <\n (verOffset = nAgt.lastIndexOf(\"/\"))\n ) {\n browserName = nAgt.substring(nameOffset, verOffset);\n fullVersion = nAgt.substring(verOffset + 1);\n if (browserName.toLowerCase() === browserName.toUpperCase()) {\n browserName = navigator.appName;\n }\n }\n // trim the fullVersion string at semicolon/space if present\n if ((ix = fullVersion.indexOf(\";\")) !== -1)\n fullVersion = fullVersion.substring(0, ix);\n if ((ix = fullVersion.indexOf(\" \")) !== -1)\n fullVersion = fullVersion.substring(0, ix);\n\n majorVersion = parseInt(\"\" + fullVersion, 10);\n if (isNaN(majorVersion)) {\n fullVersion = \"\" + parseFloat(navigator.appVersion);\n majorVersion = parseInt(navigator.appVersion, 10);\n }\n\n var OSName = \"Unknown OS\";\n if (navigator.appVersion.indexOf(\"Win\") !== -1) OSName = \"Windows\";\n if (navigator.appVersion.indexOf(\"Mac\") !== -1) OSName = \"MacOS\";\n if (navigator.appVersion.indexOf(\"X11\") !== -1) OSName = \"UNIX\";\n if (navigator.appVersion.indexOf(\"Linux\") !== -1) OSName = \"Linux\";\n if (navigator.appVersion.indexOf(\"iPad\") !== -1) OSName = \"iPad\";\n if (navigator.appVersion.indexOf(\"iPhone\") !== -1) OSName = \"iPhone\";\n if (navigator.appVersion.indexOf(\"Android\") !== -1) OSName = \"Android\";\n\n return {\n browserName: browserName + \"(\" + fullVersion + \")\",\n userAgent: nAgt,\n browser: browserName,\n systemName: OSName,\n buildVersionNumber: this.appBuildNumber,\n releaseVersionNumber: this.appVersionCode,\n sessionDuration: this.getSessionDuration(),\n devicePixelRatio: window.devicePixelRatio,\n screenWidth: window.screen.width,\n screenHeight: window.screen.height,\n innerWidth: window.innerWidth,\n innerHeight: window.innerHeight,\n currentUrl: window.location.href,\n language: navigator.language || navigator.userLanguage,\n mobile: isMobile(),\n sdkVersion: SDK_VERSION,\n sdkType: \"javascript\",\n environment: this.environment,\n };\n }\n}\n","import { truncateString } from \"./GleapHelper\";\n\nexport default class GleapConsoleLogManager {\n logArray = [];\n disabled = false;\n originalConsoleLog;\n logMaxLength = 500;\n\n // GleapConsoleLogManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapConsoleLogManager();\n }\n return this.instance;\n }\n\n /**\n * Return the console logs\n * @returns {any[]} logs\n */\n getLogs() {\n return this.logArray;\n }\n\n /**\n * Revert console log overwrite.\n */\n stop() {\n this.disabled = true;\n if (this.originalConsoleLog) {\n window.console = this.originalConsoleLog;\n }\n }\n\n /**\n * Add message with log level to logs.\n * @param {*} message\n * @param {*} logLevel\n * @returns\n */\n addLog(message, logLevel = \"INFO\") {\n if (!message || message.length <= 0) {\n return;\n }\n\n this.logArray.push({\n log: truncateString(message, 1000),\n date: new Date(),\n priority: logLevel,\n });\n\n if (this.logArray.length > this.logMaxLength) {\n this.logArray.shift();\n }\n }\n\n /**\n * Add entry to logs.\n * @param {*} args\n * @param {*} logLevel\n * @returns\n */\n addLogWithArgs(args, logLevel) {\n if (!args || args.length <= 0) {\n return;\n }\n\n var log = \"\";\n try {\n for (var i = 0; i < args.length; i++) {\n log += args[i] + \" \";\n }\n } catch (exp) {}\n\n this.addLog(log, logLevel);\n }\n\n /**\n * Start console log overwrite.\n */\n start() {\n if (this.disabled) {\n return;\n }\n\n const self = this;\n window.console = (function (origConsole) {\n if (!window.console || !origConsole) {\n origConsole = {};\n }\n\n self.originalConsoleLog = origConsole;\n\n return {\n ...origConsole,\n log: function () {\n self.addLogWithArgs(arguments, \"INFO\");\n origConsole.log && origConsole.log.apply(origConsole, arguments);\n },\n warn: function () {\n self.addLogWithArgs(arguments, \"WARNING\");\n origConsole.warn && origConsole.warn.apply(origConsole, arguments);\n },\n error: function () {\n self.addLogWithArgs(arguments, \"ERROR\");\n origConsole.error && origConsole.error.apply(origConsole, arguments);\n },\n info: function (v) {\n self.addLogWithArgs(arguments, \"INFO\");\n origConsole.info && origConsole.info.apply(origConsole, arguments);\n },\n };\n })(window.console);\n }\n}\n","import { GleapConsoleLogManager, GleapFrameManager, handleGleapLink } from \"./Gleap\";\nimport { getDOMElementDescription } from \"./GleapHelper\";\n\nexport default class GleapClickListener {\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapClickListener();\n }\n return this.instance;\n }\n\n start() {\n document.addEventListener(\"click\", (e) => {\n if (!e.target) {\n return;\n }\n\n if (e.target.tagName === 'A' && e.target.protocol === 'gleap:') {\n e.preventDefault();\n\n const href = e.target.href;\n handleGleapLink(href);\n }\n\n if (!GleapFrameManager.getInstance().isOpened()) {\n GleapConsoleLogManager.getInstance().addLog(\n getDOMElementDescription(e.target),\n \"CLICK\"\n );\n }\n });\n }\n}\n","import { gleapDataParser } from \"./GleapHelper\";\n\nexport default class GleapCustomDataManager {\n customData = {};\n ticketAttributes = {};\n\n // GleapCustomDataManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapCustomDataManager();\n }\n return this.instance;\n }\n\n /**\n * Returns the custom data object\n * @returns {*}\n */\n getCustomData() {\n return this.customData;\n }\n\n /**\n * Set custom data that will be attached to the bug-report.\n * @param {*} data\n */\n attachCustomData(data) {\n this.customData = Object.assign(\n this.customData,\n gleapDataParser(data)\n );\n }\n\n /**\n * Add one key value pair to the custom data object\n * @param {*} key The key of the custom data entry you want to add.\n * @param {*} value The custom data you want to add.\n */\n setCustomData(key, value) {\n this.customData[key] = value;\n }\n\n /**\n * Remove one key value pair of the custom data object\n * @param {*} key The key of the custom data entry you want to remove.\n */\n removeCustomData(key) {\n delete this.customData[key];\n }\n\n /**\n * Clear the custom data\n */\n clearCustomData() {\n this.customData = {};\n }\n\n /**\n * This method is used to set ticket attributes programmatically.\n * @param {*} key The key of the attribute you want to add.\n * @param {*} value The value to set.\n */\n setTicketAttribute(key, value) {\n this.ticketAttributes[key] = value;\n }\n\n /**\n * This method is used to unset ticket attributes programmatically.\n * @param {*} key The key of the attribute you want to unset.\n */\n unsetTicketAttribute(key) {\n delete this.ticketAttributes[key];\n }\n\n /**\n * This method is used to clear ticket attributes programmatically.\n */\n clearTicketAttributes() {\n this.ticketAttributes = {};\n }\n\n getTicketAttributes() {\n return this.ticketAttributes;\n }\n}\n","import Gleap from \"./Gleap\";\n\nexport default class GleapEventManager {\n eventListeners = {};\n\n // GleapEventManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapEventManager();\n }\n return this.instance;\n }\n\n /**\n * Notify all registrants for event.\n */\n static notifyEvent(event, data = {}) {\n if (event === \"flow-started\") {\n\n const gleapInstance = Gleap.getInstance();\n gleapInstance.setGlobalDataItem(\"webReplay\", null);\n gleapInstance.setGlobalDataItem(\"screenRecordingData\", null);\n gleapInstance.takeCurrentReplay();\n }\n\n const eventListeners = this.getInstance().eventListeners[event];\n if (eventListeners) {\n for (var i = 0; i < eventListeners.length; i++) {\n const eventListener = eventListeners[i];\n if (eventListener) {\n eventListener(data);\n }\n }\n }\n }\n\n /**\n * Register events for Gleap.\n * @param {*} eventName\n * @param {*} callback\n */\n static on(eventName, callback) {\n const instance = this.getInstance();\n if (!instance.eventListeners[eventName]) {\n instance.eventListeners[eventName] = [];\n }\n instance.eventListeners[eventName].push(callback);\n }\n}\n","export default class GleapCustomActionManager {\n customActionCallbacks = [];\n\n // GleapCustomActionManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapCustomActionManager();\n }\n return this.instance;\n }\n\n /**\n * Register custom action\n */\n static registerCustomAction(customAction) {\n const instance = this.getInstance();\n if (instance.customActionCallbacks) {\n instance.customActionCallbacks.push(customAction);\n }\n }\n\n /**\n * Triggers a custom action\n */\n static triggerCustomAction(name, data) {\n const instance = this.getInstance();\n if (instance.customActionCallbacks) {\n for (var i = 0; i < instance.customActionCallbacks.length; i++) {\n var callback = instance.customActionCallbacks[i];\n if (callback) {\n callback({\n name,\n ...(data ? data : {}),\n });\n }\n }\n }\n }\n}\n","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar _a;\nvar __defProp$1 = Object.defineProperty;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$1 = (obj, key, value) => __defNormalProp$1(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar NodeType$3 = /* @__PURE__ */ ((NodeType2) => {\n NodeType2[NodeType2[\"Document\"] = 0] = \"Document\";\n NodeType2[NodeType2[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType2[NodeType2[\"Element\"] = 2] = \"Element\";\n NodeType2[NodeType2[\"Text\"] = 3] = \"Text\";\n NodeType2[NodeType2[\"CDATA\"] = 4] = \"CDATA\";\n NodeType2[NodeType2[\"Comment\"] = 5] = \"Comment\";\n return NodeType2;\n})(NodeType$3 || {});\nconst testableAccessors$1 = {\n Node: [\"childNodes\", \"parentNode\", \"parentElement\", \"textContent\"],\n ShadowRoot: [\"host\", \"styleSheets\"],\n Element: [\"shadowRoot\", \"querySelector\", \"querySelectorAll\"],\n MutationObserver: []\n};\nconst testableMethods$1 = {\n Node: [\"contains\", \"getRootNode\"],\n ShadowRoot: [\"getSelection\"],\n Element: [],\n MutationObserver: [\"constructor\"]\n};\nconst untaintedBasePrototype$1 = {};\nconst isAngularZonePresent$1 = () => {\n return !!globalThis.Zone;\n};\nfunction getUntaintedPrototype$1(key) {\n if (untaintedBasePrototype$1[key])\n return untaintedBasePrototype$1[key];\n const defaultObj = globalThis[key];\n const defaultPrototype = defaultObj.prototype;\n const accessorNames = key in testableAccessors$1 ? testableAccessors$1[key] : void 0;\n const isUntaintedAccessors = Boolean(\n accessorNames && // @ts-expect-error 2345\n accessorNames.every(\n (accessor) => {\n var _a2, _b;\n return Boolean(\n (_b = (_a2 = Object.getOwnPropertyDescriptor(defaultPrototype, accessor)) == null ? void 0 : _a2.get) == null ? void 0 : _b.toString().includes(\"[native code]\")\n );\n }\n )\n );\n const methodNames = key in testableMethods$1 ? testableMethods$1[key] : void 0;\n const isUntaintedMethods = Boolean(\n methodNames && methodNames.every(\n // @ts-expect-error 2345\n (method) => {\n var _a2;\n return typeof defaultPrototype[method] === \"function\" && ((_a2 = defaultPrototype[method]) == null ? void 0 : _a2.toString().includes(\"[native code]\"));\n }\n )\n );\n if (isUntaintedAccessors && isUntaintedMethods && !isAngularZonePresent$1()) {\n untaintedBasePrototype$1[key] = defaultObj.prototype;\n return defaultObj.prototype;\n }\n try {\n const iframeEl = document.createElement(\"iframe\");\n document.body.appendChild(iframeEl);\n const win = iframeEl.contentWindow;\n if (!win) return defaultObj.prototype;\n const untaintedObject = win[key].prototype;\n document.body.removeChild(iframeEl);\n if (!untaintedObject) return defaultPrototype;\n return untaintedBasePrototype$1[key] = untaintedObject;\n } catch {\n return defaultPrototype;\n }\n}\nconst untaintedAccessorCache$1 = {};\nfunction getUntaintedAccessor$1(key, instance, accessor) {\n var _a2;\n const cacheKey = `${key}.${String(accessor)}`;\n if (untaintedAccessorCache$1[cacheKey])\n return untaintedAccessorCache$1[cacheKey].call(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype$1(key);\n const untaintedAccessor = (_a2 = Object.getOwnPropertyDescriptor(\n untaintedPrototype,\n accessor\n )) == null ? void 0 : _a2.get;\n if (!untaintedAccessor) return instance[accessor];\n untaintedAccessorCache$1[cacheKey] = untaintedAccessor;\n return untaintedAccessor.call(instance);\n}\nconst untaintedMethodCache$1 = {};\nfunction getUntaintedMethod$1(key, instance, method) {\n const cacheKey = `${key}.${String(method)}`;\n if (untaintedMethodCache$1[cacheKey])\n return untaintedMethodCache$1[cacheKey].bind(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype$1(key);\n const untaintedMethod = untaintedPrototype[method];\n if (typeof untaintedMethod !== \"function\") return instance[method];\n untaintedMethodCache$1[cacheKey] = untaintedMethod;\n return untaintedMethod.bind(instance);\n}\nfunction childNodes$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"childNodes\");\n}\nfunction parentNode$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"parentNode\");\n}\nfunction parentElement$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"parentElement\");\n}\nfunction textContent$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"textContent\");\n}\nfunction contains$1(n2, other) {\n return getUntaintedMethod$1(\"Node\", n2, \"contains\")(other);\n}\nfunction getRootNode$1(n2) {\n return getUntaintedMethod$1(\"Node\", n2, \"getRootNode\")();\n}\nfunction host$1(n2) {\n if (!n2 || !(\"host\" in n2)) return null;\n return getUntaintedAccessor$1(\"ShadowRoot\", n2, \"host\");\n}\nfunction styleSheets$1(n2) {\n return n2.styleSheets;\n}\nfunction shadowRoot$1(n2) {\n if (!n2 || !(\"shadowRoot\" in n2)) return null;\n return getUntaintedAccessor$1(\"Element\", n2, \"shadowRoot\");\n}\nfunction querySelector$1(n2, selectors) {\n return getUntaintedAccessor$1(\"Element\", n2, \"querySelector\")(selectors);\n}\nfunction querySelectorAll$1(n2, selectors) {\n return getUntaintedAccessor$1(\"Element\", n2, \"querySelectorAll\")(selectors);\n}\nfunction mutationObserverCtor$1() {\n return getUntaintedPrototype$1(\"MutationObserver\").constructor;\n}\nconst index$1 = {\n childNodes: childNodes$1,\n parentNode: parentNode$1,\n parentElement: parentElement$1,\n textContent: textContent$1,\n contains: contains$1,\n getRootNode: getRootNode$1,\n host: host$1,\n styleSheets: styleSheets$1,\n shadowRoot: shadowRoot$1,\n querySelector: querySelector$1,\n querySelectorAll: querySelectorAll$1,\n mutationObserver: mutationObserverCtor$1\n};\nfunction isElement(n2) {\n return n2.nodeType === n2.ELEMENT_NODE;\n}\nfunction isShadowRoot(n2) {\n const hostEl = (\n // anchor and textarea elements also have a `host` property\n // but only shadow roots have a `mode` property\n n2 && \"host\" in n2 && \"mode\" in n2 && index$1.host(n2) || null\n );\n return Boolean(\n hostEl && \"shadowRoot\" in hostEl && index$1.shadowRoot(hostEl) === n2\n );\n}\nfunction isNativeShadowDom(shadowRoot2) {\n return Object.prototype.toString.call(shadowRoot2) === \"[object ShadowRoot]\";\n}\nfunction fixBrowserCompatibilityIssuesInCSS(cssText) {\n if (cssText.includes(\" background-clip: text;\") && !cssText.includes(\" -webkit-background-clip: text;\")) {\n cssText = cssText.replace(\n /\\sbackground-clip:\\s*text;/g,\n \" -webkit-background-clip: text; background-clip: text;\"\n );\n }\n return cssText;\n}\nfunction escapeImportStatement(rule2) {\n const { cssText } = rule2;\n if (cssText.split('\"').length < 3) return cssText;\n const statement = [\"@import\", `url(${JSON.stringify(rule2.href)})`];\n if (rule2.layerName === \"\") {\n statement.push(`layer`);\n } else if (rule2.layerName) {\n statement.push(`layer(${rule2.layerName})`);\n }\n if (rule2.supportsText) {\n statement.push(`supports(${rule2.supportsText})`);\n }\n if (rule2.media.length) {\n statement.push(rule2.media.mediaText);\n }\n return statement.join(\" \") + \";\";\n}\nfunction stringifyStylesheet(s2) {\n try {\n const rules2 = s2.rules || s2.cssRules;\n if (!rules2) {\n return null;\n }\n let sheetHref = s2.href;\n if (!sheetHref && s2.ownerNode && s2.ownerNode.ownerDocument) {\n sheetHref = s2.ownerNode.ownerDocument.location.href;\n }\n const stringifiedRules = Array.from(\n rules2,\n (rule2) => stringifyRule(rule2, sheetHref)\n ).join(\"\");\n return fixBrowserCompatibilityIssuesInCSS(stringifiedRules);\n } catch (error) {\n return null;\n }\n}\nfunction stringifyRule(rule2, sheetHref) {\n if (isCSSImportRule(rule2)) {\n let importStringified;\n try {\n importStringified = // for same-origin stylesheets,\n // we can access the imported stylesheet rules directly\n stringifyStylesheet(rule2.styleSheet) || // work around browser issues with the raw string `@import url(...)` statement\n escapeImportStatement(rule2);\n } catch (error) {\n importStringified = rule2.cssText;\n }\n if (rule2.styleSheet.href) {\n return absolutifyURLs(importStringified, rule2.styleSheet.href);\n }\n return importStringified;\n } else {\n let ruleStringified = rule2.cssText;\n if (isCSSStyleRule(rule2) && rule2.selectorText.includes(\":\")) {\n ruleStringified = fixSafariColons(ruleStringified);\n }\n if (sheetHref) {\n return absolutifyURLs(ruleStringified, sheetHref);\n }\n return ruleStringified;\n }\n}\nfunction fixSafariColons(cssStringified) {\n const regex = /(\\[(?:[\\w-]+)[^\\\\])(:(?:[\\w-]+)\\])/gm;\n return cssStringified.replace(regex, \"$1\\\\$2\");\n}\nfunction isCSSImportRule(rule2) {\n return \"styleSheet\" in rule2;\n}\nfunction isCSSStyleRule(rule2) {\n return \"selectorText\" in rule2;\n}\nclass Mirror {\n constructor() {\n __publicField$1(this, \"idNodeMap\", /* @__PURE__ */ new Map());\n __publicField$1(this, \"nodeMetaMap\", /* @__PURE__ */ new WeakMap());\n }\n getId(n2) {\n var _a2;\n if (!n2) return -1;\n const id = (_a2 = this.getMeta(n2)) == null ? void 0 : _a2.id;\n return id ?? -1;\n }\n getNode(id) {\n return this.idNodeMap.get(id) || null;\n }\n getIds() {\n return Array.from(this.idNodeMap.keys());\n }\n getMeta(n2) {\n return this.nodeMetaMap.get(n2) || null;\n }\n // removes the node from idNodeMap\n // doesn't remove the node from nodeMetaMap\n removeNodeFromMap(n2) {\n const id = this.getId(n2);\n this.idNodeMap.delete(id);\n if (n2.childNodes) {\n n2.childNodes.forEach(\n (childNode) => this.removeNodeFromMap(childNode)\n );\n }\n }\n has(id) {\n return this.idNodeMap.has(id);\n }\n hasNode(node2) {\n return this.nodeMetaMap.has(node2);\n }\n add(n2, meta) {\n const id = meta.id;\n this.idNodeMap.set(id, n2);\n this.nodeMetaMap.set(n2, meta);\n }\n replace(id, n2) {\n const oldNode = this.getNode(id);\n if (oldNode) {\n const meta = this.nodeMetaMap.get(oldNode);\n if (meta) this.nodeMetaMap.set(n2, meta);\n }\n this.idNodeMap.set(id, n2);\n }\n reset() {\n this.idNodeMap = /* @__PURE__ */ new Map();\n this.nodeMetaMap = /* @__PURE__ */ new WeakMap();\n }\n}\nfunction createMirror$2() {\n return new Mirror();\n}\nfunction maskInputValue({\n element,\n maskInputOptions,\n tagName,\n type,\n value,\n maskInputFn\n}) {\n let text = value || \"\";\n const actualType = type && toLowerCase(type);\n if (maskInputOptions[tagName.toLowerCase()] || actualType && maskInputOptions[actualType]) {\n if (maskInputFn) {\n text = maskInputFn(text, element);\n } else {\n text = \"*\".repeat(text.length);\n }\n }\n return text;\n}\nfunction toLowerCase(str) {\n return str.toLowerCase();\n}\nconst ORIGINAL_ATTRIBUTE_NAME = \"__rrweb_original__\";\nfunction is2DCanvasBlank(canvas) {\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) return true;\n const chunkSize = 50;\n for (let x2 = 0; x2 < canvas.width; x2 += chunkSize) {\n for (let y = 0; y < canvas.height; y += chunkSize) {\n const getImageData = ctx.getImageData;\n const originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData ? getImageData[ORIGINAL_ATTRIBUTE_NAME] : getImageData;\n const pixelBuffer = new Uint32Array(\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n originalGetImageData.call(\n ctx,\n x2,\n y,\n Math.min(chunkSize, canvas.width - x2),\n Math.min(chunkSize, canvas.height - y)\n ).data.buffer\n );\n if (pixelBuffer.some((pixel) => pixel !== 0)) return false;\n }\n }\n return true;\n}\nfunction getInputType(element) {\n const type = element.type;\n return element.hasAttribute(\"data-rr-is-password\") ? \"password\" : type ? (\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n toLowerCase(type)\n ) : null;\n}\nfunction extractFileExtension(path, baseURL) {\n let url;\n try {\n url = new URL(path, baseURL ?? window.location.href);\n } catch (err) {\n return null;\n }\n const regex = /\\.([0-9a-z]+)(?:$)/i;\n const match = url.pathname.match(regex);\n return (match == null ? void 0 : match[1]) ?? null;\n}\nfunction extractOrigin(url) {\n let origin = \"\";\n if (url.indexOf(\"//\") > -1) {\n origin = url.split(\"/\").slice(0, 3).join(\"/\");\n } else {\n origin = url.split(\"/\")[0];\n }\n origin = origin.split(\"?\")[0];\n return origin;\n}\nconst URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\nconst URL_PROTOCOL_MATCH = /^(?:[a-z+]+:)?\\/\\//i;\nconst URL_WWW_MATCH = /^www\\..*/i;\nconst DATA_URI = /^(data:)([^,]*),(.*)/i;\nfunction absolutifyURLs(cssText, href) {\n return (cssText || \"\").replace(\n URL_IN_CSS_REF,\n (origin, quote1, path1, quote2, path2, path3) => {\n const filePath = path1 || path2 || path3;\n const maybeQuote = quote1 || quote2 || \"\";\n if (!filePath) {\n return origin;\n }\n if (URL_PROTOCOL_MATCH.test(filePath) || URL_WWW_MATCH.test(filePath)) {\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\n }\n if (DATA_URI.test(filePath)) {\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\n }\n if (filePath[0] === \"/\") {\n return `url(${maybeQuote}${extractOrigin(href) + filePath}${maybeQuote})`;\n }\n const stack = href.split(\"/\");\n const parts = filePath.split(\"/\");\n stack.pop();\n for (const part of parts) {\n if (part === \".\") {\n continue;\n } else if (part === \"..\") {\n stack.pop();\n } else {\n stack.push(part);\n }\n }\n return `url(${maybeQuote}${stack.join(\"/\")}${maybeQuote})`;\n }\n );\n}\nfunction normalizeCssString(cssText) {\n return cssText.replace(/(\\/\\*[^*]*\\*\\/)|[\\s;]/g, \"\");\n}\nfunction splitCssText(cssText, style) {\n const childNodes2 = Array.from(style.childNodes);\n const splits = [];\n if (childNodes2.length > 1 && cssText && typeof cssText === \"string\") {\n const cssTextNorm = normalizeCssString(cssText);\n for (let i2 = 1; i2 < childNodes2.length; i2++) {\n if (childNodes2[i2].textContent && typeof childNodes2[i2].textContent === \"string\") {\n const textContentNorm = normalizeCssString(childNodes2[i2].textContent);\n for (let j = 3; j < textContentNorm.length; j++) {\n const bit = textContentNorm.substring(0, j);\n if (cssTextNorm.split(bit).length === 2) {\n const splitNorm = cssTextNorm.indexOf(bit);\n for (let k = splitNorm; k < cssText.length; k++) {\n if (normalizeCssString(cssText.substring(0, k)).length === splitNorm) {\n splits.push(cssText.substring(0, k));\n cssText = cssText.substring(k);\n break;\n }\n }\n break;\n }\n }\n }\n }\n }\n splits.push(cssText);\n return splits;\n}\nfunction markCssSplits(cssText, style) {\n return splitCssText(cssText, style).join(\"/* rr_split */\");\n}\nlet _id = 1;\nconst tagNameRegex = new RegExp(\"[^a-z0-9-_:]\");\nconst IGNORED_NODE = -2;\nfunction genId() {\n return _id++;\n}\nfunction getValidTagName$1(element) {\n if (element instanceof HTMLFormElement) {\n return \"form\";\n }\n const processedTagName = toLowerCase(element.tagName);\n if (tagNameRegex.test(processedTagName)) {\n return \"div\";\n }\n return processedTagName;\n}\nlet canvasService;\nlet canvasCtx;\nconst SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\nconst SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\n if (attributeValue.trim() === \"\") {\n return attributeValue;\n }\n let pos = 0;\n function collectCharacters(regEx) {\n let chars2;\n const match = regEx.exec(attributeValue.substring(pos));\n if (match) {\n chars2 = match[0];\n pos += chars2.length;\n return chars2;\n }\n return \"\";\n }\n const output = [];\n while (true) {\n collectCharacters(SRCSET_COMMAS_OR_SPACES);\n if (pos >= attributeValue.length) {\n break;\n }\n let url = collectCharacters(SRCSET_NOT_SPACES);\n if (url.slice(-1) === \",\") {\n url = absoluteToDoc(doc, url.substring(0, url.length - 1));\n output.push(url);\n } else {\n let descriptorsStr = \"\";\n url = absoluteToDoc(doc, url);\n let inParens = false;\n while (true) {\n const c2 = attributeValue.charAt(pos);\n if (c2 === \"\") {\n output.push((url + descriptorsStr).trim());\n break;\n } else if (!inParens) {\n if (c2 === \",\") {\n pos += 1;\n output.push((url + descriptorsStr).trim());\n break;\n } else if (c2 === \"(\") {\n inParens = true;\n }\n } else {\n if (c2 === \")\") {\n inParens = false;\n }\n }\n descriptorsStr += c2;\n pos += 1;\n }\n }\n }\n return output.join(\", \");\n}\nconst cachedDocument = /* @__PURE__ */ new WeakMap();\nfunction absoluteToDoc(doc, attributeValue) {\n if (!attributeValue || attributeValue.trim() === \"\") {\n return attributeValue;\n }\n return getHref(doc, attributeValue);\n}\nfunction isSVGElement(el) {\n return Boolean(el.tagName === \"svg\" || el.ownerSVGElement);\n}\nfunction getHref(doc, customHref) {\n let a2 = cachedDocument.get(doc);\n if (!a2) {\n a2 = doc.createElement(\"a\");\n cachedDocument.set(doc, a2);\n }\n if (!customHref) {\n customHref = \"\";\n } else if (customHref.startsWith(\"blob:\") || customHref.startsWith(\"data:\")) {\n return customHref;\n }\n a2.setAttribute(\"href\", customHref);\n return a2.href;\n}\nfunction transformAttribute(doc, tagName, name, value) {\n if (!value) {\n return value;\n }\n if (name === \"src\" || name === \"href\" && !(tagName === \"use\" && value[0] === \"#\")) {\n return absoluteToDoc(doc, value);\n } else if (name === \"xlink:href\" && value[0] !== \"#\") {\n return absoluteToDoc(doc, value);\n } else if (name === \"background\" && (tagName === \"table\" || tagName === \"td\" || tagName === \"th\")) {\n return absoluteToDoc(doc, value);\n } else if (name === \"srcset\") {\n return getAbsoluteSrcsetString(doc, value);\n } else if (name === \"style\") {\n return absolutifyURLs(value, getHref(doc));\n } else if (tagName === \"object\" && name === \"data\") {\n return absoluteToDoc(doc, value);\n }\n return value;\n}\nfunction ignoreAttribute(tagName, name, _value) {\n return (tagName === \"video\" || tagName === \"audio\") && name === \"autoplay\";\n}\nfunction _isBlockedElement(element, blockClass, blockSelector) {\n try {\n if (typeof blockClass === \"string\") {\n if (element.classList.contains(blockClass)) {\n return true;\n }\n } else {\n for (let eIndex = element.classList.length; eIndex--; ) {\n const className = element.classList[eIndex];\n if (blockClass.test(className)) {\n return true;\n }\n }\n }\n if (blockSelector) {\n return element.matches(blockSelector);\n }\n } catch (e2) {\n }\n return false;\n}\nfunction classMatchesRegex(node2, regex, checkAncestors) {\n if (!node2) return false;\n if (node2.nodeType !== node2.ELEMENT_NODE) {\n if (!checkAncestors) return false;\n return classMatchesRegex(index$1.parentNode(node2), regex, checkAncestors);\n }\n for (let eIndex = node2.classList.length; eIndex--; ) {\n const className = node2.classList[eIndex];\n if (regex.test(className)) {\n return true;\n }\n }\n if (!checkAncestors) return false;\n return classMatchesRegex(index$1.parentNode(node2), regex, checkAncestors);\n}\nfunction needMaskingText(node2, maskTextClass, maskTextSelector, checkAncestors) {\n let el;\n if (isElement(node2)) {\n el = node2;\n if (!index$1.childNodes(el).length) {\n return false;\n }\n } else if (index$1.parentElement(node2) === null) {\n return false;\n } else {\n el = index$1.parentElement(node2);\n }\n try {\n if (typeof maskTextClass === \"string\") {\n if (checkAncestors) {\n if (el.closest(`.${maskTextClass}`)) return true;\n } else {\n if (el.classList.contains(maskTextClass)) return true;\n }\n } else {\n if (classMatchesRegex(el, maskTextClass, checkAncestors)) return true;\n }\n if (maskTextSelector) {\n if (checkAncestors) {\n if (el.closest(maskTextSelector)) return true;\n } else {\n if (el.matches(maskTextSelector)) return true;\n }\n }\n } catch (e2) {\n }\n return false;\n}\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\n const win = iframeEl.contentWindow;\n if (!win) {\n return;\n }\n let fired = false;\n let readyState;\n try {\n readyState = win.document.readyState;\n } catch (error) {\n return;\n }\n if (readyState !== \"complete\") {\n const timer = setTimeout(() => {\n if (!fired) {\n listener();\n fired = true;\n }\n }, iframeLoadTimeout);\n iframeEl.addEventListener(\"load\", () => {\n clearTimeout(timer);\n fired = true;\n listener();\n });\n return;\n }\n const blankUrl = \"about:blank\";\n if (win.location.href !== blankUrl || iframeEl.src === blankUrl || iframeEl.src === \"\") {\n setTimeout(listener, 0);\n return iframeEl.addEventListener(\"load\", listener);\n }\n iframeEl.addEventListener(\"load\", listener);\n}\nfunction onceStylesheetLoaded(link, listener, styleSheetLoadTimeout) {\n let fired = false;\n let styleSheetLoaded;\n try {\n styleSheetLoaded = link.sheet;\n } catch (error) {\n return;\n }\n if (styleSheetLoaded) return;\n const timer = setTimeout(() => {\n if (!fired) {\n listener();\n fired = true;\n }\n }, styleSheetLoadTimeout);\n link.addEventListener(\"load\", () => {\n clearTimeout(timer);\n fired = true;\n listener();\n });\n}\nfunction serializeNode(n2, options) {\n const {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n inlineStylesheet,\n maskInputOptions = {},\n maskTextFn,\n maskInputFn,\n dataURLOptions = {},\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement = false,\n cssCaptured = false\n } = options;\n const rootId = getRootId(doc, mirror2);\n switch (n2.nodeType) {\n case n2.DOCUMENT_NODE:\n if (n2.compatMode !== \"CSS1Compat\") {\n return {\n type: NodeType$3.Document,\n childNodes: [],\n compatMode: n2.compatMode\n // probably \"BackCompat\"\n };\n } else {\n return {\n type: NodeType$3.Document,\n childNodes: []\n };\n }\n case n2.DOCUMENT_TYPE_NODE:\n return {\n type: NodeType$3.DocumentType,\n name: n2.name,\n publicId: n2.publicId,\n systemId: n2.systemId,\n rootId\n };\n case n2.ELEMENT_NODE:\n return serializeElementNode(n2, {\n doc,\n blockClass,\n blockSelector,\n inlineStylesheet,\n maskInputOptions,\n maskInputFn,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement,\n rootId\n });\n case n2.TEXT_NODE:\n return serializeTextNode(n2, {\n doc,\n needsMask,\n maskTextFn,\n rootId,\n cssCaptured\n });\n case n2.CDATA_SECTION_NODE:\n return {\n type: NodeType$3.CDATA,\n textContent: \"\",\n rootId\n };\n case n2.COMMENT_NODE:\n return {\n type: NodeType$3.Comment,\n textContent: index$1.textContent(n2) || \"\",\n rootId\n };\n default:\n return false;\n }\n}\nfunction getRootId(doc, mirror2) {\n if (!mirror2.hasNode(doc)) return void 0;\n const docId = mirror2.getId(doc);\n return docId === 1 ? void 0 : docId;\n}\nfunction serializeTextNode(n2, options) {\n const { needsMask, maskTextFn, rootId, cssCaptured } = options;\n const parent = index$1.parentNode(n2);\n const parentTagName = parent && parent.tagName;\n let textContent2 = \"\";\n const isStyle = parentTagName === \"STYLE\" ? true : void 0;\n const isScript = parentTagName === \"SCRIPT\" ? true : void 0;\n if (isScript) {\n textContent2 = \"SCRIPT_PLACEHOLDER\";\n } else if (!cssCaptured) {\n textContent2 = index$1.textContent(n2);\n if (isStyle && textContent2) {\n textContent2 = absolutifyURLs(textContent2, getHref(options.doc));\n }\n }\n if (!isStyle && !isScript && textContent2 && needsMask) {\n textContent2 = maskTextFn ? maskTextFn(textContent2, index$1.parentElement(n2)) : textContent2.replace(/[\\S]/g, \"*\");\n }\n return {\n type: NodeType$3.Text,\n textContent: textContent2 || \"\",\n rootId\n };\n}\nfunction serializeElementNode(n2, options) {\n const {\n doc,\n blockClass,\n blockSelector,\n inlineStylesheet,\n maskInputOptions = {},\n maskInputFn,\n dataURLOptions = {},\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement = false,\n rootId\n } = options;\n const needBlock = _isBlockedElement(n2, blockClass, blockSelector);\n const tagName = getValidTagName$1(n2);\n let attributes = {};\n const len = n2.attributes.length;\n for (let i2 = 0; i2 < len; i2++) {\n const attr = n2.attributes[i2];\n if (!ignoreAttribute(tagName, attr.name, attr.value)) {\n attributes[attr.name] = transformAttribute(\n doc,\n tagName,\n toLowerCase(attr.name),\n attr.value\n );\n }\n }\n if (tagName === \"link\" && inlineStylesheet) {\n const stylesheet = Array.from(doc.styleSheets).find((s2) => {\n return s2.href === n2.href;\n });\n let cssText = null;\n if (stylesheet) {\n cssText = stringifyStylesheet(stylesheet);\n }\n if (cssText) {\n delete attributes.rel;\n delete attributes.href;\n attributes._cssText = cssText;\n }\n }\n if (tagName === \"style\" && n2.sheet) {\n let cssText = stringifyStylesheet(\n n2.sheet\n );\n if (cssText) {\n if (n2.childNodes.length > 1) {\n cssText = markCssSplits(cssText, n2);\n }\n attributes._cssText = cssText;\n }\n }\n if (tagName === \"input\" || tagName === \"textarea\" || tagName === \"select\") {\n const value = n2.value;\n const checked = n2.checked;\n if (attributes.type !== \"radio\" && attributes.type !== \"checkbox\" && attributes.type !== \"submit\" && attributes.type !== \"button\" && value) {\n attributes.value = maskInputValue({\n element: n2,\n type: getInputType(n2),\n tagName,\n value,\n maskInputOptions,\n maskInputFn\n });\n } else if (checked) {\n attributes.checked = checked;\n }\n }\n if (tagName === \"option\") {\n if (n2.selected && !maskInputOptions[\"select\"]) {\n attributes.selected = true;\n } else {\n delete attributes.selected;\n }\n }\n if (tagName === \"dialog\" && n2.open) {\n attributes.rr_open_mode = n2.matches(\"dialog:modal\") ? \"modal\" : \"non-modal\";\n }\n if (tagName === \"canvas\" && recordCanvas) {\n if (n2.__context === \"2d\") {\n if (!is2DCanvasBlank(n2)) {\n attributes.rr_dataURL = n2.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n }\n } else if (!(\"__context\" in n2)) {\n const canvasDataURL = n2.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n const blankCanvas = doc.createElement(\"canvas\");\n blankCanvas.width = n2.width;\n blankCanvas.height = n2.height;\n const blankCanvasDataURL = blankCanvas.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n if (canvasDataURL !== blankCanvasDataURL) {\n attributes.rr_dataURL = canvasDataURL;\n }\n }\n }\n if (tagName === \"img\" && inlineImages) {\n if (!canvasService) {\n canvasService = doc.createElement(\"canvas\");\n canvasCtx = canvasService.getContext(\"2d\");\n }\n const image = n2;\n const imageSrc = image.currentSrc || image.getAttribute(\"src\") || \"\";\n const priorCrossOrigin = image.crossOrigin;\n const recordInlineImage = () => {\n image.removeEventListener(\"load\", recordInlineImage);\n try {\n canvasService.width = image.naturalWidth;\n canvasService.height = image.naturalHeight;\n canvasCtx.drawImage(image, 0, 0);\n attributes.rr_dataURL = canvasService.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n } catch (err) {\n if (image.crossOrigin !== \"anonymous\") {\n image.crossOrigin = \"anonymous\";\n if (image.complete && image.naturalWidth !== 0)\n recordInlineImage();\n else image.addEventListener(\"load\", recordInlineImage);\n return;\n } else {\n console.warn(\n `Cannot inline img src=${imageSrc}! Error: ${err}`\n );\n }\n }\n if (image.crossOrigin === \"anonymous\") {\n priorCrossOrigin ? attributes.crossOrigin = priorCrossOrigin : image.removeAttribute(\"crossorigin\");\n }\n };\n if (image.complete && image.naturalWidth !== 0) recordInlineImage();\n else image.addEventListener(\"load\", recordInlineImage);\n }\n if (tagName === \"audio\" || tagName === \"video\") {\n const mediaAttributes = attributes;\n mediaAttributes.rr_mediaState = n2.paused ? \"paused\" : \"played\";\n mediaAttributes.rr_mediaCurrentTime = n2.currentTime;\n mediaAttributes.rr_mediaPlaybackRate = n2.playbackRate;\n mediaAttributes.rr_mediaMuted = n2.muted;\n mediaAttributes.rr_mediaLoop = n2.loop;\n mediaAttributes.rr_mediaVolume = n2.volume;\n }\n if (!newlyAddedElement) {\n if (n2.scrollLeft) {\n attributes.rr_scrollLeft = n2.scrollLeft;\n }\n if (n2.scrollTop) {\n attributes.rr_scrollTop = n2.scrollTop;\n }\n }\n if (needBlock) {\n const { width, height } = n2.getBoundingClientRect();\n attributes = {\n class: attributes.class,\n rr_width: `${width}px`,\n rr_height: `${height}px`\n };\n }\n if (tagName === \"iframe\" && !keepIframeSrcFn(attributes.src)) {\n if (!n2.contentDocument) {\n attributes.rr_src = attributes.src;\n }\n delete attributes.src;\n }\n let isCustomElement;\n try {\n if (customElements.get(tagName)) isCustomElement = true;\n } catch (e2) {\n }\n return {\n type: NodeType$3.Element,\n tagName,\n attributes,\n childNodes: [],\n isSVG: isSVGElement(n2) || void 0,\n needBlock,\n rootId,\n isCustom: isCustomElement\n };\n}\nfunction lowerIfExists(maybeAttr) {\n if (maybeAttr === void 0 || maybeAttr === null) {\n return \"\";\n } else {\n return maybeAttr.toLowerCase();\n }\n}\nfunction slimDOMExcluded(sn, slimDOMOptions) {\n if (slimDOMOptions.comment && sn.type === NodeType$3.Comment) {\n return true;\n } else if (sn.type === NodeType$3.Element) {\n if (slimDOMOptions.script && // script tag\n (sn.tagName === \"script\" || // (module)preload link\n sn.tagName === \"link\" && (sn.attributes.rel === \"preload\" || sn.attributes.rel === \"modulepreload\") && sn.attributes.as === \"script\" || // prefetch link\n sn.tagName === \"link\" && sn.attributes.rel === \"prefetch\" && typeof sn.attributes.href === \"string\" && extractFileExtension(sn.attributes.href) === \"js\")) {\n return true;\n } else if (slimDOMOptions.headFavicon && (sn.tagName === \"link\" && sn.attributes.rel === \"shortcut icon\" || sn.tagName === \"meta\" && (lowerIfExists(sn.attributes.name).match(\n /^msapplication-tile(image|color)$/\n ) || lowerIfExists(sn.attributes.name) === \"application-name\" || lowerIfExists(sn.attributes.rel) === \"icon\" || lowerIfExists(sn.attributes.rel) === \"apple-touch-icon\" || lowerIfExists(sn.attributes.rel) === \"shortcut icon\"))) {\n return true;\n } else if (sn.tagName === \"meta\") {\n if (slimDOMOptions.headMetaDescKeywords && lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\n return true;\n } else if (slimDOMOptions.headMetaSocial && (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) || // og = opengraph (facebook)\n lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) || lowerIfExists(sn.attributes.name) === \"pinterest\")) {\n return true;\n } else if (slimDOMOptions.headMetaRobots && (lowerIfExists(sn.attributes.name) === \"robots\" || lowerIfExists(sn.attributes.name) === \"googlebot\" || lowerIfExists(sn.attributes.name) === \"bingbot\")) {\n return true;\n } else if (slimDOMOptions.headMetaHttpEquiv && sn.attributes[\"http-equiv\"] !== void 0) {\n return true;\n } else if (slimDOMOptions.headMetaAuthorship && (lowerIfExists(sn.attributes.name) === \"author\" || lowerIfExists(sn.attributes.name) === \"generator\" || lowerIfExists(sn.attributes.name) === \"framework\" || lowerIfExists(sn.attributes.name) === \"publisher\" || lowerIfExists(sn.attributes.name) === \"progid\" || lowerIfExists(sn.attributes.property).match(/^article:/) || lowerIfExists(sn.attributes.property).match(/^product:/))) {\n return true;\n } else if (slimDOMOptions.headMetaVerification && (lowerIfExists(sn.attributes.name) === \"google-site-verification\" || lowerIfExists(sn.attributes.name) === \"yandex-verification\" || lowerIfExists(sn.attributes.name) === \"csrf-token\" || lowerIfExists(sn.attributes.name) === \"p:domain_verify\" || lowerIfExists(sn.attributes.name) === \"verify-v1\" || lowerIfExists(sn.attributes.name) === \"verification\" || lowerIfExists(sn.attributes.name) === \"shopify-checkout-api-token\")) {\n return true;\n }\n }\n }\n return false;\n}\nfunction serializeNodeWithId(n2, options) {\n const {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n skipChild = false,\n inlineStylesheet = true,\n maskInputOptions = {},\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions = {},\n inlineImages = false,\n recordCanvas = false,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout = 5e3,\n onStylesheetLoad,\n stylesheetLoadTimeout = 5e3,\n keepIframeSrcFn = () => false,\n newlyAddedElement = false,\n cssCaptured = false\n } = options;\n let { needsMask } = options;\n let { preserveWhiteSpace = true } = options;\n if (!needsMask) {\n const checkAncestors = needsMask === void 0;\n needsMask = needMaskingText(\n n2,\n maskTextClass,\n maskTextSelector,\n checkAncestors\n );\n }\n const _serializedNode = serializeNode(n2, {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement,\n cssCaptured\n });\n if (!_serializedNode) {\n console.warn(n2, \"not serialized\");\n return null;\n }\n let id;\n if (mirror2.hasNode(n2)) {\n id = mirror2.getId(n2);\n } else if (slimDOMExcluded(_serializedNode, slimDOMOptions) || !preserveWhiteSpace && _serializedNode.type === NodeType$3.Text && !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, \"\").length) {\n id = IGNORED_NODE;\n } else {\n id = genId();\n }\n const serializedNode = Object.assign(_serializedNode, { id });\n mirror2.add(n2, serializedNode);\n if (id === IGNORED_NODE) {\n return null;\n }\n if (onSerialize) {\n onSerialize(n2);\n }\n let recordChild = !skipChild;\n if (serializedNode.type === NodeType$3.Element) {\n recordChild = recordChild && !serializedNode.needBlock;\n delete serializedNode.needBlock;\n const shadowRootEl = index$1.shadowRoot(n2);\n if (shadowRootEl && isNativeShadowDom(shadowRootEl))\n serializedNode.isShadowHost = true;\n }\n if ((serializedNode.type === NodeType$3.Document || serializedNode.type === NodeType$3.Element) && recordChild) {\n if (slimDOMOptions.headWhitespace && serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"head\") {\n preserveWhiteSpace = false;\n }\n const bypassOptions = {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n skipChild,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn,\n cssCaptured: false\n };\n if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"textarea\" && serializedNode.attributes.value !== void 0) ;\n else {\n if (serializedNode.type === NodeType$3.Element && serializedNode.attributes._cssText !== void 0 && typeof serializedNode.attributes._cssText === \"string\") {\n bypassOptions.cssCaptured = true;\n }\n for (const childN of Array.from(index$1.childNodes(n2))) {\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n }\n let shadowRootEl = null;\n if (isElement(n2) && (shadowRootEl = index$1.shadowRoot(n2))) {\n for (const childN of Array.from(index$1.childNodes(shadowRootEl))) {\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n isNativeShadowDom(shadowRootEl) && (serializedChildNode.isShadow = true);\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n }\n }\n const parent = index$1.parentNode(n2);\n if (parent && isShadowRoot(parent) && isNativeShadowDom(parent)) {\n serializedNode.isShadow = true;\n }\n if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"iframe\") {\n onceIframeLoaded(\n n2,\n () => {\n const iframeDoc = n2.contentDocument;\n if (iframeDoc && onIframeLoad) {\n const serializedIframeNode = serializeNodeWithId(iframeDoc, {\n doc: iframeDoc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn\n });\n if (serializedIframeNode) {\n onIframeLoad(\n n2,\n serializedIframeNode\n );\n }\n }\n },\n iframeLoadTimeout\n );\n }\n if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"link\" && typeof serializedNode.attributes.rel === \"string\" && (serializedNode.attributes.rel === \"stylesheet\" || serializedNode.attributes.rel === \"preload\" && typeof serializedNode.attributes.href === \"string\" && extractFileExtension(serializedNode.attributes.href) === \"css\")) {\n onceStylesheetLoaded(\n n2,\n () => {\n if (onStylesheetLoad) {\n const serializedLinkNode = serializeNodeWithId(n2, {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn\n });\n if (serializedLinkNode) {\n onStylesheetLoad(\n n2,\n serializedLinkNode\n );\n }\n }\n },\n stylesheetLoadTimeout\n );\n }\n return serializedNode;\n}\nfunction snapshot(n2, options) {\n const {\n mirror: mirror2 = new Mirror(),\n blockClass = \"rr-block\",\n blockSelector = null,\n maskTextClass = \"rr-mask\",\n maskTextSelector = null,\n inlineStylesheet = true,\n inlineImages = false,\n recordCanvas = false,\n maskAllInputs = false,\n maskTextFn,\n maskInputFn,\n slimDOM = false,\n dataURLOptions,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn = () => false\n } = options || {};\n const maskInputOptions = maskAllInputs === true ? {\n color: true,\n date: true,\n \"datetime-local\": true,\n email: true,\n month: true,\n number: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true,\n textarea: true,\n select: true,\n password: true\n } : maskAllInputs === false ? {\n password: true\n } : maskAllInputs;\n const slimDOMOptions = slimDOM === true || slimDOM === \"all\" ? (\n // if true: set of sensible options that should not throw away any information\n {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaDescKeywords: slimDOM === \"all\",\n // destructive\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaAuthorship: true,\n headMetaVerification: true\n }\n ) : slimDOM === false ? {} : slimDOM;\n return serializeNodeWithId(n2, {\n doc: n2,\n mirror: mirror2,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn,\n newlyAddedElement: false\n });\n}\nfunction getDefaultExportFromCjs$1(x2) {\n return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, \"default\") ? x2[\"default\"] : x2;\n}\nfunction getAugmentedNamespace$1(n2) {\n if (n2.__esModule) return n2;\n var f2 = n2.default;\n if (typeof f2 == \"function\") {\n var a2 = function a22() {\n if (this instanceof a22) {\n return Reflect.construct(f2, arguments, this.constructor);\n }\n return f2.apply(this, arguments);\n };\n a2.prototype = f2.prototype;\n } else a2 = {};\n Object.defineProperty(a2, \"__esModule\", { value: true });\n Object.keys(n2).forEach(function(k) {\n var d = Object.getOwnPropertyDescriptor(n2, k);\n Object.defineProperty(a2, k, d.get ? d : {\n enumerable: true,\n get: function() {\n return n2[k];\n }\n });\n });\n return a2;\n}\nvar picocolors_browser$1 = { exports: {} };\nvar x$1 = String;\nvar create$1 = function() {\n return { isColorSupported: false, reset: x$1, bold: x$1, dim: x$1, italic: x$1, underline: x$1, inverse: x$1, hidden: x$1, strikethrough: x$1, black: x$1, red: x$1, green: x$1, yellow: x$1, blue: x$1, magenta: x$1, cyan: x$1, white: x$1, gray: x$1, bgBlack: x$1, bgRed: x$1, bgGreen: x$1, bgYellow: x$1, bgBlue: x$1, bgMagenta: x$1, bgCyan: x$1, bgWhite: x$1 };\n};\npicocolors_browser$1.exports = create$1();\npicocolors_browser$1.exports.createColors = create$1;\nvar picocolors_browserExports$1 = picocolors_browser$1.exports;\nconst __viteBrowserExternal$2 = {};\nconst __viteBrowserExternal$1$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: __viteBrowserExternal$2\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst require$$2$1 = /* @__PURE__ */ getAugmentedNamespace$1(__viteBrowserExternal$1$1);\nlet pico$1 = picocolors_browserExports$1;\nlet terminalHighlight$1$1 = require$$2$1;\nlet CssSyntaxError$3$1 = class CssSyntaxError extends Error {\n constructor(message, line, column, source, file, plugin22) {\n super(message);\n this.name = \"CssSyntaxError\";\n this.reason = message;\n if (file) {\n this.file = file;\n }\n if (source) {\n this.source = source;\n }\n if (plugin22) {\n this.plugin = plugin22;\n }\n if (typeof line !== \"undefined\" && typeof column !== \"undefined\") {\n if (typeof line === \"number\") {\n this.line = line;\n this.column = column;\n } else {\n this.line = line.line;\n this.column = line.column;\n this.endLine = column.line;\n this.endColumn = column.column;\n }\n }\n this.setMessage();\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, CssSyntaxError);\n }\n }\n setMessage() {\n this.message = this.plugin ? this.plugin + \": \" : \"\";\n this.message += this.file ? this.file : \"\";\n if (typeof this.line !== \"undefined\") {\n this.message += \":\" + this.line + \":\" + this.column;\n }\n this.message += \": \" + this.reason;\n }\n showSourceCode(color) {\n if (!this.source) return \"\";\n let css = this.source;\n if (color == null) color = pico$1.isColorSupported;\n if (terminalHighlight$1$1) {\n if (color) css = terminalHighlight$1$1(css);\n }\n let lines = css.split(/\\r?\\n/);\n let start = Math.max(this.line - 3, 0);\n let end = Math.min(this.line + 2, lines.length);\n let maxWidth = String(end).length;\n let mark, aside;\n if (color) {\n let { bold, gray, red } = pico$1.createColors(true);\n mark = (text) => bold(red(text));\n aside = (text) => gray(text);\n } else {\n mark = aside = (str) => str;\n }\n return lines.slice(start, end).map((line, index2) => {\n let number = start + 1 + index2;\n let gutter = \" \" + (\" \" + number).slice(-maxWidth) + \" | \";\n if (number === this.line) {\n let spacing = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, this.column - 1).replace(/[^\\t]/g, \" \");\n return mark(\">\") + aside(gutter) + line + \"\\n \" + spacing + mark(\"^\");\n }\n return \" \" + aside(gutter) + line;\n }).join(\"\\n\");\n }\n toString() {\n let code = this.showSourceCode();\n if (code) {\n code = \"\\n\\n\" + code + \"\\n\";\n }\n return this.name + \": \" + this.message + code;\n }\n};\nvar cssSyntaxError$1 = CssSyntaxError$3$1;\nCssSyntaxError$3$1.default = CssSyntaxError$3$1;\nvar symbols$1 = {};\nsymbols$1.isClean = Symbol(\"isClean\");\nsymbols$1.my = Symbol(\"my\");\nconst DEFAULT_RAW$1 = {\n after: \"\\n\",\n beforeClose: \"\\n\",\n beforeComment: \"\\n\",\n beforeDecl: \"\\n\",\n beforeOpen: \" \",\n beforeRule: \"\\n\",\n colon: \": \",\n commentLeft: \" \",\n commentRight: \" \",\n emptyBody: \"\",\n indent: \" \",\n semicolon: false\n};\nfunction capitalize$1(str) {\n return str[0].toUpperCase() + str.slice(1);\n}\nlet Stringifier$2$1 = class Stringifier {\n constructor(builder) {\n this.builder = builder;\n }\n atrule(node2, semicolon) {\n let name = \"@\" + node2.name;\n let params = node2.params ? this.rawValue(node2, \"params\") : \"\";\n if (typeof node2.raws.afterName !== \"undefined\") {\n name += node2.raws.afterName;\n } else if (params) {\n name += \" \";\n }\n if (node2.nodes) {\n this.block(node2, name + params);\n } else {\n let end = (node2.raws.between || \"\") + (semicolon ? \";\" : \"\");\n this.builder(name + params + end, node2);\n }\n }\n beforeAfter(node2, detect) {\n let value;\n if (node2.type === \"decl\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (node2.type === \"comment\") {\n value = this.raw(node2, null, \"beforeComment\");\n } else if (detect === \"before\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else {\n value = this.raw(node2, null, \"beforeClose\");\n }\n let buf = node2.parent;\n let depth = 0;\n while (buf && buf.type !== \"root\") {\n depth += 1;\n buf = buf.parent;\n }\n if (value.includes(\"\\n\")) {\n let indent = this.raw(node2, null, \"indent\");\n if (indent.length) {\n for (let step = 0; step < depth; step++) value += indent;\n }\n }\n return value;\n }\n block(node2, start) {\n let between = this.raw(node2, \"between\", \"beforeOpen\");\n this.builder(start + between + \"{\", node2, \"start\");\n let after;\n if (node2.nodes && node2.nodes.length) {\n this.body(node2);\n after = this.raw(node2, \"after\");\n } else {\n after = this.raw(node2, \"after\", \"emptyBody\");\n }\n if (after) this.builder(after);\n this.builder(\"}\", node2, \"end\");\n }\n body(node2) {\n let last = node2.nodes.length - 1;\n while (last > 0) {\n if (node2.nodes[last].type !== \"comment\") break;\n last -= 1;\n }\n let semicolon = this.raw(node2, \"semicolon\");\n for (let i2 = 0; i2 < node2.nodes.length; i2++) {\n let child = node2.nodes[i2];\n let before = this.raw(child, \"before\");\n if (before) this.builder(before);\n this.stringify(child, last !== i2 || semicolon);\n }\n }\n comment(node2) {\n let left = this.raw(node2, \"left\", \"commentLeft\");\n let right = this.raw(node2, \"right\", \"commentRight\");\n this.builder(\"/*\" + left + node2.text + right + \"*/\", node2);\n }\n decl(node2, semicolon) {\n let between = this.raw(node2, \"between\", \"colon\");\n let string = node2.prop + between + this.rawValue(node2, \"value\");\n if (node2.important) {\n string += node2.raws.important || \" !important\";\n }\n if (semicolon) string += \";\";\n this.builder(string, node2);\n }\n document(node2) {\n this.body(node2);\n }\n raw(node2, own, detect) {\n let value;\n if (!detect) detect = own;\n if (own) {\n value = node2.raws[own];\n if (typeof value !== \"undefined\") return value;\n }\n let parent = node2.parent;\n if (detect === \"before\") {\n if (!parent || parent.type === \"root\" && parent.first === node2) {\n return \"\";\n }\n if (parent && parent.type === \"document\") {\n return \"\";\n }\n }\n if (!parent) return DEFAULT_RAW$1[detect];\n let root2 = node2.root();\n if (!root2.rawCache) root2.rawCache = {};\n if (typeof root2.rawCache[detect] !== \"undefined\") {\n return root2.rawCache[detect];\n }\n if (detect === \"before\" || detect === \"after\") {\n return this.beforeAfter(node2, detect);\n } else {\n let method = \"raw\" + capitalize$1(detect);\n if (this[method]) {\n value = this[method](root2, node2);\n } else {\n root2.walk((i2) => {\n value = i2.raws[own];\n if (typeof value !== \"undefined\") return false;\n });\n }\n }\n if (typeof value === \"undefined\") value = DEFAULT_RAW$1[detect];\n root2.rawCache[detect] = value;\n return value;\n }\n rawBeforeClose(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length > 0) {\n if (typeof i2.raws.after !== \"undefined\") {\n value = i2.raws.after;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawBeforeComment(root2, node2) {\n let value;\n root2.walkComments((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeDecl(root2, node2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeOpen(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.type !== \"decl\") {\n value = i2.raws.between;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawBeforeRule(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && (i2.parent !== root2 || root2.first !== i2)) {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawColon(root2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.between !== \"undefined\") {\n value = i2.raws.between.replace(/[^\\s:]/g, \"\");\n return false;\n }\n });\n return value;\n }\n rawEmptyBody(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length === 0) {\n value = i2.raws.after;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawIndent(root2) {\n if (root2.raws.indent) return root2.raws.indent;\n let value;\n root2.walk((i2) => {\n let p = i2.parent;\n if (p && p !== root2 && p.parent && p.parent === root2) {\n if (typeof i2.raws.before !== \"undefined\") {\n let parts = i2.raws.before.split(\"\\n\");\n value = parts[parts.length - 1];\n value = value.replace(/\\S/g, \"\");\n return false;\n }\n }\n });\n return value;\n }\n rawSemicolon(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length && i2.last.type === \"decl\") {\n value = i2.raws.semicolon;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawValue(node2, prop) {\n let value = node2[prop];\n let raw = node2.raws[prop];\n if (raw && raw.value === value) {\n return raw.raw;\n }\n return value;\n }\n root(node2) {\n this.body(node2);\n if (node2.raws.after) this.builder(node2.raws.after);\n }\n rule(node2) {\n this.block(node2, this.rawValue(node2, \"selector\"));\n if (node2.raws.ownSemicolon) {\n this.builder(node2.raws.ownSemicolon, node2, \"end\");\n }\n }\n stringify(node2, semicolon) {\n if (!this[node2.type]) {\n throw new Error(\n \"Unknown AST node type \" + node2.type + \". Maybe you need to change PostCSS stringifier.\"\n );\n }\n this[node2.type](node2, semicolon);\n }\n};\nvar stringifier$1 = Stringifier$2$1;\nStringifier$2$1.default = Stringifier$2$1;\nlet Stringifier$1$1 = stringifier$1;\nfunction stringify$4$1(node2, builder) {\n let str = new Stringifier$1$1(builder);\n str.stringify(node2);\n}\nvar stringify_1$1 = stringify$4$1;\nstringify$4$1.default = stringify$4$1;\nlet { isClean: isClean$2$1, my: my$2$1 } = symbols$1;\nlet CssSyntaxError$2$1 = cssSyntaxError$1;\nlet Stringifier2$1 = stringifier$1;\nlet stringify$3$1 = stringify_1$1;\nfunction cloneNode$1(obj, parent) {\n let cloned = new obj.constructor();\n for (let i2 in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, i2)) {\n continue;\n }\n if (i2 === \"proxyCache\") continue;\n let value = obj[i2];\n let type = typeof value;\n if (i2 === \"parent\" && type === \"object\") {\n if (parent) cloned[i2] = parent;\n } else if (i2 === \"source\") {\n cloned[i2] = value;\n } else if (Array.isArray(value)) {\n cloned[i2] = value.map((j) => cloneNode$1(j, cloned));\n } else {\n if (type === \"object\" && value !== null) value = cloneNode$1(value);\n cloned[i2] = value;\n }\n }\n return cloned;\n}\nlet Node$4$1 = class Node2 {\n constructor(defaults = {}) {\n this.raws = {};\n this[isClean$2$1] = false;\n this[my$2$1] = true;\n for (let name in defaults) {\n if (name === \"nodes\") {\n this.nodes = [];\n for (let node2 of defaults[name]) {\n if (typeof node2.clone === \"function\") {\n this.append(node2.clone());\n } else {\n this.append(node2);\n }\n }\n } else {\n this[name] = defaults[name];\n }\n }\n }\n addToError(error) {\n error.postcssNode = this;\n if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n let s2 = this.source;\n error.stack = error.stack.replace(\n /\\n\\s{4}at /,\n `$&${s2.input.from}:${s2.start.line}:${s2.start.column}$&`\n );\n }\n return error;\n }\n after(add) {\n this.parent.insertAfter(this, add);\n return this;\n }\n assign(overrides = {}) {\n for (let name in overrides) {\n this[name] = overrides[name];\n }\n return this;\n }\n before(add) {\n this.parent.insertBefore(this, add);\n return this;\n }\n cleanRaws(keepBetween) {\n delete this.raws.before;\n delete this.raws.after;\n if (!keepBetween) delete this.raws.between;\n }\n clone(overrides = {}) {\n let cloned = cloneNode$1(this);\n for (let name in overrides) {\n cloned[name] = overrides[name];\n }\n return cloned;\n }\n cloneAfter(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertAfter(this, cloned);\n return cloned;\n }\n cloneBefore(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertBefore(this, cloned);\n return cloned;\n }\n error(message, opts = {}) {\n if (this.source) {\n let { end, start } = this.rangeBy(opts);\n return this.source.input.error(\n message,\n { column: start.column, line: start.line },\n { column: end.column, line: end.line },\n opts\n );\n }\n return new CssSyntaxError$2$1(message);\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"prop\" || prop === \"value\" || prop === \"name\" || prop === \"params\" || prop === \"important\" || /* c8 ignore next */\n prop === \"text\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n markDirty() {\n if (this[isClean$2$1]) {\n this[isClean$2$1] = false;\n let next = this;\n while (next = next.parent) {\n next[isClean$2$1] = false;\n }\n }\n }\n next() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 + 1];\n }\n positionBy(opts, stringRepresentation) {\n let pos = this.source.start;\n if (opts.index) {\n pos = this.positionInside(opts.index, stringRepresentation);\n } else if (opts.word) {\n stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) pos = this.positionInside(index2, stringRepresentation);\n }\n return pos;\n }\n positionInside(index2, stringRepresentation) {\n let string = stringRepresentation || this.toString();\n let column = this.source.start.column;\n let line = this.source.start.line;\n for (let i2 = 0; i2 < index2; i2++) {\n if (string[i2] === \"\\n\") {\n column = 1;\n line += 1;\n } else {\n column += 1;\n }\n }\n return { column, line };\n }\n prev() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 - 1];\n }\n rangeBy(opts) {\n let start = {\n column: this.source.start.column,\n line: this.source.start.line\n };\n let end = this.source.end ? {\n column: this.source.end.column + 1,\n line: this.source.end.line\n } : {\n column: start.column + 1,\n line: start.line\n };\n if (opts.word) {\n let stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) {\n start = this.positionInside(index2, stringRepresentation);\n end = this.positionInside(index2 + opts.word.length, stringRepresentation);\n }\n } else {\n if (opts.start) {\n start = {\n column: opts.start.column,\n line: opts.start.line\n };\n } else if (opts.index) {\n start = this.positionInside(opts.index);\n }\n if (opts.end) {\n end = {\n column: opts.end.column,\n line: opts.end.line\n };\n } else if (typeof opts.endIndex === \"number\") {\n end = this.positionInside(opts.endIndex);\n } else if (opts.index) {\n end = this.positionInside(opts.index + 1);\n }\n }\n if (end.line < start.line || end.line === start.line && end.column <= start.column) {\n end = { column: start.column + 1, line: start.line };\n }\n return { end, start };\n }\n raw(prop, defaultType) {\n let str = new Stringifier2$1();\n return str.raw(this, prop, defaultType);\n }\n remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n this.parent = void 0;\n return this;\n }\n replaceWith(...nodes) {\n if (this.parent) {\n let bookmark = this;\n let foundSelf = false;\n for (let node2 of nodes) {\n if (node2 === this) {\n foundSelf = true;\n } else if (foundSelf) {\n this.parent.insertAfter(bookmark, node2);\n bookmark = node2;\n } else {\n this.parent.insertBefore(bookmark, node2);\n }\n }\n if (!foundSelf) {\n this.remove();\n }\n }\n return this;\n }\n root() {\n let result2 = this;\n while (result2.parent && result2.parent.type !== \"document\") {\n result2 = result2.parent;\n }\n return result2;\n }\n toJSON(_, inputs) {\n let fixed = {};\n let emitInputs = inputs == null;\n inputs = inputs || /* @__PURE__ */ new Map();\n let inputsNextIndex = 0;\n for (let name in this) {\n if (!Object.prototype.hasOwnProperty.call(this, name)) {\n continue;\n }\n if (name === \"parent\" || name === \"proxyCache\") continue;\n let value = this[name];\n if (Array.isArray(value)) {\n fixed[name] = value.map((i2) => {\n if (typeof i2 === \"object\" && i2.toJSON) {\n return i2.toJSON(null, inputs);\n } else {\n return i2;\n }\n });\n } else if (typeof value === \"object\" && value.toJSON) {\n fixed[name] = value.toJSON(null, inputs);\n } else if (name === \"source\") {\n let inputId = inputs.get(value.input);\n if (inputId == null) {\n inputId = inputsNextIndex;\n inputs.set(value.input, inputsNextIndex);\n inputsNextIndex++;\n }\n fixed[name] = {\n end: value.end,\n inputId,\n start: value.start\n };\n } else {\n fixed[name] = value;\n }\n }\n if (emitInputs) {\n fixed.inputs = [...inputs.keys()].map((input2) => input2.toJSON());\n }\n return fixed;\n }\n toProxy() {\n if (!this.proxyCache) {\n this.proxyCache = new Proxy(this, this.getProxyProcessor());\n }\n return this.proxyCache;\n }\n toString(stringifier2 = stringify$3$1) {\n if (stringifier2.stringify) stringifier2 = stringifier2.stringify;\n let result2 = \"\";\n stringifier2(this, (i2) => {\n result2 += i2;\n });\n return result2;\n }\n warn(result2, text, opts) {\n let data = { node: this };\n for (let i2 in opts) data[i2] = opts[i2];\n return result2.warn(text, data);\n }\n get proxyOf() {\n return this;\n }\n};\nvar node$1 = Node$4$1;\nNode$4$1.default = Node$4$1;\nlet Node$3$1 = node$1;\nlet Declaration$4$1 = class Declaration extends Node$3$1 {\n constructor(defaults) {\n if (defaults && typeof defaults.value !== \"undefined\" && typeof defaults.value !== \"string\") {\n defaults = { ...defaults, value: String(defaults.value) };\n }\n super(defaults);\n this.type = \"decl\";\n }\n get variable() {\n return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n }\n};\nvar declaration$1 = Declaration$4$1;\nDeclaration$4$1.default = Declaration$4$1;\nlet urlAlphabet$1 = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\nlet customAlphabet$1 = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = \"\";\n let i2 = size;\n while (i2--) {\n id += alphabet[Math.random() * alphabet.length | 0];\n }\n return id;\n };\n};\nlet nanoid$1$1 = (size = 21) => {\n let id = \"\";\n let i2 = size;\n while (i2--) {\n id += urlAlphabet$1[Math.random() * 64 | 0];\n }\n return id;\n};\nvar nonSecure$1 = { nanoid: nanoid$1$1, customAlphabet: customAlphabet$1 };\nlet { SourceMapConsumer: SourceMapConsumer$2$1, SourceMapGenerator: SourceMapGenerator$2$1 } = require$$2$1;\nlet { existsSync: existsSync$1, readFileSync: readFileSync$1 } = require$$2$1;\nlet { dirname: dirname$1$1, join: join$1 } = require$$2$1;\nfunction fromBase64$1(str) {\n if (Buffer) {\n return Buffer.from(str, \"base64\").toString();\n } else {\n return window.atob(str);\n }\n}\nlet PreviousMap$2$1 = class PreviousMap {\n constructor(css, opts) {\n if (opts.map === false) return;\n this.loadAnnotation(css);\n this.inline = this.startWith(this.annotation, \"data:\");\n let prev = opts.map ? opts.map.prev : void 0;\n let text = this.loadMap(opts.from, prev);\n if (!this.mapFile && opts.from) {\n this.mapFile = opts.from;\n }\n if (this.mapFile) this.root = dirname$1$1(this.mapFile);\n if (text) this.text = text;\n }\n consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new SourceMapConsumer$2$1(this.text);\n }\n return this.consumerCache;\n }\n decodeInline(text) {\n let baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/;\n let baseUri = /^data:application\\/json;base64,/;\n let charsetUri = /^data:application\\/json;charset=utf-?8,/;\n let uri = /^data:application\\/json,/;\n if (charsetUri.test(text) || uri.test(text)) {\n return decodeURIComponent(text.substr(RegExp.lastMatch.length));\n }\n if (baseCharsetUri.test(text) || baseUri.test(text)) {\n return fromBase64$1(text.substr(RegExp.lastMatch.length));\n }\n let encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n throw new Error(\"Unsupported source map encoding \" + encoding);\n }\n getAnnotationURL(sourceMapString) {\n return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n }\n isMap(map) {\n if (typeof map !== \"object\") return false;\n return typeof map.mappings === \"string\" || typeof map._mappings === \"string\" || Array.isArray(map.sections);\n }\n loadAnnotation(css) {\n let comments = css.match(/\\/\\*\\s*# sourceMappingURL=/gm);\n if (!comments) return;\n let start = css.lastIndexOf(comments.pop());\n let end = css.indexOf(\"*/\", start);\n if (start > -1 && end > -1) {\n this.annotation = this.getAnnotationURL(css.substring(start, end));\n }\n }\n loadFile(path) {\n this.root = dirname$1$1(path);\n if (existsSync$1(path)) {\n this.mapFile = path;\n return readFileSync$1(path, \"utf-8\").toString().trim();\n }\n }\n loadMap(file, prev) {\n if (prev === false) return false;\n if (prev) {\n if (typeof prev === \"string\") {\n return prev;\n } else if (typeof prev === \"function\") {\n let prevPath = prev(file);\n if (prevPath) {\n let map = this.loadFile(prevPath);\n if (!map) {\n throw new Error(\n \"Unable to load previous source map: \" + prevPath.toString()\n );\n }\n return map;\n }\n } else if (prev instanceof SourceMapConsumer$2$1) {\n return SourceMapGenerator$2$1.fromSourceMap(prev).toString();\n } else if (prev instanceof SourceMapGenerator$2$1) {\n return prev.toString();\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev);\n } else {\n throw new Error(\n \"Unsupported previous source map format: \" + prev.toString()\n );\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation);\n } else if (this.annotation) {\n let map = this.annotation;\n if (file) map = join$1(dirname$1$1(file), map);\n return this.loadFile(map);\n }\n }\n startWith(string, start) {\n if (!string) return false;\n return string.substr(0, start.length) === start;\n }\n withContent() {\n return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n }\n};\nvar previousMap$1 = PreviousMap$2$1;\nPreviousMap$2$1.default = PreviousMap$2$1;\nlet { SourceMapConsumer: SourceMapConsumer$1$1, SourceMapGenerator: SourceMapGenerator$1$1 } = require$$2$1;\nlet { fileURLToPath: fileURLToPath$1, pathToFileURL: pathToFileURL$1$1 } = require$$2$1;\nlet { isAbsolute: isAbsolute$1, resolve: resolve$1$1 } = require$$2$1;\nlet { nanoid: nanoid$2 } = nonSecure$1;\nlet terminalHighlight$2 = require$$2$1;\nlet CssSyntaxError$1$1 = cssSyntaxError$1;\nlet PreviousMap$1$1 = previousMap$1;\nlet fromOffsetCache$1 = Symbol(\"fromOffsetCache\");\nlet sourceMapAvailable$1$1 = Boolean(SourceMapConsumer$1$1 && SourceMapGenerator$1$1);\nlet pathAvailable$1$1 = Boolean(resolve$1$1 && isAbsolute$1);\nlet Input$4$1 = class Input {\n constructor(css, opts = {}) {\n if (css === null || typeof css === \"undefined\" || typeof css === \"object\" && !css.toString) {\n throw new Error(`PostCSS received ${css} instead of CSS string`);\n }\n this.css = css.toString();\n if (this.css[0] === \"\\uFEFF\" || this.css[0] === \"￾\") {\n this.hasBOM = true;\n this.css = this.css.slice(1);\n } else {\n this.hasBOM = false;\n }\n if (opts.from) {\n if (!pathAvailable$1$1 || /^\\w+:\\/\\//.test(opts.from) || isAbsolute$1(opts.from)) {\n this.file = opts.from;\n } else {\n this.file = resolve$1$1(opts.from);\n }\n }\n if (pathAvailable$1$1 && sourceMapAvailable$1$1) {\n let map = new PreviousMap$1$1(this.css, opts);\n if (map.text) {\n this.map = map;\n let file = map.consumer().file;\n if (!this.file && file) this.file = this.mapResolve(file);\n }\n }\n if (!this.file) {\n this.id = \"\";\n }\n if (this.map) this.map.file = this.from;\n }\n error(message, line, column, opts = {}) {\n let result2, endLine, endColumn;\n if (line && typeof line === \"object\") {\n let start = line;\n let end = column;\n if (typeof start.offset === \"number\") {\n let pos = this.fromOffset(start.offset);\n line = pos.line;\n column = pos.col;\n } else {\n line = start.line;\n column = start.column;\n }\n if (typeof end.offset === \"number\") {\n let pos = this.fromOffset(end.offset);\n endLine = pos.line;\n endColumn = pos.col;\n } else {\n endLine = end.line;\n endColumn = end.column;\n }\n } else if (!column) {\n let pos = this.fromOffset(line);\n line = pos.line;\n column = pos.col;\n }\n let origin = this.origin(line, column, endLine, endColumn);\n if (origin) {\n result2 = new CssSyntaxError$1$1(\n message,\n origin.endLine === void 0 ? origin.line : { column: origin.column, line: origin.line },\n origin.endLine === void 0 ? origin.column : { column: origin.endColumn, line: origin.endLine },\n origin.source,\n origin.file,\n opts.plugin\n );\n } else {\n result2 = new CssSyntaxError$1$1(\n message,\n endLine === void 0 ? line : { column, line },\n endLine === void 0 ? column : { column: endColumn, line: endLine },\n this.css,\n this.file,\n opts.plugin\n );\n }\n result2.input = { column, endColumn, endLine, line, source: this.css };\n if (this.file) {\n if (pathToFileURL$1$1) {\n result2.input.url = pathToFileURL$1$1(this.file).toString();\n }\n result2.input.file = this.file;\n }\n return result2;\n }\n fromOffset(offset) {\n let lastLine, lineToIndex;\n if (!this[fromOffsetCache$1]) {\n let lines = this.css.split(\"\\n\");\n lineToIndex = new Array(lines.length);\n let prevIndex = 0;\n for (let i2 = 0, l2 = lines.length; i2 < l2; i2++) {\n lineToIndex[i2] = prevIndex;\n prevIndex += lines[i2].length + 1;\n }\n this[fromOffsetCache$1] = lineToIndex;\n } else {\n lineToIndex = this[fromOffsetCache$1];\n }\n lastLine = lineToIndex[lineToIndex.length - 1];\n let min = 0;\n if (offset >= lastLine) {\n min = lineToIndex.length - 1;\n } else {\n let max = lineToIndex.length - 2;\n let mid;\n while (min < max) {\n mid = min + (max - min >> 1);\n if (offset < lineToIndex[mid]) {\n max = mid - 1;\n } else if (offset >= lineToIndex[mid + 1]) {\n min = mid + 1;\n } else {\n min = mid;\n break;\n }\n }\n }\n return {\n col: offset - lineToIndex[min] + 1,\n line: min + 1\n };\n }\n mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file;\n }\n return resolve$1$1(this.map.consumer().sourceRoot || this.map.root || \".\", file);\n }\n origin(line, column, endLine, endColumn) {\n if (!this.map) return false;\n let consumer = this.map.consumer();\n let from = consumer.originalPositionFor({ column, line });\n if (!from.source) return false;\n let to;\n if (typeof endLine === \"number\") {\n to = consumer.originalPositionFor({ column: endColumn, line: endLine });\n }\n let fromUrl;\n if (isAbsolute$1(from.source)) {\n fromUrl = pathToFileURL$1$1(from.source);\n } else {\n fromUrl = new URL(\n from.source,\n this.map.consumer().sourceRoot || pathToFileURL$1$1(this.map.mapFile)\n );\n }\n let result2 = {\n column: from.column,\n endColumn: to && to.column,\n endLine: to && to.line,\n line: from.line,\n url: fromUrl.toString()\n };\n if (fromUrl.protocol === \"file:\") {\n if (fileURLToPath$1) {\n result2.file = fileURLToPath$1(fromUrl);\n } else {\n throw new Error(`file: protocol is not available in this PostCSS build`);\n }\n }\n let source = consumer.sourceContentFor(from.source);\n if (source) result2.source = source;\n return result2;\n }\n toJSON() {\n let json = {};\n for (let name of [\"hasBOM\", \"css\", \"file\", \"id\"]) {\n if (this[name] != null) {\n json[name] = this[name];\n }\n }\n if (this.map) {\n json.map = { ...this.map };\n if (json.map.consumerCache) {\n json.map.consumerCache = void 0;\n }\n }\n return json;\n }\n get from() {\n return this.file || this.id;\n }\n};\nvar input$1 = Input$4$1;\nInput$4$1.default = Input$4$1;\nif (terminalHighlight$2 && terminalHighlight$2.registerInput) {\n terminalHighlight$2.registerInput(Input$4$1);\n}\nlet { SourceMapConsumer: SourceMapConsumer$3, SourceMapGenerator: SourceMapGenerator$3 } = require$$2$1;\nlet { dirname: dirname$2, relative: relative$1, resolve: resolve$2, sep: sep$1 } = require$$2$1;\nlet { pathToFileURL: pathToFileURL$2 } = require$$2$1;\nlet Input$3$1 = input$1;\nlet sourceMapAvailable$2 = Boolean(SourceMapConsumer$3 && SourceMapGenerator$3);\nlet pathAvailable$2 = Boolean(dirname$2 && resolve$2 && relative$1 && sep$1);\nlet MapGenerator$2$1 = class MapGenerator {\n constructor(stringify2, root2, opts, cssString) {\n this.stringify = stringify2;\n this.mapOpts = opts.map || {};\n this.root = root2;\n this.opts = opts;\n this.css = cssString;\n this.originalCSS = cssString;\n this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute;\n this.memoizedFileURLs = /* @__PURE__ */ new Map();\n this.memoizedPaths = /* @__PURE__ */ new Map();\n this.memoizedURLs = /* @__PURE__ */ new Map();\n }\n addAnnotation() {\n let content;\n if (this.isInline()) {\n content = \"data:application/json;base64,\" + this.toBase64(this.map.toString());\n } else if (typeof this.mapOpts.annotation === \"string\") {\n content = this.mapOpts.annotation;\n } else if (typeof this.mapOpts.annotation === \"function\") {\n content = this.mapOpts.annotation(this.opts.to, this.root);\n } else {\n content = this.outputFile() + \".map\";\n }\n let eol = \"\\n\";\n if (this.css.includes(\"\\r\\n\")) eol = \"\\r\\n\";\n this.css += eol + \"/*# sourceMappingURL=\" + content + \" */\";\n }\n applyPrevMaps() {\n for (let prev of this.previous()) {\n let from = this.toUrl(this.path(prev.file));\n let root2 = prev.root || dirname$2(prev.file);\n let map;\n if (this.mapOpts.sourcesContent === false) {\n map = new SourceMapConsumer$3(prev.text);\n if (map.sourcesContent) {\n map.sourcesContent = null;\n }\n } else {\n map = prev.consumer();\n }\n this.map.applySourceMap(map, from, this.toUrl(this.path(root2)));\n }\n }\n clearAnnotation() {\n if (this.mapOpts.annotation === false) return;\n if (this.root) {\n let node2;\n for (let i2 = this.root.nodes.length - 1; i2 >= 0; i2--) {\n node2 = this.root.nodes[i2];\n if (node2.type !== \"comment\") continue;\n if (node2.text.indexOf(\"# sourceMappingURL=\") === 0) {\n this.root.removeChild(i2);\n }\n }\n } else if (this.css) {\n this.css = this.css.replace(/\\n*?\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\");\n }\n }\n generate() {\n this.clearAnnotation();\n if (pathAvailable$2 && sourceMapAvailable$2 && this.isMap()) {\n return this.generateMap();\n } else {\n let result2 = \"\";\n this.stringify(this.root, (i2) => {\n result2 += i2;\n });\n return [result2];\n }\n }\n generateMap() {\n if (this.root) {\n this.generateString();\n } else if (this.previous().length === 1) {\n let prev = this.previous()[0].consumer();\n prev.file = this.outputFile();\n this.map = SourceMapGenerator$3.fromSourceMap(prev, {\n ignoreInvalidMapping: true\n });\n } else {\n this.map = new SourceMapGenerator$3({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n this.map.addMapping({\n generated: { column: 0, line: 1 },\n original: { column: 0, line: 1 },\n source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\"\n });\n }\n if (this.isSourcesContent()) this.setSourcesContent();\n if (this.root && this.previous().length > 0) this.applyPrevMaps();\n if (this.isAnnotation()) this.addAnnotation();\n if (this.isInline()) {\n return [this.css];\n } else {\n return [this.css, this.map];\n }\n }\n generateString() {\n this.css = \"\";\n this.map = new SourceMapGenerator$3({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n let line = 1;\n let column = 1;\n let noSource = \"\";\n let mapping = {\n generated: { column: 0, line: 0 },\n original: { column: 0, line: 0 },\n source: \"\"\n };\n let lines, last;\n this.stringify(this.root, (str, node2, type) => {\n this.css += str;\n if (node2 && type !== \"end\") {\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n if (node2.source && node2.source.start) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.start.line;\n mapping.original.column = node2.source.start.column - 1;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n this.map.addMapping(mapping);\n }\n }\n lines = str.match(/\\n/g);\n if (lines) {\n line += lines.length;\n last = str.lastIndexOf(\"\\n\");\n column = str.length - last;\n } else {\n column += str.length;\n }\n if (node2 && type !== \"start\") {\n let p = node2.parent || { raws: {} };\n let childless = node2.type === \"decl\" || node2.type === \"atrule\" && !node2.nodes;\n if (!childless || node2 !== p.last || p.raws.semicolon) {\n if (node2.source && node2.source.end) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.end.line;\n mapping.original.column = node2.source.end.column - 1;\n mapping.generated.line = line;\n mapping.generated.column = column - 2;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n this.map.addMapping(mapping);\n }\n }\n }\n });\n }\n isAnnotation() {\n if (this.isInline()) {\n return true;\n }\n if (typeof this.mapOpts.annotation !== \"undefined\") {\n return this.mapOpts.annotation;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.annotation);\n }\n return true;\n }\n isInline() {\n if (typeof this.mapOpts.inline !== \"undefined\") {\n return this.mapOpts.inline;\n }\n let annotation = this.mapOpts.annotation;\n if (typeof annotation !== \"undefined\" && annotation !== true) {\n return false;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.inline);\n }\n return true;\n }\n isMap() {\n if (typeof this.opts.map !== \"undefined\") {\n return !!this.opts.map;\n }\n return this.previous().length > 0;\n }\n isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== \"undefined\") {\n return this.mapOpts.sourcesContent;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.withContent());\n }\n return true;\n }\n outputFile() {\n if (this.opts.to) {\n return this.path(this.opts.to);\n } else if (this.opts.from) {\n return this.path(this.opts.from);\n } else {\n return \"to.css\";\n }\n }\n path(file) {\n if (this.mapOpts.absolute) return file;\n if (file.charCodeAt(0) === 60) return file;\n if (/^\\w+:\\/\\//.test(file)) return file;\n let cached = this.memoizedPaths.get(file);\n if (cached) return cached;\n let from = this.opts.to ? dirname$2(this.opts.to) : \".\";\n if (typeof this.mapOpts.annotation === \"string\") {\n from = dirname$2(resolve$2(from, this.mapOpts.annotation));\n }\n let path = relative$1(from, file);\n this.memoizedPaths.set(file, path);\n return path;\n }\n previous() {\n if (!this.previousMaps) {\n this.previousMaps = [];\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source && node2.source.input.map) {\n let map = node2.source.input.map;\n if (!this.previousMaps.includes(map)) {\n this.previousMaps.push(map);\n }\n }\n });\n } else {\n let input2 = new Input$3$1(this.originalCSS, this.opts);\n if (input2.map) this.previousMaps.push(input2.map);\n }\n }\n return this.previousMaps;\n }\n setSourcesContent() {\n let already = {};\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source) {\n let from = node2.source.input.from;\n if (from && !already[from]) {\n already[from] = true;\n let fromUrl = this.usesFileUrls ? this.toFileUrl(from) : this.toUrl(this.path(from));\n this.map.setSourceContent(fromUrl, node2.source.input.css);\n }\n }\n });\n } else if (this.css) {\n let from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\";\n this.map.setSourceContent(from, this.css);\n }\n }\n sourcePath(node2) {\n if (this.mapOpts.from) {\n return this.toUrl(this.mapOpts.from);\n } else if (this.usesFileUrls) {\n return this.toFileUrl(node2.source.input.from);\n } else {\n return this.toUrl(this.path(node2.source.input.from));\n }\n }\n toBase64(str) {\n if (Buffer) {\n return Buffer.from(str).toString(\"base64\");\n } else {\n return window.btoa(unescape(encodeURIComponent(str)));\n }\n }\n toFileUrl(path) {\n let cached = this.memoizedFileURLs.get(path);\n if (cached) return cached;\n if (pathToFileURL$2) {\n let fileURL = pathToFileURL$2(path).toString();\n this.memoizedFileURLs.set(path, fileURL);\n return fileURL;\n } else {\n throw new Error(\n \"`map.absolute` option is not available in this PostCSS build\"\n );\n }\n }\n toUrl(path) {\n let cached = this.memoizedURLs.get(path);\n if (cached) return cached;\n if (sep$1 === \"\\\\\") {\n path = path.replace(/\\\\/g, \"/\");\n }\n let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent);\n this.memoizedURLs.set(path, url);\n return url;\n }\n};\nvar mapGenerator$1 = MapGenerator$2$1;\nlet Node$2$1 = node$1;\nlet Comment$4$1 = class Comment extends Node$2$1 {\n constructor(defaults) {\n super(defaults);\n this.type = \"comment\";\n }\n};\nvar comment$1 = Comment$4$1;\nComment$4$1.default = Comment$4$1;\nlet { isClean: isClean$1$1, my: my$1$1 } = symbols$1;\nlet Declaration$3$1 = declaration$1;\nlet Comment$3$1 = comment$1;\nlet Node$1$1 = node$1;\nlet parse$4$1, Rule$4$1, AtRule$4$1, Root$6$1;\nfunction cleanSource$1(nodes) {\n return nodes.map((i2) => {\n if (i2.nodes) i2.nodes = cleanSource$1(i2.nodes);\n delete i2.source;\n return i2;\n });\n}\nfunction markDirtyUp$1(node2) {\n node2[isClean$1$1] = false;\n if (node2.proxyOf.nodes) {\n for (let i2 of node2.proxyOf.nodes) {\n markDirtyUp$1(i2);\n }\n }\n}\nlet Container$7$1 = class Container extends Node$1$1 {\n append(...children) {\n for (let child of children) {\n let nodes = this.normalize(child, this.last);\n for (let node2 of nodes) this.proxyOf.nodes.push(node2);\n }\n this.markDirty();\n return this;\n }\n cleanRaws(keepBetween) {\n super.cleanRaws(keepBetween);\n if (this.nodes) {\n for (let node2 of this.nodes) node2.cleanRaws(keepBetween);\n }\n }\n each(callback) {\n if (!this.proxyOf.nodes) return void 0;\n let iterator = this.getIterator();\n let index2, result2;\n while (this.indexes[iterator] < this.proxyOf.nodes.length) {\n index2 = this.indexes[iterator];\n result2 = callback(this.proxyOf.nodes[index2], index2);\n if (result2 === false) break;\n this.indexes[iterator] += 1;\n }\n delete this.indexes[iterator];\n return result2;\n }\n every(condition) {\n return this.nodes.every(condition);\n }\n getIterator() {\n if (!this.lastEach) this.lastEach = 0;\n if (!this.indexes) this.indexes = {};\n this.lastEach += 1;\n let iterator = this.lastEach;\n this.indexes[iterator] = 0;\n return iterator;\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (!node2[prop]) {\n return node2[prop];\n } else if (prop === \"each\" || typeof prop === \"string\" && prop.startsWith(\"walk\")) {\n return (...args) => {\n return node2[prop](\n ...args.map((i2) => {\n if (typeof i2 === \"function\") {\n return (child, index2) => i2(child.toProxy(), index2);\n } else {\n return i2;\n }\n })\n );\n };\n } else if (prop === \"every\" || prop === \"some\") {\n return (cb) => {\n return node2[prop](\n (child, ...other) => cb(child.toProxy(), ...other)\n );\n };\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else if (prop === \"nodes\") {\n return node2.nodes.map((i2) => i2.toProxy());\n } else if (prop === \"first\" || prop === \"last\") {\n return node2[prop].toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"name\" || prop === \"params\" || prop === \"selector\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n index(child) {\n if (typeof child === \"number\") return child;\n if (child.proxyOf) child = child.proxyOf;\n return this.proxyOf.nodes.indexOf(child);\n }\n insertAfter(exist, add) {\n let existIndex = this.index(exist);\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex < index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n insertBefore(exist, add) {\n let existIndex = this.index(exist);\n let type = existIndex === 0 ? \"prepend\" : false;\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex <= index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n normalize(nodes, sample) {\n if (typeof nodes === \"string\") {\n nodes = cleanSource$1(parse$4$1(nodes).nodes);\n } else if (typeof nodes === \"undefined\") {\n nodes = [];\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type === \"root\" && this.type !== \"document\") {\n nodes = nodes.nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type) {\n nodes = [nodes];\n } else if (nodes.prop) {\n if (typeof nodes.value === \"undefined\") {\n throw new Error(\"Value field is missed in node creation\");\n } else if (typeof nodes.value !== \"string\") {\n nodes.value = String(nodes.value);\n }\n nodes = [new Declaration$3$1(nodes)];\n } else if (nodes.selector) {\n nodes = [new Rule$4$1(nodes)];\n } else if (nodes.name) {\n nodes = [new AtRule$4$1(nodes)];\n } else if (nodes.text) {\n nodes = [new Comment$3$1(nodes)];\n } else {\n throw new Error(\"Unknown node type in node creation\");\n }\n let processed = nodes.map((i2) => {\n if (!i2[my$1$1]) Container.rebuild(i2);\n i2 = i2.proxyOf;\n if (i2.parent) i2.parent.removeChild(i2);\n if (i2[isClean$1$1]) markDirtyUp$1(i2);\n if (typeof i2.raws.before === \"undefined\") {\n if (sample && typeof sample.raws.before !== \"undefined\") {\n i2.raws.before = sample.raws.before.replace(/\\S/g, \"\");\n }\n }\n i2.parent = this.proxyOf;\n return i2;\n });\n return processed;\n }\n prepend(...children) {\n children = children.reverse();\n for (let child of children) {\n let nodes = this.normalize(child, this.first, \"prepend\").reverse();\n for (let node2 of nodes) this.proxyOf.nodes.unshift(node2);\n for (let id in this.indexes) {\n this.indexes[id] = this.indexes[id] + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n push(child) {\n child.parent = this;\n this.proxyOf.nodes.push(child);\n return this;\n }\n removeAll() {\n for (let node2 of this.proxyOf.nodes) node2.parent = void 0;\n this.proxyOf.nodes = [];\n this.markDirty();\n return this;\n }\n removeChild(child) {\n child = this.index(child);\n this.proxyOf.nodes[child].parent = void 0;\n this.proxyOf.nodes.splice(child, 1);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (index2 >= child) {\n this.indexes[id] = index2 - 1;\n }\n }\n this.markDirty();\n return this;\n }\n replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {};\n }\n this.walkDecls((decl) => {\n if (opts.props && !opts.props.includes(decl.prop)) return;\n if (opts.fast && !decl.value.includes(opts.fast)) return;\n decl.value = decl.value.replace(pattern, callback);\n });\n this.markDirty();\n return this;\n }\n some(condition) {\n return this.nodes.some(condition);\n }\n walk(callback) {\n return this.each((child, i2) => {\n let result2;\n try {\n result2 = callback(child, i2);\n } catch (e2) {\n throw child.addToError(e2);\n }\n if (result2 !== false && child.walk) {\n result2 = child.walk(callback);\n }\n return result2;\n });\n }\n walkAtRules(name, callback) {\n if (!callback) {\n callback = name;\n return this.walk((child, i2) => {\n if (child.type === \"atrule\") {\n return callback(child, i2);\n }\n });\n }\n if (name instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && name.test(child.name)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && child.name === name) {\n return callback(child, i2);\n }\n });\n }\n walkComments(callback) {\n return this.walk((child, i2) => {\n if (child.type === \"comment\") {\n return callback(child, i2);\n }\n });\n }\n walkDecls(prop, callback) {\n if (!callback) {\n callback = prop;\n return this.walk((child, i2) => {\n if (child.type === \"decl\") {\n return callback(child, i2);\n }\n });\n }\n if (prop instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && prop.test(child.prop)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && child.prop === prop) {\n return callback(child, i2);\n }\n });\n }\n walkRules(selector, callback) {\n if (!callback) {\n callback = selector;\n return this.walk((child, i2) => {\n if (child.type === \"rule\") {\n return callback(child, i2);\n }\n });\n }\n if (selector instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && selector.test(child.selector)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && child.selector === selector) {\n return callback(child, i2);\n }\n });\n }\n get first() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[0];\n }\n get last() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n }\n};\nContainer$7$1.registerParse = (dependant) => {\n parse$4$1 = dependant;\n};\nContainer$7$1.registerRule = (dependant) => {\n Rule$4$1 = dependant;\n};\nContainer$7$1.registerAtRule = (dependant) => {\n AtRule$4$1 = dependant;\n};\nContainer$7$1.registerRoot = (dependant) => {\n Root$6$1 = dependant;\n};\nvar container$1 = Container$7$1;\nContainer$7$1.default = Container$7$1;\nContainer$7$1.rebuild = (node2) => {\n if (node2.type === \"atrule\") {\n Object.setPrototypeOf(node2, AtRule$4$1.prototype);\n } else if (node2.type === \"rule\") {\n Object.setPrototypeOf(node2, Rule$4$1.prototype);\n } else if (node2.type === \"decl\") {\n Object.setPrototypeOf(node2, Declaration$3$1.prototype);\n } else if (node2.type === \"comment\") {\n Object.setPrototypeOf(node2, Comment$3$1.prototype);\n } else if (node2.type === \"root\") {\n Object.setPrototypeOf(node2, Root$6$1.prototype);\n }\n node2[my$1$1] = true;\n if (node2.nodes) {\n node2.nodes.forEach((child) => {\n Container$7$1.rebuild(child);\n });\n }\n};\nlet Container$6$1 = container$1;\nlet LazyResult$4$1, Processor$3$1;\nlet Document$3$1 = class Document2 extends Container$6$1 {\n constructor(defaults) {\n super({ type: \"document\", ...defaults });\n if (!this.nodes) {\n this.nodes = [];\n }\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$4$1(new Processor$3$1(), this, opts);\n return lazy.stringify();\n }\n};\nDocument$3$1.registerLazyResult = (dependant) => {\n LazyResult$4$1 = dependant;\n};\nDocument$3$1.registerProcessor = (dependant) => {\n Processor$3$1 = dependant;\n};\nvar document$1$1 = Document$3$1;\nDocument$3$1.default = Document$3$1;\nlet printed$1 = {};\nvar warnOnce$2$1 = function warnOnce(message) {\n if (printed$1[message]) return;\n printed$1[message] = true;\n if (typeof console !== \"undefined\" && console.warn) {\n console.warn(message);\n }\n};\nlet Warning$2$1 = class Warning {\n constructor(text, opts = {}) {\n this.type = \"warning\";\n this.text = text;\n if (opts.node && opts.node.source) {\n let range = opts.node.rangeBy(opts);\n this.line = range.start.line;\n this.column = range.start.column;\n this.endLine = range.end.line;\n this.endColumn = range.end.column;\n }\n for (let opt in opts) this[opt] = opts[opt];\n }\n toString() {\n if (this.node) {\n return this.node.error(this.text, {\n index: this.index,\n plugin: this.plugin,\n word: this.word\n }).message;\n }\n if (this.plugin) {\n return this.plugin + \": \" + this.text;\n }\n return this.text;\n }\n};\nvar warning$1 = Warning$2$1;\nWarning$2$1.default = Warning$2$1;\nlet Warning$1$1 = warning$1;\nlet Result$3$1 = class Result {\n constructor(processor2, root2, opts) {\n this.processor = processor2;\n this.messages = [];\n this.root = root2;\n this.opts = opts;\n this.css = void 0;\n this.map = void 0;\n }\n toString() {\n return this.css;\n }\n warn(text, opts = {}) {\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin;\n }\n }\n let warning2 = new Warning$1$1(text, opts);\n this.messages.push(warning2);\n return warning2;\n }\n warnings() {\n return this.messages.filter((i2) => i2.type === \"warning\");\n }\n get content() {\n return this.css;\n }\n};\nvar result$1 = Result$3$1;\nResult$3$1.default = Result$3$1;\nconst SINGLE_QUOTE$1 = \"'\".charCodeAt(0);\nconst DOUBLE_QUOTE$1 = '\"'.charCodeAt(0);\nconst BACKSLASH$1 = \"\\\\\".charCodeAt(0);\nconst SLASH$1 = \"/\".charCodeAt(0);\nconst NEWLINE$1 = \"\\n\".charCodeAt(0);\nconst SPACE$1 = \" \".charCodeAt(0);\nconst FEED$1 = \"\\f\".charCodeAt(0);\nconst TAB$1 = \"\t\".charCodeAt(0);\nconst CR$1 = \"\\r\".charCodeAt(0);\nconst OPEN_SQUARE$1 = \"[\".charCodeAt(0);\nconst CLOSE_SQUARE$1 = \"]\".charCodeAt(0);\nconst OPEN_PARENTHESES$1 = \"(\".charCodeAt(0);\nconst CLOSE_PARENTHESES$1 = \")\".charCodeAt(0);\nconst OPEN_CURLY$1 = \"{\".charCodeAt(0);\nconst CLOSE_CURLY$1 = \"}\".charCodeAt(0);\nconst SEMICOLON$1 = \";\".charCodeAt(0);\nconst ASTERISK$1 = \"*\".charCodeAt(0);\nconst COLON$1 = \":\".charCodeAt(0);\nconst AT$1 = \"@\".charCodeAt(0);\nconst RE_AT_END$1 = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g;\nconst RE_WORD_END$1 = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g;\nconst RE_BAD_BRACKET$1 = /.[\\r\\n\"'(/\\\\]/;\nconst RE_HEX_ESCAPE$1 = /[\\da-f]/i;\nvar tokenize$1 = function tokenizer(input2, options = {}) {\n let css = input2.css.valueOf();\n let ignore = options.ignoreErrors;\n let code, next, quote, content, escape;\n let escaped, escapePos, prev, n2, currentToken;\n let length = css.length;\n let pos = 0;\n let buffer = [];\n let returned = [];\n function position() {\n return pos;\n }\n function unclosed(what) {\n throw input2.error(\"Unclosed \" + what, pos);\n }\n function endOfFile() {\n return returned.length === 0 && pos >= length;\n }\n function nextToken(opts) {\n if (returned.length) return returned.pop();\n if (pos >= length) return;\n let ignoreUnclosed = opts ? opts.ignoreUnclosed : false;\n code = css.charCodeAt(pos);\n switch (code) {\n case NEWLINE$1:\n case SPACE$1:\n case TAB$1:\n case CR$1:\n case FEED$1: {\n next = pos;\n do {\n next += 1;\n code = css.charCodeAt(next);\n } while (code === SPACE$1 || code === NEWLINE$1 || code === TAB$1 || code === CR$1 || code === FEED$1);\n currentToken = [\"space\", css.slice(pos, next)];\n pos = next - 1;\n break;\n }\n case OPEN_SQUARE$1:\n case CLOSE_SQUARE$1:\n case OPEN_CURLY$1:\n case CLOSE_CURLY$1:\n case COLON$1:\n case SEMICOLON$1:\n case CLOSE_PARENTHESES$1: {\n let controlChar = String.fromCharCode(code);\n currentToken = [controlChar, controlChar, pos];\n break;\n }\n case OPEN_PARENTHESES$1: {\n prev = buffer.length ? buffer.pop()[1] : \"\";\n n2 = css.charCodeAt(pos + 1);\n if (prev === \"url\" && n2 !== SINGLE_QUOTE$1 && n2 !== DOUBLE_QUOTE$1 && n2 !== SPACE$1 && n2 !== NEWLINE$1 && n2 !== TAB$1 && n2 !== FEED$1 && n2 !== CR$1) {\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(\")\", next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos;\n break;\n } else {\n unclosed(\"bracket\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH$1) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"brackets\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n next = css.indexOf(\")\", pos + 1);\n content = css.slice(pos, next + 1);\n if (next === -1 || RE_BAD_BRACKET$1.test(content)) {\n currentToken = [\"(\", \"(\", pos];\n } else {\n currentToken = [\"brackets\", content, pos, next];\n pos = next;\n }\n }\n break;\n }\n case SINGLE_QUOTE$1:\n case DOUBLE_QUOTE$1: {\n quote = code === SINGLE_QUOTE$1 ? \"'\" : '\"';\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(quote, next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos + 1;\n break;\n } else {\n unclosed(\"string\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH$1) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"string\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case AT$1: {\n RE_AT_END$1.lastIndex = pos + 1;\n RE_AT_END$1.test(css);\n if (RE_AT_END$1.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_AT_END$1.lastIndex - 2;\n }\n currentToken = [\"at-word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case BACKSLASH$1: {\n next = pos;\n escape = true;\n while (css.charCodeAt(next + 1) === BACKSLASH$1) {\n next += 1;\n escape = !escape;\n }\n code = css.charCodeAt(next + 1);\n if (escape && code !== SLASH$1 && code !== SPACE$1 && code !== NEWLINE$1 && code !== TAB$1 && code !== CR$1 && code !== FEED$1) {\n next += 1;\n if (RE_HEX_ESCAPE$1.test(css.charAt(next))) {\n while (RE_HEX_ESCAPE$1.test(css.charAt(next + 1))) {\n next += 1;\n }\n if (css.charCodeAt(next + 1) === SPACE$1) {\n next += 1;\n }\n }\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n default: {\n if (code === SLASH$1 && css.charCodeAt(pos + 1) === ASTERISK$1) {\n next = css.indexOf(\"*/\", pos + 2) + 1;\n if (next === 0) {\n if (ignore || ignoreUnclosed) {\n next = css.length;\n } else {\n unclosed(\"comment\");\n }\n }\n currentToken = [\"comment\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n RE_WORD_END$1.lastIndex = pos + 1;\n RE_WORD_END$1.test(css);\n if (RE_WORD_END$1.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_WORD_END$1.lastIndex - 2;\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n buffer.push(currentToken);\n pos = next;\n }\n break;\n }\n }\n pos++;\n return currentToken;\n }\n function back(token) {\n returned.push(token);\n }\n return {\n back,\n endOfFile,\n nextToken,\n position\n };\n};\nlet Container$5$1 = container$1;\nlet AtRule$3$1 = class AtRule extends Container$5$1 {\n constructor(defaults) {\n super(defaults);\n this.type = \"atrule\";\n }\n append(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.append(...children);\n }\n prepend(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.prepend(...children);\n }\n};\nvar atRule$1 = AtRule$3$1;\nAtRule$3$1.default = AtRule$3$1;\nContainer$5$1.registerAtRule(AtRule$3$1);\nlet Container$4$1 = container$1;\nlet LazyResult$3$1, Processor$2$1;\nlet Root$5$1 = class Root extends Container$4$1 {\n constructor(defaults) {\n super(defaults);\n this.type = \"root\";\n if (!this.nodes) this.nodes = [];\n }\n normalize(child, sample, type) {\n let nodes = super.normalize(child);\n if (sample) {\n if (type === \"prepend\") {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before;\n } else {\n delete sample.raws.before;\n }\n } else if (this.first !== sample) {\n for (let node2 of nodes) {\n node2.raws.before = sample.raws.before;\n }\n }\n }\n return nodes;\n }\n removeChild(child, ignore) {\n let index2 = this.index(child);\n if (!ignore && index2 === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index2].raws.before;\n }\n return super.removeChild(child);\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$3$1(new Processor$2$1(), this, opts);\n return lazy.stringify();\n }\n};\nRoot$5$1.registerLazyResult = (dependant) => {\n LazyResult$3$1 = dependant;\n};\nRoot$5$1.registerProcessor = (dependant) => {\n Processor$2$1 = dependant;\n};\nvar root$1 = Root$5$1;\nRoot$5$1.default = Root$5$1;\nContainer$4$1.registerRoot(Root$5$1);\nlet list$2$1 = {\n comma(string) {\n return list$2$1.split(string, [\",\"], true);\n },\n space(string) {\n let spaces = [\" \", \"\\n\", \"\t\"];\n return list$2$1.split(string, spaces);\n },\n split(string, separators, last) {\n let array = [];\n let current = \"\";\n let split = false;\n let func = 0;\n let inQuote = false;\n let prevQuote = \"\";\n let escape = false;\n for (let letter of string) {\n if (escape) {\n escape = false;\n } else if (letter === \"\\\\\") {\n escape = true;\n } else if (inQuote) {\n if (letter === prevQuote) {\n inQuote = false;\n }\n } else if (letter === '\"' || letter === \"'\") {\n inQuote = true;\n prevQuote = letter;\n } else if (letter === \"(\") {\n func += 1;\n } else if (letter === \")\") {\n if (func > 0) func -= 1;\n } else if (func === 0) {\n if (separators.includes(letter)) split = true;\n }\n if (split) {\n if (current !== \"\") array.push(current.trim());\n current = \"\";\n split = false;\n } else {\n current += letter;\n }\n }\n if (last || current !== \"\") array.push(current.trim());\n return array;\n }\n};\nvar list_1$1 = list$2$1;\nlist$2$1.default = list$2$1;\nlet Container$3$1 = container$1;\nlet list$1$1 = list_1$1;\nlet Rule$3$1 = class Rule extends Container$3$1 {\n constructor(defaults) {\n super(defaults);\n this.type = \"rule\";\n if (!this.nodes) this.nodes = [];\n }\n get selectors() {\n return list$1$1.comma(this.selector);\n }\n set selectors(values) {\n let match = this.selector ? this.selector.match(/,\\s*/) : null;\n let sep2 = match ? match[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n this.selector = values.join(sep2);\n }\n};\nvar rule$1 = Rule$3$1;\nRule$3$1.default = Rule$3$1;\nContainer$3$1.registerRule(Rule$3$1);\nlet Declaration$2$1 = declaration$1;\nlet tokenizer2$1 = tokenize$1;\nlet Comment$2$1 = comment$1;\nlet AtRule$2$1 = atRule$1;\nlet Root$4$1 = root$1;\nlet Rule$2$1 = rule$1;\nconst SAFE_COMMENT_NEIGHBOR$1 = {\n empty: true,\n space: true\n};\nfunction findLastWithPosition$1(tokens) {\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n let token = tokens[i2];\n let pos = token[3] || token[2];\n if (pos) return pos;\n }\n}\nlet Parser$1$1 = class Parser {\n constructor(input2) {\n this.input = input2;\n this.root = new Root$4$1();\n this.current = this.root;\n this.spaces = \"\";\n this.semicolon = false;\n this.createTokenizer();\n this.root.source = { input: input2, start: { column: 1, line: 1, offset: 0 } };\n }\n atrule(token) {\n let node2 = new AtRule$2$1();\n node2.name = token[1].slice(1);\n if (node2.name === \"\") {\n this.unnamedAtrule(node2, token);\n }\n this.init(node2, token[2]);\n let type;\n let prev;\n let shift;\n let last = false;\n let open = false;\n let params = [];\n let brackets = [];\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n type = token[0];\n if (type === \"(\" || type === \"[\") {\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (type === \"{\" && brackets.length > 0) {\n brackets.push(\"}\");\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n }\n if (brackets.length === 0) {\n if (type === \";\") {\n node2.source.end = this.getPosition(token[2]);\n node2.source.end.offset++;\n this.semicolon = true;\n break;\n } else if (type === \"{\") {\n open = true;\n break;\n } else if (type === \"}\") {\n if (params.length > 0) {\n shift = params.length - 1;\n prev = params[shift];\n while (prev && prev[0] === \"space\") {\n prev = params[--shift];\n }\n if (prev) {\n node2.source.end = this.getPosition(prev[3] || prev[2]);\n node2.source.end.offset++;\n }\n }\n this.end(token);\n break;\n } else {\n params.push(token);\n }\n } else {\n params.push(token);\n }\n if (this.tokenizer.endOfFile()) {\n last = true;\n break;\n }\n }\n node2.raws.between = this.spacesAndCommentsFromEnd(params);\n if (params.length) {\n node2.raws.afterName = this.spacesAndCommentsFromStart(params);\n this.raw(node2, \"params\", params);\n if (last) {\n token = params[params.length - 1];\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n this.spaces = node2.raws.between;\n node2.raws.between = \"\";\n }\n } else {\n node2.raws.afterName = \"\";\n node2.params = \"\";\n }\n if (open) {\n node2.nodes = [];\n this.current = node2;\n }\n }\n checkMissedSemicolon(tokens) {\n let colon = this.colon(tokens);\n if (colon === false) return;\n let founded = 0;\n let token;\n for (let j = colon - 1; j >= 0; j--) {\n token = tokens[j];\n if (token[0] !== \"space\") {\n founded += 1;\n if (founded === 2) break;\n }\n }\n throw this.input.error(\n \"Missed semicolon\",\n token[0] === \"word\" ? token[3] + 1 : token[2]\n );\n }\n colon(tokens) {\n let brackets = 0;\n let token, type, prev;\n for (let [i2, element] of tokens.entries()) {\n token = element;\n type = token[0];\n if (type === \"(\") {\n brackets += 1;\n }\n if (type === \")\") {\n brackets -= 1;\n }\n if (brackets === 0 && type === \":\") {\n if (!prev) {\n this.doubleColon(token);\n } else if (prev[0] === \"word\" && prev[1] === \"progid\") {\n continue;\n } else {\n return i2;\n }\n }\n prev = token;\n }\n return false;\n }\n comment(token) {\n let node2 = new Comment$2$1();\n this.init(node2, token[2]);\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n let text = token[1].slice(2, -2);\n if (/^\\s*$/.test(text)) {\n node2.text = \"\";\n node2.raws.left = text;\n node2.raws.right = \"\";\n } else {\n let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n node2.text = match[2];\n node2.raws.left = match[1];\n node2.raws.right = match[3];\n }\n }\n createTokenizer() {\n this.tokenizer = tokenizer2$1(this.input);\n }\n decl(tokens, customProperty) {\n let node2 = new Declaration$2$1();\n this.init(node2, tokens[0][2]);\n let last = tokens[tokens.length - 1];\n if (last[0] === \";\") {\n this.semicolon = true;\n tokens.pop();\n }\n node2.source.end = this.getPosition(\n last[3] || last[2] || findLastWithPosition$1(tokens)\n );\n node2.source.end.offset++;\n while (tokens[0][0] !== \"word\") {\n if (tokens.length === 1) this.unknownWord(tokens);\n node2.raws.before += tokens.shift()[1];\n }\n node2.source.start = this.getPosition(tokens[0][2]);\n node2.prop = \"\";\n while (tokens.length) {\n let type = tokens[0][0];\n if (type === \":\" || type === \"space\" || type === \"comment\") {\n break;\n }\n node2.prop += tokens.shift()[1];\n }\n node2.raws.between = \"\";\n let token;\n while (tokens.length) {\n token = tokens.shift();\n if (token[0] === \":\") {\n node2.raws.between += token[1];\n break;\n } else {\n if (token[0] === \"word\" && /\\w/.test(token[1])) {\n this.unknownWord([token]);\n }\n node2.raws.between += token[1];\n }\n }\n if (node2.prop[0] === \"_\" || node2.prop[0] === \"*\") {\n node2.raws.before += node2.prop[0];\n node2.prop = node2.prop.slice(1);\n }\n let firstSpaces = [];\n let next;\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n firstSpaces.push(tokens.shift());\n }\n this.precheckMissedSemicolon(tokens);\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n token = tokens[i2];\n if (token[1].toLowerCase() === \"!important\") {\n node2.important = true;\n let string = this.stringFrom(tokens, i2);\n string = this.spacesFromEnd(tokens) + string;\n if (string !== \" !important\") node2.raws.important = string;\n break;\n } else if (token[1].toLowerCase() === \"important\") {\n let cache = tokens.slice(0);\n let str = \"\";\n for (let j = i2; j > 0; j--) {\n let type = cache[j][0];\n if (str.trim().indexOf(\"!\") === 0 && type !== \"space\") {\n break;\n }\n str = cache.pop()[1] + str;\n }\n if (str.trim().indexOf(\"!\") === 0) {\n node2.important = true;\n node2.raws.important = str;\n tokens = cache;\n }\n }\n if (token[0] !== \"space\" && token[0] !== \"comment\") {\n break;\n }\n }\n let hasWord = tokens.some((i2) => i2[0] !== \"space\" && i2[0] !== \"comment\");\n if (hasWord) {\n node2.raws.between += firstSpaces.map((i2) => i2[1]).join(\"\");\n firstSpaces = [];\n }\n this.raw(node2, \"value\", firstSpaces.concat(tokens), customProperty);\n if (node2.value.includes(\":\") && !customProperty) {\n this.checkMissedSemicolon(tokens);\n }\n }\n doubleColon(token) {\n throw this.input.error(\n \"Double colon\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n emptyRule(token) {\n let node2 = new Rule$2$1();\n this.init(node2, token[2]);\n node2.selector = \"\";\n node2.raws.between = \"\";\n this.current = node2;\n }\n end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.semicolon = false;\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.spaces = \"\";\n if (this.current.parent) {\n this.current.source.end = this.getPosition(token[2]);\n this.current.source.end.offset++;\n this.current = this.current.parent;\n } else {\n this.unexpectedClose(token);\n }\n }\n endFile() {\n if (this.current.parent) this.unclosedBlock();\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.root.source.end = this.getPosition(this.tokenizer.position());\n }\n freeSemicolon(token) {\n this.spaces += token[1];\n if (this.current.nodes) {\n let prev = this.current.nodes[this.current.nodes.length - 1];\n if (prev && prev.type === \"rule\" && !prev.raws.ownSemicolon) {\n prev.raws.ownSemicolon = this.spaces;\n this.spaces = \"\";\n }\n }\n }\n // Helpers\n getPosition(offset) {\n let pos = this.input.fromOffset(offset);\n return {\n column: pos.col,\n line: pos.line,\n offset\n };\n }\n init(node2, offset) {\n this.current.push(node2);\n node2.source = {\n input: this.input,\n start: this.getPosition(offset)\n };\n node2.raws.before = this.spaces;\n this.spaces = \"\";\n if (node2.type !== \"comment\") this.semicolon = false;\n }\n other(start) {\n let end = false;\n let type = null;\n let colon = false;\n let bracket = null;\n let brackets = [];\n let customProperty = start[1].startsWith(\"--\");\n let tokens = [];\n let token = start;\n while (token) {\n type = token[0];\n tokens.push(token);\n if (type === \"(\" || type === \"[\") {\n if (!bracket) bracket = token;\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (customProperty && colon && type === \"{\") {\n if (!bracket) bracket = token;\n brackets.push(\"}\");\n } else if (brackets.length === 0) {\n if (type === \";\") {\n if (colon) {\n this.decl(tokens, customProperty);\n return;\n } else {\n break;\n }\n } else if (type === \"{\") {\n this.rule(tokens);\n return;\n } else if (type === \"}\") {\n this.tokenizer.back(tokens.pop());\n end = true;\n break;\n } else if (type === \":\") {\n colon = true;\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n if (brackets.length === 0) bracket = null;\n }\n token = this.tokenizer.nextToken();\n }\n if (this.tokenizer.endOfFile()) end = true;\n if (brackets.length > 0) this.unclosedBracket(bracket);\n if (end && colon) {\n if (!customProperty) {\n while (tokens.length) {\n token = tokens[tokens.length - 1][0];\n if (token !== \"space\" && token !== \"comment\") break;\n this.tokenizer.back(tokens.pop());\n }\n }\n this.decl(tokens, customProperty);\n } else {\n this.unknownWord(tokens);\n }\n }\n parse() {\n let token;\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n switch (token[0]) {\n case \"space\":\n this.spaces += token[1];\n break;\n case \";\":\n this.freeSemicolon(token);\n break;\n case \"}\":\n this.end(token);\n break;\n case \"comment\":\n this.comment(token);\n break;\n case \"at-word\":\n this.atrule(token);\n break;\n case \"{\":\n this.emptyRule(token);\n break;\n default:\n this.other(token);\n break;\n }\n }\n this.endFile();\n }\n precheckMissedSemicolon() {\n }\n raw(node2, prop, tokens, customProperty) {\n let token, type;\n let length = tokens.length;\n let value = \"\";\n let clean = true;\n let next, prev;\n for (let i2 = 0; i2 < length; i2 += 1) {\n token = tokens[i2];\n type = token[0];\n if (type === \"space\" && i2 === length - 1 && !customProperty) {\n clean = false;\n } else if (type === \"comment\") {\n prev = tokens[i2 - 1] ? tokens[i2 - 1][0] : \"empty\";\n next = tokens[i2 + 1] ? tokens[i2 + 1][0] : \"empty\";\n if (!SAFE_COMMENT_NEIGHBOR$1[prev] && !SAFE_COMMENT_NEIGHBOR$1[next]) {\n if (value.slice(-1) === \",\") {\n clean = false;\n } else {\n value += token[1];\n }\n } else {\n clean = false;\n }\n } else {\n value += token[1];\n }\n }\n if (!clean) {\n let raw = tokens.reduce((all, i2) => all + i2[1], \"\");\n node2.raws[prop] = { raw, value };\n }\n node2[prop] = value;\n }\n rule(tokens) {\n tokens.pop();\n let node2 = new Rule$2$1();\n this.init(node2, tokens[0][2]);\n node2.raws.between = this.spacesAndCommentsFromEnd(tokens);\n this.raw(node2, \"selector\", tokens);\n this.current = node2;\n }\n spacesAndCommentsFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\" && lastTokenType !== \"comment\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n // Errors\n spacesAndCommentsFromStart(tokens) {\n let next;\n let spaces = \"\";\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n spaces += tokens.shift()[1];\n }\n return spaces;\n }\n spacesFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n stringFrom(tokens, from) {\n let result2 = \"\";\n for (let i2 = from; i2 < tokens.length; i2++) {\n result2 += tokens[i2][1];\n }\n tokens.splice(from, tokens.length - from);\n return result2;\n }\n unclosedBlock() {\n let pos = this.current.source.start;\n throw this.input.error(\"Unclosed block\", pos.line, pos.column);\n }\n unclosedBracket(bracket) {\n throw this.input.error(\n \"Unclosed bracket\",\n { offset: bracket[2] },\n { offset: bracket[2] + 1 }\n );\n }\n unexpectedClose(token) {\n throw this.input.error(\n \"Unexpected }\",\n { offset: token[2] },\n { offset: token[2] + 1 }\n );\n }\n unknownWord(tokens) {\n throw this.input.error(\n \"Unknown word\",\n { offset: tokens[0][2] },\n { offset: tokens[0][2] + tokens[0][1].length }\n );\n }\n unnamedAtrule(node2, token) {\n throw this.input.error(\n \"At-rule without name\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n};\nvar parser$1 = Parser$1$1;\nlet Container$2$1 = container$1;\nlet Parser2$1 = parser$1;\nlet Input$2$1 = input$1;\nfunction parse$3$1(css, opts) {\n let input2 = new Input$2$1(css, opts);\n let parser2 = new Parser2$1(input2);\n try {\n parser2.parse();\n } catch (e2) {\n if (process.env.NODE_ENV !== \"production\") {\n if (e2.name === \"CssSyntaxError\" && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser\";\n } else if (/\\.sass/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser\";\n } else if (/\\.less$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser\";\n }\n }\n }\n throw e2;\n }\n return parser2.root;\n}\nvar parse_1$1 = parse$3$1;\nparse$3$1.default = parse$3$1;\nContainer$2$1.registerParse(parse$3$1);\nlet { isClean: isClean$3, my: my$3 } = symbols$1;\nlet MapGenerator$1$1 = mapGenerator$1;\nlet stringify$2$1 = stringify_1$1;\nlet Container$1$1 = container$1;\nlet Document$2$1 = document$1$1;\nlet warnOnce$1$1 = warnOnce$2$1;\nlet Result$2$1 = result$1;\nlet parse$2$1 = parse_1$1;\nlet Root$3$1 = root$1;\nconst TYPE_TO_CLASS_NAME$1 = {\n atrule: \"AtRule\",\n comment: \"Comment\",\n decl: \"Declaration\",\n document: \"Document\",\n root: \"Root\",\n rule: \"Rule\"\n};\nconst PLUGIN_PROPS$1 = {\n AtRule: true,\n AtRuleExit: true,\n Comment: true,\n CommentExit: true,\n Declaration: true,\n DeclarationExit: true,\n Document: true,\n DocumentExit: true,\n Once: true,\n OnceExit: true,\n postcssPlugin: true,\n prepare: true,\n Root: true,\n RootExit: true,\n Rule: true,\n RuleExit: true\n};\nconst NOT_VISITORS$1 = {\n Once: true,\n postcssPlugin: true,\n prepare: true\n};\nconst CHILDREN$1 = 0;\nfunction isPromise$1(obj) {\n return typeof obj === \"object\" && typeof obj.then === \"function\";\n}\nfunction getEvents$1(node2) {\n let key = false;\n let type = TYPE_TO_CLASS_NAME$1[node2.type];\n if (node2.type === \"decl\") {\n key = node2.prop.toLowerCase();\n } else if (node2.type === \"atrule\") {\n key = node2.name.toLowerCase();\n }\n if (key && node2.append) {\n return [\n type,\n type + \"-\" + key,\n CHILDREN$1,\n type + \"Exit\",\n type + \"Exit-\" + key\n ];\n } else if (key) {\n return [type, type + \"-\" + key, type + \"Exit\", type + \"Exit-\" + key];\n } else if (node2.append) {\n return [type, CHILDREN$1, type + \"Exit\"];\n } else {\n return [type, type + \"Exit\"];\n }\n}\nfunction toStack$1(node2) {\n let events;\n if (node2.type === \"document\") {\n events = [\"Document\", CHILDREN$1, \"DocumentExit\"];\n } else if (node2.type === \"root\") {\n events = [\"Root\", CHILDREN$1, \"RootExit\"];\n } else {\n events = getEvents$1(node2);\n }\n return {\n eventIndex: 0,\n events,\n iterator: 0,\n node: node2,\n visitorIndex: 0,\n visitors: []\n };\n}\nfunction cleanMarks$1(node2) {\n node2[isClean$3] = false;\n if (node2.nodes) node2.nodes.forEach((i2) => cleanMarks$1(i2));\n return node2;\n}\nlet postcss$2$1 = {};\nlet LazyResult$2$1 = class LazyResult {\n constructor(processor2, css, opts) {\n this.stringified = false;\n this.processed = false;\n let root2;\n if (typeof css === \"object\" && css !== null && (css.type === \"root\" || css.type === \"document\")) {\n root2 = cleanMarks$1(css);\n } else if (css instanceof LazyResult || css instanceof Result$2$1) {\n root2 = cleanMarks$1(css.root);\n if (css.map) {\n if (typeof opts.map === \"undefined\") opts.map = {};\n if (!opts.map.inline) opts.map.inline = false;\n opts.map.prev = css.map;\n }\n } else {\n let parser2 = parse$2$1;\n if (opts.syntax) parser2 = opts.syntax.parse;\n if (opts.parser) parser2 = opts.parser;\n if (parser2.parse) parser2 = parser2.parse;\n try {\n root2 = parser2(css, opts);\n } catch (error) {\n this.processed = true;\n this.error = error;\n }\n if (root2 && !root2[my$3]) {\n Container$1$1.rebuild(root2);\n }\n }\n this.result = new Result$2$1(processor2, root2, opts);\n this.helpers = { ...postcss$2$1, postcss: postcss$2$1, result: this.result };\n this.plugins = this.processor.plugins.map((plugin22) => {\n if (typeof plugin22 === \"object\" && plugin22.prepare) {\n return { ...plugin22, ...plugin22.prepare(this.result) };\n } else {\n return plugin22;\n }\n });\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n if (this.processed) return Promise.resolve(this.result);\n if (!this.processing) {\n this.processing = this.runAsync();\n }\n return this.processing;\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n getAsyncError() {\n throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n }\n handleError(error, node2) {\n let plugin22 = this.result.lastPlugin;\n try {\n if (node2) node2.addToError(error);\n this.error = error;\n if (error.name === \"CssSyntaxError\" && !error.plugin) {\n error.plugin = plugin22.postcssPlugin;\n error.setMessage();\n } else if (plugin22.postcssVersion) {\n if (process.env.NODE_ENV !== \"production\") {\n let pluginName = plugin22.postcssPlugin;\n let pluginVer = plugin22.postcssVersion;\n let runtimeVer = this.result.processor.version;\n let a2 = pluginVer.split(\".\");\n let b = runtimeVer.split(\".\");\n if (a2[0] !== b[0] || parseInt(a2[1]) > parseInt(b[1])) {\n console.error(\n \"Unknown error from PostCSS plugin. Your current PostCSS version is \" + runtimeVer + \", but \" + pluginName + \" uses \" + pluginVer + \". Perhaps this is the source of the error below.\"\n );\n }\n }\n }\n } catch (err) {\n if (console && console.error) console.error(err);\n }\n return error;\n }\n prepareVisitors() {\n this.listeners = {};\n let add = (plugin22, type, cb) => {\n if (!this.listeners[type]) this.listeners[type] = [];\n this.listeners[type].push([plugin22, cb]);\n };\n for (let plugin22 of this.plugins) {\n if (typeof plugin22 === \"object\") {\n for (let event in plugin22) {\n if (!PLUGIN_PROPS$1[event] && /^[A-Z]/.test(event)) {\n throw new Error(\n `Unknown event ${event} in ${plugin22.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`\n );\n }\n if (!NOT_VISITORS$1[event]) {\n if (typeof plugin22[event] === \"object\") {\n for (let filter in plugin22[event]) {\n if (filter === \"*\") {\n add(plugin22, event, plugin22[event][filter]);\n } else {\n add(\n plugin22,\n event + \"-\" + filter.toLowerCase(),\n plugin22[event][filter]\n );\n }\n }\n } else if (typeof plugin22[event] === \"function\") {\n add(plugin22, event, plugin22[event]);\n }\n }\n }\n }\n }\n this.hasListener = Object.keys(this.listeners).length > 0;\n }\n async runAsync() {\n this.plugin = 0;\n for (let i2 = 0; i2 < this.plugins.length; i2++) {\n let plugin22 = this.plugins[i2];\n let promise = this.runOnRoot(plugin22);\n if (isPromise$1(promise)) {\n try {\n await promise;\n } catch (error) {\n throw this.handleError(error);\n }\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean$3]) {\n root2[isClean$3] = true;\n let stack = [toStack$1(root2)];\n while (stack.length > 0) {\n let promise = this.visitTick(stack);\n if (isPromise$1(promise)) {\n try {\n await promise;\n } catch (e2) {\n let node2 = stack[stack.length - 1].node;\n throw this.handleError(e2, node2);\n }\n }\n }\n }\n if (this.listeners.OnceExit) {\n for (let [plugin22, visitor] of this.listeners.OnceExit) {\n this.result.lastPlugin = plugin22;\n try {\n if (root2.type === \"document\") {\n let roots = root2.nodes.map(\n (subRoot) => visitor(subRoot, this.helpers)\n );\n await Promise.all(roots);\n } else {\n await visitor(root2, this.helpers);\n }\n } catch (e2) {\n throw this.handleError(e2);\n }\n }\n }\n }\n this.processed = true;\n return this.stringify();\n }\n runOnRoot(plugin22) {\n this.result.lastPlugin = plugin22;\n try {\n if (typeof plugin22 === \"object\" && plugin22.Once) {\n if (this.result.root.type === \"document\") {\n let roots = this.result.root.nodes.map(\n (root2) => plugin22.Once(root2, this.helpers)\n );\n if (isPromise$1(roots[0])) {\n return Promise.all(roots);\n }\n return roots;\n }\n return plugin22.Once(this.result.root, this.helpers);\n } else if (typeof plugin22 === \"function\") {\n return plugin22(this.result.root, this.result);\n }\n } catch (error) {\n throw this.handleError(error);\n }\n }\n stringify() {\n if (this.error) throw this.error;\n if (this.stringified) return this.result;\n this.stringified = true;\n this.sync();\n let opts = this.result.opts;\n let str = stringify$2$1;\n if (opts.syntax) str = opts.syntax.stringify;\n if (opts.stringifier) str = opts.stringifier;\n if (str.stringify) str = str.stringify;\n let map = new MapGenerator$1$1(str, this.result.root, this.result.opts);\n let data = map.generate();\n this.result.css = data[0];\n this.result.map = data[1];\n return this.result;\n }\n sync() {\n if (this.error) throw this.error;\n if (this.processed) return this.result;\n this.processed = true;\n if (this.processing) {\n throw this.getAsyncError();\n }\n for (let plugin22 of this.plugins) {\n let promise = this.runOnRoot(plugin22);\n if (isPromise$1(promise)) {\n throw this.getAsyncError();\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean$3]) {\n root2[isClean$3] = true;\n this.walkSync(root2);\n }\n if (this.listeners.OnceExit) {\n if (root2.type === \"document\") {\n for (let subRoot of root2.nodes) {\n this.visitSync(this.listeners.OnceExit, subRoot);\n }\n } else {\n this.visitSync(this.listeners.OnceExit, root2);\n }\n }\n }\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this.opts)) {\n warnOnce$1$1(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this.css;\n }\n visitSync(visitors, node2) {\n for (let [plugin22, visitor] of visitors) {\n this.result.lastPlugin = plugin22;\n let promise;\n try {\n promise = visitor(node2, this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2.proxyOf);\n }\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n return true;\n }\n if (isPromise$1(promise)) {\n throw this.getAsyncError();\n }\n }\n }\n visitTick(stack) {\n let visit2 = stack[stack.length - 1];\n let { node: node2, visitors } = visit2;\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n stack.pop();\n return;\n }\n if (visitors.length > 0 && visit2.visitorIndex < visitors.length) {\n let [plugin22, visitor] = visitors[visit2.visitorIndex];\n visit2.visitorIndex += 1;\n if (visit2.visitorIndex === visitors.length) {\n visit2.visitors = [];\n visit2.visitorIndex = 0;\n }\n this.result.lastPlugin = plugin22;\n try {\n return visitor(node2.toProxy(), this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2);\n }\n }\n if (visit2.iterator !== 0) {\n let iterator = visit2.iterator;\n let child;\n while (child = node2.nodes[node2.indexes[iterator]]) {\n node2.indexes[iterator] += 1;\n if (!child[isClean$3]) {\n child[isClean$3] = true;\n stack.push(toStack$1(child));\n return;\n }\n }\n visit2.iterator = 0;\n delete node2.indexes[iterator];\n }\n let events = visit2.events;\n while (visit2.eventIndex < events.length) {\n let event = events[visit2.eventIndex];\n visit2.eventIndex += 1;\n if (event === CHILDREN$1) {\n if (node2.nodes && node2.nodes.length) {\n node2[isClean$3] = true;\n visit2.iterator = node2.getIterator();\n }\n return;\n } else if (this.listeners[event]) {\n visit2.visitors = this.listeners[event];\n return;\n }\n }\n stack.pop();\n }\n walkSync(node2) {\n node2[isClean$3] = true;\n let events = getEvents$1(node2);\n for (let event of events) {\n if (event === CHILDREN$1) {\n if (node2.nodes) {\n node2.each((child) => {\n if (!child[isClean$3]) this.walkSync(child);\n });\n }\n } else {\n let visitors = this.listeners[event];\n if (visitors) {\n if (this.visitSync(visitors, node2.toProxy())) return;\n }\n }\n }\n }\n warnings() {\n return this.sync().warnings();\n }\n get content() {\n return this.stringify().content;\n }\n get css() {\n return this.stringify().css;\n }\n get map() {\n return this.stringify().map;\n }\n get messages() {\n return this.sync().messages;\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n return this.sync().root;\n }\n get [Symbol.toStringTag]() {\n return \"LazyResult\";\n }\n};\nLazyResult$2$1.registerPostcss = (dependant) => {\n postcss$2$1 = dependant;\n};\nvar lazyResult$1 = LazyResult$2$1;\nLazyResult$2$1.default = LazyResult$2$1;\nRoot$3$1.registerLazyResult(LazyResult$2$1);\nDocument$2$1.registerLazyResult(LazyResult$2$1);\nlet MapGenerator2$1 = mapGenerator$1;\nlet stringify$1$1 = stringify_1$1;\nlet warnOnce2$1 = warnOnce$2$1;\nlet parse$1$1 = parse_1$1;\nconst Result$1$1 = result$1;\nlet NoWorkResult$1$1 = class NoWorkResult {\n constructor(processor2, css, opts) {\n css = css.toString();\n this.stringified = false;\n this._processor = processor2;\n this._css = css;\n this._opts = opts;\n this._map = void 0;\n let root2;\n let str = stringify$1$1;\n this.result = new Result$1$1(this._processor, root2, this._opts);\n this.result.css = css;\n let self = this;\n Object.defineProperty(this.result, \"root\", {\n get() {\n return self.root;\n }\n });\n let map = new MapGenerator2$1(str, root2, this._opts, css);\n if (map.isMap()) {\n let [generatedCSS, generatedMap] = map.generate();\n if (generatedCSS) {\n this.result.css = generatedCSS;\n }\n if (generatedMap) {\n this.result.map = generatedMap;\n }\n } else {\n map.clearAnnotation();\n this.result.css = map.css;\n }\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n return Promise.resolve(this.result);\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n sync() {\n if (this.error) throw this.error;\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this._opts)) {\n warnOnce2$1(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this._css;\n }\n warnings() {\n return [];\n }\n get content() {\n return this.result.css;\n }\n get css() {\n return this.result.css;\n }\n get map() {\n return this.result.map;\n }\n get messages() {\n return [];\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n if (this._root) {\n return this._root;\n }\n let root2;\n let parser2 = parse$1$1;\n try {\n root2 = parser2(this._css, this._opts);\n } catch (error) {\n this.error = error;\n }\n if (this.error) {\n throw this.error;\n } else {\n this._root = root2;\n return root2;\n }\n }\n get [Symbol.toStringTag]() {\n return \"NoWorkResult\";\n }\n};\nvar noWorkResult$1 = NoWorkResult$1$1;\nNoWorkResult$1$1.default = NoWorkResult$1$1;\nlet NoWorkResult2$1 = noWorkResult$1;\nlet LazyResult$1$1 = lazyResult$1;\nlet Document$1$1 = document$1$1;\nlet Root$2$1 = root$1;\nlet Processor$1$1 = class Processor {\n constructor(plugins = []) {\n this.version = \"8.4.38\";\n this.plugins = this.normalize(plugins);\n }\n normalize(plugins) {\n let normalized = [];\n for (let i2 of plugins) {\n if (i2.postcss === true) {\n i2 = i2();\n } else if (i2.postcss) {\n i2 = i2.postcss;\n }\n if (typeof i2 === \"object\" && Array.isArray(i2.plugins)) {\n normalized = normalized.concat(i2.plugins);\n } else if (typeof i2 === \"object\" && i2.postcssPlugin) {\n normalized.push(i2);\n } else if (typeof i2 === \"function\") {\n normalized.push(i2);\n } else if (typeof i2 === \"object\" && (i2.parse || i2.stringify)) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error(\n \"PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.\"\n );\n }\n } else {\n throw new Error(i2 + \" is not a PostCSS plugin\");\n }\n }\n return normalized;\n }\n process(css, opts = {}) {\n if (!this.plugins.length && !opts.parser && !opts.stringifier && !opts.syntax) {\n return new NoWorkResult2$1(this, css, opts);\n } else {\n return new LazyResult$1$1(this, css, opts);\n }\n }\n use(plugin22) {\n this.plugins = this.plugins.concat(this.normalize([plugin22]));\n return this;\n }\n};\nvar processor$1 = Processor$1$1;\nProcessor$1$1.default = Processor$1$1;\nRoot$2$1.registerProcessor(Processor$1$1);\nDocument$1$1.registerProcessor(Processor$1$1);\nlet Declaration$1$1 = declaration$1;\nlet PreviousMap2$1 = previousMap$1;\nlet Comment$1$1 = comment$1;\nlet AtRule$1$1 = atRule$1;\nlet Input$1$1 = input$1;\nlet Root$1$1 = root$1;\nlet Rule$1$1 = rule$1;\nfunction fromJSON$1$1(json, inputs) {\n if (Array.isArray(json)) return json.map((n2) => fromJSON$1$1(n2));\n let { inputs: ownInputs, ...defaults } = json;\n if (ownInputs) {\n inputs = [];\n for (let input2 of ownInputs) {\n let inputHydrated = { ...input2, __proto__: Input$1$1.prototype };\n if (inputHydrated.map) {\n inputHydrated.map = {\n ...inputHydrated.map,\n __proto__: PreviousMap2$1.prototype\n };\n }\n inputs.push(inputHydrated);\n }\n }\n if (defaults.nodes) {\n defaults.nodes = json.nodes.map((n2) => fromJSON$1$1(n2, inputs));\n }\n if (defaults.source) {\n let { inputId, ...source } = defaults.source;\n defaults.source = source;\n if (inputId != null) {\n defaults.source.input = inputs[inputId];\n }\n }\n if (defaults.type === \"root\") {\n return new Root$1$1(defaults);\n } else if (defaults.type === \"decl\") {\n return new Declaration$1$1(defaults);\n } else if (defaults.type === \"rule\") {\n return new Rule$1$1(defaults);\n } else if (defaults.type === \"comment\") {\n return new Comment$1$1(defaults);\n } else if (defaults.type === \"atrule\") {\n return new AtRule$1$1(defaults);\n } else {\n throw new Error(\"Unknown node type: \" + json.type);\n }\n}\nvar fromJSON_1$1 = fromJSON$1$1;\nfromJSON$1$1.default = fromJSON$1$1;\nlet CssSyntaxError2$1 = cssSyntaxError$1;\nlet Declaration2$1 = declaration$1;\nlet LazyResult2$1 = lazyResult$1;\nlet Container2$1 = container$1;\nlet Processor2$1 = processor$1;\nlet stringify$5 = stringify_1$1;\nlet fromJSON$2 = fromJSON_1$1;\nlet Document22 = document$1$1;\nlet Warning2$1 = warning$1;\nlet Comment2$1 = comment$1;\nlet AtRule2$1 = atRule$1;\nlet Result2$1 = result$1;\nlet Input2$1 = input$1;\nlet parse$5 = parse_1$1;\nlet list$3 = list_1$1;\nlet Rule2$1 = rule$1;\nlet Root2$1 = root$1;\nlet Node2$1 = node$1;\nfunction postcss$3(...plugins) {\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0];\n }\n return new Processor2$1(plugins);\n}\npostcss$3.plugin = function plugin(name, initializer) {\n let warningPrinted = false;\n function creator(...args) {\n if (console && console.warn && !warningPrinted) {\n warningPrinted = true;\n console.warn(\n name + \": postcss.plugin was deprecated. Migration guide:\\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration\"\n );\n if (process.env.LANG && process.env.LANG.startsWith(\"cn\")) {\n console.warn(\n name + \": 里面 postcss.plugin 被弃用. 迁移指南:\\nhttps://www.w3ctech.com/topic/2226\"\n );\n }\n }\n let transformer = initializer(...args);\n transformer.postcssPlugin = name;\n transformer.postcssVersion = new Processor2$1().version;\n return transformer;\n }\n let cache;\n Object.defineProperty(creator, \"postcss\", {\n get() {\n if (!cache) cache = creator();\n return cache;\n }\n });\n creator.process = function(css, processOpts, pluginOpts) {\n return postcss$3([creator(pluginOpts)]).process(css, processOpts);\n };\n return creator;\n};\npostcss$3.stringify = stringify$5;\npostcss$3.parse = parse$5;\npostcss$3.fromJSON = fromJSON$2;\npostcss$3.list = list$3;\npostcss$3.comment = (defaults) => new Comment2$1(defaults);\npostcss$3.atRule = (defaults) => new AtRule2$1(defaults);\npostcss$3.decl = (defaults) => new Declaration2$1(defaults);\npostcss$3.rule = (defaults) => new Rule2$1(defaults);\npostcss$3.root = (defaults) => new Root2$1(defaults);\npostcss$3.document = (defaults) => new Document22(defaults);\npostcss$3.CssSyntaxError = CssSyntaxError2$1;\npostcss$3.Declaration = Declaration2$1;\npostcss$3.Container = Container2$1;\npostcss$3.Processor = Processor2$1;\npostcss$3.Document = Document22;\npostcss$3.Comment = Comment2$1;\npostcss$3.Warning = Warning2$1;\npostcss$3.AtRule = AtRule2$1;\npostcss$3.Result = Result2$1;\npostcss$3.Input = Input2$1;\npostcss$3.Rule = Rule2$1;\npostcss$3.Root = Root2$1;\npostcss$3.Node = Node2$1;\nLazyResult2$1.registerPostcss(postcss$3);\nvar postcss_1$1 = postcss$3;\npostcss$3.default = postcss$3;\nconst postcss$1$1 = /* @__PURE__ */ getDefaultExportFromCjs$1(postcss_1$1);\npostcss$1$1.stringify;\npostcss$1$1.fromJSON;\npostcss$1$1.plugin;\npostcss$1$1.parse;\npostcss$1$1.list;\npostcss$1$1.document;\npostcss$1$1.comment;\npostcss$1$1.atRule;\npostcss$1$1.rule;\npostcss$1$1.decl;\npostcss$1$1.root;\npostcss$1$1.CssSyntaxError;\npostcss$1$1.Declaration;\npostcss$1$1.Container;\npostcss$1$1.Processor;\npostcss$1$1.Document;\npostcss$1$1.Comment;\npostcss$1$1.Warning;\npostcss$1$1.AtRule;\npostcss$1$1.Result;\npostcss$1$1.Input;\npostcss$1$1.Rule;\npostcss$1$1.Root;\npostcss$1$1.Node;\nvar __defProp2 = Object.defineProperty;\nvar __defNormalProp2 = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField2 = (obj, key, value) => __defNormalProp2(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nfunction getDefaultExportFromCjs(x2) {\n return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, \"default\") ? x2[\"default\"] : x2;\n}\nfunction getAugmentedNamespace(n2) {\n if (n2.__esModule) return n2;\n var f2 = n2.default;\n if (typeof f2 == \"function\") {\n var a2 = function a22() {\n if (this instanceof a22) {\n return Reflect.construct(f2, arguments, this.constructor);\n }\n return f2.apply(this, arguments);\n };\n a2.prototype = f2.prototype;\n } else a2 = {};\n Object.defineProperty(a2, \"__esModule\", { value: true });\n Object.keys(n2).forEach(function(k) {\n var d = Object.getOwnPropertyDescriptor(n2, k);\n Object.defineProperty(a2, k, d.get ? d : {\n enumerable: true,\n get: function() {\n return n2[k];\n }\n });\n });\n return a2;\n}\nvar picocolors_browser = { exports: {} };\nvar x = String;\nvar create = function() {\n return { isColorSupported: false, reset: x, bold: x, dim: x, italic: x, underline: x, inverse: x, hidden: x, strikethrough: x, black: x, red: x, green: x, yellow: x, blue: x, magenta: x, cyan: x, white: x, gray: x, bgBlack: x, bgRed: x, bgGreen: x, bgYellow: x, bgBlue: x, bgMagenta: x, bgCyan: x, bgWhite: x };\n};\npicocolors_browser.exports = create();\npicocolors_browser.exports.createColors = create;\nvar picocolors_browserExports = picocolors_browser.exports;\nconst __viteBrowserExternal = {};\nconst __viteBrowserExternal$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: __viteBrowserExternal\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst require$$2 = /* @__PURE__ */ getAugmentedNamespace(__viteBrowserExternal$1);\nlet pico = picocolors_browserExports;\nlet terminalHighlight$1 = require$$2;\nlet CssSyntaxError$3 = class CssSyntaxError2 extends Error {\n constructor(message, line, column, source, file, plugin22) {\n super(message);\n this.name = \"CssSyntaxError\";\n this.reason = message;\n if (file) {\n this.file = file;\n }\n if (source) {\n this.source = source;\n }\n if (plugin22) {\n this.plugin = plugin22;\n }\n if (typeof line !== \"undefined\" && typeof column !== \"undefined\") {\n if (typeof line === \"number\") {\n this.line = line;\n this.column = column;\n } else {\n this.line = line.line;\n this.column = line.column;\n this.endLine = column.line;\n this.endColumn = column.column;\n }\n }\n this.setMessage();\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, CssSyntaxError2);\n }\n }\n setMessage() {\n this.message = this.plugin ? this.plugin + \": \" : \"\";\n this.message += this.file ? this.file : \"\";\n if (typeof this.line !== \"undefined\") {\n this.message += \":\" + this.line + \":\" + this.column;\n }\n this.message += \": \" + this.reason;\n }\n showSourceCode(color) {\n if (!this.source) return \"\";\n let css = this.source;\n if (color == null) color = pico.isColorSupported;\n if (terminalHighlight$1) {\n if (color) css = terminalHighlight$1(css);\n }\n let lines = css.split(/\\r?\\n/);\n let start = Math.max(this.line - 3, 0);\n let end = Math.min(this.line + 2, lines.length);\n let maxWidth = String(end).length;\n let mark, aside;\n if (color) {\n let { bold, gray, red } = pico.createColors(true);\n mark = (text) => bold(red(text));\n aside = (text) => gray(text);\n } else {\n mark = aside = (str) => str;\n }\n return lines.slice(start, end).map((line, index2) => {\n let number = start + 1 + index2;\n let gutter = \" \" + (\" \" + number).slice(-maxWidth) + \" | \";\n if (number === this.line) {\n let spacing = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, this.column - 1).replace(/[^\\t]/g, \" \");\n return mark(\">\") + aside(gutter) + line + \"\\n \" + spacing + mark(\"^\");\n }\n return \" \" + aside(gutter) + line;\n }).join(\"\\n\");\n }\n toString() {\n let code = this.showSourceCode();\n if (code) {\n code = \"\\n\\n\" + code + \"\\n\";\n }\n return this.name + \": \" + this.message + code;\n }\n};\nvar cssSyntaxError = CssSyntaxError$3;\nCssSyntaxError$3.default = CssSyntaxError$3;\nvar symbols = {};\nsymbols.isClean = Symbol(\"isClean\");\nsymbols.my = Symbol(\"my\");\nconst DEFAULT_RAW = {\n after: \"\\n\",\n beforeClose: \"\\n\",\n beforeComment: \"\\n\",\n beforeDecl: \"\\n\",\n beforeOpen: \" \",\n beforeRule: \"\\n\",\n colon: \": \",\n commentLeft: \" \",\n commentRight: \" \",\n emptyBody: \"\",\n indent: \" \",\n semicolon: false\n};\nfunction capitalize(str) {\n return str[0].toUpperCase() + str.slice(1);\n}\nlet Stringifier$2 = class Stringifier2 {\n constructor(builder) {\n this.builder = builder;\n }\n atrule(node2, semicolon) {\n let name = \"@\" + node2.name;\n let params = node2.params ? this.rawValue(node2, \"params\") : \"\";\n if (typeof node2.raws.afterName !== \"undefined\") {\n name += node2.raws.afterName;\n } else if (params) {\n name += \" \";\n }\n if (node2.nodes) {\n this.block(node2, name + params);\n } else {\n let end = (node2.raws.between || \"\") + (semicolon ? \";\" : \"\");\n this.builder(name + params + end, node2);\n }\n }\n beforeAfter(node2, detect) {\n let value;\n if (node2.type === \"decl\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (node2.type === \"comment\") {\n value = this.raw(node2, null, \"beforeComment\");\n } else if (detect === \"before\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else {\n value = this.raw(node2, null, \"beforeClose\");\n }\n let buf = node2.parent;\n let depth = 0;\n while (buf && buf.type !== \"root\") {\n depth += 1;\n buf = buf.parent;\n }\n if (value.includes(\"\\n\")) {\n let indent = this.raw(node2, null, \"indent\");\n if (indent.length) {\n for (let step = 0; step < depth; step++) value += indent;\n }\n }\n return value;\n }\n block(node2, start) {\n let between = this.raw(node2, \"between\", \"beforeOpen\");\n this.builder(start + between + \"{\", node2, \"start\");\n let after;\n if (node2.nodes && node2.nodes.length) {\n this.body(node2);\n after = this.raw(node2, \"after\");\n } else {\n after = this.raw(node2, \"after\", \"emptyBody\");\n }\n if (after) this.builder(after);\n this.builder(\"}\", node2, \"end\");\n }\n body(node2) {\n let last = node2.nodes.length - 1;\n while (last > 0) {\n if (node2.nodes[last].type !== \"comment\") break;\n last -= 1;\n }\n let semicolon = this.raw(node2, \"semicolon\");\n for (let i2 = 0; i2 < node2.nodes.length; i2++) {\n let child = node2.nodes[i2];\n let before = this.raw(child, \"before\");\n if (before) this.builder(before);\n this.stringify(child, last !== i2 || semicolon);\n }\n }\n comment(node2) {\n let left = this.raw(node2, \"left\", \"commentLeft\");\n let right = this.raw(node2, \"right\", \"commentRight\");\n this.builder(\"/*\" + left + node2.text + right + \"*/\", node2);\n }\n decl(node2, semicolon) {\n let between = this.raw(node2, \"between\", \"colon\");\n let string = node2.prop + between + this.rawValue(node2, \"value\");\n if (node2.important) {\n string += node2.raws.important || \" !important\";\n }\n if (semicolon) string += \";\";\n this.builder(string, node2);\n }\n document(node2) {\n this.body(node2);\n }\n raw(node2, own, detect) {\n let value;\n if (!detect) detect = own;\n if (own) {\n value = node2.raws[own];\n if (typeof value !== \"undefined\") return value;\n }\n let parent = node2.parent;\n if (detect === \"before\") {\n if (!parent || parent.type === \"root\" && parent.first === node2) {\n return \"\";\n }\n if (parent && parent.type === \"document\") {\n return \"\";\n }\n }\n if (!parent) return DEFAULT_RAW[detect];\n let root2 = node2.root();\n if (!root2.rawCache) root2.rawCache = {};\n if (typeof root2.rawCache[detect] !== \"undefined\") {\n return root2.rawCache[detect];\n }\n if (detect === \"before\" || detect === \"after\") {\n return this.beforeAfter(node2, detect);\n } else {\n let method = \"raw\" + capitalize(detect);\n if (this[method]) {\n value = this[method](root2, node2);\n } else {\n root2.walk((i2) => {\n value = i2.raws[own];\n if (typeof value !== \"undefined\") return false;\n });\n }\n }\n if (typeof value === \"undefined\") value = DEFAULT_RAW[detect];\n root2.rawCache[detect] = value;\n return value;\n }\n rawBeforeClose(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length > 0) {\n if (typeof i2.raws.after !== \"undefined\") {\n value = i2.raws.after;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawBeforeComment(root2, node2) {\n let value;\n root2.walkComments((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeDecl(root2, node2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeOpen(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.type !== \"decl\") {\n value = i2.raws.between;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawBeforeRule(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && (i2.parent !== root2 || root2.first !== i2)) {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawColon(root2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.between !== \"undefined\") {\n value = i2.raws.between.replace(/[^\\s:]/g, \"\");\n return false;\n }\n });\n return value;\n }\n rawEmptyBody(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length === 0) {\n value = i2.raws.after;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawIndent(root2) {\n if (root2.raws.indent) return root2.raws.indent;\n let value;\n root2.walk((i2) => {\n let p = i2.parent;\n if (p && p !== root2 && p.parent && p.parent === root2) {\n if (typeof i2.raws.before !== \"undefined\") {\n let parts = i2.raws.before.split(\"\\n\");\n value = parts[parts.length - 1];\n value = value.replace(/\\S/g, \"\");\n return false;\n }\n }\n });\n return value;\n }\n rawSemicolon(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length && i2.last.type === \"decl\") {\n value = i2.raws.semicolon;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawValue(node2, prop) {\n let value = node2[prop];\n let raw = node2.raws[prop];\n if (raw && raw.value === value) {\n return raw.raw;\n }\n return value;\n }\n root(node2) {\n this.body(node2);\n if (node2.raws.after) this.builder(node2.raws.after);\n }\n rule(node2) {\n this.block(node2, this.rawValue(node2, \"selector\"));\n if (node2.raws.ownSemicolon) {\n this.builder(node2.raws.ownSemicolon, node2, \"end\");\n }\n }\n stringify(node2, semicolon) {\n if (!this[node2.type]) {\n throw new Error(\n \"Unknown AST node type \" + node2.type + \". Maybe you need to change PostCSS stringifier.\"\n );\n }\n this[node2.type](node2, semicolon);\n }\n};\nvar stringifier = Stringifier$2;\nStringifier$2.default = Stringifier$2;\nlet Stringifier$1 = stringifier;\nfunction stringify$4(node2, builder) {\n let str = new Stringifier$1(builder);\n str.stringify(node2);\n}\nvar stringify_1 = stringify$4;\nstringify$4.default = stringify$4;\nlet { isClean: isClean$2, my: my$2 } = symbols;\nlet CssSyntaxError$2 = cssSyntaxError;\nlet Stringifier22 = stringifier;\nlet stringify$3 = stringify_1;\nfunction cloneNode(obj, parent) {\n let cloned = new obj.constructor();\n for (let i2 in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, i2)) {\n continue;\n }\n if (i2 === \"proxyCache\") continue;\n let value = obj[i2];\n let type = typeof value;\n if (i2 === \"parent\" && type === \"object\") {\n if (parent) cloned[i2] = parent;\n } else if (i2 === \"source\") {\n cloned[i2] = value;\n } else if (Array.isArray(value)) {\n cloned[i2] = value.map((j) => cloneNode(j, cloned));\n } else {\n if (type === \"object\" && value !== null) value = cloneNode(value);\n cloned[i2] = value;\n }\n }\n return cloned;\n}\nlet Node$4 = class Node3 {\n constructor(defaults = {}) {\n this.raws = {};\n this[isClean$2] = false;\n this[my$2] = true;\n for (let name in defaults) {\n if (name === \"nodes\") {\n this.nodes = [];\n for (let node2 of defaults[name]) {\n if (typeof node2.clone === \"function\") {\n this.append(node2.clone());\n } else {\n this.append(node2);\n }\n }\n } else {\n this[name] = defaults[name];\n }\n }\n }\n addToError(error) {\n error.postcssNode = this;\n if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n let s2 = this.source;\n error.stack = error.stack.replace(\n /\\n\\s{4}at /,\n `$&${s2.input.from}:${s2.start.line}:${s2.start.column}$&`\n );\n }\n return error;\n }\n after(add) {\n this.parent.insertAfter(this, add);\n return this;\n }\n assign(overrides = {}) {\n for (let name in overrides) {\n this[name] = overrides[name];\n }\n return this;\n }\n before(add) {\n this.parent.insertBefore(this, add);\n return this;\n }\n cleanRaws(keepBetween) {\n delete this.raws.before;\n delete this.raws.after;\n if (!keepBetween) delete this.raws.between;\n }\n clone(overrides = {}) {\n let cloned = cloneNode(this);\n for (let name in overrides) {\n cloned[name] = overrides[name];\n }\n return cloned;\n }\n cloneAfter(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertAfter(this, cloned);\n return cloned;\n }\n cloneBefore(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertBefore(this, cloned);\n return cloned;\n }\n error(message, opts = {}) {\n if (this.source) {\n let { end, start } = this.rangeBy(opts);\n return this.source.input.error(\n message,\n { column: start.column, line: start.line },\n { column: end.column, line: end.line },\n opts\n );\n }\n return new CssSyntaxError$2(message);\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"prop\" || prop === \"value\" || prop === \"name\" || prop === \"params\" || prop === \"important\" || /* c8 ignore next */\n prop === \"text\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n markDirty() {\n if (this[isClean$2]) {\n this[isClean$2] = false;\n let next = this;\n while (next = next.parent) {\n next[isClean$2] = false;\n }\n }\n }\n next() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 + 1];\n }\n positionBy(opts, stringRepresentation) {\n let pos = this.source.start;\n if (opts.index) {\n pos = this.positionInside(opts.index, stringRepresentation);\n } else if (opts.word) {\n stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) pos = this.positionInside(index2, stringRepresentation);\n }\n return pos;\n }\n positionInside(index2, stringRepresentation) {\n let string = stringRepresentation || this.toString();\n let column = this.source.start.column;\n let line = this.source.start.line;\n for (let i2 = 0; i2 < index2; i2++) {\n if (string[i2] === \"\\n\") {\n column = 1;\n line += 1;\n } else {\n column += 1;\n }\n }\n return { column, line };\n }\n prev() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 - 1];\n }\n rangeBy(opts) {\n let start = {\n column: this.source.start.column,\n line: this.source.start.line\n };\n let end = this.source.end ? {\n column: this.source.end.column + 1,\n line: this.source.end.line\n } : {\n column: start.column + 1,\n line: start.line\n };\n if (opts.word) {\n let stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) {\n start = this.positionInside(index2, stringRepresentation);\n end = this.positionInside(index2 + opts.word.length, stringRepresentation);\n }\n } else {\n if (opts.start) {\n start = {\n column: opts.start.column,\n line: opts.start.line\n };\n } else if (opts.index) {\n start = this.positionInside(opts.index);\n }\n if (opts.end) {\n end = {\n column: opts.end.column,\n line: opts.end.line\n };\n } else if (typeof opts.endIndex === \"number\") {\n end = this.positionInside(opts.endIndex);\n } else if (opts.index) {\n end = this.positionInside(opts.index + 1);\n }\n }\n if (end.line < start.line || end.line === start.line && end.column <= start.column) {\n end = { column: start.column + 1, line: start.line };\n }\n return { end, start };\n }\n raw(prop, defaultType) {\n let str = new Stringifier22();\n return str.raw(this, prop, defaultType);\n }\n remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n this.parent = void 0;\n return this;\n }\n replaceWith(...nodes) {\n if (this.parent) {\n let bookmark = this;\n let foundSelf = false;\n for (let node2 of nodes) {\n if (node2 === this) {\n foundSelf = true;\n } else if (foundSelf) {\n this.parent.insertAfter(bookmark, node2);\n bookmark = node2;\n } else {\n this.parent.insertBefore(bookmark, node2);\n }\n }\n if (!foundSelf) {\n this.remove();\n }\n }\n return this;\n }\n root() {\n let result2 = this;\n while (result2.parent && result2.parent.type !== \"document\") {\n result2 = result2.parent;\n }\n return result2;\n }\n toJSON(_, inputs) {\n let fixed = {};\n let emitInputs = inputs == null;\n inputs = inputs || /* @__PURE__ */ new Map();\n let inputsNextIndex = 0;\n for (let name in this) {\n if (!Object.prototype.hasOwnProperty.call(this, name)) {\n continue;\n }\n if (name === \"parent\" || name === \"proxyCache\") continue;\n let value = this[name];\n if (Array.isArray(value)) {\n fixed[name] = value.map((i2) => {\n if (typeof i2 === \"object\" && i2.toJSON) {\n return i2.toJSON(null, inputs);\n } else {\n return i2;\n }\n });\n } else if (typeof value === \"object\" && value.toJSON) {\n fixed[name] = value.toJSON(null, inputs);\n } else if (name === \"source\") {\n let inputId = inputs.get(value.input);\n if (inputId == null) {\n inputId = inputsNextIndex;\n inputs.set(value.input, inputsNextIndex);\n inputsNextIndex++;\n }\n fixed[name] = {\n end: value.end,\n inputId,\n start: value.start\n };\n } else {\n fixed[name] = value;\n }\n }\n if (emitInputs) {\n fixed.inputs = [...inputs.keys()].map((input2) => input2.toJSON());\n }\n return fixed;\n }\n toProxy() {\n if (!this.proxyCache) {\n this.proxyCache = new Proxy(this, this.getProxyProcessor());\n }\n return this.proxyCache;\n }\n toString(stringifier2 = stringify$3) {\n if (stringifier2.stringify) stringifier2 = stringifier2.stringify;\n let result2 = \"\";\n stringifier2(this, (i2) => {\n result2 += i2;\n });\n return result2;\n }\n warn(result2, text, opts) {\n let data = { node: this };\n for (let i2 in opts) data[i2] = opts[i2];\n return result2.warn(text, data);\n }\n get proxyOf() {\n return this;\n }\n};\nvar node = Node$4;\nNode$4.default = Node$4;\nlet Node$3 = node;\nlet Declaration$4 = class Declaration2 extends Node$3 {\n constructor(defaults) {\n if (defaults && typeof defaults.value !== \"undefined\" && typeof defaults.value !== \"string\") {\n defaults = { ...defaults, value: String(defaults.value) };\n }\n super(defaults);\n this.type = \"decl\";\n }\n get variable() {\n return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n }\n};\nvar declaration = Declaration$4;\nDeclaration$4.default = Declaration$4;\nlet urlAlphabet = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\nlet customAlphabet = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = \"\";\n let i2 = size;\n while (i2--) {\n id += alphabet[Math.random() * alphabet.length | 0];\n }\n return id;\n };\n};\nlet nanoid$1 = (size = 21) => {\n let id = \"\";\n let i2 = size;\n while (i2--) {\n id += urlAlphabet[Math.random() * 64 | 0];\n }\n return id;\n};\nvar nonSecure = { nanoid: nanoid$1, customAlphabet };\nlet { SourceMapConsumer: SourceMapConsumer$2, SourceMapGenerator: SourceMapGenerator$2 } = require$$2;\nlet { existsSync, readFileSync } = require$$2;\nlet { dirname: dirname$1, join } = require$$2;\nfunction fromBase64(str) {\n if (Buffer) {\n return Buffer.from(str, \"base64\").toString();\n } else {\n return window.atob(str);\n }\n}\nlet PreviousMap$2 = class PreviousMap2 {\n constructor(css, opts) {\n if (opts.map === false) return;\n this.loadAnnotation(css);\n this.inline = this.startWith(this.annotation, \"data:\");\n let prev = opts.map ? opts.map.prev : void 0;\n let text = this.loadMap(opts.from, prev);\n if (!this.mapFile && opts.from) {\n this.mapFile = opts.from;\n }\n if (this.mapFile) this.root = dirname$1(this.mapFile);\n if (text) this.text = text;\n }\n consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new SourceMapConsumer$2(this.text);\n }\n return this.consumerCache;\n }\n decodeInline(text) {\n let baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/;\n let baseUri = /^data:application\\/json;base64,/;\n let charsetUri = /^data:application\\/json;charset=utf-?8,/;\n let uri = /^data:application\\/json,/;\n if (charsetUri.test(text) || uri.test(text)) {\n return decodeURIComponent(text.substr(RegExp.lastMatch.length));\n }\n if (baseCharsetUri.test(text) || baseUri.test(text)) {\n return fromBase64(text.substr(RegExp.lastMatch.length));\n }\n let encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n throw new Error(\"Unsupported source map encoding \" + encoding);\n }\n getAnnotationURL(sourceMapString) {\n return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n }\n isMap(map) {\n if (typeof map !== \"object\") return false;\n return typeof map.mappings === \"string\" || typeof map._mappings === \"string\" || Array.isArray(map.sections);\n }\n loadAnnotation(css) {\n let comments = css.match(/\\/\\*\\s*# sourceMappingURL=/gm);\n if (!comments) return;\n let start = css.lastIndexOf(comments.pop());\n let end = css.indexOf(\"*/\", start);\n if (start > -1 && end > -1) {\n this.annotation = this.getAnnotationURL(css.substring(start, end));\n }\n }\n loadFile(path) {\n this.root = dirname$1(path);\n if (existsSync(path)) {\n this.mapFile = path;\n return readFileSync(path, \"utf-8\").toString().trim();\n }\n }\n loadMap(file, prev) {\n if (prev === false) return false;\n if (prev) {\n if (typeof prev === \"string\") {\n return prev;\n } else if (typeof prev === \"function\") {\n let prevPath = prev(file);\n if (prevPath) {\n let map = this.loadFile(prevPath);\n if (!map) {\n throw new Error(\n \"Unable to load previous source map: \" + prevPath.toString()\n );\n }\n return map;\n }\n } else if (prev instanceof SourceMapConsumer$2) {\n return SourceMapGenerator$2.fromSourceMap(prev).toString();\n } else if (prev instanceof SourceMapGenerator$2) {\n return prev.toString();\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev);\n } else {\n throw new Error(\n \"Unsupported previous source map format: \" + prev.toString()\n );\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation);\n } else if (this.annotation) {\n let map = this.annotation;\n if (file) map = join(dirname$1(file), map);\n return this.loadFile(map);\n }\n }\n startWith(string, start) {\n if (!string) return false;\n return string.substr(0, start.length) === start;\n }\n withContent() {\n return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n }\n};\nvar previousMap = PreviousMap$2;\nPreviousMap$2.default = PreviousMap$2;\nlet { SourceMapConsumer: SourceMapConsumer$1, SourceMapGenerator: SourceMapGenerator$1 } = require$$2;\nlet { fileURLToPath, pathToFileURL: pathToFileURL$1 } = require$$2;\nlet { isAbsolute, resolve: resolve$1 } = require$$2;\nlet { nanoid } = nonSecure;\nlet terminalHighlight = require$$2;\nlet CssSyntaxError$1 = cssSyntaxError;\nlet PreviousMap$1 = previousMap;\nlet fromOffsetCache = Symbol(\"fromOffsetCache\");\nlet sourceMapAvailable$1 = Boolean(SourceMapConsumer$1 && SourceMapGenerator$1);\nlet pathAvailable$1 = Boolean(resolve$1 && isAbsolute);\nlet Input$4 = class Input2 {\n constructor(css, opts = {}) {\n if (css === null || typeof css === \"undefined\" || typeof css === \"object\" && !css.toString) {\n throw new Error(`PostCSS received ${css} instead of CSS string`);\n }\n this.css = css.toString();\n if (this.css[0] === \"\\uFEFF\" || this.css[0] === \"￾\") {\n this.hasBOM = true;\n this.css = this.css.slice(1);\n } else {\n this.hasBOM = false;\n }\n if (opts.from) {\n if (!pathAvailable$1 || /^\\w+:\\/\\//.test(opts.from) || isAbsolute(opts.from)) {\n this.file = opts.from;\n } else {\n this.file = resolve$1(opts.from);\n }\n }\n if (pathAvailable$1 && sourceMapAvailable$1) {\n let map = new PreviousMap$1(this.css, opts);\n if (map.text) {\n this.map = map;\n let file = map.consumer().file;\n if (!this.file && file) this.file = this.mapResolve(file);\n }\n }\n if (!this.file) {\n this.id = \"\";\n }\n if (this.map) this.map.file = this.from;\n }\n error(message, line, column, opts = {}) {\n let result2, endLine, endColumn;\n if (line && typeof line === \"object\") {\n let start = line;\n let end = column;\n if (typeof start.offset === \"number\") {\n let pos = this.fromOffset(start.offset);\n line = pos.line;\n column = pos.col;\n } else {\n line = start.line;\n column = start.column;\n }\n if (typeof end.offset === \"number\") {\n let pos = this.fromOffset(end.offset);\n endLine = pos.line;\n endColumn = pos.col;\n } else {\n endLine = end.line;\n endColumn = end.column;\n }\n } else if (!column) {\n let pos = this.fromOffset(line);\n line = pos.line;\n column = pos.col;\n }\n let origin = this.origin(line, column, endLine, endColumn);\n if (origin) {\n result2 = new CssSyntaxError$1(\n message,\n origin.endLine === void 0 ? origin.line : { column: origin.column, line: origin.line },\n origin.endLine === void 0 ? origin.column : { column: origin.endColumn, line: origin.endLine },\n origin.source,\n origin.file,\n opts.plugin\n );\n } else {\n result2 = new CssSyntaxError$1(\n message,\n endLine === void 0 ? line : { column, line },\n endLine === void 0 ? column : { column: endColumn, line: endLine },\n this.css,\n this.file,\n opts.plugin\n );\n }\n result2.input = { column, endColumn, endLine, line, source: this.css };\n if (this.file) {\n if (pathToFileURL$1) {\n result2.input.url = pathToFileURL$1(this.file).toString();\n }\n result2.input.file = this.file;\n }\n return result2;\n }\n fromOffset(offset) {\n let lastLine, lineToIndex;\n if (!this[fromOffsetCache]) {\n let lines = this.css.split(\"\\n\");\n lineToIndex = new Array(lines.length);\n let prevIndex = 0;\n for (let i2 = 0, l2 = lines.length; i2 < l2; i2++) {\n lineToIndex[i2] = prevIndex;\n prevIndex += lines[i2].length + 1;\n }\n this[fromOffsetCache] = lineToIndex;\n } else {\n lineToIndex = this[fromOffsetCache];\n }\n lastLine = lineToIndex[lineToIndex.length - 1];\n let min = 0;\n if (offset >= lastLine) {\n min = lineToIndex.length - 1;\n } else {\n let max = lineToIndex.length - 2;\n let mid;\n while (min < max) {\n mid = min + (max - min >> 1);\n if (offset < lineToIndex[mid]) {\n max = mid - 1;\n } else if (offset >= lineToIndex[mid + 1]) {\n min = mid + 1;\n } else {\n min = mid;\n break;\n }\n }\n }\n return {\n col: offset - lineToIndex[min] + 1,\n line: min + 1\n };\n }\n mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file;\n }\n return resolve$1(this.map.consumer().sourceRoot || this.map.root || \".\", file);\n }\n origin(line, column, endLine, endColumn) {\n if (!this.map) return false;\n let consumer = this.map.consumer();\n let from = consumer.originalPositionFor({ column, line });\n if (!from.source) return false;\n let to;\n if (typeof endLine === \"number\") {\n to = consumer.originalPositionFor({ column: endColumn, line: endLine });\n }\n let fromUrl;\n if (isAbsolute(from.source)) {\n fromUrl = pathToFileURL$1(from.source);\n } else {\n fromUrl = new URL(\n from.source,\n this.map.consumer().sourceRoot || pathToFileURL$1(this.map.mapFile)\n );\n }\n let result2 = {\n column: from.column,\n endColumn: to && to.column,\n endLine: to && to.line,\n line: from.line,\n url: fromUrl.toString()\n };\n if (fromUrl.protocol === \"file:\") {\n if (fileURLToPath) {\n result2.file = fileURLToPath(fromUrl);\n } else {\n throw new Error(`file: protocol is not available in this PostCSS build`);\n }\n }\n let source = consumer.sourceContentFor(from.source);\n if (source) result2.source = source;\n return result2;\n }\n toJSON() {\n let json = {};\n for (let name of [\"hasBOM\", \"css\", \"file\", \"id\"]) {\n if (this[name] != null) {\n json[name] = this[name];\n }\n }\n if (this.map) {\n json.map = { ...this.map };\n if (json.map.consumerCache) {\n json.map.consumerCache = void 0;\n }\n }\n return json;\n }\n get from() {\n return this.file || this.id;\n }\n};\nvar input = Input$4;\nInput$4.default = Input$4;\nif (terminalHighlight && terminalHighlight.registerInput) {\n terminalHighlight.registerInput(Input$4);\n}\nlet { SourceMapConsumer, SourceMapGenerator } = require$$2;\nlet { dirname, relative, resolve, sep } = require$$2;\nlet { pathToFileURL } = require$$2;\nlet Input$3 = input;\nlet sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator);\nlet pathAvailable = Boolean(dirname && resolve && relative && sep);\nlet MapGenerator$2 = class MapGenerator2 {\n constructor(stringify2, root2, opts, cssString) {\n this.stringify = stringify2;\n this.mapOpts = opts.map || {};\n this.root = root2;\n this.opts = opts;\n this.css = cssString;\n this.originalCSS = cssString;\n this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute;\n this.memoizedFileURLs = /* @__PURE__ */ new Map();\n this.memoizedPaths = /* @__PURE__ */ new Map();\n this.memoizedURLs = /* @__PURE__ */ new Map();\n }\n addAnnotation() {\n let content;\n if (this.isInline()) {\n content = \"data:application/json;base64,\" + this.toBase64(this.map.toString());\n } else if (typeof this.mapOpts.annotation === \"string\") {\n content = this.mapOpts.annotation;\n } else if (typeof this.mapOpts.annotation === \"function\") {\n content = this.mapOpts.annotation(this.opts.to, this.root);\n } else {\n content = this.outputFile() + \".map\";\n }\n let eol = \"\\n\";\n if (this.css.includes(\"\\r\\n\")) eol = \"\\r\\n\";\n this.css += eol + \"/*# sourceMappingURL=\" + content + \" */\";\n }\n applyPrevMaps() {\n for (let prev of this.previous()) {\n let from = this.toUrl(this.path(prev.file));\n let root2 = prev.root || dirname(prev.file);\n let map;\n if (this.mapOpts.sourcesContent === false) {\n map = new SourceMapConsumer(prev.text);\n if (map.sourcesContent) {\n map.sourcesContent = null;\n }\n } else {\n map = prev.consumer();\n }\n this.map.applySourceMap(map, from, this.toUrl(this.path(root2)));\n }\n }\n clearAnnotation() {\n if (this.mapOpts.annotation === false) return;\n if (this.root) {\n let node2;\n for (let i2 = this.root.nodes.length - 1; i2 >= 0; i2--) {\n node2 = this.root.nodes[i2];\n if (node2.type !== \"comment\") continue;\n if (node2.text.indexOf(\"# sourceMappingURL=\") === 0) {\n this.root.removeChild(i2);\n }\n }\n } else if (this.css) {\n this.css = this.css.replace(/\\n*?\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\");\n }\n }\n generate() {\n this.clearAnnotation();\n if (pathAvailable && sourceMapAvailable && this.isMap()) {\n return this.generateMap();\n } else {\n let result2 = \"\";\n this.stringify(this.root, (i2) => {\n result2 += i2;\n });\n return [result2];\n }\n }\n generateMap() {\n if (this.root) {\n this.generateString();\n } else if (this.previous().length === 1) {\n let prev = this.previous()[0].consumer();\n prev.file = this.outputFile();\n this.map = SourceMapGenerator.fromSourceMap(prev, {\n ignoreInvalidMapping: true\n });\n } else {\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n this.map.addMapping({\n generated: { column: 0, line: 1 },\n original: { column: 0, line: 1 },\n source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\"\n });\n }\n if (this.isSourcesContent()) this.setSourcesContent();\n if (this.root && this.previous().length > 0) this.applyPrevMaps();\n if (this.isAnnotation()) this.addAnnotation();\n if (this.isInline()) {\n return [this.css];\n } else {\n return [this.css, this.map];\n }\n }\n generateString() {\n this.css = \"\";\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n let line = 1;\n let column = 1;\n let noSource = \"\";\n let mapping = {\n generated: { column: 0, line: 0 },\n original: { column: 0, line: 0 },\n source: \"\"\n };\n let lines, last;\n this.stringify(this.root, (str, node2, type) => {\n this.css += str;\n if (node2 && type !== \"end\") {\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n if (node2.source && node2.source.start) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.start.line;\n mapping.original.column = node2.source.start.column - 1;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n this.map.addMapping(mapping);\n }\n }\n lines = str.match(/\\n/g);\n if (lines) {\n line += lines.length;\n last = str.lastIndexOf(\"\\n\");\n column = str.length - last;\n } else {\n column += str.length;\n }\n if (node2 && type !== \"start\") {\n let p = node2.parent || { raws: {} };\n let childless = node2.type === \"decl\" || node2.type === \"atrule\" && !node2.nodes;\n if (!childless || node2 !== p.last || p.raws.semicolon) {\n if (node2.source && node2.source.end) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.end.line;\n mapping.original.column = node2.source.end.column - 1;\n mapping.generated.line = line;\n mapping.generated.column = column - 2;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n this.map.addMapping(mapping);\n }\n }\n }\n });\n }\n isAnnotation() {\n if (this.isInline()) {\n return true;\n }\n if (typeof this.mapOpts.annotation !== \"undefined\") {\n return this.mapOpts.annotation;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.annotation);\n }\n return true;\n }\n isInline() {\n if (typeof this.mapOpts.inline !== \"undefined\") {\n return this.mapOpts.inline;\n }\n let annotation = this.mapOpts.annotation;\n if (typeof annotation !== \"undefined\" && annotation !== true) {\n return false;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.inline);\n }\n return true;\n }\n isMap() {\n if (typeof this.opts.map !== \"undefined\") {\n return !!this.opts.map;\n }\n return this.previous().length > 0;\n }\n isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== \"undefined\") {\n return this.mapOpts.sourcesContent;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.withContent());\n }\n return true;\n }\n outputFile() {\n if (this.opts.to) {\n return this.path(this.opts.to);\n } else if (this.opts.from) {\n return this.path(this.opts.from);\n } else {\n return \"to.css\";\n }\n }\n path(file) {\n if (this.mapOpts.absolute) return file;\n if (file.charCodeAt(0) === 60) return file;\n if (/^\\w+:\\/\\//.test(file)) return file;\n let cached = this.memoizedPaths.get(file);\n if (cached) return cached;\n let from = this.opts.to ? dirname(this.opts.to) : \".\";\n if (typeof this.mapOpts.annotation === \"string\") {\n from = dirname(resolve(from, this.mapOpts.annotation));\n }\n let path = relative(from, file);\n this.memoizedPaths.set(file, path);\n return path;\n }\n previous() {\n if (!this.previousMaps) {\n this.previousMaps = [];\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source && node2.source.input.map) {\n let map = node2.source.input.map;\n if (!this.previousMaps.includes(map)) {\n this.previousMaps.push(map);\n }\n }\n });\n } else {\n let input2 = new Input$3(this.originalCSS, this.opts);\n if (input2.map) this.previousMaps.push(input2.map);\n }\n }\n return this.previousMaps;\n }\n setSourcesContent() {\n let already = {};\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source) {\n let from = node2.source.input.from;\n if (from && !already[from]) {\n already[from] = true;\n let fromUrl = this.usesFileUrls ? this.toFileUrl(from) : this.toUrl(this.path(from));\n this.map.setSourceContent(fromUrl, node2.source.input.css);\n }\n }\n });\n } else if (this.css) {\n let from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\";\n this.map.setSourceContent(from, this.css);\n }\n }\n sourcePath(node2) {\n if (this.mapOpts.from) {\n return this.toUrl(this.mapOpts.from);\n } else if (this.usesFileUrls) {\n return this.toFileUrl(node2.source.input.from);\n } else {\n return this.toUrl(this.path(node2.source.input.from));\n }\n }\n toBase64(str) {\n if (Buffer) {\n return Buffer.from(str).toString(\"base64\");\n } else {\n return window.btoa(unescape(encodeURIComponent(str)));\n }\n }\n toFileUrl(path) {\n let cached = this.memoizedFileURLs.get(path);\n if (cached) return cached;\n if (pathToFileURL) {\n let fileURL = pathToFileURL(path).toString();\n this.memoizedFileURLs.set(path, fileURL);\n return fileURL;\n } else {\n throw new Error(\n \"`map.absolute` option is not available in this PostCSS build\"\n );\n }\n }\n toUrl(path) {\n let cached = this.memoizedURLs.get(path);\n if (cached) return cached;\n if (sep === \"\\\\\") {\n path = path.replace(/\\\\/g, \"/\");\n }\n let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent);\n this.memoizedURLs.set(path, url);\n return url;\n }\n};\nvar mapGenerator = MapGenerator$2;\nlet Node$2 = node;\nlet Comment$4 = class Comment2 extends Node$2 {\n constructor(defaults) {\n super(defaults);\n this.type = \"comment\";\n }\n};\nvar comment = Comment$4;\nComment$4.default = Comment$4;\nlet { isClean: isClean$1, my: my$1 } = symbols;\nlet Declaration$3 = declaration;\nlet Comment$3 = comment;\nlet Node$1 = node;\nlet parse$4, Rule$4, AtRule$4, Root$6;\nfunction cleanSource(nodes) {\n return nodes.map((i2) => {\n if (i2.nodes) i2.nodes = cleanSource(i2.nodes);\n delete i2.source;\n return i2;\n });\n}\nfunction markDirtyUp(node2) {\n node2[isClean$1] = false;\n if (node2.proxyOf.nodes) {\n for (let i2 of node2.proxyOf.nodes) {\n markDirtyUp(i2);\n }\n }\n}\nlet Container$7 = class Container2 extends Node$1 {\n append(...children) {\n for (let child of children) {\n let nodes = this.normalize(child, this.last);\n for (let node2 of nodes) this.proxyOf.nodes.push(node2);\n }\n this.markDirty();\n return this;\n }\n cleanRaws(keepBetween) {\n super.cleanRaws(keepBetween);\n if (this.nodes) {\n for (let node2 of this.nodes) node2.cleanRaws(keepBetween);\n }\n }\n each(callback) {\n if (!this.proxyOf.nodes) return void 0;\n let iterator = this.getIterator();\n let index2, result2;\n while (this.indexes[iterator] < this.proxyOf.nodes.length) {\n index2 = this.indexes[iterator];\n result2 = callback(this.proxyOf.nodes[index2], index2);\n if (result2 === false) break;\n this.indexes[iterator] += 1;\n }\n delete this.indexes[iterator];\n return result2;\n }\n every(condition) {\n return this.nodes.every(condition);\n }\n getIterator() {\n if (!this.lastEach) this.lastEach = 0;\n if (!this.indexes) this.indexes = {};\n this.lastEach += 1;\n let iterator = this.lastEach;\n this.indexes[iterator] = 0;\n return iterator;\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (!node2[prop]) {\n return node2[prop];\n } else if (prop === \"each\" || typeof prop === \"string\" && prop.startsWith(\"walk\")) {\n return (...args) => {\n return node2[prop](\n ...args.map((i2) => {\n if (typeof i2 === \"function\") {\n return (child, index2) => i2(child.toProxy(), index2);\n } else {\n return i2;\n }\n })\n );\n };\n } else if (prop === \"every\" || prop === \"some\") {\n return (cb) => {\n return node2[prop](\n (child, ...other) => cb(child.toProxy(), ...other)\n );\n };\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else if (prop === \"nodes\") {\n return node2.nodes.map((i2) => i2.toProxy());\n } else if (prop === \"first\" || prop === \"last\") {\n return node2[prop].toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"name\" || prop === \"params\" || prop === \"selector\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n index(child) {\n if (typeof child === \"number\") return child;\n if (child.proxyOf) child = child.proxyOf;\n return this.proxyOf.nodes.indexOf(child);\n }\n insertAfter(exist, add) {\n let existIndex = this.index(exist);\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex < index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n insertBefore(exist, add) {\n let existIndex = this.index(exist);\n let type = existIndex === 0 ? \"prepend\" : false;\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex <= index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n normalize(nodes, sample) {\n if (typeof nodes === \"string\") {\n nodes = cleanSource(parse$4(nodes).nodes);\n } else if (typeof nodes === \"undefined\") {\n nodes = [];\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type === \"root\" && this.type !== \"document\") {\n nodes = nodes.nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type) {\n nodes = [nodes];\n } else if (nodes.prop) {\n if (typeof nodes.value === \"undefined\") {\n throw new Error(\"Value field is missed in node creation\");\n } else if (typeof nodes.value !== \"string\") {\n nodes.value = String(nodes.value);\n }\n nodes = [new Declaration$3(nodes)];\n } else if (nodes.selector) {\n nodes = [new Rule$4(nodes)];\n } else if (nodes.name) {\n nodes = [new AtRule$4(nodes)];\n } else if (nodes.text) {\n nodes = [new Comment$3(nodes)];\n } else {\n throw new Error(\"Unknown node type in node creation\");\n }\n let processed = nodes.map((i2) => {\n if (!i2[my$1]) Container2.rebuild(i2);\n i2 = i2.proxyOf;\n if (i2.parent) i2.parent.removeChild(i2);\n if (i2[isClean$1]) markDirtyUp(i2);\n if (typeof i2.raws.before === \"undefined\") {\n if (sample && typeof sample.raws.before !== \"undefined\") {\n i2.raws.before = sample.raws.before.replace(/\\S/g, \"\");\n }\n }\n i2.parent = this.proxyOf;\n return i2;\n });\n return processed;\n }\n prepend(...children) {\n children = children.reverse();\n for (let child of children) {\n let nodes = this.normalize(child, this.first, \"prepend\").reverse();\n for (let node2 of nodes) this.proxyOf.nodes.unshift(node2);\n for (let id in this.indexes) {\n this.indexes[id] = this.indexes[id] + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n push(child) {\n child.parent = this;\n this.proxyOf.nodes.push(child);\n return this;\n }\n removeAll() {\n for (let node2 of this.proxyOf.nodes) node2.parent = void 0;\n this.proxyOf.nodes = [];\n this.markDirty();\n return this;\n }\n removeChild(child) {\n child = this.index(child);\n this.proxyOf.nodes[child].parent = void 0;\n this.proxyOf.nodes.splice(child, 1);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (index2 >= child) {\n this.indexes[id] = index2 - 1;\n }\n }\n this.markDirty();\n return this;\n }\n replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {};\n }\n this.walkDecls((decl) => {\n if (opts.props && !opts.props.includes(decl.prop)) return;\n if (opts.fast && !decl.value.includes(opts.fast)) return;\n decl.value = decl.value.replace(pattern, callback);\n });\n this.markDirty();\n return this;\n }\n some(condition) {\n return this.nodes.some(condition);\n }\n walk(callback) {\n return this.each((child, i2) => {\n let result2;\n try {\n result2 = callback(child, i2);\n } catch (e2) {\n throw child.addToError(e2);\n }\n if (result2 !== false && child.walk) {\n result2 = child.walk(callback);\n }\n return result2;\n });\n }\n walkAtRules(name, callback) {\n if (!callback) {\n callback = name;\n return this.walk((child, i2) => {\n if (child.type === \"atrule\") {\n return callback(child, i2);\n }\n });\n }\n if (name instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && name.test(child.name)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && child.name === name) {\n return callback(child, i2);\n }\n });\n }\n walkComments(callback) {\n return this.walk((child, i2) => {\n if (child.type === \"comment\") {\n return callback(child, i2);\n }\n });\n }\n walkDecls(prop, callback) {\n if (!callback) {\n callback = prop;\n return this.walk((child, i2) => {\n if (child.type === \"decl\") {\n return callback(child, i2);\n }\n });\n }\n if (prop instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && prop.test(child.prop)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && child.prop === prop) {\n return callback(child, i2);\n }\n });\n }\n walkRules(selector, callback) {\n if (!callback) {\n callback = selector;\n return this.walk((child, i2) => {\n if (child.type === \"rule\") {\n return callback(child, i2);\n }\n });\n }\n if (selector instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && selector.test(child.selector)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && child.selector === selector) {\n return callback(child, i2);\n }\n });\n }\n get first() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[0];\n }\n get last() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n }\n};\nContainer$7.registerParse = (dependant) => {\n parse$4 = dependant;\n};\nContainer$7.registerRule = (dependant) => {\n Rule$4 = dependant;\n};\nContainer$7.registerAtRule = (dependant) => {\n AtRule$4 = dependant;\n};\nContainer$7.registerRoot = (dependant) => {\n Root$6 = dependant;\n};\nvar container = Container$7;\nContainer$7.default = Container$7;\nContainer$7.rebuild = (node2) => {\n if (node2.type === \"atrule\") {\n Object.setPrototypeOf(node2, AtRule$4.prototype);\n } else if (node2.type === \"rule\") {\n Object.setPrototypeOf(node2, Rule$4.prototype);\n } else if (node2.type === \"decl\") {\n Object.setPrototypeOf(node2, Declaration$3.prototype);\n } else if (node2.type === \"comment\") {\n Object.setPrototypeOf(node2, Comment$3.prototype);\n } else if (node2.type === \"root\") {\n Object.setPrototypeOf(node2, Root$6.prototype);\n }\n node2[my$1] = true;\n if (node2.nodes) {\n node2.nodes.forEach((child) => {\n Container$7.rebuild(child);\n });\n }\n};\nlet Container$6 = container;\nlet LazyResult$4, Processor$3;\nlet Document$3 = class Document23 extends Container$6 {\n constructor(defaults) {\n super({ type: \"document\", ...defaults });\n if (!this.nodes) {\n this.nodes = [];\n }\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$4(new Processor$3(), this, opts);\n return lazy.stringify();\n }\n};\nDocument$3.registerLazyResult = (dependant) => {\n LazyResult$4 = dependant;\n};\nDocument$3.registerProcessor = (dependant) => {\n Processor$3 = dependant;\n};\nvar document$1 = Document$3;\nDocument$3.default = Document$3;\nlet printed = {};\nvar warnOnce$2 = function warnOnce2(message) {\n if (printed[message]) return;\n printed[message] = true;\n if (typeof console !== \"undefined\" && console.warn) {\n console.warn(message);\n }\n};\nlet Warning$2 = class Warning2 {\n constructor(text, opts = {}) {\n this.type = \"warning\";\n this.text = text;\n if (opts.node && opts.node.source) {\n let range = opts.node.rangeBy(opts);\n this.line = range.start.line;\n this.column = range.start.column;\n this.endLine = range.end.line;\n this.endColumn = range.end.column;\n }\n for (let opt in opts) this[opt] = opts[opt];\n }\n toString() {\n if (this.node) {\n return this.node.error(this.text, {\n index: this.index,\n plugin: this.plugin,\n word: this.word\n }).message;\n }\n if (this.plugin) {\n return this.plugin + \": \" + this.text;\n }\n return this.text;\n }\n};\nvar warning = Warning$2;\nWarning$2.default = Warning$2;\nlet Warning$1 = warning;\nlet Result$3 = class Result2 {\n constructor(processor2, root2, opts) {\n this.processor = processor2;\n this.messages = [];\n this.root = root2;\n this.opts = opts;\n this.css = void 0;\n this.map = void 0;\n }\n toString() {\n return this.css;\n }\n warn(text, opts = {}) {\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin;\n }\n }\n let warning2 = new Warning$1(text, opts);\n this.messages.push(warning2);\n return warning2;\n }\n warnings() {\n return this.messages.filter((i2) => i2.type === \"warning\");\n }\n get content() {\n return this.css;\n }\n};\nvar result = Result$3;\nResult$3.default = Result$3;\nconst SINGLE_QUOTE = \"'\".charCodeAt(0);\nconst DOUBLE_QUOTE = '\"'.charCodeAt(0);\nconst BACKSLASH = \"\\\\\".charCodeAt(0);\nconst SLASH = \"/\".charCodeAt(0);\nconst NEWLINE = \"\\n\".charCodeAt(0);\nconst SPACE = \" \".charCodeAt(0);\nconst FEED = \"\\f\".charCodeAt(0);\nconst TAB = \"\t\".charCodeAt(0);\nconst CR = \"\\r\".charCodeAt(0);\nconst OPEN_SQUARE = \"[\".charCodeAt(0);\nconst CLOSE_SQUARE = \"]\".charCodeAt(0);\nconst OPEN_PARENTHESES = \"(\".charCodeAt(0);\nconst CLOSE_PARENTHESES = \")\".charCodeAt(0);\nconst OPEN_CURLY = \"{\".charCodeAt(0);\nconst CLOSE_CURLY = \"}\".charCodeAt(0);\nconst SEMICOLON = \";\".charCodeAt(0);\nconst ASTERISK = \"*\".charCodeAt(0);\nconst COLON = \":\".charCodeAt(0);\nconst AT = \"@\".charCodeAt(0);\nconst RE_AT_END = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g;\nconst RE_WORD_END = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g;\nconst RE_BAD_BRACKET = /.[\\r\\n\"'(/\\\\]/;\nconst RE_HEX_ESCAPE = /[\\da-f]/i;\nvar tokenize = function tokenizer2(input2, options = {}) {\n let css = input2.css.valueOf();\n let ignore = options.ignoreErrors;\n let code, next, quote, content, escape;\n let escaped, escapePos, prev, n2, currentToken;\n let length = css.length;\n let pos = 0;\n let buffer = [];\n let returned = [];\n function position() {\n return pos;\n }\n function unclosed(what) {\n throw input2.error(\"Unclosed \" + what, pos);\n }\n function endOfFile() {\n return returned.length === 0 && pos >= length;\n }\n function nextToken(opts) {\n if (returned.length) return returned.pop();\n if (pos >= length) return;\n let ignoreUnclosed = opts ? opts.ignoreUnclosed : false;\n code = css.charCodeAt(pos);\n switch (code) {\n case NEWLINE:\n case SPACE:\n case TAB:\n case CR:\n case FEED: {\n next = pos;\n do {\n next += 1;\n code = css.charCodeAt(next);\n } while (code === SPACE || code === NEWLINE || code === TAB || code === CR || code === FEED);\n currentToken = [\"space\", css.slice(pos, next)];\n pos = next - 1;\n break;\n }\n case OPEN_SQUARE:\n case CLOSE_SQUARE:\n case OPEN_CURLY:\n case CLOSE_CURLY:\n case COLON:\n case SEMICOLON:\n case CLOSE_PARENTHESES: {\n let controlChar = String.fromCharCode(code);\n currentToken = [controlChar, controlChar, pos];\n break;\n }\n case OPEN_PARENTHESES: {\n prev = buffer.length ? buffer.pop()[1] : \"\";\n n2 = css.charCodeAt(pos + 1);\n if (prev === \"url\" && n2 !== SINGLE_QUOTE && n2 !== DOUBLE_QUOTE && n2 !== SPACE && n2 !== NEWLINE && n2 !== TAB && n2 !== FEED && n2 !== CR) {\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(\")\", next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos;\n break;\n } else {\n unclosed(\"bracket\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"brackets\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n next = css.indexOf(\")\", pos + 1);\n content = css.slice(pos, next + 1);\n if (next === -1 || RE_BAD_BRACKET.test(content)) {\n currentToken = [\"(\", \"(\", pos];\n } else {\n currentToken = [\"brackets\", content, pos, next];\n pos = next;\n }\n }\n break;\n }\n case SINGLE_QUOTE:\n case DOUBLE_QUOTE: {\n quote = code === SINGLE_QUOTE ? \"'\" : '\"';\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(quote, next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos + 1;\n break;\n } else {\n unclosed(\"string\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"string\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case AT: {\n RE_AT_END.lastIndex = pos + 1;\n RE_AT_END.test(css);\n if (RE_AT_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_AT_END.lastIndex - 2;\n }\n currentToken = [\"at-word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case BACKSLASH: {\n next = pos;\n escape = true;\n while (css.charCodeAt(next + 1) === BACKSLASH) {\n next += 1;\n escape = !escape;\n }\n code = css.charCodeAt(next + 1);\n if (escape && code !== SLASH && code !== SPACE && code !== NEWLINE && code !== TAB && code !== CR && code !== FEED) {\n next += 1;\n if (RE_HEX_ESCAPE.test(css.charAt(next))) {\n while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {\n next += 1;\n }\n if (css.charCodeAt(next + 1) === SPACE) {\n next += 1;\n }\n }\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n default: {\n if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {\n next = css.indexOf(\"*/\", pos + 2) + 1;\n if (next === 0) {\n if (ignore || ignoreUnclosed) {\n next = css.length;\n } else {\n unclosed(\"comment\");\n }\n }\n currentToken = [\"comment\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n RE_WORD_END.lastIndex = pos + 1;\n RE_WORD_END.test(css);\n if (RE_WORD_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_WORD_END.lastIndex - 2;\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n buffer.push(currentToken);\n pos = next;\n }\n break;\n }\n }\n pos++;\n return currentToken;\n }\n function back(token) {\n returned.push(token);\n }\n return {\n back,\n endOfFile,\n nextToken,\n position\n };\n};\nlet Container$5 = container;\nlet AtRule$3 = class AtRule2 extends Container$5 {\n constructor(defaults) {\n super(defaults);\n this.type = \"atrule\";\n }\n append(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.append(...children);\n }\n prepend(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.prepend(...children);\n }\n};\nvar atRule = AtRule$3;\nAtRule$3.default = AtRule$3;\nContainer$5.registerAtRule(AtRule$3);\nlet Container$4 = container;\nlet LazyResult$3, Processor$2;\nlet Root$5 = class Root2 extends Container$4 {\n constructor(defaults) {\n super(defaults);\n this.type = \"root\";\n if (!this.nodes) this.nodes = [];\n }\n normalize(child, sample, type) {\n let nodes = super.normalize(child);\n if (sample) {\n if (type === \"prepend\") {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before;\n } else {\n delete sample.raws.before;\n }\n } else if (this.first !== sample) {\n for (let node2 of nodes) {\n node2.raws.before = sample.raws.before;\n }\n }\n }\n return nodes;\n }\n removeChild(child, ignore) {\n let index2 = this.index(child);\n if (!ignore && index2 === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index2].raws.before;\n }\n return super.removeChild(child);\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$3(new Processor$2(), this, opts);\n return lazy.stringify();\n }\n};\nRoot$5.registerLazyResult = (dependant) => {\n LazyResult$3 = dependant;\n};\nRoot$5.registerProcessor = (dependant) => {\n Processor$2 = dependant;\n};\nvar root = Root$5;\nRoot$5.default = Root$5;\nContainer$4.registerRoot(Root$5);\nlet list$2 = {\n comma(string) {\n return list$2.split(string, [\",\"], true);\n },\n space(string) {\n let spaces = [\" \", \"\\n\", \"\t\"];\n return list$2.split(string, spaces);\n },\n split(string, separators, last) {\n let array = [];\n let current = \"\";\n let split = false;\n let func = 0;\n let inQuote = false;\n let prevQuote = \"\";\n let escape = false;\n for (let letter of string) {\n if (escape) {\n escape = false;\n } else if (letter === \"\\\\\") {\n escape = true;\n } else if (inQuote) {\n if (letter === prevQuote) {\n inQuote = false;\n }\n } else if (letter === '\"' || letter === \"'\") {\n inQuote = true;\n prevQuote = letter;\n } else if (letter === \"(\") {\n func += 1;\n } else if (letter === \")\") {\n if (func > 0) func -= 1;\n } else if (func === 0) {\n if (separators.includes(letter)) split = true;\n }\n if (split) {\n if (current !== \"\") array.push(current.trim());\n current = \"\";\n split = false;\n } else {\n current += letter;\n }\n }\n if (last || current !== \"\") array.push(current.trim());\n return array;\n }\n};\nvar list_1 = list$2;\nlist$2.default = list$2;\nlet Container$3 = container;\nlet list$1 = list_1;\nlet Rule$3 = class Rule2 extends Container$3 {\n constructor(defaults) {\n super(defaults);\n this.type = \"rule\";\n if (!this.nodes) this.nodes = [];\n }\n get selectors() {\n return list$1.comma(this.selector);\n }\n set selectors(values) {\n let match = this.selector ? this.selector.match(/,\\s*/) : null;\n let sep2 = match ? match[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n this.selector = values.join(sep2);\n }\n};\nvar rule = Rule$3;\nRule$3.default = Rule$3;\nContainer$3.registerRule(Rule$3);\nlet Declaration$2 = declaration;\nlet tokenizer22 = tokenize;\nlet Comment$2 = comment;\nlet AtRule$2 = atRule;\nlet Root$4 = root;\nlet Rule$2 = rule;\nconst SAFE_COMMENT_NEIGHBOR = {\n empty: true,\n space: true\n};\nfunction findLastWithPosition(tokens) {\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n let token = tokens[i2];\n let pos = token[3] || token[2];\n if (pos) return pos;\n }\n}\nlet Parser$1 = class Parser2 {\n constructor(input2) {\n this.input = input2;\n this.root = new Root$4();\n this.current = this.root;\n this.spaces = \"\";\n this.semicolon = false;\n this.createTokenizer();\n this.root.source = { input: input2, start: { column: 1, line: 1, offset: 0 } };\n }\n atrule(token) {\n let node2 = new AtRule$2();\n node2.name = token[1].slice(1);\n if (node2.name === \"\") {\n this.unnamedAtrule(node2, token);\n }\n this.init(node2, token[2]);\n let type;\n let prev;\n let shift;\n let last = false;\n let open = false;\n let params = [];\n let brackets = [];\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n type = token[0];\n if (type === \"(\" || type === \"[\") {\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (type === \"{\" && brackets.length > 0) {\n brackets.push(\"}\");\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n }\n if (brackets.length === 0) {\n if (type === \";\") {\n node2.source.end = this.getPosition(token[2]);\n node2.source.end.offset++;\n this.semicolon = true;\n break;\n } else if (type === \"{\") {\n open = true;\n break;\n } else if (type === \"}\") {\n if (params.length > 0) {\n shift = params.length - 1;\n prev = params[shift];\n while (prev && prev[0] === \"space\") {\n prev = params[--shift];\n }\n if (prev) {\n node2.source.end = this.getPosition(prev[3] || prev[2]);\n node2.source.end.offset++;\n }\n }\n this.end(token);\n break;\n } else {\n params.push(token);\n }\n } else {\n params.push(token);\n }\n if (this.tokenizer.endOfFile()) {\n last = true;\n break;\n }\n }\n node2.raws.between = this.spacesAndCommentsFromEnd(params);\n if (params.length) {\n node2.raws.afterName = this.spacesAndCommentsFromStart(params);\n this.raw(node2, \"params\", params);\n if (last) {\n token = params[params.length - 1];\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n this.spaces = node2.raws.between;\n node2.raws.between = \"\";\n }\n } else {\n node2.raws.afterName = \"\";\n node2.params = \"\";\n }\n if (open) {\n node2.nodes = [];\n this.current = node2;\n }\n }\n checkMissedSemicolon(tokens) {\n let colon = this.colon(tokens);\n if (colon === false) return;\n let founded = 0;\n let token;\n for (let j = colon - 1; j >= 0; j--) {\n token = tokens[j];\n if (token[0] !== \"space\") {\n founded += 1;\n if (founded === 2) break;\n }\n }\n throw this.input.error(\n \"Missed semicolon\",\n token[0] === \"word\" ? token[3] + 1 : token[2]\n );\n }\n colon(tokens) {\n let brackets = 0;\n let token, type, prev;\n for (let [i2, element] of tokens.entries()) {\n token = element;\n type = token[0];\n if (type === \"(\") {\n brackets += 1;\n }\n if (type === \")\") {\n brackets -= 1;\n }\n if (brackets === 0 && type === \":\") {\n if (!prev) {\n this.doubleColon(token);\n } else if (prev[0] === \"word\" && prev[1] === \"progid\") {\n continue;\n } else {\n return i2;\n }\n }\n prev = token;\n }\n return false;\n }\n comment(token) {\n let node2 = new Comment$2();\n this.init(node2, token[2]);\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n let text = token[1].slice(2, -2);\n if (/^\\s*$/.test(text)) {\n node2.text = \"\";\n node2.raws.left = text;\n node2.raws.right = \"\";\n } else {\n let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n node2.text = match[2];\n node2.raws.left = match[1];\n node2.raws.right = match[3];\n }\n }\n createTokenizer() {\n this.tokenizer = tokenizer22(this.input);\n }\n decl(tokens, customProperty) {\n let node2 = new Declaration$2();\n this.init(node2, tokens[0][2]);\n let last = tokens[tokens.length - 1];\n if (last[0] === \";\") {\n this.semicolon = true;\n tokens.pop();\n }\n node2.source.end = this.getPosition(\n last[3] || last[2] || findLastWithPosition(tokens)\n );\n node2.source.end.offset++;\n while (tokens[0][0] !== \"word\") {\n if (tokens.length === 1) this.unknownWord(tokens);\n node2.raws.before += tokens.shift()[1];\n }\n node2.source.start = this.getPosition(tokens[0][2]);\n node2.prop = \"\";\n while (tokens.length) {\n let type = tokens[0][0];\n if (type === \":\" || type === \"space\" || type === \"comment\") {\n break;\n }\n node2.prop += tokens.shift()[1];\n }\n node2.raws.between = \"\";\n let token;\n while (tokens.length) {\n token = tokens.shift();\n if (token[0] === \":\") {\n node2.raws.between += token[1];\n break;\n } else {\n if (token[0] === \"word\" && /\\w/.test(token[1])) {\n this.unknownWord([token]);\n }\n node2.raws.between += token[1];\n }\n }\n if (node2.prop[0] === \"_\" || node2.prop[0] === \"*\") {\n node2.raws.before += node2.prop[0];\n node2.prop = node2.prop.slice(1);\n }\n let firstSpaces = [];\n let next;\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n firstSpaces.push(tokens.shift());\n }\n this.precheckMissedSemicolon(tokens);\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n token = tokens[i2];\n if (token[1].toLowerCase() === \"!important\") {\n node2.important = true;\n let string = this.stringFrom(tokens, i2);\n string = this.spacesFromEnd(tokens) + string;\n if (string !== \" !important\") node2.raws.important = string;\n break;\n } else if (token[1].toLowerCase() === \"important\") {\n let cache = tokens.slice(0);\n let str = \"\";\n for (let j = i2; j > 0; j--) {\n let type = cache[j][0];\n if (str.trim().indexOf(\"!\") === 0 && type !== \"space\") {\n break;\n }\n str = cache.pop()[1] + str;\n }\n if (str.trim().indexOf(\"!\") === 0) {\n node2.important = true;\n node2.raws.important = str;\n tokens = cache;\n }\n }\n if (token[0] !== \"space\" && token[0] !== \"comment\") {\n break;\n }\n }\n let hasWord = tokens.some((i2) => i2[0] !== \"space\" && i2[0] !== \"comment\");\n if (hasWord) {\n node2.raws.between += firstSpaces.map((i2) => i2[1]).join(\"\");\n firstSpaces = [];\n }\n this.raw(node2, \"value\", firstSpaces.concat(tokens), customProperty);\n if (node2.value.includes(\":\") && !customProperty) {\n this.checkMissedSemicolon(tokens);\n }\n }\n doubleColon(token) {\n throw this.input.error(\n \"Double colon\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n emptyRule(token) {\n let node2 = new Rule$2();\n this.init(node2, token[2]);\n node2.selector = \"\";\n node2.raws.between = \"\";\n this.current = node2;\n }\n end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.semicolon = false;\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.spaces = \"\";\n if (this.current.parent) {\n this.current.source.end = this.getPosition(token[2]);\n this.current.source.end.offset++;\n this.current = this.current.parent;\n } else {\n this.unexpectedClose(token);\n }\n }\n endFile() {\n if (this.current.parent) this.unclosedBlock();\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.root.source.end = this.getPosition(this.tokenizer.position());\n }\n freeSemicolon(token) {\n this.spaces += token[1];\n if (this.current.nodes) {\n let prev = this.current.nodes[this.current.nodes.length - 1];\n if (prev && prev.type === \"rule\" && !prev.raws.ownSemicolon) {\n prev.raws.ownSemicolon = this.spaces;\n this.spaces = \"\";\n }\n }\n }\n // Helpers\n getPosition(offset) {\n let pos = this.input.fromOffset(offset);\n return {\n column: pos.col,\n line: pos.line,\n offset\n };\n }\n init(node2, offset) {\n this.current.push(node2);\n node2.source = {\n input: this.input,\n start: this.getPosition(offset)\n };\n node2.raws.before = this.spaces;\n this.spaces = \"\";\n if (node2.type !== \"comment\") this.semicolon = false;\n }\n other(start) {\n let end = false;\n let type = null;\n let colon = false;\n let bracket = null;\n let brackets = [];\n let customProperty = start[1].startsWith(\"--\");\n let tokens = [];\n let token = start;\n while (token) {\n type = token[0];\n tokens.push(token);\n if (type === \"(\" || type === \"[\") {\n if (!bracket) bracket = token;\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (customProperty && colon && type === \"{\") {\n if (!bracket) bracket = token;\n brackets.push(\"}\");\n } else if (brackets.length === 0) {\n if (type === \";\") {\n if (colon) {\n this.decl(tokens, customProperty);\n return;\n } else {\n break;\n }\n } else if (type === \"{\") {\n this.rule(tokens);\n return;\n } else if (type === \"}\") {\n this.tokenizer.back(tokens.pop());\n end = true;\n break;\n } else if (type === \":\") {\n colon = true;\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n if (brackets.length === 0) bracket = null;\n }\n token = this.tokenizer.nextToken();\n }\n if (this.tokenizer.endOfFile()) end = true;\n if (brackets.length > 0) this.unclosedBracket(bracket);\n if (end && colon) {\n if (!customProperty) {\n while (tokens.length) {\n token = tokens[tokens.length - 1][0];\n if (token !== \"space\" && token !== \"comment\") break;\n this.tokenizer.back(tokens.pop());\n }\n }\n this.decl(tokens, customProperty);\n } else {\n this.unknownWord(tokens);\n }\n }\n parse() {\n let token;\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n switch (token[0]) {\n case \"space\":\n this.spaces += token[1];\n break;\n case \";\":\n this.freeSemicolon(token);\n break;\n case \"}\":\n this.end(token);\n break;\n case \"comment\":\n this.comment(token);\n break;\n case \"at-word\":\n this.atrule(token);\n break;\n case \"{\":\n this.emptyRule(token);\n break;\n default:\n this.other(token);\n break;\n }\n }\n this.endFile();\n }\n precheckMissedSemicolon() {\n }\n raw(node2, prop, tokens, customProperty) {\n let token, type;\n let length = tokens.length;\n let value = \"\";\n let clean = true;\n let next, prev;\n for (let i2 = 0; i2 < length; i2 += 1) {\n token = tokens[i2];\n type = token[0];\n if (type === \"space\" && i2 === length - 1 && !customProperty) {\n clean = false;\n } else if (type === \"comment\") {\n prev = tokens[i2 - 1] ? tokens[i2 - 1][0] : \"empty\";\n next = tokens[i2 + 1] ? tokens[i2 + 1][0] : \"empty\";\n if (!SAFE_COMMENT_NEIGHBOR[prev] && !SAFE_COMMENT_NEIGHBOR[next]) {\n if (value.slice(-1) === \",\") {\n clean = false;\n } else {\n value += token[1];\n }\n } else {\n clean = false;\n }\n } else {\n value += token[1];\n }\n }\n if (!clean) {\n let raw = tokens.reduce((all, i2) => all + i2[1], \"\");\n node2.raws[prop] = { raw, value };\n }\n node2[prop] = value;\n }\n rule(tokens) {\n tokens.pop();\n let node2 = new Rule$2();\n this.init(node2, tokens[0][2]);\n node2.raws.between = this.spacesAndCommentsFromEnd(tokens);\n this.raw(node2, \"selector\", tokens);\n this.current = node2;\n }\n spacesAndCommentsFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\" && lastTokenType !== \"comment\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n // Errors\n spacesAndCommentsFromStart(tokens) {\n let next;\n let spaces = \"\";\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n spaces += tokens.shift()[1];\n }\n return spaces;\n }\n spacesFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n stringFrom(tokens, from) {\n let result2 = \"\";\n for (let i2 = from; i2 < tokens.length; i2++) {\n result2 += tokens[i2][1];\n }\n tokens.splice(from, tokens.length - from);\n return result2;\n }\n unclosedBlock() {\n let pos = this.current.source.start;\n throw this.input.error(\"Unclosed block\", pos.line, pos.column);\n }\n unclosedBracket(bracket) {\n throw this.input.error(\n \"Unclosed bracket\",\n { offset: bracket[2] },\n { offset: bracket[2] + 1 }\n );\n }\n unexpectedClose(token) {\n throw this.input.error(\n \"Unexpected }\",\n { offset: token[2] },\n { offset: token[2] + 1 }\n );\n }\n unknownWord(tokens) {\n throw this.input.error(\n \"Unknown word\",\n { offset: tokens[0][2] },\n { offset: tokens[0][2] + tokens[0][1].length }\n );\n }\n unnamedAtrule(node2, token) {\n throw this.input.error(\n \"At-rule without name\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n};\nvar parser = Parser$1;\nlet Container$2 = container;\nlet Parser22 = parser;\nlet Input$2 = input;\nfunction parse$3(css, opts) {\n let input2 = new Input$2(css, opts);\n let parser2 = new Parser22(input2);\n try {\n parser2.parse();\n } catch (e2) {\n if (process.env.NODE_ENV !== \"production\") {\n if (e2.name === \"CssSyntaxError\" && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser\";\n } else if (/\\.sass/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser\";\n } else if (/\\.less$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser\";\n }\n }\n }\n throw e2;\n }\n return parser2.root;\n}\nvar parse_1 = parse$3;\nparse$3.default = parse$3;\nContainer$2.registerParse(parse$3);\nlet { isClean, my } = symbols;\nlet MapGenerator$1 = mapGenerator;\nlet stringify$2 = stringify_1;\nlet Container$1 = container;\nlet Document$2 = document$1;\nlet warnOnce$1 = warnOnce$2;\nlet Result$2 = result;\nlet parse$2 = parse_1;\nlet Root$3 = root;\nconst TYPE_TO_CLASS_NAME = {\n atrule: \"AtRule\",\n comment: \"Comment\",\n decl: \"Declaration\",\n document: \"Document\",\n root: \"Root\",\n rule: \"Rule\"\n};\nconst PLUGIN_PROPS = {\n AtRule: true,\n AtRuleExit: true,\n Comment: true,\n CommentExit: true,\n Declaration: true,\n DeclarationExit: true,\n Document: true,\n DocumentExit: true,\n Once: true,\n OnceExit: true,\n postcssPlugin: true,\n prepare: true,\n Root: true,\n RootExit: true,\n Rule: true,\n RuleExit: true\n};\nconst NOT_VISITORS = {\n Once: true,\n postcssPlugin: true,\n prepare: true\n};\nconst CHILDREN = 0;\nfunction isPromise(obj) {\n return typeof obj === \"object\" && typeof obj.then === \"function\";\n}\nfunction getEvents(node2) {\n let key = false;\n let type = TYPE_TO_CLASS_NAME[node2.type];\n if (node2.type === \"decl\") {\n key = node2.prop.toLowerCase();\n } else if (node2.type === \"atrule\") {\n key = node2.name.toLowerCase();\n }\n if (key && node2.append) {\n return [\n type,\n type + \"-\" + key,\n CHILDREN,\n type + \"Exit\",\n type + \"Exit-\" + key\n ];\n } else if (key) {\n return [type, type + \"-\" + key, type + \"Exit\", type + \"Exit-\" + key];\n } else if (node2.append) {\n return [type, CHILDREN, type + \"Exit\"];\n } else {\n return [type, type + \"Exit\"];\n }\n}\nfunction toStack(node2) {\n let events;\n if (node2.type === \"document\") {\n events = [\"Document\", CHILDREN, \"DocumentExit\"];\n } else if (node2.type === \"root\") {\n events = [\"Root\", CHILDREN, \"RootExit\"];\n } else {\n events = getEvents(node2);\n }\n return {\n eventIndex: 0,\n events,\n iterator: 0,\n node: node2,\n visitorIndex: 0,\n visitors: []\n };\n}\nfunction cleanMarks(node2) {\n node2[isClean] = false;\n if (node2.nodes) node2.nodes.forEach((i2) => cleanMarks(i2));\n return node2;\n}\nlet postcss$2 = {};\nlet LazyResult$2 = class LazyResult2 {\n constructor(processor2, css, opts) {\n this.stringified = false;\n this.processed = false;\n let root2;\n if (typeof css === \"object\" && css !== null && (css.type === \"root\" || css.type === \"document\")) {\n root2 = cleanMarks(css);\n } else if (css instanceof LazyResult2 || css instanceof Result$2) {\n root2 = cleanMarks(css.root);\n if (css.map) {\n if (typeof opts.map === \"undefined\") opts.map = {};\n if (!opts.map.inline) opts.map.inline = false;\n opts.map.prev = css.map;\n }\n } else {\n let parser2 = parse$2;\n if (opts.syntax) parser2 = opts.syntax.parse;\n if (opts.parser) parser2 = opts.parser;\n if (parser2.parse) parser2 = parser2.parse;\n try {\n root2 = parser2(css, opts);\n } catch (error) {\n this.processed = true;\n this.error = error;\n }\n if (root2 && !root2[my]) {\n Container$1.rebuild(root2);\n }\n }\n this.result = new Result$2(processor2, root2, opts);\n this.helpers = { ...postcss$2, postcss: postcss$2, result: this.result };\n this.plugins = this.processor.plugins.map((plugin22) => {\n if (typeof plugin22 === \"object\" && plugin22.prepare) {\n return { ...plugin22, ...plugin22.prepare(this.result) };\n } else {\n return plugin22;\n }\n });\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n if (this.processed) return Promise.resolve(this.result);\n if (!this.processing) {\n this.processing = this.runAsync();\n }\n return this.processing;\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n getAsyncError() {\n throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n }\n handleError(error, node2) {\n let plugin22 = this.result.lastPlugin;\n try {\n if (node2) node2.addToError(error);\n this.error = error;\n if (error.name === \"CssSyntaxError\" && !error.plugin) {\n error.plugin = plugin22.postcssPlugin;\n error.setMessage();\n } else if (plugin22.postcssVersion) {\n if (process.env.NODE_ENV !== \"production\") {\n let pluginName = plugin22.postcssPlugin;\n let pluginVer = plugin22.postcssVersion;\n let runtimeVer = this.result.processor.version;\n let a2 = pluginVer.split(\".\");\n let b = runtimeVer.split(\".\");\n if (a2[0] !== b[0] || parseInt(a2[1]) > parseInt(b[1])) {\n console.error(\n \"Unknown error from PostCSS plugin. Your current PostCSS version is \" + runtimeVer + \", but \" + pluginName + \" uses \" + pluginVer + \". Perhaps this is the source of the error below.\"\n );\n }\n }\n }\n } catch (err) {\n if (console && console.error) console.error(err);\n }\n return error;\n }\n prepareVisitors() {\n this.listeners = {};\n let add = (plugin22, type, cb) => {\n if (!this.listeners[type]) this.listeners[type] = [];\n this.listeners[type].push([plugin22, cb]);\n };\n for (let plugin22 of this.plugins) {\n if (typeof plugin22 === \"object\") {\n for (let event in plugin22) {\n if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) {\n throw new Error(\n `Unknown event ${event} in ${plugin22.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`\n );\n }\n if (!NOT_VISITORS[event]) {\n if (typeof plugin22[event] === \"object\") {\n for (let filter in plugin22[event]) {\n if (filter === \"*\") {\n add(plugin22, event, plugin22[event][filter]);\n } else {\n add(\n plugin22,\n event + \"-\" + filter.toLowerCase(),\n plugin22[event][filter]\n );\n }\n }\n } else if (typeof plugin22[event] === \"function\") {\n add(plugin22, event, plugin22[event]);\n }\n }\n }\n }\n }\n this.hasListener = Object.keys(this.listeners).length > 0;\n }\n async runAsync() {\n this.plugin = 0;\n for (let i2 = 0; i2 < this.plugins.length; i2++) {\n let plugin22 = this.plugins[i2];\n let promise = this.runOnRoot(plugin22);\n if (isPromise(promise)) {\n try {\n await promise;\n } catch (error) {\n throw this.handleError(error);\n }\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean]) {\n root2[isClean] = true;\n let stack = [toStack(root2)];\n while (stack.length > 0) {\n let promise = this.visitTick(stack);\n if (isPromise(promise)) {\n try {\n await promise;\n } catch (e2) {\n let node2 = stack[stack.length - 1].node;\n throw this.handleError(e2, node2);\n }\n }\n }\n }\n if (this.listeners.OnceExit) {\n for (let [plugin22, visitor] of this.listeners.OnceExit) {\n this.result.lastPlugin = plugin22;\n try {\n if (root2.type === \"document\") {\n let roots = root2.nodes.map(\n (subRoot) => visitor(subRoot, this.helpers)\n );\n await Promise.all(roots);\n } else {\n await visitor(root2, this.helpers);\n }\n } catch (e2) {\n throw this.handleError(e2);\n }\n }\n }\n }\n this.processed = true;\n return this.stringify();\n }\n runOnRoot(plugin22) {\n this.result.lastPlugin = plugin22;\n try {\n if (typeof plugin22 === \"object\" && plugin22.Once) {\n if (this.result.root.type === \"document\") {\n let roots = this.result.root.nodes.map(\n (root2) => plugin22.Once(root2, this.helpers)\n );\n if (isPromise(roots[0])) {\n return Promise.all(roots);\n }\n return roots;\n }\n return plugin22.Once(this.result.root, this.helpers);\n } else if (typeof plugin22 === \"function\") {\n return plugin22(this.result.root, this.result);\n }\n } catch (error) {\n throw this.handleError(error);\n }\n }\n stringify() {\n if (this.error) throw this.error;\n if (this.stringified) return this.result;\n this.stringified = true;\n this.sync();\n let opts = this.result.opts;\n let str = stringify$2;\n if (opts.syntax) str = opts.syntax.stringify;\n if (opts.stringifier) str = opts.stringifier;\n if (str.stringify) str = str.stringify;\n let map = new MapGenerator$1(str, this.result.root, this.result.opts);\n let data = map.generate();\n this.result.css = data[0];\n this.result.map = data[1];\n return this.result;\n }\n sync() {\n if (this.error) throw this.error;\n if (this.processed) return this.result;\n this.processed = true;\n if (this.processing) {\n throw this.getAsyncError();\n }\n for (let plugin22 of this.plugins) {\n let promise = this.runOnRoot(plugin22);\n if (isPromise(promise)) {\n throw this.getAsyncError();\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean]) {\n root2[isClean] = true;\n this.walkSync(root2);\n }\n if (this.listeners.OnceExit) {\n if (root2.type === \"document\") {\n for (let subRoot of root2.nodes) {\n this.visitSync(this.listeners.OnceExit, subRoot);\n }\n } else {\n this.visitSync(this.listeners.OnceExit, root2);\n }\n }\n }\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this.opts)) {\n warnOnce$1(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this.css;\n }\n visitSync(visitors, node2) {\n for (let [plugin22, visitor] of visitors) {\n this.result.lastPlugin = plugin22;\n let promise;\n try {\n promise = visitor(node2, this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2.proxyOf);\n }\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n return true;\n }\n if (isPromise(promise)) {\n throw this.getAsyncError();\n }\n }\n }\n visitTick(stack) {\n let visit2 = stack[stack.length - 1];\n let { node: node2, visitors } = visit2;\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n stack.pop();\n return;\n }\n if (visitors.length > 0 && visit2.visitorIndex < visitors.length) {\n let [plugin22, visitor] = visitors[visit2.visitorIndex];\n visit2.visitorIndex += 1;\n if (visit2.visitorIndex === visitors.length) {\n visit2.visitors = [];\n visit2.visitorIndex = 0;\n }\n this.result.lastPlugin = plugin22;\n try {\n return visitor(node2.toProxy(), this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2);\n }\n }\n if (visit2.iterator !== 0) {\n let iterator = visit2.iterator;\n let child;\n while (child = node2.nodes[node2.indexes[iterator]]) {\n node2.indexes[iterator] += 1;\n if (!child[isClean]) {\n child[isClean] = true;\n stack.push(toStack(child));\n return;\n }\n }\n visit2.iterator = 0;\n delete node2.indexes[iterator];\n }\n let events = visit2.events;\n while (visit2.eventIndex < events.length) {\n let event = events[visit2.eventIndex];\n visit2.eventIndex += 1;\n if (event === CHILDREN) {\n if (node2.nodes && node2.nodes.length) {\n node2[isClean] = true;\n visit2.iterator = node2.getIterator();\n }\n return;\n } else if (this.listeners[event]) {\n visit2.visitors = this.listeners[event];\n return;\n }\n }\n stack.pop();\n }\n walkSync(node2) {\n node2[isClean] = true;\n let events = getEvents(node2);\n for (let event of events) {\n if (event === CHILDREN) {\n if (node2.nodes) {\n node2.each((child) => {\n if (!child[isClean]) this.walkSync(child);\n });\n }\n } else {\n let visitors = this.listeners[event];\n if (visitors) {\n if (this.visitSync(visitors, node2.toProxy())) return;\n }\n }\n }\n }\n warnings() {\n return this.sync().warnings();\n }\n get content() {\n return this.stringify().content;\n }\n get css() {\n return this.stringify().css;\n }\n get map() {\n return this.stringify().map;\n }\n get messages() {\n return this.sync().messages;\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n return this.sync().root;\n }\n get [Symbol.toStringTag]() {\n return \"LazyResult\";\n }\n};\nLazyResult$2.registerPostcss = (dependant) => {\n postcss$2 = dependant;\n};\nvar lazyResult = LazyResult$2;\nLazyResult$2.default = LazyResult$2;\nRoot$3.registerLazyResult(LazyResult$2);\nDocument$2.registerLazyResult(LazyResult$2);\nlet MapGenerator22 = mapGenerator;\nlet stringify$1 = stringify_1;\nlet warnOnce22 = warnOnce$2;\nlet parse$1 = parse_1;\nconst Result$1 = result;\nlet NoWorkResult$1 = class NoWorkResult2 {\n constructor(processor2, css, opts) {\n css = css.toString();\n this.stringified = false;\n this._processor = processor2;\n this._css = css;\n this._opts = opts;\n this._map = void 0;\n let root2;\n let str = stringify$1;\n this.result = new Result$1(this._processor, root2, this._opts);\n this.result.css = css;\n let self = this;\n Object.defineProperty(this.result, \"root\", {\n get() {\n return self.root;\n }\n });\n let map = new MapGenerator22(str, root2, this._opts, css);\n if (map.isMap()) {\n let [generatedCSS, generatedMap] = map.generate();\n if (generatedCSS) {\n this.result.css = generatedCSS;\n }\n if (generatedMap) {\n this.result.map = generatedMap;\n }\n } else {\n map.clearAnnotation();\n this.result.css = map.css;\n }\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n return Promise.resolve(this.result);\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n sync() {\n if (this.error) throw this.error;\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this._opts)) {\n warnOnce22(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this._css;\n }\n warnings() {\n return [];\n }\n get content() {\n return this.result.css;\n }\n get css() {\n return this.result.css;\n }\n get map() {\n return this.result.map;\n }\n get messages() {\n return [];\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n if (this._root) {\n return this._root;\n }\n let root2;\n let parser2 = parse$1;\n try {\n root2 = parser2(this._css, this._opts);\n } catch (error) {\n this.error = error;\n }\n if (this.error) {\n throw this.error;\n } else {\n this._root = root2;\n return root2;\n }\n }\n get [Symbol.toStringTag]() {\n return \"NoWorkResult\";\n }\n};\nvar noWorkResult = NoWorkResult$1;\nNoWorkResult$1.default = NoWorkResult$1;\nlet NoWorkResult22 = noWorkResult;\nlet LazyResult$1 = lazyResult;\nlet Document$1 = document$1;\nlet Root$2 = root;\nlet Processor$1 = class Processor2 {\n constructor(plugins = []) {\n this.version = \"8.4.38\";\n this.plugins = this.normalize(plugins);\n }\n normalize(plugins) {\n let normalized = [];\n for (let i2 of plugins) {\n if (i2.postcss === true) {\n i2 = i2();\n } else if (i2.postcss) {\n i2 = i2.postcss;\n }\n if (typeof i2 === \"object\" && Array.isArray(i2.plugins)) {\n normalized = normalized.concat(i2.plugins);\n } else if (typeof i2 === \"object\" && i2.postcssPlugin) {\n normalized.push(i2);\n } else if (typeof i2 === \"function\") {\n normalized.push(i2);\n } else if (typeof i2 === \"object\" && (i2.parse || i2.stringify)) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error(\n \"PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.\"\n );\n }\n } else {\n throw new Error(i2 + \" is not a PostCSS plugin\");\n }\n }\n return normalized;\n }\n process(css, opts = {}) {\n if (!this.plugins.length && !opts.parser && !opts.stringifier && !opts.syntax) {\n return new NoWorkResult22(this, css, opts);\n } else {\n return new LazyResult$1(this, css, opts);\n }\n }\n use(plugin22) {\n this.plugins = this.plugins.concat(this.normalize([plugin22]));\n return this;\n }\n};\nvar processor = Processor$1;\nProcessor$1.default = Processor$1;\nRoot$2.registerProcessor(Processor$1);\nDocument$1.registerProcessor(Processor$1);\nlet Declaration$1 = declaration;\nlet PreviousMap22 = previousMap;\nlet Comment$1 = comment;\nlet AtRule$1 = atRule;\nlet Input$1 = input;\nlet Root$1 = root;\nlet Rule$1 = rule;\nfunction fromJSON$1(json, inputs) {\n if (Array.isArray(json)) return json.map((n2) => fromJSON$1(n2));\n let { inputs: ownInputs, ...defaults } = json;\n if (ownInputs) {\n inputs = [];\n for (let input2 of ownInputs) {\n let inputHydrated = { ...input2, __proto__: Input$1.prototype };\n if (inputHydrated.map) {\n inputHydrated.map = {\n ...inputHydrated.map,\n __proto__: PreviousMap22.prototype\n };\n }\n inputs.push(inputHydrated);\n }\n }\n if (defaults.nodes) {\n defaults.nodes = json.nodes.map((n2) => fromJSON$1(n2, inputs));\n }\n if (defaults.source) {\n let { inputId, ...source } = defaults.source;\n defaults.source = source;\n if (inputId != null) {\n defaults.source.input = inputs[inputId];\n }\n }\n if (defaults.type === \"root\") {\n return new Root$1(defaults);\n } else if (defaults.type === \"decl\") {\n return new Declaration$1(defaults);\n } else if (defaults.type === \"rule\") {\n return new Rule$1(defaults);\n } else if (defaults.type === \"comment\") {\n return new Comment$1(defaults);\n } else if (defaults.type === \"atrule\") {\n return new AtRule$1(defaults);\n } else {\n throw new Error(\"Unknown node type: \" + json.type);\n }\n}\nvar fromJSON_1 = fromJSON$1;\nfromJSON$1.default = fromJSON$1;\nlet CssSyntaxError22 = cssSyntaxError;\nlet Declaration22 = declaration;\nlet LazyResult22 = lazyResult;\nlet Container22 = container;\nlet Processor22 = processor;\nlet stringify = stringify_1;\nlet fromJSON = fromJSON_1;\nlet Document222 = document$1;\nlet Warning22 = warning;\nlet Comment22 = comment;\nlet AtRule22 = atRule;\nlet Result22 = result;\nlet Input22 = input;\nlet parse = parse_1;\nlet list = list_1;\nlet Rule22 = rule;\nlet Root22 = root;\nlet Node22 = node;\nfunction postcss(...plugins) {\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0];\n }\n return new Processor22(plugins);\n}\npostcss.plugin = function plugin2(name, initializer) {\n let warningPrinted = false;\n function creator(...args) {\n if (console && console.warn && !warningPrinted) {\n warningPrinted = true;\n console.warn(\n name + \": postcss.plugin was deprecated. Migration guide:\\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration\"\n );\n if (process.env.LANG && process.env.LANG.startsWith(\"cn\")) {\n console.warn(\n name + \": 里面 postcss.plugin 被弃用. 迁移指南:\\nhttps://www.w3ctech.com/topic/2226\"\n );\n }\n }\n let transformer = initializer(...args);\n transformer.postcssPlugin = name;\n transformer.postcssVersion = new Processor22().version;\n return transformer;\n }\n let cache;\n Object.defineProperty(creator, \"postcss\", {\n get() {\n if (!cache) cache = creator();\n return cache;\n }\n });\n creator.process = function(css, processOpts, pluginOpts) {\n return postcss([creator(pluginOpts)]).process(css, processOpts);\n };\n return creator;\n};\npostcss.stringify = stringify;\npostcss.parse = parse;\npostcss.fromJSON = fromJSON;\npostcss.list = list;\npostcss.comment = (defaults) => new Comment22(defaults);\npostcss.atRule = (defaults) => new AtRule22(defaults);\npostcss.decl = (defaults) => new Declaration22(defaults);\npostcss.rule = (defaults) => new Rule22(defaults);\npostcss.root = (defaults) => new Root22(defaults);\npostcss.document = (defaults) => new Document222(defaults);\npostcss.CssSyntaxError = CssSyntaxError22;\npostcss.Declaration = Declaration22;\npostcss.Container = Container22;\npostcss.Processor = Processor22;\npostcss.Document = Document222;\npostcss.Comment = Comment22;\npostcss.Warning = Warning22;\npostcss.AtRule = AtRule22;\npostcss.Result = Result22;\npostcss.Input = Input22;\npostcss.Rule = Rule22;\npostcss.Root = Root22;\npostcss.Node = Node22;\nLazyResult22.registerPostcss(postcss);\nvar postcss_1 = postcss;\npostcss.default = postcss;\nconst postcss$1 = /* @__PURE__ */ getDefaultExportFromCjs(postcss_1);\npostcss$1.stringify;\npostcss$1.fromJSON;\npostcss$1.plugin;\npostcss$1.parse;\npostcss$1.list;\npostcss$1.document;\npostcss$1.comment;\npostcss$1.atRule;\npostcss$1.rule;\npostcss$1.decl;\npostcss$1.root;\npostcss$1.CssSyntaxError;\npostcss$1.Declaration;\npostcss$1.Container;\npostcss$1.Processor;\npostcss$1.Document;\npostcss$1.Comment;\npostcss$1.Warning;\npostcss$1.AtRule;\npostcss$1.Result;\npostcss$1.Input;\npostcss$1.Rule;\npostcss$1.Root;\npostcss$1.Node;\nclass BaseRRNode {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any\n constructor(..._args) {\n __publicField2(this, \"parentElement\", null);\n __publicField2(this, \"parentNode\", null);\n __publicField2(this, \"ownerDocument\");\n __publicField2(this, \"firstChild\", null);\n __publicField2(this, \"lastChild\", null);\n __publicField2(this, \"previousSibling\", null);\n __publicField2(this, \"nextSibling\", null);\n __publicField2(this, \"ELEMENT_NODE\", 1);\n __publicField2(this, \"TEXT_NODE\", 3);\n __publicField2(this, \"nodeType\");\n __publicField2(this, \"nodeName\");\n __publicField2(this, \"RRNodeType\");\n }\n get childNodes() {\n const childNodes2 = [];\n let childIterator = this.firstChild;\n while (childIterator) {\n childNodes2.push(childIterator);\n childIterator = childIterator.nextSibling;\n }\n return childNodes2;\n }\n contains(node2) {\n if (!(node2 instanceof BaseRRNode)) return false;\n else if (node2.ownerDocument !== this.ownerDocument) return false;\n else if (node2 === this) return true;\n while (node2.parentNode) {\n if (node2.parentNode === this) return true;\n node2 = node2.parentNode;\n }\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n appendChild(_newChild) {\n throw new Error(\n `RRDomException: Failed to execute 'appendChild' on 'RRNode': This RRNode type does not support this method.`\n );\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n insertBefore(_newChild, _refChild) {\n throw new Error(\n `RRDomException: Failed to execute 'insertBefore' on 'RRNode': This RRNode type does not support this method.`\n );\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n removeChild(_node) {\n throw new Error(\n `RRDomException: Failed to execute 'removeChild' on 'RRNode': This RRNode type does not support this method.`\n );\n }\n toString() {\n return \"RRNode\";\n }\n}\nconst testableAccessors = {\n Node: [\"childNodes\", \"parentNode\", \"parentElement\", \"textContent\"],\n ShadowRoot: [\"host\", \"styleSheets\"],\n Element: [\"shadowRoot\", \"querySelector\", \"querySelectorAll\"],\n MutationObserver: []\n};\nconst testableMethods = {\n Node: [\"contains\", \"getRootNode\"],\n ShadowRoot: [\"getSelection\"],\n Element: [],\n MutationObserver: [\"constructor\"]\n};\nconst untaintedBasePrototype = {};\nconst isAngularZonePresent = () => {\n return !!globalThis.Zone;\n};\nfunction getUntaintedPrototype(key) {\n if (untaintedBasePrototype[key])\n return untaintedBasePrototype[key];\n const defaultObj = globalThis[key];\n const defaultPrototype = defaultObj.prototype;\n const accessorNames = key in testableAccessors ? testableAccessors[key] : void 0;\n const isUntaintedAccessors = Boolean(\n accessorNames && // @ts-expect-error 2345\n accessorNames.every(\n (accessor) => {\n var _a2, _b;\n return Boolean(\n (_b = (_a2 = Object.getOwnPropertyDescriptor(defaultPrototype, accessor)) == null ? void 0 : _a2.get) == null ? void 0 : _b.toString().includes(\"[native code]\")\n );\n }\n )\n );\n const methodNames = key in testableMethods ? testableMethods[key] : void 0;\n const isUntaintedMethods = Boolean(\n methodNames && methodNames.every(\n // @ts-expect-error 2345\n (method) => {\n var _a2;\n return typeof defaultPrototype[method] === \"function\" && ((_a2 = defaultPrototype[method]) == null ? void 0 : _a2.toString().includes(\"[native code]\"));\n }\n )\n );\n if (isUntaintedAccessors && isUntaintedMethods && !isAngularZonePresent()) {\n untaintedBasePrototype[key] = defaultObj.prototype;\n return defaultObj.prototype;\n }\n try {\n const iframeEl = document.createElement(\"iframe\");\n document.body.appendChild(iframeEl);\n const win = iframeEl.contentWindow;\n if (!win) return defaultObj.prototype;\n const untaintedObject = win[key].prototype;\n document.body.removeChild(iframeEl);\n if (!untaintedObject) return defaultPrototype;\n return untaintedBasePrototype[key] = untaintedObject;\n } catch {\n return defaultPrototype;\n }\n}\nconst untaintedAccessorCache = {};\nfunction getUntaintedAccessor(key, instance, accessor) {\n var _a2;\n const cacheKey = `${key}.${String(accessor)}`;\n if (untaintedAccessorCache[cacheKey])\n return untaintedAccessorCache[cacheKey].call(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype(key);\n const untaintedAccessor = (_a2 = Object.getOwnPropertyDescriptor(\n untaintedPrototype,\n accessor\n )) == null ? void 0 : _a2.get;\n if (!untaintedAccessor) return instance[accessor];\n untaintedAccessorCache[cacheKey] = untaintedAccessor;\n return untaintedAccessor.call(instance);\n}\nconst untaintedMethodCache = {};\nfunction getUntaintedMethod(key, instance, method) {\n const cacheKey = `${key}.${String(method)}`;\n if (untaintedMethodCache[cacheKey])\n return untaintedMethodCache[cacheKey].bind(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype(key);\n const untaintedMethod = untaintedPrototype[method];\n if (typeof untaintedMethod !== \"function\") return instance[method];\n untaintedMethodCache[cacheKey] = untaintedMethod;\n return untaintedMethod.bind(instance);\n}\nfunction childNodes(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"childNodes\");\n}\nfunction parentNode(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"parentNode\");\n}\nfunction parentElement(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"parentElement\");\n}\nfunction textContent(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"textContent\");\n}\nfunction contains(n2, other) {\n return getUntaintedMethod(\"Node\", n2, \"contains\")(other);\n}\nfunction getRootNode(n2) {\n return getUntaintedMethod(\"Node\", n2, \"getRootNode\")();\n}\nfunction host(n2) {\n if (!n2 || !(\"host\" in n2)) return null;\n return getUntaintedAccessor(\"ShadowRoot\", n2, \"host\");\n}\nfunction styleSheets(n2) {\n return n2.styleSheets;\n}\nfunction shadowRoot(n2) {\n if (!n2 || !(\"shadowRoot\" in n2)) return null;\n return getUntaintedAccessor(\"Element\", n2, \"shadowRoot\");\n}\nfunction querySelector(n2, selectors) {\n return getUntaintedAccessor(\"Element\", n2, \"querySelector\")(selectors);\n}\nfunction querySelectorAll(n2, selectors) {\n return getUntaintedAccessor(\"Element\", n2, \"querySelectorAll\")(selectors);\n}\nfunction mutationObserverCtor() {\n return getUntaintedPrototype(\"MutationObserver\").constructor;\n}\nconst index = {\n childNodes,\n parentNode,\n parentElement,\n textContent,\n contains,\n getRootNode,\n host,\n styleSheets,\n shadowRoot,\n querySelector,\n querySelectorAll,\n mutationObserver: mutationObserverCtor\n};\nfunction on(type, fn, target = document) {\n const options = { capture: true, passive: true };\n target.addEventListener(type, fn, options);\n return () => target.removeEventListener(type, fn, options);\n}\nconst DEPARTED_MIRROR_ACCESS_WARNING = \"Please stop import mirror directly. Instead of that,\\r\\nnow you can use replayer.getMirror() to access the mirror instance of a replayer,\\r\\nor you can use record.mirror to access the mirror instance during recording.\";\nlet _mirror = {\n map: {},\n getId() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return -1;\n },\n getNode() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return null;\n },\n removeNodeFromMap() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n },\n has() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return false;\n },\n reset() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n }\n};\nif (typeof window !== \"undefined\" && window.Proxy && window.Reflect) {\n _mirror = new Proxy(_mirror, {\n get(target, prop, receiver) {\n if (prop === \"map\") {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n }\n return Reflect.get(target, prop, receiver);\n }\n });\n}\nfunction throttle(func, wait, options = {}) {\n let timeout = null;\n let previous = 0;\n return function(...args) {\n const now = Date.now();\n if (!previous && options.leading === false) {\n previous = now;\n }\n const remaining = wait - (now - previous);\n const context = this;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n func.apply(context, args);\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(() => {\n previous = options.leading === false ? 0 : Date.now();\n timeout = null;\n func.apply(context, args);\n }, remaining);\n }\n };\n}\nfunction hookSetter(target, key, d, isRevoked, win = window) {\n const original = win.Object.getOwnPropertyDescriptor(target, key);\n win.Object.defineProperty(\n target,\n key,\n isRevoked ? d : {\n set(value) {\n setTimeout(() => {\n d.set.call(this, value);\n }, 0);\n if (original && original.set) {\n original.set.call(this, value);\n }\n }\n }\n );\n return () => hookSetter(target, key, original || {}, true);\n}\nfunction patch(source, name, replacement) {\n try {\n if (!(name in source)) {\n return () => {\n };\n }\n const original = source[name];\n const wrapped = replacement(original);\n if (typeof wrapped === \"function\") {\n wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __rrweb_original__: {\n enumerable: false,\n value: original\n }\n });\n }\n source[name] = wrapped;\n return () => {\n source[name] = original;\n };\n } catch {\n return () => {\n };\n }\n}\nlet nowTimestamp = Date.now;\nif (!/* @__PURE__ */ /[1-9][0-9]{12}/.test(Date.now().toString())) {\n nowTimestamp = () => (/* @__PURE__ */ new Date()).getTime();\n}\nfunction getWindowScroll(win) {\n var _a2, _b, _c, _d;\n const doc = win.document;\n return {\n left: doc.scrollingElement ? doc.scrollingElement.scrollLeft : win.pageXOffset !== void 0 ? win.pageXOffset : doc.documentElement.scrollLeft || (doc == null ? void 0 : doc.body) && ((_a2 = index.parentElement(doc.body)) == null ? void 0 : _a2.scrollLeft) || ((_b = doc == null ? void 0 : doc.body) == null ? void 0 : _b.scrollLeft) || 0,\n top: doc.scrollingElement ? doc.scrollingElement.scrollTop : win.pageYOffset !== void 0 ? win.pageYOffset : (doc == null ? void 0 : doc.documentElement.scrollTop) || (doc == null ? void 0 : doc.body) && ((_c = index.parentElement(doc.body)) == null ? void 0 : _c.scrollTop) || ((_d = doc == null ? void 0 : doc.body) == null ? void 0 : _d.scrollTop) || 0\n };\n}\nfunction getWindowHeight() {\n return window.innerHeight || document.documentElement && document.documentElement.clientHeight || document.body && document.body.clientHeight;\n}\nfunction getWindowWidth() {\n return window.innerWidth || document.documentElement && document.documentElement.clientWidth || document.body && document.body.clientWidth;\n}\nfunction closestElementOfNode(node2) {\n if (!node2) {\n return null;\n }\n const el = node2.nodeType === node2.ELEMENT_NODE ? node2 : index.parentElement(node2);\n return el;\n}\nfunction isBlocked(node2, blockClass, blockSelector, checkAncestors) {\n if (!node2) {\n return false;\n }\n const el = closestElementOfNode(node2);\n if (!el) {\n return false;\n }\n try {\n if (typeof blockClass === \"string\") {\n if (el.classList.contains(blockClass)) return true;\n if (checkAncestors && el.closest(\".\" + blockClass) !== null) return true;\n } else {\n if (classMatchesRegex(el, blockClass, checkAncestors)) return true;\n }\n } catch (e2) {\n }\n if (blockSelector) {\n if (el.matches(blockSelector)) return true;\n if (checkAncestors && el.closest(blockSelector) !== null) return true;\n }\n return false;\n}\nfunction isSerialized(n2, mirror2) {\n return mirror2.getId(n2) !== -1;\n}\nfunction isIgnored(n2, mirror2, slimDOMOptions) {\n if (n2.tagName === \"TITLE\" && slimDOMOptions.headTitleMutations) {\n return true;\n }\n return mirror2.getId(n2) === IGNORED_NODE;\n}\nfunction isAncestorRemoved(target, mirror2) {\n if (isShadowRoot(target)) {\n return false;\n }\n const id = mirror2.getId(target);\n if (!mirror2.has(id)) {\n return true;\n }\n const parent = index.parentNode(target);\n if (parent && parent.nodeType === target.DOCUMENT_NODE) {\n return false;\n }\n if (!parent) {\n return true;\n }\n return isAncestorRemoved(parent, mirror2);\n}\nfunction legacy_isTouchEvent(event) {\n return Boolean(event.changedTouches);\n}\nfunction polyfill$1(win = window) {\n if (\"NodeList\" in win && !win.NodeList.prototype.forEach) {\n win.NodeList.prototype.forEach = Array.prototype.forEach;\n }\n if (\"DOMTokenList\" in win && !win.DOMTokenList.prototype.forEach) {\n win.DOMTokenList.prototype.forEach = Array.prototype.forEach;\n }\n}\nfunction isSerializedIframe(n2, mirror2) {\n return Boolean(n2.nodeName === \"IFRAME\" && mirror2.getMeta(n2));\n}\nfunction isSerializedStylesheet(n2, mirror2) {\n return Boolean(\n n2.nodeName === \"LINK\" && n2.nodeType === n2.ELEMENT_NODE && n2.getAttribute && n2.getAttribute(\"rel\") === \"stylesheet\" && mirror2.getMeta(n2)\n );\n}\nfunction hasShadowRoot(n2) {\n if (!n2) return false;\n if (n2 instanceof BaseRRNode && \"shadowRoot\" in n2) {\n return Boolean(n2.shadowRoot);\n }\n return Boolean(index.shadowRoot(n2));\n}\nclass StyleSheetMirror {\n constructor() {\n __publicField(this, \"id\", 1);\n __publicField(this, \"styleIDMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"idStyleMap\", /* @__PURE__ */ new Map());\n }\n getId(stylesheet) {\n return this.styleIDMap.get(stylesheet) ?? -1;\n }\n has(stylesheet) {\n return this.styleIDMap.has(stylesheet);\n }\n /**\n * @returns If the stylesheet is in the mirror, returns the id of the stylesheet. If not, return the new assigned id.\n */\n add(stylesheet, id) {\n if (this.has(stylesheet)) return this.getId(stylesheet);\n let newId;\n if (id === void 0) {\n newId = this.id++;\n } else newId = id;\n this.styleIDMap.set(stylesheet, newId);\n this.idStyleMap.set(newId, stylesheet);\n return newId;\n }\n getStyle(id) {\n return this.idStyleMap.get(id) || null;\n }\n reset() {\n this.styleIDMap = /* @__PURE__ */ new WeakMap();\n this.idStyleMap = /* @__PURE__ */ new Map();\n this.id = 1;\n }\n generateId() {\n return this.id++;\n }\n}\nfunction getShadowHost(n2) {\n var _a2;\n let shadowHost = null;\n if (\"getRootNode\" in n2 && ((_a2 = index.getRootNode(n2)) == null ? void 0 : _a2.nodeType) === Node.DOCUMENT_FRAGMENT_NODE && index.host(index.getRootNode(n2)))\n shadowHost = index.host(index.getRootNode(n2));\n return shadowHost;\n}\nfunction getRootShadowHost(n2) {\n let rootShadowHost = n2;\n let shadowHost;\n while (shadowHost = getShadowHost(rootShadowHost))\n rootShadowHost = shadowHost;\n return rootShadowHost;\n}\nfunction shadowHostInDom(n2) {\n const doc = n2.ownerDocument;\n if (!doc) return false;\n const shadowHost = getRootShadowHost(n2);\n return index.contains(doc, shadowHost);\n}\nfunction inDom(n2) {\n const doc = n2.ownerDocument;\n if (!doc) return false;\n return index.contains(doc, n2) || shadowHostInDom(n2);\n}\nvar EventType = /* @__PURE__ */ ((EventType2) => {\n EventType2[EventType2[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n EventType2[EventType2[\"Load\"] = 1] = \"Load\";\n EventType2[EventType2[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n EventType2[EventType2[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n EventType2[EventType2[\"Meta\"] = 4] = \"Meta\";\n EventType2[EventType2[\"Custom\"] = 5] = \"Custom\";\n EventType2[EventType2[\"Plugin\"] = 6] = \"Plugin\";\n return EventType2;\n})(EventType || {});\nvar IncrementalSource = /* @__PURE__ */ ((IncrementalSource2) => {\n IncrementalSource2[IncrementalSource2[\"Mutation\"] = 0] = \"Mutation\";\n IncrementalSource2[IncrementalSource2[\"MouseMove\"] = 1] = \"MouseMove\";\n IncrementalSource2[IncrementalSource2[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n IncrementalSource2[IncrementalSource2[\"Scroll\"] = 3] = \"Scroll\";\n IncrementalSource2[IncrementalSource2[\"ViewportResize\"] = 4] = \"ViewportResize\";\n IncrementalSource2[IncrementalSource2[\"Input\"] = 5] = \"Input\";\n IncrementalSource2[IncrementalSource2[\"TouchMove\"] = 6] = \"TouchMove\";\n IncrementalSource2[IncrementalSource2[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n IncrementalSource2[IncrementalSource2[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n IncrementalSource2[IncrementalSource2[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n IncrementalSource2[IncrementalSource2[\"Font\"] = 10] = \"Font\";\n IncrementalSource2[IncrementalSource2[\"Log\"] = 11] = \"Log\";\n IncrementalSource2[IncrementalSource2[\"Drag\"] = 12] = \"Drag\";\n IncrementalSource2[IncrementalSource2[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n IncrementalSource2[IncrementalSource2[\"Selection\"] = 14] = \"Selection\";\n IncrementalSource2[IncrementalSource2[\"AdoptedStyleSheet\"] = 15] = \"AdoptedStyleSheet\";\n IncrementalSource2[IncrementalSource2[\"CustomElement\"] = 16] = \"CustomElement\";\n return IncrementalSource2;\n})(IncrementalSource || {});\nvar MouseInteractions = /* @__PURE__ */ ((MouseInteractions2) => {\n MouseInteractions2[MouseInteractions2[\"MouseUp\"] = 0] = \"MouseUp\";\n MouseInteractions2[MouseInteractions2[\"MouseDown\"] = 1] = \"MouseDown\";\n MouseInteractions2[MouseInteractions2[\"Click\"] = 2] = \"Click\";\n MouseInteractions2[MouseInteractions2[\"ContextMenu\"] = 3] = \"ContextMenu\";\n MouseInteractions2[MouseInteractions2[\"DblClick\"] = 4] = \"DblClick\";\n MouseInteractions2[MouseInteractions2[\"Focus\"] = 5] = \"Focus\";\n MouseInteractions2[MouseInteractions2[\"Blur\"] = 6] = \"Blur\";\n MouseInteractions2[MouseInteractions2[\"TouchStart\"] = 7] = \"TouchStart\";\n MouseInteractions2[MouseInteractions2[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n MouseInteractions2[MouseInteractions2[\"TouchEnd\"] = 9] = \"TouchEnd\";\n MouseInteractions2[MouseInteractions2[\"TouchCancel\"] = 10] = \"TouchCancel\";\n return MouseInteractions2;\n})(MouseInteractions || {});\nvar PointerTypes = /* @__PURE__ */ ((PointerTypes2) => {\n PointerTypes2[PointerTypes2[\"Mouse\"] = 0] = \"Mouse\";\n PointerTypes2[PointerTypes2[\"Pen\"] = 1] = \"Pen\";\n PointerTypes2[PointerTypes2[\"Touch\"] = 2] = \"Touch\";\n return PointerTypes2;\n})(PointerTypes || {});\nvar CanvasContext = /* @__PURE__ */ ((CanvasContext2) => {\n CanvasContext2[CanvasContext2[\"2D\"] = 0] = \"2D\";\n CanvasContext2[CanvasContext2[\"WebGL\"] = 1] = \"WebGL\";\n CanvasContext2[CanvasContext2[\"WebGL2\"] = 2] = \"WebGL2\";\n return CanvasContext2;\n})(CanvasContext || {});\nvar MediaInteractions = /* @__PURE__ */ ((MediaInteractions2) => {\n MediaInteractions2[MediaInteractions2[\"Play\"] = 0] = \"Play\";\n MediaInteractions2[MediaInteractions2[\"Pause\"] = 1] = \"Pause\";\n MediaInteractions2[MediaInteractions2[\"Seeked\"] = 2] = \"Seeked\";\n MediaInteractions2[MediaInteractions2[\"VolumeChange\"] = 3] = \"VolumeChange\";\n MediaInteractions2[MediaInteractions2[\"RateChange\"] = 4] = \"RateChange\";\n return MediaInteractions2;\n})(MediaInteractions || {});\nvar NodeType = /* @__PURE__ */ ((NodeType2) => {\n NodeType2[NodeType2[\"Document\"] = 0] = \"Document\";\n NodeType2[NodeType2[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType2[NodeType2[\"Element\"] = 2] = \"Element\";\n NodeType2[NodeType2[\"Text\"] = 3] = \"Text\";\n NodeType2[NodeType2[\"CDATA\"] = 4] = \"CDATA\";\n NodeType2[NodeType2[\"Comment\"] = 5] = \"Comment\";\n return NodeType2;\n})(NodeType || {});\nfunction isNodeInLinkedList(n2) {\n return \"__ln\" in n2;\n}\nclass DoubleLinkedList {\n constructor() {\n __publicField(this, \"length\", 0);\n __publicField(this, \"head\", null);\n __publicField(this, \"tail\", null);\n }\n get(position) {\n if (position >= this.length) {\n throw new Error(\"Position outside of list range\");\n }\n let current = this.head;\n for (let index2 = 0; index2 < position; index2++) {\n current = (current == null ? void 0 : current.next) || null;\n }\n return current;\n }\n addNode(n2) {\n const node2 = {\n value: n2,\n previous: null,\n next: null\n };\n n2.__ln = node2;\n if (n2.previousSibling && isNodeInLinkedList(n2.previousSibling)) {\n const current = n2.previousSibling.__ln.next;\n node2.next = current;\n node2.previous = n2.previousSibling.__ln;\n n2.previousSibling.__ln.next = node2;\n if (current) {\n current.previous = node2;\n }\n } else if (n2.nextSibling && isNodeInLinkedList(n2.nextSibling) && n2.nextSibling.__ln.previous) {\n const current = n2.nextSibling.__ln.previous;\n node2.previous = current;\n node2.next = n2.nextSibling.__ln;\n n2.nextSibling.__ln.previous = node2;\n if (current) {\n current.next = node2;\n }\n } else {\n if (this.head) {\n this.head.previous = node2;\n }\n node2.next = this.head;\n this.head = node2;\n }\n if (node2.next === null) {\n this.tail = node2;\n }\n this.length++;\n }\n removeNode(n2) {\n const current = n2.__ln;\n if (!this.head) {\n return;\n }\n if (!current.previous) {\n this.head = current.next;\n if (this.head) {\n this.head.previous = null;\n } else {\n this.tail = null;\n }\n } else {\n current.previous.next = current.next;\n if (current.next) {\n current.next.previous = current.previous;\n } else {\n this.tail = current.previous;\n }\n }\n if (n2.__ln) {\n delete n2.__ln;\n }\n this.length--;\n }\n}\nconst moveKey = (id, parentId) => `${id}@${parentId}`;\nclass MutationBuffer {\n constructor() {\n __publicField(this, \"frozen\", false);\n __publicField(this, \"locked\", false);\n __publicField(this, \"texts\", []);\n __publicField(this, \"attributes\", []);\n __publicField(this, \"attributeMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"removes\", []);\n __publicField(this, \"mapRemoves\", []);\n __publicField(this, \"movedMap\", {});\n __publicField(this, \"addedSet\", /* @__PURE__ */ new Set());\n __publicField(this, \"movedSet\", /* @__PURE__ */ new Set());\n __publicField(this, \"droppedSet\", /* @__PURE__ */ new Set());\n __publicField(this, \"removesSubTreeCache\", /* @__PURE__ */ new Set());\n __publicField(this, \"mutationCb\");\n __publicField(this, \"blockClass\");\n __publicField(this, \"blockSelector\");\n __publicField(this, \"maskTextClass\");\n __publicField(this, \"maskTextSelector\");\n __publicField(this, \"inlineStylesheet\");\n __publicField(this, \"maskInputOptions\");\n __publicField(this, \"maskTextFn\");\n __publicField(this, \"maskInputFn\");\n __publicField(this, \"keepIframeSrcFn\");\n __publicField(this, \"recordCanvas\");\n __publicField(this, \"inlineImages\");\n __publicField(this, \"slimDOMOptions\");\n __publicField(this, \"dataURLOptions\");\n __publicField(this, \"doc\");\n __publicField(this, \"mirror\");\n __publicField(this, \"iframeManager\");\n __publicField(this, \"stylesheetManager\");\n __publicField(this, \"shadowDomManager\");\n __publicField(this, \"canvasManager\");\n __publicField(this, \"processedNodeManager\");\n __publicField(this, \"unattachedDoc\");\n __publicField(this, \"processMutations\", (mutations) => {\n mutations.forEach(this.processMutation);\n this.emit();\n });\n __publicField(this, \"emit\", () => {\n if (this.frozen || this.locked) {\n return;\n }\n const adds = [];\n const addedIds = /* @__PURE__ */ new Set();\n const addList = new DoubleLinkedList();\n const getNextId = (n2) => {\n let ns = n2;\n let nextId = IGNORED_NODE;\n while (nextId === IGNORED_NODE) {\n ns = ns && ns.nextSibling;\n nextId = ns && this.mirror.getId(ns);\n }\n return nextId;\n };\n const pushAdd = (n2) => {\n const parent = index.parentNode(n2);\n if (!parent || !inDom(n2)) {\n return;\n }\n let cssCaptured = false;\n if (n2.nodeType === Node.TEXT_NODE) {\n const parentTag = parent.tagName;\n if (parentTag === \"TEXTAREA\") {\n return;\n } else if (parentTag === \"STYLE\" && this.addedSet.has(parent)) {\n cssCaptured = true;\n }\n }\n const parentId = isShadowRoot(parent) ? this.mirror.getId(getShadowHost(n2)) : this.mirror.getId(parent);\n const nextId = getNextId(n2);\n if (parentId === -1 || nextId === -1) {\n return addList.addNode(n2);\n }\n const sn = serializeNodeWithId(n2, {\n doc: this.doc,\n mirror: this.mirror,\n blockClass: this.blockClass,\n blockSelector: this.blockSelector,\n maskTextClass: this.maskTextClass,\n maskTextSelector: this.maskTextSelector,\n skipChild: true,\n newlyAddedElement: true,\n inlineStylesheet: this.inlineStylesheet,\n maskInputOptions: this.maskInputOptions,\n maskTextFn: this.maskTextFn,\n maskInputFn: this.maskInputFn,\n slimDOMOptions: this.slimDOMOptions,\n dataURLOptions: this.dataURLOptions,\n recordCanvas: this.recordCanvas,\n inlineImages: this.inlineImages,\n onSerialize: (currentN) => {\n if (isSerializedIframe(currentN, this.mirror)) {\n this.iframeManager.addIframe(currentN);\n }\n if (isSerializedStylesheet(currentN, this.mirror)) {\n this.stylesheetManager.trackLinkElement(\n currentN\n );\n }\n if (hasShadowRoot(n2)) {\n this.shadowDomManager.addShadowRoot(index.shadowRoot(n2), this.doc);\n }\n },\n onIframeLoad: (iframe, childSn) => {\n this.iframeManager.attachIframe(iframe, childSn);\n this.shadowDomManager.observeAttachShadow(iframe);\n },\n onStylesheetLoad: (link, childSn) => {\n this.stylesheetManager.attachLinkElement(link, childSn);\n },\n cssCaptured\n });\n if (sn) {\n adds.push({\n parentId,\n nextId,\n node: sn\n });\n addedIds.add(sn.id);\n }\n };\n while (this.mapRemoves.length) {\n this.mirror.removeNodeFromMap(this.mapRemoves.shift());\n }\n for (const n2 of this.movedSet) {\n if (isParentRemoved(this.removesSubTreeCache, n2, this.mirror) && !this.movedSet.has(index.parentNode(n2))) {\n continue;\n }\n pushAdd(n2);\n }\n for (const n2 of this.addedSet) {\n if (!isAncestorInSet(this.droppedSet, n2) && !isParentRemoved(this.removesSubTreeCache, n2, this.mirror)) {\n pushAdd(n2);\n } else if (isAncestorInSet(this.movedSet, n2)) {\n pushAdd(n2);\n } else {\n this.droppedSet.add(n2);\n }\n }\n let candidate = null;\n while (addList.length) {\n let node2 = null;\n if (candidate) {\n const parentId = this.mirror.getId(index.parentNode(candidate.value));\n const nextId = getNextId(candidate.value);\n if (parentId !== -1 && nextId !== -1) {\n node2 = candidate;\n }\n }\n if (!node2) {\n let tailNode = addList.tail;\n while (tailNode) {\n const _node = tailNode;\n tailNode = tailNode.previous;\n if (_node) {\n const parentId = this.mirror.getId(index.parentNode(_node.value));\n const nextId = getNextId(_node.value);\n if (nextId === -1) continue;\n else if (parentId !== -1) {\n node2 = _node;\n break;\n } else {\n const unhandledNode = _node.value;\n const parent = index.parentNode(unhandledNode);\n if (parent && parent.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n const shadowHost = index.host(parent);\n const parentId2 = this.mirror.getId(shadowHost);\n if (parentId2 !== -1) {\n node2 = _node;\n break;\n }\n }\n }\n }\n }\n }\n if (!node2) {\n while (addList.head) {\n addList.removeNode(addList.head.value);\n }\n break;\n }\n candidate = node2.previous;\n addList.removeNode(node2.value);\n pushAdd(node2.value);\n }\n const payload = {\n texts: this.texts.map((text) => {\n const n2 = text.node;\n const parent = index.parentNode(n2);\n if (parent && parent.tagName === \"TEXTAREA\") {\n this.genTextAreaValueMutation(parent);\n }\n return {\n id: this.mirror.getId(n2),\n value: text.value\n };\n }).filter((text) => !addedIds.has(text.id)).filter((text) => this.mirror.has(text.id)),\n attributes: this.attributes.map((attribute) => {\n const { attributes } = attribute;\n if (typeof attributes.style === \"string\") {\n const diffAsStr = JSON.stringify(attribute.styleDiff);\n const unchangedAsStr = JSON.stringify(attribute._unchangedStyles);\n if (diffAsStr.length < attributes.style.length) {\n if ((diffAsStr + unchangedAsStr).split(\"var(\").length === attributes.style.split(\"var(\").length) {\n attributes.style = attribute.styleDiff;\n }\n }\n }\n return {\n id: this.mirror.getId(attribute.node),\n attributes\n };\n }).filter((attribute) => !addedIds.has(attribute.id)).filter((attribute) => this.mirror.has(attribute.id)),\n removes: this.removes,\n adds\n };\n if (!payload.texts.length && !payload.attributes.length && !payload.removes.length && !payload.adds.length) {\n return;\n }\n this.texts = [];\n this.attributes = [];\n this.attributeMap = /* @__PURE__ */ new WeakMap();\n this.removes = [];\n this.addedSet = /* @__PURE__ */ new Set();\n this.movedSet = /* @__PURE__ */ new Set();\n this.droppedSet = /* @__PURE__ */ new Set();\n this.removesSubTreeCache = /* @__PURE__ */ new Set();\n this.movedMap = {};\n this.mutationCb(payload);\n });\n __publicField(this, \"genTextAreaValueMutation\", (textarea) => {\n let item = this.attributeMap.get(textarea);\n if (!item) {\n item = {\n node: textarea,\n attributes: {},\n styleDiff: {},\n _unchangedStyles: {}\n };\n this.attributes.push(item);\n this.attributeMap.set(textarea, item);\n }\n item.attributes.value = Array.from(\n index.childNodes(textarea),\n (cn) => index.textContent(cn) || \"\"\n ).join(\"\");\n });\n __publicField(this, \"processMutation\", (m) => {\n if (isIgnored(m.target, this.mirror, this.slimDOMOptions)) {\n return;\n }\n switch (m.type) {\n case \"characterData\": {\n const value = index.textContent(m.target);\n if (!isBlocked(m.target, this.blockClass, this.blockSelector, false) && value !== m.oldValue) {\n this.texts.push({\n value: needMaskingText(\n m.target,\n this.maskTextClass,\n this.maskTextSelector,\n true\n // checkAncestors\n ) && value ? this.maskTextFn ? this.maskTextFn(value, closestElementOfNode(m.target)) : value.replace(/[\\S]/g, \"*\") : value,\n node: m.target\n });\n }\n break;\n }\n case \"attributes\": {\n const target = m.target;\n let attributeName = m.attributeName;\n let value = m.target.getAttribute(attributeName);\n if (attributeName === \"value\") {\n const type = getInputType(target);\n value = maskInputValue({\n element: target,\n maskInputOptions: this.maskInputOptions,\n tagName: target.tagName,\n type,\n value,\n maskInputFn: this.maskInputFn\n });\n }\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) || value === m.oldValue) {\n return;\n }\n let item = this.attributeMap.get(m.target);\n if (target.tagName === \"IFRAME\" && attributeName === \"src\" && !this.keepIframeSrcFn(value)) {\n if (!target.contentDocument) {\n attributeName = \"rr_src\";\n } else {\n return;\n }\n }\n if (!item) {\n item = {\n node: m.target,\n attributes: {},\n styleDiff: {},\n _unchangedStyles: {}\n };\n this.attributes.push(item);\n this.attributeMap.set(m.target, item);\n }\n if (attributeName === \"type\" && target.tagName === \"INPUT\" && (m.oldValue || \"\").toLowerCase() === \"password\") {\n target.setAttribute(\"data-rr-is-password\", \"true\");\n }\n if (!ignoreAttribute(target.tagName, attributeName)) {\n item.attributes[attributeName] = transformAttribute(\n this.doc,\n toLowerCase(target.tagName),\n toLowerCase(attributeName),\n value\n );\n if (attributeName === \"style\") {\n if (!this.unattachedDoc) {\n try {\n this.unattachedDoc = document.implementation.createHTMLDocument();\n } catch (e2) {\n this.unattachedDoc = this.doc;\n }\n }\n const old = this.unattachedDoc.createElement(\"span\");\n if (m.oldValue) {\n old.setAttribute(\"style\", m.oldValue);\n }\n for (const pname of Array.from(target.style)) {\n const newValue = target.style.getPropertyValue(pname);\n const newPriority = target.style.getPropertyPriority(pname);\n if (newValue !== old.style.getPropertyValue(pname) || newPriority !== old.style.getPropertyPriority(pname)) {\n if (newPriority === \"\") {\n item.styleDiff[pname] = newValue;\n } else {\n item.styleDiff[pname] = [newValue, newPriority];\n }\n } else {\n item._unchangedStyles[pname] = [newValue, newPriority];\n }\n }\n for (const pname of Array.from(old.style)) {\n if (target.style.getPropertyValue(pname) === \"\") {\n item.styleDiff[pname] = false;\n }\n }\n } else if (attributeName === \"open\" && target.tagName === \"DIALOG\") {\n if (target.matches(\"dialog:modal\")) {\n item.attributes[\"rr_open_mode\"] = \"modal\";\n } else {\n item.attributes[\"rr_open_mode\"] = \"non-modal\";\n }\n }\n }\n break;\n }\n case \"childList\": {\n if (isBlocked(m.target, this.blockClass, this.blockSelector, true))\n return;\n if (m.target.tagName === \"TEXTAREA\") {\n this.genTextAreaValueMutation(m.target);\n return;\n }\n m.addedNodes.forEach((n2) => this.genAdds(n2, m.target));\n m.removedNodes.forEach((n2) => {\n const nodeId = this.mirror.getId(n2);\n const parentId = isShadowRoot(m.target) ? this.mirror.getId(index.host(m.target)) : this.mirror.getId(m.target);\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) || isIgnored(n2, this.mirror, this.slimDOMOptions) || !isSerialized(n2, this.mirror)) {\n return;\n }\n if (this.addedSet.has(n2)) {\n deepDelete(this.addedSet, n2);\n this.droppedSet.add(n2);\n } else if (this.addedSet.has(m.target) && nodeId === -1) ;\n else if (isAncestorRemoved(m.target, this.mirror)) ;\n else if (this.movedSet.has(n2) && this.movedMap[moveKey(nodeId, parentId)]) {\n deepDelete(this.movedSet, n2);\n } else {\n this.removes.push({\n parentId,\n id: nodeId,\n isShadow: isShadowRoot(m.target) && isNativeShadowDom(m.target) ? true : void 0\n });\n processRemoves(n2, this.removesSubTreeCache);\n }\n this.mapRemoves.push(n2);\n });\n break;\n }\n }\n });\n __publicField(this, \"genAdds\", (n2, target) => {\n if (this.processedNodeManager.inOtherBuffer(n2, this)) return;\n if (this.addedSet.has(n2) || this.movedSet.has(n2)) return;\n if (this.mirror.hasNode(n2)) {\n if (isIgnored(n2, this.mirror, this.slimDOMOptions)) {\n return;\n }\n this.movedSet.add(n2);\n let targetId = null;\n if (target && this.mirror.hasNode(target)) {\n targetId = this.mirror.getId(target);\n }\n if (targetId && targetId !== -1) {\n this.movedMap[moveKey(this.mirror.getId(n2), targetId)] = true;\n }\n } else {\n this.addedSet.add(n2);\n this.droppedSet.delete(n2);\n }\n if (!isBlocked(n2, this.blockClass, this.blockSelector, false)) {\n index.childNodes(n2).forEach((childN) => this.genAdds(childN));\n if (hasShadowRoot(n2)) {\n index.childNodes(index.shadowRoot(n2)).forEach((childN) => {\n this.processedNodeManager.add(childN, this);\n this.genAdds(childN, n2);\n });\n }\n }\n });\n }\n init(options) {\n [\n \"mutationCb\",\n \"blockClass\",\n \"blockSelector\",\n \"maskTextClass\",\n \"maskTextSelector\",\n \"inlineStylesheet\",\n \"maskInputOptions\",\n \"maskTextFn\",\n \"maskInputFn\",\n \"keepIframeSrcFn\",\n \"recordCanvas\",\n \"inlineImages\",\n \"slimDOMOptions\",\n \"dataURLOptions\",\n \"doc\",\n \"mirror\",\n \"iframeManager\",\n \"stylesheetManager\",\n \"shadowDomManager\",\n \"canvasManager\",\n \"processedNodeManager\"\n ].forEach((key) => {\n this[key] = options[key];\n });\n }\n freeze() {\n this.frozen = true;\n this.canvasManager.freeze();\n }\n unfreeze() {\n this.frozen = false;\n this.canvasManager.unfreeze();\n this.emit();\n }\n isFrozen() {\n return this.frozen;\n }\n lock() {\n this.locked = true;\n this.canvasManager.lock();\n }\n unlock() {\n this.locked = false;\n this.canvasManager.unlock();\n this.emit();\n }\n reset() {\n this.shadowDomManager.reset();\n this.canvasManager.reset();\n }\n}\nfunction deepDelete(addsSet, n2) {\n addsSet.delete(n2);\n index.childNodes(n2).forEach((childN) => deepDelete(addsSet, childN));\n}\nfunction processRemoves(n2, cache) {\n const queue = [n2];\n while (queue.length) {\n const next = queue.pop();\n if (cache.has(next)) continue;\n cache.add(next);\n index.childNodes(next).forEach((n22) => queue.push(n22));\n }\n return;\n}\nfunction isParentRemoved(removes, n2, mirror2) {\n if (removes.size === 0) return false;\n return _isParentRemoved(removes, n2);\n}\nfunction _isParentRemoved(removes, n2, _mirror2) {\n const node2 = index.parentNode(n2);\n if (!node2) return false;\n return removes.has(node2);\n}\nfunction isAncestorInSet(set, n2) {\n if (set.size === 0) return false;\n return _isAncestorInSet(set, n2);\n}\nfunction _isAncestorInSet(set, n2) {\n const parent = index.parentNode(n2);\n if (!parent) {\n return false;\n }\n if (set.has(parent)) {\n return true;\n }\n return _isAncestorInSet(set, parent);\n}\nlet errorHandler;\nfunction registerErrorHandler(handler) {\n errorHandler = handler;\n}\nfunction unregisterErrorHandler() {\n errorHandler = void 0;\n}\nconst callbackWrapper = (cb) => {\n if (!errorHandler) {\n return cb;\n }\n const rrwebWrapped = (...rest) => {\n try {\n return cb(...rest);\n } catch (error) {\n if (errorHandler && errorHandler(error) === true) {\n return;\n }\n throw error;\n }\n };\n return rrwebWrapped;\n};\nconst mutationBuffers = [];\nfunction getEventTarget(event) {\n try {\n if (\"composedPath\" in event) {\n const path = event.composedPath();\n if (path.length) {\n return path[0];\n }\n } else if (\"path\" in event && event.path.length) {\n return event.path[0];\n }\n } catch {\n }\n return event && event.target;\n}\nfunction initMutationObserver(options, rootEl) {\n const mutationBuffer = new MutationBuffer();\n mutationBuffers.push(mutationBuffer);\n mutationBuffer.init(options);\n const observer = new (mutationObserverCtor())(\n callbackWrapper(mutationBuffer.processMutations.bind(mutationBuffer))\n );\n observer.observe(rootEl, {\n attributes: true,\n attributeOldValue: true,\n characterData: true,\n characterDataOldValue: true,\n childList: true,\n subtree: true\n });\n return observer;\n}\nfunction initMoveObserver({\n mousemoveCb,\n sampling,\n doc,\n mirror: mirror2\n}) {\n if (sampling.mousemove === false) {\n return () => {\n };\n }\n const threshold = typeof sampling.mousemove === \"number\" ? sampling.mousemove : 50;\n const callbackThreshold = typeof sampling.mousemoveCallback === \"number\" ? sampling.mousemoveCallback : 500;\n let positions = [];\n let timeBaseline;\n const wrappedCb = throttle(\n callbackWrapper(\n (source) => {\n const totalOffset = Date.now() - timeBaseline;\n mousemoveCb(\n positions.map((p) => {\n p.timeOffset -= totalOffset;\n return p;\n }),\n source\n );\n positions = [];\n timeBaseline = null;\n }\n ),\n callbackThreshold\n );\n const updatePosition = callbackWrapper(\n throttle(\n callbackWrapper((evt) => {\n const target = getEventTarget(evt);\n const { clientX, clientY } = legacy_isTouchEvent(evt) ? evt.changedTouches[0] : evt;\n if (!timeBaseline) {\n timeBaseline = nowTimestamp();\n }\n positions.push({\n x: clientX,\n y: clientY,\n id: mirror2.getId(target),\n timeOffset: nowTimestamp() - timeBaseline\n });\n wrappedCb(\n typeof DragEvent !== \"undefined\" && evt instanceof DragEvent ? IncrementalSource.Drag : evt instanceof MouseEvent ? IncrementalSource.MouseMove : IncrementalSource.TouchMove\n );\n }),\n threshold,\n {\n trailing: false\n }\n )\n );\n const handlers = [\n on(\"mousemove\", updatePosition, doc),\n on(\"touchmove\", updatePosition, doc),\n on(\"drag\", updatePosition, doc)\n ];\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initMouseInteractionObserver({\n mouseInteractionCb,\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n sampling\n}) {\n if (sampling.mouseInteraction === false) {\n return () => {\n };\n }\n const disableMap = sampling.mouseInteraction === true || sampling.mouseInteraction === void 0 ? {} : sampling.mouseInteraction;\n const handlers = [];\n let currentPointerType = null;\n const getHandler = (eventKey) => {\n return (event) => {\n const target = getEventTarget(event);\n if (isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n let pointerType = null;\n let thisEventKey = eventKey;\n if (\"pointerType\" in event) {\n switch (event.pointerType) {\n case \"mouse\":\n pointerType = PointerTypes.Mouse;\n break;\n case \"touch\":\n pointerType = PointerTypes.Touch;\n break;\n case \"pen\":\n pointerType = PointerTypes.Pen;\n break;\n }\n if (pointerType === PointerTypes.Touch) {\n if (MouseInteractions[eventKey] === MouseInteractions.MouseDown) {\n thisEventKey = \"TouchStart\";\n } else if (MouseInteractions[eventKey] === MouseInteractions.MouseUp) {\n thisEventKey = \"TouchEnd\";\n }\n } else if (pointerType === PointerTypes.Pen) ;\n } else if (legacy_isTouchEvent(event)) {\n pointerType = PointerTypes.Touch;\n }\n if (pointerType !== null) {\n currentPointerType = pointerType;\n if (thisEventKey.startsWith(\"Touch\") && pointerType === PointerTypes.Touch || thisEventKey.startsWith(\"Mouse\") && pointerType === PointerTypes.Mouse) {\n pointerType = null;\n }\n } else if (MouseInteractions[eventKey] === MouseInteractions.Click) {\n pointerType = currentPointerType;\n currentPointerType = null;\n }\n const e2 = legacy_isTouchEvent(event) ? event.changedTouches[0] : event;\n if (!e2) {\n return;\n }\n const id = mirror2.getId(target);\n const { clientX, clientY } = e2;\n callbackWrapper(mouseInteractionCb)({\n type: MouseInteractions[thisEventKey],\n id,\n x: clientX,\n y: clientY,\n ...pointerType !== null && { pointerType }\n });\n };\n };\n Object.keys(MouseInteractions).filter(\n (key) => Number.isNaN(Number(key)) && !key.endsWith(\"_Departed\") && disableMap[key] !== false\n ).forEach((eventKey) => {\n let eventName = toLowerCase(eventKey);\n const handler = getHandler(eventKey);\n if (window.PointerEvent) {\n switch (MouseInteractions[eventKey]) {\n case MouseInteractions.MouseDown:\n case MouseInteractions.MouseUp:\n eventName = eventName.replace(\n \"mouse\",\n \"pointer\"\n );\n break;\n case MouseInteractions.TouchStart:\n case MouseInteractions.TouchEnd:\n return;\n }\n }\n handlers.push(on(eventName, handler, doc));\n });\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initScrollObserver({\n scrollCb,\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n sampling\n}) {\n const updatePosition = callbackWrapper(\n throttle(\n callbackWrapper((evt) => {\n const target = getEventTarget(evt);\n if (!target || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n const id = mirror2.getId(target);\n if (target === doc && doc.defaultView) {\n const scrollLeftTop = getWindowScroll(doc.defaultView);\n scrollCb({\n id,\n x: scrollLeftTop.left,\n y: scrollLeftTop.top\n });\n } else {\n scrollCb({\n id,\n x: target.scrollLeft,\n y: target.scrollTop\n });\n }\n }),\n sampling.scroll || 100\n )\n );\n return on(\"scroll\", updatePosition, doc);\n}\nfunction initViewportResizeObserver({ viewportResizeCb }, { win }) {\n let lastH = -1;\n let lastW = -1;\n const updateDimension = callbackWrapper(\n throttle(\n callbackWrapper(() => {\n const height = getWindowHeight();\n const width = getWindowWidth();\n if (lastH !== height || lastW !== width) {\n viewportResizeCb({\n width: Number(width),\n height: Number(height)\n });\n lastH = height;\n lastW = width;\n }\n }),\n 200\n )\n );\n return on(\"resize\", updateDimension, win);\n}\nconst INPUT_TAGS = [\"INPUT\", \"TEXTAREA\", \"SELECT\"];\nconst lastInputValueMap = /* @__PURE__ */ new WeakMap();\nfunction initInputObserver({\n inputCb,\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n ignoreClass,\n ignoreSelector,\n maskInputOptions,\n maskInputFn,\n sampling,\n userTriggeredOnInput\n}) {\n function eventHandler(event) {\n let target = getEventTarget(event);\n const userTriggered = event.isTrusted;\n const tagName = target && target.tagName;\n if (target && tagName === \"OPTION\") {\n target = index.parentElement(target);\n }\n if (!target || !tagName || INPUT_TAGS.indexOf(tagName) < 0 || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n if (target.classList.contains(ignoreClass) || ignoreSelector && target.matches(ignoreSelector)) {\n return;\n }\n let text = target.value;\n let isChecked = false;\n const type = getInputType(target) || \"\";\n if (type === \"radio\" || type === \"checkbox\") {\n isChecked = target.checked;\n } else if (maskInputOptions[tagName.toLowerCase()] || maskInputOptions[type]) {\n text = maskInputValue({\n element: target,\n maskInputOptions,\n tagName,\n type,\n value: text,\n maskInputFn\n });\n }\n cbWithDedup(\n target,\n userTriggeredOnInput ? { text, isChecked, userTriggered } : { text, isChecked }\n );\n const name = target.name;\n if (type === \"radio\" && name && isChecked) {\n doc.querySelectorAll(`input[type=\"radio\"][name=\"${name}\"]`).forEach((el) => {\n if (el !== target) {\n const text2 = el.value;\n cbWithDedup(\n el,\n userTriggeredOnInput ? { text: text2, isChecked: !isChecked, userTriggered: false } : { text: text2, isChecked: !isChecked }\n );\n }\n });\n }\n }\n function cbWithDedup(target, v2) {\n const lastInputValue = lastInputValueMap.get(target);\n if (!lastInputValue || lastInputValue.text !== v2.text || lastInputValue.isChecked !== v2.isChecked) {\n lastInputValueMap.set(target, v2);\n const id = mirror2.getId(target);\n callbackWrapper(inputCb)({\n ...v2,\n id\n });\n }\n }\n const events = sampling.input === \"last\" ? [\"change\"] : [\"input\", \"change\"];\n const handlers = events.map(\n (eventName) => on(eventName, callbackWrapper(eventHandler), doc)\n );\n const currentWindow = doc.defaultView;\n if (!currentWindow) {\n return () => {\n handlers.forEach((h) => h());\n };\n }\n const propertyDescriptor = currentWindow.Object.getOwnPropertyDescriptor(\n currentWindow.HTMLInputElement.prototype,\n \"value\"\n );\n const hookProperties = [\n [currentWindow.HTMLInputElement.prototype, \"value\"],\n [currentWindow.HTMLInputElement.prototype, \"checked\"],\n [currentWindow.HTMLSelectElement.prototype, \"value\"],\n [currentWindow.HTMLTextAreaElement.prototype, \"value\"],\n // Some UI library use selectedIndex to set select value\n [currentWindow.HTMLSelectElement.prototype, \"selectedIndex\"],\n [currentWindow.HTMLOptionElement.prototype, \"selected\"]\n ];\n if (propertyDescriptor && propertyDescriptor.set) {\n handlers.push(\n ...hookProperties.map(\n (p) => hookSetter(\n p[0],\n p[1],\n {\n set() {\n callbackWrapper(eventHandler)({\n target: this,\n isTrusted: false\n // userTriggered to false as this could well be programmatic\n });\n }\n },\n false,\n currentWindow\n )\n )\n );\n }\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction getNestedCSSRulePositions(rule2) {\n const positions = [];\n function recurse(childRule, pos) {\n if (hasNestedCSSRule(\"CSSGroupingRule\") && childRule.parentRule instanceof CSSGroupingRule || hasNestedCSSRule(\"CSSMediaRule\") && childRule.parentRule instanceof CSSMediaRule || hasNestedCSSRule(\"CSSSupportsRule\") && childRule.parentRule instanceof CSSSupportsRule || hasNestedCSSRule(\"CSSConditionRule\") && childRule.parentRule instanceof CSSConditionRule) {\n const rules2 = Array.from(\n childRule.parentRule.cssRules\n );\n const index2 = rules2.indexOf(childRule);\n pos.unshift(index2);\n } else if (childRule.parentStyleSheet) {\n const rules2 = Array.from(childRule.parentStyleSheet.cssRules);\n const index2 = rules2.indexOf(childRule);\n pos.unshift(index2);\n }\n return pos;\n }\n return recurse(rule2, positions);\n}\nfunction getIdAndStyleId(sheet, mirror2, styleMirror) {\n let id, styleId;\n if (!sheet) return {};\n if (sheet.ownerNode) id = mirror2.getId(sheet.ownerNode);\n else styleId = styleMirror.getId(sheet);\n return {\n styleId,\n id\n };\n}\nfunction initStyleSheetObserver({ styleSheetRuleCb, mirror: mirror2, stylesheetManager }, { win }) {\n if (!win.CSSStyleSheet || !win.CSSStyleSheet.prototype) {\n return () => {\n };\n }\n const insertRule = win.CSSStyleSheet.prototype.insertRule;\n win.CSSStyleSheet.prototype.insertRule = new Proxy(insertRule, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [rule2, index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n adds: [{ rule: rule2, index: index2 }]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n win.CSSStyleSheet.prototype.addRule = function(selector, styleBlock, index2 = this.cssRules.length) {\n const rule2 = `${selector} { ${styleBlock} }`;\n return win.CSSStyleSheet.prototype.insertRule.apply(this, [rule2, index2]);\n };\n const deleteRule = win.CSSStyleSheet.prototype.deleteRule;\n win.CSSStyleSheet.prototype.deleteRule = new Proxy(deleteRule, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n removes: [{ index: index2 }]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n win.CSSStyleSheet.prototype.removeRule = function(index2) {\n return win.CSSStyleSheet.prototype.deleteRule.apply(this, [index2]);\n };\n let replace;\n if (win.CSSStyleSheet.prototype.replace) {\n replace = win.CSSStyleSheet.prototype.replace;\n win.CSSStyleSheet.prototype.replace = new Proxy(replace, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [text] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n replace: text\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n }\n let replaceSync;\n if (win.CSSStyleSheet.prototype.replaceSync) {\n replaceSync = win.CSSStyleSheet.prototype.replaceSync;\n win.CSSStyleSheet.prototype.replaceSync = new Proxy(replaceSync, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [text] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n replaceSync: text\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n }\n const supportedNestedCSSRuleTypes = {};\n if (canMonkeyPatchNestedCSSRule(\"CSSGroupingRule\")) {\n supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\n } else {\n if (canMonkeyPatchNestedCSSRule(\"CSSMediaRule\")) {\n supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\n }\n if (canMonkeyPatchNestedCSSRule(\"CSSConditionRule\")) {\n supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\n }\n if (canMonkeyPatchNestedCSSRule(\"CSSSupportsRule\")) {\n supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\n }\n }\n const unmodifiedFunctions = {};\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n unmodifiedFunctions[typeKey] = {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n insertRule: type.prototype.insertRule,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n deleteRule: type.prototype.deleteRule\n };\n type.prototype.insertRule = new Proxy(\n unmodifiedFunctions[typeKey].insertRule,\n {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [rule2, index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n adds: [\n {\n rule: rule2,\n index: [\n ...getNestedCSSRulePositions(thisArg),\n index2 || 0\n // defaults to 0\n ]\n }\n ]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n }\n );\n type.prototype.deleteRule = new Proxy(\n unmodifiedFunctions[typeKey].deleteRule,\n {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n removes: [\n { index: [...getNestedCSSRulePositions(thisArg), index2] }\n ]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n }\n );\n });\n return callbackWrapper(() => {\n win.CSSStyleSheet.prototype.insertRule = insertRule;\n win.CSSStyleSheet.prototype.deleteRule = deleteRule;\n replace && (win.CSSStyleSheet.prototype.replace = replace);\n replaceSync && (win.CSSStyleSheet.prototype.replaceSync = replaceSync);\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\n type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\n });\n });\n}\nfunction initAdoptedStyleSheetObserver({\n mirror: mirror2,\n stylesheetManager\n}, host2) {\n var _a2, _b, _c;\n let hostId = null;\n if (host2.nodeName === \"#document\") hostId = mirror2.getId(host2);\n else hostId = mirror2.getId(index.host(host2));\n const patchTarget = host2.nodeName === \"#document\" ? (_a2 = host2.defaultView) == null ? void 0 : _a2.Document : (_c = (_b = host2.ownerDocument) == null ? void 0 : _b.defaultView) == null ? void 0 : _c.ShadowRoot;\n const originalPropertyDescriptor = (patchTarget == null ? void 0 : patchTarget.prototype) ? Object.getOwnPropertyDescriptor(\n patchTarget == null ? void 0 : patchTarget.prototype,\n \"adoptedStyleSheets\"\n ) : void 0;\n if (hostId === null || hostId === -1 || !patchTarget || !originalPropertyDescriptor)\n return () => {\n };\n Object.defineProperty(host2, \"adoptedStyleSheets\", {\n configurable: originalPropertyDescriptor.configurable,\n enumerable: originalPropertyDescriptor.enumerable,\n get() {\n var _a3;\n return (_a3 = originalPropertyDescriptor.get) == null ? void 0 : _a3.call(this);\n },\n set(sheets) {\n var _a3;\n const result2 = (_a3 = originalPropertyDescriptor.set) == null ? void 0 : _a3.call(this, sheets);\n if (hostId !== null && hostId !== -1) {\n try {\n stylesheetManager.adoptStyleSheets(sheets, hostId);\n } catch (e2) {\n }\n }\n return result2;\n }\n });\n return callbackWrapper(() => {\n Object.defineProperty(host2, \"adoptedStyleSheets\", {\n configurable: originalPropertyDescriptor.configurable,\n enumerable: originalPropertyDescriptor.enumerable,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n get: originalPropertyDescriptor.get,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n set: originalPropertyDescriptor.set\n });\n });\n}\nfunction initStyleDeclarationObserver({\n styleDeclarationCb,\n mirror: mirror2,\n ignoreCSSAttributes,\n stylesheetManager\n}, { win }) {\n const setProperty = win.CSSStyleDeclaration.prototype.setProperty;\n win.CSSStyleDeclaration.prototype.setProperty = new Proxy(setProperty, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n var _a2;\n const [property, value, priority] = argumentsList;\n if (ignoreCSSAttributes.has(property)) {\n return setProperty.apply(thisArg, [property, value, priority]);\n }\n const { id, styleId } = getIdAndStyleId(\n (_a2 = thisArg.parentRule) == null ? void 0 : _a2.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleDeclarationCb({\n id,\n styleId,\n set: {\n property,\n value,\n priority\n },\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n index: getNestedCSSRulePositions(thisArg.parentRule)\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n const removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = new Proxy(removeProperty, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n var _a2;\n const [property] = argumentsList;\n if (ignoreCSSAttributes.has(property)) {\n return removeProperty.apply(thisArg, [property]);\n }\n const { id, styleId } = getIdAndStyleId(\n (_a2 = thisArg.parentRule) == null ? void 0 : _a2.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleDeclarationCb({\n id,\n styleId,\n remove: {\n property\n },\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n index: getNestedCSSRulePositions(thisArg.parentRule)\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n return callbackWrapper(() => {\n win.CSSStyleDeclaration.prototype.setProperty = setProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\n });\n}\nfunction initMediaInteractionObserver({\n mediaInteractionCb,\n blockClass,\n blockSelector,\n mirror: mirror2,\n sampling,\n doc\n}) {\n const handler = callbackWrapper(\n (type) => throttle(\n callbackWrapper((event) => {\n const target = getEventTarget(event);\n if (!target || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n const { currentTime, volume, muted, playbackRate, loop } = target;\n mediaInteractionCb({\n type,\n id: mirror2.getId(target),\n currentTime,\n volume,\n muted,\n playbackRate,\n loop\n });\n }),\n sampling.media || 500\n )\n );\n const handlers = [\n on(\"play\", handler(MediaInteractions.Play), doc),\n on(\"pause\", handler(MediaInteractions.Pause), doc),\n on(\"seeked\", handler(MediaInteractions.Seeked), doc),\n on(\"volumechange\", handler(MediaInteractions.VolumeChange), doc),\n on(\"ratechange\", handler(MediaInteractions.RateChange), doc)\n ];\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initFontObserver({ fontCb, doc }) {\n const win = doc.defaultView;\n if (!win) {\n return () => {\n };\n }\n const handlers = [];\n const fontMap = /* @__PURE__ */ new WeakMap();\n const originalFontFace = win.FontFace;\n win.FontFace = function FontFace2(family, source, descriptors) {\n const fontFace = new originalFontFace(family, source, descriptors);\n fontMap.set(fontFace, {\n family,\n buffer: typeof source !== \"string\",\n descriptors,\n fontSource: typeof source === \"string\" ? source : JSON.stringify(Array.from(new Uint8Array(source)))\n });\n return fontFace;\n };\n const restoreHandler = patch(\n doc.fonts,\n \"add\",\n function(original) {\n return function(fontFace) {\n setTimeout(\n callbackWrapper(() => {\n const p = fontMap.get(fontFace);\n if (p) {\n fontCb(p);\n fontMap.delete(fontFace);\n }\n }),\n 0\n );\n return original.apply(this, [fontFace]);\n };\n }\n );\n handlers.push(() => {\n win.FontFace = originalFontFace;\n });\n handlers.push(restoreHandler);\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initSelectionObserver(param) {\n const { doc, mirror: mirror2, blockClass, blockSelector, selectionCb } = param;\n let collapsed = true;\n const updateSelection = callbackWrapper(() => {\n const selection = doc.getSelection();\n if (!selection || collapsed && (selection == null ? void 0 : selection.isCollapsed)) return;\n collapsed = selection.isCollapsed || false;\n const ranges = [];\n const count = selection.rangeCount || 0;\n for (let i2 = 0; i2 < count; i2++) {\n const range = selection.getRangeAt(i2);\n const { startContainer, startOffset, endContainer, endOffset } = range;\n const blocked = isBlocked(startContainer, blockClass, blockSelector, true) || isBlocked(endContainer, blockClass, blockSelector, true);\n if (blocked) continue;\n ranges.push({\n start: mirror2.getId(startContainer),\n startOffset,\n end: mirror2.getId(endContainer),\n endOffset\n });\n }\n selectionCb({ ranges });\n });\n updateSelection();\n return on(\"selectionchange\", updateSelection);\n}\nfunction initCustomElementObserver({\n doc,\n customElementCb\n}) {\n const win = doc.defaultView;\n if (!win || !win.customElements) return () => {\n };\n const restoreHandler = patch(\n win.customElements,\n \"define\",\n function(original) {\n return function(name, constructor, options) {\n try {\n customElementCb({\n define: {\n name\n }\n });\n } catch (e2) {\n console.warn(`Custom element callback failed for ${name}`);\n }\n return original.apply(this, [name, constructor, options]);\n };\n }\n );\n return restoreHandler;\n}\nfunction mergeHooks(o2, hooks) {\n const {\n mutationCb,\n mousemoveCb,\n mouseInteractionCb,\n scrollCb,\n viewportResizeCb,\n inputCb,\n mediaInteractionCb,\n styleSheetRuleCb,\n styleDeclarationCb,\n canvasMutationCb,\n fontCb,\n selectionCb,\n customElementCb\n } = o2;\n o2.mutationCb = (...p) => {\n if (hooks.mutation) {\n hooks.mutation(...p);\n }\n mutationCb(...p);\n };\n o2.mousemoveCb = (...p) => {\n if (hooks.mousemove) {\n hooks.mousemove(...p);\n }\n mousemoveCb(...p);\n };\n o2.mouseInteractionCb = (...p) => {\n if (hooks.mouseInteraction) {\n hooks.mouseInteraction(...p);\n }\n mouseInteractionCb(...p);\n };\n o2.scrollCb = (...p) => {\n if (hooks.scroll) {\n hooks.scroll(...p);\n }\n scrollCb(...p);\n };\n o2.viewportResizeCb = (...p) => {\n if (hooks.viewportResize) {\n hooks.viewportResize(...p);\n }\n viewportResizeCb(...p);\n };\n o2.inputCb = (...p) => {\n if (hooks.input) {\n hooks.input(...p);\n }\n inputCb(...p);\n };\n o2.mediaInteractionCb = (...p) => {\n if (hooks.mediaInteaction) {\n hooks.mediaInteaction(...p);\n }\n mediaInteractionCb(...p);\n };\n o2.styleSheetRuleCb = (...p) => {\n if (hooks.styleSheetRule) {\n hooks.styleSheetRule(...p);\n }\n styleSheetRuleCb(...p);\n };\n o2.styleDeclarationCb = (...p) => {\n if (hooks.styleDeclaration) {\n hooks.styleDeclaration(...p);\n }\n styleDeclarationCb(...p);\n };\n o2.canvasMutationCb = (...p) => {\n if (hooks.canvasMutation) {\n hooks.canvasMutation(...p);\n }\n canvasMutationCb(...p);\n };\n o2.fontCb = (...p) => {\n if (hooks.font) {\n hooks.font(...p);\n }\n fontCb(...p);\n };\n o2.selectionCb = (...p) => {\n if (hooks.selection) {\n hooks.selection(...p);\n }\n selectionCb(...p);\n };\n o2.customElementCb = (...c2) => {\n if (hooks.customElement) {\n hooks.customElement(...c2);\n }\n customElementCb(...c2);\n };\n}\nfunction initObservers(o2, hooks = {}) {\n const currentWindow = o2.doc.defaultView;\n if (!currentWindow) {\n return () => {\n };\n }\n mergeHooks(o2, hooks);\n let mutationObserver;\n if (o2.recordDOM) {\n mutationObserver = initMutationObserver(o2, o2.doc);\n }\n const mousemoveHandler = initMoveObserver(o2);\n const mouseInteractionHandler = initMouseInteractionObserver(o2);\n const scrollHandler = initScrollObserver(o2);\n const viewportResizeHandler = initViewportResizeObserver(o2, {\n win: currentWindow\n });\n const inputHandler = initInputObserver(o2);\n const mediaInteractionHandler = initMediaInteractionObserver(o2);\n let styleSheetObserver = () => {\n };\n let adoptedStyleSheetObserver = () => {\n };\n let styleDeclarationObserver = () => {\n };\n let fontObserver = () => {\n };\n if (o2.recordDOM) {\n styleSheetObserver = initStyleSheetObserver(o2, { win: currentWindow });\n adoptedStyleSheetObserver = initAdoptedStyleSheetObserver(o2, o2.doc);\n styleDeclarationObserver = initStyleDeclarationObserver(o2, {\n win: currentWindow\n });\n if (o2.collectFonts) {\n fontObserver = initFontObserver(o2);\n }\n }\n const selectionObserver = initSelectionObserver(o2);\n const customElementObserver = initCustomElementObserver(o2);\n const pluginHandlers = [];\n for (const plugin3 of o2.plugins) {\n pluginHandlers.push(\n plugin3.observer(plugin3.callback, currentWindow, plugin3.options)\n );\n }\n return callbackWrapper(() => {\n mutationBuffers.forEach((b) => b.reset());\n mutationObserver == null ? void 0 : mutationObserver.disconnect();\n mousemoveHandler();\n mouseInteractionHandler();\n scrollHandler();\n viewportResizeHandler();\n inputHandler();\n mediaInteractionHandler();\n styleSheetObserver();\n adoptedStyleSheetObserver();\n styleDeclarationObserver();\n fontObserver();\n selectionObserver();\n customElementObserver();\n pluginHandlers.forEach((h) => h());\n });\n}\nfunction hasNestedCSSRule(prop) {\n return typeof window[prop] !== \"undefined\";\n}\nfunction canMonkeyPatchNestedCSSRule(prop) {\n return Boolean(\n typeof window[prop] !== \"undefined\" && // Note: Generally, this check _shouldn't_ be necessary\n // However, in some scenarios (e.g. jsdom) this can sometimes fail, so we check for it here\n window[prop].prototype && \"insertRule\" in window[prop].prototype && \"deleteRule\" in window[prop].prototype\n );\n}\nclass CrossOriginIframeMirror {\n constructor(generateIdFn) {\n __publicField(this, \"iframeIdToRemoteIdMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"iframeRemoteIdToIdMap\", /* @__PURE__ */ new WeakMap());\n this.generateIdFn = generateIdFn;\n }\n getId(iframe, remoteId, idToRemoteMap, remoteToIdMap) {\n const idToRemoteIdMap = idToRemoteMap || this.getIdToRemoteIdMap(iframe);\n const remoteIdToIdMap = remoteToIdMap || this.getRemoteIdToIdMap(iframe);\n let id = idToRemoteIdMap.get(remoteId);\n if (!id) {\n id = this.generateIdFn();\n idToRemoteIdMap.set(remoteId, id);\n remoteIdToIdMap.set(id, remoteId);\n }\n return id;\n }\n getIds(iframe, remoteId) {\n const idToRemoteIdMap = this.getIdToRemoteIdMap(iframe);\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n return remoteId.map(\n (id) => this.getId(iframe, id, idToRemoteIdMap, remoteIdToIdMap)\n );\n }\n getRemoteId(iframe, id, map) {\n const remoteIdToIdMap = map || this.getRemoteIdToIdMap(iframe);\n if (typeof id !== \"number\") return id;\n const remoteId = remoteIdToIdMap.get(id);\n if (!remoteId) return -1;\n return remoteId;\n }\n getRemoteIds(iframe, ids) {\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n return ids.map((id) => this.getRemoteId(iframe, id, remoteIdToIdMap));\n }\n reset(iframe) {\n if (!iframe) {\n this.iframeIdToRemoteIdMap = /* @__PURE__ */ new WeakMap();\n this.iframeRemoteIdToIdMap = /* @__PURE__ */ new WeakMap();\n return;\n }\n this.iframeIdToRemoteIdMap.delete(iframe);\n this.iframeRemoteIdToIdMap.delete(iframe);\n }\n getIdToRemoteIdMap(iframe) {\n let idToRemoteIdMap = this.iframeIdToRemoteIdMap.get(iframe);\n if (!idToRemoteIdMap) {\n idToRemoteIdMap = /* @__PURE__ */ new Map();\n this.iframeIdToRemoteIdMap.set(iframe, idToRemoteIdMap);\n }\n return idToRemoteIdMap;\n }\n getRemoteIdToIdMap(iframe) {\n let remoteIdToIdMap = this.iframeRemoteIdToIdMap.get(iframe);\n if (!remoteIdToIdMap) {\n remoteIdToIdMap = /* @__PURE__ */ new Map();\n this.iframeRemoteIdToIdMap.set(iframe, remoteIdToIdMap);\n }\n return remoteIdToIdMap;\n }\n}\nclass IframeManager {\n constructor(options) {\n __publicField(this, \"iframes\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"crossOriginIframeMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"crossOriginIframeMirror\", new CrossOriginIframeMirror(genId));\n __publicField(this, \"crossOriginIframeStyleMirror\");\n __publicField(this, \"crossOriginIframeRootIdMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"mirror\");\n __publicField(this, \"mutationCb\");\n __publicField(this, \"wrappedEmit\");\n __publicField(this, \"loadListener\");\n __publicField(this, \"stylesheetManager\");\n __publicField(this, \"recordCrossOriginIframes\");\n this.mutationCb = options.mutationCb;\n this.wrappedEmit = options.wrappedEmit;\n this.stylesheetManager = options.stylesheetManager;\n this.recordCrossOriginIframes = options.recordCrossOriginIframes;\n this.crossOriginIframeStyleMirror = new CrossOriginIframeMirror(\n this.stylesheetManager.styleMirror.generateId.bind(\n this.stylesheetManager.styleMirror\n )\n );\n this.mirror = options.mirror;\n if (this.recordCrossOriginIframes) {\n window.addEventListener(\"message\", this.handleMessage.bind(this));\n }\n }\n addIframe(iframeEl) {\n this.iframes.set(iframeEl, true);\n if (iframeEl.contentWindow)\n this.crossOriginIframeMap.set(iframeEl.contentWindow, iframeEl);\n }\n addLoadListener(cb) {\n this.loadListener = cb;\n }\n attachIframe(iframeEl, childSn) {\n var _a2, _b;\n this.mutationCb({\n adds: [\n {\n parentId: this.mirror.getId(iframeEl),\n nextId: null,\n node: childSn\n }\n ],\n removes: [],\n texts: [],\n attributes: [],\n isAttachIframe: true\n });\n if (this.recordCrossOriginIframes)\n (_a2 = iframeEl.contentWindow) == null ? void 0 : _a2.addEventListener(\n \"message\",\n this.handleMessage.bind(this)\n );\n (_b = this.loadListener) == null ? void 0 : _b.call(this, iframeEl);\n if (iframeEl.contentDocument && iframeEl.contentDocument.adoptedStyleSheets && iframeEl.contentDocument.adoptedStyleSheets.length > 0)\n this.stylesheetManager.adoptStyleSheets(\n iframeEl.contentDocument.adoptedStyleSheets,\n this.mirror.getId(iframeEl.contentDocument)\n );\n }\n handleMessage(message) {\n const crossOriginMessageEvent = message;\n if (crossOriginMessageEvent.data.type !== \"rrweb\" || // To filter out the rrweb messages which are forwarded by some sites.\n crossOriginMessageEvent.origin !== crossOriginMessageEvent.data.origin)\n return;\n const iframeSourceWindow = message.source;\n if (!iframeSourceWindow) return;\n const iframeEl = this.crossOriginIframeMap.get(message.source);\n if (!iframeEl) return;\n const transformedEvent = this.transformCrossOriginEvent(\n iframeEl,\n crossOriginMessageEvent.data.event\n );\n if (transformedEvent)\n this.wrappedEmit(\n transformedEvent,\n crossOriginMessageEvent.data.isCheckout\n );\n }\n transformCrossOriginEvent(iframeEl, e2) {\n var _a2;\n switch (e2.type) {\n case EventType.FullSnapshot: {\n this.crossOriginIframeMirror.reset(iframeEl);\n this.crossOriginIframeStyleMirror.reset(iframeEl);\n this.replaceIdOnNode(e2.data.node, iframeEl);\n const rootId = e2.data.node.id;\n this.crossOriginIframeRootIdMap.set(iframeEl, rootId);\n this.patchRootIdOnNode(e2.data.node, rootId);\n return {\n timestamp: e2.timestamp,\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Mutation,\n adds: [\n {\n parentId: this.mirror.getId(iframeEl),\n nextId: null,\n node: e2.data.node\n }\n ],\n removes: [],\n texts: [],\n attributes: [],\n isAttachIframe: true\n }\n };\n }\n case EventType.Meta:\n case EventType.Load:\n case EventType.DomContentLoaded: {\n return false;\n }\n case EventType.Plugin: {\n return e2;\n }\n case EventType.Custom: {\n this.replaceIds(\n e2.data.payload,\n iframeEl,\n [\"id\", \"parentId\", \"previousId\", \"nextId\"]\n );\n return e2;\n }\n case EventType.IncrementalSnapshot: {\n switch (e2.data.source) {\n case IncrementalSource.Mutation: {\n e2.data.adds.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\n \"parentId\",\n \"nextId\",\n \"previousId\"\n ]);\n this.replaceIdOnNode(n2.node, iframeEl);\n const rootId = this.crossOriginIframeRootIdMap.get(iframeEl);\n rootId && this.patchRootIdOnNode(n2.node, rootId);\n });\n e2.data.removes.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\"parentId\", \"id\"]);\n });\n e2.data.attributes.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\"id\"]);\n });\n e2.data.texts.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\"id\"]);\n });\n return e2;\n }\n case IncrementalSource.Drag:\n case IncrementalSource.TouchMove:\n case IncrementalSource.MouseMove: {\n e2.data.positions.forEach((p) => {\n this.replaceIds(p, iframeEl, [\"id\"]);\n });\n return e2;\n }\n case IncrementalSource.ViewportResize: {\n return false;\n }\n case IncrementalSource.MediaInteraction:\n case IncrementalSource.MouseInteraction:\n case IncrementalSource.Scroll:\n case IncrementalSource.CanvasMutation:\n case IncrementalSource.Input: {\n this.replaceIds(e2.data, iframeEl, [\"id\"]);\n return e2;\n }\n case IncrementalSource.StyleSheetRule:\n case IncrementalSource.StyleDeclaration: {\n this.replaceIds(e2.data, iframeEl, [\"id\"]);\n this.replaceStyleIds(e2.data, iframeEl, [\"styleId\"]);\n return e2;\n }\n case IncrementalSource.Font: {\n return e2;\n }\n case IncrementalSource.Selection: {\n e2.data.ranges.forEach((range) => {\n this.replaceIds(range, iframeEl, [\"start\", \"end\"]);\n });\n return e2;\n }\n case IncrementalSource.AdoptedStyleSheet: {\n this.replaceIds(e2.data, iframeEl, [\"id\"]);\n this.replaceStyleIds(e2.data, iframeEl, [\"styleIds\"]);\n (_a2 = e2.data.styles) == null ? void 0 : _a2.forEach((style) => {\n this.replaceStyleIds(style, iframeEl, [\"styleId\"]);\n });\n return e2;\n }\n }\n }\n }\n return false;\n }\n replace(iframeMirror, obj, iframeEl, keys) {\n for (const key of keys) {\n if (!Array.isArray(obj[key]) && typeof obj[key] !== \"number\") continue;\n if (Array.isArray(obj[key])) {\n obj[key] = iframeMirror.getIds(\n iframeEl,\n obj[key]\n );\n } else {\n obj[key] = iframeMirror.getId(iframeEl, obj[key]);\n }\n }\n return obj;\n }\n replaceIds(obj, iframeEl, keys) {\n return this.replace(this.crossOriginIframeMirror, obj, iframeEl, keys);\n }\n replaceStyleIds(obj, iframeEl, keys) {\n return this.replace(this.crossOriginIframeStyleMirror, obj, iframeEl, keys);\n }\n replaceIdOnNode(node2, iframeEl) {\n this.replaceIds(node2, iframeEl, [\"id\", \"rootId\"]);\n if (\"childNodes\" in node2) {\n node2.childNodes.forEach((child) => {\n this.replaceIdOnNode(child, iframeEl);\n });\n }\n }\n patchRootIdOnNode(node2, rootId) {\n if (node2.type !== NodeType.Document && !node2.rootId) node2.rootId = rootId;\n if (\"childNodes\" in node2) {\n node2.childNodes.forEach((child) => {\n this.patchRootIdOnNode(child, rootId);\n });\n }\n }\n}\nclass ShadowDomManager {\n constructor(options) {\n __publicField(this, \"shadowDoms\", /* @__PURE__ */ new WeakSet());\n __publicField(this, \"mutationCb\");\n __publicField(this, \"scrollCb\");\n __publicField(this, \"bypassOptions\");\n __publicField(this, \"mirror\");\n __publicField(this, \"restoreHandlers\", []);\n this.mutationCb = options.mutationCb;\n this.scrollCb = options.scrollCb;\n this.bypassOptions = options.bypassOptions;\n this.mirror = options.mirror;\n this.init();\n }\n init() {\n this.reset();\n this.patchAttachShadow(Element, document);\n }\n addShadowRoot(shadowRoot2, doc) {\n if (!isNativeShadowDom(shadowRoot2)) return;\n if (this.shadowDoms.has(shadowRoot2)) return;\n this.shadowDoms.add(shadowRoot2);\n const observer = initMutationObserver(\n {\n ...this.bypassOptions,\n doc,\n mutationCb: this.mutationCb,\n mirror: this.mirror,\n shadowDomManager: this\n },\n shadowRoot2\n );\n this.restoreHandlers.push(() => observer.disconnect());\n this.restoreHandlers.push(\n initScrollObserver({\n ...this.bypassOptions,\n scrollCb: this.scrollCb,\n // https://gist.github.com/praveenpuglia/0832da687ed5a5d7a0907046c9ef1813\n // scroll is not allowed to pass the boundary, so we need to listen the shadow document\n doc: shadowRoot2,\n mirror: this.mirror\n })\n );\n setTimeout(() => {\n if (shadowRoot2.adoptedStyleSheets && shadowRoot2.adoptedStyleSheets.length > 0)\n this.bypassOptions.stylesheetManager.adoptStyleSheets(\n shadowRoot2.adoptedStyleSheets,\n this.mirror.getId(index.host(shadowRoot2))\n );\n this.restoreHandlers.push(\n initAdoptedStyleSheetObserver(\n {\n mirror: this.mirror,\n stylesheetManager: this.bypassOptions.stylesheetManager\n },\n shadowRoot2\n )\n );\n }, 0);\n }\n /**\n * Monkey patch 'attachShadow' of an IFrameElement to observe newly added shadow doms.\n */\n observeAttachShadow(iframeElement) {\n if (!iframeElement.contentWindow || !iframeElement.contentDocument) return;\n this.patchAttachShadow(\n iframeElement.contentWindow.Element,\n iframeElement.contentDocument\n );\n }\n /**\n * Patch 'attachShadow' to observe newly added shadow doms.\n */\n patchAttachShadow(element, doc) {\n const manager = this;\n this.restoreHandlers.push(\n patch(\n element.prototype,\n \"attachShadow\",\n function(original) {\n return function(option) {\n const sRoot = original.call(this, option);\n const shadowRootEl = index.shadowRoot(this);\n if (shadowRootEl && inDom(this))\n manager.addShadowRoot(shadowRootEl, doc);\n return sRoot;\n };\n }\n )\n );\n }\n reset() {\n this.restoreHandlers.forEach((handler) => {\n try {\n handler();\n } catch (e2) {\n }\n });\n this.restoreHandlers = [];\n this.shadowDoms = /* @__PURE__ */ new WeakSet();\n }\n}\nvar chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nvar lookup = typeof Uint8Array === \"undefined\" ? [] : new Uint8Array(256);\nfor (var i$1 = 0; i$1 < chars.length; i$1++) {\n lookup[chars.charCodeAt(i$1)] = i$1;\n}\nvar encode = function(arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i2, len = bytes.length, base64 = \"\";\n for (i2 = 0; i2 < len; i2 += 3) {\n base64 += chars[bytes[i2] >> 2];\n base64 += chars[(bytes[i2] & 3) << 4 | bytes[i2 + 1] >> 4];\n base64 += chars[(bytes[i2 + 1] & 15) << 2 | bytes[i2 + 2] >> 6];\n base64 += chars[bytes[i2 + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + \"=\";\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + \"==\";\n }\n return base64;\n};\nconst canvasVarMap = /* @__PURE__ */ new Map();\nfunction variableListFor$1(ctx, ctor) {\n let contextMap = canvasVarMap.get(ctx);\n if (!contextMap) {\n contextMap = /* @__PURE__ */ new Map();\n canvasVarMap.set(ctx, contextMap);\n }\n if (!contextMap.has(ctor)) {\n contextMap.set(ctor, []);\n }\n return contextMap.get(ctor);\n}\nconst saveWebGLVar = (value, win, ctx) => {\n if (!value || !(isInstanceOfWebGLObject(value, win) || typeof value === \"object\"))\n return;\n const name = value.constructor.name;\n const list2 = variableListFor$1(ctx, name);\n let index2 = list2.indexOf(value);\n if (index2 === -1) {\n index2 = list2.length;\n list2.push(value);\n }\n return index2;\n};\nfunction serializeArg(value, win, ctx) {\n if (value instanceof Array) {\n return value.map((arg) => serializeArg(arg, win, ctx));\n } else if (value === null) {\n return value;\n } else if (value instanceof Float32Array || value instanceof Float64Array || value instanceof Int32Array || value instanceof Uint32Array || value instanceof Uint8Array || value instanceof Uint16Array || value instanceof Int16Array || value instanceof Int8Array || value instanceof Uint8ClampedArray) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [Object.values(value)]\n };\n } else if (\n // SharedArrayBuffer disabled on most browsers due to spectre.\n // More info: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/SharedArrayBuffer\n // value instanceof SharedArrayBuffer ||\n value instanceof ArrayBuffer\n ) {\n const name = value.constructor.name;\n const base64 = encode(value);\n return {\n rr_type: name,\n base64\n };\n } else if (value instanceof DataView) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [\n serializeArg(value.buffer, win, ctx),\n value.byteOffset,\n value.byteLength\n ]\n };\n } else if (value instanceof HTMLImageElement) {\n const name = value.constructor.name;\n const { src } = value;\n return {\n rr_type: name,\n src\n };\n } else if (value instanceof HTMLCanvasElement) {\n const name = \"HTMLImageElement\";\n const src = value.toDataURL();\n return {\n rr_type: name,\n src\n };\n } else if (value instanceof ImageData) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [serializeArg(value.data, win, ctx), value.width, value.height]\n };\n } else if (isInstanceOfWebGLObject(value, win) || typeof value === \"object\") {\n const name = value.constructor.name;\n const index2 = saveWebGLVar(value, win, ctx);\n return {\n rr_type: name,\n index: index2\n };\n }\n return value;\n}\nconst serializeArgs = (args, win, ctx) => {\n return args.map((arg) => serializeArg(arg, win, ctx));\n};\nconst isInstanceOfWebGLObject = (value, win) => {\n const webGLConstructorNames = [\n \"WebGLActiveInfo\",\n \"WebGLBuffer\",\n \"WebGLFramebuffer\",\n \"WebGLProgram\",\n \"WebGLRenderbuffer\",\n \"WebGLShader\",\n \"WebGLShaderPrecisionFormat\",\n \"WebGLTexture\",\n \"WebGLUniformLocation\",\n \"WebGLVertexArrayObject\",\n // In old Chrome versions, value won't be an instanceof WebGLVertexArrayObject.\n \"WebGLVertexArrayObjectOES\"\n ];\n const supportedWebGLConstructorNames = webGLConstructorNames.filter(\n (name) => typeof win[name] === \"function\"\n );\n return Boolean(\n supportedWebGLConstructorNames.find(\n (name) => value instanceof win[name]\n )\n );\n};\nfunction initCanvas2DMutationObserver(cb, win, blockClass, blockSelector) {\n const handlers = [];\n const props2D = Object.getOwnPropertyNames(\n win.CanvasRenderingContext2D.prototype\n );\n for (const prop of props2D) {\n try {\n if (typeof win.CanvasRenderingContext2D.prototype[prop] !== \"function\") {\n continue;\n }\n const restoreHandler = patch(\n win.CanvasRenderingContext2D.prototype,\n prop,\n function(original) {\n return function(...args) {\n if (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\n setTimeout(() => {\n const recordArgs = serializeArgs(args, win, this);\n cb(this.canvas, {\n type: CanvasContext[\"2D\"],\n property: prop,\n args: recordArgs\n });\n }, 0);\n }\n return original.apply(this, args);\n };\n }\n );\n handlers.push(restoreHandler);\n } catch {\n const hookHandler = hookSetter(\n win.CanvasRenderingContext2D.prototype,\n prop,\n {\n set(v2) {\n cb(this.canvas, {\n type: CanvasContext[\"2D\"],\n property: prop,\n args: [v2],\n setter: true\n });\n }\n }\n );\n handlers.push(hookHandler);\n }\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\nfunction getNormalizedContextName(contextType) {\n return contextType === \"experimental-webgl\" ? \"webgl\" : contextType;\n}\nfunction initCanvasContextObserver(win, blockClass, blockSelector, setPreserveDrawingBufferToTrue) {\n const handlers = [];\n try {\n const restoreHandler = patch(\n win.HTMLCanvasElement.prototype,\n \"getContext\",\n function(original) {\n return function(contextType, ...args) {\n if (!isBlocked(this, blockClass, blockSelector, true)) {\n const ctxName = getNormalizedContextName(contextType);\n if (!(\"__context\" in this)) this.__context = ctxName;\n if (setPreserveDrawingBufferToTrue && [\"webgl\", \"webgl2\"].includes(ctxName)) {\n if (args[0] && typeof args[0] === \"object\") {\n const contextAttributes = args[0];\n if (!contextAttributes.preserveDrawingBuffer) {\n contextAttributes.preserveDrawingBuffer = true;\n }\n } else {\n args.splice(0, 1, {\n preserveDrawingBuffer: true\n });\n }\n }\n }\n return original.apply(this, [contextType, ...args]);\n };\n }\n );\n handlers.push(restoreHandler);\n } catch {\n console.error(\"failed to patch HTMLCanvasElement.prototype.getContext\");\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\nfunction patchGLPrototype(prototype, type, cb, blockClass, blockSelector, win) {\n const handlers = [];\n const props = Object.getOwnPropertyNames(prototype);\n for (const prop of props) {\n if (\n //prop.startsWith('get') || // e.g. getProgramParameter, but too risky\n [\n \"isContextLost\",\n \"canvas\",\n \"drawingBufferWidth\",\n \"drawingBufferHeight\"\n ].includes(prop)\n ) {\n continue;\n }\n try {\n if (typeof prototype[prop] !== \"function\") {\n continue;\n }\n const restoreHandler = patch(\n prototype,\n prop,\n function(original) {\n return function(...args) {\n const result2 = original.apply(this, args);\n saveWebGLVar(result2, win, this);\n if (\"tagName\" in this.canvas && !isBlocked(this.canvas, blockClass, blockSelector, true)) {\n const recordArgs = serializeArgs(args, win, this);\n const mutation = {\n type,\n property: prop,\n args: recordArgs\n };\n cb(this.canvas, mutation);\n }\n return result2;\n };\n }\n );\n handlers.push(restoreHandler);\n } catch {\n const hookHandler = hookSetter(prototype, prop, {\n set(v2) {\n cb(this.canvas, {\n type,\n property: prop,\n args: [v2],\n setter: true\n });\n }\n });\n handlers.push(hookHandler);\n }\n }\n return handlers;\n}\nfunction initCanvasWebGLMutationObserver(cb, win, blockClass, blockSelector) {\n const handlers = [];\n handlers.push(\n ...patchGLPrototype(\n win.WebGLRenderingContext.prototype,\n CanvasContext.WebGL,\n cb,\n blockClass,\n blockSelector,\n win\n )\n );\n if (typeof win.WebGL2RenderingContext !== \"undefined\") {\n handlers.push(\n ...patchGLPrototype(\n win.WebGL2RenderingContext.prototype,\n CanvasContext.WebGL2,\n cb,\n blockClass,\n blockSelector,\n win\n )\n );\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\nconst encodedJs = \"KGZ1bmN0aW9uKCkgewogICJ1c2Ugc3RyaWN0IjsKICB2YXIgY2hhcnMgPSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7CiAgdmFyIGxvb2t1cCA9IHR5cGVvZiBVaW50OEFycmF5ID09PSAidW5kZWZpbmVkIiA/IFtdIDogbmV3IFVpbnQ4QXJyYXkoMjU2KTsKICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYXJzLmxlbmd0aDsgaSsrKSB7CiAgICBsb29rdXBbY2hhcnMuY2hhckNvZGVBdChpKV0gPSBpOwogIH0KICB2YXIgZW5jb2RlID0gZnVuY3Rpb24oYXJyYXlidWZmZXIpIHsKICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGFycmF5YnVmZmVyKSwgaTIsIGxlbiA9IGJ5dGVzLmxlbmd0aCwgYmFzZTY0ID0gIiI7CiAgICBmb3IgKGkyID0gMDsgaTIgPCBsZW47IGkyICs9IDMpIHsKICAgICAgYmFzZTY0ICs9IGNoYXJzW2J5dGVzW2kyXSA+PiAyXTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMl0gJiAzKSA8PCA0IHwgYnl0ZXNbaTIgKyAxXSA+PiA0XTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMiArIDFdICYgMTUpIDw8IDIgfCBieXRlc1tpMiArIDJdID4+IDZdOwogICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaTIgKyAyXSAmIDYzXTsKICAgIH0KICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgIj0iOwogICAgfSBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgIj09IjsKICAgIH0KICAgIHJldHVybiBiYXNlNjQ7CiAgfTsKICBjb25zdCBsYXN0QmxvYk1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7CiAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTsKICBhc3luYyBmdW5jdGlvbiBnZXRUcmFuc3BhcmVudEJsb2JGb3Iod2lkdGgsIGhlaWdodCwgZGF0YVVSTE9wdGlvbnMpIHsKICAgIGNvbnN0IGlkID0gYCR7d2lkdGh9LSR7aGVpZ2h0fWA7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBpZiAodHJhbnNwYXJlbnRCbG9iTWFwLmhhcyhpZCkpIHJldHVybiB0cmFuc3BhcmVudEJsb2JNYXAuZ2V0KGlkKTsKICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsKICAgICAgb2Zmc2NyZWVuLmdldENvbnRleHQoIjJkIik7CiAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCBvZmZzY3JlZW4uY29udmVydFRvQmxvYihkYXRhVVJMT3B0aW9ucyk7CiAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gYXdhaXQgYmxvYi5hcnJheUJ1ZmZlcigpOwogICAgICBjb25zdCBiYXNlNjQgPSBlbmNvZGUoYXJyYXlCdWZmZXIpOwogICAgICB0cmFuc3BhcmVudEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICByZXR1cm4gYmFzZTY0OwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuICIiOwogICAgfQogIH0KICBjb25zdCB3b3JrZXIgPSBzZWxmOwogIHdvcmtlci5vbm1lc3NhZ2UgPSBhc3luYyBmdW5jdGlvbihlKSB7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBjb25zdCB7IGlkLCBiaXRtYXAsIHdpZHRoLCBoZWlnaHQsIGRhdGFVUkxPcHRpb25zIH0gPSBlLmRhdGE7CiAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKAogICAgICAgIHdpZHRoLAogICAgICAgIGhlaWdodCwKICAgICAgICBkYXRhVVJMT3B0aW9ucwogICAgICApOwogICAgICBjb25zdCBvZmZzY3JlZW4gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpOwogICAgICBjb25zdCBjdHggPSBvZmZzY3JlZW4uZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgY3R4LmRyYXdJbWFnZShiaXRtYXAsIDAsIDApOwogICAgICBiaXRtYXAuY2xvc2UoKTsKICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IG9mZnNjcmVlbi5jb252ZXJ0VG9CbG9iKGRhdGFVUkxPcHRpb25zKTsKICAgICAgY29uc3QgdHlwZSA9IGJsb2IudHlwZTsKICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBhd2FpdCBibG9iLmFycmF5QnVmZmVyKCk7CiAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7CiAgICAgIGlmICghbGFzdEJsb2JNYXAuaGFzKGlkKSAmJiBhd2FpdCB0cmFuc3BhcmVudEJhc2U2NCA9PT0gYmFzZTY0KSB7CiAgICAgICAgbGFzdEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICAgIHJldHVybiB3b3JrZXIucG9zdE1lc3NhZ2UoeyBpZCB9KTsKICAgICAgfQogICAgICBpZiAobGFzdEJsb2JNYXAuZ2V0KGlkKSA9PT0gYmFzZTY0KSByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQgfSk7CiAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7CiAgICAgICAgaWQsCiAgICAgICAgdHlwZSwKICAgICAgICBiYXNlNjQsCiAgICAgICAgd2lkdGgsCiAgICAgICAgaGVpZ2h0CiAgICAgIH0pOwogICAgICBsYXN0QmxvYk1hcC5zZXQoaWQsIGJhc2U2NCk7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IGUuZGF0YS5pZCB9KTsKICAgIH0KICB9Owp9KSgpOwovLyMgc291cmNlTWFwcGluZ1VSTD1pbWFnZS1iaXRtYXAtZGF0YS11cmwtd29ya2VyLUlKcEM3Z19iLmpzLm1hcAo=\";\nconst decodeBase64 = (base64) => Uint8Array.from(atob(base64), (c2) => c2.charCodeAt(0));\nconst blob = typeof window !== \"undefined\" && window.Blob && new Blob([decodeBase64(encodedJs)], { type: \"text/javascript;charset=utf-8\" });\nfunction WorkerWrapper(options) {\n let objURL;\n try {\n objURL = blob && (window.URL || window.webkitURL).createObjectURL(blob);\n if (!objURL) throw \"\";\n const worker = new Worker(objURL, {\n name: options == null ? void 0 : options.name\n });\n worker.addEventListener(\"error\", () => {\n (window.URL || window.webkitURL).revokeObjectURL(objURL);\n });\n return worker;\n } catch (e2) {\n return new Worker(\n \"data:text/javascript;base64,\" + encodedJs,\n {\n name: options == null ? void 0 : options.name\n }\n );\n } finally {\n objURL && (window.URL || window.webkitURL).revokeObjectURL(objURL);\n }\n}\nclass CanvasManager {\n constructor(options) {\n __publicField(this, \"pendingCanvasMutations\", /* @__PURE__ */ new Map());\n __publicField(this, \"rafStamps\", { latestId: 0, invokeId: null });\n __publicField(this, \"mirror\");\n __publicField(this, \"mutationCb\");\n __publicField(this, \"resetObservers\");\n __publicField(this, \"frozen\", false);\n __publicField(this, \"locked\", false);\n __publicField(this, \"processMutation\", (target, mutation) => {\n const newFrame = this.rafStamps.invokeId && this.rafStamps.latestId !== this.rafStamps.invokeId;\n if (newFrame || !this.rafStamps.invokeId)\n this.rafStamps.invokeId = this.rafStamps.latestId;\n if (!this.pendingCanvasMutations.has(target)) {\n this.pendingCanvasMutations.set(target, []);\n }\n this.pendingCanvasMutations.get(target).push(mutation);\n });\n const {\n sampling = \"all\",\n win,\n blockClass,\n blockSelector,\n recordCanvas,\n dataURLOptions\n } = options;\n this.mutationCb = options.mutationCb;\n this.mirror = options.mirror;\n if (recordCanvas && sampling === \"all\")\n this.initCanvasMutationObserver(win, blockClass, blockSelector);\n if (recordCanvas && typeof sampling === \"number\")\n this.initCanvasFPSObserver(sampling, win, blockClass, blockSelector, {\n dataURLOptions\n });\n }\n reset() {\n this.pendingCanvasMutations.clear();\n this.resetObservers && this.resetObservers();\n }\n freeze() {\n this.frozen = true;\n }\n unfreeze() {\n this.frozen = false;\n }\n lock() {\n this.locked = true;\n }\n unlock() {\n this.locked = false;\n }\n initCanvasFPSObserver(fps, win, blockClass, blockSelector, options) {\n const canvasContextReset = initCanvasContextObserver(\n win,\n blockClass,\n blockSelector,\n true\n );\n const snapshotInProgressMap = /* @__PURE__ */ new Map();\n const worker = new WorkerWrapper();\n worker.onmessage = (e2) => {\n const { id } = e2.data;\n snapshotInProgressMap.set(id, false);\n if (!(\"base64\" in e2.data)) return;\n const { base64, type, width, height } = e2.data;\n this.mutationCb({\n id,\n type: CanvasContext[\"2D\"],\n commands: [\n {\n property: \"clearRect\",\n // wipe canvas\n args: [0, 0, width, height]\n },\n {\n property: \"drawImage\",\n // draws (semi-transparent) image\n args: [\n {\n rr_type: \"ImageBitmap\",\n args: [\n {\n rr_type: \"Blob\",\n data: [{ rr_type: \"ArrayBuffer\", base64 }],\n type\n }\n ]\n },\n 0,\n 0\n ]\n }\n ]\n });\n };\n const timeBetweenSnapshots = 1e3 / fps;\n let lastSnapshotTime = 0;\n let rafId;\n const getCanvas = () => {\n const matchedCanvas = [];\n win.document.querySelectorAll(\"canvas\").forEach((canvas) => {\n if (!isBlocked(canvas, blockClass, blockSelector, true)) {\n matchedCanvas.push(canvas);\n }\n });\n return matchedCanvas;\n };\n const takeCanvasSnapshots = (timestamp) => {\n if (lastSnapshotTime && timestamp - lastSnapshotTime < timeBetweenSnapshots) {\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n return;\n }\n lastSnapshotTime = timestamp;\n getCanvas().forEach(async (canvas) => {\n var _a2;\n const id = this.mirror.getId(canvas);\n if (snapshotInProgressMap.get(id)) return;\n if (canvas.width === 0 || canvas.height === 0) return;\n snapshotInProgressMap.set(id, true);\n if ([\"webgl\", \"webgl2\"].includes(canvas.__context)) {\n const context = canvas.getContext(canvas.__context);\n if (((_a2 = context == null ? void 0 : context.getContextAttributes()) == null ? void 0 : _a2.preserveDrawingBuffer) === false) {\n context.clear(context.COLOR_BUFFER_BIT);\n }\n }\n const bitmap = await createImageBitmap(canvas);\n worker.postMessage(\n {\n id,\n bitmap,\n width: canvas.width,\n height: canvas.height,\n dataURLOptions: options.dataURLOptions\n },\n [bitmap]\n );\n });\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n };\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n this.resetObservers = () => {\n canvasContextReset();\n cancelAnimationFrame(rafId);\n };\n }\n initCanvasMutationObserver(win, blockClass, blockSelector) {\n this.startRAFTimestamping();\n this.startPendingCanvasMutationFlusher();\n const canvasContextReset = initCanvasContextObserver(\n win,\n blockClass,\n blockSelector,\n false\n );\n const canvas2DReset = initCanvas2DMutationObserver(\n this.processMutation.bind(this),\n win,\n blockClass,\n blockSelector\n );\n const canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(\n this.processMutation.bind(this),\n win,\n blockClass,\n blockSelector\n );\n this.resetObservers = () => {\n canvasContextReset();\n canvas2DReset();\n canvasWebGL1and2Reset();\n };\n }\n startPendingCanvasMutationFlusher() {\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\n }\n startRAFTimestamping() {\n const setLatestRAFTimestamp = (timestamp) => {\n this.rafStamps.latestId = timestamp;\n requestAnimationFrame(setLatestRAFTimestamp);\n };\n requestAnimationFrame(setLatestRAFTimestamp);\n }\n flushPendingCanvasMutations() {\n this.pendingCanvasMutations.forEach(\n (_values, canvas) => {\n const id = this.mirror.getId(canvas);\n this.flushPendingCanvasMutationFor(canvas, id);\n }\n );\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\n }\n flushPendingCanvasMutationFor(canvas, id) {\n if (this.frozen || this.locked) {\n return;\n }\n const valuesWithType = this.pendingCanvasMutations.get(canvas);\n if (!valuesWithType || id === -1) return;\n const values = valuesWithType.map((value) => {\n const { type: type2, ...rest } = value;\n return rest;\n });\n const { type } = valuesWithType[0];\n this.mutationCb({ id, type, commands: values });\n this.pendingCanvasMutations.delete(canvas);\n }\n}\nclass StylesheetManager {\n constructor(options) {\n __publicField(this, \"trackedLinkElements\", /* @__PURE__ */ new WeakSet());\n __publicField(this, \"mutationCb\");\n __publicField(this, \"adoptedStyleSheetCb\");\n __publicField(this, \"styleMirror\", new StyleSheetMirror());\n this.mutationCb = options.mutationCb;\n this.adoptedStyleSheetCb = options.adoptedStyleSheetCb;\n }\n attachLinkElement(linkEl, childSn) {\n if (\"_cssText\" in childSn.attributes)\n this.mutationCb({\n adds: [],\n removes: [],\n texts: [],\n attributes: [\n {\n id: childSn.id,\n attributes: childSn.attributes\n }\n ]\n });\n this.trackLinkElement(linkEl);\n }\n trackLinkElement(linkEl) {\n if (this.trackedLinkElements.has(linkEl)) return;\n this.trackedLinkElements.add(linkEl);\n this.trackStylesheetInLinkElement(linkEl);\n }\n adoptStyleSheets(sheets, hostId) {\n if (sheets.length === 0) return;\n const adoptedStyleSheetData = {\n id: hostId,\n styleIds: []\n };\n const styles = [];\n for (const sheet of sheets) {\n let styleId;\n if (!this.styleMirror.has(sheet)) {\n styleId = this.styleMirror.add(sheet);\n styles.push({\n styleId,\n rules: Array.from(sheet.rules || CSSRule, (r2, index2) => ({\n rule: stringifyRule(r2, sheet.href),\n index: index2\n }))\n });\n } else styleId = this.styleMirror.getId(sheet);\n adoptedStyleSheetData.styleIds.push(styleId);\n }\n if (styles.length > 0) adoptedStyleSheetData.styles = styles;\n this.adoptedStyleSheetCb(adoptedStyleSheetData);\n }\n reset() {\n this.styleMirror.reset();\n this.trackedLinkElements = /* @__PURE__ */ new WeakSet();\n }\n // TODO: take snapshot on stylesheet reload by applying event listener\n trackStylesheetInLinkElement(_linkEl) {\n }\n}\nclass ProcessedNodeManager {\n constructor() {\n __publicField(this, \"nodeMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"active\", false);\n }\n inOtherBuffer(node2, thisBuffer) {\n const buffers = this.nodeMap.get(node2);\n return buffers && Array.from(buffers).some((buffer) => buffer !== thisBuffer);\n }\n add(node2, buffer) {\n if (!this.active) {\n this.active = true;\n requestAnimationFrame(() => {\n this.nodeMap = /* @__PURE__ */ new WeakMap();\n this.active = false;\n });\n }\n this.nodeMap.set(node2, (this.nodeMap.get(node2) || /* @__PURE__ */ new Set()).add(buffer));\n }\n destroy() {\n }\n}\nlet wrappedEmit;\nlet takeFullSnapshot$1;\nlet canvasManager;\nlet recording = false;\ntry {\n if (Array.from([1], (x2) => x2 * 2)[0] !== 2) {\n const cleanFrame = document.createElement(\"iframe\");\n document.body.appendChild(cleanFrame);\n Array.from = ((_a = cleanFrame.contentWindow) == null ? void 0 : _a.Array.from) || Array.from;\n document.body.removeChild(cleanFrame);\n }\n} catch (err) {\n console.debug(\"Unable to override Array.from\", err);\n}\nconst mirror = createMirror$2();\nfunction record(options = {}) {\n const {\n emit,\n checkoutEveryNms,\n checkoutEveryNth,\n blockClass = \"rr-block\",\n blockSelector = null,\n ignoreClass = \"rr-ignore\",\n ignoreSelector = null,\n maskTextClass = \"rr-mask\",\n maskTextSelector = null,\n inlineStylesheet = true,\n maskAllInputs,\n maskInputOptions: _maskInputOptions,\n slimDOMOptions: _slimDOMOptions,\n maskInputFn,\n maskTextFn,\n hooks,\n packFn,\n sampling = {},\n dataURLOptions = {},\n mousemoveWait,\n recordDOM = true,\n recordCanvas = false,\n recordCrossOriginIframes = false,\n recordAfter = options.recordAfter === \"DOMContentLoaded\" ? options.recordAfter : \"load\",\n userTriggeredOnInput = false,\n collectFonts = false,\n inlineImages = false,\n plugins,\n keepIframeSrcFn = () => false,\n ignoreCSSAttributes = /* @__PURE__ */ new Set([]),\n errorHandler: errorHandler2\n } = options;\n registerErrorHandler(errorHandler2);\n const inEmittingFrame = recordCrossOriginIframes ? window.parent === window : true;\n let passEmitsToParent = false;\n if (!inEmittingFrame) {\n try {\n if (window.parent.document) {\n passEmitsToParent = false;\n }\n } catch (e2) {\n passEmitsToParent = true;\n }\n }\n if (inEmittingFrame && !emit) {\n throw new Error(\"emit function is required\");\n }\n if (!inEmittingFrame && !passEmitsToParent) {\n return () => {\n };\n }\n if (mousemoveWait !== void 0 && sampling.mousemove === void 0) {\n sampling.mousemove = mousemoveWait;\n }\n mirror.reset();\n const maskInputOptions = maskAllInputs === true ? {\n color: true,\n date: true,\n \"datetime-local\": true,\n email: true,\n month: true,\n number: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true,\n textarea: true,\n select: true,\n password: true\n } : _maskInputOptions !== void 0 ? _maskInputOptions : { password: true };\n const slimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === \"all\" ? {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaVerification: true,\n // the following are off for slimDOMOptions === true,\n // as they destroy some (hidden) info:\n headMetaAuthorship: _slimDOMOptions === \"all\",\n headMetaDescKeywords: _slimDOMOptions === \"all\",\n headTitleMutations: _slimDOMOptions === \"all\"\n } : _slimDOMOptions ? _slimDOMOptions : {};\n polyfill$1();\n let lastFullSnapshotEvent;\n let incrementalSnapshotCount = 0;\n const eventProcessor = (e2) => {\n for (const plugin3 of plugins || []) {\n if (plugin3.eventProcessor) {\n e2 = plugin3.eventProcessor(e2);\n }\n }\n if (packFn && // Disable packing events which will be emitted to parent frames.\n !passEmitsToParent) {\n e2 = packFn(e2);\n }\n return e2;\n };\n wrappedEmit = (r2, isCheckout) => {\n var _a2;\n const e2 = r2;\n e2.timestamp = nowTimestamp();\n if (((_a2 = mutationBuffers[0]) == null ? void 0 : _a2.isFrozen()) && e2.type !== EventType.FullSnapshot && !(e2.type === EventType.IncrementalSnapshot && e2.data.source === IncrementalSource.Mutation)) {\n mutationBuffers.forEach((buf) => buf.unfreeze());\n }\n if (inEmittingFrame) {\n emit == null ? void 0 : emit(eventProcessor(e2), isCheckout);\n } else if (passEmitsToParent) {\n const message = {\n type: \"rrweb\",\n event: eventProcessor(e2),\n origin: window.location.origin,\n isCheckout\n };\n window.parent.postMessage(message, \"*\");\n }\n if (e2.type === EventType.FullSnapshot) {\n lastFullSnapshotEvent = e2;\n incrementalSnapshotCount = 0;\n } else if (e2.type === EventType.IncrementalSnapshot) {\n if (e2.data.source === IncrementalSource.Mutation && e2.data.isAttachIframe) {\n return;\n }\n incrementalSnapshotCount++;\n const exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\n const exceedTime = checkoutEveryNms && e2.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\n if (exceedCount || exceedTime) {\n takeFullSnapshot$1(true);\n }\n }\n };\n const wrappedMutationEmit = (m) => {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Mutation,\n ...m\n }\n });\n };\n const wrappedScrollEmit = (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Scroll,\n ...p\n }\n });\n const wrappedCanvasMutationEmit = (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.CanvasMutation,\n ...p\n }\n });\n const wrappedAdoptedStyleSheetEmit = (a2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.AdoptedStyleSheet,\n ...a2\n }\n });\n const stylesheetManager = new StylesheetManager({\n mutationCb: wrappedMutationEmit,\n adoptedStyleSheetCb: wrappedAdoptedStyleSheetEmit\n });\n const iframeManager = new IframeManager({\n mirror,\n mutationCb: wrappedMutationEmit,\n stylesheetManager,\n recordCrossOriginIframes,\n wrappedEmit\n });\n for (const plugin3 of plugins || []) {\n if (plugin3.getMirror)\n plugin3.getMirror({\n nodeMirror: mirror,\n crossOriginIframeMirror: iframeManager.crossOriginIframeMirror,\n crossOriginIframeStyleMirror: iframeManager.crossOriginIframeStyleMirror\n });\n }\n const processedNodeManager = new ProcessedNodeManager();\n canvasManager = new CanvasManager({\n recordCanvas,\n mutationCb: wrappedCanvasMutationEmit,\n win: window,\n blockClass,\n blockSelector,\n mirror,\n sampling: sampling.canvas,\n dataURLOptions\n });\n const shadowDomManager = new ShadowDomManager({\n mutationCb: wrappedMutationEmit,\n scrollCb: wrappedScrollEmit,\n bypassOptions: {\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n inlineStylesheet,\n maskInputOptions,\n dataURLOptions,\n maskTextFn,\n maskInputFn,\n recordCanvas,\n inlineImages,\n sampling,\n slimDOMOptions,\n iframeManager,\n stylesheetManager,\n canvasManager,\n keepIframeSrcFn,\n processedNodeManager\n },\n mirror\n });\n takeFullSnapshot$1 = (isCheckout = false) => {\n if (!recordDOM) {\n return;\n }\n wrappedEmit(\n {\n type: EventType.Meta,\n data: {\n href: window.location.href,\n width: getWindowWidth(),\n height: getWindowHeight()\n }\n },\n isCheckout\n );\n stylesheetManager.reset();\n shadowDomManager.init();\n mutationBuffers.forEach((buf) => buf.lock());\n const node2 = snapshot(document, {\n mirror,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n inlineStylesheet,\n maskAllInputs: maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOM: slimDOMOptions,\n dataURLOptions,\n recordCanvas,\n inlineImages,\n onSerialize: (n2) => {\n if (isSerializedIframe(n2, mirror)) {\n iframeManager.addIframe(n2);\n }\n if (isSerializedStylesheet(n2, mirror)) {\n stylesheetManager.trackLinkElement(n2);\n }\n if (hasShadowRoot(n2)) {\n shadowDomManager.addShadowRoot(index.shadowRoot(n2), document);\n }\n },\n onIframeLoad: (iframe, childSn) => {\n iframeManager.attachIframe(iframe, childSn);\n shadowDomManager.observeAttachShadow(iframe);\n },\n onStylesheetLoad: (linkEl, childSn) => {\n stylesheetManager.attachLinkElement(linkEl, childSn);\n },\n keepIframeSrcFn\n });\n if (!node2) {\n return console.warn(\"Failed to snapshot the document\");\n }\n wrappedEmit(\n {\n type: EventType.FullSnapshot,\n data: {\n node: node2,\n initialOffset: getWindowScroll(window)\n }\n },\n isCheckout\n );\n mutationBuffers.forEach((buf) => buf.unlock());\n if (document.adoptedStyleSheets && document.adoptedStyleSheets.length > 0)\n stylesheetManager.adoptStyleSheets(\n document.adoptedStyleSheets,\n mirror.getId(document)\n );\n };\n try {\n const handlers = [];\n const observe = (doc) => {\n var _a2;\n return callbackWrapper(initObservers)(\n {\n mutationCb: wrappedMutationEmit,\n mousemoveCb: (positions, source) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source,\n positions\n }\n }),\n mouseInteractionCb: (d) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.MouseInteraction,\n ...d\n }\n }),\n scrollCb: wrappedScrollEmit,\n viewportResizeCb: (d) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.ViewportResize,\n ...d\n }\n }),\n inputCb: (v2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Input,\n ...v2\n }\n }),\n mediaInteractionCb: (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.MediaInteraction,\n ...p\n }\n }),\n styleSheetRuleCb: (r2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.StyleSheetRule,\n ...r2\n }\n }),\n styleDeclarationCb: (r2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.StyleDeclaration,\n ...r2\n }\n }),\n canvasMutationCb: wrappedCanvasMutationEmit,\n fontCb: (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Font,\n ...p\n }\n }),\n selectionCb: (p) => {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Selection,\n ...p\n }\n });\n },\n customElementCb: (c2) => {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.CustomElement,\n ...c2\n }\n });\n },\n blockClass,\n ignoreClass,\n ignoreSelector,\n maskTextClass,\n maskTextSelector,\n maskInputOptions,\n inlineStylesheet,\n sampling,\n recordDOM,\n recordCanvas,\n inlineImages,\n userTriggeredOnInput,\n collectFonts,\n doc,\n maskInputFn,\n maskTextFn,\n keepIframeSrcFn,\n blockSelector,\n slimDOMOptions,\n dataURLOptions,\n mirror,\n iframeManager,\n stylesheetManager,\n shadowDomManager,\n processedNodeManager,\n canvasManager,\n ignoreCSSAttributes,\n plugins: ((_a2 = plugins == null ? void 0 : plugins.filter((p) => p.observer)) == null ? void 0 : _a2.map((p) => ({\n observer: p.observer,\n options: p.options,\n callback: (payload) => wrappedEmit({\n type: EventType.Plugin,\n data: {\n plugin: p.name,\n payload\n }\n })\n }))) || []\n },\n hooks\n );\n };\n iframeManager.addLoadListener((iframeEl) => {\n try {\n handlers.push(observe(iframeEl.contentDocument));\n } catch (error) {\n console.warn(error);\n }\n });\n const init = () => {\n takeFullSnapshot$1();\n handlers.push(observe(document));\n recording = true;\n };\n if (document.readyState === \"interactive\" || document.readyState === \"complete\") {\n init();\n } else {\n handlers.push(\n on(\"DOMContentLoaded\", () => {\n wrappedEmit({\n type: EventType.DomContentLoaded,\n data: {}\n });\n if (recordAfter === \"DOMContentLoaded\") init();\n })\n );\n handlers.push(\n on(\n \"load\",\n () => {\n wrappedEmit({\n type: EventType.Load,\n data: {}\n });\n if (recordAfter === \"load\") init();\n },\n window\n )\n );\n }\n return () => {\n handlers.forEach((h) => h());\n processedNodeManager.destroy();\n recording = false;\n unregisterErrorHandler();\n };\n } catch (error) {\n console.warn(error);\n }\n}\nrecord.addCustomEvent = (tag, payload) => {\n if (!recording) {\n throw new Error(\"please add custom event after start recording\");\n }\n wrappedEmit({\n type: EventType.Custom,\n data: {\n tag,\n payload\n }\n });\n};\nrecord.freezePage = () => {\n mutationBuffers.forEach((buf) => buf.freeze());\n};\nrecord.takeFullSnapshot = (isCheckout) => {\n if (!recording) {\n throw new Error(\"please take full snapshot after start recording\");\n }\n takeFullSnapshot$1(isCheckout);\n};\nrecord.mirror = mirror;\nvar n;\n!function(t2) {\n t2[t2.NotStarted = 0] = \"NotStarted\", t2[t2.Running = 1] = \"Running\", t2[t2.Stopped = 2] = \"Stopped\";\n}(n || (n = {}));\nexport {\n record\n};\n//# sourceMappingURL=record.js.map\n","import { isMobile } from \"./GleapHelper\";\nimport { record } from \"@rrweb/record\";\n\nexport default class GleapReplayRecorder {\n startDate = undefined;\n events = [];\n bufferSize = 0;\n stopFunction = undefined;\n customOptions = {};\n\n // GleapReplayRecorder singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapReplayRecorder();\n return this.instance;\n } else {\n return this.instance;\n }\n }\n\n constructor() {}\n\n setOptions(options) {\n this.customOptions = options;\n }\n\n /**\n * Start replays\n * @returns\n */\n start() {\n this.stop();\n\n this.startDate = Date.now();\n var events = this.events;\n\n var options = {\n inlineStylesheet: true,\n blockClass: \"gl-block\",\n ignoreClass: \"gl-ignore\",\n maskTextClass: \"gl-mask\",\n dataURLOptions: {\n quality: 0.7,\n },\n recordCanvas: false,\n sampling: {\n scroll: 150,\n mouseInteraction: {\n MouseUp: false,\n MouseDown: false,\n Click: true,\n ContextMenu: true,\n DblClick: true,\n Focus: true,\n Blur: true,\n TouchStart: true,\n TouchEnd: false,\n },\n },\n collectFonts: false,\n recordCrossOriginIframes: false,\n };\n\n try {\n this.stopFunction = record({\n ...options,\n ...this.customOptions,\n emit(rrwebEvent) {\n const { event } = ensureMaxMessageSize(rrwebEvent);\n events.push(event);\n },\n });\n } catch (e) {\n console.error(e);\n }\n }\n\n /**\n * Stop replays\n * @returns\n */\n stop() {\n if (this.stopFunction) {\n this.stopFunction();\n }\n\n this.startDate = undefined;\n this.events = [];\n this.bufferSize = 0;\n }\n\n /**\n * Get the current replay data\n * @returns {Promise}\n */\n getReplayData() {\n const replayResult = {\n startDate: this.startDate,\n events: this.events,\n baseUrl: window.location.origin,\n width: window.innerWidth,\n height: window.innerHeight,\n isMobile: isMobile(),\n type: \"rrweb\",\n };\n\n return replayResult;\n }\n}\n\nexport function ensureMaxMessageSize(data) {\n let stringifiedData = JSON.stringify(data);\n if (stringifiedData.length > 4000000) {\n const dataURIRegex = /data:([\\w\\/\\-\\.]+);(\\w+),([^)\"]*)/gim;\n const matches = stringifiedData.matchAll(dataURIRegex);\n for (const match of matches) {\n if (match[1].toLocaleLowerCase().slice(0, 6) === \"image/\") {\n stringifiedData = stringifiedData.replace(\n match[0],\n \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAQSURBVHgBAQUA+v8ABRg5/wHSAVZN1mnaAAAAAElFTkSuQmCC\"\n );\n } else {\n stringifiedData = stringifiedData.replace(match[0], \"\");\n }\n }\n }\n return { event: JSON.parse(stringifiedData), size: stringifiedData.length };\n}\n","export class ScreenDrawer {\n rerender;\n svgElement = null;\n path = null;\n strPath;\n strokeWidth = 12;\n strokeWidthRect = 6;\n bufferSize = 4;\n buffer = [];\n startPoint = null;\n tool = \"rect\";\n color = \"#EB144C\";\n mouseDown = null;\n mouseMove = null;\n mouseUp = null;\n resizeListener = null;\n pathBuffer = [];\n\n constructor(rerender) {\n const self = this;\n\n this.rerender = rerender;\n\n this.svgElement = document.querySelector(\".bb-capture-svg\");\n this.svgElement.style.minHeight = `${document.documentElement.scrollHeight}px`;\n\n // Window resize listener.\n this.resizeListener = function (e) {\n self.svgElement.style.minHeight = `${document.documentElement.scrollHeight}px`;\n };\n window.addEventListener(\"resize\", this.resizeListener, true);\n\n this.mouseDown = function (e) {\n e.preventDefault();\n\n const colorpicker = document.querySelector(\n \".bb-capture-toolbar-item-colorpicker\"\n );\n if (colorpicker) {\n colorpicker.style.display = \"none\";\n }\n\n self.fadeOutToolbar();\n if (self.tool === \"pen\" || self.tool === \"blur\") {\n self.mouseDownPen(e);\n }\n if (self.tool === \"rect\") {\n self.mouseDownRect(e);\n }\n };\n\n this.mouseMove = function (e) {\n e.preventDefault();\n if (self.tool === \"pen\" || self.tool === \"blur\") {\n self.mouseMovePen(e);\n }\n if (self.tool === \"rect\") {\n self.mouseMoveRect(e);\n }\n };\n\n this.mouseUp = function (e) {\n e.preventDefault();\n self.fadeInToolbar();\n if (self.tool === \"pen\" || self.tool === \"blur\") {\n self.mouseUpPen(e);\n }\n if (self.tool === \"rect\") {\n self.mouseUpRect(e);\n }\n };\n\n this.svgElement.addEventListener(\"mousedown\", this.mouseDown);\n this.svgElement.addEventListener(\"mousemove\", this.mouseMove);\n this.svgElement.addEventListener(\"mouseup\", this.mouseUp);\n this.svgElement.addEventListener(\"touchstart\", this.mouseDown, false);\n this.svgElement.addEventListener(\"touchmove\", this.mouseMove, false);\n this.svgElement.addEventListener(\"touchend\", this.mouseUp, false);\n\n setTimeout(() => {\n this.rerender();\n }, 100);\n }\n\n clear() {\n if (this.svgElement) {\n while (this.svgElement.firstChild) {\n this.svgElement.firstChild.remove();\n }\n }\n }\n\n destroy() {\n this.svgElement.removeEventListener(\"mousedown\", this.mouseDown);\n this.svgElement.removeEventListener(\"mousemove\", this.mouseMove);\n this.svgElement.removeEventListener(\"mouseup\", this.mouseUp);\n this.svgElement.removeEventListener(\"touchstart\", this.mouseDown);\n this.svgElement.removeEventListener(\"touchmove\", this.mouseMove);\n this.svgElement.removeEventListener(\"touchend\", this.mouseUp);\n window.removeEventListener(\"resize\", this.resizeListener);\n }\n\n mouseUpPen() {\n if (this.path) {\n this.path = null;\n }\n }\n\n mouseUpRect() {\n if (this.path) {\n this.path = null;\n }\n }\n\n mouseMovePen(e) {\n if (this.path) {\n this.appendToBuffer(this.getMousePosition(e));\n this.updateSvgPath();\n }\n }\n\n mouseMoveRect(e) {\n if (this.path) {\n var p = this.getMousePosition(e);\n var w = Math.abs(p.x - this.startPoint.x);\n var h = Math.abs(p.y - this.startPoint.y);\n var x = p.x;\n var y = p.y;\n if (p.x > this.startPoint.x) {\n x = this.startPoint.x;\n }\n if (p.y > this.startPoint.y) {\n y = this.startPoint.y;\n }\n\n this.path.setAttributeNS(null, \"x\", x);\n this.path.setAttributeNS(null, \"y\", y);\n this.path.setAttributeNS(null, \"width\", w);\n this.path.setAttributeNS(null, \"height\", h);\n }\n }\n\n mouseDownRect(e) {\n this.path = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n this.path.setAttribute(\"fill\", \"none\");\n this.path.setAttribute(\"stroke\", this.color);\n this.path.setAttribute(\"stroke-linecap\", \"round\");\n this.path.setAttribute(\"stroke-width\", this.strokeWidthRect);\n\n this.startPoint = this.getMousePosition(e);\n this.appendPathToSvg(this.path);\n }\n\n mouseDownPen(e) {\n var color = this.color + \"AA\";\n var strokeWidth = this.strokeWidth;\n\n if (this.tool === \"blur\") {\n color = \"#000000\";\n strokeWidth = 40;\n }\n\n this.path = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this.path.setAttribute(\"fill\", \"none\");\n this.path.setAttribute(\"stroke\", color);\n this.path.setAttribute(\"stroke-linecap\", \"round\");\n this.path.setAttribute(\"stroke-width\", strokeWidth);\n this.buffer = [];\n var pt = this.getMousePosition(e);\n this.appendToBuffer(pt);\n this.strPath = \"M\" + pt.x + \" \" + pt.y;\n this.path.setAttribute(\"d\", this.strPath);\n this.appendPathToSvg(this.path);\n }\n\n setTool(tool) {\n this.tool = tool;\n }\n\n setColor(color) {\n this.color = color;\n }\n\n getMousePosition(e) {\n if (e.touches && e.touches.length > 0) {\n return {\n x: e.touches[0].clientX,\n y: e.touches[0].clientY,\n };\n }\n\n return {\n x: e.clientX,\n y: e.clientY,\n };\n }\n\n // Calculate the average point, starting at offset in the buffer\n getAveragePoint(offset) {\n var len = this.buffer.length;\n if (len % 2 === 1 || len >= this.bufferSize) {\n var totalX = 0;\n var totalY = 0;\n var pt, i;\n var count = 0;\n for (i = offset; i < len; i++) {\n count++;\n pt = this.buffer[i];\n totalX += pt.x;\n totalY += pt.y;\n }\n return {\n x: totalX / count,\n y: totalY / count,\n };\n }\n return null;\n }\n\n updateSvgPath() {\n var pt = this.getAveragePoint(0);\n\n if (pt) {\n // Get the smoothed part of the path that will not change\n this.strPath += \" L\" + pt.x + \" \" + pt.y;\n\n // Get the last part of the path (close to the current mouse position)\n // This part will change if the mouse moves again\n var tmpPath = \"\";\n for (var offset = 2; offset < this.buffer.length; offset += 2) {\n pt = this.getAveragePoint(offset);\n tmpPath += \" L\" + pt.x + \" \" + pt.y;\n }\n\n // Set the complete current path coordinates\n this.path.setAttribute(\"d\", this.strPath + tmpPath);\n }\n }\n\n appendToBuffer(pt) {\n this.buffer.push(pt);\n while (this.buffer.length > this.bufferSize) {\n this.buffer.shift();\n }\n }\n\n appendPathToSvg(path) {\n this.svgElement.appendChild(path);\n this.pathBuffer.push(path);\n this.rerender();\n }\n\n removeLastAddedPathFromSvg() {\n if (this.pathBuffer.length <= 0 || !this.svgElement) {\n return;\n }\n\n this.svgElement.removeChild(this.pathBuffer[this.pathBuffer.length - 1]);\n\n this.pathBuffer.pop();\n\n this.rerender();\n }\n\n fadeOutToolbar() {\n var fadeTarget = document.querySelector(\".bb-capture-toolbar\");\n if (fadeTarget) {\n fadeTarget.style.opacity = 0;\n fadeTarget.style.pointerEvents = \"none\";\n }\n }\n\n fadeInToolbar() {\n var fadeTarget = document.querySelector(\".bb-capture-toolbar\");\n if (fadeTarget) {\n fadeTarget.style.opacity = 1;\n fadeTarget.style.pointerEvents = \"auto\";\n }\n }\n}\n","export class GleapScrollStopper {\n keys = { 37: 1, 38: 1, 39: 1, 40: 1 };\n supportsPassive = false;\n wheelOpt = this.supportsPassive ? { passive: false } : false;\n wheelEvent =\n \"onwheel\" in document.createElement(\"div\") ? \"wheel\" : \"mousewheel\";\n scrollDisabled = false;\n\n // GleapScrollStopper singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapScrollStopper();\n return this.instance;\n } else {\n return this.instance;\n }\n }\n\n constructor() {\n const self = this;\n try {\n window.addEventListener(\n \"test\",\n null,\n Object.defineProperty({}, \"passive\", {\n get: function () {\n self.supportsPassive = true;\n self.wheelOpt = self.supportsPassive ? { passive: false } : false;\n },\n })\n );\n } catch (e) {}\n }\n\n preventDefault(e) {\n e.preventDefault();\n }\n\n preventDefaultForScrollKeys(e) {\n if (this.keys && this.keys[e.keyCode]) {\n this.preventDefault(e);\n return false;\n }\n }\n\n static disableScroll() {\n const instance = this.getInstance();\n if (instance.scrollDisabled) {\n return;\n }\n\n instance.scrollDisabled = true;\n\n window.addEventListener(\"DOMMouseScroll\", instance.preventDefault, false); // older FF\n window.addEventListener(\n instance.wheelEvent,\n instance.preventDefault,\n instance.wheelOpt\n ); // modern desktop\n window.addEventListener(\n \"touchmove\",\n instance.preventDefault,\n instance.wheelOpt\n ); // mobile\n window.addEventListener(\n \"keydown\",\n instance.preventDefaultForScrollKeys,\n false\n );\n }\n\n static enableScroll() {\n const instance = this.getInstance();\n if (!instance.scrollDisabled) {\n return;\n }\n\n instance.scrollDisabled = false;\n window.removeEventListener(\n \"DOMMouseScroll\",\n instance.preventDefault,\n false\n );\n window.removeEventListener(\n instance.wheelEvent,\n instance.preventDefault,\n instance.wheelOpt\n );\n window.removeEventListener(\n \"touchmove\",\n instance.preventDefault,\n instance.wheelOpt\n );\n window.removeEventListener(\n \"keydown\",\n instance.preventDefaultForScrollKeys,\n false\n );\n }\n}\n","import Gleap, { GleapTranslationManager, GleapFrameManager } from \"./Gleap\";\nimport { ScreenDrawer } from \"./ScreenDrawer\";\nimport { GleapScrollStopper } from \"./GleapScrollStopper\";\nimport { GleapScreenRecorder } from \"./GleapScreenRecorder\";\nimport { loadIcon } from \"./UI\";\n\nexport default class GleapMarkerManager {\n type = \"screenshot\";\n dragCursor = null;\n screenRecorder = null;\n callback = null;\n screenDrawer = null;\n escListener = null;\n pageLeaveListener = null;\n overrideLanguage = Gleap.getInstance().overrideLanguage;\n\n constructor(type) {\n this.type = type;\n }\n\n hideWidgetUI() {\n const feedbackButton = document.querySelector(\".bb-feedback-button\");\n if (feedbackButton) {\n feedbackButton.style.display = \"none\";\n }\n\n const dialogUI = document.querySelector(\".bb-feedback-dialog-container\");\n if (dialogUI) {\n dialogUI.style.display = \"none\";\n }\n }\n\n showWidgetUI() {\n if (this.type === \"screenshot\") {\n GleapScrollStopper.enableScroll();\n }\n\n // Stop screenrecording.\n if (this.screenRecorder) {\n this.screenRecorder.stopScreenRecording();\n }\n\n // Unregister ESC listener\n this.unregisterListeners();\n\n // Cleanup mouse pointer\n this.cleanupMousePointer();\n\n if (this.screenDrawer) {\n this.screenDrawer.destroy();\n }\n\n // Remove the toolbar UI\n const dialog = document.querySelector(\".bb-capture-toolbar\");\n if (dialog) {\n dialog.remove();\n }\n\n // Capture SVG ref\n const captureSVG = document.querySelector(\".bb-capture-svg\");\n if (captureSVG) {\n captureSVG.classList.add(\"bb-capture-svg--preview\");\n }\n\n // Remove the preview UI\n const videoPreviewContainer = document.querySelector(\".bb-capture-preview\");\n if (videoPreviewContainer) {\n videoPreviewContainer.remove();\n }\n\n // Feedback button\n const feedbackButton = document.querySelector(\".bb-feedback-button\");\n if (feedbackButton) {\n feedbackButton.style.display = \"flex\";\n }\n\n // Feedback dialog container\n const dialogUI = document.querySelector(\".bb-feedback-dialog-container\");\n if (dialogUI) {\n dialogUI.style.display = \"block\";\n }\n\n // Dismiss button\n const dismissUI = document.querySelector(\".bb-capture-dismiss\");\n if (dismissUI) {\n dismissUI.style.display = \"none\";\n }\n\n // Hide the color picker\n const colorPicker = document.querySelector(\n \".bb-capture-toolbar-item-colorpicker\"\n );\n if (colorPicker) {\n colorPicker.style.display = \"none\";\n }\n\n // Border layer\n const borderLayer = document.querySelector(\n \".bb-capture-editor-borderlayer\"\n );\n if (borderLayer) {\n borderLayer.style.display = \"none\";\n }\n }\n\n clear() {\n const captureEditor = document.querySelector(\".bb-capture-editor\");\n if (captureEditor) {\n captureEditor.remove();\n }\n }\n\n setMouseMove(x, y) {\n if (!this.dragCursor) {\n return;\n }\n\n this.dragCursor.style.left = `${x + 6}px`;\n this.dragCursor.style.top = `${y - 26}px`;\n this.dragCursor.style.right = null;\n }\n\n mouseMoveEventHandler(e) {\n const x = e.clientX;\n const y = e.clientY;\n this.setMouseMove(x, y);\n }\n\n touchMoveEventHandler(e) {\n const x = e.touches[0].clientX;\n const y = e.touches[0].clientY;\n this.setMouseMove(x, y);\n }\n\n setupMousePointer() {\n const self = this;\n this.dragCursor = document.querySelector(\".bb-capture-editor-drag-info\");\n const captureSVG = document.querySelector(\".bb-capture-svg\");\n captureSVG.addEventListener(\"mouseenter\", (e) => {\n self.dragCursor.style.opacity = 1;\n });\n\n captureSVG.addEventListener(\"mouseleave\", (e) => {\n self.dragCursor.style.opacity = 0;\n });\n\n document.documentElement.addEventListener(\n \"mousemove\",\n this.mouseMoveEventHandler.bind(this)\n );\n document.documentElement.addEventListener(\n \"touchmove\",\n this.touchMoveEventHandler.bind(this)\n );\n }\n\n cleanupMousePointer() {\n document.documentElement.removeEventListener(\n \"mousemove\",\n this.mouseMoveEventHandler\n );\n document.documentElement.removeEventListener(\n \"touchmove\",\n this.touchMoveEventHandler\n );\n\n // Clean up toolbar drag listeners\n const dragHandle = document.querySelector(\".bb-capture-toolbar-item[data-type='drag']\");\n if (dragHandle) {\n dragHandle.removeEventListener(\"mousedown\", this.dragStart);\n dragHandle.removeEventListener(\"touchstart\", this.dragStart);\n document.removeEventListener(\"mousemove\", this.drag);\n document.removeEventListener(\"touchmove\", this.drag);\n document.removeEventListener(\"mouseup\", this.dragEnd);\n document.removeEventListener(\"touchend\", this.dragEnd);\n }\n\n if (this.dragCursor) {\n this.dragCursor.remove();\n }\n }\n\n createEditorUI() {\n // Add HTML for drawing and recording\n var bugReportingEditor = document.createElement(\"div\");\n bugReportingEditor.className = \"bb-capture-editor\";\n bugReportingEditor.innerHTML = `\n
\n \n
${loadIcon(\"dismiss\")}
\n
${loadIcon(\"rect\")}
\n
\n
\n ${loadIcon(\"drag\")}\n
\n ${this.type === \"capture\"\n ? `
\n ${loadIcon(\"recorderon\")}\n ${loadIcon(\"recorderoff\")}\n \n
\n
\n ${loadIcon(\"mic\")}\n \n
\n
2:00
\n
\n
\n ${loadIcon(\"pointer\")}\n
`\n : \"\"\n }\n
\n ${loadIcon(\"rect\")}\n
\n
\n ${loadIcon(\"pen\")}\n
\n
\n ${loadIcon(\"blur\")}\n
\n
\n
\n ${GleapTranslationManager.translateText(\n `pickAColor`\n )}\n
\n
\n ${loadIcon(\"undo\")}\n ${GleapTranslationManager.translateText(\n `undo`\n )}\n
\n ${this.type !== \"capture\"\n ? `
${GleapTranslationManager.translateText(\n `next`\n )}
`\n : \"\"\n }\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
${GleapTranslationManager.translateText(\n `retry`\n )}
\n
${GleapTranslationManager.translateText(\n `next`\n )}
\n
\n
\n
\n `;\n document.body.appendChild(bugReportingEditor);\n\n // Set RTL layout\n bugReportingEditor.setAttribute(\"dir\", GleapTranslationManager.getInstance().isRTLLayout ? \"rtl\" : \"ltr\");\n }\n\n showNextStep = function () {\n // Adapt the UI\n this.showWidgetUI();\n\n if (this.callback) {\n GleapFrameManager.getInstance().sendMessage({\n name: \"set-form-data\",\n data: {\n formKey: \"capture\",\n data: {\n value: this.type,\n dirty: true,\n }\n }\n });\n this.callback(true);\n }\n };\n\n unregisterListeners() {\n if (this.escListener) {\n document.removeEventListener(\"keydown\", this.escListener);\n }\n\n if (this.pageLeaveListener) {\n window.removeEventListener(\"beforeunload\", this.pageLeaveListener);\n }\n }\n\n registerListeners() {\n const self = this;\n\n // Esc listener\n this.escListener = function (evt) {\n evt = evt || window.event;\n var isEscape = false;\n var isEnter = false;\n if (\"key\" in evt) {\n isEscape = evt.key === \"Escape\";\n isEnter = evt.key === \"Enter\";\n }\n if (isEscape) {\n self.dismiss();\n }\n if (self.type === \"screenshot\" && isEnter) {\n self.showNextStep();\n }\n };\n document.addEventListener(\"keydown\", this.escListener);\n\n // Page leave listener\n this.pageLeaveListener = function (event) {\n event.preventDefault();\n event.returnValue = \"\";\n };\n window.addEventListener(\"beforeunload\", this.pageLeaveListener);\n }\n\n show(callback) {\n this.callback = callback;\n const self = this;\n\n // Register for listeners\n this.registerListeners();\n\n // Hide widget UI\n this.hideWidgetUI();\n\n // Create the editor UI\n this.createEditorUI();\n\n // Setup the mouse pointer\n this.setupMousePointer();\n\n // Setup screenshot data\n if (this.type === \"screenshot\") {\n // Overwrite snapshot position\n Gleap.getInstance().setGlobalDataItem(\"snapshotPosition\", {\n x: window.scrollX,\n y: window.scrollY,\n });\n\n // Disable scroll\n GleapScrollStopper.disableScroll();\n } else {\n // Setup screen recording\n this.setupScreenRecording();\n }\n\n // Hook up the drawing.\n this.screenDrawer = new ScreenDrawer(\n this.captureScreenDrawerRerender.bind(this)\n );\n\n this.setupColorPicker();\n this.setupToolbar();\n }\n\n setupColorPicker() {\n const self = this;\n const selectedColor = document.querySelector(\n \".bb-capture-toolbar-item-selectedcolor\"\n );\n const colorItems = document.querySelectorAll(\n \".bb-capture-toolbar-item-color\"\n );\n const colorpicker = document.querySelector(\n \".bb-capture-toolbar-item-colorpicker\"\n );\n\n for (var i = 0; i < colorItems.length; i++) {\n const colorItem = colorItems[i];\n const hexColor = colorItem.getAttribute(\"data-color\");\n colorItem.style.backgroundColor = hexColor;\n colorItem.onclick = function () {\n if (colorItem) {\n self.screenDrawer.setColor(hexColor);\n if (colorpicker) {\n colorpicker.style.display = \"none\";\n }\n selectedColor.style.backgroundColor = colorItem.style.backgroundColor;\n GleapMarkerManager.setPenColor(hexColor);\n }\n };\n }\n }\n\n static setPenColor(hexColor) {\n const penTips = document.querySelectorAll(\".bb-pen-tip\");\n for (var j = 0; j < penTips.length; j++) {\n penTips[j].style.fill = hexColor;\n }\n }\n\n dismiss() {\n this.showWidgetUI();\n\n if (this.callback) {\n this.callback(false);\n }\n }\n\n setupToolbar() {\n const self = this;\n const toolbar = document.querySelector(\".bb-capture-toolbar\");\n let isDragging = false;\n let currentX;\n let currentY;\n let initialX;\n let initialY;\n let xOffset = 0;\n let yOffset = 0;\n\n const getTransformValues = () => {\n const transform = window.getComputedStyle(toolbar).transform;\n if (transform === 'none') return { x: 0, y: 0 };\n const matrix = new DOMMatrix(transform);\n return { x: matrix.m41, y: matrix.m42 };\n };\n\n this.dragStart = (e) => {\n const { x, y } = getTransformValues();\n xOffset = x;\n yOffset = y;\n\n if (e.type === \"mousedown\") {\n initialX = e.clientX - xOffset;\n initialY = e.clientY - yOffset;\n } else {\n initialX = e.touches[0].clientX - xOffset;\n initialY = e.touches[0].clientY - yOffset;\n }\n isDragging = true;\n };\n\n this.dragEnd = () => {\n isDragging = false;\n };\n\n this.drag = (e) => {\n if (isDragging) {\n e.preventDefault();\n if (e.type === \"mousemove\") {\n currentX = e.clientX - initialX;\n currentY = e.clientY - initialY;\n } else {\n currentX = e.touches[0].clientX - initialX;\n currentY = e.touches[0].clientY - initialY;\n }\n\n xOffset = currentX;\n yOffset = currentY;\n\n toolbar.style.transform = `translate(${currentX}px, ${currentY}px)`;\n }\n };\n\n const dragHandle = document.querySelector(\".bb-capture-toolbar-item[data-type='drag']\");\n\n dragHandle.addEventListener(\"mousedown\", this.dragStart);\n dragHandle.addEventListener(\"touchstart\", this.dragStart);\n document.addEventListener(\"mousemove\", this.drag);\n document.addEventListener(\"touchmove\", this.drag);\n document.addEventListener(\"mouseup\", this.dragEnd);\n document.addEventListener(\"touchend\", this.dragEnd);\n\n // Hook up dismiss button\n const dismissButton = document.querySelector(\".bb-capture-dismiss\");\n dismissButton.onclick = function () {\n self.dismiss();\n };\n\n // Hook up send button\n const nextButton = document.querySelector(\".bb-capture-button-next\");\n if (nextButton) {\n nextButton.onclick = this.showNextStep.bind(this);\n }\n\n const colorpicker = document.querySelector(\n \".bb-capture-toolbar-item-colorpicker\"\n );\n\n // Capture SVG ref\n const captureSVG = document.querySelector(\".bb-capture-svg\");\n\n const chooseTool = function (type, toolbarItem) {\n const toolbarTools = document.querySelectorAll(\n \".bb-capture-toolbar-item-tool\"\n );\n for (let j = 0; j < toolbarTools.length; j++) {\n toolbarTools[j].classList.remove(\"bb-capture-toolbar-item--active\");\n }\n toolbarItem.classList.add(\"bb-capture-toolbar-item--active\");\n self.screenDrawer.setTool(type);\n self.dragCursor.innerHTML = \"\";\n if (type === \"pointer\") {\n captureSVG.style.pointerEvents = \"none\";\n } else {\n captureSVG.style.pointerEvents = \"auto\";\n try {\n var svgClone = toolbarItem.querySelector(\"svg\").cloneNode(true);\n if (svgClone && self.dragCursor) {\n self.dragCursor.appendChild(svgClone);\n }\n } catch (exp) { }\n }\n }\n\n // Setup toolbar items\n var toolbarItems = document.querySelectorAll(\".bb-capture-toolbar-item\");\n for (var i = 0; i < toolbarItems.length; i++) {\n const toolbarItem = toolbarItems[i];\n toolbarItem.onclick = function () {\n const type = toolbarItem.getAttribute(\"data-type\");\n if (colorpicker && type !== \"colorpicker\") {\n colorpicker.style.display = \"none\";\n }\n\n // Mic & recording buttons\n if (type === \"mic\") {\n self.screenRecorder.toggleAudio();\n }\n if (type === \"recording\") {\n if (self.screenRecorder.isRecording) {\n self.screenRecorder.stopScreenRecording();\n } else {\n self.screenRecorder.startScreenRecording();\n chooseTool(\"pointer\", document.querySelector(\".bb-capture-toolbar-item[data-type='pointer']\"));\n }\n }\n\n // Marker buttons\n if (self.type === \"capture\" && !self.screenRecorder.isRecording) {\n // Inactivate buttons.\n return;\n }\n if (\n type === \"pen\" ||\n type === \"blur\" ||\n type === \"rect\" ||\n type === \"pointer\"\n ) {\n chooseTool(type, toolbarItem);\n }\n if (type === \"colorpicker\") {\n if (colorpicker.style.display === \"flex\") {\n colorpicker.style.display = \"none\";\n } else {\n colorpicker.style.display = \"flex\";\n }\n }\n if (type === \"undo\") {\n self.screenDrawer.removeLastAddedPathFromSvg();\n }\n };\n }\n }\n\n captureScreenDrawerRerender() {\n if (!this.screenDrawer) {\n return;\n }\n\n const itemInactiveClass = \"bb-capture-editor-item-inactive\";\n const toolbarItems = document.querySelectorAll(\".bb-capture-toolbar-item\");\n for (var i = 0; i < toolbarItems.length; i++) {\n const toolbarItem = toolbarItems[i];\n const type = toolbarItem.getAttribute(\"data-type\");\n switch (type) {\n case \"undo\":\n if (\n this.screenDrawer.pathBuffer != null &&\n this.screenDrawer.pathBuffer.length > 0\n ) {\n toolbarItem.classList.remove(itemInactiveClass);\n } else {\n toolbarItem.classList.add(itemInactiveClass);\n }\n break;\n default:\n break;\n }\n }\n }\n\n captureRenderer() {\n if (!this.screenRecorder) {\n return;\n }\n\n if (this.screenRecorder.file) {\n Gleap.getInstance().setGlobalDataItem(\"screenRecordingData\", this.screenRecorder.file);\n }\n\n const itemInactiveClass = \"bb-capture-editor-item-inactive\";\n const timerLabel = document.querySelector(\".bb-capture-toolbar-item-timer\");\n const toolbarItems = document.querySelectorAll(\".bb-capture-toolbar-item\");\n const screenRecordingTooltip = document.querySelector(\n \".bb-tooltip-screen-recording\"\n );\n const audioRecordingTooltip = document.querySelector(\n \".bb-tooltip-audio-recording\"\n );\n const captureEditor = document.querySelector(\".bb-capture-editor\");\n const recordingClass = \"bb-capture-editor-recording\";\n const notRecordingClass = \"bb-capture-editor-notrecording\";\n if (this.screenRecorder.isRecording) {\n captureEditor.classList.add(recordingClass);\n captureEditor.classList.remove(notRecordingClass);\n } else {\n captureEditor.classList.add(notRecordingClass);\n captureEditor.classList.remove(recordingClass);\n }\n \n // Update UI.\n const dialog = document.querySelector(\".bb-capture-toolbar\");\n const videoPreviewContainer = document.querySelector(\".bb-capture-preview\");\n videoPreviewContainer.style.display = this.screenRecorder.file\n ? \"flex\"\n : \"none\";\n dialog.style.display = !this.screenRecorder.file ? \"flex\" : \"none\";\n\n for (var i = 0; i < toolbarItems.length; i++) {\n const toolbarItem = toolbarItems[i];\n const type = toolbarItem.getAttribute(\"data-type\");\n switch (type) {\n case \"mic\":\n if (\n this.screenRecorder.audioAvailable &&\n this.screenRecorder.available\n ) {\n toolbarItem.classList.remove(itemInactiveClass);\n if (!this.screenRecorder.audioMuted) {\n toolbarItem.classList.remove(\n \"bb-capture-toolbar-item--inactivecross\"\n );\n audioRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"mute\"\n );\n } else {\n toolbarItem.classList.add(\n \"bb-capture-toolbar-item--inactivecross\"\n );\n audioRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"unmute\"\n );\n }\n } else {\n toolbarItem.classList.add(itemInactiveClass);\n toolbarItem.classList.add(\"bb-capture-toolbar-item--inactivecross\");\n audioRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"browserNotSupported\"\n );\n }\n break;\n\n case \"recording\":\n if (this.screenRecorder.available) {\n toolbarItem.classList.remove(itemInactiveClass);\n if (this.screenRecorder.isRecording) {\n toolbarItem.setAttribute(\"data-active\", \"true\");\n screenRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"stopRecording\"\n );\n timerLabel.style.display = \"block\";\n } else {\n toolbarItem.setAttribute(\"data-active\", \"false\");\n screenRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"startRecording\"\n );\n timerLabel.style.display = \"none\";\n }\n } else {\n // Recording is not available.\n toolbarItem.classList.add(itemInactiveClass);\n screenRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"browserNotSupported\"\n );\n }\n break;\n\n default:\n break;\n }\n }\n }\n\n setupScreenRecording() {\n const self = this;\n\n // Hook preview next button\n const nextButtonPreview = document.querySelector(\n \".bb-capture-preview-sendbutton\"\n );\n nextButtonPreview.onclick = this.showNextStep.bind(this);\n\n // Hook retry button\n const retryButton = document.querySelector(\n \".bb-capture-preview-retrybutton\"\n );\n retryButton.onclick = function () {\n self.screenRecorder.clearPreview();\n if (self.screenDrawer) {\n self.screenDrawer.clear();\n }\n };\n\n // Setup screen recorder\n this.screenRecorder = new GleapScreenRecorder(\n this.captureRenderer.bind(this),\n GleapTranslationManager.translateText(\n \"accessToScreenSharingDenied\"\n )\n );\n }\n}\n","import {\n GleapFrameManager,\n GleapFeedbackButtonManager,\n GleapConfigManager,\n} from \"./Gleap\";\n\nexport default class GleapTranslationManager {\n overrideLanguage = \"\";\n isRTLLayout = false;\n\n // GleapTranslationManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapTranslationManager();\n }\n return this.instance;\n }\n\n /**\n * Returns the language to override the default language.\n * @returns {string}\n */\n getOverrideLanguage() {\n return this.overrideLanguage;\n }\n\n /**\n * Sets the language to override the default language.\n * @param {*} language\n */\n setOverrideLanguage(language) {\n this.overrideLanguage = language;\n }\n\n updateRTLSupport() {\n // Update RTL support.\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n\n this.isRTLLayout = false;\n if (\n flowConfig &&\n flowConfig.localizationOptions &&\n flowConfig.localizationOptions.rtl\n ) {\n this.isRTLLayout = true;\n }\n\n GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n GleapFrameManager.getInstance().updateFrameStyle();\n }\n\n getActiveLanguage() {\n var language = \"en\";\n if (typeof navigator !== \"undefined\") {\n language = navigator.language.toLowerCase();\n }\n\n // Get language from HTML lang attribute if available\n if (typeof document !== \"undefined\" && document.documentElement) {\n const htmlLang = document.documentElement.lang;\n if (htmlLang && htmlLang.trim() !== \"\") {\n language = htmlLang.toLowerCase().trim();\n }\n }\n\n if (this.overrideLanguage && this.overrideLanguage !== \"\") {\n language = this.overrideLanguage.toLowerCase();\n }\n\n return language;\n }\n\n static translateText(key) {\n if (!key) {\n return \"\";\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const staticTranslation = flowConfig.staticTranslations;\n\n if (staticTranslation && staticTranslation[key]) {\n return staticTranslation[key];\n }\n\n return key;\n }\n\n static translateTextWithVars(key, vars) {\n if (!key) {\n return \"\";\n }\n\n var template = this.translateText(key);\n if (!template) {\n return \"\";\n }\n\n return template.replace(/{(\\w+)}/g, function (_, key) {\n return vars[key];\n });\n }\n}\n","import Gleap from \"./Gleap\";\n\nexport default class GleapShortcutListener {\n shortCutListener = undefined;\n\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapShortcutListener();\n }\n return this.instance;\n }\n\n start() {\n if (this.shortCutListener) {\n return;\n }\n\n const charForEvent = function (event) {\n var code;\n\n if (event.key !== undefined) {\n code = event.key;\n } else if (event.keyIdentifier !== undefined) {\n code = event.keyIdentifier;\n } else if (event.keyCode !== undefined) {\n code = event.keyCode;\n }\n\n return code;\n };\n\n this.shortCutListener = document.addEventListener(\"keyup\", function (e) {\n const char = charForEvent(e);\n if (\n e.ctrlKey &&\n (char === \"u\" || char === \"U\" || char === 85)\n ) {\n Gleap.startFeedbackFlowWithOptions(\"bugreporting\", {\n autostartDrawing: true\n });\n }\n });\n }\n\n stop() {\n if (this.shortCutListener) {\n document.removeEventListener(\"keyup\", this.shortCutListener);\n this.shortCutListener = undefined;\n }\n }\n}","\nexport default class GleapPreFillManager {\n formPreFill = {};\n \n // GleapPreFillManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapPreFillManager();\n }\n return this.instance;\n }\n }\n ","import Gleap, {\n GleapFeedbackButtonManager,\n GleapConfigManager,\n GleapFrameManager,\n GleapSession,\n GleapAudioManager,\n GleapTranslationManager,\n GleapEventManager,\n} from \"./Gleap\";\nimport { loadFromGleapCache, saveToGleapCache } from \"./GleapHelper\";\nimport { loadIcon } from \"./UI\";\n\nexport default class GleapNotificationManager {\n notificationContainer = null;\n notifications = [];\n unreadCount = 0;\n unreadNotificationsKey = \"unread-notifications\";\n isTabActive = true;\n showNotificationBadge = true;\n\n // Keep track of the current index of news being shown\n currentNewsIndex = 0;\n\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapNotificationManager();\n }\n return this.instance;\n }\n\n constructor() {}\n\n updateTabBarNotificationCount() {\n GleapEventManager.notifyEvent(\"unread-count-changed\", this.unreadCount);\n }\n\n injectNotificationUI() {\n if (this.notificationContainer) {\n return;\n }\n\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-notification-container gleap-font\";\n document.body.appendChild(elem);\n this.notificationContainer = elem;\n\n this.updateContainerStyle();\n this.reloadNotificationsFromCache();\n }\n\n reloadNotificationsFromCache() {\n try {\n const notificationsFromCache = loadFromGleapCache(\n this.unreadNotificationsKey\n );\n if (notificationsFromCache && notificationsFromCache.length > 0) {\n let nots = notificationsFromCache.filter(\n (notification) =>\n new Date(notification.createdAt) >\n new Date(Date.now() - 1 * 60 * 60 * 1000)\n );\n\n if (nots.length > 2) {\n this.notifications = nots.splice(0, nots.length - 2);\n } else {\n this.notifications = nots;\n }\n this.renderNotifications();\n }\n } catch (exp) {}\n }\n\n setNotificationCount(unreadCount) {\n this.unreadCount = unreadCount;\n this.updateTabBarNotificationCount();\n\n // Update the badge counter.\n GleapFeedbackButtonManager.getInstance().updateNotificationBadge(\n this.unreadCount\n );\n }\n\n showNotification(notification) {\n if (!(this.notificationContainer && notification && notification.data)) {\n return;\n }\n\n const notificationsForOutbound = this.notifications.find(\n (e) => notification.outbound === e.outbound\n );\n if (!notificationsForOutbound) {\n this.notifications.push(notification);\n\n // Play sound only if it's a new one\n if (notification.sound) {\n GleapAudioManager.ping();\n }\n }\n if (this.notifications.length > 2) {\n this.notifications.shift();\n }\n\n // Persist notifications.\n saveToGleapCache(this.unreadNotificationsKey, this.notifications);\n\n this.renderNotifications();\n }\n\n /**\n * Renders notifications. For news-type notifications, only show\n * one at a time if there are multiple, with a \"Next\" button to cycle.\n * The \"Next\" button + pagination are placed within the news content area.\n *\n * - Sorts news notifications by createdAt (oldest first).\n * - Shows \"Done\" on the last news item instead of \"Next\".\n */\n renderNotifications() {\n if (!this.notificationContainer) {\n return;\n }\n\n // Clear the existing notifications in the container (UI only).\n this.clearAllNotifications(true);\n\n // Append a close button (which clears everything).\n const clearElem = document.createElement(\"div\");\n clearElem.onclick = () => {\n this.clearAllNotifications();\n // Reset the news index when everything is closed\n this.currentNewsIndex = 0;\n };\n clearElem.className = \"gleap-notification-close\";\n clearElem.innerHTML = loadIcon(\"dismiss\");\n this.notificationContainer.appendChild(clearElem);\n\n // Separate out news notifications vs. others, then sort news by date ascending\n const newsNotifications = this.notifications\n .filter((n) => n.data.news)\n .sort((a, b) => new Date(a.createdAt) - new Date(b.createdAt));\n\n const otherNotifications = this.notifications.filter((n) => !n.data.news);\n\n // --- Render NEWS notifications (with pagination) ---\n if (newsNotifications.length > 0) {\n // We only show ONE news item at a time if there's more than one\n const currentIndex =\n this.currentNewsIndex < newsNotifications.length\n ? this.currentNewsIndex\n : 0;\n const currentNews = newsNotifications[currentIndex];\n\n // Main wrapper for the news notification\n const newsElem = document.createElement(\"div\");\n newsElem.className = \"gleap-notification-item-news\";\n\n // The container that holds image + content\n const newsContainerElem = document.createElement(\"div\");\n newsContainerElem.className = \"gleap-notification-item-news-container\";\n\n // Create the image element (clickable)\n if (\n currentNews.data.coverImageUrl &&\n currentNews.data.coverImageUrl !== \"\" &&\n !currentNews.data.coverImageUrl.includes(\"NewsImagePlaceholder\")\n ) {\n const newsImageElem = document.createElement(\"img\");\n newsImageElem.className = \"gleap-notification-item-news-image\";\n newsImageElem.src = currentNews.data.coverImageUrl;\n\n // Only the image is clickable\n newsImageElem.onclick = (e) => {\n e.stopPropagation();\n this.openNews(currentNews);\n };\n newsContainerElem.appendChild(newsImageElem);\n }\n\n // The content container\n const newsContentElem = document.createElement(\"div\");\n newsContentElem.className = \"gleap-notification-item-news-content\";\n\n // Title (clickable)\n const newsTitleElem = document.createElement(\"div\");\n newsTitleElem.className = \"gleap-notification-item-news-content-title\";\n\n let content = currentNews.data.text || \"\";\n content = content.replaceAll(\n \"{{name}}\",\n GleapSession.getInstance().getName()\n );\n newsTitleElem.innerText = content;\n\n // Only the title is clickable\n newsTitleElem.onclick = (e) => {\n e.stopPropagation();\n this.openNews(currentNews);\n };\n\n newsContentElem.appendChild(newsTitleElem);\n\n // Description / Sender\n const descHTML = this.renderDescription(currentNews);\n if (descHTML) {\n const descElem = document.createElement(\"div\");\n descElem.className = \"gleap-notification-item-news-preview\";\n descElem.innerHTML = descHTML;\n newsContentElem.appendChild(descElem);\n }\n\n // If there's more than one news item, show pagination + next/done button\n if (newsNotifications.length > 1) {\n // Pagination container (still inside .gleap-notification-item-news-content)\n const paginationElem = document.createElement(\"div\");\n paginationElem.className = \"gleap-news-pagination\";\n\n // Show current item / total\n const pageIndicator = document.createElement(\"span\");\n pageIndicator.className = \"gleap-news-page-indicator\";\n pageIndicator.innerText = `${currentIndex + 1} / ${\n newsNotifications.length\n }`;\n paginationElem.appendChild(pageIndicator);\n\n // Next or Done button\n const nextBtn = document.createElement(\"button\");\n nextBtn.className = \"gleap-news-next-button\";\n\n if (currentIndex < newsNotifications.length - 1) {\n nextBtn.innerText = GleapTranslationManager.translateText(`next`);\n nextBtn.onclick = (e) => {\n e.stopPropagation(); // so we can click the button freely\n this.currentNewsIndex++;\n this.renderNotifications();\n };\n } else {\n nextBtn.innerText = GleapTranslationManager.translateText(`done`);\n nextBtn.onclick = (e) => {\n e.stopPropagation();\n this.clearAllNotifications();\n this.currentNewsIndex = 0;\n };\n }\n paginationElem.appendChild(nextBtn);\n newsContentElem.appendChild(paginationElem);\n }\n\n // Append content to container\n newsContainerElem.appendChild(newsContentElem);\n // Append container to the main element\n newsElem.appendChild(newsContainerElem);\n // Finally append to the notification container\n this.notificationContainer.appendChild(newsElem);\n }\n\n // --- Render OTHER notifications normally ---\n for (let i = 0; i < otherNotifications.length; i++) {\n const notification = otherNotifications[i];\n let content = notification.data.text || \"\";\n // Replace placeholders\n content = content.replaceAll(\n \"{{name}}\",\n GleapSession.getInstance().getName()\n );\n\n const elem = document.createElement(\"div\");\n elem.onclick = () => {\n if (notification.data.conversation) {\n Gleap.openConversation(\n notification.data.conversation.shareToken,\n true\n );\n } else if (notification.data.checklist) {\n Gleap.openChecklist(notification.data.checklist.id, true);\n } else {\n Gleap.open();\n }\n };\n\n // Check if it's a checklist type\n if (notification.data.checklist) {\n let progress = Math.round(\n (notification.data.currentStep / notification.data.totalSteps) * 100\n );\n if (progress < 100) {\n progress += 4;\n }\n\n elem.className = \"gleap-notification-item-checklist\";\n elem.innerHTML = `\n
\n
\n
\n ${notification.data.text}\n
\n
\n
\n
\n
\n \n \n \n ${notification.data.nextStepTitle}\n
\n
\n
`;\n } else {\n // Standard non-news notification\n elem.className = \"gleap-notification-item\";\n elem.innerHTML = `\n ${\n notification.data.sender &&\n notification.data.sender.profileImageUrl &&\n ``\n }\n
\n ${\n notification.data.sender\n ? `
\n ${notification.data.sender.name}\n
`\n : \"\"\n }\n
${content}
\n
`;\n }\n this.notificationContainer.appendChild(elem);\n }\n\n const hasNotifications =\n newsNotifications.length > 0 || otherNotifications.length > 0;\n if (!hasNotifications) {\n // Clear the notification container\n this.clearAllNotifications(true);\n }\n }\n\n /**\n * Helper to open news from a given notification.\n */\n openNews(notification) {\n if (notification.data.news) {\n Gleap.openNewsArticle(notification.data.news.id, true);\n } else {\n Gleap.open();\n }\n }\n\n /**\n * Helper to render preview or sender info for news notifications.\n */\n renderDescription(notification) {\n const { previewText, sender } = notification.data;\n if (previewText && previewText.length > 0) {\n return previewText;\n } else if (sender) {\n // Return HTML for the sender name + optional image\n return `\n
\n ${\n sender.profileImageUrl\n ? `\"${sender.name}\"`\n : \"\"\n }\n ${sender.name}\n
\n `;\n }\n return \"\";\n }\n\n /**\n * Clears all notifications from the container.\n *\n * @param {boolean} uiOnly - Whether to only clear the UI or also the notifications.\n */\n clearAllNotifications(uiOnly = false) {\n if (!this.notificationContainer) {\n return;\n }\n\n if (!uiOnly) {\n this.notifications = [];\n // Reset currentNewsIndex whenever we clear them out\n this.currentNewsIndex = 0;\n saveToGleapCache(this.unreadNotificationsKey, this.notifications);\n }\n\n while (this.notificationContainer.firstChild) {\n this.notificationContainer.removeChild(\n this.notificationContainer.firstChild\n );\n }\n }\n\n updateContainerStyle() {\n if (!this.notificationContainer) {\n return;\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const classLeft = \"gleap-notification-container--left\";\n const classNoButton = \"gleap-notification-container--no-button\";\n this.notificationContainer.classList.remove(classLeft);\n this.notificationContainer.classList.remove(classNoButton);\n\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_BOTTOM_LEFT\n ) {\n this.notificationContainer.classList.add(classLeft);\n }\n\n if (GleapFeedbackButtonManager.getInstance().buttonHidden === null) {\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_NONE\n ) {\n this.notificationContainer.classList.add(classNoButton);\n }\n } else {\n if (GleapFeedbackButtonManager.getInstance().buttonHidden) {\n this.notificationContainer.classList.add(classNoButton);\n }\n }\n\n this.notificationContainer.setAttribute(\n \"dir\",\n GleapTranslationManager.getInstance().isRTLLayout ? \"rtl\" : \"ltr\"\n );\n }\n}\n","import Gleap, { GleapFrameManager } from \"./Gleap\";\n\nexport default class GleapBannerManager {\n bannerUrl = \"https://outboundmedia.gleap.io\";\n bannerContainer = null;\n bannerData = null;\n\n // GleapBannerManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapBannerManager();\n }\n return this.instance;\n }\n\n constructor() {\n this.startCommunication();\n }\n\n setBannerUrl(url) {\n this.bannerUrl = url;\n }\n\n startCommunication() {\n // Add window message listener.\n window.addEventListener(\"message\", (event) => {\n if (!this.bannerUrl?.includes(event.origin)) {\n return;\n }\n\n try {\n const data = JSON.parse(event.data);\n\n if (data?.type !== \"BANNER\") {\n return;\n }\n\n if (data.name === \"banner-loaded\" && this.bannerData) {\n this.sendMessage({\n name: \"banner-data\",\n data: this.bannerData,\n });\n }\n if (data.name === \"banner-height\") {\n document.documentElement.style.setProperty(\n \"--gleap-margin-top\",\n data.data.height + \"px\"\n );\n }\n if (data.name === \"banner-data-set\") {\n document.body.classList.add(\"gleap-b-shown\");\n\n if (this.bannerData?.format === \"floating\") {\n document.body.classList.add(\"gleap-b-f\");\n }\n }\n if (data.name === \"banner-close\") {\n this.removeBannerUI();\n }\n if (data.name === \"start-conversation\") {\n Gleap.startBot(data.data?.botId);\n }\n if (data.name === \"start-custom-action\") {\n Gleap.triggerCustomAction(data.data?.action);\n }\n if (data.name === \"start-product-tour\") {\n Gleap.startProductTour(data.data?.tourId, true);\n }\n if (data.name === \"open-url\") {\n const url = data.data;\n const newTab = data.newTab ? true : false;\n GleapFrameManager.getInstance().urlHandler(url, newTab);\n }\n if (data.name === \"show-form\") {\n Gleap.startFeedbackFlow(data.data?.formId);\n }\n if (data.name === \"show-survey\") {\n Gleap.showSurvey(data.data?.formId, data.data?.surveyFormat);\n }\n if (data.name === \"show-news-article\") {\n Gleap.openNewsArticle(data.data?.articleId);\n }\n if (data.name === \"show-help-article\") {\n Gleap.openHelpCenterArticle(data.data?.articleId);\n }\n if (data.name === \"show-checklist\") {\n Gleap.startChecklist(\n data.data?.checklistId,\n true,\n data.data?.sharedKey\n );\n }\n } catch (exp) {}\n });\n }\n\n removeBannerUI() {\n if (this.bannerContainer) {\n document.body.removeChild(this.bannerContainer);\n this.bannerContainer = null;\n }\n\n document.body.classList.remove(\"gleap-b-shown\");\n document.body.classList.remove(\"gleap-b-f\");\n }\n\n /**\n * Injects the feedback button into the current DOM.\n */\n injectBannerUI(bannerData) {\n if (!document.body) {\n return false;\n }\n\n if (this.bannerContainer) {\n this.removeBannerUI();\n }\n\n this.bannerData = bannerData;\n\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-b\";\n elem.innerHTML = ``;\n document.body.appendChild(elem);\n this.bannerContainer = elem;\n }\n\n sendMessage(data) {\n try {\n const gleapBFrame = document.querySelector(\".gleap-b-frame\");\n if (gleapBFrame && gleapBFrame.contentWindow) {\n gleapBFrame.contentWindow.postMessage(\n JSON.stringify({\n ...data,\n type: \"banner\",\n }),\n \"*\"\n );\n }\n } catch (e) {}\n }\n\n showBanner(bannerData) {\n this.injectBannerUI(bannerData);\n }\n}\n","import Gleap, { GleapConfigManager, GleapFrameManager } from \"./Gleap\";\n\nexport default class GleapModalManager {\n modalUrl = \"https://outboundmedia.gleap.io/modal\";\n modalContainer = null;\n modalData = null;\n modalBackdropClickListener = null;\n\n // singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapModalManager();\n }\n return this.instance;\n }\n\n constructor() {\n this._listenForMessages();\n }\n\n setModalUrl(url) {\n this.modalUrl = url;\n }\n\n _listenForMessages() {\n window.addEventListener(\"message\", (event) => {\n if (!this.modalUrl?.includes(event.origin)) {\n return;\n }\n\n try {\n const data = JSON.parse(event.data);\n\n if (data?.type !== \"MODAL\") {\n return;\n }\n\n if (data.name === \"modal-loaded\" && this.modalData) {\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const primaryColor = flowConfig.color ? flowConfig.color : \"#485BFF\";\n const backgroundColor = flowConfig.backgroundColor\n ? flowConfig.backgroundColor\n : \"#FFFFFF\";\n\n this._postMessage({\n name: \"modal-data\",\n data: {\n ...this.modalData,\n primaryColor: primaryColor,\n backgroundColor: backgroundColor,\n },\n });\n }\n if (data.name === \"modal-height\") {\n const height = data?.data?.height;\n if (height) {\n // Set the height of the modal iframe\n const iframe =\n this.modalContainer.querySelector(\".gleap-modal-frame\");\n if (iframe) {\n iframe.style.height = `${height}px`;\n }\n }\n }\n if (data.name === \"modal-data-set\") {\n // TODO: Implement\n }\n if (data.name === \"modal-close\") {\n this.hideModal();\n }\n if (data.name === \"start-conversation\") {\n Gleap.startBot(data.data?.botId);\n }\n if (data.name === \"start-custom-action\") {\n Gleap.triggerCustomAction(data.data?.action);\n }\n if (data.name === \"start-product-tour\") {\n Gleap.startProductTour(data.data?.tourId, true);\n }\n if (data.name === \"open-url\") {\n const url = data.data;\n const newTab = data.newTab ? true : false;\n GleapFrameManager.getInstance().urlHandler(url, newTab);\n }\n if (data.name === \"show-form\") {\n Gleap.startFeedbackFlow(data.data?.formId);\n }\n if (data.name === \"show-survey\") {\n Gleap.showSurvey(data.data?.formId, data.data?.surveyFormat);\n }\n if (data.name === \"show-news-article\") {\n Gleap.openNewsArticle(data.data?.articleId);\n }\n if (data.name === \"show-help-article\") {\n Gleap.openHelpCenterArticle(data.data?.articleId);\n }\n if (data.name === \"show-checklist\") {\n Gleap.startChecklist(\n data.data?.checklistId,\n true,\n data.data?.sharedKey\n );\n }\n } catch (exp) {}\n });\n }\n\n _injectModalUI(modalData) {\n if (!document.body) return false;\n\n if (this.modalContainer) {\n this.hideModal();\n }\n\n this.modalData = modalData;\n\n const wrapper = document.createElement(\"div\");\n wrapper.className = \"gleap-modal-wrapper\";\n wrapper.innerHTML = `\n
\n
\n \n
\n `;\n document.body.appendChild(wrapper);\n this.modalContainer = wrapper;\n\n // Add on backdrop click listener\n this.modalBackdropClickListener = this.modalContainer\n .querySelector(\".gleap-modal-backdrop\")\n .addEventListener(\"click\", () => {\n if (this.modalData?.showCloseButton ?? true) {\n this.hideModal();\n }\n });\n\n // lock background scroll\n document.body.classList.add(\"gleap-modal-open\");\n }\n\n _postMessage(message) {\n try {\n const frame = this.modalContainer.querySelector(\".gleap-modal-frame\");\n if (frame?.contentWindow) {\n frame.contentWindow.postMessage(\n JSON.stringify({ ...message, type: \"modal\" }),\n this.modalUrl\n );\n }\n } catch (err) {}\n }\n\n showModal(modalData) {\n if (modalData && modalData.config) {\n this._injectModalUI(modalData.config);\n }\n }\n\n hideModal() {\n if (!this.modalContainer) return;\n\n if (this.modalBackdropClickListener) {\n this.modalContainer\n .querySelector(\".gleap-modal-backdrop\")\n .removeEventListener(\"click\", this.modalBackdropClickListener);\n }\n\n document.body.removeChild(this.modalContainer);\n this.modalContainer = null;\n document.body.classList.remove(\"gleap-modal-open\");\n }\n}\n","export default class GleapAudioManager {\n static audio;\n static settings = {\n play: true\n };\n\n static playSound(play) {\n this.settings.play = play;\n }\n\n static ping() {\n try {\n if (!this.settings.play) {\n return;\n }\n\n if (!this.audio) {\n this.audio = new Audio('https://js.gleap.io/res/ping.mp3');\n }\n\n const playPromise = this.audio.play();\n if (playPromise !== undefined) {\n playPromise.then(_ => { })\n .catch(error => { });\n }\n } catch (exp) { }\n }\n}\n","export default class GleapTagManager {\n tags = [];\n\n // GleapTagManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapTagManager();\n }\n return this.instance;\n }\n\n /**\n * Returns the tags\n * @returns {*}\n */\n getTags() {\n return this.tags;\n }\n\n /**\n * Sets the tags sent with every ticket.\n * @param {*} tags Array of strings\n */\n setTags(tags) {\n this.tags = tags;\n }\n}\n","/**\n * Returns the Tag of the element\n * @param { Object } element\n * @return { String }\n */\nexport function getID( el )\n{\n const id = el.getAttribute( 'id' );\n\n if( id !== null && id !== '')\n {\n // if the ID starts with a number or contains \":\" selecting with a hash will cause a DOMException\n return id.match(/(?:^\\d|:)/) ? `[id=\"${id}\"]` : '#' + id;\n }\n return null;\n}\n","/**\n * Get class names for an element\n *\n * @pararm { Element } el\n * @return { Array }\n */\nexport function getClasses( el )\n{\n if( !el.hasAttribute( 'class' ) )\n {\n return [];\n }\n\n try {\n let classList = Array.prototype.slice.call( el.classList )\n\n // return only the valid CSS selectors based on RegEx\n return classList.filter(item => !/^[a-z_-][a-z\\d_-]*$/i.test( item ) ? null : item );\n } catch (e) {\n let className = el.getAttribute( 'class' );\n\n // remove duplicate and leading/trailing whitespaces\n className = className.trim().replace( /\\s+/g, ' ' );\n\n // split into separate classnames\n return className.split( ' ' );\n }\n}\n\n/**\n * Returns the Class selectors of the element\n * @param { Object } element\n * @return { Array }\n */\nexport function getClassSelectors( el )\n{\n const classList = getClasses( el ).filter( Boolean );\n return classList.map( cl => `.${cl}` );\n}\n","/**\n * Recursively combinate items.\n * @param { Array } result\n * @param { Array } items\n * @param { Array } data\n * @param { Number } start\n * @param { Number } end\n * @param { Number } index\n * @param { Number } k\n */\nfunction kCombinations( result, items, data, start, end, index, k )\n{\n if( index === k )\n {\n result.push( data.slice( 0, index ).join( '' ) );\n return;\n }\n\n for( let i = start; i <= end && end - i + 1 >= k - index; ++i )\n {\n data[index] = items[i];\n kCombinations( result, items, data, i + 1, end, index + 1, k );\n }\n}\n\n/**\n * Returns all the possible selector combinations\n * @param { Array } items\n * @param { Number } k\n * @return { Array }\n */\nexport function getCombinations( items, k )\n{\n const result = [],\n n = items.length,\n data = [];\n\n for( var l = 1; l <= k; ++l )\n {\n kCombinations( result, items, data, 0, n - 1, 0, l );\n }\n\n return result;\n}\n","/**\n * Determines if the passed el is a DOM element\n */\nexport function isElement( el )\n{\n let isElem;\n\n if ( typeof HTMLElement === 'object' )\n {\n isElem = el instanceof HTMLElement;\n }\n else\n {\n isElem = !!el && ( typeof el === 'object' ) && el.nodeType === 1 && typeof el.nodeName === 'string';\n }\n return isElem;\n}\n","import { isElement } from './isElement';\n\n/**\n * Returns the selectors based on the position of the element relative to its siblings\n * @param { Object } element\n * @return { Array }\n */\nexport function getNthChild( element )\n{\n let counter = 0;\n let k;\n let sibling;\n const { parentNode } = element;\n\n if( Boolean( parentNode ) )\n {\n const { childNodes } = parentNode;\n const len = childNodes.length;\n for ( k = 0; k < len; k++ )\n {\n sibling = childNodes[ k ];\n if( isElement( sibling ) )\n {\n counter++;\n if( sibling === element )\n {\n return `:nth-child(${counter})`;\n }\n }\n }\n }\n return null;\n}\n","/**\n * Returns the Tag of the element\n * @param { Object } element\n * @return { String }\n */\nexport function getTag( el )\n{\n return el.tagName.toLowerCase().replace(/:/g, '\\\\:');\n}\n","/**\n * Checks if the selector is unique\n * @param { Object } element\n * @param { String } selector\n * @return { Array }\n */\nexport function isUnique( el, selector )\n{\n if( !Boolean( selector ) ) return false;\n const elems = el.ownerDocument.querySelectorAll( selector );\n return elems.length === 1 && elems[ 0 ] === el;\n}\n","/**\n * Expose `unique`\n */\n\nimport { getID } from './getID';\nimport { getClassSelectors } from './getClasses';\nimport { getCombinations } from './getCombinations';\nimport { getAttributes } from './getAttributes';\nimport { getNthChild } from './getNthChild';\nimport { getTag } from './getTag';\nimport { isUnique } from './isUnique';\nimport { getParents } from './getParents';\n\n\n/**\n * Returns all the selectors of the elmenet\n * @param { Object } element\n * @return { Object }\n */\nfunction getAllSelectors( el, selectors, attributesToIgnore )\n{\n const funcs =\n {\n 'Tag' : getTag,\n 'NthChild' : getNthChild,\n 'Attributes' : elem => getAttributes( elem, attributesToIgnore ),\n 'Class' : getClassSelectors,\n 'ID' : getID,\n };\n\n return selectors.reduce( ( res, next ) =>\n {\n res[ next ] = funcs[ next ]( el );\n return res;\n }, {} );\n}\n\n/**\n * Tests uniqueNess of the element inside its parent\n * @param { Object } element\n * @param { String } Selectors\n * @return { Boolean }\n */\nfunction testUniqueness( element, selector )\n{\n try {\n const { parentNode } = element;\n const elements = parentNode.querySelectorAll( selector );\n return elements.length === 1 && elements[ 0 ] === element;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tests all selectors for uniqueness and returns the first unique selector.\n * @param { Object } element\n * @param { Array } selectors\n * @return { String }\n */\nfunction getFirstUnique( element, selectors )\n{\n return selectors.find( testUniqueness.bind( null, element ) );\n}\n\n/**\n * Checks all the possible selectors of an element to find one unique and return it\n * @param { Object } element\n * @param { Array } items\n * @param { String } tag\n * @return { String }\n */\nfunction getUniqueCombination( element, items, tag )\n{\n let combinations = getCombinations( items, 3 ),\n firstUnique = getFirstUnique( element, combinations );\n\n if( Boolean( firstUnique ) )\n {\n return firstUnique;\n }\n\n if( Boolean( tag ) )\n {\n combinations = combinations.map( combination => tag + combination );\n firstUnique = getFirstUnique( element, combinations );\n\n if( Boolean( firstUnique ) )\n {\n return firstUnique;\n }\n }\n\n return null;\n}\n\n/**\n * Returns a uniqueSelector based on the passed options\n * @param { DOM } element\n * @param { Array } options\n * @return { String }\n */\nfunction getUniqueSelector( element, selectorTypes, attributesToIgnore, excludeRegex )\n{\n let foundSelector;\n\n const elementSelectors = getAllSelectors( element, selectorTypes, attributesToIgnore );\n\n if( excludeRegex && excludeRegex instanceof RegExp )\n {\n elementSelectors.ID = excludeRegex.test( elementSelectors.ID ) ? null : elementSelectors.ID;\n elementSelectors.Class = elementSelectors.Class.filter( className => !excludeRegex.test( className ) );\n }\n\n for( let selectorType of selectorTypes )\n {\n const { ID, Tag, Class : Classes, Attributes, NthChild } = elementSelectors;\n switch ( selectorType )\n {\n case 'ID' :\n if ( Boolean( ID ) && testUniqueness( element, ID ) )\n {\n return ID;\n }\n break;\n\n case 'Tag':\n if ( Boolean( Tag ) && testUniqueness( element, Tag ) )\n {\n return Tag;\n }\n break;\n\n case 'Class':\n if ( Boolean( Classes ) && Classes.length )\n {\n foundSelector = getUniqueCombination( element, Classes, Tag );\n if (foundSelector) {\n return foundSelector;\n }\n }\n break;\n\n case 'Attributes':\n if ( Boolean( Attributes ) && Attributes.length )\n {\n foundSelector = getUniqueCombination( element, Attributes, Tag );\n if ( foundSelector )\n {\n return foundSelector;\n }\n }\n break;\n\n case 'NthChild':\n if ( Boolean( NthChild ) )\n {\n return NthChild\n }\n }\n }\n return '*';\n}\n\n/**\n * Generate unique CSS selector for given DOM element\n *\n * @param {Element} el\n * @return {String}\n * @api private\n */\n\nexport default function unique( el, options={} )\n{\n const {\n selectorTypes = ['ID', 'Class', 'Tag', 'NthChild'],\n attributesToIgnore = ['id', 'class', 'length'],\n excludeRegex = null,\n } = options;\n const allSelectors = [];\n const parents = getParents( el );\n\n for( let elem of parents )\n {\n const selector = getUniqueSelector( elem, selectorTypes, attributesToIgnore, excludeRegex );\n if( Boolean( selector ) )\n {\n allSelectors.push( selector );\n }\n }\n\n const selectors = [];\n for( let it of allSelectors )\n {\n selectors.unshift( it );\n const selector = selectors.join( ' > ' );\n if( isUnique( el, selector ) )\n {\n return selector;\n }\n }\n\n return null;\n}\n","/**\n * Returns the Attribute selectors of the element\n * @param { DOM Element } element\n * @param { Array } array of attributes to ignore\n * @return { Array }\n */\nexport function getAttributes( el, attributesToIgnore = ['id', 'class', 'length'] )\n{\n const { attributes } = el;\n const attrs = [ ...attributes ];\n\n return attrs.reduce( ( sum, next ) =>\n {\n if ( ! ( attributesToIgnore.indexOf( next.nodeName ) > -1 ) )\n {\n sum.push( `[${next.nodeName}=\"${next.value}\"]` );\n }\n return sum;\n }, [] );\n}\n","import { isElement } from './isElement';\n\n/**\n * Returns all the element and all of its parents\n * @param { DOM Element }\n * @return { Array of DOM elements }\n */\nexport function getParents( el )\n{\n const parents = [];\n let currentElement = el;\n while( isElement( currentElement ) )\n {\n parents.push( currentElement );\n currentElement = currentElement.parentNode;\n }\n\n return parents;\n}\n","/**\n * Utility function to get the bounding rectangle of an element.\n * @param {HTMLElement} el - The target element.\n * @returns {Object} An object containing x, y, width, and height.\n */\nfunction getElementBounds(el) {\n const rect = el.getBoundingClientRect();\n return {\n x: window.pageXOffset + rect.left,\n y: window.pageYOffset + rect.top,\n width: el.offsetWidth,\n height: el.offsetHeight,\n };\n}\n\n/**\n * Class representing an overlay element.\n */\nclass ElementOverlay {\n /**\n * Create an ElementOverlay.\n * @param {Object} options - Configuration options.\n * @param {string} [options.className] - CSS class name for the overlay.\n * @param {Object} [options.style] - Style overrides for the overlay.\n */\n constructor(options) {\n // Create and style the overlay element.\n this.overlay = document.createElement(\"div\");\n this.overlay.className = options.className || \"_ext-element-overlay\";\n this.overlay.style.background =\n (options.style && options.style.background) || \"rgba(250, 240, 202, 0.2)\";\n this.overlay.style.borderColor =\n (options.style && options.style.borderColor) || \"#F95738\";\n this.overlay.style.borderStyle =\n (options.style && options.style.borderStyle) || \"solid\";\n this.overlay.style.borderRadius =\n (options.style && options.style.borderRadius) || \"1px\";\n this.overlay.style.borderWidth =\n (options.style && options.style.borderWidth) || \"1px\";\n this.overlay.style.boxSizing =\n (options.style && options.style.boxSizing) || \"border-box\";\n this.overlay.style.cursor =\n (options.style && options.style.cursor) || \"crosshair\";\n this.overlay.style.position =\n (options.style && options.style.position) || \"absolute\";\n this.overlay.style.zIndex =\n (options.style && options.style.zIndex) || \"2147483647\";\n this.overlay.style.margin =\n (options.style && options.style.margin) || \"0px\";\n this.overlay.style.padding =\n (options.style && options.style.padding) || \"0px\";\n\n // Create a container that will host a Shadow DOM.\n this.shadowContainer = document.createElement(\"div\");\n this.shadowContainer.className = \"_ext-element-overlay-container\";\n this.shadowContainer.style.position = \"absolute\";\n this.shadowContainer.style.top = \"0px\";\n this.shadowContainer.style.left = \"0px\";\n this.shadowContainer.style.margin = \"0px\";\n this.shadowContainer.style.padding = \"0px\";\n this.shadowRoot = this.shadowContainer.attachShadow({ mode: \"open\" });\n }\n\n /**\n * Adds the overlay to the DOM.\n * @param {Node} parent - The parent element.\n * @param {boolean} useShadowDOM - Whether to use Shadow DOM.\n */\n addToDOM(parent, useShadowDOM) {\n this.usingShadowDOM = useShadowDOM;\n if (useShadowDOM) {\n parent.insertBefore(this.shadowContainer, parent.firstChild);\n this.shadowRoot.appendChild(this.overlay);\n } else {\n parent.appendChild(this.overlay);\n }\n }\n\n /**\n * Removes the overlay from the DOM.\n */\n removeFromDOM() {\n this.setBounds({ x: 0, y: 0, width: 0, height: 0 });\n if (this.overlay.remove) {\n this.overlay.remove();\n } else if (this.overlay.parentNode) {\n this.overlay.parentNode.removeChild(this.overlay);\n }\n if (this.usingShadowDOM) {\n if (this.shadowContainer.remove) {\n this.shadowContainer.remove();\n } else if (this.shadowContainer.parentNode) {\n this.shadowContainer.parentNode.removeChild(this.shadowContainer);\n }\n }\n }\n\n /**\n * Enables pointer events on the overlay.\n */\n captureCursor() {\n this.overlay.style.pointerEvents = \"auto\";\n }\n\n /**\n * Disables pointer events on the overlay.\n */\n ignoreCursor() {\n this.overlay.style.pointerEvents = \"none\";\n }\n\n /**\n * Sets the position and size of the overlay.\n * @param {Object} bounds - The bounding box.\n * @param {number} bounds.x - The x-coordinate.\n * @param {number} bounds.y - The y-coordinate.\n * @param {number} bounds.width - The width.\n * @param {number} bounds.height - The height.\n */\n setBounds(bounds) {\n const { x, y, width, height } = bounds;\n this.overlay.style.left = x + \"px\";\n this.overlay.style.top = y + \"px\";\n this.overlay.style.width = width + \"px\";\n this.overlay.style.height = height + \"px\";\n }\n}\n\n/**\n * Class representing an element picker that uses the overlay.\n */\nclass ElementPicker {\n /**\n * Create an ElementPicker.\n * @param {Object} [overlayOptions] - Options to pass to ElementOverlay.\n */\n constructor(overlayOptions) {\n this.active = false;\n this.overlay = new ElementOverlay(overlayOptions || {});\n this.handleMouseMove = this.handleMouseMove.bind(this);\n this.handleClick = this.handleClick.bind(this);\n this.tick = this.tick.bind(this);\n }\n\n /**\n * Starts the element picking process.\n * @param {Object} options - Picker options.\n * @param {Node} [options.parentElement] - Parent element to attach the overlay.\n * @param {boolean} [options.useShadowDOM=true] - Whether to use Shadow DOM.\n * @param {Function} [options.onClick] - Callback invoked on click.\n * @param {Function} [options.onHover] - Callback invoked on hover.\n * @param {Function} [options.elementFilter] - Function to filter elements.\n * @returns {boolean} True if started successfully, false if already active.\n */\n start(options) {\n if (this.active) {\n return false;\n }\n this.active = true;\n this.options = options;\n\n document.addEventListener(\"mousemove\", this.handleMouseMove, true);\n document.addEventListener(\"click\", this.handleClick, true);\n\n const parentElement = options.parentElement || document.body;\n const useShadowDOM =\n options.useShadowDOM !== undefined ? options.useShadowDOM : true;\n this.overlay.addToDOM(parentElement, useShadowDOM);\n this.tick();\n\n return true;\n }\n\n /**\n * Stops the element picking process.\n */\n stop() {\n this.active = false;\n this.options = undefined;\n\n document.removeEventListener(\"mousemove\", this.handleMouseMove, true);\n document.removeEventListener(\"click\", this.handleClick, true);\n\n this.overlay.removeFromDOM();\n this.target = undefined;\n this.mouseX = undefined;\n this.mouseY = undefined;\n\n if (this.tickReq) {\n window.cancelAnimationFrame(this.tickReq);\n }\n }\n\n /**\n * Handles mouse move events.\n * @param {MouseEvent} event - The mousemove event.\n */\n handleMouseMove(event) {\n this.mouseX = event.clientX;\n this.mouseY = event.clientY;\n }\n\n /**\n * Handles click events.\n * @param {MouseEvent} event - The click event.\n */\n handleClick(event) {\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n\n if (this.target && this.options && this.options.onClick) {\n this.options.onClick(this.target);\n }\n }\n\n /**\n * The tick function that continuously updates the target element.\n */\n tick() {\n this.updateTarget();\n this.tickReq = window.requestAnimationFrame(this.tick);\n }\n\n /**\n * Updates the target element based on the current mouse position.\n */\n updateTarget() {\n if (this.mouseX === undefined || this.mouseY === undefined) {\n return;\n }\n\n // Temporarily ignore the overlay's pointer events to detect the underlying element.\n this.overlay.ignoreCursor();\n const elAtCursor = document.elementFromPoint(this.mouseX, this.mouseY);\n const newTarget = elAtCursor;\n this.overlay.captureCursor();\n\n // If the target hasn't changed, do nothing.\n if (!newTarget || newTarget === this.target) {\n return;\n }\n\n // If an element filter is provided and the new target doesn't match, clear the target.\n if (this.options && this.options.elementFilter) {\n if (!this.options.elementFilter(newTarget)) {\n this.target = undefined;\n this.overlay.setBounds({ x: 0, y: 0, width: 0, height: 0 });\n return;\n }\n }\n\n this.target = newTarget;\n const bounds = getElementBounds(newTarget);\n this.overlay.setBounds(bounds);\n\n if (this.options && this.options.onHover) {\n this.options.onHover(newTarget);\n }\n }\n}\n\nexport default ElementPicker;\n","import unique from \"./unique-selector/src/unique-selector\";\nimport ElementPicker from \"./ElementPicker\";\n\nclass GleapAdminHelper {\n picker = null;\n onElementPicked = null;\n\n stopPicker = () => {\n if (this.picker) {\n this.picker.stop();\n this.picker = null;\n return;\n }\n };\n\n startPicker = () => {\n this.stopPicker();\n var self = this;\n\n const style = {\n borderColor: \"#2142E7\",\n background: \"transparent\",\n borderWidth: \"4px\",\n borderRadius: \"5px\",\n };\n this.picker = new ElementPicker({ style });\n this.picker.start({\n useShadowDOM: false,\n onClick: (el) => {\n try {\n let selector;\n const tourId = el.getAttribute(\"data-gleap-tour\");\n if (tourId) {\n selector = `[data-gleap-tour=\"${tourId}\"]`;\n } else {\n selector = unique(el);\n }\n\n self.onElementPicked && self.onElementPicked(selector);\n } catch (e) {\n console.error(\"Error while getting unique selector\", e);\n }\n },\n elementFilter: (el) => {\n if (\n el.classList.contains(\"gleap-admin-collapse-ui\") ||\n el.closest(\".gleap-admin-collapse-ui\")\n ) {\n return false;\n }\n return true;\n },\n });\n };\n\n setMode = (mode) => {\n this.mode = mode;\n if (mode === \"navigate\") {\n this.stopPicker();\n }\n if (mode === \"picker\") {\n this.startPicker();\n }\n };\n}\n\nexport default GleapAdminHelper;\n","import { loadIcon } from \"./UI\";\nimport GleapAdminHelper from \"./GleapAdminHelper\";\nimport { GleapProductTours } from \"./Gleap\";\n\nexport default class GleapAdminManager {\n libraryInstance = null;\n lastUrl = undefined;\n injectedFrame = false;\n gleapFrameContainer = null;\n gleapCollapseUI = null;\n injectedCollapseUI = false;\n gleapFrame = null;\n configData = null;\n adminHelper = null;\n status = \"navigate\";\n\n // GleapAdminManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapAdminManager();\n }\n\n return this.instance;\n }\n\n logCurrentPage() {\n const currentUrl = window.location.href;\n if (currentUrl && currentUrl !== this.lastUrl) {\n this.lastUrl = currentUrl;\n\n this.sendMessageToTourBuilder({\n name: \"page-changed\",\n data: {\n page: currentUrl,\n },\n });\n }\n }\n\n startPageListener() {\n const self = this;\n setInterval(function () {\n self.logCurrentPage();\n }, 1000);\n }\n\n initAdminHelper() {\n const self = this;\n\n // Disable product tours.\n GleapProductTours.getInstance().disable();\n\n self.adminHelper = new GleapAdminHelper();\n\n try {\n self.adminHelper.onElementPicked = (selector) => {\n self.toggleCollapseUI(true);\n self.sendMessageToTourBuilder({\n name: \"element-picked\",\n data: {\n selector,\n },\n });\n };\n } catch (e) {\n console.log(e);\n }\n\n self.injectFrame();\n self.injectCollapseUI();\n self.setFrameHeight(\"loading\");\n }\n\n setFrameHeight(state) {\n if (this.gleapFrameContainer) {\n var height = \"\";\n if (state === \"picker\" || state === \"navigate\") {\n height = \"65px\";\n } else if (state === \"editor\") {\n height = \"100vh\";\n } else {\n height = \"0px\";\n }\n this.gleapFrameContainer.style.height = height;\n }\n }\n\n start() {\n if (typeof window === \"undefined\") {\n return;\n }\n\n if (window.gleapAdminDisabled) {\n return;\n }\n\n var self = this;\n\n // Add window message listener.\n window.addEventListener(\"message\", (event) => {\n if (event.origin !== \"https://app.gleap.io\") {\n return;\n }\n\n try {\n const data = JSON.parse(event.data);\n\n if (data.type === \"admin\") {\n if (data.name === \"load\") {\n self.configData = data.data;\n self.initAdminHelper();\n }\n\n if (data.name === \"smartlink-search-result\") {\n this.sendMessageToTourBuilder({\n name: \"smartlink-search-result\",\n data: data.data,\n });\n }\n\n if (data.name === \"translate-complete\") {\n this.sendMessageToTourBuilder({\n name: \"translate-complete\",\n data: data.data,\n });\n }\n }\n\n if (data.type === \"tourbuilder\") {\n if (data.name === \"loaddata\") {\n this.sendMessageToTourBuilder({\n name: \"data\",\n data: {\n ...self.configData,\n currentPage: window.location.href,\n },\n });\n }\n\n if (data.name === \"highlight-element\") {\n // Cleanup.\n document\n .querySelectorAll(\".gleap-admin-highlight\")\n .forEach((el) => {\n el.classList.remove(\"gleap-admin-highlight\");\n });\n\n // Find the element and highlight it.\n if (data?.data?.selector) {\n const element = document.querySelector(data?.data?.selector);\n if (element) {\n element.classList.add(\"gleap-admin-highlight\");\n }\n }\n }\n\n if (data.name === \"smartlink-search\") {\n this.sendMessage({\n name: \"smartlink-search\",\n data: data.data,\n });\n }\n\n if (data.name === \"product-tour-started\") {\n this.sendMessage({\n name: \"product-tour-started\",\n data: data.data,\n });\n }\n\n if (data.name === \"translate\") {\n this.sendMessage({\n name: \"translate\",\n data: data.data,\n });\n }\n\n if (data.name === \"save\") {\n this.sendMessage({\n name: \"save\",\n data: data.data,\n });\n }\n\n if (data.name === \"update-steps\") {\n this.sendMessage({\n name: \"update-steps\",\n data: data.data,\n });\n }\n\n if (data.name === \"click\") {\n try {\n document.querySelector(data.data.selector).click();\n } catch (e) {\n console.log(e);\n }\n }\n\n if (data.name === \"status-changed\") {\n self.status = data.data;\n this.setFrameHeight(self.status);\n self.adminHelper.stopPicker();\n\n if (self.status === \"picker\") {\n self.adminHelper.startPicker();\n }\n }\n }\n } catch (exp) {}\n });\n\n this.sendMessage({\n name: \"init\",\n });\n\n this.startPageListener();\n }\n\n sendMessage(data) {\n try {\n if (window && window.opener) {\n window.opener.postMessage(\n JSON.stringify({\n ...data,\n type: \"admin\",\n }),\n \"*\"\n );\n }\n } catch (e) {}\n }\n\n sendMessageToTourBuilder(data) {\n try {\n if (this.gleapFrame && this.gleapFrame.contentWindow) {\n this.gleapFrame.contentWindow.postMessage(\n JSON.stringify({\n ...data,\n type: \"tourbuilder\",\n }),\n \"*\"\n );\n }\n } catch (e) {}\n }\n\n toggleCollapseUI = (onlyIfActive = false) => {\n const COLLAPSE_UI_ACTIVE_CLASS = \"gleap-admin-collapse-ui-active\";\n const FRAME_CONTAINER_ACTIVE_CLASS = \"gleap-admin-frame-container-active\";\n\n // Helper function to check if an element has an active class\n const isActive = (element, activeClass) =>\n element && element.classList.contains(activeClass);\n\n // Check if onlyIfActive is true and if the UI elements are already inactive\n if (\n onlyIfActive &&\n (!isActive(this.gleapCollapseUI, COLLAPSE_UI_ACTIVE_CLASS) ||\n !isActive(this.gleapFrameContainer, FRAME_CONTAINER_ACTIVE_CLASS))\n ) {\n return; // Return early without toggling the UI\n }\n\n // Toggle the UI elements\n if (this.gleapCollapseUI) {\n this.gleapCollapseUI.classList.toggle(COLLAPSE_UI_ACTIVE_CLASS);\n }\n if (this.gleapFrameContainer) {\n this.gleapFrameContainer.classList.toggle(FRAME_CONTAINER_ACTIVE_CLASS);\n }\n };\n\n injectCollapseUI = () => {\n if (this.injectedCollapseUI) {\n return;\n }\n this.injectedCollapseUI = true;\n\n // Inject widget HTML.\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-admin-collapse-ui\";\n elem.innerHTML = `
\n ${loadIcon(\"arrowdown\")}\n
`;\n document.body.appendChild(elem);\n\n this.gleapCollapseUI = elem;\n\n elem.addEventListener(\"click\", (e) => {\n e.stopImmediatePropagation();\n e.stopPropagation();\n e.preventDefault();\n\n this.toggleCollapseUI();\n });\n };\n\n injectFrame = () => {\n if (this.injectedFrame) {\n return;\n }\n this.injectedFrame = true;\n\n // Inject widget HTML.\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-admin-frame-container\";\n elem.innerHTML = ``;\n document.body.appendChild(elem);\n\n this.gleapFrameContainer = elem;\n this.gleapFrame = document.querySelector(\".gleap-admin-frame\");\n };\n}\n","const GleapTours = (function () {\n \"use strict\";\n let currentConfig = {};\n function configure(config = {}) {\n currentConfig = {\n animate: true,\n allowClose: true,\n overlayOpacity: 0.7,\n smoothScroll: false,\n disableActiveInteraction: false,\n showProgress: false,\n stagePadding: 10,\n stageRadius: 5,\n popoverOffset: 10,\n showButtons: [\"next\", \"previous\", \"close\"],\n disableButtons: [],\n overlayColor: \"#000\",\n ...config,\n };\n }\n function getConfig(key) {\n return key ? currentConfig[key] : currentConfig;\n }\n function easeInOutQuad(elapsed, initialValue, amountOfChange, duration) {\n if ((elapsed /= duration / 2) < 1) {\n return (amountOfChange / 2) * elapsed * elapsed + initialValue;\n }\n return (\n (-amountOfChange / 2) * (--elapsed * (elapsed - 2) - 1) + initialValue\n );\n }\n function getFocusableElements(parentEls) {\n const focusableQuery =\n 'a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type=\"text\"]:not([disabled]), input[type=\"radio\"]:not([disabled]), input[type=\"checkbox\"]:not([disabled]), select:not([disabled])';\n return parentEls\n .flatMap((parentEl) => {\n const isParentFocusable = parentEl.matches(focusableQuery);\n const focusableEls = Array.from(\n parentEl.querySelectorAll(focusableQuery)\n );\n return [...(isParentFocusable ? [parentEl] : []), ...focusableEls];\n })\n .filter((el) => {\n return (\n getComputedStyle(el).pointerEvents !== \"none\" && isElementVisible(el)\n );\n });\n }\n function bringInView(element) {\n if (!element || isElementInView(element)) {\n return;\n }\n const shouldSmoothScroll = getConfig(\"smoothScroll\");\n element.scrollIntoView({\n // Removing the smooth scrolling for elements which exist inside the scrollable parent\n // This was causing the highlight to not properly render\n behavior:\n !shouldSmoothScroll || hasScrollableParent(element) ? \"auto\" : \"smooth\",\n inline: \"center\",\n block: \"center\",\n });\n }\n function hasScrollableParent(e) {\n if (!e || !e.parentElement) {\n return;\n }\n const parent = e.parentElement;\n return parent.scrollHeight > parent.clientHeight;\n }\n function isElementInView(element) {\n const rect = element.getBoundingClientRect();\n return (\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <=\n (window.innerHeight || document.documentElement.clientHeight) &&\n rect.right <= (window.innerWidth || document.documentElement.clientWidth)\n );\n }\n function isElementVisible(el) {\n return !!(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\n }\n let currentState = {};\n function setState(key, value) {\n currentState[key] = value;\n }\n function getState(key) {\n return key ? currentState[key] : currentState;\n }\n function resetState() {\n currentState = {};\n }\n let registeredListeners = {};\n function listen(hook, callback) {\n registeredListeners[hook] = callback;\n }\n function emit(hook) {\n var _a;\n (_a = registeredListeners[hook]) == null\n ? void 0\n : _a.call(registeredListeners);\n }\n function destroyEmitter() {\n registeredListeners = {};\n }\n function transitionStage(elapsed, duration, from, to) {\n let activeStagePosition = getState(\"__activeStagePosition\");\n const fromDefinition = activeStagePosition\n ? activeStagePosition\n : from.getBoundingClientRect();\n const toDefinition = to.getBoundingClientRect();\n const x = easeInOutQuad(\n elapsed,\n fromDefinition.x,\n toDefinition.x - fromDefinition.x,\n duration\n );\n const y = easeInOutQuad(\n elapsed,\n fromDefinition.y,\n toDefinition.y - fromDefinition.y,\n duration\n );\n const width = easeInOutQuad(\n elapsed,\n fromDefinition.width,\n toDefinition.width - fromDefinition.width,\n duration\n );\n const height = easeInOutQuad(\n elapsed,\n fromDefinition.height,\n toDefinition.height - fromDefinition.height,\n duration\n );\n activeStagePosition = {\n x,\n y,\n width,\n height,\n };\n renderOverlay(activeStagePosition);\n setState(\"__activeStagePosition\", activeStagePosition);\n }\n function trackActiveElement(element) {\n if (!element) {\n return;\n }\n const definition = element.getBoundingClientRect();\n const activeStagePosition = {\n x: definition.x,\n y: definition.y,\n width: definition.width,\n height: definition.height,\n };\n setState(\"__activeStagePosition\", activeStagePosition);\n renderOverlay(activeStagePosition);\n }\n function refreshOverlay() {\n const activeStagePosition = getState(\"__activeStagePosition\");\n const overlaySvg = getState(\"__overlaySvg\");\n if (!activeStagePosition) {\n return;\n }\n if (!overlaySvg) {\n console.warn(\"No stage svg found.\");\n return;\n }\n const windowX = window.innerWidth;\n const windowY = window.innerHeight;\n overlaySvg.setAttribute(\"viewBox\", `0 0 ${windowX} ${windowY}`);\n }\n function mountOverlay(stagePosition) {\n const overlaySvg = createOverlaySvg(stagePosition);\n document.body.appendChild(overlaySvg);\n onDriverClick(overlaySvg, (e) => {\n const target = e.target;\n if (target.tagName !== \"path\") {\n return;\n }\n emit(\"overlayClick\");\n });\n setState(\"__overlaySvg\", overlaySvg);\n }\n function renderOverlay(stagePosition) {\n const overlaySvg = getState(\"__overlaySvg\");\n if (!overlaySvg) {\n mountOverlay(stagePosition);\n return;\n }\n const pathElement = overlaySvg.firstElementChild;\n if ((pathElement == null ? void 0 : pathElement.tagName) !== \"path\") {\n throw new Error(\"no path element found in stage svg\");\n }\n pathElement.setAttribute(\"d\", generateStageSvgPathString(stagePosition));\n }\n function createOverlaySvg(stage) {\n const windowX = window.innerWidth;\n const windowY = window.innerHeight;\n const svg = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n svg.classList.add(\"gleap-tour-overlay\", \"gleap-tour-overlay-animated\");\n svg.setAttribute(\"viewBox\", `0 0 ${windowX} ${windowY}`);\n svg.setAttribute(\"xmlSpace\", \"preserve\");\n svg.setAttribute(\"xmlnsXlink\", \"http://www.w3.org/1999/xlink\");\n svg.setAttribute(\"version\", \"1.1\");\n svg.setAttribute(\"preserveAspectRatio\", \"xMinYMin slice\");\n svg.style.fillRule = \"evenodd\";\n svg.style.clipRule = \"evenodd\";\n svg.style.strokeLinejoin = \"round\";\n svg.style.strokeMiterlimit = \"2\";\n svg.style.zIndex = \"10000\";\n svg.style.position = \"fixed\";\n svg.style.top = \"0\";\n svg.style.left = \"0\";\n svg.style.width = \"100%\";\n svg.style.height = \"100%\";\n const stagePath = document.createElementNS(\n \"http://www.w3.org/2000/svg\",\n \"path\"\n );\n stagePath.setAttribute(\"d\", generateStageSvgPathString(stage));\n stagePath.style.fill = getConfig(\"overlayColor\") || \"rgb(0,0,0)\";\n stagePath.style.opacity = `${getConfig(\"overlayOpacity\")}`;\n stagePath.style.pointerEvents = \"auto\";\n stagePath.style.cursor = \"auto\";\n svg.appendChild(stagePath);\n return svg;\n }\n function generateStageSvgPathString(stage) {\n const windowX = window.innerWidth;\n const windowY = window.innerHeight;\n const stagePadding = getConfig(\"stagePadding\") || 0;\n const stageRadius = getConfig(\"stageRadius\") || 0;\n const stageWidth = stage.width + stagePadding * 2;\n const stageHeight = stage.height + stagePadding * 2;\n const limitedRadius = Math.min(\n stageRadius,\n stageWidth / 2,\n stageHeight / 2\n );\n const normalizedRadius = Math.floor(Math.max(limitedRadius, 0));\n const highlightBoxX = stage.x - stagePadding + normalizedRadius;\n const highlightBoxY = stage.y - stagePadding;\n const highlightBoxWidth = stageWidth - normalizedRadius * 2;\n const highlightBoxHeight = stageHeight - normalizedRadius * 2;\n return `M${windowX},0L0,0L0,${windowY}L${windowX},${windowY}L${windowX},0Z\n M${highlightBoxX},${highlightBoxY} h${highlightBoxWidth} a${normalizedRadius},${normalizedRadius} 0 0 1 ${normalizedRadius},${normalizedRadius} v${highlightBoxHeight} a${normalizedRadius},${normalizedRadius} 0 0 1 -${normalizedRadius},${normalizedRadius} h-${highlightBoxWidth} a${normalizedRadius},${normalizedRadius} 0 0 1 -${normalizedRadius},-${normalizedRadius} v-${highlightBoxHeight} a${normalizedRadius},${normalizedRadius} 0 0 1 ${normalizedRadius},-${normalizedRadius} z`;\n }\n function destroyOverlay() {\n const overlaySvg = getState(\"__overlaySvg\");\n if (overlaySvg) {\n overlaySvg.remove();\n }\n }\n function mountDummyElement() {\n const existingDummy = document.getElementById(\"gleap-tour-dummy-element\");\n if (existingDummy) {\n return existingDummy;\n }\n let element = document.createElement(\"div\");\n element.id = \"gleap-tour-dummy-element\";\n element.style.width = \"0\";\n element.style.height = \"0\";\n element.style.pointerEvents = \"none\";\n element.style.opacity = \"0\";\n element.style.position = \"fixed\";\n element.style.top = \"50%\";\n element.style.left = \"50%\";\n document.body.appendChild(element);\n return element;\n }\n function highlight(step, attemptTime = 5000) {\n const { element } = step;\n let elemObj = element;\n if (typeof elemObj === \"string\") {\n try {\n elemObj = document.querySelector(element);\n } catch (error) {\n // This will escape colons within IDs but not affect pseudo-classes or other valid uses of colons\n let refactoredElement = element.replace(\n /(#[^#\\s]+)/g,\n function (match) {\n return match.replace(/:/g, \"\\\\:\");\n }\n );\n elemObj = document.querySelector(refactoredElement);\n }\n }\n if (element && !elemObj && attemptTime >= 0) {\n setTimeout(() => {\n hidePopover();\n highlight(step, attemptTime - 100);\n }, 100);\n\n return;\n }\n\n if (!elemObj) {\n if (step.mode === \"INPUT\" || step.mode === \"CLICK\") {\n return getConfig(\"onElementNotFound\")(step);\n }\n }\n\n if (!elemObj) {\n elemObj = mountDummyElement();\n }\n\n transferHighlight(elemObj, step);\n }\n function refreshActiveHighlight() {\n const activeHighlight = getState(\"__activeElement\");\n const activeStep = getState(\"__activeStep\");\n if (!activeHighlight) {\n return;\n }\n trackActiveElement(activeHighlight);\n refreshOverlay();\n repositionPopover(activeHighlight, activeStep);\n }\n function transferHighlight(toElement, toStep) {\n const duration = 400;\n const start = Date.now();\n const fromStep = getState(\"__activeStep\");\n const fromElement = getState(\"__activeElement\") || toElement;\n const isFirstHighlight = !fromElement || fromElement === toElement;\n const isToDummyElement = toElement.id === \"gleap-tour-dummy-element\";\n const isFromDummyElement = fromElement.id === \"gleap-tour-dummy-element\";\n const isAnimatedTour = getConfig(\"animate\");\n const highlightStartedHook =\n toStep.onHighlightStarted || getConfig(\"onHighlightStarted\");\n const highlightedHook =\n (toStep == null ? void 0 : toStep.onHighlighted) ||\n getConfig(\"onHighlighted\");\n const deselectedHook =\n (fromStep == null ? void 0 : fromStep.onDeselected) ||\n getConfig(\"onDeselected\");\n const config = getConfig();\n const state = getState();\n if (!isFirstHighlight && deselectedHook) {\n deselectedHook(isFromDummyElement ? void 0 : fromElement, fromStep, {\n config,\n state,\n });\n }\n if (highlightStartedHook) {\n highlightStartedHook(isToDummyElement ? void 0 : toElement, toStep, {\n config,\n state,\n });\n }\n const hasDelayedPopover = !isFirstHighlight && isAnimatedTour;\n let isPopoverRendered = false;\n hidePopover();\n setState(\"previousStep\", fromStep);\n setState(\"previousElement\", fromElement);\n setState(\"activeStep\", toStep);\n setState(\"activeElement\", toElement);\n const animate = () => {\n const transitionCallback = getState(\"__transitionCallback\");\n if (transitionCallback !== animate) {\n return;\n }\n const elapsed = Date.now() - start;\n const timeRemaining = duration - elapsed;\n const isHalfwayThrough = timeRemaining <= duration / 2;\n if (\n toStep.popover &&\n isHalfwayThrough &&\n !isPopoverRendered &&\n hasDelayedPopover\n ) {\n renderPopover(toElement, toStep);\n isPopoverRendered = true;\n }\n if (getConfig(\"animate\") && elapsed < duration) {\n transitionStage(elapsed, duration, fromElement, toElement);\n } else {\n trackActiveElement(toElement);\n if (highlightedHook) {\n highlightedHook(isToDummyElement ? void 0 : toElement, toStep, {\n config: getConfig(),\n state: getState(),\n });\n }\n setState(\"__transitionCallback\", void 0);\n setState(\"__previousStep\", fromStep);\n setState(\"__previousElement\", fromElement);\n setState(\"__activeStep\", toStep);\n setState(\"__activeElement\", toElement);\n }\n window.requestAnimationFrame(animate);\n };\n setState(\"__transitionCallback\", animate);\n window.requestAnimationFrame(animate);\n bringInView(toElement);\n if (!hasDelayedPopover && toStep.popover) {\n renderPopover(toElement, toStep);\n }\n fromElement.classList.remove(\n \"gleap-tour-active-element\",\n \"gleap-tour-no-interaction\"\n );\n fromElement.removeAttribute(\"aria-haspopup\");\n fromElement.removeAttribute(\"aria-expanded\");\n fromElement.removeAttribute(\"aria-controls\");\n const disableActiveInteraction =\n toStep.disableActiveInteraction ??\n getConfig(\"disableActiveInteraction\") ??\n false;\n if (disableActiveInteraction) {\n toElement.classList.add(\"gleap-tour-no-interaction\");\n }\n toElement.classList.add(\"gleap-tour-active-element\");\n toElement.setAttribute(\"aria-haspopup\", \"dialog\");\n toElement.setAttribute(\"aria-expanded\", \"true\");\n toElement.setAttribute(\"aria-controls\", \"gleap-tour-popover-content\");\n }\n function destroyHighlight() {\n var _a;\n (_a = document.getElementById(\"gleap-tour-dummy-element\")) == null\n ? void 0\n : _a.remove();\n document\n .querySelectorAll(\".gleap-tour-active-element\")\n .forEach((element) => {\n element.classList.remove(\n \"gleap-tour-active-element\",\n \"gleap-tour-no-interaction\"\n );\n element.removeAttribute(\"aria-haspopup\");\n element.removeAttribute(\"aria-expanded\");\n element.removeAttribute(\"aria-controls\");\n });\n }\n function requireRefresh() {\n const resizeTimeout = getState(\"__resizeTimeout\");\n if (resizeTimeout) {\n window.cancelAnimationFrame(resizeTimeout);\n }\n setState(\n \"__resizeTimeout\",\n window.requestAnimationFrame(refreshActiveHighlight)\n );\n }\n function trapFocus(e) {\n var _a;\n const isActivated = getState(\"isInitialized\");\n if (!isActivated) {\n return;\n }\n const isTabKey = e.key === \"Tab\" || e.keyCode === 9;\n if (!isTabKey) {\n return;\n }\n const activeElement = getState(\"__activeElement\");\n const popoverEl = (_a = getState(\"popover\")) == null ? void 0 : _a.wrapper;\n const focusableEls = getFocusableElements([\n ...(popoverEl ? [popoverEl] : []),\n ...(activeElement ? [activeElement] : []),\n ]);\n const firstFocusableEl = focusableEls[0];\n const lastFocusableEl = focusableEls[focusableEls.length - 1];\n e.preventDefault();\n if (e.shiftKey) {\n const previousFocusableEl =\n focusableEls[focusableEls.indexOf(document.activeElement) - 1] ||\n lastFocusableEl;\n previousFocusableEl == null ? void 0 : previousFocusableEl.focus();\n } else {\n const nextFocusableEl =\n focusableEls[focusableEls.indexOf(document.activeElement) + 1] ||\n firstFocusableEl;\n nextFocusableEl == null ? void 0 : nextFocusableEl.focus();\n }\n }\n function onKeyup(e) {\n var _a;\n const allowKeyboardControl =\n (_a = getConfig(\"allowKeyboardControl\")) != null ? _a : true;\n if (!allowKeyboardControl) {\n return;\n }\n if (e.key === \"Escape\") {\n emit(\"escapePress\");\n } else if (e.key === \"ArrowRight\") {\n emit(\"arrowRightPress\");\n } else if (e.key === \"ArrowLeft\") {\n emit(\"arrowLeftPress\");\n }\n }\n function onDriverClick(element, listener, shouldPreventDefault) {\n const listenerWrapper = (e, listener2) => {\n const target = e.target;\n if (!element.contains(target)) {\n return;\n }\n if (!shouldPreventDefault || shouldPreventDefault(target)) {\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n listener2 == null ? void 0 : listener2(e);\n };\n const useCapture = true;\n document.addEventListener(\"pointerdown\", listenerWrapper, useCapture);\n document.addEventListener(\"mousedown\", listenerWrapper, useCapture);\n document.addEventListener(\"pointerup\", listenerWrapper, useCapture);\n document.addEventListener(\"mouseup\", listenerWrapper, useCapture);\n document.addEventListener(\n \"click\",\n (e) => {\n listenerWrapper(e, listener);\n },\n useCapture\n );\n }\n function initEvents() {\n window.addEventListener(\"keyup\", onKeyup, false);\n window.addEventListener(\"keydown\", trapFocus, false);\n window.addEventListener(\"resize\", requireRefresh);\n window.addEventListener(\"scroll\", requireRefresh);\n }\n function destroyEvents() {\n window.removeEventListener(\"keyup\", onKeyup);\n window.removeEventListener(\"resize\", requireRefresh);\n window.removeEventListener(\"scroll\", requireRefresh);\n }\n function hidePopover() {\n const popover = getState(\"popover\");\n if (!popover) {\n return;\n }\n popover.wrapper.style.display = \"none\";\n }\n function renderPopover(element, step) {\n var _a, _b;\n let popover = getState(\"popover\");\n if (popover) {\n document.body.removeChild(popover.wrapper);\n }\n popover = createPopover();\n document.body.appendChild(popover.wrapper);\n const {\n title,\n description,\n showButtons,\n disableButtons,\n showProgress,\n nextBtnText = getConfig(\"nextBtnText\") || \"Next\",\n prevBtnText = getConfig(\"prevBtnText\") || \"Previous\",\n progressText = getConfig(\"progressText\") || \"{current} of {total}\",\n } = step.popover || {};\n popover.nextButton.innerHTML = nextBtnText;\n popover.previousButton.innerHTML = prevBtnText;\n popover.progress.innerHTML = progressText;\n if (title) {\n popover.title.innerHTML = title;\n popover.title.style.display = \"block\";\n } else {\n popover.title.style.display = \"none\";\n }\n if (description) {\n popover.description.innerHTML = description;\n popover.description.style.display = \"block\";\n } else {\n popover.description.style.display = \"none\";\n }\n const showButtonsConfig = showButtons || getConfig(\"showButtons\");\n const showProgressConfig =\n showProgress || getConfig(\"showProgress\") || false;\n const showFooter =\n (showButtonsConfig == null\n ? void 0\n : showButtonsConfig.includes(\"next\")) ||\n (showButtonsConfig == null\n ? void 0\n : showButtonsConfig.includes(\"previous\")) ||\n showProgressConfig;\n popover.closeButton.style.display = showButtonsConfig.includes(\"close\")\n ? \"block\"\n : \"none\";\n if (showFooter) {\n popover.footer.style.display = \"flex\";\n popover.progress.style.display = showProgressConfig ? \"block\" : \"none\";\n popover.nextButton.style.display = showButtonsConfig.includes(\"next\")\n ? \"block\"\n : \"none\";\n popover.previousButton.style.display = showButtonsConfig.includes(\n \"previous\"\n )\n ? \"block\"\n : \"none\";\n } else {\n popover.footer.style.display = \"none\";\n }\n const disabledButtonsConfig =\n disableButtons || getConfig(\"disableButtons\") || [];\n if (\n disabledButtonsConfig == null\n ? void 0\n : disabledButtonsConfig.includes(\"next\")\n ) {\n popover.nextButton.disabled = true;\n popover.nextButton.classList.add(\"gleap-tour-popover-btn-disabled\");\n }\n if (\n disabledButtonsConfig == null\n ? void 0\n : disabledButtonsConfig.includes(\"previous\")\n ) {\n popover.previousButton.disabled = true;\n popover.previousButton.classList.add(\"gleap-tour-popover-btn-disabled\");\n }\n if (\n disabledButtonsConfig == null\n ? void 0\n : disabledButtonsConfig.includes(\"close\")\n ) {\n popover.closeButton.disabled = true;\n popover.closeButton.classList.add(\"gleap-tour-popover-btn-disabled\");\n }\n const popoverWrapper = popover.wrapper;\n popoverWrapper.style.display = \"block\";\n popoverWrapper.style.left = \"\";\n popoverWrapper.style.top = \"\";\n popoverWrapper.style.bottom = \"\";\n popoverWrapper.style.right = \"\";\n popoverWrapper.id = \"gleap-tour-popover-content\";\n popoverWrapper.setAttribute(\"role\", \"dialog\");\n popoverWrapper.setAttribute(\"aria-labelledby\", \"gleap-tour-popover-title\");\n popoverWrapper.setAttribute(\n \"aria-describedby\",\n \"gleap-tour-popover-description\"\n );\n const popoverArrow = popover.arrow;\n popoverArrow.className = \"gleap-tour-popover-arrow\";\n const customPopoverClass =\n ((_a = step.popover) == null ? void 0 : _a.popoverClass) ||\n getConfig(\"popoverClass\") ||\n \"\";\n popoverWrapper.className =\n `gleap-tour-popover ${customPopoverClass}`.trim();\n onDriverClick(\n popover.wrapper,\n (e) => {\n var _a2, _b2, _c;\n const target = e.target;\n const onNextClick =\n ((_a2 = step.popover) == null ? void 0 : _a2.onNextClick) ||\n getConfig(\"onNextClick\");\n const onPrevClick =\n ((_b2 = step.popover) == null ? void 0 : _b2.onPrevClick) ||\n getConfig(\"onPrevClick\");\n const onCloseClick =\n ((_c = step.popover) == null ? void 0 : _c.onCloseClick) ||\n getConfig(\"onCloseClick\");\n if (target.classList.contains(\"gleap-tour-popover-next-btn\")) {\n if (onNextClick) {\n return onNextClick(element, step, {\n config: getConfig(),\n state: getState(),\n });\n } else {\n return emit(\"nextClick\");\n }\n }\n if (target.classList.contains(\"gleap-tour-popover-prev-btn\")) {\n if (onPrevClick) {\n return onPrevClick(element, step, {\n config: getConfig(),\n state: getState(),\n });\n } else {\n return emit(\"prevClick\");\n }\n }\n if (target.classList.contains(\"gleap-tour-popover-close-btn\")) {\n if (onCloseClick) {\n return onCloseClick(element, step, {\n config: getConfig(),\n state: getState(),\n });\n } else {\n return emit(\"closeClick\");\n }\n }\n return void 0;\n },\n (target) => {\n return (\n !(popover == null ? void 0 : popover.description.contains(target)) &&\n !(popover == null ? void 0 : popover.title.contains(target)) &&\n typeof target.className === \"string\" &&\n target.className.includes(\"gleap-tour-popover\")\n );\n }\n );\n setState(\"popover\", popover);\n const onPopoverRender =\n ((_b = step.popover) == null ? void 0 : _b.onPopoverRender) ||\n getConfig(\"onPopoverRender\");\n if (onPopoverRender) {\n onPopoverRender(popover, {\n config: getConfig(),\n state: getState(),\n });\n }\n repositionPopover(element, step);\n bringInView(popoverWrapper);\n const isToDummyElement = element.classList.contains(\n \"gleap-tour-dummy-element\"\n );\n const focusableElement = getFocusableElements([\n popoverWrapper,\n ...(isToDummyElement ? [] : [element]),\n ]);\n if (focusableElement.length > 0) {\n focusableElement[0].focus();\n }\n }\n function getPopoverDimensions() {\n const popover = getState(\"popover\");\n if (!(popover == null ? void 0 : popover.wrapper)) {\n return;\n }\n const boundingClientRect = popover.wrapper.getBoundingClientRect();\n const stagePadding = getConfig(\"stagePadding\") || 0;\n const popoverOffset = getConfig(\"popoverOffset\") || 0;\n return {\n width: boundingClientRect.width + stagePadding + popoverOffset,\n height: boundingClientRect.height + stagePadding + popoverOffset,\n realWidth: boundingClientRect.width,\n realHeight: boundingClientRect.height,\n };\n }\n function calculateTopForLeftRight(alignment, config) {\n const {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n } = config;\n if (alignment === \"start\") {\n return Math.max(\n Math.min(\n elementDimensions.top - popoverPadding,\n window.innerHeight -\n popoverDimensions.realHeight -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n if (alignment === \"end\") {\n return Math.max(\n Math.min(\n elementDimensions.top -\n (popoverDimensions == null\n ? void 0\n : popoverDimensions.realHeight) +\n elementDimensions.height +\n popoverPadding,\n window.innerHeight -\n (popoverDimensions == null\n ? void 0\n : popoverDimensions.realHeight) -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n if (alignment === \"center\") {\n return Math.max(\n Math.min(\n elementDimensions.top +\n elementDimensions.height / 2 -\n (popoverDimensions == null\n ? void 0\n : popoverDimensions.realHeight) /\n 2,\n window.innerHeight -\n (popoverDimensions == null\n ? void 0\n : popoverDimensions.realHeight) -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n return 0;\n }\n function calculateLeftForTopBottom(alignment, config) {\n const {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n } = config;\n if (alignment === \"start\") {\n return Math.max(\n Math.min(\n elementDimensions.left - popoverPadding,\n window.innerWidth -\n popoverDimensions.realWidth -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n if (alignment === \"end\") {\n return Math.max(\n Math.min(\n elementDimensions.left -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) +\n elementDimensions.width +\n popoverPadding,\n window.innerWidth -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n if (alignment === \"center\") {\n return Math.max(\n Math.min(\n elementDimensions.left +\n elementDimensions.width / 2 -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) /\n 2,\n window.innerWidth -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n return 0;\n }\n function repositionPopover(element, step) {\n const popover = getState(\"popover\");\n if (!popover) {\n return;\n }\n const { align = \"start\", side = \"left\" } =\n (step == null ? void 0 : step.popover) || {};\n const requiredAlignment = align;\n const requiredSide =\n element.id === \"gleap-tour-dummy-element\" ? \"over\" : side;\n const popoverPadding = getConfig(\"stagePadding\") || 0;\n const popoverDimensions = getPopoverDimensions();\n const popoverArrowDimensions = popover.arrow.getBoundingClientRect();\n const elementDimensions = element.getBoundingClientRect();\n const topValue = elementDimensions.top - popoverDimensions.height;\n let isTopOptimal = topValue >= 0;\n const bottomValue =\n window.innerHeight -\n (elementDimensions.bottom + popoverDimensions.height);\n let isBottomOptimal = bottomValue >= 0;\n const leftValue = elementDimensions.left - popoverDimensions.width;\n let isLeftOptimal = leftValue >= 0;\n const rightValue =\n window.innerWidth - (elementDimensions.right + popoverDimensions.width);\n let isRightOptimal = rightValue >= 0;\n const noneOptimal =\n !isTopOptimal && !isBottomOptimal && !isLeftOptimal && !isRightOptimal;\n let popoverRenderedSide = requiredSide;\n if (requiredSide === \"top\" && isTopOptimal) {\n isRightOptimal = isLeftOptimal = isBottomOptimal = false;\n } else if (requiredSide === \"bottom\" && isBottomOptimal) {\n isRightOptimal = isLeftOptimal = isTopOptimal = false;\n } else if (requiredSide === \"left\" && isLeftOptimal) {\n isRightOptimal = isTopOptimal = isBottomOptimal = false;\n } else if (requiredSide === \"right\" && isRightOptimal) {\n isLeftOptimal = isTopOptimal = isBottomOptimal = false;\n }\n if (requiredSide === \"over\") {\n const leftToSet = window.innerWidth / 2 - popoverDimensions.realWidth / 2;\n const topToSet =\n window.innerHeight / 2 - popoverDimensions.realHeight / 2;\n popover.wrapper.style.left = `${leftToSet}px`;\n popover.wrapper.style.right = `auto`;\n popover.wrapper.style.top = `${topToSet}px`;\n popover.wrapper.style.bottom = `auto`;\n } else if (noneOptimal) {\n const leftValue2 =\n window.innerWidth / 2 -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) / 2;\n const bottomValue2 = 10;\n popover.wrapper.style.left = `${leftValue2}px`;\n popover.wrapper.style.right = `auto`;\n popover.wrapper.style.bottom = `${bottomValue2}px`;\n popover.wrapper.style.top = `auto`;\n } else if (isLeftOptimal) {\n const leftToSet = Math.min(\n leftValue,\n window.innerWidth -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) -\n popoverArrowDimensions.width\n );\n const topToSet = calculateTopForLeftRight(requiredAlignment, {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n });\n popover.wrapper.style.left = `${leftToSet}px`;\n popover.wrapper.style.top = `${topToSet}px`;\n popover.wrapper.style.bottom = `auto`;\n popover.wrapper.style.right = \"auto\";\n popoverRenderedSide = \"left\";\n } else if (isRightOptimal) {\n const rightToSet = Math.min(\n rightValue,\n window.innerWidth -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) -\n popoverArrowDimensions.width\n );\n const topToSet = calculateTopForLeftRight(requiredAlignment, {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n });\n popover.wrapper.style.right = `${rightToSet}px`;\n popover.wrapper.style.top = `${topToSet}px`;\n popover.wrapper.style.bottom = `auto`;\n popover.wrapper.style.left = \"auto\";\n popoverRenderedSide = \"right\";\n } else if (isTopOptimal) {\n const topToSet = Math.min(\n topValue,\n window.innerHeight -\n popoverDimensions.realHeight -\n popoverArrowDimensions.width\n );\n let leftToSet = calculateLeftForTopBottom(requiredAlignment, {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n });\n popover.wrapper.style.top = `${topToSet}px`;\n popover.wrapper.style.left = `${leftToSet}px`;\n popover.wrapper.style.bottom = `auto`;\n popover.wrapper.style.right = \"auto\";\n popoverRenderedSide = \"top\";\n } else if (isBottomOptimal) {\n const bottomToSet = Math.min(\n bottomValue,\n window.innerHeight -\n (popoverDimensions == null ? void 0 : popoverDimensions.realHeight) -\n popoverArrowDimensions.width\n );\n let leftToSet = calculateLeftForTopBottom(requiredAlignment, {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n });\n popover.wrapper.style.left = `${leftToSet}px`;\n popover.wrapper.style.bottom = `${bottomToSet}px`;\n popover.wrapper.style.top = `auto`;\n popover.wrapper.style.right = \"auto\";\n popoverRenderedSide = \"bottom\";\n }\n if (!noneOptimal) {\n renderPopoverArrow(requiredAlignment, popoverRenderedSide, element);\n } else {\n popover.arrow.classList.add(\"gleap-tour-popover-arrow-none\");\n }\n }\n function renderPopoverArrow(alignment, side, element) {\n const popover = getState(\"popover\");\n if (!popover) {\n return;\n }\n const elementDimensions = element.getBoundingClientRect();\n const popoverDimensions = getPopoverDimensions();\n const popoverArrow = popover.arrow;\n const popoverWidth = popoverDimensions.width;\n const windowWidth = window.innerWidth;\n const elementWidth = elementDimensions.width;\n const elementLeft = elementDimensions.left;\n const popoverHeight = popoverDimensions.height;\n const windowHeight = window.innerHeight;\n const elementTop = elementDimensions.top;\n const elementHeight = elementDimensions.height;\n popoverArrow.className = \"gleap-tour-popover-arrow\";\n let arrowSide = side;\n let arrowAlignment = alignment;\n if (side === \"top\") {\n if (elementLeft + elementWidth <= 0) {\n arrowSide = \"right\";\n arrowAlignment = \"end\";\n } else if (elementLeft + elementWidth - popoverWidth <= 0) {\n arrowSide = \"top\";\n arrowAlignment = \"start\";\n }\n if (elementLeft >= windowWidth) {\n arrowSide = \"left\";\n arrowAlignment = \"end\";\n } else if (elementLeft + popoverWidth >= windowWidth) {\n arrowSide = \"top\";\n arrowAlignment = \"end\";\n }\n } else if (side === \"bottom\") {\n if (elementLeft + elementWidth <= 0) {\n arrowSide = \"right\";\n arrowAlignment = \"start\";\n } else if (elementLeft + elementWidth - popoverWidth <= 0) {\n arrowSide = \"bottom\";\n arrowAlignment = \"start\";\n }\n if (elementLeft >= windowWidth) {\n arrowSide = \"left\";\n arrowAlignment = \"start\";\n } else if (elementLeft + popoverWidth >= windowWidth) {\n arrowSide = \"bottom\";\n arrowAlignment = \"end\";\n }\n } else if (side === \"left\") {\n if (elementTop + elementHeight <= 0) {\n arrowSide = \"bottom\";\n arrowAlignment = \"end\";\n } else if (elementTop + elementHeight - popoverHeight <= 0) {\n arrowSide = \"left\";\n arrowAlignment = \"start\";\n }\n if (elementTop >= windowHeight) {\n arrowSide = \"top\";\n arrowAlignment = \"end\";\n } else if (elementTop + popoverHeight >= windowHeight) {\n arrowSide = \"left\";\n arrowAlignment = \"end\";\n }\n } else if (side === \"right\") {\n if (elementTop + elementHeight <= 0) {\n arrowSide = \"bottom\";\n arrowAlignment = \"start\";\n } else if (elementTop + elementHeight - popoverHeight <= 0) {\n arrowSide = \"right\";\n arrowAlignment = \"start\";\n }\n if (elementTop >= windowHeight) {\n arrowSide = \"top\";\n arrowAlignment = \"start\";\n } else if (elementTop + popoverHeight >= windowHeight) {\n arrowSide = \"right\";\n arrowAlignment = \"end\";\n }\n } else;\n if (!arrowSide) {\n popoverArrow.classList.add(\"gleap-tour-popover-arrow-none\");\n } else {\n popoverArrow.classList.add(`gleap-tour-popover-arrow-side-${arrowSide}`);\n popoverArrow.classList.add(\n `gleap-tour-popover-arrow-align-${arrowAlignment}`\n );\n }\n }\n function createPopover() {\n const wrapper = document.createElement(\"div\");\n wrapper.classList.add(\"gleap-tour-popover\");\n const arrow = document.createElement(\"div\");\n arrow.classList.add(\"gleap-tour-popover-arrow\");\n const title = document.createElement(\"div\");\n title.id = \"gleap-tour-popover-title\";\n title.classList.add(\"gleap-tour-popover-title\");\n title.style.display = \"none\";\n title.innerText = \"Popover Title\";\n const description = document.createElement(\"div\");\n description.id = \"gleap-tour-popover-description\";\n description.classList.add(\"gleap-tour-popover-description\");\n description.style.display = \"none\";\n description.innerText = \"Popover description is here\";\n const closeButton = document.createElement(\"button\");\n closeButton.type = \"button\";\n closeButton.classList.add(\"gleap-tour-popover-close-btn\");\n closeButton.setAttribute(\"aria-label\", \"Close\");\n closeButton.innerHTML = \"×\";\n const footer = document.createElement(\"div\");\n footer.classList.add(\"gleap-tour-popover-footer\");\n const progress = document.createElement(\"span\");\n progress.classList.add(\"gleap-tour-popover-progress-text\");\n progress.innerText = \"\";\n const footerButtons = document.createElement(\"span\");\n footerButtons.classList.add(\"gleap-tour-popover-navigation-btns\");\n const previousButton = document.createElement(\"button\");\n previousButton.type = \"button\";\n previousButton.classList.add(\"gleap-tour-popover-prev-btn\");\n previousButton.innerHTML = \"← Previous\";\n const nextButton = document.createElement(\"button\");\n nextButton.type = \"button\";\n nextButton.classList.add(\"gleap-tour-popover-next-btn\");\n nextButton.innerHTML = \"Next →\";\n footerButtons.appendChild(previousButton);\n footerButtons.appendChild(nextButton);\n footer.appendChild(progress);\n footer.appendChild(footerButtons);\n wrapper.appendChild(closeButton);\n wrapper.appendChild(arrow);\n wrapper.appendChild(title);\n wrapper.appendChild(description);\n wrapper.appendChild(footer);\n return {\n wrapper,\n arrow,\n title,\n description,\n footer,\n previousButton,\n nextButton,\n closeButton,\n footerButtons,\n progress,\n };\n }\n function destroyPopover() {\n var _a;\n const popover = getState(\"popover\");\n if (!popover) {\n return;\n }\n (_a = popover.wrapper.parentElement) == null\n ? void 0\n : _a.removeChild(popover.wrapper);\n }\n function driver(options = {}) {\n configure(options);\n function handleClose() {\n if (!getConfig(\"allowClose\")) {\n return;\n }\n destroy();\n }\n function moveNext() {\n const activeIndex = getState(\"activeIndex\");\n const steps = getConfig(\"steps\") || [];\n if (typeof activeIndex === \"undefined\") {\n return;\n }\n const nextStepIndex = activeIndex + 1;\n if (steps[nextStepIndex]) {\n drive(nextStepIndex);\n } else {\n destroy();\n }\n }\n function movePrevious() {\n const activeIndex = getState(\"activeIndex\");\n const steps = getConfig(\"steps\") || [];\n if (typeof activeIndex === \"undefined\") {\n return;\n }\n const previousStepIndex = activeIndex - 1;\n if (steps[previousStepIndex]) {\n drive(previousStepIndex);\n } else {\n destroy();\n }\n }\n function moveTo(index) {\n const steps = getConfig(\"steps\") || [];\n if (steps[index]) {\n drive(index);\n } else {\n destroy();\n }\n }\n function handleArrowLeft() {\n var _a;\n const isTransitioning = getState(\"__transitionCallback\");\n if (isTransitioning) {\n return;\n }\n const activeIndex = getState(\"activeIndex\");\n const activeStep = getState(\"__activeStep\");\n const activeElement = getState(\"__activeElement\");\n\n if (activeStep.mode === \"CLICK\") {\n return;\n }\n if (\n typeof activeIndex === \"undefined\" ||\n typeof activeStep === \"undefined\"\n ) {\n return;\n }\n const currentStepIndex = getState(\"activeIndex\");\n if (typeof currentStepIndex === \"undefined\") {\n return;\n }\n const onPrevClick =\n ((_a = activeStep.popover) == null ? void 0 : _a.onPrevClick) ||\n getConfig(\"onPrevClick\");\n if (onPrevClick) {\n return onPrevClick(activeElement, activeStep, {\n config: getConfig(),\n state: getState(),\n });\n }\n movePrevious();\n }\n function handleArrowRight() {\n var _a;\n const isTransitioning = getState(\"__transitionCallback\");\n if (isTransitioning) {\n return;\n }\n const activeIndex = getState(\"activeIndex\");\n const activeStep = getState(\"__activeStep\");\n const activeElement = getState(\"__activeElement\");\n\n if (activeStep.mode === \"CLICK\") {\n return;\n }\n if (\n typeof activeIndex === \"undefined\" ||\n typeof activeStep === \"undefined\"\n ) {\n return;\n }\n const onNextClick =\n ((_a = activeStep.popover) == null ? void 0 : _a.onNextClick) ||\n getConfig(\"onNextClick\");\n if (onNextClick) {\n return onNextClick(activeElement, activeStep, {\n config: getConfig(),\n state: getState(),\n });\n }\n moveNext();\n }\n function init() {\n if (getState(\"isInitialized\")) {\n return;\n }\n setState(\"isInitialized\", true);\n document.body.classList.add(\n \"gleap-tour-active\",\n getConfig(\"animate\") ? \"gleap-tour-fade\" : \"gleap-tour-simple\"\n );\n initEvents();\n listen(\"overlayClick\", handleClose);\n listen(\"escapePress\", handleClose);\n listen(\"arrowLeftPress\", handleArrowLeft);\n listen(\"arrowRightPress\", handleArrowRight);\n }\n function drive(stepIndex = 0) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n const steps = getConfig(\"steps\");\n if (!steps) {\n console.error(\"No steps to drive through\");\n destroy();\n return;\n }\n if (!steps[stepIndex]) {\n destroy();\n return;\n }\n setState(\"__activeOnDestroyed\", document.activeElement);\n setState(\"activeIndex\", stepIndex);\n const currentStep = steps[stepIndex];\n const hasNextStep = steps[stepIndex + 1];\n const hasPreviousStep = steps[stepIndex - 1];\n const doneBtnText =\n ((_a = currentStep.popover) == null ? void 0 : _a.doneBtnText) ||\n getConfig(\"doneBtnText\") ||\n \"Done\";\n const allowsClosing = getConfig(\"allowClose\");\n const showProgress =\n typeof ((_b = currentStep.popover) == null\n ? void 0\n : _b.showProgress) !== \"undefined\"\n ? (_c = currentStep.popover) == null\n ? void 0\n : _c.showProgress\n : getConfig(\"showProgress\");\n const progressText =\n ((_d = currentStep.popover) == null ? void 0 : _d.progressText) ||\n getConfig(\"progressText\") ||\n \"{{current}} of {{total}}\";\n const progressTextReplaced = progressText\n .replace(\"{{current}}\", `${stepIndex + 1}`)\n .replace(\"{{total}}\", `${steps.length}`);\n const configuredButtons =\n ((_e = currentStep.popover) == null ? void 0 : _e.showButtons) ||\n getConfig(\"showButtons\");\n const calculatedButtons = [\n \"next\",\n \"previous\",\n ...(allowsClosing ? [\"close\"] : []),\n ].filter((b) => {\n return (\n !(configuredButtons == null ? void 0 : configuredButtons.length) ||\n configuredButtons.includes(b)\n );\n });\n const onNextClick =\n ((_f = currentStep.popover) == null ? void 0 : _f.onNextClick) ||\n getConfig(\"onNextClick\");\n const onPrevClick =\n ((_g = currentStep.popover) == null ? void 0 : _g.onPrevClick) ||\n getConfig(\"onPrevClick\");\n const onCloseClick =\n ((_h = currentStep.popover) == null ? void 0 : _h.onCloseClick) ||\n getConfig(\"onCloseClick\");\n highlight({\n ...currentStep,\n popover: {\n showButtons: calculatedButtons,\n nextBtnText: !hasNextStep ? doneBtnText : void 0,\n disableButtons: [...(!hasPreviousStep ? [\"previous\"] : [])],\n showProgress,\n progressText: progressTextReplaced,\n onNextClick: onNextClick\n ? onNextClick\n : () => {\n if (!hasNextStep) {\n destroy();\n } else {\n drive(stepIndex + 1);\n }\n },\n onPrevClick: onPrevClick\n ? onPrevClick\n : () => {\n drive(stepIndex - 1);\n },\n onCloseClick: onCloseClick\n ? onCloseClick\n : () => {\n destroy();\n },\n ...((currentStep == null ? void 0 : currentStep.popover) || {}),\n },\n });\n }\n function destroy(withOnDestroyStartedHook = true) {\n const activeElement = getState(\"__activeElement\");\n const activeStep = getState(\"__activeStep\");\n const activeOnDestroyed = getState(\"__activeOnDestroyed\");\n const onDestroyStarted = getConfig(\"onDestroyStarted\");\n if (withOnDestroyStartedHook && onDestroyStarted) {\n const isActiveDummyElement =\n !activeElement ||\n (activeElement == null ? void 0 : activeElement.id) ===\n \"gleap-tour-dummy-element\";\n onDestroyStarted(\n isActiveDummyElement ? void 0 : activeElement,\n activeStep,\n {\n config: getConfig(),\n state: getState(),\n }\n );\n return;\n }\n const onDeselected =\n (activeStep == null ? void 0 : activeStep.onDeselected) ||\n getConfig(\"onDeselected\");\n const onDestroyed = getConfig(\"onDestroyed\");\n document.body.classList.remove(\n \"gleap-tour-active\",\n \"gleap-tour-fade\",\n \"gleap-tour-simple\"\n );\n destroyEvents();\n destroyPopover();\n destroyHighlight();\n destroyOverlay();\n destroyEmitter();\n resetState();\n if (activeElement && activeStep) {\n const isActiveDummyElement =\n activeElement.id === \"gleap-tour-dummy-element\";\n if (onDeselected) {\n onDeselected(\n isActiveDummyElement ? void 0 : activeElement,\n activeStep,\n {\n config: getConfig(),\n state: getState(),\n }\n );\n }\n if (onDestroyed) {\n onDestroyed(\n isActiveDummyElement ? void 0 : activeElement,\n activeStep,\n {\n config: getConfig(),\n state: getState(),\n }\n );\n }\n }\n if (activeOnDestroyed) {\n activeOnDestroyed.focus();\n }\n }\n return {\n isActive: () => getState(\"isInitialized\") || false,\n refresh: requireRefresh,\n drive: (stepIndex = 0) => {\n init();\n drive(stepIndex);\n },\n setConfig: configure,\n setSteps: (steps) => {\n resetState();\n configure({\n ...getConfig(),\n steps,\n });\n },\n getConfig,\n getState,\n getActiveIndex: () => getState(\"activeIndex\"),\n isFirstStep: () => getState(\"activeIndex\") === 0,\n isLastStep: () => {\n const steps = getConfig(\"steps\") || [];\n const activeIndex = getState(\"activeIndex\");\n return activeIndex !== void 0 && activeIndex === steps.length - 1;\n },\n getActiveStep: () => getState(\"activeStep\"),\n getActiveElement: () => getState(\"activeElement\"),\n getPreviousElement: () => getState(\"previousElement\"),\n getPreviousStep: () => getState(\"previousStep\"),\n moveNext,\n movePrevious,\n moveTo,\n hasNextStep: () => {\n const steps = getConfig(\"steps\") || [];\n const activeIndex = getState(\"activeIndex\");\n return activeIndex !== void 0 && steps[activeIndex + 1];\n },\n hasPreviousStep: () => {\n const steps = getConfig(\"steps\") || [];\n const activeIndex = getState(\"activeIndex\");\n return activeIndex !== void 0 && steps[activeIndex - 1];\n },\n highlight: (step) => {\n init();\n highlight({\n ...step,\n popover: step.popover\n ? {\n showButtons: [],\n showProgress: false,\n progressText: \"\",\n ...step.popover,\n }\n : void 0,\n });\n },\n destroy: () => {\n destroy(false);\n },\n };\n }\n return driver;\n})({});\n\nexport default GleapTours;\n","import { GleapConfigManager, GleapTranslationManager } from \"./Gleap\";\nimport { calculateContrast, loadIcon } from \"./UI\";\n\nconst localStorageKey = \"gleap-tour-data\";\nconst pointerContainerId = \"copilot-pointer-container\";\nconst styleId = \"copilot-tour-styles\";\nconst copilotJoinedContainerId = \"copilot-joined-container\";\n\nfunction estimateReadTime(text) {\n if (typeof window === \"undefined\") return;\n\n const wordsPerSecond = 3.6; // Average reading speed\n const wordCount = text.split(/\\s+/).filter((word) => word.length > 0).length;\n const readTimeInSeconds = Math.ceil(wordCount / wordsPerSecond);\n return readTimeInSeconds + 1;\n}\n\nfunction htmlToPlainText(html) {\n if (typeof window === \"undefined\") return;\n\n const tempDiv = document.createElement(\"div\");\n tempDiv.innerHTML = html;\n return tempDiv.textContent || \"\";\n}\n\nfunction scrollToElement(element) {\n if (typeof window === \"undefined\") return;\n\n if (element) {\n element.scrollIntoView({\n behavior: \"smooth\",\n block: \"center\",\n inline: \"center\",\n });\n }\n}\n\nfunction performClickAnimation(posX, posY) {\n if (typeof window === \"undefined\") return;\n\n const wave = document.createElement(\"div\");\n wave.className = \"click-wave\";\n wave.style.left = `${posX - 17}px`;\n wave.style.top = `${posY - 17}px`;\n document.body.appendChild(wave);\n setTimeout(() => {\n wave.remove();\n }, 800);\n}\n\nfunction waitForElement(selector, timeout = 5000) {\n if (typeof window === \"undefined\") return;\n\n const pollInterval = 100;\n const maxAttempts = timeout / pollInterval;\n let attempts = 0;\n return new Promise((resolve, reject) => {\n const interval = setInterval(() => {\n const element = document.querySelector(selector);\n if (element) {\n clearInterval(interval);\n resolve(element);\n } else if (attempts >= maxAttempts) {\n clearInterval(interval);\n reject(new Error(`Element not found for selector: ${selector}`));\n }\n attempts++;\n }, pollInterval);\n });\n}\n\nfunction smoothScrollToY(yPosition) {\n if (typeof window === \"undefined\") return;\n\n const viewportHeight = window.innerHeight;\n const targetScrollPosition = yPosition - viewportHeight / 2;\n window.scrollTo({\n top: targetScrollPosition,\n behavior: \"smooth\",\n });\n}\n\nasync function canPlayAudio() {\n if (typeof window === \"undefined\") return;\n\n const audio = new Audio(\n \"data:audio/wav;base64,UklGRigAAABXQVZFZm10IBAAAAABAAEARKwAABCxAgAEABAAZGF0YQAAAAA=\"\n );\n try {\n await audio.play();\n return true;\n } catch (err) {\n return false;\n }\n}\n\n// Helper: Check if an element is fully visible in the viewport.\nfunction isElementFullyVisible(el) {\n if (typeof window === \"undefined\") return;\n\n const rect = el.getBoundingClientRect();\n return (\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <= window.innerHeight &&\n rect.right <= window.innerWidth\n );\n}\n\n// Helper: Get scrollable ancestors of an element.\nfunction getScrollableAncestors(el) {\n if (typeof window === \"undefined\") return;\n\n let ancestors = [];\n let current = el.parentElement;\n while (current) {\n const style = window.getComputedStyle(current);\n if (\n (style.overflowY === \"auto\" || style.overflowY === \"scroll\") &&\n current.scrollHeight > current.clientHeight\n ) {\n ancestors.push(current);\n }\n current = current.parentElement;\n }\n return ancestors;\n}\n\nexport default class GleapCopilotTours {\n productTourData = undefined;\n productTourId = undefined;\n currentActiveIndex = undefined;\n lastArrowPositionX = undefined;\n lastArrowPositionY = undefined;\n onCompleteCallback = undefined;\n audioMuted = false;\n currentAudio = undefined;\n\n // Cached pointer container.\n _pointerContainer = null;\n // For scroll handling.\n _scrollListeners = [];\n _currentAnchor = null;\n _currentStep = null;\n _scrollDebounceTimer = null;\n\n // GleapReplayRecorder singleton.\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapCopilotTours();\n }\n return this.instance;\n }\n\n constructor() {\n const self = this;\n\n if (typeof window !== \"undefined\") {\n this._scrollListeners = [];\n this._currentAnchor = null;\n this._currentStep = null;\n this._scrollDebounceTimer = null;\n\n window.addEventListener(\"resize\", () => {\n if (\n self.productTourId &&\n self.currentActiveIndex >= 0 &&\n self.productTourData &&\n self.productTourData.steps\n ) {\n const steps = self.productTourData.steps;\n const currentStep = steps[self.currentActiveIndex];\n if (\n currentStep &&\n currentStep.selector &&\n currentStep.selector !== \"\"\n ) {\n self.updatePointerPosition(\n document.querySelector(currentStep.selector),\n currentStep\n );\n }\n }\n });\n }\n }\n\n disable() {\n this.disabled = true;\n \n this.cleanup();\n }\n\n startWithConfig(tourId, config, onCompleteCallback = undefined) {\n if (typeof window === \"undefined\") return;\n if (this.productTourId) return;\n if (this.disabled) return;\n\n this.productTourId = tourId;\n this.productTourData = config;\n this.currentActiveIndex = 0;\n this.onCompleteCallback = onCompleteCallback;\n this.start();\n }\n\n storeUncompletedTour() {\n if (typeof window === \"undefined\") return;\n if (this.productTourId && this.productTourData) {\n try {\n let data = JSON.parse(\n JSON.stringify({\n tourData: this.productTourData,\n tourId: this.productTourId,\n })\n );\n data.tourData.steps = data.tourData.steps.slice(\n this.currentActiveIndex || 0,\n data.tourData.steps.length\n );\n localStorage.setItem(localStorageKey, JSON.stringify(data));\n } catch (e) {\n // Optionally log error in development mode.\n }\n } else {\n localStorage.removeItem(localStorageKey);\n }\n }\n\n // Attach scroll listeners with a debounce to update the pointer position after scrolling stops.\n attachScrollListeners(anchor, currentStep) {\n if (typeof window === \"undefined\") return;\n if (!anchor) return;\n const scrollableAncestors = getScrollableAncestors(anchor);\n // Also include window.\n scrollableAncestors.push(window);\n scrollableAncestors.forEach((el) => {\n const handler = () => {\n clearTimeout(this._scrollDebounceTimer);\n this._scrollDebounceTimer = setTimeout(() => {\n this.updatePointerPosition(anchor, currentStep);\n }, 150);\n };\n el.addEventListener(\"scroll\", handler, { passive: true });\n this._scrollListeners.push({ el, handler });\n });\n }\n\n // Remove scroll listeners and clear debounce timer.\n removeScrollListeners() {\n if (typeof window === \"undefined\") return;\n if (this._scrollListeners && this._scrollListeners.length > 0) {\n this._scrollListeners.forEach(({ el, handler }) => {\n el.removeEventListener(\"scroll\", handler);\n });\n this._scrollListeners = [];\n }\n if (this._scrollDebounceTimer) {\n clearTimeout(this._scrollDebounceTimer);\n this._scrollDebounceTimer = null;\n }\n }\n\n // Updated pointer position:\n // 1. Scroll the element into view.\n // 2. After the element is fully visible (or after a maximum delay), update the pointer position to point towards the element.\n updatePointerPosition(anchor, currentStep) {\n if (typeof window === \"undefined\") return;\n try {\n const container =\n this._pointerContainer || document.getElementById(pointerContainerId);\n if (!container) return;\n\n if (!anchor) {\n container.style.position = \"fixed\";\n container.style.left = \"50%\";\n container.style.top = \"50%\";\n container.style.transform = \"translate(-50%, -50%)\";\n smoothScrollToY(window.innerHeight / 2);\n this.removeScrollListeners();\n this._currentAnchor = null;\n this._currentStep = null;\n return;\n }\n\n // Step 1: Scroll the element into view.\n scrollToElement(anchor);\n\n // Step 2: Poll until the element is fully visible (or after maximum polls).\n const pollInterval = 100;\n const maxPolls = 20;\n let pollCount = 0;\n const updateFinalPosition = () => {\n if (isElementFullyVisible(anchor) || pollCount >= maxPolls) {\n // Compute final target coordinates.\n const anchorRect = anchor.getBoundingClientRect();\n const targetX = anchorRect.left + anchorRect.width / 2;\n const targetY = anchorRect.top + anchorRect.height / 2 + 10; // 10px downward offset.\n container.style.position = \"fixed\";\n container.style.left = `${targetX}px`;\n container.style.top = `${targetY}px`;\n container.style.transform = \"translate(-50%, -50%)\";\n\n // Adjust container if too far right.\n let containerWidthSpace = 350;\n if (containerWidthSpace > window.innerWidth - 40) {\n containerWidthSpace = window.innerWidth - 40;\n }\n if (targetX + containerWidthSpace > window.innerWidth - 20) {\n container.classList.add(\"copilot-pointer-container-right\");\n } else {\n container.classList.remove(\"copilot-pointer-container-right\");\n }\n\n // Reattach scroll listeners if the target or step has changed.\n if (\n this._currentAnchor !== anchor ||\n this._currentStep !== currentStep\n ) {\n this.removeScrollListeners();\n this._currentAnchor = anchor;\n this._currentStep = currentStep;\n this.attachScrollListeners(anchor, currentStep);\n }\n } else {\n pollCount++;\n setTimeout(updateFinalPosition, pollInterval);\n }\n };\n updateFinalPosition();\n } catch (e) {\n // Optionally log errors.\n }\n }\n\n cleanup() {\n if (typeof window === \"undefined\") return;\n document.body.classList.add(\"gl-copilot-fade-out\");\n if (this.currentAudio) {\n this.currentAudio.pause();\n }\n setTimeout(() => {\n if (this._pointerContainer) {\n this._pointerContainer.remove();\n this._pointerContainer = null;\n } else {\n const container = document.getElementById(pointerContainerId);\n if (container) container.remove();\n }\n const copilotInfoContainer = document.getElementById(\n copilotJoinedContainerId\n );\n if (copilotInfoContainer) copilotInfoContainer.remove();\n const styleNode = document.getElementById(styleId);\n if (styleNode) styleNode.remove();\n document.body.classList.remove(\"gl-copilot-fade-out\");\n }, 800);\n\n this.productTourId = undefined;\n this.productTourData = undefined;\n \n this.removeScrollListeners();\n }\n\n toggleAudio(muted = false) {\n this.audioMuted = muted;\n if (this.currentAudio) {\n this.currentAudio.muted = this.audioMuted;\n }\n document.querySelector(`.${copilotJoinedContainerId}-mute`).innerHTML =\n loadIcon(this.audioMuted ? \"unmute\" : \"mute\");\n }\n\n setupCopilotTour() {\n if (typeof window === \"undefined\") return;\n\n const primaryColor =\n GleapConfigManager.getInstance().flowConfig?.color ?? \"#485BFF\";\n const contrastColor = calculateContrast(primaryColor);\n\n let styleNode = document.getElementById(styleId);\n if (!styleNode) {\n styleNode = document.createElement(\"style\");\n styleNode.id = styleId;\n styleNode.type = \"text/css\";\n styleNode.textContent = `\n #${pointerContainerId} {\n position: absolute;\n top: 0;\n left: 0;\n display: flex;\n align-items: flex-start;\n pointer-events: none;\n z-index: 2147483610;\n transition: all 0.5s ease;\n }\n .${pointerContainerId}-clickmode {\n cursor: pointer;\n pointer-events: all !important;\n }\n .${pointerContainerId}-clickmode #copilot-info-bubble-content {\n display: flex !important;\n }\n .${pointerContainerId}-clickmode svg {\n display: none !important;\n }\n #${pointerContainerId} svg {\n width: 20px;\n height: auto;\n fill: none;\n }\n #copilot-info-bubble {\n position: relative;\n }\n #copilot-info-bubble-content-container {\n position: absolute;\n top: 0px;\n left: 0px;\n min-width: min(300px, 80vw);\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n }\n .${pointerContainerId}-right #copilot-info-bubble-content-container {\n left: auto !important;\n right: 0px !important;\n align-items: flex-end;\n }\n .${pointerContainerId}-right .copilot-info-bubble-content {\n margin-right: 5px;\n }\n .${pointerContainerId}-right svg {\n transform: scaleX(-1);\n }\n #copilot-info-bubble-content svg {\n width: 16px;\n height: 16px;\n display: inline-block !important;\n margin-left: 5px;\n }\n #copilot-info-bubble-content {\n margin-top: 18px;\n margin-left: 5px;\n padding: 10px 15px;\n border-radius: 20px;\n background-color: black;\n color: white;\n font-family: Arial, sans-serif;\n font-size: 14px;\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);\n max-width: 100%;\n white-space: normal;\n overflow-wrap: break-word;\n word-break: normal;\n hyphens: none;\n }\n .${pointerContainerId}-right #copilot-info-bubble-content {\n margin-top: 30px;\n margin-left: 0px;\n margin-right: 5px;\n }\n .click-wave {\n position: absolute;\n width: 34px;\n height: 34px;\n border-radius: 50%;\n background-color: rgba(0, 0, 0, 0.5);\n pointer-events: none;\n z-index: 2147483611;\n animation: click-wave-animation 0.8s ease forwards;\n }\n @keyframes click-wave-animation {\n 0% {\n transform: scale(0.2);\n opacity: 1;\n }\n 100% {\n transform: scale(2);\n opacity: 0;\n }\n }\n @keyframes slideInFromTop {\n 0% {\n transform: translateY(-100%);\n opacity: 0;\n }\n 100% {\n transform: translateY(0);\n opacity: 1;\n }\n }\n .${copilotJoinedContainerId} {\n position: fixed;\n top: 20px;\n right: 20px;\n z-index: 2147483610;\n background: #fff;\n padding: 6px;\n border-radius: 10px;\n box-shadow: 0 0 20px 0 #C294F2;\n display: flex;\n align-items: center;\n gap: 8px;\n border: 1px solid rgba(192, 146, 242, 0.5);\n animation: slideInFromTop 0.5s ease-out forwards;\n }\n .${copilotJoinedContainerId} span {\n font-size: 13px;\n color: #000;\n font-family: sans-serif;\n }\n .${copilotJoinedContainerId}-avatar {\n width: 24px;\n height: 24px;\n flex-shrink: 0;\n border-radius: 6px;\n }\n .${copilotJoinedContainerId}-mute {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n .${copilotJoinedContainerId}-mute svg {\n width: 20px;\n height: auto;\n cursor: pointer;\n animation: pulsate 2s infinite;\n }\n .${copilotJoinedContainerId}-mute svg:hover {\n opacity: 0.8;\n }\n .${copilotJoinedContainerId}-dismiss {\n display: flex;\n align-items: center;\n justify-content: center;\n padding-right: 3px;\n }\n .${copilotJoinedContainerId}-dismiss svg {\n width: 15px;\n height: auto;\n cursor: pointer;\n }\n .${copilotJoinedContainerId}-dismiss svg:hover {\n opacity: 0.8;\n }\n @keyframes pulsate {\n 0% {\n transform: scale(1);\n opacity: 1;\n }\n 50% {\n transform: scale(1.1);\n opacity: 0.8;\n }\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n }\n @keyframes glCoFadeIn {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n @keyframes glCoFadeOut {\n 0% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n }\n\n .gleap-audio-unmute-modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n background-color: rgba(0, 0, 0, 0.5);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 2147483620;\n }\n\n .gleap-audio-unmute-modal {\n background-color: #fff;\n padding: 20px;\n border-radius: 8px;\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);\n text-align: center;\n max-width: 90%;\n width: 400px;\n }\n\n .gleap-audio-unmute-modal p {\n margin-bottom: 20px;\n font-size: 16px;\n line-height: 22px;\n font-weight: normal;\n }\n\n .gleap-audio-unmute-button {\n background: ${primaryColor};\n color: ${contrastColor};\n outline: none;\n border: none;\n padding: 10px 14px;\n border-radius: 12px;\n font-size: 14px;\n font-weight: bold;\n cursor: pointer;\n }\n\n .gleap-audio-unmute-button:hover {\n opacity: 0.8;\n }\n\n .gleap-tour-continue-button {\n color: ${primaryColor};\n text-decoration: none;\n cursor: pointer;\n font-size: 14px;\n font-weight: bold;\n border: none;\n background: none;\n padding: 0;\n margin: 0;\n margin-left: 20px;\n }\n\n .gleap-tour-continue-button:hover {\n opacity: 0.8;\n }\n\n body.gl-copilot-fade-out::before,\n body.gl-copilot-fade-out::after,\n body.gl-copilot-fade-out #${copilotJoinedContainerId} {\n animation: glCoFadeOut 0.8s ease-out forwards;\n }\n ${\n this.productTourData?.playVoice ?? true\n ? \"\"\n : `\n .${copilotJoinedContainerId}-mute {\n display: none;\n }\n `\n }\n ${\n this.productTourData.gradient\n ? `body::before {\n content: \"\";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n box-sizing: border-box;\n border: 18px solid transparent;\n filter: blur(25px);\n border-image-slice: 1;\n border-image-source: linear-gradient(45deg, #ED5587, #FBE6A9, #a6e3f8, #C294F2);\n animation: glCoFadeIn 1.5s ease-out forwards;\n }\n \n body::after {\n content: \"\";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n opacity: 0.5;\n box-sizing: border-box;\n border: 3px solid transparent;\n border-image-slice: 1;\n border-image-source: linear-gradient(45deg, #ED5587, #FBE6A9, #a6e3f8, #C294F2);\n animation: glCoFadeIn 1.5s ease-out forwards;\n }`\n : `body::after {\n content: \"\";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n opacity: 0;\n }`\n }\n `;\n document.head.appendChild(styleNode);\n }\n\n const container = document.createElement(\"div\");\n container.id = pointerContainerId;\n container.style.opacity = 0;\n // Cache the pointer container.\n this._pointerContainer = container;\n\n const svgMouse = document.createElementNS(\n \"http://www.w3.org/2000/svg\",\n \"svg\"\n );\n svgMouse.setAttribute(\"viewBox\", \"0 0 380 476\");\n svgMouse.innerHTML =\n '';\n\n const infoBubble = document.createElement(\"div\");\n infoBubble.id = \"copilot-info-bubble\";\n infoBubble.innerHTML = `
`;\n\n const copilotInfoContainer = document.createElement(\"div\");\n copilotInfoContainer.id = copilotJoinedContainerId;\n copilotInfoContainer.classList.add(copilotJoinedContainerId);\n copilotInfoContainer.innerHTML = `\n \n ${this.productTourData?.kaiSlug}\n
\n ${loadIcon(this.audioMuted ? \"unmute\" : \"mute\")}\n
\n ${\n this.productTourData?.allowClose\n ? `
\n ${loadIcon(\"dismiss\")}\n
`\n : \"\"\n }\n `;\n document.body.appendChild(copilotInfoContainer);\n\n const self = this;\n\n document\n .querySelector(`.${copilotJoinedContainerId}-mute`)\n .addEventListener(\"click\", () => {\n this.toggleAudio(!this.audioMuted);\n });\n\n if (this.productTourData?.allowClose) {\n document\n .querySelector(`.${copilotJoinedContainerId}-dismiss`)\n .addEventListener(\"click\", () => {\n this.completeTour(false);\n });\n }\n\n container.appendChild(svgMouse);\n container.appendChild(infoBubble);\n document.body.appendChild(container);\n }\n\n start() {\n if (typeof window === \"undefined\") return;\n if (this.disabled) return;\n\n const config = this.productTourData;\n if (!config) return;\n canPlayAudio().then((supported) => {\n this.audioMuted = !supported;\n this.setupCopilotTour();\n\n if (this.audioMuted && config?.showUnmuteModal) {\n this.showAudioUnmuteModal();\n } else {\n setTimeout(() => {\n this.renderNextStep();\n }, 1500);\n }\n });\n }\n\n showAudioUnmuteModal() {\n // Create the overlay element\n const modalOverlay = document.createElement(\"div\");\n modalOverlay.classList.add(\"gleap-audio-unmute-modal-overlay\");\n\n // Create the modal container element\n const modal = document.createElement(\"div\");\n modal.classList.add(\"gleap-audio-unmute-modal\");\n\n // Create and add the modal message\n const message = document.createElement(\"p\");\n message.textContent = this.productTourData?.unmuteModalTitle;\n modal.appendChild(message);\n\n // Create the \"Unmute Audio\" button\n const unmuteButton = document.createElement(\"button\");\n unmuteButton.classList.add(\"gleap-audio-unmute-button\");\n unmuteButton.textContent = this.productTourData?.unmuteModalButton;\n unmuteButton.addEventListener(\"click\", () => {\n this.toggleAudio(false);\n if (modalOverlay.parentNode) {\n modalOverlay.parentNode.removeChild(modalOverlay);\n }\n setTimeout(() => {\n this.renderNextStep();\n }, 1000);\n });\n modal.appendChild(unmuteButton);\n\n // Create the \"Start Anyway\" button\n const startAnywayButton = document.createElement(\"button\");\n startAnywayButton.classList.add(\"gleap-tour-continue-button\");\n startAnywayButton.textContent = this.productTourData?.unmuteModalContinue;\n startAnywayButton.addEventListener(\"click\", () => {\n if (modalOverlay.parentNode) {\n modalOverlay.parentNode.removeChild(modalOverlay);\n }\n setTimeout(() => {\n this.renderNextStep();\n }, 1000);\n });\n modal.appendChild(startAnywayButton);\n\n // Build the modal and attach it to the DOM\n modalOverlay.appendChild(modal);\n document.body.appendChild(modalOverlay);\n }\n\n completeTour(success = true) {\n if (typeof window === \"undefined\") return;\n this.cleanup();\n if (this.onCompleteCallback) {\n this.onCompleteCallback(success);\n }\n }\n\n renderNextStep() {\n if (typeof window === \"undefined\") return;\n if (this.disabled) return;\n\n const self = this;\n const config = this.productTourData;\n const steps = config.steps;\n if (this.currentActiveIndex >= steps.length) {\n setTimeout(() => {\n this.completeTour();\n }, 500);\n return;\n }\n const currentStep = steps[this.currentActiveIndex];\n const handleStep = (element) => {\n this._pointerContainer.style.display = \"flex\";\n if (currentStep.selector && currentStep.selector.length > 0 && !element) {\n this.completeTour(false);\n return;\n }\n const gotToNextStep = () => {\n if (currentStep.mode === \"INPUT\" && element) {\n function proceedClickmode() {\n document\n .querySelector(`#${pointerContainerId}`)\n .classList.remove(\"copilot-pointer-container-clickmode\");\n element.classList.remove(\"gleap-input-highlight\");\n document.getElementById(pointerContainerId).style.display = \"none\";\n self.currentActiveIndex++;\n self.storeUncompletedTour();\n self.renderNextStep();\n }\n const inputModeType = currentStep.inputType ?? \"default\";\n if (inputModeType === \"default\") {\n function handleInputEvent(e) {\n if (e?.target?.value?.length === 0) return;\n const cursor = document.getElementById(\n `copilot-info-bubble-content`\n );\n if (!cursor) return;\n cursor.innerHTML = `${GleapTranslationManager.translateText(\n \"next\"\n )} \n \n`;\n cursor.addEventListener(\"click\", proceedClickmode, {\n once: true,\n });\n element.classList.add(\"gleap-input-highlight\");\n document\n .querySelector(`#${pointerContainerId}`)\n .classList.add(\"copilot-pointer-container-clickmode\");\n element.removeEventListener(\"input\", handleInputEvent);\n }\n element.addEventListener(\"input\", handleInputEvent, {\n once: false,\n });\n if (element.hasAttribute(\"contenteditable\")) {\n element.addEventListener(\"keyup\", handleInputEvent, {\n once: false,\n });\n }\n element.addEventListener(\n \"blur\",\n () => {\n element.focus();\n },\n { once: true }\n );\n element.focus();\n } else {\n const inputValue = currentStep.inputValue ?? \"\";\n let index = 0;\n function typeCharacter() {\n if (index < inputValue.length) {\n element.value += inputValue[index];\n index++;\n setTimeout(typeCharacter, 100);\n } else {\n setTimeout(() => {\n proceedClickmode();\n }, 1200);\n }\n }\n typeCharacter();\n }\n return;\n }\n self.currentActiveIndex++;\n self.storeUncompletedTour();\n if (currentStep.mode === \"CLICK\" && element) {\n const rect = element.getBoundingClientRect();\n const scrollX = window.scrollX || 0;\n const scrollY = window.scrollY || 0;\n performClickAnimation(\n rect.left + rect.width / 2 + scrollX,\n rect.top + rect.height / 2 + scrollY\n );\n element.click();\n }\n self.renderNextStep();\n };\n\n this.updatePointerPosition(element, currentStep);\n const message = currentStep?.message\n ? htmlToPlainText(currentStep.message)\n : \"🤔\";\n document.getElementById(`copilot-info-bubble-content`).textContent =\n message;\n this._pointerContainer.style.opacity = 1;\n const readTime = estimateReadTime(message);\n const continueWithNoAudio = () => {\n this.currentAudio = undefined;\n setTimeout(() => {\n gotToNextStep();\n }, readTime * 1000);\n };\n if (currentStep.voice && currentStep.voice.length > 0) {\n this.currentAudio = new Audio(currentStep.voice);\n if (this.audioMuted) {\n this.currentAudio.muted = true;\n }\n this.currentAudio.addEventListener(\"ended\", () => {\n setTimeout(() => {\n gotToNextStep();\n }, 1000);\n });\n this.currentAudio\n .play()\n .then(() => {})\n .catch((error) => {\n continueWithNoAudio();\n });\n } else {\n continueWithNoAudio();\n }\n };\n\n const elementPromise = currentStep.selector\n ? waitForElement(currentStep.selector)\n : Promise.resolve(null);\n elementPromise.then(handleStep).catch(() => handleStep(null));\n }\n}\n","import { loadIcon } from \"./UI\";\nimport GleapTours from \"./GleapTours\";\nimport Gleap, { GleapEventManager, GleapSession } from \"./Gleap\";\nimport GleapCopilotTours from \"./GleapCopilotTours\";\n\nconst localStorageKey = \"gleap-tour-data\";\n\nexport default class GleapProductTours {\n productTourData = undefined;\n productTourId = undefined;\n unmuted = false;\n currentActiveIndex = undefined;\n gleapTourObj = undefined;\n disabled = false;\n\n // GleapReplayRecorder singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapProductTours();\n return this.instance;\n } else {\n return this.instance;\n }\n }\n\n disable() {\n if (this.gleapTourObj) {\n this.gleapTourObj.destroy();\n }\n\n // Disable copilot tours.\n GleapCopilotTours.getInstance().disable();\n\n this.gleapTourObj = undefined;\n this.disabled = true;\n }\n\n constructor() {\n const self = this;\n\n if (typeof window !== \"undefined\") {\n const beforeUnloadListener = (event) => {\n if (\n !self?.disabled &&\n self?.productTourId &&\n self?.productTourData &&\n self?.productTourData?.tourType !== \"cobrowse\"\n ) {\n self.storeUncompletedTour();\n }\n };\n\n if (typeof window !== \"undefined\") {\n window.addEventListener(\"beforeunload\", beforeUnloadListener);\n }\n }\n }\n\n startWithConfig(tourId, config, delay = 0, manually = false) {\n // Prevent multiple tours from being started.\n if (this.productTourId || this.disabled) {\n return;\n }\n\n this.productTourId = tourId;\n this.productTourData = config;\n this.currentActiveIndex = 0;\n\n if (manually) {\n this.start();\n } else {\n const self = this;\n\n // Validate product tour.\n GleapSession.getInstance()\n .validateProductTour(tourId)\n .then(() => {\n if (delay > 0) {\n return setTimeout(() => {\n self.start();\n }, delay);\n } else {\n return this.start();\n }\n })\n .catch((error) => {\n console.log(\"Product tour is not live. Cleaning up...\");\n console.error(error);\n\n self.onComplete(false);\n });\n }\n }\n\n onComplete(success = true) {\n const comData = {\n tourId: this.productTourId,\n };\n\n if (success) {\n GleapEventManager.notifyEvent(\"productTourCompleted\", comData);\n Gleap.trackEvent(`tour-${this.productTourId}-completed`, comData);\n } else {\n GleapEventManager.notifyEvent(\"productTourQuit\", comData);\n Gleap.trackEvent(`tour-${this.productTourId}-quit`, comData);\n }\n\n // Clear data.\n if (this.gleapTourObj) {\n this.gleapTourObj.destroy();\n }\n\n this.gleapTourObj = undefined;\n this.productTourData = undefined;\n this.productTourId = undefined;\n this.currentActiveIndex = undefined;\n this.clearUncompletedTour();\n }\n\n loadUncompletedTour() {\n try {\n const data = JSON.parse(localStorage.getItem(localStorageKey));\n if (data?.tourData && data?.tourId) {\n return data;\n }\n } catch (e) {}\n\n return null;\n }\n\n storeUncompletedTour() {\n if (this.productTourId && this.productTourData) {\n try {\n let data = JSON.parse(\n JSON.stringify({\n tourData: this.productTourData,\n tourId: this.productTourId,\n })\n );\n\n data.tourData.steps = data.tourData.steps.slice(\n this.currentActiveIndex || 0,\n data.tourData.steps.length\n );\n\n localStorage.setItem(localStorageKey, JSON.stringify(data));\n } catch (e) {}\n } else {\n this.clearUncompletedTour();\n }\n }\n\n clearUncompletedTour() {\n try {\n localStorage.removeItem(localStorageKey);\n } catch (e) {}\n }\n\n start() {\n const config = this.productTourData;\n if (!config) {\n return;\n }\n\n if (config.tourType === \"cobrowse\") {\n return GleapCopilotTours.getInstance().startWithConfig(\n this.productTourId,\n config,\n (success) => {\n this.onComplete(success);\n }\n );\n }\n\n this.unmuted = false;\n const steps = config.steps;\n const self = this;\n\n var driverSteps = [];\n\n for (let i = 0; i < steps.length; i++) {\n const step = steps[i];\n\n const isClickMode = step.mode === \"CLICK\";\n const isInputMode = step.mode === \"INPUT\";\n\n var message = \"\";\n var hasSender = false;\n\n if (step.type === \"video-pointer\") {\n message = `
\n \n
${loadIcon(\n \"unmute\"\n )}
\n
`;\n } else {\n var senderHTML = ``;\n\n if (config.sender && config.sender.firstName) {\n hasSender = true;\n senderHTML = `
\n
\n
${config.sender.firstName}
\n
`;\n }\n\n message = `${senderHTML}
${step.message}
`;\n }\n\n const disableInteraction = !isClickMode && !isInputMode;\n\n var driverStep = {\n disableActiveInteraction: disableInteraction,\n mode: step.mode,\n popover: {\n description: message,\n popoverClass: `gleap-tour-popover-${step.type} ${\n !hasSender && \"gleap-tour-popover-no-sender\"\n } ${config.allowClose && \"gleap-tour-popover-can-close\"}`,\n ...(isClickMode\n ? {\n showButtons: [],\n }\n : {}),\n },\n };\n if (step.selector && step.selector.length > 0) {\n driverStep.element = step.selector;\n }\n driverSteps.push(driverStep);\n }\n\n var buttons = [\"next\", \"close\"];\n\n if (config.backButton) {\n buttons.push(\"previous\");\n }\n\n function onDocumentClick(evnt) {\n try {\n var gleapTourPopover = document.querySelector(\".gleap-tour-popover\");\n if (gleapTourPopover && !gleapTourPopover.contains(evnt.target)) {\n const stepIndex = self.gleapTourObj.getActiveIndex();\n const step = steps[stepIndex];\n const element = self.gleapTourObj.getActiveElement();\n\n if (step?.mode === \"CLICK\" && evnt?.target !== element) {\n const isInsideElement = element.contains(evnt?.target);\n if (!isInsideElement) {\n // Ignore clicks outside of the actual element.\n return;\n }\n }\n\n // Store next step index.\n self.currentActiveIndex = (self.currentActiveIndex || 0) + 1;\n self.storeUncompletedTour();\n\n if (\n (element && element.tagName === \"INPUT\") ||\n step.mode === \"INPUT\" ||\n evnt?.target?.id.includes(\"tooltip-svg\")\n ) {\n // Prevent.\n } else {\n self.gleapTourObj.moveNext();\n }\n }\n } catch (e) {}\n }\n\n this.gleapTourObj = GleapTours({\n showProgress: true,\n allowKeyboardControl: false,\n steps: driverSteps,\n showProgress: steps.length > 1,\n allowClose: config.allowClose,\n nextBtnText: config.nextText,\n doneBtnText: config.doneText,\n prevBtnText: config.prevText,\n showButtons: buttons,\n onHighlightStarted: (element, step, config) => {\n this.currentActiveIndex = config?.state?.activeIndex;\n this.storeUncompletedTour();\n },\n onElementNotFound: (step) => {\n document.removeEventListener(\"click\", onDocumentClick);\n\n this.onComplete(false);\n },\n onDestroyStarted: () => {\n if (!this.gleapTourObj.hasNextStep()) {\n // Mark as completed.\n this.onComplete(true);\n } else {\n // Mark as quit.\n this.onComplete(false);\n }\n\n document.removeEventListener(\"click\", onDocumentClick);\n },\n onPopoverRender: (popoverElement) => {\n // Fix for images and videos.\n if (popoverElement) {\n const mediaElements = document.querySelectorAll(\n \".gleap-tour-popover-description img, .gleap-tour-popover-description video\"\n );\n\n const performRequentialRefresh = () => {\n setTimeout(() => {\n this.gleapTourObj.refresh();\n }, 500);\n setTimeout(() => {\n this.gleapTourObj.refresh();\n }, 750);\n };\n\n for (let i = 0; i < mediaElements.length; i++) {\n const mediaElement = mediaElements[i];\n if (mediaElement.tagName === \"IMG\") {\n mediaElement.addEventListener(\"load\", () => {\n performRequentialRefresh();\n });\n mediaElement.addEventListener(\"error\", () => {\n performRequentialRefresh();\n });\n } else if (mediaElement.tagName === \"VIDEO\") {\n mediaElement.addEventListener(\"canplaythrough\", () => {\n performRequentialRefresh();\n });\n mediaElement.addEventListener(\"error\", () => {\n performRequentialRefresh();\n });\n }\n }\n }\n\n const playingClass = \"gleap-tour-video--playing\";\n const playPauseContainer = document.querySelector(\n \".gleap-tour-video-playpause\"\n );\n\n const videoElement = document.querySelector(\".gleap-tour-video-obj\");\n if (videoElement) {\n const videoContainer = videoElement.closest(\".gleap-tour-video\");\n\n if (self.unmuted) {\n if (videoElement) {\n videoElement.pause();\n videoElement.muted = false;\n videoElement.play();\n videoContainer.classList.add(playingClass);\n }\n }\n\n videoElement.addEventListener(\"ended\", function () {\n playPauseContainer.innerHTML = loadIcon(\"replay\");\n playPauseContainer.classList.add(\n \"gleap-tour-video-svg--fullscreen\"\n );\n videoContainer.classList.remove(playingClass);\n });\n\n videoElement.addEventListener(\"play\", function () {\n playPauseContainer.classList.remove(\n \"gleap-tour-video-svg--fullscreen\"\n );\n });\n\n if (playPauseContainer) {\n playPauseContainer.addEventListener(\"click\", () => clickVideo());\n }\n\n const clickVideo = () => {\n if (videoElement.muted) {\n self.unmuted = true;\n\n videoElement.pause();\n videoElement.currentTime = 0;\n videoElement.muted = false;\n videoElement.play();\n\n playPauseContainer.innerHTML = loadIcon(\"mute\");\n videoContainer.classList.add(playingClass);\n } else if (videoElement.paused) {\n videoElement.muted = false;\n videoElement.play();\n\n playPauseContainer.innerHTML = loadIcon(\"mute\");\n videoContainer.classList.add(playingClass);\n } else {\n videoElement.pause();\n playPauseContainer.innerHTML = loadIcon(\"unmute\");\n videoContainer.classList.remove(playingClass);\n }\n };\n }\n },\n });\n this.gleapTourObj.drive();\n\n document.addEventListener(\"click\", onDocumentClick, true);\n }\n}\n","import { injectStyledCSS } from \"./UI\";\nimport GleapNetworkIntercepter from \"./GleapNetworkIntercepter\";\nimport {\n fixGleapHeight,\n gleapDataParser,\n runFunctionWhenDomIsReady,\n} from \"./GleapHelper\";\nimport GleapSession from \"./GleapSession\";\nimport GleapStreamedEvent from \"./GleapStreamedEvent\";\nimport GleapConfigManager from \"./GleapConfigManager\";\nimport GleapFeedback from \"./GleapFeedback\";\nimport GleapFrameManager from \"./GleapFrameManager\";\nimport GleapMetaDataManager from \"./GleapMetaDataManager\";\nimport GleapConsoleLogManager from \"./GleapConsoleLogManager\";\nimport GleapClickListener from \"./GleapClickListener\";\nimport GleapFeedbackButtonManager from \"./GleapFeedbackButtonManager\";\nimport GleapCustomDataManager from \"./GleapCustomDataManager\";\nimport GleapEventManager from \"./GleapEventManager\";\nimport GleapCustomActionManager from \"./GleapCustomActionManager\";\nimport GleapReplayRecorder from \"./GleapReplayRecorder\";\nimport GleapMarkerManager from \"./GleapMarkerManager\";\nimport GleapTranslationManager from \"./GleapTranslationManager\";\nimport GleapShortcutListener from \"./GleapShortcutListener\";\nimport GleapPreFillManager from \"./GleapPreFillManager\";\nimport GleapNotificationManager from \"./GleapNotificationManager\";\nimport GleapBannerManager from \"./GleapBannerManager\";\nimport GleapModalManager from \"./GleapModalManager\";\nimport GleapAudioManager from \"./GleapAudioManager\";\nimport GleapTagManager from \"./GleapTagManager\";\nimport GleapAdminManager from \"./GleapAdminManager\";\nimport GleapProductTours from \"./GleapProductTours\";\nimport { checkPageFilter } from \"./GleapPageFilter\";\nimport { registerGleapChecklist } from \"./GleapChecklist\";\nimport ChecklistNetworkManager from \"./ChecklistNetworkManager\";\n\nif (\n typeof window !== \"undefined\" &&\n typeof HTMLCanvasElement !== \"undefined\" &&\n HTMLCanvasElement.prototype &&\n HTMLCanvasElement.prototype.__originalGetContext === undefined\n) {\n HTMLCanvasElement.prototype.__originalGetContext =\n HTMLCanvasElement.prototype.getContext;\n HTMLCanvasElement.prototype.getContext = function (type, options) {\n return this.__originalGetContext(type, {\n ...options,\n preserveDrawingBuffer: true,\n });\n };\n}\n\nif (\n typeof customElements !== \"undefined\" &&\n typeof HTMLElement !== \"undefined\" &&\n typeof window !== \"undefined\"\n) {\n registerGleapChecklist();\n}\n\nclass Gleap {\n static invoked = true;\n static silentCrashReportSent = false;\n initialized = false;\n offlineMode = false;\n disablePageTracking = false;\n disableInAppNotifications = false;\n\n // Global data\n globalData = {\n screenRecordingData: null,\n webReplay: null,\n snapshotPosition: {\n x: 0,\n y: 0,\n },\n };\n\n // Gleap singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new Gleap();\n return this.instance;\n } else {\n return this.instance;\n }\n }\n\n /**\n * Main constructor\n */\n constructor() {\n if (typeof window !== \"undefined\") {\n // Make sure all instances are ready.\n GleapMetaDataManager.getInstance();\n GleapConsoleLogManager.getInstance().start();\n GleapClickListener.getInstance().start();\n GleapAdminManager.getInstance().start();\n }\n }\n\n /**\n * Sets the development environment\n * @param {*} environment\n */\n static setEnvironment(environment) {\n GleapMetaDataManager.getInstance().environment = environment;\n }\n\n /**\n * Set tags to be submitted with each ticket.\n * @param {*} tags\n */\n static setTags(tags) {\n GleapTagManager.getInstance().setTags(tags);\n }\n\n /**\n * Sets a custom URL handler.\n * @param {*} urlHandler\n */\n static setUrlHandler(urlHandler) {\n GleapFrameManager.getInstance().setUrlHandler(urlHandler);\n }\n\n /**\n * Active the Gleap offline mode.\n * @param {*} offlineMode\n */\n static setOfflineMode(offlineMode) {\n const instance = this.getInstance();\n instance.offlineMode = offlineMode;\n }\n\n /**\n * Disable the in-app notifications.\n * @param {*} disableInAppNotifications\n */\n static setDisableInAppNotifications(disableInAppNotifications) {\n const instance = this.getInstance();\n instance.disableInAppNotifications = disableInAppNotifications;\n }\n\n /**\n * Disable the default page tracking.\n * @param {*} disablePageTracking\n */\n static setDisablePageTracking(disablePageTracking) {\n const instance = this.getInstance();\n instance.disablePageTracking = disablePageTracking;\n }\n\n /**\n * Revert console log overwrite.\n */\n static disableConsoleLogOverwrite() {\n GleapConsoleLogManager.getInstance().stop();\n }\n\n /**\n * Set the AI tools.\n * @param {*} tools\n */\n static setAiTools(tools) {\n GleapConfigManager.getInstance().setAiTools(tools);\n GleapFrameManager.getInstance().sendConfigUpdate();\n }\n\n /**\n * Attaches external network logs.\n */\n static attachNetworkLogs(networkLogs) {\n GleapNetworkIntercepter.getInstance().externalRequests =\n gleapDataParser(networkLogs);\n }\n\n /**\n * Add entry to logs.\n * @param {*} message\n * @param {*} logLevel\n * @returns\n */\n static log(message, logLevel = \"INFO\") {\n GleapConsoleLogManager.getInstance().addLog(message, logLevel);\n }\n\n /**\n * Initializes the SDK\n * @param {*} sdkKey\n */\n static initialize(sdkKey) {\n const instance = this.getInstance();\n if (instance.initialized) {\n console.warn(\"Gleap already initialized.\");\n return;\n }\n\n instance.initialized = true;\n\n try {\n fixGleapHeight();\n } catch (error) {}\n\n // Start session\n const sessionInstance = GleapSession.getInstance();\n sessionInstance.sdkKey = sdkKey;\n sessionInstance.setOnSessionReady(() => {\n // Run auto configuration.\n setTimeout(() => {\n GleapConfigManager.getInstance()\n .start()\n .then(() => {\n GleapStreamedEvent.getInstance().start();\n\n runFunctionWhenDomIsReady(() => {\n // Inject the widget buttons\n GleapFeedbackButtonManager.getInstance().injectFeedbackButton();\n\n // Inject the notification container\n GleapNotificationManager.getInstance().injectNotificationUI();\n\n // Check for uncompleted tour.\n Gleap.checkForUncompletedTour();\n\n // Check for URL params.\n Gleap.checkForUrlParams();\n\n // Notify event.\n GleapEventManager.notifyEvent(\"initialized\");\n });\n })\n .catch(function (err) {\n console.warn(\"Failed to initialize Gleap.\");\n });\n }, 0);\n });\n sessionInstance.startSession();\n }\n\n static openURL(url, newTab = false) {\n GleapFrameManager.getInstance().urlHandler(url, newTab);\n }\n\n static checkForUrlParams() {\n if (typeof window === \"undefined\" || !window.location.search) {\n return;\n }\n\n try {\n const urlParams = new URLSearchParams(window.location.search);\n\n const widget = urlParams.get(\"gleap_widget\");\n if (widget && widget.length > 0) {\n Gleap.open();\n }\n\n const conversationFlow = urlParams.get(\"gleap_conversation\");\n if (conversationFlow && conversationFlow.length > 0) {\n if (conversationFlow === \"true\") {\n Gleap.startConversation(true);\n } else {\n Gleap.startBot(conversationFlow, true);\n }\n }\n\n const feedbackFlow = urlParams.get(\"gleap_feedback\");\n if (feedbackFlow && feedbackFlow.length > 0) {\n Gleap.startFeedbackFlow(feedbackFlow);\n }\n const surveyFlow = urlParams.get(\"gleap_survey\");\n const surveyFlowFormat = urlParams.get(\"gleap_survey_format\");\n if (surveyFlow && surveyFlow.length > 0) {\n Gleap.showSurvey(\n surveyFlow,\n surveyFlowFormat === \"survey_full\" ? \"survey_full\" : \"survey\"\n );\n }\n const tourId = urlParams.get(\"gleap_tour\");\n if (tourId && tourId.length > 0) {\n var tourDelay = parseInt(urlParams.get(\"gleap_tour_delay\"));\n if (isNaN(tourDelay)) {\n tourDelay = 2;\n }\n\n setTimeout(() => {\n Gleap.startProductTour(tourId);\n }, tourDelay * 1000);\n }\n } catch (exp) {}\n }\n\n /**\n * Destroy\n * @returns\n */\n static destroy() {\n GleapReplayRecorder.getInstance().stop();\n GleapStreamedEvent.getInstance().stop();\n GleapFrameManager.getInstance().destroy();\n GleapFeedbackButtonManager.getInstance().destroy();\n GleapNotificationManager.getInstance().clearAllNotifications(true);\n GleapSession.getInstance().clearSession(0, false);\n GleapBannerManager.getInstance().removeBannerUI();\n\n // Reset the initialized flag and clear the instance\n this.instance = null;\n }\n\n /**\n * Close any open banner.\n */\n static closeBanner() {\n GleapBannerManager.getInstance().removeBannerUI();\n }\n\n /**\n * Close any open modal.\n */\n static closeModal() {\n GleapModalManager.getInstance().hideModal();\n }\n\n /**\n * Enable or disable Gleap session tracking through cookies.\n * @param {*} useCookies\n */\n static setUseCookies(useCookies) {\n GleapSession.getInstance().useCookies = useCookies;\n }\n\n /**\n * Indentifies the user session\n * @param {string} userId\n * @param {*} userData\n */\n static identify(userId, userData, userHash) {\n return GleapSession.getInstance().identifySession(\n userId,\n gleapDataParser(userData),\n userHash\n );\n }\n\n /**\n * Updates the contact data.\n * @param {*} userData\n */\n static updateContact(userData) {\n return GleapSession.getInstance().updateSession(gleapDataParser(userData));\n }\n\n /**\n * Clears the current contact.\n */\n static clearIdentity() {\n GleapSession.getInstance().clearSession();\n }\n\n /**\n * Returns the current user session\n */\n static getIdentity() {\n return GleapSession.getInstance().getSession();\n }\n\n /**\n * Returns whether the user is identified or not.\n */\n static isUserIdentified() {\n const session = GleapSession.getInstance().session;\n if (session && session.userId && session.userId.length > 0) {\n return true;\n }\n return false;\n }\n\n /**\n * Widget opened status\n * @returns {boolean} isOpened\n */\n static isOpened() {\n return GleapFrameManager.getInstance().isOpened();\n }\n\n /**\n * Hides any open Gleap dialogs.\n */\n static hide() {\n GleapFrameManager.getInstance().hideWidget();\n }\n\n /**\n * Sets the maximum network request count.\n */\n static setMaxNetworkRequests(maxRequests) {\n GleapNetworkIntercepter.getInstance().setMaxRequests(maxRequests);\n }\n\n /**\n * Sets the maximum network request count.\n */\n static startNetworkLogger() {\n GleapNetworkIntercepter.getInstance().start();\n }\n\n /**\n * Sets the network logger blacklist.\n * @param {Array} networkLogBlacklist\n */\n static setNetworkLogsBlacklist(networkLogBlacklist) {\n GleapNetworkIntercepter.getInstance().setBlacklist(networkLogBlacklist);\n }\n\n /**\n * Sets the network logger props to ignore.\n * @param {Array} filters\n */\n static setNetworkLogPropsToIgnore(filters) {\n GleapNetworkIntercepter.getInstance().setFilters(filters);\n }\n\n /**\n * Set custom replay options.\n * @param {*} options\n */\n static setReplayOptions(options) {\n GleapReplayRecorder.getInstance().setOptions(options);\n }\n\n /**\n * Closes any open Gleap dialogs.\n * @param {boolean} resetRoutes\n */\n static close(resetRoutes = false) {\n GleapFrameManager.getInstance().hideWidget(resetRoutes);\n }\n\n /**\n * Starts the Gleap flow.\n */\n static open() {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Track a custom event\n * @param {string} name\n * @param {any} data\n */\n static trackEvent(name, data) {\n GleapStreamedEvent.getInstance().logEvent(name, data);\n }\n\n /**\n * Logs a custom event\n * @param {string} name\n * @param {any} data\n * @deprecated Please use trackEvent instead.\n */\n static logEvent(name, data) {\n GleapStreamedEvent.getInstance().logEvent(name, data);\n }\n\n /**\n * Prefills a specific form field.\n * @param {*} key\n * @param {*} value\n */\n static preFillForm(data) {\n const cleanedData = gleapDataParser(data);\n GleapPreFillManager.getInstance().formPreFill = cleanedData;\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"prefill-form-data\",\n data: cleanedData,\n },\n true\n );\n }\n\n /**\n * Register events for Gleap.\n * @param {*} eventName\n * @param {*} callback\n */\n static on(eventName, callback) {\n GleapEventManager.on(eventName, callback);\n }\n\n /**\n * Enable or disable shortcuts\n * @param {boolean} enabled\n */\n static enableShortcuts(enabled) {\n if (enabled) {\n GleapShortcutListener.getInstance().start();\n } else {\n GleapShortcutListener.getInstance().stop();\n }\n }\n\n /**\n * Show or hide the feedback button\n * @param {*} show\n * @returns\n */\n static showFeedbackButton(show) {\n GleapFeedbackButtonManager.getInstance().toggleFeedbackButton(show);\n }\n\n /**\n * Sets the app version code.\n * @param {string} appVersionCode\n */\n static setAppVersionCode(appVersionCode) {\n GleapMetaDataManager.setAppVersionCode(appVersionCode);\n }\n\n /**\n * Sets the app version code.\n * @param {string} appVersionCode\n */\n static setAppBuildNumber(appBuildNumber) {\n GleapMetaDataManager.setAppBuildNumber(appBuildNumber);\n }\n\n /**\n * Set a custom ws api url.\n * @param {string} wsApiUrl\n */\n static setWSApiUrl(wsApiUrl) {\n GleapSession.getInstance().wsApiUrl = wsApiUrl;\n }\n\n /**\n * Set a custom api url.\n * @param {string} apiUrl\n */\n static setApiUrl(apiUrl) {\n GleapSession.getInstance().apiUrl = apiUrl;\n }\n\n /**\n * Set a custom banner url.\n * @param {string} bannerUrl\n */\n static setBannerUrl(bannerUrl) {\n GleapBannerManager.getInstance().setBannerUrl(bannerUrl);\n }\n\n /**\n * Set a custom modal url.\n * @param {string} modalUrl\n */\n static setModalUrl(modalUrl) {\n GleapModalManager.getInstance().setModalUrl(modalUrl);\n }\n\n /**\n * Set a custom frame api url.\n * @param {string} frameUrl\n */\n static setFrameUrl(frameUrl) {\n GleapFrameManager.getInstance().frameUrl = frameUrl;\n }\n\n /**\n * This method is used to set ticket attributes programmatically.\n * @param {*} key The key of the attribute you want to add.\n * @param {*} value The value to set.\n */\n static setTicketAttribute(key, value) {\n GleapCustomDataManager.getInstance().setTicketAttribute(key, value);\n }\n\n /**\n * This method is used to unset ticket attributes programmatically.\n * @param {*} key The key of the attribute you want to unset.\n */\n static unsetTicketAttribute(key) {\n GleapCustomDataManager.getInstance().unsetTicketAttribute(key);\n }\n\n /**\n * This method is used to clear ticket attributes programmatically.\n */\n static clearTicketAttributes() {\n GleapCustomDataManager.getInstance().clearTicketAttributes();\n }\n\n /**\n * Set custom data that will be attached to the bug-report.\n * @param {*} data\n */\n static attachCustomData(data) {\n GleapCustomDataManager.getInstance().attachCustomData(data);\n }\n\n /**\n * Add one key value pair to the custom data object\n * @param {*} key The key of the custom data entry you want to add.\n * @param {*} value The custom data you want to add.\n */\n static setCustomData(key, value) {\n GleapCustomDataManager.getInstance().setCustomData(key, value);\n }\n\n /**\n * Remove one key value pair of the custom data object\n * @param {*} key The key of the custom data entry you want to remove.\n */\n static removeCustomData(key) {\n GleapCustomDataManager.getInstance().removeCustomData(key);\n }\n\n /**\n * Clear the custom data\n */\n static clearCustomData() {\n GleapCustomDataManager.getInstance().clearCustomData();\n }\n\n /**\n * Play or mute the sound.\n * @param {*} play\n */\n static playSound(play) {\n GleapAudioManager.playSound(play);\n }\n\n /**\n * Show or hide the notification badge count.\n * @param {boolean} showNotificationBadge show or hide the notification badge\n *\n */\n static showTabNotificationBadge(showNotificationBadge) {\n const notificationInstance = GleapNotificationManager.getInstance();\n notificationInstance.showNotificationBadge = showNotificationBadge;\n notificationInstance.updateTabBarNotificationCount();\n }\n\n /**\n * Override the browser language.\n * @param {string} language country code with two letters\n */\n static setLanguage(language) {\n GleapTranslationManager.getInstance().setOverrideLanguage(language);\n\n if (Gleap.getInstance().initialized) {\n setTimeout(() => {\n Gleap.getInstance().softReInitialize();\n\n // Update language for contact.\n Gleap.updateContact({\n lang: language,\n });\n }, 1000);\n }\n }\n\n /**\n * Register custom action\n * @param {*} action\n */\n static registerCustomAction(customAction) {\n GleapCustomActionManager.registerCustomAction(customAction);\n }\n\n /**\n * Triggers a custom action\n * @param {*} actionName\n */\n static triggerCustomAction(name) {\n GleapCustomActionManager.triggerCustomAction(name);\n }\n\n /**\n * Sets a custom color scheme.\n * @param {string} primaryColor\n */\n static setStyles(\n primaryColor,\n headerColor,\n buttonColor,\n backgroundColor = \"#ffffff\",\n borderRadius = 20,\n buttonX = 20,\n buttonY = 20,\n buttonStyle = GleapFeedbackButtonManager.FEEDBACK_BUTTON_BOTTOM_LEFT\n ) {\n runFunctionWhenDomIsReady(() => {\n injectStyledCSS(\n primaryColor,\n headerColor,\n buttonColor,\n borderRadius,\n backgroundColor,\n buttonX,\n buttonY,\n buttonStyle\n );\n });\n }\n\n /**\n * Sends a silent feedback report\n * @param {*} formData\n * @param {*} priority\n * @param {*} excludeData\n */\n static sendSilentCrashReport(\n description = \"\",\n priority = \"MEDIUM\",\n excludeData = {\n screenshot: true,\n replays: true,\n attachments: true,\n }\n ) {\n return Gleap.sendSilentCrashReportWithFormData(\n {\n description,\n },\n priority,\n excludeData\n );\n }\n\n /**\n * Sends a silent feedback report\n * @param {*} formData\n * @param {*} priority\n * @param {*} excludeData\n */\n static sendSilentCrashReportWithFormData(\n formData,\n priority = \"MEDIUM\",\n excludeData = {\n screenshot: true,\n replays: true,\n attachments: true,\n }\n ) {\n if (this.silentCrashReportSent) {\n return;\n }\n\n this.silentCrashReportSent = true;\n setTimeout(() => {\n this.silentCrashReportSent = false;\n }, 10000);\n\n const excludeDataCleaned = excludeData ? gleapDataParser(excludeData) : {};\n const sessionInstance = GleapSession.getInstance();\n if (!sessionInstance.ready) {\n return;\n }\n\n var newFormData = formData ? formData : {};\n if (sessionInstance.session.email) {\n newFormData.reportedBy = sessionInstance.session.email;\n }\n\n const feedback = new GleapFeedback(\n \"CRASH\",\n priority,\n newFormData,\n true,\n excludeDataCleaned\n );\n feedback\n .sendFeedback()\n .then(() => {})\n .catch((error) => {});\n }\n\n /**\n * Shows a survey manually.\n * @param {*} actionType\n * @param {*} format\n */\n static showSurvey(actionType, format = \"survey\") {\n Gleap.startFeedbackFlowWithOptions(\n actionType,\n {\n hideBackButton: true,\n format,\n },\n true\n );\n }\n\n /**\n * Starts a classic feedback form.\n */\n static startClassicForm(formId, showBackButton) {\n Gleap.startFeedbackFlowWithOptions(formId, {\n hideBackButton: !showBackButton,\n });\n }\n\n /**\n * Starts the bug reporting flow.\n */\n static startFeedbackFlow(feedbackFlow, showBackButton) {\n Gleap.startFeedbackFlowWithOptions(feedbackFlow, {\n hideBackButton: !showBackButton,\n });\n }\n\n /**\n * Starts the bug reporting flow.\n */\n static startFeedbackFlowWithOptions(\n feedbackFlow,\n options = {},\n isSurvey = false\n ) {\n const { autostartDrawing, hideBackButton, format } = options;\n const sessionInstance = GleapSession.getInstance();\n if (!sessionInstance.ready) {\n return;\n }\n\n // Initially set scroll position\n Gleap.getInstance().setGlobalDataItem(\"snapshotPosition\", {\n x: window.scrollX,\n y: window.scrollY,\n });\n\n var action = \"start-feedbackflow\";\n if (isSurvey) {\n action = \"start-survey\";\n }\n\n GleapFrameManager.getInstance().setAppMode(isSurvey ? format : \"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: action,\n data: {\n flow: feedbackFlow,\n hideBackButton: hideBackButton,\n format,\n },\n },\n true\n );\n\n if (autostartDrawing) {\n GleapFrameManager.getInstance().showDrawingScreen(\"screenshot\");\n } else {\n GleapFrameManager.getInstance().showWidget();\n }\n }\n\n /**\n * Opens the conversations overview.\n */\n static openConversations(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-conversations\",\n data: {\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens a conversation\n */\n static openConversation(shareToken, showBackButton = true) {\n if (!shareToken) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-conversation\",\n data: {\n shareToken,\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Starts a new conversation\n */\n static startConversation(showBackButton = true) {\n Gleap.startBot(\"\", showBackButton);\n }\n\n /**\n * Starts a new conversation and attaches the bot with the given id.\n */\n static startBot(botId, showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"start-bot\",\n data: {\n botId: botId ? botId : \"\",\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens a help center collection\n */\n static openHelpCenterCollection(collectionId, showBackButton = true) {\n if (!collectionId) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-help-collection\",\n data: {\n collectionId,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens a help article\n */\n static openHelpCenterArticle(articleId, showBackButton = true) {\n if (!articleId) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-help-article\",\n data: {\n articleId,\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens the help center.\n */\n static openHelpCenter(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-helpcenter\",\n data: {\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Search for news articles in the help center\n */\n static searchHelpCenter(term, showBackButton = true) {\n if (!term) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-helpcenter-search\",\n data: {\n term,\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens a news article\n */\n static openNewsArticle(id, showBackButton = true) {\n if (!id) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-news-article\",\n data: {\n id,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Open the checklists overview.\n */\n static openChecklists(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-checklists\",\n data: {},\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Starts a new checklist and opens it.\n */\n static startChecklist(\n outboundId,\n showBackButton = true,\n sharedKey = undefined\n ) {\n if (!outboundId) {\n return false;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"start-checklist\",\n data: {\n outboundId: outboundId,\n hideBackButton: !showBackButton,\n ...(sharedKey ? { sharedKey: sharedKey } : {}),\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n\n return true;\n }\n\n /**\n * Open an existing checklist.\n */\n static openChecklist(checklistId, showBackButton = true) {\n if (!checklistId) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-checklist\",\n data: {\n id: checklistId,\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Gets the full checklist data by validating the outbound ID and fetching the data.\n * @param {string} outboundId - The outbound checklist ID to get data for.\n * @param {string} [sharedKey] - Optional shared key for the checklist.\n * @returns {Promise} A promise that resolves with the full checklist data.\n *\n * Available events for checklist updates (use Gleap.on() to listen):\n * - 'checklist-loaded': Fired when a checklist is initially loaded\n * - 'checklist-update': Fired when checklist data is updated\n * - 'checklist-step-completed': Fired when a step is marked as completed\n * - 'checklist-completed': Fired when the entire checklist is completed\n */\n static getChecklistData(outboundId, sharedKey) {\n if (!outboundId) {\n return Promise.reject(new Error(\"outboundId is required\"));\n }\n\n const networkManager = ChecklistNetworkManager.getInstance();\n\n // First validate the checklist to get the internal ID\n return networkManager\n .validateChecklist(outboundId, sharedKey)\n .then((internalId) => {\n // Then fetch the full checklist data\n return networkManager.fetchChecklist(internalId);\n });\n }\n\n /**\n * Opens the news overview.\n */\n static openNews(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-news\",\n data: {\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens the feature requests overview.\n */\n static openFeatureRequests(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-feature-requests\",\n data: {},\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n isLiveMode() {\n if (this.offlineMode === true) {\n return false;\n }\n\n var hostname = window.location.hostname;\n const isLocalHost =\n [\"localhost\", \"127.0.0.1\", \"0.0.0.0\", \"\", \"::1\"].includes(hostname) ||\n hostname.startsWith(\"192.168.\") ||\n hostname.startsWith(\"10.0.\") ||\n hostname.endsWith(\".local\") ||\n !hostname.includes(\".\");\n return !isLocalHost;\n }\n\n softReInitialize() {\n GleapFrameManager.getInstance().destroy();\n GleapConfigManager.getInstance()\n .start()\n .then(() => {\n // Update the feedback button.\n GleapFeedbackButtonManager.getInstance().refresh();\n\n // Inject the notification container\n GleapNotificationManager.getInstance().injectNotificationUI();\n })\n .catch(function (err) {\n console.warn(\"Failed to initialize Gleap.\");\n });\n }\n\n /**\n * Performs an action.\n * @param {*} action\n */\n performActions(actions) {\n for (let i = 0; i < actions.length; i++) {\n const action = actions[i];\n if (action && action.actionType) {\n if (action.pageFilter && window && window.location) {\n const passed = checkPageFilter(\n window.location.href,\n action.pageFilter,\n action.pageFilterType\n );\n\n if (!passed) {\n continue;\n }\n }\n\n if (action.actionType === \"notification\") {\n if (action?.data?.checklist?.popupType === \"widget\") {\n Gleap.openChecklist(action.data.checklist.id, true);\n } else {\n if (!this.disableInAppNotifications) {\n Gleap.showNotification(action);\n }\n }\n } else if (action.actionType === \"banner\") {\n Gleap.showBanner(action);\n } else if (action.actionType === \"modal\") {\n Gleap.showModal(action);\n } else if (action.actionType === \"tour\") {\n Gleap.startProductTourWithConfig(action.outbound, action.data, false);\n } else {\n Gleap.showSurvey(action.actionType, action.format);\n }\n }\n }\n }\n\n static startProductTour(tourId, checkStartUrl = false) {\n const self = this;\n GleapSession.getInstance()\n .startProductTourConfig(tourId)\n .then((config) => {\n if (\n checkStartUrl &&\n config?.startURL &&\n !window?.location?.href?.includes(config?.baseURL)\n ) {\n window.location.href = `${config.startURL}?gleap_tour=${tourId}&gleap_tour_delay=1`;\n return;\n }\n\n self.startProductTourWithConfig(tourId, config, true);\n })\n .catch((error) => {});\n }\n\n static checkForUncompletedTour() {\n const tourData = GleapProductTours.getInstance().loadUncompletedTour();\n if (tourData) {\n GleapProductTours.getInstance().startWithConfig(\n tourData.tourId,\n tourData.tourData,\n 500\n );\n }\n }\n\n static startProductTourWithConfig(tourId, config, manually = false) {\n GleapProductTours.getInstance().startWithConfig(\n tourId,\n config,\n 0,\n manually\n );\n }\n\n static showBanner(data) {\n try {\n GleapBannerManager.getInstance().showBanner(data);\n } catch (e) {}\n }\n\n static showModal(data) {\n try {\n GleapModalManager.getInstance().showModal(data);\n } catch (e) {}\n }\n\n static showNotification(data) {\n GleapNotificationManager.getInstance().showNotification(data);\n }\n\n /**\n * Sets a global data value\n * @param {*} key\n * @param {*} value\n */\n setGlobalDataItem(key, value) {\n this.globalData[key] = value;\n }\n\n /**\n * Gets a global data value\n * @param {*} key\n * @returns\n */\n getGlobalDataItem(key) {\n return this.globalData[key];\n }\n\n /**\n * Takes the current replay and assigns it to the global data array.\n */\n takeCurrentReplay() {\n const replayData = GleapReplayRecorder.getInstance().getReplayData();\n this.setGlobalDataItem(\"webReplay\", replayData);\n }\n}\n\n// Check for unperformed Gleap actions.\nif (typeof window !== \"undefined\") {\n const GleapActions = window.GleapActions;\n if (GleapActions && GleapActions.length > 0) {\n for (var i = 0; i < GleapActions.length; i++) {\n const GLAction = GleapActions[i];\n if (GLAction && GLAction.e && Gleap[GLAction.e]) {\n Gleap[GLAction.e].apply(Gleap, GLAction.a);\n }\n }\n }\n}\n\nconst handleGleapLink = (href) => {\n try {\n const urlParts = href.split(\"/\");\n const type = urlParts[2];\n if (type === \"article\") {\n const identifier = urlParts[3];\n Gleap.openHelpCenterArticle(identifier, true);\n }\n\n if (type === \"collection\") {\n const identifier = urlParts[3];\n Gleap.openHelpCenterCollection(identifier, true);\n }\n\n if (type === \"flow\") {\n const identifier = urlParts[3];\n Gleap.startFeedbackFlow(identifier, true);\n }\n\n if (type === \"survey\") {\n const identifier = urlParts[3];\n Gleap.showSurvey(identifier);\n }\n\n if (type === \"bot\") {\n const identifier = urlParts[3];\n Gleap.startBot(identifier, true);\n }\n\n if (type === \"news\") {\n const identifier = urlParts[3];\n Gleap.openNewsArticle(identifier, true);\n }\n\n if (type === \"checklist\") {\n const identifier = urlParts[3];\n Gleap.startChecklist(identifier, true, urlParts[4]);\n }\n\n if (type === \"tour\") {\n const identifier = urlParts[3];\n Gleap.startProductTour(identifier);\n }\n } catch (e) {\n console.error(\"Failed to handle Gleap link: \", href);\n }\n};\n\nexport {\n GleapNetworkIntercepter,\n GleapAudioManager,\n GleapNotificationManager,\n GleapBannerManager,\n GleapModalManager,\n GleapPreFillManager,\n GleapShortcutListener,\n GleapMarkerManager,\n GleapTranslationManager,\n GleapReplayRecorder,\n GleapFeedback,\n GleapConsoleLogManager,\n GleapCustomActionManager,\n GleapEventManager,\n GleapCustomDataManager,\n GleapFeedbackButtonManager,\n GleapClickListener,\n GleapSession,\n GleapStreamedEvent,\n GleapConfigManager,\n GleapFrameManager,\n GleapMetaDataManager,\n GleapTagManager,\n GleapProductTours,\n handleGleapLink,\n};\n\nexport default Gleap;\n","/**\n * Gleap Checklist Web Component\n *\n * Displays an interactive checklist fetched from the Gleap API.\n * Allows users to view steps, mark them as done, trigger actions,\n * and automatically updates based on external events. Includes localization support\n * via GleapTranslationManager.\n *\n * Waits for a Gleap session to be available before initializing and\n * reloads when the session changes (via 'session-updated' event).\n *\n * @element gleap-checklist\n *\n * @attr {string} checklistId - The outbound ID of the checklist to display. Required.\n * @attr {boolean} [info=true] - Whether to display the info section (title, description, sender).\n * @attr {boolean} [progressbar=true] - Whether to display the progress bar.\n * @attr {boolean} [dark=false] - Apply dark mode styling.\n * @attr {boolean} [floating=false] - When set to \"true\", shows a small bubble that expands on click.\n *\n * @cssprop --color-bg - Background color.\n * @cssprop --color-font-title - Title text color.\n * @cssprop --color-font-text - Body text color.\n * @cssprop --color-font-light - Lighter text color.\n * @cssprop --color-primary - Primary accent color.\n * @cssprop --color-primary-light - Light primary color shade.\n * @cssprop --color-primary-contrast - Text color for primary buttons.\n * @cssprop --color-border - Border color.\n * @cssprop --color-gray-light - Light gray background/border color.\n * @cssprop --color-gray-lighter - Even lighter gray background.\n * @cssprop --color-gray-dark - Darker gray text/icon color.\n * @cssprop --color-success - Success color (e.g., for completed items).\n * @cssprop --color-success-light - Contrast color for success elements.\n * @cssprop --radius-sm - Small border radius.\n * @cssprop --radius-lg - Large border radius.\n * @cssprop --radius-full - Full (pill) border radius.\n * @cssprop --shadow-sm - Small box shadow.\n * @cssprop --shadow-md - Medium box shadow.\n * @cssprop --animation-duration - Duration for animations (e.g., accordion).\n * @cssprop --animation-timing - Timing function for animations.\n */\nimport ChecklistNetworkManager from \"./ChecklistNetworkManager\";\nimport Gleap, {\n GleapConfigManager,\n GleapSession,\n GleapTranslationManager,\n GleapEventManager,\n} from \"./Gleap\";\n\nexport const registerGleapChecklist = () => {\n if (\n typeof customElements !== \"undefined\" &&\n typeof HTMLElement !== \"undefined\" &&\n typeof window !== \"undefined\"\n ) {\n class GleapChecklist extends HTMLElement {\n /** @private {number} */\n activeStep = -1;\n /** @private {object|null} */\n checklistData = null;\n /** @private {boolean} */\n _isInitialLoad = false;\n /** @private {boolean} */\n _initialActiveSet = false;\n /** @private {boolean} Flag indicating if the component has loaded data at least once. */\n _hasLoaded = false;\n /** @private {boolean} Flag indicating if a Gleap session is currently considered active by the component. */\n _isSessionReady = false;\n\n /** @private {Function} */\n _boundHandleChecklistUpdate = this.handleChecklistUpdate.bind(this);\n /** @private {Function} */\n _boundHandleSessionUpdate = this.handleSessionUpdate.bind(this);\n\n constructor() {\n super();\n this.attachShadow({ mode: \"open\" });\n // Ensure NetworkManager instance is created only if Gleap is available\n try {\n if (\n typeof GleapSession !== \"undefined\" &&\n typeof ChecklistNetworkManager !== \"undefined\"\n ) {\n this._networkManager = ChecklistNetworkManager.getInstance();\n } else {\n this._networkManager = null;\n }\n } catch (e) {\n this._networkManager = null;\n }\n // Bind click handlers for floating mode.\n this._boundFloatingLauncherClick =\n this.handleFloatingLauncherClick.bind(this);\n this._boundFloatingCloseClick =\n this.handleFloatingCloseClick.bind(this);\n this._floatingHideTimeout = null;\n }\n\n // --- Observed Attributes ---\n static get observedAttributes() {\n return [\n \"checklistId\",\n \"info\",\n \"progressbar\",\n \"dark\",\n \"floating\",\n \"sharedKey\",\n ];\n }\n\n // --- Lifecycle Callbacks ---\n connectedCallback() {\n window.addEventListener(\n \"checkListUpdate\",\n this._boundHandleChecklistUpdate\n );\n window.addEventListener(\n \"session-updated\",\n this._boundHandleSessionUpdate\n );\n window.addEventListener(\n \"resize\",\n (this._boundResizeHandler = this.handleResize.bind(this))\n );\n this._checkSessionAndLoad();\n }\n\n disconnectedCallback() {\n window.removeEventListener(\n \"checkListUpdate\",\n this._boundHandleChecklistUpdate\n );\n window.removeEventListener(\n \"session-updated\",\n this._boundHandleSessionUpdate\n );\n window.removeEventListener(\"resize\", this._boundResizeHandler);\n this.removeFloatingClickListeners();\n if (this._floatingHideTimeout) {\n clearTimeout(this._floatingHideTimeout);\n this._floatingHideTimeout = null;\n }\n this.checklistData = null;\n this.activeStep = -1;\n this._hasLoaded = false;\n this._isSessionReady = false;\n this._initialActiveSet = false;\n this.renderResponse();\n }\n\n handleResize() {\n this.updateActiveTaskMaxHeight();\n }\n\n attributeChangedCallback(name, oldValue, newValue) {\n if (oldValue !== newValue) {\n if (name === \"checklistId\" && this._isSessionReady) {\n this.loadChecklist();\n } else if (name !== \"checklistId\" && this._hasLoaded) {\n if (this.checklistData) {\n this.renderChecklist(this.checklistData);\n }\n }\n }\n }\n\n // --- Session Handling ---\n _checkSessionAndLoad() {\n const gleapSessionInstance = this._getGleapSessionInstance();\n const hasChecklistId = this.getAttribute(\"checklistId\");\n\n if (gleapSessionInstance.ready && hasChecklistId) {\n this._isSessionReady = true;\n this._networkManager = ChecklistNetworkManager.getInstance();\n this.loadChecklist();\n } else {\n this._isSessionReady = false;\n this._hasLoaded = false;\n this.checklistData = null;\n this.activeStep = -1;\n this._initialActiveSet = false;\n this.renderResponse();\n }\n }\n\n handleSessionUpdate() {\n this._checkSessionAndLoad();\n }\n\n _getGleapSessionInstance() {\n try {\n return typeof GleapSession !== \"undefined\"\n ? GleapSession.getInstance()\n : null;\n } catch (e) {\n return null;\n }\n }\n\n // --- Getters for Configuration ---\n get infoEnabled() {\n const attr = this.getAttribute(\"info\");\n return attr === null || attr.toLowerCase() !== \"false\";\n }\n\n get progressbarEnabled() {\n const attr = this.getAttribute(\"progressbar\");\n return attr === null || attr.toLowerCase() !== \"false\";\n }\n\n get floatingEnabled() {\n return this.getAttribute(\"floating\") === \"true\";\n }\n\n // --- Translation Helpers ---\n _translate(key, defaultValue = \"\") {\n return GleapTranslationManager.translateText(key) || defaultValue;\n }\n\n _translateWithVars(key, vars, defaultValue = \"\") {\n return (\n GleapTranslationManager.translateTextWithVars(key, vars) ||\n defaultValue\n );\n }\n\n // --- SVG Icons ---\n getCheckIcon() {\n return `\n \n `;\n }\n\n // --- Data Loading and Handling ---\n loadChecklist() {\n if (!this._isSessionReady || !this._networkManager) {\n return;\n }\n const checklistId = this.getAttribute(\"checklistId\");\n if (checklistId) {\n this.activeStep = -1;\n this._initialActiveSet = false;\n this.validateChecklist(checklistId);\n } else {\n this.renderResponse();\n this.checklistData = null;\n this._hasLoaded = false;\n }\n }\n\n getQueryParams() {\n const gleapSessionInstance = this._getGleapSessionInstance();\n if (!gleapSessionInstance?.session) {\n return \"\";\n }\n const session = gleapSessionInstance.session;\n let lang = \"en\";\n try {\n if (typeof GleapTranslationManager !== \"undefined\") {\n lang =\n GleapTranslationManager.getInstance().getActiveLanguage() || \"en\";\n }\n } catch (e) {}\n return `gleapId=${session.gleapId || \"\"}&gleapHash=${\n session.gleapHash || \"\"\n }&lang=${lang}`;\n }\n\n makeRequest(method, url, data, callback) {\n const gleapSessionInstance = this._getGleapSessionInstance();\n if (!gleapSessionInstance?.session) {\n const mockXhr = {\n readyState: 4,\n status: 0,\n responseText: \"Session unavailable\",\n _isMock: true,\n };\n callback(mockXhr);\n return;\n }\n const xhr = new XMLHttpRequest();\n xhr.open(method, url);\n try {\n gleapSessionInstance.injectSession(xhr);\n } catch (e) {}\n if (data) {\n xhr.setRequestHeader(\n \"Content-Type\",\n \"application/json;charset=UTF-8\"\n );\n }\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n callback(xhr);\n }\n };\n xhr.onerror = () => {\n callback(xhr);\n };\n xhr.send(data ? JSON.stringify(data) : null);\n }\n\n validateChecklist(outboundId) {\n if (!this._isSessionReady || !this._networkManager) {\n return;\n }\n this.checklistData = null;\n this._hasLoaded = false;\n this.renderResponse();\n const sharedKey = this.getAttribute(\"sharedKey\");\n\n this._networkManager\n .validateChecklist(outboundId, sharedKey)\n .then((internalId) => {\n if (!this.isConnected || !this._isSessionReady || !internalId) {\n return;\n }\n this.fetchChecklist(internalId);\n })\n .catch((error) => {\n this.renderResponse();\n this.checklistData = null;\n this._hasLoaded = false;\n });\n }\n\n fetchChecklist(checklistId) {\n if (!this._isSessionReady || !this._networkManager) {\n return;\n }\n this._isInitialLoad = !this._hasLoaded;\n this._networkManager\n .fetchChecklist(checklistId)\n .then((data) => {\n if (!this.isConnected || !this._isSessionReady || !data) {\n this._hasLoaded = false;\n this.checklistData = null;\n this._checkSessionAndLoad();\n return;\n }\n this.checklistData = data;\n this._hasLoaded = true;\n if (data.status === \"done\") {\n this.renderResponse();\n return;\n }\n if (this._isInitialLoad && !this._initialActiveSet) {\n const steps = data.outbound?.config?.steps || [];\n const completedSteps = data.completedSteps || [];\n const firstIncompleteIndex = steps.findIndex(\n (step) => !completedSteps.includes(step.id)\n );\n this.activeStep =\n firstIncompleteIndex >= 0 ? firstIncompleteIndex : -1;\n if (this.activeStep !== -1) {\n this._initialActiveSet = true;\n }\n }\n this.renderChecklist(this.checklistData);\n \n // Notify external listeners about the initial checklist load\n GleapEventManager.notifyEvent(\"checklist-loaded\", {\n checklistId: this.checklistData.id,\n outboundId: this.checklistData.outbound?.id,\n completedSteps: this.checklistData.completedSteps,\n status: this.checklistData.status,\n data: this.checklistData\n });\n })\n .catch((error) => {\n this.renderResponse();\n this.checklistData = null;\n this._hasLoaded = false;\n });\n }\n\n updateChecklist(id, data) {\n const gleapSessionInstance = this._getGleapSessionInstance();\n if (!gleapSessionInstance?.session) {\n return;\n }\n const apiUrl = gleapSessionInstance.apiUrl;\n if (!apiUrl) {\n return;\n }\n const session = gleapSessionInstance.session;\n const gleapId = session?.gleapId ?? \"\";\n const gleapHash = session?.gleapHash ?? \"\";\n let lang = \"en\";\n try {\n if (typeof GleapTranslationManager !== \"undefined\") {\n lang =\n GleapTranslationManager.getInstance().getActiveLanguage() || \"en\";\n }\n } catch (e) {}\n let url = `${apiUrl}/outbound/checklists/${id}`;\n if (data.checkedStep) {\n url += `/increment/${data.checkedStep}`;\n }\n url += `?gleapId=${gleapId}&gleapHash=${gleapHash}&lang=${lang}`;\n this.makeRequest(\"PUT\", url, data, (xhr) => {\n if (xhr._isMock) return;\n if (!(xhr.status === 200 || xhr.status === 204)) {\n // Update failed\n }\n });\n }\n\n // --- External Update Handling ---\n handleChecklistUpdate(event) {\n if (!this._hasLoaded || !this.checklistData) {\n return;\n }\n const updateData = event.detail;\n if (!updateData || updateData.id !== this.checklistData.id) {\n return;\n }\n const previousCompletedSteps = [\n ...(this.checklistData.completedSteps || []),\n ];\n let dataChanged = false;\n let activeStepCompleted = false;\n const currentlyActiveStepIndex = this.activeStep;\n if (\n updateData.completedSteps &&\n JSON.stringify(updateData.completedSteps) !==\n JSON.stringify(previousCompletedSteps)\n ) {\n this.checklistData.completedSteps = [...updateData.completedSteps];\n dataChanged = true;\n if (currentlyActiveStepIndex !== -1) {\n const activeStepId =\n this.checklistData.outbound?.config?.steps?.[\n currentlyActiveStepIndex\n ]?.id;\n if (\n activeStepId &&\n this.checklistData.completedSteps.includes(activeStepId) &&\n !previousCompletedSteps.includes(activeStepId)\n ) {\n activeStepCompleted = true;\n }\n }\n }\n if (\n updateData.status &&\n updateData.status !== this.checklistData.status\n ) {\n this.checklistData.status = updateData.status;\n dataChanged = true;\n }\n if (activeStepCompleted) {\n const steps = this.checklistData.outbound?.config?.steps || [];\n let nextActiveStep = -1;\n for (let i = currentlyActiveStepIndex + 1; i < steps.length; i++) {\n if (!this.checklistData.completedSteps.includes(steps[i].id)) {\n nextActiveStep = i;\n break;\n }\n }\n if (this.activeStep !== nextActiveStep) {\n this.setActiveStep(nextActiveStep);\n }\n dataChanged = true;\n }\n if (dataChanged) {\n this.renderChecklist(this.checklistData);\n \n // Notify external listeners about the checklist update\n GleapEventManager.notifyEvent(\"checklist-update\", {\n checklistId: this.checklistData.id,\n outboundId: this.checklistData.outbound?.id,\n completedSteps: this.checklistData.completedSteps,\n status: this.checklistData.status,\n data: this.checklistData\n });\n }\n }\n\n // --- Floating (Click-based) Listeners ---\n handleFloatingLauncherClick(event) {\n event.stopPropagation();\n\n if (this.checklistData.status === \"done\") {\n return;\n }\n\n const tasks = this.shadowRoot.querySelector(\".checklist-tasks\");\n if (tasks) {\n tasks.style.display =\n tasks.style.display === \"block\" ? \"none\" : \"block\";\n }\n }\n\n handleFloatingCloseClick(event) {\n event.stopPropagation();\n const tasks = this.shadowRoot.querySelector(\".checklist-tasks\");\n if (tasks) {\n tasks.style.display = \"none\";\n }\n }\n\n addFloatingClickListeners() {\n const launcher = this.shadowRoot.querySelector(\n \".checklist-floating-launcher\"\n );\n if (launcher) {\n launcher.addEventListener(\"click\", this._boundFloatingLauncherClick);\n }\n const header = this.shadowRoot.querySelector(\n \".checklist-floating-header\"\n );\n if (header) {\n header.addEventListener(\"click\", this._boundFloatingCloseClick);\n }\n }\n\n removeFloatingClickListeners() {\n const launcher = this.shadowRoot.querySelector(\n \".checklist-floating-launcher\"\n );\n if (launcher) {\n launcher.removeEventListener(\n \"click\",\n this._boundFloatingLauncherClick\n );\n }\n const header = this.shadowRoot.querySelector(\n \".checklist-floating-header\"\n );\n if (header) {\n header.removeEventListener(\"click\", this._boundFloatingCloseClick);\n }\n }\n\n // --- Rendering Logic ---\n renderResponse() {\n this.shadowRoot.innerHTML = \"\";\n }\n\n /**\n * Renders the floating launcher. When called with the default class (\"checklist-floating\")\n * it shows a chevron icon; when called with \"checklist-floating-header\" it shows a close icon.\n */\n renderFloatingLauncher(\n outbound,\n className = \"checklist-floating\",\n renderDoneState = false\n ) {\n const steps = outbound.config?.steps || [];\n const completedSteps = this.checklistData?.completedSteps || [];\n let progress = 0;\n if (this.progressbarEnabled && steps.length > 0) {\n const totalSteps = steps.length;\n const doneSteps = completedSteps.length;\n progress = totalSteps > 0 ? (doneSteps / totalSteps) * 100 : 0;\n }\n\n // Determine the next incomplete step\n const nextIncompleteStep = steps.find(\n (step) => !completedSteps.includes(step.id)\n );\n let titleText =\n steps.length > 0\n ? nextIncompleteStep\n ? nextIncompleteStep.title ||\n this._translateWithVars(\n \"stepDefaultTitle\",\n { index: steps.indexOf(nextIncompleteStep) + 1 },\n `Step ${steps.indexOf(nextIncompleteStep) + 1}`\n )\n : \"\"\n : outbound.subject || \"\";\n\n let subtitleText =\n steps.length > 0\n ? nextIncompleteStep\n ? nextIncompleteStep.description || \"\"\n : \"\"\n : outbound.message || \"\";\n\n if (renderDoneState) {\n titleText = outbound.config?.successTitle || \"\";\n subtitleText = outbound.config?.successMessage || \"\";\n progress = 100;\n }\n\n const circumference = 2 * Math.PI * 7;\n const computedOffset = circumference - (progress / 100) * circumference;\n\n const isHeader = className === \"checklist-floating-header\";\n const icon = isHeader\n ? `\n \n \n `\n : `\n \n `;\n\n return `\n
\n
\n
\n \n \n \n \n
\n
${titleText}
\n ${\n renderDoneState\n ? \"\"\n : `${icon}`\n }\n
\n
${subtitleText}
\n
\n `;\n }\n\n renderInfoSection(outbound) {\n if (!this.infoEnabled || !outbound) return \"\";\n const subject =\n outbound.subject ||\n this._translate(\"checklistDefaultTitle\", \"Checklist\");\n const message = outbound.message || \"\";\n let senderHtml = \"\";\n if (outbound.sender?.profileImageUrl) {\n senderHtml = `\n
\n \"${\n\n ${outbound.sender.firstName || \"\"}\n
`;\n }\n return `\n
\n ${\n subject\n ? `
${subject}
`\n : \"\"\n }\n ${\n message\n ? `
${message}
`\n : \"\"\n }\n ${senderHtml}\n
`;\n }\n\n renderProgressSection(steps = [], completedSteps = []) {\n if (!this.progressbarEnabled || !steps.length) return \"\";\n const totalSteps = steps.length;\n const doneSteps = completedSteps.length;\n const progress = totalSteps > 0 ? (doneSteps / totalSteps) * 100 : 0;\n let duration = 0;\n steps.forEach((step) => {\n if (!completedSteps.includes(step.id) && step.duration > 0) {\n duration += step.duration;\n }\n });\n const progressLabel = this._translateWithVars(\n \"taskProgress\",\n { a: doneSteps, b: totalSteps },\n `${doneSteps} of ${totalSteps} done`\n );\n const durationLabel =\n duration > 0\n ? this._translateWithVars(\n \"aboutMinutes\",\n { a: duration },\n `About ${duration} min left`\n )\n : \"\";\n return `\n
\n
${progressLabel}
\n ${\n durationLabel\n ? `
${durationLabel}
`\n : \"\"\n }\n
\n
\n
\n
`;\n }\n\n renderTasks(steps = [], completedSteps = []) {\n if (!steps || steps.length === 0)\n return `

${this._translate(\n \"noStepsDefined\",\n \"No steps defined.\"\n )}

`;\n return steps\n .map((step, index) => {\n const isTaskDone = completedSteps.includes(step.id);\n const isActive = this.activeStep === index;\n const badge = isTaskDone\n ? `${this.getCheckIcon()}`\n : `${\n index + 1\n }`;\n const stepTitle =\n step.title ||\n this._translateWithVars(\n \"stepDefaultTitle\",\n { index: index + 1 },\n `Step ${index + 1}`\n );\n const stepDescription = step.description || \"\";\n const actionButtonText =\n step.actionTitle ||\n this._translate(\"actionDefaultTitle\", \"Action\");\n const actionHtml =\n step.action && step.action !== \"none\"\n ? `
\n \n
`\n : \"\";\n const markDoneLabel = this._translate(\"markAsDone\", \"Mark as done\");\n const markDoneHtml =\n step.allowMarkDone && !isTaskDone\n ? `
\n ${this.getCheckIcon()}\n
${markDoneLabel}
\n
`\n : \"\";\n const taskClasses = [\n \"checklist-task\",\n isTaskDone ? \"checklist-task--done\" : \"\",\n isActive ? \"checklist-task--active\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n return `\n
\n
\n ${badge}\n
${stepTitle}
\n \n \n \n \n \n
\n
\n
\n ${\n stepDescription\n ? `
${stepDescription}
`\n : \"\"\n }\n ${actionHtml}\n ${markDoneHtml}\n
\n
\n
`;\n })\n .join(\"\");\n }\n\n renderChecklist(data) {\n if (!this._hasLoaded || !data || !data.outbound) {\n this._checkSessionAndLoad();\n return;\n }\n const { outbound } = data;\n const steps = outbound.config?.steps || [];\n const completedSteps = data.completedSteps || [];\n const isDone =\n data.status === \"done\" ||\n (steps.length > 0 && completedSteps.length >= steps.length);\n let content = \"\";\n if (isDone) {\n const successTitle = outbound.config?.successTitle || \"\";\n const successMessage = outbound.config?.successMessage || \"\";\n if (this.floatingEnabled) {\n content = this.renderFloatingLauncher(\n outbound,\n \"checklist-floating-launcher\",\n true\n );\n } else {\n content = `\n
\n
\n ${this.getCheckIcon()}\n
\n
${successTitle}
\n
${successMessage}
\n
`;\n }\n if (this.activeStep !== -1) this.activeStep = -1;\n } else {\n content = `\n
\n ${!this.floatingEnabled ? this.renderInfoSection(outbound) : \"\"}\n ${\n !this.floatingEnabled\n ? this.renderProgressSection(steps, completedSteps)\n : \"\"\n }\n ${\n this.floatingEnabled\n ? this.renderFloatingLauncher(outbound)\n : \"\"\n }\n
\n ${\n this.floatingEnabled\n ? this.renderFloatingLauncher(\n outbound,\n \"checklist-floating-header\"\n )\n : \"\"\n }\n ${this.renderTasks(steps, completedSteps)}\n
\n
`;\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const primaryColor = flowConfig.color ? flowConfig.color : \"#485BFF\";\n\n const styles = `\n \n `;\n this.shadowRoot.innerHTML = styles + content;\n this.addTaskEventListeners();\n if (this.floatingEnabled) {\n this.addFloatingClickListeners();\n }\n if (this.activeStep !== -1) {\n this.toggleTask(this.activeStep, true);\n }\n }\n\n updateActiveTaskMaxHeight() {\n if (this.activeStep !== -1) {\n const taskBodyInner = this.shadowRoot.querySelector(\n `.checklist-task[data-task-index=\"${this.activeStep}\"] .checklist-task-body-inner`\n );\n const container = this.shadowRoot.querySelector(\n `.checklist-task[data-task-index=\"${this.activeStep}\"] .checklist-task-body`\n );\n if (taskBodyInner && container) {\n const height = taskBodyInner.offsetHeight;\n container.style.setProperty(\n \"--task-body-active-height\",\n `${height}px`\n );\n }\n }\n }\n\n // --- Event Listener Setup ---\n addTaskEventListeners() {\n const tasks = this.shadowRoot.querySelectorAll(\".checklist-task\");\n tasks.forEach((task) => {\n const header = task.querySelector(\".checklist-task-header\");\n const index = parseInt(task.getAttribute(\"data-task-index\"), 10);\n if (header) {\n header.addEventListener(\"click\", () => {\n const newActiveStep = this.activeStep === index ? -1 : index;\n this.setActiveStep(newActiveStep);\n });\n }\n const markDoneBtn = task.querySelector(\n \".checklist-task-body-markdone\"\n );\n if (markDoneBtn) {\n markDoneBtn.addEventListener(\"click\", (e) => {\n e.stopPropagation();\n if (!this.checklistData?.outbound?.config?.steps) return;\n const step = this.checklistData.outbound.config.steps[index];\n if (!step) return;\n const previouslyActiveStep = this.activeStep;\n if (!this.checklistData.completedSteps)\n this.checklistData.completedSteps = [];\n if (!this.checklistData.completedSteps.includes(step.id)) {\n this.checklistData.completedSteps.push(step.id);\n \n // Notify external listeners about the step completion\n GleapEventManager.notifyEvent(\"checklist-step-completed\", {\n checklistId: this.checklistData.id,\n outboundId: this.checklistData.outbound?.id,\n stepId: step.id,\n stepIndex: index,\n step: step,\n completedSteps: this.checklistData.completedSteps,\n status: this.checklistData.status,\n data: this.checklistData\n });\n const allSteps = this.checklistData.outbound.config.steps;\n let nextActiveStep = -1;\n if (previouslyActiveStep === index) {\n for (let i = index + 1; i < allSteps.length; i++) {\n if (\n !this.checklistData.completedSteps.includes(\n allSteps[i].id\n )\n ) {\n nextActiveStep = i;\n break;\n }\n }\n this.setActiveStep(nextActiveStep);\n }\n // Preserve the state of the floating modal.\n setTimeout(() => {\n let isModalOpen = false;\n if (this.floatingEnabled) {\n const tasksModal =\n this.shadowRoot.querySelector(\".checklist-tasks\");\n isModalOpen =\n tasksModal && tasksModal.style.display === \"block\";\n }\n this.renderChecklist(this.checklistData);\n if (this.floatingEnabled && isModalOpen) {\n const tasksModal =\n this.shadowRoot.querySelector(\".checklist-tasks\");\n if (tasksModal) tasksModal.style.display = \"block\";\n }\n }, 300);\n const updateData = { checkedStep: step.id };\n if (\n allSteps.length > 0 &&\n this.checklistData.completedSteps.length >= allSteps.length\n ) {\n this.checklistData.status = \"done\";\n updateData.status = \"done\";\n \n // Notify external listeners about the checklist completion\n GleapEventManager.notifyEvent(\"checklist-completed\", {\n checklistId: this.checklistData.id,\n outboundId: this.checklistData.outbound?.id,\n completedSteps: this.checklistData.completedSteps,\n status: this.checklistData.status,\n data: this.checklistData\n });\n }\n this.updateChecklist(this.checklistData.id, updateData);\n }\n });\n }\n const actionBtn = task.querySelector(\n \".checklist-task-body-action .action-button\"\n );\n if (actionBtn) {\n actionBtn.addEventListener(\"click\", (e) => {\n e.stopPropagation();\n if (\n !this.checklistData?.outbound?.config?.steps ||\n typeof Gleap === \"undefined\"\n )\n return;\n const step = this.checklistData.outbound.config.steps[index];\n if (!step || !step.action || step.action === \"none\") return;\n try {\n if (step.action === \"BOT\") Gleap.startBot(step.botId);\n else if (step.action === \"CUSTOM_ACTION\")\n Gleap.triggerCustomAction(step.actionBody);\n else if (step.action === \"REDIRECT_URL\") {\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n Gleap.openURL(step.actionBody, !!step.actionOpenInNewTab);\n } else if (step.action === \"FEEDBACK_FLOW\")\n Gleap.startFeedbackFlow(step.formId);\n else if (step.action === \"NEWS_ARTICLE\")\n Gleap.openNewsArticle(step.articleId);\n else if (step.action === \"HELP_ARTICLE\")\n Gleap.openHelpCenterArticle(step.articleId);\n else if (step.action === \"CHECKLIST\")\n Gleap.startChecklist(step.outboundId, true, step?.sharedKey);\n } catch (gleapError) {}\n });\n }\n });\n }\n\n // --- Animation and State Management ---\n setActiveStep(index) {\n const previousActiveStep = this.activeStep;\n this.activeStep = index;\n const tasksToToggle = [];\n if (\n previousActiveStep !== -1 &&\n previousActiveStep !== this.activeStep\n ) {\n tasksToToggle.push({ index: previousActiveStep, open: false });\n }\n if (this.activeStep !== -1 && this.activeStep !== previousActiveStep) {\n tasksToToggle.push({ index: this.activeStep, open: true });\n }\n tasksToToggle.forEach(({ index, open }) => {\n this.toggleTask(index, open);\n });\n }\n\n toggleTask(index, forceOpen = null) {\n const taskElement = this.shadowRoot.querySelector(\n `.checklist-task[data-task-index=\"${index}\"]`\n );\n if (!taskElement) return;\n const header = taskElement.querySelector(\".checklist-task-header\");\n if (!header) return;\n const isOpen = taskElement.classList.contains(\"checklist-task--active\");\n const shouldOpen = forceOpen !== null ? forceOpen : !isOpen;\n if (shouldOpen && !isOpen) {\n taskElement.classList.add(\"checklist-task--active\");\n header.setAttribute(\"aria-expanded\", \"true\");\n const taskBodyInner = taskElement.querySelector(\n \".checklist-task-body-inner\"\n );\n if (taskBodyInner) {\n const height = taskBodyInner.offsetHeight;\n const taskBody = taskElement.querySelector(\".checklist-task-body\");\n if (taskBody) {\n taskBody.style.setProperty(\n \"--task-body-active-height\",\n `${height}px`\n );\n }\n }\n } else if (!shouldOpen && isOpen) {\n taskElement.classList.remove(\"checklist-task--active\");\n header.setAttribute(\"aria-expanded\", \"false\");\n }\n }\n }\n\n if (\n typeof customElements !== \"undefined\" &&\n !customElements.get(\"gleap-checklist\")\n ) {\n customElements.define(\"gleap-checklist\", GleapChecklist);\n }\n }\n};\n","import Gleap from \"./Gleap\";\n\nexport default Gleap;\n"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","GleapFeedbackButtonManager","_classCallCheck","_defineProperty","value","this","instance","feedbackButton","remove","buttonHidden","lastButtonIcon","injectedFeedbackButton","show","getInstance","updateFeedbackButtonState","GleapNotificationManager","updateContainerStyle","frameManager","GleapFrameManager","isOpened","hideWidget","setAppMode","showWidget","_this","elem","document","createElement","addEventListener","feedbackButtonPressed","body","appendChild","count","notificationBadge","querySelector","notificationHiddenClass","classList","innerText","add","updateFeedbackButtonText","injectFeedbackButton","flowConfig","GleapConfigManager","getFlowConfig","feedbackButtonPosition","FEEDBACK_BUTTON_CLASSIC","FEEDBACK_BUTTON_CLASSIC_BOTTOM","FEEDBACK_BUTTON_CLASSIC_LEFT","widgetButtonText","buttonIcon","buttonLogo","concat","loadIcon","className","setAttribute","GleapTranslationManager","isRTLLayout","innerHTML","hideButton","FEEDBACK_BUTTON_NONE","FEEDBACK_BUTTON_BOTTOM_LEFT","appMode","hideForGuests","GleapSession","isUser","calculateShadeColor","col","amt","replace","length","_col$match2","_slicedToArray","match","r","g","b","_ref","parseInt","Math","max","min","toString","rr","gg","bb","calculateContrast","hex","substr","name","color","GleapNetworkIntercepter","Date","now","loadAllResources","contentType","toLocaleLowerCase","supportedContentTypes","i","includes","requests","JSON","parse","stringify","values","externalRequests","filters","request","headers","j","payload","payloadObj","e","response","responseText","data","window","performance","resources","getEntriesByType","resource","indexOf","initiatorType","find","url","push","type","date","startTimestamp","startTime","duration","round","exp","blacklist","defaultBlacklist","filter","maxRequests","stopped","keys","keysToRemove","slice","bbRequestId","startDate","getTime","text","size","TextEncoder","encode","encodeURI","s","split","Blob","getTextContentSize","undefined","TextDecoder","_typeof","ArrayBuffer","isView","decode","payloadText","cleanupPayload","cleanupContentSize","initialized","self","interceptNetworkRequests","onFetch","params","fromEntries","entries","method","preparePayload","cleanRequests","onFetchLoad","req","status","statusText","calcRequestTime","isContentTypeSupported","then","err","onFetchFailed","onOpen","args","onSend","requestHeaders","onError","currentTarget","onLoad","target","responseType","callback","originalFetch","open","XMLHttpRequest","send","gleapSetRequestHeader","setRequestHeader","header","requestId","arguments","bind","apply","fetch","clone","blob","Promise","resolve","reject","fr","FileReader","onload","evt","result","onerror","readAsText","resizeImage","base64Str","maxWidth","maxHeight","isJPEG","img","Image","src","canvas","MAX_WIDTH","MAX_HEIGHT","width","height","getContext","drawImage","toDataURL","isMobile","test","navigator","userAgent","gleapDataParser","String","truncateString","str","num","removeSubDomain","v","parts","is2ndLevelDomain","secondLevel","join","loadFromGleapCache","cachedData","localStorage","getItem","saveToGleapCache","k","setItem","removeItem","runFunctionWhenDomIsReady","readyState","RequestStatus","ChecklistNetworkManager","Map","validationCache","clear","fetchCache","validationRequests","fetchRequests","gleapSessionInstance","session","lang","getActiveLanguage","gleapId","gleapHash","apiUrl","xhr","injectSession","onreadystatechange","responseData","error","outboundId","sharedKey","cacheKey","_createCacheKey","cachedResult","internalId","has","_getApiUrl","Error","set","_getQueryParams","requestPromise","_makeRequest","id","_this2","floor","createCoords","x","y","oppositeSideMap","left","right","bottom","top","oppositeAlignmentMap","start","end","clamp","param","placement","axis","getAxisLength","getAlignmentAxis","alignment","getOppositePlacement","side","padding","expandPaddingObject","rect","computeCoordsFromPlacement","rtl","reference","floating","sideAxis","alignmentAxis","alignLength","isVertical","commonX","commonY","commonAlign","coords","async","detectOverflow","state","options","_await$platform$isEle","platform","rects","elements","strategy","boundary","rootBoundary","elementContext","altBoundary","paddingObject","element","clippingClientRect","getClippingRect","isElement","contextElement","getDocumentElement","offsetParent","getOffsetParent","offsetScale","getScale","elementClientRect","convertOffsetParentRelativeRectToViewportRelativeRect","offset","fn","_middlewareData$offse","_middlewareData$arrow","middlewareData","diffCoords","isRTL","mainAxisMulti","crossAxisMulti","rawValue","mainAxis","crossAxis","convertValueToCoords","arrow","alignmentOffset","getNodeName","node","isNode","nodeName","toLowerCase","getWindow","_node$ownerDocument","ownerDocument","defaultView","documentElement","Node","Element","isHTMLElement","HTMLElement","isShadowRoot","ShadowRoot","isOverflowElement","overflow","overflowX","overflowY","display","isTableElement","isContainingBlock","webkit","isWebKit","css","transform","perspective","containerType","backdropFilter","some","willChange","contain","CSS","supports","isLastTraversableNode","getComputedStyle","getNodeScroll","scrollLeft","scrollTop","pageXOffset","pageYOffset","getParentNode","assignedSlot","parentNode","host","getNearestOverflowAncestor","getOverflowAncestors","list","traverseIframes","_node$ownerDocument2","scrollableAncestor","isBody","win","visualViewport","frameElement","getCssDimensions","parseFloat","hasOffset","offsetWidth","offsetHeight","shouldFallback","$","unwrapElement","domElement","getBoundingClientRect","Number","isFinite","noOffsets","getVisualOffsets","offsetLeft","offsetTop","includeScale","isFixedStrategy","clientRect","scale","visualOffsets","isFixed","floatingOffsetParent","shouldAddVisualOffsets","offsetWin","currentWin","currentIFrame","iframeScale","iframeRect","clientLeft","paddingLeft","clientTop","paddingTop","topLayerSelectors","isTopLayer","selector","matches","getWindowScrollBarX","getClientRectFromClippingAncestor","clippingAncestor","html","clientWidth","clientHeight","visualViewportBased","getViewportRect","scroll","scrollWidth","scrollHeight","direction","getDocumentRect","getInnerBoundingClientRect","hasFixedPositionAncestor","stopNode","position","getRectRelativeToOffsetParent","isOffsetParentAnElement","offsets","offsetRect","getTrueOffsetParent","polyfill","currentNode","getContainingBlock","topLayer","elementClippingAncestors","cache","el","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","ancestor","getClippingElementAncestors","_c","clippingAncestors","firstClippingAncestor","clippingRect","reduce","accRect","getElementRects","getOffsetParentFn","getDimensionsFn","getDimensions","getClientRects","Array","from","autoUpdate","update","ancestorScroll","ancestorResize","elementResize","ResizeObserver","layoutShift","IntersectionObserver","animationFrame","referenceEl","ancestors","forEach","passive","cleanupIo","onMove","timeoutId","io","root","cleanup","_io","clearTimeout","disconnect","refresh","skip","threshold","rootMargin","isFirstUpdate","handleObserve","ratio","intersectionRatio","setTimeout","observe","observeMove","frameId","reobserveFrame","resizeObserver","firstEntry","unobserve","cancelAnimationFrame","requestAnimationFrame","_resizeObserver","prevRefRect","frameLoop","nextRefRect","_resizeObserver2","removeEventListener","checkMainAxis","checkCrossAxis","limiter","detectOverflowOptions","mainAxisCoord","crossAxisCoord","maxSide","limitedCoords","_middlewareData$flip","initialPlacement","fallbackPlacements","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","flipAlignment","isBasePlacement","oppositePlacement","getExpandedPlacements","isStart","lr","rl","tb","bt","getSideList","map","getOppositeAxisPlacements","placements","overflows","overflowsData","flip","sides","mainAlignmentSide","every","_middlewareData$flip2","_overflowsData$filter","nextIndex","index","nextPlacement","reset","resetPlacement","d","sort","a","_overflowsData$map$so","acc","arrowDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","min$1","center","shouldAddOffset","centerOffset","mergedOptions","platformWithCache","config","middleware","validMiddleware","Boolean","statefulPlacement","resetCount","nextX","nextY","computePosition","checkPageFilter","currentUrl","pageFilter","pageFilterType","removeTrailingSlash","isMatchingUrl","regex","regexPattern","RegExp","generateRegex","matched","startsWith","endsWith","GleapTooltipManager","WeakMap","tooltip","hasAttribute","nextId","tooltipElem","mode","hotspotContainer","canEmbed","firstChild","insertBefore","nextSibling","hotspot","icon","animated","repositionHotspot","elementToTooltipMap","floatingUIInstance","createTooltip","elementToFloatingUIMap","filteredTooltips","getFilteredTooltips","checkForTooltips","tooltips","location","href","page","pageType","querySelectorAll","linkTooltip","sessionInstance","http","sdkKey","console","updateFilteredTooltips","nodeType","ELEMENT_NODE","checkNodeTooltip","childNodes","childNode","processNodeInsertion","_this3","_this4","time","timeout","handleResizeThrottled","updateHotspotPositions","context","_toConsumableArray","observer","MutationObserver","mutations","lastUrl","mutation","addedNodes","removedNodes","floatingUI","childList","subtree","attributes","attributeFilter","_this5","tooltipText","tooltipData","hideTimeout","arrowEl","posX","shift","assign","style","arrowPos","visibility","opacity","pointerEvents","hide","voidElements","Set","tagName","resizeListener","anchor","removeAttribute","tooltipId","getAttribute","posY","offsetX","offsetY","elementRect","range","createRange","selectNodeContents","fixedWidth","anchorRect","tooltipSize","email","userId","phone","onSessionReady","ready","onSessionReadyListener","attemp","retry","GleapEventManager","notifyEvent","useCookies","cookie","eraseGleapCookie","sendMessage","clearAllNotifications","setNotificationCount","GleapBannerManager","removeBannerUI","GleapModalManager","hideModal","isNaN","newTimeout","pow","startSession","_this$session","sessionChanged","days","expires","setTime","toUTCString","setGleapCookie","encodeURIComponent","clearCache","GleapStreamedEvent","restart","tooltipManager","destroy","load","dispatchEvent","CustomEvent","notifySessionReady","sessionCookie","nameEQ","ca","c","charAt","substring","getGleapCookie","sessionData","decodeURIComponent","validateSession","cachedSession","clearSession","userData","checkIfSessionDataNeedsUpdate","userDataKeys","userDataKey","customData","setOnSessionReady","_objectSpread","sdkVersion","SDK_VERSION","ws","userHash","checkIfSessionNeedsUpdate","dataToSend","tourId","tourData","_window","passedPageFilter","sendSessionUpdate","streamEvents","mainLoopTimeout","runEventStreamLoop","streamingEvents","errorCount","streamedEventArray","socket","OPEN","sessionDuration","GleapMetaDataManager","getSessionDuration","events","opened","handleOpenBound","handleOpen","handleErrorBound","handleError","handleMessageBound","handleMessage","handleCloseBound","handleClose","connectionTimeout","pingWS","clearInterval","close","cleanupWebSocket","connectedWebSocketGleapId","WebSocket","wsApiUrl","event","setInterval","processMessage","initWebSocket","message","_message$data","u","listOfActionsWhereIgnoreOpened","filteredActions","action","_action$actionType","actionType","Gleap","performActions","detail","eventArray","cleanupMainLoop","trackInitialEvents","startPageListener","resetErrorCountLoop","logEvent","logCurrentPage","disablePageTracking","log","eventMaxLength","parseIntWithDefault","val","def","parsed","onConfigLoaded","onConfigLoadedListener","aiTools","sendConfigUpdate","cachedConfig","applyConfig","loadConfigFromServer","setStyles","headerColor","buttonColor","backgroundColor","borderRadius","buttonX","buttonY","applyStylesFromConfig","enableWebReplays","GleapReplayRecorder","stop","enableNetworkLogs","setLoadAllResources","sendNetworkResources","networkLogPropsToIgnore","setFilters","networkLogBlacklist","setBlacklist","updateRTLSupport","enableShortcuts","notifyConfigLoaded","_regeneratorRuntime","t","n","Symbol","iterator","asyncIterator","toStringTag","define","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","arg","h","l","f","GeneratorFunction","GeneratorFunctionPrototype","p","getPrototypeOf","defineIteratorMethods","_invoke","AsyncIterator","invoke","__await","callInvokeWithMethodAndArg","done","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","displayName","isGeneratorFunction","constructor","mark","setPrototypeOf","__proto__","awrap","reverse","pop","prev","rval","handle","complete","finish","delegateYield","asyncGeneratorStep","gen","_next","_throw","info","_asyncToGenerator","documentToHTML","doctype","publicId","systemId","outerHTML","loadCSSUrlResources","basePath","remote","asyncFn","matchedData","matchedUrl","replaceAll","resourcePath","URL","fetchCSSResource","resourceData","promises","_len","_key","promise","all","reader","onloadend","readAsDataURL","fetchItemResource","isBlacklisted","warn","progressResource","replaceStyleNodes","styleSheet","cssTextContent","styleId","cloneTargetNode","ownerNode","replacementNode","head","styleNode","cssText","createTextNode","linkNode","rel","media","getTextContentFromStyleSheet","cssRules","rules","cssRuleItem","downloadAllCSSUrlResources","basePathURL","_loop","styleSheets","mediaText","baseTags","getElementsByTagName","origin","lastIndexOf","replacedStyle","styletext","stylesheet","results","prepareRemoteData","dom","imgItems","imgItemsPromises","item","downloadAllImages","handleAdoptedStyleSheets","doc","shadowNodeId","adoptedStyleSheets","shadowStyleNode","firstElementChild","extractFinalCSSState","getAnimations","animations","finalCSSState","animation","_animation$effect","keyframes","effect","getKeyframes","finalKeyframe","property","deepClone","_callee3","cloneNode","fragment","clonedHead","_context3","_ref2","_callee2","parent","shadowRoot","walkTree","webAnimations","boundingRect","resizedImage","_boundingRect","rootShadowNodeId","_context2","_ref3","_callee","nextn","nextp","innerShadowRoot","_context","nextElementSibling","_x5","_x6","_x7","HTMLCanvasElement","t0","toUpperCase","contains","checked","_x2","_x3","_x4","createDocumentFragment","_x","prepareScreenshotData","_ref4","_callee4","styleTags","linkImportElems","referenceNode","scriptElems","existingBasePath","baseElems","baseUrl","newBaseUrl","baseNode","dialogElems","bbElems","_context4","innerWidth","innerHeight","_x8","_x9","GleapScreenRecorder","rerender","permissionErrorText","mediaDevices","getDisplayMedia","isRecording","available","video","ideal","screen","frameRate","displaySurface","selfBrowserSurface","audio","displayStream","stream","audioMuted","audioAvailable","handleRecord","startAudioRecording","alert","mediaRecorder","recordingTimer","getTracks","track","getUserMedia","voiceStream","getAudioTracks","addTrack","audioErr","audioTracks","enabled","file","recordedChunks","MediaRecorder","mimeType","getSupportedMimeType","recordTime","timerLabel","remainingTime","maxRecordTime","formatTime","stopScreenRecording","ondataavailable","getVideoTracks","onended","prepareRecording","onstop","completeBlob","extension","File","previewVideoElement","createObjectURL","_i","_types","isTypeSupported","screenRecordingData","formdata","FormData","append","fileUrl","GleapFeedback","priority","formData","isSilent","excludeData","spamToken","gleapInstance","GleapCustomDataManager","getCustomData","metaData","getMetaData","consoleLog","GleapConsoleLogManager","getLogs","networkLogs","getRequests","customEventLog","getEventArray","ticketAttributes","getTicketAttributes","dataPromises","webReplay","getGlobalDataItem","isLiveSite","recordingUrlPromise","uploadScreenRecording","recordingUrl","screenRecordingUrl","screenshot","screenshotDataPromise","isLiveMode","screenshotData","snapshotPosition","feedbackData","outbound","tags","GleapTagManager","getTags","keysToExclude","keyToExclude","takeSnapshot","getData","feedback","newTab","newWindow","focus","cmp_block_ignoredomains","injectedFrame","autoWhiteListCookieManager","frameUrl","gleapFrameContainer","gleapFrame","updateFrameStyle","showFrameContainer","closeElement","surveyStyle","extendedStyle","surveyFullStyle","classicStyle","classicStyleLeft","modernStyleLeft","noButtonStyleLeft","allStyles","styleToApply","startCommunication","appHeight","setProperty","handler","urlHandler","innerContainer","escListener","widgetOpened","markerManager","showLoader","loadingClass","disableBGFade","disableBGGradient","updateUI","workThroughQueue","setGlobalDataItem","scrollX","scrollY","updateWidgetStatus","registerEscListener","isSurvey","updateNotificationBadge","runWidgetShouldOpenCallback","injectFrame","isWidgetOpen","resetRoutes","hideMarkerManager","reloadNotificationsFromCache","unregisterEscListener","queue","comReady","contentWindow","postMessage","getSession","getAiTools","overrideLanguage","getOverrideLanguage","GleapMarkerManager","success","workQueue","_this6","addMessageListener","GleapAudioManager","ping","showImage","ticketData","frameHeight","_data$data","startProductTour","GleapCustomActionManager","triggerCustomAction","shareToken","feedbackType","sendFeedback","reportedBy","trackEvent","showDrawingScreen","bannerUrl","listeners","appVersionCode","appBuildNumber","sessionStart","nameOffset","verOffset","ix","nAgt","browserName","appName","fullVersion","appVersion","majorVersion","OSName","browser","systemName","buildVersionNumber","releaseVersionNumber","devicePixelRatio","screenWidth","screenHeight","language","userLanguage","mobile","sdkType","environment","logArray","disabled","originalConsoleLog","logLevel","logMaxLength","addLog","origConsole","addLogWithArgs","GleapClickListener","protocol","preventDefault","handleGleapLink","elementId","elementClass","elemId","elemClass","elementTag","htmlPre","htmlPost","getDOMElementDescription","takeCurrentReplay","eventListeners","eventListener","eventName","customAction","customActionCallbacks","_a","__defProp","__publicField","__defNormalProp","__defProp$1","__publicField$1","__defNormalProp$1","NodeType$3","NodeType2","testableAccessors$1","testableMethods$1","untaintedBasePrototype$1","isAngularZonePresent$1","globalThis","Zone","getUntaintedPrototype$1","defaultObj","defaultPrototype","accessorNames","isUntaintedAccessors","accessor","_a2","_b","getOwnPropertyDescriptor","methodNames","isUntaintedMethods","iframeEl","untaintedObject","removeChild","untaintedAccessorCache$1","getUntaintedAccessor$1","untaintedPrototype","untaintedAccessor","untaintedMethodCache$1","getUntaintedMethod$1","untaintedMethod","index$1","n2","parentElement","textContent","other","getRootNode","selectors","mutationObserver","hostEl","isNativeShadowDom","shadowRoot2","stringifyStylesheet","s2","rules2","sheetHref","stringifiedRules","rule2","stringifyRule","isCSSImportRule","importStringified","statement","layerName","supportsText","escapeImportStatement","absolutifyURLs","ruleStringified","isCSSStyleRule","selectorText","cssStringified","fixSafariColons","Mirror","getId","getMeta","getNode","idNodeMap","getIds","nodeMetaMap","removeNodeFromMap","delete","hasNode","node2","meta","oldNode","maskInputValue","maskInputOptions","maskInputFn","actualType","repeat","ORIGINAL_ATTRIBUTE_NAME","getInputType","extractFileExtension","path","baseURL","pathname","URL_IN_CSS_REF","URL_PROTOCOL_MATCH","URL_WWW_MATCH","DATA_URI","quote1","path1","quote2","path2","path3","filePath","maybeQuote","extractOrigin","stack","part","normalizeCssString","markCssSplits","childNodes2","splits","cssTextNorm","i2","textContentNorm","bit","splitNorm","splitCssText","_id","tagNameRegex","IGNORED_NODE","genId","canvasService","canvasCtx","SRCSET_NOT_SPACES","SRCSET_COMMAS_OR_SPACES","cachedDocument","absoluteToDoc","attributeValue","trim","getHref","isSVGElement","ownerSVGElement","customHref","a2","transformAttribute","pos","collectCharacters","regEx","chars2","exec","output","descriptorsStr","inParens","c2","getAbsoluteSrcsetString","ignoreAttribute","_value","classMatchesRegex","checkAncestors","eIndex","needMaskingText","maskTextClass","maskTextSelector","closest","e2","serializeNode","mirror","mirror2","blockClass","blockSelector","needsMask","inlineStylesheet","maskTextFn","dataURLOptions","inlineImages","recordCanvas","keepIframeSrcFn","newlyAddedElement","cssCaptured","rootId","docId","getRootId","DOCUMENT_NODE","compatMode","Document","DOCUMENT_TYPE_NODE","DocumentType","needBlock","_isBlockedElement","HTMLFormElement","processedTagName","getValidTagName$1","len","attr","_cssText","sheet","selected","rr_open_mode","__context","ctx","x2","getImageData","originalGetImageData","Uint32Array","buffer","pixel","is2DCanvasBlank","rr_dataURL","quality","canvasDataURL","blankCanvas","image","imageSrc","currentSrc","priorCrossOrigin","crossOrigin","recordInlineImage","naturalWidth","naturalHeight","mediaAttributes","rr_mediaState","paused","rr_mediaCurrentTime","currentTime","rr_mediaPlaybackRate","playbackRate","rr_mediaMuted","muted","rr_mediaLoop","loop","rr_mediaVolume","volume","rr_scrollLeft","rr_scrollTop","class","rr_width","rr_height","contentDocument","rr_src","isCustomElement","customElements","isSVG","isCustom","serializeElementNode","TEXT_NODE","parentTagName","textContent2","isStyle","isScript","Text","serializeTextNode","CDATA_SECTION_NODE","CDATA","COMMENT_NODE","Comment","lowerIfExists","maybeAttr","serializeNodeWithId","skipChild","slimDOMOptions","onSerialize","onIframeLoad","iframeLoadTimeout","onStylesheetLoad","stylesheetLoadTimeout","preserveWhiteSpace","_serializedNode","sn","comment","script","as","headFavicon","headMetaDescKeywords","headMetaSocial","headMetaRobots","headMetaHttpEquiv","headMetaAuthorship","headMetaVerification","slimDOMExcluded","serializedNode","recordChild","shadowRootEl","isShadowHost","headWhitespace","bypassOptions","childN","serializedChildNode","isShadow","listener","fired","timer","blankUrl","onceIframeLoaded","iframeDoc","serializedIframeNode","link","styleSheetLoadTimeout","styleSheetLoaded","onceStylesheetLoaded","serializedLinkNode","getDefaultExportFromCjs$1","__esModule","getAugmentedNamespace$1","f2","default","a22","Reflect","construct","picocolors_browser$1","x$1","create$1","isColorSupported","bold","dim","italic","underline","inverse","hidden","strikethrough","black","red","green","yellow","blue","magenta","cyan","white","gray","bgBlack","bgRed","bgGreen","bgYellow","bgBlue","bgMagenta","bgCyan","bgWhite","createColors","picocolors_browserExports$1","require$$2$1","freeze","pico$1","terminalHighlight$1$1","CssSyntaxError$3$1","CssSyntaxError","line","column","source","plugin22","super","reason","plugin","endLine","endColumn","setMessage","captureStackTrace","showSourceCode","aside","lines","index2","number","gutter","spacing","code","cssSyntaxError$1","symbols$1","isClean","my","DEFAULT_RAW$1","after","beforeClose","beforeComment","beforeDecl","beforeOpen","beforeRule","colon","commentLeft","commentRight","emptyBody","indent","semicolon","Stringifier$2$1","builder","atrule","raws","afterName","nodes","block","between","beforeAfter","detect","raw","buf","depth","step","last","child","before","decl","string","important","own","first","root2","rawCache","walk","rawBeforeClose","rawBeforeComment","walkComments","rawBeforeDecl","walkDecls","rawBeforeOpen","rawBeforeRule","rawColon","rawEmptyBody","rawIndent","rawSemicolon","rule","ownSemicolon","stringifier$1","Stringifier$1$1","stringify$4$1","stringify_1$1","isClean$2$1","my$2$1","CssSyntaxError$2$1","Stringifier2$1","stringify$3$1","cloneNode$1","cloned","isArray","Node$4$1","defaults","addToError","postcssNode","input","insertAfter","overrides","cleanRaws","keepBetween","cloneAfter","cloneBefore","opts","rangeBy","getProxyProcessor","toProxy","markDirty","positionBy","stringRepresentation","positionInside","word","endIndex","defaultType","replaceWith","bookmark","foundSelf","result2","toJSON","_","inputs","fixed","emitInputs","inputsNextIndex","inputId","input2","proxyCache","Proxy","stringifier2","proxyOf","node$1","Node$3$1","Declaration$4$1","variable","declaration$1","nonSecure$1","nanoid","random","customAlphabet","alphabet","defaultSize","SourceMapConsumer","SourceMapConsumer$2$1","SourceMapGenerator","SourceMapGenerator$2$1","existsSync","existsSync$1","readFileSync","readFileSync$1","dirname","dirname$1$1","join$1","PreviousMap$2$1","loadAnnotation","inline","startWith","annotation","loadMap","mapFile","consumer","consumerCache","decodeInline","lastMatch","Buffer","atob","encoding","getAnnotationURL","sourceMapString","isMap","mappings","_mappings","sections","comments","loadFile","fromSourceMap","prevPath","withContent","sourcesContent","previousMap$1","SourceMapConsumer$1$1","SourceMapGenerator$1$1","fileURLToPath","fileURLToPath$1","pathToFileURL","pathToFileURL$1$1","isAbsolute","isAbsolute$1","resolve$1$1","nanoid$2","terminalHighlight$2","CssSyntaxError$1$1","PreviousMap$1$1","fromOffsetCache$1","sourceMapAvailable$1$1","pathAvailable$1$1","Input$4$1","hasBOM","mapResolve","fromOffset","lastLine","lineToIndex","prevIndex","l2","mid","sourceRoot","to","fromUrl","originalPositionFor","sourceContentFor","json","input$1","registerInput","SourceMapConsumer$3","SourceMapGenerator$3","dirname$2","relative","relative$1","resolve$2","sep","sep$1","pathToFileURL$2","Input$3$1","sourceMapAvailable$2","pathAvailable$2","mapGenerator$1","stringify2","cssString","mapOpts","originalCSS","usesFileUrls","absolute","memoizedFileURLs","memoizedPaths","memoizedURLs","addAnnotation","content","isInline","toBase64","outputFile","eol","applyPrevMaps","previous","toUrl","applySourceMap","clearAnnotation","generate","generateMap","generateString","ignoreInvalidMapping","addMapping","generated","original","isSourcesContent","setSourcesContent","isAnnotation","noSource","mapping","sourcePath","charCodeAt","cached","previousMaps","already","toFileUrl","setSourceContent","btoa","unescape","fileURL","Node$2$1","Comment$4$1","comment$1","parse$4$1","Rule$4$1","AtRule$4$1","Root$6$1","isClean$1$1","my$1$1","Declaration$3$1","Comment$3$1","Node$1$1","cleanSource$1","markDirtyUp$1","Container$7$1","Container","children","normalize","each","getIterator","indexes","condition","lastEach","cb","exist","existIndex","splice","sample","rebuild","prepend","unshift","removeAll","replaceValues","pattern","props","fast","walkAtRules","walkRules","registerParse","dependant","registerRule","registerAtRule","registerRoot","container$1","LazyResult$4$1","Processor$3$1","Container$6$1","Document$3$1","toResult","registerLazyResult","registerProcessor","document$1$1","Warning$2$1","opt","warning$1","Warning$1$1","Result$3$1","processor2","processor","messages","lastPlugin","postcssPlugin","warning2","warnings","result$1","SINGLE_QUOTE$1","DOUBLE_QUOTE$1","BACKSLASH$1","SLASH$1","NEWLINE$1","SPACE$1","FEED$1","TAB$1","CR$1","OPEN_SQUARE$1","CLOSE_SQUARE$1","OPEN_PARENTHESES$1","CLOSE_PARENTHESES$1","OPEN_CURLY$1","CLOSE_CURLY$1","SEMICOLON$1","ASTERISK$1","COLON$1","AT$1","RE_AT_END$1","RE_WORD_END$1","RE_BAD_BRACKET$1","RE_HEX_ESCAPE$1","Container$5$1","AtRule$3$1","atRule$1","LazyResult$3$1","Processor$2$1","Container$4$1","Root$5$1","ignore","root$1","list$2$1","comma","space","separators","array","current","func","inQuote","prevQuote","escape","letter","list_1$1","Container$3$1","list$1$1","Rule$3$1","sep2","rule$1","Declaration$2$1","tokenizer2$1","quote","escaped","escapePos","currentToken","valueOf","ignoreErrors","returned","unclosed","what","back","token","endOfFile","nextToken","ignoreUnclosed","controlChar","fromCharCode","lastIndex","Comment$2$1","AtRule$2$1","Root$4$1","Rule$2$1","SAFE_COMMENT_NEIGHBOR$1","empty","parser$1","spaces","createTokenizer","unnamedAtrule","init","brackets","tokenizer","getPosition","spacesAndCommentsFromEnd","spacesAndCommentsFromStart","checkMissedSemicolon","tokens","founded","doubleColon","customProperty","findLastWithPosition$1","unknownWord","firstSpaces","precheckMissedSemicolon","stringFrom","spacesFromEnd","emptyRule","unexpectedClose","endFile","unclosedBlock","freeSemicolon","bracket","unclosedBracket","clean","lastTokenType","Container$2$1","Parser2$1","Input$2$1","parse$3$1","parser2","parse_1$1","isClean$3","my$3","MapGenerator$1$1","stringify$2$1","Container$1$1","Document$2$1","Result$2$1","parse$2$1","Root$3$1","TYPE_TO_CLASS_NAME$1","PLUGIN_PROPS$1","AtRule","AtRuleExit","CommentExit","Declaration","DeclarationExit","DocumentExit","Once","OnceExit","prepare","Root","RootExit","Rule","RuleExit","NOT_VISITORS$1","CHILDREN$1","isPromise$1","getEvents$1","toStack$1","eventIndex","visitorIndex","visitors","cleanMarks$1","postcss$2$1","LazyResult$2$1","LazyResult","stringified","processed","syntax","parser","helpers","postcss","plugins","processing","runAsync","onRejected","catch","onFinally","getAsyncError","postcssVersion","prepareVisitors","version","hasListener","runOnRoot","visitTick","visitor","roots","subRoot","sync","stringifier","walkSync","visitSync","onFulfilled","visit2","registerPostcss","lazyResult$1","MapGenerator2$1","stringify$1$1","parse$1$1","Result$1$1","NoWorkResult$1$1","_processor","_css","_opts","_map","generatedCSS","generatedMap","_root","noWorkResult$1","NoWorkResult2$1","LazyResult$1$1","Document$1$1","Root$2$1","Processor$1$1","normalized","process","use","processor$1","Declaration$1$1","PreviousMap2$1","Comment$1$1","AtRule$1$1","Input$1$1","Root$1$1","Rule$1$1","fromJSON$1$1","ownInputs","inputHydrated","fromJSON_1$1","CssSyntaxError2$1","Declaration2$1","LazyResult2$1","Container2$1","Processor2$1","stringify$5","fromJSON$2","Document22","Warning2$1","Comment2$1","AtRule2$1","Result2$1","Input2$1","parse$5","list$3","Rule2$1","Root2$1","Node2$1","postcss$3","initializer","warningPrinted","creator","env","LANG","transformer","processOpts","pluginOpts","fromJSON","atRule","Processor","Warning","Result","Input","postcss_1$1","postcss$1$1","__defProp2","__publicField2","__defNormalProp2","getDefaultExportFromCjs","getAugmentedNamespace","picocolors_browser","picocolors_browserExports","require$$2","pico","terminalHighlight$1","CssSyntaxError$3","CssSyntaxError2","cssSyntaxError","symbols","DEFAULT_RAW","Stringifier$2","Stringifier$1","stringify$4","stringify_1","isClean$2","my$2","CssSyntaxError$2","Stringifier22","stringify$3","Node$4","Node$3","Declaration$4","declaration","nonSecure","SourceMapConsumer$2","SourceMapGenerator$2","dirname$1","PreviousMap$2","previousMap","SourceMapConsumer$1","SourceMapGenerator$1","pathToFileURL$1","resolve$1","terminalHighlight","CssSyntaxError$1","PreviousMap$1","fromOffsetCache","sourceMapAvailable$1","pathAvailable$1","Input$4","Input$3","sourceMapAvailable","pathAvailable","mapGenerator","Node$2","Comment$4","parse$4","Rule$4","AtRule$4","Root$6","isClean$1","my$1","Declaration$3","Comment$3","Node$1","cleanSource","markDirtyUp","Container$7","Container2","container","LazyResult$4","Processor$3","Container$6","Document$3","document$1","Warning$2","warning","Warning$1","Result$3","SINGLE_QUOTE","DOUBLE_QUOTE","BACKSLASH","SLASH","NEWLINE","SPACE","FEED","TAB","CR","OPEN_SQUARE","CLOSE_SQUARE","OPEN_PARENTHESES","CLOSE_PARENTHESES","OPEN_CURLY","CLOSE_CURLY","SEMICOLON","ASTERISK","COLON","AT","RE_AT_END","RE_WORD_END","RE_BAD_BRACKET","RE_HEX_ESCAPE","Container$5","AtRule$3","LazyResult$3","Processor$2","Container$4","Root$5","list$2","list_1","Container$3","list$1","Rule$3","Declaration$2","tokenizer22","Comment$2","AtRule$2","Root$4","Rule$2","SAFE_COMMENT_NEIGHBOR","findLastWithPosition","Container$2","Parser22","Input$2","parse$3","parse_1","MapGenerator$1","stringify$2","Container$1","Document$2","Result$2","parse$2","Root$3","TYPE_TO_CLASS_NAME","PLUGIN_PROPS","NOT_VISITORS","CHILDREN","isPromise","getEvents","toStack","cleanMarks","postcss$2","LazyResult$2","LazyResult2","lazyResult","MapGenerator22","stringify$1","parse$1","Result$1","NoWorkResult$1","noWorkResult","NoWorkResult22","LazyResult$1","Document$1","Root$2","Processor$1","Declaration$1","PreviousMap22","Comment$1","AtRule$1","Input$1","Root$1","Rule$1","fromJSON$1","fromJSON_1","CssSyntaxError22","Declaration22","LazyResult22","Container22","Processor22","Document222","Warning22","Comment22","AtRule22","Result22","Input22","Rule22","Root22","Node22","postcss_1","postcss$1","BaseRRNode","_args","childIterator","_newChild","_refChild","_node","testableAccessors","testableMethods","untaintedBasePrototype","isAngularZonePresent","getUntaintedPrototype","untaintedAccessorCache","getUntaintedAccessor","untaintedMethodCache","getUntaintedMethod","mutationObserverCtor","on","capture","DEPARTED_MIRROR_ACCESS_WARNING","_mirror","throttle","wait","leading","remaining","trailing","hookSetter","isRevoked","patch","replacement","wrapped","defineProperties","__rrweb_original__","receiver","nowTimestamp","getWindowScroll","_d","scrollingElement","getWindowHeight","getWindowWidth","closestElementOfNode","isBlocked","isIgnored","headTitleMutations","isAncestorRemoved","legacy_isTouchEvent","changedTouches","isSerializedIframe","isSerializedStylesheet","hasShadowRoot","StyleSheetMirror","styleIDMap","newId","idStyleMap","getStyle","generateId","getShadowHost","shadowHost","DOCUMENT_FRAGMENT_NODE","shadowHostInDom","rootShadowHost","getRootShadowHost","inDom","EventType","EventType2","IncrementalSource","IncrementalSource2","MouseInteractions","MouseInteractions2","PointerTypes","PointerTypes2","CanvasContext","CanvasContext2","MediaInteractions","MediaInteractions2","NodeType","isNodeInLinkedList","DoubleLinkedList","addNode","__ln","previousSibling","tail","removeNode","moveKey","parentId","MutationBuffer","processMutation","emit","frozen","locked","adds","addedIds","addList","getNextId","ns","pushAdd","parentTag","addedSet","currentN","iframeManager","addIframe","stylesheetManager","trackLinkElement","shadowDomManager","addShadowRoot","iframe","childSn","attachIframe","observeAttachShadow","attachLinkElement","mapRemoves","movedSet","isParentRemoved","removesSubTreeCache","isAncestorInSet","droppedSet","candidate","tailNode","unhandledNode","texts","genTextAreaValueMutation","attribute","diffAsStr","styleDiff","unchangedAsStr","_unchangedStyles","removes","attributeMap","movedMap","mutationCb","textarea","cn","m","oldValue","attributeName","unattachedDoc","implementation","createHTMLDocument","old","pname","newValue","getPropertyValue","newPriority","getPropertyPriority","genAdds","nodeId","isSerialized","deepDelete","n22","processRemoves","processedNodeManager","inOtherBuffer","targetId","canvasManager","unfreeze","isFrozen","lock","unlock","addsSet","_mirror2","_isParentRemoved","_isAncestorInSet","errorHandler","callbackWrapper","rest","mutationBuffers","getEventTarget","composedPath","initMutationObserver","rootEl","mutationBuffer","processMutations","attributeOldValue","characterData","characterDataOldValue","initMouseInteractionObserver","mouseInteractionCb","sampling","mouseInteraction","disableMap","handlers","currentPointerType","eventKey","pointerType","thisEventKey","Mouse","Touch","Pen","MouseDown","MouseUp","Click","clientX","clientY","getHandler","PointerEvent","TouchStart","TouchEnd","initScrollObserver","scrollCb","scrollLeftTop","INPUT_TAGS","lastInputValueMap","getNestedCSSRulePositions","childRule","hasNestedCSSRule","parentRule","CSSGroupingRule","CSSMediaRule","CSSSupportsRule","CSSConditionRule","parentStyleSheet","recurse","getIdAndStyleId","styleMirror","initAdoptedStyleSheetObserver","host2","hostId","patchTarget","originalPropertyDescriptor","_a3","sheets","adoptStyleSheets","initObservers","o2","hooks","currentWindow","mousemoveCb","viewportResizeCb","inputCb","mediaInteractionCb","styleSheetRuleCb","styleDeclarationCb","canvasMutationCb","fontCb","selectionCb","customElementCb","mousemove","viewportResize","mediaInteaction","styleSheetRule","styleDeclaration","canvasMutation","font","selection","customElement","mergeHooks","recordDOM","mousemoveHandler","callbackThreshold","mousemoveCallback","timeBaseline","positions","wrappedCb","totalOffset","timeOffset","updatePosition","DragEvent","Drag","MouseEvent","MouseMove","TouchMove","initMoveObserver","mouseInteractionHandler","scrollHandler","viewportResizeHandler","lastH","lastW","initViewportResizeObserver","inputHandler","ignoreClass","ignoreSelector","userTriggeredOnInput","eventHandler","userTriggered","isTrusted","isChecked","cbWithDedup","text2","v2","lastInputValue","propertyDescriptor","HTMLInputElement","hookProperties","HTMLSelectElement","HTMLTextAreaElement","HTMLOptionElement","initInputObserver","mediaInteractionHandler","Play","Pause","Seeked","VolumeChange","RateChange","initMediaInteractionObserver","styleSheetObserver","adoptedStyleSheetObserver","styleDeclarationObserver","fontObserver","CSSStyleSheet","insertRule","thisArg","argumentsList","addRule","styleBlock","deleteRule","replaceSync","removeRule","supportedNestedCSSRuleTypes","canMonkeyPatchNestedCSSRule","unmodifiedFunctions","typeKey","initStyleSheetObserver","ignoreCSSAttributes","CSSStyleDeclaration","removeProperty","initStyleDeclarationObserver","collectFonts","fontMap","originalFontFace","FontFace","family","descriptors","fontFace","fontSource","Uint8Array","restoreHandler","fonts","initFontObserver","selectionObserver","collapsed","updateSelection","getSelection","isCollapsed","ranges","rangeCount","getRangeAt","startContainer","startOffset","endContainer","endOffset","initSelectionObserver","customElementObserver","initCustomElementObserver","pluginHandlers","plugin3","CrossOriginIframeMirror","generateIdFn","remoteId","idToRemoteMap","remoteToIdMap","idToRemoteIdMap","getIdToRemoteIdMap","remoteIdToIdMap","getRemoteIdToIdMap","getRemoteId","getRemoteIds","ids","iframeIdToRemoteIdMap","iframeRemoteIdToIdMap","IframeManager","wrappedEmit","recordCrossOriginIframes","crossOriginIframeStyleMirror","iframes","crossOriginIframeMap","addLoadListener","loadListener","isAttachIframe","crossOriginMessageEvent","transformedEvent","transformCrossOriginEvent","isCheckout","FullSnapshot","crossOriginIframeMirror","replaceIdOnNode","crossOriginIframeRootIdMap","patchRootIdOnNode","timestamp","IncrementalSnapshot","Mutation","Meta","Load","DomContentLoaded","Plugin","Custom","replaceIds","ViewportResize","MediaInteraction","MouseInteraction","Scroll","CanvasMutation","StyleSheetRule","StyleDeclaration","replaceStyleIds","Font","Selection","AdoptedStyleSheet","styles","iframeMirror","ShadowDomManager","WeakSet","patchAttachShadow","shadowDoms","restoreHandlers","iframeElement","manager","option","sRoot","chars","lookup","i$1","canvasVarMap","saveWebGLVar","isInstanceOfWebGLObject","list2","ctor","contextMap","variableListFor$1","serializeArg","Float32Array","Float64Array","Int32Array","Uint16Array","Int16Array","Int8Array","Uint8ClampedArray","rr_type","base64","arraybuffer","bytes","DataView","byteOffset","byteLength","HTMLImageElement","ImageData","serializeArgs","supportedWebGLConstructorNames","initCanvasContextObserver","setPreserveDrawingBufferToTrue","contextType","ctxName","getNormalizedContextName","contextAttributes","preserveDrawingBuffer","patchGLPrototype","getOwnPropertyNames","recordArgs","hookHandler","setter","encodedJs","WorkerWrapper","objURL","webkitURL","worker","Worker","revokeObjectURL","CanvasManager","latestId","invokeId","rafStamps","pendingCanvasMutations","initCanvasMutationObserver","initCanvasFPSObserver","resetObservers","fps","canvasContextReset","snapshotInProgressMap","onmessage","commands","timeBetweenSnapshots","rafId","lastSnapshotTime","takeCanvasSnapshots","matchedCanvas","getCanvas","getContextAttributes","COLOR_BUFFER_BIT","bitmap","createImageBitmap","startRAFTimestamping","startPendingCanvasMutationFlusher","canvas2DReset","props2D","CanvasRenderingContext2D","initCanvas2DMutationObserver","canvasWebGL1and2Reset","WebGLRenderingContext","WebGL","WebGL2RenderingContext","WebGL2","initCanvasWebGLMutationObserver","flushPendingCanvasMutations","setLatestRAFTimestamp","_values","flushPendingCanvasMutationFor","valuesWithType","type2","StylesheetManager","adoptedStyleSheetCb","linkEl","trackedLinkElements","trackStylesheetInLinkElement","adoptedStyleSheetData","styleIds","CSSRule","r2","_linkEl","ProcessedNodeManager","thisBuffer","buffers","nodeMap","active","takeFullSnapshot$1","recording","cleanFrame","debug","record","checkoutEveryNms","checkoutEveryNth","maskAllInputs","_maskInputOptions","_slimDOMOptions","packFn","mousemoveWait","recordAfter","errorHandler2","inEmittingFrame","passEmitsToParent","month","search","tel","week","select","password","lastFullSnapshotEvent","NodeList","DOMTokenList","polyfill$1","incrementalSnapshotCount","eventProcessor","exceedCount","exceedTime","wrappedMutationEmit","wrappedScrollEmit","wrappedCanvasMutationEmit","getMirror","nodeMirror","slimDOM","snapshot","initialOffset","CustomElement","t2","addCustomEvent","tag","freezePage","takeFullSnapshot","NotStarted","Running","Stopped","customOptions","stopFunction","ContextMenu","DblClick","Focus","Blur","rrwebEvent","stringifiedData","_step","dataURIRegex","_iterator","_createForOfIteratorHelper","matchAll","ensureMaxMessageSize","bufferSize","ScreenDrawer","svgElement","minHeight","mouseDown","colorpicker","fadeOutToolbar","tool","mouseDownPen","mouseDownRect","mouseMove","mouseMovePen","mouseMoveRect","mouseUp","fadeInToolbar","mouseUpPen","mouseUpRect","appendToBuffer","getMousePosition","updateSvgPath","w","abs","startPoint","setAttributeNS","createElementNS","strokeWidthRect","appendPathToSvg","strokeWidth","pt","strPath","touches","totalX","totalY","getAveragePoint","tmpPath","pathBuffer","fadeTarget","GleapScrollStopper","supportsPassive","wheelOpt","scrollDisabled","wheelEvent","preventDefaultForScrollKeys","keyCode","showWidgetUI","formKey","dirty","dialogUI","enableScroll","screenRecorder","unregisterListeners","cleanupMousePointer","screenDrawer","dialog","captureSVG","videoPreviewContainer","dismissUI","colorPicker","borderLayer","captureEditor","dragCursor","setMouseMove","mouseMoveEventHandler","touchMoveEventHandler","dragHandle","dragStart","drag","dragEnd","bugReportingEditor","translateText","pageLeaveListener","isEscape","isEnter","dismiss","showNextStep","returnValue","registerListeners","hideWidgetUI","createEditorUI","setupMousePointer","disableScroll","setupScreenRecording","captureScreenDrawerRerender","setupColorPicker","setupToolbar","selectedColor","colorItems","colorItem","hexColor","onclick","setColor","setPenColor","currentX","currentY","initialX","initialY","toolbar","isDragging","xOffset","yOffset","_getTransformValues","matrix","DOMMatrix","m41","m42","getTransformValues","nextButton","chooseTool","toolbarItem","toolbarTools","setTool","svgClone","toolbarItems","_loop2","toggleAudio","startScreenRecording","removeLastAddedPathFromSvg","itemInactiveClass","screenRecordingTooltip","audioRecordingTooltip","recordingClass","notRecordingClass","clearPreview","captureRenderer","penTips","fill","staticTranslation","staticTranslations","vars","template","localizationOptions","htmlLang","GleapShortcutListener","shortCutListener","char","keyIdentifier","ctrlKey","startFeedbackFlowWithOptions","autostartDrawing","GleapPreFillManager","unreadCount","notificationContainer","notificationsFromCache","unreadNotificationsKey","nots","notification","createdAt","notifications","renderNotifications","updateTabBarNotificationCount","sound","clearElem","currentNewsIndex","newsNotifications","news","otherNotifications","currentIndex","currentNews","newsElem","newsContainerElem","coverImageUrl","newsImageElem","stopPropagation","openNews","newsContentElem","newsTitleElem","getName","descHTML","renderDescription","descElem","paginationElem","pageIndicator","nextBtn","conversation","openConversation","checklist","openChecklist","progress","currentStep","totalSteps","nextStepTitle","sender","profileImageUrl","openNewsArticle","_notification$data","previewText","uiOnly","classLeft","classNoButton","_this$bannerUrl","_this$bannerData","_data$data2","_data$data3","_data$data4","_data$data5","_data$data6","_data$data7","_data$data8","_data$data9","_data$data10","bannerData","format","startBot","botId","startFeedbackFlow","formId","showSurvey","surveyFormat","articleId","openHelpCenterArticle","startChecklist","checklistId","bannerContainer","gleapBFrame","injectBannerUI","_listenForMessages","modalUrl","_this$modalUrl","_data$data11","modalData","primaryColor","_postMessage","modalContainer","wrapper","modalBackdropClickListener","_this2$modalData$show","_this2$modalData","showCloseButton","frame","_injectModalUI","play","settings","Audio","playPromise","getID","getClassSelectors","getClasses","cl","kCombinations","items","getNthChild","sibling","counter","getTag","isUnique","elems","getAllSelectors","attributesToIgnore","funcs","sum","getAttributes","res","testUniqueness","getFirstUnique","getUniqueCombination","combinations","getCombinations","firstUnique","combination","getUniqueSelector","selectorTypes","excludeRegex","foundSelector","elementSelectors","ID","Class","selectorType","Tag","Classes","Attributes","NthChild","unique","_step2","_options$selectorType","_options$attributesTo","_options$excludeRegex","allSelectors","parents","currentElement","getParents","_iterator2","_allSelectors","it","ElementOverlay","overlay","background","borderColor","borderStyle","borderWidth","boxSizing","cursor","zIndex","margin","shadowContainer","attachShadow","_createClass","useShadowDOM","usingShadowDOM","setBounds","bounds","ElementPicker","overlayOptions","handleMouseMove","handleClick","tick","addToDOM","removeFromDOM","mouseX","mouseY","tickReq","stopImmediatePropagation","onClick","updateTarget","ignoreCursor","newTarget","elementFromPoint","captureCursor","elementFilter","onHover","GleapAdminHelper","picker","stopPicker","onElementPicked","startPicker","GleapAdminManager","COLLAPSE_UI_ACTIVE_CLASS","FRAME_CONTAINER_ACTIVE_CLASS","isActive","activeClass","gleapCollapseUI","toggle","injectedCollapseUI","toggleCollapseUI","_this$configData","configData","sendMessageToTourBuilder","GleapProductTours","disable","adminHelper","injectCollapseUI","setFrameHeight","gleapAdminDisabled","initAdminHelper","currentPage","click","opener","GleapTours","currentConfig","configure","animate","allowClose","overlayOpacity","smoothScroll","disableActiveInteraction","showProgress","stagePadding","stageRadius","popoverOffset","showButtons","disableButtons","overlayColor","getConfig","easeInOutQuad","elapsed","initialValue","amountOfChange","getFocusableElements","parentEls","focusableQuery","flatMap","parentEl","isParentFocusable","focusableEls","isElementVisible","bringInView","isElementInView","shouldSmoothScroll","scrollIntoView","behavior","hasScrollableParent","currentState","setState","getState","resetState","registeredListeners","listen","hook","trackActiveElement","activeStagePosition","renderOverlay","mountOverlay","stagePosition","overlaySvg","stage","windowX","windowY","svg","fillRule","clipRule","strokeLinejoin","strokeMiterlimit","stagePath","generateStageSvgPathString","createOverlaySvg","onDriverClick","pathElement","stageWidth","stageHeight","limitedRadius","normalizedRadius","highlightBoxX","highlightBoxY","highlightBoxWidth","highlightBoxHeight","highlight","attemptTime","elemObj","refactoredElement","hidePopover","existingDummy","getElementById","mountDummyElement","toElement","toStep","_toStep$disableActive","fromStep","fromElement","isFirstHighlight","isToDummyElement","isFromDummyElement","isAnimatedTour","highlightStartedHook","onHighlightStarted","highlightedHook","onHighlighted","deselectedHook","onDeselected","hasDelayedPopover","isPopoverRendered","isHalfwayThrough","popover","renderPopover","fromDefinition","toDefinition","transitionStage","transferHighlight","refreshActiveHighlight","activeHighlight","activeStep","refreshOverlay","repositionPopover","requireRefresh","resizeTimeout","trapFocus","activeElement","popoverEl","firstFocusableEl","lastFocusableEl","shiftKey","previousFocusableEl","nextFocusableEl","onKeyup","shouldPreventDefault","listenerWrapper","listener2","useCapture","title","description","closeButton","footer","footerButtons","previousButton","createPopover","_ref2$nextBtnText","nextBtnText","_ref2$prevBtnText","prevBtnText","_ref2$progressText","progressText","showButtonsConfig","showProgressConfig","showFooter","disabledButtonsConfig","popoverWrapper","customPopoverClass","popoverClass","_b2","onNextClick","onPrevClick","onCloseClick","onPopoverRender","focusableElement","getPopoverDimensions","boundingClientRect","realWidth","realHeight","calculateTopForLeftRight","elementDimensions","popoverDimensions","popoverPadding","popoverArrowDimensions","calculateLeftForTopBottom","_ref3$align","align","_ref3$side","requiredAlignment","requiredSide","topValue","isTopOptimal","bottomValue","isBottomOptimal","leftValue","isLeftOptimal","rightValue","isRightOptimal","noneOptimal","popoverRenderedSide","leftToSet","topToSet","leftValue2","rightToSet","bottomToSet","popoverArrow","popoverWidth","windowWidth","elementWidth","elementLeft","popoverHeight","windowHeight","elementTop","elementHeight","arrowSide","arrowAlignment","renderPopoverArrow","moveNext","activeIndex","steps","nextStepIndex","drive","movePrevious","previousStepIndex","handleArrowLeft","handleArrowRight","_e","_f","_g","_h","stepIndex","hasNextStep","hasPreviousStep","doneBtnText","allowsClosing","progressTextReplaced","configuredButtons","calculatedButtons","withOnDestroyStartedHook","activeOnDestroyed","onDestroyStarted","onDestroyed","destroyPopover","destroyHighlight","isActiveDummyElement","setConfig","setSteps","getActiveIndex","isFirstStep","isLastStep","getActiveStep","getActiveElement","getPreviousElement","getPreviousStep","moveTo","_defineProperties","descriptor","_toPropertyKey","toPrimitive","_toPrimitive","localStorageKey","pointerContainerId","copilotJoinedContainerId","_canPlayAudio","GleapCopilotTours","Constructor","_scrollListeners","_currentAnchor","_currentStep","_scrollDebounceTimer","productTourId","currentActiveIndex","productTourData","updatePointerPosition","protoProps","staticProps","onCompleteCallback","scrollableAncestors","getScrollableAncestors","_pointerContainer","yPosition","targetScrollPosition","scrollTo","smoothScrollToY","removeScrollListeners","pollCount","updateFinalPosition","isElementFullyVisible","targetX","targetY","containerWidthSpace","attachScrollListeners","currentAudio","pause","copilotInfoContainer","_GleapConfigManager$g","_GleapConfigManager$g2","_this$productTourData3","_this$productTourData4","_this$productTourData5","_this$productTourData6","_this$productTourData","_this$productTourData2","contrastColor","playVoice","gradient","svgMouse","infoBubble","kaiAvatar","kaiSlug","completeTour","canPlayAudio","supported","setupCopilotTour","showUnmuteModal","showAudioUnmuteModal","renderNextStep","_this$productTourData7","_this$productTourData8","_this$productTourData9","modalOverlay","modal","unmuteModalTitle","unmuteButton","unmuteModalButton","startAnywayButton","unmuteModalContinue","_this7","handleStep","gotToNextStep","_currentStep$inputTyp","proceedClickmode","storeUncompletedTour","inputType","handleInputEvent","_e$target","once","_currentStep$inputVal","inputValue","typeCharacter","wave","performClickAnimation","tempDiv","htmlToPlainText","readTime","wordCount","ceil","estimateReadTime","continueWithNoAudio","voice","elementPromise","maxAttempts","attempts","interval","waitForElement","_self$productTourData","tourType","gleapTourObj","delay","manually","validateProductTour","onComplete","comData","clearUncompletedTour","startWithConfig","unmuted","driverSteps","isClickMode","isInputMode","hasSender","videoUrl","senderHTML","firstName","driverStep","buttons","backButton","allowKeyboardControl","nextText","doneText","prevText","_config$state","onDocumentClick","popoverElement","mediaElements","performRequentialRefresh","mediaElement","playingClass","playPauseContainer","videoElement","videoContainer","clickVideo","evnt","gleapTourPopover","_evnt$target","__originalGetContext","GleapChecklist","_HTMLElement","_assertThisInitialized","_callSuper","handleChecklistUpdate","handleSessionUpdate","_networkManager","_boundFloatingLauncherClick","handleFloatingLauncherClick","_boundFloatingCloseClick","handleFloatingCloseClick","_floatingHideTimeout","_inherits","_boundHandleChecklistUpdate","_boundHandleSessionUpdate","_boundResizeHandler","handleResize","_checkSessionAndLoad","removeFloatingClickListeners","checklistData","_hasLoaded","_isSessionReady","_initialActiveSet","renderResponse","updateActiveTaskMaxHeight","loadChecklist","renderChecklist","_getGleapSessionInstance","hasChecklistId","defaultValue","translateTextWithVars","validateChecklist","_isMock","isConnected","fetchChecklist","_isInitialLoad","_this3$checklistData$","_data$outbound","completedSteps","firstIncompleteIndex","findIndex","_session$gleapId","_session$gleapHash","checkedStep","makeRequest","updateData","_this$checklistData$o3","previousCompletedSteps","dataChanged","activeStepCompleted","currentlyActiveStepIndex","_this$checklistData$o","activeStepId","_this$checklistData$o2","nextActiveStep","setActiveStep","tasks","launcher","_outbound$config","_this$checklistData","renderDoneState","progressbarEnabled","doneSteps","_outbound$config2","_outbound$config3","nextIncompleteStep","titleText","_translateWithVars","subject","subtitleText","successTitle","successMessage","circumference","PI","computedOffset","isHeader","toFixed","_outbound$sender","infoEnabled","_translate","senderHtml","progressLabel","durationLabel","isTaskDone","badge","getCheckIcon","stepTitle","stepDescription","actionButtonText","actionTitle","actionHtml","markDoneLabel","markDoneHtml","allowMarkDone","taskClasses","_outbound$config4","_outbound$config5","_outbound$config6","floatingEnabled","renderFloatingLauncher","renderInfoSection","renderProgressSection","renderTasks","addTaskEventListeners","addFloatingClickListeners","toggleTask","taskBodyInner","task","newActiveStep","markDoneBtn","_this5$checklistData","previouslyActiveStep","_this5$checklistData$","stepId","allSteps","isModalOpen","tasksModal","_this5$checklistData$2","updateChecklist","actionBtn","_this5$checklistData2","actionBody","openURL","actionOpenInNewTab","gleapError","previousActiveStep","tasksToToggle","forceOpen","taskElement","isOpen","shouldOpen","taskBody","_wrapNativeSuper","registerGleapChecklist","offlineMode","hostname","injectNotificationUI","actions","_action$data","popupType","disableInAppNotifications","showNotification","showBanner","showModal","startProductTourWithConfig","globalData","replayData","getReplayData","setTags","setUrlHandler","tools","setAiTools","updateContainerHeight","initialHeight","fixGleapHeight","checkForUncompletedTour","checkForUrlParams","urlParams","URLSearchParams","widget","conversationFlow","startConversation","feedbackFlow","surveyFlow","surveyFlowFormat","tourDelay","identifySession","updateSession","setMaxRequests","setOptions","cleanedData","formPreFill","toggleFeedbackButton","setAppVersionCode","setAppBuildNumber","setBannerUrl","setModalUrl","setTicketAttribute","unsetTicketAttribute","clearTicketAttributes","attachCustomData","setCustomData","removeCustomData","clearCustomData","playSound","showNotificationBadge","notificationInstance","setOverrideLanguage","softReInitialize","updateContact","registerCustomAction","buttonStyle","contrastButtonColor","contrastBackgroundColor","contrastHeaderColor","isDarkMode","headerDarkColor","subTextColor","backgroundColorHover","hoverHoverColor","buttonBorderRadius","containerRadius","chatRadius","formItemBorderRadius","formItemSmallBorderRadius","bottomInfoOffset","colorStyleSheet","zIndexBase","injectStyledCSS","replays","attachments","sendSilentCrashReportWithFormData","silentCrashReportSent","excludeDataCleaned","newFormData","hideBackButton","showBackButton","flow","collectionId","term","networkManager","checkStartUrl","startProductTourConfig","startURL","loadUncompletedTour","GleapActions","GLAction","urlParts","identifier","openHelpCenterCollection"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"index.js","mappings":"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","sources":["webpack://Gleap/webpack/bootstrap","webpack://Gleap/webpack/runtime/define property getters","webpack://Gleap/webpack/runtime/hasOwnProperty shorthand","webpack://Gleap/./src/GleapFeedbackButtonManager.js","webpack://Gleap/./src/UI.js","webpack://Gleap/./src/GleapNetworkIntercepter.js","webpack://Gleap/./src/GleapHelper.js","webpack://Gleap/./src/ChecklistNetworkManager.js","webpack://Gleap/./node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","webpack://Gleap/./node_modules/@floating-ui/core/dist/floating-ui.core.mjs","webpack://Gleap/./node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","webpack://Gleap/./node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","webpack://Gleap/./src/GleapPageFilter.js","webpack://Gleap/./src/GleapTooltipManager.js","webpack://Gleap/./src/GleapSession.js","webpack://Gleap/./src/GleapStreamedEvent.js","webpack://Gleap/./src/GleapConfigManager.js","webpack://Gleap/./src/ScreenCapture.js","webpack://Gleap/./src/ResourceExclusionList.js","webpack://Gleap/./src/GleapScreenRecorder.js","webpack://Gleap/./src/GleapFeedback.js","webpack://Gleap/./src/GleapFrameManager.js","webpack://Gleap/./src/GleapMetaDataManager.js","webpack://Gleap/./src/GleapConsoleLogManager.js","webpack://Gleap/./src/GleapClickListener.js","webpack://Gleap/./src/GleapCustomDataManager.js","webpack://Gleap/./src/GleapEventManager.js","webpack://Gleap/./src/GleapCustomActionManager.js","webpack://Gleap/./node_modules/@rrweb/record/dist/record.js","webpack://Gleap/./src/GleapReplayRecorder.js","webpack://Gleap/./src/ScreenDrawer.js","webpack://Gleap/./src/GleapScrollStopper.js","webpack://Gleap/./src/GleapMarkerManager.js","webpack://Gleap/./src/GleapTranslationManager.js","webpack://Gleap/./src/GleapShortcutListener.js","webpack://Gleap/./src/GleapPreFillManager.js","webpack://Gleap/./src/GleapNotificationManager.js","webpack://Gleap/./src/GleapBannerManager.js","webpack://Gleap/./src/GleapModalManager.js","webpack://Gleap/./src/GleapAudioManager.js","webpack://Gleap/./src/GleapTagManager.js","webpack://Gleap/./src/unique-selector/src/getID.js","webpack://Gleap/./src/unique-selector/src/getClasses.js","webpack://Gleap/./src/unique-selector/src/getCombinations.js","webpack://Gleap/./src/unique-selector/src/isElement.js","webpack://Gleap/./src/unique-selector/src/getNthChild.js","webpack://Gleap/./src/unique-selector/src/getTag.js","webpack://Gleap/./src/unique-selector/src/isUnique.js","webpack://Gleap/./src/unique-selector/src/unique-selector.js","webpack://Gleap/./src/unique-selector/src/getAttributes.js","webpack://Gleap/./src/unique-selector/src/getParents.js","webpack://Gleap/./src/ElementPicker.js","webpack://Gleap/./src/GleapAdminHelper.js","webpack://Gleap/./src/GleapAdminManager.js","webpack://Gleap/./src/GleapTours.js","webpack://Gleap/./src/GleapCopilotTours.js","webpack://Gleap/./src/GleapProductTours.js","webpack://Gleap/./src/Gleap.js","webpack://Gleap/./src/GleapChecklist.js","webpack://Gleap/./src/index.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","import {\n GleapFrameManager,\n GleapConfigManager,\n GleapNotificationManager,\n GleapTranslationManager,\n GleapSession,\n} from \"./Gleap\";\nimport { loadIcon } from \"./UI\";\n\nexport default class GleapFeedbackButtonManager {\n feedbackButton = null;\n injectedFeedbackButton = false;\n buttonHidden = null;\n lastButtonIcon = null;\n\n // Feedback button types\n static FEEDBACK_BUTTON_BOTTOM_RIGHT = \"BOTTOM_RIGHT\";\n static FEEDBACK_BUTTON_BOTTOM_LEFT = \"BOTTOM_LEFT\";\n static FEEDBACK_BUTTON_CLASSIC = \"BUTTON_CLASSIC\";\n static FEEDBACK_BUTTON_CLASSIC_LEFT = \"BUTTON_CLASSIC_LEFT\";\n static FEEDBACK_BUTTON_CLASSIC_BOTTOM = \"BUTTON_CLASSIC_BOTTOM\";\n static FEEDBACK_BUTTON_NONE = \"BUTTON_NONE\";\n\n // GleapFeedbackButtonManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapFeedbackButtonManager();\n }\n return this.instance;\n }\n\n destroy() {\n if (this.feedbackButton) {\n this.feedbackButton.remove();\n this.feedbackButton = null;\n }\n\n this.buttonHidden = null;\n this.lastButtonIcon = null;\n this.injectedFeedbackButton = false;\n this.instance = null;\n }\n\n /**\n * Toggles the feedback button visibility.\n * @param {*} show\n * @returns\n */\n toggleFeedbackButton(show) {\n this.buttonHidden = !show;\n\n GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n GleapNotificationManager.getInstance().updateContainerStyle();\n }\n\n feedbackButtonPressed() {\n var frameManager = GleapFrameManager.getInstance();\n if (frameManager.isOpened()) {\n frameManager.hideWidget();\n } else {\n frameManager.setAppMode(\"widget\");\n frameManager.showWidget();\n }\n }\n\n /**\n * Injects the feedback button into the current DOM.\n */\n injectFeedbackButton() {\n if (this.injectedFeedbackButton) {\n return;\n }\n this.injectedFeedbackButton = true;\n\n var elem = document.createElement(\"div\");\n elem.addEventListener(\"click\", () => {\n this.feedbackButtonPressed();\n });\n document.body.appendChild(elem);\n this.feedbackButton = elem;\n\n this.updateFeedbackButtonState();\n }\n\n updateNotificationBadge(count) {\n const notificationBadge = document.querySelector(\".bb-notification-bubble\");\n if (!notificationBadge) {\n return;\n }\n\n const notificationHiddenClass = \"bb-notification-bubble--hidden\";\n if (count > 0 && !GleapFrameManager.getInstance().isOpened()) {\n notificationBadge.classList.remove(notificationHiddenClass);\n notificationBadge.innerText = count;\n } else {\n notificationBadge.classList.add(notificationHiddenClass);\n }\n }\n\n refresh() {\n const feedbackButton = document.querySelector(\".bb-feedback-button\");\n if (feedbackButton) {\n this.updateFeedbackButtonText();\n this.updateFeedbackButtonState();\n } else {\n this.injectedFeedbackButton = false;\n this.feedbackButton = null;\n this.buttonHidden = null;\n this.lastButtonIcon = null;\n this.injectFeedbackButton();\n }\n }\n\n updateFeedbackButtonText() {\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n\n if (\n !(\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT\n )\n ) {\n return;\n }\n\n const feedbackButton = document.querySelector(\n \".bb-feedback-button-classic\"\n );\n if (!feedbackButton) {\n return;\n }\n\n feedbackButton.innerText = flowConfig.widgetButtonText;\n }\n\n /**\n * Updates the feedback button state\n * @returns\n */\n updateFeedbackButtonState() {\n if (this.feedbackButton === null) {\n return;\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n\n var buttonIcon = \"\";\n if (flowConfig.buttonLogo) {\n buttonIcon = `\"Feedback`;\n } else {\n buttonIcon = loadIcon(\"button\", \"#fff\");\n }\n\n this.feedbackButton.className = \"bb-feedback-button gleap-font gl-block\";\n this.feedbackButton.setAttribute(\n \"dir\",\n GleapTranslationManager.getInstance().isRTLLayout ? \"rtl\" : \"ltr\"\n );\n\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT\n ) {\n this.feedbackButton.classList.add(\n \"bb-feedback-button--classic-button-style\"\n );\n\n this.feedbackButton.innerHTML = `
${flowConfig.widgetButtonText}
`;\n } else {\n if (buttonIcon !== this.lastButtonIcon) {\n this.feedbackButton.innerHTML = `
${buttonIcon}${loadIcon(\n \"arrowdown\",\n \"#fff\"\n )}
`;\n }\n }\n\n // Prevent dom update if not needed.\n this.lastButtonIcon = buttonIcon;\n\n var hideButton = false;\n if (GleapFeedbackButtonManager.getInstance().buttonHidden === null) {\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_NONE\n ) {\n hideButton = true;\n }\n } else {\n if (GleapFeedbackButtonManager.getInstance().buttonHidden) {\n hideButton = true;\n }\n }\n if (hideButton) {\n this.feedbackButton.classList.add(\"bb-feedback-button--disabled\");\n }\n\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_BOTTOM_LEFT\n ) {\n this.feedbackButton.classList.add(\"bb-feedback-button--bottomleft\");\n }\n\n if (GleapFrameManager.getInstance().isOpened()) {\n this.feedbackButton.classList.add(\"bb-feedback-button--open\");\n }\n\n const appMode = GleapFrameManager.getInstance().appMode;\n if (\n appMode === \"survey\" ||\n appMode === \"survey_full\" ||\n appMode === \"survey_web\"\n ) {\n this.feedbackButton.classList.add(\"bb-feedback-button--survey\");\n }\n\n if (\n flowConfig.hideForGuests === true &&\n !GleapSession.getInstance().isUser()\n ) {\n this.feedbackButton.classList.add(\"bb-feedback-button--hidden\");\n }\n }\n}\n","import GleapFeedbackButtonManager from \"./GleapFeedbackButtonManager\";\n\nconst calculateShadeColor = function (col, amt) {\n col = col.replace(/^#/, \"\");\n if (col.length === 3)\n col = col[0] + col[0] + col[1] + col[1] + col[2] + col[2];\n\n let [r, g, b] = col.match(/.{2}/g);\n [r, g, b] = [\n parseInt(r, 16) + amt,\n parseInt(g, 16) + amt,\n parseInt(b, 16) + amt,\n ];\n\n r = Math.max(Math.min(255, r), 0).toString(16);\n g = Math.max(Math.min(255, g), 0).toString(16);\n b = Math.max(Math.min(255, b), 0).toString(16);\n\n const rr = (r.length < 2 ? \"0\" : \"\") + r;\n const gg = (g.length < 2 ? \"0\" : \"\") + g;\n const bb = (b.length < 2 ? \"0\" : \"\") + b;\n\n return `#${rr}${gg}${bb}`;\n};\n\nexport const calculateContrast = (hex) => {\n var r = parseInt(hex.substr(1, 2), 16),\n g = parseInt(hex.substr(3, 2), 16),\n b = parseInt(hex.substr(5, 2), 16),\n yiq = (r * 299 + g * 587 + b * 114) / 1000;\n return yiq >= 160 ? \"#000000\" : \"#ffffff\";\n};\n\nexport const widgetMaxHeight = 700;\n\nexport const injectStyledCSS = (\n primaryColor,\n headerColor,\n buttonColor,\n borderRadius,\n backgroundColor,\n buttonX,\n buttonY,\n buttonStyle\n) => {\n const contrastColor = calculateContrast(primaryColor);\n const contrastButtonColor = calculateContrast(buttonColor);\n const contrastBackgroundColor = calculateContrast(backgroundColor);\n const contrastHeaderColor = calculateContrast(headerColor);\n const isDarkMode = contrastBackgroundColor === \"#ffffff\";\n const headerDarkColor = calculateShadeColor(\n headerColor,\n contrastHeaderColor === \"#ffffff\" ? -35 : -15\n );\n const subTextColor = isDarkMode\n ? calculateShadeColor(backgroundColor, 100)\n : calculateShadeColor(backgroundColor, -120);\n const backgroundColorHover = isDarkMode\n ? calculateShadeColor(backgroundColor, 30)\n : calculateShadeColor(backgroundColor, -12);\n const hoverHoverColor = isDarkMode\n ? calculateShadeColor(backgroundColor, 80)\n : calculateShadeColor(backgroundColor, -30);\n\n var borderRadius = parseInt(borderRadius, 10);\n const buttonBorderRadius = Math.round(borderRadius * 1.05);\n const containerRadius = Math.round(borderRadius * 0.8);\n const chatRadius = Math.round(borderRadius * 0.6);\n const formItemBorderRadius = Math.round(borderRadius * 0.4);\n const formItemSmallBorderRadius = Math.round(borderRadius * 0.25);\n const zIndexBase = 2147483600;\n\n var bottomInfoOffset = 57 + buttonY;\n if (\n buttonStyle === GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM\n ) {\n bottomInfoOffset = buttonY + 15;\n } else if (buttonStyle && buttonStyle.includes(\"CLASSIC\")) {\n bottomInfoOffset = buttonY;\n } else if (buttonStyle === GleapFeedbackButtonManager.FEEDBACK_BUTTON_NONE) {\n bottomInfoOffset = buttonY;\n }\n\n const colorStyleSheet = `\n .gleap-font, .gleap-font * {\n font-style: normal;\n font-variant-caps: normal;\n font-variant-ligatures: normal;\n font-variant-numeric: normal;\n font-variant-east-asian: normal;\n font-weight: normal;\n font-stretch: normal;\n font-size: 100%;\n line-height: 1;\n font-family: system-ui, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n }\n .gleap-input-highlight {\n box-shadow: 0 0 0 3px ${primaryColor} !important;\n }\n .gleap-frame-container {\n right: ${buttonX}px;\n bottom: ${61 + buttonY}px;\n width: calc(100% - 40px);\n max-width: 410px;\n position: fixed;\n z-index: ${zIndexBase + 31};\n visibility: visible;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.16);\n border-radius: ${containerRadius}px;\n overflow: hidden;\n animation-duration: .3s;\n animation-fill-mode: both;\n animation-name: gleapFadeInUp;\n user-select: none;\n pointer-events: none;\n transition: max-width 0.3s ease-out;\n }\n\n .gleap-admin-highlight {\n box-shadow: 0px 0px 0px 4px red;\n }\n\n :root {\n --gleap-margin-top: 50px;\n }\n\n .gleap-tooltip-anchor {\n position: relative;\n display: inline-block;\n float: left;\n max-width: 0px;\n width: 17px;\n }\n\n .gleap-tooltip-hotspot {\n position: absolute;\n display: block;\n width: 17px;\n height: 17px;\n cursor: pointer;\n top: 0px;\n left: 0px;\n }\n\n @keyframes gleap-pulse {\n 0% {\n transform: scale(0);\n opacity: 0.25;\n }\n 45% {\n transform: scale(2.5);\n opacity: 0;\n }\n 100% {\n transform: scale(0);\n opacity: 0;\n }\n }\n\n .gleap-tooltip-hotspot-animation {\n position: absolute;\n border-radius: 17px;\n opacity: 0.25;\n display: block;\n width: 17px;\n height: 17px;\n cursor: pointer;\n top: 0px;\n left: 0px;\n animation: gleap-pulse 5s infinite;\n }\n\n .gleap-tooltip-hotspot svg {\n width: 17px;\n height: 17px;\n object-fit: contain;\n display: block;\n }\n\n .gleap-tooltip-inner {\n position: relative;\n overflow: visible;\n font-size: 14px;\n font-weight: normal;\n color: #000;\n line-height: 1.3;\n }\n\n .gleap-tooltip {\n position: absolute;\n background-color: #fff;\n color: #000;\n font-size: 15px;\n line-height: 18px;\n padding: 16px;\n padding-top: 8px;\n padding-bottom: 8px;\n border-radius: 4px;\n max-width: min(350px, 80vw);\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n opacity: 0;\n visibility: hidden;\n transition: opacity 0.2s, visibility 0.2s;\n z-index: ${zIndexBase + 100};\n }\n\n .gleap-tooltip a {\n color: ${primaryColor};\n text-decoration: underline;\n display: inline !important;\n margin: 0px !important;\n padding: 0px !important;\n word-break: break-word;\n }\n\n .gleap-tooltip ul {\n padding-left: 16px;\n }\n\n .gleap-tooltip b {\n font-weight: 600;\n }\n\n .gleap-tooltip h2 {\n font-size: 18px;\n line-height: 20px;\n font-weight: 600;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip h3 {\n font-size: 16px;\n line-height: 18px;\n font-weight: 600;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip p {\n padding: 0px;\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n .gleap-tooltip img {\n max-width: 100%;\n max-height: 300px;\n width: 100%;\n height: auto;\n object-fit: cover;\n margin-top: 8px;\n margin-bottom: 8px;\n border-radius: 4px;\n }\n\n .gleap-tooltip iframe,\n .gleap-tooltip video {\n max-width: 100%;\n width: 100%;\n height: auto;\n min-height: 200px;\n display: block;\n border: none;\n outline: none;\n padding: 0px;\n margin-top: 8px;\n margin-bottom: 8px;\n border-radius: 4px;\n }\n\n .gleap-tooltip-arrow {\n position: absolute;\n width: 20px;\n height: 20px;\n }\n\n .gleap-tooltip-arrow svg {\n width: 20px;\n height: 20px;\n object-fit: contain;\n }\n\n .gleap-b-frame {\n width: 100%;\n height: 100%;\n border: none;\n pointer-events: auto;\n padding: 0px;\n margin: 0px;\n }\n\n .gleap-b-shown {\n transition: margin 0.3s ease-out;\n margin-top: var(--gleap-margin-top);\n position: relative;\n z-index: 10000;\n }\n\n .gleap-b-f {\n margin-top: 0px;\n }\n\n .gleap-b {\n display: none;\n position: absolute;\n top: calc(-1 * var(--gleap-margin-top));\n left: 0px;\n width: 100vw;\n height: var(--gleap-margin-top);\n z-index: ${zIndexBase + 99};\n }\n\n @keyframes gleapSlideIn {\n from {\n top: calc(-1 * var(--gleap-margin-top));\n }\n to {\n top: 10px;\n }\n }\n\n .gleap-b-f .gleap-b {\n position: fixed;\n top: 10px;\n animation: gleapSlideIn .25s ease-out forwards;\n max-width: 800px;\n width: calc(100% - 20px);\n left: 50%;\n z-index: ${zIndexBase + 99};\n transform: translateX(-50%);\n border-radius: ${formItemBorderRadius}px;\n overflow: hidden;\n box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.15), 0px 5px 5px rgba(0, 0, 0, 0.05);\n }\n\n .gleap-b-shown .gleap-b {\n display: block;\n }\n\n .gleap-image-view {\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n z-index: ${zIndexBase + 99};\n background-color: ${contrastBackgroundColor}cc;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .gleap-image-view-image {\n width: 90%;\n height: auto;\n max-width: 90%;\n max-height: 90%;\n object-fit: contain;\n }\n\n .gleap-image-view-close {\n position: fixed;\n top: 20px;\n right: 20px;\n width: 32px;\n height: 32px;\n opacity: 0.8;\n z-index: ${zIndexBase + 140};\n box-shadow: 0px 5px 18px rgba(0, 0, 0, 0.16);\n cursor: pointer;\n }\n\n .gleap-image-view-close:hover {\n opacity: 1;\n }\n\n .gleap-image-view-close svg path {\n fill: ${backgroundColor};\n }\n\n [dir=rtl].gleap-frame-container {\n right: auto;\n left: ${buttonX}px;\n bottom: ${61 + buttonY}px;\n }\n\n .gleap-frame-container--loading iframe {\n opacity: 0;\n }\n\n .gleap-frame-container--loading::before {\n content: \" \";\n position: fixed;\n top: 0px;\n left: 0px;\n right: 0px;\n height: 100%;\n max-height: 380px;\n background: linear-gradient(\n 130deg,\n ${headerDarkColor} 0%,\n ${headerColor} 100%\n );\n }\n \n .gleap-frame-container--loading::after {\n content: \" \";\n position: fixed;\n top: 0px;\n left: 0px;\n right: 0px;\n height: 100%;\n height: 100%;\n max-height: 380px;\n background: linear-gradient(\n 180deg,\n transparent 60%,\n ${backgroundColor}1A 70%,\n ${backgroundColor} 100%\n );\n }\n\n .gleap-frame-container--loading-nogradient::before {\n max-height: 340px;\n background: ${headerColor} !important;\n }\n\n .gleap-frame-container--loading-nofade::after {\n display: none !important;\n }\n\n .gleap-frame-container--survey {\n bottom: ${buttonY}px !important;\n }\n\n .gleap-frame-container--extended {\n max-width: 690px !important;\n }\n\n .gleap-frame-container--survey-full {\n position: fixed;\n top: 0 !important;\n left: 0 !important;\n bottom: 0 !important;\n right: 0 !important;\n width: 100vw !important;\n max-width: 100vw !important;\n height: 100vh;\n height: 100dvh !important;\n background-color: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(6px);\n display: flex !important;\n justify-content: center !important;\n align-items: center !important;\n max-height: 100vh;\n max-height: 100dvh !important;\n border-radius: 0 !important;\n animation-name: none !important;\n }\n\n .gleap-frame-container--survey-full .gleap-frame-container-inner {\n max-width: 640px !important;\n width: calc(100% - 24px);\n border-radius: ${containerRadius}px;\n overflow: hidden;\n }\n\n .gleap-frame-container--classic {\n right: ${buttonX}px;\n bottom: ${buttonY}px;\n }\n\n [dir=rtl].gleap-frame-container--classic {\n right: auto;\n left: ${buttonX}px;\n bottom: ${buttonY}px;\n }\n\n .gleap-frame-container--no-button {\n bottom: ${buttonY}px;\n }\n\n [dir=rtl].gleap-frame-container--classic-left {\n bottom: ${buttonY}px;\n }\n\n .gleap-frame-container--classic-left {\n right: auto;\n left: ${buttonX}px;\n bottom: ${buttonY}px;\n }\n\n [dir=rtl].gleap-frame-container--classic-left {\n left: auto;\n right: ${buttonX}px;\n bottom: ${buttonY}px;\n }\n\n .gleap-frame-container--modern-left {\n right: auto;\n left: ${buttonX}px;\n bottom: ${61 + buttonY}px;\n }\n\n [dir=rtl].gleap-frame-container--modern-left {\n left: auto;\n right: ${buttonX}px;\n bottom: ${61 + buttonY}px;\n }\n\n .gleap-frame-container--animate {\n pointer-events: auto !important;\n }\n\n @keyframes gleapFadeInUp {\n from {\n opacity: 0;\n transform: translate3d(0, 100%, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n\n @keyframes gleapFadeInUpMobile {\n from {\n opacity: 0;\n transform: translate3d(0, 10%, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n\n .gleap-notification-container {\n position: fixed;\n bottom: ${bottomInfoOffset}px;\n right: ${buttonX}px;\n z-index: ${zIndexBase + 30};\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n width: 100%;\n max-width: min(340px, 80vw);\n }\n\n .gleap-notification-container--left {\n left: ${4 + buttonX}px;\n right: initial !important;\n }\n\n [dir=rtl].gleap-notification-container {\n left: ${4 + buttonX}px;\n right: initial !important;\n }\n\n [dir=rtl].gleap-notification-container--left {\n left: initial !important;\n right: ${buttonX}px !important;\n align-items: flex-start !important;\n }\n\n .gleap-notification-container--no-button {\n bottom: ${buttonY}px;\n }\n\n .gleap-notification-item {\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n\n .gleap-notification-close {\n border-radius: 100%;\n width: 28px;\n height: 28px;\n background-color: ${subTextColor};\n display: flex;\n justify-content: center;\n align-items: center;\n margin-bottom: 8px;\n cursor: pointer;\n visibility: hidden;\n pointer-events: none;\n }\n\n .gleap-notification-container:hover .gleap-notification-close {\n visibility: visible;\n pointer-events: auto;\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-notification-close {\n visibility: visible;\n pointer-events: auto;\n animation-duration: 0.7s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n }\n\n .gleap-notification-close svg {\n width: 45%;\n height: 45%;\n object-fit: contain;\n fill: ${backgroundColor};\n }\n\n .gleap-notification-item-checklist-container {\n display: flex;\n animation: fadeIn;\n animation-duration: .45s;\n background-color: ${backgroundColor};\n border-radius: ${subTextColor};\n box-sizing: border-box;\n cursor: pointer;\n flex-direction: column;\n overflow: hidden;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ${chatRadius}px;\n margin-bottom: 12px;\n }\n\n .gleap-notification-item-checklist-content {\n align-items: flex-start;\n display: flex;\n flex-direction: column;\n padding: 15px;\n width: 100%;\n width: min(310px, 70vw);\n max-width: min(310px, 70vw);\n }\n\n .gleap-notification-item-checklist-content-title {\n color: ${contrastBackgroundColor};\n font-size: 15px;\n font-weight: 500;\n line-height: 21px;\n margin-bottom: 10px;\n max-width: 100%;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .gleap-notification-item-checklist-content-progress {\n width: 100%;\n height: 8px;\n border-radius: 8px;\n background-color: ${backgroundColorHover};\n }\n\n .gleap-notification-item-checklist-content-progress-inner {\n height: 100%;\n border-radius: 8px;\n background-color: ${primaryColor};\n }\n\n .gleap-notification-item-checklist-content-next {\n color: ${subTextColor};\n font-size: 15px;\n font-weight: normal;\n line-height: 21px;\n margin-top: 10px;\n max-width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: flex;\n align-items: center;\n }\n\n .gleap-notification-item-checklist-content-next svg {\n height: 18px;\n margin-right: 5px;\n width: auto;\n }\n\n .gleap-notification-item-checklist-content-next b {\n font-size: 15px;\n font-weight: normal;\n color: ${contrastBackgroundColor};\n }\n\n .gleap-notification-item-news {\n width: 100%;\n }\n\n .gleap-news-pagination {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 10px;\n width: 100%;\n }\n\n .gleap-news-page-indicator {\n font-size: 12px;\n color: ${subTextColor};\n }\n\n .gleap-news-next-button {\n background-color: ${primaryColor};\n color: ${contrastColor};\n border-radius: ${formItemSmallBorderRadius}px;\n box-sizing: border-box;\n padding: 5px 10px;\n font-size: 14px;\n font-weight: bold;\n line-height: 21px;\n border: none;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: none !important;\n outline: none !important;^\n }\n\n .gleap-notification-item-news-content {\n align-items: flex-start;\n display: flex;\n flex-direction: column;\n padding: 15px;\n }\n\n .gleap-notification-item-news-preview {\n color: ${subTextColor};\n font-size: 14px;\n line-height: 21px;\n font-weight: 400;\n overflow-wrap: break-word;\n word-break: break-word;\n display: block;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .gleap-notification-item-news-sender {\n display: flex;\n align-items: center;\n color: ${subTextColor};\n font-size: 15px;\n line-height: 21px;\n font-weight: 400;\n }\n \n .gleap-notification-item-news-content-title {\n color: ${contrastBackgroundColor};\n font-size: 15px;\n font-weight: 500;\n line-height: 21px;\n margin-bottom: 6px;\n max-width: 100%;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n cursor: pointer;\n }\n\n .gleap-notification-item-news-sender img {\n border-radius: 100%;\n height: 20px;\n margin-right: 8px;\n object-fit: cover;\n width: 20px;\n }\n\n [dir=rtl] .gleap-notification-item-news-sender img {\n margin-left: 8px;\n margin-right: 0px !important;\n }\n\n .gleap-notification-item-news-container {\n display: flex;\n animation: fadeIn;\n animation-duration: .45s;\n background-color: ${backgroundColor};\n border-radius: ${subTextColor};\n box-sizing: border-box;\n flex-direction: column;\n overflow: hidden;\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ${chatRadius}px;\n margin-bottom: 12px;\n }\n\n .gleap-notification-item-news-image {\n background-color: ${subTextColor};\n height: 170px;\n max-height: 170px;\n object-fit: cover;\n width: 100%;\n cursor: pointer;\n }\n \n .gleap-notification-item-news-content-title:hover {\n color: ${primaryColor};\n }\n\n .gleap-notification-item {\n display: flex;\n align-items: flex-end;\n cursor: pointer;\n }\n\n .gleap-notification-item img {\n width: 32px;\n height: 32px;\n min-width: 32px;\n border-radius: 100%;\n object-fit: cover;\n margin-right: 8px;\n margin-bottom: 12px;\n cursor: pointer;\n }\n\n [dir=rtl] .gleap-notification-item img {\n margin-left: 8px;\n margin-right: 0px !important;\n }\n\n .gleap-notification-item-container {\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.2);\n border-radius: ${chatRadius}px;\n border-bottom-left-radius: 0px;\n padding: 20px;\n background-color: ${backgroundColor};\n margin-bottom: 12px;\n cursor: pointer;\n font-size: 15px;\n line-height: 21px;\n color: ${contrastBackgroundColor};\n position: relative;\n }\n\n .gleap-notification-item-container::after {\n content: \" \";\n position: absolute;\n bottom: 0px;\n width: 0px;\n height: 0px;\n left: -6px;\n border-style: solid;\n border-width: 0px 0px 10px 6px;\n border-color: transparent transparent ${backgroundColor};\n }\n\n .gleap-notification-item-sender {\n color: ${subTextColor};\n line-height: 20px;\n }\n\n .gleap-notification-item-content {\n line-height: 20px;\n color: ${contrastBackgroundColor};\n margin-top: 4px;\n min-width: min(200px, 50vw);\n word-wrap: break-word;\n word-break: break-word;\n }\n\n .gleap-frame-container-inner {\n position: relative;\n width: 100%;\n height: calc(100vh - ${84 + buttonY}px);\n max-height: ${widgetMaxHeight}px;\n }\n\n .gleap-frame-container--survey .gleap-frame-container-inner {\n height: calc(100vh - 40px);\n }\n \n .gleap-frame-container-inner:before {\n content: \" \";\n position: absolute;\n width: 100%;\n height: calc(100% - ${containerRadius}px);\n top: ${containerRadius}px;\n background-color: ${backgroundColor};\n z-index: -1;\n }\n \n .gleap-frame-container iframe {\n height: 100% !important;\n width: 100% !important;\n max-width: 100% !important;\n display: block !important;\n pointer-events: auto !important;\n }\n \n .gleap-frame-container--hidden {\n display: none !important;\n pointer-events: none;\n animation: none !important;\n }\n \n .bb-feedback-button {\n margin: 0px;\n position: fixed;\n bottom: ${buttonY}px;\n right: ${buttonX}px;\n border-radius: 30px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n background-color: transparent;\n color: #000000;\n z-index: ${zIndexBase + 30};\n box-sizing: border-box;\n display: flex;\n align-items: center;\n padding: 0px;\n }\n\n [dir=rtl].bb-feedback-button {\n bottom: ${buttonY}px;\n right: auto;\n left: ${buttonX}px;\n }\n \n .bb-feedback-button--bottomleft {\n bottom: ${buttonY}px;\n right: auto;\n left: ${buttonX}px;\n }\n\n [dir=rtl].bb-feedback-button--bottomleft {\n bottom: ${buttonY}px;\n right: ${buttonX}px;\n left: auto;\n }\n \n .bb-feedback-button--disabled {\n display: none !important;\n }\n\n .bb-feedback-button--hidden {\n display: none !important;\n }\n \n .bb-feedback-button-text {\n padding: 8px 12px;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n background-color: #fff;\n border-radius: 8px;\n box-shadow: 0px 0px 14px 0px rgba(0, 0, 0, 0.15);\n position: relative;\n z-index: 99;\n }\n \n .bb-feedback-button-text:before {\n content: \"\";\n position: absolute;\n box-shadow: rgba(0, 0, 0, 0.04) 6px 6px 5px;\n transform: rotate(315deg);\n bottom: 16px;\n right: -4px;\n border-width: 10px;\n border-style: solid;\n border-color: transparent #fff #fff transparent;\n }\n \n .bb-feedback-button--bottomleft .bb-feedback-button-text:before {\n display: none;\n }\n \n .bb-feedback-button-text:after {\n content: \"\";\n position: absolute;\n bottom: 12px;\n right: 0px;\n background-color: #fff;\n width: 5px;\n height: 30px;\n }\n \n .bb-feedback-button-text-title {\n font-family: sans-serif;\n font-size: 14px;\n color: #666;\n line-height: 18px;\n max-width: 220px;\n }\n \n .bb-feedback-button-text-title b {\n color: #000000;\n font-weight: 600;\n }\n\n .bb-notification-bubble {\n position: absolute;\n top: -5px;\n right: -5px;\n min-width: 12px;\n padding: 0px 4px;\n height: 20px;\n min-width: 20px;\n border-radius: 20px;\n background-color: red;\n color: #fff;\n font-size: 11px;\n font-family: sans-serif;\n text-align: center;\n line-height: 20px;\n }\n\n .bb-notification-bubble--hidden {\n display: none;\n }\n \n .bb-feedback-button-icon {\n width: 48px;\n height: 48px;\n border-radius: 48px;\n background-color: #485bff;\n transition: box-shadow, transform 0.2s ease-in-out;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n position: relative;\n }\n \n .bb-feedback-button-classic {\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n top: 50%;\n right: 0px;\n position: fixed;\n transform: rotate(-90deg) translate(50%, -50%);\n transform-origin: 100% 50%;\n padding: 9px 20px;\n text-align: center;\n background-color: #485bff;\n border-top-left-radius: 8px;\n border-top-right-radius: 8px;\n font-family: sans-serif;\n font-size: 16px;\n color: #fff;\n box-shadow: 0px 0px 14px 0px rgba(0, 0, 0, 0.25);\n }\n\n [dir=rtl].bb-feedback-button .bb-feedback-button-classic {\n top: 50%;\n left: 0px;\n right: auto;\n transform: rotate(90deg) translate(-50%, -100%);\n transform-origin: 0% 0%;\n }\n \n .bb-feedback-button-classic--left {\n top: 50%;\n left: 0px;\n right: auto;\n transform: rotate(90deg) translate(-50%, -100%);\n transform-origin: 0% 0%;\n }\n\n [dir=rtl].bb-feedback-button .bb-feedback-button-classic--left {\n top: 50%;\n right: 0px;\n left: auto;\n transform: rotate(-90deg) translate(50%, -50%);\n transform-origin: 100% 50%;\n }\n \n .bb-feedback-button-classic--bottom {\n top: auto;\n bottom: 0px;\n transform: none;\n right: ${buttonX}px;\n left: auto;\n }\n \n [dir=rtl].bb-feedback-button .bb-feedback-button-classic--bottom {\n top: auto;\n bottom: 0px;\n transform: none;\n left: ${buttonX}px;\n right: auto;\n }\n\n .bb-feedback-button--classic-button-style {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: bbFadeInOpacity;\n }\n \n .bb-feedback-button--open.bb-feedback-button--classic-button-style {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: bbFadeOutRight;\n }\n \n .bb-feedback-button .bb-logo-logo {\n position: absolute;\n width: 30px;\n height: 30px;\n top: 9px;\n left: 9px;\n object-fit: contain;\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-name: bbZoomIn;\n }\n \n .bb-feedback-button .bb-logo-arrowdown {\n position: absolute;\n width: 14px;\n height: 14px;\n top: 17px;\n left: 17px;\n object-fit: contain;\n animation-duration: 0.3s;\n animation-fill-mode: both;\n }\n \n .bb-feedback-button .bb-logo-arrowdown {\n animation-name: bbZoomOut;\n }\n \n .bb-feedback-button--open .bb-logo-arrowdown {\n animation-name: bbZoomIn;\n }\n \n .bb-feedback-button--open .bb-logo-logo {\n animation-name: bbZoomOut;\n }\n \n .bb-feedback-button-icon:hover {\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.25), 0px 0px 20px rgba(0, 0, 0, 0.2);\n transform: scale(1.1);\n }\n \n .bb-feedback-button--open .bb-feedback-button-text {\n animation-name: bbFadeOutDown;\n }\n \n .bb-feedback-button--open .bb-feedback-button-icon {\n display: flex;\n }\n \n .bb-capture-svg {\n position: fixed;\n z-index: ${zIndexBase + 14};\n top: 0px;\n left: 0px;\n right: 0px;\n width: 100%;\n height: 100%;\n padding: 0px;\n margin: 0px;\n cursor: crosshair;\n }\n\n .bb-capture-svg--preview {\n cursor: auto !important;\n }\n \n .bb-rec-on-circle {\n animation-name: bbRecIconFade;\n animation-duration: 2s;\n animation-iteration-count: infinite;\n animation-direction: alternate;\n }\n \n .bb-rec-on-cont {\n animation-name: bbRecIconContFade;\n animation-duration: 2s;\n animation-iteration-count: infinite;\n animation-direction: alternate;\n }\n \n .bb-capture-editor-drag-info {\n position: fixed;\n top: -200px;\n left: 0px;\n z-index: ${zIndexBase + 16};\n transition: opacity 0.3s ease-in-out;\n }\n \n .bb-capture-editor-drag-info svg {\n width: 24px;\n height: 24px;\n }\n \n .bb-capture-editor-borderlayer {\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n border: 4px solid ${primaryColor};\n cursor: crosshair;\n z-index: ${zIndexBase + 10};\n box-sizing: border-box;\n pointer-events: none;\n }\n \n .bb-capture-editor-notrecording .bb-capture-editor-borderlayer {\n background-color: rgba(0, 0, 0, 0.8);\n }\n\n .bb-capture-editor-recording .bb-capture-editor-borderlayer {\n border: 4px solid #eb144c !important;\n }\n \n .bb-capture-editor-recording .bb-capture-dismiss {\n display: none;\n }\n \n .bb-capture-editor-item-inactive {\n opacity: 0.3;\n cursor: not-allowed !important;\n }\n \n .bb-capture-editor-notrecording .bb-capture-toolbar-drawingitem {\n opacity: 0.3;\n cursor: not-allowed !important;\n }\n \n .bb-capture-editor-notrecording .bb-capture-editor-drag-info {\n display: none;\n }\n \n .bb-capture-editor-notrecording .bb-capture-svg {\n pointer-events: none !important;\n }\n \n .bb-capture-toolbar {\n position: fixed;\n top: 20px;\n left: 50%;\n transform: translateX(-50%);\n z-index: ${zIndexBase + 18};\n background-color: #fff;\n padding: 5px;\n display: flex;\n align-items: center;\n border-radius: 8px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n transition: opacity 0.3s ease-in-out;\n }\n \n .bb-capture-dismiss {\n position: fixed;\n top: 0px;\n right: 0px;\n z-index: ${zIndexBase + 18};\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n width: 36px;\n height: 36px;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: ${primaryColor};\n border-bottom-left-radius: ${formItemSmallBorderRadius}px;\n }\n\n [dir=rtl] .bb-capture-dismiss {\n top: 0px;\n left: 0px;\n right: auto;\n border-bottom-left-radius: 0px !important;\n border-bottom-right-radius: ${formItemSmallBorderRadius}px;\n }\n \n .bb-capture-dismiss svg path {\n fill: ${contrastColor};\n }\n \n .bb-capture-dismiss svg {\n width: 20px;\n height: 20px;\n object-fit: contain;\n }\n \n .bb-capture-button-next {\n font-family: sans-serif;\n box-sizing: border-box;\n font-weight: 600;\n text-align: center;\n width: auto;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n margin: 0px;\n line-height: 36px;\n padding: 0px 12px;\n font-size: 15px;\n margin-left: 12px;\n }\n\n [dir=rtl].bb-capture-editor .bb-capture-button-next {\n margin-left: auto;\n margin-right: 12px;\n }\n \n .bb-capture-toolbar-item-spacer {\n width: 1px;\n height: 38px;\n min-width: 1px;\n margin: 0px 5px;\n }\n \n .bb-capture-toolbar-item {\n width: 42px;\n height: 38px;\n min-width: 42px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n position: relative;\n margin-right: 5px;\n }\n\n .drag-handle-item {\n cursor: grab !important;\n width: 34px;\n min-width: 34px;\n }\n\n .drag-handle-item svg {\n width: 18px !important;\n height: 18px !important;\n }\n \n .bb-capture-toolbar-item svg {\n width: 23px;\n height: 23px;\n object-fit: contain;\n }\n \n .bb-capture-toolbar-item-selectedcolor {\n border-radius: 100%;\n width: 20px;\n height: 20px;\n background-color: #db4035;\n }\n \n .bb-capture-toolbar-item[data-type=\"undo\"] svg {\n width: 18px;\n height: 18px;\n }\n \n .bb-capture-toolbar-item[data-active=\"true\"] {\n position: relative;\n }\n \n .bb-capture-preview {\n display: none;\n background-color: rgba(0, 0, 0, 0.6);\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n justify-content: center;\n align-items: center;\n z-index: ${zIndexBase + 20};\n }\n \n .bb-capture-preview-inner {\n background-color: #fff;\n padding: 0px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n border-radius: 8px;\n flex-direction: column;\n max-width: 640px;\n width: 100%;\n margin: 20px;\n }\n \n .bb-capture-preview-inner video {\n border-radius: 8px 8px 0px 0px;\n display: block;\n border: 0px;\n outline: none;\n width: 100%;\n max-height: 60vh;\n }\n \n .bb-capture-preview-buttons {\n display: flex;\n justify-content: space-between;\n padding: 14px;\n }\n \n .bb-capture-preview-retrybutton {\n font-family: sans-serif;\n border-radius: 21px;\n box-sizing: border-box;\n padding: 12px 26px;\n font-size: 16px;\n line-height: 19px;\n font-weight: 600;\n text-align: center;\n margin-top: 0px;\n margin-bottom: 0px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-preview-sendbutton {\n font-family: sans-serif;\n border-radius: 21px;\n box-sizing: border-box;\n padding: 12px 26px;\n font-size: 16px;\n line-height: 19px;\n font-weight: 600;\n text-align: center;\n margin-top: 0px;\n margin-bottom: 0px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-preview-retrybutton:hover,\n .bb-capture-preview-sendbutton:hover {\n opacity: 0.9;\n }\n \n .bb-capture-toolbar-item-recording {\n margin-right: 0px;\n }\n \n .bb-capture-toolbar-item-recording svg {\n width: 33px;\n height: 33px;\n }\n \n .bb-capture-toolbar-item-colorpicker {\n position: fixed;\n top: 70px;\n left: 50%;\n transform: translateX(-50%);\n z-index: ${zIndexBase + 18};\n background-color: #fff;\n display: none;\n padding: 10px;\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 0px 20px rgba(0, 0, 0, 0.1);\n border-radius: 8px;\n }\n \n .bb-capture-toolbar-item-color {\n width: 20px;\n height: 20px;\n border-radius: 100%;\n margin-right: 12px;\n box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.15);\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n \n .bb-capture-toolbar-item-color:hover {\n box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.25);\n }\n \n .bb-capture-toolbar-item-color:last-of-type {\n margin-right: 0px;\n }\n \n [dir=rtl].bb-capture-editor .bb-capture-toolbar-item-color {\n margin-right: auto;\n margin-left: 12px;\n }\n \n [dir=rtl].bb-capture-editor .bb-capture-toolbar-item-color:last-of-type {\n margin-right: auto;\n margin-left: 0px;\n }\n \n .bb-capture-toolbar-item-recording[data-active=\"true\"] svg:first-of-type {\n display: none;\n }\n \n .bb-capture-toolbar-item-recording[data-active=\"true\"] svg:nth-of-type(2) {\n display: block;\n }\n \n .bb-capture-toolbar-item-recording[data-active=\"false\"] svg:first-of-type {\n display: block;\n }\n \n .bb-capture-toolbar-item-recording[data-active=\"false\"] svg:nth-of-type(2) {\n display: none;\n }\n \n .bb-capture-toolbar-item--active {\n background-color: #eee;\n }\n \n .bb-capture-toolbar-item:hover svg {\n opacity: 1;\n }\n \n .bb-capture-toolbar-item--active {\n background-color: #f8f8f8;\n }\n \n .bb-capture-toolbar-item--active svg {\n opacity: 1;\n }\n \n .bb-capture-toolbar-item--inactivecross::before {\n content: \"\";\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n height: 3px;\n width: 26px;\n margin: auto;\n border-radius: 4px;\n background-color: #e80000;\n transform: rotate(45deg);\n }\n \n .bb-capture-toolbar-item--inactivecross svg {\n fill: #eee;\n }\n \n .bb-capture-toolbar-item-timer {\n text-align: left;\n line-height: 32px;\n font-size: 14px;\n font-family: sans-serif;\n margin: 5px;\n min-width: 40px;\n display: none;\n }\n \n .bb-capture-toolbar-item .bb-tooltip {\n background-color: #555;\n color: #fff;\n visibility: hidden;\n font-size: 14px;\n font-family: sans-serif;\n text-align: center;\n padding: 5px 10px;\n position: absolute;\n z-index: 1;\n top: 45px;\n left: 0px;\n transform: translateX(calc(-50% + 21px));\n opacity: 0;\n transition: opacity 0.3s;\n white-space: nowrap;\n }\n \n .bb-capture-toolbar-item .bb-tooltip::after {\n content: \"\";\n position: absolute;\n bottom: 100%;\n left: 50%;\n margin-left: -5px;\n border-width: 5px;\n border-style: solid;\n transform: rotate(180deg);\n border-color: #555 transparent transparent transparent;\n }\n \n .bb-capture-toolbar-item:hover .bb-tooltip {\n visibility: visible;\n opacity: 1;\n }\n \n .bb-capture-options {\n display: none;\n }\n \n .bb-capture-options--active {\n display: flex;\n }\n\n @keyframes bbFadeOutRight {\n from {\n opacity: 1;\n }\n \n to {\n opacity: 0;\n }\n }\n \n @keyframes bbFadeOutDown {\n from {\n opacity: 1;\n }\n \n to {\n opacity: 0;\n transform: translate3d(0, 100%, 0);\n }\n }\n \n @keyframes bbFadeInOpacity {\n from {\n opacity: 0;\n }\n \n to {\n opacity: 1;\n }\n }\n \n @keyframes bbZoomOut {\n from {\n opacity: 1;\n }\n \n 50% {\n opacity: 0;\n transform: scale3d(0.3, 0.3, 0.3);\n }\n \n to {\n opacity: 0;\n }\n }\n \n @keyframes bbZoomIn {\n from {\n opacity: 0;\n transform: scale3d(0.3, 0.3, 0.3);\n }\n \n 50% {\n opacity: 1;\n }\n }\n \n @keyframes bbRecIconContFade {\n 0% {\n fill: #b10802;\n }\n 50% {\n fill: #ff0000;\n }\n 100% {\n fill: #b10802;\n }\n } \n .bb-capture-preview-retrybutton {\n color: ${contrastBackgroundColor};\n border-radius: ${buttonBorderRadius}px;\n background-color: ${backgroundColorHover};\n }\n .bb-capture-preview-retrybutton:hover {\n background-color: ${hoverHoverColor};\n }\n @keyframes bb-suc-fill {\n 100% {\n box-shadow: inset 0px 0px 0px 30px ${primaryColor};\n }\n }\n .bb-capture-toolbar-item-spacer {\n background-color: ${backgroundColorHover};\n }\n .bb-tooltip {\n border-radius: ${formItemBorderRadius}px;\n }\n @keyframes bbRecIconFade {\n 0% {\n fill: transparent;\n }\n 50% {\n fill: ${hoverHoverColor};\n }\n 100% {\n fill: transparent;\n }\n }\n .bb-capture-preview-sendbutton {\n color: ${contrastColor};\n background-color: ${primaryColor};\n border-radius: ${buttonBorderRadius}px;\n }\n .bb-capture-button-next {\n color: ${contrastColor};\n background-color: ${primaryColor};\n border-radius: ${formItemSmallBorderRadius}px;\n }\n .bb-capture-preview-inner {\n background-color: ${backgroundColor};\n border-radius: ${formItemBorderRadius}px;\n }\n .bb-capture-toolbar-item-timer {\n color: ${subTextColor};\n }\n .bb-svg-path {\n fill: ${contrastBackgroundColor};\n }\n .bb-capture-toolbar-item {\n border-radius: ${formItemBorderRadius}px;\n }\n .bb-capture-toolbar {\n background-color: ${backgroundColor};\n border-radius: ${formItemBorderRadius}px;\n }\n .bb-capture-toolbar-item-colorpicker {\n background-color: ${backgroundColor};\n }\n .bb-capture-toolbar-item--active {\n background-color: ${backgroundColorHover};\n }\n .bb-feedback-button-classic {\n border-top-left-radius: ${formItemBorderRadius}px;\n border-top-right-radius: ${formItemBorderRadius}px;\n }\n .bb-logo-logo--default path {\n fill: ${contrastButtonColor};\n }\n .bb-logo-arrowdown {\n fill: ${contrastButtonColor};\n }\n .bb-feedback-button-icon {\n background-color: ${buttonColor};\n }\n .bb-feedback-button-classic {\n background-color: ${buttonColor};\n color: ${contrastButtonColor};\n }\n\n @media only screen and (max-width: 450px) {\n [dir=rtl].gleap-frame-container,\n .gleap-frame-container {\n left: 0px;\n right: 0px;\n width: 100vw;\n max-width: 100vw;\n min-height: 100vh;\n max-height: 100vh;\n min-height: 100dvh !important;\n max-height: 100dvh !important;\n top: 0px;\n bottom: 0px;\n border-radius: 0px;\n animation-name: gleapFadeInUpMobile;\n }\n\n .gleap-frame-container-inner {\n width: 100vw;\n height: 100%;\n }\n\n .gleap-frame-container:not(.gleap-frame-container--survey):not(.gleap-frame-container--survey-full) .gleap-frame-container-inner {\n max-height: calc(var(--glvh, 1vh) * 100) !important;\n }\n\n .gleap-frame-container--survey {\n height: auto !important;\n top: initial !important;\n bottom: 0px !important;\n min-height: initial !important;\n }\n\n .gleap-frame-container--survey .gleap-frame-container-inner {\n height: 100vh !important;\n }\n\n .bb-tooltip {\n display: none !important;\n }\n \n .bb-capture-toolbar-item-colorpicker {\n top: 75px;\n }\n \n .bb-capture-button-next {\n margin-left: auto;\n }\n \n .bb-capture-dismiss {\n display: none;\n }\n \n .bb-capture-toolbar {\n top: 15px;\n right: 15px;\n left: 15px;\n width: auto;\n transform: none;\n }\n\n .bb-capture-editor-drag-info {\n display: none;\n }\n \n .bb-capture-editor-borderlayer {\n border-width: 4px;\n }\n }\n \n @media print {\n .bb-feedback-button {\n display: none !important;\n }\n \n .gleap-frame-container {\n display: none !important;\n }\n }\n\n .gleap-tour-sender {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n margin-bottom: 10px;\n }\n\n .gleap-tour-sender-image {\n width: 32px;\n height: 32px;\n border-radius: 32px;\n margin-right: 10px;\n background-size: cover;\n background-repeat: no-repeat;\n }\n\n .gleap-tour-popover.gleap-tour-popover-post {\n min-width: 550px;\n max-width: 550px;\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-tour-popover.gleap-tour-popover-post {\n min-width: calc(100vw - 40px);\n max-width: calc(100vw - 40px);\n }\n }\n\n .gleap-tour-message,\n .gleap-tour-message p,\n .gleap-tour-message ul {\n color: ${contrastBackgroundColor};\n }\n\n .gleap-tour-message h2 {\n font-weight: 600;\n font-size: 22px;\n }\n\n .gleap-tour-message h3 {\n font-weight: 600;\n font-size: 18px;\n }\n\n .gleap-tour-message p {\n line-height: 1.3;\n margin-bottom: 10px !important;\n margin-top: 10px !important;\n }\n\n .gleap-tour-message ul {\n line-height: 1.3;\n padding-left: 20px;\n margin-top: 10px !important;\n margin-bottom: 10px !important;\n }\n\n .gleap-tour-message {\n max-height: calc(80vh - 100px) !important;\n overflow-y: auto;\n min-width: 270px;\n }\n\n .gleap-tour-message::-webkit-scrollbar {\n width: 5px;\n }\n\n .gleap-tour-message::-webkit-scrollbar-track {\n border-radius: 0px;\n }\n \n .gleap-tour-message::-webkit-scrollbar-thumb {\n background: ${hoverHoverColor}; \n border-radius: 5px;\n }\n\n .gleap-tour-message::-webkit-scrollbar-thumb:hover {\n background: ${subTextColor};\n }\n\n @media only screen and (max-width: 450px) {\n .gleap-tour-message {\n min-width: auto !important;\n }\n }\n\n .gleap-tour-message iframe {\n width: 100%;\n height: 300px;\n margin-top: 10px;\n margin-bottom: 10px;\n border: none;\n outline: none;\n display: block;\n }\n\n .gleap-tour-sender-name {\n font-size: 15px;\n }\n\n .gleap-tour-video {\n width: 100%;\n max-width: 100%;\n }\n\n .gleap-tour-video-svg--fullscreen {\n width: 100% !important;\n height: 100% !important;\n top: 0px !important;\n left: 0px !important;\n right: 0px !important;\n bottom: 0px !important;\n }\n\n .gleap-tour-video--playing .gleap-tour-video-playpause {\n opacity: 0;\n }\n \n .gleap-tour-video--playing:hover .gleap-tour-video-playpause {\n opacity: 1;\n }\n\n .gleap-tour-popover-video-pointer {\n padding: 0px !important;\n border-radius: 8px;\n position: relative;\n background-color: transparent !important;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-footer {\n position: absolute;\n top: 0px;\n left: 20px;\n right: 20px;\n opacity: 0;\n transition: opacity 200ms ease-in-out;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-footer button {\n padding: 5px 12px;\n }\n\n .gleap-tour-popover-video-pointer.gleap-tour-popover-can-close .gleap-tour-popover-footer {\n right: 40px !important;\n }\n\n .gleap-tour-popover-video-pointer:hover .gleap-tour-popover-footer {\n opacity: 1;\n }\n\n .gleap-tour-popover-pointer.gleap-tour-popover-no-sender .gleap-tour-message {\n padding-right: 20px;\n }\n\n .gleap-tour-video video {\n width: 100%;\n max-width: 100%;\n height: auto;\n border: none;\n outline: none;\n display: block;\n border-radius: 8px;\n }\n\n .gleap-admin-collapse-ui {\n z-index: ${zIndexBase + 35};\n cursor: pointer;\n position: fixed;\n bottom: 75px;\n right: 20px;\n width: 32px;\n height: 32px;\n border-radius: 100%;\n background-color: #fff;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: rgba(0, 0, 0, 0.16) 0px 10px 36px 0px, rgba(0, 0, 0, 0.06) 0px 0px 0px 1px;\n }\n\n .gleap-admin-collapse-ui svg {\n width: 20px;\n height: 14px;\n fill: #000 !important;\n }\n\n .gleap-admin-collapse-ui-active {\n bottom: 20px !important;\n }\n\n .gleap-admin-collapse-ui-active svg {\n transform: rotate(180deg);\n }\n\n .gleap-admin-frame-container-active {\n display: none !important;\n }\n\n .gleap-admin-frame-container {\n position: fixed;\n bottom: 0px;\n left: 0px;\n right: 0px;\n width: 100vw;\n z-index: ${zIndexBase + 40};\n }\n\n .gleap-admin-frame {\n width: 100%;\n height: 100% !important;\n border: none;\n outline: none;\n display: block;\n }\n \n .gleap-tour-message .linktype-link {\n display: inline-block !important;\n background-color: transparent !important;\n color: ${buttonColor} !important;\n }\n\n .gleap-tooltip .linktype-button,\n .gleap-tour-message .linktype-button {\n display: inline-block !important;\n border-radius: 5px;\n box-sizing: border-box;\n padding: 10px 20px !important;\n text-decoration: none !important;\n background-color: ${buttonColor} !important;\n color: ${contrastButtonColor} !important;\n }\n\n .gleap-tour-message img {\n width: 100%;\n max-width: 100%;\n min-height: 260px;\n height: auto;\n margin-top: 10px;\n margin-bottom: 10px;\n object-fit: cover;\n }\n\n .gleap-tour-active .gleap-tour-overlay {\n pointer-events: none;\n }\n \n .gleap-tour-active * {\n pointer-events: none;\n }\n \n .gleap-tour-active .gleap-tour-active-element,\n .gleap-tour-active .gleap-tour-active-element *,\n .gleap-tour-popover,\n .gleap-tour-popover * {\n pointer-events: auto;\n }\n \n @keyframes animate-fade-in {\n 0% {\n opacity: 0;\n }\n \n to {\n opacity: 1;\n }\n }\n \n .gleap-tour-fade .gleap-tour-overlay {\n animation: animate-fade-in 200ms ease-in-out;\n }\n \n .gleap-tour-fade .gleap-tour-popover {\n animation: animate-fade-in 200ms;\n }\n\n .gleap-tour-video-playpause {\n position: absolute;\n bottom: 8px;\n left: 8px;\n width: 32px;\n height: 32px;\n padding: 4px;\n background-color: rgba(0,0,0,0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border-radius: 8px;\n transition: opacity 200ms ease-in-out;\n }\n\n .gleap-tour-popover-video-pointer .gleap-tour-popover-arrow {\n display: none !important;\n }\n\n .gleap-tour-video-playpause svg {\n width: 34px;\n height: auto;\n fill: #fff;\n }\n \n /* Popover styles */\n .gleap-tour-popover {\n all: unset;\n box-sizing: border-box;\n color: #2d2d2d;\n margin: 0;\n padding: 15px;\n border-radius: ${formItemBorderRadius}px;\n min-width: 250px;\n max-width: 300px;\n box-shadow: 0 1px 10px #0006;\n z-index: 1000000000;\n position: fixed;\n top: 0;\n right: 0;\n background-color: #fff;\n }\n \n .gleap-tour-popover * {\n font-family: \"Helvetica Neue\", Inter, ui-sans-serif, \"Apple Color Emoji\", Helvetica, Arial, sans-serif;\n }\n \n .gleap-tour-popover-title {\n font: 19px / normal sans-serif;\n font-weight: 700;\n display: block;\n position: relative;\n line-height: 1.5;\n zoom: 1;\n margin: 0;\n }\n \n .gleap-tour-popover-close-btn {\n all: unset;\n position: absolute;\n top: 5px;\n right: 5px;\n width: 32px;\n height: 32px;\n cursor: pointer;\n font-size: 30px;\n font-weight: 500;\n line-height: 32px;\n color: #d2d2d2;\n z-index: 1;\n text-align: center;\n transition: color;\n transition-duration: 200ms;\n }\n \n .gleap-tour-popover-close-btn:hover,\n .gleap-tour-popover-close-btn:focus {\n color: #2d2d2d;\n }\n \n .gleap-tour-popover-title[style*=\"block\"] + .gleap-tour-popover-description {\n margin-top: 5px;\n }\n \n .gleap-tour-popover-description {\n margin-bottom: 0;\n font: 15px / normal sans-serif;\n line-height: 1.5;\n font-weight: 400;\n zoom: 1;\n }\n \n .gleap-tour-popover-footer {\n margin-top: 15px;\n text-align: right;\n zoom: 1;\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n \n .gleap-tour-popover-progress-text {\n font-size: 13px;\n font-weight: 400;\n color: #727272;\n zoom: 1;\n }\n \n .gleap-tour-popover-footer button {\n background-color: ${primaryColor};\n color: ${contrastColor};\n border-radius: ${formItemSmallBorderRadius}px;\n box-sizing: border-box;\n padding: 10px 20px;\n font-size: 14px;\n font-weight: bold;\n line-height: 21px;\n border: none;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: none !important;\n outline: none !important;\n }\n\n .gleap-tour-popover-prev-btn {\n color: ${contrastBackgroundColor} !important;\n background-color: ${backgroundColorHover} !important;\n margin-right: 3px;\n }\n\n .gleap-tour-popover-prev-btn:hover {\n background-color: ${primaryColor}22 !important;\n color: ${primaryColor} !important;\n }\n \n .gleap-tour-popover-footer .gleap-tour-popover-btn-disabled {\n opacity: 0.5;\n pointer-events: none;\n }\n \n /* Disable the scrolling of parent element if it has an active element*/\n :not(body):has(> .gleap-tour-active-element) {\n overflow: hidden !important;\n }\n \n .gleap-tour-no-interaction, .gleap-tour-no-interaction * {\n pointer-events: none !important;\n }\n \n .gleap-tour-popover-navigation-btns {\n display: flex;\n flex-grow: 1;\n justify-content: flex-end;\n }\n \n .gleap-tour-popover-navigation-btns button + button {\n margin-left: 4px;\n }\n \n .gleap-tour-popover-arrow {\n content: \"\";\n position: absolute;\n border: 5px solid #fff;\n }\n \n .gleap-tour-popover-arrow-side-over {\n display: none;\n }\n \n /** Popover Arrow Sides **/\n .gleap-tour-popover-arrow-side-left {\n left: 100%;\n border-right-color: transparent;\n border-bottom-color: transparent;\n border-top-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-right {\n right: 100%;\n border-left-color: transparent;\n border-bottom-color: transparent;\n border-top-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-top {\n top: 100%;\n border-right-color: transparent;\n border-bottom-color: transparent;\n border-left-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-bottom {\n bottom: 100%;\n border-left-color: transparent;\n border-top-color: transparent;\n border-right-color: transparent;\n }\n \n .gleap-tour-popover-arrow-side-center {\n display: none;\n }\n \n /* Left/Start + Right/Start */\n .gleap-tour-popover-arrow-side-left.gleap-tour-popover-arrow-align-start,\n .gleap-tour-popover-arrow-side-right.gleap-tour-popover-arrow-align-start {\n top: 15px;\n }\n \n /* Top/Start + Bottom/Start */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-start,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-start {\n left: 15px;\n }\n \n /* End/Left + End/Right */\n .gleap-tour-popover-arrow-align-end.gleap-tour-popover-arrow-side-left,\n .gleap-tour-popover-arrow-align-end.gleap-tour-popover-arrow-side-right {\n bottom: 15px;\n }\n \n /* Top/End + Bottom/End */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-end,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-end {\n right: 15px;\n }\n \n /* Left/Center + Right/Center */\n .gleap-tour-popover-arrow-side-left.gleap-tour-popover-arrow-align-center,\n .gleap-tour-popover-arrow-side-right.gleap-tour-popover-arrow-align-center {\n top: 50%;\n margin-top: -5px;\n }\n \n /* Top/Center + Bottom/Center */\n .gleap-tour-popover-arrow-side-top.gleap-tour-popover-arrow-align-center,\n .gleap-tour-popover-arrow-side-bottom.gleap-tour-popover-arrow-align-center {\n left: 50%;\n margin-left: -5px;\n }\n \n /* No arrow */\n .gleap-tour-popover-arrow-none {\n display: none;\n } \n\n /* Modal styles */\n .gleap-modal-wrapper {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: ${zIndexBase + 40};\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .gleap-modal-backdrop {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.5);\n z-index: ${zIndexBase + 41};\n }\n\n .gleap-modal {\n position: relative;\n width: 90%;\n max-width: 600px;\n max-height: 90vh;\n z-index: ${zIndexBase + 100};\n background-color: ${backgroundColor};\n border-radius: ${containerRadius}px;\n overflow: hidden;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-name: gleapFadeInUp;\n }\n\n .gleap-modal-frame {\n width: 100%;\n border: none;\n display: block;\n outline: none;\n }\n\n body.gleap-modal-open {\n overflow: hidden;\n }\n\n @keyframes gleapFadeInUp {\n from {\n opacity: 0;\n transform: translate3d(0, 20px, 0);\n }\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n }\n `;\n\n const oldNode = document.querySelector(\".gleap-styles\");\n if (oldNode) {\n oldNode.remove();\n }\n const node = document.createElement(\"style\");\n node.innerHTML = colorStyleSheet;\n node.className = \"gleap-styles\";\n document.body.appendChild(node);\n};\n\nexport const loadIcon = function (name, color) {\n if (name === \"button\") {\n return ``;\n }\n\n if (name === \"drag\") {\n return ``;\n }\n\n if (name === \"unmute\") {\n return ``;\n }\n\n if (name === \"mute\") {\n return ``;\n }\n\n if (name === \"replay\") {\n return `\n \n `;\n }\n\n if (name === \"dismiss\") {\n return ``;\n }\n\n if (name === \"blur\") {\n return `\n \n`;\n }\n\n if (name === \"pen\") {\n return `\n \n \n \n \n \n \n \n \n \n \n \n \n`;\n }\n\n if (name === \"rect\") {\n return `\n \n \n \n \n \n \n \n \n \n \n`;\n }\n\n if (name === \"pointer\") {\n return `\n \n `;\n }\n\n if (name === \"clip\") {\n return `\n \n \n \n \n \n`;\n }\n\n if (name === \"mic\") {\n return `\n \n \n \n \n `;\n }\n\n if (name === \"camera\") {\n return `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n`;\n }\n\n if (name === \"recorderon\") {\n return `\n \n \n \n \n \n \n \n \n \n \n \n`;\n }\n\n if (name === \"recorderoff\") {\n return `\n \n \n \n \n \n \n \n \n `;\n }\n\n if (name === \"arrowdown\") {\n return `\n \n `;\n }\n\n if (name === \"arrowleft\") {\n return `\n \n `;\n }\n\n if (name === \"close\") {\n return `\n \n `;\n }\n\n if (name === \"undo\") {\n return `\n \n \n \n \n \n \n \n \n \n `;\n }\n\n if (name === \"circle-dot\") {\n return ``;\n }\n\n if (name === \"circle-question\") {\n return ``;\n }\n\n if (name === \"circle-info\") {\n return ``;\n }\n\n if (name === \"circle-exclamation\") {\n return ``;\n }\n\n if (name === \"circle-up\") {\n return ``;\n }\n\n if (name === \"circle-right\") {\n return ``;\n }\n\n return \"\";\n};\n","class GleapNetworkIntercepter {\n startTimestamp = Date.now();\n requestId = 0;\n requests = {};\n externalRequests = [];\n maxRequests = 30;\n filters = [];\n defaultBlacklist = [\"gleap.io\"];\n blacklist = [];\n initialized = false;\n stopped = false;\n loadAllResources = false;\n\n // GleapNetworkIntercepter singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapNetworkIntercepter();\n }\n return this.instance;\n }\n\n setLoadAllResources(loadAllResources) {\n this.loadAllResources = loadAllResources;\n }\n\n isContentTypeSupported(contentType) {\n if (typeof contentType !== \"string\") {\n return false;\n }\n\n if (contentType === \"\") {\n return true;\n }\n\n contentType = contentType.toLocaleLowerCase();\n\n const supportedContentTypes = [\"text/\", \"xml\", \"json\"];\n for (var i = 0; i < supportedContentTypes.length; i++) {\n if (contentType.includes(supportedContentTypes[i])) {\n return true;\n }\n }\n\n return false;\n }\n\n getRequests() {\n var requests = JSON.parse(JSON.stringify(Object.values(this.requests)));\n\n // Merge external requests into internal requests.\n if (this.externalRequests && this.externalRequests.length > 0) {\n requests = requests.concat(this.externalRequests);\n }\n\n if (this.filters && this.filters.length > 0) {\n // Perform network log filtering.\n for (var i = 0; i < requests.length; i++) {\n var request = requests[i];\n\n // Headers\n if (request && request.request && request.request.headers) {\n for (var j = 0; j < this.filters.length; j++) {\n delete request.request.headers[this.filters[j]];\n }\n }\n\n // Payload\n if (request && request.request && request.request.payload) {\n var payloadObj = request.request.payload;\n try {\n payloadObj = JSON.parse(request.request.payload);\n } catch (e) { }\n\n if (payloadObj) {\n for (var j = 0; j < this.filters.length; j++) {\n delete payloadObj[this.filters[j]];\n }\n request.request.payload = JSON.stringify(payloadObj);\n }\n }\n\n // Response\n if (request && request.response && request.response.responseText) {\n try {\n var data = JSON.parse(request.response.responseText);\n for (var j = 0; j < this.filters.length; j++) {\n delete data[this.filters[j]];\n }\n request.response.responseText = JSON.stringify(data);\n } catch (e) { }\n }\n }\n }\n\n // Get static resources from performance.\n try {\n if (typeof window !== \"undefined\" && window.performance) {\n var resources = window.performance.getEntriesByType(\"resource\");\n for (var i = 0; i < resources.length; i++) {\n var resource = resources[i];\n if (resource && resource.name) {\n if ((this.loadAllResources || [\"xmlhttprequest\", \"fetch\"].indexOf(resource.initiatorType) > -1) && !requests.find(request => request.url === resource.name)) {\n requests.push({\n type: \"RESOURCE\",\n date: new Date(this.startTimestamp + resource.startTime),\n url: resource.name,\n duration: Math.round(resource.duration),\n initiatorType: resource.initiatorType\n });\n }\n }\n }\n }\n } catch (exp) { }\n\n var blacklist = this.blacklist.concat(this.defaultBlacklist);\n if (blacklist && blacklist.length > 0) {\n try {\n requests = requests.filter((request) => {\n for (var i = 0; i < blacklist.length; i++) {\n if (request && request.url && request.url.includes(blacklist[i])) {\n return false;\n }\n }\n return true;\n });\n } catch (exp) { }\n }\n\n return requests;\n }\n\n setMaxRequests(maxRequests) {\n if (maxRequests > 70) {\n maxRequests = 70;\n }\n this.maxRequests = maxRequests;\n }\n\n setStopped(stopped) {\n this.stopped = stopped;\n }\n\n setFilters(filters) {\n this.filters = this.filters.concat(filters ? filters : []);\n }\n\n setBlacklist(blacklist) {\n this.blacklist = this.blacklist.concat(blacklist ? blacklist : []);\n }\n\n cleanRequests() {\n var keys = Object.keys(this.requests);\n if (keys.length > this.maxRequests) {\n var keysToRemove = keys.slice(0, keys.length - this.maxRequests);\n for (var i = 0; i < keysToRemove.length; i++) {\n delete this.requests[keysToRemove[i]];\n }\n }\n }\n\n calcRequestTime(bbRequestId) {\n if (!bbRequestId || !this.requests || !this.requests[bbRequestId]) {\n return;\n }\n\n var startDate = this.requests[bbRequestId][\"date\"];\n if (startDate) {\n this.requests[bbRequestId][\"duration\"] =\n new Date().getTime() - startDate.getTime();\n }\n }\n\n getTextContentSize(text) {\n var size = 0;\n try {\n size = new TextEncoder().encode(text).length;\n } catch (exp) {\n try {\n size = encodeURI(s).split(/%..|./).length - 1;\n } catch (exp) {\n try {\n size = new Blob([text]).size;\n } catch (exp) {\n size = text.length;\n }\n }\n }\n\n const kiloBytes = size / 1024;\n const megaBytes = kiloBytes / 1024;\n return megaBytes;\n }\n\n cleanupContentSize(text) {\n const contentSize = this.getTextContentSize(text);\n if (contentSize > 0.15) {\n return \"\";\n }\n\n return text;\n }\n\n cleanupPayload(payload) {\n if (payload === undefined || payload === null) {\n return \"{}\";\n }\n\n try {\n if (typeof TextDecoder !== undefined && ArrayBuffer.isView(payload)) {\n let value = new TextDecoder().decode(payload);\n return value;\n }\n } catch (exp) { }\n\n return payload;\n }\n\n preparePayload(payload) {\n var payloadText = this.cleanupPayload(payload);\n return this.cleanupContentSize(payloadText);\n }\n\n start() {\n if (this.initialized) {\n return;\n }\n\n this.initialized = true;\n const self = this;\n this.interceptNetworkRequests({\n onFetch: (params, bbRequestId) => {\n if (this.stopped || !bbRequestId || !this.requests) {\n return;\n }\n\n if (\n params.length > 0 &&\n typeof params[0] !== \"undefined\" &&\n typeof params[0].url !== \"undefined\"\n ) {\n this.requests[bbRequestId] = {\n url: params[0].url,\n date: new Date(),\n request: {\n payload: \"\",\n headers:\n typeof params[0].headers !== \"undefined\"\n ? Object.fromEntries(params[0].headers.entries())\n : {},\n },\n type:\n typeof params[0].method !== \"undefined\" ? params[0].method : \"\",\n };\n } else {\n if (params.length >= 2 && params[1]) {\n var method =\n params[1] && params[1].method ? params[1].method : \"GET\";\n this.requests[bbRequestId] = {\n request: {\n payload: self.preparePayload(params[1].body),\n headers: params[1].headers,\n },\n type: method,\n url: params[0],\n date: new Date(),\n };\n } else {\n this.requests[bbRequestId] = {\n url: params[0],\n date: new Date(),\n };\n }\n }\n\n this.cleanRequests();\n },\n onFetchLoad: (req, bbRequestId) => {\n if (\n this.stopped ||\n !bbRequestId ||\n !this.requests ||\n !this.requests[bbRequestId]\n ) {\n return;\n }\n\n try {\n this.requests[bbRequestId][\"success\"] = true;\n this.requests[bbRequestId][\"response\"] = {\n status: req.status,\n statusText: \"\",\n responseText: \"\",\n };\n this.calcRequestTime(bbRequestId);\n } catch (exp) { }\n\n try {\n var contentType = \"\";\n if (req.headers && typeof req.headers.get !== \"undefined\") {\n contentType = req.headers.get(\"content-type\");\n }\n\n if (this.isContentTypeSupported(contentType)) {\n req\n .text()\n .then((responseText) => {\n if (this.requests[bbRequestId]) {\n this.requests[bbRequestId][\"success\"] = true;\n this.requests[bbRequestId][\"response\"] = {\n status: req.status,\n statusText: req.statusText,\n responseText: self.cleanupContentSize(responseText)\n };\n }\n this.calcRequestTime(bbRequestId);\n this.cleanRequests();\n })\n .catch((err) => {\n this.cleanRequests();\n });\n } else {\n if (this.requests[bbRequestId]) {\n this.requests[bbRequestId][\"success\"] = true;\n this.requests[bbRequestId][\"response\"] = {\n status: req.status,\n statusText: req.statusText,\n responseText: \"\",\n };\n }\n this.calcRequestTime(bbRequestId);\n this.cleanRequests();\n }\n } catch (exp) { }\n },\n onFetchFailed: (err, bbRequestId) => {\n if (\n this.stopped ||\n !bbRequestId ||\n !this.requests ||\n !this.requests[bbRequestId]\n ) {\n return;\n }\n\n this.requests[bbRequestId][\"success\"] = false;\n this.calcRequestTime(bbRequestId);\n this.cleanRequests();\n },\n onOpen: (request, args) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.bbRequestId &&\n args.length >= 2 &&\n this.requests\n ) {\n this.requests[request.bbRequestId] = {\n type: args[0],\n url: args[1],\n date: new Date(),\n };\n }\n\n this.cleanRequests();\n },\n onSend: (request, args) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.bbRequestId &&\n this.requests &&\n this.requests[request.bbRequestId]\n ) {\n this.requests[request.bbRequestId][\"request\"] = {\n payload: this.preparePayload(args.length > 0 ? args[0] : \"{}\"),\n headers: request.requestHeaders,\n };\n }\n\n this.cleanRequests();\n },\n onError: (request, args) => {\n if (\n !this.stopped &&\n this.requests &&\n request &&\n request.currentTarget &&\n request.currentTarget.bbRequestId &&\n this.requests[request.currentTarget.bbRequestId]\n ) {\n this.requests[request.currentTarget.bbRequestId][\"success\"] = false;\n this.calcRequestTime(request.bbRequestId);\n }\n\n this.cleanRequests();\n },\n onLoad: (request, args) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.currentTarget &&\n request.currentTarget.bbRequestId &&\n this.requests &&\n this.requests[request.currentTarget.bbRequestId]\n ) {\n var target = request.currentTarget;\n var responseType = target.responseType;\n var responseText = \"<\" + responseType + \">\";\n if (responseType === \"\" || responseType === \"text\") {\n responseText = this.cleanupContentSize(target.responseText);\n }\n\n this.requests[target.bbRequestId][\"success\"] = true;\n this.requests[target.bbRequestId][\"response\"] = {\n status: target.status,\n statusText: target.statusText,\n responseText: responseText,\n };\n\n this.calcRequestTime(target.bbRequestId);\n }\n\n this.cleanRequests();\n },\n });\n }\n\n interceptNetworkRequests(callback) {\n var self = this;\n const open = XMLHttpRequest.prototype.open;\n const send = XMLHttpRequest.prototype.send;\n\n // Only override open and send if they haven't been overridden already.\n if (XMLHttpRequest.prototype.gleapSetRequestHeader === undefined) {\n XMLHttpRequest.prototype.gleapSetRequestHeader =\n XMLHttpRequest.prototype.setRequestHeader;\n }\n\n if (XMLHttpRequest.prototype.gleapSetRequestHeader) {\n XMLHttpRequest.prototype.setRequestHeader = function (header, value) {\n if (!this.requestHeaders) {\n this.requestHeaders = {};\n }\n\n if (this.requestHeaders && this.requestHeaders.hasOwnProperty(header)) {\n return;\n }\n\n if (!this.requestHeaders[header]) {\n this.requestHeaders[header] = [];\n }\n\n this.requestHeaders[header].push(value);\n this.gleapSetRequestHeader(header, value);\n };\n }\n\n XMLHttpRequest.prototype.open = function () {\n this[\"bbRequestId\"] = ++self.requestId;\n callback.onOpen && callback.onOpen(this, arguments);\n if (callback.onLoad) {\n this.addEventListener(\"load\", callback.onLoad.bind(callback));\n }\n if (callback.onError) {\n this.addEventListener(\"error\", callback.onError.bind(callback));\n }\n return open.apply(this, arguments);\n };\n XMLHttpRequest.prototype.send = function () {\n callback.onSend && callback.onSend(this, arguments);\n return send.apply(this, arguments);\n };\n\n if (window.fetch) {\n (function () {\n var originalFetch = window.fetch;\n window.fetch = function () {\n var bbRequestId = ++self.requestId;\n callback.onFetch(arguments, bbRequestId);\n\n return originalFetch\n .apply(this, arguments)\n .then(function (response) {\n if (response && typeof response.clone === \"function\") {\n const data = response.clone();\n callback.onFetchLoad(data, bbRequestId);\n }\n\n return response;\n })\n .catch((err) => {\n callback.onFetchFailed(err, bbRequestId);\n throw err;\n });\n };\n })();\n }\n\n return callback;\n }\n\n blobToTextPromise(blob) {\n return new Promise(function (resolve, reject) {\n var fr = new FileReader();\n fr.onload = function (evt) {\n if (evt && evt.target && evt.target.result) {\n resolve(evt.target.result);\n } else {\n reject();\n }\n };\n fr.onerror = function (err) {\n reject(err);\n };\n fr.readAsText(blob);\n });\n }\n}\n\nexport default GleapNetworkIntercepter;\n","export const resizeImage = (base64Str, maxWidth = 400, maxHeight = 400) => {\n return new Promise((resolve, reject) => {\n var isJPEG = base64Str.indexOf(\"data:image/jpeg\") === 0;\n var img = new Image();\n img.src = base64Str;\n img.onerror = () => {\n reject();\n };\n img.onload = () => {\n var canvas = document.createElement(\"canvas\");\n var MAX_WIDTH = maxWidth;\n var MAX_HEIGHT = maxHeight;\n\n // Adjust max width / height based on image props\n if (maxWidth > img.width / 1.5) {\n MAX_WIDTH = img.width / 1.5;\n }\n\n if (maxHeight > img.height / 1.5) {\n MAX_HEIGHT = img.height / 1.5;\n }\n\n var width = img.width;\n var height = img.height;\n\n if (width > height) {\n if (width > MAX_WIDTH) {\n height *= MAX_WIDTH / width;\n width = MAX_WIDTH;\n }\n } else {\n if (height > MAX_HEIGHT) {\n width *= MAX_HEIGHT / height;\n height = MAX_HEIGHT;\n }\n }\n canvas.width = width;\n canvas.height = height;\n var ctx = canvas.getContext(\"2d\");\n ctx.drawImage(img, 0, 0, width, height);\n\n if (isJPEG) {\n resolve(canvas.toDataURL(\"image/jpeg\", 0.7));\n } else {\n resolve(canvas.toDataURL());\n }\n };\n });\n};\n\nexport const isMobile = () => {\n if (\n /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(\n navigator.userAgent\n ) ||\n /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(\n navigator.userAgent.substr(0, 4)\n )\n ) {\n return true;\n }\n return false;\n};\n\nexport const gleapDataParser = function (data) {\n if (typeof data === \"string\" || data instanceof String) {\n try {\n return JSON.parse(data);\n } catch (e) {\n return {};\n }\n }\n return data;\n};\n\nexport const truncateString = (str, num) => {\n if (str.length > num) {\n return str.slice(0, num) + \"...\";\n } else {\n return str;\n }\n};\n\nconst removeSubDomain = (v) => {\n try {\n var parts = v.split(\".\");\n var is2ndLevelDomain = false;\n const secondLevel = parts[parts.length - 2];\n if (\n secondLevel === \"co\" ||\n secondLevel === \"com\" ||\n secondLevel === \"gv\" ||\n secondLevel === \"ac\" ||\n secondLevel === \"edu\" ||\n secondLevel === \"gov\" ||\n secondLevel === \"mil\" ||\n secondLevel === \"net\" ||\n secondLevel === \"org\"\n ) {\n is2ndLevelDomain = true;\n }\n parts = parts.slice(is2ndLevelDomain ? -3 : -2);\n return parts.join(\".\");\n } catch (exp) {}\n return v;\n};\n\nexport const loadFromGleapCache = (key) => {\n try {\n const cachedData = localStorage.getItem(`gleap-widget-${key}`);\n if (cachedData) {\n const config = JSON.parse(cachedData);\n return config;\n }\n } catch (exp) {}\n return null;\n};\n\nexport const saveToGleapCache = (key, data) => {\n const k = `gleap-widget-${key}`;\n if (data) {\n try {\n localStorage.setItem(k, JSON.stringify(data));\n } catch (exp) {}\n } else {\n localStorage.removeItem(k);\n }\n};\n\nexport const setGleapCookie = (name, value, days) => {\n try {\n var expires = \"\";\n if (days) {\n var date = new Date();\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\n expires = \"; expires=\" + date.toUTCString();\n }\n const host = removeSubDomain(window.location.host.split(\":\")[0]);\n document.cookie =\n name + \"=\" + (value || \"\") + expires + \"; path=/; domain=\" + host;\n } catch (exp) {}\n};\n\nexport const getGleapCookie = (name) => {\n try {\n var nameEQ = name + \"=\";\n var ca = document.cookie.split(\";\");\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n while (c.charAt(0) == \" \") c = c.substring(1, c.length);\n if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);\n }\n } catch (exp) {}\n return null;\n};\n\nexport const eraseGleapCookie = (name) => {\n try {\n const host = removeSubDomain(window.location.host.split(\":\")[0]);\n document.cookie =\n name + \"=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT; Domain=\" + host;\n } catch (exp) {}\n};\n\nexport const getDOMElementDescription = (element, html = true) => {\n var innerText = truncateString(element.innerText || \"\", 40)\n .replace(/(\\r\\n|\\n|\\r)/gm, \"\")\n .replace(/ +(?= )/g, \"\");\n var elementId = \"\";\n var elementClass = \"\";\n if (typeof element.getAttribute !== \"undefined\") {\n const elemId = element.getAttribute(\"id\");\n if (elemId) {\n elementId = ` id=\"${elemId}\"`;\n }\n const elemClass = element.getAttribute(\"class\");\n if (elemClass) {\n elementClass = ` class=\"${elemClass}\"`;\n }\n }\n const elementTag = (element.tagName || \"\").toLowerCase();\n\n var htmlPre = \"<\";\n var htmlPost = \">\";\n if (!html) {\n htmlPre = \"[\";\n htmlPost = \"]\";\n }\n\n return `${htmlPre}${elementTag}${elementId}${elementClass}${htmlPost}${innerText}${htmlPre}/${elementTag}${htmlPost}`;\n};\n\nexport const runFunctionWhenDomIsReady = (callback) => {\n if (\n document.readyState === \"complete\" ||\n document.readyState === \"loaded\" ||\n document.readyState === \"interactive\"\n ) {\n callback();\n } else {\n document.addEventListener(\"DOMContentLoaded\", () => {\n callback();\n });\n }\n};\n\nexport const fixGleapHeight = () => {\n try {\n if (\n \"visualViewport\" in window &&\n /iPad|iPhone|iPod/.test(navigator.userAgent)\n ) {\n let initialHeight = window.innerHeight;\n\n function updateContainerHeight() {\n try {\n const gleapFrameContainer = document.querySelector(\n \".gleap-frame-container-inner iframe\"\n );\n\n if (!gleapFrameContainer) {\n return;\n }\n\n // Check if the keyboard is open\n if (window.visualViewport.height < initialHeight) {\n gleapFrameContainer.style.setProperty(\n \"max-height\",\n window.visualViewport.height + \"px\",\n \"important\"\n );\n } else {\n // Remove the padding bottom\n gleapFrameContainer.style.removeProperty(\"max-height\");\n }\n } catch (error) {}\n }\n\n function handleOrientationChange() {\n try {\n // Update initial dimensions\n initialHeight = window.innerHeight;\n updateContainerHeight();\n } catch (error) {}\n }\n\n // Update on resize (keyboard show/hide and viewport resize)\n window.visualViewport.addEventListener(\"resize\", updateContainerHeight);\n\n // Handle orientation changes\n window.addEventListener(\"orientationchange\", handleOrientationChange);\n\n // Update initially\n updateContainerHeight();\n }\n } catch (error) {}\n};\n","import { GleapSession, GleapTranslationManager } from \"./Gleap\"; // Adjust path if needed\n\n// Enum for request states\nconst RequestStatus = {\n PENDING: \"pending\",\n SUCCESS: \"success\",\n ERROR: \"error\",\n};\n\nclass ChecklistNetworkManager {\n static instance = null;\n\n /** @private {Map>} outboundId -> Promise */\n validationRequests = new Map();\n /** @private {Map} */\n validationCache = new Map(); // Caches final results (success/error)\n\n /** @private {Map>} internalId -> Promise */\n fetchRequests = new Map();\n /** @private {Map} */\n fetchCache = new Map(); // Caches final results (success/error)\n\n // Private constructor for Singleton\n constructor() {\n if (ChecklistNetworkManager.instance) {\n return ChecklistNetworkManager.instance;\n }\n ChecklistNetworkManager.instance = this;\n }\n\n /**\n * Gets the singleton instance of the ChecklistNetworkManager.\n * @returns {ChecklistNetworkManager} The singleton instance.\n */\n static getInstance() {\n if (!ChecklistNetworkManager.instance) {\n ChecklistNetworkManager.instance = new ChecklistNetworkManager();\n }\n return ChecklistNetworkManager.instance;\n }\n\n clearCache() {\n this.validationCache.clear();\n this.fetchCache.clear();\n this.validationRequests.clear();\n this.fetchRequests.clear();\n }\n\n /**\n * @private\n * Gets common query parameters for API requests.\n * @returns {string} Query parameter string.\n */\n _getQueryParams() {\n const gleapSessionInstance = GleapSession.getInstance();\n const session = gleapSessionInstance?.session;\n const lang =\n GleapTranslationManager.getInstance().getActiveLanguage() || \"en\";\n return `gleapId=${session?.gleapId || \"\"}&gleapHash=${\n session?.gleapHash || \"\"\n }&lang=${lang}`;\n }\n\n /**\n * @private\n * Gets the API base URL.\n * @returns {string | null} The API URL or null if not configured.\n */\n _getApiUrl() {\n const gleapSessionInstance = GleapSession.getInstance();\n return gleapSessionInstance?.apiUrl || null;\n }\n\n /**\n * @private\n * Makes an XMLHttpRequest and returns a Promise.\n * @param {string} method - HTTP method.\n * @param {string} url - The request URL.\n * @param {object|null} data - Data to send in the request body.\n * @returns {Promise} Promise resolving with parsed JSON response on success, rejecting on error.\n */\n _makeRequest(method, url, data) {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n xhr.open(method, url);\n\n const gleapSessionInstance = GleapSession.getInstance();\n gleapSessionInstance?.injectSession(xhr); // Inject session headers\n\n if (data) {\n xhr.setRequestHeader(\"Content-Type\", \"application/json;charset=UTF-8\");\n }\n\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n if (xhr.status >= 200 && xhr.status < 300) {\n try {\n // Handle potential empty success responses (e.g., 204)\n const responseData = xhr.responseText\n ? JSON.parse(xhr.responseText)\n : null;\n resolve(responseData);\n } catch (err) {\n reject({\n status: xhr.status,\n statusText: \"JSON Parse Error\",\n responseText: xhr.responseText,\n error: err,\n });\n }\n } else {\n reject({\n status: xhr.status,\n statusText: xhr.statusText,\n responseText: xhr.responseText,\n });\n }\n }\n };\n\n xhr.onerror = () => {\n reject({ status: 0, statusText: \"Network Error\", responseText: null });\n };\n\n xhr.send(data ? JSON.stringify(data) : null);\n });\n }\n\n /**\n * @private\n * Creates a cache key from outboundId and sharedKey\n * @param {string} outboundId - The public/outbound checklist ID.\n * @param {string|undefined} sharedKey - Optional shared key.\n * @returns {string} Combined cache key.\n */\n _createCacheKey(outboundId, sharedKey) {\n return sharedKey ? `${outboundId}::${sharedKey}` : outboundId;\n }\n\n /**\n * Validates an outbound checklist ID, returning a Promise for the internal ID.\n * Manages caching and deduplicates requests.\n * @param {string} outboundId - The public/outbound checklist ID.\n * @param {string} [sharedKey] - Optional shared key for the checklist.\n * @returns {Promise} A promise that resolves with the internal checklist ID.\n */\n validateChecklist(outboundId, sharedKey) {\n const cacheKey = this._createCacheKey(outboundId, sharedKey);\n\n // 1. Check cache for final result (success or error)\n const cachedResult = this.validationCache.get(cacheKey);\n if (cachedResult) {\n if (cachedResult.status === RequestStatus.SUCCESS) {\n return Promise.resolve(cachedResult.internalId);\n } else {\n return Promise.reject(cachedResult.error);\n }\n }\n\n // 2. Check for an ongoing request\n if (this.validationRequests.has(cacheKey)) {\n return this.validationRequests.get(cacheKey);\n }\n\n // 3. Start a new request\n const apiUrl = this._getApiUrl();\n if (!apiUrl) {\n const error = new Error(\n \"ChecklistNetworkManager: Gleap API URL not configured.\"\n );\n this.validationCache.set(cacheKey, {\n status: RequestStatus.ERROR,\n error,\n });\n return Promise.reject(error);\n }\n\n const url = `${apiUrl}/outbound/checklists?${this._getQueryParams()}`;\n const requestPromise = this._makeRequest(\"POST\", url, {\n outboundId,\n sharedKey,\n })\n .then((responseData) => {\n if (responseData && responseData.id) {\n this.validationCache.set(cacheKey, {\n status: RequestStatus.SUCCESS,\n internalId: responseData.id,\n });\n return responseData.id;\n } else {\n const error = new Error(\"Validation response missing checklist ID.\");\n this.validationCache.set(cacheKey, {\n status: RequestStatus.ERROR,\n error: responseData || error,\n });\n throw error; // Rethrow to be caught by catch block\n }\n })\n .catch((error) => {\n // Store the error object itself in the cache\n this.validationCache.set(cacheKey, {\n status: RequestStatus.ERROR,\n error,\n });\n throw error; // Re-throw so callers can catch it\n })\n .finally(() => {\n // Remove from pending requests map once done (success or fail)\n this.validationRequests.delete(cacheKey);\n });\n\n // Store the promise for potential concurrent requests\n this.validationRequests.set(cacheKey, requestPromise);\n return requestPromise;\n }\n\n /**\n * Fetches the full checklist data using the internal ID, returning a Promise.\n * Manages caching and deduplicates requests.\n * @param {string} internalId - The internal checklist ID.\n * @returns {Promise} A promise that resolves with the full checklist data.\n */\n fetchChecklist(internalId) {\n // 1. Check cache for final result (success or error)\n const cachedResult = this.fetchCache.get(internalId);\n if (cachedResult) {\n if (cachedResult.status === RequestStatus.SUCCESS) {\n // Return a deep copy to prevent mutation issues if multiple components use it\n return Promise.resolve(JSON.parse(JSON.stringify(cachedResult.data)));\n } else {\n return Promise.reject(cachedResult.error);\n }\n }\n\n // 2. Check for an ongoing request\n if (this.fetchRequests.has(internalId)) {\n // Return a promise that resolves with a deep copy\n return this.fetchRequests\n .get(internalId)\n .then((data) => JSON.parse(JSON.stringify(data)));\n }\n\n // 3. Start a new request\n const apiUrl = this._getApiUrl();\n if (!apiUrl) {\n const error = new Error(\n \"ChecklistNetworkManager: Gleap API URL not configured.\"\n );\n this.fetchCache.set(internalId, { status: RequestStatus.ERROR, error });\n return Promise.reject(error);\n }\n\n const url = `${apiUrl}/outbound/checklists/${internalId}?convertTipTap=true&${this._getQueryParams()}`;\n const requestPromise = this._makeRequest(\"GET\", url, null)\n .then((responseData) => {\n if (responseData) {\n // Cache the successful data\n this.fetchCache.set(internalId, {\n status: RequestStatus.SUCCESS,\n data: responseData,\n });\n // Return a deep copy of the data\n return JSON.parse(JSON.stringify(responseData));\n } else {\n // Should not happen with successful GET usually, but handle defensively\n const error = new Error(\n \"Empty response received for checklist fetch.\"\n );\n this.fetchCache.set(internalId, {\n status: RequestStatus.ERROR,\n error: responseData || error,\n });\n throw error;\n }\n })\n .catch((error) => {\n this.fetchCache.set(internalId, { status: RequestStatus.ERROR, error });\n throw error; // Re-throw so callers can catch it\n })\n .finally(() => {\n // Remove from pending requests map once done (success or fail)\n this.fetchRequests.delete(internalId);\n });\n\n this.fetchRequests.set(internalId, requestPromise);\n // Return a promise that resolves with a deep copy\n return requestPromise.then((data) => JSON.parse(JSON.stringify(data)));\n }\n}\n\nexport default ChecklistNetworkManager;\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n const lr = ['left', 'right'];\n const rl = ['right', 'left'];\n const tb = ['top', 'bottom'];\n const bt = ['bottom', 'top'];\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rl : lr;\n return isStart ? lr : rl;\n case 'left':\n case 'right':\n return isStart ? tb : bt;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n return {\n ...rect,\n top: rect.y,\n left: rect.x,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n ...rects.floating,\n x,\n y\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n if (!specifiedFallbackPlacements && fallbackAxisSideDirection !== 'none') {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$map$so;\n const placement = (_overflowsData$map$so = overflowsData.map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$map$so[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: 0,\n crossAxis: 0,\n alignmentAxis: null,\n ...rawValue\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = ['top', 'left'].includes(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const overflowAvailableHeight = height - overflow[heightSide];\n const overflowAvailableWidth = width - overflow[widthSide];\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if (isYAxis) {\n const maximumClippingWidth = width - overflow.left - overflow.right;\n availableWidth = alignment || noShift ? min(overflowAvailableWidth, maximumClippingWidth) : maximumClippingWidth;\n } else {\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n availableHeight = alignment || noShift ? min(overflowAvailableHeight, maximumClippingHeight) : maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n // Browsers without `ShadowRoot` support.\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isContainingBlock(element) {\n const webkit = isWebKit();\n const css = getComputedStyle(element);\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n return css.transform !== 'none' || css.perspective !== 'none' || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else {\n currentNode = getParentNode(currentNode);\n }\n }\n return null;\n}\nfunction isWebKit() {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nfunction isLastTraversableNode(node) {\n return ['html', 'body', '#document'].includes(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.pageXOffset,\n scrollTop: element.pageYOffset\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], win.frameElement && traverseIframes ? getOverflowAncestors(win.frameElement) : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isWebKit };\n","import { rectToClientRect, autoPlacement as autoPlacement$1, shift as shift$1, flip as flip$1, size as size$1, hide as hide$1, arrow as arrow$1, inline as inline$1, limitShift as limitShift$1, computePosition as computePosition$1 } from '@floating-ui/core';\nexport { detectOverflow, offset } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement, isElement, getWindow, isWebKit, getDocumentElement, getNodeName, isOverflowElement, getNodeScroll, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = currentWin.frameElement;\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = currentWin.frameElement;\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\nconst topLayerSelectors = [':popover-open', ':modal'];\nfunction isTopLayer(floating) {\n return topLayerSelectors.some(selector => {\n try {\n return floating.matches(selector);\n } catch (e) {\n return false;\n }\n });\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\nfunction getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n ...clippingAncestor,\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n const x = rect.left + scroll.scrollLeft - offsets.x;\n const y = rect.top + scroll.scrollTop - offsets.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n return element.offsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const window = getWindow(element);\n if (!isHTMLElement(element) || isTopLayer(element)) {\n return window;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && !isContainingBlock(offsetParent))) {\n return window;\n }\n return offsetParent || getContainingBlock(element) || window;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n ...(await getDimensionsFn(data.floating))\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const {\n left,\n top,\n width,\n height\n } = element.getBoundingClientRect();\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 100);\n } else {\n refresh(false, ratio);\n }\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle `;\n document.body.appendChild(elem);\n\n this.gleapFrameContainer = elem;\n this.gleapFrame = document.querySelector(\".gleap-frame\");\n\n this.updateFrameStyle();\n\n // Show loading preview for widget app mode.\n if (this.appMode === \"widget\") {\n this.showFrameContainer(true);\n }\n });\n });\n };\n\n showImage = (url) => {\n runFunctionWhenDomIsReady(() => {\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-image-view\";\n elem.innerHTML = `
\n \n
`;\n document.body.appendChild(elem);\n\n const closeElement = () => {\n elem.remove();\n };\n\n const close = elem.querySelector(\".gleap-image-view-close\");\n close.addEventListener(\"click\", () => {\n closeElement();\n });\n\n elem.addEventListener(\"click\", (e) => {\n if (e.target === elem) {\n closeElement();\n }\n });\n });\n };\n\n updateFrameStyle = () => {\n if (!this.gleapFrameContainer) {\n return;\n }\n\n const surveyStyle = \"gleap-frame-container--survey\";\n const extendedStyle = \"gleap-frame-container--extended\";\n const surveyFullStyle = \"gleap-frame-container--survey-full\";\n const classicStyle = \"gleap-frame-container--classic\";\n const classicStyleLeft = \"gleap-frame-container--classic-left\";\n const modernStyleLeft = \"gleap-frame-container--modern-left\";\n const noButtonStyleLeft = \"gleap-frame-container--no-button\";\n const allStyles = [\n classicStyle,\n classicStyleLeft,\n extendedStyle,\n modernStyleLeft,\n noButtonStyleLeft,\n surveyStyle,\n surveyFullStyle,\n ];\n for (let i = 0; i < allStyles.length; i++) {\n this.gleapFrameContainer.classList.remove(allStyles[i]);\n }\n\n var styleToApply = undefined;\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM\n ) {\n styleToApply = classicStyle;\n }\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT\n ) {\n styleToApply = classicStyleLeft;\n }\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_BOTTOM_LEFT\n ) {\n styleToApply = modernStyleLeft;\n }\n if (GleapFeedbackButtonManager.getInstance().buttonHidden === null) {\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_NONE\n ) {\n styleToApply = noButtonStyleLeft;\n }\n } else {\n if (GleapFeedbackButtonManager.getInstance().buttonHidden) {\n styleToApply = noButtonStyleLeft;\n }\n }\n if (styleToApply) {\n this.gleapFrameContainer.classList.add(styleToApply);\n }\n\n if (this.appMode === \"survey\") {\n this.gleapFrameContainer.classList.add(surveyStyle);\n }\n if (this.appMode === \"survey_full\" || this.appMode === \"survey_web\") {\n this.gleapFrameContainer.classList.add(surveyFullStyle);\n }\n if (this.appMode === \"extended\") {\n this.gleapFrameContainer.classList.add(extendedStyle);\n }\n\n this.gleapFrameContainer.setAttribute(\n \"dir\",\n GleapTranslationManager.getInstance().isRTLLayout ? \"rtl\" : \"ltr\"\n );\n };\n\n showFrameContainer(showLoader) {\n if (!this.gleapFrameContainer) {\n return;\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const loadingClass = \"gleap-frame-container--loading\";\n if (this.gleapFrameContainer.classList) {\n this.gleapFrameContainer.classList.remove(\n \"gleap-frame-container--hidden\"\n );\n if (showLoader) {\n this.gleapFrameContainer.classList.add(loadingClass);\n\n if (flowConfig.disableBGFade) {\n this.gleapFrameContainer.classList.add(\n \"gleap-frame-container--loading-nofade\"\n );\n }\n if (flowConfig.disableBGGradient) {\n this.gleapFrameContainer.classList.add(\n \"gleap-frame-container--loading-nogradient\"\n );\n }\n } else {\n this.gleapFrameContainer.classList.remove(loadingClass);\n }\n\n setTimeout(() => {\n this.gleapFrameContainer.classList.add(\n \"gleap-frame-container--animate\"\n );\n }, 500);\n }\n\n this.widgetOpened = true;\n this.updateUI();\n }\n\n runWidgetShouldOpenCallback() {\n if (!this.gleapFrameContainer) {\n return;\n }\n\n this.workThroughQueue();\n\n Gleap.getInstance().setGlobalDataItem(\"snapshotPosition\", {\n x: window.scrollX,\n y: window.scrollY,\n });\n\n this.showFrameContainer(false);\n this.updateWidgetStatus();\n\n GleapEventManager.notifyEvent(\"open\");\n this.registerEscListener();\n }\n\n updateUI() {\n // Clear notifications only when not opening a survey.\n GleapNotificationManager.getInstance().clearAllNotifications(\n this.isSurvey()\n );\n\n GleapFeedbackButtonManager.getInstance().updateNotificationBadge(0);\n GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n }\n\n showWidget() {\n setTimeout(() => {\n if (this.gleapFrameContainer) {\n this.runWidgetShouldOpenCallback();\n } else {\n GleapFrameManager.getInstance().injectFrame();\n }\n this.updateUI();\n }, 0);\n }\n\n updateWidgetStatus() {\n this.sendMessage({\n name: \"widget-status-update\",\n data: {\n isWidgetOpen: this.widgetOpened,\n },\n });\n }\n\n hideMarkerManager() {\n if (this.markerManager) {\n this.markerManager.clear();\n this.markerManager = null;\n }\n }\n\n hideWidget(resetRoutes = false) {\n // Prevent for survey web.\n if (this.appMode === \"survey_web\") {\n return;\n }\n\n this.hideMarkerManager();\n if (this.gleapFrameContainer) {\n this.gleapFrameContainer.classList.add(\"gleap-frame-container--hidden\");\n this.gleapFrameContainer.classList.remove(\n \"gleap-frame-container--animate\"\n );\n }\n if (resetRoutes) {\n this.sendMessage({\n name: \"reset-routes\",\n data: {},\n });\n }\n this.widgetOpened = false;\n this.updateWidgetStatus();\n GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n GleapEventManager.notifyEvent(\"close\");\n GleapNotificationManager.getInstance().reloadNotificationsFromCache();\n\n this.unregisterEscListener();\n\n if (typeof window !== \"undefined\" && typeof window.focus !== \"undefined\") {\n window.focus();\n }\n }\n\n sendMessage(data, queue = false) {\n try {\n this.gleapFrame = document.querySelector(\".gleap-frame\");\n if (this.comReady && this.gleapFrame && this.gleapFrame.contentWindow) {\n this.gleapFrame.contentWindow.postMessage(JSON.stringify(data), \"*\");\n } else {\n if (queue) {\n this.queue.push(data);\n }\n }\n } catch (e) {}\n }\n\n sendSessionUpdate() {\n this.sendMessage({\n name: \"session-update\",\n data: {\n sessionData: GleapSession.getInstance().getSession(),\n apiUrl: GleapSession.getInstance().apiUrl,\n sdkKey: GleapSession.getInstance().sdkKey,\n },\n });\n }\n\n sendConfigUpdate() {\n if (!this.comReady) {\n return;\n }\n\n this.sendMessage({\n name: \"config-update\",\n data: {\n config: GleapConfigManager.getInstance().getFlowConfig(),\n aiTools: GleapConfigManager.getInstance().getAiTools(),\n overrideLanguage:\n GleapTranslationManager.getInstance().getOverrideLanguage(),\n },\n });\n\n this.updateFrameStyle();\n }\n\n showDrawingScreen(type) {\n this.hideWidget();\n\n // Show screen drawing.\n this.markerManager = new GleapMarkerManager(type);\n this.markerManager.show((success) => {\n if (!success) {\n this.hideMarkerManager();\n }\n this.showWidget();\n });\n }\n\n workThroughQueue() {\n const workQueue = [...this.queue];\n this.queue = [];\n for (let i = 0; i < workQueue.length; i++) {\n this.sendMessage(workQueue[i], true);\n }\n }\n\n startCommunication() {\n // Listen for messages.\n this.addMessageListener((data) => {\n if (data.name === \"ping\") {\n this.comReady = true;\n this.sendConfigUpdate();\n this.sendSessionUpdate();\n this.workThroughQueue();\n setTimeout(() => {\n this.runWidgetShouldOpenCallback();\n }, 300);\n }\n\n if (data.name === \"play-ping\") {\n GleapAudioManager.ping();\n }\n\n if (data.name === \"open-image\") {\n this.showImage(data.data.url);\n }\n\n if (data.name === \"page-changed\") {\n if (\n data.data &&\n (data.data.name === \"newsdetails\" || data.data.name === \"appextended\")\n ) {\n this.setAppMode(\"extended\");\n } else {\n if (this.appMode === \"extended\") {\n this.setAppMode(\"widget\");\n }\n }\n }\n\n if (data.name === \"collect-ticket-data\") {\n var ticketData = {\n customData: GleapCustomDataManager.getInstance().getCustomData(),\n metaData: GleapMetaDataManager.getInstance().getMetaData(),\n consoleLog: GleapConsoleLogManager.getInstance().getLogs(),\n networkLogs: GleapNetworkIntercepter.getInstance().getRequests(),\n customEventLog: GleapStreamedEvent.getInstance().getEventArray(),\n formData: GleapCustomDataManager.getInstance().getTicketAttributes(),\n };\n\n // Add tags\n const tags = GleapTagManager.getInstance().getTags();\n if (tags && tags.length > 0) {\n ticketData.tags = tags;\n }\n\n this.sendMessage({\n name: \"collect-ticket-data\",\n data: ticketData,\n });\n }\n\n if (data.name === \"height-update\") {\n this.frameHeight = data.data;\n\n const innerContainer = document.querySelector(\n \".gleap-frame-container-inner\"\n );\n if (\n (this.appMode === \"survey\" ||\n this.appMode === \"survey_full\" ||\n this.appMode === \"survey_web\") &&\n innerContainer\n ) {\n innerContainer.style.maxHeight = `${this.frameHeight}px`;\n }\n }\n\n if (data.name === \"notify-event\") {\n GleapEventManager.notifyEvent(data.data.type, data.data.data);\n }\n\n if (data.name === \"cleanup-drawings\") {\n this.hideMarkerManager();\n }\n\n if (data.name === \"open-url\") {\n const url = data.data;\n const newTab = data.newTab ? true : false;\n this.urlHandler(url, newTab);\n }\n\n if (data.name === \"start-product-tour\") {\n Gleap.startProductTour(data.data?.tourId, true);\n }\n\n if (data.name === \"run-custom-action\") {\n GleapCustomActionManager.triggerCustomAction(data.data, {\n shareToken: data.shareToken,\n });\n }\n\n if (data.name === \"close-widget\") {\n this.hideWidget();\n }\n\n if (data.name === \"tool-execution\") {\n GleapEventManager.notifyEvent(\"tool-execution\", data.data);\n }\n\n if (data.name === \"send-feedback\") {\n const formData = data.data.formData;\n const action = data.data.action;\n const outboundId = data.data.outboundId;\n const spamToken = data.data.spamToken;\n\n const feedback = new GleapFeedback(\n action.feedbackType,\n \"MEDIUM\",\n formData,\n false,\n action.excludeData,\n outboundId,\n spamToken\n );\n feedback\n .sendFeedback()\n .then((feedbackData) => {\n this.sendMessage({\n name: \"feedback-sent\",\n data: feedbackData,\n });\n GleapEventManager.notifyEvent(\"feedback-sent\", formData);\n\n if (outboundId && outboundId.length > 0) {\n GleapEventManager.notifyEvent(\"outbound-sent\", {\n outboundId: outboundId,\n outbound: action,\n formData: formData,\n });\n\n try {\n delete formData.reportedBy;\n } catch (e) {}\n Gleap.trackEvent(`outbound-${outboundId}-submitted`, formData);\n }\n })\n .catch((error) => {\n this.sendMessage({\n name: \"feedback-sending-failed\",\n data: \"Something went wrong, please try again.\",\n });\n GleapEventManager.notifyEvent(\"error-while-sending\");\n });\n }\n\n if (data.name === \"start-screen-drawing\") {\n this.showDrawingScreen(data.data);\n }\n });\n\n // Add window message listener.\n window.addEventListener(\"message\", (event) => {\n if (\n event.origin !== this.frameUrl &&\n event.origin !== GleapBannerManager.getInstance().bannerUrl\n ) {\n return;\n }\n\n try {\n const data = JSON.parse(event.data);\n for (var i = 0; i < this.listeners.length; i++) {\n if (this.listeners[i]) {\n this.listeners[i](data);\n }\n }\n } catch (exp) {}\n });\n }\n\n addMessageListener(callback) {\n this.listeners.push(callback);\n }\n}\n","import { isMobile } from \"./GleapHelper\";\n\nexport default class GleapMetaDataManager {\n sessionStart = new Date();\n appBuildNumber = \"\";\n appVersionCode = \"\";\n environment = \"prod\";\n\n // GleapMetaDataManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapMetaDataManager();\n }\n return this.instance;\n }\n\n /**\n * Sets the app version code.\n * @param {string} appVersionCode\n */\n static setAppVersionCode(appVersionCode) {\n this.getInstance().appVersionCode = appVersionCode;\n }\n\n /**\n * Sets the app version code.\n * @param {string} appVersionCode\n */\n static setAppBuildNumber(appBuildNumber) {\n this.getInstance().appBuildNumber = appBuildNumber;\n }\n\n getSessionDuration() {\n const now = new Date();\n return Math.round((now.getTime() - this.sessionStart.getTime()) / 1000);\n }\n\n getMetaData() {\n var nAgt = navigator.userAgent;\n var browserName = navigator.appName;\n var fullVersion = \"\" + parseFloat(navigator.appVersion);\n var majorVersion = parseInt(navigator.appVersion, 10);\n var nameOffset, verOffset, ix;\n\n // In Opera, the true version is after \"Opera\" or after \"Version\"\n if ((verOffset = nAgt.indexOf(\"Opera\")) !== -1) {\n browserName = \"Opera\";\n fullVersion = nAgt.substring(verOffset + 6);\n if ((verOffset = nAgt.indexOf(\"Version\")) !== -1)\n fullVersion = nAgt.substring(verOffset + 8);\n }\n // In MSIE, the true version is after \"MSIE\" in userAgent\n else if ((verOffset = nAgt.indexOf(\"MSIE\")) !== -1) {\n browserName = \"Microsoft Internet Explorer\";\n fullVersion = nAgt.substring(verOffset + 5);\n }\n // In Chrome, the true version is after \"Chrome\"\n else if ((verOffset = nAgt.indexOf(\"Chrome\")) !== -1) {\n browserName = \"Chrome\";\n fullVersion = nAgt.substring(verOffset + 7);\n }\n // In Safari, the true version is after \"Safari\" or after \"Version\"\n else if ((verOffset = nAgt.indexOf(\"Safari\")) !== -1) {\n browserName = \"Safari\";\n fullVersion = nAgt.substring(verOffset + 7);\n if ((verOffset = nAgt.indexOf(\"Version\")) !== -1)\n fullVersion = nAgt.substring(verOffset + 8);\n }\n // In Firefox, the true version is after \"Firefox\"\n else if ((verOffset = nAgt.indexOf(\"Firefox\")) !== -1) {\n browserName = \"Firefox\";\n fullVersion = nAgt.substring(verOffset + 8);\n }\n // In most other browsers, \"name/version\" is at the end of userAgent\n else if (\n (nameOffset = nAgt.lastIndexOf(\" \") + 1) <\n (verOffset = nAgt.lastIndexOf(\"/\"))\n ) {\n browserName = nAgt.substring(nameOffset, verOffset);\n fullVersion = nAgt.substring(verOffset + 1);\n if (browserName.toLowerCase() === browserName.toUpperCase()) {\n browserName = navigator.appName;\n }\n }\n // trim the fullVersion string at semicolon/space if present\n if ((ix = fullVersion.indexOf(\";\")) !== -1)\n fullVersion = fullVersion.substring(0, ix);\n if ((ix = fullVersion.indexOf(\" \")) !== -1)\n fullVersion = fullVersion.substring(0, ix);\n\n majorVersion = parseInt(\"\" + fullVersion, 10);\n if (isNaN(majorVersion)) {\n fullVersion = \"\" + parseFloat(navigator.appVersion);\n majorVersion = parseInt(navigator.appVersion, 10);\n }\n\n var OSName = \"Unknown OS\";\n if (navigator.appVersion.indexOf(\"Win\") !== -1) OSName = \"Windows\";\n if (navigator.appVersion.indexOf(\"Mac\") !== -1) OSName = \"MacOS\";\n if (navigator.appVersion.indexOf(\"X11\") !== -1) OSName = \"UNIX\";\n if (navigator.appVersion.indexOf(\"Linux\") !== -1) OSName = \"Linux\";\n if (navigator.appVersion.indexOf(\"iPad\") !== -1) OSName = \"iPad\";\n if (navigator.appVersion.indexOf(\"iPhone\") !== -1) OSName = \"iPhone\";\n if (navigator.appVersion.indexOf(\"Android\") !== -1) OSName = \"Android\";\n\n return {\n browserName: browserName + \"(\" + fullVersion + \")\",\n userAgent: nAgt,\n browser: browserName,\n systemName: OSName,\n buildVersionNumber: this.appBuildNumber,\n releaseVersionNumber: this.appVersionCode,\n sessionDuration: this.getSessionDuration(),\n devicePixelRatio: window.devicePixelRatio,\n screenWidth: window.screen.width,\n screenHeight: window.screen.height,\n innerWidth: window.innerWidth,\n innerHeight: window.innerHeight,\n currentUrl: window.location.href,\n language: navigator.language || navigator.userLanguage,\n mobile: isMobile(),\n sdkVersion: SDK_VERSION,\n sdkType: \"javascript\",\n environment: this.environment,\n };\n }\n}\n","import { truncateString } from \"./GleapHelper\";\n\nexport default class GleapConsoleLogManager {\n logArray = [];\n disabled = false;\n originalConsoleLog;\n logMaxLength = 500;\n\n // GleapConsoleLogManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapConsoleLogManager();\n }\n return this.instance;\n }\n\n /**\n * Return the console logs\n * @returns {any[]} logs\n */\n getLogs() {\n return this.logArray;\n }\n\n /**\n * Revert console log overwrite.\n */\n stop() {\n this.disabled = true;\n if (this.originalConsoleLog) {\n window.console = this.originalConsoleLog;\n }\n }\n\n /**\n * Add message with log level to logs.\n * @param {*} message\n * @param {*} logLevel\n * @returns\n */\n addLog(message, logLevel = \"INFO\") {\n if (!message || message.length <= 0) {\n return;\n }\n\n this.logArray.push({\n log: truncateString(message, 1000),\n date: new Date(),\n priority: logLevel,\n });\n\n if (this.logArray.length > this.logMaxLength) {\n this.logArray.shift();\n }\n }\n\n /**\n * Add entry to logs.\n * @param {*} args\n * @param {*} logLevel\n * @returns\n */\n addLogWithArgs(args, logLevel) {\n if (!args || args.length <= 0) {\n return;\n }\n\n var log = \"\";\n try {\n for (var i = 0; i < args.length; i++) {\n log += args[i] + \" \";\n }\n } catch (exp) {}\n\n this.addLog(log, logLevel);\n }\n\n /**\n * Start console log overwrite.\n */\n start() {\n if (this.disabled) {\n return;\n }\n\n const self = this;\n window.console = (function (origConsole) {\n if (!window.console || !origConsole) {\n origConsole = {};\n }\n\n self.originalConsoleLog = origConsole;\n\n return {\n ...origConsole,\n log: function () {\n self.addLogWithArgs(arguments, \"INFO\");\n origConsole.log && origConsole.log.apply(origConsole, arguments);\n },\n warn: function () {\n self.addLogWithArgs(arguments, \"WARNING\");\n origConsole.warn && origConsole.warn.apply(origConsole, arguments);\n },\n error: function () {\n self.addLogWithArgs(arguments, \"ERROR\");\n origConsole.error && origConsole.error.apply(origConsole, arguments);\n },\n info: function (v) {\n self.addLogWithArgs(arguments, \"INFO\");\n origConsole.info && origConsole.info.apply(origConsole, arguments);\n },\n };\n })(window.console);\n }\n}\n","import { GleapConsoleLogManager, GleapFrameManager, handleGleapLink } from \"./Gleap\";\nimport { getDOMElementDescription } from \"./GleapHelper\";\n\nexport default class GleapClickListener {\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapClickListener();\n }\n return this.instance;\n }\n\n start() {\n document.addEventListener(\"click\", (e) => {\n if (!e.target) {\n return;\n }\n\n if (e.target.tagName === 'A' && e.target.protocol === 'gleap:') {\n e.preventDefault();\n\n const href = e.target.href;\n handleGleapLink(href);\n }\n\n if (!GleapFrameManager.getInstance().isOpened()) {\n GleapConsoleLogManager.getInstance().addLog(\n getDOMElementDescription(e.target),\n \"CLICK\"\n );\n }\n });\n }\n}\n","import { gleapDataParser } from \"./GleapHelper\";\n\nexport default class GleapCustomDataManager {\n customData = {};\n ticketAttributes = {};\n\n // GleapCustomDataManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapCustomDataManager();\n }\n return this.instance;\n }\n\n /**\n * Returns the custom data object\n * @returns {*}\n */\n getCustomData() {\n return this.customData;\n }\n\n /**\n * Set custom data that will be attached to the bug-report.\n * @param {*} data\n */\n attachCustomData(data) {\n this.customData = Object.assign(\n this.customData,\n gleapDataParser(data)\n );\n }\n\n /**\n * Add one key value pair to the custom data object\n * @param {*} key The key of the custom data entry you want to add.\n * @param {*} value The custom data you want to add.\n */\n setCustomData(key, value) {\n this.customData[key] = value;\n }\n\n /**\n * Remove one key value pair of the custom data object\n * @param {*} key The key of the custom data entry you want to remove.\n */\n removeCustomData(key) {\n delete this.customData[key];\n }\n\n /**\n * Clear the custom data\n */\n clearCustomData() {\n this.customData = {};\n }\n\n /**\n * This method is used to set ticket attributes programmatically.\n * @param {*} key The key of the attribute you want to add.\n * @param {*} value The value to set.\n */\n setTicketAttribute(key, value) {\n this.ticketAttributes[key] = value;\n }\n\n /**\n * This method is used to unset ticket attributes programmatically.\n * @param {*} key The key of the attribute you want to unset.\n */\n unsetTicketAttribute(key) {\n delete this.ticketAttributes[key];\n }\n\n /**\n * This method is used to clear ticket attributes programmatically.\n */\n clearTicketAttributes() {\n this.ticketAttributes = {};\n }\n\n getTicketAttributes() {\n return this.ticketAttributes;\n }\n}\n","import Gleap from \"./Gleap\";\n\nexport default class GleapEventManager {\n eventListeners = {};\n\n // GleapEventManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapEventManager();\n }\n return this.instance;\n }\n\n /**\n * Notify all registrants for event.\n */\n static notifyEvent(event, data = {}) {\n if (event === \"flow-started\") {\n\n const gleapInstance = Gleap.getInstance();\n gleapInstance.setGlobalDataItem(\"webReplay\", null);\n gleapInstance.setGlobalDataItem(\"screenRecordingData\", null);\n gleapInstance.takeCurrentReplay();\n }\n\n const eventListeners = this.getInstance().eventListeners[event];\n if (eventListeners) {\n for (var i = 0; i < eventListeners.length; i++) {\n const eventListener = eventListeners[i];\n if (eventListener) {\n eventListener(data);\n }\n }\n }\n }\n\n /**\n * Register events for Gleap.\n * @param {*} eventName\n * @param {*} callback\n */\n static on(eventName, callback) {\n const instance = this.getInstance();\n if (!instance.eventListeners[eventName]) {\n instance.eventListeners[eventName] = [];\n }\n instance.eventListeners[eventName].push(callback);\n }\n}\n","export default class GleapCustomActionManager {\n customActionCallbacks = [];\n\n // GleapCustomActionManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapCustomActionManager();\n }\n return this.instance;\n }\n\n /**\n * Register custom action\n */\n static registerCustomAction(customAction) {\n const instance = this.getInstance();\n if (instance.customActionCallbacks) {\n instance.customActionCallbacks.push(customAction);\n }\n }\n\n /**\n * Triggers a custom action\n */\n static triggerCustomAction(name, data) {\n const instance = this.getInstance();\n if (instance.customActionCallbacks) {\n for (var i = 0; i < instance.customActionCallbacks.length; i++) {\n var callback = instance.customActionCallbacks[i];\n if (callback) {\n callback({\n name,\n ...(data ? data : {}),\n });\n }\n }\n }\n }\n}\n","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar _a;\nvar __defProp$1 = Object.defineProperty;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$1 = (obj, key, value) => __defNormalProp$1(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar NodeType$3 = /* @__PURE__ */ ((NodeType2) => {\n NodeType2[NodeType2[\"Document\"] = 0] = \"Document\";\n NodeType2[NodeType2[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType2[NodeType2[\"Element\"] = 2] = \"Element\";\n NodeType2[NodeType2[\"Text\"] = 3] = \"Text\";\n NodeType2[NodeType2[\"CDATA\"] = 4] = \"CDATA\";\n NodeType2[NodeType2[\"Comment\"] = 5] = \"Comment\";\n return NodeType2;\n})(NodeType$3 || {});\nconst testableAccessors$1 = {\n Node: [\"childNodes\", \"parentNode\", \"parentElement\", \"textContent\"],\n ShadowRoot: [\"host\", \"styleSheets\"],\n Element: [\"shadowRoot\", \"querySelector\", \"querySelectorAll\"],\n MutationObserver: []\n};\nconst testableMethods$1 = {\n Node: [\"contains\", \"getRootNode\"],\n ShadowRoot: [\"getSelection\"],\n Element: [],\n MutationObserver: [\"constructor\"]\n};\nconst untaintedBasePrototype$1 = {};\nconst isAngularZonePresent$1 = () => {\n return !!globalThis.Zone;\n};\nfunction getUntaintedPrototype$1(key) {\n if (untaintedBasePrototype$1[key])\n return untaintedBasePrototype$1[key];\n const defaultObj = globalThis[key];\n const defaultPrototype = defaultObj.prototype;\n const accessorNames = key in testableAccessors$1 ? testableAccessors$1[key] : void 0;\n const isUntaintedAccessors = Boolean(\n accessorNames && // @ts-expect-error 2345\n accessorNames.every(\n (accessor) => {\n var _a2, _b;\n return Boolean(\n (_b = (_a2 = Object.getOwnPropertyDescriptor(defaultPrototype, accessor)) == null ? void 0 : _a2.get) == null ? void 0 : _b.toString().includes(\"[native code]\")\n );\n }\n )\n );\n const methodNames = key in testableMethods$1 ? testableMethods$1[key] : void 0;\n const isUntaintedMethods = Boolean(\n methodNames && methodNames.every(\n // @ts-expect-error 2345\n (method) => {\n var _a2;\n return typeof defaultPrototype[method] === \"function\" && ((_a2 = defaultPrototype[method]) == null ? void 0 : _a2.toString().includes(\"[native code]\"));\n }\n )\n );\n if (isUntaintedAccessors && isUntaintedMethods && !isAngularZonePresent$1()) {\n untaintedBasePrototype$1[key] = defaultObj.prototype;\n return defaultObj.prototype;\n }\n try {\n const iframeEl = document.createElement(\"iframe\");\n document.body.appendChild(iframeEl);\n const win = iframeEl.contentWindow;\n if (!win) return defaultObj.prototype;\n const untaintedObject = win[key].prototype;\n document.body.removeChild(iframeEl);\n if (!untaintedObject) return defaultPrototype;\n return untaintedBasePrototype$1[key] = untaintedObject;\n } catch {\n return defaultPrototype;\n }\n}\nconst untaintedAccessorCache$1 = {};\nfunction getUntaintedAccessor$1(key, instance, accessor) {\n var _a2;\n const cacheKey = `${key}.${String(accessor)}`;\n if (untaintedAccessorCache$1[cacheKey])\n return untaintedAccessorCache$1[cacheKey].call(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype$1(key);\n const untaintedAccessor = (_a2 = Object.getOwnPropertyDescriptor(\n untaintedPrototype,\n accessor\n )) == null ? void 0 : _a2.get;\n if (!untaintedAccessor) return instance[accessor];\n untaintedAccessorCache$1[cacheKey] = untaintedAccessor;\n return untaintedAccessor.call(instance);\n}\nconst untaintedMethodCache$1 = {};\nfunction getUntaintedMethod$1(key, instance, method) {\n const cacheKey = `${key}.${String(method)}`;\n if (untaintedMethodCache$1[cacheKey])\n return untaintedMethodCache$1[cacheKey].bind(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype$1(key);\n const untaintedMethod = untaintedPrototype[method];\n if (typeof untaintedMethod !== \"function\") return instance[method];\n untaintedMethodCache$1[cacheKey] = untaintedMethod;\n return untaintedMethod.bind(instance);\n}\nfunction childNodes$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"childNodes\");\n}\nfunction parentNode$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"parentNode\");\n}\nfunction parentElement$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"parentElement\");\n}\nfunction textContent$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"textContent\");\n}\nfunction contains$1(n2, other) {\n return getUntaintedMethod$1(\"Node\", n2, \"contains\")(other);\n}\nfunction getRootNode$1(n2) {\n return getUntaintedMethod$1(\"Node\", n2, \"getRootNode\")();\n}\nfunction host$1(n2) {\n if (!n2 || !(\"host\" in n2)) return null;\n return getUntaintedAccessor$1(\"ShadowRoot\", n2, \"host\");\n}\nfunction styleSheets$1(n2) {\n return n2.styleSheets;\n}\nfunction shadowRoot$1(n2) {\n if (!n2 || !(\"shadowRoot\" in n2)) return null;\n return getUntaintedAccessor$1(\"Element\", n2, \"shadowRoot\");\n}\nfunction querySelector$1(n2, selectors) {\n return getUntaintedAccessor$1(\"Element\", n2, \"querySelector\")(selectors);\n}\nfunction querySelectorAll$1(n2, selectors) {\n return getUntaintedAccessor$1(\"Element\", n2, \"querySelectorAll\")(selectors);\n}\nfunction mutationObserverCtor$1() {\n return getUntaintedPrototype$1(\"MutationObserver\").constructor;\n}\nconst index$1 = {\n childNodes: childNodes$1,\n parentNode: parentNode$1,\n parentElement: parentElement$1,\n textContent: textContent$1,\n contains: contains$1,\n getRootNode: getRootNode$1,\n host: host$1,\n styleSheets: styleSheets$1,\n shadowRoot: shadowRoot$1,\n querySelector: querySelector$1,\n querySelectorAll: querySelectorAll$1,\n mutationObserver: mutationObserverCtor$1\n};\nfunction isElement(n2) {\n return n2.nodeType === n2.ELEMENT_NODE;\n}\nfunction isShadowRoot(n2) {\n const hostEl = (\n // anchor and textarea elements also have a `host` property\n // but only shadow roots have a `mode` property\n n2 && \"host\" in n2 && \"mode\" in n2 && index$1.host(n2) || null\n );\n return Boolean(\n hostEl && \"shadowRoot\" in hostEl && index$1.shadowRoot(hostEl) === n2\n );\n}\nfunction isNativeShadowDom(shadowRoot2) {\n return Object.prototype.toString.call(shadowRoot2) === \"[object ShadowRoot]\";\n}\nfunction fixBrowserCompatibilityIssuesInCSS(cssText) {\n if (cssText.includes(\" background-clip: text;\") && !cssText.includes(\" -webkit-background-clip: text;\")) {\n cssText = cssText.replace(\n /\\sbackground-clip:\\s*text;/g,\n \" -webkit-background-clip: text; background-clip: text;\"\n );\n }\n return cssText;\n}\nfunction escapeImportStatement(rule2) {\n const { cssText } = rule2;\n if (cssText.split('\"').length < 3) return cssText;\n const statement = [\"@import\", `url(${JSON.stringify(rule2.href)})`];\n if (rule2.layerName === \"\") {\n statement.push(`layer`);\n } else if (rule2.layerName) {\n statement.push(`layer(${rule2.layerName})`);\n }\n if (rule2.supportsText) {\n statement.push(`supports(${rule2.supportsText})`);\n }\n if (rule2.media.length) {\n statement.push(rule2.media.mediaText);\n }\n return statement.join(\" \") + \";\";\n}\nfunction stringifyStylesheet(s2) {\n try {\n const rules2 = s2.rules || s2.cssRules;\n if (!rules2) {\n return null;\n }\n let sheetHref = s2.href;\n if (!sheetHref && s2.ownerNode && s2.ownerNode.ownerDocument) {\n sheetHref = s2.ownerNode.ownerDocument.location.href;\n }\n const stringifiedRules = Array.from(\n rules2,\n (rule2) => stringifyRule(rule2, sheetHref)\n ).join(\"\");\n return fixBrowserCompatibilityIssuesInCSS(stringifiedRules);\n } catch (error) {\n return null;\n }\n}\nfunction stringifyRule(rule2, sheetHref) {\n if (isCSSImportRule(rule2)) {\n let importStringified;\n try {\n importStringified = // for same-origin stylesheets,\n // we can access the imported stylesheet rules directly\n stringifyStylesheet(rule2.styleSheet) || // work around browser issues with the raw string `@import url(...)` statement\n escapeImportStatement(rule2);\n } catch (error) {\n importStringified = rule2.cssText;\n }\n if (rule2.styleSheet.href) {\n return absolutifyURLs(importStringified, rule2.styleSheet.href);\n }\n return importStringified;\n } else {\n let ruleStringified = rule2.cssText;\n if (isCSSStyleRule(rule2) && rule2.selectorText.includes(\":\")) {\n ruleStringified = fixSafariColons(ruleStringified);\n }\n if (sheetHref) {\n return absolutifyURLs(ruleStringified, sheetHref);\n }\n return ruleStringified;\n }\n}\nfunction fixSafariColons(cssStringified) {\n const regex = /(\\[(?:[\\w-]+)[^\\\\])(:(?:[\\w-]+)\\])/gm;\n return cssStringified.replace(regex, \"$1\\\\$2\");\n}\nfunction isCSSImportRule(rule2) {\n return \"styleSheet\" in rule2;\n}\nfunction isCSSStyleRule(rule2) {\n return \"selectorText\" in rule2;\n}\nclass Mirror {\n constructor() {\n __publicField$1(this, \"idNodeMap\", /* @__PURE__ */ new Map());\n __publicField$1(this, \"nodeMetaMap\", /* @__PURE__ */ new WeakMap());\n }\n getId(n2) {\n var _a2;\n if (!n2) return -1;\n const id = (_a2 = this.getMeta(n2)) == null ? void 0 : _a2.id;\n return id ?? -1;\n }\n getNode(id) {\n return this.idNodeMap.get(id) || null;\n }\n getIds() {\n return Array.from(this.idNodeMap.keys());\n }\n getMeta(n2) {\n return this.nodeMetaMap.get(n2) || null;\n }\n // removes the node from idNodeMap\n // doesn't remove the node from nodeMetaMap\n removeNodeFromMap(n2) {\n const id = this.getId(n2);\n this.idNodeMap.delete(id);\n if (n2.childNodes) {\n n2.childNodes.forEach(\n (childNode) => this.removeNodeFromMap(childNode)\n );\n }\n }\n has(id) {\n return this.idNodeMap.has(id);\n }\n hasNode(node2) {\n return this.nodeMetaMap.has(node2);\n }\n add(n2, meta) {\n const id = meta.id;\n this.idNodeMap.set(id, n2);\n this.nodeMetaMap.set(n2, meta);\n }\n replace(id, n2) {\n const oldNode = this.getNode(id);\n if (oldNode) {\n const meta = this.nodeMetaMap.get(oldNode);\n if (meta) this.nodeMetaMap.set(n2, meta);\n }\n this.idNodeMap.set(id, n2);\n }\n reset() {\n this.idNodeMap = /* @__PURE__ */ new Map();\n this.nodeMetaMap = /* @__PURE__ */ new WeakMap();\n }\n}\nfunction createMirror$2() {\n return new Mirror();\n}\nfunction maskInputValue({\n element,\n maskInputOptions,\n tagName,\n type,\n value,\n maskInputFn\n}) {\n let text = value || \"\";\n const actualType = type && toLowerCase(type);\n if (maskInputOptions[tagName.toLowerCase()] || actualType && maskInputOptions[actualType]) {\n if (maskInputFn) {\n text = maskInputFn(text, element);\n } else {\n text = \"*\".repeat(text.length);\n }\n }\n return text;\n}\nfunction toLowerCase(str) {\n return str.toLowerCase();\n}\nconst ORIGINAL_ATTRIBUTE_NAME = \"__rrweb_original__\";\nfunction is2DCanvasBlank(canvas) {\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) return true;\n const chunkSize = 50;\n for (let x2 = 0; x2 < canvas.width; x2 += chunkSize) {\n for (let y = 0; y < canvas.height; y += chunkSize) {\n const getImageData = ctx.getImageData;\n const originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData ? getImageData[ORIGINAL_ATTRIBUTE_NAME] : getImageData;\n const pixelBuffer = new Uint32Array(\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n originalGetImageData.call(\n ctx,\n x2,\n y,\n Math.min(chunkSize, canvas.width - x2),\n Math.min(chunkSize, canvas.height - y)\n ).data.buffer\n );\n if (pixelBuffer.some((pixel) => pixel !== 0)) return false;\n }\n }\n return true;\n}\nfunction getInputType(element) {\n const type = element.type;\n return element.hasAttribute(\"data-rr-is-password\") ? \"password\" : type ? (\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n toLowerCase(type)\n ) : null;\n}\nfunction extractFileExtension(path, baseURL) {\n let url;\n try {\n url = new URL(path, baseURL ?? window.location.href);\n } catch (err) {\n return null;\n }\n const regex = /\\.([0-9a-z]+)(?:$)/i;\n const match = url.pathname.match(regex);\n return (match == null ? void 0 : match[1]) ?? null;\n}\nfunction extractOrigin(url) {\n let origin = \"\";\n if (url.indexOf(\"//\") > -1) {\n origin = url.split(\"/\").slice(0, 3).join(\"/\");\n } else {\n origin = url.split(\"/\")[0];\n }\n origin = origin.split(\"?\")[0];\n return origin;\n}\nconst URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\nconst URL_PROTOCOL_MATCH = /^(?:[a-z+]+:)?\\/\\//i;\nconst URL_WWW_MATCH = /^www\\..*/i;\nconst DATA_URI = /^(data:)([^,]*),(.*)/i;\nfunction absolutifyURLs(cssText, href) {\n return (cssText || \"\").replace(\n URL_IN_CSS_REF,\n (origin, quote1, path1, quote2, path2, path3) => {\n const filePath = path1 || path2 || path3;\n const maybeQuote = quote1 || quote2 || \"\";\n if (!filePath) {\n return origin;\n }\n if (URL_PROTOCOL_MATCH.test(filePath) || URL_WWW_MATCH.test(filePath)) {\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\n }\n if (DATA_URI.test(filePath)) {\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\n }\n if (filePath[0] === \"/\") {\n return `url(${maybeQuote}${extractOrigin(href) + filePath}${maybeQuote})`;\n }\n const stack = href.split(\"/\");\n const parts = filePath.split(\"/\");\n stack.pop();\n for (const part of parts) {\n if (part === \".\") {\n continue;\n } else if (part === \"..\") {\n stack.pop();\n } else {\n stack.push(part);\n }\n }\n return `url(${maybeQuote}${stack.join(\"/\")}${maybeQuote})`;\n }\n );\n}\nfunction normalizeCssString(cssText) {\n return cssText.replace(/(\\/\\*[^*]*\\*\\/)|[\\s;]/g, \"\");\n}\nfunction splitCssText(cssText, style) {\n const childNodes2 = Array.from(style.childNodes);\n const splits = [];\n if (childNodes2.length > 1 && cssText && typeof cssText === \"string\") {\n const cssTextNorm = normalizeCssString(cssText);\n for (let i2 = 1; i2 < childNodes2.length; i2++) {\n if (childNodes2[i2].textContent && typeof childNodes2[i2].textContent === \"string\") {\n const textContentNorm = normalizeCssString(childNodes2[i2].textContent);\n for (let j = 3; j < textContentNorm.length; j++) {\n const bit = textContentNorm.substring(0, j);\n if (cssTextNorm.split(bit).length === 2) {\n const splitNorm = cssTextNorm.indexOf(bit);\n for (let k = splitNorm; k < cssText.length; k++) {\n if (normalizeCssString(cssText.substring(0, k)).length === splitNorm) {\n splits.push(cssText.substring(0, k));\n cssText = cssText.substring(k);\n break;\n }\n }\n break;\n }\n }\n }\n }\n }\n splits.push(cssText);\n return splits;\n}\nfunction markCssSplits(cssText, style) {\n return splitCssText(cssText, style).join(\"/* rr_split */\");\n}\nlet _id = 1;\nconst tagNameRegex = new RegExp(\"[^a-z0-9-_:]\");\nconst IGNORED_NODE = -2;\nfunction genId() {\n return _id++;\n}\nfunction getValidTagName$1(element) {\n if (element instanceof HTMLFormElement) {\n return \"form\";\n }\n const processedTagName = toLowerCase(element.tagName);\n if (tagNameRegex.test(processedTagName)) {\n return \"div\";\n }\n return processedTagName;\n}\nlet canvasService;\nlet canvasCtx;\nconst SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\nconst SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\n if (attributeValue.trim() === \"\") {\n return attributeValue;\n }\n let pos = 0;\n function collectCharacters(regEx) {\n let chars2;\n const match = regEx.exec(attributeValue.substring(pos));\n if (match) {\n chars2 = match[0];\n pos += chars2.length;\n return chars2;\n }\n return \"\";\n }\n const output = [];\n while (true) {\n collectCharacters(SRCSET_COMMAS_OR_SPACES);\n if (pos >= attributeValue.length) {\n break;\n }\n let url = collectCharacters(SRCSET_NOT_SPACES);\n if (url.slice(-1) === \",\") {\n url = absoluteToDoc(doc, url.substring(0, url.length - 1));\n output.push(url);\n } else {\n let descriptorsStr = \"\";\n url = absoluteToDoc(doc, url);\n let inParens = false;\n while (true) {\n const c2 = attributeValue.charAt(pos);\n if (c2 === \"\") {\n output.push((url + descriptorsStr).trim());\n break;\n } else if (!inParens) {\n if (c2 === \",\") {\n pos += 1;\n output.push((url + descriptorsStr).trim());\n break;\n } else if (c2 === \"(\") {\n inParens = true;\n }\n } else {\n if (c2 === \")\") {\n inParens = false;\n }\n }\n descriptorsStr += c2;\n pos += 1;\n }\n }\n }\n return output.join(\", \");\n}\nconst cachedDocument = /* @__PURE__ */ new WeakMap();\nfunction absoluteToDoc(doc, attributeValue) {\n if (!attributeValue || attributeValue.trim() === \"\") {\n return attributeValue;\n }\n return getHref(doc, attributeValue);\n}\nfunction isSVGElement(el) {\n return Boolean(el.tagName === \"svg\" || el.ownerSVGElement);\n}\nfunction getHref(doc, customHref) {\n let a2 = cachedDocument.get(doc);\n if (!a2) {\n a2 = doc.createElement(\"a\");\n cachedDocument.set(doc, a2);\n }\n if (!customHref) {\n customHref = \"\";\n } else if (customHref.startsWith(\"blob:\") || customHref.startsWith(\"data:\")) {\n return customHref;\n }\n a2.setAttribute(\"href\", customHref);\n return a2.href;\n}\nfunction transformAttribute(doc, tagName, name, value) {\n if (!value) {\n return value;\n }\n if (name === \"src\" || name === \"href\" && !(tagName === \"use\" && value[0] === \"#\")) {\n return absoluteToDoc(doc, value);\n } else if (name === \"xlink:href\" && value[0] !== \"#\") {\n return absoluteToDoc(doc, value);\n } else if (name === \"background\" && (tagName === \"table\" || tagName === \"td\" || tagName === \"th\")) {\n return absoluteToDoc(doc, value);\n } else if (name === \"srcset\") {\n return getAbsoluteSrcsetString(doc, value);\n } else if (name === \"style\") {\n return absolutifyURLs(value, getHref(doc));\n } else if (tagName === \"object\" && name === \"data\") {\n return absoluteToDoc(doc, value);\n }\n return value;\n}\nfunction ignoreAttribute(tagName, name, _value) {\n return (tagName === \"video\" || tagName === \"audio\") && name === \"autoplay\";\n}\nfunction _isBlockedElement(element, blockClass, blockSelector) {\n try {\n if (typeof blockClass === \"string\") {\n if (element.classList.contains(blockClass)) {\n return true;\n }\n } else {\n for (let eIndex = element.classList.length; eIndex--; ) {\n const className = element.classList[eIndex];\n if (blockClass.test(className)) {\n return true;\n }\n }\n }\n if (blockSelector) {\n return element.matches(blockSelector);\n }\n } catch (e2) {\n }\n return false;\n}\nfunction classMatchesRegex(node2, regex, checkAncestors) {\n if (!node2) return false;\n if (node2.nodeType !== node2.ELEMENT_NODE) {\n if (!checkAncestors) return false;\n return classMatchesRegex(index$1.parentNode(node2), regex, checkAncestors);\n }\n for (let eIndex = node2.classList.length; eIndex--; ) {\n const className = node2.classList[eIndex];\n if (regex.test(className)) {\n return true;\n }\n }\n if (!checkAncestors) return false;\n return classMatchesRegex(index$1.parentNode(node2), regex, checkAncestors);\n}\nfunction needMaskingText(node2, maskTextClass, maskTextSelector, checkAncestors) {\n let el;\n if (isElement(node2)) {\n el = node2;\n if (!index$1.childNodes(el).length) {\n return false;\n }\n } else if (index$1.parentElement(node2) === null) {\n return false;\n } else {\n el = index$1.parentElement(node2);\n }\n try {\n if (typeof maskTextClass === \"string\") {\n if (checkAncestors) {\n if (el.closest(`.${maskTextClass}`)) return true;\n } else {\n if (el.classList.contains(maskTextClass)) return true;\n }\n } else {\n if (classMatchesRegex(el, maskTextClass, checkAncestors)) return true;\n }\n if (maskTextSelector) {\n if (checkAncestors) {\n if (el.closest(maskTextSelector)) return true;\n } else {\n if (el.matches(maskTextSelector)) return true;\n }\n }\n } catch (e2) {\n }\n return false;\n}\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\n const win = iframeEl.contentWindow;\n if (!win) {\n return;\n }\n let fired = false;\n let readyState;\n try {\n readyState = win.document.readyState;\n } catch (error) {\n return;\n }\n if (readyState !== \"complete\") {\n const timer = setTimeout(() => {\n if (!fired) {\n listener();\n fired = true;\n }\n }, iframeLoadTimeout);\n iframeEl.addEventListener(\"load\", () => {\n clearTimeout(timer);\n fired = true;\n listener();\n });\n return;\n }\n const blankUrl = \"about:blank\";\n if (win.location.href !== blankUrl || iframeEl.src === blankUrl || iframeEl.src === \"\") {\n setTimeout(listener, 0);\n return iframeEl.addEventListener(\"load\", listener);\n }\n iframeEl.addEventListener(\"load\", listener);\n}\nfunction onceStylesheetLoaded(link, listener, styleSheetLoadTimeout) {\n let fired = false;\n let styleSheetLoaded;\n try {\n styleSheetLoaded = link.sheet;\n } catch (error) {\n return;\n }\n if (styleSheetLoaded) return;\n const timer = setTimeout(() => {\n if (!fired) {\n listener();\n fired = true;\n }\n }, styleSheetLoadTimeout);\n link.addEventListener(\"load\", () => {\n clearTimeout(timer);\n fired = true;\n listener();\n });\n}\nfunction serializeNode(n2, options) {\n const {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n inlineStylesheet,\n maskInputOptions = {},\n maskTextFn,\n maskInputFn,\n dataURLOptions = {},\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement = false,\n cssCaptured = false\n } = options;\n const rootId = getRootId(doc, mirror2);\n switch (n2.nodeType) {\n case n2.DOCUMENT_NODE:\n if (n2.compatMode !== \"CSS1Compat\") {\n return {\n type: NodeType$3.Document,\n childNodes: [],\n compatMode: n2.compatMode\n // probably \"BackCompat\"\n };\n } else {\n return {\n type: NodeType$3.Document,\n childNodes: []\n };\n }\n case n2.DOCUMENT_TYPE_NODE:\n return {\n type: NodeType$3.DocumentType,\n name: n2.name,\n publicId: n2.publicId,\n systemId: n2.systemId,\n rootId\n };\n case n2.ELEMENT_NODE:\n return serializeElementNode(n2, {\n doc,\n blockClass,\n blockSelector,\n inlineStylesheet,\n maskInputOptions,\n maskInputFn,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement,\n rootId\n });\n case n2.TEXT_NODE:\n return serializeTextNode(n2, {\n doc,\n needsMask,\n maskTextFn,\n rootId,\n cssCaptured\n });\n case n2.CDATA_SECTION_NODE:\n return {\n type: NodeType$3.CDATA,\n textContent: \"\",\n rootId\n };\n case n2.COMMENT_NODE:\n return {\n type: NodeType$3.Comment,\n textContent: index$1.textContent(n2) || \"\",\n rootId\n };\n default:\n return false;\n }\n}\nfunction getRootId(doc, mirror2) {\n if (!mirror2.hasNode(doc)) return void 0;\n const docId = mirror2.getId(doc);\n return docId === 1 ? void 0 : docId;\n}\nfunction serializeTextNode(n2, options) {\n const { needsMask, maskTextFn, rootId, cssCaptured } = options;\n const parent = index$1.parentNode(n2);\n const parentTagName = parent && parent.tagName;\n let textContent2 = \"\";\n const isStyle = parentTagName === \"STYLE\" ? true : void 0;\n const isScript = parentTagName === \"SCRIPT\" ? true : void 0;\n if (isScript) {\n textContent2 = \"SCRIPT_PLACEHOLDER\";\n } else if (!cssCaptured) {\n textContent2 = index$1.textContent(n2);\n if (isStyle && textContent2) {\n textContent2 = absolutifyURLs(textContent2, getHref(options.doc));\n }\n }\n if (!isStyle && !isScript && textContent2 && needsMask) {\n textContent2 = maskTextFn ? maskTextFn(textContent2, index$1.parentElement(n2)) : textContent2.replace(/[\\S]/g, \"*\");\n }\n return {\n type: NodeType$3.Text,\n textContent: textContent2 || \"\",\n rootId\n };\n}\nfunction serializeElementNode(n2, options) {\n const {\n doc,\n blockClass,\n blockSelector,\n inlineStylesheet,\n maskInputOptions = {},\n maskInputFn,\n dataURLOptions = {},\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement = false,\n rootId\n } = options;\n const needBlock = _isBlockedElement(n2, blockClass, blockSelector);\n const tagName = getValidTagName$1(n2);\n let attributes = {};\n const len = n2.attributes.length;\n for (let i2 = 0; i2 < len; i2++) {\n const attr = n2.attributes[i2];\n if (!ignoreAttribute(tagName, attr.name, attr.value)) {\n attributes[attr.name] = transformAttribute(\n doc,\n tagName,\n toLowerCase(attr.name),\n attr.value\n );\n }\n }\n if (tagName === \"link\" && inlineStylesheet) {\n const stylesheet = Array.from(doc.styleSheets).find((s2) => {\n return s2.href === n2.href;\n });\n let cssText = null;\n if (stylesheet) {\n cssText = stringifyStylesheet(stylesheet);\n }\n if (cssText) {\n delete attributes.rel;\n delete attributes.href;\n attributes._cssText = cssText;\n }\n }\n if (tagName === \"style\" && n2.sheet) {\n let cssText = stringifyStylesheet(\n n2.sheet\n );\n if (cssText) {\n if (n2.childNodes.length > 1) {\n cssText = markCssSplits(cssText, n2);\n }\n attributes._cssText = cssText;\n }\n }\n if (tagName === \"input\" || tagName === \"textarea\" || tagName === \"select\") {\n const value = n2.value;\n const checked = n2.checked;\n if (attributes.type !== \"radio\" && attributes.type !== \"checkbox\" && attributes.type !== \"submit\" && attributes.type !== \"button\" && value) {\n attributes.value = maskInputValue({\n element: n2,\n type: getInputType(n2),\n tagName,\n value,\n maskInputOptions,\n maskInputFn\n });\n } else if (checked) {\n attributes.checked = checked;\n }\n }\n if (tagName === \"option\") {\n if (n2.selected && !maskInputOptions[\"select\"]) {\n attributes.selected = true;\n } else {\n delete attributes.selected;\n }\n }\n if (tagName === \"dialog\" && n2.open) {\n attributes.rr_open_mode = n2.matches(\"dialog:modal\") ? \"modal\" : \"non-modal\";\n }\n if (tagName === \"canvas\" && recordCanvas) {\n if (n2.__context === \"2d\") {\n if (!is2DCanvasBlank(n2)) {\n attributes.rr_dataURL = n2.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n }\n } else if (!(\"__context\" in n2)) {\n const canvasDataURL = n2.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n const blankCanvas = doc.createElement(\"canvas\");\n blankCanvas.width = n2.width;\n blankCanvas.height = n2.height;\n const blankCanvasDataURL = blankCanvas.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n if (canvasDataURL !== blankCanvasDataURL) {\n attributes.rr_dataURL = canvasDataURL;\n }\n }\n }\n if (tagName === \"img\" && inlineImages) {\n if (!canvasService) {\n canvasService = doc.createElement(\"canvas\");\n canvasCtx = canvasService.getContext(\"2d\");\n }\n const image = n2;\n const imageSrc = image.currentSrc || image.getAttribute(\"src\") || \"\";\n const priorCrossOrigin = image.crossOrigin;\n const recordInlineImage = () => {\n image.removeEventListener(\"load\", recordInlineImage);\n try {\n canvasService.width = image.naturalWidth;\n canvasService.height = image.naturalHeight;\n canvasCtx.drawImage(image, 0, 0);\n attributes.rr_dataURL = canvasService.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n } catch (err) {\n if (image.crossOrigin !== \"anonymous\") {\n image.crossOrigin = \"anonymous\";\n if (image.complete && image.naturalWidth !== 0)\n recordInlineImage();\n else image.addEventListener(\"load\", recordInlineImage);\n return;\n } else {\n console.warn(\n `Cannot inline img src=${imageSrc}! Error: ${err}`\n );\n }\n }\n if (image.crossOrigin === \"anonymous\") {\n priorCrossOrigin ? attributes.crossOrigin = priorCrossOrigin : image.removeAttribute(\"crossorigin\");\n }\n };\n if (image.complete && image.naturalWidth !== 0) recordInlineImage();\n else image.addEventListener(\"load\", recordInlineImage);\n }\n if (tagName === \"audio\" || tagName === \"video\") {\n const mediaAttributes = attributes;\n mediaAttributes.rr_mediaState = n2.paused ? \"paused\" : \"played\";\n mediaAttributes.rr_mediaCurrentTime = n2.currentTime;\n mediaAttributes.rr_mediaPlaybackRate = n2.playbackRate;\n mediaAttributes.rr_mediaMuted = n2.muted;\n mediaAttributes.rr_mediaLoop = n2.loop;\n mediaAttributes.rr_mediaVolume = n2.volume;\n }\n if (!newlyAddedElement) {\n if (n2.scrollLeft) {\n attributes.rr_scrollLeft = n2.scrollLeft;\n }\n if (n2.scrollTop) {\n attributes.rr_scrollTop = n2.scrollTop;\n }\n }\n if (needBlock) {\n const { width, height } = n2.getBoundingClientRect();\n attributes = {\n class: attributes.class,\n rr_width: `${width}px`,\n rr_height: `${height}px`\n };\n }\n if (tagName === \"iframe\" && !keepIframeSrcFn(attributes.src)) {\n if (!n2.contentDocument) {\n attributes.rr_src = attributes.src;\n }\n delete attributes.src;\n }\n let isCustomElement;\n try {\n if (customElements.get(tagName)) isCustomElement = true;\n } catch (e2) {\n }\n return {\n type: NodeType$3.Element,\n tagName,\n attributes,\n childNodes: [],\n isSVG: isSVGElement(n2) || void 0,\n needBlock,\n rootId,\n isCustom: isCustomElement\n };\n}\nfunction lowerIfExists(maybeAttr) {\n if (maybeAttr === void 0 || maybeAttr === null) {\n return \"\";\n } else {\n return maybeAttr.toLowerCase();\n }\n}\nfunction slimDOMExcluded(sn, slimDOMOptions) {\n if (slimDOMOptions.comment && sn.type === NodeType$3.Comment) {\n return true;\n } else if (sn.type === NodeType$3.Element) {\n if (slimDOMOptions.script && // script tag\n (sn.tagName === \"script\" || // (module)preload link\n sn.tagName === \"link\" && (sn.attributes.rel === \"preload\" || sn.attributes.rel === \"modulepreload\") && sn.attributes.as === \"script\" || // prefetch link\n sn.tagName === \"link\" && sn.attributes.rel === \"prefetch\" && typeof sn.attributes.href === \"string\" && extractFileExtension(sn.attributes.href) === \"js\")) {\n return true;\n } else if (slimDOMOptions.headFavicon && (sn.tagName === \"link\" && sn.attributes.rel === \"shortcut icon\" || sn.tagName === \"meta\" && (lowerIfExists(sn.attributes.name).match(\n /^msapplication-tile(image|color)$/\n ) || lowerIfExists(sn.attributes.name) === \"application-name\" || lowerIfExists(sn.attributes.rel) === \"icon\" || lowerIfExists(sn.attributes.rel) === \"apple-touch-icon\" || lowerIfExists(sn.attributes.rel) === \"shortcut icon\"))) {\n return true;\n } else if (sn.tagName === \"meta\") {\n if (slimDOMOptions.headMetaDescKeywords && lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\n return true;\n } else if (slimDOMOptions.headMetaSocial && (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) || // og = opengraph (facebook)\n lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) || lowerIfExists(sn.attributes.name) === \"pinterest\")) {\n return true;\n } else if (slimDOMOptions.headMetaRobots && (lowerIfExists(sn.attributes.name) === \"robots\" || lowerIfExists(sn.attributes.name) === \"googlebot\" || lowerIfExists(sn.attributes.name) === \"bingbot\")) {\n return true;\n } else if (slimDOMOptions.headMetaHttpEquiv && sn.attributes[\"http-equiv\"] !== void 0) {\n return true;\n } else if (slimDOMOptions.headMetaAuthorship && (lowerIfExists(sn.attributes.name) === \"author\" || lowerIfExists(sn.attributes.name) === \"generator\" || lowerIfExists(sn.attributes.name) === \"framework\" || lowerIfExists(sn.attributes.name) === \"publisher\" || lowerIfExists(sn.attributes.name) === \"progid\" || lowerIfExists(sn.attributes.property).match(/^article:/) || lowerIfExists(sn.attributes.property).match(/^product:/))) {\n return true;\n } else if (slimDOMOptions.headMetaVerification && (lowerIfExists(sn.attributes.name) === \"google-site-verification\" || lowerIfExists(sn.attributes.name) === \"yandex-verification\" || lowerIfExists(sn.attributes.name) === \"csrf-token\" || lowerIfExists(sn.attributes.name) === \"p:domain_verify\" || lowerIfExists(sn.attributes.name) === \"verify-v1\" || lowerIfExists(sn.attributes.name) === \"verification\" || lowerIfExists(sn.attributes.name) === \"shopify-checkout-api-token\")) {\n return true;\n }\n }\n }\n return false;\n}\nfunction serializeNodeWithId(n2, options) {\n const {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n skipChild = false,\n inlineStylesheet = true,\n maskInputOptions = {},\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions = {},\n inlineImages = false,\n recordCanvas = false,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout = 5e3,\n onStylesheetLoad,\n stylesheetLoadTimeout = 5e3,\n keepIframeSrcFn = () => false,\n newlyAddedElement = false,\n cssCaptured = false\n } = options;\n let { needsMask } = options;\n let { preserveWhiteSpace = true } = options;\n if (!needsMask) {\n const checkAncestors = needsMask === void 0;\n needsMask = needMaskingText(\n n2,\n maskTextClass,\n maskTextSelector,\n checkAncestors\n );\n }\n const _serializedNode = serializeNode(n2, {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement,\n cssCaptured\n });\n if (!_serializedNode) {\n console.warn(n2, \"not serialized\");\n return null;\n }\n let id;\n if (mirror2.hasNode(n2)) {\n id = mirror2.getId(n2);\n } else if (slimDOMExcluded(_serializedNode, slimDOMOptions) || !preserveWhiteSpace && _serializedNode.type === NodeType$3.Text && !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, \"\").length) {\n id = IGNORED_NODE;\n } else {\n id = genId();\n }\n const serializedNode = Object.assign(_serializedNode, { id });\n mirror2.add(n2, serializedNode);\n if (id === IGNORED_NODE) {\n return null;\n }\n if (onSerialize) {\n onSerialize(n2);\n }\n let recordChild = !skipChild;\n if (serializedNode.type === NodeType$3.Element) {\n recordChild = recordChild && !serializedNode.needBlock;\n delete serializedNode.needBlock;\n const shadowRootEl = index$1.shadowRoot(n2);\n if (shadowRootEl && isNativeShadowDom(shadowRootEl))\n serializedNode.isShadowHost = true;\n }\n if ((serializedNode.type === NodeType$3.Document || serializedNode.type === NodeType$3.Element) && recordChild) {\n if (slimDOMOptions.headWhitespace && serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"head\") {\n preserveWhiteSpace = false;\n }\n const bypassOptions = {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n skipChild,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn,\n cssCaptured: false\n };\n if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"textarea\" && serializedNode.attributes.value !== void 0) ;\n else {\n if (serializedNode.type === NodeType$3.Element && serializedNode.attributes._cssText !== void 0 && typeof serializedNode.attributes._cssText === \"string\") {\n bypassOptions.cssCaptured = true;\n }\n for (const childN of Array.from(index$1.childNodes(n2))) {\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n }\n let shadowRootEl = null;\n if (isElement(n2) && (shadowRootEl = index$1.shadowRoot(n2))) {\n for (const childN of Array.from(index$1.childNodes(shadowRootEl))) {\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n isNativeShadowDom(shadowRootEl) && (serializedChildNode.isShadow = true);\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n }\n }\n const parent = index$1.parentNode(n2);\n if (parent && isShadowRoot(parent) && isNativeShadowDom(parent)) {\n serializedNode.isShadow = true;\n }\n if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"iframe\") {\n onceIframeLoaded(\n n2,\n () => {\n const iframeDoc = n2.contentDocument;\n if (iframeDoc && onIframeLoad) {\n const serializedIframeNode = serializeNodeWithId(iframeDoc, {\n doc: iframeDoc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn\n });\n if (serializedIframeNode) {\n onIframeLoad(\n n2,\n serializedIframeNode\n );\n }\n }\n },\n iframeLoadTimeout\n );\n }\n if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"link\" && typeof serializedNode.attributes.rel === \"string\" && (serializedNode.attributes.rel === \"stylesheet\" || serializedNode.attributes.rel === \"preload\" && typeof serializedNode.attributes.href === \"string\" && extractFileExtension(serializedNode.attributes.href) === \"css\")) {\n onceStylesheetLoaded(\n n2,\n () => {\n if (onStylesheetLoad) {\n const serializedLinkNode = serializeNodeWithId(n2, {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn\n });\n if (serializedLinkNode) {\n onStylesheetLoad(\n n2,\n serializedLinkNode\n );\n }\n }\n },\n stylesheetLoadTimeout\n );\n }\n return serializedNode;\n}\nfunction snapshot(n2, options) {\n const {\n mirror: mirror2 = new Mirror(),\n blockClass = \"rr-block\",\n blockSelector = null,\n maskTextClass = \"rr-mask\",\n maskTextSelector = null,\n inlineStylesheet = true,\n inlineImages = false,\n recordCanvas = false,\n maskAllInputs = false,\n maskTextFn,\n maskInputFn,\n slimDOM = false,\n dataURLOptions,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn = () => false\n } = options || {};\n const maskInputOptions = maskAllInputs === true ? {\n color: true,\n date: true,\n \"datetime-local\": true,\n email: true,\n month: true,\n number: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true,\n textarea: true,\n select: true,\n password: true\n } : maskAllInputs === false ? {\n password: true\n } : maskAllInputs;\n const slimDOMOptions = slimDOM === true || slimDOM === \"all\" ? (\n // if true: set of sensible options that should not throw away any information\n {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaDescKeywords: slimDOM === \"all\",\n // destructive\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaAuthorship: true,\n headMetaVerification: true\n }\n ) : slimDOM === false ? {} : slimDOM;\n return serializeNodeWithId(n2, {\n doc: n2,\n mirror: mirror2,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn,\n newlyAddedElement: false\n });\n}\nfunction getDefaultExportFromCjs$1(x2) {\n return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, \"default\") ? x2[\"default\"] : x2;\n}\nfunction getAugmentedNamespace$1(n2) {\n if (n2.__esModule) return n2;\n var f2 = n2.default;\n if (typeof f2 == \"function\") {\n var a2 = function a22() {\n if (this instanceof a22) {\n return Reflect.construct(f2, arguments, this.constructor);\n }\n return f2.apply(this, arguments);\n };\n a2.prototype = f2.prototype;\n } else a2 = {};\n Object.defineProperty(a2, \"__esModule\", { value: true });\n Object.keys(n2).forEach(function(k) {\n var d = Object.getOwnPropertyDescriptor(n2, k);\n Object.defineProperty(a2, k, d.get ? d : {\n enumerable: true,\n get: function() {\n return n2[k];\n }\n });\n });\n return a2;\n}\nvar picocolors_browser$1 = { exports: {} };\nvar x$1 = String;\nvar create$1 = function() {\n return { isColorSupported: false, reset: x$1, bold: x$1, dim: x$1, italic: x$1, underline: x$1, inverse: x$1, hidden: x$1, strikethrough: x$1, black: x$1, red: x$1, green: x$1, yellow: x$1, blue: x$1, magenta: x$1, cyan: x$1, white: x$1, gray: x$1, bgBlack: x$1, bgRed: x$1, bgGreen: x$1, bgYellow: x$1, bgBlue: x$1, bgMagenta: x$1, bgCyan: x$1, bgWhite: x$1 };\n};\npicocolors_browser$1.exports = create$1();\npicocolors_browser$1.exports.createColors = create$1;\nvar picocolors_browserExports$1 = picocolors_browser$1.exports;\nconst __viteBrowserExternal$2 = {};\nconst __viteBrowserExternal$1$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: __viteBrowserExternal$2\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst require$$2$1 = /* @__PURE__ */ getAugmentedNamespace$1(__viteBrowserExternal$1$1);\nlet pico$1 = picocolors_browserExports$1;\nlet terminalHighlight$1$1 = require$$2$1;\nlet CssSyntaxError$3$1 = class CssSyntaxError extends Error {\n constructor(message, line, column, source, file, plugin22) {\n super(message);\n this.name = \"CssSyntaxError\";\n this.reason = message;\n if (file) {\n this.file = file;\n }\n if (source) {\n this.source = source;\n }\n if (plugin22) {\n this.plugin = plugin22;\n }\n if (typeof line !== \"undefined\" && typeof column !== \"undefined\") {\n if (typeof line === \"number\") {\n this.line = line;\n this.column = column;\n } else {\n this.line = line.line;\n this.column = line.column;\n this.endLine = column.line;\n this.endColumn = column.column;\n }\n }\n this.setMessage();\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, CssSyntaxError);\n }\n }\n setMessage() {\n this.message = this.plugin ? this.plugin + \": \" : \"\";\n this.message += this.file ? this.file : \"\";\n if (typeof this.line !== \"undefined\") {\n this.message += \":\" + this.line + \":\" + this.column;\n }\n this.message += \": \" + this.reason;\n }\n showSourceCode(color) {\n if (!this.source) return \"\";\n let css = this.source;\n if (color == null) color = pico$1.isColorSupported;\n if (terminalHighlight$1$1) {\n if (color) css = terminalHighlight$1$1(css);\n }\n let lines = css.split(/\\r?\\n/);\n let start = Math.max(this.line - 3, 0);\n let end = Math.min(this.line + 2, lines.length);\n let maxWidth = String(end).length;\n let mark, aside;\n if (color) {\n let { bold, gray, red } = pico$1.createColors(true);\n mark = (text) => bold(red(text));\n aside = (text) => gray(text);\n } else {\n mark = aside = (str) => str;\n }\n return lines.slice(start, end).map((line, index2) => {\n let number = start + 1 + index2;\n let gutter = \" \" + (\" \" + number).slice(-maxWidth) + \" | \";\n if (number === this.line) {\n let spacing = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, this.column - 1).replace(/[^\\t]/g, \" \");\n return mark(\">\") + aside(gutter) + line + \"\\n \" + spacing + mark(\"^\");\n }\n return \" \" + aside(gutter) + line;\n }).join(\"\\n\");\n }\n toString() {\n let code = this.showSourceCode();\n if (code) {\n code = \"\\n\\n\" + code + \"\\n\";\n }\n return this.name + \": \" + this.message + code;\n }\n};\nvar cssSyntaxError$1 = CssSyntaxError$3$1;\nCssSyntaxError$3$1.default = CssSyntaxError$3$1;\nvar symbols$1 = {};\nsymbols$1.isClean = Symbol(\"isClean\");\nsymbols$1.my = Symbol(\"my\");\nconst DEFAULT_RAW$1 = {\n after: \"\\n\",\n beforeClose: \"\\n\",\n beforeComment: \"\\n\",\n beforeDecl: \"\\n\",\n beforeOpen: \" \",\n beforeRule: \"\\n\",\n colon: \": \",\n commentLeft: \" \",\n commentRight: \" \",\n emptyBody: \"\",\n indent: \" \",\n semicolon: false\n};\nfunction capitalize$1(str) {\n return str[0].toUpperCase() + str.slice(1);\n}\nlet Stringifier$2$1 = class Stringifier {\n constructor(builder) {\n this.builder = builder;\n }\n atrule(node2, semicolon) {\n let name = \"@\" + node2.name;\n let params = node2.params ? this.rawValue(node2, \"params\") : \"\";\n if (typeof node2.raws.afterName !== \"undefined\") {\n name += node2.raws.afterName;\n } else if (params) {\n name += \" \";\n }\n if (node2.nodes) {\n this.block(node2, name + params);\n } else {\n let end = (node2.raws.between || \"\") + (semicolon ? \";\" : \"\");\n this.builder(name + params + end, node2);\n }\n }\n beforeAfter(node2, detect) {\n let value;\n if (node2.type === \"decl\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (node2.type === \"comment\") {\n value = this.raw(node2, null, \"beforeComment\");\n } else if (detect === \"before\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else {\n value = this.raw(node2, null, \"beforeClose\");\n }\n let buf = node2.parent;\n let depth = 0;\n while (buf && buf.type !== \"root\") {\n depth += 1;\n buf = buf.parent;\n }\n if (value.includes(\"\\n\")) {\n let indent = this.raw(node2, null, \"indent\");\n if (indent.length) {\n for (let step = 0; step < depth; step++) value += indent;\n }\n }\n return value;\n }\n block(node2, start) {\n let between = this.raw(node2, \"between\", \"beforeOpen\");\n this.builder(start + between + \"{\", node2, \"start\");\n let after;\n if (node2.nodes && node2.nodes.length) {\n this.body(node2);\n after = this.raw(node2, \"after\");\n } else {\n after = this.raw(node2, \"after\", \"emptyBody\");\n }\n if (after) this.builder(after);\n this.builder(\"}\", node2, \"end\");\n }\n body(node2) {\n let last = node2.nodes.length - 1;\n while (last > 0) {\n if (node2.nodes[last].type !== \"comment\") break;\n last -= 1;\n }\n let semicolon = this.raw(node2, \"semicolon\");\n for (let i2 = 0; i2 < node2.nodes.length; i2++) {\n let child = node2.nodes[i2];\n let before = this.raw(child, \"before\");\n if (before) this.builder(before);\n this.stringify(child, last !== i2 || semicolon);\n }\n }\n comment(node2) {\n let left = this.raw(node2, \"left\", \"commentLeft\");\n let right = this.raw(node2, \"right\", \"commentRight\");\n this.builder(\"/*\" + left + node2.text + right + \"*/\", node2);\n }\n decl(node2, semicolon) {\n let between = this.raw(node2, \"between\", \"colon\");\n let string = node2.prop + between + this.rawValue(node2, \"value\");\n if (node2.important) {\n string += node2.raws.important || \" !important\";\n }\n if (semicolon) string += \";\";\n this.builder(string, node2);\n }\n document(node2) {\n this.body(node2);\n }\n raw(node2, own, detect) {\n let value;\n if (!detect) detect = own;\n if (own) {\n value = node2.raws[own];\n if (typeof value !== \"undefined\") return value;\n }\n let parent = node2.parent;\n if (detect === \"before\") {\n if (!parent || parent.type === \"root\" && parent.first === node2) {\n return \"\";\n }\n if (parent && parent.type === \"document\") {\n return \"\";\n }\n }\n if (!parent) return DEFAULT_RAW$1[detect];\n let root2 = node2.root();\n if (!root2.rawCache) root2.rawCache = {};\n if (typeof root2.rawCache[detect] !== \"undefined\") {\n return root2.rawCache[detect];\n }\n if (detect === \"before\" || detect === \"after\") {\n return this.beforeAfter(node2, detect);\n } else {\n let method = \"raw\" + capitalize$1(detect);\n if (this[method]) {\n value = this[method](root2, node2);\n } else {\n root2.walk((i2) => {\n value = i2.raws[own];\n if (typeof value !== \"undefined\") return false;\n });\n }\n }\n if (typeof value === \"undefined\") value = DEFAULT_RAW$1[detect];\n root2.rawCache[detect] = value;\n return value;\n }\n rawBeforeClose(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length > 0) {\n if (typeof i2.raws.after !== \"undefined\") {\n value = i2.raws.after;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawBeforeComment(root2, node2) {\n let value;\n root2.walkComments((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeDecl(root2, node2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeOpen(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.type !== \"decl\") {\n value = i2.raws.between;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawBeforeRule(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && (i2.parent !== root2 || root2.first !== i2)) {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawColon(root2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.between !== \"undefined\") {\n value = i2.raws.between.replace(/[^\\s:]/g, \"\");\n return false;\n }\n });\n return value;\n }\n rawEmptyBody(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length === 0) {\n value = i2.raws.after;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawIndent(root2) {\n if (root2.raws.indent) return root2.raws.indent;\n let value;\n root2.walk((i2) => {\n let p = i2.parent;\n if (p && p !== root2 && p.parent && p.parent === root2) {\n if (typeof i2.raws.before !== \"undefined\") {\n let parts = i2.raws.before.split(\"\\n\");\n value = parts[parts.length - 1];\n value = value.replace(/\\S/g, \"\");\n return false;\n }\n }\n });\n return value;\n }\n rawSemicolon(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length && i2.last.type === \"decl\") {\n value = i2.raws.semicolon;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawValue(node2, prop) {\n let value = node2[prop];\n let raw = node2.raws[prop];\n if (raw && raw.value === value) {\n return raw.raw;\n }\n return value;\n }\n root(node2) {\n this.body(node2);\n if (node2.raws.after) this.builder(node2.raws.after);\n }\n rule(node2) {\n this.block(node2, this.rawValue(node2, \"selector\"));\n if (node2.raws.ownSemicolon) {\n this.builder(node2.raws.ownSemicolon, node2, \"end\");\n }\n }\n stringify(node2, semicolon) {\n if (!this[node2.type]) {\n throw new Error(\n \"Unknown AST node type \" + node2.type + \". Maybe you need to change PostCSS stringifier.\"\n );\n }\n this[node2.type](node2, semicolon);\n }\n};\nvar stringifier$1 = Stringifier$2$1;\nStringifier$2$1.default = Stringifier$2$1;\nlet Stringifier$1$1 = stringifier$1;\nfunction stringify$4$1(node2, builder) {\n let str = new Stringifier$1$1(builder);\n str.stringify(node2);\n}\nvar stringify_1$1 = stringify$4$1;\nstringify$4$1.default = stringify$4$1;\nlet { isClean: isClean$2$1, my: my$2$1 } = symbols$1;\nlet CssSyntaxError$2$1 = cssSyntaxError$1;\nlet Stringifier2$1 = stringifier$1;\nlet stringify$3$1 = stringify_1$1;\nfunction cloneNode$1(obj, parent) {\n let cloned = new obj.constructor();\n for (let i2 in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, i2)) {\n continue;\n }\n if (i2 === \"proxyCache\") continue;\n let value = obj[i2];\n let type = typeof value;\n if (i2 === \"parent\" && type === \"object\") {\n if (parent) cloned[i2] = parent;\n } else if (i2 === \"source\") {\n cloned[i2] = value;\n } else if (Array.isArray(value)) {\n cloned[i2] = value.map((j) => cloneNode$1(j, cloned));\n } else {\n if (type === \"object\" && value !== null) value = cloneNode$1(value);\n cloned[i2] = value;\n }\n }\n return cloned;\n}\nlet Node$4$1 = class Node2 {\n constructor(defaults = {}) {\n this.raws = {};\n this[isClean$2$1] = false;\n this[my$2$1] = true;\n for (let name in defaults) {\n if (name === \"nodes\") {\n this.nodes = [];\n for (let node2 of defaults[name]) {\n if (typeof node2.clone === \"function\") {\n this.append(node2.clone());\n } else {\n this.append(node2);\n }\n }\n } else {\n this[name] = defaults[name];\n }\n }\n }\n addToError(error) {\n error.postcssNode = this;\n if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n let s2 = this.source;\n error.stack = error.stack.replace(\n /\\n\\s{4}at /,\n `$&${s2.input.from}:${s2.start.line}:${s2.start.column}$&`\n );\n }\n return error;\n }\n after(add) {\n this.parent.insertAfter(this, add);\n return this;\n }\n assign(overrides = {}) {\n for (let name in overrides) {\n this[name] = overrides[name];\n }\n return this;\n }\n before(add) {\n this.parent.insertBefore(this, add);\n return this;\n }\n cleanRaws(keepBetween) {\n delete this.raws.before;\n delete this.raws.after;\n if (!keepBetween) delete this.raws.between;\n }\n clone(overrides = {}) {\n let cloned = cloneNode$1(this);\n for (let name in overrides) {\n cloned[name] = overrides[name];\n }\n return cloned;\n }\n cloneAfter(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertAfter(this, cloned);\n return cloned;\n }\n cloneBefore(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertBefore(this, cloned);\n return cloned;\n }\n error(message, opts = {}) {\n if (this.source) {\n let { end, start } = this.rangeBy(opts);\n return this.source.input.error(\n message,\n { column: start.column, line: start.line },\n { column: end.column, line: end.line },\n opts\n );\n }\n return new CssSyntaxError$2$1(message);\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"prop\" || prop === \"value\" || prop === \"name\" || prop === \"params\" || prop === \"important\" || /* c8 ignore next */\n prop === \"text\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n markDirty() {\n if (this[isClean$2$1]) {\n this[isClean$2$1] = false;\n let next = this;\n while (next = next.parent) {\n next[isClean$2$1] = false;\n }\n }\n }\n next() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 + 1];\n }\n positionBy(opts, stringRepresentation) {\n let pos = this.source.start;\n if (opts.index) {\n pos = this.positionInside(opts.index, stringRepresentation);\n } else if (opts.word) {\n stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) pos = this.positionInside(index2, stringRepresentation);\n }\n return pos;\n }\n positionInside(index2, stringRepresentation) {\n let string = stringRepresentation || this.toString();\n let column = this.source.start.column;\n let line = this.source.start.line;\n for (let i2 = 0; i2 < index2; i2++) {\n if (string[i2] === \"\\n\") {\n column = 1;\n line += 1;\n } else {\n column += 1;\n }\n }\n return { column, line };\n }\n prev() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 - 1];\n }\n rangeBy(opts) {\n let start = {\n column: this.source.start.column,\n line: this.source.start.line\n };\n let end = this.source.end ? {\n column: this.source.end.column + 1,\n line: this.source.end.line\n } : {\n column: start.column + 1,\n line: start.line\n };\n if (opts.word) {\n let stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) {\n start = this.positionInside(index2, stringRepresentation);\n end = this.positionInside(index2 + opts.word.length, stringRepresentation);\n }\n } else {\n if (opts.start) {\n start = {\n column: opts.start.column,\n line: opts.start.line\n };\n } else if (opts.index) {\n start = this.positionInside(opts.index);\n }\n if (opts.end) {\n end = {\n column: opts.end.column,\n line: opts.end.line\n };\n } else if (typeof opts.endIndex === \"number\") {\n end = this.positionInside(opts.endIndex);\n } else if (opts.index) {\n end = this.positionInside(opts.index + 1);\n }\n }\n if (end.line < start.line || end.line === start.line && end.column <= start.column) {\n end = { column: start.column + 1, line: start.line };\n }\n return { end, start };\n }\n raw(prop, defaultType) {\n let str = new Stringifier2$1();\n return str.raw(this, prop, defaultType);\n }\n remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n this.parent = void 0;\n return this;\n }\n replaceWith(...nodes) {\n if (this.parent) {\n let bookmark = this;\n let foundSelf = false;\n for (let node2 of nodes) {\n if (node2 === this) {\n foundSelf = true;\n } else if (foundSelf) {\n this.parent.insertAfter(bookmark, node2);\n bookmark = node2;\n } else {\n this.parent.insertBefore(bookmark, node2);\n }\n }\n if (!foundSelf) {\n this.remove();\n }\n }\n return this;\n }\n root() {\n let result2 = this;\n while (result2.parent && result2.parent.type !== \"document\") {\n result2 = result2.parent;\n }\n return result2;\n }\n toJSON(_, inputs) {\n let fixed = {};\n let emitInputs = inputs == null;\n inputs = inputs || /* @__PURE__ */ new Map();\n let inputsNextIndex = 0;\n for (let name in this) {\n if (!Object.prototype.hasOwnProperty.call(this, name)) {\n continue;\n }\n if (name === \"parent\" || name === \"proxyCache\") continue;\n let value = this[name];\n if (Array.isArray(value)) {\n fixed[name] = value.map((i2) => {\n if (typeof i2 === \"object\" && i2.toJSON) {\n return i2.toJSON(null, inputs);\n } else {\n return i2;\n }\n });\n } else if (typeof value === \"object\" && value.toJSON) {\n fixed[name] = value.toJSON(null, inputs);\n } else if (name === \"source\") {\n let inputId = inputs.get(value.input);\n if (inputId == null) {\n inputId = inputsNextIndex;\n inputs.set(value.input, inputsNextIndex);\n inputsNextIndex++;\n }\n fixed[name] = {\n end: value.end,\n inputId,\n start: value.start\n };\n } else {\n fixed[name] = value;\n }\n }\n if (emitInputs) {\n fixed.inputs = [...inputs.keys()].map((input2) => input2.toJSON());\n }\n return fixed;\n }\n toProxy() {\n if (!this.proxyCache) {\n this.proxyCache = new Proxy(this, this.getProxyProcessor());\n }\n return this.proxyCache;\n }\n toString(stringifier2 = stringify$3$1) {\n if (stringifier2.stringify) stringifier2 = stringifier2.stringify;\n let result2 = \"\";\n stringifier2(this, (i2) => {\n result2 += i2;\n });\n return result2;\n }\n warn(result2, text, opts) {\n let data = { node: this };\n for (let i2 in opts) data[i2] = opts[i2];\n return result2.warn(text, data);\n }\n get proxyOf() {\n return this;\n }\n};\nvar node$1 = Node$4$1;\nNode$4$1.default = Node$4$1;\nlet Node$3$1 = node$1;\nlet Declaration$4$1 = class Declaration extends Node$3$1 {\n constructor(defaults) {\n if (defaults && typeof defaults.value !== \"undefined\" && typeof defaults.value !== \"string\") {\n defaults = { ...defaults, value: String(defaults.value) };\n }\n super(defaults);\n this.type = \"decl\";\n }\n get variable() {\n return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n }\n};\nvar declaration$1 = Declaration$4$1;\nDeclaration$4$1.default = Declaration$4$1;\nlet urlAlphabet$1 = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\nlet customAlphabet$1 = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = \"\";\n let i2 = size;\n while (i2--) {\n id += alphabet[Math.random() * alphabet.length | 0];\n }\n return id;\n };\n};\nlet nanoid$1$1 = (size = 21) => {\n let id = \"\";\n let i2 = size;\n while (i2--) {\n id += urlAlphabet$1[Math.random() * 64 | 0];\n }\n return id;\n};\nvar nonSecure$1 = { nanoid: nanoid$1$1, customAlphabet: customAlphabet$1 };\nlet { SourceMapConsumer: SourceMapConsumer$2$1, SourceMapGenerator: SourceMapGenerator$2$1 } = require$$2$1;\nlet { existsSync: existsSync$1, readFileSync: readFileSync$1 } = require$$2$1;\nlet { dirname: dirname$1$1, join: join$1 } = require$$2$1;\nfunction fromBase64$1(str) {\n if (Buffer) {\n return Buffer.from(str, \"base64\").toString();\n } else {\n return window.atob(str);\n }\n}\nlet PreviousMap$2$1 = class PreviousMap {\n constructor(css, opts) {\n if (opts.map === false) return;\n this.loadAnnotation(css);\n this.inline = this.startWith(this.annotation, \"data:\");\n let prev = opts.map ? opts.map.prev : void 0;\n let text = this.loadMap(opts.from, prev);\n if (!this.mapFile && opts.from) {\n this.mapFile = opts.from;\n }\n if (this.mapFile) this.root = dirname$1$1(this.mapFile);\n if (text) this.text = text;\n }\n consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new SourceMapConsumer$2$1(this.text);\n }\n return this.consumerCache;\n }\n decodeInline(text) {\n let baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/;\n let baseUri = /^data:application\\/json;base64,/;\n let charsetUri = /^data:application\\/json;charset=utf-?8,/;\n let uri = /^data:application\\/json,/;\n if (charsetUri.test(text) || uri.test(text)) {\n return decodeURIComponent(text.substr(RegExp.lastMatch.length));\n }\n if (baseCharsetUri.test(text) || baseUri.test(text)) {\n return fromBase64$1(text.substr(RegExp.lastMatch.length));\n }\n let encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n throw new Error(\"Unsupported source map encoding \" + encoding);\n }\n getAnnotationURL(sourceMapString) {\n return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n }\n isMap(map) {\n if (typeof map !== \"object\") return false;\n return typeof map.mappings === \"string\" || typeof map._mappings === \"string\" || Array.isArray(map.sections);\n }\n loadAnnotation(css) {\n let comments = css.match(/\\/\\*\\s*# sourceMappingURL=/gm);\n if (!comments) return;\n let start = css.lastIndexOf(comments.pop());\n let end = css.indexOf(\"*/\", start);\n if (start > -1 && end > -1) {\n this.annotation = this.getAnnotationURL(css.substring(start, end));\n }\n }\n loadFile(path) {\n this.root = dirname$1$1(path);\n if (existsSync$1(path)) {\n this.mapFile = path;\n return readFileSync$1(path, \"utf-8\").toString().trim();\n }\n }\n loadMap(file, prev) {\n if (prev === false) return false;\n if (prev) {\n if (typeof prev === \"string\") {\n return prev;\n } else if (typeof prev === \"function\") {\n let prevPath = prev(file);\n if (prevPath) {\n let map = this.loadFile(prevPath);\n if (!map) {\n throw new Error(\n \"Unable to load previous source map: \" + prevPath.toString()\n );\n }\n return map;\n }\n } else if (prev instanceof SourceMapConsumer$2$1) {\n return SourceMapGenerator$2$1.fromSourceMap(prev).toString();\n } else if (prev instanceof SourceMapGenerator$2$1) {\n return prev.toString();\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev);\n } else {\n throw new Error(\n \"Unsupported previous source map format: \" + prev.toString()\n );\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation);\n } else if (this.annotation) {\n let map = this.annotation;\n if (file) map = join$1(dirname$1$1(file), map);\n return this.loadFile(map);\n }\n }\n startWith(string, start) {\n if (!string) return false;\n return string.substr(0, start.length) === start;\n }\n withContent() {\n return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n }\n};\nvar previousMap$1 = PreviousMap$2$1;\nPreviousMap$2$1.default = PreviousMap$2$1;\nlet { SourceMapConsumer: SourceMapConsumer$1$1, SourceMapGenerator: SourceMapGenerator$1$1 } = require$$2$1;\nlet { fileURLToPath: fileURLToPath$1, pathToFileURL: pathToFileURL$1$1 } = require$$2$1;\nlet { isAbsolute: isAbsolute$1, resolve: resolve$1$1 } = require$$2$1;\nlet { nanoid: nanoid$2 } = nonSecure$1;\nlet terminalHighlight$2 = require$$2$1;\nlet CssSyntaxError$1$1 = cssSyntaxError$1;\nlet PreviousMap$1$1 = previousMap$1;\nlet fromOffsetCache$1 = Symbol(\"fromOffsetCache\");\nlet sourceMapAvailable$1$1 = Boolean(SourceMapConsumer$1$1 && SourceMapGenerator$1$1);\nlet pathAvailable$1$1 = Boolean(resolve$1$1 && isAbsolute$1);\nlet Input$4$1 = class Input {\n constructor(css, opts = {}) {\n if (css === null || typeof css === \"undefined\" || typeof css === \"object\" && !css.toString) {\n throw new Error(`PostCSS received ${css} instead of CSS string`);\n }\n this.css = css.toString();\n if (this.css[0] === \"\\uFEFF\" || this.css[0] === \"￾\") {\n this.hasBOM = true;\n this.css = this.css.slice(1);\n } else {\n this.hasBOM = false;\n }\n if (opts.from) {\n if (!pathAvailable$1$1 || /^\\w+:\\/\\//.test(opts.from) || isAbsolute$1(opts.from)) {\n this.file = opts.from;\n } else {\n this.file = resolve$1$1(opts.from);\n }\n }\n if (pathAvailable$1$1 && sourceMapAvailable$1$1) {\n let map = new PreviousMap$1$1(this.css, opts);\n if (map.text) {\n this.map = map;\n let file = map.consumer().file;\n if (!this.file && file) this.file = this.mapResolve(file);\n }\n }\n if (!this.file) {\n this.id = \"\";\n }\n if (this.map) this.map.file = this.from;\n }\n error(message, line, column, opts = {}) {\n let result2, endLine, endColumn;\n if (line && typeof line === \"object\") {\n let start = line;\n let end = column;\n if (typeof start.offset === \"number\") {\n let pos = this.fromOffset(start.offset);\n line = pos.line;\n column = pos.col;\n } else {\n line = start.line;\n column = start.column;\n }\n if (typeof end.offset === \"number\") {\n let pos = this.fromOffset(end.offset);\n endLine = pos.line;\n endColumn = pos.col;\n } else {\n endLine = end.line;\n endColumn = end.column;\n }\n } else if (!column) {\n let pos = this.fromOffset(line);\n line = pos.line;\n column = pos.col;\n }\n let origin = this.origin(line, column, endLine, endColumn);\n if (origin) {\n result2 = new CssSyntaxError$1$1(\n message,\n origin.endLine === void 0 ? origin.line : { column: origin.column, line: origin.line },\n origin.endLine === void 0 ? origin.column : { column: origin.endColumn, line: origin.endLine },\n origin.source,\n origin.file,\n opts.plugin\n );\n } else {\n result2 = new CssSyntaxError$1$1(\n message,\n endLine === void 0 ? line : { column, line },\n endLine === void 0 ? column : { column: endColumn, line: endLine },\n this.css,\n this.file,\n opts.plugin\n );\n }\n result2.input = { column, endColumn, endLine, line, source: this.css };\n if (this.file) {\n if (pathToFileURL$1$1) {\n result2.input.url = pathToFileURL$1$1(this.file).toString();\n }\n result2.input.file = this.file;\n }\n return result2;\n }\n fromOffset(offset) {\n let lastLine, lineToIndex;\n if (!this[fromOffsetCache$1]) {\n let lines = this.css.split(\"\\n\");\n lineToIndex = new Array(lines.length);\n let prevIndex = 0;\n for (let i2 = 0, l2 = lines.length; i2 < l2; i2++) {\n lineToIndex[i2] = prevIndex;\n prevIndex += lines[i2].length + 1;\n }\n this[fromOffsetCache$1] = lineToIndex;\n } else {\n lineToIndex = this[fromOffsetCache$1];\n }\n lastLine = lineToIndex[lineToIndex.length - 1];\n let min = 0;\n if (offset >= lastLine) {\n min = lineToIndex.length - 1;\n } else {\n let max = lineToIndex.length - 2;\n let mid;\n while (min < max) {\n mid = min + (max - min >> 1);\n if (offset < lineToIndex[mid]) {\n max = mid - 1;\n } else if (offset >= lineToIndex[mid + 1]) {\n min = mid + 1;\n } else {\n min = mid;\n break;\n }\n }\n }\n return {\n col: offset - lineToIndex[min] + 1,\n line: min + 1\n };\n }\n mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file;\n }\n return resolve$1$1(this.map.consumer().sourceRoot || this.map.root || \".\", file);\n }\n origin(line, column, endLine, endColumn) {\n if (!this.map) return false;\n let consumer = this.map.consumer();\n let from = consumer.originalPositionFor({ column, line });\n if (!from.source) return false;\n let to;\n if (typeof endLine === \"number\") {\n to = consumer.originalPositionFor({ column: endColumn, line: endLine });\n }\n let fromUrl;\n if (isAbsolute$1(from.source)) {\n fromUrl = pathToFileURL$1$1(from.source);\n } else {\n fromUrl = new URL(\n from.source,\n this.map.consumer().sourceRoot || pathToFileURL$1$1(this.map.mapFile)\n );\n }\n let result2 = {\n column: from.column,\n endColumn: to && to.column,\n endLine: to && to.line,\n line: from.line,\n url: fromUrl.toString()\n };\n if (fromUrl.protocol === \"file:\") {\n if (fileURLToPath$1) {\n result2.file = fileURLToPath$1(fromUrl);\n } else {\n throw new Error(`file: protocol is not available in this PostCSS build`);\n }\n }\n let source = consumer.sourceContentFor(from.source);\n if (source) result2.source = source;\n return result2;\n }\n toJSON() {\n let json = {};\n for (let name of [\"hasBOM\", \"css\", \"file\", \"id\"]) {\n if (this[name] != null) {\n json[name] = this[name];\n }\n }\n if (this.map) {\n json.map = { ...this.map };\n if (json.map.consumerCache) {\n json.map.consumerCache = void 0;\n }\n }\n return json;\n }\n get from() {\n return this.file || this.id;\n }\n};\nvar input$1 = Input$4$1;\nInput$4$1.default = Input$4$1;\nif (terminalHighlight$2 && terminalHighlight$2.registerInput) {\n terminalHighlight$2.registerInput(Input$4$1);\n}\nlet { SourceMapConsumer: SourceMapConsumer$3, SourceMapGenerator: SourceMapGenerator$3 } = require$$2$1;\nlet { dirname: dirname$2, relative: relative$1, resolve: resolve$2, sep: sep$1 } = require$$2$1;\nlet { pathToFileURL: pathToFileURL$2 } = require$$2$1;\nlet Input$3$1 = input$1;\nlet sourceMapAvailable$2 = Boolean(SourceMapConsumer$3 && SourceMapGenerator$3);\nlet pathAvailable$2 = Boolean(dirname$2 && resolve$2 && relative$1 && sep$1);\nlet MapGenerator$2$1 = class MapGenerator {\n constructor(stringify2, root2, opts, cssString) {\n this.stringify = stringify2;\n this.mapOpts = opts.map || {};\n this.root = root2;\n this.opts = opts;\n this.css = cssString;\n this.originalCSS = cssString;\n this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute;\n this.memoizedFileURLs = /* @__PURE__ */ new Map();\n this.memoizedPaths = /* @__PURE__ */ new Map();\n this.memoizedURLs = /* @__PURE__ */ new Map();\n }\n addAnnotation() {\n let content;\n if (this.isInline()) {\n content = \"data:application/json;base64,\" + this.toBase64(this.map.toString());\n } else if (typeof this.mapOpts.annotation === \"string\") {\n content = this.mapOpts.annotation;\n } else if (typeof this.mapOpts.annotation === \"function\") {\n content = this.mapOpts.annotation(this.opts.to, this.root);\n } else {\n content = this.outputFile() + \".map\";\n }\n let eol = \"\\n\";\n if (this.css.includes(\"\\r\\n\")) eol = \"\\r\\n\";\n this.css += eol + \"/*# sourceMappingURL=\" + content + \" */\";\n }\n applyPrevMaps() {\n for (let prev of this.previous()) {\n let from = this.toUrl(this.path(prev.file));\n let root2 = prev.root || dirname$2(prev.file);\n let map;\n if (this.mapOpts.sourcesContent === false) {\n map = new SourceMapConsumer$3(prev.text);\n if (map.sourcesContent) {\n map.sourcesContent = null;\n }\n } else {\n map = prev.consumer();\n }\n this.map.applySourceMap(map, from, this.toUrl(this.path(root2)));\n }\n }\n clearAnnotation() {\n if (this.mapOpts.annotation === false) return;\n if (this.root) {\n let node2;\n for (let i2 = this.root.nodes.length - 1; i2 >= 0; i2--) {\n node2 = this.root.nodes[i2];\n if (node2.type !== \"comment\") continue;\n if (node2.text.indexOf(\"# sourceMappingURL=\") === 0) {\n this.root.removeChild(i2);\n }\n }\n } else if (this.css) {\n this.css = this.css.replace(/\\n*?\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\");\n }\n }\n generate() {\n this.clearAnnotation();\n if (pathAvailable$2 && sourceMapAvailable$2 && this.isMap()) {\n return this.generateMap();\n } else {\n let result2 = \"\";\n this.stringify(this.root, (i2) => {\n result2 += i2;\n });\n return [result2];\n }\n }\n generateMap() {\n if (this.root) {\n this.generateString();\n } else if (this.previous().length === 1) {\n let prev = this.previous()[0].consumer();\n prev.file = this.outputFile();\n this.map = SourceMapGenerator$3.fromSourceMap(prev, {\n ignoreInvalidMapping: true\n });\n } else {\n this.map = new SourceMapGenerator$3({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n this.map.addMapping({\n generated: { column: 0, line: 1 },\n original: { column: 0, line: 1 },\n source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\"\n });\n }\n if (this.isSourcesContent()) this.setSourcesContent();\n if (this.root && this.previous().length > 0) this.applyPrevMaps();\n if (this.isAnnotation()) this.addAnnotation();\n if (this.isInline()) {\n return [this.css];\n } else {\n return [this.css, this.map];\n }\n }\n generateString() {\n this.css = \"\";\n this.map = new SourceMapGenerator$3({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n let line = 1;\n let column = 1;\n let noSource = \"\";\n let mapping = {\n generated: { column: 0, line: 0 },\n original: { column: 0, line: 0 },\n source: \"\"\n };\n let lines, last;\n this.stringify(this.root, (str, node2, type) => {\n this.css += str;\n if (node2 && type !== \"end\") {\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n if (node2.source && node2.source.start) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.start.line;\n mapping.original.column = node2.source.start.column - 1;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n this.map.addMapping(mapping);\n }\n }\n lines = str.match(/\\n/g);\n if (lines) {\n line += lines.length;\n last = str.lastIndexOf(\"\\n\");\n column = str.length - last;\n } else {\n column += str.length;\n }\n if (node2 && type !== \"start\") {\n let p = node2.parent || { raws: {} };\n let childless = node2.type === \"decl\" || node2.type === \"atrule\" && !node2.nodes;\n if (!childless || node2 !== p.last || p.raws.semicolon) {\n if (node2.source && node2.source.end) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.end.line;\n mapping.original.column = node2.source.end.column - 1;\n mapping.generated.line = line;\n mapping.generated.column = column - 2;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n this.map.addMapping(mapping);\n }\n }\n }\n });\n }\n isAnnotation() {\n if (this.isInline()) {\n return true;\n }\n if (typeof this.mapOpts.annotation !== \"undefined\") {\n return this.mapOpts.annotation;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.annotation);\n }\n return true;\n }\n isInline() {\n if (typeof this.mapOpts.inline !== \"undefined\") {\n return this.mapOpts.inline;\n }\n let annotation = this.mapOpts.annotation;\n if (typeof annotation !== \"undefined\" && annotation !== true) {\n return false;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.inline);\n }\n return true;\n }\n isMap() {\n if (typeof this.opts.map !== \"undefined\") {\n return !!this.opts.map;\n }\n return this.previous().length > 0;\n }\n isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== \"undefined\") {\n return this.mapOpts.sourcesContent;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.withContent());\n }\n return true;\n }\n outputFile() {\n if (this.opts.to) {\n return this.path(this.opts.to);\n } else if (this.opts.from) {\n return this.path(this.opts.from);\n } else {\n return \"to.css\";\n }\n }\n path(file) {\n if (this.mapOpts.absolute) return file;\n if (file.charCodeAt(0) === 60) return file;\n if (/^\\w+:\\/\\//.test(file)) return file;\n let cached = this.memoizedPaths.get(file);\n if (cached) return cached;\n let from = this.opts.to ? dirname$2(this.opts.to) : \".\";\n if (typeof this.mapOpts.annotation === \"string\") {\n from = dirname$2(resolve$2(from, this.mapOpts.annotation));\n }\n let path = relative$1(from, file);\n this.memoizedPaths.set(file, path);\n return path;\n }\n previous() {\n if (!this.previousMaps) {\n this.previousMaps = [];\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source && node2.source.input.map) {\n let map = node2.source.input.map;\n if (!this.previousMaps.includes(map)) {\n this.previousMaps.push(map);\n }\n }\n });\n } else {\n let input2 = new Input$3$1(this.originalCSS, this.opts);\n if (input2.map) this.previousMaps.push(input2.map);\n }\n }\n return this.previousMaps;\n }\n setSourcesContent() {\n let already = {};\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source) {\n let from = node2.source.input.from;\n if (from && !already[from]) {\n already[from] = true;\n let fromUrl = this.usesFileUrls ? this.toFileUrl(from) : this.toUrl(this.path(from));\n this.map.setSourceContent(fromUrl, node2.source.input.css);\n }\n }\n });\n } else if (this.css) {\n let from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\";\n this.map.setSourceContent(from, this.css);\n }\n }\n sourcePath(node2) {\n if (this.mapOpts.from) {\n return this.toUrl(this.mapOpts.from);\n } else if (this.usesFileUrls) {\n return this.toFileUrl(node2.source.input.from);\n } else {\n return this.toUrl(this.path(node2.source.input.from));\n }\n }\n toBase64(str) {\n if (Buffer) {\n return Buffer.from(str).toString(\"base64\");\n } else {\n return window.btoa(unescape(encodeURIComponent(str)));\n }\n }\n toFileUrl(path) {\n let cached = this.memoizedFileURLs.get(path);\n if (cached) return cached;\n if (pathToFileURL$2) {\n let fileURL = pathToFileURL$2(path).toString();\n this.memoizedFileURLs.set(path, fileURL);\n return fileURL;\n } else {\n throw new Error(\n \"`map.absolute` option is not available in this PostCSS build\"\n );\n }\n }\n toUrl(path) {\n let cached = this.memoizedURLs.get(path);\n if (cached) return cached;\n if (sep$1 === \"\\\\\") {\n path = path.replace(/\\\\/g, \"/\");\n }\n let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent);\n this.memoizedURLs.set(path, url);\n return url;\n }\n};\nvar mapGenerator$1 = MapGenerator$2$1;\nlet Node$2$1 = node$1;\nlet Comment$4$1 = class Comment extends Node$2$1 {\n constructor(defaults) {\n super(defaults);\n this.type = \"comment\";\n }\n};\nvar comment$1 = Comment$4$1;\nComment$4$1.default = Comment$4$1;\nlet { isClean: isClean$1$1, my: my$1$1 } = symbols$1;\nlet Declaration$3$1 = declaration$1;\nlet Comment$3$1 = comment$1;\nlet Node$1$1 = node$1;\nlet parse$4$1, Rule$4$1, AtRule$4$1, Root$6$1;\nfunction cleanSource$1(nodes) {\n return nodes.map((i2) => {\n if (i2.nodes) i2.nodes = cleanSource$1(i2.nodes);\n delete i2.source;\n return i2;\n });\n}\nfunction markDirtyUp$1(node2) {\n node2[isClean$1$1] = false;\n if (node2.proxyOf.nodes) {\n for (let i2 of node2.proxyOf.nodes) {\n markDirtyUp$1(i2);\n }\n }\n}\nlet Container$7$1 = class Container extends Node$1$1 {\n append(...children) {\n for (let child of children) {\n let nodes = this.normalize(child, this.last);\n for (let node2 of nodes) this.proxyOf.nodes.push(node2);\n }\n this.markDirty();\n return this;\n }\n cleanRaws(keepBetween) {\n super.cleanRaws(keepBetween);\n if (this.nodes) {\n for (let node2 of this.nodes) node2.cleanRaws(keepBetween);\n }\n }\n each(callback) {\n if (!this.proxyOf.nodes) return void 0;\n let iterator = this.getIterator();\n let index2, result2;\n while (this.indexes[iterator] < this.proxyOf.nodes.length) {\n index2 = this.indexes[iterator];\n result2 = callback(this.proxyOf.nodes[index2], index2);\n if (result2 === false) break;\n this.indexes[iterator] += 1;\n }\n delete this.indexes[iterator];\n return result2;\n }\n every(condition) {\n return this.nodes.every(condition);\n }\n getIterator() {\n if (!this.lastEach) this.lastEach = 0;\n if (!this.indexes) this.indexes = {};\n this.lastEach += 1;\n let iterator = this.lastEach;\n this.indexes[iterator] = 0;\n return iterator;\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (!node2[prop]) {\n return node2[prop];\n } else if (prop === \"each\" || typeof prop === \"string\" && prop.startsWith(\"walk\")) {\n return (...args) => {\n return node2[prop](\n ...args.map((i2) => {\n if (typeof i2 === \"function\") {\n return (child, index2) => i2(child.toProxy(), index2);\n } else {\n return i2;\n }\n })\n );\n };\n } else if (prop === \"every\" || prop === \"some\") {\n return (cb) => {\n return node2[prop](\n (child, ...other) => cb(child.toProxy(), ...other)\n );\n };\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else if (prop === \"nodes\") {\n return node2.nodes.map((i2) => i2.toProxy());\n } else if (prop === \"first\" || prop === \"last\") {\n return node2[prop].toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"name\" || prop === \"params\" || prop === \"selector\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n index(child) {\n if (typeof child === \"number\") return child;\n if (child.proxyOf) child = child.proxyOf;\n return this.proxyOf.nodes.indexOf(child);\n }\n insertAfter(exist, add) {\n let existIndex = this.index(exist);\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex < index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n insertBefore(exist, add) {\n let existIndex = this.index(exist);\n let type = existIndex === 0 ? \"prepend\" : false;\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex <= index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n normalize(nodes, sample) {\n if (typeof nodes === \"string\") {\n nodes = cleanSource$1(parse$4$1(nodes).nodes);\n } else if (typeof nodes === \"undefined\") {\n nodes = [];\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type === \"root\" && this.type !== \"document\") {\n nodes = nodes.nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type) {\n nodes = [nodes];\n } else if (nodes.prop) {\n if (typeof nodes.value === \"undefined\") {\n throw new Error(\"Value field is missed in node creation\");\n } else if (typeof nodes.value !== \"string\") {\n nodes.value = String(nodes.value);\n }\n nodes = [new Declaration$3$1(nodes)];\n } else if (nodes.selector) {\n nodes = [new Rule$4$1(nodes)];\n } else if (nodes.name) {\n nodes = [new AtRule$4$1(nodes)];\n } else if (nodes.text) {\n nodes = [new Comment$3$1(nodes)];\n } else {\n throw new Error(\"Unknown node type in node creation\");\n }\n let processed = nodes.map((i2) => {\n if (!i2[my$1$1]) Container.rebuild(i2);\n i2 = i2.proxyOf;\n if (i2.parent) i2.parent.removeChild(i2);\n if (i2[isClean$1$1]) markDirtyUp$1(i2);\n if (typeof i2.raws.before === \"undefined\") {\n if (sample && typeof sample.raws.before !== \"undefined\") {\n i2.raws.before = sample.raws.before.replace(/\\S/g, \"\");\n }\n }\n i2.parent = this.proxyOf;\n return i2;\n });\n return processed;\n }\n prepend(...children) {\n children = children.reverse();\n for (let child of children) {\n let nodes = this.normalize(child, this.first, \"prepend\").reverse();\n for (let node2 of nodes) this.proxyOf.nodes.unshift(node2);\n for (let id in this.indexes) {\n this.indexes[id] = this.indexes[id] + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n push(child) {\n child.parent = this;\n this.proxyOf.nodes.push(child);\n return this;\n }\n removeAll() {\n for (let node2 of this.proxyOf.nodes) node2.parent = void 0;\n this.proxyOf.nodes = [];\n this.markDirty();\n return this;\n }\n removeChild(child) {\n child = this.index(child);\n this.proxyOf.nodes[child].parent = void 0;\n this.proxyOf.nodes.splice(child, 1);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (index2 >= child) {\n this.indexes[id] = index2 - 1;\n }\n }\n this.markDirty();\n return this;\n }\n replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {};\n }\n this.walkDecls((decl) => {\n if (opts.props && !opts.props.includes(decl.prop)) return;\n if (opts.fast && !decl.value.includes(opts.fast)) return;\n decl.value = decl.value.replace(pattern, callback);\n });\n this.markDirty();\n return this;\n }\n some(condition) {\n return this.nodes.some(condition);\n }\n walk(callback) {\n return this.each((child, i2) => {\n let result2;\n try {\n result2 = callback(child, i2);\n } catch (e2) {\n throw child.addToError(e2);\n }\n if (result2 !== false && child.walk) {\n result2 = child.walk(callback);\n }\n return result2;\n });\n }\n walkAtRules(name, callback) {\n if (!callback) {\n callback = name;\n return this.walk((child, i2) => {\n if (child.type === \"atrule\") {\n return callback(child, i2);\n }\n });\n }\n if (name instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && name.test(child.name)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && child.name === name) {\n return callback(child, i2);\n }\n });\n }\n walkComments(callback) {\n return this.walk((child, i2) => {\n if (child.type === \"comment\") {\n return callback(child, i2);\n }\n });\n }\n walkDecls(prop, callback) {\n if (!callback) {\n callback = prop;\n return this.walk((child, i2) => {\n if (child.type === \"decl\") {\n return callback(child, i2);\n }\n });\n }\n if (prop instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && prop.test(child.prop)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && child.prop === prop) {\n return callback(child, i2);\n }\n });\n }\n walkRules(selector, callback) {\n if (!callback) {\n callback = selector;\n return this.walk((child, i2) => {\n if (child.type === \"rule\") {\n return callback(child, i2);\n }\n });\n }\n if (selector instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && selector.test(child.selector)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && child.selector === selector) {\n return callback(child, i2);\n }\n });\n }\n get first() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[0];\n }\n get last() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n }\n};\nContainer$7$1.registerParse = (dependant) => {\n parse$4$1 = dependant;\n};\nContainer$7$1.registerRule = (dependant) => {\n Rule$4$1 = dependant;\n};\nContainer$7$1.registerAtRule = (dependant) => {\n AtRule$4$1 = dependant;\n};\nContainer$7$1.registerRoot = (dependant) => {\n Root$6$1 = dependant;\n};\nvar container$1 = Container$7$1;\nContainer$7$1.default = Container$7$1;\nContainer$7$1.rebuild = (node2) => {\n if (node2.type === \"atrule\") {\n Object.setPrototypeOf(node2, AtRule$4$1.prototype);\n } else if (node2.type === \"rule\") {\n Object.setPrototypeOf(node2, Rule$4$1.prototype);\n } else if (node2.type === \"decl\") {\n Object.setPrototypeOf(node2, Declaration$3$1.prototype);\n } else if (node2.type === \"comment\") {\n Object.setPrototypeOf(node2, Comment$3$1.prototype);\n } else if (node2.type === \"root\") {\n Object.setPrototypeOf(node2, Root$6$1.prototype);\n }\n node2[my$1$1] = true;\n if (node2.nodes) {\n node2.nodes.forEach((child) => {\n Container$7$1.rebuild(child);\n });\n }\n};\nlet Container$6$1 = container$1;\nlet LazyResult$4$1, Processor$3$1;\nlet Document$3$1 = class Document2 extends Container$6$1 {\n constructor(defaults) {\n super({ type: \"document\", ...defaults });\n if (!this.nodes) {\n this.nodes = [];\n }\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$4$1(new Processor$3$1(), this, opts);\n return lazy.stringify();\n }\n};\nDocument$3$1.registerLazyResult = (dependant) => {\n LazyResult$4$1 = dependant;\n};\nDocument$3$1.registerProcessor = (dependant) => {\n Processor$3$1 = dependant;\n};\nvar document$1$1 = Document$3$1;\nDocument$3$1.default = Document$3$1;\nlet printed$1 = {};\nvar warnOnce$2$1 = function warnOnce(message) {\n if (printed$1[message]) return;\n printed$1[message] = true;\n if (typeof console !== \"undefined\" && console.warn) {\n console.warn(message);\n }\n};\nlet Warning$2$1 = class Warning {\n constructor(text, opts = {}) {\n this.type = \"warning\";\n this.text = text;\n if (opts.node && opts.node.source) {\n let range = opts.node.rangeBy(opts);\n this.line = range.start.line;\n this.column = range.start.column;\n this.endLine = range.end.line;\n this.endColumn = range.end.column;\n }\n for (let opt in opts) this[opt] = opts[opt];\n }\n toString() {\n if (this.node) {\n return this.node.error(this.text, {\n index: this.index,\n plugin: this.plugin,\n word: this.word\n }).message;\n }\n if (this.plugin) {\n return this.plugin + \": \" + this.text;\n }\n return this.text;\n }\n};\nvar warning$1 = Warning$2$1;\nWarning$2$1.default = Warning$2$1;\nlet Warning$1$1 = warning$1;\nlet Result$3$1 = class Result {\n constructor(processor2, root2, opts) {\n this.processor = processor2;\n this.messages = [];\n this.root = root2;\n this.opts = opts;\n this.css = void 0;\n this.map = void 0;\n }\n toString() {\n return this.css;\n }\n warn(text, opts = {}) {\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin;\n }\n }\n let warning2 = new Warning$1$1(text, opts);\n this.messages.push(warning2);\n return warning2;\n }\n warnings() {\n return this.messages.filter((i2) => i2.type === \"warning\");\n }\n get content() {\n return this.css;\n }\n};\nvar result$1 = Result$3$1;\nResult$3$1.default = Result$3$1;\nconst SINGLE_QUOTE$1 = \"'\".charCodeAt(0);\nconst DOUBLE_QUOTE$1 = '\"'.charCodeAt(0);\nconst BACKSLASH$1 = \"\\\\\".charCodeAt(0);\nconst SLASH$1 = \"/\".charCodeAt(0);\nconst NEWLINE$1 = \"\\n\".charCodeAt(0);\nconst SPACE$1 = \" \".charCodeAt(0);\nconst FEED$1 = \"\\f\".charCodeAt(0);\nconst TAB$1 = \"\t\".charCodeAt(0);\nconst CR$1 = \"\\r\".charCodeAt(0);\nconst OPEN_SQUARE$1 = \"[\".charCodeAt(0);\nconst CLOSE_SQUARE$1 = \"]\".charCodeAt(0);\nconst OPEN_PARENTHESES$1 = \"(\".charCodeAt(0);\nconst CLOSE_PARENTHESES$1 = \")\".charCodeAt(0);\nconst OPEN_CURLY$1 = \"{\".charCodeAt(0);\nconst CLOSE_CURLY$1 = \"}\".charCodeAt(0);\nconst SEMICOLON$1 = \";\".charCodeAt(0);\nconst ASTERISK$1 = \"*\".charCodeAt(0);\nconst COLON$1 = \":\".charCodeAt(0);\nconst AT$1 = \"@\".charCodeAt(0);\nconst RE_AT_END$1 = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g;\nconst RE_WORD_END$1 = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g;\nconst RE_BAD_BRACKET$1 = /.[\\r\\n\"'(/\\\\]/;\nconst RE_HEX_ESCAPE$1 = /[\\da-f]/i;\nvar tokenize$1 = function tokenizer(input2, options = {}) {\n let css = input2.css.valueOf();\n let ignore = options.ignoreErrors;\n let code, next, quote, content, escape;\n let escaped, escapePos, prev, n2, currentToken;\n let length = css.length;\n let pos = 0;\n let buffer = [];\n let returned = [];\n function position() {\n return pos;\n }\n function unclosed(what) {\n throw input2.error(\"Unclosed \" + what, pos);\n }\n function endOfFile() {\n return returned.length === 0 && pos >= length;\n }\n function nextToken(opts) {\n if (returned.length) return returned.pop();\n if (pos >= length) return;\n let ignoreUnclosed = opts ? opts.ignoreUnclosed : false;\n code = css.charCodeAt(pos);\n switch (code) {\n case NEWLINE$1:\n case SPACE$1:\n case TAB$1:\n case CR$1:\n case FEED$1: {\n next = pos;\n do {\n next += 1;\n code = css.charCodeAt(next);\n } while (code === SPACE$1 || code === NEWLINE$1 || code === TAB$1 || code === CR$1 || code === FEED$1);\n currentToken = [\"space\", css.slice(pos, next)];\n pos = next - 1;\n break;\n }\n case OPEN_SQUARE$1:\n case CLOSE_SQUARE$1:\n case OPEN_CURLY$1:\n case CLOSE_CURLY$1:\n case COLON$1:\n case SEMICOLON$1:\n case CLOSE_PARENTHESES$1: {\n let controlChar = String.fromCharCode(code);\n currentToken = [controlChar, controlChar, pos];\n break;\n }\n case OPEN_PARENTHESES$1: {\n prev = buffer.length ? buffer.pop()[1] : \"\";\n n2 = css.charCodeAt(pos + 1);\n if (prev === \"url\" && n2 !== SINGLE_QUOTE$1 && n2 !== DOUBLE_QUOTE$1 && n2 !== SPACE$1 && n2 !== NEWLINE$1 && n2 !== TAB$1 && n2 !== FEED$1 && n2 !== CR$1) {\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(\")\", next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos;\n break;\n } else {\n unclosed(\"bracket\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH$1) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"brackets\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n next = css.indexOf(\")\", pos + 1);\n content = css.slice(pos, next + 1);\n if (next === -1 || RE_BAD_BRACKET$1.test(content)) {\n currentToken = [\"(\", \"(\", pos];\n } else {\n currentToken = [\"brackets\", content, pos, next];\n pos = next;\n }\n }\n break;\n }\n case SINGLE_QUOTE$1:\n case DOUBLE_QUOTE$1: {\n quote = code === SINGLE_QUOTE$1 ? \"'\" : '\"';\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(quote, next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos + 1;\n break;\n } else {\n unclosed(\"string\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH$1) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"string\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case AT$1: {\n RE_AT_END$1.lastIndex = pos + 1;\n RE_AT_END$1.test(css);\n if (RE_AT_END$1.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_AT_END$1.lastIndex - 2;\n }\n currentToken = [\"at-word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case BACKSLASH$1: {\n next = pos;\n escape = true;\n while (css.charCodeAt(next + 1) === BACKSLASH$1) {\n next += 1;\n escape = !escape;\n }\n code = css.charCodeAt(next + 1);\n if (escape && code !== SLASH$1 && code !== SPACE$1 && code !== NEWLINE$1 && code !== TAB$1 && code !== CR$1 && code !== FEED$1) {\n next += 1;\n if (RE_HEX_ESCAPE$1.test(css.charAt(next))) {\n while (RE_HEX_ESCAPE$1.test(css.charAt(next + 1))) {\n next += 1;\n }\n if (css.charCodeAt(next + 1) === SPACE$1) {\n next += 1;\n }\n }\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n default: {\n if (code === SLASH$1 && css.charCodeAt(pos + 1) === ASTERISK$1) {\n next = css.indexOf(\"*/\", pos + 2) + 1;\n if (next === 0) {\n if (ignore || ignoreUnclosed) {\n next = css.length;\n } else {\n unclosed(\"comment\");\n }\n }\n currentToken = [\"comment\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n RE_WORD_END$1.lastIndex = pos + 1;\n RE_WORD_END$1.test(css);\n if (RE_WORD_END$1.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_WORD_END$1.lastIndex - 2;\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n buffer.push(currentToken);\n pos = next;\n }\n break;\n }\n }\n pos++;\n return currentToken;\n }\n function back(token) {\n returned.push(token);\n }\n return {\n back,\n endOfFile,\n nextToken,\n position\n };\n};\nlet Container$5$1 = container$1;\nlet AtRule$3$1 = class AtRule extends Container$5$1 {\n constructor(defaults) {\n super(defaults);\n this.type = \"atrule\";\n }\n append(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.append(...children);\n }\n prepend(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.prepend(...children);\n }\n};\nvar atRule$1 = AtRule$3$1;\nAtRule$3$1.default = AtRule$3$1;\nContainer$5$1.registerAtRule(AtRule$3$1);\nlet Container$4$1 = container$1;\nlet LazyResult$3$1, Processor$2$1;\nlet Root$5$1 = class Root extends Container$4$1 {\n constructor(defaults) {\n super(defaults);\n this.type = \"root\";\n if (!this.nodes) this.nodes = [];\n }\n normalize(child, sample, type) {\n let nodes = super.normalize(child);\n if (sample) {\n if (type === \"prepend\") {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before;\n } else {\n delete sample.raws.before;\n }\n } else if (this.first !== sample) {\n for (let node2 of nodes) {\n node2.raws.before = sample.raws.before;\n }\n }\n }\n return nodes;\n }\n removeChild(child, ignore) {\n let index2 = this.index(child);\n if (!ignore && index2 === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index2].raws.before;\n }\n return super.removeChild(child);\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$3$1(new Processor$2$1(), this, opts);\n return lazy.stringify();\n }\n};\nRoot$5$1.registerLazyResult = (dependant) => {\n LazyResult$3$1 = dependant;\n};\nRoot$5$1.registerProcessor = (dependant) => {\n Processor$2$1 = dependant;\n};\nvar root$1 = Root$5$1;\nRoot$5$1.default = Root$5$1;\nContainer$4$1.registerRoot(Root$5$1);\nlet list$2$1 = {\n comma(string) {\n return list$2$1.split(string, [\",\"], true);\n },\n space(string) {\n let spaces = [\" \", \"\\n\", \"\t\"];\n return list$2$1.split(string, spaces);\n },\n split(string, separators, last) {\n let array = [];\n let current = \"\";\n let split = false;\n let func = 0;\n let inQuote = false;\n let prevQuote = \"\";\n let escape = false;\n for (let letter of string) {\n if (escape) {\n escape = false;\n } else if (letter === \"\\\\\") {\n escape = true;\n } else if (inQuote) {\n if (letter === prevQuote) {\n inQuote = false;\n }\n } else if (letter === '\"' || letter === \"'\") {\n inQuote = true;\n prevQuote = letter;\n } else if (letter === \"(\") {\n func += 1;\n } else if (letter === \")\") {\n if (func > 0) func -= 1;\n } else if (func === 0) {\n if (separators.includes(letter)) split = true;\n }\n if (split) {\n if (current !== \"\") array.push(current.trim());\n current = \"\";\n split = false;\n } else {\n current += letter;\n }\n }\n if (last || current !== \"\") array.push(current.trim());\n return array;\n }\n};\nvar list_1$1 = list$2$1;\nlist$2$1.default = list$2$1;\nlet Container$3$1 = container$1;\nlet list$1$1 = list_1$1;\nlet Rule$3$1 = class Rule extends Container$3$1 {\n constructor(defaults) {\n super(defaults);\n this.type = \"rule\";\n if (!this.nodes) this.nodes = [];\n }\n get selectors() {\n return list$1$1.comma(this.selector);\n }\n set selectors(values) {\n let match = this.selector ? this.selector.match(/,\\s*/) : null;\n let sep2 = match ? match[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n this.selector = values.join(sep2);\n }\n};\nvar rule$1 = Rule$3$1;\nRule$3$1.default = Rule$3$1;\nContainer$3$1.registerRule(Rule$3$1);\nlet Declaration$2$1 = declaration$1;\nlet tokenizer2$1 = tokenize$1;\nlet Comment$2$1 = comment$1;\nlet AtRule$2$1 = atRule$1;\nlet Root$4$1 = root$1;\nlet Rule$2$1 = rule$1;\nconst SAFE_COMMENT_NEIGHBOR$1 = {\n empty: true,\n space: true\n};\nfunction findLastWithPosition$1(tokens) {\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n let token = tokens[i2];\n let pos = token[3] || token[2];\n if (pos) return pos;\n }\n}\nlet Parser$1$1 = class Parser {\n constructor(input2) {\n this.input = input2;\n this.root = new Root$4$1();\n this.current = this.root;\n this.spaces = \"\";\n this.semicolon = false;\n this.createTokenizer();\n this.root.source = { input: input2, start: { column: 1, line: 1, offset: 0 } };\n }\n atrule(token) {\n let node2 = new AtRule$2$1();\n node2.name = token[1].slice(1);\n if (node2.name === \"\") {\n this.unnamedAtrule(node2, token);\n }\n this.init(node2, token[2]);\n let type;\n let prev;\n let shift;\n let last = false;\n let open = false;\n let params = [];\n let brackets = [];\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n type = token[0];\n if (type === \"(\" || type === \"[\") {\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (type === \"{\" && brackets.length > 0) {\n brackets.push(\"}\");\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n }\n if (brackets.length === 0) {\n if (type === \";\") {\n node2.source.end = this.getPosition(token[2]);\n node2.source.end.offset++;\n this.semicolon = true;\n break;\n } else if (type === \"{\") {\n open = true;\n break;\n } else if (type === \"}\") {\n if (params.length > 0) {\n shift = params.length - 1;\n prev = params[shift];\n while (prev && prev[0] === \"space\") {\n prev = params[--shift];\n }\n if (prev) {\n node2.source.end = this.getPosition(prev[3] || prev[2]);\n node2.source.end.offset++;\n }\n }\n this.end(token);\n break;\n } else {\n params.push(token);\n }\n } else {\n params.push(token);\n }\n if (this.tokenizer.endOfFile()) {\n last = true;\n break;\n }\n }\n node2.raws.between = this.spacesAndCommentsFromEnd(params);\n if (params.length) {\n node2.raws.afterName = this.spacesAndCommentsFromStart(params);\n this.raw(node2, \"params\", params);\n if (last) {\n token = params[params.length - 1];\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n this.spaces = node2.raws.between;\n node2.raws.between = \"\";\n }\n } else {\n node2.raws.afterName = \"\";\n node2.params = \"\";\n }\n if (open) {\n node2.nodes = [];\n this.current = node2;\n }\n }\n checkMissedSemicolon(tokens) {\n let colon = this.colon(tokens);\n if (colon === false) return;\n let founded = 0;\n let token;\n for (let j = colon - 1; j >= 0; j--) {\n token = tokens[j];\n if (token[0] !== \"space\") {\n founded += 1;\n if (founded === 2) break;\n }\n }\n throw this.input.error(\n \"Missed semicolon\",\n token[0] === \"word\" ? token[3] + 1 : token[2]\n );\n }\n colon(tokens) {\n let brackets = 0;\n let token, type, prev;\n for (let [i2, element] of tokens.entries()) {\n token = element;\n type = token[0];\n if (type === \"(\") {\n brackets += 1;\n }\n if (type === \")\") {\n brackets -= 1;\n }\n if (brackets === 0 && type === \":\") {\n if (!prev) {\n this.doubleColon(token);\n } else if (prev[0] === \"word\" && prev[1] === \"progid\") {\n continue;\n } else {\n return i2;\n }\n }\n prev = token;\n }\n return false;\n }\n comment(token) {\n let node2 = new Comment$2$1();\n this.init(node2, token[2]);\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n let text = token[1].slice(2, -2);\n if (/^\\s*$/.test(text)) {\n node2.text = \"\";\n node2.raws.left = text;\n node2.raws.right = \"\";\n } else {\n let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n node2.text = match[2];\n node2.raws.left = match[1];\n node2.raws.right = match[3];\n }\n }\n createTokenizer() {\n this.tokenizer = tokenizer2$1(this.input);\n }\n decl(tokens, customProperty) {\n let node2 = new Declaration$2$1();\n this.init(node2, tokens[0][2]);\n let last = tokens[tokens.length - 1];\n if (last[0] === \";\") {\n this.semicolon = true;\n tokens.pop();\n }\n node2.source.end = this.getPosition(\n last[3] || last[2] || findLastWithPosition$1(tokens)\n );\n node2.source.end.offset++;\n while (tokens[0][0] !== \"word\") {\n if (tokens.length === 1) this.unknownWord(tokens);\n node2.raws.before += tokens.shift()[1];\n }\n node2.source.start = this.getPosition(tokens[0][2]);\n node2.prop = \"\";\n while (tokens.length) {\n let type = tokens[0][0];\n if (type === \":\" || type === \"space\" || type === \"comment\") {\n break;\n }\n node2.prop += tokens.shift()[1];\n }\n node2.raws.between = \"\";\n let token;\n while (tokens.length) {\n token = tokens.shift();\n if (token[0] === \":\") {\n node2.raws.between += token[1];\n break;\n } else {\n if (token[0] === \"word\" && /\\w/.test(token[1])) {\n this.unknownWord([token]);\n }\n node2.raws.between += token[1];\n }\n }\n if (node2.prop[0] === \"_\" || node2.prop[0] === \"*\") {\n node2.raws.before += node2.prop[0];\n node2.prop = node2.prop.slice(1);\n }\n let firstSpaces = [];\n let next;\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n firstSpaces.push(tokens.shift());\n }\n this.precheckMissedSemicolon(tokens);\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n token = tokens[i2];\n if (token[1].toLowerCase() === \"!important\") {\n node2.important = true;\n let string = this.stringFrom(tokens, i2);\n string = this.spacesFromEnd(tokens) + string;\n if (string !== \" !important\") node2.raws.important = string;\n break;\n } else if (token[1].toLowerCase() === \"important\") {\n let cache = tokens.slice(0);\n let str = \"\";\n for (let j = i2; j > 0; j--) {\n let type = cache[j][0];\n if (str.trim().indexOf(\"!\") === 0 && type !== \"space\") {\n break;\n }\n str = cache.pop()[1] + str;\n }\n if (str.trim().indexOf(\"!\") === 0) {\n node2.important = true;\n node2.raws.important = str;\n tokens = cache;\n }\n }\n if (token[0] !== \"space\" && token[0] !== \"comment\") {\n break;\n }\n }\n let hasWord = tokens.some((i2) => i2[0] !== \"space\" && i2[0] !== \"comment\");\n if (hasWord) {\n node2.raws.between += firstSpaces.map((i2) => i2[1]).join(\"\");\n firstSpaces = [];\n }\n this.raw(node2, \"value\", firstSpaces.concat(tokens), customProperty);\n if (node2.value.includes(\":\") && !customProperty) {\n this.checkMissedSemicolon(tokens);\n }\n }\n doubleColon(token) {\n throw this.input.error(\n \"Double colon\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n emptyRule(token) {\n let node2 = new Rule$2$1();\n this.init(node2, token[2]);\n node2.selector = \"\";\n node2.raws.between = \"\";\n this.current = node2;\n }\n end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.semicolon = false;\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.spaces = \"\";\n if (this.current.parent) {\n this.current.source.end = this.getPosition(token[2]);\n this.current.source.end.offset++;\n this.current = this.current.parent;\n } else {\n this.unexpectedClose(token);\n }\n }\n endFile() {\n if (this.current.parent) this.unclosedBlock();\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.root.source.end = this.getPosition(this.tokenizer.position());\n }\n freeSemicolon(token) {\n this.spaces += token[1];\n if (this.current.nodes) {\n let prev = this.current.nodes[this.current.nodes.length - 1];\n if (prev && prev.type === \"rule\" && !prev.raws.ownSemicolon) {\n prev.raws.ownSemicolon = this.spaces;\n this.spaces = \"\";\n }\n }\n }\n // Helpers\n getPosition(offset) {\n let pos = this.input.fromOffset(offset);\n return {\n column: pos.col,\n line: pos.line,\n offset\n };\n }\n init(node2, offset) {\n this.current.push(node2);\n node2.source = {\n input: this.input,\n start: this.getPosition(offset)\n };\n node2.raws.before = this.spaces;\n this.spaces = \"\";\n if (node2.type !== \"comment\") this.semicolon = false;\n }\n other(start) {\n let end = false;\n let type = null;\n let colon = false;\n let bracket = null;\n let brackets = [];\n let customProperty = start[1].startsWith(\"--\");\n let tokens = [];\n let token = start;\n while (token) {\n type = token[0];\n tokens.push(token);\n if (type === \"(\" || type === \"[\") {\n if (!bracket) bracket = token;\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (customProperty && colon && type === \"{\") {\n if (!bracket) bracket = token;\n brackets.push(\"}\");\n } else if (brackets.length === 0) {\n if (type === \";\") {\n if (colon) {\n this.decl(tokens, customProperty);\n return;\n } else {\n break;\n }\n } else if (type === \"{\") {\n this.rule(tokens);\n return;\n } else if (type === \"}\") {\n this.tokenizer.back(tokens.pop());\n end = true;\n break;\n } else if (type === \":\") {\n colon = true;\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n if (brackets.length === 0) bracket = null;\n }\n token = this.tokenizer.nextToken();\n }\n if (this.tokenizer.endOfFile()) end = true;\n if (brackets.length > 0) this.unclosedBracket(bracket);\n if (end && colon) {\n if (!customProperty) {\n while (tokens.length) {\n token = tokens[tokens.length - 1][0];\n if (token !== \"space\" && token !== \"comment\") break;\n this.tokenizer.back(tokens.pop());\n }\n }\n this.decl(tokens, customProperty);\n } else {\n this.unknownWord(tokens);\n }\n }\n parse() {\n let token;\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n switch (token[0]) {\n case \"space\":\n this.spaces += token[1];\n break;\n case \";\":\n this.freeSemicolon(token);\n break;\n case \"}\":\n this.end(token);\n break;\n case \"comment\":\n this.comment(token);\n break;\n case \"at-word\":\n this.atrule(token);\n break;\n case \"{\":\n this.emptyRule(token);\n break;\n default:\n this.other(token);\n break;\n }\n }\n this.endFile();\n }\n precheckMissedSemicolon() {\n }\n raw(node2, prop, tokens, customProperty) {\n let token, type;\n let length = tokens.length;\n let value = \"\";\n let clean = true;\n let next, prev;\n for (let i2 = 0; i2 < length; i2 += 1) {\n token = tokens[i2];\n type = token[0];\n if (type === \"space\" && i2 === length - 1 && !customProperty) {\n clean = false;\n } else if (type === \"comment\") {\n prev = tokens[i2 - 1] ? tokens[i2 - 1][0] : \"empty\";\n next = tokens[i2 + 1] ? tokens[i2 + 1][0] : \"empty\";\n if (!SAFE_COMMENT_NEIGHBOR$1[prev] && !SAFE_COMMENT_NEIGHBOR$1[next]) {\n if (value.slice(-1) === \",\") {\n clean = false;\n } else {\n value += token[1];\n }\n } else {\n clean = false;\n }\n } else {\n value += token[1];\n }\n }\n if (!clean) {\n let raw = tokens.reduce((all, i2) => all + i2[1], \"\");\n node2.raws[prop] = { raw, value };\n }\n node2[prop] = value;\n }\n rule(tokens) {\n tokens.pop();\n let node2 = new Rule$2$1();\n this.init(node2, tokens[0][2]);\n node2.raws.between = this.spacesAndCommentsFromEnd(tokens);\n this.raw(node2, \"selector\", tokens);\n this.current = node2;\n }\n spacesAndCommentsFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\" && lastTokenType !== \"comment\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n // Errors\n spacesAndCommentsFromStart(tokens) {\n let next;\n let spaces = \"\";\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n spaces += tokens.shift()[1];\n }\n return spaces;\n }\n spacesFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n stringFrom(tokens, from) {\n let result2 = \"\";\n for (let i2 = from; i2 < tokens.length; i2++) {\n result2 += tokens[i2][1];\n }\n tokens.splice(from, tokens.length - from);\n return result2;\n }\n unclosedBlock() {\n let pos = this.current.source.start;\n throw this.input.error(\"Unclosed block\", pos.line, pos.column);\n }\n unclosedBracket(bracket) {\n throw this.input.error(\n \"Unclosed bracket\",\n { offset: bracket[2] },\n { offset: bracket[2] + 1 }\n );\n }\n unexpectedClose(token) {\n throw this.input.error(\n \"Unexpected }\",\n { offset: token[2] },\n { offset: token[2] + 1 }\n );\n }\n unknownWord(tokens) {\n throw this.input.error(\n \"Unknown word\",\n { offset: tokens[0][2] },\n { offset: tokens[0][2] + tokens[0][1].length }\n );\n }\n unnamedAtrule(node2, token) {\n throw this.input.error(\n \"At-rule without name\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n};\nvar parser$1 = Parser$1$1;\nlet Container$2$1 = container$1;\nlet Parser2$1 = parser$1;\nlet Input$2$1 = input$1;\nfunction parse$3$1(css, opts) {\n let input2 = new Input$2$1(css, opts);\n let parser2 = new Parser2$1(input2);\n try {\n parser2.parse();\n } catch (e2) {\n if (process.env.NODE_ENV !== \"production\") {\n if (e2.name === \"CssSyntaxError\" && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser\";\n } else if (/\\.sass/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser\";\n } else if (/\\.less$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser\";\n }\n }\n }\n throw e2;\n }\n return parser2.root;\n}\nvar parse_1$1 = parse$3$1;\nparse$3$1.default = parse$3$1;\nContainer$2$1.registerParse(parse$3$1);\nlet { isClean: isClean$3, my: my$3 } = symbols$1;\nlet MapGenerator$1$1 = mapGenerator$1;\nlet stringify$2$1 = stringify_1$1;\nlet Container$1$1 = container$1;\nlet Document$2$1 = document$1$1;\nlet warnOnce$1$1 = warnOnce$2$1;\nlet Result$2$1 = result$1;\nlet parse$2$1 = parse_1$1;\nlet Root$3$1 = root$1;\nconst TYPE_TO_CLASS_NAME$1 = {\n atrule: \"AtRule\",\n comment: \"Comment\",\n decl: \"Declaration\",\n document: \"Document\",\n root: \"Root\",\n rule: \"Rule\"\n};\nconst PLUGIN_PROPS$1 = {\n AtRule: true,\n AtRuleExit: true,\n Comment: true,\n CommentExit: true,\n Declaration: true,\n DeclarationExit: true,\n Document: true,\n DocumentExit: true,\n Once: true,\n OnceExit: true,\n postcssPlugin: true,\n prepare: true,\n Root: true,\n RootExit: true,\n Rule: true,\n RuleExit: true\n};\nconst NOT_VISITORS$1 = {\n Once: true,\n postcssPlugin: true,\n prepare: true\n};\nconst CHILDREN$1 = 0;\nfunction isPromise$1(obj) {\n return typeof obj === \"object\" && typeof obj.then === \"function\";\n}\nfunction getEvents$1(node2) {\n let key = false;\n let type = TYPE_TO_CLASS_NAME$1[node2.type];\n if (node2.type === \"decl\") {\n key = node2.prop.toLowerCase();\n } else if (node2.type === \"atrule\") {\n key = node2.name.toLowerCase();\n }\n if (key && node2.append) {\n return [\n type,\n type + \"-\" + key,\n CHILDREN$1,\n type + \"Exit\",\n type + \"Exit-\" + key\n ];\n } else if (key) {\n return [type, type + \"-\" + key, type + \"Exit\", type + \"Exit-\" + key];\n } else if (node2.append) {\n return [type, CHILDREN$1, type + \"Exit\"];\n } else {\n return [type, type + \"Exit\"];\n }\n}\nfunction toStack$1(node2) {\n let events;\n if (node2.type === \"document\") {\n events = [\"Document\", CHILDREN$1, \"DocumentExit\"];\n } else if (node2.type === \"root\") {\n events = [\"Root\", CHILDREN$1, \"RootExit\"];\n } else {\n events = getEvents$1(node2);\n }\n return {\n eventIndex: 0,\n events,\n iterator: 0,\n node: node2,\n visitorIndex: 0,\n visitors: []\n };\n}\nfunction cleanMarks$1(node2) {\n node2[isClean$3] = false;\n if (node2.nodes) node2.nodes.forEach((i2) => cleanMarks$1(i2));\n return node2;\n}\nlet postcss$2$1 = {};\nlet LazyResult$2$1 = class LazyResult {\n constructor(processor2, css, opts) {\n this.stringified = false;\n this.processed = false;\n let root2;\n if (typeof css === \"object\" && css !== null && (css.type === \"root\" || css.type === \"document\")) {\n root2 = cleanMarks$1(css);\n } else if (css instanceof LazyResult || css instanceof Result$2$1) {\n root2 = cleanMarks$1(css.root);\n if (css.map) {\n if (typeof opts.map === \"undefined\") opts.map = {};\n if (!opts.map.inline) opts.map.inline = false;\n opts.map.prev = css.map;\n }\n } else {\n let parser2 = parse$2$1;\n if (opts.syntax) parser2 = opts.syntax.parse;\n if (opts.parser) parser2 = opts.parser;\n if (parser2.parse) parser2 = parser2.parse;\n try {\n root2 = parser2(css, opts);\n } catch (error) {\n this.processed = true;\n this.error = error;\n }\n if (root2 && !root2[my$3]) {\n Container$1$1.rebuild(root2);\n }\n }\n this.result = new Result$2$1(processor2, root2, opts);\n this.helpers = { ...postcss$2$1, postcss: postcss$2$1, result: this.result };\n this.plugins = this.processor.plugins.map((plugin22) => {\n if (typeof plugin22 === \"object\" && plugin22.prepare) {\n return { ...plugin22, ...plugin22.prepare(this.result) };\n } else {\n return plugin22;\n }\n });\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n if (this.processed) return Promise.resolve(this.result);\n if (!this.processing) {\n this.processing = this.runAsync();\n }\n return this.processing;\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n getAsyncError() {\n throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n }\n handleError(error, node2) {\n let plugin22 = this.result.lastPlugin;\n try {\n if (node2) node2.addToError(error);\n this.error = error;\n if (error.name === \"CssSyntaxError\" && !error.plugin) {\n error.plugin = plugin22.postcssPlugin;\n error.setMessage();\n } else if (plugin22.postcssVersion) {\n if (process.env.NODE_ENV !== \"production\") {\n let pluginName = plugin22.postcssPlugin;\n let pluginVer = plugin22.postcssVersion;\n let runtimeVer = this.result.processor.version;\n let a2 = pluginVer.split(\".\");\n let b = runtimeVer.split(\".\");\n if (a2[0] !== b[0] || parseInt(a2[1]) > parseInt(b[1])) {\n console.error(\n \"Unknown error from PostCSS plugin. Your current PostCSS version is \" + runtimeVer + \", but \" + pluginName + \" uses \" + pluginVer + \". Perhaps this is the source of the error below.\"\n );\n }\n }\n }\n } catch (err) {\n if (console && console.error) console.error(err);\n }\n return error;\n }\n prepareVisitors() {\n this.listeners = {};\n let add = (plugin22, type, cb) => {\n if (!this.listeners[type]) this.listeners[type] = [];\n this.listeners[type].push([plugin22, cb]);\n };\n for (let plugin22 of this.plugins) {\n if (typeof plugin22 === \"object\") {\n for (let event in plugin22) {\n if (!PLUGIN_PROPS$1[event] && /^[A-Z]/.test(event)) {\n throw new Error(\n `Unknown event ${event} in ${plugin22.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`\n );\n }\n if (!NOT_VISITORS$1[event]) {\n if (typeof plugin22[event] === \"object\") {\n for (let filter in plugin22[event]) {\n if (filter === \"*\") {\n add(plugin22, event, plugin22[event][filter]);\n } else {\n add(\n plugin22,\n event + \"-\" + filter.toLowerCase(),\n plugin22[event][filter]\n );\n }\n }\n } else if (typeof plugin22[event] === \"function\") {\n add(plugin22, event, plugin22[event]);\n }\n }\n }\n }\n }\n this.hasListener = Object.keys(this.listeners).length > 0;\n }\n async runAsync() {\n this.plugin = 0;\n for (let i2 = 0; i2 < this.plugins.length; i2++) {\n let plugin22 = this.plugins[i2];\n let promise = this.runOnRoot(plugin22);\n if (isPromise$1(promise)) {\n try {\n await promise;\n } catch (error) {\n throw this.handleError(error);\n }\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean$3]) {\n root2[isClean$3] = true;\n let stack = [toStack$1(root2)];\n while (stack.length > 0) {\n let promise = this.visitTick(stack);\n if (isPromise$1(promise)) {\n try {\n await promise;\n } catch (e2) {\n let node2 = stack[stack.length - 1].node;\n throw this.handleError(e2, node2);\n }\n }\n }\n }\n if (this.listeners.OnceExit) {\n for (let [plugin22, visitor] of this.listeners.OnceExit) {\n this.result.lastPlugin = plugin22;\n try {\n if (root2.type === \"document\") {\n let roots = root2.nodes.map(\n (subRoot) => visitor(subRoot, this.helpers)\n );\n await Promise.all(roots);\n } else {\n await visitor(root2, this.helpers);\n }\n } catch (e2) {\n throw this.handleError(e2);\n }\n }\n }\n }\n this.processed = true;\n return this.stringify();\n }\n runOnRoot(plugin22) {\n this.result.lastPlugin = plugin22;\n try {\n if (typeof plugin22 === \"object\" && plugin22.Once) {\n if (this.result.root.type === \"document\") {\n let roots = this.result.root.nodes.map(\n (root2) => plugin22.Once(root2, this.helpers)\n );\n if (isPromise$1(roots[0])) {\n return Promise.all(roots);\n }\n return roots;\n }\n return plugin22.Once(this.result.root, this.helpers);\n } else if (typeof plugin22 === \"function\") {\n return plugin22(this.result.root, this.result);\n }\n } catch (error) {\n throw this.handleError(error);\n }\n }\n stringify() {\n if (this.error) throw this.error;\n if (this.stringified) return this.result;\n this.stringified = true;\n this.sync();\n let opts = this.result.opts;\n let str = stringify$2$1;\n if (opts.syntax) str = opts.syntax.stringify;\n if (opts.stringifier) str = opts.stringifier;\n if (str.stringify) str = str.stringify;\n let map = new MapGenerator$1$1(str, this.result.root, this.result.opts);\n let data = map.generate();\n this.result.css = data[0];\n this.result.map = data[1];\n return this.result;\n }\n sync() {\n if (this.error) throw this.error;\n if (this.processed) return this.result;\n this.processed = true;\n if (this.processing) {\n throw this.getAsyncError();\n }\n for (let plugin22 of this.plugins) {\n let promise = this.runOnRoot(plugin22);\n if (isPromise$1(promise)) {\n throw this.getAsyncError();\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean$3]) {\n root2[isClean$3] = true;\n this.walkSync(root2);\n }\n if (this.listeners.OnceExit) {\n if (root2.type === \"document\") {\n for (let subRoot of root2.nodes) {\n this.visitSync(this.listeners.OnceExit, subRoot);\n }\n } else {\n this.visitSync(this.listeners.OnceExit, root2);\n }\n }\n }\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this.opts)) {\n warnOnce$1$1(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this.css;\n }\n visitSync(visitors, node2) {\n for (let [plugin22, visitor] of visitors) {\n this.result.lastPlugin = plugin22;\n let promise;\n try {\n promise = visitor(node2, this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2.proxyOf);\n }\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n return true;\n }\n if (isPromise$1(promise)) {\n throw this.getAsyncError();\n }\n }\n }\n visitTick(stack) {\n let visit2 = stack[stack.length - 1];\n let { node: node2, visitors } = visit2;\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n stack.pop();\n return;\n }\n if (visitors.length > 0 && visit2.visitorIndex < visitors.length) {\n let [plugin22, visitor] = visitors[visit2.visitorIndex];\n visit2.visitorIndex += 1;\n if (visit2.visitorIndex === visitors.length) {\n visit2.visitors = [];\n visit2.visitorIndex = 0;\n }\n this.result.lastPlugin = plugin22;\n try {\n return visitor(node2.toProxy(), this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2);\n }\n }\n if (visit2.iterator !== 0) {\n let iterator = visit2.iterator;\n let child;\n while (child = node2.nodes[node2.indexes[iterator]]) {\n node2.indexes[iterator] += 1;\n if (!child[isClean$3]) {\n child[isClean$3] = true;\n stack.push(toStack$1(child));\n return;\n }\n }\n visit2.iterator = 0;\n delete node2.indexes[iterator];\n }\n let events = visit2.events;\n while (visit2.eventIndex < events.length) {\n let event = events[visit2.eventIndex];\n visit2.eventIndex += 1;\n if (event === CHILDREN$1) {\n if (node2.nodes && node2.nodes.length) {\n node2[isClean$3] = true;\n visit2.iterator = node2.getIterator();\n }\n return;\n } else if (this.listeners[event]) {\n visit2.visitors = this.listeners[event];\n return;\n }\n }\n stack.pop();\n }\n walkSync(node2) {\n node2[isClean$3] = true;\n let events = getEvents$1(node2);\n for (let event of events) {\n if (event === CHILDREN$1) {\n if (node2.nodes) {\n node2.each((child) => {\n if (!child[isClean$3]) this.walkSync(child);\n });\n }\n } else {\n let visitors = this.listeners[event];\n if (visitors) {\n if (this.visitSync(visitors, node2.toProxy())) return;\n }\n }\n }\n }\n warnings() {\n return this.sync().warnings();\n }\n get content() {\n return this.stringify().content;\n }\n get css() {\n return this.stringify().css;\n }\n get map() {\n return this.stringify().map;\n }\n get messages() {\n return this.sync().messages;\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n return this.sync().root;\n }\n get [Symbol.toStringTag]() {\n return \"LazyResult\";\n }\n};\nLazyResult$2$1.registerPostcss = (dependant) => {\n postcss$2$1 = dependant;\n};\nvar lazyResult$1 = LazyResult$2$1;\nLazyResult$2$1.default = LazyResult$2$1;\nRoot$3$1.registerLazyResult(LazyResult$2$1);\nDocument$2$1.registerLazyResult(LazyResult$2$1);\nlet MapGenerator2$1 = mapGenerator$1;\nlet stringify$1$1 = stringify_1$1;\nlet warnOnce2$1 = warnOnce$2$1;\nlet parse$1$1 = parse_1$1;\nconst Result$1$1 = result$1;\nlet NoWorkResult$1$1 = class NoWorkResult {\n constructor(processor2, css, opts) {\n css = css.toString();\n this.stringified = false;\n this._processor = processor2;\n this._css = css;\n this._opts = opts;\n this._map = void 0;\n let root2;\n let str = stringify$1$1;\n this.result = new Result$1$1(this._processor, root2, this._opts);\n this.result.css = css;\n let self = this;\n Object.defineProperty(this.result, \"root\", {\n get() {\n return self.root;\n }\n });\n let map = new MapGenerator2$1(str, root2, this._opts, css);\n if (map.isMap()) {\n let [generatedCSS, generatedMap] = map.generate();\n if (generatedCSS) {\n this.result.css = generatedCSS;\n }\n if (generatedMap) {\n this.result.map = generatedMap;\n }\n } else {\n map.clearAnnotation();\n this.result.css = map.css;\n }\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n return Promise.resolve(this.result);\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n sync() {\n if (this.error) throw this.error;\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this._opts)) {\n warnOnce2$1(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this._css;\n }\n warnings() {\n return [];\n }\n get content() {\n return this.result.css;\n }\n get css() {\n return this.result.css;\n }\n get map() {\n return this.result.map;\n }\n get messages() {\n return [];\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n if (this._root) {\n return this._root;\n }\n let root2;\n let parser2 = parse$1$1;\n try {\n root2 = parser2(this._css, this._opts);\n } catch (error) {\n this.error = error;\n }\n if (this.error) {\n throw this.error;\n } else {\n this._root = root2;\n return root2;\n }\n }\n get [Symbol.toStringTag]() {\n return \"NoWorkResult\";\n }\n};\nvar noWorkResult$1 = NoWorkResult$1$1;\nNoWorkResult$1$1.default = NoWorkResult$1$1;\nlet NoWorkResult2$1 = noWorkResult$1;\nlet LazyResult$1$1 = lazyResult$1;\nlet Document$1$1 = document$1$1;\nlet Root$2$1 = root$1;\nlet Processor$1$1 = class Processor {\n constructor(plugins = []) {\n this.version = \"8.4.38\";\n this.plugins = this.normalize(plugins);\n }\n normalize(plugins) {\n let normalized = [];\n for (let i2 of plugins) {\n if (i2.postcss === true) {\n i2 = i2();\n } else if (i2.postcss) {\n i2 = i2.postcss;\n }\n if (typeof i2 === \"object\" && Array.isArray(i2.plugins)) {\n normalized = normalized.concat(i2.plugins);\n } else if (typeof i2 === \"object\" && i2.postcssPlugin) {\n normalized.push(i2);\n } else if (typeof i2 === \"function\") {\n normalized.push(i2);\n } else if (typeof i2 === \"object\" && (i2.parse || i2.stringify)) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error(\n \"PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.\"\n );\n }\n } else {\n throw new Error(i2 + \" is not a PostCSS plugin\");\n }\n }\n return normalized;\n }\n process(css, opts = {}) {\n if (!this.plugins.length && !opts.parser && !opts.stringifier && !opts.syntax) {\n return new NoWorkResult2$1(this, css, opts);\n } else {\n return new LazyResult$1$1(this, css, opts);\n }\n }\n use(plugin22) {\n this.plugins = this.plugins.concat(this.normalize([plugin22]));\n return this;\n }\n};\nvar processor$1 = Processor$1$1;\nProcessor$1$1.default = Processor$1$1;\nRoot$2$1.registerProcessor(Processor$1$1);\nDocument$1$1.registerProcessor(Processor$1$1);\nlet Declaration$1$1 = declaration$1;\nlet PreviousMap2$1 = previousMap$1;\nlet Comment$1$1 = comment$1;\nlet AtRule$1$1 = atRule$1;\nlet Input$1$1 = input$1;\nlet Root$1$1 = root$1;\nlet Rule$1$1 = rule$1;\nfunction fromJSON$1$1(json, inputs) {\n if (Array.isArray(json)) return json.map((n2) => fromJSON$1$1(n2));\n let { inputs: ownInputs, ...defaults } = json;\n if (ownInputs) {\n inputs = [];\n for (let input2 of ownInputs) {\n let inputHydrated = { ...input2, __proto__: Input$1$1.prototype };\n if (inputHydrated.map) {\n inputHydrated.map = {\n ...inputHydrated.map,\n __proto__: PreviousMap2$1.prototype\n };\n }\n inputs.push(inputHydrated);\n }\n }\n if (defaults.nodes) {\n defaults.nodes = json.nodes.map((n2) => fromJSON$1$1(n2, inputs));\n }\n if (defaults.source) {\n let { inputId, ...source } = defaults.source;\n defaults.source = source;\n if (inputId != null) {\n defaults.source.input = inputs[inputId];\n }\n }\n if (defaults.type === \"root\") {\n return new Root$1$1(defaults);\n } else if (defaults.type === \"decl\") {\n return new Declaration$1$1(defaults);\n } else if (defaults.type === \"rule\") {\n return new Rule$1$1(defaults);\n } else if (defaults.type === \"comment\") {\n return new Comment$1$1(defaults);\n } else if (defaults.type === \"atrule\") {\n return new AtRule$1$1(defaults);\n } else {\n throw new Error(\"Unknown node type: \" + json.type);\n }\n}\nvar fromJSON_1$1 = fromJSON$1$1;\nfromJSON$1$1.default = fromJSON$1$1;\nlet CssSyntaxError2$1 = cssSyntaxError$1;\nlet Declaration2$1 = declaration$1;\nlet LazyResult2$1 = lazyResult$1;\nlet Container2$1 = container$1;\nlet Processor2$1 = processor$1;\nlet stringify$5 = stringify_1$1;\nlet fromJSON$2 = fromJSON_1$1;\nlet Document22 = document$1$1;\nlet Warning2$1 = warning$1;\nlet Comment2$1 = comment$1;\nlet AtRule2$1 = atRule$1;\nlet Result2$1 = result$1;\nlet Input2$1 = input$1;\nlet parse$5 = parse_1$1;\nlet list$3 = list_1$1;\nlet Rule2$1 = rule$1;\nlet Root2$1 = root$1;\nlet Node2$1 = node$1;\nfunction postcss$3(...plugins) {\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0];\n }\n return new Processor2$1(plugins);\n}\npostcss$3.plugin = function plugin(name, initializer) {\n let warningPrinted = false;\n function creator(...args) {\n if (console && console.warn && !warningPrinted) {\n warningPrinted = true;\n console.warn(\n name + \": postcss.plugin was deprecated. Migration guide:\\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration\"\n );\n if (process.env.LANG && process.env.LANG.startsWith(\"cn\")) {\n console.warn(\n name + \": 里面 postcss.plugin 被弃用. 迁移指南:\\nhttps://www.w3ctech.com/topic/2226\"\n );\n }\n }\n let transformer = initializer(...args);\n transformer.postcssPlugin = name;\n transformer.postcssVersion = new Processor2$1().version;\n return transformer;\n }\n let cache;\n Object.defineProperty(creator, \"postcss\", {\n get() {\n if (!cache) cache = creator();\n return cache;\n }\n });\n creator.process = function(css, processOpts, pluginOpts) {\n return postcss$3([creator(pluginOpts)]).process(css, processOpts);\n };\n return creator;\n};\npostcss$3.stringify = stringify$5;\npostcss$3.parse = parse$5;\npostcss$3.fromJSON = fromJSON$2;\npostcss$3.list = list$3;\npostcss$3.comment = (defaults) => new Comment2$1(defaults);\npostcss$3.atRule = (defaults) => new AtRule2$1(defaults);\npostcss$3.decl = (defaults) => new Declaration2$1(defaults);\npostcss$3.rule = (defaults) => new Rule2$1(defaults);\npostcss$3.root = (defaults) => new Root2$1(defaults);\npostcss$3.document = (defaults) => new Document22(defaults);\npostcss$3.CssSyntaxError = CssSyntaxError2$1;\npostcss$3.Declaration = Declaration2$1;\npostcss$3.Container = Container2$1;\npostcss$3.Processor = Processor2$1;\npostcss$3.Document = Document22;\npostcss$3.Comment = Comment2$1;\npostcss$3.Warning = Warning2$1;\npostcss$3.AtRule = AtRule2$1;\npostcss$3.Result = Result2$1;\npostcss$3.Input = Input2$1;\npostcss$3.Rule = Rule2$1;\npostcss$3.Root = Root2$1;\npostcss$3.Node = Node2$1;\nLazyResult2$1.registerPostcss(postcss$3);\nvar postcss_1$1 = postcss$3;\npostcss$3.default = postcss$3;\nconst postcss$1$1 = /* @__PURE__ */ getDefaultExportFromCjs$1(postcss_1$1);\npostcss$1$1.stringify;\npostcss$1$1.fromJSON;\npostcss$1$1.plugin;\npostcss$1$1.parse;\npostcss$1$1.list;\npostcss$1$1.document;\npostcss$1$1.comment;\npostcss$1$1.atRule;\npostcss$1$1.rule;\npostcss$1$1.decl;\npostcss$1$1.root;\npostcss$1$1.CssSyntaxError;\npostcss$1$1.Declaration;\npostcss$1$1.Container;\npostcss$1$1.Processor;\npostcss$1$1.Document;\npostcss$1$1.Comment;\npostcss$1$1.Warning;\npostcss$1$1.AtRule;\npostcss$1$1.Result;\npostcss$1$1.Input;\npostcss$1$1.Rule;\npostcss$1$1.Root;\npostcss$1$1.Node;\nvar __defProp2 = Object.defineProperty;\nvar __defNormalProp2 = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField2 = (obj, key, value) => __defNormalProp2(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nfunction getDefaultExportFromCjs(x2) {\n return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, \"default\") ? x2[\"default\"] : x2;\n}\nfunction getAugmentedNamespace(n2) {\n if (n2.__esModule) return n2;\n var f2 = n2.default;\n if (typeof f2 == \"function\") {\n var a2 = function a22() {\n if (this instanceof a22) {\n return Reflect.construct(f2, arguments, this.constructor);\n }\n return f2.apply(this, arguments);\n };\n a2.prototype = f2.prototype;\n } else a2 = {};\n Object.defineProperty(a2, \"__esModule\", { value: true });\n Object.keys(n2).forEach(function(k) {\n var d = Object.getOwnPropertyDescriptor(n2, k);\n Object.defineProperty(a2, k, d.get ? d : {\n enumerable: true,\n get: function() {\n return n2[k];\n }\n });\n });\n return a2;\n}\nvar picocolors_browser = { exports: {} };\nvar x = String;\nvar create = function() {\n return { isColorSupported: false, reset: x, bold: x, dim: x, italic: x, underline: x, inverse: x, hidden: x, strikethrough: x, black: x, red: x, green: x, yellow: x, blue: x, magenta: x, cyan: x, white: x, gray: x, bgBlack: x, bgRed: x, bgGreen: x, bgYellow: x, bgBlue: x, bgMagenta: x, bgCyan: x, bgWhite: x };\n};\npicocolors_browser.exports = create();\npicocolors_browser.exports.createColors = create;\nvar picocolors_browserExports = picocolors_browser.exports;\nconst __viteBrowserExternal = {};\nconst __viteBrowserExternal$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: __viteBrowserExternal\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst require$$2 = /* @__PURE__ */ getAugmentedNamespace(__viteBrowserExternal$1);\nlet pico = picocolors_browserExports;\nlet terminalHighlight$1 = require$$2;\nlet CssSyntaxError$3 = class CssSyntaxError2 extends Error {\n constructor(message, line, column, source, file, plugin22) {\n super(message);\n this.name = \"CssSyntaxError\";\n this.reason = message;\n if (file) {\n this.file = file;\n }\n if (source) {\n this.source = source;\n }\n if (plugin22) {\n this.plugin = plugin22;\n }\n if (typeof line !== \"undefined\" && typeof column !== \"undefined\") {\n if (typeof line === \"number\") {\n this.line = line;\n this.column = column;\n } else {\n this.line = line.line;\n this.column = line.column;\n this.endLine = column.line;\n this.endColumn = column.column;\n }\n }\n this.setMessage();\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, CssSyntaxError2);\n }\n }\n setMessage() {\n this.message = this.plugin ? this.plugin + \": \" : \"\";\n this.message += this.file ? this.file : \"\";\n if (typeof this.line !== \"undefined\") {\n this.message += \":\" + this.line + \":\" + this.column;\n }\n this.message += \": \" + this.reason;\n }\n showSourceCode(color) {\n if (!this.source) return \"\";\n let css = this.source;\n if (color == null) color = pico.isColorSupported;\n if (terminalHighlight$1) {\n if (color) css = terminalHighlight$1(css);\n }\n let lines = css.split(/\\r?\\n/);\n let start = Math.max(this.line - 3, 0);\n let end = Math.min(this.line + 2, lines.length);\n let maxWidth = String(end).length;\n let mark, aside;\n if (color) {\n let { bold, gray, red } = pico.createColors(true);\n mark = (text) => bold(red(text));\n aside = (text) => gray(text);\n } else {\n mark = aside = (str) => str;\n }\n return lines.slice(start, end).map((line, index2) => {\n let number = start + 1 + index2;\n let gutter = \" \" + (\" \" + number).slice(-maxWidth) + \" | \";\n if (number === this.line) {\n let spacing = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, this.column - 1).replace(/[^\\t]/g, \" \");\n return mark(\">\") + aside(gutter) + line + \"\\n \" + spacing + mark(\"^\");\n }\n return \" \" + aside(gutter) + line;\n }).join(\"\\n\");\n }\n toString() {\n let code = this.showSourceCode();\n if (code) {\n code = \"\\n\\n\" + code + \"\\n\";\n }\n return this.name + \": \" + this.message + code;\n }\n};\nvar cssSyntaxError = CssSyntaxError$3;\nCssSyntaxError$3.default = CssSyntaxError$3;\nvar symbols = {};\nsymbols.isClean = Symbol(\"isClean\");\nsymbols.my = Symbol(\"my\");\nconst DEFAULT_RAW = {\n after: \"\\n\",\n beforeClose: \"\\n\",\n beforeComment: \"\\n\",\n beforeDecl: \"\\n\",\n beforeOpen: \" \",\n beforeRule: \"\\n\",\n colon: \": \",\n commentLeft: \" \",\n commentRight: \" \",\n emptyBody: \"\",\n indent: \" \",\n semicolon: false\n};\nfunction capitalize(str) {\n return str[0].toUpperCase() + str.slice(1);\n}\nlet Stringifier$2 = class Stringifier2 {\n constructor(builder) {\n this.builder = builder;\n }\n atrule(node2, semicolon) {\n let name = \"@\" + node2.name;\n let params = node2.params ? this.rawValue(node2, \"params\") : \"\";\n if (typeof node2.raws.afterName !== \"undefined\") {\n name += node2.raws.afterName;\n } else if (params) {\n name += \" \";\n }\n if (node2.nodes) {\n this.block(node2, name + params);\n } else {\n let end = (node2.raws.between || \"\") + (semicolon ? \";\" : \"\");\n this.builder(name + params + end, node2);\n }\n }\n beforeAfter(node2, detect) {\n let value;\n if (node2.type === \"decl\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (node2.type === \"comment\") {\n value = this.raw(node2, null, \"beforeComment\");\n } else if (detect === \"before\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else {\n value = this.raw(node2, null, \"beforeClose\");\n }\n let buf = node2.parent;\n let depth = 0;\n while (buf && buf.type !== \"root\") {\n depth += 1;\n buf = buf.parent;\n }\n if (value.includes(\"\\n\")) {\n let indent = this.raw(node2, null, \"indent\");\n if (indent.length) {\n for (let step = 0; step < depth; step++) value += indent;\n }\n }\n return value;\n }\n block(node2, start) {\n let between = this.raw(node2, \"between\", \"beforeOpen\");\n this.builder(start + between + \"{\", node2, \"start\");\n let after;\n if (node2.nodes && node2.nodes.length) {\n this.body(node2);\n after = this.raw(node2, \"after\");\n } else {\n after = this.raw(node2, \"after\", \"emptyBody\");\n }\n if (after) this.builder(after);\n this.builder(\"}\", node2, \"end\");\n }\n body(node2) {\n let last = node2.nodes.length - 1;\n while (last > 0) {\n if (node2.nodes[last].type !== \"comment\") break;\n last -= 1;\n }\n let semicolon = this.raw(node2, \"semicolon\");\n for (let i2 = 0; i2 < node2.nodes.length; i2++) {\n let child = node2.nodes[i2];\n let before = this.raw(child, \"before\");\n if (before) this.builder(before);\n this.stringify(child, last !== i2 || semicolon);\n }\n }\n comment(node2) {\n let left = this.raw(node2, \"left\", \"commentLeft\");\n let right = this.raw(node2, \"right\", \"commentRight\");\n this.builder(\"/*\" + left + node2.text + right + \"*/\", node2);\n }\n decl(node2, semicolon) {\n let between = this.raw(node2, \"between\", \"colon\");\n let string = node2.prop + between + this.rawValue(node2, \"value\");\n if (node2.important) {\n string += node2.raws.important || \" !important\";\n }\n if (semicolon) string += \";\";\n this.builder(string, node2);\n }\n document(node2) {\n this.body(node2);\n }\n raw(node2, own, detect) {\n let value;\n if (!detect) detect = own;\n if (own) {\n value = node2.raws[own];\n if (typeof value !== \"undefined\") return value;\n }\n let parent = node2.parent;\n if (detect === \"before\") {\n if (!parent || parent.type === \"root\" && parent.first === node2) {\n return \"\";\n }\n if (parent && parent.type === \"document\") {\n return \"\";\n }\n }\n if (!parent) return DEFAULT_RAW[detect];\n let root2 = node2.root();\n if (!root2.rawCache) root2.rawCache = {};\n if (typeof root2.rawCache[detect] !== \"undefined\") {\n return root2.rawCache[detect];\n }\n if (detect === \"before\" || detect === \"after\") {\n return this.beforeAfter(node2, detect);\n } else {\n let method = \"raw\" + capitalize(detect);\n if (this[method]) {\n value = this[method](root2, node2);\n } else {\n root2.walk((i2) => {\n value = i2.raws[own];\n if (typeof value !== \"undefined\") return false;\n });\n }\n }\n if (typeof value === \"undefined\") value = DEFAULT_RAW[detect];\n root2.rawCache[detect] = value;\n return value;\n }\n rawBeforeClose(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length > 0) {\n if (typeof i2.raws.after !== \"undefined\") {\n value = i2.raws.after;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawBeforeComment(root2, node2) {\n let value;\n root2.walkComments((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeDecl(root2, node2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeOpen(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.type !== \"decl\") {\n value = i2.raws.between;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawBeforeRule(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && (i2.parent !== root2 || root2.first !== i2)) {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawColon(root2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.between !== \"undefined\") {\n value = i2.raws.between.replace(/[^\\s:]/g, \"\");\n return false;\n }\n });\n return value;\n }\n rawEmptyBody(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length === 0) {\n value = i2.raws.after;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawIndent(root2) {\n if (root2.raws.indent) return root2.raws.indent;\n let value;\n root2.walk((i2) => {\n let p = i2.parent;\n if (p && p !== root2 && p.parent && p.parent === root2) {\n if (typeof i2.raws.before !== \"undefined\") {\n let parts = i2.raws.before.split(\"\\n\");\n value = parts[parts.length - 1];\n value = value.replace(/\\S/g, \"\");\n return false;\n }\n }\n });\n return value;\n }\n rawSemicolon(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length && i2.last.type === \"decl\") {\n value = i2.raws.semicolon;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawValue(node2, prop) {\n let value = node2[prop];\n let raw = node2.raws[prop];\n if (raw && raw.value === value) {\n return raw.raw;\n }\n return value;\n }\n root(node2) {\n this.body(node2);\n if (node2.raws.after) this.builder(node2.raws.after);\n }\n rule(node2) {\n this.block(node2, this.rawValue(node2, \"selector\"));\n if (node2.raws.ownSemicolon) {\n this.builder(node2.raws.ownSemicolon, node2, \"end\");\n }\n }\n stringify(node2, semicolon) {\n if (!this[node2.type]) {\n throw new Error(\n \"Unknown AST node type \" + node2.type + \". Maybe you need to change PostCSS stringifier.\"\n );\n }\n this[node2.type](node2, semicolon);\n }\n};\nvar stringifier = Stringifier$2;\nStringifier$2.default = Stringifier$2;\nlet Stringifier$1 = stringifier;\nfunction stringify$4(node2, builder) {\n let str = new Stringifier$1(builder);\n str.stringify(node2);\n}\nvar stringify_1 = stringify$4;\nstringify$4.default = stringify$4;\nlet { isClean: isClean$2, my: my$2 } = symbols;\nlet CssSyntaxError$2 = cssSyntaxError;\nlet Stringifier22 = stringifier;\nlet stringify$3 = stringify_1;\nfunction cloneNode(obj, parent) {\n let cloned = new obj.constructor();\n for (let i2 in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, i2)) {\n continue;\n }\n if (i2 === \"proxyCache\") continue;\n let value = obj[i2];\n let type = typeof value;\n if (i2 === \"parent\" && type === \"object\") {\n if (parent) cloned[i2] = parent;\n } else if (i2 === \"source\") {\n cloned[i2] = value;\n } else if (Array.isArray(value)) {\n cloned[i2] = value.map((j) => cloneNode(j, cloned));\n } else {\n if (type === \"object\" && value !== null) value = cloneNode(value);\n cloned[i2] = value;\n }\n }\n return cloned;\n}\nlet Node$4 = class Node3 {\n constructor(defaults = {}) {\n this.raws = {};\n this[isClean$2] = false;\n this[my$2] = true;\n for (let name in defaults) {\n if (name === \"nodes\") {\n this.nodes = [];\n for (let node2 of defaults[name]) {\n if (typeof node2.clone === \"function\") {\n this.append(node2.clone());\n } else {\n this.append(node2);\n }\n }\n } else {\n this[name] = defaults[name];\n }\n }\n }\n addToError(error) {\n error.postcssNode = this;\n if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n let s2 = this.source;\n error.stack = error.stack.replace(\n /\\n\\s{4}at /,\n `$&${s2.input.from}:${s2.start.line}:${s2.start.column}$&`\n );\n }\n return error;\n }\n after(add) {\n this.parent.insertAfter(this, add);\n return this;\n }\n assign(overrides = {}) {\n for (let name in overrides) {\n this[name] = overrides[name];\n }\n return this;\n }\n before(add) {\n this.parent.insertBefore(this, add);\n return this;\n }\n cleanRaws(keepBetween) {\n delete this.raws.before;\n delete this.raws.after;\n if (!keepBetween) delete this.raws.between;\n }\n clone(overrides = {}) {\n let cloned = cloneNode(this);\n for (let name in overrides) {\n cloned[name] = overrides[name];\n }\n return cloned;\n }\n cloneAfter(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertAfter(this, cloned);\n return cloned;\n }\n cloneBefore(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertBefore(this, cloned);\n return cloned;\n }\n error(message, opts = {}) {\n if (this.source) {\n let { end, start } = this.rangeBy(opts);\n return this.source.input.error(\n message,\n { column: start.column, line: start.line },\n { column: end.column, line: end.line },\n opts\n );\n }\n return new CssSyntaxError$2(message);\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"prop\" || prop === \"value\" || prop === \"name\" || prop === \"params\" || prop === \"important\" || /* c8 ignore next */\n prop === \"text\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n markDirty() {\n if (this[isClean$2]) {\n this[isClean$2] = false;\n let next = this;\n while (next = next.parent) {\n next[isClean$2] = false;\n }\n }\n }\n next() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 + 1];\n }\n positionBy(opts, stringRepresentation) {\n let pos = this.source.start;\n if (opts.index) {\n pos = this.positionInside(opts.index, stringRepresentation);\n } else if (opts.word) {\n stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) pos = this.positionInside(index2, stringRepresentation);\n }\n return pos;\n }\n positionInside(index2, stringRepresentation) {\n let string = stringRepresentation || this.toString();\n let column = this.source.start.column;\n let line = this.source.start.line;\n for (let i2 = 0; i2 < index2; i2++) {\n if (string[i2] === \"\\n\") {\n column = 1;\n line += 1;\n } else {\n column += 1;\n }\n }\n return { column, line };\n }\n prev() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 - 1];\n }\n rangeBy(opts) {\n let start = {\n column: this.source.start.column,\n line: this.source.start.line\n };\n let end = this.source.end ? {\n column: this.source.end.column + 1,\n line: this.source.end.line\n } : {\n column: start.column + 1,\n line: start.line\n };\n if (opts.word) {\n let stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) {\n start = this.positionInside(index2, stringRepresentation);\n end = this.positionInside(index2 + opts.word.length, stringRepresentation);\n }\n } else {\n if (opts.start) {\n start = {\n column: opts.start.column,\n line: opts.start.line\n };\n } else if (opts.index) {\n start = this.positionInside(opts.index);\n }\n if (opts.end) {\n end = {\n column: opts.end.column,\n line: opts.end.line\n };\n } else if (typeof opts.endIndex === \"number\") {\n end = this.positionInside(opts.endIndex);\n } else if (opts.index) {\n end = this.positionInside(opts.index + 1);\n }\n }\n if (end.line < start.line || end.line === start.line && end.column <= start.column) {\n end = { column: start.column + 1, line: start.line };\n }\n return { end, start };\n }\n raw(prop, defaultType) {\n let str = new Stringifier22();\n return str.raw(this, prop, defaultType);\n }\n remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n this.parent = void 0;\n return this;\n }\n replaceWith(...nodes) {\n if (this.parent) {\n let bookmark = this;\n let foundSelf = false;\n for (let node2 of nodes) {\n if (node2 === this) {\n foundSelf = true;\n } else if (foundSelf) {\n this.parent.insertAfter(bookmark, node2);\n bookmark = node2;\n } else {\n this.parent.insertBefore(bookmark, node2);\n }\n }\n if (!foundSelf) {\n this.remove();\n }\n }\n return this;\n }\n root() {\n let result2 = this;\n while (result2.parent && result2.parent.type !== \"document\") {\n result2 = result2.parent;\n }\n return result2;\n }\n toJSON(_, inputs) {\n let fixed = {};\n let emitInputs = inputs == null;\n inputs = inputs || /* @__PURE__ */ new Map();\n let inputsNextIndex = 0;\n for (let name in this) {\n if (!Object.prototype.hasOwnProperty.call(this, name)) {\n continue;\n }\n if (name === \"parent\" || name === \"proxyCache\") continue;\n let value = this[name];\n if (Array.isArray(value)) {\n fixed[name] = value.map((i2) => {\n if (typeof i2 === \"object\" && i2.toJSON) {\n return i2.toJSON(null, inputs);\n } else {\n return i2;\n }\n });\n } else if (typeof value === \"object\" && value.toJSON) {\n fixed[name] = value.toJSON(null, inputs);\n } else if (name === \"source\") {\n let inputId = inputs.get(value.input);\n if (inputId == null) {\n inputId = inputsNextIndex;\n inputs.set(value.input, inputsNextIndex);\n inputsNextIndex++;\n }\n fixed[name] = {\n end: value.end,\n inputId,\n start: value.start\n };\n } else {\n fixed[name] = value;\n }\n }\n if (emitInputs) {\n fixed.inputs = [...inputs.keys()].map((input2) => input2.toJSON());\n }\n return fixed;\n }\n toProxy() {\n if (!this.proxyCache) {\n this.proxyCache = new Proxy(this, this.getProxyProcessor());\n }\n return this.proxyCache;\n }\n toString(stringifier2 = stringify$3) {\n if (stringifier2.stringify) stringifier2 = stringifier2.stringify;\n let result2 = \"\";\n stringifier2(this, (i2) => {\n result2 += i2;\n });\n return result2;\n }\n warn(result2, text, opts) {\n let data = { node: this };\n for (let i2 in opts) data[i2] = opts[i2];\n return result2.warn(text, data);\n }\n get proxyOf() {\n return this;\n }\n};\nvar node = Node$4;\nNode$4.default = Node$4;\nlet Node$3 = node;\nlet Declaration$4 = class Declaration2 extends Node$3 {\n constructor(defaults) {\n if (defaults && typeof defaults.value !== \"undefined\" && typeof defaults.value !== \"string\") {\n defaults = { ...defaults, value: String(defaults.value) };\n }\n super(defaults);\n this.type = \"decl\";\n }\n get variable() {\n return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n }\n};\nvar declaration = Declaration$4;\nDeclaration$4.default = Declaration$4;\nlet urlAlphabet = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\nlet customAlphabet = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = \"\";\n let i2 = size;\n while (i2--) {\n id += alphabet[Math.random() * alphabet.length | 0];\n }\n return id;\n };\n};\nlet nanoid$1 = (size = 21) => {\n let id = \"\";\n let i2 = size;\n while (i2--) {\n id += urlAlphabet[Math.random() * 64 | 0];\n }\n return id;\n};\nvar nonSecure = { nanoid: nanoid$1, customAlphabet };\nlet { SourceMapConsumer: SourceMapConsumer$2, SourceMapGenerator: SourceMapGenerator$2 } = require$$2;\nlet { existsSync, readFileSync } = require$$2;\nlet { dirname: dirname$1, join } = require$$2;\nfunction fromBase64(str) {\n if (Buffer) {\n return Buffer.from(str, \"base64\").toString();\n } else {\n return window.atob(str);\n }\n}\nlet PreviousMap$2 = class PreviousMap2 {\n constructor(css, opts) {\n if (opts.map === false) return;\n this.loadAnnotation(css);\n this.inline = this.startWith(this.annotation, \"data:\");\n let prev = opts.map ? opts.map.prev : void 0;\n let text = this.loadMap(opts.from, prev);\n if (!this.mapFile && opts.from) {\n this.mapFile = opts.from;\n }\n if (this.mapFile) this.root = dirname$1(this.mapFile);\n if (text) this.text = text;\n }\n consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new SourceMapConsumer$2(this.text);\n }\n return this.consumerCache;\n }\n decodeInline(text) {\n let baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/;\n let baseUri = /^data:application\\/json;base64,/;\n let charsetUri = /^data:application\\/json;charset=utf-?8,/;\n let uri = /^data:application\\/json,/;\n if (charsetUri.test(text) || uri.test(text)) {\n return decodeURIComponent(text.substr(RegExp.lastMatch.length));\n }\n if (baseCharsetUri.test(text) || baseUri.test(text)) {\n return fromBase64(text.substr(RegExp.lastMatch.length));\n }\n let encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n throw new Error(\"Unsupported source map encoding \" + encoding);\n }\n getAnnotationURL(sourceMapString) {\n return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n }\n isMap(map) {\n if (typeof map !== \"object\") return false;\n return typeof map.mappings === \"string\" || typeof map._mappings === \"string\" || Array.isArray(map.sections);\n }\n loadAnnotation(css) {\n let comments = css.match(/\\/\\*\\s*# sourceMappingURL=/gm);\n if (!comments) return;\n let start = css.lastIndexOf(comments.pop());\n let end = css.indexOf(\"*/\", start);\n if (start > -1 && end > -1) {\n this.annotation = this.getAnnotationURL(css.substring(start, end));\n }\n }\n loadFile(path) {\n this.root = dirname$1(path);\n if (existsSync(path)) {\n this.mapFile = path;\n return readFileSync(path, \"utf-8\").toString().trim();\n }\n }\n loadMap(file, prev) {\n if (prev === false) return false;\n if (prev) {\n if (typeof prev === \"string\") {\n return prev;\n } else if (typeof prev === \"function\") {\n let prevPath = prev(file);\n if (prevPath) {\n let map = this.loadFile(prevPath);\n if (!map) {\n throw new Error(\n \"Unable to load previous source map: \" + prevPath.toString()\n );\n }\n return map;\n }\n } else if (prev instanceof SourceMapConsumer$2) {\n return SourceMapGenerator$2.fromSourceMap(prev).toString();\n } else if (prev instanceof SourceMapGenerator$2) {\n return prev.toString();\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev);\n } else {\n throw new Error(\n \"Unsupported previous source map format: \" + prev.toString()\n );\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation);\n } else if (this.annotation) {\n let map = this.annotation;\n if (file) map = join(dirname$1(file), map);\n return this.loadFile(map);\n }\n }\n startWith(string, start) {\n if (!string) return false;\n return string.substr(0, start.length) === start;\n }\n withContent() {\n return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n }\n};\nvar previousMap = PreviousMap$2;\nPreviousMap$2.default = PreviousMap$2;\nlet { SourceMapConsumer: SourceMapConsumer$1, SourceMapGenerator: SourceMapGenerator$1 } = require$$2;\nlet { fileURLToPath, pathToFileURL: pathToFileURL$1 } = require$$2;\nlet { isAbsolute, resolve: resolve$1 } = require$$2;\nlet { nanoid } = nonSecure;\nlet terminalHighlight = require$$2;\nlet CssSyntaxError$1 = cssSyntaxError;\nlet PreviousMap$1 = previousMap;\nlet fromOffsetCache = Symbol(\"fromOffsetCache\");\nlet sourceMapAvailable$1 = Boolean(SourceMapConsumer$1 && SourceMapGenerator$1);\nlet pathAvailable$1 = Boolean(resolve$1 && isAbsolute);\nlet Input$4 = class Input2 {\n constructor(css, opts = {}) {\n if (css === null || typeof css === \"undefined\" || typeof css === \"object\" && !css.toString) {\n throw new Error(`PostCSS received ${css} instead of CSS string`);\n }\n this.css = css.toString();\n if (this.css[0] === \"\\uFEFF\" || this.css[0] === \"￾\") {\n this.hasBOM = true;\n this.css = this.css.slice(1);\n } else {\n this.hasBOM = false;\n }\n if (opts.from) {\n if (!pathAvailable$1 || /^\\w+:\\/\\//.test(opts.from) || isAbsolute(opts.from)) {\n this.file = opts.from;\n } else {\n this.file = resolve$1(opts.from);\n }\n }\n if (pathAvailable$1 && sourceMapAvailable$1) {\n let map = new PreviousMap$1(this.css, opts);\n if (map.text) {\n this.map = map;\n let file = map.consumer().file;\n if (!this.file && file) this.file = this.mapResolve(file);\n }\n }\n if (!this.file) {\n this.id = \"\";\n }\n if (this.map) this.map.file = this.from;\n }\n error(message, line, column, opts = {}) {\n let result2, endLine, endColumn;\n if (line && typeof line === \"object\") {\n let start = line;\n let end = column;\n if (typeof start.offset === \"number\") {\n let pos = this.fromOffset(start.offset);\n line = pos.line;\n column = pos.col;\n } else {\n line = start.line;\n column = start.column;\n }\n if (typeof end.offset === \"number\") {\n let pos = this.fromOffset(end.offset);\n endLine = pos.line;\n endColumn = pos.col;\n } else {\n endLine = end.line;\n endColumn = end.column;\n }\n } else if (!column) {\n let pos = this.fromOffset(line);\n line = pos.line;\n column = pos.col;\n }\n let origin = this.origin(line, column, endLine, endColumn);\n if (origin) {\n result2 = new CssSyntaxError$1(\n message,\n origin.endLine === void 0 ? origin.line : { column: origin.column, line: origin.line },\n origin.endLine === void 0 ? origin.column : { column: origin.endColumn, line: origin.endLine },\n origin.source,\n origin.file,\n opts.plugin\n );\n } else {\n result2 = new CssSyntaxError$1(\n message,\n endLine === void 0 ? line : { column, line },\n endLine === void 0 ? column : { column: endColumn, line: endLine },\n this.css,\n this.file,\n opts.plugin\n );\n }\n result2.input = { column, endColumn, endLine, line, source: this.css };\n if (this.file) {\n if (pathToFileURL$1) {\n result2.input.url = pathToFileURL$1(this.file).toString();\n }\n result2.input.file = this.file;\n }\n return result2;\n }\n fromOffset(offset) {\n let lastLine, lineToIndex;\n if (!this[fromOffsetCache]) {\n let lines = this.css.split(\"\\n\");\n lineToIndex = new Array(lines.length);\n let prevIndex = 0;\n for (let i2 = 0, l2 = lines.length; i2 < l2; i2++) {\n lineToIndex[i2] = prevIndex;\n prevIndex += lines[i2].length + 1;\n }\n this[fromOffsetCache] = lineToIndex;\n } else {\n lineToIndex = this[fromOffsetCache];\n }\n lastLine = lineToIndex[lineToIndex.length - 1];\n let min = 0;\n if (offset >= lastLine) {\n min = lineToIndex.length - 1;\n } else {\n let max = lineToIndex.length - 2;\n let mid;\n while (min < max) {\n mid = min + (max - min >> 1);\n if (offset < lineToIndex[mid]) {\n max = mid - 1;\n } else if (offset >= lineToIndex[mid + 1]) {\n min = mid + 1;\n } else {\n min = mid;\n break;\n }\n }\n }\n return {\n col: offset - lineToIndex[min] + 1,\n line: min + 1\n };\n }\n mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file;\n }\n return resolve$1(this.map.consumer().sourceRoot || this.map.root || \".\", file);\n }\n origin(line, column, endLine, endColumn) {\n if (!this.map) return false;\n let consumer = this.map.consumer();\n let from = consumer.originalPositionFor({ column, line });\n if (!from.source) return false;\n let to;\n if (typeof endLine === \"number\") {\n to = consumer.originalPositionFor({ column: endColumn, line: endLine });\n }\n let fromUrl;\n if (isAbsolute(from.source)) {\n fromUrl = pathToFileURL$1(from.source);\n } else {\n fromUrl = new URL(\n from.source,\n this.map.consumer().sourceRoot || pathToFileURL$1(this.map.mapFile)\n );\n }\n let result2 = {\n column: from.column,\n endColumn: to && to.column,\n endLine: to && to.line,\n line: from.line,\n url: fromUrl.toString()\n };\n if (fromUrl.protocol === \"file:\") {\n if (fileURLToPath) {\n result2.file = fileURLToPath(fromUrl);\n } else {\n throw new Error(`file: protocol is not available in this PostCSS build`);\n }\n }\n let source = consumer.sourceContentFor(from.source);\n if (source) result2.source = source;\n return result2;\n }\n toJSON() {\n let json = {};\n for (let name of [\"hasBOM\", \"css\", \"file\", \"id\"]) {\n if (this[name] != null) {\n json[name] = this[name];\n }\n }\n if (this.map) {\n json.map = { ...this.map };\n if (json.map.consumerCache) {\n json.map.consumerCache = void 0;\n }\n }\n return json;\n }\n get from() {\n return this.file || this.id;\n }\n};\nvar input = Input$4;\nInput$4.default = Input$4;\nif (terminalHighlight && terminalHighlight.registerInput) {\n terminalHighlight.registerInput(Input$4);\n}\nlet { SourceMapConsumer, SourceMapGenerator } = require$$2;\nlet { dirname, relative, resolve, sep } = require$$2;\nlet { pathToFileURL } = require$$2;\nlet Input$3 = input;\nlet sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator);\nlet pathAvailable = Boolean(dirname && resolve && relative && sep);\nlet MapGenerator$2 = class MapGenerator2 {\n constructor(stringify2, root2, opts, cssString) {\n this.stringify = stringify2;\n this.mapOpts = opts.map || {};\n this.root = root2;\n this.opts = opts;\n this.css = cssString;\n this.originalCSS = cssString;\n this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute;\n this.memoizedFileURLs = /* @__PURE__ */ new Map();\n this.memoizedPaths = /* @__PURE__ */ new Map();\n this.memoizedURLs = /* @__PURE__ */ new Map();\n }\n addAnnotation() {\n let content;\n if (this.isInline()) {\n content = \"data:application/json;base64,\" + this.toBase64(this.map.toString());\n } else if (typeof this.mapOpts.annotation === \"string\") {\n content = this.mapOpts.annotation;\n } else if (typeof this.mapOpts.annotation === \"function\") {\n content = this.mapOpts.annotation(this.opts.to, this.root);\n } else {\n content = this.outputFile() + \".map\";\n }\n let eol = \"\\n\";\n if (this.css.includes(\"\\r\\n\")) eol = \"\\r\\n\";\n this.css += eol + \"/*# sourceMappingURL=\" + content + \" */\";\n }\n applyPrevMaps() {\n for (let prev of this.previous()) {\n let from = this.toUrl(this.path(prev.file));\n let root2 = prev.root || dirname(prev.file);\n let map;\n if (this.mapOpts.sourcesContent === false) {\n map = new SourceMapConsumer(prev.text);\n if (map.sourcesContent) {\n map.sourcesContent = null;\n }\n } else {\n map = prev.consumer();\n }\n this.map.applySourceMap(map, from, this.toUrl(this.path(root2)));\n }\n }\n clearAnnotation() {\n if (this.mapOpts.annotation === false) return;\n if (this.root) {\n let node2;\n for (let i2 = this.root.nodes.length - 1; i2 >= 0; i2--) {\n node2 = this.root.nodes[i2];\n if (node2.type !== \"comment\") continue;\n if (node2.text.indexOf(\"# sourceMappingURL=\") === 0) {\n this.root.removeChild(i2);\n }\n }\n } else if (this.css) {\n this.css = this.css.replace(/\\n*?\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\");\n }\n }\n generate() {\n this.clearAnnotation();\n if (pathAvailable && sourceMapAvailable && this.isMap()) {\n return this.generateMap();\n } else {\n let result2 = \"\";\n this.stringify(this.root, (i2) => {\n result2 += i2;\n });\n return [result2];\n }\n }\n generateMap() {\n if (this.root) {\n this.generateString();\n } else if (this.previous().length === 1) {\n let prev = this.previous()[0].consumer();\n prev.file = this.outputFile();\n this.map = SourceMapGenerator.fromSourceMap(prev, {\n ignoreInvalidMapping: true\n });\n } else {\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n this.map.addMapping({\n generated: { column: 0, line: 1 },\n original: { column: 0, line: 1 },\n source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\"\n });\n }\n if (this.isSourcesContent()) this.setSourcesContent();\n if (this.root && this.previous().length > 0) this.applyPrevMaps();\n if (this.isAnnotation()) this.addAnnotation();\n if (this.isInline()) {\n return [this.css];\n } else {\n return [this.css, this.map];\n }\n }\n generateString() {\n this.css = \"\";\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n let line = 1;\n let column = 1;\n let noSource = \"\";\n let mapping = {\n generated: { column: 0, line: 0 },\n original: { column: 0, line: 0 },\n source: \"\"\n };\n let lines, last;\n this.stringify(this.root, (str, node2, type) => {\n this.css += str;\n if (node2 && type !== \"end\") {\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n if (node2.source && node2.source.start) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.start.line;\n mapping.original.column = node2.source.start.column - 1;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n this.map.addMapping(mapping);\n }\n }\n lines = str.match(/\\n/g);\n if (lines) {\n line += lines.length;\n last = str.lastIndexOf(\"\\n\");\n column = str.length - last;\n } else {\n column += str.length;\n }\n if (node2 && type !== \"start\") {\n let p = node2.parent || { raws: {} };\n let childless = node2.type === \"decl\" || node2.type === \"atrule\" && !node2.nodes;\n if (!childless || node2 !== p.last || p.raws.semicolon) {\n if (node2.source && node2.source.end) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.end.line;\n mapping.original.column = node2.source.end.column - 1;\n mapping.generated.line = line;\n mapping.generated.column = column - 2;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n this.map.addMapping(mapping);\n }\n }\n }\n });\n }\n isAnnotation() {\n if (this.isInline()) {\n return true;\n }\n if (typeof this.mapOpts.annotation !== \"undefined\") {\n return this.mapOpts.annotation;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.annotation);\n }\n return true;\n }\n isInline() {\n if (typeof this.mapOpts.inline !== \"undefined\") {\n return this.mapOpts.inline;\n }\n let annotation = this.mapOpts.annotation;\n if (typeof annotation !== \"undefined\" && annotation !== true) {\n return false;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.inline);\n }\n return true;\n }\n isMap() {\n if (typeof this.opts.map !== \"undefined\") {\n return !!this.opts.map;\n }\n return this.previous().length > 0;\n }\n isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== \"undefined\") {\n return this.mapOpts.sourcesContent;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.withContent());\n }\n return true;\n }\n outputFile() {\n if (this.opts.to) {\n return this.path(this.opts.to);\n } else if (this.opts.from) {\n return this.path(this.opts.from);\n } else {\n return \"to.css\";\n }\n }\n path(file) {\n if (this.mapOpts.absolute) return file;\n if (file.charCodeAt(0) === 60) return file;\n if (/^\\w+:\\/\\//.test(file)) return file;\n let cached = this.memoizedPaths.get(file);\n if (cached) return cached;\n let from = this.opts.to ? dirname(this.opts.to) : \".\";\n if (typeof this.mapOpts.annotation === \"string\") {\n from = dirname(resolve(from, this.mapOpts.annotation));\n }\n let path = relative(from, file);\n this.memoizedPaths.set(file, path);\n return path;\n }\n previous() {\n if (!this.previousMaps) {\n this.previousMaps = [];\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source && node2.source.input.map) {\n let map = node2.source.input.map;\n if (!this.previousMaps.includes(map)) {\n this.previousMaps.push(map);\n }\n }\n });\n } else {\n let input2 = new Input$3(this.originalCSS, this.opts);\n if (input2.map) this.previousMaps.push(input2.map);\n }\n }\n return this.previousMaps;\n }\n setSourcesContent() {\n let already = {};\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source) {\n let from = node2.source.input.from;\n if (from && !already[from]) {\n already[from] = true;\n let fromUrl = this.usesFileUrls ? this.toFileUrl(from) : this.toUrl(this.path(from));\n this.map.setSourceContent(fromUrl, node2.source.input.css);\n }\n }\n });\n } else if (this.css) {\n let from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\";\n this.map.setSourceContent(from, this.css);\n }\n }\n sourcePath(node2) {\n if (this.mapOpts.from) {\n return this.toUrl(this.mapOpts.from);\n } else if (this.usesFileUrls) {\n return this.toFileUrl(node2.source.input.from);\n } else {\n return this.toUrl(this.path(node2.source.input.from));\n }\n }\n toBase64(str) {\n if (Buffer) {\n return Buffer.from(str).toString(\"base64\");\n } else {\n return window.btoa(unescape(encodeURIComponent(str)));\n }\n }\n toFileUrl(path) {\n let cached = this.memoizedFileURLs.get(path);\n if (cached) return cached;\n if (pathToFileURL) {\n let fileURL = pathToFileURL(path).toString();\n this.memoizedFileURLs.set(path, fileURL);\n return fileURL;\n } else {\n throw new Error(\n \"`map.absolute` option is not available in this PostCSS build\"\n );\n }\n }\n toUrl(path) {\n let cached = this.memoizedURLs.get(path);\n if (cached) return cached;\n if (sep === \"\\\\\") {\n path = path.replace(/\\\\/g, \"/\");\n }\n let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent);\n this.memoizedURLs.set(path, url);\n return url;\n }\n};\nvar mapGenerator = MapGenerator$2;\nlet Node$2 = node;\nlet Comment$4 = class Comment2 extends Node$2 {\n constructor(defaults) {\n super(defaults);\n this.type = \"comment\";\n }\n};\nvar comment = Comment$4;\nComment$4.default = Comment$4;\nlet { isClean: isClean$1, my: my$1 } = symbols;\nlet Declaration$3 = declaration;\nlet Comment$3 = comment;\nlet Node$1 = node;\nlet parse$4, Rule$4, AtRule$4, Root$6;\nfunction cleanSource(nodes) {\n return nodes.map((i2) => {\n if (i2.nodes) i2.nodes = cleanSource(i2.nodes);\n delete i2.source;\n return i2;\n });\n}\nfunction markDirtyUp(node2) {\n node2[isClean$1] = false;\n if (node2.proxyOf.nodes) {\n for (let i2 of node2.proxyOf.nodes) {\n markDirtyUp(i2);\n }\n }\n}\nlet Container$7 = class Container2 extends Node$1 {\n append(...children) {\n for (let child of children) {\n let nodes = this.normalize(child, this.last);\n for (let node2 of nodes) this.proxyOf.nodes.push(node2);\n }\n this.markDirty();\n return this;\n }\n cleanRaws(keepBetween) {\n super.cleanRaws(keepBetween);\n if (this.nodes) {\n for (let node2 of this.nodes) node2.cleanRaws(keepBetween);\n }\n }\n each(callback) {\n if (!this.proxyOf.nodes) return void 0;\n let iterator = this.getIterator();\n let index2, result2;\n while (this.indexes[iterator] < this.proxyOf.nodes.length) {\n index2 = this.indexes[iterator];\n result2 = callback(this.proxyOf.nodes[index2], index2);\n if (result2 === false) break;\n this.indexes[iterator] += 1;\n }\n delete this.indexes[iterator];\n return result2;\n }\n every(condition) {\n return this.nodes.every(condition);\n }\n getIterator() {\n if (!this.lastEach) this.lastEach = 0;\n if (!this.indexes) this.indexes = {};\n this.lastEach += 1;\n let iterator = this.lastEach;\n this.indexes[iterator] = 0;\n return iterator;\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (!node2[prop]) {\n return node2[prop];\n } else if (prop === \"each\" || typeof prop === \"string\" && prop.startsWith(\"walk\")) {\n return (...args) => {\n return node2[prop](\n ...args.map((i2) => {\n if (typeof i2 === \"function\") {\n return (child, index2) => i2(child.toProxy(), index2);\n } else {\n return i2;\n }\n })\n );\n };\n } else if (prop === \"every\" || prop === \"some\") {\n return (cb) => {\n return node2[prop](\n (child, ...other) => cb(child.toProxy(), ...other)\n );\n };\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else if (prop === \"nodes\") {\n return node2.nodes.map((i2) => i2.toProxy());\n } else if (prop === \"first\" || prop === \"last\") {\n return node2[prop].toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"name\" || prop === \"params\" || prop === \"selector\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n index(child) {\n if (typeof child === \"number\") return child;\n if (child.proxyOf) child = child.proxyOf;\n return this.proxyOf.nodes.indexOf(child);\n }\n insertAfter(exist, add) {\n let existIndex = this.index(exist);\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex < index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n insertBefore(exist, add) {\n let existIndex = this.index(exist);\n let type = existIndex === 0 ? \"prepend\" : false;\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex <= index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n normalize(nodes, sample) {\n if (typeof nodes === \"string\") {\n nodes = cleanSource(parse$4(nodes).nodes);\n } else if (typeof nodes === \"undefined\") {\n nodes = [];\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type === \"root\" && this.type !== \"document\") {\n nodes = nodes.nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type) {\n nodes = [nodes];\n } else if (nodes.prop) {\n if (typeof nodes.value === \"undefined\") {\n throw new Error(\"Value field is missed in node creation\");\n } else if (typeof nodes.value !== \"string\") {\n nodes.value = String(nodes.value);\n }\n nodes = [new Declaration$3(nodes)];\n } else if (nodes.selector) {\n nodes = [new Rule$4(nodes)];\n } else if (nodes.name) {\n nodes = [new AtRule$4(nodes)];\n } else if (nodes.text) {\n nodes = [new Comment$3(nodes)];\n } else {\n throw new Error(\"Unknown node type in node creation\");\n }\n let processed = nodes.map((i2) => {\n if (!i2[my$1]) Container2.rebuild(i2);\n i2 = i2.proxyOf;\n if (i2.parent) i2.parent.removeChild(i2);\n if (i2[isClean$1]) markDirtyUp(i2);\n if (typeof i2.raws.before === \"undefined\") {\n if (sample && typeof sample.raws.before !== \"undefined\") {\n i2.raws.before = sample.raws.before.replace(/\\S/g, \"\");\n }\n }\n i2.parent = this.proxyOf;\n return i2;\n });\n return processed;\n }\n prepend(...children) {\n children = children.reverse();\n for (let child of children) {\n let nodes = this.normalize(child, this.first, \"prepend\").reverse();\n for (let node2 of nodes) this.proxyOf.nodes.unshift(node2);\n for (let id in this.indexes) {\n this.indexes[id] = this.indexes[id] + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n push(child) {\n child.parent = this;\n this.proxyOf.nodes.push(child);\n return this;\n }\n removeAll() {\n for (let node2 of this.proxyOf.nodes) node2.parent = void 0;\n this.proxyOf.nodes = [];\n this.markDirty();\n return this;\n }\n removeChild(child) {\n child = this.index(child);\n this.proxyOf.nodes[child].parent = void 0;\n this.proxyOf.nodes.splice(child, 1);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (index2 >= child) {\n this.indexes[id] = index2 - 1;\n }\n }\n this.markDirty();\n return this;\n }\n replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {};\n }\n this.walkDecls((decl) => {\n if (opts.props && !opts.props.includes(decl.prop)) return;\n if (opts.fast && !decl.value.includes(opts.fast)) return;\n decl.value = decl.value.replace(pattern, callback);\n });\n this.markDirty();\n return this;\n }\n some(condition) {\n return this.nodes.some(condition);\n }\n walk(callback) {\n return this.each((child, i2) => {\n let result2;\n try {\n result2 = callback(child, i2);\n } catch (e2) {\n throw child.addToError(e2);\n }\n if (result2 !== false && child.walk) {\n result2 = child.walk(callback);\n }\n return result2;\n });\n }\n walkAtRules(name, callback) {\n if (!callback) {\n callback = name;\n return this.walk((child, i2) => {\n if (child.type === \"atrule\") {\n return callback(child, i2);\n }\n });\n }\n if (name instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && name.test(child.name)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && child.name === name) {\n return callback(child, i2);\n }\n });\n }\n walkComments(callback) {\n return this.walk((child, i2) => {\n if (child.type === \"comment\") {\n return callback(child, i2);\n }\n });\n }\n walkDecls(prop, callback) {\n if (!callback) {\n callback = prop;\n return this.walk((child, i2) => {\n if (child.type === \"decl\") {\n return callback(child, i2);\n }\n });\n }\n if (prop instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && prop.test(child.prop)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && child.prop === prop) {\n return callback(child, i2);\n }\n });\n }\n walkRules(selector, callback) {\n if (!callback) {\n callback = selector;\n return this.walk((child, i2) => {\n if (child.type === \"rule\") {\n return callback(child, i2);\n }\n });\n }\n if (selector instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && selector.test(child.selector)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && child.selector === selector) {\n return callback(child, i2);\n }\n });\n }\n get first() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[0];\n }\n get last() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n }\n};\nContainer$7.registerParse = (dependant) => {\n parse$4 = dependant;\n};\nContainer$7.registerRule = (dependant) => {\n Rule$4 = dependant;\n};\nContainer$7.registerAtRule = (dependant) => {\n AtRule$4 = dependant;\n};\nContainer$7.registerRoot = (dependant) => {\n Root$6 = dependant;\n};\nvar container = Container$7;\nContainer$7.default = Container$7;\nContainer$7.rebuild = (node2) => {\n if (node2.type === \"atrule\") {\n Object.setPrototypeOf(node2, AtRule$4.prototype);\n } else if (node2.type === \"rule\") {\n Object.setPrototypeOf(node2, Rule$4.prototype);\n } else if (node2.type === \"decl\") {\n Object.setPrototypeOf(node2, Declaration$3.prototype);\n } else if (node2.type === \"comment\") {\n Object.setPrototypeOf(node2, Comment$3.prototype);\n } else if (node2.type === \"root\") {\n Object.setPrototypeOf(node2, Root$6.prototype);\n }\n node2[my$1] = true;\n if (node2.nodes) {\n node2.nodes.forEach((child) => {\n Container$7.rebuild(child);\n });\n }\n};\nlet Container$6 = container;\nlet LazyResult$4, Processor$3;\nlet Document$3 = class Document23 extends Container$6 {\n constructor(defaults) {\n super({ type: \"document\", ...defaults });\n if (!this.nodes) {\n this.nodes = [];\n }\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$4(new Processor$3(), this, opts);\n return lazy.stringify();\n }\n};\nDocument$3.registerLazyResult = (dependant) => {\n LazyResult$4 = dependant;\n};\nDocument$3.registerProcessor = (dependant) => {\n Processor$3 = dependant;\n};\nvar document$1 = Document$3;\nDocument$3.default = Document$3;\nlet printed = {};\nvar warnOnce$2 = function warnOnce2(message) {\n if (printed[message]) return;\n printed[message] = true;\n if (typeof console !== \"undefined\" && console.warn) {\n console.warn(message);\n }\n};\nlet Warning$2 = class Warning2 {\n constructor(text, opts = {}) {\n this.type = \"warning\";\n this.text = text;\n if (opts.node && opts.node.source) {\n let range = opts.node.rangeBy(opts);\n this.line = range.start.line;\n this.column = range.start.column;\n this.endLine = range.end.line;\n this.endColumn = range.end.column;\n }\n for (let opt in opts) this[opt] = opts[opt];\n }\n toString() {\n if (this.node) {\n return this.node.error(this.text, {\n index: this.index,\n plugin: this.plugin,\n word: this.word\n }).message;\n }\n if (this.plugin) {\n return this.plugin + \": \" + this.text;\n }\n return this.text;\n }\n};\nvar warning = Warning$2;\nWarning$2.default = Warning$2;\nlet Warning$1 = warning;\nlet Result$3 = class Result2 {\n constructor(processor2, root2, opts) {\n this.processor = processor2;\n this.messages = [];\n this.root = root2;\n this.opts = opts;\n this.css = void 0;\n this.map = void 0;\n }\n toString() {\n return this.css;\n }\n warn(text, opts = {}) {\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin;\n }\n }\n let warning2 = new Warning$1(text, opts);\n this.messages.push(warning2);\n return warning2;\n }\n warnings() {\n return this.messages.filter((i2) => i2.type === \"warning\");\n }\n get content() {\n return this.css;\n }\n};\nvar result = Result$3;\nResult$3.default = Result$3;\nconst SINGLE_QUOTE = \"'\".charCodeAt(0);\nconst DOUBLE_QUOTE = '\"'.charCodeAt(0);\nconst BACKSLASH = \"\\\\\".charCodeAt(0);\nconst SLASH = \"/\".charCodeAt(0);\nconst NEWLINE = \"\\n\".charCodeAt(0);\nconst SPACE = \" \".charCodeAt(0);\nconst FEED = \"\\f\".charCodeAt(0);\nconst TAB = \"\t\".charCodeAt(0);\nconst CR = \"\\r\".charCodeAt(0);\nconst OPEN_SQUARE = \"[\".charCodeAt(0);\nconst CLOSE_SQUARE = \"]\".charCodeAt(0);\nconst OPEN_PARENTHESES = \"(\".charCodeAt(0);\nconst CLOSE_PARENTHESES = \")\".charCodeAt(0);\nconst OPEN_CURLY = \"{\".charCodeAt(0);\nconst CLOSE_CURLY = \"}\".charCodeAt(0);\nconst SEMICOLON = \";\".charCodeAt(0);\nconst ASTERISK = \"*\".charCodeAt(0);\nconst COLON = \":\".charCodeAt(0);\nconst AT = \"@\".charCodeAt(0);\nconst RE_AT_END = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g;\nconst RE_WORD_END = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g;\nconst RE_BAD_BRACKET = /.[\\r\\n\"'(/\\\\]/;\nconst RE_HEX_ESCAPE = /[\\da-f]/i;\nvar tokenize = function tokenizer2(input2, options = {}) {\n let css = input2.css.valueOf();\n let ignore = options.ignoreErrors;\n let code, next, quote, content, escape;\n let escaped, escapePos, prev, n2, currentToken;\n let length = css.length;\n let pos = 0;\n let buffer = [];\n let returned = [];\n function position() {\n return pos;\n }\n function unclosed(what) {\n throw input2.error(\"Unclosed \" + what, pos);\n }\n function endOfFile() {\n return returned.length === 0 && pos >= length;\n }\n function nextToken(opts) {\n if (returned.length) return returned.pop();\n if (pos >= length) return;\n let ignoreUnclosed = opts ? opts.ignoreUnclosed : false;\n code = css.charCodeAt(pos);\n switch (code) {\n case NEWLINE:\n case SPACE:\n case TAB:\n case CR:\n case FEED: {\n next = pos;\n do {\n next += 1;\n code = css.charCodeAt(next);\n } while (code === SPACE || code === NEWLINE || code === TAB || code === CR || code === FEED);\n currentToken = [\"space\", css.slice(pos, next)];\n pos = next - 1;\n break;\n }\n case OPEN_SQUARE:\n case CLOSE_SQUARE:\n case OPEN_CURLY:\n case CLOSE_CURLY:\n case COLON:\n case SEMICOLON:\n case CLOSE_PARENTHESES: {\n let controlChar = String.fromCharCode(code);\n currentToken = [controlChar, controlChar, pos];\n break;\n }\n case OPEN_PARENTHESES: {\n prev = buffer.length ? buffer.pop()[1] : \"\";\n n2 = css.charCodeAt(pos + 1);\n if (prev === \"url\" && n2 !== SINGLE_QUOTE && n2 !== DOUBLE_QUOTE && n2 !== SPACE && n2 !== NEWLINE && n2 !== TAB && n2 !== FEED && n2 !== CR) {\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(\")\", next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos;\n break;\n } else {\n unclosed(\"bracket\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"brackets\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n next = css.indexOf(\")\", pos + 1);\n content = css.slice(pos, next + 1);\n if (next === -1 || RE_BAD_BRACKET.test(content)) {\n currentToken = [\"(\", \"(\", pos];\n } else {\n currentToken = [\"brackets\", content, pos, next];\n pos = next;\n }\n }\n break;\n }\n case SINGLE_QUOTE:\n case DOUBLE_QUOTE: {\n quote = code === SINGLE_QUOTE ? \"'\" : '\"';\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(quote, next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos + 1;\n break;\n } else {\n unclosed(\"string\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"string\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case AT: {\n RE_AT_END.lastIndex = pos + 1;\n RE_AT_END.test(css);\n if (RE_AT_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_AT_END.lastIndex - 2;\n }\n currentToken = [\"at-word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case BACKSLASH: {\n next = pos;\n escape = true;\n while (css.charCodeAt(next + 1) === BACKSLASH) {\n next += 1;\n escape = !escape;\n }\n code = css.charCodeAt(next + 1);\n if (escape && code !== SLASH && code !== SPACE && code !== NEWLINE && code !== TAB && code !== CR && code !== FEED) {\n next += 1;\n if (RE_HEX_ESCAPE.test(css.charAt(next))) {\n while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {\n next += 1;\n }\n if (css.charCodeAt(next + 1) === SPACE) {\n next += 1;\n }\n }\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n default: {\n if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {\n next = css.indexOf(\"*/\", pos + 2) + 1;\n if (next === 0) {\n if (ignore || ignoreUnclosed) {\n next = css.length;\n } else {\n unclosed(\"comment\");\n }\n }\n currentToken = [\"comment\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n RE_WORD_END.lastIndex = pos + 1;\n RE_WORD_END.test(css);\n if (RE_WORD_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_WORD_END.lastIndex - 2;\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n buffer.push(currentToken);\n pos = next;\n }\n break;\n }\n }\n pos++;\n return currentToken;\n }\n function back(token) {\n returned.push(token);\n }\n return {\n back,\n endOfFile,\n nextToken,\n position\n };\n};\nlet Container$5 = container;\nlet AtRule$3 = class AtRule2 extends Container$5 {\n constructor(defaults) {\n super(defaults);\n this.type = \"atrule\";\n }\n append(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.append(...children);\n }\n prepend(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.prepend(...children);\n }\n};\nvar atRule = AtRule$3;\nAtRule$3.default = AtRule$3;\nContainer$5.registerAtRule(AtRule$3);\nlet Container$4 = container;\nlet LazyResult$3, Processor$2;\nlet Root$5 = class Root2 extends Container$4 {\n constructor(defaults) {\n super(defaults);\n this.type = \"root\";\n if (!this.nodes) this.nodes = [];\n }\n normalize(child, sample, type) {\n let nodes = super.normalize(child);\n if (sample) {\n if (type === \"prepend\") {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before;\n } else {\n delete sample.raws.before;\n }\n } else if (this.first !== sample) {\n for (let node2 of nodes) {\n node2.raws.before = sample.raws.before;\n }\n }\n }\n return nodes;\n }\n removeChild(child, ignore) {\n let index2 = this.index(child);\n if (!ignore && index2 === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index2].raws.before;\n }\n return super.removeChild(child);\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$3(new Processor$2(), this, opts);\n return lazy.stringify();\n }\n};\nRoot$5.registerLazyResult = (dependant) => {\n LazyResult$3 = dependant;\n};\nRoot$5.registerProcessor = (dependant) => {\n Processor$2 = dependant;\n};\nvar root = Root$5;\nRoot$5.default = Root$5;\nContainer$4.registerRoot(Root$5);\nlet list$2 = {\n comma(string) {\n return list$2.split(string, [\",\"], true);\n },\n space(string) {\n let spaces = [\" \", \"\\n\", \"\t\"];\n return list$2.split(string, spaces);\n },\n split(string, separators, last) {\n let array = [];\n let current = \"\";\n let split = false;\n let func = 0;\n let inQuote = false;\n let prevQuote = \"\";\n let escape = false;\n for (let letter of string) {\n if (escape) {\n escape = false;\n } else if (letter === \"\\\\\") {\n escape = true;\n } else if (inQuote) {\n if (letter === prevQuote) {\n inQuote = false;\n }\n } else if (letter === '\"' || letter === \"'\") {\n inQuote = true;\n prevQuote = letter;\n } else if (letter === \"(\") {\n func += 1;\n } else if (letter === \")\") {\n if (func > 0) func -= 1;\n } else if (func === 0) {\n if (separators.includes(letter)) split = true;\n }\n if (split) {\n if (current !== \"\") array.push(current.trim());\n current = \"\";\n split = false;\n } else {\n current += letter;\n }\n }\n if (last || current !== \"\") array.push(current.trim());\n return array;\n }\n};\nvar list_1 = list$2;\nlist$2.default = list$2;\nlet Container$3 = container;\nlet list$1 = list_1;\nlet Rule$3 = class Rule2 extends Container$3 {\n constructor(defaults) {\n super(defaults);\n this.type = \"rule\";\n if (!this.nodes) this.nodes = [];\n }\n get selectors() {\n return list$1.comma(this.selector);\n }\n set selectors(values) {\n let match = this.selector ? this.selector.match(/,\\s*/) : null;\n let sep2 = match ? match[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n this.selector = values.join(sep2);\n }\n};\nvar rule = Rule$3;\nRule$3.default = Rule$3;\nContainer$3.registerRule(Rule$3);\nlet Declaration$2 = declaration;\nlet tokenizer22 = tokenize;\nlet Comment$2 = comment;\nlet AtRule$2 = atRule;\nlet Root$4 = root;\nlet Rule$2 = rule;\nconst SAFE_COMMENT_NEIGHBOR = {\n empty: true,\n space: true\n};\nfunction findLastWithPosition(tokens) {\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n let token = tokens[i2];\n let pos = token[3] || token[2];\n if (pos) return pos;\n }\n}\nlet Parser$1 = class Parser2 {\n constructor(input2) {\n this.input = input2;\n this.root = new Root$4();\n this.current = this.root;\n this.spaces = \"\";\n this.semicolon = false;\n this.createTokenizer();\n this.root.source = { input: input2, start: { column: 1, line: 1, offset: 0 } };\n }\n atrule(token) {\n let node2 = new AtRule$2();\n node2.name = token[1].slice(1);\n if (node2.name === \"\") {\n this.unnamedAtrule(node2, token);\n }\n this.init(node2, token[2]);\n let type;\n let prev;\n let shift;\n let last = false;\n let open = false;\n let params = [];\n let brackets = [];\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n type = token[0];\n if (type === \"(\" || type === \"[\") {\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (type === \"{\" && brackets.length > 0) {\n brackets.push(\"}\");\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n }\n if (brackets.length === 0) {\n if (type === \";\") {\n node2.source.end = this.getPosition(token[2]);\n node2.source.end.offset++;\n this.semicolon = true;\n break;\n } else if (type === \"{\") {\n open = true;\n break;\n } else if (type === \"}\") {\n if (params.length > 0) {\n shift = params.length - 1;\n prev = params[shift];\n while (prev && prev[0] === \"space\") {\n prev = params[--shift];\n }\n if (prev) {\n node2.source.end = this.getPosition(prev[3] || prev[2]);\n node2.source.end.offset++;\n }\n }\n this.end(token);\n break;\n } else {\n params.push(token);\n }\n } else {\n params.push(token);\n }\n if (this.tokenizer.endOfFile()) {\n last = true;\n break;\n }\n }\n node2.raws.between = this.spacesAndCommentsFromEnd(params);\n if (params.length) {\n node2.raws.afterName = this.spacesAndCommentsFromStart(params);\n this.raw(node2, \"params\", params);\n if (last) {\n token = params[params.length - 1];\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n this.spaces = node2.raws.between;\n node2.raws.between = \"\";\n }\n } else {\n node2.raws.afterName = \"\";\n node2.params = \"\";\n }\n if (open) {\n node2.nodes = [];\n this.current = node2;\n }\n }\n checkMissedSemicolon(tokens) {\n let colon = this.colon(tokens);\n if (colon === false) return;\n let founded = 0;\n let token;\n for (let j = colon - 1; j >= 0; j--) {\n token = tokens[j];\n if (token[0] !== \"space\") {\n founded += 1;\n if (founded === 2) break;\n }\n }\n throw this.input.error(\n \"Missed semicolon\",\n token[0] === \"word\" ? token[3] + 1 : token[2]\n );\n }\n colon(tokens) {\n let brackets = 0;\n let token, type, prev;\n for (let [i2, element] of tokens.entries()) {\n token = element;\n type = token[0];\n if (type === \"(\") {\n brackets += 1;\n }\n if (type === \")\") {\n brackets -= 1;\n }\n if (brackets === 0 && type === \":\") {\n if (!prev) {\n this.doubleColon(token);\n } else if (prev[0] === \"word\" && prev[1] === \"progid\") {\n continue;\n } else {\n return i2;\n }\n }\n prev = token;\n }\n return false;\n }\n comment(token) {\n let node2 = new Comment$2();\n this.init(node2, token[2]);\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n let text = token[1].slice(2, -2);\n if (/^\\s*$/.test(text)) {\n node2.text = \"\";\n node2.raws.left = text;\n node2.raws.right = \"\";\n } else {\n let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n node2.text = match[2];\n node2.raws.left = match[1];\n node2.raws.right = match[3];\n }\n }\n createTokenizer() {\n this.tokenizer = tokenizer22(this.input);\n }\n decl(tokens, customProperty) {\n let node2 = new Declaration$2();\n this.init(node2, tokens[0][2]);\n let last = tokens[tokens.length - 1];\n if (last[0] === \";\") {\n this.semicolon = true;\n tokens.pop();\n }\n node2.source.end = this.getPosition(\n last[3] || last[2] || findLastWithPosition(tokens)\n );\n node2.source.end.offset++;\n while (tokens[0][0] !== \"word\") {\n if (tokens.length === 1) this.unknownWord(tokens);\n node2.raws.before += tokens.shift()[1];\n }\n node2.source.start = this.getPosition(tokens[0][2]);\n node2.prop = \"\";\n while (tokens.length) {\n let type = tokens[0][0];\n if (type === \":\" || type === \"space\" || type === \"comment\") {\n break;\n }\n node2.prop += tokens.shift()[1];\n }\n node2.raws.between = \"\";\n let token;\n while (tokens.length) {\n token = tokens.shift();\n if (token[0] === \":\") {\n node2.raws.between += token[1];\n break;\n } else {\n if (token[0] === \"word\" && /\\w/.test(token[1])) {\n this.unknownWord([token]);\n }\n node2.raws.between += token[1];\n }\n }\n if (node2.prop[0] === \"_\" || node2.prop[0] === \"*\") {\n node2.raws.before += node2.prop[0];\n node2.prop = node2.prop.slice(1);\n }\n let firstSpaces = [];\n let next;\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n firstSpaces.push(tokens.shift());\n }\n this.precheckMissedSemicolon(tokens);\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n token = tokens[i2];\n if (token[1].toLowerCase() === \"!important\") {\n node2.important = true;\n let string = this.stringFrom(tokens, i2);\n string = this.spacesFromEnd(tokens) + string;\n if (string !== \" !important\") node2.raws.important = string;\n break;\n } else if (token[1].toLowerCase() === \"important\") {\n let cache = tokens.slice(0);\n let str = \"\";\n for (let j = i2; j > 0; j--) {\n let type = cache[j][0];\n if (str.trim().indexOf(\"!\") === 0 && type !== \"space\") {\n break;\n }\n str = cache.pop()[1] + str;\n }\n if (str.trim().indexOf(\"!\") === 0) {\n node2.important = true;\n node2.raws.important = str;\n tokens = cache;\n }\n }\n if (token[0] !== \"space\" && token[0] !== \"comment\") {\n break;\n }\n }\n let hasWord = tokens.some((i2) => i2[0] !== \"space\" && i2[0] !== \"comment\");\n if (hasWord) {\n node2.raws.between += firstSpaces.map((i2) => i2[1]).join(\"\");\n firstSpaces = [];\n }\n this.raw(node2, \"value\", firstSpaces.concat(tokens), customProperty);\n if (node2.value.includes(\":\") && !customProperty) {\n this.checkMissedSemicolon(tokens);\n }\n }\n doubleColon(token) {\n throw this.input.error(\n \"Double colon\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n emptyRule(token) {\n let node2 = new Rule$2();\n this.init(node2, token[2]);\n node2.selector = \"\";\n node2.raws.between = \"\";\n this.current = node2;\n }\n end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.semicolon = false;\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.spaces = \"\";\n if (this.current.parent) {\n this.current.source.end = this.getPosition(token[2]);\n this.current.source.end.offset++;\n this.current = this.current.parent;\n } else {\n this.unexpectedClose(token);\n }\n }\n endFile() {\n if (this.current.parent) this.unclosedBlock();\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.root.source.end = this.getPosition(this.tokenizer.position());\n }\n freeSemicolon(token) {\n this.spaces += token[1];\n if (this.current.nodes) {\n let prev = this.current.nodes[this.current.nodes.length - 1];\n if (prev && prev.type === \"rule\" && !prev.raws.ownSemicolon) {\n prev.raws.ownSemicolon = this.spaces;\n this.spaces = \"\";\n }\n }\n }\n // Helpers\n getPosition(offset) {\n let pos = this.input.fromOffset(offset);\n return {\n column: pos.col,\n line: pos.line,\n offset\n };\n }\n init(node2, offset) {\n this.current.push(node2);\n node2.source = {\n input: this.input,\n start: this.getPosition(offset)\n };\n node2.raws.before = this.spaces;\n this.spaces = \"\";\n if (node2.type !== \"comment\") this.semicolon = false;\n }\n other(start) {\n let end = false;\n let type = null;\n let colon = false;\n let bracket = null;\n let brackets = [];\n let customProperty = start[1].startsWith(\"--\");\n let tokens = [];\n let token = start;\n while (token) {\n type = token[0];\n tokens.push(token);\n if (type === \"(\" || type === \"[\") {\n if (!bracket) bracket = token;\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (customProperty && colon && type === \"{\") {\n if (!bracket) bracket = token;\n brackets.push(\"}\");\n } else if (brackets.length === 0) {\n if (type === \";\") {\n if (colon) {\n this.decl(tokens, customProperty);\n return;\n } else {\n break;\n }\n } else if (type === \"{\") {\n this.rule(tokens);\n return;\n } else if (type === \"}\") {\n this.tokenizer.back(tokens.pop());\n end = true;\n break;\n } else if (type === \":\") {\n colon = true;\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n if (brackets.length === 0) bracket = null;\n }\n token = this.tokenizer.nextToken();\n }\n if (this.tokenizer.endOfFile()) end = true;\n if (brackets.length > 0) this.unclosedBracket(bracket);\n if (end && colon) {\n if (!customProperty) {\n while (tokens.length) {\n token = tokens[tokens.length - 1][0];\n if (token !== \"space\" && token !== \"comment\") break;\n this.tokenizer.back(tokens.pop());\n }\n }\n this.decl(tokens, customProperty);\n } else {\n this.unknownWord(tokens);\n }\n }\n parse() {\n let token;\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n switch (token[0]) {\n case \"space\":\n this.spaces += token[1];\n break;\n case \";\":\n this.freeSemicolon(token);\n break;\n case \"}\":\n this.end(token);\n break;\n case \"comment\":\n this.comment(token);\n break;\n case \"at-word\":\n this.atrule(token);\n break;\n case \"{\":\n this.emptyRule(token);\n break;\n default:\n this.other(token);\n break;\n }\n }\n this.endFile();\n }\n precheckMissedSemicolon() {\n }\n raw(node2, prop, tokens, customProperty) {\n let token, type;\n let length = tokens.length;\n let value = \"\";\n let clean = true;\n let next, prev;\n for (let i2 = 0; i2 < length; i2 += 1) {\n token = tokens[i2];\n type = token[0];\n if (type === \"space\" && i2 === length - 1 && !customProperty) {\n clean = false;\n } else if (type === \"comment\") {\n prev = tokens[i2 - 1] ? tokens[i2 - 1][0] : \"empty\";\n next = tokens[i2 + 1] ? tokens[i2 + 1][0] : \"empty\";\n if (!SAFE_COMMENT_NEIGHBOR[prev] && !SAFE_COMMENT_NEIGHBOR[next]) {\n if (value.slice(-1) === \",\") {\n clean = false;\n } else {\n value += token[1];\n }\n } else {\n clean = false;\n }\n } else {\n value += token[1];\n }\n }\n if (!clean) {\n let raw = tokens.reduce((all, i2) => all + i2[1], \"\");\n node2.raws[prop] = { raw, value };\n }\n node2[prop] = value;\n }\n rule(tokens) {\n tokens.pop();\n let node2 = new Rule$2();\n this.init(node2, tokens[0][2]);\n node2.raws.between = this.spacesAndCommentsFromEnd(tokens);\n this.raw(node2, \"selector\", tokens);\n this.current = node2;\n }\n spacesAndCommentsFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\" && lastTokenType !== \"comment\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n // Errors\n spacesAndCommentsFromStart(tokens) {\n let next;\n let spaces = \"\";\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n spaces += tokens.shift()[1];\n }\n return spaces;\n }\n spacesFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n stringFrom(tokens, from) {\n let result2 = \"\";\n for (let i2 = from; i2 < tokens.length; i2++) {\n result2 += tokens[i2][1];\n }\n tokens.splice(from, tokens.length - from);\n return result2;\n }\n unclosedBlock() {\n let pos = this.current.source.start;\n throw this.input.error(\"Unclosed block\", pos.line, pos.column);\n }\n unclosedBracket(bracket) {\n throw this.input.error(\n \"Unclosed bracket\",\n { offset: bracket[2] },\n { offset: bracket[2] + 1 }\n );\n }\n unexpectedClose(token) {\n throw this.input.error(\n \"Unexpected }\",\n { offset: token[2] },\n { offset: token[2] + 1 }\n );\n }\n unknownWord(tokens) {\n throw this.input.error(\n \"Unknown word\",\n { offset: tokens[0][2] },\n { offset: tokens[0][2] + tokens[0][1].length }\n );\n }\n unnamedAtrule(node2, token) {\n throw this.input.error(\n \"At-rule without name\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n};\nvar parser = Parser$1;\nlet Container$2 = container;\nlet Parser22 = parser;\nlet Input$2 = input;\nfunction parse$3(css, opts) {\n let input2 = new Input$2(css, opts);\n let parser2 = new Parser22(input2);\n try {\n parser2.parse();\n } catch (e2) {\n if (process.env.NODE_ENV !== \"production\") {\n if (e2.name === \"CssSyntaxError\" && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser\";\n } else if (/\\.sass/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser\";\n } else if (/\\.less$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser\";\n }\n }\n }\n throw e2;\n }\n return parser2.root;\n}\nvar parse_1 = parse$3;\nparse$3.default = parse$3;\nContainer$2.registerParse(parse$3);\nlet { isClean, my } = symbols;\nlet MapGenerator$1 = mapGenerator;\nlet stringify$2 = stringify_1;\nlet Container$1 = container;\nlet Document$2 = document$1;\nlet warnOnce$1 = warnOnce$2;\nlet Result$2 = result;\nlet parse$2 = parse_1;\nlet Root$3 = root;\nconst TYPE_TO_CLASS_NAME = {\n atrule: \"AtRule\",\n comment: \"Comment\",\n decl: \"Declaration\",\n document: \"Document\",\n root: \"Root\",\n rule: \"Rule\"\n};\nconst PLUGIN_PROPS = {\n AtRule: true,\n AtRuleExit: true,\n Comment: true,\n CommentExit: true,\n Declaration: true,\n DeclarationExit: true,\n Document: true,\n DocumentExit: true,\n Once: true,\n OnceExit: true,\n postcssPlugin: true,\n prepare: true,\n Root: true,\n RootExit: true,\n Rule: true,\n RuleExit: true\n};\nconst NOT_VISITORS = {\n Once: true,\n postcssPlugin: true,\n prepare: true\n};\nconst CHILDREN = 0;\nfunction isPromise(obj) {\n return typeof obj === \"object\" && typeof obj.then === \"function\";\n}\nfunction getEvents(node2) {\n let key = false;\n let type = TYPE_TO_CLASS_NAME[node2.type];\n if (node2.type === \"decl\") {\n key = node2.prop.toLowerCase();\n } else if (node2.type === \"atrule\") {\n key = node2.name.toLowerCase();\n }\n if (key && node2.append) {\n return [\n type,\n type + \"-\" + key,\n CHILDREN,\n type + \"Exit\",\n type + \"Exit-\" + key\n ];\n } else if (key) {\n return [type, type + \"-\" + key, type + \"Exit\", type + \"Exit-\" + key];\n } else if (node2.append) {\n return [type, CHILDREN, type + \"Exit\"];\n } else {\n return [type, type + \"Exit\"];\n }\n}\nfunction toStack(node2) {\n let events;\n if (node2.type === \"document\") {\n events = [\"Document\", CHILDREN, \"DocumentExit\"];\n } else if (node2.type === \"root\") {\n events = [\"Root\", CHILDREN, \"RootExit\"];\n } else {\n events = getEvents(node2);\n }\n return {\n eventIndex: 0,\n events,\n iterator: 0,\n node: node2,\n visitorIndex: 0,\n visitors: []\n };\n}\nfunction cleanMarks(node2) {\n node2[isClean] = false;\n if (node2.nodes) node2.nodes.forEach((i2) => cleanMarks(i2));\n return node2;\n}\nlet postcss$2 = {};\nlet LazyResult$2 = class LazyResult2 {\n constructor(processor2, css, opts) {\n this.stringified = false;\n this.processed = false;\n let root2;\n if (typeof css === \"object\" && css !== null && (css.type === \"root\" || css.type === \"document\")) {\n root2 = cleanMarks(css);\n } else if (css instanceof LazyResult2 || css instanceof Result$2) {\n root2 = cleanMarks(css.root);\n if (css.map) {\n if (typeof opts.map === \"undefined\") opts.map = {};\n if (!opts.map.inline) opts.map.inline = false;\n opts.map.prev = css.map;\n }\n } else {\n let parser2 = parse$2;\n if (opts.syntax) parser2 = opts.syntax.parse;\n if (opts.parser) parser2 = opts.parser;\n if (parser2.parse) parser2 = parser2.parse;\n try {\n root2 = parser2(css, opts);\n } catch (error) {\n this.processed = true;\n this.error = error;\n }\n if (root2 && !root2[my]) {\n Container$1.rebuild(root2);\n }\n }\n this.result = new Result$2(processor2, root2, opts);\n this.helpers = { ...postcss$2, postcss: postcss$2, result: this.result };\n this.plugins = this.processor.plugins.map((plugin22) => {\n if (typeof plugin22 === \"object\" && plugin22.prepare) {\n return { ...plugin22, ...plugin22.prepare(this.result) };\n } else {\n return plugin22;\n }\n });\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n if (this.processed) return Promise.resolve(this.result);\n if (!this.processing) {\n this.processing = this.runAsync();\n }\n return this.processing;\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n getAsyncError() {\n throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n }\n handleError(error, node2) {\n let plugin22 = this.result.lastPlugin;\n try {\n if (node2) node2.addToError(error);\n this.error = error;\n if (error.name === \"CssSyntaxError\" && !error.plugin) {\n error.plugin = plugin22.postcssPlugin;\n error.setMessage();\n } else if (plugin22.postcssVersion) {\n if (process.env.NODE_ENV !== \"production\") {\n let pluginName = plugin22.postcssPlugin;\n let pluginVer = plugin22.postcssVersion;\n let runtimeVer = this.result.processor.version;\n let a2 = pluginVer.split(\".\");\n let b = runtimeVer.split(\".\");\n if (a2[0] !== b[0] || parseInt(a2[1]) > parseInt(b[1])) {\n console.error(\n \"Unknown error from PostCSS plugin. Your current PostCSS version is \" + runtimeVer + \", but \" + pluginName + \" uses \" + pluginVer + \". Perhaps this is the source of the error below.\"\n );\n }\n }\n }\n } catch (err) {\n if (console && console.error) console.error(err);\n }\n return error;\n }\n prepareVisitors() {\n this.listeners = {};\n let add = (plugin22, type, cb) => {\n if (!this.listeners[type]) this.listeners[type] = [];\n this.listeners[type].push([plugin22, cb]);\n };\n for (let plugin22 of this.plugins) {\n if (typeof plugin22 === \"object\") {\n for (let event in plugin22) {\n if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) {\n throw new Error(\n `Unknown event ${event} in ${plugin22.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`\n );\n }\n if (!NOT_VISITORS[event]) {\n if (typeof plugin22[event] === \"object\") {\n for (let filter in plugin22[event]) {\n if (filter === \"*\") {\n add(plugin22, event, plugin22[event][filter]);\n } else {\n add(\n plugin22,\n event + \"-\" + filter.toLowerCase(),\n plugin22[event][filter]\n );\n }\n }\n } else if (typeof plugin22[event] === \"function\") {\n add(plugin22, event, plugin22[event]);\n }\n }\n }\n }\n }\n this.hasListener = Object.keys(this.listeners).length > 0;\n }\n async runAsync() {\n this.plugin = 0;\n for (let i2 = 0; i2 < this.plugins.length; i2++) {\n let plugin22 = this.plugins[i2];\n let promise = this.runOnRoot(plugin22);\n if (isPromise(promise)) {\n try {\n await promise;\n } catch (error) {\n throw this.handleError(error);\n }\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean]) {\n root2[isClean] = true;\n let stack = [toStack(root2)];\n while (stack.length > 0) {\n let promise = this.visitTick(stack);\n if (isPromise(promise)) {\n try {\n await promise;\n } catch (e2) {\n let node2 = stack[stack.length - 1].node;\n throw this.handleError(e2, node2);\n }\n }\n }\n }\n if (this.listeners.OnceExit) {\n for (let [plugin22, visitor] of this.listeners.OnceExit) {\n this.result.lastPlugin = plugin22;\n try {\n if (root2.type === \"document\") {\n let roots = root2.nodes.map(\n (subRoot) => visitor(subRoot, this.helpers)\n );\n await Promise.all(roots);\n } else {\n await visitor(root2, this.helpers);\n }\n } catch (e2) {\n throw this.handleError(e2);\n }\n }\n }\n }\n this.processed = true;\n return this.stringify();\n }\n runOnRoot(plugin22) {\n this.result.lastPlugin = plugin22;\n try {\n if (typeof plugin22 === \"object\" && plugin22.Once) {\n if (this.result.root.type === \"document\") {\n let roots = this.result.root.nodes.map(\n (root2) => plugin22.Once(root2, this.helpers)\n );\n if (isPromise(roots[0])) {\n return Promise.all(roots);\n }\n return roots;\n }\n return plugin22.Once(this.result.root, this.helpers);\n } else if (typeof plugin22 === \"function\") {\n return plugin22(this.result.root, this.result);\n }\n } catch (error) {\n throw this.handleError(error);\n }\n }\n stringify() {\n if (this.error) throw this.error;\n if (this.stringified) return this.result;\n this.stringified = true;\n this.sync();\n let opts = this.result.opts;\n let str = stringify$2;\n if (opts.syntax) str = opts.syntax.stringify;\n if (opts.stringifier) str = opts.stringifier;\n if (str.stringify) str = str.stringify;\n let map = new MapGenerator$1(str, this.result.root, this.result.opts);\n let data = map.generate();\n this.result.css = data[0];\n this.result.map = data[1];\n return this.result;\n }\n sync() {\n if (this.error) throw this.error;\n if (this.processed) return this.result;\n this.processed = true;\n if (this.processing) {\n throw this.getAsyncError();\n }\n for (let plugin22 of this.plugins) {\n let promise = this.runOnRoot(plugin22);\n if (isPromise(promise)) {\n throw this.getAsyncError();\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean]) {\n root2[isClean] = true;\n this.walkSync(root2);\n }\n if (this.listeners.OnceExit) {\n if (root2.type === \"document\") {\n for (let subRoot of root2.nodes) {\n this.visitSync(this.listeners.OnceExit, subRoot);\n }\n } else {\n this.visitSync(this.listeners.OnceExit, root2);\n }\n }\n }\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this.opts)) {\n warnOnce$1(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this.css;\n }\n visitSync(visitors, node2) {\n for (let [plugin22, visitor] of visitors) {\n this.result.lastPlugin = plugin22;\n let promise;\n try {\n promise = visitor(node2, this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2.proxyOf);\n }\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n return true;\n }\n if (isPromise(promise)) {\n throw this.getAsyncError();\n }\n }\n }\n visitTick(stack) {\n let visit2 = stack[stack.length - 1];\n let { node: node2, visitors } = visit2;\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n stack.pop();\n return;\n }\n if (visitors.length > 0 && visit2.visitorIndex < visitors.length) {\n let [plugin22, visitor] = visitors[visit2.visitorIndex];\n visit2.visitorIndex += 1;\n if (visit2.visitorIndex === visitors.length) {\n visit2.visitors = [];\n visit2.visitorIndex = 0;\n }\n this.result.lastPlugin = plugin22;\n try {\n return visitor(node2.toProxy(), this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2);\n }\n }\n if (visit2.iterator !== 0) {\n let iterator = visit2.iterator;\n let child;\n while (child = node2.nodes[node2.indexes[iterator]]) {\n node2.indexes[iterator] += 1;\n if (!child[isClean]) {\n child[isClean] = true;\n stack.push(toStack(child));\n return;\n }\n }\n visit2.iterator = 0;\n delete node2.indexes[iterator];\n }\n let events = visit2.events;\n while (visit2.eventIndex < events.length) {\n let event = events[visit2.eventIndex];\n visit2.eventIndex += 1;\n if (event === CHILDREN) {\n if (node2.nodes && node2.nodes.length) {\n node2[isClean] = true;\n visit2.iterator = node2.getIterator();\n }\n return;\n } else if (this.listeners[event]) {\n visit2.visitors = this.listeners[event];\n return;\n }\n }\n stack.pop();\n }\n walkSync(node2) {\n node2[isClean] = true;\n let events = getEvents(node2);\n for (let event of events) {\n if (event === CHILDREN) {\n if (node2.nodes) {\n node2.each((child) => {\n if (!child[isClean]) this.walkSync(child);\n });\n }\n } else {\n let visitors = this.listeners[event];\n if (visitors) {\n if (this.visitSync(visitors, node2.toProxy())) return;\n }\n }\n }\n }\n warnings() {\n return this.sync().warnings();\n }\n get content() {\n return this.stringify().content;\n }\n get css() {\n return this.stringify().css;\n }\n get map() {\n return this.stringify().map;\n }\n get messages() {\n return this.sync().messages;\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n return this.sync().root;\n }\n get [Symbol.toStringTag]() {\n return \"LazyResult\";\n }\n};\nLazyResult$2.registerPostcss = (dependant) => {\n postcss$2 = dependant;\n};\nvar lazyResult = LazyResult$2;\nLazyResult$2.default = LazyResult$2;\nRoot$3.registerLazyResult(LazyResult$2);\nDocument$2.registerLazyResult(LazyResult$2);\nlet MapGenerator22 = mapGenerator;\nlet stringify$1 = stringify_1;\nlet warnOnce22 = warnOnce$2;\nlet parse$1 = parse_1;\nconst Result$1 = result;\nlet NoWorkResult$1 = class NoWorkResult2 {\n constructor(processor2, css, opts) {\n css = css.toString();\n this.stringified = false;\n this._processor = processor2;\n this._css = css;\n this._opts = opts;\n this._map = void 0;\n let root2;\n let str = stringify$1;\n this.result = new Result$1(this._processor, root2, this._opts);\n this.result.css = css;\n let self = this;\n Object.defineProperty(this.result, \"root\", {\n get() {\n return self.root;\n }\n });\n let map = new MapGenerator22(str, root2, this._opts, css);\n if (map.isMap()) {\n let [generatedCSS, generatedMap] = map.generate();\n if (generatedCSS) {\n this.result.css = generatedCSS;\n }\n if (generatedMap) {\n this.result.map = generatedMap;\n }\n } else {\n map.clearAnnotation();\n this.result.css = map.css;\n }\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n return Promise.resolve(this.result);\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n sync() {\n if (this.error) throw this.error;\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this._opts)) {\n warnOnce22(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this._css;\n }\n warnings() {\n return [];\n }\n get content() {\n return this.result.css;\n }\n get css() {\n return this.result.css;\n }\n get map() {\n return this.result.map;\n }\n get messages() {\n return [];\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n if (this._root) {\n return this._root;\n }\n let root2;\n let parser2 = parse$1;\n try {\n root2 = parser2(this._css, this._opts);\n } catch (error) {\n this.error = error;\n }\n if (this.error) {\n throw this.error;\n } else {\n this._root = root2;\n return root2;\n }\n }\n get [Symbol.toStringTag]() {\n return \"NoWorkResult\";\n }\n};\nvar noWorkResult = NoWorkResult$1;\nNoWorkResult$1.default = NoWorkResult$1;\nlet NoWorkResult22 = noWorkResult;\nlet LazyResult$1 = lazyResult;\nlet Document$1 = document$1;\nlet Root$2 = root;\nlet Processor$1 = class Processor2 {\n constructor(plugins = []) {\n this.version = \"8.4.38\";\n this.plugins = this.normalize(plugins);\n }\n normalize(plugins) {\n let normalized = [];\n for (let i2 of plugins) {\n if (i2.postcss === true) {\n i2 = i2();\n } else if (i2.postcss) {\n i2 = i2.postcss;\n }\n if (typeof i2 === \"object\" && Array.isArray(i2.plugins)) {\n normalized = normalized.concat(i2.plugins);\n } else if (typeof i2 === \"object\" && i2.postcssPlugin) {\n normalized.push(i2);\n } else if (typeof i2 === \"function\") {\n normalized.push(i2);\n } else if (typeof i2 === \"object\" && (i2.parse || i2.stringify)) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error(\n \"PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.\"\n );\n }\n } else {\n throw new Error(i2 + \" is not a PostCSS plugin\");\n }\n }\n return normalized;\n }\n process(css, opts = {}) {\n if (!this.plugins.length && !opts.parser && !opts.stringifier && !opts.syntax) {\n return new NoWorkResult22(this, css, opts);\n } else {\n return new LazyResult$1(this, css, opts);\n }\n }\n use(plugin22) {\n this.plugins = this.plugins.concat(this.normalize([plugin22]));\n return this;\n }\n};\nvar processor = Processor$1;\nProcessor$1.default = Processor$1;\nRoot$2.registerProcessor(Processor$1);\nDocument$1.registerProcessor(Processor$1);\nlet Declaration$1 = declaration;\nlet PreviousMap22 = previousMap;\nlet Comment$1 = comment;\nlet AtRule$1 = atRule;\nlet Input$1 = input;\nlet Root$1 = root;\nlet Rule$1 = rule;\nfunction fromJSON$1(json, inputs) {\n if (Array.isArray(json)) return json.map((n2) => fromJSON$1(n2));\n let { inputs: ownInputs, ...defaults } = json;\n if (ownInputs) {\n inputs = [];\n for (let input2 of ownInputs) {\n let inputHydrated = { ...input2, __proto__: Input$1.prototype };\n if (inputHydrated.map) {\n inputHydrated.map = {\n ...inputHydrated.map,\n __proto__: PreviousMap22.prototype\n };\n }\n inputs.push(inputHydrated);\n }\n }\n if (defaults.nodes) {\n defaults.nodes = json.nodes.map((n2) => fromJSON$1(n2, inputs));\n }\n if (defaults.source) {\n let { inputId, ...source } = defaults.source;\n defaults.source = source;\n if (inputId != null) {\n defaults.source.input = inputs[inputId];\n }\n }\n if (defaults.type === \"root\") {\n return new Root$1(defaults);\n } else if (defaults.type === \"decl\") {\n return new Declaration$1(defaults);\n } else if (defaults.type === \"rule\") {\n return new Rule$1(defaults);\n } else if (defaults.type === \"comment\") {\n return new Comment$1(defaults);\n } else if (defaults.type === \"atrule\") {\n return new AtRule$1(defaults);\n } else {\n throw new Error(\"Unknown node type: \" + json.type);\n }\n}\nvar fromJSON_1 = fromJSON$1;\nfromJSON$1.default = fromJSON$1;\nlet CssSyntaxError22 = cssSyntaxError;\nlet Declaration22 = declaration;\nlet LazyResult22 = lazyResult;\nlet Container22 = container;\nlet Processor22 = processor;\nlet stringify = stringify_1;\nlet fromJSON = fromJSON_1;\nlet Document222 = document$1;\nlet Warning22 = warning;\nlet Comment22 = comment;\nlet AtRule22 = atRule;\nlet Result22 = result;\nlet Input22 = input;\nlet parse = parse_1;\nlet list = list_1;\nlet Rule22 = rule;\nlet Root22 = root;\nlet Node22 = node;\nfunction postcss(...plugins) {\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0];\n }\n return new Processor22(plugins);\n}\npostcss.plugin = function plugin2(name, initializer) {\n let warningPrinted = false;\n function creator(...args) {\n if (console && console.warn && !warningPrinted) {\n warningPrinted = true;\n console.warn(\n name + \": postcss.plugin was deprecated. Migration guide:\\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration\"\n );\n if (process.env.LANG && process.env.LANG.startsWith(\"cn\")) {\n console.warn(\n name + \": 里面 postcss.plugin 被弃用. 迁移指南:\\nhttps://www.w3ctech.com/topic/2226\"\n );\n }\n }\n let transformer = initializer(...args);\n transformer.postcssPlugin = name;\n transformer.postcssVersion = new Processor22().version;\n return transformer;\n }\n let cache;\n Object.defineProperty(creator, \"postcss\", {\n get() {\n if (!cache) cache = creator();\n return cache;\n }\n });\n creator.process = function(css, processOpts, pluginOpts) {\n return postcss([creator(pluginOpts)]).process(css, processOpts);\n };\n return creator;\n};\npostcss.stringify = stringify;\npostcss.parse = parse;\npostcss.fromJSON = fromJSON;\npostcss.list = list;\npostcss.comment = (defaults) => new Comment22(defaults);\npostcss.atRule = (defaults) => new AtRule22(defaults);\npostcss.decl = (defaults) => new Declaration22(defaults);\npostcss.rule = (defaults) => new Rule22(defaults);\npostcss.root = (defaults) => new Root22(defaults);\npostcss.document = (defaults) => new Document222(defaults);\npostcss.CssSyntaxError = CssSyntaxError22;\npostcss.Declaration = Declaration22;\npostcss.Container = Container22;\npostcss.Processor = Processor22;\npostcss.Document = Document222;\npostcss.Comment = Comment22;\npostcss.Warning = Warning22;\npostcss.AtRule = AtRule22;\npostcss.Result = Result22;\npostcss.Input = Input22;\npostcss.Rule = Rule22;\npostcss.Root = Root22;\npostcss.Node = Node22;\nLazyResult22.registerPostcss(postcss);\nvar postcss_1 = postcss;\npostcss.default = postcss;\nconst postcss$1 = /* @__PURE__ */ getDefaultExportFromCjs(postcss_1);\npostcss$1.stringify;\npostcss$1.fromJSON;\npostcss$1.plugin;\npostcss$1.parse;\npostcss$1.list;\npostcss$1.document;\npostcss$1.comment;\npostcss$1.atRule;\npostcss$1.rule;\npostcss$1.decl;\npostcss$1.root;\npostcss$1.CssSyntaxError;\npostcss$1.Declaration;\npostcss$1.Container;\npostcss$1.Processor;\npostcss$1.Document;\npostcss$1.Comment;\npostcss$1.Warning;\npostcss$1.AtRule;\npostcss$1.Result;\npostcss$1.Input;\npostcss$1.Rule;\npostcss$1.Root;\npostcss$1.Node;\nclass BaseRRNode {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any\n constructor(..._args) {\n __publicField2(this, \"parentElement\", null);\n __publicField2(this, \"parentNode\", null);\n __publicField2(this, \"ownerDocument\");\n __publicField2(this, \"firstChild\", null);\n __publicField2(this, \"lastChild\", null);\n __publicField2(this, \"previousSibling\", null);\n __publicField2(this, \"nextSibling\", null);\n __publicField2(this, \"ELEMENT_NODE\", 1);\n __publicField2(this, \"TEXT_NODE\", 3);\n __publicField2(this, \"nodeType\");\n __publicField2(this, \"nodeName\");\n __publicField2(this, \"RRNodeType\");\n }\n get childNodes() {\n const childNodes2 = [];\n let childIterator = this.firstChild;\n while (childIterator) {\n childNodes2.push(childIterator);\n childIterator = childIterator.nextSibling;\n }\n return childNodes2;\n }\n contains(node2) {\n if (!(node2 instanceof BaseRRNode)) return false;\n else if (node2.ownerDocument !== this.ownerDocument) return false;\n else if (node2 === this) return true;\n while (node2.parentNode) {\n if (node2.parentNode === this) return true;\n node2 = node2.parentNode;\n }\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n appendChild(_newChild) {\n throw new Error(\n `RRDomException: Failed to execute 'appendChild' on 'RRNode': This RRNode type does not support this method.`\n );\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n insertBefore(_newChild, _refChild) {\n throw new Error(\n `RRDomException: Failed to execute 'insertBefore' on 'RRNode': This RRNode type does not support this method.`\n );\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n removeChild(_node) {\n throw new Error(\n `RRDomException: Failed to execute 'removeChild' on 'RRNode': This RRNode type does not support this method.`\n );\n }\n toString() {\n return \"RRNode\";\n }\n}\nconst testableAccessors = {\n Node: [\"childNodes\", \"parentNode\", \"parentElement\", \"textContent\"],\n ShadowRoot: [\"host\", \"styleSheets\"],\n Element: [\"shadowRoot\", \"querySelector\", \"querySelectorAll\"],\n MutationObserver: []\n};\nconst testableMethods = {\n Node: [\"contains\", \"getRootNode\"],\n ShadowRoot: [\"getSelection\"],\n Element: [],\n MutationObserver: [\"constructor\"]\n};\nconst untaintedBasePrototype = {};\nconst isAngularZonePresent = () => {\n return !!globalThis.Zone;\n};\nfunction getUntaintedPrototype(key) {\n if (untaintedBasePrototype[key])\n return untaintedBasePrototype[key];\n const defaultObj = globalThis[key];\n const defaultPrototype = defaultObj.prototype;\n const accessorNames = key in testableAccessors ? testableAccessors[key] : void 0;\n const isUntaintedAccessors = Boolean(\n accessorNames && // @ts-expect-error 2345\n accessorNames.every(\n (accessor) => {\n var _a2, _b;\n return Boolean(\n (_b = (_a2 = Object.getOwnPropertyDescriptor(defaultPrototype, accessor)) == null ? void 0 : _a2.get) == null ? void 0 : _b.toString().includes(\"[native code]\")\n );\n }\n )\n );\n const methodNames = key in testableMethods ? testableMethods[key] : void 0;\n const isUntaintedMethods = Boolean(\n methodNames && methodNames.every(\n // @ts-expect-error 2345\n (method) => {\n var _a2;\n return typeof defaultPrototype[method] === \"function\" && ((_a2 = defaultPrototype[method]) == null ? void 0 : _a2.toString().includes(\"[native code]\"));\n }\n )\n );\n if (isUntaintedAccessors && isUntaintedMethods && !isAngularZonePresent()) {\n untaintedBasePrototype[key] = defaultObj.prototype;\n return defaultObj.prototype;\n }\n try {\n const iframeEl = document.createElement(\"iframe\");\n document.body.appendChild(iframeEl);\n const win = iframeEl.contentWindow;\n if (!win) return defaultObj.prototype;\n const untaintedObject = win[key].prototype;\n document.body.removeChild(iframeEl);\n if (!untaintedObject) return defaultPrototype;\n return untaintedBasePrototype[key] = untaintedObject;\n } catch {\n return defaultPrototype;\n }\n}\nconst untaintedAccessorCache = {};\nfunction getUntaintedAccessor(key, instance, accessor) {\n var _a2;\n const cacheKey = `${key}.${String(accessor)}`;\n if (untaintedAccessorCache[cacheKey])\n return untaintedAccessorCache[cacheKey].call(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype(key);\n const untaintedAccessor = (_a2 = Object.getOwnPropertyDescriptor(\n untaintedPrototype,\n accessor\n )) == null ? void 0 : _a2.get;\n if (!untaintedAccessor) return instance[accessor];\n untaintedAccessorCache[cacheKey] = untaintedAccessor;\n return untaintedAccessor.call(instance);\n}\nconst untaintedMethodCache = {};\nfunction getUntaintedMethod(key, instance, method) {\n const cacheKey = `${key}.${String(method)}`;\n if (untaintedMethodCache[cacheKey])\n return untaintedMethodCache[cacheKey].bind(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype(key);\n const untaintedMethod = untaintedPrototype[method];\n if (typeof untaintedMethod !== \"function\") return instance[method];\n untaintedMethodCache[cacheKey] = untaintedMethod;\n return untaintedMethod.bind(instance);\n}\nfunction childNodes(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"childNodes\");\n}\nfunction parentNode(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"parentNode\");\n}\nfunction parentElement(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"parentElement\");\n}\nfunction textContent(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"textContent\");\n}\nfunction contains(n2, other) {\n return getUntaintedMethod(\"Node\", n2, \"contains\")(other);\n}\nfunction getRootNode(n2) {\n return getUntaintedMethod(\"Node\", n2, \"getRootNode\")();\n}\nfunction host(n2) {\n if (!n2 || !(\"host\" in n2)) return null;\n return getUntaintedAccessor(\"ShadowRoot\", n2, \"host\");\n}\nfunction styleSheets(n2) {\n return n2.styleSheets;\n}\nfunction shadowRoot(n2) {\n if (!n2 || !(\"shadowRoot\" in n2)) return null;\n return getUntaintedAccessor(\"Element\", n2, \"shadowRoot\");\n}\nfunction querySelector(n2, selectors) {\n return getUntaintedAccessor(\"Element\", n2, \"querySelector\")(selectors);\n}\nfunction querySelectorAll(n2, selectors) {\n return getUntaintedAccessor(\"Element\", n2, \"querySelectorAll\")(selectors);\n}\nfunction mutationObserverCtor() {\n return getUntaintedPrototype(\"MutationObserver\").constructor;\n}\nconst index = {\n childNodes,\n parentNode,\n parentElement,\n textContent,\n contains,\n getRootNode,\n host,\n styleSheets,\n shadowRoot,\n querySelector,\n querySelectorAll,\n mutationObserver: mutationObserverCtor\n};\nfunction on(type, fn, target = document) {\n const options = { capture: true, passive: true };\n target.addEventListener(type, fn, options);\n return () => target.removeEventListener(type, fn, options);\n}\nconst DEPARTED_MIRROR_ACCESS_WARNING = \"Please stop import mirror directly. Instead of that,\\r\\nnow you can use replayer.getMirror() to access the mirror instance of a replayer,\\r\\nor you can use record.mirror to access the mirror instance during recording.\";\nlet _mirror = {\n map: {},\n getId() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return -1;\n },\n getNode() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return null;\n },\n removeNodeFromMap() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n },\n has() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return false;\n },\n reset() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n }\n};\nif (typeof window !== \"undefined\" && window.Proxy && window.Reflect) {\n _mirror = new Proxy(_mirror, {\n get(target, prop, receiver) {\n if (prop === \"map\") {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n }\n return Reflect.get(target, prop, receiver);\n }\n });\n}\nfunction throttle(func, wait, options = {}) {\n let timeout = null;\n let previous = 0;\n return function(...args) {\n const now = Date.now();\n if (!previous && options.leading === false) {\n previous = now;\n }\n const remaining = wait - (now - previous);\n const context = this;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n func.apply(context, args);\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(() => {\n previous = options.leading === false ? 0 : Date.now();\n timeout = null;\n func.apply(context, args);\n }, remaining);\n }\n };\n}\nfunction hookSetter(target, key, d, isRevoked, win = window) {\n const original = win.Object.getOwnPropertyDescriptor(target, key);\n win.Object.defineProperty(\n target,\n key,\n isRevoked ? d : {\n set(value) {\n setTimeout(() => {\n d.set.call(this, value);\n }, 0);\n if (original && original.set) {\n original.set.call(this, value);\n }\n }\n }\n );\n return () => hookSetter(target, key, original || {}, true);\n}\nfunction patch(source, name, replacement) {\n try {\n if (!(name in source)) {\n return () => {\n };\n }\n const original = source[name];\n const wrapped = replacement(original);\n if (typeof wrapped === \"function\") {\n wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __rrweb_original__: {\n enumerable: false,\n value: original\n }\n });\n }\n source[name] = wrapped;\n return () => {\n source[name] = original;\n };\n } catch {\n return () => {\n };\n }\n}\nlet nowTimestamp = Date.now;\nif (!/* @__PURE__ */ /[1-9][0-9]{12}/.test(Date.now().toString())) {\n nowTimestamp = () => (/* @__PURE__ */ new Date()).getTime();\n}\nfunction getWindowScroll(win) {\n var _a2, _b, _c, _d;\n const doc = win.document;\n return {\n left: doc.scrollingElement ? doc.scrollingElement.scrollLeft : win.pageXOffset !== void 0 ? win.pageXOffset : doc.documentElement.scrollLeft || (doc == null ? void 0 : doc.body) && ((_a2 = index.parentElement(doc.body)) == null ? void 0 : _a2.scrollLeft) || ((_b = doc == null ? void 0 : doc.body) == null ? void 0 : _b.scrollLeft) || 0,\n top: doc.scrollingElement ? doc.scrollingElement.scrollTop : win.pageYOffset !== void 0 ? win.pageYOffset : (doc == null ? void 0 : doc.documentElement.scrollTop) || (doc == null ? void 0 : doc.body) && ((_c = index.parentElement(doc.body)) == null ? void 0 : _c.scrollTop) || ((_d = doc == null ? void 0 : doc.body) == null ? void 0 : _d.scrollTop) || 0\n };\n}\nfunction getWindowHeight() {\n return window.innerHeight || document.documentElement && document.documentElement.clientHeight || document.body && document.body.clientHeight;\n}\nfunction getWindowWidth() {\n return window.innerWidth || document.documentElement && document.documentElement.clientWidth || document.body && document.body.clientWidth;\n}\nfunction closestElementOfNode(node2) {\n if (!node2) {\n return null;\n }\n const el = node2.nodeType === node2.ELEMENT_NODE ? node2 : index.parentElement(node2);\n return el;\n}\nfunction isBlocked(node2, blockClass, blockSelector, checkAncestors) {\n if (!node2) {\n return false;\n }\n const el = closestElementOfNode(node2);\n if (!el) {\n return false;\n }\n try {\n if (typeof blockClass === \"string\") {\n if (el.classList.contains(blockClass)) return true;\n if (checkAncestors && el.closest(\".\" + blockClass) !== null) return true;\n } else {\n if (classMatchesRegex(el, blockClass, checkAncestors)) return true;\n }\n } catch (e2) {\n }\n if (blockSelector) {\n if (el.matches(blockSelector)) return true;\n if (checkAncestors && el.closest(blockSelector) !== null) return true;\n }\n return false;\n}\nfunction isSerialized(n2, mirror2) {\n return mirror2.getId(n2) !== -1;\n}\nfunction isIgnored(n2, mirror2, slimDOMOptions) {\n if (n2.tagName === \"TITLE\" && slimDOMOptions.headTitleMutations) {\n return true;\n }\n return mirror2.getId(n2) === IGNORED_NODE;\n}\nfunction isAncestorRemoved(target, mirror2) {\n if (isShadowRoot(target)) {\n return false;\n }\n const id = mirror2.getId(target);\n if (!mirror2.has(id)) {\n return true;\n }\n const parent = index.parentNode(target);\n if (parent && parent.nodeType === target.DOCUMENT_NODE) {\n return false;\n }\n if (!parent) {\n return true;\n }\n return isAncestorRemoved(parent, mirror2);\n}\nfunction legacy_isTouchEvent(event) {\n return Boolean(event.changedTouches);\n}\nfunction polyfill$1(win = window) {\n if (\"NodeList\" in win && !win.NodeList.prototype.forEach) {\n win.NodeList.prototype.forEach = Array.prototype.forEach;\n }\n if (\"DOMTokenList\" in win && !win.DOMTokenList.prototype.forEach) {\n win.DOMTokenList.prototype.forEach = Array.prototype.forEach;\n }\n}\nfunction isSerializedIframe(n2, mirror2) {\n return Boolean(n2.nodeName === \"IFRAME\" && mirror2.getMeta(n2));\n}\nfunction isSerializedStylesheet(n2, mirror2) {\n return Boolean(\n n2.nodeName === \"LINK\" && n2.nodeType === n2.ELEMENT_NODE && n2.getAttribute && n2.getAttribute(\"rel\") === \"stylesheet\" && mirror2.getMeta(n2)\n );\n}\nfunction hasShadowRoot(n2) {\n if (!n2) return false;\n if (n2 instanceof BaseRRNode && \"shadowRoot\" in n2) {\n return Boolean(n2.shadowRoot);\n }\n return Boolean(index.shadowRoot(n2));\n}\nclass StyleSheetMirror {\n constructor() {\n __publicField(this, \"id\", 1);\n __publicField(this, \"styleIDMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"idStyleMap\", /* @__PURE__ */ new Map());\n }\n getId(stylesheet) {\n return this.styleIDMap.get(stylesheet) ?? -1;\n }\n has(stylesheet) {\n return this.styleIDMap.has(stylesheet);\n }\n /**\n * @returns If the stylesheet is in the mirror, returns the id of the stylesheet. If not, return the new assigned id.\n */\n add(stylesheet, id) {\n if (this.has(stylesheet)) return this.getId(stylesheet);\n let newId;\n if (id === void 0) {\n newId = this.id++;\n } else newId = id;\n this.styleIDMap.set(stylesheet, newId);\n this.idStyleMap.set(newId, stylesheet);\n return newId;\n }\n getStyle(id) {\n return this.idStyleMap.get(id) || null;\n }\n reset() {\n this.styleIDMap = /* @__PURE__ */ new WeakMap();\n this.idStyleMap = /* @__PURE__ */ new Map();\n this.id = 1;\n }\n generateId() {\n return this.id++;\n }\n}\nfunction getShadowHost(n2) {\n var _a2;\n let shadowHost = null;\n if (\"getRootNode\" in n2 && ((_a2 = index.getRootNode(n2)) == null ? void 0 : _a2.nodeType) === Node.DOCUMENT_FRAGMENT_NODE && index.host(index.getRootNode(n2)))\n shadowHost = index.host(index.getRootNode(n2));\n return shadowHost;\n}\nfunction getRootShadowHost(n2) {\n let rootShadowHost = n2;\n let shadowHost;\n while (shadowHost = getShadowHost(rootShadowHost))\n rootShadowHost = shadowHost;\n return rootShadowHost;\n}\nfunction shadowHostInDom(n2) {\n const doc = n2.ownerDocument;\n if (!doc) return false;\n const shadowHost = getRootShadowHost(n2);\n return index.contains(doc, shadowHost);\n}\nfunction inDom(n2) {\n const doc = n2.ownerDocument;\n if (!doc) return false;\n return index.contains(doc, n2) || shadowHostInDom(n2);\n}\nvar EventType = /* @__PURE__ */ ((EventType2) => {\n EventType2[EventType2[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n EventType2[EventType2[\"Load\"] = 1] = \"Load\";\n EventType2[EventType2[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n EventType2[EventType2[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n EventType2[EventType2[\"Meta\"] = 4] = \"Meta\";\n EventType2[EventType2[\"Custom\"] = 5] = \"Custom\";\n EventType2[EventType2[\"Plugin\"] = 6] = \"Plugin\";\n return EventType2;\n})(EventType || {});\nvar IncrementalSource = /* @__PURE__ */ ((IncrementalSource2) => {\n IncrementalSource2[IncrementalSource2[\"Mutation\"] = 0] = \"Mutation\";\n IncrementalSource2[IncrementalSource2[\"MouseMove\"] = 1] = \"MouseMove\";\n IncrementalSource2[IncrementalSource2[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n IncrementalSource2[IncrementalSource2[\"Scroll\"] = 3] = \"Scroll\";\n IncrementalSource2[IncrementalSource2[\"ViewportResize\"] = 4] = \"ViewportResize\";\n IncrementalSource2[IncrementalSource2[\"Input\"] = 5] = \"Input\";\n IncrementalSource2[IncrementalSource2[\"TouchMove\"] = 6] = \"TouchMove\";\n IncrementalSource2[IncrementalSource2[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n IncrementalSource2[IncrementalSource2[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n IncrementalSource2[IncrementalSource2[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n IncrementalSource2[IncrementalSource2[\"Font\"] = 10] = \"Font\";\n IncrementalSource2[IncrementalSource2[\"Log\"] = 11] = \"Log\";\n IncrementalSource2[IncrementalSource2[\"Drag\"] = 12] = \"Drag\";\n IncrementalSource2[IncrementalSource2[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n IncrementalSource2[IncrementalSource2[\"Selection\"] = 14] = \"Selection\";\n IncrementalSource2[IncrementalSource2[\"AdoptedStyleSheet\"] = 15] = \"AdoptedStyleSheet\";\n IncrementalSource2[IncrementalSource2[\"CustomElement\"] = 16] = \"CustomElement\";\n return IncrementalSource2;\n})(IncrementalSource || {});\nvar MouseInteractions = /* @__PURE__ */ ((MouseInteractions2) => {\n MouseInteractions2[MouseInteractions2[\"MouseUp\"] = 0] = \"MouseUp\";\n MouseInteractions2[MouseInteractions2[\"MouseDown\"] = 1] = \"MouseDown\";\n MouseInteractions2[MouseInteractions2[\"Click\"] = 2] = \"Click\";\n MouseInteractions2[MouseInteractions2[\"ContextMenu\"] = 3] = \"ContextMenu\";\n MouseInteractions2[MouseInteractions2[\"DblClick\"] = 4] = \"DblClick\";\n MouseInteractions2[MouseInteractions2[\"Focus\"] = 5] = \"Focus\";\n MouseInteractions2[MouseInteractions2[\"Blur\"] = 6] = \"Blur\";\n MouseInteractions2[MouseInteractions2[\"TouchStart\"] = 7] = \"TouchStart\";\n MouseInteractions2[MouseInteractions2[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n MouseInteractions2[MouseInteractions2[\"TouchEnd\"] = 9] = \"TouchEnd\";\n MouseInteractions2[MouseInteractions2[\"TouchCancel\"] = 10] = \"TouchCancel\";\n return MouseInteractions2;\n})(MouseInteractions || {});\nvar PointerTypes = /* @__PURE__ */ ((PointerTypes2) => {\n PointerTypes2[PointerTypes2[\"Mouse\"] = 0] = \"Mouse\";\n PointerTypes2[PointerTypes2[\"Pen\"] = 1] = \"Pen\";\n PointerTypes2[PointerTypes2[\"Touch\"] = 2] = \"Touch\";\n return PointerTypes2;\n})(PointerTypes || {});\nvar CanvasContext = /* @__PURE__ */ ((CanvasContext2) => {\n CanvasContext2[CanvasContext2[\"2D\"] = 0] = \"2D\";\n CanvasContext2[CanvasContext2[\"WebGL\"] = 1] = \"WebGL\";\n CanvasContext2[CanvasContext2[\"WebGL2\"] = 2] = \"WebGL2\";\n return CanvasContext2;\n})(CanvasContext || {});\nvar MediaInteractions = /* @__PURE__ */ ((MediaInteractions2) => {\n MediaInteractions2[MediaInteractions2[\"Play\"] = 0] = \"Play\";\n MediaInteractions2[MediaInteractions2[\"Pause\"] = 1] = \"Pause\";\n MediaInteractions2[MediaInteractions2[\"Seeked\"] = 2] = \"Seeked\";\n MediaInteractions2[MediaInteractions2[\"VolumeChange\"] = 3] = \"VolumeChange\";\n MediaInteractions2[MediaInteractions2[\"RateChange\"] = 4] = \"RateChange\";\n return MediaInteractions2;\n})(MediaInteractions || {});\nvar NodeType = /* @__PURE__ */ ((NodeType2) => {\n NodeType2[NodeType2[\"Document\"] = 0] = \"Document\";\n NodeType2[NodeType2[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType2[NodeType2[\"Element\"] = 2] = \"Element\";\n NodeType2[NodeType2[\"Text\"] = 3] = \"Text\";\n NodeType2[NodeType2[\"CDATA\"] = 4] = \"CDATA\";\n NodeType2[NodeType2[\"Comment\"] = 5] = \"Comment\";\n return NodeType2;\n})(NodeType || {});\nfunction isNodeInLinkedList(n2) {\n return \"__ln\" in n2;\n}\nclass DoubleLinkedList {\n constructor() {\n __publicField(this, \"length\", 0);\n __publicField(this, \"head\", null);\n __publicField(this, \"tail\", null);\n }\n get(position) {\n if (position >= this.length) {\n throw new Error(\"Position outside of list range\");\n }\n let current = this.head;\n for (let index2 = 0; index2 < position; index2++) {\n current = (current == null ? void 0 : current.next) || null;\n }\n return current;\n }\n addNode(n2) {\n const node2 = {\n value: n2,\n previous: null,\n next: null\n };\n n2.__ln = node2;\n if (n2.previousSibling && isNodeInLinkedList(n2.previousSibling)) {\n const current = n2.previousSibling.__ln.next;\n node2.next = current;\n node2.previous = n2.previousSibling.__ln;\n n2.previousSibling.__ln.next = node2;\n if (current) {\n current.previous = node2;\n }\n } else if (n2.nextSibling && isNodeInLinkedList(n2.nextSibling) && n2.nextSibling.__ln.previous) {\n const current = n2.nextSibling.__ln.previous;\n node2.previous = current;\n node2.next = n2.nextSibling.__ln;\n n2.nextSibling.__ln.previous = node2;\n if (current) {\n current.next = node2;\n }\n } else {\n if (this.head) {\n this.head.previous = node2;\n }\n node2.next = this.head;\n this.head = node2;\n }\n if (node2.next === null) {\n this.tail = node2;\n }\n this.length++;\n }\n removeNode(n2) {\n const current = n2.__ln;\n if (!this.head) {\n return;\n }\n if (!current.previous) {\n this.head = current.next;\n if (this.head) {\n this.head.previous = null;\n } else {\n this.tail = null;\n }\n } else {\n current.previous.next = current.next;\n if (current.next) {\n current.next.previous = current.previous;\n } else {\n this.tail = current.previous;\n }\n }\n if (n2.__ln) {\n delete n2.__ln;\n }\n this.length--;\n }\n}\nconst moveKey = (id, parentId) => `${id}@${parentId}`;\nclass MutationBuffer {\n constructor() {\n __publicField(this, \"frozen\", false);\n __publicField(this, \"locked\", false);\n __publicField(this, \"texts\", []);\n __publicField(this, \"attributes\", []);\n __publicField(this, \"attributeMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"removes\", []);\n __publicField(this, \"mapRemoves\", []);\n __publicField(this, \"movedMap\", {});\n __publicField(this, \"addedSet\", /* @__PURE__ */ new Set());\n __publicField(this, \"movedSet\", /* @__PURE__ */ new Set());\n __publicField(this, \"droppedSet\", /* @__PURE__ */ new Set());\n __publicField(this, \"removesSubTreeCache\", /* @__PURE__ */ new Set());\n __publicField(this, \"mutationCb\");\n __publicField(this, \"blockClass\");\n __publicField(this, \"blockSelector\");\n __publicField(this, \"maskTextClass\");\n __publicField(this, \"maskTextSelector\");\n __publicField(this, \"inlineStylesheet\");\n __publicField(this, \"maskInputOptions\");\n __publicField(this, \"maskTextFn\");\n __publicField(this, \"maskInputFn\");\n __publicField(this, \"keepIframeSrcFn\");\n __publicField(this, \"recordCanvas\");\n __publicField(this, \"inlineImages\");\n __publicField(this, \"slimDOMOptions\");\n __publicField(this, \"dataURLOptions\");\n __publicField(this, \"doc\");\n __publicField(this, \"mirror\");\n __publicField(this, \"iframeManager\");\n __publicField(this, \"stylesheetManager\");\n __publicField(this, \"shadowDomManager\");\n __publicField(this, \"canvasManager\");\n __publicField(this, \"processedNodeManager\");\n __publicField(this, \"unattachedDoc\");\n __publicField(this, \"processMutations\", (mutations) => {\n mutations.forEach(this.processMutation);\n this.emit();\n });\n __publicField(this, \"emit\", () => {\n if (this.frozen || this.locked) {\n return;\n }\n const adds = [];\n const addedIds = /* @__PURE__ */ new Set();\n const addList = new DoubleLinkedList();\n const getNextId = (n2) => {\n let ns = n2;\n let nextId = IGNORED_NODE;\n while (nextId === IGNORED_NODE) {\n ns = ns && ns.nextSibling;\n nextId = ns && this.mirror.getId(ns);\n }\n return nextId;\n };\n const pushAdd = (n2) => {\n const parent = index.parentNode(n2);\n if (!parent || !inDom(n2)) {\n return;\n }\n let cssCaptured = false;\n if (n2.nodeType === Node.TEXT_NODE) {\n const parentTag = parent.tagName;\n if (parentTag === \"TEXTAREA\") {\n return;\n } else if (parentTag === \"STYLE\" && this.addedSet.has(parent)) {\n cssCaptured = true;\n }\n }\n const parentId = isShadowRoot(parent) ? this.mirror.getId(getShadowHost(n2)) : this.mirror.getId(parent);\n const nextId = getNextId(n2);\n if (parentId === -1 || nextId === -1) {\n return addList.addNode(n2);\n }\n const sn = serializeNodeWithId(n2, {\n doc: this.doc,\n mirror: this.mirror,\n blockClass: this.blockClass,\n blockSelector: this.blockSelector,\n maskTextClass: this.maskTextClass,\n maskTextSelector: this.maskTextSelector,\n skipChild: true,\n newlyAddedElement: true,\n inlineStylesheet: this.inlineStylesheet,\n maskInputOptions: this.maskInputOptions,\n maskTextFn: this.maskTextFn,\n maskInputFn: this.maskInputFn,\n slimDOMOptions: this.slimDOMOptions,\n dataURLOptions: this.dataURLOptions,\n recordCanvas: this.recordCanvas,\n inlineImages: this.inlineImages,\n onSerialize: (currentN) => {\n if (isSerializedIframe(currentN, this.mirror)) {\n this.iframeManager.addIframe(currentN);\n }\n if (isSerializedStylesheet(currentN, this.mirror)) {\n this.stylesheetManager.trackLinkElement(\n currentN\n );\n }\n if (hasShadowRoot(n2)) {\n this.shadowDomManager.addShadowRoot(index.shadowRoot(n2), this.doc);\n }\n },\n onIframeLoad: (iframe, childSn) => {\n this.iframeManager.attachIframe(iframe, childSn);\n this.shadowDomManager.observeAttachShadow(iframe);\n },\n onStylesheetLoad: (link, childSn) => {\n this.stylesheetManager.attachLinkElement(link, childSn);\n },\n cssCaptured\n });\n if (sn) {\n adds.push({\n parentId,\n nextId,\n node: sn\n });\n addedIds.add(sn.id);\n }\n };\n while (this.mapRemoves.length) {\n this.mirror.removeNodeFromMap(this.mapRemoves.shift());\n }\n for (const n2 of this.movedSet) {\n if (isParentRemoved(this.removesSubTreeCache, n2, this.mirror) && !this.movedSet.has(index.parentNode(n2))) {\n continue;\n }\n pushAdd(n2);\n }\n for (const n2 of this.addedSet) {\n if (!isAncestorInSet(this.droppedSet, n2) && !isParentRemoved(this.removesSubTreeCache, n2, this.mirror)) {\n pushAdd(n2);\n } else if (isAncestorInSet(this.movedSet, n2)) {\n pushAdd(n2);\n } else {\n this.droppedSet.add(n2);\n }\n }\n let candidate = null;\n while (addList.length) {\n let node2 = null;\n if (candidate) {\n const parentId = this.mirror.getId(index.parentNode(candidate.value));\n const nextId = getNextId(candidate.value);\n if (parentId !== -1 && nextId !== -1) {\n node2 = candidate;\n }\n }\n if (!node2) {\n let tailNode = addList.tail;\n while (tailNode) {\n const _node = tailNode;\n tailNode = tailNode.previous;\n if (_node) {\n const parentId = this.mirror.getId(index.parentNode(_node.value));\n const nextId = getNextId(_node.value);\n if (nextId === -1) continue;\n else if (parentId !== -1) {\n node2 = _node;\n break;\n } else {\n const unhandledNode = _node.value;\n const parent = index.parentNode(unhandledNode);\n if (parent && parent.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n const shadowHost = index.host(parent);\n const parentId2 = this.mirror.getId(shadowHost);\n if (parentId2 !== -1) {\n node2 = _node;\n break;\n }\n }\n }\n }\n }\n }\n if (!node2) {\n while (addList.head) {\n addList.removeNode(addList.head.value);\n }\n break;\n }\n candidate = node2.previous;\n addList.removeNode(node2.value);\n pushAdd(node2.value);\n }\n const payload = {\n texts: this.texts.map((text) => {\n const n2 = text.node;\n const parent = index.parentNode(n2);\n if (parent && parent.tagName === \"TEXTAREA\") {\n this.genTextAreaValueMutation(parent);\n }\n return {\n id: this.mirror.getId(n2),\n value: text.value\n };\n }).filter((text) => !addedIds.has(text.id)).filter((text) => this.mirror.has(text.id)),\n attributes: this.attributes.map((attribute) => {\n const { attributes } = attribute;\n if (typeof attributes.style === \"string\") {\n const diffAsStr = JSON.stringify(attribute.styleDiff);\n const unchangedAsStr = JSON.stringify(attribute._unchangedStyles);\n if (diffAsStr.length < attributes.style.length) {\n if ((diffAsStr + unchangedAsStr).split(\"var(\").length === attributes.style.split(\"var(\").length) {\n attributes.style = attribute.styleDiff;\n }\n }\n }\n return {\n id: this.mirror.getId(attribute.node),\n attributes\n };\n }).filter((attribute) => !addedIds.has(attribute.id)).filter((attribute) => this.mirror.has(attribute.id)),\n removes: this.removes,\n adds\n };\n if (!payload.texts.length && !payload.attributes.length && !payload.removes.length && !payload.adds.length) {\n return;\n }\n this.texts = [];\n this.attributes = [];\n this.attributeMap = /* @__PURE__ */ new WeakMap();\n this.removes = [];\n this.addedSet = /* @__PURE__ */ new Set();\n this.movedSet = /* @__PURE__ */ new Set();\n this.droppedSet = /* @__PURE__ */ new Set();\n this.removesSubTreeCache = /* @__PURE__ */ new Set();\n this.movedMap = {};\n this.mutationCb(payload);\n });\n __publicField(this, \"genTextAreaValueMutation\", (textarea) => {\n let item = this.attributeMap.get(textarea);\n if (!item) {\n item = {\n node: textarea,\n attributes: {},\n styleDiff: {},\n _unchangedStyles: {}\n };\n this.attributes.push(item);\n this.attributeMap.set(textarea, item);\n }\n item.attributes.value = Array.from(\n index.childNodes(textarea),\n (cn) => index.textContent(cn) || \"\"\n ).join(\"\");\n });\n __publicField(this, \"processMutation\", (m) => {\n if (isIgnored(m.target, this.mirror, this.slimDOMOptions)) {\n return;\n }\n switch (m.type) {\n case \"characterData\": {\n const value = index.textContent(m.target);\n if (!isBlocked(m.target, this.blockClass, this.blockSelector, false) && value !== m.oldValue) {\n this.texts.push({\n value: needMaskingText(\n m.target,\n this.maskTextClass,\n this.maskTextSelector,\n true\n // checkAncestors\n ) && value ? this.maskTextFn ? this.maskTextFn(value, closestElementOfNode(m.target)) : value.replace(/[\\S]/g, \"*\") : value,\n node: m.target\n });\n }\n break;\n }\n case \"attributes\": {\n const target = m.target;\n let attributeName = m.attributeName;\n let value = m.target.getAttribute(attributeName);\n if (attributeName === \"value\") {\n const type = getInputType(target);\n value = maskInputValue({\n element: target,\n maskInputOptions: this.maskInputOptions,\n tagName: target.tagName,\n type,\n value,\n maskInputFn: this.maskInputFn\n });\n }\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) || value === m.oldValue) {\n return;\n }\n let item = this.attributeMap.get(m.target);\n if (target.tagName === \"IFRAME\" && attributeName === \"src\" && !this.keepIframeSrcFn(value)) {\n if (!target.contentDocument) {\n attributeName = \"rr_src\";\n } else {\n return;\n }\n }\n if (!item) {\n item = {\n node: m.target,\n attributes: {},\n styleDiff: {},\n _unchangedStyles: {}\n };\n this.attributes.push(item);\n this.attributeMap.set(m.target, item);\n }\n if (attributeName === \"type\" && target.tagName === \"INPUT\" && (m.oldValue || \"\").toLowerCase() === \"password\") {\n target.setAttribute(\"data-rr-is-password\", \"true\");\n }\n if (!ignoreAttribute(target.tagName, attributeName)) {\n item.attributes[attributeName] = transformAttribute(\n this.doc,\n toLowerCase(target.tagName),\n toLowerCase(attributeName),\n value\n );\n if (attributeName === \"style\") {\n if (!this.unattachedDoc) {\n try {\n this.unattachedDoc = document.implementation.createHTMLDocument();\n } catch (e2) {\n this.unattachedDoc = this.doc;\n }\n }\n const old = this.unattachedDoc.createElement(\"span\");\n if (m.oldValue) {\n old.setAttribute(\"style\", m.oldValue);\n }\n for (const pname of Array.from(target.style)) {\n const newValue = target.style.getPropertyValue(pname);\n const newPriority = target.style.getPropertyPriority(pname);\n if (newValue !== old.style.getPropertyValue(pname) || newPriority !== old.style.getPropertyPriority(pname)) {\n if (newPriority === \"\") {\n item.styleDiff[pname] = newValue;\n } else {\n item.styleDiff[pname] = [newValue, newPriority];\n }\n } else {\n item._unchangedStyles[pname] = [newValue, newPriority];\n }\n }\n for (const pname of Array.from(old.style)) {\n if (target.style.getPropertyValue(pname) === \"\") {\n item.styleDiff[pname] = false;\n }\n }\n } else if (attributeName === \"open\" && target.tagName === \"DIALOG\") {\n if (target.matches(\"dialog:modal\")) {\n item.attributes[\"rr_open_mode\"] = \"modal\";\n } else {\n item.attributes[\"rr_open_mode\"] = \"non-modal\";\n }\n }\n }\n break;\n }\n case \"childList\": {\n if (isBlocked(m.target, this.blockClass, this.blockSelector, true))\n return;\n if (m.target.tagName === \"TEXTAREA\") {\n this.genTextAreaValueMutation(m.target);\n return;\n }\n m.addedNodes.forEach((n2) => this.genAdds(n2, m.target));\n m.removedNodes.forEach((n2) => {\n const nodeId = this.mirror.getId(n2);\n const parentId = isShadowRoot(m.target) ? this.mirror.getId(index.host(m.target)) : this.mirror.getId(m.target);\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) || isIgnored(n2, this.mirror, this.slimDOMOptions) || !isSerialized(n2, this.mirror)) {\n return;\n }\n if (this.addedSet.has(n2)) {\n deepDelete(this.addedSet, n2);\n this.droppedSet.add(n2);\n } else if (this.addedSet.has(m.target) && nodeId === -1) ;\n else if (isAncestorRemoved(m.target, this.mirror)) ;\n else if (this.movedSet.has(n2) && this.movedMap[moveKey(nodeId, parentId)]) {\n deepDelete(this.movedSet, n2);\n } else {\n this.removes.push({\n parentId,\n id: nodeId,\n isShadow: isShadowRoot(m.target) && isNativeShadowDom(m.target) ? true : void 0\n });\n processRemoves(n2, this.removesSubTreeCache);\n }\n this.mapRemoves.push(n2);\n });\n break;\n }\n }\n });\n __publicField(this, \"genAdds\", (n2, target) => {\n if (this.processedNodeManager.inOtherBuffer(n2, this)) return;\n if (this.addedSet.has(n2) || this.movedSet.has(n2)) return;\n if (this.mirror.hasNode(n2)) {\n if (isIgnored(n2, this.mirror, this.slimDOMOptions)) {\n return;\n }\n this.movedSet.add(n2);\n let targetId = null;\n if (target && this.mirror.hasNode(target)) {\n targetId = this.mirror.getId(target);\n }\n if (targetId && targetId !== -1) {\n this.movedMap[moveKey(this.mirror.getId(n2), targetId)] = true;\n }\n } else {\n this.addedSet.add(n2);\n this.droppedSet.delete(n2);\n }\n if (!isBlocked(n2, this.blockClass, this.blockSelector, false)) {\n index.childNodes(n2).forEach((childN) => this.genAdds(childN));\n if (hasShadowRoot(n2)) {\n index.childNodes(index.shadowRoot(n2)).forEach((childN) => {\n this.processedNodeManager.add(childN, this);\n this.genAdds(childN, n2);\n });\n }\n }\n });\n }\n init(options) {\n [\n \"mutationCb\",\n \"blockClass\",\n \"blockSelector\",\n \"maskTextClass\",\n \"maskTextSelector\",\n \"inlineStylesheet\",\n \"maskInputOptions\",\n \"maskTextFn\",\n \"maskInputFn\",\n \"keepIframeSrcFn\",\n \"recordCanvas\",\n \"inlineImages\",\n \"slimDOMOptions\",\n \"dataURLOptions\",\n \"doc\",\n \"mirror\",\n \"iframeManager\",\n \"stylesheetManager\",\n \"shadowDomManager\",\n \"canvasManager\",\n \"processedNodeManager\"\n ].forEach((key) => {\n this[key] = options[key];\n });\n }\n freeze() {\n this.frozen = true;\n this.canvasManager.freeze();\n }\n unfreeze() {\n this.frozen = false;\n this.canvasManager.unfreeze();\n this.emit();\n }\n isFrozen() {\n return this.frozen;\n }\n lock() {\n this.locked = true;\n this.canvasManager.lock();\n }\n unlock() {\n this.locked = false;\n this.canvasManager.unlock();\n this.emit();\n }\n reset() {\n this.shadowDomManager.reset();\n this.canvasManager.reset();\n }\n}\nfunction deepDelete(addsSet, n2) {\n addsSet.delete(n2);\n index.childNodes(n2).forEach((childN) => deepDelete(addsSet, childN));\n}\nfunction processRemoves(n2, cache) {\n const queue = [n2];\n while (queue.length) {\n const next = queue.pop();\n if (cache.has(next)) continue;\n cache.add(next);\n index.childNodes(next).forEach((n22) => queue.push(n22));\n }\n return;\n}\nfunction isParentRemoved(removes, n2, mirror2) {\n if (removes.size === 0) return false;\n return _isParentRemoved(removes, n2);\n}\nfunction _isParentRemoved(removes, n2, _mirror2) {\n const node2 = index.parentNode(n2);\n if (!node2) return false;\n return removes.has(node2);\n}\nfunction isAncestorInSet(set, n2) {\n if (set.size === 0) return false;\n return _isAncestorInSet(set, n2);\n}\nfunction _isAncestorInSet(set, n2) {\n const parent = index.parentNode(n2);\n if (!parent) {\n return false;\n }\n if (set.has(parent)) {\n return true;\n }\n return _isAncestorInSet(set, parent);\n}\nlet errorHandler;\nfunction registerErrorHandler(handler) {\n errorHandler = handler;\n}\nfunction unregisterErrorHandler() {\n errorHandler = void 0;\n}\nconst callbackWrapper = (cb) => {\n if (!errorHandler) {\n return cb;\n }\n const rrwebWrapped = (...rest) => {\n try {\n return cb(...rest);\n } catch (error) {\n if (errorHandler && errorHandler(error) === true) {\n return;\n }\n throw error;\n }\n };\n return rrwebWrapped;\n};\nconst mutationBuffers = [];\nfunction getEventTarget(event) {\n try {\n if (\"composedPath\" in event) {\n const path = event.composedPath();\n if (path.length) {\n return path[0];\n }\n } else if (\"path\" in event && event.path.length) {\n return event.path[0];\n }\n } catch {\n }\n return event && event.target;\n}\nfunction initMutationObserver(options, rootEl) {\n const mutationBuffer = new MutationBuffer();\n mutationBuffers.push(mutationBuffer);\n mutationBuffer.init(options);\n const observer = new (mutationObserverCtor())(\n callbackWrapper(mutationBuffer.processMutations.bind(mutationBuffer))\n );\n observer.observe(rootEl, {\n attributes: true,\n attributeOldValue: true,\n characterData: true,\n characterDataOldValue: true,\n childList: true,\n subtree: true\n });\n return observer;\n}\nfunction initMoveObserver({\n mousemoveCb,\n sampling,\n doc,\n mirror: mirror2\n}) {\n if (sampling.mousemove === false) {\n return () => {\n };\n }\n const threshold = typeof sampling.mousemove === \"number\" ? sampling.mousemove : 50;\n const callbackThreshold = typeof sampling.mousemoveCallback === \"number\" ? sampling.mousemoveCallback : 500;\n let positions = [];\n let timeBaseline;\n const wrappedCb = throttle(\n callbackWrapper(\n (source) => {\n const totalOffset = Date.now() - timeBaseline;\n mousemoveCb(\n positions.map((p) => {\n p.timeOffset -= totalOffset;\n return p;\n }),\n source\n );\n positions = [];\n timeBaseline = null;\n }\n ),\n callbackThreshold\n );\n const updatePosition = callbackWrapper(\n throttle(\n callbackWrapper((evt) => {\n const target = getEventTarget(evt);\n const { clientX, clientY } = legacy_isTouchEvent(evt) ? evt.changedTouches[0] : evt;\n if (!timeBaseline) {\n timeBaseline = nowTimestamp();\n }\n positions.push({\n x: clientX,\n y: clientY,\n id: mirror2.getId(target),\n timeOffset: nowTimestamp() - timeBaseline\n });\n wrappedCb(\n typeof DragEvent !== \"undefined\" && evt instanceof DragEvent ? IncrementalSource.Drag : evt instanceof MouseEvent ? IncrementalSource.MouseMove : IncrementalSource.TouchMove\n );\n }),\n threshold,\n {\n trailing: false\n }\n )\n );\n const handlers = [\n on(\"mousemove\", updatePosition, doc),\n on(\"touchmove\", updatePosition, doc),\n on(\"drag\", updatePosition, doc)\n ];\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initMouseInteractionObserver({\n mouseInteractionCb,\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n sampling\n}) {\n if (sampling.mouseInteraction === false) {\n return () => {\n };\n }\n const disableMap = sampling.mouseInteraction === true || sampling.mouseInteraction === void 0 ? {} : sampling.mouseInteraction;\n const handlers = [];\n let currentPointerType = null;\n const getHandler = (eventKey) => {\n return (event) => {\n const target = getEventTarget(event);\n if (isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n let pointerType = null;\n let thisEventKey = eventKey;\n if (\"pointerType\" in event) {\n switch (event.pointerType) {\n case \"mouse\":\n pointerType = PointerTypes.Mouse;\n break;\n case \"touch\":\n pointerType = PointerTypes.Touch;\n break;\n case \"pen\":\n pointerType = PointerTypes.Pen;\n break;\n }\n if (pointerType === PointerTypes.Touch) {\n if (MouseInteractions[eventKey] === MouseInteractions.MouseDown) {\n thisEventKey = \"TouchStart\";\n } else if (MouseInteractions[eventKey] === MouseInteractions.MouseUp) {\n thisEventKey = \"TouchEnd\";\n }\n } else if (pointerType === PointerTypes.Pen) ;\n } else if (legacy_isTouchEvent(event)) {\n pointerType = PointerTypes.Touch;\n }\n if (pointerType !== null) {\n currentPointerType = pointerType;\n if (thisEventKey.startsWith(\"Touch\") && pointerType === PointerTypes.Touch || thisEventKey.startsWith(\"Mouse\") && pointerType === PointerTypes.Mouse) {\n pointerType = null;\n }\n } else if (MouseInteractions[eventKey] === MouseInteractions.Click) {\n pointerType = currentPointerType;\n currentPointerType = null;\n }\n const e2 = legacy_isTouchEvent(event) ? event.changedTouches[0] : event;\n if (!e2) {\n return;\n }\n const id = mirror2.getId(target);\n const { clientX, clientY } = e2;\n callbackWrapper(mouseInteractionCb)({\n type: MouseInteractions[thisEventKey],\n id,\n x: clientX,\n y: clientY,\n ...pointerType !== null && { pointerType }\n });\n };\n };\n Object.keys(MouseInteractions).filter(\n (key) => Number.isNaN(Number(key)) && !key.endsWith(\"_Departed\") && disableMap[key] !== false\n ).forEach((eventKey) => {\n let eventName = toLowerCase(eventKey);\n const handler = getHandler(eventKey);\n if (window.PointerEvent) {\n switch (MouseInteractions[eventKey]) {\n case MouseInteractions.MouseDown:\n case MouseInteractions.MouseUp:\n eventName = eventName.replace(\n \"mouse\",\n \"pointer\"\n );\n break;\n case MouseInteractions.TouchStart:\n case MouseInteractions.TouchEnd:\n return;\n }\n }\n handlers.push(on(eventName, handler, doc));\n });\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initScrollObserver({\n scrollCb,\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n sampling\n}) {\n const updatePosition = callbackWrapper(\n throttle(\n callbackWrapper((evt) => {\n const target = getEventTarget(evt);\n if (!target || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n const id = mirror2.getId(target);\n if (target === doc && doc.defaultView) {\n const scrollLeftTop = getWindowScroll(doc.defaultView);\n scrollCb({\n id,\n x: scrollLeftTop.left,\n y: scrollLeftTop.top\n });\n } else {\n scrollCb({\n id,\n x: target.scrollLeft,\n y: target.scrollTop\n });\n }\n }),\n sampling.scroll || 100\n )\n );\n return on(\"scroll\", updatePosition, doc);\n}\nfunction initViewportResizeObserver({ viewportResizeCb }, { win }) {\n let lastH = -1;\n let lastW = -1;\n const updateDimension = callbackWrapper(\n throttle(\n callbackWrapper(() => {\n const height = getWindowHeight();\n const width = getWindowWidth();\n if (lastH !== height || lastW !== width) {\n viewportResizeCb({\n width: Number(width),\n height: Number(height)\n });\n lastH = height;\n lastW = width;\n }\n }),\n 200\n )\n );\n return on(\"resize\", updateDimension, win);\n}\nconst INPUT_TAGS = [\"INPUT\", \"TEXTAREA\", \"SELECT\"];\nconst lastInputValueMap = /* @__PURE__ */ new WeakMap();\nfunction initInputObserver({\n inputCb,\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n ignoreClass,\n ignoreSelector,\n maskInputOptions,\n maskInputFn,\n sampling,\n userTriggeredOnInput\n}) {\n function eventHandler(event) {\n let target = getEventTarget(event);\n const userTriggered = event.isTrusted;\n const tagName = target && target.tagName;\n if (target && tagName === \"OPTION\") {\n target = index.parentElement(target);\n }\n if (!target || !tagName || INPUT_TAGS.indexOf(tagName) < 0 || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n if (target.classList.contains(ignoreClass) || ignoreSelector && target.matches(ignoreSelector)) {\n return;\n }\n let text = target.value;\n let isChecked = false;\n const type = getInputType(target) || \"\";\n if (type === \"radio\" || type === \"checkbox\") {\n isChecked = target.checked;\n } else if (maskInputOptions[tagName.toLowerCase()] || maskInputOptions[type]) {\n text = maskInputValue({\n element: target,\n maskInputOptions,\n tagName,\n type,\n value: text,\n maskInputFn\n });\n }\n cbWithDedup(\n target,\n userTriggeredOnInput ? { text, isChecked, userTriggered } : { text, isChecked }\n );\n const name = target.name;\n if (type === \"radio\" && name && isChecked) {\n doc.querySelectorAll(`input[type=\"radio\"][name=\"${name}\"]`).forEach((el) => {\n if (el !== target) {\n const text2 = el.value;\n cbWithDedup(\n el,\n userTriggeredOnInput ? { text: text2, isChecked: !isChecked, userTriggered: false } : { text: text2, isChecked: !isChecked }\n );\n }\n });\n }\n }\n function cbWithDedup(target, v2) {\n const lastInputValue = lastInputValueMap.get(target);\n if (!lastInputValue || lastInputValue.text !== v2.text || lastInputValue.isChecked !== v2.isChecked) {\n lastInputValueMap.set(target, v2);\n const id = mirror2.getId(target);\n callbackWrapper(inputCb)({\n ...v2,\n id\n });\n }\n }\n const events = sampling.input === \"last\" ? [\"change\"] : [\"input\", \"change\"];\n const handlers = events.map(\n (eventName) => on(eventName, callbackWrapper(eventHandler), doc)\n );\n const currentWindow = doc.defaultView;\n if (!currentWindow) {\n return () => {\n handlers.forEach((h) => h());\n };\n }\n const propertyDescriptor = currentWindow.Object.getOwnPropertyDescriptor(\n currentWindow.HTMLInputElement.prototype,\n \"value\"\n );\n const hookProperties = [\n [currentWindow.HTMLInputElement.prototype, \"value\"],\n [currentWindow.HTMLInputElement.prototype, \"checked\"],\n [currentWindow.HTMLSelectElement.prototype, \"value\"],\n [currentWindow.HTMLTextAreaElement.prototype, \"value\"],\n // Some UI library use selectedIndex to set select value\n [currentWindow.HTMLSelectElement.prototype, \"selectedIndex\"],\n [currentWindow.HTMLOptionElement.prototype, \"selected\"]\n ];\n if (propertyDescriptor && propertyDescriptor.set) {\n handlers.push(\n ...hookProperties.map(\n (p) => hookSetter(\n p[0],\n p[1],\n {\n set() {\n callbackWrapper(eventHandler)({\n target: this,\n isTrusted: false\n // userTriggered to false as this could well be programmatic\n });\n }\n },\n false,\n currentWindow\n )\n )\n );\n }\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction getNestedCSSRulePositions(rule2) {\n const positions = [];\n function recurse(childRule, pos) {\n if (hasNestedCSSRule(\"CSSGroupingRule\") && childRule.parentRule instanceof CSSGroupingRule || hasNestedCSSRule(\"CSSMediaRule\") && childRule.parentRule instanceof CSSMediaRule || hasNestedCSSRule(\"CSSSupportsRule\") && childRule.parentRule instanceof CSSSupportsRule || hasNestedCSSRule(\"CSSConditionRule\") && childRule.parentRule instanceof CSSConditionRule) {\n const rules2 = Array.from(\n childRule.parentRule.cssRules\n );\n const index2 = rules2.indexOf(childRule);\n pos.unshift(index2);\n } else if (childRule.parentStyleSheet) {\n const rules2 = Array.from(childRule.parentStyleSheet.cssRules);\n const index2 = rules2.indexOf(childRule);\n pos.unshift(index2);\n }\n return pos;\n }\n return recurse(rule2, positions);\n}\nfunction getIdAndStyleId(sheet, mirror2, styleMirror) {\n let id, styleId;\n if (!sheet) return {};\n if (sheet.ownerNode) id = mirror2.getId(sheet.ownerNode);\n else styleId = styleMirror.getId(sheet);\n return {\n styleId,\n id\n };\n}\nfunction initStyleSheetObserver({ styleSheetRuleCb, mirror: mirror2, stylesheetManager }, { win }) {\n if (!win.CSSStyleSheet || !win.CSSStyleSheet.prototype) {\n return () => {\n };\n }\n const insertRule = win.CSSStyleSheet.prototype.insertRule;\n win.CSSStyleSheet.prototype.insertRule = new Proxy(insertRule, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [rule2, index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n adds: [{ rule: rule2, index: index2 }]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n win.CSSStyleSheet.prototype.addRule = function(selector, styleBlock, index2 = this.cssRules.length) {\n const rule2 = `${selector} { ${styleBlock} }`;\n return win.CSSStyleSheet.prototype.insertRule.apply(this, [rule2, index2]);\n };\n const deleteRule = win.CSSStyleSheet.prototype.deleteRule;\n win.CSSStyleSheet.prototype.deleteRule = new Proxy(deleteRule, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n removes: [{ index: index2 }]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n win.CSSStyleSheet.prototype.removeRule = function(index2) {\n return win.CSSStyleSheet.prototype.deleteRule.apply(this, [index2]);\n };\n let replace;\n if (win.CSSStyleSheet.prototype.replace) {\n replace = win.CSSStyleSheet.prototype.replace;\n win.CSSStyleSheet.prototype.replace = new Proxy(replace, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [text] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n replace: text\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n }\n let replaceSync;\n if (win.CSSStyleSheet.prototype.replaceSync) {\n replaceSync = win.CSSStyleSheet.prototype.replaceSync;\n win.CSSStyleSheet.prototype.replaceSync = new Proxy(replaceSync, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [text] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n replaceSync: text\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n }\n const supportedNestedCSSRuleTypes = {};\n if (canMonkeyPatchNestedCSSRule(\"CSSGroupingRule\")) {\n supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\n } else {\n if (canMonkeyPatchNestedCSSRule(\"CSSMediaRule\")) {\n supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\n }\n if (canMonkeyPatchNestedCSSRule(\"CSSConditionRule\")) {\n supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\n }\n if (canMonkeyPatchNestedCSSRule(\"CSSSupportsRule\")) {\n supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\n }\n }\n const unmodifiedFunctions = {};\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n unmodifiedFunctions[typeKey] = {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n insertRule: type.prototype.insertRule,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n deleteRule: type.prototype.deleteRule\n };\n type.prototype.insertRule = new Proxy(\n unmodifiedFunctions[typeKey].insertRule,\n {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [rule2, index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n adds: [\n {\n rule: rule2,\n index: [\n ...getNestedCSSRulePositions(thisArg),\n index2 || 0\n // defaults to 0\n ]\n }\n ]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n }\n );\n type.prototype.deleteRule = new Proxy(\n unmodifiedFunctions[typeKey].deleteRule,\n {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n removes: [\n { index: [...getNestedCSSRulePositions(thisArg), index2] }\n ]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n }\n );\n });\n return callbackWrapper(() => {\n win.CSSStyleSheet.prototype.insertRule = insertRule;\n win.CSSStyleSheet.prototype.deleteRule = deleteRule;\n replace && (win.CSSStyleSheet.prototype.replace = replace);\n replaceSync && (win.CSSStyleSheet.prototype.replaceSync = replaceSync);\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\n type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\n });\n });\n}\nfunction initAdoptedStyleSheetObserver({\n mirror: mirror2,\n stylesheetManager\n}, host2) {\n var _a2, _b, _c;\n let hostId = null;\n if (host2.nodeName === \"#document\") hostId = mirror2.getId(host2);\n else hostId = mirror2.getId(index.host(host2));\n const patchTarget = host2.nodeName === \"#document\" ? (_a2 = host2.defaultView) == null ? void 0 : _a2.Document : (_c = (_b = host2.ownerDocument) == null ? void 0 : _b.defaultView) == null ? void 0 : _c.ShadowRoot;\n const originalPropertyDescriptor = (patchTarget == null ? void 0 : patchTarget.prototype) ? Object.getOwnPropertyDescriptor(\n patchTarget == null ? void 0 : patchTarget.prototype,\n \"adoptedStyleSheets\"\n ) : void 0;\n if (hostId === null || hostId === -1 || !patchTarget || !originalPropertyDescriptor)\n return () => {\n };\n Object.defineProperty(host2, \"adoptedStyleSheets\", {\n configurable: originalPropertyDescriptor.configurable,\n enumerable: originalPropertyDescriptor.enumerable,\n get() {\n var _a3;\n return (_a3 = originalPropertyDescriptor.get) == null ? void 0 : _a3.call(this);\n },\n set(sheets) {\n var _a3;\n const result2 = (_a3 = originalPropertyDescriptor.set) == null ? void 0 : _a3.call(this, sheets);\n if (hostId !== null && hostId !== -1) {\n try {\n stylesheetManager.adoptStyleSheets(sheets, hostId);\n } catch (e2) {\n }\n }\n return result2;\n }\n });\n return callbackWrapper(() => {\n Object.defineProperty(host2, \"adoptedStyleSheets\", {\n configurable: originalPropertyDescriptor.configurable,\n enumerable: originalPropertyDescriptor.enumerable,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n get: originalPropertyDescriptor.get,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n set: originalPropertyDescriptor.set\n });\n });\n}\nfunction initStyleDeclarationObserver({\n styleDeclarationCb,\n mirror: mirror2,\n ignoreCSSAttributes,\n stylesheetManager\n}, { win }) {\n const setProperty = win.CSSStyleDeclaration.prototype.setProperty;\n win.CSSStyleDeclaration.prototype.setProperty = new Proxy(setProperty, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n var _a2;\n const [property, value, priority] = argumentsList;\n if (ignoreCSSAttributes.has(property)) {\n return setProperty.apply(thisArg, [property, value, priority]);\n }\n const { id, styleId } = getIdAndStyleId(\n (_a2 = thisArg.parentRule) == null ? void 0 : _a2.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleDeclarationCb({\n id,\n styleId,\n set: {\n property,\n value,\n priority\n },\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n index: getNestedCSSRulePositions(thisArg.parentRule)\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n const removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = new Proxy(removeProperty, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n var _a2;\n const [property] = argumentsList;\n if (ignoreCSSAttributes.has(property)) {\n return removeProperty.apply(thisArg, [property]);\n }\n const { id, styleId } = getIdAndStyleId(\n (_a2 = thisArg.parentRule) == null ? void 0 : _a2.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleDeclarationCb({\n id,\n styleId,\n remove: {\n property\n },\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n index: getNestedCSSRulePositions(thisArg.parentRule)\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n return callbackWrapper(() => {\n win.CSSStyleDeclaration.prototype.setProperty = setProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\n });\n}\nfunction initMediaInteractionObserver({\n mediaInteractionCb,\n blockClass,\n blockSelector,\n mirror: mirror2,\n sampling,\n doc\n}) {\n const handler = callbackWrapper(\n (type) => throttle(\n callbackWrapper((event) => {\n const target = getEventTarget(event);\n if (!target || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n const { currentTime, volume, muted, playbackRate, loop } = target;\n mediaInteractionCb({\n type,\n id: mirror2.getId(target),\n currentTime,\n volume,\n muted,\n playbackRate,\n loop\n });\n }),\n sampling.media || 500\n )\n );\n const handlers = [\n on(\"play\", handler(MediaInteractions.Play), doc),\n on(\"pause\", handler(MediaInteractions.Pause), doc),\n on(\"seeked\", handler(MediaInteractions.Seeked), doc),\n on(\"volumechange\", handler(MediaInteractions.VolumeChange), doc),\n on(\"ratechange\", handler(MediaInteractions.RateChange), doc)\n ];\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initFontObserver({ fontCb, doc }) {\n const win = doc.defaultView;\n if (!win) {\n return () => {\n };\n }\n const handlers = [];\n const fontMap = /* @__PURE__ */ new WeakMap();\n const originalFontFace = win.FontFace;\n win.FontFace = function FontFace2(family, source, descriptors) {\n const fontFace = new originalFontFace(family, source, descriptors);\n fontMap.set(fontFace, {\n family,\n buffer: typeof source !== \"string\",\n descriptors,\n fontSource: typeof source === \"string\" ? source : JSON.stringify(Array.from(new Uint8Array(source)))\n });\n return fontFace;\n };\n const restoreHandler = patch(\n doc.fonts,\n \"add\",\n function(original) {\n return function(fontFace) {\n setTimeout(\n callbackWrapper(() => {\n const p = fontMap.get(fontFace);\n if (p) {\n fontCb(p);\n fontMap.delete(fontFace);\n }\n }),\n 0\n );\n return original.apply(this, [fontFace]);\n };\n }\n );\n handlers.push(() => {\n win.FontFace = originalFontFace;\n });\n handlers.push(restoreHandler);\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initSelectionObserver(param) {\n const { doc, mirror: mirror2, blockClass, blockSelector, selectionCb } = param;\n let collapsed = true;\n const updateSelection = callbackWrapper(() => {\n const selection = doc.getSelection();\n if (!selection || collapsed && (selection == null ? void 0 : selection.isCollapsed)) return;\n collapsed = selection.isCollapsed || false;\n const ranges = [];\n const count = selection.rangeCount || 0;\n for (let i2 = 0; i2 < count; i2++) {\n const range = selection.getRangeAt(i2);\n const { startContainer, startOffset, endContainer, endOffset } = range;\n const blocked = isBlocked(startContainer, blockClass, blockSelector, true) || isBlocked(endContainer, blockClass, blockSelector, true);\n if (blocked) continue;\n ranges.push({\n start: mirror2.getId(startContainer),\n startOffset,\n end: mirror2.getId(endContainer),\n endOffset\n });\n }\n selectionCb({ ranges });\n });\n updateSelection();\n return on(\"selectionchange\", updateSelection);\n}\nfunction initCustomElementObserver({\n doc,\n customElementCb\n}) {\n const win = doc.defaultView;\n if (!win || !win.customElements) return () => {\n };\n const restoreHandler = patch(\n win.customElements,\n \"define\",\n function(original) {\n return function(name, constructor, options) {\n try {\n customElementCb({\n define: {\n name\n }\n });\n } catch (e2) {\n console.warn(`Custom element callback failed for ${name}`);\n }\n return original.apply(this, [name, constructor, options]);\n };\n }\n );\n return restoreHandler;\n}\nfunction mergeHooks(o2, hooks) {\n const {\n mutationCb,\n mousemoveCb,\n mouseInteractionCb,\n scrollCb,\n viewportResizeCb,\n inputCb,\n mediaInteractionCb,\n styleSheetRuleCb,\n styleDeclarationCb,\n canvasMutationCb,\n fontCb,\n selectionCb,\n customElementCb\n } = o2;\n o2.mutationCb = (...p) => {\n if (hooks.mutation) {\n hooks.mutation(...p);\n }\n mutationCb(...p);\n };\n o2.mousemoveCb = (...p) => {\n if (hooks.mousemove) {\n hooks.mousemove(...p);\n }\n mousemoveCb(...p);\n };\n o2.mouseInteractionCb = (...p) => {\n if (hooks.mouseInteraction) {\n hooks.mouseInteraction(...p);\n }\n mouseInteractionCb(...p);\n };\n o2.scrollCb = (...p) => {\n if (hooks.scroll) {\n hooks.scroll(...p);\n }\n scrollCb(...p);\n };\n o2.viewportResizeCb = (...p) => {\n if (hooks.viewportResize) {\n hooks.viewportResize(...p);\n }\n viewportResizeCb(...p);\n };\n o2.inputCb = (...p) => {\n if (hooks.input) {\n hooks.input(...p);\n }\n inputCb(...p);\n };\n o2.mediaInteractionCb = (...p) => {\n if (hooks.mediaInteaction) {\n hooks.mediaInteaction(...p);\n }\n mediaInteractionCb(...p);\n };\n o2.styleSheetRuleCb = (...p) => {\n if (hooks.styleSheetRule) {\n hooks.styleSheetRule(...p);\n }\n styleSheetRuleCb(...p);\n };\n o2.styleDeclarationCb = (...p) => {\n if (hooks.styleDeclaration) {\n hooks.styleDeclaration(...p);\n }\n styleDeclarationCb(...p);\n };\n o2.canvasMutationCb = (...p) => {\n if (hooks.canvasMutation) {\n hooks.canvasMutation(...p);\n }\n canvasMutationCb(...p);\n };\n o2.fontCb = (...p) => {\n if (hooks.font) {\n hooks.font(...p);\n }\n fontCb(...p);\n };\n o2.selectionCb = (...p) => {\n if (hooks.selection) {\n hooks.selection(...p);\n }\n selectionCb(...p);\n };\n o2.customElementCb = (...c2) => {\n if (hooks.customElement) {\n hooks.customElement(...c2);\n }\n customElementCb(...c2);\n };\n}\nfunction initObservers(o2, hooks = {}) {\n const currentWindow = o2.doc.defaultView;\n if (!currentWindow) {\n return () => {\n };\n }\n mergeHooks(o2, hooks);\n let mutationObserver;\n if (o2.recordDOM) {\n mutationObserver = initMutationObserver(o2, o2.doc);\n }\n const mousemoveHandler = initMoveObserver(o2);\n const mouseInteractionHandler = initMouseInteractionObserver(o2);\n const scrollHandler = initScrollObserver(o2);\n const viewportResizeHandler = initViewportResizeObserver(o2, {\n win: currentWindow\n });\n const inputHandler = initInputObserver(o2);\n const mediaInteractionHandler = initMediaInteractionObserver(o2);\n let styleSheetObserver = () => {\n };\n let adoptedStyleSheetObserver = () => {\n };\n let styleDeclarationObserver = () => {\n };\n let fontObserver = () => {\n };\n if (o2.recordDOM) {\n styleSheetObserver = initStyleSheetObserver(o2, { win: currentWindow });\n adoptedStyleSheetObserver = initAdoptedStyleSheetObserver(o2, o2.doc);\n styleDeclarationObserver = initStyleDeclarationObserver(o2, {\n win: currentWindow\n });\n if (o2.collectFonts) {\n fontObserver = initFontObserver(o2);\n }\n }\n const selectionObserver = initSelectionObserver(o2);\n const customElementObserver = initCustomElementObserver(o2);\n const pluginHandlers = [];\n for (const plugin3 of o2.plugins) {\n pluginHandlers.push(\n plugin3.observer(plugin3.callback, currentWindow, plugin3.options)\n );\n }\n return callbackWrapper(() => {\n mutationBuffers.forEach((b) => b.reset());\n mutationObserver == null ? void 0 : mutationObserver.disconnect();\n mousemoveHandler();\n mouseInteractionHandler();\n scrollHandler();\n viewportResizeHandler();\n inputHandler();\n mediaInteractionHandler();\n styleSheetObserver();\n adoptedStyleSheetObserver();\n styleDeclarationObserver();\n fontObserver();\n selectionObserver();\n customElementObserver();\n pluginHandlers.forEach((h) => h());\n });\n}\nfunction hasNestedCSSRule(prop) {\n return typeof window[prop] !== \"undefined\";\n}\nfunction canMonkeyPatchNestedCSSRule(prop) {\n return Boolean(\n typeof window[prop] !== \"undefined\" && // Note: Generally, this check _shouldn't_ be necessary\n // However, in some scenarios (e.g. jsdom) this can sometimes fail, so we check for it here\n window[prop].prototype && \"insertRule\" in window[prop].prototype && \"deleteRule\" in window[prop].prototype\n );\n}\nclass CrossOriginIframeMirror {\n constructor(generateIdFn) {\n __publicField(this, \"iframeIdToRemoteIdMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"iframeRemoteIdToIdMap\", /* @__PURE__ */ new WeakMap());\n this.generateIdFn = generateIdFn;\n }\n getId(iframe, remoteId, idToRemoteMap, remoteToIdMap) {\n const idToRemoteIdMap = idToRemoteMap || this.getIdToRemoteIdMap(iframe);\n const remoteIdToIdMap = remoteToIdMap || this.getRemoteIdToIdMap(iframe);\n let id = idToRemoteIdMap.get(remoteId);\n if (!id) {\n id = this.generateIdFn();\n idToRemoteIdMap.set(remoteId, id);\n remoteIdToIdMap.set(id, remoteId);\n }\n return id;\n }\n getIds(iframe, remoteId) {\n const idToRemoteIdMap = this.getIdToRemoteIdMap(iframe);\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n return remoteId.map(\n (id) => this.getId(iframe, id, idToRemoteIdMap, remoteIdToIdMap)\n );\n }\n getRemoteId(iframe, id, map) {\n const remoteIdToIdMap = map || this.getRemoteIdToIdMap(iframe);\n if (typeof id !== \"number\") return id;\n const remoteId = remoteIdToIdMap.get(id);\n if (!remoteId) return -1;\n return remoteId;\n }\n getRemoteIds(iframe, ids) {\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n return ids.map((id) => this.getRemoteId(iframe, id, remoteIdToIdMap));\n }\n reset(iframe) {\n if (!iframe) {\n this.iframeIdToRemoteIdMap = /* @__PURE__ */ new WeakMap();\n this.iframeRemoteIdToIdMap = /* @__PURE__ */ new WeakMap();\n return;\n }\n this.iframeIdToRemoteIdMap.delete(iframe);\n this.iframeRemoteIdToIdMap.delete(iframe);\n }\n getIdToRemoteIdMap(iframe) {\n let idToRemoteIdMap = this.iframeIdToRemoteIdMap.get(iframe);\n if (!idToRemoteIdMap) {\n idToRemoteIdMap = /* @__PURE__ */ new Map();\n this.iframeIdToRemoteIdMap.set(iframe, idToRemoteIdMap);\n }\n return idToRemoteIdMap;\n }\n getRemoteIdToIdMap(iframe) {\n let remoteIdToIdMap = this.iframeRemoteIdToIdMap.get(iframe);\n if (!remoteIdToIdMap) {\n remoteIdToIdMap = /* @__PURE__ */ new Map();\n this.iframeRemoteIdToIdMap.set(iframe, remoteIdToIdMap);\n }\n return remoteIdToIdMap;\n }\n}\nclass IframeManager {\n constructor(options) {\n __publicField(this, \"iframes\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"crossOriginIframeMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"crossOriginIframeMirror\", new CrossOriginIframeMirror(genId));\n __publicField(this, \"crossOriginIframeStyleMirror\");\n __publicField(this, \"crossOriginIframeRootIdMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"mirror\");\n __publicField(this, \"mutationCb\");\n __publicField(this, \"wrappedEmit\");\n __publicField(this, \"loadListener\");\n __publicField(this, \"stylesheetManager\");\n __publicField(this, \"recordCrossOriginIframes\");\n this.mutationCb = options.mutationCb;\n this.wrappedEmit = options.wrappedEmit;\n this.stylesheetManager = options.stylesheetManager;\n this.recordCrossOriginIframes = options.recordCrossOriginIframes;\n this.crossOriginIframeStyleMirror = new CrossOriginIframeMirror(\n this.stylesheetManager.styleMirror.generateId.bind(\n this.stylesheetManager.styleMirror\n )\n );\n this.mirror = options.mirror;\n if (this.recordCrossOriginIframes) {\n window.addEventListener(\"message\", this.handleMessage.bind(this));\n }\n }\n addIframe(iframeEl) {\n this.iframes.set(iframeEl, true);\n if (iframeEl.contentWindow)\n this.crossOriginIframeMap.set(iframeEl.contentWindow, iframeEl);\n }\n addLoadListener(cb) {\n this.loadListener = cb;\n }\n attachIframe(iframeEl, childSn) {\n var _a2, _b;\n this.mutationCb({\n adds: [\n {\n parentId: this.mirror.getId(iframeEl),\n nextId: null,\n node: childSn\n }\n ],\n removes: [],\n texts: [],\n attributes: [],\n isAttachIframe: true\n });\n if (this.recordCrossOriginIframes)\n (_a2 = iframeEl.contentWindow) == null ? void 0 : _a2.addEventListener(\n \"message\",\n this.handleMessage.bind(this)\n );\n (_b = this.loadListener) == null ? void 0 : _b.call(this, iframeEl);\n if (iframeEl.contentDocument && iframeEl.contentDocument.adoptedStyleSheets && iframeEl.contentDocument.adoptedStyleSheets.length > 0)\n this.stylesheetManager.adoptStyleSheets(\n iframeEl.contentDocument.adoptedStyleSheets,\n this.mirror.getId(iframeEl.contentDocument)\n );\n }\n handleMessage(message) {\n const crossOriginMessageEvent = message;\n if (crossOriginMessageEvent.data.type !== \"rrweb\" || // To filter out the rrweb messages which are forwarded by some sites.\n crossOriginMessageEvent.origin !== crossOriginMessageEvent.data.origin)\n return;\n const iframeSourceWindow = message.source;\n if (!iframeSourceWindow) return;\n const iframeEl = this.crossOriginIframeMap.get(message.source);\n if (!iframeEl) return;\n const transformedEvent = this.transformCrossOriginEvent(\n iframeEl,\n crossOriginMessageEvent.data.event\n );\n if (transformedEvent)\n this.wrappedEmit(\n transformedEvent,\n crossOriginMessageEvent.data.isCheckout\n );\n }\n transformCrossOriginEvent(iframeEl, e2) {\n var _a2;\n switch (e2.type) {\n case EventType.FullSnapshot: {\n this.crossOriginIframeMirror.reset(iframeEl);\n this.crossOriginIframeStyleMirror.reset(iframeEl);\n this.replaceIdOnNode(e2.data.node, iframeEl);\n const rootId = e2.data.node.id;\n this.crossOriginIframeRootIdMap.set(iframeEl, rootId);\n this.patchRootIdOnNode(e2.data.node, rootId);\n return {\n timestamp: e2.timestamp,\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Mutation,\n adds: [\n {\n parentId: this.mirror.getId(iframeEl),\n nextId: null,\n node: e2.data.node\n }\n ],\n removes: [],\n texts: [],\n attributes: [],\n isAttachIframe: true\n }\n };\n }\n case EventType.Meta:\n case EventType.Load:\n case EventType.DomContentLoaded: {\n return false;\n }\n case EventType.Plugin: {\n return e2;\n }\n case EventType.Custom: {\n this.replaceIds(\n e2.data.payload,\n iframeEl,\n [\"id\", \"parentId\", \"previousId\", \"nextId\"]\n );\n return e2;\n }\n case EventType.IncrementalSnapshot: {\n switch (e2.data.source) {\n case IncrementalSource.Mutation: {\n e2.data.adds.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\n \"parentId\",\n \"nextId\",\n \"previousId\"\n ]);\n this.replaceIdOnNode(n2.node, iframeEl);\n const rootId = this.crossOriginIframeRootIdMap.get(iframeEl);\n rootId && this.patchRootIdOnNode(n2.node, rootId);\n });\n e2.data.removes.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\"parentId\", \"id\"]);\n });\n e2.data.attributes.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\"id\"]);\n });\n e2.data.texts.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\"id\"]);\n });\n return e2;\n }\n case IncrementalSource.Drag:\n case IncrementalSource.TouchMove:\n case IncrementalSource.MouseMove: {\n e2.data.positions.forEach((p) => {\n this.replaceIds(p, iframeEl, [\"id\"]);\n });\n return e2;\n }\n case IncrementalSource.ViewportResize: {\n return false;\n }\n case IncrementalSource.MediaInteraction:\n case IncrementalSource.MouseInteraction:\n case IncrementalSource.Scroll:\n case IncrementalSource.CanvasMutation:\n case IncrementalSource.Input: {\n this.replaceIds(e2.data, iframeEl, [\"id\"]);\n return e2;\n }\n case IncrementalSource.StyleSheetRule:\n case IncrementalSource.StyleDeclaration: {\n this.replaceIds(e2.data, iframeEl, [\"id\"]);\n this.replaceStyleIds(e2.data, iframeEl, [\"styleId\"]);\n return e2;\n }\n case IncrementalSource.Font: {\n return e2;\n }\n case IncrementalSource.Selection: {\n e2.data.ranges.forEach((range) => {\n this.replaceIds(range, iframeEl, [\"start\", \"end\"]);\n });\n return e2;\n }\n case IncrementalSource.AdoptedStyleSheet: {\n this.replaceIds(e2.data, iframeEl, [\"id\"]);\n this.replaceStyleIds(e2.data, iframeEl, [\"styleIds\"]);\n (_a2 = e2.data.styles) == null ? void 0 : _a2.forEach((style) => {\n this.replaceStyleIds(style, iframeEl, [\"styleId\"]);\n });\n return e2;\n }\n }\n }\n }\n return false;\n }\n replace(iframeMirror, obj, iframeEl, keys) {\n for (const key of keys) {\n if (!Array.isArray(obj[key]) && typeof obj[key] !== \"number\") continue;\n if (Array.isArray(obj[key])) {\n obj[key] = iframeMirror.getIds(\n iframeEl,\n obj[key]\n );\n } else {\n obj[key] = iframeMirror.getId(iframeEl, obj[key]);\n }\n }\n return obj;\n }\n replaceIds(obj, iframeEl, keys) {\n return this.replace(this.crossOriginIframeMirror, obj, iframeEl, keys);\n }\n replaceStyleIds(obj, iframeEl, keys) {\n return this.replace(this.crossOriginIframeStyleMirror, obj, iframeEl, keys);\n }\n replaceIdOnNode(node2, iframeEl) {\n this.replaceIds(node2, iframeEl, [\"id\", \"rootId\"]);\n if (\"childNodes\" in node2) {\n node2.childNodes.forEach((child) => {\n this.replaceIdOnNode(child, iframeEl);\n });\n }\n }\n patchRootIdOnNode(node2, rootId) {\n if (node2.type !== NodeType.Document && !node2.rootId) node2.rootId = rootId;\n if (\"childNodes\" in node2) {\n node2.childNodes.forEach((child) => {\n this.patchRootIdOnNode(child, rootId);\n });\n }\n }\n}\nclass ShadowDomManager {\n constructor(options) {\n __publicField(this, \"shadowDoms\", /* @__PURE__ */ new WeakSet());\n __publicField(this, \"mutationCb\");\n __publicField(this, \"scrollCb\");\n __publicField(this, \"bypassOptions\");\n __publicField(this, \"mirror\");\n __publicField(this, \"restoreHandlers\", []);\n this.mutationCb = options.mutationCb;\n this.scrollCb = options.scrollCb;\n this.bypassOptions = options.bypassOptions;\n this.mirror = options.mirror;\n this.init();\n }\n init() {\n this.reset();\n this.patchAttachShadow(Element, document);\n }\n addShadowRoot(shadowRoot2, doc) {\n if (!isNativeShadowDom(shadowRoot2)) return;\n if (this.shadowDoms.has(shadowRoot2)) return;\n this.shadowDoms.add(shadowRoot2);\n const observer = initMutationObserver(\n {\n ...this.bypassOptions,\n doc,\n mutationCb: this.mutationCb,\n mirror: this.mirror,\n shadowDomManager: this\n },\n shadowRoot2\n );\n this.restoreHandlers.push(() => observer.disconnect());\n this.restoreHandlers.push(\n initScrollObserver({\n ...this.bypassOptions,\n scrollCb: this.scrollCb,\n // https://gist.github.com/praveenpuglia/0832da687ed5a5d7a0907046c9ef1813\n // scroll is not allowed to pass the boundary, so we need to listen the shadow document\n doc: shadowRoot2,\n mirror: this.mirror\n })\n );\n setTimeout(() => {\n if (shadowRoot2.adoptedStyleSheets && shadowRoot2.adoptedStyleSheets.length > 0)\n this.bypassOptions.stylesheetManager.adoptStyleSheets(\n shadowRoot2.adoptedStyleSheets,\n this.mirror.getId(index.host(shadowRoot2))\n );\n this.restoreHandlers.push(\n initAdoptedStyleSheetObserver(\n {\n mirror: this.mirror,\n stylesheetManager: this.bypassOptions.stylesheetManager\n },\n shadowRoot2\n )\n );\n }, 0);\n }\n /**\n * Monkey patch 'attachShadow' of an IFrameElement to observe newly added shadow doms.\n */\n observeAttachShadow(iframeElement) {\n if (!iframeElement.contentWindow || !iframeElement.contentDocument) return;\n this.patchAttachShadow(\n iframeElement.contentWindow.Element,\n iframeElement.contentDocument\n );\n }\n /**\n * Patch 'attachShadow' to observe newly added shadow doms.\n */\n patchAttachShadow(element, doc) {\n const manager = this;\n this.restoreHandlers.push(\n patch(\n element.prototype,\n \"attachShadow\",\n function(original) {\n return function(option) {\n const sRoot = original.call(this, option);\n const shadowRootEl = index.shadowRoot(this);\n if (shadowRootEl && inDom(this))\n manager.addShadowRoot(shadowRootEl, doc);\n return sRoot;\n };\n }\n )\n );\n }\n reset() {\n this.restoreHandlers.forEach((handler) => {\n try {\n handler();\n } catch (e2) {\n }\n });\n this.restoreHandlers = [];\n this.shadowDoms = /* @__PURE__ */ new WeakSet();\n }\n}\nvar chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nvar lookup = typeof Uint8Array === \"undefined\" ? [] : new Uint8Array(256);\nfor (var i$1 = 0; i$1 < chars.length; i$1++) {\n lookup[chars.charCodeAt(i$1)] = i$1;\n}\nvar encode = function(arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i2, len = bytes.length, base64 = \"\";\n for (i2 = 0; i2 < len; i2 += 3) {\n base64 += chars[bytes[i2] >> 2];\n base64 += chars[(bytes[i2] & 3) << 4 | bytes[i2 + 1] >> 4];\n base64 += chars[(bytes[i2 + 1] & 15) << 2 | bytes[i2 + 2] >> 6];\n base64 += chars[bytes[i2 + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + \"=\";\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + \"==\";\n }\n return base64;\n};\nconst canvasVarMap = /* @__PURE__ */ new Map();\nfunction variableListFor$1(ctx, ctor) {\n let contextMap = canvasVarMap.get(ctx);\n if (!contextMap) {\n contextMap = /* @__PURE__ */ new Map();\n canvasVarMap.set(ctx, contextMap);\n }\n if (!contextMap.has(ctor)) {\n contextMap.set(ctor, []);\n }\n return contextMap.get(ctor);\n}\nconst saveWebGLVar = (value, win, ctx) => {\n if (!value || !(isInstanceOfWebGLObject(value, win) || typeof value === \"object\"))\n return;\n const name = value.constructor.name;\n const list2 = variableListFor$1(ctx, name);\n let index2 = list2.indexOf(value);\n if (index2 === -1) {\n index2 = list2.length;\n list2.push(value);\n }\n return index2;\n};\nfunction serializeArg(value, win, ctx) {\n if (value instanceof Array) {\n return value.map((arg) => serializeArg(arg, win, ctx));\n } else if (value === null) {\n return value;\n } else if (value instanceof Float32Array || value instanceof Float64Array || value instanceof Int32Array || value instanceof Uint32Array || value instanceof Uint8Array || value instanceof Uint16Array || value instanceof Int16Array || value instanceof Int8Array || value instanceof Uint8ClampedArray) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [Object.values(value)]\n };\n } else if (\n // SharedArrayBuffer disabled on most browsers due to spectre.\n // More info: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/SharedArrayBuffer\n // value instanceof SharedArrayBuffer ||\n value instanceof ArrayBuffer\n ) {\n const name = value.constructor.name;\n const base64 = encode(value);\n return {\n rr_type: name,\n base64\n };\n } else if (value instanceof DataView) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [\n serializeArg(value.buffer, win, ctx),\n value.byteOffset,\n value.byteLength\n ]\n };\n } else if (value instanceof HTMLImageElement) {\n const name = value.constructor.name;\n const { src } = value;\n return {\n rr_type: name,\n src\n };\n } else if (value instanceof HTMLCanvasElement) {\n const name = \"HTMLImageElement\";\n const src = value.toDataURL();\n return {\n rr_type: name,\n src\n };\n } else if (value instanceof ImageData) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [serializeArg(value.data, win, ctx), value.width, value.height]\n };\n } else if (isInstanceOfWebGLObject(value, win) || typeof value === \"object\") {\n const name = value.constructor.name;\n const index2 = saveWebGLVar(value, win, ctx);\n return {\n rr_type: name,\n index: index2\n };\n }\n return value;\n}\nconst serializeArgs = (args, win, ctx) => {\n return args.map((arg) => serializeArg(arg, win, ctx));\n};\nconst isInstanceOfWebGLObject = (value, win) => {\n const webGLConstructorNames = [\n \"WebGLActiveInfo\",\n \"WebGLBuffer\",\n \"WebGLFramebuffer\",\n \"WebGLProgram\",\n \"WebGLRenderbuffer\",\n \"WebGLShader\",\n \"WebGLShaderPrecisionFormat\",\n \"WebGLTexture\",\n \"WebGLUniformLocation\",\n \"WebGLVertexArrayObject\",\n // In old Chrome versions, value won't be an instanceof WebGLVertexArrayObject.\n \"WebGLVertexArrayObjectOES\"\n ];\n const supportedWebGLConstructorNames = webGLConstructorNames.filter(\n (name) => typeof win[name] === \"function\"\n );\n return Boolean(\n supportedWebGLConstructorNames.find(\n (name) => value instanceof win[name]\n )\n );\n};\nfunction initCanvas2DMutationObserver(cb, win, blockClass, blockSelector) {\n const handlers = [];\n const props2D = Object.getOwnPropertyNames(\n win.CanvasRenderingContext2D.prototype\n );\n for (const prop of props2D) {\n try {\n if (typeof win.CanvasRenderingContext2D.prototype[prop] !== \"function\") {\n continue;\n }\n const restoreHandler = patch(\n win.CanvasRenderingContext2D.prototype,\n prop,\n function(original) {\n return function(...args) {\n if (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\n setTimeout(() => {\n const recordArgs = serializeArgs(args, win, this);\n cb(this.canvas, {\n type: CanvasContext[\"2D\"],\n property: prop,\n args: recordArgs\n });\n }, 0);\n }\n return original.apply(this, args);\n };\n }\n );\n handlers.push(restoreHandler);\n } catch {\n const hookHandler = hookSetter(\n win.CanvasRenderingContext2D.prototype,\n prop,\n {\n set(v2) {\n cb(this.canvas, {\n type: CanvasContext[\"2D\"],\n property: prop,\n args: [v2],\n setter: true\n });\n }\n }\n );\n handlers.push(hookHandler);\n }\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\nfunction getNormalizedContextName(contextType) {\n return contextType === \"experimental-webgl\" ? \"webgl\" : contextType;\n}\nfunction initCanvasContextObserver(win, blockClass, blockSelector, setPreserveDrawingBufferToTrue) {\n const handlers = [];\n try {\n const restoreHandler = patch(\n win.HTMLCanvasElement.prototype,\n \"getContext\",\n function(original) {\n return function(contextType, ...args) {\n if (!isBlocked(this, blockClass, blockSelector, true)) {\n const ctxName = getNormalizedContextName(contextType);\n if (!(\"__context\" in this)) this.__context = ctxName;\n if (setPreserveDrawingBufferToTrue && [\"webgl\", \"webgl2\"].includes(ctxName)) {\n if (args[0] && typeof args[0] === \"object\") {\n const contextAttributes = args[0];\n if (!contextAttributes.preserveDrawingBuffer) {\n contextAttributes.preserveDrawingBuffer = true;\n }\n } else {\n args.splice(0, 1, {\n preserveDrawingBuffer: true\n });\n }\n }\n }\n return original.apply(this, [contextType, ...args]);\n };\n }\n );\n handlers.push(restoreHandler);\n } catch {\n console.error(\"failed to patch HTMLCanvasElement.prototype.getContext\");\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\nfunction patchGLPrototype(prototype, type, cb, blockClass, blockSelector, win) {\n const handlers = [];\n const props = Object.getOwnPropertyNames(prototype);\n for (const prop of props) {\n if (\n //prop.startsWith('get') || // e.g. getProgramParameter, but too risky\n [\n \"isContextLost\",\n \"canvas\",\n \"drawingBufferWidth\",\n \"drawingBufferHeight\"\n ].includes(prop)\n ) {\n continue;\n }\n try {\n if (typeof prototype[prop] !== \"function\") {\n continue;\n }\n const restoreHandler = patch(\n prototype,\n prop,\n function(original) {\n return function(...args) {\n const result2 = original.apply(this, args);\n saveWebGLVar(result2, win, this);\n if (\"tagName\" in this.canvas && !isBlocked(this.canvas, blockClass, blockSelector, true)) {\n const recordArgs = serializeArgs(args, win, this);\n const mutation = {\n type,\n property: prop,\n args: recordArgs\n };\n cb(this.canvas, mutation);\n }\n return result2;\n };\n }\n );\n handlers.push(restoreHandler);\n } catch {\n const hookHandler = hookSetter(prototype, prop, {\n set(v2) {\n cb(this.canvas, {\n type,\n property: prop,\n args: [v2],\n setter: true\n });\n }\n });\n handlers.push(hookHandler);\n }\n }\n return handlers;\n}\nfunction initCanvasWebGLMutationObserver(cb, win, blockClass, blockSelector) {\n const handlers = [];\n handlers.push(\n ...patchGLPrototype(\n win.WebGLRenderingContext.prototype,\n CanvasContext.WebGL,\n cb,\n blockClass,\n blockSelector,\n win\n )\n );\n if (typeof win.WebGL2RenderingContext !== \"undefined\") {\n handlers.push(\n ...patchGLPrototype(\n win.WebGL2RenderingContext.prototype,\n CanvasContext.WebGL2,\n cb,\n blockClass,\n blockSelector,\n win\n )\n );\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\nconst encodedJs = \"KGZ1bmN0aW9uKCkgewogICJ1c2Ugc3RyaWN0IjsKICB2YXIgY2hhcnMgPSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7CiAgdmFyIGxvb2t1cCA9IHR5cGVvZiBVaW50OEFycmF5ID09PSAidW5kZWZpbmVkIiA/IFtdIDogbmV3IFVpbnQ4QXJyYXkoMjU2KTsKICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYXJzLmxlbmd0aDsgaSsrKSB7CiAgICBsb29rdXBbY2hhcnMuY2hhckNvZGVBdChpKV0gPSBpOwogIH0KICB2YXIgZW5jb2RlID0gZnVuY3Rpb24oYXJyYXlidWZmZXIpIHsKICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGFycmF5YnVmZmVyKSwgaTIsIGxlbiA9IGJ5dGVzLmxlbmd0aCwgYmFzZTY0ID0gIiI7CiAgICBmb3IgKGkyID0gMDsgaTIgPCBsZW47IGkyICs9IDMpIHsKICAgICAgYmFzZTY0ICs9IGNoYXJzW2J5dGVzW2kyXSA+PiAyXTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMl0gJiAzKSA8PCA0IHwgYnl0ZXNbaTIgKyAxXSA+PiA0XTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMiArIDFdICYgMTUpIDw8IDIgfCBieXRlc1tpMiArIDJdID4+IDZdOwogICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaTIgKyAyXSAmIDYzXTsKICAgIH0KICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgIj0iOwogICAgfSBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgIj09IjsKICAgIH0KICAgIHJldHVybiBiYXNlNjQ7CiAgfTsKICBjb25zdCBsYXN0QmxvYk1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7CiAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTsKICBhc3luYyBmdW5jdGlvbiBnZXRUcmFuc3BhcmVudEJsb2JGb3Iod2lkdGgsIGhlaWdodCwgZGF0YVVSTE9wdGlvbnMpIHsKICAgIGNvbnN0IGlkID0gYCR7d2lkdGh9LSR7aGVpZ2h0fWA7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBpZiAodHJhbnNwYXJlbnRCbG9iTWFwLmhhcyhpZCkpIHJldHVybiB0cmFuc3BhcmVudEJsb2JNYXAuZ2V0KGlkKTsKICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsKICAgICAgb2Zmc2NyZWVuLmdldENvbnRleHQoIjJkIik7CiAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCBvZmZzY3JlZW4uY29udmVydFRvQmxvYihkYXRhVVJMT3B0aW9ucyk7CiAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gYXdhaXQgYmxvYi5hcnJheUJ1ZmZlcigpOwogICAgICBjb25zdCBiYXNlNjQgPSBlbmNvZGUoYXJyYXlCdWZmZXIpOwogICAgICB0cmFuc3BhcmVudEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICByZXR1cm4gYmFzZTY0OwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuICIiOwogICAgfQogIH0KICBjb25zdCB3b3JrZXIgPSBzZWxmOwogIHdvcmtlci5vbm1lc3NhZ2UgPSBhc3luYyBmdW5jdGlvbihlKSB7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBjb25zdCB7IGlkLCBiaXRtYXAsIHdpZHRoLCBoZWlnaHQsIGRhdGFVUkxPcHRpb25zIH0gPSBlLmRhdGE7CiAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKAogICAgICAgIHdpZHRoLAogICAgICAgIGhlaWdodCwKICAgICAgICBkYXRhVVJMT3B0aW9ucwogICAgICApOwogICAgICBjb25zdCBvZmZzY3JlZW4gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpOwogICAgICBjb25zdCBjdHggPSBvZmZzY3JlZW4uZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgY3R4LmRyYXdJbWFnZShiaXRtYXAsIDAsIDApOwogICAgICBiaXRtYXAuY2xvc2UoKTsKICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IG9mZnNjcmVlbi5jb252ZXJ0VG9CbG9iKGRhdGFVUkxPcHRpb25zKTsKICAgICAgY29uc3QgdHlwZSA9IGJsb2IudHlwZTsKICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBhd2FpdCBibG9iLmFycmF5QnVmZmVyKCk7CiAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7CiAgICAgIGlmICghbGFzdEJsb2JNYXAuaGFzKGlkKSAmJiBhd2FpdCB0cmFuc3BhcmVudEJhc2U2NCA9PT0gYmFzZTY0KSB7CiAgICAgICAgbGFzdEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICAgIHJldHVybiB3b3JrZXIucG9zdE1lc3NhZ2UoeyBpZCB9KTsKICAgICAgfQogICAgICBpZiAobGFzdEJsb2JNYXAuZ2V0KGlkKSA9PT0gYmFzZTY0KSByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQgfSk7CiAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7CiAgICAgICAgaWQsCiAgICAgICAgdHlwZSwKICAgICAgICBiYXNlNjQsCiAgICAgICAgd2lkdGgsCiAgICAgICAgaGVpZ2h0CiAgICAgIH0pOwogICAgICBsYXN0QmxvYk1hcC5zZXQoaWQsIGJhc2U2NCk7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IGUuZGF0YS5pZCB9KTsKICAgIH0KICB9Owp9KSgpOwovLyMgc291cmNlTWFwcGluZ1VSTD1pbWFnZS1iaXRtYXAtZGF0YS11cmwtd29ya2VyLUlKcEM3Z19iLmpzLm1hcAo=\";\nconst decodeBase64 = (base64) => Uint8Array.from(atob(base64), (c2) => c2.charCodeAt(0));\nconst blob = typeof window !== \"undefined\" && window.Blob && new Blob([decodeBase64(encodedJs)], { type: \"text/javascript;charset=utf-8\" });\nfunction WorkerWrapper(options) {\n let objURL;\n try {\n objURL = blob && (window.URL || window.webkitURL).createObjectURL(blob);\n if (!objURL) throw \"\";\n const worker = new Worker(objURL, {\n name: options == null ? void 0 : options.name\n });\n worker.addEventListener(\"error\", () => {\n (window.URL || window.webkitURL).revokeObjectURL(objURL);\n });\n return worker;\n } catch (e2) {\n return new Worker(\n \"data:text/javascript;base64,\" + encodedJs,\n {\n name: options == null ? void 0 : options.name\n }\n );\n } finally {\n objURL && (window.URL || window.webkitURL).revokeObjectURL(objURL);\n }\n}\nclass CanvasManager {\n constructor(options) {\n __publicField(this, \"pendingCanvasMutations\", /* @__PURE__ */ new Map());\n __publicField(this, \"rafStamps\", { latestId: 0, invokeId: null });\n __publicField(this, \"mirror\");\n __publicField(this, \"mutationCb\");\n __publicField(this, \"resetObservers\");\n __publicField(this, \"frozen\", false);\n __publicField(this, \"locked\", false);\n __publicField(this, \"processMutation\", (target, mutation) => {\n const newFrame = this.rafStamps.invokeId && this.rafStamps.latestId !== this.rafStamps.invokeId;\n if (newFrame || !this.rafStamps.invokeId)\n this.rafStamps.invokeId = this.rafStamps.latestId;\n if (!this.pendingCanvasMutations.has(target)) {\n this.pendingCanvasMutations.set(target, []);\n }\n this.pendingCanvasMutations.get(target).push(mutation);\n });\n const {\n sampling = \"all\",\n win,\n blockClass,\n blockSelector,\n recordCanvas,\n dataURLOptions\n } = options;\n this.mutationCb = options.mutationCb;\n this.mirror = options.mirror;\n if (recordCanvas && sampling === \"all\")\n this.initCanvasMutationObserver(win, blockClass, blockSelector);\n if (recordCanvas && typeof sampling === \"number\")\n this.initCanvasFPSObserver(sampling, win, blockClass, blockSelector, {\n dataURLOptions\n });\n }\n reset() {\n this.pendingCanvasMutations.clear();\n this.resetObservers && this.resetObservers();\n }\n freeze() {\n this.frozen = true;\n }\n unfreeze() {\n this.frozen = false;\n }\n lock() {\n this.locked = true;\n }\n unlock() {\n this.locked = false;\n }\n initCanvasFPSObserver(fps, win, blockClass, blockSelector, options) {\n const canvasContextReset = initCanvasContextObserver(\n win,\n blockClass,\n blockSelector,\n true\n );\n const snapshotInProgressMap = /* @__PURE__ */ new Map();\n const worker = new WorkerWrapper();\n worker.onmessage = (e2) => {\n const { id } = e2.data;\n snapshotInProgressMap.set(id, false);\n if (!(\"base64\" in e2.data)) return;\n const { base64, type, width, height } = e2.data;\n this.mutationCb({\n id,\n type: CanvasContext[\"2D\"],\n commands: [\n {\n property: \"clearRect\",\n // wipe canvas\n args: [0, 0, width, height]\n },\n {\n property: \"drawImage\",\n // draws (semi-transparent) image\n args: [\n {\n rr_type: \"ImageBitmap\",\n args: [\n {\n rr_type: \"Blob\",\n data: [{ rr_type: \"ArrayBuffer\", base64 }],\n type\n }\n ]\n },\n 0,\n 0\n ]\n }\n ]\n });\n };\n const timeBetweenSnapshots = 1e3 / fps;\n let lastSnapshotTime = 0;\n let rafId;\n const getCanvas = () => {\n const matchedCanvas = [];\n win.document.querySelectorAll(\"canvas\").forEach((canvas) => {\n if (!isBlocked(canvas, blockClass, blockSelector, true)) {\n matchedCanvas.push(canvas);\n }\n });\n return matchedCanvas;\n };\n const takeCanvasSnapshots = (timestamp) => {\n if (lastSnapshotTime && timestamp - lastSnapshotTime < timeBetweenSnapshots) {\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n return;\n }\n lastSnapshotTime = timestamp;\n getCanvas().forEach(async (canvas) => {\n var _a2;\n const id = this.mirror.getId(canvas);\n if (snapshotInProgressMap.get(id)) return;\n if (canvas.width === 0 || canvas.height === 0) return;\n snapshotInProgressMap.set(id, true);\n if ([\"webgl\", \"webgl2\"].includes(canvas.__context)) {\n const context = canvas.getContext(canvas.__context);\n if (((_a2 = context == null ? void 0 : context.getContextAttributes()) == null ? void 0 : _a2.preserveDrawingBuffer) === false) {\n context.clear(context.COLOR_BUFFER_BIT);\n }\n }\n const bitmap = await createImageBitmap(canvas);\n worker.postMessage(\n {\n id,\n bitmap,\n width: canvas.width,\n height: canvas.height,\n dataURLOptions: options.dataURLOptions\n },\n [bitmap]\n );\n });\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n };\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n this.resetObservers = () => {\n canvasContextReset();\n cancelAnimationFrame(rafId);\n };\n }\n initCanvasMutationObserver(win, blockClass, blockSelector) {\n this.startRAFTimestamping();\n this.startPendingCanvasMutationFlusher();\n const canvasContextReset = initCanvasContextObserver(\n win,\n blockClass,\n blockSelector,\n false\n );\n const canvas2DReset = initCanvas2DMutationObserver(\n this.processMutation.bind(this),\n win,\n blockClass,\n blockSelector\n );\n const canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(\n this.processMutation.bind(this),\n win,\n blockClass,\n blockSelector\n );\n this.resetObservers = () => {\n canvasContextReset();\n canvas2DReset();\n canvasWebGL1and2Reset();\n };\n }\n startPendingCanvasMutationFlusher() {\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\n }\n startRAFTimestamping() {\n const setLatestRAFTimestamp = (timestamp) => {\n this.rafStamps.latestId = timestamp;\n requestAnimationFrame(setLatestRAFTimestamp);\n };\n requestAnimationFrame(setLatestRAFTimestamp);\n }\n flushPendingCanvasMutations() {\n this.pendingCanvasMutations.forEach(\n (_values, canvas) => {\n const id = this.mirror.getId(canvas);\n this.flushPendingCanvasMutationFor(canvas, id);\n }\n );\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\n }\n flushPendingCanvasMutationFor(canvas, id) {\n if (this.frozen || this.locked) {\n return;\n }\n const valuesWithType = this.pendingCanvasMutations.get(canvas);\n if (!valuesWithType || id === -1) return;\n const values = valuesWithType.map((value) => {\n const { type: type2, ...rest } = value;\n return rest;\n });\n const { type } = valuesWithType[0];\n this.mutationCb({ id, type, commands: values });\n this.pendingCanvasMutations.delete(canvas);\n }\n}\nclass StylesheetManager {\n constructor(options) {\n __publicField(this, \"trackedLinkElements\", /* @__PURE__ */ new WeakSet());\n __publicField(this, \"mutationCb\");\n __publicField(this, \"adoptedStyleSheetCb\");\n __publicField(this, \"styleMirror\", new StyleSheetMirror());\n this.mutationCb = options.mutationCb;\n this.adoptedStyleSheetCb = options.adoptedStyleSheetCb;\n }\n attachLinkElement(linkEl, childSn) {\n if (\"_cssText\" in childSn.attributes)\n this.mutationCb({\n adds: [],\n removes: [],\n texts: [],\n attributes: [\n {\n id: childSn.id,\n attributes: childSn.attributes\n }\n ]\n });\n this.trackLinkElement(linkEl);\n }\n trackLinkElement(linkEl) {\n if (this.trackedLinkElements.has(linkEl)) return;\n this.trackedLinkElements.add(linkEl);\n this.trackStylesheetInLinkElement(linkEl);\n }\n adoptStyleSheets(sheets, hostId) {\n if (sheets.length === 0) return;\n const adoptedStyleSheetData = {\n id: hostId,\n styleIds: []\n };\n const styles = [];\n for (const sheet of sheets) {\n let styleId;\n if (!this.styleMirror.has(sheet)) {\n styleId = this.styleMirror.add(sheet);\n styles.push({\n styleId,\n rules: Array.from(sheet.rules || CSSRule, (r2, index2) => ({\n rule: stringifyRule(r2, sheet.href),\n index: index2\n }))\n });\n } else styleId = this.styleMirror.getId(sheet);\n adoptedStyleSheetData.styleIds.push(styleId);\n }\n if (styles.length > 0) adoptedStyleSheetData.styles = styles;\n this.adoptedStyleSheetCb(adoptedStyleSheetData);\n }\n reset() {\n this.styleMirror.reset();\n this.trackedLinkElements = /* @__PURE__ */ new WeakSet();\n }\n // TODO: take snapshot on stylesheet reload by applying event listener\n trackStylesheetInLinkElement(_linkEl) {\n }\n}\nclass ProcessedNodeManager {\n constructor() {\n __publicField(this, \"nodeMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"active\", false);\n }\n inOtherBuffer(node2, thisBuffer) {\n const buffers = this.nodeMap.get(node2);\n return buffers && Array.from(buffers).some((buffer) => buffer !== thisBuffer);\n }\n add(node2, buffer) {\n if (!this.active) {\n this.active = true;\n requestAnimationFrame(() => {\n this.nodeMap = /* @__PURE__ */ new WeakMap();\n this.active = false;\n });\n }\n this.nodeMap.set(node2, (this.nodeMap.get(node2) || /* @__PURE__ */ new Set()).add(buffer));\n }\n destroy() {\n }\n}\nlet wrappedEmit;\nlet takeFullSnapshot$1;\nlet canvasManager;\nlet recording = false;\ntry {\n if (Array.from([1], (x2) => x2 * 2)[0] !== 2) {\n const cleanFrame = document.createElement(\"iframe\");\n document.body.appendChild(cleanFrame);\n Array.from = ((_a = cleanFrame.contentWindow) == null ? void 0 : _a.Array.from) || Array.from;\n document.body.removeChild(cleanFrame);\n }\n} catch (err) {\n console.debug(\"Unable to override Array.from\", err);\n}\nconst mirror = createMirror$2();\nfunction record(options = {}) {\n const {\n emit,\n checkoutEveryNms,\n checkoutEveryNth,\n blockClass = \"rr-block\",\n blockSelector = null,\n ignoreClass = \"rr-ignore\",\n ignoreSelector = null,\n maskTextClass = \"rr-mask\",\n maskTextSelector = null,\n inlineStylesheet = true,\n maskAllInputs,\n maskInputOptions: _maskInputOptions,\n slimDOMOptions: _slimDOMOptions,\n maskInputFn,\n maskTextFn,\n hooks,\n packFn,\n sampling = {},\n dataURLOptions = {},\n mousemoveWait,\n recordDOM = true,\n recordCanvas = false,\n recordCrossOriginIframes = false,\n recordAfter = options.recordAfter === \"DOMContentLoaded\" ? options.recordAfter : \"load\",\n userTriggeredOnInput = false,\n collectFonts = false,\n inlineImages = false,\n plugins,\n keepIframeSrcFn = () => false,\n ignoreCSSAttributes = /* @__PURE__ */ new Set([]),\n errorHandler: errorHandler2\n } = options;\n registerErrorHandler(errorHandler2);\n const inEmittingFrame = recordCrossOriginIframes ? window.parent === window : true;\n let passEmitsToParent = false;\n if (!inEmittingFrame) {\n try {\n if (window.parent.document) {\n passEmitsToParent = false;\n }\n } catch (e2) {\n passEmitsToParent = true;\n }\n }\n if (inEmittingFrame && !emit) {\n throw new Error(\"emit function is required\");\n }\n if (!inEmittingFrame && !passEmitsToParent) {\n return () => {\n };\n }\n if (mousemoveWait !== void 0 && sampling.mousemove === void 0) {\n sampling.mousemove = mousemoveWait;\n }\n mirror.reset();\n const maskInputOptions = maskAllInputs === true ? {\n color: true,\n date: true,\n \"datetime-local\": true,\n email: true,\n month: true,\n number: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true,\n textarea: true,\n select: true,\n password: true\n } : _maskInputOptions !== void 0 ? _maskInputOptions : { password: true };\n const slimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === \"all\" ? {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaVerification: true,\n // the following are off for slimDOMOptions === true,\n // as they destroy some (hidden) info:\n headMetaAuthorship: _slimDOMOptions === \"all\",\n headMetaDescKeywords: _slimDOMOptions === \"all\",\n headTitleMutations: _slimDOMOptions === \"all\"\n } : _slimDOMOptions ? _slimDOMOptions : {};\n polyfill$1();\n let lastFullSnapshotEvent;\n let incrementalSnapshotCount = 0;\n const eventProcessor = (e2) => {\n for (const plugin3 of plugins || []) {\n if (plugin3.eventProcessor) {\n e2 = plugin3.eventProcessor(e2);\n }\n }\n if (packFn && // Disable packing events which will be emitted to parent frames.\n !passEmitsToParent) {\n e2 = packFn(e2);\n }\n return e2;\n };\n wrappedEmit = (r2, isCheckout) => {\n var _a2;\n const e2 = r2;\n e2.timestamp = nowTimestamp();\n if (((_a2 = mutationBuffers[0]) == null ? void 0 : _a2.isFrozen()) && e2.type !== EventType.FullSnapshot && !(e2.type === EventType.IncrementalSnapshot && e2.data.source === IncrementalSource.Mutation)) {\n mutationBuffers.forEach((buf) => buf.unfreeze());\n }\n if (inEmittingFrame) {\n emit == null ? void 0 : emit(eventProcessor(e2), isCheckout);\n } else if (passEmitsToParent) {\n const message = {\n type: \"rrweb\",\n event: eventProcessor(e2),\n origin: window.location.origin,\n isCheckout\n };\n window.parent.postMessage(message, \"*\");\n }\n if (e2.type === EventType.FullSnapshot) {\n lastFullSnapshotEvent = e2;\n incrementalSnapshotCount = 0;\n } else if (e2.type === EventType.IncrementalSnapshot) {\n if (e2.data.source === IncrementalSource.Mutation && e2.data.isAttachIframe) {\n return;\n }\n incrementalSnapshotCount++;\n const exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\n const exceedTime = checkoutEveryNms && e2.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\n if (exceedCount || exceedTime) {\n takeFullSnapshot$1(true);\n }\n }\n };\n const wrappedMutationEmit = (m) => {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Mutation,\n ...m\n }\n });\n };\n const wrappedScrollEmit = (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Scroll,\n ...p\n }\n });\n const wrappedCanvasMutationEmit = (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.CanvasMutation,\n ...p\n }\n });\n const wrappedAdoptedStyleSheetEmit = (a2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.AdoptedStyleSheet,\n ...a2\n }\n });\n const stylesheetManager = new StylesheetManager({\n mutationCb: wrappedMutationEmit,\n adoptedStyleSheetCb: wrappedAdoptedStyleSheetEmit\n });\n const iframeManager = new IframeManager({\n mirror,\n mutationCb: wrappedMutationEmit,\n stylesheetManager,\n recordCrossOriginIframes,\n wrappedEmit\n });\n for (const plugin3 of plugins || []) {\n if (plugin3.getMirror)\n plugin3.getMirror({\n nodeMirror: mirror,\n crossOriginIframeMirror: iframeManager.crossOriginIframeMirror,\n crossOriginIframeStyleMirror: iframeManager.crossOriginIframeStyleMirror\n });\n }\n const processedNodeManager = new ProcessedNodeManager();\n canvasManager = new CanvasManager({\n recordCanvas,\n mutationCb: wrappedCanvasMutationEmit,\n win: window,\n blockClass,\n blockSelector,\n mirror,\n sampling: sampling.canvas,\n dataURLOptions\n });\n const shadowDomManager = new ShadowDomManager({\n mutationCb: wrappedMutationEmit,\n scrollCb: wrappedScrollEmit,\n bypassOptions: {\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n inlineStylesheet,\n maskInputOptions,\n dataURLOptions,\n maskTextFn,\n maskInputFn,\n recordCanvas,\n inlineImages,\n sampling,\n slimDOMOptions,\n iframeManager,\n stylesheetManager,\n canvasManager,\n keepIframeSrcFn,\n processedNodeManager\n },\n mirror\n });\n takeFullSnapshot$1 = (isCheckout = false) => {\n if (!recordDOM) {\n return;\n }\n wrappedEmit(\n {\n type: EventType.Meta,\n data: {\n href: window.location.href,\n width: getWindowWidth(),\n height: getWindowHeight()\n }\n },\n isCheckout\n );\n stylesheetManager.reset();\n shadowDomManager.init();\n mutationBuffers.forEach((buf) => buf.lock());\n const node2 = snapshot(document, {\n mirror,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n inlineStylesheet,\n maskAllInputs: maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOM: slimDOMOptions,\n dataURLOptions,\n recordCanvas,\n inlineImages,\n onSerialize: (n2) => {\n if (isSerializedIframe(n2, mirror)) {\n iframeManager.addIframe(n2);\n }\n if (isSerializedStylesheet(n2, mirror)) {\n stylesheetManager.trackLinkElement(n2);\n }\n if (hasShadowRoot(n2)) {\n shadowDomManager.addShadowRoot(index.shadowRoot(n2), document);\n }\n },\n onIframeLoad: (iframe, childSn) => {\n iframeManager.attachIframe(iframe, childSn);\n shadowDomManager.observeAttachShadow(iframe);\n },\n onStylesheetLoad: (linkEl, childSn) => {\n stylesheetManager.attachLinkElement(linkEl, childSn);\n },\n keepIframeSrcFn\n });\n if (!node2) {\n return console.warn(\"Failed to snapshot the document\");\n }\n wrappedEmit(\n {\n type: EventType.FullSnapshot,\n data: {\n node: node2,\n initialOffset: getWindowScroll(window)\n }\n },\n isCheckout\n );\n mutationBuffers.forEach((buf) => buf.unlock());\n if (document.adoptedStyleSheets && document.adoptedStyleSheets.length > 0)\n stylesheetManager.adoptStyleSheets(\n document.adoptedStyleSheets,\n mirror.getId(document)\n );\n };\n try {\n const handlers = [];\n const observe = (doc) => {\n var _a2;\n return callbackWrapper(initObservers)(\n {\n mutationCb: wrappedMutationEmit,\n mousemoveCb: (positions, source) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source,\n positions\n }\n }),\n mouseInteractionCb: (d) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.MouseInteraction,\n ...d\n }\n }),\n scrollCb: wrappedScrollEmit,\n viewportResizeCb: (d) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.ViewportResize,\n ...d\n }\n }),\n inputCb: (v2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Input,\n ...v2\n }\n }),\n mediaInteractionCb: (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.MediaInteraction,\n ...p\n }\n }),\n styleSheetRuleCb: (r2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.StyleSheetRule,\n ...r2\n }\n }),\n styleDeclarationCb: (r2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.StyleDeclaration,\n ...r2\n }\n }),\n canvasMutationCb: wrappedCanvasMutationEmit,\n fontCb: (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Font,\n ...p\n }\n }),\n selectionCb: (p) => {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Selection,\n ...p\n }\n });\n },\n customElementCb: (c2) => {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.CustomElement,\n ...c2\n }\n });\n },\n blockClass,\n ignoreClass,\n ignoreSelector,\n maskTextClass,\n maskTextSelector,\n maskInputOptions,\n inlineStylesheet,\n sampling,\n recordDOM,\n recordCanvas,\n inlineImages,\n userTriggeredOnInput,\n collectFonts,\n doc,\n maskInputFn,\n maskTextFn,\n keepIframeSrcFn,\n blockSelector,\n slimDOMOptions,\n dataURLOptions,\n mirror,\n iframeManager,\n stylesheetManager,\n shadowDomManager,\n processedNodeManager,\n canvasManager,\n ignoreCSSAttributes,\n plugins: ((_a2 = plugins == null ? void 0 : plugins.filter((p) => p.observer)) == null ? void 0 : _a2.map((p) => ({\n observer: p.observer,\n options: p.options,\n callback: (payload) => wrappedEmit({\n type: EventType.Plugin,\n data: {\n plugin: p.name,\n payload\n }\n })\n }))) || []\n },\n hooks\n );\n };\n iframeManager.addLoadListener((iframeEl) => {\n try {\n handlers.push(observe(iframeEl.contentDocument));\n } catch (error) {\n console.warn(error);\n }\n });\n const init = () => {\n takeFullSnapshot$1();\n handlers.push(observe(document));\n recording = true;\n };\n if (document.readyState === \"interactive\" || document.readyState === \"complete\") {\n init();\n } else {\n handlers.push(\n on(\"DOMContentLoaded\", () => {\n wrappedEmit({\n type: EventType.DomContentLoaded,\n data: {}\n });\n if (recordAfter === \"DOMContentLoaded\") init();\n })\n );\n handlers.push(\n on(\n \"load\",\n () => {\n wrappedEmit({\n type: EventType.Load,\n data: {}\n });\n if (recordAfter === \"load\") init();\n },\n window\n )\n );\n }\n return () => {\n handlers.forEach((h) => h());\n processedNodeManager.destroy();\n recording = false;\n unregisterErrorHandler();\n };\n } catch (error) {\n console.warn(error);\n }\n}\nrecord.addCustomEvent = (tag, payload) => {\n if (!recording) {\n throw new Error(\"please add custom event after start recording\");\n }\n wrappedEmit({\n type: EventType.Custom,\n data: {\n tag,\n payload\n }\n });\n};\nrecord.freezePage = () => {\n mutationBuffers.forEach((buf) => buf.freeze());\n};\nrecord.takeFullSnapshot = (isCheckout) => {\n if (!recording) {\n throw new Error(\"please take full snapshot after start recording\");\n }\n takeFullSnapshot$1(isCheckout);\n};\nrecord.mirror = mirror;\nvar n;\n!function(t2) {\n t2[t2.NotStarted = 0] = \"NotStarted\", t2[t2.Running = 1] = \"Running\", t2[t2.Stopped = 2] = \"Stopped\";\n}(n || (n = {}));\nexport {\n record\n};\n//# sourceMappingURL=record.js.map\n","import { isMobile } from \"./GleapHelper\";\nimport { record } from \"@rrweb/record\";\n\nexport default class GleapReplayRecorder {\n startDate = undefined;\n events = [];\n bufferSize = 0;\n stopFunction = undefined;\n customOptions = {};\n\n // GleapReplayRecorder singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapReplayRecorder();\n return this.instance;\n } else {\n return this.instance;\n }\n }\n\n constructor() {}\n\n setOptions(options) {\n this.customOptions = options;\n }\n\n /**\n * Start replays\n * @returns\n */\n start() {\n this.stop();\n\n this.startDate = Date.now();\n var events = this.events;\n\n var options = {\n inlineStylesheet: true,\n blockClass: \"gl-block\",\n ignoreClass: \"gl-ignore\",\n maskTextClass: \"gl-mask\",\n dataURLOptions: {\n quality: 0.7,\n },\n recordCanvas: false,\n sampling: {\n scroll: 150,\n mouseInteraction: {\n MouseUp: false,\n MouseDown: false,\n Click: true,\n ContextMenu: true,\n DblClick: true,\n Focus: true,\n Blur: true,\n TouchStart: true,\n TouchEnd: false,\n },\n },\n collectFonts: false,\n recordCrossOriginIframes: false,\n };\n\n try {\n this.stopFunction = record({\n ...options,\n ...this.customOptions,\n emit(rrwebEvent) {\n const { event } = ensureMaxMessageSize(rrwebEvent);\n events.push(event);\n },\n });\n } catch (e) {\n console.error(e);\n }\n }\n\n /**\n * Stop replays\n * @returns\n */\n stop() {\n if (this.stopFunction) {\n this.stopFunction();\n }\n\n this.startDate = undefined;\n this.events = [];\n this.bufferSize = 0;\n }\n\n /**\n * Get the current replay data\n * @returns {Promise}\n */\n getReplayData() {\n const replayResult = {\n startDate: this.startDate,\n events: this.events,\n baseUrl: window.location.origin,\n width: window.innerWidth,\n height: window.innerHeight,\n isMobile: isMobile(),\n type: \"rrweb\",\n };\n\n return replayResult;\n }\n}\n\nexport function ensureMaxMessageSize(data) {\n let stringifiedData = JSON.stringify(data);\n if (stringifiedData.length > 4000000) {\n const dataURIRegex = /data:([\\w\\/\\-\\.]+);(\\w+),([^)\"]*)/gim;\n const matches = stringifiedData.matchAll(dataURIRegex);\n for (const match of matches) {\n if (match[1].toLocaleLowerCase().slice(0, 6) === \"image/\") {\n stringifiedData = stringifiedData.replace(\n match[0],\n \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAQSURBVHgBAQUA+v8ABRg5/wHSAVZN1mnaAAAAAElFTkSuQmCC\"\n );\n } else {\n stringifiedData = stringifiedData.replace(match[0], \"\");\n }\n }\n }\n return { event: JSON.parse(stringifiedData), size: stringifiedData.length };\n}\n","export class ScreenDrawer {\n rerender;\n svgElement = null;\n path = null;\n strPath;\n strokeWidth = 12;\n strokeWidthRect = 6;\n bufferSize = 4;\n buffer = [];\n startPoint = null;\n tool = \"rect\";\n color = \"#EB144C\";\n mouseDown = null;\n mouseMove = null;\n mouseUp = null;\n resizeListener = null;\n pathBuffer = [];\n\n constructor(rerender) {\n const self = this;\n\n this.rerender = rerender;\n\n this.svgElement = document.querySelector(\".bb-capture-svg\");\n this.svgElement.style.minHeight = `${document.documentElement.scrollHeight}px`;\n\n // Window resize listener.\n this.resizeListener = function (e) {\n self.svgElement.style.minHeight = `${document.documentElement.scrollHeight}px`;\n };\n window.addEventListener(\"resize\", this.resizeListener, true);\n\n this.mouseDown = function (e) {\n e.preventDefault();\n\n const colorpicker = document.querySelector(\n \".bb-capture-toolbar-item-colorpicker\"\n );\n if (colorpicker) {\n colorpicker.style.display = \"none\";\n }\n\n self.fadeOutToolbar();\n if (self.tool === \"pen\" || self.tool === \"blur\") {\n self.mouseDownPen(e);\n }\n if (self.tool === \"rect\") {\n self.mouseDownRect(e);\n }\n };\n\n this.mouseMove = function (e) {\n e.preventDefault();\n if (self.tool === \"pen\" || self.tool === \"blur\") {\n self.mouseMovePen(e);\n }\n if (self.tool === \"rect\") {\n self.mouseMoveRect(e);\n }\n };\n\n this.mouseUp = function (e) {\n e.preventDefault();\n self.fadeInToolbar();\n if (self.tool === \"pen\" || self.tool === \"blur\") {\n self.mouseUpPen(e);\n }\n if (self.tool === \"rect\") {\n self.mouseUpRect(e);\n }\n };\n\n this.svgElement.addEventListener(\"mousedown\", this.mouseDown);\n this.svgElement.addEventListener(\"mousemove\", this.mouseMove);\n this.svgElement.addEventListener(\"mouseup\", this.mouseUp);\n this.svgElement.addEventListener(\"touchstart\", this.mouseDown, false);\n this.svgElement.addEventListener(\"touchmove\", this.mouseMove, false);\n this.svgElement.addEventListener(\"touchend\", this.mouseUp, false);\n\n setTimeout(() => {\n this.rerender();\n }, 100);\n }\n\n clear() {\n if (this.svgElement) {\n while (this.svgElement.firstChild) {\n this.svgElement.firstChild.remove();\n }\n }\n }\n\n destroy() {\n this.svgElement.removeEventListener(\"mousedown\", this.mouseDown);\n this.svgElement.removeEventListener(\"mousemove\", this.mouseMove);\n this.svgElement.removeEventListener(\"mouseup\", this.mouseUp);\n this.svgElement.removeEventListener(\"touchstart\", this.mouseDown);\n this.svgElement.removeEventListener(\"touchmove\", this.mouseMove);\n this.svgElement.removeEventListener(\"touchend\", this.mouseUp);\n window.removeEventListener(\"resize\", this.resizeListener);\n }\n\n mouseUpPen() {\n if (this.path) {\n this.path = null;\n }\n }\n\n mouseUpRect() {\n if (this.path) {\n this.path = null;\n }\n }\n\n mouseMovePen(e) {\n if (this.path) {\n this.appendToBuffer(this.getMousePosition(e));\n this.updateSvgPath();\n }\n }\n\n mouseMoveRect(e) {\n if (this.path) {\n var p = this.getMousePosition(e);\n var w = Math.abs(p.x - this.startPoint.x);\n var h = Math.abs(p.y - this.startPoint.y);\n var x = p.x;\n var y = p.y;\n if (p.x > this.startPoint.x) {\n x = this.startPoint.x;\n }\n if (p.y > this.startPoint.y) {\n y = this.startPoint.y;\n }\n\n this.path.setAttributeNS(null, \"x\", x);\n this.path.setAttributeNS(null, \"y\", y);\n this.path.setAttributeNS(null, \"width\", w);\n this.path.setAttributeNS(null, \"height\", h);\n }\n }\n\n mouseDownRect(e) {\n this.path = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n this.path.setAttribute(\"fill\", \"none\");\n this.path.setAttribute(\"stroke\", this.color);\n this.path.setAttribute(\"stroke-linecap\", \"round\");\n this.path.setAttribute(\"stroke-width\", this.strokeWidthRect);\n\n this.startPoint = this.getMousePosition(e);\n this.appendPathToSvg(this.path);\n }\n\n mouseDownPen(e) {\n var color = this.color + \"AA\";\n var strokeWidth = this.strokeWidth;\n\n if (this.tool === \"blur\") {\n color = \"#000000\";\n strokeWidth = 40;\n }\n\n this.path = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this.path.setAttribute(\"fill\", \"none\");\n this.path.setAttribute(\"stroke\", color);\n this.path.setAttribute(\"stroke-linecap\", \"round\");\n this.path.setAttribute(\"stroke-width\", strokeWidth);\n this.buffer = [];\n var pt = this.getMousePosition(e);\n this.appendToBuffer(pt);\n this.strPath = \"M\" + pt.x + \" \" + pt.y;\n this.path.setAttribute(\"d\", this.strPath);\n this.appendPathToSvg(this.path);\n }\n\n setTool(tool) {\n this.tool = tool;\n }\n\n setColor(color) {\n this.color = color;\n }\n\n getMousePosition(e) {\n if (e.touches && e.touches.length > 0) {\n return {\n x: e.touches[0].clientX,\n y: e.touches[0].clientY,\n };\n }\n\n return {\n x: e.clientX,\n y: e.clientY,\n };\n }\n\n // Calculate the average point, starting at offset in the buffer\n getAveragePoint(offset) {\n var len = this.buffer.length;\n if (len % 2 === 1 || len >= this.bufferSize) {\n var totalX = 0;\n var totalY = 0;\n var pt, i;\n var count = 0;\n for (i = offset; i < len; i++) {\n count++;\n pt = this.buffer[i];\n totalX += pt.x;\n totalY += pt.y;\n }\n return {\n x: totalX / count,\n y: totalY / count,\n };\n }\n return null;\n }\n\n updateSvgPath() {\n var pt = this.getAveragePoint(0);\n\n if (pt) {\n // Get the smoothed part of the path that will not change\n this.strPath += \" L\" + pt.x + \" \" + pt.y;\n\n // Get the last part of the path (close to the current mouse position)\n // This part will change if the mouse moves again\n var tmpPath = \"\";\n for (var offset = 2; offset < this.buffer.length; offset += 2) {\n pt = this.getAveragePoint(offset);\n tmpPath += \" L\" + pt.x + \" \" + pt.y;\n }\n\n // Set the complete current path coordinates\n this.path.setAttribute(\"d\", this.strPath + tmpPath);\n }\n }\n\n appendToBuffer(pt) {\n this.buffer.push(pt);\n while (this.buffer.length > this.bufferSize) {\n this.buffer.shift();\n }\n }\n\n appendPathToSvg(path) {\n this.svgElement.appendChild(path);\n this.pathBuffer.push(path);\n this.rerender();\n }\n\n removeLastAddedPathFromSvg() {\n if (this.pathBuffer.length <= 0 || !this.svgElement) {\n return;\n }\n\n this.svgElement.removeChild(this.pathBuffer[this.pathBuffer.length - 1]);\n\n this.pathBuffer.pop();\n\n this.rerender();\n }\n\n fadeOutToolbar() {\n var fadeTarget = document.querySelector(\".bb-capture-toolbar\");\n if (fadeTarget) {\n fadeTarget.style.opacity = 0;\n fadeTarget.style.pointerEvents = \"none\";\n }\n }\n\n fadeInToolbar() {\n var fadeTarget = document.querySelector(\".bb-capture-toolbar\");\n if (fadeTarget) {\n fadeTarget.style.opacity = 1;\n fadeTarget.style.pointerEvents = \"auto\";\n }\n }\n}\n","export class GleapScrollStopper {\n keys = { 37: 1, 38: 1, 39: 1, 40: 1 };\n supportsPassive = false;\n wheelOpt = this.supportsPassive ? { passive: false } : false;\n wheelEvent =\n \"onwheel\" in document.createElement(\"div\") ? \"wheel\" : \"mousewheel\";\n scrollDisabled = false;\n\n // GleapScrollStopper singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapScrollStopper();\n return this.instance;\n } else {\n return this.instance;\n }\n }\n\n constructor() {\n const self = this;\n try {\n window.addEventListener(\n \"test\",\n null,\n Object.defineProperty({}, \"passive\", {\n get: function () {\n self.supportsPassive = true;\n self.wheelOpt = self.supportsPassive ? { passive: false } : false;\n },\n })\n );\n } catch (e) {}\n }\n\n preventDefault(e) {\n e.preventDefault();\n }\n\n preventDefaultForScrollKeys(e) {\n if (this.keys && this.keys[e.keyCode]) {\n this.preventDefault(e);\n return false;\n }\n }\n\n static disableScroll() {\n const instance = this.getInstance();\n if (instance.scrollDisabled) {\n return;\n }\n\n instance.scrollDisabled = true;\n\n window.addEventListener(\"DOMMouseScroll\", instance.preventDefault, false); // older FF\n window.addEventListener(\n instance.wheelEvent,\n instance.preventDefault,\n instance.wheelOpt\n ); // modern desktop\n window.addEventListener(\n \"touchmove\",\n instance.preventDefault,\n instance.wheelOpt\n ); // mobile\n window.addEventListener(\n \"keydown\",\n instance.preventDefaultForScrollKeys,\n false\n );\n }\n\n static enableScroll() {\n const instance = this.getInstance();\n if (!instance.scrollDisabled) {\n return;\n }\n\n instance.scrollDisabled = false;\n window.removeEventListener(\n \"DOMMouseScroll\",\n instance.preventDefault,\n false\n );\n window.removeEventListener(\n instance.wheelEvent,\n instance.preventDefault,\n instance.wheelOpt\n );\n window.removeEventListener(\n \"touchmove\",\n instance.preventDefault,\n instance.wheelOpt\n );\n window.removeEventListener(\n \"keydown\",\n instance.preventDefaultForScrollKeys,\n false\n );\n }\n}\n","import Gleap, { GleapTranslationManager, GleapFrameManager } from \"./Gleap\";\nimport { ScreenDrawer } from \"./ScreenDrawer\";\nimport { GleapScrollStopper } from \"./GleapScrollStopper\";\nimport { GleapScreenRecorder } from \"./GleapScreenRecorder\";\nimport { loadIcon } from \"./UI\";\n\nexport default class GleapMarkerManager {\n type = \"screenshot\";\n dragCursor = null;\n screenRecorder = null;\n callback = null;\n screenDrawer = null;\n escListener = null;\n pageLeaveListener = null;\n overrideLanguage = Gleap.getInstance().overrideLanguage;\n\n constructor(type) {\n this.type = type;\n }\n\n hideWidgetUI() {\n const feedbackButton = document.querySelector(\".bb-feedback-button\");\n if (feedbackButton) {\n feedbackButton.style.display = \"none\";\n }\n\n const dialogUI = document.querySelector(\".bb-feedback-dialog-container\");\n if (dialogUI) {\n dialogUI.style.display = \"none\";\n }\n }\n\n showWidgetUI() {\n if (this.type === \"screenshot\") {\n GleapScrollStopper.enableScroll();\n }\n\n // Stop screenrecording.\n if (this.screenRecorder) {\n this.screenRecorder.stopScreenRecording();\n }\n\n // Unregister ESC listener\n this.unregisterListeners();\n\n // Cleanup mouse pointer\n this.cleanupMousePointer();\n\n if (this.screenDrawer) {\n this.screenDrawer.destroy();\n }\n\n // Remove the toolbar UI\n const dialog = document.querySelector(\".bb-capture-toolbar\");\n if (dialog) {\n dialog.remove();\n }\n\n // Capture SVG ref\n const captureSVG = document.querySelector(\".bb-capture-svg\");\n if (captureSVG) {\n captureSVG.classList.add(\"bb-capture-svg--preview\");\n }\n\n // Remove the preview UI\n const videoPreviewContainer = document.querySelector(\".bb-capture-preview\");\n if (videoPreviewContainer) {\n videoPreviewContainer.remove();\n }\n\n // Feedback button\n const feedbackButton = document.querySelector(\".bb-feedback-button\");\n if (feedbackButton) {\n feedbackButton.style.display = \"flex\";\n }\n\n // Feedback dialog container\n const dialogUI = document.querySelector(\".bb-feedback-dialog-container\");\n if (dialogUI) {\n dialogUI.style.display = \"block\";\n }\n\n // Dismiss button\n const dismissUI = document.querySelector(\".bb-capture-dismiss\");\n if (dismissUI) {\n dismissUI.style.display = \"none\";\n }\n\n // Hide the color picker\n const colorPicker = document.querySelector(\n \".bb-capture-toolbar-item-colorpicker\"\n );\n if (colorPicker) {\n colorPicker.style.display = \"none\";\n }\n\n // Border layer\n const borderLayer = document.querySelector(\n \".bb-capture-editor-borderlayer\"\n );\n if (borderLayer) {\n borderLayer.style.display = \"none\";\n }\n }\n\n clear() {\n const captureEditor = document.querySelector(\".bb-capture-editor\");\n if (captureEditor) {\n captureEditor.remove();\n }\n }\n\n setMouseMove(x, y) {\n if (!this.dragCursor) {\n return;\n }\n\n this.dragCursor.style.left = `${x + 6}px`;\n this.dragCursor.style.top = `${y - 26}px`;\n this.dragCursor.style.right = null;\n }\n\n mouseMoveEventHandler(e) {\n const x = e.clientX;\n const y = e.clientY;\n this.setMouseMove(x, y);\n }\n\n touchMoveEventHandler(e) {\n const x = e.touches[0].clientX;\n const y = e.touches[0].clientY;\n this.setMouseMove(x, y);\n }\n\n setupMousePointer() {\n const self = this;\n this.dragCursor = document.querySelector(\".bb-capture-editor-drag-info\");\n const captureSVG = document.querySelector(\".bb-capture-svg\");\n captureSVG.addEventListener(\"mouseenter\", (e) => {\n self.dragCursor.style.opacity = 1;\n });\n\n captureSVG.addEventListener(\"mouseleave\", (e) => {\n self.dragCursor.style.opacity = 0;\n });\n\n document.documentElement.addEventListener(\n \"mousemove\",\n this.mouseMoveEventHandler.bind(this)\n );\n document.documentElement.addEventListener(\n \"touchmove\",\n this.touchMoveEventHandler.bind(this)\n );\n }\n\n cleanupMousePointer() {\n document.documentElement.removeEventListener(\n \"mousemove\",\n this.mouseMoveEventHandler\n );\n document.documentElement.removeEventListener(\n \"touchmove\",\n this.touchMoveEventHandler\n );\n\n // Clean up toolbar drag listeners\n const dragHandle = document.querySelector(\".bb-capture-toolbar-item[data-type='drag']\");\n if (dragHandle) {\n dragHandle.removeEventListener(\"mousedown\", this.dragStart);\n dragHandle.removeEventListener(\"touchstart\", this.dragStart);\n document.removeEventListener(\"mousemove\", this.drag);\n document.removeEventListener(\"touchmove\", this.drag);\n document.removeEventListener(\"mouseup\", this.dragEnd);\n document.removeEventListener(\"touchend\", this.dragEnd);\n }\n\n if (this.dragCursor) {\n this.dragCursor.remove();\n }\n }\n\n createEditorUI() {\n // Add HTML for drawing and recording\n var bugReportingEditor = document.createElement(\"div\");\n bugReportingEditor.className = \"bb-capture-editor\";\n bugReportingEditor.innerHTML = `\n
\n \n
${loadIcon(\"dismiss\")}
\n
${loadIcon(\"rect\")}
\n
\n
\n ${loadIcon(\"drag\")}\n
\n ${this.type === \"capture\"\n ? `
\n ${loadIcon(\"recorderon\")}\n ${loadIcon(\"recorderoff\")}\n \n
\n
\n ${loadIcon(\"mic\")}\n \n
\n
2:00
\n
\n
\n ${loadIcon(\"pointer\")}\n
`\n : \"\"\n }\n
\n ${loadIcon(\"rect\")}\n
\n
\n ${loadIcon(\"pen\")}\n
\n
\n ${loadIcon(\"blur\")}\n
\n
\n
\n ${GleapTranslationManager.translateText(\n `pickAColor`\n )}\n
\n
\n ${loadIcon(\"undo\")}\n ${GleapTranslationManager.translateText(\n `undo`\n )}\n
\n ${this.type !== \"capture\"\n ? `
${GleapTranslationManager.translateText(\n `next`\n )}
`\n : \"\"\n }\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
${GleapTranslationManager.translateText(\n `retry`\n )}
\n
${GleapTranslationManager.translateText(\n `next`\n )}
\n
\n
\n
\n `;\n document.body.appendChild(bugReportingEditor);\n\n // Set RTL layout\n bugReportingEditor.setAttribute(\"dir\", GleapTranslationManager.getInstance().isRTLLayout ? \"rtl\" : \"ltr\");\n }\n\n showNextStep = function () {\n // Adapt the UI\n this.showWidgetUI();\n\n if (this.callback) {\n GleapFrameManager.getInstance().sendMessage({\n name: \"set-form-data\",\n data: {\n formKey: \"capture\",\n data: {\n value: this.type,\n dirty: true,\n }\n }\n });\n this.callback(true);\n }\n };\n\n unregisterListeners() {\n if (this.escListener) {\n document.removeEventListener(\"keydown\", this.escListener);\n }\n\n if (this.pageLeaveListener) {\n window.removeEventListener(\"beforeunload\", this.pageLeaveListener);\n }\n }\n\n registerListeners() {\n const self = this;\n\n // Esc listener\n this.escListener = function (evt) {\n evt = evt || window.event;\n var isEscape = false;\n var isEnter = false;\n if (\"key\" in evt) {\n isEscape = evt.key === \"Escape\";\n isEnter = evt.key === \"Enter\";\n }\n if (isEscape) {\n self.dismiss();\n }\n if (self.type === \"screenshot\" && isEnter) {\n self.showNextStep();\n }\n };\n document.addEventListener(\"keydown\", this.escListener);\n\n // Page leave listener\n this.pageLeaveListener = function (event) {\n event.preventDefault();\n event.returnValue = \"\";\n };\n window.addEventListener(\"beforeunload\", this.pageLeaveListener);\n }\n\n show(callback) {\n this.callback = callback;\n const self = this;\n\n // Register for listeners\n this.registerListeners();\n\n // Hide widget UI\n this.hideWidgetUI();\n\n // Create the editor UI\n this.createEditorUI();\n\n // Setup the mouse pointer\n this.setupMousePointer();\n\n // Setup screenshot data\n if (this.type === \"screenshot\") {\n // Overwrite snapshot position\n Gleap.getInstance().setGlobalDataItem(\"snapshotPosition\", {\n x: window.scrollX,\n y: window.scrollY,\n });\n\n // Disable scroll\n GleapScrollStopper.disableScroll();\n } else {\n // Setup screen recording\n this.setupScreenRecording();\n }\n\n // Hook up the drawing.\n this.screenDrawer = new ScreenDrawer(\n this.captureScreenDrawerRerender.bind(this)\n );\n\n this.setupColorPicker();\n this.setupToolbar();\n }\n\n setupColorPicker() {\n const self = this;\n const selectedColor = document.querySelector(\n \".bb-capture-toolbar-item-selectedcolor\"\n );\n const colorItems = document.querySelectorAll(\n \".bb-capture-toolbar-item-color\"\n );\n const colorpicker = document.querySelector(\n \".bb-capture-toolbar-item-colorpicker\"\n );\n\n for (var i = 0; i < colorItems.length; i++) {\n const colorItem = colorItems[i];\n const hexColor = colorItem.getAttribute(\"data-color\");\n colorItem.style.backgroundColor = hexColor;\n colorItem.onclick = function () {\n if (colorItem) {\n self.screenDrawer.setColor(hexColor);\n if (colorpicker) {\n colorpicker.style.display = \"none\";\n }\n selectedColor.style.backgroundColor = colorItem.style.backgroundColor;\n GleapMarkerManager.setPenColor(hexColor);\n }\n };\n }\n }\n\n static setPenColor(hexColor) {\n const penTips = document.querySelectorAll(\".bb-pen-tip\");\n for (var j = 0; j < penTips.length; j++) {\n penTips[j].style.fill = hexColor;\n }\n }\n\n dismiss() {\n this.showWidgetUI();\n\n if (this.callback) {\n this.callback(false);\n }\n }\n\n setupToolbar() {\n const self = this;\n const toolbar = document.querySelector(\".bb-capture-toolbar\");\n let isDragging = false;\n let currentX;\n let currentY;\n let initialX;\n let initialY;\n let xOffset = 0;\n let yOffset = 0;\n\n const getTransformValues = () => {\n const transform = window.getComputedStyle(toolbar).transform;\n if (transform === 'none') return { x: 0, y: 0 };\n const matrix = new DOMMatrix(transform);\n return { x: matrix.m41, y: matrix.m42 };\n };\n\n this.dragStart = (e) => {\n const { x, y } = getTransformValues();\n xOffset = x;\n yOffset = y;\n\n if (e.type === \"mousedown\") {\n initialX = e.clientX - xOffset;\n initialY = e.clientY - yOffset;\n } else {\n initialX = e.touches[0].clientX - xOffset;\n initialY = e.touches[0].clientY - yOffset;\n }\n isDragging = true;\n };\n\n this.dragEnd = () => {\n isDragging = false;\n };\n\n this.drag = (e) => {\n if (isDragging) {\n e.preventDefault();\n if (e.type === \"mousemove\") {\n currentX = e.clientX - initialX;\n currentY = e.clientY - initialY;\n } else {\n currentX = e.touches[0].clientX - initialX;\n currentY = e.touches[0].clientY - initialY;\n }\n\n xOffset = currentX;\n yOffset = currentY;\n\n toolbar.style.transform = `translate(${currentX}px, ${currentY}px)`;\n }\n };\n\n const dragHandle = document.querySelector(\".bb-capture-toolbar-item[data-type='drag']\");\n\n dragHandle.addEventListener(\"mousedown\", this.dragStart);\n dragHandle.addEventListener(\"touchstart\", this.dragStart);\n document.addEventListener(\"mousemove\", this.drag);\n document.addEventListener(\"touchmove\", this.drag);\n document.addEventListener(\"mouseup\", this.dragEnd);\n document.addEventListener(\"touchend\", this.dragEnd);\n\n // Hook up dismiss button\n const dismissButton = document.querySelector(\".bb-capture-dismiss\");\n dismissButton.onclick = function () {\n self.dismiss();\n };\n\n // Hook up send button\n const nextButton = document.querySelector(\".bb-capture-button-next\");\n if (nextButton) {\n nextButton.onclick = this.showNextStep.bind(this);\n }\n\n const colorpicker = document.querySelector(\n \".bb-capture-toolbar-item-colorpicker\"\n );\n\n // Capture SVG ref\n const captureSVG = document.querySelector(\".bb-capture-svg\");\n\n const chooseTool = function (type, toolbarItem) {\n const toolbarTools = document.querySelectorAll(\n \".bb-capture-toolbar-item-tool\"\n );\n for (let j = 0; j < toolbarTools.length; j++) {\n toolbarTools[j].classList.remove(\"bb-capture-toolbar-item--active\");\n }\n toolbarItem.classList.add(\"bb-capture-toolbar-item--active\");\n self.screenDrawer.setTool(type);\n self.dragCursor.innerHTML = \"\";\n if (type === \"pointer\") {\n captureSVG.style.pointerEvents = \"none\";\n } else {\n captureSVG.style.pointerEvents = \"auto\";\n try {\n var svgClone = toolbarItem.querySelector(\"svg\").cloneNode(true);\n if (svgClone && self.dragCursor) {\n self.dragCursor.appendChild(svgClone);\n }\n } catch (exp) { }\n }\n }\n\n // Setup toolbar items\n var toolbarItems = document.querySelectorAll(\".bb-capture-toolbar-item\");\n for (var i = 0; i < toolbarItems.length; i++) {\n const toolbarItem = toolbarItems[i];\n toolbarItem.onclick = function () {\n const type = toolbarItem.getAttribute(\"data-type\");\n if (colorpicker && type !== \"colorpicker\") {\n colorpicker.style.display = \"none\";\n }\n\n // Mic & recording buttons\n if (type === \"mic\") {\n self.screenRecorder.toggleAudio();\n }\n if (type === \"recording\") {\n if (self.screenRecorder.isRecording) {\n self.screenRecorder.stopScreenRecording();\n } else {\n self.screenRecorder.startScreenRecording();\n chooseTool(\"pointer\", document.querySelector(\".bb-capture-toolbar-item[data-type='pointer']\"));\n }\n }\n\n // Marker buttons\n if (self.type === \"capture\" && !self.screenRecorder.isRecording) {\n // Inactivate buttons.\n return;\n }\n if (\n type === \"pen\" ||\n type === \"blur\" ||\n type === \"rect\" ||\n type === \"pointer\"\n ) {\n chooseTool(type, toolbarItem);\n }\n if (type === \"colorpicker\") {\n if (colorpicker.style.display === \"flex\") {\n colorpicker.style.display = \"none\";\n } else {\n colorpicker.style.display = \"flex\";\n }\n }\n if (type === \"undo\") {\n self.screenDrawer.removeLastAddedPathFromSvg();\n }\n };\n }\n }\n\n captureScreenDrawerRerender() {\n if (!this.screenDrawer) {\n return;\n }\n\n const itemInactiveClass = \"bb-capture-editor-item-inactive\";\n const toolbarItems = document.querySelectorAll(\".bb-capture-toolbar-item\");\n for (var i = 0; i < toolbarItems.length; i++) {\n const toolbarItem = toolbarItems[i];\n const type = toolbarItem.getAttribute(\"data-type\");\n switch (type) {\n case \"undo\":\n if (\n this.screenDrawer.pathBuffer != null &&\n this.screenDrawer.pathBuffer.length > 0\n ) {\n toolbarItem.classList.remove(itemInactiveClass);\n } else {\n toolbarItem.classList.add(itemInactiveClass);\n }\n break;\n default:\n break;\n }\n }\n }\n\n captureRenderer() {\n if (!this.screenRecorder) {\n return;\n }\n\n if (this.screenRecorder.file) {\n Gleap.getInstance().setGlobalDataItem(\"screenRecordingData\", this.screenRecorder.file);\n }\n\n const itemInactiveClass = \"bb-capture-editor-item-inactive\";\n const timerLabel = document.querySelector(\".bb-capture-toolbar-item-timer\");\n const toolbarItems = document.querySelectorAll(\".bb-capture-toolbar-item\");\n const screenRecordingTooltip = document.querySelector(\n \".bb-tooltip-screen-recording\"\n );\n const audioRecordingTooltip = document.querySelector(\n \".bb-tooltip-audio-recording\"\n );\n const captureEditor = document.querySelector(\".bb-capture-editor\");\n const recordingClass = \"bb-capture-editor-recording\";\n const notRecordingClass = \"bb-capture-editor-notrecording\";\n if (this.screenRecorder.isRecording) {\n captureEditor.classList.add(recordingClass);\n captureEditor.classList.remove(notRecordingClass);\n } else {\n captureEditor.classList.add(notRecordingClass);\n captureEditor.classList.remove(recordingClass);\n }\n \n // Update UI.\n const dialog = document.querySelector(\".bb-capture-toolbar\");\n const videoPreviewContainer = document.querySelector(\".bb-capture-preview\");\n videoPreviewContainer.style.display = this.screenRecorder.file\n ? \"flex\"\n : \"none\";\n dialog.style.display = !this.screenRecorder.file ? \"flex\" : \"none\";\n\n for (var i = 0; i < toolbarItems.length; i++) {\n const toolbarItem = toolbarItems[i];\n const type = toolbarItem.getAttribute(\"data-type\");\n switch (type) {\n case \"mic\":\n if (\n this.screenRecorder.audioAvailable &&\n this.screenRecorder.available\n ) {\n toolbarItem.classList.remove(itemInactiveClass);\n if (!this.screenRecorder.audioMuted) {\n toolbarItem.classList.remove(\n \"bb-capture-toolbar-item--inactivecross\"\n );\n audioRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"mute\"\n );\n } else {\n toolbarItem.classList.add(\n \"bb-capture-toolbar-item--inactivecross\"\n );\n audioRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"unmute\"\n );\n }\n } else {\n toolbarItem.classList.add(itemInactiveClass);\n toolbarItem.classList.add(\"bb-capture-toolbar-item--inactivecross\");\n audioRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"browserNotSupported\"\n );\n }\n break;\n\n case \"recording\":\n if (this.screenRecorder.available) {\n toolbarItem.classList.remove(itemInactiveClass);\n if (this.screenRecorder.isRecording) {\n toolbarItem.setAttribute(\"data-active\", \"true\");\n screenRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"stopRecording\"\n );\n timerLabel.style.display = \"block\";\n } else {\n toolbarItem.setAttribute(\"data-active\", \"false\");\n screenRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"startRecording\"\n );\n timerLabel.style.display = \"none\";\n }\n } else {\n // Recording is not available.\n toolbarItem.classList.add(itemInactiveClass);\n screenRecordingTooltip.innerHTML = GleapTranslationManager.translateText(\n \"browserNotSupported\"\n );\n }\n break;\n\n default:\n break;\n }\n }\n }\n\n setupScreenRecording() {\n const self = this;\n\n // Hook preview next button\n const nextButtonPreview = document.querySelector(\n \".bb-capture-preview-sendbutton\"\n );\n nextButtonPreview.onclick = this.showNextStep.bind(this);\n\n // Hook retry button\n const retryButton = document.querySelector(\n \".bb-capture-preview-retrybutton\"\n );\n retryButton.onclick = function () {\n self.screenRecorder.clearPreview();\n if (self.screenDrawer) {\n self.screenDrawer.clear();\n }\n };\n\n // Setup screen recorder\n this.screenRecorder = new GleapScreenRecorder(\n this.captureRenderer.bind(this),\n GleapTranslationManager.translateText(\n \"accessToScreenSharingDenied\"\n )\n );\n }\n}\n","import {\n GleapFrameManager,\n GleapFeedbackButtonManager,\n GleapConfigManager,\n} from \"./Gleap\";\n\nexport default class GleapTranslationManager {\n overrideLanguage = \"\";\n isRTLLayout = false;\n\n // GleapTranslationManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapTranslationManager();\n }\n return this.instance;\n }\n\n /**\n * Returns the language to override the default language.\n * @returns {string}\n */\n getOverrideLanguage() {\n return this.overrideLanguage;\n }\n\n /**\n * Sets the language to override the default language.\n * @param {*} language\n */\n setOverrideLanguage(language) {\n this.overrideLanguage = language;\n }\n\n updateRTLSupport() {\n // Update RTL support.\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n\n this.isRTLLayout = false;\n if (\n flowConfig &&\n flowConfig.localizationOptions &&\n flowConfig.localizationOptions.rtl\n ) {\n this.isRTLLayout = true;\n }\n\n GleapFeedbackButtonManager.getInstance().updateFeedbackButtonState();\n GleapFrameManager.getInstance().updateFrameStyle();\n }\n\n getActiveLanguage() {\n var language = \"en\";\n if (typeof navigator !== \"undefined\") {\n language = navigator.language.toLowerCase();\n }\n\n // Get language from HTML lang attribute if available\n if (typeof document !== \"undefined\" && document.documentElement) {\n const htmlLang = document.documentElement.lang;\n if (htmlLang && htmlLang.trim() !== \"\") {\n language = htmlLang.toLowerCase().trim();\n }\n }\n\n if (this.overrideLanguage && this.overrideLanguage !== \"\") {\n language = this.overrideLanguage.toLowerCase();\n }\n\n return language;\n }\n\n static translateText(key) {\n if (!key) {\n return \"\";\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const staticTranslation = flowConfig.staticTranslations;\n\n if (staticTranslation && staticTranslation[key]) {\n return staticTranslation[key];\n }\n\n return key;\n }\n\n static translateTextWithVars(key, vars) {\n if (!key) {\n return \"\";\n }\n\n var template = this.translateText(key);\n if (!template) {\n return \"\";\n }\n\n return template.replace(/{(\\w+)}/g, function (_, key) {\n return vars[key];\n });\n }\n}\n","import Gleap from \"./Gleap\";\n\nexport default class GleapShortcutListener {\n shortCutListener = undefined;\n\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapShortcutListener();\n }\n return this.instance;\n }\n\n start() {\n if (this.shortCutListener) {\n return;\n }\n\n const charForEvent = function (event) {\n var code;\n\n if (event.key !== undefined) {\n code = event.key;\n } else if (event.keyIdentifier !== undefined) {\n code = event.keyIdentifier;\n } else if (event.keyCode !== undefined) {\n code = event.keyCode;\n }\n\n return code;\n };\n\n this.shortCutListener = document.addEventListener(\"keyup\", function (e) {\n const char = charForEvent(e);\n if (\n e.ctrlKey &&\n (char === \"u\" || char === \"U\" || char === 85)\n ) {\n Gleap.startFeedbackFlowWithOptions(\"bugreporting\", {\n autostartDrawing: true\n });\n }\n });\n }\n\n stop() {\n if (this.shortCutListener) {\n document.removeEventListener(\"keyup\", this.shortCutListener);\n this.shortCutListener = undefined;\n }\n }\n}","\nexport default class GleapPreFillManager {\n formPreFill = {};\n \n // GleapPreFillManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapPreFillManager();\n }\n return this.instance;\n }\n }\n ","import Gleap, {\n GleapFeedbackButtonManager,\n GleapConfigManager,\n GleapFrameManager,\n GleapSession,\n GleapAudioManager,\n GleapTranslationManager,\n GleapEventManager,\n} from \"./Gleap\";\nimport { loadFromGleapCache, saveToGleapCache } from \"./GleapHelper\";\nimport { loadIcon } from \"./UI\";\n\nexport default class GleapNotificationManager {\n notificationContainer = null;\n notifications = [];\n unreadCount = 0;\n unreadNotificationsKey = \"unread-notifications\";\n isTabActive = true;\n showNotificationBadge = true;\n\n // Keep track of the current index of news being shown\n currentNewsIndex = 0;\n\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapNotificationManager();\n }\n return this.instance;\n }\n\n constructor() {}\n\n updateTabBarNotificationCount() {\n GleapEventManager.notifyEvent(\"unread-count-changed\", this.unreadCount);\n }\n\n injectNotificationUI() {\n if (this.notificationContainer) {\n return;\n }\n\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-notification-container gleap-font\";\n document.body.appendChild(elem);\n this.notificationContainer = elem;\n\n this.updateContainerStyle();\n this.reloadNotificationsFromCache();\n }\n\n reloadNotificationsFromCache() {\n try {\n const notificationsFromCache = loadFromGleapCache(\n this.unreadNotificationsKey\n );\n if (notificationsFromCache && notificationsFromCache.length > 0) {\n let nots = notificationsFromCache.filter(\n (notification) =>\n new Date(notification.createdAt) >\n new Date(Date.now() - 1 * 60 * 60 * 1000)\n );\n\n if (nots.length > 2) {\n this.notifications = nots.splice(0, nots.length - 2);\n } else {\n this.notifications = nots;\n }\n this.renderNotifications();\n }\n } catch (exp) {}\n }\n\n setNotificationCount(unreadCount) {\n this.unreadCount = unreadCount;\n this.updateTabBarNotificationCount();\n\n // Update the badge counter.\n GleapFeedbackButtonManager.getInstance().updateNotificationBadge(\n this.unreadCount\n );\n }\n\n showNotification(notification) {\n if (!(this.notificationContainer && notification && notification.data)) {\n return;\n }\n\n const notificationsForOutbound = this.notifications.find(\n (e) => notification.outbound === e.outbound\n );\n if (!notificationsForOutbound) {\n this.notifications.push(notification);\n\n // Play sound only if it's a new one\n if (notification.sound) {\n GleapAudioManager.ping();\n }\n }\n if (this.notifications.length > 2) {\n this.notifications.shift();\n }\n\n // Persist notifications.\n saveToGleapCache(this.unreadNotificationsKey, this.notifications);\n\n this.renderNotifications();\n }\n\n /**\n * Renders notifications. For news-type notifications, only show\n * one at a time if there are multiple, with a \"Next\" button to cycle.\n * The \"Next\" button + pagination are placed within the news content area.\n *\n * - Sorts news notifications by createdAt (oldest first).\n * - Shows \"Done\" on the last news item instead of \"Next\".\n */\n renderNotifications() {\n if (!this.notificationContainer) {\n return;\n }\n\n // Clear the existing notifications in the container (UI only).\n this.clearAllNotifications(true);\n\n // Append a close button (which clears everything).\n const clearElem = document.createElement(\"div\");\n clearElem.onclick = () => {\n this.clearAllNotifications();\n // Reset the news index when everything is closed\n this.currentNewsIndex = 0;\n };\n clearElem.className = \"gleap-notification-close\";\n clearElem.innerHTML = loadIcon(\"dismiss\");\n this.notificationContainer.appendChild(clearElem);\n\n // Separate out news notifications vs. others, then sort news by date ascending\n const newsNotifications = this.notifications\n .filter((n) => n.data.news)\n .sort((a, b) => new Date(a.createdAt) - new Date(b.createdAt));\n\n const otherNotifications = this.notifications.filter((n) => !n.data.news);\n\n // --- Render NEWS notifications (with pagination) ---\n if (newsNotifications.length > 0) {\n // We only show ONE news item at a time if there's more than one\n const currentIndex =\n this.currentNewsIndex < newsNotifications.length\n ? this.currentNewsIndex\n : 0;\n const currentNews = newsNotifications[currentIndex];\n\n // Main wrapper for the news notification\n const newsElem = document.createElement(\"div\");\n newsElem.className = \"gleap-notification-item-news\";\n\n // The container that holds image + content\n const newsContainerElem = document.createElement(\"div\");\n newsContainerElem.className = \"gleap-notification-item-news-container\";\n\n // Create the image element (clickable)\n if (\n currentNews.data.coverImageUrl &&\n currentNews.data.coverImageUrl !== \"\" &&\n !currentNews.data.coverImageUrl.includes(\"NewsImagePlaceholder\")\n ) {\n const newsImageElem = document.createElement(\"img\");\n newsImageElem.className = \"gleap-notification-item-news-image\";\n newsImageElem.src = currentNews.data.coverImageUrl;\n\n // Only the image is clickable\n newsImageElem.onclick = (e) => {\n e.stopPropagation();\n this.openNews(currentNews);\n };\n newsContainerElem.appendChild(newsImageElem);\n }\n\n // The content container\n const newsContentElem = document.createElement(\"div\");\n newsContentElem.className = \"gleap-notification-item-news-content\";\n\n // Title (clickable)\n const newsTitleElem = document.createElement(\"div\");\n newsTitleElem.className = \"gleap-notification-item-news-content-title\";\n\n let content = currentNews.data.text || \"\";\n content = content.replaceAll(\n \"{{name}}\",\n GleapSession.getInstance().getName()\n );\n newsTitleElem.innerText = content;\n\n // Only the title is clickable\n newsTitleElem.onclick = (e) => {\n e.stopPropagation();\n this.openNews(currentNews);\n };\n\n newsContentElem.appendChild(newsTitleElem);\n\n // Description / Sender\n const descHTML = this.renderDescription(currentNews);\n if (descHTML) {\n const descElem = document.createElement(\"div\");\n descElem.className = \"gleap-notification-item-news-preview\";\n descElem.innerHTML = descHTML;\n newsContentElem.appendChild(descElem);\n }\n\n // If there's more than one news item, show pagination + next/done button\n if (newsNotifications.length > 1) {\n // Pagination container (still inside .gleap-notification-item-news-content)\n const paginationElem = document.createElement(\"div\");\n paginationElem.className = \"gleap-news-pagination\";\n\n // Show current item / total\n const pageIndicator = document.createElement(\"span\");\n pageIndicator.className = \"gleap-news-page-indicator\";\n pageIndicator.innerText = `${currentIndex + 1} / ${\n newsNotifications.length\n }`;\n paginationElem.appendChild(pageIndicator);\n\n // Next or Done button\n const nextBtn = document.createElement(\"button\");\n nextBtn.className = \"gleap-news-next-button\";\n\n if (currentIndex < newsNotifications.length - 1) {\n nextBtn.innerText = GleapTranslationManager.translateText(`next`);\n nextBtn.onclick = (e) => {\n e.stopPropagation(); // so we can click the button freely\n this.currentNewsIndex++;\n this.renderNotifications();\n };\n } else {\n nextBtn.innerText = GleapTranslationManager.translateText(`done`);\n nextBtn.onclick = (e) => {\n e.stopPropagation();\n this.clearAllNotifications();\n this.currentNewsIndex = 0;\n };\n }\n paginationElem.appendChild(nextBtn);\n newsContentElem.appendChild(paginationElem);\n }\n\n // Append content to container\n newsContainerElem.appendChild(newsContentElem);\n // Append container to the main element\n newsElem.appendChild(newsContainerElem);\n // Finally append to the notification container\n this.notificationContainer.appendChild(newsElem);\n }\n\n // --- Render OTHER notifications normally ---\n for (let i = 0; i < otherNotifications.length; i++) {\n const notification = otherNotifications[i];\n let content = notification.data.text || \"\";\n // Replace placeholders\n content = content.replaceAll(\n \"{{name}}\",\n GleapSession.getInstance().getName()\n );\n\n const elem = document.createElement(\"div\");\n elem.onclick = () => {\n if (notification.data.conversation) {\n Gleap.openConversation(\n notification.data.conversation.shareToken,\n true\n );\n } else if (notification.data.checklist) {\n Gleap.openChecklist(notification.data.checklist.id, true);\n } else {\n Gleap.open();\n }\n };\n\n // Check if it's a checklist type\n if (notification.data.checklist) {\n let progress = Math.round(\n (notification.data.currentStep / notification.data.totalSteps) * 100\n );\n if (progress < 100) {\n progress += 4;\n }\n\n elem.className = \"gleap-notification-item-checklist\";\n elem.innerHTML = `\n
\n
\n
\n ${notification.data.text}\n
\n
\n
\n
\n
\n \n \n \n ${notification.data.nextStepTitle}\n
\n
\n
`;\n } else {\n // Standard non-news notification\n elem.className = \"gleap-notification-item\";\n elem.innerHTML = `\n ${\n notification.data.sender &&\n notification.data.sender.profileImageUrl &&\n ``\n }\n
\n ${\n notification.data.sender\n ? `
\n ${notification.data.sender.name}\n
`\n : \"\"\n }\n
${content}
\n
`;\n }\n this.notificationContainer.appendChild(elem);\n }\n\n const hasNotifications =\n newsNotifications.length > 0 || otherNotifications.length > 0;\n if (!hasNotifications) {\n // Clear the notification container\n this.clearAllNotifications(true);\n }\n }\n\n /**\n * Helper to open news from a given notification.\n */\n openNews(notification) {\n if (notification.data.news) {\n Gleap.openNewsArticle(notification.data.news.id, true);\n } else {\n Gleap.open();\n }\n }\n\n /**\n * Helper to render preview or sender info for news notifications.\n */\n renderDescription(notification) {\n const { previewText, sender } = notification.data;\n if (previewText && previewText.length > 0) {\n return previewText;\n } else if (sender) {\n // Return HTML for the sender name + optional image\n return `\n
\n ${\n sender.profileImageUrl\n ? `\"${sender.name}\"`\n : \"\"\n }\n ${sender.name}\n
\n `;\n }\n return \"\";\n }\n\n /**\n * Clears all notifications from the container.\n *\n * @param {boolean} uiOnly - Whether to only clear the UI or also the notifications.\n */\n clearAllNotifications(uiOnly = false) {\n if (!this.notificationContainer) {\n return;\n }\n\n if (!uiOnly) {\n this.notifications = [];\n // Reset currentNewsIndex whenever we clear them out\n this.currentNewsIndex = 0;\n saveToGleapCache(this.unreadNotificationsKey, this.notifications);\n }\n\n while (this.notificationContainer.firstChild) {\n this.notificationContainer.removeChild(\n this.notificationContainer.firstChild\n );\n }\n }\n\n updateContainerStyle() {\n if (!this.notificationContainer) {\n return;\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const classLeft = \"gleap-notification-container--left\";\n const classNoButton = \"gleap-notification-container--no-button\";\n this.notificationContainer.classList.remove(classLeft);\n this.notificationContainer.classList.remove(classNoButton);\n\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_LEFT ||\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_BOTTOM_LEFT\n ) {\n this.notificationContainer.classList.add(classLeft);\n }\n\n if (GleapFeedbackButtonManager.getInstance().buttonHidden === null) {\n if (\n flowConfig.feedbackButtonPosition ===\n GleapFeedbackButtonManager.FEEDBACK_BUTTON_NONE\n ) {\n this.notificationContainer.classList.add(classNoButton);\n }\n } else {\n if (GleapFeedbackButtonManager.getInstance().buttonHidden) {\n this.notificationContainer.classList.add(classNoButton);\n }\n }\n\n this.notificationContainer.setAttribute(\n \"dir\",\n GleapTranslationManager.getInstance().isRTLLayout ? \"rtl\" : \"ltr\"\n );\n }\n}\n","import Gleap, { GleapFrameManager } from \"./Gleap\";\n\nexport default class GleapBannerManager {\n bannerUrl = \"https://outboundmedia.gleap.io\";\n bannerContainer = null;\n bannerData = null;\n\n // GleapBannerManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapBannerManager();\n }\n return this.instance;\n }\n\n constructor() {\n this.startCommunication();\n }\n\n setBannerUrl(url) {\n this.bannerUrl = url;\n }\n\n startCommunication() {\n // Add window message listener.\n window.addEventListener(\"message\", (event) => {\n if (!this.bannerUrl?.includes(event.origin)) {\n return;\n }\n\n try {\n const data = JSON.parse(event.data);\n\n if (data?.type !== \"BANNER\") {\n return;\n }\n\n if (data.name === \"banner-loaded\" && this.bannerData) {\n this.sendMessage({\n name: \"banner-data\",\n data: this.bannerData,\n });\n }\n if (data.name === \"banner-height\") {\n document.documentElement.style.setProperty(\n \"--gleap-margin-top\",\n data.data.height + \"px\"\n );\n }\n if (data.name === \"banner-data-set\") {\n document.body.classList.add(\"gleap-b-shown\");\n\n if (this.bannerData?.format === \"floating\") {\n document.body.classList.add(\"gleap-b-f\");\n }\n }\n if (data.name === \"banner-close\") {\n this.removeBannerUI();\n }\n if (data.name === \"start-conversation\") {\n Gleap.startBot(data.data?.botId);\n }\n if (data.name === \"start-custom-action\") {\n Gleap.triggerCustomAction(data.data?.action);\n }\n if (data.name === \"start-product-tour\") {\n Gleap.startProductTour(data.data?.tourId, true);\n }\n if (data.name === \"open-url\") {\n const url = data.data;\n const newTab = data.newTab ? true : false;\n GleapFrameManager.getInstance().urlHandler(url, newTab);\n }\n if (data.name === \"show-form\") {\n Gleap.startFeedbackFlow(data.data?.formId);\n }\n if (data.name === \"show-survey\") {\n Gleap.showSurvey(data.data?.formId, data.data?.surveyFormat);\n }\n if (data.name === \"show-news-article\") {\n Gleap.openNewsArticle(data.data?.articleId);\n }\n if (data.name === \"show-help-article\") {\n Gleap.openHelpCenterArticle(data.data?.articleId);\n }\n if (data.name === \"show-checklist\") {\n Gleap.startChecklist(\n data.data?.checklistId,\n true,\n data.data?.sharedKey\n );\n }\n } catch (exp) {}\n });\n }\n\n removeBannerUI() {\n if (this.bannerContainer) {\n document.body.removeChild(this.bannerContainer);\n this.bannerContainer = null;\n }\n\n document.body.classList.remove(\"gleap-b-shown\");\n document.body.classList.remove(\"gleap-b-f\");\n }\n\n /**\n * Injects the feedback button into the current DOM.\n */\n injectBannerUI(bannerData) {\n if (!document.body) {\n return false;\n }\n\n if (this.bannerContainer) {\n this.removeBannerUI();\n }\n\n this.bannerData = bannerData;\n\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-b\";\n elem.innerHTML = ``;\n document.body.appendChild(elem);\n this.bannerContainer = elem;\n }\n\n sendMessage(data) {\n try {\n const gleapBFrame = document.querySelector(\".gleap-b-frame\");\n if (gleapBFrame && gleapBFrame.contentWindow) {\n gleapBFrame.contentWindow.postMessage(\n JSON.stringify({\n ...data,\n type: \"banner\",\n }),\n \"*\"\n );\n }\n } catch (e) {}\n }\n\n showBanner(bannerData) {\n this.injectBannerUI(bannerData);\n }\n}\n","import Gleap, { GleapConfigManager, GleapFrameManager } from \"./Gleap\";\n\nexport default class GleapModalManager {\n modalUrl = \"https://outboundmedia.gleap.io/modal\";\n modalContainer = null;\n modalData = null;\n modalBackdropClickListener = null;\n\n // singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapModalManager();\n }\n return this.instance;\n }\n\n constructor() {\n this._listenForMessages();\n }\n\n setModalUrl(url) {\n this.modalUrl = url;\n }\n\n _listenForMessages() {\n window.addEventListener(\"message\", (event) => {\n if (!this.modalUrl?.includes(event.origin)) {\n return;\n }\n\n try {\n const data = JSON.parse(event.data);\n\n if (data?.type !== \"MODAL\") {\n return;\n }\n\n if (data.name === \"modal-loaded\" && this.modalData) {\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const primaryColor = flowConfig.color ? flowConfig.color : \"#485BFF\";\n const backgroundColor = flowConfig.backgroundColor\n ? flowConfig.backgroundColor\n : \"#FFFFFF\";\n\n this._postMessage({\n name: \"modal-data\",\n data: {\n ...this.modalData,\n primaryColor: primaryColor,\n backgroundColor: backgroundColor,\n },\n });\n }\n if (data.name === \"modal-height\") {\n const height = data?.data?.height;\n if (height) {\n // Set the height of the modal iframe\n const iframe =\n this.modalContainer.querySelector(\".gleap-modal-frame\");\n if (iframe) {\n iframe.style.height = `${height}px`;\n }\n }\n }\n if (data.name === \"modal-data-set\") {\n // TODO: Implement\n }\n if (data.name === \"modal-close\") {\n this.hideModal();\n }\n if (data.name === \"start-conversation\") {\n Gleap.startBot(data.data?.botId);\n }\n if (data.name === \"start-custom-action\") {\n Gleap.triggerCustomAction(data.data?.action);\n }\n if (data.name === \"start-product-tour\") {\n Gleap.startProductTour(data.data?.tourId, true);\n }\n if (data.name === \"open-url\") {\n const url = data.data;\n const newTab = data.newTab ? true : false;\n GleapFrameManager.getInstance().urlHandler(url, newTab);\n }\n if (data.name === \"show-form\") {\n Gleap.startFeedbackFlow(data.data?.formId);\n }\n if (data.name === \"show-survey\") {\n Gleap.showSurvey(data.data?.formId, data.data?.surveyFormat);\n }\n if (data.name === \"show-news-article\") {\n Gleap.openNewsArticle(data.data?.articleId);\n }\n if (data.name === \"show-help-article\") {\n Gleap.openHelpCenterArticle(data.data?.articleId);\n }\n if (data.name === \"show-checklist\") {\n Gleap.startChecklist(\n data.data?.checklistId,\n true,\n data.data?.sharedKey\n );\n }\n } catch (exp) {}\n });\n }\n\n _injectModalUI(modalData) {\n if (!document.body) return false;\n\n if (this.modalContainer) {\n this.hideModal();\n }\n\n this.modalData = modalData;\n\n const wrapper = document.createElement(\"div\");\n wrapper.className = \"gleap-modal-wrapper\";\n wrapper.innerHTML = `\n
\n
\n \n
\n `;\n document.body.appendChild(wrapper);\n this.modalContainer = wrapper;\n\n // Add on backdrop click listener\n this.modalBackdropClickListener = this.modalContainer\n .querySelector(\".gleap-modal-backdrop\")\n .addEventListener(\"click\", () => {\n if (this.modalData?.showCloseButton ?? true) {\n this.hideModal();\n }\n });\n\n // lock background scroll\n document.body.classList.add(\"gleap-modal-open\");\n }\n\n _postMessage(message) {\n try {\n const frame = this.modalContainer.querySelector(\".gleap-modal-frame\");\n if (frame?.contentWindow) {\n frame.contentWindow.postMessage(\n JSON.stringify({ ...message, type: \"modal\" }),\n this.modalUrl\n );\n }\n } catch (err) {}\n }\n\n showModal(modalData) {\n if (modalData && modalData.config) {\n this._injectModalUI(modalData.config);\n }\n }\n\n hideModal() {\n if (!this.modalContainer) return;\n\n if (this.modalBackdropClickListener) {\n this.modalContainer\n .querySelector(\".gleap-modal-backdrop\")\n .removeEventListener(\"click\", this.modalBackdropClickListener);\n }\n\n document.body.removeChild(this.modalContainer);\n this.modalContainer = null;\n document.body.classList.remove(\"gleap-modal-open\");\n }\n}\n","export default class GleapAudioManager {\n static audio;\n static settings = {\n play: true\n };\n\n static playSound(play) {\n this.settings.play = play;\n }\n\n static ping() {\n try {\n if (!this.settings.play) {\n return;\n }\n\n if (!this.audio) {\n this.audio = new Audio('https://js.gleap.io/res/ping.mp3');\n }\n\n const playPromise = this.audio.play();\n if (playPromise !== undefined) {\n playPromise.then(_ => { })\n .catch(error => { });\n }\n } catch (exp) { }\n }\n}\n","export default class GleapTagManager {\n tags = [];\n\n // GleapTagManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapTagManager();\n }\n return this.instance;\n }\n\n /**\n * Returns the tags\n * @returns {*}\n */\n getTags() {\n return this.tags;\n }\n\n /**\n * Sets the tags sent with every ticket.\n * @param {*} tags Array of strings\n */\n setTags(tags) {\n this.tags = tags;\n }\n}\n","/**\n * Returns the Tag of the element\n * @param { Object } element\n * @return { String }\n */\nexport function getID( el )\n{\n const id = el.getAttribute( 'id' );\n\n if( id !== null && id !== '')\n {\n // if the ID starts with a number or contains \":\" selecting with a hash will cause a DOMException\n return id.match(/(?:^\\d|:)/) ? `[id=\"${id}\"]` : '#' + id;\n }\n return null;\n}\n","/**\n * Get class names for an element\n *\n * @pararm { Element } el\n * @return { Array }\n */\nexport function getClasses( el )\n{\n if( !el.hasAttribute( 'class' ) )\n {\n return [];\n }\n\n try {\n let classList = Array.prototype.slice.call( el.classList )\n\n // return only the valid CSS selectors based on RegEx\n return classList.filter(item => !/^[a-z_-][a-z\\d_-]*$/i.test( item ) ? null : item );\n } catch (e) {\n let className = el.getAttribute( 'class' );\n\n // remove duplicate and leading/trailing whitespaces\n className = className.trim().replace( /\\s+/g, ' ' );\n\n // split into separate classnames\n return className.split( ' ' );\n }\n}\n\n/**\n * Returns the Class selectors of the element\n * @param { Object } element\n * @return { Array }\n */\nexport function getClassSelectors( el )\n{\n const classList = getClasses( el ).filter( Boolean );\n return classList.map( cl => `.${cl}` );\n}\n","/**\n * Recursively combinate items.\n * @param { Array } result\n * @param { Array } items\n * @param { Array } data\n * @param { Number } start\n * @param { Number } end\n * @param { Number } index\n * @param { Number } k\n */\nfunction kCombinations( result, items, data, start, end, index, k )\n{\n if( index === k )\n {\n result.push( data.slice( 0, index ).join( '' ) );\n return;\n }\n\n for( let i = start; i <= end && end - i + 1 >= k - index; ++i )\n {\n data[index] = items[i];\n kCombinations( result, items, data, i + 1, end, index + 1, k );\n }\n}\n\n/**\n * Returns all the possible selector combinations\n * @param { Array } items\n * @param { Number } k\n * @return { Array }\n */\nexport function getCombinations( items, k )\n{\n const result = [],\n n = items.length,\n data = [];\n\n for( var l = 1; l <= k; ++l )\n {\n kCombinations( result, items, data, 0, n - 1, 0, l );\n }\n\n return result;\n}\n","/**\n * Determines if the passed el is a DOM element\n */\nexport function isElement( el )\n{\n let isElem;\n\n if ( typeof HTMLElement === 'object' )\n {\n isElem = el instanceof HTMLElement;\n }\n else\n {\n isElem = !!el && ( typeof el === 'object' ) && el.nodeType === 1 && typeof el.nodeName === 'string';\n }\n return isElem;\n}\n","import { isElement } from './isElement';\n\n/**\n * Returns the selectors based on the position of the element relative to its siblings\n * @param { Object } element\n * @return { Array }\n */\nexport function getNthChild( element )\n{\n let counter = 0;\n let k;\n let sibling;\n const { parentNode } = element;\n\n if( Boolean( parentNode ) )\n {\n const { childNodes } = parentNode;\n const len = childNodes.length;\n for ( k = 0; k < len; k++ )\n {\n sibling = childNodes[ k ];\n if( isElement( sibling ) )\n {\n counter++;\n if( sibling === element )\n {\n return `:nth-child(${counter})`;\n }\n }\n }\n }\n return null;\n}\n","/**\n * Returns the Tag of the element\n * @param { Object } element\n * @return { String }\n */\nexport function getTag( el )\n{\n return el.tagName.toLowerCase().replace(/:/g, '\\\\:');\n}\n","/**\n * Checks if the selector is unique\n * @param { Object } element\n * @param { String } selector\n * @return { Array }\n */\nexport function isUnique( el, selector )\n{\n if( !Boolean( selector ) ) return false;\n const elems = el.ownerDocument.querySelectorAll( selector );\n return elems.length === 1 && elems[ 0 ] === el;\n}\n","/**\n * Expose `unique`\n */\n\nimport { getID } from './getID';\nimport { getClassSelectors } from './getClasses';\nimport { getCombinations } from './getCombinations';\nimport { getAttributes } from './getAttributes';\nimport { getNthChild } from './getNthChild';\nimport { getTag } from './getTag';\nimport { isUnique } from './isUnique';\nimport { getParents } from './getParents';\n\n\n/**\n * Returns all the selectors of the elmenet\n * @param { Object } element\n * @return { Object }\n */\nfunction getAllSelectors( el, selectors, attributesToIgnore )\n{\n const funcs =\n {\n 'Tag' : getTag,\n 'NthChild' : getNthChild,\n 'Attributes' : elem => getAttributes( elem, attributesToIgnore ),\n 'Class' : getClassSelectors,\n 'ID' : getID,\n };\n\n return selectors.reduce( ( res, next ) =>\n {\n res[ next ] = funcs[ next ]( el );\n return res;\n }, {} );\n}\n\n/**\n * Tests uniqueNess of the element inside its parent\n * @param { Object } element\n * @param { String } Selectors\n * @return { Boolean }\n */\nfunction testUniqueness( element, selector )\n{\n try {\n const { parentNode } = element;\n const elements = parentNode.querySelectorAll( selector );\n return elements.length === 1 && elements[ 0 ] === element;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tests all selectors for uniqueness and returns the first unique selector.\n * @param { Object } element\n * @param { Array } selectors\n * @return { String }\n */\nfunction getFirstUnique( element, selectors )\n{\n return selectors.find( testUniqueness.bind( null, element ) );\n}\n\n/**\n * Checks all the possible selectors of an element to find one unique and return it\n * @param { Object } element\n * @param { Array } items\n * @param { String } tag\n * @return { String }\n */\nfunction getUniqueCombination( element, items, tag )\n{\n let combinations = getCombinations( items, 3 ),\n firstUnique = getFirstUnique( element, combinations );\n\n if( Boolean( firstUnique ) )\n {\n return firstUnique;\n }\n\n if( Boolean( tag ) )\n {\n combinations = combinations.map( combination => tag + combination );\n firstUnique = getFirstUnique( element, combinations );\n\n if( Boolean( firstUnique ) )\n {\n return firstUnique;\n }\n }\n\n return null;\n}\n\n/**\n * Returns a uniqueSelector based on the passed options\n * @param { DOM } element\n * @param { Array } options\n * @return { String }\n */\nfunction getUniqueSelector( element, selectorTypes, attributesToIgnore, excludeRegex )\n{\n let foundSelector;\n\n const elementSelectors = getAllSelectors( element, selectorTypes, attributesToIgnore );\n\n if( excludeRegex && excludeRegex instanceof RegExp )\n {\n elementSelectors.ID = excludeRegex.test( elementSelectors.ID ) ? null : elementSelectors.ID;\n elementSelectors.Class = elementSelectors.Class.filter( className => !excludeRegex.test( className ) );\n }\n\n for( let selectorType of selectorTypes )\n {\n const { ID, Tag, Class : Classes, Attributes, NthChild } = elementSelectors;\n switch ( selectorType )\n {\n case 'ID' :\n if ( Boolean( ID ) && testUniqueness( element, ID ) )\n {\n return ID;\n }\n break;\n\n case 'Tag':\n if ( Boolean( Tag ) && testUniqueness( element, Tag ) )\n {\n return Tag;\n }\n break;\n\n case 'Class':\n if ( Boolean( Classes ) && Classes.length )\n {\n foundSelector = getUniqueCombination( element, Classes, Tag );\n if (foundSelector) {\n return foundSelector;\n }\n }\n break;\n\n case 'Attributes':\n if ( Boolean( Attributes ) && Attributes.length )\n {\n foundSelector = getUniqueCombination( element, Attributes, Tag );\n if ( foundSelector )\n {\n return foundSelector;\n }\n }\n break;\n\n case 'NthChild':\n if ( Boolean( NthChild ) )\n {\n return NthChild\n }\n }\n }\n return '*';\n}\n\n/**\n * Generate unique CSS selector for given DOM element\n *\n * @param {Element} el\n * @return {String}\n * @api private\n */\n\nexport default function unique( el, options={} )\n{\n const {\n selectorTypes = ['ID', 'Class', 'Tag', 'NthChild'],\n attributesToIgnore = ['id', 'class', 'length'],\n excludeRegex = null,\n } = options;\n const allSelectors = [];\n const parents = getParents( el );\n\n for( let elem of parents )\n {\n const selector = getUniqueSelector( elem, selectorTypes, attributesToIgnore, excludeRegex );\n if( Boolean( selector ) )\n {\n allSelectors.push( selector );\n }\n }\n\n const selectors = [];\n for( let it of allSelectors )\n {\n selectors.unshift( it );\n const selector = selectors.join( ' > ' );\n if( isUnique( el, selector ) )\n {\n return selector;\n }\n }\n\n return null;\n}\n","/**\n * Returns the Attribute selectors of the element\n * @param { DOM Element } element\n * @param { Array } array of attributes to ignore\n * @return { Array }\n */\nexport function getAttributes( el, attributesToIgnore = ['id', 'class', 'length'] )\n{\n const { attributes } = el;\n const attrs = [ ...attributes ];\n\n return attrs.reduce( ( sum, next ) =>\n {\n if ( ! ( attributesToIgnore.indexOf( next.nodeName ) > -1 ) )\n {\n sum.push( `[${next.nodeName}=\"${next.value}\"]` );\n }\n return sum;\n }, [] );\n}\n","import { isElement } from './isElement';\n\n/**\n * Returns all the element and all of its parents\n * @param { DOM Element }\n * @return { Array of DOM elements }\n */\nexport function getParents( el )\n{\n const parents = [];\n let currentElement = el;\n while( isElement( currentElement ) )\n {\n parents.push( currentElement );\n currentElement = currentElement.parentNode;\n }\n\n return parents;\n}\n","/**\n * Utility function to get the bounding rectangle of an element.\n * @param {HTMLElement} el - The target element.\n * @returns {Object} An object containing x, y, width, and height.\n */\nfunction getElementBounds(el) {\n const rect = el.getBoundingClientRect();\n return {\n x: window.pageXOffset + rect.left,\n y: window.pageYOffset + rect.top,\n width: el.offsetWidth,\n height: el.offsetHeight,\n };\n}\n\n/**\n * Class representing an overlay element.\n */\nclass ElementOverlay {\n /**\n * Create an ElementOverlay.\n * @param {Object} options - Configuration options.\n * @param {string} [options.className] - CSS class name for the overlay.\n * @param {Object} [options.style] - Style overrides for the overlay.\n */\n constructor(options) {\n // Create and style the overlay element.\n this.overlay = document.createElement(\"div\");\n this.overlay.className = options.className || \"_ext-element-overlay\";\n this.overlay.style.background =\n (options.style && options.style.background) || \"rgba(250, 240, 202, 0.2)\";\n this.overlay.style.borderColor =\n (options.style && options.style.borderColor) || \"#F95738\";\n this.overlay.style.borderStyle =\n (options.style && options.style.borderStyle) || \"solid\";\n this.overlay.style.borderRadius =\n (options.style && options.style.borderRadius) || \"1px\";\n this.overlay.style.borderWidth =\n (options.style && options.style.borderWidth) || \"1px\";\n this.overlay.style.boxSizing =\n (options.style && options.style.boxSizing) || \"border-box\";\n this.overlay.style.cursor =\n (options.style && options.style.cursor) || \"crosshair\";\n this.overlay.style.position =\n (options.style && options.style.position) || \"absolute\";\n this.overlay.style.zIndex =\n (options.style && options.style.zIndex) || \"2147483647\";\n this.overlay.style.margin =\n (options.style && options.style.margin) || \"0px\";\n this.overlay.style.padding =\n (options.style && options.style.padding) || \"0px\";\n\n // Create a container that will host a Shadow DOM.\n this.shadowContainer = document.createElement(\"div\");\n this.shadowContainer.className = \"_ext-element-overlay-container\";\n this.shadowContainer.style.position = \"absolute\";\n this.shadowContainer.style.top = \"0px\";\n this.shadowContainer.style.left = \"0px\";\n this.shadowContainer.style.margin = \"0px\";\n this.shadowContainer.style.padding = \"0px\";\n this.shadowRoot = this.shadowContainer.attachShadow({ mode: \"open\" });\n }\n\n /**\n * Adds the overlay to the DOM.\n * @param {Node} parent - The parent element.\n * @param {boolean} useShadowDOM - Whether to use Shadow DOM.\n */\n addToDOM(parent, useShadowDOM) {\n this.usingShadowDOM = useShadowDOM;\n if (useShadowDOM) {\n parent.insertBefore(this.shadowContainer, parent.firstChild);\n this.shadowRoot.appendChild(this.overlay);\n } else {\n parent.appendChild(this.overlay);\n }\n }\n\n /**\n * Removes the overlay from the DOM.\n */\n removeFromDOM() {\n this.setBounds({ x: 0, y: 0, width: 0, height: 0 });\n if (this.overlay.remove) {\n this.overlay.remove();\n } else if (this.overlay.parentNode) {\n this.overlay.parentNode.removeChild(this.overlay);\n }\n if (this.usingShadowDOM) {\n if (this.shadowContainer.remove) {\n this.shadowContainer.remove();\n } else if (this.shadowContainer.parentNode) {\n this.shadowContainer.parentNode.removeChild(this.shadowContainer);\n }\n }\n }\n\n /**\n * Enables pointer events on the overlay.\n */\n captureCursor() {\n this.overlay.style.pointerEvents = \"auto\";\n }\n\n /**\n * Disables pointer events on the overlay.\n */\n ignoreCursor() {\n this.overlay.style.pointerEvents = \"none\";\n }\n\n /**\n * Sets the position and size of the overlay.\n * @param {Object} bounds - The bounding box.\n * @param {number} bounds.x - The x-coordinate.\n * @param {number} bounds.y - The y-coordinate.\n * @param {number} bounds.width - The width.\n * @param {number} bounds.height - The height.\n */\n setBounds(bounds) {\n const { x, y, width, height } = bounds;\n this.overlay.style.left = x + \"px\";\n this.overlay.style.top = y + \"px\";\n this.overlay.style.width = width + \"px\";\n this.overlay.style.height = height + \"px\";\n }\n}\n\n/**\n * Class representing an element picker that uses the overlay.\n */\nclass ElementPicker {\n /**\n * Create an ElementPicker.\n * @param {Object} [overlayOptions] - Options to pass to ElementOverlay.\n */\n constructor(overlayOptions) {\n this.active = false;\n this.overlay = new ElementOverlay(overlayOptions || {});\n this.handleMouseMove = this.handleMouseMove.bind(this);\n this.handleClick = this.handleClick.bind(this);\n this.tick = this.tick.bind(this);\n }\n\n /**\n * Starts the element picking process.\n * @param {Object} options - Picker options.\n * @param {Node} [options.parentElement] - Parent element to attach the overlay.\n * @param {boolean} [options.useShadowDOM=true] - Whether to use Shadow DOM.\n * @param {Function} [options.onClick] - Callback invoked on click.\n * @param {Function} [options.onHover] - Callback invoked on hover.\n * @param {Function} [options.elementFilter] - Function to filter elements.\n * @returns {boolean} True if started successfully, false if already active.\n */\n start(options) {\n if (this.active) {\n return false;\n }\n this.active = true;\n this.options = options;\n\n document.addEventListener(\"mousemove\", this.handleMouseMove, true);\n document.addEventListener(\"click\", this.handleClick, true);\n\n const parentElement = options.parentElement || document.body;\n const useShadowDOM =\n options.useShadowDOM !== undefined ? options.useShadowDOM : true;\n this.overlay.addToDOM(parentElement, useShadowDOM);\n this.tick();\n\n return true;\n }\n\n /**\n * Stops the element picking process.\n */\n stop() {\n this.active = false;\n this.options = undefined;\n\n document.removeEventListener(\"mousemove\", this.handleMouseMove, true);\n document.removeEventListener(\"click\", this.handleClick, true);\n\n this.overlay.removeFromDOM();\n this.target = undefined;\n this.mouseX = undefined;\n this.mouseY = undefined;\n\n if (this.tickReq) {\n window.cancelAnimationFrame(this.tickReq);\n }\n }\n\n /**\n * Handles mouse move events.\n * @param {MouseEvent} event - The mousemove event.\n */\n handleMouseMove(event) {\n this.mouseX = event.clientX;\n this.mouseY = event.clientY;\n }\n\n /**\n * Handles click events.\n * @param {MouseEvent} event - The click event.\n */\n handleClick(event) {\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n\n if (this.target && this.options && this.options.onClick) {\n this.options.onClick(this.target);\n }\n }\n\n /**\n * The tick function that continuously updates the target element.\n */\n tick() {\n this.updateTarget();\n this.tickReq = window.requestAnimationFrame(this.tick);\n }\n\n /**\n * Updates the target element based on the current mouse position.\n */\n updateTarget() {\n if (this.mouseX === undefined || this.mouseY === undefined) {\n return;\n }\n\n // Temporarily ignore the overlay's pointer events to detect the underlying element.\n this.overlay.ignoreCursor();\n const elAtCursor = document.elementFromPoint(this.mouseX, this.mouseY);\n const newTarget = elAtCursor;\n this.overlay.captureCursor();\n\n // If the target hasn't changed, do nothing.\n if (!newTarget || newTarget === this.target) {\n return;\n }\n\n // If an element filter is provided and the new target doesn't match, clear the target.\n if (this.options && this.options.elementFilter) {\n if (!this.options.elementFilter(newTarget)) {\n this.target = undefined;\n this.overlay.setBounds({ x: 0, y: 0, width: 0, height: 0 });\n return;\n }\n }\n\n this.target = newTarget;\n const bounds = getElementBounds(newTarget);\n this.overlay.setBounds(bounds);\n\n if (this.options && this.options.onHover) {\n this.options.onHover(newTarget);\n }\n }\n}\n\nexport default ElementPicker;\n","import unique from \"./unique-selector/src/unique-selector\";\nimport ElementPicker from \"./ElementPicker\";\n\nclass GleapAdminHelper {\n picker = null;\n onElementPicked = null;\n\n stopPicker = () => {\n if (this.picker) {\n this.picker.stop();\n this.picker = null;\n return;\n }\n };\n\n startPicker = () => {\n this.stopPicker();\n var self = this;\n\n const style = {\n borderColor: \"#2142E7\",\n background: \"transparent\",\n borderWidth: \"4px\",\n borderRadius: \"5px\",\n };\n this.picker = new ElementPicker({ style });\n this.picker.start({\n useShadowDOM: false,\n onClick: (el) => {\n try {\n let selector;\n const tourId = el.getAttribute(\"data-gleap-tour\");\n if (tourId) {\n selector = `[data-gleap-tour=\"${tourId}\"]`;\n } else {\n selector = unique(el);\n }\n\n self.onElementPicked && self.onElementPicked(selector);\n } catch (e) {\n console.error(\"Error while getting unique selector\", e);\n }\n },\n elementFilter: (el) => {\n if (\n el.classList.contains(\"gleap-admin-collapse-ui\") ||\n el.closest(\".gleap-admin-collapse-ui\")\n ) {\n return false;\n }\n return true;\n },\n });\n };\n\n setMode = (mode) => {\n this.mode = mode;\n if (mode === \"navigate\") {\n this.stopPicker();\n }\n if (mode === \"picker\") {\n this.startPicker();\n }\n };\n}\n\nexport default GleapAdminHelper;\n","import { loadIcon } from \"./UI\";\nimport GleapAdminHelper from \"./GleapAdminHelper\";\nimport { GleapProductTours } from \"./Gleap\";\n\nexport default class GleapAdminManager {\n libraryInstance = null;\n lastUrl = undefined;\n injectedFrame = false;\n gleapFrameContainer = null;\n gleapCollapseUI = null;\n injectedCollapseUI = false;\n gleapFrame = null;\n configData = null;\n adminHelper = null;\n status = \"navigate\";\n\n // GleapAdminManager singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapAdminManager();\n }\n\n return this.instance;\n }\n\n logCurrentPage() {\n const currentUrl = window.location.href;\n if (currentUrl && currentUrl !== this.lastUrl) {\n this.lastUrl = currentUrl;\n\n this.sendMessageToTourBuilder({\n name: \"page-changed\",\n data: {\n page: currentUrl,\n },\n });\n }\n }\n\n startPageListener() {\n const self = this;\n setInterval(function () {\n self.logCurrentPage();\n }, 1000);\n }\n\n initAdminHelper() {\n const self = this;\n\n // Disable product tours.\n GleapProductTours.getInstance().disable();\n\n self.adminHelper = new GleapAdminHelper();\n\n try {\n self.adminHelper.onElementPicked = (selector) => {\n self.toggleCollapseUI(true);\n self.sendMessageToTourBuilder({\n name: \"element-picked\",\n data: {\n selector,\n },\n });\n };\n } catch (e) {\n console.log(e);\n }\n\n self.injectFrame();\n self.injectCollapseUI();\n self.setFrameHeight(\"loading\");\n }\n\n setFrameHeight(state) {\n if (this.gleapFrameContainer) {\n var height = \"\";\n if (state === \"picker\" || state === \"navigate\") {\n height = \"65px\";\n } else if (state === \"editor\") {\n height = \"100vh\";\n } else {\n height = \"0px\";\n }\n this.gleapFrameContainer.style.height = height;\n }\n }\n\n start() {\n if (typeof window === \"undefined\") {\n return;\n }\n\n if (window.gleapAdminDisabled) {\n return;\n }\n\n var self = this;\n\n // Add window message listener.\n window.addEventListener(\"message\", (event) => {\n if (event.origin !== \"https://app.gleap.io\") {\n return;\n }\n\n try {\n const data = JSON.parse(event.data);\n\n if (data.type === \"admin\") {\n if (data.name === \"load\") {\n self.configData = data.data;\n self.initAdminHelper();\n }\n\n if (data.name === \"smartlink-search-result\") {\n this.sendMessageToTourBuilder({\n name: \"smartlink-search-result\",\n data: data.data,\n });\n }\n\n if (data.name === \"translate-complete\") {\n this.sendMessageToTourBuilder({\n name: \"translate-complete\",\n data: data.data,\n });\n }\n }\n\n if (data.type === \"tourbuilder\") {\n if (data.name === \"loaddata\") {\n this.sendMessageToTourBuilder({\n name: \"data\",\n data: {\n ...self.configData,\n currentPage: window.location.href,\n },\n });\n }\n\n if (data.name === \"highlight-element\") {\n // Cleanup.\n document\n .querySelectorAll(\".gleap-admin-highlight\")\n .forEach((el) => {\n el.classList.remove(\"gleap-admin-highlight\");\n });\n\n // Find the element and highlight it.\n if (data?.data?.selector) {\n const element = document.querySelector(data?.data?.selector);\n if (element) {\n element.classList.add(\"gleap-admin-highlight\");\n }\n }\n }\n\n if (data.name === \"smartlink-search\") {\n this.sendMessage({\n name: \"smartlink-search\",\n data: data.data,\n });\n }\n\n if (data.name === \"product-tour-started\") {\n this.sendMessage({\n name: \"product-tour-started\",\n data: data.data,\n });\n }\n\n if (data.name === \"translate\") {\n this.sendMessage({\n name: \"translate\",\n data: data.data,\n });\n }\n\n if (data.name === \"save\") {\n this.sendMessage({\n name: \"save\",\n data: data.data,\n });\n }\n\n if (data.name === \"update-steps\") {\n this.sendMessage({\n name: \"update-steps\",\n data: data.data,\n });\n }\n\n if (data.name === \"click\") {\n try {\n document.querySelector(data.data.selector).click();\n } catch (e) {\n console.log(e);\n }\n }\n\n if (data.name === \"status-changed\") {\n self.status = data.data;\n this.setFrameHeight(self.status);\n self.adminHelper.stopPicker();\n\n if (self.status === \"picker\") {\n self.adminHelper.startPicker();\n }\n }\n }\n } catch (exp) {}\n });\n\n this.sendMessage({\n name: \"init\",\n });\n\n this.startPageListener();\n }\n\n sendMessage(data) {\n try {\n if (window && window.opener) {\n window.opener.postMessage(\n JSON.stringify({\n ...data,\n type: \"admin\",\n }),\n \"*\"\n );\n }\n } catch (e) {}\n }\n\n sendMessageToTourBuilder(data) {\n try {\n if (this.gleapFrame && this.gleapFrame.contentWindow) {\n this.gleapFrame.contentWindow.postMessage(\n JSON.stringify({\n ...data,\n type: \"tourbuilder\",\n }),\n \"*\"\n );\n }\n } catch (e) {}\n }\n\n toggleCollapseUI = (onlyIfActive = false) => {\n const COLLAPSE_UI_ACTIVE_CLASS = \"gleap-admin-collapse-ui-active\";\n const FRAME_CONTAINER_ACTIVE_CLASS = \"gleap-admin-frame-container-active\";\n\n // Helper function to check if an element has an active class\n const isActive = (element, activeClass) =>\n element && element.classList.contains(activeClass);\n\n // Check if onlyIfActive is true and if the UI elements are already inactive\n if (\n onlyIfActive &&\n (!isActive(this.gleapCollapseUI, COLLAPSE_UI_ACTIVE_CLASS) ||\n !isActive(this.gleapFrameContainer, FRAME_CONTAINER_ACTIVE_CLASS))\n ) {\n return; // Return early without toggling the UI\n }\n\n // Toggle the UI elements\n if (this.gleapCollapseUI) {\n this.gleapCollapseUI.classList.toggle(COLLAPSE_UI_ACTIVE_CLASS);\n }\n if (this.gleapFrameContainer) {\n this.gleapFrameContainer.classList.toggle(FRAME_CONTAINER_ACTIVE_CLASS);\n }\n };\n\n injectCollapseUI = () => {\n if (this.injectedCollapseUI) {\n return;\n }\n this.injectedCollapseUI = true;\n\n // Inject widget HTML.\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-admin-collapse-ui\";\n elem.innerHTML = `
\n ${loadIcon(\"arrowdown\")}\n
`;\n document.body.appendChild(elem);\n\n this.gleapCollapseUI = elem;\n\n elem.addEventListener(\"click\", (e) => {\n e.stopImmediatePropagation();\n e.stopPropagation();\n e.preventDefault();\n\n this.toggleCollapseUI();\n });\n };\n\n injectFrame = () => {\n if (this.injectedFrame) {\n return;\n }\n this.injectedFrame = true;\n\n // Inject widget HTML.\n var elem = document.createElement(\"div\");\n elem.className = \"gleap-admin-frame-container\";\n elem.innerHTML = ``;\n document.body.appendChild(elem);\n\n this.gleapFrameContainer = elem;\n this.gleapFrame = document.querySelector(\".gleap-admin-frame\");\n };\n}\n","const GleapTours = (function () {\n \"use strict\";\n let currentConfig = {};\n function configure(config = {}) {\n currentConfig = {\n animate: true,\n allowClose: true,\n overlayOpacity: 0.7,\n smoothScroll: false,\n disableActiveInteraction: false,\n showProgress: false,\n stagePadding: 10,\n stageRadius: 5,\n popoverOffset: 10,\n showButtons: [\"next\", \"previous\", \"close\"],\n disableButtons: [],\n overlayColor: \"#000\",\n ...config,\n };\n }\n function getConfig(key) {\n return key ? currentConfig[key] : currentConfig;\n }\n function easeInOutQuad(elapsed, initialValue, amountOfChange, duration) {\n if ((elapsed /= duration / 2) < 1) {\n return (amountOfChange / 2) * elapsed * elapsed + initialValue;\n }\n return (\n (-amountOfChange / 2) * (--elapsed * (elapsed - 2) - 1) + initialValue\n );\n }\n function getFocusableElements(parentEls) {\n const focusableQuery =\n 'a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type=\"text\"]:not([disabled]), input[type=\"radio\"]:not([disabled]), input[type=\"checkbox\"]:not([disabled]), select:not([disabled])';\n return parentEls\n .flatMap((parentEl) => {\n const isParentFocusable = parentEl.matches(focusableQuery);\n const focusableEls = Array.from(\n parentEl.querySelectorAll(focusableQuery)\n );\n return [...(isParentFocusable ? [parentEl] : []), ...focusableEls];\n })\n .filter((el) => {\n return (\n getComputedStyle(el).pointerEvents !== \"none\" && isElementVisible(el)\n );\n });\n }\n function bringInView(element) {\n if (!element || isElementInView(element)) {\n return;\n }\n const shouldSmoothScroll = getConfig(\"smoothScroll\");\n element.scrollIntoView({\n // Removing the smooth scrolling for elements which exist inside the scrollable parent\n // This was causing the highlight to not properly render\n behavior:\n !shouldSmoothScroll || hasScrollableParent(element) ? \"auto\" : \"smooth\",\n inline: \"center\",\n block: \"center\",\n });\n }\n function hasScrollableParent(e) {\n if (!e || !e.parentElement) {\n return;\n }\n const parent = e.parentElement;\n return parent.scrollHeight > parent.clientHeight;\n }\n function isElementInView(element) {\n const rect = element.getBoundingClientRect();\n return (\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <=\n (window.innerHeight || document.documentElement.clientHeight) &&\n rect.right <= (window.innerWidth || document.documentElement.clientWidth)\n );\n }\n function isElementVisible(el) {\n return !!(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\n }\n let currentState = {};\n function setState(key, value) {\n currentState[key] = value;\n }\n function getState(key) {\n return key ? currentState[key] : currentState;\n }\n function resetState() {\n currentState = {};\n }\n let registeredListeners = {};\n function listen(hook, callback) {\n registeredListeners[hook] = callback;\n }\n function emit(hook) {\n var _a;\n (_a = registeredListeners[hook]) == null\n ? void 0\n : _a.call(registeredListeners);\n }\n function destroyEmitter() {\n registeredListeners = {};\n }\n function transitionStage(elapsed, duration, from, to) {\n let activeStagePosition = getState(\"__activeStagePosition\");\n const fromDefinition = activeStagePosition\n ? activeStagePosition\n : from.getBoundingClientRect();\n const toDefinition = to.getBoundingClientRect();\n const x = easeInOutQuad(\n elapsed,\n fromDefinition.x,\n toDefinition.x - fromDefinition.x,\n duration\n );\n const y = easeInOutQuad(\n elapsed,\n fromDefinition.y,\n toDefinition.y - fromDefinition.y,\n duration\n );\n const width = easeInOutQuad(\n elapsed,\n fromDefinition.width,\n toDefinition.width - fromDefinition.width,\n duration\n );\n const height = easeInOutQuad(\n elapsed,\n fromDefinition.height,\n toDefinition.height - fromDefinition.height,\n duration\n );\n activeStagePosition = {\n x,\n y,\n width,\n height,\n };\n renderOverlay(activeStagePosition);\n setState(\"__activeStagePosition\", activeStagePosition);\n }\n function trackActiveElement(element) {\n if (!element) {\n return;\n }\n const definition = element.getBoundingClientRect();\n const activeStagePosition = {\n x: definition.x,\n y: definition.y,\n width: definition.width,\n height: definition.height,\n };\n setState(\"__activeStagePosition\", activeStagePosition);\n renderOverlay(activeStagePosition);\n }\n function refreshOverlay() {\n const activeStagePosition = getState(\"__activeStagePosition\");\n const overlaySvg = getState(\"__overlaySvg\");\n if (!activeStagePosition) {\n return;\n }\n if (!overlaySvg) {\n console.warn(\"No stage svg found.\");\n return;\n }\n const windowX = window.innerWidth;\n const windowY = window.innerHeight;\n overlaySvg.setAttribute(\"viewBox\", `0 0 ${windowX} ${windowY}`);\n }\n function mountOverlay(stagePosition) {\n const overlaySvg = createOverlaySvg(stagePosition);\n document.body.appendChild(overlaySvg);\n onDriverClick(overlaySvg, (e) => {\n const target = e.target;\n if (target.tagName !== \"path\") {\n return;\n }\n emit(\"overlayClick\");\n });\n setState(\"__overlaySvg\", overlaySvg);\n }\n function renderOverlay(stagePosition) {\n const overlaySvg = getState(\"__overlaySvg\");\n if (!overlaySvg) {\n mountOverlay(stagePosition);\n return;\n }\n const pathElement = overlaySvg.firstElementChild;\n if ((pathElement == null ? void 0 : pathElement.tagName) !== \"path\") {\n throw new Error(\"no path element found in stage svg\");\n }\n pathElement.setAttribute(\"d\", generateStageSvgPathString(stagePosition));\n }\n function createOverlaySvg(stage) {\n const windowX = window.innerWidth;\n const windowY = window.innerHeight;\n const svg = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n svg.classList.add(\"gleap-tour-overlay\", \"gleap-tour-overlay-animated\");\n svg.setAttribute(\"viewBox\", `0 0 ${windowX} ${windowY}`);\n svg.setAttribute(\"xmlSpace\", \"preserve\");\n svg.setAttribute(\"xmlnsXlink\", \"http://www.w3.org/1999/xlink\");\n svg.setAttribute(\"version\", \"1.1\");\n svg.setAttribute(\"preserveAspectRatio\", \"xMinYMin slice\");\n svg.style.fillRule = \"evenodd\";\n svg.style.clipRule = \"evenodd\";\n svg.style.strokeLinejoin = \"round\";\n svg.style.strokeMiterlimit = \"2\";\n svg.style.zIndex = \"10000\";\n svg.style.position = \"fixed\";\n svg.style.top = \"0\";\n svg.style.left = \"0\";\n svg.style.width = \"100%\";\n svg.style.height = \"100%\";\n const stagePath = document.createElementNS(\n \"http://www.w3.org/2000/svg\",\n \"path\"\n );\n stagePath.setAttribute(\"d\", generateStageSvgPathString(stage));\n stagePath.style.fill = getConfig(\"overlayColor\") || \"rgb(0,0,0)\";\n stagePath.style.opacity = `${getConfig(\"overlayOpacity\")}`;\n stagePath.style.pointerEvents = \"auto\";\n stagePath.style.cursor = \"auto\";\n svg.appendChild(stagePath);\n return svg;\n }\n function generateStageSvgPathString(stage) {\n const windowX = window.innerWidth;\n const windowY = window.innerHeight;\n const stagePadding = getConfig(\"stagePadding\") || 0;\n const stageRadius = getConfig(\"stageRadius\") || 0;\n const stageWidth = stage.width + stagePadding * 2;\n const stageHeight = stage.height + stagePadding * 2;\n const limitedRadius = Math.min(\n stageRadius,\n stageWidth / 2,\n stageHeight / 2\n );\n const normalizedRadius = Math.floor(Math.max(limitedRadius, 0));\n const highlightBoxX = stage.x - stagePadding + normalizedRadius;\n const highlightBoxY = stage.y - stagePadding;\n const highlightBoxWidth = stageWidth - normalizedRadius * 2;\n const highlightBoxHeight = stageHeight - normalizedRadius * 2;\n return `M${windowX},0L0,0L0,${windowY}L${windowX},${windowY}L${windowX},0Z\n M${highlightBoxX},${highlightBoxY} h${highlightBoxWidth} a${normalizedRadius},${normalizedRadius} 0 0 1 ${normalizedRadius},${normalizedRadius} v${highlightBoxHeight} a${normalizedRadius},${normalizedRadius} 0 0 1 -${normalizedRadius},${normalizedRadius} h-${highlightBoxWidth} a${normalizedRadius},${normalizedRadius} 0 0 1 -${normalizedRadius},-${normalizedRadius} v-${highlightBoxHeight} a${normalizedRadius},${normalizedRadius} 0 0 1 ${normalizedRadius},-${normalizedRadius} z`;\n }\n function destroyOverlay() {\n const overlaySvg = getState(\"__overlaySvg\");\n if (overlaySvg) {\n overlaySvg.remove();\n }\n }\n function mountDummyElement() {\n const existingDummy = document.getElementById(\"gleap-tour-dummy-element\");\n if (existingDummy) {\n return existingDummy;\n }\n let element = document.createElement(\"div\");\n element.id = \"gleap-tour-dummy-element\";\n element.style.width = \"0\";\n element.style.height = \"0\";\n element.style.pointerEvents = \"none\";\n element.style.opacity = \"0\";\n element.style.position = \"fixed\";\n element.style.top = \"50%\";\n element.style.left = \"50%\";\n document.body.appendChild(element);\n return element;\n }\n function highlight(step, attemptTime = 5000) {\n const { element } = step;\n let elemObj = element;\n if (typeof elemObj === \"string\") {\n try {\n elemObj = document.querySelector(element);\n } catch (error) {\n // This will escape colons within IDs but not affect pseudo-classes or other valid uses of colons\n let refactoredElement = element.replace(\n /(#[^#\\s]+)/g,\n function (match) {\n return match.replace(/:/g, \"\\\\:\");\n }\n );\n elemObj = document.querySelector(refactoredElement);\n }\n }\n if (element && !elemObj && attemptTime >= 0) {\n setTimeout(() => {\n hidePopover();\n highlight(step, attemptTime - 100);\n }, 100);\n\n return;\n }\n\n if (!elemObj) {\n if (step.mode === \"INPUT\" || step.mode === \"CLICK\") {\n return getConfig(\"onElementNotFound\")(step);\n }\n }\n\n if (!elemObj) {\n elemObj = mountDummyElement();\n }\n\n transferHighlight(elemObj, step);\n }\n function refreshActiveHighlight() {\n const activeHighlight = getState(\"__activeElement\");\n const activeStep = getState(\"__activeStep\");\n if (!activeHighlight) {\n return;\n }\n trackActiveElement(activeHighlight);\n refreshOverlay();\n repositionPopover(activeHighlight, activeStep);\n }\n function transferHighlight(toElement, toStep) {\n const duration = 400;\n const start = Date.now();\n const fromStep = getState(\"__activeStep\");\n const fromElement = getState(\"__activeElement\") || toElement;\n const isFirstHighlight = !fromElement || fromElement === toElement;\n const isToDummyElement = toElement.id === \"gleap-tour-dummy-element\";\n const isFromDummyElement = fromElement.id === \"gleap-tour-dummy-element\";\n const isAnimatedTour = getConfig(\"animate\");\n const highlightStartedHook =\n toStep.onHighlightStarted || getConfig(\"onHighlightStarted\");\n const highlightedHook =\n (toStep == null ? void 0 : toStep.onHighlighted) ||\n getConfig(\"onHighlighted\");\n const deselectedHook =\n (fromStep == null ? void 0 : fromStep.onDeselected) ||\n getConfig(\"onDeselected\");\n const config = getConfig();\n const state = getState();\n if (!isFirstHighlight && deselectedHook) {\n deselectedHook(isFromDummyElement ? void 0 : fromElement, fromStep, {\n config,\n state,\n });\n }\n if (highlightStartedHook) {\n highlightStartedHook(isToDummyElement ? void 0 : toElement, toStep, {\n config,\n state,\n });\n }\n const hasDelayedPopover = !isFirstHighlight && isAnimatedTour;\n let isPopoverRendered = false;\n hidePopover();\n setState(\"previousStep\", fromStep);\n setState(\"previousElement\", fromElement);\n setState(\"activeStep\", toStep);\n setState(\"activeElement\", toElement);\n const animate = () => {\n const transitionCallback = getState(\"__transitionCallback\");\n if (transitionCallback !== animate) {\n return;\n }\n const elapsed = Date.now() - start;\n const timeRemaining = duration - elapsed;\n const isHalfwayThrough = timeRemaining <= duration / 2;\n if (\n toStep.popover &&\n isHalfwayThrough &&\n !isPopoverRendered &&\n hasDelayedPopover\n ) {\n renderPopover(toElement, toStep);\n isPopoverRendered = true;\n }\n if (getConfig(\"animate\") && elapsed < duration) {\n transitionStage(elapsed, duration, fromElement, toElement);\n } else {\n trackActiveElement(toElement);\n if (highlightedHook) {\n highlightedHook(isToDummyElement ? void 0 : toElement, toStep, {\n config: getConfig(),\n state: getState(),\n });\n }\n setState(\"__transitionCallback\", void 0);\n setState(\"__previousStep\", fromStep);\n setState(\"__previousElement\", fromElement);\n setState(\"__activeStep\", toStep);\n setState(\"__activeElement\", toElement);\n }\n window.requestAnimationFrame(animate);\n };\n setState(\"__transitionCallback\", animate);\n window.requestAnimationFrame(animate);\n bringInView(toElement);\n if (!hasDelayedPopover && toStep.popover) {\n renderPopover(toElement, toStep);\n }\n fromElement.classList.remove(\n \"gleap-tour-active-element\",\n \"gleap-tour-no-interaction\"\n );\n fromElement.removeAttribute(\"aria-haspopup\");\n fromElement.removeAttribute(\"aria-expanded\");\n fromElement.removeAttribute(\"aria-controls\");\n const disableActiveInteraction =\n toStep.disableActiveInteraction ??\n getConfig(\"disableActiveInteraction\") ??\n false;\n if (disableActiveInteraction) {\n toElement.classList.add(\"gleap-tour-no-interaction\");\n }\n toElement.classList.add(\"gleap-tour-active-element\");\n toElement.setAttribute(\"aria-haspopup\", \"dialog\");\n toElement.setAttribute(\"aria-expanded\", \"true\");\n toElement.setAttribute(\"aria-controls\", \"gleap-tour-popover-content\");\n }\n function destroyHighlight() {\n var _a;\n (_a = document.getElementById(\"gleap-tour-dummy-element\")) == null\n ? void 0\n : _a.remove();\n document\n .querySelectorAll(\".gleap-tour-active-element\")\n .forEach((element) => {\n element.classList.remove(\n \"gleap-tour-active-element\",\n \"gleap-tour-no-interaction\"\n );\n element.removeAttribute(\"aria-haspopup\");\n element.removeAttribute(\"aria-expanded\");\n element.removeAttribute(\"aria-controls\");\n });\n }\n function requireRefresh() {\n const resizeTimeout = getState(\"__resizeTimeout\");\n if (resizeTimeout) {\n window.cancelAnimationFrame(resizeTimeout);\n }\n setState(\n \"__resizeTimeout\",\n window.requestAnimationFrame(refreshActiveHighlight)\n );\n }\n function trapFocus(e) {\n var _a;\n const isActivated = getState(\"isInitialized\");\n if (!isActivated) {\n return;\n }\n const isTabKey = e.key === \"Tab\" || e.keyCode === 9;\n if (!isTabKey) {\n return;\n }\n const activeElement = getState(\"__activeElement\");\n const popoverEl = (_a = getState(\"popover\")) == null ? void 0 : _a.wrapper;\n const focusableEls = getFocusableElements([\n ...(popoverEl ? [popoverEl] : []),\n ...(activeElement ? [activeElement] : []),\n ]);\n const firstFocusableEl = focusableEls[0];\n const lastFocusableEl = focusableEls[focusableEls.length - 1];\n e.preventDefault();\n if (e.shiftKey) {\n const previousFocusableEl =\n focusableEls[focusableEls.indexOf(document.activeElement) - 1] ||\n lastFocusableEl;\n previousFocusableEl == null ? void 0 : previousFocusableEl.focus();\n } else {\n const nextFocusableEl =\n focusableEls[focusableEls.indexOf(document.activeElement) + 1] ||\n firstFocusableEl;\n nextFocusableEl == null ? void 0 : nextFocusableEl.focus();\n }\n }\n function onKeyup(e) {\n var _a;\n const allowKeyboardControl =\n (_a = getConfig(\"allowKeyboardControl\")) != null ? _a : true;\n if (!allowKeyboardControl) {\n return;\n }\n if (e.key === \"Escape\") {\n emit(\"escapePress\");\n } else if (e.key === \"ArrowRight\") {\n emit(\"arrowRightPress\");\n } else if (e.key === \"ArrowLeft\") {\n emit(\"arrowLeftPress\");\n }\n }\n function onDriverClick(element, listener, shouldPreventDefault) {\n const listenerWrapper = (e, listener2) => {\n const target = e.target;\n if (!element.contains(target)) {\n return;\n }\n if (!shouldPreventDefault || shouldPreventDefault(target)) {\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n listener2 == null ? void 0 : listener2(e);\n };\n const useCapture = true;\n document.addEventListener(\"pointerdown\", listenerWrapper, useCapture);\n document.addEventListener(\"mousedown\", listenerWrapper, useCapture);\n document.addEventListener(\"pointerup\", listenerWrapper, useCapture);\n document.addEventListener(\"mouseup\", listenerWrapper, useCapture);\n document.addEventListener(\n \"click\",\n (e) => {\n listenerWrapper(e, listener);\n },\n useCapture\n );\n }\n function initEvents() {\n window.addEventListener(\"keyup\", onKeyup, false);\n window.addEventListener(\"keydown\", trapFocus, false);\n window.addEventListener(\"resize\", requireRefresh);\n window.addEventListener(\"scroll\", requireRefresh);\n }\n function destroyEvents() {\n window.removeEventListener(\"keyup\", onKeyup);\n window.removeEventListener(\"resize\", requireRefresh);\n window.removeEventListener(\"scroll\", requireRefresh);\n }\n function hidePopover() {\n const popover = getState(\"popover\");\n if (!popover) {\n return;\n }\n popover.wrapper.style.display = \"none\";\n }\n function renderPopover(element, step) {\n var _a, _b;\n let popover = getState(\"popover\");\n if (popover) {\n document.body.removeChild(popover.wrapper);\n }\n popover = createPopover();\n document.body.appendChild(popover.wrapper);\n const {\n title,\n description,\n showButtons,\n disableButtons,\n showProgress,\n nextBtnText = getConfig(\"nextBtnText\") || \"Next\",\n prevBtnText = getConfig(\"prevBtnText\") || \"Previous\",\n progressText = getConfig(\"progressText\") || \"{current} of {total}\",\n } = step.popover || {};\n popover.nextButton.innerHTML = nextBtnText;\n popover.previousButton.innerHTML = prevBtnText;\n popover.progress.innerHTML = progressText;\n if (title) {\n popover.title.innerHTML = title;\n popover.title.style.display = \"block\";\n } else {\n popover.title.style.display = \"none\";\n }\n if (description) {\n popover.description.innerHTML = description;\n popover.description.style.display = \"block\";\n } else {\n popover.description.style.display = \"none\";\n }\n const showButtonsConfig = showButtons || getConfig(\"showButtons\");\n const showProgressConfig =\n showProgress || getConfig(\"showProgress\") || false;\n const showFooter =\n (showButtonsConfig == null\n ? void 0\n : showButtonsConfig.includes(\"next\")) ||\n (showButtonsConfig == null\n ? void 0\n : showButtonsConfig.includes(\"previous\")) ||\n showProgressConfig;\n popover.closeButton.style.display = showButtonsConfig.includes(\"close\")\n ? \"block\"\n : \"none\";\n if (showFooter) {\n popover.footer.style.display = \"flex\";\n popover.progress.style.display = showProgressConfig ? \"block\" : \"none\";\n popover.nextButton.style.display = showButtonsConfig.includes(\"next\")\n ? \"block\"\n : \"none\";\n popover.previousButton.style.display = showButtonsConfig.includes(\n \"previous\"\n )\n ? \"block\"\n : \"none\";\n } else {\n popover.footer.style.display = \"none\";\n }\n const disabledButtonsConfig =\n disableButtons || getConfig(\"disableButtons\") || [];\n if (\n disabledButtonsConfig == null\n ? void 0\n : disabledButtonsConfig.includes(\"next\")\n ) {\n popover.nextButton.disabled = true;\n popover.nextButton.classList.add(\"gleap-tour-popover-btn-disabled\");\n }\n if (\n disabledButtonsConfig == null\n ? void 0\n : disabledButtonsConfig.includes(\"previous\")\n ) {\n popover.previousButton.disabled = true;\n popover.previousButton.classList.add(\"gleap-tour-popover-btn-disabled\");\n }\n if (\n disabledButtonsConfig == null\n ? void 0\n : disabledButtonsConfig.includes(\"close\")\n ) {\n popover.closeButton.disabled = true;\n popover.closeButton.classList.add(\"gleap-tour-popover-btn-disabled\");\n }\n const popoverWrapper = popover.wrapper;\n popoverWrapper.style.display = \"block\";\n popoverWrapper.style.left = \"\";\n popoverWrapper.style.top = \"\";\n popoverWrapper.style.bottom = \"\";\n popoverWrapper.style.right = \"\";\n popoverWrapper.id = \"gleap-tour-popover-content\";\n popoverWrapper.setAttribute(\"role\", \"dialog\");\n popoverWrapper.setAttribute(\"aria-labelledby\", \"gleap-tour-popover-title\");\n popoverWrapper.setAttribute(\n \"aria-describedby\",\n \"gleap-tour-popover-description\"\n );\n const popoverArrow = popover.arrow;\n popoverArrow.className = \"gleap-tour-popover-arrow\";\n const customPopoverClass =\n ((_a = step.popover) == null ? void 0 : _a.popoverClass) ||\n getConfig(\"popoverClass\") ||\n \"\";\n popoverWrapper.className =\n `gleap-tour-popover ${customPopoverClass}`.trim();\n onDriverClick(\n popover.wrapper,\n (e) => {\n var _a2, _b2, _c;\n const target = e.target;\n const onNextClick =\n ((_a2 = step.popover) == null ? void 0 : _a2.onNextClick) ||\n getConfig(\"onNextClick\");\n const onPrevClick =\n ((_b2 = step.popover) == null ? void 0 : _b2.onPrevClick) ||\n getConfig(\"onPrevClick\");\n const onCloseClick =\n ((_c = step.popover) == null ? void 0 : _c.onCloseClick) ||\n getConfig(\"onCloseClick\");\n if (target.classList.contains(\"gleap-tour-popover-next-btn\")) {\n if (onNextClick) {\n return onNextClick(element, step, {\n config: getConfig(),\n state: getState(),\n });\n } else {\n return emit(\"nextClick\");\n }\n }\n if (target.classList.contains(\"gleap-tour-popover-prev-btn\")) {\n if (onPrevClick) {\n return onPrevClick(element, step, {\n config: getConfig(),\n state: getState(),\n });\n } else {\n return emit(\"prevClick\");\n }\n }\n if (target.classList.contains(\"gleap-tour-popover-close-btn\")) {\n if (onCloseClick) {\n return onCloseClick(element, step, {\n config: getConfig(),\n state: getState(),\n });\n } else {\n return emit(\"closeClick\");\n }\n }\n return void 0;\n },\n (target) => {\n return (\n !(popover == null ? void 0 : popover.description.contains(target)) &&\n !(popover == null ? void 0 : popover.title.contains(target)) &&\n typeof target.className === \"string\" &&\n target.className.includes(\"gleap-tour-popover\")\n );\n }\n );\n setState(\"popover\", popover);\n const onPopoverRender =\n ((_b = step.popover) == null ? void 0 : _b.onPopoverRender) ||\n getConfig(\"onPopoverRender\");\n if (onPopoverRender) {\n onPopoverRender(popover, {\n config: getConfig(),\n state: getState(),\n });\n }\n repositionPopover(element, step);\n bringInView(popoverWrapper);\n const isToDummyElement = element.classList.contains(\n \"gleap-tour-dummy-element\"\n );\n const focusableElement = getFocusableElements([\n popoverWrapper,\n ...(isToDummyElement ? [] : [element]),\n ]);\n if (focusableElement.length > 0) {\n focusableElement[0].focus();\n }\n }\n function getPopoverDimensions() {\n const popover = getState(\"popover\");\n if (!(popover == null ? void 0 : popover.wrapper)) {\n return;\n }\n const boundingClientRect = popover.wrapper.getBoundingClientRect();\n const stagePadding = getConfig(\"stagePadding\") || 0;\n const popoverOffset = getConfig(\"popoverOffset\") || 0;\n return {\n width: boundingClientRect.width + stagePadding + popoverOffset,\n height: boundingClientRect.height + stagePadding + popoverOffset,\n realWidth: boundingClientRect.width,\n realHeight: boundingClientRect.height,\n };\n }\n function calculateTopForLeftRight(alignment, config) {\n const {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n } = config;\n if (alignment === \"start\") {\n return Math.max(\n Math.min(\n elementDimensions.top - popoverPadding,\n window.innerHeight -\n popoverDimensions.realHeight -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n if (alignment === \"end\") {\n return Math.max(\n Math.min(\n elementDimensions.top -\n (popoverDimensions == null\n ? void 0\n : popoverDimensions.realHeight) +\n elementDimensions.height +\n popoverPadding,\n window.innerHeight -\n (popoverDimensions == null\n ? void 0\n : popoverDimensions.realHeight) -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n if (alignment === \"center\") {\n return Math.max(\n Math.min(\n elementDimensions.top +\n elementDimensions.height / 2 -\n (popoverDimensions == null\n ? void 0\n : popoverDimensions.realHeight) /\n 2,\n window.innerHeight -\n (popoverDimensions == null\n ? void 0\n : popoverDimensions.realHeight) -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n return 0;\n }\n function calculateLeftForTopBottom(alignment, config) {\n const {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n } = config;\n if (alignment === \"start\") {\n return Math.max(\n Math.min(\n elementDimensions.left - popoverPadding,\n window.innerWidth -\n popoverDimensions.realWidth -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n if (alignment === \"end\") {\n return Math.max(\n Math.min(\n elementDimensions.left -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) +\n elementDimensions.width +\n popoverPadding,\n window.innerWidth -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n if (alignment === \"center\") {\n return Math.max(\n Math.min(\n elementDimensions.left +\n elementDimensions.width / 2 -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) /\n 2,\n window.innerWidth -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) -\n popoverArrowDimensions.width\n ),\n popoverArrowDimensions.width\n );\n }\n return 0;\n }\n function repositionPopover(element, step) {\n const popover = getState(\"popover\");\n if (!popover) {\n return;\n }\n const { align = \"start\", side = \"left\" } =\n (step == null ? void 0 : step.popover) || {};\n const requiredAlignment = align;\n const requiredSide =\n element.id === \"gleap-tour-dummy-element\" ? \"over\" : side;\n const popoverPadding = getConfig(\"stagePadding\") || 0;\n const popoverDimensions = getPopoverDimensions();\n const popoverArrowDimensions = popover.arrow.getBoundingClientRect();\n const elementDimensions = element.getBoundingClientRect();\n const topValue = elementDimensions.top - popoverDimensions.height;\n let isTopOptimal = topValue >= 0;\n const bottomValue =\n window.innerHeight -\n (elementDimensions.bottom + popoverDimensions.height);\n let isBottomOptimal = bottomValue >= 0;\n const leftValue = elementDimensions.left - popoverDimensions.width;\n let isLeftOptimal = leftValue >= 0;\n const rightValue =\n window.innerWidth - (elementDimensions.right + popoverDimensions.width);\n let isRightOptimal = rightValue >= 0;\n const noneOptimal =\n !isTopOptimal && !isBottomOptimal && !isLeftOptimal && !isRightOptimal;\n let popoverRenderedSide = requiredSide;\n if (requiredSide === \"top\" && isTopOptimal) {\n isRightOptimal = isLeftOptimal = isBottomOptimal = false;\n } else if (requiredSide === \"bottom\" && isBottomOptimal) {\n isRightOptimal = isLeftOptimal = isTopOptimal = false;\n } else if (requiredSide === \"left\" && isLeftOptimal) {\n isRightOptimal = isTopOptimal = isBottomOptimal = false;\n } else if (requiredSide === \"right\" && isRightOptimal) {\n isLeftOptimal = isTopOptimal = isBottomOptimal = false;\n }\n if (requiredSide === \"over\") {\n const leftToSet = window.innerWidth / 2 - popoverDimensions.realWidth / 2;\n const topToSet =\n window.innerHeight / 2 - popoverDimensions.realHeight / 2;\n popover.wrapper.style.left = `${leftToSet}px`;\n popover.wrapper.style.right = `auto`;\n popover.wrapper.style.top = `${topToSet}px`;\n popover.wrapper.style.bottom = `auto`;\n } else if (noneOptimal) {\n const leftValue2 =\n window.innerWidth / 2 -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) / 2;\n const bottomValue2 = 10;\n popover.wrapper.style.left = `${leftValue2}px`;\n popover.wrapper.style.right = `auto`;\n popover.wrapper.style.bottom = `${bottomValue2}px`;\n popover.wrapper.style.top = `auto`;\n } else if (isLeftOptimal) {\n const leftToSet = Math.min(\n leftValue,\n window.innerWidth -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) -\n popoverArrowDimensions.width\n );\n const topToSet = calculateTopForLeftRight(requiredAlignment, {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n });\n popover.wrapper.style.left = `${leftToSet}px`;\n popover.wrapper.style.top = `${topToSet}px`;\n popover.wrapper.style.bottom = `auto`;\n popover.wrapper.style.right = \"auto\";\n popoverRenderedSide = \"left\";\n } else if (isRightOptimal) {\n const rightToSet = Math.min(\n rightValue,\n window.innerWidth -\n (popoverDimensions == null ? void 0 : popoverDimensions.realWidth) -\n popoverArrowDimensions.width\n );\n const topToSet = calculateTopForLeftRight(requiredAlignment, {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n });\n popover.wrapper.style.right = `${rightToSet}px`;\n popover.wrapper.style.top = `${topToSet}px`;\n popover.wrapper.style.bottom = `auto`;\n popover.wrapper.style.left = \"auto\";\n popoverRenderedSide = \"right\";\n } else if (isTopOptimal) {\n const topToSet = Math.min(\n topValue,\n window.innerHeight -\n popoverDimensions.realHeight -\n popoverArrowDimensions.width\n );\n let leftToSet = calculateLeftForTopBottom(requiredAlignment, {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n });\n popover.wrapper.style.top = `${topToSet}px`;\n popover.wrapper.style.left = `${leftToSet}px`;\n popover.wrapper.style.bottom = `auto`;\n popover.wrapper.style.right = \"auto\";\n popoverRenderedSide = \"top\";\n } else if (isBottomOptimal) {\n const bottomToSet = Math.min(\n bottomValue,\n window.innerHeight -\n (popoverDimensions == null ? void 0 : popoverDimensions.realHeight) -\n popoverArrowDimensions.width\n );\n let leftToSet = calculateLeftForTopBottom(requiredAlignment, {\n elementDimensions,\n popoverDimensions,\n popoverPadding,\n popoverArrowDimensions,\n });\n popover.wrapper.style.left = `${leftToSet}px`;\n popover.wrapper.style.bottom = `${bottomToSet}px`;\n popover.wrapper.style.top = `auto`;\n popover.wrapper.style.right = \"auto\";\n popoverRenderedSide = \"bottom\";\n }\n if (!noneOptimal) {\n renderPopoverArrow(requiredAlignment, popoverRenderedSide, element);\n } else {\n popover.arrow.classList.add(\"gleap-tour-popover-arrow-none\");\n }\n }\n function renderPopoverArrow(alignment, side, element) {\n const popover = getState(\"popover\");\n if (!popover) {\n return;\n }\n const elementDimensions = element.getBoundingClientRect();\n const popoverDimensions = getPopoverDimensions();\n const popoverArrow = popover.arrow;\n const popoverWidth = popoverDimensions.width;\n const windowWidth = window.innerWidth;\n const elementWidth = elementDimensions.width;\n const elementLeft = elementDimensions.left;\n const popoverHeight = popoverDimensions.height;\n const windowHeight = window.innerHeight;\n const elementTop = elementDimensions.top;\n const elementHeight = elementDimensions.height;\n popoverArrow.className = \"gleap-tour-popover-arrow\";\n let arrowSide = side;\n let arrowAlignment = alignment;\n if (side === \"top\") {\n if (elementLeft + elementWidth <= 0) {\n arrowSide = \"right\";\n arrowAlignment = \"end\";\n } else if (elementLeft + elementWidth - popoverWidth <= 0) {\n arrowSide = \"top\";\n arrowAlignment = \"start\";\n }\n if (elementLeft >= windowWidth) {\n arrowSide = \"left\";\n arrowAlignment = \"end\";\n } else if (elementLeft + popoverWidth >= windowWidth) {\n arrowSide = \"top\";\n arrowAlignment = \"end\";\n }\n } else if (side === \"bottom\") {\n if (elementLeft + elementWidth <= 0) {\n arrowSide = \"right\";\n arrowAlignment = \"start\";\n } else if (elementLeft + elementWidth - popoverWidth <= 0) {\n arrowSide = \"bottom\";\n arrowAlignment = \"start\";\n }\n if (elementLeft >= windowWidth) {\n arrowSide = \"left\";\n arrowAlignment = \"start\";\n } else if (elementLeft + popoverWidth >= windowWidth) {\n arrowSide = \"bottom\";\n arrowAlignment = \"end\";\n }\n } else if (side === \"left\") {\n if (elementTop + elementHeight <= 0) {\n arrowSide = \"bottom\";\n arrowAlignment = \"end\";\n } else if (elementTop + elementHeight - popoverHeight <= 0) {\n arrowSide = \"left\";\n arrowAlignment = \"start\";\n }\n if (elementTop >= windowHeight) {\n arrowSide = \"top\";\n arrowAlignment = \"end\";\n } else if (elementTop + popoverHeight >= windowHeight) {\n arrowSide = \"left\";\n arrowAlignment = \"end\";\n }\n } else if (side === \"right\") {\n if (elementTop + elementHeight <= 0) {\n arrowSide = \"bottom\";\n arrowAlignment = \"start\";\n } else if (elementTop + elementHeight - popoverHeight <= 0) {\n arrowSide = \"right\";\n arrowAlignment = \"start\";\n }\n if (elementTop >= windowHeight) {\n arrowSide = \"top\";\n arrowAlignment = \"start\";\n } else if (elementTop + popoverHeight >= windowHeight) {\n arrowSide = \"right\";\n arrowAlignment = \"end\";\n }\n } else;\n if (!arrowSide) {\n popoverArrow.classList.add(\"gleap-tour-popover-arrow-none\");\n } else {\n popoverArrow.classList.add(`gleap-tour-popover-arrow-side-${arrowSide}`);\n popoverArrow.classList.add(\n `gleap-tour-popover-arrow-align-${arrowAlignment}`\n );\n }\n }\n function createPopover() {\n const wrapper = document.createElement(\"div\");\n wrapper.classList.add(\"gleap-tour-popover\");\n const arrow = document.createElement(\"div\");\n arrow.classList.add(\"gleap-tour-popover-arrow\");\n const title = document.createElement(\"div\");\n title.id = \"gleap-tour-popover-title\";\n title.classList.add(\"gleap-tour-popover-title\");\n title.style.display = \"none\";\n title.innerText = \"Popover Title\";\n const description = document.createElement(\"div\");\n description.id = \"gleap-tour-popover-description\";\n description.classList.add(\"gleap-tour-popover-description\");\n description.style.display = \"none\";\n description.innerText = \"Popover description is here\";\n const closeButton = document.createElement(\"button\");\n closeButton.type = \"button\";\n closeButton.classList.add(\"gleap-tour-popover-close-btn\");\n closeButton.setAttribute(\"aria-label\", \"Close\");\n closeButton.innerHTML = \"×\";\n const footer = document.createElement(\"div\");\n footer.classList.add(\"gleap-tour-popover-footer\");\n const progress = document.createElement(\"span\");\n progress.classList.add(\"gleap-tour-popover-progress-text\");\n progress.innerText = \"\";\n const footerButtons = document.createElement(\"span\");\n footerButtons.classList.add(\"gleap-tour-popover-navigation-btns\");\n const previousButton = document.createElement(\"button\");\n previousButton.type = \"button\";\n previousButton.classList.add(\"gleap-tour-popover-prev-btn\");\n previousButton.innerHTML = \"← Previous\";\n const nextButton = document.createElement(\"button\");\n nextButton.type = \"button\";\n nextButton.classList.add(\"gleap-tour-popover-next-btn\");\n nextButton.innerHTML = \"Next →\";\n footerButtons.appendChild(previousButton);\n footerButtons.appendChild(nextButton);\n footer.appendChild(progress);\n footer.appendChild(footerButtons);\n wrapper.appendChild(closeButton);\n wrapper.appendChild(arrow);\n wrapper.appendChild(title);\n wrapper.appendChild(description);\n wrapper.appendChild(footer);\n return {\n wrapper,\n arrow,\n title,\n description,\n footer,\n previousButton,\n nextButton,\n closeButton,\n footerButtons,\n progress,\n };\n }\n function destroyPopover() {\n var _a;\n const popover = getState(\"popover\");\n if (!popover) {\n return;\n }\n (_a = popover.wrapper.parentElement) == null\n ? void 0\n : _a.removeChild(popover.wrapper);\n }\n function driver(options = {}) {\n configure(options);\n function handleClose() {\n if (!getConfig(\"allowClose\")) {\n return;\n }\n destroy();\n }\n function moveNext() {\n const activeIndex = getState(\"activeIndex\");\n const steps = getConfig(\"steps\") || [];\n if (typeof activeIndex === \"undefined\") {\n return;\n }\n const nextStepIndex = activeIndex + 1;\n if (steps[nextStepIndex]) {\n drive(nextStepIndex);\n } else {\n destroy();\n }\n }\n function movePrevious() {\n const activeIndex = getState(\"activeIndex\");\n const steps = getConfig(\"steps\") || [];\n if (typeof activeIndex === \"undefined\") {\n return;\n }\n const previousStepIndex = activeIndex - 1;\n if (steps[previousStepIndex]) {\n drive(previousStepIndex);\n } else {\n destroy();\n }\n }\n function moveTo(index) {\n const steps = getConfig(\"steps\") || [];\n if (steps[index]) {\n drive(index);\n } else {\n destroy();\n }\n }\n function handleArrowLeft() {\n var _a;\n const isTransitioning = getState(\"__transitionCallback\");\n if (isTransitioning) {\n return;\n }\n const activeIndex = getState(\"activeIndex\");\n const activeStep = getState(\"__activeStep\");\n const activeElement = getState(\"__activeElement\");\n\n if (activeStep.mode === \"CLICK\") {\n return;\n }\n if (\n typeof activeIndex === \"undefined\" ||\n typeof activeStep === \"undefined\"\n ) {\n return;\n }\n const currentStepIndex = getState(\"activeIndex\");\n if (typeof currentStepIndex === \"undefined\") {\n return;\n }\n const onPrevClick =\n ((_a = activeStep.popover) == null ? void 0 : _a.onPrevClick) ||\n getConfig(\"onPrevClick\");\n if (onPrevClick) {\n return onPrevClick(activeElement, activeStep, {\n config: getConfig(),\n state: getState(),\n });\n }\n movePrevious();\n }\n function handleArrowRight() {\n var _a;\n const isTransitioning = getState(\"__transitionCallback\");\n if (isTransitioning) {\n return;\n }\n const activeIndex = getState(\"activeIndex\");\n const activeStep = getState(\"__activeStep\");\n const activeElement = getState(\"__activeElement\");\n\n if (activeStep.mode === \"CLICK\") {\n return;\n }\n if (\n typeof activeIndex === \"undefined\" ||\n typeof activeStep === \"undefined\"\n ) {\n return;\n }\n const onNextClick =\n ((_a = activeStep.popover) == null ? void 0 : _a.onNextClick) ||\n getConfig(\"onNextClick\");\n if (onNextClick) {\n return onNextClick(activeElement, activeStep, {\n config: getConfig(),\n state: getState(),\n });\n }\n moveNext();\n }\n function init() {\n if (getState(\"isInitialized\")) {\n return;\n }\n setState(\"isInitialized\", true);\n document.body.classList.add(\n \"gleap-tour-active\",\n getConfig(\"animate\") ? \"gleap-tour-fade\" : \"gleap-tour-simple\"\n );\n initEvents();\n listen(\"overlayClick\", handleClose);\n listen(\"escapePress\", handleClose);\n listen(\"arrowLeftPress\", handleArrowLeft);\n listen(\"arrowRightPress\", handleArrowRight);\n }\n function drive(stepIndex = 0) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n const steps = getConfig(\"steps\");\n if (!steps) {\n console.error(\"No steps to drive through\");\n destroy();\n return;\n }\n if (!steps[stepIndex]) {\n destroy();\n return;\n }\n setState(\"__activeOnDestroyed\", document.activeElement);\n setState(\"activeIndex\", stepIndex);\n const currentStep = steps[stepIndex];\n const hasNextStep = steps[stepIndex + 1];\n const hasPreviousStep = steps[stepIndex - 1];\n const doneBtnText =\n ((_a = currentStep.popover) == null ? void 0 : _a.doneBtnText) ||\n getConfig(\"doneBtnText\") ||\n \"Done\";\n const allowsClosing = getConfig(\"allowClose\");\n const showProgress =\n typeof ((_b = currentStep.popover) == null\n ? void 0\n : _b.showProgress) !== \"undefined\"\n ? (_c = currentStep.popover) == null\n ? void 0\n : _c.showProgress\n : getConfig(\"showProgress\");\n const progressText =\n ((_d = currentStep.popover) == null ? void 0 : _d.progressText) ||\n getConfig(\"progressText\") ||\n \"{{current}} of {{total}}\";\n const progressTextReplaced = progressText\n .replace(\"{{current}}\", `${stepIndex + 1}`)\n .replace(\"{{total}}\", `${steps.length}`);\n const configuredButtons =\n ((_e = currentStep.popover) == null ? void 0 : _e.showButtons) ||\n getConfig(\"showButtons\");\n const calculatedButtons = [\n \"next\",\n \"previous\",\n ...(allowsClosing ? [\"close\"] : []),\n ].filter((b) => {\n return (\n !(configuredButtons == null ? void 0 : configuredButtons.length) ||\n configuredButtons.includes(b)\n );\n });\n const onNextClick =\n ((_f = currentStep.popover) == null ? void 0 : _f.onNextClick) ||\n getConfig(\"onNextClick\");\n const onPrevClick =\n ((_g = currentStep.popover) == null ? void 0 : _g.onPrevClick) ||\n getConfig(\"onPrevClick\");\n const onCloseClick =\n ((_h = currentStep.popover) == null ? void 0 : _h.onCloseClick) ||\n getConfig(\"onCloseClick\");\n highlight({\n ...currentStep,\n popover: {\n showButtons: calculatedButtons,\n nextBtnText: !hasNextStep ? doneBtnText : void 0,\n disableButtons: [...(!hasPreviousStep ? [\"previous\"] : [])],\n showProgress,\n progressText: progressTextReplaced,\n onNextClick: onNextClick\n ? onNextClick\n : () => {\n if (!hasNextStep) {\n destroy();\n } else {\n drive(stepIndex + 1);\n }\n },\n onPrevClick: onPrevClick\n ? onPrevClick\n : () => {\n drive(stepIndex - 1);\n },\n onCloseClick: onCloseClick\n ? onCloseClick\n : () => {\n destroy();\n },\n ...((currentStep == null ? void 0 : currentStep.popover) || {}),\n },\n });\n }\n function destroy(withOnDestroyStartedHook = true) {\n const activeElement = getState(\"__activeElement\");\n const activeStep = getState(\"__activeStep\");\n const activeOnDestroyed = getState(\"__activeOnDestroyed\");\n const onDestroyStarted = getConfig(\"onDestroyStarted\");\n if (withOnDestroyStartedHook && onDestroyStarted) {\n const isActiveDummyElement =\n !activeElement ||\n (activeElement == null ? void 0 : activeElement.id) ===\n \"gleap-tour-dummy-element\";\n onDestroyStarted(\n isActiveDummyElement ? void 0 : activeElement,\n activeStep,\n {\n config: getConfig(),\n state: getState(),\n }\n );\n return;\n }\n const onDeselected =\n (activeStep == null ? void 0 : activeStep.onDeselected) ||\n getConfig(\"onDeselected\");\n const onDestroyed = getConfig(\"onDestroyed\");\n document.body.classList.remove(\n \"gleap-tour-active\",\n \"gleap-tour-fade\",\n \"gleap-tour-simple\"\n );\n destroyEvents();\n destroyPopover();\n destroyHighlight();\n destroyOverlay();\n destroyEmitter();\n resetState();\n if (activeElement && activeStep) {\n const isActiveDummyElement =\n activeElement.id === \"gleap-tour-dummy-element\";\n if (onDeselected) {\n onDeselected(\n isActiveDummyElement ? void 0 : activeElement,\n activeStep,\n {\n config: getConfig(),\n state: getState(),\n }\n );\n }\n if (onDestroyed) {\n onDestroyed(\n isActiveDummyElement ? void 0 : activeElement,\n activeStep,\n {\n config: getConfig(),\n state: getState(),\n }\n );\n }\n }\n if (activeOnDestroyed) {\n activeOnDestroyed.focus();\n }\n }\n return {\n isActive: () => getState(\"isInitialized\") || false,\n refresh: requireRefresh,\n drive: (stepIndex = 0) => {\n init();\n drive(stepIndex);\n },\n setConfig: configure,\n setSteps: (steps) => {\n resetState();\n configure({\n ...getConfig(),\n steps,\n });\n },\n getConfig,\n getState,\n getActiveIndex: () => getState(\"activeIndex\"),\n isFirstStep: () => getState(\"activeIndex\") === 0,\n isLastStep: () => {\n const steps = getConfig(\"steps\") || [];\n const activeIndex = getState(\"activeIndex\");\n return activeIndex !== void 0 && activeIndex === steps.length - 1;\n },\n getActiveStep: () => getState(\"activeStep\"),\n getActiveElement: () => getState(\"activeElement\"),\n getPreviousElement: () => getState(\"previousElement\"),\n getPreviousStep: () => getState(\"previousStep\"),\n moveNext,\n movePrevious,\n moveTo,\n hasNextStep: () => {\n const steps = getConfig(\"steps\") || [];\n const activeIndex = getState(\"activeIndex\");\n return activeIndex !== void 0 && steps[activeIndex + 1];\n },\n hasPreviousStep: () => {\n const steps = getConfig(\"steps\") || [];\n const activeIndex = getState(\"activeIndex\");\n return activeIndex !== void 0 && steps[activeIndex - 1];\n },\n highlight: (step) => {\n init();\n highlight({\n ...step,\n popover: step.popover\n ? {\n showButtons: [],\n showProgress: false,\n progressText: \"\",\n ...step.popover,\n }\n : void 0,\n });\n },\n destroy: () => {\n destroy(false);\n },\n };\n }\n return driver;\n})({});\n\nexport default GleapTours;\n","import { GleapConfigManager, GleapTranslationManager } from \"./Gleap\";\nimport { calculateContrast, loadIcon } from \"./UI\";\n\nconst localStorageKey = \"gleap-tour-data\";\nconst pointerContainerId = \"copilot-pointer-container\";\nconst styleId = \"copilot-tour-styles\";\nconst copilotJoinedContainerId = \"copilot-joined-container\";\n\nfunction estimateReadTime(text) {\n if (typeof window === \"undefined\") return;\n\n const wordsPerSecond = 3.6; // Average reading speed\n const wordCount = text.split(/\\s+/).filter((word) => word.length > 0).length;\n const readTimeInSeconds = Math.ceil(wordCount / wordsPerSecond);\n return readTimeInSeconds + 1;\n}\n\nfunction htmlToPlainText(html) {\n if (typeof window === \"undefined\") return;\n\n const tempDiv = document.createElement(\"div\");\n tempDiv.innerHTML = html;\n return tempDiv.textContent || \"\";\n}\n\nfunction scrollToElement(element) {\n if (typeof window === \"undefined\") return;\n\n if (element) {\n element.scrollIntoView({\n behavior: \"smooth\",\n block: \"center\",\n inline: \"center\",\n });\n }\n}\n\nfunction performClickAnimation(posX, posY) {\n if (typeof window === \"undefined\") return;\n\n const wave = document.createElement(\"div\");\n wave.className = \"click-wave\";\n wave.style.left = `${posX - 17}px`;\n wave.style.top = `${posY - 17}px`;\n document.body.appendChild(wave);\n setTimeout(() => {\n wave.remove();\n }, 800);\n}\n\nfunction waitForElement(selector, timeout = 5000) {\n if (typeof window === \"undefined\") return;\n\n const pollInterval = 100;\n const maxAttempts = timeout / pollInterval;\n let attempts = 0;\n return new Promise((resolve, reject) => {\n const interval = setInterval(() => {\n const element = document.querySelector(selector);\n if (element) {\n clearInterval(interval);\n resolve(element);\n } else if (attempts >= maxAttempts) {\n clearInterval(interval);\n reject(new Error(`Element not found for selector: ${selector}`));\n }\n attempts++;\n }, pollInterval);\n });\n}\n\nfunction smoothScrollToY(yPosition) {\n if (typeof window === \"undefined\") return;\n\n const viewportHeight = window.innerHeight;\n const targetScrollPosition = yPosition - viewportHeight / 2;\n window.scrollTo({\n top: targetScrollPosition,\n behavior: \"smooth\",\n });\n}\n\nasync function canPlayAudio() {\n if (typeof window === \"undefined\") return;\n\n const audio = new Audio(\n \"data:audio/wav;base64,UklGRigAAABXQVZFZm10IBAAAAABAAEARKwAABCxAgAEABAAZGF0YQAAAAA=\"\n );\n try {\n await audio.play();\n return true;\n } catch (err) {\n return false;\n }\n}\n\n// Helper: Check if an element is fully visible in the viewport.\nfunction isElementFullyVisible(el) {\n if (typeof window === \"undefined\") return;\n\n const rect = el.getBoundingClientRect();\n return (\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <= window.innerHeight &&\n rect.right <= window.innerWidth\n );\n}\n\n// Helper: Get scrollable ancestors of an element.\nfunction getScrollableAncestors(el) {\n if (typeof window === \"undefined\") return;\n\n let ancestors = [];\n let current = el.parentElement;\n while (current) {\n const style = window.getComputedStyle(current);\n if (\n (style.overflowY === \"auto\" || style.overflowY === \"scroll\") &&\n current.scrollHeight > current.clientHeight\n ) {\n ancestors.push(current);\n }\n current = current.parentElement;\n }\n return ancestors;\n}\n\nexport default class GleapCopilotTours {\n productTourData = undefined;\n productTourId = undefined;\n currentActiveIndex = undefined;\n lastArrowPositionX = undefined;\n lastArrowPositionY = undefined;\n onCompleteCallback = undefined;\n audioMuted = false;\n currentAudio = undefined;\n\n // Cached pointer container.\n _pointerContainer = null;\n // For scroll handling.\n _scrollListeners = [];\n _currentAnchor = null;\n _currentStep = null;\n _scrollDebounceTimer = null;\n\n // GleapReplayRecorder singleton.\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapCopilotTours();\n }\n return this.instance;\n }\n\n constructor() {\n const self = this;\n\n if (typeof window !== \"undefined\") {\n this._scrollListeners = [];\n this._currentAnchor = null;\n this._currentStep = null;\n this._scrollDebounceTimer = null;\n\n window.addEventListener(\"resize\", () => {\n if (\n self.productTourId &&\n self.currentActiveIndex >= 0 &&\n self.productTourData &&\n self.productTourData.steps\n ) {\n const steps = self.productTourData.steps;\n const currentStep = steps[self.currentActiveIndex];\n if (\n currentStep &&\n currentStep.selector &&\n currentStep.selector !== \"\"\n ) {\n self.updatePointerPosition(\n document.querySelector(currentStep.selector),\n currentStep\n );\n }\n }\n });\n }\n }\n\n disable() {\n this.disabled = true;\n \n this.cleanup();\n }\n\n startWithConfig(tourId, config, onCompleteCallback = undefined) {\n if (typeof window === \"undefined\") return;\n if (this.productTourId) return;\n if (this.disabled) return;\n\n this.productTourId = tourId;\n this.productTourData = config;\n this.currentActiveIndex = 0;\n this.onCompleteCallback = onCompleteCallback;\n this.start();\n }\n\n storeUncompletedTour() {\n if (typeof window === \"undefined\") return;\n if (this.productTourId && this.productTourData) {\n try {\n let data = JSON.parse(\n JSON.stringify({\n tourData: this.productTourData,\n tourId: this.productTourId,\n })\n );\n data.tourData.steps = data.tourData.steps.slice(\n this.currentActiveIndex || 0,\n data.tourData.steps.length\n );\n localStorage.setItem(localStorageKey, JSON.stringify(data));\n } catch (e) {\n // Optionally log error in development mode.\n }\n } else {\n localStorage.removeItem(localStorageKey);\n }\n }\n\n // Attach scroll listeners with a debounce to update the pointer position after scrolling stops.\n attachScrollListeners(anchor, currentStep) {\n if (typeof window === \"undefined\") return;\n if (!anchor) return;\n const scrollableAncestors = getScrollableAncestors(anchor);\n // Also include window.\n scrollableAncestors.push(window);\n scrollableAncestors.forEach((el) => {\n const handler = () => {\n clearTimeout(this._scrollDebounceTimer);\n this._scrollDebounceTimer = setTimeout(() => {\n this.updatePointerPosition(anchor, currentStep);\n }, 150);\n };\n el.addEventListener(\"scroll\", handler, { passive: true });\n this._scrollListeners.push({ el, handler });\n });\n }\n\n // Remove scroll listeners and clear debounce timer.\n removeScrollListeners() {\n if (typeof window === \"undefined\") return;\n if (this._scrollListeners && this._scrollListeners.length > 0) {\n this._scrollListeners.forEach(({ el, handler }) => {\n el.removeEventListener(\"scroll\", handler);\n });\n this._scrollListeners = [];\n }\n if (this._scrollDebounceTimer) {\n clearTimeout(this._scrollDebounceTimer);\n this._scrollDebounceTimer = null;\n }\n }\n\n // Updated pointer position:\n // 1. Scroll the element into view.\n // 2. After the element is fully visible (or after a maximum delay), update the pointer position to point towards the element.\n updatePointerPosition(anchor, currentStep) {\n if (typeof window === \"undefined\") return;\n try {\n const container =\n this._pointerContainer || document.getElementById(pointerContainerId);\n if (!container) return;\n\n if (!anchor) {\n container.style.position = \"fixed\";\n container.style.left = \"50%\";\n container.style.top = \"50%\";\n container.style.transform = \"translate(-50%, -50%)\";\n smoothScrollToY(window.innerHeight / 2);\n this.removeScrollListeners();\n this._currentAnchor = null;\n this._currentStep = null;\n return;\n }\n\n // Step 1: Scroll the element into view.\n scrollToElement(anchor);\n\n // Step 2: Poll until the element is fully visible (or after maximum polls).\n const pollInterval = 100;\n const maxPolls = 20;\n let pollCount = 0;\n const updateFinalPosition = () => {\n if (isElementFullyVisible(anchor) || pollCount >= maxPolls) {\n // Compute final target coordinates.\n const anchorRect = anchor.getBoundingClientRect();\n const targetX = anchorRect.left + anchorRect.width / 2;\n const targetY = anchorRect.top + anchorRect.height / 2 + 10; // 10px downward offset.\n container.style.position = \"fixed\";\n container.style.left = `${targetX}px`;\n container.style.top = `${targetY}px`;\n container.style.transform = \"translate(-50%, -50%)\";\n\n // Adjust container if too far right.\n let containerWidthSpace = 350;\n if (containerWidthSpace > window.innerWidth - 40) {\n containerWidthSpace = window.innerWidth - 40;\n }\n if (targetX + containerWidthSpace > window.innerWidth - 20) {\n container.classList.add(\"copilot-pointer-container-right\");\n } else {\n container.classList.remove(\"copilot-pointer-container-right\");\n }\n\n // Reattach scroll listeners if the target or step has changed.\n if (\n this._currentAnchor !== anchor ||\n this._currentStep !== currentStep\n ) {\n this.removeScrollListeners();\n this._currentAnchor = anchor;\n this._currentStep = currentStep;\n this.attachScrollListeners(anchor, currentStep);\n }\n } else {\n pollCount++;\n setTimeout(updateFinalPosition, pollInterval);\n }\n };\n updateFinalPosition();\n } catch (e) {\n // Optionally log errors.\n }\n }\n\n cleanup() {\n if (typeof window === \"undefined\") return;\n document.body.classList.add(\"gl-copilot-fade-out\");\n if (this.currentAudio) {\n this.currentAudio.pause();\n }\n setTimeout(() => {\n if (this._pointerContainer) {\n this._pointerContainer.remove();\n this._pointerContainer = null;\n } else {\n const container = document.getElementById(pointerContainerId);\n if (container) container.remove();\n }\n const copilotInfoContainer = document.getElementById(\n copilotJoinedContainerId\n );\n if (copilotInfoContainer) copilotInfoContainer.remove();\n const styleNode = document.getElementById(styleId);\n if (styleNode) styleNode.remove();\n document.body.classList.remove(\"gl-copilot-fade-out\");\n }, 800);\n\n this.productTourId = undefined;\n this.productTourData = undefined;\n \n this.removeScrollListeners();\n }\n\n toggleAudio(muted = false) {\n this.audioMuted = muted;\n if (this.currentAudio) {\n this.currentAudio.muted = this.audioMuted;\n }\n document.querySelector(`.${copilotJoinedContainerId}-mute`).innerHTML =\n loadIcon(this.audioMuted ? \"unmute\" : \"mute\");\n }\n\n setupCopilotTour() {\n if (typeof window === \"undefined\") return;\n\n const primaryColor =\n GleapConfigManager.getInstance().flowConfig?.color ?? \"#485BFF\";\n const contrastColor = calculateContrast(primaryColor);\n\n let styleNode = document.getElementById(styleId);\n if (!styleNode) {\n styleNode = document.createElement(\"style\");\n styleNode.id = styleId;\n styleNode.type = \"text/css\";\n styleNode.textContent = `\n #${pointerContainerId} {\n position: absolute;\n top: 0;\n left: 0;\n display: flex;\n align-items: flex-start;\n pointer-events: none;\n z-index: 2147483610;\n transition: all 0.5s ease;\n }\n .${pointerContainerId}-clickmode {\n cursor: pointer;\n pointer-events: all !important;\n }\n .${pointerContainerId}-clickmode #copilot-info-bubble-content {\n display: flex !important;\n }\n .${pointerContainerId}-clickmode svg {\n display: none !important;\n }\n #${pointerContainerId} svg {\n width: 20px;\n height: auto;\n fill: none;\n }\n #copilot-info-bubble {\n position: relative;\n }\n #copilot-info-bubble-content-container {\n position: absolute;\n top: 0px;\n left: 0px;\n min-width: min(300px, 80vw);\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n }\n .${pointerContainerId}-right #copilot-info-bubble-content-container {\n left: auto !important;\n right: 0px !important;\n align-items: flex-end;\n }\n .${pointerContainerId}-right .copilot-info-bubble-content {\n margin-right: 5px;\n }\n .${pointerContainerId}-right svg {\n transform: scaleX(-1);\n }\n #copilot-info-bubble-content svg {\n width: 16px;\n height: 16px;\n display: inline-block !important;\n margin-left: 5px;\n }\n #copilot-info-bubble-content {\n margin-top: 18px;\n margin-left: 5px;\n padding: 10px 15px;\n border-radius: 20px;\n background-color: black;\n color: white;\n font-family: Arial, sans-serif;\n font-size: 14px;\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);\n max-width: 100%;\n white-space: normal;\n overflow-wrap: break-word;\n word-break: normal;\n hyphens: none;\n }\n .${pointerContainerId}-right #copilot-info-bubble-content {\n margin-top: 30px;\n margin-left: 0px;\n margin-right: 5px;\n }\n .click-wave {\n position: absolute;\n width: 34px;\n height: 34px;\n border-radius: 50%;\n background-color: rgba(0, 0, 0, 0.5);\n pointer-events: none;\n z-index: 2147483611;\n animation: click-wave-animation 0.8s ease forwards;\n }\n @keyframes click-wave-animation {\n 0% {\n transform: scale(0.2);\n opacity: 1;\n }\n 100% {\n transform: scale(2);\n opacity: 0;\n }\n }\n @keyframes slideInFromTop {\n 0% {\n transform: translateY(-100%);\n opacity: 0;\n }\n 100% {\n transform: translateY(0);\n opacity: 1;\n }\n }\n .${copilotJoinedContainerId} {\n position: fixed;\n top: 20px;\n right: 20px;\n z-index: 2147483610;\n background: #fff;\n padding: 6px;\n border-radius: 10px;\n box-shadow: 0 0 20px 0 #C294F2;\n display: flex;\n align-items: center;\n gap: 8px;\n border: 1px solid rgba(192, 146, 242, 0.5);\n animation: slideInFromTop 0.5s ease-out forwards;\n }\n .${copilotJoinedContainerId} span {\n font-size: 13px;\n color: #000;\n font-family: sans-serif;\n }\n .${copilotJoinedContainerId}-avatar {\n width: 24px;\n height: 24px;\n flex-shrink: 0;\n border-radius: 6px;\n }\n .${copilotJoinedContainerId}-mute {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n .${copilotJoinedContainerId}-mute svg {\n width: 20px;\n height: auto;\n cursor: pointer;\n animation: pulsate 2s infinite;\n }\n .${copilotJoinedContainerId}-mute svg:hover {\n opacity: 0.8;\n }\n .${copilotJoinedContainerId}-dismiss {\n display: flex;\n align-items: center;\n justify-content: center;\n padding-right: 3px;\n }\n .${copilotJoinedContainerId}-dismiss svg {\n width: 15px;\n height: auto;\n cursor: pointer;\n }\n .${copilotJoinedContainerId}-dismiss svg:hover {\n opacity: 0.8;\n }\n @keyframes pulsate {\n 0% {\n transform: scale(1);\n opacity: 1;\n }\n 50% {\n transform: scale(1.1);\n opacity: 0.8;\n }\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n }\n @keyframes glCoFadeIn {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n @keyframes glCoFadeOut {\n 0% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n }\n\n .gleap-audio-unmute-modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n background-color: rgba(0, 0, 0, 0.5);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 2147483620;\n }\n\n .gleap-audio-unmute-modal {\n background-color: #fff;\n padding: 20px;\n border-radius: 8px;\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);\n text-align: center;\n max-width: 90%;\n width: 400px;\n }\n\n .gleap-audio-unmute-modal p {\n margin-bottom: 20px;\n font-size: 16px;\n line-height: 22px;\n font-weight: normal;\n }\n\n .gleap-audio-unmute-button {\n background: ${primaryColor};\n color: ${contrastColor};\n outline: none;\n border: none;\n padding: 10px 14px;\n border-radius: 12px;\n font-size: 14px;\n font-weight: bold;\n cursor: pointer;\n }\n\n .gleap-audio-unmute-button:hover {\n opacity: 0.8;\n }\n\n .gleap-tour-continue-button {\n color: ${primaryColor};\n text-decoration: none;\n cursor: pointer;\n font-size: 14px;\n font-weight: bold;\n border: none;\n background: none;\n padding: 0;\n margin: 0;\n margin-left: 20px;\n }\n\n .gleap-tour-continue-button:hover {\n opacity: 0.8;\n }\n\n body.gl-copilot-fade-out::before,\n body.gl-copilot-fade-out::after,\n body.gl-copilot-fade-out #${copilotJoinedContainerId} {\n animation: glCoFadeOut 0.8s ease-out forwards;\n }\n ${\n this.productTourData?.playVoice ?? true\n ? \"\"\n : `\n .${copilotJoinedContainerId}-mute {\n display: none;\n }\n `\n }\n ${\n this.productTourData.gradient\n ? `body::before {\n content: \"\";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n box-sizing: border-box;\n border: 18px solid transparent;\n filter: blur(25px);\n border-image-slice: 1;\n border-image-source: linear-gradient(45deg, #ED5587, #FBE6A9, #a6e3f8, #C294F2);\n animation: glCoFadeIn 1.5s ease-out forwards;\n }\n \n body::after {\n content: \"\";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n opacity: 0.5;\n box-sizing: border-box;\n border: 3px solid transparent;\n border-image-slice: 1;\n border-image-source: linear-gradient(45deg, #ED5587, #FBE6A9, #a6e3f8, #C294F2);\n animation: glCoFadeIn 1.5s ease-out forwards;\n }`\n : `body::after {\n content: \"\";\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: all;\n z-index: 2147483609;\n opacity: 0;\n }`\n }\n `;\n document.head.appendChild(styleNode);\n }\n\n const container = document.createElement(\"div\");\n container.id = pointerContainerId;\n container.style.opacity = 0;\n // Cache the pointer container.\n this._pointerContainer = container;\n\n const svgMouse = document.createElementNS(\n \"http://www.w3.org/2000/svg\",\n \"svg\"\n );\n svgMouse.setAttribute(\"viewBox\", \"0 0 380 476\");\n svgMouse.innerHTML =\n '';\n\n const infoBubble = document.createElement(\"div\");\n infoBubble.id = \"copilot-info-bubble\";\n infoBubble.innerHTML = `
`;\n\n const copilotInfoContainer = document.createElement(\"div\");\n copilotInfoContainer.id = copilotJoinedContainerId;\n copilotInfoContainer.classList.add(copilotJoinedContainerId);\n copilotInfoContainer.innerHTML = `\n \n ${this.productTourData?.kaiSlug}\n
\n ${loadIcon(this.audioMuted ? \"unmute\" : \"mute\")}\n
\n ${\n this.productTourData?.allowClose\n ? `
\n ${loadIcon(\"dismiss\")}\n
`\n : \"\"\n }\n `;\n document.body.appendChild(copilotInfoContainer);\n\n const self = this;\n\n document\n .querySelector(`.${copilotJoinedContainerId}-mute`)\n .addEventListener(\"click\", () => {\n this.toggleAudio(!this.audioMuted);\n });\n\n if (this.productTourData?.allowClose) {\n document\n .querySelector(`.${copilotJoinedContainerId}-dismiss`)\n .addEventListener(\"click\", () => {\n this.completeTour(false);\n });\n }\n\n container.appendChild(svgMouse);\n container.appendChild(infoBubble);\n document.body.appendChild(container);\n }\n\n start() {\n if (typeof window === \"undefined\") return;\n if (this.disabled) return;\n\n const config = this.productTourData;\n if (!config) return;\n canPlayAudio().then((supported) => {\n this.audioMuted = !supported;\n this.setupCopilotTour();\n\n if (this.audioMuted && config?.showUnmuteModal) {\n this.showAudioUnmuteModal();\n } else {\n setTimeout(() => {\n this.renderNextStep();\n }, 1500);\n }\n });\n }\n\n showAudioUnmuteModal() {\n // Create the overlay element\n const modalOverlay = document.createElement(\"div\");\n modalOverlay.classList.add(\"gleap-audio-unmute-modal-overlay\");\n\n // Create the modal container element\n const modal = document.createElement(\"div\");\n modal.classList.add(\"gleap-audio-unmute-modal\");\n\n // Create and add the modal message\n const message = document.createElement(\"p\");\n message.textContent = this.productTourData?.unmuteModalTitle;\n modal.appendChild(message);\n\n // Create the \"Unmute Audio\" button\n const unmuteButton = document.createElement(\"button\");\n unmuteButton.classList.add(\"gleap-audio-unmute-button\");\n unmuteButton.textContent = this.productTourData?.unmuteModalButton;\n unmuteButton.addEventListener(\"click\", () => {\n this.toggleAudio(false);\n if (modalOverlay.parentNode) {\n modalOverlay.parentNode.removeChild(modalOverlay);\n }\n setTimeout(() => {\n this.renderNextStep();\n }, 1000);\n });\n modal.appendChild(unmuteButton);\n\n // Create the \"Start Anyway\" button\n const startAnywayButton = document.createElement(\"button\");\n startAnywayButton.classList.add(\"gleap-tour-continue-button\");\n startAnywayButton.textContent = this.productTourData?.unmuteModalContinue;\n startAnywayButton.addEventListener(\"click\", () => {\n if (modalOverlay.parentNode) {\n modalOverlay.parentNode.removeChild(modalOverlay);\n }\n setTimeout(() => {\n this.renderNextStep();\n }, 1000);\n });\n modal.appendChild(startAnywayButton);\n\n // Build the modal and attach it to the DOM\n modalOverlay.appendChild(modal);\n document.body.appendChild(modalOverlay);\n }\n\n completeTour(success = true) {\n if (typeof window === \"undefined\") return;\n this.cleanup();\n if (this.onCompleteCallback) {\n this.onCompleteCallback(success);\n }\n }\n\n renderNextStep() {\n if (typeof window === \"undefined\") return;\n if (this.disabled) return;\n\n const self = this;\n const config = this.productTourData;\n const steps = config.steps;\n if (this.currentActiveIndex >= steps.length) {\n setTimeout(() => {\n this.completeTour();\n }, 500);\n return;\n }\n const currentStep = steps[this.currentActiveIndex];\n const handleStep = (element) => {\n this._pointerContainer.style.display = \"flex\";\n if (currentStep.selector && currentStep.selector.length > 0 && !element) {\n this.completeTour(false);\n return;\n }\n const gotToNextStep = () => {\n if (currentStep.mode === \"INPUT\" && element) {\n function proceedClickmode() {\n document\n .querySelector(`#${pointerContainerId}`)\n .classList.remove(\"copilot-pointer-container-clickmode\");\n element.classList.remove(\"gleap-input-highlight\");\n document.getElementById(pointerContainerId).style.display = \"none\";\n self.currentActiveIndex++;\n self.storeUncompletedTour();\n self.renderNextStep();\n }\n const inputModeType = currentStep.inputType ?? \"default\";\n if (inputModeType === \"default\") {\n function handleInputEvent(e) {\n if (e?.target?.value?.length === 0) return;\n const cursor = document.getElementById(\n `copilot-info-bubble-content`\n );\n if (!cursor) return;\n cursor.innerHTML = `${GleapTranslationManager.translateText(\n \"next\"\n )} \n \n`;\n cursor.addEventListener(\"click\", proceedClickmode, {\n once: true,\n });\n element.classList.add(\"gleap-input-highlight\");\n document\n .querySelector(`#${pointerContainerId}`)\n .classList.add(\"copilot-pointer-container-clickmode\");\n element.removeEventListener(\"input\", handleInputEvent);\n }\n element.addEventListener(\"input\", handleInputEvent, {\n once: false,\n });\n if (element.hasAttribute(\"contenteditable\")) {\n element.addEventListener(\"keyup\", handleInputEvent, {\n once: false,\n });\n }\n element.addEventListener(\n \"blur\",\n () => {\n element.focus();\n },\n { once: true }\n );\n element.focus();\n } else {\n const inputValue = currentStep.inputValue ?? \"\";\n let index = 0;\n function typeCharacter() {\n if (index < inputValue.length) {\n element.value += inputValue[index];\n index++;\n setTimeout(typeCharacter, 100);\n } else {\n setTimeout(() => {\n proceedClickmode();\n }, 1200);\n }\n }\n typeCharacter();\n }\n return;\n }\n self.currentActiveIndex++;\n self.storeUncompletedTour();\n if (currentStep.mode === \"CLICK\" && element) {\n const rect = element.getBoundingClientRect();\n const scrollX = window.scrollX || 0;\n const scrollY = window.scrollY || 0;\n performClickAnimation(\n rect.left + rect.width / 2 + scrollX,\n rect.top + rect.height / 2 + scrollY\n );\n element.click();\n }\n self.renderNextStep();\n };\n\n this.updatePointerPosition(element, currentStep);\n const message = currentStep?.message\n ? htmlToPlainText(currentStep.message)\n : \"🤔\";\n document.getElementById(`copilot-info-bubble-content`).textContent =\n message;\n this._pointerContainer.style.opacity = 1;\n const readTime = estimateReadTime(message);\n const continueWithNoAudio = () => {\n this.currentAudio = undefined;\n setTimeout(() => {\n gotToNextStep();\n }, readTime * 1000);\n };\n if (currentStep.voice && currentStep.voice.length > 0) {\n this.currentAudio = new Audio(currentStep.voice);\n if (this.audioMuted) {\n this.currentAudio.muted = true;\n }\n this.currentAudio.addEventListener(\"ended\", () => {\n setTimeout(() => {\n gotToNextStep();\n }, 1000);\n });\n this.currentAudio\n .play()\n .then(() => {})\n .catch((error) => {\n continueWithNoAudio();\n });\n } else {\n continueWithNoAudio();\n }\n };\n\n const elementPromise = currentStep.selector\n ? waitForElement(currentStep.selector)\n : Promise.resolve(null);\n elementPromise.then(handleStep).catch(() => handleStep(null));\n }\n}\n","import { loadIcon } from \"./UI\";\nimport GleapTours from \"./GleapTours\";\nimport Gleap, { GleapEventManager, GleapSession } from \"./Gleap\";\nimport GleapCopilotTours from \"./GleapCopilotTours\";\n\nconst localStorageKey = \"gleap-tour-data\";\n\nexport default class GleapProductTours {\n productTourData = undefined;\n productTourId = undefined;\n unmuted = false;\n currentActiveIndex = undefined;\n gleapTourObj = undefined;\n disabled = false;\n\n // GleapReplayRecorder singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new GleapProductTours();\n return this.instance;\n } else {\n return this.instance;\n }\n }\n\n disable() {\n if (this.gleapTourObj) {\n this.gleapTourObj.destroy();\n }\n\n // Disable copilot tours.\n GleapCopilotTours.getInstance().disable();\n\n this.gleapTourObj = undefined;\n this.disabled = true;\n }\n\n constructor() {\n const self = this;\n\n if (typeof window !== \"undefined\") {\n const beforeUnloadListener = (event) => {\n if (\n !self?.disabled &&\n self?.productTourId &&\n self?.productTourData &&\n self?.productTourData?.tourType !== \"cobrowse\"\n ) {\n self.storeUncompletedTour();\n }\n };\n\n if (typeof window !== \"undefined\") {\n window.addEventListener(\"beforeunload\", beforeUnloadListener);\n }\n }\n }\n\n startWithConfig(tourId, config, delay = 0, manually = false) {\n // Prevent multiple tours from being started.\n if (this.productTourId || this.disabled) {\n return;\n }\n\n this.productTourId = tourId;\n this.productTourData = config;\n this.currentActiveIndex = 0;\n\n if (manually) {\n this.start();\n } else {\n const self = this;\n\n // Validate product tour.\n GleapSession.getInstance()\n .validateProductTour(tourId)\n .then(() => {\n if (delay > 0) {\n return setTimeout(() => {\n self.start();\n }, delay);\n } else {\n return this.start();\n }\n })\n .catch((error) => {\n console.log(\"Product tour is not live. Cleaning up...\");\n console.error(error);\n\n self.onComplete(false);\n });\n }\n }\n\n onComplete(success = true) {\n const comData = {\n tourId: this.productTourId,\n };\n\n if (success) {\n GleapEventManager.notifyEvent(\"productTourCompleted\", comData);\n Gleap.trackEvent(`tour-${this.productTourId}-completed`, comData);\n } else {\n GleapEventManager.notifyEvent(\"productTourQuit\", comData);\n Gleap.trackEvent(`tour-${this.productTourId}-quit`, comData);\n }\n\n // Clear data.\n if (this.gleapTourObj) {\n this.gleapTourObj.destroy();\n }\n\n this.gleapTourObj = undefined;\n this.productTourData = undefined;\n this.productTourId = undefined;\n this.currentActiveIndex = undefined;\n this.clearUncompletedTour();\n }\n\n loadUncompletedTour() {\n try {\n const data = JSON.parse(localStorage.getItem(localStorageKey));\n if (data?.tourData && data?.tourId) {\n return data;\n }\n } catch (e) {}\n\n return null;\n }\n\n storeUncompletedTour() {\n if (this.productTourId && this.productTourData) {\n try {\n let data = JSON.parse(\n JSON.stringify({\n tourData: this.productTourData,\n tourId: this.productTourId,\n })\n );\n\n data.tourData.steps = data.tourData.steps.slice(\n this.currentActiveIndex || 0,\n data.tourData.steps.length\n );\n\n localStorage.setItem(localStorageKey, JSON.stringify(data));\n } catch (e) {}\n } else {\n this.clearUncompletedTour();\n }\n }\n\n clearUncompletedTour() {\n try {\n localStorage.removeItem(localStorageKey);\n } catch (e) {}\n }\n\n start() {\n const config = this.productTourData;\n if (!config) {\n return;\n }\n\n if (config.tourType === \"cobrowse\") {\n return GleapCopilotTours.getInstance().startWithConfig(\n this.productTourId,\n config,\n (success) => {\n this.onComplete(success);\n }\n );\n }\n\n this.unmuted = false;\n const steps = config.steps;\n const self = this;\n\n var driverSteps = [];\n\n for (let i = 0; i < steps.length; i++) {\n const step = steps[i];\n\n const isClickMode = step.mode === \"CLICK\";\n const isInputMode = step.mode === \"INPUT\";\n\n var message = \"\";\n var hasSender = false;\n\n if (step.type === \"video-pointer\") {\n message = `
\n \n
${loadIcon(\n \"unmute\"\n )}
\n
`;\n } else {\n var senderHTML = ``;\n\n if (config.sender && config.sender.firstName) {\n hasSender = true;\n senderHTML = `
\n
\n
${config.sender.firstName}
\n
`;\n }\n\n message = `${senderHTML}
${step.message}
`;\n }\n\n const disableInteraction = !isClickMode && !isInputMode;\n\n var driverStep = {\n disableActiveInteraction: disableInteraction,\n mode: step.mode,\n popover: {\n description: message,\n popoverClass: `gleap-tour-popover-${step.type} ${\n !hasSender && \"gleap-tour-popover-no-sender\"\n } ${config.allowClose && \"gleap-tour-popover-can-close\"}`,\n ...(isClickMode\n ? {\n showButtons: [],\n }\n : {}),\n },\n };\n if (step.selector && step.selector.length > 0) {\n driverStep.element = step.selector;\n }\n driverSteps.push(driverStep);\n }\n\n var buttons = [\"next\", \"close\"];\n\n if (config.backButton) {\n buttons.push(\"previous\");\n }\n\n function onDocumentClick(evnt) {\n try {\n var gleapTourPopover = document.querySelector(\".gleap-tour-popover\");\n if (gleapTourPopover && !gleapTourPopover.contains(evnt.target)) {\n const stepIndex = self.gleapTourObj.getActiveIndex();\n const step = steps[stepIndex];\n const element = self.gleapTourObj.getActiveElement();\n\n if (step?.mode === \"CLICK\" && evnt?.target !== element) {\n const isInsideElement = element.contains(evnt?.target);\n if (!isInsideElement) {\n // Ignore clicks outside of the actual element.\n return;\n }\n }\n\n // Store next step index.\n self.currentActiveIndex = (self.currentActiveIndex || 0) + 1;\n self.storeUncompletedTour();\n\n if (\n (element && element.tagName === \"INPUT\") ||\n step.mode === \"INPUT\" ||\n evnt?.target?.id.includes(\"tooltip-svg\")\n ) {\n // Prevent.\n } else {\n self.gleapTourObj.moveNext();\n }\n }\n } catch (e) {}\n }\n\n this.gleapTourObj = GleapTours({\n showProgress: true,\n allowKeyboardControl: false,\n steps: driverSteps,\n showProgress: steps.length > 1,\n allowClose: config.allowClose,\n nextBtnText: config.nextText,\n doneBtnText: config.doneText,\n prevBtnText: config.prevText,\n showButtons: buttons,\n onHighlightStarted: (element, step, config) => {\n this.currentActiveIndex = config?.state?.activeIndex;\n this.storeUncompletedTour();\n },\n onElementNotFound: (step) => {\n document.removeEventListener(\"click\", onDocumentClick);\n\n this.onComplete(false);\n },\n onDestroyStarted: () => {\n if (!this.gleapTourObj.hasNextStep()) {\n // Mark as completed.\n this.onComplete(true);\n } else {\n // Mark as quit.\n this.onComplete(false);\n }\n\n document.removeEventListener(\"click\", onDocumentClick);\n },\n onPopoverRender: (popoverElement) => {\n // Fix for images and videos.\n if (popoverElement) {\n const mediaElements = document.querySelectorAll(\n \".gleap-tour-popover-description img, .gleap-tour-popover-description video\"\n );\n\n const performRequentialRefresh = () => {\n setTimeout(() => {\n this.gleapTourObj.refresh();\n }, 500);\n setTimeout(() => {\n this.gleapTourObj.refresh();\n }, 750);\n };\n\n for (let i = 0; i < mediaElements.length; i++) {\n const mediaElement = mediaElements[i];\n if (mediaElement.tagName === \"IMG\") {\n mediaElement.addEventListener(\"load\", () => {\n performRequentialRefresh();\n });\n mediaElement.addEventListener(\"error\", () => {\n performRequentialRefresh();\n });\n } else if (mediaElement.tagName === \"VIDEO\") {\n mediaElement.addEventListener(\"canplaythrough\", () => {\n performRequentialRefresh();\n });\n mediaElement.addEventListener(\"error\", () => {\n performRequentialRefresh();\n });\n }\n }\n }\n\n const playingClass = \"gleap-tour-video--playing\";\n const playPauseContainer = document.querySelector(\n \".gleap-tour-video-playpause\"\n );\n\n const videoElement = document.querySelector(\".gleap-tour-video-obj\");\n if (videoElement) {\n const videoContainer = videoElement.closest(\".gleap-tour-video\");\n\n if (self.unmuted) {\n if (videoElement) {\n videoElement.pause();\n videoElement.muted = false;\n videoElement.play();\n videoContainer.classList.add(playingClass);\n }\n }\n\n videoElement.addEventListener(\"ended\", function () {\n playPauseContainer.innerHTML = loadIcon(\"replay\");\n playPauseContainer.classList.add(\n \"gleap-tour-video-svg--fullscreen\"\n );\n videoContainer.classList.remove(playingClass);\n });\n\n videoElement.addEventListener(\"play\", function () {\n playPauseContainer.classList.remove(\n \"gleap-tour-video-svg--fullscreen\"\n );\n });\n\n if (playPauseContainer) {\n playPauseContainer.addEventListener(\"click\", () => clickVideo());\n }\n\n const clickVideo = () => {\n if (videoElement.muted) {\n self.unmuted = true;\n\n videoElement.pause();\n videoElement.currentTime = 0;\n videoElement.muted = false;\n videoElement.play();\n\n playPauseContainer.innerHTML = loadIcon(\"mute\");\n videoContainer.classList.add(playingClass);\n } else if (videoElement.paused) {\n videoElement.muted = false;\n videoElement.play();\n\n playPauseContainer.innerHTML = loadIcon(\"mute\");\n videoContainer.classList.add(playingClass);\n } else {\n videoElement.pause();\n playPauseContainer.innerHTML = loadIcon(\"unmute\");\n videoContainer.classList.remove(playingClass);\n }\n };\n }\n },\n });\n this.gleapTourObj.drive();\n\n document.addEventListener(\"click\", onDocumentClick, true);\n }\n}\n","import { injectStyledCSS } from \"./UI\";\nimport GleapNetworkIntercepter from \"./GleapNetworkIntercepter\";\nimport {\n fixGleapHeight,\n gleapDataParser,\n runFunctionWhenDomIsReady,\n} from \"./GleapHelper\";\nimport GleapSession from \"./GleapSession\";\nimport GleapStreamedEvent from \"./GleapStreamedEvent\";\nimport GleapConfigManager from \"./GleapConfigManager\";\nimport GleapFeedback from \"./GleapFeedback\";\nimport GleapFrameManager from \"./GleapFrameManager\";\nimport GleapMetaDataManager from \"./GleapMetaDataManager\";\nimport GleapConsoleLogManager from \"./GleapConsoleLogManager\";\nimport GleapClickListener from \"./GleapClickListener\";\nimport GleapFeedbackButtonManager from \"./GleapFeedbackButtonManager\";\nimport GleapCustomDataManager from \"./GleapCustomDataManager\";\nimport GleapEventManager from \"./GleapEventManager\";\nimport GleapCustomActionManager from \"./GleapCustomActionManager\";\nimport GleapReplayRecorder from \"./GleapReplayRecorder\";\nimport GleapMarkerManager from \"./GleapMarkerManager\";\nimport GleapTranslationManager from \"./GleapTranslationManager\";\nimport GleapShortcutListener from \"./GleapShortcutListener\";\nimport GleapPreFillManager from \"./GleapPreFillManager\";\nimport GleapNotificationManager from \"./GleapNotificationManager\";\nimport GleapBannerManager from \"./GleapBannerManager\";\nimport GleapModalManager from \"./GleapModalManager\";\nimport GleapAudioManager from \"./GleapAudioManager\";\nimport GleapTagManager from \"./GleapTagManager\";\nimport GleapAdminManager from \"./GleapAdminManager\";\nimport GleapProductTours from \"./GleapProductTours\";\nimport { checkPageFilter } from \"./GleapPageFilter\";\nimport { registerGleapChecklist } from \"./GleapChecklist\";\nimport ChecklistNetworkManager from \"./ChecklistNetworkManager\";\n\nif (\n typeof window !== \"undefined\" &&\n typeof HTMLCanvasElement !== \"undefined\" &&\n HTMLCanvasElement.prototype &&\n HTMLCanvasElement.prototype.__originalGetContext === undefined\n) {\n HTMLCanvasElement.prototype.__originalGetContext =\n HTMLCanvasElement.prototype.getContext;\n HTMLCanvasElement.prototype.getContext = function (type, options) {\n return this.__originalGetContext(type, {\n ...options,\n preserveDrawingBuffer: true,\n });\n };\n}\n\nif (\n typeof customElements !== \"undefined\" &&\n typeof HTMLElement !== \"undefined\" &&\n typeof window !== \"undefined\"\n) {\n registerGleapChecklist();\n}\n\nclass Gleap {\n static invoked = true;\n static silentCrashReportSent = false;\n initialized = false;\n offlineMode = false;\n disablePageTracking = false;\n disableInAppNotifications = false;\n\n // Global data\n globalData = {\n screenRecordingData: null,\n webReplay: null,\n snapshotPosition: {\n x: 0,\n y: 0,\n },\n };\n\n // Gleap singleton\n static instance;\n static getInstance() {\n if (!this.instance) {\n this.instance = new Gleap();\n return this.instance;\n } else {\n return this.instance;\n }\n }\n\n /**\n * Main constructor\n */\n constructor() {\n if (typeof window !== \"undefined\") {\n // Make sure all instances are ready.\n GleapMetaDataManager.getInstance();\n GleapConsoleLogManager.getInstance().start();\n GleapClickListener.getInstance().start();\n GleapAdminManager.getInstance().start();\n }\n }\n\n /**\n * Sets the development environment\n * @param {*} environment\n */\n static setEnvironment(environment) {\n GleapMetaDataManager.getInstance().environment = environment;\n }\n\n /**\n * Set tags to be submitted with each ticket.\n * @param {*} tags\n */\n static setTags(tags) {\n GleapTagManager.getInstance().setTags(tags);\n }\n\n /**\n * Sets a custom URL handler.\n * @param {*} urlHandler\n */\n static setUrlHandler(urlHandler) {\n GleapFrameManager.getInstance().setUrlHandler(urlHandler);\n }\n\n /**\n * Active the Gleap offline mode.\n * @param {*} offlineMode\n */\n static setOfflineMode(offlineMode) {\n const instance = this.getInstance();\n instance.offlineMode = offlineMode;\n }\n\n /**\n * Disable the in-app notifications.\n * @param {*} disableInAppNotifications\n */\n static setDisableInAppNotifications(disableInAppNotifications) {\n const instance = this.getInstance();\n instance.disableInAppNotifications = disableInAppNotifications;\n }\n\n /**\n * Disable the default page tracking.\n * @param {*} disablePageTracking\n */\n static setDisablePageTracking(disablePageTracking) {\n const instance = this.getInstance();\n instance.disablePageTracking = disablePageTracking;\n }\n\n /**\n * Revert console log overwrite.\n */\n static disableConsoleLogOverwrite() {\n GleapConsoleLogManager.getInstance().stop();\n }\n\n /**\n * Set the AI tools.\n * @param {*} tools\n */\n static setAiTools(tools) {\n GleapConfigManager.getInstance().setAiTools(tools);\n GleapFrameManager.getInstance().sendConfigUpdate();\n }\n\n /**\n * Attaches external network logs.\n */\n static attachNetworkLogs(networkLogs) {\n GleapNetworkIntercepter.getInstance().externalRequests =\n gleapDataParser(networkLogs);\n }\n\n /**\n * Add entry to logs.\n * @param {*} message\n * @param {*} logLevel\n * @returns\n */\n static log(message, logLevel = \"INFO\") {\n GleapConsoleLogManager.getInstance().addLog(message, logLevel);\n }\n\n /**\n * Initializes the SDK\n * @param {*} sdkKey\n */\n static initialize(sdkKey) {\n const instance = this.getInstance();\n if (instance.initialized) {\n console.warn(\"Gleap already initialized.\");\n return;\n }\n\n instance.initialized = true;\n\n try {\n fixGleapHeight();\n } catch (error) {}\n\n // Start session\n const sessionInstance = GleapSession.getInstance();\n sessionInstance.sdkKey = sdkKey;\n sessionInstance.setOnSessionReady(() => {\n // Run auto configuration.\n setTimeout(() => {\n GleapConfigManager.getInstance()\n .start()\n .then(() => {\n GleapStreamedEvent.getInstance().start();\n\n runFunctionWhenDomIsReady(() => {\n // Inject the widget buttons\n GleapFeedbackButtonManager.getInstance().injectFeedbackButton();\n\n // Inject the notification container\n GleapNotificationManager.getInstance().injectNotificationUI();\n\n // Check for uncompleted tour.\n Gleap.checkForUncompletedTour();\n\n // Check for URL params.\n Gleap.checkForUrlParams();\n\n // Notify event.\n GleapEventManager.notifyEvent(\"initialized\");\n });\n })\n .catch(function (err) {\n console.warn(\"Failed to initialize Gleap.\");\n });\n }, 0);\n });\n sessionInstance.startSession();\n }\n\n static openURL(url, newTab = false) {\n GleapFrameManager.getInstance().urlHandler(url, newTab);\n }\n\n static checkForUrlParams() {\n if (typeof window === \"undefined\" || !window.location.search) {\n return;\n }\n\n try {\n const urlParams = new URLSearchParams(window.location.search);\n\n const widget = urlParams.get(\"gleap_widget\");\n if (widget && widget.length > 0) {\n Gleap.open();\n }\n\n const conversationFlow = urlParams.get(\"gleap_conversation\");\n if (conversationFlow && conversationFlow.length > 0) {\n if (conversationFlow === \"true\") {\n Gleap.startConversation(true);\n } else {\n Gleap.startBot(conversationFlow, true);\n }\n }\n\n const feedbackFlow = urlParams.get(\"gleap_feedback\");\n if (feedbackFlow && feedbackFlow.length > 0) {\n Gleap.startFeedbackFlow(feedbackFlow);\n }\n const surveyFlow = urlParams.get(\"gleap_survey\");\n const surveyFlowFormat = urlParams.get(\"gleap_survey_format\");\n if (surveyFlow && surveyFlow.length > 0) {\n Gleap.showSurvey(\n surveyFlow,\n surveyFlowFormat === \"survey_full\" ? \"survey_full\" : \"survey\"\n );\n }\n const tourId = urlParams.get(\"gleap_tour\");\n if (tourId && tourId.length > 0) {\n var tourDelay = parseInt(urlParams.get(\"gleap_tour_delay\"));\n if (isNaN(tourDelay)) {\n tourDelay = 2;\n }\n\n setTimeout(() => {\n Gleap.startProductTour(tourId);\n }, tourDelay * 1000);\n }\n } catch (exp) {}\n }\n\n /**\n * Destroy\n * @returns\n */\n static destroy() {\n GleapReplayRecorder.getInstance().stop();\n GleapStreamedEvent.getInstance().stop();\n GleapFrameManager.getInstance().destroy();\n GleapFeedbackButtonManager.getInstance().destroy();\n GleapNotificationManager.getInstance().clearAllNotifications(true);\n GleapSession.getInstance().clearSession(0, false);\n GleapBannerManager.getInstance().removeBannerUI();\n\n // Reset the initialized flag and clear the instance\n this.instance = null;\n }\n\n /**\n * Close any open banner.\n */\n static closeBanner() {\n GleapBannerManager.getInstance().removeBannerUI();\n }\n\n /**\n * Close any open modal.\n */\n static closeModal() {\n GleapModalManager.getInstance().hideModal();\n }\n\n /**\n * Enable or disable Gleap session tracking through cookies.\n * @param {*} useCookies\n */\n static setUseCookies(useCookies) {\n GleapSession.getInstance().useCookies = useCookies;\n }\n\n /**\n * Indentifies the user session\n * @param {string} userId\n * @param {*} userData\n */\n static identify(userId, userData, userHash) {\n return GleapSession.getInstance().identifySession(\n userId,\n gleapDataParser(userData),\n userHash\n );\n }\n\n /**\n * Updates the contact data.\n * @param {*} userData\n */\n static updateContact(userData) {\n return GleapSession.getInstance().updateSession(gleapDataParser(userData));\n }\n\n /**\n * Clears the current contact.\n */\n static clearIdentity() {\n GleapSession.getInstance().clearSession();\n }\n\n /**\n * Returns the current user session\n */\n static getIdentity() {\n return GleapSession.getInstance().getSession();\n }\n\n /**\n * Returns whether the user is identified or not.\n */\n static isUserIdentified() {\n const session = GleapSession.getInstance().session;\n if (session && session.userId && session.userId.length > 0) {\n return true;\n }\n return false;\n }\n\n /**\n * Widget opened status\n * @returns {boolean} isOpened\n */\n static isOpened() {\n return GleapFrameManager.getInstance().isOpened();\n }\n\n /**\n * Hides any open Gleap dialogs.\n */\n static hide() {\n GleapFrameManager.getInstance().hideWidget();\n }\n\n /**\n * Sets the maximum network request count.\n */\n static setMaxNetworkRequests(maxRequests) {\n GleapNetworkIntercepter.getInstance().setMaxRequests(maxRequests);\n }\n\n /**\n * Sets the maximum network request count.\n */\n static startNetworkLogger() {\n GleapNetworkIntercepter.getInstance().start();\n }\n\n /**\n * Sets the network logger blacklist.\n * @param {Array} networkLogBlacklist\n */\n static setNetworkLogsBlacklist(networkLogBlacklist) {\n GleapNetworkIntercepter.getInstance().setBlacklist(networkLogBlacklist);\n }\n\n /**\n * Sets the network logger props to ignore.\n * @param {Array} filters\n */\n static setNetworkLogPropsToIgnore(filters) {\n GleapNetworkIntercepter.getInstance().setFilters(filters);\n }\n\n /**\n * Set custom replay options.\n * @param {*} options\n */\n static setReplayOptions(options) {\n GleapReplayRecorder.getInstance().setOptions(options);\n }\n\n /**\n * Closes any open Gleap dialogs.\n * @param {boolean} resetRoutes\n */\n static close(resetRoutes = false) {\n GleapFrameManager.getInstance().hideWidget(resetRoutes);\n }\n\n /**\n * Starts the Gleap flow.\n */\n static open() {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Track a custom event\n * @param {string} name\n * @param {any} data\n */\n static trackEvent(name, data) {\n GleapStreamedEvent.getInstance().logEvent(name, data);\n }\n\n /**\n * Logs a custom event\n * @param {string} name\n * @param {any} data\n * @deprecated Please use trackEvent instead.\n */\n static logEvent(name, data) {\n GleapStreamedEvent.getInstance().logEvent(name, data);\n }\n\n /**\n * Prefills a specific form field.\n * @param {*} key\n * @param {*} value\n */\n static preFillForm(data) {\n const cleanedData = gleapDataParser(data);\n GleapPreFillManager.getInstance().formPreFill = cleanedData;\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"prefill-form-data\",\n data: cleanedData,\n },\n true\n );\n }\n\n /**\n * Register events for Gleap.\n * @param {*} eventName\n * @param {*} callback\n */\n static on(eventName, callback) {\n GleapEventManager.on(eventName, callback);\n }\n\n /**\n * Enable or disable shortcuts\n * @param {boolean} enabled\n */\n static enableShortcuts(enabled) {\n if (enabled) {\n GleapShortcutListener.getInstance().start();\n } else {\n GleapShortcutListener.getInstance().stop();\n }\n }\n\n /**\n * Show or hide the feedback button\n * @param {*} show\n * @returns\n */\n static showFeedbackButton(show) {\n GleapFeedbackButtonManager.getInstance().toggleFeedbackButton(show);\n }\n\n /**\n * Sets the app version code.\n * @param {string} appVersionCode\n */\n static setAppVersionCode(appVersionCode) {\n GleapMetaDataManager.setAppVersionCode(appVersionCode);\n }\n\n /**\n * Sets the app version code.\n * @param {string} appVersionCode\n */\n static setAppBuildNumber(appBuildNumber) {\n GleapMetaDataManager.setAppBuildNumber(appBuildNumber);\n }\n\n /**\n * Set a custom ws api url.\n * @param {string} wsApiUrl\n */\n static setWSApiUrl(wsApiUrl) {\n GleapSession.getInstance().wsApiUrl = wsApiUrl;\n }\n\n /**\n * Set a custom api url.\n * @param {string} apiUrl\n */\n static setApiUrl(apiUrl) {\n GleapSession.getInstance().apiUrl = apiUrl;\n }\n\n /**\n * Set a custom banner url.\n * @param {string} bannerUrl\n */\n static setBannerUrl(bannerUrl) {\n GleapBannerManager.getInstance().setBannerUrl(bannerUrl);\n }\n\n /**\n * Set a custom modal url.\n * @param {string} modalUrl\n */\n static setModalUrl(modalUrl) {\n GleapModalManager.getInstance().setModalUrl(modalUrl);\n }\n\n /**\n * Set a custom frame api url.\n * @param {string} frameUrl\n */\n static setFrameUrl(frameUrl) {\n GleapFrameManager.getInstance().frameUrl = frameUrl;\n }\n\n /**\n * This method is used to set ticket attributes programmatically.\n * @param {*} key The key of the attribute you want to add.\n * @param {*} value The value to set.\n */\n static setTicketAttribute(key, value) {\n GleapCustomDataManager.getInstance().setTicketAttribute(key, value);\n }\n\n /**\n * This method is used to unset ticket attributes programmatically.\n * @param {*} key The key of the attribute you want to unset.\n */\n static unsetTicketAttribute(key) {\n GleapCustomDataManager.getInstance().unsetTicketAttribute(key);\n }\n\n /**\n * This method is used to clear ticket attributes programmatically.\n */\n static clearTicketAttributes() {\n GleapCustomDataManager.getInstance().clearTicketAttributes();\n }\n\n /**\n * Set custom data that will be attached to the bug-report.\n * @param {*} data\n */\n static attachCustomData(data) {\n GleapCustomDataManager.getInstance().attachCustomData(data);\n }\n\n /**\n * Add one key value pair to the custom data object\n * @param {*} key The key of the custom data entry you want to add.\n * @param {*} value The custom data you want to add.\n */\n static setCustomData(key, value) {\n GleapCustomDataManager.getInstance().setCustomData(key, value);\n }\n\n /**\n * Remove one key value pair of the custom data object\n * @param {*} key The key of the custom data entry you want to remove.\n */\n static removeCustomData(key) {\n GleapCustomDataManager.getInstance().removeCustomData(key);\n }\n\n /**\n * Clear the custom data\n */\n static clearCustomData() {\n GleapCustomDataManager.getInstance().clearCustomData();\n }\n\n /**\n * Play or mute the sound.\n * @param {*} play\n */\n static playSound(play) {\n GleapAudioManager.playSound(play);\n }\n\n /**\n * Show or hide the notification badge count.\n * @param {boolean} showNotificationBadge show or hide the notification badge\n *\n */\n static showTabNotificationBadge(showNotificationBadge) {\n const notificationInstance = GleapNotificationManager.getInstance();\n notificationInstance.showNotificationBadge = showNotificationBadge;\n notificationInstance.updateTabBarNotificationCount();\n }\n\n /**\n * Override the browser language.\n * @param {string} language country code with two letters\n */\n static setLanguage(language) {\n GleapTranslationManager.getInstance().setOverrideLanguage(language);\n\n if (Gleap.getInstance().initialized) {\n setTimeout(() => {\n Gleap.getInstance().softReInitialize();\n\n // Update language for contact.\n Gleap.updateContact({\n lang: language,\n });\n }, 1000);\n }\n }\n\n /**\n * Register custom action\n * @param {*} action\n */\n static registerCustomAction(customAction) {\n GleapCustomActionManager.registerCustomAction(customAction);\n }\n\n /**\n * Triggers a custom action\n * @param {*} actionName\n */\n static triggerCustomAction(name) {\n GleapCustomActionManager.triggerCustomAction(name);\n }\n\n /**\n * Sets a custom color scheme.\n * @param {string} primaryColor\n */\n static setStyles(\n primaryColor,\n headerColor,\n buttonColor,\n backgroundColor = \"#ffffff\",\n borderRadius = 20,\n buttonX = 20,\n buttonY = 20,\n buttonStyle = GleapFeedbackButtonManager.FEEDBACK_BUTTON_BOTTOM_LEFT\n ) {\n runFunctionWhenDomIsReady(() => {\n injectStyledCSS(\n primaryColor,\n headerColor,\n buttonColor,\n borderRadius,\n backgroundColor,\n buttonX,\n buttonY,\n buttonStyle\n );\n });\n }\n\n /**\n * Sends a silent feedback report\n * @param {*} formData\n * @param {*} priority\n * @param {*} excludeData\n */\n static sendSilentCrashReport(\n description = \"\",\n priority = \"MEDIUM\",\n excludeData = {\n screenshot: true,\n replays: true,\n attachments: true,\n }\n ) {\n return Gleap.sendSilentCrashReportWithFormData(\n {\n description,\n },\n priority,\n excludeData\n );\n }\n\n /**\n * Sends a silent feedback report\n * @param {*} formData\n * @param {*} priority\n * @param {*} excludeData\n */\n static sendSilentCrashReportWithFormData(\n formData,\n priority = \"MEDIUM\",\n excludeData = {\n screenshot: true,\n replays: true,\n attachments: true,\n }\n ) {\n if (this.silentCrashReportSent) {\n return;\n }\n\n this.silentCrashReportSent = true;\n setTimeout(() => {\n this.silentCrashReportSent = false;\n }, 10000);\n\n const excludeDataCleaned = excludeData ? gleapDataParser(excludeData) : {};\n const sessionInstance = GleapSession.getInstance();\n if (!sessionInstance.ready) {\n return;\n }\n\n var newFormData = formData ? formData : {};\n if (sessionInstance.session.email) {\n newFormData.reportedBy = sessionInstance.session.email;\n }\n\n const feedback = new GleapFeedback(\n \"CRASH\",\n priority,\n newFormData,\n true,\n excludeDataCleaned\n );\n feedback\n .sendFeedback()\n .then(() => {})\n .catch((error) => {});\n }\n\n /**\n * Shows a survey manually.\n * @param {*} actionType\n * @param {*} format\n */\n static showSurvey(actionType, format = \"survey\") {\n Gleap.startFeedbackFlowWithOptions(\n actionType,\n {\n hideBackButton: true,\n format,\n },\n true\n );\n }\n\n /**\n * Starts a classic feedback form.\n */\n static startClassicForm(formId, showBackButton) {\n Gleap.startFeedbackFlowWithOptions(formId, {\n hideBackButton: !showBackButton,\n });\n }\n\n /**\n * Starts the bug reporting flow.\n */\n static startFeedbackFlow(feedbackFlow, showBackButton) {\n Gleap.startFeedbackFlowWithOptions(feedbackFlow, {\n hideBackButton: !showBackButton,\n });\n }\n\n /**\n * Starts the bug reporting flow.\n */\n static startFeedbackFlowWithOptions(\n feedbackFlow,\n options = {},\n isSurvey = false\n ) {\n const { autostartDrawing, hideBackButton, format } = options;\n const sessionInstance = GleapSession.getInstance();\n if (!sessionInstance.ready) {\n return;\n }\n\n // Initially set scroll position\n Gleap.getInstance().setGlobalDataItem(\"snapshotPosition\", {\n x: window.scrollX,\n y: window.scrollY,\n });\n\n var action = \"start-feedbackflow\";\n if (isSurvey) {\n action = \"start-survey\";\n }\n\n GleapFrameManager.getInstance().setAppMode(isSurvey ? format : \"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: action,\n data: {\n flow: feedbackFlow,\n hideBackButton: hideBackButton,\n format,\n },\n },\n true\n );\n\n if (autostartDrawing) {\n GleapFrameManager.getInstance().showDrawingScreen(\"screenshot\");\n } else {\n GleapFrameManager.getInstance().showWidget();\n }\n }\n\n /**\n * Opens the conversations overview.\n */\n static openConversations(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-conversations\",\n data: {\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens a conversation\n */\n static openConversation(shareToken, showBackButton = true) {\n if (!shareToken) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-conversation\",\n data: {\n shareToken,\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Starts a new conversation\n */\n static startConversation(showBackButton = true) {\n Gleap.startBot(\"\", showBackButton);\n }\n\n /**\n * Starts a new conversation and attaches the bot with the given id.\n */\n static startBot(botId, showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"start-bot\",\n data: {\n botId: botId ? botId : \"\",\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens a help center collection\n */\n static openHelpCenterCollection(collectionId, showBackButton = true) {\n if (!collectionId) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-help-collection\",\n data: {\n collectionId,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens a help article\n */\n static openHelpCenterArticle(articleId, showBackButton = true) {\n if (!articleId) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-help-article\",\n data: {\n articleId,\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens the help center.\n */\n static openHelpCenter(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-helpcenter\",\n data: {\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Search for news articles in the help center\n */\n static searchHelpCenter(term, showBackButton = true) {\n if (!term) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-helpcenter-search\",\n data: {\n term,\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens a news article\n */\n static openNewsArticle(id, showBackButton = true) {\n if (!id) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-news-article\",\n data: {\n id,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Open the checklists overview.\n */\n static openChecklists(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-checklists\",\n data: {},\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Starts a new checklist and opens it.\n */\n static startChecklist(\n outboundId,\n showBackButton = true,\n sharedKey = undefined\n ) {\n if (!outboundId) {\n return false;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"start-checklist\",\n data: {\n outboundId: outboundId,\n hideBackButton: !showBackButton,\n ...(sharedKey ? { sharedKey: sharedKey } : {}),\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n\n return true;\n }\n\n /**\n * Open an existing checklist.\n */\n static openChecklist(checklistId, showBackButton = true) {\n if (!checklistId) {\n return;\n }\n\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-checklist\",\n data: {\n id: checklistId,\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Gets the full checklist data by validating the outbound ID and fetching the data.\n * @param {string} outboundId - The outbound checklist ID to get data for.\n * @param {string} [sharedKey] - Optional shared key for the checklist.\n * @returns {Promise} A promise that resolves with the full checklist data.\n *\n * Available events for checklist updates (use Gleap.on() to listen):\n * - 'checklist-loaded': Fired when a checklist is initially loaded\n * - 'checklist-update': Fired when checklist data is updated\n * - 'checklist-step-completed': Fired when a step is marked as completed\n * - 'checklist-completed': Fired when the entire checklist is completed\n */\n static getChecklistData(outboundId, sharedKey) {\n if (!outboundId) {\n return Promise.reject(new Error(\"outboundId is required\"));\n }\n\n const networkManager = ChecklistNetworkManager.getInstance();\n\n // First validate the checklist to get the internal ID\n return networkManager\n .validateChecklist(outboundId, sharedKey)\n .then((internalId) => {\n // Then fetch the full checklist data\n return networkManager.fetchChecklist(internalId);\n });\n }\n\n /**\n * Opens the news overview.\n */\n static openNews(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-news\",\n data: {\n hideBackButton: !showBackButton,\n },\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n /**\n * Opens the feature requests overview.\n */\n static openFeatureRequests(showBackButton = true) {\n GleapFrameManager.getInstance().setAppMode(\"widget\");\n\n GleapFrameManager.getInstance().sendMessage(\n {\n name: \"open-feature-requests\",\n data: {},\n },\n true\n );\n\n GleapFrameManager.getInstance().showWidget();\n }\n\n isLiveMode() {\n if (this.offlineMode === true) {\n return false;\n }\n\n var hostname = window.location.hostname;\n const isLocalHost =\n [\"localhost\", \"127.0.0.1\", \"0.0.0.0\", \"\", \"::1\"].includes(hostname) ||\n hostname.startsWith(\"192.168.\") ||\n hostname.startsWith(\"10.0.\") ||\n hostname.endsWith(\".local\") ||\n !hostname.includes(\".\");\n return !isLocalHost;\n }\n\n softReInitialize() {\n GleapFrameManager.getInstance().destroy();\n GleapConfigManager.getInstance()\n .start()\n .then(() => {\n // Update the feedback button.\n GleapFeedbackButtonManager.getInstance().refresh();\n\n // Inject the notification container\n GleapNotificationManager.getInstance().injectNotificationUI();\n })\n .catch(function (err) {\n console.warn(\"Failed to initialize Gleap.\");\n });\n }\n\n /**\n * Performs an action.\n * @param {*} action\n */\n performActions(actions) {\n for (let i = 0; i < actions.length; i++) {\n const action = actions[i];\n if (action && action.actionType) {\n if (action.pageFilter && window && window.location) {\n const passed = checkPageFilter(\n window.location.href,\n action.pageFilter,\n action.pageFilterType\n );\n\n if (!passed) {\n continue;\n }\n }\n\n if (action.actionType === \"notification\") {\n if (action?.data?.checklist?.popupType === \"widget\") {\n Gleap.openChecklist(action.data.checklist.id, true);\n } else {\n if (!this.disableInAppNotifications) {\n Gleap.showNotification(action);\n }\n }\n } else if (action.actionType === \"banner\") {\n Gleap.showBanner(action);\n } else if (action.actionType === \"modal\") {\n Gleap.showModal(action);\n } else if (action.actionType === \"tour\") {\n Gleap.startProductTourWithConfig(action.outbound, action.data, false);\n } else {\n Gleap.showSurvey(action.actionType, action.format);\n }\n }\n }\n }\n\n static startProductTour(tourId, checkStartUrl = false) {\n const self = this;\n GleapSession.getInstance()\n .startProductTourConfig(tourId)\n .then((config) => {\n if (\n checkStartUrl &&\n config?.startURL &&\n !window?.location?.href?.includes(config?.baseURL)\n ) {\n window.location.href = `${config.startURL}?gleap_tour=${tourId}&gleap_tour_delay=1`;\n return;\n }\n\n self.startProductTourWithConfig(tourId, config, true);\n })\n .catch((error) => {});\n }\n\n static checkForUncompletedTour() {\n const tourData = GleapProductTours.getInstance().loadUncompletedTour();\n if (tourData) {\n GleapProductTours.getInstance().startWithConfig(\n tourData.tourId,\n tourData.tourData,\n 500\n );\n }\n }\n\n static startProductTourWithConfig(tourId, config, manually = false) {\n GleapProductTours.getInstance().startWithConfig(\n tourId,\n config,\n 0,\n manually\n );\n }\n\n static showBanner(data) {\n try {\n GleapBannerManager.getInstance().showBanner(data);\n } catch (e) {}\n }\n\n static showModal(data) {\n try {\n GleapModalManager.getInstance().showModal(data);\n } catch (e) {}\n }\n\n static showNotification(data) {\n GleapNotificationManager.getInstance().showNotification(data);\n }\n\n /**\n * Sets a global data value\n * @param {*} key\n * @param {*} value\n */\n setGlobalDataItem(key, value) {\n this.globalData[key] = value;\n }\n\n /**\n * Gets a global data value\n * @param {*} key\n * @returns\n */\n getGlobalDataItem(key) {\n return this.globalData[key];\n }\n\n /**\n * Takes the current replay and assigns it to the global data array.\n */\n takeCurrentReplay() {\n const replayData = GleapReplayRecorder.getInstance().getReplayData();\n this.setGlobalDataItem(\"webReplay\", replayData);\n }\n}\n\n// Check for unperformed Gleap actions.\nif (typeof window !== \"undefined\") {\n const GleapActions = window.GleapActions;\n if (GleapActions && GleapActions.length > 0) {\n for (var i = 0; i < GleapActions.length; i++) {\n const GLAction = GleapActions[i];\n if (GLAction && GLAction.e && Gleap[GLAction.e]) {\n Gleap[GLAction.e].apply(Gleap, GLAction.a);\n }\n }\n }\n}\n\nconst handleGleapLink = (href) => {\n try {\n const urlParts = href.split(\"/\");\n const type = urlParts[2];\n if (type === \"article\") {\n const identifier = urlParts[3];\n Gleap.openHelpCenterArticle(identifier, true);\n }\n\n if (type === \"collection\") {\n const identifier = urlParts[3];\n Gleap.openHelpCenterCollection(identifier, true);\n }\n\n if (type === \"flow\") {\n const identifier = urlParts[3];\n Gleap.startFeedbackFlow(identifier, true);\n }\n\n if (type === \"survey\") {\n const identifier = urlParts[3];\n Gleap.showSurvey(identifier);\n }\n\n if (type === \"bot\") {\n const identifier = urlParts[3];\n Gleap.startBot(identifier, true);\n }\n\n if (type === \"news\") {\n const identifier = urlParts[3];\n Gleap.openNewsArticle(identifier, true);\n }\n\n if (type === \"checklist\") {\n const identifier = urlParts[3];\n Gleap.startChecklist(identifier, true, urlParts[4]);\n }\n\n if (type === \"tour\") {\n const identifier = urlParts[3];\n Gleap.startProductTour(identifier);\n }\n } catch (e) {\n console.error(\"Failed to handle Gleap link: \", href);\n }\n};\n\nexport {\n GleapNetworkIntercepter,\n GleapAudioManager,\n GleapNotificationManager,\n GleapBannerManager,\n GleapModalManager,\n GleapPreFillManager,\n GleapShortcutListener,\n GleapMarkerManager,\n GleapTranslationManager,\n GleapReplayRecorder,\n GleapFeedback,\n GleapConsoleLogManager,\n GleapCustomActionManager,\n GleapEventManager,\n GleapCustomDataManager,\n GleapFeedbackButtonManager,\n GleapClickListener,\n GleapSession,\n GleapStreamedEvent,\n GleapConfigManager,\n GleapFrameManager,\n GleapMetaDataManager,\n GleapTagManager,\n GleapProductTours,\n handleGleapLink,\n};\n\nexport default Gleap;\n","/**\n * Gleap Checklist Web Component\n *\n * Displays an interactive checklist fetched from the Gleap API.\n * Allows users to view steps, mark them as done, trigger actions,\n * and automatically updates based on external events. Includes localization support\n * via GleapTranslationManager.\n *\n * Waits for a Gleap session to be available before initializing and\n * reloads when the session changes (via 'session-updated' event).\n *\n * @element gleap-checklist\n *\n * @attr {string} checklistId - The outbound ID of the checklist to display. Required.\n * @attr {boolean} [info=true] - Whether to display the info section (title, description, sender).\n * @attr {boolean} [progressbar=true] - Whether to display the progress bar.\n * @attr {boolean} [dark=false] - Apply dark mode styling.\n * @attr {boolean} [floating=false] - When set to \"true\", shows a small bubble that expands on click.\n *\n * @cssprop --color-bg - Background color.\n * @cssprop --color-font-title - Title text color.\n * @cssprop --color-font-text - Body text color.\n * @cssprop --color-font-light - Lighter text color.\n * @cssprop --color-primary - Primary accent color.\n * @cssprop --color-primary-light - Light primary color shade.\n * @cssprop --color-primary-contrast - Text color for primary buttons.\n * @cssprop --color-border - Border color.\n * @cssprop --color-gray-light - Light gray background/border color.\n * @cssprop --color-gray-lighter - Even lighter gray background.\n * @cssprop --color-gray-dark - Darker gray text/icon color.\n * @cssprop --color-success - Success color (e.g., for completed items).\n * @cssprop --color-success-light - Contrast color for success elements.\n * @cssprop --radius-sm - Small border radius.\n * @cssprop --radius-lg - Large border radius.\n * @cssprop --radius-full - Full (pill) border radius.\n * @cssprop --shadow-sm - Small box shadow.\n * @cssprop --shadow-md - Medium box shadow.\n * @cssprop --animation-duration - Duration for animations (e.g., accordion).\n * @cssprop --animation-timing - Timing function for animations.\n */\nimport ChecklistNetworkManager from \"./ChecklistNetworkManager\";\nimport Gleap, {\n GleapConfigManager,\n GleapSession,\n GleapTranslationManager,\n GleapEventManager,\n} from \"./Gleap\";\n\nexport const registerGleapChecklist = () => {\n if (\n typeof customElements !== \"undefined\" &&\n typeof HTMLElement !== \"undefined\" &&\n typeof window !== \"undefined\"\n ) {\n class GleapChecklist extends HTMLElement {\n /** @private {number} */\n activeStep = -1;\n /** @private {object|null} */\n checklistData = null;\n /** @private {boolean} */\n _isInitialLoad = false;\n /** @private {boolean} */\n _initialActiveSet = false;\n /** @private {boolean} Flag indicating if the component has loaded data at least once. */\n _hasLoaded = false;\n /** @private {boolean} Flag indicating if a Gleap session is currently considered active by the component. */\n _isSessionReady = false;\n\n /** @private {Function} */\n _boundHandleChecklistUpdate = this.handleChecklistUpdate.bind(this);\n /** @private {Function} */\n _boundHandleSessionUpdate = this.handleSessionUpdate.bind(this);\n\n constructor() {\n super();\n this.attachShadow({ mode: \"open\" });\n // Ensure NetworkManager instance is created only if Gleap is available\n try {\n if (\n typeof GleapSession !== \"undefined\" &&\n typeof ChecklistNetworkManager !== \"undefined\"\n ) {\n this._networkManager = ChecklistNetworkManager.getInstance();\n } else {\n this._networkManager = null;\n }\n } catch (e) {\n this._networkManager = null;\n }\n // Bind click handlers for floating mode.\n this._boundFloatingLauncherClick =\n this.handleFloatingLauncherClick.bind(this);\n this._boundFloatingCloseClick =\n this.handleFloatingCloseClick.bind(this);\n this._floatingHideTimeout = null;\n }\n\n // --- Observed Attributes ---\n static get observedAttributes() {\n return [\n \"checklistId\",\n \"info\",\n \"progressbar\",\n \"dark\",\n \"floating\",\n \"sharedKey\",\n ];\n }\n\n // --- Lifecycle Callbacks ---\n connectedCallback() {\n window.addEventListener(\n \"checkListUpdate\",\n this._boundHandleChecklistUpdate\n );\n window.addEventListener(\n \"session-updated\",\n this._boundHandleSessionUpdate\n );\n window.addEventListener(\n \"resize\",\n (this._boundResizeHandler = this.handleResize.bind(this))\n );\n this._checkSessionAndLoad();\n }\n\n disconnectedCallback() {\n window.removeEventListener(\n \"checkListUpdate\",\n this._boundHandleChecklistUpdate\n );\n window.removeEventListener(\n \"session-updated\",\n this._boundHandleSessionUpdate\n );\n window.removeEventListener(\"resize\", this._boundResizeHandler);\n this.removeFloatingClickListeners();\n if (this._floatingHideTimeout) {\n clearTimeout(this._floatingHideTimeout);\n this._floatingHideTimeout = null;\n }\n this.checklistData = null;\n this.activeStep = -1;\n this._hasLoaded = false;\n this._isSessionReady = false;\n this._initialActiveSet = false;\n this.renderResponse();\n }\n\n handleResize() {\n this.updateActiveTaskMaxHeight();\n }\n\n attributeChangedCallback(name, oldValue, newValue) {\n if (oldValue !== newValue) {\n if (name === \"checklistId\" && this._isSessionReady) {\n this.loadChecklist();\n } else if (name !== \"checklistId\" && this._hasLoaded) {\n if (this.checklistData) {\n this.renderChecklist(this.checklistData);\n }\n }\n }\n }\n\n // --- Session Handling ---\n _checkSessionAndLoad() {\n const gleapSessionInstance = this._getGleapSessionInstance();\n const hasChecklistId = this.getAttribute(\"checklistId\");\n\n if (gleapSessionInstance.ready && hasChecklistId) {\n this._isSessionReady = true;\n this._networkManager = ChecklistNetworkManager.getInstance();\n this.loadChecklist();\n } else {\n this._isSessionReady = false;\n this._hasLoaded = false;\n this.checklistData = null;\n this.activeStep = -1;\n this._initialActiveSet = false;\n this.renderResponse();\n }\n }\n\n handleSessionUpdate() {\n this._checkSessionAndLoad();\n }\n\n _getGleapSessionInstance() {\n try {\n return typeof GleapSession !== \"undefined\"\n ? GleapSession.getInstance()\n : null;\n } catch (e) {\n return null;\n }\n }\n\n // --- Getters for Configuration ---\n get infoEnabled() {\n const attr = this.getAttribute(\"info\");\n return attr === null || attr.toLowerCase() !== \"false\";\n }\n\n get progressbarEnabled() {\n const attr = this.getAttribute(\"progressbar\");\n return attr === null || attr.toLowerCase() !== \"false\";\n }\n\n get floatingEnabled() {\n return this.getAttribute(\"floating\") === \"true\";\n }\n\n // --- Translation Helpers ---\n _translate(key, defaultValue = \"\") {\n return GleapTranslationManager.translateText(key) || defaultValue;\n }\n\n _translateWithVars(key, vars, defaultValue = \"\") {\n return (\n GleapTranslationManager.translateTextWithVars(key, vars) ||\n defaultValue\n );\n }\n\n // --- SVG Icons ---\n getCheckIcon() {\n return `\n \n `;\n }\n\n // --- Data Loading and Handling ---\n loadChecklist() {\n if (!this._isSessionReady || !this._networkManager) {\n return;\n }\n const checklistId = this.getAttribute(\"checklistId\");\n if (checklistId) {\n this.activeStep = -1;\n this._initialActiveSet = false;\n this.validateChecklist(checklistId);\n } else {\n this.renderResponse();\n this.checklistData = null;\n this._hasLoaded = false;\n }\n }\n\n getQueryParams() {\n const gleapSessionInstance = this._getGleapSessionInstance();\n if (!gleapSessionInstance?.session) {\n return \"\";\n }\n const session = gleapSessionInstance.session;\n let lang = \"en\";\n try {\n if (typeof GleapTranslationManager !== \"undefined\") {\n lang =\n GleapTranslationManager.getInstance().getActiveLanguage() || \"en\";\n }\n } catch (e) {}\n return `gleapId=${session.gleapId || \"\"}&gleapHash=${\n session.gleapHash || \"\"\n }&lang=${lang}`;\n }\n\n makeRequest(method, url, data, callback) {\n const gleapSessionInstance = this._getGleapSessionInstance();\n if (!gleapSessionInstance?.session) {\n const mockXhr = {\n readyState: 4,\n status: 0,\n responseText: \"Session unavailable\",\n _isMock: true,\n };\n callback(mockXhr);\n return;\n }\n const xhr = new XMLHttpRequest();\n xhr.open(method, url);\n try {\n gleapSessionInstance.injectSession(xhr);\n } catch (e) {}\n if (data) {\n xhr.setRequestHeader(\n \"Content-Type\",\n \"application/json;charset=UTF-8\"\n );\n }\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n callback(xhr);\n }\n };\n xhr.onerror = () => {\n callback(xhr);\n };\n xhr.send(data ? JSON.stringify(data) : null);\n }\n\n validateChecklist(outboundId) {\n if (!this._isSessionReady || !this._networkManager) {\n return;\n }\n this.checklistData = null;\n this._hasLoaded = false;\n this.renderResponse();\n const sharedKey = this.getAttribute(\"sharedKey\");\n\n this._networkManager\n .validateChecklist(outboundId, sharedKey)\n .then((internalId) => {\n if (!this.isConnected || !this._isSessionReady || !internalId) {\n return;\n }\n this.fetchChecklist(internalId);\n })\n .catch((error) => {\n this.renderResponse();\n this.checklistData = null;\n this._hasLoaded = false;\n });\n }\n\n fetchChecklist(checklistId) {\n if (!this._isSessionReady || !this._networkManager) {\n return;\n }\n this._isInitialLoad = !this._hasLoaded;\n this._networkManager\n .fetchChecklist(checklistId)\n .then((data) => {\n if (!this.isConnected || !this._isSessionReady || !data) {\n this._hasLoaded = false;\n this.checklistData = null;\n this._checkSessionAndLoad();\n return;\n }\n this.checklistData = data;\n this._hasLoaded = true;\n if (data.status === \"done\") {\n this.renderResponse();\n return;\n }\n if (this._isInitialLoad && !this._initialActiveSet) {\n const steps = data.outbound?.config?.steps || [];\n const completedSteps = data.completedSteps || [];\n const firstIncompleteIndex = steps.findIndex(\n (step) => !completedSteps.includes(step.id)\n );\n this.activeStep =\n firstIncompleteIndex >= 0 ? firstIncompleteIndex : -1;\n if (this.activeStep !== -1) {\n this._initialActiveSet = true;\n }\n }\n this.renderChecklist(this.checklistData);\n \n // Notify external listeners about the initial checklist load\n GleapEventManager.notifyEvent(\"checklist-loaded\", {\n checklistId: this.checklistData.id,\n outboundId: this.checklistData.outbound?.id,\n completedSteps: this.checklistData.completedSteps,\n status: this.checklistData.status,\n data: this.checklistData\n });\n })\n .catch((error) => {\n this.renderResponse();\n this.checklistData = null;\n this._hasLoaded = false;\n });\n }\n\n updateChecklist(id, data) {\n const gleapSessionInstance = this._getGleapSessionInstance();\n if (!gleapSessionInstance?.session) {\n return;\n }\n const apiUrl = gleapSessionInstance.apiUrl;\n if (!apiUrl) {\n return;\n }\n const session = gleapSessionInstance.session;\n const gleapId = session?.gleapId ?? \"\";\n const gleapHash = session?.gleapHash ?? \"\";\n let lang = \"en\";\n try {\n if (typeof GleapTranslationManager !== \"undefined\") {\n lang =\n GleapTranslationManager.getInstance().getActiveLanguage() || \"en\";\n }\n } catch (e) {}\n let url = `${apiUrl}/outbound/checklists/${id}`;\n if (data.checkedStep) {\n url += `/increment/${data.checkedStep}`;\n }\n url += `?gleapId=${gleapId}&gleapHash=${gleapHash}&lang=${lang}`;\n this.makeRequest(\"PUT\", url, data, (xhr) => {\n if (xhr._isMock) return;\n if (!(xhr.status === 200 || xhr.status === 204)) {\n // Update failed\n }\n });\n }\n\n // --- External Update Handling ---\n handleChecklistUpdate(event) {\n if (!this._hasLoaded || !this.checklistData) {\n return;\n }\n const updateData = event.detail;\n if (!updateData || updateData.id !== this.checklistData.id) {\n return;\n }\n const previousCompletedSteps = [\n ...(this.checklistData.completedSteps || []),\n ];\n let dataChanged = false;\n let activeStepCompleted = false;\n const currentlyActiveStepIndex = this.activeStep;\n if (\n updateData.completedSteps &&\n JSON.stringify(updateData.completedSteps) !==\n JSON.stringify(previousCompletedSteps)\n ) {\n this.checklistData.completedSteps = [...updateData.completedSteps];\n dataChanged = true;\n if (currentlyActiveStepIndex !== -1) {\n const activeStepId =\n this.checklistData.outbound?.config?.steps?.[\n currentlyActiveStepIndex\n ]?.id;\n if (\n activeStepId &&\n this.checklistData.completedSteps.includes(activeStepId) &&\n !previousCompletedSteps.includes(activeStepId)\n ) {\n activeStepCompleted = true;\n }\n }\n }\n if (\n updateData.status &&\n updateData.status !== this.checklistData.status\n ) {\n this.checklistData.status = updateData.status;\n dataChanged = true;\n }\n if (activeStepCompleted) {\n const steps = this.checklistData.outbound?.config?.steps || [];\n let nextActiveStep = -1;\n for (let i = currentlyActiveStepIndex + 1; i < steps.length; i++) {\n if (!this.checklistData.completedSteps.includes(steps[i].id)) {\n nextActiveStep = i;\n break;\n }\n }\n if (this.activeStep !== nextActiveStep) {\n this.setActiveStep(nextActiveStep);\n }\n dataChanged = true;\n }\n if (dataChanged) {\n this.renderChecklist(this.checklistData);\n \n // Notify external listeners about the checklist update\n GleapEventManager.notifyEvent(\"checklist-update\", {\n checklistId: this.checklistData.id,\n outboundId: this.checklistData.outbound?.id,\n completedSteps: this.checklistData.completedSteps,\n status: this.checklistData.status,\n data: this.checklistData\n });\n }\n }\n\n // --- Floating (Click-based) Listeners ---\n handleFloatingLauncherClick(event) {\n event.stopPropagation();\n\n if (this.checklistData.status === \"done\") {\n return;\n }\n\n const tasks = this.shadowRoot.querySelector(\".checklist-tasks\");\n if (tasks) {\n tasks.style.display =\n tasks.style.display === \"block\" ? \"none\" : \"block\";\n }\n }\n\n handleFloatingCloseClick(event) {\n event.stopPropagation();\n const tasks = this.shadowRoot.querySelector(\".checklist-tasks\");\n if (tasks) {\n tasks.style.display = \"none\";\n }\n }\n\n addFloatingClickListeners() {\n const launcher = this.shadowRoot.querySelector(\n \".checklist-floating-launcher\"\n );\n if (launcher) {\n launcher.addEventListener(\"click\", this._boundFloatingLauncherClick);\n }\n const header = this.shadowRoot.querySelector(\n \".checklist-floating-header\"\n );\n if (header) {\n header.addEventListener(\"click\", this._boundFloatingCloseClick);\n }\n }\n\n removeFloatingClickListeners() {\n const launcher = this.shadowRoot.querySelector(\n \".checklist-floating-launcher\"\n );\n if (launcher) {\n launcher.removeEventListener(\n \"click\",\n this._boundFloatingLauncherClick\n );\n }\n const header = this.shadowRoot.querySelector(\n \".checklist-floating-header\"\n );\n if (header) {\n header.removeEventListener(\"click\", this._boundFloatingCloseClick);\n }\n }\n\n // --- Rendering Logic ---\n renderResponse() {\n this.shadowRoot.innerHTML = \"\";\n }\n\n /**\n * Renders the floating launcher. When called with the default class (\"checklist-floating\")\n * it shows a chevron icon; when called with \"checklist-floating-header\" it shows a close icon.\n */\n renderFloatingLauncher(\n outbound,\n className = \"checklist-floating\",\n renderDoneState = false\n ) {\n const steps = outbound.config?.steps || [];\n const completedSteps = this.checklistData?.completedSteps || [];\n let progress = 0;\n if (this.progressbarEnabled && steps.length > 0) {\n const totalSteps = steps.length;\n const doneSteps = completedSteps.length;\n progress = totalSteps > 0 ? (doneSteps / totalSteps) * 100 : 0;\n }\n\n // Determine the next incomplete step\n const nextIncompleteStep = steps.find(\n (step) => !completedSteps.includes(step.id)\n );\n let titleText =\n steps.length > 0\n ? nextIncompleteStep\n ? nextIncompleteStep.title ||\n this._translateWithVars(\n \"stepDefaultTitle\",\n { index: steps.indexOf(nextIncompleteStep) + 1 },\n `Step ${steps.indexOf(nextIncompleteStep) + 1}`\n )\n : \"\"\n : outbound.subject || \"\";\n\n let subtitleText =\n steps.length > 0\n ? nextIncompleteStep\n ? nextIncompleteStep.description || \"\"\n : \"\"\n : outbound.message || \"\";\n\n if (renderDoneState) {\n titleText = outbound.config?.successTitle || \"\";\n subtitleText = outbound.config?.successMessage || \"\";\n progress = 100;\n }\n\n const circumference = 2 * Math.PI * 7;\n const computedOffset = circumference - (progress / 100) * circumference;\n\n const isHeader = className === \"checklist-floating-header\";\n const icon = isHeader\n ? `\n \n \n `\n : `\n \n `;\n\n return `\n
\n
\n
\n \n \n \n \n
\n
${titleText}
\n ${\n renderDoneState\n ? \"\"\n : `${icon}`\n }\n
\n
${subtitleText}
\n
\n `;\n }\n\n renderInfoSection(outbound) {\n if (!this.infoEnabled || !outbound) return \"\";\n const subject =\n outbound.subject ||\n this._translate(\"checklistDefaultTitle\", \"Checklist\");\n const message = outbound.message || \"\";\n let senderHtml = \"\";\n if (outbound.sender?.profileImageUrl) {\n senderHtml = `\n
\n \"${\n\n ${outbound.sender.firstName || \"\"}\n
`;\n }\n return `\n
\n ${\n subject\n ? `
${subject}
`\n : \"\"\n }\n ${\n message\n ? `
${message}
`\n : \"\"\n }\n ${senderHtml}\n
`;\n }\n\n renderProgressSection(steps = [], completedSteps = []) {\n if (!this.progressbarEnabled || !steps.length) return \"\";\n const totalSteps = steps.length;\n const doneSteps = completedSteps.length;\n const progress = totalSteps > 0 ? (doneSteps / totalSteps) * 100 : 0;\n let duration = 0;\n steps.forEach((step) => {\n if (!completedSteps.includes(step.id) && step.duration > 0) {\n duration += step.duration;\n }\n });\n const progressLabel = this._translateWithVars(\n \"taskProgress\",\n { a: doneSteps, b: totalSteps },\n `${doneSteps} of ${totalSteps} done`\n );\n const durationLabel =\n duration > 0\n ? this._translateWithVars(\n \"aboutMinutes\",\n { a: duration },\n `About ${duration} min left`\n )\n : \"\";\n return `\n
\n
${progressLabel}
\n ${\n durationLabel\n ? `
${durationLabel}
`\n : \"\"\n }\n
\n
\n
\n
`;\n }\n\n renderTasks(steps = [], completedSteps = []) {\n if (!steps || steps.length === 0)\n return `

${this._translate(\n \"noStepsDefined\",\n \"No steps defined.\"\n )}

`;\n return steps\n .map((step, index) => {\n const isTaskDone = completedSteps.includes(step.id);\n const isActive = this.activeStep === index;\n const badge = isTaskDone\n ? `${this.getCheckIcon()}`\n : `${\n index + 1\n }`;\n const stepTitle =\n step.title ||\n this._translateWithVars(\n \"stepDefaultTitle\",\n { index: index + 1 },\n `Step ${index + 1}`\n );\n const stepDescription = step.description || \"\";\n const actionButtonText =\n step.actionTitle ||\n this._translate(\"actionDefaultTitle\", \"Action\");\n const actionHtml =\n step.action && step.action !== \"none\"\n ? `
\n \n
`\n : \"\";\n const markDoneLabel = this._translate(\"markAsDone\", \"Mark as done\");\n const markDoneHtml =\n step.allowMarkDone && !isTaskDone\n ? `
\n ${this.getCheckIcon()}\n
${markDoneLabel}
\n
`\n : \"\";\n const taskClasses = [\n \"checklist-task\",\n isTaskDone ? \"checklist-task--done\" : \"\",\n isActive ? \"checklist-task--active\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n return `\n
\n
\n ${badge}\n
${stepTitle}
\n \n \n \n \n \n
\n
\n
\n ${\n stepDescription\n ? `
${stepDescription}
`\n : \"\"\n }\n ${actionHtml}\n ${markDoneHtml}\n
\n
\n
`;\n })\n .join(\"\");\n }\n\n renderChecklist(data) {\n if (!this._hasLoaded || !data || !data.outbound) {\n this._checkSessionAndLoad();\n return;\n }\n const { outbound } = data;\n const steps = outbound.config?.steps || [];\n const completedSteps = data.completedSteps || [];\n const isDone =\n data.status === \"done\" ||\n (steps.length > 0 && completedSteps.length >= steps.length);\n let content = \"\";\n if (isDone) {\n const successTitle = outbound.config?.successTitle || \"\";\n const successMessage = outbound.config?.successMessage || \"\";\n if (this.floatingEnabled) {\n content = this.renderFloatingLauncher(\n outbound,\n \"checklist-floating-launcher\",\n true\n );\n } else {\n content = `\n
\n
\n ${this.getCheckIcon()}\n
\n
${successTitle}
\n
${successMessage}
\n
`;\n }\n if (this.activeStep !== -1) this.activeStep = -1;\n } else {\n content = `\n
\n ${!this.floatingEnabled ? this.renderInfoSection(outbound) : \"\"}\n ${\n !this.floatingEnabled\n ? this.renderProgressSection(steps, completedSteps)\n : \"\"\n }\n ${\n this.floatingEnabled\n ? this.renderFloatingLauncher(outbound)\n : \"\"\n }\n
\n ${\n this.floatingEnabled\n ? this.renderFloatingLauncher(\n outbound,\n \"checklist-floating-header\"\n )\n : \"\"\n }\n ${this.renderTasks(steps, completedSteps)}\n
\n
`;\n }\n\n const flowConfig = GleapConfigManager.getInstance().getFlowConfig();\n const primaryColor = flowConfig.color ? flowConfig.color : \"#485BFF\";\n\n const styles = `\n \n `;\n this.shadowRoot.innerHTML = styles + content;\n this.addTaskEventListeners();\n if (this.floatingEnabled) {\n this.addFloatingClickListeners();\n }\n if (this.activeStep !== -1) {\n this.toggleTask(this.activeStep, true);\n }\n }\n\n updateActiveTaskMaxHeight() {\n if (this.activeStep !== -1) {\n const taskBodyInner = this.shadowRoot.querySelector(\n `.checklist-task[data-task-index=\"${this.activeStep}\"] .checklist-task-body-inner`\n );\n const container = this.shadowRoot.querySelector(\n `.checklist-task[data-task-index=\"${this.activeStep}\"] .checklist-task-body`\n );\n if (taskBodyInner && container) {\n const height = taskBodyInner.offsetHeight;\n container.style.setProperty(\n \"--task-body-active-height\",\n `${height}px`\n );\n }\n }\n }\n\n // --- Event Listener Setup ---\n addTaskEventListeners() {\n const tasks = this.shadowRoot.querySelectorAll(\".checklist-task\");\n tasks.forEach((task) => {\n const header = task.querySelector(\".checklist-task-header\");\n const index = parseInt(task.getAttribute(\"data-task-index\"), 10);\n if (header) {\n header.addEventListener(\"click\", () => {\n const newActiveStep = this.activeStep === index ? -1 : index;\n this.setActiveStep(newActiveStep);\n });\n }\n const markDoneBtn = task.querySelector(\n \".checklist-task-body-markdone\"\n );\n if (markDoneBtn) {\n markDoneBtn.addEventListener(\"click\", (e) => {\n e.stopPropagation();\n if (!this.checklistData?.outbound?.config?.steps) return;\n const step = this.checklistData.outbound.config.steps[index];\n if (!step) return;\n const previouslyActiveStep = this.activeStep;\n if (!this.checklistData.completedSteps)\n this.checklistData.completedSteps = [];\n if (!this.checklistData.completedSteps.includes(step.id)) {\n this.checklistData.completedSteps.push(step.id);\n \n // Notify external listeners about the step completion\n GleapEventManager.notifyEvent(\"checklist-step-completed\", {\n checklistId: this.checklistData.id,\n outboundId: this.checklistData.outbound?.id,\n stepId: step.id,\n stepIndex: index,\n step: step,\n completedSteps: this.checklistData.completedSteps,\n status: this.checklistData.status,\n data: this.checklistData\n });\n const allSteps = this.checklistData.outbound.config.steps;\n let nextActiveStep = -1;\n if (previouslyActiveStep === index) {\n for (let i = index + 1; i < allSteps.length; i++) {\n if (\n !this.checklistData.completedSteps.includes(\n allSteps[i].id\n )\n ) {\n nextActiveStep = i;\n break;\n }\n }\n this.setActiveStep(nextActiveStep);\n }\n // Preserve the state of the floating modal.\n setTimeout(() => {\n let isModalOpen = false;\n if (this.floatingEnabled) {\n const tasksModal =\n this.shadowRoot.querySelector(\".checklist-tasks\");\n isModalOpen =\n tasksModal && tasksModal.style.display === \"block\";\n }\n this.renderChecklist(this.checklistData);\n if (this.floatingEnabled && isModalOpen) {\n const tasksModal =\n this.shadowRoot.querySelector(\".checklist-tasks\");\n if (tasksModal) tasksModal.style.display = \"block\";\n }\n }, 300);\n const updateData = { checkedStep: step.id };\n if (\n allSteps.length > 0 &&\n this.checklistData.completedSteps.length >= allSteps.length\n ) {\n this.checklistData.status = \"done\";\n updateData.status = \"done\";\n \n // Notify external listeners about the checklist completion\n GleapEventManager.notifyEvent(\"checklist-completed\", {\n checklistId: this.checklistData.id,\n outboundId: this.checklistData.outbound?.id,\n completedSteps: this.checklistData.completedSteps,\n status: this.checklistData.status,\n data: this.checklistData\n });\n }\n this.updateChecklist(this.checklistData.id, updateData);\n }\n });\n }\n const actionBtn = task.querySelector(\n \".checklist-task-body-action .action-button\"\n );\n if (actionBtn) {\n actionBtn.addEventListener(\"click\", (e) => {\n e.stopPropagation();\n if (\n !this.checklistData?.outbound?.config?.steps ||\n typeof Gleap === \"undefined\"\n )\n return;\n const step = this.checklistData.outbound.config.steps[index];\n if (!step || !step.action || step.action === \"none\") return;\n try {\n if (step.action === \"BOT\") Gleap.startBot(step.botId);\n else if (step.action === \"CUSTOM_ACTION\")\n Gleap.triggerCustomAction(step.actionBody);\n else if (step.action === \"REDIRECT_URL\") {\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n Gleap.openURL(step.actionBody, !!step.actionOpenInNewTab);\n } else if (step.action === \"FEEDBACK_FLOW\")\n Gleap.startFeedbackFlow(step.formId);\n else if (step.action === \"NEWS_ARTICLE\")\n Gleap.openNewsArticle(step.articleId);\n else if (step.action === \"HELP_ARTICLE\")\n Gleap.openHelpCenterArticle(step.articleId);\n else if (step.action === \"CHECKLIST\")\n Gleap.startChecklist(step.outboundId, true, step?.sharedKey);\n } catch (gleapError) {}\n });\n }\n });\n }\n\n // --- Animation and State Management ---\n setActiveStep(index) {\n const previousActiveStep = this.activeStep;\n this.activeStep = index;\n const tasksToToggle = [];\n if (\n previousActiveStep !== -1 &&\n previousActiveStep !== this.activeStep\n ) {\n tasksToToggle.push({ index: previousActiveStep, open: false });\n }\n if (this.activeStep !== -1 && this.activeStep !== previousActiveStep) {\n tasksToToggle.push({ index: this.activeStep, open: true });\n }\n tasksToToggle.forEach(({ index, open }) => {\n this.toggleTask(index, open);\n });\n }\n\n toggleTask(index, forceOpen = null) {\n const taskElement = this.shadowRoot.querySelector(\n `.checklist-task[data-task-index=\"${index}\"]`\n );\n if (!taskElement) return;\n const header = taskElement.querySelector(\".checklist-task-header\");\n if (!header) return;\n const isOpen = taskElement.classList.contains(\"checklist-task--active\");\n const shouldOpen = forceOpen !== null ? forceOpen : !isOpen;\n if (shouldOpen && !isOpen) {\n taskElement.classList.add(\"checklist-task--active\");\n header.setAttribute(\"aria-expanded\", \"true\");\n const taskBodyInner = taskElement.querySelector(\n \".checklist-task-body-inner\"\n );\n if (taskBodyInner) {\n const height = taskBodyInner.offsetHeight;\n const taskBody = taskElement.querySelector(\".checklist-task-body\");\n if (taskBody) {\n taskBody.style.setProperty(\n \"--task-body-active-height\",\n `${height}px`\n );\n }\n }\n } else if (!shouldOpen && isOpen) {\n taskElement.classList.remove(\"checklist-task--active\");\n header.setAttribute(\"aria-expanded\", \"false\");\n }\n }\n }\n\n if (\n typeof customElements !== \"undefined\" &&\n !customElements.get(\"gleap-checklist\")\n ) {\n customElements.define(\"gleap-checklist\", GleapChecklist);\n }\n }\n};\n","import Gleap from \"./Gleap\";\n\nexport default Gleap;\n"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","GleapFeedbackButtonManager","_classCallCheck","_defineProperty","value","this","instance","feedbackButton","remove","buttonHidden","lastButtonIcon","injectedFeedbackButton","show","getInstance","updateFeedbackButtonState","GleapNotificationManager","updateContainerStyle","frameManager","GleapFrameManager","isOpened","hideWidget","setAppMode","showWidget","_this","elem","document","createElement","addEventListener","feedbackButtonPressed","body","appendChild","count","notificationBadge","querySelector","notificationHiddenClass","classList","innerText","add","updateFeedbackButtonText","injectFeedbackButton","flowConfig","GleapConfigManager","getFlowConfig","feedbackButtonPosition","FEEDBACK_BUTTON_CLASSIC","FEEDBACK_BUTTON_CLASSIC_BOTTOM","FEEDBACK_BUTTON_CLASSIC_LEFT","widgetButtonText","buttonIcon","buttonLogo","concat","loadIcon","className","setAttribute","GleapTranslationManager","isRTLLayout","innerHTML","hideButton","FEEDBACK_BUTTON_NONE","FEEDBACK_BUTTON_BOTTOM_LEFT","appMode","hideForGuests","GleapSession","isUser","calculateShadeColor","col","amt","replace","length","_col$match2","_slicedToArray","match","r","g","b","_ref","parseInt","Math","max","min","toString","rr","gg","bb","calculateContrast","hex","substr","name","color","GleapNetworkIntercepter","Date","now","loadAllResources","contentType","toLocaleLowerCase","supportedContentTypes","i","includes","requests","JSON","parse","stringify","values","externalRequests","filters","request","headers","j","payload","payloadObj","e","response","responseText","data","window","performance","resources","getEntriesByType","resource","indexOf","initiatorType","find","url","push","type","date","startTimestamp","startTime","duration","round","exp","blacklist","defaultBlacklist","filter","maxRequests","stopped","keys","keysToRemove","slice","bbRequestId","startDate","getTime","text","size","TextEncoder","encode","encodeURI","s","split","Blob","getTextContentSize","undefined","TextDecoder","_typeof","ArrayBuffer","isView","decode","payloadText","cleanupPayload","cleanupContentSize","initialized","self","interceptNetworkRequests","onFetch","params","fromEntries","entries","method","preparePayload","cleanRequests","onFetchLoad","req","status","statusText","calcRequestTime","isContentTypeSupported","then","err","onFetchFailed","onOpen","args","onSend","requestHeaders","onError","currentTarget","onLoad","target","responseType","callback","originalFetch","open","XMLHttpRequest","send","gleapSetRequestHeader","setRequestHeader","header","requestId","arguments","bind","apply","fetch","clone","blob","Promise","resolve","reject","fr","FileReader","onload","evt","result","onerror","readAsText","resizeImage","base64Str","maxWidth","maxHeight","isJPEG","img","Image","src","canvas","MAX_WIDTH","MAX_HEIGHT","width","height","getContext","drawImage","toDataURL","isMobile","test","navigator","userAgent","gleapDataParser","String","truncateString","str","num","removeSubDomain","v","parts","is2ndLevelDomain","secondLevel","join","loadFromGleapCache","cachedData","localStorage","getItem","saveToGleapCache","k","setItem","removeItem","runFunctionWhenDomIsReady","readyState","RequestStatus","ChecklistNetworkManager","Map","validationCache","clear","fetchCache","validationRequests","fetchRequests","gleapSessionInstance","session","lang","getActiveLanguage","gleapId","gleapHash","apiUrl","xhr","injectSession","onreadystatechange","responseData","error","outboundId","sharedKey","cacheKey","_createCacheKey","cachedResult","internalId","has","_getApiUrl","Error","set","_getQueryParams","requestPromise","_makeRequest","id","_this2","floor","createCoords","x","y","oppositeSideMap","left","right","bottom","top","oppositeAlignmentMap","start","end","clamp","param","placement","axis","getAxisLength","getAlignmentAxis","alignment","getOppositePlacement","side","padding","expandPaddingObject","rect","computeCoordsFromPlacement","rtl","reference","floating","sideAxis","alignmentAxis","alignLength","isVertical","commonX","commonY","commonAlign","coords","async","detectOverflow","state","options","_await$platform$isEle","platform","rects","elements","strategy","boundary","rootBoundary","elementContext","altBoundary","paddingObject","element","clippingClientRect","getClippingRect","isElement","contextElement","getDocumentElement","offsetParent","getOffsetParent","offsetScale","getScale","elementClientRect","convertOffsetParentRelativeRectToViewportRelativeRect","offset","fn","_middlewareData$offse","_middlewareData$arrow","middlewareData","diffCoords","isRTL","mainAxisMulti","crossAxisMulti","rawValue","mainAxis","crossAxis","convertValueToCoords","arrow","alignmentOffset","getNodeName","node","isNode","nodeName","toLowerCase","getWindow","_node$ownerDocument","ownerDocument","defaultView","documentElement","Node","Element","isHTMLElement","HTMLElement","isShadowRoot","ShadowRoot","isOverflowElement","overflow","overflowX","overflowY","display","isTableElement","isContainingBlock","webkit","isWebKit","css","transform","perspective","containerType","backdropFilter","some","willChange","contain","CSS","supports","isLastTraversableNode","getComputedStyle","getNodeScroll","scrollLeft","scrollTop","pageXOffset","pageYOffset","getParentNode","assignedSlot","parentNode","host","getNearestOverflowAncestor","getOverflowAncestors","list","traverseIframes","_node$ownerDocument2","scrollableAncestor","isBody","win","visualViewport","frameElement","getCssDimensions","parseFloat","hasOffset","offsetWidth","offsetHeight","shouldFallback","$","unwrapElement","domElement","getBoundingClientRect","Number","isFinite","noOffsets","getVisualOffsets","offsetLeft","offsetTop","includeScale","isFixedStrategy","clientRect","scale","visualOffsets","isFixed","floatingOffsetParent","shouldAddVisualOffsets","offsetWin","currentWin","currentIFrame","iframeScale","iframeRect","clientLeft","paddingLeft","clientTop","paddingTop","topLayerSelectors","isTopLayer","selector","matches","getWindowScrollBarX","getClientRectFromClippingAncestor","clippingAncestor","html","clientWidth","clientHeight","visualViewportBased","getViewportRect","scroll","scrollWidth","scrollHeight","direction","getDocumentRect","getInnerBoundingClientRect","hasFixedPositionAncestor","stopNode","position","getRectRelativeToOffsetParent","isOffsetParentAnElement","offsets","offsetRect","getTrueOffsetParent","polyfill","currentNode","getContainingBlock","topLayer","elementClippingAncestors","cache","el","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","ancestor","getClippingElementAncestors","_c","clippingAncestors","firstClippingAncestor","clippingRect","reduce","accRect","getElementRects","getOffsetParentFn","getDimensionsFn","getDimensions","getClientRects","Array","from","autoUpdate","update","ancestorScroll","ancestorResize","elementResize","ResizeObserver","layoutShift","IntersectionObserver","animationFrame","referenceEl","ancestors","forEach","passive","cleanupIo","onMove","timeoutId","io","root","cleanup","_io","clearTimeout","disconnect","refresh","skip","threshold","rootMargin","isFirstUpdate","handleObserve","ratio","intersectionRatio","setTimeout","observe","observeMove","frameId","reobserveFrame","resizeObserver","firstEntry","unobserve","cancelAnimationFrame","requestAnimationFrame","_resizeObserver","prevRefRect","frameLoop","nextRefRect","_resizeObserver2","removeEventListener","checkMainAxis","checkCrossAxis","limiter","detectOverflowOptions","mainAxisCoord","crossAxisCoord","maxSide","limitedCoords","_middlewareData$flip","initialPlacement","fallbackPlacements","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","flipAlignment","isBasePlacement","oppositePlacement","getExpandedPlacements","isStart","lr","rl","tb","bt","getSideList","map","getOppositeAxisPlacements","placements","overflows","overflowsData","flip","sides","mainAlignmentSide","every","_middlewareData$flip2","_overflowsData$filter","nextIndex","index","nextPlacement","reset","resetPlacement","d","sort","a","_overflowsData$map$so","acc","arrowDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","min$1","center","shouldAddOffset","centerOffset","mergedOptions","platformWithCache","config","middleware","validMiddleware","Boolean","statefulPlacement","resetCount","nextX","nextY","computePosition","checkPageFilter","currentUrl","pageFilter","pageFilterType","removeTrailingSlash","isMatchingUrl","regex","regexPattern","RegExp","generateRegex","matched","startsWith","endsWith","GleapTooltipManager","WeakMap","tooltip","hasAttribute","nextId","tooltipElem","mode","hotspotContainer","canEmbed","firstChild","insertBefore","nextSibling","hotspot","icon","animated","repositionHotspot","elementToTooltipMap","floatingUIInstance","createTooltip","elementToFloatingUIMap","filteredTooltips","getFilteredTooltips","checkForTooltips","tooltips","location","href","page","pageType","querySelectorAll","linkTooltip","sessionInstance","http","sdkKey","console","updateFilteredTooltips","nodeType","ELEMENT_NODE","checkNodeTooltip","childNodes","childNode","processNodeInsertion","_this3","_this4","time","timeout","handleResizeThrottled","updateHotspotPositions","context","_toConsumableArray","observer","MutationObserver","mutations","lastUrl","mutation","addedNodes","removedNodes","floatingUI","childList","subtree","attributes","attributeFilter","_this5","tooltipText","tooltipData","hideTimeout","arrowEl","posX","shift","assign","style","arrowPos","visibility","opacity","pointerEvents","hide","voidElements","Set","tagName","resizeListener","anchor","removeAttribute","tooltipId","getAttribute","posY","offsetX","offsetY","elementRect","range","createRange","selectNodeContents","fixedWidth","anchorRect","tooltipSize","email","userId","phone","onSessionReady","ready","onSessionReadyListener","attemp","retry","GleapEventManager","notifyEvent","useCookies","cookie","eraseGleapCookie","sendMessage","clearAllNotifications","setNotificationCount","GleapBannerManager","removeBannerUI","GleapModalManager","hideModal","isNaN","newTimeout","pow","startSession","_this$session","sessionChanged","days","expires","setTime","toUTCString","setGleapCookie","encodeURIComponent","clearCache","GleapStreamedEvent","restart","tooltipManager","destroy","load","dispatchEvent","CustomEvent","notifySessionReady","sessionCookie","nameEQ","ca","c","charAt","substring","getGleapCookie","sessionData","decodeURIComponent","validateSession","cachedSession","clearSession","userData","checkIfSessionDataNeedsUpdate","userDataKeys","userDataKey","customData","setOnSessionReady","_objectSpread","sdkVersion","SDK_VERSION","ws","userHash","checkIfSessionNeedsUpdate","dataToSend","tourId","tourData","_window","passedPageFilter","sendSessionUpdate","streamEvents","mainLoopTimeout","runEventStreamLoop","streamingEvents","errorCount","streamedEventArray","socket","OPEN","sessionDuration","GleapMetaDataManager","getSessionDuration","events","opened","handleOpenBound","handleOpen","handleErrorBound","handleError","handleMessageBound","handleMessage","handleCloseBound","handleClose","connectionTimeout","pingWS","clearInterval","close","cleanupWebSocket","connectedWebSocketGleapId","WebSocket","wsApiUrl","event","setInterval","processMessage","initWebSocket","message","_message$data","u","listOfActionsWhereIgnoreOpened","filteredActions","action","_action$actionType","actionType","Gleap","performActions","detail","eventArray","cleanupMainLoop","trackInitialEvents","startPageListener","resetErrorCountLoop","logEvent","logCurrentPage","disablePageTracking","log","eventMaxLength","parseIntWithDefault","val","def","parsed","onConfigLoaded","onConfigLoadedListener","aiTools","sendConfigUpdate","cachedConfig","applyConfig","loadConfigFromServer","setStyles","headerColor","buttonColor","backgroundColor","borderRadius","buttonX","buttonY","applyStylesFromConfig","enableWebReplays","GleapReplayRecorder","stop","enableNetworkLogs","setLoadAllResources","sendNetworkResources","networkLogPropsToIgnore","setFilters","networkLogBlacklist","setBlacklist","updateRTLSupport","enableShortcuts","notifyConfigLoaded","_regeneratorRuntime","t","n","Symbol","iterator","asyncIterator","toStringTag","define","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","arg","h","l","f","GeneratorFunction","GeneratorFunctionPrototype","p","getPrototypeOf","defineIteratorMethods","_invoke","AsyncIterator","invoke","__await","callInvokeWithMethodAndArg","done","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","displayName","isGeneratorFunction","constructor","mark","setPrototypeOf","__proto__","awrap","reverse","pop","prev","rval","handle","complete","finish","delegateYield","asyncGeneratorStep","gen","_next","_throw","info","_asyncToGenerator","documentToHTML","doctype","publicId","systemId","outerHTML","loadCSSUrlResources","basePath","remote","asyncFn","matchedData","matchedUrl","replaceAll","resourcePath","URL","fetchCSSResource","resourceData","promises","_len","_key","promise","all","reader","onloadend","readAsDataURL","fetchItemResource","isBlacklisted","warn","progressResource","replaceStyleNodes","styleSheet","cssTextContent","styleId","cloneTargetNode","ownerNode","replacementNode","head","styleNode","cssText","createTextNode","linkNode","rel","media","getTextContentFromStyleSheet","cssRules","rules","cssRuleItem","downloadAllCSSUrlResources","basePathURL","_loop","styleSheets","mediaText","baseTags","getElementsByTagName","origin","lastIndexOf","replacedStyle","styletext","stylesheet","results","prepareRemoteData","dom","imgItems","imgItemsPromises","item","downloadAllImages","handleAdoptedStyleSheets","doc","shadowNodeId","adoptedStyleSheets","shadowStyleNode","firstElementChild","extractFinalCSSState","getAnimations","animations","finalCSSState","animation","_animation$effect","keyframes","effect","getKeyframes","finalKeyframe","property","deepClone","_callee3","cloneNode","fragment","clonedHead","_context3","_ref2","_callee2","parent","shadowRoot","walkTree","webAnimations","boundingRect","resizedImage","_boundingRect","rootShadowNodeId","_context2","_ref3","_callee","nextn","nextp","innerShadowRoot","_context","nextElementSibling","_x5","_x6","_x7","HTMLCanvasElement","t0","toUpperCase","contains","checked","_x2","_x3","_x4","createDocumentFragment","_x","prepareScreenshotData","_ref4","_callee4","styleTags","linkImportElems","referenceNode","scriptElems","existingBasePath","baseElems","baseUrl","newBaseUrl","baseNode","dialogElems","bbElems","_context4","innerWidth","innerHeight","_x8","_x9","_createForOfIteratorHelper","allowArrayLike","it","isArray","minLen","_arrayLikeToArray","_unsupportedIterableToArray","F","_e","normalCompletion","didErr","step","_e2","arr","len","arr2","_defineProperties","props","descriptor","_toPropertyKey","toPrimitive","_toPrimitive","GleapScreenRecorder","rerender","permissionErrorText","Constructor","MAX_RECORD_TIME","mediaDevices","getDisplayMedia","available","RERENDER_DELAY","protoProps","staticProps","_uploadScreenRecording","_startAudioRecording","_startScreenRecording","_step","_iterator","MIME_TYPES","MediaRecorder","isTypeSupported","stream","getTracks","track","_","tracks","validTracks","MediaStream","videoTracks","getVideoTracks","audioTracks","getAudioTracks","displayStream","composed","isRecording","video","ideal","screen","frameRate","IDEAL_FRAME_RATE","MAX_FRAME_RATE","displaySurface","audio","selfBrowserSurface","_displayStream","_displayVideoTrack","getFirstVideoTrack","audioMuted","startAudioRecording","audioAvailable","createMediaStream","handleRecord","alert","mediaRecorder","recordingTimer","stopStreamTracks","_micStream","voiceStream","micTrack","_composed","getUserMedia","echoCancellation","noiseSuppression","autoGainControl","getFirstAudioTrack","enabled","videoEl","SELECTORS","PREVIEW_VIDEO","file","recordedChunks","mimeType","getSupportedMimeType","recordTime","timerLabel","TIMER_LABEL","remainingTime","maxRecordTime","formatTime","stopScreenRecording","TIMER_UPDATE_INTERVAL","ondataavailable","videoTrack","onended","prepareRecording","onstop","CHUNK_INTERVAL","completeBlob","extension","File","previewVideoElement","createObjectURL","screenRecordingData","formData","FormData","append","fileUrl","GleapFeedback","priority","isSilent","excludeData","spamToken","gleapInstance","GleapCustomDataManager","getCustomData","metaData","getMetaData","consoleLog","GleapConsoleLogManager","getLogs","networkLogs","getRequests","customEventLog","getEventArray","ticketAttributes","getTicketAttributes","dataPromises","webReplay","getGlobalDataItem","isLiveSite","recordingUrlPromise","uploadScreenRecording","recordingUrl","screenRecordingUrl","screenshot","screenshotDataPromise","isLiveMode","screenshotData","snapshotPosition","feedbackData","outbound","tags","GleapTagManager","getTags","keysToExclude","keyToExclude","takeSnapshot","getData","feedback","newTab","newWindow","focus","cmp_block_ignoredomains","injectedFrame","autoWhiteListCookieManager","frameUrl","gleapFrameContainer","gleapFrame","updateFrameStyle","showFrameContainer","closeElement","surveyStyle","extendedStyle","surveyFullStyle","classicStyle","classicStyleLeft","modernStyleLeft","noButtonStyleLeft","allStyles","styleToApply","startCommunication","appHeight","setProperty","handler","urlHandler","innerContainer","escListener","widgetOpened","markerManager","showLoader","loadingClass","disableBGFade","disableBGGradient","updateUI","workThroughQueue","setGlobalDataItem","scrollX","scrollY","updateWidgetStatus","registerEscListener","isSurvey","updateNotificationBadge","runWidgetShouldOpenCallback","injectFrame","isWidgetOpen","resetRoutes","hideMarkerManager","reloadNotificationsFromCache","unregisterEscListener","queue","comReady","contentWindow","postMessage","getSession","getAiTools","overrideLanguage","getOverrideLanguage","GleapMarkerManager","success","workQueue","_this6","addMessageListener","GleapAudioManager","ping","showImage","ticketData","frameHeight","_data$data","startProductTour","GleapCustomActionManager","triggerCustomAction","shareToken","feedbackType","sendFeedback","reportedBy","trackEvent","showDrawingScreen","bannerUrl","listeners","appVersionCode","appBuildNumber","sessionStart","nameOffset","verOffset","ix","nAgt","browserName","appName","fullVersion","appVersion","majorVersion","OSName","browser","systemName","buildVersionNumber","releaseVersionNumber","devicePixelRatio","screenWidth","screenHeight","language","userLanguage","mobile","sdkType","environment","logArray","disabled","originalConsoleLog","logLevel","logMaxLength","addLog","origConsole","addLogWithArgs","GleapClickListener","protocol","preventDefault","handleGleapLink","elementId","elementClass","elemId","elemClass","elementTag","htmlPre","htmlPost","getDOMElementDescription","takeCurrentReplay","eventListeners","eventListener","eventName","customAction","customActionCallbacks","_a","__defProp","__publicField","__defNormalProp","__defProp$1","__publicField$1","__defNormalProp$1","NodeType$3","NodeType2","testableAccessors$1","testableMethods$1","untaintedBasePrototype$1","isAngularZonePresent$1","globalThis","Zone","getUntaintedPrototype$1","defaultObj","defaultPrototype","accessorNames","isUntaintedAccessors","accessor","_a2","_b","getOwnPropertyDescriptor","methodNames","isUntaintedMethods","iframeEl","untaintedObject","removeChild","untaintedAccessorCache$1","getUntaintedAccessor$1","untaintedPrototype","untaintedAccessor","untaintedMethodCache$1","getUntaintedMethod$1","untaintedMethod","index$1","n2","parentElement","textContent","other","getRootNode","selectors","mutationObserver","hostEl","isNativeShadowDom","shadowRoot2","stringifyStylesheet","s2","rules2","sheetHref","stringifiedRules","rule2","stringifyRule","isCSSImportRule","importStringified","statement","layerName","supportsText","escapeImportStatement","absolutifyURLs","ruleStringified","isCSSStyleRule","selectorText","cssStringified","fixSafariColons","Mirror","getId","getMeta","getNode","idNodeMap","getIds","nodeMetaMap","removeNodeFromMap","delete","hasNode","node2","meta","oldNode","maskInputValue","maskInputOptions","maskInputFn","actualType","repeat","ORIGINAL_ATTRIBUTE_NAME","getInputType","extractFileExtension","path","baseURL","pathname","URL_IN_CSS_REF","URL_PROTOCOL_MATCH","URL_WWW_MATCH","DATA_URI","quote1","path1","quote2","path2","path3","filePath","maybeQuote","extractOrigin","stack","part","normalizeCssString","markCssSplits","childNodes2","splits","cssTextNorm","i2","textContentNorm","bit","splitNorm","splitCssText","_id","tagNameRegex","IGNORED_NODE","genId","canvasService","canvasCtx","SRCSET_NOT_SPACES","SRCSET_COMMAS_OR_SPACES","cachedDocument","absoluteToDoc","attributeValue","trim","getHref","isSVGElement","ownerSVGElement","customHref","a2","transformAttribute","pos","collectCharacters","regEx","chars2","exec","output","descriptorsStr","inParens","c2","getAbsoluteSrcsetString","ignoreAttribute","_value","classMatchesRegex","checkAncestors","eIndex","needMaskingText","maskTextClass","maskTextSelector","closest","e2","serializeNode","mirror","mirror2","blockClass","blockSelector","needsMask","inlineStylesheet","maskTextFn","dataURLOptions","inlineImages","recordCanvas","keepIframeSrcFn","newlyAddedElement","cssCaptured","rootId","docId","getRootId","DOCUMENT_NODE","compatMode","Document","DOCUMENT_TYPE_NODE","DocumentType","needBlock","_isBlockedElement","HTMLFormElement","processedTagName","getValidTagName$1","attr","_cssText","sheet","selected","rr_open_mode","__context","ctx","x2","getImageData","originalGetImageData","Uint32Array","buffer","pixel","is2DCanvasBlank","rr_dataURL","quality","canvasDataURL","blankCanvas","image","imageSrc","currentSrc","priorCrossOrigin","crossOrigin","recordInlineImage","naturalWidth","naturalHeight","mediaAttributes","rr_mediaState","paused","rr_mediaCurrentTime","currentTime","rr_mediaPlaybackRate","playbackRate","rr_mediaMuted","muted","rr_mediaLoop","loop","rr_mediaVolume","volume","rr_scrollLeft","rr_scrollTop","class","rr_width","rr_height","contentDocument","rr_src","isCustomElement","customElements","isSVG","isCustom","serializeElementNode","TEXT_NODE","parentTagName","textContent2","isStyle","isScript","Text","serializeTextNode","CDATA_SECTION_NODE","CDATA","COMMENT_NODE","Comment","lowerIfExists","maybeAttr","serializeNodeWithId","skipChild","slimDOMOptions","onSerialize","onIframeLoad","iframeLoadTimeout","onStylesheetLoad","stylesheetLoadTimeout","preserveWhiteSpace","_serializedNode","sn","comment","script","as","headFavicon","headMetaDescKeywords","headMetaSocial","headMetaRobots","headMetaHttpEquiv","headMetaAuthorship","headMetaVerification","slimDOMExcluded","serializedNode","recordChild","shadowRootEl","isShadowHost","headWhitespace","bypassOptions","childN","serializedChildNode","isShadow","listener","fired","timer","blankUrl","onceIframeLoaded","iframeDoc","serializedIframeNode","link","styleSheetLoadTimeout","styleSheetLoaded","onceStylesheetLoaded","serializedLinkNode","getDefaultExportFromCjs$1","__esModule","getAugmentedNamespace$1","f2","default","a22","Reflect","construct","picocolors_browser$1","x$1","create$1","isColorSupported","bold","dim","italic","underline","inverse","hidden","strikethrough","black","red","green","yellow","blue","magenta","cyan","white","gray","bgBlack","bgRed","bgGreen","bgYellow","bgBlue","bgMagenta","bgCyan","bgWhite","createColors","picocolors_browserExports$1","require$$2$1","freeze","pico$1","terminalHighlight$1$1","CssSyntaxError$3$1","CssSyntaxError","line","column","source","plugin22","super","reason","plugin","endLine","endColumn","setMessage","captureStackTrace","showSourceCode","aside","lines","index2","number","gutter","spacing","code","cssSyntaxError$1","symbols$1","isClean","my","DEFAULT_RAW$1","after","beforeClose","beforeComment","beforeDecl","beforeOpen","beforeRule","colon","commentLeft","commentRight","emptyBody","indent","semicolon","Stringifier$2$1","builder","atrule","raws","afterName","nodes","block","between","beforeAfter","detect","raw","buf","depth","last","child","before","decl","string","important","own","first","root2","rawCache","walk","rawBeforeClose","rawBeforeComment","walkComments","rawBeforeDecl","walkDecls","rawBeforeOpen","rawBeforeRule","rawColon","rawEmptyBody","rawIndent","rawSemicolon","rule","ownSemicolon","stringifier$1","Stringifier$1$1","stringify$4$1","stringify_1$1","isClean$2$1","my$2$1","CssSyntaxError$2$1","Stringifier2$1","stringify$3$1","cloneNode$1","cloned","Node$4$1","defaults","addToError","postcssNode","input","insertAfter","overrides","cleanRaws","keepBetween","cloneAfter","cloneBefore","opts","rangeBy","getProxyProcessor","toProxy","markDirty","positionBy","stringRepresentation","positionInside","word","endIndex","defaultType","replaceWith","bookmark","foundSelf","result2","toJSON","inputs","fixed","emitInputs","inputsNextIndex","inputId","input2","proxyCache","Proxy","stringifier2","proxyOf","node$1","Node$3$1","Declaration$4$1","variable","declaration$1","nonSecure$1","nanoid","random","customAlphabet","alphabet","defaultSize","SourceMapConsumer","SourceMapConsumer$2$1","SourceMapGenerator","SourceMapGenerator$2$1","existsSync","existsSync$1","readFileSync","readFileSync$1","dirname","dirname$1$1","join$1","PreviousMap$2$1","loadAnnotation","inline","startWith","annotation","loadMap","mapFile","consumer","consumerCache","decodeInline","lastMatch","Buffer","atob","encoding","getAnnotationURL","sourceMapString","isMap","mappings","_mappings","sections","comments","loadFile","fromSourceMap","prevPath","withContent","sourcesContent","previousMap$1","SourceMapConsumer$1$1","SourceMapGenerator$1$1","fileURLToPath","fileURLToPath$1","pathToFileURL","pathToFileURL$1$1","isAbsolute","isAbsolute$1","resolve$1$1","nanoid$2","terminalHighlight$2","CssSyntaxError$1$1","PreviousMap$1$1","fromOffsetCache$1","sourceMapAvailable$1$1","pathAvailable$1$1","Input$4$1","hasBOM","mapResolve","fromOffset","lastLine","lineToIndex","prevIndex","l2","mid","sourceRoot","to","fromUrl","originalPositionFor","sourceContentFor","json","input$1","registerInput","SourceMapConsumer$3","SourceMapGenerator$3","dirname$2","relative","relative$1","resolve$2","sep","sep$1","pathToFileURL$2","Input$3$1","sourceMapAvailable$2","pathAvailable$2","mapGenerator$1","stringify2","cssString","mapOpts","originalCSS","usesFileUrls","absolute","memoizedFileURLs","memoizedPaths","memoizedURLs","addAnnotation","content","isInline","toBase64","outputFile","eol","applyPrevMaps","previous","toUrl","applySourceMap","clearAnnotation","generate","generateMap","generateString","ignoreInvalidMapping","addMapping","generated","original","isSourcesContent","setSourcesContent","isAnnotation","noSource","mapping","sourcePath","charCodeAt","cached","previousMaps","already","toFileUrl","setSourceContent","btoa","unescape","fileURL","Node$2$1","Comment$4$1","comment$1","parse$4$1","Rule$4$1","AtRule$4$1","Root$6$1","isClean$1$1","my$1$1","Declaration$3$1","Comment$3$1","Node$1$1","cleanSource$1","markDirtyUp$1","Container$7$1","Container","children","normalize","each","getIterator","indexes","condition","lastEach","cb","exist","existIndex","splice","sample","rebuild","prepend","unshift","removeAll","replaceValues","pattern","fast","walkAtRules","walkRules","registerParse","dependant","registerRule","registerAtRule","registerRoot","container$1","LazyResult$4$1","Processor$3$1","Container$6$1","Document$3$1","toResult","registerLazyResult","registerProcessor","document$1$1","Warning$2$1","opt","warning$1","Warning$1$1","Result$3$1","processor2","processor","messages","lastPlugin","postcssPlugin","warning2","warnings","result$1","SINGLE_QUOTE$1","DOUBLE_QUOTE$1","BACKSLASH$1","SLASH$1","NEWLINE$1","SPACE$1","FEED$1","TAB$1","CR$1","OPEN_SQUARE$1","CLOSE_SQUARE$1","OPEN_PARENTHESES$1","CLOSE_PARENTHESES$1","OPEN_CURLY$1","CLOSE_CURLY$1","SEMICOLON$1","ASTERISK$1","COLON$1","AT$1","RE_AT_END$1","RE_WORD_END$1","RE_BAD_BRACKET$1","RE_HEX_ESCAPE$1","Container$5$1","AtRule$3$1","atRule$1","LazyResult$3$1","Processor$2$1","Container$4$1","Root$5$1","ignore","root$1","list$2$1","comma","space","separators","array","current","func","inQuote","prevQuote","escape","letter","list_1$1","Container$3$1","list$1$1","Rule$3$1","sep2","rule$1","Declaration$2$1","tokenizer2$1","quote","escaped","escapePos","currentToken","valueOf","ignoreErrors","returned","unclosed","what","back","token","endOfFile","nextToken","ignoreUnclosed","controlChar","fromCharCode","lastIndex","Comment$2$1","AtRule$2$1","Root$4$1","Rule$2$1","SAFE_COMMENT_NEIGHBOR$1","empty","parser$1","spaces","createTokenizer","unnamedAtrule","init","brackets","tokenizer","getPosition","spacesAndCommentsFromEnd","spacesAndCommentsFromStart","checkMissedSemicolon","tokens","founded","doubleColon","customProperty","findLastWithPosition$1","unknownWord","firstSpaces","precheckMissedSemicolon","stringFrom","spacesFromEnd","emptyRule","unexpectedClose","endFile","unclosedBlock","freeSemicolon","bracket","unclosedBracket","clean","lastTokenType","Container$2$1","Parser2$1","Input$2$1","parse$3$1","parser2","parse_1$1","isClean$3","my$3","MapGenerator$1$1","stringify$2$1","Container$1$1","Document$2$1","Result$2$1","parse$2$1","Root$3$1","TYPE_TO_CLASS_NAME$1","PLUGIN_PROPS$1","AtRule","AtRuleExit","CommentExit","Declaration","DeclarationExit","DocumentExit","Once","OnceExit","prepare","Root","RootExit","Rule","RuleExit","NOT_VISITORS$1","CHILDREN$1","isPromise$1","getEvents$1","toStack$1","eventIndex","visitorIndex","visitors","cleanMarks$1","postcss$2$1","LazyResult$2$1","LazyResult","stringified","processed","syntax","parser","helpers","postcss","plugins","processing","runAsync","onRejected","catch","onFinally","getAsyncError","postcssVersion","prepareVisitors","version","hasListener","runOnRoot","visitTick","visitor","roots","subRoot","sync","stringifier","walkSync","visitSync","onFulfilled","visit2","registerPostcss","lazyResult$1","MapGenerator2$1","stringify$1$1","parse$1$1","Result$1$1","NoWorkResult$1$1","_processor","_css","_opts","_map","generatedCSS","generatedMap","_root","noWorkResult$1","NoWorkResult2$1","LazyResult$1$1","Document$1$1","Root$2$1","Processor$1$1","normalized","process","use","processor$1","Declaration$1$1","PreviousMap2$1","Comment$1$1","AtRule$1$1","Input$1$1","Root$1$1","Rule$1$1","fromJSON$1$1","ownInputs","inputHydrated","fromJSON_1$1","CssSyntaxError2$1","Declaration2$1","LazyResult2$1","Container2$1","Processor2$1","stringify$5","fromJSON$2","Document22","Warning2$1","Comment2$1","AtRule2$1","Result2$1","Input2$1","parse$5","list$3","Rule2$1","Root2$1","Node2$1","postcss$3","initializer","warningPrinted","creator","env","LANG","transformer","processOpts","pluginOpts","fromJSON","atRule","Processor","Warning","Result","Input","postcss_1$1","postcss$1$1","__defProp2","__publicField2","__defNormalProp2","getDefaultExportFromCjs","getAugmentedNamespace","picocolors_browser","picocolors_browserExports","require$$2","pico","terminalHighlight$1","CssSyntaxError$3","CssSyntaxError2","cssSyntaxError","symbols","DEFAULT_RAW","Stringifier$2","Stringifier$1","stringify$4","stringify_1","isClean$2","my$2","CssSyntaxError$2","Stringifier22","stringify$3","Node$4","Node$3","Declaration$4","declaration","nonSecure","SourceMapConsumer$2","SourceMapGenerator$2","dirname$1","PreviousMap$2","previousMap","SourceMapConsumer$1","SourceMapGenerator$1","pathToFileURL$1","resolve$1","terminalHighlight","CssSyntaxError$1","PreviousMap$1","fromOffsetCache","sourceMapAvailable$1","pathAvailable$1","Input$4","Input$3","sourceMapAvailable","pathAvailable","mapGenerator","Node$2","Comment$4","parse$4","Rule$4","AtRule$4","Root$6","isClean$1","my$1","Declaration$3","Comment$3","Node$1","cleanSource","markDirtyUp","Container$7","Container2","container","LazyResult$4","Processor$3","Container$6","Document$3","document$1","Warning$2","warning","Warning$1","Result$3","SINGLE_QUOTE","DOUBLE_QUOTE","BACKSLASH","SLASH","NEWLINE","SPACE","FEED","TAB","CR","OPEN_SQUARE","CLOSE_SQUARE","OPEN_PARENTHESES","CLOSE_PARENTHESES","OPEN_CURLY","CLOSE_CURLY","SEMICOLON","ASTERISK","COLON","AT","RE_AT_END","RE_WORD_END","RE_BAD_BRACKET","RE_HEX_ESCAPE","Container$5","AtRule$3","LazyResult$3","Processor$2","Container$4","Root$5","list$2","list_1","Container$3","list$1","Rule$3","Declaration$2","tokenizer22","Comment$2","AtRule$2","Root$4","Rule$2","SAFE_COMMENT_NEIGHBOR","findLastWithPosition","Container$2","Parser22","Input$2","parse$3","parse_1","MapGenerator$1","stringify$2","Container$1","Document$2","Result$2","parse$2","Root$3","TYPE_TO_CLASS_NAME","PLUGIN_PROPS","NOT_VISITORS","CHILDREN","isPromise","getEvents","toStack","cleanMarks","postcss$2","LazyResult$2","LazyResult2","lazyResult","MapGenerator22","stringify$1","parse$1","Result$1","NoWorkResult$1","noWorkResult","NoWorkResult22","LazyResult$1","Document$1","Root$2","Processor$1","Declaration$1","PreviousMap22","Comment$1","AtRule$1","Input$1","Root$1","Rule$1","fromJSON$1","fromJSON_1","CssSyntaxError22","Declaration22","LazyResult22","Container22","Processor22","Document222","Warning22","Comment22","AtRule22","Result22","Input22","Rule22","Root22","Node22","postcss_1","postcss$1","BaseRRNode","_args","childIterator","_newChild","_refChild","_node","testableAccessors","testableMethods","untaintedBasePrototype","isAngularZonePresent","getUntaintedPrototype","untaintedAccessorCache","getUntaintedAccessor","untaintedMethodCache","getUntaintedMethod","mutationObserverCtor","on","capture","DEPARTED_MIRROR_ACCESS_WARNING","_mirror","throttle","wait","leading","remaining","trailing","hookSetter","isRevoked","patch","replacement","wrapped","defineProperties","__rrweb_original__","receiver","nowTimestamp","getWindowScroll","_d","scrollingElement","getWindowHeight","getWindowWidth","closestElementOfNode","isBlocked","isIgnored","headTitleMutations","isAncestorRemoved","legacy_isTouchEvent","changedTouches","isSerializedIframe","isSerializedStylesheet","hasShadowRoot","StyleSheetMirror","styleIDMap","newId","idStyleMap","getStyle","generateId","getShadowHost","shadowHost","DOCUMENT_FRAGMENT_NODE","shadowHostInDom","rootShadowHost","getRootShadowHost","inDom","EventType","EventType2","IncrementalSource","IncrementalSource2","MouseInteractions","MouseInteractions2","PointerTypes","PointerTypes2","CanvasContext","CanvasContext2","MediaInteractions","MediaInteractions2","NodeType","isNodeInLinkedList","DoubleLinkedList","addNode","__ln","previousSibling","tail","removeNode","moveKey","parentId","MutationBuffer","processMutation","emit","frozen","locked","adds","addedIds","addList","getNextId","ns","pushAdd","parentTag","addedSet","currentN","iframeManager","addIframe","stylesheetManager","trackLinkElement","shadowDomManager","addShadowRoot","iframe","childSn","attachIframe","observeAttachShadow","attachLinkElement","mapRemoves","movedSet","isParentRemoved","removesSubTreeCache","isAncestorInSet","droppedSet","candidate","tailNode","unhandledNode","texts","genTextAreaValueMutation","attribute","diffAsStr","styleDiff","unchangedAsStr","_unchangedStyles","removes","attributeMap","movedMap","mutationCb","textarea","cn","m","oldValue","attributeName","unattachedDoc","implementation","createHTMLDocument","old","pname","newValue","getPropertyValue","newPriority","getPropertyPriority","genAdds","nodeId","isSerialized","deepDelete","n22","processRemoves","processedNodeManager","inOtherBuffer","targetId","canvasManager","unfreeze","isFrozen","lock","unlock","addsSet","_mirror2","_isParentRemoved","_isAncestorInSet","errorHandler","callbackWrapper","rest","mutationBuffers","getEventTarget","composedPath","initMutationObserver","rootEl","mutationBuffer","processMutations","attributeOldValue","characterData","characterDataOldValue","initMouseInteractionObserver","mouseInteractionCb","sampling","mouseInteraction","disableMap","handlers","currentPointerType","eventKey","pointerType","thisEventKey","Mouse","Touch","Pen","MouseDown","MouseUp","Click","clientX","clientY","getHandler","PointerEvent","TouchStart","TouchEnd","initScrollObserver","scrollCb","scrollLeftTop","INPUT_TAGS","lastInputValueMap","getNestedCSSRulePositions","childRule","hasNestedCSSRule","parentRule","CSSGroupingRule","CSSMediaRule","CSSSupportsRule","CSSConditionRule","parentStyleSheet","recurse","getIdAndStyleId","styleMirror","initAdoptedStyleSheetObserver","host2","hostId","patchTarget","originalPropertyDescriptor","_a3","sheets","adoptStyleSheets","initObservers","o2","hooks","currentWindow","mousemoveCb","viewportResizeCb","inputCb","mediaInteractionCb","styleSheetRuleCb","styleDeclarationCb","canvasMutationCb","fontCb","selectionCb","customElementCb","mousemove","viewportResize","mediaInteaction","styleSheetRule","styleDeclaration","canvasMutation","font","selection","customElement","mergeHooks","recordDOM","mousemoveHandler","callbackThreshold","mousemoveCallback","timeBaseline","positions","wrappedCb","totalOffset","timeOffset","updatePosition","DragEvent","Drag","MouseEvent","MouseMove","TouchMove","initMoveObserver","mouseInteractionHandler","scrollHandler","viewportResizeHandler","lastH","lastW","initViewportResizeObserver","inputHandler","ignoreClass","ignoreSelector","userTriggeredOnInput","eventHandler","userTriggered","isTrusted","isChecked","cbWithDedup","text2","v2","lastInputValue","propertyDescriptor","HTMLInputElement","hookProperties","HTMLSelectElement","HTMLTextAreaElement","HTMLOptionElement","initInputObserver","mediaInteractionHandler","Play","Pause","Seeked","VolumeChange","RateChange","initMediaInteractionObserver","styleSheetObserver","adoptedStyleSheetObserver","styleDeclarationObserver","fontObserver","CSSStyleSheet","insertRule","thisArg","argumentsList","addRule","styleBlock","deleteRule","replaceSync","removeRule","supportedNestedCSSRuleTypes","canMonkeyPatchNestedCSSRule","unmodifiedFunctions","typeKey","initStyleSheetObserver","ignoreCSSAttributes","CSSStyleDeclaration","removeProperty","initStyleDeclarationObserver","collectFonts","fontMap","originalFontFace","FontFace","family","descriptors","fontFace","fontSource","Uint8Array","restoreHandler","fonts","initFontObserver","selectionObserver","collapsed","updateSelection","getSelection","isCollapsed","ranges","rangeCount","getRangeAt","startContainer","startOffset","endContainer","endOffset","initSelectionObserver","customElementObserver","initCustomElementObserver","pluginHandlers","plugin3","CrossOriginIframeMirror","generateIdFn","remoteId","idToRemoteMap","remoteToIdMap","idToRemoteIdMap","getIdToRemoteIdMap","remoteIdToIdMap","getRemoteIdToIdMap","getRemoteId","getRemoteIds","ids","iframeIdToRemoteIdMap","iframeRemoteIdToIdMap","IframeManager","wrappedEmit","recordCrossOriginIframes","crossOriginIframeStyleMirror","iframes","crossOriginIframeMap","addLoadListener","loadListener","isAttachIframe","crossOriginMessageEvent","transformedEvent","transformCrossOriginEvent","isCheckout","FullSnapshot","crossOriginIframeMirror","replaceIdOnNode","crossOriginIframeRootIdMap","patchRootIdOnNode","timestamp","IncrementalSnapshot","Mutation","Meta","Load","DomContentLoaded","Plugin","Custom","replaceIds","ViewportResize","MediaInteraction","MouseInteraction","Scroll","CanvasMutation","StyleSheetRule","StyleDeclaration","replaceStyleIds","Font","Selection","AdoptedStyleSheet","styles","iframeMirror","ShadowDomManager","WeakSet","patchAttachShadow","shadowDoms","restoreHandlers","iframeElement","manager","option","sRoot","chars","lookup","i$1","canvasVarMap","saveWebGLVar","isInstanceOfWebGLObject","list2","ctor","contextMap","variableListFor$1","serializeArg","Float32Array","Float64Array","Int32Array","Uint16Array","Int16Array","Int8Array","Uint8ClampedArray","rr_type","base64","arraybuffer","bytes","DataView","byteOffset","byteLength","HTMLImageElement","ImageData","serializeArgs","supportedWebGLConstructorNames","initCanvasContextObserver","setPreserveDrawingBufferToTrue","contextType","ctxName","getNormalizedContextName","contextAttributes","preserveDrawingBuffer","patchGLPrototype","getOwnPropertyNames","recordArgs","hookHandler","setter","encodedJs","WorkerWrapper","objURL","webkitURL","worker","Worker","revokeObjectURL","CanvasManager","latestId","invokeId","rafStamps","pendingCanvasMutations","initCanvasMutationObserver","initCanvasFPSObserver","resetObservers","fps","canvasContextReset","snapshotInProgressMap","onmessage","commands","timeBetweenSnapshots","rafId","lastSnapshotTime","takeCanvasSnapshots","matchedCanvas","getCanvas","getContextAttributes","COLOR_BUFFER_BIT","bitmap","createImageBitmap","startRAFTimestamping","startPendingCanvasMutationFlusher","canvas2DReset","props2D","CanvasRenderingContext2D","initCanvas2DMutationObserver","canvasWebGL1and2Reset","WebGLRenderingContext","WebGL","WebGL2RenderingContext","WebGL2","initCanvasWebGLMutationObserver","flushPendingCanvasMutations","setLatestRAFTimestamp","_values","flushPendingCanvasMutationFor","valuesWithType","type2","StylesheetManager","adoptedStyleSheetCb","linkEl","trackedLinkElements","trackStylesheetInLinkElement","adoptedStyleSheetData","styleIds","CSSRule","r2","_linkEl","ProcessedNodeManager","thisBuffer","buffers","nodeMap","active","takeFullSnapshot$1","recording","cleanFrame","debug","record","checkoutEveryNms","checkoutEveryNth","maskAllInputs","_maskInputOptions","_slimDOMOptions","packFn","mousemoveWait","recordAfter","errorHandler2","inEmittingFrame","passEmitsToParent","month","search","tel","week","select","password","lastFullSnapshotEvent","NodeList","DOMTokenList","polyfill$1","incrementalSnapshotCount","eventProcessor","exceedCount","exceedTime","wrappedMutationEmit","wrappedScrollEmit","wrappedCanvasMutationEmit","getMirror","nodeMirror","slimDOM","snapshot","initialOffset","CustomElement","t2","addCustomEvent","tag","freezePage","takeFullSnapshot","NotStarted","Running","Stopped","customOptions","stopFunction","ContextMenu","DblClick","Focus","Blur","rrwebEvent","stringifiedData","dataURIRegex","matchAll","ensureMaxMessageSize","bufferSize","ScreenDrawer","svgElement","minHeight","mouseDown","colorpicker","fadeOutToolbar","tool","mouseDownPen","mouseDownRect","mouseMove","mouseMovePen","mouseMoveRect","mouseUp","fadeInToolbar","mouseUpPen","mouseUpRect","appendToBuffer","getMousePosition","updateSvgPath","w","abs","startPoint","setAttributeNS","createElementNS","strokeWidthRect","appendPathToSvg","strokeWidth","pt","strPath","touches","totalX","totalY","getAveragePoint","tmpPath","pathBuffer","fadeTarget","GleapScrollStopper","supportsPassive","wheelOpt","scrollDisabled","wheelEvent","preventDefaultForScrollKeys","keyCode","showWidgetUI","formKey","dirty","dialogUI","enableScroll","screenRecorder","unregisterListeners","cleanupMousePointer","screenDrawer","dialog","captureSVG","videoPreviewContainer","dismissUI","colorPicker","borderLayer","captureEditor","dragCursor","setMouseMove","mouseMoveEventHandler","touchMoveEventHandler","dragHandle","dragStart","drag","dragEnd","bugReportingEditor","translateText","pageLeaveListener","isEscape","isEnter","dismiss","showNextStep","returnValue","registerListeners","hideWidgetUI","createEditorUI","setupMousePointer","disableScroll","setupScreenRecording","captureScreenDrawerRerender","setupColorPicker","setupToolbar","selectedColor","colorItems","colorItem","hexColor","onclick","setColor","setPenColor","currentX","currentY","initialX","initialY","toolbar","isDragging","xOffset","yOffset","_getTransformValues","matrix","DOMMatrix","m41","m42","getTransformValues","nextButton","chooseTool","toolbarItem","toolbarTools","setTool","svgClone","toolbarItems","_loop2","toggleAudio","startScreenRecording","removeLastAddedPathFromSvg","itemInactiveClass","screenRecordingTooltip","audioRecordingTooltip","recordingClass","notRecordingClass","clearPreview","captureRenderer","penTips","fill","staticTranslation","staticTranslations","vars","template","localizationOptions","htmlLang","GleapShortcutListener","shortCutListener","char","keyIdentifier","ctrlKey","startFeedbackFlowWithOptions","autostartDrawing","GleapPreFillManager","unreadCount","notificationContainer","notificationsFromCache","unreadNotificationsKey","nots","notification","createdAt","notifications","renderNotifications","updateTabBarNotificationCount","sound","clearElem","currentNewsIndex","newsNotifications","news","otherNotifications","currentIndex","currentNews","newsElem","newsContainerElem","coverImageUrl","newsImageElem","stopPropagation","openNews","newsContentElem","newsTitleElem","getName","descHTML","renderDescription","descElem","paginationElem","pageIndicator","nextBtn","conversation","openConversation","checklist","openChecklist","progress","currentStep","totalSteps","nextStepTitle","sender","profileImageUrl","openNewsArticle","_notification$data","previewText","uiOnly","classLeft","classNoButton","_this$bannerUrl","_this$bannerData","_data$data2","_data$data3","_data$data4","_data$data5","_data$data6","_data$data7","_data$data8","_data$data9","_data$data10","bannerData","format","startBot","botId","startFeedbackFlow","formId","showSurvey","surveyFormat","articleId","openHelpCenterArticle","startChecklist","checklistId","bannerContainer","gleapBFrame","injectBannerUI","_listenForMessages","modalUrl","_this$modalUrl","_data$data11","modalData","primaryColor","_postMessage","modalContainer","wrapper","modalBackdropClickListener","_this2$modalData$show","_this2$modalData","showCloseButton","frame","_injectModalUI","play","settings","Audio","playPromise","getID","getClassSelectors","getClasses","cl","kCombinations","items","getNthChild","sibling","counter","getTag","isUnique","elems","getAllSelectors","attributesToIgnore","funcs","sum","getAttributes","res","testUniqueness","getFirstUnique","getUniqueCombination","combinations","getCombinations","firstUnique","combination","getUniqueSelector","selectorTypes","excludeRegex","foundSelector","elementSelectors","ID","Class","selectorType","Tag","Classes","Attributes","NthChild","unique","_step2","_options$selectorType","_options$attributesTo","_options$excludeRegex","allSelectors","parents","currentElement","getParents","_iterator2","_i","_allSelectors","ElementOverlay","overlay","background","borderColor","borderStyle","borderWidth","boxSizing","cursor","zIndex","margin","shadowContainer","attachShadow","_createClass","useShadowDOM","usingShadowDOM","setBounds","bounds","ElementPicker","overlayOptions","handleMouseMove","handleClick","tick","addToDOM","removeFromDOM","mouseX","mouseY","tickReq","stopImmediatePropagation","onClick","updateTarget","ignoreCursor","newTarget","elementFromPoint","captureCursor","elementFilter","onHover","GleapAdminHelper","picker","stopPicker","onElementPicked","startPicker","GleapAdminManager","COLLAPSE_UI_ACTIVE_CLASS","FRAME_CONTAINER_ACTIVE_CLASS","isActive","activeClass","gleapCollapseUI","toggle","injectedCollapseUI","toggleCollapseUI","_this$configData","configData","sendMessageToTourBuilder","GleapProductTours","disable","adminHelper","injectCollapseUI","setFrameHeight","gleapAdminDisabled","initAdminHelper","currentPage","click","opener","GleapTours","currentConfig","configure","animate","allowClose","overlayOpacity","smoothScroll","disableActiveInteraction","showProgress","stagePadding","stageRadius","popoverOffset","showButtons","disableButtons","overlayColor","getConfig","easeInOutQuad","elapsed","initialValue","amountOfChange","getFocusableElements","parentEls","focusableQuery","flatMap","parentEl","isParentFocusable","focusableEls","isElementVisible","bringInView","isElementInView","shouldSmoothScroll","scrollIntoView","behavior","hasScrollableParent","currentState","setState","getState","resetState","registeredListeners","listen","hook","trackActiveElement","activeStagePosition","renderOverlay","mountOverlay","stagePosition","overlaySvg","stage","windowX","windowY","svg","fillRule","clipRule","strokeLinejoin","strokeMiterlimit","stagePath","generateStageSvgPathString","createOverlaySvg","onDriverClick","pathElement","stageWidth","stageHeight","limitedRadius","normalizedRadius","highlightBoxX","highlightBoxY","highlightBoxWidth","highlightBoxHeight","highlight","attemptTime","elemObj","refactoredElement","hidePopover","existingDummy","getElementById","mountDummyElement","toElement","toStep","_toStep$disableActive","fromStep","fromElement","isFirstHighlight","isToDummyElement","isFromDummyElement","isAnimatedTour","highlightStartedHook","onHighlightStarted","highlightedHook","onHighlighted","deselectedHook","onDeselected","hasDelayedPopover","isPopoverRendered","isHalfwayThrough","popover","renderPopover","fromDefinition","toDefinition","transitionStage","transferHighlight","refreshActiveHighlight","activeHighlight","activeStep","refreshOverlay","repositionPopover","requireRefresh","resizeTimeout","trapFocus","activeElement","popoverEl","firstFocusableEl","lastFocusableEl","shiftKey","previousFocusableEl","nextFocusableEl","onKeyup","shouldPreventDefault","listenerWrapper","listener2","useCapture","title","description","closeButton","footer","footerButtons","previousButton","createPopover","_ref2$nextBtnText","nextBtnText","_ref2$prevBtnText","prevBtnText","_ref2$progressText","progressText","showButtonsConfig","showProgressConfig","showFooter","disabledButtonsConfig","popoverWrapper","customPopoverClass","popoverClass","_b2","onNextClick","onPrevClick","onCloseClick","onPopoverRender","focusableElement","getPopoverDimensions","boundingClientRect","realWidth","realHeight","calculateTopForLeftRight","elementDimensions","popoverDimensions","popoverPadding","popoverArrowDimensions","calculateLeftForTopBottom","_ref3$align","align","_ref3$side","requiredAlignment","requiredSide","topValue","isTopOptimal","bottomValue","isBottomOptimal","leftValue","isLeftOptimal","rightValue","isRightOptimal","noneOptimal","popoverRenderedSide","leftToSet","topToSet","leftValue2","rightToSet","bottomToSet","popoverArrow","popoverWidth","windowWidth","elementWidth","elementLeft","popoverHeight","windowHeight","elementTop","elementHeight","arrowSide","arrowAlignment","renderPopoverArrow","moveNext","activeIndex","steps","nextStepIndex","drive","movePrevious","previousStepIndex","handleArrowLeft","handleArrowRight","_f","_g","_h","stepIndex","hasNextStep","hasPreviousStep","doneBtnText","allowsClosing","progressTextReplaced","configuredButtons","calculatedButtons","withOnDestroyStartedHook","activeOnDestroyed","onDestroyStarted","onDestroyed","destroyPopover","destroyHighlight","isActiveDummyElement","setConfig","setSteps","getActiveIndex","isFirstStep","isLastStep","getActiveStep","getActiveElement","getPreviousElement","getPreviousStep","moveTo","localStorageKey","pointerContainerId","copilotJoinedContainerId","_canPlayAudio","GleapCopilotTours","_scrollListeners","_currentAnchor","_currentStep","_scrollDebounceTimer","productTourId","currentActiveIndex","productTourData","updatePointerPosition","onCompleteCallback","scrollableAncestors","getScrollableAncestors","_pointerContainer","yPosition","targetScrollPosition","scrollTo","smoothScrollToY","removeScrollListeners","pollCount","updateFinalPosition","isElementFullyVisible","targetX","targetY","containerWidthSpace","attachScrollListeners","currentAudio","pause","copilotInfoContainer","_GleapConfigManager$g","_GleapConfigManager$g2","_this$productTourData3","_this$productTourData4","_this$productTourData5","_this$productTourData6","_this$productTourData","_this$productTourData2","contrastColor","playVoice","gradient","svgMouse","infoBubble","kaiAvatar","kaiSlug","completeTour","canPlayAudio","supported","setupCopilotTour","showUnmuteModal","showAudioUnmuteModal","renderNextStep","_this$productTourData7","_this$productTourData8","_this$productTourData9","modalOverlay","modal","unmuteModalTitle","unmuteButton","unmuteModalButton","startAnywayButton","unmuteModalContinue","_this7","handleStep","gotToNextStep","_currentStep$inputTyp","proceedClickmode","storeUncompletedTour","inputType","handleInputEvent","_e$target","once","_currentStep$inputVal","inputValue","typeCharacter","wave","performClickAnimation","tempDiv","htmlToPlainText","readTime","wordCount","ceil","estimateReadTime","continueWithNoAudio","voice","elementPromise","maxAttempts","attempts","interval","waitForElement","_self$productTourData","tourType","gleapTourObj","delay","manually","validateProductTour","onComplete","comData","clearUncompletedTour","startWithConfig","unmuted","driverSteps","isClickMode","isInputMode","hasSender","videoUrl","senderHTML","firstName","driverStep","buttons","backButton","allowKeyboardControl","nextText","doneText","prevText","_config$state","onDocumentClick","popoverElement","mediaElements","performRequentialRefresh","mediaElement","playingClass","playPauseContainer","videoElement","videoContainer","clickVideo","evnt","gleapTourPopover","_evnt$target","__originalGetContext","GleapChecklist","_HTMLElement","_assertThisInitialized","_callSuper","handleChecklistUpdate","handleSessionUpdate","_networkManager","_boundFloatingLauncherClick","handleFloatingLauncherClick","_boundFloatingCloseClick","handleFloatingCloseClick","_floatingHideTimeout","_inherits","_boundHandleChecklistUpdate","_boundHandleSessionUpdate","_boundResizeHandler","handleResize","_checkSessionAndLoad","removeFloatingClickListeners","checklistData","_hasLoaded","_isSessionReady","_initialActiveSet","renderResponse","updateActiveTaskMaxHeight","loadChecklist","renderChecklist","_getGleapSessionInstance","hasChecklistId","defaultValue","translateTextWithVars","validateChecklist","_isMock","isConnected","fetchChecklist","_isInitialLoad","_this3$checklistData$","_data$outbound","completedSteps","firstIncompleteIndex","findIndex","_session$gleapId","_session$gleapHash","checkedStep","makeRequest","updateData","_this$checklistData$o3","previousCompletedSteps","dataChanged","activeStepCompleted","currentlyActiveStepIndex","_this$checklistData$o","activeStepId","_this$checklistData$o2","nextActiveStep","setActiveStep","tasks","launcher","_outbound$config","_this$checklistData","renderDoneState","progressbarEnabled","doneSteps","_outbound$config2","_outbound$config3","nextIncompleteStep","titleText","_translateWithVars","subject","subtitleText","successTitle","successMessage","circumference","PI","computedOffset","isHeader","toFixed","_outbound$sender","infoEnabled","_translate","senderHtml","progressLabel","durationLabel","isTaskDone","badge","getCheckIcon","stepTitle","stepDescription","actionButtonText","actionTitle","actionHtml","markDoneLabel","markDoneHtml","allowMarkDone","taskClasses","_outbound$config4","_outbound$config5","_outbound$config6","floatingEnabled","renderFloatingLauncher","renderInfoSection","renderProgressSection","renderTasks","addTaskEventListeners","addFloatingClickListeners","toggleTask","taskBodyInner","task","newActiveStep","markDoneBtn","_this5$checklistData","previouslyActiveStep","_this5$checklistData$","stepId","allSteps","isModalOpen","tasksModal","_this5$checklistData$2","updateChecklist","actionBtn","_this5$checklistData2","actionBody","openURL","actionOpenInNewTab","gleapError","previousActiveStep","tasksToToggle","forceOpen","taskElement","isOpen","shouldOpen","taskBody","_wrapNativeSuper","registerGleapChecklist","offlineMode","hostname","injectNotificationUI","actions","_action$data","popupType","disableInAppNotifications","showNotification","showBanner","showModal","startProductTourWithConfig","globalData","replayData","getReplayData","setTags","setUrlHandler","tools","setAiTools","updateContainerHeight","initialHeight","fixGleapHeight","checkForUncompletedTour","checkForUrlParams","urlParams","URLSearchParams","widget","conversationFlow","startConversation","feedbackFlow","surveyFlow","surveyFlowFormat","tourDelay","identifySession","updateSession","setMaxRequests","setOptions","cleanedData","formPreFill","toggleFeedbackButton","setAppVersionCode","setAppBuildNumber","setBannerUrl","setModalUrl","setTicketAttribute","unsetTicketAttribute","clearTicketAttributes","attachCustomData","setCustomData","removeCustomData","clearCustomData","playSound","showNotificationBadge","notificationInstance","setOverrideLanguage","softReInitialize","updateContact","registerCustomAction","buttonStyle","contrastButtonColor","contrastBackgroundColor","contrastHeaderColor","isDarkMode","headerDarkColor","subTextColor","backgroundColorHover","hoverHoverColor","buttonBorderRadius","containerRadius","chatRadius","formItemBorderRadius","formItemSmallBorderRadius","bottomInfoOffset","colorStyleSheet","zIndexBase","injectStyledCSS","replays","attachments","sendSilentCrashReportWithFormData","silentCrashReportSent","excludeDataCleaned","newFormData","hideBackButton","showBackButton","flow","collectionId","term","networkManager","checkStartUrl","startProductTourConfig","startURL","loadUncompletedTour","GleapActions","GLAction","urlParts","identifier","openHelpCenterCollection"],"sourceRoot":""} \ No newline at end of file diff --git a/src/GleapScreenRecorder.js b/src/GleapScreenRecorder.js index eb49be43..f04a328c 100644 --- a/src/GleapScreenRecorder.js +++ b/src/GleapScreenRecorder.js @@ -1,6 +1,33 @@ import GleapSession from "./GleapSession"; export class GleapScreenRecorder { + // Constants + static MAX_RECORD_TIME = 120; // 2 minutes + static MAX_WIDTH = 3072; + static MAX_HEIGHT = 1728; + static IDEAL_FRAME_RATE = 10; + static MAX_FRAME_RATE = 24; + static CHUNK_INTERVAL = 200; // milliseconds + static TIMER_UPDATE_INTERVAL = 1000; // milliseconds + static RERENDER_DELAY = 100; // milliseconds + + // MIME types in order of preference + static MIME_TYPES = [ + "video/webm;codecs=vp9,opus", + "video/webm;codecs=vp8,opus", + "video/webm;codecs=vp9", + "video/webm;codecs=vp8", + "video/webm", + "video/mp4", + ]; + + // CSS selectors + static SELECTORS = { + PREVIEW_VIDEO: ".bb-capture-preview video", + TIMER_LABEL: ".bb-capture-toolbar-item-timer", + }; + + // Instance properties rerender; stream; mediaRecorder; @@ -9,11 +36,16 @@ export class GleapScreenRecorder { available = true; isRecording = false; file = null; - maxRecordTime = 120; + maxRecordTime = GleapScreenRecorder.MAX_RECORD_TIME; recordTime = 0; recordingTimer = null; permissionErrorText = ""; + // Internals for composed capture + _displayVideoTrack = null; + _displayStream = null; + _micStream = null; + constructor(rerender, permissionErrorText) { this.rerender = rerender; this.permissionErrorText = permissionErrorText; @@ -23,29 +55,17 @@ export class GleapScreenRecorder { setTimeout(() => { this.rerender(); - }, 100); + }, GleapScreenRecorder.RERENDER_DELAY); } getSupportedMimeType() { - // List of MIME types in order of preference - const types = [ - "video/webm", - "audio/webm", - "video/webm;codecs=vp8", - "video/webm;codecs=daala", - "video/webm;codecs=h264", - "audio/webm;codecs=opus", - "video/mp4", - ]; - - // Iterate through the list and return the first supported type - for (const type of types) { - if (MediaRecorder.isTypeSupported(type)) { + // Prefer explicit audio+video codecs to ensure audio gets muxed. + for (const type of GleapScreenRecorder.MIME_TYPES) { + if (window.MediaRecorder && MediaRecorder.isTypeSupported(type)) { return type; } } - // If no types are supported, return a default or handle as needed return "video/webm"; } @@ -53,8 +73,31 @@ export class GleapScreenRecorder { return (s - (s %= 60)) / 60 + (9 < s ? ":" : ":0") + s; } - startScreenRecording = function () { - const self = this; + stopStreamTracks(stream) { + if (!stream) return; + try { + stream.getTracks().forEach((track) => track.stop()); + } catch (_) {} + } + + createMediaStream(tracks) { + const validTracks = tracks.filter((track) => track !== null); + return new MediaStream(validTracks); + } + + getFirstVideoTrack(stream) { + if (!stream) return null; + const videoTracks = stream.getVideoTracks(); + return videoTracks.length > 0 ? videoTracks[0] : null; + } + + getFirstAudioTrack(stream) { + if (!stream) return null; + const audioTracks = stream.getAudioTracks(); + return audioTracks.length > 0 ? audioTracks[0] : null; + } + + async startScreenRecording() { if ( !navigator.mediaDevices || !navigator.mediaDevices.getDisplayMedia || @@ -65,39 +108,50 @@ export class GleapScreenRecorder { return; } - const max_width = 3072; - const max_height = 1728; - - navigator.mediaDevices - .getDisplayMedia({ + try { + const displayStream = await navigator.mediaDevices.getDisplayMedia({ video: { - width: { ideal: Math.min(window.screen.width, max_width) }, - height: { ideal: Math.min(window.screen.height, max_height) }, - frameRate: { ideal: 10, max: 24 }, + width: { + ideal: Math.min(window.screen.width, GleapScreenRecorder.MAX_WIDTH), + }, + height: { + ideal: Math.min( + window.screen.height, + GleapScreenRecorder.MAX_HEIGHT + ), + }, + frameRate: { + ideal: GleapScreenRecorder.IDEAL_FRAME_RATE, + max: GleapScreenRecorder.MAX_FRAME_RATE, + }, displaySurface: "monitor", }, + audio: false, selfBrowserSurface: "include", - audio: true, - }) - .then(function (displayStream) { - self.stream = displayStream; + }); - if (!self.audioMuted) { - self.startAudioRecording(); - } else { - self.audioAvailable = false; - self.handleRecord({ stream: displayStream }); - } + // Keep references to both the original stream and video track + this._displayStream = displayStream; + this._displayVideoTrack = this.getFirstVideoTrack(displayStream); - self.rerender(); - }) - .catch(function (err) { - window.alert(self.permissionErrorText); - self.rerender(); - }); - }; + // If user wants audio and permissions allow it, get mic, else continue with video-only + if (!this.audioMuted) { + await this.startAudioRecording(); + } else { + this.audioAvailable = false; + const composed = this.createMediaStream([this._displayVideoTrack]); + this.stream = composed; + this.handleRecord({ stream: composed }); + } - stopScreenRecording = function () { + this.rerender(); + } catch (error) { + window.alert(this.permissionErrorText); + this.rerender(); + } + } + + stopScreenRecording() { if (!this.mediaRecorder || !this.stream || !this.isRecording) { return; } @@ -106,43 +160,74 @@ export class GleapScreenRecorder { clearInterval(this.recordingTimer); this.recordingTimer = null; } - this.mediaRecorder.stop(); - this.stream.getTracks().forEach((track) => { - track.stop(); - }); - this.rerender(); - }; + try { + this.mediaRecorder.stop(); + } catch (_) {} - startAudioRecording = function () { - const self = this; + // Stop composed stream tracks + this.stopStreamTracks(this.stream); - if (!this.stream) { + // Stop original display stream tracks (this is what Chrome uses for the recording indicator) + if (this._displayStream) { + this.stopStreamTracks(this._displayStream); + this._displayStream = null; + } + + // Also stop original mic stream tracks if present + if (this._micStream) { + this.stopStreamTracks(this._micStream); + this._micStream = null; + } + + this._displayVideoTrack = null; + + this.rerender(); + } + + async startAudioRecording() { + if (!this._displayVideoTrack) { return; } - navigator.mediaDevices - .getUserMedia({ - audio: true, + try { + const voiceStream = await navigator.mediaDevices.getUserMedia({ + audio: { + echoCancellation: true, + noiseSuppression: true, + autoGainControl: true, + }, video: false, - }) - .then(function (voiceStream) { - for (let i = 0; i < voiceStream.getAudioTracks().length; i++) { - self.stream.addTrack(voiceStream.getAudioTracks()[i]); - } - self.audioMuted = false; - self.audioAvailable = true; - self.handleRecord({ stream: self.stream }); - self.rerender(); - }) - .catch(function (audioErr) { - self.audioAvailable = false; - self.handleRecord({ stream: self.stream }); - self.rerender(); }); - }; - toggleAudio = function () { + this._micStream = voiceStream; + const micTrack = this.getFirstAudioTrack(voiceStream); + + this.audioMuted = false; + this.audioAvailable = !!micTrack; + + // Compose a NEW stream with exactly one video track + (optional) one mic track + const composed = this.createMediaStream([ + this._displayVideoTrack, + micTrack, + ]); + + this.stream = composed; + this.handleRecord({ stream: composed }); + this.rerender(); + } catch (error) { + this.audioAvailable = false; + + // Fallback to video-only if mic fails + const composed = this.createMediaStream([this._displayVideoTrack]); + + this.stream = composed; + this.handleRecord({ stream: composed }); + this.rerender(); + } + } + + toggleAudio() { this.audioMuted = !this.audioMuted; this.rerender(); @@ -151,108 +236,127 @@ export class GleapScreenRecorder { } const audioTracks = this.stream.getAudioTracks(); - for (var i = 0; i < audioTracks.length; i++) { + for (let i = 0; i < audioTracks.length; i++) { const audioTrack = audioTracks[i]; audioTrack.enabled = !this.audioMuted; } - }; + } - static uploadScreenRecording = function (screenRecordingData) { - return new Promise(function (resolve, reject) { - if (screenRecordingData == null) { - resolve(null); - } + static async uploadScreenRecording(screenRecordingData) { + if (screenRecordingData == null) { + return null; + } - var xhr = new XMLHttpRequest(); + return new Promise((resolve, reject) => { + const xhr = new XMLHttpRequest(); xhr.open("POST", GleapSession.getInstance().apiUrl + "/uploads/sdk"); GleapSession.getInstance().injectSession(xhr); - var formdata = new FormData(); - formdata.append("file", screenRecordingData); + const formData = new FormData(); + formData.append("file", screenRecordingData); xhr.onerror = function () { - reject(); + reject(new Error("Network error during file upload")); }; xhr.onreadystatechange = function () { if (xhr.readyState == 4) { if (xhr.status == 200) { resolve(JSON.parse(xhr.response).fileUrl); } else { - reject(); + reject(new Error(`Upload failed with status ${xhr.status}`)); } } }; - xhr.send(formdata); + xhr.send(formData); }); - }; + } - clearPreview = function () { - document.querySelector(".bb-capture-preview video").src = null; + clearPreview() { + const videoEl = document.querySelector( + GleapScreenRecorder.SELECTORS.PREVIEW_VIDEO + ); + if (videoEl) { + videoEl.src = null; + } this.file = null; this.rerender(); - }; + } - handleRecord = function ({ stream }) { + handleRecord({ stream }) { const self = this; - var recordedChunks = []; + const recordedChunks = []; this.mediaRecorder = new MediaRecorder(stream, { mimeType: this.getSupportedMimeType(), }); this.isRecording = true; this.recordTime = 0; - // Set timer. - const timerLabel = document.querySelector(".bb-capture-toolbar-item-timer"); + // Set timer (guard if label isn't present) + const timerLabel = document.querySelector( + GleapScreenRecorder.SELECTORS.TIMER_LABEL + ); + if (this.recordingTimer) { + clearInterval(this.recordingTimer); + this.recordingTimer = null; + } this.recordingTimer = setInterval(() => { self.recordTime++; - var remainingTime = self.maxRecordTime - self.recordTime; - if (remainingTime > 0) { - timerLabel.innerHTML = self.formatTime(remainingTime); - } else { - timerLabel.innerHTML = "2:00"; + const remainingTime = self.maxRecordTime - self.recordTime; + if (timerLabel) { + if (remainingTime > 0) { + timerLabel.innerHTML = self.formatTime(remainingTime); + } else { + timerLabel.innerHTML = "2:00"; + self.stopScreenRecording(); + } + } else if (remainingTime <= 0) { self.stopScreenRecording(); } - }, 1000); + }, GleapScreenRecorder.TIMER_UPDATE_INTERVAL); this.mediaRecorder.ondataavailable = function (e) { - if (e.data.size > 0) { + if (e.data && e.data.size > 0) { recordedChunks.push(e.data); } }; - stream.getVideoTracks()[0].onended = function () { - self.prepareRecording(recordedChunks); - }; + const videoTrack = this.getFirstVideoTrack(stream); + if (videoTrack) { + videoTrack.onended = function () { + self.prepareRecording(recordedChunks); + }; + } this.mediaRecorder.onstop = function () { self.prepareRecording(recordedChunks); }; - this.mediaRecorder.start(200); // here 200ms is interval of chunk collection + // Start recording with configured chunk interval + this.mediaRecorder.start(GleapScreenRecorder.CHUNK_INTERVAL); self.rerender(); - }; - - prepareRecording = function (recordedChunks) { - const completeBlob = new Blob(recordedChunks, { - type: this.getSupportedMimeType(), - }); + } + prepareRecording(recordedChunks) { const mimeType = this.getSupportedMimeType(); + const completeBlob = new Blob(recordedChunks, { type: mimeType }); + const extension = mimeType.includes("mp4") ? "mp4" : "webm"; this.file = new File([completeBlob], `screen-recording.${extension}`, { type: mimeType, }); const previewVideoElement = document.querySelector( - ".bb-capture-preview video" + GleapScreenRecorder.SELECTORS.PREVIEW_VIDEO ); if (previewVideoElement) { previewVideoElement.src = URL.createObjectURL(completeBlob); - this.audioAvailable = true; + this.audioAvailable = this.stream + ? this.stream.getAudioTracks().length > 0 + : this.audioAvailable; this.isRecording = false; this.rerender(); } - }; + } }